From d9337944b12b34191f5dc744a8583332bdaa964a Mon Sep 17 00:00:00 2001
From: Arsen Mirzaev Tatyano-Muradovich
$text
HTML; } @@ -281,4 +281,19 @@ class Notification extends Document return $return ? $return : null; } + + /** + * Конвертация типа уведомления в версию для отображения + * + * @param string|null $type Тип уведомления + * + * @return string + */ + public function genTypeToRussian(string $type = null): string { + return match($type ?? $this->type) { + 'notice' => 'Уведомление', + 'warning' => 'Предупреждение', + 'error' => 'Ошибка' + }; + } } diff --git a/mirzaev/skillparts/system/models/Product.php b/mirzaev/skillparts/system/models/Product.php index 55912ba..9b4f335 100644 --- a/mirzaev/skillparts/system/models/Product.php +++ b/mirzaev/skillparts/system/models/Product.php @@ -7,10 +7,14 @@ namespace app\models; use yii; use yii\web\UploadedFile; use yii\imagine\Image; +use app\models\Settings; use app\models\traits\SearchByEdge; use moonland\phpexcel\Excel; +use DateTime; +use DateTimeZone; + use Exception; /** @@ -318,18 +322,45 @@ class Product extends Document * На данный момент обрабатывает только импорт из * файлов с расширением .excel */ - public function importExcel(): bool + public function importExcel(Account|int|null $account = null): bool { // Инициализация $data = []; $amount = 0; + if (is_null($account)) { + // Данные аккаунта не переданы + + if (yii::$app->user->isGuest) { + // Аккаунт не аутентифицирован + + return false; + } else { + // Аккаунт аутентифицирован + + // Инициализация + $account = yii::$app->user->identity; + } + } else { + if (is_int($account)) { + // Передан идентификатор (_key) аккаунта (подразумевается) + + // Инициализация (поиск в базе данных) + if (!$account = Account::searchById(Account::collectionName() . "/$account")) { + // Не удалось инициализировать аккаунт + + return false; + } + } + } + + if ($this->validate()) { foreach ($this->file_excel as $file) { // Перебор файлов // Инициализация - $dir = YII_PATH_PUBLIC . '../assets/import/' . date('Y-m-d', time()) . '/excel/' . (yii::$app->user->identity->_key ?? 'system') . '/' . time() . '/'; + $dir = YII_PATH_PUBLIC . '../assets/import/' . (new DateTime('now', new DateTimeZone($account->zone ?? Settings::search()['timezone_default'] ?? 'UTC+3'))) . '/excel/' . (yii::$app->user->identity->_key ?? 'system') . '/' . time() . '/'; // Сохранение на диск if (!file_exists($dir)) { @@ -467,9 +498,16 @@ class Product extends Document */ public static function afterImportExcel(int $amount = 0): bool { - // Инициализация + // Инициализация параметров $model = new Notification; - $date = date('H:i d.m.Y', time()); + $account = yii::$app->user->identity; + + // Инициализация часового пояса + preg_match_all('/UTC([\+\-0-9:]*)/', $account->zone ?? Settings::search()['timezone_default'] ?? 'UTC+3', $timezone); + $timezone = $timezone[1][0]; + + // Инициализация даты + $date = (new DateTime('now', new DateTimeZone($timezone)))->format('H:i d.m.Y'); // Настройка $model->text = yii::$app->controller->renderPartial('@app/views/notification/system/afterImportExcel', compact('amount', 'date')); @@ -482,11 +520,42 @@ class Product extends Document /** * Вызывается после загрузки поставок из 1С */ - public static function afterImport1c(): bool + public static function afterImport1c(Account|int|null $account = null): bool { // Инициализация $model = new Notification; - $date = date('H:i d.m.Y', time()); + + if (is_null($account)) { + // Данные аккаунта не переданы + + if (yii::$app->user->isGuest) { + // Аккаунт не аутентифицирован + + return false; + } else { + // Аккаунт аутентифицирован + + // Инициализация + $account = yii::$app->user->identity; + } + } else { + if (is_int($account)) { + // Передан идентификатор (_key) аккаунта (подразумевается) + + // Инициализация (поиск в базе данных) + if (!$account = Account::searchById(Account::collectionName() . "/$account")) { + // Не удалось инициализировать аккаунт + + return false; + } + } + } + + // Инициализация часового пояса + preg_match_all('/UTC([\+\-0-9:]*)/', $account->zone ?? Settings::search()['timezone_default'] ?? 'UTC+3', $timezone); + $timezone = $timezone[1][0]; + + $date = (new DateTime('now', new DateTimeZone($timezone)))->format('H:i d.m.Y'); // Настройка $model->text = yii::$app->controller->renderPartial('@app/views/notification/system/afterImport1c', compact('date')); diff --git a/mirzaev/skillparts/system/models/connection/Dellin.php b/mirzaev/skillparts/system/models/connection/Dellin.php index efacab5..56f601f 100644 --- a/mirzaev/skillparts/system/models/connection/Dellin.php +++ b/mirzaev/skillparts/system/models/connection/Dellin.php @@ -9,10 +9,14 @@ use yii\base\Model; use app\models\Dellin as DellinModel; use app\models\Product; +use app\models\Account; use app\models\Settings; + use GuzzleHttp\Client as Guzzle; use GuzzleHttp\Exception\ClientException as GuzzleException; +use DateTime; +use DateTimeZone; use Exception; class Dellin extends Model @@ -68,18 +72,44 @@ class Dellin extends Model * @param int $y Высота (cм) * @param int $z Длинна (cм) * @param int $amount Количество + * @param Account|int|null $account Аккаунт * * @return string * * @todo Загружать помимо терминалов ещё и адреса, чтобы доделать доставку малогабаритных грузов * Разрабраться с параметрами 0,54м * 0,39м * 0,39м (0.082134м) и 0.1 куб метр в чем разница */ - public static function calcDeliveryAdvanced(int $from, int $to, int $weight, int $x, int $y, int $z, int $amount = 1, bool $avia = false): array + public static function calcDeliveryAdvanced(int $from, int $to, int $weight, int $x, int $y, int $z, int $amount = 1, bool $avia = false, Account|int|null $account = null): array { - - return self::handle(function () use ($from, $to, $weight, $x, $y, $z, $amount, $avia) { + return self::handle(function () use ($from, $to, $weight, $x, $y, $z, $amount, $avia, $account) { // Всё готово к работе + if (is_null($account)) { + // Данные аккаунта не переданы + + if (yii::$app->user->isGuest) { + // Аккаунт не аутентифицирован + + return []; + } else { + // Аккаунт аутентифицирован + + // Инициализация + $account = yii::$app->user->identity; + } + } else { + if (is_int($account)) { + // Передан идентификатор (_key) аккаунта (подразумевается) + + // Инициализация (поиск в базе данных) + if (!$account = Account::searchById(Account::collectionName() . "/$account")) { + // Не удалось инициализировать аккаунт + + return []; + } + } + } + // Инициализация $from = DellinModel::searchByTerminalId($from, terminal_data_only: true); $to = DellinModel::searchByTerminalId($to, terminal_data_only: true); @@ -126,7 +156,8 @@ class Dellin extends Model $query = []; // Рассчёт типа доставки - if ( !$avia + if ( + !$avia && $weight <= 30 && ($length <= 0.54 && $width <= 0.39 && $height <= 0.39) && $length * $width * $height <= 0.1 @@ -164,6 +195,10 @@ class Dellin extends Model $query['delivery']['arrival']['terminalID'] = $to->id; } + // Инициализация часового пояса + preg_match_all('/UTC([\+\-0-9:]*)/', $account->zone ?? Settings::search()['timezone_default'] ?? 'UTC+3', $timezone); + $timezone = $timezone[1][0]; + // Инициализация $query = array_merge_recursive( $query, @@ -172,8 +207,7 @@ class Dellin extends Model 'sessionID' => self::$session, 'delivery' => [ 'derival' => [ - // 'produceDate' => date('Y-m-d', time() + ($settings['delivery_handle_time'] ?? 86400)) - 'produceDate' => date('Y-m-d', time() + 86400 * 3) + 'produceDate' => (new DateTime())->setTimestamp(time())->setTimezone(new DateTimeZone($timezone))->format('Y-m-d') ] ], 'members' => [ @@ -273,146 +307,42 @@ class Dellin extends Model }); } - /** - * Импорт городов - * - * @return array|null Сохранённые города - */ - // public static function importCities(): ?int - // { - // return self::handle(function () { - // // Всё готово к работе - - // // Запрос ссылки на файл с городами, возвращает ['hash' => string, 'url' => string] - // $request = self::$browser->post('/v1/public/cities.json', [ - // 'json' => [ - // 'appkey' => yii::$app->params['dellin']['key'], - // ] - // ]); - - // if ($request->getStatusCode() === 200) { - // // Запрос прошел успешно - - // // Инициализация - // $response = json_decode((string) $request->getBody(), true); - // $hash_target = $response['hash']; - // $dir = YII_PATH_PUBLIC . '/../assets/import/' . date('Y-m-d', time()) . '/dellin/cities/' . (yii::$app->user->identity->_key ?? 'system') . '/'; - - // if (!file_exists($dir)) { - // // Директории не существует - - // mkdir($dir, 0775, true); - // } - - // $request = self::$browser->get($response['url'], [ - // 'sink' => $file = $dir . time() . '.csv' - // ]); - - // // Проверка хеша (оказалось это хеш запроса, бесполезный) - // // if ($hash_target === $hash_received = md5_file($file)) { - // // Удалось пройти проверку на хеши файлов - - // // Инициализация (чтение файла) - // $file = fopen($file, "r"); - // $first_raw_block = true; - - // while ($row = fgets($file, 4096)) { - // // Перебор строк - - // if ($first_raw_block) { - // // Сработала защита от чтения первой строки файла (указываются названия колонок) - - // // Отключение - // $first_raw_block = false; - - // // Пропуск цикла - // continue; - // } - - // // Инициализация - // $data = explode(',', $row, 4); - // $amount = 0; - - // // Очистка - // array_walk($data, fn (&$value) => $value = trim($value, '"')); - - // if ($city = City::searchByDellinId($data[0])) { - // // Удалось найти город в базе данных - - // $after_import_log = function () use ($city): void { - // // Запись в журнал - // $city->journal('update'); - - // if (yii::$app->getRequest()->isConsoleRequest) { - // // Вызов из терминала - - // echo 'Удалось перезаписать город: ' . $city->name . PHP_EOL; - // } - // }; - // } else { - // // Не удалось найти город в базе данных - - // $city = new City(); - - // $after_import_log = function () use ($city): void { - // if (yii::$app->getRequest()->isConsoleRequest) { - // // Вызов из терминала - - // echo 'Удалось записать город: ' . $city->name . PHP_EOL; - // } - // }; - // } - - // // Запись - // $city->indx = $data[0]; - // $city->name = $data[1]; - // $city->code = $data[2]; - // $city->term = (bool) $data[3]; - - // // Отправка в базу данных - // if ($city->save()) { - // // Удалось сохранить в базе данных - - // // Запись в журнал - // $after_import_log(); - - // // Постинкрементация счётчика - // $amount++; - - // continue; - // } else { - // // Не удалось сохранить в базе данных - - // throw new Exception('Не удалось сохранить город ' . $data[1] . ' в базу данных', 500); - // } - // } - - // // Деинициализация - // fclose($file); - - // return $amount; - // // } else { - // // // Не удалось пройти проверку на соответствие хешей файлов - - // // throw new Exception('Хеши файлов не совпадают. Должен быть: "' . $hash_target . '", получен: "' . $hash_received . '"', 500); - // // } - // } - - // throw new Exception('Не удалось синхронизировать данные городов с ДеловыеЛинии', 500); - // }); - // } - - /** * Импорт терминалов * * @return array|null Сохранённые терминалы */ - public static function importTerminals(): ?int + public static function importTerminals(Account|int|null $account = null): ?int { - return self::handle(function () { + return self::handle(function () use ($account) { // Всё готово к работе + if (is_null($account)) { + // Данные аккаунта не переданы + + if (yii::$app->user->isGuest) { + // Аккаунт не аутентифицирован + + return 0; + } else { + // Аккаунт аутентифицирован + + // Инициализация + $account = yii::$app->user->identity; + } + } else { + if (is_int($account)) { + // Передан идентификатор (_key) аккаунта (подразумевается) + + // Инициализация (поиск в базе данных) + if (!$account = Account::searchById(Account::collectionName() . "/$account")) { + // Не удалось инициализировать аккаунт + + return 0; + } + } + } + // Запрос ссылки на файл с городами, возвращает ['hash' => string, 'url' => string] $request = self::$browser->post('/v3/public/terminals.json', [ 'json' => [ @@ -423,9 +353,13 @@ class Dellin extends Model if ($request->getStatusCode() === 200) { // Запрос прошел успешно - // Инициализация + // Инициализация часового пояса + preg_match_all('/UTC([\+\-0-9:]*)/', $account->zone ?? Settings::search()['timezone_default'] ?? 'UTC+3', $timezone); + $timezone = $timezone[1][0]; + + // Инициализация параметров $response = json_decode((string) $request->getBody(), true); - $dir = YII_PATH_PUBLIC . '/../assets/import/' . date('Y-m-d', time()) . '/dellin/terminals/' . (yii::$app->user->identity->_key ?? 'system') . '/'; + $dir = YII_PATH_PUBLIC . '/../assets/import/' . (new DateTime('now', new DateTimeZone($timezone)))->format('Y-m-d') . '/dellin/terminals/' . (yii::$app->user->identity->_key ?? 'system') . '/'; $amount = 0; if (!file_exists($dir)) { diff --git a/mirzaev/skillparts/system/views/invoice/order/pattern.php b/mirzaev/skillparts/system/views/invoice/order/pattern.php index 9a8dea0..15fce92 100644 --- a/mirzaev/skillparts/system/views/invoice/order/pattern.php +++ b/mirzaev/skillparts/system/views/invoice/order/pattern.php @@ -1,3 +1,8 @@ + @@ -78,7 +83,13 @@Новый заказ: #= $id ?>
+= $product['catn'] . ' x' . $amount['auto'] ?> - - - -
- + if (Order::checkSuppliesStts($order_edge_supply)) { + $status = ''; + } else { + $status = ''; + } + + // Генерация HTML + echo << + ++ {$product['catn']} x{$amount['auto']} + + $status +
+ + HTML; + } + + if ($amount['avia'] > 0) { + // Найдены поставки с автоматической доставкой + + if (Order::checkSuppliesStts($order_edge_supply)) { + $status = ''; + } else { + $status = ''; + } + + // Генерация HTML + echo << + ++ {$product['catn']} x{$amount['avia']} + + $status +
+ + HTML; + } + + ?> @@ -242,13 +289,27 @@ if (empty($window)) { // Пропуск активного заказа (несформированного, корзины) if ($account_edge_order[0]['type'] === 'current') continue; - // Деинициализация мусора - unset($date); - // Инициализация времени подтверждения заказа - if (isset($order['jrnl'])) foreach ($order['jrnl'] as $entry) { - if ($entry['action'] === 'accepted') $date = date('H:i d.m.Y', $entry['date']); + if (isset($order['jrnl'])) { + // Журнал найден + + foreach ($order['jrnl'] as $entry) { + // Перебор записей в журнале + + if ($entry['action'] === 'accepted') { + // Найден принятый заказ + + // Инициализация часового пояса + preg_match_all('/UTC([\+\-0-9:]*)/', $account->zone ?? Settings::search()['timezone_default'] ?? 'UTC+3', $timezone); + $timezone = $timezone[1][0]; + + // Запись данных о дате заказа + $date = (new DateTime())->setTimestamp($entry['date'])->setTimezone(new DateTimeZone($timezone))->format('H:i d.m.Y'); + } + } } + + // Инициализация значения по умолчанию $date ?? $date = 'Ожидается'; // Инициализация буфера поставок @@ -260,99 +321,158 @@ if (empty($window)) { if (isset($supplies)) { // Найдены поставки + // Инициализация максимального срока доставки + $delivery_max = 0; + // Инициализация поставок foreach ($supplies as $supply) { // Перебор поставок - // Инициализация окружения + // Инициализация переменных extract($supply); - // Инициализация связи поставки с заказом (подразумевается, что все одинаковые по основным параметрам) - $part = $order_edge_supply[0]; + // Инициализация цены + $price_raw = $cost; - // Инициализация доставки - if (isset($delivery['error'])) { - // Не удалось рассчитать доставку + // Инициализация комментария + $comment = $order_edge_supply['comm'] ?? 'Комментарий к заказу'; - // Инициализация индикатора - $date_icon = ''; + if ($amount['auto'] > 0) { + // Найдены поставки с автоматической доставкой + + // Инициализация цены + $price_auto = $price_raw['auto'] . ' ' . $currency; // Инициализация доставки - if (isset($part['date'])) { - // Найдены данные в инстанции поставки + if (!isset($delivery) || (isset($delivery['auto'], $delivery['auto']['error']) || $delivery === '?')) { + // Не удалось рассчитать доставку - // Запись в буфер вывода - // $time = $part['time'] . ' дн'; - $date = date('d.m.Y', $part['date']); - $date_html = "$date"; + // Инициализация времени + $delivery_auto = '?'; } else { - $date = 'Неизвестно'; - $date_html = "$date"; + // Удалось рассчитать доставку + + // Инициализация даты отправки + try { + // Взять данные из "arrivalToOspSender" (Дата прибытия на терминал-отправитель) + + $delivery_auto_send_date = DateTime::createFromFormat('Y-m-d', $delivery['auto']['orderDates']['arrivalToOspSender'])->getTimestamp(); + } catch (Throwable $e) { + // Взять данные из "pickup" (Дата передачи груза на адресе отправителя) + + $delivery_auto_send_date = DateTime::createFromFormat('Y-m-d', $delivery['auto']['orderDates']['pickup'])->getTimestamp(); + } + + // Инициализация времени доставки + try { + // Доставка по воздуху (подразумевается), данные из "giveoutFromOspReceiver" (Дата и время, с которого груз готов к выдаче на терминале) + + // Оставлено на всякий случай для дальнейших разбирательств + + $delivery_auto_converted = DateTime::createFromFormat('Y-m-d H:i:s', $delivery['auto']['orderDates']['giveoutFromOspReceiver'])->getTimestamp(); + } catch (Throwable $e) { + // Автоматическая доставка (подразумевается), данные из "arrivalToOspReceiver" (Дата прибытия натерминал-получатель) + + $delivery_auto_converted = DateTime::createFromFormat('Y-m-d', $delivery['auto']['orderDates']['arrivalToOspReceiver'])->getTimestamp(); + } + $delivery_auto = ceil(($delivery_auto_converted - ($delivery_auto_send_date ?? 0)) / 60 / 60 / 24) + 1; } - // Инициализация стоимости - if (isset($part['cost'])) $cost_html = '' . ($cost = $part['cost']) . ' ' . $currency . ''; - else $cost_html = '' . ($cost = 'Неизвестно') . ''; - } else { - // Удалось рассчитать доставку + // Инициализация статуса связи поставки + $status = OrderEdgeSupply::convertStatusToRussian($part['stts'] ?? ''); - // Инициализация типа доставки - $time_type = $part['dlvr']['type'] ?? 'auto'; - - // Инициализация индикатора - $date_icon = match ($time_type) { - 'avia' => '', - default => '' + // Инициализация класса для поставки (если необходимо) + $css = match ($part['stts'] ?? '') { + 'accepted' => ' supply_accepted', + default => '' }; - // Инициализация доставки - if (isset($part['date'])) { - // Найдены данные в инстанции поставки + // Реинициализация максимальной даты доставки + if ($delivery_max !== '?' && $delivery_max < $delivery_auto) $delivery_max = $delivery_auto; + else if ($delivery_auto === '?') $delivery_max = '?'; - // Запись в буфер вывода - // $time = $part['time'] . ' дн'; - $date = date('d.m.Y', $part['date']); - $date_html = "$date"; - } else { - // Рассчет времени из данных поставки - - try { - $time_converted = DateTime::createFromFormat('Y-m-d H:i:s', $delivery['auto']['orderDates']['giveoutFromOspReceiver'])->getTimestamp(); - } catch (Exception $e) { - $time_converted = DateTime::createFromFormat('Y-m-d', $delivery['auto']['orderDates']['arrivalToOspReceiver'])->getTimestamp(); - } - // $time = (ceil(($time_converted - time()) / 60 / 60 / 24) + 1) . ' дн'; - $date = date('d.m.Y', $time_converted); - $date_html = "$date"; - } - - // Инициализация стоимости - if (isset($part['cost'])) $cost_html = '' . ($cost = $part['cost']) . ' ' . $currency . ''; - else $cost_html = '' . ($cost = $cost['auto']) . ' ' . $currency . ''; + // Генерация HTML + // Пробела между supply и $css не должно быть + $supplies_html .= << +7M0FT9!LAeZn7#~l(fphE zqWs5>f7&AKH9%c}{kfX-=nq`m()!`=!;4nk@OugUVvlExUy}xP%6>7{rs&TC<#Gbh z3vtu~%(@Bx5BtJiuVX@w&A+2PnDHC@MaQ2o&jZxVPEGW9%;bgbjb`p&pn{*C(5|JK zZP2T}I2MYi4bVFv962)iy#nS&Ko0B|LD%n9&~-gPkLKSke$##smR#Njy)kr-zt#8_ zH@W7CZ8oC#|IYtc?CIPe<=>>kveL}GDf9z%2$%x%6zI(Bj)*;sF>UDx+a(p;qxm=S zMfr?vKhe5nT>LJ^%|GoTYrOQ|0$$limvYR@c4FeTb-rV9U7C4yg6;0W>cwjPXYXQN z_BrFeJ)C=&{5#su`p@3eeKz+Baea_$xNC?0344D3Eu4Rcf98ezVyTc9y>161xm0sr z__=F+nfl;+bCiD*Pb&JNoDL?9 Dz{o0RfdV~IdU>ksHYo$RMI7EBy<2LaJ z)mb-;1DImP9h-kgdoXF3zD1YC#Siz*Snov~E9m~iq=V p?= z&$gN014fkIgTc7*9L>K86GWf- U%QI^fSV5Cl2ufu^W?L0fpNc(p9nFW}(5JcyE+5*JU z#KendoqrP_3m3!;zeNB${M${OesqN4-uxa2mkX={_5mdX?Ad{F(8GRf1fKcd)ePq7 zxW}YHd!QxIB7)}74d`aj6lQ}aFyGGj027ty!hkR!3 _?5jfh@d>p9q!M0+>A7VV3%;i*9=^ie+a%R`|v@E@wdc%froR8d6F z=L4*ao w*C^n&D~UvA1T9}8|Hwn 3Qza{5d)7FXq)O*!7 zjTx->s&L(j`ylykw2R`}{~(~uo 4$JE4==ZhnoSd3bDr}mAZ}>mV0t7 z)thYq&)HCZ{?BR^?_7^)*|0Z @O%yKujg5&rkwF~?!$;Ej-e=b*--yOOs2L@ z`lmiOif7vdQ9LigoLwES{5)^bQa8e!O!*5C?hc@yg O8Y5~(Bb zunL$43 Ts};|;j#qZNEr0uW#yj;pfn>^W$Kf=W!h++B_kboqLO$SUA7HCJ zco+-x0`3E@1IkbcyDNdVK;*w;bi(p4>)##TqpBfH=`MdX@`!=|>)hPu$^-0KhEo9R zu^Vs`;8s@l)i(ev?}xxDK$jc3Ry+qRQT_9r7E7`H`Yu2B@bTO=^S$5~@BAL)OaR~P z@EfrWBR V-ZC;WjYxtze$&S)p^d3rIs??IAyO3_Z60Zy)UnL^IFX(_br+`5=)FMrDi{MODx&+;li z^TYF?t@o!R$ViOL cpK0-1d$+vVc9HY z%BXP^Xb1W=%U!?qOpExUV zOWd$5Kiik3*qN|?oicqP>^PQa4-5r%0JdtGV)^-g*EoV^(DitY-^h4<8)w=C-x(}* zXQccKXm@ #+jy!;isg5Wo8JtYa(e03H-e1Ae5W>n z51h;K^9~caM}t8UDtzyuzg>=;<7xcYOLzG>zU6mdUgb9S*1NzVWJdoFL#JG7m8kz@ zJUmmF=M-?P!17V?J4Mco6>llj-x~3MhU*umJx0#Q)qe4#zfX>|J>T-rzH8~5-GE=~ zGq?G^&9M*f<1yunr}Nupo{bYxW34)9Z7lhI9xo238^3+mV=tW3>~yoA*Z(W}Z7`FH zo&^E3@ABL6C1Z} VurPb?H^cc=kMRKcY@SH`McgG2`WDpY2$Ki`Ko#2=c+PR574%Kc1GW zc;yM|W{tZKnKY>*xr~;d-*{W=PAuLqz|KO{4Et7q?jYE&@s2B=O&zqXZvJ`Bazt&3 zCYYh}kH^{JJd5bS8a=Er=~ABp#I$=mFEqoQ1H@=2i95b{*J8LYfB3(Aal!Y@8Na+o z_tBfj4b^>$`JX`CE9^A!tm~ieOFW-v!wBL7ef|Xht2g4zn~k}H^!YVB^Lr!CwBeou z{{Qei8-n%3v#$4I9fs#*SZN`8tyrG^fPUYz(|0q&Un5`>P)3y&AJpq390Ta@YB5j3 zdkgljT!{6dFU{RhWx`n&)9f^1ugh<_r_;#3CKuq5y@3?M@I8ft<%BOf@RLZfza0v+ z0AlI@&*?1x0mMf^8v?WkV%|dn5ny>nJaqxe#UOxV{tW=r;(HJOH#wGK8OhZQfa&)F zngcZfE4El8+^z+#i-2Z>YhX6G8fJqlVK(6ZHgOpc^9~Z5iaZGe!hkR!3 xQ#~JJN0T2d#&g2cmw#; zdZ?Ou8Mohr5cfx=Jgp&A3l7vT|3;tQfV*wNdUd3a0~kWpiz0fyK9wO<&C+o?1MbS< z=?v9#sH+fe(8&p1zB{Zd 9POScgVA@!$5n$88#Yh8yZ)I&qKhOAG|}@ zp(>L9H<=gH9@Y+hQ-7DL+cG$J>g3SarOV87jqP(#n3qVNc0j-0DF?8N>3{T@(x!bx z?xWUq?P0dhEs2!7!uUt}V-5GzdCmj*4Rd_1PtngTk8w-0nRmbQTmd^T5%V1AG2cVt zIi~+1|0d6Vbn@>=r^5J0TPkE*Gm7U gn2E${zs=5>C|JI@BN^M<^3 zGyKE8O7uS{M^lt5s(229Zr^Cz71jS3xmxwtSEBif7*-hm@my8 Wr`w+6)3c{e>U`-8hJR|a4q&Vj{SP?*kh~j&&x?xR|L{DNsqKEO=Kl8Q zs^E?1)XMi?#JP$6^;su8%Y^5g@NCcde`u@pyIBh3CCa188+E95 ZDPkxQS*B}5tA;` zm|*y~^AI!sw8mz9SBciCWwytkj0Y(9@h8&coPH+el{IIPaz)M4aAsQ2cQ?wPBc7$? zA9m^Pe>lG7oHozgA=bdWhIYUrU<#gx0vr@P4*ez|r8NV@a~qJ1;`}u8HVGJveDni) z0$qTPKxcq+8ry-WS~>8gb8XRQUo^4Rt peDQ~tas)I7zAjAaQZ(wX#b <0kN0pI6s!S96t8!OKk z8-{oeSn=vKmb}p=aR0-z4ju7qVi{nU?*7M_PO{ItkT=SMO|`2Tem({GC!2>bT-Wu@ zH~jL9uqM!Rpicve0Z+xV)_Klr^uN$YA3?uUeo@aEr+x>6WlH0pu@C%*n)>9A)zr3k z0zX1JL_Ia7&HrieOzz1~{7~CX|K;6k_VW+xGb}kb%)1Oq5AAp6%lSMI7BO>%&Pss$ zo#fGJ@AeG87r<|Q= #u`k6ry1aYJa3AD-E&tceV&X*HGnhZ< zDfK^I<09YoSVNf6@gA%ty|2$mWSLEQE%OA}1^!>K`A1w_o8*7~cE%qByf=qu kS_4vwzWh0>AN5td1c;*fjgU0UuJ~i*pzKO{1N~| zB2}_~m*Tu7?=PC(;qLI7lh1y}$c9sQoHNYwyubn=FDdmu&UDi8%)ac%_Dyay#mt>2 zssNO+Ay5S9xSTpIxt_{93wVC&qE~Q-5AQSu*Sc*-I8WIO8Rt2!CVi$0^Ie92+uo$F zd9>cMeD^1&oun9+cia?j`O=wZ?vJ@45$|+|zYf4Dmd%NiM-Hnk<3CY6gLusSwRB$+ zv_A>re|ER#&O97K73lsHdCQvq$JvifX!(8p|Lou|Hxd6RTL-o=r#iNCt6GXVpwYN* z(#WaTnwM>F{3feA?wDe>qH_c=XI=kemy>r4lYdKbY=5&?9l(tPy;2i~I`?UCuL;k@ zXWS|GCjt7UFRXhNO`edyTTT99E;IgN-Rt`2e``gXk^a7w3pD*!{@*kCw{>{p8YJgC zqVj(F_)(SL?IG|U9 >DCQ-i*e5oz^KAIH{OIwQ;hF6@ zk=dSqv*U3yvoGLX@`>VfOLyD!T<8BlH@hq-;~h-X;Pi>(xLXkS&X~R =hv9wFQxv6{5#T$`^-IzpLcC~ju*pE0-g5*JJQkbk5)N2e-l;Q z->KWY`TvUOrtXu`86W2{xvz`w>%2$8x;rJBw!^>|nLA8AojTl7>VNF^??~74@zA;z z5pK@OSG@j*T=75Dq2}0Sf!j3J4;A%AIUS;79n;@9b-Pb;GjsnX?;T(9ZZCabqRTs! zPS2!i9wPbRy9(dC )D(&5~2v^=~sE7~_F=zHjo`CvN9R5rD#mA&!+ZqxvtZX3XbSVyCLeA(-GS}^zXM>rWyYVhH;VH==D*3U zA8_^$F8z-y|A>D8(=ciAesn+a8$X;IHDM$195Us_Gy6L2PW{mOm0{Vk`W!#+U+i=2 zcp_%5195$aYr$L>OSBfjHeCmP+2>AyehP@j3%i*A1Gr_p|3R9Ry+w9D7W8f#sQ=;I zyB!|p9TxxOC8`d7xm>rQp#6_?o(5@jL!^oLz8HRP2RZ?t07Zb8;(uVwdn2CH-T%x% zzWE;7k${=)W;o1I#rIO)1(s;c6PCm97>W1fIn*kP|7iQCAHMV1V;$S l#r_L*9ErC%0W9=6=wJMBF&GJOdd2G{!R@FnKmQyzBO_1L7yu{>Q|FJQ`z}{Ct%^ zF5Euxzv{QIbM9Y4{FAIQMEifH%Wsa@Z`pm0ZPxV>`Omk_oTFp-3_|aDF!`pAw9?)G z#La){;r&XF4I|~(Jozv?xk2R)Fy(-m;~(7)S?PQy;=SKN`=7B7*3sWQGLBRf$6vb_ zPS^M4IpSGi@@#atr@Q}gBzf+U{W90%O`8wW|L`txTcO>wF=e2R=a~J6Q`*!E^N+gq z+yBttq}I2o{i_z0ky(>AWy2_%`7PqtMH|%i8KcyS_x^xyBYzsbD|}Yx`ozT-Lw4`tlzGbQ$=qY2hdR75BdJo5MN3c|^CR zQH`*s;32=f^PG9MkZ0$aX1Jx)|9GXHPJ6y9SY@Djxl1`-Fzu3h%=Z_p>qwoOx-SoX z(aSN@;mp>j&V0izrT!;K9}+I}x%TfTEWhF6_vf|(|1oo)EEC-8vW}>9U19E>`;geC zgY-XUEM&sydSm-Gbr`@*88ms)8N)lW8~?VSpyMCEeTZpqLH*lzQ%Ca2{b^S?%fV;3 zbL< 5HsONmD?jKH%}XTjeVzG+eb)9r+@GMoy|*|8_r0BE zFwZCp=L4dOWoBQ^y4UTvockcIf!PZA>1pz6bhu|_|HJ<`eskhb>re*Idz#^w{m=~Z zPEegWRjTIpXcgvP%R%|Azi%8hD4GwQ8O&iA-i;3Xl*T_=o+Irl9cG?y!2es0cc=`H zFqQ%_YmTN2whlj>dnq<`K%H?df2&8dFDkG8r)bJ>XaDoKomZNXzwGFLP={>ud`Gak zi ){(EKc0Or_LxuG}d`F$} z%SL){4&Pxs)G6e J%#Udes6{KoI(QJl}@mCiZ)Tby}Cn3(>@M;w0AN!1VAE$4EtappJZGvcX< zcqW*-4Wb(^f`p0V_Xy&PS$knw;NMg5 Oa4{qbsqL$&x8N&m4)xK6)b^nU zstCct=2{4;)5S08Fy_nk$}sW+RfGI6Z%{Q#^{+Np*PNhSP+>E&L~{{;!4Fi}4Bnus z<@2`>e pQy~;6R>kC`r#SNs{o$6%=4i;13VWx;kngWM@$vV5bA*6&ejB40 Jk*y^>!-0 k|rc2Ll_$}PO^%LC1^*gm|{uFhl^n{-*9)qVc_sUsC)kgR!Q~yV{ZBRSrOavyV z9ka)4e3hT4ct8DDpA%!%_E}@p_L; h6AI4l6>c6eYtkHQ-=hz49q|Axm`VHcbck}U1!#Ju0Zg<&rZkypI^=}aZ zK3;Qjd1U*>tgL&}PIB+QMy>tmkGPYWuK})V4{Xca@yBArUg|%#{yA?Eqjusy*KnQ9 z`rO~O#@(TwW5r1*lvUEO5q47l7AxSR%%AG|;qO(7`e)nxyz9^6jSpK}Mb$>B|8tCh z3$D*_+#I8p{;6A~seiTs-bu{&6Bo4wb{Cy1vGo5AE^4}Prt%?E+1&5D<&AR>9;%(A z%+miy2mxQ5^DU#sKm1>nuKx2Lx-sS+ajQ@TQvWss=gi=!v&EA(o;r4<($&4`57z(d zeP?mZb6rzvScv>b$N(2yYmZTf)_qZF>wnT?|LZjlctPslFmO&s#ZQT;d^~VI)5ue* zI_HMRHT|v{-{K}Uq2>40xMtr|oZC$`-gw~;7A|uZiO-WvsbLoRkB|W_I6jV1Ykbay z<~6IUKJW4%)_J<<^? IOnKrCwfNO%6#rlME}NrDiw_`Z zdKBe#;-k05rkTQe(wrB5?v=5cYyfbS`VaGPvl~&A>DkXWS6ma>Q!vYGUCS+K(so=| z9N+xLw6uW fO)?QxC6K?VtyR@CqNlB zujgZF=>y`e#Us)3l>ahiOwyth;n*J90cmLqh-V%UMDdSd1HgTkJptBj9U$ D~b6 ziLdY*x0^qNXPwsv`T;wDGKzaUyy`TF{o#$P%ft c0xnAw&dVKPF97&H*%25D@P8tZTKCVtq^0iJPp}?bRA=TN_8F=F zApMh@U+%Y?*6uFsnf`@ZGx&AA&$jeycEP?BWvjhc{W$I6mvz+?2;6s=xDd83z;~HE zz;{OBw~X4oXu8U6^zHQ2Kjy1E NOF{@vQd$Oc!dna?&+>xaLuP8>}1cdcp7 z=zdeAa2?PSa2;Uj90d3|dE~HK^+8Tr*90d1{1&eq+*#@B- R(j%$EfRz5InD5gi$JDL`Q}urCG57v^dSu?>iF*P))HRj4{!RZd>YnfD^%jpl zjz#Bt+5>5-_iGUs-_;psQmSPCZv73#ig*8@W {F9&fq1RZKb;fa-DYkDNVJ-yT0}?9E*&ZxhstP~uujX`bp~l=- zE2FaQRp-Wj^5Z}B+W*nj5P(8enfhnBr#|^(b?VsHUUil5dpN@jbwqLzFxD$FW6w4I zFW&jR%C>!i8*=|@vS{o4@2YLe33HXIf3|@IFShe)_Z+ADn#Z9(U = zRK|_0JM~GA{y=dK$wlRxx~C5JDp&vHg5RZjC|`X5!uIkAk9W_#YGI$Jva;S;_T0O_ zrS`3u@0I mIK?2K(_*}?{@oFE~wCNf1Psf_PlxA zP`7f^ZUqq2|KYhx)<1dKI_aM*vs1BN^}DZK=f(^-_KEqeRU=bQqr+!L>Yv}JkA2`j^mo&o%jLdTji241#{KMjiu)xEGR5i4XMXBMgy-Ba z0yJ?8^fk^zV42+HEgS53jtJj9;;0Wzo!dJ6XQci;_8hookKd|sO=xr8$NHR$bn?ly zB^Nc!=D;???-ZwhzQ@n_WuvUDd+sIQIBJmB9KR{bA{boPHeg@j^=~pso!_v3`RUu( z2Yq!~_$D_ls>rT$V}?I||5s*ik9)b(*(OtsE4Sg*YBtUh+BR*3*BHkxGXL|hHf40` zaLcOtHyPhN{^PW8zVM}|Oq5Q&3@7l=&FP7K)6}+irX??_)H~;Lc!pHbl;NuM(0*q& zy`E>m;Yw$n+s|;%%KB%4=KcPOlzHbjP#&tj%>&Kw$NfDqiu0$b)LSxPxemm$z*Y}> zRiF2i#P uM=>u9={1nL9xHrYrA&&yv*=hp7qZ^ ;XxYbM7&6 zQ9W!<;9keY56 `RAG+`!@FFC-7}pn$#M^(*}rnzqiZiW`_Urtbfn_7|4g~ z*lSt;?kV%{@eO1@n-8Ra9}uJX-=FStzY1P|RvmNSj~|n^&xa%M_bJc_2vqN;> 2c3sO#-ZGqqYpY*qPbsh3B6kuO;3lOMJhkx!>;5P;D0M3C$zFl5p zhQF++f8>L8Pz1!Nbd0}Qk1lF};ea~a%k1&s_r7kj9Mo>sa}-@yMfn~KGzZGeN7(su zGb0T1T^nc*3 DD}cLzZoqJ0JK$G+VwcyL5x6|-KOgD!ji4WN;!PkIC;?&=_jGctD5$(S{g)o* z_P;VpfB#_dz& cHA1DW}i;PHDrct#H-X zF0U~oS6NyA+!xP1OhN10>3`<4_j(b3li`3mJoRvT MJKkJJ7GF?;&?40MIwsHD9d-` w8Q2#yRIU2(W&JHI&mQBNmRB1bh413r z;zXfb_r1bCBlYi RMG2e?0ORO9PX zN{?}QDAzkc;J1p_|5fTRl>_^vB$MS??&(jv7J d0w-JIt2S`Og($)@N*eZX2O`?_NMDRK3iVXZC;H1B`)en zobpzg`sX=89`8P+q@x!HPJ8(6;=-YxznRtfzO3#CmcLzQ8k0rY;Vh$hhFhhtf9{v% zUb;9c4{oN&33d48IKXw$nDf#+QzhMUo38j)|Lrw58rFCf8lEe4{d1n!V}GaNVI2&v zV;?V0Xpb;;fI}t{Tjzhlm;ZQ6@9Ricy`?K2-Z$-{%FK6~vcqqstAFmF E}4XPt-6W~-#jMl@^uQscNIZvyRapvRFRj+>I;eI(6HN~s!@LMVBpZjp< z_iCf~U699mzO&eyU~z+2x&7KBj@E!@8(^Zmzk_oG6CSy_-2WFi_s=mu=g;}Qgva=2 zgjacy{WA5>bp_r}L-71KeoH^G6>+OxljXYXq}I0q|Eu_Y&E&^#2Y#r}- u~A1!-29t`lr`v{uaFW zq~bdc=cW10tVex2vpUGDeDGMN{+)p<(ep9n^##Cne%FfwKlX_8X25kq8TOuvYq4DK z;&~(+Mt-Q){JpPUlV18}H~l?dLEp}b>lDieyr5RT|DwLfdBcc-YU||ButqdZ-|^0K z&3x9gS3dfCl@S4|Lj7~y?o*()S2@#RkN7VJUIAPe6=9!^ivL|5yvh%^%3S}&$p3pl zU9a+G!XD}ITctrjHn)Qn$RFo2uZ_n6+$&rCa|6XEKuf^a_b>6vpNbpOzXsrh%POFv z6?x$#NGG7S-*UlkHr7A;ES6^}kPGw$I1ax7@LRNU^@n`j2ykC^9uRLIKAclle6O7Z zkQd59Z6K-gA{@sxcSLYIbmBG(x58|23(N)#XK)kD2IPULYk~D b1aS zK-$M|Ns*IeAmpF#3@pzB0Ncddzz858U|+EX*aIAjU?21yzy@GBK!0O_!2s*H3(y?6 z6}U9XY)LR-Ko}4PgaKhd7!U@80bxKG5C((+VL%uV2801&Ko}4PgaKhd7!U@80bxKG z5C((+VL%uV2801&Ko}4PgaKhd7!U@80bxKG5C((+VL%uV1}Y^3_?|*krDotvDAdO) zz&B`y)s@N#g=%TrA~wrD{5VQK)0sx|T&kaIIG(FJo~t>YL(b 3e*Lz1ujl93ldBi5C+o70A%q(fU-;(ZUuA&`T>K1JYWH^4%h>f0_jr65K$3O z05F{ofnGoxpdN5_8jC4W2?OUX1CS;DXWs%)zA0lvfP8@RcM8Z>bpRP-KHme{0~|wK zc-~f|6kHgH!vJLC0^kOq1&{-b2Ke8d%`%Sc1yV=gdj`-OxD&{_{s4KZ18@vuz rVnH2KD@l{n+C7y*Ahm10S z#>6o^|0{X{dB8qER4fCWQy2#DfAWHiR!E%4k+#Tx9Dc+pF#~8r7XlnJz69{Uy#x^D zpMfp#+7l@Ec|@cs@}Ibgiw_3_Xg5~?eCOhS7{|4uQfGi;f_H%H9du{x5owA1XN=vd z6*1b%Wk6eC0#FKw$_xV>KXIPq%1pN)q#^R3X_Biz{Aefb02$YVgmP3|Q|ts}Y<>W7 zi~Lss`OI_?&`t&eqAG@g1xWVBOw=*r75UEuu~jTiw39g%)ASRk`pq}rs8h#}s$;u~ z)WI*8sojfbsO>XHtIc^s)w<8#RcnXzQ!78{qn5w*TeYO$uhin#I;n*@PpbtlKB*S; zZmSl)^pslkatF2e^=H+x{@vAzcYCSTe|t@b-7?`HYRByHYX7Q5>gdj`>hy^U8v-%m zE 9oe=~eRK9~dGM2qMAEi*0C9=@S51*k zTdB}SIM<(XRa$&d?Oi@sZ5;hKwS2$}D!*$pHNM47 yr6#oa?@A-* ze*1~sM&DNX-5yfwhrg%a9n#4m;@Sb+oNBW}9KPj$$s1i%LEq wfx#86EFY8*=}uPJW%X?GjucxHXk(MtI-y@28BJ_QQD{pGxFEm4;!3 z1>djuDODo3_`1yU+%5G$*QhE zMuZjl55(B{=NWBexL4zI+RyIRT;(?WmdLxG`N#%W>2YuI=0YcpL7%rHKvH`K5l-a) z{1fRwB}N-r?x#U={?6+^PweBYPhfns 0u7%lU7R+@{&Lm3(p86@*kA6^T z}IXTL3QLGLF;{?jD?>;on|a gd#?D6vnF8mBY6+~XEOT-xi8>~MC}!RME( ?mN>m-TJ3lt^+!qKpk^l2p#^V(oZKH?Xkm8x={N@pn z|8kIjjsdtoD4_CO3qU*~|M7(2Ja$9d@O|dr#8&?!@?TE!KN8;!@jRpeYJpcX7WwyL zM(oixxQ`^EI#YTA-}qi7@?T!^k92tcSwL0Ctwkda`Tut#M(p@)n6EScxIZP`>s=CG z{JjCW4X?&|r`v*b0X^KBw8+03D`JOsai!nJ#q%#kUgOJaCiq$PL5|-lqQ7}=ts3_7 z|L;c3d2WYxQICzrkNWZ-14RDIaqMsUlJO7Uq|To4wLOE?NRMUi6M~({|9LL!ZpBBt zXbbpKJP*>eNzu!99I$6ezOOopcxvvfYuJnYJ4umezWcxCw_(kE_TH?M|51& Kx!~+OQM( zcakE{l>ZTIFn-jyrr#|W8REIYl-v0@A9@+?2jJZsyyIu*yh-|gp0A5Gs1t|wtFxz1 z`N?+FB`_)Zq=QRMFIb={tfZKYn|;lqZOsd--J_7C@C*2Siwrf06ex44_@C@YAkJ ziw~q#R`{)3e%GI=Wq 6f-wy0sF+ZK>;+K)< zWG%SH#``Byk t>cHA1>deW~Anh}2{jMAKPFD5-ygw~~dckht2q*Gy6C!4g{{x-* zH{};U((mirrst~Td%g 5ns;|2?xU^dtSvq2He#C8jOrr$z<_bTNBdB7*Y0H7z(4&Zz84ZuZJsoOw# zSawk!4Dfr$G56KVs`r3{U;4VDjU`%Vw^ck>)&GBw+RKPFH=IyrCIJ0_$AP+luQS-~ z`lx6#@_aFH1`rj80e*j5-v9CO(%VxoD^6}>oOao53@#%7G4!PMffqWmPj~^~My;&x z50J;3fy$ kYI88UY+*T?W`qIw>>a zxDsH0;7ffqYiw4@|F&tqw`-rW2|{7z|KC@Qr`^*P|+yt6d)zZAN}Lw^0#_a=s2= zL*{=r7qxEzE-p__ke;tIPdMI=Hy$r qnf(6~S@*4?6d;7}`Y!K2 z%`Lrvd!2m~k|iEDARq043hM`uHv6J H9FzdQ z6!$v0wa<#O+dBC(U-^coGd2x)7WwzfT>1IqIGAVe+f`LAW~9mYl2jD`+ZO ;s!H@j^`(>_T z{BdoIZ8zg maG5$-xD?-+0c(~31?s@+0>$sr_pe$6 zEL8hf5)1S<=KH>wul9X0PwiViSM4R1%>ibsy-R1SJxlX7=*F;&w|L8!iuHZ+$YI4h zt}9Tnf-^dnM*MB#ly42(C{uR;8SjhiHtJ g?wBL+y(Ri#sYhQa#eem&&kTWPIyL= zPqozM9AQNM({y$-&%vA1{SmcxNIyNc;6CvTD9%y0w(BrmX2i?)<9vYc8#U7vZ?f?q z50?P<0sVk^Kq*jR>e#L#-TznQe~?$&rH2pr VD@}D93x7!Ba9p=2yQgPqt*;6N@?J7k>PrEKFs~H?{J&x}gD^lbm?ZGKm zTwBZLbHb #%DX5{rcfO`dezp%n@xv7(1A5xpg4OP=S+@1AuZ`#qC!KBl-YG}6)gcA9$ zAo(}-H}U7U;GFwOzAMnhBRi1W?Rw2NGxApx7zkv|J3aEE- TzM8_NknK&wXuI+jW}_X5@+cakv*aE99PM5p!<{ z&+_HCnRkR4{wu3~;*jqx+w>UIEbuJypC$6o_BWyB_pz^O8LA~IH36Yw>bIgEm=B;G z;Jb0cZ`u`QW5=8cYURL})U3|;Rf_w3g7iaEpZswU&SKX7*ftPY {3xOZ_-7Z;#hx1kcOEKzuce6u{`etEO@=Mn*3PhxyLVv%-eofzW-tn>T*mS86AN| z{ {4^p?rFZa9GG4)&CI?`?hq-9~l6v#{GS=`*eUHEZ-#XB&@KJXuv zek^axwjc98>}wC8nmF47!ixN7qx?tmv}vsG>am*vClj4jozZ8ccOmeOor!dtOAhQ- z{Lbx*zx34iiB-nAIzKY)*UyAUZVvKI3g=(S?C*k|?*`^KU*hk|^!*PtxGLFqftY*V zGAaCMLstN4AMc+zc|z@8JVVPn_qa&Aifvb`|K|K$1GV6-rn$8Nco+H4;{SiP`BC?L zM}O1kUA3+*8(^F9Ge(idwLseT?Qw79jyV(6qL(|UG56LKnfGX$9Qy>kYpt`$e{BC* znf^~EwD@loV4cTw2%X&OJY9B3gnN0`nZ#1jk8IzlR=oQMHLmFmBJ& -vR2N{Z(!% !N|K)M;s#ml|=s8F1Ah{7NFX-*Y?gjPxTqGUIfeuni1PS&v2RD zy@mYOC(-uSe)LD1N guzI{8W0x&noC%)t{6-;^RKv zq|}Lnd$BhEto+|6+2*D{-7x6)qgzl>p64~eP2@kxy2zA_CyJMQ*#fG&k`i>6KuDMC z`@t2zqn-LMHTJ ^ z!4Om5spv?MbNzw$^PWC&TrGa}8Ik)G+8O8j1Kjax+6E^H;@-6Ycai@T>LpV$o+#c` zALf`k_M>w@Ufg!zr(ZxEfhQl>PjSqes665xXKkwC)r$9xB%u<{{UA<}|4JzT-0OO} z Pe6OKx99K_BE=}x0BufwH#I8`QC5(d-xIgPoaJ)@_%dV zq(FDRCH)S7Hp1`376HB$_bNcqU9eBjfRO_^VX%&+oM- zw)!97R{h_?|CdRvZwmwMjo*Ate*A}O@)N`zYDyd8{}lI+5>wm$2)I-6yGdeNySubK z_t#Xm{p6o_dC;!&MCLv4knsP&t*szj^F)!`?)=7n<}*JP*-t_C^SeEyO7`utX$@lT z?^cg)c8Ii6$$tvp#U|wMo3m#W&w1s$R>2$3W&d0?z6~hZw=-e6EDyK1wSjnc2+RNe z0xOP$#%2Axi|i*U`+TqCH(%d;lk{CP9QXU4>w#a9e~%W;|FJC-{-Jn2S4EEV j-+va!g0n~73{U>@x+{69G&+qYhev!zyyNtW>GOE$FYRMnFs-ru% z`lZ>+UkM!QC#p}UJHm+kdok*;-!Xf<;+-CD^;l7M%+DGB_X!j^>p$KziqAd%{BGQr z;=a_1;-RvoJO1ID)SAJsE1qeP2F34tTEweMFE@k}`43P5ygPJM C=9xP2`XLb4zF4`F%!M zk^e*tJKVXCHJjQNn%j8U|<^)BMKE^K`R`lWfV$q}D%B%l`Zu#d(no+y{9C^;70d zFTeFme+Vz~@3)a#{ucCpGHcp RIGJ5$hiAN49Oqns(3c>V2w3ZtcKnhq!$2_nlk?_xX-{kpJziaJKlL)SjjJ>eMm5 zYFDV@c`G+M>nYV|#93A4pYN_cBj^F$;02fs*q0LY_a3kU2&86oY@8K+z`;V_cLo(D zYBL~!=ll3t_dB+0TUL}mrSSmvQF1T%(m&z99p6;2U$21wcCU7~0}gG0MAep*JL0XX z@?Vk+A>iWyfa5G*YVDAIS<(J?&YSEjzwnfh7x=l=Z)961f0h;H4=VrshJ^d=c-HXA zBZvJKw> =ie 7w_LbL&r<+`g9JPX< zd_R%#jE{K#yA|m+8hf;N&Yk3^80G1QbJFCNbJ2C9gs0JfcrO5auM@zp$iEB!;H4|z zOHJ=^cZJJAz ~n7--k0X_!aqgl7eUO;``f|Y p1Wr|Z3GMl?Dg7V(aKC cDpGe z-Ae(=JlA7 @?8H%3^)3X zg=3D2EVDE1C2w@`n{}r@%KIGPC4leK<@(=lnjg|-ySoYK2224;fMiq`6K5hFk&FC0 zNCGEp1HKf`-f_0Wig@0f_pz`1Mm%}WOTnG(&zItwLq(L;D^2e438)sqe@DRgnMjVN zlF}p6rM%Yx+5w*cJAibkHhwdP#6 2pUK=^jikRT2 (lf z{#|~HP!O+eAQIo>f9^TV2DvwR2(aIea>)KZ9u;xj7#86F2m8yWKo?*DFag*EaEwt= z>bAI OXMhLzUVXGx{bh`xg72fg)SAJ4v!eWl`z;gr3LQvs z{GA8z|G78N4WJxze9p1pOF%zhAiz2JNk9R>F(UhrY*n7?JI)G60Yv_jsKwJKN)*p< zH*K#Xb>3kZKn-xV0s9&8T h+BBiTnqw @uu#$Ed}?F9aObtpVH&z8MxG4r0rs-SrPG|wL9KC2_!xuoDrtuyuL zM@Nhz|2}BlyL>L@`~EBI+IxPthkWEd>Sct_Ho?6qzEobbx>?7`*!yd%;?0G=@}Etf zzBzkV9on!`t;f0&?{&7%l{&I*qu;E?UEg)qKOz ZfYdXlFF9 )-7ebi5Xak{GA_Uq6(Uyo_&tqssQV0RF!pz}-o#!+AX)Q)3_a4^J-H4t=U= zZguKqhd4$49mH}xy?fDg#e4NeHO`JZzHFJd%|~}^apXSkqpy7-h@nl~SS-hE+XHBG z!+Vi7jU9q-0?$}Et{5Z#+c}2cHhrYxSuL|V-xuiqIIcJQRJmTV?q-iTE0z57znJSz zo5v9!sm)_Q(sjIP%-@y9=)r2^=)b9rqliI@`|~#t_%>w2hz~T@|7)OH|F8EI&&*vv z{5|#Mr*A3lWn27OC&jZovSm-7-Im?VGk)2~XOqz0_Tl#ew>IFkgTGt-M!aKop67p- zTb?Vzj&nA=vpIka`7M4Kf9z|H?JC0m#|+)p*j{-i3HzdC%bwfl+d=ks4RO|Iyk``k zQpta^99G3}8`0MVP@lwW2eupHya@31hf`X7Fl*n9oORCk>3P3@T=)5VmVB;`@A*od zJ#*R@h4jb$-n{pZ_nmUDF~=6%1G%JMS2g?jht(w9gGO0(rkm>XxS!qND~}ORZ`*a5 z$c!)||5!s$wT{X=Joo$tytk%hqPAeWqg~AN+vsLK^V3SlpQ$h2*`3$ydusCIx8v^a zpD2#0ra#?4P5DJVHR;hGs65OgkZa?=BJ@eEZ}VFf^p|7TV2Od81SXG&B&E8KnB{< z>Orsi;y>c)Ca?N*vqu<_{|wYwy8nl`r~T-T%|Y4${rcMP>((xe9pV`1H&KoOvf(bI zbaP+P@$sCM0O~qZcYbulEApT1@{ey10-Wz_nhL++P5Qszv>n93^X+`AgKKdoDAv>~ zT4t(J`rKy}Kn1$H0P*^cyee^8naZ;6vv&eif7I*aMut<>5#yw2tUe4YKjFBo)Wyf%o_aZ7Y%X z(hz9{+JwY1@mu@p9qyJsAaGl|D#-aop9ZZ{RE@}g;5td)H$w~iv{y%WZl#E%qLSX@ z8??Pd`T*bG2HS-?Q+fhtDLyZKK!El(=DwOXg^A1qgVrY^6!{NOA88q1Vn5G<-fh*P zbt@9pryuv%g4TJe{*kE*fmwbs=jMm&Srb}*U-|(b?QX&&|LsPhmtDW0b&H5Z{(aO# zI^>?`IO((8zY4sM*Q>s{F(_!2r^P?gy&Bl$m9a$jr%R5h)qi^pXIxk8**fW{*G$GS zrR|RrQE9vP3|hGeEb^a0`5)KxyZZZ0{^y-N9ccN?u2(lR=i-A_cUt`;{Tl(!J0`74 zaIW )_o@Bsj|hL|LbN!xa}OYf)TmMe;Va~RO9Q^=f7&I)(+{X_OD#v`+Ug& zmCU)f9zf8l&WL~H;|{?01U3A+DxM=+_{pEu#8&@vUcVRcY$u)#zUJ?J)&5nBf`0GW zCTJz2GDQB9kbl yWip5{U8IMe=-r+UC4 zXJ(Um=K0xs3TCM#Z*(~?_6>}Eu#TGZ+n=koAN^77#a&;gOO7W)n+el2Xk8 *QmfN9^?8??Q6 z`A6Pv1$f>-+7$cJz02n4Ig@Ga>sR_S26 UOdAwiT&O2_^t0%KVJ5T z%(wi rX?@|fzJANObFJ@lWrBjAUMXE1Sm%5+wJkfZPT z;eYx5RSOlrc?x(wQ^N8E^iU^g-6MXH|9~WygLlrS^#m>oTA$hAANl6K(sn?~^MZ&Y zCB^aespCi0@qIh>{d QI1o|6UxM~Knq|CASyEq96+@Flc^_!6Zy|fo%o4$9z1cJobow+ z$<%#$hG7|j?m$ZWg%Dm;m;ufU&jQ*2Nw*(_75N7V<*2xh_YzRIJmoK2(n7g8KgfQd z2oM#Vfu#t-xuL*weQs?4@re8fuY({VxG!cb&>2Weow?OxWwQep{D!C{FazL!nJ9M# z*nV<>jzHSacR-vX{~#evit~2`z#xG2bqjDoWs}YF&M!Es4fF;$Hag$c9uUC)3yzU) z2LjLO1*t#8FY*r(d@8PIZ36h-J_6_ubO9a!>Hs3^K^mWnUvS88iuip)K2Qo&WpxCF zV_SL~cpSI^aA75LR!FZgz&32aajHQlm<{-UMs%>y9%cj1V;QuC*`N)~1}r1d+CnRs z4LBY&XaTc9bC`){7Mj9rK>0Jc4`zcVFcU1JK_i$A8p3Q)A7+C)VP@ZZGf)S(8pvor zoVgmVyfK6GO99s9YrqVE{cmMdXOQU)z*vA~Vf()kkpGLy+dL)b<;(!(1*i+~KOzSh z4lD;Mx?iAt?*f(rqk*@9ZUFzUZUT~?pD$;MB{^ZB(lG$}3ISIFw*VY3v s~8?I~a%?9(54c9R-N%jslc%&k5UvfBPhGZ;-&fRs#3SQ*^J9Abj<*?soCeh{KOo z`-*X|mcTufs(YXK>4yTle-o4cPy=WDX?CxbApXGaXJYezxikJs=3c{@f2(_;lTUa0 zL}vr#9$rV4z&+H*3jY#AKt<9Io1^ZRD^;YeV%&9q%k 3 5N6I;B5?y Om7e&*8!TkS3?Ha_=SH`{8xu(r9=Kn1k zKCydF)GrL?|21k?E0%uq{~dLASeXBRFZTw{@;k!!DdQeneU92jdyH{MbBLxKHq?l5 zM{{(#$5cPWA+CEZ<6h0sULz)apL6aJp^b4r*IKKYE+@vF(iBeroO>i5ZH?sPy2Cl1 zJEM=fM|i1W#os`wqjB6B{M9(_eIRS5{Z%t!cP@T*HO1%LBfOn+hqKE0|JgeeC@HEe z{quJ`j>qG1JWAWPZ42! B|~(n>3CXw$SSjR++oZ7Z#aG%BJZ zDlQa7vF}i9#VWGzOR?`e6h%>0@BiJXimI%vjLgW0_c9|gzjw~9ij0W&;>9oSy PTWm~Qj0{x69Li>z(m)~kr=xwX@4yuj`s>K9|AUBBM+>K!lV z=~XrAP5+nb bg_U$f<^2D d @nUAZohgv^oHzrZ 5|myu3+8iR`*rp3f7(8$f_T?0(GZXO^)nfoyMx0SG8LJV tPqcxUZneci0RGkN^pgKrjhF>&}E-0lO2{4%Qte$K0b~ z3t>B8<*;ljvcB73MX*6IVbTV69qgQ7Zb|lv1W14cNPq-t2|%w-g Kq~g5+DH*AOZ6Ppgj#>7r<_Xb%2R3O@?iPW!tek zRyl2DJ(ipg>jY~CJH!0e=MqSO1W14cvVj0J dXAFyViLzY$woUGDwN35;5$h3QZ(-QB zw=ry++*4|s#I9Jc2 VG0{3Ep(-f0Q5dXXX7+wH-1SZ$%mcz H;PZ4 zmiZA>e+{wT*TY!CMS%KW-<3Hg!w4WGFM!Fpe7XN-J&c6}OcB_JhI_*<&9E?vyE<53 z>c1(EGS@EkKdx7EVi*Y^T+W2Gg!O@~gt3r7Ita);)-7Nsg)xqj=`+@m`kxLD^S4au ze=<(ac>_rRA tOQSF3;%$0!!ct6r+do{AkAQ2VkA3|ABYEdL5+xr(U|aM2`gEy`uS& zXXL#878nZ&gpq*k2gv;>8FO6#>q7kxpC?lPJ!%oFrG@}PssZd8m>lO*^8tY+V+bt9 zn%tV2NHV(=tOxZ!d~QkoHyajg-3I}LQy19!@P!q7Oae&}7>T(<{cb_@pZcHFCJ)5S z)PEoP#H!{9AUaNl@jkvlqzQH+1q9^%lHFjZnu{uPEu-Jm{}ech=0#Bd&4mP8_CWxC zez9g>XLBSF1_G ssCw-7A`aq0l29=H_bu<*+@X%Cn)#0 zo}MU9f-)U_rT&M{Q>p(!2_W{P4grMH^Wh7p%;<5&i857o_@FA;vt1qDvR)lnyHxF2 zHec;tRHSzPFjZ}zJyC6)F-C1J9IiG^9HKVDipPI%{ogcssM><@Tc?jw+h&fn=H2z< z47GRp59+}B8U(4QO|V)qZ6;U%Q;ZW7cB&HFW|bpg+)0>VJZb8NkWZ|A59*ws#A$ z@=*ZeB@|t%tgN*3RkVB0vUzG-(O9)%^dPnJn-A3DkGrWK{{DiR-R%iA{pH`O$ FoKFIPiSso|;GSCHjke_`ak zm#HbwHCJ=qd`2z(?61~-&F;ms)$v37&BIUc62@Zj=L9rd XuT|S;O;Bs{K2|^W?gVZBy_(SW1~u%Ci&Ar3o=Q#ExU3O(|4L2$ z^WEyl_dBX}!v?6mD;D6K!ErBnF{pJmp<`DCF*TrH)c>G*jdQ=K|3M6 _U%@3U0lv_FX;7(n)c#-YV?Cws=OP1LXFqBPcY=hbJfHrnp)R9 VNp0iuxb4Kw^L7T;f&X3#HgSmiy@BzPUB|{nZaWpI1} K*kzFcHL# z*aYCHtztQAkjKd}<>4(G)aEI})RIr$R5LoZQlsww4Ugs1to3g84~DnAM9uB-tlB)e zKpj7PAjobO-8Z>MHW2p(q8~=|fA^wUYS+Rd*i7qunVd7*wP3p1xnLTeMG>2-cFv!w zcFZe;O;J1MPPT0OoJq MONg4CkRN8!=F=8}Wr&HynoRRqKX*uGSTNuGSWOW}O$5bAxMf z+^{D96YGAT=#8)8H}&5Z9sUmt0r+*U2H!T;gd8u*d1Q(8g&(}C3ftdd-8=6_YdBAe zo-OdW-;sC2IXFkt!n*gOWcPMsKBTeXZ_!rTzbA-37}5X1*PqROX!vr`tB+`OnVP1k z|AA3GcElzC?;KR)p#c~;x^s(l9I*JqT _-PV%U)q1yk+X=v@+$#Gce{@nra zM8_@+$CR}017P{oe}geW{kPSD|1+Hca>;zhOlNq4+%GQA%&+>cubS2657zT$q0%ga zIVhVs$TO9*x;|!|XAbE70`d)^wCw|6+0=i7u}A&Sbk*bf2?690u|u$wloQ8Ftm}wN zKYI(u_IIlMX6NzP-e4ZfgnbBkPGjZQ@8g{VfxA~AA3<|+Ix-2COZ_((H`M=hcr}-q zY68e3=b04#it-a`&yqQ6*?_mLd+{^&T{#AGQ6^}(j&&G%>ji3IpUz6I4+W@vg}$Wx zo Aa-|oy#t<})mc P&9IRDfFJ(;q6)}!1MO3p z8mRwfe9Deh9{;D(o4KrX5kMa4nMli%oqqh_K3>x|cx+ c43>WBVCQ06F9on4GuNT9)*CgZghUH*p^#@jgVs z?H8(z6Z5qCbrOxqf{kVlv`_sv7-KyCH|oA@JOBicLoP`or@5ZB=(R_w{|0jt^*^!x z+l*$v-d2?zP1)-$B4gw^lOc`;QU49b81>(z_p 5b-B0Oc1khh6{g}GZBzdZ#u)YAl;^VDpb$U~dC_e$b332Bt91z9 z>Bs#agSpwuevf=ZV$1YVZrxbde2dZ0sV3qb?Na{@`WW@!gx9joAQ3 8C5v+3g(J zzKPmrFfV!0KGvx|PmpsqzBBO;+f`Hb-^jax(0S^=!8oJ-2T7^e7ZU`KLke{#LHQmy z^~T+KX>v*rCwYf(3co2-ju^W}cl=WS&H4`YU$@7yy`T|54%wz#|JMxZNBuW=T*7?@ zJ$Zlj>rbeP6DM@Lzf*flF+uCM0?{6i{|&|&^*?B8#s26dfc$ZWQ?l|ienGESsQ(7@ z67^q?{tHL>-gFB00Xk`pU+TZXIHUgS^j5YNGy>50tNiG^Q{8DV+)Mp8n3t&k`t)B| z7IkTZeE{vRz=#zdM=-Lnt~`LYsQ(7zjQX$3Q`t@s2_S#8ij}1NjvMvB71V!&d5QY3 zSO10QobFGn%F0T=uJ5LPo~~Sgg;D mD~34f;+CXoLE1FxII5zFm|J1egHw$9&z1ZFAvp>c7F9Wa||F zo7oS@yWt$Qdr^_@u!z;(eST8|8m0alj5X@NUk_#dpb|jtXaLjxQuGyHzDxZ#n3Jgc zW^_N2>xjF5rH<|05lgdmj+5sBPx6x=P@np5FxII5e!P=)gG>Oq<2;?o%x-ILk7ud> z26IxRPI1`WzCdC7J5*)4ytc<^dC*UeK+mZE24ju-@5eh?H^>B#JDQrvY?Gh4h5BzW zCsFgwX?`@@mEZI>5h9Uo%C`YLrwP=h{u_)n>c3~#WW|6JK<;=tG7;$-9@gStss9FZ zQnW_#x4Hd+A M{6&g ;2SV60L9y?Q3=1)TtL$Gc7m$?N#i1AD3c z2J;cM-kjDuv7Pi(Gkhn&=yia}UULQY->g4S|Gj!9>jj+va>q!oI`33(&yqRRf9ik6 z`M|p21Dsr5*Z9l4 q=gBI~zt1%DCL`bX>^sW{ vGbo?Io=x?e22J;d1*;$`c z!RCja&+7;ir#2=gn>)}D_1|E;QU8 ~RLIwc{m<0~sFlsqq$iag9^q*n*C zmH&{YKgBtKO -j3srXbpqr5JGS7@;atIbc{WlnM)c<6>k@JRy0P@B*FUcuhoi%y=sQ(6YQMT%B z5Z8OvcYWi9f}d$}4d7h2c?9!P{|&|*_1~>0a=x$-K+ZVRPl9r)yWqW-ss9FZQ4n=7 zTl+Nn!7K4jzzU~O@H@V(+gySLQU49b9QEI=Cvv{95J1kj+HZo2Re##^_fY>0=AvxX z+MurYj``Xzq1j=T?>3j90`=cu%u)Z{dLriw3jySe)^?)N`G3^?zoGsc%tb-f!EEi< zobE waTL+m^=@(s=BNG}j5+GR8!zNMVIqK>@ohw&(K2{o?J{b=!8{aH4b1j_ zZ5T61OZ>!Wq?? )+Mr zhyF`Vcq~Uvd9Jyd{?Y?#X6HxL?AP0>xjmj$@{ai*-|wgv_3f&b_J7l|#UJLXg&%ZM z3*LQE&3*G3HKXH0R^4%rT&oIhzmV)*us5}@vUSF2t+5o**ma3=3+AQ%8{GEP|3n_h z>0u&(e9<%_zi1nr^z_YHr$GhHf2qc{{vTENr#mg}{;~I8)Up9@t2IMDQ5z@ZDS02_ z-W3bfk*yo7Z^u`b%d1_?loKUK)WPCaYTK;wYUQBbO72Y`|Jd~^ugOocZo8P$d8c;g zzw>7^8x`N^NR(T!VCp~hKarboItf?=kS~lpv^4DYf6W}7!E+2F?*5gU^wdqN=(RR# zVV}-w_4gmD&4t6&o@MjYk?k8*`SD|>a=zAf<^J^TvnSx(!K>Ce2PX~Vc< FM9iP9DpO8qyu z{dxXBkq2^mm 3|~c=-j>ssGgfcrLHo0pyBPU}d@!)#8s|PpNi{df*CG)cH}h{EMDy>x?nD9=|E; zkLUevQ@N+1u)|#`-Hu_^`dIy*{LC$WH-S_AC!OM1#-kGTpZXuqML3NFECR?CmpUaG zKjUY<`iL>zkmuxPb$v{&{JNLgF>i`GesHg!uCi_%0+kizYDvF0jBU$Ux|u2C $raV+)2>-eI~lg zHWLt7H+%rT< zENQLCZ+4!V{A_c) J-P6JEIVI)S8z<)ZAnsUoWxVu-TGW5) ze>@lAG!n1~AXoHv%rYJ)9NAjzDo2jG|8h0E+Y@R{UO(%dI29+f--h6E4Oq>Iz^ZRP zaJ6mS92;lDJj*_N%L%2Q@ujGIl2Z!9H0nR~-^o2Vo&;(LAXiNDlZax~-9BexeT~4m z cl{u}g1KK~!( zaQqos0>~9Rbmynlc^_Nvn4S1UQ?=+Huc>V_$ExFp59nSD+e;IH^5dn}zFe4fIaPh1 z_~ebIw$jy3Ne2t0{!{;*+=Jsuz#@P=ai)pnB+uTJ9p-cPCfEk0%>(O}tGuQ^<#~Vv zI#Y04V}%D%O>DM%oYEK;M*UB)UHt6-@%Z1#^Ef_C1du1LHj$XvW_A!*{BbwxzYCo? zerUf5hiK=NYp^itzl-hSbsvEG@8o$LA0`6G6Rk}oCbpR!1mqkKzZsDD8$k!wEi>T| zxlXwT3#0yrPyglSXL%31n0!21Y;1&$$FOY^F>Kpp4BJ+SVcX=sF0mOAR)pb5lW8)) z)R$!yz`lhIfc1gB4eJ7H4|@c5C+s@dC9sAt$9qtne3RpYLjc>a8;penJQGOudmg Fbn9u&nD1EDz^;&gS_Z>{l2%{x`A7Ot&ffEb@@{eAsZ9>@#$PwSrv( zI~V5UrW~JU0@yaPug5|Ho(UY@x`CRI;8?SGtdTHt{0=ZSCiOqTHu1ARNc~SLT^z#P zvVSlLCg&3FgULH*PfoM^W&Pr@4Hm#yNWd3?NzdHOeSkQ6v+7$pEYe=aIwdeHiTWRB zd-&0QsZ0IW;>#syWiG5A>}lAQuv46Tn&b5n0PB-rM_?=@;ETYDuX<7c 6=rT)j+9@PIB-W1GHa(}^WnCuTUf${u+Q_v?l9xR)|Sb|HS z6kXc`+Xh}J@tu*+bLVGUuP_H$9M0qiW;<*@r;xiDGoKA6!m?$O`!9Dsx7%<9s{1p7TsQI3UC z{~fl4j(tX6|2N^zNw+EI2ILt?xp&|kr&!?l*aW~#bcn?}fnBI7$KJ9(+8g#FO!T}7 z>=M|Su-NcZJQn>p87Aj@@?b{F^p}4}{ddru8Lx<2XfKDH+z3me{yS_7>c4hB3_^pl zFCfP`5@@G7#RbRL5&);sFcxP5a_qhwHXJ7VO3%TX!!CxMR!cHmL+E>JnD#RFug_8c z9W-a!3-@a0jRs4dJP*^T{|?)N`ftJ&1J&jp^hWaaWlr(I@eSlW@!CLbwe)pHj^pK8 zdOuhP*sZX}u#A1T71mArw*T?{j?{k#%_;oToj|U?IOQ=ciTdxbEvWzc{V>2S7NTzt z!1%6#h-3jCr@+c#*;M3selDy(tUXN5(`V&%BdoV@&|2gfHyyb(6Wb_ke}`7qc4HAC zU1t!}ssGe}+fDet>K?4;0fNsHB2$3Fr5WxNat>%b>@ApF6O#4iK47& ^6*0Sis zuGD`A&6)DY7Ft S>a4A*9h z+gs84v9Rv2dti-W*|=E~t~0ot3hM@w`(?D21@FE@{ddruDTa>!u>oUlbBw3{J8TQ; zzt*r1Yh#DdanXx2V+K%$kHmVv9MTOZ+fA<3_k_uD{e`d$-&+1x4~))&$-NE5Fe7F5 z>rYVs9W=+#_5X4w&%g$z{yS_7>c5fj4{M`xK0vfEtDYIa`pPx%pclD6VL9wG*psl! zVLXTLl=P# U>2s$(wCg-Q+9{jAnM&rf*!0de3BQVkY1F)2p5qJNJ`tP7Q zQ~!LoiS5AW{~UOm-iPG%e-rK;h&Bt+i;RD65bL-j0JL|Z5Bad?VOPU=Y@dYagI5Ds zV_0k0M=&{8l9qCG=T>Te94(sm!hI&TONo=aU|~G|kF!1e?jKP9O}KMl+LU{vdcZRB zngG`8%rub}z0ZR^2fGZGvCr2# DFi+oO zaf;7$j>o#l`C=1ASj~sYa}|<*GKQJy?FCkHF8>nPW3c`(IhQXy17FGxA5{6x&ZGXv z(VKaAH?o1U+Q~1mEb4!p?LqxF;EkExr0CkkPVp9|@mLShXI*6<8j^d>+Q7~Y6Nhy6 z6|7E$NsjIa8xE6eBcUv-2Y*cMPoOmm-h0`^wq5At!&n&gKfyNfvkx%g@f@{o*Z|n) zYF)wSYHh)1YVFWZtF6CUlMfs639O%5lPC7ET0QuqD*OIJwfg(MYSnjQ|4^&G?W0zG z(?_lR<^#2IP;c1#YUS7Os}*1OQY*d^drz(S@?Euj;NPq4i=Jxv7w@QL1H|4|%Rc{` zTK1XPTWaZNe^pCAh4t?NdsE3fIhTCWT`lSNhGmOC?xq%h^g1lp8ZYxn8!Nti&szR! z^i9^Kc-(ht%d}By$NWOIciB93aQzBZvU|I#C_8S#kHgZYoX>9M6mwx2k9Cl1$9_sN zD))vpgYg*O#fAr`b7A+udculerLfSK^5e(U$a^oN{wL5H$-@T93@6vavZ((FwuvA8 z&*r)Xw>4H{9=b|Rdgc~2^Dhr8*|(MbmQ9oL)t)7DRmrYxs @~(tAr5%n30q{8qCigo$4I2ns3(Lr|9LFHpoD1EqyBy;gC?lN$4$Gqc zQ~%QzoB21NuO>X+M9uE@gms=`^W*|`Xya;CS&=dO1=A2?q5F0W`YhVy_CB(?m{-nE zXT)_6r(EfGJouarlXD?mU}IqiU>RQyZdj>?H2YcFa*SK;4Z?iuM}1|&9|k)4E*3`p zr~U^nHizDNftu33g<9CBv)VXeusX7RlZm)URhx1i{Boxl4B~k7_kuWZ Ud&m(<6g=ek{!*Bn11W%I#kqW}r|Tm3 z7pFr*!@NwnC(1y1I>L493}RW-f9ike<8 wQ&VW4t8vx7t<9jf0Eb=^3m~}WUeQ(lGRg|A_Wa?wWolZf6HmU#A z|BQ;&g66+e^WOTS+KFcp1AHH02d9|i_}~yge!LLY0X7j9=p9S+FYTqWqFgQd$7>mt zPg1onF!H|3O>MucoFWPfr2bR?Gd5mFKlESLI}(oV+hr=Y{Itt`0H?&1#_`yoqWSV7 zmbrd5Zno7ux?_{#w|&p@oJ$M;WaQhw;)agz+rl*JKlR_U&!%eM*za VH J>0Mmk8GK zTz(JO4j4 (#kWo%uQx;)36r*if^G*Cb@N7%^vq2W3)j1r~Wgpt9@Y9 z{g+$s5O5V)W@eJ-%uY^D d`=$_k|`%jjv@v|Dft%tusi;ZxgiDm zFztnVli5Vc%zJBeY()M>L)8BiY+vp-o7rzR#kJ_QHmdZ%-elrT=e%!6#wdr~6Tn8W zb$^@A4U)-i$vbEEF8{&$ez-h?Hsr>0srf0^1bJ7Yp>kfl=)p3n|0&+qrZkJ~>fOf} zardQa` 6WZRO@^1JE^*%s3Kd;G8)bYbcJ|8hTM!3`&g}9*p z2gn!nYFChTHC%n0+My+`2kc3;j1*ykyceKO#;W}RHs{0gQ@v4wygb=Y-M4a~T9emL z&CY#XjlA#I)cSzu_eoFPWXh%9t&Nu0Ls&5NKj8kseS%=@D~x*J3blXjQd6<&)UM;V zJ7Y(5=8pxalVQ)p * zA@djR52SB@py0N~seX5$yqC`L`yH9D_I1|~EG~lu;-yXKM@ox4A9i@lI#oR88#Vu( zKdW(%{#FgnIh%SP^8CH)#~G&lsBzusss9TLrv8WAf4D!8+Wmnc&Cau)k1`dsG1`@9 z*H5V*z1cGc>o52B$v1iAU5Qyy%8!?-Jxk`OmEU}zX1@A+HT j)19H#K#tC_;)S=vj!JMHp0P+PeV+Tp8+=%g(Rl0At+Jfiq z7k$`OO>TD^p2PbY^*+OM^PKKa$8!lk)AHP;11y00pW!~n{Q)!k1F{dWc}jtw7)_?G ze8(&6-Vcm*ZUNhq45%>7TUk+|4z6FJ)(!tc&F%558q?~(sr6Zyhqp`}Vai?GQUA^4 zed;N>+CCuf4c; -fODzqL2z-iK zI)2H0faLc93Yz~?9l-hA6qI5t<1|;n9m1KgZkNF1J4m4_<)tNfSL8&ssBag%W2Xu3 z%Wue-VqT5w1G^T=>phH={%%7bOQ-(RPviP2_XphV56HKJN_KBI63|hNc5)lvVVV!? z*c2x3Jq$%Tx?_`CJM>dE{gnq*{!Kq;3^9+o_JMJaUTf-me-b+_+{QiTrT)`zUHdKf z1>)}uOn&ATRZ(`_w0_CULeFs<<6)Q&>vIn*@Xz)g-n`EGPR_(9nlfgXH$D5n+Wh{e za)i7S>r}Tfk9n#8^kdI{%>9A-`vVJly<#f1BirreHpYWKA6BX@Ox|-8$Z~A&PPO{G zzG}kbIIquKK?Xj3VAvfODftGIq2lVfKRYL&57d93+mkt=z6NGHlN7ugK#rBqx8pdh z|FI734CO&z&B{Aj tR!`RFnU4#r+;hp?`+q8S^uH8 zHBv{m%Wb$uOP{dnzVsVpo`ePJ`98USW7%haQzP&F55@%ZqIMrBxc!&v_@Vu#l7iej z F3)0ocjQ0S>I!k_q-S^at`3!Fzy4O-)&%l(f$MLmRaxN8PfEpj0NUH zV?MBQP;Z0jKz)>KE |OqYn*P!Q^m{{o&;5z|`x9Gdj4|o+i_v(}VU0S}f5rgwpg|v) z)%7uxaW8GRPdf0^PyzisAGSq0oUU?s%X&4d%OB|P2K}AdUtjxYzWRu1mw(brNTXBK zf5rmyp Sq}0{FN68dvFXanO0{wP z_i9ATUvVFoc`hwJVEDYh_`c_RfKZqE&$viST!cZlb@tKlI{}h}rx+_gV)z<{n8> zsV+x%Y*y1=xR<`o{FXK!kaJFki#!8#o{!k1{xd$(79TqGHRx@PX?2yVIB~*MI*<>E zHuRbYOw~i5&V}tVwbC)$#WDZ-kzcBzw>F|*Gq +au%QD50{YvO;P?gPXM$~%6Bn^;k&Hp`A2QnPd0(w~{r(&_`FAG}hP?%VC; zrn<( 7{wSEV)Y zGj7bpO_;dK`~44XTAK>L_jT+q@s3XN_@DdA%$X_lfo-$Ko6HRt>DF;C?O_Gaf~D-d zzcA(berj*J_Y;QRdV$)rY@W&Zw%b000pIWbL>tuq6z2YP`zM#5{v27@;VwIdP5kfZ zMXz<&!HV@Wv2wB6TsM4x8r-BI_hFgG(&_{GH=nO|FPat0MNN#$)e*Dk81 sOe_3DRcTuK}PB*T7QpZvPcu^`h@Gf2G|A3Ys@grS{7^w6whQ6YWs{89!-{ zpKRL)SolFFgr1Qix|_D|0%O^7O|i(xnng9bd|*%dEpu1eePBe(OVs`~OQO8f=+C6S z@f+_v0eVUOXAGr1hO$ln crHpz-pA+i6&vlsxOd>bt)5S>~;@`@s0e zu2)BQ82`?9WRe(*A8x}j;e2R|`p-B@dmLq({>%Dqnv@?I*E)v_5(d738L$E;! x zsS5ujc9->S_^BOQs;PgzyUL!wM@ ~3OD zsyS~wrDkEgv?G0#chyS2vr&^%xz4g34HdaJ_+$eTAGb*?)A)yub}gK#hTM2AebZph zN@Wa$aalu}{Y `?1Qd|{od;4@eL zpCy!iD?_D=XEFCs5$o`vq4ltuEiWro6Q62E?KhaKGF7v6tXE#spQ>e_{|)c+Ei>un zPHoHg{VwnjmI o@1y?P8j@}Wb+ zk00Ep7X9NjCHu(PoF}}jyIe~=aZGOO(O!=tC}i$V+ZwovM9< z5qDo|9ka-}rhpWAp-@WR;fdu?{|&}hw(7sc(UEN%)!5%(!~E^Sze@02g@Lj 2JEQ|W@B0qbL zt!&nRaq80jyRG*LdF7Wa^|nkMF1U0TIWKSQ93tAjS$Bu+_IAuKr1l%kOW6`v(d(Jt z>^wF1&1cl^#k13WU!U#jk^e>euZXADx~E}z)PI9 l%N@KlT@Yl6UqUKe*qN%ld6swEs#wwo>&U z%cTArj5F$gRahL_xLOUp^#bN}2Va}?%q@QNhg1D_CUOZDb{b5cG1Ok<9lzAG_ &a*`Obxo*kc=sH8PVJ ykWnEZ$ei?ZWAiDOMp6=Cc<;d1z zzU#+eKFYMX8U5gYsrm18P+O*s2+DJNbsakXuLYQVZZdkUdtNM``fo7asQ+~XK)xR^ z^tMLa2Z-TwhQ0^9$w1DK@BHqnyJhwKlJ`kxnnrPb^qq$ogJ)&u{q;F~lk8h{bmwM0 zPM4lm^03&`b;oA1?V%6U{}{PgSIkoX>j#&dpVP%RliFF*?~VGf{Ev}m08UFbFT|T4 z?Op4?TlHIz>mPh)gg&hddu$B7 (wBVFU2Q8Gr%Dg(t?xA98zb@91!nZUe(~Zr zavJ(U{ipt?G>XcPm#R_s|AzYjQGPe0V=GhJLF@Cx=%nN??PdF%N%V;*p9s5#C)58i zt*)}3&0AaW8NNHdL{*lHRAy9>@A$Qh)ZcUuqd(MtgE7bB|Jd=nZrJC{^-+E&?@BUM zn(NFn=wqRYe#%$>;^=4ez;vd^xuN)16Ard2O9J7Vim>$KNu#%*NU^))|L7+CrbG z|515ZXI`QH$Bt<^2Qa+lCCv8`z9-KBR8~~P2Ig<9wr2p*4SDXb)L(b%*Ou?9^E=Yv z)$>F-bIe2krRH>h+Ij|m|LVo2o^`43Sm_@lCoy`$Qt~a%WcLZsFY13p4o>99$xf&K zI|tyh&)%Z`NBQ2-okm`#+auY$;50wBW>e=a>V3+Nd3@hrvbiOw^XK1uzV#g5;*Yzj ztuw}0?*R4g8KJJZ7QHw2{w=2%O=i6G&jjJY*YkVb5}(w6XYUfN8=TXS`v4L90K0yi z;S9|ClmW@)gn09!3mv_8!@1^yUa!y(BK#nz+8(Q4@@~&LZ#<>e=J!|oRxQe=V|you zmSg_Du(aRbA1{_=8v026HyC#Y_5T32oo#YoiI`kOvrV4QvQ0iNW1GBdN=yzkZIfv- zZwV}=rLe mCi*~x4+KHy?LLhD-G8dt-JVoyhJ2#- zt^83{oG|i^O0E8srpDx0?0MM9I$|wVZJ@u@e}l0XCjF1)bMTMrU`t^}ihLv3&Ncjh zmRk5hClj2tyaNawJKsd-HjMg;K435hxs5Bi|8(-Rx2Z)RcD1hCAKSar#OBVlHp{R= zAHmZ49=}+*+s!!ioBD4s_QJ0J;zRHeIVZ3lW~9h5hT9yK>GREgy{!qxC2n#-qIuA< zTTOJ1&;6z6zW*UNo@<@UU-tRiYWJd9s=Q45V;v^kB}i?`wXjPP#Z8c>qyN-@>VHBP zg`ZpnlYL$7WzHK f*G(L)PIAqmkG!Jwj0A&`j`mBRp0ex{;&4I@qhR~ z6NshF^X%>D^*`DesJnB=5ANf(H<*7!`{kX=3wphbWBejh@0ZZ+7C~%J?&;5mUFkJ` zf>;mhL;W`xe;KC#7n=yo9rO9@w|$Hz*Fp>x-{&dOulc(Bwte c5HnlXJG3_QJht z^ORw@XV1uKJKe4j)b^h@3w zla1S1`#R%zU+$xk=V@3x6Oi|x41zU*`3aZM)Wv#I|Ed43{T2Sw0;au;#{0pw=R||s z)ns2Q%8qO2iw19Xy^&+gi2B!<=#<>=V3K7vv_0vmX4ZT6Ol+SlXj881PlG)PJ1d6k zXY?qnGxgt~PGsQm{{`?F?Pbby&8Y*`epq%yE;(v1clt?W=uIo#J(BZ2`8S=%?d~!E z47u@VYSp)WGVwdPx?L?+dvY&JCs<=YaS`^qSbyrj$M|z|Y>|QbFV}&!KPWu&)!$PG zs{K&zi8oLl@RO_1pO hXT&|1s=X_Wzn)X~CQoO3a-3fTlV?~j^b-r2 zR2M9${~lv78}(m&A3h`B4bWQV_IQ?BQ0<4u_Q|Ihw3k+X@)mm2OLvcUEu6`1?jiTc zw{(we-=uqUWMX^rEfl$)-x_v~AOBBhUG)7F*nO~;y8D4PssA2g(2e%XJehX J$OLlM9%C@?()_!sa+W1~~r#6fk#BH8r?iqFeZ 1a>x z- u@sc9@tozT(gKQkLm6s8mImz5rfHSe+KKn+&iPSEb7~ZT3}ZH+xW>H*x0MJ zZg4cVpw}zh=5BKjp6}Z>Yl7}g5T^D-3+23HKbU+Z;}Y0OetbGeb+ImuVclW&u|5Xt zmHTw}8B3u4yNy8)^JVDy|Hbt@)8~jE-|t8*sP?at-SJX@XV8An|I4wK)>8D^quk~$ zbBcVEFUyMD1S`kDU0^rEGVVP*SSLBwZwVU>i$2!JsCwmQ>VJB^m6hyqzde73>i^1m zp6PSM{CECLEvVLlpxyt6O?wi|O@2zs3#R =K zk7dZQ{iU#sIku11Y^>V_ux_v|uw=?L(QWztjfM00-$e}CdY l6<_5`({ z+7C+)?oB2qxSiMY^M6>tS#B4S%zS+JkGo@;?Q McpJ6@=C}C% zhG&faQU4RfV6w;jk@IKT@jo0`;#Yf_(DnvuLA4*2mmbs37Y%xT|1auZZlXg&Z*9bF zo*?&Znl#h|dXsI+vHf_MoZpsX`)qutuAJYO_hspRLDT8c`tA2O`bhmx5QC9=p6qZ2 z>i;9~8SO>BQJyT@Oq^f7-=-=nwev-TO}yp`)V;<;hw_^Igxfq$?kTvfu_`}qWM5F% z=CqIPKSP60!m{evJ~E!L?sEVB^RO8(ujlts)v=UeO5`H745Llzf1DWft1%g<{}St3 zOL=LD8jR b)fCGyz5Ir^4$ z$M&}9V%;0Su7Guh&4-yTd+cTF{Etpk|Ed43TnfH&5=_T+tU9rBVC^z$LA4Lc``rwc zOI>Z`7&D }i->1In7~_A$ah^!{{M3s_&+ zCRi%V`dEGPI}R&A{Z9~we)jP*>G&VMBG2J!FPkRiQwyqnaNMK6)y}uNLC^ONp}xG2 zOlv9Kznj}ULEbU+9>{pxQJ%T~7S;yV*sr#Py*?Po@s1qh%eDN8uu@pM%0d%7u`<;E z1aV0Hx8C_L`@fS-IRE00yHN|OeQ?Tix0^sLZJy>ef1vJtx;u4j?@n&>IC;n5b)e`? zDVpCOCj0iGeqX*<|F-L4{Uyg;1e1FiWIsszxlXj{wG`U@)cGHsq5j8-LqFOtbu;Do zAATa|0F9Kw4tG%ts(o-)7diCOUgWsNbJ{@N2XyzSWX}$6^Ei2D;*&S(MjqYXY>a3P z^Soc^*`Web5$i5`e=)2rY#=Pv=k&2i*JZc~Y*;$=KTaG{|E**HCh!v@=e{cNUbFmL zenBm$_Q3_c w|o!FKw0X?4}x45tj>VR zdCC`Ia%{gImPw_D3H|^iIbVAjd_AA%mUuR#|Jt`#IvT93s8A#C`!)4HLjQNnoor%L z4D^#b&>`*T|4aAp;dYPM?vdIr!;AWMHQ@(~{rEu;>H^A1FgcEC3F`vOgRO=cKUTpq z(pfs1;Exre{>O>K=(tSwH}&5+WOmG*LJf%Wy~A79I|K7R#n-U|7OVaKzvGAYbK6I4 z`^en#Lr-~?oc1Eu{!Pe;_BPSa(_wN>QuaMX=Lf+Sz`}eEAKmv{+G&T32GJYpf1Egs zj7cxU)PHAxpV_H3H6X(G om18ZfrR)gb{}V5t%;|3I-G6et zd>t%p@A8pl!_I+S32On9XN%-Mqi vhSdKE-y8j)q(dX6g;V^y8IK;xJycrDiDP)@bHuuHxbC-rr@eTeR^Blh z+ktViFCfR(_rS#YM3Y_b7s$LYIZl`RkS>8;4QmRM{l&I0xryOz*k`ceup*e8gD8cu zBuBtk3_Ha+x S})EKG4|TU!#?G5{=1q^aHR>u(hz|u$3^m#xB||`wcR^1eWR7+_8#*Dc8G+)nw eJ*N>k=o7N~f*X@^Wrq!2cAq VKRV^t%s0{jVEr+h&bt&Uf&)eXADM zg{9|LVXU}MW*oY4zMihsZDrge|4UzR@CC^`%Lcqt7Z`tKGXW#tS_V++f1DVk{_6|5 zvLgriyuX95Uep(SAC z+f1NA{ddU8I&uq-|EuGzvQo|N_5}02gRhPM!~dB|OunA|ll=j7OicSd+eNRnp+7kI zgPnU0ZIs*YShAeJky!iXI>v!3^*=!j+Og>6KlQ&Va#s)jh`BzFpBZ}Ji@ ACJQ2!Iepcmb@>rnrd+FUrC&-y3u zvEs4v>JuYH%XLHaOy0ewwXFEM7xh1ZU*zBPb9HR*POaS8Sm+2WkEh{&rhx?YKS2!I zTJGh4w(GxWe_m5Q>zBxP488Yvy`S6=Sr>U?wC=3AaY7#T-$m}3+v8c?=-FPl2+WR* zMV-UIK>c?SgNgFD)AVfC|26ras64*oFQLYbxcgF7iTfiAl<#%r3iPeN?*8pv{zF1G zPH~lO Zo?=t?V|IUtEe*BnP_Ssu%$c;Z^K2OG 7`Q%MC`I%c>y|aAB+{yYn zP}|bGZsRoB`LGD;e-iPR>^?xIAOBaDm#gA&->Fd#T){lgZZ}+NNTk!5n^qVC8M!ucJeE|L5Sa$TVlKU){^y{wVT#I~zA=!MtXPJ?AHg|~^ zn|`K&BK1GX_)EqoGFAUe_wQD#zwfI?Klq 6_6CTe|2RF#4d07$>kaPKamd;gc@;+8_4Q15*mmBfBlHJ=9b;Zl{ z$Ltu?{U4p7{(Fo+H@Xxy{jb0`M@x2ZSMqF@+{?23i+5DfYmcgt_g-csUfeLu)OjX9 zdz+VB;HHior)#_RZ|5Ae`IVc6Co@mQi83{$8SfeK>f^$0+2?=5w m&eT!@@ovh0bbYT^?&DEY3( zgtkrKmtr|;0`8ZWd* Hx%EBm`6@B4L?LCZ(p^B-!&J(uDe ztYW`X!|u39<=^~sYP>;Th|ckA^0hxwZ>PY~y7PpzhsIyF7ohY1 s{L!1TG#5A lPsc+@ct{iXhEiaqLEt-g^( zd=_)wc*;L5`P? z y}&h-me=rKrQ~bo0^sTxSI6TO=|dE7l+0- iUiTQva#{p^33f z$<30J4V8tuazm_k(C78K`z`medwJF>Q+y#6>mm2+$~DM&e|=7^`nHdC&RpKrRd)D* z*3DU2QK95LIdWgC9JBBIVVZT^z82TImJN7Y{n+ajOWWo7I=NPvkMm%uSpQTk!{9f( z&y5v}I>uq+Q~#;|854u4h;zTokb5}{T_==WZtPiM$v0?!kSs)ZnfAiH^uaXcp`o|@ z!qQ^7FKKFrma3@pBWg~!C#`*jAA0^-EqL!G>pr@ Bp@ zF}mEBH1gj6!1?$_YA~K@@f#mutv}_t+jWP9-QH q}iKWD$=pW9Ew zXZ?tQc3hkIe`%~Z*EJ3uZfBy?@?2>mZk+DV@5s+AzZtJQXd*Pq(5SBPt=A6Prv6j^ znR`>@19E?syervIF?#M_k_Y;Ixrx5ZbJN*;>_}}ktIet4I~(Ur43s_fL|fws^q2ad zqTHVfALKHEoky18{$+!uqsG(_vnljl-UGPH#5zoR`eyEjG8cu`2Y&ebizdQiZOlN_ zG!h-A{xjx68*^dW-x-GIgXEjHhKiggJYQ2 kbA_!v_09^VDD?EdiyN? z_;nLuu^?_R`kaUkQ~#;|%)2S@0eMG>!D8f{Ke5sa*5NS|>v8 AEz%G_Qh<` z<5aKb+M!0?=Q%u4Jo=fAIHvwH-k5U@`+&UH#9-Nkwomqx2a>Ie<;^#-K71Dt +c zw{ 6lg(P8Sp;oPswzt~PVbECYg)bRJ(J0}zKI_5>*$TgAd F$N!AA(8Zc@-PYt2^8Pf#rLW2S z5U*{lmywUp%eUHx-x;3wzK6vZ*-x{_di&QbF%jx7$BRL~)6ik+zouNz_%a(`VdFdM zcURzD=!Z?@1iMXn=FiBte%$00EW3-{5#9e+4(iQ)Qs$*l`M{BF#k#{l+I!kfEP9;> z?Nk35XQ7I-Q0xcby#KBrXPC$bk!>2iHz-j~K}Rl%?2OJ~c~(N+l^BX`&HTab1Rs#^ z7#b+862+mP>F6)@pYhB1)$9X{`Wiblwo{B8`y2Z%sN0-^J{a4{S^a%q`lV*S