From 48a27e57a05a13414036c8f876289f1363b2d6cc Mon Sep 17 00:00:00 2001 From: JackDandy Date: Thu, 11 Aug 2016 01:00:36 +0100 Subject: [PATCH] Add detection of password protected rars with config/Post Processing/'Unpack downloads' enabled. Change post process to cleanup filenames with config/Post Processing/'Unpack downloads' enabled. Change post process to join incrementally named (i.e. file.001 to file.nnn) split files. Change replace unrar2 lib with rarfile 3.0 and UnRAR.exe 5.40 beta 4 freeware. Change post process "Copy" to delete redundant files after use. --- .travis.yml | 1 - CHANGES.md | 5 + HACKS.txt | 1 - lib/rarfile/UnRAR.exe | Bin 0 -> 371600 bytes lib/rarfile/__init__.py | 1 + lib/rarfile/rarfile.py | 2932 +++++++++++++++++++++++++++ lib/{unrar2 => rarfile}/test.rar | Bin lib/unrar2/UnRARDLL/license.txt | 18 - lib/unrar2/UnRARDLL/unrar.dll | Bin 165376 -> 0 bytes lib/unrar2/UnRARDLL/unrar.lib | Bin 4114 -> 0 bytes lib/unrar2/UnRARDLL/x64/unrar64.dll | Bin 191488 -> 0 bytes lib/unrar2/UnRARDLL/x64/unrar64.lib | Bin 3972 -> 0 bytes lib/unrar2/__init__.py | 180 -- lib/unrar2/license.txt | 21 - lib/unrar2/rar_exceptions.py | 30 - lib/unrar2/unix.py | 265 --- lib/unrar2/windows.py | 332 --- sickbeard/helpers.py | 30 +- sickbeard/postProcessor.py | 11 +- sickbeard/processTV.py | 317 ++- sickbeard/providers/generic.py | 2 +- sickbeard/tv.py | 6 +- sickbeard/webserve.py | 21 +- 23 files changed, 3229 insertions(+), 944 deletions(-) create mode 100644 lib/rarfile/UnRAR.exe create mode 100644 lib/rarfile/__init__.py create mode 100644 lib/rarfile/rarfile.py rename lib/{unrar2 => rarfile}/test.rar (100%) delete mode 100644 lib/unrar2/UnRARDLL/license.txt delete mode 100644 lib/unrar2/UnRARDLL/unrar.dll delete mode 100644 lib/unrar2/UnRARDLL/unrar.lib delete mode 100644 lib/unrar2/UnRARDLL/x64/unrar64.dll delete mode 100644 lib/unrar2/UnRARDLL/x64/unrar64.lib delete mode 100644 lib/unrar2/__init__.py delete mode 100644 lib/unrar2/license.txt delete mode 100644 lib/unrar2/rar_exceptions.py delete mode 100644 lib/unrar2/unix.py delete mode 100644 lib/unrar2/windows.py diff --git a/.travis.yml b/.travis.yml index 5bbbbf00..895c9294 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,6 @@ language: python sudo: false python: - - 2.6 - 2.7 install: diff --git a/CHANGES.md b/CHANGES.md index 534926bc..96015f6e 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -114,6 +114,11 @@ * Change set Specials to status "Skipped" not "Wanted" during show updates * Change improve debug log message for CloudFlare response that indicate website is offline * Add handling for 'part' numbered new releases and also for specific existing 'part' numbered releases +* Add detection of password protected rars with config/Post Processing/'Unpack downloads' enabled +* Change post process to cleanup filenames with config/Post Processing/'Unpack downloads' enabled +* Change post process to join incrementally named (i.e. file.001 to file.nnn) split files +* Change replace unrar2 lib with rarfile 3.0 and UnRAR.exe 5.40 beta 4 freeware +* Change post process "Copy" to delete redundant files after use [develop changelog] * Change send nzb data to NZBGet for Anizb instead of url diff --git a/HACKS.txt b/HACKS.txt index c92cf8d9..301a246e 100644 --- a/HACKS.txt +++ b/HACKS.txt @@ -9,4 +9,3 @@ Libs with customisations... /lib/requests/packages/urllib3/util/ssl_.py /lib/tornado /lib/tvdb/tvdb_api.py -/lib/unrar2/unix.py diff --git a/lib/rarfile/UnRAR.exe b/lib/rarfile/UnRAR.exe new file mode 100644 index 0000000000000000000000000000000000000000..22c61fd13ec59102b00fa1aefaecadb53f51f549 GIT binary patch literal 371600 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�Vu*8GO3{+o#l6Vt1 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
  • 69sUpGh*S<*8Vp|>K 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

    J7B2@{FGn6e?WjWQn7ZH& z7d)WtCX?jWK}~gAkciX%9AM=n-Qs`|NJmF+;kO_Y1gBjS$g^!LCtt#Or-5q%m)8aF zF&hHoWz=eIQtj|YNduJo^JtJfiGR%>vV=Xc(2jTW@YTr?&Hct=+28c@KKY72(%OIW zlGJt|OLxUUGC!$=R}~e~YvB;bpjT~c`2e}ht5JNQMtcw4Luj548z-QO81@Ha<5ojc z`T1JJste5+3=YKn>A&TokKY6x`1&R+&D3Zw;+QK(MUdR&G#raTWFhp?14kH^8Npt& zWFz@g0oC^-YIHXW!ATni7>o-aTmg`$IDNxy0vCyASzECmR}o!b1;-3Cb}&Q!wsWf0 zFvBIk1}8>`s6~gLiwt?1%MSN^exQfa?c+G4{b>rexp=R)W;r$(Tf7h?KNt0v%8Dmp zKcIORQ3dKw;>L3Squw{A6w_1gkQua-;MmFA8qjZs&k(OR;ESlG$_FntdKnTPumlUY zc%z(F*xjCw?Je8ZjZ6^pS}N)5fl#Vn4o`OS7FQZveIw{Dby=Ers&sBrQCnPAgjV~s zQ8Fo6w&bK*T-Z zc@fK}FEBt)whObCn~gMK^C|F56m9AxX9+?t8OpHu))C#+EGs5&0i=AS1L8>Fr;?1( zUz>KQx|hkDC$=+}n&v^ia9?>B1_!&T-G?#R2t{$*)}W47(`g_UM=M}{N+PuMra^Tx z4^~Dj`Fj>XyrT-e7`Nrfbi{)w_r1yE?u9$BxPCjxS^EgI_;?#U&}VND*KY^?*B?TF zFZOEvyLiX0XW-)mkG-mrfqjHg58%5il?fU9#tZqW0^^=(x+fQ#yMiZdV$eN+L)ln* z!=4rfMTfyZ6?0D?F3iAC5rfJ^puYYbGOU-xyYCQB9_lyE-}EXhi0L=X&p`lgg|o9O zjn#pB0PL>ME5hVBQWYEbBI*G3`J))69K>5w=dEGujbZb}#d${0s|_D7knqFkAM4-T zf36GOD7h6V23YNCl`W!Oo5>E3%Or7fXs_}#)`ag)sS`$AEy!{2Q}@B1vx^~yO=WxG z_Ef&mTyv_mInbVf(3|K5MoHS$+A>VZhjz8GR!Ma&Gb&}1^f5$l@&rWiWGQeq7ei8Y z4K_c)2%bkTHei%pA_hMGHSPrin?Mh$#Ti*{dd`ouTPDN|F+*gJrTHzqV;S87m!*y1y#L zXnrT)bF+7gz4=jq0w}jRD#0U>{VAq?1#S6i=+6AzfL@y2Ar1gGzZ1|)O_9i6?Dr@* ztAs-pWK|ON=m3->f44Z8-9@X5GA77T~B#!~WHIcgUJ&X5)h2{0>#} zOr&uz#iS`XTuy=-e<^R`t1>?dd?Rx z`~j`wD+|zjEXZC}S=JuyM_d=8-UqT-;`~kp4bZ}2SaW_&jRCzRe|L75I7sN-dfo?^ z_Y&l-nX?~A=08knIf@J4+`La7q2l9`C z+GG;P&;uu{N?`|Vvgw%c7C=+IA0S^!25EH2G_tazNJ9hF$TWJ9MuFZay}~l5Nij{Ce@^NElo$Dmh5@5LG+! zy8wfpMIMxim=$<@cyfE%1#i#JBnnU;((+?{$L>Tv?87?WVacFRfZs|yg))~s9Rs9a z9U>19I>#ZVRQ;WBRY-^eluJ@u2l-1Js6g*8#FMJME0G6oXp=Po3JwlIOa=rw3-c(I zbRCD6WCm~AX^%z!j^le#lrd*h)xuTS;IK)s*aK(MR=1e(WbA>4< zy2O{-+&R?dYz0;G$#5xbxxQR;*HD|2N|s2PXZchvIbT_Gj)vrsq+VEd#4pRI^2m+X zV_3~|^_nw}Oj+|nxQ6-&N6e%)P@S+eG&L`5ZeUs-c>5n1yki04Suyg;@&`-iN@u$r@fklIPRs^+dl9*O=j z)aK|M@tQLaVu@v9Ys|$#60}gH17>^$2F{HA*$2_XGrF6*{`TVd`_Sc=G)L)TZeXUs zn5hT91rp!65RiNs2YTAG_p#qJcgmQ%k!mGmhmO>YZt^jVV1Qm~BIhfV(8S?nh>n%w zU{8C-0l*e!?-x;)CJrY@zCyq)F_9J=5>DaM3rz}N#y;dqNUwmjz#NeoYQbVeSPTGV zB5M-3(?n)iYU;syLnSZ){8XaW+fU9Z6-$8mltr$r`(KY$Vq^ z>uc*x)gPykROm?1QYis&2gYIf?dm$lBXw8qTk1 z@7%Agcdje}+dET27s{UF8dh(NV%f6AWxE0GO9AAN)ycqqrD5GT3gF z*$3FtXm+$^MmInm;q}C!X+P_TTl+9j;RsKGIE3F)Jh?p)$TsLHtT{>5hnnvO{4h$- zl%-}1Wyu1l7N4wWJR3L%U>?BOQi|G;b)M-UXq+`uWuWLIORxm_I%El)EQ>4wIEZYw zifopI2tdtb4GQ!c>_deisiFpUKxImJ7hIDi{A9saugust90QQ;Dp2+%;XmnwUxb_s;BRRL|19*4*yhQ5C^J|lHGI+&|cYU1sUu-x#CDR zWN3*4OgJGSCim_x(?Lk=Yg|jizmp|cgMQwdzebJ~kX%vTN@V)icn_6~j%a2kJ?%YF z6RYJ#p(`Nh7KUGtMLCPsB~wCCccZ>+D)AZ%H`KoY@5ECINJ5jmIY4!yaA4j&n1^v5 z0IjuBQx`BD{^P5W@9dSc0A{VIlAJI;TJDbXTJUgEL1*|83BhrR8F?jlrlb%bFB9Au ze2#s6clfswg4~%rS;->Fqh*(psXEA!*}tRV=LvxpuQd$-isJ?m#1b+WqipjEj02rg z79)>>^knJ?-=Bb^1SiK$z_6SgpNh;tQ3-P#E z1mMrt(*+`48oCS9N+D%4$e9wjgJT;39f+Q1>clVP75r8ZlwB3zl>omBGfR~(#c&5i zHB`0>Wae6!EBIr5yZ- zC?Y97yyALr@>9s5sH1AgE|60ts+(t`c!_!Y64jtQ0%^ob;h*7leEi zd?A*qh5@L=xQ{w~rU69H#HfyQqIf1J1NuTf%3Hh9PN=QkJjlFKmYYq)W-Zi9%&t@f zc?%_8g6t%oS#SU>F?H!kB2DxIkmI};4=GQ!txIs|vjb2~RoO7?w#np2{4lptJm8^v z>n;ryLiM4IalS8TRc4eNNqY2MP*MXnr}(yHqIR(C}Dn&G6ON4 zAYj=^&@Oi1l$$L3@avS_pDjx9g(|?I)l&RHX)1>ieFqR*nIQdmi?T}=6-e4&D&?%b zDYC9CFgo+T6f$9jCKPO`#4%At9J31$RT9UOC90ON(4CU}^M{&diD@@VwgkjzHyr{A zx*!wcXf0cn1gVIzzEB}ZjhOMKcitXnFz&r+Kfk7ec0K%XPiSaDHpNhjQq0+DcSa%fB zKX^8^p%2EbFyQ;N`%X$jSLmHSEl9UFTn6WAIvv&83cf8hTD^P&#Oc#&;f6Yrol$FP zHfp@oow6bWmwvK^2YiCNGL_L6w2(P!FlJBxUes$2J+=SCsMj+1w-+9cdaaFfC)%T4 zd;eR9JELB8vcT&=1>#G^65sNEW2tahBT6tzN8UGut<)bf1mB*9#gY<-C$iEME6D@{ z)GjfWWQL*9H!!VnQT5ASL<*N=xv?S4rBzf+>3Lb<8NRhvDksja(tg*64TV+HJfE)Q zeSP#rnV~=wF?IRECABaJ*M=CuE^jdE^?cg!M*iVN*a?bZvm_G{9qtcJQS3?K>f;Wd zcBeuHHlgD50{uEMJu}JzQ<+sAe}krF6r=^8>DG9VMFkDlKGgM}aqb3(PQ@x`_y@US zu`~GIG%?F%d*YZW^n;wP(wlOd$|CQW(7IW{!O8xM5FEhX%H`Ot=`vqqD1&F95ABns z&SgJw%+dy!$UBzg@2k)Iz6OEsSa^J&U_o`Rks%p1`o%oEWeoDFY8M||(Sk;|gx<_&-N-i~OwrQzc{3!~-M8$X@( z>u9Nja$*9%*?AY^Qz3eDl@Oj%&RiJDkCPOal|lHU7wn=5hwBT=FKgnIML0rGL89i`uw9^$cRK z<4kbS8%Pb^n$ve-xFokaRFY%b4WoP`q11)ugxP7U>4512_aKsTgShW24S>ygY``oMP}(J6h#*4@QNa6j~uoYFC06uG3MRutt(#}ZMLD;-NkQJ!?vi=qPQST2etOUDXPR45&OFq0MPyoWuE zHT4zU;xkBqQClQ3D*tTc{q+3L!~yYYWY365$LRc?$Ok4^y!p(udY5Un7FuoQk>f60 zW}t~5*+rED^~!~HG`#GzmB#r;i50IbQId&QrYOn6F%+<`zSJ!k!g9nJj3qgd0~sP3 zX@@0~{QfgNkb5CaM7q=Rv8IW|UG%s7ZV*eR=@j^Lrs>&wY^sRAn*3Rlaem4KvSxy& z!N}fG;5_Z=`G@f8PQi=WcW0w4m<-sn_sdi;DVF772`T!}PKG_4JF)q5Zmj6`s9}5n zz`3T~8089#x0;QpoN84v*N}-R8%r#BWf@C&E-J?ej))?H>*3`zmSo`^@P-$@z<$ay zL)=~?DG~e#dvRxuaW9VKnq-fw`6MZGXg|}7FA{Dg-k?rQ9m-qi4{ZX(7j{)I<{Lrl2 zNdF4DbA5^K^pXET9O-S|rMJIgxu~xNvsj4AbTs+P{Y9RAD^tX=Dv*=IHzzjE3-f6UyGpY%3}GBnTEHa!0KE=uzN%gQRf9k&bClNc zzW=J+8OLW_RFDXhqE7xE93(mnOYRWZ8XK!nXPDbCkAOkU6Sl|)=J2AL;NZwrrtqRX zcG2+sn&1FG=jQ>*S;+4qK)8bKgPubxN5kpFFxyr;(FjF3s9DHUZVc>RIfjAIH<$q> zkJ=e2*uyRNpoJPXFM#D-%s3g0-`GV>2hdYE{;Z> zrAdpMHBvz+aqqgKPI*4p{5;6q5d18?;Q|rcz8@h)XWj-2fX~W)5zz;F9pJHtarmm* z3)37@DTVg;Lf6wT@}9N1>tUz?NMn22pC>3agw{bA$xE`IhyDN??y$(R!YIeTO%^Yd z49}utINV)cTsxHl)Bo%$)jCB%zKgK~=p`q9pC8Hcwjc6zk8k%5FP_AIaKPzL2TAx- zC$=N_8Dml$!egI4bvu<@;4kHC*o-(_H^pRYd6|*|h9;@+b#t{GrB;lp@$}e&4`=NXDUT@9z6U(R&p=gv`j7U_Wt5?PG$r`3i0h@1q65;|BE=$?NE zx?i;D2_l{c3)a9ADrlAJ9#$W5Ch@(uI(%1(lCP3g6%O>A4Mt*%RzoY$d`obE7F!3> z0~u7B!FR9m?thAoB-BX?*aZ9)em{`<%*_aa74?*}Z~Z$^C> zYa184%)LhN6P#yU5oboFuH`7*YL2!|h*_O~8ok*{HpEYus2ID(ydk!7)R{M>`q|i5 z&%90*G(^7_;q#ED-F;M=`|@df3`z+T%VOjONva*7!5a#6U(z z;B}n60;k1_!9st=cIfBk_P+NlA7#mIj)vNQ{ z7Xu+HrQ+1HJ)pc@D~4DWyD&T8IaCwZT+%R{1S7OB~sTbtGShb9W?|9df@7~X$ zc9Z18WGsS~Pruw=dx0)H%%Aq$0;3Q(Co zzrIAXq5Ogc19LPD2*Me6OrrP#o94@^Ueq`-h%^wX&8PLKBiO?LL{|bt&S;}$^9i!( zwoX|;D2jnMrS4=O6bE444oAYjs=hsEp-ID|AHOldocV~bb^ZdFv6c3|rItE6@`tf< z2e?B*i%s-Yiw3)=!Q22#FpD}xN>xp`a0RreZ%fh7%NP@?I{QQv$~r}+0}Dd8*!4qa z3HX&a#9^c1`OxsONRGNE@G0BZ-PtqX<)k_ji-pB@4cEcP7BAo-b&G)~&xb7P1D(;b zVfcD%jO;JN@b%T$qC%K%em|k&$o3I4VVBOnG9Aa^L#3NDV`cN@I*emtdySqKETxTA z^dr{Uc}<#Mq=n6^#i8)+s7kuj7)MpyN5ZqHFupf5(~hz2Ry1fiw2QI~{_Dm5IQ{(( zjt7mF$AkJt_~vQ3m>i;6+HgR}3|=u7WyQb)ZKjNyLo?@#%FUU`Ytd~93G5A;ywXW#JJsB^)BA_XNbr(6jd(-2Q6n9U*S-REGSn?|5#$(ZszTy_9Dva8 z!w1rft7%$%&{TW}HmC`#8@&YxW6^T_50YVer{UBl3w-iIyZrqc|OI}`aP5l$_ zsE&=JLLM3j)=HrwrYyy>|ICgZs^2~oBdIIMRKdW^;i6b@VDzdL)v#s=jqjpq;k)|# zrUlQASew4x3xtL5I@gyMux>ZtV<%;SzRO{{8-Y$4c(!kBVB~f~6DoYV&muM2!gqa) zdgY=-cpbtEBge*NB3eCMP0L2b#^piwVR3u=4pNqBpjNo)69tNp6PXmF=K0WXY< z>%I}YoxNHfJz=#gF#-j5nS)dL6$|Xp79yeylCibDM`U>4 zuT=YhM96Z}Aha}EqG?WK+{X(M(xPcnEW61WZEb-k{~F=x#5>&jON4c`J|Gbj8}~Pb zF(+{r8)ra6z$MRXg<2m*oY=T?h!NaLw;|N}bG-bNf-bGEFNy0}e)m6z^emU9XrKIM zFcxjSmjL(!KX2WlyQ8gb%2PJ5IzQ{oNt~a>fjTw7@AieKf3oy(34T^91x8UQXKWh_ z(Y2992i`tGxy1F8@tc2q%A>4jV^w&S85gimij5m!p$B4tZ^g#dlDKe^&yXnZvnU|? zw`@_Aw-ld*VNxZ*F0)4_*05D29^OcVfmSsHt0Kf+jcp?$pvyY^MxB2wOy(JAo8V4~ ze`xkEMtmWW;tig-%p*|}7y+IAIxh8XCbqy|aG&!5N+<~rD?GN)BLNzcE{+ole@ln( z_Z8=l>z|QScLHS>qh5hqM2bSvfi}Fco_td~)-9RK<%ek50P?{gwW5_ zJ>HFEzz!O}qriWf436~3X>ug^0)Wc`i2m5PcUgq4B!uyJe5VY~KmFeZtH8&Y?fKxU zqw2r2p{Rcfv~X$TT~NKix%ke2?WBsYLc-&mF4!F z2~2v7=m+?fIL`Mt-GR#>{Ef$voR4wHLgKPUYr>kgkRVW8#x*75Kp}sL2Uly~Mlb>v zF9I(!%ch+`yeiI(^U`wEkUt4V`4@zvt<{MXz;+6UE5BXN+cxa=8@;AIfisw>H@rzM zVhR^I8AtIK@PBOt8Z^IMj(An#64DV@rcP1bMNiwRSj2zZ+onH0thc@TtHD^)PRV`( z3&MY3=b9HgB4me{Cw|@~$^XSJ5IQfzP_IMioNCPyomA>)1kE&Vq1!$bG)KzSv*kcB;_WU*)*j?rtBCRn}m;VJvn^ z+z1XHGho-y9_-nUlxRJ8-LT zLtpUolt!#L* z+c|W(kMg!jr#fG96H1=L;uioHXi{7->86@HrvCVHEDp`2k-S=UiO|cP?5}fGOZU1l zp-FCUWALOaqsZ*Phq8@!HAW#w(0K;Gcl&J@ZtFR-6gJJ@AH}&^=2t!S&tO19KqVh7 zHj%WK6Wry(Tn;{RVK4bz|A~rT3eQsQkc^JL&ggQFEKgc#-RUYVg>kz&n7315$>k;e zj)4`FkUdlppR^~1%k>aq*ptBH{{q8lIE@87O>F0{Of`7YIYi%b>5V5BnpyGM@Sn^)E0ZE zuU%ejcneP-o&h|c;W3!aW+NVR3V+O|;K{5Zd}LN5e=9gcq6B6VrG2Ob-0gsQd^7UR z3Z-%OaGlICE6x=`ePB5`q63@|nBuwlvUTu7qRCW5 z;y@|vix-9F8A3D63u#f=hi2M@r9{Ov5PLFnAP9LloE7{ol#JP`d?aJ8#8E2*NXA?U zHZe`wE8Wvw{{c*Fa(Fl(>ZWM0*fvF0_T2jw|4>&~X(UR*6qI z>~vfMhl7qhg>4`eEEl!IjXmVOu_Ht;R@3ByrKy|)jMY<~xzZd1y=vpq<0!ul(H(?g zuh3C0t;8-4eFGgsny{`wT`rP!sbo(iTh{?}gqQMrax%hYlDISQ2m-QHCfeS_#mpNuTh(aroHd5O4W{zzr+;$h1>a_Mk&B0>V$aLE2mLsS+B z6qpZid8e#m>P8^Ow($n^M({aDp5${Uufc0l{SzL_H`=qf;xUM`Xq~VtSwDXi$n>p; zacL2ZO+JzwawkKgddNMAkV%Bf1EbWQ(!;(h!>|li|8sgjpnF$JZwtIXvch{Uy^;I% zac`z`G4uGY4lq8E2SPF#aXy>0BN0M$QM6R zb$l*4R({M2nGP_FUJGw zU!-^cL(2O}>CHC!gjG65Z_vU03GX$`w?p^-VZwVIy`R#(zZ>@^0-6|dzaDb43<0Ip z&u6Yb)V(Lh0qSq3_jh&g@o{gaQ_GN>^$=qsohRr$QTKkofp|da36RB%Gxd-|GDIiw zpAu&9K~=S_Lm{#$8yNVO9{7k1Bqcvg@4dSB`lNi&jg~U(4-5lh>k=T#==~FVYuBw} z!OTeKPI|7Fo>>Xc<@EeF={X|dX`$zQdZGdBi5w@@pJ2;O(*w@jr8j;37S=aM_dX%L zbxe4f(r7)TD*vY>mlDu z4ta(l59%Q^5+Rf7{R~*c0AQ>j5rD)dGvqru$i>MaH!`F`4>2T%Ok&72ddPb#bcC>I zg$!}%A+IEd+{BR2eyl40r=buhs`@*Iy}>YTb%N0}k~$Dr3xODgzDI&M>VHLS{fTkm zxlDQz>yzr2Fp)>}fZ0PCnCmZR$US=2HzbE#%8>t~hg^~z;$+CJdWb1G#Kn;7^pM^k z#4A6k{t5Af$>TMlCvOYc9&z3Us9M5^?B6rPH$K9~sp4TImiAN8tVLsa}I9wK5d zf2-JV7|%&OX*tD)%kfOXaZF{MASg&rCe^c-G_jIiBb69KiD?p3`_n zL11v|-t%>lpWq3o|de zczo6+mtN+)dD!1KFTXk4b@PNPzLj&O?thg#_v&k;``WzgCgvAhKk4QhCQrH1Q+V^# zWXPMQd5elmN~dR+l_z^EcLn95rm2Ups)h|H?QQ5*iSF%3W_-u)9@UPufiu04&(b(! z!JHoV4z9ZZD>~zHvGA{LL)6C^W%yi$>0zR5t~ay4ciczXe^GUb`VQRMtvxNhE~V0^Mmza01~g}v(P@cCop0vU;af{2)!MtJ|NAE%<;|E z>_aI%i4?ezyB{-qB>YR}i#H9D@U1dxakcQfy1tR^b-`w~m-S9!B(v|E3Xxy@8$Zp} z^{W}>!!V=tN9<~QN!&wV=qJg;HS*5)ofm}-maf7wL zA2(1h2%a^qa>iWY2l9)tOxjn?1$9H;EM=^!Lhdv66*avmlQ;M$g7yMe*Z+_OxKpNO zku+rn0{zIZT6-7;!b*j1Rm|I$x}BTpz+F9prSjAAKXTiUP1%uY*y2RKEBn#IWkMTmE$`q%+3S&WB<-;`(awLCm$1Mivr2dC zFBud1@z^ea!Hwh4CHXuhaB;OJ-bIVSX^YBIAvZ(seaz-_ltcM(KQCM|*ta(LxjDeO z80^B#y&8mq>FzvFL_~bmfe~8qHQ2{U)yAU~)!ObiS$hA?@iJhQChk-v#3GZ{j>WjX zoZ#oFfeTUL_4_1uyJ6}MgS}6)g^2u)tmFnk&vhn0 z+W4cO!TJggJqAUH9nK^Gf&LgP*su%CN%M+W?0gQ@yW_iqv7`p4e$B7Q0`-W<%aQzO zPra7NZ;NC;mSH+*h-;D7RV?6UFiCei$keBGZDL1RqQ_6>aZrxZPj;w6VEYB@j?5dGR=G}^nMr81$OQvl2o>|+h>5UO zY9?fgzq^kqeFEFo*)Zy7jJ$0z9m3tz88ka;DT7Le=S;&pV)sItWRXftSW&w!;~4ZMt;R zzNWX@o6a`bHk2bWmc48{_XXdY7CDiY5h?3^K?mq>K6`=y(~<#jCy`;(I^(8;@f1>J z3O1wwa3qq^ZQB`*yp@JUwu}g@(e~ZR%m-k`7-`uyK*7S9y3$gu<8)c z;#cqro)|Ga3#5-+m>as?P<|$$E)^E5SJ#38W8<_a{#}W0yP?rCu^oCKw!VD$UmM1D zNGvviCdwkc=~o+EAn#s74wazN>q5maB5208^I>Y6(V(Ej?*{CB#6XZXGz!yZd#B%q zR)L|>lkm^z`{yf)UO*_M7w$jn6yt)yD}G{xPNtbuU7e4bYLejOjUTwgrAdraZ%|D;1CpJr^@Qz z42G9tZvv+u7;SB@BLM4feFXX5bJ`bJ^d=a6|q&^FF~iY z6`RmxdX+a^0?v%C)0Ki<#CY!kxxqcV3db*iQmhSILB6!jb~TKVMpNhks2GySKc4@u z;6Pr(q-xr?8ongkOP5g$V0LhtNgXs8^Lbt4OpLqLIK9s@Hn$Huvk203d|MtYLe+_Z@OP%wo?nbhYS()XhNT&C11^K`7d7#dD@rEED* z9}?Hn_oYA;9$XiSX;2zV4&T>vb^#R906bo4=$)TF(w=RcQ(ZIf{F-1RMoW>m&8YGd z2VYnIlTdRQePu$Q;w$t4pe_Pi%f|3bv$pUg)HJ4_L&HKl4}F?1bZWkG)hkcE3e;<| zdKIddSG`Krt3tgh)yv11I_l6m`Bo)IUb`PXiI&N0-(e_nX>~jrcV#79nYt^yx%NHi zdQ3l;s-;eXP-zTren5GoX;1V~zvKyg@-N!@WWx3PgzK4v>(2?-_Jr%jgsVN_+Lds1 zCtR;2T!(ZQthJ+1>7le}YXNG;zpmEFtan|swL;dvtMwMXqh(p_G+Ol=l!cn2_(M0lp(_Pw=vxzQj`riX2;x+#Yyw2B}&`Fp2e9K_u4;MM0IXAygto(&0 zAn^w+&4iuxc#olW#GY`O*%wWlKOLG@7VP4&0|wj8KJ5=+cUVe`rY%JfHA2l?PyYJ& z>r{LdQ{^CNY!pV`Ki3S>$UDaKv)DN^Z-ckpr@agB;4X92yp09K(K=_tJHsx~3O;`? zOYi?i?2n|HXtVr;kM>)cqSAMnG(_KDsV;<>)mTt71X-kkoMDQ7naVk~%Aw6iYs6ML zwH?1hlyY2m1YIV7UVZ;GtdFla7hZ8r?-BLyq9_nap&a=AG`fkTYR&kJ#FE%ZYEg-g zQi+R=BsAsq**|4X#YWPo^7^Op3g1U6)-LZIjD_zbg=^*cI3W45>=gdY*fz_%sQAWs zAJLvsVEL!Xk3`Eh;spsp$bCqKM3r9xqsK*gsmd{+7oxmCegB{Mw@ZD`Q{UlPX6?rs zRAiGinbZwj+)t1Mr2t$y05(o~zYPefAC5SlhnkT6N((NA=pfn19kp<43p_pc23rv@ zhvNwiAB!}G;!v%-bn_Y&HBOo8&HTy=Rc70O8#In6%T?e18ULn1STyNR)c0vjOO5`F zWh<(+vL{s2NYa%FB0W&MB6gpahans(#v!cLn&UhOa#g?>%Xr<7XQrjG9{21ZyKj2B z8!z$I_k-~&ZK0J-a;mK~0@Ip-yfPg3#JLHlsmxMUBi5Nc12}^?5H@4q24sZgw3Gh; zy&Xjd!=bQr1-Kungw|OWhc1=YSJi&bu>9-3CjXD`Ny@(!$$U-zIFxq+N~DvtJHMR! ztn+h!B7)}0ZTJhL*`T82)8$kh?Z5bYNE_9s#kbA{0?_V zb}PA2!c=5dfmD1sigRmXiugX5R_QV$w(cC734Kz`tPo|TrahFt zLTkGF7l&%QKM5`G9$2(6G`IU4lmn7Q1KGZcAJh-=18iu2r3&FG+y)f>5B9v!!V}RF zGfN(YC`Re6$zWKQDm7GnQkm$Nh^4(9h0NB<{)r(AmMW*8)IOXXi=CcsY4T@PX-95E zc?Uvk`(a);-3Rpi>N3m-t+V>l#LmAkm$m&uj!K>Z+eWS^cy@A3v2Db}(BK&e$w4&*Y%QG0H?QqydpBmI7$cWKcV4>#if3QCZ2`C2 zSaFRBSsRSab|cEN71~3;L@f@5rgM=B;{F}cVpWS`Rf}R(i(({?suinR6suYkt6CJR zS`@2V6nj-nRf}R(i(*xaVpWUccr6Zx=2^vN3IRe21t6-qZRf(9$)Z&=RD{ay+NCI| zXqBFu*&5N(wsXvc=g7Sly82+%oz)UE`f$Mge(Sh zHpD|@`QcXnii2+4x%NWHyeTYwVOqU#yCGmK!Oe^#qUP;PzuY5JYKV%p+J@tyh3_hw z4AeEN9GpPDSCs1<@VU1X2Q1e);IHG~ItP4EeJ@*qdleuwfwlDdFy{(yW^vFm*L)6} z=|*I$3e;y3)87@FSrvCTjwgf)+fZ}iwcw6tEd|8Q=6e_7&68gL$mR~5lQx9ry(?y} zFzwCW%#IzhJ?ZpcT&2Bw1LDr>=MB*k#k{v?-n+2hI-}ns5xX)&N3*$&x}%H;E-`b3 zC*mLLj_6#XBbiB*IF{%wo3aH@@8ndUCza9!E+!R&I~`n8&|g+icUX-SWt!d zi+UYZufOr7y>RG@SpI2UgqRYrH(o1D!FH46GPo86I7Qhvyv5P>5U!SAW@$5D2cIhV zlz9U7h8{La;83vLfeTl_k8nokCj~J|>EMvOmThFU_KP$^2@*Huq zH#EZzy|}4^;60sJT%bq=FuPTy7%i9m z64ohZZQ21ak$7^C6S1)nmkC>@5S_hgx90dMod1bO-)lEXi6nSoCm zgLAXsc)hRTOO4++15{(%y2gH`XnBF1K3wnuB#2Q0!~AA`Qv|{(j0??T{WA=<-W;~J zg*MUc+4N`pHsZSR(hJQsVY3&P7D8`KhKaoz_NsW6F-fCJ>f1@f*$`&20`;w~jdaAc zPCE##sG@J7a{@>Sy=u6v~$ zW55mAZ!YP4BY#6OmW0Jg z!-Qg=F80kAd-K$ zDWZkz&vEGsR~z5DDXqAyyioI-Z;S+P6r;tP&F_G`VA=WZF=6vX8`@WAhMQ4pV<@d} zv~;06-)(m93yt1{6rk>pwGgUt|8>oC$O=n`T!cV7(=^aw@muB^?EC_3ywv?c)0&B< zzHs5h08|JoC#C=s6OEC#EHEr)zE+y%u(-QzTSu6>MWoFJnu1x6HbiMdT&kiTS+jF7 za5jotMMXcvBcrqFF>fy=-lC-J7_EF85en7BuD zc#f5e0A>l)MEO~y9!*kaz8*P#||W&Uz0?#k!A#P}nn_~li^Q>w%x z9Dd}n+G=sv3e1M@=hV&(({`K8cAU=^MJrSsFKi?htzfdRp}LFDUjSl%u}TGLoTfi3 z%9p~@P^fm}+*tY2E4MLMF>8hB4L&NfcK3;moS&!0uy++&ygan39`}m|AxIlM-L~N0 zSwlI+3_EDl^FV0U3eOuW=L82W4L=Zrkq=D*`#9;r4=imK+g7aDRbc7*mXx*%5X~*7 zwh9wo=C%qmUa4&rsd%NeRixoHBG_SRs~8b%x3C^B;y4vjyhNqQW5XtyXK>Ke_`OXsU+7IX)^3t{2M1FdXK#}E2M5y{ z%QoGT1~Nf0765Y?Y_1oN67xg%xBi59&;C2mG<}nKEbavsR0r8F5vl z{X{B8dLD~D1r{FPLuo$AW!0g*ISan9RcObHci3PZ5{s`Q=tC;v*;4-EcD2#Lbru5x zsPyRY*J3->iTL30siM)+mxCXydK+P>KuEYU^QMuLEq*)K4}$G!lP!U>(3LJrnS!K7 zg+_q!F}*-H#6wsNU?U9RR8m*(S(IT@dbrp)&$jIvuv(lJbzKnr!swsldG>Fh0$VHP zA6&?Y#N+oF>*?FJ`f#p&X38z@{qDVC^97#Bs!?I{zw^ZXnWKa4ePf}Qn}3*=%J-Z( zg>TcQG7~l%#x!?wy+<|v&ycu52o8wB56$9QkKhQ2EBzv$grskuO9+luI31cUjG-Xi zeHmCe+o%0w03&<1Ob4MC)j{L~Uk~A;88&uZs3;9q|3Wixssh1dxE<*kkg)@sVHg1t zD|ho8K&sl!JNIMm=CP#`4W~0r9yhAFqtyq3t_|;;kC$mclxKy?omg24m1l_>7e>c& z2x*yOmecn1EGt57PnTO_<#R(d4vZ2bY)^OK)jAij2(ZIlo(YGUj`?A8B!asA zxVmj8t)hv@Bl#Wf4kJXq2-4O+az#0;*Xtj!FXb-J)ISQ4Vj^TRL$dUcLX;*E;$?_a z4=EMp&O}HBLSzB;z)DrzM7VEL=T+tNZ95_8yFxPJ>GHXkg%;1ZZFm|;6XiLusx~V} z)a1el1YkjUi<-$%HPO{Q&C(MVt|r4_&^=S7r#Gr5 z!MZ1VpQtH~swuJV$=)n#Dx&43aKynm{S!5n(ejEU&yjFP%Q*}grj+|uraq4m(QtFL z+(#c+Y_M%S2nY85PgX%n84(=lx82M2o{G?jO`Y6o!eSSE?Y8iL!q=PRTaFo|e`rFs8@nXs}y5JNePP@%EdtPfC?K!k6y;^%}1MffzSQiJoaZsvSTL8I1 zJhU2IKy--BYw*UM8~-L}<%v(83N zU0eN#75NPzERhqIjE=}}m<#S~Wk8=053#E9{E28~-D9n_WYraxkVJ)NudOu;gNtV~ z5n-v76iZ{hvL!JW(y7$QQjrJWhLNO)5`tt?mL z=um4VyhE~ReV1UZ>OEAqX(z=yLtqrX(@ta2K=IrEkN8`DLSr7Mz_w-?i(sH~ra7Xey5!QK|FY(@dix#FPEHw$nQJUUyuMMvm(`v^ zBlh+jr#rp=2}uAuk^me=HaM1kDQMfP!}qb3wc9d)ER4bi|GeNkmz4xRx35bJXDtYJ zo(O(!3|tjY9Siqz$6{k*$Knil17?O0hIpU}BldKoFMJ<^wF#3rydTtNT+fr0Q#O)l z5Dz*Ry4)1+Q*wSs0m{+*PCw)iSUHhf_KR%KxQsjPfT?Q@34ff~rznym*)NvHj3 zqV&0Q9K_s5<>fB!gGXq;&}qtg9(f4#?I8gNRfPMk4=SUO)G74YHJ^t{~C z3fxYW5N%h99Q)#))1~L)>BBtpr044(IaD@ycb2hnTs*#223=MsgQWY}+ok*c8f1va zfgG>IGXoFLJgGxZ{8a~^=#}(mO5jIM7{syQJz0jvc@UJqtHXk;wxMz#hP~?8vvT&< zjsr>k6VSV4j6XWXkLMz$HUnmP7)^l$+hLP!FJjfGZ*AtqumvZlu8I8Q+`%D^*|sjf z^h!+rF1^a51=2Y>E19<@T!wpwKc%wU0H!Vz!q!I4Y%w*S4V9uWcDO~$QCC_r32+gT@C)-n;? z+9k8E3q2sei37z2;@IYSF)I%dofR7?{CPG~8pIuHC`T#m6rH939R3N>3735b^;mH8 zl0Q#SAfzm74HfYW97I3%YMfcLa9g7;bP<~F1{^{vO5sgShswABFnGn94odI@^Yr@{ zQ(m@hD@(yLOx={M*07^BP-xqB3oe2$OEGmfLp(Mb)?OuUv4~=Moc9*9D8?}yi)~wR zN}aJx#v6k5?-GqXj*g@Qzm?fQy-9R=PT5+1gYwVQ`ERv_m!Tu6YV1H+Lbo8b`69NhY+Vp`w26DSNzA2(9*_=k@6+K^CWt?2owZYL(tHDvlgo&tvf;%}x&unKNU&eK z03Ko>@?L7>!wfKuWvLm1+8cWZW6kdvyvTh2nd9S+pE(}vG~sHvMyT1cH)2DfQ-qlz z2S%AQq{KC2gDy#yT0OX-4FPr>r;dQ1xVxKQ;x~GwAtb4y(cbf4_rfPC z<5Bn(Ggg4HfES}fRvE)tRpLReFhCC#%R1??=_`U8xGWP3KFB2*@SCyVR>fpda|zS0 zSQOk%pFL)4{RvVGzr-NuCpnmL->CRzjg)V|g^-M#&r5mj1t%cne7+L%!sHqK`<&6A zP_y|O&Hp>ev4_v*r^wkn`HF2DB$KZz)~ZchBm>tAFmD(GGlAntw~pd?XTm#p(t-YT zteW+Q-b758pT)c$3-rH>vH;MWfa-Q!a{_}p%sAx#3%t*YdF)!;FB<&9xpEzJHV(V{ zpJ&zF`$gB8Q{pHrrJ|WvrS9O%^Krux9V^vZwuVL+K+@RA9ECH_TB^I>^YO~}`liDA zK#lezXg{F%PIP-#6j|oLW))d!;ZvcOr<#z*bWfyVqaqgvrVTJC{ZSt-!bA&XJpsK| zM0SGjW!C%t2qP@;byB@VJN-08pZ}LgJ&2Tq9pcAMkth>G0(Q}@Y8QRuw+CZ=7FN-0 zSUD0^G?RX^Jdbkm&PGE!2H48i^zEFD`S^xF=QQ{yKv@~YW(bUIdRa<4{;|5F3&q6s z=Djp2PB(O%WrTTt3-G<%W$nY3l7{33H*M(wYa%p$g&|`D>7Av47WDd$@k;2S;BMcy zcdK@k>xKw3RE6)O+^D5M_V3!rOpJP7whebPe3@aM_9>>1XaSkNe}*(#H|1&8uAwk| zYm94}7}j93Ehbj25IX9ATnrF zOjm^qJx#B0Nh~BW7~04sKwNbj++~MkCmYSKx2%IBTB2ngvSqXWptr0;kCcf>_C%yi z8R^V_$(998ndJb#!;HFOl_XkDhat*2I;P$hjCV0yFZ_gy->hF|^2FeatKq3n4AgWD z(tEjCPSP-Q3-%cU`_(jDry^hwMjIhfoC@5Ne>~dCU10t}Yf5)b`44U*H`eImvDytT zd>FEvC$TSk$u8N5YWECy8x{Z7_hrA3du(Rz%Rbx8sFo6sOt#_aAyqY4srirX%<9`h zZ6BYP$##`UB9kZM-+Cqw4`nhlkqHxQczSWPl@9*NHHgI_nUi!6>rTAi7v>aBhks1g z#Qp59@SGH&uP(HH&_offc+j@3tBjxM31<#rL&`FNe3d?_AoD>EVh!DD-ylfN%MF9+ zzm6;a?YMm&y=t_H39lgKNXEJhUg6;FSWF4-a!H=NBeBM+x42}@`-U-Qxzu_*&X|us zA$x{o%qV|irB(4}wEb|2Qt6All&mj80aGo&CYzk1j%0A1(-61>8l_%?wxLDpmU>z6 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

    %6?LYGKGj}u|`8i{Vw{5!!$2_tT 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­-DAakbb)QLytJ-x1_e^4@V78q@-JWlNPxYVPx z$}UYDs)(gqSDpD`!3XW$t03T^?zP_5`zu*;bJ|9$Et32KYj@ExYrnlCi-y^y;3N#^ zSqo9*NRB_s5Q7oKj;?*aJ3g|#eNG+W-hWggY#xb$N%2nHjkkq1eSgS65 z5A^1CJRXKpr6zQ#kyorSDoH`Mn@8P4_3QaUs$)hxL3zrl<5=b@u*MUa9G<8=2zdCG z8P2Z%-Nj*d(|DJw6u0bqK@w;|?*8yHAr*92q(OkuAMPvKx9s?_P`Q8gOf-D~t=+!7 z;r7MFEZJ_K?-Sa$^5pjE!nI~xQo@4z)yEW6Z%w5>DSK3%`n7%$1R85ERFl(lBluSL zvjI@q+qG)EQ}03X5uB=c&<4x_T&IW(Z1dr16rfjSO}21OPS)94t;^O^Z@4Pn+Q*7d zIC-@jqN(Xc=(>1op%8(*dWu(e0{q;@S`U!Y{upb0jr&+@9|>de*W`Nd0lEHA+>^&1 z+auSfU*y{Oje8UNCw^G}{IFO5v_7YQe%hgbe)$wXKloPb06%8AH`c1SiOY>RH}BEy zadW5^M@`z%xiDvR!=W;HLtAvV!`vjt{{$Ft#6wT?JKV)}vr+lDM}sDMCNxDr;9!HH znzf-`udFLoP2k~(rlBx;c5vhfB1d_GtEtqYL#4PiXF9Kt5rQj4_ha>W9O{nAw zdu8AjXBk9I%vtwwk61KIYGUU=Sh?TvZx1p&qhPYQUQC^$V9m)^*##n(-0L86CWu@c zc0V)G>*}aw`_2M+KxIxSm!P*tukWMR&SBCxjLxnFW36 zWq&ae)X)6|r9h?ZuZ4%ibr;VV=1n$T@Kwj1X*0^rEc2_6s?r z1)Usza|JX%|E1v4QDd73SzXcbG=oJl3y+3~t%{Nh`nT{}V5fZ?W`17QVX&aoY(8pi zLa+Uz&`R%y3yV5RP=>#^10Tq~4#`$u*0K?0tZC*ZuQffD zqe%QFOPrDgb&_k9lZz~4Rjwew?xZa&K5e*qR`yRPfu8p=QZm>wyzgt2NGanPhlN`u z8aKcrdWPP*H8?Vid<4+eoi=d9g1L4x#i55ZPW>}Q*!#jN=A(s7JuhB)SZ(@+z-j=0 zs#+u+U4cPC?h_)T!GXitD}Z-^@^k9o)2+T+4G!M4LGY?GiLLLiVU zi(D()P<@oW^Cg>`X6-`!9g7a4(p(dE$18KIYc+5*3qWF$1WTfW(I4A+{w3zKev}G6 za%VJ_-V!Ao?dSZehn|El5LV_7ST*`@O9x$AK#(2{y<9lrzNW&*AViwv%%cy)kHMHs z9f;9@#q$F8ze!AjSwrhZVU(;%EHSf7cXmwZxQm6Vq^T;46i<-z)wbKSy) z^eYcy13K6p4QxIkG;k!lT74_Qq&TSpDP_2Vn^P66k_xtdHPv8mssdI=se-mvp5E5q zk$$+Svrlf)qEw7ruYdHy~DrQr1Mb3~ZJC+jU_usUY(6GslG|cpE zJ|XRijILH~eCAbsa@8EQ!M;zfDpX%f-Of~vsoP?;Jas!wRi$n(QRS)IQZ+kuJ6~Py z+&=Op`l2TDbW(q20oJq^UKQbm@!ZVeo@i=r<6_pf(bTGXcjj3i-r<&14j#M*h)H~1(^;SWu8F7-I+>CFs0@bK4 zlCd61)18{F)Q$P3=A?Etoz+TQk86W2*Mkli?C4V~K_H5x%W}-Aw=9lP!!6{X{8e%o zVg4x}va;J3G;mhZm(7x!^=#h49{xhsES58kfqtq%yYi&C*5z(#6=|mn2@{b9< z8XXl%L^JWdWd)}U>&8oMFA^7Gw6^oq3qJ*S7vz+b2iN7QuH&)?AX-xQfkFKbu^7sc&|_YU#0EVV zI&h)%X|7zNH-rvGm$3IuCE82Mt99)S%9LCd#D zTHfkw>0H(3Yg?9Ke$+pkbawagb>4{}CF{}(Di%ZW{BU95JD39;mBY<-XgU0` zPf`wSGP*9x=|qQoS@e8dCY$rTCYo{r(cWn0<)Ds7#J?BZ_MZnZ0#@-C2Ktykc9)lP+CXKy)KF)e&&n7o#p69{uXF&R--(TSdSx7kb=p!a(#L_8=6u($X41%%2fS5n zS-K(W2MtW%-lBsXy&3R=%A@BTTpz#-{*Kk7x+~lTc&@g_a&sv+_!QdjI)2a`qMEj> z)`J_a-X^N*o4ldk)e|^7)l{p?zJYQ*CIp87210@y5}my%(>QVS>N7dS-%JYsr=%FI zQ;a6XJLX6k)a2$bIM#ghQUD^+vXH9(m>Z#TnMVF-5H%#DwBh@uwOY( zcW2|lmH9;uy3P#29SC~-1Q$e}LZW=uvEg0rFpB3weI_@0%^p!bFgiw+l>66BR5Mu$ zZIWyhd_s}TNiLajLYa@lB(r^KK6;#}PocO!iPj`(XcZ-tNYn8q2gzHbyf7L_C|hg! zB=d-YbGEGRj7#Hd+|)T+G~CnfY`3_xzt8k7aP3c54O{Y`l{aE_`~ z+uzlAw4C*JZG4HRxI8zK(VbOpE}dk~^R*NgMlNTD5L)z(tmCf=iiB@o8G3mG5k|jv zJn5?N;IAX?F~e2sC4P$smq8_k(Lgu@ksJn7KZLc)R^U+f0mevDr_ zn@0hKRMf%t1U24_;5?TIE{p&RU)oR~Uywf3X#S-SwJeMbGV?Q|N5IG^R|^=rtJFpF zMn*Twg&!kAyy(%Tx?rs{t^`p^A6G_6cFX7_b<6#X-_l%$nc-qlThv0dnn*6%NmBi6 zJzAZOJ>I-R7fU|ojyo=v8aYUH9zPK3Y4(~Yj=!l*OKQ}gAkgM>}SkZ52a$b`2o175LX^gE4AyW}UpZ zXPy1^zj30`vo3u_SUAGGkfEsz*0ir62mmK&Z)ne&@nJuk#4^nZS*{i>W&D_XTMkBi z-R?`vuI1ad1J$^m#2k&ESou@hp-HT~W7})``8j->#L9cG+jdB&I&@UO{k`!=JmDNb zR>rc=`cwN%pZ0=452kknCuIxs^VN*BJ{7OPEOlGTRyDdU z^uakD3z(!`Nj~0CtuD3ngjosQ7}!!qQK>od3bWOoBXkvBr?xCHch$x37#5uGmN^&q zPN=O?7q&RXI0S_49ZE>D3F`j$Sd+BIOO!IvcoB&fCurd&pd6FyieyP7rgan4+ToPf z*(r~(_OSvRLuGiD94g0&<4{Fp6uyF8#?S&>LSj*9mQS@kheu}!z5ggw2!IlX!UZV8 z2%X_mqajl2MUz}ioC;Y8-~si2SIU;mK?%v@g+TIzJtZFA+L(>1Vxt-Dq|i7LheVz5^q8o)Mb0Feglomz+u(TS4QaA zGJ3t9#+U~rGT<0+XcWo`(mdG+Y2tYoY8BT8OoIuMOo^pfbS5&QQ@Qn7=gEtn3gJB` zwWTjPMw{MkJ*C=mc!7~b`IV`gq~TiOPM`lFY6!xa&4P)JM%#)%qZI-}2HrP#77eH- zN>gW%=}|WyQ(Oh4Bd+!?)j{U2_7#7ofU#159Ln&R_jR#3r1G&<>S!)2*}uv&3;~Im zDVCtCUl)Ozrq!#}%nz721X!uW`_mwnZfj(7C(cqmERGaaP+bl0hyw(@7w4ZM{hIfL zs8R8>W^7<=K@9E(fCzQ|ed-7Yr+oL)wbtHQS2g9PrMj=CR0agXyKM zINon7|DfJNi?D6QK+%r2^7qRS9ZUNtO51J7_KKKw09`j;RH>mtS@$Jq=$Xakhh@*{ z8{XxuiM0GE4l`Ps4{O@4FGbtg_H)0v-d>dDT>Na1DUcTFPvkX>M_w{>;rXdBf18KI z=ctbKH=5%vh9<81867FrqFc*-d6`lQD4DYRCJLZrXF@qq02Ak?MFG?$r$+(Qp;W&|HF}vmm}1%=gA0y)~Y9%lUiZ-BKCdc2%4fk-3ebxEyT({ z<(ti^U%^adbPHv{v9&wDR;f{F`&8QvU%D{2=@A*QhvcGz3}>h%x)F>U_+SSa9q|ZFQ$fnIR`g$p{zAIs2HCzWo5O6aVCsOCtGxe>_G^>y?4o1+ zaT3~ss%%W3afUKcsY3`(?NFdk{Snm(_V-Ozll}>HuRTNcj(qpjIQs$3;LP3ay z&Wz)Uu?hk^xkR_X9I!4;t_xNXueZq!Q;}T_@2q7v$j5y4vN7t8;o>kPUo~{9a7ygG z^jQSAIFATXazQPt0G=usimyU8YEc57TEzK=_PG*SX8TU@KEkfH$SifdZcK2TojjuM zqH^tbBLlx1sk9?bPlnUo{3fOACu8a(t_tgiDFR106YSFJ4d^9=G3s(@hCL+0zDC*8 zZ)V%RKBme|79Ks$!P&VwLrUECEQ{m7WNZmUs|wXBpQsUwo}=_`K4pscP?R7=bMi;% z9M>be(n1%rSUZF{#T$%v8xfg|KN0jE>zQv~LVOEk&sBa#C#5!l!bgzD9+zgT?Be7! z>`lT^mkd&~2yaAvCzzbBDx_+=SDztI5sBGay_%dzqo<GUFJ9>YFV6jsh5-%%d-ewh*F3T5twk|yP>!|9YeH686k0C z4yFLkVk9Fn7)q?UIJ@LcbZY*^%x(Gj*btHSze?5ka{1aF4~4is8I9Z z>K8_;9bPPKx=7HmR=t2`r<_;3ct~G{?zr)`c7SpWcS_m`$+7u`(^?|utDZm6(9*>z z`TZHr=avnH7rS(39op4-n~W6ZCC9JQa7J36#?9Im=o)b-LAW#9JjDJ}_F3^2@GNXTJe!QaEwGslT}y*Phj9+Zjz= zS?Iv(?~Z^nZ3Nd|lQx2O_nLY2AM9R6m)$1}Fm-EV6JoXASgp^B4)?Agur-5NGDc!F z@iHrXp759(v0fF&UokrRp^SH`t9wuDs`2L``yCFX{Vy@#<51 z%Sxk{2HgF!_KR;W)=%`MTMsh?vf6aU2$(1eNjzgqg(0MYgBlm!8+Z|Ktz!2G4Xq(c zL4Xb#Cq_p{>3#?CO4b;|V$2gqCA)Jq#t2PIS*zo5!HMd4Trw7P?oCvgomDkWVutKok%w#55J5}d>`IgU~*t&g{A)k<4yX{(4AAd_G&h#JsG z6CoHB^^AiWkR|~G^M2PpXC?vlZTtS7KYz(*&)L_t*Is+?wQp;$eWC4fX>7VmL@Rhx zug^d@iWag}P+acJ+8ex@_}|mHZ(!?8*nio;(smiXDv1XfWDH0(?%M~OOVfrO)-l-v{9+6 z1ZE69zfBDvD4oiTW@DUT<{Yx5F^UYfvYBusoubPsLGrDKsWAqK9;?}sL9OxrUK8sB zd`+y4mp)V@kMSj|mB@&g*}FlYZyn)vseahn>L!F7<*MM@j3Vp=4l}%fI&XsUfP%G2d*XYF^4k<=@6~goV~HUYO`?;)c~ZMy7?O zs|ThNm_d0(kP)i`l~ZYMr>HV4LsZ&7LruntjDyD+SCPh?$oA~{C*KqWOTYXIgxDZt z@L*^vB7zXAJ@{CUHyfSE#L3z#^qK5*B$+C!a*d9uF|f{QqJ^AYEA@c&VD_w>m5-c~ zxb|C^Sis5yU{7`9{#%cG2bqSR(x=9xW;M?8zWk%I;Z2-5Oli#V%+uFufw_nL zoh*z%-m1^3Fl@`pbBV^0SZHwwES@aXD*(a5zY^K@Ye--hV zlbVyZkCAhWNcR{_HW5Pj?sV%Zl33F%CE62^M3KhzgJLc^z0jO)u@S=C#eFz0pKkYl za+0~?uYrIAn}{)BD=vOz7}chui8`tMJO{5*bZB<>K>Zqfsm8uaSu6@ws|OZ@$Ao@@ z;yGO=jTaRf&%Gxj2Xb?Zu&{5{fv{=Z9o)?nDx6cAEiJYv)TgvuECptU9C^xeL-r0M zn;|HKl5G1jzd|N0g=efG4sydjTn^Om^XpycV3#+#Mv(`y+3BP63^EoqOC6}LG6BI_ z$@(gwc)RQQsiHmrgs&VKIw!3 zPireMu5AaatGmL!bNwrLEcZP;>!&qqT0%nIw0#NXC9PfS7VLM`dv@uoyA~80sqd04 zG9o>vD#9+<6&O+Ie?l^0Ucze+{p9j1(|2!uCUW#gii|b{EQ{3};c(bYX==k!8;A;8 zEltxz)hFvUAy8Rg5l2gYpF-4er4}}&77^^d&Nu`FSwWmsd*8m*ZO9j{8aB~X{^l8D zh{h(LITNA*3@l4xDHUBCu+^)Do>wWo)!9$W?)mi4YoaZ*k9vN~YOzwa*5v!=)tNR^ z?;ZU%vO9=8@ef7mr6f|#4d<|0xW!s6Fr8z%X6mbJ?wPLHM#i|OdRN)lKc8$o`!*GU zrkded)fw%)bjgtfrx?6RSWtE}tCs}!p1Pu=uMYqE2_Eqk6R?H+-y=~VnnvWG& zU?4~n=60 zmy7)SiO`vwBDlCG=(%hxI4j7SqaWu3HGCOXX3b)SGc=m^DBVJ(t$c>?;N$%G2mZLH zkTbqp$iY@2|Lf;qBTw-ys_&x;Xay7)x4r{V&fvoCE9?8H!qrRR5Grv`5IQpyb1v5v z!G9?@z{Adwa!t%l^ITR?P{e4*j;(n;m7;k@&oNekTX9xLp|M;nTy9%@NKThzTh`cn zDLFF#QfF;LL)CK(wq20tGG+LYVrI)sT9s1-a+Q?D_ihLm7=Km!mFTnj0ZDF}4XB>M zv(jrPNXbO}ZVFv5a@UOIw=36yUUO;E!k8jmC^yM_D6I(2a;EVB%*;FxU9=mt>w=4kX7cG}fa!v1e>=klV z?<3#rqeD76-yh!Y&P1zOi_T-u93l78Y&=DT9a>NzmQBxKn$gOQJ`ThHE9wWjuQeVE zNSk8zM7^o|+qck>m3G*6ojZU>QGR%}Tn=P-(w*j2>d0N}{4P0D4qpmnWC=2AY~0zq zRw+ZLa1{B+qI#R`22SAGv5lu!1e)g+sE%rsOpa(?-bGzN10ypQnljL+ZIZ~Lww<15 z9%|2mr}e(nO?}B0Nsc0jt6@c4S<>84abc1F#u!_RT#dfyEh!Xq54+Ex@p2{1xHU)7 z9JIz$?u?K8_Mgzq*w!nI1`K8RFESdb3pJG(EZE6L-i^{&BUs%=cQLVAd#He@y=T-( zERr4Yvy?f$m*hfEXmC}`q#wD@nl#TnVA5r7=d40wBDslDD%YEyPpbNtAHU3V76)=D zNKYxs3X5ilMB2Qxjk~hK<;Q>I?pJ<%9`n58m$^lHh+FsB9F1qZnbX;ZWQ3UE&$Q(&!K>Fejz+gJrBk5T0Ku^QgU-lWDH(v5sV4G&)^pujo`+^kc-6dAgdU z=StLnIZ6L-kTnNr3SWjCECX(K9<}oHD9!+)PRG-ky`1Gk>9|ji?D1jtT)?jIIDCvf zNa^bFuf)(vW+`CaYF@K1&E88vHk)B`4sC|TiH2`N^Y#(?Frnt9*d3Y3?Wt?A1C+;P z^GZO0v8qAnWFq;r2<%#Rr1CAwL8nWe;h5Mx5=l%nx){l(gaQ@HmBmpU*YFu>e$vfP zn);~40HY8?5EW8&7fo(NHU*M}63WXxXVk}u6MWgbxQ=EV8s+UeajJK_cn?ChiLR>DPsjuL^cm_KE9aa*)yU{Ih3vxb{#Q>z*E_rKYd`N`oaAqd3p<4oU;{ zti9U>g3L(TDW+b#t|CsZcVx5ucC@PUD`NZo@>^Fa-f5y-aaIhRDU|H0U!GiN#!k!T z(U7lEhgXGWJ5OsN;MwdVmD=GW9hu(V;L9kfMwfl!*&oGhc2QSFhN1~=cI)Oc(;oG;FbOS z_I~AggVX#uZR=t~vFq5Vl%yss0sU%}vo?>8^fslrGsy@utT1pJ31lk_Y9;u}A)#E& zzcP;(7u7nykOg#U8dNbhzX1SVXW=Sl*gabJbicArDr!aEH_z%_40%U+S8*FGw|ng!>h1@(2bbm< z@sg^(4`6xCm_Wwyyga@g<#JUd*7ICPoXFS5c%D#8Svh7XD2p@7VPTR*ak0Bnb>pWe zA>E>07B8PXRl1hv4Bo6bVJU^KixWRy^^^mq0^xg~TxK0G86Plx)4Oza_qg%_$<^I| z;>wwvtFO#s22*N;cEB#<499*jl@;X5JXVG-b$i~O$=cPrUlh;%qLU^wDKdUUnqq~R zZ+f1t;*zL693MG6latBNld^)0Gdfy{T+52}A&`o&)wJF{iuyy+)Oe9ntCfSNUy*S( zt*w~twZA|+k*#_M%}e2S+FTl=lS-l(&p0oU4ZWuMep z@j7>s!)Tcv*J(q$O#N1ymVXXuN8PH9^#*t%4{H5K)YIChk39~uuVGDl!^0= z6|>4$e?`i#+~-y0#V~@O?cBWEx!HjhKY9mx?{==}U=LRW$UpK=JNuQB04;YovW3NT z%Aw#R$E8o&efJ7P(Y0ms-Ob%X4iVu>!EHpJI9ZsaJF&ncP6|moJ1I9Pp5_-ryczl_M%KGn||I3u`%R?QvmB%Li2bGLLAEsb>zp!nrvo z#?`dqQc$cs z#olaO$M~;|MUSTEYn0woLMrS=`k*=yx*&tvjEHYB#~Vm%lexhXMg^t-1B{Zo$U?y- zeX}lvMrRTGb`L}W!7?X{B;$3nw50kmlTuDPj2Xx{$&7&8FvbW4Ae2P(Jj_!~&$nC1iA6PLnbFgPf)*jJH+K-_}EytG*&rJ!% z>NPBeY-qod5om#2MvPv4t%;UQo;Lt61K&eT2$;1+mPE51G+R+TcwQ0jr~FrJ3Hxv; zI%T)$pBZoOKIR`d1Eqq5dk!q{UlALX@_}K62NlpZ^>$NovB+Q!7cQPNXO7-HCu9Ha zZ;3$^xz`B)1H*9zMoTp%R!dTZ-V0bXgT1?qKqHD_x zb|!E**E01nStGfcmUGOXV$?uNlLyikL#wz+KDki;)_CZ8VZKLYo#wvURqLKneg~JY z$BWu31S;0$hFwahkcS624$_wN_NrW%iwb8Gpu<^tzcl#yN$wv_JV*2pxi2&dUsiXO zZZodw$@0zc9An3J@I|AVDIP%U<^oK}fa)=-D1}c;rp6P*GV_rI&>-cY2+C6o6W?7XWW=Q_V>>KE7diCvPq)G4r$HA-PxldJU+&Nkh1pYAZ6v0H8Q{6WNNctwQ5IR>ao2lO7yVp;$>=1m5c>I^BIm zd!85G*jdB^Sd@^x0tgGQ#k>~eE-2LZXMDtZc~(^ZdZ&~khEjAJIivt*ZLG zlU$m6RQOU6T^{E$rkTE!=p514)yK2>2APQBE6Y)}8a3>|h%8C>(jH8NWq(~MXwy3d zjf;`bXWap%jPiXdCtxP)@l|#kn$^yx^@);RS=_W_bfSl-bHADq%&%3h&=J*t<_BM5 z?6Ry7!IXl614_dj64e)xvfOFh4CNxaDMDAse0B~Zzll8mHdZ!)x@21kr4lJzkUmIh zEVXTeI7sZD(doCl(0EZ`TslKxscts8AbmEkl28*{IU>LdMHy(_#1e=D&B|{9S*GS(pC_n|3@F?CM;T>K@N6JCRmD zUzPMi`Sr{U4fLK&M0d?eC!6sn2j1=So;-8SkBf}Y;0(-lLb=9%vXD1z-is(fdl2Rp z&MGqER0*;gnSgBwa29liF_->nodu1esfTuhnyAG51Zf`c;wFtbS0Y8fNsd^m@;{N6 zn(A^tR@V_Z79@0_rTA>8)OX6eJBh?Fm!j7o288aiE=2ume6t(Y&Hk9HT$NSyOPPg` z5Z(F4wE~uJ?1So!2#S-)snbcjXShCv8;VWdo9!A`^jtkRcN#QJh@$28hp7ssLK&@{6#&6+SP=&w=ywPm6)F2?2A6dHwI|ss~a@W&w=@4 zV+hL&lo-rGc*&B8oV|}5!&C}YqtAb@D)(cAn#xyyqNzgoeso9Dz;)+{m`CM%J z40OfaXZfU>KB=y_^_EY(=`++7_mJgtlyM$7X|A}3EuW7~pLAE;W0p^o=`+CsDK#A93`TTmMjBVvXrQ!VfT896r?Y9hjPnX{TyCRa#r ztNSQA6SB3R(K5SR+GF6;vcdh`=*6&>pluKl>U0^&)4E^4Rux~Ht zC!@Z=Sf{+C;fw1o1x)}Lw_|0g7T&DNCwJwF%i`zypLh}*6Hfo#BiF7miFA(Mhhhzs z?3_%s1VomR$p>V(y}1U$oyiLm#7UAkbeI7WC}FjBZ+!{_B>+8}ii~gnj=xlBv>KJ> zpflGVE1ykm^y8$0O{BG(Kp~sS0vWBbhJCZc^N`(16*E=8S0XWbu}$&?Z7lm$*#c^juC$LCdou1EUeV~`KQk;FtsM1 z`r2udVB6v8Zw!JWvi)Q?R!U0Qei}qh=FCoJot&V%Cz%8ouTS7IANnXlmlPpi@vyW% zwjsWrW4tdjnKkUgc|KknR$56uoMZe`!b7|&6y02a;91oj0q*c_5puDp*e;jcIsy)N zY+}7g62~QLcBMd2Y!36$1Z*iNM3*g^&VW*H5t~@2?|zME@U-FYx`(;mcc1C{z@6xN z*E1klTgZl5QnHrKhlFXeWzBBS*q;@ZIIh|x%(n^f^B6f*Kf3=TYINtqeDLS zjVbbp-Iyky7`BFE6F+difG*Qqo*S%YKfw9I?4vk(02C_#jV6Fb6F{R0pwR^IPU22I zaARn4i7XVL;pOhJ@}LBn&lS4aybTT^BVW4^m~U)HKoDq%K^>z|6O5x>id~*ZTUK{b zp02D$vkd8Hv<{vA}Qz#$4U=JXLJ>OHX$Bo2tq|NxG(4P;pIc!va zyJ+}otf;<|IxGI8z@c^;9e-3fVB<|2!9p})LI^%FJj{cKMR>jGHEp44@E3zcn!@|I zmd#hFeWpcip{t3vqIg;M2x-$dWYoHcTvEM8B4^a9$ly;QsRYetR)Q9**AHLqKtFaM zvECIh^(ylsES;FWg`>vy;Sj!0pU0{@gj#biY>***Ox(vM=nxgkaMFKCX6hJD;WI*o=1EOmP1EMa40nxzp-D^LVH#^-)L?*T;J`r^tiJ&8p?V5B>=+v_x zic(SJLvG&`+4i0KS9o+?P^5(AvDg)IB?T>`m5nI=pkNG$qV}V&Fb5@GD6k?mc{AMnud48lXxBIWM7nlkyeKyVyCgCPI`Z+YZWoba&|+&}z_(h>WZl~tV>&rbbMrxIy) zwSPr7lK=38W40!CEWNw&?D8%-7^9w>ZRWgzSBfTNdO*uyoa}oUXs`&x^_6>Q4g?GaXqqRu4?es1fug{gS;v zy^ky2lYAv_d!g>YwR82?=;vqWKaf$QPrcXfnyTBE$6P_POkB`YDf;RLmS;K-a!=jD zablZuYaJRW+`sM*`TG)&Bz7TRi6Zz9-u=wGy2~ahJcpK@rRO%-L_iw6yx^4x8UHc{q-lfi|D`LCnXgJvCvf`SzntLWa^7;jUU7ZX>Lr>$$i5%!8Xf%mZS z)2-s8+@rd(V`agzIBz(-^2&ljCL5iJ`6{zET81%|gs%6OU9>XJmD|1Id|3t6@_O>? zfVHjOMaJIQ&6HIXNAp(Z_K=Mj00#|+h!o0NRnJHDQC0^vfv%J!eSW)FUR6QJoD&^& zA*{M{akEa%zRs7!=`L=Tzcb*7eln{A4FYjIdp4khy5wdG@-2r*>|Jt{srw;MwT|=` zz^kRTEsLADx@mbfxr~=uJ*LlYXG2(Tw%-3loNNVWT>fkAwyV1bRNLP4&FJ2Sq8?i_CqQN4>9km$chw&`rESd!BFg7Fr0+KvuAO zoW8H%0J0~Hkk}P^jmx%tD2?Brq(|OIt*4jMmaepCyKKvj_y(|^bLxrSNjfVNZy@YT z^c>dT*Xu2gVR5TPTo&xL*ygDkzyH=QmKAWUfxfNfSbdLI@N0a{5g)|{=eO4$AS3j$ zZMwu0YyXBfX?TU8k9fAPq3UmRBnH@A_MDFjw|bOii3YL&dQ~e0Sm~(SkbPcg*Mje! zA*Zp90%I>bl5&=mtotQKeU3a8q{$tFia!xYSssa4sv?%VupqG`%jfVK@3X5&sb%|C z^Fn)4Yp$bp!^3#!TOX6(cYKxW_y&Rl^?=gYhE^0${NH2HOx<_v9*$pAkWtqkmlUQ7 zI$QIAlS=8+hHCIf0wml2w_U8YZ0)|6UL=S*=6Ujpxpl8HBMkhaOY;5Mh%A zA9tV0LLuZHt4&|uCpNoGHG?M`2^XZQYl!X797>AuwAf3+gK$5*t|g zUb+vPYrnHn=0EhCie!o8sz?@S&dM(!6i@Ydk2$!}St*#Y*IA7qaAc>^SNV*1RtLU{ z%l5sr3A@j~o?m0rKt_;fg*sZEb1MYeh_$oHS9u>_w=IWu)>y__i2`x8Zq$ zoWHI19$&t$@-<}-VD~uWSdO!S*s;|-{!{ri1+QQ{`c+w}?3;Msn5)hv%tgU|!IDxI!K#M+RH z=>Dy$#;U*hbNN;&t@fIXqUe0Mg4b@P;zC)z4eFbbRjtAptfjilP=BS=RDoGOr24*T zQ$x1*Syi_X*FHDLr{ehhDwThpOiH847UCk=>t?dxJehJ?HJmLEyz`JAciw%KLOAO8 zYwCBaP|m8~Cbr-7`&8lbta^5CZT!Df^FY@`1=G-J+^_Vox);e6)TN5QqhcUW#tJ`)_dKf2TK-?EW9LVw)G;rCyd;ev(k!Hc z%k06yw4JplV{teuL~JVB@r!$PeAOmgEzZhL=*M)eVvyPK2bmrJ0KP~mdymucqt#pQ zj`J7L53}}2&#lo9y8`}7ktQ|Cp?5hSRQ(o;C+KJSRG;Hvf@g)c+<1{b7N^e<;_uN_ zTVUc8Xp0Seac)+VN$IP7Y-w@LQPnOp!U%Q$l2tvyWCGMl(<=riHa=H2v>AB*=T%Ti`ciVgwG?l1YhFL>pY(uls}$%zA&ad#@WrryMU@wH zHCR~eLureNat^=AIlRwG-)BlJ<@P=+o=mGPuA!#GoR;rXtqL}%VolFDsecp*#p&Nf z2sv()kkI@2ux$OE9wJVGO$l(tntYYg_^8b9Fqj(@^r5;MyJ$HH#qcAj!IESh$6i|J zVYn1-;oUM^$X5D)$#B(m!3ta11#@}Ex$?FpNM&svS9v>Msdnj$fzM;-@Ti)JgNeBu zSFaPfpgKWBSJBX?RCz1O{PxOH#7Qmm&^Ksoqg1-;257Rg#*Je!EAP^`3atttmXF8Di!NcBqN3u4(S1=gGuPvOv2>9Z{M$E>!#^O=`~!E$f6LRq|fv}yWI*GtkG zJ#9+t%6DI-Lo#sS}4 zQpi4PBo8(RtUT(o!VzdH>40!fs6nME2RU7pSyz*tX>9LR%JUrzhZ}l&pWsX@x7tW+ zvuY!oL~!p`U3Ih!bGD`I&dLqa$jpuheFq>}sZa9TnL^X7=1cuP))DCdD5f~g!(aI% zp*^|XZsvxLg!M30f*5;LH<3kouc*PN==iE-{$5QxBn~-&x%B?~@yqI9GDUEXGE#v* zz+{GB2q=rmNVFejGR2$3n-TwyS|5aNX`-7Aw!1AJ0u5g!YH@! z4(0xjd578f{w41a6nc1vj6?q}?~u6q1~t+N?~wdXE^SCwIGb?{PYq!FehQJDvYoGQ85Vx$9}p8N?jxxTeRYOm8o z-dv)yNwX3z71k?MS1C)lzVl;YRLTYR(_vJ{JO_L)sg~7YPSxC3m>^*2%lpH(&Gn;I zmJ9wxS^8VZprXVYS`FGoc9aoe*CbvN>l7UC|3+!6-^SYw%gPM-e}C zHiL3sa{`zb8eq=^vvqw;luTc9Uxo(?b^kgDjbvVH++`G|{3i7eBplpOsyW&0>vw(OpUC1sOT|7K-W>{ewv zttzf(@0+80RSM*&cvo{z=Swo%Ew9Ps!ijC&z)P=TkI`dzkM(7C+qc+u*rbE&B`G+Y z^dL}&!t0Am^XNmN0j1gUNh+NnpSaRYK8Sl18h?LKvKJ}a3(L2PvzHR7X*j1M=+RM0w!;gFOQ>a6f49(bGTf zt)*+2(C0hKuFrV;1_seF$geL;Mr+ebRMw<%;>h_^lk??x@lF))c;#J<0(|e1ZZ7GU zumu@c!h`EICboh(e=aeeE&|90U6NSpW3 z?QglszW4E#SDrvQN91$I5KAPqQzjn-?d5%WBB}t|%e_;poJw(?+)18}E(A0vbU*}4 z!f+?D`da|7CiD|Id2)ZUO&k+FDJupV@AO1_nrQN5-h%nTkI{E4o85@-h~7o@pa!hB zM_wt#yE;X4R{RcRpe~X>av}TfDF9gQP|)e9{SYrk!nP0RT&}m#vA3uvs|jQkx|-va zh+-=4zRodjC07~|>h-cRzIAT45A)|AML}-jU36tOw%eVXZ8*E{R4sjqcS%Z&TjbYx z{@1-bgLe#0z2<$R++JewT;1!ud{ocQFXz%qw}9F$N0-KX^lM}%)h_UA=5lwR&->Lr zW^0ICppd0lpPyE__wK>WG~D7@%)_z$IV4*BIk$Gk%2egs@G1^f)2RWZwVLHdqr-=@ z1044{D<6ka+_Q3^H8E&Y(PQLBOm?tC<|rp)?iQuh2a)>XO22hk$Nel={D=e-bB$#O z)Qz0{uiVX5vtrQrzq@MKWrLSFF8k1V?~6dNHOT#zgP~W!alDn}sYsHCbO?!~*#RzJ(@yeE5);9&oP(b6X7((bN$`Xpdt4AQs(j#zD21Du&j?5&X zlPu~rB~Ny)8D3zV^8g$(_aJTASs^>8^_mhYQ+IM$NOwVb8uYc^byVv`s>uAmkKG|1TO3)*#(~n#h~d_kiTo{WRkr5P1WgB9${z zZWfi;$Ules^4wUFK#(?7A-rdd`y+6=IK7#VA|`!19az~5jWuEyiMIyn>`Lds=N%?j zw4_!dDh@_*I!i{}lQWeeL?2qAU-Bry3F!%Gr#Jj)dp9MiQ1$V}ucEwQ+j^7T%tG8% zo{2YAI!-JyF8Uc~AbOY4_XQELiv78;?aw&=rrYyAiMskfzX}d@{71}5{8oNAg>WPdEa)O5bn;tACSXj8gB48vHA^G7jel37P zh7yljUJ8js0E+t;kl<9YC)k8MuAN0LwMacdc4Lmjw?zJx#zsUFlV1bJcf!R8=l3^0 zCr5Kk;R5>yp?t-%y3oZWERHUhZQlNHn%bBOjJ3os<{eLT7tHP+UgN5F*NgpaQM8A? zbQJ9+DUIjli^hyR(MwaFDFkV;&09eo`dJ)$)>CZ=$I2Dq1mj~UYdOQ7J}_s-x*?+R zuzQv~=jISDut=fg{utpHN3>3r@YRGE#6{#)j_mSD4$X5kl7V{2KwdNTBy;kfJTX7X za~`+JMl&}Y%rPM?^$f!7>-vX+<};^*dC0)nMVB;HSUe>yzs`JSB;zm_u=Hc>X?yxd zA3Po54aIm4ht7?9B;bMQIG2bIRqi2skB!GqZmisUgXfo$5-mnaWd(IpW5U|p&~uX6 zjgr~6f@HNGh#X3G%w=p-n_8UI}j%tQTGhp(KN?^v1O+#G{)vcc#U;C@lS z+ZL12e)V^HrAb%gVs8J5;0-Tg=m8UDh1eitYER~=(!E6M2!k&LvL26}M1xQ-@1?v< zC;KXVGHl5xt-66GvN78|!#lZ&CZ@S_r0XD`<_L`z$zg5n1gKH%PFy?T9QmRrf{8ISG3&slI=zws(H_qawGH^5{oxrcdkqqmSYc z;Wy&!B98coY+T=#uUd@#hg+L*rMcr zByC)9JZVKxa$ve~1rkh#+!dnZ)cUVWw;Nxg9PHXh$<#d)Op;30PD)>c3|`A6UF)Z6 zf0P4o_X0i~{pPeBYH4ga?47(w6{0c;SpMWTs_<1Fn%07SahoyE3cbhB=+wBswkn-I zdFBWK;C`dEdG95g04qDYTIhUZE_sKBm{H#_qi&Np*GnAcP>ASRc_|fUJ$V`bO%Ih-RKFkL0iF;@K24Znw>^|yXFt{^lsOS+4zS&96%_Yv7K>TER1Z~xb$zz#?uGu6wv_s+}&bc5L z&89Uj6U4}^=A0BP@kBdEq7j8Ar9ji(;I}+R%Je+3(VZ`xb#>CqIsdqRbDHqo3la`i z^>JSar{%U<3<4vUeZDOIvQJjV#(s8LJ+@kGb(ghy66MnO?ySbk+K?HdU5A(P7?>Wo zVZn`!az8&)Sk)BPd_7mzp7=YRMEZ+Ju4sCu{yv(MBYH9|?Ym0Xb ziWdGqsC-^69lba-#F%ZtTNs6BjQgeH@jbjmBv2f4j3Pyzt}xuDBXspsqB4}tOi$kq z^{`V61P{l0hIVAnjd7pJ6UP@4y)1?swC74XbfdW&<``#)ohihGOu6;%*=){gcpk>M z&nE}tTQeJ zW;J%!l;6#0c1y(`C2niVYgT?BvZ#*E8jT(xRy$T0yjWwg(tX4lQ?yN6$N*3?yv|j( zz~it)YtJS|HZjBvn+YZ0PQx9W_|A=bz?v*rnNOzoy64N&IU?-aQ6qw-jSgPXQMq>1 zh=6uuY)4I6BtPPxp5M6^a*_P{;TF6_9vBvOdX~fJ-0m9$bWBc9Mv;s~qO~zaA>?gL zqkzQjogw*$BtrnJ0+LZkGNhm?Lm3cHE2GM=OfrmnrCf{1#7fpsM2akk0;i)!B(EEV z(2~DcA@p}qSV)#M4xE6>Xr;*qhz%* zh|#{A!7QXf&*S+<5o2H79hr*R<&J>7xr0tvQ9#GdC_3jzY{iLn#Uq5?JzZWvWHkx| zrc2CVP6IN#TMu;9Oy-gRB#+yY0?DOH;*uTIgVa%6vf!?2FIljbwiuVJ-iDvuB`JTb zQobStwklJoD@mzAA*`guDm0bEScRI2ff2*BVZ)-F5p{QJ6HRp4tv={mZTMCnLP%D& z(^hx2c-mf*Vig)=Re2qHI}-ma%7&{#x1(pJtz~grq-+=Zn5n%Wk1n};NAETkN23!y zyZe-luz#69*z(k&?3Xf*sr(Nb|BM1W`2U`NS%UE)I$NKXsTtGe$XZ3dN;i+gd$1k3 zI7VuFx_aHZkzw}?#(KH2B9jKA#5s_;!t(!N((uMx;*(qeBjh`1q4_=C+Y=hc==exja%mS-wG~-m>&p^1ZIT#5u37#94fl?-Aw!C$aA!9;xQm zA*Ni z@0B(>LC10rb9R>vP2nFO+f;fI!t|ua{%;|Sqt+bi@L;3ZX%l_&YA{rd?O%eugnuk zmj!E&ousTQZ#C;dVnzsV5?T?qhLlZ`vPM$6`?SV&0j~DdAfyRhL()MK`G|7?Se}vG zj{Q}-juxU8&q!`lLB)YrchTU2XVL7uff#5_wj31jyZo{e=bT1TH@?d3nz`Ok3NbT1 zI^z?I!&@UCHR(%_*E9;4!edxcKz#Y7z|1qrfBBv?EW61-iIxh!PnwAS!4ky{p_X)4 zUFA~HIhpXK$0alIP_pGQ_RE$p_BR?C^lX+;fsV?Xh!*3v%X+G#CfgI+aw6eNcWg^r z@bB;eV;b=ixdk}(OI}@b$9DV=zz&4|8hnYs;8l>PwOMB21yrJ$L2PZym&7^vXzSL6 zKz`KBAjh+(<#4SPBQkBTO=$EK*0vl9#Yz$!FAyhqgJk;-bP~vT_G|fy13FK1vwFWCkHyL)o0+8`8dX>2|a^=moM(k>vnn_F1VKH)jLrFviTJpdCw0OIFPRtue4 zB^@8?QY)I!;Ue!Lw|6#pW>uk9B+KJ{&o{VA(xW<6<-R{5nU zO$VBeH3g~y>CO)jc3yix-jLNlv^9HcQ^Ldl7qV$-H1lcs)XE-@zo?8qZ938PM%5c+ zT-DYKi>8B32NQOD7Z-!8T3SnEYjdr!LwaY2RBFptwdSWnwQAF0)b8E-Q;N3tFY?<_ z$#!Qro98@LpV6!~rtOP+8`{*iG=5*?zEOf8m+(`1e&ck0qqT~aqr{a-$+}P9@|s-^nYnu`wq|(+gjSCqqm%BZK>7aCEQ%1 z+j@7dDS_X_x7?Z@U&~5dE>@|wSGzB+9iXON=N)WW)=ySzds}O4Ek52u3G51l*Z8KU z$K%u!oX<2Q1`Z_Rw)>LO_l`>U?nscuy+&v)8wHMDFi^#UN3FGWU~3tbetoUl!kElX z!ntf@q`3#tACx6&i!fQEg`ewdRZQsu1Jh*}#Jj_UiXx8h__-&W_@b(dy%7O?vB2}3 z7Xh5A0DF(0a>jo!(nvfolPhr9OU@4(6`Y7D2C zU7@(`_B*Gr$R6nJI@|fcd9VueNXFaM&-uV}V2fxIzh$w-83Fel+&XZVd5t)Ck=#G1 ze3a<*xos0D4C^`c(RosM>=sY06_2FW`3GCsDBIUM|4?gu0b6mF#*Po_%h`n~Bd_TVAnl8F$K;B4`dhTt`v?pdN}W{Sd06krlO z^;FEHn*If5!I~cUp;cB6q1RdrYM?bWD9zVv3~}Eel$hZ)2Dv9nrl<$CxzD=f&tSzq zw2-Eph|r`}3)KN6Poc>S0DFPh-!koU#U3#2f@|<4W#7kebvpY00&h7{G%jS%uwFZ# z#I3nUThHax=tfZv^w)j8&W%v~U$jk*5{gPMXUomF;frvXt0AICi3dRYZE0s0ad?Be z#!=#G@LXzyIhM~W=H0N^mHkk~lU2YgM zpmRu01?4f1t-DN7)|sVw-nMN#gEuwzj~QX9l=MXS%XiYs`D7HdNXE1_%NfmRIRJ20-h)TW zSFO1zCL%e`isg(5%`FNm^8Uq70c(WjaZS`ytj-JyiENTh8kb62T->}{Z;&K8o&h}t zkt>#I%$SB+;O=sYPd`B>lX41`q#vZVrkVl;h5A0WwhwYA(LP)Mx!rdw8_|c>9$E*A zy^heQq!j7Pljb;IcKH0Oz?BVi`p!l2lO{iB$xlD|8ALDgEGtV1^(#9glu*{67l7@& z0PMJN7J4WP<`|;)5_U&ZpRQkp7)S~VrH-BHPV^o-hZm(6SDy@_hOWAGT8g*r6K{j9 zb^a#q$4OHEG)KWKbizvZ1^(Rf0^UN~+3Zqi#4zr9|+_3ci#DRj*fyVqLBB>{P zi{;qhSLy&DjS09&sHk35+@gAw{)zSUhiacK-SBH#c63n;58zh1y(}(t7AgZ|%YS|? zch~J@u_1XKFRsiscYZCJDZOp6HYKI;ZxI!WrunC!-M1jT++l2h;3i!z5GoW9f=MAP z$v-8H7-pIOi}p`CdX*$v04-3bW-MoZM@cV27Gp%~lvL)Fsr17X+KKeWDJk?E;LI@! zIUM4p>QL$&V=&fwI~vDeBE}G|nvo7!2a7H_DBq*_QM%Bzl~!W?8}DbsI%*y6Gdpq- z%0LHuee8tOF^Cxaq|&`}%fta#HzF~yWSM4G6hmL0n3z-WzW z`AXOhOvkCKF3pp6-34Z^e2h^^bffG@iqk~GJh!`bc6-ZLli%iQ-ReGB;r)%%L&f{K zh-~)Pm@D+$j#q5mwAD5zSJ&AW>L9r*usS0Hv9tD$+;*B3g3vM3cN-nKa$&RG?U3V| za%{Vo9F?v34_kBFkwRi_D8qCr=T+h9mEjvvnU!L!IH+iULa^@-$}14m#E5?ywI%EBV~NPjSlw z9oruupzmDtTErq1iyM*SYHyw$1s9xViwD#b4`SF&4`wIgp;Th17_<-ZV7?@3^ie_{ zXtQ@VW#u?{_MhE7N2YKci1=cN!IUy^ATGi%iI(dx{zOe z{!s72g#$d`(KLk5AFAgpj6@MAt+v*=1xDim9Ea?iUvLtOY@}cCEf(3}zMvC}>~LT3H5T^Vy%&6>$GjT;M!JJd z-r^cBBgy&llgy82}OnX#h^GcoSsvZSABr?I&NBB|jM4QaE5 z{WDN42n~s(G75+(op&Oi)?5aPr06ill!y_5$<-X0IQ4C9$qEPmN&$*WbPrF>*ZonZ zjhh*-?CkJmC3u*i8m)k9l8BdJi}~_zI-0uy)&M37;LsZ*NDH{ z5Rksvj#s{Bd?^`zxWwn_$38~V7Ofn2V!OCO2R#ews__`bX_7+2@n~&UUgzTFeEB5! z2fns*cUd;vzLwq01q>Lz2~oYmJPDG*CcHo!;RHBCx8Eo60tf6$IN@aPk$f#ukxU9{ zxgPXic?L0%n_lQ$#x0Y{`7BxU`@Px)ElP&(EJ5I11on(qg*f8s-4B2rH6^YZPZoHYWt4dfGjJMZs{E+Qk~x)N8WGE-S#(%Q`(!5Zaw9j+ zg;1b$uF8%hblNKGcxPwJkVfx;_5QVl6Ia!#H7wngWCphRb10YC*B)??tADMW3n5}M z;xT$=cto}O)iSx1wkSLvFq(gAdQ!%sbaeO4@r~3CYvNbnTilK&S|mjPLi0Pi=xK?3 zq*nIBAz{`Y;_G>nP_p}S&OqnO#R$o!+5$*|4iTLoOOsqDm-W^29JaSz$Cf2r;jJF& zdUu&2XN`0*SvE)ifLC_1w15-j(uG5&Xp5ebdSPDE! zH7#3Hj|?$^r9!R)uS>+Qzzn$-%vrk-a+#i;9x#S=HX*fR3BMq^yT~V_suopXCNeZx zjiwZhCAg#VV%9C<8{bJ_7Qv*)EBV(`XA>RrR0vE#2$NO4c49#;y(;O|MCzbq;;dB0 z-P20HYgZAw9s?7rJtK8?j@s(LX4}22pNn`a9m||9;;!g>bp`=Lu1g=7wHKQM zTToTAxW$oLY_P+|3;>A93Fh09YPdQp#o zC!1M9mZ1a=oK9G3PuNhxQZ3S@3VZTd`u2(V9>iCOZl0iN?n`9{=@17`vi3dV9A!^$MAk(#obkGj_mCZFow*VD zAosi02>~)4Dp?wp|z;rQsA zK&=O~;mSg2loe|FH=F(+YN3G=p|eI}d$zR9OHUQk*t?FM=@UbJ2laAXyJmOrsS96}Z_Z7~qwBhd{i12P(#<8qD-#Bk~mN>uOQ{r@UHsyY^ z#QDL_;SHWtzKz2hoLd97dT#OLHjw~DgrTNF0$PSQ?>@jAdV%2$R}O#khDfBTHOQt& zwv1vEv#LAmB`fzJ9=LYxbWR0~J8in@=?Q^S4e&~wm)$(QJ=;Ii+3vg|;Q0~&TiPk= za1N)wt_B~?!uM4?!|#4f=3T>&dj?ve**ts;j1PFg%YDfC`Ukd}&{hi1CFaKPkry~S z>TE%0N>y&s30(Ct6Z)ukh0x{IO-9lF2A>J83wERErhRQ7o%6cj7rNy#(r``s*$Feu zU;+|+d#2^ul!dFQ`&%=ty$DwguF{QOS)DivjCnf|&)MOStzw7&iX?r;(X0kzHlAC$ zpJorFig&UV4$<&#!pBQ^vxJvL!u|QXg6n{6#D9Urpx-Y&J@{Pd38eS6-~+=?^4%A_ zkZ%M~RTnXU6>P+>>dmr?|O{=wiz(nnIvI7p-=5-H_bBK=-Pic(wRzZbltcl=$% zpDf_3lGvukktvBMN#eyM_UAVR^Avs~gXQ0X-$`D$isCopbrOUdB=t;c3&#;0Tkeq5 z7h3o=1RcHelN4{M6wjC`swKrUlH#9-$j^UADij{yD@oN-d`R_MNu`M3mn2P+q=qED zO1Ep5w5PclRx5drQ9M|69?7J2Wj=#zRm63lxNeKM3~?=txTZdf>soR3Zars7u16); znLW7*{YUnW*#@Rx))TYf55zpbC#H#}KmVa%SDKV_A@Z=ntu?eH|ID|sURzDOkJS4- z0s-_4fXpI4A|SU2$ag}$i|o&TIJgmbk(4tYBH0p^>{e_yOR`mx>|rw*Tk*j=B!8N3 z%4a<}&e%un@sh48lU|5pq$E8gN$2; z%r)tfBFV-{vRsl;dAto2eB)p@)--x+uxgRX9F{3O+F$^|=Ln7BG1TnRjc-WVc3m1H zw0<4OmWPEdhl4$3lQR1K%u=aqaBRu^BdI$LDY@TY{xya4kjU>}D%PFn z5Ixc_ZpDW@?-LNJy!S}@2Fd+pEB!7=5**(v)2ar1NHiy!C|?rIlT7bXi6V`OZzQJ~ zU8EQx@zi*5eI%Z7@{`_;T4IH3iS@cb8yAVy15nyi9`rNnPDv-dtzOctmvr5qM=RZ* zzcH9fe1Cp*uxY6Di}Ik6AT8>lU>jfK?%r@B%_HIU02bXg5Z+{6=XeV?{uc9+IRT zpMtlStGQi z%O_fL84T+2+_GNs>OL4PkIGLrxq^Gpv2;rO-%9+05`Whz@q-(C$CS3PL}GURMath3 z(=2}!qQuLUc&dNj6^R!O7nV388h(8wylkW*-ihs}5l^OF9e8eeQnJm6M5jJq3_5z_ zw~2^v5z%aJwUT6)BzNmT^}Gp7O6>Pn{F#(-Vd19>AH{n1ezA_)h4mu^`aNL~i&BMmzxO8AVtk{y zTt^ae84}H{QgOk8ULO=DJ((@{-s^;E@hWH_>Q(J|ePrBOhhvLFNVoOlX!C*I zS}>LDtUR{x0{p3Y;FBHAV}0=T7kUai<37NSQF&~H*8ae)GOwBbrqF ziLHXyDh56r?Krl$1+NjLVLbZ?nm*erNtGKPBGyYP#dNkxl2Xa$$bp`ss0J(fmG(+J zqnVU`m0xDI%CB4!5B)2NUm~&UKWUlJ|G_hHMMiCD?Qnf%a81NI zHRv|2YXcLmf>tXcuBL}^Jsfe(lgZo8D=ohFkhtzM0j~`_Bd*brm@kSeE#lfCt~12d zoBkiX2BsS~foW2tw7Yg0FR(S#Ga^Wd{wncC{f&4BKRT^7$avBe+%m8iWSJ+gmJ}5N z`R}Kv$l41_e&yf{H1r&BuCMLfn~3ND8d6ah)!Cd_TcEhvHE*0&mC~q33Q$de&hG_O z<}(v|=Pxsv6R!%!5_N2^s8;)ZFX-qUzlr#7N&LAIKbH7WA_>d=y98zbgP_m%OW|Kh zU7M=~>wbO08t`5jD(((F;(lt~ySZEkQ8z7~&z!2&$BBph)yJ)m+8(lOwYy3;4G?i6 zgQ&GC+W-Iaze<7kcG$HG0(R|8j04kNZP)f;c3?JPp#4dC=V-)hWqWhM9|*iJ62Mjd>V+FChMzm{`oi)WM6GJ($lhu{Cz>Y|Lm(Hs*TFQcM-*Nz5k9 z>zKDO+^*1KYwcPJ=3LB3%#SfMF{PNhG3zmpVE%ylJEj`52lFxJ2uA*HBi|xS9!CCt zLpxZ9xeHTrE zGeyhSt|J0sUD$5Y?$CawEzvxfG+ejxf4jC)TdXZo?q%9CeDB1*oOpNPpQeq}MiBoZ zY(K*{4Zl0IoB5SAVz{5mzx=sWOe`_6HhWxrA4lJW#H8eY&VC7YM_*@hd`yxSo7gAL zmgq>*;$of23H@yGePa6B`}DQNBqt^Ii;a&sa-TRn`zFQ3IQu2r6SO|@w!X2B#N@<2{gPsAed9Ez-4P#~5bx~QH_@g!l46tl z#Ml$!5@H?pKJhVe&cwd`Y&Bm}hTkF;k_kT2 z{>(V?l~$$UBXJ~^rfMPw3KVE_DcyA%Ga=HNxJdYDa+DIfu}A7n=oQH~K|#7q!5pQ2 zCCsd|8P8cxLb6>HiPBQ@=l#hP}4V}t*#Kf&j@F&r5KcSowGoiR?+)yxi(?{f>g|DBxeyC^sK-F_ZvGB~OktZ5&n{cmAInKQ?F1e#e#!l|S_=c#WYty0X* z@StU?C*4UK5ZemOt*XsZ3>D{ET++U7Cw%eu#xmngQQZy@F#8bFhnj=RmPsq`hCgx~ONzyxV)R+7Z!z*4sR!vRW`5Ta|5{vQ2&buFH{HGMN??JoNI3+K;5kOiRG11ZspMS6rOZ6W zkh5?FGbfWjNV)|0>-YVqeUGnD_Vl>DeR|t_;`R3Zeh57=OkBrO62VZ)F)?b(f>Vv) zUto*?kFoIFNG#Q)r8xhe%OiOA;3M`PmkECaIY;m_F&U%%*uo@2c?}GEVts!pB*uhO zN^okLF@%~lxK-7r21mYzb}wU3q4pzE%ikQ;hZd=sg>diLYAn1%g~=S`X7D#tY1$R^ z!HC^VH-$DLxGsloCha3FL-;i;S(^kseqwzu;VbkJx3qbw4fzvZBJC^Ex&)7lCtY&+ zB}AM;3!cJQHWobcY0EOBDo}X+97sK(0;jht0#ooY+w25d_yk5IDaTA8T?OvFq4tK` zJI1N;B_H7%GNxq#F_Z6j>x(s7mPo#l{%7|3k#IsOxy;Zmq3?^`v@K$`VbVlO|6MrZ z7a4QEFWl_0J@uESYVg2! zh}nzM#EC0HXET=(P-rZ((8yQ#R>U5`LpXKs|A@bdkzn;*W9Ic;|I_12yc_v9XCF6; zQ_XecE3;!6k7V>R+p}3)5>^QPO5o2c)l6kEaeBv?r`n*Kxt7!x+?xNX#FTlK%$rJp ztWk1l9U5i3n11jRZI!x{V!Fj&aJ|eLm+oY2lm8|BFXF$Hf3YuDIS@BBd_O%{{vvbVTj}pIXO;QcVp^yC$sADT z(DIG=j%M7w3B2U*S~_85+>`c_NlBz9U(3Ab;w6ihFTd%Q#mg_gSU><{32>zpH<6Fn zE>`~%CbUb(WMiaFOi)yd;AUbrnmlFYBY*#@PNoCjZ1J*MlKJ^fs&pPJ?`dl0AS)rW zPbi?)Pgpzk-+9`f%sphjvY7IuF>9AOh^)+H)paGgl;E=rx3qzuVZY6)SDC-uN$YSc z9@bNuDa-C$>MmGzyL<7??)=3|ZePaSP5I5fZRx4L!q*}&WHxoX!s2Fr^A$FdudD(~ z$lIJ{NiFrH5stp}-%j`NkE*Wt)znM>>z!|_UwU@$OTimziY6ZJf4KOWdoF+Qe-;e= z^TU7Y(;Rby_l#|oW72C^C(U-x-?r@J-}aY37r*aO_u)qafuB8k@ZRa$zOH*b;N108 zQu^(qf|vZM!aZZ(A2-eWaNV&L*UtLM!%OPMY;3sDwyAzi@%C>L+v=wO>bd`!b@R^n zTQ0h2U}eI~7fv{D$ms4Rqw)tNPbj=@dBWn?63SMLZmd~bIcnL1PZ`^Pe^trZ8<*-= z)jU1x*80K5gS*q?|NH&Q@%@f2eX=a&%)m2)9k*V3?#z{W|A)PA0gI|?+uj^RG*j}3 zW;r4%l^`lADmoku6_pef(~^N1WONwD8Bj1Q?6tHrm6@3qmKBwjm6eq#rk0f{nU$xC z%FN2Q$gH%?{`+2QFJ=!i()Ygab$#FUf8WxFdmW#3de-ULd-m%6(x&xsFShDBWc1Vf z$Bln?<+PuRVhVn^>F(m9yvIx1m+o8?8u&IoyuZ2Pdq?J)-yS=?`9$fQx8xqS0Da4| z56|1qM)#Mqg%nZR9HM6_MiXttsSZb~-Hkp)hfYy`wtP#8!x&_@iAmnLx6Q(M=UC$y zYuK0M(-I?_{acJ3A$xo*O6Y)#r#J4b$76iX0#YvI$)EZG#x!AUSv8)cI6jKSsGuaL zAm&RI zAe836!h`YE8WJsR@~=tQhl;<9qvoxi=ry$i;o8SF%=nja>CcYhU#>~&AHya&XFH4L zIZd|GJe#Z7UgU&duElDyI2=WJ7U}V6g1Ot4sXwQ$wr;w*fBscDom;nP-mF=0aBxsi zP#}z{<4DZ~YPAxdvi&w0CmGI6UYYXF7MeE7X)m^09QOIPlp?1U_9EwGi`#C=b>Lj& zu-RPac&AKcIj2}=+malPb3z%Gg?!g1CTlsh$=XVT{TS?*oRa>cPHwlQ%;dDqGdXO| znZ@F_4PZpw1OZLW?!#$Rn%cBf?Ib96WU5w?%(c^s)yD#9 zw%3m*>Eb@g16i7f5GOECNVN^NeE8&wHewcvPVg$IPuU+fxn8q` zX>)DP;t95yc2BWQtro%$gM5@TzsOyvce08*$>}!67ICMz?Zvh%x5eqnClj^@+hL@` zgDxq`gVpFa(rvRD-B;R*CtDmPK7Pnu`ayLecp2mZnc4F!j)|CkARTF?TF(AdZLG!a zG>vl3Et+k!a$E}c1Y2>5+bKMbrK2A}XF#E&QnmIV6Q~a;0hA8P1Z9J)AQxz_IaON# zTm-rUQ~_EFS`JzXssyb8Re?5uHi9;RszKX9J3+fZHK2W<{h-63TF?>DG0<^P9q1(J z6zB{{8=a~JgF->AKw+Tvpm0!EkO>qCiURck#exz*>7Y!|bWky<9JCa)0kjWv64ZW7 zsul;z1{H&rgEoR{L1#d%GLRoA925o00A+!4KrYZ7ptYcVpfjMzvB(qT09AlCfNDXl z#vwh3Z5R*C02P21fL4NL%*eHPY*uKJuy37_XSL-yfG&#%JuCe@#a7tqm@%Wcz|H_T zX3WU9c#4&Mu2_NeXyoH?*Qc>ra-jzU&tmtWIH23+DR$fQis@J4#1u0VlA$SI7KB5e zd7G>@hppHq^r9nhHcLprJuUF(_XN6wrd2ZO+_WgPjf0TgxdfbJ>dW8LZ`S%66DM#Te3grkN!cw^jPHVVpCi zeJ=Y2Edaj~F7NQokxISDKy>Tu%bM5Zp64c&m_qZIEJX;~=JyW5@#roL_OidKQ7{}W-CT}qe zJkD1PEhn$YRpzIma!RblCbyWgM0ez*rE578va&{b`>wvX^}f{IjWeV?Q&wfe+i2Bt ziVB@}6J^6=XOHK28$(LHq2ta8n|6&M6ln`BP8@-(O*LM_c#Sq7%Vz9{2Cd|6X`gti zt^LN%v6eY4g%Edp{l>y=!m?&!-Bp;S*j8#UHi)%~fjISo;Wvx=I87FYbv&od&coMd zycQR@ZP<9}!&c2dricg=*lMOMjB`_}&6DT0yX3IdOvxO|DGrOrV+b)>icL{IVM*Ng zpgr`c>2?e~cV0o6ArV3uUR3Df%xD^)I}0{Yz}6oQ2fdeo5_;Y&gTK6LdOvL!{!0?}MrnxYL}oTBA{3hztNwt<51OqOYSydvW;9^Ev( z5uf%0$YTqLcJ9?Wg1FC8do3c{2ajRcZrX()^sgu@`;290I}uraBK4vSV;ie5@?~0L z8xZ-1f#}EQJ#BTOKi60K4+PPjq`O%Qx+z0UGXcbS-1HN9_$2?SAm;4=(Z3L60=Yn4 zL0qU=R@Q^@%RwyjLLF}cGW;JPhA#q<5BgY0+rzqhHIU_517dzpf*9`=5X-k4#PCl* z3=c=6uzg028>!iy`P#UoahlWOBt}idpUV&ica#TzXs7?EajCQlf4kEv?6xan`5wPE zvBas3#VITc`{gOvzho7ZXd~TrZK9=^VO9(DD+m{eI38LM&nay<3l)^Og(r9+ors6D zC2nEE))QqLY0Jg_*{vnHaQ;U6(a3Xji9<^&nTfN%OB;_()VQL#TBTULA{*6fp~K7Gw(kT7{eX4?f4`vpdQZ zPx?frv%)2^(bId~l8>i8hUCZdtk;j)1wI}0`lx)od}Mx%<@FnlTv^tU;Fb&IvkA&B zb+1IaS*p>Zj1t+#NpQ~uQm;dqACH-lbs2}c&jqH!KMyGRQ&UK7n##wG)XGQY$upzM zm-;r9r|3$Nze8^ynRf~5${bZ0qz+M@TUB|A^mD8#7qyHkhAN}4UlM9eld0oaU|+PC z6@RHmrlE`fsQY0!|C#E2l*SpKHNwB4$gvQAmA;vp)Mz{n5=sQ{GEKml1{4MA1BwO3 zf#N|4pj1!>C<~MWa)63K<)B5NC7?S%6`-Y{<)D?IO3)fm6=*GJJ!m6nJ7^b(@%Moa zgN}fXgHD08i8xDv!a-d@CQu(xA}B!AUehvQ&jL*cSwRj^F=zp35ojrB4QK;sC+INf zI7rLF850x+3I~}$QJ`2*JSY*A4$1^&gK|JF&>~O;i1Al~sz4h++d=z5$3SO5VUxfY zWCF#3rh{A{X-w!N-+xh9;pIPH|HfVESWC|LZxQD3hW~uyFAVVh3;3JH$l;~{@4vu+ zzxPk2H`WQev47!TXd|_68$kZC^&#!G_OMIeFxZuivHoU-^=J*_|GnCJV})s6yR-!a z=z{RS8qV!`H3t5kRQv}3?oI~o_=QSx@VtT z|NILtZg}bCS2n)-+UuL%*u15B>zmuQ?|AF&o$tK+-mdp|@2UA>EI9LB~Mxx!8Yzj)7wHpl?Q6K3ge=z42!$^mSq1SETW&xC1*r?s%QzDIcG0H+-tn z^m7&N*tx^ybHc_rG+qv+t&q=j_&k$2^NEanrqgu3eD{`b$u@j4scIm3{X2ZPNB1BX zmX0+va^?wCnx^U}pTzSmU+%Q|28nv=>-!9=KiD%`gEeq2c z-%^bRH}Cr$`C<(4oG9Pq@a-Ad*L-(~b@zQX+3*Q&G)5QSp_`4reEWq@FL|zIpR*R{ zmbY=fzBT4M*_3p?ZO*r0OaDbavJcg}e|&dI)%e_UsrHs{ph}%qTgVwzpBA@mqIgn* zXO7hI(BB^-NNWwc(pH>O;&$USSkb9h@A3E@x|SGtfAg)kPLAyQwAhj zOs&4~iA#<<4qP7g;ZfuncJrmvEaRQ_%dZRX`ekPD6>*>T{h@be-h*@Ad7|UDqwk7} z3GGzm9M#3ynXR4JzgObA;7s?Wr$72&>1D6KKP`V*%&6z(lKMd3f2}zZ~Nn9O~i!Es5YuLYx;hBuZLD0o7utHqQj~y zPV}GC?yB_7yC3~JZNiORSb^6|m;M%5U3~E!+BJ3SOWr#4RQp#CeEGS%jV)tL)Vz+h zzZSlEPs&w$-nqZ`q-VbTxcAYjl}|iB9O<;g(KW|U)-CCAyk!emHbw+Sr0tPaOL5p8Fy{Z+E;Pws-1=2Y*Of`0}=Q1G9g+s^Gw*J?CD3=bUkn zAnPAT|8ez+HtVJ=z38QKE&rvUK$5Q+3xw10p z;bx)lj0kzH^4QKj-%P6h{fie;1Abh8gDKL})BVB1(;JUG+pI(L#N1)?$6vE%_kg4? z#}^j1>3(9s@^!>6A=M5Wm>9f(@t~AB3TlT^3-)}qg{%7NEsV*}9)0=9k6&~;@kaiD@+BJvkLa^; z%RQg1?Hp=7xo_O8zXrCRHF;+HR}Uq=JM8k(f`|IgKCt7tUpCpTy-=ScCufxZ@!SWK z{#j)j{m`i?4?NTI?6U#aJ<(^h{r)YNUeb)^N z!{^pr*kVc5Z^dEVhMu`7{p)pi}dG+hEaY0Lu=*oiC-|n04D7ya0 zL*E=2c6xPD?!2qwaO>;TD?ZEqEMZUfUn3(rESOR?wd9*#6KBrrl=sTf?`O39^DFz1 zV*>_OHmh3vYQJAo+H~uFDCO$?%YM1|nMXUD3pfW`&tAW|Z}2-~*8lUDFAk1deYfXO ziz6$47(esEM>;(9@k=lL+Im^M=bkr5eZT90D`wnpj&Jkpi}#q?4=(-S^W+bxm?76GX40+)D zo*iPZ$he?&(CT3cXQN&_vt(X&%EKGi92xF;^Tfyn%X5qGZqvQu7`#mo^Wi!3tx}>qf_&~PmJCC#V60S9RJVU zJFYwa>hA7|`TMkgbXa|~&`RzkE1n_}t2G`?kM6KjY+pn4dQO zeAk6-+S!+8c≫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 TPMrS8{;KO%zYnXI_xS$+(6``E literal 0 HcmV?d00001 diff --git a/lib/rarfile/__init__.py b/lib/rarfile/__init__.py new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/lib/rarfile/__init__.py @@ -0,0 +1 @@ + diff --git a/lib/rarfile/rarfile.py b/lib/rarfile/rarfile.py new file mode 100644 index 00000000..c6e0d447 --- /dev/null +++ b/lib/rarfile/rarfile.py @@ -0,0 +1,2932 @@ +# rarfile.py +# +# Copyright (c) 2005-2016 Marko Kreen +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +r"""RAR archive reader. + +This is Python module for Rar archive reading. The interface +is made as :mod:`zipfile`-like as possible. + +Basic logic: + - Parse archive structure with Python. + - Extract non-compressed files with Python + - Extract compressed files with unrar. + - Optionally write compressed data to temp file to speed up unrar, + otherwise it needs to scan whole archive on each execution. + +Example:: + + import rarfile + + rf = rarfile.RarFile('myarchive.rar') + for f in rf.infolist(): + print f.filename, f.file_size + if f.filename == 'README': + print(rf.read(f)) + +Archive files can also be accessed via file-like object returned +by :meth:`RarFile.open`:: + + import rarfile + + with rarfile.RarFile('archive.rar') as rf: + with rf.open('README') as f: + for ln in f: + print(ln.strip()) + +There are few module-level parameters to tune behaviour, +here they are with defaults, and reason to change it:: + + import rarfile + + # Set to full path of unrar.exe if it is not in PATH + rarfile.UNRAR_TOOL = "unrar" + + # Set to '\\' to be more compatible with old rarfile + rarfile.PATH_SEP = '/' + +For more details, refer to source. + +""" + +from __future__ import division, print_function + +## +## Imports and compat - support both Python 2.x and 3.x +## + +import sys +import os +import errno +import struct + +from struct import pack, unpack, Struct +from binascii import crc32, hexlify +from tempfile import mkstemp +from subprocess import Popen, PIPE, STDOUT +from io import RawIOBase +from hashlib import sha1, sha256 +from hmac import HMAC +from datetime import datetime, timedelta, tzinfo + +# fixed offset timezone, for UTC +try: + from datetime import timezone +except ImportError: + class timezone(tzinfo): + """Compat timezone.""" + __slots__ = ('_ofs', '_name') + _DST = timedelta(0) + + def __init__(self, offset, name): + super(timezone, self).__init__() + self._ofs, self._name = offset, name + + def utcoffset(self, dt): + return self._ofs + + def tzname(self, dt): + return self._name + + def dst(self, dt): + return self._DST + +# only needed for encryped headers +try: + try: + from cryptography.hazmat.primitives.ciphers import algorithms, modes, Cipher + from cryptography.hazmat.backends import default_backend + from cryptography.hazmat.primitives import hashes + from cryptography.hazmat.primitives.kdf import pbkdf2 + + class AES_CBC_Decrypt(object): + """Decrypt API""" + def __init__(self, key, iv): + ciph = Cipher(algorithms.AES(key), modes.CBC(iv), default_backend()) + self.decrypt = ciph.decryptor().update + + def pbkdf2_sha256(password, salt, iters): + """PBKDF2 with HMAC-SHA256""" + ctx = pbkdf2.PBKDF2HMAC(hashes.SHA256(), 32, salt, iters, default_backend()) + return ctx.derive(password) + + except ImportError: + from Crypto.Cipher import AES + from Crypto.Protocol import KDF + + class AES_CBC_Decrypt(object): + """Decrypt API""" + def __init__(self, key, iv): + self.decrypt = AES.new(key, AES.MODE_CBC, iv).decrypt + + def pbkdf2_sha256(password, salt, iters): + """PBKDF2 with HMAC-SHA256""" + return KDF.PBKDF2(password, salt, 32, iters, hmac_sha256) + + _have_crypto = 1 +except ImportError: + _have_crypto = 0 + +try: + from pyblake2 import blake2s + _have_blake2 = True +except ImportError: + _have_blake2 = False + +# compat with 2.x +if sys.hexversion < 0x3000000: + def rar_crc32(data, prev=0): + """CRC32 with unsigned values. + """ + if (prev > 0) and (prev & 0x80000000): + prev -= (1 << 32) + res = crc32(data, prev) + if res < 0: + res += (1 << 32) + return res + tohex = hexlify + _byte_code = ord +else: # pragma: no cover + def tohex(data): + """Return hex string.""" + return hexlify(data).decode('ascii') + rar_crc32 = crc32 + unicode = str + _byte_code = int # noqa + + +__version__ = '3.0' + +# export only interesting items +__all__ = ['is_rarfile', 'RarInfo', 'RarFile', 'RarExtFile'] + +## +## Module configuration. Can be tuned after importing. +## + +#: default fallback charset +DEFAULT_CHARSET = "windows-1252" + +#: list of encodings to try, with fallback to DEFAULT_CHARSET if none succeed +TRY_ENCODINGS = ('utf8', 'utf-16le') + +#: 'unrar', 'rar' or full path to either one +UNRAR_TOOL = "unrar" + +#: Command line args to use for opening file for reading. +OPEN_ARGS = ('p', '-inul') + +#: Command line args to use for extracting file to disk. +EXTRACT_ARGS = ('x', '-y', '-idq') + +#: args for testrar() +TEST_ARGS = ('t', '-idq') + +# +# Allow use of tool that is not compatible with unrar. +# +# By default use 'bsdtar' which is 'tar' program that +# sits on top of libarchive. +# +# Problems with libarchive RAR backend: +# - Does not support solid archives. +# - Does not support password-protected archives. +# + +ALT_TOOL = 'bsdtar' +ALT_OPEN_ARGS = ('-x', '--to-stdout', '-f') +ALT_EXTRACT_ARGS = ('-x', '-f') +ALT_TEST_ARGS = ('-t', '-f') +ALT_CHECK_ARGS = ('--help',) + +#: whether to speed up decompression by using tmp archive +USE_EXTRACT_HACK = 1 + +#: limit the filesize for tmp archive usage +HACK_SIZE_LIMIT = 20 * 1024 * 1024 + +#: Separator for path name components. RAR internally uses '\\'. +#: Use '/' to be similar with zipfile. +PATH_SEP = '/' + +## +## rar constants +## + +# block types +RAR_BLOCK_MARK = 0x72 # r +RAR_BLOCK_MAIN = 0x73 # s +RAR_BLOCK_FILE = 0x74 # t +RAR_BLOCK_OLD_COMMENT = 0x75 # u +RAR_BLOCK_OLD_EXTRA = 0x76 # v +RAR_BLOCK_OLD_SUB = 0x77 # w +RAR_BLOCK_OLD_RECOVERY = 0x78 # x +RAR_BLOCK_OLD_AUTH = 0x79 # y +RAR_BLOCK_SUB = 0x7a # z +RAR_BLOCK_ENDARC = 0x7b # { + +# flags for RAR_BLOCK_MAIN +RAR_MAIN_VOLUME = 0x0001 +RAR_MAIN_COMMENT = 0x0002 +RAR_MAIN_LOCK = 0x0004 +RAR_MAIN_SOLID = 0x0008 +RAR_MAIN_NEWNUMBERING = 0x0010 +RAR_MAIN_AUTH = 0x0020 +RAR_MAIN_RECOVERY = 0x0040 +RAR_MAIN_PASSWORD = 0x0080 +RAR_MAIN_FIRSTVOLUME = 0x0100 +RAR_MAIN_ENCRYPTVER = 0x0200 + +# flags for RAR_BLOCK_FILE +RAR_FILE_SPLIT_BEFORE = 0x0001 +RAR_FILE_SPLIT_AFTER = 0x0002 +RAR_FILE_PASSWORD = 0x0004 +RAR_FILE_COMMENT = 0x0008 +RAR_FILE_SOLID = 0x0010 +RAR_FILE_DICTMASK = 0x00e0 +RAR_FILE_DICT64 = 0x0000 +RAR_FILE_DICT128 = 0x0020 +RAR_FILE_DICT256 = 0x0040 +RAR_FILE_DICT512 = 0x0060 +RAR_FILE_DICT1024 = 0x0080 +RAR_FILE_DICT2048 = 0x00a0 +RAR_FILE_DICT4096 = 0x00c0 +RAR_FILE_DIRECTORY = 0x00e0 +RAR_FILE_LARGE = 0x0100 +RAR_FILE_UNICODE = 0x0200 +RAR_FILE_SALT = 0x0400 +RAR_FILE_VERSION = 0x0800 +RAR_FILE_EXTTIME = 0x1000 +RAR_FILE_EXTFLAGS = 0x2000 + +# flags for RAR_BLOCK_ENDARC +RAR_ENDARC_NEXT_VOLUME = 0x0001 +RAR_ENDARC_DATACRC = 0x0002 +RAR_ENDARC_REVSPACE = 0x0004 +RAR_ENDARC_VOLNR = 0x0008 + +# flags common to all blocks +RAR_SKIP_IF_UNKNOWN = 0x4000 +RAR_LONG_BLOCK = 0x8000 + +# Host OS types +RAR_OS_MSDOS = 0 +RAR_OS_OS2 = 1 +RAR_OS_WIN32 = 2 +RAR_OS_UNIX = 3 +RAR_OS_MACOS = 4 +RAR_OS_BEOS = 5 + +# Compression methods - '0'..'5' +RAR_M0 = 0x30 +RAR_M1 = 0x31 +RAR_M2 = 0x32 +RAR_M3 = 0x33 +RAR_M4 = 0x34 +RAR_M5 = 0x35 + +# +# RAR5 constants +# + +RAR5_BLOCK_MAIN = 1 +RAR5_BLOCK_FILE = 2 +RAR5_BLOCK_SERVICE = 3 +RAR5_BLOCK_ENCRYPTION = 4 +RAR5_BLOCK_ENDARC = 5 + +RAR5_BLOCK_FLAG_EXTRA_DATA = 0x01 +RAR5_BLOCK_FLAG_DATA_AREA = 0x02 +RAR5_BLOCK_FLAG_SKIP_IF_UNKNOWN = 0x04 +RAR5_BLOCK_FLAG_SPLIT_BEFORE = 0x08 +RAR5_BLOCK_FLAG_SPLIT_AFTER = 0x10 +RAR5_BLOCK_FLAG_DEPENDS_PREV = 0x20 +RAR5_BLOCK_FLAG_KEEP_WITH_PARENT = 0x40 + +RAR5_MAIN_FLAG_ISVOL = 0x01 +RAR5_MAIN_FLAG_HAS_VOLNR = 0x02 +RAR5_MAIN_FLAG_SOLID = 0x04 +RAR5_MAIN_FLAG_RECOVERY = 0x08 +RAR5_MAIN_FLAG_LOCKED = 0x10 + +RAR5_FILE_FLAG_ISDIR = 0x01 +RAR5_FILE_FLAG_HAS_MTIME = 0x02 +RAR5_FILE_FLAG_HAS_CRC32 = 0x04 +RAR5_FILE_FLAG_UNKNOWN_SIZE = 0x08 + +RAR5_COMPR_SOLID = 0x40 + +RAR5_ENC_FLAG_HAS_CHECKVAL = 0x01 + +RAR5_ENDARC_FLAG_NEXT_VOL = 0x01 + +RAR5_XFILE_ENCRYPTION = 1 +RAR5_XFILE_HASH = 2 +RAR5_XFILE_TIME = 3 +RAR5_XFILE_VERSION = 4 +RAR5_XFILE_REDIR = 5 +RAR5_XFILE_OWNER = 6 +RAR5_XFILE_SERVICE = 7 + +RAR5_XTIME_UNIXTIME = 0x01 +RAR5_XTIME_HAS_MTIME = 0x02 +RAR5_XTIME_HAS_CTIME = 0x04 +RAR5_XTIME_HAS_ATIME = 0x08 + +RAR5_XENC_CIPHER_AES256 = 0 + +RAR5_XENC_CHECKVAL = 0x01 +RAR5_XENC_TWEAKED = 0x02 + +RAR5_XHASH_BLAKE2SP = 0 + +RAR5_XREDIR_UNIX_SYMLINK = 1 +RAR5_XREDIR_WINDOWS_SYMLINK = 2 +RAR5_XREDIR_WINDOWS_JUNCTION = 3 +RAR5_XREDIR_HARD_LINK = 4 +RAR5_XREDIR_FILE_COPY = 5 + +RAR5_XREDIR_ISDIR = 0x01 + +RAR5_XOWNER_UNAME = 0x01 +RAR5_XOWNER_GNAME = 0x02 +RAR5_XOWNER_UID = 0x04 +RAR5_XOWNER_GID = 0x08 + +RAR5_OS_WINDOWS = 0 +RAR5_OS_UNIX = 1 + +## +## internal constants +## + +RAR_ID = b"Rar!\x1a\x07\x00" +RAR5_ID = b"Rar!\x1a\x07\x01\x00" +ZERO = b'\0' +EMPTY = b'' +UTC = timezone(timedelta(0), 'UTC') +BSIZE = 32 * 1024 + +def _get_rar_version(xfile): + '''Check quickly whether file is rar archive. + ''' + with XFile(xfile) as fd: + buf = fd.read(len(RAR5_ID)) + if buf.startswith(RAR_ID): + return 3 + elif buf.startswith(RAR5_ID): + return 5 + return 0 + +## +## Public interface +## + +def is_rarfile(xfile): + '''Check quickly whether file is rar archive. + ''' + return _get_rar_version(xfile) > 0 + +class Error(Exception): + """Base class for rarfile errors.""" + +class BadRarFile(Error): + """Incorrect data in archive.""" + +class NotRarFile(Error): + """The file is not RAR archive.""" + +class BadRarName(Error): + """Cannot guess multipart name components.""" + +class NoRarEntry(Error): + """File not found in RAR""" + +class PasswordRequired(Error): + """File requires password""" + +class NeedFirstVolume(Error): + """Need to start from first volume.""" + +class NoCrypto(Error): + """Cannot parse encrypted headers - no crypto available.""" + +class RarExecError(Error): + """Problem reported by unrar/rar.""" + +class RarWarning(RarExecError): + """Non-fatal error""" + +class RarFatalError(RarExecError): + """Fatal error""" + +class RarCRCError(RarExecError): + """CRC error during unpacking""" + +class RarLockedArchiveError(RarExecError): + """Must not modify locked archive""" + +class RarWriteError(RarExecError): + """Write error""" + +class RarOpenError(RarExecError): + """Open error""" + +class RarUserError(RarExecError): + """User error""" + +class RarMemoryError(RarExecError): + """Memory error""" + +class RarCreateError(RarExecError): + """Create error""" + +class RarNoFilesError(RarExecError): + """No files that match pattern were found""" + +class RarUserBreak(RarExecError): + """User stop""" + +class RarWrongPassword(RarExecError): + """Incorrect password""" + +class RarUnknownError(RarExecError): + """Unknown exit code""" + +class RarSignalExit(RarExecError): + """Unrar exited with signal""" + +class RarCannotExec(RarExecError): + """Executable not found.""" + + +class RarInfo(object): + r'''An entry in rar archive. + + RAR3 extended timestamps are :class:`datetime.datetime` objects without timezone. + RAR5 extended timestamps are :class:`datetime.datetime` objects with UTC timezone. + + Attributes: + + filename + File name with relative path. + Path separator is '/'. Always unicode string. + + date_time + File modification timestamp. As tuple of (year, month, day, hour, minute, second). + RAR5 allows archives where it is missing, it's None then. + + file_size + Uncompressed size. + + compress_size + Compressed size. + + compress_type + Compression method: one of :data:`RAR_M0` .. :data:`RAR_M5` constants. + + extract_version + Minimal Rar version needed for decompressing. As (major*10 + minor), + so 2.9 is 29. + + RAR3: 10, 20, 29 + + RAR5 does not have such field in archive, it's simply set to 50. + + host_os + Host OS type, one of RAR_OS_* constants. + + RAR3: :data:`RAR_OS_WIN32`, :data:`RAR_OS_UNIX`, :data:`RAR_OS_MSDOS`, + :data:`RAR_OS_OS2`, :data:`RAR_OS_BEOS`. + + RAR5: :data:`RAR_OS_WIN32`, :data:`RAR_OS_UNIX`. + + mode + File attributes. May be either dos-style or unix-style, depending on host_os. + + mtime + File modification time. Same value as :attr:`date_time` + but as :class:`datetime.datetime` object with extended precision. + + ctime + Optional time field: creation time. As :class:`datetime.datetime` object. + + atime + Optional time field: last access time. As :class:`datetime.datetime` object. + + arctime + Optional time field: archival time. As :class:`datetime.datetime` object. + (RAR3-only) + + CRC + CRC-32 of uncompressed file, unsigned int. + + RAR5: may be None. + + blake2sp_hash + Blake2SP hash over decompressed data. (RAR5-only) + + comment + Optional file comment field. Unicode string. (RAR3-only) + + file_redir + If not None, file is link of some sort. Contains tuple of (type, flags, target). + (RAR5-only) + + Type is one of constants: + + :data:`RAR5_XREDIR_UNIX_SYMLINK` + unix symlink to target. + :data:`RAR5_XREDIR_WINDOWS_SYMLINK` + windows symlink to target. + :data:`RAR5_XREDIR_WINDOWS_JUNCTION` + windows junction. + :data:`RAR5_XREDIR_HARD_LINK` + hard link to target. + :data:`RAR5_XREDIR_FILE_COPY` + current file is copy of another archive entry. + + Flags may contain :data:`RAR5_XREDIR_ISDIR` bit. + + volume + Volume nr, starting from 0. + + volume_file + Volume file name, where file starts. + + ''' + + # zipfile-compatible fields + filename = None + file_size = None + compress_size = None + date_time = None + comment = None + CRC = None + volume = None + orig_filename = None + + # optional extended time fields, datetime() objects. + mtime = None + ctime = None + atime = None + + extract_version = None + mode = None + host_os = None + compress_type = None + + # rar3-only fields + comment = None + arctime = None + + # rar5-only fields + blake2sp_hash = None + file_redir = None + + # internal fields + flags = 0 + type = None + + def isdir(self): + """Returns True if entry is a directory. + """ + if self.type == RAR_BLOCK_FILE: + return (self.flags & RAR_FILE_DIRECTORY) == RAR_FILE_DIRECTORY + return False + + def needs_password(self): + """Returns True if data is stored password-protected. + """ + if self.type == RAR_BLOCK_FILE: + return (self.flags & RAR_FILE_PASSWORD) > 0 + return False + + +class RarFile(object): + '''Parse RAR structure, provide access to files in archive. + ''' + + #: Archive comment. Unicode string or None. + comment = None + + def __init__(self, rarfile, mode="r", charset=None, info_callback=None, + crc_check=True, errors="stop"): + """Open and parse a RAR archive. + + Parameters: + + rarfile + archive file name + mode + only 'r' is supported. + charset + fallback charset to use, if filenames are not already Unicode-enabled. + info_callback + debug callback, gets to see all archive entries. + crc_check + set to False to disable CRC checks + errors + Either "stop" to quietly stop parsing on errors, + or "strict" to raise errors. Default is "stop". + """ + self._rarfile = rarfile + self._charset = charset or DEFAULT_CHARSET + self._info_callback = info_callback + self._crc_check = crc_check + self._password = None + self._file_parser = None + + if errors == "stop": + self._strict = False + elif errors == "strict": + self._strict = True + else: + raise ValueError("Invalid value for 'errors' parameter.") + + if mode != "r": + raise NotImplementedError("RarFile supports only mode=r") + + self._parse() + + def __enter__(self): + return self + + def __exit__(self, typ, value, traceback): + self.close() + + def setpassword(self, password): + '''Sets the password to use when extracting.''' + self._password = password + if self._file_parser: + if self._file_parser.has_header_encryption(): + self._file_parser = None + if not self._file_parser: + self._parse() + else: + self._file_parser.setpassword(self._password) + + def needs_password(self): + '''Returns True if any archive entries require password for extraction.''' + return self._file_parser.needs_password() + + def namelist(self): + '''Return list of filenames in archive.''' + return [f.filename for f in self.infolist()] + + def infolist(self): + '''Return RarInfo objects for all files/directories in archive.''' + return self._file_parser.infolist() + + def volumelist(self): + '''Returns filenames of archive volumes. + + In case of single-volume archive, the list contains + just the name of main archive file. + ''' + return self._file_parser.volumelist() + + def getinfo(self, fname): + '''Return RarInfo for file. + ''' + return self._file_parser.getinfo(fname) + + def open(self, fname, mode='r', psw=None): + '''Returns file-like object (:class:`RarExtFile`), + from where the data can be read. + + The object implements :class:`io.RawIOBase` interface, so it can + be further wrapped with :class:`io.BufferedReader` + and :class:`io.TextIOWrapper`. + + On older Python where io module is not available, it implements + only .read(), .seek(), .tell() and .close() methods. + + The object is seekable, although the seeking is fast only on + uncompressed files, on compressed files the seeking is implemented + by reading ahead and/or restarting the decompression. + + Parameters: + + fname + file name or RarInfo instance. + mode + must be 'r' + psw + password to use for extracting. + ''' + + if mode != 'r': + raise NotImplementedError("RarFile.open() supports only mode=r") + + # entry lookup + inf = self.getinfo(fname) + if inf.isdir(): + raise TypeError("Directory does not have any data: " + inf.filename) + + # check password + if inf.needs_password(): + psw = psw or self._password + if psw is None: + raise PasswordRequired("File %s requires password" % inf.filename) + else: + psw = None + + return self._file_parser.open(inf, psw) + + def read(self, fname, psw=None): + """Return uncompressed data for archive entry. + + For longer files using :meth:`RarFile.open` may be better idea. + + Parameters: + + fname + filename or RarInfo instance + psw + password to use for extracting. + """ + + with self.open(fname, 'r', psw) as f: + return f.read() + + def close(self): + """Release open resources.""" + pass + + def printdir(self): + """Print archive file list to stdout.""" + for f in self.infolist(): + print(f.filename) + + def extract(self, member, path=None, pwd=None): + """Extract single file into current directory. + + Parameters: + + member + filename or :class:`RarInfo` instance + path + optional destination path + pwd + optional password to use + """ + if isinstance(member, RarInfo): + fname = member.filename + else: + fname = member + self._extract([fname], path, pwd) + + def extractall(self, path=None, members=None, pwd=None): + """Extract all files into current directory. + + Parameters: + + path + optional destination path + members + optional filename or :class:`RarInfo` instance list to extract + pwd + optional password to use + """ + fnlist = [] + if members is not None: + for m in members: + if isinstance(m, RarInfo): + fnlist.append(m.filename) + else: + fnlist.append(m) + self._extract(fnlist, path, pwd) + + def testrar(self): + """Let 'unrar' test the archive. + """ + cmd = [UNRAR_TOOL] + list(TEST_ARGS) + add_password_arg(cmd, self._password) + cmd.append('--') + with XTempFile(self._rarfile) as rarfile: + cmd.append(rarfile) + p = custom_popen(cmd) + output = p.communicate()[0] + check_returncode(p, output) + + def strerror(self): + """Return error string if parsing failed, + or None if no problems. + """ + if not self._file_parser: + return "Not a RAR file" + return self._file_parser.strerror() + + ## + ## private methods + ## + + def _parse(self): + ver = _get_rar_version(self._rarfile) + if ver == 3: + p3 = RAR3Parser(self._rarfile, self._password, self._crc_check, + self._charset, self._strict, self._info_callback) + self._file_parser = p3 # noqa + elif ver == 5: + p5 = RAR5Parser(self._rarfile, self._password, self._crc_check, + self._charset, self._strict, self._info_callback) + self._file_parser = p5 # noqa + else: + raise BadRarFile("Not a RAR file") + + self._file_parser.parse() + self.comment = self._file_parser.comment + + # call unrar to extract a file + def _extract(self, fnlist, path=None, psw=None): + cmd = [UNRAR_TOOL] + list(EXTRACT_ARGS) + + # pasoword + psw = psw or self._password + add_password_arg(cmd, psw) + cmd.append('--') + + # rar file + with XTempFile(self._rarfile) as rarfn: + cmd.append(rarfn) + + # file list + for fn in fnlist: + if os.sep != PATH_SEP: + fn = fn.replace(PATH_SEP, os.sep) + cmd.append(fn) + + # destination path + if path is not None: + cmd.append(path + os.sep) + + # call + p = custom_popen(cmd) + output = p.communicate()[0] + check_returncode(p, output) + +# +# File format parsing +# + +class CommonParser(object): + """Shared parser parts.""" + _main = None + _hdrenc_main = None + _needs_password = False + _fd = None + _expect_sig = None + _parse_error = None + _password = None + comment = None + + def __init__(self, rarfile, password, crc_check, charset, strict, info_cb): + self._rarfile = rarfile + self._password = password + self._crc_check = crc_check + self._charset = charset + self._strict = strict + self._info_callback = info_cb + self._info_list = [] + self._info_map = {} + self._vol_list = [] + + def has_header_encryption(self): + """Returns True if headers are encrypted + """ + if self._hdrenc_main: + return True + if self._main: + if self._main.flags & RAR_MAIN_PASSWORD: + return True + return False + + def setpassword(self, psw): + """Set cached password.""" + self._password = psw + + def volumelist(self): + """Volume files""" + return self._vol_list + + def needs_password(self): + """Is password required""" + return self._needs_password + + def strerror(self): + """Last error""" + return self._parse_error + + def infolist(self): + """List of RarInfo records. + """ + return self._info_list + + def getinfo(self, fname): + """Return RarInfo for filename + """ + # accept both ways here + if PATH_SEP == '/': + fname2 = fname.replace("\\", "/") + else: + fname2 = fname.replace("/", "\\") + + try: + return self._info_map[fname] + except KeyError: + try: + return self._info_map[fname2] + except KeyError: + raise NoRarEntry("No such file: %s" % fname) + + # read rar + def parse(self): + """Process file.""" + self._fd = None + try: + self._parse_real() + finally: + if self._fd: + self._fd.close() + self._fd = None + + def _parse_real(self): + fd = XFile(self._rarfile) + self._fd = fd + sig = fd.read(len(self._expect_sig)) + if sig != self._expect_sig: + if isinstance(self._rarfile, (str, unicode)): + raise NotRarFile("Not a Rar archive: {}".format(self._rarfile)) + raise NotRarFile("Not a Rar archive") + + volume = 0 # first vol (.rar) is 0 + more_vols = False + endarc = False + volfile = self._rarfile + self._vol_list = [self._rarfile] + while 1: + if endarc: + h = None # don't read past ENDARC + else: + h = self._parse_header(fd) + if not h: + if more_vols: + volume += 1 + fd.close() + try: + volfile = self._next_volname(volfile) + fd = XFile(volfile) + except IOError: + self._set_error("Cannot open next volume: %s", volfile) + break + self._fd = fd + sig = fd.read(len(self._expect_sig)) + if sig != self._expect_sig: + self._set_error("Invalid volume sig: %s", volfile) + break + more_vols = False + endarc = False + self._vol_list.append(volfile) + continue + break + h.volume = volume + h.volume_file = volfile + + if h.type == RAR_BLOCK_MAIN and not self._main: + self._main = h + if h.flags & RAR_MAIN_NEWNUMBERING: + # RAR 2.x does not set FIRSTVOLUME, + # so check it only if NEWNUMBERING is used + if (h.flags & RAR_MAIN_FIRSTVOLUME) == 0: + raise NeedFirstVolume("Need to start from first volume") + if h.flags & RAR_MAIN_PASSWORD: + self._needs_password = True + if not self._password: + break + elif h.type == RAR_BLOCK_ENDARC: + more_vols = (h.flags & RAR_ENDARC_NEXT_VOLUME) > 0 + endarc = True + elif h.type == RAR_BLOCK_FILE: + # RAR 2.x does not write RAR_BLOCK_ENDARC + if h.flags & RAR_FILE_SPLIT_AFTER: + more_vols = True + # RAR 2.x does not set RAR_MAIN_FIRSTVOLUME + if volume == 0 and h.flags & RAR_FILE_SPLIT_BEFORE: + raise NeedFirstVolume("Need to start from first volume") + + if h.needs_password(): + self._needs_password = True + + # store it + self.process_entry(fd, h) + + if self._info_callback: + self._info_callback(h) + + # go to next header + if h.add_size > 0: + fd.seek(h.data_offset + h.add_size, 0) + + def process_entry(self, fd, item): + """Examine item, add into lookup cache.""" + raise NotImplementedError() + + def _decrypt_header(self, fd): + raise NotImplementedError('_decrypt_header') + + def _parse_block_header(self, fd): + raise NotImplementedError('_parse_block_header') + + def _open_hack(self, inf, psw): + raise NotImplementedError('_open_hack') + + # read single header + def _parse_header(self, fd): + try: + # handle encrypted headers + if (self._main and self._main.flags & RAR_MAIN_PASSWORD) or self._hdrenc_main: + if not self._password: + return + fd = self._decrypt_header(fd) + + # now read actual header + return self._parse_block_header(fd) + except struct.error: + self._set_error('Broken header in RAR file') + return None + + # given current vol name, construct next one + def _next_volname(self, volfile): + if is_filelike(volfile): + raise IOError("Working on single FD") + if self._main.flags & RAR_MAIN_NEWNUMBERING: + return _next_newvol(volfile) + return _next_oldvol(volfile) + + def _set_error(self, msg, *args): + if args: + msg = msg % args + self._parse_error = msg + if self._strict: + raise BadRarFile(msg) + + def open(self, inf, psw): + """Return stream object for file data.""" + + if inf.file_redir: + # cannot leave to unrar as it expects copied file to exist + if inf.file_redir[0] in (RAR5_XREDIR_FILE_COPY, RAR5_XREDIR_HARD_LINK): + inf = self.getinfo(inf.file_redir[2]) + if not inf: + raise BadRarFile('cannot find copied file') + + if inf.flags & RAR_FILE_SPLIT_BEFORE: + raise NeedFirstVolume("Partial file, please start from first volume: " + inf.filename) + + # is temp write usable? + use_hack = 1 + if not self._main: + use_hack = 0 + elif self._main._must_disable_hack(): + use_hack = 0 + elif inf._must_disable_hack(): + use_hack = 0 + elif is_filelike(self._rarfile): + pass + elif inf.file_size > HACK_SIZE_LIMIT: + use_hack = 0 + elif not USE_EXTRACT_HACK: + use_hack = 0 + + # now extract + if inf.compress_type == RAR_M0 and (inf.flags & RAR_FILE_PASSWORD) == 0 and inf.file_redir is None: + return self._open_clear(inf) + elif use_hack: + return self._open_hack(inf, psw) + elif is_filelike(self._rarfile): + return self._open_unrar_membuf(self._rarfile, inf, psw) + else: + return self._open_unrar(self._rarfile, inf, psw) + + def _open_clear(self, inf): + return DirectReader(self, inf) + + def _open_hack_core(self, inf, psw, prefix, suffix): + + size = inf.compress_size + inf.header_size + rf = XFile(inf.volume_file, 0) + rf.seek(inf.header_offset) + + tmpfd, tmpname = mkstemp(suffix='.rar') + tmpf = os.fdopen(tmpfd, "wb") + + try: + tmpf.write(prefix) + while size > 0: + if size > BSIZE: + buf = rf.read(BSIZE) + else: + buf = rf.read(size) + if not buf: + raise BadRarFile('read failed: ' + inf.filename) + tmpf.write(buf) + size -= len(buf) + tmpf.write(suffix) + tmpf.close() + rf.close() + except: + rf.close() + tmpf.close() + os.unlink(tmpname) + raise + + return self._open_unrar(tmpname, inf, psw, tmpname) + + # write in-memory archive to temp file - needed for solid archives + def _open_unrar_membuf(self, memfile, inf, psw): + tmpname = membuf_tempfile(memfile) + return self._open_unrar(tmpname, inf, psw, tmpname, force_file=True) + + # extract using unrar + def _open_unrar(self, rarfile, inf, psw=None, tmpfile=None, force_file=False): + cmd = [UNRAR_TOOL] + list(OPEN_ARGS) + add_password_arg(cmd, psw) + cmd.append("--") + cmd.append(rarfile) + + # not giving filename avoids encoding related problems + if not tmpfile or force_file: + fn = inf.filename + if PATH_SEP != os.sep: + fn = fn.replace(PATH_SEP, os.sep) + cmd.append(fn) + + # read from unrar pipe + return PipeReader(self, inf, cmd, tmpfile) + +# +# RAR3 format +# + +class Rar3Info(RarInfo): + """RAR3 specific fields.""" + extract_version = 15 + salt = None + add_size = 0 + header_crc = None + header_size = None + header_offset = None + data_offset = None + _md_class = None + _md_expect = None + + # make sure some rar5 fields are always present + file_redir = None + blake2sp_hash = None + + def _must_disable_hack(self): + if self.type == RAR_BLOCK_FILE: + if self.flags & RAR_FILE_PASSWORD: + return True + elif self.flags & (RAR_FILE_SPLIT_BEFORE | RAR_FILE_SPLIT_AFTER): + return True + elif self.type == RAR_BLOCK_MAIN: + if self.flags & (RAR_MAIN_SOLID | RAR_MAIN_PASSWORD): + return True + return False + + +class RAR3Parser(CommonParser): + """Parse RAR3 file format. + """ + _expect_sig = RAR_ID + _last_aes_key = (None, None, None) # (salt, key, iv) + + def _decrypt_header(self, fd): + if not _have_crypto: + raise NoCrypto('Cannot parse encrypted headers - no crypto') + salt = fd.read(8) + if self._last_aes_key[0] == salt: + key, iv = self._last_aes_key[1:] + else: + key, iv = rar3_s2k(self._password, salt) + self._last_aes_key = (salt, key, iv) + return HeaderDecrypt(fd, key, iv) + + # common header + def _parse_block_header(self, fd): + h = Rar3Info() + h.header_offset = fd.tell() + + # read and parse base header + buf = fd.read(S_BLK_HDR.size) + if not buf: + return None + t = S_BLK_HDR.unpack_from(buf) + h.header_crc, h.type, h.flags, h.header_size = t + + # read full header + if h.header_size > S_BLK_HDR.size: + hdata = buf + fd.read(h.header_size - S_BLK_HDR.size) + else: + hdata = buf + h.data_offset = fd.tell() + + # unexpected EOF? + if len(hdata) != h.header_size: + self._set_error('Unexpected EOF when reading header') + return None + + pos = S_BLK_HDR.size + + # block has data assiciated with it? + if h.flags & RAR_LONG_BLOCK: + h.add_size, pos = load_le32(hdata, pos) + else: + h.add_size = 0 + + # parse interesting ones, decide header boundaries for crc + if h.type == RAR_BLOCK_MARK: + return h + elif h.type == RAR_BLOCK_MAIN: + pos += 6 + if h.flags & RAR_MAIN_ENCRYPTVER: + pos += 1 + crc_pos = pos + if h.flags & RAR_MAIN_COMMENT: + self._parse_subblocks(h, hdata, pos) + elif h.type == RAR_BLOCK_FILE: + pos = self._parse_file_header(h, hdata, pos - 4) + crc_pos = pos + if h.flags & RAR_FILE_COMMENT: + pos = self._parse_subblocks(h, hdata, pos) + elif h.type == RAR_BLOCK_SUB: + pos = self._parse_file_header(h, hdata, pos - 4) + crc_pos = h.header_size + elif h.type == RAR_BLOCK_OLD_AUTH: + pos += 8 + crc_pos = pos + elif h.type == RAR_BLOCK_OLD_EXTRA: + pos += 7 + crc_pos = pos + else: + crc_pos = h.header_size + + # check crc + if h.type == RAR_BLOCK_OLD_SUB: + crcdat = hdata[2:] + fd.read(h.add_size) + else: + crcdat = hdata[2:crc_pos] + + calc_crc = rar_crc32(crcdat) & 0xFFFF + + # return good header + if h.header_crc == calc_crc: + return h + + # header parsing failed. + self._set_error('Header CRC error (%02x): exp=%x got=%x (xlen = %d)', + h.type, h.header_crc, calc_crc, len(crcdat)) + + # instead panicing, send eof + return None + + # read file-specific header + def _parse_file_header(self, h, hdata, pos): + fld = S_FILE_HDR.unpack_from(hdata, pos) + pos += S_FILE_HDR.size + + h.compress_size = fld[0] + h.file_size = fld[1] + h.host_os = fld[2] + h.CRC = fld[3] + h.date_time = parse_dos_time(fld[4]) + h.mtime = to_datetime(h.date_time) + h.extract_version = fld[5] + h.compress_type = fld[6] + name_size = fld[7] + h.mode = fld[8] + + h._md_class = CRC32Context + h._md_expect = h.CRC + + if h.flags & RAR_FILE_LARGE: + h1, pos = load_le32(hdata, pos) + h2, pos = load_le32(hdata, pos) + h.compress_size |= h1 << 32 + h.file_size |= h2 << 32 + h.add_size = h.compress_size + + name, pos = load_bytes(hdata, name_size, pos) + if h.flags & RAR_FILE_UNICODE: + nul = name.find(ZERO) + h.orig_filename = name[:nul] + u = UnicodeFilename(h.orig_filename, name[nul + 1:]) + h.filename = u.decode() + + # if parsing failed fall back to simple name + if u.failed: + h.filename = self._decode(h.orig_filename) + else: + h.orig_filename = name + h.filename = self._decode(name) + + # change separator, if requested + if PATH_SEP != '\\': + h.filename = h.filename.replace('\\', PATH_SEP) + + if h.flags & RAR_FILE_SALT: + h.salt, pos = load_bytes(hdata, 8, pos) + else: + h.salt = None + + # optional extended time stamps + if h.flags & RAR_FILE_EXTTIME: + pos = _parse_ext_time(h, hdata, pos) + else: + h.mtime = h.atime = h.ctime = h.arctime = None + + return pos + + # find old-style comment subblock + def _parse_subblocks(self, h, hdata, pos): + while pos < len(hdata): + # ordinary block header + t = S_BLK_HDR.unpack_from(hdata, pos) + ___scrc, stype, sflags, slen = t + pos_next = pos + slen + pos += S_BLK_HDR.size + + # corrupt header + if pos_next < pos: + break + + # followed by block-specific header + if stype == RAR_BLOCK_OLD_COMMENT and pos + S_COMMENT_HDR.size <= pos_next: + declen, ver, meth, crc = S_COMMENT_HDR.unpack_from(hdata, pos) + pos += S_COMMENT_HDR.size + data = hdata[pos : pos_next] + cmt = rar3_decompress(ver, meth, data, declen, sflags, + crc, self._password) + if not self._crc_check: + h.comment = self._decode_comment(cmt) + elif rar_crc32(cmt) & 0xFFFF == crc: + h.comment = self._decode_comment(cmt) + + pos = pos_next + return pos + + def _read_comment_v3(self, inf, psw=None): + + # read data + with XFile(inf.volume_file) as rf: + rf.seek(inf.data_offset) + data = rf.read(inf.compress_size) + + # decompress + cmt = rar3_decompress(inf.extract_version, inf.compress_type, data, + inf.file_size, inf.flags, inf.CRC, psw, inf.salt) + + # check crc + if self._crc_check: + crc = rar_crc32(cmt) + if crc != inf.CRC: + return None + + return self._decode_comment(cmt) + + def _decode(self, val): + for c in TRY_ENCODINGS: + try: + return val.decode(c) + except UnicodeError: + pass + return val.decode(self._charset, 'replace') + + def _decode_comment(self, val): + return self._decode(val) + + def process_entry(self, fd, item): + if item.type == RAR_BLOCK_FILE: + # use only first part + if (item.flags & RAR_FILE_SPLIT_BEFORE) == 0: + self._info_map[item.filename] = item + self._info_list.append(item) + elif len(self._info_list) > 0: + # final crc is in last block + old = self._info_list[-1] + old.CRC = item.CRC + old._md_expect = item._md_expect + old.compress_size += item.compress_size + + # parse new-style comment + if item.type == RAR_BLOCK_SUB and item.filename == 'CMT': + if item.flags & (RAR_FILE_SPLIT_BEFORE | RAR_FILE_SPLIT_AFTER): + pass + elif item.flags & RAR_FILE_SOLID: + # file comment + cmt = self._read_comment_v3(item, self._password) + if len(self._info_list) > 0: + old = self._info_list[-1] + old.comment = cmt + else: + # archive comment + cmt = self._read_comment_v3(item, self._password) + self.comment = cmt + + if item.type == RAR_BLOCK_MAIN: + if item.flags & RAR_MAIN_COMMENT: + self.comment = item.comment + if item.flags & RAR_MAIN_PASSWORD: + self._needs_password = True + + # put file compressed data into temporary .rar archive, and run + # unrar on that, thus avoiding unrar going over whole archive + def _open_hack(self, inf, psw): + # create main header: crc, type, flags, size, res1, res2 + prefix = RAR_ID + S_BLK_HDR.pack(0x90CF, 0x73, 0, 13) + ZERO * (2 + 4) + return self._open_hack_core(inf, psw, prefix, EMPTY) + +# +# RAR5 format +# + +class Rar5Info(RarInfo): + """Shared fields for RAR5 records. + """ + extract_version = 50 + header_crc = None + header_size = None + header_offset = None + data_offset = None + + # type=all + block_type = None + block_flags = None + add_size = 0 + block_extra_size = 0 + + # type=MAIN + volume_number = None + _md_class = None + _md_expect = None + + def _must_disable_hack(self): + return False + + +class Rar5BaseFile(Rar5Info): + """Shared sturct for file & service record. + """ + type = -1 + file_flags = None + file_encryption = (0, 0, 0, EMPTY, EMPTY, EMPTY) + file_compress_flags = None + file_redir = None + file_owner = None + file_version = None + blake2sp_hash = None + + def _must_disable_hack(self): + if self.flags & RAR_FILE_PASSWORD: + return True + if self.block_flags & (RAR5_BLOCK_FLAG_SPLIT_BEFORE | RAR5_BLOCK_FLAG_SPLIT_AFTER): + return True + if self.file_compress_flags & RAR5_COMPR_SOLID: + return True + if self.file_redir: + return True + return False + + +class Rar5FileInfo(Rar5BaseFile): + """RAR5 file record. + """ + type = RAR_BLOCK_FILE + + +class Rar5ServiceInfo(Rar5BaseFile): + """RAR5 service record. + """ + type = RAR_BLOCK_SUB + + +class Rar5MainInfo(Rar5Info): + """RAR5 archive main record. + """ + type = RAR_BLOCK_MAIN + main_flags = None + main_volume_number = None + + def _must_disable_hack(self): + if self.main_flags & RAR5_MAIN_FLAG_SOLID: + return True + return False + + +class Rar5EncryptionInfo(Rar5Info): + """RAR5 archive header encryption record. + """ + type = RAR5_BLOCK_ENCRYPTION + encryption_algo = None + encryption_flags = None + encryption_kdf_count = None + encryption_salt = None + encryption_check_value = None + + def needs_password(self): + return True + + +class Rar5EndArcInfo(Rar5Info): + """RAR5 end of archive record. + """ + type = RAR_BLOCK_ENDARC + endarc_flags = None + + +class RAR5Parser(CommonParser): + """Parse RAR5 format. + """ + _expect_sig = RAR5_ID + _hdrenc_main = None + + # AES encrypted headers + _last_aes256_key = (-1, None, None) # (kdf_count, salt, key) + + def _gen_key(self, kdf_count, salt): + if self._last_aes256_key[:2] == (kdf_count, salt): + return self._last_aes256_key[2] + if kdf_count > 24: + raise BadRarFile('Too large kdf_count') + psw = self._password + if isinstance(psw, unicode): + psw = psw.encode('utf8') + key = pbkdf2_sha256(psw, salt, 1 << kdf_count) + self._last_aes256_key = (kdf_count, salt, key) + return key + + def _decrypt_header(self, fd): + if not _have_crypto: + raise NoCrypto('Cannot parse encrypted headers - no crypto') + h = self._hdrenc_main + key = self._gen_key(h.encryption_kdf_count, h.encryption_salt) + iv = fd.read(16) + return HeaderDecrypt(fd, key, iv) + + # common header + def _parse_block_header(self, fd): + header_offset = fd.tell() + + preload = 4 + 3 + start_bytes = fd.read(preload) + header_crc, pos = load_le32(start_bytes, 0) + hdrlen, pos = load_vint(start_bytes, pos) + if hdrlen > 2 * 1024 * 1024: + return None + header_size = pos + hdrlen + + # read full header, check for EOF + hdata = start_bytes + fd.read(header_size - len(start_bytes)) + if len(hdata) != header_size: + self._set_error('Unexpected EOF when reading header') + return None + data_offset = fd.tell() + + calc_crc = rar_crc32(memoryview(hdata)[4:]) + if header_crc != calc_crc: + # header parsing failed. + self._set_error('Header CRC error: exp=%x got=%x (xlen = %d)', + header_crc, calc_crc, len(hdata)) + return None + + block_type, pos = load_vint(hdata, pos) + + if block_type == RAR5_BLOCK_MAIN: + h, pos = self._parse_block_common(Rar5MainInfo(), hdata) + h = self._parse_main_block(h, hdata, pos) + elif block_type == RAR5_BLOCK_FILE: + h, pos = self._parse_block_common(Rar5FileInfo(), hdata) + h = self._parse_file_block(h, hdata, pos) + elif block_type == RAR5_BLOCK_SERVICE: + h, pos = self._parse_block_common(Rar5ServiceInfo(), hdata) + h = self._parse_file_block(h, hdata, pos) + elif block_type == RAR5_BLOCK_ENCRYPTION: + h, pos = self._parse_block_common(Rar5EncryptionInfo(), hdata) + h = self._parse_encryption_block(h, hdata, pos) + elif block_type == RAR5_BLOCK_ENDARC: + h, pos = self._parse_block_common(Rar5EndArcInfo(), hdata) + h = self._parse_endarc_block(h, hdata, pos) + else: + h = None + if h: + h.header_offset = header_offset + h.data_offset = data_offset + return h + + def _parse_block_common(self, h, hdata): + h.header_crc, pos = load_le32(hdata, 0) + hdrlen, pos = load_vint(hdata, pos) + h.header_size = hdrlen + pos + h.block_type, pos = load_vint(hdata, pos) + h.block_flags, pos = load_vint(hdata, pos) + + if h.block_flags & RAR5_BLOCK_FLAG_EXTRA_DATA: + h.block_extra_size, pos = load_vint(hdata, pos) + if h.block_flags & RAR5_BLOCK_FLAG_DATA_AREA: + h.add_size, pos = load_vint(hdata, pos) + + h.compress_size = h.add_size + + if h.block_flags & RAR5_BLOCK_FLAG_SKIP_IF_UNKNOWN: + h.flags |= RAR_SKIP_IF_UNKNOWN + if h.block_flags & RAR5_BLOCK_FLAG_DATA_AREA: + h.flags |= RAR_LONG_BLOCK + return h, pos + + def _parse_main_block(self, h, hdata, pos): + h.main_flags, pos = load_vint(hdata, pos) + if h.main_flags & RAR5_MAIN_FLAG_HAS_VOLNR: + h.main_volume_number = load_vint(hdata, pos) + + h.flags |= RAR_MAIN_NEWNUMBERING + if h.main_flags & RAR5_MAIN_FLAG_SOLID: + h.flags |= RAR_MAIN_SOLID + if h.main_flags & RAR5_MAIN_FLAG_ISVOL: + h.flags |= RAR_MAIN_VOLUME + if h.main_flags & RAR5_MAIN_FLAG_RECOVERY: + h.flags |= RAR_MAIN_RECOVERY + if self._hdrenc_main: + h.flags |= RAR_MAIN_PASSWORD + if h.main_flags & RAR5_MAIN_FLAG_HAS_VOLNR == 0: + h.flags |= RAR_MAIN_FIRSTVOLUME + + return h + + def _parse_file_block(self, h, hdata, pos): + h.file_flags, pos = load_vint(hdata, pos) + h.file_size, pos = load_vint(hdata, pos) + h.mode, pos = load_vint(hdata, pos) + + if h.file_flags & RAR5_FILE_FLAG_HAS_MTIME: + h.mtime, pos = load_unixtime(hdata, pos) + h.date_time = h.mtime.timetuple()[:6] + if h.file_flags & RAR5_FILE_FLAG_HAS_CRC32: + h.CRC, pos = load_le32(hdata, pos) + h._md_class = CRC32Context + h._md_expect = h.CRC + + h.file_compress_flags, pos = load_vint(hdata, pos) + h.file_host_os, pos = load_vint(hdata, pos) + h.orig_filename, pos = load_vstr(hdata, pos) + h.filename = h.orig_filename.decode('utf8', 'replace') + + # use compatible values + if h.file_host_os == RAR5_OS_WINDOWS: + h.host_os = RAR_OS_WIN32 + else: + h.host_os = RAR_OS_UNIX + h.compress_type = RAR_M0 + ((h.file_compress_flags >> 7) & 7) + + if h.block_extra_size: + # allow 1 byte of garbage + while pos < len(hdata) - 1: + xsize, pos = load_vint(hdata, pos) + xdata, pos = load_bytes(hdata, xsize, pos) + self._process_file_extra(h, xdata) + + if h.block_flags & RAR5_BLOCK_FLAG_SPLIT_BEFORE: + h.flags |= RAR_FILE_SPLIT_BEFORE + if h.block_flags & RAR5_BLOCK_FLAG_SPLIT_AFTER: + h.flags |= RAR_FILE_SPLIT_AFTER + if h.file_flags & RAR5_FILE_FLAG_ISDIR: + h.flags |= RAR_FILE_DIRECTORY + if h.file_compress_flags & RAR5_COMPR_SOLID: + h.flags |= RAR_FILE_SOLID + + return h + + def _parse_endarc_block(self, h, hdata, pos): + h.endarc_flags, pos = load_vint(hdata, pos) + if h.endarc_flags & RAR5_ENDARC_FLAG_NEXT_VOL: + h.flags |= RAR_ENDARC_NEXT_VOLUME + return h + + def _parse_encryption_block(self, h, hdata, pos): + h.encryption_algo, pos = load_vint(hdata, pos) + h.encryption_flags, pos = load_vint(hdata, pos) + h.encryption_kdf_count, pos = load_byte(hdata, pos) + h.encryption_salt, pos = load_bytes(hdata, 16, pos) + if h.encryption_flags & RAR5_ENC_FLAG_HAS_CHECKVAL: + h.encryption_check_value = load_bytes(hdata, 12, pos) + if h.encryption_algo != RAR5_XENC_CIPHER_AES256: + raise BadRarFile('Unsupported header encryption cipher') + self._hdrenc_main = h + return h + + # file extra record + def _process_file_extra(self, h, xdata): + xtype, pos = load_vint(xdata, 0) + if xtype == RAR5_XFILE_TIME: + self._parse_file_xtime(h, xdata, pos) + elif xtype == RAR5_XFILE_ENCRYPTION: + self._parse_file_encryption(h, xdata, pos) + elif xtype == RAR5_XFILE_HASH: + self._parse_file_hash(h, xdata, pos) + elif xtype == RAR5_XFILE_VERSION: + self._parse_file_version(h, xdata, pos) + elif xtype == RAR5_XFILE_REDIR: + self._parse_file_redir(h, xdata, pos) + elif xtype == RAR5_XFILE_OWNER: + self._parse_file_owner(h, xdata, pos) + elif xtype == RAR5_XFILE_SERVICE: + pass + else: + pass + + # extra block for file time record + def _parse_file_xtime(self, h, xdata, pos): + tflags, pos = load_vint(xdata, pos) + ldr = load_windowstime + if tflags & RAR5_XTIME_UNIXTIME: + ldr = load_unixtime + if tflags & RAR5_XTIME_HAS_MTIME: + h.mtime, pos = ldr(xdata, pos) + h.date_time = h.mtime.timetuple()[:6] + if tflags & RAR5_XTIME_HAS_CTIME: + h.ctime, pos = ldr(xdata, pos) + if tflags & RAR5_XTIME_HAS_ATIME: + h.atime, pos = ldr(xdata, pos) + + # just remember encryption info + def _parse_file_encryption(self, h, xdata, pos): + algo, pos = load_vint(xdata, pos) + flags, pos = load_vint(xdata, pos) + kdf_count, pos = load_byte(xdata, pos) + salt, pos = load_bytes(xdata, 16, pos) + iv, pos = load_bytes(xdata, 16, pos) + checkval = None + if flags & RAR5_XENC_CHECKVAL: + checkval, pos = load_bytes(xdata, 12, pos) + if flags & RAR5_XENC_TWEAKED: + h._md_expect = None + h._md_class = NoHashContext + + h.file_encryption = (algo, flags, kdf_count, salt, iv, checkval) + h.flags |= RAR_FILE_PASSWORD + + def _parse_file_hash(self, h, xdata, pos): + hash_type, pos = load_vint(xdata, pos) + if hash_type == RAR5_XHASH_BLAKE2SP: + h.blake2sp_hash, pos = load_bytes(xdata, 32, pos) + if _have_blake2 and (h.file_encryption[1] & RAR5_XENC_TWEAKED) == 0: + h._md_class = Blake2SP + h._md_expect = h.blake2sp_hash + + def _parse_file_version(self, h, xdata, pos): + flags, pos = load_vint(xdata, pos) + version, pos = load_vint(xdata, pos) + h.file_version = (flags, version) + + def _parse_file_redir(self, h, xdata, pos): + redir_type, pos = load_vint(xdata, pos) + redir_flags, pos = load_vint(xdata, pos) + redir_name, pos = load_vstr(xdata, pos) + redir_name = redir_name.decode('utf8', 'replace') + h.file_redir = (redir_type, redir_flags, redir_name) + + def _parse_file_owner(self, h, xdata, pos): + user_name = group_name = user_id = group_id = None + + flags, pos = load_vint(xdata, pos) + if flags & RAR5_XOWNER_UNAME: + user_name, pos = load_vstr(xdata, pos) + if flags & RAR5_XOWNER_GNAME: + group_name, pos = load_vstr(xdata, pos) + if flags & RAR5_XOWNER_UID: + user_id, pos = load_vint(xdata, pos) + if flags & RAR5_XOWNER_GID: + group_id, pos = load_vint(xdata, pos) + + h.file_owner = (user_name, group_name, user_id, group_id) + + def process_entry(self, fd, item): + if item.block_type == RAR5_BLOCK_FILE: + # use only first part + if (item.block_flags & RAR5_BLOCK_FLAG_SPLIT_BEFORE) == 0: + self._info_map[item.filename] = item + self._info_list.append(item) + elif len(self._info_list) > 0: + # final crc is in last block + old = self._info_list[-1] + old.CRC = item.CRC + old._md_expect = item._md_expect + old.blake2sp_hash = item.blake2sp_hash + old.compress_size += item.compress_size + elif item.block_type == RAR5_BLOCK_SERVICE: + if item.filename == 'CMT': + self._load_comment(fd, item) + + def _load_comment(self, fd, item): + if item.block_flags & (RAR5_BLOCK_FLAG_SPLIT_BEFORE | RAR5_BLOCK_FLAG_SPLIT_AFTER): + return None + if item.compress_type != RAR_M0: + return None + + if item.flags & RAR_FILE_PASSWORD: + algo, ___flags, kdf_count, salt, iv, ___checkval = item.file_encryption + if algo != RAR5_XENC_CIPHER_AES256: + return None + key = self._gen_key(kdf_count, salt) + f = HeaderDecrypt(fd, key, iv) + cmt = f.read(item.file_size) + else: + # archive comment + with self._open_clear(item) as cmtstream: + cmt = cmtstream.read() + + # rar bug? - appends zero to comment + cmt = cmt.split(ZERO, 1)[0] + self.comment = cmt.decode('utf8') + + def _open_hack(self, inf, psw): + # len, type, blk_flags, flags + main_hdr = b'\x03\x01\x00\x00' + endarc_hdr = b'\x03\x05\x00\x00' + main_hdr = S_LONG.pack(rar_crc32(main_hdr)) + main_hdr + endarc_hdr = S_LONG.pack(rar_crc32(endarc_hdr)) + endarc_hdr + return self._open_hack_core(inf, psw, RAR5_ID + main_hdr, endarc_hdr) + +## +## Utility classes +## + +class UnicodeFilename(object): + """Handle RAR3 unicode filename decompression. + """ + def __init__(self, name, encdata): + self.std_name = bytearray(name) + self.encdata = bytearray(encdata) + self.pos = self.encpos = 0 + self.buf = bytearray() + self.failed = 0 + + def enc_byte(self): + """Copy encoded byte.""" + try: + c = self.encdata[self.encpos] + self.encpos += 1 + return c + except IndexError: + self.failed = 1 + return 0 + + def std_byte(self): + """Copy byte from 8-bit representation.""" + try: + return self.std_name[self.pos] + except IndexError: + self.failed = 1 + return ord('?') + + def put(self, lo, hi): + """Copy 16-bit value to result.""" + self.buf.append(lo) + self.buf.append(hi) + self.pos += 1 + + def decode(self): + """Decompress compressed UTF16 value.""" + hi = self.enc_byte() + flagbits = 0 + while self.encpos < len(self.encdata): + if flagbits == 0: + flags = self.enc_byte() + flagbits = 8 + flagbits -= 2 + t = (flags >> flagbits) & 3 + if t == 0: + self.put(self.enc_byte(), 0) + elif t == 1: + self.put(self.enc_byte(), hi) + elif t == 2: + self.put(self.enc_byte(), self.enc_byte()) + else: + n = self.enc_byte() + if n & 0x80: + c = self.enc_byte() + for _ in range((n & 0x7f) + 2): + lo = (self.std_byte() + c) & 0xFF + self.put(lo, hi) + else: + for _ in range(n + 2): + self.put(self.std_byte(), 0) + return self.buf.decode("utf-16le", "replace") + + +class RarExtFile(RawIOBase): + """Base class for file-like object that :meth:`RarFile.open` returns. + + Provides public methods and common crc checking. + + Behaviour: + - no short reads - .read() and .readinfo() read as much as requested. + - no internal buffer, use io.BufferedReader for that. + """ + + #: Filename of the archive entry + name = None + + def __init__(self, parser, inf): + super(RarExtFile, self).__init__() + + # standard io.* properties + self.name = inf.filename + self.mode = 'rb' + + self._parser = parser + self._inf = inf + self._fd = None + self._remain = 0 + self._returncode = 0 + + self._md_context = None + + self._open() + + def _open(self): + if self._fd: + self._fd.close() + md_class = self._inf._md_class or NoHashContext + self._md_context = md_class() + self._fd = None + self._remain = self._inf.file_size + + def read(self, cnt=None): + """Read all or specified amount of data from archive entry.""" + + # sanitize cnt + if cnt is None or cnt < 0: + cnt = self._remain + elif cnt > self._remain: + cnt = self._remain + if cnt == 0: + return EMPTY + + # actual read + data = self._read(cnt) + if data: + self._md_context.update(data) + self._remain -= len(data) + if len(data) != cnt: + raise BadRarFile("Failed the read enough data") + + # done? + if not data or self._remain == 0: + # self.close() + self._check() + return data + + def _check(self): + """Check final CRC.""" + final = self._md_context.digest() + exp = self._inf._md_expect + if exp is None: + return + if final is None: + return + if self._returncode: + check_returncode(self, '') + if self._remain != 0: + raise BadRarFile("Failed the read enough data") + if final != exp: + raise BadRarFile("Corrupt file - CRC check failed: %s - exp=%r got=%r" % ( + self._inf.filename, exp, final)) + + def _read(self, cnt): + """Actual read that gets sanitized cnt.""" + + def close(self): + """Close open resources.""" + + super(RarExtFile, self).close() + + if self._fd: + self._fd.close() + self._fd = None + + def __del__(self): + """Hook delete to make sure tempfile is removed.""" + self.close() + + def readinto(self, buf): + """Zero-copy read directly into buffer. + + Returns bytes read. + """ + raise NotImplementedError('readinto') + + def tell(self): + """Return current reading position in uncompressed data.""" + return self._inf.file_size - self._remain + + def seek(self, ofs, whence=0): + """Seek in data. + + On uncompressed files, the seeking works by actual + seeks so it's fast. On compresses files its slow + - forward seeking happends by reading ahead, + backwards by re-opening and decompressing from the start. + """ + + # disable crc check when seeking + self._md_context = NoHashContext() + + fsize = self._inf.file_size + cur_ofs = self.tell() + + if whence == 0: # seek from beginning of file + new_ofs = ofs + elif whence == 1: # seek from current position + new_ofs = cur_ofs + ofs + elif whence == 2: # seek from end of file + new_ofs = fsize + ofs + else: + raise ValueError('Invalid value for whence') + + # sanity check + if new_ofs < 0: + new_ofs = 0 + elif new_ofs > fsize: + new_ofs = fsize + + # do the actual seek + if new_ofs >= cur_ofs: + self._skip(new_ofs - cur_ofs) + else: + # reopen and seek + self._open() + self._skip(new_ofs) + return self.tell() + + def _skip(self, cnt): + """Read and discard data""" + while cnt > 0: + if cnt > 8192: + buf = self.read(8192) + else: + buf = self.read(cnt) + if not buf: + break + cnt -= len(buf) + + def readable(self): + """Returns True""" + return True + + def writable(self): + """Returns False. + + Writing is not supported.""" + return False + + def seekable(self): + """Returns True. + + Seeking is supported, although it's slow on compressed files. + """ + return True + + def readall(self): + """Read all remaining data""" + # avoid RawIOBase default impl + return self.read() + + +class PipeReader(RarExtFile): + """Read data from pipe, handle tempfile cleanup.""" + + def __init__(self, rf, inf, cmd, tempfile=None): + self._cmd = cmd + self._proc = None + self._tempfile = tempfile + super(PipeReader, self).__init__(rf, inf) + + def _close_proc(self): + if not self._proc: + return + if self._proc.stdout: + self._proc.stdout.close() + if self._proc.stdin: + self._proc.stdin.close() + if self._proc.stderr: + self._proc.stderr.close() + self._proc.wait() + self._returncode = self._proc.returncode + self._proc = None + + def _open(self): + super(PipeReader, self)._open() + + # stop old process + self._close_proc() + + # launch new process + self._returncode = 0 + self._proc = custom_popen(self._cmd) + self._fd = self._proc.stdout + + # avoid situation where unrar waits on stdin + if self._proc.stdin: + self._proc.stdin.close() + + def _read(self, cnt): + """Read from pipe.""" + + # normal read is usually enough + data = self._fd.read(cnt) + if len(data) == cnt or not data: + return data + + # short read, try looping + buf = [data] + cnt -= len(data) + while cnt > 0: + data = self._fd.read(cnt) + if not data: + break + cnt -= len(data) + buf.append(data) + return EMPTY.join(buf) + + def close(self): + """Close open resources.""" + + self._close_proc() + super(PipeReader, self).close() + + if self._tempfile: + try: + os.unlink(self._tempfile) + except OSError: + pass + self._tempfile = None + + def readinto(self, buf): + """Zero-copy read directly into buffer.""" + cnt = len(buf) + if cnt > self._remain: + cnt = self._remain + vbuf = memoryview(buf) + res = got = 0 + while got < cnt: + res = self._fd.readinto(vbuf[got : cnt]) + if not res: + break + self._md_context.update(vbuf[got : got + res]) + self._remain -= res + got += res + return got + + +class DirectReader(RarExtFile): + """Read uncompressed data directly from archive. + """ + _cur = None + _cur_avail = None + _volfile = None + + def _open(self): + super(DirectReader, self)._open() + + self._volfile = self._inf.volume_file + self._fd = XFile(self._volfile, 0) + self._fd.seek(self._inf.header_offset, 0) + self._cur = self._parser._parse_header(self._fd) + self._cur_avail = self._cur.add_size + + def _skip(self, cnt): + """RAR Seek, skipping through rar files to get to correct position + """ + + while cnt > 0: + # next vol needed? + if self._cur_avail == 0: + if not self._open_next(): + break + + # fd is in read pos, do the read + if cnt > self._cur_avail: + cnt -= self._cur_avail + self._remain -= self._cur_avail + self._cur_avail = 0 + else: + self._fd.seek(cnt, 1) + self._cur_avail -= cnt + self._remain -= cnt + cnt = 0 + + def _read(self, cnt): + """Read from potentially multi-volume archive.""" + + buf = [] + while cnt > 0: + # next vol needed? + if self._cur_avail == 0: + if not self._open_next(): + break + + # fd is in read pos, do the read + if cnt > self._cur_avail: + data = self._fd.read(self._cur_avail) + else: + data = self._fd.read(cnt) + if not data: + break + + # got some data + cnt -= len(data) + self._cur_avail -= len(data) + buf.append(data) + + if len(buf) == 1: + return buf[0] + return EMPTY.join(buf) + + def _open_next(self): + """Proceed to next volume.""" + + # is the file split over archives? + if (self._cur.flags & RAR_FILE_SPLIT_AFTER) == 0: + return False + + if self._fd: + self._fd.close() + self._fd = None + + # open next part + self._volfile = self._parser._next_volname(self._volfile) + fd = open(self._volfile, "rb", 0) + self._fd = fd + sig = fd.read(len(self._parser._expect_sig)) + if sig != self._parser._expect_sig: + raise BadRarFile("Invalid signature") + + # loop until first file header + while 1: + cur = self._parser._parse_header(fd) + if not cur: + raise BadRarFile("Unexpected EOF") + if cur.type in (RAR_BLOCK_MARK, RAR_BLOCK_MAIN): + if cur.add_size: + fd.seek(cur.add_size, 1) + continue + if cur.orig_filename != self._inf.orig_filename: + raise BadRarFile("Did not found file entry") + self._cur = cur + self._cur_avail = cur.add_size + return True + + def readinto(self, buf): + """Zero-copy read directly into buffer.""" + got = 0 + vbuf = memoryview(buf) + while got < len(buf): + # next vol needed? + if self._cur_avail == 0: + if not self._open_next(): + break + + # length for next read + cnt = len(buf) - got + if cnt > self._cur_avail: + cnt = self._cur_avail + + # read into temp view + res = self._fd.readinto(vbuf[got : got + cnt]) + if not res: + break + self._md_context.update(vbuf[got : got + res]) + self._cur_avail -= res + self._remain -= res + got += res + return got + + +class HeaderDecrypt(object): + """File-like object that decrypts from another file""" + def __init__(self, f, key, iv): + self.f = f + self.ciph = AES_CBC_Decrypt(key, iv) + self.buf = EMPTY + + def tell(self): + """Current file pos - works only on block boundaries.""" + return self.f.tell() + + def read(self, cnt=None): + """Read and decrypt.""" + if cnt > 8 * 1024: + raise BadRarFile('Bad count to header decrypt - wrong password?') + + # consume old data + if cnt <= len(self.buf): + res = self.buf[:cnt] + self.buf = self.buf[cnt:] + return res + res = self.buf + self.buf = EMPTY + cnt -= len(res) + + # decrypt new data + blklen = 16 + while cnt > 0: + enc = self.f.read(blklen) + if len(enc) < blklen: + break + dec = self.ciph.decrypt(enc) + if cnt >= len(dec): + res += dec + cnt -= len(dec) + else: + res += dec[:cnt] + self.buf = dec[cnt:] + cnt = 0 + + return res + + +# handle (filename|filelike) object +class XFile(object): + """Input may be filename or file object. + """ + __slots__ = ('_fd', '_need_close') + + def __init__(self, xfile, bufsize=1024): + if is_filelike(xfile): + self._need_close = False + self._fd = xfile + self._fd.seek(0) + else: + self._need_close = True + self._fd = open(xfile, 'rb', bufsize) + + def read(self, n=None): + """Read from file.""" + return self._fd.read(n) + + def tell(self): + """Return file pos.""" + return self._fd.tell() + + def seek(self, ofs, whence=0): + """Move file pos.""" + return self._fd.seek(ofs, whence) + + def readinto(self, dst): + """Read into buffer.""" + return self._fd.readinto(dst) + + def close(self): + """Close file object.""" + if self._need_close: + self._fd.close() + + def __enter__(self): + return self + + def __exit__(self, typ, val, tb): + self.close() + + +class NoHashContext(object): + """No-op hash function.""" + def __init__(self, data=None): + """Initialize""" + def update(self, data): + """Update data""" + def digest(self): + """Final hash""" + def hexdigest(self): + """Hexadecimal digest.""" + + +class CRC32Context(object): + """Hash context that uses CRC32.""" + __slots__ = ['_crc'] + + def __init__(self, data=None): + self._crc = 0 + if data: + self.update(data) + + def update(self, data): + """Process data.""" + self._crc = rar_crc32(data, self._crc) + + def digest(self): + """Final hash.""" + return self._crc + + def hexdigest(self): + """Hexadecimal digest.""" + return '%08x' % self.digest() + + +class Blake2SP(object): + """Blake2sp hash context. + """ + __slots__ = ['_thread', '_buf', '_cur', '_digest'] + digest_size = 32 + block_size = 64 + parallelism = 8 + + def __init__(self, data=None): + self._buf = b'' + self._cur = 0 + self._digest = None + self._thread = [] + + for i in range(self.parallelism): + ctx = self._blake2s(i, 0, i == (self.parallelism - 1)) + self._thread.append(ctx) + + if data: + self.update(data) + + def _blake2s(self, ofs, depth, is_last): + return blake2s(node_offset=ofs, node_depth=depth, last_node=is_last, + depth=2, inner_size=32, fanout=self.parallelism) + + def _add_block(self, blk): + self._thread[self._cur].update(blk) + self._cur = (self._cur + 1) % self.parallelism + + def update(self, data): + """Hash data. + """ + view = memoryview(data) + bs = self.block_size + if self._buf: + need = bs - len(self._buf) + if len(view) < need: + self._buf += view.tobytes() + return + self._add_block(self._buf + view[:need].tobytes()) + view = view[need:] + while len(view) >= bs: + self._add_block(view[:bs]) + view = view[bs:] + self._buf = view.tobytes() + + def digest(self): + """Return final digest value. + """ + if self._digest is None: + if self._buf: + self._add_block(self._buf) + self._buf = EMPTY + ctx = self._blake2s(0, 1, True) + for t in self._thread: + ctx.update(t.digest()) + self._digest = ctx.digest() + return self._digest + + def hexdigest(self): + """Hexadecimal digest.""" + return tohex(self.digest()) + +## +## Utility functions +## + +S_LONG = Struct(' len(buf): + raise BadRarFile('cannot load byte') + return S_BYTE.unpack_from(buf, pos)[0], end + +def load_le32(buf, pos): + """Load little-endian 32-bit integer""" + end = pos + 4 + if end > len(buf): + raise BadRarFile('cannot load le32') + return S_LONG.unpack_from(buf, pos)[0], pos + 4 + +def load_bytes(buf, num, pos): + """Load sequence of bytes""" + end = pos + num + if end > len(buf): + raise BadRarFile('cannot load bytes') + return buf[pos : end], end + +def load_vstr(buf, pos): + """Load bytes prefixed by vint length""" + slen, pos = load_vint(buf, pos) + return load_bytes(buf, slen, pos) + +def load_dostime(buf, pos): + """Load LE32 dos timestamp""" + stamp, pos = load_le32(buf, pos) + tup = parse_dos_time(stamp) + return to_datetime(tup), pos + +def load_unixtime(buf, pos): + """Load LE32 unix timestamp""" + secs, pos = load_le32(buf, pos) + dt = datetime.fromtimestamp(secs, UTC) + return dt, pos + +def load_windowstime(buf, pos): + """Load LE64 windows timestamp""" + # unix epoch (1970) in seconds from windows epoch (1601) + unix_epoch = 11644473600 + val1, pos = load_le32(buf, pos) + val2, pos = load_le32(buf, pos) + secs, n1secs = divmod((val2 << 32) | val1, 10000000) + dt = datetime.fromtimestamp(secs - unix_epoch, UTC) + dt = dt.replace(microsecond=n1secs // 10) + return dt, pos + +# new-style next volume +def _next_newvol(volfile): + i = len(volfile) - 1 + while i >= 0: + if volfile[i] >= '0' and volfile[i] <= '9': + return _inc_volname(volfile, i) + i -= 1 + raise BadRarName("Cannot construct volume name: " + volfile) + +# old-style next volume +def _next_oldvol(volfile): + # rar -> r00 + if volfile[-4:].lower() == '.rar': + return volfile[:-2] + '00' + return _inc_volname(volfile, len(volfile) - 1) + +# increase digits with carry, otherwise just increment char +def _inc_volname(volfile, i): + fn = list(volfile) + while i >= 0: + if fn[i] != '9': + fn[i] = chr(ord(fn[i]) + 1) + break + fn[i] = '0' + i -= 1 + return ''.join(fn) + +# rar3 extended time fields +def _parse_ext_time(h, data, pos): + # flags and rest of data can be missing + flags = 0 + if pos + 2 <= len(data): + flags = S_SHORT.unpack_from(data, pos)[0] + pos += 2 + + mtime, pos = _parse_xtime(flags >> 3 * 4, data, pos, h.mtime) + h.ctime, pos = _parse_xtime(flags >> 2 * 4, data, pos) + h.atime, pos = _parse_xtime(flags >> 1 * 4, data, pos) + h.arctime, pos = _parse_xtime(flags >> 0 * 4, data, pos) + if mtime: + h.mtime = mtime + h.date_time = mtime.timetuple()[:6] + return pos + +# rar3 one extended time field +def _parse_xtime(flag, data, pos, basetime=None): + res = None + if flag & 8: + if not basetime: + basetime, pos = load_dostime(data, pos) + + # load second fractions + rem = 0 + cnt = flag & 3 + for _ in range(cnt): + b, pos = load_byte(data, pos) + rem = (b << 16) | (rem >> 8) + + # convert 100ns units to microseconds + usec = rem // 10 + if usec > 1000000: + usec = 999999 + + # dostime has room for 30 seconds only, correct if needed + if flag & 4 and basetime.second < 59: + res = basetime.replace(microsecond=usec, second=basetime.second + 1) + else: + res = basetime.replace(microsecond=usec) + return res, pos + +def is_filelike(obj): + """Filename or file object? + """ + if isinstance(obj, str) or isinstance(obj, unicode): + return False + res = True + for a in ('read', 'tell', 'seek'): + res = res and hasattr(obj, a) + if not res: + raise ValueError("Invalid object passed as file") + return True + +def rar3_s2k(psw, salt): + """String-to-key hash for RAR3. + """ + if not isinstance(psw, unicode): + psw = psw.decode('utf8') + seed = psw.encode('utf-16le') + salt + iv = EMPTY + h = sha1() + for i in range(16): + for j in range(0x4000): + cnt = S_LONG.pack(i * 0x4000 + j) + h.update(seed + cnt[:3]) + if j == 0: + iv += h.digest()[19:20] + key_be = h.digest()[:16] + key_le = pack("LLLL", key_be)) + return key_le, iv + +def rar3_decompress(vers, meth, data, declen=0, flags=0, crc=0, psw=None, salt=None): + """Decompress blob of compressed data. + + Used for data with non-standard header - eg. comments. + """ + # already uncompressed? + if meth == RAR_M0 and (flags & RAR_FILE_PASSWORD) == 0: + return data + + # take only necessary flags + flags = flags & (RAR_FILE_PASSWORD | RAR_FILE_SALT | RAR_FILE_DICTMASK) + flags |= RAR_LONG_BLOCK + + # file header + fname = b'data' + date = 0 + mode = 0x20 + fhdr = S_FILE_HDR.pack(len(data), declen, RAR_OS_MSDOS, crc, + date, vers, meth, len(fname), mode) + fhdr += fname + if flags & RAR_FILE_SALT: + if not salt: + return EMPTY + fhdr += salt + + # full header + hlen = S_BLK_HDR.size + len(fhdr) + hdr = S_BLK_HDR.pack(0, RAR_BLOCK_FILE, flags, hlen) + fhdr + hcrc = rar_crc32(hdr[2:]) & 0xFFFF + hdr = S_BLK_HDR.pack(hcrc, RAR_BLOCK_FILE, flags, hlen) + fhdr + + # archive main header + mh = S_BLK_HDR.pack(0x90CF, RAR_BLOCK_MAIN, 0, 13) + ZERO * (2 + 4) + + # decompress via temp rar + tmpfd, tmpname = mkstemp(suffix='.rar') + tmpf = os.fdopen(tmpfd, "wb") + try: + tmpf.write(RAR_ID + mh + hdr + data) + tmpf.close() + + cmd = [UNRAR_TOOL] + list(OPEN_ARGS) + add_password_arg(cmd, psw, (flags & RAR_FILE_PASSWORD)) + cmd.append(tmpname) + + p = custom_popen(cmd) + return p.communicate()[0] + finally: + tmpf.close() + os.unlink(tmpname) + +def to_datetime(t): + """Convert 6-part time tuple into datetime object. + """ + if t is None: + return None + + # extract values + year, mon, day, h, m, s = t + + # assume the values are valid + try: + return datetime(year, mon, day, h, m, s) + except ValueError: + pass + + # sanitize invalid values + mday = (0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31) + if mon < 1: + mon = 1 + if mon > 12: + mon = 12 + if day < 1: + day = 1 + if day > mday[mon]: + day = mday[mon] + if h > 23: + h = 23 + if m > 59: + m = 59 + if s > 59: + s = 59 + if mon == 2 and day == 29: + try: + return datetime(year, mon, day, h, m, s) + except ValueError: + day = 28 + return datetime(year, mon, day, h, m, s) + +def parse_dos_time(stamp): + """Parse standard 32-bit DOS timestamp. + """ + sec, stamp = stamp & 0x1F, stamp >> 5 + mn, stamp = stamp & 0x3F, stamp >> 6 + hr, stamp = stamp & 0x1F, stamp >> 5 + day, stamp = stamp & 0x1F, stamp >> 5 + mon, stamp = stamp & 0x0F, stamp >> 4 + yr = (stamp & 0x7F) + 1980 + return (yr, mon, day, hr, mn, sec * 2) + +def custom_popen(cmd): + """Disconnect cmd from parent fds, read only from stdout. + """ + # needed for py2exe + creationflags = 0 + if sys.platform == 'win32': + creationflags = 0x08000000 # CREATE_NO_WINDOW + + # run command + try: + p = Popen(cmd, bufsize=0, stdout=PIPE, stdin=PIPE, stderr=STDOUT, + creationflags=creationflags) + except OSError as ex: + if ex.errno == errno.ENOENT: + raise RarCannotExec("Unrar not installed? (rarfile.UNRAR_TOOL=%r)" % UNRAR_TOOL) + raise + return p + +def custom_check(cmd, ignore_retcode=False): + """Run command, collect output, raise error if needed. + """ + p = custom_popen(cmd) + out, _ = p.communicate() + if p.returncode and not ignore_retcode: + raise RarExecError("Check-run failed") + return out + +def add_password_arg(cmd, psw, ___required=False): + """Append password switch to commandline. + """ + if UNRAR_TOOL == ALT_TOOL: + return + if psw is not None: + cmd.append('-p' + psw) + else: + cmd.append('-p-') + +def check_returncode(p, out): + """Raise exception according to unrar exit code. + """ + code = p.returncode + if code == 0: + return + + # map return code to exception class, codes from rar.txt + errmap = [None, + RarWarning, RarFatalError, RarCRCError, RarLockedArchiveError, # 1..4 + RarWriteError, RarOpenError, RarUserError, RarMemoryError, # 5..8 + RarCreateError, RarNoFilesError, RarWrongPassword] # 9..11 + if UNRAR_TOOL == ALT_TOOL: + errmap = [None] + if code > 0 and code < len(errmap): + exc = errmap[code] + elif code == 255: + exc = RarUserBreak + elif code < 0: + exc = RarSignalExit + else: + exc = RarUnknownError + + # format message + if out: + msg = "%s [%d]: %s" % (exc.__doc__, p.returncode, out) + else: + msg = "%s [%d]" % (exc.__doc__, p.returncode) + + raise exc(msg) + +def hmac_sha256(key, data): + """HMAC-SHA256""" + return HMAC(key, data, sha256).digest() + +def membuf_tempfile(memfile): + memfile.seek(0, 0) + + tmpfd, tmpname = mkstemp(suffix='.rar') + tmpf = os.fdopen(tmpfd, "wb") + + try: + while True: + buf = memfile.read(BSIZE) + if not buf: + break + tmpf.write(buf) + tmpf.close() + except: + tmpf.close() + os.unlink(tmpname) + raise + return tmpname + +class XTempFile(object): + __slots__ = ('_tmpfile', '_filename') + + def __init__(self, rarfile): + if is_filelike(rarfile): + self._tmpfile = membuf_tempfile(rarfile) + self._filename = self._tmpfile + else: + self._tmpfile = None + self._filename = rarfile + + def __enter__(self): + return self._filename + + def __exit__(self, exc_type, exc_value, tb): + if self._tmpfile: + try: + os.unlink(self._tmpfile) + except OSError: + pass + self._tmpfile = None + +# +# Check if unrar works +# + +ORIG_UNRAR_TOOL = UNRAR_TOOL +ORIG_OPEN_ARGS = OPEN_ARGS +ORIG_EXTRACT_ARGS = EXTRACT_ARGS +ORIG_TEST_ARGS = TEST_ARGS + +def _check_unrar_tool(): + global UNRAR_TOOL, OPEN_ARGS, EXTRACT_ARGS, TEST_ARGS + try: + # does UNRAR_TOOL work? + custom_check([ORIG_UNRAR_TOOL], True) + + UNRAR_TOOL = ORIG_UNRAR_TOOL + OPEN_ARGS = ORIG_OPEN_ARGS + EXTRACT_ARGS = ORIG_EXTRACT_ARGS + TEST_ARGS = ORIG_TEST_ARGS + except RarCannotExec: + try: + # does ALT_TOOL work? + custom_check([ALT_TOOL] + list(ALT_CHECK_ARGS), True) + # replace config + UNRAR_TOOL = ALT_TOOL + OPEN_ARGS = ALT_OPEN_ARGS + EXTRACT_ARGS = ALT_EXTRACT_ARGS + TEST_ARGS = ALT_TEST_ARGS + except RarCannotExec: + # no usable tool, only uncompressed archives work + pass + +_check_unrar_tool() + diff --git a/lib/unrar2/test.rar b/lib/rarfile/test.rar similarity index 100% rename from lib/unrar2/test.rar rename to lib/rarfile/test.rar diff --git a/lib/unrar2/UnRARDLL/license.txt b/lib/unrar2/UnRARDLL/license.txt deleted file mode 100644 index 0c1540e5..00000000 --- a/lib/unrar2/UnRARDLL/license.txt +++ /dev/null @@ -1,18 +0,0 @@ - The unrar.dll library is freeware. This means: - - 1. All copyrights to RAR and the unrar.dll are exclusively - owned by the author - Alexander Roshal. - - 2. The unrar.dll library may be used in any software to handle RAR - archives without limitations free of charge. - - 3. THE RAR ARCHIVER AND THE UNRAR.DLL LIBRARY ARE DISTRIBUTED "AS IS". - NO WARRANTY OF ANY KIND IS EXPRESSED OR IMPLIED. YOU USE AT - YOUR OWN RISK. THE AUTHOR WILL NOT BE LIABLE FOR DATA LOSS, - DAMAGES, LOSS OF PROFITS OR ANY OTHER KIND OF LOSS WHILE USING - OR MISUSING THIS SOFTWARE. - - Thank you for your interest in RAR and unrar.dll. - - - Alexander L. Roshal \ No newline at end of file diff --git a/lib/unrar2/UnRARDLL/unrar.dll b/lib/unrar2/UnRARDLL/unrar.dll deleted file mode 100644 index 9757bf3d692d8668ce892c4bee814eb5394adf37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 165376 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 Zpd|w>8EDBsO9omp(2{|c4E$3W_-_?5`fC6H diff --git a/lib/unrar2/UnRARDLL/unrar.lib b/lib/unrar2/UnRARDLL/unrar.lib deleted file mode 100644 index 0f6b3146b8ec5bd83698122653a75bcb1f2caf70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4114 zcmcInOK%fN5dLhFhn=T@+wLMGkQOc`amG%NR?FnI5XB_X#DU{5*aNW`;>Zr*8-HML zd*Q%x;YaK>;<|@D?B2N`{sm&IW_o&h+GA%dLQ6H>T~*y*cXd^F&DCF=PUG;`!mVPw zES9S))g_~PdnwLe5Z&davS>Xj0QdnIUjrtaK>iId^&z0?62MgW9MDV;@aYrPMAL5r znxQ$EW-URdR1?j;6I7;}XsXU++gtbdcCEU-vAMr)ZSB=}E&Ih$$LYYfcMfW`elcGA z@<3X@cd)Z-i=VOy)#?y-BcN;YV{bWMY1Xgxo+6Zmn>&E6p0KtkH%w4+SmTCs;v|hq5Q}k6xBIHyY3eY03ZFFZ zx+fc+_rUFRTkRurLD_;X896SDC@$tGFxJL_<|ObY4}6#cO4Gn+^7P&e@QLUx^$S#6 zv%o3QI~r6bs*^4S6~-}#3m8Kl1x#QPQ<%mqW{^R4pe*P6b%LAen@j2DWH4cH=}d8! z^o%ndHaMl2_XySiKZu_jIZVRQ_s9EL*FhBJx|L-3_t{EHQd}6?^`Ki%PNfL6xQkm- z4v5&=1)ztX9FY`bs!)xL7(ci^ln5Mfhx#{bsp)wlRL*)ijFpOfIck|4Hvju`dm=+` z2YEY{OsVNUe)07Be$WN(P~-QoBWe@#Yo%6`ZinmiDg@;+ReuwG6#X34CKgVGURAIu zj({&jp&s*16i>5M&r_Un$;(asj7#$q#NpYvusq+pc)!)?w7cymC&e4q&0=k9XWN%* zABt^%AWr}aV^9ds(|62oNeq~c_VZ&}XTJ9bzJ3kCSf2|oEQ@fvCfyUvISe`e#&~(T zkYlh8F(REx#9{sw{)obJ0n4JtRTew+J--3gkftw+ zK8lAdg>=Obk^Q|ACe<1m zhiOKj>CaIFCtE3_O9q#Q_9LNX1zP-xlL(Nllvu-dmg~pzpG}D|GMX{u)Gi1#<;CSh zHv&7?Qyc3?^WXOfPPS57(pXOR$RI}yJTgiSDE*ZHqx<79J5Gq5MOc0!@}1Bo1)7%K zd;?lV{?EoE`zm>VUP05+(QiN;7H@?JQOUz1Fxg7!C6zF>(qj7>?T-H(IN?vsp(PLs F{{t7Z#m)c# diff --git a/lib/unrar2/UnRARDLL/x64/unrar64.dll b/lib/unrar2/UnRARDLL/x64/unrar64.dll deleted file mode 100644 index e17a19e59113c2bd17d1db85f594a1f7c8d4707f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 191488 zcmeFa3wTu3)jxbD7YGnI0TYRcFz8q#c!@-9LW0hLiJZX+qM~9&h@uhejlztAAWobK zWH^j~VAWTxwc2W5siM*l#7hF01i6D3tgWR=?TLdeUW&mB^Z)(UJ~K%`|9!vb|9#){ ze9!acc{1nh+uCcdz4qE`uf6s@RXz?`3&jcJuTZg#BYJnOLc5H!SR-jeq;`i&J?HYA3t< zWc1RsQ5l-{yo!Ce0gcU*_b}enJCd_C{NOM3)RuvoAZFEoOwiSvF65MT3U)qNmSFd- z&d_Ed_YF^HXcHMZGgCX4oiZ^~3l3$3^B2z43Q?tZQie7-756`RPR!66+0j4pcUJJm zIYFciF9UEQ#J02kE`M%Kt3GSi4c7&))3nR3M*?7KH{f{zo?ZUDK<_M-O)FiBgeIg9 z!SgrArphR7L|ZktlOK=NpO^4v&7L(K5keEtM(csVzGL7a-;KB4fs8}4kq%l( zzE6(HHwLNy{~stYvMD_3vd{#d-Y~{xggYuj$A|CESP;q!-<>%%)VrlN=Wb1Nt#)lh z+I6ARkTxqc3~9qcCx-9N8WbuB-<{nvq=)bBp@n*>+}di_mm9aH{!DAR1`w4cP3^yk zXxdiqj_O{jlxxQO&fA}%+5Iln5H~N+v{*2*$$d>{%?blEHp!D0i1|E)fmp!f z-ssfNdV865n}a9VcgI~o?}I?>#6avCWW6Rw0g||`5d!c>@%R4k@VDNxFGn?9(0}z~ zpnnNQ`cdeEIz^@xE6zm<(95OnUMVo>>M>e$&!=N@Adm`41ulV(4cvxHPJENKw z>F6mLIO;1)_6K556{2jHOuN2MCIMuyuk*X!acz zaJD*3ki96?Ut2yxgQs2sh`_s;+4xc_FTh~aTulpD2aU#q$(|_t92+Zw=nY1)qB4{pE?WSGoa>qjhKvaNCW3oh_S4iCPk z)QlV%x?rSfwfaXihvy8wEHofI=cLO+x#2lOE(-Ms&lx&7m~SMT%w)3^EN{7|qWyYw z&DeNWu{nLG8CyYGf>vzS&A`^FC{%DvS0wHOi6ZNnUkl}%b;%$`$qxJN#V(B1_UVvh z>9{7u5nxAu2lfgMHOBPltRi@d-Vk{n{p`6=Z)mECMY1jjt=2|XAqt@$2qgw1{2jw( zk&^)-m|GeBEJSAc3SElgEaGw1M|vYsUuy}3hUO+alaaj`+0eYxW}uG>G}##pUta(f1I2;M4B*ldIRG?W z#%me^;Kke;qi$QMhw&z;egG0}((4W&Xj*&Bc)(L+ulq>TmYLRb9l~Nykwz^M z<`hz`$7F||)}y~hM9nfQVxxvg$K9dp&G^gJ)kutwo_1k|whqHW`|@|8o-NWy*P%!$ z5?!I=!s|&EE!e-tSN9xA!z={vlKxKj$*cvc!ttuY(1VF{A|1id8HXZn6mo?IrvMEK zuP;T+NwbcHXvS14V$urLyg_JQs%Wq9dTCgw!i--$loS}Tt499xp%~)$(;Hm%(f$U| z1G7e(LjS@5ccW=$+!_M}?LaRV1h{EYq*xRw7DWog>l_FnuQAoQ)|k>&#!~p?T_rL- zY2*YfBPG-IhHnDp&3Af5ECy3zJt$&5P~PI##~n1SckPP$ZesDbA3{o$LK8D%vmw=4 z4zqwY7Eq^nO1<^-T}evkX=xO?$a6K1T%4A}vCDIQY%Xb8)UDRDS?h-JthL)*ViH96 zS%vM*p`3LZEfYz}A=CPX;yTAZLm-y`edJ;j#^DL{>zaaW%Ij|Qfmz;yS?wTZwe#(Y z?wI`cFKoYHGCMDT!c{2P&$I@jY*l8H{XMgT6o3`s@C2>ZBRJ6cJnPr%}qR`z&~Z8J~nn&Dv&vf$5MV46k?Lb(vXr zD0l@So(_x?7c=ukCA(R6?{~-9(L;ylE(`2eZ6{rnC~yB_gDG;6yBGaAaG<;aThHMH5J)6eND|E)ZdKv-T$Wy z?G;Q?ntiefpq+|~aOYO&e^*?2l`*N&`x|7r!=0g-BlZzfQzmpPd+RDhm25I&QBN_l zR9X8tw5<2T>o~PQwqho@8EU<0p?fIZKln57O3mA&O-p84GqRzlGuwVUhnct7AJ3=o zJIL3)c!h$rw~@0*jZc4JZ;g@pW#Z~XGSOw|(HGHxPDuF@U6CsAotP|~Nn=zF}Jr4si^nw<4+A_RaZ}P2Zsw8^xKrJiSCYDWMdEA|@v=(%Z z74@tH>R<1yDUTE*V{m9XUmvzc5x4jQA@0vXs6ZUbFPrUEDE_;RJvIq((3LvA;Rt62 z#CT0hw_ENLAP#{VFTntvtgnUCewX>%B!7!Y*)8_Zp(do%vyy|^m=$$|^c&(Nys_6IA?_?04rDi0@<=pq1F z-$8+J5n?Hibo*P5IfYj-@DdsEkW1tNWkfCtnvr{RH2tBCs_H?gdhy1@Rr=Z$ROX;M zDZPDCMrsIjgb*DscmznWuYW%XK};(HtE^3qrhPtYVpP`4u0+Pj4;0|$_X*gvmdHpn zOSan6D2r=1aqJpXrcJ#TazNw_=l?G922-TTIRFzukOJ!q(`vV$x|Q-Hp1qz}#43SM zyohq;+jogvd?vI!`(Leme|+z8c#uDrOObdJG&1{?ZzNwKnrILFRtO(2u126Y0-(34 z`@S?|f27)|H!SRTx~A1v4r!?qeZHlRN~+dUCz@JIorsc_I;y9Lq*jWDC{87t%~+iD zi%G5ZaVn|xaVn?vaks?p2R6t=Z4wXBxLfNQ5y>@GYu#$RLGw?RG{x$uQ^)G46UORt zoEKackz(wj&tRAI!)W>IlNcHiyMz4!Nnc z)yIcPvR8hoA)6S2m@!Pw7??KL3lQ7XntphGz>2dP{i9Z#H!mQ!S?07<#AHUqEq05Y zivf;lV2exx?YCpBI)dGK{1`uo5bst^#?jS$eotpLzlGU|)!4bH!F#CH73|B<5sYKZ zL5WOGMAAT~S!pChKU4asRZC_ttv{L8;Yj0mMO3m+G_AMnIsanx7W>!o#0Vj$^w_uT4w>@1RfhO2cCo~F2dg(M=kg%@ z(Z29E`}CDfX~oxRad_PsNY1z`_fTyGUUGt&FxHIh%(l3e=@l7wy7h)yLVCpwZZjIO z2+=(ID)t$=Z)a>diz=gyX>G#vY+Pa19ta~#rxFpH3`KTEo*A2o)!FAV{hH6(_iT`U zTF4<&@|jt-ki+8M+v8XCqzv)eXEp&w{Fl#yCw=kCEEU<NC_e-|Sp7#|b((_9Y z5qo~M{JxD}yQ|Mhc$Ewl_)ciNHL>T-tB{-B zWY+Bt4$;@%PvSa=Wwx1__bVZKe`m)A(QMOF@nsTk>X*Qh1)5Pf^|rS{XM%L21b8zL zf6Nm`0l#&P+i%@cl_;L`^Rc)%q~Jjugy?9yz-}4V1iKZsR_bt?4DBLJgxH zvxcNb3CG7eH-0!sbl+Psi}W?)5wZS}92<@fpxn`qRMyqk9aaH3!;A{^ra8&B32P%;! zT6OF(Pa#Z1W^9$mEzdQcB0jC`sZXZ0?VTtM`qyZxYA`b=HM0P2F_v>cdnT>KC#wd|B0jzt)GTM9>mUvC=_X)Ta6y1UNeT5!KH&Pc% zf%{fpfYMNF3XOGP07BNQLe_wKEq$3$Rfi?f^21t;ks^=%H=jL+Oxt`jIW02BU zG+{X)vq|j+)=&?_CK~02M!Pu>kEj;yuy>q_l3em8ve{(qHL3)r^$tf&sXc5x0+IQi z$y!L7{EHhA{?R5sx(%pIDC^$j?NFN0l=?I1N_{8N3gORUb)leMim>nuS6k+8VK_sqFi3LnN&d}Fx9PuU%q|yWpk+4Jx zUYWu^U_>&4Ww8x$BM!SXI7VOelRiM}VKaW-==YLIE4pz0c?f5=B=;Fs&zP7p4QpH$ z3S+S1Ek{{BL4+JcsLGx~Wr(0crXqGDqEX|*txnlUqyK^=Miy#oD$6Cv(*8bTrJ9^- z0gh^N)f=kG!`rhN9P=yk@v4f=L9s)Ul%q%gO93rRrw$^}C}JargP~r5_;XZo6Fu=# zEMR*Y(3aU8JhRvsJahcPku0n%V=wlUft58UV zhN;j^Ds-|6%~c_f3O$FAS~weZl{rC=KOQRLdPR`AU$WkF2A35QaStLAr}*RdoB@5f zC-cU77?FGOlA(S^Yh@nv=}ugpin9?1mZ>_q zF$pYuJ)OjSHo{Dzi=5!0E=k2&h4PuP8x zS+Mo$bt{pPpnKz|^5hY1k#;vs%lAN?inQm{ZPxD(QoKz+jE4E+aavOB2M#!PqzA>Y zBF+7Vl_4urr6h`VSm z$tpNf*cEY=2R2I4-@$9oNXnA3pM(k8tIIM{i*;0e*g@OL~gC=|5nM26-pV(?)EtE{iy zKn)tmFsHI4sSnl0TdTebBgWbRfqH`{XzV#)9NL7MlgtjYz=^DWrmB7#s)u?s(}bb# z%THO^63?$$xKfL`z?v~5%c{(Y895jhF(cQi%!?U$R%L$7$hRsBV@9D>IXGqvwkq8* z!;NaPf(0f_DXRejmTz~m323fCz_7md#a{J*IW;4)KXXCZ8{|x5#COgA$Rs)=6*@Ej z$T-&GAPLxI%x4t&yU#36R3j1)*daSrADu`9mOCMsBP!*D~^Am3fwt zAFIr_jKWxDp=At?RSvcccdXJK`BxSRnT_W}k zz2SNgM2T- z8yJR$Fon_-&=(Q3ZmEb7DuPBk6){Lf(5$5*PDe!hic~E#5U*;vRlT8>nUZ%!FkR$) z1!GP+;_oj@wRfi@-bO_G1u3AD5U+qvR&M}0Me?qwP8X?FFs@5S%v2HArz57Rh#S%o z&$E`jU>+gRxrkS_l&Uw>QXzR)c+*AZDHy(VL~j*wQ99xT6=9|$OcfD8MArdNd@Tjp zCA(_S6$m93q0DSIQfLjXPNC&iZ$Qg~H*`~xJjhD>Um`FGD`4!^bm~H+vRBg)S0Dlg zHs+|^K>JSQn{0g%v_(t`8>}S@e=Q2g_T=BJ2&<1p<^wS+LIh%wu)Gt6SR^X%tTz^^ zmv_R9MV8lvY1#sZiz2eE{c4Z%X@YySrZOsZWgL!Iq9O-HWH{w(hbiG6rS75n8uBqFK` zI~_4VMYN|QTq@!~I%1-VIGBz|zR=m_jFm3t3wu&!Tk%CY_jM=^9+hw3W5AZVN3nk*TNW$aHX!yP!0ME=)(Yz1u@yAEz$j4+sS5=QD;qA$F)d6s zN9-^o%{ivaqPh;j+*6M}h8&S^=7pvz)i;ZqV^}#Z@r03Jdp62qVvD^6D_}D|@vyVW z5|{>i-&$;sZL!apj#s?_J4=RM`JEa0%oVb`mB)Tz=v?M}=t`_HyRTTLG(ouQXLMh& zEWMe_r^Mw7XG<+H)LQf2GmZjqA^~h4(H+191z-SM?yN$~5e3H((}F^kho-A5AAh!{?ZW@|Vom!g{^#SJ@#o{; z8VNVMb2P08Prma%ucXuJn%Ym>33A&*vz^617N5?3+Wh6|6@C-4$bK5^@$Z}Q-xpVt zUn=4CQ7c{_g{jq^`wcXG&v4n%cn<>;Hjzt_x1w0TuLZ%1^Ylfp;~8Ez5wRY9(TfN~ z)>R;&h4K#7mf|HN)N{3~{lAcaJw~zZN1kUtui!gb%xhnNp0iEGz^SH-8zdnQ1U!mU z7ajSxWYT9vRPcD%p9RdTU|YDLu#Q8`S;1+Jr$`_kPObcdqZ+C0*VMHIv6`~x+=^k4 ziFG>mponky8xNNA=>>cW?k1p@z_N|VJPgdRiHDswhyXUr#1sR(TOy741r4!n0!~&4 zU4w$K6~M>|-(fIgNv+**F>CqMn_2z{o)A7Ki$! zKt5awT=E@!WzURQee^RI&{+e(U+*l7m?#oFGu30azlI(g26o}bQ!i34|9xj~%4=^v zm(5AY3ejt?M`$&7d78+wwk!UsX=N`nI(RmR>H#d+`ShjBhBiTG zgDt<9n-!(ptnezcI?a5abhW2*AK31Lf&ptUE4>V32pmG-Mxj=w)W%G?t3so!cV*$oBubBs9qGzdlL_+l{%Shn4|SHkwvzwjw-x!!u! z6Gl;Q^iXg(u^Ste4dWq@w{9)emy+Af4ZvFe}VW1+z5dkyuq{{%|m)*UbPmy ziuiB0djfy7Lu_X78?>K!Pr~*c7=rBRGnlQ--Zuw0HWH$2TejIR%#@b)7ka6@p|?Ak zTRI0#eHN}`l*hzg*@|bwR{XKph`aMweEAFxBJ2IgC=IS2*q*J}C*9Cj`9wLa06De< z`Isq}nHGV`v336eDcpVgW~*t{u0~dWBaIyV_m?-pqpy7Dd~VbrwUMca%SPOS16_7* zR1bK`Yw-AleRl??6T2dbfeM!iEBiNAx)Z!e!5%A(0AS$w-Nin5fw-%zgD?ePu)>oi zx!J5etfBq0hnw-mB#b@gV-y-KageT878@@rhqY~Xj&xU$zB!vH!Q;Q=BAe{AU3KIq z)q~cNp6V$iY=nr zfbm_zEX9Q6H5!rXvY(ai3Bs&C-{aLnnck7Gl|ZBlRBl)*falYO;f0afj87vl&@cG3 z4+59aP;k7{4wP=)qiJwaT-j{Y_cN?biD68~QlD5@d+fbVa+6WtgUK0`Vh*J(MQO@< z;SvmoM{X2ZPj*u32zK(*+ltttEksYXfAzM~F}jYAb<&5>9pHhLN50pQiO-t|(ONIV zK9%+*kYd`!Dvd)vUG6<6?QE6i?wYpVNjpxZ5t($kC!DmeZ-5>LzvuOm8e1;_V(X=j zm_j4AULkAkg_6bnf?Rv~G+-H9FA=fzHsfRK_wmtX(EjlLxczT1GWVk~GZkOc-V+km z5s=;=@_oQGwFw1UB3rQC0JY(}@pzPAM{NCf6TqkS>)Q~I$7Vd%9Rz>dWt7Hnm-bTJ z^`@{Z!O-9?S1XhcHbv#@e@wnUUGlL5R6cskc8B*d`YHvFgi`sMkIA>bOFq(7<$I)S zz5&E<1@bKeZtQ|Y&s1N4k|t@C-hcZsdftK3U{h5d57mVc)rAq^B-L)p_JunjJ`N~c@ACFLl0Zq^PYYjI0q6GgR;Kwq}$i@`- zx9PiinsI1D&)_g<0x&H%H2aeq%#t?4YW7*VOPlQ+UrC!kV!J}``?;@i-xAc|heFWI zp4w>M($o>iZ0hE}TUpZEAK8#YSVnVuj+MK}plaL9_xwdAyYz+)&7U&58W#cQAhShJMk_!HMX2@8bws zj4QU74o^I0&S=&fK-bMX;osk)%46H1rX=g3nsWpucHJM!K!a*rQqy9<3$0Z`!R5W{Vrzg!@rIHgZS?-8pA-a{kNC}q+IHU`~ZFQR_r*$aI%NKq)I*VSx;sG zBkT7$`1M&Y=E~#l+>)PX`ATNxR9Xjou^YI)IP5DK?kicBhxFGeD*UaK)v(>OLhLB` zJVy-cy~w`I<_&#(R&)`e8kz4JB|EJR;42)Wz;bU%Dg28e44Q3h<#Yyen*Wx=41F*p zG5(^G%Rr=Iz3c1KhL|#zV+?|oCEJ?c(v6b$jLe-?s5fbCFj#M@l9m6V5-??#NSYmc;G&kwX<)sMG8`k}oW ziT;ij?D6%%*ho?7?`VNtS<;Rcl*ogZkzn$9NpBb%~*kexp70^ex<1kHHI*XLkoGd@8x4px?Y$!5HhYDSliezmiX zqv8Ad9PW<4(fkiU>*xe7L0`$YX5^nPz3u}#vvZN|voM@qf!+-#h)?hVD4nm`(HFi;!wTL6pD0wq>QBKJV9CfkVb35f1Pi;X0U}HNge2(xZV!l%$0zv3| z6(SgfFgTf$fXv9JuF&fgw5B*Zrj2V;JEe}u3unE~RTSi_8;hqK7dVS291MiyAZ*jh z@L7-yzZWqAsbS5^Em6{>|Ec_V`^V+SyCOfvbz@n`sQ<5sk3SzPK3e~86dxb{zb`(RKfZV`fi>n1(+E9tSXbAa#1c;8o9^6`&Jk1i7GX!yQ95KUdBAEnc=qRChCrIH>W zLVEa0p5YKPt#e_jE7-E4o5*PSL6K3i8A8MHxAW!VOjdK2m33cAUifmeC8XqqFSmz; zl)Uie_LPv47l-raLtX@+L0}!c{7SA`r(pXX*1k^J(YY3;&JnQweEF3)a0_?XOyZn9 z;_kHBg~!#yqp)qJj4k5m{=Oci%`5z>rwOT=KXyx@KQ?b)Rc!j+s@N?%^=J(9e`NID z2S9;Pwmlk02ps2!0sqEp941*5gXvK8pVkN|HMjApJ*^S8?&|@!UDz67%g*~vL8vvt zR-N+sKc2SlnS!=Bit!O>#js=$4opAPj$va<7QDpGfm9X{K4Vq}tZ7^bDTk5x&8Xg@ zdSX9xDUU?&55&*>%ZtgRVSUvpudA%BIN78}EkM_YdNmkVqq(fg5MR9!Ezmn9t{HJK z3P$4-_ho3Aj7I1&300PF3>uEUh4sLaLRNZlJS)#gZt!DW&_Fe2kSI#^QAsr7URV7R ziGpBj0)SA9Khm5LDBq^vHy7GlvZeM2o1!ndhRP=~oD2HbEE}Jq1eTFapfIM`yg>Qi zXZ@r7YNSgevpXKlfPL`H&sQgtmDbh(JSD1GR`{)I`YzKtQg!q0|3-T*jz@=w_k)Zh zI#T*K?8{gYm3Eq!|5>+NuX_lYVWSBhS6S)~x`Fbmo;HANUqqrHYUagObhzv9@DeKT z5xUy9SS44M&gm7p$v>Sgg+tM^*u6L#5A){DtbDu`J-r&0`(yGtLtec(jGig)F22r@ zS0kr=DoUmRCkCY7a#C*woO)`T2-t`m&eHEYj&!2|3{*54??pT1DvuWV7+Nyh>S3Rz?A1{?#SW9D@oYAIn`=4`5X6I+-3kJNsY zyin6JH~6fMQ~72zC;OFefYYTjx(Kk^Xq4O6-77XghfloS2a z->Z)fVpk+vYm>YdLto+pxx9;4rHjEF2^e2)iRV zpq6Dd*N^`e3#a-q-&t6{7h=vcBgw4#@ki>%d_VtPbNc8PASGmP@jdfq=_*t4p*f;u ze0)g}Sy6B3!BwfR9}nPt0h;5W^_cqTa1G2=;R^NfTRq0d6t9h`Up2fJqPugK-_n>t zILiV%;aynEa`9C-3m!gvCu_yWxuDs^vI~Hjuk;42!mKTZzH*acy=`Cm6gOSe;0eI) z$Xhy0gy+a}m1i}c0c(|KhJ=@RC_X8NdqLV@2ZHj|m^!t~*+R-+o-eF~RksYw;o#hw zW!Q`4lG#jd&}0dXFjvx=EUOXV>bgiRL_>QZ*o!uTy()jp&}nE} zw?+>4x@$C~^9`#|>GWo6$$fh-M{_gZO8%`8YkzHHBTVb~Jx+dg`Gp}DF@5-3(zLO$ zfG;~xYB&C$!~cuU`&v9-bKW=Oxe@=$e;icy@~B5CSHe`8XK>4Brr-M9XTkd(oAdj9 zu_t*L->O~qtr(-D?GO}^4xES`^gadc7B4o4c-y#y~ z{V_-dR_c+AbeQBp-1t($v8N#;d>RF4aFDO`6yDzeYGWOM{a}?R(L!L^Gh7(D@xIsM zVMM;q!0EI$w3GH=p1{xGO%cfr7_y%;6=Sx3(FSY;`RZ@*R0pOnUHL76_;`RCduW09 zA~Qrp;8eS`2=-R{q7zf|6JnTVf3*W02Ohs5@j*v=@*k?5ftQS+*LX32Qn29EHVY<;D_k0OGlu!< zpBW3xj)izLAi@j7-AL|DoRBKFdmT*d)*>=lA`5#e)zr;qaH&ZJ&Fh@%0H>DHZp_Uh z(#9_50qMx5QfCY?oj1J{1(=G;VSuy;cIFX#^szSkiC}W@rjQxzkM*S0c_41`IC5K; z199UR;T(wjcCxsLY_YEghb&8VP+g(K?qC}x0=?pC?Z5d)GKurgth@VIbB@Z(3AtB- zph=1%;eE+uEJ9v@DR5~7DdF|(1ub}8WIelKUTE^6$mDmxfWb@B-4M5=8#2qK8_sNr zuoqM}tWX`RGJI67SPF{KO&ImGMdrvm&6`$azPxj8K&G$+ zI5#6uD*=z>ipqNt-r=mir~=Q}A}T&$Rx%`bWJ>D%Js471xlNpx!{T5f#CR70IvFO) znQp8WzP}A(KpkiIGRv`@{OE`O2c0~m>_2q!_hqb9=zkgMza`zt%|F)3&m!RmIvEFJ zF{=23QPtVWui`v%mrni+6G(dvAhchH9|%V_T6Hx$`GU0)oG};Ti@WDIr?8Y+kTC~B zEV)SpLi`~oj*>NQkx%UX%`CZ814pKzl2`0RgMeJN)d7jU?4=sFHWkQK09mp*fkSzd zu(=kuSSDHUs}5Hh%tOpg?agc7i%KAq`;=_1i3t#FrEX61o`x}<;=L?+uNQ{Nk$1(1 zx$?e5;`8v{$&-@c@T9yuJgG7{JgEW>Pf9L_C-ELzS|Pt){5l+2%sEi_3To5_2qk(s zkQI;ia!|Ske>u75I94!hdi8G$nGX&IT>4EqX(Ty_;vkF^m_B^n+VN$>zrX z7`eQqqp}$?O>SW!|EJE2qGFDL$x4Zs?3@+NKK%3a7?{Z{I6Vq3GD|*)U7f$~VF(ku zJU{{4L4jV)Nvwz)j2k`{4<Crs4Z&-? z1_p*P^M$92s+Om4I;a<9uLcIA70`nYyq?DitOn);ZHv5P#uxEJUW zf;FMge%Qd8$eQZ*mw#|qfi=Mc=Mn3o!WPKnM32~1Pi$&Y_zfPI)`D56!Hrs}lyqt- z_CGM9mYJ}#6qDlF_CPEfv5rxW2}?Y}1>o4cO2x5Z#j!tjezW$#PN6D%79o6S8d;67 zz4&7I!;Qse*@<8qAU-xv(#b@n)>vHkHpSz{yVt%Nvp;Y-H+FF@9=_PcgYht97rW{3 z21wmj93@RHMvjKV7O?1ofejpX?%b?OjUVnmArby?JOJZPZ9!q#3a6XT0|Z}L@|m%o z9OSnS@-B*rCKc)TtE_jb%0JX2XCTRVL&I-X`A$7@I$nHbx8#Nfz#fuSg1yz&vAH=Y zT|XB4Nf+ldxA&m43ubx^JK1`aGpM}8_;MI#d2$KL=Cf>c_uR|yUQrVH=w1XP8!}*% zxc^z?s97e}JuaDF&mHd78(NcZ)nv9cVp+?*!M!g741Z)}hJuqQLRxOg zQ5ED~n&8%WRtYj?U5bK0xoLV%Mr3U65z^{DUf9E0d)ADLopEWR2OhT?N66QZ6SuPK zc@+}eki97*UYGUM(GFEU?(5jDpf11pMs3IUXn80*Ql^D6V*Qgw)<(+(5tJS2aD_fc zuoW6SmP#oJ3hk|^_8U?w)FV6>-cL7JZ=olG#r(;uJxpl9Q(^^whFLRlhL!y`o+)rA zwPrUXNO+0Y3~^?^=&w60o?u^ zdN)N}g^w8?eMc0P=ym&1uqFF?1YF62kN!z%AtR~n6*p3n1($s0qG}w4!9}AuoXqrd zfynQ^g22Jh^uEC%2LpBk%{<$p(u?FQt=8G$EO zLv_M}^$GFsK0f6w?1fLb{Ut2%?TyH+H!R}8h>COc`yNJ+-rdXa48PHa*pu`{5d@^~ z?TPpCP4p<7Q$w%Xzv`L3YDmIU2SFykASW^4{Wk;JDcxHkh25CeaX%F9#NyRmZ!7}> zmvK=BK?;In5c{k}su&j1RK?z|g+#QT;5m-~yavPQIQUD~mcpZ(Yr$4}3 z<5JXd2*ekAIU-(S#Eso5{YPonN_(NwME_Lw2(zD$?54HELl&S3tz|SQ4JTd%ySs01 z75`DVNHk8|f&M!3cABBo0RhnLVI*Lsa`|;>#_}RY4hrDrly-Z(p%`lcY$5vEx}Bg{ zO<7%cj`}D3pY121Ft$%-u7*0Eav?{RB1n!Z#xwkyjaYEhDGZe33We}I7hJ4J-Qq0- zo_*!#E;#DA^oHySc!T^y7tk_163OO>Jz~Fe)o1lqcNcz{z#T1;&f-6i4z&my9%lSC zo`rFCIWC2@K%JFkAr%P)Cv%rs`%MNE5k2w?bZ1zKjMD3FKmgYheF*@#^TfV3z~HNb zuY&%?^H?o(+IL|}?#tTheR@)1`5D`{37WHA{UQr5@z@Mp?gVn7+1eK&K)o`K!<*nu zzx6hGkA_89lx=vSc&K_Chni&K+IPgskStaJ!zTmAm{Xv1IZnJFnUDmPN!szSEzy@2 zoCFLYeC+4~zNM}WgKlf@#_cnyYr`0R;CPJXKgxk7*ux&fnFvQk$H5mF%ZFqvf4Kx* zzmO^`^dT>QOskG3qf$p^Qx}A>aYV*c_aRKQhuwqq)Pqt1PDB)8ZvkJ8PLm_33d1b9@KeR`cEemSFjh+;(?n;h|Pi)?j9 zZ|x?I?v(p}m)R8dCdc=ov3fMxdSvIZ&LoY<@n}GE z(p>UQV!q54b2P{Jtn^fP-eSb8Gg#!0EOM=krYZ=jUG^qF8?eMPDHllH^#>K0!@$p-z+((ti+~Jt=uu+K-eJEr ziVS~{d?QEP(}UbeA9Nwu&u|8U)HMvCWLOBc$05YRWJWUl$LCW3J?0U1t=&X+{vn1} z_x(WkdEks{;o^YxC!_XL+7p8(7?E#Wq2X0lGwSza=70_3n)W|IZiLrqpqLiymrk>1 zAHslRhP3K0$HDF-euunjTa=<(Vh+S->ShYiqbC&8@xoo$+ZDI$& z@fBLuuu=}%pA}=Szs){`ix9f17*pqB@QI4?K@g70G=5uKk_8ujgxpX$B)kLi2VqCe zn6e05x|Cqha`Z;uiy3j`3+gth>ay(xsE!&aR;TKYILE5lDMF|X=Nz-%#VW|{(9CbO zD_sGHs^TwIgXr+2{Q{dq>oCxGVKQmzh`~3YmUiB%yt!*8Z1*~u#*1!4D@W&fFzD5E zD|dIldze`Mp#MGk11&mi|Lga}=8_`&mv^BnK8QV0kIA+EiHG~cv_0oBu=fT^Q5p$o zb<%M|Ea=*1w|$3V)LWkjBR`e}n2V!2DTQO6vN=Hb%FA8oM z-1lo)#Ct7WW^7S0LBXuN1W%Z%@LQV6Yc7`(8;*w&Tj)=rH(+mQL%pxR?B_yDf*fsG z^b=&~71}L}PJp@qs3&4v;_)EjT`h}#$>jP)g-9cU#U$0V_WrA|*6NDiBWw;gIv~aK z*r*qzpS$8UvVHUE1G*rJQ~B z=imY?X^NRm);4^hh+_fRs<+uK=r8oh1vSfXO;hlvRvYM3zC{o0w7$Rs-pTYim5jO% z=46^9KI~SyUP|MBEzJHooQEC~RD{jbH|R!`1wS=E$_Xo(%>J|)XsAV3wJf@zBR`8- z3v=YzSElDkFJffKe~LLWfC*ike8dD6Dv!Xc-VD8+`ux)Qv_X(hI3N> z#$hzvhYC}p^AA{2+SUI`CUNfchJ1)Ns6x`mivcUaOK&G2Hg!39P{)ow3_l%r(oQiq z)GL+U73sJuG}?gok?@Hg{R)iXhe#d-{RAc{tObh#dZk^(C~!-awM|6vHhUA5cWhk( z=-r{8bq><4pI{_IU*|~ftfos15ByJScnRY=aTCsIhOSp9!d=13jwZ_lcXzV<@;;Eo z|4$)H)p1?OB4k`4*T;dH12I?NxbX<&0Hr*5kjAx-CzFURaLNfqh`7*IulpA5kG!_E z2>6FifzC>Mv1L{pWlKC9owIc2dQkJyp+$JZNr z)@R|yoL2PimqPK_Dw&Rb^|yL_*b3q8PL=VhY}yZeCQZfiVc#O-BRSvm^W|Ya;I59yU zPU@mfz3c6&lXyXXp#|npJMoMFDU%2!*u71OfOU79tly%!%wLZONhg=kf12n`@{9?< z5`el;36mV^+U;lr`?LQaL{s6xasx6`_IGes7w=3A-e%R&Ko6sx9<4=NRAcXkMHahL zmAdbHp{z{4stIZ6&-u~qaTZQ)E^iABGH}wrwQIR$01ARxs+=A}RckNaP(-BdIvzJ-P>^ z7r2lZau=D=WM>)Seeg3tH}9|qUQF_!AuNLMGmnb6JegC~4*T?zh2Z%$m0-PxdvVnC zaA92JidqJiWhn>%dBT&873$848ugK${FsAL9~I$6hB-~pRG%^!v4S^BI&$oBbQHVJ z#4Zy3uneR0RcT`ILNHyZm#_3WUcDPU$Du<|c=5#6I&RuPA=X~$fgh+RtKg7rPx}-e zcn+0WE$2>xISyzM44k|SE@OM^yikpZ@&*8m63n!|(z8QnVHl_G{5w(I`6t(1J=p!) zKZ?_2Kg#c|9J=z?>Ce}*K3XPovW#JTAEA!kD8AC75EPua@+&DjJy=*3Un4S9>E^i1 z%0Bos*aRktwp0>txEcXx#;!eD`iB^JC1_$u8EBII9JEE;Z{OwWB3xVF)t-=he0^Xb zYzZ51s_1j-?Az_N#WTZ>NrdArRmLoTE1>(naX|7yI)N<~)hf)a7gRwVa>lCP+HB8y zm`oTtZG3!91>uA*m=fx>49;nI33fn7ok(Zo(zA45D>SZ&jc7OIFGXE;$n9MW%c(b< zoE#bi1+1q+PKO{G>#D3jE0HJZY~omCstlg43T6b|UFc>eckn1&R=+eme~|!3Y`0CW zg1V8IS$FH|{!Y+0cc3Eg7Z}X_?DmH^lXp;rj13mci~;dKEp#e&J(hR|@jq z`A86Fh54Yvbi;!KQd!unCx44VC#7N>$ly3IDHzs%2@=QWa9cGdo-qr=7CfAKt`Y+F zG(s5UaAFtKARz47D4x#PfcDZ43bj6pGL$ph?fw@ra=U%=PoYSFA+V@_uyC+i0xB6J z3}eqldK%JJjFEuV0r$oEq(DuiY)Ys%{JC+dY1x$EA-!Qfx){?HFFRF4FxcV8r#c*W zk-{Mt_gfJ4Jo}_h#4-@Wl4sNyurmw>9jArdIH0z~GX(GUQ|C*U^%K6s`L(EIVQ(3s z0zM{&`Z+=hd*W+d2_6#%{WgI?>D%^)H}RrJ9|zY8M!oSnS+9$W_*&vwQ;0h5MJijm zmw{PM;5!CxM8Gld{Tf_hT9de9+-`3hE?D7eU3Cc^3Jat+pOE;GKFk=a0U(&q)ln+- zy9Gf|j zEvrq)^ioLhioUb5Dm-@%1{Mm#-^>AqSEMn7oCZw;*sQ+}ugfgChu1z8>6i)XK89+_ zsrH?xB^;fcAxxl0>6yG33%iPmdUPb-D=MKg%K?P%Qk~jm!=w*(RSt9{&EM z=B$&HnZRZPRn#4WMDjo`U+%K z-U@hg2dwQ?RtpE}HrwtaolMO})$j`?Xh~dZ6q2?qX8(BWVAHoDk!EAHcSjJ^carSfoIt*Au}x z;n!{u@($Bqd5SgmnLW^MMWcXHzs?ricp|%UC1z6W-THA+4DK73iy9-ZEmM(L+HlUY zc$s75wIz%U@={fG*CQxYW#Nu|>50ih#qh-bejGf8{{9=Z62){&RK!k1U|WMdkKP$z zVTT`!IgkhgU`GrguG7MYCx%W$oF0WoGd$d7k7}lUxG&tHu!h#chbx1xcx5~ zi||4|J`vCVtDQ^p{Y>_64t(_pIwyJ3BswtkMho(F>kr1y@an-Y`1qIA9_ToBtCSAwL-X)JJ|n$ zJ0S{*R;mHxz$qZBh~3d?d>;t{y{)(fDv=FZg*@T))B$07_BOb@^$<+_F};hAB*qIZ zcR@^f7c)M3DD+crDH20P7~NyS{;}NpN`<}--N>N8@bn{6QjmQpv z@GjaukMANN-o*}@{mfDzHD%o-VB<&wctllH21iv)47x`(2YXaZ4xW{OP*1I7`aZ#8 zGg%BuWI8s+*q<>L2PN1=a~R=AMEJEe;CW5HbZBt6oQudR==0o6=W`;Sk+!6BMK{GT zr?guUYqUl^Gx3DGA1=QXEm>BHHFeE$Ayzd8L?RQziBk31G2V_v z^8lv~=-cX=Yd^?WWdC|PC6%cEeyl!ca0v?r+@n%2Ln^d9(?F?T80eZ=kXYkOH^S!$MH@uz~>lcTP zb81$t%Efh4i8&7Te%R>6h8C-zGa2@`@G|^DE~tr2zpI#<2f4>}XTKD;W@Cu({;{T4 zuxP>fS|SkaeAp8cJQ*Y%lv>~6=uz}ObIyX(nb1no_L4zgrjLuAUqGztUykJfKN?5BhpjPFgtLv@J%779uRaH zWDG^&Qs83m%kPGUs!^fQeZJw{T*Ajk(ALzHIyg0@9u4;N<1mO*Govck0}Tch1K6RU zfTDd0-C-oM_{+(Y3v?}Xn&KBX#pOV6smM!c*U*nbi^0ZOkbS+ujXiK1oOAyh&6wO> zsXGas&D|A-v7LxV%9*O`?LcxK(jU9V-Q_Z{K}OmrT1@KTejw+R;kW6fWbNTYnPAvO z+kqvHMCJh{e{6Q4{m-*m;Go)2<{H#;%EW_xk`{LF3MTC)7s8WpL_)OKfVIVki5nLF zA{eIJ_G2eI>G%q1aeoo-7t|)bV{}cA*9yZF^iP3EwjN!2YM0VqVE%)|+CXgzDix|U zN9@IUBNt2~^}ar0kEaH;$}?G-xkg=`h5;?j1`)l36%l7J9iK_UV;a82lGxI@or3*} z#=KL(JHeNcS6P{zjikps#YljadGm#7f@%^2n>r3BU{e%B%sz2BG9fU7fqqV42?H(! zoV~?jvFh%yZy&-o>Cpy^E$|O7?)*JpU-hi!a82EZjkemSU?l?61(}>__T@1$z8(!B zKdnlcN2Qmj^tvmMUh+Xo=a-E^4eF(oC!P{$f#e2oAMUh?7p%i3w7nmeUTCMO3?T?d zaA%*$#(A~h=ADMidH&EP^(vK0yUhWh-MzA5sO*z^5{1o}A~o$5z)T4sOao7+eWy=- z4%}gJ7a;8^Y%VcOus1^`1f!hb_*ziSbFy6` zS|Tb3P*k33U9#YK0F8dYyT6^B^wLTP>ai4&jZbc%+JnG0-3O^~0r+d*35vgjPii-j zkGfv9BV0!RG4aRdDHALEp3x33VJ7F9yob>$zxBSjjeW{5l4Tn$SswHa_Cwof>c!!i zpr_b7@-zD*$VPO@wK&1I45cbd4sn0Vi!Z|t5boOU{iDl16HZ*9#p#h`M)1-|GLt5_ z?e=>x^|Lp*(bNwM`H}?AoF5T;iz;f@3GmR1RqzNqjhoiIY7xr#HoH%@R67797@tNE z=F3EdQ}nF@Z~zA)j)HBsw}NB@a$GkcEudin7I4Y(KKd(w{Y?xCw9mA-*$QetPzY*b z7l^ya@+mW+A7;d1+mX;}G6A+2< zQf~~2)q3RRq!wc^&{J-io%?T*x%r^;`!Fp8d$k&vI)LKc`1&gIZ&X$OS3*hbEh|( ztyvog*lZmu=o7;6-qLx4vEK)s7ZbDZW=z^W-$m0R#8$TXyo+%j)%lXB+CO)24d&oR zL!?}To44jd5y`gCM8WX96SW|2{BXV-i|@=bOZzNzsXAZK<+kFdbkQh$?UE_i%+-e4_wnuFbs?zJtBO=@iJ#``l)x?7upnJvE{J z5`8D=$XNR4lBmgo%QgxjvF-+bsn2Jt?~i-A>!`#oW~C1al)DnY?&Wq8mxHuE?W}Ql6awMxC<-j2d$V2ZiT?ck;t?2WjwjLSx&{$Ht{y zO9#s?O;`NgeLp{aeG=e$ait!=?DZ#a>D(c*F$r^MvtGHu3!6SgKx`d3eI4Fl%J}p( zJi~frJFaJz&k0oOmH+aVE;z|}9SJ!;z4B}L1=zVKi2igIhw|yT7`nm}JehKa4!4!o zn-;unw)!}mbJql{u%?-Makm_xb=Mq=kpq{gn&h2=WWgRqxlr%cg~W~|^GCkNX2gO) zu?6{F{lPc!S_rYFN5e=9#BRqob@%fNE%$RU!>ndcM&lB=P5pI7P-ej-I$@}6$V17- z=bARw`%aMgKQRC|We&ysgNlH-ePjtcXaR->xVE6_DhONaEfc=v7@ZhX%{e$O&e3@Q zdgpZ9qCzPTvgeaI$(((}A`{X^x(Qs|j|*@`A< z91V~$7?$TXk)_7vBu+mz>z3|WGn}je3%In58{~@JmG7;;tB}=!x=V$a);sn$_bckI zO;Hygpt(d**T+T7(e%B_p)YW=e}$DEzjg`6yH!+Bv#eyrZ%+P4ocx#zic1{o< zx*)Ab3#tDp`Qa-;BjXJ4KU`YO>6qIp&@loD(M*;UB@f*6+IRqC29s6}rWPgg;(Z6+ zfREYs0%7bocVH~V`}RNtW)=JVUEGpZ`MPzN_*>v;$gSy1bMa+NNKj@v?6I62k}f>RDOdPz`| zq@5@hS+u9~;zp-g$KdzXvZ1ZeLV#;2HZuxCG;K7fjPA$hC1H#L z8QSdsj$&ZK9aLhfNy>*M=8%d37w)hZBF1l3<=}X66xXB#)FFb&gi(!6vo{FBr{b9e^(p1}(`~*m{A|^W#xZNPVKHw#R)xNTu@`Ko)`7>Sm=XBd2CR;=Pdm)z~fJR_FlRttCP>nmB zS+zT$k7>d^1^`WGgq2MYDd)o(OiGl0IO`2eZU7-gsskhN>A=Gaa6DYV|k zn}f{fQ_){*fJr<3`vUQC#PH9E#FG3kh~@;LWOvKBJPOxhm=x64MwPx;*kwGI9Ky7Q z&&7lJ1J*w=shtqawVy$MVan(Fqtj3D0f-vWAb}*B-x}fc&soe{IvaG`tKLosRg}%n z58AQ19L9b17NCiGS>1Jv;_e^0ObF{ss1ERvgm!~E(hNRkd_4bb zQg9+E2*q3t5FGBA4VBkXZ;L_9w0fK3^7ZhywilpQ(|QwzN^b9sK>b_%nYnz-y z&3UQs(jHS^0;@CBH&pa4sSk%>w{%J~GkNOHwX8tyQc$jqh+Bg=HbLM~S5cFc!D$xu zlF#iG3NF-<4}!-D+`e?4K}(jSXrd1TIHxmTV6#CWEzFNfGw5sp;p3|Z>8tP0I4f|f}p`ns)TAkLVk9v^`xYnDMq^wKb{5xqUvLD4V3{`vB?xE6d++&YczYH6YYF_6= zA>H=?5`^5xHXii#UJf~1d!QNyNSG7OIy2q+iHO1aV6QO0{UCHru?u4jLG7Mx=8%B5 zCUlr0jGo@qWnct^F0=EGtnr{|@L5>d(~*Rxhv)~OKH+(dbsWewkVRgS(D#bBsTX87 ziD_*|R-74=)xswNX}h%-@{{c&0Md-eagG0c4r+q4ID*sE%|Z^pq|Wb(=dNM3qa~O; zgn&PT7y$vhG7jxNAYnafOY{*V5XLtG$TpBR>V7my(%7)Wz7>lu=vaf21*3ovwX@#P z&SWfxvK!ed#oAE1O389w4&%<@BKOT*fom#j56lD}Ao=GP$bQ>^5J$ z&ohi?i?Im_H{0F8fpW1zfBSM6u&BQbZsjgXlEa0B(Fpkq_Lc@yUI~qpq_hfoKUXCdl&K5mt zI8B^|Kux4$N^oHN-_c^|NP68M#K99tucKgwHjL6(GhtH^#jB=+eDByAP!+&SLwTA1!e;OBAL{jA5`B>DJbkPNxQ zqi@0SJh|7R@Adp92)x4Him_D(aalnUf*ZZWPwcskD- zh(6{eS(D}Yw5M9QK=lTfjlV`XbgNwlBbferj=c?g1+c$eV?T{$3h*Do)z=9;u!4P3 zwsc#vVAo4(fEQtB21F@xxcMbSqeQ^ISrv8GiBfd9Q?v$o3|NOSq{w_6QrBe5kRo>) z)2_W{qXX?+_tGlRNKE{58jnO_0+RGxUn~`bAX0V4;_#_fW6RVlJXg>$82`CK~2AMdK&!)MRAt=A=oFYwtOm^? z{V?Za29Cy&N|#<)q0FEa^w3?5an>x*wYJ&&B__45;dcFQ#8Bc?a}2ROC$1SHzB#rg zbKL?a1~@KV08K4jrlS!uQ_jK**whQ#hO|bOsC(>rSd)ll8B`(TvNL!KoOBoXhMi2l zIfZBLYB!M!jHyrn9V?m0W9R&Yh~E!jLkC+9s?LT!Uq)>a$ z{_R|GCV(Aeil@Tg{IMICr-j)^z;P0w2Qs;qajOEcMeM#n>{yB=8NIWBevbbS( z5^e;DEvjdgh{f#yOY;c`XK)aOLSa1YcS3}{v{b6Vb(6LnMvpI@;zXQbzpQewtUXY@ zv!i2+avAgQ+dv19Nz8{Ma5Ege%A6h;v84;Y9A)o1rdPJv|2>DOIK86R-A|zDp85A5 zI(z0P$%1zgWY3^eGP`#QyHt;!E`{L_B0VGYN~!;s>{;d z#Qu@~?AD8_`|Oi~q)wN9%T*Db{r2r_$szqVjqlbDr_YAnsx%~QP(8!0#N%P93)3{Z zj>8Xf>y{&U)^6fxbdJ`GG+gqWuzKA}u7e}nu|^)hihVHv8mJl;i5EDmkJ2|qZ#5=i zmF8}_kAp`GmjNYS4TDdEQ!ew`-3ZYMSUj8KD}9PwjRB4Aar;A_jf+Ld?g@N(%HoT? znURCf zxM{`ZO3xaB=}?s~&A}DNz6{qzxXvcS`Iv*mqyqAp>Jdg3Kfw(TbjEv6 z8b7nKvPrzUkzOv-G+zfO>d=3!f{S>I(G; zFUZh>@4s>un+KtD}1F6z)-_Q#fp~}e<>}VmIE`22hhYxYPOrPsMKof>FMp9(~GC=X+40K(o6!m5H1O{ zinof|)*VMJYL$SRdB4xvdnN<+^j!XU`7qgguf5l^p7pF}J?mM|de*ZZbW>LV9Iwiz z*j%F`jR>C|sED71Pz3k4tzICq$jE4uEBUO>#342wot(^IjFxGSd{Jq(C*`TR2RnSr zJP+|xkttdEjE5MQh^@lbMAXQplu-K~ZmTB5v6AH#+V;G9bQV0ruG@~Z>`ChpdF@U- z-EGro*7zx)HHm?kcHSoK9G}3*>>+_edJN_%VoxlikrT%*j9r#EHZOKwGeNx1W0H4q zyto-vZCi7Kw*HUi>O-+danq2c7)kz%k?8fMzvWB})tR7wg7lIt)c&vP?hYSKe1%U< z?&A}h6L$nWu|v6rUdUih8a>526hB*9`_$$H4&v%?x^DwO&8&y;@Z+|{rYqvM&Jw{~W7-~Bo zA-FlOJ-(+zf3Hs(WIFHUtN2T476que+w@4vTbSb`qa5DomiEZ4U$nkaDcZ3$?&-5~ zvLGx9vSlMPjxZLa-kcUyqeD&0AH4*3Zu=()`*Hs&>sVsc7pqT<`eQXw)Lm;pYBj-r zi^&?RGSA#B3>Rku%T|4^XU_6i$(&1K#Yo|z#HcrZD($rgu=qW*^gzFm>8TSW4|=V~ zd0ce4Fhi1)Dqb4@k5nmg97V?2%jCS5LXlobE=G1t>N@ng6wQrRM6)}hn*`#D}C6u-Fp5an(ln<{`(*k>ydK+)Z z#{nN(7YF>e{+sewsq$k6MCheZ71TO5+a+-lD-%v^ZuPR!^aU@6zV{MW0Q%mxLUri& zUkOJ*vuD5wDv4a#!>y5=crMBT8)&rc~Bj)2I;n-Y!TrA=U|4wtNFlrfyaDa;$psxags?DDBUPh*F7P0MRuc)acJX$$+< zYJqwHAJmWwU>V{?k6ze@IRofjI-CEnZbk?04NYc0$?5D?>_4(a5Fq%IKE+}efi@&$6xnNcXQ@c_g^DZw!WHTXHH3E8bqlDOh;;Ic ze;8u{I{(MY|0&d=_A^!av3b}=ek|uuhCMOtTQHLS#8=1arBWcDL%3f!S!bcO!UOHH z_#&8H;1}-VWKr8bhg-O7KN>%D&BxUtjjbs;l+`|OrPS5hB==`&Kf~xpYjDkC1F^r}lTs58YZ$Yvm%xvWk-E z4zRg(afcpVVrdO4ODn!2ldFFu^zXB$$^3$*Qr-pS-4HE4;T{Q<%6)S3B)+n5La&MR ztB+FdE2WoZ|0IqrXEt~2l9->!g`5zZI5wO18Pnl%`mB8yQ%>MWFWOKyx?HyPO& zL1e&wU*0MG*7;u4a4^Q6!s_@LM)h;7xA57G@>y0BcIMK^5qsU2^OCcOxmTs%EA5fy z66dK@P1UTBM3X|)Py7mpql9)8Cyp~R|2Z)4!?KP@< zDTU$PZ7er;4(l;`ExrXwVS9}ggX_)+Z7W(Ll>U@Z`n(J(&g1OT{e933WZ@*)8ib z7stCK_0C{W&|P@vxY!u+gJmz-nMS^;y4kqR1<77d?z$PpxH7; z@!9l|Io|6imEVV~ax8Kaz-4_~QfZ4AY${^6y)ylbh4^ULqoM>%RnZM_%=t}L91;Zj=+^0DU(og0!;7RlqTZp@RMUK(p@!Q{o5r-+1yjtN{^AjbljS} z9%J7PzosW<`-^>e7@E-SConh?;QJ+qB#tt3^7ttAFU{^42#e!ljamnO1wlG2eiVhO z}p7U3~-ebrv5G>Aj#;#}bsBhnxQ&)R@e*ZzEbnZw{X(!BFCYuv-%76oM= zOiql?%{+88_?16f)!CO(M66U#)?G{~=TnMwn>XohKub5|;13*iQZAR^q0E?)lh6KV zU?vxM?eAVKin1IkFnL@yZIeoiPw1`luKD~LaqLqw^7tyDYDPSytwW=pmMTJhK1OqG z?(tXBtTgeOQkv9$^C~qlC>r&*RL_pRGQ3%2)QJot!9({Eoho*k$Zus&@0ZA>)dTT& zdg{EFrf-B-eD)6{QRF?z#06sZ7`@ z@hru=$@LjKqFU#=phDW6AmDyJjAmArg5c5ch< zwBcDY06j4qr0q|>2Ie$jZr_1Y5V~VGFpY0H7G7h=Pt7VeFN*4RsAcYPiA$+O?b}~* zc;;Hv*PN*B5j_%zw8W(Vy%)hK&NDku7}oX;)D zKxEeMYM2DJc70hgnMwH#X>A6K=&8=Gc7wAkaBq0O0c z+gYN|$0t))U#_kbR6Ask2FU7Z@BKk=d!)<|9P{-wS6*lRck=mFnCSTvAggnWKQ_AHR-_VO= zs*zOxA*u^BW{Kh1*iySj98ufZwIL+O|DoAr9VR#76XeTat{VhhIPfyrC$3!f#y%Q8 zTM{8XFYNE#ARlD&yAGx7uWb4^8n@&hf#U41%tgAsi5G_XXxVCYeXMMqT&;1}j?Z<8 z8kK?~Jj9Y%#n8#|rVT4y4~t*1<5Cd>;J8CYVxB%vz%o!^7 z;r}P4+IfTRjw33?v4mdAt}d}fA0ju%i7l$;2i#U1%+uc(pT@$AF@*mSTIdTNqB|L52NY>prNkzs)=-uRDC$au8o8>;&!Ab_T{nn5PZG zi&abBADIfc?|qIE@g53`uaLymtqBNx7liucV*H0;$g_XR=5#mL^9xl{0WC24AOP8` z!Th($B&)LFSQ&s-_F zY~Kg)&C-$ZSif%gAlZ>|F1*C;#Q=FWekxIJ10MSyUj?Sg2{aB+R~E`eH+^HqJD$fx zBXcy+siD=@JwbotzJ>cbyV?29zJu!%QUjGK^=h#lb>G~a z_oncWeL0WWp$MFA?6#-7A6Dmm$T~#P$sZo=_RPV>Fq}&Jo;a0~S_i~!%KigkVom^< zN{@enrF_(*=k4B;U#h5n_Af|Ir3(_ThEB+tN1ZG^wI{_MtI7E|eOmRwwPn%(x^exOu+E%J#>Jouw~BtCkqZJRSzWifCE6W~J(_p@+4D zX)W=}1dS70UYX$U(hk0=9Xy;G@pBXe<~<_EP0`Nl)>3R%F6h*#Ho?btHJa{6Qb=Y+DyE$+OE>nYEZh|;$kn_jFK=H-Bc-bM%QDM$Y+1Uo_ zl*}jPDIt$yF}uJi*Zu-y(8oXQ2A_$&eqqKnm!<3i)w1j^=J~%v>py|5+ahYBroAoNvO?BxI_{z%}cmQ5@fMH3$#KKLU{=nkdWza zOmt$?`7?(=6=#HUbLc&CG!-o_0!g@T>>uZuU&UJT6Mdozc1>-uu1qt;hytsi(g z{hXfBJ|2>>G#1*lp1Z_xLd0$1$ffQN8N{@fE?Zjd-kW&k>Pu=r1cy;;na(*j&bza_ z;+I;J*j{*=mJAfPcdk1#c^AlXv6f;I8Lh=G$%1@3~1`t8K|!w*zljj1wgel zP`b8wu7k|TI8Ydw9NP3}ZglJOm5I)@mU<(A_I&RPl9XIc7k?|DWqRECHx}%~;b{rG zIMjho;V~Y!%Dm$ zSdc22PCgAxQFrjw6i7(mu+%F-y|4>M@KP^tOL;6DOubU96%HPJJ@HDY<@mUGv(+mu zKqY|w7`&opqSy7idn zFy|sAzQG4Ht(-7+54X`3&n;Zh85O_$=foaz*#VC3YP5E5Jlkn+fzy~t)n2$XnCU19 zHu~A{)VE=nW50|<+8ZAnu2%&vD!1h5wRo}BI5lDWIUl4CLPV1@&oCd9(oN!MkN`s{ zB#OyIFYgFS=7&H>ys8)?JjT&O_2N)Y=uM}5z4~~)l?o-L16aG6{>@KLt<);^Z~y5} ze)5w{|IwEX%gH(Px}N;9cQYq)`!`%4+FAjTSA1mc)hhOA{yy5dqVr+h8kCzo6}xo8 z22>m%;gFTmBhN8hJsjz(=&G+icxOnj9=sC^ivyLD*g161eWY>l>(k~nj-I-SP z5Uvfop$K-h3mHe8d7d@z6c52mob&{6qG>p()uF_)k2p!^A%Ac9? zr%L|Jkv}!^N0&cFz4a_(zs6QhHle&6O0uJZU{*8EthYvW9PvV1PebPuu$&~2>8fZ` zpxqLp;Cd6SE$pCMOUss8-Jzd5kDArT5p@1O%}Ejf{=V8|Up-1r6 zF66ZMrDc_&9i1-cgm!c#i*}KPLRDkxep=ftTc^-UmFlHlG^fD4 zZ{&IGn;M6QgiXkygO)e@v7x=cb6Tif#2&mVbgguZRp{C?tw~z-fwkjNjvx)v#U$cG zDv%hNu;!0g;jqk)yDiGhl6}^hT22qILRhQQ!;#5HHe9A<2GSRCTfFg8TBbXFo+O@4 z+7wADA*DExIkKTJvp+o{ktyEj%MdaN`nuR_{-cflw-69o^?RXBpGQ7Ktqo->EqKA; zv(=56-b`v?^{6mM6f?xi(5Ay^73o-X#kJ+IP(9*^aRRPd`*}hJFSNQD4eprB^pwuo zMs>l}x(W%DVgdo<7G&o5;-Py21y0HwU(6RcT-y=w;c>5J=w1UG*cDh`TwifeH#bie z&gDrr9}*^(oh2PWRGSji)d_ziN78>+mGoHIkJR;%vQDnDX`zKH<|Yvi*LQE8vm38Q zeuMnJvB%>X-Rtp`ac!n0hxdCtf8m$m7vy;ozfbUU^}CboQ`%K*fx+feZyi?7zQ=ad ztlQ{CL`IVr{o}=K!`*RyW$)nm{e~(ZTkz26C|9fA8A@EreP$otgZED7P8MfYJzr(` zUmX5=_Ve}(HBIm5sL>PA7Jq>lg?0+J_~8?5bSF3Ce1PN{-)XzQBT1?*sE&3jUK^e+ zX&IFSqLX?0cxio<_AMz&lq4s&s;Fo9kIV_QOi%!l`x&0H%`a3D61&{$gIj%(6pe29 z(m|`wVJw){Y0-(4>rhq5_4WS-&h%9L*8->WZxvRUia#VDefw{HG(8n+e+I@lsSBJc z2t4t{s%fFbM%r8PlJk7m-^;V`679*+7S4@-_&oO})E<=&rnn!3+ULq+0gs7>nIBr$ z;Fxx0F$~~}2k2%73aIiUEWKM-^0tAwL3dRv(|^CmD)KUuAY*_p{*f;f48E#(v5~Ex zN7F{?IKqY9?e;vwKPZ_qT~1cB#5=qNqAKZ9l5MukzV`=d$Ki{C1rkoP9UX*$hR-7D zV=Yg+XC;j_c<`0>1M%^Ca=wpaA*|h+(}bCR=IZt|tuWv+&XVi>Lrx#bu;q_i^9j+~TMPTCtMrOhDCJ}Iq|v_G7bHj}i&xiq-uFyx;F%8CIU z7PEHen9Ot-FF8MumsBb2l$;;TOPb*%73C!{0gWK)QrJl<%}bi{jTRlwTfdOYhfZ$NMz9oi`$uOX#6$|r44jg@(hv8T0F)&{C@wYsZc?p>h zs6ot;u)1|+74uuKO6C10WHkE()AUm`f43x}Rd-gW))dCa)ib;XA_vmr2z{X(Z;Mnf zDBL~#55UffWgfrqzbQ&oX8z}ub=yCq#9T8|3sp5GWOk3 zfe)m#8ePd9{qAEq%38uUs{Qt#IATah4WZYQij%I-*^*KtE3AgtQ_yhbARLUT+7049 z-QB$Tb#&{(1DLP)U478wIl#~RTaRZVzxDiH;Q4W`-rspVpX9fI-(CFf=l6YnKjrrr zzixg9`2B_78Bg;phH|cPeuwx?ea7Qy;`c*-*D#Cukl#6&&g=PI&F{IelmUQfe zH#6r*j{Da?urJ;E-BBzHeY3OxanEMWBIFu2gj7-D_=Gj-;co+r0V`Qlqgl6f1ltM! zCX)dp(-0JqX;|0b>o9cdY}p)~vVFMu1Q8w~qxv8bx!8z&&{%b#%KlDDDm+1!Cgt4X z38gGOeX9*#F>hqf+(0cqlHF;YW<%Im)sIdUGQY%!T2Zg})0Eb$g~fiWj*(AlWyF+p zACYK-dsL593GiOqfA$GP?ktXX!$}#*m*4Wbo8EFNK z*Q9m$?Ke4`Dzl4%*I24_obA{%OUSrr^8B}7kuz2QcLZIi5XljA>lxtD=->fCZ=?zK zIo)%beLqEuF?>x)))>x9({F!{^z`JcDVnr|T}pBt$;^Ff-w%WX1YUu1i%7|m_Q#$U zps_WxE?`d)00F&YRer@kA(UzuRLm$2l=Bi45L^k__KXmVAl96>{eqSO)v1i*f zNa90Z{1e$^!P=fqGDLZS0Y3dzW^vy57XVMnZc+rR(%3Squ1E!`+fZ4MQMGm zu;qq{7ZIt%<8KH{T4iFSctc^r4!Y0b#7J<1ADg86TnyBhltYB;^H*_`X$VW}-1Sw| zKM4_pP3LBU1>`pkVr<#}fZ_jr#|aF7#$?*($E{-wFGgiJ?gW;1`27s3@n7@1KI^OD zJN{1Xi8<3qY?ws6O4fVzNkv$)CY4G`rJGVFDV2oBpf6YH)n5&7ASQ}Pn|5Vv2oqJ- z*$(#(9RqP(b))ht%F3&g=HJQ*!Kz)h!xNV7^qi@cTD8j!>n&58YSrGv8l0(xt=gMS zt<0)jX=>$G?JcG@!>V0vYIM@tN}Q)~p|iyq-38`ff|yUS=zd9X3qe=qd1>I|de zJ?BeeS-($M2{jHasgVO^lbg!br?q?6i81qjoTZ_NZqe-L7qUiyrdi7Bs#(g+;bE)lVZSagBP~UZ+6UQII1h51$6tti4mXW-aAh1JM>ZMC($NsQR@O zAqzWWUNUNtl17x_CG7aeByO+dv)375LTx`3G7w%3ihiD6*a!-##)_SWzsvD9p-Kc0 z5^tWPvR9JLQ;F9?hJQr-L>e)$L@mzc`mESEr{cKKyT>P6ccWHgd1Df< zdHLp3e4{-fqJuAWuPi(Uyv_BYpLaFu{!Sc_Fb-(tzHW9PW|y6@?vlUOukwF7YIz$% zTcbXI9r=AemIm0pT&nx~)U#KX4%B_X$5l76b7>(Klp z!7rj%)2kc8YoYT5g5nYIvfsXvWnII2W4Y7Vs)^;akp8jf;hnq2bPegl&?DSPNP}C? zLZ8ImCCfRJSm7EKho(fAZ+O9S6!*SNc2SE~G8eHb$`PwtkRR)SWT8{@gTHe7t_8OI zbK-+&rJf$m@buht}Ak&F^Uah~_Al0|P@=kt z<%?8Z*JvFuTYpO-FhSW$HiSEeeAvZbgl&{+>N-tnblEX{|-7mAZ5O8G@Mo79Iyi(vp1k zD{_yImDtzv{WVxe7a>7IXPq>ud{Z{Q>W>Cbmu$~E=TmuNH{=}&$jQ%rL~k)Hbsiw` z`5^NkAqLoNnVeX0DzRQOB-vkDF9o)Deg;60da4sCZV=%n-}!UjX?!P9yOoqP*H_|Z zTD?Ae+r^HwLt}l~{_J*Oc-NO37pxDbC%3F`^u*bzxnP;d9bRAZ@08?yQW&OX{d^B0 zSgg7x=UvNoIopHn5ut6Cu%`X1&&ix@+acZjwmhdNSx$QOwJh5wBE*0lWetyH2odeL2S%-TH0#frbyNlT>;!an zy|50Mzp81WwKH0MI2yXLQ?IIyO~DY(Ft7xnx!)e%imJaV7&X@i(^oVmHU}jhCoNb7CY!q)A-qMJh$Jy0hAKGSp8ULO{dSP zdA}zV8=v^okwj0i3pcug$S2R(w=curr|lw;!PiQud!jp{R^B9oR_<63r-4=fg?+}I z{vr-^vSU~;3mcY?h)GPoQ07?Ws0~J*NAA&JwZ&}H;Ffl)EsY>MI_q(GLn&)a9527~ z^G4!$V55%s4{ZDlL)(@G$)aLTX4E=#vjp+8SP z*8^A7rDfjBimD{xRP9Nb9)MHTWrdY`nO71+9Ytl5!ZY6ZdKuv|)Pp$4=GL=9Tk*0; zbOkDFG2hgFSjm^QA63=@pmwyf*4HSl!MPHG(w!?*{WVqpYPbGOuuiQ1=CS(cRoS6| zQ~BSh%8zHIG+XcQsT$vVuHs6mF)Maq@t?bQ8#EC2Hn+Dr{z=*R{p036pKDX*9F1ks z%uD+-wwHdUjgxrkMP1!w@9UYq+ixHtLfNS z!iOs1qp<|PO7Qy0;sEho(Gi$>0-!7mDS~r~6=dJZa3-7#XZ#f%`qaRG320mv#lXps z3QvYqAdrY~pI0~a3DpvmPRT+F=0jprVh#@OF#@76v}vylZuAqJi;5c)U8;8)mbcN= zjxeg>kE4x*+8ulXx~(cVqJ3#fz#w(spmtDe|gRdrGVZyu}kvC6DvV>#sFU@?)n-X{q5-0O;lf z2eJa{<_vAc;kJ*JV1Y(95Rp={fGBzlka*b@D@+?4#Q0uiPNhp#eg{z}f0veeJ*ZMC z33$76aDc572U@eX+$&YnB3r&D^$;&Uxm7^v&gy{*nAa4I@waZ(2Xt#8t_D|qs7I~| z=#eXfdZYoOUq6CwBjh7(nnF^E1SqMN@G0(*EG6|UDN)DXEY>2AWa;SET%~{pSC@q1 zPbefbrzr}iH0!Ykv$Q8g@>yX2*oh?UQYos6kGX(^Dndf@wgB~i(5bA-3=OHVq6h^! zm`KY7RjNb7{wz(PXP0>m0p6Vq^)3mWX3L|YdI1d^6K{BR2pMXB5@yyS*O%2>^)u?N zh2?srOS7)3)Fb;ej^ve=(aR*fQd{Nf^P&AxVaaG&pksp71=Sqxkk^;W>y8F5M0e25 zOY|v*E~O56iGGkvSYr(P;-ULU@+ zp$IWw>{zZ<@CsKQ--9n;DMK3r_~PHW!oID{Ly8kW8tq;~>06QN*b|B;w=eAR5NT2l_~dPx90y1D><` z8Qz?HI^87F*@!n~obmcVGVA&i`;BYZnh<4V`9G>U!c9v zjP9RG9rp3p-)Z%wjs-94Yk7NIY*uZu#C<)KdWF|R{sXY>h;STu8WGl=-X4egfFXL5 zODtYY;>foHiX!xzlaO2KB1hR$t;L8Qxh|s9%Tk^>Kbum!ox(KNC9h)ps6Xd!CsB&ElRJkrX z8R}d4P#3vSMHnjRF4V;?)I}~-(K!@!7wTdMDjg_*-nJ$1l0$+6xD^SzEKwxbl31)r z0Q)EsY)Qy~CeBAJIFUi?*kUbF#MojjR>at1EmFkTVl`1fXwy7ad1b?b^e7p<&;A+L z)}7Mj^7Loo2EST~$}T$!#@S!ODIhoDmHCs>$57hF{d_2=kJZpe)auH!^{k4TlNO4* zr7n}6?nVyt%5)|U`;FA=cuJw}4zoQZ8VJ*gYBC*x`{K`yjc23f4|2Ed`g0cXGY8>QV7fuD90yNW7Hmt@S^Yc(zrp74DE^mXRh~{R|U+4L9-rlxeH~i2c=8~E?_Vc&0!#_VR+Kx z59?SUW{O?YBsl&-;X~klIScG2GDKq)se;Y7_SIDXVYJUQz6@v7rIJCLRdQ&|PRShz+OI}`e z3F^8zUM6;p<`rsM$Cc7+OSzVE4RZ~1E$0d)YOzgSQOUK6YgO9MWM8+mB5R7yk|FM= zy0wVW3ZKS9xNJtvnPnQoPHG^iO~?D=RZqr~Np;dnedlxM(F@send%%Ttulj!XYud6 zBA}&q`}E`^1rOhT*XM|{Wud9;PVEj(AHcaQo4;S>FXXM{r$LMTT`G4lHQ>{dTY{2V z98Rs>kpV5$NBIM|-?{l!W}xC$jkuNaab(r}oeDw`==$oDZKpUOKnVc-LBQa>;*>vq zw}KEE&7)BGs~p_mHPCpW1I;8;w3g4!7F)f9b;;Zn*{_PerL0VI0aU5xAEXyK+(YDLn9xEm@6R!!3uAZTAo_Z?86|nc|IP+o=k0j6O5eqnk__{sc1!yke?Cr=?41{vKFD_(AdsKMd`pS1Fc&rF8Qq z1P$}Co6ExFiEJnQD~m+ za6{crmot|Y$!u=A^Zf^~is~fPW@uLy4Tvj7aHC7tMd>1V$JP3rlo zL*x-$&a7rCV^FDpYW@(1elqgpYO) z2^0H!GzP+{{yxT7B}XDS#!JO=pZAc1krs@HIyGcx7)N^<8>y=94wKT1{++@mVFifp zxZ4Mypj)hA6)`l>JiSAmtk?o1h?#=VgOU@HIGHOcL)e1(?10;Zkw4{VB0V(n8hinD z;D_=&;s{?%1&AtKxQDXKvt*LOBi#`PY077I&q}eBPHTxo794~FcS_qr1|^GuP?@Eg zf&k8uU4nik5Q-t7KyVmXSWlj)W50sYrkX%lgj#2b=@4NTfTs$WnSi0`pdl4jWXOV{ z+53eI7&6@cP#^h|OUZgDptt}k^h1RzAsMw7R#83BMMc^ni^YI1(vzj4TNU_krywzh zwiIrW{zzNOtwP1=k`6%}!U>w;EJ-810!Q$O^iZEtKzXT78T8cYUC;r(6}k%F_DE6? zQ3o%Itpi*fW^@R$696TGO8^K#m#z+9I0SLfQlzE*>7_8M2nimtq!mi*kv}Tl=z}UE zryMEgl1G?BwUBCH27Oqh`$RNgalxVpEM{0;D1kE+CHnoKEaXr*S$2h*;F+Z-EFIYu zdBjl`p~+BZWO-Q$hH@bXY9^$3NhAxT*$t6_qp0HF#k*3~p)H{x9n|U5s(t8d3YQXq zl#AHo<8p;fpHSAnE6W!`(xL7wJ)yq2jK0&4YETKziXZ&lMB{J-f)EYq_n6arBfrm4 zFY=PZs((R{iEN;heskH>$Wf`e)eSfix+2RQq0V6Oh!Q75JyeUmA%z3x>Ts%S91_xW z!At+R1s0y(U8r)^N8a-96Gjkj2+P1x%zi9)fSB~cQ)hi$kGv(49-&@Y2>YNe?M5U5 zRX0~cJ`7BdEDKKa?-ls8E7}UDvAoB~>q0pyVxN&lb?%|U0R>@ox#)yq=Zm3yxHxHk zrV)%_nx6(9RkG31(Wy;OIW_a|r@&$vk~F_4 zk3Mco7>r#A$WHvg4i5DSeF}GzyVzV;DdQEo;PkG-KJvSx=0F6mv>9dOFVAKdMwKB+ zxTgy`5A{M(A@hc^pt*4-s?0%Eevv?jo{?~9a8SquO^1521co1iLfYxw@G(?Y)gwol5Sf7y-1fPQ zI@GHtU7CV8mSg0)~~_84tG$Xe?Om>J5)tPWr>QMVi@TYUT5Yq z1WBiN^K~Ht>}HvuuwQYvh>mbRIYkXY$d1udk+MEATF44H^DoHj-(SxGy4KN%+Y_m} zbpYa&sJg?R%zMXZ+Yj-iufU6akXAEqh0Kl$;Z#7nY8V=DqycxOe(43trySOTlBkEO zukE&;fp)sNda4vNoi4*V#0HMDo8Ao>*+&QzxYbo1fQLrmXS6`uK!&=l;fx5K!oowH z9BHVH=^6ut`ysS~y?c5ut+L4xV}6`c7z;$!!XBe{H$cd0`;Ba$_M+A3LIWS}iGD@BWDPW=M> zRReiYXZ`RGJ-i#j<+6*(!CV#)^2+EY^nwzMXkB@@>70Tj$fh*1{5ehOkpr%u$1L?sQiJ&Le7l zWTyx&G+j6purQ}gCWI5gS$IXvBwa#^LHzt#6j_C}V4jXCK zGw@Mmgy{G)&=a4ok9=q`*+K`y_u(Vqpcz6mVVo0)W?qFppjwCFPZ02T37H^84Gr#y z3{|7ZGkixfjVXK|>COs@tEzJB)9ZEsoq=3IP319}A19PY${wP%bA4%3nK)K^z1~Fu z-P?#J%~0>vg1VQ@=!u<8IWH3q3&}23scWRO*Xx~L|HWSP{GaaqbFUU0ec_3RdbOfk zmtI!fs}&!4`9L@RB&Js4qp|t1rq7tEm%zq}eT2d~|D?;skSQ8Os`C>KuznQimVBmqcKhoLF=9QaqmNg!3 zJUVh>euGGgy)?9XJ+!-wZMVn z6K*I@^?ly^m;c&(@pqMhrd-aNM`>ZnCG~{2n2lGs#B+F3Ne!oRvA;*$S_L3m!a?Cd zKq>HhT8@1w?*Bz&H|fJgKOkC6YA|u^l+c5nE*S_0$HK>HbHZyT&AIcoiMjaYZxNfH z2>p9P+q{tjM9=1|UA6w!oEQnOIfK7<-d5af>5K5??&5X)HTQeL7ZiKJ7*1jh2b2}Q z8V=4b&Ns~)!+BWFM|MzEf5+B?l*j9{3n_YHBjH!85wAUZH9M>wp;0MxyiuJuqt06h zk9|K$zJFk%cPhu;&KEFm2l(v(za1Aubqqz& z?vq?*wSmJYKh~Wb*r(V(S1;Dnb#S@GBbPS{hg0ltIB#l5HTX4|>u)m5CvEz*^kbJ+ zf`Fp0NJ{#l1W`g44Lbvfv-2Pq9-5ez&%N`rM$0BTE^_%?eErFCwc1toY3WO9SJ?*H zEODw){frT6AjdOyR3S1xyH(;p*}Y>MpA|;9gNm>Zp(t>IKb<-+kZ>5?9h&S2VSCA& zvH8yVu62fWgJC2;Tcb8P+221;Dsy#>VeO5YWo%))q1?WqkTi*EnEY(mZvAi+`M|D( zWYOo?PG^6fmzgVWatOd^!?G#LuWW!|t#+rd54#-4_>IMB{QX(oBZT*Y;F=P{*%pvJ z$Ian3f1$yy0c#0+jg}Z|b=3gGtT1K;h9o#+Evuh(%Y~Rgwf9Bdm+H!D zEx}wJKV`Sx;&gn)7V+P6H>Vo79!tdAefAgGRI9#ad%&QACnJPv+~v6PO3Si?^?C%D z5HBy`WBiZuf-HQ#JIXhVyrWw}YqNE%ov z-7Q1RcSh9>vOA%M;9sU>ud5QiXwR%eeD7Uo?R1WMB5e9bGzsMI`1Z{0e@y#pE_>f_ zN~yW0M|`U*jLdGsbjyt%TxpoX51Uls+{0j-4ysbk1E^2%ChFZPW{MjT-)VqZS$VGZJ>g;b(_^RcKzd)ku!kre!L#%&bbv zGM~t!#2e+-#PKCQ;#I_KX^od=hK4>h86Hj9#Y8 z=TP#Q%;X(>C3KZtQO*%LmN#L~NgWOpYJt?@afMn?{Vhrz9$%;t%&TN*SQ5sx2+oIR zGYgHJlUzDdAI)M_+x)QlBGwY@jNl(dOvo5Sxcik%SWN-Nq5Q%?gdDX7ufVVD;SKOK- zn(S?=(cbU&$7gS!)}CIZ9Zjc>kF$2ChNt<5RvoxmuYN9m_ShTT9*KJ4AN= zj&Q;MforyY`fqW~QustzCo}nLd>70| z(!RPk^oZ(}C-vT({KBNVI(!uA>|3C1__6Irxypx$c^>U{tsFvaRFEg{x_Hh;C*5M&YC6U20Hs=wB$0zHVz{N_DLG&Z#?A$nv|IQzxI^j zJv-*FhqE`xw;pdn%7yOwkiS+};_%_Qo!rG`UeDRAsj|*FEur>{ftz?`8Ye{Y$;gTNe_dxWn;?Z4pf32-HrDsZn=;c^|gOa)X?1TArjif@$jtX{#jdPjF&F>a~3 zB2ROR^e58Zb@N-%c08V2FOi42@=)x#?Q#hk%8{JYpC(X1bH(qPD|*>p5um+lKjhEi z(R7f@X{7nIdzj&c+JB(>qp19-!l>ft{S1bh>ANnEJNE2h8kggJx#62x-q;yA|7Kw; zhI(PM_`7V-Y~HNY`P}=^Hs+#yLcz_ZHX7PiJ1WydJ3C_i&%TcZnZnh#ciwq8n=gx$ zZ27TL%{oX;lJUpjxGB6rIgtu{uwZfeBD;D!T?7mem=6N|aT{FaA0q+N)8=Yle5x~_ zr5AjvS+i<mYuwg<NusmK11MB+3;dO$a6x%ji0J zZrv%B9+QMli`FdJ-c$)K2s7={;wS$yMho6VlUr0FPiD}D7Fvg*6&QF1^7xGriSxZM zHWdh`3Fq_^o#)O!sfhAnL0}+S(Up^z!k_Ra-xsUzCm0!m=-v5RwEB4hHn0KTC15nv z@O*@rE^N!D$si!(ay~JdYt2WNJCufm&J(3&CjSz-_LZ-^lxk}XA7Lf&ehj39ta9e zj*Q6CT4olDPartP9#1o5Y;ybheHV(32-RDT&5KVKqPma|Z^%NnFVC+ZYYsI6u_@Pt zs$rDihzc;KX-zpO-^xJ|7N6S+w|qzw)(0K>C9-)v>(l+@I8IB^=Q@Q4CNrOe7qm zGy^DXep+_6ZvKLT?IUr{bC)>WM_)_5?oaCX7f`O%XC1N6;f-M?zIxqnm{u`J z=u`=}p~Jp~{_d!m@Q}o1yMRCXGBsA(RI=!PbsR$KWnZHoXB<{3txi6Xb3c)f9ddqZ zhJA9jH~uarrR0L3h|t`4uilH!Cm+0{K4ACi$KLx@$TjDE@e`i_zRRy}evZ^7B-=Yk z|BeS_%S|-7fGL#@8Y|fI$Mh>&8jygweayp|QTPY7){z#z(>fMqHast_?8-dF4>G%P z&Qn{sVhFCpbRODzOYj1w1JQyD7>%{+;W+1}F>?|gK>@GHW0d*UWBt-35?LvNH63og zf4;eCze;1V9)j9`jPc&u^k*ln$1t%&Kcb$}g*YwP5~T@C9lIh;Ud zXvu4RbRU_ZY$|TSCaZVcbC(#V*|`$hhQ_UDS z2ou_RS1Z}nU7c4;{bciekLOfEb^C{i1w@WbJVzmG#a$iT8O(Cv#iPHJ&!YZRU1-~; z+O`6Zr#iLv3k%I}33kA&^Ui50f!sjsy=x1f%0IqsQ{QUlT@R6#%bV1~sgViI6@A-V z_^jFA*IZ{hP_>N0SnE+pdb>6A9)b4poMSn96>LvUUU~G#4`d8rvc-O~ASkT_O?rz5 zOm1;7E)+_%P?6e>wn;6L=9KAa>{TS^V^4Pd$ZGApS}6UjW$xq#mEhW*#9hk(xweUo zqH?gZwV;?d8Y@ZDjvmtFM1y%A`}dE_;%mamtX|4@b}z|JYEPn7pqL2(>#!-nDu9>+ z#|9w#!CZ#?FNHxOoh+F~&DO`-B=FC6_4gO*@1yGPkJR5E^0&A3yZrTBE_Z|6dBbwI zhr1S!-1WJ4X6sJw%+^QL->1~yPW87B9381X#-ieT>gZz^w63EnqO8{E^>59(Pio(2 znL--eJ1V-)7t%(pL8G9P}5i)BiwI;ZVbAPSEEc9aqmQqR_7a=(_CL-(n+0*}+!W7!dy zq-9jWE~YStV5g8*?}_=Y-fPyw0-BihzFRleC+kLCNH`~b92P>){a#MkM)U7RwQR_j ze_1>ngc0iwAu{YP4ipPkClRPSM<6^51mIXxs5?ckldLz!ipM>~pA?Jps?2iTY75Qa zQMVomm8t8NP?&3`Ewo%7%|}Az>bga}mUZmpW7B3zQpKjwRQ0OOy>3!Dtxcg~lJO$q zq=RWiavS=&>^W$gR^mLUO>v#_Hb??*5&^FATKtmn2DxNyQMF^zr{Q9vPFdLG)c4ft-D}68K{d zjt!qxSjtnnE|*-q@$b~vDtQLU!Zh-ASbZ%|>B-h6C;3?M##1sWC@#sWi-_ih6%Er% z%{_D)tZBr`oqwskoxQE8UX|_g9}^c^g5K@qj;(R^pa03n@#o$Z zxiU}eYuWGr5As9_TvvWzpNOtFg>ZL4>mLGjgn$7NyVNc8+>iB?+ez;5h_p$)Yo))r+kZ z=MHhYin$>0crodIf5mRouegFWvigdp35gkT@b!BC(ge{S>Z?!JLv@32-UAGHYOGWG zqPuj%=r2PcVN|VS6(hG#JWMaZY5aK(`XG)m9xk6b(mHnB(uz!(c8jC_5KZSMw3@?Yz}4z-MoRg%gf7d(yX+m4(qEo zOBXUQJ|zZm#~xGbzon?G)>>K=W>(^V)7o|LFlRz&p)2vBWpjIHpw?VkbhBpGKn>2* z%It1T9GgQJ{S7_faY^&$7LHFoTOEoOGFIqqH!)l}=bFnoS%T9|MB&0cMX!Eo!$CQU z@w?Q={ET}TBi@s1!;RK@Igk-&5(wwcx4esBZTX2$NwEYNt;fKmR*mu;X9}~9Gs%*V z0Ly%DB{YMfm;*{Y=G!=n%Py!uwO4LHEIBzUU0wtIU&~X?V}Iw1CzLlq%KO%Zf2%x^ zU&PQ8AufktRkwC>7xVW>TL%cBC9CrHiO3gY2XzRPX^(%>eGF(%O2Zk6*`An|^aR^?CXt3lKQS2U=X)Ky&@9(s(1bIKwAz{Cynrg&x20(~Xu<)M(YHlDTqk$UXLq zZ8g4TZ>{?LBtWrkM9a;V8vjNP2Nf!GFw{0E^(J5yfdSka&8JqiR7k;HrPg0Q}%>Rr`31#Q0njm|6opD-*tomxzY44H1AP&MCN6ZA-2c(E6i3Ma|QMkZuCh3 zER!=c{m~WATDwJ(o*t;^s~FOgS_WHBZCj$Aq^nu4rHXP16k9+$Bk0VL+<_$589@|dv)lm}AVQN<42|(kv0D&CU0PP==M{I04FubS;+GZujn%0;KFN%} zv0})$;BK*K7?yJ}Rn|PXvM`k^B-cY#e_7GRniG?0j8gNhwxKL3km$wp%`MKe4Ek=z zg3qyBB}+_NiQ`Bb&CSx?8ml*Va=G$nfBdZNR9=eu2xseTyvfnc z(`dW(D^NX|6jjN-h&Hv_Vd&4kQ zTKZxm@$1#3dN}&pO3Ixff~Q^X(nLO01u#-ws2H}7Y=%HIlgqf^tZCj}v7rgJL(J%CBdW{k2(I*|H+q!T?aBY}0vSFunG@ASuF|82OBzm@& z%SBglN#5XFXzg2Qy&(D>QFApF65o|K$UE=jqH{2I7C(IS18gddn95i$GmgYxVGPCc z){SGq-VM7lJp_+wX&sfyZ}9jQ6>ihry>_h=b^v$^P_ z9xo=i6hF*(X`)$Yrfk?LS_u5YwgcguCgGfAigTO;DO8`z*)w}u#n$3A?-ORQ|3%2W zJ>dT9Nwfqh8Dj_+9M2PXaW#^b#YG+Ps%?Ld_Z^9QNU+bnMX4r6GSM;tHM65sjrgph zeBj^kw)VL2BYO?_rutcHXyXN#i0dl`SkEh!&zYn`p8Af`_yjrQv)dYCOj5P7#fi!4 z#IUAq?<6~Dh?R{?hjZENTpn^R-*qlOaxTB%l59dyCbn~D-?2(+Q%g-JoTLGq)SpDN z#8d8qsAJ}1A(`%sW$;;Ia0g=7HYSbt#ab}d9*vw{B#vT@3A=#dK!&^17+VUO#arLf z2x2cU&6)!I=uU$RcxypXjptfi?zGdQ)pddR<2VQgBJW3&*ZEp%ytpAG{H(-pt-%*! z+vyd9v$jcRQ3*AnZ}j+khDNlG8ZS-}K!iE+@R5%S;k|-nQDw#8&@q+=vq?l`uw4YdRE9x*=G_AAx$CYy00q|+QrT{tgi_SAs=Dyw5nk2 zjI90xEASjY%He>?I^V)shA&QbzTNMDyw%o==B`7Q!=x zE7gR;VZq`&SaZZ1yV~9X-VD3!v4{>tv)xM_O0`?ba$>{K3Z0T z<`6Z1SY~k5o)T%2(|;dSBbN2m5zaWqyZ*uK$koNjrQXTNwL@B7ja&~Z9*{oxHMx_K z>t1P1My}Pw1H&O&9EZa~jxb8|d4~Bp6i_6|d<3%r|Ieo{T;*fxCf}W&C0nR{jc9j_ z|HS??EEi*9T?oc9?~$fv)m_08c( zVo6RsDKd+^G1<aO~Jw$?a%vDBPG0j>uUO-#k-^+S?VZq%KTnNU50 zu&ZFXwOU5WqML?VX?aDsbbnRpK^CO1eir!dTYf2b(qjLGTW)83D34~ih2u|Jg1Vs> zm6|B-_r!CY*sS~wCYCzJ?ifbpI zQ$hoFOi6qzCv`)nQv1@#TwMI=Di><=w{c8{*SCBe+nd3X7z4F2oVABeospZfkzFR` zZVftT3wqE5&k(c7r?@Q9?}$n%F-`_HE(dnG`1Gn|sMna}#0#+gda?;upVw4z3l@H? zX+}x;MjTxJEYoY>;%1QpK`+?rc%?Ww(dlGaj>}0^parwm{;-J$lywEZ#S9F-$^P6) zLD!2oxCt~7N>1#<3D~tsm(;EVlX=Ugq+7v7BPZB+j?p-gJu-2rVa?Ao0;^?~d<_YP z98F}V>>-()_QkMCT}KlgVDVN&6IwwP(p$F~%F$c5z0+RJ^5OA#)|zGmG=CslEuQi8 zTC;ac*aE%SAP#bXBr>}nCl<;o2-V*1oHNs-#_1Q|GB?%ie%SmROI9cn5{1NF4}cMt zskMVvgg4d>J|i(aKy5W8bhKrPMzPdvl#G@nh7Rrv;Qgg(ju#OcM~&-SSmRea18e6_ zz;kP2vFHk;3B5K0yhYlCoUqXph8qsVX$sGcUKbt%O5ipR&zXmL$}ZmYRu8g7+sv%? z(N?ct--60q235^-0+6TXKCqco1$%?dpxBkBH=+yWQS3p&Uvo^4RZ28WO>-ZeFfV2I zNN29*{Z}3x*pyf-&Css;0n?UkiYzX4uSLQ*`j%;8VP|Z#L{&?2@5cH;wK4!Pylm4; zRWJ{;rGzY_MR zrh<_js*T3(acVSeh2zaDljmOj{M z+l{g~8u|*x9^4O~%**h(7dEx$)AyszbZsDc-p2_`CQu?uHzX`UBf2;?r}j|pjG>|0QLc1+FxcUm;?msq3XHBD zJNF!etscw%Hwxp8#e&YYBjMZ4(K+tgJ6Nl-0_3LEZ$1;vvK+0C+1RI7OX`NOjfOVv zfDpaHr5fEd46&{7cG(x=L{lIY;-Cj>m%+p=3cll8t|1}pJ(buf`;=4o4VgMy$~prn z>w8%)6n;Zr*pk=zIM##{e-s_Hs=A(=&#OhPjCaBK@Q}zb*!ubr%`@+{4#)H%=*_hz zcd@8-NrX_8g>Jm@`u4;-yb=3xIPsViZ~oY8t`;TtFxmMr+2Ra3fAPMSB^q)FdJ4BV_mlyBM|>y22^QNAQHALfmrlx zGoz39)hEHB4F75^wv7?2tUA8Ar#jv?O6Z}DPiWhP_{R1tslrV6^EJr!PNy>9PyYBH z>UO#Z1Q1$07?bNZdqQ>Z?-K=3<*<8+m^CP3ZR@fJ5+Oo*eY!1NdHT%HEL=ovR)Z+t zkdAqcnzkzI*1L~b>$R??s`T$x{oRdga~!2xL%a5pGnAa;_NYE&*GeAr7}jRrs!s}D z{6xLX8zGpRo^8pP6RQPr63+-28ss?>;FQJhFO9#n^`8#kY=a~Vu;QEBqtw8Z@{t*L zXbmxr((PzM-r>>FHI~>T$Y5@zBl0|=C|Nvb&EQ$cx({q%Ts(-cS(xi?=t&<09z0+# zZyH`OlP70hl1g%^gnP9<1VHakM+aH69>6plsVc>Z**XmzAX5TlLZw?myFRJHzAOiW zCy{f-`uvELn72(C`2aoNeKK0ReVGr^!HW;sqO^5lxPGfWZTl zZfIBnjs6iP?du@mp&$?dCuHagWaxU_jNcw}*!Aq)_qPB6-!hz?)msnT0CT+2Jd}== zj7;BSK5#43QS+j8&tjcGIuVI`7B3}RI8m=-GvmiKbz2T`J;rY%kPP2EZul&HdsTt1 zm)Y{ZFX0o$3I7H{ZIZJ?i7@|@Nws{F71L>%IwpB>{Sy$% z&O4^p)O{%E`n>Eqdgg|0nuaEP#5(@Y^67inP40ASdVOWZ%+E!yOCm=UYn;S*?1;O1JI$G~`;N7qWG*{SVY@b_S<^*E;x|EFoTubW*jwNT4E>7a#aB zEe)h4+rAH4EcBwXjOH}C_-LXg7c_@kov!Bg+sk5o>DFDJguo419jSng`7`>j62T^Y zwGOJsD4sgQx9US*$oj|he(6?7?Y3Qekc8s;s|52%pd}dsJX{3NMzk;Is4xc?IKP#RI=A{iDJv&Vb%X z%{om0ZA>pcYRPCmHIn%sK7K6iT2m+Z-oBMaMx@!`XHNM_vu^{s$`P++0N9$jZ}a8$ z{y5=(Yj2j_UXb=ulQXTjy9PH%w=zIlDUj#bzdE8Z|7#0{b_ z&=%;9v>t!#fyvsKW@~!AwZwV=dlF2X6D(&!xE=8|h+Y&)uw+{ahw9KX-2>irey&}m z>n6M9r?VTnE_B@lz@bt#B|xwf>td81q>o{8ZLvJ|*qw(Bp(A>(HZw zYIW#gLQ8dMDWN7ElFIfF`ZqdXKZ-u#Xp-SfhC0=+)<2KyFTphbHT3-NvcOl#(0EMJ z+T8r9x9`yxKUMEvP0__->6f7;kOUzpNOqtQa&#{%XBs@98bt+Gl-IcPJfaZGA7CoWc?L+@FzJ zIpjY6&N?Att=IQ!?ESj3Xy#{nyWXxQQD-*+Y&e2}$2P3nUl5{09cTaX7@OdBd+XYj z3b`I=2*TO5uVx#ixf^M2YG@5BS~73BRT^yNuWXL%MZWo!_SCq4+1|=WztY}5p&VoF z_Aa*D6Jk|4#3K#CudnY(pEN(xV|=s!b$gMowx=o88??aq@@en8p*7MT_~4rL>3quD z+B5nmmTNQH<#IG?pTM?AbiZuQu+t7I1GM02WdsPCKVW)iBBqg`_L+^+WTf;W`Q!`6K=5WI09$WJVg@SFkW3+n`0 z@jh(}WUSY=PO4NGi1(|$h;Q#^ek^5N78@`ui+^oM?3{UcDoK4`TtiJdG5P(aKI!l~SWKlr)8fBiU`&_Re|dHX@_Ke4 z&mL+X9oBV*>RJS92$AutS9b(KdI-plkcxbF{X&!*Nlho@nwMl$V^I!D9PDFP+@+Z~ zaHcD6sE%9kz~ti@-t7Ke_rK7m9ho*Vt-g%(QIM((B1Ox7hbB^lf;!a2^e*UPdKYvt zy$iaS-UV5vSFrAQjKlw9-QH;okSm+DEOVoLoxyq@PmEP(+qNDu)u2k}ynMCjC2_9g ztN)C{r(unQT%5$Msp3ZRVs_exBSN?jD*wle7ZJlO%ANVC1Vz&~nO|PQkt{jdI=OV5 z8^b3|lAA)i6!KIa=^5szwYOH@2F7k3mto2KKL5E5TftG)7NJ+;+~pr*Hq&J~JkIUR zt$b1n#4c@4<(cofk~5r@%N>}PCzc-}dQPvzlk#T(mGZw33IBWslbTF@)5x{>Du;-@Ujja7z&##kzVmpcPhloRH-z)(WzM#nXiDFY0qyzTB78bU`j{ zH(bGY-MVQ+e~F$5RfO;n>>}8gv=Rju9WrZh@D~7)X7rJK!Veb_Fe1;#&+RGZ|9cA@~EtV}wkMg5`xDYFh7e9PKtxb*EdZmCG) zbsxx$J0q}R?hwPiS}4|V5mG$WD7je{EC8E+bExA*`0lr$3EthOSNb>@Sij@tBTC z=+^lv>*`KWx^ornSA2c@(~oQamgCyLHq-vRuJ)xi-M(F$fJe`t?#WqpPjph^F+PIJSmC7d|8hM1(g_-(_wxu`DiF8jbdjD|L= zEn7f|8Z354$%EAH0uk4_*csRkLVZ#8f8xZ7BaZiuFC%(}L6!D1_G(#Ik9EVP`f5Cz zY8z;2XOp^xcA_;W8rEoiS_!hz49>yOFKoTX3+$ohy`E6*`&g=R`7_(OZR&j8IbF!N z>>TbHT*F(6C#Lev7sRZ^5sL{2-O&<^opoHX&dt&mMsTCW7724BIYIUcCB6xHyicqe zu(MVz5bmn__hZ%Od#9ya%r6S&xsx|szXy-b@zb;QW6gJ;TpKHIN-U5T)x8K~pu@vN z{h2ZH8~XwqfId$*!wv!e$_3gygv&nkE+~NG7{~LDGHqYw@Vo47Su0Ww{1Uq$*4)f< zSjSK4@TOUQ96~u`L%HDPjs}`$_K#vJhuPUKH5dgCeqH-xq-~Q!iJa9;pB9UWho$w^ zdihyveNQ$!ZL1D#lE4$VPp-8U=!UskbkrENoPHt? znATzuHR<4Mb?>B^?t~@HVWhN_pSmlubGTjoaFZa|Nf_01BUr9&V$%GOl)=NJpjz`o z(vUZyjZadIj9uWc2zUrs(%PB|TWm}uY%{OGCg0un(HA3N36OjX?vnm5cLubcJciPD zmm2rB04Mgtp0N10z)~f*Od}$J!SZ-6h<(kYTmfJ*cxxGy+pJeBptbcAstF~M=xM1V* zY4%U8{UdktiImM2FH5rY3>naPRz}v$R*y$`k{;vH8PLSIY@@?Df{c;tPkgP7!!UWZK2VY=pSzE&`GH(8}@0hS5W&CK|)TQ0b z@HZlF>Ou5F*M_u&!upB!ieT-xFSC~N08t0j0bV9zeG;u)CR6LXdjdRS&;9&v0bW7gUs^wWDN33rM&;EIi_7jMzvM%H8ts9DYI;Ab+kpN3G^B^bBP~g?rkSdw( zZE79{W!AkSP()20D&20k9(c{S;3O&;nY=7e_o4I$SdGWm`SgoX3}3KXPS4d;VDo!X z*WH2(q0+a-CT_F(6;lUSC~;xrz`IgD@{*9rhYhG*PTfXEG@Ro6?{19-)@2(o#N=|$ z;o!`Y2-dVg^&4dGQELon`K@4tyupa6*wEMVuQ{l0W~w6a_C+$53$fUYV6tSFFEc8? zWz6VpB*z8SBr2)q_MRchLBkq%d@X~hC3Uhy3-i-ky>=e(P0R}N50lzi>_!^o)xy>@ z+f}gh_w#F5gB4FC3rmHwV@i6|gOube!&3dk{>rdarvBQj9xInT_9P}QQqg4G84cJ| zZ4O0Fl}Q7|6fZDi-O-Q8aOD-g29FMW&+TjY0#aBzKacHaKcOmXOEmdEvTU#kidb8) zygu<-{UAgZvR7JzchfH*b0|3T`@j-AqH%^1*fjGBxnzdt^l0*y0)Hg1CF&dVjs}qR zlIkx#PK;qR_U+Hx>$#1Yx1R|~d=CfPxoe-G8Er|t< zz%HDLlT*Z%6MLQ_g4yE(dDZzO@vsB>n=NYbk7eD_YZ=22jLNab46d+FU?hx-k+A%} zW+Y>2^CdOrTp7uzu8}-xGLn(|WF$4?v*;xgcN}&(8A8gRozHyLe2#E7QjfMtPcZVt zs4R9wttSOJ!qy`;Zrs4^rPoK&xXnHeMdnaRwn~rsk^PlHk;(dNvucF6WznF`Es_C8 z7Dev*o4&twRRNFXAc_uIZ>n#{vTGRZ9&b2*+sMjmy<4B4N;lan8p1+vjKC9`q};U} zYRDAWT83?E_5u0)t$cL;Q$zm9#jSgu)yNR=}3yCm~_KfeZV=ItYWdZ7rX zPz4lwiz=fxR?4uxkdIM(Xvb1~G%Mt+`&0o@<}qI!I8(b3d&(1RjAbGXGd*xlqX40Yplo2K zUmKca>DXgMs9v0rkcBGU#q+Rm*rE=?lMA2+Go(mziLOK9w?A(S$xh}j?>$3h;KxbH zZ0XbqbEhIIi=QS1u3`kMm@NT^)!F=MzS-tdgNRHGk>v9wIk!8xx7pTL9ln53r+xR{ zN&J*W>Fq|{7XsS3clH#AHKgbNJ#~ZGd4k=}2bB3rJAWb4Zl_I>zueAGbvyG;>TY3B zYj`jioNl4^_Dr+BdtQfU%R(vCT3>uC+pSZ>N^E0=g%&VRBQ_&eDix?Py6*r*Ny^HV zen@<1B_~*&Ix3SoFe6xcM5p%8qz=oZX2nk8nk=+Z#7(yc_Hcee?#|cCvE=F(E zNIOp8AaNULMxAHJ$>=5SbBR0IjuU*AxR)fZm&93{6VC`aNjxJItId>UFH11-j4WRD zr%%%9#0+jl83`@*NjxL?o_I$5N;IV7ljx)PjgdOBUm`&SYKdpWbxqRkBfowh%3r%uIBp1uNWLsC)E$WRv+DF9w9};& z+ZY0apl{h*9K)u9f%Xyk*t6-hx^9guUrDa-h;zi=u1@+p_W-mWm`WX~JZpijs;6ey zFkcV_F}eQ?x{l(QbmGF_@ zx=&iPej(YoF<^Uj8qtrG8G{0wVujM)@1Efx_ktd{ui;&q%vcm~4Vu*Qzd@6iNv!Tt z`gYyN8{f_LQI@Z@K=h*ZO}Br8rwVkK?h#YDU<-d|aszq0TKy`k{x%7{^CqG1xtcN+ z+6C-td;K3*yF@C3Dcr8UEe#a7nh4ufD(_AvBn!UeCT2_WJ^i%Aepx>x^Xk{!eg+48 z%VdFlY5Ff_=3iCQP`}CfX(|T}A;)nyE3iHthmG5;7BlA(sU^v2Z3m1L!k%M}7iAi^ z#Pl)fyJrXmtIFRulIJEHj-|CkFe^{DwA+=shkDMhOEe{$)&7-s3vWZfElba@Hm3gi z`Q5CV{{q`k@sLcguR*ABxbh)cKfd}p!LJ%qORBBS-NNc3Ev&wMMMhX12TeAsRqxx) zPNjzSYo+ZS5rKSI33=ZxE^jeMQh7%9z)@;DE`>4i9F4jbvx^lBE zhOOOm&-iMsQj?J>`Vyo>%gufF4h5Z2jvkN+zTdZOP07;M9Il=$d!VG209#uXyxpXz zNCU^B9vbUrn{@Xd&A!#&Ru4515$>N+50!50*4Je$AaSX-939xGWZodF*>zadG%j4n z=i<%>rz^?DdMBa(W0uo{nhjy=fn*a_`Mzb(p1p`)u6HBS{m(mqQzPAeD4BNw{vceh zAKw9wFvsd{wv&TGX##B1?izhi^RX!xd!k0V@^DmJHW3rr)ee+j^sRc=HzW6HXL76)m%>ju(d;ImDlTvWeP?)Gm|IiJbeh!vz(ayD~|zxQ{K=N7bIFt zG`@!*(RTL~vhY9L8MfXP=@#dm5_R{PwnQ<;bGcaFuMjW8r*0ZE|C(;DG$|j~E z51Z!aUkU$${Npe^4K8TfB>qk2-&FpUC7!yUqKRo0DHl&T*%#HTFpI8#m}qE{8!iBi zr}X=wVd*sd`Pp=W;~xS%5h>_saV`x5#j^#gWK5Bh}s8CB_tp=%@O9~r0Gg0Y{ ziE#xqDFRQCHyotZP$KS4!PDr>S6S!mOWa%#N>{N@yb`wFLO~g|wi%Uwl>_FEi&s^ z8;td;YsrD2T1nY-U7KzBM8emx){ih&&t!xmDA6)yQm14PYzAy&gFtwsmG_jGAY;T} zHE1?P*M&EUf>QgoSDv$c)5QryJN(9TUKlRAekm5m**>FZu(atk`>=&D4Oa#Y$FaSVzz>pH`E^JHX}{2Mn_JlAo8%3$!Vg269?!5{Iy zBFU4~jRKy;m`Pc*UC%8JHR(-(%8#c;t(J)OP2^f+EIyfx$R~p{ZsA)?Yi=^}{ zpf?M0gyh#8V+6HG+8Q_h_@;X-9@+enGQX<}cZ*A}l&1gohBSRMQoj)a=ClE8hHi#Fh~-?1FGne=h`qL}Vo6PYll#C;@>ytqo-?u9d z-y)l=;v7&_A#Z#O;S6=G^BUGZU;QCIEPLidYh>#2NjN<-5kK(jiP%RLduBFX&XQFl zngD*5xQ@2-Y>_-j=*^~}wE=j{h#IAv4Cgo_BSRgJnzc(1Yb0+d@J9nJ5#N~I3{k`A z`I7{|-7q@yN5E($5*HgrHwOVg5NwHd>EE-x4y>DTw%xstPP0+f)dN$P5r?QX-4gi6 z^sVqD8pD1;+zz(bEb;ae`B9^s*m0d}!Oa5a$65_gHk;lkrSlGv=aVsO5A; zYp~XOha=5cv^O2*2f4WAIF=g^iy>WsQ*7!AsIBjg=6Ah(gbQ-|?#R}->!W6_Ixjn5 zw&sSC5wC5d#o1Zge2sOdE;o;P6&Mm{0y73o7GS}@lW8G*lT0%*@TtNbPZOQr zY!D@Ai@~!hzF^jZ{GZ|n0&O(~(M#A;qJI=2;@<%V+Q|2E#gHO5&IMxR#bn8*uO~e@ zDK~YI`Gq%rzN8K#)z)81`9F{@vA!Ni-Ir?XpQCdWWSdzAhTD`FV6v`&A-)z` zL)OdEl`z^j4Z}>PC1m<43%KyPBA+LjnVW~RF5sfBw*WWF5<_@ zU4BG0f;DS-5=DMjJ!+qM?}ziOs!zvy*RB@c-(ibw^3b2kiTDmu!*U^3Q~z#$&oV_W z*)5N$%m`y{$<#WWa@N-hW845~#<>XFc+g?9TJnx)(S9vQylCaGMFr%$uNP%Az4tXN zMjmUf)+!NSLm_32!3)&E2XTz1|MkYq{TQzh>#o#KvPU!D$L_;GoMzSsC)L`n-$S`f7N z1pn$x4KR_LF0aC{<9_fkW8=(JW#SjBt@2N7AE1JWB@t3{=TgAV?-Hwu0w7i(PzQ}extWzq`bC)kg2(@_MQvS@G#juYvBzUfj+qhr)ShB(HBt>7!`#{@+Q}Y{baQ*8T-<(0P$~@*|Vc zru|JYu`B>VB=y&&jLE@3>}^GhtU@>Iz40a-t7R>pFi+CmJwV6WZG{Q2xK`noF|0kW?!N&!X&pjsR=Lct6AKc!a)`?%|Hi z4HtFk{DY+6vO!%V{am>Nh9TS-ExrJkvc(r_Q`pzIg?&f7cQpBzvdK_@d;&!igl?r{ z@w`ySXm1V%Pi4-yM}8b?Kkp1@&cz+_-u-4Z{}3_GyG0c#pL-6%nkH*b(<)S$mPqMK zye}&cJmJNb1sFfTTJXEcjGABGj8sop>2!zbrqKd1bo1T;OyeG2vA_q!UodIqfkd*& zks_G6a5NZ6oPJwT$7629mZzUO+{|5wV!zr;m&!NFVqX9TbKe@SD%VKdTR|V$=eI+&1m%loJnIHc?bVoW<&%p2`{S1Y~CT-TTF(#E3trAeHdA@D9xYG}t92x8%#$z$o9D-oeMM@*-V* z21dZbZhQ*&qXcZsvtPZ*qyhQ41_oJVAmD*Bm=0vWulmL;1(H&%_7oK@jUf zfr5BbJ8sO}LZK@B@TGS#?$~;ul^rvpKM+703+iG2k&{aC1(!{Xc`ut3b6-}4f5l{e zev{1UOX`g~U@0*l6pW1V0?(_e_wSFTQy%sE`|wb*T2@00yH`5+7fU+4*a6Z>mrECS z-V7W_xF1SS6&Er+zZ2*uEdvbAf<^VdBb{F1fY?lFF#RONexQ~$$_5krj%58-CTkIp zn|Epke+0sU^hAO@@VRPngD!Gj7Om9NU=wxV;72AXyPx!!ALeF%?F-MAP+Y$jaHyFU z_TJ7Q!13X%+B@UDTkk$bQ<&R9Kt_9asA6ZMj)_=z?-9b57#%bcPxx63ZFd{|g?|+1 za~56mlZ++9Sji^mcKPQ0QGTFowrSE$H?|1DF=j z@7fiZ?w;ofO!wmG&`b$P;;*7eLX3?cj*aOQt~sxCN5!`Br3fe6A;nYyY=Qz4Lk{OX z?h0h)pBHiDFd2+!RS8#`(3L-BBKe5&$Bz&}9WA%}gJ99Vcpl_Rm-K^Xy6&0Vo!Jk#wDZ41>P~4Y zaesx(k9C^5HPf%wJw@4{Lw^^#WJ3`HN0Z!J(**-Ie9k?8+%Ao zY6sI9wQBcBS)gKAeM9LTbT3GRBPD{xAazdur~XLUP&RG<3-CFGB9s4(8-;q6tsv@pv zu{Yw{D6(mvRpsV_?&;_)Dnsu1gTjHc=L`%7zVDvjPoC#+@jQ#%tWM;hc`=&@26mxi zsVs_}7{ZlrGB4AJyD`Gb_ojHK+YgI!h8Rs9hooXv-+iH_YrPqX{_4j=fNbD?KeIEV zpZbn`S&j0Aq3K2pT)nDV;u1QCfvSg^j$5gViM29}9Cbk-%s zO8-IvS!0up8caKhh$e>|I75C|fRX@NtS{a}f=nsjILfUr-X|GZB;yUZj7F;Gfs>$N zogf*wp-2-FM}|pq0brV3v96UE%taUR>-Q`kBw77x$Zw=6_8BTX{&gMg`!Tb=vvzYV z84Q#6%$oCpUSSOz4PVtE!^(dd2X)xR#{KGiuzMv737sVCb!A#Y=fk~_=_xWnNMM=@ z|NM-^>=PdBoJ!9lB;dz{E&q0IxCwWadQ81VMQsjtL5JGa738gw)Cp<=xzzJrkv0aF z*~)!AW6Tem(xv*2Dc+}P`y!f@{rT6F9z5hPn30LZ6 z^=LL>fSoX2CkWV9%dzE4|8?^>JY-{(zUaH_w{$&Xc6z6Or=vMHc1cIGGuC&ZyH6y& zLBHVI(VP?WO|ghDRn8RNtl_eJN3%PYZ%1*lkQjG0oJVuJCw{dZaEbeSH}20RQQnD< z@8gNATs+dpQR=j`h`gLObOSUL|4bskBtPVH5&uW(4mtc#kC9R#M6{2WD*Ze%00qCA zEhpS(pTu_32$B1U?2NxeW2d#>#x(Wd=QxpYRSmqH{?`>$=EyoJykdtI_6Z2G{HHyBU;vHhWsu`1$VhL@&XJxV z#2z_4CP`0_h(fw1DLX;qyC=wO_X}Lb_u+o=#6J6ISSF~5 zxqurA_W^JN?Php4BGEtovYwt9_Vjd*SI-Y#IA+=N!(7O;bWM{zKg~VnCz@$b;LAsUxc@q z?a#dPV_jFlPEd{WcdMP}6VPn(uq@2LAvKZp6}GO2)%zw|ua=PcUXCrg4GnDy)xJ9= z49O64yMa+_do}#1Xl}NuerRs+vu*E5a6Qx>6TXlqesI(xMC*8K=j<}?#vdb)zY#k> z9)@UcE|_w#Ih~H@eAZ$#Z!Bo9ywKs;(!LoX4aHKq!`E`SO*b!ea?bf|_}aJ|H8fAI z!$`s3(6FbDdJJ*@!S=C`_XggOM~xGMi)A}vMmd+rAJ)P~Uid?{&Hwt$$dZpBIbFD6 z=er}l1Ks$@2rbMB4R49Ro;sCd(gyxzGQN|G<%Vn5yY&Oz*ukfps}?$|B%csMVF@`N zoddow?g}*B&8haR{Zo}y1lvi=z_l~f;eeZdF*YD%1-;cZVQ4`-r0)=3s96p8PVaNF0IlwdUV(dh#b_1~u zo+2#m<6d>+2+4v$kSBdMIVwka#kznFH|lKp`|THIr&;rsV!yB@91hEOmTzoxoX7ywq$?Z_&h3Vyy&Y^9mza4W^GME|&HOE% zzdp3^JmGw~MG{Hgz4#&98c#D> zi=>a`JGto_I`}!x#-+Pe^!Lh8N0U3&JLr3UtJz+LNZ??Ti=44@l2s2%%2!?hcaOJ z$#cxneDb*CL-b=0!>v|xPfpB>+@I-~1<2xO1&+=fsv6D}#sUu0A^8x2ZcnH3g9}@W zb2@gPl0Nvh>!_aUNa9AxkQ2)}__m%+)T*q$p!qvNzoS-L>eMcj2v#uNlFkvyT&mMW zBnEqGKV9;}5}q$9T=>R>vpsn^G)wcQT9-=7^`z))$0VyCk=)VZv~}U9qd&-8`^_-)(7CR)s@Ag1 zV7X7Bd^EuV>s})|4^;NGl$Nso?HtXgX?6bJKc`NR@I%N$@cI_ZQ`~@yXqy@&hir%U z3PC>47gq_%!pXdJ!+_ekSD5g8A-4-Jl%~`$K0g%rSVQTO`p)*m}W3I^%mKAzy;ATyAsq

    3UvlOd|#ijXkjdE_A{ZEREb=}%HQNtds#9A8#ekcAT#t!NiTln1fvzQK%hWy<=H}q;Q<@I$PH!L`X`8)Yuuq6Ft1Uyx zT7;BUTkTZ>5H^iNY=?M_U3GZc7pE?S-Kq4dj!>zKfFe7Xe;E>8U&tdfH`UD1Xo z_PtBIWosvQG7kk|!E3=xuUH5}CV~-bKYnwNz=_P}Q>PqhXZs?hZ%X#b9GTLuq*O}R zD3>^cRK?|V`Ydvva7ONf2X0+iMYZ)#qz3pMFeh)I%-e?V$=40nYa;v0)?HwfzLl*z zlzu7oVOOW&Ii&V3oXOIk&z|T(f9{Uy{y1#fLXE|8p`ULq~PanVb3`BhY3jaUbUR)6;X_o(avubt>q`tMoGu*x zdppw2EW(s$TsL*K#g&k>oSvVdEOlxNu=X<|@?nQhG$hQ`=o#k<6tY4e4Kz!h^o`|6 zy)9lN@b+}nE?r`s9{Yzdmbw77oWw>6jqfWoGAI3Fwq$$Hk{Nno&%HU~lBM7?mz|0j zX(?fK6|+ghUg`MB648J&2L}C#z%-fv0zYaV1EZ;L^L;+4>Mj)KMsmoVI?IS9{9xes zH3Kk5Y=2PLhtnw7N=Us!X&Unh6UMXi<8#u5PY|D#8UWF5IW6)Gy|{Yn3xX_Oo&dKF zX?UvEF%Ua*#GmFl9q>y>Sg38DpUVfKaN{tGAb8WTU9aH$bEF5QFiII4tTF)Zt7l&$ zB0pCW`{~3^eO!oI9ipx%5d(Gbu0lV(#$txd9h;t~Ud^RgWo|qt^?^j(fb3UompDlI zYWYp%rgu^A^50VLGCP6KrSka*pV7c)aZfa$Vo>eR1Q}Rj`nRmBLED_qpK4$>Y6TsW z`QPD3tq~?8Svc2@`jJHak*Gz&z4oyI^XDp?VLY?Vvv95rj}S}6tCo;}V`!B}0e;hk zxxWJ?1z%X2v5YlcR(Hc*!$dJn&UU%~C~PykrL+Bd*)6ktiQ0-uQ)UmlsaS%W)w@^O zzneI&$@iwr_o~eA3E-T>pLnJH`(J*3llk|7W@@HXm+*Y+L^eQsg=zXD+kLw5J4-=c z`0Owpz9`cCo}UMS;NB8Lo|>bxYh4RWJ{z_DDiPubx9_e6%yD&c{E=$p(DN2*xesa| zHyisk!$%&8S1$}5C4AZNkw@c~E({$beCF_x$Kt0i42gQJVED*%T;67KR|hstZ%SRp z$qU1}E7PgLgpLt9mO6pZQ9?&km`H_=5IR!Y+#(0lSmE#-jjBLjWKsc|M=$>{iD!5cnZDmXGDC{jG9A2WXG$E zp{p>>;QNdkIe?7sI-(TG5oNr-Zp3t7TqcB;h*ZDK0R?7%Has_rk?ZEQZxLUg6tG^J0GCKjZT_Bdvo%v#Im5H%#bJsYd#gj891%m@x zqf}|Gn`Y}{#1>;j#H2HEUo!Nd*(oQW<~^L`g$4Y+a38{S*n2<(d(gwq_B2w$M!N60<5y6HpIxWJ9k&y{@fyi}d#-9^fT_(& zyaF{e%|1;n{iY6_2q!xXDF`+8O?y^Tr2R3vtqMs_ZGyM1v^;+x79iY<>N%a>knsGB z@5;hE`5X7BGNIt`m$TKo6DfB(&8VkNqwx34!#VM5RUQ$mHURLIG7Tz!6n$f(7NCBE z>a6@1PGG?ahx^t8lC&8_IuU?4D3>l=D{^qkTMUu0LVu5V-J!_ zsn=fMdMgxKTae*rS@0ad_K9@l9i5K>`6>%vnoZXQpj#;loW&w0Cl0;L|LOmTb->10 zZYcdC$l#|l{n5mU5kEcvXxWbR)i0)GSHf-pZgonMcucz(SYAL{`A#XchP1Aa)2Jb8 z4LL`*@#9tmB0ghkVRqFvLEBxrjq1&xP@GpKbS@7)t1A~>dmd%#lVYkfD zR6nMvRi{1J+%kk@-Eh&HH<}v#MwwukM-9~-Y!f5?ZT5B#`DT-12W@|h{z6wW<$LNo zIh`oY{Jtjo0gqaLGX1IgBX0QZruigcEr=HXJkvLe?S8@v+X-|GZ6J3-kU_gZ1e! zFvshj=T7jqC--Bo%dSGVeW{QYCOciU^`z-xr~iuG5Y<(B*hvxshUsC2It~IXeYf&k zF)5WdfAZ6XeMvF%pCv-~y8Ri>mRY#l{8ok^_FTv6G!k`7LBF<;xb)zOoDKYyP-~s| zU>Ma}cTj#158NY5D^Vw6x0U()QEww6;7n&q%sw1L+p!yIZDpRMzo63-tDE?MgO0FQFQ{M3S;S!PJAlOc&O3Hnj5J!gGMtnJzr_my%VMejM)KsfmI* zN{e=6tlY|fhOC+v?4)EjEs!OjE?g#Y8CsC53b0Qre?u6LS9D%|!pn#{?732+SjaT! zO&SI20+C;2kIHZYS zCQui>V;&Jw%Od74yErm))0^|53J#Y&C^i|6?Z5RD51>H8^Ji)hGc2RWzVR|c%HYWb zRz5~Fe6eTz>F2tJQ|+tCTiA=zh4&Jd!4pmMQ@P3_p}Z;Eg)NM}nHdn7T4kwlt=&hc zq~{S*x@2l6liVd!+lp=ESI@LxCsSsD`>osDP-=4OdYUd7g-3*cPMRiLI5mv`Ty!)-@1VhT71iTL z?TMXSS5Y(LzxTvT)kLPnT&ii8nvB9=iyA30`XLg>yuRupzS517t|!m7f3ntvziiiX z+?DDwY){zpwMt~adKq_xR;PO6b%B#UkCmvueL=OgQmx6omim7%j8NdH@7}!xh{0NE zo_mf*9T>pQUGt%uPFbu$GS|!Fn)DYk2rIV)9r|zuCDA6XVl!_bgK%9acRml zTkp;w`wjTbWAE1Y0=KD~=$`7|qo7^cV0HAh?ndp(QWE28k$OTaM3x>AHQ5IB>KqAf zS6`5xIyHiOl$#??@%9kEj@N4gPz)Qn_9 zy}CkVe^#USqK);WC}KAu;_>uk~FWwmM%$q=1LO_jrN?N;BH&zh^y^p7qB8CJ-}N7n`=J{Q>2 z^3q!)=6ZL-$Mf4TAb!@FZVOyKr%|9izT0Liv~ZnX6x|2o;Dm0mMBQGtG6>rtT)KtD z!ZCdMv)ZO5dOAc_{sfgDjKL(ZQ!-)&qxe;McHF*9+#Y_T7H<3!4;Sy2IPtLvcZv>= zOPJP}GWnPkwSJ758-|B!YbT&dES2J_nXr+#U#eGsm9Vu)SBrOWIT6iPeuzkBC5?|( z&YBb}!MbJ#*@YUYyL1uT@Quj|s@v@Pqz=wq8f&?+73B@T)9#R-X_1{FUae##?Fs&5 zrH<-i%9=}?I6FAZHM$K)?7XL)@?yCROStR1;E|(%I9Qz=>#wp#6@{z`sF?ev3nwq) z403ulZ#8`<9SN)UH5an-irKHo5{B9J%OrL6L0(0lEDwO8#@Vj^$l9zz_g5WSAxK?? zTeWy7WFjqh$16j1tSLWMMVO08@N^0G)xk3e#xbCj+t3$K2P?nN(@yE~c8Hq#HkU#S z>z?90jKfGY3V76LiA$`|GfPh^KvN!o0`=P5PT3uWb*Wo-KUurh9^7VTO?01mGWtx; zJs2d4^q6JA>&ezscQ}xW`KoI^R!d(NXJ$8e9NoLn3rvlq_g5x~dWRSzTZ+zMZ$#qv zrSfKPypM0yS*Q8TB%cz()U}3t$}V>?3If?WMoV1|c|7N;5>;2Nx0e$8Eu9(m*U6F; zN#qqH?Dwi101`>Ki`y@toSM@QG&qZpt|eH1dF(rxsxGk$_w}wY+M)Tg{ zwdmT=kG~1R%p2(SHGDu1B9()Sef4h=l4hVK#p)L4NljLd<%5XV zWh$9&7Yo~!++u%SVz++=?Th%UW^@r`MfP{@wb?laF6>q8Mp3!(;A=co`kI^up`KS$ z^CC82uNo>LsIN_I#AX)!ovg{UwkL*h>&BDJ84$J7{*Z5#|Fjt%1XtW;aA zjiMu@iWO265?NvO7fQ*J+JbbbMCiU8_SN23Xey)dCGm&BE=8|sVr-b(`pO=cW*Eh^ zx=N%QwWyHv3PpvqA3qU-{UbjUo0l~SLo?Mw`}wUjB|277 zce!S(0G_=aREwQ;R0Q?O4tCB^1+MATuZed3n+pH%bG*QD9itdbPFn%da~ zj`)1_=-1@!2p8-P#%t6)q*>!Yh5F(qhQzg!N%CjB6QjDCjlfioA(^)bYF8j|b#2H3 zTtH$7kb@$2;;3|s+yG&bf+@gD;C>#9Dg&%E=a9C6Y~2F60PyzR)hy>Du03dcLtxlN z-!pd}{95O&wckAv3F}*`kb<(YR&jM&RE1oD!0u|ZMlKa@gbq|KJQzlVx`)i_IUFd8 z5M#FXmm#;it$pg@ZL(yrD$=*TPvA16{T0|Z&#!lVZq%!1D5-DOXY)NlM5>Qax;=!f zede+B98X||u+Gc9;`d%QOkcxTH>fth2+zh((aXB|nGKVG-Y)YA$Y$wl_zB6;%K2sX z?J0HXKDtr4VjsQs)u&i5Y8WwwrDN0}9Uccu^Qdf?%+zH4x{_p9dE0RjN^QVqyGoB1 z_Pz~FKfSA0@pGg{@iVi%IU(Dd-kIJYNTMf{`4|n0dR!n-paSCJOv;phpg3k3MagFe3nMZGLwc_?2i`j4h$78WD0pdVpO|AmHT2ury57LZAwg4mjbm_Ep)!7kmx zeSWx~seuhXb0j4z<6L$>l|Ue#r7G|65=OM|?@H*GgT*AQ)Wz$st_In$+UP z+s^#9PGQz`m_nN0`jkCX)lD{T-jq(Wh4utVBm1aKdW8(4%!D99SRk9i z!0DI1)t{JjRlT=sc_9hA6M7*uO_nwM?oxhw(nGdRaUMbiQN{mEoJZWZ#@Qq6xY&ObA>*!tP+@qR-DZ~A6j{){Cyr&aKtO>0zwyKW#LL!yuiG($cJ@(-JO&5 zG2)bPWnWApeM2|Z9TK8Ay-&D)RPSCV9MlD5 zV*3V>nln-mU;Ps#+mML=H$ZSr|6bjldLNj16E>Y?=4`Jcc7pOrNo#CbwB|am=E*U< zmCKvMMG<#DRYa|=)z&(hbiso~#E9{*OgoqVNc{$_ zDbsB~*30F)bm6aw#@kMonWr-R5eJ3a9v$RhU5!1KK#arI=#q%*Rn2s7l^B1zu&tIV zPbM=@N|`MMfy-z7p#5?d0fNOT5$kq;`Nxscbme(7CmP9{3aqi8M+5InzuX?)j7toR zKl6}A&&UmRRJr}}^UZ)G)|*iwpdOmy!JLW3vl-c6oRLJYFmR}LL5g?agkD-YZ~9YO z1SzaI>+<>xD?Y;zcD!5C0zZz7O1-V6xQ#mig-F)j=@(NDHRTGvOf84fvda7yZ$No! z;1xwUPUIazrU0#>@Ve3xT&OkW2>i^ zkdbuZ(0RJS3#e+ERF%yC=z6DP)fYMR@1%cL;d#2k{3dd$w@#;&aJrqB;gm3$|CmH> zl*nY^uWl0WKAr)(;%LQNAw6y`;wX3MpY(NCfgaYIkY~mu6s;OWV`jcOtVbnljqs>s zt9CVwv%;-jb?QIMemmLe)3>QPw4%T-YK86U2r}_h)k@eY)Cu$FkOR>%tzF1?(y?=l znl}s=6B&KWtN!7aE=_#PYr|JqYXcue)RHc&)+ND7ZE`4brAhXYT%QfWA$!66>#oL!m?Og9X0qc0SIRuAhdDvm7t4M{$i`K+d)nPwg3*VzuH@c+;hwp4H{q#d zBBjeiwSjqPC7UW{+VGKL>%cTJ$xo2e7TtH@w3Y9qT)OZfsl*)i8Mu*I7Q8}|zx8wK zXySMgP6oY!KC#ktQ^bX%fODrGNQOSCRv?IQwA3|+f!vA{37d!dg?yu%T8#Tc zR=C-1>jKoPqE-TUd3@>AEp;dqRc|@oQu)k8SfE_^J_|Mfq(mPjI zSpj_AUcGB1^BX9ZE_{&LMz=o=0LoR6Nlc1ZwM@39oqxDRrbU=SWQXG&v5>(;Q~)5b zkJFf*1!XTOoW4xN4b^Kzq^SwL!oLCA*)YsBwxa&AE=Ikp$>iCV&m8{Pc#@-J`7XOBSz zfAtw9N{=pdpVsK&o`iO_h~tms5NcW_V_fL2)TY>m`H>TsAhyt{OKHXYij9Hre3+2v zd**d}Ydz8n&-_pMDdz@IeepCMvma-G+HNUbIQDjjW3^N-W-TN5wda0XV-7Shy*AJ? z{U4kQuH}@9C2?|2@wKV5eapV(l#4>Vi8<@UQ0WdVv#v}=-P6P_?rFa|Br*`QEoWga zCiT0l(Rm0JDj=KGAgE%E<}#Jd*)Z?Zp!)i}i@^b@e)TQ3GYSM92LBd$X5V;VhU zX!aRQNY%8k)l$BZD8I@(_v?#5D~>N>n@?p*y>gBa<_B~SP%RGO(S#0{GnQA|yI^7c zKxr>kKuk{TgxcPIiJ`j2I)PLww^jd&^A9m-<2DKY0i5v{QddBys0u(l$YX_mF_iLB zUvi{huA}hPkGhg0_k5|I^jd1-`ZlcTJ@yQhZ&8O~AfqNSA&N}N8|7=a-Zpf#~DYVg?L zeWoiN$JwpNw_ngEqp0_&$?K#M&)Gti5({);%X5nUVm`$fLnEWz#-)SFg;L#%RzuyP zWo=rEh-^tPRMWs<#y*;*F`J{8IczJd+JQsz_^>w5^Mv_g?G??|c6b$z*aY31jD1?F z%KYMJ{Dd~olCGQ|%wmu)nO_`{cPPN3HqY!#niX`XR%7HwC3%ummNn*+Ya>Bk_5(w* zet}rOLB@IYUPd6RMYHAyR0Qgaxke{u{H z`07Om5OQsaxc0I)l$nP-)7$IP>Zq_h!mZS$+jY2;QTmp%+g?id11-M#4`p5;ynfk& zpN`v+BJT&O2Fs%!LRHi+5waw(^0_H5TzN~e-*{S#d-0nXz*#COKmzzGW4@ zWrj0wXjWnAcIv!z2py{JvWoRmAkI} zVHRergiEM+Uuw_)|JZvM@F=UR@%No1lMJ~qL5U^`I$+Rf5F?-l0y+beI?+T^K*f6? z2||S=O=bWsU~qyGhEdw0wXL?)&$fQnuf=|?f)@;ORlK0}f|pjjw7zk)Myn8S%=xXo z_e>@MtpD>r&;NU#bIuEswXbWheP4U+wf7F@bJi)CfyDk8^|Wy8$PMzGTP$~jya3NW z`VeefSnThdfP8j|V*aG*8hgjmHCDr{hZvArh_%k%L z===qg?C>q0;F|RvFXfSrTZxwG8 zyy$bG=je0Pq(5D;dm)9tIjy`X^jsD5N=^D3HKi|x9--ite~T(kWL48w+S29!BkAmaCdO-%G&6m8QQL6K#tl$5}KG?47Lh_J> z(|+k0or)O73dg>ib`memyW;e>HK=8 z7;-zEy<&Jp6jtGSWQ zCfF)}(Xc5iI~?9;(h`B*l7+HX1YUYfp#Hg49Yr#CN~qdr3AID~V}GNEUk!J_uoXuo zIg&RGi{#U3FMgb|?i}t@zUfB8?3$x#5v4HCp%W>A&tekz4LPW`%MK9Ueh-1EK1UgI zj-yyV^2v6N;+)y|HtchQVV}7N2%a}Q`M;VW4EC6ch}$3YcZc&QIN_L37csIMqwMSn zM3$G}E4&{3-F5ISIs374xA+2d;*^*Y_gUd`D|7`4SRM(>3h}7$1db5fzhwP~t6;Dn zLU9RmVgC?IQ$p0}5Q5ZhOmV+dnZso&W>@fBNo)$J%Ee)Mw+tfo89ICbr^nlI2$Vi& zkI-(l5)A7R+A3)5Ol_tuFc3K9eI?PtI3~QY4i};PrL%B~L?nRy>SN?0`h%I9WK1FW ze+pMK;oKg%RKzX0&6eCc?FS@W_=aAY2_qMBMM%=;C(37sNAXs2bAw@`l1ifs3GnpO z^aN(K5IkNKUPZ*~3s01@?osEvj5^gQ-Z$JMjqD!#aiC!)`%WOnf~E|ynE^};FQ8>%>K zZq5|4FtZGU-PRnnbG(v>997ObOfx~X$uqyPV;FCXTTa*pi!@WQNUYclpCvM>I<|&W zI8Rw$%m33WKs13hmx)!nw+68t7BKD7sofSzN01Vr{&j zv`MPs&SDqSlkhwg*)G_k-L@H5E5b*+iomMEtg!<1;y+xToi*||V6|la{ zA-24Y$#$|VbXf3c{C)O&RXf#o*0C)-C@be@Mg3TXZwIm-Tp)`?xo+lKOp<;eUN94* zXiF*XHjrkQmr2lR^QlY0qE?8bCHV5KQZibfnk+NRr#2u&o!!hkBc~y~GS`58qWAO3 zHm|?1Qf7gq1l4STKT|C;AX2NvX?Yvgzrb5nun2~G31QUG|FnJ z%4N3+W|1n<)+0ov!pXQZmq2O^mikm`DEiIpKQW3VwQR3>R4RZ~oGeszDQG?q9&c`; z$kw^a%qYdvi(j(``xqL|FAUW8?Av@}=xF;SM?QwCr=%=Xj2d;ga(X*9-L9UYszs1Sj^v?4O(I&$$y!WH<&a}>{h5w1pu@ySa z{=wOVV?`3E*aKU)K-=oDg>qnBKb*{hV@HV6+GUGw{QjwhF5$(e!l+$Um`Z{8$W%Y8nVCwTO@7f}0%PD!&Tj}vO;GH-RhIdXnJ zf{3z}j@VI;L6#ac$_N_SX8*22l12}9#WuQt+;T}D6U}ermR_m+K(bBhIb`3ILI&?W zjE3RsQLk|N;@le%p5lrxW;#w=$rHJ0?guw>jBV4C_C!z$`01&=Owuu6icUol#O6=fr~@#|{2>g)>{92YYaqP4-q!?3g$ zFvB0|0muY2lV7d9hD}9OtEwtq3;FE-eqUD91MeY`0V_6U~-J_E9%s*bpw^Tn%F6`Yr+*vCn1mL$75_Z@!QG}#wsR;91q zEV1@YDQ^$@?Dx74pO-kwt%u7C51@CSPF_@@d=Y%eyXrJw$&Fr zEjL=dunqN3pbmsC5bud?TAN*m*XA!WNb8EoQ@#o=^S%yp!rkoAtaKT}X$eCt;q_X= zur6Wv3CV^(XW=&q1NWnB3->m-Z(XKFj&{fl_xju&!VHCbr@A|KLu$CU(%msextz;O z@yakgxFFm+)7|l|vR%e)&%LwU9ioX9?yYxs{FZ3l0T$gQK}mriQx( z*A{mXPI`);7v1bdG*jx`M;?ZQRQPTd7sK0?|8F%x>D7C>OVgpSOLR z#}|IuTS?^`e_!NZ?&zr$wofgNy02B`-soOkK)i78HOrn0_s(;7AlAdy7jkzzt(+ITSG)wG4JToXO^@%KV|9NZ# zB_k#B$9GhT@G9F*fB6tr$eiRQ*vF;27%2SR5k*}-sHDW*8)!bFMpEb7C~lP!%CvjF)HFrq+n7xva8?0nDel%R0l972HKsMi#;E!h97Dn64QAE2AFu3<9ZmfK zkOSkESyPWWqcT#-RaMyYYAT*s>Z;nmM`&|t#MugQYkFm*i|SeG(wY;o9AEg|{goB} zs&rrYFTd!wA~Kh{dz?a%i#wh?;VBA2R(8Ov#W|eyZ>W0=Au)| z!o3rgA?Mm5I|RF8yM@0N6u!r4weiv|Y#T`WgD6+OJ6uF#ktQ~%y`s$Bk%Ns$alE#t zmvw(dd4vXYInp)gge&!q*aSnMZ~1}$z<1fnzUZbaC06}&_OGcf;ihHvDePdDEWq~1 zGJTsQsB}s=+5mk*%8^0fYxHv@{Jr?vkM3Yrl39Y&7>bK${et$=cCySmWwlXr{fjy_ z5a&GPSL3>tzt>L8;BbFMPpA;oPEgxHg@^5QI$nJDxGqKgF%`YYtRs1^ze9*={X(=? zoEnmP`GB?vYr4x$XAq##Nb&e5%qX6ThM$y?ROabYaIQAqI4`a~mHOJZ)e+1WOQ}-k z?&Q9t*brRPf+~n7W>byATFek8V{U1%*k8II|6Hb9vg)mdCwln-kNqN=@ybC8pjupC zv4@IE22WrGkLGVizX)aae-HuG{&8Is7|DX6ir!`4N51T5AYlMuAdx0Rp{=8Qw17dh zytbv;BPS$!L}+Yet@dZheWL8Y%{3&fR?+PrlZNU%Uxa?E$d8?%0CN&$VzO&eqj(z!7;Z~Ab z6G&NUAXUMM{GA&t`V*WhBm28=1@gY{gEC?Jqrt%L?xo7- zlkQL=;&9%*QxU0jn#Bxv^fJ6C94_XIxoHhExMW!3NBx1_5};dHWzzHnef&KkcshSe zgCqHSYVb(@q8?kQF}S+j232>aHaNP!{u<;IcUJem#1wuyt^0ipQXDPvXQup_A%6mu zk+;c%7;C$?6ULs+YdwAJq-=kB%-wcN(1nx-4cE}>x);$(MV=Gcyec0RkB%2Y`vawH z;q5f{jH~mic_OuP$z`Xb{VN@I7N{RNir53SP}r_N9^|YlSz}+mMJ_R1WyzD5D;->M z!JQY}Sj9%|`=ARAUOB|x^d^W#f++T9^opKRawR1j=sW+yq7-rXsP;Fc?zwI+@<#Xv zE=Ooopnm(q>)Z$%SV85svl{)UPj=07cLq9h>>HWd7?DrK`R2a~nOpKvW2)G*WXlE` z2dyJ{IDuisE6W!-R$sp(kls}lF5U_=AA4Qz8xLH2aJ$WCuY)0a>KH*B`7#hWOYY1+ zHhhE2A#bTa%Q@*Q#OGOi67NCR(mU7P?_s6=akJPs3m1aduzr@$8*w zeUmv4$@uVPAe}Mz)RRG66<+c+^GZf!d+Y}rODG-hh5|yIg2r%M-dM;s_y!bUKiPr<+NpFfQT(~omvT}j@P-{{)h9V!csU-FE#;+x!%5KR7=gYLCg=)9){!2yR_)D9C)L$`t6Yjpq zm+o`FuJ}5%Q|1QN(u~;yWGE4{ho$b{N4}A`PgN2`L7|&YOt4$5@*Iur9hp}JuD6TlrTxrpq?6j#@^GH_tWH( zEvR^jg$Y#9kbgH*3g8!}03O2~rWz`^%Kg*Orhh{P{YUOvRo& z^03VHh#9Hfae)aA-trJ>Rp%6!{lGnPxIr!im2k1YqJ`?R@5E6_#Wda@if~$!CAR5;4!p$l7P%t{2)(+j#$t8e8-+iUV z9%-HZ<7Mf1*8gg}hhAk{NjP~17kk=cWT6vz3^#>w4O}SJ*B6xRZu7>P%h-FK;0mU5 z)li^5Fo|<7aF!ElD;X_vAI^bUm^0zKh1}rwuPskk*ZU?>Uvf2W`eqb#yhCCAXJ(?; zVin5$zQ;wro68PHYc{2v{scP|t!|$vu5T`>tk~81wxpm1o0O+~B44DEVQ}uw5W&Nf z_V<|S8K+0ql%lVX&difGkDn-YEqBCQyxBf}|L*W!htbti=f$5u)B8~Una;({#21i% z^_V$l=g}RISMAw#SV!qp*E_rSi0%0a6N5*}QX~9Ceqi%nj&5*$$?jH;Zgurp+cF4+ zlKfw)D*oc`mRd-(ILZjuYZdtA4!k=@B(N=U6Tm&7Fyy^V)r9V{@dCFh${L)jZHowJj>hL;($fMEW&G|LxeDy~1 zPLj~hQT$EcNysIyEuVOcWpza!5uP!WyCW+{;H7$jZWrn}ZpF^fAQQBwal3G7T=* z;0l0}KS%PaFm}&Ho+fPr$+GBrq1vB#mmTGradFlwJW3gPKKwpUAj8ssyE|@HhKyiM`2Eb_=r9)xU2W&SB2${;eK^1E=^M`M6W>F$Nc}$#W*C+~Faa|* z-3v&pmRh>+10#O_q5bac=SQuI-woPtajIV|WCta0>_Nz6C#lG30SqZVQs^AqeHx7z)zZB7ZsrL@)2S*Wm&E{+{fvb_@(xgP_PQ8u#UfvVGB-bo=uM;2fDUTo;}BDYIg z>RQj3GqQ`@JuBX1pB%cmu_+^TM0Ka4m7u)qtEkiW03&j~yc~@)-~c`J&b+rK&=hH) z-KkK|Tk(Q>rjgtpRs)`R!5YjPsXNYE?>*i<b+*6ZSv zV5FG?FG^|7btnYEcywM_8|Vzp40JB7LmvJ6?Ucnhj?7dR`XdD`5VDEUoO1{@9I5TB z;m*WLHcCI~yok+=SN+kZxWD3+(1mE4gz8x&N1jpol;{Df!=+1v)~}!gnQv}oii7Pzs7dlz%p`^)~$0tdG0$d#Pos%i08Jh$u&U*t({-S?F~<1H@_ zW>=+et9UN-FpB*)SXH83tLjXHFD~b8CyF;Bgt9ZrTF&*+N zD_(N15Q(Wj^6QmSYy15b@3Hw5N%u$UGWOrK1~;UKXz(2SLXz_E+b&=FOYwsF7t-SD zd;Jw`mrMdj;1Sj)^0|GR{)+V8_n3w7W7*}Rpg3i3)&BkLtfaM8pC7G0C%>xVnMJ&( z<#VG?vM60REUr|yUn>Vo>0Z(K^ujH~2mB1ES#6{doz{ZjUZc1hdLKvh=WVoiK{fL^95(u87GXgnepTUEdpVdBgS;gj1 zPO?~Hd5K)9%ut;1f<-lCmp$6^d;Akl4>|3}p(YT$(AXZp7TMnY3}q9D?5~cz=daiw z%2CazWvIV1OVrAqwLc~c)fMlEeEF*&w=+C#zln?N;nfrd#yw-db(dt3 z@i4-87-2k&HhL0LFEk62Yk8wP)?yw9K(T`-jkuNB&iEzhI@FPEKf<#v8iPnDYo!20 zc|=YjuE!B0D-kWk{p`3WbL7@%ab<9-b+=j?UgG^^yLu@Cti4)ylC`&7;WCVvZ;Lxl-1RPj}|6 z#lS;>IW+x>J#AAfSN?$e#dG4m?NbM3S9bm&7l(2z6SDa;QCwlt?7l21o~>U*kaC+#+U^cmCpf9O+&NTMmHycy78C!3LU(ncVr(jQxudYU1UO?D z7*rmF{;A9j&@X3Z=W(aVfr#_(>^k|EL;2G~nEzUJC@*}g4Ckdi5vqOf&l`PegZRZ(U6N=RdW zZ$DB*Vsam*zc@FhI7zrF^gyfR@ZEM-#g|KNz_clA}*Q% z6$gTu?dQANV>fJ{>RRrL`is?_mf_8xZGgp!S5~~|_H!oW7$}q>P|jDKCq-JR6oKCP zjwbx9K<7BlN-*1o1e-TDDBPPK%D{-u%K3)YO&}Cno$;x;v3z*m*cb^L*pbfiATFoo z*Yw5Y%#*f5t zo7AwZz>zmTkh%buL6n}AsvA)jp8RKmv*&8>dr|uSaCb5C50=2MhmI9K|4A}1X)>31 zGt}*}FGfj#0Y2TaDxGsA??umbs22kQ^*ik_sxZQQbUK%wK>CdJU0~acxt+6@jS{<% z*zFaQqb-i$)Ij||6)Pe_sDMQ6%#t{*GT+KsyPfs{Ht}&e_()#Cs{{}4;D*iZT%!f{ z(A}hTiKI#*=l)oHN1cn6QaFi&NgJmowRlF((pP5DoZJtN!;9(Wh!d3jn7bMJ2f)|cu`f6bOriU{ z?FT$T-f1~7DD(@#GHCm`sLaSNTK{TIW48KBsnm-i{;=&Hn)hI${7^hEO9coXUUi(ZrxKTc_9v6 zHcA!Bqy?u|8ml@v_n7+L0__?}C(B{!NHpoUkylESK0z+ziBA4>G((#?lZx1JyYnBX z;vX+qJyoi0_-%v^bWZ+?!+e8nR)_(GJakM@-;VGEg;#d+b}mDz}HT zteRX3DL$&P%ilTtSj@=_Y~e5T3#Mi2Tp43;-&?DFvR-c_ZxA`8;jvrciw29)4R|^< zHeT?$Uoy-bvo)Bz!}%7)B2^w65idBIqKM@E1sB#-ZvV5Lc{{``DkKjR1oiq*0q41s z@zrwtNMa+&XA(RCeed)G7*1mM#u)x7S5K77pRz#dmx1S*-L}Z9CKo!mtsPfxi))an z{Ol=UskeOB6MM3(|<|tJo@>^s{!&t*p5t zpE3x<3%XU+ZjZH9JR2ND?%gY@rKSp=RPIs&?v9B#_{%+<%#3#dL%jy}ly2deT|G?g zv$jtW(@S`n`#{_df^K_>v-yaMmoLg9SM;syJCQs~IB;swQ| z=chWyy&f;HaZZ>sgbqTpe$k#Wib?cS%d25&kxa;k%L#h|8^)RBsw>{C=GioEtpCS@ z)c5|sV0ssm?tOGOIpY?|Kzq!wC9wb1W4n-x%KUZkm-1fP@(=c~YN#34RU;<}scpG< zsKox~$>3eSRs0MJo~)Cm#R7{lX-09OpK$qAJ2rc`v?AuxY0O#E7r28qX>>oAe{io; zPP+Va3mW-6Ga#a9dpoCN>_+YZkvS!M<5A)^8|yyj4uYixua@2V-MDhjOUhG3fvCt;BW7J2lXZ})cZKlYJ zQ?4HK`XY99g!>vkwu^rw>S{7XOc*|s7n|HG6y|8&Ul7*B3tkf3O7!OLSnZH>3hu*0 zaWp>B7nM_@ZQ?;=+%5Yl(Sqw#fM;nuSs;uT6iGO|AJE=YlHNTWK#3Q8f%21h|44hM zC%s=)-me?)HoWC7zfR}#xJ%iNAg#v`)6iGq1%EQZss&4@^Vful<NF;9uzV6)Zt?Gtew7BXJ?-QZP|7dQW>D zjOd@~JX#J|6WPP1bqr(r&kG?B-V`qnkIU}*5#s6euN)M!ll$zy6jaiA2JW4)&;HQv zK0X1NrQ=c~FMp?4+e^vadl z@;b(fISft;RgQn9e@L7ij@sBAJe6e+No1^h0YS)@?C-63aPOx8joO(a>_FvC)N@`Bsm2U};T5uNKh;!hqF;nH8^#A$HVx3pg z_d@}=rdk^FrUxh&CGT|kBY8VV8Nsz&(%j>Ze8EL5(M1jsu1rQiA)Pjg%thAdY_DEV zPeDB6>YTiWc(F6%1@~5nXWnwGTB^x4dwFfx{1wl-J5GcwP`Nwg@Er0@_X>DgD-xQ^ zV=cTcT4_aEGWK7&7+J_X{MVBIbWc$KMdw7jq%OA6oq1;LgIlY*yYcV8x>tAY4Gbx75yIDGOugIS` zds-r5NVrmV{3T?B)>ISOD(sY8r(xH@bsMtPdO)rhgf~zZ?C^dPRD-6VI#N@o-tI)c zL-AEiBJ+E+bnRsLyy>JE+0rc%G=HR#-uNZ?ly`AO;#@bhe>ouvurC{m_+RwL=>iv_ z&{IqmNy#Bd>ywh%D+y&X@=7%WaHJ9rG zC4!-y5h)BBPK1UNq2WXu^HT*wW=&?~LUl>G5Yxk}EG_I0R)ejhc%90c)-;yc3Vmdz zbJCZKiDcH2X()hM7M%JNioUo=-xYX>lSDGHQ&ReAojQFsM9#A9rD3TzpGBQq4qxnB zAvrid-~Lb=3hj5b!DGL!4JGyq+E8ZmKm&nu?9JN2Yj4nofc*z;sI`Bi4KwY#w4u&k zs||DQh&GhlH)=zReVsNewp)}T(oXj525pw=wr6UyWZSORW;Ka>wRxSmkJsjV#ayDz z>%}}wn>UC#Uz@wcoT1G-#oXH=8H&h+Y=5B5d&Im~oA-+OMQyglyi=Qd#Qdl>_lkMF zHVeaT-=obgG2fxhB7C)1YjdHP+qD_yA010=W*W2Xx!PPN<}0)rg$2v5)n>1l{n{K5 zbGbIxig~n{VdX?%C*%Huy*;ab}7LnL%ZCjT^LF7zIa5D5Y{f`xb$e3?`sz?F8|Oj zS8JC5E^la;8gVh%(>#}!tJI5tRoKdM!~=_^PfOPyVsB>orVsWg{f|q~>0^E7FPh(#qmhC0+P*_eqIOy{a$k%Gw~nn=bIa)_qA!R7i| zM1m;k^qoA?e81iw7G^hfkC=<*_regOLnW6k47aC{2Ajs^c2Pe%yV18mKvVIid-bm| zp%+A3aEE`2nH&6hv#VlbHh2L_7M%&%206_Z$ zz+|7DtJIz3H+D)vBJlb?1-6S*m}>;XK7Sb+W=B*;wsIK~9&%ok(UEs_7AG;;QH49e zSr9^$tMPM3>=b*UPV&NJKsCOnY+lbZNlIbOl~JjMn(Vt2Uf)aYNx7|bL)o#k=%t z(L?YoSG&98HJt4qu(8Ji0c}(y(JQ;8s-w=oaav=-r9*`XE~9q4*KUayjOBQiAiIZH zh%yEtEOK}J1Pl9Zc#+L&L;}neGb>ko=vIi?z~Ue1$LEfR~VYMXXAWX}$NJ z65);KB91`mma23v8s#RkTb`3Nn8f@#DmNh5kLd~7-LX*okP8jtVhzbBcOy$k`_4pw zizI+PhN@P~5e}cq@(jIYRLHg3)VLQ|tCg^P6I5oFe&uv#X^dqMTxj7wjq1B|3#$ z3GdM2_zp=(_Q$vSDz>?AlndeMdFaB^npw**d%9O_NS8+B?zkQp{?h4Q(TKs0aJo_t z8}>SkorT?d&|6!@`y)h+?>H|~{h5gU-PPws{Frw5vt;hE1bgh)@q#Y$j7;%%W&ah; z_-N!z(uP(4pus;yYm#g2K2XhZH&Inn{R-#k^gL;;-azzE#hxr#oO8j8%0b(Ss}PjN zw@u0p<*Yo)hfc2iM~is#%1kjX|2)nx*19_|;tJ8y>rm1Ck?sD{E=X8g3Y$$o_NqKc zZ3P0+wJJ=acf|{y8zT)Ncn0;4uf`B4?FrN)%nMX(cdwRXj*)E-OHWD^>jkV+y8lbI z3kr6gCi(7Ohec}Dz2e10&PI|m73*+$JDu|`H2H05(gZ^8Ih{xO!rKuo%Wt##&FMt1 z8SC=T4@fq*9Xgx;#ark9Hk z{Iv9maW6dIixx++YUnDSc)?p_hhvY@?b{)4915t(E*hwRmTJzGmQ)GD9?e^gs3b8A z1pKAjWf0&!sL`t8bJBy{%3ZPVhR0&Ac){o3jqJhdzI7+fKk~KCE#rec{c>Zbl*S+M z5EN>5QLU;{LHN`p)8&Vqd;h zCeOqwL|uKO_@!^dmkhJ-BSpoRELTaRb1m;-cT0QLY{{=MRSZ7~qTS)!F!y6iN^m|D zTT*II108HhX%g!|9-)%;zi=fBD4sKN`f(*gl3azD#l!78sX0mg!1f>Ny=i=kaCQv$a@hnK--B* zBfnrTX0%&Vk8Q(wx;Ob<95MICM%wTE9y$(^c}Q*9Uu~iWyGRh_W}4Tw^~gMwjK~vl z&IRuy%(aYlp)B>XWz31%X*J5aJJnuar?ZkE_FCjr$oNi{*H8&s9Oc3kZjc*ZBA$!1 zXRh(g+HedAV~Y`{Mhh+>wLm8?_l2K8Lus>1ZfTQa{?5Nqim|_o0#CHy0s>V=1E}rL z-3vZN45CyB6^G4^w&Jj>BSRfk;V_kFY*|3Xydk zYy9EQhjQJ(Qa9=~_U);m&m;8neW6)1KsSXlT#@orD_g_PU;R-?*}16H{qXk--GS1l zQs~*=J&>5QxSb3-!kfX|tTC&*6u=7=OWp2=TMHE(gLS~Dkno*kKxvaAH5_H%a{r+k zl@hQ2_EFtC(<8oNx@oarkoVJHFe*?PPdWk<^8Up8f$Sn`y>mu>k+NMZYqUBp^JR%9 z!jD%26)%O3tghI$aB!gFnP6Jy$uRBrNO!@O9v&30THZ?y->|UQc0i1hPWG)MI@tu9 zj{?jw5W~G_%>i@hPG%vmz3vAhzGjQfH{sf$?iJ5~)%}nbpQxiLb1F73tPWIs#%5N< z*9-GddlNC$v-YFy475M~os1`xiDj?E7_q$NT)@f}4Gd`Fb`}|7+X+Gb>tt9JTvNfd zXp%jHI7%veFtH0Bk>gMxb9V&DS}HpeDC${75gQTgUjd68z`T)`wpAI)ek2#c+Eh%FBS)BUuvkb-(r$htw+hl)OIea zdva<7dBs?&14T(r-m-hp#*OwQdGHWNkGAY0l0>$5CC}1-t``z3;sJEPq%FqxE-IvH z&dGFGj9N;$aW*9&!`P|e$yecQam4_VyfX0PxJ!10|F|Pv5XbHl3w0ru#NL=}#;S{8 zx{te21k)-%5$9b$Cx|Rb;Z=lb@%Ypwbq{AS8*qyCL>6T)j8X%wQ>Hb>2|9$GzKl%K zrb=YmUd3>vJCpaK>50uF-zCYrV&T*oImfGnMDvynhd(oP!q1G5qiPh~ezy3P_HE>S zUMEL{?W%Z+B@h!(AbL?Da$!WdqO&9yB88V0vfrzwZ2Zuqix+G*-tERabo~z0fw1_( zU&VuUoC{{9aLa$$R7G(h21#D+?r zT>g|vC98++*yC0@h^lAJCaQ|}LjqSt_NfQStcS&*oEc+YqK@%ocPn+RUCqK=>Ul3yE{T4Ju_3|JT+&KNsl)&*dCnVLa#! zPdIK4Kq0!wsiz;Nst7>x#=>@9A$@o zo#ZxGVT28*OKZs=%V|b8b>7PGb_Mnv9mYO887+1tq@Rwwa~Pzb9H^&I^S;8||DKaT zBx5r#3_&?nn2{eFZ4Wb;KD~!>KQz0S_h<2f9AWqlsb9%}<)O5yBkxpg{tDsYsW+0c zlo+LTekAyJeIz5iWE_t&jEi14$o|K6Ic}lsMb!Q{qcX?djHu(iaKaaH|F~Se75~UK z2GMvh|NKbx-(@%`%8wWPivpDOi8_swIB;1VX%O`p6nmth=@R(j*h7^7Sn^TY7BXsEqD1m08)Aa+!wm?el7s}<^5TALLeWi*oI|hj#)j;0Mj37e zU+hD~se%CpL?(+Xzc2N?b*|>GRG-iXktm~D;jq}j`a*M9!6V?XIC;-aM8_+}YL4(( zQXzG+m7SEp)^bRYVkzU2c6&A*PPnHs;hs4EEIf((!K^u*>B5r)gcE{5!;h#rH}-q? zgKjC&GW#|z9Y)a9aVK;O!DaqPXD*rW(a)BZ`6@nMQp)w$hzTqH>b|XuIr-s1gp@&5 z?O?_WJja=c7285b1nQSdEz^s01;Uokv`UFoIss_WmO;o2_N_Tfo;tza#(roH=o zh2dbnJqAge=&okQw}YxU{N>OkrxW-Q2}~%>$={`lB=0xc@h!XNds0EeZ^wRqxcD6_ zzD1IY-KwXKaZivthIi30V@#Evc8Is!BfdhBk-S=*J}E79&VHY|Z7g_ZWJ2k6?2s)x z)$aM1lE)fMX{GLk z^sTd4Tx8kowpfg4G9Y;3mqay4;uo(Rh^6u};;QdVyq% z3ay^qRs1H^DT5AwN)Wu!dKhZ+p7sgj@}wy6v0v;Lrl7kBpHAmfzXpW21}HmOTSoFW zDhD3l&Xs|Zc2{sbA|gEQILISYJi_X26KU&;N2fq#V4)gMu)p^UT8PM5`&K$;L!|?e zM9z-bcT@>Zw3iF7AKAqw_b(w>s`$qrt14bh6?4GZ3Dy`lmYiQA%zw7M;2Oe*>r1R~ zeW95?yiy{1?;2W=UsW4|poZ8CX>3p42A2^kwqLkQ`v0M{S?t(Lg873 zR;f7e`z81+)x6=}?VVUeljJz?JSt|{m<<;uvhsaQIxG11 zz^7G9c|Iq%$@!!tqXiGK-Gfl~sTz2hDck);F4-8%r83jVmXsS@Xv(mp>Qm_wtF|PE z9(Ap%UD;vw{jwD&a>_6UQ(Q((UQ0h=M38=-OsekiDpkR3$|m@#Q*cg7KmC8VlDo2{ z_H^)pc61W$KzZbMkRS-Xv!MM8m$3*zW#Wk}|ao`v8HJ$g>9z zl6W%dKQM`RSnwvRlOcPq8gS%#bR!>>o=evXj>O;!@~B2tzWs82JiffXaQ~OG^b$cP za!t9QRFBQ^QTym}@ln0%@5rOY{3w65PN)1$(H9MWzz9CHSgxdX)yUB{R6(mtch|V5 z{H3uvGHetJXI5W-X*+6;Z~5C+Pfhga7Cq9pJzZQwJxBz3G+5@}@Ya0#rvCcjhn;}= zP|5%@B6ar2@?9^gWqoY?&0I> z^!Kn?WWUmu4Aw6`^c7CWKkKEh6WQ$NZx8+k{87@sst>WLiN5&JnsWQ>Z}N|}Q`PqC z4<~686shsO_ARIN%X~k7m46fo4_80pf5E@;AMQ$|`d78~%N+FU7g^PC z6M3I?xE(1t5bvz4L*BcROPXRb?Uwa5x0Ldb{QS)th_A1_bbXgxLYdxtdNNq5f51Nb z!lZ{3Hs3+?e92{;ot5aYIXjOz1U&=7kGFTJ@MVOLai_vJ(qCt9YWSw|stc2 zBRR#t#$#V~Po9N#y^!=`Xkd*v^f7649kFVSN zo)U1p(v%FA5mms^ACex%I~& zHMRDS=BltIS6<$SAkbOEQn!X^mHb$jB2bM~mMt$=@3iLbsPsUY6{+;Zoc6=fWLgQ{ zBD~aNsg%&>u52NtxujHQm*|w3>XW4qeym+EalQo=GVa;@<3YFr5$=Y6KH{>E*?5qj zehy}MGLkOhzB1NtFns;MK@shxixX}pjsi)t>}P^-ksFkVYFUo`IJWpov6(_mWOQ6t zd1X0^vjNVOR|`LKUCB?1uf!CY6sS+#)8pq&ks7gv7xV1)R52}ItRDjBu^eU5kAWMD zynP#jTfK-1S+R%03Pb`WfeGi8gtEX5X*g7t2-eHRps;?|#Ptw2czCR*NH8AcD6>Mx z+ka_;^KS2Abt5

    K&D6Vj|ffsWKonkDM=+ZPdk=Y-_4vEvI3smT;cVaUgP+&@C_N zmh--CMrbVW+bYtIz@Rca2!qNf_urjg!mA5PjFK&HdGE6SlRC4f-3y{X=gJ;{ zJwiL#+NoCnoNj7!*6rl8KP2irSew9zvzG*r%|#DwQl#aPJeS5VYNh^ zL}tiK9=w0XNQ0)LhpnT@$GyY$`A?ijzl&u1b#;Ev{UC=RZzc#r^V_=6yo~Qyd2U?4 z!P5G+NMzOfTYtU`VpyitLW*qbBtJ6I`K8LlY$#31ME62NuXE!OP!-L4n?wVh&es9m z+YybBum2Z*v+ox&%D}Y-t~2nD20mrr+XjANVCElmI!75;Y+$v4 zR~R_oz-0!mG4MVEpD^$Z1NRx2Z|cEg;F$&n4BTp9qW|=mcJj7?FB-Vrzzqi8XW$(M z-eh0`PXc-ZY3(v|)EU@fV8TBE=ild0;nqE%;oLVhoPVN@p9q(L4QFci+LI3Lp9m-L zych2}U!auq41R?O*9+&QS<^V;E8K#(e{j972aFbTuJsjmk68GG{;4$*Q->G3|E9k1 zvemGji*`If`NUuF3fvx*i}eQfoj~~{Kc{-mIp-W; zBK`Tx`skE=1+gnu(S$z*IHq-0D?ojTc=io_@g#qvv3qooWIYJJnJM8=f3?~V5l-kD zh_7crxKj;oNncXF|Hd?xj%RtAg|;?|#c5W#2_yKV)y(84;f21{_$NLIe-Cz#aggu> z@qT6S7L!gY-htsd@E3fK9wMBgD{SZl<`Hf&Q0S6R(w*Kot+6fG+}c>%I&a~;`Hj~! zDlgopH`a$*=LN6p?~zEqrK2xDa6MK#_JMQ?5B5PyIN1-%UD3aO$6TS)OW<9Mf8vw+ zTRAYir6Wjqp+B`hO8A|G_Wkx% zd# zJu|TjF8Lh%T7wH(Mm10mKkh#ctQ!#T-U0E(AZz2lHG5WrXV(1r&GoZ_^O~D1>l8Za zDVFq9%ewk%D7#u2t*iOhYR%%O9TN17Ue%wz@z^~&ilWa{v#Px^I(XZh#a83uM(dnY zCY`-xqy^M;2tH{yPe=OjNx6Q2J#}12r0ZYZ7f#g^_SAHX1`o<|Ix{jd($mw^`2ITS zoZ}zA^k0ErH9UIR*g4;=6Fh=p>ur5_B>fk$r{a-t(w{PJ?+YjGemwSp;UvVLX25Ub5 z`o7*xI^7M1jt!6Wr%(Dr)3vK| znqGCmxhYo5e_@TU>Vi}k9dFv1W#h)@W&4^uvszl_&(qz`Gj~>-XThw7M$atVgTclH zEkRGP*)zWxYJzhcJySgiI_A%tO{cuhGq0(>xwW;iJ~;onG1;~A8)vmOdg_~-g0t$0 zNsJWiC$)LnLM<)Lt@t#~THu*OMiwygg9GCN)$zw9@+I_*%ga91uc<*Y z+(=B%?9esXJ=ZmdT2pBq=mq>$zf&Q`O;vZ_7H5*cCJ$)fOa~o&1XiO6BtZ&HYqIoG1Ro(T) zJM*yd+JX(=5bq3$*Ak+|Eu7aH49%L~S4mQvDgmL3esP%czq+}pkzRfpjR)WfN*0rJ zojyV0_2s*{rLjr+LR&NC(9pPWUcCt`J&<%xH|5m0xP|^h%aPI<*i$8(DyI-Bn{W$g zg7boNTN~+>w1{g{<4E|!mye0mFe^AqldT5>{^seXkkVb%V9?t5{Sf>a#7XO)W(FZD zHQ3m?U>+Tf#wcw-x_Uc#&XHitnjC>^?`d0ta6IZ_E48U7ko>qZ4)UVUqGTl1Wt=i+%Pw^K_? zljTya2Sq8=Z2H0&n43v0tWsOfC#-xOt~jOQb=vza&~*hG&+ z=G%LEx|&bh$7<+EOV4m-X1NAs=j7%McIOW{;>e)|M;%>Qbj-2Ch97slXT-=8ibtJz zQpw4ul#V`i%xPt(j~zGuj5E(FpD?jv(&V$x@%pAr^;dr9+(6ZN=U3NUaAECtr%j*1 z0ic-K^R54UKcInLF=$*Un$i)ZFs@*0x}1;iARYUH^k6OPAeXP1a;t z<=5+Zv&77!iTU&*owI&(mP9GBnyiqT``{47-V~ZYA0xa>rp1JtZ>48inQ8eMm6erF z`OYY_YE?i_dF{+BmvvTI*(J3c6ZLq6-LYJCbL;q6NVF{Ga}mPI5{?!x{)tt6@G@Pp z-b#FIsdgpia&fzTfIW&m5m)?g8DPJ4fPKvXJBJMV#sAR&`;Q0MB@Ow`ZA|bCmoP0g zFPa`ygPpiv)YjN~;q31*HdOUZkUkwv{HtfR1%1ph3ma>jTS6_`19$DF(OETcBeSk) zoYK5l$Gm8I<+O2Q$M~z+U;O{Sz7p_Q1OJuKcJ;r3K8LagXvyF7ufsa{U;psSt-gP9 zIpnwbmx|#=tM6YLGN*6zFA?9OHR{`a5${NO_yHa`5wqmONRyle9lTefc7zGLT;Pwjg8nP;Ed{rn4mdGV!}U)l5O zYp=iY*T22F_pP_zdH3)Cc+c*BKlZ_g|NN-u<4^we>1X@)_kRAxmtS!j!usEx@DD$s zf2#@qe>(sF)9L?jm;b+GxDM~H7_R^6{09OP7c7`4k_`Pd@QwD=@Oi{=9iQ^3sX48o z;WTX#ogyDU`TULbtjQaba`OwC7xuGX$O>4zrz7D=c=$rsgxZ4an}p^oU6>ZuUN4H#|9Yk(kC@-c`b@Kso@x=THn(z|Tz#IY^AVeP z0`nRXpBxL)x9qY!Xi(J#yjJ>md1g|@TpUx z3s0M{xAiP0)#CLUs;ogHu3Ipx2|l&Kvk-n4Nk@Hi%XMn;oDi1GW5t=0fjSdz;cP8& z`sUE2|84O$T*pcc63r67fz_`O*N6ZnQG8ZiB3z$z18GiQh`PqPiL87p5>vu|W7Y?j zQwn|kN@!p>kwYXhk{YnCWj?|sSra3okoI!vpQF4Pc23P-1H zVzG|@L8a9Xot09qiF!C>L8OE`WRa%$AFe1heF@Q0!@Rb>qFpen#k8D6JN!msB)_J; z9+H?8|HBbe*M>-IR;#WK5o`1z()G$}f0l?cQxT*TU0?b%ibKWM85n>Sx@l#qVpM5h z@7M49I(%J_aiV#SDHX}Dh~TKtg|k%)NqE$m79;kn5JD{BcOt(@lO|hdpFP;A}}-9zndx{6=7(1cI{#8J}tQs?Cf2>Z=h1&YyQp6LWyJBRZyNn3jyaCD?lA zc)}qqmaJ=M>~mPw_c>gBwTQS=?Z`O$tb}iwCEg~w;A?2CpAVFQu|W^YcykO zFarw>9BQD;KwdFy7lz$s=&+3at2XVv#<=$y`=82EvKwt?>&xYxip4BTVjiw5pC z@M!~g8o1TKE(0GmaD#z=GH|_t_ZxVxf%h1=&cHhjyu-k?2Cg)4v4JfH))^Quu-rh8 zftG=LTTQ(fxX!?K17{joZeYHFJ>S>yb{crEfp-|V#=w;ZE;g{%K)-?I29_A;GSF@@ zbQySufh`7l4fGh;Yuedv1J@bYVqmR-iFOMA1seu822%!a28#ygNBe;XgcXD%gfWCa zgiVB7glU9#goT8Y6o!&->V+3vc+revYua@G^uL~Q{mFOT6sTGMa?eGrJ)g*CEwCS{h~xdMkDD zxp+sKbqBga>|H9qL;Vq-^(p>4G54g{6LADr0yoOwadG$Z6a1;)I>IHs)NqB@^|>ef z1q#lx6u*IKC(@L#yTLt|uLS?9=INS;?{A5CiRy`YP&sD*ZZRd+AcJDIqTHGF9UrAMPox|e>cK(;r|l9 zR2uua5oR|ko7gUmoI-3ebmI;F4yewRdGUJ@LUFz?>=LH#Mt)$rH$M%OnFU6!xlIPE`Vq>H-Ep>DIO+d-1o7RjsYB3++l&?sLmQ1G_^y(VrG zP`+OQ#qVLDgns#WgFB_{$_>6X#P2cwnH~c3o#8Rz3p4uBP)D3vl3cH={VMbo>cv zM>~e4W%s!DX70}DN^8+|wjMk$(0`-`ha(|IFA=;5H4hFOgd{_;j24*^vjeDd>CRP8~LXGIW`E zH=L>C4L(cz9S@Z6uf|?9YLIp0_|?{tj+?C9-Pv8PmaMwWT6Bi)aabNUxr&OjtRott z))9m`!m-lIp*+N|48IZJSyzF6$|MZv7>>x#u=2O&q`AiDrlqv?aYR ztyXY&DbLhCRd_LVbdIL;M4)`5jeW?_4EpIHD|1?!s#h;zrCiF$tH4?VTMS%d;Ci6f z;8Xza%TRa!u@ZJllGskF~E^z0_RI^(|tDBpcv z9bd}J@}Zl{uj|KVj2lmiscr;WGu5*GgWp$c2$PX!WzZH<-5f>Pj9dIDkD{KV_ZI9v zvTI07eq9mc+R*WXt)XM{dj{|At4%3u8OkJmIqP>dzc<>!ja|$~T*#Opc2}C^`V@XY z)h*v;<-fSV%H7&zxq{7B#*Bsia1?o*)?i1Am9^JdmrT~c{e&ZARrJJ>$Tn}X$kPtIW+W^XU>&4psbD(@*6Hem0 z&er{Nh#Et(ljGP>`Hrz)2$b&%ptOb5{Pjrw(5Ne7 zJ{dYbN9GdMM#VkxCGwVkqj58NYbR~VTZ_Sat4XK$Qk~9dpnOq7>m5M(QqwQIg!IQ` zS;HD`rF?I(avZCy4Em|eHR3l_8m;*fblj0bhYU6A4IPp<37UXjLr2ii@!;j!Zxc|y z#|&LN4?&k#=o&kS_3Z78%ePr>#~MqI%$hdwZ!@$BKwPQoAH81nQAV{G>dw(+l%Prc z_L_7p{3NsoD4!RY2*(|SEnz8?Z5|GxxE==*`vzaKU3n}PB@ex>f`mtCdpO+dlf zV(be@Lug%M(sT?;w+1 zr5uiK)b>$8$=_K(abIoRe`eerndoJYO{*;`A7q_4{$E7}j`xdnJ<3R~>#~cqr#z?e z>^5ol00m#ZH%%o}2Hb0KK6i~y+dWsOIRhx6{$}hS0OiY?r|alipnTT>g;q_=pR)=a z_h${Hr3YH3P1fORP1-Gzwu$@PwHjA3k`AHoMkDc90~FjtR9{Z=g{m)mW-=Bn(Ecqz z`8tgKHe>&nvFrFU7Wd6pwZs?PYoMbG@x7R{nl+wdfnpzWoNFLYs?uI;;;tud8U0$q zb^_&l!`O=^V@jX8z0{+c&pM`s>$n5iP$CNl)`&3U{izL)@q3w&c`h z*GioB+mTED1l{fgjqm34bJJ<%_Dieic&C*IADBm7Wv15Ea314!-bFXQOWwgbX^}6ld4U})#1KKWi=lyTihWzgRk!fG!Gy1y`W)1#d z^IN-$FfRDI@vHi|sk&^4P?t9)>(WD47X0~trY-T?os669NOjY3a~yf(InfRzuV$X0 zPcXg&2eAmWtik+-ao%CXg&Ed`xH&1iRCmYVOlvUxVDQ-N-L9_8I+gxomUTM6T8St9 zhj}zV#m(W)wA>9Y#*Hk?JvOIBx695$=B4Fv%X)#|oe5k)T&BmU-IC5W?SB+dK98|Wxvk&H*$jSa-5})} zM0d0yov{EpOsbzX*s?yQ0lqtghKgWj>ygygP{#2BnD0WX=Sku{g)EEnCxW-1eHh~( zaSMq%l(_lC%_XjjxETZDI&#t(7ml(rYRT(yxz=&P9Ok!d>$n+%tmDQr*NyGti#%^w z)=B*KL?z7(=;QZdrgb=X341!fttz}WU;kJ7gt3cx+}~*bVwX1buG2cmjd59UB;%cw zX`Mv6*`(`aeD0Tq;GmtR(&NZVx3XrZx1`mPKQ&%6F3h06kIz(NgX#xcUDlenE$esu z%5Tx-+0Q;Q(;6AfvW64KIUuZRo0OHbP2Em2#jNI>p7&@sHfQ~$k1E7G^Nms%Iv-`Of6)+D@ODmJ{&qMg4|Es-ofzPt6|Nr%jF~(r9!C)JLJP_tA)QMA3 z0XGH&3Hk^VNKrT0km=Z-#?VowkBW(>oM=fNa)X@^)TyY{4|68^o2fY!6-o2SP-j`q zqQo-$zd!eN-R$1P>ecVp@AUWH>$A`I`rg<1e4oA#Un`~9u@IGx9%4d68E3-=#Rqow z%wTq&TeMzI>(;s?FI+z1)NdkxH0Cxi;|5!9$=g7#+!@r--V`&KbtiG>V9($F zbGqi;kk_(Jw|#veyn_ z%t|f>buL}WXMv0TboY>V!uHauoWvCjYv4S%IzmYwBv-57RKqJst$_RRndRMCyfUOZ61R-&G*@M(Rm(c#ZZu%un184W8q5 zL!*6!!qkOBW*=ChFj~h-ha?1b*@yJ!{?*Wg;h~fSe=X8|rR;J2*i)t?`TLQ4;EkD;^V({DQ3=& zK_&$1o7WeB(Ba3>>q8_s*^<0~Do`V6?V&*)hb$GHl ze8+X>5bo!WDq6>$@J16nZ^y&8jP^Y0>k*b%t1lD4U?=jFA|!ZVkQ?Qo8ep&4bMw4!zT^xOl==T ze<72EGlb7C51A(5jREo``Q7um|EM&)c`)gdI>H9SrH@HsjP-v0vE1#yy4^l6Z94Z7 zF5vgpIR;jQNQrkuU`gxYzWcX27e1G8IwG+AMqz2{VC@atU`k^;;Wih~lW>1@@4`Cw zXIOqyS1?DyV`0TL5!NvmR{G%Zg5U&9y<=)C!mI(7T#Vudj)L*^1-ZXt|U zx6`QGlRVvZ=-*RZxk)CsW|~PupIkJf_c`xcqp(*zwqNC&gm&An;zX~sx-Vir0^S}5 zx8$r^%={{CZ=Ov0q>lS)eZzIHW-NUzWY#L2))m&-6#VJBA$ZRACvQI$O`pIsqr40= zeBIFQ)cByzf$es0p?d<`{Pw0Dbfgs~m~hP2>zS~Q1(#WODXgPnjctb?z&bi$wZp4U zzt`#eU1{|hu#W4#Y2A0gI@+B3G3PG3%AWsw&tBu?xy||g?OGexg;(3KSHU`NbMEx< zDSe;ecIru&%AR~C*D%iC&DYp)KY&%1r=9x^=N?C#Y1i`WrQoCWuFdug>7@$|OE$wM z4e9Q=HtwIBeI#pHUPj^=8l?A=3fn*O!_2k1kIKD}(M53HATxSW&pj7A-wpc2d}r79 z!Sv@rW@t5gl?>Jt-IHf8uV=g&)!akTz0B%_$iOU~r{ABE`w>54s!~31YskC^a%gLD zD0866EZt@@iyk(ac@OdYYO6`p8j!+sjY&zl1To%v$>me_aK`4jHt%HJgvJbJtxjhi zNn@=ZN?CbczAihS**StWFTrHopO%}heQOOU*YMeWLcp~e>0Id`I!+iM%AyW(dFxMmR0DhQkJ^!A6aQEo=sLrhR zk-tjGgH{bvWix_PO9C&Wmk-rtRp9qv?ym z{+z8b5*ls>bq|aW==82Lynd;44}L6UW`XyJM=bYqa?jLRV+MNti1!#+7qf{sdw%bJ zl<+v^+hO~7Ej-Y>cha+;_uFa*=Z<~C`tvw5g}y(Gew1c1*Y#Xk+3T%Lll?;P>#fkZ zL1tXuSTl}2>8S3k_{dJzuOf^GZ-2tGzasn2NLF=5T=z~x;lVr`N;l!6H172dG2v?e zNl8X@U?O8GP@fMzkGXlEu`2F+{#A6ZyYn8af9)J(Mli-)|B8oP8@c;bxuL-cW^gFo zJ>%ZWUh)Cjp>6*&?kEed?R$3L;@8zLUk#bU-Sp8}whgk!>b@-BA656va{je~H_qA1 z^&0E*M|ApeedT8%GyIL7xY9L0aSi65|HYdj^C9@QOUur2XgU z+jY^OL*^RL&3UoccJmV=>FS@%ubFv6HP3aY$L)U5ueaR4hRow2{Y$ouyn8j%?Vf*N zlD+TY`<=y%ay~d5zvAq}Q)iClp4LI7!-;>G8D2Q#{{8QR(4W<|i|L29Ez+3}X^$6Z z3&mTVkUKD(YQj6RO}HkD{+&tR9%;g%VeVOd&m564fPDo}pWZ$Y_SOy7M)sd$*vpS$ zUK}&YtsCCBWnE*8>)O>Dhc&6*GiSZSeg}NI;*i>`S{LF4UBiVUaWxZx}f_Vf)sBay1Kk(IlV?xXN9jHI* z$8Y~$oZ&+f%xS=nGc+uT@tkIc-9IFnT0A%sT%&W8=AnaTW*25K`cu0DceipAT=}B- zvE_4huKk4CfWGXne_s8bOWxGichJ{s=CG?k9E<-Wz%NhhUk$(f8a&E5-my-v--^@>nrh98V_etny{usI9xCC=Oc+*ceJ;|h# z*Yx?i3QH;W{T(+s!F(P3$@k~YN$f@Nn>k-QoSuF#_Jjm81NeT)?*3!;M&-Wup}w;? zpqJY`X8mb@DyOcI4s;Z?dcIA4AiVESF>FI0KfpP?^Qyy-U+>Y>ySTg)?w|k8YtUcx zZJTD$U+ceFT~6aC%O_1f`UB-d?~LjQ#^3gAPyAhh_-Z$^=ZGYjoYtN+K1LT^!27EK ze;01yJpMlI_{?spt((v6mfCvw%x4UVx1g+M7N)0)un%Si^_$0+wsIDj>7iK_t5z>3}v5A_adihvn z4(aWK_*SWo7ScqR44YY7VD_pc^QuZ$Rd^Y9WtngES#L>o*#hq?JM#921bx_B;k6g- zUsUBw=7_`vtFhd)Lfs;uHtD2oJ4;bjj}Pt&1@yh*H1oW+-5;5`BymxBX<6a&lIo(W zd9p<{eRWNl$>_IVE~@f9nA3abn36t~FlXhA>4gjC(s#UoW{JvL7?G75bMnmjr_7v- zg&IDW!Nz&QsT80}NvQ`@-aKQ|Mej62di-$yIPd)FQ9j$lb##w!T!(qCxm6c==O*^J z$khow;cz)CIbI$PHU*{U^IdvT)dgjh`;C#VG7}c&UZgXpS6)OH zoLOt`NSKY~umV}nG!33StGbMl+~~>k%j}tNDGW_tF|Q1(d#g=RzxgHQE6Zl~7#UnA zACaZDvk+w|)5C{7{m>3=a@ju=GPY*pla@ja)M-4e6XN~*)F zE)(_qRIT9i@6x&DmDJzMW+pZTOEGF>C#Y?V(V+Vzh1XzFb(?8&dByG4j3ApxZmyiF zGq&ia$*T#@2P`S^PN}E0crPeef zh4p69>_lS!)YDI^&zE6q@Vv6>2vZ=_x4A{Nz0ew>vrWm5u1Z%}66N#eGR;U#DQ1Cc zsGyLGj^V25Q)kYT{1P!z1LdWKsw%#mH;=lRt&n*a^M)04HP3eBy9tc63(NYd&2H+M ztban^Z0oB0YxJOBF}sw|E}pGN`fN>LmNMqSggL%-#lF!ORF*D?mRA;5Vdl*IG+}Px zyprhtIqUVHoBs5kTF&+^8^9dz^{JW?tn@|IWCiBrkQ#YrkG(e=8_Pz!>gSUu%-l~2 zvB>=Bz#+)VDg91cRaU(^QdZ5U{B+5sv;rky94u3giprN>;BvUx>$kmDVmkL!n{Ryq zEjtL*SblE}X>=*1H^G+KqM0>bT-H#a+V(pEH%kERVAQ(;tLr!I>Pi=palry}Yaqm_ zt7@XFm`-^{)yo%2_c`V``{c3v?EMU0*)u{i?#W;|=;odA*aAk!*_34o&pHIb)Es-Z?Nm#l_HazPw zgN*mdB;QAB3g%-Nod2V1 z;FaOu{@k1=+MoS!blOF^uP1z=D|FwxLl*xu`;Eu;|9;b~CDZ?yx+`be zm{;FknDnKr%{$7zy8G*Aow@P;9~Vyi)dhb#`IkqveB;Fh)pyi|AG=|~_b&e6-@fwl z^+&GWGxhS9ess^DODd0jYvu9l&o2M{&f}i{!%2f0JI3CATH7y1%w2lz_Dj?E9sOMG zBQGSsdD!fSpT4T8dCIv1zV`Xs?wYyfqu(6*%@bqq9n>AUqTlI1x$)FnzjfzpPhI)t z{EW-u-@oR(yC3@E_>bp5dCNOnPe{3N)Uv^o){J~~ZPkVc4o|$fqG9qWm;CN$L+@Re zIqv-je>m^w=7>!{m~qap3y$ghOY6X4rFk{m>Wfz#a`5@rE&opcXI4dvy3VxUWBZMC zgkId@h`@IIdT4d@2HvpCT2-e@*c zzLhWKNA@Sv0B>n}-*Sav!8_{t-wr+{jeOEMP#S*Rys7Ki)8|p9842|H>3A>!ct?!? z?H~?Zo`Za#xbf*7$^2Kob>D2<0f5RDq#cffK)u92IB>r4&<_4&<5PbBR-RS&s&nrkN-FYOrn_#cbY53jhDt=-_yzS3uxFF$`i z`=|dF6ZC*bKH6eX4>~~{bc221BhU_Fpbo4Dw}UniJp8_>{wO3msQ)B6e438a-cis0 z1Eo*(8Rfkl#K3{_p>chnbk#;`3gK_1pWxZMWh^Hqr-k!l?RYn#5ZZo;iT(R0B@Gym zoIG$~O3I)?g9oRk4jD3ZXj-qs^UpuO9+Z~Kt#q}=NdxNNVUP>*K{1Gdc3>z#OojMQ zjli#czZNu#Q-Ed)>+c9{A>W_R>@WN{)&YBIfK9{gNLMLWQ`8z`PbE%;^&geOS{79SHNKq1!|*epuDOa@*e}r^JR`Nhjso6pz~{h@^d3N z41CYI8(`(H5vZ&!K>i*E%HL0b&c6b5K8s3G{rGi;_%A$qP365DHqr2>9{<8j{TD|4 z>Bd`aCO+MG=zn1*|HVo5YW7|ZoA9T0f$+aLWB)zT|1a+n;iv675K2h&mc~XV=;F&) zUp~&&X7d|XXlSy0*`0B33CO=B=5Z_jAKSQlW7zrcOP6U=%8~E*!GF+yf%E?m{-4{h zXTvD-)`qSP-1O>m?2rGF1~0^EEGVb#K6`iAoU{A<-IMzGWF~$h@7(-m zwcOXKwB?)Yc(&sij`JN)aXi^^uHziXVaI8XjpMy5Z2Vo0_c)F_e$DYN$2%Q&I)27+ zhvOZN+Z}Iryv=c&<9f$8JHF1bAO9NXzSwb%Qv9Y-AJJD%(~&vB09G{?pA~*x+e$y@BL9i429;6dtE;t3OP~;qbxD$|d@8u%!9k3O=2!03B@Ovbf z2P#}R?c;U$jJMB@|3ftpw7n}EyibF=uO)c=JaP=V8~!3U%k=GX(B`h}@m>SA;zwKu z8j;0!0oed*gOA|`T?hJn*tel8ZUA{-Pw;pf@&x2|*tel89+Sy?_2|Wig4xKq@Z(^6 z9p8h(zCB&>L~ep!j34o_paMA`{!uphLzX?<xgIX(!d~?s zwEZc&pi5?8FAzWC5-<_D4Sr=db0u;d&X~vVFCz!-eFp7%%I4=HZXCDbM|=@jk1W0k ztVOPeCvsC+Z718CdS55;GSY&740bipM(}T(+znSQV!p(W-sze873v&W@Am9DlYV)* zeFtdT5?fb#2k6$bc@BwQ?*#Qfhv$=5P!I6S#k|WUxdhueKzZndKX$S?m-vD7`EaF^ z>)@w=>??|Q1KCy-FI>tqeq`~LAPZT14M;|ooy1*b)FHC$6uwxl@3@iS9o$4Ox{^G= zpW{ZlH%{SUmDCIRFnk}FNPEe?-$_-hf9Uh!H-P$596mH^W!drj80362!L!Bp`EOD` z$hoj@LrDc5p;AGsJ#z0RhU2A=|y=Lq~1 zke!B3_+6kn?1oRj9zTSQ!p%VXHh7PdyWyK|px@#rXtyqC?@l)E7S++F_z^z<-a{7u z6}*P52ME)Fmmhf8I`Y4kI)od5^411_{U+uj^!yII*$KQlgi~*}VbkCZPHuyJ8+hW{ z?=UYBR{S-vMDf7B%{%b}pdP*WNl=H}3I7hL?0O)+7%1H+yxqy|aQ1iY*bKvuf)2vA z!y|9C{=@LEK^%QIeAR7s{t4Q;lU=-r?x62s&rZDfd(4ga58ASmy}PsO>3jGQe;v#~ zj=`Oh$(w0lz5&W}7`_syZtLJBO}s~k|6=&$X4^j_@T)*`OB~h%8~KmIzW}ZH?}lIB z#C(bzhohS*BeMA8yJ<&cbB{6MHrg6ld@N8N^5GT0ixd9BeT=nh=-coW!0T6V9LSG& z-2GP0gtsEWzA+yFPyRuV{X5yg`w%2z zhfcg=JM)9mf>R%{@ds_($^PBrU<&@lFM^54ad^uQS^JRN;1!SBHVxXelfApK?abl$ z5zhg&$PxHy@XW3BbNHt_D5K(p{|eL=vM+Zy$iwzqE?fk>c7#_xY1<_RKL(`lge(7@ zXL+=H6uzs&mOW^1PB!V@c#1cEiBr4>lp+W1%E{i`u;zHEPepwB8#5@VdPHu`ZwKJ zhBpJ*brVng1^Gr69|r~_i%$jn2rItC>2vq+JQb*)cfQ5^{I*?BWAME|b=wB-dB>&| zwCyIlZ$+S(u;Md71i2VK@t4%k?TkVAV<6ja;y?U~^pM5L@6i^>X>j|m=>y2(eeYA} z$huJZ`X88IkYjK?P=3TS|H!ySAGGZjwCg4tZfAeM{sS9p;wwNRviLTzm$3El%fK7s z@PK`Gtfj#l2V=Vl|3Uj}K^twd-*yYQ89(B?z#3%nzk?d&pnbKV4K~?mn>G~N3HTB3 z0Iwm7-vrMf$GAXS54`fi+nn4EzX!DEiE{B*4L|cH4q>-DLOec~HvyBmN60LKY7hNj%7DaKB7` zmjl~RY4Eo}J^Fh1`#^bXhv#L5OdI+*yeAudJ!2ETVU(5Y;KzWMH+a!OA#Z*whTm~= zH+<-5>pve}3!Wj)I`|2v588#3&A78b7k9=G4xDVojUG##-pD)vPXLL?LHlpA z4foY?*bG81UI!*4*TXN5r#~Ra;Ws}=o{-xogv@z|(8kD7IP>#X4#OXTE$D+b++^Qv zC)k5tyccvLo5Mop%rDqBDu(-g5u0D=>n75khg*Hx5g~Kbk+h}OM7VAeWkD8i1FHYn z(byEp!|sgqaNaRM{^1qJQs>A)J8rV^_8f?!7rz9Gk%M;JWaI6m;}|38#WTSg!5;$UGib|AcHS-m-RQ;FgE(>>{Pa}XNb@B8$~0RK zad<`nww<`%3EFm(jklTDYMX*ydb1;UAxjJsRYojW*e8OFoS-=z})cWS{Ni(@BG|BQ^`^i^$@sU@&q% zeBqgtm-#jZ&p*qKwPJY3Ic~hbzWp`vpO?}P2`kPh#U2fE7`_~M^8@VLS`+sxV;tc} zJOpe<4%$_d&9$3BH+r$`r^V$5_U)^Qi_Qy~F#BrpYLJE;gFgV?US&D`uADrh586Wu z+E9}%wX_T9OZX8V3~G?YyTKA<*+tvTjjb)nvSId>6^t3=pxrUqBzqaG!Iqf#ZBT>U z4S!rsKE6vmuk5iyCVOPQ?J;qzhB1hL@dXz$mXO6)f>z`@_?H*ias_RL1?`K;&R7A+ z!)BQHA}|42yk|9SgB-LSCi`Mdmtc}Fhl_8a4X7XS$?I)h&4o*V{FK70 zoqRET3sApW4?p1Kt*~r;MHCPG4p@%d1z&wDeG>UP_;qkIavbh|yY1V_@X0`N&V?^= zat!_%@YX^2$vf!BgzbPY`JQcy82ku$27Nnx)16koXG6%W+(Q*+?J8PZWL; zC@tAsc^{~Zd*M5ptiB!|-%9_-{{&ce9yC9c!gm1WNA?;X1Bzz{eAXuF`A*6Xe+UM% zA5OlDxd_P5Y`EOX74SVyZi64(Oy9u&HuyQ9{B**{Z6Pi6li@2s6nPE&CRmTW2Oe{` z%}*H42MQ~G9<<|UCmg!R<{=TD>g0TQp_8NVMxZ@>Bm6q>>Kwk|UMttZqwb>~@G}{{ z6R2GE@UuYaw%#8y*;|?WZewkQX8`HNu?MYx@%o1-FMh-?0nHV=;By~loG{N58>@+toL51141vj-mkZ&p76ZgTQA z_Hx@(xYWtwyMXeu6@J^vUGSt= zXjk-k@RLC8*a2^TmHi?5E%5T)q=zit2Q*&9Rj)HP(MRFsZ?I>QAGi)E58{-c+kP_l zP5LTO9vb27U$DM2#z(`4?4f>Q!>gRTN%?Ios6pt7vU2)z%>qq=B&^)#cp8BDc^Wkp-%}Z9yd{N%&efI8&s;HUc2H<6!#&rM?NBA3FO zfZB8m{Cg+wg?~Pfbr1a>_|z2o6nTrlmkz>SBJC1`4@o8O^#DG22!4>m@C!r91M+L| z4Qb2`$nEeR5JR4jo?xB;YmqzP?Ze3@vUp|&a}x4wc+3bZhv6ttz16~RW>OaX?15Kg zp+}CwXN;mO$V=cxp!G$3{6SVf1%4i=EIZ*rV<;p32gB!2An(Lq0pD>5evs?o-vjmA zz3|e{+dNdjryOea5%?mY`mcpwar#|w{~YTl89p1xPceLzlh?vO1S;1qxa$k_J7n=k zKzi}!FH(*T^d)%EMEV{2!SIbou-8Mr86J8h=aDDCouC6*T$F3$5&sFq<>x5YgGtO` z#3|l%G-XHL3YX?FA0Ufg2b$;O@S(@pvgE*{kEM?BlLIdWy2oA$-w9O4dib#8Y@R2= z8$cU=8sUd0Q}@W*;F{xYTZpeafwH0(KMqvq-SD&%$v^EFf$Kmm?Imsn?c9@ZgFBqu z3IEo~-Ei_0>n9EVqLXvs*-nnYRZfn=H#oTtZgp}S+~MR-xXa1i@Sv$KemKX;x$tZ! zN8sg7j>2o5TnD#0xee}cawpv7I)QhA zqRVMJcpp$${YF+6kgVUyI?2iUt*pgPE{3lI?-5qN9kto%_4`pBPS)=_{mRMuZKpx` zt{&hVC+ET^J2?Vh;N&QLt&{8ERwuW?9Zv3qyPVt&4=Ql+!#PgQg->;I1irw@QTSRX z*TI{e+y+1G+@N*2E{)5)-GS}G4>*_@OgvFtiZ7Ry$nWbrSYEc=YIwJ5zZhMoM2WuH#6_)#azMxE@ zuIhf~47R7fdvZb^z80DV<{bXdYoLttpP)hrsiTemM zfc*M#FZ4>~=R|QH&6|?Pd;fFgG*fs(H$?j=_47cbS8_kRT(-7O=Zr1E5tOyUtDStp zb7kq3%Ma1hDu$Ble32KflKQB?XRv%zFj7&r;@pbW;o21yl`E%?UsYXs!pfz~%T|=E zJbXp@((0;}Rm*A)Us|=|gp!pjj=1os@nP(slrO_9j= zlB}5ggRvcL!x3_2+0s=Qs#)#D6XuvwUG~*gq*7M8-=NaU{U?K`XVwx_mTl&iU07BT zuF(If<4ab~sk{&iP1WPWtI7+OF2(lJ)bYzoDpr<_pEl*l{c-mWyg&Yck58mN<;Y%n zopR*eG=5!xT`VV z*wxtGxUbPPB{!utWi^GHa+-*#DZgoUQ>1BeQ*qPsrf5@bQ>gruwGVrnaVS zP3=t`O`T1OK!{Lmi(64Es>VR zEyXR%TcRzsEwPrhEp;vHTk2a{TiRN-wY0Z%w3v4G0hGfuWHsb8$X7ku&KBM`XiaXN z+&a5;aqIHd+SawL>swn}x3zY(?rQC7-PfADDQi>CrpcRTZ(6)*`KH=UYd5Xm6uDOw z!g>!y>UY)etIukf+_1P|eM4KrwubhGj)u;Lctcl1cf-C0vmw%0+_=0k+F08dYh2q{ s*SNm1zOl7YHJAS{skhbx)>jramERKEyq5PUK07|EfzN8-|9%bpKcaFu{{R30 diff --git a/lib/unrar2/UnRARDLL/x64/unrar64.lib b/lib/unrar2/UnRARDLL/x64/unrar64.lib deleted file mode 100644 index fd037919ee10c91665fa5f30e9ec6f37ac9e03c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3972 zcmcImJ5L)y5FTt^e(;c!Dj|{+Ath-DG3N`GqR0l5VDYldtHT_=3$}9D$TkUGIz*8! zb;?lEr=v!Sl){l{Qsh6-lUeWH-K@_T8+R=JFX0GJG)aPil0o?14WT1u~E*0RaD)!9rcy|$9c9u&)3SydpLU0z>YbQ{2D zVZq1O=GT`OvdP3+0y2rr%Dz!dU>FJ?4V<8`x1ViL%H6rcrdFs%yIHeTFtp!L@t7EYzHkb;~448R}+APB=S1U=xncFgNykIP$BP^!vZHz9Cb1ex(;lg;n&NAB^TZ`y9008Qv_ zur8+{+2dPer=4|DqS#t_cWpHdMl&VN91;nKHAG2Lg9OQ*)zQ&OX~1k#rj&Alj@ZGI zlno)g_N)?T*o1DHb&B6~N-MD``;^v?ypXDWTL|<3GLn}G-Pk$U9bXk)NMPfO)e&_Z zMrS4pI;QY=#2UJfjh`rgg~E$<9460%9iHC2V2Z#Mie<;NaR{Gzunu8%uo56nJ%xLt zn0D~1K7w}%*1p5gQXy9^RZ8!x;b)oW;l@3K>vR4ml53`RbY<7T{=&{NJ z8T{VurRFE@w#Af4)VkTX{rZuo&XgbZ#jzyD7qIBL_XE5H6A0N>>1QEQQ3Q7cd^KUsd!5{I~zUy7w?cE7ETsF~fJN4MR` z-rdP%UC3efzGO+NAFDqoRO#VZ@&!b}I?go3eo@Pw zv3G-qqtSb&xN%qfe|O$=y&Y@eo8QK> Y-(qC?Tll6l_w5P#7I3f{o_G}UA258WCIA2c diff --git a/lib/unrar2/__init__.py b/lib/unrar2/__init__.py deleted file mode 100644 index c077a9a5..00000000 --- a/lib/unrar2/__init__.py +++ /dev/null @@ -1,180 +0,0 @@ -# Copyright (c) 2003-2005 Jimmy Retzlaff, 2008 Konstantin Yegupov -# -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS -# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -""" -pyUnRAR2 is a ctypes based wrapper around the free UnRAR.dll. - -It is an modified version of Jimmy Retzlaff's pyUnRAR - more simple, -stable and foolproof. -Notice that it has INCOMPATIBLE interface. - -It enables reading and unpacking of archives created with the -RAR/WinRAR archivers. There is a low-level interface which is very -similar to the C interface provided by UnRAR. There is also a -higher level interface which makes some common operations easier. -""" - -__version__ = '0.99.6' - -try: - WindowsError - in_windows = True -except NameError: - in_windows = False - -if in_windows: - from windows import RarFileImplementation -else: - from unix import RarFileImplementation - - -import fnmatch, time, weakref - -class RarInfo(object): - """Represents a file header in an archive. Don't instantiate directly. - Use only to obtain information about file. - YOU CANNOT EXTRACT FILE CONTENTS USING THIS OBJECT. - USE METHODS OF RarFile CLASS INSTEAD. - - Properties: - index - index of file within the archive - filename - name of the file in the archive including path (if any) - datetime - file date/time as a struct_time suitable for time.strftime - isdir - True if the file is a directory - size - size in bytes of the uncompressed file - comment - comment associated with the file - - Note - this is not currently intended to be a Python file-like object. - """ - - def __init__(self, rarfile, data): - self.rarfile = weakref.proxy(rarfile) - self.index = data['index'] - self.filename = data['filename'] - self.isdir = data['isdir'] - self.size = data['size'] - self.datetime = data['datetime'] - self.comment = data['comment'] - - def __str__(self): - try : - arcName = self.rarfile.archiveName - except ReferenceError: - arcName = "[ARCHIVE_NO_LONGER_LOADED]" - return '' % (self.filename, arcName) - -class RarFile(RarFileImplementation): - - def __init__(self, archiveName, password=None): - """Instantiate the archive. - - archiveName is the name of the RAR file. - password is used to decrypt the files in the archive. - - Properties: - comment - comment associated with the archive - - >>> print RarFile('test.rar').comment - This is a test. - """ - self.archiveName = archiveName - RarFileImplementation.init(self, password) - - def __del__(self): - self.destruct() - - def infoiter(self): - """Iterate over all the files in the archive, generating RarInfos. - - >>> import os - >>> for fileInArchive in RarFile('test.rar').infoiter(): - ... print os.path.split(fileInArchive.filename)[-1], - ... print fileInArchive.isdir, - ... print fileInArchive.size, - ... print fileInArchive.comment, - ... print tuple(fileInArchive.datetime)[0:5], - ... print time.strftime('%a, %d %b %Y %H:%M', fileInArchive.datetime) - test True 0 None (2003, 6, 30, 1, 59) Mon, 30 Jun 2003 01:59 - test.txt False 20 None (2003, 6, 30, 2, 1) Mon, 30 Jun 2003 02:01 - this.py False 1030 None (2002, 2, 8, 16, 47) Fri, 08 Feb 2002 16:47 - """ - for params in RarFileImplementation.infoiter(self): - yield RarInfo(self, params) - - def infolist(self): - """Return a list of RarInfos, descripting the contents of the archive.""" - return list(self.infoiter()) - - def read_files(self, condition='*'): - """Read specific files from archive into memory. - If "condition" is a list of numbers, then return files which have those positions in infolist. - If "condition" is a string, then it is treated as a wildcard for names of files to extract. - If "condition" is a function, it is treated as a callback function, which accepts a RarInfo object - and returns boolean True (extract) or False (skip). - If "condition" is omitted, all files are returned. - - Returns list of tuples (RarInfo info, str contents) - """ - checker = condition2checker(condition) - return RarFileImplementation.read_files(self, checker) - - - def extract(self, condition='*', path='.', withSubpath=True, overwrite=True): - """Extract specific files from archive to disk. - - If "condition" is a list of numbers, then extract files which have those positions in infolist. - If "condition" is a string, then it is treated as a wildcard for names of files to extract. - If "condition" is a function, it is treated as a callback function, which accepts a RarInfo object - and returns either boolean True (extract) or boolean False (skip). - DEPRECATED: If "condition" callback returns string (only supported for Windows) - - that string will be used as a new name to save the file under. - If "condition" is omitted, all files are extracted. - - "path" is a directory to extract to - "withSubpath" flag denotes whether files are extracted with their full path in the archive. - "overwrite" flag denotes whether extracted files will overwrite old ones. Defaults to true. - - Returns list of RarInfos for extracted files.""" - checker = condition2checker(condition) - return RarFileImplementation.extract(self, checker, path, withSubpath, overwrite) - - def get_volume(self): - """Determine which volume is it in a multi-volume archive. Returns None if it's not a - multi-volume archive, 0-based volume number otherwise.""" - return RarFileImplementation.get_volume(self) - -def condition2checker(condition): - """Converts different condition types to callback""" - if type(condition) in [str, unicode]: - def smatcher(info): - return fnmatch.fnmatch(info.filename, condition) - return smatcher - elif type(condition) in [list, tuple] and type(condition[0]) in [int, long]: - def imatcher(info): - return info.index in condition - return imatcher - elif callable(condition): - return condition - else: - raise TypeError - - diff --git a/lib/unrar2/license.txt b/lib/unrar2/license.txt deleted file mode 100644 index a395801b..00000000 --- a/lib/unrar2/license.txt +++ /dev/null @@ -1,21 +0,0 @@ -Copyright (c) 2003-2005 Jimmy Retzlaff, 2008 Konstantin Yegupov - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS -BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/lib/unrar2/rar_exceptions.py b/lib/unrar2/rar_exceptions.py deleted file mode 100644 index d90d1c8d..00000000 --- a/lib/unrar2/rar_exceptions.py +++ /dev/null @@ -1,30 +0,0 @@ -# Copyright (c) 2003-2005 Jimmy Retzlaff, 2008 Konstantin Yegupov -# -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS -# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Low level interface - see UnRARDLL\UNRARDLL.TXT - - -class ArchiveHeaderBroken(Exception): pass -class InvalidRARArchive(Exception): pass -class FileOpenError(Exception): pass -class IncorrectRARPassword(Exception): pass -class InvalidRARArchiveUsage(Exception): pass diff --git a/lib/unrar2/unix.py b/lib/unrar2/unix.py deleted file mode 100644 index 5e5c36b4..00000000 --- a/lib/unrar2/unix.py +++ /dev/null @@ -1,265 +0,0 @@ -# Copyright (c) 2003-2005 Jimmy Retzlaff, 2008 Konstantin Yegupov -# -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS -# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Unix version uses unrar command line executable - -import subprocess -import gc - -import os, os.path -import time, re - -from rar_exceptions import * - -class UnpackerNotInstalled(Exception): pass - -rar_executable_cached = None -rar_executable_version = None - -def call_unrar(params): - "Calls rar/unrar command line executable, returns stdout pipe" - global rar_executable_cached - if rar_executable_cached is None: - for command in ('unrar', 'rar'): - try: - subprocess.Popen([command], stdout=subprocess.PIPE) - rar_executable_cached = command - break - except OSError: - pass - if rar_executable_cached is None: - raise UnpackerNotInstalled("No suitable RAR unpacker installed") - - assert type(params) == list, "params must be list" - args = [rar_executable_cached] + params - try: - gc.disable() # See http://bugs.python.org/issue1336 - return subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - finally: - gc.enable() - -class RarFileImplementation(object): - - def init(self, password=None): - global rar_executable_version - self.password = password - - - stdoutdata, stderrdata = self.call('v', []).communicate() - - for line in stderrdata.splitlines(): - if line.strip().startswith("Cannot open"): - raise FileOpenError - if line.find("CRC failed")>=0: - raise IncorrectRARPassword - accum = [] - source = iter(stdoutdata.splitlines()) - line = '' - while (line.find('RAR ') == -1): - line = source.next() - signature = line - # The code below is mighty flaky - # and will probably crash on localized versions of RAR - # but I see no safe way to rewrite it using a CLI tool - if signature.find("RAR 4") > -1: - rar_executable_version = 4 - while not (line.startswith('Comment:') or line.startswith('Pathname/Comment')): - if line.strip().endswith('is not RAR archive'): - raise InvalidRARArchive - line = source.next() - while not line.startswith('Pathname/Comment'): - accum.append(line.rstrip('\n')) - line = source.next() - if len(accum): - accum[0] = accum[0][9:] # strip out "Comment:" part - self.comment = '\n'.join(accum[:-1]) - else: - self.comment = None - elif signature.find("RAR 5") > -1: - rar_executable_version = 5 - line = source.next() - while not line.startswith('Archive:'): - if line.strip().endswith('is not RAR archive'): - raise InvalidRARArchive - accum.append(line.rstrip('\n')) - line = source.next() - if len(accum): - self.comment = '\n'.join(accum[:-1]).strip() - else: - self.comment = None - else: - raise UnpackerNotInstalled("Unsupported RAR version, expected 4.x or 5.x, found: " - + signature.split(" ")[1]) - - - def escaped_password(self): - return '-' if self.password == None else self.password - - - def call(self, cmd, options=[], files=[]): - options2 = options + ['p'+self.escaped_password()] - soptions = ['-'+x for x in options2] - return call_unrar([cmd]+soptions+['--',self.archiveName]+files) - - def infoiter(self): - - command = "v" if rar_executable_version == 4 else "l" - stdoutdata, stderrdata = self.call(command, ['c-']).communicate() - - for line in stderrdata.splitlines(): - if line.strip().startswith("Cannot open"): - raise FileOpenError - - accum = [] - source = iter(stdoutdata.splitlines()) - line = '' - while not line.startswith('-----------'): - if line.strip().endswith('is not RAR archive'): - raise InvalidRARArchive - if line.startswith("CRC failed") or line.startswith("Checksum error"): - raise IncorrectRARPassword - line = source.next() - line = source.next() - i = 0 - re_spaces = re.compile(r"\s+") - if rar_executable_version == 4: - while not line.startswith('-----------'): - accum.append(line) - if len(accum)==2: - data = {} - data['index'] = i - # asterisks mark password-encrypted files - data['filename'] = accum[0].strip().lstrip("*") # asterisks marks password-encrypted files - fields = re_spaces.split(accum[1].strip()) - data['size'] = int(fields[0]) - attr = fields[5] - data['isdir'] = 'd' in attr.lower() - data['datetime'] = self.rarcmd_dt(fields[3], fields[4]) - data['comment'] = None - data['volume'] = None - yield data - accum = [] - i += 1 - line = source.next() - elif rar_executable_version == 5: - while not line.startswith('-----------'): - fields = line.strip().lstrip("*").split() - data = {} - data['index'] = i - data['filename'] = " ".join(fields[4:]) - data['size'] = int(fields[1]) - attr = fields[0] - data['isdir'] = 'd' in attr.lower() - data['datetime'] = self.rarcmd_dt(fields[2], fields[3]) - data['comment'] = None - data['volume'] = None - yield data - i += 1 - line = source.next() - - @staticmethod - def rarcmd_dt(param_date=time.strftime('%Y-%m-%d'), param_time=time.strftime('%H:%M')): - for str_fmt in '%Y-%m-%d %H:%M', '%d-%m-%y %H:%M': - try: - return time.strptime('%s %s' % (param_date, param_time), str_fmt) - except ValueError: - pass - return time.strptime('%s %s' % (time.strftime('%Y-%m-%d'), time.strftime('%H:%M')), '%Y-%m-%d %H:%M') - - def read_files(self, checker): - res = [] - for info in self.infoiter(): - checkres = checker(info) - if checkres==True and not info.isdir: - pipe = self.call('p', ['inul'], [info.filename]).stdout - res.append((info, pipe.read())) - return res - - - def extract(self, checker, path, withSubpath, overwrite): - res = [] - command = 'x' - if not withSubpath: - command = 'e' - options = [] - if overwrite: - options.append('o+') - else: - options.append('o-') - if not path.endswith(os.sep): - path += os.sep - names = [] - for info in self.infoiter(): - checkres = checker(info) - if type(checkres) in [str, unicode]: - raise NotImplementedError("Condition callbacks returning strings are deprecated and only supported in Windows") - if checkres==True and not info.isdir: - names.append(info.filename) - res.append(info) - names.append(path) - proc = self.call(command, options, names) - stdoutdata, stderrdata = proc.communicate() - if stderrdata.find("CRC failed")>=0 or stderrdata.find("Checksum error")>=0: - raise IncorrectRARPassword - return res - - def destruct(self): - pass - - def get_volume(self): - command = "v" if rar_executable_version == 4 else "l" - stdoutdata, stderrdata = self.call(command, ['c-']).communicate() - - for line in stderrdata.splitlines(): - if line.strip().startswith("Cannot open"): - raise FileOpenError - - source = iter(stdoutdata.splitlines()) - line = '' - while not line.startswith('-----------'): - if line.strip().endswith('is not RAR archive'): - raise InvalidRARArchive - if line.startswith("CRC failed") or line.startswith("Checksum error"): - raise IncorrectRARPassword - line = source.next() - line = source.next() - if rar_executable_version == 4: - while not line.startswith('-----------'): - line = source.next() - line = source.next() - items = line.strip().split() - if len(items)>4 and items[4]=="volume": - return int(items[5]) - 1 - else: - return None - - elif rar_executable_version == 5: - while not line.startswith('-----------'): - line = source.next() - line = source.next() - items = line.strip().split() - if items[1]=="volume": - return int(items[2]) - 1 - else: - return None - - diff --git a/lib/unrar2/windows.py b/lib/unrar2/windows.py deleted file mode 100644 index 19cca3d7..00000000 --- a/lib/unrar2/windows.py +++ /dev/null @@ -1,332 +0,0 @@ -# Copyright (c) 2003-2005 Jimmy Retzlaff, 2008 Konstantin Yegupov -# -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS -# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -# Low level interface - see UnRARDLL\UNRARDLL.TXT - -from __future__ import generators - -import ctypes, ctypes.wintypes -import os, os.path, sys, re -import Queue -import time - -from rar_exceptions import * - -ERAR_END_ARCHIVE = 10 -ERAR_NO_MEMORY = 11 -ERAR_BAD_DATA = 12 -ERAR_BAD_ARCHIVE = 13 -ERAR_UNKNOWN_FORMAT = 14 -ERAR_EOPEN = 15 -ERAR_ECREATE = 16 -ERAR_ECLOSE = 17 -ERAR_EREAD = 18 -ERAR_EWRITE = 19 -ERAR_SMALL_BUF = 20 -ERAR_UNKNOWN = 21 -ERAR_MISSING_PASSWORD = 22 - -RAR_OM_LIST = 0 -RAR_OM_EXTRACT = 1 - -RAR_SKIP = 0 -RAR_TEST = 1 -RAR_EXTRACT = 2 - -RAR_VOL_ASK = 0 -RAR_VOL_NOTIFY = 1 - -RAR_DLL_VERSION = 3 - -# enum UNRARCALLBACK_MESSAGES -UCM_CHANGEVOLUME = 0 -UCM_PROCESSDATA = 1 -UCM_NEEDPASSWORD = 2 - -architecture_bits = ctypes.sizeof(ctypes.c_voidp)*8 -dll_name = "unrar.dll" -if architecture_bits == 64: - dll_name = "x64\\unrar64.dll" - -volume_naming1 = re.compile("\.r([0-9]{2})$") -volume_naming2 = re.compile("\.([0-9]{3}).rar$") -volume_naming3 = re.compile("\.part([0-9]+).rar$") - -try: - unrar = ctypes.WinDLL(os.path.join(os.path.split(__file__)[0], 'UnRARDLL', dll_name)) -except WindowsError: - unrar = ctypes.WinDLL(dll_name) - - -class RAROpenArchiveDataEx(ctypes.Structure): - def __init__(self, ArcName=None, ArcNameW=u'', OpenMode=RAR_OM_LIST): - self.CmtBuf = ctypes.c_buffer(64*1024) - ctypes.Structure.__init__(self, ArcName=ArcName, ArcNameW=ArcNameW, OpenMode=OpenMode, _CmtBuf=ctypes.addressof(self.CmtBuf), CmtBufSize=ctypes.sizeof(self.CmtBuf)) - - _fields_ = [ - ('ArcName', ctypes.c_char_p), - ('ArcNameW', ctypes.c_wchar_p), - ('OpenMode', ctypes.c_uint), - ('OpenResult', ctypes.c_uint), - ('_CmtBuf', ctypes.c_voidp), - ('CmtBufSize', ctypes.c_uint), - ('CmtSize', ctypes.c_uint), - ('CmtState', ctypes.c_uint), - ('Flags', ctypes.c_uint), - ('Reserved', ctypes.c_uint*32), - ] - -class RARHeaderDataEx(ctypes.Structure): - def __init__(self): - self.CmtBuf = ctypes.c_buffer(64*1024) - ctypes.Structure.__init__(self, _CmtBuf=ctypes.addressof(self.CmtBuf), CmtBufSize=ctypes.sizeof(self.CmtBuf)) - - _fields_ = [ - ('ArcName', ctypes.c_char*1024), - ('ArcNameW', ctypes.c_wchar*1024), - ('FileName', ctypes.c_char*1024), - ('FileNameW', ctypes.c_wchar*1024), - ('Flags', ctypes.c_uint), - ('PackSize', ctypes.c_uint), - ('PackSizeHigh', ctypes.c_uint), - ('UnpSize', ctypes.c_uint), - ('UnpSizeHigh', ctypes.c_uint), - ('HostOS', ctypes.c_uint), - ('FileCRC', ctypes.c_uint), - ('FileTime', ctypes.c_uint), - ('UnpVer', ctypes.c_uint), - ('Method', ctypes.c_uint), - ('FileAttr', ctypes.c_uint), - ('_CmtBuf', ctypes.c_voidp), - ('CmtBufSize', ctypes.c_uint), - ('CmtSize', ctypes.c_uint), - ('CmtState', ctypes.c_uint), - ('Reserved', ctypes.c_uint*1024), - ] - -def DosDateTimeToTimeTuple(dosDateTime): - """Convert an MS-DOS format date time to a Python time tuple. - """ - dosDate = dosDateTime >> 16 - dosTime = dosDateTime & 0xffff - day = dosDate & 0x1f - month = (dosDate >> 5) & 0xf - year = 1980 + (dosDate >> 9) - second = 2*(dosTime & 0x1f) - minute = (dosTime >> 5) & 0x3f - hour = dosTime >> 11 - return time.localtime(time.mktime((year, month, day, hour, minute, second, 0, 1, -1))) - -def _wrap(restype, function, argtypes): - result = function - result.argtypes = argtypes - result.restype = restype - return result - -RARGetDllVersion = _wrap(ctypes.c_int, unrar.RARGetDllVersion, []) - -RAROpenArchiveEx = _wrap(ctypes.wintypes.HANDLE, unrar.RAROpenArchiveEx, [ctypes.POINTER(RAROpenArchiveDataEx)]) - -RARReadHeaderEx = _wrap(ctypes.c_int, unrar.RARReadHeaderEx, [ctypes.wintypes.HANDLE, ctypes.POINTER(RARHeaderDataEx)]) - -_RARSetPassword = _wrap(ctypes.c_int, unrar.RARSetPassword, [ctypes.wintypes.HANDLE, ctypes.c_char_p]) -def RARSetPassword(*args, **kwargs): - _RARSetPassword(*args, **kwargs) - -RARProcessFile = _wrap(ctypes.c_int, unrar.RARProcessFile, [ctypes.wintypes.HANDLE, ctypes.c_int, ctypes.c_char_p, ctypes.c_char_p]) - -RARCloseArchive = _wrap(ctypes.c_int, unrar.RARCloseArchive, [ctypes.wintypes.HANDLE]) - -UNRARCALLBACK = ctypes.WINFUNCTYPE(ctypes.c_int, ctypes.c_uint, ctypes.c_long, ctypes.c_long, ctypes.c_long) -RARSetCallback = _wrap(ctypes.c_int, unrar.RARSetCallback, [ctypes.wintypes.HANDLE, UNRARCALLBACK, ctypes.c_long]) - - - -RARExceptions = { - ERAR_NO_MEMORY : MemoryError, - ERAR_BAD_DATA : ArchiveHeaderBroken, - ERAR_BAD_ARCHIVE : InvalidRARArchive, - ERAR_EOPEN : FileOpenError, - } - -class PassiveReader: - """Used for reading files to memory""" - def __init__(self, usercallback = None): - self.buf = [] - self.ucb = usercallback - - def _callback(self, msg, UserData, P1, P2): - if msg == UCM_PROCESSDATA: - data = (ctypes.c_char*P2).from_address(P1).raw - if self.ucb!=None: - self.ucb(data) - else: - self.buf.append(data) - return 1 - - def get_result(self): - return ''.join(self.buf) - -class RarInfoIterator(object): - def __init__(self, arc): - self.arc = arc - self.index = 0 - self.headerData = RARHeaderDataEx() - self.res = RARReadHeaderEx(self.arc._handle, ctypes.byref(self.headerData)) - if self.res in [ERAR_BAD_DATA, ERAR_MISSING_PASSWORD]: - raise IncorrectRARPassword - self.arc.lockStatus = "locked" - self.arc.needskip = False - - def __iter__(self): - return self - - def next(self): - if self.index>0: - if self.arc.needskip: - RARProcessFile(self.arc._handle, RAR_SKIP, None, None) - self.res = RARReadHeaderEx(self.arc._handle, ctypes.byref(self.headerData)) - - if self.res: - raise StopIteration - self.arc.needskip = True - - data = {} - data['index'] = self.index - data['filename'] = self.headerData.FileNameW - data['datetime'] = DosDateTimeToTimeTuple(self.headerData.FileTime) - data['isdir'] = ((self.headerData.Flags & 0xE0) == 0xE0) - data['size'] = self.headerData.UnpSize + (self.headerData.UnpSizeHigh << 32) - if self.headerData.CmtState == 1: - data['comment'] = self.headerData.CmtBuf.value - else: - data['comment'] = None - self.index += 1 - return data - - - def __del__(self): - self.arc.lockStatus = "finished" - -def generate_password_provider(password): - def password_provider_callback(msg, UserData, P1, P2): - if msg == UCM_NEEDPASSWORD and password!=None: - (ctypes.c_char*P2).from_address(P1).value = password - return 1 - return password_provider_callback - -class RarFileImplementation(object): - - def init(self, password=None): - self.password = password - archiveData = RAROpenArchiveDataEx(ArcNameW=self.archiveName, OpenMode=RAR_OM_EXTRACT) - self._handle = RAROpenArchiveEx(ctypes.byref(archiveData)) - self.c_callback = UNRARCALLBACK(generate_password_provider(self.password)) - RARSetCallback(self._handle, self.c_callback, 1) - - if archiveData.OpenResult != 0: - raise RARExceptions[archiveData.OpenResult] - - if archiveData.CmtState == 1: - self.comment = archiveData.CmtBuf.value - else: - self.comment = None - - if password: - RARSetPassword(self._handle, password) - - self.lockStatus = "ready" - - self.isVolume = archiveData.Flags & 1 - - - def destruct(self): - if self._handle and RARCloseArchive: - RARCloseArchive(self._handle) - - def make_sure_ready(self): - if self.lockStatus == "locked": - raise InvalidRARArchiveUsage("cannot execute infoiter() without finishing previous one") - if self.lockStatus == "finished": - self.destruct() - self.init(self.password) - - def infoiter(self): - self.make_sure_ready() - return RarInfoIterator(self) - - def read_files(self, checker): - res = [] - for info in self.infoiter(): - if checker(info) and not info.isdir: - reader = PassiveReader() - c_callback = UNRARCALLBACK(reader._callback) - RARSetCallback(self._handle, c_callback, 1) - tmpres = RARProcessFile(self._handle, RAR_TEST, None, None) - if tmpres in [ERAR_BAD_DATA, ERAR_MISSING_PASSWORD]: - raise IncorrectRARPassword - self.needskip = False - res.append((info, reader.get_result())) - return res - - - def extract(self, checker, path, withSubpath, overwrite): - res = [] - for info in self.infoiter(): - checkres = checker(info) - if checkres!=False and not info.isdir: - if checkres==True: - fn = info.filename - if not withSubpath: - fn = os.path.split(fn)[-1] - target = os.path.join(path, fn) - else: - raise DeprecationWarning, "Condition callbacks returning strings are deprecated and only supported in Windows" - target = checkres - if overwrite or (not os.path.exists(target)): - tmpres = RARProcessFile(self._handle, RAR_EXTRACT, None, target) - if tmpres in [ERAR_BAD_DATA, ERAR_MISSING_PASSWORD]: - raise IncorrectRARPassword - - self.needskip = False - res.append(info) - return res - - def get_volume(self): - if not self.isVolume: - return None - headerData = RARHeaderDataEx() - res = RARReadHeaderEx(self._handle, ctypes.byref(headerData)) - arcName = headerData.ArcNameW - match3 = volume_naming3.search(arcName) - if match3 != None: - return int(match3.group(1)) - 1 - match2 = volume_naming3.search(arcName) - if match2 != None: - return int(match2.group(1)) - match1 = volume_naming1.search(arcName) - if match1 != None: - return int(match1.group(1)) + 1 - return 0 - - - diff --git a/sickbeard/helpers.py b/sickbeard/helpers.py index d5b5c3b3..9db10603 100644 --- a/sickbeard/helpers.py +++ b/sickbeard/helpers.py @@ -130,33 +130,19 @@ def isSyncFile(filename): return False -def isMediaFile(filename): +def has_media_ext(filename): # ignore samples - if re.search('(^|[\W_])(sample\d*)[\W_]', filename, re.I): + if re.search('(^|[\W_])(sample\d*)[\W_]', filename, re.I) \ + or filename.startswith('._'): # and MAC OS's 'resource fork' files return False - # ignore MAC OS's retarded "resource fork" files - if filename.startswith('._'): - return False - - sepFile = filename.rpartition(".") - - if re.search('extras?$', sepFile[0], re.I): - return False - - if sepFile[2].lower() in mediaExtensions: - return True - else: - return False + sep_file = filename.rpartition('.') + return (None is re.search('extras?$', sep_file[0], re.I)) and (sep_file[2].lower() in mediaExtensions) -def isRarFile(filename): - archive_regex = '(?P^(?P(?:(?!\.part\d+\.rar$).)*)\.(?:(?:part0*1\.)?rar)$)' +def is_first_rar_volume(filename): - if re.search(archive_regex, filename): - return True - - return False + return None is not re.search('(?P^(?P(?:(?!\.part\d+\.rar$).)*)\.(?:(?:part0*1\.)?rar)$)', filename) def sanitizeFileName(name): @@ -264,7 +250,7 @@ def listMediaFiles(path): if ek.ek(os.path.isdir, fullCurFile) and not curFile.startswith('.') and not curFile == 'Extras': files += listMediaFiles(fullCurFile) - elif isMediaFile(curFile): + elif has_media_ext(curFile): files.append(fullCurFile) return files diff --git a/sickbeard/postProcessor.py b/sickbeard/postProcessor.py index 0c913584..1bdd13d5 100644 --- a/sickbeard/postProcessor.py +++ b/sickbeard/postProcessor.py @@ -824,10 +824,11 @@ class PostProcessor(object): Post-process a given file """ - self._log(u'Processing %s%s' % (self.file_path, (u'
    .. from nzb %s' % self.nzb_name, u'')[None is self.nzb_name])) + self._log(u'Processing... %s%s' % (ek.ek(os.path.relpath, self.file_path, self.folder_path), + (u'
    .. from nzb %s' % self.nzb_name, u'')[None is self.nzb_name])) if ek.ek(os.path.isdir, self.file_path): - self._log(u'File %s
    .. seems to be a directory' % self.file_path) + self._log(u'Expecting file %s
    .. is actually a directory, skipping' % self.file_path) return False for ignore_file in self.IGNORED_FILESTRINGS: @@ -844,7 +845,7 @@ class PostProcessor(object): # if we don't have it then give up if not show: - self._log(u'Please add the show to your SickGear then try to post process an episode', logger.WARNING) + self._log(u'Must add show to SickGear before trying to post process an episode', logger.WARNING) raise exceptions.PostProcessingFailed() elif None is season or not episodes: self._log(u'Quitting this post process, could not determine what episode this is', logger.DEBUG) @@ -876,7 +877,7 @@ class PostProcessor(object): helpers.delete_empty_folders(ek.ek(os.path.dirname, cur_ep.location), keep_dir=ep_obj.show.location) except (OSError, IOError): - raise exceptions.PostProcessingFailed(u'Unable to delete the existing files') + raise exceptions.PostProcessingFailed(u'Unable to delete existing files') # set the status of the episodes # for curEp in [ep_obj] + ep_obj.relatedEps: @@ -938,7 +939,7 @@ class PostProcessor(object): if None is not release_name: failed_history.logSuccess(release_name) else: - self._log(u'No release found in snatch history', logger.WARNING) + self._log(u'No snatched release found in history', logger.WARNING) # find the destination folder try: diff --git a/sickbeard/processTV.py b/sickbeard/processTV.py index ffd9fa35..ed9b92d6 100644 --- a/sickbeard/processTV.py +++ b/sickbeard/processTV.py @@ -18,10 +18,12 @@ from __future__ import with_statement +from functools import partial import os +import re import shutil import stat -import re +import sys import sickbeard from sickbeard import postProcessor @@ -35,7 +37,7 @@ from sickbeard.history import reset_status from sickbeard import failedProcessor -from lib.unrar2 import RarFile +import lib.rarfile.rarfile as rarfile try: from lib.send2trash import send2trash @@ -50,6 +52,7 @@ class ProcessTVShow(object): def __init__(self, webhandler=None): self.files_passed = 0 self.files_failed = 0 + self.fail_detected = False self._output = [] self.webhandler = webhandler @@ -113,11 +116,12 @@ class ProcessTVShow(object): self._log_helper(u'Deleted folder ' + folder, logger.MESSAGE) return True - def _delete_files(self, process_path, notwanted_files, use_trash=False): + def _delete_files(self, process_path, notwanted_files, use_trash=False, force=False): - if not self.any_vid_processed: + if not self.any_vid_processed and not force: return + result = True # Delete all file not needed for cur_file in notwanted_files: @@ -143,9 +147,13 @@ class ProcessTVShow(object): except OSError as e: self._log_helper(u'Unable to delete file %s: %s' % (cur_file, str(e.strerror))) - if True is not ek.ek(os.path.isfile, cur_file_path): + if ek.ek(os.path.isfile, cur_file_path): + result = False + else: self._log_helper(u'Deleted file ' + cur_file) + return result + def process_dir(self, dir_name, nzb_name=None, process_method=None, force=False, force_replace=None, failed=False, pp_type='auto', cleanup=False): """ Scans through the files in dir_name and processes whatever media files it finds @@ -159,7 +167,6 @@ class ProcessTVShow(object): # if they passed us a real directory then assume it's the one we want if dir_name and ek.ek(os.path.isdir, dir_name): - self._log_helper(u'Processing folder... ' + dir_name) dir_name = ek.ek(os.path.realpath, dir_name) # if the client and SickGear are not on the same machine translate the directory in a network directory @@ -167,17 +174,19 @@ class ProcessTVShow(object): and ek.ek(os.path.normpath, dir_name) != ek.ek(os.path.normpath, sickbeard.TV_DOWNLOAD_DIR): dir_name = ek.ek(os.path.join, sickbeard.TV_DOWNLOAD_DIR, ek.ek(os.path.abspath, dir_name).split(os.path.sep)[-1]) self._log_helper(u'SickGear PP Config, completed TV downloads folder: ' + sickbeard.TV_DOWNLOAD_DIR) - self._log_helper(u'Trying to use folder... ' + dir_name) - # if we didn't find a real directory then quit + if dir_name: + self._log_helper(u'Checking folder... ' + dir_name) + + # if we didn't find a real directory then process "failed" or just quit if not dir_name or not ek.ek(os.path.isdir, dir_name): if nzb_name and failed: self._process_failed(dir_name, nzb_name) - return self.result else: - self._log_helper( - u'Unable to figure out what folder to process. If your downloader and SickGear aren\'t on the same PC then make sure you fill out your completed TV download folder in the PP config.') - return self.result + self._log_helper(u'Unable to figure out what folder to process. ' + + u'If your downloader and SickGear aren\'t on the same PC then make sure ' + + u'you fill out your completed TV download folder in the PP config.') + return self.result path, dirs, files = self._get_path_dir_files(dir_name, nzb_name, pp_type) @@ -188,24 +197,31 @@ class ProcessTVShow(object): self._log_helper(u'Found temporary sync files, skipping post process', logger.ERROR) return self.result - self._log_helper(u'Process path: ' + path) - if 0 < len(dirs): - self._log_helper(u'Process dir%s: %s' % (('', 's')[1 < len(dirs)], str(dirs))) + self._log_helper(u'Processing folder... %s' % path) - rar_files = filter(helpers.isRarFile, files) + work_files = [] + joined = self.join(path) + if joined: + work_files += [joined] + + rar_files = filter(helpers.is_first_rar_volume, files) rar_content = self._unrar(path, rar_files, force) - files += rar_content - video_files = filter(helpers.isMediaFile, files) - video_in_rar = filter(helpers.isMediaFile, rar_content) + if self.fail_detected: + self._process_failed(dir_name, nzb_name) + return self.result + path, dirs, files = self._get_path_dir_files(dir_name, nzb_name, pp_type) + video_files = filter(helpers.has_media_ext, files) + video_in_rar = filter(helpers.has_media_ext, rar_content) + work_files += [ek.ek(os.path.join, path, item) for item in rar_content] if 0 < len(files): - self._log_helper(u'Process file%s: %s' % (('', 's')[1 < len(files)], str(files))) + self._log_helper(u'Process file%s: %s' % (helpers.maybe_plural(files), str(files))) if 0 < len(video_files): - self._log_helper(u'Process video file%s: %s' % (('', 's')[1 < len(video_files)], str(video_files))) + self._log_helper(u'Process video file%s: %s' % (helpers.maybe_plural(video_files), str(video_files))) if 0 < len(rar_content): self._log_helper(u'Process rar content: ' + str(rar_content)) if 0 < len(video_in_rar): - self._log_helper(u'Process video in rar: ' + str(video_in_rar)) + self._log_helper(u'Process video%s in rar: %s' % (helpers.maybe_plural(video_in_rar), str(video_in_rar))) # If nzb_name is set and there's more than one videofile in the folder, files will be lost (overwritten). nzb_name_original = nzb_name @@ -220,7 +236,7 @@ class ProcessTVShow(object): # Don't Link media when the media is extracted from a rar in the same path if process_method in ('hardlink', 'symlink') and video_in_rar: self._process_media(path, video_in_rar, nzb_name, 'move', force, force_replace) - self._delete_files(path, rar_content) + self._delete_files(path, [ek.ek(os.path.relpath, item, path) for item in work_files], force=True) video_batch = set(video_files) - set(video_in_rar) else: video_batch = video_files @@ -246,27 +262,31 @@ class ProcessTVShow(object): # Process video files in TV subdirectories for directory in [x for x in dirs if self._validate_dir(path, x, nzb_name_original, failed)]: - self._set_process_success(reset=True) + # self._set_process_success(reset=True) - for process_path, process_dir, file_list in ek.ek(os.walk, ek.ek(os.path.join, path, directory), topdown=False): + for walk_path, walk_dir, files in ek.ek(os.walk, ek.ek(os.path.join, path, directory), topdown=False): - sync_files = filter(helpers.isSyncFile, file_list) + sync_files = filter(helpers.isSyncFile, files) # Don't post process if files are still being synced and option is activated if sync_files and sickbeard.POSTPONE_IF_SYNC_FILES: self._log_helper(u'Found temporary sync files, skipping post process', logger.ERROR) return self.result - rar_files = filter(helpers.isRarFile, file_list) - rar_content = self._unrar(process_path, rar_files, force) - file_list = set(file_list + rar_content) - video_files = filter(helpers.isMediaFile, file_list) - video_in_rar = filter(helpers.isMediaFile, rar_content) - notwanted_files = [x for x in file_list if x not in video_files] + rar_files = filter(helpers.is_first_rar_volume, files) + rar_content = self._unrar(walk_path, rar_files, force) + work_files += [ek.ek(os.path.join, walk_path, item) for item in rar_content] + if self.fail_detected: + self._process_failed(dir_name, nzb_name) + continue + files = list(set(files + rar_content)) + video_files = filter(helpers.has_media_ext, files) + video_in_rar = filter(helpers.has_media_ext, rar_content) + notwanted_files = [x for x in files if x not in video_files] # Don't Link media when the media is extracted from a rar in the same path if process_method in ('hardlink', 'symlink') and video_in_rar: - self._process_media(process_path, video_in_rar, nzb_name, 'move', force, force_replace) + self._process_media(walk_path, video_in_rar, nzb_name, 'move', force, force_replace) video_batch = set(video_files) - set(video_in_rar) else: video_batch = video_files @@ -276,7 +296,7 @@ class ProcessTVShow(object): video_pick = [''] video_size = 0 for cur_video_file in video_batch: - cur_video_size = ek.ek(os.path.getsize, ek.ek(os.path.join, process_path, cur_video_file)) + cur_video_size = ek.ek(os.path.getsize, ek.ek(os.path.join, walk_path, cur_video_file)) if 0 == video_size or cur_video_size > video_size: video_size = cur_video_size @@ -284,14 +304,14 @@ class ProcessTVShow(object): video_batch = set(video_batch) - set(video_pick) - self._process_media(process_path, video_pick, nzb_name, process_method, force, force_replace, use_trash=cleanup) + self._process_media(walk_path, video_pick, nzb_name, process_method, force, force_replace, use_trash=cleanup) except OSError as e: logger.log('Batch skipped, %s%s' % (ex(e), e.filename and (' (file %s)' % e.filename) or ''), logger.WARNING) if process_method in ('hardlink', 'symlink') and video_in_rar: - self._delete_files(process_path, rar_content) + self._delete_files(walk_path, rar_content) else: # Delete all file not needed if not self.any_vid_processed\ @@ -299,11 +319,17 @@ class ProcessTVShow(object): or ('manual' == pp_type and not cleanup): # Avoid deleting files if Manual Postprocessing continue - self._delete_files(process_path, notwanted_files, use_trash=cleanup) + self._delete_files(walk_path, notwanted_files, use_trash=cleanup) if 'move' == process_method\ - and ek.ek(os.path.normpath, sickbeard.TV_DOWNLOAD_DIR) != ek.ek(os.path.normpath, process_path): - self._delete_folder(process_path, check_empty=False) + and ek.ek(os.path.normpath, sickbeard.TV_DOWNLOAD_DIR) != ek.ek(os.path.normpath, walk_path): + self._delete_folder(walk_path, check_empty=False) + + if 'copy' == process_method and work_files: + self._delete_files(path, [ek.ek(os.path.relpath, item, path) for item in work_files], force=True) + for f in sorted(list(set([ek.ek(os.path.dirname, item) for item in work_files]) - {path}), + key=len, reverse=True): + self._delete_folder(f) def _bottom_line(text, log_level=logger.DEBUG): self._buffer('-' * len(text)) @@ -322,7 +348,7 @@ class ProcessTVShow(object): def _validate_dir(self, path, dir_name, nzb_name_original, failed): - self._log_helper(u'Processing dir: ' + dir_name) + self._log_helper(u'Processing sub dir: ' + dir_name) if ek.ek(os.path.basename, dir_name).startswith('_FAILED_'): self._log_helper(u'The directory name indicates it failed to extract.') @@ -357,11 +383,12 @@ class ProcessTVShow(object): # Get the videofile list for the next checks all_files = [] all_dirs = [] + process_path = None for process_path, process_dir, fileList in ek.ek(os.walk, ek.ek(os.path.join, path, dir_name), topdown=False): all_dirs += process_dir all_files += fileList - video_files = filter(helpers.isMediaFile, all_files) + video_files = filter(helpers.has_media_ext, all_files) all_dirs.append(dir_name) # check if the directory have at least one tv video file @@ -379,9 +406,9 @@ class ProcessTVShow(object): except (InvalidNameException, InvalidShowException): pass - if sickbeard.UNPACK: + if sickbeard.UNPACK and process_path and all_files: # Search for packed release - packed_files = filter(helpers.isRarFile, all_files) + packed_files = filter(helpers.is_first_rar_volume, all_files) for packed in packed_files: try: @@ -396,6 +423,9 @@ class ProcessTVShow(object): unpacked_files = [] + if 'win32' == sys.platform: + rarfile.UNRAR_TOOL = ek.ek(os.path.join, sickbeard.PROG_DIR, 'lib', 'rarfile', 'UnRAR.exe') + if sickbeard.UNPACK and rar_files: self._log_helper(u'Packed releases detected: ' + str(rar_files)) @@ -405,32 +435,207 @@ class ProcessTVShow(object): self._log_helper(u'Unpacking archive: ' + archive) try: - rar_handle = RarFile(os.path.join(path, archive)) + rar_handle = rarfile.RarFile(ek.ek(os.path.join, path, archive)) # Skip extraction if any file in archive has previously been extracted skip_file = False - for file_in_archive in [os.path.basename(x.filename) for x in rar_handle.infolist() if not x.isdir]: + for file_in_archive in [ek.ek(os.path.basename, x.filename) + for x in rar_handle.infolist() if not x.isdir()]: if self._already_postprocessed(path, file_in_archive, force): self._log_helper( u'Archive file already processed, extraction skipped: ' + file_in_archive) skip_file = True break - if skip_file: - continue + if not skip_file: + # need to test for password since rar4 doesn't raise PasswordRequired + if rar_handle.needs_password(): + raise rarfile.PasswordRequired - rar_handle.extract(path=path, withSubpath=False, overwrite=False) - unpacked_files += [os.path.basename(x.filename) for x in rar_handle.infolist() if not x.isdir] - del rar_handle - except Exception as e: - self._log_helper(u'Failed to unpack archive %s: %s' % (archive, ex(e)), logger.ERROR) + rar_handle.extractall(path=path) + rar_content = [ek.ek(os.path.normpath, x.filename) + for x in rar_handle.infolist() if not x.isdir()] + renamed = self.cleanup_names(path, rar_content) + cur_unpacked = rar_content if not renamed else \ + (list(set(rar_content) - set(renamed.keys())) + renamed.values()) + self._log_helper(u'Unpacked content: [u\'%s\']' % '\', u\''.join(map(unicode, cur_unpacked))) + unpacked_files += cur_unpacked + except (rarfile.PasswordRequired, rarfile.RarWrongPassword): + self._log_helper(u'Failed to unpack archive PasswordRequired: %s' % archive, logger.ERROR) self._set_process_success(False) - continue + self.fail_detected = True + except Exception as e: + self._log_helper(u'Failed to unpack archive: %s' % archive, logger.ERROR) + self._set_process_success(False) + finally: + rar_handle.close() + del rar_handle - self._log_helper(u'Unpacked content: ' + str(unpacked_files)) + elif rar_files: + # check for passworded rar's + for archive in rar_files: + try: + rar_handle = rarfile.RarFile(ek.ek(os.path.join, path, archive)) + if rar_handle.needs_password(): + self._log_helper(u'Failed to unpack archive PasswordRequired: %s' % archive, logger.ERROR) + self._set_process_success(False) + self.failure_detected = True + rar_handle.close() + del rar_handle + except Exception: + pass return unpacked_files + @staticmethod + def cleanup_names(directory, files=None): + + is_renamed = {} + num_videos = 0 + old_name = None + new_name = None + params = { + 'base_name': ek.ek(os.path.basename, directory), + 'reverse_pattern': re.compile('|'.join([ + r'\.\d{2}e\d{2}s\.', r'\.p0(?:63|27|612)\.', r'\.[pi](?:084|675|0801)\.', r'\b[45]62[xh]\.', + r'\.yarulb\.', r'\.vtd[hp]\.', r'\.(?:ld[.-]?)?bew\.', r'\.pir.?(?:shv|dov|dvd|bew|db|rb)\.', + r'\brdvd\.', r'\.(?:vts|dcv)\.', r'\b(?:mac|pir)dh\b', r'\.(?:lanretni|reporp|kcaper|reneercs)\.', + r'\b(?:caa|3ca|3pm)\b', r'\.cstn\.', r'\.5r\.', r'\brcs\b' + ]), flags=re.IGNORECASE), + 'season_pattern': re.compile(r'(.*\.\d{2}e\d{2}s\.)(.*)', flags=re.IGNORECASE), + 'word_pattern': re.compile(r'([^A-Z0-9]*[A-Z0-9]+)'), + 'char_replace': [[r'(\w)1\.(\w)', r'\1i\2']], + 'garbage_name': re.compile(r'^[a-zA-Z0-9]{3,}$'), + 'media_pattern': re.compile('|'.join([ + r'\.s\d{2}e\d{2}\.', r'\.(?:36|72|216)0p\.', r'\.(?:480|576|1080)[pi]\.', r'\.[xh]26[45]\b', + r'\.bluray\.', r'\.[hp]dtv\.', r'\.web(?:[.-]?dl)?\.', r'\.(?:vhs|vod|dvd|web|bd|br).?rip\.', + r'\.dvdr\b', r'\.(?:stv|vcd)\.', r'\bhd(?:cam|rip)\b', r'\.(?:internal|proper|repack|screener)\.', + r'\b(?:aac|ac3|mp3)\b', r'\.(?:ntsc|pal|secam)\.', r'\.r5\.', r'\bscr\b', r'\b(?:divx|xvid)\b' + ]), flags=re.IGNORECASE) + } + + def renamer(_dirpath, _filenames, _num_videos, _old_name, _new_name, base_name, + reverse_pattern, season_pattern, word_pattern, char_replace, garbage_name, media_pattern): + + for cur_filename in _filenames: + + file_name, file_extension = ek.ek(os.path.splitext, cur_filename) + file_path = ek.ek(os.path.join, _dirpath, cur_filename) + dir_name = ek.ek(os.path.dirname, file_path) + + if None is not reverse_pattern.search(file_name): + na_parts = season_pattern.search(file_name) + if None is not na_parts: + word_p = word_pattern.findall(na_parts.group(2)) + new_words = '' + for wp in word_p: + if '.' == wp[0]: + new_words += '.' + new_words += re.sub(r'\W', '', wp) + for cr in char_replace: + new_words = re.sub(cr[0], cr[1], new_words) + new_filename = new_words[::-1] + na_parts.group(1)[::-1] + else: + new_filename = file_name[::-1] + logger.log('Reversing base filename "%s" to "%s"' % (file_name, new_filename)) + try: + ek.ek(os.rename, file_path, ek.ek(os.path.join, _dirpath, new_filename + file_extension)) + is_renamed[ek.ek(os.path.relpath, file_path, directory)] = ek.ek( + os.path.relpath, new_filename + file_extension, directory) + except OSError as e: + logger.log('Error unable to rename file "%s" because %s' % (cur_filename, ex(e)), logger.ERROR) + elif helpers.has_media_ext(cur_filename) and \ + None is not garbage_name.search(file_name) and None is not media_pattern.search(base_name): + _num_videos += 1 + _old_name = file_path + _new_name = ek.ek(os.path.join, dir_name, '%s%s' % (base_name, file_extension)) + return is_renamed, _num_videos, _old_name, _new_name + + if files: + is_renamed, num_videos, old_name, new_name = renamer( + directory, files, num_videos, old_name, new_name, **params) + else: + for cur_dirpath, void, cur_filenames in ek.ek(os.walk, directory): + is_renamed, num_videos, old_name, new_name = renamer( + cur_dirpath, cur_filenames, num_videos, old_name, new_name, **params) + + if all([not is_renamed, 1 == num_videos, old_name, new_name]): + try_name = ek.ek(os.path.basename, new_name) + logger.log('Renaming file "%s" using dirname as "%s"' % (ek.ek(os.path.basename, old_name), try_name)) + try: + ek.ek(os.rename, old_name, new_name) + is_renamed[ek.ek(os.path.relpath, old_name, directory)] = ek.ek(os.path.relpath, new_name, directory) + except OSError as e: + logger.log('Error unable to rename file "%s" because %s' % (old_name, ex(e)), logger.ERROR) + + return is_renamed + + @staticmethod + def join(directory): + + result = False + chunks = {} + matcher = re.compile('\.[0-9]+$') + for dirpath, void, filenames in os.walk(directory): + for filename in filenames: + if None is not matcher.search(filename): + maybe_chunk = ek.ek(os.path.join, dirpath, filename) + base_filepath, ext = os.path.splitext(maybe_chunk) + if base_filepath not in chunks: + chunks[base_filepath] = [] + chunks[base_filepath].append(maybe_chunk) + + if not chunks: + return + + for base_filepath in chunks: + chunks[base_filepath].sort() + chunk_set = chunks[base_filepath] + if ek.ek(os.path.isfile, base_filepath): + base_filesize = ek.ek(os.path.getsize, base_filepath) + chunk_sizes = [ek.ek(os.path.getsize, x) for x in chunk_set] + largest_chunk = max(chunk_sizes) + if largest_chunk >= base_filesize: + outfile = '%s.001' % base_filepath + if outfile not in chunk_set: + try: + ek.ek(os.rename, base_filepath, outfile) + except OSError: + logger.log('Error unable to rename file %s' % base_filepath, logger.ERROR) + return result + chunk_set.append(outfile) + chunk_set.sort() + else: + del_dir, del_file = ek.ek(os.path.split, base_filepath) + if not self._delete_files(del_dir, [del_file], force=True): + return result + else: + if base_filesize == sum(chunk_sizes): + logger.log('Join skipped. Total size of %s input files equal to output.. %s (%s bytes)' % ( + len(chunk_set), base_filepath, base_filesize)) + else: + logger.log('Join skipped. Found output file larger than input.. %s (%s bytes)' % ( + base_filepath, base_filesize)) + return result + + with open(base_filepath, 'ab') as newfile: + for f in chunk_set: + logger.log('Joining file %s' % f) + try: + with open(f, 'rb') as part: + for wdata in iter(partial(part.read, 4096), b''): + try: + newfile.write(wdata) + except: + logger.log('Failed write to file %s' % f) + return result + except: + logger.log('Failed read from file %s' % f) + return result + result = base_filepath + + return result + def _already_postprocessed(self, dir_name, videofile, force): if force or not self.any_vid_processed: @@ -527,9 +732,9 @@ class ProcessTVShow(object): processor = postProcessor.PostProcessor(cur_video_file_path, nzb_name, process_method, force_replace, use_trash=use_trash, webhandler=self.webhandler) file_success = processor.process() process_fail_message = '' - except exceptions.PostProcessingFailed as e: + except exceptions.PostProcessingFailed: file_success = False - process_fail_message = '
    .. ' + ex(e) + process_fail_message = '
    .. Post Processing Failed' self._set_process_success(file_success) diff --git a/sickbeard/providers/generic.py b/sickbeard/providers/generic.py index 9861dd63..3c236249 100644 --- a/sickbeard/providers/generic.py +++ b/sickbeard/providers/generic.py @@ -856,7 +856,7 @@ class TorrentProvider(object, GenericProvider): file_name = '%s.py' % os.path.join(sickbeard.PROG_DIR, *self.__module__.split('.')) if ek.ek(os.path.isfile, file_name): with open(file_name, 'rb') as file_hd: - is_valid = 1661931498 == s + zlib.crc32(file_hd.read()) + is_valid = s + zlib.crc32(file_hd.read()) in (1661931498, 472149389) return is_valid def _authorised(self, logged_in=None, post_params=None, failed_msg=None, url=None, timeout=30): diff --git a/sickbeard/tv.py b/sickbeard/tv.py index 93aa1c00..765f96d9 100644 --- a/sickbeard/tv.py +++ b/sickbeard/tv.py @@ -700,7 +700,7 @@ class TVShow(object): cur_ep.status = Quality.compositeStatus(DOWNLOADED, new_quality) # check for status/quality changes as long as it's a new file - elif not same_file and sickbeard.helpers.isMediaFile(file)\ + elif not same_file and sickbeard.helpers.has_media_ext(file)\ and cur_ep.status not in Quality.DOWNLOADED + [ARCHIVED, IGNORED]: old_status, old_quality = Quality.splitCompositeStatus(cur_ep.status) @@ -1813,7 +1813,7 @@ class TVEpisode(object): statusStrings[self.status], logger.DEBUG) # if we have a media file then it's downloaded - elif sickbeard.helpers.isMediaFile(self.location): + elif sickbeard.helpers.has_media_ext(self.location): # leave propers alone, you have to either post-process them or manually change them back if self.status not in Quality.SNATCHED_PROPER + Quality.DOWNLOADED + Quality.SNATCHED + [ARCHIVED]: status_quality = Quality.statusFromNameOrFile(self.location, anime=self.show.is_anime) @@ -1838,7 +1838,7 @@ class TVEpisode(object): if self.location != "": - if UNKNOWN == self.status and sickbeard.helpers.isMediaFile(self.location): + if UNKNOWN == self.status and sickbeard.helpers.has_media_ext(self.location): status_quality = Quality.statusFromNameOrFile(self.location, anime=self.show.is_anime) logger.log('(3) Status changes from %s to %s' % (self.status, status_quality), logger.DEBUG) self.status = status_quality diff --git a/sickbeard/webserve.py b/sickbeard/webserve.py index 5fd38cd3..97839753 100644 --- a/sickbeard/webserve.py +++ b/sickbeard/webserve.py @@ -26,6 +26,7 @@ import itertools import os import random import re +import sys import time import traceback import urllib @@ -59,7 +60,8 @@ from tornado.web import RequestHandler, StaticFileHandler, authenticated from lib import adba from lib import subliminal from lib.dateutil import tz -from lib.unrar2 import RarFile +import lib.rarfile.rarfile as rarfile + from lib.libtrakt import TraktAPI from lib.libtrakt.exceptions import TraktException, TraktAuthException from trakt_helpers import build_config, trakt_collection_remove_account @@ -4629,19 +4631,20 @@ class ConfigPostProcessing(Config): def isRarSupported(self, *args, **kwargs): """ Test Packing Support: - - Simulating in memory rar extraction on test.rar file """ try: - rar_path = os.path.join(sickbeard.PROG_DIR, 'lib', 'unrar2', 'test.rar') - testing = RarFile(rar_path).read_files('*test.txt') - if testing[0][1] == 'This is only a test.': + if 'win32' == sys.platform: + rarfile.UNRAR_TOOL = ek.ek(os.path.join, sickbeard.PROG_DIR, 'lib', 'rarfile', 'UnRAR.exe') + rar_path = ek.ek(os.path.join, sickbeard.PROG_DIR, 'lib', 'rarfile', 'test.rar') + if 'This is only a test.' == rarfile.RarFile(rar_path).read(r'test\test.txt'): return 'supported' - logger.log(u'Rar Not Supported: Can not read the content of test file', logger.ERROR) - return 'not supported' + msg = 'Could not read test file content' except Exception as e: - logger.log(u'Rar Not Supported: ' + ex(e), logger.ERROR) - return 'not supported' + msg = ex(e) + + logger.log(u'Rar Not Supported: %s' % msg, logger.ERROR) + return 'not supported' class ConfigProviders(Config):