aboutsummaryrefslogtreecommitdiffstats
path: root/src/process.c
diff options
context:
space:
mode:
authorBill Nottingham <notting@redhat.com>1999-02-03 17:06:47 +0000
committerBill Nottingham <notting@redhat.com>1999-02-03 17:06:47 +0000
commitc3695a8497dcbc4f5dc3348f9dd0f4ffb01badee (patch)
treec5e85c9a3ac67e6eeba55138eaa9742004235844 /src/process.c
parent7b45621175cebb8ad2a59901e26593811047e818 (diff)
downloadinitscripts-c3695a8497dcbc4f5dc3348f9dd0f4ffb01badee.tar
initscripts-c3695a8497dcbc4f5dc3348f9dd0f4ffb01badee.tar.gz
initscripts-c3695a8497dcbc4f5dc3348f9dd0f4ffb01badee.tar.bz2
initscripts-c3695a8497dcbc4f5dc3348f9dd0f4ffb01badee.tar.xz
initscripts-c3695a8497dcbc4f5dc3348f9dd0f4ffb01badee.zip
add initlog stuff. do "halt -p", "umount -f" in shutdown. use %defattr in
specfile... um, I think that's it.
Diffstat (limited to 'src/process.c')
-rw-r--r--src/process.c216
1 files changed, 216 insertions, 0 deletions
diff --git a/src/process.c b/src/process.c
new file mode 100644
index 00000000..48f3b314
--- /dev/null
+++ b/src/process.c
@@ -0,0 +1,216 @@
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <sys/poll.h>
+#include <sys/wait.h>
+
+#include <popt.h>
+
+#include "initlog.h"
+#include "process.h"
+
+int forkCommand(char **args, int *outfd, int *errfd, int *cmdfd, int quiet) {
+ /* Fork command 'cmd', returning pid, and optionally pointer
+ * to open file descriptor fd */
+ int fdin, fdout, fderr, fdcmd, pid;
+ int outpipe[2], errpipe[2], fdpipe[2];
+
+ if ( (pipe(outpipe)==-1) || (pipe(errpipe)==-1) || (pipe(fdpipe)==-1) ) {
+ perror("pipe");
+ return -1;
+ }
+
+ dup2(0,fdin);
+ if (outfd) {
+ fdout = outpipe[1];
+ *outfd = outpipe[0];
+ } else {
+ if (!quiet)
+ dup2(1,fdout);
+ }
+ if (errfd) {
+ fderr = errpipe[1];
+ *errfd = errpipe[0];
+ } else {
+ if (!quiet)
+ dup2(2,fderr);
+ }
+ fdcmd = fdpipe[1];
+ if (cmdfd)
+ *cmdfd = fdpipe[0];
+ if ((pid = fork())==-1) {
+ perror("fork");
+ return -1;
+ }
+ if (pid) {
+ /* parent */
+ close(fdin);
+ close(fdout);
+ close(fderr);
+ close(fdcmd);
+ return pid;
+ } else {
+ /* kid */
+ if (outfd) {
+ if ( (dup2(fdout,1)==-1) ) {
+ perror("dup2");
+ exit(-1);
+ }
+ } else if (quiet)
+ if ((dup2(open("/dev/null",O_WRONLY),1))==-1) {
+ perror("dup2");
+ exit(-1);
+ }
+
+ if (errfd) {
+ if ((dup2(fderr,2)==-1)) {
+ perror("dup2");
+ exit(-1);
+ }
+ } else if (quiet)
+ if ((dup2(open("/dev/null",O_WRONLY),2))==-1) {
+ perror("dup2");
+ exit(-1);
+ }
+
+
+ if ((dup2(fdcmd,CMD_FD)==-1)) {
+ perror("dup2");
+ exit(-1);
+ }
+ close(fdout);
+ close(fderr);
+ close(fdcmd);
+ if (outfd)
+ close(*outfd);
+ if (errfd)
+ close(*errfd);
+ if (cmdfd)
+ close(*cmdfd);
+ execvp(args[0],args);
+ perror("execvp");
+ exit(-1);
+ }
+}
+
+int monitor(char *cmdname, int pid, int numfds, int *fds, int reexec, int quiet) {
+ struct pollfd *pfds;
+ char *buf=malloc(2048*sizeof(char));
+ int outpipe[2];
+ char *tmpstr=NULL;
+ int x,y,rc=-1;
+ int done=0;
+ int output=0;
+
+ pipe(outpipe);
+
+ pfds = malloc(numfds*sizeof(struct pollfd));
+ for (x=0;x<numfds;x++) {
+ pfds[x].fd = fds[x];
+ pfds[x].events = POLLIN | POLLPRI;
+ }
+
+ while (!done) {
+ if ((x=poll(pfds,numfds,500))==-1) {
+ perror("poll");
+ return -1;
+ }
+ if (waitpid(pid,&rc,WNOHANG))
+ done=1;
+ y=0;
+ while (y<numfds) {
+ if ( x && ((pfds[y].revents & (POLLIN | POLLPRI)) )) {
+ int bytesread = 0;
+
+ do {
+ buf=calloc(2048,sizeof(char));
+ bytesread = read(pfds[y].fd,buf,2048);
+ if (bytesread==-1) {
+ perror("read");
+ return -1;
+ }
+ if (bytesread) {
+ if (!quiet && !reexec)
+ write(1,buf,bytesread);
+ if (quiet) {
+ output = 1;
+ write(outpipe[1],buf,bytesread);
+ }
+ while ((tmpstr=getLine(&buf))) {
+ if (!reexec)
+ logString(cmdname,tmpstr);
+ else {
+ char **cmdargs=NULL;
+ char **tmpargs=NULL;
+ int cmdargc,x;
+
+ poptParseArgvString(tmpstr,&cmdargc,&tmpargs);
+ cmdargs=malloc( (cmdargc++) * sizeof(char *) );
+ cmdargs[0]=strdup("initlog");
+ for (x=0;x<(cmdargc-1);x++) {
+ cmdargs[x+1]=tmpargs[x];
+ }
+ processArgs(cmdargc,cmdargs);
+ }
+ }
+ }
+
+ } while ( bytesread==2048 );
+ }
+ y++;
+ }
+ }
+ rc = rc>>8;
+
+ if (!rc)
+ return 0;
+ else {
+ /* If there was an error and we're quiet, be loud */
+ int x;
+
+ if (quiet && output) {
+ buf=calloc(2048,sizeof(char));
+ do {
+ x=read(outpipe[0],buf,2048);
+ write(1,buf,x);
+ buf=calloc(2048,sizeof(char));
+ } while (x==2048);
+ }
+ return (rc);
+ }
+}
+
+int runCommand(char *cmd, int reexec, int quiet) {
+ int fds[2];
+ int pid,x;
+ char **args, **tmpargs;
+ char *cmdname;
+
+ poptParseArgvString(cmd,&x,&tmpargs);
+ args = malloc((x+1)*sizeof(char *));
+ for ( pid = 0; pid < x ; pid++) {
+ args[pid] = strdup(tmpargs[pid]);
+ }
+ args[pid] = NULL;
+ if (strcmp(args[0],"sh") && strcmp(args[0],"/bin/sh"))
+ cmdname = basename(args[0]);
+ else
+ cmdname = basename(args[1]);
+ if ((cmdname[0] =='K' || cmdname[0] == 'S') && ( 30 <= cmdname[1] <= 39 )
+ && ( 30 <= cmdname[2] <= 39 ) )
+ cmdname+=3;
+ if (!reexec) {
+ pid=forkCommand(args,&fds[0],&fds[1],NULL,quiet);
+ x=monitor(cmdname,pid,2,fds,reexec,quiet);
+ } else {
+ setenv("IN_INITLOG","yes",1);
+ pid=forkCommand(args,NULL,NULL,&fds[0],quiet);
+ unsetenv("IN_INITLOG");
+ x=monitor(cmdname,pid,1,&fds[0],reexec,quiet);
+ }
+ return x;
+}
h&)7`-ź}D[䗠 Շ C%:H*r ""lLGLeA Sf$~LÎQ @䠸DQ$P5[8iè u^$tSE_()ǝ _ Xs ˈˤxrbhC#W ϥ) ᓍB P5@֬yUSqX[9 "n}Hyǖ}L1;١3@jD6X +9Z2j)NX @Uy g +DAFcutK?yj hֶR廣VAqdt .HBjOqBX-RU(/(Lц}Ró>~x7ӯ,n yr۾Mʱ UTcSC 6ec`YolheV2ȠȪI.hN@nHk t4` G?60F>y[ȩ\7LFt`_',CG) kZ-fĺխoom%[>{˗1n5PY~gH@p3p̉yM~_un3.k#߲4JJ Ml)-#^|EE:k}XGuQxʎ9& qy\PdҁG]`7VREs8;}'YŠ Iٟ19#$o5pP'WU<(vx94ٟ?gjNgSE $QFO:h1s ivv>խC$#<`DrEMxҙaI r  r>BD.mrVc#$`*#<^T54fAI zieltob@L 3/QYEHo>Ȝ9>MOSXŬ;7%UPr87l8]$9z01P@w_uHB*  ~,rx<ΪGS K"&!S*K#I9B9E!xuB B<8wN*r)s(/dpCޚT^ǀnZb,2- BVy(#cLk,\U{t8C`Hz(\~3Gv#(U3cBi wD7,} UMlny39`Ϧ2 [a P!i'X 2fdV M)}Nd-w쳅g@V+g8RPFD1 Ѭ\hƣKzJo@Q(xu@<=u)m#tU90]`$<UQxtg}uL;϶G&^5 Va.M 4BUaI^*a;xN a=᪍2 7z Ȁ) z{ jP3w )KaӶQYe MӅ$6XO. uwU] UT(v4/-򴡒[嶼 %`vkR}çQ& NlX1eUU Ŝ?'f=<Ӽ}vCxof 48&H~іNk-~*m|8X\\FK[@X߮D!0P3ƙ(&ViVD R&CE!2SAS@:4J:vr#"(:Bj65ELCStT*- R%(&t4c5ň)D"T 4Z1ZM !f%,8$h4Q l Y53V!&H Z(4HR`LJp JTTBI1L25LKDD2#@D!)B2K(RH2JT"R!@C$(IU3Dfgh5U: hբ`ThĬQPSTRQPěi;8(t˰(˚l+DA+Vɠ*ŚCC\@D SJDJh,d6-9cM% D4ELQD-!H;BX檡5R&&dtD Jb&h2Bb))"hi4ƵPh4b$F9B`lFC$K#diB$iC1$DRDB" 3H(@Yp"P,@.Ed$!X:F""6""2LL J@6,$ `EHdVC" 0ːdXHIdl$dp0#rB$#) (,!EL6°0  `XSP0, ""!$YEp, *ʰ+*%gk(a)jр45TMe0)1hh M 3HTEY1PT@MDH% CHMCDAT%5 $PD%MT)5m6H%#TCLLhQtQBG$Is(##B"J1($4#!"0 ĂTH-( 1MQ!( GZht:22BD}zEeOH<;. C/D(#X6R&q:3A@GVXBdRa@b4ջU"e(:OKnB(24`+.QV<6(/ \ F Hxn<,H%)7MgS(`":~O=hGߖ4IV `* 9s15.b S yΡIp Q2hS-_ / z10H('4W禔ʀP/nT&|S0w )x\GqWXŢn e<9E pۨ=KQe%Ks>7Z-2-eVΘ 6"AG + g_M 'ER z.}+!eWRA)y0E (IA ˁ%b=-b!l3DLAU k̉m$/2Xbl$ ;5̕T،Ȏ%˄"Eʕ񜔺%JFB՗~­}=双@Spr c-mTy0xa 0"H1LkhG>.wsTA5Q%c/xAoABh] 8$\2I*TpJBu)`%M: y笠wWTb օ*<OAD 8Vӏ.q(A/u-NF ,(_t bu~ pCX(`[C0YR oda"rz˦aSS>< HGtv0""S*Bre|Sh& yF׈LuơHr*;,`,w8馒NRHGUG82 8*sI+s.($z*9=QcT| d]_{O_ 29"1?zIPq"UxHN.#f .8VIIk%6}ׅr;mF?:O [x@ƥ;AꙚ"8%v*ONPڥHl%9g]`R ၐgVA1цHA ‘̑AO]yB D > iDVq#1Xm[\پ#n$_ so9LU1[ǔͧ)Zr#l΢se`f<,UqDʨ5!v{8>AIMv4%Ma/vQ-${{Q :(=єLy`B8.<$RЉãa ($P1" 6pM N`c(E@S@_6#՛Ƃ* 1ٚ^V8MQDiPLw EQtF7G%x1cEkHRѣ!#BW|H@e"q_ҏo T(* mcB$w|x w-8&c9 xE4bfk}x8p[zQfCȅJ#BpXP|ozR R;FޔNz)p1gDjAz" #QÐi?'_"}\ٳ sQ1+W0|.Wbx.h{ \ݡf֤AQ!#מ[;,Y;E1a/wrPQiٸ&BCn3t^$5ii( M/:CG*rɣ (@I (Ch֕Mf+ؙJNNX<+QNxBYRbK]UrFzqenWa8Hsͳe+F6h?XGZh8aibOgt0!Y!EwG3=CupgB6:u>Ѝ$BwwdזEo]ݒFr _-W~`0fV<*,4CaeME̠ƶ|#!k[U♗SXF2Z Jy_26cܢ`v=C2>ϣY= ]n>.MpЉG. Ćah:Fo-`X`*QFrw\ۖIvVD66a+bԱ +&U0[ o!ϙ&e҄СPݜc"vяh{ZLp-z7|zc7 mwZU # F^q6tz]㨎_0k(6ezaQ' Vwbg <)!^=eۍ+~:A4( '.y(q FCznbXʿz09^wO퐫quWOyz(^v|@;92zQmҾD,i'Hj$D)&[5n\Bh-BĂ\ USA!ͥQ ρ8A1ix]w^J` )yIؔeaDa絸' C 6dEjFk]np#ĩ而#OJ ͟Ϧ=ـ^Fy.2 34~s+D P-Dm[K*^C/u!Qϊ<ۗN?X/3JPR=eB""(2hzѽƕ[~$NiYŸ,m65x_PiLm#LMJ8(hPhآn駞ƦQ.H"5 -*J* ,˞5vqZɱɫtES; B6Ar@f e'㓈_,i=iVl{-gwA=e2G@όӵ`M#i];'-֣NB"V+,7TD@aE|veV>_cG߆5XOjzK$'9vϜ7 8~𶤺 RLGJ!P+nr*t!G`JQTrvZȌL=zM=#PlSDiTXтs!_<]"4J~q}Q oιJVcZ[ .' K-yĪP244᣸b .fN!'ȄrbI ,Hye8=%"g̃U?KzCC؟>@n!d28>  R {8͠u{^";tG\Їl]H1Ԯ!4BB0~ ؘuՙש45"O`a A&Pp$h)%",)G9arjo]GfP㇌nrXc\~UլXkBHRLH1!.ůq AVED,cx!J r<>b}ivZLޞ#GVn4+^.;{e`aF/Ŧ+H[OXnj A(ۣ]!6Jq(/Ue9~7#8bݞDkYPP\r_:rQFKXp1)`p ^bQj԰ LOЀ ԎK+ OcݶO[$"|`PdQ>x#_9 .B4%EJ)6GVTqP~yCP3+}<3òՙ_ΩjLDft0ɧ=ϻ &<o*(5x^!.OwLmV{pM=hc-ӔG΀m8˚ѱWx#tQWn!/9i}PzO[ZJ-50NLwU<+\IPiz& @^":k_Eӑ~3W*g1vڸεQ΍ JDbnn3#YY/6JNe!Q))(5i| ZNb-PJ"YWc#BV}u& LT YTKUeqDC=$" DهF SewU PPfC—HlB 0%"`&*^+o++Kz^i-"Q V䨾p|LDĦ>a>@$f g@Ai2)ٝ !x*GFܠ^Ǡ J8x&! K)QAD,=h@ 7_?[Fņ=)?Nj!^~ 7cXCEO;`S!O K_ƿ^tW]j=c-S, ?–ƠńlFΧڣ CqP~h Vg89`&yO!K~{^.S;b\"G@?Q2>5-xȹ**)* i B)!CIIHSEBP 0CDPRԉOH@@Ee\>#~>m\@yaxqFO=NJ0iq 5(\ <"r䈩/?Enzǖ|ac$7dž$m{D /wJr:j~v+хnȥf!(5* ce%@}LӾ#!<7f\(CTZv2)b*3xOT`ɸp'0,!s&K/{# 53f/#}6QϯW~4.6)DO"/ꂠ&{rx0'>G+*}\Bᄾ_濐%[~GgZpZ> ڥ?Uqqh0~>%jq9)|hZkLwcmRCsGV,9i=9G1nl.lQqǟ~ӧݺX=qyyG]eo/m';)\my슣soX( ŭfD7ߺާշF"3h!G51k8{Zo i6k:OPϨŽrG11 (9t6l=^aļB`zoC.8<= v"3 >1?N28=k7۞Y픞i wP {t 0g_\hzb(*G>(Qψd> ḌbXOѧ: ;Fjp@^AcؠV" R]}VUQBL$ݽ9Q%ƘUsy(u75vt@%a~DA>SPCVܸUYiT1&D}H_?3 u("-ՁsDeIK z٧>ps9%8}!$U*s?.|Xٷ"cw9-hg~o6؁?Nqql o۷OJ)F%z>rEH >E qnpq?AxYW]" EX8r7ʽ-ҠR7 _jA`8,bƌZw{C)ѦLJdIH>I%1C2o0(Z6 )n8ʊ**jUEUTUQUEUUUZ{^h(miEc&3ov29"Tu5rx1Px}D ZZ6Q4*@QZTz<$<Ύ "ާ-(8F"HH* TE,,Cv}ZpY ;wSKW&B) Uo&KKQ#ʱ4/B". pᡦ *̖Z켿|1_Dvៗd-vr}7R8 NfpW Cmq)b.( ؽ=;yms%^sW"JXٳd$䣅 >GܺxmlU=_ Ytm2g<Q^Y&GٹfڢQ`|CH ffT@r#Xw)=G7G7[`\V>jˏ=ۇ@M#-G=1_h9bu2Ē$]1oizz[ott{\(ɄNt4(ܴJr߿ʢ`'3]#R)גJTp}$& pLE PE=)ڳ^.ˮ *eC0 8XI"X24r:Xndk,׳DF0R_7{c+o؍-QH`#xVuh7HR E_<:w)?qԜ;r3"}%oqgZg4vOb*i9:1Dfg<}2ONL 0U:(ӕ%dIlPQE=<2pЊ~!5ئGmT^ hU9uuIě*ର4HhK c4_ (rZy. 5 &KĄ83NS3 hjwU_M> )x!% 7l$G0ܙ}=ky[ y}D BÍ<=BQy<uHM$I 2lkm4̳Rn@%BЊBA*; jVn-Hyv":>|&,HIY|NMv/ٴ$}/fj(dQ KUGk=MR#a_6-GX]AG10H̜n ݨU$"D\7_[6qƖ1&iK"iF48tAdL/:<ǀq=@D@RT" \jB`#WAdc;Ьι*Z$F6ũ}X"Y 35XWJ^cJFPm Sam8 -̌ W"#!$*P3֛=EUrͨ4)5݉G;$;)e0]실cm)h&+ s0Ǎ$d$I'ϛܞLBc}DI VTBI %)j5Ft[,( [Qxb:ԁ6!B2Ė$D6ʎehMk1sP\'kL:#68d!"N$ 3^iRa*JY=kA:I(Бb11s M|u W档47 F!q9ۚ%i74G<{2YqPD98DL 8W8OI?^O/:޴nb 3;UUSwffxtm& ”GX%HP(̊8BD^&ڎn.}~?>; 5RHY fE65dXE $4x&=>$pq6`*V0MVN{a.^p 9I05HLI; vN<`a<*f??'8rO-#:]$' ̷ ڍޣ0'E9?R7~S~Ƌ$V`(A"`)`^;!!G|ͷvFX"R"Zhu.q<4)d{hG "i1&{iu9d>%)ZTn&V2$Z9y\vIO4DO7])ovMJZpT}Jڽa$y: c?FO1Ar8P7u2vs !Te9hɨ Qvh:uaɌqdoBALptKtM=ŧv{7$j-;11>qf5#.o$cT;WL:"ȏ d8@)2*@R@))JU2UTTQ `:q#ﺩJu>rtF`2Dzp#"0ohvoޯ%sz8!ߩ@R rf7LsA ͆Y5jћ,@EẻO YލzÃ>㒭gB\wh=ʁ+Mc̱!o뀅N~ڨAnuks5 ּj*>PG򜅢Ӝ@ԗ/X@1iH"X*~Ԕ؇_*B(ZMUFDg V-{p,#Rj 6[)A-~_?:Y9{G x6Ѣ˝EE ]:y!wSΜ;1Z5KQ x D\ =֥Qb rnRXGGgRlwϲCe)@[!% lB>,6ancY⎡`(ɠ`~)ĸ+O&sF\zz*B*Dp `đcL/4RA20\Y !pB2+w~9=GS0=vxI`2($o`Kl/ODsv[L]PHy1} ~NRMGR1_ Vңh@lC$@C9D3!Ee6pj߅a j#{묐)AXhyQ5E]'!O=\&W/!8,@PW)g;lgWZ1q֦wuJZ>߶! Ҫ\2WV,IqB;!l!&͈ix<#birN>!pƋ:ߠ*z0QW Lh9]W^=ͻЪgzΖ*?h׸`1JHтCpJb$Nhw3W ْ=(ޟCwYɰ.UZ 5!l;FRC HCRrmAu#">RB]sG!;bpB|R 5`j 6hDq#" 6eEF|Lgrt=͞ŧtviV;h7dy|\A{ԮJ\ Dt )ƈ#׋ p}΅'{ρaY= "ɸ.m 4/>DH\;sy+Z C5rW1q#>sk5YȂ G!ȯ*;.cK{S5FE{{-vuK28_ 4RqLc R;U=*Y?lEtWVbQP[nOQy,X$WsҿbG4O 5JdQf-=Uz4KGba(3zhb]x"/&x1 /m%J[! - ^pO[2r^nx|`y{=QCaÈf/~Ye^i\~:oc"%;:{"or/9u,B,Qb(,B| 4I BP)D% }7ِ?0 aP!J'!ROln'x;❪Cj?  ">HB$N@}u߭?;GMY,Y]XY,Y۵ZR~'o[,mʳd: $X*es@Wt;u:7tx1i˻raGV=]]]]<_^nnZnO;Sz?SWuzhhQ <8PxlVP<;մ.<ht T Uj!t +&<+Q @5V p@5et@@(CC@@!-yLh7@ؾcn xȵ'TY-p Ox.l/&mkd5EY(zț .nIF;y.E%|[ In`na={ /!9:]@[T~E?! V~@4wQꃰVCyKLÉ{e}gֱiiCF_?H"&y*=j@@ e$g1\NuFkAw۾;S Ch r?$U^[|oӇKZxb;v~T-A Μc3_6v܄~SCH0lRAJxq8 ?0\=+Ui+bVqo+=@dO;{?WW31zG~k__Ux"sh$A@`X/ݑ9;(ᄄ) \j}l +p>芝>4 k';n)9cAx&$6O;AM5@TUA@PEDIPLC3K105AQQ2#(9/' Sx'~Bd$bl=ծɑEA,xQB[yܺw7c (P/5G? &隨"h j h &f*Hf` )JTa(RE"C8z"w:}?qD<<%|;=%h&" aZSqQ/ߐRCu‚‰GxPe.QHuB z(u cSP"N`ࡋȄ6:]SBOZ@V(TXQ7 P|ϡ{pUQ UJEQCEQM*ESmǤZ_џ3Ԥ|.ss)~UCP/UQb֘ZT (q 0X(6$  BMp<Cuyq6MHȄ=ǕY#U߷$qA!'O凑Sz< KtQV]@ D$pbj̉MGc^,\*&9 mӨ/q%M%Lh& Ov%8%  AbGڊ4;^gK;ۀ!2|bFж}{@|  ((((QEUQEQM4EDQIEQEQEQEUQEQEQEQ@#;;$+kYd&IBe&Q B fAM84fQs<I3eE 4(fDME*:s)0#\A2E2L ʉL.ULg3 $L$ 2lA&PIJ%(($2l` J9A&MA&ISAA&IeҙerL($9&M&I 2EQ~aF#`ƪ׆xwjv飮 õu>gsB|{s! U& ?&'::e.l[e*X}`: J 9^UȂӍhCCQ4 &pӈ(Ah'#ۈ0tL!Hhza6]P VR≝R xL$ 5*1p ALxLLPQ@<9^/]Tꉹ'ԣaH!ґ1EIQA0DLAA)Ò CE;r3N|_$Pҿ>M! ӕ/G__O3l͜w^)iM4v]ӧ] ά]b.*|=TC =u&^k`so$> 8H N)==uAssb1׏PGNhj~E)9]SWUD}yM68"ç'{rq~ q(s_$g_~Ӗ4٣j*Q%&پ`Ei>p.荱lEƣN mT5P[j Jb Th5[:4ior-KB[%c`4ڒä4D[t)zNK5:~k_|俯ۦIURI{5ݖY-dhe(ӛSwI'=wGlIGIi9[{rjN 8I:ݹdƹNҰQ)˂J0`fĈ6q!@j,ThmZ!ͪCcMcZC4IEP*ZJM" d&(9itX֭cc`HQA* AKH4hݘVGŵ8 9Z !S>1~4y4St@$_."nQ*LT2{NQxg( )UarLLG3w,ςo7)Y1ES3$T>/>|cЈ;]|C~ <<9e}ao~EA DEB1 : ?]V,cOd x @p> >IC?E_#Wi5fdvK+ H͝5ޛg[nm%y{wXy֜$:i9ڦӊ$8nv%Nt $uJVޗ٬CNƥ{\.YNܮS^o-.씽;wlwMݛtz{ ^`plcL 4kTEA$j(ƪjΪc-;km"֬cF ͩ$XjUm$5ANE"Nt٣5d ֳjR) a$B??ߏR D":-i&Qg 9EDsvU\o&!;k7ZdM\ 4E8~np wmn1\LǙg*Mp(+CR+YiθswmựJ (qߖLll474 (twE$M4RM9r9: Jj@hF >E.̘)h)&()hJbhFYBEBhϪ |o_>a(7sg]xNݺ35xN,;d7#2w'k[4qnLgq;ӧp^InM"*̸Mڸ̋绉I /Yoe]w(ufqv7{C4h^)Nqli:&EqtCEl:%Ql*جN1Eس،kE1F1bbA$[l'F4mQqUTYv5iT%,Z)L֒z̤\;Je: Ӟx g סc%q,9e =_ 6:QsDH(`*~x\rP3CɀWw3kpDD&.` 8w4r./26y"e\:8w! 19nnڎ2@CiM dEYB@hdw⟬ׂ~[t]2V xA ,ư{K&r] );wM/;7Eqtn\m͜Yۼn+'iܼ3vw^:74ܝwi;G\һIMn aaÅlץl)aժvۻ9MnJ#7ׯ<<-"(N(fh9bgbi AM:ѭ1KMSEmZ(-4bqXűQ$@$N љlR?WϨjDKy_/9\Xap Y4!@*$JZUUx +.㘢@.иT@>Y>!":i O$R@Sx%@,`m>Fƍ3_שj!D"Õ)AD@-1[ɦ wlѝ'=sIΚbg=6)IѣeļB:n3$D!GKGmMWlxU7 yҳ;m:fYuӶBu:&6f/kfU U;q LQ& 1Bc. ؗl64m16qF*3MbsYŰclVh &( ( "R(J!P5d]}0׍\QQ ĭWm+fDAM4ECh,ZJ/Ljdӆo,/]HqXpիQXyI$;D;R<GFŽZ'Y6%Fkڞ;fo2Ug逢 \ !bP"R hxۉpnawnI3wӬvM޴/=N^fJ[ɺqRtykteXΝMsn%z -FАӴ;.rIû{k'=F1vfȋfhۭMۥX3ץ֖ķ[9HTc"#]mTb$+kh1F" DEQ:[lVdljbլmEkm1mѱ 5b("-*bhiJh"QF- @,^hkGF]wG2Dk8i-/Ⱦl8aJ5kDT-' &zD0`VwKIJbWpp`2皎GuyG#2Ҵ- SPcIQ41)yJI!HPBP$IKA@xZ&*"(&"ix7Gsqn´-mGN9: [K;MK8ӮזڔiCH=ۤyG84lef^=ԗ {~@)#)H}Tf#N!r:]1dhd*b^մ>Ӆ ]pmm) <@(H!mARr/0E ) h:8Yw禡0큋BXQ OT!idܚX(jI0!ćLG~}g@p܏u}PŏZFd XO Q YP?z5`\&PH Fq |UR"*@R+\9\.2.tO?fg^ժ֪5-`x@Tz/ؚKm#gI((V[?/'ß)gg&zyxlfy@kH=Ͻ)B Nz3^hd0ĩ h峨h>yG{=J_1$@O~\o">7p />?ݫΰl|qbѴd/2=&g_' B'u$}BqRb $L)JS1MSwt;Ae@2" dJP] s,V ia*:' k<`XKIm d&}|84C!ǸBdۡ aP "鎯G `o:A! >1T 8_` Y%cVZ)1灘Ϸip>%Q.` ZӧCkCk%FoY"g}ߩО|39<.p\\S hޛ~'|>r;=o%xGтyJx]JbW⿐4oTuhj49KD0j[(A|@.a$y]0y.%i1 FiXV2TBbMn[yQ0w7f%J2uXY6@XBkEx23"[ ݚ'A8Pi[Lksqԃ"`ȭ3YA3Aɭ'f툼E2m YfP#]J;1\`YV< =*n!FإŮ<[1(Ɖá9[5UqU< *'+J.f1T)BH`MlG U1"1jƍ,5";HlMK 2# &e s:*f (uFVU{­vXfVSLj7\C#lN. qr9hNj[6,ez%ӌx]ySyJFdֈzM -WU3IL]άtphq-Vr5j7*%w%r6*kfhqTEn` ic]uʚl(Iq0\J%0ޭ!YjڱH*gus6&"ƚ"i]uCTFԍSѢmY5z,xC- `Lm ӼlFrT(U-2Ţ[x{TadC.sD.[4XJU\ghp%SQ((9({5!L0I`""ͥ5zK2nP P#p#zFQ"nwQ.JB܌ɊZjևŶCnU̡E(NКw[R0łF*DNaZTUg"nJXC0cjaˁ6i59|QnP6",{h,p63Et(ÁydMwq|C8vrUq@ b@d9^V!tCplHVżr ! +劑7"LFH[`(3V\i'1;e`Po!U io6 Vh9o7[(y:o k3lO6,i86eEb^ [U#b c5(:K21.+l7\1a'$Xlʔ$fjw607 Xݷw,7"ɘX6r!; qMf2yLITɨ3"ban 3UmM N^ ST$T9TE 522Ɗ{cezr]0wy2 iAdg,T1aRC9`(kmFX̀H͢7 8ɻ9`d4Tȍw6X|P&Uw QDk 23%hhi**w2 Hȗ.BZviZ@ \Ȍ3'u&ةc [D̕7A$K\| `m1LTY8nځ5:+1*uu3r XD9Ȉ*"%-+D6lNꢲ*Vez .! & MMyUhU5r,y7[wysD-/BS(d'P"2V7-]mQI<5QdEV`U7tEPQ*،/nFuV#Z* d*V!EÀCVd17;F\ TfiRnQܞhxYv2t:af ^Fw|!#Lb)v0&^j͆ \ iBfhekz0(ʆubnН\Ptb+%=H͉1EPU8& U^ʁ[Ilyv75p 8qpTE܅53"藗 &^xxј%"30F/)Rܻ,Ǫ`NP2@ LAvk_ ڴ^] "ft02DDZbbF ,9h%2`'x~` 8fBtm }osNzX|T&85q$v{ j0hM?$@tA/sZϮܳގgߡ~WO@aEqe Di=, oU BrAls܋O{PD(| >,!qױȪTe?^b@' (aN '@?!`ByC&H4hQ^O 9Ju[ |<ߨ(7av"N!~ߣ ͐$ QdaY}c`>>11  RSΏJF/`?Ŝ#TO3B*c t/++{M @40~/PAZ캁RBDgKvAM7xQ,cbuv/«sØI21)h@C=r' h<\k{g߯P1 H1E% uPr|zJŃ@Ph@F'DvF˲|!,яO¨,OC$Cnv `&/)~ot,|>ֶ-)mK1=t;4fA?2nCgP48om!! ><ɤSBć >C yڝRq 6+!Lac| =A,t~rCTilL\٢7OVQ F9g付n+!D`W90(DZYB!$~/oi5u4h^!޽6ӘǎpsD;?C&wQ?x4!5=Ziߐ{mS)/>"Cc]*zK.}2)BD?uQ$z޽?jZޏgL:HFJAmfM *@ kt=p!}~W`?gOwF qH+ޝ~9bLf/.` (lQ !Cwy0ُcoJDЉkҿ31DD4SE4SESnX{,,xpR%RAxw=8CDmY׮4{wMT?LqC}t_#zg;nAϭu^vS!潂Ӄe>G [6ZQ4!%0toAQ 4NDe.B0$o?$# znKq:W.#???AW1%S??;.O쫗Btᒏ[??bu{K}oWoj/ul\ISnzrh!95njBA(Fe)Reb>Q+R4qւ Q.K8 v|AT؀R"fa5powaa$?Alk,'X|K-'ަW`%%>X̷Lj ,OC戮etwG 6D,XH^X{cBMM$}!su{P5$a;< DZΓbT^LJ%s6~>۟o_rS>tBAdD$$I E^gi74㿾{&VMu1o M {$ f#~5R_Hqt~mN'h=Ӽ! a"z={KG㵸KqUM{A׮?{r ?3`=>6CJ]gxY'Zƪ[JU_Cmf>N??Oܰۺ n\l8l-P e7ԖOkTFWK Ac?8z*Iw G><TPG/}>N0*:8%dӦ9sum(wS @^@s? d`!Mg(^Q=/`$596~͏vkkP5֏.:!i{Bp9s->A(9h04}_ڥ2TϤwHhY?_W7-MJ,i_W=>s v6@r>NOL~P~D?nWПG/;]7N۬'`}}xٿKkbǙJ+\(#gY_UU-ʩbhkܡ=acyďqvgH($F>O%R'E#: ;Ÿg6?!O₞{?HS==~@Ӕl~ :=߈q.t6' ?GsD71"3S " QqL}XWn:vJ0i011r$2E &w Q~㻫κ_at}yK((,ZcN @bmbQrYyh89X[{Ӂc7; o57 D;0uGalErq$df 5 C8 cq]8;`|rg7m]$x~>ze`4n $H0GUP1F`Uyü2oZci7ަ1k:q<_܈BQE{gk eZɱq(BF+^ RЍ 㡞&XG4DL`џ$ ,)ۓ q?9cs0~WdP#Z"t UT+\leeAp?R$; 6,yX5E&ԂU+GLB`Ayݗ3hOh3 0 )zjQ[fɄpZ qx/ثoȢd<0_ƺtzB滻&4$t('Kc^̸Ȝ$hMZݫQmږķm{i_C^)FBrXa먜 H`}U\juPrdMXQ:H $'<_Jty\=Z8AKiup714?L鉑Y.m!q& H4q;y|M+>MYƐ]7LcA BFiVmcbݷ\ǁuJduÔYx?㱈u9K}(e 4DMSz1S=  I? $Wl8CB8(<G7زF@ZjJ Ž"6; A-K$Q2RCдIE4:`쟱Տջr! e @Qx^x^xQG#27]Kt_BzU#12 tJڊQ >x/4*G-?~߂I @Z CwQ LChD?OC,7ꇂ4pv ,n7X}7BK!#L:؉tMUH? 0=}Ae{°33hiE2@ؔj"{Wys#(2}1Ì8 `hhRczNoROxH0I6 %a"}Q9Eʀ8ƒ H'BuPz!)w{E! @4 Xrˈg8q))" cFӿ}~aZ(\Sÿl $Dhܪ9ww'; D>_\M>5mEf)&D $M#E||s|?j 9m %IDH {.?ؼSwb>X1T0Q$&L٢n*lg3>;ȸlueM?TC~@b B0Ϗ -Ґn x:%&]M-˜NLȦ9Fbw Xӡ GCgCeQ>9Ѐɶ7b䮱"u,BcYM~PBJpw ?M,D?P?6 >V0{uQAd~XyKsҜ,X:\Ci*YڮZ#cGBQt$K?FjD? t")e}la8X(>ˢo&}Z:Šr@ATʌb$oRyJ<$;;|ًO94"%ј)+DS4sYL[JAU}JkcC$Db@Ҋ҈"Z r5(~&]`>$PR1)Tݞ ~?d$DIT1AKP݁YF7,9x-i,H t`DAj9E,~h'nrFǢȯ7!?'9Ӝ>d*$Sg=@0!JW8CTDRȤtdOYĆ T'<&N(tz_~9$1><86jS9ڗr M5gGtSGL84La &*(_\J4ik-~ʿq! Dy!"gD4>b`GBP#S)J+NC OhR#AW1`,d"Ik+"$"_:@8GnBPR*T { e9#tzD1CeW>,8!owvZuK.X8K=7kCuF#$)]b.X H/-&xֺZٔA;"SsU O׃#cd45;e vBH"t9s~G>=1AH셭+i3p_QhUJܳ `޳|,  /_@]`Cܪ4?هq|8i |wݷ7u+K _<C!"4 OOXrƇO1ɴ0YFb- gƟ3E]B vUCGײ!s{;]D8S*&.#`~?x"sMl,c]"RίvPpOPɄ53 `B0@ - Mϻ+@mբ\TK+ro~\Bq*5Z C_M ֚[2*a=~-;8^qn,B EY<~$/ j4?1%yO% aY4E0COSDABB1ށ`o { yAJ }I+vФB<ضkr.4~,F]~3rCӅ(DiC%5)N}n<8@OS24@jր"@̰/j6?hv`rESڇ;eO"'u#R\ m ΛLLrLz֤nϸ0\0r9Pkg '؋BJ@}L4OWn>z( (ēpPX|Htw$ y4pc}Ms 0`N3 @%:GJbO<"Xu|=[IꭌaC ;z3^LAI<M#njt0@F&^oۓe@ H/֝C)&R]b(nb )MaiJ!j@}LK2Ahf-$$%$*YCٟ#m?^r%UtE2=,^ZHyQ,0kN0d쿄/={)Ȣ)Z@DbEfj1`'>BehrU8[y7t Ed7Nu}=9o%1˙&ԵY6qmZ$U?#~֧J@&`ЦeLJU@00 "hsA{Q<MqD$dxNe&)-:Z CR[|&sv8$0hl)Vaʎl ؕ OHEs^/rەsZ,iC $"ܤr$&pN{&!Hz|Fvx@vb_ *#YIָBzv˒-r]`71GޟLOq0RhXJ}'w`3vXP<ὡS|Kƥө֍ -@`,dШGͤԏ/KGA!8LBdn.@ FBG塳 ~9*xv`ݨolbL".>F#dP2" 8CHw`*6A0Z| dRc8j#N`d)~mu67zbxg2JJ(=% |Aњ`8u3RLAA?~aJa,@Prޖ%hN⃴)3ׇb{W8km[gjڪHdp7d7e63FBҳFw2B l̉5;vdmDW m(XQٔlpr#XMGwvU)Z9)DU1li#v# hlsvɠu"P* `iG}+ ̇-hI("@dT!4?#ym2:uTRTҔ%.M. ߯bLCN$ȳtCS#AN$rIhQ.faf3t@DL'Rs,YCԏ`1@vѝdC@,9Fi$ƒsiA뮢!$BSVb\<.k$yNT =~+@0 A(KܯP;#&? )$*  %*6SBl94Qɛཎ1X@ #D=8YXG)~$n9U}!)v4  fYj!& nPR9;y| Hp#uJËdTpl1IDEM"fj g$1&#B\4~n".E-1ܥl H@Szlz6ZH6`^![BN6O*.4ǘZXwFAC!Z4p\Fᴔ4&4DAdIB- ruLDRVӘI:3К?.̀:(aJ, nlq!} `T3:DқB" fkl&LO`؉!2N,U \+pPa͆ Zzn-=xlL>k{O\+?%W~93R,Rل<}uDrE?;8l`53SLRB8zc܇toE轙E!hR%fQD7!AybĨO)Dɢ@0ͨhJZ L ;{p3;O7~JL\9oˉyo%jܔ|%@t.<]҃<)0P¸D)7r0OtWfE,LOI@vy~>t3>L YAr"/S]RjϞvjlP`R{PH$z| 5}!lNg溜xu݄HĎHLAމVuiq| ,B) $'֚*Cd vu[35+  eC򆫓S,C'-R{JY2,GC繻'wi}St~IL"̢9c=!VO8ҞZ\lTIZZFz7T6ԧtKNܢ+6: >l_5L Ab ]S!žze7DMү=J S+<ٽN.~ُq~{haΏDz<5~#pI,"V4-F;,,lwB3j:`p,І%ܴ?"ݯ![5C7`bS! W\vOp6@PR]w~CVĕ)QQ6?Qhw@*55 +Nlh<Ϭɱw  HHUNYãa[ m,)'oNϤWvfD @ #zyd$DXڀ,Ovy7|r;q o.gj!KBN AK ~d9wPLQs[hƐ~cQc)Ne)LOv_r'ѝĉ$0="@{H)TH]E?,Q= <:ݝzuN=d mN rd8 d*܎KtF!#E*&={IUwt,%<{Cs?jZڕ"vjPPߘX[e0J4h /3]нx(oeՁ1 2 >caLP"b6k ҭEaņ4ҽa}g -(DIQIZbV" jdaȣ$ _IBBG+R*C ;lY ?aj`h0~R VAxEX)%qSG@N1˺,#<-Tk9] bEY$`bR(f " NbAQDsa>xOsy 31|%{)-#h3!Aly@HcўCy"3iOXgW!q0j#i1\m0m+`(:9uY~=@]߆O>7D<:8ϬؗgqO| +^u<}g|=7Px2nx Մ$b='(lr.*~( jp9v c`t*s!+(q]lV%qs{"aߏ:H$^\s>.xFΊ 9GGR@Tg$C҃5/&jq |s_S}!J/";dS EK[)wiҬTlFx0"[([F㋱8B9>V$ߺH\VLZ#jhU &Qp+m ]j'(MHszjbCzఄ"RA2= ؎ycЦ2[3"X\26 !; Sţ ^ ./irY qXb(5#aCytZ!aB]=H9_CJϯuY$9c"Ct`qkFSpW+@~wY@衆1ģPɖKX&Qb*L(b84:D _:֗M@]bp[l<aR :x-MժШD- @h%4^p4*B􀅕 5S/dp7VauS)tWFyVN.UDEd&$Xc/,%ԉstH}@G;g-P8;#X#ٹ"MA呎Y DјR(-p5:$1xzl w^AG A > H1H  4OoRsqi A}حŞ{Q'P=^OTu>R`׬s{ɠZƸ;*Ld[ݾ& @;mzЮyЮ h=fu~)S04a zI#ǡWz9#uQ(H@F(&%+0 AR($!Ot[rdpp-FdcσnsP\tuG aGLQQA^1͘ t:pyc響\@oh( k!n`w]cw~ {UD}5C``3"ط_r$b$fz+؞h,ɂO5flX  A&h#Aydz$J L{YT[WY^Y0Z,$ *B%*g -Љڼ@i7r3AB  <Ӳ_rv{." <H6R#XZ9\E./~v2NNI920_כc~A&ڲ+;XVeYCk:W,ArnEH?=R~cw3DB3.-a,CX2\Q0E ; = Hʔ=6랳cg+QM5w @AHɮRiye-vX@R1 ęRܖh#62"Wqw{'\**!@&G/Kmw^s.XKK~̩:AE'C"H6Gw-u al$+ql%+|4xkM4DB#(0@ )r*OdӈCv Yܛ9P:*x~^|\ND3/2Q$G#)$q<aQ{#-]TjLeZnNZkgFJ&l2bc(CeȸW#ȸLQuK!`6J7ןm1ZS;Y$jIhTM)sKDxP֊CUdN QAWT)77P -V4"$N*IVGx|~[)aeXH!%aPa*Hf)Q eP`IV䣁aPa&"JRVBQI" H`YD%Peeh"&(je@e"dZF@eD%aZ*Ff*(`jaV(QF Q F FD%HF!D!IB`T`QB)Fh(&Zh(ibhT`bj )VQBeeBiTaBQBQ F$QFAF!T%@ePa(Fee!h"(jh CjH5f DTt2n 1pwỤ4f!\)l!K>OM}y[o7~Ԍ4@I s2%鄠MlIJFq]R5˕#ŰvmIb ߓ@ r+Y>Is/Ck$2>BrV9RJaL l7X -*嘵{!j;ұ#TZص?ĻgV & if{ȇCb3pгSp/ƱO}`t..wNzC;y .z Ǘ5&s z;G 1$U>C}r(! n7MYҵ:8 Mj'PLQ6 $4h(Bؖ#E˺YAЊmڐ',v B(9e2Yi\r7[$sТSJAM:~KLZHK@R%%]7u@{6[&HY FP|?8cpoѳཛྷ0ݛ&܄nR"Q& ጲ:J^qx:FDH7}tzvQj 4cNdV& B1AXFI3$i4 sT҂R.Vs}L6m1Znj ]p%88 wxA7m?^DU XtTSB*}zv  *R~91@B -pA"7 Ȥr+5}ǴB,@Mփ@{Ks}z$͔w!{a*e0k(b(]T"8E_D}`<#·]Gt-!%.q ;qgPiUd y&gJDؘ M0^"xy'؉dGGWi#~xǃ#{!r()i9}>z]t47FT !Ed/(6ZԸxj9g(5Aƻb'P\T9ϬqL9=Zȏz|-u~C 縞y5+$@KC*(Đ2~D#RmͷQ988BаmCHu JR "bDC?WuS3 +TQK3 @v@b}|NpV|2ah2aJFTgevֲhh(1Yh Yw&9‰O Aa~;عfX}%Mһ  SbtaA{+t&Ǩ)O6E uU3IMQA!"Aƃk >_,(ZQ,4@)(xJZ Yz//$' ϰoؒ2$p 8Kxtyu, bQ~sL_gLb OTTW;I>8O^NB 0(oUfu`JlJ U +X.Oؔ)g<ǒèfr*Fs =":bN^2oOЧ:=u ߱'0aJ"84ϻd9*p-C,ej5+P!8 pR m5AR DH@c [T_tۯx)NT0=fދmtcHAjP}a*0` (1 9s0;ѷ g3Ii$R$P͂L ۍLԅ&6 d5Ká#"Y82uPCx{0 .lj= ] ־Bw)M4/DO@ (_B> 'yCO`' j)|@DLkZׄu,L#wu x1‡o4ԡ {W͌1mfZ"BfguWM)~`b!Wt7\bO ۣͣ'd#6Qܱ1RU @c-`˰U&9RBfk-CG5$ЫH^#ltw= CC> rgvw!HtX^h9_eڣI @Bu { ?(W:w>认aK7Ȉ?T.L[PD}r\!d SR>A5_A_ΤV4~XVWء(Iz9?ȓ݃.Q+= jfIۣR%BAAu+ӯȅ[=""XTDYt>as~|B:WXC /F@$!/=z֌y0K +IE *QAv5Z1R1[K܁(4X=?*\,+r"]Hp#~'5_ u7Z'a MP-T@T2=l`ԋ1A('T|QpFS>"X/ۇѮklU=Ot4NcDuiUV >Td/C6>i$AQ?8?d*E#+?7䚕o!0vHH+fHΏZ6= RQu]ɝ }ߡ졤0%#dV(A ]>bf=㧁6|Pji_s(㠞ƿ9oJ>Su|QM0Qi4\:`g4 +A U|ei('%:0r Bf:!(~m͝mx@s >:AHB]Pqd~ڀy"vFe 'lo $~YvD@p*q@'3ej2KNu>W'`MJD( h)@ UZPbhǠqZ|(4xժ_ɺ:DdٍxD4P5Q,H BBzDqpX %a1&%R p0>Rr Fpu6xIjp"oM.qW'pCR0#=R>7! w>}fFs>Ȍ` l( ɤ~M>!M$3 (2B"Х!A_=wc [X%FæcQX(HҢ@b)[АUP-ZRZ>^<TAHRJ+= hi1oy_ĚFr Dj3yȊ6,:7l>nw <}<^ 8tUi[! "0-/pOi#9o1$]ܾխhJ( &uW`-ba.ondtc~]5.6f<MॱWX!s$x\GQ;';? !O39X^e=Q/e3-T&  GR݌Я3~z3D;~m{ \xbxrQ]UJPcv*Et 9JEB0㓧bx+:e "1I%D #Usm˅bωuTye: x(/d1 @!Bo'$@M2 Btm`f0%4,J8PMG?Ϯ!́6s44 KsTQuX yQm]IJ7'Ȫp:@(d"B(*EC+dSWQN0`$;^y-.8xD=Qh)^9" L(56ll?UCPRPpK]xAn1rd DN:-EkE3TSC c PBt~!h}6T za b,.{Um 'p??&kا;B>t&'=DG}(A ᜕cCAD>q$A #ÅnT9?<?,/cx6 ݀E2PXWS`{)J"E!TAB,A2{=]q]NjR$ z;bw :vJ+T 'o>J~GXEf @ 8 wAH!׹P/Zn1X7ۙ4(-+@5(9T֍ BGh0μ& q =r.J)Q&Ä d,{J@jMkf?<{uN߂EYSO|*/y*uD|W¶dpLGt8/{)iHȫxH!hI@{ryߋ;1wmf'<Ժyvt^/[ۥfjypp%@%%z`V/ZyHS{;DK?iWD2/$@t!0Mws U/("q(cܫQ $^_YkD ȁ$FQ;%J4$HKe,.n02xEudG H,z:~o%? S~x~Pԡ٘GBd $),BG>@d/~N \5|Si%(VCڀ2l[#Ĩ"<0P9HjWRLHFCAI R"҃l)U2?]#xup{P%i䟒ߺ# 1!,&Cwbv"0 ~ď<\{_~rL I>6ߍo>QUtrq8 X*v;R 7K|mViZL LUb2ar#Tž`xѿN `p qˎ"y1Jẍ́=8C@# q|ca55q()3)5+ Vp2Ԋ#Hn?(Gc!wOPϮxxWWUz#C0I6䒴#2Ĥ6W @zRT]kQ9&18JZ(JwKA՝0"OJtwܪKh$F(7[=bI0,!ciXj Bn+ ʃ (U5~+*RoF;|}uԈ 2Cc\3 '&`_2NBx~Oyth3^D|b鏎p{?f{)"?#8㕸:\ƦD&[rHF[Cj&520+l6uNcFJ&=?؜֔=@BMu~' *v"X.<}g4:ЌG1 *N:uB8a"~D:(rp0&9P10DLT E4DDU5EHP-RʉHl*{ DFd`+D8WcUUUUUHPS 2  $RUdJ"DRU%[j$qJS)J B @! @!I@%J J+ED D0H(B H(J!  JUU%%$BBJJ#B*RT UQD D"E,H! B H"H H*H CTLT! HP(B TUH EIQAT MQ(B TB!*UB J!*B!*B J!*B JQ J4UUDTгE4CJRM!MTUUUIF e4#?4 s:x?4Y ̎8eOpR=% )H DgсA,eIZ6Nk=&+F=ndd ` QEDEICULEPJ9('<: t"$ ϐU$!=  U.> #?R.3_BHPIC"Ҕ B BEl((i(QBPohF(y+@$r$"r~&$Ą0E"'?m{T3H*Ȝ~ j`"!4CD)S8HQ DtB~@'~N. ZJ(BM)TFdb(FDE J2 BAs9J(NSȝ(p̓^ID"??+ ?<9~iJ\ ?') mFC^J@;(/ aW?i@*3BGhA>LIHRt&%  ;Cd|AbBae&~{zѬ *^uY`AuN]X>EaEQ"#3c˩銸& 08m:̊P=|P%^#|#"2>ɠ} ; r$P[yD ?`P{@l'\!4Gbs9Y "td/|ʻJR* $!(H $!N2?HO$GvŤTat_'Q DJPE1AE#J!#)AzC얉}ϑ9ΥՆ &n.>)0{D`W_!v548 ZY}{'!Ghʿ ?'۷bAmek}𼆚GM^r1N.^(n>LtO]9q廧s~8f' {-%UI빮-9Ҏ+Ǽ4*_'~vqa998԰C\6 +N)%tںM/TD˾h >{ (S0TC5L4PE%C`\9G ˜]:ʭ G  \ 1HJ,܊lA (!kvX 5QJP4!d2̙E {\2y T0)qTtyU4 HX{kzJдSAL7hʨh$ *$w%{>aٱ2"j-bH4BAQLT wC> W! l>'nxݕC{w%Au;>BO)]9J|nRE* (l"4^u1tCrH!VSY"R-QCvkn/6VqQ;vе ވ ;Y-j-4Eo<2&gCqqD$l=Q( 0Z2>:?mMvϔ!Gnhqs򞏭癁Po [4K_4GBK*MR#RkBx/P%.͡@I܎c/|8nz 8T"U V$CaNb8jz.lF.vRԳ2C4pIBH\hX . jCA[0n9&'YG76 zfqNzx(4-Mm<RTrL4r~IؿPB />P8Y>4<. |.y=~99g-& :OTszv h~"6D+!G*O_h(K\)X I{9R**%&^T)%ԛ5tH (Jijb hKnzySѧ `C˜C`V`  8Žop.EȾ _p6!6`)^xΤ"T:J("!LQԋpL(E\{L$o ɮM:*b7 GAWuɳfIk}\Q_52H67ۼB)2$B)}n| R2 r좛;@ SFx?<|lp2A{}@Kid<6?Q9) 2䩜 1e@@`/BS[a=MۑӬ?=Q4B=ZvtF({ O!)}x3x}^Й1r)~c05BʠwVqp#9o}Yk-F#RRFȥէ@KmG77JRM=]}'bl[k|g C8ٵ#_\8vl{:栀ہlæj=fɗxVً${g0݆G2մgWsd$I1Ǝ!1hMQiEGKR@P^.BAʴ(:q[wػeH)pyyJ@#JR4ĥ 1  4)@H!A5HPҡ@(PPR QL HD("PR}t44()CKﻍ"l)a8^ `m'|yX)0(]WTv) f3}z:=%հL([PDӝp/=~aqxr?aD!c>8''OI|&P> ěn6] {*ŸEMx]+?{IUCb)'84CG z'zX,'MGRu1sPO&Rp9%jgZCĬDQ' G'QLd˝&m' LOs-YnY_K#U_$BK F,tt~9lI6ɃAD11UA^6CxPA3`z3gc.HZZ,r0gX0Ge$d{M^Mr'q}x.pK.T7/M5xT E%@HY0ۅNۉ9FUع1x/0 MQnQ&8/S$X:e90CȣtU33`,q(#ii zD z}' VkHjdk֬*2|`D[AbO"PߩwH_(|@'"*"*"*"ltuOqUQPBO_-" .mIV h\0觳$2*C: qyC4MR!@ L}:-xwMr JPClF4t0;O09"Dy#(Nra^ %ZŶr _e?I㡁Q6_ C b='*^ӿq>7 >Ȉ;$tWlQpsSi+HessA'y<"hjt+B(&k&>>2 )\* N1 "qNb9n܎a`2U"BgB$*dI &2>3#ً7CB4·&ebq p8ъ;F7n: ګ3Ors8}Kc:V'<܇ HؑL+a\9ݙߐ7ٗmp\*_sRբ6u ۺ *Sfq 5kj} \OpL!'0Žvr6 sSvV93 扻297s#M) C$Z!ʇ|J)}W˗MG!|m 4EqTXȌů6)Dh-N./?Tr'swa7a"@e 0n!S-I=\Jtg+~_qA <fbd)M'[r8DrrsEMM"SIIE-4 Q͐t&E0^!",n6U..I#[O sQGźvsw33q1$)@|nZ xniɘ2ɣ(bF At|B@d,lYF6Q+dXhVhK0%A46w7X $ 6))R| e5A^QŹ)T,pn%^Hw\0(/d !† !pX5K ,j7a45,.f4+.0Z1donkTa Ա4 0lSo z%&bA/͠3p= ܰlu6*P8yG8g)M4x -w'Od lZi V2<=tdv6;/#44@O14< ;e;jMBg 7p!S;nJgR(A2"`yχ^)/ixs&^ '.!ԳB9eh"ER) K<"-FckY;#1[iS'ZʙNȡb6JD4qz]yR)BTє$!QM 0H?;ߙS[k#5' R$XyICK ";$MDAQoS R#'5eWn }gH'z(`B%”* LzR?)GA oO:e y٠N>_*(PrQ)bIP(@U+AR!/BCH $"}ڗb8 @J 1,IG1,HDE(Q(AqX(AI3ᓇȋd]4SA@$)$X 3$ :)glRnm9> isܯu)L{`(hqvmû $nlă!PXn )}Z_r C6 R$J)~u>z_F@'Q$ = ۖXWH&V䉈F>'#Jyw]Ii@dHk$ߋm轱{LJUh#yRq>:Qw RЭ J4J88ۧzP@DBȠG8؏u SxXCV%QxYV o}trNxx-{F%/k{{`-OکazCKPS3q䄍p Ps=}/CP&"TF ~X츣81% ,HD TJP )*' C4BUY]Ї #K}E@NgQ@rE9jm?Or3,¤`02/HU}o5OꞯOЀy^>zɟ4:b4 T"#+!g4.[uϴHW`2Q"04D#6O(hMALH FrQ@СJ~- 0!P9|X:KJF6DTP0{?9LWA(2rS)GvДuf9~b}Ҕ@Hȱ&w ĄJar {].>)PJh k @@iOB  H{\qݮp܏"JЉ9H0 lr4p~8=!2L tZ` `~Ǡ~*C$׆@{Ñ* yQ ;{}~ N߰$8 Hon ::@:R'1M2UAU W`DM 0aD?ⷓ@tG .H ( "1&dbFcIM5R@Au?%p+yB%, SVK=$?;Ǖ tvo- kmh5q(m-d7trr2s\:P/<$|GSp0I2hra?N0Ru=ӵNC kuۃ@Ҫ%#ba(X t'Jh}OWPy+L}(`f5:H Sgh s)uj-֋Yhh)v;.CQ F^U_QYa)AxW~op~<z"V gz~/5a Bt1drMP@}1ٔt>{,"b"N 4vwx\J$h 6p9v}iOPP49(*d'|?IEC౎!̧BoU,;QO H_C%E:/dopQt%<@NdyBZ@(B )Uy V4Ƥ7G!Q$/sd׭ˋF`nKKaJI̘Ck ZII"[+DLff'%CH&(e1E yGY|8ga<[q47 .DgpM}*^'  `͔4h6|}͉RכŇ5pIO!=1 5G')A'u'p:da,6%M}r.덝. "ur,qӖ5 4dX D @v!ؑBH]"wDBgRw`H>9+_ 3Ay_fЈ>9!\5iL^~?qp0Wq;E-eR¸iXh( fWB8[j9uKTpx[O'7:N\mGIV>PqĴ)"A r~>NgXYj&Gͻ{OGwV u#R΄QnmW92+'y Q\L#li(M>&|Ng\FB^\\ 64ZdJgT}{?p(*-2 I!I#H J!."B&4gQ]^"@h!vJ?19VXȈةáaZC魓"{BH S%qyo ȷ@;D@v=ێ#]{e#DϻO >?gOn64KBI =5޽R;wXm_ ˡAT:PAٰÌ4D+JICAHP-OWteqQ4AhPyzrh!rBTIRhId@D3ny!0("K`B$hlADH%C.Sğ| GP@9 IAE)Hg`x B 79*@R*:DOFઠOgSLfII(M,]t,S@6:囱LDls3#3XF_ Tq-G~:)[urJi Q@|(^[9a sz!vT694 rDXQ$ {#|t';qE gczaN1;?__ qͿ)04Ꮜ2SBjo Ö9GX%@as2C"!I~Ւʸ%%v-dHcR{RCo!z @PaC1KQ zn`0D?X*.S ? ܋$:W!$@>sXX+k($d!g$rՁPПZx -Ӗ8ݣ-t^JMBB @g:[v5·뙒OoF1E&*m`;bhv1S#?ׯ_!‡ p."</p 0<(GzI^/PgzE&NғHUQT5QU_;{Oӱmr@aqfe!YOY=HzORc,WX׻;NĔX'#dHcP&T9 w|\8π|H=xnP` ~Sƕ9:׍C[R l,(_tz3^@ԇHU4F 4$!*?sN0-\q@On&e-Ǫ 6A {=J 1ꉋ:5t?@}TJͷ9 _Sl*JUkJ+(J@0 PSae]Ԗ9 0MRWf;5Z@d_ ܈SυT=,mq)G6IpULettl4ɮ B&FkD\2[B7aq1#V4`n3HfCvM 4}CpGMCB$\x34PApﰓ BQ'UE>D`dAML3+ߺ9c6T=*-Dk[,QGښ >3KH1v6y]#ARW-{SOm?[^XqpxdFwC?*J%ئC?|JvASNHz>atP AMS:#;9OCPxi` 9l{`ҽ} pw 9&kKwÍ",q=8{'Ro^ DJS$@:D|NzN#Ǩ|iHh!&d3vD%J/3}ɏp?H-l9&dX^?GiuÓ/*5VFo DFYH*_u@DB4*88PW;~j/)#JiRe#LJ*$4$EMNWSDn ;JzW̟r%4d)0%l1sA,X7DOs! =Q0e=:' $!LĴ%&bfih jXԮ*p u#OqG 9#Á*1F@u2o*^7J"FXdm {hUv*R{ ~!M v-.c?PDrd' jD@@HЦ7\ ]4{k,}/nz=eIGPA B21J49l;K4rNDw.DTģ$32\X@!p/d8Qk`4ו X 448%J8`cJUDi}NLJ*&aq@X1Z) @QDwg;9!J>y$;` OʼnzsX03Pb\pm!~ i?sxӛZdP(8^C[cTl\9,,jJpW?|$W#9 G#^Wւ?[mY]#.gP$Y)\B ]wKľ׿A< Dpk+ "vDgH3P()HṂSWB8P,p.* RyW9]P%UPc` # 6+ ^p᳥nY\V|.+N :"=CI; v*64>A#NH4$#wuQ:/mP9Řr<{Fpri(;` uТNѡpQ諰 ٕ}SJW>O+JaWW bq}8mP)D b % 'I\@\Em1< X֨ beP[,0/# tHoyq:o}X -(-\#֟dEgF4yN>qO+?7?i-Hu$ #<E\D aAaD>"P~S`@G3Yϸ{t}0㎏( P.1 H>+u&Bz[t .K ̠\4Rn.1QrI$"V[HT孪D8֢ɮtJ LDEp){_P\)x礱>-o[NVqC4喈{PĪ3`^-1ZU3%!RmNXB(sg4o͑ lelyGPu8>`z?򺐇@ݦDddN( ,!%<NZ$/#<exFzT&h1Z>9\G%/  *@0,5+PT vx;MQ=;CeAR8[3gX%L Eo@C*k0ʊ@$#tΆ; U2AQFΥY\дYk,0ia, rpIomcT )BHR8e"M t |\w##[#3*an"FC!P#l-**E٪D\pڢHUA*ޭO c[M6׼=Znݻq \B@e:'Qz^G7G]:^"V(]opv4UןJJ}+35x}5N 73 @VKZȧ"zHr6he) PG9q F٤"SS`A;6)ئQݓDK M Tː&K`JpJ sAcg8\-jkŖ,8aJ0f5weJ 02B3"JRܽ.RNȯXTk2Qog^z+R1v+w6ᱼR&v^#4GR Xu)s21vi)XQ4LX>v') ?,DMP\i o@6N;0 `Ăf6<:!,{>e`"GB5Ȕ07'?9UQWq8}0^ / !xψsU5!`> ){-)`+HSeg{$С^ݠyG{`vM&{H:q}ٯ=Y2( > 5ucow_2\ @zGHb2hBt i/ .CpHs Q҆eDߩUE料6a#yC( ߹|L`/ggL6;z=\`=HӣhkZ6G`j4RZUlorRD EIcStpq Bi /׹F C"#Iݩ=B  R]+yC}X0[U#tAl^JEOHX6``xJm}ݬVKaNҾoG#\<='UP@u5v)J* y\HHYu$xqqفt}e$,JˣlzRC@zG-.0Ȋ,"gobfe5[nR]a!q(J=Ke@,?Tr; OQS#ABKQxZ''Br{;@4b!ꉧǃPDGO(?GHc. Bg+ryFj=R[FnwsA21bR #>b7Bn"m= +B' K>u '42n4yt3!4 bG5xn%!gaYdmZSm(PxG8:۸^Hda&Dߟ>_>4$EPU1MUID  }LL`i)h"j QIH(R*Kx V3iS9 > 1Xߣܗd{JvCM#7u׉ަK>3Y\O17\H5'nni <|&V9\vOma^g(NqVmW0Cq:/Cӎ7LZJډ`^ 0%Hh*H"8j`)"FR<أ~T*$ eEІa'D,bHH'_ ZNj%*|nI$S 0M}h)ii()86䦁xpP uW=9>RRݷ3DAMa.7SAw&#֪y NVt=簱A]<=0p>njc-覨ڐ8)]؈p 'Pj-ڎZj*RC /dGJ("i|lxX}OwAiHCcBx`_$LJ`/~}`pO) mZ#3ٍA;oGEZAqzcǩԵq,}Oۥ4!zyԴDV  1)IIb ;IީdtsCOrB(8hqF@$'wM(|D&AOG]M\Fٜ60_0@SRodD;ry[^Z= fv(/wSs‡S} v8< 7YC!P#rU BrHQ/zQY~c-HH1s&+2*}K+y˚놀v'·v+~7ѰCH\P^Y0i x8څ1Z=twde2a00MrcȷWS\ ([|ͷQciDDG:1Q&9]g&/lVPcVڂZ"6$%}w j wŖ,O#%M0&frG:BbH\QHAHa:9I Ӥ)d$ lr߆&xlhP: MD|~9w"8I9 R=5-qY ^ "w aQ[-jKm-.܉=/@R" S|*˨޽CU -pA"\DBC[Ƕ׶ֆqoRW#1&\@. 5B70~ lK~* a?s8='D@"}:Z46u67ñ^f{4s>9dWq !Lya sȱPᘎ#ЇN ynjƮSD[i;%|!tWo (-M e?* x~4 j\.Iȁe|tyXM @OhدT? *űi{d(0~ gcISRnH= Du87qΊW5o87 (v4M-!DȰ[ M5Š u[l PD({5OJ#皋^.TbK`PI&.  3FF 8HGXbMg=\gb/ðsǐEAk)ϿWsT_'s<}Shے㽼.G:萝@Z41RUTCkbXL@t&w0 /xUc~C4t|eL0^1dORԄFDG~Mr&D]T=yI p!-}q/XPa `@9~*s<źO:qM"e*(gamTDR|kTGr-Dx/'M-7#s2lyF@!HF ^cR)ѓ6Rjd%Nͼ&U!sDSSJҨDBR 6NdM;ÆVX XPIEnD&W"9危xIkof$( '>AAJCzT Az>^WrKU ɘXb?$n{`(n0fXHoj>Q/hPQbЯ-7|x@v:Џ1)$"lED4i0rZ(i+^B.)S!:Q(W:i $C*uD I]M',s7a4(ev 5GB[W J|arTE\8aAγDs\f^<,TlSht TH'pxݶR*B"z~qLGRU !Ej*S}g#air8l|FvY@#! .R@?"tHݜ!x;KPKƯ9 j  Lw͢'[m ZKJ ,~LxHy#\p;.D& CPÊqذx'9JuqHk3tlc%ؗ6  Ku @(-&"px׶"K{u3%& Ax?Gc>"ѯKvQRBAd":0=4g~UMi%^6AU8j }!3YaAVMd3g<ߺ7 ת{_~>xJc=9bwB&\,;hf)~/mmEEB׭byGme0\#qB @[]sG潲 !C ș"? /鵯|qO4Q j2r0zPc;K"'! Fs<%r#k#zīg7t3QL^ 4#(L#u>b,=`/+ `"uhYI H@S ]'v:ze[G-D{wY# t^"PL @A)H*~%P{G ,\1c"@/x#(MYNxCqyq'N2nX<M,V#hL& Q.`O#uh] GXxE_I%Z>w2ˇ,O^]`g Jw@5$4.;'XOvFF.*bPH2hN`j:d y'"(S)9&  O✐59Nb,l=;_6" &h**0d(4YOYyU KG7 t}跉Ny%*WcHhJ-bqPi4lHI1fplSBVƲmd@>~ F;"zku9谬l?rC`wl!~e1M-:uKKFpF'jw84R@)IQ vSciVo׎sg`NƱFM!E.!uOȤ4mƅ  ULCT- R"҈P~ǁ H!'2+'E{Ī)Rh RI21U%DLߧ0~APB~EA(|ÈvtAP5Q%MLe"U^F%FI`RbLZI~lpg_CrY4#S!ϩ≸CQd~r}_.}{fl(DBDV/W8S b@YNǗ8ZZT* ck,'pY F>~F~_D!ji]Bj;T0}) !Hm#1AO+ x(hO\)dQB_K9,URɡxQ3K " ۇ{6խ*6;"BXQ,vV"e>:q:sܷ` K=yw;*%&._xn* /i(;~:ꃲil ͺ(uuBMOTL]Ȩs¾$,t"16cpP$v|jDĚ\qV$'=5=!=K>80$m)$j[izX>ͮav7{~<#FCT;ÕlI # ܡcC`Rm+2Ob0Rق]`9xCp2XJA.+B6-*<ƕx'# u1̵"Ž:i 6(qm8VrL|5Qt7P.888&z~hQ=">@Pq#6eci#3d:[7Xha ;vQGcA;!A"y@N9aΖx:Ab*6-