From 5b570832108787749f98ab3d6f87d7f8fc423729 Mon Sep 17 00:00:00 2001 From: LoRd_MuldeR Date: Fri, 18 Jan 2013 01:08:58 +0100 Subject: [PATCH] Updated Opus binaries. Also added option to disable the resampling in Opus decoder (i.e. always output 48.000 Hz). --- ...Tools-Git20130118-Progress+NoResample.diff | 122 ++++++++++++++++++ ...Tools-Git20130117-Progress+NoResample.diff | 0 res/tools/gpgv.exe | Bin 176128 -> 180224 bytes res/tools/opusdec.exe | Bin 266752 -> 266752 bytes res/tools/opusenc.exe | Bin 471552 -> 471552 bytes src/Config.h | 2 +- src/Decoder_Abstract.h | 2 +- src/Decoder_Opus.cpp | 7 + src/Decoder_Opus.h | 5 + src/Dialog_Processing.cpp | 5 +- src/Encoder_Abstract.h | 2 +- src/Model_Settings.cpp | 28 ++-- src/Model_Settings.h | 13 +- src/Registry_Decoder.cpp | 6 + src/Registry_Decoder.h | 2 + src/Tools.h | 6 +- 16 files changed, 179 insertions(+), 21 deletions(-) create mode 100644 etc/Patches/OpusTools-Git20130118-Progress+NoResample.diff rename etc/Patches/{ => deprecated}/OpusTools-Git20130117-Progress+NoResample.diff (100%) diff --git a/etc/Patches/OpusTools-Git20130118-Progress+NoResample.diff b/etc/Patches/OpusTools-Git20130118-Progress+NoResample.diff new file mode 100644 index 00000000..24eb521d --- /dev/null +++ b/etc/Patches/OpusTools-Git20130118-Progress+NoResample.diff @@ -0,0 +1,122 @@ + src/opusdec.c | 24 +++++++++++++++++++++--- + src/opusenc.c | 17 +++++++---------- + 2 files changed, 134 insertions(+), 71 deletions(-) + +diff --git a/src/opusdec.c b/src/opusdec.c +index 397ecb5..ac5a79d 100644 +--- a/src/opusdec.c ++++ b/src/opusdec.c +@@ -57,6 +57,7 @@ + # include + # include + # define I64FORMAT "I64d" ++# define ftello64(_x) _ftelli64((_x)) + #else + # define I64FORMAT "lld" + # define fopen_utf8(_x,_y) fopen((_x),(_y)) +@@ -658,6 +659,7 @@ int main(int argc, char **argv) + {"force-wav", no_argument, NULL, 0}, + {"packet-loss", required_argument, NULL, 0}, + {"save-range", required_argument, NULL, 0}, ++ {"no-resample", no_argument, NULL, 0}, + {0, 0, 0, 0} + }; + ogg_sync_state oy; +@@ -667,6 +669,7 @@ int main(int argc, char **argv) + int close_in=0; + int eos=0; + ogg_int64_t audio_size=0; ++ ogg_int64_t input_size=0; + double last_coded_seconds=0; + float loss_percent=-1; + float manual_gain=0; +@@ -681,6 +684,7 @@ int main(int argc, char **argv) + int dither=1; + shapestate shapemem; + SpeexResamplerState *resampler=NULL; ++ int no_resample = 0; + float gain=1; + int streams=0; + size_t last_spin=0; +@@ -742,7 +746,10 @@ int main(int argc, char **argv) + forcewav=1; + } else if (strcmp(long_options[option_index].name,"rate")==0) + { +- rate=atoi (optarg); ++ rate=((no_resample) ? 48000 : atoi(optarg)); ++ } else if (strcmp(long_options[option_index].name,"no-resample")==0) ++ { ++ no_resample=1; rate=48000; + } else if (strcmp(long_options[option_index].name,"gain")==0) + { + manual_gain=atof (optarg); +@@ -824,6 +831,16 @@ int main(int argc, char **argv) + close_in=1; + } + ++ /*detect input size*/ ++ if(fin != stdin) ++ { ++ struct _stat64 info; ++ if(_fstati64(_fileno(fin), &info) == 0) ++ { ++ input_size = info.st_size; ++ } ++ } ++ + /* .opus files use the Ogg container to provide framing and timekeeping. + * http://tools.ietf.org/html/draft-terriberry-oggopus + * The easiest way to decode the Ogg container is to use libogg, so +@@ -971,10 +988,11 @@ int main(int argc, char **argv) + /*Display a progress spinner while decoding.*/ + static const char spinner[]="|/-\\"; + double coded_seconds = (double)audio_size/(channels*rate*sizeof(short)); ++ double percent = (input_size>0) ? ((double)ftello64(fin))/((double)input_size) : 0.0; + if(coded_seconds>=last_coded_seconds+1){ +- fprintf(stderr,"\r[%c] %02d:%02d:%02d", spinner[last_spin&3], ++ fprintf(stderr,"\r[%c] %02d:%02d:%02d (%.f%%)", spinner[last_spin&3], + (int)(coded_seconds/3600),(int)(coded_seconds/60)%60, +- (int)(coded_seconds)%60); ++ (int)(coded_seconds)%60,percent*100.0); + fflush(stderr); + last_spin++; + last_coded_seconds=coded_seconds; +diff --git a/src/opusenc.c b/src/opusenc.c +index 749760a..2b472b0 100644 +--- a/src/opusenc.c ++++ b/src/opusenc.c +@@ -954,6 +954,7 @@ int main(int argc, char **argv) + double estbitrate; + double coded_seconds=nb_encoded/(double)coding_rate; + double wall_time=(stop_time-start_time)+1e-6; ++ double percent = 0.0; + char sbuf[55]; + static const char spinner[]="|/-\\"; + if(!with_hard_cbr){ +@@ -961,20 +962,16 @@ int main(int argc, char **argv) + estbitrate=(total_bytes*8.0/coded_seconds)*tweight+ + bitrate*(1.-tweight); + }else estbitrate=nbBytes*8*((double)coding_rate/frame_size); ++ if(inopt.total_samples_per_channel>0){ ++ percent = ((double)nb_encoded) / ((double)inopt.total_samples_per_channel); ++ } + fprintf(stderr,"\r"); + for(i=0;i0 && inopt.total_samples_per_channeljT* z7XWDe$NwY3|Lp(&8|9xGDcgnwH1WNXYXv&KlJkg&Ou)s)$DE1}Ig1MmiH?pT;zCd2 z;z`lC$Y`9Ui#zUY%!!j40s?S_|K-}%3IK2ff&m|+cU=GX+ZF*RFh39^3SfZ%0Q5g8 z8Uk>gf&u`ze^D;}FR_3AG3eC{qMN`%jf?|lz-X&!)g7G?7y@4FaM5z{QrX^ z{NK34|AYH4x&O}SKTPNU8~6{$I--Hs1N?I;C%^}TOWD{IeBm9<_|*ahXtw?XyFvkq z0)Y3whq+vL>KDCAimNpsn?;oBw^V=ukPy({u4X@of;4x;79oljBmmX~cnw|iNwT1}jP))dhljjl6%CJluqe^tfdvm&U>}BHC z$FoAWd&xAq1)4^*vNWqd(X51bU64&l$D#f{gcxc5NaY!~O9a-+1#qggW|AkC>H` z0*d$ut)2O+cx|dX9Bm465Z_8PuVgB77in9vNxP;pWG0X=)O#BtAZq@W8mvuEtH-!!6qm+(~s_n9V5bM zm^a*&nc65>QLxBb8)${JqBTY>Tj_ja+-HqNUG3()iT+bQ^K4q$yHK{(G#(qyeBcxv zsjE0!X(dJ$J9FO~HK-$|UizG}A|@t1DH^2o9cKV-fg@)70YE{`7GGNC@nGaob+&C5YxWO$O`sYQq#0r=wLfg3*W>le~H$_X4RhN1%&Y)RvEhyV~0I+Knu-V z-!7Kb6o0m%_#(Ln+H(GY=6=_e!(Eakev1`#?$3I|x141fzTe+Jc+$`!*+YY|drOPx zJdmsQJ7dYp(P!TWZsLl8=`s~T0!1nJKiX&q0YsM)nV>5aP2Mbj)-C-8SUOm&f=T7O ze%o*t0R1!AV~f|=RA5-yjJ}|5+F(%rIh!)qy*lpZ=3o^S{DN#$ORT?V%x+%&F0jvD z+beoW2WFhZ+(_f?Hxmr!UO?_0ji9?@7>;Nt{n)xKKZ3irF-i|;s3 zv7JA#+L(}L$%PoMLixQWES&jU;8 zELKB+n7ToUuJD^8X>cN!_i8@Q9%9H;6Mo8TrO{0r;r}wXxxK{xEZ18gn=0!vvpM%3 zWME0Na@_&+W~OaUq3%k&=(KE)^#g6G>3t7sFiagGeWp9(qNK9*TdBOh=nC%w9|88^ zjN>Id4@ZK^wZ&$!Ap&xjpp8&JTc-XF zT*9AKZDL-O6T`PnS*^FI9F-NV_zkGOW{4qu1h%aLWKBELBxx_+QuI{+dfXWiMdf~9 z7Tbx0J`{RS55$ep;Mg!6RTo^RufUc5wF#EHmD@`?#b1BR^T;*6VnnB6agthrwGnC{ zQ}X5lZT!|vgoR2 zEmpFlW%AP2%QySMpX5->CVC<9(+NVw2wC){p6DMBJ_^HD?lW~&1vIL7F5VoY-v${< zl^-->zCU-G$uv3`P$u9dn!0k&w{H#dcpUh>I#o|x$fE`#)5EY@O%MK2FaUXcYjriB z>Tzt;8xXms(XeM&`o<(FxY78W>HMePaH+4Jwub5Pw<-Q%INm-5M>E9}!MX)E7&}aJn?Sm2C~?y+@Gps~$4^8d74FbM8Rt3Ni;^$R ziHdZ448sxz&38NJJ)O3X%_2(~hm#RF;{?DTMJfv_3Pc)zF!q}{o5-UK!WwhQqCEUn z)JPcEuac499=E@(J_$>Bp0hg-0xrGyWzR167pk(6Uy7>5W}^NSC11>nHjcfXnC3zi|(}g(YmQ++-V$nMfbsJ z@vT;n^Ew)p`!pC0G<+0X9qMdLGTz?>Q(jW$QnA0enCqW@sEbt90C#}vjD&kD`L;Rm z1aTvT1x?^AyT@s2C+I{sU5KV?|M!@I}$6ohC zx&mEqExO#$@|A!vjnt>sGGo0@V=}%4u)pcxBb1lFZLYIND8;L8>t=aoz%dYiHf9*5~m$Heza-v`EB8`-&uaXk0~uVBj-{R>!ojKzNYGWAkdw@(VYS-$Q|aUldC& z3g#ZJwkiMtvJwW1)xlVp(LL?Cbk%P5XKbG5A_~0(TV1Vsww!0RVgOrxpW&AM;loEf zB4VfQn@ZCRTFPw6%T^7p-h?<;Sv1>mF#+`H;68sN(WFyQS7qcEPs|jV{e6*h(tQ937(W5n|9O*Sl!zOP4g6E9uGjZuouC zhLv~isQ^TlgaHSD zTg4A71_cG7ePE|VIO{{~7Ze(#>K?2LQv*UCin*PG@?@Ra@6cwH)2Dc`QZgQ*_JxZm z&^xL7Kak)_5YY9Kz2S_9m_L3IfEc(uvY*G?Lo=KT9g#eGn$cFXeQz)ecsev4m`tSg zcw0C)URUYn8RjLc)j|*sJZBefE%3d7L)lB^P7^}BdaDZ&bbjR`?(s*?OLz>`2{Jmg)_t|me$Pk_ zdCM5qmsJZC#?fc7{6-Uoq$vz!BoNDVXbvSw}EC0^al#gwW3pVP9E-+h$UW2cFxKk!x2NS;PfiM$AeZB5lf$+-&{ zPH$&(9Ou>_=zt^+-yzz4ssF+e$Mk2DklUZ`e0L+XqyJjIr1R2t8E_gWv5G017GWRr@^Vo zSfKpus$1gFkA5E+6HrQAq4bAEebmoA&{3!_qxqVbMVEh>X0MCv$X@`PYqKSV( z1VGZ-;}!~i)!@Si)xs`XK4U*e_I$AaGN!C2^D;3%Ij4WaHROFnI=tht87JrFdo&7jRzU+o@C-tp zyz%1zI;5f=3oSxOtKIwy>78EUb5iG2yLe$w^sIu_b*R4gek&@8l8LfTPijmSz8RYT zA?mkfND1wdmfEg!rZqK*KVo|;s?2MD1K{lk)LQPfT?n|(yvKi9s#qoo;j(a0$~GV; z$%$r;l}b0Q`BE*Xml8o!{B{d*;;4;JNG5^lwubQ|q$$74M%7PeeYnB|#*_fD zgJFg(#R%j2qvxd;pU6f(d}OJw?l*oUN<7=!C*@g?5?{xCiF`*>+KUGk4sV_V-JFJ+3f zGPMp(8gb_15664PpfTh)f>97erwJmPZOu};%Xh3MhshV2j0wu$k`w$Z4 z2h+kc-J@0=9-_GlsjF4DDi30R;)(R3ix8Som4nXSD=A6!0}JQS%r7=j<1Ac()_pZ>DFb^w6v!l{L0p>Tj4cS;YBG zg(Tv4yH8y%y4EjpNAH-@YiA7wfYc~NTl?6T=2du>^@8iPn(v8rMJT8^5lnteYVo`h&RBQpQz05b(xy;8mBmodIby~ zhuZagV1+fK@F)CGxJ5P8Arso)UCZJR3lvUy5FD-W?tzqS`{>>K#uS?rW@l7&_t_q5 zvLi9+VA=(DOrxH&s(YSsB35^2BKzuR*EbqdmcJe$$mbb8@59OU0Z*rxehm8R56Y;C z1(g~yW_gZ@?847I*AF|?{;qml!zJm|LEAql6Km_7mzOQ9HG{#rISLlf8$shoOaAP@ zIMpu}?%x!NZkcP{Ml9$D%fg%=@tJ|}btQGz@;dxSW$VB@oOh<)Uj0HEbbtU)%-Gf) zF&e=;(6zL2$qMcYVwA|t_J5v7An@$MXCtZZ0)b$lXt55G*PA9m48uT zug$XDO=#;T2??{%-y?me`JRK_5&Yd_rjE)0Q97YVIYBMfiOhfGDZ2|M!@2uCdy5!IF%jyCId9>t$0SgUa!9`! zmH<#S_xds_ADJ~s)Zf8vYs~M}I4~PrM@Zs4=ZA=9m z9+Goq*Wki^Qq7yUTCbZYkz>R1j#)m6y=#vlWv>DJA-b-pIFa&TkCA?Yzb4FhiX^OQ zan3x}TIc-lv!p@dp!n2-`<7e_>pBL8!hpDrE&^NbXGLfDw=ocxAoin6<^g^jdV>G@ z3Uhd=(*H6Av310|=a$l}4zbie)E07gT-zyGHqRCb$D!oV+7BX~!};O`(iZ06IUN-sTAJ_aQVJ^TL$zLO+3ZEV1m(*|B-SUp zEsa|Lmhe)G%DgT$M30T6yXc_$c7I9iHx|fEMkKFQ$yC4C zCb2xtuny54(uZi%RFfM}_^PY@$Ou~~1*dw8n$^{vIp*lqR+pyg)EK;zFjzu-YR-iUV*9#QOMPu>c4_r1CKyC zvdz^&AyK^qNj8DB%mp(;)18k}lKB86LXO_3`%vb7QmX2gZkqW8yk&#Kmv&o~Zkj7; zy4sm5-`Z$RG*SYsD(gca>rViykQWCxz5`q|W#}T!fGHKKp)nbItZj4eyLX#SuAJhJ z#Z@uzN{i9KoBefGMI09M_m_||Km8~jF}*2HGw*LEs)SRU#3|Q_#oHbk;9SzpISkQn z7r0@dJ};{^q1ba2scBHB6R^ppL-lz{c9e8!F!|UY8(9Mo$>2v`7@oe0Rvq{3eU{G8 zF-)^vB_2K?Gi)-VZFw`+Z@3D#EPImGVmw|1(YFbMAa@|dYR+1Hwe|rq2(JJVNh$NE z1P8mz9k7v>jlKKV?VuCM0SSv|eprN&ERdq2h8U&SI15chJw2$XgWR@fcX?YnO@9=A zyv1AsgpOBLZ$Keb$g zvu?c_rgl4`#!r2vvJr@joF`1?Ls}0#!x>UdxI={u*&xRfPq$R!V#N=x_uT`(c6(qE zQ#}hl;&|Jk%bI~cNAcl>>`8f5f~UCnw@b;8k=)w?2}TCX6kCOhfn^|MFB?{dum|6d ztEdL%<4Cv$=nDCU+s{`pv)1j0hbM@li>!uWd-YOvteh8^-C1ZB_~yWa|dzU(>n!sw%Xj1Q8* z;7N*yP>@gy!pXFSN=23kz5Xv+Gj#Yzr=;Z;v^K0gCqmps4%;T5Zu5W-yy|88i?ZaN%gc3o4k41;<7|%1 zObmcEI;4hxBV5;aiznDLfYGNg+kHkHrl2XcEk)+3&s%bbpf~Z@7NFk3maIP(;TPmAv3VX)pc$>(&_VC^hSLOT<&lZaz#*pUgw+5y z@LL;ywCqGyuS!1yI`1s7e&<~t9K?$R60Wo1GR=TmtBwl{1mN>fLx)bXu`n>@2I|OI_`5QURSfCh{Ni$l3ulVuUwrb!4FHc^3X?hkQJt#Vq zN;R7%$Z8C1-bI>)j{{}mTWsYc=-zJMZ+5Li^l0WA-@0K!orE6sM0lrXcAnZ5R0+aw_W62o#z`Oj4>CbNrmU;g!706yy{k4GseZIz1!@SSnXui_YiKMnMJ>SKsD~cb6)F#2lGImfmvQN;o%UE`D zb_J}?QwgV>6;fW%vjP!@v#3mNTNO%T%Nz*f6UukP z7Eef1uf0gyWN04#R-$_}fA-PU5`vq{01FmD61lHddIVw90F=p|V?id}Rf9dTEo+v$=>tn@d(Ki=MbMp>jT~lg}em z0v^@i!&bsjJ!>ApkkHpePcBU+x1Z?H#lfeE;7H3+Py zSC=nW!{zu$ZHB+l`|y5i^<(wl#=gAGGG6M;)7s()Do)BN?bZ`r?hOKv+G(7<+#jU* z3Pql~6>h{!-z2=ZtTlN=UN}_=tz7$=HYnct#YnU_Y^O5k$x zBsZEOB5LvsV$_xMnr@l;tR4KrizdP;wfMuH3f`M*M*0H=_97@tN%)!_PHs|pe zpa9_E)=cxSGB+m&zUNus;3ca}Y6U?LrHYfe48De|x{6-R2*ws22LA&4Z?`B`=?5@T zxmbA*yO5323I&y5s zHWVrvz7$Ft_|}Wtyb*LlA?zu@Xk?K+(;$>qW5TJj)~@I9A@x_;&JRtr&(nF+$A`K4 zeZ;wbb9JSO3wr0XP6_hbT!=&EfechTy)k9J`?mz=-bco;XM%8JT@a?SD)B@|Y z1=oE6n49)^Oe6#xw%Oo08&fGFfy@z-&*yOou2va6&EG4Lg2r}?`75r_9nQU@$Ejxy zHn25!j~nG5v+d-Sn{0cx2%UlF2s3FIx~b=FU`0?D8czD??JAp5Xa9un$W_$1%V@ zW^U$u9a(2LoC&R#Y54epLQPT53{mWsvh||$tAWter7jwA-_Uutm z|NBsW<{fyEg)P_eDgp_f#^Ks(76fF|B7^d4nW=^D*YDr{fpG z%j?dHXH9BLNti_?q2M;=Dn5?9-Sdadb_`qj30JBtwDOMOTIB_-ENpIyy1AO<;;po# zVl&wH9|7F~^SP!V_N()Cmnx6h|DYN}u1u15@{^#HbF!G(4OXH_horJXHd(#j3}bLM zq2Eytpcv}Mdr_ka(PWc$`Q$T755r)PH?zITbI2QaESZ?@{@(r%VyGTW?$3u&e!p{w zweXNZSMfd22DpUJ-=5I zh&bJ`9_7-Jb)$Q9xYK&#*3MGJg$HxCBRZ9~OQH^eNhd*{^z>gmy8N!*GD;$}dw0BT zcc(m>jbo{suwyN0sEVMFYx6xp8gjhDR*rDsw3>eh{IMzo7YTCv|aWC0ct4d^#45f7eVG6}WXsOHH8{kcFz^ zdzvi@k{lbK<=h}auTLV!#ZS=o!`i#dGT@KUQ~CCyc}}aVqWYDYzO!&x?Dth+w&Y1m zq^r3`@oS=6TJ0%kYin&M8)uN6+AK?Xe$g$A~083&|}JYF~Wstqe5Ra@YcoD7}NC5LgMYj-sme2mJuD_QOi9>o1Vro43IMe0Ii=W}2|qRaEo9#$!33LR>?% zr8}Zc^=nMFlRamemW%^~8<)Cm1{pR$bxPn8aloKymN2tlG(}2pKvBogER|hcOwqpF z71~eQBnMVuq5qSpaz*afNmM69F!NpeV!v1lX-UsxoFDYb!@2VgNZqpn0(o}?>l%bnog}Zsq9eGM%RKFDK=m_slg-)Uupn(DMro% z7aj{{;vM(H8xj}NGK8$D`@-o0!+n-V5CHMCUu~|+c2s_T{wB)Sjk@4RfRBQLpRJRn zY)uPI@ox=b4eZJb3L?RtETDlW?%MTcS)SZAE+rk9bgTI9+r^NOTMsxtIzp6{zmo3Q zL`&Jk@_uCV+W(EUjxaAK1`*MuY@+jilNPoGzuc^N=dCIY+pWoy| zI*G8^igULHsO&;o`2MC>;~pKfk0Bo1?i(i|6+umRpWT0=tPWO%yVCkO1M*Y z8V)o%wK_|1>DLo&SV^YYK$xRd5@AiFlg|xKO|nGP^N^a9VqQ51M{Ap%%C%L4B@=QX z2RppJzdW@zZ3Ct1@#szdh#cNmrfeVYWmqlJjtBFfRDycSLpCm9rRr$C!Bwt=(uaEh zjwk$KuQX5S+AV%!sTP-0x=q*J+aD48aGDwp`x8U@LK_L%4^F9&n71rQ9pb=^&#Z{q z9F}zBEthji`H*ClggE-^l^Dj5G?kIA7asH7wb|n}6uk)MvmPfEvERh-`$Zx11DP$K6LQbwPorG)kL-nmsZA&U%oTp#C* z?hUWY{&J<}TXsB?x0#sf4^rx_0ri`O=|8u}4WJ<*4fdfL?0%oFf!1Pz2!*De0*t1h zcns(vHqT{fKko@8q1OE0#3Z9bC4u}T$ERxo{;MHg0t$5M!RzTO!sQr(j~=a0y)pT| zoD$K)j;YBrOwr_2h?V($sXKYQnQ;J?VGbqign{^A1&aFnxz+(CAAFJ|e<1RrHqSB% z?bN_-=C&uW;lkTm2-6IIYZ0+|_{*`$cZgG+;;Z9^<(V%YjXxI2)%|5x&$(TsB{$;b z8tme?t}{-cPR0w={{7;dzwRSqV95VeO~VrwoqAG9#M5A8FefY2QXptb=&ty$)h~}; zl%SEobBHo_8wlQ17|<*A=;Pn_n8VWh`fERWrXvAsM}Hbhfg(tE7m_^uUtEEG|u4C8ik_1@sRTiF=U4mx$sM92#AE- zqSk%SSnBuTw}mlW5y?lf^b*pLx`;OoeP^Di$>llEmo?uJ&;h>S{Q6(}kVQ9r!jhsX zr}xs26>cUSr|=B?1+_u{Vx|Bt0pRi$qIW|Q6=;(K%0r{8#ciW%AJ`1u*#>C)qbhp4 zlL7h1e{7n9Wx7}1=rEU0=ykb`-rJZDbUBxc?8>2p;vw+~bZitu7t6$H{IdsUmBdT;}rMbl|ebNQXSR zDKwp{v3i%jub)YL!pG-K8(x>OTsjUPRA}<7T#~Be8VOz-L#v%r*XbY9gQ%O3_&K31 z(Z{osX0uv;G?_FHg^A27%pTNYUXZKJj4z9LnfG~< zZUB?->1sive{iNF1j}y|@yTRNB{ka)9CYQvuCOGNZ@rQGnJsb{cYzthcdkdoPK*m! z5?HkQ`}p^&p^1dzwW>3zb*g1FxR~s}kwh79qH!oX(t9TvDtVOlQ-*F&7X{_C(gSLK zO!r@uHNO1fR1NL*$&I%UHfhsi{#QU+Te~~EsSj7YXL`E$h`JG|PN);Ac6RQ`f6pWK{WSGzbvD*z~-j z@7a)`zHe52%6bHIMgDIbVvSAc48%Te4p*DIdv?71i#IO1B720S>Stlx2hghxgRDx| zt;XV^V%k3J@iTg+pRbtaRl)deR0&s_b`J*(CI{rSs#ir8fx~|#`Eb~F!~NSP;Pdm_ z@jv8GmhdPF{ix!51P9F69!!tY8uTCI|DbjDc!`*2#oGl;1UlxAl49u;vYTM;L!0so z{4g>SrHfVyo-f^%cON7B85CDemvHz#It#oxUGqy--)L#!ExDmn_Bn}HNPA1Z;QhUq z3+X<*zYY?rt80l$Ui(A&=1%tfVjvN~`750)&ZwZx`Fds~c$VV?Ed9gUR9Od%;VO!1 zHAjTpWVD(s><>Hdl{Tc5)yG>`xf$ykpoiPpMCC{bE1{ zA=wdJSHrQZ-9Ch|T`lhVey@PgGg#neEJMll%!*~ErKt_SM+w@+W0~%7qLhzm1k~0m zma%;2Czc7WE|>f8;X`vQQ403&w+=p{5S%Cw{)sWdPyAv#l1TVwE8?_cYEA7?s4tb6 zaAIB6Ir7LFgjpdLL+@)K8gEX^PMqOSYiKqXbkx?WCjLaA@lS!(>sm4y{jx;W`PBsg zfma~4rCmn{R077U4bk`RqLh>9@Oq>Sezd+ zG8&SXbF?3d{Sh#7q44gFWzLY@PGpC(_jxhfsx9oAS!uAwmz?Q-(Cdi4C%N{0*bk_9 zJq>{;@DG{Dlg%}ckBnx##np;r=CE_MArbuqLR`E3WtAMn7j$l~{3=fyzvRhC?Lcri zUY=L%30L`-!db|Hafd6AGT}W#`_j)FP6&iWL_93y%4W3|7F~ru>VF{e>R&PNp_-fI zVjD@}14Xm$QOY zu#P9y1d?b=hd#_OyFFbqEMr+v#5#Ax_XwBA=pGXLg4|ZFtDx*tdbN-SHFa95-1) zVj@N5+NFIvdf0~U!#8%+)K&~Cw_IvODjpI}ee z@IXe?FBN?`h+nG&6nCNQY3XW7EcJx7et++i#fgvMwvA?&P2(Z@v2uBQ+gc$Ry%$cw zaXhivL=|JgIp{UgHbu{e7w$m23ZMjKg1mLWS8Az|}KeJPPEp3)MymeAipim@MIcKbpzliu zW8kv<;DKEDK_^7^AYw6o=TLgUr;QkbB0#?rs15elYy>8xauHsGR}goX+MyygiKMyk z`w=;wT?bC9!Tj^V^s8?pB-l+n+kmQ4f+@VoR*gqEs`l$ee5TzEh-!M&95}S$^|cXD#|*KGt-lXd1TVzq zn~4~q&hIoOo)(qJ{WtG}0n10Y-=NlDYf#D=>rqC@FU%0MaqS>Su~ir$!cj^>+D!f5 z{i8pV&n2INqRIdc*8+TaFecAd+YRtL{ z>f0Sdv_?`x<~=W9zo%K0)1Al>dUAJ5otZ)a;63l>I0%Dmj}O}bm8-pfwkQwf*%&?i z@+PBj=JUqJDhH{-<0ow7=2T*&dcuT5LNMUN#b)d-u|kEN1MwM9XK~?84Yt` zDV!mT-4xjQgGZeQ-<*3z%9isqz~Jz==1W{#{9EIMPW&BJdTSwA`12ypJkcY_-{iI2t_u^cfc?^tUiB9dux%Pc_id&7O z4qx>urx7Wu7XBdT_zv1mS6hZsSb6@kbVh%cT<5ju8qoZw#mkjJ-yI&0O(cD^>JsMX zTkSQ)RS4#y$Ip*A_IvgbLQ@kxXFoRnE0vCVAk{s-S-t}YMc_`D=Y*U-rG8ozeC9Ba!8NJ;xwWzY=K3j zKM?LNK>Q)sE_o6 z4#>9A(fG`n<1KrYaHea;lpeG=@0_H?Uiq+><4on`AO@WF<*0@hURHebW~7Bb*PXj% z!TnYU_8NG-+wXKGD|_xJg1Q3a={)R6gHeC;qjFBT^qMbr#eRFrFJcm!%>8*6Rosob z#KPzyv%}2$_(2gZk9sI3{OO7GHgV`pR=Jd2=O#vyDRQg^R+4F*+^7&Xb$IQ*D)mkSmK^Bj{828?r_1Da}?x z@*~e6*T6coVd9n9cX|2~wo*!RxE;;e5DO!Tgl9Qn8T!0Z1@{xOjc83K%U_{BC|l+Y z*wNktC(Tw$u9nJWTtBsCOWjfGB#hk1os}J3j%GNEt(IDDKPghb$-}MB*c~qQ7B(;d zdX79=dZnPKF6>=8tg5^(cG3MFOq0_5-5x6+)zV0mFtYTzJ4Ju~G%5{Pr^^1n7&`NK zCfqoV?__3d?qQhwW^!Mdd+z%P$$jKVY>p_$Tr<-YQK=|GDJr>gY;GlYl2lWExyn@` zieJya&wtPBd7jtj`+Pso`|~1Gn9lNUQb@)34L0&^NzG>}6%YmJ}2Hi_8XL&1PriF!*3Gv&`R&#sXd=PuM~ zdE$Ri6p#k5A&Zxv0fbUO`MSg;Qtyjsov(8rxGIirp!BtUFL@syr*a6DF!Ux!tK`(5 zK++d$%Ecw-GE4&Y9Rj}Cz<%Zr<@4ESfg4Urq=zcKwkJIn?q9bkK);EE|FbEI)TckR z&i4IN`Y{=C3|*=gtoFF#>!!MyhHKiD)(<-coXT$KlyAkgVwe|MN3T7qp7gr^^9^jh zcwj(IKk}-cx}-=ugJQzcqa?1^X{0aD?)(!bJVHEaqV-rl&m==$ zO@N!7WHNfcd*#^B8F7)%jQJS?>OenRW@p7#<4I( z!@3D~q}$W_LL;7|HYGzH-d!azD!c)1Llp9k-WBe(_Tp_*MN;CN_XEE^%M!eQv(4TD z;=ec};h}pWHJFrq!O*;kMCH=+X{fn&qmYw#t5L{5)b4pYVa*30aPiI>2{=ckC=8h{ zGzl9O2CDt*K;Dpj602)VnlJpG%+m3_d#7!^-%Fj2ydB`zsu4id7T*18x;RL(HJXS| z&1C&(MhL>(E;?$${re{6t=)mw*aa& zqm>Pv7L}V+X5xO@`1Eh_sOj;owOW$9 zEooz51zll$rT$O-;z}1Cm)pPzr18gbLsC_&(({i`iaBz=aeKfK{xD;`2OV1vmP(0>F>C! zxf^|e&z#z_yKNSo(s$q0tpHCcU#xy`q&IcWzL(p~(28IT<6ZUJL7jcNv(r-CS_zVG zomj_oWa-nK*>0HVuU4M)!>9N4oKDQStyc%-?or(vT4#|t;jP5!bl8{k2hF)b zrYUrW+%JyacZ2(GkcmgInw~sSdedhzhr|*Jzy9D(oB&bah~_aP`&NWF0VT|o*M8?; zoj&b;lUm+wAr(?^>r5V3VHl&&8NYRzX1~Jq3_Rg{;=7CCi5k3bt>+QArka#YyU2P1 z{ZZrkOX|&?AM{UwdFP)F9yu(q6;XnhrGI|9#y&ozGe>!8OFn=k3R4Xcb(M36J&cMG ztUBOwfIss5xwqtAsImX!;eC_3X_Lw!fLc&s)F7RT%J@l!uuo;XGs5hNOPRbcW8#d5 zC>W_s4z%U9aL~1v9!|?fmF~Rz@u1%9R@?Q&mnTLSD8jl`kCYkte{i7IqRMt1{G8(8 zFD%4O8d;Iz4fhZH%YFD4`F1Kuio-{W}4YlD04!KItc&Gc+`&Up^`RyU_g+WN;C{fi~E$ z;p2(;<;t$bTJ){pMb3rf{3^jHE8*K>G?rxLlCkRZnV9%uzv?^}=Mur!x6{lC-bCq? z0JhUV!&U$LBNku{v<4^=1ZQ==*J}hV8=aaAeD{IW@%G^?YJ zC$y~m6{l3L;jW#0SaGe|I3yA?*MAUKq9CyT5n^{V>J+S6N_|7n&>>b)nUe;)vV1-TWO|Gj(%X6X#ZtF3e>TT&cDNI`Z z@qwAaWx~;|`dpuT6S-+O-6~uNvK!urOR~wH35$p@?|~)lB*FGatZwan&f(OSVKVme z-qi{aN)4`(IgBXdDe~dNv@$Lx+Z}wvix}NcH$cU3$fViZHygWBKL=OF^Qe}%vb$|R zf?B5{1HepVlHBQ9%XO6d%9t$PuG>rL+X=)V<0T0d?BLCzb0D`k1vjj5&HQ>wYfdS5 z-fzzShn0-cG*t%u^wpL^ATXRgkae~oW-!ctQ##sKI>ndxTF6(d4XkdZc;>;-n;_Ks zYF2roXd_r-O4(OdAX$`bEmzjYykt~F@3 zzg1z_t<1(>*pfXSM&$ikzyFwlp^E5m@bVg-YT^uQ{c3nV;Wn>=wB1YPXBkl-CAgl$J&*#Ss5Vsy7p}V0Z&US6Fi$~@^zn^w0`y+ zqo_m6Z|8d%!8@{fFmt;0{{6CfmqLq#?($Wgj?z(Mi0E;cGK1TC0wLu_v)1nDU0}yF zFQ3+9>(Ju1mLiHSX{fD#;u9K5*RxaJ#`6b{7Wcc_d_E~qxnmB~wXS;8A+Z3auv7S` z0x)&12%?sYoP~Dw!EVW*Q+|Mg9S&d?%mQlX>ejFR&zLYsMUK3^B6E$#yeR5CYImr zDj)jJcss|w)a;l%EtMa8(js@+NFc|~w7W<@EvHg%zB$SF#<`wu{lbQf6>O!Kf_2W! zL5wCxm^BYIai401{&X80#d_z&dYFJVJBew1vFF?fzM_(-8sfhGqyKU%$20S^4lc=z zsA{L$x@x;X0!&CU;GOt;gp~pv&0sv4;0VH@6eVi3L--Qy9_IqPww|*z-?t+qE_<8& z;vIHW;PzDb;D_=#{8h89$p?#o!ye1bPV=5w*QlhK9sW?holDTwL6A{x7h8lD*${(d@#3GKc^X*Gp9Lb<8)+e@6FHe-+%q$# zxzjT;0Zbu}Vm{rU(ey4zhj9TJA}yxTQP&sllK;t%AKQV=>`-q?RC?@~BX`?p!*M7- zF5w_0M`OypXc5DdAplFi-fss|-CWnmpFdAD`I?5yU5%BNNbHE4`-!OE47|eoG0^!; z+i78Qn1z#z(rGiHJ#(VuGA%=>sr+gRf!#4x-|@0`rmqHM(rvew-$ID-w$#wHXZ$KJ z=gOliS9;}%W%hD7v#N{sMsYXvR?FHT2*sLf=&_rf3bUeK?j5FAq`lDMmyUpZQ#|Ny zp(c`2vH)AipG&lO{#(*(im;qD z;2nHO^(Wdl@_n$$u?oGcj|J#I-Djn!_Hv`$zO$vo*nEs zuM%lf5%5&0u!GXTu2`SF%zoV6xK-}WBJ!-2uoGm=ren0?um;`;`D9d2X5Pz{+i@z( z^=#XB+1YrY*8T4|y6S$2^{-nFqg5!9IsODtglq#l+hpX<#}3OjY;@#lC85XsQ(#m@ z-<5;k5}h=Mem*FnMtT_GLa>zl^@?2iG{>c%=6q;Zhh!^>$`^-pJGRwJPGF%y($HMy z*C`YqI~>Ay^~BD#G(<`H<1?NrRT;ZPAmvtE=oL)$@h^#=77SCyMrq@%-UfZ8kIY;l z67X>$NI`W(!#GA;qZ&ow!({efwVkAY7Bh48**&AbwevtbLnTU+pqOkfv!+7)>QHn@j885 zMEIfOI?NX(7*b{(o&J@7)J!8?zOKzCYwV@@OjH&G%@GZ_2pX2q1AVryQCy0ET9FNHV$WnQd9N z83)*Qt;4H7A7@WJ2M#Kl@jrp#SSE?c7Pf*6Ms;MDjVnJdlV%0<_;1(00r+E`-yd%P z&u9lU92Xsh+kt!a=SZuHTfEg@vBc*E4o>f}e;f52nn;g4h3N}OB5U(wOXV1`f{5YP zyP8Czo9Z)3Us5=PJB4zR-Ynw2YGzi@=F#Fm{s?qx`>GjXw+pQQDMo3bE@8-dX$8 zlmDpP{bLbnsIM;n;zgZ+>EjO2E{R?Mf;_aEB9}z*-)Fo5)UOv7TnT0ugB^#jmQ<)3 zEHZ8&V*)xaZ*WNl@*(r|A|3!Ip3*>PVJn|5G57;A{PgN<9TK6MVveJN&#i`fT+ya=N>juIi(7l!KcKQm zTF?j^xWq?c(n*dgm6h<}W^5gH{EIXL^P}KOqeza4nrcN?wE5EPI?k((wmeirzsAb7 zdgv&7)!qorTM{Y2*5PlJ+2Rth^C5MGf|T4;{%kZ`ApefjxC=t`a=L!ISy zpnf01&mkfvKGB-j@srLHV({F_M&zUL<~d2&{dc70A31C~gS#-U*fL52?qN4EdtXTo zyn`b2fSV>Azvz9>f2B*ttawibLu97BtgrlieTUL_A_AthI`OR1WFlYuv|JxB9+|5+ z5kP^r-qV$Cm};iy6J-JHkvE*hM>Gn+-?`^LyBk(*{HE!d*&BT}Wb~dFET2j;>^1pb zJE4bQ(;C9t79haGBnFQo>$uQ?t`oh?MOgM;op;bPgk^oOLuGCOE63WY5YC!wxNI{Y zUcC>+Y5<9cu>Yd`t+oxn-LLm>IUV)+TWQ4^aNM#CtLlT+rMmv%qV5(^VR&WDEc+~d z*N$hkwyf_%dba%XPk!_s$DU_UXnAeZD%dBd8$$ykK3n1OX|DBu*>7Pd?n+B_w7Ax!n_FQnk3?F7^U|NhEbYPD4>GqQW7-#@lv1X5j1YL z$c&Z@QSr*1LR>Gob$`X0qiB?|i zP~u%_4?#>lpn_muQ3E{rM9t()XoVxd)9wYmY@B=dK_sKg1H6Rq*3cPFW2P+I(l6Q&5VV9AzcCADc_j-C3!tS{`XOn zKUf+sKlB2sjK!^P>qwuwb`IH*P2{4e+MORa3gpC8=n@{2kwVz;Qs^b59+__i+TFFURYg~xH_?I)1s z8dH1Q4Cg84Vg0csf7S7fl=|yrz2p~G720-SMCU?M&}tqzG>OD9?ICj|i6|9a{ScU= zn$ii>y7vsgU-Y@A9X30w1I`QeYO0=8N__$_)yMICsk$5gJ6F6_ELEw*Uy@4wCwV zZ@T`Uqk!(6%I`|WH%v`IcKf!~GIaSbn*qQ5Lr{|vX z9Z8UB1U7w#Ib_kNc~rwWln`X*=7dXz*;xz23Ig;WByyF<0xzD0!=mE)7fW==ueHMKA-hcMlX+#h>DD^@_84dC)^m@keG3XD9 z?pT1q=nw;2N3@=lS<#%#C8I<*NZ8Ku?$cvDA~E;BkD(W zstT-9Cr&(W9`4VwuxnVzx8RI;IaS-;ax@2=D8)ygvnEbNfZZTr0kdIqM>i?G5sna^ zg4474emp==kfC_rlMvT;p}blyF+5{`5m>`(a~rZ2m--e;LAwngk+d)6d=jG^>aNiv zvNO$D_@$klpJxHF-QE2DMBMw)ZG1P6ybiR65_+-QeyEZAttCIrIdM%1r6wHo5}6X*l`O+-gzn(QtFfvg8(og+8(-0V>(o}3~;E}w$ciGC=_ooU5m z&Q_W7D5yQq@5RC!m9x_!5~tlU&ytZnkKd z*eK`^A@dkbZ?EWW_V1Se+m=N-Wk!CkZSQKw)r|6SfzidiY@ho)<}`hwrSSjW&%5*8 z!Y4nt7!)VD&FvpLW17u>4$wK;D}8Q|O&uwVYViX+W2Bd($14xp?3l}7c5VA#c;C_V(TAz<}ap=QF#ig=hS)WIOPeUiU6f5 zWUbFuQDMKFlJh3fG@u%E-`um!d1fAPdj6Sy{L}-4*@ZMynRbKH*Tem6A#xVX3(!F@`#+Q5dKdV} zo^#lD_^oHkZjf^FOArcy=V;6DiP*~~GavM>>&l6yL%aDZkUw-JshYdy2++TVL@(*T zjaJdjYqsb1>FUf>CG=$i0@%v!pGTWtpXu!)?L$Gj+DLy+x4ut+ z7zz`&DQuJzcZ$RX!W8)Y**1UP#qEma84aC*)K~yy_2)?f>k?ljHQ)_+ZU(DTFrXPW zO)URzi+}Dpp;)#OaPP&Xw56(&ydd8d`T2huA$JXN z3+sF*F9n&$O3$;EA-=i<&NcX)-ytwLLEv301WKHZqOEsoEcdUP%yjPDvemNH zY7_SOB~_dvvEDr&;jkZC86l^hPgDftlwNX{rRui(pACkU)il>_Dk4@au{Xb674+rhFP31>NiC8h2w)hb4kq_-s*i()+~9 zxg3I&C_x^md#kM%6_f+!V!7&I_3ri<2;LT^Qhw3Q?LQjr2Peo8$f+vtyW_~I_~zHI zZBlUzGK&!}s1=u;#s4OQpVI7oBHq^Tewq5$dS~Oy=v;Sa`le2~I}R@pcBXkG=07!v zi>t#Mx86Azcb4<@tfVyjtc}veX`e)HI3p+Jn+f(s*p$Gez=o1h`>ozI(1wQqt5Etf zB7|LP-AYB@l=vN;2^nUd_k+Xqw}M9OFqnT&GQYH%%qja#6K1^}^NMK~wyUiOS)PP8 zvtE!V2fw?})0gf`Oe2@WoBq{{1#Snn|4MCOqAd6ADTc!_C{aw7h-klQ$!7GQAfw=b z|F3H05NXrIQSD+o4|Il^qbLm7QLI!JVs$+{77*k^K7I(kzTj0HuyvdNb_G;ef z8uk}B$0vA^xYu(<_b}w&UvuzDdXFYt8r|I|bAf044lQ1-=hxb6{O1YIxUeyf-)G;Z z;tTkW%`E_2oKKz~`a1gUxfVex5=;zQx4Tc3knTZKV`Fqjb0H)1cZaW z;6TlnHXs8mO!C5yN2T0pJ5x<0ll!t+Z zs1FurKC*$&Z4A>)H_H>{iaOitEiE9W!%cD|VBpST_q~=>Wj3R5F3TC375^Z3sYSqg z!UuKMq5WfLZg5qjHep|Q`KHbjB=DTKfEJ(ke@B6U>4Q-^@y_KAYk74F?%fEGUUP;({(kFp(np|WzPSXAdKPFbSzNAI zI?&;}xw;9ez5k{M|0I-sxhY zvSeQZT^q_c+yx65g}(p*IXKGQUxeWKWAAuM>J86bAfC??&JxzoR9U#U{VV-oJyIZZ zq60u&YE>OaCLgn__LVzEL-tl-N2eA^my5FX*nbm?m|l$coeVa+KFgMbb(zve0L`I= zVlO&qbLI4)^I>0_ci$R|N@r%v9Tyv#d}Dii!TZ;VN%XJ`5^`AKAu{Ou$FpZm2|Zv2 zGQPj*7s-&9enx>bP5GfKvb@VWCW_nh3g>L_ojAS@~2uuB)>3A#Z zZhqlY0NQG0U}VYVvPwY`T@8-sx9nE{eJSH`*e>oVdghtG19nqQ-u~HZm(M4Rp?1E6%_aLsuJqxn>qWO3?in zxrJcXDn4Od@ucZpeSPciXc}{QdWc1@n#;_&{5fdE_vA`RdlrLd2_~iL#e?jXlT@|t zsh7TY$8DIKDwZt-E4Kc*UVi=0yVqT5OxU7~#&NrLpk}PC*Uc5&es*c!0;eET&d)3x z@6lQ4NrZjT?4K}bGn?hNPm$CsDdK}h%biAHbZj7ED!9Nec|8}t^^spDRw;y&w4hn( zQg;R|=YX_}Gqv(chH3gGhf!6(BD+$oW=+y#jJy*)SfdV0$54Jv|G(xl=lRJ;+=HO| zyt51f_IH4(HZ;IJ1vqyJx_A!>vedhhs->|@{9u+hW_wn2>??>z^`GS_-h$UhG+5sJ zUen4?2|&QUz~g<~!S}E!~Hp{e1J#q$^ExC?mBQq z@zgKXyC4&9{)A}G6nDvjxB*uSTFGC5NmT7W@|4*V2!>C+5zz%m|8MbM;}m2--xPsd8CMf!5t8pYUvKsG^hCBB^oBR-d@+TY?>y+QJL0 z1hNTsMuZmYeJEnn8!m6_4H|hFeEJ@LjHP99vlN^uFiXna`hXpwDy$&32L?cPE7IIm zwf9aWpEI(kprK+{k|r4BuYb~rak|;ZqDE+)O0QC zchu|pB#a~59*X;?&7xNBjh5&g$>+2-;^2A4cFsT%TYrrBpW=`@YMS^&6&)=|*A>nL zD7;-M5;KdC9P)~_hw*Ok;P+OSl(`>*q&>gi3mBnjx2dZutcF1Q9KB~cuLjn;){1>+YXX8 zhIbx4|7RJ^yGlkmiN4ndl@ryj5SrhxkC-DK2EF$wZk%%H`Ya$)+ww*K^SEiqe_;J3 zz}i3$-|-4P|Br*hEg8MWJToGtMo96<9alW1Pp^G+ ztfOCD>?{%1qQn1cCs%-h@)E-gm0@wgU*R`ov!R7I>@H^@E92)--)Y=Yysb_L4*lyb zM@rvwCJFEB4!C`?bo#9VQY`SKk5Z4j>+Z_pGm-_`sVo3qDGGRS-(YwREZ{#6O+ z;EH(hY;+5vGd2CqtBXGT(f#(<7eRy$XAs$>9ecUC2_)n0?A8Koyu=QFGs7= zV53Ik%VBo89OecH^zX+dx3NS4joO08e2nkj`6%sQ0dXN>O{iEt+y%$`+z6#JX@Z7} zQs;Lb4250FXHVIi3t3SaqIzQ3q%+87Dclm`Hzn)INEWuqfiuZfHo!TpwlJR8gc#Jc z!{Ui<6lEVF@-YP>#RS>>(9!k9_f3Dct;P?hrY>Ug20|UbPOVWOTN`&X{y%d@4LB zU?a0oM!G+TN4PxxaRdYw*~doIX&>3)R}L^<8*c*2)cNnd_js4lfExyA2}pHbslNo% z9Ms?r)H7@I|JLAnhnt7@Aie#qxww+Yvbzkw_QPW0jW-H>8Y^o-I`nD%%TP-Qa`2pM zvnjG@?@!g%Qj3HBLs1)CEU#IsBtKUoGr3;z*%?J&VS2=w(@Qdt#)RwF_H4KnTJ3kH z5Dp`aKuoh8dM)cZhcN81;dBDgx??I^a805J!3${xix_ZyVPdySjq!OpXf~o3EW4-* zGxhQGf95Aa3i0f_B)K1-%^&i136N|DjUeu#O~Ymgm3_|3)nN9Nr_WSRbAAOy5HEqh z=K%A?uRB9-c7DNVjVI|1ZGH3n*^#I6YUsmXa7J2Xg#p+eyxK+|s0!>-T9scFo7#Nm z*g7D5dnU(|gK8s^$x#_SOb}`~TX8zP*w)_^5mOkxKSuj;{UCQvzw6sjl9H?ap2d3` zfg%poBcU~a3>|F#p4}B_1X|)hk!>{&Omx6rCIH_%G69#|B5WGC3zZJAna$oE4<^?< z4!%;xUeCOfZ_KDDxSBNr1j*>lvYr9|V-Fr1gmjc%m{fQ!nxZf=NqUxCBAbk=aEvxDoSpORS>~HFy;=}qJ7Ky(G+HrMO~&Ko2c0?2gW6z&6s%#&IpRG@EcuPw zn&m;l0-*<@A@Fikr8Jvs@Bv^PU6VtkcqiRR_QCD&ddu#*zEf{OXp$y#e>F zb)*S>@49pTLL}Y(T-nr(GMLqA`;_`ta3`x%&c`HP72e8+5$iwif}3B|@8bOw(CC@N zXK(xIt&nf8piDQTvzO6r7a7DrJ$A`&`;LeYx_?r#9bD|`!_aSG+ z^Fd}5c!Dib=?8`R+Tr7VNk^MR)3>FS*a`;(pyMYz7IQ1^77IL5FKrV5yQ&!otOfH{&5~ z&*DSeA^-7wrGl(Wl>y*y=)S!_wskDe*RDSy&I>)}~PrIZUF8e|0 z0;?41C8BV4-36QRX58< zO!a2u(NA3zdQ4T)sN4$sR`s&Gh|irVg9`U_9D|vg&N#!rMzdeipKhxyBRFIKK?_*u}# zSDN{W0qLz>M`p^mnQKkI^Vu`!;{?1Wf#JdMv0-he8taAN-VKO-{)&Z}tx~CB9}ngq zInP{<7F8uOJEc$GGX59TbbV-3Wkq9=!yDpIRWvg60!E(ha37fH{3uoG%wX|`|kqz2E9YaVr zE5t;;n(A-=Rm}3ZAvb{8bUT0gg^#g8cT-<1dD|8zI!r#7QEj%Soc9th1sgz zJM!w%uZ2Re8m93tY>7#H@;BqMaccKW_{FL;YE3vKQ`_Al%e|J-54`atL~Z=8+%h5u z-^QUog?L3Ap(QE4oK?J;j_c>pWe9o+??R)+CjWa>jb&!Lb*4jHs`Z~f&S?-ZYPdL> z2w$%ManTC3bLHg1SEy+4UEY4gQ@C)1tHa^~^uARbhLx^MS|S_&2>?e_>(c{iR?hBN z>-g)X?p8Pq;#@dwD97G$I5)Y3-H82Xmb=V5U84S50ptUQ_U~g0WIj8__=u8JNucyXyEKUeBSv z;t3=MU54s^Y~FuMpE51V@q5^MJOv`sIb;6&&!uFo)on>!+dBW76W&5JwlG#-JLJjH zWCo&`u<1Xxv{De2dupht)AzX<@YU;Y3y5UftF1hNPt|U!*tlU0**>qFN(;e zp$*on4T0Hu{e2buD~iux@|vCAjBiIi-y8wb&)Ya}HJjf`4n{2|nUE~2dmT+n`|~c( z+I6$gsYFw=M9#cZ1+!`+L8j~*&)V=~tbz$82V4dVf=An@vt$LdM7u1K^I+SuwEeRepLm$d|K;%JhR zYqbz!2bpI>ZU~k7WuH|79mNf2);AL$pB$t*d&j>d6p!Q$?61vJO;LIBpy^jM!f)W( z=-w@ayC(jv)%kHh>@XzIbP41eo>_W1PuH>n{1D`&WI2}!R#+43!$2BIPK&~856_`f zeql3wsWw#U8|R7SniEbB&cnrOZpzsGCqsxhVf4@AvaIkj`j-9!ZQwVJuiW>iz?x}2Tc zv_dkUVY)8Gd%91Lt(cQDB|UtNd{^5(8K2=h@&$}^ipt3?0Z4{Pnh>-qHXPj=1cU?l z*y1JAofY0K3K+*9dh6*Wp0+y_qo0?rcw%jmI)v9*O6mWW`bPGTy$bG3F_?g`jqbr; zg(bDZNwt2bB(Qr4DdK6XWwcUDcN!w+9XM<3MNZpQgoR#w=l458_MaE-Md|F{o8jzb z-?Mq-!OHQydJ8CFAvye>_I!BCM&(oL9ymoBplTq&Z608CmFS zMxu)VTZ)jNAe^D4TSQdP@#bHX=|t6US8^lFvDv7+Ozebd0^8vEmzWP8B2dMC!oNxN ze-6;E|BZwih?ANq<{FOFN6UkE255e;4;jh!++^?@tNeQ$M1_X}VgFLy zMSLZIM#<`Jci$QrZ;kpux+l0I=a>D+S6-z8AD6S`QSG)4#-o1T;}?41a^8*RTqS*O zk+HgZy4L9IWr>+~==(14kB3*mDV{PvFAVzz@8A=4YuQeX)HPkqG^YRP`+ey)N=hk- z6RM%v$gjIEtaW!1y=}Sy-XN9kV6v-S_J{1h7!11Ef1<`|6&36Fi{81BK~XeOAvWCH z+Dk{tKWcWnK)N8sYKfE0pS`|>5QaWFXWuW~6pirwl|ax^e$R9KeMsvQLaXrK(8Jj~ zW35`NprESg#XI77tXA1q!<|wd?m{Rz|5r^rq}_yQ@^hA>2rFdTRoC+{TV;j*DoKZ$ zpasx*hRWTo8xJ-!+q()R^_GT7p2_piPLNSMS=9M5?yX96`kkad2b4L`x%W>ZH6*|6 z7wFwtJ_|B>Q7JRZ?VGR{Gxp9BunRovAaiY_(K$PDf56D?KZ|bQyozE0mNFdTJNsawi zsCiH0&h0<#xr-a4nHy4$)#zYIpPQEdW5bG0RykcMCk@|B3030<_dnf0J9xW@YpbP0- z*?v`ApKl*vLq^yl*Wt-bL>tpUkiYYC?-REv(?_3Oj0~vs6Yy8^z zwA7B^ycTUP7s8r`Y6=ipIi3%Fbw#LEqJ8^793r)a<&bPm zb{_C$JJ2u6)+S1stHn;Y#R+TW7~s6spk8wH+I(xtS2lCZvgh!ME~Y%=Ir3H9`%7{- z*{KK@dHYz~2k&624FjfDBF|15b<6AP*ed89ChQV4ngK}- z-t9GgJwZ5kYL03S|Nk zXc_Ll1N8Rj6TDAH$F0W3c@KJX3;>-%h+gL;#D#fiN~keHW&p;FcW#;`jwE4!eIIK# z9Up0Mj6Tha`@OaP_#dSk+jAG)^khxhbMiA~GILu`_XX?FKDQr{gFcDi&%rFjj@TDk zJT3u5evtfj|MOn24}dgY@b=?o0KZG-PSk1AsF2bfer$E|Jk$PnLJQVCTQyA2zy!PHZFAX_*=LuY7Ga~n(m{X5q zNCpb_ikah`c<^`5NDH@H*ay{KHo7c$GW1a`;C<;718OebU4YWnZ4Ku~!nlZVI1$Q0 zl5)tB%)nd66*OKH?Qy|!kzk{2Xf_K{hMnF%q`(8}Lzz zi*8NT>Z+VUmqUyYv3)}3CWfSd)A=ZNoSAK+jS6}Kn_UAR4H_d0Fscqu#OIKZR@y4#MLpxD~($c2%~xnrbYm`Ut`Y5o1aXj z_o#$KnAzUny`I|LcJ{X)U9ZzO^eW^V^IMTqf2%o&$vsR7NJP(I^p&`PaH99^u?ZJ% z(JQaO*hbjsMC)@<8~bp?#XLUS-W#UsfOl4l5JItPr5sxr$>ycax$dTGx!*v)jgWaZ zp;(cr8XJrP&{%4pb}6Cy#HD$2DCG#Z0q~k_iiwUw)VVQ!?Qk&Efe^n8Ox>lg2HMcQ z>h?=UjuuAWpo_OGm8=krYUGPEj&k0CpVdH-$V))+4KwbOLYY5a5tzy|ZGid}hAb?- z3BS8qelQNqh70~7^1vS1TYga?B1&W=uxFnNnjQ5jTTD7ph0HHpg0{o|I_X29+Sw!c zr5kR4kD16TmY)n9K9RJ^4s$x^J3hzUe_DGY`5t7Iu9y4&W9wtE`{>vT901k*x@+p11k`p_7kTjQVz!HoIrjw10 z?&Q%T6N~XhC;{4%KE5bU1}na&5t4T23jWI#@ako?q?|O>O^99={&7(&J&RtOl(W&A z;s?r^h@+H_a?;LL+NcJ<-}&p&%u)G$n9mLG-*#|=_4pI@);WG@mhn5V>fESW%{x>-PC$QHvK z0W0sGj|!~Ze12|IG$9jpXYR%CN2Eo{_^+fK%HgtPU*!z#JdoA%j~Yz(en6%0WcC|5 zim-hOR{;H;xhT$D!aDLE(q8_DXGxNN_5rJ%LV3)MWV;w&N?8FZJr=i~hfs4iD-&7Z zW1O8)hQ4Z6oH@q>0j$Q<0He|9K`tPXGb2soXzNv2l}#S#c|S>kb=s)RVCFv}l`k#1 z{0&g~CS;Q$%XPW(}m*$Z?sWdJUJ3Woi@gd5oDP3sf{F5CvZyZX7RY2}adWPT+X z!0y-}`9Apqz@KWo{qSd5G4pVb>U#g%_N@Jc5XEf%G{3RQ1OaL0WX7>FhEWPjSe2Zc z+TW}X#_*U)!BaC*K&p%FM&JMPf*m0i^;n3B{|;r?cfmfcP8a;_Q}*>cV}3<$Pq||a zfxm`%)*21=9v{O+MKG#q_253yj_``n`NL*Kjd~y_HxS8*UN>N5xh#VhgH{dWlEAmB zJnKB*SJ{_Qu-{t~=?fbZ)6<;$^)#PX594-|yblD9Z7t3uYcKF4rrs(Xb`ZAS%?Rqs z*B3lO@bn(BDRqtz6l7p$FDR$QJ&vnT|A+>mub0q3!KdVY3D;+qwrOe^O*@%_O0{&*kqg1l9 zNujHZihd1#{(k;>Ua#l*=lMSG&-=rly*RC6K*rHS>`iO+Zu7pvL%cbXZshy0Iq7Xq z=H>4#^*&`&cwHRSpVGh+3=v72zB^nvlaa^;Ci75N4UZ-s=ON1SAmTn_xhN46xQeRh z!ImBj8kcCkdn;-Q%=Pu!S}>1G z{NBsL=Jd3$H5l`#%@Oi7TE{cp(5q^1wDsJ`uiJ3)PErreJ(_ylYuTAp2V}1O`f!hz zz_AbAJP3%!nSN>i``TRAz24mP?UN6B^7MFuPT%7gpgrn?@N@y^m~mm#e@N2DB7^m6N1c>K{`z5b9#sH7pnhjE3!F zLV8y~xn|E7pojW8y_kj-(3=bsNRs}|AlZ8M^?dot%H~K)Shpj``(^Tjm)k$!XKlysvR@eF%9OT9tmpmS7cG33#!nrHh@7z{t!`=9ta#g)`;Vi(F8a(r zFu5SvO85D@IC3#)6Z3;e(P(Q?{SM@4SE+74RTV>9`2gRG+F*Rj_+vYgn$!Ou52Xj2 zz{uSC!n;U)rVyX0!C^#`bo|_uM_D!b65(^Kt-bca&qGg9eqqlmBwV+_0I_wxF1lV8u&p#|7(A*xKj~y0RjLx>Ap`mwr2h0?o z+I$4%eJS$w)aHNjke%%#fk|@s?=d-tb>dYqm=h+h4Pl0r*MnX`v8PL@je;_R!jZ|v zQ#>)_H^|M=aBRWDyB8MoEjBWC3rySoT&QK|eXo6@GDzoLTqyHYy5S@liOcyR_&!?4 z(G-(iw#Q79pbrRfqWsNMPh03jDm6(lA>D%IgzVhX9fF3s^+DQ*n7nsmk zs{Tdd&66l8#MRL}VB@uBj{-q`m#zZQNiZvGKC} zD$VJYrG-{NtT9LGsE*9Ur9=dq<{4(D?iRor}6dW-}pDz_m&a{Q2bAiJ&wqF$rgXHeSg_R zjihLLV=L9Ga>o_`D{(*1Uh$OZW)MMY9?qXu|Si{OKN z!s443^D_Dhk>s_fmQ7Nh(JYD&ZYZAT^AB+0gjvBLcZBo@lWZ{2YR^UCMaKdVp@HzM zGlCMXO{B(q4es+u&Ulq2Ee{!q0 zHr93cAsfIRQ^V^o=SFgYE)wdEC;SvszvQ_t=8g$~@DS0cf-OpQ3?@QpZ`tlop6ycZ zFahGmJT{(C*HqcYn#RR>Z7Y^x?(A`#*KAh{^x1|V{wiw;;V3cG%uqYx>m)l?rZ6!@ zwvl|k9tQ-0TuRLuaGK+Dr(iNDT0D6dh>kRXK8E~spntk zTQzj2zJAI4+-u~#Gv51Q@WY(eP$Xf&iGvQI-(1lzCneGz7&aQ1504M_Qjf}BEj~2< z^SGcNLifs3<9z3p z>X7@ea}VyRw%U%htK9*n1Ez|2q2S6kDTD1?V}I(p|J0qq5?F$W?hwngh91$x$M;R; zUhnYb^F#{Ypr-MW*^9in+)ZPhJ@OCQ4x*^Wdhw-|OE3R}PE(qv$F_*!L*a4{qZe|@ zM#&9a1irWO3;w)DM;1CpzZ5p7Zp{LKLnygH@O(=~xLogzPwhG;`bvM$i{HJRKjA>R zI2gSGeF)J0jo0}_Ug1I9Tv;llv6yQAc{j^4F5fwEMDXSgdvgNGiE@EOA#UgecL+xJ z-cO=vwE;8f-}WZ-M?xO_=Z2fW+W{ungfq4+I)V}f-3Kc>3D(6-W6c#@!;kSxl9}&H z%T7$Jp?TN~+pJMWS-cY>T!YCqUN0lt9Qv~ay&ao_lps z9eW{Fp{?s36F%1xG(c$k(6w?UhE6@x2$)ZARB43JA%Ptt?IwVWKjh}qMm-pe;PHo zLEur#I2S#ae>f3#V&7WEOj&iaD?Jk^hR@o!!(7?;H{H?%rnl{11Cro_5Fj74`{~I{ z(55E@1R@APf;~Qdw*>+bTI~FF>K0f8o~?Ts<3vCb=njXtTt}e5tJKqeT*#7D1c(F% zK-Pu|Mc#!%$!ursT+9pBC2NGZv(R|q&8&3*$9E5lGuc^G!7~^3hHQm^f3r7#b6{&J z)?9Ot>pvX?-6)sruIT*~Xk1MV=BezmSlxv}=b!;`R9+*C!p@wJ?UxmqFy?!Vp&0U~ z$cKg@JN+uY*OJFojmonVd->z{*n|`xlt+6Gw~jm-k6y$kV7Z>VqFe!;y0%g-V76@a z++TcBMgRl<>kZ})*`J#D`)A;CWaX`gBH|AM_Jy(V%wK!FmF#&MJjZx-C$1u7*(P8r z<1O>wS3fN}5!CtMKHy;O-Df(a)X~_=gza8$OpeOwfw=QgT+Gk0<9Q|jNwml$=VJ4m zf%y&fj^o)fZ+D4KRV6+q)Dp-6EAal2>L^3xbWK#`QtqdncuN9-@(Q zJcmPMq^IptjVzbd-=%(9H(-eABO= z&?SiuI?aw>(9GprPB8g|G`k%n7qW>DkU3cw( zKxc2bKMwfm^2_x9CV-0ezS0dJfEhp!|A)|{&N==a3rF4UVoZJ__$O8b{|X-dAIep!eT`<>oZYy-E|qCH2h8^mxWTgX{)tGUnX zpBU`9@8WNyWhYMO56Sa8pVeX_E&1!%;F6C(S6%_?fQK#H%)0EP7-?@1 zdqGL_oNX7tKtg)z$D5NHHTIoi9(FFNq*PjQ zWZk7)(t;fk{$GD2e^J(>wb@h&#nZ_^d5RCdN^5++gYlOlK@^Y>Z?_ zLp3^G|7rbMCfD+iHdtKIzxf6i5B#|D@^q$WLqzD@IQdZ%&P4F4NV1NZ z%+v6C)Ov_$Ux6?!fxKi=eH@}_fb)Q`Rqzpv!0yeEI0 z7E&vd3u35Bl@fUbQOTo-28|A0M4CM)BZK_d1$dOJa4UDvb;f~yq&dt+RN~%#@%r#@ zwAv;mWd^DJ3zOr*H(q7h{ypx@U8|N}2)TL=b2tyGYDXhMNDWC=SD(2CQks8M9(b&< z5{$A06ii*6l3X$3)erO6xA3IJ2u(SJ=tv0iMYxE(p-R6Q)?6@M?RDbS0DT%)TwjSm zDg7(YAS?i>uEU%3$UjHGE}S87RjpS16e;)3KJJ^W&_bAO8~!ezll0c;ilR&!vOi1R z<4NlCs+lW;WuL!{Ax;PdBdbk+!=gQAHl2xjGXn9u3agZ4nBuXQP^sNv@s}H)r}ZHu&J3y4M1yZfYAjt5ME;SJ z`P3;fSiFFHkC(EYBk+WwhK|6KZAI?9Km}O_O_I6T^&NApFJN_Ymz=Y0w z+fRzQe?G*$*mu|aPmcS*7)Rp7t$>~@t}sO}OW;yiZ)4)p8TPO7)106Os#lBTwoVKt zTl3y-j499$E(fe?<9F2sNa%ly?A}~|{M2uNkZ$P;=29SH#0L~S&r?9w)S6ggr{Jv@ zBhHo#E%#ER`?TF=OUJk?wePCKM|r%ghaL