(original) (raw)
diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py --- a/Lib/importlib/_bootstrap.py +++ b/Lib/importlib/_bootstrap.py @@ -191,6 +191,72 @@ def _new_module(name): return type(sys)(name) +# Module-level locking + +_module_locks = {} +_blocking_on = {} + +class _ModuleLock: + + def __init__(self, name): + self.lock = _thread.RLock() + self.name = name + self.owner = None + + def has_deadlock(self): + # Deadlock avoidance for concurrent circular imports. + me = _thread.get_ident() + tid = self.owner + while True: + lock = _blocking_on.get(tid) + if lock is None: + return False + tid = lock.owner + if tid == me: + return True + + def acquire(self, avoid_deadlocks=False): + # XXX synchronization issues for the "owner" attribute + tid = _thread.get_ident() + _blocking_on[tid] = self + try: + if self.lock.acquire(False): + self.owner = tid + return True + if avoid_deadlocks and self.has_deadlock(): + # False positive? Try again + if not self.lock.acquire(False): + return False + else: + self.lock.acquire() + self.owner = tid + return True + finally: + del _blocking_on[tid] + + def release(self): + self.lock.release() + + def __repr__(self): + return "_ModuleLock(%r) at %d" % (self.name, id(self)) + +def _get_module_lock(name): + # Should only be called with the import lock taken. + if name in _module_locks: + lock = _module_locks[name] + else: + lock = _ModuleLock(name) + _module_locks[name] = lock + return lock + +def _lock_unlock_module(name): + # Should only be called with the import lock taken. Releases it. + lock = _get_module_lock(name) + _imp.release_lock() + if lock.acquire(avoid_deadlocks=True): + lock.release() + + # Finder/loader utility code ################################################## PYCACHE = '__pycache__' @@ -960,7 +1026,8 @@ def _find_module(name, path): if not sys.meta_path: _warnings.warn('sys.meta_path is empty', ImportWarning) for finder in sys.meta_path: - loader = finder.find_module(name, path) + with _ImportLockContext(): + loader = finder.find_module(name, path) if loader is not None: # The parent import may have already imported this module. if name not in sys.modules: @@ -990,8 +1057,7 @@ def _sanity_check(name, package, level): _ERR_MSG = 'No module named {!r}' -def _find_and_load(name, import_): - """Find and load the module.""" +def _find_and_load_unlocked(name, import_): path = None parent = name.rpartition('.')[0] if parent: @@ -1037,6 +1103,19 @@ def _find_and_load(name, import_): return module +def _find_and_load(name, import_): + """Find and load the module, and release the import lock.""" + try: + lock = _get_module_lock(name) + finally: + _imp.release_lock() + lock.acquire() + try: + return _find_and_load_unlocked(name, import_) + finally: + lock.release() + + def _gcd_import(name, package=None, level=0): """Import and return the module based on its name, the package the call is being made from, and the level adjustment. @@ -1049,17 +1128,17 @@ def _gcd_import(name, package=None, leve _sanity_check(name, package, level) if level > 0: name = _resolve_name(name, package, level) - with _ImportLockContext(): - try: - module = sys.modules[name] - if module is None: - message = ("import of {} halted; " - "None in sys.modules".format(name)) - raise ImportError(message, name=name) - return module - except KeyError: - pass # Don't want to chain the exception + _imp.acquire_lock() + if name not in sys.modules: return _find_and_load(name, _gcd_import) + module = sys.modules[name] + if module is None: + _imp.release_lock() + message = ("import of {} halted; " + "None in sys.modules".format(name)) + raise ImportError(message, name=name) + _lock_unlock_module(name) + return module def _handle_fromlist(module, fromlist, import_): @@ -1177,7 +1256,16 @@ def _setup(sys_module, _imp_module): continue else: raise ImportError('importlib requires posix or nt') + + try: + thread_module = BuiltinImporter.load_module('_thread') + except ImportError: + raise + # Python was built without threads + thread_module = None + setattr(self_module, '_os', os_module) + setattr(self_module, '_thread', thread_module) setattr(self_module, 'path_sep', path_sep) setattr(self_module, 'path_separators', set(path_separators)) # Constants diff --git a/Lib/test/test_threaded_import.py b/Lib/test/test_threaded_import.py --- a/Lib/test/test_threaded_import.py +++ b/Lib/test/test_threaded_import.py @@ -12,7 +12,7 @@ import time import shutil import unittest from test.support import ( - verbose, import_module, run_unittest, TESTFN, reap_threads) + verbose, import_module, run_unittest, TESTFN, reap_threads, forget) threading = import_module('threading') def task(N, done, done_tasks, errors): @@ -187,7 +187,7 @@ class ThreadedImportTests(unittest.TestC contents = contents % {'delay': delay} with open(os.path.join(TESTFN, name + ".py"), "wb") as f: f.write(contents.encode('utf-8')) - self.addCleanup(sys.modules.pop, name, None) + self.addCleanup(forget, name) results = [] def import_ab(): @@ -204,6 +204,21 @@ class ThreadedImportTests(unittest.TestC t2.join() self.assertEqual(set(results), {'a', 'b'}) + def test_side_effect_import(self): + code = """if 1: + import threading + def target(): + import random + t = threading.Thread(target=target) + t.start() + t.join()""" + sys.path.insert(0, os.curdir) + self.addCleanup(sys.path.remove, os.curdir) + with open(TESTFN + ".py", "wb") as f: + f.write(code.encode('utf-8')) + self.addCleanup(forget, TESTFN) + __import__(TESTFN) + @reap_threads def test_main(): diff --git a/Python/import.c b/Python/import.c --- a/Python/import.c +++ b/Python/import.c @@ -1493,6 +1493,7 @@ PyImport_ImportModuleLevelObject(PyObjec _Py_IDENTIFIER(__name__); _Py_IDENTIFIER(_find_and_load); _Py_IDENTIFIER(_handle_fromlist); + _Py_IDENTIFIER(_lock_unlock_module); _Py_static_string(single_dot, "."); PyObject *abs_name = NULL; PyObject *builtins_import = NULL; @@ -1675,16 +1676,25 @@ PyImport_ImportModuleLevelObject(PyObjec goto error_with_unlock; } else if (mod != NULL) { + /* _bootstrap._lock_unlock_module() releases the import lock */ + PyObject *r = _PyObject_CallMethodObjIdArgs(interp->importlib, + &PyId__lock_unlock_module, abs_name, + NULL); + if (r == NULL) + goto error; Py_INCREF(mod); + Py_DECREF(r); } else { + /* _bootstrap._find_and_load() releases the import lock */ mod = _PyObject_CallMethodObjIdArgs(interp->importlib, &PyId__find_and_load, abs_name, builtins_import, NULL); if (mod == NULL) { - goto error_with_unlock; + goto error; } } + /* From now on we don't hold the import lock anymore. */ if (PyObject_Not(fromlist)) { if (level == 0 || PyUnicode_GET_LENGTH(name) > 0) { @@ -1693,12 +1703,12 @@ PyImport_ImportModuleLevelObject(PyObjec PyObject *borrowed_dot = _PyUnicode_FromId(&single_dot); if (borrowed_dot == NULL) { - goto error_with_unlock; + goto error; } partition = PyUnicode_Partition(name, borrowed_dot); if (partition == NULL) { - goto error_with_unlock; + goto error; } front = PyTuple_GET_ITEM(partition, 0); @@ -1724,7 +1734,7 @@ PyImport_ImportModuleLevelObject(PyObjec abs_name_len - cut_off); Py_DECREF(front); if (to_return == NULL) { - goto error_with_unlock; + goto error; } final_mod = PyDict_GetItem(interp->modules, to_return); @@ -1750,6 +1760,8 @@ PyImport_ImportModuleLevelObject(PyObjec fromlist, builtins_import, NULL); } + goto error; + error_with_unlock: #ifdef WITH_THREAD if (_PyImport_ReleaseLock() < 0) { diff --git a/Python/importlib.h b/Python/importlib.h index e9f5faf2fa9b7e239563aff1db46d6e1d70fcb88..530cec30a054dcb145761ff46896b368c95243a1 GIT binary patch literal 180812 zc%1Eh$&v)gah=ZmiaEndLPqW>nGX5@n(;1^!9WQjVIo1=2s}VC{ktk7e0lES5gFAO z06h{hgX!+7%-DT<zqiwo@xy=mm*4->zx})4{O&hD{`&X7`ENh`?H_*ln?L;i@Bis{ zzx?k%{^mFT>o>pp?LYqWKmGXofB5a+{=0wv!w<js<zm~f@bzg+|l%a1c;#i;|n6%t ze)tth_|;$kn+0^q|k*4o_{0dhs~_i~yro&n_-d`m%}="">4mSn1Q0w%4-0mh#6`KD;J< z_WmqQNBK0-Lo5B@D7j&u{FMB11w*>%%b5p0r(j4jt(iwYyOAee=y}CK&2H#2^O+uldY_pRZ_GWrY&0(EUsKWWU$uem>;`aOKs3VJ$qL#m$x$Ytz$o(ZcbE7p>Ki zN&`HhW%2WnPw!#O^eQjY!ke34S==(oGB3PLi|#JX<kj)yzdh+azgnx`us0|2g4uib zxf^bmrb#{_te{{cc`@egy4="">yDAD0&r(?lvSTzPx&C{EHaPh{ouLOm@?ANRLB?$s@X zEbqGGdaa&Bc_CIlFY6Vomn{0m`?I<i&l@4b+pl@4op#xl&1~c5n6(bh$@9@rezesQOL5z?h&xAO#coB(`KP8{$23MY0KcDMLf;Rwr#%}0Y@<=O5yQCTkfR9~IpRbGL; zqIdc9K2YVryxUl)jit1qo$wm%mmmIRyDukY)iE6W<lz^se8a^^wwx?1^{zcs4i1nr zezggo@?z+l#%5_uw="">}?hZjo2_*nDG~P#3K30k4Yas?HaDs;{2#DzE3EB#d3VMa^_Y zub!rp(=Y0o?5mqOEGMtu>1b$Gor0cq&Klhq1cl}-=*V%=9yPs zJe+H`11J<p!dh6~#xvl!)5sxdabv0fe_u;0wag7<y)nft%khq{rpkyb`y8n=@}nvm zq~8z|3{t`fnhgqoqoqyzjx0^0&p;aeckr_|w*ii%xsbrrxjwm7kb67ua_6|encpoj="" z!$@zp<caemjz{1azzl2s`="dF(Dde0#ymf<gx3S;reE-PLr}FXr`u*#BCa$H@0{8TO" zzn1;t|2@|{tj2i?-n*!ogt3_*gy)xadgt+nz_0w%!lpla$m1$q%;vx$^y`d^ss};3="" zswsklqwqd^n9wkq`|}gyke8yucig%v="">F_<7JcNz9lcDqCN#7|yReD*@>lQK zU)+CQB<gzq)tbyszrltp+3qs;vpruj!%wa+w9!v$yo;c70pxc1q~%brs=v3ny*@k; z*n6f}d<g@h4%xp2(!*09eo(~f-|ibnt1kzkncv{bg7my`w9rx8;iqvhpvlrmdpy2u="" zpky+12aiyl9?h1&zji="">|Y#e+ZiEJaC?nzgCmyOI#o#kCVqGcAsE^uu54L*pg>{}ke z`^N=O(IS==J}x<|d{E^e@TjSmgT8JY14B<ik3t$0h6am1c0s@kui#qn^eza8q{kn$ z0jeq="">C@*GRa(*|rg7FRsH@iP9(t=iy1xcbWclz=k;!Q=F@L{;}2pY);4OyQH%>B|0 z{V~(etPrxfzg|`j>?GE9GVk~NS|$xrIn=r+<_ifI`iYV}%_KR6V~Fk5dpcWMG@v4_ z7@v5v_G*$MlI<i<ugc5hydb-2xyccki+s2lz9@|xmcv6wue9`sm5(!=xa0;2sj^p( zy#`gpvy_^wr2&h166scqfj{jgnnl?hj@e="K`v&}oIc*VZE3y6=7xT<&+<UG^Chqsr" zzt7e^kg@yuz4ko?y~eetdqt!rh2i|b0q103wv@hztm29mb{m|8o1fp5="">_t)HR_LhB zR=7TLnD;7Nn+oT?T-=$F;cS5+-R<6w&iO05RSUvx^UECJ((H0Tvr~DQHvf~3-ZR>Z zs&~(Xz7xgi{m^?BW!56!I;~yTtD-jihnM1gK;Ws&WB3Uoyh31L;SLiR&=#%0hXkgy zg$lqRfgx?_28<edk&kbx=ffuj;?0r%9e+>zBBBEtmJ-9~bihLW+6MGPO9yP~j2)=u z#Q8BXFdYEfSGFQ6w~@YCn9C^-&eCI^lui;v^}Wt099YL(VUic@C%=3zHH&KGh3|>I zRsA=EB-VHe3A{hP8R&8w(&fQ30}A)6>%Hf<p)%hx0?3>Mv-bR@UQ#~Bcv5>O1xVAe z&4H7mYJb2spHGS`W7=U_A%AldEwii+&P)Gl^Oe!-^%iWT%D4OF9tJrf?~CDw zJRIg@qG+kAKj~2=<zp_vohevw1&n#_l;qnhqk8>6OYpMd1+Q%HOJj{U(2MZOP(t@* zYTowAYFzX(x8EFahLQDUIrp~vM9L>Og34zh7-pY^R(Mkcz+er7PXv*8u_fOB-O`Pm zt>yTF1t@%ehnH`yytay#S%^WbE;ayE0|P*3V{=XHgJsr#&y)VWe>Y;@QX(@f0wvM` z11`sm<x<`0%-)jsmv`w^r8xf}v#pqroz(pic9r21&p3o?7gfdub%_71unfzd@4mm~ zlkh^re!="">Sry!ly{4eNahjlKcK7Vab1S-K_waF79=O-SYvC!iV`M1o^fmT^w1%Fr?7 z-{(me@CrsmToXFTx{~87-%sa7-85awINcdql{UBHJEVb&DVSb2Q^-qpF9Q6hG8m|@ zpc~-DX62f^IP1OV3++K*N_Sf~v-J#DU9ZYE?`N0^768P&#Z1t#JbG)Z-lAn$D@M8N zTZef|*e1VKn4*f9BC=pz0?r6bahq91c84+oi=LUD<9A{lE9X>T(z9ITwuNEP0D9cA z!6=nzAGu}BD9gx4xMhP;8lbMpDO*gE-&Rg39AVm&-%LdZf@7)*b;UoeI_(%LXpb|V z9^{SBoUAZIWX*GA-G4XT)UdZTVmW)Vi;{6=Wp63#E~otu3xem?0pK#qB{MR?!h%t# z;PZMT`(aW2dvn2SAwSZ*iK;adlPvKYHwZ2QHYMIkRqG~v&A@~DF|fX*SX=hV-5b0h zuQctl1_(N#9nVs*z4H*Re80PxF@lD`oHs3tuyAU-@J@@f-nxXq8hir9#Jn!$I7ZK7 zEm9BXq7<inhbv<t;%_^mau!ixm+midcg*5bd8r%h!mt{v|d(^gnnioyaip>klvI*4 zY@&m|*t3#!TH=XPt%L1!qp6uya1Gs$^I+Bf$S}LC&H|GGlYR!K4{gu2l@IKU9c`%5 z#ILL`H-2(7IeL9i+(4833P`i=Y7-BGG={I>1a+0%A|D7<yd`@dxd<5nlw-rha`oA$?#2XC*cq@Pk-Dn0vZK|z<&xz`x`16a67wS!nGQVc^P@Cb{<t&t!egfo`p6r5 z8?x="">|o2&Uq)&T7sQXvdT?d2KgrF(}hUY>pJx^tujKVr<riee_0g5ed4kgv(!3x(b> z8A)*LPPh8T7@h9`)O!NNzi5Dkvt=5uQCQz8946ayz`>Fo3-dK(VVgWVGe`X z15s3?6Tq4r<hm;7ntq2vbbz*n7exnu54{=2s)boyu{z0nu%p_|7&wao=i5rsptia` zxqtgtcyfmz{k?ke0toaqhqbuy-="r(y7HSRLKz&B{8T`?MO=E0(a<CtAZ7C97@Oos^" z4d(doz~_^rupieyyly*0g-fa_^uflks--em="t^LrHr$`k">ve&{i8TveQ9M5uJ5qoz zQTTcS7Sp6p68>ia31-n6T2#6Sl@<bjb}1q*5twlowqh&bklski#ss`{%$@4i8pkf< zdc#pu-z1`nhu;mwrxt~phtrdppoewxtpt%<7zbs-&mh!="">-`;^!QVV1=-9h_8l+IhQ zRKg@?3XUHbBfiTN4DJ>)g~Ru=nHdWB@AoTa5HdV<x7*ds_kr+v+1@64keoes-w5%w z(c7}o0trc<mtas)="">@zbRR^J-*UrwEfX}2WTCI?6(9Zy^%U`xP@F6BiDhtcPKGM2_L zNaxeBG&Bh5DFnBZo)thdJjl(#;~0wpu)t@q2SzV_279oQ9mI495vTd&6KH(n2JQU9 zlB;R~OWqg8RvUQ|#(z<5d9D~-Yjx^qHHXvKzzi>Sg(AmVZ#mET!?yEW<ehp5-y^fd z`b)ou8oa6?cw{$b5hb`!7k<74cuc8dp^tfsycbfjae}j(9sr1g;~fbh!gctf6ayv8="" zb|9#qoqfmyx1u}@xtzbh`7%mt5`m}29a!5qivuj<x^="ondx=pocIL<iU">Bmt8hX;B z!J5c^_>mk4m+cIfF^Mrf2pm@6vejc*N_mrFTL!jA*vtr_Oo{;h+qV#=zl~7F)QS~a z*2P8=)0@jA(7&@<4Y{zO|I6TE>i%PF>`FIgc`agn9VKpm(NTBRYT=bh1{#I0YlMES za048qT6ZlX(fCg$gjG<oge&8pah}b4wo$q16fnmr?d2o!kj)uwfdl2mzajbyxr?0* zin`h4$jfz@s)yte^hjd57j3snr4#v{p^gni?slrp#p!4};ah#xtgpw31;<aaicnli="" z?c|^rmdiu}cv7xyn<zuzwbttne~;}9_og^1tei%i{&ze="">3L-q!fpiTOM1`b>_6$!| z&!loZN_bv@`2lKB5*`KFGwd0`0p!ewrY6(VXGvV!UhNrKn?jW)hfOH7$nce6z-@41lB^5+0`DIS3 zriY3lVxLUa_vh;?9!cPw=#Qj=L221VH)IZIS>fq|jacP!Va*BQP_WF<*b-$@fY8F) zgvt0XSNC@grrVXf^XGf{9Q8wWssbC{d8h}yc+!xi2*?Xm;oQ`^P+b@C$*wOhkaE3P zf%X&TK$ZK+Gi4SD!&U#HOxkhS#Q1T}Ovj)nhImC3q!SQi6g4`ByGs-GV}^NiTiIjg z230SmphEsfct6|7XV%0sgRjIwUIB{XHekceDkW2qXobj-V+%=vs-VQ@Ks+0MNDW-V zG?^rFLlcuyi4}+U$_Ekdf$6s_xHibVf`lLv04APs*X|RsHS5P_tz2OQ8I&Y|6ERMj zMVN<sofqceme2zla@ifoh_=na67z_b_2n9m6$y)sx>{k(f29D**ii9N;<p`zqu%e9 z9qerncbv?nbtix`ttsl`y9="!eo{O^a{yPVb+%4ZqjEX2">m6u4CqEjT)fE1Mh=~UuS zfwZByX%meiP)I~Ft6W8c#P)eyA|T!ye&+nnqw;#bA9;WNp4p62BCpnDbS57J0t%d(Z9_Ef) z#s#t=XL*W1*<y^o1rjq24#r3bb7co#akc7*1rh&a4zfptd%(^dnerqyqg}jd9z{=< z41?sle8%i2q?k-)69bcj_tdt4wzd2k<^u<abgrq2a$hmclxk}})konddmqww3nwoi="" zil}<ux*6+aeco+jyqjxqzr5yxdyc9@byj{ey)to0)$#brtfqr^ba{bd="d;eR@IYb9" ziy4dw3r)65la}mesdar8`*|ym+;vw$isy="">iTEnn*137uK=(zB}%co#DF{0rCbuk9Z z0ox3p5WT)IBrpy2S@h84k4grl2);bZ#=D1oRnA^2N#yy{BFxaEE+?2xM9P>%F-z># zV=BT6L5HuNMccY=(%?usaAp$)2D+>-L}@%3g)i{ATg(xHg>85qZU1CfM6K;mG)3%L zsPSVbJBW(U0YDLkmPhk80}JFceN^rZO~jpZd_9@5GdVdnw^6RaRz6pfHUoy49MG!S z0|x9exEdQNRhaAn{u16a3+aPajYq);r~nOvzVB0*))%7kjrT?0w{Slq{h)J8;H+Z! z0MJe%te6+hik>}H8w!&*ou|~Dh#D3*;jG;G<bxwoqcv)dqyf1|uw9}{m2ddofj1ec zg="">t_2gb3GeEwje2gVUYXWbZZ|v}*h#9l+a$)9)|>EuurDvjZ%f2Qi7GjsBE+buZ9b zTzNl(s<861*y4hMR&#?~G;pVf<+NO`y6{Bxd9}X-$HMAVfiUzTDdnrlKxL{X%LG>c zINGFo6au4~B7qWU9JV1(Tl9}8yihy~D~|_L<qbt4zl-qt6<$->f6EPP5d5f^Hyb&^ zCwV>iB%gD%B-Um*qpyG!RPZ+xgwou(q^DlVh@~_?u-4ql*$*59#)@8p3whS_{o-+b zIERVvBcwlnI;&fY!V_>wiu~q4x0xrY6d+bDl7Zdsb#D(qRN$IJ@zNU)vrYK1RKf%T zxNAA`o7Dg&n~_80!UaE5ZIBpvlvA%cq`^?vR2Kf;4k>hs+J?SRX9Xz<3%MU;bgf!| znmlT^N-v*H&;zKh7!r?Z;e{e~Cp&a(5CWrw({4(1DJvF;*?`n6^%>R9Wr2gjmnzM(LU@-173j&05g!!awdPA@}{1L}?% zq+fJ~F_!aD;Q#chOg}vye4^~!<_Xn}GHkRTa$?TK08KU~W~Ppnxe{9z0{qm%*{DJl zYl8Bu@rcp<z3uk{ao89vd`izsi;=louz>OXBn=A?ZR+0axq$wbtr^B;P$O{pm(t44 z$8;mT%6F8_FvL?L&1`RH#c89ba7-#J%$SPrQdP&3YTs6|3Dq3AW0{ZFedIQT(kyx4 zbY*!4^!lFIMK!$wc3L<m^hdf|czcc#or=c3@ydx(yfq$g?2<soaw~i4qls)tn`$3v ztg($s_np&4u5x}l$6+g85)!4jpo&k%vo%&u;lk}="jk_1(b+iM}qatR(">TOmQ0Ym@( z>EMI=J}1nFm<@I&EIRvkGmk!rE3f5`S(y5p@7_;y(!|N(3sP)}wy9xO)%s*LVgs}F z0=$~QyM#I*w^4cR8MWgQ2EQn_Qw@ulLqzA&(xD<zr^q2vfzv*fryat#o46dzy7qgz zf1sz3coqewym<&1anp!!7dt#bse6?an$fx7)ty#ngi+w<7-h{_{o^shsqkyjjo`zo="" zu?gozq)jgo)?do-;c_t7="">L7WQ8SdTEQH9fi^XYlzDC%uc(JzF((i!dB&+0)@{9ZT> z+0W|)lk^94p1ycMjhhFY2hwk`?wlGDIYOFFBEum@-B4BX5BQg!TuW!vVT4JvbOD7> zdv-;wtf&PLBw+Tn9%C$bxN~cM;okXVHlP{>Yh+HKZOQ9K4u8PiL0$V2cL&{a6ayaz ziqd5=RLvZ-w*Ky5%R0xL?ZG>MiHo}?xAsGH_Vrq>TOA9|5R_JnnK$KyHZl^c406SW zA{W3QVd22A6AKMYdNcOUuHQ#ku1N~4q8r+j57bj>zYmzW9Jfjyh00M<g){<ubw&b* zlyxu-2hmpk_;!o#v68i}fvwyjmsl+tirs6|<6#8ky0wskwacd;vnuxffs-vutro1b="" z(s-k7g4%qc`uyj;c-h9y)`o$w29wf~li+ly;zg(b3fhdpsplf5_bx;0oq|(ic2x*m="" zqm_r+-y8pzfu?#<v-wzz(hrnmy{047ix7;k-q$_xh<b)f7t???px="rcXpcE=H8*!Y" zl<slu="S">&ThG;0DnmLA)t3<;*9tNQLy|LIh0+AQA6|5u8ITE0#I(RFCD1(OiQKC-? z9?%Vkk0~VC92N6ckoa)V1doVIoF$$+TTQ@}nJmJe{XdB_YFWq|uMu-RTX%D%3os2d znW$}cOi}(qj)@08S_Y&A<k-fbyspkf2j`dkqf$l;#pibvsdv22oa}bx&*e;ff9ggy zie="8$">9q)I%kyWKTR{ZrVb1ViD4DNHTwcaGZ}L$0M3U(shAcJYB=Dckd9O~55A%mZ zqxPnaEnn$P=6M{cv0~TJeO1k_H574!G0=g_CwD#kagGKC(K<z%dc`jyibll?b5ac0 z2nvfb80^)+bc7d5u8-^pw#&x-lyvioe;="">&X$;p+R<0Y5ZcbuiP&|Y?U!NoY0<7W8F z&=xGSh<-BSI9XzXdrD-vNazLW7H%?+TUN66ifA(Dt|_|8Aj)-a_J~xQCqZVD?vXfJ zUCIV#2U7~nf*0}FMP1l>oL)u|EoY_NH()&iq?#4S$E9lrnI2WF93NADbkgas{vcFH zXo9L(&vOzxAq<_n?}+4kjjH)5xRPGBASO`>z0wX0<c)kv@oqnl{3b}ku`jquec_9b z8`rtso`b9;kt^ukkx42p^o038z`ako<g;+xzd?ufkin*p6mluqkeaqyzbkjdst?c~="" zdba}$oym0sviq2)ibrfvb|?i;f^z2coc*qudt{|)-|6<y{l201ai_hm2d^c2cr!oa="" zvhn}^="">ciA6y3=H`+K%nDnksYh?U`W3s9LAx>JWghFi^9?Dp=qSL~xnM)!JX#{@U|m z85}eo=Y%2t&?awoxhk(*33V?{PL`7R!RQ18IYP-=HQ{l6VgzyswJ>be%>A}Q3 zPE~ZTjBctuw{T=DkF+GkFG|QEU(e5fp;#&4{GaDh5nnG9KtfAdSaTa0J@bYS((VHM z9I-qC2qac=VIJP;w+4Hg8(`Qr9BA(=L&05$QTnIf^7_93c$&bAkQUB3Rd>K7Joavc z{x$_UoZrhN?-{lBRPTpc2TAV;Kg^W1b}TTb$P{TH5fcEi%$5USblsabTl<tdo!=() zedi`sbu!a5t+omcz="">4nn9zX#LboipQFoFKG)HJ637|e6hC{K7CueiACZPjgLRFTJ! z=V+qvO@Kc{x|%fMNpBp=@2UDyx?Z?dmc7(^P?F@RZJFrAkPN|N69tjP1$s6kYozk6 zFtZI0gk_f+B}wfP`;jrD7wGw@SD<-dr}{aGcCChU9b!_(G-k{-LOC73ujNg4PF?;v ze1t~WAi~MSWVleSnXIC38G(;c6S52JIPC0rm7;DO<gbodu^+}jvki<{ra|?96fbeh znzt<&to0;sx?adfllan#ixfj9z+kf)zwivbs#6ihm7}jroio1syr6si3n%nn+@rvp="" z7%eb{djyn#k3xb(p#qa-xx8yjx+e)mbwp9yghgvp<^vm%gz^j@k--q4#wy~v*6@s}="" z)f&=")xZqbutudlMRBM=uI2M64zdx%|6Q=Wv$ClR?l^S~?MN_9?g<zdAXi8n9{IH1;" zp="">>r#TsPPB@&YwMm4h-@*#{SsivVI3E)^}l<08(i?8@{nboEi*T0`239rb~<1s}q& zwAIjyacQe|%%7+DqrD-*hv~HTqQlg41KS>&bqvjICD%<rbdb%biba#i=gi^*8c5a& z?8j{i6-9%$d~uv)kuefa8zat*s2rmt4qd@us3y7zk$="VlEudxhPJ&VGHbjM;Ox">{B z=y?0)q;)`E6U&2WK~tjA$Wg5JC8_|2h!(UYs?ng<nte8vq8`vr2|i>q`oN7=6-LWy zAs|o;q3I>X5S<u?gx-z><1%9L%W(lo9uKw);H@oobovT4lN-KW8bER%OL5ZZ0TveT zudY_8n9z*%RJds)vaP<s0aq{ulvhxgv4;<yynercoc4mta2+yp9gd#64qv`mOmjrwmLW$%g!JuVoS5>lUK!deG z8c{@1kNn_lYp-j3ZyLuxbaHm!j73`q%(-zCI5t<|6IpE0;m`{^na1o9lcR6kP3%)B z3sR;US|dgnMWH*<bkto1ghvtwt7h+auc1hvzgu2_ftf}0;am~ur9b835tv$fa^wxc z;lvyjuxkpld$c-sy?`c&1~whoxswbcre8vqr5orm30cywr&g(3*afa9b#ax-u;qgi="" z="1;fw(+fi(1LkkSBAu|j+YY32U)sRdRm<LsMXQVyQ7MwJ&9$P=wHH0A43WqUShCdH" zon="D|w(C#HDuE+b#sMK4F*kBhU{NnX@K}yGJ">>%-AD{MW_lp&5>Wk(jVeYD&H40|s z0kE&mAT5;y9u&R`czmSe84qZ%x<kgyzkyi6hcss~)ze5!_c0#9a__4e^l_vov2tpm zo*!<u)73xsnaoay2ru2s4npddrs*}dlcxw~huj`1mb)e$xg}r3cc+2ofmfl5dr^!8="" z?wm~un13b;y9^8lgei`@h33{5rjm`sfhx;xh{ob2p6-<-w-i~rd%seqz@wafb!g2s="" ztxwsxa#tnjg+(-eshq9s@m0#fgd(qiux^kz3dv5rxpwnu9vehjx^vsaro$~{b-t$=""> zmi@^Oud}(Mhn8oVWU{!!^Mp4R(ZO(=mUKk^`UjeEufUEvLK!NqyrHRvX3(hsp*1F| zq+yZ-Xj4>D%y>e9r(4hPLrG3+G1h4AGhlDgm;uEF;_rAK%PRs!dzYIhDR#kT76H;z z@1`NE^9=aVy&LR9A2JB5$wy$d%23D@O$4bNk<&|qry!&Of3)l)!sPMktjh1fey=(Y zI5E-jP_JTJx%DIk-U!8Bzh8~Z*+xe6Qe?H?XIr#`6rbo3U)=R|iLm+`w7erzI4AqA zc|?e$-XDGcXXC4$X0Ddaw-n?M)co|0p<j5b*~7pdcoh%(irvexz+-8ekqfk77 zhe%s1zdl;7>fs!+Tq`uh0!DmniC;-$2JN|XoC*}Aoijew$KhS`cJUdW0M0oJ=0sA? zH7Wgbr$gE@tbrm{A-ol0FxkX6EQ$;s`pN8QNk*Ezo8839_jTrcE$I>(L-Hxl82K3% zkDuq4xLJ)go%DKb%r<z8(gaam6r6_fh>-3Uq~a>Q*HE;_O&2Dp-USm?p`^y6bzIx{ zd6B>zF<$#-%4m(GrbU9NMs1cj9mT!UaPNc$0loC~>%_#^`NDN#z8oYbs*&LndDo&) zPt@o#s?bzo<icv&3h~<hu(gs^b7v@qb`kp+n`eq4+t{w|wlt5r>a9gPe*A+FSVyY8 zq4B7`ji#N(R|h215}w7ZO0TL(Ti9om7Q|AuV#w>uMZ^KS>gvnV<vfre+~4pvyjoj> zAQA)WvhJbk%n$0a^$@6%X0_VqXaK^@6x7LdPJXzuB_(*)gZ?5qQ8O@M=9|ga^~C}; zb>|@1do3ZbvKaOPAI;qHfV7O{Nj)f=2;-UDOSLADA7*txfVsC~u%0Et*ZB}t{ENTj zfMss1@RN_VuOXO%0>-F!7_{D)qN4$8S);!ic(L%qh!GG#`Wdt<a?wx~ct=e$vf%wh z3c{!wsch0@h="">D2DF$6pQg$lLJCSMle*szA|CW65pMq}&rWge4WS#=ZnKS^}3V2=hV zRM){*$0!=-kd6}d;|B25S-lpbhm314Y6cD?h3sL2wno>i;^pnR1iFlD<{(m72Ko&$ znvajxs%%Mn-_v{rnhh<^ERo6Sv2Spf44*mf+S%YSP$=wh5GYh}IRq4n0`v?NuJ$6~ z&u~II3m+;zsPhQaF%|~dyJ{d-c~sj$ju)srR?AV1(zr*J6-l8l~F7g1Rpw9#}N`toLf#CB>E!vM_BC<oc_*rl;>dMJbkSS$vW6=ic+;(M&) zrg77_;7B$iD#jukaBC{MWsPDiqN#)-dK74Q>l-8@8<>np=aUC-vxz}|0rHDJuPn1> z<85Y5N8#-ENHRvI1^}fIGdTTKz>)o-a4KEPtF{{RQ zlvOl^ov-X+1;r66Pv`bG=VXSvLwEOlqUTq<|MYzj_m@v_zUPa-8}-=o0W`3T@A|zc zYf*1(WhmV=-mi#5LbPA}(gnFJW-t0u_b&h&NMu$qp(bgMUvZAi`?U?RUZVqFnYxR( zT)^1Jby7B~i{(4*8TD-I!86_A_TVB?7~@+AxVkBG2saN?n39MZw69u`>>L(<pkq3< zl|s<m0mdgf_q&kzvmu="">z4UR_I5=xaULx7=~Ergcg)ODM8Tv8<xfb<<ed}fiwtzwpa zy_r_-lvoa7ozqy5atnq`z<<$au8+jw#uk(t="aUlT{l`Hcp7fKin&%!AXD4zM<FfJd" zl0#$0sx6y~?-yxyk}#tgjzpkgl="Q!(rOt5X#&9%xJ&g=V3UjDAoLr^ELu=RVyXr{}" zx;cb-maxb-zu#rymirk0gdi6c(qzgbwbm(una="">2Ce#PN1mY%aS>73FA_%+pZoF>tB zG{R;fCL@8;tE|Za`B9VVN2$u8WqRec*|=0YI&Et|D-`?G`v!?`<t2hn@et|;qxu1# zk&+rjzu<="">B&`Af&<bl*b(bwz>v|@COe#`%`lFhtucQ@N?T!V1ZfEdxXDW66_fE~Wg z_aL*&uFlp`Q0d+%EM=3+0ZpKn8;z{UHNl=HIihh+Tnn}xJKOD0I{a6IyA}x&GbdxI zs>tRur_iMw)biD3E*@Y~PSF%w<&PkFj|d9F=fIn*$zH|2*j{yc1?^eUIunJa6e~xM z*-E@%XI&=`j%84{uc3&6PQ#5Ubk_mQSy?wVskn>l#VVwNY9cCUI3Jx1izz$@-SXYg z&0i+`$VQ`>D9x^iH{FIb5-5TRN5REbQub$4E~+mVTOv^oW<g4g!z6s(u|gyaqvc#? zryxj;uxn&gf*7rq<xpxesry#mtxf*ak<dqld1b|sjg)`vz3_pzj-@jy9)m2="u|!YR" z="">29Rkl|LlsP14;gFE%EU#60pPiHBttt<zsc23(khtj&x<s+g}jb&}_x*owi(iputd z!(p-s<vxpp*o!b+k708vsmgo4w}^vosp(`7adkpxlnx{|hbm1fpl%94ma*uu{jf)0="" zd9uj9p{9&69q4ba0r~|wk#gkgauxnc*1a+o4kk!mysg}dg%+mzuz23%br?!xr<="">bF zCt??jJl`DIekuM)i+d#1ii1Gs^W}9}ZgY~%iJY*p^V;#564p>fQ3hGB1gcfst1I-C zARjzwflwC~@`XqTJ@a3SbfEXE+rZuJscx~;wWwGs=S=~VVuXsXW`~mbU!a*xE;VZA z2J{p|=;#DVMAWqwoouY3oU<lqbb`(v0?hff$p$1m`#nm@nh_#uj>vdu4S`53eF(|4 zh{VzdTAD2)Y0yW2QBKgqcYqmTjun*z>s_b?#g93cLM?y+dO|U#{}{EnF#(e>18an# z)Bt5oH4~i1m}>ZC5G;USe?m397@`?`L^XgBDFDXSqBE<t#rc?!ftkdrs>rz@bSdC* zj;JIc5MB2^l~@8Xn!%_Pk(KzOq9#Dzg9pfHooeLPOFZ8XhQdUpV~0i><n?kvm<ae% z^@xsb_ag;zq1e;<+3}#h1j}k1#y#_k-q(;ndz0-mt)if-*i|(m*y$!y86~ko1byc3="" zpul4+="+@Yl`E{bRtXE4}nCK`C;">7b7y%}dr=l6cv*h-j$2#8TlKfsT=8knWB;2!mc zENW0^e~rDb&<h_3ylr30;@afsd;unjt}7dmkzs*f*<@g^_x|lbl-o~ocjqiac=hfq zogfr<p#9s8yfi="%wmb6y%D">%JGt4hEP9VU~Em6>4SMQfJ65n+L)U_ePmA?k9GSkvz z{F1dxQsC6kFIl@Joo~(fCCg8ANh+324WVB$^7&Qx8anSL*OQjB3jLCGBZcuzuh1_U zxg=E!2!>O;B+-0fwG8}{odLyuNuY9LAKl)QK#_Q&2VtZV^<#aKU3a7~rH)S$B7)m! zR9ivpIU+@R1m4IYN2CGttv7PW5ve$f_ePF6BK7^s8#(5P1Vqg&(3m3%qk(1EPUExw!K4y|Rwp#TA+N z$`%3_ms;H)aRp@v+#}kfJ?9o63LiPQKx|fLzjAK**?^8Y>e<s#d{couc)&mpy<)|> zr0v=2sxb4s$DXZnm|u^cEuh@5>UclBSF0Uglp?Y2CAyQ^2F_;Q^?*tS>Ppksgxs{D zpgLu%M=*UJ5V`PrfyY{8Zn5)y%I=9gX}wgPhEf11{UDraj>U&gF~_#XsnaOjHFZ8a z#bgU-lPFWc{3fjKYviVJW<7kUlI+yyqeBcth6p+j?VB{LPaMYz?LVg`Ji5X}ZTq4t z3_Sv)t}xxZAy*iNoqp&F3$E(w$*lfbj>s$ll0S5XP2q8DtoOX`hCJ*P%gn%^(v-ws za)a@Bl*+qqFqxVYM-53N`fOxi){>~O?!ZarB@xASf*3J&_2;Uj3DObxqUZlo!DBe{ zh~P0jJqewld$ouM-DoJEhULz8wK!!w)?dZAPT)q{=1}~QqA)^V|LQ_>9Tv&*uP(HP z3$2sv+j61xP$`)~)bWu2EEY&3{xhQ;f95~ylV$8bo6N}@^PhcJ`&DqnnyCn*d=T1m zGQ7)Jrrvk9it9|=XOFJ4pTM2bsv5|Dn|fKsZFUI%s}uReBl9YRo~fyk$k)i*qgU9~ zr7kb=oyjxV4K^ilUP&GfP!74Y*gLgQaUOL<oj90$jiqpdst1(j`!o?6cjqt;bkxix z="">qMp`%lZ8sJs}(GFl{Hw<cl#|2&ivz$ft!1o~57~ck8bzs*n7wdr#nkif1es7m)qm zf(hk`?ifaw="">#7#G+r;}oA6wKBsBdkQ9n$&<el<j(d+p3;ei5orc(i_62+mq_55vkn zaewob="">MBKC7m7~$yus-{puA9iUSR1=>|o&XuIDXhLFC+1$QF5tMTnQVgCmYxRP$4g z-OWM7GgcT2!6*H_8PTWc=*=#nZ<sua12l#o%?eefc;m>M^ZvlfCtIx?*eO6NIzVrM zL0Jidc!4H{raKxYt|Em<6!)s`!XnyQjaReK&6j}BWwe)U0Ujdc=I(x`K#hf-M7J0D zZ5-=KUyM?}MEl^g$Wj;d+9sd}%M<|TDw5V0M26aq8g54u)mWbQ@Yo}8UjzN^@dmex zjA}hKqWYQE13tD-?X$k7eG&u4Kw6sKqJ_1wY*o!Q1al81=Kw1~z*<i<t0(l!z13et z(8s+="">A_{`qa$Hzv$v=tfZ|?aSpI_?dclZ2)&#(3K2R+X<@4!E#Hv$wAmS~{J11N2< z@R>^~FZNsB-y8MESDoR3EFuPHDxD{e3?5;IE9vpwNloyP!uWSq1J7XmHk#=@Zoa3G zZ^XN>59J+O^feUw+fErPPvQOa5eyi|I?s^rNbyZAZ2`tAK8<+5eyloQU!9O|0wfi> zWT49yya#aROw;>1K~`@L|DMoiE<2=y&0mm*I^C;N_{mBA(4=|Oj_km`{~=%U!OrAc zMBu?Qhu~hM$t~*rk{-R31{Zb3jjI=R#zmbV{BP`B%V>DzQ&|+VluWAk?-Eb4uVpz? zcR6JxX`Obvo(pXyEGVDP@&YbsatlhQAgLNUu(E76*^5W|OQhp;i=`~i99QLTMQ9cS z3t_Z73#<guz{duj^!`v^6(b9eruijzeo0$5g-*@jy29ynz3k-=ksjr^sgjy@a^pe4 zrd3^ypume3#vj+#h;qeg-u_aczp4gm;fv|c4*y<uix^-ot7u(3bcnud+="">4+EdVfN+ zZwb}zOSQo{#nFlQFWwc@$@AG{W~|gFUu*R^@%2eZgwcyScd<0uo{7fVx@9#6jL5s^ zi5JDqc`P^3MK@5EZ-;?Vwx~?rWUlDaLlvJJG1p|}%IoucE0=Pb=Uk?@{;+b^2fA?( z7)R?tNUK~iVg^5cgx#2VT*6aIyCSe<tiauxg!k4;>Boh7tz{LL&)vqZHl?>+`4l+6 zKqGd8vX+ZZ<g6m0p5w^;-d?_oruoke`qhwzv}y^~(w?sud7sb~yjmu8t*mh-27<d? z2#gp{+-oetp7w(~bfh~y3v`(tu7v="U`vkt)ggcnSv%%p}2LV&odl<)c<4(P5#f`91" zjkl1tzz?rk9oq$tq)}9$960$n07hpxyh1u3i3leo9*klvmyo4qns`u^khz!ds*k)0="" z*ap?9vqli6$1<m8?ts;6c48no@nke`c)a*l="Vu1a3#KgCwP5MaZvO=XrTg~GotSVQ" zy|2ojavm="">f!G~1C8(3Eu|M!o{kXu;rO{cwi2i$bM>IWn3Ev<lfh<78`?uc5}ly&p` zpsiedn="">UTmz0L@S#MPHS@eBTK=4eHI_WpA#1&3SD^P}g>Kfmykb9#Yqa(M(=DvU+W ztO7=#tS>0F6%(l4u=Z3cs^y#jfa{|tO3tb{QVfc7%3r3)kX)*`2{bXitSzK40GOJq zdw7<ibqvb5id?ggp$b6&9+p~frv({=c1uo~ozyhy+wqyf&48`ba#xpmdutbtb|obk z{pyfohxr|?y<rx{d2@~jy!0$%6c!3vklm!ursb5q%fan;m8k48%h;ipud="">VLQ_1g| zRi;Xb*ww3R%M6lr$iZK1sO!WJKzFdt16meT71_SD*;wkqX&ZDp;ty!DW4o}9qFR<} zLs@63T@Bt9F&t5&Sg!=HjFor^^pCbb$D#KCzt>(8`xeC1nAoi{Acn42mFN{??HRs7 z0Fh}Gc5lL=B)6OnM5oslKLgpZ762dV)qyuCa0G$VMZH0O*Zs@tjxd5{)kj(B0Bw(z z=Y%jOZeSP+q^n@7uVp2EQfXJ8hq7F%Z-CPbJ-UxxD03fXD?CbQsH6B*l$>1bZ(s%J zCI)&vQ+gCo-%ursN%{>gzQVHCkFi*=C+WVfS+&JkwZ$7{PLjw@+S*=Jv$<$;muPFZ zzigIAFVQU%q|Al7n=C@hN!Fc^U?6ya-nMKh{&K-anUJ$Ep0OLsXkiZ<&)5%TR8~@% zrM*x_6}VS4vX3~|jPq&g!PW{2jg3eTwy8hus83WX>OBQXRA7U4u^w1!1_?*byd>vL z>If03-C&(Q#E%cpK;^4KoFDN6&kC3seOmd-CIJr{Oc}u=h6Ws*CwJ@1dm;R+kgj|i z1BdO^QDk9{fF($`%>oxR4GHYWNWDw+of**OcHR9e3S1HwxP;xY-<e$$+d=pq`>1!@ zM1GvVs{{0)GR71YhR}!j-6ZzI9E^sY+<6BA_Y;{F^hq}YE{b00WL=m|vPP>C1>czr zbk|N<n}88@sguzj4^bt#1jm5t0o>l#LHd@9k20ZAX~Va`kL4h5)r~L3hGB34*3ZVv zI<eiq0dv?4dwsts*7qsj7sfurpoee)oq~`tcce}x&mtyltuhtqw~3-ldlvzyb`70e zkgnexu?rf#8="$=r?`IsL0SfJo7%HgFDxBQ|ap40R=64Qr3OrK{nDv}d`*Sla6BFn4" z1lsiex5a1z*ru~&%wh~;yxxy|vh&fh)rmmn5f@umb!~;re{o550(raj<u@th1reui="" zp$5yvyyzt8sz5o(8u3`yV7YtnK|YV%p7F%Y7Wt5J5YOOF+rtIajGj)AhV97 z+#\~$=oL=k^vwDOS8F6#kwbN\_R5>ucgoXFskd08X-%B{{)\~h\*\*Lks#\`I8+vYSxe9aO2RAwm8tm\_ipS< zUR-(So21xWb(t\`)N7GRrhtPohk3+Cqh\~(vs)M+$Q1a+UL)HCcu2c\`3WU\`!ZGl\*fN{ z&ufe)@zaFs60g&+2SHTYW+ZDq2BYLcQ|(i;6rqQHQ(hM(k\*S^275Q-+@\~NRg01Ns= zgAfrms6mka{sp&W(I7y3\_\*8=c?Hf=|6P(u\*HBD?tgRm%jPlKoj!ECKnf6T!0 zV}^>N60guu\*\_@#Q%GSq\*3hUkguTH9#bM&3%N|jc?PVaz;t;x}8Ctaf@tOG@V\_-dfO z4)097CzckiB6r\_mXsXb{U4f}{pBV!GGU>|{L1Wl|@X(Y\_p z#6!{GZb6WZ?CksZZ+%aaEk\_\_gQEF8xPa8e\_up|Atrq!#3+1fZi30+@$?+1z2tXroV3VV6I@ zr1+f1;e\*egfkciSh$\`V0\`K0LRTP-rSd^@=kmEZ;+Au67X(Di\_q@WvpoQiNKHk}Cx> z8mdA^Fl?q3>X|0dW>}\*cd>2\~?qEG\_G(Wo\`#@bP@zwu{bC6}cl!8&(Y z\`0>HJbeX2\_&-PR2o?b{vRqSl%;>B\~dukiOqQq\*dO}>gk#TWYSSugV1nheQAc{(izlm3Xms5VB&!D(xh^S6t>LV152IvFT7 z+@o-?P\_^7;vR\*|a?W)dDJp4GzkTPBQ(UyVEIjSXCB@;%Oi3JFF1Y^)Oxp^E(IDw|BnseonRY{y)uXS z%6Jk<{i?|(i4fzFr3pvG\_JN5I5O4oNT(D%\_il\~L1\_B\*UAIvb;9hBDl93E@\~B2k|M\_ z^4MBG22aTGm^sFJUfm\*u#?H)k)68F+\*EHpsmx|wZFW$c#W^D\~O2-\~ZgO0!ukA@9@} zQo8d6!R8c$mv\`A03Q!\~4?w@&H\_Ahe@j>EYZxxr}Xn^6c)pq\*ICzMQ8ytw\~KpE3\*o+ z#PV#|NThe$h|{Bym|OUy0\*@2e3M^Ie(0vCBLv56Z9RziEkv\_F#wL@@waLiw6k3S=q z$|#\`jklGVhUmY6\*c;A}s+jHfnZZ%XjMMRX\_-YA&AmNq}RWDT^M2j\`Kk2wC\_Pc zfX3#gLRj0M2uzwMJVakio@}u\*lO@o\*ovksrUi!6hyBNISIqlnEQ9-UPrsPV>$o4W3 zkkjdypLOZ;NioaI-Z$M>kXREQTod{n$5\~D\_ ztOdJiB6@bSl2Dkkj2T;Z\`7;2e@%OF!UaVk=&GhmzUqdl|4xaE{U?$n7(-r\_Z^1%nV7!!LoC zckxT%9$h?X^ZeUx#WSO7w18CzT3(Pwm\`moZX0ihRb?YZg\_)d!#\`?qvMXFpEeWh\_Ea zwr0UuipBaNteZ>\*NSq4R%mS15zF+u\`m$e-;Da{!8dnvYA)DB43-}x5{%8K(lW0n59 znZSz|ru)l7\_xJbDgYn+-A1O|-(|0$vu?yOJ!qfDi^jL07(\*N9FQK8-5v#VSoycO z1ni>#vJxLwO>T\*9?zxx5#BuxLzyo2U@IJ-FL14TbRhaUy94nm|Af{};m|nBB8a|UWih&L7Ux^\~T{MvRebup>NFjCEgj(T!Q(5hJtT@ZJg>3Oxi@F5F-$8RC\_@kjE44gXE1#4OjgWMr$xtY}\*Bs4peY>\*tm z2p>\~zJvo9DtKtp%\`Kul2Y3NbSBX&i-IH9@xd\*z=u(wftTDh\~Py$x2!?Ea&vnoq\~Ha z+)>=+\*wnX>P+GG{UHVLOn@t+CDV7\`FLXyN0-@J\_kE)?;%kwEd@Ds7n@wyqKb4V\*rC zyca\`Z6?^psq\_2n3)(stnn\_QX\~lQ4d}F\_asg?3S|B$Re&QD8WEd0+J#XOL)U\`j-l&Q zm|yJz>G\`P|O9?J|2AR;l{joa\~u;0QoDYPW%3iMRuCc9ZurZTF\_#jvZvg= zWuR%mg>Z4|bl?+e%kD72zzg1o(w?9>I2Xmw\_@?^!ViItpaE+yO?ZJf<\_p)kiobmCD zaMiLXyX)O{?2wBJv0zbVDA{Idn}qD<4VxRUMdyZ1M!NFM-pt+Q<0+XEW@NaL\~?ERNP>\~!lDvBIz%x9#2883K!ec2xh$%#!=MxIX-FWA zRmr4ri\~0oTNMeZAg\~RURJG@9=OH7YvndSY}S%M$=FDfDF4yt5Y^l6or3CN+UV^9Y< z1eGf+AuWoj!p0n>y zz2naRc{)M\~H{akqNHgafI-Ou+bRf(3WO%u)dan3Yz\*?5>UTl6kiFe=Hy&\_o|G-tcD}Z+ zc9J0s2VdkKgglAG?3N#HuT35eAq?5h5eS2s8V5al2\*Xxn^Kb-KX)6\*}G=VY&cuHs+jXe?9YO1v$ z(rcaqR|92Zd%?X3SQyaXmLgGS-oile+{eQt5htx79lj}7ya\`74(RG#\`wJD5Z\`PLN( z9-SYx6Jw@{!e\*o1R6-^0XLti7d1jQuwOmkxC0RlYP)6}GjUHY6{vUyN\*Byr?8ODjCr>|?r5;Ne2JZ!AzVHQ>%$)G\*K\*4U7vP-um zHfKIj\`tvzuB8&I)buH!QZRsoN{gIl2;%!4L\*}%Q<2u(JVSqsiexioi;GwM{S$ds^Y zs#\*^9%atB3d|7a@>ej$??E12Txn&EWjhx=XzaIsB;T\_\_n8r3ht3@OTI(sVg}-e%&M zd\_7Kn6M!pB\*PE9^rXj^A=mj#aI4E8=RCBFMjhN?yQWPEwSnnr1F3UU#opyTNy3p zHXKSwTRI\` zYdBBwknr5EvcdI0?K9usgWnI%mKWc@&n7l?(JKjNzJ#Et2^95tmYB|&0#G\*&M?FfI zCp}AlEhX}E;SkXB)MYSXp\_f0>7x;leI8}\`bo z$\_J+(dNsp\*P39j&jTCRgqW\*%NIMhgYcX\~acMt\~OacOBG-c9hF>g{Tn+x};?\`BjNAj zKo?u!BwkLe4VYc0y1a7K+A%S!6c#d%z#((6Sm\`ncM&Ug z3ERecH+shNW#wSK6FbKR\`luwNwVC4k+Fe1^M}(jibx6nc=\~UaO4YME3T!QYA>m|(k zP\_\*w\~FVH1X\_ii+uNioZfnJkUTWX$i=qmaCr%e3}11J%U z5+PEDHAit+iVUcC(lH+wPXz(P$we$rs^4cu@\_gS#B\~A\*&>VW$U1iS>s>VtqT;^\_Y7VH^tLwU}7r zLX%VU2nlIoh6VCU0e<;7}NpeU-T\*&kERjn(8GC zCu)LRfcU$KZu5+E\`;h2nihtZZ8;I4W(i9OZP-m?\`g%\*q|q60Zw-ZvBaS3m8hk}%&3 zb$pDXe\*Zgj%!TZ+24Yc>ntL+Fmidei01FT)XqBWv#QrZPnW7te#F+da<|1&{KIW\`I0Io+3Drg}4\_wWM4WbmE{QA\*z>$ z4I8tQiOJ()WSPh4^}TFdkuF4}qWF\~Y2kA9RX0rg3HAB}V(+>Nl-Ow}CVc!%{y14R< z&vK#Driu)UQ\~{%oE1MEvNt>\~WZ(P@=TTc(cw3eu<\_!!d\*793Rgu}1C7xvudbiEZg! zM6nsB|5)zP0cQp\_abdiV7j\_Mr$P5WqNMbfJR&5&\*NR5vX2s%7#-=5EZ)w@Kc^=bJ} zncK#ZD8%kc8q-cy$FyeI!hR?dME51>ptjr>oKQyFY@k\*}p5ZWCsFea%l|r&TXAc&V zp3oqzfU7nyRCYVgw\~8)DZ3+\_;v|g!o!2;D3RavN=Ql(TpOF4vN@\`kv$fF^ieC;EVa z!TI|X1N-JEu?2bz|G\_o3%Zmt@nIDxED?x&9tN!3u&Y}b7^tMnqBR<\*NvQ+53U+w&VogMiaJ&)7x)o+t{74BKaD!Z9tWb1 z4NK\~wAx7Irhf6Q#UA!<@+#3MGy{o0z(-gfK\*vlOF=M57CfF4{-aDoSQm6ntcRqk\`g zlpcUl#}u%PQO6XZRv(#@V6}eDF(nMgX|e-&KQQj$oPXjjio-%U\_s(9a^\~E\_30=F$x z27qe;JdN\*bS}{4PD(TF7E%Chj%K?oi;\*31534Bxl1JY+(pvTjnmNSlXFrXdG-DYjR5ZRnjEN zP\*>EA>Q@Cx>gBevIzf)3w^C\*|rL8q=p\~B>lBI%HA^;J7%15\*%FUZgLdEnFmHZe6O@ zC<3fV^)1Xf\`\_tgrj7sN\_Rz4VzYRVl?1^2M{GP?qDGVjW9vJ9Xn6IYrMX6S$vSW3)Y z^s38prirHtcREWRZ=$^1{5<8CNoSDbV zJYi^0kjrN(tEaLlECv\*V-JIaRMrqTkfM!p#Ducsx}Srl>}E=l17me z(bay#QYY3gAO?|r{@x97vUhHTI\*)cYpvSo;jK$K3cWszwjC({?&8WI9P7nlc7\_wRz zlU>uF0cObS>U7(OgYss&YN(ZAYoh5kM\_iQWeu;$F2{3y0zLtHi3MHJ@GYe>^ zI\*VIrEA!KM\_DPE\`WbsA}Xl=-\`bg|iUB$Q5juN+ce(x@N7z8&jg&L=9Tvf{<&!1Prm zu-dG?GAjTuxlI6&;vl\_pPF{F|EV6\*lGvgHfSL04?^mA6<}x?du)UiKk\_5cy+|Yw=!U^)VDKo\`TVNr)fIUnZ>@Fk6PAF-N2 z\*Z2vKri%#7su9j7ta^37tdiQ)J7jTvvZUq&%0x2H)WMpK\*v\_h^nvliJ+!Maw6Fd2D zTL}wuH}O(<8XMmUza)7;W}r2xyd>w$Pc7Mauj>q-<\`C+In&n@}F4c-ki;SiAj$S71 z$Q^\`8t\~a9t3|3d$WKnT{G&dugZQ&Bems)!=F4NJ7A\`seRUZQoR\*Qnk188#yvPFznL zY)@d;084BOmR>@s$qIO+ZP?alkg2vdJVWom@es|X3@a8VpLo$8!p>\~enc%w=d\`%a? zM&hZmS?q(Mx8i4zW0hd4pszjdUe@CDESlt{Y\~ReqBs9WlF250qxM%2X$Y@jz+I#qh zk6U4Qr$?8YUOu6\_AnU5{6xsMM>\*Avzp0^c)U17 zbF3@7-%-|9\`RT8-Qc)+j@q#Z\*TFslsy4S>iI$v0^=;\*V@B1oWa4irHm2uz;AB1k^P ziic8iz>-$xnD\`gWtnvw2T$Q7hSfw70Oggj;aW0SXs2?Wg$Gy024V|oOyhV2Pv8cG^ z^Kd|xG=\~tfRE7)4wwF;QEA&Zam#U\~%OQJptn#8cQKrWF{jq&-4XG!sg^;Kb8Qf)z8 zI4efT8U#G>L1<7p{7&YOQHGIMLX4bW7T$3U<3K#bUeP1F\_XOvGL&Ma|QiTj=iH\~h& zC4d)J!FHRDfM(rFHVd&P2HlooD?CK@d1D@e((EPP7 zzCOcQxq2yryASoYqR?XnVN?vN^5Mq|)5bVhU@b#LDD$$|k1Uh\~#JH$4H$QVK$J-oa zDp+jMLNAjbu3cn;Y#Pg3785XNf}w5XrpbBT1;ur\~!IqbxVPjcf992DDwmdUModvw\~)^b$$IB@U\~ZVB-KMhrMEF2fyJL\*>%W(6Vv2 z?GQPxT}YOl)$dq&GlBUVh7C%cZ=pxHuuIxh%#0mer7G^Z6H\`(\~+{p(9?Y(I1G7h\~Z z;fD3k7aI72e@BPOnG\`PntBnjm#}\~fybwFEe<<9}\_\`pTb0dM\*A0V$$z7?^l-9yNe\~a zn\_ixEZPX{(AQdYoa0FBP-AJhR@bgV2j{cmDLzIt0J#dR(IS\`3\`FO%3J$$IW>hMVGR#\~x z6aMe6NOKj\~cn}aoN@#?>q*!gtQxO5`Vj2w?7;(>`pb#<;c+(u{tUQnf&Z8T#5T{NN zVB-tl(_Gs7eU{HtZ?v@sf3ii2?1F64L!$tGg_-NhPcmchJ1aJg``#0g*r-^GaiF?` zy&Wwp_XJI**zx`i2?g-9m-<<r<m&apg7@v0nd4~uih(%3nb`xrrav%dv|`o@_0cdk zvsyn="">?wH3{`Ttyy?n}^aL0MZj5u@(w<)EDYRuKy?zRV_twN?_?w_pUiS}P{F)j9LQ ztt@!XY0RH#as(CM1<dnlq7z~w1dk@-b;zu3!ba+u5z{<%5m7zcvvf$`5(u}i&j2j= z?zvoi(1a_*q2qpa72_35ejw7!h@8(mfbi#xl2h6ki2@pka`dpieotni@whonod}~h="" zpswk4bcu%{h+rv*j}w9(n|^wng(}2="Q3-yCW8d#D">wA|pL;%AFkNivdhcRkyA}G4z zz#6{rDi?>6_A_;!?lCSmP5n_rG-HRl@S0K;YJN)))796oxoFrX*uRvZ7L<y&hh$of zqk!cgnxnf<ibdtg6rlmcwh4="">ZPRo1e!YwnADNw10(Wa!Aj_FB}RV|IrrCT@j`&SB1 zk)s5+s<ccpxjysx{(n3^(wtu*!)gw^df5@vqr2swqoynl#p3)eishcmv6`rjo^vgb zyegjg6r)lsf9f="Gnn">Dt-n<zrsuvqtb~buvz)r|5szepq1sl^ngaha|oe?{cg%9bx zwzd="">r1WC@tzV+DfiP^&wBdo&|gx3wjt-vIe-d5y0&1owpMOb@VL4%`TPRN-(UKaBt z5hr)9tU#~eHHf1(1<z;nfevwf`bfyutbi|p2ay{@9rr;pb`w7+qobj0xi=lhnoc4g zkbdga&poe~)&*&tz^sa="VkrfF8mce9oib-~#b}PSEOKtVJO03+g}M<lA`OsmvZ}_U" z^8rn<op;rpz;jlv8wzd(z7^|?et%2no{@8=""><gk%dbcbgrt4d8sjyft$p;okvx5>Em zo%mffyxYbzzQ_bJW;}~->MQFPkh#51(&a<r7-!lvfs<4`*cm}`%k_gke!8-sduU(#0_fJD0} z2FV7L9`bt)y`1&@xU(>xPlJ7!BrySiDKi?ky<f0ad(hy8ijs^ilc2(j=-*(khjbh` zyqr#y1aq~uzb()_l~2ng`ptqjkdqgisq*a7v8s7-wtv7zsk;v@ngislobc-<2|xap="" zsw*+="">_Ika*3f@ed^~85E<_ZLx1Vtu^jGQEF|5id7Ps-->m4T<3@T3zS<cfkd4x`|n z*j6sym="">|s<6ZERQIuSf2vflV*9^t7*++CB01Zb6UB!oAc%>uzy`EYCiiZMW+H*>=^ z9e^{{?WIdfJ1<nvxbd=bw=e|68tg8nfkr>_Ei7iJX$Co{OWUNd5;g@)5Co5uZ9cq* z$;6;ku_v2EOh}N(!hvMqh0>d%(b&<upue!vu^!{r=1mc1to3{7bjpasf#kya9k!ef zkowbuibli6rsyl$vsf="">OHk-#&4l7#dE?~?{w8_P?X9Lp&jTB82c-kI9UuP@ysuC~W z=g-_u9ZN>45lq%Gi)&}vUi{S^xn=7$YKny1Qpy|zJafjAsPuCs`Pq0YlR3dr4b>5sQMeyvp zofF56&?&E7x2vo&5*P>kH|3X8e!QJ#fMgCS7>+nlRmx6>ip@pEifMk8I@mCx58O$O zx};@yrcjhNMEzMiNpc7Fmp41=_+n$audwen+D!-Gy(ObAWY#X7UVg#A9VFqP356s~ zW>0KXnTq2rGgx+oot~xnLb7r_<#9u81#`G1SOy!*pXC>>opP@Cujft=p1IQbp6^n9 zAK)9enC}WkC)LfU%Xu{Y=k<~{T{$i>=7S3k0+<gt&;|vovcdcr+zavo9j^jcy;`qw zwfqcla%p#bo^;2-ltb661f0+^hd@mzb3x2)w3dnko)ohje|+&itm="+@q1f+K9Q+eD" znod&-qchu+z0(rftjeylx#|ejz6p7cf="">e^<kie_{19rq2bn|>qW09Y58jK|)!k*)> z7YuEr@UV6eIMi}(m+Y8Xzu5K4>N+D#;A2)JH7N|DN>#=~s4)baCWNduMg6HiIB=Uj zJXOwvq;QB0W>&uQQJODD*z)w<zm1!}s!b`9t3n)4sk-6ah%n+%a0;yb#s^s-fy|fh z9phwo1zwlv*o~gpvgl&jkn<="V#pPOv2mUnU&@D57x!N--L+wcztHm{1as|%&&_L}N" z1*="">lzSuk&s3IH3pJ!1H*GAFBAixC(2C!qf@f*h8O6>fRFOutp##x8g#H&3kQ{GsXz zn|cXTg1QdkYy});;VW!>x{DY(_N|n!j7cvrwU-@m9eJ3HGP15LTNI(WG6S}`iWK^e zJY>NrJGTXofFmiBR%9^A8w2>mP?!YOk`;VE#XUIUNn{QJ2!LZf8ZsDY42mT*bib&U zd|$iggId!MzS_SFS(b^vYZShZ+<gpks}n7hygl2liqsf~b!7}hlzjkq8y)rwa5rpu z&m5n7ixbfkr+eyb<sst1&okbx(bg7d+yc!5(&il9hz|#_@^%cv2x`pb8bucuu`?cv="" z1qog7m$%rjte9@%!yygmr}vkm(bxvgm??nyv_v<mv8)^enzrdi{**$jlz~!^5buak="" zr$&!="GMf`piiRQ6J2#aSksuWqKD@Z`@o*DTC7tqiJypf0*ccwDd3fZ4VvB6#&&Mt(" zho!y~svu!26<="oc6ylSjFj*z2$8b~=CR-#LipTNlCH2b">2CIuRsfhy&!d{6GgEb8> zR~Eg3_1Vymi>Wp)W6vl#@QRke1jzei{F(^4^!6EkohF>#Xo-cow5qVcJDQf=ySFx1 zYUeDO7-meT9iw#Nn2lsipB#`MGQ~DFd9*G(Uyi<n?s-=mh38sp=qm*qd7i04r+k{v zvjd%pum&i`@s}#7$c6by725mpsvt?u*1ba00jt%(ndmw|luy)sm_;fu;ha~pwiv="">A z@XN@hJYU;NGo)wZ*`sRi8jq~8+!Gp6#`$Cb(w#t8u3fH%N0jMNrYIQV<2;M-vCb_} z<e6nh*hohi6^zdeah%ug6(g<krse^s2e?ivn{=wujk+d@yhi8qx_^f?2laq-a^hn6 zf#a?u0|~zm*d(vxq#vhtyvg9zxvpcahhq6r%6iop_+@6;{)c}h?nc6r="">(r+l(Zx5@ z5L<kb-aznytoeeudmm`$vm<<5(&}f<<ay{dft^q;ojkmcwt&%@*ditu7yicz?;m&h zwlk4k="">Y1ii1+2;JC5{uai86a2Eoli~VKsoYK3c{S$)|IvG!~fFhyI$7Pk!RBQSi5U zX*Ut1QFx2EUgsW9Far1sJb|fQcCh9N)wuBHV_4NeOC%XX`vXhFGQSTjkt6Cbutb1Y zE0oY;it#4uGMW|Z)VR~0+FJPczqau~?UOej&mkYdS;|=m+l70iX1zzs^!}4lK~N}} zA!{QJpKdfTx3NzWzr=cYPE%a#^e+R>R|SvxeJG`M&vLU@+E4Z^Lhr>JHeu7G`%}gw zR)!K;a&k?kjV8t+f%vq<=y9eKeP3id-j}`^#w>SPk{HYsaI!SNoP<6dYO~?Pohr$W zNf;v_C6MLix9fBRQdnUzYDJM!Cc_DeSC}~?GvX*041Jj4@5#?vMG0#RFzcq}!bRR@ zgO5$x0sAE8Ts2BCj#K(o|DM=9E+lbc;+S3<4>jd*z@o#S7$LY`<u7|tyspfbzbkem z1fagou@dpwrx8gw@40)uqlfmglhu<jh6b&y3qtj{;9@xg!0kg&tqwj5c2&ztum5{<="" zgysjv!_t19f+|c?bv0lcwmh?ohnemz="QvYj{b?fl6$v#_e52h8-Vh|Q">oLZ4ccmUQ z<s4jgo=57ae@9oi0yp$=;a18ehl{4>NW{o{Q=xBN$~9YrRAII^hm#xGMq?ncsmbwN zt|FPdc8;N$APFZUF(#cI#(vV%aJ5e%Nflc;1kb&J$VkrMEur*WtiLQV-zul0Ef!|) zCONr+EOM%;kZMVvl6FI;r~10AXN5!vBz$fr;s%c)xn62Vt_zTGqJ_3Ap-+LQ*uCjY zZ8*iJ!~R*DMumO&jx!<xkmb6+6zwctt}m$h0ku@ldt>V*KgPWXMv%BfJ|jp*3Qo14 z{mOgCnz9qX`g<kn91u5jg$#{pd$tdtgzmi>E=WyPugBPq^Ky$lHS6?dcc)txS(-VO zGtsgvySehrh5AjR?1X6M^JtujBdgBa9Oi(f%M~Ev+%IL|C>&&_tG7+qJYtchR)n}7 zk~C$1vOq+B;cTj68x@&x7-?tntQt*f8Qk~JO>fkN$)?6+@5KeMmB+M(y)C)*$rX%9 zoE}A`U8aN5tyX^AcxX6(EvW$HtSr2xPV|O&EoCUM1j^LN3^Dm}xYRR^uXJ+pNig-< z!?or~G|OH{T=MCzDv&_TSq-;UIlb^MX4EbaQ;_1N*clR?neI<g#leqsepmclk_ljr z)ejwxufk&zqo?ge(etunqvc5xcrpak#`c;*mpta3|c^uf`4`gwvxf<;tc53nzokg%="" z+pkccnadlrupkpd)n7ldn$2ves#msr?cvcrmh$o(jn#="DJzY1wt`KIMrs`F}w$~S1" zj9|rf4y="aLW;Z&B33$j(Uw{YZ3hB_jZl22ex)p0MtIL9;D+t9ThpNrK0P`1i6M)on" zhew`bcwnvh)w&zwo`o#6e(tg4tlclw+a#igdzeisj(pw_ogg93drg="4q<{wlaQc^1" zvibbenw?7zems|qduo5(l?3="">%xh}?d2ga?Qr)z_?(cteX6O?LTP*8G)i;%K>D!Ka` zWw{g#VbhNY;+zjr*`7xx2jh}t2OOCRA3K?0c9ZyP5@$&7&HaG&F=*#e3l<@>DYRtO zJ$i}5OI$rYsFL;qwXUwiXFvi`QSR{_oB2e+57p8@0ovI7uYqw^C0?k)Os-LG4|KZq zzTq)=ir$_#h8YCc_BRn4)I4dWIiY7PA(+91d%qW&d!dTBhG04<ci3}ugsefht6cti zn_c!grzm|bo`nz(#="2=3">(Ai)1;ag0UEri;3XIM;yY5-X<>61X3n%Wvys)0mFqqMT zjXMGkSbOw^hn7t+3ly9OK3}q^Fy5W^!zWP?mqHzObF0CM@AA@v3C2X@ykV7y#T?Xw zdhMP<=s*hJnN@P+S}p0$t*ug9vM~WU>g*fh=S#oD%THWWsbj&hW_lQC3nroFo0^2; z<wdnbaz#9wgfu&n6gwcp=g1sakos9o!|5}!a=5pkcvei8ufdko9n?lsrjy(nrfr0h z@{(kx4kt7h="">2gz|VU-euz<+kPP`eHhUQzyIhB&Vm4v|Ln9%p_Dxd8P*MHY5J)ZlLC1tz9D{87#c6tDt6lwG;wcu@b3f<|WIbe%yvt z0A21m-@gdXT*a}Z{vTy!9xNB=j~?tNPvJQ9-2mfzfcF3?fxex=JM^x4Jx@JEkeJEQ zWQD5K{3rbv2+`gsUFaBG;9wXc>@ByIp|?CiMjCn<#!0Jss~xW-YtN+E#?`Ot9tvl+ zwoSSo6mVGwNfUk-!ECY#6#@ej#XX~taoStw0*(JN<v&rw!#4xh5zjm{s>Q06@=as- zX0-NdswCr2d?59?;S-i%wa6A^OKwL<;2zJRCLCF&7yVK?$|mZ<o`riu1h=?e%iez- zbk&u)cuj56{<e0a8^4t<nd{barq4{nckaf-yp1+rnk4f4="HzkM-cK3r@G8OrdcpR*" ziemu03="">AF4Os~6@O80UL_q$h%D~Wq!K#_Ye@4#zsYT=pt?$|+Y)Oo1nKI2_R#z!($ zZuqxM!n)ozP|SJybHAwl*P+){!lydAl^EnBceJB;><&~}-OT3D)69}JxJ8bc@1m{0 z*^^O-YB!;*#D4gXYXjM}1M6>ws`}Gc#qMlwgdo@(lNCuEH!taRhtK{1C^~(>tYmY( z!mMi0w7r8avSJwb?7@m&NLKOfh6N1fev=jYHNWy@>aK*~CgPf_-6Goj2X+Wsbk2C- zOajJD+DmaP-<`2{S+S1e6%XQLp@!xi_?Hdq)i_$icX8l{QikKV0R5Tk9tfZS-(+FC z<wrt#{x$lnnvh6e0$tf9<ppxe+g3)~)-y$r>E!B}`3)0Wm39N65c0?kDVSivA_J;Q z8s7nMU-ljQ@UqJc-{lClP%j2LE%qffQSA*z9+0cCjk?eX@1yKM5l$F>xlIHq^rFq% zB1HmsR-tJSB_dwh?%wzUZnAszeJ1rSK<d}{nuq*kq9p01>zFA2x;jm8>osIdq61WN zB}u7%KN5>*GZ=b3^hOJJ;FV|BnDx@LV9tG*!QakADc%C*PsKGELJ(%t@%PPii@^bv zQnAQuVsj;#z@oS4YG~eN`WNeGlIM5}#H1}JcR{H}MV9O&{rqI})%QhX2zNgB#g3v- zo`q7iLkH$O7!x^`kz^z9@s=8qCsiZRg4`s0K<2Z*@I*854Tmpq6p7NU{97G`(4?h3 z*0D2jOd|Bd6U~xRt$_roYdvL_j)(9WL`zroeQOp$K~){DXW7&w3u~iId$?RrZKL2) z)bf%o3i9B+b?#BM89t8PR;qM}a8DygE<bxdtjgx1k2t~ubyrnqii!bm%wmk4kuj4; zt1~qmd0e6h3!d#pn@wdxm#gnb1b}hz)yk1wc="">f0tp=>BIf~GOkVRz-U*J&V4o5h$y z%~IYrRs*nC8?d3cS{s-v9v6I2Xv2W9Kcj0O?8zOFE)d<}?tHi?tTw}5VgfN@hR9d} zv?c=9F8jQW4(<9DahcIwmO=18a)`8Qsb?dH25oW4^ZMpP)!j9$f<rvv9z@ewjl|ak zxw(d{l&7(t0jah+fv?ue="7hZ?A(_V(">KypOZX;%2nC5a8ulnZr$O~;BzDxiOJbD~% z6ew9S8(z(r?}%iVvl%}J18iogG&e>)^}KE}dXD$VypvK4WIc^vINQPr{lev?>~CF^ z3(7T=xN){BOTm529bHnah9sIs!Ipzs*l+%`NMLldsaDlh?nFVu$b8{cT|><2NuZF4 zuGmHTxOcpmYPF1+)pwsIb8)rY%Q(SKP6Ne=D^^Zy&02~&Jdj6jp^aCC3ZuS%0gsHr zy~tdsb;+jpsA${AB72K2b>0Z8;;0z1DWYJ{NRjWtxZN130obvw9TOOwqR6wg$o@Dr zpTvTVPXpMaS^g{><=9<1^S1w<g{?dno?0o!$k^h>65L*>OJ=53SqKVpM-K4V_l=~! zmRD^FHUJAQEi%!#t3zcIHM?ml^QKjq<rx^khlh+-taldxazu?sdneu>dxZybv(uMW zaBgFvLgzd7wUl_W3_#eRm0Td!_VcL=6VxgeLa}Z&pjOGT`jg-Gaf?`oDEr$!7P+cz zdx@{!WPX8v#1gmy7aOxFxYdIXrdYF$t39G&SE_Ky1qk!cjgmMXd0=bhxS1GzU5K3d zC0G+yvFC~GFgbgyS^teFxfhIrQas`(y&8^R2wdS}s!?wLqy2K4Ikb;U5Jl8f3M@6( zWmH1ywqsSx90vRyO0O7)<%-CFu_p%zFt3d8_t_Nx%(AJ3gCFAZUpW3i=2&jjyX4E6 zEhaZgJ&-!o!BJ*m<t!+asi+&ia%6`ber^3vbmoxf*qmvt00m~afgu!r*4#ylfim-l zqc="zzFmVDC5D|u<Zm#wFt~L%qReOjfX=M;3">ulSlep1%T=vT$LLEkl2fLP)K`C(k$MnU?4>4>8%Bzn)G`WslC&;HNh4hsa`kL}7y@$eq8Jva9IM$=`nUOi zla5mR^{Cr~3L#+ANea$Ac{sdxLpQVXQUUovlAAVARcrHW&t%OjoXQcBQ2Y=Kcc71M zyTR@Jwl{^D!F=1#h8GJvf#G77i_+;5;4mmogGL;X3f3?i0%ZA%qEJWH@=x=!(_atM zH{qGCFtP`sTXY)~LJyQ!k$7Neex$^z#1oxnIRC!VhA!Y?*H&?j`sBzquM0>#!TxWK zsWEZvP-EzDW0{7g6%GNlv_}s4{@l5N%0GNk`QX*DY4ard6*%7+<uej{gshbk=?8*t zblta5<pmze@hee3s*zp&2q0t1?1cy+g_rzxai5)~pp7vbmlx(q91wd1syp!9<c<z^="" zcxi2cfnwd="">X*_ag%5EnSbsqF<a_v7ely4^saamb3n_sftvcvdhce`x_q6fgjc%3r3 z!ue~h1~4a@hekoaidgrt39iv9`ul9rb6vq23<e(4z}b="">t2a&%U!?9cr7~FEHlx1); zt_Bc^tW9LOLN9=NvA8!PQL#Wawo)Z(A23Tll%y<#G_th5D#Xj{$VQlgxscE+?38U( z9c+raNcxAdlb^WSrLutRzxP!w%Qkg(NXGBhMv&`CN1^zcjsg@lvo3i=ed}Uzz+?Xi zrNZ9DO})Kr;2wr7cqKa0i&0M$JOD>0aOk3%3!@Sf$<pcj9}ga{vokzlnw!w76++zo zpfu%hc#cg;w(q#pf9sg-dxuj+xy4gk!abcy9&gl`-lhv8!!hl+ckshb32)@wv="w$*" zygiip*szvhv0x0al3f%nwf@zcztmf@uz_krxqkz8pxvwusqcjap#ipcd3xo7kjiaf="" z6vszrt2{6nt5m$w82zndlrkos5vin3-`otqyz="AWvm?O">DTaq}=lzjE9!(8alvi2P zjs|P2ABuSqym&P5rJ&QsrfQl(VnRX3;Oo&Z2VhQx_4+tk08W94>40pX0mi>;R8bt< z-qLG?r&q~Umwyb=Q)`<wak<c&5mu%@;h|syi`j-y>R7*l^oqpjN_4ve7@^*e@sTG5 z<l}e-m>Qt~1=|DGb&KE8*MN$<`Xh<k(v9w(p<d1$gtcz7xl%~v9i_h9cbto)_wjgg z%k(utg$+n-mmwf="b5#(s4zEN0l%2T_G8o_cXY5b5Eb}G1"><-I;7z-PVTnK_=S2Uy_ zP+ImM&RpDLfu|`Hh}LG|hv=8{fMM)X9YfrgCagYR|4k;|{Yx3^&ZShf-U6GkzGbZ6 zHbWFVSD(-V7Y6JFyPRy=sBwCWMjY1p@O8R56^v^-@U`cVy2cYem@&zQmCv<(E=K?l z&+g#_KANYeXPbDj(+;GQO?BOYwBMgyvn@h<(9&_P19z9iEH8FCxHs-*&zA`d!i!Sp zjgKQkL6a63p;vRmP=vz(3w-+hq2NfY<$Mvp(RI?@J+#%_^-1TLz>6g6E)W46sRL(I z+Hi0IZBZGM;4V95gd`v%okH@_WaW8Sjq=LomV{W;38gab&oN+wOA2aCREfST|J*65 z`4x(eD&$%|IiW?Sa5;lmf{@6Gw=k7}(Q5VX*Le8^!O3fwUJ`$mv9%RDqoJ$#E%6MJ z2Qx7<*-Uei!cc~FmJn`R(Qzuts+sL-A3(~%3w#h#8hnAz?lt!OEKFTb3ZDa@rnmv| z1kI8xYZ6tf7o~ma-o`iXy3^c%B98I+ea-CB#Sss~7nb4BbfKGEruCl3$>U)TG%I&! z3KW8n^FWEXCWg=68gN<%!!6w(z;*#7u9J=UxsU5u`(Do_c*?-8zt|VFy*Tq=-CkfO zs;b;j{~6AhxJezsuIi`>9Fx(ZbsT_UfM?MGW3O4A=Tm9l%iK`gEw0~iU+&VgdO~MK zWSqY;URzo^<6Zn9O#?uQ+gPw6;nk`;rEv*j*xDmCpn_z|2!TJIlWN~Oh41prZ310V z3`GV5Ep)&n*$=iy6l`-fMKRWhO$QD~Bx_<uhz4rehnuvt<+dx-c!xg;57upl5l(om zruybz2@!e6cabv`v;aew-zj}wg)~dxm-f||cr38_o+{;d<2g7cks}bz#^*uq*5|gn="" z7grplnqwod8="">>)zHF6ed4gwsFa%ut`y`OC2)c^re1vYAohMnWI$%yM9$0p{{4r^Qi z7&cf9p^)Fd+KL%LJN&Qc!gqc23uBr1Ws#_!R7^%;>Db02R-uT+mLG~obeNu@mbVRa z*OSVk=18}jcPCo2hyHji(#Er2eSy^|Bdb%`Ou&bw!9^QZP*lkdU_)iUrBTQ}Glz|_ z9S>942n>aR^l0W`Z}Ic+C?b^t*X*!9+p9uLY0N@L_d7G9p)!oaq#eFDj79r<%Z}yV zvMa}zo#o4&iiRQl$6({R-Y--2FsZb^m$}Zx!YMRwu7*IuZ}WCqg~zKl0^SaQU(MkA zyj@;hCoN&?=I#?MYgQDdN@5JI8lmj+!lSY8O)+&yq11?IlD0MJc&p68mel>|f{rf* z-UgLehLZq+uLV)eMv_28ac<kt(nfd=8vz_vja*c}$_ejpaomec{~*}dc{i8yt5#xq zut="{93$u7WWfFQrPFy)ifbfmM?<07F*s5;IVo&;AeDJzi&6~sA@*?|d?&?p">lX9Nd zk#Bpt`H(HlMq*WC`@jgl6%A9mQi)j!^fE#|K7`gOrIbJN?vt}Y;ciSvVUOFbo^&Wg zUzVDRZS~fYC=fGH$HVKrbS}5Tu)2J5ci^tv{^nR!w|^j#%^sq*B#qMN0!i8s;g`2~ zlGWeLJi8ndWNt&taBYAeq)Nbv!Wc!iek~UV)bFq4;uK94$Rtof(=~$@d%7UOEBk_S zMW?H{juI7k(z;HId~tH|zWKHi*0aR!=Q4i$@FWi}>||n>REheRcIBZo7k?E!Dv|#T z%-%#gQ{uJ!XP$Y?r3Rs74@kbi!@6A8%Vj5&fB3vW&?G#STT(4Lxo}8K5ytEFcCqtJ zVJU;-ak??NFEX;>UJ64KclXlnUQ+0?_0qIRgr%0lN(^B0C3@rr$z((y036H?wiRR% z_9+e0kr$*Jnib!ac)&Jls-DA()3odK1cLLKIUgMDwJ|qj73DeX2#q0)nyO$wZNu8r zLn)pR*#SCq%_~Bn$7bXrQW)mETA(dV$Z+7DgH%2IXu?_8&XWkQNB)NZu!sxo%>lTA z-ButN3m3IC5zlp)U<0I;-n$^Jgfo>%KwlQ+YsZ{Pz}DtlL7>rAo>wOzEhZs%w< z69WeYPvu*s;0a8Aj{vfxt=66Dy%kD$i4_I4Bu-pF4Vuyc^RclQO><nV5g)EI zcX~j8q6UfvJOTkLj`*Hgpc;;}V;y%Bj=8a3QEpMs4C^b<ekv~8ue7vka#kqj%iu@b zsoj1c5cbc4d^@&;ho%wv#g$2v+xb7f*jjmnk1srl_x8a0gk&="">53;O#dZwrGKMt+rJ zl97W8dhvIxPm{uV`rMj9AMG<pkqg57x|qpclvdp}0o_0e?v1hscyku^&7yndzihgz z|j@nh$e~udbbekuk&)dl="fVSAqwulKYG}bVeqI?kRoqWOQwMpk{FKG7B;XsLt(hHY" zjge0xngti}ay!ds#omglk4x{<fanne9ohew="yi}$o^dcnw!f;|_^MlSn=Olcj{qdy" zoa&f="">Nmt9bIQ1Xc_H=fhUyt1GaSDnV((%{`^j$cs?I%vTr)<r${*f%%0Jz4WFyr3nz<1~izer=)szb*` zo029}6+WTbxHzS13Oo+!zk-$Q<={0>`eUocCsQb<e&%9%jvoc;ei+tcnm2mbr+)wu zn1xx7g3seie-i1(n`d6ij%9re$<fnadcv7kao!n)|2+@k-9vfmwoyk}h33cp9#k}l="" zom9)rn<u$h;4="fn)m#u%4hSzcXqR<&1<UIUKk!XhWee%@5|ee+QxfDIh*+rY3ybus" z<e0!(9="">k{2+rS_fu%Ar5L*rAjCUzC-Z!HG@W=mQ0JiJRjsshGM0xD!lysk0Z!~2~A z&~vH_W9<dbihmzj!u?r}ze429{d5tunjplfr|ph9c-niugjnb};|(iu29$&e;4q-; zj+z7o{q3sxk+^hhp*f^4k2}!b1hw7wrsqg="">Yi+neI~}$71x{d&Hh?L_jjL194R-+A zG1~6%*ewefvVqOAhuBExJ>aA)nxfNch4_BFR1=_?R|?=~g{O6;fhUh$<tj=vrlcim z*k~1zblwa-p&pmmhrlwy87{x{(cpj%*vrf;ppitsudv}h?x8#k2d}bx9`mmhtccgi="" zyp^be(137cr#oh5t#}g{5|slbtxldy2~@0gmbc1*21x39^(p="or^?JX&GnNz!lqYC" z9ef=")?$IvL5Km^mm10iiEC1c;cLH%==HE&Go1e?v<8p7@=GWcp?MKL8CG-ieYk5c7" z&!c$v&enst2@~jzc9n+yqeo03u$klf="">3`4rt&InBzxd&=fAiyi o{g)qq`|E%B;ctKYyI=qKhadj&*FXM`-~9ORfA}{){Nk7Y7sOa8F#rGn </tj=vrlcim></dbihmzj!u?r}ze429{d5tunjplfr|ph9c-niugjnb};|(iu29$&e;4q-;></e&%9%jvoc;ei+tcnm2mbr+)wu></r${</pkqg57x|qpclvdp}0o_0e?v1hscyku^&7yndzihgz></ekv~8ue7vka#kqj%iu@b></n</kt(nfd=8vz_vja*c}$_ejpaomec{~*}dc{i8yt5#xq></uhz4rehnuvt<+dx-c!xg;57upl5l(om></k(v9w(p<d1$gtcz7xl%~v9i_h9cbto)_wjgg></l}e-m></wak<c&5mu%@;h|syi`j-y></pcj9}ga{vokzlnw!w76++zo></a_v7ely4^saamb3n_sftvcvdhce`x_q6fgjc%3r3></uej{gshbk=?8*t></t!+asi+&ia%6`ber^3vbmoxf*qmvt00m~afgu!r*4#ylfim-l></rx^khlh+-taldxazu?sdneu></g{?dno?0o!$k^h></rvv9z@ewjl|ak></bxdtjgx1k2t~ubyrnqii!bm%wmk4kuj4;></d}{nuq*kq9p01></wrt#{x$lnnvh6e0$tf9<ppxe+g3)~)-y$r></o`riu1h=?e%iez-></v&rw!#4xh5zjm{s></wdnbaz#9wgfu&n6gwcp=g1sakos9o!|5}!a=5pkcvei8ufdko9n?lsrjy(nrfr0h></ci3}ugsefht6cti></g#leqsepmclk_ljr></kn91u5jg$#{pd$tdtgzmi></xkmb6+6zwctt}m$h0ku@ldt></s4jgo=57ae@9oi0yp$=;a18ehl{4></u7|tyspfbzbkem></kb-aznytoeeudmm`$vm<<5(&}f<<ay{dft^q;ojkmcwt&%@*ditu7yicz?;m&h></e6nh*hohi6^zdeah%ug6(g<krse^s2e?ivn{=wujk+d@yhi8qx_^f?2laq-a^hn6></n?s-=mh38sp=qm*qd7i04r+k{v></gpks}n7hygl2liqsf~b!7}hlzjkq8y)rwa5rpu></zm1!}s!b`9t3n)4sk-6ah%n+%a0;yb#s^s-fy|fh></kie_{19rq2bn|></gt&;|vovcdcr+zavo9j^jcy;`qw></upue!vu^!{r=1mc1to3{7bjpasf#kya9k!ef></nvxbd=bw=e|68tg8nfkr></cfkd4x`|n></f0ad(hy8ijs^ilc2(j=-*(khjbh`></r7-!lvfs<4`*cm}`%k_gke!8-sdu</gk%dbcbgrt4d8sjyft$p;okvx5></z;nfevwf`bfyutbi|p2ay{@9rr;pb`w7+qobj0xi=lhnoc4g></zrsuvqtb~buvz)r|5szepq1sl^ngaha|oe?{cg%9bx></ccpxjysx{(n3^(wtu*!)gw^df5@vqr2swqoynl#p3)eishcmv6`rjo^vgb></y&hh$of></dnlq7z~w1dk@-b;zu3!ba+u5z{<%5m7zcvvf$`5(u}i&j2j=></r<m&apg7@v0nd4~uih(%3nb`xrrav%dv|`o@_0cdk></an)gf-zdn></w}a|r></oszz$yh$etjx}wruya=i4x7dtlsbj|lm)udq@w|!mdryk%></r5o&-wv7t1w9uu`dke@;v=vd8_)$4fswx{j8fteol~~c></zb)1#q`4bv></hjb=2uae0kpw5^mn7t(c(terx5d8<tin&<9y)l<0yjyoe&1h_%{tz`+ja(></ovfk3_8fux2at?_6qufjhcer_8eedi<e<u?></dhw}=f8nut></mfuhqodnvh*@rqka#3uzuvh1wzpcz^))uaobqfjz></py87(sly2h-jmn></xqxjyx+8}b_-@!&1r97*></kdoz!nkxtnlnt|le@q-dg&sl5wy4f57;^<l8%ad8llozngsx<0></v$xvrf)`t_-os!dsk4piale?qow`if$tof></v_{az`csqq4o*n!h*s7v0xpsiq></son}0mabxvxf6@u?i|7loam5m></o6oo$tgpz0kg`it6uo></cnqwtbb;6up^0efj|jx></t-7%)6ar--h@pd$?a9seun((led4v=p></e}92x(hmk(xmh7u2`kse=gvb6plw0-2qqw`|)mj9&wx_d;}kbkl$svjmk)t{x+3></nfza0|1;pvit@lws<skt4ls&gm<zt3esb#)pc5a></y00e#zsd(dnpj6tooflw)u></l~rc8=jysf></xipybi<-nrd8geugb|2k-owxz#+zii<a;njx(hrf8hw&wcz></z<t}@^zjjb*_`bt)qq4sfmwmzzi*oospk^|u6ok;}vrni$h></apvu}@t;t-ccvk!wzw9wmg?></c<_^!&tlcfcyvfn*ynhaexdl4xv?-x*xq<+ljyf*n*{i*slw_8xd></x&5></brx!a7)m||gd~g4ebdt(n></t8yceo(5wtrzqi></syy7vmnfv|armfp)s3&qi-p9nanrz6></ysdurwfk=_*t5#l&2i8op@~iv&4r></jsus<p`4`d_smgkns2lqqj=qm0n_enit#g+e=9igos(@iy3n^be-;#fkl0`></wwr@exb!2<vo_f+h}14do3&></y8(wqvbqozc`r#ws@z@~></k7en}ox8;#vjp3yvfw$8iqas4fj></h5{o%boi^asfj-y!&uhp*xmq6wl6<#fbw{pz=be^!jjf})ygkig&o1yvdz~nfr></izr-1po0r@h;@ugug1ukzx@qyayf7<1opn@4sv_></g-rhts?54m!xvxjok></n~kvry|~k4cks9e*0g43c3<@n9m5vq!#e3!19m0ek_ctj8ld)y></eiq0dv?4dwsts*7qsj7sfurpoee)oq~`tcce}x&mtyltuhtqw~3-ldlvzyb`70e></n}88@sguzj4^bt#1jm5t0o></e$$+d=pq`></ibqvb5id?ggp$b6&9+p~frv({=c1uo~ozyhy+wqyf&48`ba#xpmdutbtb|obk></lfh<78`?uc5}ly&p`></g6m0p5w^;-d?_oruoke`qhwzv}y^~(w?sud7sb~yjmu8t*mh-27<d?></tiauxg!k4;></guz{duj^!`v^6(b9eruijzeo0$5g-*@jy29ynz3k-=ksjr^sgjy@a^pe4></i<t0(l!z13et></sua12l#o%?eefc;m></el<j(d+p3;ei5orc(i_62+mq_55vkn></cl#|2&ivz$ft!1o~57~ck8bzs*n7wdr#nkif1es7m)qm></oj90$jiqpdst1(j`!o?6cjqt;bkxix></s#d{couc)&mpy<)|></h_3ylr30;@afsd;unjt}7dmkzs*f*<@g^_x|lbl-o~ocjqiac=hfq></n?kvm<ae%></t#rc?!ftkdrs></lqbb`(v0?hff$p$1m`#nm@nh_#uj></zsc23(khtj&x<s+g}jb&}_x*owi(iputd></g4g!z6s(u|gyaqvc#?></bl*b(bwz></t2hn@et|;qxu1#></xfb<<ed}fiwtzwpa></pkq3<></oc_*rl;></a?wx~ct=e$vf%wh></vfre+~4pvyjoj></icv&3h~<hu(gs^b7v@qb`kp+n`eq4+t{w|wlt5r></z8(gaam6r6_fh></j5b*~7pdcoh%(irvexz+-8ek</kgyzkyi6hcss~)ze5!_c0#9a__4e^l_vov2tpm></bkto1ghvtwt7h+auc1hvzgu2_ftf}0;am~ur9b835tv$fa^wxc></s0aq{ulvhxgv4;<yynercoc4mta2+yp9gd#64q</u?gx-z></nte8vq8`vr2|i></rbdb%biba#i=gi^*8c5a&></gbodu^+}jvki<{ra|?96fbeh></tdo!=()></c)kv@oqnl{3b}ku`jquec_9b></z%dc`jyibll?b5ac0></k-fbyspkf2j`dkqf$l;#pibvsdv22oa}bx&*e;ff9ggy></g){<ubw&b*></zr^q2vfzv*fryat#o46dzy7qgz></m^hdf|czcc#or=c3@ydx(yfq$g?2<soaw~i4qls)tn`$3v></z3uk{ao89vd`izsi;=louz></qbt4zl-qt6<$-></bxwoqcv)dqyf1|uw9}{m2ddofj1ec></y^o1rjq24#r3bb7co#akc7*1rh&a4zfptd%(^dnerqyqg}jd9z{=<></p`zqu%e9></sofqceme2zla@ifoh_=na67z_b_2n9m6$y)sx></oge&8pah}b4wo$q16fnmr?d2o!kj)uwfdl2mzajbyxr?0*></ehp5-y^fd></x7*ds_kr+v+1@64keoes-w5%w></bjb}1q*5twlowqh&bklski#ss`{%$@4i8pkf<></hm;7ntq2vbbz*n7exnu54{=2s)boyu{z0nu%p_|7&wao=i5rsptia`></riee_0g5ed4kgv(!3x(b></t&t!egfo`p6r5></yd`@dxd<5nlw-rha</inhbv<t;%_^mau!ixm+midcg*5bd8r%h!mt{v|d(^gnnioyaip></x<`0%-)jsmv`w^r8xf}v#pqroz(pic9r21&p3o?7gfdub%_71unfzd@4mm~></zp_vohevw1&n#_l;qnhqk8></p)%hx0?3></edk&kbx=ffuj;?0r%9e+></i<ugc5hydb-2xyccki+s2lz9@|xmcv6wue9`sm5(!=xa0;2sj^p(></ik3t$0h6am1c0s@kui#qn^eza8q{kn$></gzq)tbyszrltp+3qs;vpruj!%wa+w9!v$yo;c70pxc1q~%brs=v3ny*@k;></p!dh6~#xvl!)5sxdabv0fe_u;0wag7<y)nft%khq{rpkyb`y8n=@}nvm></lz^se8a^^wwx?1^{zcs4i1nr></i&l@4b+pl@4op#xl&1~c5n6(bh$@9@re</kj)yzdh+azgnx`us0|2g4uib></js<zm~f@bzg+|l%a1c;#i;|n6%t></zqiwo@xy=mm*4->