From 3b68914b7385a346b5ebf5ae06d134a1fa0b07c5 Mon Sep 17 00:00:00 2001 From: peaklabs-dev <122374094+peaklabs-dev@users.noreply.github.com> Date: Thu, 29 Jan 2026 22:24:52 +0100 Subject: [PATCH 01/29] build: upgrade postgres client to fix build error --- docker/development/Dockerfile | 3 ++- docker/production/Dockerfile | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/docker/development/Dockerfile b/docker/development/Dockerfile index 85cce14d7..ab9cb2fca 100644 --- a/docker/development/Dockerfile +++ b/docker/development/Dockerfile @@ -6,7 +6,8 @@ ARG MINIO_VERSION=RELEASE.2025-05-21T01-59-54Z # https://github.com/cloudflare/cloudflared/releases ARG CLOUDFLARED_VERSION=2025.7.0 # https://www.postgresql.org/support/versioning/ -ARG POSTGRES_VERSION=15 +# Note: We are using version 18 of the postgres client (while still using postgres 15 for the postgres server) as version 15 has been removed from Alpine 3.23+ https://pkgs.alpinelinux.org/packages?name=postgresql*-client&branch=v3.23&repo=&arch=x86_64&origin=&flagged=&maintainer= +ARG POSTGRES_VERSION=18 # ================================================================= # Get MinIO client diff --git a/docker/production/Dockerfile b/docker/production/Dockerfile index 2ce8c834e..a01dd595c 100644 --- a/docker/production/Dockerfile +++ b/docker/production/Dockerfile @@ -6,7 +6,8 @@ ARG MINIO_VERSION=RELEASE.2025-05-21T01-59-54Z # https://github.com/cloudflare/cloudflared/releases ARG CLOUDFLARED_VERSION=2025.7.0 # https://www.postgresql.org/support/versioning/ -ARG POSTGRES_VERSION=15 +# Note: We are using version 18 of the postgres client (while still using postgres 15 for the postgres server) as version 15 has been removed from Alpine 3.23+ https://pkgs.alpinelinux.org/packages?name=postgresql*-client&branch=v3.23&repo=&arch=x86_64&origin=&flagged=&maintainer= +ARG POSTGRES_VERSION=18 # Add user/group ARG USER_ID=9999 From fc229c48893ef5985bef69e47b72cdf6aab36ec2 Mon Sep 17 00:00:00 2001 From: Andras Bacsai <5845193+andrasbacsai@users.noreply.github.com> Date: Tue, 3 Feb 2026 15:32:03 +0100 Subject: [PATCH 02/29] chore: prepare for PR --- app/Actions/Database/StopDatabaseProxy.php | 1 - app/Actions/Docker/GetContainersStatus.php | 56 ++++++++++++++++------ app/Jobs/PushServerUpdateJob.php | 9 +++- 3 files changed, 49 insertions(+), 17 deletions(-) diff --git a/app/Actions/Database/StopDatabaseProxy.php b/app/Actions/Database/StopDatabaseProxy.php index a753153eb..96a109766 100644 --- a/app/Actions/Database/StopDatabaseProxy.php +++ b/app/Actions/Database/StopDatabaseProxy.php @@ -25,7 +25,6 @@ public function handle(StandaloneRedis|StandalonePostgresql|StandaloneMongodb|St $server = data_get($database, 'destination.server'); $uuid = $database->uuid; if ($database->getMorphClass() === \App\Models\ServiceDatabase::class) { - $uuid = $database->service->uuid; $server = data_get($database, 'service.server'); } instant_remote_process(["docker rm -f {$uuid}-proxy"], $server); diff --git a/app/Actions/Docker/GetContainersStatus.php b/app/Actions/Docker/GetContainersStatus.php index c8e3162c0..6c9a54f77 100644 --- a/app/Actions/Docker/GetContainersStatus.php +++ b/app/Actions/Docker/GetContainersStatus.php @@ -3,6 +3,7 @@ namespace App\Actions\Docker; use App\Actions\Database\StartDatabaseProxy; +use App\Actions\Database\StopDatabaseProxy; use App\Actions\Shared\ComplexStatusCheck; use App\Events\ServiceChecked; use App\Models\ApplicationPreview; @@ -180,21 +181,30 @@ public function handle(Server $server, ?Collection $containers = null, ?Collecti if ($database_id) { $service_db = ServiceDatabase::where('id', $database_id)->first(); if ($service_db) { - $uuid = data_get($service_db, 'service.uuid'); - if ($uuid) { - $isPublic = data_get($service_db, 'is_public'); - if ($isPublic) { - $foundTcpProxy = $this->containers->filter(function ($value, $key) use ($uuid) { - if ($this->server->isSwarm()) { - return data_get($value, 'Spec.Name') === "coolify-proxy_$uuid"; - } else { - return data_get($value, 'Name') === "/$uuid-proxy"; - } - })->first(); - if (! $foundTcpProxy) { - StartDatabaseProxy::run($service_db); - // $this->server->team?->notify(new ContainerRestarted("TCP Proxy for {$service_db->service->name}", $this->server)); + $proxyUuid = $service_db->uuid; + $isPublic = data_get($service_db, 'is_public'); + if ($isPublic) { + $foundTcpProxy = $this->containers->filter(function ($value, $key) use ($proxyUuid) { + if ($this->server->isSwarm()) { + return data_get($value, 'Spec.Name') === "coolify-proxy_$proxyUuid"; + } else { + return data_get($value, 'Name') === "/$proxyUuid-proxy"; } + })->first(); + if (! $foundTcpProxy) { + StartDatabaseProxy::run($service_db); + } + } else { + // Clean up orphaned proxy when is_public=false + $orphanedProxy = $this->containers->filter(function ($value, $key) use ($proxyUuid) { + if ($this->server->isSwarm()) { + return data_get($value, 'Spec.Name') === "coolify-proxy_$proxyUuid"; + } else { + return data_get($value, 'Name') === "/$proxyUuid-proxy"; + } + })->first(); + if ($orphanedProxy) { + StopDatabaseProxy::run($service_db); } } } @@ -235,7 +245,18 @@ public function handle(Server $server, ?Collection $containers = null, ?Collecti })->first(); if (! $foundTcpProxy) { StartDatabaseProxy::run($database); - // $this->server->team?->notify(new ContainerRestarted("TCP Proxy for database", $this->server)); + } + } else { + // Clean up orphaned proxy when is_public=false + $orphanedProxy = $this->containers->filter(function ($value, $key) use ($uuid) { + if ($this->server->isSwarm()) { + return data_get($value, 'Spec.Name') === "coolify-proxy_$uuid"; + } else { + return data_get($value, 'Name') === "/$uuid-proxy"; + } + })->first(); + if ($orphanedProxy) { + StopDatabaseProxy::run($database); } } } else { @@ -393,6 +414,11 @@ public function handle(Server $server, ?Collection $containers = null, ?Collecti 'last_restart_type' => null, ]); + // Stop proxy if database was public + if ($database->is_public) { + StopDatabaseProxy::run($database); + } + $name = data_get($database, 'name'); $fqdn = data_get($database, 'fqdn'); diff --git a/app/Jobs/PushServerUpdateJob.php b/app/Jobs/PushServerUpdateJob.php index e5a6e0c99..c02a7e3c5 100644 --- a/app/Jobs/PushServerUpdateJob.php +++ b/app/Jobs/PushServerUpdateJob.php @@ -496,7 +496,14 @@ private function updateDatabaseStatus(string $databaseUuid, string $containerSta if (! $tcpProxyContainerFound) { StartDatabaseProxy::dispatch($database); $this->server->team?->notify(new ContainerRestarted("TCP Proxy for {$database->name}", $this->server)); - } else { + } + } elseif ($this->isRunning($containerStatus) && ! $tcpProxy) { + // Clean up orphaned proxy containers when is_public=false + $orphanedProxy = $this->containers->filter(function ($value, $key) use ($databaseUuid) { + return data_get($value, 'name') === "$databaseUuid-proxy" && data_get($value, 'state') === 'running'; + })->first(); + if ($orphanedProxy) { + StopDatabaseProxy::dispatch($database); } } } From 86ffe196e07946813020210475555591d125e680 Mon Sep 17 00:00:00 2001 From: peaklabs-dev <122374094+peaklabs-dev@users.noreply.github.com> Date: Tue, 3 Feb 2026 21:53:01 +0100 Subject: [PATCH 03/29] feat(installer): add tencentos as a supported os --- scripts/install.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/install.sh b/scripts/install.sh index da3ffa095..b014a3d24 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -331,7 +331,7 @@ if [ -z "$LATEST_REALTIME_VERSION" ]; then fi case "$OS_TYPE" in -arch | ubuntu | debian | raspbian | centos | fedora | rhel | ol | rocky | sles | opensuse-leap | opensuse-tumbleweed | almalinux | amzn | alpine | postmarketos) ;; +arch | ubuntu | debian | raspbian | centos | fedora | rhel | ol | rocky | sles | opensuse-leap | opensuse-tumbleweed | almalinux | amzn | alpine | postmarketos | tencentos) ;; *) echo "This script only supports Debian, Redhat, Arch Linux, Alpine Linux, or SLES based operating systems for now." exit @@ -380,7 +380,7 @@ else APT_UPDATED=true apt-get install -y curl wget git jq openssl >/dev/null ;; - centos | fedora | rhel | ol | rocky | almalinux | amzn) + centos | fedora | rhel | ol | rocky | almalinux | amzn | tencentos) if [ "$OS_TYPE" = "amzn" ]; then dnf install -y wget git jq openssl >/dev/null else @@ -451,7 +451,7 @@ if [ "$SSH_DETECTED" = "false" ]; then systemctl enable ssh >/dev/null 2>&1 systemctl start ssh >/dev/null 2>&1 ;; - centos | fedora | rhel | ol | rocky | almalinux | amzn) + centos | fedora | rhel | ol | rocky | almalinux | amzn | tencentos) if [ "$OS_TYPE" = "amzn" ]; then dnf install -y openssh-server >/dev/null else @@ -591,7 +591,7 @@ if ! [ -x "$(command -v docker)" ]; then exit 1 fi ;; - "centos" | "fedora" | "rhel") + "centos" | "fedora" | "rhel" | "tencentos") if [ -x "$(command -v dnf5)" ]; then # dnf5 is available dnf config-manager addrepo --from-repofile=https://download.docker.com/linux/$OS_TYPE/docker-ce.repo --overwrite >/dev/null 2>&1 From dd3184320c2f6331df203a2adbca625606b19daa Mon Sep 17 00:00:00 2001 From: peaklabs-dev <122374094+peaklabs-dev@users.noreply.github.com> Date: Tue, 3 Feb 2026 21:53:17 +0100 Subject: [PATCH 04/29] feat(installer): update nightly install script --- other/nightly/install.sh | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/other/nightly/install.sh b/other/nightly/install.sh index 7d2a78541..921ba6a92 100755 --- a/other/nightly/install.sh +++ b/other/nightly/install.sh @@ -331,7 +331,7 @@ if [ -z "$LATEST_REALTIME_VERSION" ]; then fi case "$OS_TYPE" in -arch | ubuntu | debian | raspbian | centos | fedora | rhel | ol | rocky | sles | opensuse-leap | opensuse-tumbleweed | almalinux | amzn | alpine) ;; +arch | ubuntu | debian | raspbian | centos | fedora | rhel | ol | rocky | sles | opensuse-leap | opensuse-tumbleweed | almalinux | amzn | alpine | postmarketos | tencentos) ;; *) echo "This script only supports Debian, Redhat, Arch Linux, Alpine Linux, or SLES based operating systems for now." exit @@ -370,7 +370,7 @@ else arch) pacman -Sy --noconfirm --needed curl wget git jq openssl >/dev/null || true ;; - alpine) + alpine | postmarketos) sed -i '/^#.*\/community/s/^#//' /etc/apk/repositories apk update >/dev/null apk add curl wget git jq openssl >/dev/null @@ -380,7 +380,7 @@ else APT_UPDATED=true apt-get install -y curl wget git jq openssl >/dev/null ;; - centos | fedora | rhel | ol | rocky | almalinux | amzn) + centos | fedora | rhel | ol | rocky | almalinux | amzn | tencentos) if [ "$OS_TYPE" = "amzn" ]; then dnf install -y wget git jq openssl >/dev/null else @@ -437,7 +437,7 @@ if [ "$SSH_DETECTED" = "false" ]; then systemctl enable sshd >/dev/null 2>&1 systemctl start sshd >/dev/null 2>&1 ;; - alpine) + alpine | postmarketos) apk add openssh >/dev/null rc-update add sshd default >/dev/null 2>&1 service sshd start >/dev/null 2>&1 @@ -451,7 +451,7 @@ if [ "$SSH_DETECTED" = "false" ]; then systemctl enable ssh >/dev/null 2>&1 systemctl start ssh >/dev/null 2>&1 ;; - centos | fedora | rhel | ol | rocky | almalinux | amzn) + centos | fedora | rhel | ol | rocky | almalinux | amzn | tencentos) if [ "$OS_TYPE" = "amzn" ]; then dnf install -y openssh-server >/dev/null else @@ -558,7 +558,7 @@ if ! [ -x "$(command -v docker)" ]; then systemctl start docker >/dev/null 2>&1 systemctl enable docker >/dev/null 2>&1 ;; - "alpine") + "alpine" | "postmarketos") apk add docker docker-cli-compose >/dev/null 2>&1 rc-update add docker default >/dev/null 2>&1 service docker start >/dev/null 2>&1 @@ -591,7 +591,7 @@ if ! [ -x "$(command -v docker)" ]; then exit 1 fi ;; - "centos" | "fedora" | "rhel") + "centos" | "fedora" | "rhel" | "tencentos") if [ -x "$(command -v dnf5)" ]; then # dnf5 is available dnf config-manager addrepo --from-repofile=https://download.docker.com/linux/$OS_TYPE/docker-ce.repo --overwrite >/dev/null 2>&1 From ed0002524e67f645eda0b306669375e6fdfe355f Mon Sep 17 00:00:00 2001 From: peaklabs-dev <122374094+peaklabs-dev@users.noreply.github.com> Date: Tue, 3 Feb 2026 21:56:46 +0100 Subject: [PATCH 05/29] feat: update pr template to remove unnecessary quote blocks --- .github/pull_request_template.md | 41 +++++++++++++++----------------- 1 file changed, 19 insertions(+), 22 deletions(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index dec20e9ac..157e409c8 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,48 +1,45 @@ + ### Changes -> -> +- -### Issue - -> - +### Issues + +- fixes: ### Category - -> - [x] Bug fix -> - [x] New feature -> - [x] Adding new one click service -> - [x] Fixing or updating existing one click service + +- [x] Bug fix +- [x] New feature +- [x] Adding new one click service +- [x] Fixing or updating existing one click service - -### Screenshots or Video (if applicable) +### Screenshots or Video (if applicable) - ### AI Usage -> - [x] AI is used in the process of creating this PR -> - [x] AI is NOT used in the process of creating this PR +- [x] AI is used in the process of creating this PR +- [x] AI is NOT used in the process of creating this PR ### Steps to Test -> - Step 1 – what to do first -> - Step 2 – next action -> - Step 3 – expected outcome -> - Step 4 – additional checks (if any) +- Step 1 – what to do first +- Step 2 – next action ### Contributor Agreement + > [!IMPORTANT] - > - [x] I have read and understood the [contributor guidelines](https://github.com/coollabsio/coolify/blob/v4.x/CONTRIBUTING.md). If I have failed to follow any guideline, I understand that this PR may be closed without review. - > - [x] I have tested the changes thoroughly and am confident that they will work as expected without issues when the maintainer tests them - +> +> - [x] I have read and understood the [contributor guidelines](https://github.com/coollabsio/coolify/blob/v4.x/CONTRIBUTING.md). If I have failed to follow any guideline, I understand that this PR may be closed without review. +> - [x] I have tested the changes thoroughly and am confident that they will work as expected without issues when the maintainer tests them From e57cc16b9134e028c73be94e7a5a1c7fa6751e7a Mon Sep 17 00:00:00 2001 From: ShadowArcanist <162910371+ShadowArcanist@users.noreply.github.com> Date: Tue, 3 Feb 2026 22:00:12 +0100 Subject: [PATCH 06/29] fix(validation): enforce url validation for instance domain (#8078) --- app/Livewire/Settings/Index.php | 7 ++++++- resources/views/livewire/settings/index.blade.php | 6 ++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/app/Livewire/Settings/Index.php b/app/Livewire/Settings/Index.php index 2d7de9e58..9a51d107d 100644 --- a/app/Livewire/Settings/Index.php +++ b/app/Livewire/Settings/Index.php @@ -14,7 +14,7 @@ class Index extends Component public ?Server $server = null; - #[Validate('nullable|string|max:255')] + #[Validate('nullable|string|max:255|url')] public ?string $fqdn = null; #[Validate('required|integer|min:1025|max:65535')] @@ -46,6 +46,11 @@ class Index extends Component public $buildActivityId = null; + protected array $messages = [ + 'fqdn.url' => 'Invalid instance URL.', + 'fqdn.max' => 'URL must not exceed 255 characters.', + ]; + public function render() { return view('livewire.settings.index'); diff --git a/resources/views/livewire/settings/index.blade.php b/resources/views/livewire/settings/index.blade.php index deba90291..5a6319bc8 100644 --- a/resources/views/livewire/settings/index.blade.php +++ b/resources/views/livewire/settings/index.blade.php @@ -18,8 +18,10 @@ class="flex flex-col h-full gap-8 sm:flex-row">
H6`waLCqgy0jzg3cTx-oyc z&dsBkF<}k=kd=ATg%*_YoyH+Q<9Wn=Et_0roNWOa!(7?6v1kTNGk!UUblCs~i1HX3 zCjSn2g!6=H*Uy~d@&{H?7Ynv>J}V$S9Kc_m%;a=y@olQ;-l(2OKIQvksww|ka*$d) z-Qpv^#U%T|x|8QB z|2)U2!i|ztT${*B1NBBly{gDZX_7c*asYFGQ^i(KW6;$hU8J$jv#N>_t&4)RK(x8c z86#V?FX(xVHi!dt^vU{SMvz{{5XnqS*NPFxbG170wSZXvdW=NueWI|iEMv^7k4nFu zD~G9@M15mz!LW0I*l X>0MQQqQttRja_C@qowfWifMe?S8HDe`jiSbd^Gz; zx~EQfGx_HAW&;Q3JC%nA3g3tCXgOvcG3ifYkPzU7M?_VlL_9|MUW{%wbf>DDdG4d# zy7jYqRB$w%0a(UUJ4R&f?)XdENNeOtA~D7^s+t&Y+x^T>hnqRP{-o=5VI$isyA8q5 zPtMXwq2eO+B#~x7mZ%l2uGwqy`Dgj#BBs86QhB)Y4%SM f3;+7Gl04y<5<9^v5hkwHmH6uWOQs&vHVYzfQkafFeFj&xm;ca@8}AJTJe(ra zND$A`Ywsl|-RAf(5)xFi*_{Ob40HgfN-_M`M?fTs^UM9G;&mi)Q)7Poj7q92DDS#( zsw@Tvm^irPpD#F!nYoygbbGP3Qkc1jZ!e6>5ZVF@r3smwjyS^&+ESkjE(@@geA~7N zI1<>TQr1)Z-Yc!q-Si4 lJ}Sx%c}O9apSsETm#jPW<5I$c?Z6X4E U0};nn5JLV-zmQ$(E<&vu8Tq_+);2>eZHl( 3+Y-8>1HxCD(J5#(+GR3mZkBH^kesJVbmP0rI@0{rh#=oZm30 zRrozUlep^pG^?Dso`^w&czm2(yGcRRAD!^l07hecvMf$%5d{q7oRvDu$X zM)s73I4{SW3=l!%`0YQwE;FyOa&OLI3^K757l`R*I__>%88)B^#|` nRv-!vE1ulOqJ|d*c%%V%IWE; zZr;oF8ZG@akgX2G2&Z9pwo_*c6hG`eBNefsR2_Jut$IID;11k<-)fafi}0R;PFYJZ z)amk|yTbWP&IqxnPb6?)yJB;?p^Pr)>Lc|PltG#sJvVBdGqRbPJ-*#y?zvqodlO63 z4v4MjeReLT4pGi;eXvs6tomX?AD+;cI@0;ii5&~-{SK3BYzXV84T|)RfC>7po3xcu z(w)`5GpH?KD`W~MY7MI1aw^s{xEJSY(DqhA!%fGY%wT>@sPU&`m9w?O%8mZ%TNXaC z9VN!R4AgM&Gpj}k%_Y#WWk#7nOyK!A`ivz)JHx7tHOo6uh|xobLsiqMZa#Uo1k3=c zL~Kx< -&Rfi2qGZt6KrIQgkzn!T zo}&016!eV#o^fDVOF+;jz+Rz9o2uCB`GJuWTAMW1T}vi2lj#$XzgK1a0%1G3c5nB= zv6h@ACD1CcKHOmrl4VUBnPm>Cl^UQv*Sesv)T01qja>gc#|)2VVp}m|$V^lg_r`K2 zMC+_wN7FZO)PG=aFrst8ZO^6}h}D2F?g4DF&d56Fqj9m(LedyAtsW?}vY3IuZD#h` zvprp)7+_&pg3B{|LcVu!bm)d*saZwEysVrdBbBMte~AmFrRHMoR`o)6b?-UfY?LKX z2p%efD&d(>=up9iXqtNz;sbi&$yl&?+JbB97NB-K%;K3=!>{{WY$AKkx)M;N(lk>P zJll7(N9-joSYZr-p6utcw}NLqkjk#Yld^{D{s~Z4MdJ~*f2C)Lxu77=5=OSi0TAn?E537 z^AmwNc}=m$D1w_ifEe D5z3OFn1G*>@QBbu zfPNG7nkHeh?2>yhJ$&ck2cCQ9PyVf+{=^Ub$dCNY7k>Fy{@x#d?W 8zV|qWz-^WXydF5<+{GOY9#<03L4Xbb^x*#q1^+j#>%R#AaGk*a z^^Rc_e=Y6%mD4}bpiKlFFr_kriWJs#Zq$eGjt?y6IKHnK*1)Vf`5aixJq)CFBc zlBTrP?6viq^Atr=%BAkb(XFeqwuAN)GRh7PfaVp{DaWz29hiuP< ~{M+HnM%k@WuTk@fZLg^a$rpwGE7wE$5l(JG=Oj_QOA!Jq*!GBJ8? z3@Fgrjcw}^g?-AvfOt|tCkT!qOQFivq>2hX-N#si^&QpBf`S9lx3&lF{A^Pl+|jMp z)#(jOWV+azO_2QEM(A}rWP|8rDGgr(=@AY>qP(B78_;(?H0d(Oj1V?`6`0a^V4$cN z(|k~=tMQvq#-WH0sd%<@V~}Va4>H9BJt@RmZ?4%e=G}535fhZru~;_J+Hg?`+nQDf zwhq)fQ_y9#ZdJ12q}Z?HvU&;iJhxgb&F@d@v}vHI%GxFfiK^Ja&7B+y#odyM-FejW z`#C#bEafXfuLRCRLfx=rlB_*m8PPgUoII)HuEFkT+pL~eB#9Q(PN+dA%}SXdWFpWI zJcOOHQdI)^G+7-gbEeZGp-*@MO8{(9wBbW1I|3dGTny|efzPIiYz)ojqd&IHe|emx z27E!eP4Pmt4!jUp%Mh_s_KcNhl)_S)z}j)i5OOXX4V+m=L0 J$ig2r; z&1g}jRl$i3s!0b x%>k(& z)^ZN*>H!8uBt>|lcqZD?`6g61gv9lOVw##kXGuV7qgh&zU)YVpsQUp5p6nDdQVRlF z6pplD0sInM@?nK5t?i!%h+5_l^mlzbULBHDa4w=a?ppMeotFmG7yZ}N >$8V8gS)c;5uI}wx}w;Qav$rFfX+qAjx0Br=V1!=H0er&(T;8?(&n7B?* zL=E2oaE)rFtn(WYQvfI&v^gx!Q55PaPMG#o{?I)nvkfdk6w{i?WSg-rJ*zf_Q;=tp z(lAlFcK`~sq$nBoBVuz>Ubm#Ch1|2))Zirm9}G+?1ji_J>lbJ#C^|F>y#)~^MFYXe z5+mILCOoUcU{VE<$Y8i$`%r`D<-Mib?nbvgNex_R5m+wl &ap zPDe1)ytL*+u Y8^Vf_?;xriAqoZB=pqMdxL) zJOF4so$LNNy1+KMrFGY6LV)yzcJ +Gp6TuRqll=2-vh)c z^*N=$Yhc-t=g_HJG+>;wfm*g^$=?@b{3Y!3Zjm7}IZ_bP>H|k;31sag5aByGmPS%2 zSpY_1F+Qm0_sj=B`utD+?Z5rA)A{D>fBcm%|K6|u(m(kh|DS*TJO7JROVV9gT>=Pj zk9qB;On}Q~{~yN&cwFFr)jIzU0(1bN2mW^u_+OOazYLxKvNZpj)bU@H=D&UR*=Ilb zm;dr#`jPeF@n_%t?EAm(;QsOQ;b!a7!wup((zQJu7Sx8Zo>`$=I1{V7>7CULHSL&X z@_A0$)XnGcXrVQyO7F|cNmWNBg}H^48xa(t%{DXolIfth*yQ$9qN%K|B3~X9Gj9%_ zsSG!rA@E+4XKknU#HI3ZF68!7z|N=HF`v*MJTMz08|IFgtia54ptE4L>Z$;4J>VVc zgdrRiNLx&rmG>zS$dG!?g$9x%Q&Z}6WmG!Irn{@o-|6XzUWc^)Q^ !?kfE6?;_&zgP(j}(Z&*l9 kJa*76Td39=eVDWHK`))u4`Y99=snI<~5a(;nH5sEZg7Yc<-A~WCG z{wu1UL~F4|s 2{G4NA!-psC=7s*Mbb_R88!HMaGXcXgf2|ju~1-- z8EVl0kU7gXh&rEk=r>+Gsl#dFxx;~vtgF@EDF|55xT89c3{Zv)CWdw!C{XK8R2dI+ z_!EOfopWR!p*5KSU3dnSwc>s2i4Ls<)Wm1fS}8%m`uE(jp0PgLD$>Ss0#Odv0Dp+k z{)njt#!~|^wW7tMcLuo#-sbWXM<#;)@(#d)07X;NQvt1A0o8&`uKcDlHnNGZm8OVq z?fNqHJtBk)v}|S~bE+hRF~P2qawFA^Afo~0Iw&&{z|fO%kacMY3a&*e_ Y+Wu zj^$+ptg>qvc|D_KT6TdLZGBeHw`>!e=HBtl#3Pd9_4C|z^+{OyrS5IQo>&M-Ci8U~ z$r9kYMn<1W c3>|Asio}^vqp9`?m@i;zU6Z$I z=g#W>Dw+C7Y9llZ65ESf=?rviWUrQeW)T-IuIis5>X^l*7lSqY^z7Vi>irPrj=(np zo~`Piu!#B{DftW9fnZrbw{atxGR~t^iw_=|Bxqx)T0R1t)_-qK&fW1n=;bBgT A^jniI!U08Pm+=EQr88RJG zVN1c0g3DwH8N<(0xYG;JqDxm&Kt%7g2rm{9jh1yHzV}<6|M+`<{MiqE>OcJ2SO41h z@WKE6zy70N{J*~X;)}mozjf$lLh9o(|Bqq`Tvbf)rkQ{D7zV&qx&}Os3E-}It{nvE z0KnT4RCpt^{ O9nq7ETcyQ*q3-RM|1hRh{9; zKF*mvlQpQEKp%G|ekNJ9m|4S$jA2%keW1u)A!QXoskZQvz*C%(=-RbtmLSYD>JX%cWvW*_=4oRg{mnR`Oi#fN< zXb7gZZGw37UYA&(twQHcTO=TBPo{%@CL-&Ex@Q~@X+2cTs$daYu&Edqfrd;6*%YFS zahWL!$X*ZVO)tSygfj;~0DY&C1q`Hj&hEDaZ|mh+9jhJ5^jZ=@p{>H+?@%X4iAfBk zDT{+X86(6|4cY?ayqB#-)?RB%ArPP B}g*I>eWyQu96gAuj8$x5)*+E^Hn z2RhA@GFN;gB9@S4&cj4Se^5YC_X$d9PL@ey@9{KK_f5G$ssF__;Yhif1zV4e%dD zlop{DTh2k43Xa)SwD~hYCQ-4!w7TldHj6_Ov5J`A1B+ir_|vMrkVEU)Z3^b-D=shY zpmmYhHj^DABnz1)0DTIqQ3-ppp6l8QFR}{+z)KYlWb4dqfS~+EI+1AINzra3RBq#V zWn3r4!-BQW+f(&dHi+qKc__iB$v448z1K}Z4uM1>aF-L-#Y~-wkWi+TVgeH&;~0nQ zm6mf@%T{GQ6>y*rRtLx$t9A(H$Kd(=N( QDr85AaMC&jKrGfhZ;~ zb4$v(23a?Q0yo-uqd?44!GXb(5Ky%AD_hAA1s@| (YAThPvk|JCS0$ zh4a(rxdcRU69F6K_)`Y36jBrY1@i~Vm8?t~YAN|8_I6LP#~t(_ls&}G3HtqUfwE2o z9|o+^gUxX(709gwK^bU?*BT9c1sEQv<>M393t3lAUOBDfzFfZdBOm+xY6zeIum99{ z?tbAP{QTej;upX8i(^U;_R0eum-)Xe1K_%W@I|cwU+*{WN*CZJ@lgi>Isni!|L*q1 z{calgKPt$-2mp{J{A?J8`#<$lf8(#c`@Qe``2Bah=Pxb}58wM>OuAV)ihCss-ZNCy zLF4l+<5@!46DrE)tEmGJqtvl)=mddAEm;~77ZOJn< 7 zpIml|F%`BWv!EXiiq_LRx2I2>so< 2*#mR)acYg&9y!s&8(Z3=m(8Rvl{X>E!noc?LuZ0EU>X zK_!ai;fPNxTL>zqm#4Y*9R2GZ#Rx4^%{oaBI&q^1IGdXYc4FR3bJ9WgtTzX(mFJe( zH{J2?9xeTp3a>4oK-pyj29U1NpAkV%#=Nnzj6_v;ql~&@jxbp&c|>`SJS&iQ2hI}^ zz?GC+w+PMjXuHG=CsaBVcs%=)ElP#` b9c{_Z%5~J=Rn>3LV5fL89OSrL z4Y-r4+0`rDZM6n^x1b_LLG82~DF?tV9Lio&%DbECrzTja$BGIR>N*&x&yW_Ta)EM@ z$p}5ZX+L;^MC#&>839Xh6h|!V8Naulnaui-=T;;REGN&vEqO2`im?NnW81>qz_g&j z9Q7dB bo)Gv#;o@VtSGU-`L0;WjNH7IjM zhT^z)0}8d3l_UeO@BlW^UJQH7_UufR$jgGyMuH;y>FHU0dFPJq9kL%iTZ!`7kIn*- ztPGLBXC<|@0YZ!#Jjfa#nQSV$EBho7gyPy ^A!_PX=K@)N%4$MqCS%^~{!>^0#nKQ3yBQWpkQ$T$Ra#jWh+lk8v XwuS02Q2&7KAVG*r?)2;d1bypy9~~cQR}C;KG1m%9s66+w zl&1#TI4b|kSS;(BcKpntJ3CKqJUav2lT2V)N&`oCZ&+*D2FfE@UL?Roz#i?W+hDDe zAzLsJ$Rc1}_Ap2TCS;}5y}Yi8yFlFsfLki5!|pi>I$GHm+B@jFfr=(-0%)fgb{SCO zsBd6g*4C`Pb%p{k6?E(Z$J%q8H|fktBk8zUF8}J^`k9~o^FR7yKmF3zU;M@Y?H~Qa zU;WzGUi|IHFarD|SOJ&S26$93ep_IHbC>HF;N0be4LcK{0{}hvzlGrcDhz;|Q2nn$ z=fBK*M*5SC|Mue_|M*Y*#lQ69|K0s}z3cgxw>$U1*G+GenhRuA+kRrJq*R)6zh{7! z%iI=<)!kg21A5I%R$FSorQf*K!4AF#WlIL@+SCtOBkegB;ZS-IBQ;w>30!sltVNTG zG^Iu{2EDoEeM!4!X@DcOn!&qykKRY?`{qdIqrjc`9TTYh3^pk)z6SzWJ3MZ@35 j#3pp-2TTJNXx^HcWB4#p3LV>XH?-N@ELrS;|YZf-Y-9_q+*`vN+hvLUP~kI!^e zBhd7~KE1h+AUw=jB2Q?9K_&NSRsUZcEZng0n&r^U#n!pA?Rkx1HqcT?krYIpRfGz* zb@&NocCa-NDEO@Pl7^5}gkuv3C=~?4G8WN90=)@l1qx_2HZwEb*bg=1X7w5b9t^OO z4AJT4L> 6$UvPann~sDVN|CwQU}9Co}5u~RkI^D_DM2kko?pR zfrz& X%Od$MuUZgk6M?jhI=nJwD9 zq7HIjLNNBhq;mG&vE3wfC~SUd=3m>5T2~6Mtxj7oA({sA{HqoK1CYcZIDp2zV#XLh zitHr-kI*u1$wVcs-Z&fc#%VTPDAL+hLLP^Nwt?9cyNh>zURB!vpv%X+E^EV5(;G{e zV^f5f<1(&X88^!0(N>cLf}+rqS8Md{mhq5#7pZ#c(TCk<)8X**x?Ma)DkEY#-xf{G z503y_DAAkxyN)&PX=V~@fN-|kxZQ)v9Ua`O>(i=f#Mt4ym34)}k_WEW9&DXN`h0Ay z@yJ5c`ALS4%;QDg^Qy7#0CvsnqDtU2;U0T$%I`deLz$CzzI77NqM?A=Y8AM3sfjBV z(zi3k2vhUT)6DKjrIA4jOK7ytT$jYa`t~%7*ZI~^52Yj7${MixE^2_js==o|*Q!o0 zl=F>L-+?C2a}&TT4p^&oZ!^BQL-rc~oD@V@t&iN{FzA?1?4%H_wV=_z>%c4y4(ok> z2yGQBwW-HiuMXW}7{Cg%masBz!Z0!r(}8v2+1^%JC^@hMECM*kBt)kT0d)i0NQOkl zKK2OD4kq62nu?NU?N2`}P|q^tW%X0)wMF 7;qij;o*_C)mtp VpTwy!`>_j#oe3H}i z(cOFYxsSd3qaXd)fAw7-|8IWbfBN~q`&+;98~>1<16J m;sli_g@s?U-aHp zL592N5YRz@4gkDmga5mt{9h;Qf7ML?Wj`Ys|7ZU5pZckvJid4Q7Y^R}t{)uz(c<5I z?IpK9T)Jmg2N0t1Gf1e(=gE<-TUz~?3fL)1ZS8W9>2#!V$)>VnmO?0U)3hTnUr@8o z8Z|hjrc6CC5J#W{&jrquQt6bgW^{1RI`Yy~_OU_HNu| Ud~p z*}+akH#GwbEbwt`(^j})s!+EJRJ1lh9jCOt;N4s&N)`CAIsoUV8=RMVq!Im!sm$xC z{;fen+$Wa@)-Y1GiehNVb9_SHE9gkvbR7k@Y@_w9r?omf!QddiHZjXvgPGNOtr-u` zK5Aj%-O=KxIxxj;HX8 U R5qK+AiaYx4~{7f{o7Y-N@yfM~2H1fU3nJX%cD zb!KWntz)+b6998;4_G2W)q=HLvbXEykvly}O2_9WpyzUUcsK)^j?W_ ArV|xG$!A&axN}>k7edrDkWPO6pm)119xy~PB zCP2($Uf+iRx-v_YbFlb2&kFGdo0xV;0fpNNoUP1BSx3&Unc2 t)@m*9r>j-WvrNNIKV~OlrNV?;WmL7DP7H zv}DOb0stX_ZHyX}4-3&^iQ1V)o~6YQHJH`;PgN05(8<=k8Fa*66FIMC{q>}IU=CoN z7EnS;;Y8e1LqaWe39VGd+Vd8++O)S~4f^jtb6>Ojc%G1H4hEnl3c;2_ZGi+}o4PBy zHwTJ&y2!2v*n@T=f~btjh|Kn4f#;C-QMQyxOJ@SvQALv{+RBfBXyN*>tk)&og|tO- z4L6p4>9&$MXg+}4< QNUp6kby*~tN7 z!^K#g1NS>Q_StD2^P&1J!}2G7`oH+uKlk|``x~$P@mGKGpZ=47{Exr#l|OvpHH-jz zQ1V`Yn=fDoTvSGInLzonZ3V9a2)HYpM+X5q0MLW~CrJ6fse=D?g8u!C|MbaEeB#gl z*kAc8|NZ*t-QWH4*}41X*;x&GUQ)`H)Nq;-w=%6wxm)P>30X+ZbcDIq&>X2uv94^? z(gHes4p5q3tYZxvk^Nt&6ELtlzyP6bTY*{gsQ*p_#iUq&2SPKbWh^I1Y&N5MLWy+H zAnnJXfUDWrg!9ujUfIo>0p2pH1RZ>A07coWBrmzl!M%M=#$_^kD1uS23(#}gv7Rqy z3VeBx%eA%7l$Aax3e|B~xYNz48#g;po|$=4M?MTnMNgAulPu=JIr*98h+TmS7DX z&3{onnT==9Y?DG{&*5y1ueJM*H$h}Qpac(_la0G~eB_LMZY3ZGHArxp&DelGo#^O0 z6JH}8*E21b=ippv`+m-vH41CaEs#-1YGQ4EU>hax*yOIfTEL3s48A!%yiWz0s>1qk z&CDuDlica}z`5gNx2g_rQ+lRiaj~?eM@BB# 0@ z=JAo?2(9g)(%{iJ8Gu_JNJl4LB=5`Pk>K>S9_a)&GV96%gHfG_89m)SgLTi0zXBNc zOt$(<%&BCZ9ka17P)o1(Mr!^gsEWKFLiyBSWMVrxv^z@_&ofX%K^m59L{CP7eLf?Y zl{($RjFM)OBOFJp1ttKA44-FBw9)hRS -3W73%dLXuG#Vy{7fOwVNJ{DEq1J9Ud%dpjIHz7bvt=AcksqtIzX}V<541S0J6) zJ7aUPRiL##tFN7I&Q+=3m?Fl6Q6bNv5Zr=KF1PjM ?2`d7e6BOgLI`6~Cj#v`vvzD?@U9?SXrLS=%i6Ovv)&5(-5WI_QG38N zMUWl$2CC&fm)=jVX}eqS$U1!p;YIB>A Lquh$gp4K%ZT(^vro0DTx%xDOJ1(&ve+MYotRF$*3j3_KVB?$8A!vrS@?+NkGt zy4m1$d*;cO0NuTg-Utu?*izJXq|+{;>jjx;IyZC~A5bE~lB-o%xoJGd5){ccaRkU^ z&7TZl#U+evE2@cx$hoh{giNg0?*VtzTH(4g3}9+a-cbycIvd7vF)>Vb {E7**^-PgUoA|`{~4wo^Bk)FiogdS#~?Uw-3kU?!WJY zpLpK~p8Ldie)1Fl<^TM1KleZUCKv$^2n2XHH#{nP<*~0M;5q^FWwQT|>Jo67 za)Zn01auIf0|0N!;Qu!3{hySu-)rmkFAEIFVs$zU!#h6veV_T!@A;nZ{ZE$9yz2+g z;$rdQ*I&}zxKO@*J*?fbZpbB1R7eig|1tC(yLSnxsgG-Kbprr=Rxue1VAVO5V{tVX z#99LIF-gn1`}%KHl%``=SpTLma6|?mn4ptV ?!U@L9EBv zoNnECKDxM+`oDE`EYLRVaDC{`>!y2lzEfvF+o30Hc7?T%o|~$pazAQ~3ss2myV9O2 zvNl&k{(5pE1hhRp)$iv3AV5)bak%w2=%bMxpyeF0bykOEBO*uD$u>P}PjbgXdTg(Y z+nsOQG=qPMIz6ox%@AW_f$-d}$e9=%H|~gfP**IwY@k4|%i9asW@UHG3x&(-8nm z0$t_uER@Dfsb-Od;=Eo99R;Nmlx0+>VFJ4ZGh%G5@uHqxdR6f0EqhJC2AUO~YRRPN zd&< e&X*Tna;uv)`Cj_jAuEtY%@8?>eS`H z`hDvnAi&TF2QmkYn}};!CklO?&mNm=x6Hb#%+swuJC&aAr Xs z_5WN0e8GwWH9ZP5^{V!rZO-7Cksx85c5b&FYfwaRCJ`9R^RA(|m^$E0fy*;i{|MVh zfIYP4L%p+<%RG4bL~H)ntA(!Bxv@bY-nn0f(^_CsgCbd16tr%Es=Wnax^yET9H*(S zBb!EdN1MFTSTiUZvO0FQb`v!FtOisyKoa0$ST36AYHKqof&X~sb~P~4Ad-Crz~11w zTKlvzGrAgEr vy-~#%&+&P^(|(%lhCL<#@8536M|SoOZo@F0wJ~*kK0qGP=Wi z0wga`@6HUqfNv$v{)R8sVIi}1BZ5}w0pZ$0t1~BL@5zKoU_N<@FJjo>Luj%hA`s1F z``K0_`=V!ep^!K~{Cr!`dKEx1+9m>Ub!3JlCKwEq4BV?%tEEfhDGwMmnK9^E3y?#u zJ6gvM^;v4LEG03vCYvax0-BSS;$$l5FNWY&2ZP(}#+KYLx_q(DLEJYqpVR8<0U*gb zFtA)AQxH=F|KJ vvt(Z#_H5bI$volS82J2HxcT*!$VfbKmP;>-W2U*T*HX1hr+NBoJ^+)~m|U!9d6< zDrUH@8USRP1d1tUcDlw~w4Xnx_=Vr}9UuAL-}DcC-M2md^w0gLKm5Z#^dFxrqcVhD zc(NZrdlg{drL2MQGAx1D+C0A;10XyF6X2Ep9KtL60z3l&o&f;AESmq%m)`%4i1K?i zCctZH^k4c5_3+!i>}_B4rEh)f*L>hNe&C }~-{^~_j|NqTy z%Z*!8?x2_{#N-9i!m0D+gr-?`YjN##Ra_houjmY0xr47uMM1_0A~PI%99E-e^@<72 zpP3OwZ{DJ;oh!`qyvVibS*~p~SuuV#oy@7?>`fF)Cr5anN;fs?s)$504RRkBlHDAM z=M;H?X<313Ab ad-@qc?$>LXG|6z+Yc}3> z*!IQI(6$(dTf9&2qPv|pX)zUP*wi4R=$lB32en^Q5YWu04ElfA%*xr89=oxz%+cxj z8Pj>t K zX#m+Sj0$}&UKTzFX#4H`Rz@JM79p7uip(e&kH8F@`|QPac3Qfd!wC$r*P9f}SJ`;D zEC`c2_gV00Du@1j3KX0|Ervn9NMV}v^}LvIn0{ir=#9tY+dCMF&6eD-*$iKaq67;t zbSs;llxY@qe|ro^ODgHlYMQi03c&+2T{CZySZVA?a>_c49g`cH$z|H<$IYqXNzG>< zQ^O49Jl!G<_xCj{{rSt-BQs?rMrj7v#`K07ol8(Cr3h?Rf=ouSuPUZ3N`kOTyG_P% zAz3D}i7dTYGfgp?et%TL<@A7zWsMhS@uZXsuVO83uQ#sy>z#`A%f4@BXIIxZG-}HV z@lZS-ECV9}tO-58z%ymjD=4M!dsSLt8Hds_73*jcL*)Mcz_pN@OyvY@Mgo}eL3HNi zi4{8JjP`uIdof(cYc$|AQ43)?9K+$hH>~~o7$BPF2~w#NtJY4_&$yV@V*d*liZ}cu zYGuSM0H5{%z=-k)2>^;FT*E6&giVWmzr @gZFI=VIUYUsJ0s{kq*fz7Ol^JmTi45~`rVJG6)XY*NEzXZWgE%`E>MY*9Jf zOdGrTWb&H}y`A6oA^Np828f+eX)|e$A-FpYpO6NIg2(bz0Xq1M>m(^l!Gzt;`=WFY z7~mF7@jWin!Ics&`=QM2mNtn+Knmny(7 bu2B$P5(^}`yenyq)59l4S+82HC%_D^ zBZ(donxkY1Nm7N%XhN{9NIB!0fNWtRF)A~=3fJ-6??K-iu7A~A-uoqQ`||hxp3pw{ zKmN79_NPAfxBt#hoX&Ou!~QZ!dMYVEdje~qy-W}BH2whLDH#B-H6h@QZswnX0M7t` zUlz^()BgUo0sv2=^?xmN|Ca&;F9iyY(=^?@|9$WKUElV5KJ-0@wY=?o9E0=j*RB1$y)QYk05{mNn{ zxSlm3`UXzOiCSFh&=zIMS2YAGx`U>oGBm3b3;L n%r>a^ZRD2$8 zS+%5iX9_xdGkqIOj%>v?kpIOe-YnE YT$bRY(Spv>Opq+f$tr `iBmyQJDZ!**?Uf!2Kiz$;K`5U NG6|Cv6)@PE2CWfy z$IJ_Def9UW+4nWIo#cP8N@|b>oxiB~kJ3Sqj$h #;Z}7#XG2 z!YDW~Rhu<=KQkBIG_%KJFLL`j+HUrJEpA~-8Dt^|kfpzVFWNx+Uu24wCB*j}a7^0U zBFPUWMYXu1K#2g*k|xo2IW2=Up;mxEP`+0Oe@F|4Gk7H^ VbgNS)2c)cJ`qJ0cjjeKgc?T064+ke @wKT^18-cxkrJsHb-eJ!KcAv1xzqM)#UeEUK_Z}#EJXzceV0714V zZ~I t*V+`Nzg!zCyqM`vyDnpUN-L^+F^C98-4 zh|_ibp8L(!b}8+eA1#G|3jiDS(qK%4ON40@`=#m`NHP`m=sGl-nNr48#=v;qHrxK( z9 VSClEaBJ$*i{N`(Yl^IlDHiSXmR X#`x8I1D+%gc&+S!S4s$Y#sqi<06c5{KZoZ3NpgbEh4TMOK)`Ed0F=#UlivRJ zw}1HuKls7#{`-F2yTASa`oyPtaeSg~HL;F?k&S47rJwxf@_uu@XZ%og(b^g$5$yF7 zvw^X(YP#oo{}Gv08_ey@d~4|i`FdI~-7cc!B~jRh?k-oc+B6TdLY5r?GHgK;wD&t% zBR?^&Xrkd<7IhqEG4XPGH#vmU_{{aR1DlpPPZ(24H~X?8Vlq=D&%>Tc^)-+qDSi*e zY3-rO9S@$YY1&FoJKe4uC(uz^I4c+rcL)6aqw5=*1FdyX?qM#}?}5>m&0HyZCRjhr zRwWc ~yY>iI1nGoFw z1YT1~jm}s=W1KKkMzCC{kx|!&1qr8Rh&Tke;jaEPI6{=68o;Qpqwj&5fkxKHg^kOg z`Y3~|q6wK5ty8@)^SHV*&G=e?v6-=3N?%uWaBt8e()l^dzaYuPs0}}XARr0FLlV2B z(OsGZktQ3xFaQ_2CZ`8<<|10IvpCs=G%;41Y?rG~6v2L;E`M*vMq)ZN_2+0ZJj=ZV z`5u# w*L^>i&g+Q)Asl8ojrKftlRyD9&UNS)+>JkZ8i?3lb`dPbZfyrm0s9`-&$R7T zuj5Z8+?^gX#U`e)<~{Z-$hgpb4FF2H&%;B{4`;s!jcfwLV2n4(p#&3uX3s}A?TGUF zkY9xFBi#PEHp-A9NV5Ul(63$MzN>%FN|;!*r|kL{?ab>%Jw)avhNFet7(^>Ju30-S>`b+wfI9B| zXZIkJN6tk0hb)TeBNirbMQf=BXGZb9MH$a}o_!D?ZHWaWG|A7T@(fy=Djs+7Zvw7j z5-1Tc?GG}r3?Pk1QOO%>ff!^S;wHPc_YJRA(bFqUBAZ7Yd+#U%zBo^zW_lD5{LA=U z=DD-<0%ViVVY}^T@3evM&+6=%!C+_t0s6n4Pa*6H zr<+Vh8N^=Fj0)H;?(^ZGKHjgSVo}D!H1QNRr#h!TAi~$?nu#g^yb4&JXt-Dk0Y^V` zsBRJ{BROWJ+$ee?fCEBJQPF|&I^VM%TyC*J3eIphB@AMi!h1mb_tNX5PrYyoZ~LnE ze#0O5inss6f9c15>|gxk&;H%N`mvw-splmNXrIHcS8Ci}4 c0W-@hZ3*YVrq(FQkDj~kMPUY=4fOTW zhE}vGdZ+2IK)$-^Ty2W1L*EXVxylGA)5TqbNlqbUq~~*AMmk9oSL5J=O|BtLZOEfh z)U0eWk_N43%gpZAaKC?~gaO998Jl3z1mw^Qdvo0;b(xWin6_up`g3M 20l9J)P=k_}B!H0-4l#8ABm&=a71LHBZ|x$2j5vi!|pjdQ0>NK =Z%^tUPnyKk4Ra1eaD5jviUuCYN0i>QWR}KE-r3mED z@ae5`g*`UQ3fim;X3JeZ+@g3e3MQ^u^P*lweiAs;wvw;N2r0@qu$WY42^%B<^gquY zL70@YUN||6j8CMVJIkF|9vW?xn|vccBg4F`2Af`rajc^#y==<-drYKMq%{?LwR$1j zhA%)=6d9@Iq5~%ue?^9X1XiXIorY#=vw{)RTDxS{ONPP;q*5Icb>LnnQ{&HU=79;i zw$uwxY1>&3l1!T G{+}n&9Y^22Iox)>{=V74jo# zd;!2%oZ7T9eozK)n5MQk5+lO{4-u>qGezvrk+Fx?a^{)`P?c#CDO>v}V2YaL0O?0i zhBpmGi( @u%xz5C(Y=vM7%rFC=Y1?O~jp@s; zL$GGcJW+ZxwcTyP;doDA%t7qpnsPFE5cVek51@`@FZN6uAUbc%C4cD+){y{J=GsSu zUYqf(*ylMdE3RQyCD?ShNY0FB(VjotGes5xkQBfWS1l{uJ2ZX*D5}nrZIiKVKLc$l zYQ&gLj6>kI+3mx1Kik>BM#c59d7dEGD_G_Ba~We o{8g}yS{Y)#CK*)LWSnvX zPI?hX>eejSUpI=;Yyw^qr`QGtX6=o@H>@^V6*n8<0pJsO=+$S^yW#^03hEcR-qY|< zk_z}5@HwtC2MO@b5zEoQ3kyTC_3f^FP0w^$N;s~k{ua(-hspxQvg`Hj3d;`yk*`Q6 zvF9YhS1@iT)JG=MXb(z6)CRgnNj@YdNy{}l8mXAtBIby^f+Uw=)Nf?E(3+U~7g-af z;yx`(XaPvNlF?@0pVMVt6c{Jy=OM@^C4+e~g-bFJ!ETxH7W$x|)=Nodg<_RGkYB(9 zAP5niv`+i8W@m-1Dcd7+=Gv?RiYz(6F2(88_nB!kf75q< jeN_ z57qxkzm9Kv+uPp!mbbj+cYff5zv-X;!e8^HZ~xfyFQOta4ej=33gv1W?#`!hJ{>|i zn0ZX?#f&-7KNqIF;q?6^e7?0ocBb}?g O+4XV7CK= 0oP`UG z*(sl{uXMZfstPUZupZgr7!Z_jeRb8Z&lY+~%W-e3SPr<}?#doXL$#xMCL@HhT^Ufy zJ-ByH;du8#Kj
>Xk!dO<$7?BmK=96C+|0RM3FU&;W%%dcQj-#98GHSt-!b zVw}-`KVKaD$*A`RH)vuWF2;eLfFM&RP~bHQsmf*#BP}7we9a95^qe*s(?!4bOwfp; zLlUH8fyq>cbfE=5m`=jDGQ<%Z8N+2Fnxy|v9u=rKswjZ4jRs#-_?D%OZUgiqpf?Sv zN7dgm?Tx@z(v-Eq)xVBduOK#!MTc24csi}pI9D_|^Ja_210W5krUDsj8!Qrhd^J&S z3N|+H#_4e^Roc~z&x*ZE`UfTrka?2Y@*r|74GlTgUDh5_+mO9fC0pQUu1U1vEUoz} zfH97KI;bd4o|+J)S6CNnVjq-p{!B%`*7lxD9HcB?i&1O`XB!weW|RLZTP$lC6a8`M zxqeyW&RDDTy^2a49w7 qWI+HwQC_O2fT56J+hDAdEIY;n9j43j>$;LuRM$6~(QI{puehqWT!(@%% ztpGv;9pwFy5L+4ty`JPSfl``WXHRlyRk%+c>&qIxb6?B%k8i_sH_ripG3ixPb4wYO z9PbT~Q!0$T?qm&RUnh_6?)v+mLhjenrsO%R3B)y6#U4`RrVMo{-Mbh^u3(y_%Q-J_ zJUf`^l8Zq3N3I@xD#Bg#@LEo?lQ+LX(X^iI5FMy)1Dr`Z^C&BG<3)NN1p%)}L+mfI zMX~`w#3*ydq?k@;4vb;8Bo0vy_m?PLPkJCoZR--ByswE}f41F!3GA;Nh7q8@Fbp73 z2e7sXPL5&bZ2zBy=ZES!IPb?OvtzNHqQFv*{ah(87~p~LJ(_q_t*Im*jWud`lPb<8 z_&bS3X?vivE5T}17J(0NTD&B%M3!W{=SAayloVswhTn{b-413G*qV&T%$dvxtNmVh z@viS9)0ckeBY)ug|Mo|J;_d(afBjef>`#6C<3Im^4d6|4dddI3UPi#vQvII>3<%-L zF@fzVoBh`V0z3l_o&f;AWI==Y6yN(K2Egkz`gHYiG!yV~%F^VM2*c^>8MVFSrm*+!^W^EIkR(*m_Qye=CsEN}dq65&pgQ&SQx7!^I zwJ0)Yqfj+zY>qA@cY01E-p3EsAj7g)NLRJ*ofOez1#Ao#Ua}o@)N;~{27R@aN{y5> zOsj(Qhia6U$W(yb=tye?wlyxqPJE(Sf`;ELB;ew^4fT8wHJs?Y6%6OQC0H^e4yvX^ zfh@X$%)_eas-XJ!_hz}xDb8rDPA4lC*I_J|d$T{Au75U7b%3rD^tpDSzH=f@gdCLS zB=`MFqn>lW_xHDt*)UH@riX0vYjw(Mb3<@8AJSK+HC|*GE5UQ~TfmUFG|pa+{nKnB zr*2l%_O%PfK)(j7#habZlyoRNK1mXh#Q1=0rLnk}n|lk_aDVq=xJpKO-ms`hqGi@B zfA9r2#d6_6>Q;o;gsMJ;bFc8v)0x1+F-h~v9O~4Y|G1l>!9;sE%ZGwudFV4OOMb=k zRW!*JJ-*CjRe0D^WJFU8P62M5rkOVdZ03uq+NAr+JSBb>HtfY48k-6>e=am}t(3S# zP5nys=q9Sb*@v#262UYuQx^*cj{AOa^6L{oycegIqaUey|4~J?7hFvAC`l%d?#vE0 zLk3lMRb*$7lmBksLB?@fPvLMTh1$$PXJge|?cfoT;IQwm*acD=bICS$d?r&QOyI)E zXo#HH;(koTWRhI&oJDj|{o;BxMU2sl!=)=MnyW|9x$YZY79hK-`I|_)Es~mKPRyKk zf04n6((18-iqcB0j#PpN$|15a+$>Z39)M5>P03cKX(Jk>C0y@zVGF%qmWkPnR;f|NpV?1E7an7Cff#1qNPb9(S^9-+yhI^uQ7v`y|pC z@4hu-fA7x`Bs;z71`DNs#z)uJ;jTS~w9KOgsSBpr9D%eFcK!Rd` Sxg#QE)%ZBjhi51fXtCFT{&`|P`T~c^4JBA;@QhK= zKl>snTEBO<>s`3%_soDv$gTqA6!xB1^VP9 a*iUR|AmGsr0E4_hOhcYGQEWAVrj^E)$@bP&U`e3# z#=dSfzaUJMnTk}fFJ-aHF7gh3RyLXmjFPNK%qSL{ nVM)o82b4_WJfz+R5F9@DgBx(O3Se`Hv#~4nVO>eQq%gRRLBff zqkwdJ+nRR2=s6~155`N0k*Bs-OvdslYTgskEKgZT{l7N$O}z_W8UbKP9JBY {hV@_h~GCK#vTffPaKr?Eein+z%~BGPyo&x{zW90HiVlQA^bPfimrKlag&e)PxsKR@>}4gYIp0=(X)KZGa82Zr!ubHHaHz%u~gSM=onjfnXB zg)sJeTJyjAx4rFcZ~5Xc{-Uq_x_{(%{?Y&QlRr1V&>O|w^>di)6j8Piqo!h%+T2QZ zb*33mYY!&yiKsO+XRe7`FHW#%*wJ)Tvv)e47^|kt;-OzG?jS3@p5m`C@y$eJt?(|& zRrYPn4jZd*qTVZBSDH}Q?4{m`WorhN3!K`6=}IKQa2Nx+ld^R2(WjJ(k7;lKr`C6M z=XM!GfkrJ2A|23aT1EH#8R&Ts)tY?~e`-(`t(hWPl#(4bd3K{YP1O=7w`-DNmNk#P zsJ^+{qnSRO@58wky;cf$_vdgttzoy{gzc78XlH6LhAa-(B91O}H**{xkRHxi_u- z&vtLO^G%p{mgODT0Ar$1@HuOY4<@2A2vb>sqqTYQ(r?jv40ne+$Q+1b$VncP%mUEJ z-SA_J4^9D5oz+-HIpt#p3MquBn3}?wjyBC|9Bt`XVbb5X6@*4tfAR1bW@wyJW*OK~ zZn9<#0jkX9RD_v_#GFXSH!cYZn&`5K2W$mTA&|+F(Wy=HaI$qdMP*fUeO67I!?D5r z+gK?MirM5Cdd=J${HYhRv{c~9Jd6&dhsQLM+3dw><@%3JLJT;m^2lhd4P`ecbbjC5 zDZ065n5MsJOy7MX&O){h+WzP&2W>?FPP_nh;h~QQ(j)luXxmT$8K7ux1Tf&f-{eW* z&qu0g)TRI6b;#5}$D;ivv1r_E=H3i$!BRr(*YaSx)ZgOqcpG3?o+nM4Dw;M-5)J6u z#KGh_+~0-!y3%_BlhaIEyFKH!7bLMNY>2hWd@K^=LD^ZVV(zjU_Bi$!>{IDd^8k)4 z1kQ$`T_WIv>~`EFd3!*g%;zP$|3ve=dcNd2%7jZ(=j`Tynha)-_G*`@ttUnlXFce> zUG2?4ZmX07YWE426zm7Z5(SzJ!NyJF9v-c^yM82yG=eRJU)D&R%#@6&BQ{Cf_5Eg9 zlDsW0S@7KNvwUE qftN*-B z-V-RQjEb~Wne(}*Pwu-(|NZ0oVz_=&zcxD8IJjPMj@dI%UDD=pp`J2R#F7h= xNwJ2tdY~jDbE}dqs4GvnKB=fS5)~^2 zPmS=X+@v8v7@iB
(C38_`dhO?_0j{o4@&=zg_E>{Ot3OG3Bz&?Ra (J`Y|~*{eQ)st7+Jf$;67_^ z7nOw@X^e$jS54ayfK)HmJ=oCCoW36qXC6ThoN%3z+T@z%5nCf#X=M|R!>lIZ-&M3c z?#a;)2{+m*{yh;6x+ZNP5>7)ZHkH!DD W< za &y$JyL5UJ&4tYDRKm!@tPu^)Ap z&hYg~Al^2cpCoExtd|L40+Ylh?N`*3$}ztv#xUjwI^=YbUz9*oGHOf{S0%I4Fd5qR zCLzit-y0j(ejBBBN=}iliZZjw%?xT~nhTOBG6lUXe-aCF$Pb2Bg3N|0=Zcv4_ok}V zyKr-J754k>&}^@`=7p`O{n;k6Fus~brnwu#L9^=7TIu4#ZpjB;_<^38qo%~|GLDd0 zrM=d y7PMe0?#Ill9o+upU z^CD-cm|O*6(V7nmW;DdraImnsx#>;Wt~dW{zfLQ@r!1>dB}BvR-+w$FLf*ZJMeRg0 z!>auZQzJ~8Crl@8O;wo`B2Z2RJl>mo2xz)zFE{V5!)`b89++mk%F?THf@afG>h7D^ zQ4eVONpY(7JYq85v}cGN6Bvh@D;vc{wHjC#b;G?nuS#@C+}~C)5|qGF!$Ybqb+wQe zM6znCT(XLqmtEgKEe5lSC9s~26?2D)b(Plx!J;-|$AjcqR+OJly&>xj@@C$X(@|Eu zcEyym((9t%yhr=z`kr&u8@JlO=LAr5(SwWVO>c%RqO|{ZHyPD_2i>xD5=$<;Lse#P z272_@y?S&L))(&yJU33A&5-V@@3ZrEBGakS;X4Ub0ytyMu=vwa#$>6V54)YQ;&zzG zddwKiZ=LR<{UAC0+~UltQ@8EEX1vz@{gIQ!b{?jW$zw^IDB6;;5QMow=6YNg-A5&| zVBaaYR|jJ{l|}L(0i cn zNu806AbfRe8INl-Afq3sOY)dp`7XpH2sQy6u~XAn09J#<%os}$jo?opbHjF#0OUpk z!fBqvv8bu7OvpfFqp{ffGj71t)y*~I^7@%)AfkBy8M6xV6P(2siRk;C(uG#~BsA@R zbhMAU?hVaeQ`T{G7M$(d$-zc%j+2sE2&k5j^&DRSaL70YW)lHKmRJN-aq%tYfHEg~ z7*&E`4$m1oBRQ)u%LLI8as8|)@U~%pnqk-r)=49y#Ogk h zGlR@t*<%VD7;1^~M>XzsND^p#iD=x+J(6a9YO?LK<~)2W$Yxrw$s;@?HSt80L=Y6; zs??np*>u~QO}<7VnOk6p0jz59Xh>p2v6iIIPL+%$dAw%PQI)G=W0TAuIjD&SB-?ds zG9}Exp8x`9cDlJ|qU~AzLu_)M|M3rh=f4_H=kNKEKk@JVYajjSM}IspE^zyx>27Zz z3*e 3K#$eE!p)4mZ!;gsoKrRa8W8#0#l$rN*J%U0uhfj9oiaz379h zu5Fq{N1w9j>vHS`$XQcyxoB(h82yp=;z9s)9y(;1hyjVF860)CljxYzYYECXYIWLY zIMSPDHME5VRpI0sG+Q)NM2n$8ZgTb&CQGB+D5IUK=_MxtRn1Y74~`OM@ozZt$ %o*`^lD$qrai>HDWMUHx #H;M9ZRq&jM?8BKld2VqPpuveiCT|`McTE=; z-dJ^ithllyff8hrrSHYpmCHJ75AxuJu;Zg>QUR)e2!myUb(UCM1R0WHz*HBmQ^g^{ z{Wz#FEtI&VG2yO*!k!!H?@{{7CJOv++t-iLcPnKVu|0SQ8|j9O0%Vkxs3U_CZWHC? z6FHghUA~6sRgxRD|DRqwSS@4*Pa6XhR &2~Suy5>Ia8S@T);{7#mfP(xB(j~WBCH}*DWi!vpgBNgBF1vhE(@#Bo zVbf # l=7Sz{odn zKc`#2o2RKpkfbLJ9~~OM;+Y3+P=H8UDQVb{{yy~YN>_lfp&8ko`g`kZZlVn&8!%m; z#sfgUF}%<7e%ou41$+D4((qB?7`mUew#H9OxSn_5g?Pi}Nh(nQj$Ny2*H<7yPz{6o zXJ>78dVhTISue)2Fn2@~KK1L@ %d1BZNE}OE(4u_ zNY3z(ai-YI`ryyFM~G`~0Imj~C`yTHprQTy!vusNgGU(4608N_ng|ry`vpi-6+3I7 zD?l6m*j2tJxp57q+T^EU_i?3!BWVcHc<-B19w-bV%gUuAc)}Ew3V8+Oiva-bT4m-L zgFw_XYM>;~lM0DQf7iFCz9-Ia{pRob13&P-zwy^U@ZbJdfB8p$_7k7@TY)2h7Ct*N zu)T~-;Po`mPt!m@0|A}^0M9^!*Gc<-5(D6An*TSF>i<$;z*Mh?cfIqS|Jd*T_TT#h z>t;9q{P7%iSJz?Ri(aGLnJ(H)lES%wdj9 pm=-`gE~>a`I?sU_=6Mwf zFL_?LqWH2KXhm#_aOcJ}bHd+S1~v1ZvMBH_Tw7_iR~74`X$xl|7i63hloiFgZQ!{O zon@LJU2n};DaUQdrs=eL(h6IneAf*NrpC@5I>| O%^*Sl)&@}$~R32oLx7)D2*|WBhb8d3sZleAb^mLiD z*@Vl?n2^nEhIgj}Y07?LM6w$|lQ&aG(>!N)fakJ1pVx3UbF?WAeQwg^yus~QsShxN zD$*xkvcqgznWSlUTBOs=i{ku@F<6h)&wJfNn(~2?8rWD*g@}GrwzC66liwd97KXxO zJ!a9$gAQh8OK;{ajjMbJrF)0To@EwSn-n)q%H7`~T^J Z^c%TK6PvIi+LU~YC&}3 z=D<{Hs=uvKJu`An6M1VIEDDpvjOw`oysnD2jAFP{O}`MM*`f*}(!&=_LU@hfuq}t~ zBx>vuD4DPY&=hA$e-Fw{CYz4LDpH6?dnQq1o6Mo8hmONEZo&;LV8|?BL#)8K3Y@nY z{WXKWy_;vmsWnlN@hC478d1B?X8LDO+Ts3y0zXBL`%cIEFdMjH`WE>~*z;QzGX{Xg zyd;|MRaJrCZg`m78fqke*mNz=n%sqpA4wA+z@!vDZBwL4noArQ*F`EXy*rp3K$dWV zbb _Qq_GYRO-~qGC^u~!v zD3&T>a*wO4tFZQKc4a1a `p;c5T}3G%3Y{ zhHp!MFL(DxeC9a3K55i9ygC{inIP{QM6M45Mlz+c*|aCJWJc5`7$|J^i)h&P7HxW) z+a 6gRnJ%u_Z z{b JELY|o1JHZc4o^ckTYrET~(vJi31+PmU zu<~#;t8oS33Rn9KFf}z&&6zq8E_?PEmIQ!cQ4$_M- >9vM`VdT#f;E>VDpduE0G0dm;Utz|t3zJG&y- QdIqF~s$y9iBm^5}Ki!zVs sP&%A^JJ@W7tj6r=F~@bK7OSQFUau9x;YD!qu;pQe*h zhNM}E5GA@q_GJ6!{LT;jgTL>qfBkRx#vk~;fBhSO=BGdYvB0E&^ePR1dX0cUdxc)* z)tvr6A0WW9|2zW#e$l4?uQ%%N)qek4ssFDx(l5Q_Yo5da0OkKJU;M@I{;j|Dw|whc z-|?<*zs=iuU1ip!DLFjxdl8VYcfDxsg_UXWmUB3r&SA4=XzPs9$hx#2(?Ip7L20*` zKG4t<*Je$Z83fTRr#JghlgmL?TK)5KR G#y+mTuf!$b>Ge0vh-s`)BhYVg?UK&JVnjD^m9XE zrbxR;eXm{frJQ@Cea4g`DOcR5?LJN1_2SH?Y(X9ZK*UA0j!v<5se~#8pU~OsoEJm$ z6(yvJc-6#e-wWpLW(RlVfN3eS$AS9SQ}BE)G=PB @m6gfxOAW2b>h1dl98Zj6>M`axVR#V wnjgS^dQO^Jf @p;J*#9gcGX&Z5F ey{(tsW{;Ex zE`T(s_0><#ejSf}jqau!J>y*G4&p(EB)|u2u1d0{GiXwiycV%PoVDiK_n>${_)bJI zE9%hM4 997rGpW6c?Ndvd~vugf7J^)GrMQh9><%2#Uk*1b`lm04po3oy9J(U OS(e G^p5D2fM(SNzgzu}WFy!&16{H728-tYYWZOxVt;)0 zjRsvX2`g}93oZ?Wrrfkv(-ig=HM84N2fZkBIWb5jdNiBN0auT`%R%ukG!Crs!UDhn zY0`n^6wb%H{_kf`$_`_YZ12G)J)(aBNlrc$(OeChv5F!J^RQmT?DN!%`aPz1O&hVh z9%E9ndXb@m-CjH85x-+mP(?KUprX9VaLOC$rVM)b>A_*^c{G#I;YzJ7inze3{JHPv z=lio<$@y y@!vUbu?AqP%B%LU59_9D4EI?~x@6 z*n(o7y<1Rb0zg^dgzjxr9x s(T08Az2(#&=0CJ9+%9D-RW9+M{f%txeqyy(sZFseKQI6;kyc(Tz6m>#u` zf^tf9+~(9PkEkg$9Wgm6oo{85X8oKo5iE@?4>E=55N+V2-N2Yw5-!2%qf=imHQe>R z;%pA`#tKNvG7sK>^)+j*?MSSU8Ca7$G{-?GoSFALp}B)>$fjex$+>!N8xH3L6E|bT zoYzx`r&HhicEj;ncbC82)Nn95cF8KT+W`NfvkgQEp3I~TO|}ZoQHn*mpmT~E1$r9O zcd=MaF>Qn5+-L$Wm-!++?*ONmrV^>d)#R{W$CYfGbwGpid+48ecis1Oi|#N64D`5U zVHn-}?r>tvXCiV}HGQ+|c 4cm@Fu`y1}xw#Q(9OjSt=35{=iP{$e*W7br9Ei$%C+*6t;x6APs=g ^tlDaTRMuWDW07`9BD;?8|f+oXxlX$Z&_8Wgl^tp)U88q6RVu0Bc3ENcRA^*!T@zWzat3tOeYa zROPorubT|>JjMV*z886Z8#8I?^}xJQ)M)XEca+;m8pegIgH-~KA*E=%nB>8%qfGU6 z)C7(?I6~8B8RJIn=ZR;Du}zsyG7+rzGt=dxjZDKP&1R~X$k;drElh{Oa3j;Eu*f3? zw{a~>b73=2@GR*5yFse<)m%o5qp{3NP9wp_?ormY2c+958MW)(1TvxC?Z1EX7k<%~ z|C(R>rT^@AOxySTM?dr@|CzOv`#^7i^peIug;!1tcxjyALvSEI1vB7DDFB}f2=GSs ze7|BqfM)=}FWu( ;L}uzyCd7|Mg$@p}5(8+fUt|=F_r-FZfk& zrb&?LE>+l3pG{pbbgmd0Nbl#gt0f~JH_lbs_D0Qc;55Iw s>21@37^6*X;O-fuxoCp9j~O`F aG=BntB4rFO_Ga{Ea}~B}gZo(< zW8-pg?J%kFEw?eAicXP?w0fL-VRw8$c(gB=6rpH*@$22SbmMEk1}W_NJv6%Xb~D2? z32|$)z#p*_tPn>u7nf?7{iRi#;U1xQpOoaWYVB}(isnT!1_E6%xB}Cj#W^t|tSO>t zQq5Ds @W9aH%cs3{uH`DRfbkk5p(9ao?sw&iTJcNZ7$$vqf6VpS5iQb9L00f zH@$gDCW(;!T_P`7CVdFtWDgfK!S(W3px)Y>)%AG3R7mDedOq}PzQtZsCq+d8%rv%3 zf1alPOqW&bO;i6UrbJDiMHhDa-KF}{+Aji%7zGv}Kk-R%MzNX5crw9;6^xNu{~GHs zLRr~K6PRnp+*!lz{Q=Q*+wB#Lc%-3Zf|21OnK768qM|kj0iM87BH|J4xiY_$CP0qN z2HrShY_;1KuJ>0+0V&1^5 YvSk=KX%| zpM9auT9`-DegFW-_O#3iCmNuZ1VT~YUSYn CcsFlNh}(+ zCP{90O~9F_E#R5f^WT&l!{|qX7+H?;cnvdJy}t{0>oHtg{HX0=)eXy1xay6y$tCXZ z?@{ CW_1PDk)BA@*! z=`2bd7}%cH6oW@E2i6_f32dW3S9wfao>j8#nKCiCCvSbgF6qCu^oQ#` dSE<3Fig}gqO_ZEf4Sf~0pXpX@Fc?hm zMuW#`MDBWu0Y0;072wfQ9KGRZn3e{>x}*!ZW7h>qF2=l*FNfV*tIbb+@BQ-k{)Vsp zL;up3{Q3X#$A9#DfAS}P^1tcd@+iE#CqQ^flmBW`fE1oS381}-T;Ov70iO8*JOcoJ z**5>-3C(|a1DpT!Du16?Mugk9yyc6(>g#^{*Z -O7-HW?(c+;cjG;v;7 zloZ#nSp#24F)vM->zcwP zIdNQYy^BV$_O6fTBQmaGEd`o)rYThzBnIW7Yg(Pj5U@*Z1%65A-mCWpZ_3KI);&2D zL=Tq!xea(R4}v%bk1VF)Y#lWP$SgFhvYw2RYi3&}mMNS<*mG(oZA)LX*)*7|p4lp+ zzaW1N8T c#br^JFB3C10DKs!GtF=rq#+XG$#lkoCT)$^L_^P5ld_YU zZ~=OJE@Ps>$%~w?oz>e^s0%m)(gup=1l_wEFycC%mv9S{vcl#?_a@1t)BwNz)h_Hd zI}0!9*Xcayxtzp>QJFF+LZ8+PP}JWI5v0f7fMC3+csFaJH@j;9OH4ozK&mKGyM_kV zVY=+oUAg2V?yPa5g=afYoM~pImDE+h1dY5Z;xoC|Z4%i%=r?7uSQYyR_5$eVY#`w9 zU8wQ3->+zP&%GJQ{h8-JV3XiU)@hT9*6I;~%Dm@Pm^9+0-|y4mG@4BJD{(_ie3!9> z`ZM$5-QzIt`yL#2Y-IZXA5AWHcZ9JTw629sZ;k{pl8iYA&BZ}EnW37KeiksZHlOaY ziM>A_!?8Eaxv#(db$_1b8I5_W7YcTCrb2)2?oWr_#2m3s>?RrA{5s#L1(0Uj{a>to zj$CJLy)?|Y7fG4k4sLn#5~6hF5+b>YYX9HEN;*9nO*6Q)*f|#pS9+LiH`~6?&EdXZ zZ_}fTXE9_=9y^$v7LVtpU5FG&I+!V~2s1xbECL{=VZP|T063XzqZ}lOULHnh%!tFZ zNqL&;0Q0KU=23a{(EC@Hh{&|p89kE!xuhkE4sPoZ?N{-0q4n!?#{D%~^|{|$1Dms@ zFEsAXhUOP_l}fXd=Z+FGWbzg-Q69m4aDc6w%g~en;@Lh=Nn0ILW-z^~en~EcBptup z4py{_scLO58Ps4v3~d*SxF<+eTw`c1(^Eo`Pq@`kBe}-FkV2NuENRT7C_cz6Dgmux z5-!C^T0J)5oL>QATjGqt<2G=JRjf4w)cR+)J*>6^*Q+rvWu|L2!gjtwlE+5yzcEkZ zyby5TZ9}^|;6BMdnEPn|^L9HE%t#MgMWw!gX(q~ltvY)m_T`jZ&Z49bO!0XH!%X zYQwnLy%1bx733-5a*Hf8P8uc_u`|+TID!NKnV>e82kAR-izcI7(bpnzV1YoVDkI+1 z#-IWu&q$NsDgXx&fk|B&k{85u028i=3C6>}x;bOyo>H1iYU)Kw+W&Jr+=VxN(Ocf} zyFc pFXVf&wb)kXu_?DnES7?a-tR2 zsA-%~?9zsrnMc`RcUwhgkIDmDXui@C>AbFOwp`Sugn`6Y6)dN-^4=3o;o?J=SkQP~ zllCCuE{KJoN8Fl1)6#A%Te&eB40J{td&kS|fHcAQ|K7Pdry%jgnlj!wbzviHMXO~5 z&%IHzNs+l+r=hx%)4lYm$&I0+H2D_;dLX(rdTbaE)YIL)BFB BHbFy-(aGqVP2!27)Pl^$Xq)!^aNmctrwPqkrAP*9F7vrT zWAkL7L=+yfjVf(^Qe58w*VLwS*0k~MR8ijZCDz^h$>8gy(c!z!V`^sX0Gs{{!fpSD ztKP_OEaq@#99;0c_bMQ#6_xEQUO5%)hkswou@~6IDBJy0n6cH({tC3~Dwp}1rJIdy z6b*2t@6FEfegVxgx>;jjVTp;?2(+#;==X>qT`QYT!%Xs?QFtEfW ViK^g8&f1lgyeZLMn6f$m%iMg3NjotM%i(7do*yoznjHD1ov0)DA6`AjH z=k_K-bWAIBA@f|boc2B2+-B$*Mu8sr9Oa$hl+mE6M@T`jb!kvbt4zy=OLe2+CMr)P z>q%#;V#?DRk|Z99CLS>Ty1zRrCQJIy;xT&@BiGO@^3$ifXu_zZfKX&g<-gKs%A07Z z_FfOS_u+my0lb?cKl85d0sGw^%ocDE(#6>upDc>*+nX X{t|%W4y$yr51+|$Ejalo7iDlWU>r6 z^k@3PVC+beRRC;gdfG0y@u@f1&6qw(`%%>cjfhX`=%Xg?kZ~N(;c#M-N>KVkk^X!J z3U%&(w{a`Fe(h#Fds(0|9M)A*nxr7riB$fOwZ^!nOf!G%jYm=n$9->1wpR`NHKxj$ z2^CR3CFkQBPPa$=9-lQarqvh$H&@sAo~p<}$V80shK6ubYRRhUr93jCa?f)XmA?%` zu&SgFG#{DCD`u*fWIjjP%&JB)34Es!pIzsxo4#L_-lUqTrBUL6a2Cl3wAp!j#6+f; zHFh~~!~N}x1YY}Ev@^vf_NLp1XT=EZWdlow3V}MX-io9riur6}AAu5{g67l>6My_d3a %#rjXgI&e9m{1z$(YeZ#K|=-u`>yAC(CeXZ7lS8y zL}ir6P$K& 0c)vAp5e&5 zKgV8!HL=J>a8CAwi#C!#f>Ljy8yRw>KNu(U!;qn7ys*FQ9)YoHVDwBEKm0y6x%P9< zNs>4g_lR;ikPIT_@ek$+qF>EmTB#H(1|K>{rZ^-ZU=741)(HhLsSq4E+5X!Lu5bRX z@A>|Z{ls5?_n-SSKm6~nYq_&B;6a1_Bp~3mfB`SpOurfvAiN4g;PVLrJYxVnYuG=h z@A-wG{XdP<|EqZb#3$(e(<@B=4`2GWFa6cO?YI55f8)#E@m0U&r$6yLT=tVPOm~Lr zHZ}g(cuBE~n6%5`w5?%vH*ZbyXtcw?98^R`Tk}Iw*|zvMD_mAL&|5W0kDR2rcB oqi4^(OU6UmZ*z9cjFE9dy>e@f{glVTu(fR$7b9fH0CJXb{BCd{Te9Sy- z&ZHzea?~Cc1V(?3%>2FUpKCRG-Y}h#v65(ppckh&JR>lLLD~-|H_bJVjZByzV>Pm2 z(qI`t8|~s>(@^(9_x^l@t1{-Jk*?= De8(DO^cX4mLUNPh&z3T`(G#gqSgy z|Jm=|zzt(+@pDtYI4!5(ynKRvE=m_QHp-FPsplRWd7%MweU!4%J5%O+2#QwXGoO>s zS=zY1vI~^cGz)R0e0WS3T;cEV9Qq`&>K_d#+irT}-|zPfvplXVQq(8tN*UAW(GUVI zTJTYJzk2kSunG3v-D5_{X& dI!CK@q(#u#-lQ&*jPhoBp+tFOh^kI6w0HppZGEI7ckHRJsUtxI zGlz>w6Y+`7u%^@VD6QNajOL1Cn}@;TL98A!DU!>Dle@xK?bmwV#R`MeNali7`fqDB z`4~1t)PY@+3|u&inofU~D1QLtp_{)*-;+0$#+s+a3E%NicWqxJiKeDN5}qT$K_ zvzSIypE1o0Fz|D0c$3?{bLx9&-_PgknT>$V8l&>)qsvd!EEO?nf~K8r2+4@iG$!?I zq$kLvAb$|6!2lPFO$BVw2wdkN=699a-Oi+b#$AOCr ks2FA1CO@3uj8w2U(bAYJk0=%jwqeAYwgtVYAlQ96rZ&bD9G}0DUzTxrG`Yg z?O$X~5o{xCp6W!VPm{baDhiQNo&+J5aw6kG2_Xh5ECznqba}TEy*rHtj-Y9jDTW$1 z1A-2>p`9o*S?U7zmA&W9%}u{gd)=29u69@9{_e#wfp>~JBp^D)A?s@w)?+J@%|w@h z wt0{ zMw>0x(Q!fwA@&61Awz=F aZqLVGv++M 4|Nmi_w%a&BL0F=xY@1RJueI z9HfJTre_CgzGNrUWQv7rk!C!(?zQL)fJT3X=DZG6*Uj#tsKRwbAtf~w7bo1x?@_Oi zr+q(UEPHkvlvhK#bYqc=Mm953HmHe);Y#9!zIp=^8SBEBKkCeja_Xb@VVDEj`-kqJ z7gI;l5>K|7o0-slf|*l7`%^}mc@>q9gJNhR=rpgmq6Nlp{RrAr(B`HM9kFvDh`~&8 zyBD)2p!Kqg<4}~TTK{^Zlp^MkVrCqmQ3f}&y>>s)jgXs5y~K^J3E&GfXEJRBN}ewb zadfJpD87qLXU_M%@h`mIRxH?bdX8w^qNEvZ7?cU{Nt%or`=XH&&p~oil7Z7%eJZJm zyZJ;|qpG+%J0!zMRA=E2Ic4R+kG3;2Rlt}ECK+h`^Y1oS09c9|R~+#D&@~{)Gqw$& zv2|fFmxsfFeW576-Ydq7e4A50>A9=0Bmxh``KT;(;dcHAF;$22IULucBJWHmUyyNb z@AYsv_2%=;$(GEOEVKIh>KbNrSP!Dzk}hvQ)6V*3WT8VEVb9OfFfCZkF+Yc)Uj~)Y zt}*-)c FBiXE_}QH9MpWJF|n+dYVc)6_?XRu($&OD|kUH zNnQ(?#e3m>x3V`U72he01QBDJoNph8vo%0I>4pb{O*M@fvB3n?8lqOq@R|f0XAW{b z&noun@OAJh9r38%RQ3k(Zn;+kTi+9n88vU b9>HOL04!hTdrS>5?U$lqZH9>3VVC zuL4n^qYu;!WBO@SceNAt40s|1_sT_n12h$d(bvk!?b)V_5; H122kpK$wFjf{pO08)b8Z5m z;z)Y2bz{;hTPc?Gk UQ9pn@_ez}(4{m-M%Gf3W7oaMXTB&raHABYb1YD2Xfv zO#7U6ZqgSuN^mt#WS~WynKTfybM?Nj1AA0c;<>k(GCXR^nq;6aQ#3V#L$YF^W>xOI zWrW6AXG?8Ely>hYRUh;JpJtL6LF8qhSr}?FrM}YzBla5B>h|#L&G8l4Vp~&j=O< z0VEj12YTsP^B-N-)rcaxoGHnW?$Dc+>rKDk1`HZN(bAAvP