From 04e49a2b23491803c4fffd105fe923afa5372761 Mon Sep 17 00:00:00 2001 From: PAN Lei Date: Wed, 2 Mar 2022 20:10:46 +0100 Subject: [PATCH] set log source --- ModemPool.py | 6 +++-- contact.xlsx | Bin 44330 -> 44923 bytes db/DbManager.py | 61 +++++++++++++++++++++++++++++++--------------- db/sim_infos.xlsx | Bin 0 -> 16369 bytes logs/LogSender.py | 14 +++++++++-- main.py | 50 ++++++++++++++++++++----------------- 6 files changed, 85 insertions(+), 46 deletions(-) create mode 100644 db/sim_infos.xlsx diff --git a/ModemPool.py b/ModemPool.py index 95176aa..25aaa5d 100644 --- a/ModemPool.py +++ b/ModemPool.py @@ -5,7 +5,7 @@ import serial from serial import Serial from error.SIMError import SIMError -from logs.LogSender import LogSender, LOG_ERROR +from logs.LogSender import LOG_APPOINTMENT_SUCCESS, SUBJECT_SIM_INFO from params import firebase_store_manager, oracle_log_sender from pojo.SimInfoPojo import SimInfoPojo from utils.excel_reader import ExcelHelper @@ -38,7 +38,7 @@ class ModemPool: def _generate_error_msg(self, slot_position, index, error: SIMError): msg = "slot({}) SIM({}), error:{}".format(slot_position, index + 1, error.value) - self._log_sender.send_log(msg, subject=self.TAG, type=LOG_ERROR) + self._log_sender.send_log(msg, source=self.TAG, subject=SUBJECT_SIM_INFO, type=error.value) return msg def get_raw_phone_number(self, slot_position): @@ -69,6 +69,8 @@ class ModemPool: position = (slot_position - 1) * 15 + sim_position if phone_number: self._db_manager.save_sim_info(SimInfoPojo(phone=phone_number, ccid=ccid, position=position)) + self._log_sender.send_log(phone_number, source=self.TAG, subject=SUBJECT_SIM_INFO, + type=LOG_APPOINTMENT_SUCCESS) # write the number to sim card's phonebook cmd = f'AT+CPBW={self.phone_number_position},\"{phone_number}\"\r' self._send_command(cmd, ser, wait_time_in_s=2) diff --git a/contact.xlsx b/contact.xlsx index 217c10f29dd68a88e62f13331a03a75d6d6bf899..324bd9629635b3f1a833eda4726982a7cab0f2af 100644 GIT binary patch literal 44923 zcmbrmbySsI_bzM!N{DnL-AIG9NbZd^NQ0ELv@|G4_XYt;>F$z#kVXON1`%oLPS4sK z_3`(f_k8D!@%e}Mz1Es*&TC%tT65hx7%0l#yoGuV{wF~G+avh%_n$l9#n{G3(cZ?^ zflU#Z;ev_V2(uR>X6gLbuU#{}aqZf@zs(G6Z6CN;TP4F=&IwkE)Q3(?A)WcwgY1#SH`T)PF%p_jj?p^yPr0-l#9yA04D1pY;HG^&A_jr`zQC~mD zsOpHOsn3iN8BI_oQU4g1#bdkLYlIQrM)Rrfmep;Y>+K9bZn&mCv|edW^W$T^Kg(7_ zd7ar6>#<2#c4bzAHjeNqY+Q$Ay=x&s*BV__8Qppp+0otKuNv#EmD%Jg%KJogrHslsp@oy}X3Hn;Rfe`_JaoLrSETkipk&6d^;mG~M&IpshDa%Q zmWV`d7;#|_yu$U6NWh%hzt+OR{r-`Azz|LQoF3-WT2VB&#gBQJqVeoQ_l{t!#}LvP zcY0}~F(*je5y#_8+~(p~g^S#>;Z9wiBlSm^I_7h}gJGl^Ve558-&O$feYr&ZjO#5V;e?07G8MtR1x7R+I{?s=yJ=R*5?=(TLr9F#cd#|qd66xHk zyw02xmS(JAi5valF?SY;MD-gQHRby&3zujom=toiKpLI&d>S4=6N?5>VzORiWuU)(Q{rWY+|IHS$g#*rimgiKgPN&`CSs~BQSAGGS)p2tB zc`8m1NbeE9RBM4r$C&8;c;{+)T@G9J8u8kTz`;aOC>Voosm@o!*aK?k6X= z5ov04^*-7;ELiq#^mMtbQ2%+*+;Bd>c^QE@H#aLHl7S^6;&E_(*4e3`-{i8hy>vE( z$%m;w?OAsrlj`B_{BwRO>eBV+Oh|yjQ4ODsLk{Ma{*U6~Y=ZkQW<5Rhq>gtl8I7hr z&o=7$YI5rNQbnh|JXn0E=bD;bGfzZ4er^tllWefrq;k(roh9Cv8RNar+pco*opZL7 zZ|`h-v-e`Ab*3glzoGVQJN-$oMQxLYU&{U2_}5A8r?w71JNr{FUn5^i^jyr(oH<8$ z_pXU}A8@kGmu%@bHk_RwU(R$+>CcI}AD_Q=J3lx*yqLk%7p7+(^`C1v+dS(W-u^c7 zi6G9)W^Q1OHd?g4`2z5ukE!o6+f!3VH8$inbFf4q z??acP)wr5D5io34xHuZxGwr6nv~@n}96lm=QwQbh^@P1o z&HBmY%NH}tZ2qhHPO}j+n`dBLJahDuXf@LyMd(7eeoIQ|guvuZd7c7a1Ye2X?A*n6 z=#8cHwd!a6 z{6X{07%M{}3C-{;&V+22C5nAyq<6z3m;=p)*9$E#1Fg&M%5#OGUD=`CF!PhQ<|n2@ zyOu+{Y}t!^*^4#Vi_Y1LM-7Wet}X3&U8&t|1k0?~ZwndMJ(O9M({r_pggiKP68m9R zQ1|Hh9sWr%{Gf+;ZJ#?dXus*)s}$DFMDJ14C+M>6a;MS1p?pctBDUHa_e_z}R+qvM z0~zm@v?(DTQqGO}0`^>nhXjEd$aqL4Xl zed&9Kv{A{08(4vw*`lD~H<(!RQC?8|^|so$xxTH`K$9Yc2j0s`0#dO_0@OB5q=Z?7 z5pwgb1$nrG$Z>O1TmOMRMG8YA;O6#)>$}gn$!U+whz4<9kdE1DL(9}*NvWkwS$z6$ zmCmGI2i985!Tl;x>@R2UWGi}YCzFXy@}aivgzc-%cZzaAZOTx=SfbG9C59>P1~C%V zQ?Yt~yvng+C5k?#LQ!)(s7({9`vw})M|Fb|&#OcLTuXi1Tju%<_e}Bp_wl}W3W{$$ z7!`9DZx8hQviUVE<08$lP1!8K)|jkPS~awWkhVJ=#p;B2H}!Lt|6np(hnS#b`*!<7 zvy$zOffq^~9vpWk*@QGFIhg$Mscn+aoMt}LSNEkE>x;TsL!HZb6Ehofbk(s8twS>& zE)YsH5|;6HD53g)N(jxs4P9oSML8P?QL5W(kB5)r-`nAuk}fbHwGtR{hJWkg3|D5K zHH=XW75QnWq*52s&Yog`^Re5-pDTPP)CViXK&Z7RA)ZX&DzEAuHF zB>lD>94Sid9vsgXh{9PGh>#Xok$ZP?Sfp0vTlII}Pq;|61Ok8ap+-U(&)N(L`%BC5 zft7fO(&5l+%I{v#bg!Ptm`x9Be1J!stFCa)khGns^C7h5OX}3a4kc1ekVl6@3@qzn zg*DTWAjE*QeJMEPR|3@dtq+6WRuO}QZ8)IihZzJJj>{os#Qmj=3l>7HM4ce~cDqKH z>BI6+fWLxp6)ij4pD#OlM}sy3Ps@@(#z?7a$3>$GO*NEIy8cmn@jtLRVP2K)H z{&v$aj62L#S4>F8UyT3b02ze;W1deNF-8woU-3henlU_@F|&$9oeWq4)}gdXM*W~} zaa8%G6H+&i@~EgAwK@Ktsu*xF?{e5?-m~L`6vQ)W{W988V(kJ~lxe1&*nD@_P5qH! z*vp>NPE;5*<9aHSO!2_;i;n@d-(qI;)D>r(UaoV#kcvi=7z%ezo@pRUy%+gZnW+>* zt7&W#Rffecn>_-LMrv^XTb|E~c`c|_wZmxEcAIrdq*%$iOlwTP%#h}!=wx>4RJQ(j zws*N)bEVwec((pTws*B$bG6)0!$dEmL@&!kFVjRXo5afz-it)*Q~l~y@2TvcMu|Di?%^|^lU7%amlEDL z%KHu&$_Q5pGt0Pih)oS445-|dwN7!H$z)HNOih2R(tJ#?76x^Ay8qoLR9M(9N|-Gu zT^-W;1M+aACPBK998G520R)!fJY=D$oww-O`_U7E4h`CfMqi`(Cz`_yo&v-zlar^y zIN`I9TBNG#(7WYe*e+EFj7~YnU(JNPe}@-(xxs2h4;xMFoEFciXEfIV-MA1wo`dH8M5#cl!v>Oxa(bn1^9a` z(AUC@(brywiV54j7CTaS5`-;}lDmXc!W_uPj`#c%aa{)2p#0G598_%N8FP{CA3bR3 zb>4>ZF}Bcw%{VjdH;+)deJ&Wf<}& zS~B>sjZhr6lbIOEQf-1Q47UJdEYQ_XmB-v8Pb@>$U>)nIuwdd4H)^7g(Zaw>!{9YS zr$tG8Ps68`HMO5#u;W*04#;zPN!!r$9w+NWdIdg>)EEognNl&_q4Aw$F)__;2HQo>bbydS}x`0ATypDjrg=$x367I>U85u!Yg}NG*6HP3sspohO!bXrK%Qklp2!DnNXWuM9Bj~sWE%cV`4k3< z;&`sqMESWsnPN`XvlDL#2=}+!8W`p))BTzADe`i8a|L0%W=M>ZRg!SWsqqA4NewIS z`DReDgNe(#NV+2>AIOMG>e@w#G48lP-;gI6cSK6!(HwC9O5I#h9KUv#%2$MgRp6m{ z6lDmL41+}%01T!nj1=k75~+QaF9B@=-J$crcai?u`DH>Pm!6H2p?3`uj4f{?SrPQ* z20ZG@*HGgwDgq#tAh^)mqxT){iNx{Al33b7Xo>3aCKyY{dlMRSMP09#FBgH7t>_!s zlPt5RLQ+X|J#Ar>;@E1Dr5Th#4N>S2RWW5zaclrlT>0_9P(K8U&gWp(uw@Lq=ouPlK(U~^?hAD8$hC3;eYtZar8Y;GGx7kBVb-icJLG}qL zUc8G$7F2#*^fC%F{H(sP-|Gh_eG{aoC zBGCq?a+x2LlbhfQA6Px*B%U;7qR2}rO96FDLE#+TYm*$!z)j0Z>9vp&KYYU5ONcR{ zA~x+NXxYdK{<$wDcL&rxF-&rxMdF70=|HE20}+v(Y7=7)hvT+6-HL{oPO}n$E0AjW z&IDe~ghsx!$cRdW2=AJ8isA?}#e8zYPkwoDM1S(vQmFa57gJD%4~QxYL-F0#CWcK& zYaSNEpTmXycDqu_SZ?_gCuW3UCqk}KC#QLzj8)?7xR;nIYEzgL;GL>`8FZ=>QoGRg zsHJt&2hqJcqz6`X9Gh>$B4%Y0Py~S3b-1w{iy6w2&U!l@H`k`tW=1&eZ}2HFY-)-r zraK`y^q=IgodUMdYzqSujNJs6SdBA|NVwF-64Sh1DQt6fho*izpG97N@ zT^jv31e#a7(}UiFbN|V_a5>DlaQPK?g~MSR$8%||lGG2G?&6U)Q%rd#1$EjA| zG6X?k==(HEUS)pha(lDJPw#0p%vGlTNcmUMZVqzyxxQ@UAePpOfW1m_ldnsI6s=D{ zXgu+I($>6r;VN<^N9xl z;V+#(*024X-llAg-!+6TBpmR_40!Y?t_V&i?N|=R{?u(okv2EjuRYi)aLla2D#W82)UEi}BL zF)fBEkZmQU@g)NfO{2inCqtDW_?%47)VD_BFC-An6IE&Kxsb!`x~{i1?=;t>T^}ik zCd&T6$f+FHF|>J@h5Bu3dA1b$fs6?h#H_}WJpd9hbhsnkcmsQBsBLI~1k&v60*ADW z3j0?L8pz8 z^_1u~)?Ex}y@eU#6rWtq%fMo-{;p zYdhMDC1CHjagfXWNVXJpfZR7aK$XcgWuUd8(S?A;o;ElEyf}cMpigTw5B!z$DHs*r z9RtTtJa!-XEAO^R#tcp>=nQsFy1^IIQqp3kqlWoLqtQ4=9d zwsL(@JI!QA@jdwRBGDPRM$Ygeha<40PDr{YqB}LncdXvaM%3-ZiH_k9TYYg7zk|m^ z;%LQyDptR=JSpJ2yT>@S1e&-Q0jGEKxFQInAvv{l2g`-&*N-;+p! zWrf)3q~DdNc6`ZFrX$2m*rBAgrgC@|qi_P7Qq<}8eeTc|W5Qz4)B2Vti=LC)L^Lr? zyNr~zrh&IVwUULQwsbURR%0~gE;L%e7%EL=K*}iyrS|%fppSYGAmAJ~`9%)@i@4#R}`TNY+D;G#0!6$dk zR|Abz!^=%Xr-+KJ>fk9=Wc7;PP3Wc6b~Dn{#*c9k-+Hf)LCq>0mBxC;-*0Q8^0w8? zT2t|3Y{C#FYhzgRv5cjx3dyjd zeftxQ(Xz}~|4-(=ceJI9`y#!3^9xKM>}{XXlcS|6nITbAE$Y<|{j&ICF=R1K{$PRMoi9BG*{B(d59xBWnObT!bIJ=L)^|Bx&cJUSRD zh#{$ERUd5N>=DCb@-9w8{bgCLTd3mY7oM!>LPCF28PfwPh$Ym9#S)5Q@{nBJP+}MT zW)`L{ZL&`L7a>>NqRe?$VyK34^QmM6mO^?}X7picI-v=qhrA9dkQY4f=HJpShHnW0 z4j?Ed0GfPEd9fJ`>-LSGTd#a!wDxeu*;+_;z zj#*GD{5zE@~k?ifLBkGh&d*5x+1Y~h~FGNYp8QIW_pvk-0~w+gAuu7vcr z&EAd{dsiI0nJ`EvydRym_BGWDHeyvW1cc2O%ai3>ZWTe#VeCFQ^F^1|8ktkGy0g~b zt=vjM(#|`XWlBYfiY%UGY9Sas17`fPDzm?;SqoUmAS@uPMT{X5d0AQRLQ#}66&W&X z7Md_L4ldcFOr_xr`*KGG$?h^M)!4F_SY8&m+!#AoEX*AuA#)@W&Gc%DG{>+?xjKvG zaYbcNd+Br&ccCE4sptnJn@qr}yIlC7$1p7uo_QF(Zi54{PE1v1uN&Rd#tdGK9*#Qb zB&l(^afHL(j&XNNFm~*)`n4!nxWuOe7i{rj`WcF8mBCtnmvWs52h1JgTEHq!%!3|{ z!MB9%#&see3gE6j9XyP?r{KPq>$u64!ZN0!WWQXd6G6}U-E9z~RhKoHw9Q`lAjJ?X zCU)KK1>9mGy^t}vFhCcF)t6J3bXsk&Ta0C7K}S?bGe0L?LUB#jTi!RI{0W>=x52Cy zpp3#!PT{_h*66%xA|`N_ZO$oag@Z<6NVFdGOtVCTNbS0`s}9Ng8rhw-OD+jkif%^l zP)x{Vk+V$P0INgM5AZfEAgPwDtV1d#bogkN@5q;LEOc`UKj=v)|11kdKT?m}8?F!W zi_iof=3Nqs7?Z7}=Jv!d*WR-XEkMxUr8p|tj=|*njKI#id9V|Y7XLH+?+Z2kJqL1~ zs5C~gK@}U;ST3$PrsVoCdf9^yMiaR#kci$aRSGts|>d9cdxW;?7!gIHQ8G z-EKNDK~Qx=;~qy*TXhKiI^fOW)3$LfsKkpjn+tx7yB5`|5!7~f^HLo7fJNf|=h!v7 z7lbLSBPvQd-4jm_KQLIrXDLUbH<3Waqf;i7h5I%>R%E#`L7B{b2E{e=JEIAeg;$lo z7Q=Xv-mwCrS%tLoJ8QFCfa{R*SfFpAHyn`lNi~>=`szPcAVaPB33zTSd2Bb+<5{rV z4+XTdJ8_6Og;#mM7RS=o-s7rx65)`uZS^iC7-lrFF%oSC+Qt5|pVK?%Dh$Tcioz@Kqdmy^_=LX~IH1`jNRUIlJOM#V#E=J}8E1E5JSeeHN;qb{4c_xVTNd#$Z+(-cCMB7v3r9m;d+GM{{uwU|PpW0B}8jXfd< zv1x?+4q8%To><7#L$zPVZKU3nec`x!bzDy>hWR~1-J_=@>XdF z2XSiguo+p+Th}{iJ&X6qdml%EC6>aIx8?rW+AKzC39%^>2QG9#+lei2VTc>-1Sf`t zA@BQ=aIZmf8Mm5bHVcC}v_oyNMMhSdhB_@KmSW4U7%zoK9jw#_e^GW&`(7$9#Z_>R z9=JBIU9^^yRrvngE{j&iBk7Z$soc}3Sb5^~Zl=LONIJKsq!xb6Fsw{X4mitzJKM7> zCQRYcmeh*1k{nmAP|M7U9x^KruH07~jY(EtfH5AU zrlLKIWseVbwhp1TS`E26_#%Mbue)pM@KzFzSne^tXVpFP)zGYoD_@Q@oW#&~F#PHQ z8qZ=*AGndR*v>soZf!{@xXxAF7%H0Uu*GEu+v=c$%bCXcvW;JuLb3~FKHZ4cN@(b; zt#BEz!h2U9Dp~gen@D@)d?c#NjKKs7ZX~TqRTHqr2wH9XG&NA+Dd0)M5~={M&T=L7 zZkSG2&_q#ZHbux{Wzu>GfoBAdCeT(5xvYg+ylqP4Fw_~@xvG-C%Mil4yfohq)54>D z`WgJ4RjG=fW11!B9ve9V*^b?tE`=)s=1GqJ+Kz}QG`{3Rt zxD(z=;yfMmb->t3zf)i&en;D)DY%ja`)zDTY;hN>+u~C6Cf26Ksxf6kDHUrnOB+5r z{}BUQ^{Z}ij;8$0(i90P4n|tB*@fv>4Q6z~F^;?BauQLD$qk*OY-%y!<14<;n!W6V zJs4sRIT0U=k;hMe#{e&#)%9qHyj?@Ic%hi3a2bd+)k1g-43`?wl8?;%gMfg`ib0s# zd#(e+Sdu10vI)u#(wX3sFcg}gsV;juZB{GnW|_V@t{U-Ul@PvA0|!987iq zlqA6rg5En(F!{S#{FKUrV&?LJEa2-57K*JLd&@k+p?>FMe8zJKJ<34LJ;v2c#RP0B zS~Mtf*3ujJ7bfV(d$#@h$)I3o#R(4HJL&vs3tz)c2FWqA_|qInWaBvt^`UW?&Tk#d z$)(8DR0Pxs*%EN5XdBC(C_V*THD$i5WbuWtimUh(cGmK_mLWaCd#e{cRV^ro8kHcA zngvOV4$$IZl+c=#u*6`FACzm;)dn9o8KB@#JJ?M^qG2x!)yDXvz!hgzYq1Ghm&A*+ z(rJ%DzcyV~>&XfW|5Z2JVjexGG#vBQuqv|2;m*JiUulv;&#T!-$>VF;sA!lhNNq8OcHDZw?d^ zFs_DWkz;0N29(Ew<})hG2oY2T_xsHO5>d^;?nm6~@Wx|J;;qLH1YKqvh+v;TN_bVAKO`#mDP?CoRhK>uyVM?-H+pCOQrI6)8RNsK1~jaPvq{? z_-7;P6zy9Yl9T|H4_1}IY6AEMkQKlt+Ms2ry-C2m+<(A_)e(+IOA>rz@iAs$!l3{! zt~D`w7VBz8B`paQiVn<fo7KziN&Ex3Jv{FBY3^>^yJY)&(Z_PQhLhRTBwH|}MSJ0yax zu@9p|a*%96J+9zQ3@fAiO1`QU^MfQNbFRzH4c!n8q*6Kf|Edu$PU!p$< zhU{kISD0bi@S=sKYsS#k5*FqpAPY0s4>9yBbA%nbm<)YkNRTqe4rvkS(afAK&j2IY0Ur1_*GcgP^ka|AT`N!^h0p%)87 zT9v&uMF(X()(i=fVnLdv;THInpPWpUUba|!BuGvXPOxwXKUYfVq9zF?^*vA>dQVm) zh|$O~$UROM@2skY9+qw%Lsv#vn2~_AVK$?=;u-b4g}3E@qzmTFSHhyQ;qw>>dwz^j z6*=GP%1!S54w<26_0JOhr3Sd6(WQ6R8BC+XY27PwYuxQo8g-5*gtk6#<*HZ$g52}X zUtLt_H8W-_y_9M)CB&7>c>kSSLxBfla=5M_t)^prW-(U2nwVH}h(XStIIDM}vt=Zq z-pwyd1EU)2=@>ghg8z(|Wi%h!`{Z$=mNUMa z4NY{ZXKC-_3^V*J$Y&oX)r$9WMS^IJJcBIbBID1~l>Q|$Wi;7ume?HMio~h{lv2_h zyW$zy2#cBQdf(%%P;Rtpv|k~9ahv62n#L!UfHZ|Pb;WEOi-t6Rh$F@`8~lTWN95FT zi8pI7{;K|~nF_rH`sXc&|J30lgUaR>E!6VxpCNttX`^nlFoj(ILe2w|k0HTtR>2&9 ze)ipix^=BgtJjA3Zd)`_#FA7*P*%|mQ{5;xG@5qVq3nl2!wlHnicp#jRWR2~9cAV4 z37`JTFeuYHk6GE~1r2P&Sd%8KKVkT|a^A6XYzjZD|1g(V#8P=-=;g zaUmp3AyLBFqjBWRv6a60LIoYaSDkwSpI2jIh~VL3U2*kDl5+zj43js?jWw1~--e1C z?n9;P<#I{Jxtnt>en_t<`nltTin9mVAh!tGYTac6q&L;4Ot2|jpE$MMh9s3IZ-;TW zZejgd){bUr^^RsV@%=WN#x9xhI3!ENs@VCcyLa0$i^dcj59YTTz0cGgrY(~lrg9b@ z_nHr?NjOB%Mge%(f-jow%Y#8;k;}#E#NMB-SFYwIL;HQI`hMDDq6eui_#PKI7Xmu@YFFBZOU5X^rP4U&#VQ02vB*Lg2ACvEZ@-|@h{hi95x`fv@ih3E*tA3` z9c_BM6H9tqA#TgJ4?)l5pb}^s8WMN38GZchaas~G1NR4QL?28}wF=d-m7vzV65Vo% z#=f3W-&n^iF}~8&P-pp#s&Nao(l-5UHQ+j>aT5#k^CX)ZG6mJPZKma~gjc6?f!kL3G>R*Y+ z+y*1h`+tv;Nf~{Fa}#fmW=epKHf=Ikymf4B^BNAVV3Z((#S)Ws&hrK)nrU5Ic|EisEb~qxQc}QUNXp-@uSqyqTFrf8zS{nmbZoKEE6>t@V70} zp23sO#Ak^qsAVf5(_jT-RFB^<@Y(CMFY19|kK8Rwc*0}YPI*XZi*%ssSnPF{o*!@x zGU`8;qcFfnPSv;|dGnTpH-S6KCS<}ePAX3V(`qy8&*qZR*ss&w3*UAtzX{qzu0Z3- zcAI_SX!>U0qlB}sE0v;SMA7V17F@JN!w}>>iT5kymcoTP3^+3wOF@qYghy`xt@+u* zwdRnqLawcr`v(%(S@lf?PC8snw}Lmz-a4SNK5^uWH$}spF=8Ew(JEDZp;bzkhosi_ z>VwQ}GJ+~rh1%e+z&LbM%b2l}eevCL6dxiTq%4q5Vw@2ZJR8?cL~f)GIXxYhERpsvOWIXw_uy_Hz}=er zS*?^I05MYGogWD2$KFEK-sWs!@c--Nx;W6p&uz{$-% z&B`%g(Zh(T>}EAX6pQ5e%3aHY4pn6oiI`Gw`WW~eD(I>dabq6+d!XRDs?w1UewKzf zd_bc`e$iA`j(Z;k;DTj!jE3(6a>R{79XzehrL}x~i_NHj>gv?R=0dP|xk}iV^Wvc0 zukdMMa1IRQCSCF%X!jviAD#r44v>w$56e?UH=CE>V`I0hes;aY3NVBpfzUa;9lRRQ zUGL1i{jY}dIe+U5fZK@UI@$Y(pBUDFu(bRH*CJfl!5@Yb{p7VRyWiZ_(|;_gt%qIC)jba({8cDvqGx7h2|l%-d%_irM>t{4F^Weu+90KhB~OOk};g*HX}* zfBULJ&2k+zVtTJeB}!kZ!yCeVWE=oc-;3}`MXwPP0~{lNG@40WvI9Bw9P-5W)LVO{yXG((^y1J0qi^1R46d zRs&9DN4`J4Qc@mLp&CiDR@G>1j*g^ie1;?w$9iJ@#WhTQ2EF)Ei8linmLnZnZ|LxY z39@;xSiX)tZdoaoGy~myv-GL;6Vde>_&q_JpD;gJrFAC8fTY(k^JPGns_`>KoRZT- zdgWVx4*hyb9HRGJ^`#fhN0dpUptT%{eBPtFkV0m6zM~C43fV}OFs*;Iss{4ZEJ0st z)vDrn8-Gw`YcXP9607@^^`ll5)@Z)To9CC-MOwc6?y5{2H??A9@T4sjgOW~`%V7~jRIbQDvP2pHdXMJja_m1n7_)RHZB-mmp4@wL}{rr z4eUjeK70`E%zUo*l6SNXUT7Ea?!pE3+jhZY819sHIH2vqwN>)3PCf>F%k3!@ym|*y?APYd{^!OHu=k&K4tDiR{j}GiRzn z$d#o7$?mIu!B?iB)6~Y{V@dH9s!a+0CaGG1_PHl(l2+BUtT~X+hDs38Jp-;i5CDu-qsu}HeUbCjT7T*dKKLYna>IEo zdmZn7)aU-Yv>UDlT3pVAGu-@{ppoRoz0?||sd`mq;SQINoi?b=8IVtnpGrY2_~$p! zvL}!)Rnp25h>hO>VZ}v6=tmn$xPACgo$B25Xmhvtq6t6kP7Vgz(4m;Y@xT=TCTIzDKuE&#xX{?@Cfq>AE1+U*q?byBQl}*5%8dwHjU+ftwdo%9)&mS-UuW)PVhoV z=e1@k*)SB}mZzjqP4h++3~YvnrHhgvp2Lr*d>>NJcMgGCRCzi~n|1i9~ex1Q*1)iWoiMj#vc94A^pP5jOvp~J3i&OyeX`*@PK?N&C7c`NzZbT=x1HL z*h||>+G%M&eE)`$MbqH0V_#E|y6hlF%2y&ul|uKW*IM#+k>kozi<+c|S9szW?4FHR zQ{vuE&*g*aGOeHUVJO0L_%9=y(w1|+q0txCa?~!%D%@VkO3Oi;+SS~ASCl=I^w`p`0!fU5jp`m65^R1wk6JObf4i@p$VZOq?<-uEv(uB&LV}6Z+M-7*z989Rd%N%3$>~Jrqs>Ko z&4908JsrYBKa7k2kO=rHldRAof^1*%jI(PG^YAwGw@v7!H^O-@-uS#d5qcu<8nM9A6j0a5dc= zf|hUn)4(;?YqI=RBhCrGvo4>@QO@pJfxuZJXWVC96{o|CNaqLjMKzNxYWIQRi?_z2 z17DMkFl9weM`|1{T9}F zVsOARq`mP~8TA4GVd>YpJG1b|cbIdyFpKWBfg^T1$v0Z;D+b@5C_DL+)7_;|GX;Z> z$P@ezwT#i|!tvEiKLi9hNQ@A<#Xsa$O`a#GlfSKI`m?3m33zyT_d6U@j*BNIj;S{S z3(_qFma124=)zA(=ezq_T*DxT`_|sB8*K}(e zWjs7ik_&upO)1uN*^z1F$l5M8i>6ihNkefFJgP$8-PMLWPZIC7sPBDUG~cB8?kl$Z z^*qQ4e_26!`KzDl>^l#37`iZvh^D|l(OIE^H1M$ZnUm83f{bY3nY);1z}eA5ehQx( zq8K6CH28+32S_?Kkf#dwQUxTnFAD{Hb<%pk?*+|Xc;_V(EKbH_4d}1zm}(ug%ztEm z9)lik`JoR4f0n6&Px0=a5}axZDOSRL_8sgzP&W(2+uAn0U9U> zK)PknqAmJlIesYhE3*g@)(86U`#Glq5z7XVL#ZGxs^09pK&QLLcJ|#ZQg;o*AFuNa zF?|6Bhf^Gnc{=JFDq`~9`D|k@**=I#m2D;r?G50KA}19qs?QcP1f;}q=qcCQ7xv-NKROZ(LFG)dcqef8Rci5hgwh zB99?;-V3E=X=@*{w`&?9TQU79whG@y)iU}KddOk;w;sXGCF@)|Epd+-6`}XaS zBkM26|7JJaXY0iiut7{-l$xr0yWaToszQr4(dWKjbLr--ImVtdA3vc38iS5lzw_ei z+($G8muMg7KedK$_Zg87^%Ttqo)H|2()!liANN6&E}=`X(@N6tM@!{Gj?RSG9Es~V zsl%xQaOUGj&WmD$Z1p+{YoJmoTNE&f&VLbln})ulsl?&)D#EJ_=YA>J3pmUsdw$AQ z2m-;?)mCN8$qrH)OPo%U{sG?>2qYdVf&A{54{>>KP$44wQz9&gKRLd`DHnq2P|gef zrF~Pl2x&lfuuDdm!&?ccIl@}TKj{(xyfQ}@F4SXRY6oFcf%g2tA(0sJch~rX4P@Nu zbY&X}K>X`^>0j5N03Oz32#9}$frA>mO7Rir_kB1&lyLQds{oWv98pfhAwmR&rNLG3 z$H)3r1{47BfAI9%$KQ$lvZf(&`wjg6UqqdM@vY6s>XqMJ{{w%Za^4xTL#+z4edY8A z8oXZL1pX_#K=yxX@h5F?{{A<}xAk|yp$ZKYpzd%A;=e#b)K$u=9oykl)>iIIhYh@* z8wRpEInB46Z`gHz_l+`c3t$B_Ahyv^i&*{M1}`w!hW78tBe;@-n+DkZj{t~rRi~>U z2=O3{;T5J`+W%wyd6f;W`zwX&BYFp-dd-jit=?;RUj;3&xh?4z5`@zJxE@<&+ulsR zinzW{pz%urJ2Qg+hAbY^f0hiC2N!|UDH{9;z+--p_kQj4OWt#h6@P$l&1%B2yf*Gy zWrO?qFZOg^bB{~$&>Gz7LDN7K2Wb>>BHT1Qj{4w?-KGHtDCj>B{TEO8e@6!9a3ea|7n!}Spc}2^ zxPaiA;91&N|E-|Ut0jMF;`eF%;~jCL;m#47_~RU*i7Vd-xglI%-3tHd8J_GINcR8i z`d6}7u>bW8m;GlWcG{5-#h=`nEWeU_*wZ^0)LA17pPw?;Xgcoj1$rk zQ*M6raWillJAW$xms*o>e%nb58Gn`9-j zG@`KCiS@5y*C1OzoVJO**5D(9Yff7(x>RRTo5_uL$#0{p-@$ez6T*gX@C~>z+_>Ph z4F#4v0xs;2W(4(6O19GwOE(cq#P<ua<7Ls(B=0ditl9?(koC>Qop%mb$+d zepGi{_^NJ!-pZo@)2Y*4*F*2o%nlB3(?kGb^7++h28e{B(aEdj6#yhk7- zSA=I)a*~D^QCy8quSQf?qqD0K&DH4qYD9;wzEdQ+Pc*y!ZSNKW#nKg+C$Hg=nl7#a zs=wcKDG9N;mJWaP>1!W7EWhgLk{Dci3G_GXH|(;nyOqh|=!p5u^%5IyQ{8JKs_Q_1sy# z>C~x5Foz=n%GyqUZt;#BorKm&c7k=y$SO>3@KYWvyFaiGfVS zz!}totbs5nP}%;oqQK|%mxwWGP-e7||Db_h4M6n+UQ>y|oryNY&ff)dwJ`)5gewLP zrL6Vu`8l}k;Hq-R5riuRE}OF7u71hm<&|s@$s&vpQaSn!6!hUOC1QjT)#|a8;TSyL z-+s?$CHxsy*~puk8$E?)gk~GuT=!0PHV^8LB5IEMH*K0P)=tJ+<4T5%4%!RA5C0uS zG}5qdOu+`0`+AL%n~_!^@@N>=9=B)|S_Cd#6I`{pMOvmk%f5A`q1MVV9=n=6ZrK z@1AH8jDGogHU(~*(=&_H-I%p0%>9d#kxw>To1z|G-dqi*Hr}TmN5^yCJ5%}>mx=3p zHkV6@CEm{GCv)eW%|GXw&+dC4wfB1+R{T6Z`gwGeGc%`uu`!4L75oN{6gK^?2^g$= zetzVW0(Y;?i_K*xuXC z#pC33^)&V8@j?I8dco1&{Nnt!qZ{}^n9GG@uZy_;pF24bq6#+6&EA6K{p$7saYqVc zbA8KW`Y&G0ZZ(soVs71+FX<$x-Cf*2^mzCw!baa_R(~!$Am9`D|KY?JWg2rr_sR8( zhseBK6CEOk;@BdNIxki)&-Qi}lV0q;^bkn$`*|_7ur9cHxD}vz^nbGOdA;R3npzlI zIEnZ))p&WngZ&XG_tNFm%gfD!|8iqv?c%H=>3HGr*zxpaRV&4i_xxgKy~cri+T+rN zE6Lp@W~E))>)_@2?&_&%E8AId{jrYD<$=rjNs2z*<4`(CByzyx6VocWU_RrRxPxEI(C!72G%@LT(Hn8AN zm<5*cKfO**^gH+EKd!Y(J(%|P7EMh-SvXL;+y0Z(n>6+NgVf@)LYkrxPp0FoO!OCc z`58G0(ceW7B?(Q~lfV1GF)J;{MRJTsa(n7jA3$+jgQaWwNz9x@fum z$#h_$_W0NbIr(68WVzAWx(P6Ey%ZHh5?vcwiO3uRy138*b6|eATkTLG5K? z5-t(C|L2ija`_Z1J~)ui>W}P|joAq~^{?CR8jIC^NqR3S`h1TkvJrRs8HZyNDl*$g zoIA;War={~FSgJqY1qP0LORwx8CM*#Np4{+Xu3cu$x=%EUHF2^I(*x|p16HkW=Ub# zWogKqzS|!sp?I1iXugxghU(e(Er_N6qwMa+wukO5+Fc?{d>mnYqSK^y9P1RnIPU3r zC3A+XewR{0AtnqLCG)^X!1(ctomf?3=q49A3$YC(>pH;l78nmBjC=cC+8tDh*OELx zP>obORrh2t(78gFT6>yb zpBO+-oZzX0otAh2Ph`UTSRkR_v&v%{Cxcyj#3jQ#Pn)>+`9tX4gxBZkbe%DSpyGMn z`O|kn`d5kSfkf+G?2P_`No*tczZiSx=*og`Yc%PY9XlP{wr$(CI=0iXZQC|Gwr#7! zPRDsC-M@Rkd%rQ>8}F~2Q?;u0nrqIgRp;!Swf_R`$_`dj{9s86QT&L6i0CVr^F!Ya z`)m6vU#uu^fp5Rh@Vb-L-gK=TMuhhYCkXLAVO5mQCW0wpW@Y>9_uPRZ~pH3$&=C{t-)+j-6ttYAt%29YCi|3 zqy7&Tlx$d_%X_1qpijbv>&_4NmA=u^CS-C^mP3*}r$M6$iJ$`0k5;cZRAVtU6zu6B>gm_REI@9KlqBvEK&A7Pfq}_+Sd~&a)MrrU zy@a64kEd@eJz!J-%ekyLC@RyRRrXoyT0V|ctrP~)QU-hb+Gpn38CGirm?vr4#d}II zjJKr}x*jiJ`TUQ z{U7lJ^37CrQ+0r^ZVRk`pbttOG>IfFEGy0ic@!~oD)r@;nTu9Uud0W2HkZafb5f4E z6wUsHx(ZJho-|?=L0MK)kZ-Mql~o4tKJoIJkTPx=O+`^pOk}khFahecLUV=V5mfd1 z+Bdp{a2MY7hLkyge};z*-q*Kvno<~8b>S&t;X^a4QUK$pZR2|m?26{*8mYCd7wc)= z^zy>XuD>9gn!I)99=6OpALf+hJ>Nh*b1t7Vi!7~P+CMEGE{e(|KZh(IQv=+hs)>JI z!@8hYPZBM`(jG806an}<_V9OJ*@VN3A|sVKmvrjSSP<4!sgwL}s?$_#riuatLS)!d z;{O|*L_td8rDVZha_ez*vn}VB9^BHD6N`sdr4AQANnHOV@yC4Vq9`pgDqKWEO0ndz zu+-v}2{ZN5v2?TD8Xy=MW%INs|NN_#(@=-xZZillk3x;|W|J&P z(1k<8tza?f;4~`}*40v$@Wus96E$}t4Hl7?58$6i;6LmgHhC9(@^4t$*?jIus=D6X zJUm{g#=JhMOIZURk$1bw>-MB>LjoJ6J~%EcLbM5RJN)?d3cyK}iq?7yiOsf~%|H5> zM;DK&|Fx9>+XC1F^gVv^^q;mio4;)(ZB@K~y>bWWZwWujsztIu3C=WvOKi1z>Th_Y z)?}5|{zKi|nPYN!)#ZA8v)w1j$Lf9gNe1UlJlk)#wx0qxha&ymBxiWupQ}$nu2xGPAcNAiwQj1v?b%)T$kcydRZpjp zk%Rm(t)*S=igsa^3C{R}EkmlyyD!FuN1t{omy1f=T@ZJ6$a)J8t0{26g;k!OKx=7} z_BA44%9U9yI75Jn+#B8NS4IMSRn>0;1%#LAkP3SybFj9n06HMYxx6MYK5FRj?b#qy zTktBkIW>Qd)0wq$JT$P?EAt6xwm@)+WfO!}*qtGhndJ9catppm&0W(O$uqfmRmVAz zs;UnI1xuhTJ0QTE=Fps$xGBIJ?3VchQKa}E_(8sW7v^{vw%~Bkb~B%Im|w~wpcSdk zJgEY)1*%$te_BJ**d8?J7qhw0>D;i!o<_@f8r5^4v{+}*X(+m5J%M*sW<0ZGfEEzH zZmLJZ+Xx=sfmd%hzG~$awAH+Nrc0HdLWqzG1g5mDKIX*>Wyn8udY{jf-rmR4=7T4t z9JHo_!jT5Dq80q@azCGWz0$kA@@BW(A~vVTY^=k;T?-of5kEGM!47K+8CTdDZzueJ z2FNSAr-P06i0zfSCww-m(gZ>!eI-dM@wXqbErw0>BC@2nU}hn4Q2<={(-?ZZC*}V( z*87f0UL_jrk&xSGJY#8sz-F!$pTTBr6Fld|ej>6FDO&t?V)EJ1VwPe4J?kAOkHBF@ zs+C`gZ1^6TITcp33U=?v8kq*FbwkM+Bpv048}^@L$TUzm-6PW`TZ9(V40DNITr6jh zF0Y7EfoB5e0PqBXiX?%JRGWMfU{`ZxaE}`_^H`tY&*tPlVYU&j7WgQiuh^=NeGcd& z#0pf-AS^P??Mq?&Yz4`n8+lKs4xueKZAUVIiNZ9SU`g8r)Xu<}1>sk1sKvst3i13= zm{Xb4)2TX2|1(51>S!b{a4Jw}rc+`@pV54g5y9W~@5QyjXWWDT&h*!%NSnOFNsS+( zCb{U=j=}L3c%MEw2ezWF3n!c}z?oO#+<&J5)R$m*`=m{kDzFuCT^QhBIt@gZIt;To zUv^z?U*YTmd>u_-E8O2MEP9A8Wk6StVBl!(;uyYdKkKaIreE=d0NuhDxVf5t{-mCO zyQiqe3pcr9vHUPNM8k2lj)%}Z1Gjv?_*M$(#ANw5gn{2UYyLsFYS08n-pr+Q2EpR| zalx8gAPhJ6RZ}2PqM%HoF(Uon2%81-TO5xQZg$YgjKBWUfFPcbY9iVH5Z%oEF-65} zhx8x*hOA&{?0#}GpMiTgu&R-#Js1GQr^yz&UM<7iCcEheJ}W>s`33O9_<6Zcf14OX zGpc1871?qvoMvDe_yh0vF=4Qzv1Fo3Z7_e*ER$-MVb6$jo|tIl3Ou7?NrP9Zf;$W} zg{cB)N`d!K_`m3`k0&n2p0VeIt!Uh7HA>)~QDl=xw)(>_lAEC*_2t)0DfS7N#(w~g zc1~MjN;?J4eYcS_I*Z*L`kn|772q1sRcZ}Z=q!jQrVH_Y8Ku9OE8wO6K_|8ZfU(33 zQG;5{-EXJ5oo71OdEb>x>kJn6=qP7c62U>Lr{ZHC^S!ba)bC3I) zbPK_-3ia{;i>=&*eilwuqIVPIkkM}{aG&-dfpmGt46`OHa{|H>91 zlM3P;v?z$>RU6niKu7@cnKQRcw(01T1Z_{V`c#RxK9=1+uO1O#N6-bY(gY`*k!d8} zfsbnMgXWAukXZP)1OODi)X_9{@&R@u*!y&wDHg`dfxpzIuFSv{p>AfEjCd@gncuoh zFrocNCB@dCI<#4E3$H}C^#?y4{_J5+e>Sz!0(a19{-n225a)i0W(NNa`akP~>F**~ zBZBw%{l8g1Z~5i_9h3hUu*O3Mby5%f`^R%t#`W{D6J1z(4)DG;;;5_5m4p;+Jf5U|RlV<&|{*N4H z#{awd?=Gdgn?$VOdola$up^_#Dp8%(F5n!F^T+0&%3EP`?;vM&W->Zc_@S{nCtfQ5 zZiW>dXi+6210gknf%gM|q+ro_hQeWc!CC-_Hn+&p;5I+00AL4d%Kr;I3_Oj^F7cgp zMyrz?M7$>)OB%2VGlp`t0;n!H|3(hjg~u{xM;gC=iod<@Cz?HZ74RQ!k)@YT{)CqO zcUFwfzZ*KMEr9Czzf`Aq_z!LBU(cB@Qhe7QwaEuSmW%ssN(Ug>sQOc4OK^L-w#Zcr zZ~$E_djfQ!_L;i=tESUl?iWXIimg{~;u``wv3&002U~asBK62(!p!4e*vrD_K5 z-+%%IHVi<(022{@fPOk<5$@F%C01Zd@A1iKV~4+23Xm^lTj6iB)-*=H`>&{+|J{Ko z05$2W2nslp{g(hf&6fp$ql!lW$FIK$UbI3c?$8Q>^gDo5^S7t(*g01JmG}iZu$_u< z_erYw1}6V&acV+sL!PJsY-oyMpoB-#_Kt{uM3|^)Un~8uxW1rk-VM6#bNoE zME@>u3v_o0rGseKxK(0+JmoV8$6NfR4?dG23IMAfc&v{KIQ?nqV)2L$;F8G#NcJyU zv@&sYEjRyl{z>ZlN&8)GO+H2B^eE0mO=0{6S z4BeHQ+%O$uzm}K!mCKu9@Q1{6H;+%$ER8ltj&1=@^ra71)^v&4>;0vh8+-R)j_`DM zrmWd3zJv6#PZ!4Fa7Io^%Ql^O&IjKAdrkAtryc-mnmd`B*qHoZPd%VAScR+r)I4_t zlr{e>6#w65e~teZDxXx-vdf@H@yTiY@N?4xk-$f1DO)Qv|C&Kclksrj*VZ_Me^Ghf zvt2hi2ybjrAZwYubN%$lh3-4t*8P-#e9l&_t~!%+smswEY@rS)#jg4=jn`MwX2TF| z9waVsGv+fi(XHY8Y9E!%J;>3l&toFhSg$lSerWzvkeB;hJh;aOQhJDL&@E`7m~6c_I%0-gGVxK=}7KYlF}UKwtg2R{F5*xPj{g zEg~+6;b}bg*fLcr&=S{E0o6wcl@bj87Bm_-GzxgKTLoRPpRMO?$tZCA<$79_KQ=Vy? zGn?M|*0nY+)zb3LfeShp;V*b-uD<^aOomcut2aWBahs4j!4*Yb7bNz75gws(-l0=S zt~d0GP%lTK6%i{F$ac`yARbq1hU}pM$x{>}W^;uNxV9ao;aAo`PH?_`5dmYwmx_{c{!0 zS(!?qhP*M+(si^ZS7$-pLe`{0f{LGg_8-XYE+a8E;3LsxeAHbxn)JgnJc}k8U+GFe zET|s7;(ya>6~u!ylf)-Be?$M@H@wa#2t2@GfPlWL0s+DOTicFK?$#!bpLe+ywXJOT zM-bof@LloQC2FyMCW|Z7V2(F5TbrV%N`qrSK*d7AYUW!TQYcC(G(3PmrGXr{{))xH z7q>;m_l!_>Zpc_vj@WY(4yy->Ak@&QsVRRJ$?o#W{4pfPrvdK3%vd$wZ1FftoDDwv zHuAa|<;h4NWpXB>L>EcqYs~v3b@%&8&i8w>bdKQ1Ti{g*I5Q%R*pW~=t!}gC_-G*C zpX8F8{+OLHYS|-QXugD(rSEZ%TTWrZceN%h>s?D5Fobun)S8o=qf|b~ZS20*UK%J~x|`vU+ckzHf7GHx=k~Yb|=+njP1>FfONoM@S_+yLyoi z73*}9$+4mJuI06SHYpN7YAw(=&(38Ssy%A40|@EZHMYBt15hm>A4O+Bj=S4g8lN@Z z-a|qZ$cipsgXXx!Wic8VbFyE-C?-Tk!I`QC`5^$#Ba#MHp8`7nC$wvxnpgPwn63| zmdM(Yy`k2`xnuvvv8t}<2DdGSL#huIga}Q2fDl9AGeCsu(xZu})Ph(L_%`M)zmyVRn0BkR@i3bl z%*nGTy`KX^VM(nZK&e@x9%L0bXHiSQ*7f354~^xhroumYx3BP zvg=+Flp$R%N$zUR{4F>0w_j!3{6Ov7nHg<~E6@0^5MhXnaxDn+}ls zYCdPL)c0l-3u(lyzP(q>y84S@^UT=;eazRt_D5iLYe~p|vMKiGQ&h%8Pgr!e!+4t~ zPj4EFj*}s4xj7CMF~TK;g(;_j{zRWsE8ZPbU1sstw`vP7eqwHvou@%L_pl|HF>ebt zMCVNQR3Zb)D=j7>C@m$*D=jC|Ps`Qm6^`SR+VzSTC6WOCHFi0TECikvYxYYna8X-y zp+P;g8D+D6rL*xSQ0THelmun5Qv#Bib%SsrdP4m=apI^Jqqo?Ppu(Vh{o5O*C1r;c zni<5gZD#lUFD{*qVK}`ZE~%E-PBI^i?qTMaA88Xi@Wt1|n5!+oT$=W3K)>+&gi>E7 z;N9Dg`1mhmgyo$;6-tb-634F5BCby_Eq#v3XxESX-D(?BD(eq===yhf(_gGf7Y>51 z;@N+bQLMYqgV*smz}SvR1Va6aN(Bm@RkpU@ui;SxS(!#^lqkMKzI(3M?rYJHp(`GR?Pr88+C3X`9}AZ%{z}>V`ME<0?klfI@!IGf4TnWba|H5HRo88jDtamm~cdu z@wZ0>LZeAV#PL1@TXw+f1pxwy5PeB$yt!!hCbG`;mEFj$(bd=yDy|M)?mc>`l^gNv z(7sAkOiqCxjg}AGggN?rbMXZSx3`In$L+17r-y>ScUrxD{1X+HhhKdgFDicWtO{fm5ds|StaMV_L zG)4gTbgZzF_X~al_};XUDx(fNXcy?|?#SB_f*_6Ooo;v;;1 zJsj0f6%R2fwaX}-up;rnMX3tcS6ShYgAHSf6rxrfWlZXo?+rki`PK^H z2OYG6Z8Q;tiH#CRmSgLc2&l%ie;U>W$IVy}fqEjC<@PTLWCQSe%Uk7OTM#phw=piL zjI}Vv4H2^Hs|@$ClV4rK_+Y+?s2iaJbAlOvWVOG@x)8v6)eMbzMR4s4Di&X<3P8pL zj%K-v1n9mT4~01}^mWbC|>dlR^v{&BM3GZw1|&1 zC3M=?3W%==nTQ~jXB`CJl?281jPqM>P007VOCaIIC}35sZ-LIXyf0t~DGAavMn7v)4r^D%0*wCH3IE7jty^JR&YIv5@cPgAeN56d=0rAz1)x!> zK?vVqp;?a}ouUX8N(p6sKOJW2p$cMuH4t72LR8E({sKyglL73VQU*@VhMwShB91aQ zzlB`HtBg=`(AYd`ARMglnq8fs>vSQZH7tC|vPUlL@MLVyU1L;_Rx7QMVOFUF-hea@ zxE8(Px*(8sFWivBK3g$q_*-St%i8^ZMEgAU1WaXeDz}RcnGkrw=kD>mhfNQ;Y3}3Q=qCx^NN3}RJ$E$OLr&D5HB&}u*4wcdC9irP@XNH7Pt{^M zi&a#}n}k-dOb;dt&r9G9lFQV4rm01HIm5i(j(0!u!GX z=IcJ9^Ui5}w!}0*#=g94H=a-C9=`lee-l6=%UDg(d^AY}{0603b<%OZ$ve8`!4<>D zT^Awv0phZK`~F;EXC2Ra8M$fpDMf`-?ryF4i$RlUmF^!xylRPl!z7%E<};4wo?-c= z$k$vG-8$u(fQ zp|%=Jz?KCC9IY=LTq@@RPgP0m0$2x{RMk@~x3WEc*B&;V zu`b{0bW5Z>M>sHe+o4CxL>4fkNOI7tz|owy`Lp{LC07a ztWZD@Toz|KUjc(Wa_>>b_WXw|OTdt(8h=V|cy>cflh;uRjipmu6li}slKXO-am^I! z;@P`hhxbs=@(w!jjSYOkn{ED90@6^6UwJzdGJC*~UPrOW}gL8xIFZ)wy2*;$>Ijw=_T2Vray9Dd1os1o`%+8;r zF%$Rf>q8lIEWcqQ?=t56Q5FV0%OW&o#D3`nJ@R|RnsAb+jQjdZB8yj)+lljFn*Z)?=s5~P4u}DYXcsSZw`0Y*M4t6o$ zn1eOEmZh>;g8yrPX4R<#YF1hz?t1eFShr>op2SQ0Qn~1@SpS}Q5!NJMsrD$t;c{XE z&Js4E5ryPXt}43Ml+vqF_p?q<*<#9CGuC8qpIEokt|*ub7?VyMUFov+lz1?3TBI~_ zb_+Dk%3B(#JNK;b66s;xZgTAahpz>bsR^_6}_ww_fS@N7W(sK8dx@Qcb z{L*J3f{&9!AF^;5@P;fn^PP z`-p2}Sg(=B8Y_}n=8e*5y>Zul#Sb!Z+>K?e%a38Hm-J1K!LL|aS`P6@anRG!c5dH8 zN^yyL3?I{(?NrhZ%@Ua{fV8JHJ{=XdVo{J_BA`CeYs&)I01hPf+a*XTOpw^XChc6X zY=Q(@g$GCrx@y6cJ{OCapk1k!|F@2@+}dxsm(97OC*FbJkZU7SY~Y3J7jwj_Ri%f^ zfjP*3^m4Gpx#)j(O>0AWuapvD31B&ggyjb`CSjdg!#Z`%_d*&}ygRn@-T+Of$l8=k zLpmonflA;c;9IMTO|X<%$T>8Rka5mJl9h`rjxe&wAJ9)KdDG7q!q5&QdVI6U%pKox zGEiFDC93lOxnNbC{#&$4MP(Gf5>e78D_|CvTLE-+J7&H&kHu;ZsF)Z>T*=s8j+4zM zVWSXNT{-*;D6nFP4diB7i;;*k*aU)$tP`sHOp3}{j8x6FFXNPYzC)Q#i{&~B`sP&W z1v^eUh<7Ca_s$*`NflXJ2(t_;!Iz(w+!A{J>}s40?$u&!FLPk3Up@4 z)6ickjPq)EqZ^_quGJcx*6Ips)AvrY5W<+lg0=B$mo~{Pg>=g25*=u{{=@*(Tb%ubj;cc zXp>8%-D&NMLpjALql7VX?-ZI@^^%i_xqx|ADL!Nw4kfZGj8K|b_Guv4-o`$EWH(G$ za~>5w4rG|AWy8!<#Tp_amT-A^Q(_ooFLb=wno~#eR6cLynLh~ctcU_#ALH{p=Ex{~ zGoo=pZaN|g1#MedL_H!R%1B>w41;`r1`%m0<@8sR7~3kps)R}KWvSzq=saZ!Zr+My zRUOlW&_sKYup?r42tu9p#x45QAGHB(vU_08{!kN>rd3PkD)X!fwIcpX>&Z8^a)2S(;_kqy^UUZOSz8mIVC%11Lb8uIoJPW+U^sGXeSD{Lc8$3(}XS zH{YQ+VcmU<%QJGAelh7cabwC(?_fgKb?BJS(S<>y;;O10Q^_eeGgVP`rNx~t)ph|S zU1l%LW&sc8kiqjaO||2mfT=ebKmPXH=^t1AkG3(WKh9p_1?_=EU*jm3qrSqXr?qC< z3Adk{PcWz=Hm28$Vw4?FERB!KT1h*HH;V#(+q;4<Vo-@?pdh{w+oZRNg<{JH!ce{JcrRJZskCa`G%h_+Zs0a~cD8hl zT~EqGXYR-qH&XEgw>#8peBB+r8@KE>U_2T6lp}$&yV|0V0T=sn!2-#Q=L+c zV-fTQ3|3~4q0Gwkry*@ngICBdJqlW6qU2-86V!lbph2gdgnk7Dp*~bym;83k<>cit zsa^k=Q6*v7ty8`1hL*sBOrxyWR;19?Z7Unx0sPHAJ_IKA*8sC-T03H#bX5JOc8?N` zu(XbHnFL>(s$-+Q2PZGREu7vd=_G?=Ld7Ae+UlC{OE|vXY~YZDWEq1>NP)v5IikED zwFvZeT%r6miQZ5G)HS%0JE>zKx^$hEjJe3}suQvp#M)?@YOj9!WPS5!mu5DxZK2~F ztmqpGm@rT2Ne8q^`8f2T@{(sh`y~}0N~Z-=S3iEXH5hPDAe4d|r6yQ-t#rO-n%R!Z zobzvJ*BsknCbKh0L%0R9M^$6~JUU*CeKlmDCX?UOa3G-F22%s0=sdsv@1lfcgJcKQo8-5X;Z0sqEzm#>>9rya!9N- zC9M0mDRC^52*UaMq)T50Nu{9zpcxGG>>wYI`?urFmkC{>;gK;$aIaz7OTa;Iwg$4W zf3g#cbTytDYIyK9M@2ms@ zvsM#y$h8DkQYQj=13q41822!JRAiq&XSxGwy-=JqJx*)}u&8{fG65Ov)v?!$RCZ*H zfLFF z_Ch^I-N?qZYu~1udtI>205LqE5Tp0C>(J_&ifs{?T$PBRRTB%|sXdATXDZIr-==|1 zZAb~>2gM2r-zgJIOWU%z18M}-CMFWfc!JDJq}9#HXM=PNw8i?UBy0JRfLVh;;Q~+S zxIzL^Er2|zCDiBgFiSj!EA?O#_tb)WpxOK5hVSX?Pgz}@zd@gIb0)AJhgqCm`XX#>aBljxulJ-Gr2%8mL$tga@qT#@ zA=_8k=Pz?FZ8E+oILlx$XYmRa_a$~5sZ<|JL8MUO5^;C=a2ma_*$_8|sc=h>82$Hsg}E%=OO)i&sO(_=DFHCEXH07>88u!zevUIWG85iQ{1*@< z^Mzb#an6!Q1`81Va~S*t(sdgZC_t5rkQIDxkv>*oePo5}NixS~zDFy2rGTn5)`V@* zYObTFQ4)vQMQ!U{L2k9SIv(-n(*~{%f$HwW?6Q#3Ipeg(tf`4#fu^rMA&#JU6{4AC z^N%t5nG7MzmmN%G#755S4C&fK7{oqZrUt|!t`-kVz81>mq?BvyYNtBDcgcvurau$k%`wO{=ItNj@aL z1gUXoQxCOj4k80%6j;n%C!La(w?f0!-TN76*Att}I)aedn0HYOU*9uIAKe^R=?txg z*cuDPllF6>oIjgUOG6=e?qfa-xDR^I-f%pSM>ik}Pprosdd4!d@=a@qLWFJ8L&np; zSc0j1r=Pcrubhbd98=i2P&>Gw%+drT4~`A76o*XdNjgD#r#H1#cn8%IUtRU!5tgG3 zN+?&(lMtD`r9eR93yeej8AW=t_LqP~0V_25A}dmp^*UEan_g%b&BFA`y3hQSZoO? zhIKg12|mu*JkmFmZE7jfRpAhQL7}R|KG0@Lj9Q)Z?Lf3rX=3}Gl6}}1^^)}k1f(R_ zWo{IBv+P2IK!a7#3K--Dl|DkQ$|ypezPcxvJMed_CB>MVJ-h&pq!^P7sgQ@T4u8jF z?3Bnz_SoB-M>JLU#2%}FbfUcqJ`Blb5RWh9+>9i(vxsjPXO%=5F%bo_66KhK480DMV~NU} zDb;ZfYepYjdZ6J++vB}3!$k_qK45V9agMgEKG>8^UO%Q<7f$&@exP?^4}1%74C$l@ zLz>z!4UV(i0W~)G#*$eGKRurJBS-|S)_LbO$MILqMEssk2&m8+(_1D_BEucojWg+u zz>~3=VZ7<-IiapKI)%D)#SP5!l07vi=3FbcpzCtkcWX;B@)~}T<#^-y2oaG^bi%ZH6#*{i1>9RP>h%9XJM*<|6F^fiL7WY7bb$3Jjv~L))o~VARc~!KI zOy&oWI!mbtKUb2QMj{)tPZr92p^s|_U9Eh%bKe-J6!Sd_Sj=!*w(NG2Ef9pNa25`O( zyr>T*iQ>=~sk1&OWU?B|;v?Ok__j@tzX_Cw)lXut_5E&)$5Hpq}KvTjK-aa$P87>RqQZvEM-QV;vNIH2!)=AkeVtPm`Xh*d}oP)Nj$YoyO zv*Wv}XL3K42owNrSeZtVFn)S(&f=*#^8jz)uU6$jjuqR;t*sr%=-PCK`Km#B!dwbx z&_9rNSf|WmQknJrs#H>HH^C&1=;szHb%e?%>4)|9aG}H!+g-i`KSr=u}>4gEoa6-tOrNl8~4Nwlir$|DV?p^W-{sys^Bo{9q*8{~T+(uQ^bw#CV; z6|bxoHI`3f{y}M)HF%I7{i{cmysB9Oc_q2(QCgCQMPDZOuM3u`Y!OL5(;9u8t3-+SVF<;DHq34DX^=kDT!rwR8)OyO-`9$HH-s1nX62qNuig)rcbD^ zH(67nhN&V>x3{PsF&#kvI-Jz<_z4eX(9?BY4Z&eQVhEx#i^e1)fIG^GBM zQt7vpNUtz}T@AyP8FV@hvItWm>OQh+#PnNoX)**vUq*fQ3fr8`3CELR!r@Ct;|*qT z%b^7I7opzMbv$}2NenYxe&7(M;&;d3j|KAOZ>r#OF@f|A?4ioHSa9%@qr(Yh%j$EkAAp}i~k(OUcv)6SZl9oEm_8wfG%rRdKl*8LqGHX2I)4bCiFdYCW_2;1+ZO$ft=}}NUf3F$NApp`#Siz2viPUBj{NF2PInIjS>5`!h9Qn78Qk2*D)uZbzgHfWW;|jQ z_k%&1Z1T``H@%`_)EKv0M!pDBxEH$6;edH3S!xFfEz=K&VyHaMBxv*~aAzfYRE!Dx zr*=h^+z@|X9nO_QYJktp7EBxn5+&T9Q?8%VyE78{FC|#+BG4zjz0g=+;6GM=#zAEe zcag9UN6kq*8z%EI4uWz2gTtsF%c0%7~mYnn+@bft$G$O+vLwWRn9XM4s)w@uMJ_YP7yD2c|0bC zXz(T&Kkg9PPG5jn(LcJLb^>|Dm00u0DJ74&R*oFBeQEtErEG)^E$4xc`tH9=+^Ey- zH*g)L1Pq@hSWQtR5_ycv%|&V*U&kmmx%acAME52{H;#}|`9L4%z(4e8h|&fM3(4Ym z6nj(ze!MbU|D4!+&A#u*s5^pz?*skTGrwUX_*-*21xdL@${&a_CxTS=hFBd~gYq_u z99j1I1goySNZ5&wHfz47Da`4XXWW*{gA7cbBvJ!$D|T@svs`vp!zHYRcq?Vtgttsq zWR?i#Ne6;`|Gs2br)g*Txe*rgx-5MdZAXde#v$*QKoVY;au;C|)*4^g6|(t9tUQOE zuhJoFdh)RcmOJU3w1(#rvCQiV{W9z~CE3?buw2TvT!0$&lu5Z4v!KPnX(BF)!&=fo zk~grh)qPtr4@Fjrp*^Ts+F8gg9ZsE)HLxP zw+17PlrEwaq!_4P9rNCk3NWGnAcR)O32~+l57ipQcfz^#U$k9pM$WO(lG?a5Quwo% zE0|vNve5okuZ35^bM9ny`GO{b(jIutCY7DQ&ed2H0Eg=)<6s+a!=hlQJlopyo0AcO|c`n9J3mricn6 z_(F7MTN957(};xOIl7m&YhL$(HnBWaH#OPcK82C2h#{O_tsp$yx3v!e4d z1rU!{Y_P;9r1`|RHgIgnw7H3MSiO0rn{R6?Z%Q|Ik#B`sWCqWjpnl^0xJVre~0Vh@V~qk8U#1x)LSx--Q$3oDm@3!)~;%X(_)4gW0CFp!1N(AJ3Y}N zqkXs_x>)vX-h^*PeTQn$zR|GkX|-f3=Be0*`9~IxzybA2Uy#zaZqxZf5GS1QV1t5_ zQjPGTT*8ZVv5)L`7VFSC>HJhQU=6N&dFd=i5%BzE<(-AUL9+vqxhu)^gAV@BA*BvAL?(%DRNBp2SYdu{Pv7W{I7uXSAKjL2w z$>s5-;Qll}=2^vXV=MGezGn~@9}w<=J5^R#xEMU3@CP`|m_AVJ@CatoqI-Y^hSP|~ z>)-UbWtgOsd|~!!8|T0iTaq8WfZo&IQ4rWbwj*=iEm^=SRBL|30Lc$2YBBfaXTWuI zic#ab{vH)7e^1r;#F&ZFIJt7@dO7d)ld3PzMHjymX~pmcM4&O>RK{)ZR?D48(n`huGOJSZUCyyRIGT(>50o-eT~ir`kq(>V?MmpNT5> z)i4W?u+(trLT;GB^=P>8(NR*;V2d?X!fNwSMu;=~Xk>m5IUAcJP!sU^Y(_u*Xa#kz z_wp2_xvD>IV;Xl*-ZbCeEq|s}Mm({gJ5Z=+&5L6ZxaG+R#8tJ+W=*BVgx)3I32!(X z3Hx2Wa9HF(@#t6MU)E@6^LD`O6C2ZaQI=wZ9Aj87zw5&`bF4WmISyySDjXgcdWXOk zgN=zhT4%YZ(qAfP1QB9Fi$7j`O+Cms*-Si#V-HFt43Fxvyid~vK}EgKB2P`0b{DvP zKThSDP5yX&?GTAxPyUdb-uTJI=0`Rl`jX>;RoW48VY4>X@n=weT|pBAtJJ&fOi??E}M$ zqxbI{?-!xy9(1-ARDoR%Xy#XTPiqUy%QkZ*DJtI$_zslszB>t5$;w!iq*AQeJ2`$d z$bv^qYILx8Xhf1eG^}le^O8#J4-LLUOx!=VKW%ja?%shh{J^lOoKkLfmn&)g`6k!K z0mW67VYKLF4a3OEK-Bq~JYYRWMVUBSj z6ET;^I1Or90+C;4wl92kYTwlEb~{upxi~tyFV}P66l2lzhjlpdhOPGsYdWv??cy(b zcso69wtIeUiD}7U+!KUBSb8P@!ZJaRv&CCb@a@v+65A(wxf%BTO$J^nH)fK9B&ho` zYcZo!gC|>ERnp2c+$Ru&er2Ql!-ibc+n2EKCBgaQ=J(CvsUeN!DeDM>W)(Pn_5C2c zT7}GgBUTkwR`g^g4|BfO4$zAIGuF8xi+88x|I^rYhBdWqTR@5^O>7`dKm?SI(wkHT zK`BzC_YxrVUKCVBdY3LGfYKDjNR5C<4Mjo;G4vinfRF$I%nN$XJ?DDQyYH=h$xe3G zm~*Z**B;;cvFF%Ok?D&_oZmIr2j@iXt8Qf_m!wEFDLPB z)JF+$Km%Fj)?|YQ3taqLzOwHGe!gkZSqkNsfw;XgjmD~pFHn82w$}LQ5 z(y#C);Ws-ISxliiigD8MBA$hq@%`c3rPk&BdAcyKuT&QkBMC%UyR!Sog8r{vCT23z zdkx(XLbKT94TheR`rPle9=Mss?269rAH)$GyQT5tGZM09!CyD^UQ-AqS|^1tV)cj% za$v4DUE0j<1NI@k5rYd5%X;&KHbM(F0(+U0!Y-wvQdlij$PK+~#0WNN+FeoSllDDR zkwmvQAX}v->Efz=2Id|4tVwIx$?C0Q*hXM3{PKrb1qo@#12+l57X5~m*X8q@LJh1| zv?Iz?_@N#_$yct_iA}`7RtpTLIiqOGG^YZ>!NSGDHU;7J^mXY6S%^aOyMecvq^f*>K^}X0s7FtUlyUBF%N8 zKAaMrLR~K?%0E<|Blrq5pzZGm<6PJ4iji*PF+&K+JJLm}a)0ay(@8ssxhR^qFC7wy zhYq~$)HPkLDg7Y^)BC*IxAYRivWz#}J?2I8MvV>9J4Ln#fk{dUwaf3za#b<`; zELR_B(q}%4@_7Q=rGs;G2!No!$mS~199?3Gg8%zEa#fBoeICwF_Tz3pR zkdaK!CrIz(Pobr);k%K|@>W)Uqh8(H-;QGZrKBoG$S-Sg{|Grd;uIhcxx^r0-fH>2 zPtzG2(w~8Wh6!|KZb7Pv>!Q#d}6D_&6<$q()7CK8 zu4jCiU8weD&JTX1)^5uP2O+ZwZ5G0ITt`6t=Rt^-X=ZK2)Tm4z0#Xk>=vhfema*X; z_Pz!8^;P~*+X>m(JakfCFz9k_ma1;%1canv$Kw#V8AtxZ_2gS9!*x2kSsK{Hk79kV zh%wZ?0;iJ1+x-ak^fgZ`^rOOMYu!U!S^0S2V0pXA?kM{st;jEn2D!@S$m#Db{+J{z z9@@sm1K;SBo#2YsEd$wXZS1tL=38;J?8h|V%#mx+yy9R3g4-eGoZW>%qN_5610=yX zZfedmTs(}~|HAA0RU&b4wr}gq#DF}1J!dd{&S8U5hzAmIXNTr9uR_@l>u%uik`LiS zOVEbpxN@YG1DAa%=VRDMcLV-=*~%N{HIH6*h(;B z$?$S&qrId`TPo*yArnR&VJvQm^%H9GOo zKEgeA#T7JwI(3M>Iou{l7qOT0qdgrKZ&#Cf$@&&?*Pos^UBc(s)p^vo3>|E&UNHVr zQj~KxneL&oV0csSFceV|IikSHWt}%c=jwd5+#8;DBwf<8WscE92tr%#DdnN^hwyxW z;sYnJjk5nB5ZV=SfcHB`<&jIOC5pNF^5M~pPZeab4DE_dj*of}dTu9&ChC*q6Bd*oH;CepTpF{3avE-2)7{WPVaC1s07iI)aO@U_*1*hbu$5 z&qH-QJlH&v5(i;-LM7@)?t_gOD)znndb~d_CZLG%yitkn;u9Q6%hkGLb;@j|@=U3Y z;-P&yMSXf9l=BW5g>T;XbQA%Vm!3=qaop=~So;<-;~>NF9THCfCn?Tm)U4K@p&<+Z z6i_;?Gyl26?0w)->K;mfiPI-Jv1|36*<_i)wa~NHn9${S^67zkdtmAo1u2YM9th+N z*bw2&!SOb%%DgHYr!2iWC>XBdg`meYPB%sseYd5gFyVMHPPLUG+;kK$nDE@j>p@c; zXPp+Xkv*1%U#~wjTqeM1dt#+*syRNfsw;vod|3VsIB&J?h)8&5+YaO(AGMqBkQ%A{ z!E$qfFrqxTK^y3c+V5!d+CyGFg|^=&=FnD)8(XJ7e-eSojSMgZbJ<*~vhikxRKfr| zQ32Qw*PV&bJ9?K*6Rk>n5(RgU@>XGbY~bkubvil81Xe|{$FlaZ0L%$|cfD^!2gR0I z#}C^pE^Ee%F!i0w+86#rVRF7@0(9liyD8{F_1P!MRLY_&JIES$A(2E)4X zE6VSB5#L6eXY8153OSBKJK>-0TRN`329!O1;8P&327)(ERZ?2F5N1KdA=-8Rm!2we zH{g4W+5+w9%?+NJqw~ctn{FI=Y#@-jSUk(21Szd0~EQ#V{o zFN!X_mFd3rLXhvpfDY>{;}Q1Y;}`BGx0FP^_dy`6v6)_=-w_M)U|RjzXrWmYV#U+{3Y6O1D?O~QH6t1lpvUzZE`()?r69>=o z3YeA75lnXoF9-HP)|;2gM56`tbTV3l5i$(GS~n@SNlZ5F<*OM2O|&7?5a~dHQmuz| z;!-6|dRSD<6C)c~UKM`u&^N`%P&3I@%d$&H#?;sX5067z^_ax$x-M23yZN|TUFbhB zz{@Y9Ji+0;x1@4umg$%!sHE8V2ADd%Zo_D7e4q{OX=Q;kZhmqVfic^i z$w&E(H%f|y&ZA9SAYH2d*mk|^kST+$$GZ|BvU`D`8r&S)?#M$A+p{rFKILhx?y*wp$o3%3JxXxDA@FIT>HdK3qcIInt~N z#ovB_F$Ge9g^zam+aA;gj5U4CsH+UB2f??=!UwNjAs%Ei6$F_i1)5NlqX1S{GAs<| zQ}i=ro^B#`F$q{+{T4&}`3#jSfmUV~E1PzW*rG5qop%mtFB@FbhBLy585fahn{nML z!MK1gdX^vOL5~k2m4ICHL6b%O%K_AH%21jf1v^39}O_>muVgSQ?DKS0rCo8hY|}Cyc2w+i_54%_1!65OMZ^b*8n% zQr|Y6;yJRfNv|^S%I!}>k|S}2tTPTqR!fxbXA8J)-t#yWf_U0n3#S$(lH+DVgIGA^ zA6;yAy=Q2hzHlcdA}E4cV{SY*&m4<=PsQE(g?k(UTRp-8Q}N=_C9I1Yt_8l4`_ zYf?g5)+`iH&c4&7B0GHSl9^+09|DYE)Zq8Mm#1_CnCA%dYZfz85p>oosqpsZpH@;O zFG>TPKnXvhy1Lju%QLi_BMO^Ojyu&0iIte3l}-QIoZH&@#QQJR&qCm|2Qa z&P(-0erHyC=%ZoK)Us53$ntQ$S1DKQk6pg0%5-UZ%yz%L+(k0A!rgXXbY_rLXKrTd zOpF=^p}#xq#0X-p^N_qDE39#vtvUkRr2ID5*mFw^|M@(nRJ>oqy`9$J7GoIOsp7kZ zub$)78&Yd}!EMkUkN14-3pUixy~F0pSm-#B@!#v7);9Kg z;>gL!aw$k!0l(^=0)ajNJ0KA7QxDsqPp?CashM|+@#|WK+#SJd57JIip0{9PuH}{3 zDtos!k%CU$7PXMMyhW3@$CkWDHzqj5<2|#GZ;4*-?=IOYHdtV&O4BUAv7wp%Xdodu zBXMhsb}-eX=p7+}4gJ>Zj%XLDYo$?@ zAl`NqA>E`Rv`9ez`#vwX;`4MoQx3Ipf)ZbV6<0r~ebq`-Tc9uEZh;wP8#?33*J=WJ zs-~N54nQz0`c zCsjT*1CaBxuMJL-&vp&D^MzEtpN@^mzr!C(;QbhID!-OnA>MsIn{U=tcw>DhEh2Yl z7t*WrvtI2KDMMsrF?w?<$HzY#HR+4BkE6TqZ~88wG6Bs*(tp#W+>)dq{^%oe+_O4$ zQ2UD*(^pIshH0r)H}L!!xSuG`x~@a`qnCGyLs!qHnxR`;Zs`lb8flWU_m^^~!yKB} zNOE1`Wr@vE{`yfW!0v!n{mrl-Q)JZbs+Q3c!A4%~q`Sqo?GBzqFDax?id;#t3^N## zh>;gea~)nay020we^aAeR@t6(XH<*leb3%)&98-=_jMIIr>;E@ZKC#;dD^@W1inEH z%qV7;s0~V9Uoc9^_jgY|A0Hi7G67-2X;4$k4*K{j^|> zG@Ud|t#5FoY1AS~=3F8jNhN~6y8Zov`8m5Ssk(qCVoc94Pk+RS?Ov+qO0V-41-%^) zI5-iNsA+t*=PpU$oI|1N{DsgID+&x<@HD?991S_p3%4tk3OZqy8l`Ie>Hw$>;OSppba{|!qXVO`77j$!P_j`+^xa-L6 zU%HDQ6kG0D>D(2KAp3V-Y1`$c^Ca;~2GuWZA#*jLr=O#zpS4l2m!q%cF}GBw_j$I9 zF=^~(5ExUy5A1C8ADn-z!PR%+_09>4P*tJ17=>r;(}B#dnA0irC)9n`8t}C8q<0rr7&@ z3+>I`Z2e}S?$euP%yIvlFn39>6Mg37JO|w7P@t$_pX+UPXt_(2aq?aD=fL)4`kK5v z%H@=_qV*5GXL4%NXLj@ zPLKYD`FREXH)qF+R=?V@v*YFfw7>5I^g8Che;=ghs7tXdX%#w?81T=|zx?t49cJt0 zb-W;dM;qxca!HfW$|UrepN{^FHj#ApUrz0TK92tc=eQ^5aYTYekUAgBYaO>=&UZ)# z|APDb`T;%uGVsqcOyZnB+VMDeD1Xw=|9_VFD*nb-zmM~GVmo&9E6}@thy4f5{ch*? z8tT972zvcF#55*1{oQ{0{PEJ znjC|FWexZr*qzPX8wiF}ztk=`UTyb5L2;XT$i5_(kC*Q6< zm?|KY$Oemxf9C)F^QoPY<1_R8cB`CmmZHp0!Jl-0(P6c4pZ7O6x*mk=m2-S1#|%_| zU)UHIzQy#1=l=yASyFhRs*<^!_Tc4-ES#3`?8mowslSfF2K&+-wYTzSZ0u4ZNkqc^B!zCp*tEDn6V<4gWSs6A$=@>XXi;i0hc2cZsme`Q@Uu7;O$HF6=`*3(SE-j z-}rrshJ(>==v(`udUc(P8?%Sfp8;%R0`^xxBfh*qL&^NV+7v^xP5&*>rmH{~egN83 z%SPYKmW~$k`Tw`)|G_=^zl2^AEhz#01J(cZ_Y3iGE5|=7l1Vc75_>+H8jAX#n=dk9f|(+ zCNV2IEWTz4quS1#zvd1u*~s#xC42GuY%ikN^P8(t-I!H5&gQe~l{iWfnR?tdzW*wY z%m`!8s3<&#Ep!(5ZOdH?GmB)o@sNwp$jPAd#akR8C)v>fRh3swrvxD9M z8ywJH|7ZWSM30zse@FB^^=tE)Xtj=hmKkJsrSxm9`v>>E5xokJF&|rRzVGqQJ*_QBB8gB&lX3Q+NTVqNl0bqE;Y2BDI>`^I8_$aaR;Z{ z199Na(tMRsBP^oL19$u!`@=xchnS3TnyTN%kD6F2Z{InmWva)lclAN52y$EFDUs$& zG{VR~G7Rg`*PH&0oIxA;(5Jx7p39&{M`l}1g&5&}a9>HyIKp#dqxf?0;eS^-u|_P? zFTkLkgoT1a0ZIa>od30EazGLm|GuLxf7-)WAW=)sGNTOFW)pqnL#pwcU>umtAX_9M ziJ}tgL;k&#lT7>m3RdHqnPyzqjzaCZTO%h(`!f5@YD=QCK&^Cw^Ue}|ZsSKZ68leV zKfCGIb+9srqG; z8OKy5;CV-ze_)_Ft&{i(>c=`Ziz69@%>^sosIP)uG~c|$28YDEcBtoWzs_P#@BI$Y zs4iJ;N)kKoCg#4+ZBPipf<))VcQ|PQ6P+H5#?p2Fxc6xTRP);J)V^=DeGc=g5ij+P zY%$Eb!?hqdsLAKlRifT!uc6=`Us9wJkP@!lCts={lR5KKDCOEz@n_l{^`j0*QNK{|wFJS`g6JJc^ z49lwE*Cmk7*MA3xTB{Fe>i%;}!urvLTEF#o-s1Bv{ja-*Nct|0jhukgGs26U$`NG$ z&=TeH*@$ZBEs(O9m0m3L;jdHt*!ABl{IVHW15Jhj%!gr>fgsUdux|=d68Tocj)Qbl z?Xz>Wn(4KV;>anBXz`rUHLmvqRA&KEC|PQt_6ZOWO zjh+gA@tgg8;eHd!EV3r`5AS@iNofV0dHXk6T~7yi)M7-tWmr&?5T(I9nSjZTpQ$?a z)6`Lx4osO`8tJfyk&L0l{m8@u8bSoDNZMijIWlXY`Rb31o-f<;g@~04SFKgP3X;p>n<#7%ig_) zkP%Np1%5*rmm8evuevZ2lS|P$#~fIb_$w4lX4ms~Q0ey?t5S@dL1W!=z1&X*1(MLo zJ-o<|A?b6}3>*9JCD`*r2g7>#g>k}GXy|FrQr^t`J-5>PD5cdPOl(5za+R18EBt$x zGfK(J^qe#k%~{IP2#E&oI1;K6H+oa8t~uY8n4QEqo+v`05k;~WVNB0L&@ENWDo;M_ zXYZZJCK|)%swgIGkreA+fjykOzl;t=kPKPLwk_v=>*T$t>qPkk3=MEehpC8*QXYJ- zfO+w`OD+3ji)s^iW@H$UcXwp9GPBI++?_dP3=!kofVv*~IW8lx?Pp8Dqc2nXSB6JCN_DmxWtP}j zm15p`R0vVXEcu?d&&G(}fHcaBdQYctCAvKJBP|)}{Qzs8Qzyf)f=;oa0+Lr4ye_zC z{3+I~QlojNe<*(VI+k$bSl4pDNs^S zGAi%iavGrBzWfndTr>UhD7`T{BU~CW*iK8I6p}Tgoa>`i^g(n_rwKXj?xuMm zE=NME`%v8m?m-Gh28TGkE&_)%apx9{R9%yc0OHtOY-gIx%!N1i+i8wWlO5Mu{9o5F zaXgL~X-BkPlIlk{()Yy*B6h9Six<$Le@LB1wz_U~y&R4SMSspw<`f>3qg+KvAfaVw zJV=>ernF@t;w*1l$@$e+VlnczuSl&TT3QIq;muEZ?_UR6B0uei?Yma*k4UoCXt>^} zZDy@u&cWPkLSF=LhS|U-AY{qak$AS_evrwQpPVyBFk)#$S#EPb=BUHIG3&d!chW|_ z=UPQ{?`z$6ol@hu!d-d_pF^nIX5H@bB{_{Cl|;x^IWArl7?HI?w^NI)Fp*YnmdGCP z1m@EJ_k3u8m+~bYI2#5bLw@t|y35-c>6`1*y?*|H%&%dk0mx3@`e}~`zKNwyXQ(oa zm2abaFH^|7NoXuokOn~rfwcO`JwSjahm2(ewwv7ek=3pG49VW@UgrC0`1`~Jw{18$ z-PLSPs?C&q>KAbNNJ8VOn2^&?<$?V{&zwmfuDi$mKi@#Y9}YTQXcP3d4aGr26QaV} zUoSFBC<0!h~Nfcs1G zLJzCe89e>13JOnZs#b|1G65g<(48a-KFqHM&AC0S=-8vfsWaqvGnO18mQk_l$A{U! z)f04}p^)?hx0mE2FeOD{TAjbz{AI+g%F&xA7$D~OZiV-W%`;zvy|2RX6NSGieQ4DP%6yGg`Om| zw@FHvC;8xDqs2HEOct|%|J|QW){$3f-*2ahg%dy3xb~%>M&PdrOM>r=KX#Dua_UX& zol+N9{cK2C4l-A2@D8ILWBAUgtSJo%$6`lA>Bmr4FtsN$!g>>Gl*u+ZQPP>R!Z=5C zew&E$dvK5_g6*1C*0;FGgWvtbqxC9iTT0i2G?+VfbzfwR*_s6nF6E z;h^y0s$h0PIcs6$rwHh38V_p@CgGr3Z&ZVfV{awi;&G)m-86z{ zl4PyrUu!U@n6QYe319Ma_-3m#70oBnX@4ugzFDIfPSCczTi0v#_l<~}vpv#=^&6!< zwY;20P96%rwMj$T^-{C7$(Z*4Z9lit-Dv$4f`T&KeFOFRzkY_C+HH;W_3dowUN5gr zog)7)7-(vDx+}ual}*>GWK_ce3zeqv0DV_i#Vu;rO;wB=o&oNLYdE%PoA1Cv{;zv5zX1!NjtLdrvlOP zSa^(WlpYI|q4ioq(J99I3i<+i;p`)G`_kFQf(spXsV|a@Vg$zX){b6=MOW_8(dQj; zX#-V`(UP$AO0-<2&MJ|s)-Rz}QcI}m0aGi4Rev71oo7NCO-k38S`IpD&{2+V;rWk0 z{4QO@UAcA9O(j+x&VHk0V}_;_&np0m)TdXYjbR*0O>n&L{AEe|3@xFg#RpaG#gBom zJmcm)$nA}a>>0siZQd?ta#%sPhslvku=!Tj;0~GnrB9EY&#&Fhs{Qjc+nLyYZlIy3 z%J&IOrn8)GY0X6>s?MJh1xD0Iem_w9eC{NVc?6Vv_3&2KVNJt8Hs70464C$AgnMtD zl<9^{`J{v0Q^fx08>f)%^IFM`Z*q{vcYe`ebJ^1P^Yg;#f>3(}+WN%%E{s?<5+%qs z;%BvIaF|=2C-9~J<>j@WO5Fcdkv4}dms5}AtZFBCF?N1Dt6qIx<$2ymdAT`UeJX!xe7WtS^L#ue z?dE6hTg-Lhso=cK201;YA}RNV}(PzL9}0$nAYPG zP$2XxI!^R+5eD>=^t6ykRvDOI+U3XGX184Yu|jwGV7R)L!RSm#^?vMk*)p|U0`6d} zzwzFm5`6l>p){$hg@)XwHe3RA51fG&hEA=ROe$ljGa{KLuKtFDYNBees-Si}!8X&9 zgVSlIbf(5K;!Sq~!Fi@>PdeEcdn8K{zxPf4h#NFH%L7$yc#QS#|5EbIo2b0)4eu=Q zuT^3WDNOD!iT;LXt+)jxm1GAVWXtf0Ok_P_O~!lA9@D`^)n{He+m9GZmYMd)r^BH+ zAYDTO)A%p2q^Q}v`p7!O8Y@q>K)1O+bXTc)a}Zslz_kCjE`Va0i`X2yzorcW*Z-g6 zVR9?g92=wPn7Ci7fX1zyy$Tq0p^p#t2@n+DCU}3!5GQllo8mCzdFRno&hSwLW0{wr z*f94mL6(PGVN*#!;L#?L4}p%741&7TdyhheJ{;UQVa}N7IXAUd`&AYVY zh$tMP_`BjW_iMAij@StG#(%ZQP?+WZwP&KmMs)Sapz%ik?~+enXQ)NL$T&*Q_$!#*O$Hr5Rfddim%aM7z*d2 zb6q_x?epDDaVi5*acw~%?#q@R$r8r#p)~4?-A!kA(evlK+}csKPqCAxtcSrJHh$Q$ z4}3TW6*erB7RSVr|*L(&che1Ls3rKQr6QZ~dtH1W5^8C6sb$=cVmmy$G-nA`Xpy@v1Q=+Ou zxXD1Nn*B<^X&T$%mzqTvSCoY}RpBywAa*py@qkwoM00u*ZHFg~PVP&Mv7fatMtd z;JeIKF;5toa|qCY9lc7Q(;rMU5bz9tA7@acl>1xOk$FdUKM@U;%p!3uszx z%L(sY?-uPJGsSZ2ziZFu`uJuS=ZDj>(Hj^u4n4B&a^>RQnJ&%lSAlB2 zTh+GPbjoovCEwX{7HD_s0LHV@*2}|vhSgJS(Lv29?26b4DEK#uPAx0d)(DN zY||~%d2V~$nSzH_8?>HhpDr9v651WxAAKIS376?!wmj|(!9(r9(#+F^7Vu!?>0%YQ zbUj@ZYt`~(4xIN5&Nav$6#IS(-lgD1C-`|?q@ZW>h^;iRxWF3f_I$2LpFjyUFZ}%e z4rgX&7gqXqSF>6z;PXtmLJqrUq*&E?=c=Cg&ZOJHM#1H7&s;%S+ZQKc9+7MOPK9!D zp`y!#cv4)#8iLliVg05$UQU}AgjJ*|auk7!FqLD8xoWv}oFPKwqO$e6bMjbH+|<4j zJ=%#I`X^sHztq0M(R{SH_n=+6cc6sA(bb>PW^NVDS$ecc3f|ez7~Jo^UQ>?$nfY;W zAn#SESwt(J$`ehxaJ!bhCJtM6{FH=M;BvU1jC+kK?=DB+t_up-8O$~;N+=p)G=!^- zUVrGD%XbmLOFn78hV z%ZgTE<3$B-GJCJO*8obMi{$%O0*j+x5>=IVI?MWP)Y#$9XCpsqX|I$_$~gBp`Z|v= zn}6&YMTo!C+xK3z-ky;#KHu>v3y$n&e}0tZGqZBcho~YH|vKXPg(Rjr)7tK*CM8k8;VRy;q@lO zRPTSLHvb&dhLG=e^rkGciZPEK^@8Z}E<3`S>n)b%jN7U!sBL!(V#ME-AVX0UD`(EOxyJX>sqF49TTt^pgM*21ISSKgrN1>`|ORkc@6H8iH#fNcf5m z=tmZUV)VYO{&A*Gl(_r_J^Os?KyG1Zon)(EpUXdj9V~C3xO3DEqQ|j)){_MS?t*24 z1WcULuzrG!M2%fEs+m$^wnlLmAr4!#`cxX0ZM@bf(pL~+3EptPdLC_P-fS25FS;yj zfoR>Lh%q=W>s0}h?*jd3l&a%qfAzv$O(|*YK^kp z!_+KtXH=+=!Ro2duAsp@wGaY9tm{IZIE3dF`Jbcu-XA-fg)+8|3=;g-cu^0s)Ll&B z<&;44=ANHg54SIexQfz+8=OHhaMV-SG#qE0FzMU>Ys*!{5@FMjS=T$a>?X0VRo;-j%*p^SvX0syDus0u_s8NF;r zW}66Yc%7+UCoJJtd7gE(ME$EJcYn^^+Z9A5h|lV9ogEz&e-sVyj4}JxfRh@0G-*S( zQ>mwLs#0k6Z2?o>enGj4T5$j#qyttPP{&citW_ve&d&Win$*)~CQyCmMSw?pRiwZe zADSvw6?IAq39hjqOqHsEB{NQ#f{t0UVDIGxma#OyULSdK)9{`3YfRO*}ODy3DZV} zoLL5H?D2%&Ke*;yT}K9Iux~$H2t#X3PhO%nvGPh{;&Bt~o_w??l$Ku-^L#`aa%x?ApJ^15-<>vfwU0KL)ustC*cZg zdffY3y)ls)ebuT@)B`7oZ9oFZn(P{`xYAqazZiukE7B{({2~R)_&ky@+D!efO9Fto z3=3C%djIV`!^ZNnN+GYrN{?0%E$&YTT{0j&osjf=>nYG*y}TPv+exusIezuxCJOO_ z3wUw+d<%g=Df~ZSoV+T06P?-S&cvMfUiN5RNJ?vp8eVtxl-BwuLAgBJ#?8scwXn&I zbRi%P$gjAo68$`Fa%0Gs1xI%*OtT)T5n%HYrQgdwu<3{=sfyadz$LRbHlRJ2cXY$r zzIDQn+w7v=keJbjvvIr79N0@9S}2ZeWK={_EpzV!a&j}+ESmc_O0Q33W*gO6jPXLF zv_86lkvWW=s(#mlKeqU-+dP{)Fr=cE)5P^ZIN-kP@rpoa3&rh|p-3D-V4_+8yD08o zTYXc{l(kQ6yqFUu%eJIViv{TTsWDx3dR_AV^cUW-3Z%^B-|peD}89#A2#NSZJ(a>GbHt;MRWH!t~sZVtt%J!DVEEOKe{Mr z`YG|eQKVPXLNA;FY|~*^wWk+ASvYUgm5KYQRt-VQ;x0rYItL-Y zM&ihWhZ@slfLsF@$kFW$KuaZ*L2`EW&Sb&SMREJ;d*BT)vB@~N0EJ2OF9D+6@V6c_ zY6FN_C39_4)t{D#UVjV}Sjg-t(2o|lUBa=vhI0VYCOLbqleU2b&p$C`8n#K8+Wr(G*9 zkU+qYK#m?1=;wcsJ7S0c7TS1e01IE;32$a0VYC5Z)ab3|10xfWnL2Sq8q!5E65&yB;LjW@pfwB0*#OjT}JlC zQ_nn)l7p8Vzi`ka?PD`@LaFFn8;ag1d#)-AEq}8{a(t>Gi^wvIwV|?j50#+QTbH<8 zZ7f;gLz+O@>gM`^4l1ocK62c7A4Ge7!#&b2)c43P3>py!XVr`PR0%qBYF3&YOZUjK zl#ar~jxEyk({UOkD#`E0s-<)GzqWB2Y*LYg&l=ng1U^_qEw^L#351T$Hw53NFSI%n zn=)u%W3caA{cXY^p>!~B^0hmD5O&y9+#l4UA;%7-*4nEw+oxAfI;BfOl1K;@2r*X| zI-6LuL)c$*j66ca%BA)>CC5G(q>U~a>5X&Gi3#tGt2BmK`eS$8EEZ3zwm(?*B<9~# zl}!rxT99Yo7gh4N%$=`o#1v?{NhNC*F1FK8KO+^;SkQ>BO)NX2OSQ9;Oib0HbO@8e zKhiO)+NH=3vPM!%?oON;{zb&BC1jpQ-7HCtA67gE3e-qWwqh+i+wrkV*%CkwwU}pk zH)y?~jp~}uyOlw&k-A9=P%sLP*O}Y94_}Vkk0|yK_HM6|R9WvFb^{N_f{-WH2r}9C zjkFgI0V?w%jI}ZP#CW_rh`cC^Imz41^#|Yc44-5-n%%~Q$LgPI1#2X8f7Qnr6Kgl< zkny6VcKeekODnI)E1y?ln@WXGdHCo_=3svRCstCO{O)@vaJr@cR{d?E0_(vLSM!h*=;w7re~)FwVB!d=it}27?<*nw*1fYb>$4X-@ZtYV|zd~z@^SIPtC9eA5eNNv~v*=5`JC^`I)PN=fH9ofe$$BH`2z~6*IiwMI>d`7gC=X z2Ird%78M)&xax{cNv=>U>dg6v#!9x3r`ELJQP4)VE!%(;kCw<)me;g?M%y{oeN3+6 zKU$28stS6@xjbdj>H(>2^W2#|S2gi*dgMHoh*13^pr`;5K|_z%CLvDx&E6zDW_s^=#MF}II~0rv8#u&F;2#U z`sHXsNs@azeoK^oo0Db-lu|=Qzw7eZ# z6H+X$62LWZ0Q*88nUm}UXuNkdd7CV{(CsZZu!mGfYS_6`Vw0h6@(_c#TjIHuuP9=0 z)FK4Xqv=Sbj{zr69=&_?IS-y_?`9V$DpY*6BplAJVV-f{#AukrKk4{svY|A82B z9)2~#D^`gi{Xt&QS!Uu*uEz3_=k=aCpfX?WKj^dZz*!DpwkL@F$Z=ldBvEO4rB|t8 z`7;*uXJUlsL(zr*7@pLxL2>xORzcgz&bRj9lUKNY1}%oSWf3O`tIE3=U}=}4pX=2_ zQWgnRTrlSQ)_5>v`(HJo&Gh2nFk8E{6YyiA0DH^Zd9>Fu{9y}Zq&x%Tp?7PS0#lML zun?%hnwk|H5kXZ{Mf+dVNI(R!LwuUuKi>YZ5^SO@?v{cmz5gA&qFPZ5C>;^*L z$S$XZBLHX-RF-(-?&LM{#NCG-tuY1c7Q+OlrIRx;eZU)prlWJ+^@h?gzV-gW;q}t0 zNgtar{>2$uZw0HIHm-|rTol|;PvdqNJ5kg#oGW6L23% zq4Ra@q&1D2g65zgi4NnN=m+X)c-7r@po3;wGOVO4L(e|jb$g=(`3;LE^iP#-J|Rnj zdHg&*yNXq)5zt*pbU#jHCEbh1X+g ztH`GJB^_Zgg=^1<$-yfby;+zJcRuVtQ_-36E=&DQs1%92u6AQeDKk;n937JSpR}_3 z5RXjcvq~;9PEItEaFns6!5}1NJ##I;?piKxO-4N&R;nU?yI-PrAyXTYVH;OurdX>nfIiZZGI< z^YOG2C~qFCsAy|}0q(9nnDrU)^WEd+W=_}k02iLqWG9RC6_vM!i+F6@bBrrV<@9Fn zOzL_e-g1k6a#4Vc+)U56qLww&D@1P%H*p1!*Mww2k<=OM;%YAl#L@&7l46&eeRok< zvSfO7;icgz9*cR40k^^>L1UqidYWTn_0Ykb_}kS6<&Aiz>D9Q`vX}Tr%(NI81!8I1 zZ3i@A+nIpOS@lK6EZX1F+e@0+j_;1p6|xGtQr;ya*3se$XE4I5Gymuz|gWs2AW$~ z<>FXQ0Z3Hh$w}#7xd>d9U50^@#cbETof72MUtptjAPYg~0i=}PcQdui2d`{SX`ov!J2 zYb3%8r^lLrv#Vsc?~#KpT$hSwU#OqHf`5nQB`WAT_|G`Z5JN8jTlsGKvjFakQAa{fIuaUZj#aA)? z{HRfo!a~Cwg$M-DN6eFO8HFCsMzmOc z<9iyLZ-c}|z8pd^$JMx+(}s`t0|$)ZO!rNVu9RT(MT!1vxKWGcZ9P&Q~yC`pg>%D zfQu4P8Dx(Y`+7m}gdIM-#nqT!ku%REUT*m*<9={(X_19n*9ibqMOz&sHFK=_iM=@c z?qG>OZpt<6;^^PI0$@f_T30d3EA}v-<3g3kAl845xSKoBCTqJSxq(E#{9Liye=@9+ z81=BTB1LoE5M`ehU1DK}a{ii_-O8N#GhgSixaBF3Gqd=d4>BGZ@@~C%TzIr=_-;-Y z%`8{6{iJt0Ve1cVa5_3Q7E#QYR35tJ80~^1S}$!L^dG&d(*Z6L`&s{B;k%}rl7&`T z5V^^Tp1}4>8e8OQuL7udz=$l)Z=QWl3E-z5_Gm?(K5Nm~X2Db8?MY(Stt1Gvytkq< zX@{ZJUTwc$fFg2zz;Sg6egrJd5KEqXliOZTWAjO*EH1)z-wVk}UJ?*Abk8u0jrW|N zG6Kh95`@mHV|H}&J?0e^4ZF7vaIVL=hU}FfVYcE);mmX!%Oy51bA;+H zX>*(Ke*KWXB+n(cheNho{~-0$SX5=>Dg=@{N%R403H^bNU;3h&WMOl9onptDH+SHt zn?wptsApo)gnYwUs4Zf9B4Q3jY>|Y`;EPYT(ZxG}~~sMKG0U z&{X`wpTSL5u-+eFgcLIaiPx_ryjfaIeJ7T;ccWYMNQ%730;)~l3OA#|4=-|E+$ljB zVPSV(x-vdTsWaDenV!GN=Yr% zgN3|U9~DQuc5+QA$L|E9X(E~qE8v%3RMG2vB~Od;&(T@u?JwktU~5ipzNxr7<#J6Upb+q_WlZ< zbSdnkJoNgS$l_*K{ss*v>L0?>aa4fL-lzu zE_ZX>r~yi`V27c?=Dv6v$N2RX4W9i)F75S=5L98h}uSJia{2M_x`E@)DP68og-}2s@xG4 zSwOv-)Ih&@PSEB@U<+fZ!h`pSp6IWFv!5jP-P2Tz(y6ClYgx7dc1nU+j%=#hiXz&8 zTd~=q1IFtfNQBizQ3rG23X4*`+2UH)ePRMxCv(cJp1PA}?^S`Wr2oUV#ma zT9Fd_`=_Ksj9HFH+DaSaOjgMWM8`e!OCTayccPY0L@kWt=^X=qw2J47E2cR6#g&dx zu%sk>7{|uLgP9Axyu@{9>9$yhlm3ujpnLG3zl0bL`%1K>>O{rd73rM%Fb=-H60N;T zk=_XM5Zes$&{WdJ^*VYXP)ntJsbOTio7yyb*nzWZuui~syR_A%JIY-_iXpC;xFfjQ zU~GDEKk7>iHDitj!3P5lc6!r(=cyXwR}TvRd2p)TfAz2z<)pvNkaC0bS7K+1p8yP6 zjX%pH_Rw#&DftiS&4i|a(?E@XVBGa>sfJ2I(tA0z3 zV;b#c!%5HiKY2XrZ9A0Kf0yMzN_!aPhPFto4tx_lUaOs5L@O^ATkJjW4}m|nIxIri zwx99sH8qOnp5Vt%Y4^zeRx+#2pE&H>d#E4XJI;^XB2%xKB=eOa^L+774hCL?oBMdH zg*hWaB}d}c8EyorGf`(_%vWN~k?3yc&8S3V(gr%K7*slW*QWYWdixw7XoQogMbhp= z>1YxQPMeBa^s*YWx%Y7G>%LMKRbe6<43TSC@s4Ej62j4lBcom^Z?q8laqu^Kw58W) zumisIeA-*Xf}SEyyAxZa<2XKJXFVMt?VfUzR-BpYl)j{H2Te(wr%0izhl#*a?vee- zFBg;_jS{O8$NqETDmJ`N-5iq;nPDO#MK;biyr1M^oS%Ic*`e?1LDqd7o{kf+EXGIyz zrBMU_9jKgVhamTKJ8@tBQZ=+bL|8N(MXkbb>O2E5=%se?xVJoIG1cm1IN}v1QI~9uya9! ztWod*mgA(3TrMW{IIwga=5WKl)9HAsYl6%Kr<=V>vF4sShO*XJ@GPA9Dqh`SSD>M# zJN277m%{&OK3s09%U)xdBw1)ayk^>?sB~0f|FLv|tXk{`01m6p%idU^vGlBkxGd9P zBGD;VUuiZG3T%C7I+_j)TxW3pSBOb`b8=`P|AnM?YzseI(RaT2kc_CJ;4|;P@<}_a zOP3kgZ{kPGb58{I!UL{MVOZC_KdCpGglz3UKKftsuNWE&0ZeL;8Vhz;tF4f}O3S!_ ze#A1fz0wKj34K;bNwDV)bDJ#JQ>5I0b{I1^E(vUUxxM*YA3XT6^*Vl zKEQdol{*~}j_DakAgU`Elk`-G)YTE`7aW?-X_=kQj|A(zQlX&MhhR3#Q0Ap(a_lGf zAd2nVW%uXV&os}l!W;vC4i$aVm;DS;B)MukRz(F@8Pab=jb{IPI;PuseEW*6wPdnx z=(zrihJVa0TDG+mzTNQ?0T$ZHa!hExxzKHE^I1ip)oGd@sVVi}(`CN^AzxQ8sjh+= zn#U)!NxmlaR%EM`ZTWKbb>SGF^!mhY3_XAhW*8475P|?Ot zxGt*lf&7Wo7`T3?@3hPj@;ps5i6ss7TWywR|5f8UtSkNDN3&@PshtAgE=A9@1}Ge$ z9nr=tu-_~MpQYVx2@siU`lj8H>f-)~yGEF=;|p?qs47ratX&Qb?(-Y2!JBC0*b(zU zion;4kF}0nfTt?QIVZkx{-b474^fin1&uFn_gwd6$52NENqUFR2Lo$w!p5R1;VIDQD;D_G^EX*Rs}j#;8A6U zByE}gYbj9S7Vx~qBtS3tOae=%{_r(aBrDDO3aZqQP=6~50o95qVG1+`uFiN-;5JGKh(CeV1^3oT=MjrrB*XepK!zVv_sv`QSFnylCNTBt5^wPb zmbF<@>*|6QugN%esNa0^=30#yY%iOgJCXkNz?>i?ZiO@$1HrMkdB8 z4GuJ{cQb)BISWiS2n|?5d4wopp_$0zWg1wb-p~~Jr`2MS@lT6$xishps%8s?aY3VP zG;@T@ChLU)u?(La9@m+^@m{rh6UArpYM12r^9if?NScO3FC^6H*HGOmN@jo|6(|O9 z(yG>5_=+b3;3RGN!nq7G>`>zX#cDO~;2B^N;{Kg13UqQ9$}e~gQe71j?Q~hJWRX;7 zW^`56>+Qyzm1e(T0uGG{qAEu-G41g7l>trCjGNXEnsN_umrG+ z@=ybzpy5B4Y^kp<6aI6lGX-%8QG~eE{l8s~S=<>(KxS*8#A_-EB_Oi~$=Vns$k`mD z%;buhb6a#gjZtYro(e?)crWbD@P@B+?5i}1aSPAhFThEFCFyo#=`LT#iR&(sWTHh9 zgjYb?m=hHQs=k2{m6+2uQ0ogCf`O*)IInNV@TPLD71^f zV?QXDqx&XEcjg;{rRO)n64mug zfqGU&b8(#+akdc)v|@+Jpu&V#;HCH7p>xv{KVf~gh@aU0wiOp z>9wS2k1Glwi`eGCMtJ&~#G7G#f(6LdK}-wOG1wxpwHDHJubFD)2m)2>#e3vpLNdd$ z=!#yfIB0#4+Ro(4@(gPln|pppOO%@;ZT-F*V#4XFmcz4=tEM3vHz=JAMo zKNjn$^`Wh=s`7RIhyzo-{j}2T8!(~CQ_&|@n@^dfb*d55+B=nfs~^(3i{fl%U)LtH z+8tL-+XTk{AI(?u>{O2@ZRC|Exhd@8-9@Q({2`=@$F#2nO+%DOObaAwv9&j&R+m_3 zMv6Tb7{P5J%C(m)<0OJJClFY>m8jJm;h^TzN~6ku>Vqmk(^&7czXqq`3m%qcXTowH zd(_;V)NbfG^1o%ODgZM38K^P?N4#POX-EbfV_#0V_XS1BDoq>#@}FmMfExR6$@qV` zt#SmsHcN+qdsnR*^xK+;K+Uf(_6mS}{B$UVk4Ri4j>E5IUC1{@T(rpOPC9BwwG=KH z7{0XDqjPPv1oO>we2p0n2vsrHk1kw{UY-;Q0B*U17NdD9IADJNA}4#J3C3x#FU2pv zPc{+NdE$;AGNINiDk@#>Jvv=gTeMQEH0=#=Me6%qhncNdTl-v4R9b6%kTdInS^N;p zSUYH0L|iIXyto9HJ)`I$Ut6nKW@5YQuc&6Ujmn;DVw>*$dP@e}YPr4MqLP_hzL70= zO>X(n_faQZ!JPJHz=XOzNY?8+IVjmjt+a0Zj5ted#-U`XbiE#-L3FD7jMyni8KbNG zjp%qJu=p%mNQT%x@<+&A05O-8NK4Fqvx_0EJkJgkVO@&YIO zZLOaoGBK6O$L|~?L}%wh^bz4T9aX7TACtE{ll0rR2vEKYqM40 z4*G#HZuUkqtb&Oo>h$_uID$0@0ww z^r!ZdKFgxI?!l)Y?K4=aY$kqKY-ksF2njKiHm^Fh*`Aa*X>{VR&doA4-* zc_zlC*XA!swYhhP<3uYr@*ptR@>2&0XaUu_eQawp4TMVk38C_K}9eI_K+zji73R( z^hfcP1Tpm(hNAQvXWAjHH^Q}0=PK)({!YmFXxgyLvv&LySAhL9^|t+fm&NaF{!Sc1 zOzyP;nabYTn)LITT21JqmJ$j`xT8f7Ea5+2vFMQ~ulK_M z0g1ed+*yF3MHFUsWKKMP86ONfyb~*Q(+A0X96U9Q7L-?R7?2>wwk}_zH1>Nn_7%p| zjq%(o8{w4zJ_P^)9|1sHxun(K4CT#Qgp;>a5Z_0sdO&)eQ6sIX= z!rEU%r*<8rQe#*vtxEq{#x4!!9vsyv#EMqPLx0ZwSKW(r>e=xm1E?)bQzJ=+Eo!Bb zOr{a2T57-pl+vdXui~x)9_YX_Ae6VL8i2!^?A3EA7HAzQq?1!S+t$M^z7^~f_CnY` zfc8HSC|-V$cZqoFAiq zI~7)tz_r%_&hubCq_2NP8l3~Ky5HQSD$eA}SOy>u!x5PpxKz-VVLs^uGN~k+to*8E zCR4suw?(9$y-AT`VtswrR7#tymMdRgPS^DRBJL~0>Rghoakt>^9^BpC3GN=;6WrY$ zg1ZEFcMBQ_?he7-{o9ap?##V&XYSAM7w=nLUA5Ngs@^<2>~5*5v*zDtXrEAMJff=4 zIJbiNl|j>) z#7rAomo&>HPWPp59-=$?1%7j|Mh5r^XDUv!cK4VzNeGq=ErK#~N1va{q(iUNQgLr_=DShnhn^GDAv7%cscn>HXo&{N3t zy0LXw^%<58FjO$%j~-K~d$qE2b{)UKaik0R7CO+I0626}%ovC7zA@IU(VYilw9%4Z;+rdg3QyHoLI9u0uejp9d?IJtvVYco_-L-46 zu@IbiLUQiSWfx8Zz#z2xjO=ZFX90R)46=&>w5R&fg8_wx!3IG2K3ib!WwEZ${;wAc zLs@(6yLSlE06EBh^n81h!xykxeov}q07e~u`(}3!Euszt(*Kbdz^A$Bdm6H(pNP^M zM@IAxQgs)qxfXyRAXNEP-ETA1@8bI20Cx|`Vf>xmqK0k8`HDxV>dhT7pL|w%tzGF8 ziX}kxcjz{Deu4DY<(w1iV6b|IG#-+hJ<_hf0CoEI{8pe6vTvNekjr^6aZP% z0x<6{6o9bYIuUf$sWDMQm`e{I_&8GMKu7s@Bg_y8< zaZUewDuBB0E)P)&^Be%DzZGkFBiw}}zsC;fMdZK8W_SO|{U(9{KxW`>)r?>ND2ARj&llBL8bK0r4&0 zBz@~afa(B%f2&^kcWeG-)_$uu)*n594eqVp-dO=Gf7W*_wuby~p`H+WQ~!z8oBhw+ zC|Es|f2i}$=P%LzjX55$rWFN%0>vH({GV|Cs*V3-elL?Zf&NDMZ@~Yn`A<@SG;i(u zS0VhfV*lRkKnvhC$3gf1At|5<{*8|R!7N>@^+v|0K044AP!?pIpQHe_L@?CaZ@-}x zM^XT2*~jW{TDTY;Wbf;{7~Q@M=sen?*iV3(c{XdNje=c!t9i>}KtFZ6&)6AP{qY2} z?tje!Jg3upNIT>wysLTU#e8k&ZM_KS3u(aGRNw$UCbS{~ZU0o57YYypjt^pAe|3;lZ={Ri`VEBr4s{@N!0C%b<(zwMasi}a7){SWN^uG=>)-Z!oP z67~ON_fMqX_pE=c&Hu&judaO8qF{O>$!7ynux~lIH}XE7(C{QJfzcaTWYiOBD!F&L zO?8&N)SobJ8ImcIb9Bep#B+)Zig?JA0WgT$4j8O_8w?%*3%JKWhq=Em;^r*NCpb!%KJ2p_i1)502o$~qg#!r5dc`w`R@tvH(1_cRsjZ` zhPH|1j9yr}&C&s394i1}v;kp;pxfR(kt;FZpoF}~lN8=uhf{_td{y-zK}3O}%05I{mR+ zUA5gU_a3ABojj6PQ$J-}q6s?sE;ak_BP}Me%}CD2q=?Hz9LF14ti1Cd>8=mNIgM7Y zlV2B4eEx4$cYq*+08hZ$u(7}E*#1UF(&n9Dw)?v}^MBMieNzY8hkw}+Y;Bkcb_p5; zRvI}&>-bGZk9WtjKaLk~jze2nZ%TlTy@y5g!G6#{CmDMLU|5@-|SL{kHa4g|_7Ao20@) z`xpQs%rf44`Va3f5)PjY@MOFtK6NJ#iDBVrZmK@kJ$_V6z!0f(S{M0?V< z6oH1IuME#by;rb;(??eDe~(Kz{KHPlsnyGs{1RjE5J(u8Uj7z*kl|SfNn-4uVh^PR z{vC%D&;9hMXc`lIcVeiTekvzp%fD zmmH%h`y2T`MJMF!y$S||fASU@!>sqEgfSF{xkQMe#;`Y#AXv-7EQArs(-or&GMVt| zV0{KLZU~GlB(Qt{AGCtSk>#Jgf{j@~XG`@e+s7cRrL|&tR-d8=`fT}t^>4-mK5NaJ zJyaL!`HVJHO=N=v3~{U zvykfbXWqY#{SV-^g?j7Wml{*_0{lsZ-dpJ}Z;zj;DhAk_J1?_o%79V|_6gR0zp#z; zz{F^T9iB&?*wzBf0QhTW52gSj?|`!Y7Rmc>ZTiA%~`$x>N z{VeUTmoE@KYh>d9<_}9Za5%EB0D*yOS)czr5!SW^ue`_W(z_fOzrDPFaBIWQ`g6v} z`@s-jJ}t>DGax-D4$AusKE!FUOVtDztL+#(DoCx#Zd%dAan$1pst}zM9gm-rWmHv} zd}Ksq=3>rV!lLk~u^{38SeGXnpPT*zM+{_}XU`?>YnWH8ntk`AMy&S%?M;YX5@x}1 z{f=szs-gXu5aqP9e<%T$PAzKvY!u^RmE7H6pQgo3u6 zC97?gDIFs>T&v7C_h*ObZ0s?Ai z1Oh_+bMA|ynSq0evC>64gO#1eCdy`wEvt<0 z$-qOaMBwvf!jg*hy!jQl7gn^9=D8EUv5CN0-pvB(Z$!V|^Wfw2xx@w8UsbMMRW8~h z@@NhSVp_jkFI|>B_dgyJ@zzr62Xkz`KG5#&+rD1zzCLz(=kMPGuZit0gc$wwxf%4k%d|cNbFi4=0nz^~H{lZO-jz8?J zUD=!c)Tol2-UvK0WQ#~Ra#JabJRtt_Zq3d!q;~y~i!aF=GjPK7QS`E-Y%_AxG}AV< zrP#dUGiK`ULDGKxh>l5-PloHm4(92mGWSQfRvXu=vy?<`Ge)Ib-YKRbYUZ=e7(>nl z`>*SI_0g}NOIidAv0*|5`SmuBJU+X>tbN&S&TqAZ(g{`)?=3HH1rHxw zQpj_^-ub++sE?3jkbT#s$Tt>o|heXeKh1u*i#}U(;@#~izX_SpVGeR7c?@T9D z-}sPPmTH34W+hHSo&Ks7Sny!55Vf@@=1Nosl*im>(A)j1REo0c7vi2qGvZGjTda;( z%aPf~UV4yNAcNi+Pc)^ZpscoX83`rI3bq_E?9EH{>Z8Ztfhr13y7y1l_5 z_JcHCa%RCM-*6DlA=J~oJi|$31p8%`UJDo2^eIF1fdhUuZy_U56W-7#=}UnGM1_GL zys-a7ZErOWA`0I=+XqS$T)2Sz#eu#SF)LY%W`sSJ1317zNR!Q zHAJJ?3iiEDFPEIvjO~phW^0;N)6Ga_7QMOWTzaPlk|a~VUZ;MZ?wFrk#4e<@fW3(hi$sBj}Y6DC#?4|c}=w;b@ zp)~qA%q5HVZUH_CmqobyfL2ewytLj$FKf`)BA5YQ;~UwoWt+X#>kCU}n(mU94Z~r* zXyF6`;`s;5VzM;2wy;P7^UDGmpCS8JSc_QO#&Ol=a_B~W1KEx!g9GMXMViB}i|MDC zm)~p4PeaT4p@a1nd=ibIYdue2TKL+&X4d_X-CD%_*1BK)G`JLe*Mo8_onDrmMFf7WI@KVD$li9YiBl>V~b>nF2=l?*fn%iLjYDdHQMQ)Xg_Z-ZFv7ic6%D17RLKXw1j ztY>;tLxbr(n+t^5sxJwI_Yz9CquY`;WWs=5(Y_erA{NP^c{zm*9X;#TDQap;R>T&+ zI4~oxhtnH@83P=>8Ngei9E!tM)If-YLwv;Dx65oByjvP4di;`Poz-YNA|3sK$I!J8 z9S&l3vi@;$Hm&pKH_73axpi#H^wtcuhX^teD?GR#9DTdufES+5XpyWd`dZFv{gIvO zutXoS_az9phi8&L5f~rbd_Zt)9D4n?Tb+lo;L6q_v>b2@2|KQHk>;4M7g)5JH(9)| z@%b6}h#TUA>*dD=uL*;z9<7V2&t}t4d_$5y>Fna?S+*GtiVZ%N?V{*K%8w5fd%Bt{ zDmjX>YloyDv+-vw67-T{FV^yf7Ik=^wIQ5>El?Cp&O}77ELpx@O}n%w>;e-|Y{I(y zw0lWta}6UmXVX2IuTe~j;lASyKoEMlCsK$XGEW!tPhoV);1coRrWtztAViNau1wTf zI?J}-UYYJ?D$-}`w@i*x1Ai4F%A-OY&Uq<*dHYRCQ}4rVspCeKSgmza80c6!LD6No z%KLOoD zN_$o<*9ZSJmm1X!65Z)#h22z_+#I(bVIwcHe0*pl%^>W@sJ2J1xGl`93Lm-W=zNex z=RFO{skj6y)wsl-Mj1Mh2-)&Pyp0;QmSrz(M|4+ZA{vT#0A}DY7R)Z@sd@HkXKk~& z;=w_gIqeJf5ywmFWoFa~)VgK-sdu~+d|F3-YN8p*kzI9Woy??t#6R<6SMbrb^^s7l zB6OLb=Z@BcoicdiDI1IQvn3t>^23rBo3|@b#~^ABLtAVwNU^=3V*yYV)nf>DeBR~o zFiJ}>P?fLXAUBVU(zZn+Q;UV{#aPSD(Mg_CiZR|11{hSI!}rR`W<9Uu)mhiy_jmq- zX7Gx1a1Nl3-C>F9>?b>?;qgZBs#x|enGKwi3q+5ZKM3a#SB+gKPfN!x_c$&nYSj$q z1)Yz8WaVi-2sYN>H09D?do2#q%E5Jg!w)}zhE>%-rV3peVzVSk8;`CG=ZqaVL#iTL zZX(^b9WFlGRbp9$GtHt$K_0r+hzp<^iS79m=Tw)Xed}7q?M`*xstFvIXqD83T%3OR zgnN|c6DxNm=64(fg~??VSl>0Lh8dyCn?g2s&sbR=YRVI;l%p$a{AIe0^XqMUHzUXK zqEQb{Kt6O;GjtfG#uR%XJclz5Xd0NBtU=T4Aeo+UMg9RpWqU^B<%$cNfT#|M^jfAR;2O|i<`%xMY61_J2 z?&s^{9xSE{w19e%hF%4|kYWn#kQ<-wTedLfpk(6CaQm>Jl=6F`T83A_^7L2A#_2+I zhUjc)SBR}VMKtO3rHCHnDKt6Zy@Tx?vmrd%_z=gnOy)xC4W|rd=e^)0G@Axy=fCR; z*f$>Cq0~#d@YP&?+d46-J$KtNSxqtE?dIb+vmQn`8b&6gu;?~z-FKEH4TjPmkE0nB zeewx_b7168_A<1M+`uiYGl`m8ttbmGKZ+y}W{Vy_$|arOotkoKx}v|{c{FW~r@(jW zB~=+PO2WFL&$~Cjh($@y=qD%xa=rt&>KE4@UN!+f4FqyOo*|MF@zuOF@&7ML{^-I_mOHS~;_mWcoB)H| z=4BFZb+2MG)udT@=A@;qNtT`j$mf*fEkUTYYdeME+ooN4@+B-wI_ChHdeW}lDOeCl zo5e7mv9QSH(}#{AL~q z=ubxXlQ~+Hx*osoDN_oRR`=r79{DD0!)hJeq1 z-s6h%gTI(u+s{of9#`2^mBrGokcM1Z1}t>y&h_Q{tI zsP$JXz*BcB@4g~&kn4~}azL(}vj=_r!C=`?z#!>AaARrvS-OEx|50OFUz}9Q=yt$Z zB85DBVsi4ZLG|SkjFC53kSmA41oEV9m)32~9qc#O4O~^)qS#qWuxGz(`s2M@@6_^; z`bX2Q6H)OaOk#Q54Jfnq^Dz1 zw1we7Pb~SZVn1aKe)$}~a8xbBAfeZHNhQ}E8$O(ZL>iwm>A( zcd3SpH>1iU=vX6P-@bz-$^qA>ZM>pkmhtymYahhd{vU8zP`&Bv>f_$7E?YS(-VN5} z(qq=$f<}%>#N<8r0YYJgtZMGK8pfKm_JnZ+c2>Z2v7eGn#e^?|%bAddcdDWV=qo|b zwx;B-$Z?&&IDW6kORWVf`JtF)VjCDor5!_YTs`O5LK@p?{N!_mCkNAKk?H*GTg(b+ zvbLp*I+9Do%}iFDDZUa~j0Gm)ezr>_@f-j=V_$RLftuoWJfzVu)J2#I1XuSbicFC48LaJ=DZ|+z0KI7)T8C$YR22X0|gNy0En>6^$^t5ZDs(R>%@@B zS%Ta!&S=+Qm`-AWvq9+6ZEI2a@ay31+7zfisd9$*!TxF=t{dtE68!TPHl&o&{I9E| zHJe|!&RsyEaG|JVTx#0fiLZ~{z4M0JP zi9b?hbUPaDk?UD1x!oRlO^BAzH;lF|!|uv#xT9^BNJ0XRIJ5ffuoLJCXNbx4-c zUF&gOFE1f>9pkiD2C8PVFxiOi;LMB7n)pCOMar@n#z$V_FBel2XI>G^AK(x;qdx1~ z3Ji&-AAAv4&1zD<%M|aW;k0(#xpnl8FjoKOp(k7wisy}x(YIPRd~Bzy2``*i^cX%x zg|dMrW>MySZUI_afdUDNgIqQC?9#518@hHwannQ84P*y5P$?jy&~uI2w0hp@{=-4U z31B>&P0P`LP>p@b>hK)crel&xw(eUBqboJV-U-x?W2nA>EtjxT zF8=wn1AnLX+wfFMGuj)7zGk5U)LSuFmmk=YR;(NsgE{kPKSAe|?hG3adB-8hWhDdM zkA`bpb0n}{^@nx8c<;lBvu$Y5`Y?ZE7O}t}ljCirt>v8yoxg>_FpVqkQK!0^T{d&M zWIUJDniIi9+K}RadEGO)%jG0b#7y5ATtIILznc(~ z!aA8Jhkf4;h~ju<#<8Mq)JuL1ey#te)+nakQ_NvDZsXviLh1K$Zno@3gap!{$bBQm z&=Tvcl52>U6{m6>f@l+oCb^G0$)cpUzolX!syT*+AXQr)N#P?W#{oM=#_x2y^;;q* zwD}uG#a0ITsNXaA$H0->@eI=ajIno0#{-MH-uehx=6=sg+bRc)JO=eB*V~Ox_zPz3 zt&(9zu&!5__Js}K-PSOpQ$cHt{820=dy<+Sv-vV!nf#m|WL&5(cn)!!1KPK!J!m_b zC)}C+4@Ac@`xF(`z^%rB*p16RaALEF_XT^<%Tf6hHY00_ugU&w&=R4r*xZ)meyQ^m zb^0|!(0a2>(X=dL=11Eq>fz$Z3r-nfS}wPgujVbr*(>U|sea&ES|=05YI`t#Rq_+4 z;(#~`blW;{jeX@@;1FRjHV9w3nm0%bf3SlBIQ{j}w`7iGpfa3sXbS!wV(Ch$&*khp zYWBLPw+G9^SLAk*9}v_;Bq?dst-qY$O8ILg5;V1ILi?J{Hzufl5Tw1p;(8fkSwOyM znA&}EkOeOIMHrS~K)0-i}4kCFjafH?sqWS&w4+kO&7)OfQ?d1eFbE3 zr`QNsgG0pO&zk2>Dz=+1{W>rkB4 zVXGVi#By=dPpfq;?ngu`K~3yKGs$LN?2rxo*_YSpaubvmn=~`@z@hH>4 z9L`w7g;4TJ2AbMMmCq0{3nPjyj2f5jtcHDQ|N($6N! zt0*;3qQdDFRks;*IXOu6XrbiHn>c`0&o1rd7zyZRg-e^YLefhf9F;cRQ6F5CRz2a$ zBu9got5u*DxB-XJxHTQ7%+Is-E&MwoP&T+pm4m|Yw~A#*&;mlxGkeyBVNc;{$hfjz zc6%@B1_6PH@}Yb@R7T#Egu6nD0TGtL*hNTX&B==Fz|=b67D@IKuySqqR1&T1!_C}| zGT=ZOE2?sjzM_D7%GA7lF1zC8L^FmDiqf4vFH^YXcOYawlr*7lCjdlJV?S}jSJ-ff zWb|YBaKJE$f}SPEh_KwH3d0*u_*gYQ!NQ^>#e&Ut5j|11_#q%S3;Ac~(rQ7P8Gd?H z^Z=fV?M7@5N zU}V)@kMmbI6L9##!2XdIznvarvNBd{g#e#|J(yL>dWhWa3B0glQP42@p?r}$kvi)5 zJCI2d6V#IYjlyiJmidR=T^A8GA$F58w3ljf6oRSS9XGmkK?`yQh-FMQE*)t{G8^mj zz*7ldxHNGnQ&QMI#jl}TWG#N;(nAm~v7kDlh&jSOW)*~js^f=`BdOocL1GVqzcaFsDOu_oHuIIGo`L!Sd7 zIGmA7KZBqPICJT+bd@KTX|n)5-qJBcMzQp2RRI@R*)pb7N-`Ipe9lwU|T7#$I~bTUmi%4e$XS# zBJ}0s2u+m~#-c$&NSD2I5CvtC71I&6avJ#zt|JC6I`k!QC&9ejTsC%+vqjpu&~eeqP*3`Q~k86nwgB%L4dAhhn9{R8K7b6)3a+-BNy{yEiWE2_8@3@I6#c zacV8Zo#OLvHiCf)Z4AR)sRy$bB~J8TS_|^kPQ9OAAyU-GRVS;|F-l5Re`@F}?x;r< zZ&RtCNR}qO{G9SO?ro*#&jqUA8>pVP9Iy>gQ=l!48*ULnn5j`5h2%3Plc%kX8-qAe zRT)k$Exe2@@*?vTv1xD^Yfvo5sL+dqj&eJ09EJp_$_s?^H1%9m zpMAk7$yM=@cxjiN!Bz}GWoB)`3%t{BBo5V)TJyD{@wJBH9(g1x3bRZ4dBMkyvKQW@ zUDZbkm$ckZ2%dqSukJMY;neqmyg?<^GWozNoq~oiQCF3FH9f(od_LLC7kD#V>Kg>; zOuyA0pf?ANcGTzbi}Rz0RbRGV)n}gfoa#>@t1GvQOR45m=1rP5OTMmnY{8VFaD`}l z)zewdxP*+*BpwPKbbLanUek;;g28)A)05Cs9)_44PBbEtRHq$(d9HrRM3hrjjxOlp z+EeSE(#v6X3NCfc`2iMCCBa7d6zM&yLW?uMUUG9!%ld+P$vFMu;meP9;W!me{nWi! zt)fm2kD>B$v;kz9!!dQ|2|-q0>6K_;j7rqbM+flNJ80eO^y*#} zPV})>WrGagQMVmiJDqZ5X4ckJzQJ}i!@^3H0soTuOWRIx(-w zux~jamPJSSUaQ;KfroMqH%Eg~s1aI|eYkvvlzSMnXs1s~YD*SzbbeGIYKzLIw2SK>;t?j$Z)0+Hge3;guEN7Fm6N;3B%TjAOMJkzC!_TZf{?7gEtGVdq? zHcEp#Nv*!TtkRf{m{8(FOi(qmL8M&4hM3K8XYGE9Ym{*GgwfVHq)l_^eFhg-eF`F( zi8YE4!Yo|PP3?}!@uT>-+P#ypI(Ed(6&~Hp6+l`inmGG%Gni9$6Y&K#_z45@jyQy` zjb!wiP=zv5@t*F8iWaBA!2>~lV`1Ssdu99Nrm8kGPxu9E4iRpiwld_kp}|Ae?9qA8=V2_A zH37jUq*6u0p^Y;y)Q0Jl0aFwC25P}psKo8xfNAc0K{|JK)qBnr6uRxmc1QZH;o8$g z(cwC1l#o)`-*+#ZDd;mu;bUYMb7thz3Cc&>i7^sVd(9SK2i+r`;Ec4IaIh-gY#bYm z#6hnfs$*qJBV&64N~m1f_^L1#W{Oj)XUL3QC2kMNhU6H3TmAbmviwBhu2 zX|+6J=cZVGYuKb#BK(Tzoohs+WUV%#+puAtem$n4g<%b)GBJ$4z5Z6HMD8EOAU}8y ztlJ{X;`z|S?Ie(Ci=kwP$MB(4VObl0XA?+s!B3!^XYi8fM@j<~Z8HdB>-O%c`ViEu zjtZaEm$#6WBEyo^B~1ymGln^xPt1m1Hc%_Lqp~U49Gop6OpTdq4H~z}R((|KY?hKw z=H4}9(2}r^hcC~pPZw<*T^>fBa7D6>>>d1DZ-3Dg#9ft$Lm|^{qJ{#B*&i)Va#cnG z*`nWi{U)K+FPM~7@s7KR@aag8p`oUzw(-L*r^A%uyBCs-;Xzk$X(?D@TKXc5QZE9WUQ#4hR!G^2*%LQ8| zwWbowE}0Yfem^2JQFcT;n}rgrhOD;-xLB(TZDQms5W*;T($H+;8Bhx~&IOuuCi)I{ zt`U>l3Zi)z#StDH>ho>Tk#2VM)eufJG3esE4+)+ku_dxBg!!UU$hgW3rXNHpI&QaGuaU9! zmXdc-pOWlzftiail#ED`*}`Wg{$jHhVSxygK&E-`m7d*=PhLPD2}O+|XoGYJVQnM6 z4XyM9!r|%`1$St1{P0&B+W&AetBS!MvuChBTX+|sOJr?rr;Sy_KQy$SWR%l@9oK2B zN(mowKgpd^9_g>eZAPSLcNM6k;84;|rb_fc?cL4Ju}E!c2F`&+)ao|G-jqbzkuwD@ z$iP=XH{1|HG-!T?KDL%e?{UtENnRL3zFO!1lqDhGJv-b$zk3x7L$#3eo{P(-vAuTU9u)p+yXn zww-CPV}%lrF%}>v#fFh8{5Tt|wEe{w9Cu_L&7%h+j*({oIBV}`X_5e$K#djL5ka;l z82AWC3>iE)y#3d29=`r+4s9S^Xt@#{^Q+V8P`K3Q`;<=tmBkHqIJkS%ADU=wLNz!v z1&Ti&g~54(g>9aG%6x1PqgNNqAPQkp*E9!mUReKyO=Op_%izr6@DVFLtx1neX%}Zt zIzTg-yG)^k03_BNlp0+ClN9M>u?seRE8peX_MQkHoYyWeqehhwH$Rn{!UiIgY?4tS zY_{iG+*}RGSxQ7T*_!jjkO+AWXpp2z1jP8R`3!q+y~jbSVo-40cbzHb1A@Off_n;V%e06mdcdSkoEmKSaz!%M>nzcwXc91>a;UZ8sFh_r z2$}1I1{mAm=wV8!80+R?F)S&j(F~!gbM-!pWH`w{Z%JRl!GtjGB|3_bHTiB#6oqMmgWEgEfP@%=VYPKLNP8kOssOhl?@?I= z<09pZOgnT>i2)IwgB#cYH6wF_c~1dT|N3gT@j=qYUudQeaQ$cyI!Ij4N@A>t%XefK ze=&_FJedxck8O0J+A9&+#(-OG&q9akFcQf`VC#i9f42!+4m7IzfX@|yqazu)5GIa- zV5sVXFy%ra&ePf72T=Hi`x~n!R~8*!A+QUGiHsrBG`p@NBY>>t3tGb}K;zI?F9<+f zk!v(VjWIGx_4RDU_cQiD#qo-0V4-`}a(jYtdvQ!89r1(=l+2@sD0Sa3{B?FJfp_N&lLh}RIl zbK~0uiB~D2fZmRuVpROz+{wVptXf$7r6{YY$R^PjK7~u4Pz4nVmVVQ|b_j!rl1sef zyD`Mf19K7rLJ^il(6dGTDv;s;Z|a8I-!taI`nzo)O_bv)!qDTE0*L%*ix-1_A_y*! zOn>g=6_Y+Gj3Rx~GitFMu0S1ENAcis@J#mxo1S$W_bV0Q(=E3btfCnvxbyik4njJ$ zMRsN15;3HcBqlXqaVU9@Fef)94{yyp*h@Z#^p>r|g(a$}CMY!Ob*S_Gpesm`WO zZ`-$IP?6Bae}x1SdE)9{p^Zw+<%Te?862e2!i=w+a+(w+K$-@z*OUCtwF@dBwCfpj z&(u{%Xu-;^${oAp3Q`s`ZEN*W7!#&Kp4rT`L!3YpXHrO&P-=IKroe4*LEXU(b8AGf zDEOX0D{6nIoi4xWQlpA$%ajmi-)<<4RmtPy%fK6yLkJdkZR?UqI;ePygXNe&+4tP^ z_;GoFia+Oy(O77d37_6;s0nR=VoI)!vyv-y@8>Si&^2bcS376_`8&S~1 zdX&@nA|XJ?!7R=!+Nnx=yP7=lp||ZoNg&gTbjT`hC%16JbkYB8p><+LeQ?E)cZ5bpZ357C9 z=itME;M(?Jj{BxJemC%kZ+S!!>vX{dX1j`jR|^7JkRl1w6DD@J^NC$&Dxv&Hz&1~M z1RpIbc*p@bWVkQV5Z{tV{n^)9kp!IqzH#SkKg@VfQ5OOaLX8;iw+%a}N3U@~2xz&R zRyb4AF98?Sm*+vj&9h4aJY&Y|>zxM%`RwxnNU!0XfPaY7O~kaVl~0ff9uHyv<)aRS zme?(=F!zevJp$g+)2~bePd~1AvwhD(}o;u0^5?V&Sj!WA8OE1ouwOV24UlJGE$ zts)2Ld^fAC0p*NdtL5-JjcOZzu68~r@^Ig3#WV&=-w?~&Y=pW;7WBJH7l(4Oa}}%p zzNs^T%EH|PDe{#*AOR)~I3+-mMjuCP#FxVDbwIHp$Um;D6JCMk*90otVGjaE-;fs1 z-hJpAwe=4zh~R@Jt}4Q4AWzD$JOx?Y2F_!`SQoR_c|rvw5K4GLV7}wzz)}qA%Nh_d z-Lp(oxqzN$gZbI+hVADHJ=+-F-F=PwdGM#)*YP3#jAM3BBx`UmJ#xBt3?7I zsE`0~KWf3jpiVyL@3PTkZ7L2?`Y<4j{_M64m-@h|?zNbH9T72M&%xwlId)w!#C-u^ z;=A>3x~I@zknw?ih6UwXv*8|tRFXr+_xfp^K$91qbP+lPS0@7M`PuSQj$Oi{EDl8w14h+M?e#P)CDmVdV_SV~B{k~euFqj)jjQ=YV($0^b|`#`0peI&q~M_vaR z_#m)FxZ~9hNetdbkQDG?!}%f40BhbHtN~qnDmlmt{kc0ct;PxxD8t>Q;iKSl&Y{X# zBCm06wkYFDG! zoP;EH502f`UTX6OmPOb5%Vt4D#rcB*>mK4qV9JA!p8!{m=dG@C4`3X+r)GZ(0b%5S zs0hbv^bmNpitJ4vRrbb(tf<7`zNSSfH`Ed_hbK}ulTHxhAxi@M9u;;1L?b?8Noilh z3dFP$Q97O%<_oguv z@hpzmbS(T)fi-_ta_CyzuabkyaEoDOob3Ep-o7qfGbZ;CDSA4OtHlO*5;S-n__bRF z9+mEXFv+-?>73f^1+Pu(h$uYwWLjW)mK{7P44ZV|SybEB2@t8NHwySnF%4$i25N=+NsZoP2U?7O0VI*A`B_^-j)MU< zjwp%ICr0JVh;r=8RaIGACo&ZJ*Yp4-GjxZuN>^2pG+lfZ8HA553W%~k>)Go&wXjz* zQoo%xec&J_bi6sq6S@V>ai)o&5LZPVFnbL{e}6!R+F1pn+x5%0BR2AT9W3cV-vI=&Ro#y zIps57^-uLW2dH@~y}v4jxX^;MYatmHq}?8{mGhm$rRQ+`KE!wq_g^VJIYm3u3E#6( z>mF{URI-(H{GG0Y+SDkmUGtv&fT7<#y=nLeXP}ARa-SNK)$bvX9^$LgpxLax(YxuWJ=wZhF+Y43{x&vgwI{d8 z-$66L<$5!M{AgC^Z#phyyWe%Q*1g`asazu78?M`E&k$llRrs~O5E-i>(AA9ED+>+L zmG2>fu9MZOmvQuLJSa?;$R?;8g^IU3N?OB6w_Cx3X}u@Dmwr`N8Xh?9^nAS8y1pKmlP7q+d-gtkx!Y-P z_r87R*L!_#f11;~e01)7rhK)39(jIvS*d(|e%ZS9etur!e^ta-^M1HH)aqVarMA#n zcxW$sx!<=T;D5T`-wM`SN*X^*+IbFcI5W|5ah|5>_zliV0JDV9ln&uh3gtruRG|fA zrv=o73zYK%xNyqH77h3e8)%LesEHPCjBuKx>!LpMDQt}zWS#bJS9cD7g)N|wekbI! za$+Dpko6XDphj>Y4+w$p_CAeoA@I-ap?wa~ftJw`y2Q=OFaTj5&AS@IfH1i(F8_GL zMPB=1L*8+~->H585*GK;Z3J3x0P@MH)&<1QDgp*%)VGTJ3JYWd3xt^lW`UcnBZo2@ z=YzSFe=Jz;^%(5ss<&-}aVTzuT6U4Z&nWMb&0|!FDUXUzH9k+PzC$&Rh_+RH5dlAS zv);Vjd=WwGuabH3WXy<9J3h~9jrb|7WS;%aEgEC%{vx7$>V}X^KH1a?9}sQVG~ztQ z_0#RI1ap;nUipK})%5C1|H7m@{6^S%#Gk3ELCH=zFZ+==-2Ao{lH2(Zxv?Z8-~HW` z2F9W@G?6)r1I;e#n7sLlgWY-u#^kf!Ord5#^-SZEI@4)_BllR!(!{1#c@5B~1FldD zWH%p@?mMx@bQlzzS*rty0e@8vUGrf|=?vo-b-8i1qg*k!!gMv5W& z<9F+x%OUUGsYhBOpLV>fX_GE960_WOM2yq#!;yZh_qz})4_=)X~aNEGt@hO1@41 zz79qI?WU@m#IuSF>j$C@;8%>cse+{5Sc3gp<*tMLO=;2Q?W+ihIhiSuf;pe4@)9D3 ze4aPZbQVln_C*d1xxyu;bJ-)6l`|oE(~>vE_9ouQjU~Bm^WO~)tGa;+lhT;4Gjl=> z5E_9&R?(nkA6mhV(^PuV3&lNEoDy^8^jnWyUw@t`3)Xk1ES3KApcI{KoG+U+IUO%_ zesxiBO$eXR-^gfC2u!D|1z0@pP<*9ipw`!vwpD#pXl88LBX4MN=(Zux6Z(k;Ga%i8 znmg246x|uK3uQ5sJyZ;yk)}uY)7312J##{Y)WeEPe^NIODMi~)`#hm|Py>XM8&e3W zu_qd_qy>|YH$f4Unt`@occ{K*!*ep=zQ1EGwavA-w_C!FZ)v_2mMJu`j2l(CIq8H_ zAb<5Fz5{9~9;*`WX)=pt$eW?j3Axes>6i0{4s^_gtuBBilLmqLRwjzBR&9PKx*XS7 zdg4eo^kJPcKxs5k44Z-mIpV@Yxa2p;(plb*m4R?zzY!Yn`9Em5*2&uM8yN{w> zoB2GbpnT?#-dk50H~kn$=n&}|fU>-)W>qsdv=8dIktcI#c(DxEDDJNQYNlbpH40LA6mWY2Ohck2tps4!qJZ@?C&2nfz3-o} z8iwA=9r>v(fWSl8oHhPneakDLErS7R)HBS=f1oA%OPQ5ZnUznEs*tjogk$(&!Wn=t z4@4Mb%KSHz-(82a^q6vmT#jM?>C|hx2f@Iu@dLx~-Jv58GVL2uEg%vW(l%!XEQUH9 z2#RKufTFHggF})`f9wAN5pY%7DQf=f5Z9HN;`eq}Y-nh`?St~%25fi-YJdW*O6W}N; zdenVv3L|&Aj(K%o9ErQFB^=d>iiFiKVa+9dUK4M#Or$5o7J-a z{oLKqx~JQutp`7%quwKwU%B&YSgMH0K5ZyHQxp0k#B6(wM2g&N`lj$Z$NG{J|49Cu z!r82R6}R7lJxZYE$V}x2-I(%u4*f>;J7YUfQ(ZohVz#h#<&3$^ZMw<10E4rG zP~o?_<<3Z%?!`yh9|{VA(;7V^3wOtN+P=D`#{sQU;8mNaWJj~^)3vi_gH6wI?6H1p6uNR?wDu8zpXU7o2`;+cpEt;2{^#Ycx94k8z zm*F5h&44r140Bnd7y=jiv~nIzz3a`Az6?WMd|;^0fw&R}UlV~Ela*uH2ZDM5?I!ub zC*(PtyAqpdgy$}2)sOBK~}fy9{L+WZ<5!nL`L<)1R8O6pWdg_I55Tmaj$V7 z)_gGAnm8B&$Q~`{0$28=B+CZAOFK5 z?^LmC*5lBZ!m@`#tjuQHDdGx&dXJKveJ|a=iezx=s9eQex5~bRQmvuyGX(}{uGDVj zhIAFZ(^4*++Vc+91&{<7Ic$d_)s{8buteRk3dN&B{a~>eP~luRfXd|2>4>Q1p-y)JGIsdUAt~Ts-&>VbXZkS ziozajt{DZ4)X4ysXt-30Qru}rVLWJo#C6fhAvmWM&Q4(a$T`p|z>`N6D8ep;ENi6~ zJ+@emxC%#O;^FASN^!1^z9NgGx~8yH94wXmR%^OwiscN#mLagOojs9=NR^^R+?6Pf zbu!Fk6_lnmK9HEb0UOx(w)b;vjH56ApO98-rJxFUjN)@dqAV@TM@~V$WE-PYUWhpI z87ajX;fAFMm4(tvY2)-SYMw#!AunP4VD?&6+`OA{JF^QJ5NDdbE?O|PN!Ub*$qf&2 zBh(u4Xjcp68Z%8e-njv^w%q+bXI5lJ)f@?zIsMswr?r zV?0gEB%h(LA!xOF>LblDOebqACZHvw2G5O$hNdy4>r9{9Ll-(w@qcW>)*h}{hK#2bPA9ITrTm2jrknc{{`QGl*v?;mqQs0*F!huk3B zHkM0xdaL$cDgC6DI2(n=7H@0drCv*)k>KsV+$PgrBMvbaOQez#m!b8PA zn_7B31%nGxP%@%xmd_nLPi;|aS{2Arajc*(s|HR3_!9^|We4C02e55*4ZO4n_lgfv z;thT|IXhh$9j8^>#Y*QU0BpjJJhHgs#qgx8LNl?ww1|d}fbp*TAq7Tt7Zd^Ga3xb8 zv|hORFjyYS+f{fre=b0#mMO#LzMR@tevpT?k5Y656J^FzMyTtVjbf3m{-%&yMLTX2OML^Ka z0UE%=*3ej0M+2&$Kec9{KN8c>oN(2ATN{JdVB7d7H-e24OkeGPCX(`$35yJRzxCy9 zXv=~8RsR=A{|}I>{#!n>IaC9N+5HP^{tpb-4o`S}7^S3w3K_U0+&6DPy|B^qpPmtf zqAImp4zt4>xE)mU864@TLU#E~Op81?>FBL-O>bl#%t!bED285*1dSkicV@8{;y!vA zu6A+Y^G0S9y;u!E*3$s4i-^R2l7V{PIv_iPN&{PCZr7~Ob%b{7N{od!UF|~R-5kPK zi;4gdxqxe2gvy?JL+HrH4p;ByZf;2siLL*uGb>aP4%pbS58RdQA^O(7%+=x9M>5dzEdC_*Ig7ihox1i6Q|(o z!K|e(;KVu39(7|~7gi1~athSW^kt9MK!=w?5Tf zE?Q84tp+!ShF{`@ABy)J*Ed|m$>_GekTz~Sfs-yetI(!cQo3Im6UL^exI665i%*-) ziMv-gc36DO(f#AZ%I@7O6&OqHD>k}Ucq8z6*|CWkR;)v#-S0+|Mg;5y@Yy+uT`a$S z4Ha#u=EMdL1%Pi9Vk3(k!S*DP;Nm84>*3~3aDrYw-EoJVMd~&JivNH8mDYB|Fa*QT zIa^8Y&m5~NJ?tXAM~1b#K18CW_r#v*z3Rs~@DvSDPMG^xF zb81}cFh<(%oiPopv?(t;N?dq{`_v`M-r4gc>YkaIy2z3QB1S5P^@3lJA>y>b{Uph| zW};zTq1ojIH)@0ne* zT8;AII(qIytHi@p3EOQa%BT|iBBh_6uHNbR(!^-@Vl>v7hDniYMr!A@4}8k)9I5dv z3B4jhpT2E=TcELFtT#m3HZez>V$2(Ej4= zvvT%7zCEQ}3^6g1ZSO(+^b7t3%9T4jg$89$v@UC&WKSvA96w7=AHS@w9k-yrsiRa# zx0EAXqJ8CjEf*s{EX;|^M85V|P&S&8qvbHeRo^wIB=s@=L)#JaGUI)s)t+HoLj*?- z74TQ0(zE)Q)>&@B)Sw9Nj|}l08n&K%A~!aFNV_p(FllA7NK`4&r(Bx*-utQC3oWhB_9pSwO_iktMQuI6 z!?7m&XYkU1RC$ehgj8wPR~H?IDy_00_g>TS#Cmb6D^A%UF+Ld zlB$uJe?@HN%i=x6plasjYKot()y?I7o_<}S?uNGRkWpxH=?1xw^940o$#(DVU*!sx zzpe7fi;aYJeg9#dTQ>Oe%Ikk@%ut2#BOX(Eua4)QInYrTt4W^J-afG}`afZTbF+PPRtHwU^m89JPBMAju{PKK+|r z)}&=SI{)+Wt4?Ma?nMt#+8!JZ6T+(Ih^(-SxQMr1krpbe7X`afN@GG&DvpkvpAL%) z-;tAfUEEE~*|io)wH>YSO&jUQuCI}NR^}Yk?Rs8K+ZWIGZd3D(_}IHf=)mSw`tZsr zJxy&5Kc-sX9vb}Uq8CqPFjXQl%OTwS%zODv?}-(u(wU*^b>!P+_v`*G5yX=THtRj@ z(x6k!4V8se7Th-P-?udHCExFH2IGB$1G*gl`ek;M;OuVi>~3|2qQ_s z*boQ~Q0?F5xqj(@;W{Y(8btB@l!qS)=lL1O?K*ZfH+1tCj$;1EsHp{PfL;RlQsVP&zulGj$RmiXJYJbn5PWdel_&x4lv;6$L z?t2ad;_4j);y2IoeogT6#r?+w)a)M{bM*L_lNLryY@*v4lphV#Afi1 M6Eu {doc.to_dict()}') + doc.reference.delete() + deleted = deleted + 1 + + if deleted >= batch_size: + return self._delete_collection(coll_ref, batch_size) + + def clear_all_sim_info(self): + coll_ref = self._db.collection(SIM_INFOS) + self._delete_collection(coll_ref, self.batch_size) + + def save_to_excel(self): + # Start from the first cell. Rows and columns are zero indexed. + sim_info_list = [] + + for sim in self.get_all_sim_infos().stream(): + print(sim) + sim_pojo = SimInfoPojo.from_firestore_dict(sim.to_dict()) + sim_info_list.append(sim_pojo) + row = 0 + col = 0 + # Create a workbook and add a worksheet. + workbook = xlsxwriter.Workbook('sim_infos.xlsx') + worksheet = workbook.add_worksheet() + for info in sim_info_list: + # Iterate over the data and write it out row by row. + worksheet.write(row, col, info.phone[2:len(info.phone)]) + worksheet.write(row, col + 1, info.ccid) + worksheet.write(row, col + 2, info.position) + row += 1 + workbook.close() + if __name__ == '__main__': - - # Start from the first cell. Rows and columns are zero indexed. - sim_info_list = [] - - for sim in params.firebase_store_manager.get_all_sim_infos().stream(): - print(sim) - sim_pojo = SimInfoPojo.from_firestore_dict(sim.to_dict()) - sim_info_list.append(sim_pojo) - row = 0 - col = 0 - # Create a workbook and add a worksheet. - workbook = xlsxwriter.Workbook('sim_infos.xlsx') - worksheet = workbook.add_worksheet() - for info in sim_info_list: - # Iterate over the data and write it out row by row. - worksheet.write(row, col, info.phone[2:len(info.phone)]) - worksheet.write(row, col + 1, info.ccid) - worksheet.write(row, col + 2, info.position) - row += 1 - workbook.close() + # params.firebase_store_manager.save_to_excel() + params.firebase_store_manager.clear_all_sim_info() diff --git a/db/sim_infos.xlsx b/db/sim_infos.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..9009ff4e6d5e432afe393b18996b8ab4d51b943d GIT binary patch literal 16369 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 b;6K>^n)Zsa=or^M?g794fS+}Quc`kB-Yb*- literal 0 HcmV?d00001 diff --git a/logs/LogSender.py b/logs/LogSender.py index 804dae8..5cb2425 100644 --- a/logs/LogSender.py +++ b/logs/LogSender.py @@ -7,12 +7,15 @@ from oci.loggingingestion import LoggingClient from oci.loggingingestion.models import PutLogsDetails, LogEntryBatch, LogEntry from logs.AppLogging import init_logger +from pojo import ReserveResultPojo +from pojo.ReserveResultPojo import PublishType LOG_ERROR = "ERROR" LOG_INFO = "INFO" LOG_APPOINTMENT_ERROR = "APPOINTMENT_ERROR" LOG_APPOINTMENT_TIMEOUT = "TIMEOUT" LOG_APPOINTMENT_SUCCESS = "SUCCESS" +SUBJECT_SIM_INFO = "sim_card" class LogSender: @@ -21,7 +24,14 @@ class LogSender: self._identity = oci.identity.IdentityClient(self._config) self._loggingingestion_client = LoggingClient(self._config) - def send_log(self, msg: str, subject="appointment", type: str = "INFO"): + def send_appoint_result(self, result: ReserveResultPojo): + if result.type == PublishType.SUCCESS: + # get id + self.send_log(result.id, type=LOG_APPOINTMENT_SUCCESS) + else: + self.send_log(result.message, type=LOG_APPOINTMENT_ERROR) + + def send_log(self, msg: str, source="Appointment", subject="appointment", type: str = "INFO"): log_id = "ocid1.log.oc1.eu-frankfurt-1.amaaaaaacvc3jtia5enufv5jxe6binq4ndaty7pt5mk7uidipfd62ynwdhnq" response = self._loggingingestion_client.put_logs( log_id=log_id, @@ -33,7 +43,7 @@ class LogSender: data=msg, id=log_id, time=datetime.datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%S.%fZ"))], - source="Appointment", + source=source, type=type, defaultlogentrytime=datetime.datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%S.%fZ"), subject=subject)]) diff --git a/main.py b/main.py index e63b238..32af3ea 100644 --- a/main.py +++ b/main.py @@ -3,6 +3,7 @@ import logging import re import sys import time +from typing import Union from gsmmodem import GsmModem @@ -18,7 +19,7 @@ from logs.AppLogging import init_logger from utils.message_receiver import MessageReceiver BAUDRATE = 115200 -OTP_TIMEOUT = 60 +OTP_TIMEOUT = 70 is_finished = False commandor = Commandor() @@ -61,23 +62,26 @@ def execut_USSD_cmd(cmd, ser): send_command(cmd, ser) -def create_modem_for_port(port: str) -> SerialModem: +def create_modem_for_port(port: str) -> Union[SerialModem, None]: logger.info('Initializing modem... for ' + port) # Uncomment the following line to see what the modem is doing: init_logger() - modem = GsmModem(port) - time.sleep(1) - modem.connect() - number = modem.ownNumber - logger.info("The SIM card phone number is:") - logger.info(number) - cmd = "AT+CCID\r" - response = modem.write(cmd, True) - ccid = response[0].split(" ")[1].replace("\"", "") - logger.info("The SIM card ccid is:" + ccid) - - serial_modem = SerialModem(modem=modem, ccid=ccid) - return serial_modem + serial_modem = None + try: + modem = GsmModem(port) + time.sleep(1) + modem.connect() + number = modem.ownNumber + logger.info("The SIM card phone number is:") + logger.info(number) + cmd = "AT+CCID\r" + response = modem.write(cmd, True) + ccid = response[0].split(" ")[1].replace("\"", "") + logger.info("The SIM card ccid is:" + ccid) + return SerialModem(modem=modem, ccid=ccid) + except Exception as ext: + print(ext) + return serial_modem def timeout_occurred(serial_modem: SerialModem): @@ -133,7 +137,9 @@ def select_sim_storage(ser) -> bool: def init_modems() -> list: modems = [] for port in get_devices_ports(): - modems.append(create_modem_for_port(port)) + serial_modem = create_modem_for_port(port) + if serial_modem: + modems.append(serial_modem) # read the contact, and contact the 2 objects together excel_reader = ExcelHelper() contacts = excel_reader.read_contacts() @@ -153,7 +159,7 @@ def on_message_received(ch, method, properties, body): result = ReserveResultPojo.from_json(body) print(result) firebase_store_manager.save(result) - oracle_log_sender.send_log(str(result.id), type=LOG_APPOINTMENT_SUCCESS) + oracle_log_sender.send_appoint_result(result) # set the flag to True global is_finished is_finished = True @@ -180,8 +186,8 @@ def read_all_the_phone_number(): def start_book(): - slot_number = 5 - slot_sum = 6 + slot_number = 12 + slot_sum = 31 for i in range(slot_number, slot_sum + 1): card_pool.reset() print("will switch to " + str(i)) @@ -200,6 +206,6 @@ if __name__ == '__main__': init_logger() logger = logging.getLogger() logger.addHandler(logging.StreamHandler(stream=sys.stdout)) - # read_all_the_phone_number() - start_listen() - start_book() + read_all_the_phone_number() + # start_listen() + # start_book()