JFIFC   %# , #&')*)-0-(0%()(C   (((((((((((((((((((((((((((((((((((((((((((((((((((" ,.Fh Ch@ 10D``DBB h4 @dX bD iD ІI$TBB'$"`I)Eb`(m9@0hb&!1114  b` Dh "lTH)TAiN  A" hf%n£!aY4hcC"5J2#Tզ@ #(a`QI+JHB8h@!!!hSMNhC4$11SB!`&2Dc(p*`"XE b!IJ&0C41 b `hL0JHLi1L -XX`ݚb% )*Cp& ! $40)!b䜢hC@D 6JJቨ4B!`b `0@ b`&ё^IÆ LO7dX h@)A "I`6H !L'@ DQ B!Bj4  L@ @hb&%$ D LQ~7ҜtZ&pӘ b `&)F؆` 7DBB&qI:LVF2B1 5iL4$ mj4 @ @ b`0b iS` 14V1l˦I7 @` L&ȒB[lC!FlIY +@!"!%$  HX J00CبDE18! L r2ϳ>Tس:=8Ӓb  & !`) "0$EMSIAL6D$B`&BBX&1C CT4h! @@4 0Yf |,tCE\T}nn` b$1AN&$ &IS`0118` 4  9_^8B14yꞿ3wlK 7 &@ 0@ @ `Ȓ b( +$2DR:]Z3cqcAȴNb11@#@18b`!upyt|z8lZ+]}3:zKcwA9SUU5AJ   2LUp*HR+EUEvF2qIW8)-JYDUQ  b `16!B& n$I9y~yntpX"QE,m[&C44 b ``@  BQ0&:Qud J7*"S-5(J7U@`  b1n.2/| ZrJY]3~ڕyצ1Ͳʬ3}[9NΨWVun}Tc~g6g=Mq6}GKsx b``L!nu"6ڬQ}_4 4IMtSҫ(610 b`],k4r:\_GOn骻q[,C*ͳԖzhUݐ9w L01 L& hQm(4d]nNiF wfG&ܱx*uθIbBʤSnܢaFj(@`8箄Ꝿ&IltgxgɻM%Mږ{z)]vSqUټ& b`0CT 8&`% '** -L/(4$cךRjp.h @1b!  0n7ʮB Kt}UF˞tr\7Jϖ~%Ҹ[!hUqp!&7Č1] *O4צN.Ǽt0!J%S101CC&1 Lh b bey ?fW7Ƨ,ʒ2t}֚m[PzvvF@ʀ  hb @%(#!!bBâM4BF=x Pցdd'YS̷ͬ 118h`bSv\>}Ux/ޝ7UI5h,pܞ^[U9=&v8@I!(XjaS,S3]av(KWP4j` -#ݒ7Jն&W"1t!^0 ! &X2y=yomNz.zVwfKݚж26ϗMa5L0C]q$8EQTl;yj]\U:znT62U f%uLb!  o7Q/{jyϣCJgS[oޮOO>_W6O~oC,2T`44\3zc(B A\cuݛU4컗AK2B6vǷ\n9WXQ,y:Bz` `4 @C&r_'RdxyNu <SQUM+#S⎬7v㦩K]Jy:KX5b`!!)*d 1RYn+έӚKUJX7U3˟EA}lŪe6@@  b b4x2\>|z^WvB{3^S׺Np^kέ㜅VզhW6rw{xz=)@h+ !daYZC.~mQniڲ7|0Qgj_J}l;8Po)Ά>4 @dtsNqОgͷ>ǻ \T`ыfNf7(pu9|]͙c{#(h1 @ @}6yn;*SHI*Bj"9̻&{y]4գ7>Wf~םZ0niMRsTH/NL` @ `/9ywVY-tkZJ~sGCz|z[cV-KX+csSTWu6kK2"2QiM b6y֝^]k׍ʻK=U**MVK2R.ZE9}v6{i1m]jZҌRUJ)De%dR*K~eS>-у$eͮsuκh%lGNl8#~:n5Yߎqf?L'@ @ojȲ*d.ܴn3q$ngլNKbS%{ߓ\qM(zOk=R͕zX_~=hE'J]\YA&]ƣLk4>5tdUFm8ʋ+7T+K-%3oU]kRKV=cNjkCiGY)s󝧂뫟CX=na\^ RgOA5F|-P_ew9jWM;暜Q}rUh;p_>|+ng<%̙uӧ>phss.SE67FH[W+8sc<=3Z_FJ^Mz('.Rǖ=<}<=hr7Z6v"pV-:jS٩}vf2UeYN\K JN*|y.!~O{ k#;1rt݃:>8sVL]*gs*-dY*Wdnb b&@?=1Ms*|ZW3VY.+ӋcSZg EWfgvZNDeSBWʋ$ӟLu?CԎvܚ/\hُR]zu3&UWZRvj^l[֢3u[ةZ2=Ox]wԥΛbyu͝p뚫3UsaVX;I>7~xgpa;_կM5yĔ1dD׳<K}*D&P&@18{N]n)E=Mg_811YGE) "J cMQ]e3>_Q=:f]IzTQS US-izΛ$Iv3Q]]JM$[VT *N5-eBHJO<侴euRVzseOv--m(JƬi`jKڹW+n}1Z^.sLyq9}4/sw@ZH!]M&y،l-nq沯Ets'mi9E: Q"Z 5ֽC^mkV[ʝ>]3n2,#\B `T(U6-N,gF~&[bB^w*<=UÎ+mBePW:IPڪ7䫲anm J0 Pg=iQpڎz\~-kRqXl9]O.w}Ku&kSuHS $BRee:̢r fnYmSE9Hr3PQuVE 6AM "vty|yU.Y!nm4kqB.N4UdF鶫,qLں[e ⒅kYknpwBϓU>^Ѳ+214E8,:"=YվٛG\N{UǭJ1؆( -Rd [ۏͣ1f^6%fF$sB̠YUӲs]0 &\Z\_dL)f{!f7}6_w5SYŵUUYe]=73uԌybv#3]ё+fXx?ί'jĪZ'KZCOmVg ٚ5![omjbїxue ؒuU̔g5ziW:7':]Uˎ:ur;ês솅Dq#$BGVQ}cWQd.ŋZ5yrhgg^1ʎxGo|u?=%[V63fH41ӿFBwwnlӯǵ*vp$FJdi::qӏ^|{sF5skb+b;+ɳǽy9mIAJ1ɚz9j]<+htU!lNZ`tafcʍ4⁳G/LJ|TZ5%TͲBLSd-.ط%ؓ5ˡæRdĉV bc@$::v֋oV\fwtr~.V:2.8n.YX͎hk1.Jvտ}ڸm볧-%\s^Lݾ}fƥ<;9 o-^,/B9T,ųXҬ o,4 hxiӛfR-zlFfR&oSG/G=fl"#o %$4W٫#1e;Y(62+W4:lt#:;1[G3YfzseN8dًI8Oy@ԉ``&!#8Hs3_OFRثRulvth;Ì:dl @TqVR* ˣnsuX4%y:f2h]KƣVi%:f'w?LkU?,iÑIg]B%6aUiUg&>zuƧM_5^^Z役:stNg\Y+6ٞEֹgZγV5vkD-d=y55(&: F%`Ȏ-@ 9}l|dNPGDWmp%܍=mbZFlӺ23jqъuپY|| FxiP+$'*싶M+oEșPBf x8O;)3:!319t5!K kϥ:o 鞖3;=QY٣ܘ0JCM`I5f|֭sb)[b6xe8Ne!Bq2c8&(Nv񺭁TmdB6AI"^OOA(D#4o,i󶞼 ^ϯɽEz{κչ  J2# J0lewn~̚!)N(џLbU9:x}qҲ6m~/LmҘ>F蛖޿q]V FbRF|qV]ب5ltO՜&e\u5N\&\تP ʕ^dKN}!F'3ԌIT-!Ќ\%||&zcy].:yٿ,n㨍vL1I"5I4ЇJ+y_4t[Aݦ>f:i2\2eP۱kqED1g۟NxǫOMJ4uH\EūB ]I!["IHl>GW t0peEN]2_g:nm#7S{qR7.ŲAVL,qhJ A$n,iօ7>]0g3MiKkK^#PJ8@LjVD,kU yz̪|NKυI@.v}5wy}~cLIWw!o )E(JT1RjґW{!#4}g(CD%bJ+WKO+ &3doFtr걤Zabb!ͫ7%ѯךU-Ăj*ÿУTҷ=|<=X[q6*iC"(d'"$- yyTnh-|z]fSn'dZ1Ky} />u_3\8 Nz8~GLP;iHvL@`SM"1`8x`q/mAI}E9qOןơ^r2U`JP,cBkW!$I)d+bܩir+уXJ-)~tc>&ĂVB-K_?z$. h0R)F@9"ʑe>\z\;5P:M9u9ɮsaOz{qҬsq6ȦN@gm ;\$8' #R#%M_28ІU[j,#"˟P=++| g!4n^䪶 i5P$ϮYCc`Wr^010#Њr3$H ۀ29# ?ӯ ,q=ی;G0O,, 4A@83s3o !<5-׼ 1?430D$a ;8cO4 ̲9G&o4 1ͫ?8<3w>9? 6 8E Ǡ~ߙs,< ,/1\O8<:Հn:,ӽDb.4'8+Jr<<9]+rˑ0 <8"CP/ < s c?2<O;x7}000 Á(N5M0ϯFo<Q!w0 # L4Ҏ +1`=LѨAuM 8 @h  Ϊg0[8d_o|n00 8 whhtS/-ŸsC8 0 07o8$ڍ"ʘq{ T2ѱa0sFsrљu[ ?Nz2"8fɒ{Oc1+3vzM|"D:I}KYaLω` 0 G+(+f?)ŖR+}0q@{1'7#:w4VO0 $βէFS4LBer JeN*/ =A1=$l\Ӯ@j.檄kz%eqe^PU콹4x=3` X?Rʺn.Z׍x)y"ř?21l6oW5O䐘eނ͠@{B2y^%kZ*ogxBVW`h9mh]zXX,нP,ۍ44&}=fJ4E6~JC 06}+n'Ui1᠗$ClLE՝)[T@Ub̶&R3[gXPB =J(B41|xs}Px蒲@[5"J۲syo#$;X#L z\,;tEfwҸ,=ěeӽ'O (7=u~*"x(Q$I0Nm5ͬz hEb0?%0+l2ͻXl RH#rA/TmXb̪?>޻|P:}f}Sb*QnW4{5\@9I{;MWjMxs1;1dY~>r[WRlW2 UսKzrIv6G'1gglOrm"(zLfo`Tx0fbhmNW= [c3 $'4jy32`$^vԩWW|[|{TFg4CPaڝ {X6]0[Ö4W`'LqϊJ.,3U[1[v Q!!FuZe$ eQw?ieg]TL-N @X-nqBٸGV'd H- 47O3y=Q ,swwF%"wXMhO{5! p:;K(o;1O6`.9I~hŶͱ]Yqưpmaƾk^'y; S!",`8t侑5qGZw)Ayw/<^?Oz1tӪ($S]n91#T2yJφ |R|3sJ(]U+G{a&Pd>i6ClR|2Ռ7Cgخurڛgs.3uo=p,!5bh-?KM)UzUk81ְ` ZIy6 qJN-ե5ymχ7cl,iX .CR oz⯫y/R褻kPp20%˄c`6HapC[q7C(Dz0DG ϴu{m[˯Ac" i;?vGms$יg,h?(sc}^?Z׼s8&IGhDm?Kosy[r)| Cq{د}4} /{ePE4]s։* -?ۉ붻]:+m'Wum}njj(l*J }mKVT~ 5o|YYLPK,"jC*6i<}}mg*ޏ<2cs|㐓bI/v}Hvw gM$YQm<}}}}ڡ, 5`na%mv}]}UhQۼu,0<2}5uSU[-3lMUQ }d[a-9qLԻƥŻIu<<}g}mD#͓[}3qԗq[\^|+ (ŵP }qqe5=߷ (Bt597=#a*8^ȁ 2y`Åqi}<887w]Գ=xQD\}Dr)XI 1ϻ( cK<u6YqJ|4tu<o0[$-| 4&'=M}R&ʨLs.Uij M\_҂B!wh,o3g]o4Q7u ?o.\o(iˣ&CpLTz7ʙqoyv1 ԄajAĕ]ȘYB1/&aжiv1$J]I1ڂ#y ہ+-AiVmmRYY̺}S*_އ #׭qrBv YR̿XB=kqYH8Dvq%=j1 PUjץ0,#>!Tף,8Ns|i,:$BWpہ0NNʼTrJkY?4@K_oYa @1沩(SgaA4Q6HwF!J`7pVhָe"֬jO>$,JdLTf9BV;(L\ h7 6: /[)+R1.?`2UM|r*Mѫ/-?H@l!M*"% d͖<HbģHo몯H^nTG[-9#%9I"9MԾtd%yhGN Z`˿LJܘ1 3Zޥ0ږ[z hfɎ$X览N7a./m ՖG]8_:)]`9xw(F.&n$6NJ?[^F GYdn΄΋9>z nf`~@lֽL&".qj'1q8hWݎ's@;B ;fdBy|q=S$`RD>]F ig ^%"MHt4SIK+fe Tnf/޳tdy%[1!Jdx'@^PMoxMS{TPfB|^*}'sUC-JA!AFx(i؟.C` \nx<졆|nxYPd(n`/fL#2t>#DũE^?кq OmNkoȚ6Y?7*&-BA0QRj`鋘LϡL61O{˗&T܊TΛ7 q5tfԯ09mKxt\6j0"4x/\ҙ UL}%jXƄ QYgк87d]G#aPJHrCN\xKg 3]Jy1`\` Ә![MͅX\ΖABn %̃rd@fL*tf]>]x*G~|ˀ`1|>;;_`GEqIؔ嚜 o3TrUsqǣĭ`FC1No}~`?52%f o5P  B楩I<$̙G.4v|ͬa,U+)7v1yP&_6WcBa1g$љWx5G!TxHRbL>}UȈ26KNV_OAk-eT~0 ""3›O1Pg(>L<^F,hF㘘ټËlauVGW5$Švչ6b.3N?/4Ow!~& <~0"1rvb Qf0U5Ax=Fo3S1z9f|1/&E(q3dq1&F #(Ua<DM@Af.gI똏fnD$;2?05(B A) >0Kp|~ED6EFZFv癩>Pڥ0 ӛf. Tk3mGVc0Qf;,ƥT`B"ߖ7*s iN*3("U FbqBbZ - ma_\X5 3.(drb;R`@58q@T&bfj\|{Tӹ$4AهB9itbĪہ̮D{ud\%jc5Ɍw,Le"m̠\xꙮkC ʔLD鷕x*D1(~?P& f&3Y1[c`J LzARspa\|t(TWJlKT"z 3 +ɨ80&]>Mg;0Ll&Ll61Z { MRSn(-=:fP& 8]!ryI'U,ynX\ n?sB9$̈́ u6`6/Y3Sd%1)w< 54QO8nYSMd&@k&<[DkcQ>&\ [%N:VA g08AyG淟R4qډswD:AOyDm<*\Mg3zA0c"țDɄf. ,jH#U6;U}1M 83y|kcBk889?Lچpd4L\W 2g&SLue~2-2!¦"Ӗ]:)&m;4bA?0k8d?)}AkV,&E(hڅ۸2S5Aq0F"UbYө䉗JF:6ry.6CMw> b&'5M{P|]T}8_3P,X Bc{A(7g9кӅr(55HDRiS~I:M_Ǐ  ZÕZ-k54ZV3Mg2/̹ڢiYԊD͐c]#6чu>Lv"pAFaJh]Q,MFfܢ&)>@CG(X%ߒhF(m.U?i.q.مw2c('kXIcbZkXD&#lGu g\)KlP#B`P[y}sR(UpAn%MW>fqԳM/|5FOm?ٷbx*ٚ-X9BP16ճ0ԲPP^cuyLF*e Ù­ -Ar8ybf&l$>!WQHQ.TIL ,?y"zmճ65Vq|L_"Sgϸ 72Ϸ#5Rܾb{["R>#9&e0Nf|6s5 ]?3:`"Γm@'gfLyybXq #=7VsE2%ĠG,y,n~"T~ _eXt^Q70ٝA7%ÑAf%3Vr(ij7@{_a_}od橶bdgGGɈlw˜' u.fYRh96i[9!>2p@*1&ELf`B~TM3F᱂\N`J AAH |e0sPJ|1>'L1L t nLQ cqsLUIQu4^a )u; о`vNbJP!1&Œ,.Rݳe(Gb}ޠ06mŒ`Q5ܙ#[`hP 6 cu 36`־& :3>SmxuxNMFdԐ9$G 4;++!>L(bdGRG pgʟ)3cܻ ~e3Hdiѷ)"T??ŋU"aENbw .SP@@_&l*1<8arcj/POܰ!48v ˊ|w3PrՄmCju594"~Q:LA[&-ϊc:f#YQ)="T{ajW><>D8[ǃz ExF6IOb"/"e֜965 &x&c̍h ~X9|K`01gm; 0md<Ӏ*3 >%]%Ӷ>4\AC85LY|@(vu{]:d5c::VzjzF]g.1dM3]bQn* "'6Vӯ28 e? Lu3IcaZ|T؉fm5:gyd9Rq:nǗ0:6ZvsB`G˘Lh8Oèf^Jk깠kMԸ~"nCop&. mS̹p{3b\ML;1|op܍l~_~&7<+\4g a+2 k_ߙ[ S7"ĚU@ѬGP&=7]=(!>cdːa,:~\r?i>ij28̵=<vm<)pc `1CهX õ{0t91 _`'cQf(\ehP" #YA>Q>yzS7Jy 1X Bp8s,v|G";_1+ks7#LZpڐ ?81|+fB\OB8<aMf*ȃϻo~5yֻ$ïb91LA1{xU5") E`+byg<\_lZ3aE c`;O0f,KNDd0XHN3tW3 OlHCaoUܒ&"Pه[2 FZW0'KWOt/ A δ 㹇E5L,JJ6DmZcdtRf w'1h_bc|ith\h/{XWfg`r#v=s<\ĻlkRkaٚţO:[鿿ogʡ<|h1TqNau3.,Y`c! Di3qۙaVh~ˆE<4бWf A{g2rL>8ljocMCAMO ';Q|Tv8&h5nqW IUdO\9P6y<fG&OT|8А&-22fp\tl~4zllCq] L9wB tiX\Fܠo~h?y/~AP*~ OãR(q` SfKN gfE]4hɈ6c Bkܮ3p=; DBAg0? =ˁS|Kt2ci4F3gJpee˪*~qwՐۏa4b1}S55 Cs EbE˸Q#4yCv{L^%XЈN6 ǭª&H*qsWv+gFuAƢy)MfhB2@PC '%}k"Lϑ9"z]BUΝ5@9&5';\>%H;u tۄ8V`zo3{@>'_l6dG+f:;A]BM;@D87"u@r2}t[ ¥4ll&>r!\O6&}n0!=`8'pftؾ=k1Yf(|uOrZn4(cuQɞ /L - T؊ۅ<ZEb*~&vߐ%+Fa*YSFM7/n&d5&i\>0@c"h#h n` `8 >=Ȍ(u`RǑ46`4{&R(H``7 abo"`ݻ5,('7j =5f\ '``g1|L˜"Vi[3HbT1g>`|č米?5_r~IjY 2p=kX0L4jLP-!Pr/gQm37}魻N}Ri`C4ŋ6,]R=ӷL#)(eF'%i&0L| 2UOULjliIP|b:}Bd_]vjvSCWe5$Q0>6!1A "0Q2@a#PqBR$%3?l/;?(g=T3iMm#D =>J~¿h,%_\rB>Q_qSMi3*:t(h{TR|aYR[oϧESFZ5`ܿ07a_8")&])5cbzԯF7KGz(JHP(F3X>?T6ʄJJޞJ dͰp&a)x]R~7NɘY18hHRĝL|2~#갢Sn<ً1ѓr]ٴq'>[\LoQ`צeBTf[ٌxmcgr`_ؾ!ݐ660-EQ  Ɂg@SC^&\z'Q8B= a?)?P:U?N@*>4}BrgX:;\N7jМ QK&ZNܯT6a6oa㸍練0d8E+`rVuhhhD3q=x멯oݙQfg<x?ӦÉV2?=`͟H$DXt`?TEeS'5g !{Aw~O2k'%8?6 1bmxls48>Hx55T[|G"0~{L`KPT4oU1c6|OF. >"De? FasQ^ʬrMne@3`d4tDDn8?2VC+VxHLeV748M* qU?M7& r g.Ѵ'o&\̀]` MqF*D,hA14l"\"@&T.f<r.2)&}0i#Qdƃ&nD3L@|@r"&#ɍs Eړ:cHfvd"G*fA\YB@S\X Fngt&,Yr*E!CDf mbiwd49Аc2uPr%&PCLlw\EP?1BSO(7#(☎B V0h@0SQrfn!kv?uw5LT!E "+2%}eAv`@Wc͒30+26Tc>fn<RT(9ֱO+n&W˦?UDZJAdQ`ZBAq0e*`"㈊Ld0X36fR@, #aJ?a 00GQ B% jfe WώE7iF ӏ(2}1:&e3A:%E]DPT A(DF=YTUm%d EPy<@ k mF^ft *Gs\DmšmAK列N2?gI8.0#%0 Fb. .f(FqV&P:vhtCwb-& ˇ#Lώ&#E!Rp'Og( xXX%,[V`Y LX!65mG],|Y*> i )4wdDs\f44M5Al|J8 f 3ןfyeSl"3]1X̸O+s"saWqR)yTccLCP, ;qh 4}y!IɴEv{9T2EXٚlG&@&W,j 3ǽ@j&zG&bLTno'cƘ<OLx=?(ؙȵʴRZ/R<֝Mq, nTյ$Yk] e`.u'V-w!h cOc4Y61&Rǁ1)4bG ,Cs 3'B@+1bg[Q4‰'˽&, o'"T5=`UvOj?BrC 8C XP ɤ:kȌMԻ1&ogG[@@aQp34_B QP_ hVbb C:c-h.!A ω 81J[ل'&)(ۣ,'X)\A 8D=Bo]7[{1QCP3&#Ez/gܻc~]q`QRf,eT ͤL=5#MC:.1\PT-8w Gan|c"%Y0LMٛ&L rsSd8u+W/Rè@E\\٦զ}1zQ,b~;"k6)F:YWc2TLnjb6ۓ9.><~1,NEn '74o_(*lD+u wӜٕDƼ@G3(e&lQзd@l. ȪjÓlUٔHn!:l"fL9v5hIu ǍL-o7:7EK.crmը௙ u3c]XGȘS2}#XZ?dO)f!ɐAbfG8T3OfpiNrfX)4cN2"F4!ʕL֠]ZŇLɷ%~e3܄E؈a/D>zzc=5V>L[i'b 'C>R#I( eR@9修euaFt`ŊSN]#bqk 3 j75lU*n}jOMWfUT0nf"!%zːc&gڥJ*i؜BV n|@7:0}bf\7M@9@gPМ`i 4j&p1m5?Qfk!ְcd luR>L'м̄&*}?툊怇J 0MfM) NՎs;)rlT=" (?9ɅZul@;%R&}: ^yVԛ# g-@@PRLg94^C>`&\.G7gйUL1 *: QDsAjqDl2-4u7Eox`܌c˼/*'fd*9㱆 D ;da:K2gbeh4{FҡgL |v3 }P ?tz`Ț&&o"{preLB$5fl L6وAn &3za)ϑŴ(ϩɄMQ\ޣ 3>=v~n ԐVPTWLĹnt̛3W=ØuqyYؿp}:O?g'ŷY(vf ,gQ9AL^?1!+n$֢&*`հ3$Ծ &5)\\@:&0E!iS3y7/URA<~"1e0YFNioIB;?Lpl=1V1w0`Nd`$C#O-ϙp!vkZ˹.fn|NɁOBdԽ(݇_-l3i0FԢ7+fLe9*D h;Ob`F1<"ڑح(E`Owֻc(VUlY{slc5UGESowѹ oy0Q{v剷 lsI6 FƖ8cimJIΓ 7TQsQ9F $h1"U/]Ps2+7s73YO|U|ΠS vcB=Tǘ>aۧjN3(côRƣ){Z;_@\P#؜gK=2͸1-qs:"1+*~`Ρ r"6b&mη$j 6>aTPŚ#1`R FD֔My$fI`ʻC3. >aӱ*1%g'i1lJfxjPðvېnk_%8 Q)RY4SLoɧ>lhđ&*&"ϑWj 8f_Xv3#B:;116&@caS0?`1sR37-b!q7Fa+4cE;S&Z3t;rq34)jQAJ!}c]@>`E3w]ҳ/8pÌe\I›, "1!cjTfb[if_i~ߨ4=ndY(L5cGQ ̣!5l=S2w,π-Fk6&wľ͆,UCJgP9cswbPݍ&ǰq0o*`C ȕ cF+/@B˩5fU #62‰(h۩2b`m4xm1V/lZo}VjiT/n 05w2Ʃ7b`<> 5٠%z"wv.n,LYWjfJ3wBm(w@\D|)d=Yqs?=f} s}&W4&Ĵ Cj}34s\m 0 &, &Lm3 % LTʶ.<x>FTLP"u-8 x (@QJy̨ʂT7?1}?n (6u^#>eh@Nnf*I<)aaԛ{}֊c]f{ UGT;,ͦʠyӌr1#nZE标80a+`DT\˘O(ٔa7`N[#6H#[YIU>'͙(M:.e/ONfRk޿> aٿ`G?~!^a£SP)cPD"l& 6ȇ)1t&zn|0dAc#'Calumb 4 ֩L=fݸ2oy.2I$\@=%?.$γc.U' &6yhc4~DžYz<fc@X~è81]K n DRk Ž &QbƣP pэZ:ljX3ʕ?ݎѲ(G` (z(PԅB~`kS6xM,bmwQ_ 6rMp{CdСG՝K cmؓG'ӲTnTM4k#Q{1O\GeN(QbsDO{h:Kihc'\?3(PBgmA)g 9aTq%#8N0m^T\cXQ%…^(/au9羳:o=3 =n-~Q~މs>0f' dΟ?n:cW=vKCiREd]|E9=(faݹ[9d* 8۳ݣeJ0}BKtLdIPGcGTıa+6M/" e'af[:^ 03~z?7*TqG Px{e`Q+yh'*94omJ(1W/Ɠ^+LJӓNJy-_$^kS h&fn!fusB'j9pV!8 0(蹦*9U4Xgc{ZUVӧw=Wf8TXңe\we7D ;>@SZ;VjgqHjP9 z#"bȯpcv)(et+w4gQ ,{ Ži$5EX:m/\ntXG\Frv~,Ԩp5! cL%O*Lx yŦqdGh 7cnSz L mgZl0G\dSݼ.UiVm FVcNH9dעlUe^,.I&Q&] mѝL/賀A5aS4s|CQqpoIH;|e_ -!Rb}/2tu #r@Uy6Tܻ0Phu]Ļٹ_@lrLдt#T1OS76~uwliΧ[L}LLiM9!7_O? IuZuNv,/!P25䷴CrwhcVI *U5ϢDiYLtaUvp}:'{?]fmst' LzMVrMMʮ0uFS naW7Ԃe Fk;B>Ƕ5D7w2&dK~ُƂڴ,;2Z{CX S5Mh?-$JfID£&x,-q#DQO2tj@GI @!Sv.2JvY*d &V`~#=27Z,TrdBCdFW K Tz;x5qTæʙ`;*kHQ&\JyݳKBt fL :|zt^c;`3 +ɀ-V;t)>au?7Xw`GRwAWHSnNeII*pU)ai0i8i9ͧPѥfcXUV6zy4Hg]NJ<-=֪xbS3fYOC. Py֩+kYZylg 9j:D3d\އoipwa6@nbq#\A}#R5Bl p2U]& %QΓ~3TLG]BbIU MӒcl*T&t9c=eC'~:;6x5@M4 [BnդM0I>򫅨VOt525j=wS1 0b L{mkEUm O *c T̸AiD? N;Ӛ`s^ǀ檓N|sPL:6HI?Eޙ'sf2M}'TjhhwL)? 煨 J Nu'䎉 ԅB4NU|)Tm<8B0k{2`i &KCe~Mޚx!%OA!Wk|!;T$S%L;kiTxG ײ4AL&ТJ.#4hmGhZ$4LtUeˡK*r{:s^D\TwPnQ[t\5ee=UG7˞je0GC,T8|P}(lsjhvwdOWgUtr;\DM)eEOHM >Rxs|BM:M}6aFbD eQ1[߽?P 9ke6N|hyD:9jpj6?ڎ-Kz*sDKay %^цAoyK)4nj]ˮ78uXjz5"汲!QQI=75iͳu}Ձ;V*}!TKC8nys]0etPmaS`CT*Tvb:ױ9*g<L0ʧU|!&eaL'϶DM$g53ZLk)#-S'wDcwE{0G;Ii#6?CrnC +Ϟp$puC=2oY4t 4FC9/Q:~'ET\t?T󯺰u8{C3B+'^XdamZZM<:}imް׎D+rKanUi*e"ςZs2潤CsS]sNRζqFHh4asۍaxJG9 ̕"ks7u)ѽLOE>>.suU?&hTUy}T!@& ?%̣| K]yoU#p#ZUDdNl9!R hNNg0[[o&O@p/ݯC3ȦRf+9إM)džA:J7@ˌqOK y]^3cNDѠqkXX~Z*AW,&קk*qglamFtqJ-'B|m>hwk!6!S)yBcW NmUZUIˈ.Ϫj܌~vFG$Ba;fVm:k x]^GN 1t /Tۓ@h+¼rW2gOݗ.Jxl"y%MzE1[uy,s-p,MTo8xʯ k $1Y:ȉ&̨;ÃVߧi dˠ "9BOȧ訸; i]c-{p ԉZ°1gif2nv2ZCW5[Pup|i ԜRʨX}I4w@Mny'K):\全9O%KxA Fn_٪*&i {%.*È*m &gR$Le" .$8OTT\*H:~F_ 5BF1ͱNrk Und*.|sޓ=Ld*6x2 v@)I/S5=%_ACFTثZ.xÒכxfd']%J܈#Ul4:({.|uꦵ'j{a~0r9#U4!apAd@ȣ190&hM_Ē)UUmsM%d 3o8ɵ=k:T*qLwu]h]chʓK9:_ө41{y.n|-@Wgl(:\D4cm:d Ow<_T8biS{d.ڃ(!UߴUMo7LԨ}mp:O: ^5*|MSK~`zSm\T ]& Mq+HTK YQR`s3΋ "'NߚܷunKv2/o㖍`vl&iA:VmE,9zg`̞>G^IwyTШzOM%4&@*O4; ˾*=}Bk?BaoA6 Csns M`Yy,"=S3{qn*'ڵrrՊ||LUHnJC) ve1/-ѣ@U[Uȵb*omx`n.Ӵ>*SLUZ *Ea6L\UR\w{g6Dhk[g)LdeW02BV5U6U,— cG `LOU8}~ K op|4q9(\~_=m7CdxH9eMl*ᕉ1Թa2D(܏TaBTUՄf EPC ?Obu'5Hk8G$y*cCrՅrM9Nyk>GTXdnoh4Xj;]9#YM­2ڲ3*joEARzeh@rküOWwZoU^69)'Xی;kߒcN ]< s'{lp Vi3R[ T`LE^ GS: P L}} (႘Ӫ}AlwEZzev#޳)Ȯq}C{bSֻ;IT}6s]:y)\ֻ{`L;%{zFKO}Uv-oHhQ2һK Y~LeڻPrDMwbby'rcTL$Z\2ǸT+*8Qt8]R)cAsdxDz6CDagXܩvk̦uQsdPqa|2ۏ`V w u6Fzho]m&wtX|>!<]Q1Z\ӡ݀ aȄ[qasUM>XrN ~LJ 0H}&ɨj=ʿı ^_> us{39+Z~%iv#03uO_תUeq| f}eR:,E ۗ.{`U\@ dgM04c6cj R3Xl@{n5X1-fࠉïNg~~wsDR:(rJ"\yŻ_o=ʼnZ*ѻ.4a*1uaouُ$I,)c[F@^ TGR&Mbnc\wMw*vVS6yL8džjvU ԅ@Mvy{D3=rYSkC@V@3QbP!q|Vڎ#Pf2{F2}!pT{M7T{F\L_0[5ZtTgi]97Y.ըfJf,s'D:6Yt}U4q-4cB>+ cmƲpvmh:ZGf32'k#o<'' _Bcd'CM#fp5k,;OV=G3Muj\eԕA-e1 ʬ4l9l)hÏUITk- y޻PŹ}ڸ50yQ'U2O@!T<SF6/H z7?XN3 BS)0-9s!SiTUw.HҚL~)\eT{Fly*.,Qp:gy. h-O`]}1ZPkP t:rXϧ^⏉8CM2c-&,y9MvXމCp8fmJuY,tHS]k:&x`!ۊ`r)lKS».R~~J9iuuވK{лO]W ?"Nh(uBJm췍܀sToKM.Cyho6{`CCvYpv9be0U??D *X~ӡ_4T'"ԤX㪥JjtđIu)w犏aT @{6X|Ml.rGf!V3+UȔ %Z|Ujze0ֹ^1OT>0 %2HX'vN+Ҝ!7'hp8+v.,R=Qѻjxѧ'dMH?HnX\=3AuĻ>^G_m 8\K@XAAk" +YsUt5vi?cLhI_5 <)JC /Ak\6,0;&)s h&q9SKU@^5_,ͱ$&nȷOݷڧ 7u^G89y m _,Rg/pjǘҫu0\?J]#\w"b=G%γX7l8a-[QU}r=B$h MUJLƦGS3@*\"B4E /VnͩNw,**Z[V.p9gpXgյ̧kc)ou7Bh 5U@FJ&,~t7)%37 S@sns)YMtn w4'xisWXa>o%kV}G'TU0vg J~lp*D$&vgkTwU%Yi^!b\xF+' ! 3\:G5iDWhGO*iЫwMwD|qvc*5C-aDjp^k V5 (7kKi7ywYoTʨ,B9rriL]60QR *`mVaY.e1R뾩Yn5c/k{xuﵤhCFjپ冤Vh zPab4^eRbgB 4]+_񓪜SC9[QG:Q`Y+Qw̬ v@ R,^,. 짖W _yDu๲-b>.$ )'}^'. {jWR9hb(6IVh ӬxI6Z1U Nm.ޣ4E@f>Ues-)*3 u=UJna 8:~K M-ܰm̧wd+I*imw Ri&Uh>VysnԳ>"2yNv%Pb:T.a5T=\S({*G^EhZ>G5هع өrU 4XC_Ul8 o5 Vو|uDasuDO%-0n5XgUpK+#2UiR6N 3G uBײa5u9gIN+*7O$H0Tn{qla_4O@RÅkXItEGqpyjihOͭ'>IUQu6,vg)Qc~ùh=Ή*}Wq ~ձ|UEYTqW.-y&Sxl_%in&v_y{oTG#%xy,E==ځ}C -oRHxuk L%昦A(qf|N7%Li-+ j#柕O4a_n!'(o9wK{ UOV絽:wbsAbUq5˟$r uL '*75n MB- /u:܈Xj&QNMyNH0TOUJ U0u[$o__ 9hqftY'J8; ?A2F2\dYtWh^ke*ƅp^j +|+Z>DmH B]Ty,#<=s ֛MٔZHsPF\8TiK˹NӅ:h(H\Jc&tJ}jnlo}CI!::<5\wBQK"3Qp51:eZ=Ät*# [)ܺ֙Jߴ?6hӒTkZ*zu|8GSktN|62f'3FOڵҝSH0ZKnj=ڰr֕!U|`1è?-ph >Jr: ~M`ۼwC%(Nn{ h ht]\0tL|~Knhø.q7D G  jANt#EO.`89跜1isCUkATiSkq#O^L@y2E x',(3 JpM9,Q蟲aC1L dWg{x|;vbkd杈uVaT׫knK ˭h,q&VEPf3RygbP2rjS]G>I"AG&$.ϧ$Yk/r{s4ւO c&5 h[(u!7x*5&89?>wu$2CR5F_[>u*=QΥiH=f.4l@-}#54@ ΉO0 l2?ҝ#0iO̩>. L ~X[`L_iAAx[XbuY8GЪT&gp9X٦:&yh 5%pRG%8&jS&LTXvjyn`{<5x4Â\9kچ4Laa^֜X.M4íf%;`G2~s ƛ;aRWm7 y"b0,hSmggԬ\>X:~kVGftRGyoᕼc|װezER4GUFPě.WX he< Z>NO85L5Uꖵx9amٻE$9 PH7~JmLtJӣZUS*FEauV.9+hȧze&73#^yg 4ˮh"7k {af ?ȉ[tZ<-XTʹ q,YXurr=L#iӺj~fL--jkRDwGkRѧUFe+w/E+ O_ XXQ|韆Dh Uw S=2 X[IRL1a.V"lxXZFWQZ] Ht9:uGV5U1oJ0Ktb:2~v:ջ6;Իv4O5 pfts\78S)fD+y놚A' (դ$2YC*9Tu*bXG \/<P hWejgiemmf<5@u 2Uud4i# dm;03 y/SA@L1-Uh0sGDse:CYV͵̭p;Rqꁹ->#Ś)wn(X!^UfL.ȧxx*7Cx,%?*|T Ҥ zͻFJM5?򫦣ˀp>{aЅyzMZbmn4 QʂZV; pKNTr@*bJgFDd7Soxuf>eb 9`\ZM;; 1.NCCs>KXiLW=G1g-q Ku[<|a'U9fF){DU*ݝg+HeJdazDiZu1P /GCD=ե{G%"oCJm*!B."J D>J"ᜅO8ےy͟{@~C R\rS=!0ѧK#yT!(tE"hF$y J.*X\1{ySjATZAy*7,I-p/ ȱkH^U 0<5?6g.7,'{]?!°檃!c/uLko#]"3թSi{8F)u6{QRrjh^e`mQ.k nBZ.Сu wcoVm4+ԫj}793 wz|,;3!'a\4+}X OC:V: v&ʐܚj2$ƫ 75Nmi"K}eLC |fD?LZ DHQ-YLA t2tj81br`yp٢d*9pNLɎmAeUUmFSk9D,Vm+vMN +߽hsC~jMu f^7%xSkO|K`&[%G 25 pH*:xOUP 2ElЎרּ`AzAne%By&O2N~JfsЧ*urJk*}"O>ES9,8;zhUs-$Z*\ ᒢw"3Nmi.D[*jUBրT8wM#Q‹]}HzK]rWf^v4:j[}\5ge7M; ʁN\f2|YaZLĪJ5y$E9 a);҅[kKwFs|tXO>"%od.wXi TV+Y= YI瓳w*.اR=5V u DHIMl&G޽s3~S XpZ,N3.+NCϢ6)TkUCK/y[~ɞhb*Y!֓:}\;OTЈUܟe?Hȷ3AS0 OHd8c^e/+zK]N*0}BDDfh ҷ7u0Ч!5i9gT}hUˋTeg)T?#x,h$xD4MHj]hBT M~ z7Jm':[96K ;o-Ӝa-)BfM'5W(;iWR4*Zs\YեUeGR9*g!y5DqNx}{MZS{IM7G$Ԟ8Vlߛ5V#JSPĿLp22X?mLx7fsM&%vJMߝVq3&"u+i<\$'^cg-@緸<x[:5 i>iЧa̔Ǵ) ei.:+U:cȦ֋DѪh>iL}8N}\ BVΑ$!s44^hwW>:xpY[gPp:*ױ||y[we4d4ٜ±sM9@Jz$cPee>nMSԂn\Lڊ/S57ky-s ADn 57}`.7-J^x)eArW,۫mVHUi,EKDTWf;ܘ@b< @ve`m';Xu:02޷{[PTe@$$4[jqGhy'g@QRx,> O&BgdӦ$U,)؆9 f(*f?־\ڔTMʡZ|0V0]:A5 ǻNjnaSΙi'h26Vo5I3dpH' 쎬*K^ZǫM!6e 2FɏU(Xch'-e`0SшżDesFt \52䫋*} >)o\Wm)0ŷyD41akUK'MVّs'!S\tE[F\&b2Lg iJ{p橐Y颖FSFDt 0N!>yPi) j0P (TELW%  OB{u<0oJ״Nf+#%a⒨Pm4¹M0aC۟А_wUUgaw, 4wE q g$BV;eӪҗi晢J*)t'876x`8uL1˄B$nOC^ Ѱ` ^5.)o/erlRۏtn3oBegTc̷{1ZdWg*WԈ FTo?!Ҭ]0px*,j2SCT+E0%9‡bwaSӼCrsm0sG<UҘB9ܴ6ho!&!UC/e[=*UamVEa`p۷zEIM֞+TtpX8yLaJQr]\OT0 peCDw-k{߂Ԇ* fn0حŶePi{h9L&؀ByVSlpJq98[19*!Uwӵf,R mv3 AY -%i)UTCa4dcc{ydZ8\UnU>O9?v7k!kw]!aiT{ƖP[K|]TYXxzsLT2=.e=Z\;v9 Oc]rW^ ΩR;PLIsX^*-k2Ui1%R@˪uWI]PڦRH'1>OӚCȏ /rQq,cSjwIғbpQ$[O9se; ӣ[ao^hP%Fj'?%/|*FnwWt=>LZ(妨TyVLNl>.ᕏ;CMZTAkcf]QQn傘3 ohdKO|rXJ]Iܴ 8Z+\Vl/a, ³bIWɐ\3GhEmrU|DuԢiRBmUtmrjԫW1H](˻q.s_{ɓ0u4Tj?OfA:a&_&\<=Pi0{5*Lx^4oq: xUuwM@I\Fқ1iz%Ps olUsbӏSM9AT/ʂq%RDStt鳆 ]} }ZdIaM"JaW`gtF3$Ð9x+̆Ɠ@ˉJp,6Qu>]Sh#Lp  UTS#7yP&zǗX9.VsG4LTmHnAE0HP̭knp6p*w901qE5Bvlvj3Q2\z8L!'9+F߳ly'CQwݪ'޺X;iOS\l v-Yn!uXhiϚb|d%bu'2x&ccyJ-aOjwU ;)9BJ*fLseP4fn/U-dG ƈlysR_=*¹5o$8jT#^J{x5CڲJ *MDD:SD+Sp W{U3s'䯜<x!59[7ИCEVRᓪ[ӢX3> 9o)/]/" M`qچqopS\hQwo,Ȫnm~JSdnNtHY57_|Sʬ{rΪH1$+ʛYCFaSi/rMw77NeuFF\uR 1QO-9!9ʧLn'5S: uTE&G&T%ZR9yu'HPiקCZC ȂE;6-_s-ks `Q)6!KZ\yM8-b 4fߺw,Zv؍&Gka WFBteb[Ҍ@sXb7`~(" qqOڌ{@sWw=[k XSsia^O-7:}REĽ%֋bMXGT N\wqf_lh ~zdW 35cNH^- m~^J%Li U*=h*99 dNי m'4 =^ . gU,})H-2=\qvQBiܲ-TNSk槌5jA`v] ƔSl\nƗD Dp˞cU:&Gsfc0ċ[2+[ leUstO0+Mw,M9җOY~Ik,|k UAg*ė.W,M  ]jaҜrȭNU= W$2FP8H,8L;J" M~92~RhoO"2P a0Y!b ơӉt*FNe[48Sʁ#00!„uN!B%JjNS` fm<[L X]u6=murq ) HCŒuV?wݴz*2tM*Tis=ѥ1HSܖDo(yOsH*o1O(CLӜ-v{ˍ̢skU:z+`G$O g/?Z5Maf^0o v̑™d1Ls I|,[%ZrWDJ*خ.>ISME6sT%V͍ UIU5c龠]nssa eisne9w'D 璥y!N;NkF\]uE"lY%1!;@Fn赘9jNV$"5:c)d+FY&gT~#%Vg+[ {<ˉ4JB6ۡe0 #67'i"sa$oz-vy8ndYRyT4 ?ֹ/oSV>U8e &2s޷-p,NAnV ՍCy2skþisx ϼSZ2o S\`<t9"I俁Nvd֟MJFن>*R Sj Zŧz@]Y^wPYZO9ALr~MYsT(Ѷe5. X~*8+-CSih]#H,*=֪n-R4PsGBTE=i'(Md2Sv:mҟ{@DCT`ys*d3*38JwB9'l/v* WpƥS~jwCvVzQEPlrofyFI5<&Qu٫S\Ot#j"'gJZfUzuTkK}+_^ jnq7wS:bGIW&O%yuBC( ؎!U(L vRӞQSgRK%We4ܮlQ'V3r` M,SN5`^ MpR'`*TJ\RXzTMVΪ-<{ȈJim뾉棄{f曊#\kǂJ%BoEwR匩;Uk|r@iV ''Z-'#0eIg;U'dNÇ!hPUFj])Nb&TOlL> V]᧽,8mVĹT8+XִHh:'2m uAµRT*WRz&419tKP8dUVXF7yhGvy/]R(aB eU"ntLl:k}a4Ʃ97~ =IWtF\NM+To$é7@T$ocZ eW]Nn5淘iXBo&HE{JJEك\i,>6uH) ND&} r^S_&*Gk訷wE,gz 7xEu "M*Y OIr*`yU5r^TAQP*+Xp 몴oBuѣOMU570莫z,嘒\5 _CA8g$3PcJ!90V"s`}|2M[f p9YUpYF\Z/ԫ{9J;UYCZ9v7gOk9ͤ*oI̪o:j}1u^L]MډT=}ٜh~r͒ʬUJu@2{MIw sn*,IW0vxO+HtUM:cD2s䍆hr4ө5\"~ix鰦SW!9R)ٷg&)T{LL*$#;lz|Ka{KQ{Y=Rxie}Bc n2X иsrVku1~j)\w! 8rꯦ3sHTa>IvF״r5wODi <&4 S[̑MBtԩb+:QȕBduqU ^o//lt+zL;,ް=NY"%E)FHx&rN 2U M-m2fJLBf LtswŎ ijUo;MÒ0zQĨ;;D^rr_(duty-}Ӓjb~ٽZfa uE2=9F>J/en|?p$Z69;ܿ5%O}Jgx9qpRz]a>jCi>ͪKG;+°&ꆫZQ@dUVdi)Akp{ ENо.l`)W) %hMb~ xvU٧~k E$^NlIth1NkɸTs6RՍD4*nžpN&DHPEc*7xE1D(vFS*Ԩ[żAAJO)>2d?OOvz6~jj2Y rw\RG{!ba-=OagQy"XSs#+v?6rN ouT5c4V7*'s)ﵤԞM9s0uIR$~0LFY}U;iGXU:#2:"DTd*dR{8\Ce \Z b~yަ~mGxћ] ufb}nG%@ BNNl#]5S+D禊Ri><>f\^zrMhh:(VR$ǂ'6jaVUDGUwltU;E7x-6E4Vtk#6SHjR.DgR}:&Ϣ;Ng%15n7\(maiញԞM@t7{ \;C^HB2kS97 fBe+5G2WխRi.{Qh=G0 ,‘vAN$:W35W7U#z쪔Lw__:d*] O%~Sp5^[bhlQs2/)z;5iBq.Ъ}Xݐ7؆7VT, Io8}GnTZ> hXpXv统2TF4hiS{-tX|S4ƆC%jЂ湠>J@@X;6 _4>US6YFY咎0Sja$O##$ /4W4\Nj)r@N e8l+Mkipo~d'5{ajw^9m&M♘3bknYN/x,FWv޺WeaSRc0%7uXLs[L%f|4!n)wFeTQֶe'G u(ӧ<ƪu3LjKIbZp 0oi>ebnT(!4 U*m8 K2Dv%:Xz6.rprn'z.h-JɍXی9> LZ%awj# m26l'DFK٢Uz4m> Ana ھ|+轌&g.i'[ ^Is# LjeW3B&Ys'ՍO N i-2GEA tR⃏vSpd+<G=CSi6*r]6V|%Xs)-M7`l] a&e;CkOC#AYiXk 89љ j NB;=.yTR,7{\rv(U#019?-$NS0=ػ{f::AkI 0|D61.:}3rM|D˺ǒrBU|"}DڜUZ+u3+w=C -Dvnlޙ*e$4ݪ4(lg,NY >8y.-mrjpvbvJC$*gCaC(Or2`Ach&.U{xf6X;a,Bu?X7$O8Uq>ʙ u`Ԯs .7. $stnvpgM<􅀾7{+}]֗d2uh_Vv%E&Lu32lXaMsT7o{IwlߖʂXSgx0Ϻ83PܜUkR~G J\iʣ"|s>AT3=>JȊtۉ [FϚ̔GM}(rA \sC]-eaj8Sk^-QB%5 fsu%]"NjRITxl9,}FcWg׃roŰ_.iuNU{&-N?못OF3F&i4UټMdHtU sȬ%}rjmQ%B*(PBjjZVHżOD:W8s{Wd2EUnL)%6Ub,Y==9'ɐtld\!P֖˓qL!hAdN nmV2= ִ 3 Vnג Dq#T{aꂵ BÚ3eSWxM祖תv 3d-B. Xa;CmXSaUa*yM I=Zݮns|FjDfs@?UfYP^mSLU;mpӲ %5?Ui!a9Z׺ R֑~G)X"ThwsR=Ld7K@]a:g%b(U^915 A'xm$|kZ^i } sN{r懚U reZd4 tZl(hOU0O"4Ҫwµ̔@s|Tҏ{: koV!3r&ZnU}Wd}u.qz#Q !4!s@~~UЧv}Ou#;_"֛ޑ桽Uܙ|kN¯sT #Ԉ]J%=vTe S&9f,Pky1Z r6$?6)%Fi=Rw& L1؆C'4.h0>h_dSB&sxjNܼhahC[5T\Cs|M'-|wfL/7UPjI?W4*HwQĵǝ:UZoHt41 } wB%ak4`v T4f9ʕa9}wBZ2V:$5EbL>tO>˧jkʕAQw?%<_3"LB=#Ȧ,{f]$;kxО\:Cs#=`?]NkHeyhi҃2VB r\i<7FIĺteZhRXU.ͱ)aMa=&ӱ^շ=ӏZJqZWx&TU4DTЪjMKWiWsD(ŚIUAȝ=L..cs/Ɨ݀g'e&:>9oX4.n;pcSt-DHF[7 VW\Z4^X& m h@JWS(_4{6%bnCÚzrXVRa{X*"X=1 d^2(ves̯֗&}j=א⪁.>U80IgHT]}6A٠Z e;ӕZE:O8TϮ;FliCϼZgW mrźOS-ہn碝]TyܧLWqƆ3h>j/ 'bg,=[LǠޛBz)D<5G0}j̀B{H>\JjQUhTTi~ .mQ]u<7;Oo3)w\-FJ g`ZoD)x)9#s.i$w^a9X߆oHj6v\:Ueg7LFp/n\6g}jRCi#ԕ x,3s(ViNf*Ҡ*E혒R%FkLֹn nR):]ҪDCQM-yJ!qCp#CITm[!ScZchvjv75O;WeN|әMIn'{jpdHdQ.YAavlz Wn:'8#>ΛUJ֍tySCfnW6T#)we@(-i@V_ ?6P7 | ķyftx {FJv,sbp? #.5 R/5%4Gf8wBKxMzmNצT.oߪkq M8OZ_)~OK?/~[R⭯_U?]OS<U[E7˹t*r }\= xk+Ѷd VNhZNIxfۂk- sc< jՇKG4h:Tzʺ]tD>aO5lMk/!T3ƎMD0uw5ID*uYXCr(3iSwy9pQ_JNFEnb&2u]>jKFlgihEcYלx.h=Pc]*uNWJH+{L9/9*X~j`溵7̥N:vs)4O3_ُ5]ի'+O%rQLsWeL9'"B| 4 jA @6y*[ʏ n+qWe)c\k9gaSAѸj` <̗@3UO<; N qDCG4uz5/ShQPTSOQL`J>HY:\VEd tVΪ DL(CvMkG=Sapzc C mV6&zKsMt8N})i§!P:sDv^V'kwZgMT}'3HJ7QnP" zJTY2O%Ul @ ,c:mZT fB##`ZuPŴQt0BR:Xw @,fQć8>< f"Y49&fgeU~5^]:e`7':u,S\Y[1ⷕ(5j? |G#.|gzefx8ukB?i|X:#A([:FY;1 j-ϒ,{-O'-P3£e'Q06-ZG%IkTꝘ[[S[w3fٵ)B jhh@#cJM*T䝢MJi~i |3& תcZ4().ˬ*iS>P4ʡ2<¤׹+| .m@AM2ܑ;2Pa -Lw.+0!krK[iڴd}L vТgEKMU vasyƂ:ibiu\C1qUjƊW8{IO ݖQµ=:/@:Eu'f#U DʬᄤrzØ_uW[!zUPQ2m%vχ[cZτB2[ݟig4l[MZ [Fgލ ˸Jϓ^#{?U$1RŗU+L E%4{QŞuV=h{E5 EBSD>aǪ:.ĶTve4vB湁j4RUèR:UxWh>^4k @<9JFD#/0 rThv@)Z<iDɘPB2nav=3z_U|0U.l6Mit}5yoT;2?D;63{;ٍX:Peʥ0Z֋O*0>;]Й__CtE>s`\@N*q2F6hJK ^\ײ59(kNcz*"sr~ Ɩ "Tq[>}"|!n? ^Z]2|jW^+FJ(^ժߺj|@~[Y nqG^_ .+?g:Q؃zwRvD3qP~mLj+UDi4ieg:ފ"ȡ =QԔ@lm0S"v#Ѩ]Tc G*g'?S5s,4 C pOuMaΌ;\c]6MNwBJզXNuЅu,{90@>6㩕O Q[aT ->K?(#jM+z}nޡNm-<|dJ)^2\uL'*:Ҏ)ky(wTtxX_ItOJ8*cʂu+N-{rPA6i $CBn`p2U,F\\^2sAŎu>aqշ8wxTj ԘVsYEvM[t(EQ71Qy-E^S02Oe}ۺ5k=l%3ۢk5脑Fa= qtQ&;HC~%wGl>Hf5*3n~'r#[S#p02ۊl{@'(!f:#gʔwBO0SXV[fRZ%> L;NSfZW~ZJq4pqO5Zl+ Zk:m#qʻJ9BsI1FX snXogU!JvA(ӞIB+w6=T:XG=y\; R(s1f<=2@Ts](/P 6l;P5rR,LYV״ N4[4tN:X29UUN.}E,7>V1f%We,óy^:'CD a9>IτriK HFYl-uԴǩ 6J' Mͣc!=[̑Aˎy,vy#vR$Ss^L(ex{>6TSo)nYڭvu <[ .K~uG[y4%Ti܋2VG S堟 MG{sx;Y+kD OԢ2)ۄxڏQ.UZg,1('8eVX`KNzme[gS3MWyPUKtWgϥJ~ 17T^`d 'xRbI(=:nrpmo/Wdjk 7ef՝S]|DmV4R O4V)T/K9B5hѩikgO5%Nxy]Xcc*K4E܁i"-/$7lȢ@Q(#]|zq,daQ]Zg&ʻƏNXmPzT Q\HBm>(*7_, niGTiyx#De@MdO܁sO"@UO n#YAVoS^oǺy=dmi=q;SLWhewO|dn7mi*$ !5vJ^OiVh> lfuLIkD\xZ#6Hٸiin B^:L8OĆtFѭMq23T+==Jcԩ[ﻗU|p^J޿L/ɡ2{xA{gf@EG0\>9a˪K:Y#FӔs+-kE>\â8rz#D̦Sr\6́Xwq H-czϨTi>Jn\*j%sTܱ}E>J!Jķgc4Rö=IOe\JOY *?YXe?Sm ŸQ#O8o uHBwOG;=p SE6ZV'Z7ڿ̫r[*frD5+:ֹ*6l:x'9O;yu ?VUJUjS1nV5۷wg?lj0NDѬ#pU=Gj٨FBZrMAuC4Ji$D\Ni}z-T65ZV2*2+a麩68QiVgQ>"sRk"AL&*Ew֤s@:V xF$3 lA. hԮѪk /SMJG)O3(z)_$S7JJvO%g\@lڻLN}oq޳z}~~TfSNKS8"&ssP`cIB\G23Nhx!E[ta ,~6ia֕ڮ`jğl=iPlt~OɅ)J gfkS䫙x~}'dZ ݵnPbwڬKNGW0Sƒp,5Kvb^@BgogvӓSmw5jZUxty*bicXV_SCZ^~kxOwz%ժa&qmG谴i vchS mJv> -Leτlے_iĠe:簎FY N~W1q2VWa^#I޷?'o=m]vdB#ll$aooX'=<^ݟ߳ǧ/Oُ,jL=[ڟ)TK/\Q=/M]9 'UN&閫g JۿمʋUTuW0拭nj~A>V>ϟT)%4jUnr@,q2LftB 2d45'SkA5:ըiG)P>^)nwU  >4r $ ٔYk {Y8 sd7.J؟5E ]z#P8z!fT _4l)ԣj+jVJNBJrMRRj:tg/#%%wTP*V$P੘jWsF[v*3Uqg5T2ghpp*t5 WFU].m60]9O%ӻ8&sXvW8eĪ6ʎoC4V AD%T' ȢP7.kPw6Wl ܲV({a䩙` gَ~y>K5_F}@'ŧ}Kyo-?]OG'/Ysf>c|eLϑ> !7~  q脲\isSu> 0_B}E.[9gD.)Á̎$KLiR۞qJd^hV'*o$2%`"S Vj:ݍQCdeqdV;5jX[oSs΍`_Gn7hG캎s 7FĈapwL6AiT3!xI˒kČh OǾ|SqfPs DӁb!kD<q4؉k>W"F7_tQ0Q i꣢ᖪG"@o!o|ܚ#5],"Lpea>zɥj|ef4֎gԍ(F']MOoK]d inmȐ &юMyq@Ore_P, wzY&NtOUjS(CC"ouF\ Ag?(>4V z"SG4LS fs觢>/V%ًXnN+ RkT!W͖Q1]>O F(XoKmi~JFl:l"u m-k:h4Ph`6yf 2uD-LDSIaez.ਚtYhAKg%9ׯD5ѦFڬwB pGX_e//o;4^}܂VKEMRM,~v5=JƉ)}V^t2sӮjeTL.`,5Bg4doa*l}Gg2-:Ӓ&T8ŭ*t)Nt\ch戹nNJ '0z-lوL}.tG⩹|&dBu OA [q=%bg5 2!S{s69Ǫi%FQM}` *a c<pz S l:eRC$jUkEk8^܎[FpCVWihϚi FO{5s_ZZr7K\~m01K/`6EW@ EHwq;zpS2PKt(憋aX'~QQ%S9&Fg%sA4ӈUrnPV'V˧E!s]vL6BqP T6YQmkd=3i{X@Я{=eTeBr0+~Ti> d>m9I^!-?4j1úQ"mKX[mvk6 Dw3g }"~p&h6WqfU!i1: ǩnp[t`ٟrhsn-AZ*:´R.k]uIXnZUk3P{k6C:,V-ӺQH:tҦA7waaXvqqT60 Tk~4#":S,jù~F]7KXnqs`&"KXJ)ucg/P(Cdz`z`/͞MT1~s]/@r *-xcF'w% 5kC1;E@_Z@p!YW.yT:>a,U">%aulp8jqyu$Th~9*ȯLwEڎ=#[B~c jsV25C5$I/FK9xXa_ C搏Y2YHk k񚅏yL!QbX ;)TɹZNPĹjZr̦3ؓwąs:N9@Bn9Ŭs.M=o ]e\h4+=U3P(N e"MFl:,ڀO9 =76QPB!Fzt^=G jiw=!s|=NK IvxRcVKꏪ*Ylkn#6Pe&9uVs{܏Dw ̂{.XOrtw%OxSۙ'w^{NcT67˞9,!zӛKb|SiXB32Ng5V/cɸ]5iZvv/l'Nw M㫑mџuW4Ѹ'H@TWkv7R<KLKxHXw5ָ"i .]ƦsO5Ru_5GT0{1憐-vl(*Ttb)0xpiNPwPThiC|s)=f765x'8O-\ A9ce4xf)aȻX*)9SCEsRI$a'`^ݽj*1GcrUmqZrbiT47gjxl#UVT0C8Ӣ5 Ou{9rٮ4r*6I樄Ջz#IYQR ҡz=C9h门=q9 KaVeMt$ꛃ5#!apo5*ln5nchx˸}+K .szeU?86!cs^C K|psnnm*2eȾ26xFkgT hAiU1vIyק*x%# c(SvB1)j+EFWyW{g/dvBW*Y^iվ[)eT*;aoGs.qxqm-nz.4o:?xZsEUs5nOS^hQ tO*i0N(cIy'c@ آS<W#SPMny#5}ymw~Y*Ns.q19Q b|"dJZ=Hl5(}AN=HGc̹(u9M%*LiRDs cJ@{]@Wg*T)CM3G9&ϦMᎰ993:Pv"Bu0Ak9d`Y iR1ڂ}Ȋ̔D;1⭈s/oUw@ڔ\eBF8UB'ZySk|O Kď }IO]cdm:-T"9&^?Tlq0JnAv)g+m3ncU7|>ypmpSS+JohmkG Y5=Z14x("bUJUh+]T6x-dHkd4%Z.r)Xu2S h)7UzSsog7vzmHTm,> `4zXc5; lxNȠ!"%ǒrUS Xr%,%?[ 2~}-Cռ붅Vs`94N~g۱,6Pj4l.)9aRR(Z@Ca|@U<{"v 182*x8;w~yKOXSd\GQ)6VjԼc\s1RF}sAUw2+X37ѫU5hOd| uR`-3/F7 | Zb*ꅃ,iQBpU W yUl ;lzNUoe%¦q0n2h'\A iq^=BaG v=9k@U:' (b\cR'l+VKU!BQɡVw ~+TӤ7sUDt' Qq4.\1cZp194v"'N֟%OsV6:䱔ǫNg0<,}cy^is`8qb0Ŕ!#%P\ ṖRQf[7㘔ݐdl!T 8u`PB}z/7ʄju9l5ͧV p!qƣ" A&faL$&ytB'eM!"}HQjJ%\٪D"!{dj)5ֺ+vPg-[SuA n6g$pޅvk!ȃ$ϬK6{ksY(QȊm^s;ޘXjK\Rܲ@`1M4)]HAI$=*WYRC+c~}Uz>u_lмz4=c'g_~T._ @!ڷa@"U<^z_~~/@*0G~iF\n_?K_Ex$ ZUY>緈w~X\~z+^6#7~z5z]M0dܭhOAՍ_櫽K/1A .JT^z'Hѷ~VЊGp\Ki>?Uz\"EJIRz1as~'Mz>3юo ryBw6?1 >"[NE_/KYCRJ~?/1;r߸&ehk1;r)*ܗа oWԌ}.\r=JE~RT}ULFW[lsbp&low._EJr+֥~ z?c0{.RV&*[^(Korn>w kftbʑ??g2J5^*TQ%z+ֽ.z GzxQzo_ 4a*fg8éf2#wT|Ns>m!GЊٷϪ*GV R>Wj쎫Uo7/>WtQ]4??rEܹr2C>RpޜD:Bݦfrs2J5ϭJ^%7j.nja$8QF; +fh #>cLEޅ6鸍a ?螧JeIHM+ٔj`b*tB`gHpZ <²MvE87ԇii7gңY8cb2d+Xß iGv} 53m@Cu~/YhXq;???bjU?NvVyG3N& mVsTJ2u>gѝNNs؈<,U1(*yNDU8NI\.j3 OF&my+oqڑݛ@|5;F6mmχգf=JYcxiP.+,E+vlWE:qU3<>*e.Gac/߻ .^ڥC͌?'藔T"yϜN2m֝Oah6W^"9!Ҫ{2y%L"c/@ s JqnqҪ8.Pi)J.eB%qiҖ2=lXoy!Jvmy4\?O?Lyf_&+i9gn!T ,]$ZXtw 4vN_RU<`q63TT*@ͭ2>=?賘YrKhGC yC;D"ݮ3\4Yt!kEt4D*Ǣmlf!H2ҾOmW3Lh7+;z=L:̱حFf}fplhHW(Rp=L`Oa2vوe(  >|eN9)%Snoq}״"=&]0*ovK;Lg̳rwmԽ[]]"hT[Sa|%{bDlıF!)vy/>6t32j#+LmZ=c&F.[9vR&p`U [x8579;s1Q)q803cb.7n|SfmyBHIv?0PusNjq8bQC/2Q<\7=sn[+5ۙrQ:tvE2}c=೩Z_/IkYQ0ޥ⧺tY,c5<J4jzjp0į< 6oLx,E\;\y0#U3Xf2:/?ybs"@W5 -BPȘ$;P)pep+-@E ۱h ]616_,*s0}MojDbKTP/RlN!8rNEXS }}u,u7^w/>#a-x0z DG&_hX`AaP+؋|G!gh;AWAn&sKPҍq*%q:ypzvs@Ydv b\S?8Gt,ra g#TBcؼkOc˯HrIGf#LLJd,N<gTBsWCA0ےqX_?y1|\3PZg?f9\yGtCL6q:',& -ܼ{pmy{\ARk<^Sľ(HK-qRg107R> IЋ^[+\שjHkIot@-⧴7V,*9 R\UyTVuaBbƿ1 dQ`v= @WX3RSٙAkXZ~IZ*4a.iC6T,wlJnGDKu.j+FRlg3r;.mSyx{WgQ*Yt{1op0/b3M>YMj:-ffA3 p#_qa!-kCSLxyByn#Ek~. ⏴ ֈ RnOyxM w͌0ΰ[ܭB%ׂ__B&x..lDJDZh[l +5F:x;K+ʲ\yW_@?ISo[i<ՀܤWvFe? جck-وj([ݿf06]I/]dUT&8/4/_3+2GRj*AM O9bur*),% o}L20~5L}(~xِ!8l܋ßxfʍbt5ůKK=ԼjnmdDϢT3ݧDmLΑlMu2W*0Dqc%a" iEi¸Ut0A/vcEyx@} *ΪQ^ﳬWsbdNC=EFf5xmoȔCWib(4ЧZ[փ0)FA+t>ʽyN1lƯ>0x8gAl+lA2FI=C(3G1S48?쳵 1!g-j7wnT,rlN u㙀#_ beĪ`e-?t;xoq^[7y*srnR13kOeG ەKsDG0TgIm&"*.|x]y{҅즾"&X :F Z;/ZVrusx/%zwV[{5^E0PTo]{]|LLM  חS  6(~g1*ҹpmE _SpZ{և-5 ¿ܯ; d9Έk$i TR&~ȣCL;1u ݹv`! \c~%{u}1^2͐5VƢKuMJ)PցcE bX_%3^<ŠeQniGyJW_ΊbcgCg'Ɇ8\UJpz,C/ ;ڊe*p}eԷ s̭l0*Rw (J2V7dSY,\^D,YcS^^cP@n@ l?(ljivþ[RTcm,x C qz^ h5)okѴL@lk^pi03sfR!W{ruE0޽P7WF*pFS' qa#kɰ }u'T 2rxѾV /5i7Ra"ԦkSn DS @ߺjNf >=̅vfeԍƱ(]g/i\Ӌz@}ӦXiP&N 3Gr7v-h;AA08Het;@TldM7Ѯ8Vhׇ"t-_.#e PglqAvR~IV|_JU)wmF"rU*B(ڷ v `j)?Kf:+R˗P*>ڞX & iӨyzAn?L*vʺq:g!ZbF+Jx9eLьF``R\',xҜ% k^ 4,j8L3r8(b(d̥]UgT/E.AX7X< L¹8z] >&Өyc/u?h5SD#x.+y`tvB4 %{,”fǥC} ܣG ԏo X$wgYeCPa)D!pP=H !P_(w:x״Vf%F_/(J> 0 X0Aw {17drn򍣱8N58or=C\eTs\F*.iZ/""NCƠ6b=Y fFp'_1Fa,~^ѹvL%NZ;Ҹj6^Y]NKQ9jZy .[;i euʸf0S߿IN{KCg\(-~ fA`9ka.`:]bRl~nMw^ n)*,/@rA^rGJ"SwXT&Qi?X9d\zeDzE@濾 ™)uɴ=_i\;]>k#~7,b75tStpyMn%OG3⢪y~hLcah3veÈnV꾦0/y}fwf h{`r{ΜRq&HMɸ?|i4(, saky4 =LX`10̂^|GBM;(3O,Mnd,C|)4VD3l@v!`(')il"++(cXcJۓ,z@ Mw!RَCh9J- ϓlP|[.lxD(XcP!Z A* -;G1*̳Es+̶yS=:"ʻLjoe(#b[ ϼn:Nx(cWeK^)=9v 阱YU{͙;R=it%İw1&˃L+e nkcɺ5W_{]X73E)cNO[?׬~y3]pP9v')@P܍+y:L}v_ R9iCغ1l&MP9 3.ؖO0ipo;u12ͣ-l4W4Dte_aX#>ޱQ!YW{JþiN7eȩ2 \P]XI\ y[Z#s{KmM)%<ܬumf:Fߙ7uh&(RPlr8͜)rۆe&<`Ru6cY@]piX`!RH֎ =P;n=\3" AH\5'M GP*pF"_Dv8ʑ 59w6Cv uc`N,eBݢlS>`-zSG0+US_`INk(O#[X5n58|T[2蘜)> Rl*FI>:]zinwOMu_-R՘8 LZ4S(̞|J^eC8ԶMj80 kb:#䍥t?x Mijz"y4)RKHŦ\T2X4#ڱ݄۳n,'vY"mx5 ;+(}k ˿lJpo#/(lUQp8S5NC/-76j%+Lps0iS i:<@h}UӞbĠ~߃aQ7#*v}}7GGGQ$X֥reۥuqC1ʧk/X7pJuVo3Ji%FפZ:VR 8Vdeu-o=k@-.E~D~9j 2ccT2+fR-*myqnLeTEn9˔,5b] N(Q 2ݞXmxNqf/-WT3,LQa|.:-Ws&1BJKUUQu/ Xqc̰ K(uf UkHL~ "YYƷaSa3jÒn3908#_X4@5α}pt; q *m\AZ8r2ƫEهR> pza=75{Ģ2W*:@Z KoX%k~􉉧P@5RI 6UET_vN{7dfk_!N9%PY7ۤu!PSTBUroA%-H"2XVGIsIQP|п rB5.p}`!riC&n tKzL˘DF55+;O러DYElA -grl= 91Q+.%JSS2ӯՌ/^1!􂥀ٞ+hc^Ng>pdu9:M37+5g,EEkAy*lFQnZ~C}!WpwU7*k f6fQQjȝ扺:ڟȧ l kmAp@fC#ˡLqs/$;uu; ^S7+M:Cдۊ ;&ic.CgMU}'\!{%z5X:55\CQTW8fk>0  w,yB9<v1{ܪb6ǴW\thP c|z |6|qqgM9V:B ?FT9ה(7G N8 iw rx! jϡ(ݙxX2ʶcK5}i=u5Cs+Eqhj׈EU_)!_mK xb珙@r̍l2{9C,T(r\rCb\S'J[';K#؊!*UŠ jcuD5)ia*c̷muoAd`@k Kb1קoN`DR¸ , zb%骻AϤtλ4Q,|acEyuYֹ-|A9/iV^jTF/LOvpOc9C=?빉Pfrzw Ɋ<Z.˗>ފfM;Fh3V% P',-+a] KgDZZVq9D+f=f RK|7 1eQGwt9T'i˓ԏ ^O9Qt0 Jĕkkc:>[~q Dh<=&`{dJΠ BxWPt%T~{i(vnPF 5KC"H2\Wi'ٹ|8P 3 ĸ1$t} P3g.%{n{ -*k$OA<@k^{VF rŴo=wίhT 2v)itsrK)0RQ&̩[tg\k YmZ "gdIPљiӣ=}fgl8l}c.ǘ4*`fj\/ъAg̤pO35B_2G7QsʨhRၥI{푱at\{h![LJhcu>D׵L@3([|Fq<ĺq4#L^jA8}9#ѷA% 1K_V`菊j`JsZ, n5|DX t.}%ٜK^ p7+2TPjffn&b..`HԏJ6kI*hVSe+j>ePɖW (prCo8W"8"eXΐYMaˮE5\0QX#q1A/!~ϛ"BfAyc]!N ^ٍve(YA3CvьMҔ\4 i8HNPeLk^1,a. =!'V2r^XK֫`!*AǼ!u# -:@׹ Z_׏JE%1S-naNefdK;ezd 4')6;Wr˅)Sw٨ w {JuxB/fL=Jd2ڰဿq*1ײj0lX:jMޥ59=a_~%x/`=vf]VWY`VHhkTy?ݽo +,D6Kޘ:Bڕ ‚S$93k7WU|fiD5|2ߔGRӻvw !2'<WEo{lK!hvz[e1}fo~¥3 _1S_蓏*mR:Vp8qvo@ 8CVK@;$ eBs̛\AC #K䎉fU>&p*X/tpD\"X Jd,2e h-W0ֹW0-!;%.D!uԱo Geѭӓ MRPe/*%̴u89Umt'U*avC]ʼn6}JB GKU+xtu_tE,Wԕ_N1Tq1T}?NOw0  WlPKtK!*]He|ͽGl)cMÓ")KŐzEas>*O:h4Bg+/ DhlٰykY̺f.HJAH9rDWq2tb6Se۪K*,gC@%U0tWȻAD|Gg˒0qbY VZ0:V]Z")}Y4ltNyqQM13D 9ZΦbG&nҠÉg\$p3&%UI}J8ޓ( N}ҙfIc26w@z+S2sc,?Xg^c$FIqUl {_&Tͷ̺z۪_އ+D1b^gCpA\m>]+1`R_T ;sa IZ|[9s1"n 5CJ(auqݭP:O4.s+=rgЎ2v< HPn/O8sbA|0<%8^FtA9԰Zw4*s,r8@ hpgBU+o7NEq @w ѾoNd\W2oa0sI"'Ml)S30f5o,nQLBk84:i)LxodPkg\ L/wK./t k}BV%7kC7eÇ$h! xGZ6 &z?+LcgrԩUӴLgC1sӦmdh:N'W~-LLsT|z%-X9h[|%%Ur)Q:l+͗|CQC qRx; tJ 4_Y͘|fep;@ KcL '|z852w& 0&QڽY(EI#7ˈ[K Կ|c?R4ωe3)G Y2q) ?XVx|L`QMavMҀ YQX%mpg3M`x J+oˊ-0_k?_n:1-# n*vjs/jxO[U :_R{C|S5IpV E[ tDxALZ22FAܹ§KPv,B FNVp?E}f$;L; K_\w۲sS>n:^W3DsMʲ/OB$Zt=|L"~Yrkl@BO p1R¾H0M ڨA+mħ荆qJPz8PJ@59" C QIT6yn.v#\φmmQj ^s/Ky#*"!6C |J&֘2%ӈeK%0y[x5ᙅK"!^b2Z2i˙˟ e)Eݯeqȥ5j,3]lVN2ƫ5bo11u)~gz~"r_I{( =sɃT{˼u~)9g%.XE)Lf |XI~R3/WI!=#)):J^.Zqܑ[@aGfiޏUYvNndE䧳LTTJ^qPY%'A8b㼩WM?1%V^.Q%{mpSC;#0$ƈWmTˑ5.ԡ7QU~R,\6R!:]A V @x=}fơLy#=pSW A&h>LQ,VY"u9[v)̣j2xf'a'Zy23#v} ݡs"l=m9(&%q*VT N%x[~&%~Sx%x X[^#ӹz̫S4dv:CGPy마NYНۀ.VVD`r }%z~ ahr1b ~GRSvJݵs2>t2q՗z9ˎ𣈬ll_(JzrӨ>!R2z03gY>Ъ]61.5Xeݩ(/ӈZΦK7q,Ctu3 hQn}2)eJTfp)Й+x#3_fMƷeU{%T;·B!$3bkhr{w+'94d]NAx=j S+* m9-`u8Ҿ%Er|D5 O̓){]0T8@<[F?5@r⯷]"-X!O \`b5Y6lZc`&rbanK?@FrE a[D6_M4 JLq3+yQy=">龡+'%G70j*eHs=X2Y]~ muYH}‹28^Sb8QT՟hL#x9Zxk~!¨|\6$p }%7tK' ̎YU3rzO6Jۙ3P ү@f YY޸] a2uC,hs ;,wcmcP}cNC A0[qK?(bYiy 8G8{xѴ+ߙ*@k6^N\cqEB0 ![4švKWvPR\b-WB}Eܶu<ǰO*O7ַ+fvؖ0 FkSb^ }n͋ףFN5dPNY(/-VT#oըfImn6Ʀd@B_ISў+:Ni]Z2^.`Kex?)J2uM%b yFXf%D g)k1!jwGO*usn7S2wI@ʢ1fs 2RJ6R 7)?Mbfzn'L"&E 1'z!R^FK!}Iӊ ]bZ@Jt$6^.v3+ PIJ)2FsYi+OUVMyDK_dǰˡq9Кa va-de`ģ|Z:=yo`Xw1緘δJqYr^4|t乱G,X)X,S \PGb_I`cv&H9%V `&6ʼ so꒩ 1CAo,))>,Ez-OA g0] aK֞GШ1yd[T6&؏q ,t`G_&s19Pg!'7 9 fwg3I.eDc>F)ΉLWY Y4xL &,m2weN!ĽgTh仪LqZMd&Xad\1243+q 0H)}QJE* Fk"G>m>ӓa!"{ѝ}i  pLXQ\< /o߿݈L 1 !y 6`dӻ2nX)^,ZU2F'2q}rTAaVUNжYje\=]fFYږ\/3$}.Yr.kCNh ;Z~k%-.;!Ny"}W&#y.s(=/wؘ>VO#jiЇ 6kTE ETu4,}AGXo/uܕ9+r8+ a!eM1$p0>"Pe F\g_5QQN;C [m3 ee_pg‡SZ|[?dfVl8-mJ{2G\־g'mSM;1M%ҹz' Omkn`/ӆ?D:ԡCyͺd -f/Qx_aZuJi.WlDR=/*EcnTL}!=WXoC|-v3u9k5"y&|X,\;8`<,GCkDܨ)v@XfEL-"\*s([߫}gC2E%:*3iPX9ݶf27ԗ6@4*c!ŘOɣa _s+8秆i<6|\(y_)a{,'78;[ O{\4.(BQ<!/oio.ml)2b!q d˿MbfT0j[he]hyD`/3w~I\^(&,ےÇ'C QLЩӿĻe<& `1/ PwQp=YY|ŝa1nZa~sh혠IkԻW YYu\J.uqa).A+sS)Z"7u.!ʤ y{Lyt˭}Z>k)2:21yu7K;83Ծrena4zz1s/G$̻Q#AX%te}"Ef51s3[T/j n6n*g5*+iNP.Q" ʳGf;Fgf6Z7*ӯM!y6d37K0JƠVvgkk kgK5\R]w2_s,}Ha5V(ԀYyS%_ MIB=XP,p'#l%QuSN}FTZ`A\p}s*TɆdٿYf<ޮekΆ$AϼQa)_R`~ܰ5gl0 0=_V(^@|Po3,s}HfWf}|Yf!~ l#"eHg蜲AkѦ98B2D+R et3p2IbSal˼04#7qljۼ@}%,m^rÔ5 ^&pkњFJ0@ -_/_#Gt=ߥ&*z&~Wa\תvj[3|g'̹,a73ƜC:u3b[q&P;3n٤~f4l#h0;eN$.\׭Ds_nI[L($S#jG1:e[[a :Mߍ9sKG1fJ"T/H?TJeB:lqIbgpWl>pd9VѿD 0FZ\8L_iOyuTՇٍ̽`c6#ӬxhT~s-Yؕq3n2J`M3*?b }#GeVyFof<.0˩YcÈ0[N"Id9뼭urK.˲[)A=Rs9Mq2#|ͿO7~ʂh1_mk#~o05 D6Q+_8h0TA8~!In߹+sWJt:mg}љ=xVfe{9N_Z0a!b2uO/CzMl+c*Xbά>@ĥ ÝJ+ҏ~p[s 5pY͉OɹQƊ 1fj|Ҍ bz<.;:Cp8<ǡQCmjqL ܱKG J/B+W2x3e uw5'ZY@;ObGAylz˸oG,_+MarV|E f\}e}B,tg>'򏥱{YC@;OCs&q(Yٹlʬ@]IONv2^j , ^tF%/JO-6F]JD!n5۔5̱ooS,_ghe;ןJN zX%t/֏T$+g/zCP5V xP/5wpVj㯩o512]-#\6u0BqWXegEom|EuS"J-Z&k/gLp2ZMYNs,F: r/w}6l[xunU6D62#]R-n+"bS۷SϠg៊4CJl_ Ŷ*=SV#|33"9pva7U&,-JjncG\5GflXruE 0[ \<^~YSe-qybX5/\?tI*o\X*efؿB[]#dOywNgR#Srňs%0?(, M3W_i|c]H;} PsSj$|ɣm+ y>ψSs(:z;j=G5yFTZ^ 0WxYL@PTIR3#oWaGy'b.\\cޅMS\0S1pŸ~?lLfX/?eMw ߂ozhu#g`z.,0ј NB 0f<0S~+@nj癖J'i+9en1:fjcё0Sƥ-L{Dys. vzJW̪Z2M2hG&68F,hseCGej]89V]X[2E~_> 2؜dr]B ۼx)܃Ŷ:ܲ ecĢi{\G<aIȕ/+q.q*N!O"V$1}Y7>VܚeGcuocBV0jwcmh,By16Uvv< 5BXLy)ĽVx' Fr0XwaN.20vgcQc4H>&ǙytKH/_2,]#-ݼ̉g)Ei71w4Gn)_ $J޻MGNf-SamڋE3NqU>鈀PƥF-i=EvVF9-U<7*~Ia-ku21O ڐs#Z5qc1B+9n1@=tӆqʩAyw,ZÍ`+os)"/%@ Jή%^L6/yA,iT&rSrwܥGgICבLOgfg&0E d4;Sg2@5fSAD:Wyn zX#y~U7f̸X1G\U{k7=$vCATDw7q1ü;1 T'RX0;S>^.' %pZ>aH:i*q?}=Q J.:J(OCܔf#I 0TKHY۩-e; ިL՗A7.We20tv:ٝ~g0*ߖZ1!LqiC.gb+70p`UjGh9G[ q:yr,d|Զ 㙞 ?=sq&Y=>O-n0JaADj~uMIk.vDsS&Еq閇0Ic^f)q^f9B\fu q 1+܉TvJ{&r`擴^U~s0Bf nTEEwԵ2;/~p:]~Rƻ"#:OKq^%s Tc{ʰ~띟SЇiv G9obvche\3;@-n=#_g̹Ri)}=ƍP_!uNn{[KW|JHXv1)fC]MGw ޠ]ǫ|1С\,xX]cu /9Q; v2qb^%Sat);3Me|Cr9*a`3^nwz.g̥qԮӡLG? LRcge8άܢVxR/y%<}Q==Z6c楛8L<@ k=c9 %)%Ǧ'3~ g>˧4coO9"s7ـvXwgt#ɡFJҳF0І2C9d¬wjAϏI2B.(+)Ybbnc+3G0X;ͣN"`]7ܞݝLЅ(>DžʶQ{NjS]S]B:4x%,U0:Ϣ>=KVF}陔X+ai3a7yvZ4 )ڃ[NDwO^~#ѣP2:Kc-k.Ȋ^k%2\˄szjLL1&qqʻ3dt;MADP+c{jh ^&Z^ +%{âh-bծe~#5[PFcB2-0%n2{LѼb,~aSqȫU6ī6ʋQϻO>'N% '1y}<¼L!bopsb\?hz4WzQb{ b'<]#kUQz9+-+Q! :1MOE\el_&wYMGImOV?812zƹ'ȷgg3LՓ` 5R"7틤.`NS%ʆ=9 wrzns9ۜ_[/iVcF-oXm0MR <>Dqǎ=Ftxϙ]5s^~gs4+7RmPV~jq (P+<1#0Q vD܎J`ZV{5I5h/9$sQ6(;kSdeivJQbssmi~c8Ks~==" L32cxr-LLgN`2Ѭ0)JDt}*d.Rs0q]%T-hJ tjLtOi nvo:6A/Z8Snڥ=xiޱ7,F 8gZICلmKY܍PܳWȈM!ꌚ/1q^;9h= SQ̒R,NW~T6޾ed1~]x: +]438=Ǡw cQTucqb2[zIk˰B.D37(wvy*3g/K9xeJ; zY{J[*.)^%~Ck8ZW%刱m3!0CX/LOĻ,>J}(J%Td~H}ѱCf/a'S vm GInw bs-ǟS!d۝RG>5Īnc!vaX xYUJu\o-;17K{x/ea}NJLf lN*4#| ]f_uwswĿ 3Vlpg΃!B4%,Of}7 Ny%ܓwR/ѯ^/5 jsң屪˞ۨ$+2f]RN/9~+PN*@sLĠ~Bʀʥ ݾƥYUoZ5,6TgUBW jU[۟H*Ú0 &.1p#ڠWAiB]~0}+db ]vEgh):͈I(`|?tcQXDLwgNɨzae>S718w h}Y3T W:?Ƭ{況}0lpao$t6C6}fW_9DIg^LgP S!h?skZ `{|5P{ m!g:"MLC= Y}q+SF22R(Ļōyo"&Ne|+-7a5 48ӿ_ގe GH˸+q`'Bgz6{~=XY 'tD=1OdN7AeTR'3^YdNDy&} z-S Д3{eG {"[.o;QxkT#fMf+g0|*KXās^Cܖ3~bm { ]=u8z)ܠh+1]]ݏGc(ؚ51@iLx0f\RseHɁ͞bX㈻"Z;$X(:89O;b/>}'髠> $-%TuY#MXbep pFpƝb")<^.eq ON\)}!3p {:VX Por=4Q؎=As X(^3<̪L,}ĵ% `勸<@z^2Ma(-lG׫X'BVu/XqT[IQ0&UNV#/f$kxzzkIe724yzo2Wa4@ vt c$hY9ε7%w% Aٞ`H8'()%u3.~4py;.Sxk՗fSobѤ̡ 萯 (gs˙YzC lp@daLYnk{f1vnK\YL:K) *K&,ρ~gmR/KdQ=WчCT\Ks238vp#Ib-c>P@a&h%Fos~"s"Am1L#,D𘾒`do&fqQA4I{ē$*@Uڍ8qK[-j z mtq+0flHg9pL )݄v`c>#<х}@p%ncџi"T1+u.+d^*P1n}y#SL9G_eu=݋1}aD>X6:[;YzOОIwl;AHxرQ-r ӇYi3Lt^20E3znsL0i[rvwNc}7\Tj|ٽ ǥ?2S!2ƙ]#fK^BO1,KJ}-W傰xJ1 秴/i 0Y-}3-(h-N_.W!ZU0UҎ(s,50u3(ryl k? ; {,AؤyW_>wij .k hNҜe8/ܞDvҷ/ C6 e1h/T2n!0_ޑj"*ܗ*-Tfx+`-7D.w*_Ϫߤ12ޥ9ͶOy 89yv &&q4b"wR%Lm_7U(2  2F̺AvT8ZT`)92ֶ̠w 7r].XPm79A3"~浘 }(<#['M X-̙U3Q^дP Sh9>m|])5JhTuIPY-& s49ΦLŲ yi/c%C}fZzz2_K=cu7Eyֽ1Ms;&,[UQl-o%T؆ ;J`'0pԾ:Jke{TJ;s`5(<] J ߈^wV%<{\ʧG \2|Jo%f(c~&r,W5Oiǘ`M Ûo%h !pA(`1 (CEch,_i5Lc8O*Q`M B 2BW(Uz$0&w˳` 8 k3EH\u1̫W FڎT蟑ƫ76Bf~4kq5ƿmX4jR`)rU&Kd5_hMlalLD&~pr$zj8g%z Me\eFFiӏFopz03]3ǥF %PJi/^s|"4Q.bb.1V1j1rCzЍ5g)}a'I1ݧ[L0 `T,};jf#; *uC*5`ORܑuҥ, 5X(s(1}Kg@QPSL/\Muxj%fbtnKჸktXQaW `)!_ 'e@%#6pfd,'w-"* uIpaMv*rf.9"eB5ǰu! _J+9^&FS̽4>/?J>Y|jjcY(pMosuj˴"<: }BzMO1ǯ2#؏} <z&Sy(VJ踄N%WWĪg!JMs9y#pplЕ¿4dǙm۴\Kc)xU@(F>C\xZjc2AcW-t3aќG.9EW 5 3bi2rܻTeeЗJXBU60"Kݱ`?/7>҈"1sZu{nb wipt{ʑ1Nc*Ѡ/rfE=b^950 ]Y* pq@}e${"QI4cw#~ص~7rfQeoDNefjԫ~!cN.fp_F%W9fs*gʢ@:Mn Ö9>!Zi_AwsQJ3̊Cz0Lquwc$ aԮ '%̹ ֮Q` XLjJ?;1)rzX_2^&&aRu#hwacΌD,%Ĭ-aB;-L Ś#E"d^gmeu"Ըe[M'0uVBb& (Oe|&ԮRW-~7%M,;8`:pJgH:8\ L5u Hu5ƒGJ+vk{RbQK{eCw@^(Ꙧ9D}e&ۇg9ɂ:!G0)f}.{C tq.4@0g zF0f;.C`Qn7:FRʲl ` ΄]Mb--2Hx"NyaUѬq3pwCi~!fsG63E{ť="[~AzNO5D 8*ݟ cKs=<Hi L_ڗ >`Z\ 90Q.C<AN8 4@rcw_lu,>{?M"򹒍x ͬJ2a3̵,Û,S"YmJQ+3SҽN`9ԋ1hz*i2fxf(&ebpT?V X>f/<]j1^#JFGBmn1`.U #k *?Pmx<gH7C ʷj26_#3D_KF8f#cҨ'hdI^TJb1 v&&Z͕ ip5;tPTXqslFi#9jg̨w&& d{N!sewk~_$ Ji#YrPUb;f"/Kc9i z5Z=<55ʢl @|,3*>铄,9L$! ϡkѿ]>5˛Hϣ~YjQ1T?uۊdڹ2^͗bc"S''dNMxA͹ _hP|qEcPlT jϰe!.-;yҭi ]r\Acۜ 5g&Suh>uc3}jvBb`.zi G702gP̪bY/=QLh0 d:KkY|3cI!\j+2,GXvc$!8^J:A^3:B5DrK<2=BPXJC8RрIoG'P eep]y _#9=C߬2F 6i J.g/Emr>:=(ff,tZ,C3ZoE)I@~4@fHĢOX8|DBɾrDe_X9 7! CC}>"TR@ Yߢ\KĪ7d73}bw>YFRS*(=sa}a8lje}XR`7M9/Ҩ_yd..k d֘ W^0,%J :_XY`C/A+Sp34#Bimeqś*醥0yk:53b* ǘ=Jv2GieR$\QS}c(ێ,`)ŸH<@nJV(.sA4u7٣B\oLs*THzWTR\3} Lښh|]hk,4*k>hNg EKzi~Ie@W@/Ó@`gcѴJL ~\lZmm[򩢧91;s;u(-re^]18"WA,oi%·lF+zv\T,J0I>JNJc9%WZ=22*ehZE=AUxQɿi}Y\E!$վT'DycmpVly3( FKt40bS<:* 535 ]~[:8=>2Lec^ԩY|76^)1u/ "WT*.UI% o3 rɛ9f~Rnl6̪-;N{6&-Q>%t59 =SD} =35aAy5*Bh+mX7q/.:S8 n[9oPw+טp)`]_3c7)'9әUܰWŌh!f&G"^L2ZhДMZD:y!:?4Z[{gK~9 v>O%7|K_XGYYLCO}X=e*!1AQaq 0@P?/TR ҿ}B.\ ./B.\r.\HAGqcYKH:8Z- ^ r˗/+.\peƢtr/~\aU@˗t(0Eȸ.C \(HL :?rѹr˗`˗\ yʉ 8?ĹqK?}<=1[3=P@:J333a!/_\r_K.__a6 uG=02/aHtFTRt*S:$r˗*ErTJ+ tW򨒥tN+RJRQb躃^eAX._*T}oYR W&[`UiQCfU|dNL#Ѓܹ}.\}_}/*J\qbqܸ *U[]ZS]@5T*TAper˃.?Q%tu ~@6&B1s_n\Yrˋ/(zBTI_en-q!c ҄_*T\/*TR}n\}n\Yrآ+miHrM%JTQ%u*.qt#lhtCۡab=0ƒK#$u\2չrοJ+/qa O)D8f՟~~%uRu.\} _CsGAp /u]rUꌾ K.\Zҥtj$a0^J`Dfaf#% ;ch[$]#|oM*!P%J/lJJ+e1_ٔʘrԯ}.\r\}*T+ + l|B涞 2#ԓ.5io_edͶYr˗JRq ˗._\QǢ e"G>BQ(*$p`˗.}C*;.\r\}jWa:nΠbi{x* +u/K -(,wF* ވLڮMsX[n\r.\rR'f/6XvkLJ< n㺪eOF A* M\a2X\uV+d4U!"`w2yFXZLPr .CGt%n;]*B `[ekIܴ(䟿撿rӹ0z;T0Q8HTAi,splXUo+L`Bj|ےpӎ^vAUTUr@ ݩxF- ҉6X`JVt*422tr˗_r J*_NB|gh6 fc ANs%$5& 2]FE\`awt$K.`=//]W{rXIPHͰ]/l h4גBlHƱ#߿ig~0)#Q^B}~/1~isX(ϘK? O)׼ǩœ| F":_*W0e9꧜ف!NsSUKB:0 !JoRv00B#< dSxKY/d`y Ц^‹c^/ e88)Ef!PӃ{0I9!npHW .,y贝0rǟ5r` P{ioPw8B4)ōj*k+LvS2riʆT =o3#Vf ;+ODA, B!n=Ņxq9MBϓ=cf%n7-o%[*ϙV Ru}@+E?\rѹUnTJDK1V9F$yQ! ՕbdaR8+V-)9KHHW>yuhw$%5˗._r.\W*\+}vEzd(l0(LZ>_T0A r|m,%Zd:Jk#s{|22%baizIf; R[*r9>0m5V򚔆C~f YuӮ 7 BhrԿ.\rɨof);`S# " X' 1.Xq ]S!qr#?SdHrX^ ̏:5QtuS&Gi/v/99IsXr?/B082Y_Әjg?Ws[O*j]460T/:=e4XX-yJIv쵨<̮r I<1K˿}wLx)P!osAոm;:QPJ)^׵6OD*& $NJ_E4^ ljRҹr$RPG"DzcUn W]JRU[J*7 q!k~JU7.ԫFv)ح@%괡_.;3yY7CՓ.J pS~KCβJݝ[ Bo_*TIRWST\z,<Ϳ;#i}=o+o"L*Y\ޞC-eeuIyW*j& cvsA-koG ZP&>.(14ODVwwwzV>+ @ ү?#P ZDHqV2ŔN!S-_C8xn$_w.\_wy`堨5SP=[]Uhߨ+%Iʺ!^d"-r׹R=Ve}t#TWM} Ǚj'kLPY1P1 #c{j0{B|l2s0e?Tf4ypwFoʵ 65D"_ '%. C@mcǍy~&mR{ 7J/H N_rr%J#/^zmm^4Lny%Q3''=8MAoklJFNפx-e˭+R[Ÿ.Uq 7.\"UmIP`̺֋UAZ&K8! |sr'ĻN**WG~0UxCoAMrR)Q 1ejleϭTZ\ L RԡV( %r7(򐥗FJk&ْ+l;nT "^6Al? QEB7i3NU z Jkk0ч㔙f}X=+E| =Cf⮾kC?5JӰnJM$q 77)RV9Db;g{3jø ^ M!{J&ST8b0|}n\KrkM ᙪg`N%fi)nX\Bh*~An?79^,雔? 2˵`f+ 5Pmu;[26aB[*z2,!MI2p9WBmc,tzWr˗/L[)+ZvsCڊٓ:EXJcjnݔCrw _L܌ؽH)ݧ=@;pU/%QvS98㜭q?wrSO8L]aY#;wѥKiK)c7)c@L"/[1JXP`h[y!EboeZqO{C#\_._/(4rRJ3ʸ"9b5De]l"I))?v2ª#bu+'E`⇵k{ݒ)ǿ`BW9\%V, ݕajk*O*WQ̹D׶:G{D|Lcx| |Z u;yϠQ)2❘V0Z%>' ¥={9 J^rl!,!߸2, JN-`!b`D[QYvcf`2`)q77gSjB6>!ݼk˗/r%]*k#rf7ӈ4$57,`B4#*e)G?,1̺"ިʇSk-tTݨX hEs%%==u<8c;y$Iڢ_O37`|& *u}HTj;?bielU<dHcC,sD$&651ah-`ERJjXh` 2_D}Zu> Ha# ʸƔ6?}ʘG$KKK< r,1 r^2 1â!:^qm̗zi~!ME{=OVHv2Y._}oQ2T66R^}H?~lEk9S }eƕ=O If¢0bXb7sv<.\zy"C5olLD\!6 Kr}o\r+øj&ʣbxZr66.0h#M`킣UNQ,9 7ZEZhri-,QU-_!b_r~LEN% Y8Vˢ\˗/w-eD dv>'iዀ6"C=/SP3Co?ք׾n6'{A*ntf.ܼfg[h4ݧ?n豎!}X4Z!)J7fdg3pc+}ށTN8M{d0n䲂csΧm>"[Sߊ.ϧw r˗._J7/tPiI_ ɦxc d5c0O5Jk$BVe!M[FwׄX1 bCzeӫ@څa pd瑗y.pT>Q9H˓u}ru/jW}.\˗/_[k r ÿc3d0EoUKh0֯f*|b:neоY ʚQMN#ZbJ||b#1!b#IYb8a&£0Uo!J^7zG+"+B1vP/Sʌ_JVRY~S+vy!TiBɸ|[2%Ɏ^ kJ;[C;pTX:ZWbam4ps}53c2g[xh0(bP+g>f~#j3m Y2BT1Wous<L4~Xu *~be˗/\"i&)㝻9_k'e3l-a8/ A._^,&wRHϘ+ z3b@LTz&^G{jig鸎ځM/o+3 ԳRrd4BM :nI++Њ+~(D,)\Gn<:e1w8~f7\2}La_bm5 U8#22OUM=хJ*A.U{\+-ێ5L?.L9mJ0TJw?WՍ]^UM^Xy{6(w," Ev ;QB|`X7 ֘|{JzW|2W.\r ev~ }?|:Vb<8}~*)q Rӽivj $2pTh @}e0w~=Ȥso!SyvCq~? ," v{':#&jr Q}3c6 6'j-MرSJR&tt<^RT>gץ -GDqKƭЪqUqy !pʏ"ݱk{Q5,?f~茗U]߃xbݯ!T U?uL7LI!n$ϯw/u@sɳFpb:(ٜ&v<-!Ji5]ahj|NpqG7īf-gzWXp.FX}TD嵍/\< lwA-R]ц7NX- i>%tB!rls%;.rRJ޵*_|U$WoJ])yM3cOi8BG &)t"J6K* ^pk$%+Px}Pp+ T&IQpς ئ$c+i v0Ơ.܌bW!Zq4y!YrC"b6VHJsv\?BG3v<6b ؀g!|0GXɹ&\  C?8drSl͓fGo$e)cZ5'ҩO M[RRw3ȳ+x7e8EsaqUeFEApJE$Ko }o$z*hsk|gs(J.f!E ὏ `,yC}J"ӤKxNA.=]мɦTӲv34=(+ T1k)L`XR* (+[_c3%UJ][%s+?ځ t(4MɬnMe=̻@a@Ƽt T's>F½ɞ?L.U}FE[%y8T NrDB QH @m$ +xȕZ3@f"3 &11T31&tX#ζ4d 5/C"i UKɖ/0P_{k _o,8y^1nx˲1f,u+VDt5߀)C@<:g`pBVicАѷ]ku._lwe[""mƛȝcpg[}(S`ԯn&N3ɃFgusf#0eqY 0 NnuƬ^Y9 P( lL@N Өy8M<8pJMn 036S4\9u-g CWkU˗._KЮ͙0mCE %ak+>M]1~bs,vCΎ dx=8LZ00ො^o |=تUDϴ^)7V\^Sұm (> bjŽ3 1k'#Y2'FNQP9P'?&zԩ_.=YkіU#s_H&L(szf3ty5`'Qs4$4ld|cU+w F1Qq3ev0KȌn y ZjF>X{ X5EuƠ/wHnͷK7%$U33U|f6cPaM{ƹn)7Vþ+/m`3N tݚs~ N`?*`rU'(Y.Ԥ1#،aYGm) X%,j*v~ێNQ{[W(!| Ǭ Co5W1Q3HsX<]AgT6?K*OOWm!23ow=NB/CR[%L_ aB˖K",Dl4oX}Ec{+NC_ <}#цH22ҊPB EW )X 1b X- XD p3v"adv%j ¹ca-Kޣl;Wg/ F/Y&Wj+8lßlq2N*YN0_7‚lՙ> ͋!&צ,[L R>Pq%I/P'ǤXc0I?셞*/aXA PŶ im>J4PdZŔpOP[,߄Y@+UeeIYbSukQ3`e#Cp4ªddcMU2VKa.Wc Ԧg]7Byxo>=h~6~|j#W%.15Uo_㾗/꿃SWt=_/10)tx ˥e?T ^~FE b ž'.lT<69հVDhoL4nk_-Id`66s^t+ )Z4i 5`[dޠ~Ț[jA1uNTSBhƫs1/&cSMiLpKxqV>+aRp!/?bA6ʬh [1gNDZg?_V5N4jpq;|E=WR F_'/g_1 Vo\Ꮏ&W7J '-UhTAC/"FemyBdMe®3p/Zb?Qn6a@$2Nl8#@9le#.!9pzPXIS +q*z4kjs?8.Rv0.Pa]438gI@8 mfh<4T$݈^/A(/mmyTXmeI{KfnԗUf%aܐ[-N*YK c'x녮gljbqw`wr *C[cpɗ7lӫy X0̉oR^U]2 k8[aOTk./ByBllNDǢ zr힇_ORkǘY,J;MQ*˗6S 4nɥbR0K];*y<b,WQ36 ]=t|v `ÃMxC Ac@J3{UԢStcU 9=gT9S 2I?C2]ciiBhFfnb[bml65rexLULY>8(j.l\1UZDsue ,MkEBƞU_%kbvqQ&j^,y82ZFh"-d N`0;lmr wREE0k`, b8:Z%ĻPklN;c+8e_[wc8ߗe;AsGvW඲_dG¿~12[ǨZudҥ}]+p؏@ 0j_cVgٙc:W}XF6W JSpߎ*[Tp*RKr܊%xnʐ,N3_b| D4 Xp C" \iż FypMd&Yj` q4t%*ʇp_`j9Xv-FQlee~ tlbCXZL)DҳErj-<8\N&9cx`51F\YcWGtn_5ÕL+JB;aB hdI|vJHgjbQDG9ya`pfzFԿt 5Zu,4Ŭ5z׹Ah!Bj)V4h$vn+%L2grI(Ҷcɗ& 9sPagI{@T)(xuZj'8 uݩ{@XBȮh9HX ^E k0,- `J?-R#1FU<{U'h4@ x@̢ͫ>(s {Q= Ѻ qIW`RgRPR эoe4GMQ«k:iݟ0A@!\mB/ٍEaEFy&]}7 fMxaBw/9_-ƗOy mf*gB'Nj#/rղ&e0`*#bz^K Ib}(ow rH y\RІfҲ0m KTFRx‡vfPw}60he Wn IJaE1Klp*6?K@ݷ4'Bt )DNOnvBrPxizI WEoq3_;edx旒3Yj^NVvޛ:Ra34鴅Ijͮ$M[WX{"7堂W;Ɓ`8X@+eBPbOk֪hKuhYWʦX[0X+u)\ؼ*˭AbRႋ78#~ H19r\jk_eheB[4LD9F(KYnuĽC燹Eu`m?ilpt_vT`L_ ewXAXq$ե>X*v=H ,HU5pXRW\]2SD#BXt)صr*3Gyc_/e]z^a_)A>)1MATi&*-ʋdٞ[< ׅѦ0 3^EIP21|\ Mבw2xܸm j~EcwKu8D \&<%.-2z4(F^ ^"ʽT@Rv!!m9~g;n-YQq+ U:ז&ZY#T;1KE3ZOoGیO,C~~;_^o4D'LJ%ƈ@C1EH_^C߃hN܁i}.b_P5DEKϙA8DYMiZ̪ruX@CIZzKds X.Ȳ1峼m1L-n YE(k+P\Ns` g5* whYfa}Rռ9,  o^m|,CTc4B*۫?@ qC^~+pbA1X[ "98z6w u ט[39:{wB<,_>ŦNx8}3F{oL}:φʳ)| .HA/*%)[Q^gWjZ(Ⳙd6^9dEٶx ?8Pq~nYH54n!7Z/,%O J:vZkl]=einRVJ%^V5I, f)I! [  Y.aC"cuF%+ڥUi4NDcsPG{9*YAv9p"` ~3)$L~tB֒kno0缩-Ear =t Ҹgh n g 2:*Urb#IG'r ,b_;JSP"#PET`5ⸯ)2,/cYc/L3h@P _r3z>5b]XXW֢ڣ`g#RF@Xp ԡanԘ!U@b--Ӧ̀A򈣹c0ѷ@p9WBAF!k)"Få۟rK.K$jŀvVJ#] n"3sD*̠74Ns) 蔭SWd$o <Կ vJn{1Er_Ob 2vCcp{V".yb_[`j0ૂ9fOӦ7h+ǔ{Lr dlu˵>l|&<1;Sa2`+54qBn|XmVë;QjsX @LSVDolJ5}a\=x͐x?.ގa.ʍ^fIR-E* gf`uD0B` ."Oz(K֭P#$雄R.+W>e7]-O-*PY)36\(\J:=(sr*"3p."rTw)6`F1r /Oirso=ATډ)wOhP_ aevPN`՛ٍXچÑ S^, i@j ;ucgDV ,3 Qp=Owq`,s$.42? G"vƍRryʖS]$DWQ0ȞA`Bn{z$Xza[Ь), L{q XE/3F2c ^'g_$շL(fjw nf)lD b#~e}U lgdm2W Eh\ybB[VD.KeoK(X ̝)/hb6Xskx_1Uu&4TbXUwtx&\Lr o9 jɄ"zk j2 4AAZr鵹!#'S08mM׉)ŵUǡ!)nO1-n\5(ܟTG>TZ\czTv 0@W1 @0mRvRtdJܼR@F2"54BA6(gLkBiNfRQݼ*0<,805 g>=2R/m/5Ev7;"79n 32 %5Щ3Qƻ ȿ "WյGU QSN-·.{ʞm.WjN'Ԍ,(ڰ`Q%,.@|B O[igOx,(cQs*8!A@!Z\"ɲd vvM(hM#$=Stϑ׷8cZvF#SOLِb!: U|P*VZb֡O+SK/cPx r {/"ٽc30a,KTBf{|Ӵ3Cee\[a0ivQ0PZl3\ҳFc Pg VJ.`Uyq=xu+46\h+ m{]xϰf@>#v㰖)^V.1I퀘 [XٖuZ)`&l{٪9kGA(Uut@]T+y_*\p=fZS*X~p܅m9m* u3oԷ+m!Ig7L_buRXj}Pϸ's7 b ObK#~b-(b\sLD, dҏtfR/;ui%^qb to!PggkXAScNC}ojHb1:fKF qN?.e? qPi|v" &bKq tf"0b]>#V.QpswMcz,@[~b~Q骸U&6 [!+/}azHe2f-K8q1N֪UNSe.,7pDh>z%w497a*Ulmh"sb k75{bP]Q'Ee5wO+uUDwfljE0[w!,чɘY+[؊A}/~]hj?eAgQ<35V' ;o/,lEe. Q6pY2 X 7*S;.+־ɚAՌO.YV\3^<#;(F奱O~Q򧐝vX׳*1v0# M)FhFfDfY~߷NGi'AKq 8Ɛl}V;B&񕯍"D(Ͳ|BEN އ/t$e[CvdCL MYmƎ.TWp =xүew@c%h̨UJ5@Ҧ)pneYJ0P-"aq`7oi,!bZ+q( y9Y̻q8R e8I46eY"[RsHhز4A…o^p^7ܢrg2ݟ\;.ị% l%B`QyG\F[[\% Ơ ^8DUzUl*D5'1EW y;p56b( :7v~(MmSVn`:VB+l"o-;̸ՋL:D, fw~rF#: ߴbΘ%&ILdJq \4m.qv*ٵcDW,3,ᭅFBh@f y7Vr1-qU@!yWn-ET%hY6S2ĭR(Kl.8n4 'l#ԸF.c>cVhj#( 9v>nS(ޮ+ L>B,6:Uj,LS^@fP֕ y,he*5dȇvQbr#SAu0Z{̿ĭLV(6/zeо%r8r4#-%Rsi̳<_/CY2 >ks28{K"\1l^Ɲ&b|i!X\H`j+,B >a* l׻.pJr@-¥Uo-SXR7[d3b5CXams2}43اDF2𜟨KwEƍ/Z1Nd2n'޻NTd|Mx)?fm][~ɗv% Hߒ Ar‡1iмX4X&ʓA~.Z.GI^v|BUɘ_4Kڲ,!A;( (`Sd+GuWtq rZSW5UCMRPXL1m8|@g8̡tlm,]ʪe.4M1}v2rITĭ9~PH߆qdhFܙ7M@yUanEE1lZZ0Pq@uK^W gWA1gx-S%n}Y" "3;'0h[Co-("@}b_mANvNo࿹_wCINvGL슕h?/v|~ S~?a-XҲ+?0TZFfN/E?r1Jⱏ*{ؽ1.U.0s*xw|ᘤ$~I&]C=K0]'ܴ 9}x2i4Xd<&Ƞ6)|d3c .&N{\UԶ6]V aшPA]&ͭZsSg򷃛2*M%^M&u 7bV@/rQMfDQÇV1q8"Emw+_{&$J+;@4gO̲ ˳߁>D/ &Z;GVV^m)|R5H&6=`~ѨnYdzR`M".Eb]R}EBoo`Z&Jx ߙfj5=E" | !Y3&p ι"$g;˪$D4,5M]HJ&X`6,FTE ]+CYV]7Y]a .lͱE 4#1b3 h],tby bpX%%su[f Qnh&Q|D \HoA;`4؇!7AnKa3guBpL(o}K'Wq F \PK$̬qIN},?07)-iܳq5 m2Y (#k|gXR'?#QBo Հ!m}@.˚Arr%-]Y<ȋz&L&{[ÿ2zLc : 3-:4/}iwPch#|Vh|ƹ5rGwmf:w2RL+QqnY4شuD Vv Wj1򺶧kAR+egb*ཏK÷7@4%1M]%T%VX@$l{fvsօ ^W9~V{%S$<"; #6_=΄w}RAbV*bGSR\c4;Lf%DqKswᘀKsMF;BGt뗣 2*qVfh6_lr+$GDwv_'<{)cy9qpV\Uj=ʙlRZA"Φs_;#Hbe&!%> Pԡ!4xҔ”_DTÚnT E]7W%"휆Tv.ͿE€8)e*]{FexĶedTƝFH[Lbv @tTC|Z\pJaAVjZ;cT*)n_!%ў26Θow&f,o `,Z8+ g S78n+$.L/"k}{ Jah*Q~q7|ef+ł1Ʉ2[$c,eAiZhU}$s,G/ TYj"AbweCB̓=ux]Cl&l|4ZrPX45ah  y5`=;9e 4A ئ`yk&XQc C5M0ԳA!o*!0e68GLb` –/(\U˥%b'f bVDI>*)|2C5q!/4=[LH6%i!abEVjU2D~X/UQz>Pܾs6*bes XF ኹJ>lb8鋯A:'"xS!MT%(WB {DAn7oy\GGZ!d}Bh %A*(QG{j:d n -,$f [Bqm)"Lh UP5X[. ~+ 3׮ oaߕhTL,E"c@U]h,נcKpro2t[&y3gzK}F^$mUj1}#wcU1˿1Ífo'VdzIH[tL)ipN9Z*dآiZeQxã'fgyO] jRq To(Xٖ`2)⩑1cx< ٘z0A H򙋖g*C_A,(7!@0@[0I&уTVtNnWN ٘,.'m_*un֠q-%j6f)R ^{K+UF6T/q>6QVeUq3-D%VW[weoUM7ž#f@UZ 5(/$ei+loqi Ւ֮i5J;a3VŸW*[ZUPH8&;$4%a|lq@&oD8@oo/.R.^,?WIBgeЗ< 򦒺NT=2c!ڲ@?XcK xaV]> Lb}SjI4q9LRan}(:Ȍdy1Q0)뙈c7yn*FQ[``mf5{ &hes3=j]RYwjR)4QT*WiVhSl9bʁXj! fkLJ0;wKnT,hyBk>heWK)7=<Wjp*9 eXj7r|aPzv5vq{tS<@*!E2P ^pA6QIGgYvHKxgf!nw+LDVdWzdw ֗=HK0W^ yYww P1߷UKGmoiYNe-=n9sEJxǖ`97'NG EU8ݙƕe C 1J-pDIh%Z x?'a97}O64@tLR|G&theԔ B("d&a.Hee.q~h [0>FV/x -mt@4Z)dEY[fc?2LSASM )6ALU#$sNPZx9qnŸ4#c 4@wt0_JؓU;18#[ SFVXcyNM;*)*̷KGvA "0Kҭ,J"xӏ(jaYŘ7+\ ɔLQa2ih ;TstTD丘 Gf@{Љ?r zVفQ9n_׆v)wڋXaS|۽],q|E0!:RS= Zd/89^+kb uDWl)v8 Af{4(Yyn̰䯍{ {Z6DkRQ@  C^&jD!6q~ _@zH|FZ ՗0Qq{I|"Pz-AC6L-D)4spq`b0^c Kv,(U|EAnp6xށ\.c ^#(1TeLO%bR >JS 0eAH6ʄiWQ4;eTw}xD7 3;'%s~Ҟhܫx};&2}יnnљP+, qe)O0C men6Zl çDRT2|nʎg~ s~`/QUa_{Nߘ3 ADD] 5w `N AV(Ķi5NۻBO'~mt1(\BPM7uF!md ,rlآ^WF'v52PZ܈~'0ZV6P3,K">6[?b/s;vr^QK ZU;xT^LKg,n4/Ҋ(I9 V wC֠*Zp #O5zn@[`)w*K5͙nBK0k9̍5ey.~>b zqZC|Oٖg[3h |3n|Jpnr>ʝ?+*7VPLMb[Qݍ2,e ^ 7:$Di-I:{ڢRS`ʭݞd?]U/ Y8G+}٪Ke ɮPGI"ɭ `4Ɇn8`wlH3% l=V]$0B#N_c/aDĠS4J3z`WeCEwTb9|o1E/bw"v=q7:i.CCheEŰ('sMr֮4"`d{ogԣj7b kR@b/u0(f&ں7ĺ3wQ4y%,4_I[MKS#' K;#;a(:ebJs~WCIxVa]O7o8 Id +/۰'`nMO1I\> 79{Nu7@IPttn,4qW@UZ" v@{>c)u|MȽWI [N"#V>"AKS!vfzK8Cؗɦ[xBRaa5ŹLs`˖!PÝQK'AwCݧs&j)[Y}ٖ2O1jA%:*eKP^}sƎ* + =Rh(}"!>l Zw>e#Er+,Os|^RF A/-=$g,ݡ~1l40Bd)m'Aߚ1J,.kL>E' c~o o0\d{_$טd'\N f@U@{$X 8{'5?hcn5чJ>e/D{6U;fW9XG}[!q13a@,6W3whdy!fQiw*XEx_XfM A`̢\Y,qzc,}{&vndv˫ۂTļbŃ._E˗J2~^b8e203E@EA@.Y'&_]i< qy|a8z#6HRŜc#4/xPJyy7`1t=UCkaϸZpfDpG?A2$h(A5v67 NUocEUy{m%Mȗg0^<%"Ҹķ0UhUe;ZqqF$n}s9J(tV(a9\;I 7p:1vkYFmf:+w)N٥v/V+Lʿ3ATo&>IH&f誶*\sY;k[Yг1"& `Y{pK|EWe;%V4Z*Tۇ1b/"pA AKja q͌.j9U1[BG8#,d- sZLpt`oiU> )&Y9!.,RwRYPXC"FXlxln9۩3Y< je,e+6"v]۸6V>p#q7M|Z& M'i4xѭExq1PѵʉQ6hN&OeӦA"hd0ea1 mҎZk %j=Wt RR? G"b*Km~hW1/e9|sNnOZy UQV8_ʃQ['y$1,A98`rUX~܍@A,AAsYVjߘ7.i\L˩+e"HBhQh*{֫{/Yj*SM!dQzc:0ˌ9`~^ 56e&HVaX*uor;M*, hYi̻*0^a#ܫDފN: 8!x+k Xc*8>S0{\ Zô6.XP. B`sCZ?(ca K0K 1:ZE[.1,^;&:x*2{%; robTohV+g>zCNbmeawU+K0b8|=g*d4=ĨTRG~bj*) oAi0\EK 6"Tþ"l 4- vN>LA*{%ADXPDwao0Y}r0GȏZfw?Mܰ.iw.( S& 9UPo.sٜKo/><$UFx%071>F6KHq Dz\pC厭w% .*%`x8nұ,݌tTBext.rE.1vS UdA z4\k*LA.h{?IGDt)4XnBlĺvg},UܼKn̽^tgLnxJ9^3l"$aȁ LM/h;ʦz+%l5 ۫( ӵ8 z[.1uW8^ZoKswXKLb/ q"D= xD\b^}VWYL+dV̦h /p/,BDwTzo{!՝o苓f#kf࠱>ABl](ɨ' CfjhYi5aB A/1q )E(o2?Ɗ`{>6"Vdlt֮*x:Q`6dіZĿDW3z]#`4q*O䕝:i@Pr4xw-^+\9yA̴Y9&܉t +U_XPhq J dœ[_:Lo|!գ)kO4/2z0?!wO8o [>(jbT7/GcdGEc Md75!v BF<1,!*"3LtJK%NzBu OYG1bH{Kpeo%o a ʼney06&Lp5 hP^cXU{?1qLeÊ#}0[͑XWT<#+%K\SH0_I$UMҷAt#5<߆t >J=%SG#A>Jt*#m/D0O ހ~п ,W_P#H`.%-ۿL _+%7/*dZgYA~N|,H+3ƩO7~na0aWZZӱ>.6w@ TVm }BGDx%)dV4&0 f,4Khulpb\ӱ 3*Q0iUO([FO;NIED BII0_r1%l%o1v"09.!pkj4XRXpѝ|+6prŘn] n^R# U<!#(8Hiem - [N`J.T҉S" ROhk %8 u >)geQx`.q,qZ"i/e0>UqNJ\x @+rհnahG7yB!(D(̳-X'4f9[6;YP̦t35<]*%[ɇ]@nOD6#Nҽ^0yE^oh0`e;&-@yd(tx)1p'`R^E-5{Ga[_-9TեxL+m8ipV\rXqxE.ձwNupܶ9ycu)فR9:ҨMވj1Yj*!u]$\-l /£y\1i撬=Ls>Qiw`fT0dШimiX&e8TUv"( Eȯ#cpN,z0n2ZwYZP*A oga`@ Q/i -@蝪FZDM©_0 :\ΦuM\ E6V8ք GB@l|ah+Ȱ*Q'lE^fop] sYsnarX" CR%8h 䔥neIp3F0?0 hyv!^fji4eNK[x8Gj f%af/?c/ZK mW?K9A]!fvq-{h4(Q @+ZG嗟v\*,fEl^&8q[LP"rlj4 XZ;B"US l>).&. \P{)pfx2>/¬r/xx/F%Q_L|?!Fc|U_ n](N|B#P86Y蛁#agAEA18A)QxJGr.0T3W*̣]땊)*W IV]w"]Y .VS.9yT(հe3[ķc wTQ!|Nڌ\ZKxE :'v"ۊkUE3F\ g'uk,Q{45JᎾp*4J7rCe./5.a–-OlNF#+Ǹ*Ih+4{ 1%zhS<˛--,[9=S1q12˷`Hsc0S\ U}Y>X.Q)(7+5)Jw3eRkAv`s[@8weg\@5 -L@ o /1pV{Vrhde &Z b{.uu(Ec 72ؖdHg&4S-Ūyfd܊hhrܸw !ouZюoU2;`ٕX+rJRZ=Մُh6\@vąMψ:C0qIP"X9 5~.YT#DS_4\ :|8"OEs; Z*ٰ(G6gBPKߐ|{FdP3JI^ OxfeMܮG@oQ?vnR (cH ؐXm@~@Ǡ¶!EL7=VPUwx `/~1ZsL+F^* (t$SDKXwQ!aPM zŗvpj%=!h8%2FfzEiYBzO &bt hUñ#\+*d/+?nPap!N@F.ɖ{ a(%Ǚ B\b&t}gii[lG&6h<D;~.LӔ|dQ,;X4^kQl̉@5sXv0\#c!(mjYJB<76ŵ1U|. ZKffx3HD9) Icc.#H1e) ֡ܬ$]|O!x3r6c.m&88Hܗ+Dj@о&{0EQJiT8E QM/&g[oFO.[(jX$w$ݰ9:XMҸ!n%U-A@ ƒ6@~ |1H06T^ҎKGh ʦx~ݡ(]Z-Vbfod0'ZWlsC*4)8ahP#I%D\m=4 +>VM'ZHUFKwy](BQk - .2ϔT axUvz.YWX9ʨsacnC@385)_#ꇡNB0]Aġ,=&40 `'qolø ~+ R-]Q*OG4)!⢓B`= JwSU}پ,Xbcn\Me7'VL)bōm!>,ߊ_TA99P)Uce\STF=KpA FB,Xk[.qfgҟqݸjj: >b2m& [;z,0a;b D?3xhX7bʗ%p4{;#._15߷.T;oQq"'kaP^HװE#]F]V=t[)l=%e 3qnz/4; Uh JtFĺS[fV*,XF3Z@Rk4!ayr?˨9.ha a Jހb7<_اH ,uQ2y ;֭C\wz!106,F{y!ώP7D*w+bzIrOܵqK}6dDLO %,Sz')a SK2+%Ĥ7 *%5AЇ k EP8hdR[8-5Ƃ#d:dإJ卛{:[s{O":(d+ R]d] %Up7(EGs]#dǁ%7B›Hdp/w_ kjnY N1򂶷xH׶0 ɿy.W^y px{>!֤mmzT.wuM©!r xw^ݒKUT.5V0Ʌ aq w%Fyfj 7mK Kt'3UL.5,ɿ~mbĜMͳNp=1+f5Chbw\LȆ%$RRM#..9R炇?E!Db(;ɛٹ+x~ѱ&f#׉IND40JD[|/ /N V5T>%4k&]YcnR\,2p+QcK2<nW,̡RȬI6ylu$ |DmfK)-МSeA_æi;?iq&Vjterxc]q,YP\K`'Ld"&l~N +9uCaRmލR&oFpTFW١Z`]۟$uen"e~MYu}@{PmB\:B5( SDgR..)soc`"fy)^P!P:f3%`^J1jwHQ@*a _snpl>eCT S+'{.V U(1PXl@2AZ-|9yiW #O %w3k6afjJ;cM0yJ>FlQAPVS-賠86ja@$Z7eKf:?!k * xB cs̽UJ%+d|M,@ 8{scmÈW-65 KufrԸ K"(!^y?FeW@`lf~zYSg[T3f7@nez]C.0@]r,vX*w2 fj+tUC1^x{Ǹb;OB qG,ޣDEzj-`&lwءy ?gAĴ Cp゠#l 7g1{XU0.m7;0U\.RβUU0 [[Fp\"9@QqAlLveL兘-a+X ~O$Kdǖ:n!WhL؈-֏ܻ/\qR͌ÌZ8}I-jƘ`eK07!% /UɚnT",o(p~P-г&.~cJ#"@&_, ̂°ަe FT 9L o2p 2P+d`hg{vo_1-~cO1TOw K,L栂ޕ&D@u.٬ƊU.}ȚV4dU[pJ|ҖU dX¨̧Yȷ-UhDvѳaR0Y%obQT^pGȈ-K(Jdv -` ûw+D^ NϕR!M_IWGRЂ{ M%jNkFR[;G3 PwZ +/aEu>E#dyVf xXov7$%)ڹG)0zj#AjY mxFū D.2#"vp/p6=s(ܮQ悆X`m7XJȇgq`Ӄmka ̶M)RB`[ &-%kTӪ10q6 0z+#+f#A|$o%C?؏TWLXx؎TY6|Ԫa0@HH0Td ZVeArQ|m"4 >me,5; +DB(lR[̯$ P )BCD\`Mwa97b(&3h[tԁeQx(\$b#Bs 095BEуnWS8)|D=tЕPKh]-MXP2f#Rp:V's0vx<&=uiو# mm  s7M16` KdV(`ef<^ҸL[\"]1ޠ|0<^UycG$9?bˈXrbjhx @RsWKޭ6ЃW,pWf|j KU;\Y^a! M(.Xc*86 er+U'F_<]=q\30C Ҍ9.,Bs 2R͌J4 ǵHÃFYPGÌ3^̗`z3n l I4m̃v7Ohdr5* E& 5`_Mie3%hɉp1Z(k@*E'^<+uɉ]pCL[Y%TlDUt ;V']kp0]& \D(:&iu瘿Hmy/%^& ei-V,))> Z?e[4!ݓb)" W{+eӕ5y2,w,W9zK/B{f­|6 F&p+z{P鵗Rl<3{z*Ux+qa|"ysBu@zYD,9^K5K}P-艔K>f躋y/#2Gdqn` ^ )Kaǔ) \WB-90 ys2[Lfc|H*̭@IK95!t'4L2EM!21 kj92 @L̕ͅv0ӄ11|UpQ79En`1,g'yx (K k!0ґ:ROҞ{Ѐ0md=jEdۮ1 B%j Utn]^cmԤL5,‹cl5Z muzZ wK7uX 1mBO+k0q6L7V` sNa=HC:a4BÁCݿeͿ)y-4F@ H9Y,ړ!|  ,ض\j`(Ja}NNQ t,@q]EBPF.ES-ҡFF4{1-GSIjfuQz|3#3j.Fc8z1hGst옩(.UU 3xc v%,&UxC +B6=ܾOd802›KnnAo}XgF͢cϽ/N?1R>-+u^ ȍxUnC`UQvCw;_pT-0|~ 85[r>V7Jm{>(Ÿ%DSfŨ~ Dq$@ ˂pG8eU&6 xcbC6Y%%%0p!mh+G@a-P2-=ڵ+Mvek,H!*gy3ʀ2r% 3^B6(wP= 4)G4TZEH3V<[A@#!@>)vxa'/cmJ(Pa8^c7}" ʯ+9[/P\@@#PV]QmObC)`ܡ'}PŏiQ'6;h4kY%̳1"![18eq`áYi.D>yFg.Z?aIu`}B_yeVA 7UKA9ؠΎuN.a! *iAM-*F LiĬvܵ~vm>NH`KeSFY3B*cN2F#sw˖䬹AeYZ R\KX{׬v$.k ʿ3Ef֦'W=0T_Kck^n-ZB0\RJ ReA%u5P ɫ ߃ kɹ_l m p,edgS{m{s ,hzki͡y-7͑ m+=)xSp{gG`XJcU9fhbL@4. ng\fgţl~&,&6E-n,&B LejQ Fy4TZ6_RR`t^5 4i棣}9鰘"O,f?LYA˜y]) ]+0gQBI FqU/]ыx0zL)%P3Ig̼.) 12W%\j~JٚK mZal٧a @jWC/71 L+eU,<L5dR,69ơ+Zn? rȌ.+)2CAR#;25< @;=1O67:Y"~5I%]8UċBk0ǥv&Wj8PXJ,68HY;U~SGJ~dꩤyEL֒T/yd ŰǴh18\Rf$Ӝ~V 4l֌*6é<}"u(c xavf ۹:%% %؏sf1#1!oZ_8\`T֮Xg&lC`ULP9MLFt}lk\@+Mʈ1x(K3b-&Ҕj6@`!QV.Xl4>Ax啇6URLD6r7KkԲM/u TDA/k6@Q5QY a*6Xg +nԠ">pK3Q.8qMl.*/G0O`jyߋF[W.<\Tqh8MHY#7]ŀi4"a;qG Nw;%F6FXSWuf1_ht+X9IzJNjS`H+meyb7 1^I_ Zns/ ;-2 Jlo.30.w=_5R(Wph袹L:/1_k6h-# &4@s?PF0R(s'"8NLq5TSHMʱV ᴄ Zv%8jxQ*E,(9EjhةH m7x'.L@lpZ`\Qa,Y,65k6g^ˤe`K>'.Vrfq LJ М6isV*}0Q;Eo)W̒jзm wJ-0%w?A tj7S$q^if.LF  Ma!0ۺOИtèXZ$)g v}m? *>e\Ee>3V>PU߂)v0]ַ0#L9WٌTBq[m_|{㢚Jȵ T[e 8VܬjR^ TF4 hdlcdp b[j^^%L7pzfQ>udAc~tPc3TA¯n{Q2q~ 9VK:T@aL/pL0,L:eo!* Jh.jR󽌤n@>%%%TA.23<Ŏ Vn?fHm1dSLüe^Ⱥ+p2(cظ4myaaZh^:CI䀛unr4$6֌;FXuBzc?3FǵyHr=6?*=Vd'## =1 JeB[oJ(Pji&ܥ[dFTyDP!:S:[Hp@t!?drߕJnʌÍ1=Qh'Q>VXj":ˇTXd@HfX Q7+!~:'J1Fd̞` )hӥ%* )fO  ,%j\-~Fzad3/KYEky'.˦4%\/.<U*4)enlX..>hip&Y@ɔ+TUƌqTńܭm xauyn8ͽ՚fƽRiO7cN <N\O*R\W剪6S^;p+G33FEb{YXU|ehG<" v(T¥1J]!w"81FjUN#-;́?U 2Ytw&#)` $I.@4\JhʔpVXN&Ռ!~ C MC}+
Linux 4gvps.4gvps.com 3.10.0-1127.18.2.vz7.163.46 #1 SMP Fri Nov 20 21:47:55 MSK 2020 x86_64
  SOFT : Apache PHP : 7.4.33
/proc/self/root/usr/share/doc/gamin-0.1.10/
38.135.39.45

 
[ NAME ] [ SIZE ] [ PERM ] [ DATE ] [ ACT ]
+FILE +DIR
AUTHORS 0.149 KB -rw-r--r-- 2007-07-04 13:36 R E G D
COPYING 24.892 KB -rw-r--r-- 2007-07-04 13:36 R E G D
ChangeLog 81.305 KB -rw-r--r-- 2008-11-12 20:45 R E G D
Copyright 0.054 KB -rw-r--r-- 2007-07-04 13:36 R E G D
FAQ.html 3.87 KB -rw-r--r-- 2008-11-24 15:23 R E G D
NEWS 9.482 KB -rw-r--r-- 2008-11-24 15:23 R E G D
README 1.48 KB -rw-r--r-- 2007-07-04 13:36 R E G D
TODO 2.592 KB -rw-r--r-- 2007-07-04 13:36 R E G D
callbacks.gif 4.408 KB -rw-r--r-- 2007-07-04 13:36 R E G D
client_server.gif 4.516 KB -rw-r--r-- 2007-07-04 13:36 R E G D
config.html 6.722 KB -rw-r--r-- 2008-11-24 15:23 R E G D
contacts.html 5.232 KB -rw-r--r-- 2008-11-24 15:23 R E G D
debug.html 7.2 KB -rw-r--r-- 2008-11-24 15:23 R E G D
debugging.txt 1.258 KB -rw-r--r-- 2007-07-04 13:36 R E G D
devel.html 4.852 KB -rw-r--r-- 2008-11-24 15:23 R E G D
differences.html 6.61 KB -rw-r--r-- 2008-11-24 15:23 R E G D
downloads.html 4.102 KB -rw-r--r-- 2008-11-24 15:23 R E G D
gamin.html 31.626 KB -rw-r--r-- 2008-11-24 15:22 R E G D
index.html 7.914 KB -rw-r--r-- 2008-11-24 15:23 R E G D
internals.html 5.293 KB -rw-r--r-- 2008-11-24 15:23 R E G D
news.html 14.117 KB -rw-r--r-- 2008-11-24 15:23 R E G D
overview.html 5.199 KB -rw-r--r-- 2008-11-24 15:23 R E G D
python.html 6.145 KB -rw-r--r-- 2008-11-24 15:23 R E G D
security.html 6.609 KB -rw-r--r-- 2008-11-24 15:23 R E G D
server_structs.gif 8.672 KB -rw-r--r-- 2007-07-04 13:36 R E G D
socket.txt 1.592 KB -rw-r--r-- 2007-07-04 13:36 R E G D
using.html 4 KB -rw-r--r-- 2008-11-24 15:23 R E G D
REQUEST EXIT
Mon Oct 20 18:05:19 CEST 2008 Daniel Veillard * server/local_inotify.h server/local_inotify_syscalls.h: remove the local copies of the linux kernel inotify headers * configure.in server/inotify-kernel.c server/inotify-helper.c server/gam_inotify.c server/inotify-path.c server/Makefile.am: associated cleanups, check for the presence of sys/inotify.h and use it, patch by Adrian Bunk, solves #553158 Mon Oct 20 17:39:28 CEST 2008 Daniel Veillard * Makefile.am configure.in: add configure switches to restrict building the server or the libs, as Gentoo had a dependancy problem, default behaviour of building both unchanged, patch from Rémi Cardona #530635 Mon Oct 20 17:35:20 CEST 2008 Daniel Veillard * Makefile.am configure.in python/Makefile.am: simplify python bindings installation, patch from Rémi Cardona #530635 Mon Oct 20 17:25:48 CEST 2008 Daniel Veillard * configure.in: the glib dependency is not needed for libgamin, patch from Rémi Cardona #530635 Mon Oct 20 17:19:01 CEST 2008 Daniel Veillard * Makefile.am: change daemon build flags, patch from Rémi Cardona 2008-08-15 Matthias Clasen Bug 403158 - Leak reported by valgrind * server/gam_fs.c (gam_fs_free_filesystems): Don't skip every second list element when freeing. Wed Jun 11 12:27:02 CEST 2008 Daniel Veillard * acinclude.m4: add quotes for AC_STRUCT_ST_MTIM_NSEC, patch from Daichi Kawahata, fixes #319868 Tue Jun 3 17:30:51 CEST 2008 Daniel Veillard * configure.in: patch from dodji seketeli to change configure.in to use AC_USE_SYSTEM_EXTENSIONS instead of AC_ISC_POSIX, otherwise struct ucred won't show up. 2008-04-04 Ray Strode * server/inotify-path.c (ip_watch_parent), (ip_start_watching), (ip_event_dispatch), (ip_event_callback): If a file being watched doesn't exist yet, then watch its parent to find out when it shows up instead of polling (bug 476938). Mon Aug 27 12:22:40 CEST 2007 Daniel Veillard * libgamin/fam.h libgamin/gam_api.c: applied suggested changes from Ryan Underwood about missing (empty) entry point in the API and ABI, should close 398405. Mon Aug 6 10:39:13 CEST 2007 Daniel Veillard * configure.in: applied patch from Daniel Drake to fix the way optimizatio and debug flags are handled, fixes #450262 Fri Jul 27 16:50:02 CEST 2007 Daniel Veillard * NEWS configure.in doc//*: prepare release of 0.1.9 rebuild the docs Wed Jul 4 15:37:23 CEST 2007 Daniel Veillard * server/gam_kqueue.c server/gam_poll_basic.c: changes from Brendan Cully to compile on OS X 2007-07-03 Ray Strode * server/gam_service.c: * server/gam_fs.c: * server/gam_fs.h: always poll if --disable-inotify and --disable-dnotify are passed (bug 335411). 2007-04-11 Alexander Larsson * server/inotify-helper.c: * server/inotify-kernel.c: * server/inotify-path.c: Handle inotify initialization failing better by only setting initialized to TRUE if initialization succeeded. Patch from Robert Clark (robert3@ratty.org.uk) 2007-03-07 Alexander Larsson * server/gam_poll_basic.c (gam_poll_basic_poll_file): Don't run polling idle handler if not needed. Mon Nov 20 18:01:03 CET 2006 Daniel Veillard * libgamin/gam_data.c: applied patches based on Michael Banck suggestions to build on Hurd and kFreeBSD, should fix #377050 and #377066 2006-11-20 Alexander Larsson * server/gam_inotify.c: (gam_inotify_init): Enable the basic polling code for the inotify backend so e.g. polling on NFS works. Tue Oct 31 15:33:28 CET 2006 Daniel Veillard * NEWS configure.in doc//*: prepare release of 0.1.8 rebuild the docs Wed Oct 25 18:14:11 CEST 2006 Daniel Veillard * configure.in: applied atch from James Andrewartha fixing compilation with Sun's compiler c.f. #365029 2006-09-08 Alexander Larsson * server/gam_inotify.c: (gam_inotify_send_initial_events): Send correct initial events for missing files 2006-09-08 Alexander Larsson * server/gam_connection.c: (gam_connection_close): Don't remove 0 source (from connection flush timeout fix) * server/gam_inotify.c: (gam_inotify_add_subscription): Add the sub to the listener so it will get freed with it * server/inotify-helper.c: (ih_sub_foreach_worker): Don't free sub_list items twice * server/inotify-sub.c: (ih_sub_get_filename): Actually get the filename 2006-09-05 Alexander Larsson * lib/gam_error.c: * libgamin/gam_api.c: * server/gam_connection.[ch]: * server/gam_server.[ch]: Don't use running timers for server idle timeout and debug signal handler. 2006-09-05 Alexander Larsson * server/gam_connection.c: * server/gam_eq.[ch]: Only run connection flush timeout when needed. 2006-09-05 Alexander Larsson * server/gam_inotify.c: (gam_inotify_init): Install kernel monitoring hooks to fix previous commit. 2006-09-04 John McCutchan * server/Makefile.am: * server/gam_inotify.c: Ported to inotify-helper. * server/inotify-diag.c: inotify-helper debug output * server/inotify-helper.c: easy interface to inotify * server/inotify-kernel.c: kernel part of inotify-helper * server/inotify-missing.c: missing list part of inotify-helper * server/inotify-path.c: path based interface for inotify-kernel * server/inotify-sub.c: inotify-helper subscription * server/local_inotify.h: Updated to latest version * server/local_inotify_syscalls.h: Updated to latest version The above amounts to a complete replacement of gamin's inotify backend with the current gnome-vfs backend. 2006-08-28 Alexander Larsson * libgamin/gam_data.c: (gamin_data_reset): Empty read-buffer on connection reset. Patch from Ariel T. Glenn 2006-08-22 Alexander Larsson * libgamin/gam_fork.c: (gamin_fork_server): Open fd 0-2 to /dev/null to avoid possible problems if things write to them. 2006-08-16 Alexander Larsson * libgamin/gam_api.c: (gamin_check_cred), (gamin_try_reconnect): Never close the connection fd until FAMClose. That can easily cause clients to use 100% cpu with a closed fd getting into the main loop. (#351633) Fri Aug 11 12:52:34 CEST 2006 Daniel Veillard * python/Makefile.am: applied patch from Loïc Minier to allow install when built out of tree. * configure.in: fix python detection code, updated with libxml2 one. Fri Aug 11 11:35:50 CEST 2006 Daniel Veillard * libgamin/gam_data.c: applied patch from Loïc Minier/Petr Salinger to build on GNU/kFreeBSD Tue Apr 25 16:40:31 CEST 2006 Daniel Veillard * configure.in: applied patch from Joseph Sacco for python detection should close bug #338524 * configure.in server/gam_inotify.c server/local_inotify_syscalls.h: get the damn thing to compile again on Fedora Core 5 * libgamin/gam_data.c: cleanup 2006-04-19 Bastien Nocera * lib/gam_error.c: (gam_error_init): avoid changing the signal at all as it would break applications if they setup their signal handlers with sigaction, and used the SA_SIGINFO flag (which would change the number of arguments to the handler) Mon Mar 6 13:52:40 CET 2006 Daniel Veillard * gamin.pc.in: fix cflags for pkg-config as raised by Claudio Fontana in the mailing-list Thu Nov 24 17:15:49 CET 2005 Daniel Veillard * configure.in server/gam_inotify.c: inotify.h may be found under too Thu Oct 27 15:28:14 CEST 2005 Daniel Veillard * configure.in gamin.spec.in NEWS doc/*: release of 0.1.7 Thu Oct 27 13:00:25 CEST 2005 Daniel Veillard * server/gam_listener.c: applied patch from Ed Catmur fixing gam_server segfaulting on inotify backend, should fix #319697 Thu Oct 27 12:51:17 CEST 2005 Daniel Veillard * configure.in libgamin/gam_fork.c tests/testing.c: applied patch from Daichi Kawahata to compile on systems without setenv() Tue Oct 25 2005 Christopher Aillon * server/gam_dnotify.c: * server/gam_hurd_mach_notify.c: * server/gam_inotify.c: Fix up minor leaks of GSource* Thu Sep 22 10:07:30 CEST 2005 Daniel Veillard * server/gam_connection.c: reproduced RH bug #168744, one need to force nfs mounts to use poll and run from nfs. Seems to have a fix for it. Thu Sep 22 08:54:55 CEST 2005 Daniel Veillard * tests/Makefile.am: cleanups for make valgrind Tue Sep 20 17:12:28 CEST 2005 Daniel Veillard * server/gam_connection.c: trying to fix RH bug #168744 Sat Sep 10 12:46:38 CEST 2005 Daniel Veillard * server/gam_connection.c: fixed a portability problem raised by Sjoerd Simons Fri Sep 9 13:08:09 CEST 2005 Daniel Veillard * libgamin/gam_data.c: portability fix for non glibc systems fixes bug #315615 by Diego Pettenò Fri Sep 9 12:43:53 CEST 2005 Daniel Veillard * configure.in: I lost one of the changes for #315368 as pointed by Joseph Sacco Thu Sep 8 14:55:07 CEST 2005 Daniel Veillard * NEWS doc/gamin.html doc/news.html: release of 0.1.6 * configure.in: release of 0.1.6 and python detection fix #315368 * Makefile.am tests/Makefile.am: adding make valgrind now that 3.0.1 works fine. Thu Sep 8 08:10:15 CEST 2005 Daniel Veillard * server/gam_listener.c server/gam_connection.c: removing the subscriptions memory leaks when running under inotify * server/gam_server.c: need to make a pass over all C files to fix the headers and Copyrights Thu Sep 8 10:01:15 CEST 2005 Daniel Veillard * lib/gam_error.c: restore stderr debug on GAM_DEBUG Fri Sep 2 11:17:17 CEST 2005 Daniel Veillard * tests/testing.c: applied patch from TomPh adding link and chown commands. * tests/scenario/10.tst: patch from TomPh fixing the number of events to expect Fri Sep 2 10:57:12 CEST 2005 Daniel Veillard * configure.in: applied the 3 patches from TomPh plus a bit of tweaking to not enable the debug api by default 2005-08-24 John McCutchan * server/gam_inotify.c: (gam_inotify_is_link): Revert my last change. 2005-08-23 John McCutchan * server/gam_inotify.c: (gam_inotify_is_link): Use IFLNK instead of ISLNK. 2005-08-22 John McCutchan * configure.in: White noise. * python/tests/dnotify2.py: Print some debug output. * server/gam_debugging.h: Remove the inotify definitions (they were never used). * server/gam_poll_basic.c: (gam_poll_basic_poll_file): Fix a poll limiter bug. * server/gam_poll_generic.c: (gam_poll_generic_remove_missing): Remove an assertion that was causing a crash. (gam_poll_generic_scan_directory_internal): Fix a poll limiter bug 2005-08-19 John McCutchan * server/gam_poll_dnotify.c: (gam_poll_dnotify_scan_callback): Sprinkle in some asserts. 2005-08-19 John McCutchan * server/gam_poll_basic.c: (gam_poll_basic_poll_file), (gam_poll_basic_scan_callback): Fix another crasher. 2005-08-19 John McCutchan * TODO: Clarify a TODO item. * lib/gam_error.c: (gam_error_handle_signal), (gam_error_signal), (gam_error_init), (gam_error_check), (gam_errno), (gam_error), (gam_debug): Fix a bug in starting up /tmp/gamin debug stream. * server/gam_poll_generic.c: (gam_poll_generic_scan_directory_internal): Fix crasher. 2005-08-19 John McCutchan Patch from TomPh * configure.in: Properly define HAVE_LINUX when configured with --disable-kernel. Clear up build options. debug & debug-api disabled by default unless CVS directory exists. Use -Ox optimization only when -g is not used. * server/Makefile.am: make some _SOURCES conditional on ENABLE_INOTIFY & ENABLE_DNOTIFY. 2005-08-18 John McCutchan * python/tests/basic4.py: show callback debug * server/gam_inotify.c: (gam_inotify_init): Enable the basic poll backend. The basic backend will be used for paths/filesystems marked as poll when inotify is enabled * server/gam_poll_basic.c: (gam_poll_basic_init), (gam_poll_basic_poll_file), (gam_poll_basic_scan_callback): * server/gam_poll_generic.c: (gam_poll_generic_scan_directory_internal): Bug fixes to poll backends. 2005-08-17 John McCutchan * server/gam_inotify.c: (gam_inotify_add_subscription), (gam_inotify_remove_subscription), (gam_inotify_nolonger_missing), (gam_inotify_nolonger_link), (gam_inotify_add_link), (gam_inotify_scan_links), (gam_inotify_stat_changed), (gam_inotify_poll_link): Redo link handling. This should work around the race. Also fixed some real bugs in the last iteration. 2005-08-16 John McCutchan * server/gam_inotify.c: (gam_inotify_data_new), (gam_inotify_process_event), (gam_inotify_send_initial_events), (gam_inotify_add_subscription), (gam_inotify_remove_subscription), (gam_inotify_init), (gam_inotify_is_missing), (gam_inotify_add_missing), (gam_inotify_rm_missing), (gam_inotify_nolonger_missing), (gam_inotify_scan_missing), (gam_inotify_is_link), (gam_inotify_nolonger_link), (links_list_compare), (gam_inotify_add_link), (gam_inotify_rm_link), (gam_inotify_scan_links): Attempt to handle links according to the FAM specification. Racey as hell. * server/gam_subscription.c: (gam_subscription_shutdown): * server/gam_subscription.h: Add shutdown function -- not used though. 2005-08-16 John McCutchan * server/Makefile.am: * server/gam_poll_basic.c: (gam_poll_basic_init), (gam_poll_basic_add_subscription), (node_remove_directory_subscription), (gam_poll_basic_remove_subscription), (gam_poll_basic_remove_all_for), (gam_poll_generic_node_changed), (gam_poll_basic_poll_file), (gam_poll_basic_scan_callback): * server/gam_poll_basic.h: Add a basic poll backend that does pretty much what the dnotify poll backend does, but without any kernel support. * server/gam_server.h: Fix typo. 2005-08-15 John McCutchan * server/gam_inotify.c: (gam_inotify_process_event): Change debug output 2005-08-15 John McCutchan * server/gam_dnotify.c: (gam_dnotify_directory_handler_internal): * server/gam_poll_dnotify.c: (gam_poll_dnotify_delist_node), (node_remove_subscription): * server/gam_poll_generic.c: (gam_poll_generic_trigger_file_handler): * server/gam_server.h: s/DESACTIVATE/DEACTIVATE 2005-08-15 John McCutchan * server/gam_inotify.c: (mask_to_gam_event), (gam_inotify_mask_to_gam_file_event), (gam_inotify_mask_to_gam_dir_event), (gam_inotify_process_event): Treat IN_MOVE_SELF the same as IN_DELETE_SELF * server/local_inotify.h: Updated * server/local_inotify_syscalls.h: Updated 2005-08-15 John McCutchan * server/gam_poll_dnotify.c: (gam_poll_dnotify_poll_file), (gam_poll_dnotify_scan_callback): Fix compilation when #define POLL_VERBOSE is set. 2005-08-15 John McCutchan * server/gam_poll.c: * server/gam_poll.h: Remove old files 2005-08-15 John McCutchan * lib/gam_error.c: (gam_error), (gam_errno): * lib/gam_error.h: Move gam_errno here (was in gam_poll) * server/Makefile.am: * server/gam_dnotify.c: (gam_dnotify_pipe_handler), (gam_dnotify_init): * server/gam_dnotify.h: Adapt to gam_poll_generic/gam_poll_dnotify. * server/gam_inotify.c: (gam_inotify_init): * server/gam_inotify.h: Adapt to gam_poll_generic/gam_poll_dnotify. * server/gam_node.c: (gam_node_emit_event): * server/gam_node.h: Rename gam_poll_emit_event to gam_node_emit_event. * server/gam_poll_dnotify.c: (gam_poll_dnotify_init), (gam_poll_dnotify_delist_node), (gam_poll_dnotify_relist_node), (gam_poll_dnotify_flowon_node), (gam_poll_dnotify_flowoff_node), (gam_poll_dnotify_poll_file), (node_add_subscription), (node_remove_subscription), (node_remove_directory_subscription), (gam_poll_dnotify_add_subscription), (gam_poll_dnotify_remove_subscription_real), (gam_poll_dnotify_remove_subscription), (gam_poll_dnotify_remove_all_for), (gam_poll_dnotify_scan_callback): * server/gam_poll_dnotify.h: Dnotify specific portions of gam_poll.[ch] * server/gam_poll_generic.c: (gam_poll_generic_init), (gam_poll_debug_node), (gam_poll_generic_debug), (gam_poll_generic_add_missing), (gam_poll_generic_remove_missing), (gam_poll_generic_add_busy), (gam_poll_generic_remove_busy), (gam_poll_generic_add), (gam_poll_generic_remove), (gam_poll_generic_get_time), (gam_poll_generic_update_time), (gam_poll_generic_get_delta_time), (gam_poll_generic_trigger_file_handler), (gam_poll_generic_trigger_dir_handler), (gam_poll_generic_trigger_handler), (gam_poll_generic_scan_directory_internal), (gam_poll_generic_scan_directory), (gam_poll_generic_first_scan_dir), (gam_poll_generic_get_tree), (gam_poll_generic_get_missing_list), (gam_poll_generic_get_busy_list), (gam_poll_generic_get_all_list), (gam_poll_generic_get_dead_list), (gam_poll_generic_unregister_node), (gam_poll_generic_prune_tree): * server/gam_poll_generic.h: Generic portions of gam_poll.[ch] * server/gam_server.c: (gam_show_debug), (gam_init_subscriptions), (gam_server_install_poll_hooks), (gam_poll_remove_all_for), (gam_poll_file): * server/gam_server.h: Adapt to poll changes. Add poll_file callback for poll backend. 2005-08-11 John McCutchan * lib/gam_error.c: (gam_error_init): * server/gam_node.c: (gam_node_set_pflag), (gam_node_unset_pflag), (gam_node_has_pflag), (gam_node_set_pflags), (gam_node_has_pflags): * server/gam_node.h: Move MON_* pflags into gam_node. Add access/mutators for pflags. * server/gam_poll.c: (trigger_file_handler), (node_remove_subscription), (poll_file), (gam_poll_scan_directory_internal), (gam_poll_scan_callback), (gam_poll_scan_all_callback), (gam_poll_init), (gam_default_poll_add_subscription), (gam_poll_first_scan_dir), (gam_poll_debug_node), (gam_poll_debug): Convert all code touching ->pflags to use the access/mutators from gam_node. Indentation fixes. 2005-08-11 John McCutchan * server/gam_server.c: (gam_init_subscriptions): If the environment variable GAM_TEST_DNOTIFY is set, inotify won't be used. Thu Aug 11 10:57:19 CEST 2005 Daniel Veillard * server/gam_server.c: fixed compilation when inotify support is not configured in. Wed Aug 10 23:59:02 CEST 2005 Daniel Veillard * libgamin/gam_data.c server/gam_kqueue.c server/gam_pidname.c server/gam_server.c: applied portability patch from Johnny Lam for NetBSD. 2005-08-10 John McCutchan * server/gam_dnotify.c: (gam_dnotify_add_subscription), (gam_dnotify_remove_subscription), (gam_dnotify_remove_all_for): Remove the consume_subscription garbage. * server/gam_listener.c: * server/gam_poll.c: (gam_poll_scan_all_callback), (gam_default_poll_add_subscription), (gam_default_poll_remove_subscription), (gam_poll_first_scan_dir): Remove consume subscription garbage * server/gam_poll.h: Again. * server/gam_subscription.c: Typo Both test suites pass under dnotify with these changes. 2005-08-10 John McCutchan * server/gam_dnotify.c: (gam_dnotify_init): Use the new gam_server_install_kernel_hooks. * server/gam_inotify.c: (gam_inotify_init): Here to * server/gam_poll.c: (trigger_dir_handler), (trigger_file_handler), (gam_poll_init_full), (gam_default_poll_add_subscription), (gam_default_poll_remove_subscription_real), (gam_default_poll_remove_subscription), (gam_default_poll_remove_all_for): Use the gam_kernel_dir/file_handler from gam_server.h instead of dir/file_handler. * server/gam_poll.h: Move a bunch of functions to gam_server.h * server/gam_server.c: (gam_exit), (gam_init_subscriptions), (gam_add_subscription), (gam_remove_subscription), (gam_server_install_kernel_hooks), (gam_server_install_poll_hooks), (gam_server_get_kernel_handler), (gam_server_get_poll_handler), (gam_kernel_add_subscription), (gam_kernel_remove_subscription), (gam_kernel_remove_all_for), (gam_kernel_dir_handler), (gam_kernel_file_handler), (gam_poll_add_subscription), (gam_poll_remove_subscription), (gam_poll_remove_all_for): Provide a set of generic kernel/poll backend functions. Now poll backends are pluggable. Code now uses these instead of the backend_ variables. * server/gam_server.h: Function prototypes. Both test suites pass under dnotify with these changes. Tue Aug 9 21:27:24 CEST 2005 Daniel Veillard * configure.in NEWS doc/config.html doc/gamin.html doc/news.html gamin.spec.*: real release of gamin-0.1.5 2005-08-09 John McCutchan * server/gam_inotify.c: (gam_inotify_emit_one_event): Free pathname on error. Tue Aug 9 21:10:38 CEST 2005 Daniel Veillard * configure.in NEWS doc/config.html doc/gamin.html doc/news.html: doc update and release of gamin-0.1.4 2005-08-09 John McCutchan * server/gam_server.c: (gam_init_subscriptions): Revert part of last commit that disabled inotify all the time. 2005-08-09 John McCutchan * server/gam_poll.c: (gam_poll_scan_callback), (gam_poll_scan_all_callback), (gam_poll_init_full), (gam_poll_consume_subscriptions): More debug output * server/gam_server.c: (gam_init_subscriptions), (gam_add_subscription), (gam_remove_subscription): Fix bug with dnotify backend and a subscription that is on the exclude list. What was happening was that we were calling gam_poll_add_subscription in that case, but when the dnotify backend is enabled the poll backend is in a different mode. So these subscriptions was never consumed. I special cased for when inotify is not running to call the backend_add_subscription even when the item is on the exclude list. The dnotify backend has code to deal with excluded subscriptions. Tue Aug 9 18:18:13 CEST 2005 Daniel Veillard * server/gam_channel.c: fixed some problem if debugging is enabled * server/gam_poll.c server/gam_poll.h server/gam_server.c: added poll debugging informations 2005-08-09 John McCutchan * server/gam_node.c: (gam_node_new): Add some debug messages * server/gam_server.c: (gam_add_subscription): Here to 2005-08-08 John McCutchan * server/gam_inotify.c: (gam_inotify_event_pair_with), (gam_inotify_read_handler): Don't process internal queue after reading from the device. Change some debug options. 2005-08-08 John McCutchan * server/gam_inotify.c: (gam_inotify_event_new), (gam_inotify_process_internal), (gam_inotify_process_event_queue), (gam_inotify_init): Fix stupid bug in move pairing code that was slowing things down big time. Make timings #defines, process the event queue @ 30 Hz. Process the internal event queue @ 30 Hz and when events are read from the device fd. 2005-08-08 John McCutchan * server/gam_inotify.c: (gam_inotify_event_new), (gam_inotify_event_pair_with), (gam_inotify_event_add_microseconds), (gam_inotify_event_ready), (gam_inotify_process_event), (gam_inotify_pair_moves), (gam_inotify_process_internal), (gam_inotify_process_event_queue), (gam_inotify_read_handler), (gam_inotify_init), (g_timeval_eq): Implemented pairing of MOVED_FROM and MOVED_TO events. Waiting for gamin to support this event, but it will be trivial to hook up in inotify now. * server/local_inotify_syscalls.h: Added ia64 and s390 system call numbers. Added a couple aliases for ppc. * tests/testing.c: (processCommand): Added "move" command. Mon Aug 8 23:15:45 CEST 2005 Daniel Veillard * server/local_inotify_syscalls.h: applied patch fixing compilation on ppc, alpha and sparc, fixes bug #312934 though incomplete list 2005-08-08 John McCutchan * server/gam_inotify.c: (gam_inotify_mask_to_gam_file_event), (gam_inotify_mask_to_gam_dir_event), (gam_inotify_process_event_queue), (gam_inotify_remove_all_for): Add some comments and refactor some code. 2005-08-05 John McCutchan * server/gam_conf.c: (gam_conf_read): Fix build. * server/gam_inotify.c: (gam_inotify_process_event_queue), (gam_inotify_read_handler), (gam_inotify_init), (g_timeval_lt), (t_timeval_eq): Process the inotify event queue in a timer. Add GTimeVal comparision predicates. This is the beginning of pairing move events together. 2005-08-05 John McCutchan * server/gam_connection.c: (gam_connection_new): Change event queue flush to 100 ms. 2005-08-05 John McCutchan * doc/config.html: * doc/gamin.html: Update documentation 2005-08-05 John McCutchan * server/gam_poll.c: (node_add_subscription), (node_remove_subscription), (gam_poll_delist_node), (gam_poll_relist_node), (gam_poll_flowon_node), (gam_poll_flowoff_node), (poll_file), (gam_poll_scan_callback), (gam_poll_first_scan_dir): * server/gam_server.c: (gam_add_subscription), (gam_remove_subscription): Consider fsset options when deciding between kernel/poll/none subscription options. 2005-08-05 John McCutchan * server/gam_conf.c: (gam_conf_string_to_mon_type), (gam_conf_read_internal), (gam_conf_read): Make poll timeout value optional, read in /etc/gamin/gaminrc, then ~/.gaminrc, finally /etc/gamin/mandatory_gaminrc. * server/gam_fs.c: (gam_fs_set): Use GAMIN_POLL_DEFAULT when passed -1 for poll_timeout. 2005-08-05 John McCutchan * libgamin/gam_api.c: (gamin_check_cred): * server/gam_channel.c: (gam_client_conn_check_cred), (gam_client_create): * server/gam_dnotify.c: (gam_dnotify_debug): * server/gam_tree.c: (gam_tree_add_at_path): Clean up gcc warnings Fri Aug 5 14:07:24 CEST 2005 Daniel Veillard * lib/gam_error.h libgamin/gam_api.c libgamin/gam_fork.c python/gamin.c server/gam_debugging.c server/gam_dnotify.c server/gam_eq.c server/gam_fs.c server/gam_inotify.c server/gam_server.c server/gam_server.h server/gam_tree.c tests/testing.c: code cleanups for reports from gcc and sparse. Fri Aug 5 11:52:56 CEST 2005 Daniel Veillard * gamin.spec.in: tiny fix for the python package 2005-08-04 John McCutchan * server/gam_eq.c: (gam_eq_queue), (gam_eq_flush): Fix a segfault when the event queue is empty. Add some GAM_DEBUG's supressed by GAM_EQ_VERBOSE. 2005-08-04 John McCutchan * server/gam_inotify.c: (gam_inotify_is_running): * server/gam_inotify.h: Add gam_inotify_is_running. Returns TRUE when the inotify backend is being used. * server/gam_server.c: (gam_server_emit_one_event): Use gam_queue_event when gam_inotify_is_running() == TRUE. This should not effect the dnotify behaviour. 2005-08-04 John McCutchan * server/Makefile.am: Compile gam_eq.c * server/gam_connection.c: (gam_connection_close), (gam_connection_eq_flush), (gam_connection_new), (gam_queue_event): * server/gam_connection.h: Hookup the event queue. BUT, It's not used yet. * server/gam_eq.c: (gam_eq_event_new), (gam_eq_event_free), (gam_eq_new), (gam_eq_free), (gam_eq_queue), (gam_eq_size), (gam_eq_flush_callback), (gam_eq_flush): * server/gam_eq.h: An event queue that will be per-connection when finished. Provides limited but effective flow control. * server/gam_poll.c: (poll_file): Enable poll limiter now that we have proper defaults for local filesystems. 2005-08-03 John McCutchan * server/gam_fs.c: (gam_fs_init): Tweak defaults yet again. 2005-08-03 John McCutchan * server/Makefile.am: * server/gam_conf.c: (gam_conf_string_to_mon_type), (gam_conf_read_internal), (gam_conf_read): Move gaminrc parsing code here * server/gam_conf.h: Move gaminrc parsing code here * server/gam_excludes.c: (gam_exclude_init), (gam_exclude_check), (gam_exclude_debug): Make gam_exclude_add public. Add gam_exclude_debug. Removed config parsing code from here. * server/gam_excludes.h: Make gam_exclude_add public. * server/gam_fs.c: Adjust default poll timeout to be 0. * server/gam_server.c: (gam_show_debug), (gam_init_subscriptions): call gam_exclude_debug() in show_debug() and call gam_conf_read at beginning of server initialization. 2005-08-02 John McCutchan * server/gam_fs.c: (gam_fs_init): Change some defaults * server/gam_inotify.c: (gam_inotify_data_debug), (gam_inotify_debug), (mask_to_string), (mask_to_gam_event), (gam_inotify_data_new), (gam_inotify_data_free), (gam_inotify_event_new), (gam_inotify_event_free), (gam_inotify_mask_to_gam_file_event), (gam_inotify_mask_to_gam_dir_event), (gam_inotify_emit_one_event), (gam_inotify_emit_events), (gam_inotify_process_event), (gam_inotify_process_event_queue), (gam_inotify_read_handler), (gam_inotify_send_initial_events), (gam_inotify_send_initial_events_all), (gam_inotify_add_subscription), (gam_inotify_remove_subscription), (gam_inotify_remove_all_for), (gam_inotify_init), (gam_inotify_add_watch), (gam_inotify_read_events), (gam_inotify_is_missing), (missing_list_compare), (gam_inotify_add_missing), (gam_inotify_rm_missing), (gam_inotify_nolonger_missing), (gam_inotify_scan_missing), (gam_inotify_wd_check), (gam_inotify_wd_hash_sanity_check), (gam_inotify_missing_check), (gam_inotify_missing_list_sanity_check), (gam_inotify_sanity_check): Complete re-write of inotify backend. This new backend does not use the poll backend at all. It passes all the test suite tests except for dnotify15, and flood* because they make use of falling back to the poll backend. Because it doesn't use the poll backend anymore, memory & CPU usage has been greatly reduced. * server/gam_node.c: (gam_node_new): Zero the checks field * server/gam_poll.c: (poll_file): Change to poll limiter -- still disabled. * server/gam_poll.h: Add GAMIN_K_INOTIFY2 backend definition * server/gam_server.c: (gam_add_subscription), (gam_remove_subscription), (gam_server_emit_one_event): Fix backend selection logic. Tue Aug 2 17:44:53 CEST 2005 Daniel Veillard * NEWS configure.in gamin.spec.in doc/gamin.html doc/news.html: prepare release of 0.1.3 2005-08-01 John McCutchan * server/gam_poll.c: (poll_file): Disable poll limiter so that regression tests pass. 2005-08-01 John McCutchan * lib/gam_error.c: (gam_error_handle_signal): fflush the error stream * server/Makefile.am: Add gam_fs and gam_pidname to build * server/gam_channel.c: (gam_check_secure_dir): * server/gam_connection.c: (gam_reqtype_to_string), (gam_connection_set_pid), (gam_connection_request): * server/gam_fs.c: (gam_fs_free_filesystems), (gam_fs_find_fs), (gam_fs_find_fs_props), (gam_fs_filesystem_sort_cb), (gam_fs_scan_mtab), (gam_fs_init), (gam_fs_get_mon_type), (gam_fs_get_poll_timeout), (gam_fs_set), (gam_fs_unset), (gam_fs_debug): * server/gam_fs.h: Persistant storage of what filesystems are mounted and where. Adds 2 preferences to each filesystem type, poll interval & kernel/poll/none option. * server/gam_listener.c: (gam_listener_new), (gam_listener_free), (gam_listener_add_subscription), (gam_listener_remove_subscription): * server/gam_listener.h: Add pidname to debug output * server/gam_node.c: (gam_node_new), (gam_node_remove_subscription): Fix long standing bug of watches being removed at the kernel level while the subscription level thinks they still exist. * server/gam_node.h: * server/gam_pidname.c: (gam_get_pidname): * server/gam_pidname.h: Retrieves the process name for a given pid. * server/gam_poll.c: (trigger_dir_handler), (trigger_file_handler), (poll_file), (gam_poll_scan_directory_internal), (gam_poll_scan_all_callback), (gam_poll_init_full), (gam_poll_remove_subscription): Incorporate gam_fs options into logic. * server/gam_server.c: (gam_show_debug), (gam_add_subscription), (gam_remove_subscription): * server/gam_subscription.c: (gam_subscription_new), (gam_subscription_free), (gam_subscription_set_listener), (gam_subscription_cancel): Debug output changes 2005-08-01 John McCutchan * server/gam_channel.c: (gam_client_conn_send_cred), (gam_client_conn_read), (gam_client_conn_write): * server/gam_connection.c: (gam_connection_set_pid): * server/gam_inotify.c: (gam_inotify_data_free), (gam_inotify_directory_handler), (gam_inotify_file_handler), (gam_inotify_read_handler), (gam_inotify_consume_subscriptions_real), (gam_inotify_consume_subscriptions), (gam_inotify_add_subscription), (gam_inotify_remove_subscription): * server/gam_listener.c: (gam_listener_new), (gam_listener_free), (gam_listener_get_pidname), (gam_listener_debug): * server/gam_listener.h: * server/gam_poll.c: (gam_poll_scan_directory_internal): * server/gam_subscription.c: (gam_subscription_set_listener), (gam_subscription_cancel): Debug output cleanups Mon Aug 1 11:46:56 CEST 2005 Daniel Veillard * server/Makefile.am server/gam_debug_lists.c: keeping the debug copy around doesn not make sense anymore, removing, fixes #312113 2005-07-21 John McCutchan * server/gam_connection.c: (gam_connection_set_pid): It's fclose not f_close ... 2005-07-21 John McCutchan * python/tests/flood.py: Enable debug output while I work at fixing inotify bug. * server/gam_connection.c: (gam_connection_close), (gam_connection_get_pidname), (gam_connection_set_pid), (gam_connection_request), (gam_send_event), (gam_send_ack), (gam_connections_debug): Output process name instead of pid on Linux. Everyone else still gets pid. * server/gam_connection.h: * server/gam_poll.c: (gam_poll_emit_event), (poll_file), (gam_poll_scan_directory_internal): Move more debug output under GAM_VERBOSE_POLL define. 2005-07-21 John McCutchan * server/gam_inotify.c: (gam_inotify_directory_handler_internal): Fix locking bug. 2005-07-21 John McCutchan * server/gam_inotify.c: (gam_inotify_read_handler), (gam_inotify_rm_watch), (gam_inotify_read_events): New function that tries hard to read events from inotify in large chunks. Big CPU usage decrease with dd if=/dev/zero of=test! 2005-07-21 John McCutchan * python/tests/basic4.py: * python/tests/basic6.py: * python/tests/multiple2.py: * python/tests/noexists.py: * python/tests/nokernel.py: * python/tests/readonly.py: Cleanup debug output * server/gam_inotify.c: (gam_inotify_directory_handler_internal), (gam_inotify_read_handler), (gam_inotify_init), (gam_inotify_remove_all_for), (gam_inotify_add_watch), (gam_inotify_rm_watch): More inotify backend cleanups * server/local_inotify_syscalls.h: Local header that defines the inotify system calls for x86 and x86-64 architectures. Other architectures get dummy functions. Wed Jul 13 18:51:44 CEST 2005 Daniel Veillard * server/gam_connection.c: applied patch from Jean-Yves Lefort for compilation on gcc < 3.0 Wed Jul 13 13:15:37 CEST 2005 Daniel Veillard * configure.in doc/* gamin.spec.in NEWS: preparing release of version 0.1.2 Tue Jul 12 23:19:38 CEST 2005 Daniel Veillard * server/gam_inotify.c server/local_inotify.h: the inotify API changed from file based to syscall, patch from John McCutchan * server/gam_node.c: one of the assert from Neal seems to be crashing gam_server when using the gtk+ file selector, fix from John McCutchan too to avoid the assert() but not the cause Wed Jun 15 19:04:38 CEST 2005 Daniel Veillard * python/tests/Makefile.am: add make tests to make check target fixes #307786 Neal H. Walfield Wed Jun 15 14:40:56 CEST 2005 Daniel Veillard * server/gam_poll.c: another cleanup of poll only support from Neal H. Walfield which should not affect the dnotify back-end, should fix #307745 Wed Jun 15 13:01:11 CEST 2005 Daniel Veillard * libgamin/gam_api.c server/gam_channel.c: reverted patch from #306706 as this broke authentication and debugging. * server/gam_server.c: removed warnings. Tue Jun 14 14:30:54 CEST 2005 Daniel Veillard * server/gam_connection.c: another cleanup patch from Neal H. Walfield Mon Jun 13 18:35:29 CEST 2005 Daniel Veillard * server/gam_hurd_mach_notify.c server/gam_kqueue.c server/gam_listener.c server/gam_listener.h server/gam_poll.c: another cleanup patch from Neal H. Walfield Mon Jun 13 16:57:35 CEST 2005 Daniel Veillard * server/gam_node.c server/gam_poll.c: applied 2 cleanup patches from Neal H. Walfield Mon Jun 13 11:11:43 CEST 2005 Daniel Veillard * server/gam_dnotify.c server/gam_dnotify.h server/gam_inotify.c server/gam_inotify.h server/gam_poll.c server/gam_server.c: applied patch from John McCutchan for the inotify back-end #171201 and more debugging informations. Had to fix gam_poll_init_full() too. Mon Jun 13 10:40:13 CEST 2005 Daniel Veillard * gamin.spec.in: updated the Changelog Fri Jun 10 17:15:38 CEST 2005 Daniel Veillard * NEWS configure.in doc/gamin.html doc/news.html: prepared release 0.1.1 Fri Jun 10 16:30:04 CEST 2005 Daniel Veillard * server/gam_excludes.c: removed an extra variable * server/gam_poll.c: fixed problem raised by dnotify4.py, watching a directory and getting a file should send back Deleted. Fri Jun 10 11:44:27 CEST 2005 Daniel Veillard * server/gam_excludes.c: allowed ~ at the beginning of a path to indicate the user home directory Thu Jun 9 00:01:26 CEST 2005 Daniel Veillard * server/gam_hurd_mach_notify.c: fixed an open() turned in concat() due to privoxy filtering closes #306915. * server/gam_server.c: applied cleanup from Neal H. Walfield removing duplicate code #306913 * server/gam_hurd_mach_notify.c: bugfix for the Hurd backend from Neal H. Walfield #306916 Wed Jun 8 23:45:28 CEST 2005 Daniel Veillard * libgamin/gam_api.c server/gam_channel.c: patch from Neal H. Walfield support for OSes that do not support LOCAL_CRED closes bug #306706 * server/Makefile.am: tidying * libgamin/gam_api.c: fixed a missing const #306909 (Neal H. Walfield) Wed Jun 8 19:20:08 CEST 2005 Daniel Veillard * libgamin/gam_api.c server/gam_channel.c: Applied patch from Neal H. Walfield about non atomicity of write(), this should close bug #306912 Wed Jun 8 18:30:03 CEST 2005 Daniel Veillard * server/Makefile.am: Hurd/Mach patch broke make dist Wed Jun 8 15:55:20 CEST 2005 Daniel Veillard * server/gam_dnotify.c server/gam_poll.c server/gam_tree.c: moving the dnotify file <-> directory mapping outside of the dnotify module which doesn't have enough context. * python/gamin.py: fixed a bug on error cases * python/tests/Makefile.am python/tests/dnotify15.py: added a specific test case for monitoring multiple files in busy directories Wed Jun 8 11:34:13 CEST 2005 Daniel Veillard * server/gam_dnotify.c server/gam_hurd_mach_notify.c server/gam_inotify.c server/gam_kqueue.c server/gam_poll.c server/gam_poll.h: changed the way the kernel monitoring registration is done to try to cope later with troubles with dnotify directly from the gam_poll.c code. Tue Jun 7 10:17:17 CEST 2005 Daniel Veillard * configure.in server/Makefile.am server/gam_hurd_mach_notify.c server/gam_hurd_mach_notify.h server/gam_server.c: applied patch from Neal H. Walfield to add native Mach/Hurd support, closes #306707 Tue Jun 7 09:50:07 CEST 2005 Daniel Veillard * libgamin/Makefile.am server/Makefile.am: applied patch from Neal H. Walfield to build outside of the source directory, closes #306702 Thu May 26 15:53:19 CEST 2005 Daniel Veillard * server/gam_inotify.c: applied patch from John McCutchan fixing bug #171201 of inotify and mounted media. 2005-05-20 Frederic Crozat * server/gam_poll.c: (unregister_node), (remove_directory_subscription), (prune_tree), (gam_poll_remove_subscription_real): factorize code and make sure node are unregistered correctly. Fix crash from bug #303932. Thu May 19 22:57:25 CEST 2005 Daniel Veillard * gamin.spec.in: updated changelog section * server/gam_kqueue.c server/gam_kqueue.h: applied patch for BSD kqueue code from Jean-Yves Lefort 2005-05-18 Mark McLoughlin * libgamin/gam_data.c: (gamin_data_conn_event): Fix req->state vs req->type thinko. Thu May 12 15:55:07 CEST 2005 Daniel Veillard * NEWS doc/gamin.html doc/news.html: preparing release 0.1.0 Thu May 12 14:51:21 CEST 2005 Daniel Veillard * configure.in: preparing for 0.1.0 * gamin.spec.in: don't ship the .la * libgamin/gam_fork.c: tried to fix #300088, I hope it's okay. Thu May 12 13:33:52 CEST 2005 Daniel Veillard * libgamin/gam_api.c libgamin/gam_data.[ch] server/gam_connection.[ch]: applied patch from #300028 FAMCancelMonitor should get back a FAMAcknowledge event, plus some fixups. The real question was should the full round-trip to the server be needed or not, expectation are that it should be done, though it's heavier, kept as is so far but this might be changed in the future. * tests/result/10 tests/scenario/10.tst: this impacts one of the simpler tests * python/gamin.py python/tests/*.py: this severely impacted the Python bindings, and most tests had to be fixed, working now. Tue May 10 11:29:40 CEST 2005 Daniel Veillard * server/gam_inotify.c server/local_inotify.h: applied patch inotify 0.23-6 from Daniel Drake for inotify support in bug #303615 Tue May 10 11:25:42 CEST 2005 Daniel Veillard * server/Makefile.am: oops forgot to add to source as pointed by Daniel Drake in #303612 Mon May 9 15:45:22 CEST 2005 Daniel Veillard * server/server_config.h server/*.c: force compilation with big file support, some cleanups too, fixes bug #167898 * python/tests/Makefile.am python/tests/bigfile.py: added a specific regression test. Mon May 9 12:49:36 CEST 2005 Daniel Veillard * server/gam_poll.c: found bug #302737 from Frederic Crozat, creating a node duplicate, broke the unicity of node <->path Mon May 9 12:15:35 CEST 2005 Daniel Veillard * python/tests/dnotify12.py python/tests/dnotify13.py: tests trying to chase the Desktop nautilus refresh bug tracked with alex Mon May 9 12:11:49 CEST 2005 Daniel Veillard * libgamin/gam_data.c: added more debugging * server/gam_node.c server/gam_node.h server/gam_poll.c: simplification removing an extra indirection of GamNodeData keeping them directly in GamNode * server/gam_server.c: removed a warning Mon May 2 16:15:22 CEST 2005 Daniel Veillard * configure.in libgamin/Makefile.am libgamin/gam_api.c libgamin/gam_data.[ch]: applied patch from Nicholas Miell in RH bug #154785 to make the client side thread-safe, also used gcc weak symbol support on Linux to not force pthread library onto the programs using the library. Mon May 2 10:10:05 CEST 2005 Daniel Veillard * server/gam_inotify.c server/local_inotify.h: applied patch 2 from John McCutchan for inotify 0.23 Fri Apr 15 14:18:53 CEST 2005 Daniel Veillard * server/gam_debugging.h server/gam_inotify.c server/gam_inotify.h: applied patch from John McCutchan to align inotify and dnotify back-end behaviours. Fri Apr 8 08:05:30 CEST 2005 Daniel Veillard * server/gam_poll.c: more fixes * python/tests/Makefile.am python/tests/dnotify1[01].py: more regression tests Thu Apr 7 11:10:38 CEST 2005 Daniel Veillard * server/gam_inotify.c: applied patch gamin_inotify_recursive2 from Andrei Lahun provided on bug #171201 Tue Apr 5 16:48:31 CEST 2005 Daniel Veillard * server/gam_poll.c: found a problem when demonitoring a directory which is the child of a monitored directory related to #172596 * python/tests/Makefile.am python/tests/dnotify8.py python/tests/dnotify9.py: added a couple of regression tests for this Mon Apr 4 13:47:57 CEST 2005 Daniel Veillard * server/gam_poll.c: applied patch from Nickolay Shmyrev to fix a problem on unreadable directories. Seems to break python/tests/dnotify4.py though ... need more checking. * python/tests/Makefile.am python/tests/readonly.py tests/testing.c tests/result/11 tests/scenario/11.tst: also included the regression tests for the feature Sun Apr 3 17:35:37 CEST 2005 Daniel Veillard * server/gam_inotify.c: applied patch from Todor Penev to fix a problem on the inotify back-end Sat Apr 2 17:41:15 CEST 2005 Daniel Veillard * configure.in server/Makefile.am server/gam_channel.c server/gam_kqueue.c server/gam_kqueue.h server/gam_server.c: applied patch from Joe Marcus Clarke, adding a kqueue based kernel backend for the BSD abd MacOS X platforms. Wed Mar 30 12:55:38 CEST 2005 Daniel Veillard * gamin.pc.in: removing the Requires: glib-2.0 gthread-2.0 per Red Hat bug #152486 Tue Mar 29 08:16:55 CEST 2005 Daniel Veillard * tests/Makefile.am: cleanup result files left from make tests Fri Mar 25 11:04:16 CET 2005 Daniel Veillard * configure.in libgamin/gam_api.c server/gam_channel.c: bug fixes and portability patches from Joe Marcus Clarke when porting to FreeBSD. Wed Mar 23 16:16:38 CET 2005 Daniel Veillard * python/tests/Makefile.am python/tests/flood4.py: one more flooding handling regression test. Wed Mar 23 11:59:20 CET 2005 Daniel Veillard * server/gam_poll.c: make 100% sure we will not use kernel monitoring for excluded resources, c.f. bug #151774 * python/tests/Makefile.am python/tests/flood3.py: added a third flood regression test Wed Mar 23 10:45:20 CET 2005 Daniel Veillard * server/gam_dnotify.c server/gam_poll.c: more work on the flow control especially when multiple monitors use the same dnotify watcher * python/tests/Makefile.am python/tests/flood2.py: added a second regression test for it. Tue Mar 22 17:21:01 CET 2005 Daniel Veillard * server/gam_debugging.c server/gam_debugging.h server/gam_dnotify.c server/gam_poll.c: implemented the DNotify side of the flow control processing, and the associated debug. * python/tests/Makefile.am python/tests/flood.py: added a first regression test for it. Tue Mar 22 15:22:05 CET 2005 Daniel Veillard * server/gam_poll.c server/gam_poll.h: more cleanup, prepare for mode usage in kernel backend instead of just an added boolean. * server/gam_dnotify.c server/gam_inotify.c: converting the backends to the new modes Tue Mar 22 14:39:38 CET 2005 Daniel Veillard * server/gam_dnotify.c server/gam_poll.c server/gam_poll.h: cleanups, a bit of code reorganization, adding function comments. Wed Mar 16 23:01:36 CET 2005 Daniel Veillard * server/gam_inotify.c server/local_inotify.h: new patch from John McCutchan to adapt to the latest change in kernel interface hopefully the last one. Tue Mar 15 14:15:58 CET 2005 Daniel Veillard * libgamin/gam_api.c server/gam_channel.c: portability patch for Mac OS X, add #include bug gnome #170404 Tue Mar 15 13:46:44 CET 2005 Daniel Veillard * NEWS configure.in gamin.spec.in doc/gamin.html doc/news.html: preparing release of 0.0.26 Tue Mar 15 13:05:54 CET 2005 Daniel Veillard * doc/gamin.html doc/news.html: typo * libgamin/fam.h: removed an incompatibility with SGI FAM #149822 Tue Mar 15 12:49:21 CET 2005 Daniel Veillard * server/gam_poll.c: revisited the patch a bit. Tue Mar 15 12:32:02 CET 2005 Daniel Veillard * server/gam_tree.c: a bit of cleanup, and avoiding potentially expensive call g_node_n_children() when the operation should really be O(1) Tue Mar 15 12:24:06 CET 2005 Daniel Veillard * server/gam_poll.c: fixed the crash on failed tree assert bug #150471 based on the patch from Dean Brettle * tests/testing.c tests/result/10 tests/scenario/10.tst: integrated the regression test provided by Dean Brettle Fri Mar 11 10:30:46 CET 2005 Daniel Veillard * README doc/gamin.html doc/overview.html: typo fix in the documentation by Jean-Marc Coursimault Mon Mar 7 11:16:10 CET 2005 Daniel Veillard * libgamin/fam.h: gcc4 now breaks with #include "limits.h" from FAM include, fixing #150169. Tue Mar 1 18:53:58 CET 2005 Daniel Veillard * NEWS configure.in gamin.spec.in doc/gamin.html doc/news.html: prepared release of 0.0.25 Tue Mar 1 18:17:06 CET 2005 Daniel Veillard * server/gam_poll.c: fixed a problem with monitoring directories without using the kernel * python/tests/Makefile.am python/tests/nokernel.py: adding a specific regression test Tue Mar 1 16:42:41 CET 2005 Daniel Veillard * server/gam_poll.c: found out the bug blocking unmounting of temporary media filesystems in 0.0.24, it wasn't dnotify. Wed Feb 23 23:28:18 CET 2005 Daniel Veillard * configure.in: small patch about debugging being always enabled by Martin Schlemmer Wed Feb 23 17:44:54 CET 2005 Daniel Veillard * server/gam_poll.c: try to avoid the /media/ mount problem in 0.0.24 Fri Feb 18 15:25:23 CET 2005 Daniel Veillard * NEWS configure.in gamin.spec.in doc/gamin.html doc/news.html: updated and preparing release of 0.0.24 Fri Feb 18 14:36:38 CET 2005 Daniel Veillard * python/tests/Makefile.am python/tests/dnotify[67].py: added more complex dnotify tests Fri Feb 18 12:59:16 CET 2005 Daniel Veillard * server/gam_poll.c: more cleanup, bug fix on monitoring missing files. * python/tests/Makefile.am python/tests/dnotify5.py: added a specific test. Thu Feb 17 17:15:31 CET 2005 Daniel Veillard * server/gam_dnotify.c server/gam_poll.c: removing bugs, did I say that I hate DNotify ? * python/tests/Makefile.am python/tests/dnotify*.py: more tests and fixes Thu Feb 17 12:46:06 CET 2005 Daniel Veillard * configure.in libgamin/gam_api.c libgamin/gam_data.c libgamin/gam_protocol.h libgamin/gamin_sym.version server/gam_debugging.[ch] server/Makefile.am: adding a debugging infrastructure where some server internal events can be reported to the client. This is only compiled if configured with --enable-debug-api, cleaned bup some configure.in bugs * server/gam_dnotify.c: plugged DNotify in the debugging framework * python/gamin.c python/gamin.py: added python support for the debugging framework * python/tests/Makefile.am python/tests/dnotify.py python/tests/dnotify2.py: started to add regression testing for checking DNotify behaviour when debugging framework is activated. Wed Feb 16 15:26:08 CET 2005 Daniel Veillard * python/tests/level.py: reproduced the damn "Desktop doesn't refresh" bug * server/gam_poll.c: fix fo the bug Tue Feb 15 15:40:31 CET 2005 Daniel Veillard * python/gamin.py: allow multiple monitoring of the same file or dir in a given monitor * python/tests/Makefile.am python/tests/level.py python/tests/multiple3.py: more tests Tue Feb 15 12:57:05 CET 2005 Daniel Veillard * server/gam_poll.c server/gam_subscription.[ch]: cleaning up the server code, a number of bug fixes * python/tests/Makefile.am python/tests/*.py: adding a bunch of new tests Fri Feb 11 14:39:16 CET 2005 Daniel Veillard * gamin.spec.in python/Makefile.am python/gamin.c python/gamin.py: fixed #167064 renaming gaminmod to _gamin * python/tests/Makefile.am: make sure the PYTHONPATH includes libgamin subdirs Fri Feb 11 12:34:39 CET 2005 Daniel Veillard * python/gamin.py: fixing a bug in the bindings * python/tests/Makefile.am python/tests/multiple.py: added a test for multiple monitors watching the same resource. Thu Feb 10 23:49:42 CET 2005 Daniel Veillard * server/gam_inotify.c server/local_inotify.h: applied inotify-0.19 patch from John McCutchan Tue Feb 8 14:40:49 CET 2005 Daniel Veillard * doc/*: added a new page differences.html giving details about the differences and extensions between FAM and gamin. Tue Feb 8 11:24:00 CET 2005 Daniel Veillard * NEWS doc/gamin.html doc/news.html gamin.spec.in: finishing release of 0.0.23 * python/gamin.py: rolling back the chnge to the bindings, since it made python bindings semantic diverge from the C level with risk of recursion problems. Mon Feb 7 18:34:25 CET 2005 Daniel Veillard * configure.in: preparing 0.0.23 * libgamin/fam.h libgamin/gam_api.c libgamin/gam_data.c libgamin/gam_data.h libgamin/gam_protocol.h libgamin/gamin_sym.version: adding defines and an API to avoid Exists and EndExists events being generated, also avoid pushing those in case of reconnect * server/gam_connection.c server/gam_subscription.[ch]: this impacts also the server part a bit * python/gamin.c python/gamin.py: added the API at the server level. * python/tests/Makefile.am python/tests/basic.py python/tests/noexists.py tests/Makefile.am: added a specific test and some cleanups. Fri Feb 4 15:34:29 CET 2005 Daniel Veillard * python/gamin.py: adding self.handle_events() in watch_file and watch_directory to avoid deadlocks. 2005-02-01 Mark McLoughlin * python/gamin.c: (get_connection), (get_request): memset the newly re-alloced memory rather than the previous memory. Mon Jan 31 09:07:19 CET 2005 Daniel Veillard * NEWS configure.in gamin.spec.in doc/*.html: made release 0.0.22, updated the docs. Sat Jan 29 20:28:36 CET 2005 Daniel Veillard * server/gam_inotify.c: another patch from John McCutchan Fri Jan 28 23:04:47 CET 2005 Daniel Veillard * server/gam_inotify.c: inotify 0.18 patch from John McCutchan Fri Jan 28 16:51:46 CET 2005 Daniel Veillard * Makefile.am python/Makefile.am python/tests/Makefile.am python/tests/basic*.py: added python tests to regression tests * libgamin/gam_api.c: fixed a connection bug on the clien side * server/gam_poll.c: fixed a bug where some changes in a directory may not be caught Thu Jan 27 23:58:00 CET 2005 Daniel Veillard * libgamin/gam_data.c: cleanup * python/gamin.py: added a disconnect() method * server/gam_channel.c: fixed a serious bug in some disconnection cases * server/gam_dnotify.c server/gam_poll.c server/gam_poll.h: cleanup gam_poll_scan_directory() and worked out debug messages Wed Jan 26 12:39:08 CET 2005 Daniel Veillard * configure.in NEWS doc/* gamin.spec.in: preparing release 0.0.21 * python/tests/Makefile.am python/tests/basic.py : added first example Wed Jan 26 11:59:11 CET 2005 Daniel Veillard * doc/*: added a page for the python bindings, updated the stylesheet and rebuilt the docs. Wed Jan 26 10:26:15 CET 2005 Daniel Veillard * server/gam_inotify.c server/local_inotify.h: applied patch from Philipp Zabel to follow the evolution of the inotify protocol in 0.18 Tue Jan 25 18:39:34 CET 2005 Daniel Veillard * configure.in Makefile.am gamin.spec.in python/Makefile.am python/gamin.c python/gamin.py: added python bindings Fri Jan 21 10:27:10 CET 2005 Daniel Veillard * libgamin/gam_api.c: markmc pointed out a doc mismatch Thu Jan 13 18:29:30 CET 2005 Daniel Veillard * server/gam_channel.c: removing a compiler warning. Thu Jan 6 16:10:20 CET 2005 Daniel Veillard * NEWS configure.in gamin.spec.in: preparing release 0.0.20 * doc/gamin.html doc/news.html: update to the web pages * server/gam_poll.c: trying to fix gnome bug #161792 compilation problem. Wed Jan 5 18:40:50 CET 2005 Frederic Crozat * server/gam_poll.c: (remove_directory_subscription), (prune_tree): Fix crash when removing files (bug #161902). Wed Jan 5 18:32:45 CET 2005 Frederic Crozat * server/gam_poll.c: (prune_tree), (gam_poll_scan_all_callback): Update poll only mode to a working, non-crashing version. Wed Jan 5 16:46:15 CET 2005 Daniel Veillard * server/gam_poll.c: patch from Frederic Crozat to add poll only support (helps with valgrind debugging). Tue Dec 21 17:15:24 CET 2004 Daniel Veillard * server/gam_tree.c: try to fix #143342 in gam_tree_get_children if tree and root are NULL. Mon Dec 6 13:54:11 CET 2004 Daniel Veillard * NEWS doc/gamin.html doc/news.html: updated and rebuilt pages. Fri Dec 3 16:39:35 CET 2004 Daniel Veillard * configure.in gamin.spec.in: release of 0.0.19 Fri Dec 3 16:10:03 CET 2004 Daniel Veillard * server/Makefile.am server/gam_debug_lists.c: adding our own reduced version of glib glist.c with simplified memory allocation and poisonning of deleted list nodes to chase #132354. * server/gam_connection.c server/gam_node.c server/gam_poll.c: more review and simplifiction of the use of GList APIs. Fri Dec 3 12:10:50 CET 2004 Daniel Veillard * server/gam_connection.c server/gam_node.c server/gam_poll.c server/gam_tree.c: avoid gam_node_append as it is O(n) Thu Dec 2 18:46:09 CET 2004 Daniel Veillard * server/gam_connection.c server/gam_listener.c server/gam_server.c server/gam_subscription.c: fixed compilation without debug Thu Dec 2 01:17:09 CET 2004 Daniel Veillard * autogen.sh: removed reference to old m4 subdir * server/gam_connection.c server/gam_listener.[ch] server/gam_subscription.[ch]: extend debugging to add listeners and all subscription states from a given connection. Wed Dec 1 15:26:20 CET 2004 Daniel Veillard * TODO: updated * configure.in: minor change for compiler options * lib/gam_error.[ch] libgamin/gam_api.c server/gam_connection.[ch] server/gam_server.[ch]: trying to improve debugging Fri Nov 26 11:01:19 CET 2004 Daniel Veillard * gamin.spec.in: real release of 0.0.18 * libgamin/gam_api.c: (FAMPending): only select/read when we don't have a complete event in the buffer. patch from Mark McLoughlin Thu Nov 25 16:07:04 CET 2004 Daniel Veillard * libgamin/gam_api.c: fixed a const pbm Thu Nov 25 15:59:45 CET 2004 Daniel Veillard * configure.in gamin.spec.in: 0.0.18 sounds better than 0.1.0 really making sure that debug support is compiled in * libgamin/gam_api.c libgamin/gam_fork.c server/gam_channel.c server/gam_connection.c server/gam_dnotify.c server/gam_inotify.c server/gam_listener.c server/gam_poll.c server/gam_server.c server/gam_subscription.c: switched all usage of gam_debug to the GAM_DEBUG macro to avoid paying for debug calls when not asked for. Thu Nov 25 13:59:34 CET 2004 Daniel Veillard * configure.in TODO gamin.pc.in gamin.spec.in: updated, will release a 0.1.0 RC1 today * lib/gam_error.c lib/gam_error.h: first step toward avoiding debug handling costs when not debugging * server/gam_connection.c server/gam_listener.c server/gam_node.[ch] server/gam_poll.c server/gam_tree.[ch]: checked all GList uses in the server, try to make 100% sure there is no double free of list items or reuse of freed list item which could explain the loops found in bug #132354 , cleanups, remove use of g_list_foreach. Thu Oct 28 15:32:16 CEST 2004 Daniel Veillard * gamin.spec.in: fixed a packaging bug Red Hat #135417 Wed Oct 20 19:02:22 CEST 2004 Daniel Veillard * configure.in gamin.spec.in: release 0.0.16 with latest code to try to get rid of #132354 Wed Oct 20 18:46:32 CEST 2004 Daniel Veillard * libgamin/gam_api.c: minimize calls to getpwuid() * server/gam_inotify.c server/gam_poll.c server/gam_server.c server/gam_server.h server/gam_subscription.c server/gam_subscription.h: made some changes in the quest to remove bug #132354, lot of checking debugging, valgrinding, refactored event filtering as a result, potentially fixed a tree freeing problem. * tests/Makefile.am: alway reset the test directory between tests Tue Oct 19 15:50:05 CEST 2004 Daniel Veillard * server/gam_poll.c server/gam_subscription.c: valgrinding a session raised a couple of problems. Sat Oct 16 18:11:39 CEST 2004 Daniel Veillard * server/gam_poll.c: workaround to detect loops and avoid the nasty effects, see RedHat bug #132354 . Getting a loop still look impossible but well it happens in practice so this should avoid most of the problems in practice until the problem is found. Wed Oct 13 00:40:32 CEST 2004 Daniel Veillard * server/gam_node.c server/gam_node.h: adding a new API * server/gam_subscription.c: fixed gnome bug #153531 when monitoring a directory as a file. * tests/result/9 tests/scenario/9.tst: added a specific regression test. Sun Oct 10 19:45:48 CEST 2004 Daniel Veillard * TODO tests/Makefile.am tests/result/* tests/scenario/*: fixing "make tests" so it's not tied to my own directories paths. Wed Oct 6 23:20:11 CEST 2004 Daniel Veillard * server/local_inotify.h: applied patch for inotify-0.13 from John McCutchan. Tue Oct 5 18:50:57 CEST 2004 Daniel Veillard * gamin.spec.in: added BuildRequires: glib2-devel , bug #134689 Sun Oct 3 19:43:23 CEST 2004 Daniel Veillard * configure.in gamin.spec.in: release of 0.0.14 * server/gam_excludes.c: added /dev/ and /proc/ in the list of the excludes. * doc/Makefile.am: fixed the Makefile for new images and html. Sun Oct 3 19:05:14 CEST 2004 Daniel Veillard * doc/debug.html doc/gamin.html doc/internals.html doc/security.html: more documentation cleanup, includes how to switch a running application to debugging. Sun Oct 3 17:55:17 CEST 2004 Daniel Veillard * doc/* doc/internals.html doc/client_server.gif doc/server_structs.gif: added documentation about the internals, regenerated the docs. Sun Oct 3 16:11:01 CEST 2004 Daniel Veillard * libgamin/gam_api.c: extra debug on client API Sun Oct 3 16:03:56 CEST 2004 Daniel Veillard * server/gam_poll.c server/gam_subscription.c: cleanup, debug and probable fix for #132429, #133665 and #134413 Sat Oct 2 14:57:58 CEST 2004 Daniel Veillard * server/gam_server.c: code cleanup * lib/gam_error.[ch] libgamin/gam_api.c: added a dynamic debugging capability using SIGUSR2 Fri Oct 1 18:15:05 CEST 2004 Daniel Veillard * configure.in gamin.spec.in: release 0.0.13 Fri Oct 1 12:01:39 CEST 2004 Daniel Veillard * libgamin/fam.h server/gam_poll.c: portability cleanups w.r.t. PATH_MAX not in limits.h reported by Michael Banck Fri Oct 1 11:47:55 CEST 2004 Daniel Veillard * libgamin/gam_api.c libgamin/gam_protocol.h server/gam_connection.c: applied patch from Sergio Garcia to fix a packet size problem on some platforms. Fri Oct 1 01:13:52 CEST 2004 Daniel Veillard * server/gam_node.[hc] server/gam_poll.c server/gam_subscription.[ch]: cleanup and be more defensive. Thu Sep 30 15:34:19 CEST 2004 Daniel Veillard * configure.in gamin.spec.in: release 0.0.12 Tue Sep 28 01:31:52 CEST 2004 Daniel Veillard * server/gam_poll.c: adding missing locks around a list update. Though gam_server is single threaded maybe this is the cause of a list corruption generating a loop. Mon Sep 27 12:47:20 CEST 2004 Daniel Veillard * configure.in gamin.spec.in server/Makefile.am: release 0.0.11 Mon Sep 27 11:53:01 CEST 2004 Daniel Veillard * server/gam_inotify.c server/local_inotify.h: applied patch for inotify 0.10 from John McCutchan Sun Sep 26 21:21:05 CEST 2004 Daniel Veillard * libgamin/gam_api.c: added unimplemented entry points FAMSuspendMonitor and FAMResumeMonitor, c.f. #133162 * doc/gamin-api.xml doc/gamin-refs.xml: rebuild Fri Sep 24 15:15:08 CEST 2004 Daniel Veillard * configure.in server/gam_inotify.c server/local_inotify.h: always compile in the inotify support and fallback to dnotify if we cannot find kernel support at runtime. Patch from Martin Schlemmer. * server/gam_inotify.c: avoid the glib warning and use gam_debug Wed Sep 22 00:20:20 CEST 2004 Daniel Veillard * configure.in server/gam_excludes.c server/gam_server.c: applied a patch to cleanup dnotify and inotify duality from Martin Schlemmer Tue Sep 21 13:30:11 CEST 2004 Daniel Veillard * configure.in gamin.spec.in: release of 0.0.10 * libgamin/fam.h libgamin/gam_api.c: fixing an API/ABI incompatibility between FAM and gamin about FAMErrno and FamErrlist, which though in fam-2.6.10 are documented as not used, should close bug #132944 Mon Sep 20 17:18:23 CEST 2004 Daniel Veillard * doc/config.html doc/*: added documentation for the config file. Mon Sep 20 16:21:24 CEST 2004 Daniel Veillard * configure.in server/Makefile.am server/gam_poll.c: applied a portability patch from Michael Banck * server/gam_excludes.c server/gam_poll.c: added support for a per-user configuration file $HOME/.gaminrc , and some fprintf cleanups Fri Sep 3 23:33:57 CEST 2004 Daniel Veillard * doc/*.html: providing more documentation. Fri Sep 3 15:29:47 CEST 2004 Daniel Veillard * NEWS TODO doc/gamin.html doc/news.html: updating for the recent releases and rebuilt. Wed Sep 1 17:22:16 CEST 2004 Daniel Veillard * configure.in gamin.spec.in: released 0.0.9 Wed Sep 1 15:50:49 CEST 2004 Daniel Veillard * server/Makefile.am server/gam_excludes.c server/gam_excludes.h server/gam_poll.c server/gam_server.c: starting to add exclude support where given path do no get kernel monitoring. Currently statically excludes /mnt//* /media//* . Something more dynamic might be needed. Wed Sep 1 10:27:49 CEST 2004 Daniel Veillard * libgamin/gam_api.c libgamin/gam_data.c: try to fix crashes with konqueror, Red Hat bug #130967 Mon Aug 30 11:25:04 CEST 2004 Daniel Veillard * configure.in gamin.spec.in: oops apparently I forgot to commit the 0.0.8 release changes. Thu Aug 26 17:28:57 CEST 2004 Daniel Veillard * server/gam_dnotify.c server/gam_poll.c server/gam_server.c: lot of debugging, the server was crashing, and the poll/kernel switching was not done properly. Can still be improved for Changed events flood, but at least it does not crash anymore. Wed Aug 25 21:35:36 CEST 2004 Daniel Veillard * server/gam_dnotify.c server/gam_inotify.c server/gam_poll.c server/gam_server.c server/gam_server.h: applied patch from Martin Schlemmer to allow fallback to dnotify if inotify back-end failed to initialize. Wed Aug 25 16:38:54 CEST 2004 Daniel Veillard * Makefile.am NEWS configure.in doc/Makefile.am doc/contacts.html doc/devel.html doc/downloads.html doc/gamin.html doc/index.html doc/news.html doc/news.xsl doc/overview.html doc/site.xsl: building the web site, borrowing most of the XSLT code from libxml2 project Wed Aug 25 15:39:45 CEST 2004 Daniel Veillard * README doc/gamin.html: updating the documentation Wed Aug 25 10:19:00 CEST 2004 Daniel Veillard * server/gam_server.c: applied patch from Martin Schlemmer to activate the INotify backend if configured in. Tue Aug 24 13:52:12 CEST 2004 Daniel Veillard * configure.in gamin.spec.in: release of 0.0.7 Tue Aug 24 12:05:29 CEST 2004 Daniel Veillard * TODO: updated reflecting new step, added reminder about annoying cases to test * server/gam_dnotify.c server/gam_poll.c: if a monitored resource generate too much kernel events switch back automatically to polling on that resources, and once things have calmed down go back to kernel monitoring after 10 seconds. Mon Aug 23 14:48:51 CEST 2004 Daniel Veillard * TODO: updated with fixed stuff and new problems * server/gam_poll.c server/gam_server.c: handling of initially missing directories. Try to improve detection of modifications. * tests/scenario/8.tst tests/result/8: added a new test Fri Aug 20 23:31:04 CEST 2004 Daniel Veillard * server/gam_poll.c: monitoring of files appearing and disapearing should now work as expected. * tests/result/7 tests/scenario/7.tst: added a specific test Thu Aug 19 23:46:13 CEST 2004 Daniel Veillard * server/gam_dnotify.c: fix a problem for monitoring missing files * tests/result/6 tests/scenario/6.tst: added a regression test for it. Thu Aug 19 15:38:55 CEST 2004 Daniel Veillard * Makefile.am configure.in gamin.spec.in: release of 0.0.6 * doc/gamin-api.xml doc/gamin-refs.xml: rebuilt Thu Aug 19 14:40:58 CEST 2004 Daniel Veillard * server/gam_poll.c: fixing dnotify and FAM events sequences when monitoring an existing file. * tests/result/5 tests/scenario/5.tst: added a specific test * TODO: tests need fixing to avoid paths problems Thu Aug 19 13:54:36 CEST 2004 Daniel Veillard * server/gam_dnotify.c server/gam_node.h server/gam_server.c server/gam_server.h server/gam_subscription.c: work toward fixing the file dnotify back-end and FAM like-processing Wed Aug 18 14:48:33 CEST 2004 Daniel Veillard * gamin.spec.in: fix path * doc/debugging.txt: add .gdbinit hint Wed Aug 18 13:07:03 CEST 2004 Daniel Veillard * TODO: updated * doc/debugging.txt: added doc on how to debug gamin * libgamin/Makefile.am libgamin/gam_fork.c server/Makefile.am: moved gam_server to /usr/libexec instead of /usr/bin following Mark suggestion Tue Aug 17 17:48:05 CEST 2004 Daniel Veillard * server/gam_dnotify.c: working on fixing file checking notification * server/gam_poll.c server/gam_poll.h: start on integrating polling Tue Aug 17 16:57:58 CEST 2004 Daniel Veillard * server/gam_server.c: a bit of framework which looks safe too Tue Aug 17 16:55:16 CEST 2004 Daniel Veillard * gam_tree.c: cleanup while chasing regression in make tests Thu Aug 12 19:44:02 EDT 2004 Daniel Veillard * tests/Makefile.am: use $GAMIN_DEBUG_SERVER so that regression tests can be run in a clean environment. Thu Aug 12 13:42:22 CEST 2004 Daniel Veillard * libgamin/Makefile.am: fix build on x86_64. Auto* is excessively arcane and buggy, end-up copying the files on the libgamin dir. * server/gam_connection.c server/gam_poll.c server/gam_subscription.c server/gam_subscription.h tests/testing.c: more testing more debug messages. Wed Aug 11 13:18:04 CEST 2004 Daniel Veillard * configure.in lib/Makefile.am libgamin/Makefile.am libgamin/gam_fork.c server/Makefile.am server/gam_dnotify.c server/gam_inotify.c server/gam_node.c server/gam_node.hserver/gam_poll.c server/gam_tree.c server/gam_server.c: cleanup patch from John McCutchan removing comented out thread code, modularization of makefiles, and use of $GAMIN_DEBUG_SERVER for debug or test when the client forks a new server. Tue Aug 10 10:56:49 CEST 2004 Daniel Veillard * Makefile.am TODO configure.in libgamin/Makefile.am libgamin/TODO server/Makefile.am lib/*: applied cleanup patch from John McCutchan then rebuilt the lib/ subdir providing shared code between the client lib and the server (gam_error and gam_event). * server/gam_inotify.c: update as part of John McCutchan patch. Fri Aug 6 17:09:53 CEST 2004 Daniel Veillard * configure.in: to not link with glib threads, not needed anymore * libgamin/gam_api.c: fixed timeouts values * tests/Makefile.am tests/testing.c tests/result/4 tests/scenario/4.tst: adding more tests, especially transparent restart when the server is killed. Fri Aug 6 14:29:47 CEST 2004 Daniel Veillard * libgamin/gam_fork.c: avoid generating zombies Thu Aug 5 16:51:33 CEST 2004 Daniel Veillard * configure.in gamin.spec.in: release of 0.0.5 * doc/gamin-api.xml doc/gamin-refs.xml: rebuilt Thu Aug 5 16:23:18 CEST 2004 Daniel Veillard * server/gam_event.h server/gam_inotify.c server/gam_server.c: patches from John McCutchan, inotify back-end update and bugfixes on error conditions in gam_server.c Thu Aug 5 11:55:59 CEST 2004 Daniel Veillard * libgamin/gam_fork.c: markmc pointed at a problem when forking a daemon and exiting, the exit(0) called the ORBit atexit handlers in the child. Thu Aug 4 16:55:38 CEST 2004 Daniel Veillard * configure.in gamin.spec.in: release of 0.0.4 Wed Aug 4 14:34:27 CEST 2004 Daniel Veillard * TODO: update * libgamin/gam_error.c libgamin/gam_error.h server/gam_error.c server/gam_error.h: cleanup some warnings when compiling on Fedora Core * server/gam_poll.c: unused variable * tests/Makefile.am: cleanup before running "make tests" Wed Aug 4 13:14:02 CEST 2004 Daniel Veillard * libgamin/fam.h: fix a bug compiling KDE reported by than * server/gam_poll.c: some code cleanup * tests/testing.c: adding an expect command way better than wait * tests/result/[1-3] tests/scenario/[1-3].tst tests/Makefile.am: started setting up reliable regression testing, discovered a strange timeout problem with gam_server to be investigated left as a comment on 3.tst Tue Aug 3 14:55:49 CEST 2004 Daniel Veillard * tests/testing.c: do not exit on parse if interactive * server/gam_poll.c: fix a bug for removed resources * libgamin/gam_api.c: try to work around some timeout/connection issues when multiple process try to for a server. Mon Aug 2 14:11:18 CEST 2004 Daniel Veillard * gamin.spec.in: spelling fix (thanks fcrozat) * libgamin/gam_api.clibgamin/gam_data.c libgamin/gam_data.h: fix a problem of setting/checking that the client did actually authenticate with the server. * tests/testing.c: make a better interactive debugging mode using "testgam -" more powerful than pure static file tests. Fri Jul 30 15:01:17 CEST 2004 Daniel Veillard * configure.in gamin.spec.in libgamin/Makefile.am: release 0.0.3, with makefile and spec fixups from Frederic Crozat Thu Jul 29 16:31:20 CEST 2004 Daniel Veillard * configure.in libgamin/gam_api.c server/gam_channel.c server/gam_channel.h server/gam_connection.c server/gam_server.c server/gam_server.h: reactivated support for OSes without abstract sockets using a /tmp subdir per user to avoid problems * doc/socket.txt: small text describing the socket handling * doc/gamin-api.xml: rebuilt Wed Jul 28 22:29:57 CEST 2004 Daniel Veillard * configure.in libgamin/gam_api.c server/gam_channel.c: desactivating code if abstract sockets are not found following security problem http://mail.gnome.org/archives/gamin-list/2004-July/msg00017.html Tue Jul 27 12:23:52 CEST 2004 Daniel Veillard * configure.in server/Makefile.am server/gam_inotify.c server/gam_inotify.h server/gam_server.c: Applied patches from John McCutchan for inotify the potential dnotify kernel API replacement on Linux. Tue Jul 27 11:52:58 CEST 2004 Daniel Veillard * libgamin/fam.h: fix a compilation problem with latest patch. * libgamin/gam_api.c server/gam_connection.c server/gam_listener.c server/gam_listener.h: applied patch from Carlos Romero to fix FAMCancelMonitor. Sat Jul 17 19:40:25 CEST 2004 Daniel Veillard * doc/apibuild.py doc/gamin-api.xml doc/gamin-refs.xml: some doc extraction processing based on libxml2 tool * libgamin/fam.h libgamin/gam_api.c libgamin/gam_data.c libgamin/gam_error.h libgamin/gam_protocol.h: cleanup in the process of generating the XML description. Fri Jul 16 13:42:37 CEST 2004 Daniel Veillard * gamin.spec.in configure.in: preparing 0.0.2 release * libgamin/gam_api.c libgamin/gam_data.c libgamin/gam_data.h: made the client side restartable, i.e. if the server exists a new connection is made and monitors are reestablished seems to work more or less okay. * TODO: updated. Tue Jul 13 15:41:24 CEST 2004 Daniel Veillard * libgamin/gam_data.c libgamin/gam_api.c: fixed FAMMonitorDirectory2() and FAMMonitorFile2() they should now implement the correct behaviour * server/gam_dnotify.c server/gam_node.c server/gam_node.h server/gam_poll.c server/gam_server.c server/gam_tree.c: removed threading and locking, this should still work for the current constraints * tests/testing.c: adding wait and updated to allow FAMMonitorDirectory2 testing with an extra arg to mondir * TODO: updated Fri Jun 18 15:28:32 CEST 2004 Daniel Veillard * libgamin/fam.h libgamin/gam_api.c: the new version of the FAMCONNECTION_GETFD macro was buggy. Applied patch from hadess. Fri Jun 18 14:25:04 CEST 2004 Daniel Veillard * autogen.sh: drop special dependancies a given version of the autotools Fri Jun 18 14:12:59 CEST 2004 Daniel Veillard * libgamin/gam_protocol.h server/gam_connection.h: workaround gtk-doc parsing limitations * configure.in Makefile.am gamin.spec.in libgamin/Makefile.am: emulation of libfam wasn't sufficient to compile fam-dependant code as pointed by hadess Fri Jun 18 09:42:47 CEST 2004 Daniel Veillard * gamin.spec.in: preparing first release of 0.0.1 * tests/Makefile.am tests/testing.c: a bit more work on the testing framework Thu Jun 17 14:32:07 CEST 2004 Daniel Veillard * libgamin/Makefile.am libgamin/testing.c tests/Makefile.am tests/testing.c: setup the test environment * tests/scenario/tst1 tests/result/tst1: add first test Thu Jun 17 00:38:33 CEST 2004 Daniel Veillard * libgamin/gam_api.c libgamin/gam_fork.c libgamin/gamin.c libgamin/testing.c server/gam_channel.c: renamed the ID environment variable to GAM_CLIENT_ID Wed Jun 16 23:35:13 CEST 2004 Daniel Veillard * libgamin/gam_api.c libgamin/gam_data.c libgamin/gam_data.h server/gam_channel.c server/gam_connection.c TODO: Changed the protocol to add an authentication byte from the server to the client at the beginning of the stream and authentication code on the client to check that the server is running under the same user. * gamin.spec: generated by configure, removed. Wed Jun 16 11:55:59 CEST 2004 Daniel Veillard * TODO libgamin/Makefile.am libgamin/gamin_sym.version: block non-FAM symbols export from shared lib * Copyright: reference the AUTHORS and COPYING files. Tue Jun 15 23:45:50 CEST 2004 Daniel Veillard * AUTHORS COPYING README: update to reflect the LGPL licence and the inheritance from the marmot code base. Tue Jun 15 23:25:03 CEST 2004 Daniel Veillard * README gamin.spec.in: added mail archive URL, 0.0.1-pre1 Tue Jun 15 21:45:20 CEST 2004 Daniel Veillard * README TODO: I was sure I updated the README before the import... updated the TODO to reflect the current state Tue Jun 15 21:33:55 CEST 2004 Daniel Veillard * m4/gthread-supported.m4: still needed for configure.in until one got rid of any thread handling in the server code.