From 5723acff19379a675fe25429096431de9feec9e1 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Fri, 24 Oct 2025 11:56:45 +0900 Subject: [PATCH] fix(commonjs): handle `node:` builtins correctly with `strictRequires: auto` --- .../commonjs/src/resolve-require-sources.js | 19 +++++++----- .../_config.js | 13 ++++++++ .../main.js | 4 +++ .../commonjs/test/snapshots/function.js.md | 28 ++++++++++++++++++ .../commonjs/test/snapshots/function.js.snap | Bin 22761 -> 22843 bytes 5 files changed, 57 insertions(+), 7 deletions(-) create mode 100644 packages/commonjs/test/fixtures/function/strict-requires-auto-external-node-builtin/_config.js create mode 100644 packages/commonjs/test/fixtures/function/strict-requires-auto-external-node-builtin/main.js diff --git a/packages/commonjs/src/resolve-require-sources.js b/packages/commonjs/src/resolve-require-sources.js index db1603dd5..5f7fe0726 100644 --- a/packages/commonjs/src/resolve-require-sources.js +++ b/packages/commonjs/src/resolve-require-sources.js @@ -196,16 +196,21 @@ export function getRequireResolver(extensions, detectCyclesAndConditional, curre // Special-case external Node built-ins to be handled via a lazy __require // helper instead of hoisted ESM imports when strict wrapping is used. const isExternalWrapped = isWrappedId(dependencyId, EXTERNAL_SUFFIX); - if ( - parentMeta.initialCommonJSType === IS_WRAPPED_COMMONJS && - !allowProxy && - isExternalWrapped - ) { + let resolvedDependencyId = dependencyId; + if (parentMeta.isCommonJS === IS_WRAPPED_COMMONJS && !allowProxy && isExternalWrapped) { const actualExternalId = unwrapId(dependencyId, EXTERNAL_SUFFIX); if (actualExternalId.startsWith('node:')) { isCommonJS = IS_WRAPPED_COMMONJS; parentMeta.isRequiredCommonJS[dependencyId] = isCommonJS; } + } else if (isExternalWrapped && !allowProxy) { + // If the parent is not wrapped but the dependency is a node: builtin external, + // unwrap the EXTERNAL_SUFFIX so it's treated as a normal external. + // This avoids trying to load the lazy __require proxy for non-wrapped contexts. + const actualExternalId = unwrapId(dependencyId, EXTERNAL_SUFFIX); + if (actualExternalId.startsWith('node:')) { + resolvedDependencyId = actualExternalId; + } } const isWrappedCommonJS = isCommonJS === IS_WRAPPED_COMMONJS; fullyAnalyzedModules[dependencyId] = true; @@ -226,8 +231,8 @@ export function getRequireResolver(extensions, detectCyclesAndConditional, curre wrappedModuleSideEffects, source: sources[index].source, id: allowProxy - ? wrapId(dependencyId, isWrappedCommonJS ? WRAPPED_SUFFIX : PROXY_SUFFIX) - : dependencyId, + ? wrapId(resolvedDependencyId, isWrappedCommonJS ? WRAPPED_SUFFIX : PROXY_SUFFIX) + : resolvedDependencyId, isCommonJS }; }); diff --git a/packages/commonjs/test/fixtures/function/strict-requires-auto-external-node-builtin/_config.js b/packages/commonjs/test/fixtures/function/strict-requires-auto-external-node-builtin/_config.js new file mode 100644 index 000000000..6001fc98a --- /dev/null +++ b/packages/commonjs/test/fixtures/function/strict-requires-auto-external-node-builtin/_config.js @@ -0,0 +1,13 @@ +module.exports = { + description: 'handles node: builtins correctly with strictRequires: auto', + pluginOptions: { + strictRequires: 'auto' + }, + exports: (exports, t) => { + // Should be able to access properties of node:stream + t.truthy(exports.Readable); + t.is(typeof exports.Readable, 'function'); + // Should be able to instantiate + t.truthy(exports.readable); + } +}; diff --git a/packages/commonjs/test/fixtures/function/strict-requires-auto-external-node-builtin/main.js b/packages/commonjs/test/fixtures/function/strict-requires-auto-external-node-builtin/main.js new file mode 100644 index 000000000..d69942f74 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/strict-requires-auto-external-node-builtin/main.js @@ -0,0 +1,4 @@ +const stream = require('node:stream'); +const readable = new stream.Readable({}); + +module.exports = { Readable: stream.Readable, readable }; diff --git a/packages/commonjs/test/snapshots/function.js.md b/packages/commonjs/test/snapshots/function.js.md index d42cefb65..324a7f2ca 100644 --- a/packages/commonjs/test/snapshots/function.js.md +++ b/packages/commonjs/test/snapshots/function.js.md @@ -8715,6 +8715,34 @@ Generated by [AVA](https://avajs.dev). `, } +## strict-requires-auto-external-node-builtin + +> Snapshot 1 + + { + 'main.js': `'use strict';␊ + ␊ + var require$$0 = require('node:stream');␊ + ␊ + function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }␊ + ␊ + var require$$0__default = /*#__PURE__*/_interopDefaultCompat(require$$0);␊ + ␊ + function getDefaultExportFromCjs (x) {␊ + return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;␊ + }␊ + ␊ + const stream = require$$0__default.default;␊ + const readable = new stream.Readable({});␊ + ␊ + var main = { Readable: stream.Readable, readable };␊ + ␊ + var main$1 = /*@__PURE__*/getDefaultExportFromCjs(main);␊ + ␊ + module.exports = main$1;␊ + `, + } + ## strict-requires-circular > Snapshot 1 diff --git a/packages/commonjs/test/snapshots/function.js.snap b/packages/commonjs/test/snapshots/function.js.snap index 591ed402945e96e3a75c7474002de99aa03878b2..3d190659369e9d69e05a8bf6fc596d5e59416cda 100644 GIT binary patch delta 14219 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 delta 14166 zcmV-cH>t?GvH|I_0e?YOK_F9ZVQ_P3Z*(AbGYSI$B_YkE;A7#3G>x5}`k~8|r^fIL zB}(&DN@v3_fU600ABzY80000000Zs43ydVml^E7Nv%6#!#n19cnLP5ivBM#&YPYI- zx@Nd{>}GShvok}k#3fg|v*hZQ>)!0jsP3G}$}DDPO;_)1<9{IFAlR~OpJ3mCmJRCz z!LrYHhG7Yk&d?c>4v@|#3wJi|APF)c%eu4mfqWKpuq2#p81etTtg8NGclJyyKu%Xi z#ETaZ@4a~M#fukzYP1ul!~6LU{^Fm;MO4Ii_W2;squr!8$-$Ah-YclWYR|0mYMN1CRwP zpz}Zdv-|^L0Rg#_UIl~!t&`&ga00)mlT`+(0Zx0eq8M2{QtBSCfwkBmr=fvk3H(0pXK14>$&71$OoC|Fd%s3jzXv-?M-bX#oOn?6d00k@O*6sGAm8~6Z=i>VvI?I@y_xPnj-oNs14Z~!K+t94s4B_MQWQ& z&MKMT=v29@q_z;~Ai25SCVbp_X|iC={OPoKQ@qO-j^L}BW(uyo_<$n?2a)ct9aKTYzd zN&Ym+pCi(uJt?oun*XH8%2o*|oF3TDLhMnN3!1jGA4cyGS~ zFZADk{c!!g(0JndC~wh^u5TGnN<5ULM0t#9>xNY<{J`wbR){CMpO-eNk(s_?D~@2c>w3h%1$t_ts}xNxqD^R$bP7U_C))%8k8bx~>~ z3;mXwmqa%wRmoPjhtbZI=t3bHrXfcAQ5>UxY?`1^mX1+@^I~le#}l08Yttf%`}cAP zeE*m#_rOM}cBba%%Z8DpbF9seMip3_pZKV^HZQidsnLu#IQ{Xyx0$`o>}_UmGkcra z+sxi(_BOM(nX9&$H3j_mW^>V}YHQwRDX*Lc!l-?yT{PWbm*f`dx3YbGmD{?W2|t5> z^A~!outyfQ$H_WRqR}Wyc3mU=@&_s~(*L_lmXS{GLX&&8o6RO+5@KVgBb4KK#H7JA z3GpaOa7ZN&qIJo&WE_t+n_R8a8tz9)nC{PQ%Bnz(*_6y}%&I_*d1S!6#xnPk&_-p+ z9nP8Ume}j|qP*2ZYJ1s+cd%4=DFFhNm4 zIuDe=NS$-{rg?!zK@_7PM^VwrQItFg;wVJezV!6lFXeG5*Wf3SWRU|vQUom zagQj%SrWw5PnQEJ^*`{%3b^Kfe#+t+roL10arNpoB}>{ZfnaZVFX#N8x43kXE!In0 zur(-cH~<@xi6Jpap;P~QY5j43Gz042D6KF3Yx+jJ9VG?M(g~N3FQ?;4P@p#17saMX zy?C7PFjKfvI`>q=k$yTtNf^C|Fxo&55&yb@Fgn~shxUALZ}SRNRDWKHY7n2cYUr%P zaUrcc3v*mZ182#O3+cMEn8$^5qf<-ot(*7YY%g95esDAhoh1AGU#As+n-!q#`r@`k z3k>x(gC+VS46e7izPQaTNiF~psa9rSpEWJyWtUN!Zm^9F9d?lvBuEo$AP8fQx~R1i zWG%ft-{Tj7q0==F4=F5REXd43y$g{Ew&HUKw9`aq?ex+I)~3qY$K6+d&lf7#SAXq8 zkM_PQStB1itW~T1)#;Icuuwh;hM4aSSc=f2bSUMk@SYJO=9>bumfQ3cfO{mk51LoF zj}P)T?(|1#b~_mEX=zICb0-LCbDwGaY6D@uPkOYbI@`sCw(s1+`7nznMVhs77u{!$ z6VWZR97NT2(na^XC?pWjizp=1M{755G9BZL7z7*CGuCCFcX6?QVP-awbMW^4cgSRu zT8ACwiRH&JNndT&n$wMAHOer454V$!lo?(fT238ud2o9>5!77<(;lxAiSQ0hF|1;`QlR4tQ(-8_p8<8pP;h~Tes$EBe#s~E} z9>r8D5q&6|4vY4vi-K%-N~SUI(tcE7nkoJjt2^oklSzEgCN;ID9iGCd(FoLplL4w< z1ZD1$2)K5O5G;)Xb5XkJ;e#NaatTBwi7q^oIl^;U0htJY0a=O=BpyNG=!!=Dm?|OS z(G-fB!W7K00u1ZbR*?Wsm@5%F-n2L~)52R4^DPNYQKKNtuIp@8WTsgWM>+7Mfj23< zN#RWjZ&G-Z!kZM{r0^z%Hz~YH;Y|u}QY>Xs5E0;-6wNfU*V!En`r2ZJ*@Xh=$AdEc7|=?)N>wzK)nlluw%XY()qWp&J$B#JV`Zqa4`ubC ztlrV;Ls`9Z$cM7l#anctLRn{5h;U~Y3F!tTo($`Mg?NIK5GTU}cavTH@d`HCCs%<@ zc6cw>wK{t+imPE+f;9wJ?9$aHP{7#Uu7skluB)swYSX|+> zg_!AoYkk;kY;V(L+uq)wIVHNy#!irJFtA;cvx!T|QJOXn9p}QbE)a!~A=~fRW296$ zN>j9@#(5`AHO`(+!l1y;dznVl7OO-a%skxGCd!?rmlXq?V5anWx&zMBvVI){qx12) zuqgz5EqBag`sJhiMYBdi?Kq zR66!Mc7HTEo^>smBu(LWlkt9U7)-=461=apVUo=1j*eil7iF$0sM-(;BUrI|6nm|Z z(Op|+rnlQk!elS{3Vhhia$MT2Q98|vJqQVcDo21<5*UyYpm*6o@40rm>i3C8MAHC& z;GETT6`&`7rve4&Pt^N)Yp(!#1?aI;fb?C+OdFxG*%nW~B=+%RY~Bjmh6cGyavP;5 zS9i|o#3UbEdpF+-a6aby05?X}XKn0sQtP-u?8^;;NRfki+rpYTyTd8(4)Soej$1^|vx#wksnjDG(cSIg(#;CChks`Kx9hb%ED^;bTJZyz z))|v0r8b37*TJWb1h>n-14QsrC>GhWU@*ey0<68Dj3dP_BC-MCm2;hg*33;dpmAHF4M)7-pKykAn z*_X6`o>Z$LL(IM?j^(GnDYchGg*x@JF23Ub^VMKSIX zI_`zIz$Lk^F8{K|olm^5va<4(m6erGudb~8ua_2b>E#7n`j=OL*nqUy!q`@=!~J|ZIr~p!{3i z7i|@`JlK}=*M$y9ts#$-MJXHxdlj(GANI3nDL4TERkNTfasdIAlM^he0kpHeEO-F{ z>614ubOCactS(Lg{geAHseem${&Z(wsUQZzkoR?reK05CBySy@?%}zbxZ^?^)KAe` zpxaz8+fVI{wl164;?u6vIw1q!ikQE(U0=Ml-EhLx&TQ}T8%i}k6q(rA-BmvF-&e4! z;E#A8iua*-ABy*(_^>h`R_4RXe3B`jWXdO*@}5qgWXgvT_%MRgHh+QlH4B)&u+BAR z*Vz5Q4=ONrU;aR?Z>@SA-0R?voeu7%!DBLFElGRhX+gg9gfw|>tr=rWEhHayf=tt} zB!bgPNF6qK{|4Ps&b^ZK6Y7C^j&? z0(mW%R$w@9aNLidhJPuJcFNzxJ4^LSO{A_;X^)Xv#~|FNhKyq(tjk>REQmcs#yeZ~ z$c4`m%QC39)1-43iI==(wf;_!ao;o5rN}2vYb{1n#3#*&skH=r-UjGGgHgAweDN#^edR3exe9o$Lp&)lUvA+EK!4-6@B}9DTX-TVJS0sU zW}%sCK+HI?&L({-(a{!qw;AF|lg>|*Oi+_eQ1e~2oD}pqzHF|hp>003_imH?IUo6B z(xO&RI}MvpZI}?-44|x^uYj`Nx>Rd55%y!z_vS6qp_`jSId{?&CY(EI+R-;8gJ|y1 z9g{vIN&mVrP=AC#E1!$mZoJ2Qhdnx}o?q^w8?}6Uc@!mtrGQsn|8fQ7yj%ZVJ!eh4 z>oDz7X*Y=vTp272Tx#Y;B^1p|6;(?}4WJrFZLEGOZ9C|q9aA+5&~s>qXg(T=OYq?9 zv;2i&j{3PiMk^(lWlzY_S@YZOv-(>vDC>%!ecGk>C5CUJAnnmzs$Ho)*7ses{s zq5k`qOvT0Lki6auC~c>cT1zZcd5SH~x@IfZ6;4C*^>k%c+@Sv4Mi7SNkT;46ZD;p! z);4K_Zb!=2ajP5MAhfn-v1~8Fv!X|K3z{B2$N~~O66ATbo6r^lHEp%zYt4;A_P9Eo zg|0an`hQdF)-363S8@vMi)SBeP{aF@FF@p;&#j0D_t zl*&GpzQt2iVp*>zQ)R7%`Jl)eDpuyNt(2{dd9wgo8;j6+D`%SYwRXpMb-i?iHt9P< zGW%IOEHiMh8se!U74yBMvV;qE0vfCS` zV{!ljYu|TeR0>bAJk)eq8>k3TSZCcIqv08*F$l?`g3x7y7nV z&3Fzv*FIe?JTuNSBiVo;H0aut^-`NS-lwGQFy3xr4?yeoS1bV%c1U!Gqa&-+cX>?d|PR6k~E-pwr*W z@Ca?7cFEL!@rxys-p{ikdjEYArHTkl?KK)X)jL6s-+cWQ)=8&hxf+I`%x06`#@!0uwgawk!tbGn533UzvC@?<-9e;lOV0C5X_a6Q5<72xx!C6q?us2FmjXnmC9(}B>F*8z| zX|x~3F-nv8fZ2-q1P==wlIt$)ib#%v1kr^+lQc?-rnTUPK4Z=8)5hFtKK|9a*4%0* z7xsF{J(2Z92jU1B8csH!;a7kB7=3awd{XYQ&H)|dK!2m?%Y&7bl^hcqH%< z&&(AhP=8p4wKo9bJ|gRW9%5aQE~wmixL1K@@=3^e@Vr{JH=xd%(>YvD;aXblOo)UP zZ}UC@^{|qp=k@n*oqu&S|DY_K{~W^F=Uq!tA@6C5o#%R1U z3Bv_Q{0~<^;_DZJ#Lry8g70tBCeEdDq}?i~VSOiVPAh6LwCAFeIZ=$lBh1NnOcQd5 zAP2yI^J)d;`mdl^IL$^pD@oW7w7yjIKa~7v5A``^{et*zKBsY-#d8do?X#Gzc z)7~4VNf?pAL9axwR&rw#a*@myN5;Peti)UJI=m%UVFpLSzr|-?OQMmdWBg`vKS}qK zuY)=)zwtEF#PLIxR7R$DA(xz3YKb{jS#BDZmeIwMulvkd^|#cTi^6`wlHpj4H8oc_ zJV=6ZGz3=n?|)aYx__ibt6Or%ftf7*APi+jruKb&&}D+OgSNiP0|w0P_wD=m;2pHZ zYOy>cEDT_#M*y5~DJ8j)8aASB{^q7y@ulct_8F5PSS%RV833~QwF=1MVg1Ph-g8YF zkk6iWIf+22R}eCDuk7NYEn-mQjY+X3HxS|}SWcgqY=1iVoJj{6W`BuGDS*cKOa-Ly zD-bDcW5J5hHq1)_S`h6(ir|HkE+m+STZz*K|J4_X6}4?ywwAGx;)8|l>$ntMQ3T^F zN;~RWErhWIA}nwD)0`CD5Lb{a>>YX%&=px(RRwkFO2ubOD2sju=;~V)(AB?&=t`R$ zNmv(<)_=~Ax_FMmgIBEx1dYZN3Cf{}`hD>-%-N9Pr%W=OCL(|j*yWz9fCPU7vMy#N zgm%2G4c^jb5E0Fex@)A#?OBu;QL<|)BJwt4f^%|61b7>I(`1^1tp3#s=J_AjKg94n zoDQY2v+k{0rhYJ$gTmC+j&t%4=&3T9k)+YyGk^1F52n2Tp#sW_yt`|8$}7{Ul`_51 zlht5q^9kWJXu`P*!Une1E+}8$+j=ZWo#wm*?)m;=1(d({MC~a*#FH|@zlA63aBS{+ zX>jhk9-X`Hgy*iS_}q1Q_8nz8ot%caNAN~E#^OQ(qb>FQ)il$~v^Y9hRMdAy4T%qN$bINI`lv+Tit;CN||7@EeORO(G zI61k(3m>9riZ1~m7VQqvQ`j5`YS6SwMGh^|00Y{kbJ`))z=cCSp+;Cb)B!NmH-D(2 zQZm-Tl4Bh>V?A@BvhFJGs&D}4f>O$m7!+-6?!z#X0eR4+juL1u%|c9aV*?WA->X2v zyik9u*_AL>JWRe9WW0H#z{CTUfGZa7sqwdUdnWw242elrb15=KFv zEHQG*3Ro^bRTIU-cts*;44(1J+J72)by@@kM#UZ$H5q-1k@e+}R3=a$42VYbo>6@9 zqERu!(nh})(Z@1+Q$}{mxi#aHiNGqdX|YFx>R6>ZimTaYCqb@m6cj1Do}A%4jUNE9 z8&CWr=t|IESS-ivD?y*y2{L}e5{JD%a0hRH>GzHGyI8LRCtW*1_6l!8wtqj-oD{pR zSFQ4*n;Ms%wxy_&QbsTJ6RvFKqGZ>SuY!i5*lSe=$t+P?D!as=x(rhw8*pV6ji`NT z@m@nSc2og_PN(^J!Q*K$7bWM@yjVM+mcSZNMT7aHWVdgJa*Gz?lv>o=39{F+bR6a6 zK%4*7=S5XeSz4W`8a1_Fox;v^tyU(1^T{gRp4=IP~TvLa=0NF_sc8HfTLe zw5#!oaKj1s+-{WXZQW!PQ$$Gr?MmiLW{VHC#d&9mdmWQ_x*H|EC@*mlKGB6F;;$Y3 zlB6w@_HEmdU2y7CJZ|BF-JTPhy1$K8&3VrmIXx+}SXZx%h3?XI?te)CXe-2%67SJ@ z+;lkt{?Z&UeN6RHjTWT4UEQ?!lIemX4Jv0xp^u2qsgbL6)|q5D$Jv7(x%%46@Cau( z8RA})^ol*)8}3DM*c-;g1a>6OQ#UHGBme%BwYDSuYnc8u%*XCEObL#P$cKmeiN&!W z3crOX$A3sN#FLKeAAdaqcj7JmAdWv8NyQ_gRY`KKB+O|w>d4WkSsYp;lusutn>hVN zsh-5Va8A=XfPSa-4$1%JMNmXT#4BGR7+>K>=5*sDNtoE4L>qQ_m0Im;;?SFKJeZ%3 zK!=0>Zw33yf9W%QoRz2btnWA*N}rYAg0gQK<9?j(vK(bC^MCfUtXMZji8CAwi(W8E z<2VIUY`j(hll<;HCb?re&Bf=NDnEq##9NZ~2>E9DFwJl;43b^=(chO9Fo00BQkY(} z3X*JwI>-iGSvZA6f7E%(q&1buGZ6@K*i?jeGswXAt@Lu`1!UbrIDv2C9d*KB&%ahW zf5P;WfT0c&ntw3+WPnYeyGFu8EnCfg}QX%pv8*&Xe$K>OzKriQGF?;`u7+o(@* z?a$2Dz9!<}ul(Zn2P#RW@qt^s^Mp5azMz6>U0GX;nm`YW-B+^KO*8r<7 z2-wz6uf+vLo-AI3TC?b67Ba26)8nRfB>2?u%)$pH(|;f)9GC=A1W$n|l@l z1%q$%cb3E?9MXH+?CB+WAz|)>i0<|2P$==q2(m0Vcr7SM!r77uc}c4ROp0C%PmEqe zPEKGzZIo1BFiCIoU*szE+jQ{nESMC%TYX|obj0My7@!3+WY>eH$$DzFrwvh%y=w$G<9G zMIkPtR`gPVEmWo>36|TP*EK9AmAg8t=WgnacPrS`Kh(JJo4OU6rV3Sn*V%3Qa2(sb z&0kM|u;6_R{vNe_9z*6NH#G(EChw6H1t%I#SAQ6+DHcWL6MXvW1U#|jYQ+hrRVX2R zdgtjN;8f33L7Zu}RS|2d_2TmBu3lMzr+>cEa)Kpzo3({B9B|5)QE=R;hZG%q{_Q$* z7U5j|z?QyRdSL`4+DRD%+Qf&@rvvIOscMs6 z_+v4=c!N_0J`>~`T0^uYOU(i^W4^hGi56W;`|qNb>?&gTv6m<6!{cSQa*Z28z_>(o zC>a;0&02D7JpZQR_F1 zgI+^k`+kPwpokt|`9L4QaIaLraK8hc^&9b6Dz?49Hi~A&G{gCtSd=vf?=|s3Si=_)i^!j^|d7+m?|+cke8Q-AbE)2r=A#U9T-m55M7fD7NKfD8Y>i?;3QPfBpT zj#Lt1<~*r{`bJwGJ6M#0=+f}{luk*w#u)9EcppeLT!q278nxOw&51E;zt;`eXv~HVPwOb?v14z9rm8QC#2*iX8H?-G9q=FWbFr_p<$> z$o4ef3&M0Chdh}YU>Ro>$n+n%h{0iJ{kFaP%=S6ixNtm)d+^+BP-A{U06wEQnYKlE z%l5N0*<~-5%mcu~_c<~O%8q_Lp5sUo3n(O62ij-$P>8U(59`OA5t}N|VRh-}Dqzd+ zUPOo0S@D7q5XK?%2!ARWyOX3vFGza9u$U?$?U95+nCwxU&{&if+a7rMSi3#Wcg0)L zNbRiSe3x&@a)05Q$}(NmjiA4u@1M~;|zx4?e0Q2}B9R=o*ZVk6RKaPn(Uf?|*2 zQS4>uJ_*i8x3etG+O3z7c3MS;@ zO%??Ojt|f%&6uqq5F==!B1QXYcE3+(^jvcpk&WXU-+tq+a6@zO8}>R-U$d6Rh*l;I z4JUMM*euWQM}HG?!6yiNJ6Vtn_n^dIPxLBaw7+93c0TdfS?qy3ZaRM`nSV(tf0fAJ zO5+bF{o3L00`Jh{eN98%DM_;gWK^n>u?3?N$3Yko@Iibxn`*C3-)wi#CRFVX@qZZg zRJAzWB~tdKBwSxuV<3Df$SM7Hw$7ucp|XJux^A+iV1KMF_V2tGObaMsTB`!#^1nbq z)O@6p6$17QKz`HU5B~9GBc~ew_)>{B`LZa7a(>CSaKP;>VKBG0@i>ka^z(-ihL_*SsooZSTYWB{a4qpwLT7;O?TOrI6<}fY8Yk1X&hvL z>GuyR;H^JeZw(pV_C$~w#J%5UDYzZ_q2FQJp+%BzcnjlezO9&kB%PY+NMu|=Z7&Wy<8Z~nFvh)*rhl0S!wa7H=?a+RYZvj^Ex!@^jqsc| z!m|{4(572Efi|_}S%`P0P&lGjpS{$0T&2cw)aM@t8LOA13E*O0eX9cQy1aTJbOh^4 zhEyAtmUX3zK?JN=j?cTxK{U3W=4yd5J^#%L*5!en>DhZE&qDj82NrqB)^L{=0@8^U zz<;8Nl}Wi&a2O4ziU`NBk4)&w<$LVl1V6wT+QA6V@Ni19grphL-?I}^HI4EDcvtZo z;=3~hUILGS7s^3M@C~;TAI6^i)he_B>|j)+lU|G;;8=6PN`Rmv);v5vYrm}RM;>u! zD-Sxeiwowm7gMD|6yGGehyCD^}63(bei6V1g8csb5KJcyh5x>VhjEYvAnC*l917pZeRe*EiyQ)O`w9p+$=Znk%M1bLwENu*(>(s;p#9To5y|@OeRsX%YRiG z0;%mxgbZpl1p)8*u+#3)yDjBh+-%6ZA8liXB%}^aJyr^!juy}CimeLJhXNNoJbdXR z6=(v#a4|Hr^NDT&J%$&6m}tc@A*Rv?L_YXT1;q3#kDgiyx&vrtGPT;}ZztRqN#aWK z1Pd5*as&%HF!KXTz-~@pg%>qJ^?z>`C7Wd|SdiO6_WrsTE5?sH%gl<_cV?*N!p7!G=J}!tY(rd zFqvlO+I+G+t|s1k7FT;jhx{3*#ca_epxEnYK@z6pb_abGUF&~|n~ZZhaNg-4MylqtIBL^! zHOGKauI!Xd!=byBFD2ozR#UZGu%KE83)fWD1(#J7FJ4(=TuR|A1Ahc9!~7OY>ZNw` zMQa9)(Nw37$b#PmT9s>AOE4i+)7H3_U_-FO<;(b~j$pH}Th@hi(eoQsY2DDtq1_vB>;0nlb#%`f-qTw5`7V1VPS$GJzP7h6;g2j>vau76J-wzc6~`!n_3TQJ5M6u`E-Uc7J51E`fB6_~$tZ+CNzVEB}?{ z6SND=eA@L#=>Wva-r(d~?~iew2fOsOpn~3CtmktgvoDl!5`Q~$+nGjj5do3YmsTra ztDn0lXKrVE^;DAijX@nrsBM$bD2g%72%Am|@v0P=c|bV-Y6VpE-lL~y)s+u)(Thpk zREaF6F;xJ6(C;vV&?3npm;q?m70RNw?!5HMH}$}*^NCra@jP4T+9rz^SvpM#q;GM!+zxuat%0Xn!y`^4lz0wFGru3ZO39fvEFB ziMj;Sa4T`d`7ao4+1^Cj;Q{_#NHI)97M2oXCd7`+O*g!!ffwmiBm-d)0| z%=9^jnMe-&33*zR1hWAg^-YbVo_JwpW#ua?D=ROouB`mYOA9&cvc*|X@8Se!K|vn$ zGD(FQ014WIU9x~@D;f6`yW-X zdwumH-uPwg2QhwSX$t!R%f3l1Dm}-n`Yht3X@4%)8IcdOmWUE35XfWmt%H{MIgEom z=iunyNPT%I^Zl`OuCU}A zA%D`Dda8g6t^>_qEz1tNWOcQUtQj^YSia89s`L*Ix@4XuFj=szRiSkb>gkNTCZqG| z!)gi63-?{_`40d;b)^FN_P6StR2!CWA)dH?x?A)k^f<|S>FXrx`tu|fJJE*nffDj( zE6t+ah&cRtK#y3jJ5iPw*7+0_Jffj`iUhr7WEhh;P8|YUag$e0OdVQ|rl}KF<2T%R z;lL;yn1$Dk!s}+?4Wsae`Ml1Pz)mTD*ZYvCJR#vZ9Q|l#KXtujwQo@oN$xs{@eFWt z{7wbb^e5_{8=f0lK$PT8kh!Ti1L&aSW>9iWax+keBoti3EEL&7=wHBfTy{I2g`;Tp z2nFQ|{gYXSa2%$x5S_3~7HtWnY`+;~OlG^GnDWvK!DWZkV^G9k=~EwIL&{)(EDUp$ zrh3$+f&01VAchm{OF>~Il&g)HNQx|o;wahe<#CYj0ej8QS0EkUs{gS9=$JXvmm~D3 zg8Duiabr+N9csVGf+QcM*_a=hvFecH@t;;e-#;_Y@#x=|^6yJMqVG$|r?f3ObvkKW zZCT|ca%BoR{ZmuPW!pn>tSC-@HFPZ69p#@o*6ZdJD1Y1h_>W%E-qiu9@i6VxtJlOS z40}OcjMcij$zLw#2=O}fs-|#gq7v~)A`42cNIp5MKu&&so&(d%NiQcKX*oG4F+Y_o zhl>Cn9j9mjLLV8GwdeVJ-#JMoUmItv8>7dH-6FT-m&Dm95C89bYE~p#OB^ zz8G>^UNb1}i&nB@>>Of}pwB=wP}R0H#@Q~Gn|e;P#xW(jF`$8RAGoUHv zTw2ViI}QRy-Q~>3U6jSJf74rfRqwy`+hgs02Z1g*Xx}NJ{lyy(LZv$oId`aR@8O3e zOKd;l2;_)ckZ892HiYDV?p~zI7H>$R=Ap!bePh4b|6lCA2_a{5Lg@IrlirvugSj=4 zStC7IU$qT?tFZQ~65HwWe_es!{5!|;n^O$E*W7!}iPzlSi7tXST~%ZQ=nDLg;BGhS zftR{%)-F*(SAV?%*8U0T9<#vqc0T?VUpJV=|kr%Z-V;a66~!z&bCNEseJECZjxmuRsTl? zo8%um)+VW(1AdeAo21_){U-USZ<3GGMtHwu)<;a5!t2Ru7Ldi_yr>W3l=7Dgm8dKmd*~GBn_{zug>u3cX)t* zv`7w-gKgLq_#h|zZb#X_wmK*%^^(;~R_A^p7<1}n z?gf&$bFXhLl))wEV^98A1v2;_dKv6x@Z&0jy_CH;Qg+b+PIvJ=q}em&lDF(m(sLEa z+~4p{xEkNp@y@x@J4Jd`_r}N)TvnplT&m=8Cg^(5BYDr~!c*)KsB7OLE`}L@AiDod z1w{4j`ai1yzW8;)iJp92B*M?{F(&tRUBk^R%1%PvP|Sv-u{2nOz`Tdile8zPrMEMU z;v!0N^}dotKyATAT{_Wqd@o>j#o}x2CwrS1X8?=;QUxrYcowgo#V-^ym*oIxi=YVo z{y)}N9=znwA{`{Js_Ke8B{pV%0sy30TMjZIp6G9^LD#x9eXe#AAR?YGnrEbRhX4+gb4pOQ}!kp9j%T6PiXprczu4)Q@@ce;O9V66&|3-6YL$ z$oXgOImAAYA!spdwIR-25@#<8^IkyQm!3>LnbwR; zKndPQx3etG+O6BO2_6=$>^&!r(!*@Hv(y*j|3Y)@qSqC)lPnPw^IM0J!+(p2w)={KPlt{_&IDG)Tp>^qV z6$q67vHrP0YrgH(jgqD;fI-|);avmnr$1K#IsM!9-k&5k!*o1OlY3%4+moQ!qj)$% zSxKnyAPL41>Fhu(D7w-@&m+TmV#Y97d_J$8LI{t^+rEruNOlP zaX|&Xeeuj`FjPx_OPh#cnpe@R@u+!p*qgs^`#`=9z7%sSNb)R+?W4|kI@-I-jK|BF zyAl)0Gq-2%^I`7w1-v|{1+d)m5rKcIn?RZ9XF_zK*+sOn!4eKC gXTS^$FH`6@8