summaryrefslogtreecommitdiffstats
path: root/Python/compile.c
diff options
context:
space:
mode:
Diffstat (limited to 'Python/compile.c')
-rw-r--r--Python/compile.c74
1 files changed, 42 insertions, 32 deletions
diff --git a/Python/compile.c b/Python/compile.c
index 1104def..4b2cd07 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -120,8 +120,9 @@ code_repr(PyCodeObject *co)
filename = PyString_AS_STRING(co->co_filename);
if (co->co_name && PyString_Check(co->co_name))
name = PyString_AS_STRING(co->co_name);
- sprintf(buf, "<code object %.100s at %p, file \"%.300s\", line %d>",
- name, co, filename, lineno);
+ PyOS_snprintf(buf, sizeof(buf),
+ "<code object %.100s at %p, file \"%.300s\", line %d>",
+ name, co, filename, lineno);
return PyString_FromString(buf);
}
@@ -1020,7 +1021,8 @@ com_addop_varname(struct compiling *c, int kind, char *name)
break;
case NAME_CLOSURE: {
char buf[500];
- sprintf(buf, DEL_CLOSURE_ERROR, name);
+ PyOS_snprintf(buf, sizeof(buf),
+ DEL_CLOSURE_ERROR, name);
com_error(c, PyExc_SyntaxError, buf);
i = 255;
break;
@@ -1366,8 +1368,8 @@ static void
com_list_comprehension(struct compiling *c, node *n)
{
/* listmaker: test list_for */
- char tmpname[12];
- sprintf(tmpname, "_[%d]", ++c->c_tmpname);
+ char tmpname[30];
+ PyOS_snprintf(tmpname, sizeof(tmpname), "_[%d]", ++c->c_tmpname);
com_addoparg(c, BUILD_LIST, 0);
com_addbyte(c, DUP_TOP); /* leave the result on the stack */
com_push(c, 2);
@@ -3789,7 +3791,7 @@ com_arglist(struct compiling *c, node *n)
{
int nch, i, narg;
int complex = 0;
- char nbuf[10];
+ char nbuf[30];
REQ(n, varargslist);
/* varargslist:
(fpdef ['=' test] ',')* (fpdef ['=' test] | '*' .....) */
@@ -3803,7 +3805,7 @@ com_arglist(struct compiling *c, node *n)
REQ(ch, fpdef); /* fpdef: NAME | '(' fplist ')' */
fp = CHILD(ch, 0);
if (TYPE(fp) != NAME) {
- sprintf(nbuf, ".%d", i);
+ PyOS_snprintf(nbuf, sizeof(nbuf), ".%d", i);
complex = 1;
}
narg++;
@@ -4455,31 +4457,37 @@ symtable_check_unoptimized(struct compiling *c,
if (ste->ste_child_free) {
if (ste->ste_optimized == OPT_IMPORT_STAR)
- sprintf(buf, ILLEGAL_IMPORT_STAR,
- PyString_AS_STRING(ste->ste_name),
- ILLEGAL_CONTAINS);
+ PyOS_snprintf(buf, sizeof(buf),
+ ILLEGAL_IMPORT_STAR,
+ PyString_AS_STRING(ste->ste_name),
+ ILLEGAL_CONTAINS);
else if (ste->ste_optimized == (OPT_BARE_EXEC | OPT_EXEC))
- sprintf(buf, ILLEGAL_BARE_EXEC,
- PyString_AS_STRING(ste->ste_name),
- ILLEGAL_CONTAINS);
+ PyOS_snprintf(buf, sizeof(buf),
+ ILLEGAL_BARE_EXEC,
+ PyString_AS_STRING(ste->ste_name),
+ ILLEGAL_CONTAINS);
else {
- sprintf(buf, ILLEGAL_EXEC_AND_IMPORT_STAR,
- PyString_AS_STRING(ste->ste_name),
- ILLEGAL_CONTAINS);
+ PyOS_snprintf(buf, sizeof(buf),
+ ILLEGAL_EXEC_AND_IMPORT_STAR,
+ PyString_AS_STRING(ste->ste_name),
+ ILLEGAL_CONTAINS);
}
} else {
if (ste->ste_optimized == OPT_IMPORT_STAR)
- sprintf(buf, ILLEGAL_IMPORT_STAR,
- PyString_AS_STRING(ste->ste_name),
- ILLEGAL_IS);
+ PyOS_snprintf(buf, sizeof(buf),
+ ILLEGAL_IMPORT_STAR,
+ PyString_AS_STRING(ste->ste_name),
+ ILLEGAL_IS);
else if (ste->ste_optimized == (OPT_BARE_EXEC | OPT_EXEC))
- sprintf(buf, ILLEGAL_BARE_EXEC,
- PyString_AS_STRING(ste->ste_name),
- ILLEGAL_IS);
+ PyOS_snprintf(buf, sizeof(buf),
+ ILLEGAL_BARE_EXEC,
+ PyString_AS_STRING(ste->ste_name),
+ ILLEGAL_IS);
else {
- sprintf(buf, ILLEGAL_EXEC_AND_IMPORT_STAR,
- PyString_AS_STRING(ste->ste_name),
- ILLEGAL_IS);
+ PyOS_snprintf(buf, sizeof(buf),
+ ILLEGAL_EXEC_AND_IMPORT_STAR,
+ PyString_AS_STRING(ste->ste_name),
+ ILLEGAL_IS);
}
}
@@ -5231,8 +5239,8 @@ symtable_params(struct symtable *st, node *n)
if (TYPE(CHILD(c, 0)) == NAME)
symtable_add_def(st, STR(CHILD(c, 0)), DEF_PARAM);
else {
- char nbuf[10];
- sprintf(nbuf, ".%d", i);
+ char nbuf[30];
+ PyOS_snprintf(nbuf, sizeof(nbuf), ".%d", i);
symtable_add_def(st, nbuf, DEF_PARAM);
complex = i;
}
@@ -5318,10 +5326,12 @@ symtable_global(struct symtable *st, node *n)
}
else {
if (flags & DEF_LOCAL)
- sprintf(buf, GLOBAL_AFTER_ASSIGN,
- name);
+ PyOS_snprintf(buf, sizeof(buf),
+ GLOBAL_AFTER_ASSIGN,
+ name);
else
- sprintf(buf, GLOBAL_AFTER_USE, name);
+ PyOS_snprintf(buf, sizeof(buf),
+ GLOBAL_AFTER_USE, name);
symtable_warn(st, buf);
}
}
@@ -5332,9 +5342,9 @@ symtable_global(struct symtable *st, node *n)
static void
symtable_list_comprehension(struct symtable *st, node *n)
{
- char tmpname[12];
+ char tmpname[30];
- sprintf(tmpname, "_[%d]", st->st_tmpname);
+ PyOS_snprintf(tmpname, sizeof(tmpname), "_[%d]", st->st_tmpname);
symtable_add_def(st, tmpname, DEF_LOCAL);
symtable_assign(st, CHILD(n, 1), 0);
symtable_node(st, CHILD(n, 3));
eʛ{kUGzI hCІ?4}G!jHő2@wno`Egh+յfaz3w߱MӋi&_[iD;@87QX9Ϥ#$쇑9hr!-RE CpEkT.6U֟8QŲ8ڂ>qe/S,׽{Fc e8ݙL*"P!ak Ƨm-HZsj Io 8fsq ľ/8Hd`>Fb-U)59)hfhj55ԝ| &`(M޽ 68$X*Hԉŝ[tK`#'Z&okm3Mި{⠑k|dD6/}pul7$E ޏ#Hp31nCژ 8wS!wzZ[gRd>3> iNn,u\,}l,;)o-ogVߑm<δ)Y͚Ӯ{Ѿ6ы=mnWR3ye\wkOު:_lZr&Ċ(fߛbǒk,wkFd]qCŏ8c۸ҹΩZ-{"E|ʢȿaˁnviJ8/\;$|I;tB$9x׫>$$Ȕiݚl1OpM؄ 8_HHS0plU1a+# xz~~O۲ )FуCm QpB -q.5S; Djؖ@o^ߠ~Kñ Wה,;8nPl5./!CTZ _&8 7IvawvF 5I6jpZki` ˬ!!Ǡ:u w1ދЪ->Ȳ#=]=*$yTkLZ.A$<}@\N)[%edF adXalqf!+0 cn,z^@` xMοU3vW"aCچ=o]#AF-o(}Ւ0nm -D66;GD72`:hxog54?j#mn{kΐ$pZxJrT,WlᾸvuT,! @Կ`!/Q}~=?͙ L Fqe9>oHgmM#U*\$2 xl4 m6+-Q|_ȱiƙ˖YVxhwKkhff/K2|B5GaSOóH%ScuƒWQ36L1bZX+CNcfnYVݠޡ_"n3 >A~l$$tDz.FxBgQq:zy%QvcB]VKM`f6釳^og{9*K*HpB8 m ?_ϣWquGk0o5DƤ3EIM^h)\6mٮ?.eIh  $C.ׯpC† 20WĸVo H\I cc镒{;G mf j>7`+AQ0|nr]UQ+nwD`혏Kiu 6wb_7{1D7:vI fg^zḤu\.!"Yf#{XaF!tW_ i3g :M?GØPf`#{]MtgawgV4F-{9I |!DCqg޼w~8j#VUUT`S{͏}[ B=ey:|2l?i¢)tfȪsg1@C"ܐ3Ĵ&`0uR2P՛4D/c# $Vw4"b"Q ,2+>;x'[uEo#N̅G-s&Ooow*T(41:[_U^lr8 |*a΂nMj%i@z8義5]%#v*k dXbTm$9Ty&x7~YAR+$$zfP쨈tD~~0za5߭DH ߺĈfL"*bIPg& {l$}|>=ShV wP)Gf2-kO^SfpLr$Ŕ y0CFdžUꧢeFڧ~ZL XAz9Y]9p} s9l[mMe7j`Iytj `E Zc <&IÖJTN{~YG9&C@-8a.IT2f-Hu9E5I2AI[BN?C =p@Ro):Hʖ?Ջ;Bޭ6|EAIl{uR>멂1U qJO HY2*iaM;G$-p+OpXWʥG! nvɆqL(Xk_1LĂh_4{}ȭpݶKo- $b-ͅxzץ%|K͋ xx@[ZXm&@jn_FUYG&"5BK ~.#綣P ݅Q;ElB2brV) ۞;܎#H~|} 7UVE{gf|~ZI$" /ї6qЇ+3b&9޶#_eL뵝Ho0Z:L@?o6-`xϮIa)`)T:fR@h8}^~[ċ?V- 3˞t&LIMػh!`=`O rIt ϕ[z!L<|/޾h?u#4}'a+1!⭿QlSWL=kP\ : 7† `,6̊lF29vq:^k J @zR| E E)3S= V??mS$;c^U@2d,Q ]Ηٱ]S閽k,bŁX~Z-91Pd(QipG8k6KKI6WKc@H&QqQe\()y,HZ {=c\?36}'7oaw2ҝaG0CH"jk:VF5$(0bRV ϋ~?;=Ͼڝ;@iSx"5%OT*lD?>>ղ1j&TF>'5FŔ `YpX ",Hw:"41SrX~&?o]qDp.&C9^6ڟ{׆9ikY1O.~Kez0qaT83 hd1гv8HHICQ~3c1s_9{߇ ob8ՓǠ렾uo52qM -@pK[m= W6zx:׷oS;;Id RD%$I HA eBYgowr3fC滅mBe12n\r'!#;2pFbˢ_FHXA[1UY'!1WsthyB gtР?c&rDCÄ/N+Z~Sh{G$*DO\_:#T1߶u3kfA7U!n{ӮZ1t:_ ߞx{dBIЏӑU&f z\f3h:8~ʀlY5ejQ~.N E9E+ &?@.:Cl;/Dm`kaJQ?G1o{jX3Cx.:;{X@ת VPX"B!TXY mC sW.:܈j3 B 0)TFɆZXdBfPlp$) ͪ 3@ q÷`rT5U'\5ČdžÏaAVz]qBĢ[Pren K]񂻞 VE85Fkʳ"f,s/ _0he& ''w0E}zgoVR̟MFq:xA@A<5UǑ!e1,~:q&׶D ZDևshnM+w䝅_9ewFFl"sl1^ަU--ǂ@U 6[ v`&Ϙqv\quDq 3uleJmFbHzُS1zUo+~z6ս+ D\:P:_3gz!^ mlن$h9<3Ra2!#2]fu<40$CswD^;ČO[o3%@Vq5N8p2۹~پ-7ԭ0sЭLq͢I*8 t 4DvM]=nwmJV{\gϳjڢpUVVwM^CXN ClI0Fo]pƝCEyi~;|# 34) 5Ƚ\L}90VײaG\- W p i7YU._kՃ 'Hu6nW<(H"0ŷ{<]!66*j⹸g|` !f 2:f-d cV0K8f~Mz "#9M9߽03C''!DLmVǁ-ýGc NI*UFy[f̂஦f]\urfq١0+DQ9\eἲqj3R0 mZvutpE~ºNB S+23q' 3/3DLP@A-.`Ek.sv^$r$!"su \3moxQ?W",x¼mب@9[,[sŭҿ-bN€"-mYJ"reGgC9޹ο%~EX"dKOD"}f 6ϛ{bu-F \r+JX$4֚f Zǒef/ z(-~c䱮EҚPs_N}+ Mt~w-k~F+nwb&4eE[W_;{@8S!B5̉\`nIZ!K0ԄJ'xs^&p !*(٘p)0 =_xX.\@ r(ͭ,O"}`=:8!=$)O\%%4DHP0Ȇ2 >f#!T1I3 Ȏqze曐oB81)Va3"C/-1~ BJW_psO~l;}|ёs[+器C}>W=|.?0Ƿ 5!8F ,>oZ~<-PU:F{id9\ cr6đ!lN1٬LXF ,Kfobo`Hrf Li#ړUQ^? eBٿV"? )`I!H @ @Ȳ15i֤m.ƺK@|^yOd6T"vHT='VZ4ѫ܃*X!FXӽ5I/R7yNf1a )X}QlbAQB 0D̓ ]Z`P`(/?aLJo!r">j|@[EI[0}W.046B-j1NJMsAp(2QC9gQpߐߤ#? T;~/PkʆM^YEEC|LNSFc@KAd(,D'3 qxh]:)k9Oo& u*Y$ h7`/0Ԁ8ቑHDR @ ;8&zM +B)L1^JM[B^="9̔(OpJQ2onaXK0LCVUj e0d0d0!\ C  0%gp IZL(yfA&k, ʨzcsPW&T4.5!#洼?{?5߉t:aC42$:%0b(ִ̬3"V%Xj+VFcTkpc0FFjIC>Z;ۂx>(bH 󽙭-M264Q6$: f~ϯ۝Sв6kWwIW#qp_dttBI?T/S>1[9}/!0H$Dp10B(FIp{L I9}Vx @n!S퐀bѦ&"p`CqW= j9rm8$&vI$Wb8D/&9(qM`Q"yv Ei8FUcB%cXA c/[(8}+ $I ?RjH@_1.ذcsǘrqTQ510^D>&(1SJkNg2$b篂|:_]QU%|9'YS M9M0}4kI7%4 ˴|ḃ<`>1b?GCj`tZE>AXT0/RGz<]DI9#HNko^la'D  G]V_1{h^^eHy"e{YHeHq"TR&]o./w&VgA\=i6q^Rw*o iD)vC&%9NRDIg"f恊N~TEv|= > ߫&Y< qDH$Mnބ ص$X~~7~fXEEhBaxf'xX8 'ddY, UA؇!u,*pfk5x!9hĤ/NK0sVffa~ ]E7EjtP C&DL%(!5V&`  OK#mym)'b'9=؋pM/19\W<|euAjrcLBAwR;CuN{ vap͚F$(%նEB(;gpV/xZ75Jd70frQө*Au|a>^M aĂFs7SdpGZJרtuACRD˕I[{K d7@j cH=O>Hz }GZgE"QzX..zt)ic]*E~JtS$SM}E7\)MB0`-rxwL[*$#b7=<9;xUUEZ3*ߎŇc‹O<ɽ!wӀS0K+͉S P 蘆ׂ0lC΋Ԟf΀Q悰pc8Gkm9rtSV1 PZVȸŴlH22 18#'v1psdTїٕ ןoK6ofz^CH6"6{vf$- $"i 8aS+3&Y3QT'[]!I0VRyZBfA@C"5օ݆r˻TeUTM:1 i'7(`[`ƚD[(Rv jV=j5ucPe >ԙ(/2*s5AA*E 6z~AtA} ﷳ+4Ҁq#07jOS0`fH)`f涬 ,LI +԰ũ `E6Fp'+1[d,$ juM%h707" m\'L1UUUFqXrrPA#eu4RVt10oGbSgӱUUUZq1T:\NBƻ0"uS@koB;uo{Psڈc/saKGLtL&)m1ū 1rmOiNJYP3&]x lmߤڒTroQ6M\UFόqwqn % mHxJ@t7jcuJ (-k@N* ;+F[P!6ߚj(7^ռfpfr.kFM@vE;ip*v'|WP2[##n'4xsJTS1Jy/p:~aaMUǩ0L1xEe4dL^4HDjڀsCT y{(b|'>oO=_CE NBGuC] ,NIni0釮f`Ha*?ti:Roi** * @N?Ц ׏V>0ʰ׬CNSz024 }O=L dK\`@g7r&'f^U覄P5MgT7W`&z HqR%ıt*VffffiZmTei2W Wr3?"y!+PXbz/S}_o39pבGHċ0$3SkG`&C\AKuCl4 k8j n[UH #ЕW'EMRQ9{y;bRLT?GĔdYS"qť 9_doֻdcDm zlbF_F!4UV L(9|)}kZ}?ޏ H@ J++*T)+# 0iC8@HÃkğ??ayH{3UaUQJGۿ>N*y 9{@B!̕;8_mO_qEt"!oxn5L"ۦ?tfM5;y< fB_0 00 ̐S.>}OA"@^C?Jt%,-AӃ{޿?@b>͏}N@nZ m,";XAMGn?$w82XB+hQӥKl'cBXЎ~= Íu2P(W ¨1h(H rȥGpx ʟvfLN W!S}1{4IHcfEH&(H\&@Vi(b;S)*H5@ϛ_q)@ѭ$p$eOfl V3Gg^'aw4LDc=F:"=重3Bw|tg\|(p5H4poSjDIJmL̑ئl4C E,JSD!Ep&oajN!!$Ѧ$O@<'IhPNP.Uk"!RRP2UCTCR4AD0 0 %UTJULK0, $RALԒס~^r>`/|޵TA!" $؃L*p]KdzԈ]Cbz@^͆9 * BMneMj,Pyw\%bv`ZsAkR`u{>^S!H%./ÛߋH"+ťK\R82L aՀ# K)E@%)^S$G3p~8SJD <X 0 3DiپP*ֈL*d9֫ bD"0 q$P//~̻wQoľh=`B5(w'GsQ+^, /x=%&"*CrLČ0=xc'eM`?DFEs)@*e eU! o\t>T9ya>\O~&}YmԍZcq- JLmb؈f%v$\Dϯ-ԁeU3m\qlu3kf5mtiqO}?jBLh>NS8"`rPMaC<@  ^#rF s&e cM0Q"2/=Y,|.K9vA@9a_0Xp1"%ɲ 4apRd4;[LqrB8J^y}ûڴ7(}p, w绾ŤA$ЦBRI'ks~%J6&~o=DF?Z3!G$ENFHOa= 3&]y 8a T>D{B!r qSd |E"nzfX g 5HאL"?G1Y2L pdŌ- Wid 5{@N8di C[bpU̇UNAE>2A(0/} ҧ&FQ7hXtaN1yelMyMcRYԱ2H|@ ?.OF1Qn=| h|(+~J$`2BGDŽ3-ށW#[j{^zc9{kfi?m?Y3搹_wi9cASꨑ4(-("pH%"@(*" i 0`vvuTHe) TST;/NHgXh>]`͚ ^&4Š% 05j.W:P1dr }!&SGv> r60?^#iYZug#'C AA @=4?g1rǠuˡp7!E! qTR)lV1 vحQ vc9 kVc )TCzUP?{aiw DHW5QCX>y `>Hjd" lHݲd(HFfQ4AM-%!IAOMf /2~~b Hs d4亁rՂمco}ep#b_Šr k;0 *T%E#L#D=3nZDZ{03´Uٯb =bofbҒ39EaR!"]ƇCEU4UQUT@h3YQ "J:XQ$/.ȸ*4XEfqHSA)Hk9<sKa L\3(Od@{ "w2R9d12 S"P&dI!zq(+|(D*-HjŁ vU!1"""m1V]'̪Rb(%Mž {iNeSk5@bo^1@kMt:NM  k =C:؊H=H>pJSDLy2E Hީ I @6qDK=J#)5poꂳb)^B i  `?}q"0 a6r/)y Ž Ї]Ȑ!#/)B v@Fb=)o3.1۝E^2u‚w 4c qЈg``.QHB^\D'x*} KKPy }hN]g]q`؟p7Μ;ZVऐ zzOP]ƽU$#%?+ u&q^J ֮g4KbvCGPl݊R$I!Ȓ&z_/ 7ɼNrݛѐa}R@֭)Va`/1?[﫳|:2MB@I2kقRc+<7lx=7 φ]#Mm4)`՟fj _蜗!źb$Xɘ~z#i֒pFtCC|p&$(֭ZԠ-U$8- _#  EhzU Yo$oM#&S&@'* j :AChm0hwS20t`ѿ.A"%uC4 Ll*jð E=x,1٩ 4@ gAv<'Lp#`Ϊ3&9͌,=ޘ:ROiv!'S:.Bu D N*Yx&Tp{ L.hڛ;r"5bc>JiSE Jhev<6}0gB/'Y.'|I\(eǎ2bȫĕǘJenj3#JFt!DϪ mB6NuDE2-c`ا A4.Lieю06 Hl"_Q~z4VGo9("UNeTG18V x"&ȱĘ2M$=(O z 'F3ض>` } U qTѰ=-)-Py44քwPHL UtC`y4'yt7hRjJ4]JQ*R3N*%P n0y& j&Xab *9?^ *AϢ!z!ղ=Abx!%`,@4PiLCkQ*~⇠/w` Q"d f/R܂ƒAh(}I0y*-#$; ٙ5 R!U [laS4iYF܁٨)'=:)h FTQ"Ua&PYMLh5@$n VJ>6'qL5k tJdTı1(H>!,BD1Ps4j;> !fҎ^E>~r _7`?uAU/d%#eR˜K3R0PưuX휺rh絨!HΏ\]%XX698OJ?n3 J 1(˻xY߸պj7Lf21nϱ وWYJC%Gt o-u]-.TF/$jVm(I Hĸ+,& j],I!&y$WbTH%e@NϏ>J.@ PڛTX4LƷ=3GCekvk䍫vN;6^v_ !ːb8i 'Nv5ŸW +E9=qf=9MS.z hH=ЇAOZwU^ʪ*=ݷj] 4vØ5pDh#J 5;-7TY Cy:H:Z@IVtbŚl*{)l6j=#Mƚ=*IEPSKAJdYM.2 ,@C9a':;xSa$aSn* ɟ cľ\ jDM FE bȤ`ȅ4/iCQ4P/^,#}(48掑bFAGQvmVߖ9Cꠁ巫vY/rbuS|'yGO@9goұ2a)6A+dgb&H9@Bhju&VX( 8R&<)bt`{ʄ"'"(/L ;v(lJQE?*0GF&|9o̰uO1 " "^Fh޶4 dJ[dbbX5j3X`e$c&foJD, 0;,whh"11L)Ԏ;?dJh!q h J˗,12]k $q<v}H(HTCM6&@ze1u hDg/;"RҨɖ<CaCFwB䬞0'ZʼnJ LA 5Md)  i6IE"ҋ"QVbm9][NsjN;F \Ƚr &q(@8G^Ñ#I)%};/.7 EB)t37ѫ+i48L&6bdލ,2$0Vpan(n GM@$2@pnu볳$DG=I4lOϫ@׳Y:*m0fH`wg6M$fn㰢\A &F6/]ZOK#, K ăOZDqg࠴_ u;*@Fmfpts&Ely|s)r1<'_^ة" q{+j ;LTR6H@CM07N]4q3E "&SB1L=AԎtò#U.8=>%Ao!,Q1Ba/v:?1 ( Qڱ`#PD .on Brn({$ZعUH<(:Q*zӂp#0 i߲c:b{0ڠ |NA!EP$\|ԀD % HbCBa/؟_n1n;+Hӯ( *?=Lj=3܆zA/VH?SHOʪ>Z8 ہ/ @#L(`BA;c`0^-U7.QЍ PxHo_OK0~TQFYQGއ ՘QJTsY9'Q b ǔQćL`C6Z6k9E?zDG .Ms~E`O)nc0DqI2}{e_:%۱4$4'\|V!9i! јWN'"8F'>P:0 IǁhAk" E~i" 0Ma&mefd"LTeHEsp]q:FHc8 K-!l4.DvXTan"C\XFHoup]N8NNn=_1xL@Q(ac|c)X?03ĔR 0  !Ҭa43禕AC߲}_@x2Di\ l^yU*H%e?Q~~,+dh"8,fSLsDM0HDM0HӂP`CQpF!;qm 5iֵ~zӦcc :Ht;217?G`k9>Ȣh5ᬪwU/95^u_wTK%E!;z%oAƌH<#1 B1G^\z{kÑÞ#BvrPX6a,NфV% d zec@G(J[]15 0&1n-ySGYm_zOsִ֦͚kZk+Ey^|oiM_+6kZk+fִkZk+YkM26V0vxC-+;ϗJ{l>+u! $I$OjEɻi~'ɇA"=333fg$͠Iq ׍(x!@̄hC> h4^$#8Sr$6i7VxآmT͈G= >OgwLq:Mu@I$e"HCEA5kWMoԒI$n)"QSf}~~:iRR=xY~y(><%>6 gL&nOwrZ֛YZkZmeoXkuqk Gcf[6Vժ"!]\{c׺kߎuk~7Cz` md o+fɞz paosc;|dBN9u3w鶺/8Wߓ!<$rNyjʇ8C.mCayXy5򗭒u-غF@1vz$gmM.,mZP8"66mlي{`J3GbeHFajN*fVB8N>'6s/6}rz9'H۸=}}QҷutE+CCvy׸Zld#2n-sQn`-ksaé.ޣ 8=O$LEI )0@0\E{D /cv)M$3N`Tp݄ ;7-yלs%^b\$t0BTZ_@,gHwՇ:F0*Â'Xogn_ڟy1O/PNs_~w8}:|4ffQDyC7A5PnP~5ZP= yS4Hx_W?NeUU"N+k-L%}Qb?~kMk\4q8m?Tɕ7|/X鶀E+#DQ)[ {9t** +"'9vqd cmtsqrF$i>M"u.Z ngs=ysx`Bx,>Pޢ!)ڤiGq  1Vsv5N;Ci BW~wvi+0+ ƈX7bc X MBݶfG>~] 򋸉dm½8vjpu5"㾕x Tn3Z|b ФHD8C;W<N78WRyȝ?uEm&4:UUp)0̓tn޺@|tN2*">I0(MɄ'~r19KNS';B gmwDUTUb ְCD%A(D1BCf)@* M -*ch6\sJO{_>?4aC-6 5a $Lذ|*Ǖa"ͶE|} C1XPĴ,8 Sjk:sB1ӯj$CJ\ aHJ+CFh0eiKZUU'W.(`)Z0;*BuvD0h e+v hg5QD G,`EyjY’bX{[u5 fe$BP jbȦH5- 8BMHtĻg] [GX*Dn [ZlnWT9nhD3,̙-R4R4ДTF6 0LPR4N)LQE5@S--1 C2@%%}c J*" ^Ѥ"XjXb! \?F.]!⨬`Vj$B0$`Ÿ@pc-۶? o/)}B.9! _:ް୨=rfTAgϼ 8ycO;-浾0MTQ_.6l2ْbPL+LMPf '2,ɋ#"oߊhZ߆#~0c#)DHmZhZ*T_e4Q30P%H 0dm(X!|%>Q Ŕa?w9TSLoaqub&a L|GKfCZJkD`LfLS^$ek4Р0:.:$N`Qמvb>*{=lPWtTd#N0V 16ވG1D%i*⯊y$o5=d6@= 1 LՄHב &R=C~MX8 EUK TB $IAHPAD) P-A$RJ@ C@  #B P0!4Qzuu@{y:MKI7VǶoF j$زjF67# L5blٛl],֙pȦՄ#b8 `ẵnORd5LwEl:IZDcwb e nI&itBuO~]ӺGHP{ sݍbPayږ8it> CxOPHJ?c?C9@DM A b{qLZL5BʅǑ::c)pMDh@Zĉ+[`&А ]uߦ(VjwID5ULaֳ4SSQTQR0 j`aSE bd ɀ8tb ΤՒ& NȦ@D`lEU͸zy(vEDH-MD |3% E@CH+.Gy} H A~y[g׵R ڤPQ~$4!$/sͱw)c =QC%I_9GўD pMiJHoz?+}$1)Tp| Fag@fQ{=<>Jn[Zh\F5L鏄v jBy01j!:K\$my#SB0~ď\Β1W`ӷUz.ɐ~|^\[}b95Ahj86mm͚BH&9 ËmRC+O2fm,v&dk؃[*kO$IK*X5g/0SL2/2/D$LhQ9ow|Z`ѯ}{?w3@El#3އU!N6{||_d @@w*|s %@ ku}[l0 l,5t uHh1C!ӏL]Oo?o16Ӏ8!B%#Aԇu> RxC;,M{8}74V&<ȟy-8/-߻E>Gxp=>")霒 R$i'AVg_gQqR5S˚xa˼ gUÚhK^i4$e>'Ѱ׮rr)=>&y@V\&I%u&@p"15o;O;`M|d|X)O CO&W?3ۛ 8}^f:= MQ^7<KI?F8d"e#_\1kJS~rfZ:Jeca=cC'#ׯuԘ^LO;:S]#BVf{ɣaSXl\@X(+4iHI9h-_;0t\Kce!*BCpM(t6޺mzGnژţem1Ѭ!Lhler ?NKh0j?"qdԧZCxi߾<6n.:$L|~V\PHUc-$c]j\fjd%$I!#DjʒP Vv)'C5<)08߉$ּʉ뵭fcF|'7?=ߵݳFIA^տAD=02:ѝĭB[ϧ ȓpzCPLTPRPROvi;D+Q>NwN&HJ^?Fq= :{a Nսh9VReD r5^Dol$\/EA*qqaD}UEy1)EstxA#EOtE=kTWZ  r;X buGX1 ((̘TdaL b DQLZUw{P?di1{"$/X,l&{cI"a G;b errOͱj"($}׽rShtd6VpHIDA6*ƿ?Q=jY uu`g7H@91PKVܩ,Rc !L 0`(զm`P1QTi YPl7`[s 6֍BGZ#pn(;FM2#8蘻P܁+75[1͎E Z);KÜ MG]řpM48D9c6a@ل K a"-MV22JH"iiV&5$Rdp֎M!볒j#ӷJAY39i 20l tKLčCHTe̵(( *iŦټf4΢-_aϋ@A9\B4G@|Jq~8WB3@* p1vUBqrE؁:ՇHG`QT~+\BAJ{0%b=|CA@^}J5+iVFd 7o&^ 8qZK`XC CAշ 5Ⱥ 8CO\iS6r*4iaiJD!؈H_, أ_MYN3a)3'2ޒm=6"|В@ DSzozI>=rbzq:VW˗ FT:o_(@i@n 6)-i~%Ulz`QH2!qhiDyWEpK'iN,Nz4㙁~{1r(NfkJ.T]ݲQl=>N`l7B1 bp`zep04}=GD~F xM@%I=Ph#ThڃYѻ[rޢv2p7 4.} &G XsE˳BoƍꋶZ$W/49U$:ő( bЉD1>Vy@$82ͱFVۚAD9G!t[ :oe4Vn ND N.j@$>P) V #a*, A}yhLֱyam @sDG\g SQx^Ukm$yC9ㄯ.A|Ḱԏ;7Ngx]9+"sXu lXrf!TtCեq83bL@P,TvH/zahpqgzc,4Ɗy:I HD!dVbydiu'N7q@8XS,vfC$7ְ7 _8KekQ)yB&-Uk0Qvm=$܆BBAمP\C 36+CwܷbmmF:Yr@4,LE#;*# CXA -1q0% +Pn[7O'b템 Ĝ `!eS3c9"ͱd$"* M]ٽY9q̴ fXƐyH,mQ[[ BIv[@ !b Jˮ ;`aD灪ͅCek*w]x Ms`YQ.DKaDdl*83mvŠ)# a>.*S`>'UF%(,#g| l(O[ 0"D$,Y c=&S8yH| 謧@fX&e"C俍=^4A^K axD_C)p0b/ nqۨ|g/<}?s_hu፰-=Y@c ZokߑVx^]/Ze} {]#mǦpS$-@UI]?l޸%j qH!A=О/gXR^`0>tşJr/~YH7x߯UQ!*Yf(M+UZ"4`SXl+ goϰt2"oȅ(OY7?);ҋ,Bjny>;}j yXMfhSFYn`M %zslA:m s8Pu 㻛lpKW$:1hdzTPi#F0iB55XKEPLQQ c @#J@ N։y^4:r?G7wq$ePT-'>p4<}biLs6n!jvnME{Z# )3ݶ m&wlN*lX2\M퐞&1*L+d3eg5jW墀դ _՚yqFfNHPwBD Db[k*-h_03qp4%$ z5 -d Ձ)X[C4kI$\o6ì:G<1w@А,J5g"S fMx5Z Eȴ+| !~a : vlʸBB@+,-Ȑ+tM$E v+ebD 8(eֵ -j.su΅8 #a6prA1_Gg^&_ V!lj֜)eIÂB(#n #|V $D9}TO'q=pi(]s@-"7e͐(:#3 +)M蹒'z,c"5Ù:ym) CmY!@˧Mwsv>{57ç<> [qa;zsHGP[;L w !Ib'<)$}A؞8=H.1(&1"(&ϏIІ&KJ `1*DQ}MXQZ :ZM6 Y 1DKN8M >K~d`BP(Hcy]إ˭9Ñ(6UFmU$Cd5h+Irp4HU#`&/@F!z[I`v2XoǃV+gRȣ+F-(K06S¾,%z)I>뤉LD`uai3:BKs bkA={}{dCߜRIUz@RЯßtVi')z>z#-Ӟ0D(T!7@Q1(`|Q]nvj`h66 1H!&aH{`r % t\qBQ0>Veި K! OJolF}?g#>P;P$vmĬ=$5׌{J>4}O9b繀wÉ٨urr3B2 I y!Np/(`l`ps<| q1@':oz{׫"2zN[Qz=T+-)(r E~?h^WH0WQ4þMegJxmOQQFC?ϗ9NWόx~UЮqHbay =(&C=B4y@T iHϼ5"<(=$<#rEaF/'~l(9A{ B .A]X3-UrW9| E >:gy7;6|FFH[Wo? d!!*^FJ(mZb6?{sig( @*uoܤgU@`!0` @[Y]c=kKF |xF" 1IPPDq9 hl#bK2XDE%DE'V\X*JYg0,h}E> 3Bvqv= 5M@\pGddLb~/i%T~i!`<=tBO*(* "jL% !b"j(fZDb)2U2h%2iHR$*JH( ( @((2 O60D3r\Pl=T!hI$#|pQ 鹦4a{ӇM06dTٛ4 h:y@#cc|~69؝3A04T4BAHCLQ4y}tj6{嫿5;,BBbcm?gf9 sNК03+\%.)NZ3 1\~d F-$]qn)4OSwk=@!RA⑊|]u UZjAx 6z٘i*A+Jbʊ#D)LYbzk,pb=͕󆠴SlCX`0K}mǂ*ӎk4PCɉ#aY`\V~RtYX ~KNn~_R8y`^ҴzYt8G& f%$(@jg+cȈD8Dơib,ǔ!5DcTLbd QijI¹o䤲KݏEiףwW5@: T$DYTNרxs"x9k#rxlJop^L4NxNÚǟNfaB&`d< FH9R@HddJق$ᘘzʠ >Hߟx`MӴ,Ɛ0, c=Ʈ;<$>|\Ąu% ބ{f;I +DF+#>s4Li0#J0 B(l5S{K23;= ԽNòGlϝ$Ⱦ':sV,T@~  oS1,$PxpOzNvSd 31$ Ә16@U>)AD ں>/.JyvS/͢HF5AIݖϖq pOa:b`2xҏN(YыfNn7Z3ř6r6A!+ g`$=-Ȁ*9dayvŭf$J s}@0؊md.ACΡ1EBLZTC^`X+`(Q4X:WE PaoѨf# Ku117ڃUx)އ#8/Ahm:cH6>c RyD}5s>U !%1j % &%J*(Ybd))0B&b('2H`i)")aJ!J=!}~}Xv#cPxOD9H8U(A[ʎ~ |43*P{api&**)%! `e#ƘCP?b\IdD-PwRpbU0Q6oy!m0I ɬ=p!%"%& _KHh!ָCcFTJ~{^.Ds 퐬"照 s3o1אW>V4؆`vxBdEK2SC&!.wyAޟR3pDg&ߟ"XGD8洛JKDoNCH2 wqs$3 Df1(ϷI/yzHP_,H& uq>/ bvM͠f`rl8򚄄j1ff4VOD5ݦ]Rbcn8ZecnĂ2hD_iq -Qg'v؃︫U 'ʫГ%D@  M (DsɼBw`TC*QDvGǓ"|*XY?|ެH`ɘLN!zH%dU0S Ѷyω}N4俱uA'Ko % Q( D%IgaX8jK)koR!R$ɪ2PJîhj(4Gal dq;7h QN-!("[EGLȬDg;I8TQ%f#| +a.6d)'=o8VZ2kjTft7c`t`勇ܹA%B}8濨C~w<;+~{|!؞srdjfu6buP.<05kMrسvc9)ZB2hV_RG#Bp+5dSXQAѭ@OeDz(#3* fs,i&@ڑ1yT5R,޳Ld䚜bdD1_:lL&a*yקiq`26|e#l`Ʋ$%q\~x78hLDB" !Z#JPTa63T"!u~.9%0CTSD̢332 2"2,"pMM;o!:?F'.<-j sOӮ8IPIAEGjd+HOW}>d`8I Q,Ns*!*ɤdp?Tӽ{*PuCiee$ }keAt'&N<~S%NQ`[p[lQ=``C* Xoj Z#s$J$`X@D/wiMJ=RkLQ ; bT&}_<7L!F^B:ewF׫9vNCRQOZ R-Գ_TzߠVQ )}Zw{'L`@C`>5nE (( bi?ZЅ/H F=d1@#FD!D`#ݯv F:7SDVǙ/y&3rk %cmʤ)2f`+}ltb94d.F3E1 %3j2SM{?jՉsvfL1٬]'ZTf!x.T VCkiNhbSPd-*8$j;H}ͦ-LBtӯsNjpW(La1ׂoRAD<_9 UQbr:M=F\ú|)X FE?N/Ic c==eCVB]wi9*2OI4N 0fC 2N ̻ }(Xt!'R #R5 Zs??u‹UTDMeNKMeb3UV2cc'[H$6y*(O\y[2[͌gtZSE?b4M%HĉL܉2DU6N@ՀgNeBR61C 2llbZ1XK.ftž؍4(+iVd)*䘊;P`یc d)rh$knVęqг:nJq lcGʆ*p }D#Cc+*Fr Fj\&cbLl2 nt18h BSۇ+<4c\VnTdc.t╾!HfcQS$;Թ ItpIq)U竅8/Rݲ-#p P6l(`2hƢ2e_3ᬰbiw GWߎ7Z)b0.{C,%j11Fؠѹ JI(K& @` J(E16|(BF \kPTPJuԢAPA# @% )`$25RC@IG0@M9&d*h^aDfR[6%'*)#l 0+M\2N!2R 2"i beQB: C᪺ Ҟ*jDp~GF$ʪL@7o{<hKsMb 38;ܜ(V:[p^+aݍ] M=nkā(I@!Hj}C};RXc*@%XIq($@6 ꙓ,0 2F(pc^:=&A4tGPaCp|Ged6|/7^z-,qU͉ZH"8;`H{gY L>]=$lTH2+㌁eWD0)B4:u(a~ix1LL@P5kWWbR(!$(>,2yO9LWV! ybktԄo4jnx4uPHR7d(q!n .#o:'QM,OP ,x1i41F8.&3gU TTz/ sO/D*M2&WvL3RFkNd& ~ .C>pEM*rd!t8cI"𦞈ؓ۠( %6Zf plݧ.@x1 kԱx{>t8V"W]a=))gQyrHFc@_ yi=?x\x`Oa9ުF=[p^ɉO7zNܒq8I>疮ҋ.FW"B{¨DWd̘xnJR7ͽ;' Hg3=Is]>GK(X'/[b&,H5Mzwɜlo 94fѹu87g>_ϑ&u211 a k_$2N)@Ȝg|9=FxrP=߀d$ R܇R͝hh͖+Mhз 8ZOx :)^_ LܼOI_$;"|qƃR%PDi`tXgͅv?1a  #HSii}l:\t㯄>yЂc!{lu^5(Mq*: dN{ua3 pi!xY$a.j%ycO=_[;!F; 04&1V <"6ul-6OR~&g%?Y4!7{L55 JXkJ^)>dOE=;z!Y $ 4%x +Oc(1baes_/B`7"]HaL'$L)O7bbS|$`I# &UPH*ΏsG;|?c#·gqzΧd!d )* 'QKóKK[AoO&HdE(I vEHUYĐQX#$zKHr#s$;wD Q!J4X!x;Hw2lA*=ٳ!DAz@y11pE2Dn1:fXak1w\{` tV%B,_O`W4tO>`>|uZ"  I(X'sJpTy;E@APXLT_zCϳg!_#&|>r 냞QCGG3CRm6lBMc$bFzB(MK~KJs[پjD%]_UxXmmwM!͍͆Mh$Di (Z2J 5U)ώ|rX|KfIjjF'Ц %],ESKȤ!$t$4iT!9 !PkEClh/Bz `~)0.gRqtDt6 {"S20C@I)$"a"GgS37 +C&4P,!H|m^{0TጒLtքc;֌|Eq5# hw\Mx|Aq<@Y:2.Gm\\B6xO6xӄ;m@%;(+5+BPiC6Ir7mVZcZb"KݱV vS ,W#$AGL[c)˂:[BAٓvđ1(;81Ri=3댶B:|HcXۻ `'tw}b;`$ۤLxruImxLf8s Jdy 4ZonjF[,Ii'il>Ύ,d-%s; ޤO[UMמl5.)jMog?#C),1G0z\_KrK.C$0`.܃ y_>lSAC9162Qi[܂ obcfLؓxff'0ƂpSIPJa)&قm%_R叡%[_'ehe i0gHi545bRڤW@q╽͍m }{h0 ףgIxFȡN5U$/:4' !PسO (/M ~n.FG{PqLe=}X=#ftOR?07 QBK!I:ȑ$ řAu. z3$g~b Tl%u9wm7ۦ*Z)2W# , 0MIaP͛,k9nEC4H8FM&(!Ep$(2fD.;:o Őr@j%lywjA5 tK[%>KLQcb>==ODV̇V%>:-(FA@D-TaAHPT! D`G:xa @>Ʒ^[׻U5tH$ @Dž_=_){P?91[&v;Gaa C)")􆬥+PE-/~𦩩79.J`;g=]#>]CdI5$*TC'ﵢ:C&@.AMQ7ov$! qB6˴ 5I3LlE4a1 ̑mtzq3KPї5&iʊbNɄqyi[DVL%SSԻLż@K+\ՉM^ %G-t0*i7'w=}*ת8ejs/;&7eWWP;yI"(#JypkRf(a^BA'jo P)@30-)+* oD@<)?XH~BP 2 ``l=#xګ?6 `ꀮaJ O7==|wQhY %ũIUhfj%4CUHͪOE0۾#;w#Axm[Psc DM$q5yjlF7) t66f1jlA8Ë gBm +gYl $ 5G poxΈ889 hB.`IpؗWpא ~&1,T;9 3}7cM7>YY0h ՟"$*%=ű(4sQӳB@(Q *fCC:KQIX 3pZCU4S6Kr˪ =ĝdE2e" ) [ib1ZZW @JB'jڛY٩H ް=Ա2ܔ-zx[A HjkI E‡&s{s]j8A-"u=s.İ2$7!R3XZ@LVZz5&6\-Ns4"&DrD(AAl1s9NS.}GU}wMҺj<}jcqdvuv.Ző.Okk:Rp5l\P C ]HMq(z- &KLZأk狊峀ͻWee-wabInzd0qIόh,Yp8$ti4e(b|7G7{ *r`Xhlie54 n\ A Q TNj-˸:a @ ,^-4Ԥ0!=m"qvl֏ Jчb~IaFfb5N)Jt'ݡ/UCu*Q G'@t6K"rhr&Փ83dc 4h(*TԾHw,5* ? ȦɆ--@hkLYMlr@"֙ ĒƙKaid3Ļ P]\ esa)9\ltƇcicA-]hlNydC^a&c!P Y{N߷z:9 vg߅*8U&žߪ0Z2 aW,ȁtjFh*'.bsB=|Zjd)Z>귯&I"x@ wYEI.)p~&} Y;nq "4Z"c4s[tFrp#t-hdv( )z8j֙`]nwl-o `MU2xְ#n 'Q[C֊Jj38j FTjUa+f#e#aEjjB:RL9 9Dq&2n \U[3Qؑ #|Mk]ɼh A$%BdunP#jS`ᡂ2C@wQ)J  MH1("J!Hk/M75CAxSH#ڝC8G 4KGc0lx&$AI?W|{7@N^i}$C^ kaEIL <Bă1s)?;:ٝ)J2ϲD8 0.U2l8l2"%G@HT{԰p^ UMڻ5j g=l )dҐpss4mY 9_ q7qC`l$ؒ b4q~ɹǤsS^wB 2mM*E (1*&8Ѭ(\F1C,jUBSp zѺ˪#\eLV&k (EF F,˂@w M:3#_#CR:T> } O1SZ2PXq"0ֱ(=&{OgQ~<~^o{H(a_? 럏ӡCxl& d?o $FFFp!oOaS|\Pz*\B+OI&DɁc2"9( Q3B aT\^/(]jյ*&#bOEy9/-Ga. ʇq 0i (LOX`FBV3k` B>O^![ZeN+`;z-*c!a -AA@=6|4ʛ6#NzX9Gie2kœ[Y]D *C+XɴIV?u[gN)T~LK|6p$'x"hd{Gx(؈T kO3O[3~_s0}XG]WB{ߛm'z3;[ÇeBBgwnEm1GdR1<]M8K7w]u?L9{ofh:|9 LwK/GC.":[­3=skXx}>G;syң~uw3mWKz9>]K| _\W܇U5u?~VoU`x:.Yx#<ߋ{*5:T*p~%nsZ[3AzۭW=6O:W]γ|Og|MNI_.qYg\bpVNdnÉKߛl~+YyxKӲE/:}ӱ 3Zrs6y|}[~ʮOF2]t<ǖ3ij^s_͍tZWlYsYa6ohGyc_c[ }ku;,~a;b5[w^poW>f/[ci|Lsؘ=޻;]PtΌ[tN7k>]WA]~t _US _f{?}?58N{Wm~Q?,h{Mr'ʋA]cAxz_wM:=f]?uZ8z?j/{s9nGuY7eoCsw= nKߑ+9hFOfyI'T<~N~8>Gm).g]{]MY}m&uc{SgWsuvsǑ!gs>Gs[°=T?`ݭSbv76G}+Azo|}zN&t;?:ӟ7ҧ'j[?3Vpr;M=AV1=WkSN#_MY?W]a,={i|1|[Z|WA{:<sFqS;;NhsN't^o#~ZLW|F+rqqwX;/C /za_R`>;_U\s&.}?C!foy>>> O6ɜ_nk.Wds+YYp~NHYAݽyu_M]0/C/wF]Wu[?8ZSw{{v«Od4|mIi<4O#y]a,4s{$eau.N3}ն'^ϟ߷yoK?ezc t9.?e}~P;V%YE_mVtߟwϿf%W_^f>M~NC:MuWq⪻wg%'n]'qA+ C?UON[uI[̌'3y{-֟=3z_I,3fazN}U`qeq| #_`}S~sLvCk]r__oi>VօYUkق׬}\m k?S궹'kzW29Y@u~l^/݈