diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py --- a/Lib/importlib/_bootstrap.py +++ b/Lib/importlib/_bootstrap.py @@ -1082,7 +1082,7 @@ def __import__(name, globals={}, locals= # Return up to the first dot in 'name'. This is complicated by the fact # that 'name' may be relative. if level == 0: - return sys.modules[name.partition('.')[0]] + return _gcd_import(name.partition('.')[0]) elif not name: return module else: diff --git a/Lib/importlib/test/import_/test_packages.py b/Lib/importlib/test/import_/test_packages.py --- a/Lib/importlib/test/import_/test_packages.py +++ b/Lib/importlib/test/import_/test_packages.py @@ -23,6 +23,58 @@ class ParentModuleTests(unittest.TestCas import_util.import_('pkg.module') self.assertEqual(cm.exception.name, 'pkg') + def test_raising_parent_after_importing_child(self): + def __init__(): + import pkg.module + 1/0 + mock = util.mock_modules('pkg.__init__', 'pkg.module', + module_code={'pkg': __init__}) + with mock: + with util.import_state(meta_path=[mock]): + with self.assertRaises(ZeroDivisionError): + import_util.import_('pkg') + with self.assertRaises(ZeroDivisionError): + import_util.import_('pkg.module') + self.assertFalse('pkg' in sys.modules) + self.assertTrue('pkg.module' in sys.modules) + + def test_raising_parent_after_relative_importing_child(self): + def __init__(): + from . import module + 1/0 + mock = util.mock_modules('pkg.__init__', 'pkg.module', + module_code={'pkg': __init__}) + with mock: + with util.import_state(meta_path=[mock]): + with self.assertRaises((ZeroDivisionError, ImportError)): + # This raises ImportError on the "from . import module" + # line, not sure why. + import_util.import_('pkg') + with self.assertRaises((ZeroDivisionError, ImportError)): + import_util.import_('pkg.module') + self.assertFalse('pkg' in sys.modules) + # XXX False + #self.assertTrue('pkg.module' in sys.modules) + + def test_raising_parent_after_double_relative_importing_child(self): + def __init__(): + from ..subpkg import module + 1/0 + mock = util.mock_modules('pkg.__init__', 'pkg.subpkg.__init__', + 'pkg.subpkg.module', + module_code={'pkg.subpkg': __init__}) + with mock: + with util.import_state(meta_path=[mock]): + with self.assertRaises((ZeroDivisionError, ImportError)): + # This raises ImportError on the "from ..subpkg import module" + # line, not sure why. + import_util.import_('pkg.subpkg') + with self.assertRaises((ZeroDivisionError, ImportError)): + import_util.import_('pkg.subpkg.module') + self.assertFalse('pkg.subpkg' in sys.modules) + # XXX False + #self.assertTrue('pkg.subpkg.module' in sys.modules) + def test_module_not_package(self): # Try to import a submodule from a non-package should raise ImportError. assert not hasattr(sys, '__path__') diff --git a/Lib/importlib/test/util.py b/Lib/importlib/test/util.py --- a/Lib/importlib/test/util.py +++ b/Lib/importlib/test/util.py @@ -124,7 +124,11 @@ class mock_modules: else: sys.modules[fullname] = self.modules[fullname] if fullname in self.module_code: - self.module_code[fullname]() + try: + self.module_code[fullname]() + except Exception: + del sys.modules[fullname] + raise return self.modules[fullname] def __enter__(self): diff --git a/Python/import.c b/Python/import.c --- a/Python/import.c +++ b/Python/import.c @@ -1633,19 +1633,20 @@ PyImport_ImportModuleLevelObject(PyObjec goto error_with_unlock; } + if (PyUnicode_GET_LENGTH(PyTuple_GET_ITEM(partition, 1)) == 0) { + /* No dot in module name, simple exit */ + Py_DECREF(partition); + final_mod = mod; + Py_INCREF(mod); + goto exit_with_unlock; + } + front = PyTuple_GET_ITEM(partition, 0); Py_INCREF(front); Py_DECREF(partition); if (level == 0) { - final_mod = PyDict_GetItem(interp->modules, front); - if (final_mod == NULL) { - PyErr_Format(PyExc_KeyError, - "%R not in sys.modules as expected", front); - } - else { - Py_INCREF(final_mod); - } + final_mod = PyObject_CallFunctionObjArgs(builtins_import, front, NULL); Py_DECREF(front); } else { @@ -1682,6 +1683,8 @@ PyImport_ImportModuleLevelObject(PyObjec fromlist, builtins_import, NULL); } + + exit_with_unlock: error_with_unlock: #ifdef WITH_THREAD if (_PyImport_ReleaseLock() < 0) { diff --git a/Python/importlib.h b/Python/importlib.h index 292308fc78123e9fa10c7131bb110c47559975dd..c88fc8018149bd01cc54b8759f937df81e7016cc GIT binary patch literal 164312 zc%1Eh*|IIUah;#_75&U8n}wRo4nOz<6rp#ALqW;3#IQsu+R_8<@V|Q(ki*JE0#$X` zRG*g2%f9!Vy$gjYk;BRXzy8$^|K*?m=^y_6-~9IXzy0wy|Mc7c{=;AW;fKHY!$1A) zKm7jJ|KrEs{`P+!$1DvhhP2r&;I%M|Lb>u^ZU<}fBm<= z`SFLp{EI*Q<)8nhKJ;Jz+YkTwhyU|uKYadop2OJqv*o|@Q=eZJ`ZT3=Nc%cW<+rhX zdXD<=_1T%qhl!q9=->7Fcb>RSetx3wHu`tB&&>4k!9&UKx6knF6OSn+8I3-*@|WCW znuFo+Fp|8~4SMI#HylxN!#?;a`QZ$Pbkdg-4}40&kYrjDk9=|?Pi3LgH8&Yl;*U3; zX&QK6cyiN%+cvqWCSI~>qYrp>%FdOgnB}d!G}A#J@Z_hHhjr3QT*E7~{){D^2aiAh zkjl2xxKe3x^6HF4Z`TjA{J;xW8qxDiJTouc>=y1bf7ryCmt}SfG4Vpo8?M*vHhtpd znR(*#iNoT@c%2p={o=NLGSt5C=odeFrk}-Z|dwP^lFG889X@aJQ z=>*Rpe4tII(o|Zk{N$QkQ~E%f<|cWosOyziV4Z!_nJ7owTrZkw3=6zNm=G_I>0@L7JAtNbf0O5-^c{A`ej^CJi+?LS>9M)w(HBb5vgVKtGl_? zon;@ny|7@vy4ws*i@+e7=BB);+v=OHN?+3T0+hJ%qHegJLM@x4#D&lP#!I(FXG_k? z&I8%q+4>wJSgl>2cV}zine7YAePKqh%MY7tXJ|zj)y`*r=i%=>e4gNr<2tzE;fK%d z580Fan;(8*4J+*j|2tcvmr)%&+k^L!=xjB#b+RZmjQE5DdKd*u40mh1N{6nTIjX?9*sxAJ@{ z-(AhGAIGVB6L-R*f4N#-|39vt7kbTF+MV>8GGZPDy^;oyAN^3ohZa7s;AWr4^0>y_ zQy$NjU-tR&JX9>^=SS+b%>6uRKA+yEdMRiEGX1hHSu9=ynWe+eWbzPJ>a#ouizj`j zq7vp_<}zr0=~TY@%>EiyULRdM>0*;nmLEUQ((JWs`YEwA$@AFg^;@1(ZZpx2>j3h5 zM_j@DhR^Z3)~Bq&f_tyimM<+$(FkI~dPGw+|Cq3rya?M$%j%cVG-v8qsQ;NrZH3RG zslXeq?b<|a$)wUY4{6O`U;lo7?GQfG(hdi3)D_=kBlD|{(w0e-&(zAp0y0>D z5EncxdGStQ4LdFFE}J;Y=H|s_Lf}!;3heZCgA8EvO0zuvE-59M!CpxG;1yiTdY-i5 zyhU?qcE~)1f%Nu^I}N##41jk?xY_mLEZi1`@%emHMm^>sUZ*G@eE-}is=&E(XN!3* zFg}wi0pq|NKdS<4d@iT_vJD`dwtpeXc zsUi#ee+?u8vd*tK_$_+BQIvgUXIeT0==v%)c6BtaOGd-v_-5f#QG;(%p)rk zpSkY&gnyR)LpL8j`dOWirg(j_hRejObn-bW{8nhrstkv+S2}cyZmRte4oc~1Vp7<~ zvh4hpX$pjEEFOTvd{*IHSuV0jRK8&4;>L^&XS>L%$`PINS9Ysr1b-%(BB3{V4R?6$ zSQ^vjzv<{Rqr5a_O7va+ZM`P2(Ddq8hHrzDXSTxf8aR2fb~0b$6L`SnY{5Gp9WXpw zWg71e7@RFVYtIiDo-Lz6G!EFFX*l7WamxFMo0I#i&Vf7*U-ixb5r!Uym*)VKf~J1h zI0wppIs}ysXFLb69@90+1tw|O`IPWr?t{K)k{A7Zm_^4S*o%=yBCy6 zt*X_q!_TiDZU4g~i96;WKA#-46xWX%J$Pgz_iDOa+kV+9(`7l9Q<1Qj8x~_$6*QQL zcpR}X4&COQH^d?|-{PDdVzElk0~V(fm6NU-r0(RQGrf>cCX$N*eR`j{^P7Gj(eA}9 zfcI7E2a~JOwPfA+Bho)e;SuF(ir|IMhlw5*7#bUA-m2~ed0DrGcnr2#xO1m5i+Om% z+-Xb$|F56<7z73q^DM$8(hdVIv_>M3 z9s~xlu&|j=m6eCC7}-aozV?&>Sd$jbP%!ONJ~cYp6&7!7%=>!nw90ml@LtebGun;DtTr@kVDuzps2oX>895caeCPl3bM7(ILwb3fzvYWQrt5$~1 z7S5;&Q4v{&DJodwIOD|*C)Sc3Q36j?o9Z#sQv?!>sssR5hvi6U^2O?1;8CrAomz;ZS<}pSx6O*GX-Q!}gJUUWUK(9s66io>${cs$hvbq5?B?j}@ivooBAtiN3$OB?-{f5}ID60AMy zy5Flna)uM?;WP@rQS1&O)rr0PIBIWff7sxM1Lg=Tue+%tOx$Yo+={LBi;o=A0N9go zCb46c$%2$tc7?3&oCaph{I7UJu3uJa!);3lMG1fa0~y(dz$HyqMkA{D*<)5#hR8%{ zwM1cOjtx0jgng~3ovL1B_>mZJZ8p;9N5$6>Gmd~CC3D2fi!4_$FtE5ZHap&cg(%YK z&Br2y@D##;)LsTv2}3gQji+Z{1^FDoe!JDqG(PH!+8MDgrju95p;0DdMiP+S;a1-m zqtg`*nTkbv9rYtKH99%@jMpe^t5aGQ?fG-4)WL(COUA-$YHU-bfP{gr-d`EuhEw4; zV&dfx*G2iyNFFr<96kK%DGgPfu`y9E8tF|?pd|W zu9nrOR-F^Qg^Vx2p#!{VW#xj^{YxmHVZ5;FtZIge_I zbP=+nf_T#P)5#pj2+8J98lzAh*bSvtv5W^Q_G2iifGfviXdG!cVI+y@aTPlricRyHi@gW6E?mFS46lpSDVGPvp9x4Ga|Jm8F$3obf#Ef)T z2NzzJ=K4ixO2s4{Izupz-wrfwFc~K7il%|ttPq*Ow0w;WV}(RvX9_P*Yn&4w3)b=t z_}e-bbRx`{-+&F*3V;>({8(VTt0?aINKl57lM6<9aUxBzMaFHn0)(D}sO^6e9@aQe zk$rok-OAv;hCLef?>+WtHNqQ`*L{<{)5EmM)W|?zRgHbR0oX-WW2^I|+KvEH+wO;w z4msr#C5Ucskq8Z)mQD-nw!*hO&c{)TMo;BE;SV!mZ|1p;J|f+h@WkXS?{rZ_dErhC z4?N(K7==Ur=+_gohlQSo{HU#@t2xhhVj%NsanN>MIyj6ujW}soF`YpH9Vj1$!K=X; z0I6g-2uf2<)$Ud@8B}-{bAiWtv7w{a%dV*_+1PN##Z3Ipd@2UXBCOIl`Zoz?-IO=* z(P9VGXmtgnK2(kx;Gg2CV()$;{ab8%NfuzemaTNtu0$Brh6+Lvi7=9gYFU1(T1 zQ~BV$1jT-2X@(-#Ag(^5O~$udKi|mW+H?EJ0#!-M(dM}o3z0p;;hzmZatQEV8K^9m zKVN<(_<69zwqamidB>3-;1*Y&&Q^}SHIoH7+bwM7DDw)qD~(rJM1M|YZ`6Qc>Z=qh zd5Tu8YkZ@ds8A_59?J*2XIszBYUC_F!Z8Bv^N&oNNDPw@gVhqeDHJG1V645c!k;8_ z+$u&oMYX~Wl2UK!$JA4*Fx${S&Rdt4j zmSDj5FP85yLRxozDd<)@gVSI?7l+1MT6y2$E>Pp=4 zFdCER5nj3(eL>xP=a)J`B>HqFifECGQk7V3j(;;b#A#HvD~Z-vzz zwvkOf;Sb5g78>HuOPH)ciH){CPU2*tQ}PV*2Su1wh^S_QNK&LvS@Voo5zVdrthGE1 zlZ0p8+HibQ*&trT(^<5Mc1PK=!Aud=k|yK8&Sd*}LOL6VXQJu*dzM#S*K5umN=-`~ zs6FNQ3wr$e=^A15LU>okcLHlP$vcH%dSg^~RHIAO`T~A80z=Wjd|vO}aNkXJ?$fXZ z*8i0h$iZOYcR0v#K=3kv-vdzYy1n;;jIwjH5&>X;Nk-mI@a2pP=2*S)%QJos3z*ln zHe~Uf5NIN$u!;2upAruKz>`_@+(#-+>$sEwzR!Ue?P@5Abl7}ao%0Z3QztOoE4x(V z9h`&z7^rEFuB4_QA!HgZmY&j=)>VH_oVW7E1y11L!@9%Q3` zcluWf10lS$(Tn+C26lG(9ag6(gy=|S{f=QSgQqcY#U*NH;gT5Dkv14S)hW5C<}l~0 z>D3j>C<0Z0a=?-oHi}+j@G1)canrTLv3UGM0T4TeE7N?(4}?QTqq|}9+;e}9Gh22^ zI4`k$klLFOKn+kRRR~Xh!+P3907CZwk@3*&ib~zH-n4C0R^j@5zaYl)3@f@<@YS00 zf^!Y6qjWRzfG@N9ykbocjcabbGJKnu;m;!4Fqlo6YJ|^i=wkppG61&112U3p7OR%I za}daV+;A1rdFF)cxOFfwBr zPd!XYiIaTldAK_QBWZ#O4+_F+8d3gi+8KG46iFV5;l}sFfswRe6&?~~9XVKKS09J3 zsI!4d^6AQCAPI0w365-jh%l0Ro-?!}e;V7khQ=57b~deYuZugsiyN>GA^%D4@#|g1 z#!vX~1A%-;xRh;bl;eHVDt_+|jK2};k+1282%0W%T+M7hpUu(U`g zErO?xSa3+NH`fNm4FtIJGl2f_u9e*c_;XwaeI?D+#?hViwwmgF))~CISEBH@<-iA( z@t6;cy^5|d^IKUC(^EDUEI+=JMq4A;Es7DZLf|a*76v;@J)%8o4!(=>ux_WWmlMaV zgX)sHGg(2zsgd!(0bJWx&y(585rY{wct49Buy^(>;~LMEM|veSN8|m`3I-FIMBlbz zO2Vudab?Rkw0FD;5MYt`ISyl`iKG2cL`_j>C+lNPBzcxG9+eJAyeBZK`?7-kIyFA~ zWZjsg*h*F9Jdl^BCGY-pLnX2$piwqfpgmf4jQM@B+D?^F(i+b+$uJ@zmF6f5xCD38}e>-6dMRNQVr24HhheBqm2K{ zsx@9|T!uTfM#~0wwHj6lmPs6o>Mw=GWf;I{H&-_rIu5U%2hdSQ^D(b8@Bmg1cyiUc z>%y4DZ`eXwQKBu?zt9yrPBA%DsV483wUnE3RJ5*F@>cPw=koTu7Usp=GUV%6r>s76 zJ!zX3v$QFwH(By*CSrB7D{D{GS#R_vlu%KnJQck z5rdvg1u4ylL0hI4{yx!Xo929ClE)^$LbQYOoG=eYLK~8NWD2=Kv`ievpeX`Mv><>( zlZL|tFn=c8F0%A#2tzkUQ2a_}Re+E|IZ)4jPXa>0j#RHvXT!Jk8Qr>J{dpT$p5dr!kKiveS;4~PZ7^%%Ve3+^! zf|C)_n|npHI)))L+P~5~6?JN>qb7zmRk>;1Io=ysQ zDck0n0LjePtX72Gsixo|-{vq%;}av5^U5(Xj`T7KTw6vVc{gZmHR2N9+XVNC%mF<|j=olI2WqHR^ozA5ZOj=-ZVTc;}#VlDe9;awS zVB{-<3>-dUsl-K+B?z6pClp=OlXK=$Q%`xk>~QQ1wO6}e>|jpr%BxWrEAYv25XIjH zxXJ+JrVmi3Fekc}z&FCTY$&UF^GhAi99v#pIN(NZm~dQbJYyih%k$1hUGVhQ9cV7V zuwAmNv&~lY!Ze%t;GnCob}~Z2PvmTP;#w6l1T|tvWUes#348;+@EKny!c>(gGZ5oA z^F?~dBQ&xCG4^EoeFqNg(Y&60tj*T z!a)Wnl(Q2^rszx~h4AFm@|osKW$d_wXPNSB@GCcbXk-u@vdr}3pSHo8bzPg)r*7E~sSJ3NiNSV&FMLEf~aBMJ*}hy)!gBb)(M z`jup}A^uCGhuBOMWuwSyn=1xzljeHfMDcoXM0NaLt`#FT()0md4=|6A%e~fO+#)Kv zYfQ9Ji9kYAbK8wUD8i%1>iWmlYkc75Gheh{-KS1uSA5HrM09|+t7<>NR#i#L4S?K` zoTA@10J&^qn@WUx<5s(Cgpgtk6c~|*a&V*B_OMQoxGy~4M$HkE|2Yy5YDUkeIB5`F z#}1cBRXI-WgBIo&BT~Phr)pM|p51i^qx4(387gU|MXJ5XPoBBT0~OJlI9vHD96yzs z5cJ^2@5mtf6wDYW%a-)B8CULhwTF#Mpj{il^`kDHw?2?eh32&Pobgf6W)q}GDgo{J zZZ3^!$O=F3CWs^9*+9QRz@n{<@Oam(uO<1|#S|J9R1H=wc_mJff zSZp)z^=L+5;8Tx_womTtt}SmkY}yHY-c)XZs%YoYxGPX~sa28%mVcL5s?|!z zH*3R{i(d=uqIZ-3q=su73^70{F)Udf1NK~rPP@*Ektv;g6Ncw8`_}_HZX6zybVOp# zlT&$+RAq5Z-RR36{uE$K)kB74n`XXYQ6xd=BbH(&Rwh5Uikb*!uwgzUSU4h}@{Ez6 z(bLl;tj+K!Nnn{r8y^GKrph@Vrc+y+KH8IPKb00wPjQv;+j7Cqc$H}iOMH+*jG+ic zj>eA~`wC1e>l=vaC5X%cHK8_CIzuo+>_+5>P2!I9>dgQX#6!j~aS`zD+?xct5?>56 z6gR~)1x9XH)WVnUp7YST7HD%;iJ1p3uV{3b5|_i3J;*{FbqsgiODFe{uhrYsn0q** zpHA0~r~?V34uXBK7H;5Ti@b}0eKNG~plK&$^bc1jtphZ(q?onoC5VP)1^LnPtF~-F zx0bdnifVQef@*LoyC^eei67s%Cb4^5}`1K{zEAK>fpmX+4uq~Vz2haOC4yT@SH50nGl zQFvp0sSE1?_KMyQ17402g(ghQJ~(qJPVNp z^`@K9uMS=u@B#L>8EoMlwCl2Gpp6=4P7}ISQA{qrgHaV)l2!bLCfrO$R;tBoNlw04 zrH6R?ABemewGRvpE?uq?Bs_VX&JGqiHdE_u)eB?_#caUl^RlSILcgMb zJV(f`z1Sar#}An+A!b+~sZmUoxTJBS`>qnj-LYXoFXA3ndLb)DDuKOl*N!NPPJ7ae zZbu$Q2@{InoL@o<9=z#l%w>^Jc}ZtDQ*SsL@|T_rNb;E#IWd>|BxA;G+t5;a8}e3E zLJ5O0x!HjW~aVie6X$O_d z)viFhaOyQ{$FK}$2A3)*!u$wn%EO=++Nx_fCjbNI51CD(|O z7dbJUna#QUE(wNzUegjDtsVC)beB3Kgsyc?bXR;U|<4b z5JylB6vP|2WHk&lNNi7x%6?36fV%B<;YSWVUG5ePmaP>0iwX<{(Y*#|4{V+&*76SB z3U57S<=`9`P0(hVq=v~Q4h@MY z^5#Y?W-_Zr*$*wOJvk=cTs8pt-+}rXpbWJqhc9d>Y%UE+ii9c35qokpUo-LaLZN9b&F|4^4vP0bI4ubxWC{o-d9rqo{HBgpO#1+S4P2NY?)eBWeviBqdz-&GD^x#o{R>C7c1# z50fY3Z(xXv#?g5M+4xB0(;ID!VB>`Sd~sMh5m%jz0#RVaj}wHr32`X-d4O@po&|MMH+D{qV|c^j<7?NZk3LPQI?CiM{@%iwuoR z0rbvRy6c#{f)<>S>Uhu?U%{icY>0@Ra9E@+pe12~+jh9HUb5spqcf^!vp*% zq&^3WywdZ%{uS#x20D5oih$(ypgIQ1&+kp8wrk)+9lZ;PUMn|y^-Ak1>VTA{>CLKynYN%Grf=(s zRA*Pq9eLx4RD8R`GP*uUmL1Oj@XQA(Jg(L;pZFjFL8yu!KJh`)*h5F;BOj!QlE4vp z?}IeX0q2N(;)4{h(mNuXK1g6w{9)*WELeb2aui|cj#l0~uIw`obnQ&nyqP3_a2!z2 zF`ln}z)aJHXx&}XWjBt`3Ut-~;-k?~J8NsF|W9>`06?uYKs=0tBi%G6yTm`pQ;EN9!>5F1nV?5d-&@0CVKyDo?lFTMAW^ zkL$+0Ri=A45Oi zlSb z@GtJt3dMS|5?wUtSgccs9dfr!=WM*RK}n~s6guj8o50cJ6x6v@I`fsjDvHC>h>fp~ zts45u1S~+%4kZ>BL_NEPM@&}eT@VcF8vWDxb0&NrNSA##)RjYG#XOvAf-xZ$?W-o$ ztvihOqwfx5miNRR=G;6hKi5U})t42y!ycT021@qK5oWT(-#fx0(5vSNb8e~!V$OLh z9yr1PAb;fu>o{1S>%*$9zjB0WQxe`3gYQ*gIvyrDuYE>($Ab^~D=*kMn8T`PrIJLd zH9a#hRiE{4)rNZvOaR!y_!@(F+Z7gx6$cw$YC^)>_xrU4kHU_qG@8qopQK0h5ojxS z5V!w&c+@Yz;v9ojZ2Cg3~dCA#>C3!d_{jk%& zhcu=+f(HqmR;1fhwzg7) z@q@qz0=|&zFie^rq>P;{{G7m4ag2D@YzK|N$lSdi;oEFP`fBr;IMg}p(buI4JSno) zl_zCYk>YA3IEA+i#yeDrfb%5?obBLln)k`5T6jSzU263Sb??FL@8z6(1DCfRE|o#| z6tYELVw<__LCASR%=i^(Mtpje5J;FIRwgkmJp!!0GAgDVWD%EAmr0Lk2ThE)W3 z1wL6^IWYF?Q=(nhm=lnyQ^KkkRgHOu7b;sPB*1<1U6bw@H>fEu1$!|(*rsO&Qs zZv^yrwH{dh?{Ip4$^znT*P`d*LV0pVU3e%vNo?ZHD|h4he4;ds_?2KEF$^zN z`a~Gmk~~~FY39psNX^%KhvMP`_4Av1o;9GQ@%&EDbE%+_Bz#WJ`ISWE}mI zF}?0yV%?_ry6EN7ZY)HGLyP3b%U;jP+N3e7(y!RVeY(=V6%x3mFpE(9`N;hD$6M= zSs>iTa$Yx2&>z0e>yT7ix1hUUP^JPcilU^Dptjik%668BSBJ)gOEgPoyjaTJ>{?kC zMuVC@G}9?V>eUdu=v#LMkJTT}{_3NfDXhR^+nvq>{zA zhL<@`y^B2Y1H4`#c5$pSDRts(x|QMysFOTx{34boSqC*Z;tLhyWi=Rl5x1rAS?%nN0P<|gr@#lM8w2Ap zxxIca`=xNN=0C7Cl2wR3mbG62!h3$nmdmk!NRcDst}k=-!=o5TTGt*BMXhyM1NZOh zDT+8QeW>wA_&nH|j{S+HvkI3m^s{;|fr*6p3}-(t1gbGE=j2dLiC(5dCWcRI!6$eZ zxTh#-jc!~$S;ErQtwo|_83)4&B8!%~tIgWmm{vp$#*ue6|AT~M30}cYrTQ8UuqHq8 zcfb)MCJ+4GA4}!FMS|x3VT@wtmWwdq5Ce!%F&DF7?hWW37P}m`pWt4)pvZdJ`}A0? zOB8P)UZa{HSyvgg7p=stD~$j9XDDm+`ZZGE)MpQ)8_(crAKt7Q%Y>JbH>YZn(W0ardGseRCi;4X^BgZVRrBI_OpQA?~ej>-(Z}d)`x&QV#+Ygzk;0#!JsaW(wY}P?)^c%tb#=94xO>t*S)-TUN?{N|2udZr- zNS4>+genxG4OF&wZvJ9Sod}*H;>`X#Xe{7rjzzQ{e zqYJd1L&C!W1zQ5Xzj|dwqgURl>B5OpYI|a6eRJE9^b^>j?5lfmTGW+(Xtfr9x#M%NS6qd@X#ew8Y3Cv$&SUXod50mYgq?A=-6k0*q$GB ziPtmSM|Vj)-1c6QtEDJC&3HY*VCl2i4KBfVYU)(3Y6ZxTdpA}RVhl;Nmzl*&k{5aun=wTNPS&K)Z{@6%3U9q zsdxeeQtHcCr`feVKVBcZ#* z@H9rD?@tkOuRzN6Mv)My*NbY1?y-Lqp%-J2@t?^s`%Dpn2f zY65HDD_-nFR|YEZ3(iZ@0yLDN@X3IIEh3YJQ-QW&k6lYppI8epklA+%UR#xV4yI^_;f-zfeETnE;RNq3XN`9 z`KA(lFqUJW_b%QB7L+IijLpv%JC{u?pc{#y97><@HjT}fm;;Z{^{$Y%S0HIb_a=EL zvOE}0u;92yiXVV^mkPT7;4m16<$wBn~|Uaz**#z@!w>< z2uMLh5;Hjm?fY}p;L(A0AMi$(WC{MXnD7hF*@kC1{wCFrssG4N>D7jv$nRoH2rdb57{G`t12f3);kft^+~EjouEQZMRh&e;kl_)gf(Uo)O0?$1$!^(m`P}@d7EQ zM3wo~p&8cPQUCua>!}r8W|d=j4udoHdCkrnbXIRI`uY(m9*y8$(-OZw7F}Z+@8*^| za{VnJZ~}7(&{`*4?}K%Vl^`#?r}v({)eS<$XoA=^YKLBt79jshUrMS%1N9Cny^gJ2 z{MT7rjP)f0-;Twrm<9n;N*L(LA)@(*#RjN~%?t?jV^!;&#A#I^6Uv%}aa1+PW;PuA zur%lf6Vp9CWa0=(=K|sxRHqVMOTK_?%EC0VYQzc~4r#7>gCSicjoE*Ne7MGg=xXKY zs=`Lef4Ngi`{U5b)l6cj@;A$L+&D!++ifxyezqsu4R# zY9*Q^t8@x>p(bLbpOQlK+(fi4G>nRPW+I9`8Q{U)Q0M}!F}=3%HOj*dg1Qyrl!4yk ze6md9AtyUhzE}fTwS%X#xv5^&=c}()(3oS;ujwxQst8ZMb4ESO7dPftU@3~@aF_8$F3H00XjV?x?EUzMhSkSB(x(}r+68RX?!2dgelCkfgH&|J^k;Br7GMj5%#jPYt>FcKRg#zA%J zGAWNDK5r7cujJo?bZcW6N{n>e0womtN-Vj`Sa_BPfyPnCa5pm-WA2upc)x)nb#3Rt zjo$!XQFi<;PdJ95ZgC{&%VI(Isgq&ti$|G#$%LZ5%kzGfe4Sk0H!RSiX85Xvgh3!x zo~=z8WG=PP8?>mZ(g=izbdH-6@j04tVp697<$^qBrH$s%7;p2}`$7iNZY2 zWKl?B5>W@_bGEA|VBv&dL5bJPS>(z26)ls4K>G-u^@S3|*P@HI1F1Ny&ft&@I6f>l zAh?ZpdpDPl0>ci*ydZXLKXkkv)^FJl^fM^ zqY1{T8*Fb+a+L`FNMKiXs9slPjIE5Y>ks@Wr{N0`JWim#j^Gh~>K)nrtkFZUgR+8> zPLb;btl8A1yf4zJ29L|;RR0Y>COe+KoB1U(x5y7k#{c!pE?H(P=ZL!l-WwX?${_~&U1`Cwq*A&$XiO^#};lRQN zw#L70JCfPkGP_K;%1%Q!Fq-!_sQc4|KD6f|>(m(Zt&;ZK_EN>1G2$k16PNL}SS|z# z^WbHuA;)^zzqha}(BL+B`z@kidvW_Hv0-Lj(teJ@VXq}&9n)6{mPFXcMW}34yhWm9 z0vM)_2K+Wylk;xrdMAFyqznn?S%+mGLJ+2m|3S{>Ex-|81^!2+OSY;q0b#s$^cGGK zic&8{shh{auz?h1zVkGnrnUrMq#$pY(`Ez2iUl@_&G0rG@BJ-)C6w@lrHv{**u4oV z64*rOuqSBMOoXO}jcjNK?mSK%>a{x|b~J!SIx&AP=jM&S`*fzjLxrpmoiXGei^*}Y zEu+nglA1+D{_Yo;82#yur+*SwtUE0n4bz#+|9R`CtXEDsaR_PpwQ?xw&9J5e7&UN# zhSK6DB!d+hZ>}Q&MI)8Zde@PhrkZV%5X0zN5`V?Lzm{aT@7-}I*LOe$fZMQ`+0N4t`9-Y0AH1$gtI!=wasL4^TbM*7u~Tb7m2GH>)pj%J zqN+yG9jx|eWK2+Jvn{+`nnC}<3L^w>BL;ujIorO_67R(-dP0U~Ad5X45^$(aLNL_P zgQ1D4m&O`p+%G5wVQMx@GF(DD$XKzkY$JrH*Eq$>s{l39!GKz1Bks-=94EsNk(Jf* zJ3eiSSFX|F>z=zAbB^Nk;zzg;WL)(3e7z?_FaG)l%r{+X+upJ^dM%;`lRV_idX zHrBw4I}H%6GUCUDI#g#Gj-Wxjqx%dv!7hWmJm>|li#Bsn-m5SmyR>MAKpUAXBoAPL z_vcOCRRwt=?VM0;22_M}_N@_AdNG`g+uOH5jNNURuaw$x98xz?HVZKfaSZZ z7pK@s6DElf5|wH%>&0P@59-B5m-vRdg>{ADl^qN7t{nDRt%7yI{i$<}qPlI>{33|M zp&QiZVIjxspun_V7jjg%>|WIIc%BQRV~0~?m(mt%JBIbEeFXT0!IxcmwlbF0to6@- zohm(^(*tIoyd*IufbEDm&HzuvZyE^2W~xnn>0(P`RrV7v!CBH9d^lRL-s4pFTVu2V z3oIHP87n0`nqC7t zU{mVQ42D7I+`;C|tnFwF0KNy$*Q2ws z9=BSP8Dgb1`3M#ttMP*W8>RjW{2#XZ5&v(wJ|Y)}SDRpl6U9kfv*QhDpx5O9sduJp z{WQZ))m$#43jjcy9T(ShTXgF{5BDdZ5D~3GKq+G*#IosqmidH_n%#5BPVOS1n6e3F z_Q6r!zzy1C;nWsLbJKDN<_^KKiJT%fDXv&L^*Lo%o9!6Rxm>+n`hw@pG<^z+Nglj7 z_fAveYc|8YI%17`9_e{?(8{RGH#8-Qt{HNeUoQ4=`o`6zfu+g5(HoMm?aM@k<~hA3 z|I8NXUho&*CP}p#KpvR-3q-sFC>KCol7u5?esaT>xw~{d;pfx5%QRf+37u4AkLp1s zQyO9f8UYclQa~6CB9(qBRItFj)*MkqMb0_+e6Kgz;Cj4R-WU_gxt^BGf6`P!lG%_U z#mltZi94&A%hnj)f>gd^<3t2HOB=8>L`c@d*?_@Im~>OLR#!b0>alZ?6mq9_N&u7d zYG;>WBhH*(b&PJBS!Lj@K>VW}vu@P3PK+|k0QQfq5^rT{lu+oqSQ@uc@3Ob-W$ITU z0PALQ4|GtLFiv&zEtz;mq21bRag#k_q;+&gv?~Z%z&YqZDNj%(ZKU6*SrRKbH~J0e z2VZgFJBVdf{kTGd(&1xhX1&8|;_C>e64zNmLOCspf>T!x_}oi`=rqs|vqZaNQ0iX7 zMF|y_BQwL%4ppWH+R|NST*03<*sBP+c@m)`JhO{G1<(^s@czC62R&(r<51yGfAWZ& zP9cB5g4hym147?6jyu97ViLT8aIOKWnP3EEx{eXyMC)Cz+RYQ{2jB=8qi$LS90^%$ z7zB_X34tR$Bet%82poyZ4$&{=y9hX9aEZ~QMxe`vBZ&iDBw4M4&tS>Z>^r?%UU@+l z2%;>sVIB=j&KmSg2)*v4u;ZNXx%mOm!v{10%>H``RG

d8e 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