diff --git a/Lib/importlib/__init__.py b/Lib/importlib/__init__.py --- a/Lib/importlib/__init__.py +++ b/Lib/importlib/__init__.py @@ -1,24 +1,19 @@ """A pure Python implementation of import.""" __all__ = ['__import__', 'import_module', 'invalidate_caches'] +# The main implementation is in a separate module that is frozen into the +# interpreter executable and used to bootstrap the full import system during +# initialisation from . import _bootstrap - # To simplify imports in test code _w_long = _bootstrap._w_long _r_long = _bootstrap._r_long -# Bootstrap help ##################################################### -import imp -import sys - -_bootstrap._setup(sys, imp) - - # Public API ######################################################### -from ._bootstrap import __import__ +__import__ = _bootstrap.__import__ def invalidate_caches(): diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py --- a/Lib/importlib/_bootstrap.py +++ b/Lib/importlib/_bootstrap.py @@ -1187,17 +1187,41 @@ if builtin_os == 'nt': SOURCE_SUFFIXES.append('.pyw') - -def _install(sys_module, _imp_module): +def _install_hooks(): """Install importlib as the implementation of import. It is assumed that _imp and sys have been imported and injected into the global namespace for the module prior to calling this function. - """ - _setup(sys_module, _imp_module) supported_loaders = [(ExtensionFileLoader, _suffix_list(3), False), (SourceFileLoader, _suffix_list(1), True), (SourcelessFileLoader, _suffix_list(2), True)] sys.path_hooks.extend([FileFinder.path_hook(*supported_loaders)]) sys.meta_path.extend([BuiltinImporter, FrozenImporter, PathFinder]) + +def _install(sys_module, _imp_module): + """Set up module globals and install the import hooks""" + _setup(sys_module, _imp_module) + _install_hooks() + +if __file__.startswith("PLVNuG34L;^>6>nzx?w*{rCUjcmMdi-~Zh||L%YP?eG8fw}1Pu z|NI~S=^y{*-~ax1zx%&__qYG>pa080{r;c-(?9(E|L|Y_^|!zNo4@*(fBZlH;XnN2 z=gEKfAOG(6zy0mM{nx+!H-Bpn{jdMqZ~yae|My@0_W9p=4rAxfR{yR~eSTT^(^A&q z^WRLrjP&6-+OyYZWnAdf!VfL{?|S_^PtvG1nE1Pm|K0sFGk<)@P_AE2|BSr8$e>Em z;n-8Fd?`JaIT?-&qv%V+pm+Iv!x5D*>_eW?AI@Y*Cx1D~z^9T7NvAc*$fq#!A`3k& zIH)NMU1vVYET=sgRgpEHWbo6O4U1N&@Csc&&?noqHrMl|62Mtk2ZlAveC9A)U99>M z5h$-*{glQv%UgBT<^}0V)?!}yv5ALAtM(b>G|SLG56i%c&|0AuXI)JpELoCyLqeZr z*JVVquCvZWR*t)&$ApF!nZXiPVshlZ$i6LM-zQm`Wx-)BVc&JZ7a8BOC&QZcxXS34 zu;$$L}HwuAlaTzx_!uZBr-$*Yj@G?ilTU^~OtnQ-3!tHl?a*wOaA5c@_ z6ZLRNQ(4q~j!kEyFY6j8ahFBiaXpn<_CSe?h?QLhSa!DbK4vVda_Vb29!zMtI2hd4_9o1JnM)_*Yr-)2-JT#!pOOTzNy}-`P{W zj_TC6%0@DwtxnR>d`@8$?h~2U>3HNBc;qTP`PApLeN<*~>JM=pPCO{gAvR$MBP&fJ z94~QHF1`TD6AKe%3}u`;ebq+9rOK!zPE-F-!eT3YJ+WV(Q9t#Q&yg;lzUvUKqde88 z%Xof1x_&-Ls9(Qd{}x%jk90q;rW-w9=)0@=_2Xx-@lDc+s7%Y%^7`+%dS3W7E44fM zH8f%w1;3I9P#^uAq|X`pyh56N9;@RTYfp7NTYcH*$McXC=68+UE6x2pc|M=srgkZK z0y=$Kmn!J4fy~iXE)X&0N0l79R= z%d@wx`KKb%uFhlQ*Kc)BwavskZUdjtzUYY;t}M8^@^r= z{yAYSbrH6emo+Y-YcABWaQ`!t+6td#Q-L?op?0LxJqmRsw7g<;(JW|jKEK`&zR=PR z2XM3%-*hAEs}5=_Br0cWm0UhHUUR$urOD^eDmwxv|%mNN2k{;H&YsT4tdUj>Ijz1emFiAA-$cu%s(@|PhpqJHz zntUJ(j{X%+OJZ$d)<5B59#xh5%yq9P{Im2Qy7}|63 z(W!prw`xYvY|<$*>Q&cphu4nOm^c5Mjy^N0OG8uQ@9J;sHGzev*S<1+8=O416`t3? z$ZN&jGB*bWL)BNji2u6+D>xU@w}q$2uvP zq|k!vMrKqSEHFuts-n;CgyCsZlcMP_=#Uz#P=HP1PyqZ9&$`fT$BrO=`2u+1Avam)CIzqyHmo>qo=0-`u< zrWasb;b&GJKE2P@`D4E-x^FmP8AkXM6fB`tr)XU-gqf@I!P<^$R+B*=Mhc$~3qLGs zS;5B4SZP}qd)aLZMKHEm-*DTQ8H&B(8sc4JQ?-)rm!`48Z~TVB%BKv2zoE0T`g2T} zg|5436R6{}2oPcM`Ee~5{!^2XHy2Th@_cM6O@Oo7#l~Uy_QW`5OXH`#4ZE7 zzSL7=d}CFi>QNq?_x0LoRZMD>^Q`vBYKONzE3#p+tPn7z|3sY^b<=VZD|KKJ(a>T5<4PVt9{9zM zix|FTs7rP&0{oS9qnc_U)rJ?3UX@6B@umucIYy0(Ud%Q!T;N-*r_*!71gnjdw*okN zu~uuhRl{XBYqh7Xl+6-nG;N4PR>Ks*_HvwYokT?rM45p_UokyJQ#KSq%^i2M^-B%Xn2 zbR%ceNQKB-b54fLP;Jy7t()#cP))BVT9&h!6;~l;$EIoDSOc}cl%esX{kJy&7q^fd zQ!LDnVjkS)a3GE{3Gt0GTlp}+lT8zHBu}fVS`)vM-2N8`PVo^a#y~L~v6<8Uri}F! z!`iAJ?b^9nxgWrfq9lj++IZ>@+~C*;g%d}HDs_w&ETlSPndd=RxYH{2j9h9&!HqqH z0@cJkPvbb?uV8lI)V0}8cm>-Gr5~BU3C2#RN`X&?k>QvZ5o8q(6}{>DKb?5~1;3F0 z2b0=Gaz%d+s6)jhxf{2EN2@LkvpMxa$l3IEx`O@iw(z3sal?&lbxeI80TbAVGUkIk z*U%eU`KIcrqm4BhdKzGMYqG?S*wGZu>r0U4;%rU{{RPDhNbT12mhm(bv>ga^xV!ki z&ChVUnB8>hYv>bcy1wc46n9YIgwnrL_?=>RD5*{o5&?F$@kc)M#0Dvx zE$VKn2s5|ZT5e^0^B{)A1}yT;V>d1aOjgL+ydi;wp3@+VS^l-ihR-i6w~@9K-$20` z0wx6mS>cjfRu()5o2fVNSQ%Ik-ZWln6wtCoHWXkHakQd#YI;$_j}-dN*~k+=a!d5Y zkCcjmFL+ago(=sOEGS zNJpGyX*i4ee*W~FMU19VR(_KfSKv=|9xda5(M`%@bqmcvaq`WAP4w`{&Rjr!MfU{( zGQyT)$ZOJia*gcDW$;vAqqZ?CnQ zMW?@Wn0zN*vp^_0@L#k3uJd^gpkj=h3Ed3Wud*3VDTKbYr*v*kDIHJ)+4z)-;_&HR z%c!p|TW zN?LD>JkT2!z^SiDeLlWpWC~7)e8&_TBmM*wpX6J?e7WQy4vCpuFDA_)y z!yn=@9YTR9CvnMpfWqq~SBeOo^o8+H*Opx{*X`kGBWeOpgHcMksCR19{o8xab5GcT zre|=ZfNZ@+mPYc;1zrqMh;l5v89svFrGG4Byayc6ua57{-Kx zyrbi~7*lhskbzQVdwZb%cs%U&fpSOcg?4M2=`U)x;wAV##OZ1~F~anh5gITxRg5f>m|M=HLjPv9HhPrCpZ$68FmwM2Hg=W^v%HqL8nb4*+9AJH zt4Aec7t$ZY*E6j~gkPbP71%!#ZSqd5ugsE zJ2tb!$=FU5b&=!F9Lg8Fg(_kHGCdNb_7!?cmZh&_lg9ZX;v?aD-gWW4j!oD)vpyG# z(c)izivTeI1$7HR@@2m`Z^i7Rv_Kj}<;rodzH;S4 zPwg=<513n3julu>NFUiPpo-3^9A7%ZNy=9Tr1<4%Xdm|Q%Bz>fH{WBO%o5#M{UJec zy8i9d)l{Qgw8Hc<`VA?I&1el#(M~b+*k}ES(f!AfxIutE;71bFN6{GVqzd=-D8pgF zMwnAIhOp+6xhp`^bIPQ;D=dV=Dn-DTOL(~2MVo%aXK|~C^ZFe0L+@1OL~QL~=NBH_ zyO#GDV6+Qsl9RCZg`bu(C+83qXti-UQ002^D3wLRG|H%xPEh3fluClD4>_VXWe^4B z00bFbNzxm824I~VUsAOQwHE-Atrx0$Q2zwpKLZW5VqsCSAm)j2!A&z2`K<6Ul-R=2 z3jjT?uLALCGDU%H=9i#QXePLTqkCv4AGEj!rr(P6((D0Y?vvz(Ht~#`bzhjRc|SH{ z;oOPMe35ucG7c@%sSbA^2ZUiRfiNlEc<)FeEPM{udFqNPPFZ$q6s#p!X4{Z);MmDK zLnTIu3-inr-4GHVU?*=Y=_a99QD3_0Iua84j-5tFg`pAAMXrBiuZK*MY z=&7SVMVX?X*BoaYB#@f7jsj&~xm2evJ4_`~QE_9%)1uxM&?MhFb4j5ZY>$Xk4*xjXI0CYGH zpx8lhu`9~NaVwlWk;Lmdu2iE|fMP)oNbKifWXT(9ItXe4-quVs3?X!M@>bDtBEjpY zfKr``rGpq`z9SBkRYJE8->5(-2&r?U&mt;UKcWmsg~ZyVX=}TO!I2y}PdnTzOEhGH zmf^3(ZX8e}#%XkXi@j_j*|B1K?R@vF!;xU%%q9p1I=#(K+c?>&I&I@St`&?ER${R) z*}59TihyY1?Lv^_*2xaM`+FxlD7C-hWY-DGHUkS3nsyPwE}rtTxoS`?nXwZyRj2N^ zFYLIy^}T5klVUrHp>o2(Gz6!?)w1}j-DOPC&Yg}U2(1X{&h!uiRNxF_IuGdklC}iN zlX-j4UJaEWb^B)2@I*E8)&ivKD5nu#I2n3&Q*B7+;3qIo(Nl^MrjV*{uz1Yn=e$SU zgrHG5{OhJN!drBRSHyVdm*|k37jJxY${`qqfZLS24$Exu>(1%E*_ym~b-Q^`-9kPj3lpDbwK zG@9kA{t0@|gslW;7tp9|W@AN`a!v|pE&Q(p>euHfN`JGO!@jNbV}tqpvh#;pbeG?; z@ryScjDS2le<`JL7sm%hjPt{Sb_uK|_>~mmv^1-^asF+E&+RTqFA<$0_L=Lk@nS}7 zg^s^bPGZn6+!Epv6@m!9%a>hSI;(M6Pu$BM$vGRCVhTe{?svRCpPuRmfJ4!tCO(;P ze&GU{+g65HnlRY)^jo9Yh#}umeU@Sa`I19)r{ZC+mc7Ayyny*~3lz_pCjj0Ap~B)Y zDjZo`ogu?EcbeZ*q^+Gm4j|WiwzJ|)00u^#pqTGerM!fK@b3wjsBRm^9cQe5D*Nb-1VfoNfLiVbp&ai0brr&ad7IN zp3izHb{&Hd4WEM)bcM5gU|mTV4M|gD3`1f zwxn9bUMK1k1gk`oh6fxK6Wy+)!@a0&ylq@J@A`7Tuts|DtT9a2vla2Y>Ok3o16cAo8|v|H@Q^H7a+;j>@Yjs!+pDY%8O%o{w08D{vHVq5nu#OE~U+ zO+^AUB-@~I8j3L6L3WJ&$DwiS^EN6P-Cu}lLQ*>XR4*xU)3(*N5ys$M!K-_lOaa8cgcG~6@GN@k1cv!uhK0D26_YqPVW$o&h_Jiq%Mv%jWWCu zp8Ej>VcbLckylA;T4Hx*^}zO+SL-fa+uIqc*nereBy?GD{q}k{iVEhZJy=r zhFtg8Rpsc3aD9-g9!&e=CxVTAN>F$#EXcI@ zngAyE1omA)wBB^kBehOZbX`eA47xJa&N#5~JDKV@wjc&wnJP+@vp6RHb+cL_yj4Dw zls=0=4!r~z2l8MY619KELGOfX;zcY$AQ0`10G8+g3>&8HGNseD%SG4q14i67`=tp1 z4V^3~fNNW?u(^L#G&QP;ou&S?5#BcE(+h{McOWOgdOvI~I*GmKY2&5jwy%OM^W|{7 zBuOU=LvA(!Ebnv^YB#HUk&8OVwnUkE#=+WQH~?do#=!op z6wb&m(@-_lgD|2i41LoMv(cFnPKxu=5Z7H;6Ykkf;1aGjuADU13xh#(K`P&xWka|# z=ja`l<%Em(r@WCcz}NnCYd;Pc5ScK47&|1O%EIlLbndxv@0iO&M4D}VI7`wqy<=(g z=H)Ji)EJ`0dI>i^U9pTQ+Z9J8i-wPQ0x?u_91<;{B^0C)q??&jg_|Ub-dk^kd`|7n z?gNxA`CWDGg}WMO%|cq;0Q3?^pm+Ed~Xp2*5^X*jd)#xyVy(+pF|+=Z;Q1VK4m1p=^pt1Bj!`FmIp$5-J!+ zYP)m{!4P|jMCxGVx{LX9{hT?MeCzgGv;|KwjgR1tMnJC(9+(__{h{Tzr}beWHB8m8 z;Coy22G-_S4S@gW2CT0T{U!hE56q4SD%5SIyU$wXfvapy0=!l%^Qt&HNll0i!?{*} z*Zo%$hPis+``IaQ$3GuCOBU9&d%wD=JH9Q;aqo^7k_Dh|AHF4$KZ@@Ih1TnV{(va- zp4<#;<>W+vt>8{wb~PYRJFfqx4V(>G?~N_5E*2QFa)C3 zX3s2B)^KknDIOGD7w-BFGy=trq2#q@P42XxZpAISueF#1QtaH*nSj^4+%+F_a*@=u-_*P3-3bVF` zzG#}R5}C8}S2gp&5Qdmvu`hRyj$vPSoviXRu=lTDrpZ{Fv*C-DHdksRmUb7YGg|op zF*@6OfY|z*g1i0s6gOGEDAjm=#<^xWP-qqCkVXay?iC3sY{5O%}SmQeJpsRFR-@}Y_f3^cFLtqNwr zMZ%&Nh$;X;?!tkvMG7;^W`$eK-F+$#$^q#GvZFoaz}hnH z=(sxMQE@^Y2$x@i-#uZ>DmlpBK!v^|3#-Pizs!o*s z{P?*B0Sm>O!0QNu;svykec_k}73LfDrO7IJQeS+c$7}WFFDPSpazN5M-5`z<`0bOB z+c#kAp*nM}yNtL*zcxM@8cEo16c_BoXzsbEcNs>{*-#2IJa{)%4~PZMzFe*5OuhtP z{z6lb@d~u}3zdqjeMxbcs;ZD34*JT=epSD}qqGRm2*Vn@vVwYwU;kb$7O$tMijiNx zcWE1K6?4R6R5t6~dX`Gedo4Dt`0F5-Lp**`B~u8)g{<>>?L$+maJfxNAkUEj(ZF z`9-S1%oG~wFPt8w{I?237lsEvHrdRIQEgR+DX}t??U$P2d<`iw6A1LXX>_i-7rG6p z%>8ph24zGpEz$_6J$Ohz&5kD0NF6-&a1&#h|A3os8@Xr*6AH&yqrF3l5=F5%&EDOs zA-(j^bS0CZ)^%wmkO?2GlvXnGvoYSkH(tB@V+0=1#}}kg+a4vFU(@w9RImmTPzVX$BoqSI>ph)OY>)lX`fQ8zi3puEt85rEh#lQJMe@nS?vvl zZ)_}F9ls26ThfAqS^0${yfFJ$L4#{HB~*Zd!U?Wo^Xfw5-|w zPyl4A?TKyK*5&C}nz~rr6ZO>?C^JL$>*xnM>R=(;%Z10e$f2+T=|+fb6atk$^1I`O z?$(eQV{^QBO=8{$($vZZ-}3d>F-^x1MYueB#ws?o5|F+_Of*;5RF9cldgxQ^nkD*% zwoUHbh0x)D7Su&64AEPB8k-ujmF5h#^rirPU-xx2ITXk#6u-|xAK6^s0|jAoHV}-G zv*@{XaCH@|=ToyjUG$lqSOF^@7VOATVA<3*Lk09O7$YcSDt`^OOLpCH-Ok-)e4bp~ z(HE%|i=Wlah1{s$lj8XU!j1~g6i!yhw`}?-(%f-ueRK7>MKd z6XqO>-SZi&@7M|=2}ENorJvp5_w2`JcO1vz<1e86$Z-sCyoVKx z$f)dLixg!&K3EK^=&Yzvo1Nr3Oyq7XB_4rgNjM(i(1= zV?^$TjRDavu<`d{)yqA)pylrNh~%tjxq>)8pIF=CUZI?EP$%uEGKd45%~N108L(ob zW=zyXjZM~0$jP$?L_IosM8>^3LjOxIniJ{))p;q@6ZZ3b#PD<(O*Ti&*o(ucTzL}F z_oh7sOvniJZny8wj2su09uYC(ep#}q z0C;mw;D|^jh?(G`+h-@}v&jB@XtVwy@#g~;K0PG)`7jtZKP2IN`~;Ly2bCeYWe7`M z<{1&(^t1p52;F>jTEaomL*5@)qv7%xZ%>WS%jlmPM@7GIYUscKdi3q7!HC%a6sffs z%<8+l5m=7w4REgI^D$tENk2O!%>mIlzSQmFr5`U9HMS65`+wpA0VVB)|3_xB+7$1S z^2>ZS!o((+o{`S+;0<^zsRr*OL)bw!2ObnoR{+VY$d&h0$in+E_7$+ z5HL*vA(OM3o%ImZpRQ^d@B=^iH29!YbK+_(~_yWyZ) z^2LChTQc!TQUm4n)wu7X(VL@jZ`rrE zuMAFMytC}V2I{8mXYQ__ts?xgYU`5e!>zQWW~!3VVY5VJFHHZghbtwsu7`_>x69MguJ4vScF4PgIZbXuoJued7;v>P8pYR~OR@f0#?b`V!gquB@-*pa?9pu*TtA zPZ%I{-+02b*;`K-W*olvgvEU02T#~f%JF!KJ|1Jt@@PC^;7;jE;`d%KJgaZLU?Gh* zH84xCkMgLgRuXyEE%bFGiAK<{a#`~72svj%i0nilCcURtIP=?lmk?RiHAtP%k?wh< z5rMvuJFvaqdC`8h#i`>Nfr4*+A;%WP4^FUqzQWP^Zyq%4kR;20^PqJ+Xd%=0jR&pA z1b7CHbA01IJ8lG0-+k86j$gRXULVVtY3GjROZVB&wqJvrAZ3(KnM;fCE?v{E?`&a@ z8Mx2-t~1p7{s``jj@#_|;|gUtx7n`z&+_>6t(6MKp4W{1HKYLWXEAM$n~19m+(X{) zb@H!cQRkIHX3mAQ^S_5SF6f9N^O>Ky$d45qN99gK`jC_l`j+L~HcMCMW6EOOY0>yt z$AutH6iBbZ#9d(=bP%%WQ6AJtAKRugc6UgnAQj-8u`^Nrl4BOyI-j*TW_XLe$Aeb4 zd8Hy-3f!%l)5IThXNVqw%J4Idpe>o`}z??qB=}3|!gu6AJ^XbZ+V&=n|_Cr@6DU0z|TLRU^BLgQ#bW z7z^V<_j~gu3Ij7FCOZU+_A-jNCGiL50|XAwS(a7f4~!Y2?aG0jlAe;(0tL;~pbSLkXV63myhqtxvP7Q6AG2#-A@8qM?l@g}#5+-W`ci0T`yN4Dd8 z`waH}!9Kg*t*mwN6P&H2_5`+d;z_!dojqofS=FD9jiyCG!Tp|c@WZB2`FP~pqM^*Q zUE*f<=eg&-CgYypvgbtuTH5D#ettD#wE{766#yM#)r&G8pxyu{;%B1zqw2I2UxO$> zvFMBpWcGq^a>es#a22rR$2X9ly46!0|0XMN1o7LrKdy1d%Lz|Eq^j0^zFwQJM>p8@ zz%`Wt@Az~Ws~*Q`lCRG&;5b$~f87DcvD)LwfQ2?Syv%5bFLb=t^19ok3V=xzoE_SE zt@t7`7;OEFebnXJ3a}IoUI)^qua0){UW+$*XLquqhZ23VxkXv{9Y6ro!*%{F)azzZ zPu#fvqE7k^oV91V7Pi~0e4#~gTfj%vmi2niw$O5xbU9@uxs5F6b$=4B=geDqP!ObM zi8MrdO{RneWh#)(Q?u)KWk;-y@~}kV0+CsJG%}S=ja-Sl>4+{CG&ew6IYm$(&KdUP z&(xZctN^gi*?`x)K7(dN%dRI?EHS2s> zjBdtw!lH#%6>dp=c0PX5=B~Cz-!}nkd$X*%aL$f-Qx`(jF7sKgpk1zzk}UwxENTu{ z$s66>Tt-wtH>$q^@u>TRnopmtoS8M%8olhu`3-6p^<7zK3P)4{(d;V@xSHHDs$f>#R>cjto ztpR{IV_B-KUrPCY1qko;Ohe*P-p*!cSsS`6G zU3l!mnukGG4PE5sEYQ|%Fd7C-AVySw1{gGm(HO7+tTZ0`2}j#y?xso_hp*upa3+J~ zq~W2{L~LBT&-s~wbEja`hd20h*91qp4YQT98GRB#*SbUSI^5`U~86Vu9h^`T+pi zFSsXi_)}=V9Q%N0QSBHh>A$L}KMrCHfze||4n4ethutLt{$c9rv<@a76A8?S0?4r1 zmx$8B@KRxJ-!#H|X-~tVWBFuKwufStMLu7fV*!P^7C%nM3bl4kuI(P4SwHMzuyPq-y!9jPHH?WJI08 zN);8jc>e(}3&uN@K_G5tacGooDg|b*Tz+vTd&Y~JOEId#JU5BAA$lY3gKE@@PD5P! zDaPC`aHJ`JJ_7hzr%Aj|Xcfb1@aa=w^uNi8D?xQ2hU4@zO4?DC`#6F$m62gBIB6s0n+_|c&X-qx)+JY|W zSn5x>^$II$r>xrZ3|Q}Jkx&^I%%kxsr&9ng7~W#cciWzpU{R8lK<0`m zZ)!ljaFew&GIGo*=wr=N{TI8u?+_rtuGA zU3%YRtJakuQiN4EU+E~Aocb?$TO=A6k zApkD`I{V(Z1gz~HL-4%7nCEOWdK1#6LbE!KT_HxD-lZ*Xbo3c9`~0-5gB5oE?y5@XWk92!FS@jH4mw}vYQ}2@l$X7wZV_}T^pu1 zhO+%*C=X!|N!#N5%_WRjeB5;hzy;;RlpdEnXzeC~AA?mRkcs7+id zle3L?IUl0_6yu_|MIWNSgH^7XkE67}0I6a%;$!7)WF{J|CAx1M9KS>XA_#w4MlpN< zq^~+gLDNfFLG(Rre+&@J9Z+?lDrh-N5o>cyU})P7^?F` z5$Vl^`zBF;&O1?$Vhg}0IWcfFS{=1t{s5T!UqG-^8?u(Ud^TPj%0}@sq=~5mJLMdN zzobHj!}sn7VG4Mk&-gH7S470AM1#lyz<9<1u$q9ztV^#9cHI%8#V!j{)!>E?-7%cR zlP354v5EKWaftLF3xD#^4uqD*-qQ*~i`aKW&Wm`{dyJ#D zJH|m>W1>eKgM*RwK|E76KKdA*f@_z`%w~x}_h)22-GId{IO5LeF}@-KqGuGi6s(A7 zpR(DD2$jS!Z`gM0F}9dm7j3^igJIoup1t2cx_rM8hxHBXdDojQKKPEz}&;;?*d#PtDpq#@7<)cMz7?b+xMZTQ3 z^qNCT{`?ECLlb{)!jrNnf)u7)AJ_q!iU6+oqtmnYGGA^-NH!V-h{-QB2r)iiXb{Gl ze_4YNJ?s}W2nF!+pm*oL{*22M2q#A?nLlU{dd$AjAZ!pusANU|0Cbf^U z8g>@2@{YT;_`lOzfBt1j$AD~s)$cV-V_wioBBMzrL;Ahe7h`Uhsa`kSuIU?P6oI_a zO!5U{@^p~ZJTK$m;3NucrpaUOA3eOORb@;O;t9w(U$8VIwKAx!6NSK$(3O+gGXeqlt$DP9&v#9ZWC z!Z@y)fF&Ynj*i(me|U)WDDMx5WV*l3t%pd5ww&x7NBX~@FH|xeK!811a;zH zc{}aVFJfn@t%XRA0}`)!qjffobJxT;#^RnUka2LrU1ht24n^~eag=okJ9Z|{|54Y| z%DK$V5%lK0ow3hrcG;kFh;QAFsB!>7JO=l=81`e)Ci49jmO5InqVfWbJ_YOAxqJ@R zMS2JLLB`k8`<=D*G6=Qj7xl-Xp|40<#Z{NEHE(xN<0<;P_@iT3ivz>o6=qpxEO+G4 z+fiZ)YCJ)W13fijbe5Qc#f7Ox%hG7&t*-S4)gLQP!p?g0oV#jQY)011Og$QhsIh?Z zrG(E9P2nLe3ok00DJ!CE>9>$exmC4Dl(l9^bEmh9dmTHlD9inmG7p)uM%?8hyqS9D z%s+{pG`&Vu8kn?1swSGH=udF_fDLvVvK+;o$H@dQyt^JN8f_ft73Fedt7LJc^skKu zv^r7w79Q1ZqpGi>QQ0n(O?GS23|$-Mx#BRngTEJHpgzbab@2h3)H*}yBu&0eS89Tlk_MMkPi&S6N^wsV zz~Oj=no-6m^s&VrvnSN#rpKTYm8=7quF zunxiL(JQBCuBaDqdcbMH6o0w;g7z)dygi`MTMtiu@I~D_Zx)NWZ!BLGZs67~&OM32 zeda+PF>&;(8ROn};8pY)WxgIW8`KErY*n6un7mzut-C*D<0FIX<^|34L1p*L47Y`}WfU|TkU_Q7$s@wyV6630TLk#i}R@P|MHpXnB z)0PRqET8Kwi$u`MY>n@clEyKT1(aur5YDZT2iD#sLO9=IR(sUOf0KpKWSHKBR`I$% zpRaCiv$F&(sO?XQCEWxy_v4vgurrq?aCbvnXK+mdcF*a;aDnV)n)t1(|6E~HXpcjX zH-=yv=UtdFFUDw*`FV#vCQ&qz=C-duULz8&3w_Qqrv*}rzzsK()2~>??hDt7Gi{R7 zrdyIEEOqOujc~SQCw!W}rmM>oMEKC#0irQhmw;$^=L_f%;WTC}Fo)N3PcZU5pSdQraz5|=NjaP%in!__UL9oKzu5}UpGS&y~i@%0wEg%l_llM3Q zjM@?`WVEy3ZO*5qyF2lWGMFB+4$EHqGrhbG=zG9fw!xI8E?^U*#+*F=Dp4{^iuhxB zdA$^c5w@bVCq+{l&P8b|ML{`B-J80K-*K!8&FUH%+h^xRot+vDFC-0E8(&`FMbU9CS#2WR^;Bg^&7FK^Zu7FLg6u#PyJxw?Pozq9^( zp`bNqsNtaBD2IwrINi^7%Gr7@v3XOvY;&6Fw2bPvtUKIXL?Z4z<>2ZtoI?(CQ9pe5 zLK3)BB)yPi_wPl2Ch4UiFb|Gvel-RxB;Z(tcQGZ#n?@r3)6r36Z|3gZB%%^Pavh|+ zJ}FCgDa8Hk88}j`Vli*fDTwm~H5KIpu1{rttq0`JO?9_~_27u+y6MD0$pI{qt}t=N zi~NzzbM}tIDzuV423Rl;Gd3zdZ~HFK)NmxXuh#47iVDHvDaEO?s^zuw6lIuK^-a6n zd>2g)wW-s2|IKz}Fp24n{2u3hxJ#W1_mI2Ork88x+MiB81w-4kX^dti)gQQBrbtE| z63%kJwrA6=qrsndbzoXzNj79vHDRqGC?>>Q^yam;C*v6A;^}c!W!a!nih7WBtjI+; z%f5`EA{Qb*%4+V2099yb;Z;ox!m&gqNSeue{v zaSZX=>n<7p|Je-tL;SPzmY8CCYU&K}n&)?VNFNRA45OZ*Miv@RREMFzj+K)3+a>CIQr9^3I;Q{HO7nWvj8VxdHR-7o~ku10krvWVR{<_n&kl)I?SFESsJc2Vt!GsE05Nm3oFSK)~HX7^A-lD!ogUAPW*^!R*{E%%lVF z*itDecfh7gc7S;cPB#GlO=5lLbZh)o-e2-{T{q{Y5Ir@&&nNMBiAtRy1MwPDV5cG( z(^}^wjts5Nw4QNjk`#zI`gfLcp(hU>NWKdbmllF@s9e<(6ncC#O+4^qaE*ZVw2jW5 z$O<)OS`e!=Pj|N@%Emgtod{TrI$oC|L1&GHf#7)zhbbyadPDNL>F|6zy031uyeUGE z2C@A7@&n&FF{tOYr#DfQ#I+cX-92)+7cQtbqw8USdfXiY@F3t~wr(EnKtg`fg!-BP zC2=rw8@WJ0Do{xZliVqHNEZdaaLFf=e{gIb9EUm#ecr|*nJsdIr7$O#6~bvLSKfwX zh)tDGP=B+&LptC#+cBIoUB0b-6}ySSL?>KU=ohQ7jaW8|#PYdyBP7mnKFVpSYh(x2 zxiR6^L$F$=T8;Fpbso;zm^RJckX*pHS!1O;qFH_iz3+gZcLHBzho}=InUEkQvUeD* zj|rdG=h}2VcfTghJ;~Oa=3S>j7W7G?m51(NYUFs60{{+|Fc2otTD%bW5Dcmi53*+v z7lFKOJRO7xwJ{VSww?seH366jS`#g|06`!skFdpeO*JB!xt1ti(sF0+Y>eB;skGVq z?xI5#G+>M)WWTEX>$XJgWBRX-^ z=Rq-@69=HK9P3Gs?iA}e4gAAQk)IZiy6dB-V8VJ{{y<|eFXj{i(FuLR!adyp9e2Qj zHGdC0Ayo8DfKJlm9y%O{26*CDH{{)Di@9CVTe!4xbXIwrCwMjYBX`guhs`54 zO=>m)q}{BtWsJzin@ds^Mg77RJjQNbq9Z^9-#e2aJLk)Y-1`MRPGEmfnl^*@UY*i? zY>EAgjECFNCUu53+z#QEAy)(g1`SMkDl-%-<=>VYie*on)f@`W2!Ga^K2oct{wqku zXtjW>{s%xQt}>%QDPnrNf*Guj)7M%@CCp}mP3O1O{f-421s;gSb7I{U`F#ofFx#01 zyzGRj3vNq8wxjv{UnKAIMl?S3V4&C2Td+^CNxm-^;Jn7~%LTL+lt#CBZZ0gBtm5os>{Q6hr!S*XNYEB%r3V|A~)UQ3CNcdllF8MO~ zGlWpmtbK)*Ca_sHR$ZlJCwBdlf&GMts^q3!RNv*XanQKRMm5%joU`jL+G6HzeqnT- zpkqUgZw_wf%|5ItKq%` z7m{$ue56DK4QTt6j%Gj?Fp#gptPs8bD$FYBkj{WZyPR1Pt?-*sdeUu`oh&Z9A z5j92l`J=~6GKny{31tydv(pt5$_nFSMH9jv6U@?bi+aChX+XI>yh8z>b7Y&&+K5$n zY8x4hWw)_g*cz#yxLCkZn-o_x{b(9A!@-wtxM)Dn3j6R>;}eBc4zQq&uc-85Wr}3o z!0!;s^CZr@{+0&Z;noV;bKe zu&3GuyCI?6H^HEBkzIuBI0SvKEk>bN4h0A^&2@7S=2NblLOGpWx6x<~U;Qd=OPxYD zmP`|mmAPk97wfm(IF;<@0grhgwR3yZS5rYpiv?p9&CsI#gc5O2jNmJ8V?Mysvhx#g zQAX)aLD1k+qJla5qVRp^L3gn(8k8$&jHjYFD2HrJMKqf4jn9~V7JFwT5Xd3u8 zD32`--SBUYDxE_G$6PSnyfXkM-Gpc6)V;)?rfg?$jo+5kd%A<(A}G9K@41G9Al(Gy zpp&34p3iA~%TqE>8voJ<&p`Q&@h=$4`*>s53nSSvYb#I4U9W=%y+jmpx7z7<>;Ll^ z{jYkMrU`>^0j$y>T@E>^xlA?S^pH;`i9|7Hlp;c}#RD(OFL|O&>3a4=IcIGbxEhsJ z^OG%bwRTbn0pJ~3I|Gxn!LB?rWRCC^;|e@Wq$IppA$vQnGZv|qSWAm5lcXs)t=lz| zV2V2^y`5;P#DV(wvdgHBQ zhKXdK`eU5(@KyA&9o6rmk2^g+L?0_tx`%9n^Ts)dBvcY}-?QlbP{C&POWx4|5-(qj zb8c;B2>^5`UtgEc{7hx^ZJ)K3#dmr@o2NR7hlT@P>`C?j z928(VS9^d3`EG|+?NoS?3nNTi9$BjTsww|e!-{+MN!az)u{KjqvdK#2H}tM0eM1Ax z;gMw2Y-OgP)W)29DK5C&{)Ce1Liwm2o~GCUs-+nc}}jKwR9L~*wUA~ z9w5GV(c{*hUe#A{u+9G7g;%48HxZ%1p%Ar60vP zUUe2dw~8;yQKq<33TB>U4K05pgDaMnuj8fA+tbk<&IrrMK#{u+gH)|;E5 zj=kRvpv?Om7sg)E$-e~y4SH28ZB7=G%iOwP;hWMKW*xhbTUywkjT^dKJWRQLpw7k-Vf6_cv*WQjYjTlN+;4(#m;l1 z$Z1{mN|!8E?@k$qf)TtHfnFamSHp{}B<$iQFK8OZdyM#FfT$XB?Bl_Q}bk~<=LuWj5lG+&`qQm!b^6AQY;7+f z%!EQ$#*)SV=Py%*SyRuu8G7#Xq9T!WEQFnx?5I(;RUB*C29m$43Jyv5uz>eFqZvSs zJ4yVDq^V(n_J@`*h;1KfHF_^EBvXo{K15PWBBjNpYDy+sj$m@`n47sV!G285Elco3 zu`5-eOk0o~PP`kQ$0nD@&jn{7nV!-rN^&z(HN$hE3+Y^v=1kkFKaice>j2m`&HbaN zOFs&PkjZrqr8<9=7^fn|?nLt(jzG`aq=16cj6EG!04bjpfmXpyBwA|M3eSIM_Pv2- zh|HqGL3ZB?+v8Gvl2pl_V7W^yeP&d~f!|GyEku$d4*`Ng=7@{HT$f@Nq*g`km}ov zx?_Et@nO7b^k|xnG`dx+M9ghT{(bajG^sU z2KaaCPXi1+ag`@VsH46i0W&2$*GaR$kN{q1fdSJEC;A6C>AN~#V`5FKyBSPbl;n0% zgQM!2_3xSW%YI*7rM}||(^Z6PtxVLNm>{B$zAA>K`r4afNa}@nRSZej@unCO=2_{$ z^=7bQ6*@-wq3FwGH0CFh>Krk<%48L8N}JHr6JykNpYn#w+R@2wjkgR>*=G~C&Tg>8 zC-AQ-aMGkId1e-14Af3hOJb%&KoXA8};eK&5|F3KxJ8pV!S9C8g&%9kc;^{O&9%!B$gozj zx%3?@(gI;r0;;0hMnwKS2W#PDReR+rh-u8-$a?0ion&T5eJnEle8~j z(Hiz;l)(1Qq%U9W$|jZa{ngXmLVZuniQRZS?L{sI&~Kj7Sw1i0!pqPwb6BWOh@7In z6l)UoJ7Lc*G=DWMe5I1_?mUWrQEu;YX^FEqxTrkNu?-MKA#7sQa||WFqRt-BF|D?^ z4a+f*f$tECoS1@55puwCss;6z>;`D_JrV#euCD>@4JtM`^JUgv$)CVX`qT2$g*0CH+g?S4fCUCv>fCTZku>+DgeTMqT#%kGwJch@PWZILdx2r8M0sX};VmR5I^5+i03tT#w#Ge_?K5D9_Auw< zAG7&%a@DCU?Ai%>U?6^Hu{!jyJ2pQoL4n$_CD2fDLo9jl!CElD$6^IVmm56*!{=pE z3(x}ACn@_PFTe^$z6^}MO#%c6@$h#qsh&?bG=vWBbolEZ$-0mc)%Q^7A4L7dNC$wl zcfA?xT6X`Kl$@sibcF&VA&%_PJ^9106Br~ql}I`CPFTjs75a}~AW{;?wK(Oz<rpqqQeozPX)&pqFw>1vx z7jdv>*GF?b%7=PAbk6LCF+0S+{C51HCJ`6lU$|f%!VHjWvJB~MTmXR^whNIw^6}cy zoQk_r^(k`ah)w&3t24GfYRZSmdw040no^iIbr|$<7d939bY^h%IZ0bHyS?e$YxvG| zwuR+a$Ljh7FgNQYnAa=29Ej+yU3PV#E|J)0ofwm{4$huv0>+-qatzV&G@f+iT?~js zabA^a&RNz|glb$~RRYN+zGa49oa4W9YruW}mA`NHu~?iMTP_$=%%e9IWORNnE65}f zY95BU2~ZP)4ijvTuu#1tUBEGrKAPa>wtok6JMwTb6dl0q4ThUUDE4b5n6aP39xrYZ zIg`!Oe%pDtIMup1Yo)kY>h48}0>cA-<+8ccq9VTthLo9tXdacBc4+OG!3bVmh;_As zC0M_D2Ph!2_=x>c66gd?s@C*56e(aJ4;~U%N%itZiKZm1X|EAm{A|?#>9I{4)TSfj zQj;rY^DbT}gk35keX~4`qeUbE{~9hgqh*}Xzv4A`vH#Q-;Lp2R;g$)oX-ouMeHUt~ zs;0eOv`DSQdNQj?U+p6ZIIBro$$-FWB}1UbbD2fJ5hd>aY@c0Vw>e?=MBtO&we7=B zRt=W$@gcJWlF4F-jU*<=&YzdDnE@EP2TvGprBXXatP<&>$Z8!heDK@WE3fky61)Ul zx6Iv}rG_pVtdndW**rYuw3dbKg3s}2H<=83u`fr6VJ9OBv$(eu`C|6anmvtliSGUh zB`>&^d<4pkRfMVc;OD>d?Q5)8a5lT)ul5+|VYxY@cg3KX&;S`8uP}yaSQueRAxgPgf9V?Vu!;C zgm)NF0BJ+$xYWFXZHQKfo>xEvz;ZXAVhnWC(Ym~)XaBKUrag4pT3IUs`J+=tG#%Npric0_k?*XVnJ(hK*h;0esw2#e_h~j+xoOIi%o-6l(+T zJJ~peGM~?(!2NcR!0;y$2T9DBEB&NJaeylH3WF;I+em$81%pGw9^$_(S~{=RF{v_L zsYAnUeKwe)#|3yau?y4cWVTuZ5;GH&aWkY;q%4E9*VIkG*9z#f5YcRC$UON|9FjL) zW%%-r-{kY=6FVcV9Cs78fL=|8K;bGf(O2-2iF*7Ww0~QCV%kqmkAAi(*2w_vz87sy zpKAZ=1n=Anb^Ya zT&rR?Mi&&FbL@iO$kvsx#UL~nVZc63kpteF^wz{b`AU-V3%tmXBkv60FC$?JRPDD! z*ux^EUN{nkg8+MQ{#MiR%aqL1u!K7gT`*c-M2GeqINCIEY$&xQ=cQBi9{oTvgm{Cj zjFp%Hu=E|Qwj61fxAomq`Eu)DaWFSif8>Bse=$=%EaBW`GyU_QGgsu}MWLDnPm1$_R53nPTc|+w zg)c8|d>ny<(=N3?+pgOSigj7U3ic28FDO=;3y%2u(cJ~bp~r`U_%s2ex2J;m{`Q%- z(Ws5Z=mp7(vK6>Sz%m{U?;HR1`|==7lF41MI!`v)H5v^WM5e2&b9TyWIDu*Q?JfGz zJIElYex_J%s2{oX z^Y7OHr@$$;9$4m}AzokaQ<4s;3ty-7>U_a+l9#W4z969~LiMJ&k{q+tE0zU7?Ir_m zshkL0af5p*uQ_2ktt|>Exp@@zk1dHAwrG z$4z^y?1A;88Jh6Zrk3hq<7K2cKAQ_DEU+T)_<}Ei^K0%J2R^raAx5n29K8?-x?y(q!`2eyN1Y#AlNsCNa*o}A>wq|Tc)U% z3&@_k70b%oH9cj>N6^2y&Ck2CF;V+cEIp;eRPB>ws|ZhxRsfH5bL#z1a0-$V$u4p^ zjgNG9833Ffk`$qGa!pcP+T<^X%|oeUYp;s>uH1h07ut`m6%EHB`0#2D!sGi9EDlpZ z{mzNWO4&?(7G$OEDp2~D5vR6vRfCDs@#u<50MY14yeLl=opLO-mJSC zJuxWOV5S0N9&z?p%f&2Ny;9l*NA@BTM{(zj%5RMvrnv^lS%Bbj(r-SCJ=FDC2J^g1 zJQZ7n(g-nVjZ;*T+M-^O_$E}kJVYWvO=xX$6P;pA!Tj)99A}7Z3d^p?M0Gw~2a-bY z6)Sj3oL@#Eig!kVsn%b`$Hn}1tto*<#V@6TBuvJDeNxuFcl32 zQuva~)ieUf*f(C?21aB5>b3)KzHx{GC)K(F{3?VtpG_-bpi>+RNwagN2=Z6jxN*)3|4%{7taP*r=9viNsH38OIE)v~UlRpItH7aeB~7XzDh z%=%(2(GqaRh!_`G%r!45s~@&z16nZ5lgtv?C9_MM2F`w&aXj!!t);MTFj@LW73g-d z*W&uwn*GvDV3xOQf1F4rgEKu#^4=+}0p`cpETw`HsF)a_4~XI~o7%k#lQONVk)Tb~Mg^IQtqUV5y=(RY<`9%G zw|R*n-?QN#n1cr`&Oy@e#lHi}S5NQak^QonE|-k`ika@qgsc|GZqA-l0FG=pCMx`g|*tEQ%*AI_A2H#F5&e8d(l$^9A6-~fTqK0J^a zAm_gtNC4y^vQ>p_QVdcqeyJRC7@f^dUu>XH#1wf!mDk2>w*#@S@No+{nD#>`t)!x- zX!L;k3v71#Qb~9}OgjY_1QX1sRqz1!jtR0)0jjR&-=Wb^uupLczJs3TPKTqZ*jIL2 zR|Zo~$-=twX-UO9(*UK+ zfRYm4(l}2#LQtl|gu3bl=&N zr=z9>U4qgKQfl$oxxU7({eULtc`St zKv!nO860-WG%;SXuww{VNi)~F5o5Vf%$;6sj;uVeo@i%zcoWoMRr|$!xlz9YqSjWc zvdUJij-$Haf(9=-z_Axfj{KpFx0 zM9|a6C6NB;GWmN+{7yxDqtr)zUX}cpt5MvJZ=$=Jb$gn#_Q@E5F1MQ4f7C*a`(A4S z(8|0un3M(p*5-~(A@9{YOi;ydAZ@_IF-~=V)z(U|IEU(Db^<{R@*W6<3un7` zV231}eV>`E-tEwm8oC}f*FKRQ!PoHf^6`q>jvVj@Y1-1wR825zro0*#||~qUGImp z!Cgq|%k}XzV`yvQAt4)72qU$d<(^D1W5hO+e_iAi>((;UslCd6VHvn+(e5FdJ)M^p zR=-MdtZ>tZ>hD*%X!2WBak)u1YTx3m^kAW+Zg?qsExLS}e7=X(%5&wiqzs>E@?!l+ zHptveIZXt&0UbppTb@Coh{2is45qx1MDlf|>NQRLrh1W~3y`Z?gpL zI6ZA0Sy$~u37UGW=nA6CD(M&HJfJKGJ-God$s+)P*hwt}i0|pRI+naXcThNa__ICW zp7(Vbnvw?6HCG}KDAODVkZi+TUsLqmh1O?#<6gFC9y8^!AJTASLlK-S(c6S275v~Y zP&`(|WA4rnd(dfZ*=5u5=XLP%c1`AEYtPLf9}&GnLMq~FP%1EFPy3SROpnpHJ$E6b zPju=|5)&o`-%pBJ=%tfaUxIf&O5M{XU!+K?rw7rw>~)Ra%mEZzZ%bF5>3HDD8+Fx# zugq3NDcZD45l^iFXKpwx1Y^r)Mr=#ptuk4^5sh#Z9}>)bi)0C?<#QqPfbx4YVRRIndLcS)jIW{% z8yD~&E6n`K9|mUUyA|z)G`*=_?(1Xb)9aY8E+1&;LpF6?kf<`6XX^{Sx*hLH_DNm$ zBs9=o(&Mw;(PeeLZiA?Ot}xv>XjcQ2 zCmEf6GO;x!@1}fPNXtLBN`L^_6`CQ+ew@fnF* zLCh0%rCFquD)#o$IlNS#cE*gas=TUEBjI8$hRjuTc8|?&MjKcriKlSnvA_lByj#?l zuL$i8u2>P8qMKJKuT2(GA@WDl&cJyoQ4OON1Id;w8cOOwtWX^@`vJ@v!zZe3S`fph zM%A#jYG`X#PqT|z)RF@d2@6Jm&^C*E5{9RKf|yrdcRN8>TI{6;58c{CsmgL_ zHZ3Sc-2s?ABP?ZfrI;-)%{vgtS>R0@%HuH}EGs2?f-gMCfh_yrl*X+cd>eg+`u7d6 z1|eFBT9*neD{QyVy0@VF>PEB~_CAS7)0{*L)nc&3wcP?`7R{~Q1O}j(E28LQF0_UU z24nIOz@tSFDDu_P!B-||MA8Ne(glnKdmQy-GbrLh=gNA?i`;ab8+gLMw>8dJr%NFL=%w&_+s z%T6cfsanr4h@=C~{|iHnFjn`zHvL`LiOWBIZ`3UzsqL-p;>&73kc&U$2^R!Jem*H~`M6A>fn{GkrTq zXJQEma0{Aks{Y)B!)QYfsg^u(z^Z+?Lj=qg{VA&HLI#K?93bW);s+ful8unh*M|Zd zp6vUL0X995xMQ~`n__Evbz}m~%-eDieKi97k{w4~_ zIi+64X`H^4%i9R?A$#BRedz5yOso+MGcW`h>@>mhfs|bcUiiTIZIgu)?Ogp z6H}n3vOI=F5Cgs~itrZpy8xUnlba1PT0loACJkIdVvtyCrUQtaGQ25BL~|HABsB|x zz6Y6PC}jAuE~Zd^gu9}O96%#g4Rrkys{l2JZe<|rKFxb)yC5lDGr&SpM%~5Y(ihbWgK(k_eWMmD5D;Mn14L(2Tm+M7 zBbWUEOf1Lnf{s1@MJP{C&I2qq*OIGx)@Rt?VtV)@-=1k^t4j7D#qq4=reBD@4h zO>ZFg1r+3Wq_S*M2A_N{^E;+%WKVCFV_KYc4yTfjFGeBd)S>$5e5zeY&Yg8+V$0)l z9H4=il@?NVzPxu%^1NvJD-G62O+kw^RK6dCf@?4Yni4Vu6--Y(K7Fk!XF+@^T;0Te+W0tJs2MQpY2T-3X$ZhX-@SCD_N_C>-FhWa* zM7hq-Eo9AMIU9%PuD^~0ltQSVNjk5X792n#wh1XfuwmEda&bMKp78J# z9;V3qngXl*tM|0sd#_BnYQl$D>YMIBsaX%_qaI81ka~irmZ zM}Xm3qkaLK!CM5dOZC5B-)N#X5^RZ)Wb{0)2D>SALr$h;o`YsxU!OBemf}?04V)SM zb0s9zCYpdvcQ(AWYZSr3mp`APZhHc>tbdG`p^bX7>vj zObfbm?f@`}sb1ekQS-|> zfN2$VEzsadWfpsLlvmma$n$g-fzSyS-m!uH0AtVioq;{Je{V#=Bpkwt#**G^X*8{5O*Q!Mk0W~HFVPK+fC?T zow-l`Duz4gU``v*O<ZF^$oXAL0FGfU*r{3HCzQG+I-S5GmLP3~0mDZs*lJ zC$|9d-gUG9i(neaE791GmVtf;5rLx7iR$Y-QL$nRDk8^bGSnggEv!N3IIe!gZB$@} z6J(y$HV#l)8W&*X?&sfZ=Ulb-0du~zumtT5+kpsp$DzUaQq*U$&^$^*X_-~wLA(Y(JDJl|RB)B%4D&LeD8IH9 z=&cTD&7W`g#Kpg}lu`B)VZ#D=w}7}4!h$-C-DT5#c46Zc`s~9#*N~zbXLZn*8<#~v z987rgv0RP0NQ!(ZIPOHcJ{{zy=yk%i1HC#YVc7ymf_WX2hY0!lPA#h~$mt4;WstP8vrg8c4dsCLD9HiW);T}N+(KJF8K17a zyBJKTb#TH8aDpc$;KU0?Jn^0=;=2mU8zQTH3*Hp*vqpfg@pW-QeATl2y9gg=y+W_f5b^<$EzqEv` z+s0ZN%IlFn1aS??vK zzpSt;cZHuD+Xu_>W^sOg8ZL%zN0w51l2XJPrDzM&wbETt!T;9~K;)o5CQ$^GP=B=<~-UoCu^4iT*Eq zhb}Cq!N}kpA$QOWpwdksw9tWUG|JUdR3y#!>}OPZR4NAi2aroOCBPp+Z07M2GX1yL zCmUMY0G(hw2DG!_V*$m)%@Hqy2hiRjny`9^Xtvm6Lk%~Wni`f1P=URrK;|AfZw)tDLq_Ci5W&Yv+w1iKms-_abf<>UrL)HLHZh=i5S*Ou zux=@d;_VKv+K6Vp8<*5byvZtnbYdU&(XT05yCVFmaw+QAA{+kQctw>u7X1heBd8{y zcjn_|#O@Ys9wqe4vH(D;ei0Yyr5{)w*k_^(8Bue|g>6#;Q0_fht?psqOcd`(( zymBRt2(EqHRR0OiR-P#!(UAoy&;Gg4c&SYJ&n1O(Rj&&rxE6L zO+VVH=Fbn0E<<>Vdz8Qqe6|$~>;-a>laY<&o*)Qw1DcIkRoi3HjL$&s%r=hu<}0#7 zJJ)Q&vyT;T_w0F`Liu4GsSb-oL2LQCSJ$B+O zD{n4_S1JUvy8ssohg@JFh2I1_R0gR?$iD8ieS!L+o9pe{ZSk=YXGDx$fP{v;fDrQ= zZlX8cHo{Qtq$SS13j3&8xUwgAkRAd#l5fhDuMFc`%bq(y5=HdXXR37koh;=k-?h||K`@M zM)xBIie=2#A?5;}&im8C%w9{eU=^>)ul9P2@)o5Avi)4}0;rH19MU{b&}n;3%N|gP zz~`N}MHi+-X_35==j_%w6pGKoC#YeNOfkd|qYKZq8~2SWf|Iasq81|^fPNN5L2wPe za;12;&wU8m6aMX4`FA)vkjc_;^V~VIfql#FsLD-Ozc3vK5J-WH6i1jv>!wk$7n?nL zojh^eI)0*83ACB6Yw6aj)UNRt9=`9KR=R#-wLZH-vSs)Fxtn(0itZMaOmAs$)#Mt@ z#3>aEEVgJO#+8hVIPaj-*4hgXp6%GTmtCtF3*0T}CGBO0w6EOLH&=SuIDrHjll^`1 z|Hl0IgG$myWfkjcj9=9ogFOlALvFf*`T$qJLD=Gs*b5hN9XuUQz9#ODKgg-p zx6)Pn4(NM`4-VFckc})5Dhe7)BlOUk62<{vqh_R@jYEr?Wo{JSuAf&r@4yk}xLRFTA)i-JUf( diff --git a/Python/pythonrun.c b/Python/pythonrun.c --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -193,10 +193,10 @@ static void import_init(PyInterpreterState *interp, PyObject *sysmod) { - PyObject *importlib; + PyObject *frozenimport; PyObject *impmod; PyObject *sys_modules; - PyObject *value; + PyObject *importlib; /* Import _importlib through its frozen version, _frozen_importlib. */ if (PyImport_ImportFrozenModule("_frozen_importlib") <= 0) { @@ -205,18 +205,18 @@ else if (Py_VerboseFlag) { PySys_FormatStderr("import _frozen_importlib # frozen\n"); } - importlib = PyImport_AddModule("_frozen_importlib"); - if (importlib == NULL) { + frozenimport = PyImport_AddModule("_frozen_importlib"); + if (frozenimport == NULL) { Py_FatalError("Py_Initialize: couldn't get _frozen_importlib from " "sys.modules"); } - interp->importlib = importlib; + interp->importlib = frozenimport; Py_INCREF(interp->importlib); /* Install _importlib as __import__ */ impmod = PyInit_imp(); if (impmod == NULL) { - Py_FatalError("Py_Initialize: can't import imp"); + Py_FatalError("Py_Initialize: can't import _imp"); } else if (Py_VerboseFlag) { PySys_FormatStderr("import imp # builtin\n"); @@ -229,12 +229,15 @@ Py_FatalError("Py_Initialize: can't save _imp to sys.modules"); } - value = PyObject_CallMethod(importlib, "_install", "OO", sysmod, impmod); - if (value == NULL) { + importlib = PyObject_CallMethod(frozenimport, "_install", + "OO", sysmod, impmod); + if (importlib == NULL) { PyErr_Print(); Py_FatalError("Py_Initialize: importlib install failed"); } - Py_DECREF(value); + if (importlib != Py_None) { + interp->importlib = importlib; + } Py_DECREF(impmod); _PyImportZip_Init();