/* connection.h - definitions for the connection type * * Copyright (C) 2004-2010 Gerhard Häring * * This file is part of pysqlite. * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef PYSQLITE_CONNECTION_H #define PYSQLITE_CONNECTION_H #define PY_SSIZE_T_CLEAN #include "Python.h" #include "pythread.h" #include "structmember.h" #include "module.h" #include "sqlite3.h" typedef struct _callback_context { PyObject *callable; PyObject *module; pysqlite_state *state; } callback_context; typedef struct { PyObject_HEAD sqlite3 *db; pysqlite_state *state; /* the type detection mode. Only 0, PARSE_DECLTYPES, PARSE_COLNAMES or a * bitwise combination thereof makes sense */ int detect_types; /* NULL for autocommit, otherwise a string with the isolation level */ const char *isolation_level; /* 1 if a check should be performed for each API call if the connection is * used from the same thread it was created in */ int check_same_thread; int initialized; /* thread identification of the thread the connection was created in */ unsigned long thread_ident; PyObject *statement_cache; /* Lists of weak references to statements and cursors used within this connection */ PyObject* cursors; /* Counters for how many cursors were created in the connection. May be * reset to 0 at certain intervals */ int created_cursors; PyObject* row_factory; /* Determines how bytestrings from SQLite are converted to Python objects: * - PyUnicode_Type: Python Unicode objects are constructed from UTF-8 bytestrings * - PyBytes_Type: The bytestrings are returned as-is. * - Any custom callable: Any object returned from the callable called with the bytestring * as single parameter. */ PyObject* text_factory; // Remember contexts used by the trace, progress, and authoriser callbacks callback_context *trace_ctx; callback_context *progress_ctx; callback_context *authorizer_ctx; /* Exception objects: borrowed refs. */ PyObject* Warning; PyObject* Error; PyObject* InterfaceError; PyObject* DatabaseError; PyObject* DataError; PyObject* OperationalError; PyObject* IntegrityError; PyObject* InternalError; PyObject* ProgrammingError; PyObject* NotSupportedError; } pysqlite_Connection; int pysqlite_connection_register_cursor(pysqlite_Connection* connection, PyObject* cursor); int pysqlite_check_thread(pysqlite_Connection* self); int pysqlite_check_connection(pysqlite_Connection* con); int pysqlite_connection_setup_types(PyObject *module); #endif y Ja?0@b7nM/'CFIOgs1{YL3 /O)ʿ]AzWG<$Je޿aԩ+oه >*:X3_2J,iPB 9CZS>cB`{qY t ⩭y$#fk.^.DكOhBGpb'58ڣ/%k[6򌆙̑q&ҫ6A#}Rg[>igYɂ&te|3?:_)73.@J(H8 :zS렱S>Y|Eh֜띯[OTs.=i'~^.qІ' 1`i.e!d4 rxμ'9qI0v7 (bíL0Vyh^cq6mtB`B]A/]bҜ7sAQY!!Lb+T/ﳸͩEnџΎt[`2--{wj_x||O?J @MqeBN9TAϧȡbdƌYGV ( 3za> && J[Fv8炍 .0Uk; òyO3yHIl 20qWt+vKkT^Fߢ()8 6iYa/͜햚lI4|dh9bE|~I0bG 0a2&NY>sǤ>'{L5{~DI.M*f18uN(f&3{}F4Yk.iH.79NgaBr0GYcHpk pƂ }YmY<$@9ui!w,X03p3(X{TI>&h [BYcFmAKw@0z5Hx|WV?qb3lS1VvfiZ!YD!02S" ˒Si^D<@HEz "3]]%5$6HR=U1Qiߎ &ϴsgBh82NeaJP7~R/&ȟgq_ӋR˝DܧH?,g1Y1qMFk睏lq&7$(MZ۾5$.~hrr&D7E߈1#^q0c@o,ͦ( h榴qwfʡ%VC 6@6_cffb|ƾe#$`f(0 ðLWxwh;Ytv/C9R`E+ ˁ|]XhFl,=o?tO.]c&o:^ove`?L k uRwAjwsٹREQӹoXv P]$aMPb_Kȁ"s6PE; 2{^l~O,0ڞW3!YA85clNA~r"{nK)?!Fֱ?.O: oZނ~_.pskKN[oY=t< 0WdxR.*ӳpE\&W?D<{9-QpiFj\ͣ$Lx^fٵ,-d/^Bj ZZ0k#`@#sڇ&yVcZor \_u{ub$wZ{]i^MRP@dCF{i6Vò\VcfJ2H=}; bNW/~D $GD%9m9T;  a;Yc|4"^0QK78(G^kxv1~ȨS4wu:CԼx@zww/v{#OEpJJj ]_j rFi֘rgU7{߲bf24$-Y/깁Ia6=3>z 47&i%Cq?{8xEhX kwJάxi7XnA02kNv~;ί;uN>:N/:r@* 0r] z(|AcF5$HS+e_!%3n?6t,II8w_HsەA[dT?IvxUGxp 71L- i!EEB*+vvtd(#LaI-& <ө@D̋S1O?Mer~8'OO,B+ۡ')qӲ/-p72:sӂq//&?}~^ut. gIi~8qx!_yzÇΩwv}K;sxts)F#7|).ܬ $Qc 4&L?M3/OGD9bȢax`B9!Ɇo=;Ƀab 1RȶAc}N8՜K (5譧'H B]˹%:t~NЅinl 9ϚI|RN~FWp#IWa…RDhxg'^w`5ӟ]@*2aNJ 5䡺b'Vk ;mdN#xtVmv 'v+BZ;]Sઇ'T6e=NozH$Q/N|ZM)YT[8iil&/]V@; }R!#!yDU1Fz_4@W'קWq`1j2`(@ma#HZ;&DX(1h:(;ihD.,ˉ빍I$b}hԐmXϑO}ɐ̝oE'-''-~]xqq W]YRMy9Y,5x/F::rG0R|HSzʍCri0 =N#Qל g LMfFe=5 a2tڇE =XKV w1@Q+"F'ki1\_G礷"Un3.4.amYt5ST-|*\qv"3wH`g1W̉ 9HM!2lnW{eF51$xț4]Tgk{g{9K*OWr^Z7^w4d ?wB#(W@(;{)o88:k L/m K` O9ǐ` H2e5I˘]ޚG:甓4}]Na<̬E& kᕻE)M/Wʫx-.ỷn͈kc+K"yg3xP SZ 5Vpbû2F#͇@{!8޼_e⍷I2})$+8|z{gu8`aMLt J%b]y4^OBV9c>堄cڦ>vnϏ/oo{{Hc5mCg6Ev}ӹRz)7pi̟(`"BQ(fCGYUwvIxK$ފgG͓6Dn 4L~ռq< $mɧξ/< 3}":{:M*!N~ލ@Jp ԜCgSzјDxY%iGqXd?_ĄXďT}:$8,V؆p= |A~8;F_G>{MU]JU4,M($SL/%g TI%q/xYhK!1LCׯD€GD\%YnincUܣ|L-K2+q@=ʤd礄f6ɝ fHqcMMS4.@Ȍ}ɻ23ww'Qo:3x].mbD[xvᩜIF#[ň3Q'XoL$ 79f)ˆp Cl s +}K_Jd]t1<%/y5MoHj@$Tĸ&a8/E b"h>a@MGlx&ڗ~UX,bqWW']$1 #OȩA^5I^Jro5iNt5Ÿš_p̺hNV>V4:맓ǷĊUa>>=);1n槝:Z"5=w_e#N4噌ސX!4Ԟ2bx2 KޝI&1u"ZWؚJJQ%Lҝ?98Х%ۮmxNKbi[Op.L. n5|R(]d,FbCFҾ,ǥ\UPH4-qPE@90B&:j@bM@BT2kԂDlU)OK%j1|L;pA*ds޾"HM9FPbAzIa.yЪo6"yޖ;z_'QP .RP~컎Vy X9 "S$V68nl\"{ˍI1KQצ#.[7llcʓtKR[A0GF&#Ny@.283<i}(?>{Md,IR Gw=֮6t_xPCU[ HDP6ofhzX}{ú*uCל[Xu^3fh#wӥ]} uͩOY՝MW#3etkUeY`H97F>&mpcXM뭐T YrV v mb v`CPb/? G5SH8  kpIM&g $h>?\ILr ./a2 "5_l8D1oSiQuZ5;fANiNgN0NVdt hFcLMG0 ӔsBXYY WLy.u'D>`YUGL N`Gof2K 0ޠBbe wqbkW=[x*yS!鮒Wl,:~ f\qͤM] ƾ UD a[񊰉kꔂZr'E"bzqC̗PTz$^p?6G%iK͖`!Z^n}l//Z_rcRm.x6Ӫm:QO[.^|BcB=q06姴\~ 6yLhF9azՑ]),B 5H3d4CIƦ⢽pm1I?GNrYZtZC?Z43Y1JՋDb: d[UEFa0|]0}R/SGɞsS,7PKDn<[wBS0`ӌN79:VB@ d80 ĘngȈ;iDF͂hzٱU>? z@:f;`CȚ;'^jj l x+ ˨v{=CT,~P6\LY+hXBzq.+|+P*UthnzI uku)%:F_8e **cT@KMk:%GEcfMf Gsu F hl?1M$ )[OiegIx%5i,}/܏&8a~N4.~n6^'MJ{գe8H5]?]7Ʃfd0N{MqX+HI\Bn伲9/wӉ~ř))"sݣ&.ᜅlI3TN73!+'>zTG !GR$Ӌ\9?k{봰c8edmM|[*N6.ğ6')U O TT/W2|S 3HD n |&t\Ť0 5c%&f#):@\@"u~uN%D3G2qL(s"Aԑ _O;W[pc  ?RisȔ%;IP9*]s9`6ͫth VD l>gʽxĢA'Aj"P1}S.)/hYԚL{Zυ,&''4/jA<*d~˜sEE4+UG(jȰAvjU@uί\r1-b{p%@tg8XԴ [P@CR(l~TVi/RT:9*.N/Syiī&UƨS!Ml) ~K͇T2H_NgQLMTGsDo3܋ż =9سGə2c8@_=ZzF;\vzӆyDD6[[Pߎcj/VE%2a`2H֋Eڈ`cR㨊]!$NRg |OS _{[6#%$І_WjJVܬ[2/\N*#oR#S< x"dQkGGԽ!5,LAMg$)~X-VEH(SZ1YVaW9Ωy #v`\`n2&&"C=>55y(ʓk*$ʼҼПFe'|04ӻN;](W0,8auZ3]=M0K*g0Ujnp~'XrSʳuq&;d;Ş;nVze;vC\M;xdɚUGo7zcOPV|  ȇ ۭ9O1B#h <6\yb) R\c$̫] ްBJ$^H.gz$t)ci6x~ZJ\ˏvݖFP%3zg;];;Z_o/+WN6RpMhjXWT+±E"#9m ah;@.5? KBS*qQSdƬg~jD9 9T#HwlD`8 NjnY\޼2̭X%4 5IOG[6حYbsܑo!;5o!O)qƪW9w=Ip;coȻEq=Pj>Ijpl=OU;0sb)V'ʤ\ru`0,`@0UNz-&Ij[Wu w(M%ЉLµhxթ,pP1> l,DIąs7{kb2e8োocu3`.ECnێEƕU94NK>R9{ O@qӀj*u]nD7Q+lQ ւBd2I+]Q'E&D,1fǨHM9onذXFSnI\C6ּ9U9 *Ae^'A&?Vjm(K!rIد۴s| R2hD׹>6ü3 gfp3iL {$ 2&IUi+ 2{y, Y8'L]F>Y*63ˤ56¡|f2ߏ֡'^SSZQW9l(%E`$q~&č&foM=kB* 1rYJAS;#[,ʍ.K.öJјBHlM[| |'GC?#R+Ր;㹮^Ja(f}SO ;GK8VS2-ZCB'q|nGϝ`^tVE,[ Fg:踨[[T$bca:2iXyV@cZhQŕ -B7T6.,i3Q1_6QM N's(-~_,yAn/~r@83vBNs-_d$  O6(Y+7!hIHkt)=HE)Ah}>>*l5ɣc?攛eUϸ2$ݵDTGG^?!6ZhZLtƕoEJr*cgB=ـhJ}2tV[fW:NO9}$XtKJIćwM4(Zj<ʖ/h7"Jg ,1҄HI@gS7N+pݕʤTUEi+DE,^tP/"CE IhCgˤ<əʖ=n w Jt[L\QrA0EiL,WDLuWj"J8H+B$3qCb gwvrmص4>h*Ya,X f}NZgbkq cr!;/_&oHaU|M0NYCl Z~R9Iz$L̷ͭE D[zM|S8( JPEs!(*=:Y:1K\k6s; -r lU_MC/xNZ~2'4_$-cM2^EʄFZRn%LbE*.Њ9#IFSU/uVY KM.A1jR~by 븬I0Ep{ZZt|r[8V| %7! ^mȕod2LFwT#4_ݶ*?VRI{yV46ҒSXPaK頒<?5)[K_WX_)vvF@?y &kiV IcVrzԯA ?;T<S49KOyŵ/L)U y(UʤGT ڊ|ԫG-R}IW9Z=}.R Z1)sK]> 30j|p+WQfܪc타0-=N׆ 2KsG,:UygkGܴ(J4>Z1cŪ$5I7//rU濺|*$nMc!?Sma.^"&Sx&j hqeR>B~z%"!Y}dL/=t1Ek42+߲x> YSNbC]!;Y/nLpѬ:[ :P~Mt+s-L?@y#Ik Z"" 2j'fҖ.{ZU^sd8˶bʳe\Ǵd IIRsY4&hSeXU9QK1$M~ߪJW=jdcOۥW K @wzyXTElZy |T[mymjU3[|](4# [~{U iChجad~9%-P@[:Mھ p/;a=4Id_u-Y91!^Ze{-fYYZ(Y%qߞbuKoHYdŸ<9y94zFX{K7fh&B@rviږ#JZv.J+$jjW#X3:\aNΣwWx"$: :G؎`y(ь7 mwv(VKX! #u3k0@@94? Cn#B&,҉ NAݠq4r$Αwa1♶Flr FC!!QzI~20^kyѣ- 0R5o#-cj9[:Gn;6Y*Xo@9&F7X[T7C-}/l1zMJ:^ɖT Fe-EX*)+嶖ֵ4>ߠ~/*=DZF(~u?Jŕx71{ µ+PPЪ U\eK^I#Ns[&>Ub)RI_S`z‚^m9#{*:g#DDU[k<_ˬJ{#YkŷkBq @8}́Ғzw=&#MD,sU[J**(MeILc>(G#xaiA IrrNi9%ǁ0 @j A`8} \)X~$y6e<1䭠>%2j`&!3% ,1S-aK4"c1񩖏2f1BR6f|it$H]dK$?Ob"e Qj1ȇh#  *dڰImq[]q^KRub~-C Zs9C]H%WMκq%VLl>%0wro%JKcW6ծ~Ǒw|فOA#/1Q+-]+Birgx#TZRMd ̢吩~UdڡlsdX0$c6Yͨ?;q,c6wAu܈p%N (΋۠ *wb8ٓ'@[4?W`UvW4-D!k9b哎 G׻_t%4gxj <>w'WVD[_튧z;a,]–7^qal͆#+ܠBS4s*xj빷vݨrz~|Z0UnR<,-NR&ο-Vۊju%!& ^(QXJrĊ= 1J iO4?B9{ *_j_:!_>Wk/i"iFewluj~#۩ R끮|pO{L0LMHz1ï`,^'IK& `+zSrRt 4 :<~nI |Fjkա !F²YI9)`"CrX0fA^U[5 e>3UpTM4rogb̰E|nݫ83^ʢ rKqH Arf*=6@}P 7&M7)c?rYV)]*Mbck\uzHLB $j.M~R|# Ѥr:iEd-S-mmAc7S _ъtg\MYa>!ϴ\韪~ݣǴ ^W<||}yg/~;~~t]n0h-x=> >1伷iK|xz;vmŀR@%r.Uܤi2! ~e9P5|yg/SERޫAgйJX6c >SB5yf7Rz ȕZH$gp1r#ZӚt@zars2Ѡ$ϤLoBM{㻧0Kz˪2|k*_g~*f,XY+G)=зy|NvHpx_R#b ( pɈ*W۳k/OܜѦ0$x(oVZ8LK`ۓ8rLk wwj^{܁FCBѶFpSV\'oO?l3 D.͆rj`x6iC*g$/{zq;mTSLگXW>8 ̃$CH} OkE[~b+g21)H_|Z愷%)+ּ~R$~.r"%~-0#ޭGfTXO~9 ER3Vh݋IDIS4Ce$0ZCF g` |lCD}$\#&΃y馽OIŞ&N)xfKY8x#WŤ0XNE`@ %y/B^| \BYœr:I|V ȾRܑoo5p4L/pPPKRTHb'\N7#߰%NIyo&K4zJtwH* #kA z[i؅*(ڦy/<,ꈰS1" '1'VL< y&JĢa#wWUvdUxfn&ţZyfsBAG^\hTB>oMqaMWxY_GY1*u4а}{isd9_@sdCsC_ 7yyOQ!J"*A#L፵@rū-ML]{41jZt(J^hr~ixEy| A{,{[߷{8N_%}9X woOOI\ajnQLJ4XY.I\_l gؽy>yAa,VTL2l6v(QĻm|~ LqHaeD(5P'pO)$8`s*Uyi =)i!cї͓KT܂IEԨjbED/!{\h!B"m&ʹ5la*+ψ\%Wa@a6AI2G66r\pa3c p:d^;Z=iEڪE$ʛ ߕXrΚw]bm\urLmځrYr 3 R\+JUTKz\i+ߨTBe  ֚{vׄp:U˛{t=1FrD=xr]Q?"pسoy$ojѮfb>A[_Ң$/cIhd?Rv ޗlS)u3l &Ś iyP dkM2h`\DGD&/ <#l@6.ͲQ\-Lɍnu$:-_EhuBY;a)BOǾ P8O_P쥟]f" LQi`>K,gAp2.z !vj7C}qrʪRq9Dt {Oajf O*%ҙK7‡9y%ĵm;|Ted9riNWsc{4=hΐUKA]fkGWzJar$-w򻒳~EU[{?M ;Db3gd2M uhB0;ǀB 7''g[&\*ޏ$ Z%ytv{we?~#`#:CZ탽m׌,V4eRBͯ b0F'fOʊ8L߈d:&5N*-3=! Mダ@@h+5ՌՅD>!)i5i|wI$g! f` /^1TS;R'*0e쁾-d]XpS{yrlSZ ' +S[E6ETE*E"鞏 KpIBZV('#l-8 i0q %n(8 *wyyQ#rӗۻM)]7n0Q>,nqy/dŜXB4tC*/;sK(S+xgJXreGfS''  d CF'|.8 O,?흝û2OQsX}wMҠ KZ= t~!\my?"*OZ2vQqжH`Dq^'v[1~W(] ;Cq"Cfj`y@D l,- @$/3rZ>'h`*lk;~ʱm֍Ȅc?y ,Oų-;lT8lllj8RV$6۪rVWw̕;XuL7Ux*Ca '#X_[UАc*Rp*K8SC\bjhX1`2C'v;%>WjdqxG9.hW׿^ݟ|<$?FE"HD]ba>11(Xsl3I RN>crYgQ|xxKI6}5"1gObk?,0^RhA'@'b:2?>O$\q `mzUA4yvT L@ -Kb &C%X6|mzVkG D4]pr5/Fy, V!cBh")Z Ml`oF+HאָhS4A)+GZ:eۗNŀn/3ɿ?:}㓏M$u~tTqe0K@6t! "pw˛t\":Xʶ[@ĕgIP+D}}7D*K9w;t׾c*KV+]{p\KɩP#I}A X悚, T:_9"p6g*v~`?'-m^r/Pp;&(()>ctj ^O1$fLC1Tqe`Ɉ-`kCq|17)H)*0N/q6f B5@v1TWMp 6a [ r[vݿ{s9HIH߷ e\~>:<>;=Q?:Kg 1 V~ j~T&ft81"a vjX_CAM 2֖,euJ^&c +C:C[fZTkq)'dC)V-Ci^^_PHw:/ձ6\H: ҎmFnGߺdE1侼ge' ͋+n>| 3*+cgg%Y[*^|fe"?;4Z}ŗ.=HW_i1篨mু9 1c[(j)dq $HBE3v,?D۵M-eτxO cV c^_N`G}2͞4 ,g"bpf-ecIP<=S$=_ߨ|s)] eW_Kx\.> 0k(D>I{S$k$*zI\Q#w)Moh)HUr[Ƚ{{ Qrﶢ;~܊'SA2g R *,dS !n+ޚ?꽍 u3&D4)L_dOzupzҹbu|F*_K#=ROY{}\{6TqmU|kV8w"َ\y D*aem̹H%Zyiϑq0 шCCE#eͳxrT4L5eA{1עJ( Bp2C&d+ &+L(h59+umD:±LE4{d4O »M'8ög,3nU3nȯvKNq^)hKRJ% C`jùY7]ɻXĨVOYĺYjtDvh=r8Q]*8EɾZ3v-Zh9څbu ).3 t"tٯ_ K/FE/\kkſz2qW {"` KR400UE]UaF-3>JJE:'6KK$i4Q|̅vnPK1@G̛ p}8X Y8搆;(zo[\՝NAґnn= Q 5 A!&>Y%H8X9 eqRT=s}G׍P#&`UʴMMMuX 6 G;I(h9瞳w +`xE>GОLcŶvYpDw&/@x|HG2S93-KOӹzq- r9c.uz!N'o 4s!n2:E[Dҟ=<Q^`pZG-6V:oNڢ̤ՠMp׉QXGDzoadKp[!yЂJ( ktAfߴƢ 7!kq"lQɓMMT.aqTjw: `eֶF;pf8; &Gfƕkb1*+X sj׿F<D2orSP,SAO`p"7%˫4"&_`[CE0J^asHY vy)XK^:䣩&xU6pp*XdUaڋUa`@o #tPOe]!urFn ʧ"u'PI U8sGpQa8WrÁAst'0"vE&]*~v҆goTRR1a+1]7EuzPX3 _.Aj&PmjfX$l!P) [x."I{T|>HM~'Mg>ug~)/X)b۽Ud"^tf>y~gilVDD[AؾzrUo H|g2Sjt1w8ڿzIcδ 1ZLe$ ,5z]Ux,`.PX;'yX-=\-u L&;NzsMb=3EŃ%XK I~?'q|%۲BV1 Xe`]s&dWqIuϺ2@UIQ-@5dUNǥƉ<Z`m~իY^Gwt_H/;/ȸP^EBUQc_gl AشU{pK̚@6 svˊZzX|V7.U~*_[/Ά<$!Vk2GNGjR`Dd d\3ʧCefY#fAKʼn)MG-/lb1Uźݴ8LBS<&}nHksm~`DEYd0ŷl@LeTH@//)B tmOplۀT)if$7[;c>~Nm8ouNrM&)>|H$ ĭ%$nk3CHAl/C*%[Z=jx ฦgB QP' +qF{걹e, i98*>r ݵQ: ?6e]a y ;Wϓ̈2voBbC$ЎA<M6@yA`nDhpOW-ķCT29x1CFUd)e\1n+!w"R?Ŀg*S}Ie194B+7gM\D:w0CFv+4kQSy: ezk2fS !TW\c/ᚰ_j;Պeҕ.D^gLx5IhuIrIEs-p<`;V77h{A=f >fEd:GIxgs7JCjcȵwwv(D[0Uf9j*1I@#,ۢIq0::BuV)d}_ =ItՋ‘Q(#cၜuG|Ckjx8APp[%#G,QzK˳B|s_v$pSZ3^’.6:C~D|p֖/DiT} a,Pmq`Dc$σ̑p($K"Vypnl)D3GCڹ(r֎|wMlGiLj&O$3t<ٔQ,`u?[A=~8Ϫ0 !&!,B/o_Bx'QԅES-_TsoUPw*oӴ{$LV^+u5dzOuV@W~d(n$lYϐm)+1,`z օ~r)=*bIBRpҽIgxD\+}Z8w,AOs9VM^t qOt2isk<V/QXӘlX=^| "㽟Z蕪Fr[2j' %ɱ@,kO2vMZk0yEoSKs-l?BSOEV_#o Kap?T}xbmzzG@yK bĚT)mt$,bL sϭ ~h_,)8T$1 Р!,`Tn?*,BҦ;H煍wmjc؜c4VF =)kV60J>{!_HmhƊsl<{\ !ha%bydIS_3a6S#dFEFzcm+8O/_Oz}b+ZBxB>"( oxA4}yi uDG^W0hB;x8kѬ]ᔣ"ŜaZqF[SK}+[4oU2i,$IA[D+\m ?b QntHTFG>ӦElz)]Ď(mJ&A/.%2jK}$깒) rAnXt$#~,dpN(y9@{5˖M'",r!'3x\X5٘Mb"Wvd&lU_^“(@_81@t<EeV> '!s&&f.K!!]3A8Z҆Q1sTY6!.9 \6~C762'GYk_W&Sگ9c8 K7EH!tķ2lA𻂃qd?"ؒ ֘ؗJ a#W@ Ҁjס=K|AGLߝœ_~c]+QG.c{<9=nAXdGl\drѺt•N$8za`5?k!93ƨ-LZZ$ԡ$~k8TReNl (OEfOY4yN4"I -RĖ5uw}p4/aj[{aTU/B3b;jI"N0^*UʹU H88!NUZm)MIP@S,MȤK;(qӜj'6hM"ufk5_}UxƜaWiK6 cw< ')Aam~=_{(/W85X/멀?Ʒv O6 ͨo;o_ O0F"a?*cxRqtq|l3й`kQl3;5q6cy֧$͝ZZR<J/V:~#Fxas'C_C Á"JaUnO.)/C[Ϡ0EQKzW,2Z8C)Ei GEHLIZXCH1Fؓ6TvJhJEPf9@]zLc[:K)+5Ѕё\<'sVwԙhqSt;E̻*`7z,d$M%R9:. 04Әid ׄ|iwSX S7[[2v}cY|_wcIBS|ƷX|O QV*{H?Ö6â93 o@O#,S| ӑm;tcb@`Bx6h5P7] ֖sqLaS@#8Ȉ= $8qL&DR j/~rF0m Er\CDŽ_M/GgȈL9lspJ?B_}WowVCa:% tNWug='4xio\a[} 0k?DÓιިo76? **'dP0㞉65?4Ť ?h40O l7[ z&/`PI^%kqC}oRҜ )SLz.<14bG18zZhbH=0k,{&l0#엱cc> eHXc+2ZiL<2$ԂЄ>b VWUVO^6 {bykqa9*/aFI{Zɖhg(gͩ >'7?̐Fbr^&qH#,yo.x洤JQ+xkv;U>dX6Óo4wuŇ8_m"4nU(7p7-Hq|ss6#I%##cTW>ó軍MG- }4 WRP^\yn%IqCՒ U" 0ڸA5̌Aۮ4(ٕ)B9MvXЫK5`N>zpy??G#:* 99Z5sIWi_M;m|xͭ&ue~/}Q C_bX4 e՚QB^ [ތ1D*Vݳ`WQ>'?7ףTިf%3mb)t8 })KJwߦ]HṣPV{ |\ nWċ.=l̕hBkQe՟~ '&lE}߶U!h!MlqU% +=3^ϛ`1PA@X.S(ic- <90P8{"8.CiiVg+"d+A(n.fIl򆶚Q|:^|NOG\Vsz>=jjy$i;owvxֺ:8:z{x2=hs|x/DC%W͈g$|b}y a\ ],B0B-G˳LA<\ slŪ?SPڛt*bACPPu,vF 0j5b&dxv, EP(|+BQDN@go֣M5 UŮ[M F4=VU^hDR 7x@~BŇq+5ml9RGGXj@|+]R`T<k|8l낢_a=+ zW,tЏ1rFx 鄡w`(? b:u?t`q8MqP(\хCy; v!^tةF* ,y괻)^"YЅ'z~抡l9%`&:tRI>Y/9 t%g$Q?}~~/dii> R~g©>)'h^o#v::]ƍI7py7CCmmlJHБSpXDK_J/wky?ۼaDd!jvSe>|G %]\2g/FLثJcPq5\T>{rHx;\ef?3s)SwEƿX9s)Ҧ#W\>E%OcҴe^ƀ^!9O fcf.VoBls]й8Pg+6Wny.VtrðHIЃPLhw6GHηN_ ;ߘPK-Gz [j1u/>. HMMTD6$ޟ]CV ɘ|w4%sdφ7ٌ(}: VV~.\vdZ"+Z1vms., +-ӄq[ojQ(%zل˞Da=p{G$ _>ڵ0/l2obOfZQ@@K"}c ~b+dl)S S1eVg?쿏EOLc!NOg?zos\ta=B(J0V6iȪ BR>7/-Z/ZALu>)*KFX#NG̩N~kT|1?y׷V\ ahLhr 49{^ eyfZZlӄ p"ם) 24]1}}\'V9%uNim009kι` x: f@61W&1bYdeٸX 2ͫ$T""h@W{1UhhY +#efsqlq@^nh@dCNh ƺN ry[݉&RU2z}yyJRC&cd`ӋTkF|jQhDuLt&$Ught?K=vW$V aq}eViϡvc [S4Ct z"M=I\8A)|Km x__%,sF&U~9T&'77Z X*~C_{@o29X!)}31C5( \z|vxҢTN<,/芔xDnw6wi1'zh23ϣi{,(T/<-n9Zl9.XHkatzsS>e+3_!67x,mSdhE@¬Ll)f_tq/#ZYX؃q t e.1aOӨ_oE Bj [:/SXcsx*cN;:y4Kp?|6a`ǧ[V6^EI%Y;`AeڷɔmA)iCy2!lBކf󐡈!F\A$=%V}18l|,1/sL@٧y,?H{PΐVU#H*45sIk675&NQv[.z]{aC},+TZ OỌY" 2(JS:*lu%,`r:zOf-JD?Y-:H(ȱeiuLzDGh1ƒߟZㄾVɀJRSK.=OaO. AEIlp%̢ؒ +C^M'5fм"U]HNgPHaA(]6[ap+tjԹ!3}Rד`at鹅[j66vd]9 g`3O?7m7{ܙƙ_8W8yo64<bh91y[O'wp/H QCR1Cit}Uq+c 8먹UW2{X"ÛR#9T]TP]R7lڅ Eah0X?il+<9)E1kmWi^a%w\o]qmV-`J ?!,xr*\xaGА$X$8f:bZqFSf53ln0܍񀠴хY4 +ZU{쓔h >0f},>83$S9͆ۃ4 Yxԛ;nIKBw?hTX CSQ٬0 QAWCLn 'w8?ټCl =_/sfK̡|FI{6 Dz\\HoM& @ !HWܲo|e/ &(@S| $U/G>ZGbI)gRc^jvr+2ZGׅ렌5!iIOhqe-R G+QhX7 ̀\9"/͍K4[SNoŅ熳L$F>!M%*n\uTX܌,MEƞt_K{Mi~ʼ8.{1RDhܦUNqA@TIrq{kw>gS"Ml Qݯy?.gUJEm#كQI wgY ]1inYHO(N{fb1ms|"0e|maT531,haRQ&PNSNblQ\s /H(4srj"ȡmP ˓I_LR*' l3Dx*іwq<,KuyQdXr#ptkNDU4QGm[HfH;Amu?PZhifMm^=^OoZI"CW^t=p$/󯮺6+]tEG+8OsH g}&VdII1Npɹ" \ !%an$k(՝ O1hp0Q-߅$4FX3ah$Rsg9m"\hWB׉p(F}oxzX8O@6"v#Z!`ݪ@տ1N9E:C!%+@,,b|p6(:ȧ[c8N89ǽVc{4.9ߤUٍDzZ@V O2G%ioZDU"Aͽ{@jW_DUT Y@[/q؈Ӧ@) ׿6زa Мf EnWnn7w0fc;}`5{UDI&h2x kjyc;KޫJbcGa?vwRe/ݍF%@n9Q'ۇa7E}!ԒFov qw.\]z{};[{m!\f'N4nKm `7HGO?Z=!o-}{Oi7v_Uƕ"&\Z5HV}.!xMsY,!V |+ȅ!bVCF|Kdd[НqX?q.)1{IsɶE h9,\?g8yf[;pF}]9# TsI/yڻ?n ~KkF='BS ጃA.tZ.n:[= Y%[N m~sWwf/: ]Ej1K=CedGB|0r d9׺X9sfMr'GV_`$` SGpc Q-*tWNR:*uKC)wf62{O9%JS:Q*=((/>4>vH:<*W\dR_tM0(65Ǯ՟CAʇ܅cW8ތ5lfjn5(N ׄ"9VVf(΍d:|bI0? A|+\b;^zNlI܍9rKm"}.=>-ؖxk2iLף׼^y' 1ƒ6DH,ha-[Kܦz\|atJ W%1QIL*bx P\=WQeqP꜃dާONCCxI1^!MXQfKN6NzVTZCcK8O\871#{@ \]H^Mx)^Ǘ*Ϯ8w?PϊěV0k%9qL*ղn+\IOB~Zw ީ!KF5`=LtpOHu-{l3t =.2j^GsLMȞZC$dGA?*X'}#Ws6KAb;s K9C#sʾV9vi =cJnAesF"wR|`H4@RJ]b|V/c%jQ1Dsݽ|b9`S/(B'2QebI₫X ]cҷ>:ggGu[BS!5lMD'Hr%N+ Lt.'i DUoOSQcanvtU+5[D'To)~ϳ@<X`{,ViQ̼_ʀ&;@  .f#ũƩ"( NxƝ5EAGwi % }&88E[Эr+ob |Y/j.&۔CiE!ҚrLv6x*х>nZ[^Ww@^8!a8$V |9&?<0קp (~_yfh ˸s@[䙶X2iI5 bqdTMݚ0]0gLMy;4G376͝JtTy4%Ksi9kdwVUM@;/? ( *w޾?*0B¼JHm&LPLΥ*+  †x_(ǺO?J?a7o2-Ÿkjf6@jF˦ 4w s b$ `²|3.W~LMf}s^&-I2"c57"ȮԞTFG*o;.[v|]ec Nm_sha}@i߻ja*)u3p螡nkfa6Llo<;R^lg,1"Fb0< ]]Wh/ +E{XtT)]sy3#qGm5a{b}ɣ`ĀpsZneX\h; X ,y1D#8%>LKs'B]*T pIltT{%QDj9'm1וw`Rdð~L{0m)!nܥ8|"[4ouϓ.'BIxr,[`y[V{%{b[zgEd<3I &6h^F ;gDT/qjm^sI{an~>HVܪjeBuZdi {ڻ\Z , ^sojg:֑T1V*h6>*'s.IRh]`D`NZza[c|:E'uvJEh6>dDC7[@oub0k0 "|%k no8ʧ8@QŜ̓Vѯʺ"V : zgkL.T;j}}w)+5 1Օk$-C\^thLRZTi;[Ed=Bg6YREՋ1Z;W+tь`ض1?*ðlNL^kجObC2Aޫ4m 1. CbV&o> Z|]jsyF,O;V_E;1m=_;!p\::|s|p*|D"ՐMTP(?JTÎzNH kI[j0Qqy];jSQ=bd;VV" 7 т _֍~!,Z$8&?ZMLr)Ɖ &&_Dabdm.ZvljJT]_)PxՂ#BMk[ZnX`E Rf2L.9%k ay~7WM |'Ha{&uM}?#y04#\ v39 ԊM/iSi .,ac?O'PkhMʏ Ma Rj}Ggrc$jyb JvDmӜȘAL:R3L4 !@-3J0uŎiߘ*u;t!Pӑqy50{F9WIC nbQKF8MGox v`&tի=-/~E?d!s~'|vRXqxrdvkѡjotuqrzк#G:͗X``Vl푄+ ?)@F.IasJ>OxqJ/XZ vPJwv}w6MQ;7>"&jXw/ ʼn7uwSD].+ve159j%%ctQЄ>"dEpb0\g}& 5唛ӣP_,Vw8P2heJmGbʴGUiP'4_*6ݙɆbsiR{EduXfSmELLv2am:3jI!Ԁb򸦹M;dSIbrYQm<-K1^{bA@-ޭgpudquACtɻ=FPSkv{{51fIGgOȮ5A3s+/P Qa=!dzHO%̹vyn;e[Ti,;QǰH FGe_^RЏpFS焰'z˶[C8JcEGXW^w&aI(赯-/y!dfy;z)46 ^+qk>76O5ĎS-y8 F4-D /uh z57ӡm8q`G2~̦$[ȡ,>]3V4 (Q`IEGRka]֨_۵:确F?jq?틑c7ǾY3yP1"+Lifl$Va(_4-Hu2rѷf.s +jlV&ѵ0θ;WJٚrzP^~[ϰbU2%@8/d[KbuRW1pNUܛL20 C]@ցR e&e= /iv c-tơvuܽ~jkC{8ǩ. b`ѹże߂YUzp8A7R4s;9h:A6r~_wyY+x?ovؗ ĸ#_a}yaBdt鱀z0j9GG&nsh\xU1$ƠC,~4;To6}=,=r8QP9oDGc*B%Equ$܋DQTQ-/M;G+| >s2 Sl.5wv:9X;??j GVjTgn^`z CF,?CK;tઽww^מSI:Ϧ Wx.BiPb}/j3!@ڨm; #7Ƙ(2 `=Y_~ ड़G--Vud+]#멛oq+/9/6۩>R* s |x@We/R p@n2'L JOV-ou5uc6ְ׷ף*y^Kw}g#8ORtG.&7ҟohq~WXN(޳8PNZ8w]ol8* όV7pJ/6&V n2]P,BwTg9Ker,+$3;[ס]U8dΘυQ*Uj[T7&"DUk>#j* t8VaGrܙi;7Dzdh,8)Q(M;A}qV)Gi5]9*oI3IFy@\}ۨzxai@}s<#]m$YWd=#H<\3 * \â)A9513w} 쾽LT>"##N8g_̥·i 4C%#j ?Hc=^&(-E8ٰ^Y['ZR3(Mr;,+1PR#Fګ 4k]kq&!on /~އ-^@<<ٜYΝhj4ԋ!U 8L$7UFk?=ʰ5.VD(#ax3Q߬6X3!cn~1f8#6mߚNx֖53/2cw[ΗԳ9ׯ/ x CdkBu3pA05T[mU_Zlnxk:Rxt;-cC~E,g;`N,GtNߟt{줧[ QꆶBTxG \E7]͍AQ`?}4]/k -0`\וP9+z+,c^` |D2fV\J-sA.[O/6+_?ogTV'-q[nқܰ/9Xxm?;,$Zy )p8d!]0MHZkk;(2z ,!n x3~ Oc3P%b)aR[ꟖY`6ؾ?@ e˜D^1ٽ@~GͣD|vʱ0i٠@$9dә$(G &:}mgZ|lKEa&WdBڙΆP(‹ vpXB Q|ZX6Lb/- 2W!m3"Lcmo1?e1 i h2Z\9Dag9˴paªRz$ٛL|ӡ[q$U07ic(WEڿ*ұϓ*2؏7k#W~2^Ki:7}v#lBcm4IA knecj[}}~.H(H <l7c~eLƅ)R*u<ōfÛ9u(+6JjI &-nF$xdq ЄGB &Z5KӼ9t 19-8%,PڞʹeM)+/M$,fj'7@GbF'5-ĤQTHq蕨ŅHJR0G?XI;[}o@l, Y0*n @7e W꿻nE-0!Z@G8'Zh=)6˻V90SK_Aإѧ󼌉yºK,Hj>9z̈Iy3sjL 3'p.."Ct~'TzxmVsw'\anG`@%ܾI'6WyjDgOveۆxG=q77pF:y(=$t[Xg#\{+f1_S,0 0Y C!wmf^YT9 icT ll\}w&4|Qkth,n\*<(=q.aC@zjk:G|6M&-.GHDT%*ss7t3Usgj s$n8ƆJ;Zc:g`5{Y,!mn Z>ǁrBW!?X?`0=Tj%*3%-Ɖ돂`F8$`e DZOf|Y|&Bq-1V7W:!7ѽRIF8hW 8e1̫⍔zH iݨ~9 4Ak Bى/ҟVV^37g~}g~'A)O4BOyzJv93[ޙvع7_Vۇ,U{{NOӏ`~1dgS^8ˣ%.q 91nn&&7mcb`oe,(Nz!qai;_Ke4 >$QIJpQSE"k=A鹀dy3;~pp4e5hQzjUN?u>i@/=Op^#s4@ q-w8|xOQJD'p+xpN]x*K QV.UE+ }Df P5?dաR1A!HKv9s5궮~O .ӿk]W[4/$p:X*!ge&|9z4=ϻ=`WR/#Dݩ_ (}2l Q(z- ύ8yѶηF!3OF/7GxLnAniDy0bXq,lfxk%tC]>(pD.>Bǰs (gQZJ tYZz;{@^P^Be3SG4AC$ -$Y;hkWK0jK8)$-)EE,rrFDFM?x89iX>f)K't.ѿ|:a"At<6GVq~;.󥻚*clnRUB>YxyWy඾SR4;w#f!%戭hP,ECeWYzQ&|Gsȵnش6yLhF0sH'+ A~5y2;DhiW7 8xr`N[. $*oo^%]Xa\~OIA`L j6Ċ(emX#WFI2jPq5|B"q_!haT2ڶ#Verju=Y e;E]+gc4',銋z ջGB3 V $+y݆9++S==8~Up=%H9ʞJctG'?)|IO 'D[jFL[bBP+ pOyGֻ</? N97GRwe;i\AVbcŭLaDO9?na2dLS 5fY!o`#@;.,WhIIvh^$; [&ϏSOxPi~FK|k8ܜți'ԗe-'㊺'me_M,$4_]Wxt>uN!4A6Eݳ b)Y [bYZa[1%JU'=pqS~8_̙Q`JmOA'W/V٨oveEZ \7H;"b K })a_Kz]3I#I` ^p+"f~FXk3mq-Bv3(݃z:( ":A-%~Ī01,JG$_Q[BpRy7Ѥ@B^ ! Cexs`Ph&+}kb3A=&v, Ǝ @qVa> &$4]ϺgDƝ1lFF[aRe~l~Ϧ7إfmdbIt,=74Jک#nc2d@ƅHަ'%r4p n$_-U"PA{/!%+lyS2m`Y,۫|$kLihQ/)|N V*yP4`ӔN!DF}(PCcA 1p &FU`2}-S_-送$Tr>c"1;nļрb0* jzy}-?8!8M"lHJR=0͎j%[5U´1(|< ԲVD%w)Z }ٗYWCbJ9=EjwxP/XxTJ熳Th-[5D_O.Me0+7o.=<1;-P;^vwO3; `H )H6_øKm:Փ03tUgD3##]ҭ`7Q@bgd3J]w*gX`ysXϡހc=_޽[SC  Aت$5 eFKtmD&n{h{L`K\E_iEƿ?7An5 %LqB[jSDOGRߌ`5BNA2To-4?<߂}ݾ^8+rn<-ݯLUiJ*0s;+}\Zv( LWK^Θ%d"H=[I9\%ɫ0?u;'܊ėmۭY9AFpҮο͟0)8ҟӹsC,=̋a ;m~H2P!V{gljX NiRt828v(Hh,n):awOY8jR}'TK+ebL%ꬰ7or+4@"Eݴ4 ڴ4?G\ڛ=pAސz:f rsE,/Jn_⵬*mo7vCY#;-\-tǖyDLj-V];xO[W[a )ԆmeF VwJ|$ CEեs@6 L=U K)p /~R,}4=KKEjh<$Z=PBG[5~ SI{ uxiW5\2T37-)ݍ1rQ" =`xT$R_3&+ުoO{Ñ̎vz˸A#sgu{b32PV9jqZ+[_t}3C.Oi)TCY_ILh4sob+o%p$r"J&M$/.j趔K~ҟFWqi柕F.% TJE9oӞ]dNoSsrf=⊓ iƬQF8GNfMH>"{d/6R˔YD:V'_sEww @F4![W}3Ggy R?]y3.azu鐨wdYaHb D{k k{r`׏VkSfcC3ȋD~,$U2" ƹNZ(ҊDd^$߼޶~۽|nv/{yL'eqp倔P@ԀeF@XsޅX>Zc.f .tD0 yQY&p(Hc9릇0T09-S[|" _bfR;G}o:M΅BKxaFoS2=2X/}B`f}xe$ 3n+wouPK9E[/QȿyO|qb+x|ѣ0>avf("?eH Vw[%V)?{G87~Բ;]rS,YJK+77h@EL/Rد}ykׯa +\[{z l;..{[HN#IYGU@ۋr1PD"iҬf9 >'0Xp lb%fM 10Trb)ap N#;bWS=ld!xTQJ_"VJQ$mU "dxy v5Ү<W˳ȧ3`6.e,?iF1-::V{'8̓U56Z۱Y5ͶV.QoZ{mip$Px~s+V78ڕ^5֦м]kdW#Z P\Bú4.Aْ}1bnN`}(foR(z55Uij ܎sikd\Mogz7'5$)܂6L$~.Jya -x`J*\xqhD( AGoc)h_Ō+fZB)krzv{HuI|pu |Xة'Y|REۢaY0I!ԃNjG ˸{?PiIwA|e=iCN͠P/=,Y7C@[j@81M9 +yeɛ-H')ʂ-5` @Q:L#|Tu5 p ;V I4;5w72kk, _H/0gaqQA C9z7:勃~fFjQg_ώ91B*7<"Eԓ"J2XRl޹Y5CؕƋM?B^ag&;ˠ:2SexgU!0p9Čmi|3[4N<$Bis"- \=4Zep I'gu;^ Æ8%KZ#vR-ڍ勾52:XmķZΥe3{39u9mvǒpt"X)VFW7TL?YkhuKyЗ (!]EGNG8%B)r@+oT[hq.SVCiTa?H~o}{t&C@X`ɡQV9|S.', fk f{ UEeC, !+AeQhޚpmBRroֽҮ~ ayLZǘM(N̓]8S~)l,-h)miRgFfH$@ ȅ w̖61>Gwl฾[s<ϢQ"i=-> ܥ{EW^YA⻇!5$ڕo!N9Ө5Ft>7lnЍg:/#sL8 ޔH%}?THMNO/;c #4`bD4엘ȷ'̗YǿbOU<7^DqsI)SDJp5hx֎@b=)Đ1# &޽X(*bALI ).]IpD3LOї^  -uts (jVՌk)~=FEJn'9C39 BqⴌU c=p҄0z|O l9wYP+W'C fOy7=anȹe8MXgDi>0g|&;?@#Ǣي|;u ?{P$/29y3ƚj~ !9n00yƦRk5daLK=1V(6}9/9!Oጝ?3A`WX,aqJ%಻c>( -+ ol XTkm;sny r5}lɫTl@~wRd5SAN .W U|&O]i.GY)L-_cC1Z3!NE배<:%2S(*N@{!/!lyt>3\y*Q"e0/ Tia뎰;}3^+h'[Қ]k،gc*rK\Fkq2𪙇D/4 86jQі-//+~RL /~oKz#C(oJ=JyԈs`FX VWq7ga̳D`q 8Qb2hd:X ߑOُ XX)O& kndu7Ņة443=ԑ X[A7Qc5/Aa2?$ 2>qC7/|ڀ\.ƌj%|ajѲ,FlH9^*|[V'8MT!p>BJR#*N& !v] l.] U9@TM?y>qj޸B?66*Z@j:&cY)?F z-̂JD!;-Oxܓ(S4.fMpF"e!yw~&)C˺q6KIݲ ӻ$ ߿VǑtԓ;'gv;{l8Uqh+=q98v.r[.