From 4df954349d7f7e868578a23622fa65544a6cedf1 Mon Sep 17 00:00:00 2001 From: hzc1998 <2323168280@qq.com> Date: Fri, 1 Apr 2022 20:25:28 +0800 Subject: [PATCH 1/6] feat(*): add kernel base doc --- SUMMARY.md | 20 ++++++++- programing-manual/base/framework.md | 68 +++++++++++++++++++++++++++++ programing-manual/base/start.md | 27 ++++++++++++ 3 files changed, 114 insertions(+), 1 deletion(-) create mode 100644 programing-manual/base/framework.md create mode 100644 programing-manual/base/start.md diff --git a/SUMMARY.md b/SUMMARY.md index b4d7305..17af6d0 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -5,8 +5,26 @@ - [NXOS 简介](README.md) - 快速上手 - - [Qemu虚拟机](tutorial/quick-start.md) + - [虚拟平台运行](tutorial/quick-start.md) + - 内核 + - [整体框架](programing-manual/base/framework.md) + - [启动流程](programing-manual/base/start.md) + - [内存管理](programing-manual/mm/mm.md) + - [buddy伙伴算法](programing-manual/mm/buddy.md) + - [heapCache虚拟内存管理](programing-manual/mm/heap-cache.md) + - [vmspace虚拟地址空间](programing-manual/mm/vmspace.md) + - [调度管理](programing-manual/sched/sched.md) + - [线程管理](programing-manual/sched/thread.md) + - [SMP多核调度](programing-manual/sched/smp.md) + - [进程管理](programing-manual/process/process.md) + - [系统调用](programing-manual/process/syscall.md) + - [中断系统](programing-manual/irq/irq.md) + - [延迟队列](programing-manual/irq/delay_queue.md) + - [定时器](programing-manual/timer/timer.md) + - [驱动框架](programing-manual/driver/framework.md) + - [单元测试](programing-manual/test/utest.md) + - 用户接口 - [API设计](programing-manual/user/api.md) diff --git a/programing-manual/base/framework.md b/programing-manual/base/framework.md new file mode 100644 index 0000000..f3c64a9 --- /dev/null +++ b/programing-manual/base/framework.md @@ -0,0 +1,68 @@ +# NXOS 框架 + +## 一、混合内核框架 + +`NXOS` 采用混合内核框架,也就是结合宏内核和微内核。这样的系统有 `Windows NT` 内核、苹果 `XNU` 内核,还有国产开源系统 `RT-Thread Smart`。 + +``` ++-----------------------------------+ +| app | ++-----------------------------------+ +| (fatfs, extfs, netstack) | ++-----------------------------------+ +| nxbase | udrivers | userverce | ++-----------------------------------+ +/ syscall / ++-----------------------------------+ +| vfs | hub system | ++-----------------------------------+ +| kdrivers | kservice | ++-----------------------------------+ +| thread | vmm | irq | timer | ++-----------------------------------+ +| arch (x86, arm, riscv, ...) | ++-----------------------------------+ +| hardware | ++-----------------------------------+ +``` + +## 二、目录框架 + +### 1. 项目目录 + +| 目录 | 描述 | +| ------------- | --------------------------------------- | +| .vscode | vscode的一些配置文件,有gdb调试配置 | +| configs | 平台配置文件,配置了支持的平台 | +| docs | 内核一些功能的文档说明 | +| scripts | 用到的xbuild脚本和kconfig脚本等 | +| src | nxos 内核的源码 | + +### 2. 内核源码目录 + +| 目录 | 描述 | +| ------------- | --------------------------------------- | +| arch | 架构相关代码,x86, riscv64等 | +| drivers | 驱动程序,磁盘,输入输出设备等 | +| fs | 文件系统框架以及各种文件系统支持 | +| include | 头文件 | +| init | 内核初始化以及main核心 | +| io | I/O驱动框架和中断管理 | +| ipc | 进程间通信 | +| kernel | 内核其余模块 | +| mm | 内存管理模块 | +| platform | 平台支持,存放具体的平台,比如pc平台或者一个开发板 | +| process | 进程管理,系统调用相关内容 | +| sched | 调度模块,线程和SMP的内容,以及同步机制 | +| test | 测试模块,测试框架和测试代码 | +| time | 时间模块,时钟和定时器 | +| utils | 常用的功能组件,小工具,log显示以及字符串操作等 | + +### 3. 平台框架 + +`NXOS` 采取架构和平台分离的措施,其原因在于,一个架构可能有多个平台,分离后可以服用架构的代码。 + +| 架构 | 平台 | +| ------------- | --------------------------------------- | +| x86 | i386, pc | +| riscv64 | virt riscv64, k210, d1 | diff --git a/programing-manual/base/start.md b/programing-manual/base/start.md new file mode 100644 index 0000000..fcfb490 --- /dev/null +++ b/programing-manual/base/start.md @@ -0,0 +1,27 @@ +# NXOS 启动流程 + +在设备开机后,处理器会跳到一个地址去执行代码,一般都是固定的,然后再从这些固定代码跳转到程序员自己编写的程序。程序员自己写的程序就是裸机,rtos或者操作系统。 +在nxos中,不同的平台会有不同的执行地址,所以我们需要指定内核程序的入口地址,在链接的时候指定一个标签 `_Start`,当执行到这个地方的时候,内核就开始运行了。 + +## 内核执行路径 +``` +-> _Start + -> NX_Main (内核的主函数) + -> NX_SMP_Preload + -> NX_HalPlatformInit (平台初始化, 不能使用内核的功能: 平台开发者实现) + -> ShowLogVersion + -> ... 内核功能初始化 ... + -> NX_CallsInit (初始化调用) + -> NX_HalPlatformStage2 (平台初始化二阶段,可以使用内核的功能: 平台开发者实现) + + -> NX_SMP_Main (SMP初始化) + -> NX_SchedToFirstThread (调度第一个线程) + -> NX_HalPlatformMain (平台的主函数,什么都可以使用: 平台开发者实现) + +``` + +如果需要执行应用程序,只需要在 `NX_HalPlatformMain` 创建一个进程即可: +```c +NX_ProcessCreate(name, path, flags); +``` +未来可能会改成其它机制,不过目前是这样。 -- Gitee From 8880e9fe167551af10650e582644e64201b7b037 Mon Sep 17 00:00:00 2001 From: hzc1998 <2323168280@qq.com> Date: Fri, 1 Apr 2022 21:50:14 +0800 Subject: [PATCH 2/6] feat(qstart): add qemu exit note --- tutorial/quick-start.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tutorial/quick-start.md b/tutorial/quick-start.md index 97e78cb..b04de2f 100644 --- a/tutorial/quick-start.md +++ b/tutorial/quick-start.md @@ -91,7 +91,8 @@ source setup.sh # linux环境 make prepare && make defconfig && make run ``` - +* 输入 Ctrl+a x 退出 QEMU +* 输入 Ctrl+d 退出 GDB ### 2. 步骤拆解 -- Gitee From 82aca8acb48899e315b72665418b651996b1c15e Mon Sep 17 00:00:00 2001 From: hzc1998 <2323168280@qq.com> Date: Fri, 1 Apr 2022 22:04:44 +0800 Subject: [PATCH 3/6] feat(mm): add buddy mm --- programing-manual/mm/mm.md | 47 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 programing-manual/mm/mm.md diff --git a/programing-manual/mm/mm.md b/programing-manual/mm/mm.md new file mode 100644 index 0000000..836d698 --- /dev/null +++ b/programing-manual/mm/mm.md @@ -0,0 +1,47 @@ +# 内存管理 + +内存管理是操作系统中最为核心和重要的部分,这是由于很多其它模块的运行都需要内存的分配和释放。内存管理分为物理内存管理、虚拟内存管理、进程虚拟内存管理这三个大模块。 + +## 一、物理内存管理 + +### 1. 描述 + +内存是操作系统运行的根基,处理器从内存中取出指令来执行,在进入操作系统之前,一般会有引导器bootloader把内核加载到内核中,然后跳转进去执行。 +这样的话,内核也就占用了一部分的内存,那么我们应该去管理哪部分内存呢? +我们需要管理的物理内存是除了保留地址和操作系统占用以外的空闲的内存,这部分内存就是需要在操作系统运行的过程中进行静态/动态分配的内存。 +`nxos` 在 `qemu` 的 `riscv64` 虚拟平台中,内存布局如下: +```c +/** + * Physical memory layout: + * + * +------------------------+ <- MAX PHY SIZE (TOP to 4GB) + * | L3 PAGES | + * +------------------------+ <- KERNEL PAGES (TOP to 2GB + 128MB) + * | L3(K) & L0/1/2 PAGES | + * +------------------------+ <- 0x82000000 (2GB + 32MB) + * | KERNEL | + * +------------------------+ <- 0x80200000 (2GB + 2MB) + * | OPENSBI | + * +------------------------+ <- 0x80000000 (2GB) + * | MMIO/UNMAPPED | + * +------------------------+ <- 0x00000000 + */ +``` +我们需要管理的内存就是 `0x82000000-TOP` 之间的这部分内存。简单的说就是对一段或者多段空闲的内存地址进行管理,可以进行分配与释放,让操作系统去使用。 + +### 2. 内存管理算法 + +#### 1. 原理 + +在 `nxos` 中使用 `buddy` 伙伴内存管理算法。为了便于页面的维护,将多个页面组成内存块,每个内存块都有2的方幂个页,方幂的指数被称为阶。在操作内存时,经常将这些内存块分成大小相等的两个块,分成的两个内存块被称为伙伴块,采用一位二进制数来表示它们的伙伴关系。当这个位为1,表示其中一块在使用;当这个位为0,表示两个页面块都空闲或者都在使用。系统根据该位为0或位为1来决定是否使用或者分配该页面块。系统每次分配和回收伙伴块时都要对它们的伙伴位跟1进行异或运算。所谓异或是指刚开始时,两个伙伴块都空闲,它们的伙伴位为0,如果其中一块被使用,异或后得1;如果另一块也被使用,异或后得0;如果前面一块回收了异或后得1;如果另一块也回收了异或后得0。 + +#### 2. 优缺点 + +1. 尽管伙伴内存算法在内存碎片问题上已经做的相当出色,但是该算法中,一个很小的块往往会阻碍一个大块的合并,一个系统中,对内存块的分配,大小是随机的,一片内存中仅一个小的内存块没有释放,旁边两个大的就不能合并。 + +2. 算法中有一定的浪费现象,伙伴算法是按2的幂次方大小进行分配内存块,当然这样做是有原因的,即为了避免把大的内存块拆的太碎,更重要的是使分配和释放过程迅速。但是他也带来了不利的一面,如果所需内存大小不是2的幂次方,就会有部分页面浪费。有时还很严重。比如原来是1024个块,申请了16个块,再申请600个块就申请不到了,因为已经被分割了。 + +3. 另外拆分和合并涉及到 较多的链表和位图操作,开销还是比较大的。 + +#### 3. 实现 + -- Gitee From cfa1d2d9e0aca1f2a5e2bf04695c53df885d3084 Mon Sep 17 00:00:00 2001 From: hzc1998 <2323168280@qq.com> Date: Sun, 3 Apr 2022 02:13:32 +0800 Subject: [PATCH 4/6] feat(mm): add memory management doc --- programing-manual/mm/buddy.md | 78 ++++++++++++++++++++ programing-manual/mm/figures/buddy.png | Bin 0 -> 75304 bytes programing-manual/mm/figures/heap-cache.png | Bin 0 -> 109122 bytes programing-manual/mm/figures/vmspace.png | Bin 0 -> 51180 bytes programing-manual/mm/heap.md | 45 +++++++++++ programing-manual/mm/mm.md | 46 ++---------- programing-manual/mm/vmspace.md | 58 +++++++++++++++ 7 files changed, 186 insertions(+), 41 deletions(-) create mode 100644 programing-manual/mm/buddy.md create mode 100644 programing-manual/mm/figures/buddy.png create mode 100644 programing-manual/mm/figures/heap-cache.png create mode 100644 programing-manual/mm/figures/vmspace.png create mode 100644 programing-manual/mm/heap.md create mode 100644 programing-manual/mm/vmspace.md diff --git a/programing-manual/mm/buddy.md b/programing-manual/mm/buddy.md new file mode 100644 index 0000000..dc0b771 --- /dev/null +++ b/programing-manual/mm/buddy.md @@ -0,0 +1,78 @@ +# 物理内存分配/释放管理之伙伴算法(buddy) + +## 一. 描述 + +内存是操作系统运行的根基,处理器从内存中取出指令来执行,在进入操作系统之前,一般会有引导器 `bootloader` 把内核加载到内核中,然后跳转进去执行。 +这样的话,内核也就占用了一部分的内存,那么我们应该去管理哪部分内存呢? +我们需要管理的物理内存是除了保留地址和操作系统占用以外的空闲的内存,这部分内存就是需要在操作系统运行的过程中进行静态/动态分配的内存。 +`nxos` 在 `qemu` 的 `riscv64` 虚拟平台中,内存布局如下: +```c +/** + * Physical memory layout: + * + * +------------------------+ <- MAX PHY SIZE (TOP to 4GB) + * | L3 PAGES | + * +------------------------+ <- KERNEL PAGES (TOP to 2GB + 128MB) + * | L3(K) & L0/1/2 PAGES | + * +------------------------+ <- 0x82000000 (2GB + 32MB) + * | KERNEL | + * +------------------------+ <- 0x80200000 (2GB + 2MB) + * | OPENSBI | + * +------------------------+ <- 0x80000000 (2GB) + * | MMIO/UNMAPPED | + * +------------------------+ <- 0x00000000 + */ +``` +我们需要管理的内存就是 `0x82000000-TOP` 之间的这部分内存。简单的说就是对一段或者多段空闲的内存地址进行管理,可以进行分配与释放,让操作系统去使用。 + +## 二. 原理 + +在 `nxos` 中使用 `buddy` 伙伴内存管理算法。为了便于页面的维护,将多个页面组成内存块,每个内存块都有2的方幂个页,方幂的指数被称为阶。在操作内存时,经常将这些内存块分成大小相等的两个块,分成的两个内存块被称为伙伴块,采用一位二进制数来表示它们的伙伴关系。当这个位为1,表示其中一块在使用;当这个位为0,表示两个页面块都空闲或者都在使用。系统根据该位为0或位为1来决定是否使用或者分配该页面块。系统每次分配和回收伙伴块时都要对它们的伙伴位跟1进行异或运算。所谓异或是指刚开始时,两个伙伴块都空闲,它们的伙伴位为0,如果其中一块被使用,异或后得1;如果另一块也被使用,异或后得0;如果前面一块回收了异或后得1;如果另一块也回收了异或后得0。 + +算法的具体实现不进行讲解,除非你需要来优化这部分代码,才需要了解到,如果只是去使用,那么就只需要熟悉接口即可。 + +* 优缺点 + +1. 尽管伙伴内存算法在内存碎片问题上已经做的相当出色,但是该算法中,一个很小的块往往会阻碍一个大块的合并,一个系统中,对内存块的分配,大小是随机的,一片内存中仅一个小的内存块没有释放,旁边两个大的就不能合并。 + +2. 算法中有一定的浪费现象,伙伴算法是按2的幂次方大小进行分配内存块,当然这样做是有原因的,即为了避免把大的内存块拆的太碎,更重要的是使分配和释放过程迅速。但是他也带来了不利的一面,如果所需内存大小不是2的幂次方,就会有部分页面浪费。有时还很严重。比如原来是1024个块,申请了16个块,再申请600个块就申请不到了,因为已经被分割了。 + +3. 另外拆分和合并涉及到 较多的链表和位图操作,开销还是比较大的。 + +## 三、框架图 + +![框架图](figures/buddy.png) + +## 四. 接口 + +内存管理最基本的接口就是分配和释放。为了能够支持分页机制,为页表映射提供内存的支持,将内存分为页面大小进行管理会比较合适。 +所以,分配和释放的基础单位就是页面。通常来说,页面大小是4kb,也可以更大,但是由于4kb在32位操作系统中可以很好地对4GB内存进行映射, +所以,4kb也就延续到64位系统了。所以,我们使用4kb作为一个页面的大小。 + +在初始化的时候,会创建一个 `buddy system` 来管理一段连续的物理内存。需要制定物理内存地址和物理内存大小。 +```c +NX_BuddySystem* NX_BuddyCreate(void *mem, NX_Size size); +``` + +页面分配函数,可以从一个 `buddy system` 里面分配 `count` 个页面。在MMU映射和虚拟内存管理器中会使用到。 +有必要的时候,也会在需要物理内存的时候,直接调用该分配。 +```c +void *NX_BuddyAllocPage(NX_BuddySystem* system, NX_Size count); +``` + +页面释放函数,从一个 `buddy system` 里面释放某个地址指针,该指针必须是从 `buddy` 系统中分配的页面。 +在释放页面的时候,需要引用计数为0的时候,才会去正在释放这个页面。 +```c +NX_Error NX_BuddyFreePage(NX_BuddySystem* system, void *ptr); +``` + +有的情况下,当一个页面被多次使用的时候,需要去增加其引用计数,来避免被释放掉。 +```c +NX_Error NX_BuddyIncreasePage(NX_BuddySystem* system, void *ptr); +``` + +在使用页面的过程中,可能会需要把一个地砖转换成其对应的页面结构,来访问该结构里面的成员,这在虚拟内存管理器 +实现的时候有使用到。 +```c +NX_Page* NX_PageFromPtr(NX_BuddySystem* system, void *ptr); +``` diff --git a/programing-manual/mm/figures/buddy.png b/programing-manual/mm/figures/buddy.png new file mode 100644 index 0000000000000000000000000000000000000000..341ad4973009493584388b3f6e5d57ded899fa7b GIT binary patch literal 75304 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

&RN zp5Ng^2n;Y1p8d8`IvW-b@|Y6)k~vPG!*IY6m_T{}$@!}UsvP^hybg6u5__H)y6^NnWXN4-Ox*vWB8eo>1-XrAg^UuHPU$x>N#NK( z5bEeuv4&$D2hh2I{>uewtBqEi9vzi%ul1|*ba-`&u~(kg_d2cZT6c`sgPVN99Q$2+ zleHgZ*hl-bn%Qe$?)dB?;MdXzwQkGf<#`1dDQr&exQw0Q$QssYSpsd({s}c%0{h$f z|4YFE$PwowfrE3S{#R%;5Y-)bBSi}g^>MYM@=0U4af$N!%gp8TDXkqgo{Dw#_amKa z8_`X#P2y5xtryeD2laV2V7)8^2B0wZhE1-T*o6SKdZ*(CFK5NvFJ=P7%Z>+~%!%x{ z_AoFYU~q8^85o(_L@uW?=OZb6J0vgakA*u~H8 zooLmKi5Y((Jnz;TB@?IzpQy}!TD^A}u3hvht!2!E?=vU4xI#Sy^W4v&jH`0#-(-t zukoV}iwNbI)xxTvaf6__=Z*o55J6|>XLsiK?5-i?fY&LenvQou$RGq4Q#Kq*`w{!& z`XSP}ty*zhqPF(9Ww6^63VAFpdORp`~#HuaxM)0KkU6{SX9}zF03U8h-3+p6$JwVibxKMf=Ds~ zk`Wb@oHGTYkerH8RMj1e*6!ZD_ub#Q=RDtYf8712 zsfJo}%{kH>W4!O2nx<|ebf%s&i0@4=CEV?=bn{;PTmJojoRfs?o$HxJzv@YGiucqX zbyyJSdG)+_5n{b0z9N0iA-n2U5tMzIxVG3gi=+5gI!RLK2<69&-wvR*f<iY&j|{#? zj#Ax3>cu^HEM-w3*I_I_L%0`uS8mI#5BIkfSyjam+l_83k8ht%T);h`;ZG4F^ysEz z#vY`%jx{ZkuaY&2ds@uc`{cuUT7d@UbQ+@7kIjzIW)|9x-|)s0Z^JJ?{<~dOl}$pP zE~MWzwr*fPr8rZfEu&wU$L9PBp=>Jg5|DQ?sTe|jS(!nKZ?VOJK#S7D(7$cW^X*%W z>&0ToMB?lZpH}TF?lb!dZ?8NO=JvPa6n_V|Y00mbMe$}^;lFCg%M=vkIg}R}R@gq% zseDtwX&{W1%&!Q9yUix%@n+|7M=dk&dWCUHkaoLkTUAmfthhZJ_RStH5L$q3Dt)S6 zUO@aJlr2_MR2 z3t031+MlMm=pUc;Hu}b;p;_ZRSQnz)1yYchB5O>3m?2ni8$SFRIo7$-` zlUGww?;6i{xA1n`xgMw1fr-VjTVIxTdrw!cROI2NwkufYR<#)-I+mAR)*O@R8>mD?@ z)dxKkkl--ir0Z{W%{g_9FE|%VOiuqA_q=1k$1Jy!nBx&jw})q@vMg7G*Xg9of${YIJL5svMF`u#rF!Ht)f>*veP6+Q z-uA8@*w~e&(X6-He{<&KuxIi!nUnSW-e<=i$?QE0eQK-Pn~fR>1jmj*aOO5l1{k~S zM65s3LEnL-gA#6i_6YzfHBay6Z*5`Wt$R1O6KFVl0oUMKV{JJ}^#(`>>O&&xj~#sD z`l35_3Ov`A?mvsviWyQ4PYF)XZ_*53Q4RS)wn}aj>#@tA2_7(*o~ixN&@-^jUaQBf z##PANPs|re1A4PpJGE9fkeSI zB+ER?BQVC2fnO=p$*n4A_Bs7SQFXgbNOtiXy~WxNvyOWm%k%xQ*8R1f4aa%DP8 z8o+heX8|61ajoSF)kCV1`3tKDSwKc=_&!}FsM>OJ;ebzDpMf^_iOWIj%U8t`vqN20>;n{e92Mmy$r5f zH(qr{0O9RL1OPhPzpPD41Hh3X5p&It@lwZh5gi~^(0V?~$M@bsiyoK9q9V8e&CUnn zEPSU^47b|*?(%m&O{xoFF@%Eb$1&RyQ!irDJ9FX7Q%)0UWm(!b*~LwA_v+m$Xe|2T zbQpIsSUy;~xOi~Cy1Wke>!EyjGxWOujbK#os1{p!YN>-%T0cnIQZa{CK=%J#^E3^R z1|sKp^M>j|h9qN-Bw^=F6pz|G9Xn!hKEKAX{75l~rToXL5YNQ-)R=bVA8iqNMMfs{ z>vgVgs`HE^`-0an^1X3QSg!^4|GwcO_ky1cOtII>px?>BQ_esy=>-rkmq$*x3Nr!` zZx%85@%G^4J@|Q zm3M({I0bqtL1%89g)6=9!bi3n*O`wZ@d43&67#ExsEK&0;8B&S6QaGBE&Rk174_8w z^#L+9rcU((%GA3_)mdn9E=kjzV`DtL;ITt}&!64}Q0yjrjj)_TDhpHbw5ydzleEpP zU16!6vS5n_=s%cKXDG()`0nDf68DSfp5nsmxV+gCZ#0-A_ z)dh;&0v2@xh(p#I&&P#SmR%tY?e zx$SqhprS!ja(d^3*&z7)etgrrv;8Qrg<8*C#9o}Zt&t#eLMvEk0!VpIaMC6M*eyp6 z=|uxqsEOr%D+@sKAiei=jEf3uCB~jG{t*1j01yFzV)oub%sVjx?u7-a>m;s?<Q11>t4zB&vM@?7%d-up?&m=^AmAq9W($CyLm zo_UMN2wd|oB9dSo>UIC~Wh*`tzS9Ap+_$cz_li)SD$~PvCBiTZJ&-uQn7=)%k#VlCWdF`AAn@EZ%AJt?* z+P%~s+OyXHCFF*U#KcSuU$nXE9!Z7tRA7zV8rppV*mnq{bz%RDAll2oDr6F-K@oOb z_83X^JzcszbV^QisuwoMEM4Bs0Cgps1&Ovs18H%ZWZ#En{@d|e|iOY zz6kl@6H{mq=#`P<$sQn!vB5{3#}7_^1eTV-(IW~q?x(6}qb7_|r``ED?BDz(djjov z(k16kixOs8wtM-x2klGX1H$dhA|L-hgx1Q_dUbPw&9*QrW`)=@f?Hr#TbPAnOa<}Nn~c_04AArB&GhoH*!4vVcfcTKu%Z7$shg$dAX zsCKv91iqIcSJ}M)CNP3KssgQdRc#TTaQ3w&xP@pKNk(GNN$PM?m&^}cyR!R|G1Z;2 zqthbDU}P&uvB-_3dw+6vHk%l~*k;IJ%8Pd`MUla>%w1uyYY2lo;iBYu8e}l@3%f7c zQr)RKnzRQQEZK@<(k1zQDKF}Gy8G_;=`b^cU1fIzbT?;)xpc3_7L51ZYr`dWm>KZC zxH4`_>UBUaFl2aUw{9ZUhq9w4CIO#vpgS&x6euoIRCjin`!QaW^tQ`aQqL7$qTPxG z3xL~$@H^_S!U(^g)1du`fbGABNq`PEGG4lU&5Qogu3GrxHz(V>J89r#uU@vn^RAlU zr%W@skjAt#*t|rD%4-GDIbsh9Hb>K5%4AJ8+g|}b_Dw3(@5eTZON9;Lyo@Uq zP^HhbOx*1Ez8LSACKIjf&}@9b7sBmaR4EDxI6yeJIB`2MNaZ+Hda>+i!o?@{cHS=5 zA<>4#_I=i_k*2`rGYnLYJ<^)VR_9Z{>-Big*d_h}VcTPDf+r3hyvj{*vql$gnUs{= zx>X*c$aI#Gws+&YG24;oGlFuciFUlqb}N7{pCv5q``-}TfHRGI@Y^TjH$OSy_@Ot( zDCCTa!NQuA;p*VF(Z;Vp3;+Jfxaa$ZHQ0}OCjZiQkZ2apKW$1e8iA5q7Cq@-8e!-d zM--*GDn~)sPdV?;07dxsfAoSt=_+S)EdR1#--`=Aa7puVv*CqZOX3_6uMP}u*&8n0 za)^d5o6RtUV}EVwCuWuO&{yp5PC8`?95TEk+j2*_V7DE*Uc7EEKt=mUz@>XuOxoa<@fd0I6$QB}Hp1(dAjG_VqRbKFnJ7 zY4seftuDqqQwtQB>=DQ)H&-3nG}u!>S(!5zuFj^I&X}eAfv* z^_Lj^wRLkwUQ*Gz>JPptP+~i5UoqeR=tO*OqFd82&SPaq(+TUX#KjagM?cgfwmfCs zrtFuxT^P-C4Tf~R;(52SJ$Phq;3?!YK1Crfocjj zdgH`1_8yE#>X;hpb(?p4e z-;8`GRzynnsk6kaY*ZO{oS|ioORRPqSoQAp?7FeyU&4}F(6n38+}Ud3wFPIMGLz4# zc6D=Y5Tl~UT~cXsmUg_Vxh1h+SVFxi{ncd^Cxcsab;2s<gM8pNu0^XlRd_7_Pd>|CihaG z&Jb)Cf%jliLcSj(;P=pdI7aI#*!-ECB{Q|<+a9XmD=JPhS)UC!x1tK^4=~zbw|&K& zH2<9VAVTO`Zo4Q`&yCp5wf)na%p_((iR&l|X|$!ptLtt46_aB&L*xCbMW-7k-Ug6L z8&Y)CQ`AueJpX&f`CHRCRo>_{7A}#^7r8btA25J5IeI?T2~fGcwbtT?Cxd=iwHM8d zazTr==x!d5j4tuW>EyRY`&)S)sq98co4DOD_UZ4?6EEtrZHo7s8BV*A)qhCjusJ$8 zD-p*sj)7OA+iP6+6Bi}YERImMA8DR|CAreD{EIg|sP=ME<2b&Tk&nl#BeqhZ$m^@+ zVOEJlfkW&i%NZTDQf4wl@;8a$$S!(yJmYM5c2)u`#QwG%XW-0^PE7ga)$Xn-T-yGd zl~QzC*TK-+U9IAzk^+V$OkQr^t0EW%pET~*!Kns3pNz9tDoc5>#EEAoj<`Q_xxdhy zbke*Ul^w$0z>&-ceABIeKQx>pQAbIQF}? zABU-g%aji@MnrVp0dr50ag}BkR56zUd#HI9afKx=vU&~eQ?0Yo%Qj%Ew#Wi@SD5zb z!P0J2ABzET@(Fj#>S%gGoy!Vw_=Qcm3$@k3Gu33{a~IpMMu6m=zLZwVAbE|bMGH3T z27aExh1d8Ce>bEm69s=g_NtXdP$fkZ+)3=D97Et976b3*PnS}=3>2yqd^^R;KSmR$ zcoK9mO8YY3?L?JQ&lu^c2GF>O8kB4fzxH+2N zcY93<3KW)pO}mgz>jol7_u@F|Cm_BniNSkR1Rubs3vp_D95E`BSXom2lSW*$pWOu4 zSAx&XZYK1Ceg0_V?krm7@xW@nhS>VtoT_8?6;p4en)=thztL#hRD4MYR#Xw6dQ8B7 zKo#^J2Q41IK(J*dy5Ovn;;Oe(m*s;@`>s>%;5g6A!JC}MCV1aa#VJnCwC0MKV}IfU z>ZnlFj+=2+B*J_%p8%VYL$QgitYweqoSso3TI7WQib{^tn$+~6+ySdNW8kmZ>)xt8 zpD>B$MxxhN5$m6!vI#f!i5p^x)JxmClOO<^{g{z50-jek{+bN6cOlFnMA9L1Z}Wrd z)#1EUCYjL9U@4ZjIG`RyscQ4E;@k&%S!C=*-%M?Z<7Dw!UM$Nw6QE-J&Gv-urZX=cBp^suk2jR$kxC;IvyP=zza-$f1+Gig*P4xN9GoQ^hFs)rkFO}DV?Lk( zK6ufv{hawVlqORzrM6L!qgs&RUYm5@i(MQc<y`y$%lLFNM(RLfrUtjt4T@_~tOA7%} zu|{AI@@C)y=W}3d>7B|-{BykDzkI#`{xG)GXj%b3S7{kk0#q)-!{5xK&iv)wo8LVv zmLj9Yp9hmY!03XvkwZ~^VL#9NG$H8;+doVczI+=@vOTe?D}obDQ{eelTIREd;9>5p z{J$+~E9x_>=JU1_ruOjG8DDMn0F_d3R_B5O=YLvNBm5!0RoZ7Behv#Ahoxx1!x}+S z9KRO+YjuL9;Cx=ybqz;SWWFZlPS7$R&I}Dg+I8g-xN26pT2ju3#tgd zhKFzE)$RSO^pQ90gVhK#b$XVSD;Gfj`9ai&wE01_Fyw#&BT}UOx7(`LpbyfE7t4g^Ee`uUYsPu%NV7via0$;+z zFW+-V{95?0)!jD+%`2FXjDjM@nmSymXdfR=kr9=aKP>Y1Rs9BWGE3I4fD;0DY#q;ll(PQ{QGQoQVLxrynBITw>6SACRmV&hpNmT=fm7lwO?B@0~_;IAqZKZF1?TqGdQay&Fm`o_5(Rw4J#p}O6^&sP6y6(8YJ-;RJ zI?VfeAa{lsY=I_TR&hnkPlv8F`196RQogRP$bu z?VI{`B7CO%uYHxb_PNhLElwrnEC}pD{?+4wKGYl0svf5};QycQYdk7E7^S*``n!As zRKh@Mtd|OIqE=uAeLJp#4PJeCJY=|8@oxzR%8<}} z)_?hGD(K;#)wJs%sOi{=2w}(EfZRiFB7aVzU&dAZpTGZyS{*T9KiT)sK)$tK!v$os z?O!Yqk}gdhTz4j9pL%Hems`*CriXnKT%q$EY0mx^^81_V{h=F>&cB-qVqyEhOoZuw zlX))V%Jy$&{nxL8Z2q2mLJ9Ez6u#H8z#6r(WA)9&|6dJc3)Dfumm%t@a!20yr;L@> z_PmPI`1XI%T8sYswD0SI7ETxjwFyFy+jB#b^-nMU`&U(9On$+CZrA;1%)eO8f8_Ze zTl$Y5{gDa$k7CHS{95W?T!8bKd`4g$7cBgICBDMt5(e<{4)*WfIHXVp8NpG<>m9rZa z)=T0wa7#-N?NS+lewLqz$4QhTr_5|M$?61mlow0B zK2CfLN|{K`l9ye!$;XMkwVL_N2C;x2`kgd4hfxDt%8^mapoKP7^;(j3JRxAfsZ;tk zC-e}j?^10<*U&l1#;IID;Tv~fZ4Q-joj#*G;7{}%kB$k;F76R4O3b%Y@XXA<_UKk? zczokEx}ApRZC{=^txOl!^EEhx_1Kpk^mifYTGmEME16$y43)eo&YL7ZzFbCj1kr^Y zX3G4$-yGfaB;yvO(0NC<)(+L(-H;931MNRXCz+>e0V-{flD!#`_PrRmNFf9ykxSmL zb*Txt3n&l&6_3ymk>&_|zoR$b*K6a)kHaH%4Pr)?dm3*V&!^mq(w|}cvKeTaPn;Cejk;;+BpDyW zMNAEueycfEf~(43Tbh9T4aS42lMd^BT;?=kmKHZETE87-y>X1Ykz|!Dx!$KF`hI`# z`D(Jl-RA}u-9Xkq_DX}S*=Y|j9;WRI^#X-?6-e#gin;*?($IwaK^MtsUHRD=r#Rm@ zpEjgZV8+#>ctiR;741%y!Su|WNE;lnn|pK!0hB7eWCA3%`)Uvu1GYJOp==N54X2M3RZl2fNkUnTbfAGcVdv%FcsX&0kz7xR?#-7 ziZUa5tEp&r0mdx4??A)8JeI)4u}D$t)4X!-ojKw@rQe!ORL##)88T($u6^jr)NhTH zu_SzGDOG)|&@i44Fj#%Hj;{F*#KH&H4j>kO8mxNXNrUZypFvcc2rx*x5{j#px*V01 z4iuiRgz{A_HUIjQTvhVBj^QR<^I?zzw=R zQS?^x<`LdLAKKVk8Ya8)ls#BlU(+sudV5ukGlanbV?dvZ+uglUl^}b<#SVaa1SPz{ zp1)7~KCG6Y6;*Vka7yz;iN|D*PPi~dG-l`u1gBlywiUG3TYBw`uhshyeM+lZ!P>)T zcro&hSBW5!#M1af8380&tDJPW|AG;!K0eumV}G>yQ-1c-Q=ESS;P1?i_WI)#NAht# z{-b;AL?n7q9eyK|P9ryB`^rD5MK;Mmj=C^6i#Ry4ofp*P%O`bq#yactl z&Xs07-A<@IWK?`(VO`bRq2{$`0(9s1KxyAyal`hGBBR$OfaKIlw_TMD+(9*CP^BQI zyeO0@lH{&y*+b$uVrcq){7RHHI_HpmjWA1|vIyNbE-Ko~Q0ZogId8N2X+M8jQX!qF ztTjddbisUSdv9y;fKsyaoXu?^3Gu+a)H!mKlKI1RJhLV~scT=Z;zh~64}uJqyupL* z8BsR?8*cd8_=b-86@W$t9^`a!=+PK>20YaTJ_<;z+nPZy@E7)M7gbhMuoA{c=q|tW zI_hkSZy=9Ysf_(<`^*zVnWybh9HzF~h2;3)`6PaizG!fFs({Y{o;^f{ zpJqb?801!zM~(r@z}2}S!Z{v5nZMqP;J;e^_LAuQod*v>rsU<;drX-u(KCg4i)`aj zunOs%rgH$hm_m^Ac|F-n<&A*MNAp?%0W*IHZlLjDjVo{uGvWqKp`BTUkF5m!Pum`| z>t@dS!b;2B8CU)0$>9;BjO1hPohAhw(e_pOxYflOWbMbgLrZ?VKRmKz$^ii3%=b}I zs`VqV9~PHPBKzSF82vSm+_u0#SSO9z><5Tbohi^hU^tax9Jt>_E#5K{-E?8`3*W~t zbe9h}4sATr(^a&w$ZS|>WkQ09LI#V|$x|vCozCBsi3KEi#F{FAyw8JXNSP-`G@7CATXsveVvF(j$!4>gYmX8R*%wYovaR; zI5?<1pE}Yn$BRzSK_qZ6`1=Ue_5%R53sz|&@?}Njo3ch5XaPMQMords=(`0}>T4D`N#n@y!#=Q65=tkCIel2m;eY~)hQ;#Jtfm&}0df_Bm0*DM7#-EklZ zL90!`1l^ysex_Zz0*_ZYmvaT?z<7OEn&>dLiVl44*(&dpb!Auu1SJp@{(0DkQ?Sc6 z1HhjrBuvA?r32x~aqQX^&7Qwjf~eZYz& zU`6js$`1wRK!`5?Fpjiq$ID>Y$(K53QyftIS}RfA_h?;BU|KnkbXM>3Rk+DaAnO{E z@eQbMriHCvcnAF+5VkrD6&=TW`cGDc;Lk2a4oGEaDP|Ng7VO4^2$^LH zO6-QPb^SNrV30x(G=CVI`ay?)h|1hJC4%Hby5LNT7H$_&ek^n5W#V7OPNj$-)4J>S zK_qF=D1;AL7oGahHmYDX(ERZW2DG4JIS5SdAHNHtYM?R3+hm*-4&x)8BESn3;=~XX za`64qT<^9=o|BHL)GtV0o(qMnC^mLrMqU0o4^rUD0w6w*oTCFtTX@aSq|F=hzNy{W zY>@ZCniNIcx1!)y5c4vtcWg@YyZYsf9RjV<$&NdfRLreG<*ID=?m<5yMF=#luEn@l zA`ylf`da%2l!vsi022neZX(Si0$QzS_s{jHeZ18e>Jg*8oR~V6#@#GI^%jzf0ufs! z6xCaByMq0S!A@f3k1(-Rjd2>Dky_6ks~r0SxBN!e+9? zJ%s6;^HtIUS4xHz`lwBQr1BO6`^ANs1gPMs6yj!fPv6z8aBcc@uQAk5c;mf~a-N!n zj5{N7ai5f5WHmElgo0F>U@g^DARD%7XE@u1*pkuSc2yYG2k}sFd>Y{+u$O+|p19MU;pZ%8W>wv z2Oj%8iOak?ayta}{Z~B{@~od`I5-Xv>z~>NMnY4FtoPwvK zK{k9xWkahSVebf$YPX2_9LTaeCvvohE* zCCemCr2`~tBI0%mOvn{l$DQnIB6}p5Aqc5-nmks~M|8Gh_NnN7M@~x6hyld@C!#7m;6I8)Moej4@SqFxwqp=wRiuCsdI>6jB|3d zQj9<__8M|bh+rT?o{A~R1TrLOMkGrI*%c3hvt($EQ~g<>#k~c=ToO)PqHFi=$;;dn zO#XjMFfL4yK0SFN$OsapWrqUo5iZ;731eh6ewOUaz|l;>HEOpSTRg&TnMEn zWkU>!B>Y;sVGiE}OpjSzf4AFd`Im#pPq5j24+_CtE^<1mFF4ddyswuJbm zGbuP2SShHS7Y3Gtywsg`R05@X0Ad((@HGwi6$ByGS7HM0?>~J~^}fm#eWZijJ35#c zts($E=l9Y5Afl?1AasPnC~*K(mGa#r7J?!V6li6t|FC1Y3~VFdfn6b13>oVtAw&>R z0tvHp;WwZ*gA1K%`&Ck42#X6&S8ZicOkttPe$@S3K@jD8nf1<@+rjSaGQjqKGDa$k z)0NYS{SBxVh==yHhxbE%Imw@=-0`INmJ4{H%jhj`6x9N#chSoB!$%Ot$01>X>74S} zXa_(1o7IgMaCd-!F^~QcqLa^Xy)vO?J~CsPTU_ATZlBq;$DP*}8y{+NiD$wxY~GG> z=T*Dx9lk?6SJUc!MbKM9G5;}oVG&brgXiPX7d7H=keN%Hukxr8D(d`7At%SZNG;zF z0jYRj$f5#pbVskDljCAjePAD*$<8f+%pj!)W@H~BClIIvzC{e3zG%W$vOrW0m&W;+ z8GF~RobYV2nkK(oZPuXdDp#Brhcja$dz-~UhS--T8K(m2g|1s!gGo{O8 zGwmrg0>iIbm3LW@dt|4X4l>FYyIglbJS%E4FR_i>>&3d+ROk`_S{XXg`h(1gM`pa)=^`uLWc%#eOVu>D>DauAqdcyA#z+|U-Ck211n}^9!L`r zook?wurjN8mLqpGDVe0MAbf?yn7~@h{HGAg8aKXds4ijn)rx2+0MtbkugS(59JwJZ zzlPAGy&4Z2?RgOW$XLoq zfus&i?p#f_=owLJqKlPI^p9M~sdZH#=xn>NnU+P5AuNibw;=Z4<99B zj_xmcAhcZw63@u;OxTgk-@+O{e_7*%z}lJ+TZ9m9M41rXRge{KNFf?gLfs(YbZ zshnKg!OycX6T=5qRHLIS^18E%ZM(sG}u9x4y#Sp z;J$YXu*|c*6q;e(;_hRnly9+hx2*h%NPB86hR~U;q60w_RD0~rsfYz6*%iKIA337S z?_4=0u;D5#?aN3m`XY~BU|B@EmrLAdU?VZWUqE%uqnRJh5eXT{;J`^ka zJ#>|frtBm1_{0#b$hLK=^s#vxhOj#o?z3y!y2ExVyGDZ(nVC$RgBhvPv$17y7>`}Q zQZc!l8$n7YFL{y&C_%%H0qEVv>;9X;hJj!O6Ovb0aovnMzzh4G+7SP0FU;?Z1*g)F zm|Wu33L?p>uCch6+sHoOYtzo_R5KhL-?Uqi3HOCYe3UDSM&9N-3ODFN@YdRuej)g3 z%A?J6)mx&H{K;Xh(c#*R#-imsHRs2v%9ZdKejlxkr8={ZRk=QX`Vlp20+iE13qD9ZD+!XveL}~}V#_tyQZ&J!{<1lh{ z%_Xn58;$V9n(&(u+lz<0F(lC(a!X7P#->uSbW$fK#!A_(IBxL{=f|d)uA?Wqu0M)O zUTkMSe62;giX{T;W#LQo(XXGi#|kBH#Ky#sFvMQZHZ$yjB1!}{RIf|!rt4HfKbJa* z#MAE652t8r*&CkLVvmqwN|xSa>gDFTHCZW+9z2R)!^QMrN;I{4Tw9}Zvg@`f#5En|Vhci$P{Mc>G{>MJB%zY=hEt61Yl=d6*cVZjuC|wbRp2JP+b9D2~ z6Gp9j&))^p2#phc>l+vb)q{UGga5tPG_8|WNA>z$bcu&G@P6Yp^PD~QJQVMRu=&J3 z53|%=lkNIXa!h#pJr^72+b`*a8R_>HHPtFk=O#1HqVe*UI1>z4R9zWGw^zB>P2bmd zsMP6;h*Ez4Vx;og9<l){ zR6FG;OTaTe=S2d>9;6V|V19bi{21b*uhz8aP#%4L9=v{EcFzaK^b_SDMJr4dIt>pw zglkLpt)dsPch|CxVqqUb*9r4-2ZmLFM203snHA$qJ&HKdD_=ZG`Spd^7fUat1vnfO zSFcPL_t#;yJ0gbXrgOdAHYUfd%cp#Ps}bNYAb9H$(d4Y+BOB>J>xO7>uU_D@zInNAcK3DVn05eGq5NtA!uLM66NcrqVf%*&}vtj!(P zrCe_?SbDuuzewn|+;Z4S1J1EPo2#iYgI4R5`CACG*x$I3Aj_mRG&b7Mlh*FVY4(k5 z*i5Z1z=u|{OdteSiZRyfNzUF!hZa|^4@y-%d{>wwq${teL}|+{WU}!~o4_W!UL!JK z=atP$=U#aB9j$+-S*7>BV?DeLKSh2=6Yky#B*9air!8zAE+4UHxZGyH#Cny=EOOmbsP^qpk-i{0jI2xtvnVx4rI z5I+HL<6E?RC0}6mE5#-^e_4{?md})M)RGnL=IjqLODv7nzJV?Rp*4`??a`Z+t4a#g z`xZ&1335M=N*JgPqA3nu6+=lPb^18$OA?MUUx;SQ;9q=-WIktE4ydJE;T2nT{)qKW zi`#Dm-C34tloK3F@rbcdz`ycpD}Pt@V(DW{^6pvE_l)keo^FTb$*15%o-7TT;c!v_ph6c7Z(;`}W zjIDHc>h$)RSH%#0D<(0@ol5D;?7oWw3uDXVrn0E>$m`R#Jkr5=W<_pUP^ z*+Xo`Y(PS>OVa(DonoXApsjsg9-#6bOzBQd!IImK-i=A4k^42e(Y2bheyhcJ`|@|_ z;-L|D-(5#hXCS|f2yeJXm$fJFdef&Llq{J@_dU{tBGb%f?}qoe;JBrf%o-mP-kAbo z>u{?`GII}UE#6@uiYa@UJr%te?NKyv!1ui*W;aG@;%?mh{g8J|Ys=ZibDF|uMP{7$bcJP4S_hdp z!$UvD$KIo~^xS4}xeNkpi^s=Fv*P#CKb}$u#nW!&dNkQ;qqeB0E>?#!_}G7CU?T>- zS7-H;ddF4XAlX=!+E1C4{I20Vv}<{Tj)oY zgrcn}{xuAwtX0zNh_*-~mzf-e$K;uGt3M>^>Bj|RAXfUb5f`^nBKQdSAu`bc%|GLt zg>YkR=zlXvl&atJn+z699R?{!*oQ3N$L+Jn5`BL2(MK!3{+74Ev-ka~f4#*W=BV@G zD$?+&T%ux@LTV41@JSV*Jc-MeUTX3m@ELin>-k~ZOoSF$+QqFRF|4DJrll3cev$G{a{!WXHPRlX=y}c|Iz7@b}>ffm07c>4gntr{l0a+sBCFrf#Y`F+i`34PY(A? z+IAKDbNJ6;MsioY2x=V{YPN#1b&#DJyn*P^OE%s-ZlIEc+B{w&H@p1!(qYC+b%uTC zl~?C=d(3pbC)ih%HoU*FxrfJ8tb}^jUGm6o`cUl!g7JEL{BtwCF&7I_%lV1Tu3$_2 zoVnbKWuKL*k|P0%fxox_Klcjl5(W}~C5VF4_s65@Q+AfhJl>j)Qw5oN*@!LH5jvil zE~g6A#^hj?s?gJgnVKKmOe}q!Rzu2X!qMK4cCz99U;9~SP>*`17Dm*}Pxg04P7)Uj z8yY_+i`3vD3AsPKZne3241iMKlB*yherdQ3ZR6iNX+KZI_4^+vUHafqZxlmP*;p;Z z6rM>gBt9DcdMPFv>%Cz~%W?otC>gl=a+pO|UmrMOY-J&HqKKxoMeH|Izwa&610x;Y zsWU;datcNLw=>=PcUOusdi34OSe-gJ8Mu`LK3X-ct$6l034{)i$kBusjB%9?zH_U^#pvSa0;n{o z$~1MG*Xdc}#(RQ!M0eKTB$&%x+t9bs88sb$XJAC+w%k8>+TUzwJ-h}yy9w>9*zf)2 zpiRZqlE$U%kudq`-^lB2N&KX7&o52#^_Iox>l>e+8r7{g6%u$tlBy;;ZaI|@dO|Pd z=Pnl@X4U^M%qqM_&PCdd6(Y$)!NWWwNHyN7JbzDS;+<}m7y}cjJZSi1&A=|C=KOLz zG6Bv;#z|duVR%q|8oD~KpkdaJnaSG~lFgn(35%&UEuSuWZ{#q2%3)*n%tn{CbnQT+ z{LSUrZ5usTB}d|<`B`JUz6)7C(mvr;?PYXkq-curp*aW$ou9G#oiR6*Z z2^pTx^B;*wDgs9l^E`^0v{LY}e^iwd}-fBIOefoV|A$0LY$nM^&|~06tjwh1qGgD>ZL#S)O6BNNBvq@E z7B8=WmD{YY<@&SdD*YH=ZCc5>MOowQN8gTASSjV%Ih0NzVpl^(bVHSMjCV8j+)Rk` z__T+Q#Q!O5ztLC=zgFxsql`@GTpV(nb%K&|@#9QfKfm4ozRh!qqh!2CA1(}aHr|-x z#NNhCK2Bwd@ZeoIls5GEMv^%flu0#l;Zplq4F-CGFM&9G72=XRlfF&Tv}U8`YSj7I zvvaxZj`OdgtH?j|ta^R1idU6$g%MTrwL`tJSkW=;Xk&g?kU&M#9*4hng)%9=(~E^w z&XsOop?YtIT&e8^QZXF0Yo#H_rXbZ-qImRmeTUAK^9($_H&p@4kGB z5kMPnj7H1nxJ21tT8+YOj(I^V42wCGrpLMk{yl41+4ZdF1Ocv{x+&+6; z!L2{RGV@4r+&3@3xavHl*(|kt@|<8^PBBCIMXu;BPk2lD%MPY=qf9TPkg3P{U8-=! zlG+cDawwzXBcW)eBOGRqCw*FIl+ajfzrqRC;wp-VFok$#AY9hL$A^eB+W$QyT468Q zy**3HA8Rpb#A07Ek?y&2M{+nq^J&i3xzB9T4%lTGGM-3TRCbzUQ7;^jvrSsG%k_7w z7`>7knO#&u8L%`p&g!w z>CUpGKuz;Q)@!lj=8y~a{nwyNY{Wl8eBP;DXAANA#i3^$t>r<=rmmr0W4DeygN1|m2X5<@D(kpej z&J@3usFlja>FJP~$@N>1i>}fraha8`4l^)zco)od!gkW2pA{NgHEK8g!FhV%nT-1# zq$~2m!B;X`VR}jGOT|2=bvFJtkBTGybB`v6p*rd!r?&GvK)S<|#`P=yzIMFmI`tD} zO?K%HePYMW%4$8x2_EafONLq@#vaDL5JM!bRq`}cDgMO zPz0@_O^dLcyHQ|O8{<&22g3gGrtjnux9{&!hH}cU zO{B%veMmElX^1^y6YG~QVeASN0{YS zn0&m3>^}BMc!x@jlDSEIeXMwi1bLFCp?h@f5oKXMpW=ey$z7l1tRHkBa<5hS&$pIOwtD<&tY%Ov4MaXsqAa%)7mou|6H^FRW(y&_#_W*y!Ip zOjV3);(PaB^(BOpfPx*G&Rq7f3LeEYal=BUXeac3nO^Fv>%6p{Y~wET>YrcqU5=!l zugI9~YHXG7klAb(GHycQ$PxOq9H1B7c5Vj}Q8tWa_(|W`5XHZ@%<9DkPuUshwD2lv!ul1=^8ON(8Z^uJnh%MUY=p}!ylWkax5?D?7t9VCEc}A^K zJd5tLLPyt^zNN>60i9G5AubL|9&n>3bz?M_^MS}myE6ePHd*ueQEbrf*4fhV97)Sk zAvDHxik(SmfF{1jZdcX}o-x=(ovJ9x6t-ODv68lXgC|;xqy1Joh1?-$?{sa|9)Skw za6+sJhdyPzJ~M+-uV0}Mjq$OzEv)5u#615%huWKD?rm(b+8*k8R`S{aTv;JL|50$RiL-ub9%&)zfz`!rPw!?eb+% zUTtS+iS^ir7W_UDzBltzxS*ICvcl@lb0#Nq3HXbOSqV_P)_^*A33sz%eo?tVP=BDO zN$}pju!{~c2Z!LzDa(avu_lWo1K;=5P7_!3v;Ax4E-;}zr^;GKt`YiuYBiG=6IToD ziYAW4736Y^6M`n(*n=%O7mF+?4hlpUN@GVAa3bb*KQ6mtKZ{F~Gmr-0@f<|xrw<>y zu^NN`Zfu8;UxpAA$4X4^ObQz~miz_ho$#x1D3ux5gR?(Z+R4Oi058YM;|k!&U*vs9hyaLh8(1!0Z}oRl-Yh$~Fe+%fBlMhp?FDB6jn91Rt^`6K` zJdI=pE)V_v%?yFBXK;N6K`zKy5Ab{do)B{FI4DMyGmIMILJFL^cNO{zz2cFdMBgoo zPF6zE(BOpO5Qj~3>sfKXV{5n{zp3XAZ% zx%b|CLvfJH(0E|FFf>-PU#QX#Nwko>-gGQ_!6VFZ@$md@eMWDu4iAb95R@TNvh zz#QD~wP+yB05=F99U4jZRR$1*lBbZKWxTAqn<>5g0zlEbUKx5GA zb+mqw#|*P_1)OCHDTISB!5b1w4cI|ez}7%+q4>$CGT#WAQ2SV(z~T@U8gl=$$Q&?Z zMtQ!RrecNUiY>(EIEv~b*S3!e17Nbc} zp!{y9Nb6pgLl2=w=)gOZ4#);q-$%05<6I3u()5NUEf;SIxB~%^I>c(CjXn}B(HALG zM%r@~UWBIU^$#UeZ$!-vct=OwaNed5d~rNkqTqJ^NRWFb@KP zjx=rHuhjtU5rF^n=nluvK#0Ze8gK3VfX=J3qF!DhHs_X4*VwG1K0?Jr-zV{ zq-p-7dP#KAw6cjZ1Lm1x1VKd5Gj@M7b>Qb2oJq;MOGpr@-UsV>q_W6@ssa8p@6&x* zK}fR@^x4M(cZ>kJ0ztj1FAHdS7$UQgScxZjNzCM&OW{FX>cf=hZ^y$ZTLPQFR+5Zl zA67TRv_iyK>49RS0&LcCwZC{+*|K?A5URx}WLrt!6mFY}hX%@o6$y@MqcRMe!4Zhl z;~f8%{}^bm9M^w7a6G$)JaCSH-()M<)4BSfXWGjWLtyT3g%enu)xWqYD%Kb_bL6^@ zLX}*8t=tSyk_Bc~81A%sZxXG-iCn1T;S{E`siF}Oi#-jB8cdv?5eGMwo`q4h_;QCH zA`KL{-6M@-d^u>M5HT9UiaUgzj-EDJ*Gnm|T}pTSK)5l2%y5>I^Iy&bxfe?wZm?;O z!zpcqc3$s(_nnO=Mujo(%3=MwVjaaBwsGYMSGz+0QPg2(i~`({bv8F=q{0T6H;7(# zjpND2>G!W7Dqn?}*2IRfvy4L{u=6PVQ+Qym`e3eRr6!Ro`qWRGWCuALt(9K5eapZp zik`qIRc7Knj-jZ$g>W?DI*~0``~+mMF6(pQAdXp*#}rO zKq0%aW9K!r*rhK(QWlg@fapH-`NKI{t-l=KFhd-}!kq=B_$L#6!NiQP&^dNAX8N;R z;$w*GJ9^h!Cx_$36BXURZL-nJ%k>?LP6F?TCMjT&Ee`I5^K!OV0u=fRnaB_TG+gQJ=w($6N|- zqwKcUKIaJpfB1t3s*-`yWaPfOtC8y#ANJQBb2`dDAbxKbbnKI^;+Hmc@2b?d|2UrI zqQ=Bkea!eR6TCr55Tq)GaK1t(E`weFnU4PA{(#e!A*8hE)Bo{4){lG!)^tu4TcQx%>YFyoI(h&{q%)V3el5EQR#zDpDXU6k+q z;Y#Jb4=774S*-}mkqJiMT$Cxqs-GzApQ#HMRg=6UyXA_juBW&Y6Sd3^m`f z0=EPbsqD*sd?_JRI;tl&52e_fOq9aS~iV9Ni$*n7{grnlx@SP)S_u%OaGq=}Ity@P`Eu5?0? z-n(=VP*4F8kPbnV-la+hQ96X)t8@?ogccy-U6H-_^X&b9&$-UmbFTfxE5ziNwPvj~ zbI;7ZW+p_IzTA{2PiWjC`15G^`dg8oZQBrs49!6zAQg_MDbW({Aa^|F}IJuk!V!1L^2ID`Ms`f-lu1ivx{Y=a7N z{eM=FJDoS@E{ylxT%rB2cKwWU)(J?Daai6y&@A8{e{(ni$^};v7%J+Yj`zdQ1>^!f zuhHsoXo|ahx`87+<)Y$K3aI^I;Y&6O(XVWiKj95yj%uWN{Hj(nw+Ykti!#mXsiqSCrJE{DFd4e6mcuoD(O)G1Z{;Yl%Cc+RH3bLA-~H9I;HxW zAXf)2mfqE3Qcd{Vy(O<5O)K*7B@8#50&QGhL-z%WB}V_{Wf5MptQ*_;vryb#phbPDa((zn6-;^Q{;x7|Vk5g7l@TGEhw-Cc zH5<=5DJEKiD#vrt!q-5l#NH~2b@yA-zQ-F*tvh-@E0XNr&gh>GVAakQfrp^tGq%*= zb3b#LVNmw35L}%nkq2CGK)(Vw`o94yxgquQ#h1ze@&V30*(eI}xy65Gt@<)0>i;AFn;C*I50A*=@Q{T5`Gr9=?#4v0i;M*Lo8-L1lzAUHS*^5_}o9LbCzjv zCv~@!QeLa!`}DX}cEJ0UKd z_Hp1eK?7YWaj)%LxMM3&+ylo)^G1alk^mHeLvit5!@(8A1Gfi3vAsYrC9FXQK_Olw+mpw_`8aq|La3%pZ?Ed0fW=b`VKChGr-|43zmd`eM^bT6|{DJ8IF|2Iq-=$EryEjt&L1+pSrX>4cA)Nn4{9tSn8(9AUaSllaLXr1{ z#6m&b_zM8&PG6-#cH-|(W&|N_W|9$06!4c&+=BXXSd8K!~gzF;N*aCU%Y_+=S2`JTY`_i1Vs|D)%Uph^FVs=?;jq-rnJx`oc?`a z(4Xc@LEoSMWG(*gq)0pi()sBa9t#o{@!}?=pui6H^55^G1^-w@Rlvn9-WP5>c?{yR zq3_^7L0lHZCKRa)`~Ln+Fqk)B>TjBPb^XB8{}t^2ZGxRUotds{9D9oJr9LHAX8l0` z9aKwy{qibnlsY@~s`8DSRSU3*-Z1*$H|vv-Cec4E~&C2anq4e}S6N1!EXqG}!`eyNo~|o{MC0IrRS=%{g3> zTek&V9i0*qkziaYh9>5(&*ARh0L^+VrpS5!K6LC%W}kycRW{&s%?yJvRIt+p$(+Nv z2xcPm^{XQB--nJJoMSN&MU@~aZxN<_tEeW~-W`Xxa*ITkdo5+8DqY^x-8cl43 zsQ}|Db3>7f;9e5Y1~X~;VP^d|LH?HOiy&;XDSiFSCD4&aa(N`4;?9c~qTsy^9e(NX ze~2FZ`4tKtwc&6MSy>LoP|(>r3#9p{geCvSX#TS>%h)M4v~*p?!TSZ;o?61IA6Wlw zoqm6}aRUg&-v4}jLjf3r9aIcI;y)6m{Qr^Wp9>>s2*!otH4naY+X&k<$$L0ljp2VT zmOU9*tYfOi6FW9AhV`8X9{(lb|FL!cvoPH#Fs`1W2i#KUaJ&h@wkx#{qx`4n!J}$` zP$p*1EjieLG3dobG%>vROTxkbQ<{G*Ob>Qke&Gr9|8D*NZ0Y}Zw!U_djQ9g) z)EUhT3l}zfZjMDpMIC#6F?l@93$1c)m}36sai#|xYhF-^w{?`?mbSX2B~yo>clL$ zvnM9sEf(bGcef4A(kgQKxe!l!c6OCP7c*CN-h|L~Jc0RMHztd3;JlLJ^azy6rI9n^ zs$I&r8u9XaE9)>LqY%Tvk)BHPgec(@&>Es{kOCpcxNZ?nBc_oSNw_J z!fWcO1{D&-6y&12KYhsluXg@O{YVP7*rGL)1`4icXCs;fE!b9Iy4+7Lg7Yg>oUKRz z!~*8D@|uf_0B`3~enYv^;;C?K4JXrM_ENtzAM}xWp{AW+l_JIWKQu$*9Y@zwKh#p) zMv2Axun2oq)y}Z^+YDFhqrnapoIkW*zyfIdrdXfIc?a(sP{Egz-cn(^`Mw0d%KRaz z=j!X4#_Iioby@q4HT`zc)`78vp*)2jElTMgIqFV`RFbpbDlTm-3L$CVRH9m}NfE9a zkd6FM#KcsoQEHYq{RKHmF8qf)fuV7IrjZbB0~!TFpI9@$J%`JOZ9AvaM9z-;5YIJZ zj?TZWbGWzIIW*RJKcn2~&rx2&+pn*Iib0W&U|YqOYE{88A=hp@L(U!xK(~P6IWFk! zs~n(Dn@4*;J9uA}6TA*YZS&x^GlE55w}WlS?R9-y+Zb0^MM9Vcu2K-4eY@hCz}AoD z5*HL#ANRGremey{k-A)%9do0^ANw=_Xi1{CT{lu7K>U;AT-?B~JuZT+qu;4$lF%<0pGyj z?_YL10;(GC5wJSJd_PI>qM$}f6Pn%X>gvN@E$#d1?FJ88La@8shy`cHPQk^+C8^TG zYfnhHJKziUm;yun6sYhl%~;Q>N5Hh)G&7F^AC?5~QQZosXP9Luu7IwONTsJ?wy_I1 zl%!|!@{d#V;Kt!fg2v8NPYUc7KfhspuG;0KEY?5Ass3V?Q(k~p@-_unvgkCzFdQ(u zHelS_^a5VgT^KI6b9-Vh-@y&j(Vxyry}_Z;F&+JE_snuLCj8zNv8w~MpXJ-T>#D{E z@=}#bjJc@Kp03XV1X>-%ZOnr044RYJbpZ!28T9&FNw?-A<0s6woAJt6c&qbFyWYYwTeA+xa$*TtSdL|?{Ul^`%a7$Xqyx(sX zd(Y5-eZwcK*`jOr?2O#i4{#^zij(x-r>2vV-`wbqD=^Ui%J9kk?1v|TiC@_~;`UAg zBOR}OahVPrc6JR$mCW$!$pDGkDYG+8v{9M%? zZr%HaLs?tWlJGNGfi{+H!vE_5+n^I)^9))Iuk@YGq)c0@A7v~$$E|b`a;ovVInCyeU4cc8M_T9331bCO zQ@?TGY1JnejE?rPNYfonE((yQ7MMjS z{?;RmNkA`^XuRD1?Z|x90T2K82mcl6znkX&&12F0{i$a=kxhE%>&p%nBZf||MEIVE zeLyXXH&ZsIrTWJjm~ff>I3ixctW)y5N9mYkxaO!oOoexM$K-_G>MWLv?)LQ+dj38i z2fg^6RQb};WNVFkC(S`d=Q|bgn9f|SI2oCUsL*?wmj#ELW!|+l5{#9sR4p@jv70tO zv>!c2AM8wKYAycYpMFo1>c?#8iwv)-0d-#5%Ju4gRno%)5S{rxc^0_PDD@SgNUxn0KM#dPOa$m@MG8>a(e65hLB=Hon8s(I$x=SMMpGR~bZ0(Lg)eU~tfL6UV1HZ8KA zp6h(bNj=Rp*mbW9vKgc8ExsQCe8M zkdmw4K!5+j@KQG;6O)*DFhba)cbDI0jElR)NUKviobj`kN{&W`eB-thCAIFcjW_g3 zLUQ6giw~?R4&-xqA@x^QJ!JManRxS_?h6;l28qo`6M_#;K%lwlB0N4{%Nj7%Ux$S9 z9j=S>>&&!M#z07^rHR^IoUVZ>5<$YxVCU5s2_L^_Z>;YUc;6lAkEU8q<+K!f+W=0> zN%$((R=x(k?l~!WVGnN$0uxC3r3RS%}wL4I*d+1ndV_IdM(uB zyoPloM>_nglljdA11$ru90Jy&Ts@hdyHMSCG{?>PvHB(E;Uc9@pDCh)6HGu+l+BIt zBbqo~f#e5wpt^?MN{w?g7}RUq>3XO+JM^A||JTmR5#-E9w{_2TmXr_6f+~(4O;yYC zUJ;wlJrouTHV3mRA&XN`y7u6LiG_j`;qDPPjhV>@pEJ}_#!;J<_#xGITs+t)WSB%a^W53PcA?> z?>HsdZqG5jqg7Y1R(yr#*uxeMDa$2rvkQVSMM>8L?=g zB#;veuV;ZPBx!H~?-ziO@$ut2L6TGNcIqO;BQ=#0+q%>!aL!Z0+e9Wl)bB1Osh@oR zxzikQ-nc+ua8|0)GP!<1PHtoTF~)N(XQ`oiL+khyu4O0}ca1?Q{^ot^{sN_%2ui!n zn$@)yE>Y1b#9EEErQUJ>gYeA(1$(RUL4;;nwX-^cE|FVqxS@(^MPAm%@o;ohadouh zaoe0O{Z`aE^v8J}nop8LFpj+ECQkno?lBMc}|Tdt+n!!EDp=|a+aL929tX*>nbz@RKG zkkdlW1%`*WpMh7e+dZ%$JK5J@Yd(r!#S8d)=_+;0D_+CT!?UVd8LNbk>SC2TB0F;p zsa>za?Bv%Co!=zuRD^XIREXryZgmzN$S)uFE5>I%j1N}XxJVq!&_KOM<#>Ver5jUP zgQ{xfABEp`(NGeIHoA04FNwB{OVZW`u{O=%TbkfWsneJ0;lvxIGwULA!}FWE1q&vnFo1{2mee`^RJR8S<|P-=H#g20~$9P=~og<}q^tk|D^+hmP8oW@+=Fu}(-W zozhZ1Nb{_c=NRmiS7ul?y>cK3u0u>y;>)e+ZFIJ=#0$mN|!&nai|ZDh%;*PqTXPmh%= z2$9hI*8Vdn87gYOdW#5GT9|o7z{c?YEld!a9N?|NH5D9PhmD`KT9FT)|aPz!=j~4^x z0brg)-&>o{r1Bl0XU@!Io?wY*VC#^sD>;DoCB6c=&B;5_;a(#+c_QT(w({n#J+nX< zF56p~{HC;Eh=cE8nqcWxZ01M@0|R&ZAZym4-QMh6GxM*Bqo#}IZlCP6gq9)`=z}Do zXg;G851o?}qG`^&Ljo2LNmOC zDeay6P$!2%2z`$EuX??#TZ}8ni<ep)Yybmnp7*;GI_xb6haa{fZx zuvh#5cEYFh)r-HKl7LW(=L6D#`>Z(L&&dh=k}BYrbQ+$^q~i$CxU*CETJep= z3t30K7E!s0v=p=*2@UbH_MRM?0i0=psy zz~JpHe7Cjo?dHuyUlBX*%C8&>fH%qvL!KKzg`)47A(FqQffb$b;WcHvVb zor`ov;qHCi^w%iohk;`L%6%1awt6u=`qfW+?myAg<+EOaDy^fYP4fC3>m|RkL}JbK zU?#_J{|YY<_=r2fw~b72YVbme8usdWY~9>xSNYfy+a~2GoON@eu4x(dz2)uCagc^B z^A*7$S_Ycjzbg1_r*gr694aX!EIo!Y55f^>O-&cY(*THUn7O0wnYhyd#OO~1X5$li0?Hkz%NTPEn z!+t!()mrcI_kR_9?*j5uCsPlZ>^g$}^^a4!f)GwFT@xHf+^mnZD4i>zf z3)MRd`@Jp&ha)+_iZ;N5a8yv>zPq`O4ljqy8q~{4N~+=HDCshF3`6Oy{5GUMBTh4& z{|W17mhRZDc9&Ya!6GO$wyQ1b?Q(EsT{P;P^=7m)qK$f>B_}KSekmO_J&i7uZrI1w zCVO|Ao6%zFk&AzxdAOP8^XgDmw6=EBGQ;dmkKn%7$9ZwF{erEeP|`|K1*C&2_f6H`N8#i?!gld#hmO>v#Rh!AH;lwS^vp}oo_Zp z37bPkuBp?gp71a}fiipkbv*~0Ub4+e(F2sX`yB!jUI~o-jGw3VhHk>);k@%~ud!gI zzM#&|EMCr&0^RiHH^*qa5GR(*pu0eWe||at;Or>>1aTDdi%%1!ZmZ!wCm|WSYcVK6 zG0JeV@o_gnVonJx*=EtceCxDTiQBPq-#KIwVm~3OyS@E=jc^5Fjn8n5+R^*qhzKQG zCJl~!@-pHXM=6BAvw7@bwwLj!FWIg%v5|#HeHUIfOe1bQv(UgswK7=W_2GqqA6ka~ z5QqA@X1p+%f@D9=lu*Z3y}R6-=<}!e<>i`dlT~&KtiHOKE698o6#C#a+797+*P(W= zp89aR_&}j4a7Y`^O9(M`C9_i_ZiGaZD%4LTJcN*BepRE_odpIzE?fv-I2MA5!mA}`onu{}ewzryQ8Ofd5Ssph6 z=f-d}OhZx-3fy{O`>Uf5OYnE$WX~@oZDm$Y$C`^G9#pQ}$|GvAkjvOvB(lAci{l@h z2HQqg^9t+|_vSYlGj3R)o2WFAq3B;^Z^+yDL`)L&%5xiRw}hJMyk!Dqd768B>{X2Y zGNjJpzu^`mA%I|ad;ds<1PFlWR0~0@`8C;>FQ$T;Eh``?HKygRRLKbu{82BAe-Lpf zOxWjShCh%*L}sP>kJ)BXbbGk!!P(EtBwbZ6+N`XMZ2x@m0`Xw}-0NURZkF^ng}FrK zfgGBM!N|`I@k8&PEZyJc%gNge-mjL-)hLX2&{HKA;ras9DjMaUsbd9V3t9}Bd9z7_(;|oA&j(Rp^_7?W?OHP6mM@mMX4{b z8?bez8Y1irE6t!hzP62Q4!%LnveQ+LOVsTmJ`_~) zCAWEAqh?l5s@K131a-4a@l(W=3T*Cm_<)&^sQl_<-L31nm$FeZKcFI|6%@m+q0U~U z_Qc+DQr5oy$Xc+@bvEV3$twfc%~#c4@Pk@W|A`N44JnT*^nyRW3F-Lxi$J}gAC*QgCDl6Vt{*Fc?)O5VMNg-uUq)bW1>?B)v4nG{5Es=J14`)%nC`jg4E3}J0 zppG?qd;k^AK3MB0x34VUKQ?}Ys0t23tTN6AFVB2qHQ*TkV&X5`lmCj#XOd^&@v499 z2f2eQT+17;gi_Tc`H6Kx%$2uc8|1bp7YM$&+6oP;ky^+N4|Q-!gRzD7G_!Pt7gibT7jk{Bn;bcM`~``)f|cLwoC}8!+lA2QbOb$ z$qVkm>1RD~{K4^yW>>`mqZ72C$4c?!X&VEV&1%UQ8SMq#^T(man$3&R zEbZapMQ;z2#3u{nEy85uhDQvdv(WH^6BVq>iiN{3TbgU!qH7$iNV#}I`2<9Ek??63 z&LBGtO52HX#{d9a@dK}9&BQJLQkbffgzF~neka{ojXRBr4X2coE`q7&$**jjG}B1d zZUT2Q?*7ItfQ^ek28sYm0~Qp6c1I*87IF%g81=z|8kgo#y~e;l9^d=%~}pl_Nvw^sMcP%AA!XI|si!>Ascbb+e@^xX6BtoyIF8VMFJ$&c+JW z2Wu*#OtZwQLxVniui@v@W80CFuFDdL=Ovgm{r7%%2>hZ&1)f$q)?UYuX}l+Kd)4|g z#>T8|C1l4|Y2A}?60vTY7;SMsUqG=XmyQ!XzDS$eW37@%k@E&7e{)+{b3x&Iv`?zmR7>qm>s<34Z zDxu>+7O7R0h-^0s^xX{GuFltcb5z)Sxe^XP_!ZgHJYae(L$@e=`XHH`gjWQ5_{)Wh zhov=NXsD6jyH|qMTNh*aZ6}O%9GKQ<;1NtEYm8+m*|bv#Nhz}%O!82*C%l{+eK`Re z_G&yNC|N4+Uea&=)pY*xOseJc>wV`+2DXk(TeDJ+Xr5J8RJH|4;&;liz{q=U;7&_A zYTp*4efJq0ZE7d0GYUz-C17Y7@aCW6MaeZ5f^Fr3mNrddBVZV#9V}JKfe{GI2h4F{ z=2{sDNq89(MZCXUrWGCgpr$pxN)bBDePu8C8xwa)`p+s0nWt+-4QK0<9joM7&dBlI zMfCtxaLDgpyYLz>1T%A&_%)YBPZWVm1Oo44)98Y+WX8kpM9&IA@tsZ%F7GktcCTGE zQpVM_8qb6T=Yb(l|Mt78jw=o|>g)1SGea+$0wp*68xOZj4pC%xj`;c>aC9eFR=_U1 zqL=fEKr}XTNneUMY$<{Y5(ia>(&`qgN-K)imo{(kPv4FX$&hcqK4+Ie(RX|A{+dJm zgNNg>2kugCe4qC%pjN9?V!@=;)>QQf>Ffes;3bM5{^DL0aE;GKzlMo2*2%a#NRZk0 zk`+2JZmfRg@j-hW*dy7yXt;HGR3mop2!uTiJ5FH+NvN{7Ty(#&)Sr2{sXg51#3ai~ zw5+7GFpek7Vifz&GlqND3-uhLjxQd(hvn#80~V=c^Bso43~e*9@a^q#$BrOry7Umy zVuU#6L)b5wg#fFF1b1s?<>1MwFB;zwBb`YzQOanp+PrxlJc{W9cG9k!`&Ge033dp- zy9G5QeDecaZeza)oSkB}dJx+`iVHD=MFoC7QIkHt(;Hu&U3-Zt+?gnQR-y0aIeq2X zv%ZKSX)U!v9UitBosj3+PUP>jzH>aMrXBU)dQb3D6cSuio1dvjBRp6ecV1>Oz9481 z%=o;R(w*7+0gjq9x)#)$K#Q-OGL7w_$ei`oii^Kpn_&}iu=28lX#|c-ew^){d7jaV z5nw(D>-kVX=W~15PQE_LM0Vv0dTI1K}hZrPSF!ZJv5eNAnqK!<_g z=uy?$2!oZ%%oxi^{)2}l25gkP9}*b27rMC2zO8n6UuiOy(x3b#0V0GKZ^f|wChd%B zf>d8chRN)u*Q2}w`aHh*wq8gY#Qw)QTP^FUXRdS23FaE{ydIZWj7Ez+lgd_wr2LLh z*_MZgTVH`AwIjErQR2rIrSX3Fp!eWJLbTawu1vA&t319dW7fGu zM2#k%tR7dZBp<5J)95%>(5$DAY#4H@hxEGgJ`2+2o!{yH>NLTJI+&$5cgup!36yn0 z{oo&VM^M5w&l7I?R6F+>s#3~1W^d?K+7nl3*zh!^mGi}osa<$R!$P1xkU&!SpVAcIa`N278_bp`AD zTsd`>653ZL@~%;b2DrkD?>l&;PsmDNr#`}ms=z_jQeA`jg1IKikj2f12_??m(k}Zm z9iF6%B3H zjm6eCpbUHc%Iwfr9e2}Z%v^hH2jYTjC@smvw-Fln?X=Xv>o=`Z=A9b+8dfWspu&?N z-f>#T6*$XDJ6`tY#r%ak08n4prUJg}lD~x?8tqQOXI0|n(85R^vE%|0a6Jpzlm0T$J5$Y>-ia!Eu))ZL+DYtDRP zP&Lj?BdGzyqgcc3`;uV7H72z%f52$a3l$t%t+c+o>niwJaaDCn=ERNoYd>w`od}Wg z!7c|~-Nec9TAj9=?}m~0cwY=48P`GBH|tb3NOFcv!F%e+p}pE&qMjRdhnQsO$;{_z zlh%Z7C32qL1A6#}TK@by;-&6Hi`w5ls8}$Ca&%DPoQr9Cjvi(cP(Bx|IB{Pr9O2eS?px z5o7Lvq)R*$j2JQWU-z{dU9(5F#yzc*i0z@|AcLwldF$~6!0=^e{2B~nMJo-=fp=_^ zZJ{E@=lNl*qyOM-CY`@aIer@D)|y~QR?NLscd?_8xqRpF?>vc~Qu8<4WUi5^dQbpix_)4Ee=*IBHhbL9H_joF3TANTPTZaJry+~p5RH>i%MZrqSD_y zplWv)9`GoXIQD^qP~VzgX}RU9I+NK+qxT|6uA%KqbA!+eog7NpHJEO;hs`Zu3GI#> zybn5{3|w8>xG4@4;OsV>WFb0wlc`H{xqA6N_Tl+9VerE;MSUHzI6T#Z6}uiNRn`^e ztW-t94p?+BE#YpCmQ&Bl^(OQdn&^WvWaZ!1ZjGCh9@e8U-kHzK*>mrNuMhK19BJmL z(wlxQFt9$_JDBMtDynB*ue5!j$7JL0wOV74HU7idt*$eD%1x=8aL};=ZyLE#S>ies zTJjue?zxe&k;x_+y%U?Mq_koHf;J+0tm_;cuC`-$j8MBYQ?+QQr}KvHShY!ryAN>J zr3woSRmP$Ibx%bbp213uq8FjE6;6OgqW75m%5NG;63{YJ`o2r{-Z;V+L(G&ROb`Q) zu^OmV@l8iy21OwkeBrW0H-C0POLVJ=dw6)^e}zJqrVKj0>Agr=dU=5*F2BFY7kgw51|PQlj@a=t1yVRWA=gNma9vHAG2dGq&N4We^c7t zuLcRdclf!l_jG6u`jg-EgWTOVREfXBU%aZ)CF|ovAO--nt}1tjjY+G^ffvFr_)3-) zd9#=%ajF(UIO?8Om)SG9t%q-L;4bqaQW3rk#;@7|@ITBPnA5#irJ&t2r6Ugopg!GBPVUM(w|Q*V$C z_t78zsG=1}f*96N7Oj#R&G%wPF_CHR7s`i&2x*U>00=6Zy^C4qtFu0;fcaDG8~yY# zsSRqTcb{TfeUjBNz)^4@OzMm90_hPi!(xrbYRShvCnzqEJx0u&53nptdFVcERnMX# zv@O*DF!H`ho@RTzjClvhE}^HNRDJVY((gx$V^%~=`=Xh+6U6%v@|0R3kJ%Dmbg|+uj1-a|f9zU!=PP)&^ta3S)i5&FXn2S~4 zaoFBYV@l}L@=1&^ z+SMTl>(E_1;HcjY_LSDLU$thQ=`?h-6gBKC#l5E*KkE=oc~nLv(B{()4Cq>Tkt{Zk z_F!z z9P3O4u%9_Ee#h92-GFU z(EavBQkFIhZG27UTg+e06~e{&Ay;`-2V=rC;6;o@4abF5BZfdF-mPBUsLW_Zn{?f? zt=p|yBBqirmybDlr=r!VOd)n3K9>9?H|NPXy@0DcQ^LjH8io`E8B$aqFU{)W)LaZ1 zcDZ=oPRna$3%-x6 zYq!WQq3fohz&zmrEp%_c)_&t~>DE|toIE4vmFeq4LGxmhkS1NXjj|8W55# z?{TqpoQ;)gQwO;jg`aAj_=9=TzbOH5f z)A!<)j_>n^39c1b=XcG>fuYibJW-v2yo!dgGkFcW6CjckR# zJkZAkN=|X@y*uvj&eet!%0o9+YS;?wr-XOrR(A%+-7>2RE6XA;Uc3?oNEkQd+Vx#H zn$m3KyQO}oXKX=u-!kaV11UUQf>BX{LC;s?g@e`VJzngFUz^e}vx4>=BJFKr7~}3P z0xR>IdLI>ykIzHbP5J<%jr%N|CDtDYyAS_^93 zO77vJknxJq1KYu~fJAu8!JY3$(s&^cB+?1aGA7R$jSjAq?2fe2p00>jW=a?WpO zrRia1B=JxjVuXN%;pRNx-d??irno(>VuZvCrd0xmdImDHac)oYbd^CG%L}9P{VehZ zaDmxosi=d6K${Rj(Fm6&?$#@T`@~Dn{n6!$(66%3eYamFJLy_^dPpUH5MnxYx%(d9>YwB1Y`^3$v^A|;fLbKV_GT!gK42+(D+jx z2|8tNwMd()!ZwD=>)?UmTl3?EbU&PD0s?`}$Xxd1bnkeZnU9C&flrL8uZgc3AD{oT7nthY4J9>_)G_|<=`j{fb zOZlxmTi#rnK|LY~qf>Grq|fVBE?blF-L$QG%r?@kj=$t5rwI4vquYc5mReLt#Fs_U zfO4iraILRbRs5H~Q4e)#lx&eI#Oc%en=HVoPQU{}ZG=u_K#SE>?$^_e%7g}pi1_kj zA^sUVYmk%qME73ZYylOJXElGpqjX}p~9_mTDZTzyDIDt zZ+kvpQd|`;B(feo`A5|I1TXn2^;&K-$K&)tL&YP#)+XHVj=*&^%I;nZA@U*=&Lf^b zVDERnfvbFp#BDqPh#ID}QuBx%Xj)2nYw@^|Dk*uG`knML`wOVCP0{HXhibD-e7WIL zejlp7s}^gMEQ`~Tf=deZ5F)Lj3C5ITGmrCMnhso}oSMBu>Y^Sje3YF0I6t6jyS383 z)Kg<$Cr3*gcaKT=-KI~tY*0nw(7nzlrL^zw#q03m${CX{Nwt)kkx_DYKj+ESrx$zQBzvbH|RLIb-8m?r?l=0DW&vg8|kG{wMI(n>F1IP30yv31rInz%Qu3qbPR(Ub&UwwYd`NP)ko$X@|so3&f@lZ;rqd*obXHrcpn*xu*kxd+;gD^%oO<0j?CQbjlUS>zj8L0W}M34SY*Nri2WxVo_Z)4ThL zVwyc-NLLO!fu^~TR3G{c@5|8b&HB}hyj57dkaS0i4xf>gZ)N!4 zP-Kwz^QdP(-X>ZABB7+TQZkdyljVd{5|*o>d)}tR&v-}mF)MgEdZoHgfqX6h2&P15 z6vi_}J@Z{NhuqS>KOrP-GhdT?Z~VCjNkAZ>_ROkd^ z1N$Nhy44_)4oScUhQ})A&wF~0u%n*APq8@w56MUVCY62;)B>)un~GHQ9CfHnRLv@i zVju(Xa$hEwxM`$em-3Dz-;G)PdVh5DRch&D>22yWz4V35QQmO{`0n=>scs(;k(|E} zJWi5FY;ro?_bd!A`8x2`i##7CA>qO@o3tNTAtSaQ!UCpD2S0+io8`44eF0!aPC|F{ zAK9#AryLQrhyd zV@IxLw4w%*?Wex|8wbJ4$&7jY_B>axd0Xa;%tUVD&>N`Z8N0d4l@nnC>@Dlc?%pHi zh+l3I>28QyQMaEuW(zlpAUhyj&zEe+P^qVQwkpkySifEfy?ex8g_uH zWlAvbe7?z8U)$=&S#C8OE6KG5bb(OWClB23^WsCa4T;)4oR{(1tedk9*l6WnzIYNS zS?;y;Ln~tl8gx0yp48K7?_PiPx)BQ1rluq4@JWB7*nqZQwFw*dt84l!Mt=VgsRfxi z_t|1u&lDI*RL?ka>Yln5AG@ciej{hEyVp}Mt*epS_INp!0~<(LPVx1T ziAp1NG3^hpsfUIr7A{0@UTd5f3sr5FCv<6=;_2V3{g>y-FW z0;|i;!;R~P-6qo#obj${xT+)xe^-!n;iT~wHV-0KdP{z7G-vub2!Ck1J~q80W{TV} z3=$`n5-zv9wp05U-8};m1z0*-nyQGxh> z?)<^OPxAJGKlZU0VaH~aR^FP|;ZOJJ98C?Yb)@)J&!on^!yM&Z_H+CsQsEp^HA6{# z8%gOjX5UxezkEA{-O__fx~ zUI_yyB*Nno@PYVu+`KMtMNUT5kum{2ufo#lrpz^FXbPrI%;4=M79-xRwASmRrdLRs z_vF6|-?F2_3jsTd8n^KJR^>P+b3mF*hnl{89yTl*(=>*prA)u^K#h~Ez1Ph8?xCAtOD27Y;Tsir-1 zp}YO()ZyFSM&sKvckRZrVImLQ!d3*s>X&a$|CJ$7W6rl1JF=~G{T0KGKpYKD7U}u+ zbSTGhtH8aLjkLobJ4M6R`7QeHQJ`iO1-Isn9f&mUrLc_f<+3cpTw+nBMfDiXX&>*9 z+8QJ&LR2@-4=NnbeR1!U#P#v@l?&D;tum={A>RE`b-UKiW>6hYyRc-JVTx%PpYwHh z1-fzvS9O}xmBVw5yIB&&^5Hx+)d2*doynRV2ocxLi7a!`+qx05g^sm%tT_4(0R2rj z8FRHbaIQTg~Rg-a?-8a1<=a!+m|1m&)pXane%CwU|>>kFvFe_oYh`=yq~ZS;42DoMgebA zk$ESd$E;+!lzkao5ST7qDF~W6OF?q>H6V6(XoBnqe8AO_%!bmA*ch{D=Y^6rvWvXO zv!(F#k$6Q`&kk1SKQAemCv5rIhh>xVH6+aTE?qD^{0*GmU3b)V%>MCa2)n*QYZ~rL zrXXet7PC7^-}up|l8ilf+#Lgu7g@jc8Sp||@pvp!DNZU4&ezdX@i|2EK|?$$I|q>n z`}+DXVTl3?C7C_k5vy;TP*0>4=JCs${rXN)3gQyRJ6}3s*{wAxfz#P(Nj=TgQJmUI zcDg)~Wf*AsJ`>q15wZujn$m=nQjXIng}GXV^Z%e)WmxvzS%MQ@r?%c2JMP&xFSq;{ z6AgPu)E`k~RST{N)Dj-`d`E)I0v>Dqe7NtfZsqfZDHyF>yCblBTId6A73@;*E5m%v zqO0aI^Qbz{QZvu|R@<*Ra7Ifs27qPa9GoFOau~`QE{yim(P3_@`LeCCBinLGux@v| zLB=PjnIH&1u|VQH&Fbv&K~%*Yh`x#VXm3)aumS^rgP1StHz@~A$L6#UXUJ&R@id{_ zHK9_yzA0_m1@Y2WXRE8!7!6&SV9vX7-k%g)3fMJ`pA#6d4hyHzLJ0?rG}+R z*zngI)7GsICoSY2#dW-hB&{=k22!eA*%n!^kGCqz7Xqyk%=e7%aG-H8{xd!t9JU@% z1J8N8(rQ&nt~%ErNic*5h^;TStW&l(bfjF{*9rRq{Fcjx{>ODWO)Vocd?x)LpQApL zrrUR0FEua_?DE{rcXPT~mA-bNKO2+b+#Tb#7*;apJ4+!ap0-9-G|Nd{q-p}`!ltM) z#e5lzh;T$3*F>**$^zc}$ZG-;WanDL&CK6P5D`qMNSsCyd&E0hCNhnD@*=KYa8Z9$ zs*zt{(Ab8PKhuFu5b>)49zQ~(0@JP03|8@zC7~9weN+o#7E5tg^GALsYb~Ns3{$wC z`)Gy?r>SaBKm5MZjv4f!2?eijaK68b0&Mxr%~(diQm)G~vCbucD8$`koxeB@spNBj zEx#t1+TpRlkaD5kT<{!6R<5bREo(t;&%M(e+AiSNTc^IA?6M=WK9SiYQ|Ub9VqCR@ zrG;z$aqmk6SNSrDM&-vm5*@pE5yV{vf;&cWv+wU9v-5qr&+Z&*p<--u@fB~ zK17BR{tr3r1JW$K@Ip{T=*1E545Y8sG@JZq&zs-IoH-MpdxDA=gj$X6dHp|GZpG1& zP;=q{kBB%!H$xuKUFkjT2blZ3MMp+4=mkKiP1o+Lttr6XeyOsN3bqtju1XxtV+mgy zOTPX_9QAWQjr%DO;8yGS;L)3sF->-Bg50i`~^orn(bC3!+>* zS#H+sm82-SuDY01j4dUJEK$Gb%y+oA`?|l^_1E~C@Ao`sd7g8==RBV`b=s?SAA^Ht zlotxU)h?ib@Sv||c6R?sSa-0K7Yex6{o&T7tLjL!^YUOhSzlY{TA~;{{=t_ll1WcL zB24dSrKUT5>E3qY(<-RE2wF4Yg)yw{2o^!ld)3fdyhQ691f;MGz8 zU9B=Ex7m)%_&LfU%7JlPmmT;(7t-oWRKyop@Zjcj&@XquwW-D_5d5XRsx?`dz46`w z`lO#Es0|8u883B?%B>FYxz@C&@N+IJFkMxC1{NxZJcXlbna zrcx(!sJ*&s@v74IleJ%c?dRu1_T+E8N!uI^pY8u`Cv0na?Or)u;clO|ekt!ORlAxZ z=RVlXWgRp++cM1zXC!p}+!=QHUVT>cQ7iwDk6ph{$1BN423mEPu61!CFcy>21+aaw z`^%2IAJ1%!^l6jN5qc2hUzR%p=U@Ugyi6o08UcnuLm>T3FkJim(hCz)GV$V9-V~66 z44I_g`6qc9p9|~bH;~2+?O`tH`&#~>=z5zUBvJ0|*cX_)r&r>g0lYEa_H(N;Ec_(i zey1n6@PwV&qsC)@#P$j0Yxl2C3a*z*ml~2p(g-*x>Y0r%UM2MPl*8L@i5Cs=FLi(6 zjSU!ducyT8>QHVc*;kecCSLCm5)N)AkI9xMHBL@{@$JnzJ;Xk1XFQ%4_D4a%&zGcs zpLwF%Tdpc?^;k^N)TVu$x|VoqR+R_K^%Gl6gf--0RNj_x{Q%&ER+ZNUh(<)_AylKEz6G?nR6>nkgad+G5Tu))@fe#&OIY-~xTzgY6@_tZ?(-b%=P7mZwx1sgrU#}=Z=r7myP~quo)R35z zni=WV3yDEHz4fyuFKBwk)WbGg8P7d=8Xx`(h=Ph}A0+ibHRg=EM7+JgHRn|I$Ibf3 z2MTZokd$92Gze+O@!vVe(2(-da(Cdg`-Pa^YOhzRAsL-%PA$J)*mBw}lE6^gVA#q@ zW3aMD*6^=#=Zv+{@k86;f0YTFE&g;Gy6x6+_$=@!(OLBTIe14{zswELDl7#T1{~_i z1rI*eb8V=Tp%EoBH(yb`v3AfXz^Zd7UQAkPQc;OW)*!yZXhb6BwXn+wuXGTZD0L+$ zGHsAu07wu9gmr_;T5@v>T#Hask1^w+OA7ocPaGppHK^A#>LM9DvVYd_*rUQz4F(zKd!L-}=Q=>&AQ9Nk?)Paux%2W0%3A4u^-Je}~gwv({Mu*ny0GN>F;zvIr^KKx= z6C{7;tJ?vOiYU{@sBLg7$W?_n))1n%)Ly!moM#YZXYPKXA@cDqe#=l28)|Qzkh!w2x0h6+?suymBKOovEL;@1!(@WW}76OZ9an9c~@%Fy^* z_QhMuJp+rpdDHzdqi3LLNB7Pz5qj-?C7YbE?fx*1aT!g|`7(84lEY4Qs{4Zen{7w+GSr_Ki1P=u`5Q{O@Bok(! zN~6xmkjIcPbp6KZ1NMAjK$DV;5Szfv6QSUC%hbP!d4Wyc%19GyGUm6OZVE-NXXBp( z8bwZo1XejNz{q1!!{-71p}IyZhx`QLA@o7&dV#a>J`Ck$ z!LzpsG#4cz5Ej!w3ufqf8|Hyos5}1FjGQ`xEO?Pf0SI4{Fa7f9IRw->mp=*7E%|`} zm(dfAB>pOm_iu4-+J`7)zu({Jc?4SDASI#+rlT7OSyUOXwR!@sm1n$Y;%v#u`GYsa zWGrWLQD2;H@c?Gc(VlM2Q($Bfl# zVSoNlb9F@BGFxxAB&Wn~u8ID^+y&GiwM|L;x~1y+`WhW|*0DrexL~ni6hwVzu050p@JavYJ&h=_{wxXsne7N|khZJyBycdYvNWC!`*E&7~j zdsFK(1}(d_ePP#r4XW^m_LD(^DtAlus3ig3$-?KKVeK%ltfkSwjRRjswg8mpB$%H_ zp&afDqK|ua#Om+X_Pu$eiSj&(hi9SJR&x{k^znc%(J_s&-rwrxAVufo5az92cSw}h z{P3HVO6RHGC$r}?mX%}E0}s6h2B*LHzYl+UZO4~fN9(+z7g<;Hsnm7*0~7!1Nvq1* z{uR#AMwHT(ABh&bb*LrTHr-oHxK1qRf+$yt1puU74TW9qq<;ZTx=<^NO+sO)=%C^*Wk3Y$sJ`1+OF%{>2mo1$4PR^Nss=PI?u z;q@Ze(~nnyj}K9CJnxa;_rKHh0l&Wk*J5%SSu8-%?H?LcQK&LHna3U434GVN{5nku z4uK9>aUqOwjNi4kPqsylTPJfsN=b^ZSRx-K1NJ}OvB(ky)k*NiQCqn;GISkJ3T@lg z%Z;ZjEiQ`30N`%vN`s8bCQdApyN8#S9^O|?{$}XYGGt1011bTY6njs4aC0IhODwWJX@S-+EX-DXY*ktI-*s{tKGUM3&-S zf7rTfP4CdJ7QON5cDXa!O0v)S<~jnA1(cZDp`^DEDVIlVszP)0{NnDtVnJT;kO8<( zhxE#%JyqrQ9xQXfgt_KF*4WD(BkMV1B(T+T%B$a&)+{Y;ZS9qFxN&z?%$v8*Wx3^q z!K#Wa{_m)_G<^B!$oGg|wJ{IMy93J9n(Ejb2a2uQuKF}BGNx0*eaCN^_;`)h)u|R( z;`Q|8SueZk$b%}0PHqhe+(q39XlSJ)`z6Kk2Ot`UKdiHXK|{KaCNx`H2HzU8i%rFg z)?MZSUwxb)2i{A%^yj8+aZGDK&{=0k{H6?I=FMT!9n)jhAtT^MExOq_*MvHKoyo+Dv|W=E4_6 zo^9(D6ja-azn;Y&>pGs=tongE?^Fkxb zO+h7MYAl%|^rKvo-{si6Xw}>l&$Ip9QC&p3c-wkvqpx#ehNJP&fWMYL);lt2%D;6` zOMC(vr98i{NfJo8FgYHriPtbt9CEsqY)FuwLC&*tB!!397o!?S}GnRmb7d!5~RptdH|hAom=MBXYYO z^GDR8KYj{4)J^P(=@Bh0$JScYe+uc=NT~*Ih9igEnPjck0>Hk1hN+tL!oFIR|u zJ#XW2^0Xg&PS;V6j|a46!Ot>y!tO%cp3EZs?Z)MYgMp48!f@KDIM>Mnw!9oYGZ-mU>0=^>d;rA8?zg-q+X0q3A^!MC@%e(Fb zOW^`v;P~`nnFClcIWWKIa!umDKeiHs)2_ETGR}wZt`2lR9^4?uBO{^)n!W0}?)dOe zF$Dt~W%VEX|G$m$7+pTUwUg3kwNul0PuwP{dV8c+t4=L@y}jEy5Z_sUWP3F#3LcdC z^l9Ku-9`DdJnWi3eg)m1J0J245TUL;c@I34CAi$i_9XM|wSwV&S!VmDP#4~5lUnBm zo;dM?RFlQln)~_}_0dh>BY%O4m_;NRJ&tAB?LbC*ZaN9piKfEsm2(d*eOIEw^I5 zOHzu0Z(S`I7T9_E*>WU^z$Qgol*m}^?aBSWmE{+pVagDn7bN(VO28+IefFp7v7hj5 zy>WB4?9erMIsj(g_sN*zh}-GBM>wwT$YfdYyvKsd2;K)ClQ%~Lf*RQb3Xx(1PUJfVm8_W86#N+y$MY6al&@5ol>ZdK#tU7!AR?oKjcC;gT? z8>f);@BZ#8z~Xz_Hc0VMOfNo`*KBV(BbTap`v-=h48_T%37Mi^{Xu8Dtagtjo_~j) z1USqz=HEBJcp4#-a8VRRjC154BLPP@h@Hdk`+EK?t~}kI+&c>L?%K^eui3WF4m^$s z*9dgWzL*H`4cghSblN~x+h}*0qRI~@^O61gklr3TjP?}7)Rj^<2z_(_S4!Of9zV5h zJU~pM_TlAZ5wml*V(+U{u|&Q?9zye$fEun0sK#QDhwS{0_V=f<-zAQ@92UxI9*Y%! z)`1uM^{*w))S%4MSNot6>`_#$FKZ0XKFyA8wcCy%BK6$+@~QQgvSH=alE+&!jE;IG zU^~0vVOWs=1!WVb^-!c><%{p3dE2HzHZ%@CQ+L6Z^~h4NyH!*A*b>P4d&gM4gO&P2 zcdYW3RH^K98VC7?{>XjQo_y0s=U>*-7tjLm)nBiPLjuSj$-=Z4+M8L|`+kk_C8vUS zQ1CfXrGf{UTp>(gvYfZ2eA@B@qQ!8gb{GM>Oo3-}q&C3g@C`P*R=C7=&o4PIsNt$D|&*zj_8YubaqX+CC zbL^J+>dTQnU{-2VIIcc1y}lv3qE_f_*^<|_EA%ZN2&kuobPy`! zdfa2CirJ z5uAaw2}01y)s*zTyE1p*meRA05&lcJX#w4yulT}Bw2~Rj-adt%8CIIfv_URFp;f6x zrmA+C{>e21isw#U>6|6BIu+}u>5vqO{J=cD(vOM+*@OidOhdd5JXH_;28$qG_cFaT z1qy41B`RGeMSPcQgq8wLeHXy)4s-Cn-yz-+6bf55`rPKait`#aS7XrHU{kpZ6h@N2 zHJ};oyar!B`kJY>ZVFQ&6%H-^X5^g>T zcrmH%$tAq=B{$x>(eOtV9))Z_HJ@sbrri4r9 z681TesH;XQ##ANjFf00gy%w=7zsF?$k!U+?&l zgSTq@gv5#6!&=>RJ$IAy<@vB)j`hxO8y-*;m>Vi4{af>n#lTguBCM-&c@c+*kpWlh zmDi1LrCNzn>74>=Ryps&S~^8q3uH){MND9ozWI!1h}0QJUhd?dSHg@#-%yydoZI9u zx54Pnr~?l7t+(0vKF4+t(C~tzO($0rQ z`Ki(sctN@ZxZ-(Fx3>(toBc!!V=>X=2()g7%VuCY`t!0UxU&rcMH_YBq~Z0z@J%BM zHV9O0CR%dycH+YeqV4!ei!#R+^QZXa55LmtES!24TVB+b&aDn>W7IMHo?mp!WQ(Kn z0-pH>6zG;{dpcEu_JU8o*F4d$i5FG!>mTj8Pg|!PL)WFcEfW>tP&CNhRi{vckfh@# zIpyJC{mHSgF1@Bd610jqX8ErhKuWHC>OE`J%>`4dX&Z_d6S5c?8aWw+tPDa%mcuoi zs9Vk`B)9^ffk9GEwly{~;C_VMlmb(uHN;dfi?hM6f6D2pb7*<~P7C6-sh#p|E%_V% z2fGibiM9rlKK&l44!2gBG1%-`IP*^7@qS(Q`t1;gz&wKEd3RDI1uMnwiWXkt>}Ns$ zDW~Gn*EW+2+AoEs7;lQb1k>_4y!8~)-%@mP{8i7t@#=Ya(s6KL)jrMLdB;~KOn$G9 z205Ct(L{G$deUZf^I~_!k4CKYC_Nu*ZHHFDg>79OH}#G4OLjFh8M6Euk9Ih^0$m`t zi)Ac|k3X4>RXFzK9lJBv3cY~gH0({$Xmtx{!j$gcR6AnbDN^3ztq?y`E3sCAo1nii zhqC|tHOOMu4?F8N$ob+IN)?Qb4yWJew1>{e>OxnM>`oP}NE-3uLl5zb#=7VP3uYy81nk~;8%A+r>H$mB$lIhW7IFq$sA(m&szrcTDDfLE1Ef!hC&;~?p(N&JgX z8deF1=e{LjF57B3UQ{G*sai9=yH`N&ZlC#l70To45TPgda^ihT&2^k1<0o}ql(Yf8 z-xTLQ@;QXf3s~kHrfC~8W4_XwAvP8v>CA}E2c8e>L_)u!HI{nIn+BHg}}&NwjClqmd>J6Ji})~YHq6B8`{i4j&+4hPDglk=AH>z*++V(8G>ZkXbq{5iK*g`R|EYR0?CCP-pR#g z)-^*>mx<+kr=0TDsVDxzlFwvwf|FG4cvy{Bsq=miZJKwWY&nXXR=Pl9ba%Lvoz~}E zG0wE-{y~fTQ}P0~Lm&2yGg5TkBP6S{(G>%9;~$Z$)aFW9m#cC*#jr=LKuj!uY(ZZw zR5fL@$tWjPuZ43OY56<7m&@wf*a_(-`7^ZAX|+ z3IAXdMz>k5emF<;*O) zakzNlN-g;3;TP+~nZn#Dikp*Er{Kr%Kwk5Jqjx3dO=c6Brbh$g`!!Yr-}_^T^3htN zV_#ySyg~A*B8Wnn3Ye9vfaZZxH}l@pm6n@owLEF+Q)UbW1$60*%;HKVIfxiA!Uk9H zVt-wkUzWQ ztUE+$I9iDLMt=to8B1bLa-(VapJ1rud7D}%#O)B=kqE`x_}gf@wEc4Cr}_RA?frUGmhz35;!7iO9Svsk&w!G_<<2{>AL5$OP=uAbbo`-5M zdPvai_&grEV@UZ@5vdRFy&4Zyd{>I}t;^&djVzF5!n`c7x+!j`CVDD1Q?~{=PWu%_ zI6zMpga^MkiD|C#Eexpie6x@?L{YfdTD=|UYPa;6y*(Lex?q^+^>fhg_bw818pH0! z7GLZL;c?%-FwtNAl`&3@b|N-b`eX?ByDIgYF1}|m2cLCBM>#k+N|wD5ec|QcdhPzG zalEaDpVj)t0Lk3tIYkbQBX#s73+BpF?j&O`)!SI`Y2;lcG-I-XQxm{~uPC%Kz zRht-t5^ACv_u~Ns+wf@%dJ{P<`TUkKJ*b0RR}y6`3pd*d&xwzWMAWUTEbH;R#SR3&PlJ!crUM+4mZ1&PuiB zkB^k7hni5KbdEg(q?xa6z+dxYD++1tM7_77(+lzI6V*j$8V%4Vw>AyEeiV@K8Bg~Qbb8U_5YGFzLin^{51Rm{i4P2_nv%q zd4GOWw1itv^0_J)k#M^B#;>6sXy-Mm8Gu4nVH1d<__l9hc`@B*=jU zrJ6)61IIGIFXxhwC^Y_C3*kUJidW>CW<-S|VJAkf6YI9$vQ_!u$2t{7t;(v?+G=0; zx^ZVcJdkO6+OKcinh<6um{f5b2ZrCLkz6&~Aj+TZ({_%CS^h#I4F=t)Q3e@T~9*|wPTXF>3HMBet*@4W5T+CO)PNBMC^aM z^tCWq`^G%>7Ey;_`1@a)@LhCqIJLn~FtCN-)U4G$bMfT_=i*+t)2;8SXD<84`WB8Z z>(dMjLttM-&I!vQ??6oc0Uj=q4@3D@?)nmSzq~BfP4#4@@A1mYO?*D_fth<`YQ5Z%#MZv2IM&rDLP}=H^T&#n*{4ZqLU86osc|iNiu5 z9%gY2lPkAo!D`F(0EEFx(w=r{YOy@Av$yJfmx$MWS&<8r{QHLOhinU~JQy%68<&xZr2M zeAY&QdszG4Zh9~}C0Z$O0q|2jOm!#$_u%aNL*}sgsk0}j=RKQ6L|jVmQ9T_OA0il8 z4STvinvLklEr=>19{BobSupF%lbZ+a*lZk0E^yN%oxhPMN#-nb(cTE+X8!1ev940N zFQ~XCDG1fFzqMPaMR!ULWC79*(g1J5{PcCh_-sx71LkK7nq%6r5^K|@28i`+ms6c? zQd%0x&{QRv%DGYm?O}Q@SH+gMvym=E+r&;Y`5U?ZO-QrLp}*m%jn)&F_xBB&kj8$Q zPn}Nf6L0)_qA^usU{x~?Bt-5$bqday{XL;%`H|xGg@i})ywFbx$E~kV!7-ePPxQ^q zi1n8O9j51fVh--Zv`K{zewgnI+yi^-K^cJr#QS5>*CuJN>pwqlR&T;d+TwZ2%ZC(w z5IP9lTgd*0<4EaifC%_wLbDFhgHS)ex4IjEWw(t1F0B$D5#Q$+5%O!(>n_M?3c!i; z3R03O)42eRk;ml!jej7zJ^{kBy&k=L@(Ftv7GnhV;FFOu#U;YT>&nW^Y+{!fH z$ak6Qg(@WOr}q+*1T6;cqYAPIXdo>Q5qGlvCTOmPM|0QUlbtVoi0XQ+ zYxuhCKv)&PzdaUZhq!QMiPR-d}Q+t_qX6MG~ME1f)l7x4!a6 zo=5GQCyhSu?&Mw7ejt_M;mfNx;J z5-FtZemdpR5AXde{+;Hd<`G|J5&kp<0Xa`i3v#`Y`blwe6uyl_&xSAK9L?(Hs`X83 z*NTt>!J3vtk(K3z&x%{xE&+AvD!va`caaCr^ntliQ@qx_OLgdo>e&uem@t0m{+Vsx&w0WrMU- z8%X$Fbe!icK=Y@oTErv7U3%3z<|dfwD3si`s(Rs?rALi4;ZNaqGm!@*LuYf1I7 z>w1MBs_4W(M~vsCXZ%-MhoWuk#TY)t2sii>4&p02c zi#Miaxa(+pDE_#Me}kbMQ&qRJFa*8t7WrrNwvy%0o}35`Ff+iPzxL#vEP-na1(6Eu z=V< z#U13Mk;yOPd^8%NvkiHtv9rQ8ny04?OZxPB-Z5jOI&+4<0KjS)-< zOUsIf+IH*u%Kpdn5o}8Z43;fpk#!G0iW2=E6vHES4TqT+Jw6vwGh=WPCSTewr+{f! z^fU@NcIVwqzJ4t6bfz&l^D3ShF+SEuMk+~&VJF_POqIcu+-gQ%Y2ho|Klbqi<7?Q6s#)70Ex zwQ1cTt51Ga)-(0|4j!wk5BKl{JQ;r+9&@xOyO0mYh)c&L&KoH6nh}?qA(gmHR{P+u zx(14CRv`M8KRJMay3EId8{dTdw+P>U)FP$cwRdmZwhXIQLlkdb0v<2vbc}iGSMVBs zCe!4N&X6!uM7-_1J~$B*JPj`f@M76VLPz+5YVKCtEk4X`etn!3ufVLJ4oY6gR07m2 z;$5*=yI%d$yBe}rvTd84gS>wF2JH9%Wcvsg0@Ww4z2;F4^uCsug)yr#8uK^@$x9a!UaEOOS-gRvHIymhAVbKc$6o`pD|Uhfm##YB65~ zrtuAU8{{baLswkcI@V_Gk<)@j8dNf{Yc{Y)_wY7|eKJ!~vcvDOU@qC#uI}5?_WPP< z>+trx+h!0$-giP?E?lgj1&wR2cacKP6&_Z??a4GsNg-0bM3+73DsilM03_D~&kO`% za9S0UF?xMx;^}Dn-RQ5+f)5jB-h`qBMO#-OGkdZye$iGR{ZIJKYJ=z;WWdJyUt9p* zk&w_i02p`tV~_?pN1bnM zJS~Qvm6FL3NB}wcAR?dhmPkMdUOt;{Sj?e5ZcazXCaWh_s<^Pv#BK2@B4`Pfb0HzOD!8AK42F=c79> zFn|OoYyc_ojpZgo@vqck%ovURX{E@E8yPfM@W#ni;EL)Sr8Nx#a)Qtkl%&kAK&b z;1b!Z15GbyxewtDnAK+i)!dBdz0zlHeo_rl!MwySjll`kE^kBhOEEaYaJc>jB^L3b znzD_RW(I_Fw5Ju2`$3nGP9~>={gdV!-J?;mX9`2lzE4btqmbQ1W zu={VhPXT5HGx7G;HeEZ}EVkM|p23h*Ddk{W%#eC#FC6_!s8k;*BuUQv$5>T7PUmNH zpn><2F(0t$*|xe~FvQ0LD}2XBbTL`{O0!<}n@y_sh$KVGW3RKU{f-kC1N6gP`2}pgj9T7i zcz~gjk-=TP7M~{*a769D#qq7df21`!#G_Y5lhfUnbi&Y{3`v>8edb7^_wis|3(k8n z{pfp#7u~JdQQWW^`Ry{%TgpF?2nb8+zAxVmJYHYlC@raDOB zs7zP8Tb<4oHIPVy*BE=9bvG?FlW0#EIIkf^_)Z|fTF{-ZZTV5n_r~X7U`+?k;kz`ZJFMf6!AsNz=z!!2VuPGmSIl(O|43J0) zVN`V@c`bjW%NqDKEw$PMK0Z1Z#9iL#wJs z>>3amyCB)jZF&JiGYq?K0@DH!8`L;~Z_qq7dD2|{_ovLI_~nYAH2Z}Xa9?h5a7Z~=@$sAD+|Bw|$Pe#o zZatL1QrtddNJT>LU1fQ-stvP@Nj}#cMyCgMZ}`!Jw8wvnChx2}Y}d?yflE*%%K-rriMRdP;bvcI zWyRF`p9p8N0@G4jL>V4od-A#lp^@~o+s_rITUCEe=A+a{=)E(ldL-b|$_)&?x5EsP ztiNvg0PWlOO*`Q0lmPu6U1=JMW(En+S^-yq(hDP~OUt~dZ6ueUMZC>`CRDhe;^Sh_ zzOyenzNa)>nAq5#j|n#;Uja09^I!7tdj$QK}&+&zYh{jODIt2!(O$c?O4 zES!Jj8djB9|D{S3_$Gj;tU@@a+o>F@=VM>5!RL``Q#2@J@HKeFe2g-3nzq0xnE})X zSLx9QZa>oi&9KKVvoJqxi}OUa52N|HrFEzV@>(Du< zg|1l$=39>@G<#StPV=~oPKvM)5#UG8i6CHqQdyIw3bs*vQ4nTib|Ei};=Y(N;WQditxX)(7TX%gUYfhuQ5i80@nB zldD~(jqYVlY8372F5F@)Xa^WFC8Cp5gN7ff;R6sSMv`F>#*GRs|GBx=MHXdqQx1sO zMdYE}VCp%de#2G$qVzG4m~dEVt;rbqf!|ZB(-gF&^n_=^N8j}MLzSQ5e zoYag_=ph1|bqVYt@J-U;CjVMqTW=cp(Lm%_qK}WIkWcc_Z{^yn5gqbQ^W7{Nk zwiME7^USF{NNoV~m8KK}%UFtx?nOzx*3+edXaMQ^*-CNCDg{x1sPEb}Qh-17HeygA z8}{E^tn!-c^4iLOxsSMLRq`XoJV#VO5~lS(ZfkLKJgElDkP#sP+nMlZe?W)fD@ z2Ij?@2NyYkeOH&KqKD5gdMwuM-dqK#SNDWbH2AU?&Vc!HWyxhDvrsmbJNZ!^E)zlZ zvOsfdkHe|Z>fMEhjeN1+anM4Z<8E1wS53ePCcN^;1_9VhEpui?rD3V)$ylZ5K%Qtp zb9?#qJ3tx$Ykk{hBeZwlF0UpG@Wj6%74H3m@Djy?s9(kMU1(*F?0yPd&tK>EHjr#Y zHgejG^h)N}j0UZ>Xve9I<$}CX(_cV+?WpVAZW<^IkV#)DZwyy#a*WJ7`X+f@xOBEU zVHrV3y(_ZEEw5y)DLR-$RPcZq`L)$+2j*~Y9AW=PjwE6HUKWB39{iF(}ud`KX3FUzOkyth!TdbiCJkyG%z&nAhYx63Mnn#y2n*kdr3Lu!D}e^OkLIUoDJ zSDdm5^w9w8MO56pRMFyQxq+h*zzuj}alD-fg;w$d_wCs)JG}(-P_*%rm+`YZ38CRB+jeA!#6FDPjBLdk+jn5 z$}{2?C-|tdLBr&`NqUEb z^a_W=quIfZ7e3Bf9uqv-t#yZqx&wNO#ZNAnJ9ZwhT%D45WHuF34nFZx@RWh5J7gy{ zby9fC=g*lY#adWG`@Ae?HlYnCs><~`^1R#a>Pve=pO^ddI!I`>7Pa#+r(*TfKTg~R zuG$SJd3-!SrJnh;rB%xsd!5;`cKemA)?6(X_4)NgYS9Rpyjq)RIuo5JUeU6GYja6u zrgy~W3gP6?qT2lYJn@0y=3t=(q&=D4@i8k;kfa^vP+4Q{bj3C7Gci(BFN~$WOb*j1 zM_CI*@?qrH9WlvNs&SnrvG{w`vXCei(WjnUYQ*#i20zb~$wCtKQYMzKw8F>HsrIHz zr4Mv@yf*w;+^UXC|Bb<-eYE_h51;*PJ*Bo~VwTdgE#yq!VK~UC!ragtWtAeSha8V7 z2eN<4+hjD7&KZxN)<_%OII21VNH-~($FWIoZVJP0iJZwMy$qkrgQ`^H_v*w^l*^Ic zV>b_Il~r?n{jnNa+v1s|Wl9B!r7r^3tyRLl1w3DI4a--q8p$%^C#Yj+cTha~+8O56q-#)jQ z*&HZof_%X;Q%rTe+++hKeAk$SbNB9oKcY7ZvP=B)ANc+lO_HZt0Q?RzgnOX=<{k4U zICbBr_%|iFNgG+NP*k1g>phh3Fl!B*q|SS)nG;K6!OKhhwfse#*CwH*^pT#VLetiH z=Z<6)ZMKT-ZnUBR*Ee19h*0CpCE7gJ#4_xqNQq=@>>e{5%gBUv`d!~_7uj;Gc9Kg+ z38lZ@hdn_Vug2}VQ-zAGxPDuOc(o^w$3F(kL7>RSc{fL1 z<%vDUG8ky%d#d2`@2+lUvs|k4F>aBCq{i@8ezXxK;7g}cgyK*qU z(+Xj&vD{9C(YA?WkfKMSrWK_6Xm_^8m z8^dL>axN$WloNbA&-BPGen-I}I^~@7jZBmKUDh3&Q2=rmH)eM&^21u9n zq||yl6*9g&7JF5<94~VAoxRR8LAvsy9ZTs=mP*>uY@eLiJMQA;Q@_opV|wNWweF$J zKG{s1Dq}xXK|}rXCMipcUT?_3lrl=1N%3?g($3YkVX_%8W3EiZ)4;OD(1wj=b!&ja zYJL9Ed$l8m&amBlOEtC+!8-dO&ve5pjJb+Avm88d>DoNLbZvg9v`rhQQQ(&vxLQ!w zZh1R3n7VE>%X!2G*)pg8Y0GvYI(_EejL~S%9(L+{tdFz#bX*Bm8HGn};vN#6CSpV? za`LHKqA=5_<0@$!G=C(9jq+`I{_HCX@vW4c;@psNj33D4QPo@~g2b=rX68HYri-9= z+|0Mj%vz0D<~{40&%5Uwtjc!wioSj=j}2kDwHjJIz}_7Z#^B_8PATJyjY9k=dQTu- z?D(bS*NwlFj#dgHPAoIHD;H;(L7e+Qd=x`>>D#7U`nKJvdhJtK6#T+uW)#^`TE6PZ z8OWh91FOhCtyE_+_4fuZNz_F(=Jo~MOgdkWIP#^eMPE}fBaA<{&&&?O5=3s2(miS( z`(848bu#&qAYzZXB#5N`iy#syJ+ms;Jg5Uhb_}RSr=~7wz?p#&c5}^3i*`H_DxlP1-YAdtxSA4ZOE8UVO7jrM`u21O;>TUFV zMgHQe8K{pGx)p+Dpt=M`t)?!=#RHUgUA}>hJN6o01l&%m{D9+OCNHpxwfJbIwsG?) z(`!Z+)U_%mxi(gVfMI)6R0mL8ikf@Py{+D36(t?3C_>|V`QUOen^yj<083KP(T3gF zacxlL%NY(w`C$OJDlru|ql2Wpo!gDEf7P$ZZ_$m9C5Lk??9A3Ev)q8rQB+zoOgY4; z#X;jA%`6xn$;}fPLwJoiGRrotb*rN6%&HkM!jNdIL zIff4iElG+NXPH37NUVB2{P)l)MXz0NDIMRn`H*l!dshBv(SJ7y!yRDz`Jj1~baS5* z(xgQggHF86n)t%rl^#vkCMGl~SzlZ^@}6}4(+qR{6dgn$>9U!!(`hrt+Px6+9TJCHR`x`%!goP$A<;)IJ@Z1>{w#MYRbGw+^ysvGC zxe_R4nBu8+8}I(IuyKS54|Q>-|fnSz-L|urlo= zeu}Ai`dpfGt3A2UvHDZE#J=l@OiPVChGktA&{+9Pjpe{(B_QrP`Yyp__FTsw`V1^)=Hh6H2N&gWzF-%nq$Mac6%Dvx*hY@ z+p^qyKVR(`;Jknvp2yDX@-w)=N8D`2euj}IJM&5&SH3>W-qG{58UCU9W;L>SPN&ga zxuyb@IK=NZ!IX9}fmW)GPJP@S2|Xun=b1G7;3})Ly~+VtiMu3r96%PGK#hLGJn9NX zwWa;Qx>syB1`0TbzKmIY1KxnmAfUxrgMW%>bd5thXHZe0HpP;A&F$o7IHa)(){_i) z1?~zFytm}llEUr8D2~->6Sa?dX*JHI4C`KIeq9b!O4W=TCuJ7;u!Sc#D(DPQba;)o zi))9QzNSsg+GTT`bL`o}7CKC5e^x;W_-y0S8Q=WH&uo3JxUio8lnwXmpH&M>JB317 zNr&uJGF7ngm1d8X5|81^{^CrnKLapL>LKr~*@^_8^{|wd=s?!w(+0nEizv9M^|s91 z;W&?GcCk;_1JBWB3KA=MIp_>3CTT%fCoBETq**1psnWR10$Wt#HIdu>YVf9qD&w5H1CHK*lUr`Hy$7www*j$3=$UOF~#4NmXi=U6=E zauX@UE_MrQ9x1y}0N#lefO^?H zhiUcB!}9xW?y<7i)-k5IW6^~m7P1RRx8zo`o~PlLrkKi_^w9;O;&`C(%5KM$1Bp@)U-iu!WeHdcS|3D z!%hMkR>q>nTYX1HzcLX_to|NIY2_XkLq(UEwQ{t2l#I^AtmNoXN6ZozI4O9!8ajP$ zKIxiXnJJ()I4aJxQM#cm&kG(xV5*ll>Fg%!;KpBeDE^9Hw5rZwU~UWLyC1PhDm(tr zLcl@2%^!mF&9s%zjn^GrkX+ElW&>s{EkZ9nkgq-h7lg87#-b~bGv4kMS44#@#&4kM zlTsp(ks-5UFK*W(Bm6iarvg**)=yT%EGc7%9`UWmiHid;*H0#mBb}Z%mF)IiUw<(; zy%SJ6H6B8zXWxm3qJFv$8BgA!&fyvd;jz)sn65DyCfq+&*jNEGg@DS7`4h#kzK zc~1O@kLI4iJb=pH{pce17)}Amp z*?i}*QT6mrXq;ATIaEKtNRNUixpj08gn2(v7{C6p|Bs|aCU4AesKaAJdH@8x&NNa_ zj7#)37U%lr$h*PBZ-daRSMSOmp=cUE`0}Ts58raWe%A-T{4XNotXB=3%~ofm8{Yn) z&79*-`3NItQImKio~O6C#x($#e#9s63|p)W;B)V4vfPOKIRLw-fS4gg72BDFRz{*p zBJ;AgKS2Gunc0fTYC{AyQ9(;p`H5oB^4T z^=1GQ9GrRgnPuPgPEJxo%*sFP1F!)Pm72V^6XfZ9bRK|K+)yVSAf>A7>3wvVbrA^DDiyc=F-@x2~GFB?a0z-1UAUP%;Y81vy zmfH)Ldh~LE2vzLq6L2>L;GqFr>L6~0F_XiQW@-OIm_W1)9-pexAA2Pv*;9H-62YpA=EW#RUGSHsN909An@ZVj7#a)-&EcR?* z>{X9Om3V~%uhs8`@2CiR%Vrh1`z39mb36FYV_ zL))oR@hkk7H}+jWJ*{zyMo;o{h1>zCWTBdya=qrI9m@mtuTjOZ3}(CxaYYXhe-b)d zMRNIpG&T)h)S|yhE9R)mz)mQMO7+6g#qSICWexu;VC4P?4Idz7OX9jUZ=?oPa8R}a zg^wqeYm=79Y0iq@N$M%kcye_ry2hsNGKkfViC?#>yHx2LEQ#;gCmiB{vkoucpzRK~ z;p4x!wN&)iOt6%pPt1TEjl#O>Gy$p!c~}lEQV9E)0uyTUt|1%e2k7S;>A9n7C>l*} ztR$2C*mF)V5@YSTNaB7LJ&>=w9W3>LxCAxrSh*Jk=DTj2LZu4jh+7*G#NJm#Ob>yn zH(Pu|JDRCz`^sQGQad82n^O~@?`~-qpljZie)ed(Ez2ar8uqS^k?K3nxAEWP3O+P% zWthiY6h^BXe(vK(VT0gQRX}crdo~zB&MdXX4^Tkw4gut<%m-DIj0W=9kkdwYWnn~iNae)g_$`!8!au6Fwy_pJX8R5_6 zLOIIaH;t-?vjy#Cm^6l>PK6J??(;vj2^eJ+hfHfMSmYSbnh6|BJ}t# z!USBTja4y(s*i=Xd(eq2Q5Y>2Jl8~RPgiyb*tJ@`=f#BvZ#)0%2C08qh=t*fSaQ0d~e7LI9X z65~!8{ysQBnRIUoSah~iu6~y38yRJcc!nB}l~6w_^?h;D`+^VunSxZy`OnNDNt4{W5y##0jOO_#M#npCR1tN;&tqg~0+_tG_`;U*81EUU^wVi<{&+R=O^N7jbX%RIQ=JYX#=JzOI$#EwSKT)mUmIb%1o7sQ1*AF2Hp|WWnDpL z>%qAzzpuoBpC1)FMwkdXZm~`l>rSUoB}+>^$D{P;Sm`l^M|_N~3#^lEMX%jLoz4vx z8THHV-IKeSh}|=5HDJ%ywnD%5p=t2D+MVB^hg`P+wh{8C|1RLsGp3ee3sRHj5V~m; zF*hRLKOW{K^b41=Ab%gpm8|gkG|3_tr;K3INEzJLMCOarnuXKSzmpos9_`ZDxi@# zc(}J-1X4a4c|62-u@>w3`9KD!_8$AsYVRQhSbyf+0l;g$oEu=xu*!_Rov?omSpgmu zx^wrBfBf6;FaP?P33wHyzue;SfA;yS+2sR3|J0K{2^jR*-6zpl+xhQb`=h56%<{(H z6ZmVe%Z6_gfR|g?I>JW(X;d8G)g|CTrGM%fqCo*XnRLmf{l}gbQGEYB4ea{Klz>4$ z-=LAho{-B8`Hv4=zPt2~J)bE8Az+e4hy6d!2lp*^_dhN@Sc;7pcwdI!=?*}U{D+lX zKF{=zJ&BlsCqOj9NOG~}^S^rnLcH=13jiAaPl(vZv;J|@{wKu$oy7m0#Q!#Y{}*#g z&uHP;nb;M+Q&zFbA0hXjmzOl~I$b?0899oN1L>)=vaIm9QjTGi*?+re&jeep*68{! z;nGmOzyo~hhA4*pf4xnjidl;l6qlyw!WSbp{-X@^z?Qs$pNrIz75|yi3oji85D=?4 zyC`h;I9(dSSBikotE|z$-i=PD`QCl-47g^MfJZrAy|{tzF5d<&7kq8TS|jSHA(Q93 zqms)CcySz+1`MM=pU-~xA-(sLCqKj=q=dvB2EYOv8&<)M3Liia;Jt87@epS3Cc<+=0$j#7#<+&P{Xiju*`D@+2f ztzSAcIdsWAYh%aGoInBaUxMCzN2i-(EOs*i?*$+0y%cy8{ZgRMFBe=&QzP-(jSypC zP~8gqe|!_-%`TYg@^+x71{|8zPcW(riM*_yiMyGUz( zjdIjgAm|jwt?_s4lGIh|&K?3DvZ%FQ*W0m@j>8IppSkUnL)#ry+=EV+JZd~t!62x} z?fkK*N>XsJB7PAOAOuk;rD%{rsgbAfMJMpC-jN#%Dw>y!i1sp;-J}~#6!+(_tmWn8 z{L25l!;Z-er~%@^2AtAdG zifqZgmZCyh>|=|Nb;!OBxe8fJ_N|gEW9*E5C`$*2mcYiv(PoluSJHPIR)pwCe5vlKrT9Lp9g)GH=IYg?!){v0C6U*t_p~g)#z<3moy9$3Rxri= ze?UR$ClLSJJNYP!lptrbKyL0jMkNBY*mf-hpoRVhFX{lGBt%)%nez2x45|)r}kPto2@W1qZycbpi27%dMYIFIqjj0M{tLl``1gxtA&XgJVPO z$^g_9Ben13>WnKYrOW4m^qzZuTG#)qEJH&$z^y5lIX@hm2B6&6@u_jO zUou%)%U+DH0eOsbS|Jkc?Jv#(Fj&0dMl6764HabrP}Bsg5b&r!M=M!y-3W;sj#r-s z-N07d6ade~{t$qHG+vb&sN-x2X6h~N7&1Skf#m!42P~k7k$%n~5LAJ5070ScjkAyN z&4+&h>M}q2&ZnTIhC_W2;Ygf;|BH#O}pb;!&tn#uw894VJruUWyViyiRsLxss zpsCL~n~9wRqo8JSn#7ma+{C+uVCK(1oTIuy=AXUU@>!quBFL26 z>5v1G9|>Srj%qDZpjro@pmF4be{zr(PX~6%{)U*c zR|@P43tZ<4Kq$Ot%K|NVzSb{tncTFGJ^n6sxs#kq(COklL4A}lh@iEM?&dww^*2tB z3|ece{|rK0gB14;Ck;?Bt-Fv;ss~c`++8E?DtFEtE>R&D63Asd;d)^U?EM` zY+x%`z_nDSwtiK~|FJ?`R;ung4L(j@YAVX62TZ}Hl4QzYp?-PC3!py6lJiOrSW-H0 zO()_4xHs0?aUDP&1<(h>WT51Km>!@G8a{8^VMx)IyzN0j&1FPSW@~NvgHucQB2Y_f zeH`dPkqiZ5MEBqcxEFjFzHbNjzSrbM>5}PepLycCeZlP7!_U!x3TQkzV0V}_OY1&d zKBIp->NV;-Lxy(6H_POAmrjH-kr|L5luEKvlGTEPg=`?UE`nV-5~!|!Ddp{hD&I(G zh$@)XRwQ+jI!)nml#YY5LuA1}# z(S0Y=n>ZTE3m`W_N&80%s4+)`g)bg;?!HAYUsF00Q&coW_}S`w(hQJR(?NR_ZHe6+ zOLuwxE`OIeFt_p1KDp#fn8%a8k_l@idSDL#FNr{Q&_QayYJT-Kz_I}dbP~w0R0i+{HSIQ#m90Tj(dAp{^9a(fl*J6S;|UPW4_Sd}BjbKI`*`L14#rBGb$ z;DPU-466{VOP~54-5*|Nl2YNYl_?6K(hy33nQxRA39w*$&BOdUpj^;xR+|ixO2@U5 zefvm&OA72bY5fZna_@g+pk27t{4*8-C|cpkB}uQtw7%6DEI;)BKvlqdJm5B57V*)v z%F#h3*k`r=>a?DK?JPv}XOh!cW!c*?nfv!tX7nwoyx1lGjZ#_OvgzTl3dMNGEfGD? z4%v}%6scHKkttDb-84PiSTCYAt7WS;&YATNlqSt3Asgj3lGlxcwfOdzlliyLzvH9O z`#eyd`#tw#KxCDMwu%;E?ow?&=EVTa$9eQTxiKm5a7qn<-Wi3daa{eRKVpW_yzu(= zLo~~1)at>(>LRMDQxvxnGdK~yP9&H&pqLZ10I5pPx0H{?lrKlBcK(f~8KN}c`%FWf z4D3?*2e9jYVu;ININ^&rb+H*>-syd&)RzkL_&z$pwg27c3MwZKR0HAHich5!e%TkyW6eJY(DW^e5xH?2zwaB@mKdbEBc5<>92nJ zZ4+`cAdjHWZ88u-1b)zH-+B}DR|PK5JI*I5-tgU$(z3t#$cVzGV~3}2eTPV?V)Yvn&w1pG8Sh|3zW^)Qbz+W!T>zMo(l9< zEj(ZcowRNMn6P@(A=(ZIh#H>4T$C=?!Y?kWm;!XwuZgnV&aFu4qVm7mWVNf765}qa z;s%9tD}4$KK7p3LhqB%g-2Q+g;j#K*$LkWB-1_fD}8*72~dP$u9|P*T1Rd&vH&oQt{gxx9$i4aEuk^MX0FUP7rUK)pk&Q%he`j>s)w^UcV?)j0j(*z< z^p&?+$g#&&@4bB(I2FE@w=ExG31?;Av?L9BnaTToYhAe+fhK!^ABE!W2E(DDqDG&S z24z^CDy^Fb|{fl?(c04xyBSoY~(3r{m;u{wOK1$@@A8 zxU7P93IvyK?1i0Hz2qY2UDky-msHg9gz{xw`t)Bk)gsG-#mPg0JO7OOHAwUSiw5-D zr#RW#CKhcT_7rclXR5M)ImTk8xRh&j{O!Q5)||5QxLDHO%5a4iuzjNFo-7F{s`hia zxk_G!`>TwgHIu$Nb0-I1LydwaBd?P4IuHvUIr9qZ7(s8L<=qX@(c51tdfWm9=E&?a zeMZThqG*(LqbI)|Y9ulb#F`doe$)jyDZFo?i*>mi20Eae%`TNa7+>A_tJez=FmrbF z6Z^G9C)Wl3?R!PZ8*Q}SA;ZxuEFSMP(%Z?Q?8V7vgW>jnZg@QFXU=ZX1f5RMynI7! zPw`iYAGYi{pP&KcBFy7@sw&x_nlM+-sYs#go?56FS@`6h;@r>sI33S!WNBHcuV_B_ zt?e>2yzGf!Tvb1ha z)a^d$TliMK@Zy$3di?>az8w48OgulV z8y`E%?L`6|u%uHC6qI$$v;gnhK_AX|&UJO+fhAFET&b^)djg#^Q7!NO>td=ORtKJX zPet)g9B~|Oc6ae`4NJ3z2lQj{n)6^{rwQ{e!9S|Nd5miQg3Mcv2e2f zWZ#1!k&iN_)#0+6&}zDRX!fBOTBPh_F}CdL?pJeN&|xlo_d3506(w_ZKeObvttEl= z_Y_B5D|I4ZUc3X~VL^N^D(Kl=#Y^qCT z#M<1wq#D|S31@|Oqw3m+51&8Y|Kt5L*G&&Nw~RjJP<9^i)~DEX$12!{gTXrUeKp3; z;#T+f-r?g4zwSK<9`Si{xnB5GHa{#|;d{9#rfkTpEi!Vrdm;A-VzEUPxN=Y`XLe_@ z@79n=KUmWa(6IfV))dhDVOI_{Pn>0ph`J)xk!a%zm)#9geWFufhVO7n@GkiS^>0`_!$sZK0Pfyu z+gI^r6R1qYq&Rlld|>Tr?ZE+Dbaer@WbvW&V{CsxPRx#t zpT%e;{kf%u$NPKlpWV*XcqnV5rkbJ?Uk(d)7}Z9YKcL~RfhF#&bgboOOJ1SvKR@+&J&iLPmr6*pc)?KmSxo);U zaQDH7en5Zyvx!0afxLe5DsuIQ?1cG!Z^4t0dl?xkowgaq#sQq2XUTQbcy`KtCg5t? z%JlHx(6KGIgbKqVWP~7mjiqy9Xh@u50a|2fBHN18)Z^QHS>)@T@#rbGq zbjC&S7bfy&GL494u!b^!%-2b)NXUxN(8RJ6r|RR-{}dn}Jgbs5UP*&yI+^o~Z6zJ=&R zN*Pnx4!KRJ?4rL@`XS=*8QgR0^A^wd(M!J#(+;=WqxzU=kB2tD5Sy)3d?j1xS*c9? zI>UBc4tgrO0oUDr{zGhW-Yk4=7WH&P4R7+^tDdBsT2{&P85$ zS?Hv;mb_9k%>oPR8RMbbPk5I4+n6i%ppq3l9& zJpX<}W@A_H^7?4i%;_1QqARD^;djV=Fb+To1mXdmR&9m%tm)!JS-4lA?s$nO`nXSC zBja7V+kdgEoT>V9M}>r*$n5y`AbI~dO!551kmi$@u3VxOnRs{M%B9bp<5EVk!U zZ?VL>MSM+sVP>VSa4SrxrXJU9Zk{L*F&P?l^SUeZ%@)?{Vek0);q-regq1)aGpZz{ zE@myREfy~Mkjl8Onq&Q&*7G_G_dmv-RqR%==_!SBa?_7K4MSAMYQEPZX!QO>ghn+T z4ilTNjLZ5iMdsNVl``y}XsnD?rh#m4LS=^T1`)r-s6|$&dEXoJ9M=`7cI%K^KPPHb zyaIbUI%x&Z^paV^P2Qk}*bL*ZXoMUKJ*11?cZ_>XiD;mKGeNuDg=hS+sSf+SAs;|HomJMY-+HsfuponDT&y{VKCYn>Pld^Z(U67X4BkNwFk%*}lH_tV`x)uDsKHtlH! zrPx5r0~XTm&7GI167#+7qPJ67-?vBcNgZY3++4`?O8(D zdG#eOlS3k~m)_>{A9Qd8@Z!alh%tu%P=+!TeU7 z%w|q_+x2jm+M76Bd@7Yz~z2?4vN@_L&ot4@r3_4^1{@S-fGZrwqnOm6SNN z@*=&x|2W=yaNH;Iz&<9I<~Lf+$-=p`_r#YZHFJH@-8{=Y^ett=*%Lv&0}pULyC`X)VyQBlm)k7^ zs_R2ac0taD%J$>)r|O#y{8k8hLGFDH!nReXw`mkID7V^r&58(oO0}B`vi%ZQ#dm|@_e2fN*JLF1igmFU(&So#xAd$&@| ze@Ts2)n)uu3QDR2YEFw)sdjazhA^@Dr|1kPSw$_U-B0U#qprQZG4`ZY1hz~Q>2-}* zO+c2thB94BBMVJ7FaA+R;MOc-hqdq>IBWX%kR=QBZptRM#4)FhQHR6NaA)p z`x5R1#u7BKu$POPZ+}L>{qvM?dpSJG)=0L|Jvnol#RDCIu&6W0*sQJ43ZxB|ZW$;{ zgj-LU%-f?g?`EI98oZK_XE(#R%@KHO%(!IZ?)fKmXT-V%gE*<5Z#N<=?So3UCm0)r zV^f2=N{xuQG#hztD{4uH_N4w3cqF{IW%O2#YTkO>*6%&sO2ToEUZSv3BNgqhTUJAG z71L9dj+SlqnR_%`deCZSp+09xPxz`G#1wr zC7NuJN-+0#eRNV`z%&36i^qhEI@qQ+S^ab#C)EtD9luc(5bURSMSihzuNOwT1b2vQ zQn6l3^{{T-9^|TSKX@l-KD?DNUzE@|h2vR=Y3=YIzIH7sVyx~f&o+H#(J<##V&Y=H zxKz>~Zu&H3g4=KUvT&;?(r-4zO`KYTRQpR5ms+9r6I)Sh-xJfg6EvC~hCrb_k*A(*Ar^Bu&^so#it1L_XA8YRca6t6 z7YlRLw8`zttAVkAX{)c!caL4& z`<0;A&f(FsfVy#6Mf8G7xCpg+{d!e^a~Xz>0I$c@aoMa%c~tx;+8GYclWScjt!)qQ z{xon?+gp<%7=6iIubg>R(_%E78;)N;h^v2M^a0`PcxwRv%MgF+^c5PKw8a3KUH#oj zmrLVUYrpg;wE{bcasE0rAvxq|9)^rEEEy{7hAER*EQv&2c8Y?sQCxD;F;14oRAv-+ zsyZVF5nMdH=rV>w{`~wU4oZqyXv3C`)V2-7MhhIS03ZLUBA{gX#FFQkh}pN#QsdX> za1_ClP=s<(e_4N`=J8-NQv7z=nM%q@-l4JCVPaIpI+WDDI>Ry#Q_ezt+vE~glYdtr<~H|1dd3C6qF}Y3jU{f% zug_$^f}=dPBW6DRUW}MwL>H$yZZ(r$QfuCnUe-O2xh~E4$|3w7WL2cfQ}B_$_LH2t zpNS^Y;1rBg-7xM7#CF|A|KwcU=Rgc#)*g%j`on->G5f`n@6XzOloR?S8oo1TkM_k4NbtHvnYauKXZc=LRmIQXFcQihtUbo6 zt0$}bmfbDu2~Gmz-g{N_C|H6c&%amm%qb# zPiFk3&-|)SJ1QG>F?f%_*KQN1nk1IMTc}3(YCrMPm~`j5%?4_^PjosDImWx#eS0xs zNzV&~TgRS*`YmJQ_U2k%-eSPL*mBzgwC9(b_G6&!daeysYQJ=#jbpaE<`>NAk{!=2 z)!I7LR5Dz_Psrd9+QsKe2_GR6kGdE8me^gYZdC^oJihl;wDy>K+Bp+C5#d+r6YCUN zopWy}4GYuEl{vR0omYRCOg(2QOPF@7dgipfnAek8kA0)1WGj_r+I{j=8v^`8j_=tQhwm)b-g81U8t!oC@=4&`GyFPDa8XLZ z%t{Ro;qru^c^&Pr(Y^OLvA0&eyzFjPYdD7HEjp&Jh!D$YkI}U1vvYf+Z0%#Gtx4T3 zP9qOf2uQK$6X)YaDOwEaSADl$Yt7VriAD2nsqQ7*Korn41P#&TBTG%A&MbhJRZ9W) zmOq;^SgOa~a>O7JoJAKm6=Df;*+C9Q20K{qJDlO_!BkWbv8@Z^uH=}YJ(pDF*?dVl zHjNkjdu{%0R^wd)Sh~!98Cjq;?c$T{Gi9T!kMDF~FL*kv$c(@`T#fz^Tt(elc*98- zeNVkqMzMqfYf)x>%WSWfe#Xi2z;tX=4He6SZLn!rKE57pj;(Vls+~&{i*|lM*-a-e zDL4NMLPg7T4oZPK7l+*2D@Nmd0vkI5Tz0THHa_h3Fsx&6bc8lKJjBXL`7I($J)8{nmav*rRU*xp{_%yrELGwAJk)cFdH1%x+da+QR+U zLC_KkmP34(ZE6p)MjU~CAGgFqYw=FrjhFd{mb#nLz3zb5Yxmv$$*=y-lYFbWHjU0# z9CD0MMM|nifxu>WaK---5R&vDx#c&s@{-9PUw^tDqP|FVXl+)Pbh5g0ypN)y0^B^@ zlMP;9v8)R=3%WC2q4w&B0k#G5S4z*d9+Hu^P^P`a4WiU zmiv_dOV8M)dp_`4XVa_0`L(EF1IGI;29uE8h6 zJK$SjjCv>-BDG`EL%LIJK$>;`htj;i_~I^Yv}tpwU;h&}e)W*%8rr=!U$d0@>N6eK z;@-ILuU1hrpU0{ahhX)Z&^9VXA+Yu55TSIQ7GMsW?E~sSOv=d5TybnOX~!Yu8#%Re zcd%voto9susJnmeL(1-xwAE>e8!D6vXMt!ve)RSxcqRgDYOUPy4zi38{}!+RwEv1$ zH)2td3m}U+Iqwud-w=+KjR`kuazH78hmokCn z&>no)Vpt0i8CrTzRD`X)w@Y_K16}a{gb^~;1h-!G#$JNOlkeFc8nlXKXI1HdD{-#U3U=}6+wrO4ov*_6@lU>7v~m}b-}z0qe1W@j%jqu zVzQX?Gs->NSuhdb9NO`&a?(QgQih}x*fO` zV4*rMP97HOjC0GgcVIVms%53|P`?0Yk{A@)U4*3WV}+n%BD&9f8LdubbJDXYLEh@h zQol|`-1wC}4MB<(7}N)PW2f2Ae)P0G0}Q|xWlu@xsP%vMDv`~ko|;c*$~>%x{FZ~P zXSR_GF3c6e_nAUz`0C}7#=Y(sy2w}$XEe1z#cwZmUQ`Dbf;z)85!nV7d)39oZU>BS zhzOaONHc-b>(5#G|Nfk>&!~N>WX!q4x9yYCR&~TM%cY3s%w0=9HAwKdG{#VL9z7Az z+x7fyu?{ePZ!Mbl4g4T0d*B@dc6MNnaUfx_ib&nAR$3&g%)QjpGsWHS zom0SEI1(>1;AEhG(+d->qgzs+zVce%_e`meduVghwd1m zS*+@eMAkUc7o|K1mj%<^`Vg`S-|!m8Ap=!-Ts6V+ZI2KkO<8Hop=s)D&fO4yH%r07 z7ot!>8rEokXZnPILFm=r5fuP*Bd*Fr=pDxYi2;zU0n;~@nWy(_m>vb)g z-Lx3bEiXzs7W$rQZU4)v`({bW66rzJ!*P$Ee){5%w?d9wi5@FZ&CfuMhXfx`K&IG>0U+h>D-XzRcMWe<~>o8D<&X4sx^h;wL&q^5&FLl zzn>l#FEkfj)Bd{`K=h}I9%0JR|J@;6cJ%T05iD%jAGuX?I}ovNgZ69FaXXBB+z-ef)v}`{gCRFxa5=4M4|0L zSnA%x)#}!fo0fIomdnFCOMv*_%C0}4`}J@VC(Qeen7Fq_F1%bt z74B@$bh9e&>10T{D?3)7rp#p~+dAdiY4q#U?XbhmFdSZOoSji6n6$LH`EIXoYwRZY zt$3;oOD`WKx5L$9Snr@KY1Nfx6*az%^rrMX`}CZ1?uVan*Bn!Y0${Irg~7_$vgT`E ziMqSpukc8sro71Gngm(H3c-L6y(e&TsK#&FwmaAcPwNO6qc<@FJC`2~{I0Z<)sD+q z$gRnyyZVf;B7&6k;~vv7`D#v1JL(f%?qNUVsvpV47?6u+7|RZ zN8X>KoDr5Rw1OKBJco9T{a(By+Gk(}Ei^0~)xS_(bkkWsCPg_o7s3)cO|O3;t4LE> zKc*({A!3XzafuO_m&H!9d8yf}kUkDZ%XBUV47c}b)sA@wcHrKj;O!uhcAEe8DyBT5g>x;ba_xfbcM3|N2c>CnQ)ns)UYZLv#yq;A5mc&)g zpYmjT9M1?GiT#By_YLHUb4WR|s|jQ>jGFTVWK%-L_pyFqID>^-j+b1_d#98t*vw{bS(UmCqonAhV2QWMD92>-0edgnz4PI?XwKG(QRNF#=2p#!2R@b$vvRW=7z40{&%HKXviZ0T5w;UjF68&^5ny8Pm@+ZCI5-wl`I zChxT8ZQyf;TPZ0Q%|OFL8T5|M>k)oQ{vpmo{-2r139Wq0i6NNIB z_!!?pY2Z@ig?9&A&m+9HaFQFQ)am4QbUyzmSBI4*S}2$o7#8QpEbM$qa$!(^w@MiX zjmkGH3^`ewlKRL|34KhR#ZdiMgn3}+fB$d?vKkr# zy!?}6zu}^IzDt%d#DQ-;58#jvB9=fJz}RMl?x&(W+v^3U zKUcQL42)m%4%!c$seUGULEUQQzrx)UzDMCMFaBu~`MFSU5C=Nu*)_F4JM1=6(+ABA zV45P^CGUb~?UdR@WyeELQh=?f*(5H{*nckx_|)e(dpH~*k!BK7o_HI)AdAT@*kD3d ziJ0`ai`RBGzaNFLpGWLQ#tdRVq)0!I3FT$+{aqGdGi;u$oZ#fAWF6;)^#sY?dSGlC ze4egsD-dJHd)|;$PyHPW<)UFLRC4hy#_ga-c$4~|42nm zfw<+ciuUaCz@mPNCLWmsD6RfI6UCWG$JSrh#)FXQ94x{*D>13*f}zjpi_EI7iZ?kt zmW{gGnjpL@mi6%W<;&S%y1C3?25E-HvdrZ4#z5E6AW|q7Um+Y3TgR)_%2O)tgBh^y z9WcyqqseKJyKz@j$XVcL!jp$0K4K0|*JDvGv)9g%WsT|S9gtx>ll_9u)2KPp%ZGr- z1i$fxj<&k9(M6sJGN*Q03LwX3L3(8`xpUnlE9 zHn%!1?x5G0IoMa&!}r^!2i{|cBx*+H%;<#BM^C_lIquLmyuqXyx?4Tc5` zQXP2GOGAKZAuWVuxwsc11%|8%);KZXxci})4?yjaC-F)U%-#^CuWbd$z?`_Kz@-h4 z0`L4sp&;f@r7&e@a;|cHN=0eT;$}TA<1Z=%tZ)Qa<7ZI*qqO1hkzSX9Ozlw?LwBp-d)lU zghBf#Jb!nba#JEb*ge;@)^_%%UQl@gMY0wAc=z|-_*j&JHeMCZbG_WFHUxcB}&t@26;F9KGLC?W}4j3&iKn3E2&dFX03&N?e- zIg!Y%JHd~R9A;4DI9Vw;RA>ly-@ldI(J(XDkxkk~>(W3NNmElP0V@qPORwMu%h+u` zpP0d>sj4!^+0MOQ#^RXt;`#!T{dziaLVl?=#~M*J$hjOSP(soENKb{8ozT&SYiqNN zkjc}D1-%oj8ro~)K`oTL?`4I+4U1pF%=b#%*PiRyeQ#JXkca|* zNZ_&sD6Zq73Ob;2JD-k?l%CII-6ic1ZyULGt9ZDsRIQJ;UmbK#Z8&ibGzmQA_8G$A zzO0iZE0~;PYTIl~B}+hK&o}up*NeaA!3Lc(wfbQIabc|4I0M#gxr=vlZeY24A{HmT2d zco4-Q%pH7Vr(%5fAY6VnB)h;b)7NY;k$-ti zR$^!=1M&JVSC`uKWc9;^tz5MExxDN^e{UI#TH|`Q^*8&ZCo;DI@2Yf=n04CGrB$DgI*t zEUf;3SDT)$spBCJV#Si^=HYLmt+I+`PmvD6} z<5B5@$23Z1K6zKWyl-%2j}cmEt$Q7xO+NK~LxqY*I6ay%t5)9?Ozn|@9oU`&PO^Ie z&Tvhut`C2(+YewB!7F=nJT|+?bzX7{1>=6{L4B~d zQ6Ojt(DD!Ru0XfmCHdDajJ4qk;$R}_T6KhH73{79P+7B?m-HKb(qCQc_w#UwD2cfA z;6M+5uy*SX{7T6#c_qJT4Q?(Pw)p{f6 z&4a<#Kj<`Q602AbaqrdItJG>_iTF_x&+Z|*1i!3jwAOftk%(LM@z+?XMQ7or5td_a zMc3>^y%<1CMyXWe*{J|*ok+0%cfAUBfs3O&6O|g=ds)Y=zb88nlay;-|4?q4q1>62Bymd&^=yD(9@k-+H^GM|Hb34j7MGd5Ac5 z08K*xi5c_LOi$U`kZtZ`^I|kQiy7uSxoZR3X$+q6WfO2$jJX#RCa(IeWW?E>*HKbc zLlNfPCpy$vjbQUj%;BRX(rR*J%d?z$XywRmmhbepy`_27nQRsN-qN*g`rOIQ2$tBd zlpRy5hyfYj`jqm4U-Ijfo8`?e`Fba@r_=oI>nM4e>ZD%vKuK+Z(OfpDdDh$S^FVa{hJpD|b-4-dlD zLNh!^P^bL7j9gNei)+PW59f2rw=u4$!|p~@f4joxu$)gvEZ7$4H%S_8@-pIG5)$v)R=K!<7PeM@9g?)w zd7$v8n9hAMfNXzfxCRsiswb%YX(7cF7L*#M^sxVsg^@ zT8p8G_;`=cXJ+AciM733Y&{J#1k%~{gXVhcpX{z_m@HQpGtadTL^<(KA#*m_$}-jd zi-z4@E??LCY0g!-&Haeu=3GzP>7jV9pEhrjmw|!dZR!XsTYA~NT%^@adgDn-6p7q&CvK=J-f&Ht3OwytCt8r%NINIzr-m8 zR>8;nTxdzvzb$95XxQ9iV%6xa@Ve)P99^FEcK$-9OYR3NRagt$l!=xt^5KB$qTzR? z;AdLi)MjFy+SvWcF2)@-wbeq=;#VxE)uiZA53S@$D}KYHk~G-r6v|SV5(ztVD2+zH zfmLzQ1BdEjdsSzFY+oY4szL-MK_*i=b!L<6Q&G zO5}skP}-}RlS z!%29GCYN*W)%E>Z6>v^_a7{c!qLp@H1@z>v$_{%b%-PGe%F)oA`(l1Mi7jZ4k+EaU zX8zVmn?C#B7=`V}1_%2YdR;veClvaH&1XFTM5YZPH^y1NzRl>~sgT#|zg#j%!q`1W zoaGLB+{;dG`u&=ujaE#<#17U!h%`t2WHcLpB3Pwu{Ad!7rCSPsi> zK|*_!JY2bdXB~eTbPw})yE0+4eO|)i40H%L44)e@Fe(iC?fv>j7rCwK>j>}R_&V8- zj97;G2Fb2!dU=)WZ3_>Gt)628ArVL^&^@6rlCgGmX(k8H<~EE#wEeDP#i1smuFM?G6+R9m74DI?9B^X{SxSY7+1F~SZ_I70Rtjx3 zEL>!LOV3*6B8^pl*VD{kMw>)-{5n*J5pNeC;}(s!4am+D_uuu5-;{TVc}<{AI-&fX!$;Stm z&uAUUfdu~@MXmU8g) zlNp~C0A0{e$JDP~o1R{LzqYsaNlXbKQI;v$_HO1gWM2c}?2-h$`etcL7r*ua%j1ZppL&@}M?v49G>{SoSnR;J)lnSs zpQQv8t|x_F+}(^#&o;k&th=39G>x!N0A`a{gV0iH7GWy%0QOInIZUe|AHx@3mIOB>XqL<-^1L&!y6v>D_%3|+TlL< zJIm7(0c%m|ut1M7zftrw44@m>4lxtIIYI5s1N4{&6w2w0TvS3n239J4MfE6z>E*`cR6*BJb|_o8Ko?%K$nR9WJC zmF3D{wl$01p|QJsN_o5WQ3X=;^uHp%gs0SMal-C99X*jCwsUAr%0+4xo7G;eXYkCw zU;Gc?SNDob(-H8C9ss`(0Qhy(M=qnPwcO8kX=v$fk^7%f$^yCav5jhu3*NI&&POR0 z26x#(UEqunefiyHE;9O!ISkclwbr7Dyx@C_uRf)Aa3`r4qf}erBz#L%jO>u3j1{M@ z#4;4&WZU@d>bR=!5?$WunyaEJ5V04Di`O?L{J$j)OLxg)pKTfkWL9aNVjVRwlAfA1 z4nr6=q%FQ?S+;u{7!FL$7y9S}N5qNH0pAmlo?f#uTkM}Ei0VQeud@t3iZp3&9y6O% z*Fy2PD!(7BB@2SCxb%tHDV(bJ`ITmci%G80+?WYGH!zW8gay-`v~$Cz+^HRc8xn6?JGTk#i%miFeL)F5?lY^87HB*XDE5i~J?s7F}#F*tDZ zITMZ!+-Ti*k4v``(u2>)Sp?WT%29J8h2dsl_-8xgEsS#5pptPs-<}2EZL-fl-TFum zz!Y>j+IvO`b99*c5ui<~|!4R)(O3<2OXEX!=N&QWLh ze{53fnj>U7)t!`&a7InF{vUz4bY6%>W!{$&I`Zw#rK^9ja=P{%OJA&x!5cJ|0t1Cc~bD-3z) zBenb$7D;whb}BTHYN{I@TGQktn5~i6_hM)N8F8gH;khhkNTVlQe%`~rL)&8KP117& z@L1bESM;E>loC}JTkw4NUj@T^8bOAtjaQQbz3+GnnjA!LivT&d`Uhr8&Md&DOVQf! zV@O_b=5~u=4)5u;{rmqPdv6|3W&8GxMwF<|Ucu%=40YmU&v(=cVDkyWi(|e!smx`+cAH-MfE$R$c2nuj4$<=@`D>V;wA} zr4N7Vd9vByx3P^OOafk!qNtZ%R*xBHJCjScY7fNL`2?|bc&We7ZYeZM6)X4c*9UuX zgwfH9}?c>hK>DpnxwFo#%^3G-Km+ z8K_e^UiCvP%Kmo2<}_q?&X2X|<{W94AB56|6KcPwq75i!G=UQzNUELq{C&!361gK3 z;TZ4Ea(CE7LoV}ct7X@PFLk+x^44uav+E&a5F2NLOs$0j_&`5tPlX5e8=dl{3+I)4 zG?}eX8=Ds81tm&P?14qj<3Ir0*CI0C;IV5O4N(xiVA3q`L99}?&Hql@dl@Xn{k4XU z2!35BgJuz9EApsr(ZS{QXHWLg<)T2#N^?K_J_SJA&A*j=25&iPCGD_vl!I%-pcg(w zUwY26MwvM`o2$56boOO9BagQEVnHs75|dRqyKJ`facRPRE!euX_HLYg)5KY!Wg^%P zMm_J4dg*c@q9?T03h+K5mqug&(YFO|C?d{LGX%tgLerhpG7^zCpDqN!E%|!}N5Ctu z9-I<#i=^C6Kjo4Z_F<;*s>Ii#j0-a0*Z%gNS=L=NJ9CyJOgsPTQpH;44X01n_HJc- z;!PYR4HnqBlGBhJ%|joX`Bv~}7-R2X(|Sl$)aIaWd?#8M^>x+zc+>#437a4{!P=Y{ z_8Eef41QmglP$v6lP?Kc7NmD|gv!mbzJ56;uWsBT>}V{!TW`R* z=FXir?e=m#Fi&lMPBJ@`CHf9@SpEG?zZ7B;#B^|ZPJ zGC^!qE!~kljyPq{+m{x4P)(vx+tNEsiY}X3-EMe^+=Th9`}da7>25ZL*9>kAGV7wo z9j}Zu_Oje^_gqPmMV-$YJ^(*$DufyEg$2{NP0v{j&pOuGZ}dQc^U{RW1M(W<9_7PL z)GbllJI%sV*%2Hz5}&1%+kYc8ZNffo0{2$R$1({?J52Wfq2-U71DAccaQCLrjIP|>5ZXW z9__iUT!^PtGU1|G5JZ{&8w}bBI+pzni>&b)$_{w(Xpd`IpF?4Q3>D?t@dO(Y6heeK7LLQ*Sqk;^P_1+YF^8q0{V?GH#(;$Hi$)!F2{3lXf`ZtUt*9% zO;$Bv>RNGx2>cmo z@An=#30F$x-S9*r*H6@u%j7)@1{vF>*SDj=eVIAcwiqu{x;hmK29!ps>5=~J+V<2ec7UBkY6Y(5?DkCd}Ur}9#$TZ(k-lWR$ zT-LLJ<^cMavg$PA64&=+pVeQ0M3rQQ^B2d5Z{Dmr7r>{`Lk2j>vcQ}l0>Gk1OLI-O z<`txo#PRRBfI|Gg_&pygZ1XOSlSMDJ_mG_rJm%GkH{^V{v6460E5iMx!1iFFoT6o+ zIVw=*C{jlD*n?LyXUq)^klxUUT)}!zMd>@^oiftYI{AAjIg^AK5srk zF)#0I#cA@v3|oZmFJ@1FW{!Tx?YvFc_TykVG!L+!UbzAgQnB@y2z-0Y5os10rnodN zlj-^nV3EAl^^Z8fK;Xl{vi1)yf@xNdv03qlHlxkQ08!%OOWPGdJ=!a{kyryo3*uWK z{M+d$@2?l(cI`Mve3fHfH?cLcd97zZxre6eYVJiMuMEiJO{fDrR73)0X!-Oyt7a71 zUloFdjgSHyQ)UG~Vx`9!A7NG|iR+&tOsWtj=%AvVXY2us$bk>Sc|0W8^yiAcs;k$! z6CTn6Tf!U9wPw9me_}(+8I5{yYBgxf-DiU)dpE_d zA7rJ&s6+ksn&0h4M%NZ!Og{ojk%Jj1z`G$I01{{<`A6?M=EZmF^aYEgoWouA09e{^ z*aI!JEWfkPrs9r6iZJpX{rP9dyj;BM;+|aXK%GMax|p|~)dK^Gjq=Q{+;V7H6#-#a z2Zid;n9bWpKdx{HBRe4BP4h%^Zw~?szC(>n<$MyPGP&IQ1B+|=8y0uga5ot4!QpY3 zvN!g=ZW-o|L+DTAn+Ab!X%9jFC4*P$&`Y~o5c3cupHe`8f*HY5o+g+U3PFaEc9X!w zerV_g4vAD1g;?&5r_35haH(RjAt#Y>L8zU@myJguzsiSR$xnfBYhlzw>V9)KiF4Rx zAS39p4KLFnKze@Z2+FJ(g~rkD0Ct~_^-XuIAXKs0bN!>{;s###akUD*{^aVt&Kz@5 z2CEY=6piThKLBK4ZTdRk@tR=+!elxzq3V^Tk1EVasifV{ylQeKwmk;~G|7O&3XER* zQH&X8cX3FOp6`Ly!ciRRXtP`ahTfISV$d2r(!#HY^+^D+ z6>fQ-^!NXUj*35R{^;P(I{3bE|Llc7d*OfSUih#1Hdgr(;4B~2@B(o0?ibI~h__VI zLI)F+_8~yNjsOJ6xBDJ&IJ#4h4*lEYpghhGYmJ(ec<(8wvho3&LjA+4HAKE%oY6cj z|NHHL{||Bv#gj~#Yl=7ieo+#rmpz3{mA@K_KmUzTlWFju5o(0AGryjCEBkOVEp%nV zU#xCiLHOM7)Y*^>wbr=ut%S(QsPg{bUIO6QIM2@fGL76A=?b%8HIV6Hu~VjQq8CPp zg}q2|=W?$IyhvopV>IlOH#)o4XU^56eE(_b07~sUwDQ-T=QRe|F)gTt_Qiyf)i*Et zGWe2O_}w(h%<^LO7aQiutizZX6vdBRlOjM>wn2YJrDl2jqR%jmzJ2>WAaZnEKzHl_ zQ?_RIMlW+gW*T9E?qR}kZhF2O0BXR!K?eUk*|D!>5`|bAu?Jp&-&d1oMt#rfXX?4 z%>r>QBc~)GpTpf1@tqj^+ZTR&aXYKm!9(*Aqt2~V z6=wA=e49Nzq^5p3&NGVhZd&?34Qa!Fuo+$MkM=(VHZSCcUGrIw--e8N3X$eW@g-cV z?e5Th!nawsS)x0U+bzZHnqI%XQ5>Lz|K>$d9a;{`t!;ij`;h95xDZaq;5n4T;G2W@ zY4`hGA@1_x`N8x5XnzN44^XrLbo%IDbqd&yF)ERC54d6@_ot$Y_Pn&rNKj9Jx3%x0 z@G0=O6&v6Ccecxkm7d-*_MX_)Azdd< zqk!OFk_@o?qPXz<^7#0&svZOClEmm-9GsQf1#>Xaz8pD>+-{0}5X||T5T4??xJ*A; zXi32u@p$>s*1fFYI9AkBBmIlrG3Al*iWfUb(f#9`RTlb zPg!T;;4^<4HQ1`nEoF0N=v{TJuG+l+^)H!0Lk>qTd*(6gEBbjnKFG^Kmpb0y)M^0- zjyU{?(6W;GY4;!R;m2i4VToOl=m)g_U=Ei0A`j9CoSNHj0{HSKs<1CoXmB=aNmmcs6>3)iEN!I>eyzL*ytSZJb zzMnR27|mRvEnotUc@tQR|8KF9D3ZrDYIgF)J8GrJ(~awz&Ui|k0C$E3#C!XtU)uI2 zz@5`wswk$=1$?<}@~GeXz{>|!*UYfm5!yo8 zioO22P2$@@-x5fLm2$wfn%iKl#Qc2_?StUy$P%ibLL0pK+X<%MyVeAp&Vp(aJ?vpn z^2DJRJ@EIo;_;=RF%%>73IqCLUD1FzdVdWJA0l@>IUb7s`HmxOuF-qe*%vb6u(rR*<^h8cY$#< zNx|~`|C5@Cx2zJbhtUCITZ=d%4}@7^QyuMVlb@BqvEL2+~_}i>GG?Jkx2Vm z-q07ZoryoQPA;YgQ!??{*o2~v)-0v-Z!!*kWSzA88m`CuHdlCoH{-buJG?1wC%HV( z+zgFgJfGEP|D5x*0Wm1wsr8q&|ErqZe`ttzAYLp7y&zB~rb3jOF6^!z|7C~&N-}E-w#U=WWI)z3;fLv?>(mb<@tr!*3t_&1)QhyrGXDZ^x;PmY2e+Lm!RswFWJEd zf2i0&n~zpo#U&f4&c&d0fwYbBdnIgrXoKo*aY@rN`Tq89yufIv za753IpEGE=C}dr(U{Q8JKCTu>Moi05R_Pr)Ox3hhGSSbj^1U9Q+&}7A#jE22*Ic8h zz`k~aI0s_r6Uep3X|j1d%M@Zmhny@d>z zYqW1uh8KlWUq4K1ar6hfp|?qQO8(&xaKQ<|ZxmV{dXF8Jj7{E;ENWZ$7*}jMgr7tA zcfEq3g|gRWZ-mM`ENf^Ns>P|G{EtczN|wmXL$%n1UsLr& zD7t4c7x)jux_>`l_n`2OS^9a5_|5>@I)5p71+&2ye5R-W20<}{g61`-%49`jpk(|> z9JNf%3ksRrc8MJGzo&tws7cYswY(XR*q}d$UikygtDM3lZ0jlwLaqs$34GO3k2EMr@q-(}xIl9eFip5N~>F<#9Q2KsGdigTmO)< zU4Lx7a{Wcn_b(r{IQj#AH?<63%ddjaIiu5YK0S*&y(lQSZtRRc-G)A$!#Eu;HaX4k zP1<&B&evjNbm?PsG<9P+N#_DknwB~nk?w65P=f83QtW;R@vC1P@%Z>EwPU;YD2T+5 zVd4Da4;`Dh9`hK*v9DKtHTWf$9$9=gSx@s9>wh*P5~m%*CM~4%z#_=Dk|!k*BitZYQfxfl>O>{zl7+P z?r!5v&=ZmDTw%*)Vq3Lgq1Ix`*-r27QH|^0idjitGkXzB4Ba#m?3Mefvr6?CEy4NJ z7{3**5;<-US(BDXBD?@`U0=k_PNBjVcQLlarkBEw&0fR4Ocp^I-iJDoA8|t@aX)47 z=sG%b6jCVM^)D$!b`6S63O-qo)!-Jdp9sPti%T&X}tHEZ{7DPAgRU$%`mCTB@~XJ>2K zs3i+sj}&ufNcTA4YB_x=TCvAg|5_*>jxVqRBo#gPnBgIkE<4;v=&GGo zPd|q$TGj|b+Z|@)zknmdM%baDOGFtiU$Yt#DVTv_{5H)l#(w zv+4W#BsO$y<3%3ZQvZ7A{F?QRRh2niE)Q8&-M*dkDBofmQfxhnRF%HnHFje5fdEbE z1&6c(nSe7`I5O-H)vU{R{4Ts{urw-QT2a<0R^8Qpd>b5l@rpoT{Lr=K8&j~u1#d^= zTI+VMH>F~M=%L#SUY-nIGQNn_*-KOO)M6P*Nog06)^`0i(IUJxax8d0@}to-VxhgF zPn7tqhF;C=VRFesD4($r2?j!XR`J|Rf6VZ1hd;*IuCzB0hLn=+q#j4|w8r3i(c-CG zw@9kM%UL-jgUTxd}SqFl4l&iG+WSMd`b? zZL_MiqsK3x4tDJvab)OUu~E5EDUb zFOj2VFT)6yJ!3(+5XD-SQ{hdk$Q7!Ig&WIM2#Ok- za;MJhT1gbKA}hz?hsXws#yY8~(~mf3ak{ZcE`qrx()YSK1oOS&N>44AukEADVQW#i|RNIPw?~Wf^9MHn+CV!^4QOtZpM2nQORTxs<8a6 z=tVx?p(`r(Z1{=Nykm)^+cC$zByht#M72f^UG9&4`)I_<5UcY@>*8~0U5>s4t7fEV zx1VV(D{ePQgnt~FKazBVY8*-07;_v8j-!8zdOm-6cWz#dULHO1O4cwvYH+ucs@4A( zb`Xxo!M>}rV}E&rdpaUr7r87jt}Y}P5qo5@3R8?8G}`IIhdU%OdJ;q_o={VauF{r=Q~19Cu0es|Eh!rmu@&Qsh2J8#5UQf(h&G#1YXq!oDu zBUpHOByA{=R<~gn&9;_xDDbW1WFRcdci%j2WggV4xLqmh6|v83K{&MW;3G=*7JHjC zIFUx*RQj_|Hw-ev&|R9seD5u(oOx`kJx4j-OJ9GC z@ALMVhe|W&u-Wjc7totuo*b&>j`O*ew6ol!_4Mq;Mq{==HalAnB$tq*gJyX77a>dB z`P5^0D1~~eqw&ER)e`(UmT@F)q2k5r?K4tQGgq;l2_mG4QADqGT3)+R>5q6^^z^jG zW<)RL=4R9+4!g~tzIJ4Lr_xsLhmH_D-BGu;B6-c}u`v~~lFpBmB)9bH8=bx65ggFP zaT*c4a8)&3mn%f)yv|VZ*LV4jBSvZ^4`$H%N-eMKW3A|bNORyM?ugc(f|VEF zldRqDjy9;x8W}pLk&oN#k9hKQbm&8=q?Y##F zyOMkG19#M&JT9P0)|$4vV_^va$;W&VkEUW%L-9B`neSfJ178)y5psCQ1uTcy5^*be+JoE{F>qW4Vx z^>>xNBV9 zOdbfNMP9RN0sa|}NqAou0S9Ng0w)&O2zPL=Tln(WoGop^%o8ysmU4RBin{T9*cc<| zqtA~caTPd%k_`#zc!@w}JFqs7VSgeW^|s+y8&k`QfDgYpZ7dXsemGTw(B+}MgHGkR>fW|?z$&jWW{-jlF) zPD%4J?G#u@Mwq!)cA$L^Kei~Kql8GO1U0(K>Wr(eeZWmHhXXogOCkk|&zG@9Ncx=PHC<$NT? z7b#`1_;}XjyJT=8B0{ge;Q*tGJw_AQodjmRM7hx)fj1exH;qRht#}2}HP=T5#g|}Q zlzB38U|csntHPdvS(kMp=a#Mm8_Ibp4lLIHLI;gt^)VXN{5!&G8I!000PV@%XxyENeRs5<$E!ot+)>beeh?kWCVp2eqsRv(XSX<^^g}( zXW#do@gh2<*oS{VcZLc3BWSKo0?q_+4&3dB7n{q9x|ye7$gAG{XUF*?oNdz8!4-bh z^rY7)9%v%ZHggJ`b{w43_iC}AMt8vkX`eGj%U5CMsod|%H-ifx&-$7kX7_fRAMrOi zpc0dOo;O>xQ6|Up(_#DFQ;_s;pMj@Zn zN9c77Ec}xkjP|F1{X;}7dVap*^uK)uso}l&mq(j;1I`K2k;2W&ycEpn#;Ki$3kBJz zMef7h@wV-aI-Nm{3#b7u8DYE^ihW~D;`tY1l<3U;SJAC)$0QrH%-eh*CvkVZK`!6YU?) zhUB$cF-Tu@P3+3hxMIRaT`{e9p(|Z@+GF$5lIxhRK-t%?8o@i0)3Aw93gadMg>qV1 zv^EpWV6@1=yh!WVmMT^0Hhv;*0?H}Ztc=kT`(MUpu zO!Bv`t>pR1%3Eifi_o=asEmfbX&J2+H8}g3>`BoC*G+bZ!$S4;pEcCcc)ZCO_9hhS zn?t{srjBx?L3*r|bj$0C6ZdJ9GV}Kk7ri(|jD@33aXoJ2s}ZrlY}+#t#>WDz7E+Ty z!gEIwJ}0b|=TLR$rDVv(#l*mKq=4_kJZCj-Kp=JR0T zF!)aQ?y`>KpwzP=LCGL1dlk(uaqwNK#**-cJO$C{@F&Tz_2krzu5kqo=E`&K9O?D) zrY`QA>;rs zEL$$_T_*Ct>Lt)ZyKNxWi<5(!T^-&fb*^H_I}q0V{WjB=m>(f9Zb?JJ6XfZYhJ1Op zO~Q>xPNVxvP2Gi_0H*R4s{f(wYIY67h9eX9ZVJ(`hD4CQWR3V zk8+wjg!apejH_I@Ve4su+;=ohQiCHkPi$Vi$}YN=u(3Ac?b48Ri5-!@{Ir*%-Uu?BzE^fuyPc3 zUlAOwU+&seQM?h*i*Ur3xbODLQ5|2)pIukt)-fyvT&|4W?6|yCvR}iH`^PXGt&w8O zH(D~a##<4N=TY+9bsl&=u*&YLu>IGc$pJjQ8_2hP$mFiKV|VL??@2 zeAX8`w%R1Rh)g$v!*H9TrD;nsF!gz2$xeB6^loFAmStq2NS@EuJHM^^7hYEoaZXFa z8iJ1Vv^fu0icv?)DCOb#q?2Y&N!dy3RrD-4MA!Yq!&GUcD2j5)3KO27CV1XkwG4tC zdD0*yl6l`F5Zydw1s}1A(m~e7YAtej#2N?f6XBse(|uX@u6RGc!HDcci9ScbaKAQN?CqK^{e+ zC`K}K{&8&CUQg+p%=5;F>B*h?8p$Lcs43T3yOs^E=^6psbsOoX7pFcOJ&$#~&J-Z; zu@V&uV;A0ddYXoVZbvtZxfI42?ogxx3V)i#is=YV-LJ2sej;Zqa_FD&ppb6o+(Bon z;5~U$+uW{!GPV2e3L;NF@1DtBZ%JBhCTXj$;vdOxH7(qI-W7f&SU{rHVpxvyqRpLw zI=)3qghs*bsR}N2U5`zpd8%t9ixE|cJJ?uj^jIeOg10vN;c+pRk&Xeg>VmyA6^EZ( zkb?vYsOwGSta)n7k>{zX(Tc6+c9~s+NL^o5=g3$5RzugpQO}^D;Le2Ty};V`>V!1U zovFTV!~OpAzO3vjrX*N630FrScT11pW?J|nu8*(_lqXl&!fG({JRe4u>b4OJ^EK0# zQZx)Pf{?*R^jHflTD8luu9iL8rtq7t^X>NR&ya_zcAWt;S)snxEcy6S$#@33$E?+S zBeAO@5v{Lk;bJ$oo`?!}fRC)KPv$Ha^kgZH|Mgz@A=FRe17lCiDjx#Un z!%w+S>-N6T;5AYkcH16#zS^8`!juunmHxR^urzW58)L!zA$K2}Uy5~Y@zs9Gh5~s( z$;KiRg|^GhBvs)}$Fm}D4aD@+=*ggu%3Egl@UNT@dWY?5xD3`)xbWQY%v-A%fqV6wm8DP|SHpkY2I$5|pVr6n@u0HHd0@?gmsYpTh}%hS%F;XrsKJqH|ZrXdWypGcnLkrZe+UQ`skO{YIus)FlTVv znNrJ$g(5q>V3h&X&X@e&g#}~%-C}T+GJNL6EkTBr86jw8N$r|N)$L2@G<aDy|*%TZprJ}9QAQ)@Vgbl)Mk8nPZy(fd+URQmLI%7G*^SOA5y}@F|Jj~ z2?&js4@8rN7iEz8CwTdLYG!O$K!7LvZu|?N*DCzK^lJW_UNOg!6md>5#;;fARs8pf z#49ba(D+&(ai0dTq3&cdmu5=jd^%XYMe-y$!H2Od<3WW)?TCF|+2*Qw*lP`X?uEkl zxu9k%L(31NbZ8e8*3AqBx?tr_Y0Ezt%oyQhj!RQPXqx&e6^7oA^zcd<@!4csWBgz!16Hu42A*^TUb8V$0T+?H7qV_+tmXn+l?}PFr1!wp}^!dyQ5bP3!dC z-K1F2ajt3u74B=@$d2hK(HbmXX?rcUcC)zEy+K!K}0IU_#m^pIPl2 zew`;kY&U;+7MocrSe#aW(B!yx35mq#nffBNmYH^(>f(dyfE(C6UWFw?)SdYLl}+pqngjLQsrFhdwIy*ZjB`Ax+pMP54I8VcxJzX%RN=s+oss z8qM)Gnzt-$oo_5eX>)b@3%GhGD{|+f6?b;ittUor5x!A7d}Ks+wxwyT<;shIDb{n! zZz+Wfh3Aoa$>b~~R(^KH-B~KVwJCgs{;`8SJM&uniz`5d#k!fxL%lAX2P1ontRJog zz1b%m5=$@M7dctn8mGQ`Fce8OFVS`51aQ!Ojp!XIN_r#RrpnZG|ZxU-Nk0sU?dJlMlDg#dp&s)ydru8&opl-!l?ZC~+!E+Oz>a ziQ3Ihi;uYc%0=@}zJ&IShfM{X-aWHuGI?Xr_)x7)V(l%$-73QyGap(35*b%<$5su5 z8TjiYPh1^ipYYBp+@nwFm3Xj}9sztL9z$Tz&<{hG?dkFDr0hwa(uL>Z*|;*AeO&C* zd{S}MdwxS~W*5v{KhJN~f}^7w zOvjZeWjE%!a|@AH!!FFab~>a{DHhj8FVXC1uPg+B&5}s*c=D16+=DhK3+B28xyy>p zLWMk#v9bBf*jTRH-Z=RE3|Gvp3fs9Ywx*j}ebQ~M<6G`mBip|Fv#>_pNAak`&C-pc zp(|TrX1sdr@_pzWBkK31JFPhaH1v5CjUAUlG+AU9kxexy>%RKoT)m;%h6cujPZ93WImT8WhA1nqA%>`X^a8Jzs_!io7vB zWT@^MSKeDPM&%+-%Th=eR;gub3*|6hRUj>lsm~>ZQaDB8_t9x#O6@Z13GG#3Jz#44 z8+dz9Ojh_;g>?qHplHT>_u7Qy^Xj)9m})$L>r?1C?aQj{>AW$iZu9`9x4QB??!i8P zy3UE9i?omlFt~DOPKLqt@+aN=8wYR45#1^UNJMM_p>a|V;2T9?$g8>%luN9+F{t!` z#-aYKYv_&1iKMSPiNwe8Bgok-?eoL+`{pB1@oP!Gm4^dQFw zo}U>}6*e2-?A9)9YzB)os;KG6Xy#^*LYt#qdW0%BQ<2XtDr%-Q0&J}|(qE0mbylfy z>dI%jrtCd7SUkGBj(M$PJ7;ay-*0D1%qH`NHecMn$MyOx)n?$4%`Ji>yAfE$qQFt3 z8}I!{x(A}XgV^uL3VSkjn78CB6c~bHBUsELw{AErb!y0c`rKd)?^Oz!x|irCS8P$R z5vD;{fXWzLcm&_-`kQA2o2^-mq%1(1SYM8}15Tn(FkT%UqUC0ZRs?Abn+yq`O5?7ef zA`&GmUu@tXSZrgFi;8v8W(|kg`GT<1XPeWT)^*%y?Hik|oB}j3p5^4CLLH}_nf>4l zYoUCa5Y0r&t!1rhVe)WGZuZBE&Z_Jh!tk7eu}59i_j}SlREI6z=kI(@t-hH*!f8}! z5qx!O?~UCa_`&cjR9s-B@a?%pt+pIQzfD6GeaFGmvln22ahaTXQFHH0Y2N5Kp{1hY zdL=-`LP_U!ue!tx*T{lWXD|1inVU)}Rne%M2iALen(`juvMZ|=b$2J_R4KddOyp(@T?5bU?eYvJ0Q-?`8x+sj;%WXZ1n zwK`_GLE7X_ocZp9x@d{P8NUx571<-A#QD3@va_zruzuV0=Jd{meKThdf?59jIHTCM z&0&6Y!$$004SC|jwvP!sYQ>5*~!pFZ<|-&Z@R8%u*Q=1L6|Ba5SF5}08))s z1Vy@iQDRPB>x)C`a>SJuQ#Ob~^}?3YRHLAKtSY=W61;}&n_jAUT^}|ULo%*LSc?cR zO^h=wn8Cgn`3oec+RBX^bQGHSpG&^ZyWH)p_T^EZ<*mssZh1tubtc(O6b2J;x>)Z; zM5w%RlS;mfJA-@W3og#!^&0&g8TUQ2N%an7(-}2Xv)T;*ViNhTEm_w>#U`2TX2moU z`N1X%oiWx2PZo{{WG*-aR$~mUx`&cY9$6uuRp0e-X@%?o9<9uI&JFez-Hg?-+JQxw zUp^Ssed79}fe-ah)vDOlK}-YKHd*P~YmSP4Q$w_TfY80HdZX%rL! z8~s?5Zy$VhV9?Y?*Uot*GCX4~+Kyjv<-tddbhRXp$b?2|C3@q}R@;Z8D;nrK`A?G%vUe7S zVEVFNYWuS0W$hG3di9=>BfsB*x->jHtQU>QCaZz2!@QGus=-*uhCR^xK`Dsvi-U`yQCDb%B=e zdKQ*DO3RQ1xy-{;6BI=PRvS*~Mi1L=u8wiDYqms$-gj?wy{4YmKNz{XP3jDZXglp;~gd~vIF)yWWK2JCiqM`mp~)4wXAa4ItlDMcSj_Kdfj zYH7@n7ZGY8L?2#{Wt+V^<*wO3Lab(iikZ6R^))fuXw#vCJui;&oa2)F%b3Bbp^Rl) zW*)zx2NXNR0T7>uuZs#nezkqQ~ABQdRm9%yyWL&28RQedg`i(I-t_YZr{ z9N2T$DRud@sVhu6nPMagfqm2Y&e?hAX)%FOtpT@T!_%4`{|jqP`>#F|=1|`k{$Qk> zek^pUTqSZh&$ye?dCJdZ!Z!u>)+iuM!}n@l!c4tEaK5gnwHmdN>uh-^Y;+1^-RykJ z#c9rf%&wVlp-`^_GnAKcFfdrW?B_a}{edvg-#K{bFtu!Th=o~=BwC}~Vbj-SdO`j2 z!K~Xoq36`jsWDFm{6MIy>LxsI}9-+gF&VD~q$pD&NWu&v;MO9M^!PAAjV$~vz?1+D_flY?%$P^0<$>oe^et<=(Z~!D2?bzH4g!b zfDh4!3+37h!*LPS#kS?b?=pO}Ja>BIFq|IyHocB&wONIM=LoUsNDGVbiSTlck=VTm zk?tiH7cT&5&hA;Ve>+u7hOPhaW}rb9!%2o&63WzC{Hsju(RV>=>^f>lO!|7i59I}r zrF?yt*UOCbp?*(4A<6l+;ZENnJ%KsjHZK3UDO=j61{(yBj3dGdR<$eU4#M;#{{dt)~On0~1a= zCP zf}M9%3oP)hW!*}BwN$%(#&qnWWAw^Ak^e9e-fIA@AfgY*q4PF%{7iP$nbw^ z4$vwG0X|u-2#|#Ej-)`k)NDJ*zHubN3j$3>C!W5eeT4)QJz{tfipac`1dZtRHW#lp zqbk0HPgDn@-*D_Xo~s3@g_!eLZ9omqw`D)$Jpqy}lyjOukVbq6+i=2dI{gcQ6RK=Mh*b-;@U?>QDC5e{LOh(UI0smb$SricH(g?w2FdM)!4 z3-AX8^S?C;Cg)S95QduKqh6J@yWzEunn`9n^e-sAUY)Y&E4rD?cF}r6kYQE&kUYff z84FGc6rf2Z8$FP*H1qu*fn`{E`ttIvZbWUT!o;TuzY#23cZt%EM0Tz_Q>S`%+(|@jZn=YFfKD=4{0@$q zn}EWI?#^!VNUZ@$qo(`<>6^^Xdr$_U9H0YTl$$XCG3Qr*9!S*;KyO-f0fnBvkV~A6R!)Pz~#V!>W&^X z)C*{nHVbLqR*lxg4k!}0_yM#YPV>1Ha*ORX!pw@whP+CewhvqE@St3{bYaBs+Alcd z$rtv}?hnb7y_L4}fn|kt^V%q^~FOi^xM|(elsZQ?kS@ha(WK_|sBZ z+ViI4UbF-(`)-90rdX09C9ELA-tpC*EE0X2d8`KpN<`KU~uXk`NPsXj{Wk z&J`M0m!<>6snt8Ac!nf*Kpt3rGpmsIaQFvGlMdWRSVY@XbqYqUuAK*ScYk0$v1TZB zpbLSho(`aWi`WUL(2u9H`bM}t0?5|4p44Wc4q`5ODV+lFV~rXF05<#8f0=@-e^gQp z8bk`zAe4-}*Jxketdwiaa{rcSF;sLpr|t;WjQtF33R+l)3wbfSC z%6#D?(*XlaSZ!n;EfEfcm%hwBu#ECBXcnH&H&5^u4mt2sqUTf#9`jB>@I1oIA^;a+}smp{? zZL$1JEwnF9`|4=9Z>W!Lp>*GZbQqAI-8e~&w)1uh)VVb1TtI)-=-Lzv)_2Q6sn+^& zXU+B*E326c*hxeHPcIWAyy5HT2hS?)X3PED<9a8S)iK{+n>Wq+G61)-O2rAB#5Tj> zvlyaR8&b9kz{=uV zP5qs5khtT@vDNnJ-dT}bl~=H&eSuke^4@YE9m7hKRAPbj{(B7^qQ0vfylgq}GXSV9 zNPDzkOQ4QaJR;%8LxV=0o&n;+MNW_7p=SlX#bO7X%ELrkGTMzM1Pz{f%#V7krb)7lnXTerKv1_$9m%EehF z9z9^9L5yu09k8|re_$ry@Q`&<1%G~!HE#MMvT>xvj^OP_4gUJG4p6xr;8X+wKX3^A z_D2Pnc1p3jPyd5Qe_H)rTYt3iM;m{3%CE!Y&$;pU?eIq%f3)%EhW&Lo{2z2zR-Svn zsWGN_#PYpCl8V+X;q7SVuzwBk+L&jW>3DsLy~0U+TH<1D4TO5K+WO zj^Fud4OUu%XC5Y=Yga~dz}SMlOsOGiFc4v#@#?W3-+GY^B6N7y;@Ur41`jBm8DwyX zu4@Bw%vZ;YP?X^4h1);MKL%s*9kjXnLn7KyBp4EkyK;y4+XKKnsjK7(K8F1s=#p%g^xRLm zCBY*#pAdzaFGS$MOJNdv00#qQH_{&q1wk;1qZeYJAvvA6A%;y2Y5sh~6v(=-0}&+R zB(Q(1elI-m$p7)`DG^HWAmO!1g5)u;Dlir@tGd@emz5_PJj1jeo0hIL0Mb$)?-U07 zR$U;%jPjjhKfXnz2Obg2i@uk>1u>9T<=#So6fn-J#T#HXd{@CYEifeXg;5ON6R={^ zxxS6&ILY+a3uVv@ISoEEwQG%(GJ4;&SnOVr@O10jL*%%9sR-e%t^8T-v&9}urqga_ zF;!s--yoO#dxwu9!Vwc}!1K@eA_QvI187&5r07zvpL+aSdMeKmV zMQ2jSB;&&erD_NJqxQwltH+h{Zl7^}G^Qx3eei9&DKnU?4r!}m`gw3)PR-n7Hl`hl=KTF9eWU`R(~@psT_hyh3z>FS$|l}||D zjT;ZM9mB2ZUM#xko!tK#fL2^CLLs^DTZ9>G5g5ER$a5O30^w`P*^|UJiufGVzSBh- zNCNSjHV#5;b@4#d_hY|ArF{&(iyeMW(8seB`zD(Oz39V1G}U^4W7g!m!`4?9*qdMX zQm};}3Wu~QsU5RpTzfv+&hD5rkVp5*U`GdhQvOS|S_LvnOx6?ySSdYhSL`CQPo5c9|G$ zQUw@(S#@Id|4b+Jwg=Ktjzl@!)DHG={ zY*%wS(q`}G9*(%)VNqLA`h|K-6y7W9QdAQfD4`nW=F<>2RxB6+AlMPh z?psW|E`fF9xsPY@nfa4F?>9Ry+Kg~#YNx3o=whwUzh2qBv73E-a%z>jW2XKV6PdD{ z80P*z1YPx=5ML-3yAtEA0R1h$rROwhyq)IQLSAjqT1f<3WDoB&wMVge*37v>a zZ%R!F5T!#X(n3vgCR~@-``q_)&Ut_D^Yy*Ih~NvV9b5edQoZY)8%o9cph^+TGU6J@!Zr|+s!Zs|da?`FxhJOZ><-{A z6(#Sp<>4GTK@Oj>_zUdKHLhR3+T?>uDzLEhraPf9mjF<}RgBJKv6pkX9Eg zDEulqg&)R}(Ngk{Za`CY!^X_Qk*7i@gTCm40^ciYu2Y>l;i~fQV+ya@5PQm(MTNU! z@^_9^FdWT3a(%-*BkR|%!+MXq0mTb0$Q1d*^OGRgQW3Gyd#$~ zT+o%badQk%m&&+&iaDZoSimviML4!o<-;wxqUcf2vGm*KI@UJ{<;`w0pU7=2cec%v zi8s4S;*y8df=m$VS!)67b1HLM0q$;B68Q5*eVx3sXhP*Q`cm7Juoa6_c^%#P5sb|6 zB6fJBFPC@w{3?G7mu*EQL4#!iQjz2hTOD`W;WH>qxNq><1pk0I>>qa-S>3>T&FEsv zZm9Cvi(T^dg$2?y8c%_(*i?|;2j$Mq&aF$wXnw;?BIWdxWI9i@G?$n#R{Co18 z&z^Zk!IwOLcbP)JB7zsvXMFBqVLORY+E|)aHyKdsA}192C{T+Y{&<$H!tHIK*GZZ8Ib%Z z)GNPqp^CgKb&47%Y(`8^81E(y$V`u#5Fxn3oBb1qH)~XOO!_1iWj?8)eMWC;@TzUY zOSk)}9G<{zOF;8Sze`zvW+M5hU?3+SmnwW|$D?g)DYySzXGV-^Vb%4;3_on4cv;@; z@WBk*@%nHn>19bgGBT{*<-LQbz0vL_8kKTvcI={2=Y!C`z0G2F=?)JLVU47aeqwKv zmP%#6EXKep%iYhl+poIH9dRQtVGQ!3H@f5`Hdm zCGzTL?1V}ve!=U`P=}z2flEsa!OIerb~vlJiKKVKsB_n_X9i#A`|V)*S>WFn^9ONQ zH-ZA&L}jKF(PnR24`b|_Q~t&|x?|#ogK6(~DK?r@%x{`(9qWSk@&jbBx^4VcRC3A& zKhnqcBXwk)%kRKRmFpbRV>?EL{_3txviBaLR#Od(m6&(Ik%IN!_Cs_WMU|WoF~PTF zQOh^|xQQYbiQE)u&A5N{@Aig4Yb!fd2&{TERqAygi}=Q7KHrJ48+Xt5l2c#ucd{YVna$YJwzneQx(e8IkWE+;e_y|+ zq3*Tb6RF)!oyo!*BwL&_*{4#6e^ej2eM@N0gtw<|JyGwCdZkqx=Nta(o{I`94O{b2 zsrm0aZdipxK7-PqCB z$yFEOTv=9}wD*Kyt_VFf;)vW}*Y?n8>JQ_Gbm!2GZ6H{Ev-*gtCiVZiB@;thmQGEV z9nKf=kgQxCE+l`SJ4&-dH-0058Fy83aG6__F;wDOAQG0Zptdk=J1|`$R5n!xZvf$! zRDUJoiba={oQW$lt(aRwSMW^HLWe24i(dKMt}};p`amMC3rJ+^IK$Zu1BFye@%In5 zoS3s_(JysYAg_mP%#L5uY_O1PkRmOWc%z*N>3pdb41OA;odLwPL`nd$am8)tZOi3a zN8!)!*f6Gri;uMiZ#L{r%Q*Dqrq%5Ye<^ph5uB}Bv46_(tQ==t#9{dFC zrTS+HPsP@QLyYyVa!Zp;r#wwGdXiieKn!HWoFz&e9`0dH-ax%BU#dJXF|>TlMqYsm z2y|4X=N$T0+uf;vGtvR>XHjFRmnW=mR7-C}SIl4Fh4#zoI}XSzOW@pubM>ud-s(M| z7~p=E{t%_zV|fEN5hPFyAx?)Vy9Hu1_c;j#b)|05^G%%*`Gl9 zX+=R?cZ~-D8Kd+Tej{1J_FX)S_BL$$Y`Pk5+O^`AH7^t|>madqHIJW{SHd?bSE=ZU zzpDQQ5%DnX8Z4v#wCndDhYDj7#Tk+=0TYr%2O|Nl%k)lcL<+9WBf_IWPVl3j)SJjUV@Yz<7(rVs9sjjT-2(RFIh% z!XNVy4-h?z(pP&=y23l%z46F*)`RGBslrPEC$N=A@%WPqU{?aNq<3kuTQ|PWgm)x{ zFKIgaHGG>I-{G+78(Nkc`J#txw?lxS;Sg@yU0z#o+Y|+f^FqA{ z!?}R5RJ%?7#UFF|+uC$%R$JfVm@|oJjYVXW->F7ANK)(3mJ32qc!kpN$1HLEer?9uf7sp6ajA z8-@1m#KR_#0Vijl1PD9Lk*9*iOO-{FwO)L!nu2Mlv`1NQ%JcAMXQkz20wFWY7!}i% ziE_oL+~O%u-?zzerHT`i(t=_deV!EA?O&PZE9`POqU_}w-LgBpc(>mw@R>tKT;)WQvtoX`Tis#!9F$nDA}a?@&ACxN8B zUA^UgJs?D~A44-CdBF%`x2G=vBN?^%{V?kvo{MPE_6(3|BTGOmUQV^s$ar=$irBl>ncpeuGJe@D6|7)=9^lkqsTg2#vBe8(+Dz)?F|f zb{+zS;jj9gUq5$Hi3S}YY0zN!I3?cxJ!J&M`-GWNUMX94cw2TnJ-e!LZMX7z%}N*& zwwNGqC#Z%A7Z-+ddET+VzbxbC2C>EEM0mlRF~wRt;Z>s|lDN^zWA9aa6a>A``zDof zCSB&^^u0UilHJg%fa{pmS(`*9)njr2;AeGVR0UzsNU%yRolrN=&b)kr`_z?JsMEoqa%OE0Iu2CcLv4tX+W$7=h@ z3I@%x60x(}{+0Q48=goa_(xzFUbxiOH#|-d+qUO(+IZgwS5lK5t{ifa>1djfC>ztU zm7vaUA*S8a)PH55(#>}HVw;z1*7Wzqs^IG8db1L$ipQ={Ft=ySDZUyfMgZg0q|chO zzoWu{Jq9pfCrckb11`^a%|ZmnD4573hrO5~ zd^BUxyr8*%nM#<{xW#tQtBcz3aMSlQ6|5GWDuqz^Ld=TN~)r8?#nW5pWMc-6?_?gS$U$ZX1vo6XYt3fBUKmvH8& zf)r!sN}T9Sn|{2qTpIs5lJCNSd`z^9=#6)&Ptz*qJ7Ix^t16IA8+Xx}?de+a-jX48 z5$EY^ggXCP6QP$rPolvVp10N^yzk7X&fqiz%0-~WaB5j@8#Xo6i^3^-&kfKGuFRS3 znX5>yHAs{N_xM3Gv2HBWc3u8DLImm0K2LH!yk0)EZX>F(_e*6 z8DK=hmJxdiCcV|2#uc^_I+<)wO%G!OYMrAxr=h=^)#}XejRj~1#@XfweySQZEBtbI zemhKI=V5jAp0rfyEfRy$Mdq)IUJ5)@)_l+#@#8--BT18A^wlqzhZ8yC3ZI$_)s+@i zICj9YkJ#$ZEmZ89=NEUP5r1!wR!@CXYm)R$p01Mf!eIqO5?LM*Y2uCK`YR|`ovuV; zyWy^hY8QSOphoQo46f0`i%~u3=#Zj0;i7JHtBnl*q%!2~2$Hl2T``@izVb}KrT0U) z%t%S)+7M$tcU$2DS-u8(4Q=gH5sNd#81HEx{#sPMi3ip@h5?=ZU23kOWh%&W0_jAE zo(O;M3x~v+dJSL1npRG<4>dNR4FVxcMZs+sPrBHpAtO8}V@~?0Xlg zv3Ht_k`l?4Q#O0Xfk-djwuzN^fG}6vJ?3oldS_?{@9P6RU~F^^rZ@Bl{hpvV)(lOu z$;g+;-G$G<``$KalT_`N6DgavqX4m0>so3SWj*&yq(*f z)&XF*e0e!w%VD+mX6}zuy;Z*~O9x`1y1|VLHfCZ7)0PmyGoh<&LD|aIV{rriKQWo1 z`~iEwBOnEwB25LnqT$NJXsI6A)kh3cb7sfj;eB=Pj>DaCNS?R+uM+gslZNv6*I3aI z;m(A(YeI=UW2V;az49t^uc0-B);bx&heO233a25Xp@cbvm1<=#WCP0AwfogrLh48R zgjAPCBx!yzQZuo%a7&cQ)?GwOB3#u|kUd2_u<%UJq0)GcKNM3+m@k)Lit_<4>$kf2}d{u;yeH#n)_pp6D?QPfmd7 zSax&)Zsc5ud&YmeuH;d*?A|wb5%>z!ssY&pvx^Be+U}psw9aap<7++cL8$U+OuGNW z%-cWGwrmo)N%e#xiQ#gqC!H$vs5?BWQ#4OE_x(y8@#c(Lt!kJ|-t&##RT-{$M}JUN z5o$MneUXF@gisx(-8I9Vnv%6GBXp`!`3dh@j1cf^tZBa4EUGn|ui3bDu8Rc$kBtFv zVoMr5RPn!98+Cbl-}x!^$N4D>JRyScFM>*KX>)A{XHand!;NCqnrL(!$rxxZnMQ5;y^ykhG&Pbk^*e^LuPM>xV#ft1A>VsbaS=3|(?n4f%a5}XQZ z$jf8BH{a!oT49IYFlqoWi|Si`>>tNMp0%zY&GeJ`*1of7Tlqu_;10(5^0b?OuB#fW zgTrQ#6x8ulurJ%7@syx__l%V)3fIk`8Z+kgG&`55P2KyQ2y}_RLC-DgUo5{rQTHfMh2Iv)c}Y_Qm=sQ1u52sA6RF9xPJ*x-6ajU2)QS@W zbmi^{LdNO2HqDpYiaF1sPFTNlO{wO~8=(QN#LyAfo{Z9_X>lYgHYu(!Y4M#-SQL=( zl?`3*nGRn1IqBulpuM-$WpK@8*Vnb{m8zl_{2wewYUzR9c{D)In@O3CX1tjYzdcpB z$HQIsj;5!6HAt+wc-%_>Rxvd#;$WjtU987Ec~Y6-=C)~~Fe};@EW{zQnThDH)89v- z)Rz81U8J@bH_IdN)5dB#&iAhH@h`E!Nfrl;l1MLwJ>B{KG2_J45oKv}*XI{}zg;{X z(sc6nvoB|d6dP$YrtvS>XB6>tRbH!dbg7%ulYQO0|aIGg+nj>41X5& zHo<&}JQ-95qL)u;llO$WB+mzIP79tbB-K~heYx_XwvviK`44a)KWwgB_=l42=eBR1 z!kcf*F1!M0qG5F4MUN3on#^jgqK=u9g zac&rZ$hih6n>*1AEDKeZcIr28A5Aas8WBfR=qE6vSaOHl zM>Xoi9JzTGgx;;fyt+#-Ne;SPrLSb-TZ2FL)%>FmcB%ScM%ZAP4PE`}3kgKxesy!z z-{(eB8RN@YR%)^SPY{cabBrW{-Shv7g-L}@{lhc> zHuJ|fW(iO#V+Km3KIeS;bXg515ko=){lDNL?z8rvfnUFIUu=a+@aL>Qo27sA3*^1*L@TY(ku93xKXr6<53~Kt z6$nf;wKP&Iciu|Hd#4*vLllyOHAM&irSR%s){I)`DRo&(u!;FeS5@G1G$CY2 z#R-bScKT2H3!JT?75mj%dj!q#b7*pvlZ+rJ)q4j3rK$CH4A8%zEsrpZ#vKGx5s~&8 z7iH_HX7gitVDhXmqsbZ6YKJO@Xh+`Qvwmle7^z5!Ss`fN0}0rmC8tjePzBOn{*xui z+e_Qa#}Y&rg`~){ckZNwH(D=8mqvOS-uRQ0kRHZ&HKhfBAU-Tq+5y#JzfOTP9F4P) zaaKGE-;`X4d7q~YEJJ)h^_qnET^9;s*(On3D$nr#N<(J5DRx+9d0Egadfl-!r zDzv^>AjE0l%ES=*!c95%hsy(O0Gnc#9MFkgO7a=7!ZgD_FhD!-+Yg5~&Rv7oRm&!D zF+j~s^M1i4KfOdom#TGU^-qJO^$!m|lMSqe<+lV?NTXpwUTb(maik0TbBj(n118YeJ zlPq8_o|wY3wCxen>XB73o&#qmhA1PKeNOIwfHHK1iuBz&@Ul469M1rq7Je5Jixxa| zPd%D1Ey=lhsT$WUQZ=L}vKy)-vQ2J5A~K3&2=7CddR|InR1!}8GZnlMgrepqKSd&N z4a-GS40x!`0*83oOB1;x^Yzjbk_OXt6sd_J-wCUplc*H})Y55VQ$Zz3gJd(^;SN~? z=?1#ZqZpm}WdqGZj_bzM#1}#!@~#^-qvTJf%2Zj5d50V&<)Wxr{G}pc6JDrub+wr6 zf`!y(fzDL#TF-k3fM2cSRZHuVl#pMYT(dI!p6G188yLOxacgo-cnbI*qu6?SN*Me+ z9N`dzLV9{~--51#>&{V@Zs>xNLzp=_;N_oviTOjH=#crg!?P>KceH^4_BfK}f78~^hL#Ow9giLg9t!B=gA zS7PgH@2T7$J(b25=dv3%lXmgzu4j~~*I3C2@34^980FJ3b_H?gdZdg;{p1DFU5!Jv zPtr^XF$>1k+DdGX*D}kUGk-zT3OOL(TypngYV5vQ5xHRK;kyQx_7y~R$IHih<6kw}(d!DOO&TDas@&aP z`g}a3K)Rf^oRA~&zV_ZmoT+EtSz#go+l`X{>Jsx{v-=Gtsr!YakCng9rh1aZ+aO)x zx|+)u*XO-F?z4^5y0;stoAnDu<#z|*e8WxEljPRE++IVM^lV+MpPcXL)?_=+i`Ems z3U148_{85F_mRqTL7F7CZ8RJ!FzqY31T@-7*2g=@l9XqHX^m&CuOgZsCe$3+#Q)x- zNvGJsLoo5x`}DIz3wZYx zOXI&{UD8}|QfsVjG5&Co#x|E)-8k&#yGWn=7ZM-)3?8_L_+Z)gnKP~Krz2xFl61eg=i4d{v~TUKF#d=jxL+)oyu3-T0NVg zUizw=2QzF|pn_eVHKEbYUfvFJI7|1*uYKlY|ZNT%wN+c1za1;{l1@$ zp4-SsC;TMTw5HZx*+Eni53`BS1+e+IJSj8H&t|fjpY4qn9W@b8ewlL4Q0B9h4#=eA z4t<7$haz7Kp4u)^v)NmQw!gY06vMT~2I!{T{BSHZz0~6@I4AYh-mVl$vesiYzWO_b zzMc0rrHgkG-!q5CBInR=@1^^mxiNbyAxPD0Y^3KEcbk)tgJOng`4VX}DmyU&H6VF< zgUu&@#Aox89W=!@%gNnHp^bH-l{}hdFhk_G7x7;km7W{1uR0pF9_8SvmF@E3c}({k zg80*9?6m>4YXq{ekfFe0ZCtwn-Y@Os-ess-Ll)X7Utm;PZwIn!EBCsYYr=QCq|I%- zgwiR!mS<+XX=A{2P#D(7V>{ZgwF9mGw5yna{>|h*jGfO4*A6@X*kib&`@MZhwR6q_ zx?KcrxrnLe3?c0&u)49np)=uevtD>~xN?Uu7PTC1-l(4*p1x4dylF0@@&gw{W+$Pa zFPM0&|9uJdBUKJgoi>-1DHccdda$7BZFjDIq`x?jzZg*}AUP_bzB4NJWA7RcRr9^R z`*&|o1ffRRAzb5VOF8{@dodZU?01~pG6s|xE%YSAY(|8=$AYt+a>~HRk`XzSZk|h8 z05VUP?>DK2OFcr=p6tXMpXAZ=XzhqqO*p;yP;^)<#eV~N!QT)v_jt*{?Pr5;h|pPu zxrT(&$893~g3LN`lL;Dw)-J>4*n*j?fF19j#B^R*uzy`%9B0pbA~LjeK=n|4ND=3w zv&}=S=VaYxj^siKpWmT>#1)Yhhdpb||`_sB7v1Mz0 z!UhLx9K^8us)P#;+wQ5aOiAJsB=0q>4<}8pH1jR9&pc(yk&G*f?UPx*E?Qj5q*za` zh?yJsU^ductbvl~buT|&9(734-=wT5a8y11sTM9)#PzN@^AWq90?M5I+U$5|j@jc; zjp|`{>u$Y>{R!@&8zj7PI>mNI#x0$xplsAVLq4d~UFk6x!I?JaS@bCiduzAe{XdsV zgNUOjve|u=!*+A>gSU+GirZ_<*=C3C1DXhftbDV~g0( zs1FpoxNHjV`I2V+-VCR<#(S$*Vju->>@djFJs0L=o1Ix{-IpyIZ-u|4A`5fFrZUOc z+CFnAY^=@*u!Or&u}wl<#kiaisj+3XyVmLS*sFNIg2@_RqaroYucZl>hXlRrg=%>R z7e~sYlH3Xa@Y|nBV20IS<_R@1zD#ReVtrktb;oZjaiY8L;OGp)aH zbV_E$)sQzxu< zit35iqLH&`qVapOYB5W@1!1a%x8rRKXTpjAd7~2F#mxQl1#piaO{Dw8WolMNOg&!W zpi9$dX+^)_dk3DkGTz)nVe~=2V$c>HMK_{T7?XC3II{L!?ocY0*@G0`&7q07{Bx*G z$}rq^N4Qb{>Pv`BNHP>3Y?w26a5b&=UVG!={$j*NNGkze7-7fyL=?VVwyS?PMct!? zB%0NnTKizP45|V&)a24@t~ibQpu|#-gS-40hg-V`^0SbtZdc>>u6{JwSe3>kZnj%F zcm_zio2j!8M(x5mtj3<4Bc3=!D6TxY0pbbQ88M)@TK}cDPO<-Qy+wxfI9#b@B3#0e z@>PcOw@d8JqRV79ZYZEXIjbhz{8+T-gmYdnC-JNfNa8!13{FJPn44PBB;H>-7wMXf z;bNCiPD`(BM|vq(wZEnb@K^JA34v|-f z**nzhxl*K6hRb2^f9!=6p<}}2f?CtqCEJAt^4mh|Ws+J%NPE|di8@K8;B<`$T9_Yn zLEt+Nrro@FYUo^hw?{W=C`_A-N~cJdF@5D~UN^UQ)^COOAyO)YsN5Od7)!6a6B;Pr zYoM*IT^N?;zfxi1wiqgc_{Glu@?!0%BG=IilG_*Os2cVPu4{5i3I5=<6a8Cy*+Dkd z!LTPAwlf`{dh@f!2cbCy&BAChuYb^}K-5yoDT=pS@zg%sNH`B)1F}Ja@NzDP99dyI zTy;yE@Y!D{mCziTWYcMSBA#wzgSr2jF#VvXFD;Jh;d)EM)&S|||9?iJVg8HCUtF##SkaSO+xF?8K@!_7s7tj{UFx#`)>|Vep*qf7lH%Dt zr#@AvMarBf;-qSKC}Yyz{skSvvZ_Iwivlu>hT;LT0OsPUeZ>>5>ndl_6}@}Alh7U2 z98aYBZ{j!iqSl1CbumhzWab0OjTldRaZN*W)$o-Sd-L{ZNqlWz%Vv1{HyVzS@rlXQq@v2aIqxm;pmw`vl4R0Da)1WK!$p;%E|x)&MhDdmza$e( z-jkh*D6zCRez*502g+aVtH|d}+kJoZ?i2lp?saUo+ZCf4SWI29#oKK!(yZe8Qpq9r zfbuSBX4UX~xM+Vx*>Sl?2yF2$%^zt_)g|FVVnylD7-xYb#EvCNv$wkENW#kG+KRK) z26+gjH%SQ~E1kV&WEYmf<$tDV<>>v66af25mKkNIcSpu?;vVn~Etb(iYq|uB&{qsh zBu&;M+c7ymT<@#A^m!eUTGai>cRDa|8ez?4`ltcefJZN8t(hAw5q~x>bcfahp0A>N z4@e~TJ-ChjMuXL{sl{^wI>Num>?6x3cZ%G7fkN=3>kFVT-KBU0q->QOCJj}KkR*Rx z8>O;;S4B*b`Mj{4w2^+@X8L;V9P#O!7!x{wwUz0E1|4R#%j0|Pnk6lzUPH=rpJXO; zy^FHtQoE(+`zl_p&-a=M805tlr*zxQdrwro+a(;A7Ik{O++9k1z2WBbn$s?&NX_Zh zl(8^h%7{yG77m*m=aO?Vo!%=&2$n)zQPVts{p&3-)zJ6};7LtCY6v)9bzdUgKlSq5 zovd1NHHCgH={cFuJ=zvu9YNjm)zq4;RrBA+a1d1MZ>F=djl5H${M zaUXEz2*s*-Cr_K(Zy(MnbxuKcU0lrBjwE1R+cP6}hZ>aOU zUigUA?fF6J>$aNRS!No;eGkAO=g%95;LZ3c-d3sCjEIHa9hm|B%Jv1~PEQJw1601g zgTHyQncsmmJ64e5T_O&wl48f;PN7pq#NAjC@*CBu7QeUGt@Hc8XD3y2xc3n6mv5MH z^`8?M5dT7wG?(LBbDcvkjikIwDBF18#8m36O7R#n3#B)>RE=im}rqp1#?N+yI_mv9A=**jSjDNN1v z-&I08Gu{N!_iS@VXdZOw-0q(Ok$`8RTO&KWu20B^Ry3#1i+@?WSwSH zFT(%D@lWSoAfNr@2e2#*z~adfYM~w$H^O+m*b~kgC|6CnmmV`R6iFtG2{C|5kc{st zO9W+#2lcn3sE^-O`cEBvO*0bD@uEZukn(5LfkRIFU)Y5!{+4G^rEE|?K8rrsxT|}O zG{iUiEchaZ;Yh00sn(nWlGA?kZXo8R__-du_MhSXXZHTXoc~#S{}C-8PnD z0A)*FGzc;=#&3Omt|SHh$)kEf8%c&+lrA(?;rjYnM9YcO}80sgQAHR(x)x#|Bw&wcXBqeQ$P<{MNG z|0?Zq)p?oEf92A%XU@+xSv}t42O+yoyQiy*_4&M8|37zpM;@ys(Yjf3esSngHmu&6 z$y`v`5|CBR;%iS@E5h7mw?_l2x?#*=gDlG^rrIgb6dP#4WU5MFCfq1YgZQG}Ids5- zUFdPrkoocll?)2~l{CCt*#`bJgk0Yyl3#Gwm_R8);R8$Ek(}E|miqu>VR?)05$(0xTFFqXjszf+r3y0wmfDE87mrnnEGUYx~6z#T&2G6EL@wjTBf ze0dJumU%857t^k3F6(r>6?d}UeM*^11$inJ?uf@*11dDjwQA3yZ_WEcB}hZio~su^ z$?Sppr3Uw9NRphOo7Zww-gds_@EMXO*}SgDVFceILA$KaxfFcW8q98trDQ3yyZ6D?R%9+hFf*w#>oGX+5cnaBs1%0G zFRxTlb_g7(-dVJz(<%E6us2>4CtBooc780?_om70)w~_hz&W&cMi=fm^-t&s_!H?Q;@XGkpo97h=jXI) z@vK&fkMz<_c}aiDhv|7&&bB?YrscW%0gl*OB0X3M9H++>?IwgB0k9ubJ z86ZgVABib!;vbbq;VUvJJCLP9*_|Sp%G>x5GJELR?kr07F_c=>#*k#liEp68TDrL9 z+gQt@G8=-k)7?9-jd@Pqc+RAN;86&WR~;m6HcloA$A~!es3G5oUmZ{a_Utu4nJ>Ol zk10%W+^a0Rb$oI8-EE)mh_5&a%Um{+50j%dC7c}qZc=r9OI zl`H8w0)eWj`UCN`@2pntQIe!AB*uy2aR%0OsBqWj{~Sjh z9Orq*7mAl@$tNS1J5(mEvDZ3O1zK-oRi+2$xt%U)`3meKbo@;C>Di$}{QXzf+ zh8X$heKFmv1r;H0obY3RR)*i~haIlYaxM{QLd8 z+RrQm-*?^1+K;yUTQ`rOs_6gi*8U|AzhW^_!A{Xrr5ulKp%gN{eSBm}5QbpJjbV4B4LH#Ft`&ouo-%KuE$-#qi5)%4fu{m*Lp zTZ;Tg==~*R|D&7!(jWi-)J<1;o=Z7H<5+&ox#a=ns;EKJW#4U=9390i^N+2v&1&&E z7GbTT$Snpmak>M80Kg|cbrRSNikGyM{x%n``T)D=BbxTWRbKEPD@W&UmV>lzEZms( zztah*&pqE`JPDh^$DclVB=ng$MmiV&?0bJmFjc8ro_gx=t@x?l5!9DnfqrmO#9!R0 zEDSXKz;ne@M^D07w5;7hCx5Cuv*=)9m!U?=_U(b^;5WK^nvF-cz{68$09yAf?Y}|38>t`=;54H{f>grxGbWQ0;I9JRBUFLj8_*27|$$T!8(4eg@CcWaL=T?y+)X zR`JQF0SKBg82k@MVaI&FkRj^i2_Xhi8+&AT}@_^esjxY^CH4`wNYAb8Lze%9TeI5Mvd6xg& zK?*RR_9S!e0^s#nU{RJ2hYbG%L$+_+orwguPl-$91RtO&1YEg&54yKQnSf4ZL#Q zhvD951PBaJy7<9C^&bH(S&+n!f4P3B!{0Xml`bn5>)j3Q$^|E43xbCYU<=?}kH4rx z%L`sPCr5YbC;C8REM+bC}o#Sj%CS@cSqR-OmKiwVkKW#~)TX zgKpq-|8n$D`RCPbFq$)6idRnlzE5pH^m&k6POa4Y!Mw!m! zv-(Y9?N)2-{bCkucEw=rcYsN%Y4PV|)r!T+sOF7%wlsY{iD-cs!5n0I6ydW|WoVK_TQ7^C z?R1?tzg)LmMZyK0TF)=yw$3w8_{1rxwNq7JPn2N=nyT3v^<7ai_J1}vKY+*#cEM@6 z(_Www`BEA4qdj5^mx%3jhKSp|u2Cg9r{M6C-;$KuM2vyTz+$CfB~l!7ezZ2uJ83jZ zxIVdfv~hPy@I+{h(Qzz7VQu+*W@mtF!^lmC_eas%{$k(Q2Fh|4%66CB+NTU`m{9V& z^Mchb>xRriwmao8%tM!X*U$^P8TSU)x>2``j6mL!PsKW?Tr=(C>S!nDO5dR4H_|nG zv@&{8JwIM^@?`jK#_o6!lpj3U#-*na6bXb1oXm1jWMkA)guR)+c*gzLqCF884LqVu zJx6}P?ia@_I+ks^zkv8^!1jH)`-@NsFzq$SExD7wZ-GU~>4s9Ahy#b11u(nB)RILn z1t_Nc=+6xB7tL_&%T_P->pGu+ws~;-lN-sFBdc6>#;q*HYHHEAzGlJL|GsG1C$P9C z%kPES;G9vBAQe(|ejt|vZ}9a4q9;Lc^!~f+qUGyln=Z8v*68`-DFYvDyI+79yT>%< zRE1-kAiOT&2F7ReYj|cyM7kX+HsFau3ie6=#nEMy2P@ zopO2W=7bvFxLSubJ8x3T)Jnpm9e0leu@7jmo2#vE_sdbxdT9@v4TOS-{0&v-Bt0(w z%kF2dy{QcG8I`jsPGE`KYxCroC7RVbK+Po{KU6sZS?3eI_6#s~!IPha?3 zq=USeBPfPkaVb{X(j$PQYVVfPotI9^vv$Zm$|`oQ+T9{I`AO%GDNgbJ1F#WNpDo5T zO1-h|D@rz zkBOhw7i$mWO0CV2OOx4QkyHyoNd@9R z-krU(k6B=Hh(RM6ml3zMTwB{Ke9>?EA(8L>J2DGu-srCH(q29B{0-xt7S9!Y+yiWj zEl-E4O8Z%t>XI)b*=2Uft`_f8Fsx43nMaQdJr=t%Y<8G66JO3Pq^tHgrmSj7khV{N zgmF{)6QQp~dNfl^Tu_k}vi_5gcUn(r&wM_lqpv^ou@`H_%oXr$&+p-o;8cyO@Pq2< zn8Loy##s5mv%8lML(fN#?EJjrM#8w-G5g!NeG@mxG4&PjMkUHiV;5hn^`#=DUHzli zYJOPT%x8pS1vYUNgiPG;Un}>;JW`6uDMfEyOZh}hS~y__MyG&LkyHLa-Yjpe^$Ew* z#aKUCf?9!YkTAqlAZ}earU*?j3zI7-98s{UI%>3W2MG7H9GpO_MaYVti*w5ua0ZLf zG=!yv+>2pW0^qe_FOb#tY2H3Yf$zh#d6Ad=x^+38|7MJCU3lMRyP3Q*JAugJc*prg2TD#8Zp;$;%sYqlkeN6MAK;8R8EpuXq=RJDF)+QXj2DQ^cpqF8e5KViC z`YdipmLYyVgWyoH?EBJN?4iAoI@;k?KV~A0O|EU%Z?!4T?FSQSyv+CgO9<0F>Dc4Z ztgOP3uyo@EjI_0yz42TIyemv$tTT1k^)<)BFLM1rUN~8BamNI1mx6_OHA3MJb{k0A zK~g@3`4bMI8qqQ;hg&rU^0JU|^1WUzMPqi;qY0tx9VstWvgSQ01ji}jUoYk*8^!^vzyiv)eYIQbL+^!c*3R=9;p*pRo+2Rx?G)lV=FS2HnM z&!`knmA~e7S+*~3+7hTlS;2wr22$#CChVhuUA;$R^b%>0L!}z>^onomqVP__xi!lH zrK3x=9TGD7amak#NKkFXMi$KuI`T@{Vy!u}^jDnu}(=Tn0ljqVFeup>hem1ZHB%QwJgufgcDSNHE?5~ z9Qp4gjc)9NAjp}c(M*Y0BmaxbR-)4w~RlX9@vmy%YN=e*j@<- zLXxvY2b1OLjIGqN&RyRW{Q4E)*njf*BgVakfO@~ZRljY!srIe6(aLSC+S;DexuSOH zx#6?1eq>|Goy)q?LEa}aqmqie9#Scg58vJ%4Mr#YAM}G~Tg(@>k zidKT|nJQw(f+Q!Zz1gpSgiw9uRM z-aCOa(dT*3_ndXsde0y5`V%WAd(WPkJu~-pedZoyY(vb1Z0j44x-899?Zw?#S_q2p zqJE4$;VXZabQu-QO~|Z+L}c|_D3USUq+=sG&b`X>%AexW{3&h{p{tm;^K9P5p)Eo`>#fJTMaF`m#Jg;Dxe*EiBFz}N;#`}m>T7; zr zF7irMJWrK}{6NDx_nB<_ePQA67Ckllfxj#=qZ5C$#gbKv77?d}iJ`7{*sMAInF9_? z{>%X{{0v%pkTE^yU>~-RpKGyDw$17b`JbK>`6Nw4;@_Okm9p`$c`1rdK8~QT%+m;_ zidCggyaTJ)$WnTkQ`NL5tzFmPbGuczCgTx^7zAeI*4BMc8ifry_Gx@;D;xIf^6Tau zT!?!wg0KPE(K1=9FT^(Zf>Ug`ujTapl+cLewOl6BkgThWcj<&PPwq1HuX7g7?fz=n z94J+sZ@=Gxab6c+7WVuudED2rusCFl?v=!~ma>IbS;;y<>b$>(e~O8U@=w1>J>RxF03F0Z{70H5;*DeTuz-TI&feuB^?kBdmP&Qbjy z9`}iXr8UijPtqt|r>b>I>o~Y!wX>2@9o#Ij?A6oC!sj*CgRV7uqwWra*2{LgIj$Zm zbia(brShGs;ROvb-RB8>&LOunPt{-8XoX0)(Spi-(9H3{0c_9UC7$E=zBYTT4m7o= z*LfSzNe=ow5&V3bmu4X>KCarIFVT}%(5@W=Z^ zFVj@4z`=gY`@0xVGOeIx19tbPTGoiEbH=`;V@&~wHk-op_iYS{QrxOCxR5?WWV3z!q{o<5%GZhJ4(tN8 z*XT)-DA3K+>(`IO0Bx*Ch~IW zFg_|~M67GPtGH||OJk}#A6q#CMR+UV;Eh1GY3DP8*VmHBa0BnD^Dia|j6Kt9d*^OH zwpkH-%T6Qck)&ETk)J=6tH+5~>G^KYg?Ld!DM@0F>sdOC{aJCe%2HA47?Gg&DG2tf z-llgZNvOpX7+5v3lG2Asmm>tFHgv^mG+4ymrq*=LzJ&Um^-8WBjzf#$EAk^~6e~52 zPzfMri{DL&WnZYf3m&{LKoo4K|C}_E@v&S69=%qvT8QXoclI=tgD!uH=69Hs)I;qU z_EzpME6A0)S6ql!0y(Smi0!FI`$x!f0)%AJ9l{tdprBKr$I>zBF$GgEQe_aJ-`Hzr zZ<`@th}vqkv=`H9IX)ccYGKrQu~+iLs?4IJjD$LF7g%77|TSa0pS z>Sz;GB){eNe8;T7@_^iw_i&*(i34{onymi>YVv&zb7+1Bga{yVmcGHLEtKzR^hh)C zIQ2i4FAIOsKs}rP75Pe31Bl?CeG|7G0#w8E?x>gJvZ7z84~dq18F+2t!LagGe)cB? z;k$Zv5~FA}qhsjpb^b5UxGcIiV&F!2kdXl5-9@zT!tyh!`8l&ynuU+ z)EFcH`~@7b0QtZ7d^!7^6`VNZjw3R=_*LQZB|k#Ks7@OX^hJ9Hj110UD;FXg3@n#( z>f+jo%*TqgqD~71Qe`vbFmo#6i=O>2Ey1VzBEfm9UzhrA>23=hJoOAt+vhaWM`>{{ z8(X6f#mnr>kPhlr$jXbrivmnhI=4a5YG^3RGU2}G!uJvj9A^MYO>2WWI&Z7!MmIT- z_SwPX->NCgXePX#>f1ehV)(eTy^Q@}nd1gxy!7b0C>F9RcAI_TWFwtb%&yy!V`<{o58^7EaU;-O_wE0O!R==*E z^eRXLXW@>-MzP%Y2g)`(cc%9atx<|wr@}m4KOSONu}N2|Poz>EuOF+X zyIx6}j3Yu2uj==0eT?ZktGeH_8T!TY3Kzr3jpjEpK-Q6OP_sP=tPx5z@)K*X#r z3mk+i193@;+eD%@d{nR-Q$mfjfNB-M$*y}rgh)Cr#nPta<=9`mlO}5i*r*S<$#**P z55>Oy^a2e!0rZJ^;0HW^%XHkwc^!LLsw*3)47Z*KKLNVQYzb;3iAW5DaDQ)dWk@Fq z(0;w-Z%;g;O*rV*75~6;aoC$sV8aa{iw0(MHJTTU5DPyZPMf<~L(0{u@ zU5QcIU&8bMdlTY9_&r+iLf!^l?m>f&;Apfy*8Jnc-h>7CeKQom3R8oqQvv4yR4(Kl zS4&_Ccn)UuS6EY*+s>oi^UJhO7zUVYerLp@3^I$A!eB*-R}HM(Ki&=b=f8Ci9npDt_$ue}HZ`0}N4OA9|oc^%4JRLOVXJ5qp63s~{!dL@8$S8#vjsi#bU&`;XJ& zz{j7E`(lT!ByY{aJgMxl#Yw}J{G^*k+F=DAa_-7a8HGO%SUWI`>@=_y^rn;Ijbt7O z!LM)u|L|8=M;rKJ0QQUDw{ygCt*{+J5OfHziHA@GWaqf#=T8kB!li}zIZ)}1xFM-5 z~b4)o=pi^lQ-5{NEUrYmcRm`UMEfV;dN;xK0(--fu7FOJa%pz45vtiuh+~1}{{H82 z|NGXJ#apO+QzJJ!Qs&d?GJ^*>rd~M0YNQf4%{?3A!z5roGkAfKPC4|rdZ5-FK4MMC zZoGwZ8>yR;8aw=mg00Oczb@I+r!H)Z{j>lo_vaW-U&56@dz_t3(jqWW4 z>;_us$H*(1R%!$DQ?~<3|B>I}r1W#=VAdF8bbtE5#!!Rtrd#AdL5Uh~bh?%rs9cZ6 z)`#STz^d2DNnlBc?xjBuAYhF0t5gd~1@^s+OR8B01X4aBG7xqc^F&;7Z@TU(R4O+Vw z-pATcCLF@Y`PU}{9PSM7WPe2Roz5!X2d|wgu9bz28#VS3CWU^`Qoz6;Pk2nu4E_uO zCRn3&cz^5XS?pY}ZCx}XTQE8~Pn)FtfXQb&aF0R4h%vPYy2a)VkP9oiH=XCAn#AD! z&60hu2N5Fx-6_zm>#ff6mC~-(_JiHxQGPRy0 z_bpX<0%4lr`(sIZJk`up8#AY)hCF5V-AVC!D%bfg@ zo6B=v&zS#6Y7TUwq?Cl&b-2?nU$|w^wLcon$jV`cT}uay0D?Za>1s~1?Bd4WyN@#R zo+U+IY_prUwMXxayfBVO$jp3TnQPzejut0iyvNGQnibNODALgv%>hm-X_;?oQsRFD zm1@%(`e3ByK+O%z`*@DsSWdomm!k%PXTczxt)}k!BihZ2<9Ezn19@0JbfiB$xt}w>fzQkX?7^#Lxapz(ZG0(ayE!F2;M}) zBWb94zE~Q$$)i0_tUQx)XX8;qWD!*1;?GBgp==cgV=sV8`g#AZ>1^G<2!i8Bdi7A?r*<=rE0kJIS^#I{Y1O#>P$uPA|=J4w|U(xUsvxGMMfhLoOa+b_-#`0xS zY^elo9smtj=)6)DO%g*If_?AtzITH7CMa^EHC77g31su>|3x=^nT7{br&qsp$cKj65V|~M^6qnxWKU^&rVsR z!cwz3Jq2GP+_LDLr4Mf*x7#@~LH2{paplW7BRt))^z179x8+bJQ#mP8=BX1dv6|d< zjj)LO!=)0}(Az^QQiXiRsQHuaKGr{jk~_D#x%m!yWw6g<@1{Uu=U&O`R`)6N)mDZ? zduU>0_{2=7z^hj6iC3`Qldr(j(Vl?)=32`vcZt^?M2gfm z$uroh@)4>#_F90xh*c7K-#jJE(6M=WXI4!no*sek*hMe+S?*wJ>ZbJmPRI7cZ}>_s zWVCkx-vfKZwTi%M5&@be(8raSp19t=??yG{;FVR7I9oNgc%S;FXpGUR_4dvfa0hH1 zou25fMXt~lLt~28zw<3B#moXfgOBKYT!s1kamnLXXJ~r!N7&gv1Ow<0%#By1vhL2` zbvKfw#sc)+d)`b=H3HDusFy6wY767bN)HLr%S*mcnzQ}2E%!oT9{KSat0D60D5GRRu}qoDs_xkoP;fG zejJ{n9eYz2Dpu+4WSw38#L)Pn5EyX_Dx(4L4ZKu?wkOv+)%BZ5XhEMr`zIdc%PvFz$IMWkIv5!tH#u#!YIcpwLC= z*IDG`YkWhuOg+nX)MT{xHxZw<=Rlal6S&vg17i5OGiokLk8&>I;MId5M&Y762ye$U zmuIU2T`Ia4K5Kl^Rn)484%XpM(UE!Ub%s@{C{iY)4M?8W*m?0e`?AlN%{DY+?8;)I zY@fIi_aIBIO1Om1d*`|b(x=L+-)uxy18G#oni}~TBn{nlR;$Iu`4*ek9tUIbMZW=D zvCh#_M&8?C&1LUXp?CT7u*P0+10#)b6z@Vm59dB3=2w4DT-RPlw?`1EkU&NO6Q-{K zi^1?Xayl;7KNnk$`_>_4oikf!cc>Qo(nUqMDjV|Nw26SJRo?3~K21(0cO_;6-ka;s zB}K+?S>|*F*FiE_Ot4sqX2dKunW|f^rNL~YYHC13hKo*^cabvj<($?yG#1vNjYx&I zIyN{BwX_(ZyjOqa7d}}0e719k^w<%`KoVzq?c`{M^|IouK;7OKspK!_HPVif7YliV zeX|Q1+v*yXy*%la08!DZ3U2W*yqNP&o1L7QsA{pKSP|Xt38i;%r~J7rqlz?(ZN zW=@j)NP+o!1A3EQxOLyGCEm7gFKcg$OC+%(>baNn@oy#M(tGcPg-GlAFVN!5aO$ws zbKk4q_k}g9CpojPGG0#=qt1`4V2rP24Y9GsG~b)3=NKZK+MMe?^ir5ds zZ>Eq(un|C(M|Hy!&)~4y(QcbDh;8Sa@CNTclwk^SoNvDJT=TGo+KNbhKQ1xGq|N6S zSrw{EuR~xk*gm4}4285LL!LA`Z}X%H7N8CmH25(e*-0S?o*eI^W%gx$*Vku6{)^eF zs&S+lW&2JCLqCI<_*&=(_7#yEeM-;KDlJg}Pa2ZMr@@jl;@#i(8-hATb!A2@g4laX z`xFNDlq9o_4cyniI`x1z`UL6y%wuASkAJ_n1txa4vZ}Cuv~KstHt&NGq5hkiB%W5w z&yg8ExwI0D9=e7C&I8*u-fMUeqam3Q%~X?k;Q5Z$g%e|3{D&45isvitwa78M`l;hV z(20JkmC1h{i(gUV^yg=q_$o=SQtF0`cP7RRKW~w$a03_X!gTCz6)38!e3eJqvQqt6gI~EMB#`NwqiA=R?1Pw$S zWT#SJoHnW!&pTlvrJN2%18TkGD$)59t6Z=#3ZPiY=aAtdNdoQ+_dWc%RmGM_|J8f1 zq?o?SS;#i}+5WmgR)06^aA|j5U*fb4<|JMu^sWy{%o)7%AI7C;luoVY>{I!AZ$B)1 zifu*YGf4fVjmFrI$kuTsVSWcccVAuqs#&>D)eO?4DNC)UHMSu}{NZ!9^L=`&A|GCm zGR;88Myy=?xg-=}?|@Ks^q{y_`IYC#)->H*5Rsn2aXxl`Sn<$n2@!}Wxc%Py;mL4- zofupy`hHsc_PE1BuyBad|F9w^nbuQ32Mlcq6u^x>vzR#))6gV zbzVsDF!#;sG3?dBXYDX|%DaT5l$Yj(&w`P|0O&3BDUFrh7`^z^!O+uLHil?IFf{0t zRERD@uHvQ>BCd-cBONi7!*|lT=mdFfQMsrIXFZ?vDpJHA{nrix(l8n0RIAadLc6zi zb>|CXLKp+LNn~jYch##JquQeddgScX1>abOm3!$pUon7roW}}Ikt5930tm-#&1BOW zfInnP8cMt)uDVRVDrD+HZj~Gwvx#u%n;efzeqF)^1ftLS_1}aL%4ynG-$I7u=k&}v zFoPDP>T8~EuMPViDGhG_6zfVDDXj0QJAZI-xRUO7;@P%jGiM~NSqHUmGox%r+j#_ z(w6yz3t*ZSNTy*-UVWxVbN9D}df#kLsR>^14;Omf*CMe`F{sErrTE73>I$~cts6l{ zI**Qxf#`&!B)=!=_X`gqUbf`No*J>*9P+W~TT~}pvlfy%{#ZYGSlxP~Obsb7wdvlv5< zdOO$M@C0`0T%)v?`Fs$QA_C<;nBpAvBXlH;aty0_#9y)Z1dc7x+1SSe{+k`jS9 z#|0^3k}YnJP?taKt#~SPw&t*_i`Ael89g8+7AnZ?i2Wn935Q#A?Zl<7lX+bL0a>Se zX4@mXfA$Qr>P*3GK5s0xHDpBY_U^ZxgwR6sOe(srvx)C_2^V%MU@F2!B$HDJ#x7Xu zkK*%jKu}Kzw$zu?buOWBs2E+v>wdl&VK4wAUd3+Nt2!~(QX`F z)$+m0aZzWvdS*;Wm!skUr|U_0t=x{}m zD)|;Afs{n{p|D%=yaM^72V>8Y6NCUTc#TgD2fG|ys~buwT^An9NWMQSTwe^*B+}K3 zemU%89WvpFrByq5o&}^9LG9ubJ*Mr>K_N(SbodDsObnTjY^zi}KOQ1QPFN-T`W+Vs zc)B{nN>wA{T7!*5%;Uy_yIxJ(AAtM$$wx-SR%F1(;NaW+Yn%)j z6;SX3*i7hKuUFc(D+tx($f3+0^9`f+3efxusL4{5OhsC&y)FqA3B#9&k}B>O(r~ku zh32&&e)B)gCz=E|=fI}6!&sNR*8;>VCux`@|LjA7nt??ynMGk~-Jx%NvAEIB%bcg{ zNXvG+=Q}7B^oU$M+Ob`$K{>qX%Dz1vkD)y&B0}y~6%@wG(`joM)Naj)7DDh3rh>Yh zVu=p}vPfO+Ee1bkygL*yy_b#*zCkJ8PsB-4y=S{v5#*4RiLGkAJo4DK3Sd|w%vsjg zy&SrLNtfWhwAk&JX%AMdURE-zq2fBzSknDP1(cmj4R&u#JNLJe)bksZO(q=2C(nW` z8C>5lcL|QiU9K7jTXgVkixj&c?-7s@qO z+n^QyS-s3V#Z+WiUOR#gC_P0yt6EJx-|AQEGv89*bqw+@;Gxq6oRZxjU)BE$QxfKF z=@K?ms>G5{%KMeG@te?$&*42s$j^{i2M!(V!UW5i>xp`goNjhVS8Z~O7<#BQ(+Z-u z9vs`aJNt97+sZ1tyws)1m;7rb=DI=6P~q2Lj-LhH7L;?1D)N#hbG|IW(gA7O-djOK zua3!Y7q)*g+uWC{LjUi+idziqO!NwT!_QlS6hb4iS{M>z?vB;7FvU2B197nM`afw9 zg)N{+;&Ri>V%O?Zj&3^NB?v)_;S~EUjSIj<47r#3TLNyjmE|QDRzy{YS=$#^tbDsr ztdbr|3|!pLeDc=<9hO>e^TuEf`$`;5&QwOhT7;W5-FDO)p!y3p!$TNZ;faE69}a;S z+J56*(1%(EyIAYNSF(%UUppK`k6qVI**}2fH+qI-lP<=)79BvAirbEI6!rpC@Z-?P zvBs6chclO16ka7AAGW+F?Xzu!^KZ{6D958kR7SDWZ5@Le`+67RBX)+kgPkG%EdEg3 z&ga-Axe!^OSAj^Wu!>rY1b$5W!Ppz9a1S+%wGO8Qi@mrWZajB7-AmWXbJw*sIoW;r z!X*~UW1T8&qIj);ynDyp^jvADsd7qjOf$jateNkFlF+Ay7;$s=m%iQP)s|=&meG^5 zUK}%$SqHjku8JPeMW5o*T0rNozitWv8R3k%(3c+9`J&*)GQA3fN{Wi@41#V3v9})U zg-2I=%I`Ep7~ji~QIj^ZzZ7A07F!*Y&&Y#?r+TsQRHt)aIKH4JJ{cvc%X6=Y@MY(i zSg@iSGO&QLR#|w+x!G4?!|dG;R%^jVm`8eb0kz(1qCeuem@A~)zQC;6hj&ot&XN;{ zyx@TCP9dx-1J-JawYjTn@#zyq5kJVpbHZ*%I9UH>AJhwVEpUM$_d7zvhJ+}(X`Zfr1sO)9DK+q z{t4+Oh`%DFoJYha?}|S~o|fqGzyAGrm#Y}DEhQI}z|6_X^rrKr710Wi+BGPj3P3s{ zWjPjrk$e8B82_&Obxfbb+e(g1mHw=4A?^LCfA=SxX_S|#Sv@#e`s##_0RYY&8;`w^ z@WD4V=|xFH)ozU^`r+y>$%X`F`0zUy}5GeK=jlQo?kUkY9t?eJBseY}j{ip&;v2uUW3 zH2^UwPJaG*<@N(3e`Uq>lCQK1PFd4T{k zqWCGad6>^$d0nm}9t4)KlrZ{ahTqtpdh?&2+MeLK+v@{$9r$A3I1|)?(9UapFLNQ- zUyg;2q-903^#o{LFiu1wIgTJ&AeDhO_wAm2w|B4UrSHL!+m())a;PX~#HzaI9uEH0-`(*B< zlzS!on5CO50M*K{&s5x5$kVp)%rus4@{Y02isWWbD=TD5KJ;wVRSy3)+W}5fk*DT{ zSTy4Ri~od46Rvw?(}MQzLn0?dSRZ6^Usn#=y|&FTB;GiJ=?Hw@jJ) zRpPlbg*$3Q_c+s|!Pki`#$C6?J-2x|*Wwdv-G1=_4nZ94nL7rAX}XSvA{bZDK1LfJ zH$C{h7ykH*K-IYq_cqHE0SCu=3FVhhy1uF2X}1q2&muuYOvOc3_+F>apc`MZbJ`NH zUl|A(dYUcn-SM7uK8tav^`VgU_xsX&r(ovpyP~+Sj{+5VtW(*#6XT~#p5ii*r9ygq#A3|;q?P@k(Mfc^yIkC*eBYraw>&)x6R!#naD?J zGlfk{alb^OcA#YtA57rTp`uvfp*>zdeU!-U)mYOqBiG&#CP7EV{oa$1l|i{l%oYo+ z`=X&mq;l{~-R?OZt>ki8!K?|XrK575Z9`bijqy;#5ci0G984xWP%b#O==0<^g%0}7 z!gg1E=axZd10mVfk@Rn|uCoGl$$LVaQmO^LOWG)LrtiUw_4JNmiNo z#Sdl(IH>{>WA|oC_go&>4B3ne5$Jt zy|V&4oz6rYCU?I=(`vUj6a_4#&ZghZb+V~sV65P;iVR)4PzO;JztMJEebJkrYA4iW z=pqL5F+-x?2S1WZK`aNAVqp)J5vdRcN3joAY-_l}JL6e6&;@)xR7(migW_XY-YcF} zskFjlEe<`)WmGFEEub2nZ7TyCDh=dQtq6l~zU|MHZ=RAd1kT;{3w}u5(OUm@pZ!n@ z&A!X;`P#}Gizy+g!DSO-tBurzhQ->$<4Fv-lOX-)0Xp&=>~G#_u08;t?=RZ=l%HAA#&h)6KA{Pgt-6M+QI# z)t^27Pq{1w)xozX`D%!5MhyM)WWhNUI3Wige~^@g@v-0X8~T+sJj1w?3#372}|w z#|CYF01W}6mP2tSlzl((ZN9SS5ru<4!&nll9Lh<>Rj%^9s&GOK2(4w`&vt~Morr(r zpSNV#a!-E*29MfJF+$vQuuqy;+d-WcFNx@_ne##u8e48-Y`HVB<<^5AOl5ef%X63riyycGv0=b|bx!_*z3u%E-TD)5()1Wv2fGn+lc~13}Z(3xK9e(XeO6 zd&B~oE+H%J4xuP$x;1Q6f^9m$c8qf42Vz6+Mm3ykluS9QQ%HPT)d4;M?PR1@V~!ri#?ov*6WObyH7V4LoLXR`&+!1^$i zUoqIN9av$WLxU>}pn)-2Q!4CNu_V={U-v128diL}K8#wp?9wG7-Di&QzkN# z^MNmX5V|=iUk_R^eih(OJ4=@uOe)W?D_VD7{Rb0_!~mh#B?fW<)m<}Dz<4?cV< zL=z2=qdSzqhQ{uUrw#?b?G+Sa*Z%-g*^-oKivdI#ut5IsN3Z3(!PSX10Dy8E@nBJF z4Ln7Y_m#KjU$Cgk^1`XPJ`WpFSK-a^q7IBGDl%XpO3Z_QM{yMkee z8H)1`UeLiIh6_IYCBtqYnNFpvP;b)F%lx?*JY{1Ol{gNr9?4CZxuH=T1@^;pv6_%~8RhPNgP6Vb7Rhw<(!rP440Cy^zzect*+mISy2Ci9b=SY$9$`U&Dw` zjK<{in)8hx;Y~5Uy}~^E{J41d_qQgSg12L{y+^O6fB4kHFPWhtwmWxzk@~HCgvYX&8dnUb5HNj8blzBLMxmKy(^_zCQ>Cb~Q#=qA z9Ut3}%~Dd6eLHxBO?+K}tXoq1@mcZcF4|)= z7;<=AX~%@Ikxw)86H%?cWm~;xx_iR^dpQ@`JQGIaa2p2~kI+$D)@M*#HJAe2j|2B) zv5;3kKz1GPlUYz!9hLd^>VwkW?d|WFnav^Yr#KYMZ{hXOx-)qL1Ece40{P>KHkRPJ zna94^=OO=PJoxR}SL{RT<6z2mWtr9dejlx^4X-ThJmRRSV#GXzG0=AiK=deDA5ZtS zD^~B6Sr%Fd*dvD#J}+OgM($-i^u6RacV+KITdX=L+AFp+pYDRRzT3r5(sF8LoL^hq zZjZ~YWtyrIarT-`{7gumQ&JxLk8ZXMDNOihiV{MN+mG9OhLYsSwGl-?!DYkC9iP{YU4aMP-%L) z?y_fZ3#DQ%e(1MbR6|$9gqax3Z!b+sN-#DUo#r=E#n!JES8Q#$fGhp`cGvi;-2KcvDOa;7ft0( z^KpJecr~_O=pFn4CR0wp<%u3=A;TMO+k17hwME!BZH6*}%MXW0D|OO-qe%wt_3bF< zy}m|NKa~QV552lBf)!iq*FaZdXhep9YuXSmrH%#c@Z-i4dHy!ZZ!bAXZMrCosk6rD zn{sS!*Lcj57}v5O!a~iT+-3lM`FnXOr7Z?Cs4MNZ!-At-=Y16a<+n%5K%PSKV{9)~ z1tUUo4)Xnf6t}V-^$t$m(E`#??jL@eo!vfWkeGECt877+*ldr`+rnzuV|j4#Mrm>; z1y*G?Yw2TkxPR95q=vh6Cx-@ibPRE-yMH@6(5Q(37bOA}OL;GXoQOOp)At-1V@`41 z&yU!^rC3}3@FG0#{Mq9*`q$;c?7W`1?CqtVp4Q%WR!7fc`M@i^L;cHm-q3i2f|-{W z2eVthWTR}ti)%xQ&`;-Lh^ws|*OH_(@4U)pP(^u@((evkQ}oUv)ow7))o0CpcR{E9 zMZ8q>90lN764DY92yuJ!ubja})D#|{?m0(kyb1n5AJJ}9 zjEB#&b)3w* Qm%zVg@~V#uADQ_7FA>Mr37`tnA3%m23(**(c-39tX!h z&;2<^_5J;x-!uPtUa#l%{p0JK^YOXw>%Ok*zQ+5y?)yBwrJ+ngc8&}W5066ShN2c8 z-tkpDJp3t=yC%VjHjX~uj2_@9P>({Z5e7> zvyi_v8A^OE;tRuDrHKc$@)1g=R8LvStWWi#BRI+O2?)qpFB4XuBvPb~MbKXl^CbM1 z>lu>a8NT+M7?#Uuee1;-T05ewr>92)-nFqI^?frrz+`cGKBwW1{@%S_cg@gMc|3eV zs#{!F_KRGs?;KaUMZz2ys1U@`YN-9@%4G!w=xLjFAfuS(6%A!P{9+=5_8`5H`m}7< z3;2ZVv^R`KhJLltMDZj-3L$RtwJK1e*A z1Ku*TUSRo61!O0J5RfP|Tf z9T39)*@=*9)v&3hn|z}6`Qb${hcUr)ld%FLV8R5EK^I_xUwZil6F%WbLQX^|sS_i_ zM(}FBtsDth+5l-)mDd}}7lD8Q_-5eMj^mFUspRBR1H;9y*wofoDaw&Bzg7z*NGru> zVFV;Is|6B@s)bFFFe7RM!;|S6qUaC6TwwUNpihs)BJl_s$g2{Ml~wG?*v!cikUS#2 z)kID+DF!G8!w~8Y1yWHGkmS-hI-wNKv*NP=iaWroaTFv!0ZS$D>0BNRy1Vs<0fOX` z@Q9?$jwy%%S<5Bjk=iFxwNlG9dEnED^7}Fg?M4B1JtB=h_5`~sUpg$e(0+q`0fbZ} zG_M2cu-t)$AuYmDe~SY#i42ucB!KkgC3uyGf$AgBEH?r^BoOy}HZ>q9P!ONY6UPR; zpey*NMz63$UJMLeA>gxzZOfQLyadBD6H{VWwatexq3jx7-Ydw$V1-Z~Fh2^xBbX<|3h2A~MTj6X0@~G=ST;aHWUKlk#L>D{zph_^ zmypaU8UM(fF|m9Mt*43s`U(UD!*T~2hOO$a5R>WVsYpq1GN&x~BXdYV`N>KUK^;IZ zxNvL$LcHPlM~GEkKlc*90bWAGGm8C@IiwdWW${4SfKZ6)u-t)$x#9R%h@$)hET^b& zGH1N^N9K?^>xxE@0D@iuz0k(70TLqO@oynIp+2Go-U41i!;3rqkvXIn6BfKc*?>^U zJaOECgoxn&BSd>x?lm@MKrxWHc*!4`Ljo$YKSvD+;skn;gJT0E#Ab@$LIirTVyXmq z2@UUz_#<;jFB*F9L&|0h1oRQB;*b!V@B9(sXx*(RH^4rDWbXXnugrmf49A370YPBL z;cMd9@bAX`cjNxMasS=8|9aeiJuVbB{p)f6^|=3^gvv{#%in2=V#s=DC$1}!qMn^Ahw%yp4ZZN zp6l{S>&xy8ol!@ds#3@KvgMZyD|Pb2AM8y1YIFDK-F&hyHq0ar@7YLKvr2qx0kK?a zxpc;y(Ji3~|Gh#f--%Cxdr0y1MeW|>nAAqE&hD%w7UGVUYkcwN-G|>4jpf1@b4R8; zMRk*|Io2CBk)~x#aFU;fK2fWqOADh=d#?Y;EBa$+QX_xpKZDZ;VkOAl14nOHN zCUoR=Fc0-^t`*kbWA})m-QkT4b9Jj#wuRE|sH*>@EE55<|en?)5SJnadeCU0?-y3qy=M6U9r)(=q zed!l%GOP8jI44lo+ISdB{#eg|6(u0d+5H(DO5cCjyCb=?!|%^$RIGQAoJo(CHnOXg zaY3jmD#dqKr7!c{0gZmB+S}ZzzHykTQaUe2EpLw^mUve7Y>LSqAq>eLRqft*fR5dI zQXU&||3h>_nvcpE>6+Z42R{4lt*RK~gUp#Tyk(Ck^?gFShH{IXfPC{B`axRB9IXQa zaA$KCPMY0GpiqFo3P^4UzFlSdSkQ9!7US{uK;`;)4MnGQPxlg z{`qI4w1K}<6Mv>vKYL$+o{;!Vf%d~s6rv}ddCY}2n4o^1jZGo53ozEm^w%`a894 z6k#>0qIUj#1sCFbLH-LK4mBFo`RB-f3r7d>{8l|ZBfnP-PfKQHd^#T4uoF&1B^&}3 zk5QYKI_Cz&9<}Vm4aAPf!V|wD?#MzjF^%Zu_18F*a#UPZ)|+EWCP>?2{87oM?Gr$r z^!7Gv3Q7fghA+(Y2HNQx1sp^?rx#Q*H?dFVFi1t?BeN5^IE4*@|#*jOoX0ZHE0X+ z>l7$Q!`&m}=cSGos&ybWZ4J*3Y{e?$OVj1k&YEPNp}9^JKoxE&1^J#D?Ug-{@+_aa zhL&b?Xxw4a+nwxVc1HQZWcPM@gLS3dr5fHY4tk4P^<}D97T+zp$AzicGjhgApCp{v zF>5gD`ta>%6=mPtBaJ@i@c3pP;+*HH=RRCTc6@WTg@2*x;~Z8Uy4dC;9ty| zRu7#QpSE^LdyHN@=3RtI`&dGdHnfo>@{>DB#Q(nIVO#sfneAA~Sw^_)+b*~zFa^I9 zPJJQ;xYg&TkGv4VmqXMRv@km`-Lw$yI4ACC9h{8$@+;sF&&#)Ys=3j+zarv9jqU5j znpXR}#cHbMZ>4bt!ia*r0Kx+$ZEAOh+RGbX?3CTn*1pJp+3WUllB8yum$S;43>>z% ze5p~&GGOjUwdv}a)NBS}yH(Sq2BWV(dKX!g8Cik3d-3YkaNCy8&G*F_e(D1k(jQ+P z5jjrgS)rBk1cJt>OH>@yUsw;iRd#%j&F;*L%U8IF!Fjiv0z^@^>24E+u|6v`qMVkA z8TTrpc6y5QsPC*##?YC~SMh{spW{JXAA;>7Tbg8b+c)8(%qM#SN?>8N%kT5mYTPpx z8)lbJnc=T2iH^t1jP14As2U{zCzJ4AH{!ImT-T;bBYWK0S08hB5?8cpfxB(CVd&<7 z({W9BE~yLd0#ob7E?&R*jM`+^N(O7hTvrBsuMkzH9e8(Wx*K4IJ8Nf0?F^gtyu0Co z)~lRJe*Gzk;RR&R%VWb=_hFwl_RL|ihje2N<#aWO&yK+WJ{2f&B!_@tD-f4_5%p>h zg3mU+)65G*_m%OhM2*jOsN|&6?!QRxrlFf#vh2m}2Hj5t3phh&PbOWxCE6EIA>)Y& zL7Wumg2znnG9He6%9{8Z&afZkCPP$rI=wK=wUJ|ff@>JAxU^<w zlZ z{AhS4B>lAA+_1?^yiISR}6J^p_bdbv{+xga& z6PS?S_G$qZQ7vWh254vFb0nzB1Ok2mO9v+*oskSB$`H&-r=*jG0E8vHRn@KgEx8DH7@ z9n+PKsP2_x{={k|hhj2|Q}Z%6?llUZ&k4-25)LB*&a;H7Ee`Q2V>B!%p?y?;_BbyE zgAuQx<`Vbm)2H?HMFLX2tyWYQV6xFWc})(D2O^y8NpSi^P19mm;nq^=odmt6@EU2C ziH(QNbqdZOH`d;0s_I?QPmO`ma%Tow*vA~^wG60FcrB#9CQ0^=GoN7bn<;SVrA2K_ zKIejWycEz5){a{A%+!fu;MOl6&V$uKhC@2Jxg#gg0!A}}PHAX18ohe=M~{2&Ms?z$ zv`<61h0uj8nbwx>aINI8GEj6=190%EkXW{zT-ibmrt z`J#0H`salg==SlFiUS3F*yaLs(hg(eszvW?&T@+{Eov_;g%9n^AUxy_iKG&?|_u8L{-@1Gh77UEMJvTCO?{LkT{+{@aGcu*O zY%vd77S)sLX;7`-o?P(CeV!(9v*L$ycnyCM+a zy2CO4n?^goLZTkdg{y|}FZpd7MYRF{8k{IdZjWrQ>r{qOGuB#u4edJ!UVigF$4GmA zOYO=W>F!ZX@#M?d@1(am9wa%LHOxx8NiD`v;}m%~0iX81Q2IN#`iqN^G8xO~fXHt9D2`pQso1lrSkmMtlG5kuxds*TNPgJE z1_lP&Bpn)gRMQMtRgFBakNX}JA|&gzT54>^RQRisbR9L49pls(WO>D|mYs#4Rrc1> z>e$jk_ioa;XI&`exB%lE)6_E>xI8VnYTICBxArl|?A8pkfYGqM4DwDka`U9*QjPZ8 zv2Y2#rKO?gF2J#B%IqrcrpwBmk$qoNF$cM$e9w= z<&LPj6{HYJq2LBNZZgs&StIWZ%@AQhrMJT)oL?m?7&M}GJ6*!l$zeaQ`0sk|%<;+E zZJa~-1=FE_(a{=px6-ci)tV@-E~CF-qaW$gD^wi6djXP}a(u}=d2|a-kaP%$S)zKQm@v%P>oT5YunilB{1dPwRS!vV5?C2zuM=Uw(Cl%4Ccwnp`eWI zG79NX1Qw3LX73Clm`SnaKL+o15%6L*?gL9!Ml|KEbgi!#ze{r>u3u7-gt((dP<_fk zyRLRNaz`-3TCtvENyMSrYnAO=FUEpt$O~;4{P6|XxdY27rtdyPW?bos;k!>8Xg$Qq zJsld?DmLcEm0|k3H4v<1(%@PRAP1M8N4`aRsEMnB-fd^09L3wtU9vD)hk}Wj*MER@ zp?%`&0-?vk z&~$`^Xje*dC=#q#Y62|j;CYSogtOYx0Y!3v6Qc)IHnp%jIWoc7g4P(`mkIOkj;xVh zvdP%mp1c?PwuTr8m(2=P^QppAm_Z`GSZ^ly+TzZbPlIIYR~7Hg1un_uy0^k0+mU}{ ze7#(u;h4kVX4%7gn4it{8QYX~21`jkFUtbaI~F{d7_S4fpBKps(+6$_*ah$K)%t(h zZGX&QpXg?b92Hi63^O>-xYrWYNOB05s<61vNt$-9ev_Ro##6 zycuqzh32<>p`=gL_OQii^l!Z7r}+z{$k8$(KB{Hr-OqMkl0SA2|u{? z$X$5>;i_zlxXTz%uT`>c(*9P}g?fF_DyjLZ50w@up*T(a-VX^f=vt$%hJ0slajCx& zxg4Cce6UVle51GD=eTMA&mWY6zLSnau4U@;3MjBC1h{6f&aW>7bfVw|v61{%5w-O6 z7O*K$|JW4M1-s50CF1wyr?3qS1xvA7}=Esa*XS3Imh9loSPu%$?`%W^_0Cg^S(QScxvX*>m(uRY@Db8eO-?* z%CslH!838x2VUR&rUO5&uYP?Ik)9Ko%ndgXxVSz0HcIk-UhB!YZjp%sc?O){WGeI} z_ndPX@?AmTLW~2I!I8wq%R-?;@4rt4PYsckfhWFUI1j8ucI-@TtvyL^LyU*a)PfLw zu&^QqwYT}w(0!zO8AKI0Xy`^Y+;(J7yQwU0QVMD^cp7LI%y3staDrFBc$;u%uSZYb_BU}yNpnbY=~qmTMR7iKs+*zqm3z_UN zi$ia#&cce^+Ckc5#kIQiE&XbntuaCKw#24Z+TAZ23>WQ&E3Ce596`p-`9j@iVg5^O;@fay zxa3On&dKAZG1ff#->yKLnr>?<$pPBbutXu#wE$_1W{+ z%d>Ca2j@jCg+{1wMb(1z=jO>_B@n8_0PxFTl)ac=+_9+IzScN-{4qH|F7t~R>r)mA zk06%rLnWk4%#bSm_AK|1PhLdkeq56{lg?3Gy^+( z(A9JozD2(J-A!x9G%M7z+p%WIJ3=9-$bTe8<3G%NI!dFfv?8n>_~B8OEMR{WB(tI+ zjDf5lY4OFkaXLHMft_C(9dp^+_4b$m>Sn*H5~cMO%6C=1HpMBb*#J(N*_a%M+zUBy zFF=v6&NfAKTL3NYS}6aG|MzST;9Sa>d%)D(bxl>b32Ol(qS)O;>4bxm!?HhCI!2QP zXN9-eQ+@rJRwW-Cj2mnH*Suv{L?x)0K8}ogg4uNJ35$}gF56gyYXdy-lCoWnyLb+AzWHXrJArrk*^p0_!X@phFX?D^)1x#W#d+Eq3Et5>f&W9s(I)^po853jMHWH=6g63$6i zY1VUSm$iT@%FKNcP%hw1IE@C~i-ZQ$%*2D0?fK%wJtD=Zp%ORVqbh-OVg8YqLC&@S z=0V6%yJ_~LWsju#gbw`r%!PM`kRPD%XG0zMz4l{L#MVlj3&FNf>r9-8VoHPsmV@R@{dT9@glN@?^m0ctqPAHLrZb;%j}svuty$3 zC}*qd9NXSfqeH#!_s6_+z)2ygu{JhC@hn*X7=r0ZsR8t>Z;^E3Ie|V<#o`87+xypqzxgCETB^MqXG^)_aeN6bwZb2T%;1m=7QgRymDr)zqA~%{0P3 z(ELZt&Q>KL@4^6_`CULQxy5@@sADw@bj6CXTiSz{d&saLk)-4p33y@xh^3;?Gl=r1w6Hruyk!TebmHr3P}C6P!S$Ffx?TiN051q&YF|f>Lwvaj zsODA~md6XqBm*$pi-GsA0ZSo@rknm!1d7+v@5)~Ivp^4MS2JQV&*Nq|HTq`;fQOd- zAO!upB%j$pmnn{?7PuDT)Kq)ui2&%?3@3dx0#SV%P_2Ybv_Q=js78#$8E9b;MT}y9 zD1ua(!%d`*ANzm+hLb-uLomai8Aj_I&m=cNv2G&h1UAL;6j6X{KrZW#08aof$UJds zA;-)OT5@seP7F6_=e@4g8VnYOrRbRQABsS`=vHQr(k=*cZ$o5br2x%v!}0G7$#gv? zG*D|YRV+|W98Xhl%IV==Lk*q)O7Zz|YC)oS2~dp{nw%C9NaAkH-}?#{22tdU_(Ktt zoTd#7-Dt!kWSz4rCel1llZ~Vrs5Xv9V1R$d8{-14Jt)al)5Q$%US*1C>pnqvL=! z#SC4TWb?t+h{McQV{aToQ8nz9!-qF&Rp!Bqr6WBQ%(lHejm*?Q4g0Ws+D-f_3;6UJ zYQ8Wbss>s!f~7m)i}E?;A3=%weY9V(;RvjK%LpqcKh?szIUAhztI!KM7eZkApm9X zSB%*w7r={mR$h6}di+IHGMG>DDKJ09+HxnxUo?<D}Q< zt{kmf9u*_=Jccp21UGUCkrKl+dkZYrv=#}@4L>d2ORG)z5SXxVXt5=B?eSJ2aUn*m?&S)+T|IlO+Mhym=c^ z6_V*Qz(Ux^>Z($9r2xBNiQAP^dL!CM$4|9G|b8?y_u%JpW-T3ac%X(Xm+w)-vc%y|DUJlyu3B_4%gOe zOs8_95=21O}C=jTacjZua7A#zb+@wf_wlFSM3b$|3u*(KMet=GpC|;(DN4&}z%JZfu;31?)7gM8@*m!-sxJ?*aR!fE;<1oiw zzpa;~a5a)=R&(ibJa>;@f7?nYHU3K+={thbBB~pZ?&4wII{~7{4I_2+2w(J=M_-*6 z3h`3w^yZ#0`O5oSd{c7gTSg_ zlFz~@p79S*S@pJt7Zm#ox9S$(=S|pZ&{;=6SXA2gZ@jAKu1U0hm;;)GRNT&PG1FX$yUVDNE5iKds=S4lcu1p%)rh?J_Q ztN9^g|N0-5Em*nbGns%iVJXk^rl#qy+^!0Gb-lc@C=(~g6>Aw=v(K41UhN9Bk; zAT%3I3eJmBh3SD3k(lF>xT913lrWX0`$H52Dt;Bb{k6fnumL=})O!u5}Z1 z8`Y^sKHI#0M|)Af-q~$T+sjz<&hS}K`cZ-QAM2c{0`TT|K_;MH7fv&f21FwXM1y}3 z8@|FuN4qWT_?I;dz&W}Z5KZXvd0`tAX*qA%2JcN2AM!Byt-iSI=k!jh0wLf9DpZ6( z2h*#_Juh-Zy`0iqHh8UQoRGy)C4$z(MAmj?7|h?xt3t0NU<}dcJ?JQEZgqM5Op5Y4 zx4t_E@BA_E)Qsu1dYKu zYI4A4GFy{K+XfpSCl5%=IG=#CT+X>Jnoyud0yTw5Ep6`i_jZ2nWN#M=Piyzeac{Kd zSQsoMZ}`;h%Za!;eZSti++cW5t2$u(Sl>Tj?BI|0k4j0g_@8z=>1WeekfV8Ncba2e z=88vsm*U{_WIo8cBOKp3GGb@EKHO)6{8)rmHWSjR$xl+14fO6Sml?ys@N$IwX6(|b;xUaU<`Yb2% zU(8b)@aeNh#V12SC6_EF-S6S-n8yphtr30ynoi9bWd;oAhAdJSG=xD;1{AWSEKNUN zrFobz=5GJ>*a)g4^#Rf+z*OR3-R5COB3E<2LxPc{%KeowiR}hS)PV<5=m43Yr9L8} z^|xFe9U(eYwLCE)J!?<@wTxQ~{jAY|Px)XuH$~_{cL2QY7mMk`t%$OPRQS>dd#$U! zc*S2YPtHD3J)nYQ81>>!0<_D2f`l$~B#FlmY^?aT>W^0_qBe-}i*(0C3Jn}2&7 zJ{^pyztyn2o-c6`mFf;5TgOhy+=39&k$ul(#N>v_*w^>hGCNml+o15`i;Y8v9-jKx z(DU|`WMtdd@cfVfv$Sa;CRAqn&Iw$f#ksmKvA{t;#5(Bre;l;I=n1Zev7$YURaN5< z?Pq^$q&*9yk(_(s5%psg8HqB&1D~2oXTww<)S%&o4?&1;VP-9|}B5DI=wo-B^ zI=cs*=*327eD;rNOWPSNC=Co&ssI@B{75z~mC=wZat7=B3?dGGd#7cn&5f1|sHD2) zIQJep=7Qf~tuLY8wH^+)_@KCBAyY}S=HuPI@Ee;gpQguamnkUkQ0Bf|j-f84)VFdBbhEJu6~CgFV)2-v z&^yA0cQ9dzkmF&DXEuF=SMmIfuhpZn<{$R0{J zMf8a=n5mPpFY;h_)(56Ei7*q-m!QA_6xMvNTEEbK-bw8UgOH=yZ*zdx%(qNHk~bMh zJ~qwk2INx=$p>VmP_7)F{3*0(sbwrKALNS~z@s`@yI}Kqf*??vn3pZ-wo`jE*Y_=< zV?|?8XJv1t%cFqT$0Nx=z`GQjK!DYUDQR5bYE2)l9&gl#z`)%$5ENdZeUsglav9*6 zmGYXly`7@X`@0Jc!SFjhHU4)UHBlc%0)HN3+wAD@RYBDUuz~; zcC9q3p1<;*azVBZW_dnxiHdewWXv|UfF+rA0<^P3wTT~we`*tGP@4el=0VLKYj%yF zwgjC!Zb13q&M8M3f~Q!QycVKB3`I+j7Um%rUc>mM&w&F0D4qG zne6az^lMqj&f4!@04F!i`SNj_D8$~Tnvb%Z1h;2LmoMN%WngwzU;_P)1?^QzWwb1dqBm$(7R<(HMO7~-=6A{+KqX*DmWJLVZ0hT zeqkVB?Yz2?zQg!8L_95f9<)krBZ-cML2{4Q2T_z%a$QzeP!bBLcA;D!ndhRzquwZA zwC+d!=@S5*WC!TvNEj6`Ps~)T(Ke`$2D?4_D{YByOlN)uNT+~8T&7_!Fq$*Z?)0HH z(n>*td*4px)Wg->W_c&RgV;mYd%KNHvVL`pF21cb0cI|+2GZ__X#Qv@=Q;rWU3{N@3?bdwUaLZUjYnI;j_9&xbbbe!GU8Qj`8r?UVU zWi`kP<5bi3AWKC=_UKYowx0He_hOLpOqwK;xY$>%KK@(XZeLyeH>v7!RFNc+W=P?- z@AcLDUs^BtssS&on{>sm?!$PkTm7#t8_|S@4?2e;cIKuYJa< zMP{oFntXs~pUx=rA->*cI}wl&+;&-_Lbjm(`71%eDs~j=^EFLEyH`1zYHu7i25vWR zPw#dm`$Xv&85nw~SHSJgh}Bn}2vUR+-xnmF5?H|c7FeM#kYQVps@NUNbNCLpjoVpS z;ja+?5DTLcLx8oos$6J#_(6vcP&a_jHTP5J3#U%;5eW8o&9@pYg#N za#9uStrn~RnEy)-bcTFJhm{kYAqP;T=C=n_WMGjGF3JVlV9Eb?x&KP{UuFJx@BVA5 z{L`8X&0PrW^jXf<4(lc3tca0jV zn~6EA`}98E&>eZ$xwpCHC>Iyn`W*ndrFb?zG0LLGes2R4O7OFw?tk!SFXfmIiu<*? zQM549*H+Laeb_1G}H>WW7sH zm%M+!i5K(*;3!D|Xb6;BC%iWjE1LaunHn(qB!4P&5(TizGRQU{HQxGV&gwH{)}JZy z@IwKw$%sRvq523b(Y=vy!s+#GB2cz<=sAz$hau4#-4tt7nd81IQO!1iK&98#PE? zQXxc>LJL~Erc0=yIw9cDdy+>7ZuhxK(msZpiB&;OS~$tdodCoNFuOn}Q<=>HgA$vo z4TYh`A*amKIHF?MAE3aLGJv;zO6iA3FX9pSgF6)W#FsY!$`-@hG@Q1$rtZ4JiMZtL zImd__pNRa&q1*lW<5HozSFX}wF;wi^oM4rA1*x!|YKojd6Ij^QTX+C!3UgR~j9nDy z>fG6PyPqd36*~K|?bOA;^qK;CyC@)Py$A}H+8MNqy%q6$^M7WS;g)odbb1d^tK>!2 z`z#^$NDTm2XaTi6jI;`nnm?m`V8?$dy0a6^SzLEGdLGAqJAzPX&XZE1Id;NNp)(dZ zCHfm_;Ne#SRTw+RpV7@KhaY7HAs5h!<_JQ;Lh~rnKAOs43;Eb(R)H)07Kg*Ap_(KW zA6TaSXZjAH2V6|dA8{(gtQ2H&D8YN0UGry)*n?5BKU2Q81Om+&Fz)k0f}|C1dGFKf8ngtBd#IqEkCzsFd+MWWGtd%&M1r79% zUM9j6st0x+CW$0{cL8K{)F2HYGqoTCKsxuR^oAeYrk_Mh{ByAj?Ybu!f0D~%*dM7u z$8>6CfVH~Ebg*t02?*=_$4LoZ=w_ADjGF9FOO!O>$=;ddfuiWx>eiLi-H*2 zE`?LV&!G34@#qQ|lQR$OqUcjb;$UEyxrpjxxMkfZ62wRpzW<7>fOTdV(Oz8I*@K#!#fcnEIU?QCF&C%jUzeEkXrbu}r{$U(I56oRDu}6?0 zpasSO#>|-TpNvB%K;rnKF1*L-B&3+Mz`GiRor6OJ*8r327IpHQALy@&dWTh8@S_5} zb9DCrZdK8=V2fowXFGtX^9L$pAtJ^CPGCPZX1#&i5<1`_jl8qRga0lk3|y}wretdm zVTPaCz>Wruja-m=IQc`xNWiZ^O)!s4goxi?n|=kdSjWJSM;5DJaVv}f#`+{q1E)~8 zPJy1an36tl@#_)413@9bU?UQJbkeH>MtO1*X^;D(s>^c03+unACI7r6 z#{%X#G7qnT&KRP%sm9RYr9`r$aUbviBoTKe14}FD&IN{8qvJ*&z1DR7xpZ?qo&;9_UD^i7LJIjoJ6 zwB#*0$@D2tBWpAH>(^WA83JmTd#Wl@*&r~^fvYpdmaXd@^agO z(k$Dmx$IK;@H2fM^n~77f=gcH<;vyk)FTS?YwtGbmnk*uOp@<-&)nRZFVmdqjFOG# zm$}Do121U55KwqIj$N>D%FZPxZ<)Cn@=6hfCbIi`G1F8{e`$j*^;U=dzNDKFn0{*J zKE*jA)-m5?czLInI`_jS^n{fz|892$=BaIY>xI&pqT2TC5j)-8G$&%h4$jqm82u zZ{hqM%Du7)OYL;_VYhI%(+IXjz?iA_u7?UMd~ndfA*X5XWGqqe}BcaBD>+~ z(a6d}Q!%p=tm%ee5`T@O;#ZB{as2KN=WbW2G<=!5Rud?y2SK^wL7StbuaSE%Bk%PEhL(7zX?ZtOfF1jy(SYl4k@dNclxm zs7Qd-Ig;lW9S6>Fae*Sjxhgqx>S6_M4N32bKLEf#I3?d|+nStcj4Jn@p-ERadc>UY-LtrkmLx(FumzhVtN%uzn+Oazj3_eC)|>4LK&4Gpox>gJw>J zZTQ*g43*ZG?0Uq)SL#%oUiTA;5_Wk^O8XqB?O5-uGb6}eNZr zQ6P@D$3@T33WNbZ)HMz1#@{UC9AHKN(xa!RwMHbrFBl!Jq(AIms!(MkNL7%_Z=z%J z=j`2I;&=P`{boz1srkgXvQ6D*5Y|7XV{TU8r|OsgqiaDYfceQLgjgg6@R8{VD^{PE z<$)eXm3)owsHo5fc z{gdTUwXp!gH~u5xrDs-=9t)*66e$Iz?KjKnAEwjPvX`P<$?$avVTY}ZdWZ9UI#rtP zDbkgxJnv~h2Ot}CGVJyz6^lRHgYYu2EWFWT(5*gtc&0)& zee^SS_376aW;>O5^>^p5HB#SVS>5c2Tc7^kpIMR39+s1Rw`WDzV)+ht@I?^(uc`zR z!gIc57ynj2JOWUDN%Vra&!!0yR4>z4Z5OU`BDz-wXJlDRW9OFmo?z~~OH6-NbWhP> zLA+{`jFM${klnwT7BC|3E>>d4Dyg1B<#-2i(4yJSfT?lt z+b%EtFqKm6Q#(vI33{A4z~)J16bT0ZJkpYXd?N_qOR|y*p7Uov=JDUsZK_32PetVy zzN_kIv>(g}W%M;(K}fD{gOy#tN1gZ7G!Rf3EYhPPyz?!y0`;wIxk^>@ks^p-NFg=c z#_NZUk>X|vIu7=`8X5TgZyK3f6e!xLpP+wz`eA?P`H}L3vB-UOR!KELy&(cJ+2}L8 zYHp@?TZddUo$56qOrr;cFA_pJ*zX^~?NF*0VB;%B3qxok=cxyFx&R~StCG8Q6dc)( zPw(*$o)RzF6Nmh&BfxG#35<9#if4MOviVBY8w!UOze=v`D;VcK0^o8x*!$|^iG3IU z68?`Pq(GYO3?TpIq8v(hL(JqoxHBg|ytSC{ z*Vfuqk_E?2%Rx3e|C2@R@8G8Z(vg4{#|}9OK>&Ovc;QvmrvmDeC(1iFwODeJ1IA}o zjXE`+Fj{+DwO|R9(<2=B+86NJ`}t&WqV}%+FENW{dNa~T$*h5a4#3DZM2H>y&E1)a z%_$)^wF3}Eb3Bo~RC$5ibF8M0gH0fO{(04Se#;X?3V*o!j=@SOA(7O3Vd1BiAKap1@Zsm>_8eBr{?(+e=6 z98sHZ3Y2qW@a3C53V1=KWKuF#!3Bn8>|t+I?D_}KBfGrn3-Fy>uqKrd{^WLc)ZZO6 z2UMkt_&=)3WSV_yfDw!Op}lwIjD2mVf6l(li}P99By8%4P<@9Ny%W9{f88w{*#DV0 zW@_BdxLm&wsZ(k0mLiRQnYsA_ zfYac6WlkBmT~mO*qXTF(^y3nU==cP#bVHuf40v7sV-l5JMor*;)2D6n$Uc#rbgtx; zD%0Qemdw|qr-vAdRL9Wmk!7fNVp=E%Nldt0#-BBNI@cdMW> z5Z(52vcvRy(kU&p;TQ;)x=l|8GyHGradsd&HB9(wy=0wrw2rVp6X_pzy7mpGHRIHMnk{qc~m6E^#x2Q|BgUyX%%m;p~rAnY|Qg+5Y>z0Y-2Szj~?O z`{>=Vg;5{F*{wzOW4$O^Dm(&t8blz&hv#L$n;qF|{GO&oNR6AM@U3gT#IHJE7hZj? z#uHBV43DDj^}|atvME~QGWj0j8F`#{2Q5)8+lSKZtsdF?^ zl6uu3@OauR7c(AVFnbfes3pBc{a^h~2^xajXP_6sfIG_Bdit3qfE0nho+6B~ zMVhrbKiA)Ksi#3uAfK1}Ipe(G$;RRRw?Xg-!D#%Z(b%aWj4K9^*DB=2rG z^B}{Ji@1(@%6~aghl>2Kt@-;a6DI|jzOZ5-FkB8WJa||o1`x2OW3_^Y2u1dE$`ejZ zEW`2?@Ze>v(;%TS@^7j%(0`C3*pClfGS5W$Gvy23o`gqOTWa2={un?Pt%6h|^$7`N2@f7qL;g_=-PO0xI0rMzGRe7GKOl}x@T?@vM|rYmyi$*%&I7Dd%GxRdzyc8CPUkv!`=RdI zriHp@8?VR&oyU`tMv`bhLL_c76>VgraMzN+b)tzT!aV~>DrT3Ph>gnJ|K!!``_O=N zL1+H6!6rOx&s@z;6|;W~knvTVZLP}R%&?{6Va3V#<5pf?qq?U-nuWUC`dM{34Khj^ zKYwcmah$UkW*^5KH9u}rkbMGc*!SJ@k_dK$XTM`1y$ouEPVXXjFg!BR(X*|;6Oc#gPzO~sw4_*XoQX2gHr~!6Jiz~ zl#TM54Z0qB@gsyWUhjZb4pxSWjG$7~X1RrpKWUaA@v@zIJqlPoY0H-eTGZD)*xhSh z&CUHNseSSeF*yA{g*=MaD0DRwouYaR2#90`xKBWWq-Rv}8IV(~?Rh;sL};Y`rd5YBOoTl= z?<<11f5FuAQ@{dB>VXb<+BKk)9GrZc0S&#Pd}1ZHF8cCa>%A_Xggzx4S$qDDnOm;T z_$kc`#K11vjn}B*59iJpmfJiEYJ4q6JOApwe*d$hO@S@F&Ud}kA0e5kjiuznTryzK zz5Nkcs0^!E*L_p4oZYjY%*@!41174wx5!=?A*`p!T29~xo3Qrxb=j6u)ODq{K)M_OYRQh?v_Au6iWUkXeE|L#xnxNJ{-q=L;0GLmobn9;^Ec;FX?K&p&?8Lz>LytpPX2lq;0F0zhO|Xot5KocFDlcrNgbJ)+EqsBL}F z^9)^uzu7pv3HIUc`4 z*BXev>FLL$l0ag-zpm}4^+SJ!0M{mJv)tdS$FPwhrM{K6wK4-B7H%aI2Nd)$O~q&*shk^TfCb_*UG*z zx<;J7l#9Eq^Y|XiI`L?k-FpnJ8m}99(C6$?ZU?WaM`y`^awizXTBd<%T0S?KUc`zS z>|2$35u~8YysAeV(RXRai?oL3*F;

bC`n4G9re!h0ens_P#jBvfU8aL5cl(BAsZyF%pG0Kd6t1QsyasQKB* z7}ERxIHnNETwN{1%P3ntn?U~{0(C@DRxM%Lpji<<@2gcjtwV zki;02NA4%cDRxv|FE0_zvLK}-a_4$3#Rm|3_;Z-Noa2L~T4Xw2->y0B8qR%6d38qI zno5|J&A;ItzxjJV5xm{qS6_d&FPFg&iMg$Sc6PRLpJVM%lb5>@l z`f@N4>E^s{6{0>gm_=~+M(*jigjuc`rCQR~L`az3b4H%7l+U*+amd#eeh1f}CNF5f z@GP|dh;a!%@m1iH*>a8jmw{U@bNx`kt+t#FIb~`5vHNWuT zQo@agMzD+k=sd(ymxvGvy_dE9-0_0G(nU5c{&eNw?JMb<6RtvkCdrVFYi}#$R5&p| zXd5#mS;1gckVIIsVaz^pKXl7Q<*${ak@224dm3hT8Rxm;FERX?WLD%~;np&;3pg>q zbHPk$Y>*mFx@?W&9LN`%8^lDk!)2B)eaanEIH)cd>Xz$Hd?A{@<-F7nC4^7JEHYq< zR>E8zr#pdvNsJ#_)Ybe$zlP5Qd(#1H%ONI&Su8<=Pve1OJ-!t2j(av$eU1uW6gATCB@wNJf z$v=U1J(#P&ll5@jmo|b-sHf8{T~SO zyU79nsvPM=ie@V{ZA1FlbYH(itdL_X1+Z^ z{gwwT%G(9VLl=LppfQj>H(x-5g}8zEn-8@JQn6!Z=^6-hR#5T_17A2vL7)=*6H>R+ zAD%aGWT%7Gtehs@zVs2YoLH^HmI=vB`7TVp2c&ofRWp3)5_W`7sp)P5j3|mA#=E=c z1=$`Z0!uS`oxX(=90o-03Y;arN)86Y`lEKWwGc1_8?h`)0Z@sR&bxqI^?6-(K=ViT z(+T9#gO>R#5!8FcJ7$2M5T34++Ez%Ot6<;+HIc(N9`+K&rNt85KMz&6zCSL{VNEM2 z377Ql!Vt@pIv7WK>#@F0KeYN9{V9-i8M0u$8{9Q$e4pg)Kw~TIHO&-ADF!Kmj>hDJAzF$H4&?k zPnbx@=x${Lo9yCue2bm9jH0^%85$X2cVWukmgd?wmZ<>3VCVOIq&cu7yEoWmNT&&^ zJi+vDq58K_{adL1ZK?ikss2CW{$AeF5T-W7Y~K@`62IB8M}CKk;BLe?4ixZqMx!=d zW$l@eQT6t>8=j4zzGSZljr>U8Kx?g?$2$GZ3!~-Hn=A|Zy2}{sytb<9pYHg zorC)HKEx#_LIE~tt^a|B2Ri~c(L$^`skmQ6yHq_kDU1RU0Nf5Z#sB(MJRwpVL2_Lt zBT^^zAO`2jWGJ>oQohL#6{j1hr@f2L@%fAk=$y}k5ujy(} z8Z&wxzA#u={p7I1=+{l+MGHr3*{!VnT1-Li;90bHBx&Dd=AclT*ZpH z@)Yzd`)?to_ER9EGap*7_b;gQS16n!tjJJ+;QNtK^;@Tj;UEFJ^~!WtDHX9swWkcio?>Po(%>An+IkK< zau!O>{cm0#hQ_YP?)%Ty5Xoa)1_h|hVM>vp!Y8)qJmm%o8;xHOb< zIe=hsmD` z5<*BQ$ovME1d{PMZ325dKM~l|3D{$|T`?36Vn6Sa$6Bz#x`5q@7i5v6$hgDOCFaV- z4#ByeyChFA+`1R6y!z%lottY@XGexI+Rb8i-`Di)w#SDu8t;a9_(Y!doYfRtYhjZ=H_szZiQF`s->6pqU z#X~gzr1vI;*xaib%SQBoz|Zu!xz0)#%aL%NG_L_}=S`<(W&3to=b!YMac`xmlisZ+ ztJAiGoR^Na1Cm5AOdaGO*T@VlX9zFI4rh*S#!rSR;3kjleyza=x1q<7?175 z)SgQk1sg|;h0XhRuBwzL(uAG zHVVA?br6SJSqgX4i_%6Qr;)2xXcw#KBt$!YoN{5IV<&2IEd_GG&fdS!u_*(~fI!P! zwkz7xaCtBi3@Vf{eR=BBCfXZg7@9V8)vLwEh{NlW&+*IW=y8QQvpSP5n_dGrlep}; zVR!T8*u|3*ec#@+W|EQhdUssTjnErZ79MEAF5P@{#rbW`QIA6JGQLMIDlaeYo$Yi( zfS&fPo%94l{!S0UpC%FBRpzeg+iPQnI|W9#xTa#t8ienW?%HKB0sBL)E86O7m;vPk zCU?6r^A7uo61l4g0bO~ugp2M;i`eI_tJmEppKHf&$Q2w+Ct3=4d}SA~=t_E3S%pgx z5txm&FFA%BM0<|63ER#}?}is|A{Ga7JY6a?4_2M~KfOU~T55$vo-})>VWJl+Bd-2a zZnDrIH~^Wt^+Bzn?!JZIf5K-*&%ud-gj<%>3rjU2(Gkg;-ytNtYP1SW?jG zZNKElMJcYTh@Hcx&c4d&gJUkQ4igYm0(Lb^B#2 zyG)mcXl70sseT#Ow<9T>T4tUtsAdk6h&5VX6*cE{->JxuCAsZ2=6HuU7-DYID1@2e zzku&I?JlVt6J2r3y>S^+3OhI#pCoO3a&pUHtfK!%)A*=1?IDJTUg&X(aKB4bVB1{f zLY&yjJH(*ku0*rJzVh}14hT*AJK%znx1#3j+4wXOG{V4=rn{42D?cl7W5aPPzOO$) zsvXP*LkM!wuphtWVkMyvUJVYQEi_m$q@)HS8x_CGB((p}sSC4-zHJ%A4 zm8e#-$o_n=1}^ht`lI~NsDb4+5jrFFnep4s(OH37+ocGf$_m-22d23UzCG%z*|+=q zEXD&Vd9ETozn$#eens;H)fO{{QB8a@v4AjE-2FkA-Oa?RjAnNlfL}^(_o*wWhf0}Tw6PdJD`H=GFsDG>n)JG(~2gMiY()q z>nY9L$OtHo|LuTx*YF0vBC1XfBX<8_^4bwTYEKF}9aX3}B=K&-MLv9yZ@hZd3l${P z8zwdHXzkgRy}3xEoyXPDPh*oaQm&9bZuv8lECp|wgmb}G&2OGbKaztQs$;VQb+${< zt>r_|HQXC&w9&wNu&)j3-NA&Cfa6~31&KnNx24vuRal)w2Jfak&%xvH8Xe?HSwUQ^ zSGX=;&W*vDg5t)Z+zfOt$=R@S>z)VN8kCw zBz!^7!Z|e3&sh$pCQa85Qn9#dd4vSW+x!q+?=LevTrGDV@x!&a^XSKVrSQ2KKifNS zsI+d;@U+~K7}R!;Y7U8&$A;giyH|_09{_HFUvm9$=hT{R1}FxX!dCsfXr6Hf;xM_MHz}yz`wNOXCDf{D=1j z5W5)X)U3>%l*GV#{KlIx;WZ-9pP}@F`RJvF%r}%VKTcgWcwvV-U~VZTIcc!0LmPgM zi3KVop55PUlp{Ym428!$qG3j^h2zP47l{U%J|%-oqht=}nuEzUrv!}}SBOLLh%ANz7lA0MHlEw}v;#gDZM zw-QB>gH)Ix2&_#*GfimydHV;8Ei` zpKuYuKNAkkn60;va*aEleri4DIOMIi4Nc7T))jmp9NHyaKI^S!C&<%NDhTzvCOYmE zKA^~BtLExpxOI-vBkH-GcbHCIh4F@fj^J|F-Se$8>gq`RO2|B=oYW1Ehn)-@u{m(2 z6-PP5^!#{CTv;UbOZ$kI=eZ4|{Pvt;w$Y*mdlYvDu6gflusVN#R5~4&$?)vB@`!uM zX?c!=A;Q-0SX(~STYk;2D63Av%u;yWcOQG6=RDd%X<+#W&uGh3ovCsookRw1uUqN- z`S&C{{0BE2Cy!*I^zW5Ujq%=)td|P*lQT(yC=g;yj=rh@oC)zO+{%79?CS}F;GG9n z@VDTNbZs1)_Ct?n-{O)C`Lck^?Qjb_#sI^}2#!+Q$!^7?);}W)(=5W_DG64|M&*&G z)@u4}0_DtlC~sjG&SO_?h2tOByYP7d>ZI6~+l|{uHHzRH`_j;gk8QcOnQGB-x^B-tAc;Z}Ly_;k5 z#YlJDs&+x-{H7ShNXcRN-V}cK z!CbR%5R^GD;xNHBj$ycoR-(mL?FWVl*epJClD63znjBP$8-3HB>u|Al_w1re?b)g= z`5XELi`Ci|Gy3XcIpJ%(%Mx2UeEmjTl6A{BHil1{t<-a?(3-D&*no=*Ik_k>JF1$P z`wx9K6W;v#s8Zsw42<>@Bn}@0a_8j_G!RFLiM;HokT@bmLa?;&GKXI6hw4|3Cxzft zVDr0-_W18&x9BJ(PiY{p2po^Q&-I$g)$@i8kp@3I%;G98u=dsr%1&i`xRC6XBPne6 zc11hiDE?=t*X9lSy>*XeOr$B}QE@Vf1DYG=P*LZhf))A^KV$|yau_hs>dblvj6N}& z*QR#c4ksCmZDNQZv#+gaXrI@KxGIGb2{=iDf`sJDP zCm)=TE}ut*ACNxU9?sbq+^RdU94M?;`sU?2_wEe;`){@bB@A8>T(sc@+6wS1V)w$N zrr*9YzK*-m`J}SVjlarMno?4D0Lkv?eY`g&-nkne6Z&lG#v6SzZ~Y(UAR2ek zM|BMq1ZVLx zaC_NCxHZMR2fSIouHyOl@We>9(Go^ich_#bs?+PVI_!CtSEEQvO8xzuHBHyq^i25{ zCoIj-?D+*4cbwart+0stGv}n5^;yT|rTbW|$tCwzVRu93plo=z_eM6gR;F8P=C{!P!hE;vJj8-T=&YYDKsW!K8FV1$4>=j>p8$?Z;(W8GMa+2r) ztP2lqys6NkIwlT|x-8;l_s@K}h!rt^0h4 zW7f})<-wqBVYAcLT*A@E=a@N#ZKDt07A~IDstNZ9vG?cjVo;;5xih1>H0I}@9??|_ zqU0ACzxQgj2Q5SGamJzfb)sVrg=u#Sw08KlX*Lv^5pBCf@`+jDyFPOP#fC5ilkLM| zO34AAn!TMhJrce|&IB8evP!I8?vlZvcC_XGci-nWWy{;`;oziS|K!CT*(cw+xYkd` z<4NIdJDZns=SsR@`55is-Qvjl<6^UdnnxcylBCSTq<0iO_m{l$FtA`>Inmx}VPf_n zX~b@Zi4&~HTTOh3({_r3QMr@u3e=7SGnegPNGXIxJFhkh?7-n#*;=g_Xy_3|5Pne{ z>+Vo1Zq_A*400W@6@)|w^Q}f~dK}x~_3bgRdKH{QovXT?&lUuKud9AfZ@GHA&FgeY z$8N}n@WDj5s0h{M>t=qIko-BuuaD^IPPcw+IjxE(BgJ|SNyAeiiCcoIFcGe}+dQ8j z%|5&m3k!SR$y-S2WsreDcowsAqXn_?lMch{FK6edgw|{N!v)<}`pmVP!XnP7N#}nb z=uuB>^zOY`MU-CWt|~k~U7Nz_QLI`y?0vyB7xLJpdyhh3ZDirWn48s1Q!o0nm9yRq zr?c#;5eNKpFrD`ELkE@1;0S86eWu5w(68J+24d0F_Pr)0oLO5P=_-k-i55KEl|F7k z)#JGlen+9$C*vL93_czhI(P(F-Re-wp+8Z%6<1SvB|m&+OsXp?Fo@U#j}@J*3XrRR zsWmyCnGkTPEl&ONR@v%k{vO+8t^Och(X$6q^&Zo(r75s|wlNITfMjr&ICg+h)mbQ| zdo_pMqrbI6t*PFaJ(SB2TA}9y<*V7k6I%~u#|_-6%3n?&Y3kM`@1)qFQ8ocE5|P!#y`BE31@yyyg3%!pq@ic^a&(-c4nzdNaDh$J2A7OKie5 z4Qb#C@sQ(Q*^-20p1CB@Y}c`0r&`Ug{R?~2to=|wz4IXC+XM+7NxCG2`w_{RE>t{* zy?z{A#Hq`JRM5f;V3xalcK3GGqR>d{$pE?$?jVNeIbTG5rY!~)RC4rdPO7DFwLC6Q zGo_RiUL%|kcOrJ%5?$tFE4Om>^Vx1D3L_J2RT-16>vHS!ZB;Gq5%MItUt(5b+7iy3 zIWt!sBW=i>xj!;wZmfQW&#Wx3!cc#Z39##V&4os$11Z1O!MF!@@gYCoct4%mXFX%o zyk7S<3I6l+1EDoG3)1v}%)!J(x(4(KNsn0zy_agWZ8q!K((3(}gFBT=GEBCytp%#k z30Wun0Y-0W#KCUEy}MBabz$`;HX=!Cjlsh7g0*53e)`V9M#>PQxB9k`;Mj6H9Nqq$ zseTd)62;)X!)cxm5sA96F#9o0gfgB4)O3`La}6qRY9pc~Dm}@tBdV+4T{IEMcCrO1 zbr))6m9>6c^*04a=6+Go{?tCk9#Bw|vSu;-rJYWFouoI4Tx|Pe3Z~N#>6ULYURdw5 zS1;$R7uB>m+s&E+5fIpkc_7H+tS(NOty7>oxt{^&^S0Z(Xt+7B_IvFNLOlrs{Myp{&c)l_>#Xs+BTx!Ih5?$F5~tk_n$VX<8-n3n zBQ(K5oGAh2%5P4>k0)4!-d*p@#I)Isk!{d@?_u7cIWT>eJCqmGUWnnxpbW1qB#jur zspe#5rdhVgSbwQyd?-we z9bw-82!SF_0ed2LU^-h!4UQr5!s|N7r7sKSMUV>uWdYl`Q_K(EtjSGgM=e(Wtg)Mt zE35SSp$g-j>!{q4Z9M9sLl{r)(jMT{7i`n~;uzB(_cv?EPpdB+tW4({daC&@KdZEu zZMmTSBm3lZvBK3Gl* zV)BcL=}7q$5EswrZb-ZY8ILG(qPtDm%l}q4R7d^B_KGpckd4>8!(T1`bmS1}dt9k^ z?~_J$ew-TnO+#%yuk|NG8G?ljq7$GL<;?VAcDeMSrtHdgeKo=lmQa|s)x_r<7kOI`Q@9Ahtg+S+NVRYDd zT+$KW<`6l^)21?b*d+4e!84I7(y-ZTfON#|(6z&Ay&kAtzXoIW&}gdPi^TSi&)!Z= z*F3Ul8`JfDI@Nfx%ym>`IY@G#+gtotcX>u+AUCg6wprS{*P=J??#oxwQi?lT`*6)jxnwp~5c@K@NKHD72+0}=13d%EqAW4+gr>Hy_9X!!Y(04Q8 zf^lH14(Jb#lkXT5ROOYHzEY_pQI{eb#)hTrz8=mzk$S8Klb&q(Qr-rR0OV8QuuYD{ z=MAcLMt)`y^YvHNvYixwK;}xlN4rOZVhJP0`7rKtd7yfw_n55(@raR7aZ&f&*_Y3= zECVuHUS4xKXbVY)=2!sLpK&BWa!2aMXO9#CA7&Ul&=%J*74FfJ2S1(%`Gm~cU*c|w zamU8IR*r3HTu8bZewK+vcXtfgkv!Xc((L)iT;C&Ad-~fcd)1p)*M^2{bmT!?+Ke|f zJQIe0+5^JINIFclK8O~{m$e3XSHz!WVJGR5d=n%EKGyeVnMtjwPe~u+d89Da=J14A z2UD8S24j%*{#;j?h!y(jnF;3xfhya9PHyZvmyuMdsMF>}vF(NgXTw}QXWuQW&8}vI z!AzEZO89+joen@NQ%Wv`QYN#;WMX=4#^jP-3^t5zqpT{^7p{Ba_LrOwixt}1)h8{4 z-|#Ju=|lD>FD!NM*u`(JpU5^!2f^oa2J6-Y=N@n2kYm&UJXqM|!5oRiuHTlNnt;sL1mcRpb3WrZl zjACGH3#K~T@QB4370M$+bz4JVa{7!a!uixT%+F^IRHQ-(`3?w<6?F?-cLh3%OvuB^ z&PQz_$rqpiZ!*NLiKy-JCkM=8A_SB>tDG1G!qIc6L3@-PcQCI*lij;^37kS|^OLt0 z8;G1$M}w!=*vc6_&`VX;m>M3WG~S@j5T6=SaWt5w-YM672jok84}NqtE(hVO+xef~ zv^dy~<&NQLHpQ%jLt@*#cFPiM{v2bqcXDdpxWcL?4a--WFF7|RySK)*#~SW7i+}_7 zk$a_EgN)~H6xm?kOH?RRgk!#Onf*;)XRT0C%N39x&VtL-7(lxbpDjm?x3QI)&Q6KnG4#25$DBhGHCs{^^=Ri^Q`6Zj_H93uqTVLBI^s0WWj=-|Ize1`|AE96mi zTOze8@EL%PCZ$z-LDh`npUd4^XS6fgdR);hXHwTwB?wa*d`@JCou6GbzeTubBUgUxKJ4HfZn3?j&U>j`dQhqS=Qm4`Z!#!v z78y%vM!Suq3rz2fPB*2)eRP<$#cw+}J5?0VH2Nw$DmgimB!_4tWH~9T7r9p5F4DHG z2Zb9_%42N^aR9{QeavKu*{J)xkK>1!o%t|B)K7(3$8zk8JYB@#Qv|e!uoq zeJa~kLG*o3#2Ratp;bIYcUq+roS1+|1X9)jFgn_vELsk6`kzXl&7p!<;G}c zcQD78`x$eY+B5SN)@g1}^py{l3RF1I-7v39!qyKoms4Kd{~!!4*(h_EWMyxbyh#!$ zr6mb+>-=t#1Gjw85qI@`+k8;Nb@%0^x0A3s2rsgwY$1>_j*jte%eWC=IinhT>9^^@dpEXM}(jhmB)`TSrRnwtld zzV%-)q5?-t8+Zr^mLkAOYl>d-CpA5GR-403xr8&iYB>0$*_T~u#mouV?DAZDe&!@@ z!tv$UaPdo>0-en`1Ul$5msvdL%O(&Me~_r{QQGY9W_6zOJ-AdTDDI1WQ))99{bk%f zG8iS6DZBM-KS$Sj;e!*nqLE`ZAHqFt9}C-^sNNG0 zo=tO1ibhIZM8dQ;EG0@p+Da^#W0&8I9wIZ z#(vdrOh9}2@??GeY}p;u!Gp*5NkQ$L%-KOIOOX6kp5be$X9+v1`}nr;nJIrMgW)Bf zHCp$$^xvKke(jIBb*shY`Cw&}!Lh!UZ@K%P{MfkaxqR1$L8Zs*Gu%r94kjB4&?eiA zY|O=)&A@;`{_z3jE8y{-W%=x4Ou_DH?8a4#t6pYn-c$7Z%NW0R3qjAOvg_YoDO_r8 zZm;n6e(;Uv@q{3Lgg0Czf$hFL#6Glg2=3itaegOGSpwvRBJ#$-HM(kMH5-EA_Y!53t2CAhWCWAMQ^Y7Zs%bigawrZ*5$apQ zR}vfBnV?kr?Hmm@A_a}n^@-4r8w(rk^DCz8tVH;7i=JmRvr8#(m?#PmlKM%ixslDa z3ocQhN5?I;!_Uf%)Wu@?^|#aBtno8=R6)D3d#T5+3HhPbEe~Go@%Q)tnDq1u_`KYo zE6aW(Cfr74@N)13D{!w%CciB8lcC(*+gO+zINI=_*?9((h3mT@sl`Gz8Yr(EHQ1}U zns8};5iMq={o$8Kv!634+YayUJzUFlc8$B+IHNmR{qDJ)dsu%q>^&ALXw}JsuTD6% zVhdx+^okj1(Do~Ulx;PQ2DXb%($U3Mr-{gl%0Ct1;6dRtkKmy8Ml!>q-V%}Y-Bt-J4=~^gYFG}2v z6ODA)A=q%2>h{_QV8fe4*6{}Q6JGb0^Y^#%lRqUqI=%u?u^G&YaLn}RY0xIh4)^rg zjInm!eMLdIo_}>aM?T)`$I6(t+6`>ahn@{}2A}dnEJ|8n{pTBHA%WCW^@K`-Iy0#} zE^M1uHrKdU_*EXk`3|MaQC_|F4~O_Rn*%AGH&(~?99J2TIjy5w6Hdz;D}fv1KO=opagW{g zZu`9RWYOr{BK!GJZ&U7>Y|cl=6GQEF2Rc#9Rg}d|??8m&x4R$Lo)MhJQ@pB!0rLK{nCkp&1Iyy1SPijRGD4YsREgdeuLjf{1121tas%8LrQAM!ID=X(* zpwH1riLPR#1|r!t6GTkOWu7=aphwhU+Xu_A4DX zF2rx{jFvdI>X$s+c)VOVP#d~T*Eo#(Jg=4NW|!{qEDSJI8{atPUAI#ZTgW zb{a(o&6CF#4VDjPf0#K2CV7l$DouK`&18qSB|$90Y6OlGdx6PJmJM&H^ z+7Q>>@&p;aqZ7-qvXqk8U9|UBzkF?gnLj-tHlN zml7ws2ud{nTasF&LCtMKO}p!ZHfY}uJ&9t|I*a3?7r4AWdlo&?Hc;*4jT8hma}|O- z#Nq&PQQJz39bt60l9S>3U6Y>dW_G%`w?Ubx^`kPtLPe|GkG)5NdM{fNB15Qgr+h*j z#hdVdS-O2koSjlq!4oEWhf;Df{n|Q_Qv>B8?FktRA`p}?WPT~`&PIjx2;3qL0|i=F zxOScsqmh}1Dq%8u0G^Y#=i>()(4Xq=UlmmJWj)qY^s(L7+CK%*<@qcZ8G+d5Nzi5L z>&76R#wW%HkWp6pEFTL2ns0I}{el=)>=H-8-39=0gZj-k7G#0yGbMp@#B0BC29@=G zOvw=^;i)xsj7b1isC8k_A7EE~&z$&JOsFpp?VB=K?1wf#rN2zn4C>RvXuQRNRn+$7 zRA2!hIu|{kx_S^p9bBYlA$Iy*M1OX45x^FdpGM9B*sflktHI4vCRa*iL&&3V5^D09 z;{LB|^253mNl=<*lay*CDEAu_J~B*>B=uw`x(x^k#3pM;USJ(8KA#Qop8=a}4w6a+ zkb@i2QS9$y0Kk$5GC2t%^FL+#zpBIRp8o|0J4=~NQt&Cr(lCJP){;Nt+gIt8ifEUF zhbCeE;h+c*@*t4p6JU#sr6PdGeuPw$uJ#D^L&K-yX^9v~e?bQ9hN;d5`0E46Kusic z!UMpJM;OT$c?g-3N!~kjV!(qK%gZ+a$Of|S>qMA3Y-bQLLfsi%AmCqqC)P|AMoHMxcrQ@zEf(4YWz$;|OBKqCuv z?xVmp029_gn7-I~3Qimf>ng$il)q~;MeN7}Wg2)u4V+o4po1hpSgcS2cm~*Kt^;jS za1sDS-ehN=`V4a8){h*Tfi^CqR>+@#8q+R$)bXws;t0XcCd&fdJ9ov zN7y|w3x=|7;ptqI2$ht2T0_dlf*cJiVcXK>5>CBper_l+7ZAcRz4S% z&uAlRu~0YC5&(^ZrY;ZGx<3h@HwnPm5Ij{P*#f|{NI=_L$nO9hb2Azq1*qH!oS?)X;N#YDEx09K zcuP+Gmg^T>rWv9D)SSVCfeY2$EjGmf&~cZ@32GmpXpj(`2Favonj_y+1iMUqa);_P zc7#YLP!_=F(MaX)tE%^5JLGU{>Y}^9tC#~Rzfh5TZ~&MKkLP?SR|8R8ZGe9rVV~H} z7cLRNB_b`Kkp9LCudMEY8sVe(D*<+Z0V9k1#{iOf>>~S${5#DrNQni4{bMm8e`pl+ z=^~ROr7Cax=~qDA$7HVYcFJiX`bcM-Nqw$?@?T8>Ci2&~l@r|e*+3fs>Z1RfLponS)oq@A@u@kL~2L%YnRAJ_ivFB zn*rd=)&scb3_!_SIsn5+Fl#X6l*w#Abit0E9z1rNg;G1?Edjxf82ec%urLC%CgO#! z2W54~Ow_Ez8^0BOc!B&WuMCO$%q%^F_$ib7H0>qCtU%30sVJ0PBKjAEzJLecn1L$7 zqR*bX_X#55-}WA~l>m}L@gvnb3w8C2;7wu?^512!MXZ;Ji3$PW){_HOvjK2MC87YN zL@;M{hK_vBAh;|G3Gwd(LYn!y_6h>Gk}r*9e;*3W8Kczkq%v&BFYGNnn&bZ&Xyf-U%mR-x|1npOV$0RZnN zAzuU)`-6fGOR}mkHHBbX>h*A-veK1~+!xSD?UImSeElqp_5m<6naYKeI;Yx*E@2S#dktv5*Hw zH8ck!+yJ&py97@UR0Ux|MM1m-P_lhJy<0|TB;1qThE#>nJYcx*Z^iKf#rI-ty(%{g z{~$@vn%-!?*T5T~>cIsgN4`$Pc ze7y-8l9c@m7@I-a{>m$VtE%z}$(9&EKDrIY^-w!L0G1>=&#wviWiC3|7c%0&Og;a+ zT@y=K#ao8o5ZoQ1zrA$bc4%1g*H7JBHlE%(Vg@$ML#^F0CA_2^7YsJ$&TOKZ5czVi z{{Veo81g(320--_#9jcZhwU&H*955Oo@pb}LjtlxoiFJfC_#$monf2G^S35o8<7XE z!J+_m83br&;h-PE$m$M-L;kw=?BF*BGyZDb9QYT-G0^J8{#Pf0I&-0HkE(9_(Vcwn zuFukA2?)@uzA zO@V=*p;d~n-|3ouh`#|kQJDrjGZtxaKf^^kNqfOs8=!x;pEv*Xk^*jx&{2X~1F+}e zDhb-9XtUD>3j)jKP zK(S0CLtgs35OWR@^mvsK#FkD3J*E-7OG`}VFdG*4evFAe<&S!mT#hgX4K(@w(ys|& z69dkE+vK6nf(`oSNidn;!kfhxAf7qrhX1Rn0nqNreJ62oLc|&pE;CP@L6|EZL-`-N z1x1qk2(!E2RZNSh;*Hi;JD2T!TUFAHlKASGtZ%F8%H|P{KhN<*7PWk}Fq#wIxx<^` zZU{6>;7%Xw`xij&$kI-j+=HEyi8M@c1B+PInpbS-hbkD*Uku12eW3whJ(i_%74+a8 zO5h?vSlUV!Tj$goap815BdyqVXJO{d__0tPD#r&bI~E-G*mAEiiRaoc$Hj>WbIkzE z1_5zQrRxYB`7FN8!xKtHI-qd@0f?S=

ISV64IPYM_RPt}e?yxHY&YI3&InV6Q=7 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 literal 0 HcmV?d00001 diff --git a/programing-manual/mm/heap.md b/programing-manual/mm/heap.md new file mode 100644 index 0000000..d6ebe25 --- /dev/null +++ b/programing-manual/mm/heap.md @@ -0,0 +1,45 @@ +# 内核虚拟内存管理之堆内存 + +## 一、描述 + +对于应用程序来说,可以使用 `malloc` 和 `free` 来动态地分配内存,那么,对于内核来说,也需要这样的功能。 +所以,需要在内核中实现同样的功能,在 `nxos` 里面,它们是 `NX_MemAlloc` 和 `NX_MemFree`。 + +我们是使用基于缓存的链表来管理堆,这种方式的原理是,在释放一个页面后,会放到一个链表上面,下次分配的时候,直接从链表获取内存对象即可。 + +## 二、原理 + +在 `heap cache` 算法中,每个小的对象都有一个对应的链表来管理内存对象,分配的时候先去链表上获取对象, +没有对象才重新从物理内存管理器中分配,有的话就直接从链表上面摘取。 +释放的时候,也是先释放到链表上面,当链表超出了最大链表长度阈值的时候,才会释放到物理内存分配器中。 + +在 `heap cache` 中,内存对象被划分成3类,小(16byte <= `size` <= 256kb)、中(256kb < `size` <= 1mb)、大(`size` > 1mb)内存对象。 +对于小内存对象,会划分得比较细,如:16, 32, 48, 64, 80, 96, 112, 128等。 +对于中内存对象,就是使用一个链表来管理。 +对于大内存对象,就直接从物理内存管理器分配和释放,不使用链表管理。 + +## 三、框架图 + +![框架图](figures/heap-cache.png) + +## 四、接口 + +内核分配堆内存的接口,需要传入待分配内存的大小,即可获取一个内存地址,如果为空,那么就是分配失败了。 +通常,内核会使用 `NX_MemAlloc` 去分配内存。 +```c +void *NX_HeapAlloc(NX_Size size); +#define NX_MemAlloc(size) NX_HeapAlloc(size) +``` + +内存释放堆内存的时候,需要传入内存对象地址,并返回释放的状态。 +通常,内核会使用 `NX_MemFree` 去释放内存。 +```c +NX_Error NX_HeapFree(void *object); +#define NX_MemFree(ptr) NX_HeapFree(ptr) +``` + +除此之外,还提供了一个获取某个内存对象大小的功能,传入地址即可获取内存对象所在的 `cache` 的大小。 +使用的时候需要注意,必须是通过 `NX_HeapAlloc` 分配的内存对象。 +```c +NX_Size NX_HeapGetObjectSize(void *object); +``` diff --git a/programing-manual/mm/mm.md b/programing-manual/mm/mm.md index 836d698..90cbf8f 100644 --- a/programing-manual/mm/mm.md +++ b/programing-manual/mm/mm.md @@ -1,47 +1,11 @@ # 内存管理 -内存管理是操作系统中最为核心和重要的部分,这是由于很多其它模块的运行都需要内存的分配和释放。内存管理分为物理内存管理、虚拟内存管理、进程虚拟内存管理这三个大模块。 +内存管理是操作系统中最为核心和重要的部分,这是由于很多其它模块的运行都需要内存的分配和释放。 -## 一、物理内存管理 +内存管理分为物理内存管理、虚拟内存管理、进程虚拟内存管理这三个大模块。 -### 1. 描述 +一. [物理内存管理,使用伙伴算法实现。](buddy.md) -内存是操作系统运行的根基,处理器从内存中取出指令来执行,在进入操作系统之前,一般会有引导器bootloader把内核加载到内核中,然后跳转进去执行。 -这样的话,内核也就占用了一部分的内存,那么我们应该去管理哪部分内存呢? -我们需要管理的物理内存是除了保留地址和操作系统占用以外的空闲的内存,这部分内存就是需要在操作系统运行的过程中进行静态/动态分配的内存。 -`nxos` 在 `qemu` 的 `riscv64` 虚拟平台中,内存布局如下: -```c -/** - * Physical memory layout: - * - * +------------------------+ <- MAX PHY SIZE (TOP to 4GB) - * | L3 PAGES | - * +------------------------+ <- KERNEL PAGES (TOP to 2GB + 128MB) - * | L3(K) & L0/1/2 PAGES | - * +------------------------+ <- 0x82000000 (2GB + 32MB) - * | KERNEL | - * +------------------------+ <- 0x80200000 (2GB + 2MB) - * | OPENSBI | - * +------------------------+ <- 0x80000000 (2GB) - * | MMIO/UNMAPPED | - * +------------------------+ <- 0x00000000 - */ -``` -我们需要管理的内存就是 `0x82000000-TOP` 之间的这部分内存。简单的说就是对一段或者多段空闲的内存地址进行管理,可以进行分配与释放,让操作系统去使用。 - -### 2. 内存管理算法 - -#### 1. 原理 - -在 `nxos` 中使用 `buddy` 伙伴内存管理算法。为了便于页面的维护,将多个页面组成内存块,每个内存块都有2的方幂个页,方幂的指数被称为阶。在操作内存时,经常将这些内存块分成大小相等的两个块,分成的两个内存块被称为伙伴块,采用一位二进制数来表示它们的伙伴关系。当这个位为1,表示其中一块在使用;当这个位为0,表示两个页面块都空闲或者都在使用。系统根据该位为0或位为1来决定是否使用或者分配该页面块。系统每次分配和回收伙伴块时都要对它们的伙伴位跟1进行异或运算。所谓异或是指刚开始时,两个伙伴块都空闲,它们的伙伴位为0,如果其中一块被使用,异或后得1;如果另一块也被使用,异或后得0;如果前面一块回收了异或后得1;如果另一块也回收了异或后得0。 - -#### 2. 优缺点 - -1. 尽管伙伴内存算法在内存碎片问题上已经做的相当出色,但是该算法中,一个很小的块往往会阻碍一个大块的合并,一个系统中,对内存块的分配,大小是随机的,一片内存中仅一个小的内存块没有释放,旁边两个大的就不能合并。 - -2. 算法中有一定的浪费现象,伙伴算法是按2的幂次方大小进行分配内存块,当然这样做是有原因的,即为了避免把大的内存块拆的太碎,更重要的是使分配和释放过程迅速。但是他也带来了不利的一面,如果所需内存大小不是2的幂次方,就会有部分页面浪费。有时还很严重。比如原来是1024个块,申请了16个块,再申请600个块就申请不到了,因为已经被分割了。 - -3. 另外拆分和合并涉及到 较多的链表和位图操作,开销还是比较大的。 - -#### 3. 实现 +二. [内核虚拟堆内存管理,使用基于缓存的链表实现](heap.md) +三. [进程虚拟内存管理,基于线性链表实现](vmspace.md) diff --git a/programing-manual/mm/vmspace.md b/programing-manual/mm/vmspace.md new file mode 100644 index 0000000..6f14edb --- /dev/null +++ b/programing-manual/mm/vmspace.md @@ -0,0 +1,58 @@ +# 进程虚拟内存管理之虚拟空间 + +## 一、描述 + +进程在启动前,需要加载对应的代码、数据到内存中,然后才开始执行。 +在进程的运行过程中也会涉及到堆的分配,栈的扩展等。 +对进程的内存管理,是对它的虚拟地址进行管理。由于会有多个进程的存在,所以会对每个进程的虚拟地址 +进行独立的管理,于是进程地址空间就出现了。 + +进程地址空间(`vmspace`)就是用来管理进程的虚拟地址的。由于不同地址会有不同的用途,于是会有虚拟地址节点(`vmnode`)来管理 +不同用法的地址。 + +## 二、原理 + +进程地址空间的管理使用链表来维护每一个节点,节点是根据虚拟地址的值来进行线性排序,低地址在链表的开头,高地址在链表的结尾。 +地址空间通过映射和解除映射来进行管理,类似于分配和释放的操作。 + +映射某段空间的时候,会先检测地址是否被使用,如果已经被使用了,就不能直接使用这块地址。没有被使用,就可以在地址空间中添加一个 +`vmnode`,节点记录了地址的信息以及这段地址的属性。 +值得注意的是,映射的时候,还会去对内存进行物理内存映射,只有映射后,进程才能访问该地址。 + +解除映射的时候,会先判断该地址是否映射,已经映射才能解除。会先解除物理内存映射,然后再把 `vmnode` 删除。 + +## 三、框架图 + +![框架图](figures/vmspace.png) + +## 四、接口 + +虚拟地址在映射的时候,需要指定对应的地址空间,然后就是传入一个想要映射的地址,如果为0,那么就会自动分配一个地址。 +以及这个地址对应的内存大小,内存节点的属性,已经一些扩展的标志。 + +在解析 `elf` 格式的可执行程序的时候,需要映射一段内存来储存代码和数据,就会用到映射功能。 +以及在做进程的堆分配和栈扩展的时候,都会使用到。 + +```c +NX_Error NX_VmspaceMap(NX_Vmspace *space, + NX_Addr addr, + NX_Size size, + NX_U32 attr, + NX_U32 flags, + void **outAddr); + +/* 指定了虚拟地址需要映射到的物理地址,映射的时候,就把虚拟地址映射到该物理地址(未来做共享内存的时候会用到) */ +NX_Error NX_VmspaceMapWithPhy(NX_Vmspace *space, + NX_Addr vaddr, + NX_Addr paddr, + NX_Size size, + NX_U32 attr, + NX_U32 flags, + void **outAddr); +``` + +解除地址映射的时候,需要制定虚拟地址和内存大小,如果在已经映射的内存空间中匹配到`vmnode`,就可以将其解除映射,并释放其 +映射的物理内存。 +```c +NX_Error NX_VmspaceUnmap(NX_Vmspace *space, NX_Addr addr, NX_Size size); +``` -- Gitee From 5a56e20c399617269762788735037889de4579f5 Mon Sep 17 00:00:00 2001 From: hzc1998 <2323168280@qq.com> Date: Sun, 3 Apr 2022 02:17:45 +0800 Subject: [PATCH 5/6] feat(*): update readme --- README.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 3b392da..13fa831 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -文档版本v0.1 基于NXOS develop分支 +文档版本 v0.1 基于 NXOS develop 分支 -如果您在文档中发现了问题或者想参与文档的编写,可以在文档仓库提出issuse或者提交pr: +如果您在文档中发现了问题或者想参与文档的编写,可以在文档仓库提出 issuse 或者提交 pr : [nxos-doc](https://gitee.com/BookOS/nxos-documentation) # NXOS 简介 @@ -11,12 +11,14 @@ ## NXOS 概述 -`NXOS`是一个分时多进程/多线程(也支持实时优先级),支持MMU的现代操作系统,它和Linux内核,WindowsNT内核是同一个数量级的。 +`NXOS`是一个分时多进程/多线程(也支持实时优先级),支持 `MMU` 的现代操作系统,它和 `Linux` 内核, `WindowsNT` 内核是同一个数量级的。 ## 许可协议 -`NXOS`采用Apache-2.0开源协议,可以自由的复制和修改代码,只需要保留版权说明即可,无潜在的商业风险。 +`NXOS`采用 `Apache-2.0` 开源协议,可以自由的复制和修改代码,只需要保留版权说明即可,无潜在的商业风险。 ## NXOS 的架构 -`NXOS`采用混合内核架构,即宏内核和微内核相结合。优势是减小内核代码,增加功能可扩展性,功能模块是独立的进程,添加和删除模块就是进程的创建和关闭。 \ No newline at end of file +`NXOS`采用混合内核架构,即宏内核和微内核相结合。优势是减小内核代码,增加功能可扩展性,功能模块是独立的进程,添加和删除模块就是进程的创建和关闭。 + +[访问文档目录](SUMMARY.md) -- Gitee From d8e25904b17e1c05daf7cd4c2d253054b6795755 Mon Sep 17 00:00:00 2001 From: hzc1998 <2323168280@qq.com> Date: Sun, 3 Apr 2022 02:28:27 +0800 Subject: [PATCH 6/6] feat(start): update start.md --- programing-manual/base/start.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/programing-manual/base/start.md b/programing-manual/base/start.md index fcfb490..d3d659d 100644 --- a/programing-manual/base/start.md +++ b/programing-manual/base/start.md @@ -19,9 +19,3 @@ -> NX_HalPlatformMain (平台的主函数,什么都可以使用: 平台开发者实现) ``` - -如果需要执行应用程序,只需要在 `NX_HalPlatformMain` 创建一个进程即可: -```c -NX_ProcessCreate(name, path, flags); -``` -未来可能会改成其它机制,不过目前是这样。 -- Gitee