aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/install/database_update.php
blob: 6c9eeb6a75d7742e97089e9831627565fb5fd917 (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
<?php
/**
*
* @package phpBB3
* @copyright (c) 2012 phpBB Group
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
*
*/

$update_start_time = time();

use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;

/**
* @ignore
*/
define('IN_PHPBB', true);
define('IN_INSTALL', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './../';
$phpEx = substr(strrchr(__FILE__, '.'), 1);

function phpbb_end_update($cache, $config)
{
	$cache->purge();

	$config->increment('assets_version', 1);

?>
								</p>
							</div>
						</div>
					<span class="corners-bottom"><span></span></span>
				</div>
			</div>
		</div>

		<div id="page-footer">
			Powered by <a href="https://www.phpbb.com/">phpBB</a>&reg; Forum Software &copy; phpBB Group
		</div>
	</div>
</body>
</html>

<?php

	garbage_collection();
	exit_handler();
}

require($phpbb_root_path . 'includes/startup.' . $phpEx);

include($phpbb_root_path . 'config.' . $phpEx);
if (!defined('PHPBB_INSTALLED') || empty($dbms) || empty($acm_type))
{
	die("Please read: <a href='../docs/INSTALL.html'>INSTALL.html</a> before attempting to update.");
}

// In case $phpbb_adm_relative_path is not set (in case of an update), use the default.
$phpbb_adm_relative_path = (isset($phpbb_adm_relative_path)) ? $phpbb_adm_relative_path : 'adm/';
$phpbb_admin_path = (defined('PHPBB_ADMIN_PATH')) ? PHPBB_ADMIN_PATH : $phpbb_root_path . $phpbb_adm_relative_path;

// Include files
require($phpbb_root_path . 'phpbb/class_loader.' . $phpEx);

require($phpbb_root_path . 'includes/functions.' . $phpEx);
require($phpbb_root_path . 'includes/functions_content.' . $phpEx);
require($phpbb_root_path . 'includes/functions_container.' . $phpEx);

require($phpbb_root_path . 'config.' . $phpEx);
require($phpbb_root_path . 'includes/constants.' . $phpEx);
include($phpbb_root_path . 'includes/utf/utf_normalizer.' . $phpEx);
require($phpbb_root_path . 'includes/utf/utf_tools.' . $phpEx);

// Set PHP error handler to ours
set_error_handler(defined('PHPBB_MSG_HANDLER') ? PHPBB_MSG_HANDLER : 'msg_handler');

// Setup class loader first
$phpbb_class_loader = new \phpbb\class_loader('phpbb\\', "{$phpbb_root_path}phpbb/", $phpEx);
$phpbb_class_loader->register();

// Set up container (must be done here because extensions table may not exist)
$container_extensions = array(
	new \phpbb\di\extension\config($phpbb_root_path . 'config.' . $phpEx),
	new \phpbb\di\extension\core($phpbb_root_path . 'config/'),
);
$container_passes = array(
	new \phpbb\di\pass\collection_pass(),
);
$phpbb_container = phpbb_create_container($container_extensions, $phpbb_root_path, $phpEx);

// Compile the container
foreach ($container_passes as $pass)
{
	$phpbb_container->addCompilerPass($pass);
}
$phpbb_container->compile();

// set up caching
$cache = $phpbb_container->get('cache');

// Instantiate some basic classes
$phpbb_dispatcher = $phpbb_container->get('dispatcher');
$request	= $phpbb_container->get('request');
$user		= $phpbb_container->get('user');
$auth		= $phpbb_container->get('auth');
$db			= $phpbb_container->get('dbal.conn');
$phpbb_log	= $phpbb_container->get('log');

// make sure request_var uses this request instance
request_var('', 0, false, false, $request); // "dependency injection" for a function

// Grab global variables, re-cache if necessary
$config = $phpbb_container->get('config');
set_config(null, null, null, $config);
set_config_count(null, null, null, $config);
$orig_version = $config['version'];

$user->add_lang(array('common', 'acp/common', 'install', 'migrator'));

// Add own hook handler, if present. :o
if (file_exists($phpbb_root_path . 'includes/hooks/index.' . $phpEx))
{
	require($phpbb_root_path . 'includes/hooks/index.' . $phpEx);
	$phpbb_hook = new phpbb_hook(array('exit_handler', 'phpbb_user_session_handler', 'append_sid', array('template', 'display')));

	$phpbb_hook_finder = $phpbb_container->get('hook_finder');
	foreach ($phpbb_hook_finder->find() as $hook)
	{
		@include($phpbb_root_path . 'includes/hooks/' . $hook . '.' . $phpEx);
	}
}
else
{
	$phpbb_hook = false;
}

header('Content-type: text/html; charset=UTF-8');
?>
<!DOCTYPE html>
<html dir="<?php echo $user->lang['DIRECTION']; ?>" lang="<?php echo $user->lang['USER_LANG']; ?>">
<head>
<meta charset="utf-8">

<title><?php echo $user->lang['UPDATING_TO_LATEST_STABLE']; ?></title>

<link href="<?php echo htmlspecialchars($phpbb_admin_path); ?>style/admin.css" rel="stylesheet" type="text/css" media="screen" />

</head>

<body>
	<div id="wrap">
		<div id="page-header">&nbsp;</div>

		<div id="page-body">
			<div id="acp">
				<div class="panel">
					<span class="corners-top"><span></span></span>
						<div id="content">
							<div id="main" class="install-body">

								<h1><?php echo $user->lang['UPDATING_TO_LATEST_STABLE']; ?></h1>

								<br />

								<p><?php echo $user->lang['DATABASE_TYPE']; ?> :: <strong><?php echo $db->sql_layer; ?></strong><br />
								<?php echo $user->lang['PREVIOUS_VERSION']; ?> :: <strong><?php echo $config['version']; ?></strong><br />

<?php

define('IN_DB_UPDATE', true);

/**
* @todo firebird/mysql update?
*/

// End startup code

// Make sure migrations have been installed.
$db_tools = $phpbb_container->get('dbal.tools');
if (!$db_tools->sql_table_exists($table_prefix . 'migrations'))
{
	$db_tools->sql_create_table($table_prefix . 'migrations', array(
		'COLUMNS'		=> array(
			'migration_name'			=> array('VCHAR', ''),
			'migration_depends_on'		=> array('TEXT', ''),
			'migration_schema_done'		=> array('BOOL', 0),
			'migration_data_done'		=> array('BOOL', 0),
			'migration_data_state'		=> array('TEXT', ''),
			'migration_start_time'		=> array('TIMESTAMP', 0),
			'migration_end_time'		=> array('TIMESTAMP', 0),
		),
		'PRIMARY_KEY'	=> 'migration_name',
	));
}

$migrator = $phpbb_container->get('migrator');
$phpbb_extension_manager = $phpbb_container->get('ext.manager');
$finder = $phpbb_extension_manager->get_finder();

$migrations = $finder
	->core_path('phpbb/db/migration/data/')
	->get_classes();
$migrator->set_migrations($migrations);

// What is a safe limit of execution time? Half the max execution time should be safe.
//  No more than 15 seconds so the user isn't sitting and waiting for a very long time
$phpbb_ini = new \phpbb\php\ini();
$safe_time_limit = min(15, ($phpbb_ini->get_int('max_execution_time') / 2));

// While we're going to try limit this to half the max execution time,
//  we want to try and take additional measures to prevent hitting the
//  max execution time (if, say, one migration step takes much longer
//  than the max execution time)
@set_time_limit(0);

while (!$migrator->finished())
{
	$migration_start_time = microtime(true);

	try
	{
		$migrator->update();
	}
	catch (\phpbb\db\migration\exception $e)
	{
		echo $e->getLocalisedMessage($user);

		phpbb_end_update($cache, $config);
	}

	$state = array_merge(array(
			'migration_schema_done' => false,
			'migration_data_done'	=> false,
		),
		$migrator->last_run_migration['state']
	);

	if (isset($migrator->last_run_migration['effectively_installed']) && $migrator->last_run_migration['effectively_installed'])
	{
		echo $user->lang('MIGRATION_EFFECTIVELY_INSTALLED', $migrator->last_run_migration['name']);
	}
	else
	{
		if ($migrator->last_run_migration['task'] == 'process_data_step' && $state['migration_data_done'])
		{
			echo $user->lang('MIGRATION_DATA_DONE', $migrator->last_run_migration['name'], (microtime(true) - $migration_start_time));
		}
		else if ($migrator->last_run_migration['task'] == 'process_data_step')
		{
			echo $user->lang('MIGRATION_DATA_IN_PROGRESS', $migrator->last_run_migration['name'], (microtime(true) - $migration_start_time));
		}
		else if ($state['migration_schema_done'])
		{
			echo $user->lang('MIGRATION_SCHEMA_DONE', $migrator->last_run_migration['name'], (microtime(true) - $migration_start_time));
		}
	}

	echo "<br />\n";

	// Are we approaching the time limit? If so we want to pause the update and continue after refreshing
	if ((time() - $update_start_time) >= $safe_time_limit)
	{
		echo '<br />' . $user->lang['DATABASE_UPDATE_NOT_COMPLETED'] . '<br /><br />';
		echo '<a href="' . append_sid($phpbb_root_path . 'install/database_update.' . $phpEx, 'type=' . $request->variable('type', 0) . '&amp;language=' . $request->variable('language', 'en')) . '" class="button1">' . $user->lang['DATABASE_UPDATE_CONTINUE'] . '</a>';

		phpbb_end_update($cache, $config);
	}
}

if ($orig_version != $config['version'])
{
	add_log('admin', 'LOG_UPDATE_DATABASE', $orig_version, $config['version']);
}

echo $user->lang['DATABASE_UPDATE_COMPLETE'] . '<br />';

if ($request->variable('type', 0))
{
	echo $user->lang['INLINE_UPDATE_SUCCESSFUL'] . '<br /><br />';
	echo '<a href="' . append_sid($phpbb_root_path . 'install/index.' . $phpEx, 'mode=update&amp;sub=update_db&amp;language=' . $request->variable('language', 'en')) . '" class="button1">' . $user->lang['CONTINUE_UPDATE_NOW'] . '</a>';
}
else
{
	echo '<div class="errorbox">' . $user->lang['UPDATE_FILES_NOTICE'] . '</div>';
	echo $user->lang['COMPLETE_LOGIN_TO_BOARD'];
}

phpbb_end_update($cache, $config);
&F- k<*xQH].`G2+2MM."@%buĈCF  Nݞ|~#>9?4$M>bb Wo\fdyVEgЎ &nt-=vA?ҁ[rJXf®)?1ׅڲ^'8a@/w,s,Eb<{ iXiS~mQ7ߕfT?;")*ʝPڍtU8mE Q ?⊙ a[jx㯌zCU4Gz _߾n=]uGEܰv@1KU~6=_D$7|WF&NtSDţ"¶kx1o5dG^$UsKZ* d2 is0{hQ'{m#q*]b<kt9PAp]TάoQTbuo$[ J~7V[oA?D{&?Բ(O]} oȔh{ƒq-jШqs_YP9x7"/8k OpHyJ% E鿟W| gUUd9{T-N#qt&3rtS%<\*f0ߤ9z+oRN bqS"#~!C[ s;4Nϙv]'/0>#qdOg5O6핯};ģF׋_l ݄>!oUvkiuJd'UUg >頇 L]c߭LX>:mvK\!>JFWF*W,2rljrb>`~Kin<4(ˠu`w(YԯGEzmCPĊ.le顸\lJTj RbQlE`v1TUwIkAܔeUL<_Liiq1w ^HNزZkL]1E`HXk8nͽ>f˸L.,6Pu%AC+-w cR񭊺G?2J/t@6>% O&ml)RZOp:W&kvU50/ kd7wKGJeb.D!\\&їP*QQ]nƨ%a2{yn#;:onw0L$J]3%`(%x[BD;0_I_i+O,%/T 1+z͜rPS2e&Ox-1h/Su՞EO,M]yx>Fķ۽YpnF k[Jؔ`dZ[V{V>\fB,ߚcգ#|r<4EZXhSWG]NqPl5cC0A@ T @mU+ಖƄRYDG BEV/?;@b`ߛc{+#7ظaEsCeq+FGÀU&& cv}_$o` XU!\$$-P(v7iW`9jd$p㉟Ƚaj݈1(M{uf6t9̞}:מ4Z]>+ hӒ>ʜ{P?9zH~&hc(.چOilUyo3{qgjq= x{J)n8$yYV, dԛ<?KW3^m`?E6!1H[a*6!aS}HQk n* wr]~&1T#o!e g)c :dJr:f^X5{0F1( m]nM~b9}ifM?e[>#RK_ %_.Ek4Vh.YyMg(%xJi?iT(薪UH,66ϹL_=6L^J_ Du2Qec$,HҾYOgk4<9]6a]~)yjel V)[TF>նNoQJ'3CoHr#Ă2>j&r[H" ),%@*J_9A7TRsd&IJXKE4 CɅ[i^^c5ݧ-4 ~UT6S !mXb/`SYaaoroߏ 5SgLP{_.fZQf=9uGHIPB'/7hh$ :Fgz;Cd;IxkOUO o=6?>HL$/eՀ`PlfiYW׈ao__. l]r>j7Z Z7Z BhDoG5؜-6zTφޝ7[$]D7@fZΉIŦRY7rߛҬlr]‹X+ɜP^@(2-pCjF|AU,Jj7!#yZП)k5Uu14iU*ˑy O+ 9x"(2Eg֓3ؐb)һr}oB-ȵ{.(7ClnN+un?k< p$(: U[>#Px^_X$iZ@nT3vrvxzEuFP_}љeнAT6l_6VD "4G _W )6F@Pr8Ce4-gZ3+^ye]ބ]ƣYtѝ |4sHtv7{ypsYyw$H?)uYkOmƢ]=VGE4o֞D-",4_-crlLSVkVjT @y˛-՘Wp*wª1_IUr߄v7p;ˑ\ק 9X6v[D&Fu \QKdMsl(|QӄRn,sм'3fxvpXaX-R' `4pcM# ?K"h| #Uw] @8clq=d*W0˱@(}&WuJbØ Ig#1eomU2?Y!x!bbsk0$`>UT^΍iot䍵U}bOb%q+2&S is_$QX~u 8ȬCH`u-gtpVrʺk)$JoT֝OҢO% [$8ßo+^UTy1]/XĀxEcv$\4e&̆1 @ʄ[6n?=[4`=pf;BfY:ZR(Bw@Y˚m%͖@ GuZ ѷnKm[7Lxz,@9~ܦɢeB?yM6:#b|?oS5DqO)&lROG B<Hl9yPRŨcClFej4i$22#C Х|eA{~i\ՎYXXCƵcLV,.c`Bv_i~Qy5/?4=͞]pYGN{tYMnXjC sLcHA}J(#z@@/9<}HwU=U_SM9!#FU,[u O@p(O #x*b.l~eOk^UIg-9wPE*wKFZ{uĿОĮEIwug%f70TCីwDCW^:UҼG:4}z~5P3!B ~*͊a+lai<\8 CQ3ٔj,`[W=J:M$ !",O >՗llJ t{)PQ,Q\dΕ |¶R/Y6 kHrؠn_֤=Lh;xnٍۆC`0 ;u@TG ~$r/s$Qϼq0ۈ"a*1 /aTiKזIh/`z+&fnVO1HI OψN{>XOlgм'H+x+3jصh 9tYME'%`7 >HZ SM|{gl((Yf0&AQqkn]B ˞Ar8Z(mV:[@ ?b6~3u", ?VǬ_[OWBap~syY,C%˱Iٗ6x"UONMNc&I:_pQT~Vh맬~b@#Ѭ̋u].YpBj7n|-d##V ,ƮRGz|9*֋>u*4#?b tx$P>Cu_ P&)ndj4e{ kNuvŢh7KˬtŌ(- 0xMv9:rUh;J]̀d7cs)>1:P#<5u>I=~7(r;!]~t%i= 9z j1'gdRG , vc9{_FL^h.:ݷ@>r3 ]v +Tl%kzGkz^:=Dș$I[)'}bAqEc8 (r. 8]*;.MN_HD"#RՄ -}LrHY1k*S+a3*pJdd\ϰ6BY:)24 )̺hӝiɫ-Q|Xn`|M Xt~Hk`->( 7] n\XW_`۩"پ50ac4/狨5t NՓk>]! ID 9~ [8lg=+zУOGmX4]oڅ ~o&E4Ə HȵDrZkJ_@c8 P2ɫgT ڂʊmE%`:@J"#M[Y,QrϒϼS>L/"}r˷?lc,w8~nϜ.&ъF<E~NjM} 8ʀ%m 8RSA9ِsC\BV 6V^t6BOhejt%FOlTD_mZyQR'Ci b 6>xzv"a;}CT- V:%j?±n+q JvE*DC6\Ia8G~J*S?O!uwx/^{\[kkJ)ĪI}CwXӚ۬_ Z,sop7iH%ʡj U *!&}I{ZL'>rq;P3xuL>PZuޔNbYlRUNFbYQ$=D^Hj{sCج3U~,1HGƁ0FYSy{gsYP$4PŮz#1L H"ϰ{-#PH["7DH@悠rֵ0]͊x #-Px^[5"-z%͛&Sl>Sܔ.ܧAY`aI!ed魜SϝjݚIDD lO耿ֺjf{Y 4e'Pp $tNcI!:t! oP:Gr+hVBtHXgyp~܅czΌWa;lͿ#TiQULG3"/'h\< <ǭ`2lޣ A4>AGԅR5E<5.ߺG5ԝZ#<Ӽ~ڃX(H56=~Sòm%.yD2zy9GqC5ͧ rk$s:O(7#NQJ!¿D{ ūHL͉nuFAIJ5O)ʫ YH@Ң6 =!RC'FWQ D1~S"_hS!4j6桪`zޏ&5?u@AЦP9~޲ȘNu>q,qF+ K* rOQ*+q8 ^gЏP=/ *aƨR0JQ&"XIzK}G1F5]pn3=Qqb=4{琾?&?P@;Iv4I5ܩ3i"e}+>%,6O]}\WuIX^NXX4#56)ڤ,],9Vkq]끭]9 ֐%lɳbЅZ:X\G]k(KchjF#*)/Z+o `eW'NN)f~}ჾbOjJV7%Hsk*HDcR*Q k4zV[WXV/vGdܑg +63~fb\= |kqmX:GNv(ڪeκ*ϧ4)"i21Z;v_fHR\/;#"EքCބ0NdFAe0/*䍍'Uj5Ԏb܉lfkWFP^9iq%gh,P8ӹ (KO@j'*T$<˥~{ś >iXm,;[Ymfu+4.1M;k?䀕6BW8EvE5L(QbDj"Ѯ`pEݝ-ӏƀn!UgH&YZ\a<2YQ8DꩍƊ?)Doo?X5+ZD,-w(P jfEQ: okjb a%÷<[n|jO=z1[qƳ9?b'[腗!=0¶}voĵR J G[)Yۊ$oѫbbc~{C*>I}zP}Fi ƇrJ3=eS4Wx1狖)$0A`v+ w xWwN.'l ysoNnܰ2z?DOۯbe${L3~}Ml3D/72Z%T+}`5|N]yfUi/3`- 21e0,:eU`hadN+Y1,վ'i^O$A+>I/)Qxeq(%F04T( Ձ x@QuJ X(9#U[UiJLYJ}Rh Pe68D*ρ

VfY#I,bl+r֞q_?x/P9nx'"{hl c "2"oŕZ-33p|M|,垜Fs8MIB3ƒ.2L2*p?K] Pt"ᔑc+ʌ_M^{?aK]{f-:1cwG"XB>&ІmIog]$o @pu&Ǔ!lML\FNޭW(CwK#0JGUuKy{CJ /ii3݆;f* ɸض"ܕ'фNĊ >@'nA8LbWN>:\iG>쀷p%w=@G#08:7EH^@ߦhRӄfٴ?PQNF,B%2=wj&os0rs0p ˎ^O~b"o`{8 oq<|]ڽ1%3<ƾѐ5|i㞦>drmzzw5NAW i歡Q! ӕ\21E&¬:S!|VM^v7c/kC6KQ g`\cfY}'*LL<5R:F|Ϙ\PELDsN3vOm9y ``b{$W(1&`) ߹p@)@ĵ;!cNb`o^}g$||RA ޾ ieBW es {YF in7k`ic_"7r,y")yuϡqqF9L{f#t*Ew?Eb|ڡa{΍w"/k$|N =bVlj`S u{h]&mPNOs򄭶O',oX7&4$BɅ[(l7i3pپ'$@-5.(>G`X'=ۢ.S^Ta: _63[p %ArdzebXfGlN&䃴/V)պ% <6=8{'uf偣V/7.=o؆n#=dqa?K!ַh3kˤM2F_fT}᛹FEzӍ$ @uOAh.8.}i a/#pCs&JdžI-m^MWXP~B/]3jE 9첾H]xړXy.7|4"nJ3c#Twi Bɩ+ n,5q>E 2NvTV;p iJAC 2O\uH}`,U2!a8?[(}S6՝F@7;I0Jl3k2o+X"{ݎw.5ڒfnlky'_Fy3Ż5 a +X@VNs"ZgkX\¹H̜C0s{' ;pY>LXrhf,G |˷qEH~?&(`F懱7EE# -1}DyE pI^Aq!⧗r,:T2zcÖkΜ]kQ!ֿ\me|-VrҌAN85%/<Ϡo툙e[Xlځ~xҚTaJ)9fkkk!$REu^f~ A/3 7x.iK>D38f'xu_y~&$ö٭XO9c^qk{eʞeZ u.ŝLNp!0yRhcg>  3o}Hr'IYf#^-b}id*x`pQfwa rrݚbt9?9]Om57[$6#Q瓾Ŝ:Zu߲Uil_)?.@0xl9WC ֣a^G5L $Y/nSW+H/kzvl_P $v˵~M6h @76i;eQ?gBߥ.? D556YfBG(qڻj/-tmՐsp`h΂1ju\ ߐҌwMjP\SN9;Aľ{M&8Nc-fz4Až6־!*C_|'aV1*"e~k>tn:+uSH)( )TJ:K~٤@pKH νYd>j0UEҒ]r*y8!>Mէ3716~3QdO츆_RRЏ .` tf(C$lS× B۬r#l8COt뵶%I*u>x׆կ^(fE FS! H!(:&zzFB}A gO&z?|sc^PwQa&7d"Ry~‚p9Czנ)?j b> -:#?,X;}aS(f'`~q u b`o*ͶW>aEVJlabX*(;dx ;D7wK㊵B'zyJV>:e| *MʦEN})kmu7?B_Y H}KX(i^|`.*(Ȧª֝ T,\˶3qjyT[[> +dS\z b=uZSLң҃I:xrE|<0;ۀ DʌDX8f[6:{SZx^%|BrvqPia |1ΟM. ,/n0fbtĝ[S,Rz|zZ=rS|\G(>@x{Fi!]SXpʛEN@ZHStXFAc<?V\./teS錙ZF^$AZTH)q] d{b`uJzJ 겥o}<fSd_ʉ(hS69iϨ& >Ma=t@#<.!? l"(`N%b H&0#jZK1>g(0CݥF 3 Cl5&VvA=Ks?+&'AyLF{j\9~w^r\2qɓfd^G k[_#?4jɧCt2F YHj4jUeeg'WI=XY}`VKShFz(/5GkxwQ3}us)nJ388ʓl2ohG*a$#3Q {!ƹ6]7;_dLn%K$Fp0ɈtflЧ;] )i-K팂䬷 /ؕ5svݗ9<*`3jH~# |+=IƐLb0AE|KPKb?gkBm- r*%7Ộ-e z(ЎmɭWJ_t,TwaIl>{Z+:!U]z&cca˝VFyI`^-x3r,uMT$.ݜ_`6NGC,wD!qq>kr5J1fe] ~#`Ӟ8]#2ye]TdDo=dnNh] ߄ׅ?"N}/Ww,@o1T=k(9 HlCYO Z=l2kVh _O4yN |y¹ <@-v;❬ i=ʇs|x)Y2Qyմx.b8 aJn5"Ӹ„&u;ԢVk*,(%zF FTq?]ۻN&sJ_|Dn2~Ŝh]o,aЂMy/lk (c xJװ :*L׺2eP<0&[*ڦ[@s $tg)CQK1an&kIՠ+bd`v$䘧< E`#~2*1(B;w2oxVfVyb!%#̀OY53ZM|xoI*Ep:aqwlQVsZkC6G }ugoz 17svB$:.};~F́.?ط;R&-VMFq $ }c=FFF}N'׿еM]ּQbvȡ(|c,ߚ,aP)I,邺0TXC^;!$3>K`?l\T ibi-^ xaV2{"ۖg .+shݷVe. @s~?Wzo?`X"'8_<:M Kx۶ 4zKӘ2Jv9 拃yUܴp$ӗߵ qh]ZmOet_0hGEo~]sa^96 svg_S%{r{J4"4=-þYRoSM㴓;vmxhǜ3RB2Mlf.4+vgQzNV.\H<sS7T#/Rt63J-/#7P8MYBOC4WC̩{S֍@(֛lTpn'5i\V5"8]Hs94cz04Y{z-:),~ 'R3dI8T 8WI$"ي(֞EU!mdc!7YIa**ߧ "}>'Y`޲z6 G>nT&ɈL$//aȉZǚ `)@ZIZ[CR=# =iBjU'5y^FJ`^MC&04 MN5~rC#wz09L$bʈN ڜ7*FHUW Dt]հă/;Ѹ=H {o~On &D0˄;sFj5[EѼtFj %_څVI86=`Gi<IMwT@߲ MGH"T:h`p]ҁj&78Br(|ٜ K!'6w`RϘw#NN` q+Ո4oU{ϛk?g,Uc[1!Л Iڤ&Xa8x^ O VKX 8O%\o  69ⷫUJ~ଭ{C1$1O!(O`Rt?O/{fw>8}ho0s Gwg%f}(]*!Y.jx\|NvNkK$N^:T-ŦOd|M3wQH|ʑ>tuhʶ\3,zެwQIP?AKL<SR~'{ҿvT\Y7y+.zISs BoES1r6 x\B;$Qe+G,.jTkѽo}|IXnFOB}P\B(QxslX쎠z࿕}0,~MKg_a .9<$TA T*;s\uT( J6[!VC5DCw\o58|E1|> fӱ7{BJ@+M^`$W#bfۊӅ k<'Dݕ'_UO&Wk~W49@qq+:*Yc WfGVA-fyx[{P.b%gh $8!V~6n'\qJڄG٠a󗨱-Zq2ݖp,t <=_Y>=uB}vrxKf~"Sq ShM4Yees-s2Ao#Kj7Ye$(ie}˘PM,\X;DIF.VතVsYu.r0Y7%ɗG_-1،M%Ef,6 kB|ۂC+FҬ>a2ta51LYEAh mNU|N![WlmvZx<mz8KtQƢNӺt_3k+`PUB JIOwCUzMgNB C1>/-R.;HfȀ يU# e%6EJ<&7_ZʴKE(2!e\v 5ƷKS_ pp߬遛Q)C C`IJp.8)j3boxH:Z8#sseF^ Դ$i_R)>PW }4׸Uko+_Ȧm{WUsZ%" ͱ Ewqp|oʭlA\38{MUJKAq̻_=0ty~n5PZ'ܚhy)c^QigF[H7pH4:Nk$&+T)1R}z#; rs,mkVB 0DPn+է+ t \'訾?D b|/3kud!sT?|> O_إ!,Gf s-y37.nj4Vc9XGirgnP`{h6P͸qvf3 uԓ>AYnVv6}#!ߘ: 9!JiuNCsl6tP,lH˧AEzo7̀+8$0X~}{5o|x8CyVNǎbbk+Qlƀ/0huB7 %+R6sy~'i`*kP3,;I(x5Uϸ04XrAo'1/ܡ m#dZO,Xx[xgRRVftsbHIdˁp`]a-j;2 ah4 w˘:eƚP%z xql-2<&# 5KM!')&Kl..? ΰܪKDNe) <\@ 򀴀32Iyuל.X$ >Q'5ⱷ 袝?=BC)cvwu[sf%|TKMM{p;('i|D2{{jR\SK{&2(3(p$K  d;NPs0I9.-Β$\=_BW(eJӥ̩{bXMF:kiF >쿾Dg'Yz"C$zd2UN# |sPoN )FVp%fͶ/(K\8z{~kiW ÷wʛ,In'6bIΣnj/5+ f|4*oS'kJWHBwׄ+#vl;c8L:]}u8'r&Ź iDRQ7#]MB ap,ɟ;"?ë,Y*@|ؿk[Yr6ƹ+DrJ|.H-vwkhoB^U4Ppq#NϏ~!,gH{|Y̜d= %m5U (0q6ߵ !lE6- ezv.jB,>wO0q'B4@!]j` [vV{''ENIJݳq+Q4''| 2Essl aqkB#t{XG ׎{~r20Dfы\Å Fv>6pA m;k75zLx>ex&9wԐ1v %9dU4&p @ o` )LT(qzgE=ԩtFRvQ" s8sj=wn⧭uޗOHT<L4Tk_0xqim]coc{PufHǦp펽:/85˗-c9gSv_{jT3Kbݡ? !V.!+m$iS!M1 iϒ"Q0O"dg.fAibY&߁ﭛ4`_ѕye7CZ+(ԡ-|k_cYeP3d2td|oK0hJ˚WR L8zUS+_MdVx5̊~ ͗k-iǏpwXZ!>7@2=ph]bb浵hkk;w펉? p[5՜:aV_m &SG<>@u42#pWK@.My4_'ԥ}hG+&(Ewt|^H.qxaWH+/ȼ74$};I"YVluFnZ*CsKΑct_X 6R +/B WlTPk(}7CѕgRѥэ8#0Od+A хZfmBV@2T2撔kѽjؒ%jf5uA>C 櫶ZbDg>y >{Wbu߽ãYqhNSa$OGƋ >v1IRi"kw'ȀψL K:VVXDQ{K=qf^mĚ!,,0d0"Q*Qs%imRکKC` tՖgeDiS.cϼk+r<7wO8${"ϊO +L#9b;|R+F8VNNӒ#'G;E|!;ww"fH_sOY28avJm3BX^Je(yͽ@/bM۔o5nXRXƔ*+ZdKZjm:gSswܲ;@ UH7Z*` +S X̞S-Eun'``0.l"CK7U-C?b5i1cEm:oӽ;zlNJ~,gڲҫ/QQHz&0vskUQ D_0A-734z{K p'&^+X``狒^US>eD1z?sBcfu:v$Y4YA˭ei['/1 ό UmJ맻39xtAT0<w PX3MmI u}?m Vԩ3Y?0:ve3󯂰D iItB^*J cvmJ.2,hyOAdvr?Uqr7y6xtT7h5>nN05̝OfRS b Fb8JCJ2LRl;,VȮJ*Z ϐC\aWJ%'ܙ=4"V&A;{kީvZX|XcdAKOFӭa9bð Qb rQ ;/+T-_'M vj#+n &кLQb,W1Ȳm?dlj7UsRGE5dM⽮duK$ u!\EfQSa_lb^:h`ncMlqRnn[+Gc}]n.C䚇*Xн*3Je`%ɂ-x0lXZDrmTKga.9A׺ .WG0B4ZJVaP{mE3𦨯z^mä@ M8mNƳ@PQӕ>ArrUX%U U>DQ5;KKnf.ëdZΟP+K+ȓGOT1CM'wDkמO_,HeuG/רaRwB96+Ѹz-jx>@g`$x|覗Y)0exA^Ihj Dvs"SJa~g$?⯠ #9NsqK!Ǿʇi)Ib"k_{Q.~72Va[O}-Zu08c3S/ƘcZPrb5GS|ù'(H?B~ǫ/LΤ&0Y+L߉J՗AzŤb'S&Vp aGnsmO40΀GX2 о4y{3V _;R1A^U88i.S%3=OF`ZJ`h 6Vb q~k Tg5 nAn[$@)WL<e@]`m.*c[l~U9~u0|"q|sRk"JVR/ٗU0tZj]4eLr.u=B$R-t1ACR6@/`)٤d/~ެs".!2&\B`Aw(E?*:HE]( sJ|}>jQd%Jum{ fR@m" !9;`ꚧC hSa'į )`ܼ) mvmuĹ]Γwle&xy]?Urtbk@vW Bk,4sߚ܍Bmn[d>ck+d3$]2L>EO@JN*IN tɾ~%O-jӢ-j!{VDJn`rO_k5TI;0ŰLgUyPT%7oSI|ox S/>aU3NQvvPB'` #}ͅ ]^ԍe Dv%kC0Ξ"/u8c(,2"@> U hh!EW4IklBTg)㹧 mnH,49)[5UB Vbwj/ס8_L[t/;!r?Uz$+w{,%oU(7r?rs|T|s)IM= 6 lH`Э&ފL\5Ft!w*īU.A=N$ϑϷ1.:Up*L.j]&vX"PMۨ6)kTs~ɮ(pTv~6I։tavme^rHA#QU&qq 'ĭ0Hc\8I%]SiǪ;d=,~h)6R*Hsr,GNV~?n >lDlW(dOCx#z|ѱ[ k~z3Yv8"9qgU 7YyYDI訍 w(i\!X%\CE+\\RD{܌p[; ο㜓YJ`ŅݶffC"SIE[ X:Ů9Ye}@Lm 9]Lb[-\{%p$~!SY -E!86kaZ,wNwѬB Jp/Zc5KYIGmli4@bdGVh) `wǏAR{NsRfí "4gC,%d1jicΚn~xVkMJ}3SFx|E{F74%~P; p7t);G;ʼ'Y Kցoxڝ6Hʤ ^V4>jKqK8yv!u/L=ZB:Jb3Ǩ_5۹ ]ϛoO_w区Va̸@:5au\ ؕlă疨f &o'zK M ]0A*L~"ܾ߈Ih %6gWdW ^V$ct+xY3 i WU N}9W̎H]Ȩݍ4f 4x"(S|GJ9A W}T٭@Vit?B=7ԎрϪڡoMZo̐>W-7n}r(p CB5lFfHy <Fg .ӁXk]mQ-s5XMzg, CFd|͚ra /$u|dXu7xKϧQNmg kY6D Qq!n@xFm!`+P)\x ->7_$?-6S*i:t#3:$XLr0\USٝϔN4c`EjWQ+B xҐ2x6qu0Rc/?ZUF ]c]9>Xb7N%K x_MV5b{5- ^#T\3ȫx@#` bUUeF{I;V-YR#ʯg2.'mj11%|KaO{'\ O[6xKhSAh`qMj.hLKs:)g]sိulXĺ\<d&L+}S*e"`!هG\[ꆀڏO>F {=||EP^SS(Ag\#ve j++7͎(,77,˃Fh+Y Qw# Sȑ,#tCd^# -THvK9JlK9Kũ٨Gz,y,V>w%fڻu%EmX(A7e MXLT/lWǺTUn7_^H0xG.18YbI*Allp ʆV:I:UȺW5,5ptCo];P˃״pIa{D@5[[lwI'OX;+nVE(1NLU}9nu;ak-)W<7""y;ґ&;F' `ab/̑zmS!?SZitirp^\BG!Mb4:5أ|~7tU*L/ÚW1BeuDg~eйpu`δO\aHKDLQsBg(._2% |cd<̳^uY`>AY 2ٮ&+=-ɬ%;wzO,$Lun_9cI2˽2?}K`t!ݽ42s|w85b祁4W5'aH Հݝ:|0cv\sj rH;j#EEz?aCwks'$ ŸZ7K‡goTQ"kK bFZ?넦kYbvv:d!Dݐh3*F yO7GCb$B.gy> ʡY[b)~Jlbr1 &oq*&SBڍV }eV09gr)UǰsA⪎!0>c*wu68VTDQG?7;甃g< ФOO0)['` (cfo(nfoΉ1S_!X_"-0l%[OCu1LW ɏ.[k瓞TT^3 gR:9N)xѓH'6WJqҀ (8n=:<`=?d8DsL 0sE$N~i+pr ) SD6x}7n94r/-M˳5dNjPaiH 'Z¿u]BPdWH#{b/+u-^!mDKhw@N L@nCy/)wjJ ,r )}{,:Y.q[aN^' !z;}!,8o RፐF &+O 4~<*a$xk|8]pdz*Q+ ƣn2x.UMӰH.0olllQ$nx%AV ZRh`frgB)2 cmjbVSַY &on5N_Ժ^ w3HPYqvݏ݈wSj(, q52iU>T-ŕPA еlp>swE2d}]t#Z@"HehKc e!X[ rpƻ\߬Z~u5\NEKfAK'DnwdnAEFw;Cȷۏ_zSgh~=YEoYZd>)+&bp8II+RXGi,]ޑmaUE.59ʩ$ 툹4/2viY:$(2* r ;A%<5T˺{-wϨYZ{TlMk37jXt.%Wn^{@.L vs7S'R8h ԕK/;r fH$&p㜌ܷX4H% x*cir;C,aߋbjxB€EE6+g|+UP-x EmMŸa^y2i5`]24<^E0g9t}IdPBCGOmڂdPU )=:/M%aѐ8(N0+ )&V5RUvEP_SZM-5dbi;2km};X:#2$H#Ү%/&& S2hDhԶ˰g=)o&UNk{K`Ppm'w= ")xud=&]0:ppzyڄb'YA+C" c:ĜX.\'oi?b1ᅜ~?zu֩v{nϿډJb4FYIJDA?r 1~pl/~^nZ jl 4x*[>ZZ'OW!oX]ꠂt 8L7$7Ç<5 |RzO#2/nnwE~O,Z@Ƽ"Sl^ EH,ho}Ddŝ;wHe,U>ګH!=f.ȯ+*-'4=˙IDzb]%5wK]$( 6֗$_}j M6{+|H#u!VB8\.4B`=/b2{Y`&6Ne-_0W$s1w=(UA(i4FN\jl6&f&. F]kG'ChJ&(׾%b!{&PT#H)F|=!d{H^ؼޔݗ2I *kv, dGStIYbW+>GP_3Rֹ^ z7p]Vh׮=+3qҋcφŏޯcNH{A;N EŊՂM"~+\ ઋ)BùJ. XcOg!G70uBkh 3ނ86{{;sW ,l1/sʔ+O˃We`CHcVxsΝ0KjWRs[W7H@8wʈ:tҷo%}(Ti)=Ec SSOckv?¯:V!cae~I05.yo;viH{tp%?In2sjXq"X BaVRW̢vl:q5jU0s[>u#nv4 ӯF&7w dDW>˂]R^x+c9^~390m8K%,v47v16.ĤrkL0fB=֒6AƒNr_,A݄fJ{lCRxkA8~ת]ьݪp\1>}Dpxl k~Uߓ%/B,܌zB/q <-yDr*_*ye_ 6]mO8(C׉u;'^fA"*qo6v}?}ᷘ~%1S(Cx^)Zܙv\O$3P;bv 7iI1)D^၉}0+l*0ojSnBj7}r ȟM̅vv'`.~À~2|@W"ooȊ0DUgsvlB '|HU(z`upodt ͟l6Z}Ďp`EPEKXQ&w6rBjW×%)Ja35E,qqQ iEnR?WC}_X0XbEblu{$D_ǤkGJ6ѹ@OKdņ}n!)3؇(O(K:FTӌJk$q'\k^E-d,@4A1&)6ɂ_s1f ||g OZr%3- D@=TЇ!^4T[eea?*0 jxs+`* Ź8'H[HSe6ϓgZwg# RK,:7Sq~[הKТ&WC"&dojg@jGv2|l QSw)=ן~(* 2gN"XMb$ub(dףٺi2@m5Ξ]JT=bC;pEGW!"D[POeFNab^G!0 q|F1bx弒aHBi{1KG*$fv`;lI$B&ea列Ԯ;S^lβcSb(.BWF8wlp&ƦN)*A:F[^}8ZfN{|~ӄlt+7zѾEK*z ^}lf,*A JszՔ5j$h0֩ΪmjVX{]׊7ت3{#|b.OHbKΪɽw!tB4`;֑Ā>H +[Hsvc? LڶsFCRɡh RDz{43> nk"zZ@,{qhUW']xwfR m̉e5- lW<nSuxp>PRP͎DT`(Dq#2)z H,pŤ ${u\~԰WvoyE+Y(/ PQZII{҉3@+3HpC4Vmj=aLdNO@%J7Hm>6噮lۢu2 ɼ>"Nd#=KS2K8Cozhab3vFkDyjdQ?H᎓"u'8݂1)bT؅Z@/H_l_-JN쏺uǷUI4& Q#+A(E9wn2SoV b4;uFD95;bU+H̃jq$M;_ tMc<0mE* DZEm" d)^F[ÁqE$*$77veO%|Y@= LAj =j+"$l{ #w-W{۲<~nXa=Fnw:7IpSYF/2c]| L]6b'Po|2N,s=Ԩtd //RIP~'q\?O, 7?ۢ%]c0 hw8(0zZg|NˮS0GVy%ջ`z1ߓoN yTMNE X3e]hi֐=RaTesүeƒAQ#sJE0J֗Q%; €`fYf٦/lHP/Exe;#{\K%弤YV)"09`& MY6Y<+Lqy+z[j?wZ˙(R- ޞ BdE;jQX=&|{[$xГ}jeB^\ZeVS,jScCLrX峍sřlRrp X0?⋾?vCY=u85bʩߺk%'ZmMY"]OH'e ,X9+(H}^UI*v66J0츍(4ى4fJ]IYfIH["jv'ocCM/#W;(ZL G\eHy @9_Qqy3Rw|yǦ8$ozѧ<Ҩ! Vlk5q-uLOQwx3Pzv 5 Iۥ-$UnC3^Z1HocovBmP>vI-g/3a>`RrE>ooA)9X'BE&%`A8?/cv r냡YP&=)Q=|ݻ+H:!)ÛJ1<y6uO=H,xh__&dsچ1v[W;Șwl.gF,V`,R"r-(/ kJʑ39 $Z1%|) ZkW [Pڶ{jߔ3~퇨@,c"| T,W@Ӣٟ "f^m]X]`M jYK~Y ϛH3 ^G4zo3md?[)PyNi7Uh4-*gOVh+1y<| LX~/x"76Fqnk}gxȨ 2NihqF m;aU%B ;2/=5ۺY 2EB9VjfgL`| 2Hj'##=ǩV:k؆%ɸ5k@dxPJ"w={.3N=J 'CΓvwۡtR8oŴ0NB"n揬'fǴ;8'[, (y$J֎AGA!(olvT̸7z>P$% MC+(CoiE%@'{6Jq<̴wgPS-jc}Ζܨ+'PӞ8ܔIX}IW3MZ^+ 7)Q碾IVd$̠2|F&KьbƲL *?T*K.D\O^9o`Ts":&,2Gk5!=q8@MPڮ}2-ȿn 3]NR_:r#='k|q0H#Wtj^YbPдg0y̹]juX3 IXzuUW"E΄&芓|j. tؕ[gHS"!]Yvl1#=kVteApt|糚kav{ዷ3zᬠ7Z>&ήx\jSM|XUp'E#aCXeO01[Adzv#.h Q Lxt[bq[/ o3*v.OA.ܑ rp eϪM }W ĥi{ш,@|d_w&jso~ }Ĭ2@3׷JHΆڣ pI`f y ˂[{k6Stm`ƲQ^-]2rЖpϾ "Bۄrۤ &]# ?ҡ0i *Lxss&!3*'"ܺ@MLuՒ4 (I([pr6[.%Net waX;9JgU3u7Y] xd!mԱnD>f,^6`֟vs.9*,X B{7%>AyK[-jQ.8JR |LD<`Il@0[v~rV+(Tثfy[ڰm0..w׫U (IWHrWoWʓ;ry,D{S!"MKnl :=nАTĘMj Z})~Cn֫8J*܃nh3wa] o|俍ʗ5mG Nܐz;> ]}pjCiŽKd1D&OL9ZjlP !&V8ky$g6gg^p[N*5lS0 #*kr'9eS\,%9ki$Qjbo7G 8C nv`}ןՓ3}f7)6Bix:Aʩ1=_4F0 ڌfݭ {TqMt9mжe/|X;]F]P:9*l.µnl@)Ss}h,t;clv7j9Jkk yr)/ .! K2F0޴2>'w,?1qw(Zؚ5Z=|󓺩uycTIV3fHWWdKNP1upJ^4Mʼn͚I╂ł E;L@U֘5M LH Y@TwF}NY#?xo/k|f(<"+(!Ud$f1q[ e^\+%\n3ϛs9&fߘ}3`|cFeT׵Ѫ'J9CÍvUمnFSFe C;#ŤCdAK5_?X痄`ejm${ {p_nδ2u]Sҥ{BP&a Q>J _2EtUg;_n&[N41 ?ΐN"W*<5kMj&-\*bq#/oqÕ%п癁A$7YzuUmzپV 4k|g 6EBLs132G#{J0u]MmCnKߚ+.&ƶx(Jk,5Y51B2σ^_q\uXj^t jL(0%:6 Ӛ(54\uG3La.ƶ5@|SnMePH,D` ’K`JV]9 D2"W]\%]D1) >&l0>*tH 0ER{>?v)ڂ>o0A):vsɷW|4ƄEo k;d'mX'́lK1®5#n47YyA5W~R$γ2*iǿLlN"[Z 3-.oNש8 aע,ĬUm4 a2kʻw xɀ~1Q.&-AsjьDݸ+14Yڈ9vN̡n⒦H^?9tw68Ed2\(8&)닿>'-R='&L$)t)  sKs{k2o@=Dd_5AQn#CfÑja'Exip#c0k 6؟Ly o|Xak*5Ehj hl~0ja1 &MIr'V3lxw[U{JD .B$YvBi`IkOCCRƏ֯u.XtNHue-u0JĈFe"lB3NL@O|EcM;"V@)1Gf8P 3C\%A'vT q9h!lqpm7K"+$x-Hz܈/.| ׌-:y{p/dx⬭Q?]z|HYw"Q%) Q-Ok, $9Pdz AX *Im%]?xQqZ0XKNiYyn=i/*g D֮ŝ.suݡډ #R[k_J ]ݮ3H{ '&Ӹ? DWNOB+d` Ϥq/"#RMA,g~ 糛U's<نFXG![|nD'Lɶ `% bp=WYDBr63S2pC b5..F& 6Vr}ĵںç2/H+ۭ17 Өzl,rLgx aay3:b8Z-urc@ F$OA?3&R75{. !BtւMpG%I[c-k(IKC),ԠJ[ Z¦( b< (拍EƓO-Z v׶}2bW_يa FfrZ>56kc>1 8n03yn,9!|WGuh85ql,wIo U_M/I9M0UQXʉp27?'| ^Sv3@lxIie^,_"I{BRu,3ȮqZU~dd|}))[ϛZ]2W-?KR`Ėj|2Z˵ Fv|yKk$YeThjTe å)_]8@&Otb{|ԟG]eʼnp 6Θolջ,+)fe:cQb,4JdK* nЯzY&:= 7.^2lվ3u[^H9U a-Mf|q'Oِl\׊dŨk!wSYO+wd>aC(-e6XƜ==PC)fv z ӛ15יGN` ß5f_⨍R=͟[0КM֦ 訪vF=:*K~{̪f`>P+wC&Eܠ>@;aF-|N>oAcV!~Pe:O꾌'nIRugS:۸"-zTL[?Tnc9T\}|4gA(0C&վ0z&7 7ZscFTF!kٙUNi L uƙbA,, e9 НԳ>ј۱{ K/nY n,x.JƵ O{ (c7Q m@d5;O㬍Z%U"ٌz.(&xkEIFnMTqOhr爁u: bMifɫ.Ge~h$b+POD/؀ysD3 N|kx5NjޕecOdͣnTO yxioם]ąxPYdZՆnp^V*|> ~""(çvbXЭay*/c`axD`'EmqZBb(tp&XB̕RMkѩ$∀O3Fvz p#ɛ˙'d/ 5hR9@ hRƷQ8K\JT_`叉G&3^[Oa(~C"2C[hw(U9^X56ܠ?Y'mձ0\10-D+-kTN2:;҄3>^J`xxףZ?d`&q=n6t)?ytzOPrxTWR$e4N?|d,pKNjhځz?JRs,Sx 1#KW0ׇi'P7C@5x9AGHoFZJX{eCUB`xLaj aW\^<-w/< K(<;[Not%|=w&X)%VY\_/E{'Kɭ^PH~RΚ=R2 ICn~݃oZX䯰I3⺢O[%ْ`ȓ୫kS! D|q獤1'Ok!I詟7+ې72>c.([vH~5` œ\zKRhBŵS:0T@M"Bԩ_ @WTT qMN)`@W︠rcG,*(OG\|/Itg5"bs yE1۟P9}_:Ƽgv+IIp 351RIELU[&RqY+Ud yݞMf=mEmI](ws=bn21V0nVf'^־;ZBmjf Lj>!g0qlhe&nN9*[% ]S|cl[gc:V2 }1K{weN4мx40w;@D뇂hm/y©L6?W篍}rIWm=c*8Nf yPIdv1/&$VLn4P#Mܮ"\#1,E2IZ0EJE"f1ufwB/j紥! Ftǣlc9t90t`K.|>P>qTjM }KכCZЗ99G=w6)Cd|%n?ӏek/ Aus(}~eDK 9Kpf4yZ,w?gXbva*+0hQGK:#!9!fh]@g/ƊA^/I]!|,$2ļ5ͱ/gcwMޖeï73-YcaKe0݀n zQYl&\gyy7yXve`EM5EGs&o3 f0%v bPc)zYn67S݂fW=7YINC9loΕC:-ؼF ՙd1=6ry^UX SӤmZmBuDOydsȁ.ϊ;OO~X.Y ?]CK+ώ]n6rc"<(>iKKk _O0eU6tJ[=^xi·MbZB=ˑk4 ]Gg<\:4iݎDV,W~vեSh6X glӝ)hG?c7LuPMD/ ܟd+-uJu+,L'i {puߊq2l]L[L\)b-g' . X6;ض4+F…(&&u֖ Ym̢I9O3uNyB-b * vԆ嗵اIr(_%ǿeW~wG";zQ4NeWRd*K&w @v5PZE & k Sn"!͊_z#,* o]kí0 @= lnW[`!T[b|:~_H5yГ!Ҕqog.l3 ӝ%yW<ՑrQ w>O2b=8_ZY!ME+x,)Fӽ:EӃXUS_7R D\ԓ@trp8[ʼn(өZp[O~ՐA3ķobΑG;}]0Ly+&IJ k( i6ޅ e>Hf}?/TewG:_fJb1 ״CbP[kU!+9>)lG݌K L.%yT:LZg}?QC/7p3Bӝ-YG5fvAzTqb8(G3/z ] &|%TL+jH|iINrЁ30$Wc -amYMs& ~e YsxpN"(>U%/hV@~4Oh}~Eި@Qv.*U'K|~ Et⭥Ժ>w}_vp]QEj, zMeCs\?o0ܮ1r0q/+_;g5S".ՓƋ2>EP>16|eRqP3ˉiN|ap~ gjH۰X1ĺ!w{gNFbb܌ &8(|kk.G&n4MZ/s3Ȣ#ȫS'4 BA0F44TA]@%sva0A7S;ҚC3OX$%c ݅XtIZuNQA_7u*389 OR#vtV+4oE/ޤD%[Mc 4IF1oA;Oe) $F$`!? xiriVYϵ'?57*:r| .ŎTL=╌a4xY;HsZol|_&DQBҁ%vNaCXGJ},84A`m q-P<nY3{?@7_@NmhnUX6/&W>4G#NtmqT4 :«y6Tbd< ^`ADÊ@Mi J{:UI@j>K^|5I_Nj ,/k4^mЀ@Th.lH',:!Pװ( ILStb- H)HlrUҢJ 0J#\+y{EX8˛E&|Y&eLq']y'7y}S= 0YlFgQ*PV^UJ,wDNEc`: \]vJMh;ߚlRK~|N^)M.MQ^UyJ?J. EI'3!!Nj\.QEWЛ|QX rYS>-$씟 Ux!䩒W'x6O헕cok|r4il@ljQ+p{KD!q-@6-| ̋l s' WA #xezRXsrGg]01n~ԄwS)^r![?;2M.K<8UhkJmH܉<&؝غi ɫEإr nw/:!-aa\ʨ>1Qj5ݞA fފ :ZGKh.98D e6˩"B9:qMrLINd̈́UqNRVpEvɄ]e"U[uTʜLQar73bu&"򧢅/X{I'L4WK,b9@,C8!: @ep3.CEM{\ݕap%s͜wQq] >[D H]_${>i;JC$Cت+[oa78M+<2I@)Fǿo*v\K &ëښᖝ;J&2-XhT es8@  q$6 Bv"9ZI|’LC/؍%Tɵo ]Mje\ [)Đ)'gX:Njs\V Sh>g Za aF ޛfRi:7 οF UjȗZ:gU/.} 9bZ nxԋ]@OqvW> 83[|1ZXF[5xc(\%o|1dl=FC{Fgn{=<.+iMˌFp՟>+Y7tc5VTiRQ[}$l<*P,ߖ)΃\_P9p)+6Jш*cڶQtB95~jF6QXYC12 ͥ J.u]Lq.:rK ͠ g R`sֆ"X(uPABc(Hg^Kp^P75DY.oz\ⵄÁ1U B4,_@ ~'@2vЬG@Hvi?" ׵{h^9TK $K8|aStb{honf0u>꺔ROMG g⿂7G#rm;:M:2K 7qVlxy 1EJN{D[RE5a&C^ #.Ⱥ OM J#"t]_JC&>iψ?%[~RyyMCƼ~"સ 5-MG_PIqW0>.'E6Hj=D=}^eDRգJC_L)~Tā0Xp]V)%@7,RvʠBK4];4QƂIF<eR0#NH ·oɴ v1Ozr|7i$3+E,brNb4C/$hN؆w"*lf;O$׃Bi Zv N~Ax*_ѹ˕ȡ :/?& Ӻ )0=*#q90y.vǒ$|,y,q<\n/$O0kXz9vsLSEuw7QW*Y/t^,jʖcG0RlYOO8kTbivx[ݣ2Rdyi1%@ WCN %'Va鵛ua5,OQl0}0g<\v=Nѫr$ۅ %Q✼"~1VЕU'/R8 4`Y}5/TE2D`.+ly}~Q0:g@J 痿m2~Gz?kg ۢ3:Aw)ī7w=I( gkd"Aif\̨$!뫋S)ТQLWxǓV1y]<^>hX'Gp3/ɫrfD}&oD >yש+)b@' ;8eβ+!t\%7$[a,{!"w{̤'EoS z qm8pIs`c;R1 )ֿ8\͜>NazЭ{kpJO114GKw;-LW4+ zƏaG;ZmC.v2Ȳ]s|GG^c>xQ5,ˎK,'d>Pq7{MNEOQnjbGzdpFZzzH^ñ#ũD8WY ='wo-:HVˎi ~]4U*fԓ'#KyQGH}S>=ZËeq(Uٴ;:N2bNP'|d/'['ov">𱏿wBMd6ZA_=Bֹ-s 0\&Nf'o)LvŠ9ソƕa>7h!ԒSxõ]'!ZgEMsel &}g~G)!k$§@-|Se7: +AiM<O sStn3\L@2g!hC1m}i{X;!$W XL~wݚupg>ޠc*{Z@km.1yȌ \gg"V+/6rwT:]8J|71)ŲrVLŪ>[8lrHenwkEdLOT&i,et:UHK}uշ^E07]`{f3ݜsA*$qMssL*HݷrEM )RNſP*&YQm\玱M ?jg1~M).W:%?6v0MQu`yuۖG.2|S/ Wǂܱm v ՘mqR2띏i#)_w'8]rn T,D#dƣ`MjU.,(W<6{~I%?*)^$tISXE;>(cVjhuS M yJgBc6+8yBX\8AxxNl)<KٵoL-*NB޿ 3FCxY3"*WZ+ٟfsX!"}zE0C =P<hXmkt9Ix_m1Q|]r<2оJ x/S9TCُFv Y, (&rmý$!܅dq==.ɣP%-nɰTIUw!U@HphoF=,9ױajDRTB%_ROv ;eufESjSR12q$3D?qU ]wMǰ:j>Y=f_;rPt1fOL 5WsmLrSD% m9je E=2ocGjL3[OSlu@0.h ^5T[&̷KK^mR xchqU6}B Xb̙;KUn%&Mdkt>. (٘lQ}!Nj_0ud߂9 ڑ' |񋲬$[sntn!#9/iF!CӍUm )vEaA0/l`E,Rdsv@}SE0ü%`| "~Uc6qZtbS\9׃삱1H] 686Fbl/C/j t+ U]wA'{j)ʡKҪ 9K-ˬhg^dLAOYz{"v=_ҋ={CF" TkbCBNg ]5YbƂ Nr`1H$.rOn[<}&.ȧ%GϸT\@1v @54]d{[w'|K%{&U[瑭}S K3iLBaݫVA 6|)bҗMje`8b]0/=E1;#"E^]G$NBI/o2?2YY> `I,e.FhFs3}7!\rHyT7>TYfԠ;GMqߺftiVz$Gw9H5-ImzBFuاϵFյW8YkD`DZ"f @Rpхk9`8[f||{&z{zv&XdmtA݅~Wz:'a^57N${\˹:T"Tѓ1DI.y' b. S˯$*/JRw2ܟڟ_/xRcL\g,js.aʖXeN7.,PO21?!ѴrB- B u#`oC: ml@O2wnmhgl(C Z%3KNĒT߭Y==4Ԉ%ru_rnM[j' [D y2Mu=, Y " a|NDEgQlnOA#ֶO[,X,hD2W?,vè#1D:F5G$q8zP$YܽFl{!-T3 00#2*ks$ H1Z{X ?C*ox x+as؇PO[%iؠzo]6lAu$dvFVk~R1*JBOѼGL87GUOO T2`īk<౳ƮC45)XPѼj{WO[*3tt!&@z)U3DO LZW4\>@ Hl`Sr,7 ; ,l(|< #giܗ|LJgץ1-)‡Zipa'K(rc9vv=!D5b )X$?8GBB:*ai9>˅=բcu᳝D0/ Wn7ۃ&ٳ)}e%4Fp|õuLg.V 3jy,A싟rޒD =Up%i^Ngb4VǾ'dY(Ke%n 4"^.Tp .F8b$2q5j5_\_QP~h@_'b + 8Q\_"Wz:mY\ݜ.%ԒrDU=ScI}[D= Ժ+ H߈=r~!fk#RYB)t4#PЏj2c6C QYP[/殛ٹM]PXrݒ=)Bv08+nݸ,ŕ%֋iy_鏽"љZ6p7.BI!!C /bn11@'AsXz-{wN?!ajmTL0y0}Dtǘ~@,-Lѡm aaʃE%c/Vw$H2̾ )4~_KM >J. r L!@Fp U̸hXy%LpL#j&nok~(wz* HfDUa.T GΦZ0j<^h6t*lfBvT4)D!wd.* ;M~IX噼W U@ aĵEi9; T@D-=9KS<5u>e ʻ=>;ASZkNe &mFhLw'#yypdi~i[/u5ջYy0V8`DP|a)S_?eǫ)5nD{W]i7 fuAٕbR^9m 5GCZٴQ}#}\w8lѵ88I\uS6>֛NMCa)̔l˒5NIKVXҀ'F[Gj4~)!kx&.՜'s-kp0n(7@3>oy6'Dٙ%a0ԬQNDs^ KN|Ώ%fvD3K Y8_P!G Tg=3 Z͠1B(S% 5+Hx!pNHvFP &i5#7=G\DLԶIמ|,d`!,Kؤjk3i}9r2M[VU/c6a~dYSjJ""ơ0͍AbT9CDNIgweo `mQlv_C5SqTwX6jْbEw}Xǘq7gb+5q\ƚ`Vey`5i:&߄k~&| a?F oYL=Df_2עW1E`j&\0%nT K>@Jt]j*͈׫8~haTY`}*qPٴ:\F}' 2F'F H0+q$^ʩ!$QE(!}{dFelS+=܉.Ilb剎d}vĕ8e7gC5v/[b]%E:0GADh8~/|.i{8Wq CnBEȯеz:N/fue|8)&X0=E _ RW~em5ko^86b|=u0fuʲg ]Z^dOh݃3sTuܱƆ' |Jħ HTr<*Yd=:S[p7:\`I:JQ-a6f }܈ÅI[N #.tjN0Op ʙ3|g$mܥZֶ $=@6T⡳k ?&0{ʈV;