summaryrefslogtreecommitdiffstats
path: root/Python/pystate.c
blob: 9a41ccffd462574a15fd4050d5120d036aa4a2fd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291

/* Thread and interpreter state structures and their interfaces */

#include "Python.h"

#ifdef HAVE_DLOPEN
#ifdef HAVE_DLFCN_H
#include <dlfcn.h>
#endif
#ifndef RTLD_LAZY
#define RTLD_LAZY 1
#endif
#endif


#define ZAP(x) { \
	PyObject *tmp = (PyObject *)(x); \
	(x) = NULL; \
	Py_XDECREF(tmp); \
}


#ifdef WITH_THREAD
#include "pythread.h"
static PyThread_type_lock head_mutex = NULL; /* Protects interp->tstate_head */
#define HEAD_INIT() (void)(head_mutex || (head_mutex = PyThread_allocate_lock()))
#define HEAD_LOCK() PyThread_acquire_lock(head_mutex, WAIT_LOCK)
#define HEAD_UNLOCK() PyThread_release_lock(head_mutex)
#else
#define HEAD_INIT() /* Nothing */
#define HEAD_LOCK() /* Nothing */
#define HEAD_UNLOCK() /* Nothing */
#endif

static PyInterpreterState *interp_head = NULL;

PyThreadState *_PyThreadState_Current = NULL;


PyInterpreterState *
PyInterpreterState_New(void)
{
	PyInterpreterState *interp = PyMem_NEW(PyInterpreterState, 1);

	if (interp != NULL) {
		HEAD_INIT();
		interp->modules = NULL;
		interp->sysdict = NULL;
		interp->builtins = NULL;
		interp->checkinterval = 10;
		interp->tstate_head = NULL;
#ifdef HAVE_DLOPEN
#ifdef RTLD_NOW
                interp->dlopenflags = RTLD_NOW;
#else
		interp->dlopenflags = RTLD_LAZY;
#endif
#endif

		HEAD_LOCK();
		interp->next = interp_head;
		interp_head = interp;
		HEAD_UNLOCK();
	}

	return interp;
}


void
PyInterpreterState_Clear(PyInterpreterState *interp)
{
	PyThreadState *p;
	HEAD_LOCK();
	for (p = interp->tstate_head; p != NULL; p = p->next)
		PyThreadState_Clear(p);
	HEAD_UNLOCK();
	ZAP(interp->modules);
	ZAP(interp->sysdict);
	ZAP(interp->builtins);
}


static void
zapthreads(PyInterpreterState *interp)
{
	PyThreadState *p;
	/* No need to lock the mutex here because this should only happen
	   when the threads are all really dead (XXX famous last words). */
	while ((p = interp->tstate_head) != NULL) {
		PyThreadState_Delete(p);
	}
}


void
PyInterpreterState_Delete(PyInterpreterState *interp)
{
	PyInterpreterState **p;
	zapthreads(interp);
	HEAD_LOCK();
	for (p = &interp_head; ; p = &(*p)->next) {
		if (*p == NULL)
			Py_FatalError(
				"PyInterpreterState_Delete: invalid interp");
		if (*p == interp)
			break;
	}
	if (interp->tstate_head != NULL)
		Py_FatalError("PyInterpreterState_Delete: remaining threads");
	*p = interp->next;
	HEAD_UNLOCK();
	PyMem_DEL(interp);
}


PyThreadState *
PyThreadState_New(PyInterpreterState *interp)
{
	PyThreadState *tstate = PyMem_NEW(PyThreadState, 1);

	if (tstate != NULL) {
		tstate->interp = interp;

		tstate->frame = NULL;
		tstate->recursion_depth = 0;
		tstate->ticker = 0;
		tstate->tracing = 0;
		tstate->use_tracing = 0;

		tstate->dict = NULL;

		tstate->curexc_type = NULL;
		tstate->curexc_value = NULL;
		tstate->curexc_traceback = NULL;

		tstate->exc_type = NULL;
		tstate->exc_value = NULL;
		tstate->exc_traceback = NULL;

		tstate->c_profilefunc = NULL;
		tstate->c_tracefunc = NULL;
		tstate->c_profileobj = NULL;
		tstate->c_traceobj = NULL;

		HEAD_LOCK();
		tstate->next = interp->tstate_head;
		interp->tstate_head = tstate;
		HEAD_UNLOCK();
	}

	return tstate;
}


void
PyThreadState_Clear(PyThreadState *tstate)
{
	if (Py_VerboseFlag && tstate->frame != NULL)
		fprintf(stderr,
		  "PyThreadState_Clear: warning: thread still has a frame\n");

	ZAP(tstate->frame);

	ZAP(tstate->dict);

	ZAP(tstate->curexc_type);
	ZAP(tstate->curexc_value);
	ZAP(tstate->curexc_traceback);

	ZAP(tstate->exc_type);
	ZAP(tstate->exc_value);
	ZAP(tstate->exc_traceback);

	tstate->c_profilefunc = NULL;
	tstate->c_tracefunc = NULL;
	ZAP(tstate->c_profileobj);
	ZAP(tstate->c_traceobj);
}


/* Common code for PyThreadState_Delete() and PyThreadState_DeleteCurrent() */
static void
tstate_delete_common(PyThreadState *tstate)
{
	PyInterpreterState *interp;
	PyThreadState **p;
	if (tstate == NULL)
		Py_FatalError("PyThreadState_Delete: NULL tstate");
	interp = tstate->interp;
	if (interp == NULL)
		Py_FatalError("PyThreadState_Delete: NULL interp");
	HEAD_LOCK();
	for (p = &interp->tstate_head; ; p = &(*p)->next) {
		if (*p == NULL)
			Py_FatalError(
				"PyThreadState_Delete: invalid tstate");
		if (*p == tstate)
			break;
	}
	*p = tstate->next;
	HEAD_UNLOCK();
	PyMem_DEL(tstate);
}


void
PyThreadState_Delete(PyThreadState *tstate)
{
	if (tstate == _PyThreadState_Current)
		Py_FatalError("PyThreadState_Delete: tstate is still current");
	tstate_delete_common(tstate);
}


#ifdef WITH_THREAD
void
PyThreadState_DeleteCurrent()
{
	PyThreadState *tstate = _PyThreadState_Current;
	if (tstate == NULL)
		Py_FatalError(
			"PyThreadState_DeleteCurrent: no current tstate");
	_PyThreadState_Current = NULL;
	tstate_delete_common(tstate);
	PyEval_ReleaseLock();
}
#endif /* WITH_THREAD */


PyThreadState *
PyThreadState_Get(void)
{
	if (_PyThreadState_Current == NULL)
		Py_FatalError("PyThreadState_Get: no current thread");

	return _PyThreadState_Current;
}


PyThreadState *
PyThreadState_Swap(PyThreadState *new)
{
	PyThreadState *old = _PyThreadState_Current;

	_PyThreadState_Current = new;

	return old;
}

/* An extension mechanism to store arbitrary additional per-thread state.
   PyThreadState_GetDict() returns a dictionary that can be used to hold such
   state; the caller should pick a unique key and store its state there.  If
   PyThreadState_GetDict() returns NULL, an exception has been raised (most
   likely MemoryError) and the caller should pass on the exception. */

PyObject *
PyThreadState_GetDict(void)
{
	if (_PyThreadState_Current == NULL)
		Py_FatalError("PyThreadState_GetDict: no current thread");

	if (_PyThreadState_Current->dict == NULL)
		_PyThreadState_Current->dict = PyDict_New();
	return _PyThreadState_Current->dict;
}


/* Routines for advanced debuggers, requested by David Beazley.
   Don't use unless you know what you are doing! */

PyInterpreterState *
PyInterpreterState_Head(void)
{
	return interp_head;
}

PyInterpreterState *
PyInterpreterState_Next(PyInterpreterState *interp) {
	return interp->next;
}

PyThreadState *
PyInterpreterState_ThreadHead(PyInterpreterState *interp) {
	return interp->tstate_head;
}

PyThreadState *
PyThreadState_Next(PyThreadState *tstate) {
	return tstate->next;
}
&tOȇCń^Ǔ6Ǝ(ns6vlj<ڟVt .Q μvnSM|"'Ƨ3γtqOu=_c9q.b0mzuק5z6킭ǎg{-ԯ6oc.B^: 4bGMeFY!~۳嬎_Ctv=Q!;%I湑l# LsxkOd1bw{(<ӣGtʑ:ƞ4Sn?$ KUBC۾'Ws3}v:/vzGAĝ VgZeWgZjyK=E*#CJJgAUNsd5tOQ]z.UƚilD͂|ލ73ӯZ1O,:mEv~N,c3s/~b?jmW*sų][k`|=b9|-k/$n~6)x"R͙ M㗵hKm-)c Dq3td߶{.&k 洤dSS s]Ա5yr |2@AC½QW:OT 󃯚 fkYKXyli`c>Κ ̻ZN853zԩ^tO~jOﶥkZԭqחCֵkZԭkmQo1Z 4Fz\]RF3志}Ek&:TiL-zF[.Jm3fW,ͤݳVC./Cڰޝ-okx_:GN}kEm>=8Ƿ} wwJwIF2R{(':{xˤJtoaT=m^ݧP_Q=X鳓ӽ^"7xT|_9煟vWVmKUBfj3Bh^Ӛٳf͛Njե GletҶ39eQHwGeQ 1zz[zkZ˞cDG~.fwNwWM5VSLnR)בk͎x.$$D$0Bw]#<ٿɇHyHo|Rzٽmk6_O|"owˏZֵvYZֵǝ3;1ϻNjsf͛6j鮽VD#<ײ(UpWFq$q>fU`_#VkSyct>=M\c {ݡw[V'îeDlާ}ԤIn+Ϊ-C z ^?Oei#F=|x{i^Ltm%n7f̫ óUXPQ780~ 6/n%=skCn;pm^*ujVܷGqSUƜ+*ۿįẚr(H!.x;N}!+녫i6ZS2lrR<.{3>v56=c8-k$f{$1cWQOd1:!4~ޣ6x|9/ Io埞;OzRn݆rHz瘐o>aB3cҁam׶o.mZueQ7a ˀC&/t''ȳm(&;|VWxCxgr Cz1 ' &6ih۞QgD(I>](Z,9~?0Ӭ<9*4oxvpњqfdv_-3t՜_9ڽ%c'59s9sUU^VZiUUVsUUUe^|+9sپ1bٽs+X1k+1[Q6-kZsVٛj[9o%Ba_/>us!=$&9҄ uk rtw]wlIƧE|}l۹'<;524d9]iY{8t d%xOqqsx` yW{x/{ʹ,?iP&Z 8OO-bjT;0L5UM| a0u98CW 8 Gl?9(ѿMm{/r")3zLUrxP(Zy>oH?q뺿@@JWp{닸2-,!~1w_p]~~<]mM= $I$mڪr|5)BD=Y$I M&ݼhLFN|su/|lE[&]pm꾛o .nCS4 Žs0힂: %HV/.rܺewwMέvuunEB鰅.ۥ21B!9tT@ %*Te52Ebg3}8<9xIKW< ߻#%vٵe{~ꝵkt" 6m»~ m` 4(6D~ EF5rH": 0JPPV\p9\8)t7@Qc0f 1Ui3v*ԓ ӕ|7]%+1C]-Lusvmt؅mn cG!P~m_r!Rh}GgJ%C#F" `ZK&@KA892l1z=;EVIFD@P A7 "v=`HBte¶ND~0̨WR}&fbLι^O0]ߋwx Zgy9f&yIިd /ޓ}#} ym82 ׍x}wu FDNNl׹fA\135$o;ΐu͞ kc(uUuW&ri-l\9rMJ 1aLɁR$d LE 9Y 0Q {$ 7@^a0f 0pA5&YiՄ6A}-Ri+I&PXE=enyt<9wGsx&;J$$$PL% 8 L~i% AG@@nL rqٵ;} X!}!VL c*C6 @0LM RBȪ"`"Q%R)!  k[T宧 2Z6R„h! ~QIsl+ӈuQ/Z[jjkmLxB26Ы/DDE$4YG:_'|/\.RbtqQ92B:͂kPQNkn$ 6)kQ+d\k 5SD)KyXV9):sdlqMLXKfL/D`5ba0E6 :,hG9?Hu9;8&}-d]<;}/Ĥp勤:ďaz:ϐf#PI&m@/ij^&#i`?&? "!ǧ5#=jnIYLy\7w>][LWudGϕz)љ:H%T8fff{#Ͽ7Kj1PpgݙmwI$I//~>?R]JT܌w[/%U[mr?A!|]%w!=X& ǯoe}:L{xUwv>V F {ۻӗ sc d15h6Bٕ?@>Qgjco~_.ovm^YnoᕦjmkWՖүFs9or=RͭhoR§e@å;BT&"$ jEfzSᎵR'`  G& Y3TA`>N.|62N3,+S79*?BYGH,cΡyQ3-&hqo_]޳q@jdwHqtH9_p,d~Z1tFz0^0>xuo'̨I!3N|r8԰o^xif&Ǝ톺 etia>vE1E%5| y$BULPQ(UtU'{N{rq-};s1=˖A$ % L;T;~R~T?Iv83fC1S_`#Ei*ۨfIՋ$7q/lbzS0Łm5lݛpXʷ 5E4{עJ*fHb,,n3$6(Yeq2=*8:OE [PH6:&;csE7>]&$H a# 6a fNRb"v 4Eco[`{H5/'2˂z/#jH4AHrHu A"{C(x,Yu#JT j C ᔡw9Ha^"5ĄͣEu@>wYPf»-C||a@|h\5& #\ SW(8oq_VFD|Y,Fx>4GRN;"'aP; fVmfy)7☔.Ox$Oݤѩjm ڌښ :*8d} >ؗ;c{fя޷5FϾ<;^gk.m۶5̕m֪)Ѷ泓1VU&gG_</Z4{ ܎a _e~1$1Ajksv:0:">p:iNk@cFKMrɧCϸh,~4x9 {:vݘb2SB+rC\e*m߳σwӓ,zm'Gjeo?v. a.0>ϯgA_瘜WT h;`_.N0? FTF9@=eYA098HȢmpp,3N%xhd +͖܇AXiw #&tgDރl!Qܯ+Y0&[*44g:[T[iaqtPM9^@s:Yҳ#NMI5£w ů/w1,F?~o#Otkf;maNyuo٪ӺGquntz3ץx;ڡͷR}}iVq\d ,FwM\[btNTZN4-zI@uli13_i#_9~[K0& ˚P+Dshd4R뽒 ᤥbfyJR?x B%Bz\k-砹sP=?=N\߯OyuIX?;ry TҬ}|wl*dEfPτ\P5*kٺ $CՐ8p{yDuѣL]QWITPŐIJ .YnmhÖ.{\|ðn—luU{ |֬BPj*jK8z;-d]1[(B('(ZB!" Um_Rqr,:zShQ9/4V/Y~9,:t9'Ҭ`1c_s{>?7cT!@{`BRRK-Q)ҕ-ܦmi2[JJB!B1=!:>mOV@ 0H$@EhJUT*SiTRYTեJ6Skc[*$i ~RCʲ)hKFXp) $PRHhp4 mb@] U!*ټNޞ'2ј{Ђ*(ǀ顭4 pL[ޤCd ͪic,j$Ma‘ B"^pI 8IM@AyѭG6ۣ˖2?fz!3!ՃYrh S%B 1$3$"yæZ0[a_]*U,h׷/ϔNXbbPMI7RsnSdLuCþ#Ӿ `Vܐ q4ha _8W9Uku ɫSG}#|(mhƻgZĊ.S[;<:f83{Й ll" "Ӡ",OA0s>3[qV̞r 6M.FF$PI.4Cgӻeq1J$`F1HH߁ [22"5s<湄b[UG iud=Ti!% B7ߣ_o0]{^xt'uac2.S8sp̻2!-D:1NޝoKfpd%H2DA֙@*YǶ>Nϱ6{/H:m"Gn y,&2~X"<>:^lMz_aj9/: Fqnr~+llBW0)A) seka&kS6qKױ Obzl*73?PwM`oô76.E=b Y9Z.f^l['=7UUfj:o앑fhTe泎g]Jf󺋒>msh2[3қ-ƣz gcכ.]u߽3 fCo ;301p@?.baqO #:vY@PaY胅2 e uOE$o+D fyf=OǪ]rv^9;g̽tM'3#&ءk߾veW(pf?: IC .XoN8FG40)BL B`L3 ;yp{}4~7 Ha3NKP.|'XX~nWBz`\eZ#ND Џlݍ(&)Cj [JvSOШP/}0͗GYÅ9bϬoj3upܫo;Q~:o;,p*/4ZU^]jƢ9HD/Oهמz> _fΗ7}d -0e=p3KX}o^^cF"`S1\gVS d-7tW5VJ1qݩf+Zq8GK(.9ͩ'G^r|vTNk+-Muf'OWkeԵ(N7}\ztt˯܅; sp\BVAdFVz|pqɌݬRϒ?K9^Vfkyar&}m 1Rߦp>qheMj"k*n6ӡK#g!~>6eq/!6@cgٸY9P]Qwr/?~=44adɠŏSq$r%GY}'^mcF :uVi(_T~ߨ)5 EN!aVJ׃4n=C  ?{G SU wТ?qynӌ䡮D -OJJ=Ϊ3P]-s_QZmQgz4F~w?$`!t;9/pmm+UdA'qybٴ<^x\CW#0Bw*@1O&BSTJw`hxEw @4Z.lK{)4¢ i;(, glrǝTBgx@ d6M^U㞯.[^/%uvI>1b(Wf#>LH/c_V̧ӥf &$g q  Hֽ5##G"hUM-/KǏ vYw9/i]-{;SGIt],5aSXƫ2HQ`EFPr~{|?jCzИW2jD^G0al_ {yMHEwFVRTB!b++>P-4` Q9atˆ) #@M4f<fHTe.B_ N4#oc;rʾLsł3yx~JY~04o&S U (d<5b"8-sYFs xn4aS"d8D4R& RU nqYt ;C0 XSfڧǧH%X-&2V2kXfٳH4p'ȑ5 BmV`[c#ƫ!BbXs٢7QjMb&)շu8 peeTc%A@a!NnGN94 ew =^rIe?@@#{J|| >} 1z2}k4LL|֥$4g|};/USJSJSJ2KDu2tH9zstr$gwyb(s n"v]s , h`+$D`EUƢu UOǣ-,(GJQH{ˉCDM-gT.nu? .XITSTR5ECj{D`:`ן) A27g(0Dϵvn5x7/1#r(tS$v/.m+8!7VO%|;AM' ; KPlHPpx$@(V,uIԦ]S5 UIvY-bJ%7@G0 B Je,@<d@>SuIΑv2OH\юaO-`TE#$ݞ P<,s"i$&>-C5$ 7| @@`Y֝zچzլb̓VHNC׿{Yi [ *Xlczh?!R&cx 1Eqp(5+~Ψd=ev.Qj*F]OpGŽu&348/!zGG6ot贑5etѫA?b:Wݚ ;8IDS0% EMfCP+Ю3BcSLd/#1 b]򣯖ml2jWjT+HH a4Fn0(UHcD*j}vS.aH(||Ikiӵgd~IQ׫ _ׯ e|Wk̾+.}W8@`:ű~52hA+A U At@j[XP6CAqX 5p:A^x&o[ +I$Hch2O OGsIgngCaivv;SNfLJ)Db"zuKǒ&I9IU4~,<"9ixO ,OL$rG`L:I %n#lZ}C A@0Ik'`gqzeE#O[]&{,%ІĶl !ݐ J^ZqiJM4 ã ճI6xiWK2ِHS-,'qĐ%Yr1HXZx)>} Jo$<=l"(u+l3sRI$}R%4T()KFa*H{{~y$CP0tId\'/'2d${Bw<3eJҧ ZS=R(P D_9GD)WPZP7 uslN Qaۚ NFy@x,XM*Cq!@ .@P 6^  JV᳁2Sww뻈pW)V96\r˙=_?!#HSd{ ۹{Š{ċ( ):^kMjVY$=ܓKlK3]L`Ρr<^EV`#KUJ^I rn7 * y[9.^!.Ps>:4EC2@+RO^*DjKЦ>qVA)΢ABр167h+bT4T# zDPFI=[A"p)3Fu=347y| 5HU:*UU8Hqgf8 +(!p׍-0jS~@. @J += 4~G Ѐ ֫f?P9TT[hf20^l}a3eTsuI%7ox&hҿlbܾu |2al|bmWpTCZ[ Dp\]v:EYC`6xJxPLa9ZN7A{%q#!0FJ)8 Bԇd-44hT置*\Wb*WTnjYm 0qZik%3'$ bAe5bmgܵOŨ9/ U`0- |!FPB"0!]#)!9c@F4ǁ}=CR.m̾T\*DYcC&4(DB 1=1-]&q'[ KxH`o((=#it`b 3/;Z1䏗gԈyx09 ~?58o uKOHR[МB(  b9J(PpLx,NAϧm};@D7FwbU7Rt->Q|lf8jߓ|oO`c Pg =1Ns},-d9Kΐt94GFETShkݾqֶe^-z,ͦiI$I$I$I$I$I$I$I$I$I$AXBOXLͭ2eLTRO +N808F &ZߑMqUhvE >8g)6l7 aMEA>Rw=M ,`b]H2t]Y&;Gr(_#,rtي&!GyvNkJ'0&H[CX @}h5CVި:R3YXE Dj {8.J銊wZDP-74dQ|g"e Wr}pG!˝#0 bxP̩mxʠ߰WBD&,INKˈFx0ٹixv6ڊ3Fτƥ4pH!2DY~~rCzmpxCDxX5X@Azy29uG'qE!:iOT.[_ #R=\wOˊ"<nDM$PJ;ၐ(򥆥0O(\NP9<6,b1CـZ隲y }7C|Ƈ\U`Bn1 RQTU9v9" I łЊ80TYs6+B5ĠCxd#, %JBx(׿Qa> bHҎ;>kæ_dI0I+B_n#\d4HtLd'LbBd 6h%% XK #XX\Ad~ sIMEU0q١L==B{>JH!E^0S]hmK)`bQ0|RbRHF!:LKKQ# {Oh{=&\(4u |z6$奺8:㛳7cAK%@Fe6@J pπ?WmZw}@NH 8 ;3lɗS *8߿thL͙UcQ"*a*8%A4j9&Y?Zc!-N&Dv\I$FDDjv%!cqcP|inFdUS S ""=i [e3A6\FZŐkv>x<1]Fd#v0 }L35#ܯZaJ *xXNR4l|ĎroU4&YzfI!"?p?LxNsD4%oA@"-```c5ŨEowecBK[ ac$-l̥!+ttV!X^[@+tj:t'~;O @DxpC9LFS a#T'X PFJYrc\Q$ w(Y' `)=1!Nz7OH;"I""ä%6g^'s̋SoX˝T l18H$,Ыp]Z,Bp#O LYSŒ76稴(q Up-`'(auPٷϞчNGex)s'Ӵ.d(;':N/\ag8zһH}e{A<Ңo/r^A}$d)#ۖ4c4`qwE vsA$bBAJD$RJdMy(8ӂ72HA w@ ]B,T٬@X3i-a5 o,iP}tl@bT:CwZ.+/GgV!PƣX>V W~T57, NT[1ғSiY*;㜫E J`ô5<&/~0V%>]Wcf#ƘJ]AN7N {!bAJ8DaT]ZBܧ)s(ԉ "vs@=}ft(dr5L _ϡA+N?AJ>SѼ qɃZ$?g+ݗPOSJ/jg>9{܈3S#%qn xN\a]4;?ڌņӅƔ^9Ks1(T[HV&0#1&۰w}u 1͇G$>Y Rv;l-["8aypҸ@ql6znͱ6E[yjP(9T9U;p d!Dƀh)N! ~Ji,ufa)!viZUM@+-Ӫoһ {]>Y9$x&䭔GuW:dAyR f- s|VLO$1XR(0 O+(!2R#—1ϭ Lio lDөi,u¦%b] c~*RCA~[,hxL~!F)& ȕĺAE0_HdPȏvws@AtAޛRQ_Q)Od~/3Rߚ\I +W՘=c -K:T9@sh77P<0q9 26^qCRz{shK  VQ57NQ]Mg^6؜5C\resfHU A%(D"v Յ.i s)(<Z} E} ndT&'ƃ03DG(I$ҭ4bhV۩ɮ !3Z u?rRt(g$ u;|O C;Hf.HۤMRy]>WPap_KC=F`*[=GEs*8IA pW~?漶_DDDDDDDDDDDs/]y}~U_$#$d!AЄ>A H4@RVBﯞNHT.n(Bi"h4 >'ͽD2,޿Ijbq=LEGAOPK$il s-f),5b<7fk!ٳ 0]\%hDPTW%p!X O7D3L8@ȩv v^Ѥb^e餇Fe!X ?CC#D?h]ɱl'N.?T,I)S$(D1?ghez3MbE.DqD?}Xd;Pp,c` \)U`٫e%5 l"ML CiN~W:̘x>%@LT *޹}DxP8O |"10IbnT IHA7EyD~8+R)Gf$wq +!@~Ǥ(xBB"""ߧ|'~ӵ'BBOIlP_.赗|O$:B*/gPpo$M?筄zsLUC索J"K}xMK_gq</G"ET!GU7A+%=Mmc oDIF#Y.[=kaY9.c.i ]\z;V]$}H3(8* *M~.m'>dk\Vu>D@I3I{LF=K?R h{rA?æp Gt2 ?炮dOaK:i‚ߛS<5 V[]0hÃE Odd]`2&/PnSϢh"9 #N."a Y`vW Bu5[Vj)XfW`/Q5CTumؿ^F!Gd`14I0-C|僭"pÖgo! K1rg}ጫG7_!:wDN_]OQiÕw7sՅ8pGS]d6MJk2췸4oJ EO7?]>S &]3S_^ y'htrƇ: tTr :G50X 4*ޙFihOw;l<9tlϟfTm)du(,5(|E VUP1SY߶cJye-^*|= >uyx"G<i"G_Ue<~fnܣz!y,*&S7YfK7oeY 'S3{=;%v@᪭zy^WFg峮^A0.HwcW5vHЪОK/m<{p:ua8+uV<Q_~-Uqfsq~WM$7E}F=<v'f3S*Gf`{"nOE\~^zqd~_޷xo5dL/"80An2hTʽ2QJ.K!}@Ӳ2}̆eokۓ6nx-\CV3X9]50z$|g4p}ʈ4qDsjp3,%~jIE)`b  0;UWv@W?C NVh@W U$$ 'fݜ(LCypĵp{ȸG@T A)3+]m`FGїH 6lHᎳ=!ð?} vT́ئutAN$--(Db&.\·j1*!Odn@Nҧ~]*Hh%Rj*^foni}$I ,fg]xgzv@UQOi</ {Ɇ ۇQNL:Mo%DBq"I fiߧѦ JB->>4; w>[׎pvь=eA Ftgb <xZA[=|Z>3 ?_$j} !͔27#aRbF}}O)sq[Wl<5$'A `&@ð.)X%sOCxgߗo{<<3B _?;}7h(r>g'І( '\) ɘ^z($wѦcw0{;"?9vW^z^ï6HI$Y"1ە(|yt0f$Gػ1oU ⚵iȡ %DJ JP#t98d;$I*I$v f+Nz@܁ZQKBMx0O"#C5MPe+#v$'JS7tcm-ۦ!2Pǎ Ҭ6,HX_8jlֲIE03;^ZZmrJWՓµ3SgMX3{L |{*gho1 =u5!}C  ^!$#ɲ) u;ݰ]?O"Fvݚ Ǚ_ !XTW(Rv@,$L#k!9XC5UFܻ\iC6o-ہalV_GBke/lBQʪJf\<>v()sV? B0` rYp#y1dM* Hl,ݠ$l;{lAH]lG$#,gG{Ryzİ !E(d 7@ p7;L3RMNZHmI$#ˆ=m9JN8&aMM n{dnwI -0$̄3aIg^s-13)LͪIUMU%UUTTPQDQTT*NRSEEUUSUI"EG&0l\Py5oRf1IZH SRqD̪FT$_PqHX@[LnXbɃ$#@ ({{^Ly<*(N>,!& = trץ4㨅rp ᙡNL;C ZLM/ޘm"IbQ+cNth!$/ k-枒gw~j yrS7/P6Ai$ +!;w뮷V1ٚsS=H !{ 3.L5 h pm4‡6>}K&͝c~ ްXBPTD Wf5Π31ݠDD!  ?2RVU󇾰v >O|seM BqK~[xrΘiOD!$b`b!ӯxB>좮c~3 Y2waNe[er؊!I1)a 02G@r+FJn/z$ "!7u?l6{'8k1 N]Xt}1iפR@# %9߇!]t'. $yU:3%GP7`asv6O&Hd62VBBY,X@#!8K:Nu%)7NY ·8t{7 Id/H]nwa~!KsDQsa <@ HxЉLME^ǜ(LA!&O_u! K=: =L246~;H PXr9X\ &8í}冭q~]fqFmq #^j*J*j#M & e fD_uUkUEvz#3y4@GrRPU:^}̈m!< }O怰d!fj,kJۄ!J2ek9َ+{8HK3,KX>F}x=I/Fl5ao0m߾&hЏ6͖6J&ju y3NX@$sۋ8j4TUbࡰՔm VM \I!2It{y[&oq!i&f"/m9?4xV1Yz.cs^q3SDNScl "iq>sw>fDq/!!#q-4cpv,HX˧s8)a0Y4ka y 3v_@u`|'6 l ݤXJ" G/3 \@ooMlvD\` (z@e g31*K_d  $0,ۂ}0gry ZLpvg ֵݍ)ãQhX/Gȧ}4Ui]U[Q2:ܣi\ ' ,()a@^N2{k蔄 N\<1E4V4_"uzɵoux B@ j~9-A-΃!e'*XIVI&3PIa q6ฌ $J @2NGzD1OwسeRAQvJP$,c 2L>!PȔ|a:01FkgT?EfV@a 7 v@?b;G@cã!2$I$ޑ!3{(:t,Gr(@$ ꡴E/hh#?L7|U;lblB]r]ԡ`1)_ة[ֈdOP= bxC]a?#5b! 2r_9)fIL$S%3q8gG&$:<Xi24im #$d$`j>S%v{1!u=Q$C.Hb{ Ԅi0?*AyXIX}Py@SdQl$ K!ƇŵŶm6,1jѭDYzmIm$FfC@ÙI/H$ :9yӝf6۞$A i$  c\K=)TyK|́jU -b!OrRmDX32"bte(ђEFt1 AnH O-y%Wnh!1hS;yQt |~ޙxlmc4j/'ÓO럖~ukjQ;tN 0$ =El(yؤaUQ$,JAy3y:;b]6!FY'-IK9S6EEM$pKL6Cm;$$t; 3o}C({5B Bd&Gyqٵ ~|n;O{bLe)ܔ+6pZ``x )XWVRW[:H S0|& !RyQz ٴG z蠙W%'u`u& PA0)g#ei4҃lMЬ XkxւBU$P-G 3d`eYԡ IP[E|ۚţ$5fF !/s*_ʲAzg>+I1M2$4 ⛷ƒ42Sk98ZYm0)6f$;l2@Q쩨"RaFǤjBA??eijեKV-^3}Y tؐaE =G=J~1!hIRm%}U=蝦M/#[9 ?#jrH2<<W+==p1TJ)0-$A I :&]-{a~qƨ;O$ 4iw f"ZNQfDP/po\MOā"0uh,+ .=Y(wHw2R!4EGCUO~;LA4CuIQ#GQYs9s7| Uc:ү:~YMj^*o.ˮUU[ ?ȐI ?s 1>߳o:ry }ՃL+lEkhz<=^ҸX0 ~XI@]@ B!pY@.X9e"XsmhJԭJT1{>9jv5UV k!"nBy@)f LHHHJnO0{ RjGfHրSƿNjH*nΓn $I Ȱ+ F8؅"B @V-Uw[&ta"lMaHNhI# OC`tu䃻OQ?_L 8BH6&a ,8BLnP7Bf4SV,殬<2~ 0VQW:ɵ6{UOIJd+.*L>,C_Eh1-{Ջ΍mkZɈIћBO^GAK(Pu<㤣異ge M!^),4imsRuɽmqmկoܖ¡4j6kn;[B`6@Ae8E3IM~S\х .x.vR}0v3GѪPK:ͶJ Z/mmGL9{#! ljܛn*- w7:e38Ma:P xeIV5)DR|-qr2CUs1DJ=T%'9с Bore|ixh?dE O !/eذA-@j"A,t7%Z3sjUS-k?cR,R T.\x5}_ X.PJBE#I  򟔄,{/ Ep鉥8]m8ɣĕ:ȡfj CT  _`Yj4~w6Ċ T<7D} |DN䲱'ܳoZZֵffJֵ336VikLͬkZffmdkZ32ZZֵfmd33=`%2I]=6ҋL]N1!RJ$B@Ԓ^hf1PVYE7_}kyw(Hň]M9N! MIjӤ:1?C #QB*03 c!Q`N"KHi*Buksiz (6QXlc"$@t1hitܠDФDعdlbhdCz*ͱ0܈b0$1r/GT[|U6eٺ> qYSBa|+-73GKeTu[ieN&0MΛݢ3'2v<cڌ /{X/76'WJ|%%2oGS.!kcF>(rLef00r$-A{8 Flrin($O>N]|M DE¬nF]93gP_<hV9 ]K:؛8qRM,dBS#VJ/`iWRnn#l}hIIӓ< a,)\^ǨI ׅ Q-&k. zCݶV`BU(r{ ީ:IA\CEFލ]+ic(#!R Jd2c'Y-K*Js$CA[AX컩E#j? R#x1o q4je o- ڰGb fL< Jۿ{#b80/+tO0{RkuSeEpH,!OU (mHVCYcfbPǁ2%C;x6OHNURo1:q|3iU2*׿nNO@4c@g&=h1H{OoGvӿ%>ŏ I:}8LÐ$騐vDQ䉗#K4B%de@퀆0ױR䌥,4%2!$i6{MV~$I$@uXR#hEiźM!Yp>^a t'NnfD.DL _/g?<#L| MEAOs92 ۺ۳|2i"DMf{<8%QQ{-y!%?+|Z ĀZܲ@TF 2iZҍȶ9ld,JZQ H("#)8=KuYzͨi)`,iB61cw~x|pvD,7gQAȰYMĨU| M2>7#|!+]_Q0=0[Pjm(9{q48Xq7QK4M[ ls׍hhx-&D96d&Tx}픺Cߎ(ʌ9[V1'CQ^ә*\Bfh6`rSR$N.ދv[l؅;-:)V (#^ R,lm KvzuFsù G1 ptsi.[/qV\mK7z,ys;7D L`$$ Cd*fX!>5Q۵k>Wv"5%[:im0h>ueʝFM P, JI6=lǨ!D9Ws, Wy͢Yzx l9 MRJc'ۦڍB[8oߎ75ƿݷfXwlj,:+N3i W,oNd+tW3n3 5 2WJJ|9yE:Hm ]hQcۛ9ynv[B~9Jg;9^ex_>ulâ͸ٮ ?Gr}_؛]ڠ* N;&cfQ$BL3THg.NxԔg;.!cHhPq8@@bBZ"p$$mpD˖BblnQ`g KŪ{Z$7};~vk&8qvϫKM4#|(k26mSHPT+Kb+KiGY Lܢ7(q5)|T??jמ9n8n~,o40\Gmnjv"|;/A˙s:N]@lXyLвi$+"!Ϲл6A=`[0 41b-ƮKMU[qӢ:8yQ{'tzRLԶ}LiM I8918(^` Q`qDO"'9&y;^_`I*|'- 5΁$(p!1%+Q('}csͶn# :ۃ@ѮS$s;/#aq&Ք4G +kZhviӲ$JnawVӞnHjbHF[tbu'f.V bɚaW;r~̄ Go1TH?7?˅WQJ$07AnmQ{*hȟ岌m/ȃ$+F‰iٔ%pP ,lAھ*Q-W{+W/$$ 1! Dp}_{Xt+ 1#3~+F|oui5/?qВ u?M0ƀ&& X( uhޘB701y-(Œ"-A !΁ka}Ӌ8Q1 ӯPy5U@;gVP~3Ce5Yl=X)=j;*!sc@;Sހ/bɝVjs7mEq:``)lm,o剮zq ah$$Ȑ9UV#lvCvT|^jP+sM< 7D4v"ZiB螬 46n*ej 5v)}_vm$!dq)ԋi`ow8Qr;S!Ww$dm%P H3J6fVn$̓26 ; *gَ8m{s)|uWl&*jOg;@yJu }/ E%Ne80[(Z,Xfn BBoh}1 #"P;Q]`jIߑTs=i:Јi);gSo}WG޷X't^ P(})NޣW Pg03Ş ZшSƉ͵m{`MT-]6^z"Yj9MaٜQ%XՊZwFn92"3+53Bo7GX5z*sF۸1[;6+Άg;-هt8U,+MN&ˎl$wSQ(iٖLmҍjNޤ*QCrmM! ;]ѱsGx뢸 (I{Cw@(DF5 0CN;m2EAV-O.Rj“`2pK0^xtִ'2C F "BHetFzH*oJdFȁ0`?nvgpY-q##D'S3rTa-Y憎!X50}(a/~R0$,#`W pj /=s;v4~̀ ym`Mp7YҘ^dN7:D NFtq ##;8„!&/Cy7 L'3auqpXԱS_&s~VyOU#(!0"*Nlô65Ҏ9;Z#WO =vm5{x}HܣE}ʃuct̓qLنlʫӸKdqؗK$n?'l;]NEL&7:j 5ʻtanj?Hd'gN: (0My(q@⤭ j^Jk]LRH]\MР6ӼCK /{ vPd;=@愿am8*c@4}G.e\Q4yȘ&&, `(QCd [1my|>?jg("x@L `00`^ 6޺&B+$֬a iX%8Cc&x'- R=([/SW\=Qؘ(gJWD++i\"/%EXTY63%!1ƭqk=JuО,,eIPN4'g#)9AL5hHcߵ$`o! $ A<yO\(-* E U%ױn9~Mđwd]IE dv靭|7)kU[+\Їñ7)^4 QQk>,_y""׊J}l) C!!q! :5Z`Yp,f & XQeXG>n유Yӥ/L0Ya(¤ 2l!vg<*{-r0=GF  (hja7x#0vS6nZ h7# g[ l0l}:=bD;]hQ& R9n$dذFz8jæV>-kaL^ ",9yPg' b1%CByek0Mg'Ωæb$PILfyˤra q Mv%m#~cJh3mCTu [ x IYP"W WHͳmobvza; 84b*k3CTdkA $BA  |O)uB%3h yH\4zhX\`K98Y0  n`(;{GrE{tL-؀Q@ΐ HPnk|Q5b2n"No[Uȁ() p"xe&JӰP :ad MvT*0MA/L`╰{%r ;ykǒU?jH2A@veLsĩ͏\HdQn$.j D7jGZ rN r-?|C[LG/ yuG0>ZRh< teH,!D^Sm%e F79 p2Q L̛(Hh,pR9P6wFofN9[C(XVrdY$D-X\{(² نI)yD-j21A7!g IԶ7D2(S&3/UJ#)j-.P)Jђd*1fQpn"L+?xrz(~}$l0C.feɔOn<Ab'.(>**eW$D2K-кUD*c N"Fmmw@6ڻ5Wm"`$&4jRY]N4 ;u$`~sХ9Ϋl K@D˯@<"HAq{~ݕH UDL A;ɒD2XgabXupq٫j(\j*bevڵOkEQ'}QWiwGHzB?O___v?_~:} Ag@/4(:wHT(hJX(}\GOMpGPJa# 6URY2Y %ElFjQjX+cj*6+ Tj`ڍhb6M[Z#VصۙTQ TR+p!Dy8S?h~vg= dpL]>HSU@'G̪EFVcJ$ e dX6e.RmD&yM  Qf @ oDA|?ԅUS,X#32Lc!!:M&G"WfX8 109Js݄@A@jA?BS; tָ4ТDhd͢!FX $ )K)MK%fЖxK!R F+9,q@ƴAk@Pb`ldbӕ `:".ҍX@ ɫt ̡<}]򘯾[|Hu!)T.HO񅖴Ig %PF=dG.`Ye)m%b2`L;̓Q0ibڪ/0z@.J* bτ;P:g`a/:`eExgvюSHslǯݒdc`(cGTD&9Dgegll*ϗ*zϢ+3w#"XdzI}Ew2(΂`M:;vwi |YOݺjDk-_ɑ"2q cBB wH;sˏM#8Y-m?wG[[Lz`d9p!dUmM[nr~Z; yA"@!ƕBTXS5L;YeoeżdWJ%^ aX=wB]5T!D') (uuk[$HҡD nIMFڽE4Ư^^WH,p5] I0pс^.@͂jMT8 9@$ of-ld~2!8Ǚ ,K4K'3W3S: }  ,|lM6 @bڵIY(+lL-,d;C愈ܪ$2V"QZc:6O- 4d&S5-Q̥kE[`\[e*3NLݻY>=<r9Hèdնݘ;r(YQ{Yåht45^(mylӳ띵ĔN@pCڻ̩gd 2.p&rY`-Ro=D9ǘl8Dڇt\GTNì $(G WªTDD C'L>q1HTmD +1U3hveF$Hkپ]/=᳭y"W&`ra t mXbSF۫*2#Р쁌 MIc HAHH\*# 1eQBM@!P T&+Ih+%jME`EdcJ\ TXH32"w ܎bLj7  {>F@;@C_QD?HF$18ES Tjq![z#L ։`}`'|ke7:5jsj' a6!1oHYa0!0b/60Ooe&t AaH *Bc)1m1dž(`͌Vag0сQbApdMkZך/7xֵz*'PRkʙ :P<=<)ėCH 0{b'LK)t9w|_E`V4$$O\g511u ꉒ-StdRdNׅ*ciLcAx6 k!0g ] %F]輳+- =P~{ seN8zl+S NJdsI2uIi{M!ǟE,?8EI<#3Fؼ ME0Bm=+Qm܉GB2,ڞٹ1ݦO@$1 DKP&~SٸH' à@zBz >,/U~ړf7*M'yJ=tP@*i ]p~! 3r") +6"z*< zBm}y$K) S"kIiJkilƢ\Dԥ"5HS"%&Y6M.rknHqML#J"6ҷ(-)&5qTbɨrK0TZHbcke{]獺G~4(VPO"ȕ.}HdCciLR~jsȻR 6kRV(*Euy㿐@;*"$S V |2@ _-ri&5ƹf%bk{9\ٶ,֦Ac)45iflZ3cV[MR45QhڌŕMdL K2vdN[Q.,=n]P,zؠ_DNtP[&L (q҆״)*v &F Gs i)EXc(Ȉ bh6p!X@š#n!c]BS , 0+? tk qWGp'?pv RCZK1(13j@ڇy;~P;$!6`pÈp( /j mZ2#DK`wxѡf R` &x-̉T j* :sǼvj8@1(ԽcgrI(RgoUT'AǓQuJqBp·!p`(off@\ i^&d~RSNY VhZNwÂ; i1; o-0 '){І:bY}Z6qU֝%70eS: 'yQ_W*g 1 q."pXW4/~0ޏ=KA&"gE)@"@L  mЩ7.ZZL0L{S'^Eto i}q|Xm jVa, cӀdFױFj)`/qlD qt- {\MÖ;2/*̮ XAВY1{ Ƞ96LB)JZV4@1=׌UX)d$%JO4Dhil.}ZBeH3`(:Dbd~ by ~DA `A'hBPa RjJXS] "9H2QfR F)N7#9~&&q hi$ C0R/^ qž 4"zx24+F) #; (,`rޓ wni(|ֆ&!r`$4MjQ.uȠ):Ho(,53פ{̎RQ/xʗ$hV3NU)?8/nlgA_Y,)2BTP4'ن島L;[oG t6,C/7W]C!B4,$aMwn0mBU&iU 5!Gy- ЋҐ<9p: ~Z{ 哀gCPjzab@4G"Hjd!"I "**8]lK,d4HCN7?QWݽ^$ tUKÞvMTWư`z"ThD%)2ل2?F4dtkiƻꉊtRXJHT(YYmEjiF&Z+TɵfUMJ6Ҵ[@@b1@*Dk ((j!0_.~%l/}ad_r8 )TRYiCOf"Phe;lWf=D[e7o9@rt9r͸49H*3d00D5`fCf̒mχq~/jg,W%`x.}HN%pEXg&F;ωx]DZ&W끁a`14Vj#ڝJ r?A R@h77{ sڞxC8>/Gۈ=Z DDD@-?G4Kb6ZUUJl*)ĸ!]@[QST!$:!a%/r6c6^Y ;b$EZg' "PG\Mcܕk.! RKfUq%TYMnI!Y1Z "d+,)`(Ӗ"¡"2413 -HVbAe.Pd eAA$TL2Ԣ}šNAKBQi!aAV2^A?+Sd4emVW &t.uPୢʿR@IKa=!B.' +$ '"H5CӶ)" Y5-3Ii1QmyiCED8Sd! f4! xcYcI%@oσZŞI&"LɅlt)<\3;izniS-)`G&8vo73AmAj JeZeWłMS\ٽ;smWdF8XzhC;:Cuٚ9Pѫ3;E>Å7.8W;f/*B v-+6ė\:C fUkZֵUkZֵVkZkUkZֵOg[C ?ݿg}|ELj 99d9CLz&Ɨc|> 0$(dbbHG)` 4]N~TD|&UFѶ֯};HswR'P,Th^IDqSwHdrz C0|D0oLi/i5pV 9a\20Ε?'n@vHv "0҇-w\^wW@Pa5uyP{`~t4Mӿ9ʪ?f1(oxHAmaMygjcbu/}&Z5[dۃs!!lYՃZ@,KpBibijMsd%s"RYTƀ54`"(HJ$<*0;=8yRyA%49gydwL%od ODž~ۜ;](eL̵NnD(DcJ%idA87x^=Z,5C>._Z6>͏xC J-vwZrR_N#򼎁a億~ɳ޲,*ƞuK6r>(f=ʀ6qFC 48eFS8fׂYnlׂBBXakpwPPzLEt2|bE"'`m*g='8k݊ DiQИ[, 9z`av$REHx? n_gȍRóYp<vD M I ~{ʬ}_2P>=ч[hi%u ptEm4`Q<=  =V?'N9R W3%!I6  UrMAT A# R҈A}qԃ"yxqs'>m#$+ eH%Ѝ)B`Cߦ9lRWOTA|a)2 1,]2 >ZJLNP9 @1 ?Y \բǢ1O9s+ 4h͑3Tjb!2Tc`mZZ 05Ȓh]Sl+2 $ı!H3`ĕgXq+MA$EX I$2wGaF"Bف?}a!ڼ[wpR0ÇlO,/Fvg~Pu3*v'=ۈ>ry3TCSR`R2zf7>{,< b h]m$pJ qI٢V7TLk*U1d2mˎ&4飺\pZNŝCk547,MJ#'W8\zu3(l2fPlHbJw)s.nDt0z8r;Hs{qa\ L Un`cpb7{m. 82+Soy8̰`Si1DGDB2ʒ /1ˁ&&e-GtdNaڷ-0;r(rO W/Yۮ:Hδa⸩gFE"*3V[; 4IA/@$Xl8`& Tl5il4Q@Ӑ$!'jKER,H C~qT .Ƞv^i5@w#ɱ٢<00 8.sb\ť,ȖU=B;ZH9 8i%$q-w6$:rdXDEo͠ :;r ڐ$#J0>)%+ e,VOÓGmL8~< BF9ul4h6Y⩄&O>w{\OSIf=K"d+HzCa4ɭ;oShsC|/V3Tv) NDźEy8=W ^xH6ڗy!t`/rm If@7'teX)kڛIM`#KL7䞂+&> ) ユU\~ydLzKe[I|*9ANJ HȲe he E tD֌LV"ۮJabm`ZhhƩ2mQ_ U_Ë ) HJqQ QBA: /%Mk{ܷII8"a^2I"AYRFM-;?'g+00 =NԳKd@@X|CUHJ:˨Na$Cd *GR,LCSGJUrMq\H[qQ8! o۞yihvJ'z:v{QĶa / PdgiƯ,n͍Vsi6`f@xWtаGfT ,n2~$Kղo`07A x+a$R-Jwpq=WZR.áxmEJ ZxBoӈ>, R$$BUaHBB0F Yq醼L4& Ƙ4*5 b#L؋ i5ym6/BD$.6޲yYmPHcQ͕S>G({yR$M^I"2^֐1!-׏{2(l/t>a%ja$6Ƭ:K!;۹CĈ~<[ &X{״4ukIUHDŌ54Ώ c҈7>ᙞYKh:шaaϟ0mI 64$]P2ESDRBL\,Qу0R-WonmǎobrDP|!|[dS8ZJmT9C쫪C3hMX y3m4rRY^[;F%C`}Ar@^6eCKD.6Se|r[NuҙiSzbzzxcO4mRD2TL3Иx6 և*H>*+@+=6E?:mJcegXD]l,p#iCfje^l`@RAk)SM @*UUM(:Fn6< !`SNF"$݄<>4hj溙|+chB\oS%Svu+80pn:0}]:!R],#Azk` Ed2l Tc  "t,"AnLMh=Ӹ-ZZ$CXèyrvɪ@ )JR)KP6:̀d+ fz D7B(i,6CB^I1$aT2jPRlRj?9?<f!\pٻɑTXqb٥o[wB=R\w!@ؒ JmNsvK"ZH'*Jbȁ.G)K$T 2B[4|-;xp;g."1d54(%(e.4PBqR<,N,幢19^Q& ]y>j̍wEԡP&gNTCK,(F!}}'T !*1&X ŐfŘm3` 5֢ "n{u݀1SHIM0f"b ~%gT} >wbHImO\(~|zGx.-W=ef@ $0ud>T@}MW~}KWa&ՀxBkO@ñUݺ(#A<"|.7~OTG >۱UN Y(_&kJ'զ~BP-YaéCd0,*VE`G'~{ya Ů[&2!h@'wP`BקOfU$ob|c{#;ʵO̗̭_e3e9CS '꠶@SRHH~?Ky'F}|s0$}abn@ɤabOt?=a=LtPL G1#BBB Ōб*D::P)žEӷ̚J\׾ K>8>[le NL!{@ zoII y+(\a Xeq'8Ȑ\H`Zb%SO2I };"\ #h^;dYS.ki.wIV8b#yOU']p鄇4K,$/ (SBo,8Pbbe"0t҇F(jD2.'Su/ A0.`+_B(zդ/yJ ?LK*U^J(ujRϷnZە5sk BD?9)&T|P7)ws8D[H6@Xm+6-ŏfbIUb\ 2$d 3Gi+ HN-t־_ Yi5`h9:W*YaB!8Qdg !]Jn'0E|J>QjR曛-zgEM>Y8CPgI%BITM^Hf6CsR,7BQRFqS@=D[aDQ bU>-LKL3=&0C$>wX#2S$ؒY#,M"b5D@VDNPI<ހ1 HB( vR_w8e)oR/ODԀÇ#B[`0WH5M;;LlBH0$V c80@DD6@ij|F.F``SZ#VPn5Iڮ!FسiAd+1rZ)Uҵ Ɋww"yLh  4&pfhD(LPHqq(b?#x%M8',ce+$qrI[5˒km6Ԝrv4SЍE1m WĤ dZF.c} \<HXȼ3@)O`IMrGf 4LJktIxSKB,H!G}.#1we[J c`řzknn rS+hh`yLjaMƁ49nc;3bwzAÒ6*wnn7XwLflY枲˽t$ݘ=yUt'T);gmg5)w.DWi䓲Af<$MzgEaOZ+"3ֆ Lvh@DPAjs 3~o,bCKon`U״nρ 6N@iXKmM$@kn/y!W9j][dZo0:ckTw&Q;(0dN7rCptP:0O 27Pf 2e+^/(t^sSd݌!od<(s똺YZH)ܸwXFm瑜t ZN0JgV08@PåO”wC5,t~ӑf]h%g=;$unv!yFϘy nZ$C^*/mik"a+>U$G0NQ,[.: $mөrȁ0XĤ̝twTå3xX&x8([TL9bC9nKυK oaGz?29pwMom^Xo~e撽5餪I:,or mGgSv:?Ȳ[yЖo/A.jfbZ^ VbɝYf柌6ş`˰L7PN5KU 2v|KEEzf!NYcG%ECY/t 3ܫzC؀ٜ=lm-iӻHm=0氘&{qVf+7s+*zLwF7 *JeE<_x\xc.>PK NĦX ,[0'b,ti54 >>W^_KI6Z?32w*t7⣋I 5Tڜ$n^ ^5Y"ZIswygu)oSrm]<"5{E\n-)qSG~&/JcȽ(q7nٯaw1 ɨT5v eOq~y?ÌyH1|{w~NKnIiJOs+%_'3]IVe B@)0HzD:@vq̝]H'R0 {A{g,<8QoN0!Ax%E748 "#RH 44(+.`_( i^f(LTH)ZZf_O+moAMjޖ F xvmV3 Ukʕcu9MD{7a" vbr :fqAw>/ν(ܸ8-9SyT1A\dx=$"_h],`vK^dpór=bbt1ӏ68_#v9jDEPBanK<Gs w(bALkv 0۱-2~{ ͞fP"TMr("cDSE/7uIԑ9& H Bh)Ef82\!i#"!iIΙF"T@#F[M iQ'픨j4.8@)Dɒ67Nf*/&5xSj&wB$BJx*cπI0.U{iM 3uoYpNE zmdYt"EdXء4l)QZOEC5t)c:%4N҅{L/} sС9sn2wܔjbRԷN۳ms$u)nmD΋ gw^n8pfo]t<F'qnw;g 3(\wpʩ# 5j!C%BaDU6聴:;6iEuZ4:nͻ?q_-3TU]+gX{T~K45,29)\1St#Fӱh BIk2CR #X$Qcɳid0e%#)IB >Z_H~]˜cBbIZi@ŲbS9j%Q&mU?ewW5JiJ6["a]9ReLtWN^͠iĪ"jD  `ڇOǟYSyWpUb(%:;Q,|3e4ⵆW>k{u}{ob@$1D 0[zw/?hf dɧ[  o;3وbpDCz6>9&'d EPxȵI>k xQhs=\ -")Qϡ! xt1YJs֘l`yB$O{߸rQ5d>CL^kKZ!MϽ4ΊR5iI=cA2H!12,lⷕf= 1 X.': jL0ۖz -il z7?!)czL!g,!'{a'·9x6hnoNO-d>Zn(Sྡྷ7tM?XԓD9}wI2% SUOOw]1D_)3 _ )R8JYn#)@DpnBBMk$? i H UNķ!)uNQ#=l;MI!Sv}vO'4Z1|ar*U Cq:>DqIJC%h&3BoE(F!!H3JL |[dN 59;l D8~G QeӆԒ8 ` Fa=S`Xّ Bo أPvM;1 Ԁb՚_9-2PA eM Ħ)P8ȧ),hRZ^W|HbALEg~1}G,.^F86 Bg׌~#CU;z5ȴ:qckf9; /`ais8IH$CKy:;oT1Et⥚yQn+'BG :0atID40&qH% lES^Mцh0©nώٻ_SbsuΧ6ȓZq2j Z?xYu;֍ĹO^khyGzîSOSeT '"+qFhrӷ 5Y;v'lm0荣le G(木GhF ijKZ֪\lf1haنn[:fY;*]LJv`ԣqeeKZ.CǃsRp(tZ+bmdKilIHdM%n5XU7ej @X T! VCzLK/)Jpfjzj%?p` =ȵvk^ .olKzHBHBAk S"/&v=`arlѫχt M&w(TT-$#"H@3ySc#@ 0 2 I.zK\BItt- @"z$}u;Ѭ% +1A4ª)r0[:0(("QgRb@w@+-ʡȲ(C+`J.:2LjIТaTq6pw {ƖPϘ-Fa]J 'V$uw͊ n'pȱK_3u31ݛEQvǐ ql{H\MQӱLB4U9=aD< 2sl%Wγ4U&HЩv޺%)~A?ZT!9;@rA5$dF:C]̸q( g B9 r\ X٘#qB YIϲ>N3mAC-=li<&xm&vri!;$=X~U/wAr9S%֚P00 $PZ m,@FՊڀmP[h m5EU×|D#" Q$ov4+ ; H7Zy GA~P3x(_KP5{bn$7a6ѱ5(6L`΄,TR| zor908oAtݲ%* YUЩ‚2E؏, LʦDQro` VH16ȥ@E,C<&5bF3hYQR%B#qjUJJ2f&FV]0A)na \Yt*B;ve&t\I33L\+7Qh,x~EH*'Hn@sd=^%*FS>Ӓho3eA!tJx* ~$A Q(Eu*)%:5!&ȃ`h9TUhm+l%mj M*QmƑdTCǘP !aK |Yn >(7!6{Y1 9}PR@PI$"5E*(b#Dhь"#b" -F*#bDDDF5(EQEP" 4cF4m@kSʯ =v b~.A!l (mh!5^5lrpL"GXl DVV ;)ԒTR:LÚvͲUHq30q5(8_-e0nsn I Å I`${} n#2PGmt ]TpH?8 B AI<0P MTH4"@9=n[l!8N2!4 '߉ܿ`\$ /NIuxɒvwz&q7ϖRķfŲXUQQ2C X N.ȵݞSFL9ÿ/Yv뮯WТhvNs|b) a hE{%' ͆ 2a#KanHpT jҐROX>MG4!$Eؚ{ Tm]4E$,i.a$R*BD](6bpL{3mepKh.!p,ougC Z!*( ~h^ lOtd+!r1(-T,(CDXTYUDÆO upzzSu.C0.rQ"C}'=ywW'!$'dpy2 uBo ג#[!Da*H HSE0'ۑXD$D MYXHK! %Mo5'鷉Y!`* ܫ Qb2 1$7@O XP15t;# {9>φ"Nx,JN',=THBoK47Q Mqid1I dJYsCc:[|[aR HeBP46 kEʸiJIjV\n1(s; & e֒\D6EaIeó@ѳDAH|ɐz3`hLp4Y.~;6oTA1^C؏4@8Q88oÑY7V_|ȿ-&I${Ty@=&&$2un$~t5(?9*GɅDAQP'[@ز؎r`cWV!! G ;L\/9)_EBY(~ s T$$ Z|{1F<,# R2?]# Pj͚$a(>h' }9"|ݜ<}y-~"\P2S[T j(EKb  TPk~ Ըdr.b G. lEc A1S^,CT}۩muW93C7tuzA mqжIܫZfwew)fA FI[4]'$pzz˒[C>*{~Sm)~YW;!ëZ8VaRy߉H $D,J14ʤͨ*7̈́53Dx7KTA:g6<q>t.j"`\يq%ՉbP}!lE`A( B*Aa$,EUHB3cU{7!"A 9ž&೦jM2O.n[ Ok  66K2wPݲDNpsՋKoG(<k / jP(h& [3d5=tȳNNyuܨ/lɝbzBBmbC;Z $Y֍* T+;Daof |9*ovFptR02\N8wLz(2 ,x#F)e%y.c"2.iU& Kpӱ{,)Ӻ9B/ *Ӈc~pIҠnk"08<}̣ rRЁw] i*ׂ%& ֢D($!Vvy!챬N]<|/IHl1 +MYGJYK%+Pү7&2kko֪lV-F"blVMDkhTkWkS"\)5II4j*`h^DH(hԚM&ɓbEFYI%$MI$I)$L&\5nK1i6HeNA#(u#V2VCQhەu\!Q}o)˜{vS7,Ǩ5?ǟۢGNQSVZz! #eٷE᯻a1UZW .o{Åg M/;*_d'L^3 'rKE'ȇ.~~ V鳐m** -cs 1eֈiWSY|ͤ{5X;Ms2