From a1ccddba7af84d74b5921adfe8842e1c059898b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Milants?= Date: Sat, 1 Jan 2022 15:43:07 +0100 Subject: [PATCH] Initial commit --- .gitmodules | 3 + CMakeLists.txt | 12 ++ README.md | 98 ++++++++++++ apps/CMakeLists.txt | 3 + apps/communicator/CMakeLists.txt | 15 ++ .../include/PineDio/LoRa/Communicator.h | 20 +++ apps/communicator/src/Communicator.cpp | 57 +++++++ apps/pinephone-communicator/CMakeLists.txt | 10 ++ apps/pinephone-communicator/main.cpp | 19 +++ apps/usb-communicator/CMakeLists.txt | 10 ++ apps/usb-communicator/main.cpp | 17 +++ doc/pinedio-communicator-demo2.jpg | Bin 0 -> 151752 bytes include/PineDio/LoRa/Exceptions.h | 9 ++ include/PineDio/LoRa/PinedioLoraRadio.h | 27 ++++ include/PineDio/LoRa/PinephoneBackplate.h | 22 +++ include/PineDio/LoRa/UsbAdapter.h | 21 +++ libs/CMakeLists.txt | 10 ++ libs/sx126x_driver | 1 + src/CMakeLists.txt | 31 ++++ src/PinedioLoraRadio.cpp | 109 ++++++++++++++ src/pinephone/CMakeLists.txt | 23 +++ src/pinephone/PinephoneBackplate.cpp | 142 ++++++++++++++++++ src/usb-adapter/CMakeLists.txt | 23 +++ src/usb-adapter/UsbAdapter.cpp | 113 ++++++++++++++ 24 files changed, 795 insertions(+) create mode 100644 .gitmodules create mode 100644 CMakeLists.txt create mode 100644 README.md create mode 100644 apps/CMakeLists.txt create mode 100644 apps/communicator/CMakeLists.txt create mode 100644 apps/communicator/include/PineDio/LoRa/Communicator.h create mode 100644 apps/communicator/src/Communicator.cpp create mode 100644 apps/pinephone-communicator/CMakeLists.txt create mode 100644 apps/pinephone-communicator/main.cpp create mode 100644 apps/usb-communicator/CMakeLists.txt create mode 100644 apps/usb-communicator/main.cpp create mode 100644 doc/pinedio-communicator-demo2.jpg create mode 100644 include/PineDio/LoRa/Exceptions.h create mode 100644 include/PineDio/LoRa/PinedioLoraRadio.h create mode 100644 include/PineDio/LoRa/PinephoneBackplate.h create mode 100644 include/PineDio/LoRa/UsbAdapter.h create mode 100644 libs/CMakeLists.txt create mode 160000 libs/sx126x_driver create mode 100644 src/CMakeLists.txt create mode 100644 src/PinedioLoraRadio.cpp create mode 100644 src/pinephone/CMakeLists.txt create mode 100644 src/pinephone/PinephoneBackplate.cpp create mode 100644 src/usb-adapter/CMakeLists.txt create mode 100644 src/usb-adapter/UsbAdapter.cpp diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..e41b7b8 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "libs/sx126x_driver"] + path = libs/sx126x_driver + url = git@github.com:YukiWorkshop/sx126x_driver.git diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..8704ded --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,12 @@ +project(pinedio-lora-driver-project) +cmake_minimum_required(VERSION 3.21) + +set(CMAKE_CXX_STANDARD 20) + +option(BUILD_FOR_PINEPHONE "Build PinePhone support" FALSE) +option(BUILD_FOR_USB "Build support for the USB adapter" FALSE) + +add_subdirectory(src) +add_subdirectory(libs) +add_subdirectory(apps) + diff --git a/README.md b/README.md new file mode 100644 index 0000000..4cb4c6e --- /dev/null +++ b/README.md @@ -0,0 +1,98 @@ +# PineDio LoRa drivers +PineDio is the new LoRa-based product range at [Pine64](https://pine64.org). This project implements a C++ driver for the [LoRa USB adapter](https://wiki.pine64.org/wiki/Pinedio#USB_adapter) and the [Pinephone backplate](https://wiki.pine64.org/wiki/Pinedio#Pinephone_backplate). + +## Build +Build this project like any CMake project: + - Clone the project from Git + - Initialize/update the Git submodules + - Create a build directory and invoke CMake with command line parameters to choose the target hardware + - Build + - Enjoy + +```bash +git clone xxx +cd pinedio-lora-driver +git submodule update --init +mkdir build && cd build +cmake -DBUILD_FOR_PINEPHONE=0 -DBUILD_FOR_USB=1 .. +make -j +``` + +2 CMake options are available : +- `BUILD_FOR_PINEPHONE` : build the driver for the pinephone backplate and the `pinephone-communicator` test app. +- `BUILD_FOR_USB` : build the driver for the USB adapter and the `usb-communicator` test app. + +## Dependencies +You need to install and load [this driver](https://github.com/rogerjames99/spi-ch341-usb) to be able to use the USB adapter. This spi-ch341-usb is a driver that configures the CH341 chip (USB <-> serial converter) mounted on the USB adapter and exposes it as a `spidev` (userland SPI API) device. + +## Run the test applications +The test applications (one for the Pinephone, one for the USB adapter) provide a very basic chat application : it prints all the data received on the LoRa radio and allows sending messages to other LoRa devices. + +The *communicator* test app are available in the directory `apps/` : + +```bash +./apps/pinephone-communicator/pinephone-communicator +``` +or +```bash +./apps/usb-communicator/usb-communicator +``` + +## Demo +![PineDio communbicator demo](doc/pinedio-communicator-demo2.jpg) + +[Here's a video showcasing this project](https://video.codingfield.com/videos/watch/5a68be9e-01a2-43aa-af60-595366619553). + +## Overview of the project structure +The goal of this implementation is to provide a common interface for both devices (Pinephone add-on and USB adapter) as they are both based on the same LoRa module (Semtech SX1262). + +The implementation specific for the Pinephone is located in the class `PineDio::LoRa::PinephoneBackplate`. It initializes the I²C port to communicate with the LoRa backplate. The LoRa backplate PCB is based on the SX1262 and uses a simple ATtiny84 MCU to convert the I²C bus from the Pinephone into the SPI bus for the SX1262 (it run [this firmware](https://github.com/zschroeder6212/tiny-i2c-spi)). + +The implementation specific for the USB adapter is located in the class `PineDio::LoRa::UsbAdapter`. It uses the `spidev` API to access the SPI bus from the Linux userland. + +Both classes derive from `SX126x`, the generic driver from [this repo](https://github.com/YukiWorkshop/sx126x_driver). + +The generic abstraction is provided by the class `PineDio::LoRa::PinedioLoraRadio`, which takes a reference to a `SX126x`-derived object (which can be either `PinephoneBackplate` or `UsbAdapter`). + +At the application level, all you have to do is instantiate the driver for the targeted device and configure it if necessary, pass it to an instance of PineDioLoraRadio and then use this instance to send and receive data: + +```c++ +PineDio::LoRa::PinephoneBackplate pinephoneBackplate("/dev/i2c-2"); +pinephoneBackplate.Initialize(); +PineDio::LoRa::PinedioLoraRadio radio(pinephoneBackplate); +radio.Send({...}); +auto data = radio.Receive(); +``` +or +```c++ +PineDio::LoRa::UsbAdapter usbAdapter; +PineDio::LoRa::PinedioLoraRadio radio(usbAdapter); +radio.Send({...}); +auto data = radio.Receive(); +``` + +Linking with this driver in an external application should be as easy as linking (`target_link_libraries`) with `pinedio-lora-driver` and `pinedio-lora-driver-usb` or `pinedio-lora-driver-pinephone`. See *communicator* demo applications in the folder `apps`. + +## Current state of this project +This project is at its very beginning. There are still a lot of unnecessary `sleep()`, and most of the configuration is hard-coded. + +The test application (usb-communicator and pinephone-communicator) are also in a very early stage of development. They are already able to print all data received on the LoRa radio and to send messages from the standard input. + +### TODO + - [ ] Remove unnecessary `sleep()` + - [ ] Remove hard-coded configuration in the driver, add API to configure the driver + - [ ] Communicator test app: configure the driver parameters (frequency, LoRa settings,..) via command line options and/or configuration file + - [ ] Improve the implementation to provide synchronous and asynchronous API + - [ ] Probably many other things + +## License +This project is released under the terms of the **LGPLv3 license**. + +## Acknowledgements +This project is based on [this C++ SX126x driver](https://github.com/YukiWorkshop/sx126x_driver) from [YukiWorkshop](https://github.com/YukiWorkshop). + +The implementation of the driver for the USB adapter is possible thanks to [rogerjames99's](https://github.com/rogerjames99) [fork](https://github.com/rogerjames99/spi-ch341-usb) of the [spi-ch341-usb module](https://github.com/gschorcht/spi-ch341-usb) from [Gunar Schorcht](https://github.com/gschorcht). + +The LoRa add-on board works thanks to a ATtiny MCU running [this firmware](https://github.com/zschroeder6212/tiny-i2c-spi) from [Zachary Schroeder](https://github.com/zschroeder6212). + +This project wouldn't be possible without the good work from [Pine64](https://pine64.org), which works hands in hands with the open source community to design and build nice and open devices! \ No newline at end of file diff --git a/apps/CMakeLists.txt b/apps/CMakeLists.txt new file mode 100644 index 0000000..7de7324 --- /dev/null +++ b/apps/CMakeLists.txt @@ -0,0 +1,3 @@ +add_subdirectory(communicator) +add_subdirectory(pinephone-communicator) +add_subdirectory(usb-communicator) \ No newline at end of file diff --git a/apps/communicator/CMakeLists.txt b/apps/communicator/CMakeLists.txt new file mode 100644 index 0000000..2a63372 --- /dev/null +++ b/apps/communicator/CMakeLists.txt @@ -0,0 +1,15 @@ +project(communicator) +cmake_minimum_required(VERSION 3.21) + +add_library(communicator + src/Communicator.cpp + include/PineDio/LoRa/Communicator.h) + +target_link_libraries(communicator + pinedio-lora-driver + pthread +) + +target_include_directories(communicator PUBLIC + $ + ) \ No newline at end of file diff --git a/apps/communicator/include/PineDio/LoRa/Communicator.h b/apps/communicator/include/PineDio/LoRa/Communicator.h new file mode 100644 index 0000000..fc02705 --- /dev/null +++ b/apps/communicator/include/PineDio/LoRa/Communicator.h @@ -0,0 +1,20 @@ +#pragma once + +#include "PineDio/LoRa/PinedioLoraRadio.h" +namespace PineDio::LoRa { +class PinedioLoraRadio; +class Communicator { +public: + explicit Communicator(PineDio::LoRa::PinedioLoraRadio &radio); + + void Run(); + +private: + PineDio::LoRa::PinedioLoraRadio &radio; + std::atomic running{false}; + std::unique_ptr receiveTask; + void Receive(); +}; +} + + diff --git a/apps/communicator/src/Communicator.cpp b/apps/communicator/src/Communicator.cpp new file mode 100644 index 0000000..77dfc73 --- /dev/null +++ b/apps/communicator/src/Communicator.cpp @@ -0,0 +1,57 @@ +#include +#include +#include +#include +using namespace PineDio::LoRa; + +namespace { +std::string GetString() { + std::string input; + std::getline(std::cin, input); + return input; +} +} + +Communicator::Communicator(PineDio::LoRa::PinedioLoraRadio &radio) : radio{radio} { + radio.Initialize(); + receiveTask.reset(new std::thread([this](){Receive();})); +} + +void Communicator::Run() { + running = true; + + std::future futureString = std::async(std::launch::async, GetString); + + + while(running) { + if(futureString.wait_for(std::chrono::milliseconds {0}) == std::future_status::ready) { + auto msgStr = futureString.get(); + std::vector msg; + for(auto c : msgStr) + msg.push_back(c); + msg.push_back('\0'); + radio.Send(msg); + futureString = std::async(std::launch::async, GetString); + } + + std::this_thread::sleep_for(std::chrono::milliseconds{100}); + } + +} +void Communicator::Receive() { + while(true){ + auto data = radio.Receive(); + std::cout << "Data received on LoRa radio : " << std::endl; + std::cout << "\tHEX: "; + for(auto d : data) { + int dd = d; + std::cout << std::hex << "0x" << dd << " "; + } + std::cout << std::endl << "\tSTR: "; + for(auto d : data) { + std::cout << d; + } + std::cout << std::endl; + } +} + diff --git a/apps/pinephone-communicator/CMakeLists.txt b/apps/pinephone-communicator/CMakeLists.txt new file mode 100644 index 0000000..e028dd8 --- /dev/null +++ b/apps/pinephone-communicator/CMakeLists.txt @@ -0,0 +1,10 @@ +project(pinephone-communicator) +cmake_minimum_required(VERSION 3.21) + +add_executable(pinephone-communicator + main.cpp) + +target_link_libraries(pinephone-communicator + communicator + pinedio-lora-driver-pinephone + ) \ No newline at end of file diff --git a/apps/pinephone-communicator/main.cpp b/apps/pinephone-communicator/main.cpp new file mode 100644 index 0000000..da940a4 --- /dev/null +++ b/apps/pinephone-communicator/main.cpp @@ -0,0 +1,19 @@ +#include +#include +#include +#include +#include + +int main() { + try { + PineDio::LoRa::PinephoneBackplate pinephoneBackplate("/dev/i2c-2"); + pinephoneBackplate.Initialize(); + PineDio::LoRa::PinedioLoraRadio radio(pinephoneBackplate); + PineDio::LoRa::Communicator communicator(radio); + communicator.Run(); + } catch(const PineDio::LoRa::InitializationException& ex) { + std::cerr << "Initialization error : " << ex.what() << std::endl; + } + + return 0; +} diff --git a/apps/usb-communicator/CMakeLists.txt b/apps/usb-communicator/CMakeLists.txt new file mode 100644 index 0000000..34ca49f --- /dev/null +++ b/apps/usb-communicator/CMakeLists.txt @@ -0,0 +1,10 @@ +project(usb-communicator) +cmake_minimum_required(VERSION 3.21) + +add_executable(usb-communicator + main.cpp) + +target_link_libraries(usb-communicator + communicator + pinedio-lora-driver-usb + ) \ No newline at end of file diff --git a/apps/usb-communicator/main.cpp b/apps/usb-communicator/main.cpp new file mode 100644 index 0000000..7d27157 --- /dev/null +++ b/apps/usb-communicator/main.cpp @@ -0,0 +1,17 @@ +#include +#include +#include "PineDio/LoRa/UsbAdapter.h" +#include "PineDio/LoRa/Exceptions.h" + +int main() { + try { + PineDio::LoRa::UsbAdapter usbAdapter; + PineDio::LoRa::PinedioLoraRadio radio(usbAdapter); + PineDio::LoRa::Communicator communicator(radio); + communicator.Run(); + } catch(const PineDio::LoRa::InitializationException& ex) { + std::cerr << "Initialization error : " << ex.what() << std::endl; + } + + return 0; +} \ No newline at end of file diff --git a/doc/pinedio-communicator-demo2.jpg b/doc/pinedio-communicator-demo2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..54aa810a59b60a2d25f21449b30d238d0d204c4f GIT binary patch literal 151752 zcmeFZbyOWq(=R$mfFMCaf=h6BcY?cHa5nC+aSuU*yF(HnI0Sb~(4fi2Eg`rEcQ`|y z=aqZTcfNJ+{p+lC-rmfb+TGRFRllyTnb}PB{mlJO083t4P8xuNg9A*!4{*QC@m$Kw z#u5PJ~*#)?H1-SS? zZn$^<(go}aJO=K7zob4$0^t6lAH>4_O?QFS@St`G;29sRNBCP)B=9@ZztPYBrXTp= z;Qx|C3i8AMO&_p<4PZg}^SS?b>>kVjIq&BI2>=BN2^r}T3NkYC6zHrxwyEh5Ri-+ohZ znz;r)MtzQlPe4dbLrX``z{SnO%f~MuAt@y-BP%Dbp{b>h8ysoa(=ynYn&LeNM%-OnvxZ+8@jQ-x(JC z|I4y}8ul-{<^XgAIB@b1umMrv>mftP)OuInPs}al@zWCfef7uq^{qKgqM!YxRDSJP z>CaR?lhZLQh*L9=T%z=6)JY|%i)4{%CJKr#qJrl<%GQZN;opoi9b_J}fT$)JS=|F@ ze%WyEec{eJ?>=Y#z{6+P9{(hRNK~13v1W5>+aBHCF1+uf#}(W*?Dxvj1W#g+7C@`I z`^ivouUgL z;X5McHr6!C-@eD0XPy&A=vf5ZQrhYx}^V#xg1)R+zuD%51lY;G3Fk2 zJ!p+L$DbeTG)l=n*Lb-`-D+VvGjtD3mzHqP>6a^T>1&HJJ;fAsiEaMabIu-4w6`D> z^Wuji(W92vNnQC%yUc=VkFM{5vE_T9Glje}@bX&pd{M)O)-E*5A#VUh^Ldk6w#QiG zw#^RIxw(gj`1Br-L=dgw@?CthxUcwKa#ukfjZ|(?t-d|K+Hywjpyize$2;{@m0%QR z+b2kJT^oR_&0*WX+gzn6KyG~kn!7;A%+l??5U;OyMSFXy%-*G@T0PT_=iPN{WAbT& zg@w1*)Q09qd|yK#9p!ZP#$joi2-!qcC8=A(%oA~4lNZuUm;^ih8wy5WIy3Cdg-mB4 z-zDz2at-vx(q~VPF)yaPepi0{5<$ChmtIeML(!7a_aZCl^>ylw!qP6GCs&V4w#C9d zFc0>*2bdq<1G;yeJ76!~8_KjDiaxC`)c}3WYyK^D*3eU>nWF*_7Kb}r&|2m7^y+%i zF42R0pQ>Wr%{)T&Hi&CO?M#`}RQec4P7 z)#subx>mByWJhzX!}mZa*{qK7@s#KTDIA#0weOH4GII|gZ`*XvPR(BDm6QkWww4E0 z#NAzqF3WPYc7u9C?tzZD3-#$snIh=746Qx_i6?Du4~?JSHr_o|(tYK?0F%ZiyIL1j zxvTfpt;96Cuw$vOG_;i~CvtKA>Q@bCZz{IaWL4<5Mj*vI?0YlHp{@g~t-T%-w&B(! z6X=qBExmjr7=a+tdF!LNgDz$fDv|9d8dN!ShkG;Ae?x^#nrA6`V@US9nD!ocA9N4= zWWNV~?Ks*RPA`nyHLL9x-2<;#kNDE_v~8#paF}X|H%N5e+;qyvZX3#@Oxg5^s|JZU zLW707I8N_Hq|legb_7dAO~4}8uFyn2Fp^XMMf-5GBa&c6pt zH?>=wayGnCWilEacdLat{B7Bv(Kpd`trzVTs*RSlRu_M0gZxSs7t-$}Zf_x*h}$xn z_|O*qYeCR`hrU&~;m2Sc=tfSz@C<#!@$3WLFyDhK{cSf-62lmybQz;*@J2Qm8-^+_ zBK+-OZBNV`1e|!2k6ooz&XJ4SeZ8EbkL+$}lC{sOn1X%tao!v?rYax&E;emwNc<(4 zxHA-OWgo`j3EdR%nJSyxO2lJ!XQK7|is;+NzSCVg&C_7#n5eJ3|D!LuY5wATgL}ah zx3_@I9_zNk?}O;HJs+`;`&k*KV*Or8clNn9+4rhJ(*myT>LnriM(V8d3?U!5*n1#F zl53CaO^gbn8wLVY{-;{zDBZ`H=iB_)hiL{kov*5I69^2qiszE~`qs(sD2X+t5m7>o zUHBK8uIqwDZOfhxQx_&KgfF_FQ_J?JyJT`>uveU1ZYY#_!ntwHKp)AppoU7s`U8xC4R5>?b~WaQH<=#=R`8H5w$ zJ2Dt%!%~^M@>E`lyP_H~jLj4so$p?{WUspIsOxPdE=dTL9)9@TEI7)!E6Si~5fiB6 zK=YlITC0+UY$z&FyqhZT-Lo_+XrP;?@XfIAo`tGN5UN!i1+`m-Aal3IMM=T8-g4X4 zf+VQ43W_t?HMo2(-)bHZ<%z3%SPnF%zwqeDvpuDOjIA=h?9nel(p_)TIDg&ZEY`hs zj45CK?F*GWl7R!dw9D8>!HH_aklICJzdZ)69A+>|fiTizHb%Xt#OBEizeDCLvQyI@?6n_;X5WSzvAZpc;CzUMmj_)nf z509@q$6?`koNFX{cvVs|;!^neJkuS<7Aelw%E=VuKKe^mWaZg=s_#S^cBmyWSqG$L zTCCBOvZ(~*G$yXZ&OGPO7_uPH>TfpZF585DcnMbK1H=gPl!e}LeN^+%0?|_W&IIGb z%IPjw0>2lQa%&1DV5}N(y$A5$BP+sa`{_B0)|>BvSvvv7)cP2P*6+>h9ygyEJAV7m zhO1hi1PC`KF_ z2C=Sdi9;h3a}1(Z+ozX5IK9mb0-qz(9#`q5DTg#0!uIh8j^w&dE4?nB%Gk(Rwh#>d z;^EtPyICde&ir*3YU+|q*RWdUK6MXxe~Fm4hLn>vx56t!XIyPylE2HFCucJ_;KNtr zMe1jGgSkwamOPRCuuxT3WK&2qOW44f%zheTc*fz-u#m+0d= zT$Hi~Y?rr+N0)2r%4*-dt1hSySw2zGy-Y)E3X1F+6+~5tbXPTbJm4{~_TLGex4djJnTqM5Q0=@6l*u(K^2dnrn{_a%5&N#eticZec-K zU>!Gc!WkkJG1+1#@^R_9-b5lz{L_hWp@~52=9eC0bX2R$W8B}MxsyUs#&c;KeAUrE ze=d_%6}@sgt3Q+F!CoaPS`FyPvHh^H@NutpfR{KgtE3Rm(^@ww5)RVb;aGI@T7Knr z!(89cY`Jr7P=#;B^OfwRBEre$iD;^}3`1 z^OPw5Z5!U1V(5=0g##|6rgo99;Ee#x_^w{q{pjsLynN}RSQc>WRo<11J6N)A*&rjg zvf3a1D?4zAD1H94|FryC=_Ot@Dy3AKU`Ti;38Pg%ws*&q2{z7Zi91CM(=Bze7WeWR z2?7bi)xGFrSSy0j6Kq~Q$ZSttL8bM)(a4!pN_nCp@naMdB3japHm$x1^94#nfhB&~ zh3@LurF%fWxLO~J==mm+oM`i%Uz~i{>`F?$b(a>hCk=Q1S8*~1_cQ)pA5;NH7k*n? z{|*;4%eiqjL0Lhc72y%GIi|B-BSEdfEo_bXnamHW4C?ah1*I{Q{yH<{Rm5$Eh25O|Lzs`jBM5H$Hr2b(N6hPjLrG`)z{-2 zr1e?eMYc>v8ur(aL04J81mPy4_=nO&6!5#0A2H^8k$Cj^dAWLt9g$JW!TaxiTrE$% z0(||5yPd!M<`Z4f6k+Mn|9m!zywGNF$1stHZcx!z4<}5eL%dO9JARQzdJiBjG@et( zbRO;ozFM(MZHBc!_sV7p81*k}`pwvw=8T(tX$PCh{0X6bB;#{J79MVAz|I83<+KN! z`r-%vq8#jLRkvTtSVdPpL!Ra~^H3v9U&PHuXjqFBI!7u>-DO-EPNorUDcHFAmC`m4 zp7kO{Gxj4c|KM4b*kS2lLuJLW&mAIWM3;rebpx5lfd`hW*iEP?)cc#jiPflvjKn7g=`a<8s_qoR`{j;9pd1k=?a~n!0pL4{Wo`<#3rbdwyDe zmf>*^7~ox~Al`AwJu6CMJ)lNKCZiLAWEwNS?$*dFeY)!n1)`m0sx3?VY zgkby!&Ux;++uYgLBi%;Ia4)^~49MQp-WGKHj2oZ!7#e|u-4T3?igM?2z<542620iK zLENW8u%j9!OCruIU+z;P(a(2hFj1a@M$6qe@Fme0ye-8%LfJKSM|aFumzE`8B|iCh z8;LG{2YceNVMEJ*l5bN$-^+};mUkTRG76DBQe+b4651$q%P!9ZC*@Q(A6>bNxAD>C z^dsW0n6~fZezkW_T?uZx9~yH|zV7$k1NJLBs^0EwM)V%vEqdh~_jP9F8go z^w$>t2zJNsaV>L@CNPL4QBlj2KW;~r{V=6Jk^s?;OYBFuIn?)=NKLf%e9vNLd88YJ z@9JWZVtPHvDp8revYYL&a4Z{3WnAHd`K6a*X+dff9bH*CL&^I*i9AB7x~*njVkP>t z&)@sm;*D@RP5J0pHM%{T6^X~8Q7*~c2m2#-xv$a5o`MALgMtITz1dWS5$zt4M-MqR zA*^Gw32A?3NnY#8B1@<{=#@Dm;a?ZSbrAImqeVEbk}62qkE0Qqq)Jjhh20U4q`YUi zHX=Uy0%6-AhHxD>I#XDWa)>`=6J~!qnDF;HfIUh z(!?n5FIC$+?t!fY>fvo=Dxsg*-whXr?JMB|+hUc)HYkzG zqv)<>e-v`84-n}EH&f-CK<1)0ZFaYQn0rqL4=O2l`M};UH;uAcvYL?v%0SJGkC#}d-Q@AV=Z}>Y;iuP?W9-o_~2!( zA|++9B4Lfa@tqIrnj#O5hj~SoC2ETBuGn$7Hks9H=%NnE7O7_7rDsfl!w;4~hU6Kg z+s%7`^A0zx&-8X|G-YOzk2%6TlV(23+&KMdu=m-!K{(1=T+H;R;X<*$a_!g07RhpG zXKBff#!hi7`${CP?9F4I(%_JU^N;?r#o{lCsROmt3}lx(^X^`!DX_u)P#y-s4RKM& zx3~v#oh~&9`2#nS?tvdP3067|*w_c;jsZ&Eu?ZYD=RS4J%yrU&-;uMw#qvU9ejW$; zc=memOp{VfP|lH#DT}o`TgC@cR|$1gr}*iVyvmX&k)_gmBKOkgxscDvjok*vJ>Z%@ zaelaTDjY);!!xau$P25az$AR;#^D|P^7j*L0pAIX<&pxKWWzNIGQopJr2vh29@1_rwvszf5EfXYK7}W2j|L(6)qDkLBnOD~L}e z-y>F;gv!Uvt;yand%&oSZR^c8b#Yz45CE>o0kT(w79f(8CeOJ*OL(3@;wTt`0PYyxpSIoM-uGu`dk^0?NLS2=c zS-zw|9@st!K0I6(z5QJHSXn2sjZqrAE*4>oVt77r-g6&82q8|zD22IVt+(Y_n6$EY zFLPgp3&ujjSA;ryY4N^5fojwIZH>APtulcR>k>_-GF7h{zGa*3znFA~mpi_?dW)yk zp>g*qK+8uMQ!SS}k&(bqPXfLy`_1@W3eo0Va5hhltLR=-V5rp|h23s}WafVUTIWyV19E%2}!kbDOH@Q_zXinghuL3xzJ`bu7%U zHR8Ks)kHs6535y)XGV5)ZAHH=)HWP+%bz8A9^=cBRk*nHSuB-|sZ!b(D=%l9Zj4UuvH4G?QJX=eI|*$@w#xI2Y<_YZB|6eA05{U zClc&*SMOaWv1!Xm^km|;?mBT3cBe6+(RcW1eG&OP*r+UIinQ3rB03vSwq>MDoglz| zW9zjqK6=+NaoeuEyh|?8s>-39GdjJ`(On|LZxHT*DrHh?SZmvxyV=acWud4Wncv(L3qx}{WWOm@cAnyW z`smx7F_9(6J-jz02*Hlih+8xAt)gmCiDsF?cA`(5;PfwW)c%R%eQ-2gG~4|wrGqok z+f!KgDs#C_&CbDnWs%QV;ERKBEs{5p^`$3v(tNf~g3tkrKEbunm0!0H!ELag!DpHTsmR80 zkh&unu~httRZ_4pKmK|}Wn;Ml(a`f4$HC7TguF=zpQzLCI_eLkWyX~81RzweO_;f= zs2s6#CDWXRFk8N}z)|~{xH9D2?p4%>%!QmqGJFNzxVd1tcG8o#vTZ{z+{$IE>Mtc@ zoF0`+2oCDIU3vjO<7GD)9xqREJ0}<}zWgk-hpq*zY|=OL)JYcWZ4dSLHeg+%IoY@l zqFjozzn~=&=Tr6?*qEx_ztJjLSWq5cRB}Qu5_#3B4D>k*GoWxGP`xMIry?L@M|^#$ zmGb+9y2JM)Wh;ZGsPze#(TJ_O!cf^z#dI2{O0|dvWh%M()97g#i>hp7Rj#+#hj)>r6FKW2DW~1fX zY}+#3Sl`W$lPt6`kuh<|_+#)bzP=$!gg+D;-1V~->c8Y&nm3cDo^+9oHb*h@9KqCM z@m^Es38s?I_P6?=?w$6j9t`$v!sXw7GTHH&cx?vDFj0A5y(lVnQh7^T{G zEuzqR9lmXY?%PU1iMfioqm;UR_myK>dkc!SL)}CkS4w<%A{uJ5UehL3HdJ5}?1fD- z6e8FshDhpi=QHKvs9udD&#-z}$E*F>{4GCrzaqRy%FxcM=h;gZ!=w)7rM%u^7DOaL zdwQvNG@UVPUWKvjFNPR;*z;5$i>_+z82Wgd$L%E*91eKY)VyOnI696M-x#0Pw9)*y zpE0@(D=z;w9My|#J}!B&kIRVK`B7hYTj!g8%_pk?R3!fHevynFHMGNZ+k7Kfi4^ z%1W-;k;`RRoXGJyw`}_bWR-Od#z;ANDLLRPpryDX6ECe zMG}2lXiDbu7#y)8h)bT!t4zlvrxFKo=Wnv&+Z>#RNJ$jop%%I^O)f1QZ}vAb4SioW z{2qOm_Gu`~rhqR3ol9bZ^e5St_Qnva74yV}YknEmW5K7;v3LOg_o#3rB3d@(nXO%p!?CO2iibyf1Y2 zvA*uxsqw(nDGY-J>8&F3#1D4FxD*-jQ=z=CHB%cdYw;TsZ(mUnE}ZK+=BLaqNzR0$ zqM`fSgV~MHTAm|gV@OUFvugBZ-HXP$%N_#d>%8R~hE<0T{hk4>MzVw)%o(q#cthMS0<=eGkNGqn!uTt5FB(zmjekhRM9}e)6NO%_JcFxD1cC zg!|^)Sr_GJ@*~~BWlY6rNW1!{dg^f1*GRcisViufD#@6Fso+tYr$lK7gud6WgrQ%6?H7`NFU{00sB=8Btbi|96hVhD<`G|tZpj57y*YpEB z2l^rej5MK+vIMG{(^+vzF&SHHhsvAz7Rwv;5q)Wo6ppD9Dhck&T?3hP#0za28lESf z>Ly!Uu8lPxXfWX@&O=^KQuGr1Qb;xrZImOna-sc1`>u+)Sw-6y_dVk2j5#*vfM=g% zV)RG3OFVA>a+ChU0Cz;Dqa`{1pAM+VPDPjJWm01m5Vgfk>(%wk47@Wx+KU3R2rwXi zKID0Q)=uhzbV-fY4B@+saT6br5$@6=PskjRD{`Z$EccSk^e9NgCG^{tA={oSsvAGe zSXWJTrK3e`Kw_Lh(cxzhW$-C2S(b8dGjAmxdQ7_R^_?OUtMc7ptdzN}2zGVwlHG)X z5S=;Ti$48IBt=6j;i-JfvA!*ShW9!CUH!=8L1BV#e6%Dg0{e zfw_}B)qzi1nG0&@LrSdmUN2KoGR8sPXlN&=1X`aOCzLZteP7)+3po3cjxwh*+^(6o zrStrb9?#+PWkA8nO|Qie#&_9o202NX$w30ww+yW>L*;D1*fiO2oi5BHJw3CMm0l1z zHlfM-k;i2##lUPIDj9vAN# z@L!$Mo5Hs{FBD&UFbxJn2iEhUl;-SX6_0IchT`XkN(#;e6W9H61}U**-ap*Ty#30a z!bcuPA}v6e@LV!OQc)Zd%P1d+Wtglb9m^|)LWnz`?a8;JRU$z8J0bR0b7182YQP*%a_qw{zQFKSIQ|EH8Z_TC8RJ)7CGAK z>328n+jKV$+->LT^U?#3($k3hE8DJiTgfXH9)3TlDtBW7>kL&~9VY?Hmm#a@(U8VQ z+|}5%3Z-WDh@pdiex&B=UkV}7OwJ!(!)Up=1cqU=21-1I7hUTNvH z=X9JLkzHVa;EO1swToF^ovie{>UsXSKw)i|5JEupbo|P9DlOOwSvo<|G{bz`7hYHt z^?0*Biu?D;obOh3`^r$e6Pn*wzDt)2veA~#N4Al64nm5Ff-Uc*w66P^m#T*ku`82H zdKm)^W7}#%-qSvx7r35JLYJyhAbsYq@;#?$wvH}=eL%E5?RI5;si_mkR$wWkL~oF= z>)4P3@K8}Mw4rY3X?OI#XxKra*V0#YotEn{_pwx=_$a$F1%QjF@-@|2nydQWKOY|OL(k{ z*@6k_H4{$$o|?@gNOqNyY~;)jmn+aFL2<=!SNRc>u(2cWkvOyeernH5 zs&?w#qL9O<0S)r1^HRe=l~3U^cCDJKa)#wG@#3XCJ{sEr*l#x}RXhyC&dikIMDuL> zdGS0vYG!2dyZS}+-6gg~KR3ObC^SD+(fBA=yjVdvKJxSF!CbCO^v}0ZeEj{-$m7{J z$WlCr!}hAeSPtr%s+bpv0s^G@gm4&g^9v2Ps(TzEeY-2`h}nTxJ00VJp6~UloS4YQ zGQS*FlI=z{(S3n#eQ(a!R`x4WERm8(Us32Wz(I|3w0*92Ln|7}pM;!9uL;55F{EWb z5g1+yF5AK8UXS#*$75!C^3FHj*7=RFZQ)Xdjk)|Foz>khSGz8q_HPG$PXe}OUiXFm zF#Ws|tYT{*5Rc(QlfRtq?k~1DJF8%C?raS4$<=qVZR^CW+pHL#b~Th+D}f}IbZtyb zR}m``PUcz|P;CvRYFnFTd?agnQ;w7x{uzHQcty-Tv*&HAC2SkngV#-}gxU9XF+yc@kay`O3>C&e6Vf zmsk(0L=3R7o=kFjQx0V@=bhWd&paNS?Bee}ngK+N_{PR{sMNPs=Q&X(wrn>5ia1Hy|vflTy=gCeNlw}#P*0qlIxf|>ac4>2S zt4SVr#0>tm2;o~mG)C@)t6$Zgmi3~6MTC&~6YqV@wajhN0=n`okGcL5-@l2!CZ)*wW%Ov>76dEhHLRxRxFMs&xgr1A%tWa5YX=dkQ zx*(59BQPV`LRrnlA@C<&p#P}79AusThzhM~e?tfoD|&TmW>YuDp!vL}peU3I;zauc z_N&?dT$Fhq1=R<&((zU#6dFOTehxwE1y#Riqx) zJYq)*Yt@<*v2w9;3=H*2&~e}zB7!uZ0+eehWfJ<<8by zNIb0HePdbAx(mj>m!CI-UC8sdrR-6BNWN5#T$6Fu&VJZUpiRnY2@wshHXOI+g%0XG*n~k zG|?LORx8dj1wpGrVdWTzAklUO+Oy#I=Ez=jv zjNQD=PBti9m0^ADrdP-*#1W~xZ>1+YD6E9>(?K|YhPD}PQFIhwVJ9SwL9D9aw;&hLHHQ;=6BOo1;p4Z;PY-0b4|Et zPbd8?g_`8!ihH-FjxcQWNsn=#I*sH>kNnCb*Td5)G?*x7aer z7&<5R1wwjTHc#3&d-XZ|cd@Z-ZQ!MuD8k!ss=X36wA+^3YH8BZD<|)Gr;>ldJkF7t z2n8!;FBg zbC#6|b%$p3DYTQ@Q6Vg>Pw!oe?tCVXj@vs~I-A?yqIn^tT6+&@1NC+esMLTW#`AU+5Eme(v$YoXO93 z>jV~iN0hur&%7>1@7NxtROVU4=2_K=1#&zt#UuO?=}sKh-svv1Ob~o0@zx zt$0@atSn2;BvSUW2p)VnFb>N$5G9UBKO;U&RdzvuG;diKdJ(A8DT9GM6o?ylr{umw z@LgX9<`+pU6g{6En#muk3Inkqk=2%xy3`r{{} zuXe9`1c-lVXM9z9?_@nvzp7(QXE_5Ovhn(qvhmfy$&N?tEc}~Zi&-z9x$kR=mE&@G zEgPsmB*yOnQQPfbk(8=Pq5|tZ3b}(Md|s}!uDDdeSq+WtuDmS)S&T-MpB)`LY!rfB z(MXY(4YQA>P@Pgz#7?-NTWSrVCro23 zy+4+GvsN6RoL@ruH-zM0%JvTxABAkcl_u0B9;r??*v2m5YXbhKvS=ES=Q zf5g6Ys5z^UwD0Q<9%V^PN7)_jVZ~RG6Sch$b`~~PKuFZf*%V@D;YMy|VP)eeOmWcK zNkML7E=-}rt;D9}EMZ}7BkSX8q2Z&f3GuOm@S9VJijWI=33xd;J6O1xl6yJWJ3n%>S9tm+m}CwEtf zg_MVdqZ{Qvx<6#X{ImCi5mq)1&VS4R(fa2g=8%8#IJ>*r|7kaeuv*w#IDo>S;JmQ^ zlNapwPv-wp`G=uF3k4*dAnp&{5l38p(A$;aM+-AJy5N3!uFE29} zj~P3&85=JTGaI+Lr6s$mIVTS{=Rf+ZxY~ejWNQEK`aH-n2j#Gvu|c>v%uShjK{sON z;$mlG=40crWH#gAV&i7x<+R{7<)a{f08v0(RZf_KgN5zyud4Q@ZkA524#E_QHjeII zf7fc-I9O=7nLa?o&I3y0AyL&EnK0XV?2oZlb%FDZVnNU1_hadvuxvF zYGuJ{>uh25M|lAWR|``&Cs$1;CwpOveS19{@pmP}+SJj?0$fkvoc_gT^It&B!^XqTW?|0GY{A71LSt#k%go2m zZV65iHzz*`KQB8s_dohWoh;ovOJZSi0^n2*KG z#t!~z{+*A-&-jp@#YVvj>d*SHWd1UR^?$bVPussOuYa(EYxaTsX9y4>|4;c30{=na zKM4E>f&U=z9|ZpIL*QQz5f+Z%osK8?h;aW4{*#=9gt4l+inN@f6qwcxrewdfhd4kH z!GvrFM>kh>nU~~XhA}zv`kypxRDcaYF@->##Z^@m|B>hXzn;&g9#Xae0LJ_v>wj(k zZ)-5j!G{GfKbjom5`#Fqx`DI_Nb`8QIX}?pAdL&&u$hB&IY=|Pf(nB4%tO7|U-a$+ zZS{wKNSX(5T{YDuK-(U&<;ku7jW+u?8e;A00P=8wJXGcmj-Y&a-M?t_2ios}cCdE` zb^B8uEJU|()Y1UYRNz4j$N+MH5}*o@17?6bU<23#ZU8fQb_8pnfI8Uz@_*Bx@K1kL zu$LLw%LageJtP4qzyUD*(;s-41CR$S|H2k($;t7j3J(1x06bc{zdxo1w-iVMfZO={ z`|J1j_qQLwl>7w%=yLp5f2VfXdmr8s+`izb2mmnj0O0930HEssg&WxR&<^BJ1Ar!omEs5hWMl#WjTI={;D2NH z!yX9##O=T3`5V9ggSG+q3~mDeCh&vl@n8o0KehoN0ug%1mw!Ow@A7xLJeW&Q`2WnK ze`x=!@&508bSwlcuxfGn%zIu{a;G>41$YUEf{021ZhU}B&TYabT@DdCH}FcYhe1*aHH#Gu0m`T&kv9&30Gd3kgsz|M*Lv$U)Pd<_IHAzYmRi~hA3 zKA-{McbUNf?*a6aPR_**hI-XUZb=o042UmK;M4)~FyI5X^#nepHhZ>6`r+-Rbgy|- zLfW?MX+W&nL`Y-uXIx1s>Yh?bic(czD+nD9F4|1h3?H-v#RMJ*0odT85fR{my68YV zf&dgmEV$`QV~Np8j(1q2-yN|+;ISTyAxZ=x6+@&yaATL@6IX2X`0$lIOJpH5EHT~o zCytSo{-%I4fk!_Uqt!4-qgRR(8s7x~)}Uo<09F?u1`Y)laHEQ#E)(#C)#Zi=E*3R` zJlf66?J+uX1g)G+L_{$$YPd(T5`Z?S%(pW9(SX{Yw?bM8HBtqMiwY_#KawU&b+I@t zXPL=uYAp**64j+mG9^G{u&8jw1Rmr9;7oJ@fC*?25(3;fz$W&vrv*9iFwXBX;&%X{ zMhhEO2tWy86Jtqs9K=Lq?(H5S44K*}I+~AQ>(Q z9g#g6+`Hq!5xbD!u_O?tZ|(udry<2<-p3uC07z_bpdSW>fJ%Y_0kL8+auC@t@an(_7cKT8S^^6NfCnBS z2GRMbq#Z>>a_FSm4k_%uJjdjw4J{*eto7?8Gn z#)jX=PR4usyL1(t)`Zz2jn-)rk+x4tZinTs(tE|;6@ZZ(30$7&5&+_}cYuCO`BK>7 zhf&)t0#1Hw9C{kb4ET@=w^S?w)5Nd1V$XsovEYM1B~cJ7TkZj}t(v-mGQG?5s&M_G zbL$^zDxwarmT6YJ=i`(Eas>~!@&gQoZrjFWdN+SxEo(O+Ip!)6-+FAcG!IR8M^%m0 z7=QHg59&j}Clfw(?rlSi3X2^P$f<0apU#oAhzJ4$Ht50VAQ*5#J-{PQ0~N9&4=0t$ zjUTWa&8eA~_|#uDa_o$RXm5uK6I=*us4Y1e-he9#RPezMk&Rbw*?``1zvJ1p=KX9)OR5FxUnI9{)q=%z$LZd>;& zNa1`oMHb|VYG{NBIT+{Bu_FMa7txQz@T)70<0dCZs;1XB&sIa;J*+tdtS)esqs#XN z^}qwFCc!~qkej-=2b8+S!*wqYszw}rbt*j}mX_Mk4S$b+G{>1=z8o`l&ljS`sfe%q-GOD&1t{O&rwT@m3xwjFu-=;YXJfH1$0*BWGiEK{yH!)*&J1?ZlD&cv~Y?B7i|SdaHb16jpA_roCm7KDRme zWyxC5Yf7Ir%_X;=xsX@LfmcRU?Hw*UIN6*}xVsO1t}ZA1bB#J3WyL_(d>;X)3NEDw zS0D#~Ct^#;{Kdck9t2*KBN*_(CIl=-aGmeM^WAd(5+UD78C=k|AD7H;x zm2c_|7!*Q?(fI8c7%FDrtc1M@ZAVTP&ide^iN?nKjhqu~&3km`+guo`g#5({2dI}PN^ds&RA*SuH1yYm}T4K8i@BG-lCUIrVQNx0Ma^%yN zmCjIRois!&3PPWKOhQ|**3rkMN;gt+>|~r#kUEjVp(Ajz@5869^{fCc)Uoe?FkN{5dQSP)Ee4sGp0^n{K4 zbG*s1UQ3DoZfyDUee$hoJUJ@x78fGw}HYU%O5^Mwi4)t>|G}+q$)aSgDJRFm%~6L>g+o-UC(7 zis|bxy2!cd@P(aPW0E+;;w(SetN(K09rPtuG-v3`rH64!n#D| zb!Hyx(WYD#D<{Ex*xI(|k$7p5{y{c;gjT*zEGn$U@}Qd}Ji=5u>WJ`iys01jSeH43Gnf3) znqy7UKDE|Fj{v$M>zs;MYtMf*92;k(E0L`Fd)KCd*NOLbsBp%$z44qE#a++vxYj?xV$8V8z zAwHz|1rP%NSRBwr1qdG^7l4n*Ru=}a191vR0ZBqu0Z=QCW7t+`j@=Zg+f=16xu%0| z2Gf=k&XfYjhSrKX8cJR9u$~6Sx=%l6nhJmO38tt6PH=FC=l1c>DH?rs0yOT~ZDEn8 zx=G9trHrZb5eg2Uu{D+I23BdNq8R!9gRFY2K44!W&jkdCsQ5>DtFc;S+byTLhv#MkjO=p5Py2US0Uc!Obu>u6i zci_!F8-5sopbC#QCU?}4Kt1|bm`M$sZv5Xm?k2!PZK6kn9`&`FM;c9*Fcfjt3 zHl=yoiSN2UhT}2~(6cNon%c^0pw4Z`8d1~YQ13*^^5`5glrq+P+jeb}L(Ue)VIG79 zgykZyj3u!0g>^%DWA;){^qapAB%RZM$O^eX|f^6Mrdw^X2Q%QO}7$7g4t0#IVrM z#=Uxs+=J;j(snLjNcOsRkXzV7@3El2-|u^eGZ(JDh_4(0G9Sg8umj`-PXM5}9H8X? z&qpR#7PfnOte7EVh0Zt}t#@s_us3$J`k7DXI$p;7YW1F>=&<+rv#rNfceo9W4W+-M zp^T?ja)eZv5ZLj`Z{o6O<$Sop-Eb*y2_5=)YTV~Qq;Var6vYm?)hQ%tvg1yz{5o(| zGjaLAN=$cps>aqVy-6~Rv3avX?x;|y0dW#?5wda}2CF-d(h-txKXvVS(dxM|HaNA7 z`($O>n!(b&^lNTMQq*z2BK*bpv>f$H{VkIf7;IjGPaA6`X!2^RNE2YAj|A?550UeH z=Eyc#LB{{mgW+P#T^!ujXZpi zC7}*{Ako8dICe9PiO~70gI<1NEQ*3zW?ss&imi2(f}?pN?{u?js>vEBms=*_+U1TE z=<@11hA!$JkUIiI_9U*M^Vze$y{#;0uSZ0LZ`BBm2uc|nV&WYooVPOh&2YnX6OAq_ ze%1c@WN!O@a` zVoBaffuHa;4X?-I-}tzy18C{VNh15m+vjuf2v4a~%<|zU;FX~Y!DC9$(JukYogQp!Oec2g&2tPhSTvX>*`^Sk96Ih9OYO$LvkW_hf)gVcV zxBnY6SsE6pt6Hc+_flaHhE|6kX~n zK0w+BJa-h{2zMXf`M9!_9nlJ?08zzJY$l-d^DpW^45DQKK~yn_J|OOvq4>Q{wFTOk1s*lGPHtn}HS zEm*L+Gn;qIcll~#9>bg1XpxVAov`$h)SlN{@Uuy}f0Y}lT4D*4J714lHhl!~%}}hf z#Fy15K=>FKz6DZc1xifRZ_>XNb`19(-~G59fLYnc`j;sa-ZG>jR{qy*2M4ma4^-x) zydz-f4!?dn)58?BX26s`P^KQ0TwyCK>zF%QpIorl$aLv3=Lez!kU}2ryCLp&})NIba3Te#mI+-W3eH=d+u@w{QC!3 z{Elhnq!lBk(P~UexKx%pz#OT0@6jA*zgqka33L-aOn_mZ+vRHptIX+d-Z^D~%=*HD zKjEmNr7m71_m-F%jxSEHadd=Yz;Y>Z2af;R_Hipp=W%s_8=)}4dwOF~NI;3sojDwA zoldMG11M*y2vq675d}R|0K{Inh;GnpgYpufC^b!6Z(tj)IyG40KIe#Z${OE5%_oVe zbt||~Poqma{F;nOBzl9k9Lq87(yH6acOw#BFhDfQktVIM`>Gabru^I$=1g}IQaU@b(U8}iB+p7=- z8U6l84g`Wcwst0axWJA1osj^-NTOm=K$(#K5$Mg| zFaeQ4qQ~~aw8e&O$-P6D0sM|HYcC?~idv@&kw2aN(xYkg9%bFgd&ePTL`JdL@VL2u zI6afJzQm<%6@IlENfO+1C45K@ba?&UsOkyNnEHvp4=RF;JZgefrUFdi-HST`68cAv z+q29eryI#vCDGPBQLx20RRUrWLK5=B;frp@`HH0!y9(Z2O5iO(%BxHZL^`|$!ASyT zS^_Y*2BUut6NAk#;T>~!`PQ0PN0fk#$k4`Im5ZIg=Q+2=02Ld#{sfOL*iN2VtIne& z&3nG=)E1PrdtObQn3HzXn+5w{@~3kED~a%?nN6Hlhrob0#%rVZe5f<+GSLQ6lSD-zQyOd!r;gRTQ zhHT5okOtGi2P+P3YJzwtcJg;Z?JI*dS&rEm^Mw@nMQ0t|MsdjO%$`5y0ddPPwZ;=K z8-~+q)Z=-%<^i$9)2{Q3c^a0SlV4x5zgg_{kwk-0Is*(vvvsoMt%DNMnU3y=1K0pV zWl+U~zBxe5213UsgdiBs{>b}xk?nhHx*vZFtvW#MT%-^`gq<$}`EraCNa?1j*-6ca zX8YgLliG94z7uL{*g7PzNH*6GJt#O`s2k3(;p>3th`))8G-ZD?pxZLcS!=m@IuIz@ z;5b>n!bg;u&YfPxIc$=_IsX=qC=d9{B)f$1907X(b_XaXBm;9vq^kc~9%AsDx;Oqz zC~MMy28W*pEz=bCE7E(Fcl>AYUw&set;wWW)}rRD_Ii?&2&qYYTKwXUd{69ShCv)U zdMP?H%xMTR0&*;uOS`iZaQF?SMmlAwMe*^`rBdH0rXr1jKkVLKAH%lj=2&nJ&!juW z-xuKZp!{j7Q{N(05E(7F)y8;VM*zc!K~&*`AgZ}z2q48$;PgEmjq#~P#< z$p#-0g5X0R;6O=EN$`vS0O1u9eJlO*_pt>VbD~2zZ#i{8HbSDF>8cRIIpgB)lqY6p z&}A^k-CCHM8AvbBC{O3oO`H6^X8G&J==sK%6W@b?b#;e z1i@hI%M)4HI8wt#c2MlW_M!NwNoR91kKhbc%cQt0rfFNgC&AhN`D!ROLXMI!I{jTG z_{;$3D*|PJoCpk&0CEx=f##LNFJpc?wl9d@5^&HD^AY+Gh}1@M-6qZ8rve9wnj27a z8hXTyO&jJd&4ue(M%5!g6*u3r(dlRXu2oSTFwCxn3wPJ$9d;v=O*Fi z{GevD)cB)s?GO>_tRzQs#isFGjv5&S8G!xO8j`FZU?X6AT$iZ~^x3n45u_@ylM%#! zwg!b#j8IT9i6o1pWF!1nR;ao7s>XMmoG)A2r}4AVP1ixah1GnL;!Jy z*?1fH--$S5N)5pz014#`I9tRy)t#p;;rXq3V!j*70PvC^&dCFu;Gojhg3_1~5`L^7 z1|ms7&TgpSUvl>vbeJMyxN5z-&?=oV(Iuhq+)KRP8W+&;Y;&ObP$c1Y?O<|2eVF|X zZhZ)4BOwvlschR0N^5y289tPe>l0OcM_g~j5bOm&^eR%AJ`yDBex~^*DlUDXqg!UB z_Q$}HqrM4KrOVi-dHvN$L-kIZB0~IQJGnS;;A#l=d&WEKH9M#{a#%r{^ad zcALeHcl#pS9~*vT-7Z$Oi}30q#^84ra08>#zjvlqMWOmawYhWS4!Ko}VG~S;;YWpb za@Z41WffF=%c2`X@mkB&y5smaBFHxY9w0?CJ#Ic)k$V!{U6emP(sL<=fA4o&wm`I_ z1dN;U2>J8Q2XQLJBrwGBMgYdF=>dO|n4Uf7{Xm5m1Ltlp))YCMS7lm?dHDIG(;Jrr z8*6vFcJB!j`b9mVV`CB~Frmt#WOpDS2NPa5wj-3*9`pqKJx41&W%0g?JD%;*fwUT{ z4+~xw9JY@l_g7^W=l(h@$%LLytvVtd@;WA-DrPTFOQQSzwXZPD?LxI>_l2uOR=Ut-JSk@s2ojgsy+<#7(6KJ11Ba zR@4M_^be)h~lTz0?7jvgFd{?J2 zQq5k|NsTC;sxHg#$lq-ZBKDZmva{`MR)`hFs`aHuPydjm(NaiveyX!5T{uekmNNZN z!9JE%KkPt3Gs(;p0+(J*QS`*u4~RaC4b0Zdndb|N&Qje;)Kk-W|6uzVCt6b|6d^C` zsE1Tide1`hk!JV;iJtoSJr7>C1dM^4v)?_GA-MLs7M=(%k?{=ZTNpO#ZuWBeo9;Zrwwf zr+9>5r#4o9@9OaH0$EZy_iQLo@K zLsHt98`8+%M}K}fmF3)myI`9l1Y0*kCzc!hF}LXlJiczjcIe(3*ZRW?14E~}-oDp> zyLheI$l2aC<=s@c);iy)Zt&aQs*U1`r;TZ%1FYf(r_cb z^>i{+@q)CtK?W(Z(QRv|w-!so%&Fa%na96ai^-y1b3wW^Ry`MJai8;r8d`CvJ$**y zpgjRqY|KhlDDiKH_sYVDaf6agYj}j?D zveVBl+E;?TRwZa1-yyX*8Xjv}zcYD4K+L8YrX zWtVh)Z#!Qctv?8Rv?|@*W+$U_S!@|RO1!l*?3-If$@~Oq9KpzK}X>9O1 zBJ|X{5zIt3o?orzi&fW-cWtbSdDG(LL^$jGw`O5e4c^v8Pf5Tiz^ex&TJ@TTttp~K zaCq$z{*Zw`50NWLyrqVjX=+63PMXnal+n(OhoBC2#*HTBfmZG2R8Qb!$!OL#c^>-J z*@ff@_I*%hS_1r*Q7`1HK&+|-1{;?2oT>J3+8;A8fgcZ)7=4}GUFWbQZGl@|6Eq8a zXoJ34WGPnp>#(9o*J{9K!@uKb>b_3vgV`h-Msx1&+*3rs6+~zKjR`v$A+d`BHg+w` zw%`XSC8|6~1e&LMQH2Yxm$_@yBYpk`XXa_Hz&VZZ`D+`J?E-(Ftv{d9fo&Td*&m%i zNLz?NiXgKtuf}$?F%xQrQM82YK*B@a4ynQjUB927Kf8#;-7O9U$=fYGGOJ9jLAP~j zW40&k;7V-^8@7TU>)P|4hHrcxR6cot!CaheyUW%G<>2P#IP zGlRni0=l>~4&N7hA#-cxN*pMAjQ-X!`R`JhlgupBez zfir8mWQlb|O^3V^V$bu5t$D7u!b{ti=dpBeEBLs8KQ@D2V zE6!gfiKyvlNvW8Vpfnupq>WZw^@CKUrcV5~xu%f*_y%4sXw6Z`DFNxiDCp71)N}wt|$tqFlCT76d9Mw}+$0j7xZC>i7+nb8=z) zcHS4+>0wS5N$E%*@q6d@zF!O-oK8`S)njNK0kgGyL~f)nji@34u>1jt-15g@yO{(v z)Yf3zzY$&8O{4mFG2PkUbJliGHclpk{{hSkc@xS7sAy9oZ&9&vsPfX2g6JlPMjr)a zwsG2-5j_;A~@VO;J)7E|HXnF2v5))!yWhTdCd5B92xTCRE!? z?5HJcs*`kY-@=B5+jtKeXkkvaGYO;YbtD8<>(->Tic+*4z5EB*fLqE8)Lc$r!kbW; zC=z%oS0N;^gHN1*?!%>jsV@;hNn(r->(2TsyH)i(<+dU{uG2Ol7Nj7*J8qk1X(QjWi|%Ku?C z*GjERUOHT&P%?0Fj;#v}yR5zDSNhM*?bkpij+s0ug#~{^r0^|HZtL9rpA{?syX+oyOre>_%=SQud&s z-auEQG|l9mS!yF8gMA-ql4fe$!cZJ(_S@73@=KnHOLE6@=^tkpjDoEf%Jx}%8az{{ z#)wX5bxn~wkaOEzzV`6F9}bznI49Gj6=;p;Znh{xOE~e-`CY(^6p?FE6=g|~E@ofG z6b02HeXpLFuH*S40j&~94J|+jf_Sy1aRVZWjvOM1B!n`|!9LwgoSDL-X0Ev3h+u_= z{u3WsQqlye=B>l6Kfg}o5la%;&l2)Hs)uF+#Vz9Fh=d7MsJPy0^os)G(N%zA629kk z6}i2iEbOSTSI7V*q&^>m)LopvTcn@WWRzzkn>k87%9}Oy_FiTj;6DyBQgf{)T8^v+ zvEJVq9AE1$M0Ri0hoDkSlQb;hOLw}F{Gr>!Eu59aKtBN=Au*S-roE^teUzv&U<`eG z8vMStDv8FyWlkJbyRki7k$)PTNf=qjfe>P?NrT0<3h52jmX{KNI_55l9zu|qNi_jp_!AyJV)ppWkG07u`R{ma?d&7AD6sxTg^!nm zD4v`|Br%Sfo^(BMV`P6|xc-pkW9rQ2$+{_aU;5Iubrf;+m6CwE6!&XC@XnRub+EhK zQMb(8^0w%1@WJxGVFw9&VQflht2F$r=6J0}PGpDWUOW}#B&Fz(qOobO(=_9B3;m`G|+e~+% zw_=NsYKpfJ_8_icKX4rN)R={joBKs3DZr%+a8PN_0Gf^YfT64Q;8NYMk;-zO-+|A%fwloeP8oLp z1Yg?71Q|%RJUbXPFvXnc+nW9Hz4RZP-m>`24@x!Iz;aawfJdnA=np{fauhc@_$O5P z-|PQt1UvF9OM%ihzXwJR0>({Yh5bY^YN?}ml);xy0xJ2za9Vc}%6?H5h7<3i17%_Q zl-qlF7u=}VMPF3qn*q~X%7D1_W%!k}dZ_LSttEw!WYUL~GZ9{U^g;M@hDT%~~*%Ys_%MO|%gB1Qt?0Q(Z z{$au?)8W&>UY3Gxc{6NhW^)GW<+vMmKN=&mq<9tR_-)7?*}iYqHsaNZX7w(h&fd0@ z+m;{_mI({G5VE^3n22}}lRruNV(KI$Z5x1X%5%b6*t%^YeJa9zz@ly&eAwj$e0W-Z z^~x8Hv2CKzv>tYdvlo_?UW-U^0!*O=`vaYsn#zDkk=n)e7EntdUsMr$b80{nEdNM0 zBP3vBkBkJ1cL{Yo=5<(~R-lXQ3Qcm(i*D~7t)ys7D5>(;k>?d6=Ih0fVu!=w3TDu{ zTpWc1GWeCT14PcKm%l>0`7`q3^RvHqv0)${2zLATp?Bi{UdGKw68EG4>b#^O00?2t zKU^HFC2N-X+m2UYf*s~H7^XG=b4D5CXIB2fKV0qnj%%{N$Ca_yBN{s>r3sU)gtaJ_ZK(b&Uir!Q|D!{r4kdM6uezX zYX@#kM5$V1Bp##!Z+lfQ)|3rNZt|g6`F6&#&4v82md#i*=vw;lOjg~mUX~i)g}Tu2 z*awRj<5!Ahvg=+Us@B-T>h*yyu*(Lo5};)VfM<%{cIpg#P03Z~A(%|tI;8y^kS+G{F{st~eq61{trE8*@@ zC)?F=7VPhyVsT`PQoLq0Db`&{F&CQtbqYHh@$Y1Lb2>0~`e|+J1$MV!=f7gfdh~n6 ztDMfzAOH6-z#ThVMV>sq{EQ!+|LPUOiL!3?J9}*oSwm&H zy$5TA3}`HtU3NCldgYdSQ`~;mxIc7~kO3hN1tyRNh*;~P%NXuGy6oEu|HM=M(CY#m zhcLKm0Hok6Is}{|$>)L$0+a7q@kiaV`Bx_yzI4&%wrnBYW!!7~Fw_%15v!P+oUMoy zM7Zcd`!BCLg8!(Ytes_vRQ`Q4 zz#XWqqTJHPzmxb`Uz39SJR9)ePrpUk(xiT`u-4a$QyX*CpZP4S2^*2n%I;gB-v zHID-(mEhGNzLJyd77@8%^ z+)da=*|LiY^BcMs_6x9@MUof*OExr%eWxlrd3hPaopTxse*ah4n7O$EP znIa6BkTP#?QPw7Ls#budgMiq!ozf~Wz&=9kD~n5;r}Z9no@kr4EWydwW1kjYQZGKn zo(Xi*pXPawH*67Wf=RYGA*CW4i@9Nsq(N2`C(&tMV4-Q0TDzN??n^ESa zB3KZIM|^Fos@)miNeu9Z)lqT9Dxvt6dFtVINcWK_k+^6!E;^J{k!^**VZuE_V0WSb z(}jl%j^@~^Rd!Ts(dFrDls0rPpLZ56fMuM*)IJJK^5+$!l#COcC6ASF(65{Dt5SkR zEOw()z1Yh)0XLM1l%pC)#$L1FhfiSGvwnUmvaj|;5;<`sH~#A#f$1s*LKxR&tRH#_ zyOMJ1>Z9DHv(R}6s&D`T&$@#YgiE)*b>U^)WZP5w`1xi^V_9NQg>&hE)LAgWK}BI8wu`SRK#X~;4EB1b*vPc>!(~>JO>FM@ zi%A@Ol(=m?roS0?3s_pEWIg;A}-IDejLqHVY< zQsZ-<6Mu9($E}l;o0H`8^~`~zh$l!H{63oR+jc5IFnr=OIFHmScl(_;$ZBSw390wD zD}oJ?+jG!HX+O?JqFdbyTU{Cwzf3c&7R)p>-qX#c%A~65AE}-iEx_@&!F$C4uu#NL z&KG~3e19|_^0wQSrLa|Cg(kDi=3;#(DJ&R*IniP48L5fI;g7o&gJ!?2<%h$$&@laX z%qjT?^O(ITc2L)*c|bBuQrTT>Gj4_lb>M4)Dd`ePp3sGOvrcXKpJ3*&$yOrRr9#AQ zaPp8Yem=QqJmjAiI371sEG;Y%Sd*W}E*}fiQ#~}IdQ|0myg!erJ8pO>xcqSuJ8|!* z^rg{<+9X4gR8H5461O?$FD*SG04+eklX-g4a7Z?^7@^o*$b62UjapAA7d^)|wUS>e zS%aviaTT;C8rg1QZpz7(*i1Vs5|Q5m?sQkBLu?3UqeY$D_00%5p0GnM9a*g%ac^Xw zThvkzr*C7YvF9`Rz-hGottXKTr$x+r$D)j5 z^WH2gg$f@X7W4_+Tuyw~)?&QxHfSVi2Nq^`j+{~wJOW6g$~~N8B*+&W4F_rlY9`(# zshHk@sJA!8R1&FkaK=;UuK4EHi+PJ5iZp!-{+rJ&ki`M|u9_rbthSKL-0Qyd>SSxVOqi2v=r5lHZm_bJK`M+8GX4tT_R6=} z!LkytjGdH2w8}A`$xV93w=798Bt_w=q)bC55XDECE@|98yM2$y*(ru7m44u+R4=#* zo5Y)89S@5}@;|7a5%1CbH-yR>{c1$|mbzV+pveOv8<+NtQ&5Eo1c=POrW=PtsGZ_- zzQrR#FD?DA{_YQyf}88!mPc2_gyGSZkjcCQpTinPzuZ!;`0R37+g?GTyA6!Z`C&bt zHW$E+m|{{AfHG2<5QwP_ZhU1@{g5B#m{0D;FeCCjpJ@SVG$Oip$VSB;3Dz+5nfZn( z23gN*59>U4Y9jyhu^V!V=iVfL;y^`BD3~o{pxA9|BQ?@Tlid|;XF$3 za>{TQf0?}$yfeShKYBTWL&vX0GmaxNZ08k`UN%Bm&)RgDzHdn4dzUtcf1b|gqspcJ zT%|9A!F(kEP{nH!fdK*qH1D&aAvmS9RcNcN6@`qs$iYpI2olG;{JNPq(kd55xf=OR zQ{KT(=202k^rU8LDr_9i&*sss=2_=o2v}gPg7>}T!2LV)+%-*%0P@Fu0#d=3U=u|8kS|)r;>PDv$*+n^VB%WU+!o-q-z*3lToGw05&o( ze-1D;ji-W@Eli(XQ#BC&!3&fOzSqqliM5DUfi`y?{=zM zoSOK<6yiQm+89GfMRnO#A=q`T(6NdZL_MW6xdTxyCIxeqkH9<{0k3o3=l^OAZbXsX zE!sB(`s{%lL>Pqhd>6C7Bwl@4|HY3T`hL8hL`#AQLIfSXh>#MRUH2yRg z>-2`-`NgoCMxXr+zBe<;YekEbn3}QzO{XZ|KS!IVmLo~TE?Ag8<$1+7s@Ci{mD`$Z z{ysW@j!1KuKOQ^fr8xhvVq_Ra>XBWSxAT&kgTq`4iVo|s5qDHh_BwhUymf|Qc6!v< z0C}hnpUQKoa%Fdpy~W)P<~q$4CWydPVW!E}&s83%SnFfBY-k5=0>#gCqwcr9ljm_U#!{UD_f=au?CD4!MWj5UhwDQImVPxZz|homkNU6q-l*0 z`RRwgMf#`30i@*Y)K(me);Ajc51jRfA$(j_!VQt6Uw)iXzI>uWKLGf4DpT z<#14A2LTh6QqntSL}eX3ME{N1C@%K6RH~+zpxcp~l}91d;qKK` zh7uS(c+n%cdL6(E6XYr%`9>S17Ds=2D~zY8)x7ZgYmQ9A$m)F2UFVtVezw{jv!-fS zwRtcPepJ=J#~T+nao<(~rYD+*u(Zh)omkDlKauos=tKOn+bX^Vg zvqf?ubAe~kEpl|EZzgy0n;iLF!KF0C07)F_G^MiW6KX5J7DFOZ3T1$x#LS?uk3NO~ z&?fXj;4y)icg&hjFa7=gaJ3;qZTvI|RQwhNa$80{T3v>%sfQXYVs22HJR?>&Wwh5M zxv2yx8Gp7vo?cAJ9j41Hvy`-xm&+a{OhB1cWp9x_6TqI^j0_o*Igp@Mq3ovxNC_y1 zr~xhthwM==kA6aB0%hP9*?n;Fun@R^IJkj0A@Pm>Z8HweK2Xl7h^T2OY1!C?MMQ}? z#ONN1D?c$*;Z(H;R}_F7)kK! z1jCCq--id`=m|MI8Eh~XQYQk9xD{mP+0%7@2?N5ase<>|~LcYY0s>YF_&v!^gy zFSrv$^gqCF)%`&9mnUET0btf*rQpqZI@PYi?^sAR`b|J=PDwqAg%q=3u28{rKUW^^ zbcveI9R24qS$?$`$VgKr^znpgL5+;r|4!4O924pV2{QNm_*a_{<2b3>e-A&sY5x5^ zzD@757mZJT)H3(F)UE%WBgsta=U;H0iEf^u9xYr@Bi&KoXD?y6%l`MjOs^_ z9X}W<@>jZ&h@A7SY;vGpWK_6EapsB(cobjJq*jS3j zR9;7%EKjGl62aJ~H^0q?9j!3IsUATxW-fdAf)Z8!Uhb_)>LXoqzTGH~`uXZWDGw{n z_U5by#An3S6MP|~f#(6(_7CsoETADS=P<|mchOI+p1UqDM|zk0NYK)O*B^yt#MT&+G!vz6H;?>q-OF_uXCHtiI%C zh`Q(w=ZbMVjpY{If7_QsL-^d~o+qT)Wj6nrhgJi3e?IkphXPmWZ@#4)TKyUEJk1RHr>yXb)(NMw(;)2`K_k8$&K>B!q0&v;dCuts{9|bh8 zeDrU9noLZn`94xQS~-xv$}AUWzPC%FQ$BFS;U%X(ZOfOh&(i(6I@~~IJ)tAc;ZJKz z#?k%HMKWd0t~ToBOG@1iZ#(tcSKR;YtMm__}mro~i` zX@`LDu=hHT9$gtcnm&H_Z7U$9^`qw(?Er{T- z%DSuR zAB$dJQ=l3@{vBvZeXUp16x-P-v4>vnx!ym9>zlYefCgPKW>N0u1-ei`R#sGN#twNN z`kk9=pK>=JL>+WZ)af3|AGBunw$@%Vxd;Zf$UN{{80KpouXQO%YWHv|NPOV?UC@Vz z?_kq@)R9wA(?w7{`F>i(LlP)-yC`FFp4?rQlzltwV?@+LaVKZo#|?MZ1GioZCBDI| zqP6Sfrr(ZZ3k9AZb8W1?%sivxFeykjiU0V6&>nU6!Ty=cH&7c5eB++}X)wGUrs-%t z`DFfTDqP%$cg3WWDJ}G5!P+f?bNcx}exo3f7rU&I7Rj(lPpX0A zwG_RJkIb(B+Zn@%6MsqrJm}p{#BS_3ovtng ze%uT_3?6mb49&O6;-htL$l@+O2vfaxzYVu6k9A%CSijD4HE#Z+GI+VydwOppq;BOO z;3?!vrh9Aa2Dg{=>LfM0gUi{=xctOnHW5k@8XnFJsTNU#H@)EPEW)uyv*EI=zb#Rp z%t!tK2FouZre-g8lu&lap4i#gY$GM~5%~9l+nQPPw!|JrHO|t=?&zR}iYFz+g5P}2 zKc><)JXZUZGk5~GdxgsEr4T}2XMN4T2TmK8e((TkaQXM_zXSFE9sZkH|6Y9h9yBb> zYKq@_lM{{yG!SPV-1?of%Qyv6bVcVR@Zsc6JrugPfv`aoZ* zz*~CN!?mFtG?~4;eWXm|}f>>YUn~vG=kHI%-9mm2plE3kyE@%0xeh|UN ziO1c0SN=^8@k??EP+yM&Pvm%0dt;!GTsCrAf2YC^>JNp>W5`Lv*+Vx9_U6DEX0MV!#Op^}ZjCUbF(1i_f|0?@q9*@k244mfok{b6 zR|nc%j4zQ&Pi|WN#a&JQw%Zcvuj{zy$Vc{Z&(_qaagMNr(!!7|5?F;fRsP&w>eh*1 zj^Ia{6JyYnQ`Ezgve;N;9_+_vFa?9@odXC=O{a0*u%LVss_6MAQwinLFdd=v)sTUVWP(nuCOE=Uu> zUe750F(2BS$u`%t|n{P5>anXVPt7jJO!j52XEsie|d(M9Fa^D`))3$y*^cpEQ2*^eK&);TJO6f>x`SL13s?%e|&8tZtiF)5^@-! zfB4m|JN9fBEWSivMt*G$<&_RuW~k_NbmPZQ7f39)vnxJ1BA{0soG?*I+VEDqvD5=a z2e2z@KNl0p<}x3u)nRN2srA8sH-tTXZ7ov!y03^oxL$hYScW7x`|gXrh8y=(Z_jtM zsFe4+{;|q;zpe5zV(X9Pd%ckK%;zt^_I2hGnx`zB3SMa)LN{u#Aa(Mt>f!Vi@XF!Q zt6N>FA6}(~1RL;=CAYtE5t|m)eWEm`nhR|>pDNf1Wqn3J_vxnTg?Qx+2x?y<>7dgp zVQf-u-80F2rSI1_b+<%({E=mr59;~4XPI^%{TP!+=;l}fB0HS(9Cl_5uE;AoWf%Vk zU{b5>a(Wc8JSK9(H^;RPqi*owVa~?}j`9LM3MJQf#qX(J^fyQj7*7j}w_%=$7VOPH zr9vZ4Pw+^d*Sqh*-GPd?!?HKOwQzI~KKL%eA1E2Di;)Y~z5gNR+fYg)EZ52d-e3mX zw6gbMrAwIM5ngTKsLWzU?=1b!qQN``6?oAp)tS)|6@y;D{v#`zY>Jh+ugx5Ruy&hQ z-;7Qv3b(Os9Gik@9UppYj3NzSP)g=*+c2S+FR8ouir)}Pt!=QFku|=M%rS{iZX3L+^BFhk_hy@xi6)5RBv!jn-OI@G z+R3@&;@I$7S~cD8j^oD_0`3sq3u>3Gs4Z5$o_u$Kp1ZYo6%!^u9fXUA)2wg&?V)#f zW)GBlpjY9@M|um=G9JBWTu}J5uL1k;xt8(RB1YO}h5Bqf;JZ*OT2SDmG-%amxfnImI;Rmg2 zdArUoIFe<9T3}`_m(F_4b?p$j=-VrgkdrUa?e8yM-uBE-#1H7AbwX>W3f#I_%~_i# zL%tl|9n`~W(XbFVxh42gkmqu)@;!ov;p>O4{FpG%eQ-uipyWb=WuU#X}px^l(GpzPDMRS-X>*+MTRBNDp zib}KunxYsd3gUSArGJzq@;2WwpPdOOAVPt&QsHXqA3!p*rSrD$u+QUpF^6@fP>uSX zC999F{EpuxJy>5%^YM67Xz~yeJ87kIw~8Tif{3iBzoDJq1QiG%a{>~G-Tr*HM(I%(FN{aNfw zdy#(EPO%Ucs8>3AeVb1PRo?|w|H;Zs$yc$-;VrV}zjBs8oDeX{-*-Q0;K#F;h2WWy z9Dz6^9uB&;cabm69_KzdLs4I$dn;}$@$B2KkxT(0T5)Jld&Gubm>{F zk&Vimft*PS0(eO9{UtS68ScfnBIobzh@|yfZDjex^aeq}JZrH+(E(aL<6U*P_=EFq zC+i%L{<$j%75AX#XA1oypQg{6CYDN^NM@oO>#`CqXGAoZ+HaKQ_KE#IG2y&rOiUXk zm4j!z+2&7f-|)?Kxd5hLExwE`7F6+{`WU#hk)=r$USiWXFI`X)Vq&|m533;-mNdFa z2HqC+*CHX@1x42{T4p55_eBJ%YP|9=wahB<0q?UK>b`d$B~>~G&n@0*oaSrCG0#rb z1s0$f7NT=vSW;+~p4zb#Rh=n5{anO+bDb@P!n;u*r=b1e5WZfgh7O)ZIjGcNMd&f` zhtT6m$2-f7_&`Z11OmNLOLN7_kRip;mP%i{I-T}jbjM{N3E<{a0KoLm2Wk2SUBW?hzMz_NH2-Kp*h{)0{y|=^HQ85uVA3yX*Ig<3gTWPQ@EU}jpgADsQx*1w z*0<_obFzm(;Oh0w6xl?EepdC4yUNFh^;8mfm+n8*Ajuk;(y!3AOwud~j2mAk zxs@CfQFHu_S&78I38d=xm}dBDJwxs$i|Rrx?X0C^2;_ssV0z<7EcsH(!&@VZo6?)Y z)_qwcOV!_?LEk#41Xn-Iu?!n#KqCpG6rMMP%?+x$w zU0L_uS?9-@tdlu=pRxTsd(RBH?)0}7)FcF0G(c(&Csl`m_L&omAyK~x?4%#Re|5NF zvLVTwntCokr+q@pk%HTKDsemw9Y^ZfTL;~7YMaT)8Cy2kb0+TI<|nyE{W#avBi*yUG zQ>H?llPmJN?gXmIE2o?09E$bhZ_pVHq`IC7&2ls16YcT{V#Cp1rzE*;|rLy0X1C#EL6eGFfFh023Z}4)0>2 zNOg^HR^}7#U&dmp{|ZUvJtWbPe1d*Cj<3gZ4|f>GpQ$@#rC4jNU^GnYfT0}7o1fE6 zKdptIJbD!H&rf5o8erp?(dBlUMV`)D_lB5ma`M)JPO+z;WqrBw;<~GVGN*UmKU>@t zg4INA{t~uL|G_-#&IaoWy;U(EB|V%)A~|)+`T!$MnG%*OFJ7Da&CkBYif1| zw{YDJ)5zDr*N`^4JMNhoY{@Gp-3e&$Ux7VX@nzc`&{ zu|a)#^`@5u8IL-#ykXELnrE2F&DULm=7Ul-yUgT_A4>-osow@X5A5Qs>hW@cLP1!5 zP$;AK3FFOMK|imS^F+-gQrn-L14S_4*>$2@y3H&RJ&cp96~?XBZbm|IVL1 zvr=o(G@mM5-8tdR$ZtrCGQAOd;oSDbZ*r?OJ`;lE3CaGV*>dv}2uO_#&&9}s+U|Kfz+A1y6aHYZE_uyNgI(A1=+zVWsrz^U0hu@mTes>rI&F;S z#_NmSLCkl&?zBtwiggbrE&rXes|fU>(UI6I6-#L|+%eWzo*Jt(sQ=^;%a(owXW0`H z1Z{Cfk*~B5;XZ^SDYy)dUsY+F&dgH#+G|3p6L&G1bG#dGCpP|+ftAxkNA|5X3~IEC zeffit`tm7YwO=Zu#6o{W3g{v3>ZR4>9u?R03vUg2--V|24X)^J#Tmy5!GGASwPzzowr$G3S`7t2DF%>z3kR4&!4eDUr6?%kJgQ^`>-K&j%k6TKbrpK?8>sO;waOqh`uyWo;sLo)u5rgY<1&pI_^#C{p&f{ol zV$5O&T+l`dxp2?>eJeu=u#OoTq<`<0zYh8LCdDcuf?n89B|t z3CpxUSwkQ%_<03 zL6a2bSf`@n@Uvm^jp)61l#|I*V%ytkxm7idPWr-jsg8mf8x%~WT;*0mhNWEj#!3=V z%*>LN#mPIAUtq?5fr-Jo$jXKiQI7k=?`z92-;`%m)R{yTEbSWY#T(u7A@250DgCpUP0p&5m{F3#9B2BB*WjhFge)}O`kYargFYsomz$( zJK~Q>k&2K?Fjwu|doo0Ya-14F(O>M+DEAR{w24ScU7wW(l6-e-{8cDKHEoWsDbG{$ zgFDom{snUm^r-C4v9Z$a`^daiv7EB>&$I?PmIIpygQd{ z+rQ1vfL`Z4J|s+swQ``VsEhlsO2t+EMeP!`wkv+BqbvI_tsm71cvEC87V(=;$u=Jj z&l?KD?Q!OdmA1>=Q7Gg@M3-XFg9*y$oP}^(fp}XU6fz*!N8%qOXWP@K zLy#w1Mfi({%SRUMe$*83(zj4?e9(JcOAheLW%IX5XN#}BR{hh=1*XT8aCJsnfnwZ< z$wn>Fs2SDZY8ey)l=8LggHB3|=!9BcOo28=tIS{8XnKqB&lpCf&_?4%YM85KH*IHf z*M9JHa7{uqP?WZ;KhB4;@d2k32ciEF>s48$4cG5!s=B%2vF+DJ|CGkm@!565i-Cz& ziO?MpL#^`=%)*?|07mw{qf;I4v7BVPbJR&ywsBkg872Q z8gdu?%dm`sBzLY^ZHK%S8+RT`yDX0v?KLGzZg}y(!rVyVw8hywKQ~JXA?|L=x`j$M z$A1oMu%|wLRXO`@w@kiOWoTuXKAfAcf_1^X9k+IKlvId+TL-S5aMdIUF#t)G=Nu8u z*VEGqFMWJs`eD{=QkUmi;vu*PyX&nK=yB997hb06AQCUv6$+)0XEdMu67#&QOemcJ z*d*8w{+820*ixYLd%qv_uh{1jIg%c2F@GxZ(yv%c-9=OP=L@lcezmc)5(&Y2;sTzS zOMfL{w;EpVXuOlB(C4igx2Ws&IrSb*nvXvu=fr)Hs*CR*MJ0ZF$uU>-3aWpOIl455 z>S~k@rlZ5d!?XmvqXgrYFf+BfrV&Hsa5yS=L!ca~XJ?flYXHo(OG|UkOqHzjtNP=wA?v;M^qT~gONTDVL)GWJO< zkGRxE9-G*Wt0zvVO8d*((?cxEPB_eLxj5YuzoGh`RU{ufLAz4H!g_f43yCO<=ju%3 zTw&NnC)Q&X=}!Y>BoT(=j0AclEqZw5WD-% ziq*4m(S-3h_1~wEMun}$dv+XWzMxpF&G}Z#GQs%+G%sDm`l%t?fO{Bmv0~Tgacia! z4c7M2GyneE(UVDf7tFT{B?b@{;heT@a-a6jbG3L{HK!8-K)X^FJYX1xiE1sg=4)(?p^@wUiO%%2r5k5ZtM#(t)` zavW)V#Ff|+tBc(fKat+uB9MKjFB00L(}}(UYn$@+Ki!6k($o2Q13s9NF)8Ba%?&g< zVl9pS-yh45`?(s~m-Ff^!M77TT7y!yDKHLJ{Z}-KWddz}80UR^KI>2B2VDja!AI3j zr7L5aeO&obENCl`L6b6Ex@l=zfNp(AW*$%7ifBM;g0rTCe>0`0D1l=u#$=^=SYG}s zE1L7gYpd)BBfRq-Qu*!czfvQ*cXmSR$ACptizv+%REKQ!uIa-{xF&ENa$3pJ(3w+i}jn^^U)GMdk^4Ht-JwFB}bE) z37X=&k4A0|wFKf*20cz)4t64edX&|4G589mmOeim8Lt)0yiag+8S68z3uk#Bsb+~h9pBTH*-w7K0y2wcisW6a*rWI zGoH~rq!hP1D!tXXQY{!LDA9Dfur5g{ZyvkaOj=fLGFH}h)z^$~YfUW>g(Vc9`kd$! z{b|6feO+G;?SCQj+sFKv&ea5g&lKRsjwp5WiXo>Pr&Fj6;lKYud?&=0jhD{ z`7{7%v~kMvwqO)bcAP6%`N>#gvBU;7@wcC@yjVaokasV+l6Q&yi{KL=RnZ0Ak8lIl ze3gRpv7J0@G>bD})OY>fJagl9>FJ01ON3ft=&$gp!9fpG4_n-rSD053NkQGHh*de^ zFRQ8H@Ygppe{rZI-@^EJ&eRL~+{RxmML_)y^XQ$!cksf$yz=|t{pFlfnoloV;` z5}7ujbwX7i3MGaz2c{p*WQj;6ausbw(|QQ0ONZBFmBvMk2PwYFs}PVT9}U>XF1pxY zH^Y;q49^z?8Ym*%>J)8&7casOqj!|~0?D8GRl{K=YN+(B_alaDH5sj8WTs{v864?a z%~9gpb}dGQN!S)$4Xz@li)vcph0a#pgC$K{$~yWBh;_{g_O_j5&(vw;i281}PSY>vbaO?ZIL``usksEpFY@gx*UH!@ zQ_E9hObAOY`S`AlIoQusLL&t`-^3aEs&!B1*z2`QaQ2@oB%hpQ3+zqXno4Iv2N{HI z{X5f-03b;x{INzoE~@B`Ogka%8qGD6qx3nvfjs+E*T{hoJ3c#sejl`1jy*Wffs;(sqR@CA@KaC!<;&}B;g8Z)z|vr+tUCZ|?vn2I2< zS6sa0d^yyBw-x-I*f2>OSdv|kMBMW^Mo5KI3Ja5ugj6K3I1%dxwws*nj>I2gTYWl| zc>-7yA1fF7>H2_Bh#nX7gyCV&^4E{s#8%;lq*WYO+B*fBc=O_Xf;UQzHPFOcvO0B0 z!IdN$OBmhG8xWH<4^=Rwd^cux(`}9cY(XtAA1;VD*DU}a*n2bLstNvXo&Is= zJ|`q)VT{yC^5=@34(d`1WyWsaf4UES%-8oLj*o9cdxc`xQEp56bm52sX*OcZu@~lF ze5Sa?KSjK3|9SXU<5uZ2S=nIloc^_KqF$-~Rqo6){rd3a^^y75TQE=g5t8K_GEYV6 z#o9=Y$0y?ZpSLIivrFopg?}nhh;V+OI3vW;ZMe6jUQ<>g5MX0fm!SJ0RPi;2UqEbH zMv{L29I!AXjp3U|i7sO z`Duw_7G=0E_=H%T=OQ{Wn)>h|*Fr@(AokwO<8LPf$97I(+lFf|JWyRZQiAmYYi%I~ z{;k9#i7S{bn}mka;o$I{iTg&dE|Y`hyx-YBR$kKzUiu8D0phPYMz@O-ay{dXPk3x5 z8^n2iuyYdG{e%W)7gxC| zmUB7qnLtvXnl6q~YA=rk@I2kjs%AB%m_|||;b4yjy_rmc90sZ| zBosqn&_AdgIy{R1>-X`skEvO%k7uPgSobfEKmERMpI$99qp8c&UKU}5uxaZU{hS1@ zU8j+p3X{kid;(DW4Yjc;aU2G`FU~Xk+v1(NiuN+LAfTAZNbtS19qY;%t@bL07;bW2-JRX)h|Jq;bV&4`u#6ktQI6NwN>AWF?Wr>iWZ=Y@R8RjDZkxx2 zE{Z%{Nv%p%wn$xa9fYQq3RM@u91^WcOC`t7^VjI+xEt}CHSrn_KWv(1hK`R;Tj!r} zG^%0c=L{g98VG#0$msZ?CEZLM^lfx#&!g4 zILry{IG)AviO2|r4~gUhQsF|?=;MF{)8Mf=V;hx}D_>qern4>5eoH<`r^XuRYZ3og7`Gp`i`IijocHh(7R;f|Jlw3#X$ zHG^h|$pq|CRrAA#-sA0+Kb$Gho3JSCx)o>HKf$RmXZ(@z9xSxJuY0~=*iCVA`wyUi z?)D!h1*YgC@d58ol$z#W-v?=4Lv~%8!gz~{z&p-MrT?JHg>45UQ|8~D7teBhFuw0# z{!G(rr=Fytl&U&chs(ONvc^zlZA1LpSoM}caH8U@?QKu>eQv`qW9>FC?Am;okhZ0# zQ@z3$6?9`C9ZEXe&a^s~YcA-!vu_#ky9y{yOi8ogPd9`uJ2GAnDOGQcHXx|{vu6<(- z3bp)k0=V%5fmGOHaJY!A(g%*$u0(AD;ZGRUT|?Ju@Ad0QhJOFW`KFfhP!`oWSKt$`%-(ks1ghp9 zR>PT`%etli{HNci;z@UA_Mt=aW?+Kq`O(IWtgE(avVo5d62Ienx;g_C>fKLSkx!WF z6`?QYRXSwZa`4UKx}+`G!(P_}qGZRtY`Ya;0wEDg!~!2Tb7s3l93NgUfrX zbDVV+Fe}od=gn>A*t45om=cZ_@b)q?i@D8o%#C~~DEYo+@{#GxVZ;C4hEZyK`Hy`p zDJSX;3U4EJLnoOD|90kI3{rV#t@+%R2eb3mpZ~}4*1C1Bf~R$--t8ZrBs#aN%=LI`dKvG_63_RYyjCry(7LvF*sp2Tj$0zZbVndwP1JNJp_B_1V;yORI9Sj## z7U_DGhxcmu-aCzGO(oS2SQY>bs8gQ340>h&ogEZF%G}oz>nIt(@Ts<4w@v)}wa9Yk zO(utGD9d5mM6TbW6;Ks#6Gls#pG0sx)e-#Wb`nhLoLTjxFaNsco8xP`I73tIi?lCF zPZbs33=r%$E}5E|6>pBMrdXDBM>Qm;8xOZeyvBsLKO%H1`8eDFJ3h+WRR9*MKxLdG zmHlRA@!fZnNo&O`;OIT7afifWyy{?_HQhe*Id25^e0djVE*sNGckHp@DhJ{`r-%5) zJ{0!u}dPA9#{Z|_SuU)^`BEJ@u z0>QEv&0}~ynj?#D6QD;<2*LhJ#0dgy=dFR%J+KD zs)Nox@BEzd%ZuG40f9c+S{G2&#}~xMn?Yr=v}W;>kTZV zk_e-?^d<6jyYmr%s~-P6WAAE6=i|JW&c%S&Pug$R={V=U&iyJV^K3&LF+z8SU2le5 zUZ^Io-Qwb`4p=R1f}Hk;XE1a;-=nBr^Fr-B@#7#16)q**S$xDF_K1`gz42$>Ug6Me zJonRwv9BC!@u+^qn|_JQHvg6f|1m_a|bw^iK6s%C;BMMCEe#rE^OL2eI_< z_CrzTwA^o-J0UO&ye*7G;ztP@5D1t{B^WF4qKaal@zZ!p@=;PvMY#NzR&1pB!K|}^ z_(NJ(@ddLCrD@63zc_BUa|Sz#yN!*5nGtnU`9-A|OQPCBZ@W?dl)TyEFWPlo{73eW z{^)7`L1l6%#+FLflLa%yrUa5_+8#_)B(=qS(W-ci_;h9Ye6^Bgke>H3BJ<9XDfqOb z>a!(ITJr*5cs@0V9@n4YQy1oSsG><`#}t65yqpEpk4?uzAxE4BY#XosV7G~qJX!1? z3i_=BAh{Uc8DDa$EsePL{YFh}n(%XbSzfCEt>Xdtil=>g@U?4<*eckWaEz^h-;=j3 zG_$zsO;Q)WrQ@95cQGx$u|ON1mGE`T<9+6blPpAogu<5i%X}tCPh2~{AI`i3p%PsGdgFKTTz=Ya9~kmv>f?*8v@C6|^yg0si#7saIW zudEO0et)A3#ll~`K!Q=@UF-reV&F4UjY0k)ihn7TJ2J(WTS*zjWQ5+Z(V6mi*r7Sc zL21)LCuCeF_odcb_qJdl?ccZZG;^A|_!4ugSCkBL|O<5xDXMQi5^h^^pQS0zqT z(&2yO_>*smhsEQ%_9`eV=d37M#UJp)tG9^vcr&cAAv~Ic_T}pxqJf)HubY+i84No1 zgp&_gdU|g)yl8f$*R*>bj#Si@o_bgXK+`JwE;B&PfJ`|KH*K5MY9{WL2S-N44_dN;N>jGio z0k4vcdouzWyE0y$U;vOUu&b==7NTe6p5uwOe zEc1ca3FIo~8ozx=>--k$J2iDV-Sw%866n!+_|ivYa%-mefM6p`)YKGvTAK)+OZ8f6 zmP^TO8>W7>J7obo4I~loBoljrBM&5yMOGPdl{_OFk1jouUx7)TYkXuvx55~2wAu+q zc>pzJ{G29luflUF197vkWB4G89j3;5rdiY@l}mWqj?X$NiEsXUEy7RUP#cUXHuI2Kq5I` z_s2gd`UI+|XZl;MDkmHud;2`qsXfvno-63g?XXS>h>ix1*p0G(s!uu~1n^*B1rHZ(f3RIcp2_PR2KQy+qNYwp*FKAXD z=ctVU6&#oiDfmBc$aJCq{iV_JI9xx=7~|SWKx(Gm8rH254>~uZte0pOu4B>$&Q|}q zCSII%mgCur>t>=243d0tz*={)VRX&AuW~LxEO+R72@2E`PCa*mx_TA`&xc}TBd*~- z^@S#=(T|Ysb~YA6?09B6lW1Mf^MeB&Ldna02_Nv&D6g50v|n6|Kj7Yh(U6l|1?G4Q zooln*QpPNGa}jLbKz_th_DHqeQ> zOhtCT(-Ww-qr>~kT&|MNQ|ntpoMsJ0`WSbIw>{Qyb5C8erjlunp5CUN+m- zr9Oe@41@3^ntEH{LF4}hq<~p@vhmD%aSIp7$#mre>*bSGG+_O*s&TZh}jmq zpa!=|ExC00V0JBr;y4;wmF7c?p8myoL~pJ@e5)9!K6j?*>wu>q=J zNm$n;e+RIfs#)z+FLY>Sp2>OzoZZ@pWa7ysTr7K7+4g;D!Xxab+NEkH^CqKA8xWx- z=At+)xO%x|bj`P~(trI7O>g=}<$~>oS+bOV)XT4`f1Pwv9|5!6e09(rSd%SAr)#RZ zL+~R;JT*f5FAmFb+tnA}=+N}Dy^4?*M89VI+ZMX(>oqHOuTsVBhL$A#hql;#+l0z~ zJRkchw|H|4(k~88oS*PVgXP3bcw98l);|xN_HL#+26FkA=Ktcf!v=&+x+!k8)y@_( zz6APO97|6T$^6BM&A{{p^4x-=bUW2d<70CMTog;ZT_o)yQ++d6QWFFn&Hv)`L@Bgy zLK}Q42Epp)F3R*uSt2at)+uRIY$ET>24YINqSONB|5NS{=_$fE>{q<&1C-}1f3g~e zjok_EG#8a+h>_1xVut^6lwf7Dc!L?79j3 zku)0n(?+3P7T#nky)50U@dm!05`4_#m}6%#*RP3V5?$PU%@EC<(Dzl zS4rmO!zkQWxslbtpHZbKxby~*xeW7=B2=j$OlHU_j1CPVV?Cw1eirhD{yCW+zXSS% zg1Q8mfb?S194thyh7#}xPXDAR^yf^auz7w_|70Db+|Sd@1!Tf4z8_y?Y4U+ck=)PT z0zdv#RKIZUg&RO;f57QMBo{8yanrlL<9lAC~gTIa2 zl4;!V>DG(BQ zIaLc3Sc!ypAQ^T57^< zM7&kUdLW?v=0W7>$unj}mPG3!0VUO=!BWE1TqaXTkLKck8=;%=v<>m91uS+GJ$m6x z9B(mcAl*pj%{l`ZGO(LJ-7ruLhz`@MhOrl0cD&ccq{pkgG1;CE9*$K6)Y^U}2!kaM z##?N}XSJkcIef@q%k@1hGo|ENVM0e~uo;V6jl->Gfs6In-K(fW78@O?zgk)xngOm> zC7}S9Xk`^#d7w%|4Rxbn_9f#ZQu!G;q>9)^$gGpxvb{rxC^4H^+;nk-SK7cT@u|{` z1o@%K&qWTVsPzH_0SgCXdv987yWlpeOCV2R#i)bVxJN0DiEhQ=g3lgCEjUnRH!V2u zWCr-vKGRI<3x8Havvo|cOIAaBKFb%Q%StJqG(r_{0LUj6sQ+stM4{`=q4IG1pfc97 zdy{oVeR#~-Koi&yp_gs$6>ghlpk%xHIzv4NnjSXwf}^HtDZrmutg(OUbdH{o&{>-n zDAEAz?C92tS<|#SFLnY$$Z+*oK zS0CSaC^C}k<&t@}3rj~U`epA*{{;=BRVeAXkagWK=A)5bVmgOjDbJM6&Jn$E33ut~ui%K^7*++s-cj9%%-&U4L3$ z_^wSQFIwxPi*wydbOk;F?2;8>P@S#FFO%&cnYkErO$}*cB4q+iey$=C&L+1?7Z3oQ zThS9xSH6YtF6j~k1BZM8PM5UF<-7FHHl{C1lj{9>N3Zwd+#INbdTg=Nk=^(J2v#|l zHn{Gbr~azhF1j`Oa^Kll{-B{3%~mX*xFy-|swDzuprk8Hn#*uy*8M?<7T5BVNdc_* zmqb}gbWsY?t#>FW2X`7T_(>@zH*NcY2x(Gsc1kKp}W!y8JQ~)ZjSHgKIIb*(#H&vOGlDdW^On~ z`hJV}l6_sfG4;8M*xnHNwulkVVr~L%odAwOi=EjV+W&0bYM@?p(a~aQPChI+Np#~1N<@Mf_ zrmJ`|i?PN*rq)yKUCx03);h`UK%`wnEc`Eyv!d_U`Chq+Sh@~C^u^QIW9yjQ6kn?6 z%<=Y7EwnKTXA%$v1~8)<$+vaToWN<7dxVSm46yK}i-apE1PKh`?u*?p`-Ano7`j7U z)wZP^Tapfyz?CYi*g0gxLn+KZQa6_k!?)(-9~~yapl26}5|j%EpD}gF?cYr<4O#+r zx>;i}LzINE2scMLtyo=#7UVEbO$?gSN1!-U0Z80O$0zreszyx<5*9!$Hc-#>C7|Sq~BP~ zx=YPa2M<3d+ej21n#!gfuDB0?XhesGom*Wp!j!5lI_slDPUeUA=V!m_8KRwbh9LWg znI`@vXlnTDk39%e)i~RVP?GF-mc&mL3-rTN*;9H>o|uOhdT7t~%zl&>i>*}>t05d< z12amDMhV8HiZ~hFoWvuN)*`@RyB#a0dvC(P6xPB9}KsC zYCmJvkMSltbuwnLC-d>PekaDZ*q6X%Uz16QCy3-KttL zm*#BJrI}8nFrW3!csaTW3kRKt<>%;XubhYBDcWbT^J%W$DRec>T2_HzhCfk?Ph)hB zNfv>WR;hEu=%pNaxcqvtI>XSp#86!X`SBy{qVua2g-oC)S7UlOce=IIp?E!=+R)r7x^5z!0J5 z&zT;}Bc) zm5|Hrz;;{J!(7(u-#Wf)-PbVYq&RX8&MGwlMm>^}Ss_S+sYi2vXlwFumh`c+vx7LC zmjT5;6!Lk$e(3AxeJ6%ONIQpl)^214%D~tsoYQ)Fl-_Qe&=mBc%zz};rt7%3mI{txb`%LyDfbSia&Qginu+S5nsnz>Kso{=Y2HFL zU}rx}Z|u~Al|Yd{MWJZrI$n*93X(}hSPQSVXJmOsc_nfG@ws21<+;zzw;#EXYI|zv z3_qVVKNV$eif(Rv4{C{``#MU+jEl(4fe`74y3j2oGftGav|RfylIi2=yhAKcELTRX z_^F=b-i37Cg-aprW}qSek=~j$t96fsC*FalLVh#`YYc_tYq81OPoBJN>sjiIJ_V8t zp$n<7rc#zJ>u<)`feGkJ$ZF0QgGBINUO=-OM3!_g;>w)wkf%H=f;C$qXT+MH@xz@C z|9unob$74E9~t1pVB!*|YFURfi4>WunUmSnvz@+{j4`g!ZnDdew7to+`z32F9SI>N ztZ(i2k!L#R&uY|`xd|j0>S-STm)y81CD8_5Oj*R{X{Z)Y6>*M+D=Cyj&Y0(51mxkv zY9y4by0tyad1An6B2@JNFk5wXyx|VA84~PLw1r>?4lJ$%R_Svk^eQz7*ILC;@OR&j zp~_a2>(zUwnG(#w$RSXrPoCg4kr=^>)g~)q-RKeeF#4c+;QnVBghL_KBPu4)NQ}Iu zRJ_#$v7SK8*;?4DQD+Rm98^)ZIKk2@=^JP@mKo=UwJvPpxaIn-p&|Auk2WyGAc(U7 z1D9szJM2MYoTG3nb#P>OnqQva20V$o>Bx{oKt9?-`k{e+)RSLUcShpB)y${FU!}xa zR{m8Z+)RF?<)+ks#jNnxLBV%KB{avDTA)fJ`RJKuEGS~z8ag#~N(Im0$<%ztK&IxJ zxni!*Ei3PAPwm1Om2}|Ah-b!NaVak}=GkHR*yBKR}E z$8+Rim2O~y3JWJQw>&LdVI*gf|4KrLJ@ zp6t+d_XdN!U#^LG2nYiA3d0btHbBe`#m9+O=e2KF1Wm6BpEW-fac)*&wK#_4HD&RcML5pcTsm?xHvy6z$^;_nvsH25$2L;>yzuPgvG@~Nye((P_RrV$I+f~v`cqI z9guWR#O3vIo-*||C6k+Ym7|uWJL~}+sFamEoPT!(2zO0AVP)jj-)>kr1pwhyR+#CK zSZ)@mEie-l&|Q#l`&4J42bd8P^T(j*+X|DNe-ok9wv^{&AHh(}cW~yrt#6mhgWVkD ziqeKJ-B|o`B_B3GWW6R>#_mcr{<(q1n8!ksQsTi70Y-@6a4CXWTo&MS$SZCY@n*9w9HZLVbqb@kiIw7V~!RF1=6FPz5S#(=jnW@atfaCuf zsIr;{ezlS%U99Z;cS!0vM5&~3N1K~S`%@rX`F57$3%n^y6Q}HIJ>NxupT|!p_Y~=&UA09kdGseWLe(;{-fc znPm?HdLpmGl3yqbzRr~Sd_h>^vH}O?4KNr|0B&_NnEYC`l)eXJfU&ljF{kE+gybTv z5gciVH5B+_ipM;JrB?nGQq9V*-&g0?JvPS}ktL?MxsR)hmb1d$#tGp4~hhDfsDelc3YQtg`&dSR; z;tEtkhs^J=BbndP8{YE^-f#NTyC?ki;z%05b$T#JQC=|c(ZfQ!FZc!%h|B}7c-UE; z$)N#HU1ehsYy{X|(pFtLAZWen?~Ti+%_d6HARo=lfZcVi!IPYQ-C%;%%Y;@r>Q{Ii zQ`P+Z%DQaiHPKoFGf*+y#j35j3KD?doRq~N4_WzzU|%=%?Co2b!?Qm6)VLjGFA;8@ zdXpk)Y8)tG9oa;l&7v8Td?5}Ge2$3Y==7KOo1#;LXMQ-8ksXF+^(@Cnhm4?%e<;i| ze}!ns4acD*&{>>Twz~*yJ5@5M(eypR7^da28boF+jUq<^>6pb~8?JGI!Fgbg z48-uM?vqWR^-S3U^x`!G{7sfMR8r=~3s5!1`YY{)xrN_~Bw5V&5s0DovU#|>Aj>J` z$C+(TH9^Y#HDPNF2615%!~Uw=>t|-`bgl>&+F>H2X2KjM^DF^_Wo|Y4U^i`+^;Wf0 zd6RRr7B>j_yBYyK24bDTm>W_7RtnsB509$J=EQ92f`i z7(Ons+cVG!X&e|gHiYrVv@vdJ@oTg81T;ggY*@CxEkhGoBg6`_;CJPXV8<(0j@RU- z(%(X#G!@(mIjUy*0asIX!Zj;WG94%lig%3ffvGfT6m$z73~J9of+?Na%< zkyrAvGrEZcv5@|JAW7j$rk+#JGRttubb(=!{N3K=Tc;UzHFxWYK%fylH)s>P(zy6I zP<6Nl{=-8uKfg+d)Gn3mR3vhV4(9g}U$NqF3OE$wI{nT)5_@-$0NyZ8oFgNzF&zg(f=mRr zNx})y_y@PT?Q1jrmGXWX9{G5eX&Kb|KH4LeOU}wX;F;T-aOYI9T)R4V?^9@bjEA(~s6B~1NGEkfZ#MPB}W32uL;BdC!ISOHLcE zGOs8N09f)DhcK!pPR{v2DAcA+P&zVd2TKb%)9EJZ%@5N^s2`DC(4nmq{g1~F|#dSBG{xLmk3s~ z)Y}BCOU7Rjc1=D+$7b&H(Ow1ExP$(wpucJ8-5U4hFHU`UXYrDGTf=^;#CrSL*p;x( ziov@`+IPY=G^vVk)n-XNm$!Mo7!V(|Ke11Ea+I~zT*p= z!tPq)`eymb$M_Z++dftip!PlVZl}$)4`11lc|qu-DCc~#w16Iy_Go+;^V2~NDs<yo)iX2lF)%lNYz2Yt5$K|x(vh=J+9I4fQUD4QAVs{fbMm5hXgffrIN)97o-Lb#tB&Ti}Z(Hbvw$JmcYHqfTMg-7`q2W z=v1a&Fhe4-8wtf6*e^}TGIc4eL@6Gdr?1S;uLOR$@{qtM|P3#WO_r*|Vu?RpZ%klJiu+?Hd zr895A1XPit%IR{MDo-hN5qlby=IzZO^=)(D>_DP$I#|8wnnq?77TQ&DTIm`;*O$nX zpLLlk7maEi4{mQDTGXSl&FUlPH@U=H8D!Zyl!*`%NTZ&(1 zm{7?akZa>}nW)hq#{h~=-- z(dF*bvS@f$KVbE`^X`AzW0fG{WfxRSb8+hF{mSI|*zq#c{b};Vxz+KS8xuk6^pi{K zZ1%S|>Z>u2Icx_U->(ecofq#T-uiUpk<@){p?=1assAA}faXhPNtWft7%4f6g!uAb%6TF$m4(tpQpxkSU6<`1-L3B2&N!;UK% zMc3T8C4>T1CPppbUt~Xs1jKAa8q&8Xv2aPO)Ehpo_sSlE#;;L)+Ad5rpr5FUrDo8qseEkzdo#672pVW$O~UlKawZudul z-(@C#>T(|heljU%X^p>}ErgUMqC8O>>D5}=pMqALmn<*SS?|M6*AtD^fR*q{B+!q* zFd;nd?a0DRmRIXPmzPbjdT7qQLFS6fOM2gZjpP6dx=1!*+0P&Zb94wo6$(b|#Sm8>EFr|R_+ZIagF{wNt(3LMHRXWU zTv15a3J2$k^>)uPGO74q+9=IrAAP*Myz0K*GuVkBG^gB^BpXm#i#jtC91!8LkYXd- z-T*i(V09m=#fv!g*x!G5l^hVayN-?d%}P>;VY+I@a=&~HXC-B`Q1uOZqjDcyJYpx7 zrOCHl_Fawaesq>+Bqu;=0F=cTme-5bvtC0rIfkzX=643$WS;%?Wt3&v4j`89KSiI8 zKhLD$-sn5Zfynlz8t`{gvSI!Xxc_!ERHI%Nvzma~oUn<_Cs?ux#XVZ*q`iHOL+jRQN{N3F1SNRs9lrYDeYWOr2Yn!(uZMHP9 zc3}2&&+prm#R>d`{JKMF^;^^U>I&G*c;c_#NWB>RU$F%EzhNI@0A1JrQ64=K7Jl@f z>d{W*4tgp&(6R1}ogZ;JFdArQ&}?RkVdrmSVb1uyF}~_^L~6H1be$^qa$iv-)$uH7 z7;y&ET-ZRAS4yU+qe9;O!Qq{VeN7X$NxYQoumTTCzb4(UD?Waju`X`c*&SyBj*&=V zbXFeMaXLHtoT!>Us@28OkH&XaakfZbLv}>4G!1Zmidp*vA*Jw78DC~q5WGvHzf3m} zgW@&Ml{{>sKnX*XLi{sol#{=^#(G=Du^Xv^p8mHny%1#`IdtSs17|XNRBA=lK?UjF z^DNV@?&|?~Zj8UZnzk*UIagNZzQy`Rz-jxAED;6kiT-uury`CbwL~d*=_~aQh8-%G z?3TwgusV*NXTRk7^SA57P?69Nk0`^qXDAFOdxIW|9Wx##Q%czE8M#_1=y9?4f-aJ z33y*i8N=tx_g(L8lGsi41Dm*+uos0Lk{8j0mc>r7jV4G4R|D%0&?td)O z(*KNsSx2rej*Jkny7nscpwPT0)LT<#pEA>Rnv7p*c`t7I#rSbn^ z$^VdVe?LjzjH&DN@=H(E@UHP2Y2CBE%72UM=5Qck5#$Z-fSP8v6XiPa{X+Q;g! zJp#{qG*)L)^$tawscU_D{5^>hpQc`wi}MYj*jA2Hp$w~X6Becv7Un_5Y0kw6&&BX9 zGRsQu`TGb;rwz6ON-{tACpHceAxHi}r?|ML{{FfrA|fJGA|i}zL$N}iXifP$an~9f zFAIAI?&%{E1SsN@A>R-g^`!%)-%kt`#Ii`6&dyjcipp{ie zK&d1^g#5}_fA;!Y)6GA<3;e8Yr9#sV5dPFA&NTB;tBuq$C0||g9}L>Lf|UR|o2RT>_P%HFj#Q73@W0K7)ud_ehxImRN& zZBd1$k!I1)Vrr0IH};>?9W94Pac}B?jRU$OU{qoYV&?j z_zpY`_y*{H_g#iP^ZOar6SlowPWf*Lz$3J1#`L&=@EX+Bht|x{z;oa)mW?>H-5q&p; zCEATjBa`*8;e0z$W@G%?FYT*M438$3&w;0q4>;?{wx7NIikJ6fH=c+nQOEV}%oO)= z@vU7&`qQvw6xrNfRmBaVG`6PH05jQLX?Ot5JU=bcJKn3lI{7vQweo~nU{%r^(=6XQ z%T2>romHsWV(wD{?G`;KuimJ^p3Rv({th;>iiRMlem{k}F^w`5dy)UNns`!_pZz3m zOIV{wTzuB4x$#slZ*n1CP&x^|lLU{uA+$a8WkLHpg$Zo8Z~t@r?Pw8xRh2a5_RI(C z`<^Ej{`8cP?Lt1`z*!+qYU9yW3|GPp8RMurpqga>W-p8L-)QoVE~f2VhPt*n&=3U= zMSKQ_Rg9)u=x??$k*E??yTE~3?v#O_cE1;?lpTSANE`}Jv+Mx&DfB*4n)7eg24RJw zf!Iej1bCK7A&*qpKMBf|XYC|D7!_OBezn2fI|x6a_~|UlE?VwIT9^q~`#}6G{OYz| z!i?J@<p%PSDI-Z?eLGgZ&^ac%Dw&$0&z+R7=pjNQgtOMWo z138hSSx=(2aup5gbaGW~diTEl4f&!jki4xjI-#aN%upl-i%ase%1D0hluJf|W;eF# z*2;HknI*KeCM7(0VHJi*{<+5X9I!wen8LUIfW(eL0U(Zo&6lFTSI1GzYxV}nK%p;V z2He$uT}1l(`v+*D+~2L_LM|W3-UhR9Yo}6LR6$kz;C(LnpOL^Y2@K$V>}SxVq$EI4 z4U~z$l5ADG0R{#JS}6RgTHr(KAY9z@OXj#LsE?W>JQ{REtnR_|f#owTIP{5CcrKfM zQE41`GCE06RklCCKrZy`@1^{J8z@C@iAGyvo1%Yzh;wFYk0?&=K6 z7$h$k{NNue1!pmBZ!yF#`9(*EJfe2o8o4Qr;d6S{&{GInBBE-SnxdEqt1@sp zFnl^QvZ`ccWfgfWZgIM+LU}Q-?i=MB=MIya^=23D*D2x}v|e+w;qUHFXPyw2-^>+< z1Q^T(S(7R&&=*l#C3f$dimKWut+g_UWNQ0(J~p3hq^~ECjIzmQ;k=*SG2f*1DJlD( zVO6Qzi(*36ZkU0c1DIgmN=YV7)@e-7j8d~}_hiHlM5|w^8L1S;sP`Xyh{njV<>rdZ zhzQr;)?oiFMYn8k+wQ?9t@Y^X3?cK&Zhh**6?y(R!K zp41!IXSv>7Co92TvxA<*4W~UrByb-Uo3d?YvKiEA#?7vu%W+9R;?Ww2QAV{DHTa8) z+33ui_%*rrEK?!cQ^CnaatzDf}I0iH<^b+XLj$6>Q`;br%y^ zw6)jyagn!5=FRL+MwPZZZ@)Qahn`WFo0fs;0#SeGHNXxrZOI&`W8amMCZ0rCIO(7> z*XdIwW8Ye-MvW$O^PRAn?>W{fzoK~Kt&#TZ+FR8+#u_r~r#5nmY|Exvq>4{A!m^WI z&`v=Eo6)=Kuj;j$qA&ufvj)P}$}|~l$#PU5&rjIQrmZ>pi$ZhW-WX8TtN6 z=J{PQvvC7OsDA9}q=kBKJI!3XJDpzu#!LlZMWoopY`jQ|L~Q_&gZu|i1MGz(<2D@n ziFc;RdXa3JeocVGa|IA9H@j&E64uH75Qo9IWbu0^06=(uv`Eu)GdjwlxBbMju#GM9 z*Z9v@XBT$BA^(MIe-B%^4Y+)PL|^(Vt@mS@`vcpVFXkLCSY>}U(x=K2o~yWgn?sHC zaM^$5;1VfJ8Uy4_V;)Eco%WnTlR zA3MT&SY`X>&cyPq&9p+a`U@0{2jcJftDeL#?$&I0Gob|#gh5hc^N+(F!2rcwbT-dgGVyMQ6#>lq| zFn~+9UErM=);cywZ@ zUeYU+a1#3>{K|M^u#GYfz zZ`@s|_6_+OK;Wl(E3=^6fbnFv5Jk1qj~eJAP7{T8@2S z5|%3+ou&Itexe&GkjZAA%0th5hqdj39%a_PX74i?!kUQ0#}#l;G3c%IKm>)&ui#K9SDRY}f_*bLGg<@tB{M4l8X;h*Y z&AwdUWSmJ7z=hrVgOg4zcX-cPdoeEG;ew}<_TZcFzTRgB(g4aPO`|Byu)Q~GcClkO zoYWj@A#92&_jV}%+EgYm^Dr=ovYIjZq(6xEKU3ock3<7oR0A>&93#w}WvlT(j9Yo7 zcqf-bKrEIYeaYhswpHZb+R$z?z zGFVtbj&ADzvBl~BUmI!MzuTQ6=4+OvwXM!SIErL-wMK0wAKM$wDE_W{PD|h_l<~e* z?Ry`mlZ9DA1lRXEel4DE-25op>hI*E&_vsU&pJ1b{m(d`mdA}HhHCE2R$lT^U0Gf; zG-{BTeC}L+U@5Dv#wXJ9hG}s^U5hg?KIoKz2t?hE-mxUnN({K%F8tEMh-N|4xBMQ+ z)+rTV*Z6~@sc#&&R?)ec^I>{_ORGCxZ!#;WZ~_6pVp>~Q-@?>sw2J9o#3WQ|%#?A0 zk_1#ErQqsVoiVW>^QFMVT@6ztMGts9FzCoNP;TGXWrvh3Re@uvNDr zvH{VuuQy4disM%y}${W}n4V*KM+n0*$wJUP5gO{+)PzOCs?3aXxL zkahFCpTj{Q~~KXl%S5jNA(T`aU8qs`BD0^CnF zEqFH0Dw*@MwKrcE5jQF6u0)by$Dg?Dh?4Q{)Lx!)sp%VZoK$`6$v{WdhSO>5eg6x7 z{VN?gKghj2XJ_f7^+f1@&kb50zp65IDAz^+L7AW#d3%yXH#e91 z1-c#?XO?^N_k_`7fO^T6i>4gt9mA{^4Ib9GbXPhD27o8*5>P?nA~x_-+2fsn=+WsU zV0+gH8=C#Q*bpuM0?fNkUsT;ilXBwLY*~M4Jb3fp&1WO|K_>4Re;Fu2y$v5{*kst)+xXug$G!Lcu zl~APYWhm5fL&|2RaxS9u7oNu&oOB%TSnox}3QcXN*DJSg5Bvk*fE7Cf+q5&VKEMBg zfgzKf<25gRMn5FaHRFEx&05$K)hUN3N6sp|MS~TV@B2)nDQ)LwEp>jvtqU z$7W2EB`k8DS-oywE6JJ0Ddrd)!kqksf(3{uzsi372ym}W8c7;U3gx{t%A&2Oecwot z3BN25JW*Q|oQNYt#%%vXV-{9drORdrqz$F}69u*jG^FQ8tMY7i`wIWl4&XT%C--}H zG-*63miI!$Y9jD#U+_f8v(1pYNgV)0V?$6NNly4oU!(WOAMCVqe0{@3)SjcGQNZ4T zzrAV~*4NTcM3{5ppn4188}Hi3c0&&LZ8yhNyoFD|W=hFVsn(RiG+LYGJ@i7Jbop9z z7^R(Y^CoCuMdB#_sxSRDVI)D>PE&I8$wgqAkZ0sP{_6MsfZxV~17zdH!*=I9qn58| zzFS1F#qdq_&4f34*BV7G6-RP}bGEUR-kmURii-ox6IfmiGqByXl8l^K{E+SUnCaO` zFVe}13l&=vzIgYc@WQDHFyjeZ{Vj$f4p{7kx-Y!JCoqe?Zf;zC4Mru^XT}IJy>sH(nHdf7dsINQ&$*X5CZq2GhT$&-*%+i9H7_C-Z;r zoSH6Ci(;*a>eK4jfOjn}u-<~FZy}8$7tK`ONUHH$Y@jVQ;PqSpel4q`SVa$oo%pR? zS7jeR1K`}>0!_-ySSr1}^ik>XWYjigK$S~+V7oodM(XM@`{(<|eO-)a!q%71eCgY& z`hm6NK>7i7jCNnUN0|IICp%vOuB55lwAwd{>`}g4LEmnH<7W@w^|MTRJEM)R9!88 z5;NgU!s9kL|Lgm;>*?Cvmy)`vk}eGh2JLFDm}*IR^J~TYE>fAGk+ikGsr*2BrFkM_ zzVbc!hKvnXm>uuu@*@*(yTdR9)oD23rB@<$$0nrc+TccB=VTErc$b5ul8^m2ec+(* ztTWCYiPrR%Wrg{mVN$GzOU?ghslB`zpMOUcP?rggm|l2D6kLC|E-lIE$Cdc0nQB|< zsIkDLw)a@mN8-9^z85PW@c_po@fYC@LXO2=giqA@9=<8*n%D?iu@yC^q=GIwttC(U za=XD-v9wN;5H1e|K09tcGolr<&s$Bpj_$3!g29Zsb=wsUx0U<#ex+?B@A44pjwpXR zGL!#0=9EbO2WQ>pi@+mv3p`1~G`JWgX`69+ov`(v0z3l#;OlM{o~oey$yAfIHCVz_ zFN|F>mNy;SZ!54}FRpL|t;hIP74C-bA2PMS`(i`UZ{>pii9AcF*smAQW!vns`_-@G z549-^7o*9-Ps`g6i^yxj3?mSQC8HiSCZB`l%Vpj@8fA|9c$<0S!$MW7*;x6GmO@_C z4jxXDe(bBQY?<2+e_im;@{-@4wWAV|bMJfkL zdcR-wl#h%=eZQf(YwW22s~w5DDeeeua07mU0H5YqLp7h?I@Ii-%D<8Y)Q7D*z|>Tt zw*IXu5$-h*Y^!NZt7#gtk*31IG_B5w)vq_=Ws9DlwXFb@M&`xN;xwKxO+R_QzIz(lEQ&aO=BAW}7BTo1v zm4ev486D+}G&by+$%}Dso}MHoCN#cZFMx*<#PYF(5xwB>g234X8%%0ZLIlL;;pF%l z2%X$&qt`Atn2^tD(v$XEn7-O6=b&aH9-;zhX=PYh`u%rd+5F=W#d;lMix|-t4<3_< zO}eJu9^vKVA0?g}6q|Ho0#4(cyX;mxr;+ues=yZZ%e3iB*KnA2H|qqAz7Zd9NI6yR z#7p_AsuJk4J&C2{fL45ly+z_?ATo;U_qqIM?om!U)WJAxNfAmTKcG=r+8~ly`X(It z@mc7E@NQJq{XWQ3KowGe&tH2bk-oTO^e$A;v(#J44hw%!qe{uygT#BD!bDA zfvU!ET}dD74%R+4RJc~Gw5`8P-8VhF83^`rISe>|2!tGAU1(cP7fu+9q$oj^Nq?wT zaRhnL;7@d!I<#o6HW#P~;BM+^+ufH5A1!jInk0)#82B!xl=RW449_aolvng`Ph2Pb zQIs`E%?SvNhG|S8Xp2+-UAbl+szlWa<&(WP@bYL)`h-1L?Np%l1%A);&_r7XS ziPSsg3VS}sr>2N_F~_zWN*>6q+u!-L5BZMz76>UDKXW^v(*w9?*#F)*|Gz7cnESJU zH>963l}BZfP72D*C%U0OQI8y{k=UPV3Efbr&0%iz$u(MsdLeMw;wp3?E+=3=_>h?CK$UWpd-DPC zUFK*dvg-a6Buw$N28T`Ktr+t5O;MXcZRa?)<)DHYVvTL{uZdaq-0xft>iUBd{;F%t zUx2%-=)tmo^J{%^m;FNQ?~WVgMUB}gO9B5*?0L|sP+HJ{ozFS98|Hd?CqNfvKb{Mk_jBCoC%$H*(mqxb z&2osuc&^{1Zof_6%H1t~tPF7@H6HSDRc5uwZKdM_A2haMr}lW_b`OIM#z{;k&rCas z|KJ4I$aM>iFGD+M(_WiGm+frB3uD*o{F`c1Cl4YK2c3NDK?@xw*MsZ%2bTOmXn>JD zKCKVcLdL$=j>l(~wOwr=1a$Ws^GPh1{l9jd=Z7E4k^CSd`O)Y9NvllNFI#SKNuqJLwdt=~gWNr?6%;>d_i-LYrYJFN?#Kssq0n2mA zvJ6+2mcE*G2`dN!*T#EOiP>{e@>$#s_2VUe7?56u z8lI)ltV&hlzt2A9SDJ^d3zchO6;I{n)y2j4WsZW|v12a5Pt*VffP%WtE2IcldW|j_t^(O$;?mo z+Lp4udP=$!$6xSOt6@>mk8-&QDu_2OmPb9odR`fxhPRk+L6V;+SAoTH<7KX!}M0v2bI6ChOO$Y}zP;ejP9^?z!>TFC>q$Q!{ox-+1IL+@K9)ZP74D?0y zF@B1J%HtXivW?IeenlGiW*AZ<``ASVXI30e+9?gi$P%i%m~^nrg(dErgp=;T@523d z*`(+WT2OGMkOg+q)aau*or;)=+N5^Z1Pbyfc->Gs5^oRl`TA+ZDVnnNrhe`0Relp_APr!o8%7C)q7D3jB$#$pxW6nNQQlK>D;*`4LE`w?rJ`t(u(%9YQq7>ON)xC2mAx+4A}#7fKgu3j z)FD-+VxUjF>kTQ#QdP0!jH+!_<(w-(ocM}TT)Ej zf31Z~c@s7rdH>Kn>iXldy<#LEBpu@dE!UwmnxuPBqPXI9t-sQuBgl=mC#^6|dFy2t z^%b_vB*j7F@u}LHn53^4@4} zOz1a5H5bP^mR8(YhDCc*NE*T-_J)o~BsAKU)=c~qowEc-^xl-mbt&Rt-iOw!^CsRn z_b)YkpICApE@OYRixEr}3Fi;qhO|!*jEW;1#LARa;EWTV<}Y!^TvJt?!cCuL}Bc%ek9Ool(4mA3~ADWJUhq}-$8?z6;+L_d$RsY&cjKkCY0 ziSp*NEqB(WFPp>u;E2E;d0zA2@X|fdmluyd6^64i@accxNsdx1AEvb{rB#|V;vZEZ zPb{S&FXe3s@{}G~h8h}baorNraZyxPJM%>R#&b$Aez;v|dv7A-Opx#4Q`zXH9x;{k zUt29pV~X~}B4IKlW!sDT{BMPd%ix0#MMRHAV3zCQPn3jvb3g(NATx2w)kEzh7F$%8t>|Ih5=nZ(} z*gg4p41RyYOI{32{8o3f(ZQorQJA50KSxM5Dx{b+x@wR-OJvrbWW`Ihf4)mfTXQPH zR$D;DLAvi2G;5dI=cHq6zUiuTtXH4I$hV++0st2#$l0%(iqb~q!&Ch~W4+V_((h`z z(xu8S8k+(3?Lm&jRrkZlDTD4EmXn844t#*+zD6bI7z82UTTw9RfmsXpPmf#wdlR) zLl(a=lWL4N3{|7yDXkc;rVd0^A{r9jmD;u#$;Tqbq^r8f6OfP;^NGp@4_yJJlSKeG zm*9mpZPgg8N)k{J4#pFEJ{eBcijTR~>j4(AQ(+2j1LyyUp?1n+VNQ-_-*1W#g7vwn zZ;oe)CUCx7_B8F}i*%yu9`-qTtB!jW3rw&%z4`v}1G6Ch^n-Etj$iTD##Wm+v;MNl(WGJU9|MROflPvq zU$(-(IbuADN`EykZ6hW4s{lAycM%$^e{$WF(Mr9qt!4P~1N%WFeiDOVA`sVqB({P> zaiZWu*OXt?m&Yb17uFpCb;Q_DP&29rkNC9wLEH1o{-tMX!2%?D>(9=OfVJvBg-#o2 zI#*jhZ0Xf}Tewyknf8Od^0viLo=sCZKh5pgb3hEu}RE z3JANTHmhrAnB{8cRpKTZ(5s_c*M3hv@TM8X?Sg!k{8(Qt%uQh*m z0hoL0ePejl8`F@^>8LGMTf3_^#`e+4GR~*Y?U#1p%*7A z1x*$C#G+ndl6H*qD7)E)CA73~Jye8#SR^)7`}Tc>F_ppH%E5x^w9kwf=s_AVqD{r^!p;)K8i4h>0WOzc8l_HZ8>gC5D#-MyJ`b5dT{^jy>M!_gLkz3^T zj~wK$z(9J)Ge0$52*X!|N3@QT$KK^LwRA79pn^`p88d<8g5O2pWYPni}mVAN8vZ zJ}f_n-rr?Wwso-OFSB(kP!g@jwTfz?Vin6i)w6fyZMEjcaIB-#mV{tehdr}m5%(Vs zb*ziQsf}^bv5OuUeQ;(6%}iBKNe9>-7VrnhzB;9o@Q!4c=%vi$>FYc?5{)a6QUK!l zPqyb>cWTJ&<9Y{%eG4|95ef%?Gh|FwS8l$^87ge>9%=@02780VGK#|%O9zg98M$|u z#&YY=#*~m1al@_408kKvIp~~6suGa1VsB<;KC7WgNGWNX`hR96HyC&B3&Er#D&qUt!o-pY$n53%y zw|>G$6n9?|fNeidbgky7aN@)6KA#ZI4@ zc1_T28Z#Rs3aUx>8}f&a2NbIZ)DhgW5J znu%x+lXFg&OpR8tY2G|sInfRruA|fQpkK`@aosL1+v#AkOLL>5RP`j` z^>YobVHOJozGY5}ZkNvQQzC2wLU_{3Q&l}6R4V1AEiIXZ86w2}o|+=2yo-U^-ewwO zP9`LGFNGqe7_xl1w!eHSWSCWh{LUCpi;;i!+Z@2R*xB0BJI~m_XS<`#%Aq7v~X7w-ks2hVKn|{mgxuEsu)pCf! zN-anT5_zo^kNO?|dC~%#YvFV2u4UI=Djh`}gqooke`}Vpj}fM#Ri%$>i<+YC zQC0O|;l=%`ua|d;!%3Y$?@Pxvwtd5E!wle(R|a~@D=Tm}rZL*#9lSc!>S=A}ImENbymvYE8UK%AOA>f3 zhSX=#5Mdn7UrG~J(a?KkYhz&4qd0r%{!$O#O-E!Dj&J(mZ5K`J zgz;j=XX%^IRH4uLahXUI&$>1~kTX8ky?Iow6sy0XFGu5as8xxW)C=?wKs2~HYGwJB zNqrOt+}ZBaPG&2qL7$Cy>o^8{70%mSolYJje}Tc$8aqH2%TX2g!LI~SriGKlW?u?7 zc@kAnt~l7)-HY;GI?u1NK0JBu(_K!wVI zJBZeSc3gVEb>&odNE!D?_#@*#EbZ$wCj%)BkBkuCcKPpQDt#TQb~n@C~1qZ=q3r1kG^q_?`_9V zAlIsTH}s6mqX_e!x4OO;%%jnqTCezp!X#@PeV%?tH_PI6Du03i%{;F}lq2t{8;te} zfBA|*H*;LX57uyDKY+;J2#>gzzm=2@vs*Xw?SY!%5zI{AO4&;Q9+T^GxC9v-8+h@8 z%wZ&MfcoZeKbUZ-VB51YS5$uKvChdFDK;1%0s}81 zcU`?{h|MBVq52i!tv4|^1}=pkG8TfGxy6;}uk?EFNWj=_%tE!_%4oWJ2E0#pxVq;^ z)bw>TI9+;{&IhD2^$f==ocCLTqEm|kXkX@0x`gl*kF`I(kSCwU@d9#igm;4)1*+tG zIr$HAim{q`#^Uud{*>U#_XQ`KLjHwJvo*!_j0sV1OrtqMDiwk%us~%z513Si;fcRY z`h|5p>Wf2;I*CN!<}f-DIDL!$Jb8D@Obbw=MpJKO^$sMI-7UtY;Kq@5Zz`0>H277& zgsj`=d+F>!2zd+#!xYx^Svw|W(h$Xkcm%um`lv<@9LilQO(0%gt~Iss?<<~5UM%AR z!EFnc-z;D-MHO*#rh3E)i= z2)vljojxkI(o4beX!&%Z7M`?ZRaKR$Sr z3Dzsq@_D~q#aOu?eZ6q%#~={Yl));kqS2OeY4a6de8`3afEjbMnij|$2mDh+~kf1KTkn7qj# z+HKi9?YQ+xBTjMvaU~T$%k9b*`LI=GKptdH)OzvbvIyo7uNb9$MA6Brz8_D`SiyL* z)bew`CEO6Cn`fc^(MF|!WVx49er*25PJY1ro?-zvy`9Pr-r!S}dzY*kD0~%e!i!Oh z@?GK=0jDLUbe{v5OwdOlDY}J>uC~&&HK@5|^7xU;M}2Fwhe|JlLbR@&6NtxfZZ`ep z=~6}a;}CA9LXFO8?foN!J%SA!67S1ZkZ`I0x;{Gq-wMU94wrEX#}6!ch!d@gxdeT8&U;(;c|R&R11L+JH&k6T^VT%+}W^hv^8Oig@B z@%%=81G}D=(J=+GGi26m=hn|T^#`E{57=$HS0{UI0bS@KV0Xv8M@-Fof!^n+=HG9q?;86` zOz5zId5QBFiW*iZY?EY;70s^SZ`i)#5wHy(_3SHM&#Ibu(2BSLuS+a>9y(RGY>U4{ z`j$=Mp|bb4rI7@~1vxyG;ghGYuzni1WLmQ&skIMp@YR+}L%>MMt4f|5Rkywqo}Z!>C^1y47L zHGYPh2~wm6i3B(0&%YgJU=?ew2x&@qwW$zRMljSUD)yUOq&4IfM)ue8w1ijYxYvX3 zu^;- zq*-EK-xy*fzG6tX6Zd~D>MCSo27if!qNh>(_uhtSMt|nZ&Uok^^?=s6p1;}NqL62MKia3eB*-3Mo^90WhLLM9gQ2ya>jKWWBHGKo;!K!2^9(a$%bJDv@aGK z!&BE24vm=1GE!Gls^58vw~sHD-|nX{+9{-LvfLP_{~HvI$N;Ch`tG z5QY@5!c*P4pI8-0#|-noL~Wmh?l$Z^t#p1`d#%R@cvtX}`XGGHO@jWZQpsq~PYq~- zPmGy2tG8ndOlfsvs_kW#;lXMsF#;ob_DL$-c4~RB+f2chAu{Ngmqc7Y_6ex5_*A}X zkRMmZXu1CKP@1Kp!U)xIyKB{mnP@Lg=j!~Oc!T~zJpI1vatzh}?3u_MYfic_67 zbo5k9v}rUQ2$ZL*2KFZ~JLYP=P4K3*Xau#c`;+-SW}o3N)0QAa6Ts zS&Rq{@_XDA`>qf(xnn~BzmEBxH|&9(3cWpvh|p74(0KnLwYl^|tR z<<}eiisztmDcOaTA)ejF0(}TLvdby2N!9$Gr5MWjdB+>0dCJJ&X-)?a;8Ew%nQGiV zdfhg>2Myzow7Ih=wU}D5PLMb`ltaqy-u7)t1>OZw-D&n)oi&97zB`EE_WH8x>W3kc zbbYKePj82+Q{y@5Eyhl)S6z=+J|cG0p%^7K24B1hS7wjPLtz1>h_N|@srJmA7J-ji z(ts;gxAl&EPf$&3CjF!jy5{|n2=gJbjXAF@}@fIe! zxn66*p;8X0m*Ukqoe0I*!Ktx0c%liLQn=lcGSiDwk$R@u{I0pYcX8_Yjuo3kAJV1K zDU${Zh2qMgtxT0JW{j(F7ca%_a!6ePH&U5B+fL?zsyRlA+;1UK$sW^CKrjS;nX3M08 zntf0D&;huca4@9QPTc-7GLL9bETko*3Oso)lwUl`pRKAsz7^0~Lb#o<*9wtm#x8ux zAT~)!@7P#N3O@aVBcJg4M9r(}1 znEPi4Zqq~e5?wk_0-q^n4AtYr6ZB>U9U(zxp;v?d;PbDRvz?=1_aR74Y?iK4dkFzN#LkUgU`L;AB^ZB>bh^XUXkLodeE9sZtaHqP&tL;JSzLqKTK&bI&h9<~ zPT*Tdh_QI}HQsXD(YQppvF~RSYkbQL{~V;O)m`?)OeV&SJDzm2u@+-TOd!RTv5$Dh zj155*Av9Et`oz_ypI2)k-U|9F6X+_&8UgAkwzOiY&Y`d zJFbCY$uj&^c^XsAbLS!H%C6Gm=Y^qsfyqJkfF_WS97wZ)dkgROt=m8jjeouF z0ZE_&Ir!y6x3@`!kLvb+%a1O9(tq(E0pKk;)(`yf$r5dK!#KIajACh%X?!7Z}_C9-Kj8vZG`;#xW z_5ZJoAf*8d4p&lAlEaUt2VlwJZ+Kj>3TnSAFnWwRhCTT9$ri)cNDGIU%xWqBV4s>g zTFvF5JP??f_}YHhD()RkY^{ z1XyuN1VjU93g&TL1pbT-G^mf28$kl5teh_WyUrK}p7b$+$~KcnZJdSk50>TX@{5vX4ZntPZ-OqM|vw znr=R}loH9m7rC-QDRX=e3>ZE9he>Aq%w4#f4FCNQU1w*nj(45`0|A;g6F$YpCZ>dn z_Mdfa=?DXIM5!xfH{x!MkHuJ;gS0I%-j6AVVf-~{{*lMo=VzbKjj^8KGEuSWNBQ$i zu22}PmN<99F&@BQS_#lMGsR|+9x^n=jMkb8T#P*EY>a2ZD%H18aY#bM^%u23?%CMs!+C$^2Bu)iY7pV8y2rh8S2 zx}Jq%|pM+B*pRUY}+QR^zjvutLsD40e{exDg$Rlqnp(`KJiV6t>Dl!ZbFjPq5 zPE!~dJO9@t+C$!H z5DA%a#^G{VFR~VSDLuo8{3AUhf&9}u!+VKGZy}wy8%jqfn{qo9KC1Zdg_z7f-E3#^ z_F~b(U%zJ#nbesbfm@vOu+^QXrhx~Uv?BODEBHDnEE_*MPh=ydLp9@YjUYPZE6gj*v@6sg^D3NBCWdY>?m0SK?{;YQUaAPT#>vL>wF383 z4*77b;O4=270wyrV~>BPm*@ z@QofarKne*X8*mg>a`7wTBI`aC*-VSq*6_BRGsrJ>{!AtU@h}4_%LiKABJTn$4&_zMOGs?y4TNUO z{EBv&;)DlDgPSf>=M35V8=wEZcp&q}h;yga;5?TyIdG`gRmYzQ;>1~~RZd_lnQj(K zx7Km;TVI*YlK6Tk*7+_WBVN1$gfI7PDsHe;-~6cFdB+XJR&vfr?w({!4?j5Xks-O~ zqYXf_I#~`rw6-x7@qaZ^+#DEXawIMWU%rM8m|ImB6s7V}0v zkb~FIHw(%4CC-0v<-abv_IXdAP;|+Lqf;=!1w%|>^Y7##OWUrxoA>1+@6RbAg{R_N zUs3KR=jtXjmT%;1`6My8qU8J9IXw+Fhogb@oZKa!mckS7=tYl>mjWs(DIU5rt14MS z&_<_j`e(KezWFI2Xj{iSyDt%MoP31&*7*1|x@;VvITP1dHLjG1N2Sp-o(gS(-)?~g ztlA@CDN}6Anw^4VG$J+l!mvSnV;1TB$bd-Qa_(cI5=z&U3s%+n@J>PeYfw1d6VEsR zedGIPe|lx^84itkrM+R4-23#)=(!)bLt4}l_FGgs4-B=fdG8j$&Lz`1PpP@_dC0Ur zPESfvObO8YRqhiyO}}5L8|nc>{)D}(^yx;yLyPw-Oc^^S-fAW~8`$>;)(@?XUE_V% zis#~HM!@J{PSC!{`W)|<4>Z4xRFni=GtdV|{q znLH|6K3WX@8jJA^e}(7gO8Z2X8)Tg`>0auV9mTRVnEhn2Dq%~l zH?H3f;s9El3yU$^FKh4Q+oLWRsXJA*DY-BHZg&p(&rtMg{NIb&N5mc6!Ebb=$o=b; z+mVaAX7($wIWClJ-P5jb$iR`E7@y1+lr6wPr2EI^4~1bSbXUY0H1Va~9}@ms7Jr+? zSy(snoYb}R^!kWlc~f5g32kjYS}gSMzZa^59bvq}ZW6%Xmij?_Eiq>-{(8=BNK?mE zgsuWX3+4Qs(#Q4K>T8NSNufP_e`lf~?n)w}z73i<7{!noGRWI-J+YIeih-$eMfpF^ z;!kFfN!u(hB7EStLGxeT3d*Lsgb^7~f zV>;h7msTT&_HFB!XoPu;e@6@8Ro5mx+(7pHD_|d&+uAFykr(O7rsX3p?6hEaH8U4` z0-|9c^hNy|Q3>mjw#JqAvty5^>DEop+2^gBZ?2|W8v1l?M-TG9#@>#9*>6d*As3hrG0XI)jVO+DQ@|^0$LC2uNgI3 zuyQ4<>TxtZmbL=Di~&Q~zFclnh8qh}gJN@hHpB1j2rbgE+QJYoB=fxY6IDyid5<_j zaKSt>_-AkM&p+jPmqBE!KaSkHD-BC;aNjxqJPk+BXW6E&Zd)lN`w<*2u=Q|-J2LSa z16NP$V_Fhnm_Gfp=I5sfx&w=-Sj~?S%*IKYmpCXLNE;^4AzS40{@K45DYkcbS9Z_Z z{lC-=2xp%s!tG_6idJTjKd<#3DxVgff1xHii#Annge!lcXiFL4MgpkwQmu6SBRu@I za^9Q_RHjbmt4xVZg-{#JxT%C_;fc3szYO7NX1GSN+K9VBStaZSk)z};n=?obdUVgw zr(1ovdK2=DTKpWpvV|YL`*TBU#_Wxk9vb;bX9Je9vtBa73cpY(_Dq3t4D>m%Eq5bh zqi`=Rqj^qV+>sp?M{^AFqs{-RUu8{aVph%xe?!;bcXS?}9d*n4OgGgF8rfd$ zTYU;fUCMdUgG@3Cgi{I+l$3wmJ`bWBYj||Lmq|yNd`LWzKVQ&|D#sqB9B5w$NvB++ zjLPoY!n8M@m1RIPWXNzknHtA)itv+T@K=$0$fHZRIISnFE`%1|CapY7lC6>l*>E84 z)j%=_eS5Rjtl|TpVA@Q-%s3h4`+RAh*h-+k*$v-!+}GHrCUFcsOOJ zREBTk`RdnA4pUxXH@`XE821rDdrp$BOmkv}P5gwVT9+0%7*7*fLAx3B<@^fZa`>_P zl!+HJ2v*gj|Gf!_9>tEJZ_b%?=;?m3hwV09A6pO7ZoJBz$UKmD$NycB(89RM34U+R zfrUWc-3BM$Hz|!mtD$ysUkL+y5VrVE&4G2X5$HrX^v0tTX^R&pq z%J^!FGRWD5I1nFGv%E-}VIKJIrbb%Bx7ALdbbAJOJHN0$UVAEw{c!afN|tyD?m{}S zDMfNpv?)~hkM~YWHl1?=nVQ2NjrDpj)_Cd$s1llTX4^`&Ts-4;#24Veq8H~Q0mn}q zEd_aRJ|v@>>VhH%d_nMy8rVcBtv5o~KpTzE-PwlBf8qpS;@r-?q}kJ9zna6A53fm5 zIgA3b4OcA+gSRm4k|$!Rh2LTsNoE1F$4d_9%0xO-Yz* zmd5UQXj-md?Qw@#FJIfN1+V$^fqL}yh~N@$^Tga@w8yjUyR45IVEoqWY+Hr~_vh%V z9=gt_kuOft${X?fXb0NJWM<~ycIsKtE9qGpls3B&a>l=J*o7j}y_4W$3~$#s4|v@| z0M-K`WoXPw3cc`xVW0e zZ_S$ARA$}KN_j1LqM2jRq%XYI~YQai!CHa{ttrDe(wB=6;~*lSl01PLyU{wUnq zPGio~wy*w#qSELuavsR92)*&)d8MDPowKtY|L}4hsg$T=%1{^KEzOgV$Ou^DFIjUD zWtOTw1<XLO^>kPyRxy zb5{PhzV5Y{#tr&5hVzrMuXE+>R^oLibmfFJ^=R)1w&uLaY;?+V22$t8dHc5nc9^6@Z%UD^#pi*vOhfQW;A zN4)|82{5CHf8SEtP@Snzz8O~U%KCP9q(B4aanwHY#-4_ zE-2#h63;`v{t#wKzou&TG0V^C)zMVT3Zl+1T+(=d5JWW<7gOryChd7pejz2jlX7t+ zCLeh0MnybfN(yON%h$Q_W~#21r@aF@%QkwM#u-*zd-L>9(*-!3&Pb3ixG0`VI&=O3 z^p*(=rXF6d@kUkxubsn-D|B9VK3praH&^;RI1096-B<)c?*_$;fNZ7nMrs z{cY)}AI-EIBeu{$2hb}U|`r{uDIe`S_vCek4_V7Sxsv38?U^QY{}PN zv7zHlH0d}!wN4b}smZ;;tH2YE-(~b<>cscM0#TDw+mf&Z!%?#A1@jou#qQ;kdh=2) z?!abp*2?>zDyYm3YZX3feaEOhN8ILIlO|4-#eO$Aw9f#j2c@vQ)Y8OVh;lJH6|82d z3xBO7DJSO|>y4H9=TfwBeuyt!rC88;=`S2K;DCj@cWi988 zU+VRMgZAxes%V0(b}K_-=E-m2;FGfKbDKP!l0#)olb~nTQf{jKG;rv_Ms+%ujSFla z4>r~<)aVB$vW>MJgd=n%g4h0_8BLh33|x9UbqbCnZ<}7Kv zxVS>i!fq8p$AyqNzn$oJu}k>Tf4?_X9Tj0os;`tQz827YT}Y)8Biqt14Uq((Z->H&xDxGlZiM>Vq(laCSc zMCpeO=_6HNr!}2gv~2x6Luaz3WKAC~XQstIW-V|EO3)Jf)mcgDcOv-WPF8BIgG)H_ zhY2j^AZ@=RKYH~r$~M|q8Ek>^rHiYbI96Zb0ptv*3R5KMe|`!67N^yXp;;f#9Hnc@ zgv(nkv@VI`MIheC@JN7^IeBl3p)4!bmQH3gAk>T2Ft5Nphd5Fib6~RzWZ^NMw0Gvl zy%Zd8_wB%Mou?$QjekG+3m|%{A?M(*@7f=SCrsgNoL=*dSntwy-X%(SH7R(`o7oiK z&R9&R&ko)s_=nQWx2W0^$F3-Sh_kqQqcus)gIjs+@<8h>G3!E^o~o5WqA-xE>wV@t z-3ug0uz%AHfKE@=x>oQ#g!!{zuq5owsj0!m8`E|B4;zyglR;Z z9((kXo$F7&QSg$X8~h(Qr_7vehQ$EzTrEJnybse_BwIo3+AJizar%5Z^sO?R(DM`; z_cFNi$Nr=}zhHrge-h@T$AF?_+QBI>PaK-ksyrvZi~Ca(knPQ)6NiG{#r1S46NlkDN* zUi79bn!07AGu!eNmDn0m6CzyJ9Rdw#fNBsRmYqohPt^tm1A{@Aqd{g=ZY`KsZzUnj zema-_EZiT57gB7Uv3s5S79PW5WrV_#P08yc4uhu9>TF=Mn&Q_`po8L$ zQ5O-p(KeYq+xwc|=K)|axtsKLIio$y|~!Ld+Oh0@NDd@yno7N z9~#qLUYp6|)>E+0-AVgV7Y4rS6T&X5_kQO5_k!oJ$@pcP zmpa^tVg%Ms5`k0YcKwy_^n?d#u!3Ofz3<;xx6xu?sa&aMdff+*ZB+JmkeEmyWU9Xf zWG^^AquWk718#P;(Cn+bqxA6A`Qm*Do4fcN9*%6Y{+^@TA1>1>4`Ty|$s07BZ>eIN z@Duaw)=8C?JAH|1qhr%%3}z7}o{3LNe1EeR#|(EAihWRzj>|s&P}=4{l|YJ%V8_1nnzw^H(S_A;5qHjCm$wnwa@WDn34cC%Oj* z=OFEb@;gzIPcXUYup;AVf^KbINv?$iSudlve$tXe1yD$S$PL$j8rnhoBbLZj32kB9 z%fT@ARB&Fn$(Pk=RGNd9MQfeR7gtz7j9scq=Xl%}A1vT7M_@Ml3rR)yX^l2TQ0C;w z^k^DG1xY?Col+HVY@OQr`Y)wHeI`@uxu)Yx-p;ruB#o-vh(j3CVxoWfo@dV)se?)p)ve8CY(WbNBO**UQZJxgb@IHL`16YRAMk5(i>gbgBaEIf)KA~qxsks4U`K1R@;}44a3C~ zB_ym=|MX#7-@`FYTbc4;-FAv}i2*lkV|KyIsl|xzRF&9>UW|c;IRQm~@l>dCojEOU^ zP#%37tb}F*q3OKw31IVPh?u&zVd!YMFUkQWE1%HCb&8mLzZ3rBDM2GIxZ`a>UIuvt zf%1%$F~}lt!PgR;*|>o0FWEK}&E*l}TDAW2Q^Up`Vv{?lfG2ERZ#TfCJO<>B(p1kwwtCh5)I#AUJy#!%BuI zNbKmejqKKuMe}m2;VY!f-17L4Mc5GZ??qG+O9Gv!4P^M6o+!T8Vp?`dOQc(lG1Lp@ zh~8s2QHZUW8(mvCx^i%5S&t&2$@}r7F*KP~OFY*d!fex|Vdp5+9mRQ;!q5KO2Tb{m z59SI(d&HmRw$a4RO!3n6kceBcN(Ud9M#g-bo0l|@Oud@@4_z9^uFOFzkcxRc8>?xL z%$v+}sJ_5q-wqnlI#l(3&(^{Rqw#`F=@CrB#t)h-6ztA|d;7c;6M z{=L{iZY7dkDIQ-CXDWDZIKp|vSF~J}a$Vahl-v+FMUG4FA%Zqf zHngrcWH$UYetyXpkOhHoq##N7JtMzXK-H^D_$ndyyiN`^U-Cq8BsRkMuCrHn9+PN; zp7>CW;Iv4AV536&k!M`aS-^WH+Vk7L7t@}!!3mAR57?MdbY8NOYT~rm`RG+H@oHRN zcjg3_;p9=ab%8(IbJ{5hzHg0W8N>!9%z4^+IJRPL{Os_Mvy-eC5u;8X@|DxT$RTgY z9t_33>O>thR1XUaU!Oq{7*B{h+h;7V@cO`QKaC*Su&wc^;-5)$YB zy|@tOpc&(Pz;V)Kl%Jd+;y)v_$+5~beBJWNzusXuI%KDY5}uFKPOtbmg#&&j-{e3>sROT7;P;`Ytx;T@NWEY2UN`d|4gV z^1!okNJX?omv~HO7l;Dv#{McthQF4y1aCaZ#Q%jC{<$6OtK7SqVO2PXvRAP7wdljZC`QTOtegeuzU#G<}%*<$YygOS^TR(8A^QonSt28C!GpZ zSjZxtqR6}kZu@O z9_Y??vfTw!3Jof$F4)0{f4=#R8nU*)RMM(0Z9NzOE^7Fn;+F@ivQSYbyCCse4a zD~Wu(YKgj)9rxHWJ$dPE<+v6ZEC|`F$JmNzgo-M!e&Pl8Q)6P&9Y^0o`w2KiAggyu zF{G{D!@W6J$JLhli8a)cMxyQNLFH^c&>JM?#n*U3~wJ`2S$y zWA(X=(tj^-=*^$-1&H@gh2_>Y3u9HF+_V#d*t(npk`DlGC5iZfJX_;ZRw<79Z-o{0 zZX>6_82@sq!BATp^C>~^xhu`wp3&s%D?Qe`P~()Qs%14RwQiD)KX~u{bh0OcLulz` zWNF4y`GWB14@pG1W)5y>f3BL3{Sdym3dXbH9imu!Z}XJb9Gu&!p1l#N^?l6qLhg+2 z)tkPrS@Q);p@~qRt&N~3=ntMFJhJ%`$+P;rp(8D(?VI>}LeB?0DrDgS0Yc4E^Eg~9 zE?#`PDDXSU1WBYlK+^65q{+}nZht7GaZ2o~rk(%yxR3mF&!CbbB712XOBVxU7glOO zw(q*E$XhB7sFypX6npvzfwvcVn(+1Q%&85JHaZ^5iXwWkpgF~z;(tR1sv8t$*qqUJ zM5=E{2(pL7Y9ym@pbF73T^H5Te_4 zj6un>A(SXA*uQXb`~lEf$C8>6T4milVL2!HV_gPSaqP5f1MU z<`z8dWjt|9a^L?5*Wzf9ln{6HjGZmBQ1xQV45%Xn&WoT$B|9i8OWb;KdKdQ1UvpLk z2epSn2jV>oBf-kk|hwiUveAT<^>?)H~AoIqvpWGJj+ zAmsMs==vAua}d}-5+HbYz6Vj|^1bqpS@lhF+EBYFm|@@ed&d z{MG~H+1Q}DO0>8Amdt>9k>|0l(eLC-vsoD;gB>Zqj+)h;M^F7Ly1VVRjCDAXTjq&J zr+GKjAYTm)>+u6O_bS1EFDjlho-0gpZMUoTwh>VZPxy4!$iETz_s)nw8~JN{mYj~n z@ZxAzWsFLN@RFkTy0Ba?ZV>7P!5)gcPxos0=F-FS7|?6ZnTUi$1S3C_&cM0yRjY=P$ic>CZyszt_(6hi7Oj*H8n6>UXJM4B zl=1hHk7AlhE=&@wvgUJ@uB>*cu#S1$!)MarC($?sIsBrMZJ1WE$i&Gb19nR@*;8Cm zEdhS?Zxm2-CEz8f+^B7B?}-R?DkVz>eJB}!1W;|{R6Jt%ms7cgRvj<@wYFi`JcL#h z$l#Fouz-=aQML}F$Cjf~lL`d2Vz9`Byi;)=PgsVp?=PVnDlEY1kV8X^tw+ z20aJd5_Wu`xJuM=B|3-N*VUj|IS`0MjKS{#x4iOrtnIgxQGfB8i|`P0A*lMdn|{;| z%V`+b4mdU6SCP_Ie9yKTDvkplx9jzqFc&zr;&3j9-yHvMHB$dofTJVDQKj&gl@>fE zow-N@Pgem-y*}yjN&+Obk=9}|j^O`YF+f!Rz&G$MlAvkx7QQ8u3=)Y@sOFT&ex~Uz z=SGk)S6@mcPnhkv(_O!^|Ik38MQSn#1-Ytok#q_+PCLraxpOu`k}g3@G%fI5`B(XG zEN9U#-WP*JYgI?t$446m-W@C;^p`s@mJF+RCf1m{Bp-1F{=5`H(nrNJO3w0~H+zkk z&1*Be{!;KTVhMdaQ%>`00pX-Y+o}<06Q)!ia(JzqYcxCbj6z{Gm&Y|lwz#YxWYo2W z9G;7t9O~}18%o4YLZE5pz(^vea-_z-#2+K{oDs6(HY7M!GfEc6oZPuUSXqtqB4v zD=@hY==V6r5Oat(cJB}fn98j)$_=8~iTNqF6qOjeLYvm>PwgNkc+T<$?aCnby)L{# zaUi9~YxdZ~U7~P3T9M#8yGCpTZ%}+NJQqR)ErQJcS+>97*Q8h8nL){op`Tgaze9PJ zQM}B3^zBnx)9l8wY~}4#2|KI@a`3bi>hp+x5C1KUI59qxS!D|1*{HkGZ@XU^!)$VV z*E_Z?mD3%ta!vmzA8N_q{N67RUu|;ksy^+IE{2O_d*W5d>mc&TGmG6bJUpDGWkpaU z&}#mDP9482K?3y~ZeaW&J$2%{?{V(~?H~&7rV0l!+AMs$xje-RlBd$=MLf_hnOSSl z*W}-icvc?IC0=>>-xyu`#}~-2)b1Qy+!K-o7Ma}aNxaDDOFQCmgDafkCd5Jy@)oD4 zcXv519>hsVUJY4!NqoCzdr9j90ogKIfO-v?__( z>hX%@SJoMy)<{xU3RGy6;GeKlQ&lit)dJk&OTRvxO!sF#H^h3qoPQllCUk!O2p}XM zmmbd{L^Rtw)MtXxxFjqeY5Caod76vgEt(FE*~uud>QC@hV51$B60vuD{jFePXgKPL z+aTe|)9`f)dU0UqT6WHUoj^e|^haO1zObUCoE&eiTjog1Ps2I^XU94!kPtU}wv~ZJ zdxH`)O1gMs>39D$?>3m_Hk4I6!TMb=<&`n{P+~`$$SZ?(RU=Fqn?qq)qh9T(h+CT3 zyEJ}+;F*YMrYU9#$Yx^y=s{S73IigQ3jmJm3B%C*u5eP^blltHl{nWkqfpm*#P2G1 z9MkjWcN9Sw^1q(UgR~OA`DkXSWTN&_DCttRZ{iTHc&gvmG@u0cAiX*pm|bdQW$m~} zK+{Khnfe3^o4D#_58Ki`M?evhs=~GGMK@#hJyW+h|5>v$GV^=5VPRI+c z+jzu~nNP>^6H1f2>051?eN^($5USx(V_p7GKFxx)K6p*hZAW32v^oghRy&BDrtd z=tUv|$o?}wxndp{ux)yHGg2DFNA{DY$}xTNsFhW(0|0+GH)J%y-X9)Du&l-Zh26~% zRmjX4`Cnx-@Sq2ckF(Yv@I)vw^WX$0-`Tf5yMc!+Q36VKPKX{4UgpY2!Qrp>vwVRm7$_a_ zZ*0-Scf3-GU!*#1tsZdIXBwnvr{4I?9CXNTQsTblkJTu)C5jAC0IrPKzGA?$Vpkv{ z6tKUJ*M`u>^!zPdryLR?ybhc7sZFc=L8pNkK{?Pr4-Id?;2-YDr;)8f)a zNJ08mrUPbuh025_RAwl4sXjZ}%G4`owr8wtM|>skwWd;>5C)&}QCah!96slA7C`z_ zGb0m;T9kiMw1!TyzdTPmb(OdH_u}X(M}F?RqxGg-R5oX-rnGL)Xq1~jHn6)9uZbtJ zRov#=RZhE#R6^QFtFYxE_P};TY>ou1;*$|3)3K(w+mL)EI^K@Lsk{TZk@*98GQBqY zBg9^*n-)_|*dfBTa;zcsSQC3L&YW$>&F!P5N5soz#-p1=-8r;6m8jGQ2ziT3Pl{DN z_fFYSQ94yT(nS_GJs8V@R8ro(nltLBK`=@0p3%o6NGD|$bcisNE?0h#xmE*b2`=c5 zK?6O^tpjJV^BfF+ni6beh8G3S9_rFaZ@d@LejVPxJYxU1un7FKl(bhc-X0&*3{C^J3F6o< z?JMKbYew(jjl&<5e4XE{(}<#LzNH#{16KL8?In<&j@VU~ptjJMaT5)#z}J+@<=$T9 zV!&)qdmjKv{`aC^gyI(9x&mJfp>O)c6G?^=wRv#tmik-DQ+mZbnIX#ET*_+8Xt|P6 zwm^OJ@+y;RCEPkv6tIj}?@U&ou%5{4^DIB7`U7>2I5JVVaWDxYACiQ}IG@|gsN(hx zam8~FBy_VzFfTn&TK{_y$&y37G8=bX__O^RD4oc+$myH}QQI>(OKuR{e#EMEDZcdd zff**J+mk(hsft7Wnas5e^c4b8<34IgI>%3-Co&@;Z9{PAPN<|&ne|*5wYFzW4uwWH z7V6Qhc|edZ`2O+rowhw2yi4`Nb|oNeU)o~?c`Ku1aJ1E_UHKz^qn~8n!aXl-|9^@f z*U1+2Lt!;@L9*(cvK_}*yu354?R8yzr~k#Ig{I>-u-xMvICfkIjim-Yvz`~nKQ&ZH z%fZM?vM zvJKkq-{R?ikeJ_%%Z;auu&N`t5ePgNvp&R5qk7+teZB(KG#&N)wacPPkSy5Y4wq=y?Ki{3+1(Lv{0>p4({ZZ zpC#!Go)jBY`l#!#SamJ9kY49+qCBO?b14YdLMfwjQmo*!3p^_x(5iF2i3TI(h}LFa zZ}fPwgN`<4F^3?i6oCb1W8s2tkme2uTAns(G$QP{$`t+!MRFJ*e#a!skbBZBg9`#e znG23xuMm9A)7A97ZKX%i1*fX!so532(wH)MuXwh3N4u4I|3u+Ml8JP*ZQNw=pWDqo z!w6?sZIf|x4ZWw|9a7%Vj?d$q)@9I76N)MgJD<^^hsvJI4&1>8q{q50@wfmx0d#YO zm-e)8Top4F(((8`nFJTKR7I}Y!6+$Us{>%}?p3RDQ#I2SudmRXumz6cjOOP^r6bv> z$vsFN#MSU~C`gFfhhfA;p0Vp7Ky5RgT`lz9H0o`l4bcsKbGwc5E5-rI5yEjlmc>(H z*RLpePRsZ-v9{jMyNgF zs&*QI@eMO{SrTR&H+WUVsFYZ8DbJ3~>_0k?`-yAy-IOE-4RoN53F=pU(1}eO1>J_C z&lRw%*~L&F+c{W1DD-mDF7@Bukj<-E%Hul;B9%R&iB?qP{7QK=XE+^@H;Q8X77Bj& zwgMqmd_;2cBVxfxqI;9rxP>8*ONS3g*uM&-UI#)eP4Lm5+2}9 z#-!8%EqWBLO&)D!^0cM^B=i#$<`9QxN8*7=|?24tPaIf;D+alJcgm zEwWjR%-6TX5y-5CVY1G7(2ESRy?*(;TOAS>N#R}RW1SHe6uQzLjM+;>7`(0V7aFR* z^p~uJ_1BABg{`9z`|{$Wr#<^sp$Xql)y-HJx-aG9k;5#PR@kdgDc<&2F-;`Dyp zv2%5j{m=#P?|Y$Q(k-~`t>>Ug@g*5?l~?%kOP_3!60U1VA!)l(mG-3!8vLo5CLTq1 zXsX3a|12%8(j8_6#XWj=^OMGvGpxJeU|%8= z2j$kJOD8(I$SSAYAJpiSqSO>M=VtIAL)q}x_22j3wPIb@NSk*Y9i9? z_VupK>7N76&i;rmY9Mh}EwEv#PrvxxLk}wn{_IOYe6X#MhX}*1_^n5lWu>@EO-qLI zN*eEPztWZU1PXH2lnom29J$foi3D=Lq~WCNUp;737J<&n60~aKorTm1zQ&SGr|WQslb=@VJ$12H(!gEI#G&TLsAz z=?aa`vZPDz{+W)f0X(Z{`Y78e;UYA_RSw*Fa2h|G+AX`O?=>y8U=od3`xXY|yC%6{ zGKL9xp>jikCxU{aNO5HRuX4Bkh@D#1B}g!N@P`}GW)Ul!26uXUW9om?d_(~nAJ}X2 z0k7Zr89pYa-r8ZAno~%8vxm$lJoGAce~QodfS$*J%-V+ z!}Tn$)~j*)(5FsAZj<=;GW+@E(s1Pt-=i=+O)ovDE&JV1OL7@3<P7Kr>YBp`r{iBY%trGOa8J8y_#v>DsOSBwk?|SdbDnJ6$ncGL$Z~#xvd`< zPmgP+M z+?Ti*MVkcb#L>6v@0ls=qsoIRCPj#;ne=eIlEI?U&)D0coVgt>R*5OeXkm*>xglAXcB&Jz+s4 zt=)Lc2Ocu%9Gz5sFdoN1`8cgCt&CFg2_I@yMaiJ8XKeT*;i$Y5e`-2BKThcRIc3Ff ze3A3Y6}ot1({;excBs|GK}7^bJtJ5ly>c(gVl7CCd9raZ+2elRTkq#3OcQs&@R=%=MGC$RgZ8bQO=0P zU1?2eS|91^(jrxIYy6M12*VWV;6%3sXRUnfBEd}rE6}!3o}lM+m$1^OGgKkjzZYlW zma`8x<$Q^pLiT`zLN$&7^AxL|X_>Ib&xc_dwSDT821Og{0f9qu${0yrQi!S`xvYYn zW$4a1ePvCO#GtAag^Hg!@;oW2Bc36Bs(Wm}dbPZ)A4S62bFJc-td9XfE&dY*LpMBf6bd(6nu8OP7c+y zB|_dmJC^U}FTCu?h+33}C z1RKJf-}%l%Dsy*gBUUlF(LTlqb9nB``M!GDc>NzO3a4_ZA*Qq;cY-dNC& z#HDN(5y| z7DCr%*zdn@EowV;X&dDXjX*64#WtY$U(C{}BJ;^8ePg%n1WHZv@+t5I5eP@Kn7 zhaO!N6)u&JT{(nC8zBB1PAo zeTULX`cQ&9>G4LT*+?;T;@lKJmcOb~G}%*1#Hiuzeh<7>J+fuy<6zSUNa92}m{f;J*#>g~@ z?ZL%Jd5L6$=1Zsf3@e2<@S(*t4Q%Yw$(>0MvHg1ySndp^G`J4TP)8SO-%D5L9U+TP zgJ4V+J747=KdYb2R_-CLIfPmkH}rYl=n*n&6!>))em8!#z(RQ-%zQ?jt!rX70^6|o zzZmc;BDv{hyhY-HwLaJAtC^HYRbh!<5Tiscp}B=*Z+zxA#jZq7{_$3ICT8oo@`>D- zQYt86U1z(n=!Z(e1WI@dQ8XXAUNwVDId;8DddAJ?qrRdWTlph8MLrl}j_l6zmjVrBH59Y)|=Oh9$zWfg~@O zI@4~DKv88jL$DvnhrczGI&QzE0Cb)2Nwl*XaANKcrIVVDr=406XiwwMJ0lb)edZYr z35k3{Aev0Xn&w8wt*P$|? z!z(A(;u-ZrZ);RDr-3_-pHdbSLI<~@}@TjY>KM1#o(oseMC2zeI2s|g}e zM<$+(2f|C}A3hus9oRVg*edz*jywi~)5VA6&9|wye`@mBZe{El!zVG@Z*s z=;8HTAQVSX`RC_zk8sPW&)Y@l&k^FT{ zBU|#E03{`*kld}d885O=?{`qY72u7kjdg5)3S(4P*p~Rd;AXs4#Gea$w_}^%LZ12( z`6|SUC?bLZ=VE&kdq;oE9U*a^H+c!Y+##PGX%EDC|{fx}vm5W5H?Zzed+<&&j zJxzSNamiRc;2bVkag`qThV!`PIhve##=Q}dsBhpTrR{FID^yQs$%0)>WoS_Lz<2M> z7cecaOYtZ|9-<`OGv#Qfjuoh25(m!yh#?<6m>QF!tq`3q-^8w>a;@l&odP_zXj|YS z;OcJf>~DA11fmKkv4n}}Ncl7h>g9A8UD@(vSS--WcIrev%fYkuas0W(5e{bi)hVR= zfh!34h`#MK>SHL?jUWv^t1J_gL|S!z*~vBqHUWVQus}=ICI~p&N}Vzg(>1*$EvMWD zZLj*iYS+au-25#JV{l9TT&flPft!N!7HH}F<)3Tn%zm=_CQ?F<-%*a_HHK{()t>qM zq#MY_+S+IHj$~C4ml5Ie6+&anW89y(9BuOoUxa}Q9t{%98iUvaOY$#Qul6H@ps$a| zcPWp{F1n6cK5fYEtW0zN_aDf$#Y4qV+BSnTjRSh79D6;s;gl9D)GwcYQ6`#x{*ayh z`^5B(?e>TeFZCMT5zaf(QWeDWGj4iNreX6lJJQzoSIUi(0o#CZuLmcJAL}Nv@ANh4 z*3TTo9**XJU(^_4>jbbk=-U+Ms8@he2OMFx^H``VaTY5^1NQwLvs*SOM_(Cryy}HQI z75{kVy~oRhq2cY2rH8uu#eVPg3}H87TKyj-1+oosENU2{wkx)t_9w*Nk%Mi2`LXjv z{SnG;{Bw~UP_E{_JMzwF$X0GuLo1|PTwmeHYb&tuJT*1zdFTC~4{W%zA`B~v*+of9 z9}EsDu4(JL3efI9navnjgx&bqX3oE%M+<(s(v3!Nu}pjrd;hGgh z(psOelxSuEWA^`vuBs5keD9hSYYE31(#bj8ggh?;W49f{Xqg*&dXD^xoEh+#5)#h- zOsiWO54+BJt-jG~{;tm}LC3SZ{ZYRAtgcgAUGpsy*ObK+>pL{9QjqA~Ou2nxEvJ}aQG58IWP7%Ro=G@ju6f}1M`>Pwps!`1PAj&^A&}7 zu@DAeKdRK+g|XkY1bf5(QH}hr;n9RI5yx;EDG+ECDoxudH!uUo^%#ec69daHifGhB zD0B5}AWmu+@qjl+DmAq)=f|$!-Bo0o``~WSFqDz^PUiy*>cB@qdW*EDKKbH_s)89t zR;J8n=9E2lMZPWFaQWKosGz%PiinQK8xEGZQagt+(TC%0j`ya$F`-Bjl-s6`p_WK3 zP7nPF(6o5TUPpHKi#6Lzg!tBk8jSjRx2W2h$Lx(`G#r`%V%Z`@uPc%Hl10+vo1zco zkEOgeJ$H{0@vm%oUV;rjQ6zZAyR&rN);&?3=^r7APkO4XXHt* zCi;%3*SA(oRpNv-i@KiYFpsBcj_o^q@waVsFd46B3q~NE_=cPsU<-}XT-#D#5i7mm zP_gN-LAykzq3E9*rm4Yba+8p*)ptSArEuhZcfqQ4I`_b`#LH2$wR0j~u>qrz@U;%+ z^|m=Ja!JdHKQjOQ9f^PQBbuH)vXD5qY*^}z{UTGORZht#g zQ2EjII4mOwEpl*9?Ny$frp!E!Hr{t^2V=Ju>K~99JmJo{A=)|BIgs42zAaB*|9Fwr zXVc-_<0O_gO(mKN8DduxFy1yW835yMbBHy>|8|XaWpP_Q`l|ifdO)B!Q)-uLeT96~ zwT$D5w7K(_$ylzm%*{uD0^MUM_s)R1V1}`(jn_v#b;sxve;ER!(sJ&Vzdy+v(y(3qt&AHb-~xNR%C5}l-CD-2<0Ma?+&bO(8CRq8 z?DWM~LkdKPd*Mxg)%QFnE$jH*88poGgFETPyBo_|z*F8EDvR~z&dN>pw;Dqha{RB!8oG24RKc#hk zC(+z4KY6enrc<1e%_#^pzX|0S>gb0UB}$-V-~3F?=H^p+Tv(CB>{y}d;+T9rW*+}6 zFF*X+!ya+@AsvBf%?e%eyJDf*yoX_xv_i2U?%swO`6n3${+CtlmqKkRLA_+>Z0?b>JV zq(@MY)_6vFLAo9#>GJ3fna#B+9gPH$<=eVLLNBMca!@^6FqNz`4yWN?InMoBW76XI zyVr%fVbpWF2725gg($_V53uKc!-f?8#zh}iHyb&8OY`=wh^SkNtL$y{?Dfyr--L5~ z|61)7miV;K$dOblI~>$k3H{B%3MrXc0U+18JHV!Dy#5R>d zMeb6sgd(2C`#5&685PP3c0Mxj``CA7 zdjY3!2048tAL80FSUVKg3cHH=3xM(q>uy(X_PwLtMuO{;NiDXBsfY6A!CLoU3@saC z9Y-K@pHrt2+GA?a%M`jsmw1Yw!XX|`uK6tTo7#A<*tScWR~;JqbLY%#&N*y(3~{=Y zazSK%>6(j&oR{$u7~LC7){%Y_gXOU(b^%4D(8MGCRBcZe7p4!&DaWGBR!jxg{ckMp z*xY+=Ta!^&(p0(jyw@rRlIB0- zzWxERNA%0l{!{_(oj_loFsVe2e2mXO8K@0Vrh8~lnPA1wb#bk^M62yV1Cd>|LVoKj zSa200e+5W2cKqDn!Eetu{&keFievyy|1_I?m4~PgF$#YN2t2?I=JP-Bm-Qt0xjB9t zEPtJO6M6$LUcYUS{R;i9$s-%2zpY)}%4_-HMZ6b7H?MT36RBE$4%DqHvw+v>^Ng&b zw_s^32#;{r;@d`Fo_(9uHnTOF9CjNV-lbdKE?6XZLV+kPy(;(UTnU?L#zi%Q;9}s5xuCU- zaZ>3GPq+Z>NDA$}SaA2N%-qhn0GlzIvqKq7(Fz0V!s}@4B7^qm!*JzZ6QJ((fC%ij zJ9F2m@jA*`6+fP|(S9E)LG5ekAM^j>8(No^SIxCRvTf_AV{QhDswAE??aw2AoOHhp zUHcNf!+JH(p4HxcJ+7-)nDa(+d|M>xtKjQ%C$vSW0}~^YM}ZvAy(@%KWj_{^!(ftF zAwwr_^i7+s50O05CH>4UJ3uMktjcZ_;!zX)eph<4F^J0RWnvj8ba2~(uwzeldr9td z3Y~xqc*wFu$Gw7e&dSu3j|_Cx{<{bKl%JO}mptkH^=ll6S-!-&d+9ATXF?4*uoa#B z??aRLnyfL(nZVe=Aw;&Msi0o=Oyc9~{Pv25TbYA;GSYzU#?)_@BkesDDF;ib_Nx(# zdb{*jbe2aFq)`7(kccmw!-Om}1)3#U^dod>u-q#bLVk>6pd zfU@C^lM^&b;_E?k>&BtWoOW3!L&QKkYN=o7( zpbmg&^N?z`Si7`Xx;E|q87!hkF2#{AH53_2svL030@?UfkT&NwN4~dt@ z=tBr%fG8Z{xX|Z?OJ?&lCcV%o-@6q9W2$bJSr&@6*tmMRXL#9eof$H>*Re92|-E%B=(IF1`q|x zQFb6M{>MN$7*Y2dXCE_maJpi+vCdsM!9%_lM>Xw1%oWd>(gCUs>0U~z34VWpgTZnB zQTrq~jCh9h`73obtlT6jor(w7v%-C;{hBO{R&$CcUGPs7&f4of5nsq50wUvNyk`{E zXe~A*x^VqYrVkGlki*dj(Rph4fI&2n(!f@Fi%MVtC}+t7kU<-;S4p(a$AbY)Bd+R& zS$ky8+5i%Y&&Pz_cd)`p9*)0&W6M^;TOTzWB(*ZzIXlYiNY+E*% z3%cX?_}rnB&foM`+&l!1vkqL?{TKWE&jSX;Q%%oQq4|g_TN?m)8`&z9WK(rlI4YF~ z)XZDe(O`d2_69PLw^&3KCd+#k*Q4}!n$^c;G$0d)3Jcg@XnbeU{E6w>LWt^<-OihmqP8xWXzcu z5FUde9zM@djrRKhYn}*k!843}$=CY7fbrJ>Mda<97Lw)NN2Ci^9oZ)5p$CDe}2_GtVPG;RQFn#2`asW9tPU`Yg~^#zFi?tOWj0so3GAzhW^ z`WmRXS$sV8B!Z@5BCSI7c$RrFntk1j#(nMRC*rZQ5fg9c5w3ukj|BH`%gnk}970Z7 z{A1s#P{s|I#`^JJM^l*Q{YU)v<&U1F-Hbx=r&Vfn$4tv5v>-7~Dp<8gyq?#5DQD zW|ZUL+w*;&mLZVgp0;;lr2g}%^C)2%+a?UP3n9q&X~E7}n&KUiuIiY1ir!4sz^OPY zGVRm+&n=l033%~RFHm@Pk>DTPLI@_9?F);SEqwk{{7jk!BnU^zW&E`fy((-`s7-q30P)_Zmrz#6 zzlbf=a=XImdU=emi$CDjtjF00lG!UjEN}+W*Zmi--K=6}K&8*Nh$|Vmr2{|$%i82k zy9N z!(ez9ki2rKym|(`bayj-V*m_$1Q}M*^ZICV#HP+Gvx*=Bir{9yO=Gioh7vZfPZEyJmoO+9v_z<&~p^XMNJau`f+|x1j zv-^O6$VJ_|W6v=%zU7_4;#1GQTO4{(v27@#^LRu9kJ_o{4s$jHzRV-wP0!TetM}nP zcsNcQ4#z>^`78(y7uCfPDVbhXXWzx+3sP}wZ;NK$7F}harqskuJ=vS|#OvfS+h4%) z;t)Klajb;^kJ71BGNgUPT3=0h(NYdDOZS(4``Kj5Vsp1%PnMR5aO8GRKefu3v)o!< z^pPVFB8eOL;mjSy#8VPQs50mupK1Mh0I`HO{Sa^TnWw;b*QbS8L}@O2@LWubylkS> z;0ly;>1cO;9Rg$xZMp2R3US|SAdgW4WL^TmpqvqJM#Su&iB2s;@SW?`vjq8zpm!K?c#GCtZ3HC{Z0yb)SF`(& z!o(&=f9=}tN2QNnh$V)r0mh$ky5di9B&VWs9_3RWkuLQE-FCXKE~u_wmpQUYtKVML zkh-|!DBzLeo%C#*aevL)d9}O*(FTC+jWVnw#a$XdBz;@Fe}-$evH-8#KJ1x#`jrk= z$fB9y^7*8u3n``nH0K;mqPo#2c)H+ZFI$7#Sh^GE3xAh$XN~?Z;QXi6O8aMeo3q2ghElz5#k`lS0IgAxDCnJD(k~*@$REQ zL4B9AO@Y?!$=}qgDmE9cEh7ytq$RsROIK{6cU-O%5~S|OP^-N7)>`43g!-Hs+FAZ_ z@OK>v$LI3aA{kFdM}oX_GL)}E6>sF98ZB@^(2el`motYlG@EX za_gqR*3T%hxxP=icAo=i1LTE|=N#tSyrWGhJ1eOQ4N&>9wC&y)6w6UsG5;SDX^E?^ z%lc2FylCoQb!sTCU2^MR_)l19Ts}Dzn;gpe{V@_3tid6v8m4+e*>J3$X3-dC%$JSK#?ZpIt zwy4iDQiw-6j*UBejEtww=+UnsaR4?0gb((aAQ6?|CcFW@W)dfRvVsvrJ|d0S9rEE} z#`(Y}UjJ$nAn|qTz5U!;h%{lz$BqdGDRc&ke8{ZP3;2-}=Vtw|0UjIblkdP!k*QxE zCAPzC0CJ6b=n%vP^a04XK!!GMpwssd@SMIGsFgIBbONA8;s@FS>>)sKOkoyrg_}D=KJ^rZpYp`v zi0OATYVhXFCvt#B!U(rIz}EEpb8QYIP(}H#h0fe39}xfmGkTuSg$PJ`kRb;6+AR!J z=O?&+mi&TSe6lq`iES|5u>B+issIK)Rs*Ow0HXmEuS*?f8s(<9FmN6e37jMHJy;zB z&m@zR*Uk~GqtbAPVgaCN!0EdI1+>tu<>nicI+;(7ji#wEuI1^}?na5)q*OovDaw_a zz_hOvX!X4H8UPdp{O)_nsPbb_ewa46=BGK+8<*h)?|M>=dm$F9F&v}fFP|D4f9Kb6 zxuw#~;|~BO!W{qrRv@5~&V<7ttv%WFkTgfvCp}&LwyQlis3jMOqM_8Js3i8re~daB zc>H+)ifF5Oz(DqEeTyo}voD^&-;C1;q+TBnfmW?l!J{6ufvN74TWMQP^T48baJHm4 zCD>np@D4f3yNP8uh61fiJaN2k-<#Udk?9RSZp5*gU#~wG?&a9&!2mGiDZIaA=>OsC&4^{I1n4}QPj#i@HjQi9m$OnaH8gAi85RXm0hIj5T1_@Dj z>P&7;HYvJ!i5fXnUu1@SGSf-c zSgAcdCoa!PWR%NbqWq09UZ{mn#SxN!0kt#gjR5(6zt}C=LnPH-z@r<#7ZK_RT1lirG7T+Thb?=~O zIgy2J0|=~_cUAcd7t;QT=rxAX79wGPh@y_j^Qv#u0i>(pjtCRuTCf`gF>~U-jVRFQ zGp!?tVdP$Qf%g|}w1M+444*>@&?Z*9*dJC%IPSI#fj8`q;YC2NgS@W(^GQndU%+Ls zw|lfHIebr@GlKAv`H9<#=`s}-E*`W80OEAi2ri?V4#2(EZH`6wv%!3HX&Y(-6=i!V zSYtr};t?F^jUqn<1V?emsk-z7aEmTD;NaX5ad>pXh9}1vO1@* zRYvpso45%HY{82@t+&f>Qa-)dgo8mX0>V5H{dD_kt;k>ABRfB3lRV~_?#PqLGGP10 zSnJci8I1AjLc|D+GpLkns3_W&C095Av#{XFMAPirD=2p?otawLqVmk3_&Z%B-74D( zW}r1|-bA1IN=Wxf%R|#;>Zn@M4QaV~%eWc;TqIqWp_`?(wa=}jNbZIWuA7NQ<{jD` z;o|koUwArCE+Vc&NmSWlEE}m0IxksVEP+=;&&SG}nK?*`NGU&m5GY<`)AdfEylj~# zb^Tr!F|Etr5`$5Al{et}e(zBzd{$E>+2bCNka^JR0J%Ff1cjp+22LWgAX>K2dwQN2 zcQrMKC=mY}6{U1d!aX%aQse|dOcWyq=Wv4;=K|T)^qv$Yf6b(TV1&a8y4x_AD7Bq` zS_%yR(NX{s)fE1>mI9bZO5NB|?LOWpI-|Q`ZGZCMzqAyHpHT&0LXD49Sev~iV4xu? zgL*+Y5vvQh1Ev~j@N{9_0N{j0D)p4$ou=&<5AEMcsW zM0DyCQS1f(-qbP4m-(;ftO`-$tE>uF;$v>yIaln8#+Ez-apOfDOua;=_DI#`y|NVz zZh@X1G9{)@MgqSG0HM+(q0)rG|DO%RsEAq$|1ra7wuV0f2y#Mx(m<{mB`2TO_jz7xJyzd#S z2o;F@xBc7wG73r@ab;c!US4)2?>a9pt^G`V$`!tTXLsV%t-o(IduJ;9pQUDJ8EZ2B zua;x!`mY%inqt5U{b%{D{R^v8#`L7AY8?~& zM^+9r4XYGNDRIoNH4MoM6aHODA!~iZp|?H5jr>x`x6jmz3KF0w+wbSuc?-&pF3_U}@xqeRTH>A%d8- zaP4{9^z*jFj{LVvy0oLKok%Cdr`dwIB=7x| zjQsGzyJue{)5f5tD@&t)5|t4reAD*7*;6bd?!T(#RzLKb)}7Qjt0A6v@_qk~*ll6s zV0ORA+Yx0Bg$DQrE&6xDiguaK8X)CAm%R;EV#BuY+6WWFwW`tTUvo0ufYt0H-Tp7n z{e1Ncl)pvZ$Mol9Pu^E)S3t-W9`zGi!_P#SSB8*QzipVyzsVkaD%;}Hk9c*A?yNfW zt(;t#2a?oYnPd{-qI$%mWx0a^f+c!K-U8tx)vHW zY(Pifl@HI^a*Cw`rLgm#MUCz}{K{C?fkKVg|CSJXKkc-xYRHRPREaOocRVEK5n}l^ z*06(XA378z-M9OB|8v~|CnUrW!^>2BjV!Lr|E>!t7Z(>-;&ln7D5)>3gF5V&?{70K z>|OWYA81$P@IR-KosKCp&6^~Xym_i@CA?=XnruDdZSYAUb7~@<*Rd1$?SfghT}2+R zXp?#B9F%gz?WPO=VR{$Bh%@aLu^r_zG4(lTjlyuZ`K8KaDqxiq;_4Azo9td;Kf*U&ZlKimuRs z&1d;9essNx=BYcEp(nciX-=Qq60^bI-*NR8Jezw2?+JR#_S7rBj6KfG*@$DHVY?;$ zgG*_DQ52z zn?{thg`$)6(8Y%A6~p(0Mplm>DA1_eMSIY@8DS&e1N z)7wXn- zt0AoIBe(4*9+jTRZjPo`;h;AxpoT(?RdA3ZuU`z6r82w_4>0h*09pnO?-8~?RH<_PFct#) zZ}692)RW-U+gRaQR6Ph?kgy^zcJ zqM&fsnF8nSVOtUaNxKFvNKIvPz6s;;0!Plkg(c0Hd_nJTDR*~A^!4j3W*jW+rY>UR-1n>CUzJ==1_rA?tgPxhG(?sc%V^$PGodmY z9zjb+k4#8klYh2M;}%pOGVe>_P}UVxzG!hAY$OAg>qE)(Qv}!sO_Gao57tNrI9=St zWTg!yhf>$snS3)AIz`trymlGyuH!4BH=Y0b-SzD5N6fA00FRlzCLWZa-j4P#0*My) zJ`(h3f2#}atEjtw%UwBeQl$A%S(2~UgS`Im=zs&RwB!nlEFG3lix_vhNStK=^HT{X z3Dc+ee$aTJUrWoLqC4SXfhic;0Hl{{cvox8WhSx;QXIVARLczE;@pb=*?VW}$av5_ zSF^pw;laDFu?yrp(JGWbWplVa3N-@LvlJ_*hS;9?W1r5t)L&N5G~ z(+CZBGwSyS6Qg>LwSs)VS8cg*#MEp#tiD|D!ZPqcQ~UBm{OJWVZJ?ZZ#ldBgp`(u_ zrySj`uPQp(ReMAH)bE~(OSfHpZZQ_-=E|~ zG(Ac1+~ds$)T+Dm`H@*t3%SR!P}v3o`YP&HMDZB*9t%Y7BgKiEq}Ul1!zXFM{Y3Q` zB)_pNR$*U&VukcBEJPc)CCB?%JGHyn)(*8KCqd#pmn7}yGfDAmRAqn~ztPXsr26e# z#?5_msG+-v#j_z$!IK3?`|yTPK6%LsYW*t?4xh2oJLw`Hp6{+$#puMpRZ8@t#i%-) zsgs8wCO3Vcaw*Y<(La(!Os)#aQ*5Tvq{7v3xJ|i6dtk{H? zn&RrOhoNwoCVsSk)@?*^%H4Nrl&u~XApW-YNn+b6G$_1ZC*=BX%>ZBifR?`Zg1F-NECfEB!5Zb=q6_H<{@2LTmnz z;oIPsN}!)MsWe^BV>FZ+RF{NmflM-NG7eCN`iyUhd~+cIVKjc?(GPeNr`c+P8BCz`%|oF5f(v*y4$@-^*CK z_jKc%f(GNDM&4_gZNJS`(1@KF$Q+?7+rME|E%aCrT$HNtqRV~8$u50)x`0=d_q17e z6jC=>z%8BH$!C3Mhz^@Li5q~udMcL9R@`T{D&6e0QcMS<-SOxBy;)P!KrYT)IyHY( zt;;RuhvI}cyQUmUZ@>b_?KSEkMt!FTRBtrbOH<3$o?`cu-NRJ4hO+xsfrxQN>BQf1 zkjw5M#G!3Qxm-ToR`uy$03V}07&E%MrEBkKTj3m$)|FQfJ4EnF2^&k%uP$>>5j|zH z%)q;53ZE(<5QV&)ya~;{FM>Qi_*PZm-WN$<2hq*t43sEzFr=yQ(o z9&pwgR)(W{nmK+HZ=SY8-T&arG&1u$RUEilPiNn0w_ z-Jmo+M26vC)nGp~xUxM5%oBbCD?_2Jl%ujVLZ&DgjRo=E#2NOjwCIpQMpchxx2O63 z@vo9^btR>@4~(i`Pmsyo;-@Tgj-0O2*J`kyNU%N>c1a9-ayyQ100MzM%Z$$ztzg-b zdfiP?iPVKXx&c|kD^z3 zDxxx#n83SSc!O)f%>5(puG8N|XCHJSHHW`fNK!w6N!!e>l|tVO_CJd^|54660;3>< zsj)NA>$@A0M>gzH1l=bkm!`Fyi>6EPJtr3x6(vRoc1Y=we!`CTzZs2HoO|`h*r_Ws zX4$+(;e=y3k-RqrxJeG^=SJ1(=cR5KHYRZ#G1%mG58d>0_mB*kb(lX9oBrg?DjJ6GeReKVM zljVs~Sa3ZiO)4EGIuKZxO18f;6E;iWWn4BzLPbO86VNxj9x%{{{srq;{jhOgfaf9H zGvU5NoOF5DNvsB}VGYW@V3t9!?s~mg6@>i`6om6`RsQ>Rh=CK`i3!JgliVsKG04Ec z046#$>cGry&S@kSx0a_gF){6P zLadu{!;2?UuKO}Cxk=zC8}Za98NZRx<^|m&cXX_V!6#RuF`AqI=L@$7Sl5aE30VC) zZMkB|T0<#2UX<-1HI|bj#jf;P%25JE0!r?btvG=&ziDLW<^q)0GqUQN8s{?+YaEbO z{ER?`tNn|lu!G}y@`$cfIJt1BDKR)?r?ctKUQ63YG0n&R=}Em&y<4c(S0^#pE*)i6 zF@#Z+ycXu?ZoyLXrnqWq{+Q35sFV44<{-C;N|peCDG;MWO^&G){ojcZnh%2hxm6wC z9iAp0^4n-N9Pt|&-ssmu{K}6Mj4fk@i-B0kw8|Cz3^wNHS@JZEOP#d(s0Izd@BE0K z97^+Z80(WXKf7L-0+weIw5a!9G9o}Zy*ovZV;t*EBPyhjbOE(#VsWq11rJ%wgoTmF ze$A$(Vi!*}f!602fT`oltktPvL?b9fzcGNP*n=SKoPcUz=8)#YZgNJn`tf{`Jn1z> zwXAbiq+f~Y{PzJmd10@NgSMI&Zx#dS@eXDhJYf(LP*Bp z<71ApY7RS~*`^-hx*P11%v>zBC2TI*%I{$_$AEew*X>@D$E!!mSvd>89%vi!hZ(?t znO&{;=*Gm1hwAuR+GmaT)SGsX_K8Pesvp@m=k|O2K3(bBL)&XipjIdC7ezWcAPadeNtBR*B}#f@-ZOrqIN>#OATQQj$c%=MsqZ-9*LpgBZRxt{bW2%`b-#y zD>1D0kTk2DLs)lYGp&ezO$GQ8ijcoMs6)S+y-K9Zrq^_*mRlK{ReDezls-)@`~K9b zfc|-k$O^<0wmD6iow{m>WWL_=s?Uek8JzdkxQus3&@Og@plLkB_69U&EQgTB?`c+O zc+gGVXr0s%5X{(gePf$sC&zmB{Ve*?gd}ZgX(?JRg|*OM)LnZqAqXEy$`_O@&Q$Z( z+^)#3H$f%dQ``abhK-e9VS0JCci!~S)Kop*80_>=4aH55oODEOl`_<`El|YkS01mk z+;-)tj{in+irvC~LC4jVQjJYZDBQ=BB*mlfas+mHdr~9>p#e{LY8nILaaWPm4$D-6 zqnBP`v|ao7ou(OA*RP~S!#9<*ZK@nW0`@Q&EdT@ zM_o%UUPnM!La(ba>3+S(Dk&W>gB5TIZW~2zHrkx8R?*{I(pZ^F%E<{ z^i2Ud&6oh^F4&0XV>}`H`v6t`1bX60nnodVFj+`TfF_7O`lSWe2pY4g*Q3-e0(qmI zFYfI7-Z(Y)#RI$e%9$AYxQ2#xZb&{)dU|#u5SwBYyiQ9=h6E#jcjQTgj=LVc0D^Mu|DA zQ%Z1hv9rrtWU-eELX%A8yA|aXY`}waaq0K&$tju$YOuo?q^NbUcgasgwT*1kfs%45ckiWm2R^^iRMpu#srw8rob|L zjUMZ+9ofCK%bf_XpjoPbDAT-`uC#%qWxV8yPm5u4Pv0``zm^!xl{$u=0>|$mAxeo; zGNn(nde6ywf9k6z;`1idt19hU)1o~ZTu{ddwtGg?yDQI2D5GqpF4D-<6=kSgm?^+m zhJa;W`7`0oi};uKc^RZY@nqUIiWq4Fhz)jAmjV2(kvT0Q}wtHX7Y^3a9jGII8+ZpwG_MCp%iv6l%mF+ zkJl|&tD|kz2ksg-Q1;AYQ9MzQTmqpYtmAH%WOC%`-MgOkp5I$zj`sM@8Rm>9VZynq zupv}MxSQ*x1$!aR0SYA+Ut|hW*BalhuGEPcKlI_ZDuH)YXj1bE-S~1b@_H(tHD`PQJNwS7YW4K+-{bUE4-o|rn8f!x z;zn=>orjgjL#LFRbXtd*IZ63f0KMPk<~NCwJbUO_`ukLT!OKMpCI%1p76Kax8#@sp z++UHNd*mGwM|U6U4F&H@5k<&)N>)1wk-n|_ZocG&`?s-aZ}|TLriKI-I?Nj!tE%;N zk5^XJ7x#z8RVn){g3MViMv*MQ=aQ|XpWC{N86KiUl{W;VD3^V z5#YJecq`8r$FiA>iD44`rJyih4Gk1bv1NOLNImS?KR2IzikD>W+(YO!{9#ROeffd0 ztF`W!@y9;zv$){+>w5O|0!yC1JPzXJ!@^)bzg#+_bs~K39-4MzJD&t1zb{Ic&i5yB zU-M$Wpp|_*^GP$!3AmV;jicGRNGft zaEUr-Dw`Q$?yqw54;@&b)&}2X+&G%E0`yNc$ut6xo9~_7d=X;adbXZV5F)2lQ70)`ctLv@?p-es}k}_*V^Yf_FU+q#rgMj_HFBytHlE! z@TGsmYz)}hzeVJ95l@*o{9c~HjG&DmobymN!=ddDiDdJleTMduAr@W8yh1a51sdeX z5HlYlJ2bD^aDIIKC;2X8?PNvyqAK(<^)JBnt;O7-8YzamI}EmO3e?zi2menA}5trrI|`vZ?6&jn`V=RCar0^V^v#eDg5b+IlY{%IXN zZM7d0{nIT~L>5KNzSnBLb}OrbqjO^-E45Y`w5$+sJ~s*lrN1t@I0IMqxUPr5hF{!q z)0{teC&kNKuxHPy!fA52Re2<<$Sz0wG)X>tR;Fo{l?+S5RujS5uQ|~Ox{t< z_$u8Jw6m+{$NlC%H`$>9FZq?6QL(O9^5VBZ|APmZwh>`V+%++(l-Qa+X8(@WT{ys5x#D_WtRCj-3@`V3$_5qf(}WrMY!s zku_h(_<);AWVPlVpm3s{kNHSM7hl~2F5(-ELGhGy|K@-_JbxH^*~laO@+|SmPEMVe zexh&m)s@AMvtM)b=?0nf`JJ12O#1B|S3MRf?b{Ib+U#Z1E1|wSd+xZS4$ZDyebGA} zg7Nde8&^HbGw0GS8K3ID=L(7SVU-Ex4A^poMPVkED zE3IQ*Nps2tkhR4})dh_^fA&uw1PPer@iPyIGn}o1v8*MSj5W>X+ejF)jAYVOH#M#j z$;%8PNED({E*>wbtmZbHh?{-y*giq62rj9tozQ0_-kSaL8jT&1d0{f*ZVFDAbWMGE z`?i|-DcRKUqpykE>N=K;*O_0|TRY4a^l{V$%Elct%Q$RscV(GqnHuToIx3Y4m@^Vd zBM`flr;!4y3@kQ_UeqfkZOy~>CETa7i6lCf^36}>dxltR;q{It`sY1s4Z*4C%z#xZqg@~`RGfycEM9#FJlx!p6$ z7#pE$eiHllSbz0EA0Kp6$2D9Wr;<-CY9Ldb%U#0$4`J^e&Q|#TkJ}ZbVy_x8BWBE^ zR_v&~H!-TJN^8|DVv8N4N(Hft7&WU!XlpfQQB|~*R*TlE)o=QKf3EBExqkorjx&<$ zByrAjp7Wghe%-J8b@$%_{%+|t0X-j4lBS->u19($Hs(FyETtR2n&cQo^iuU;qGC3q zUyrLkXXO!8Byc{_F7Vt!?D^h#GZ7WoGtm3pbA@`8@8C|>y|?8(_DCHsoVWLXI42f+ zuOfP_%$+zZ=7n9vbGj5s!pQ+jYp9 zQFguvt+@h1(3B+&WNo2A;O2%ka3XoY_>P^)g8hL5>@M??aaWggQi8o)<&cnX?MMb2 zFdwHUPGKm#l5%G7$dh3#o@Lu&o??SqBS$vpixD%*=)_z!m5}Y~aXmp_F>3NN@nbmo z*3Yx_C=R&AHV|FMPnCLC*aSSC5T4*YA+0wE0IRY~59um;GG-)EAiZT&3n2>|1{&C4 zOB8@YD^7)CJug+LZwhFCIwMt5`TnO=;Ve;EKY1C&L?zvYt^EX`1qUHSt*m(XYG_jK z98wSdu-wCk)ubm6ap>#taiQJ1(5ijcU=_jtFrxLca8OUt*SB5ci5w(5dT34oOc`sQ zc=&8Js$YgSp-lws^gOYj9#@OvJ3;ZYl2D|02aw2nDvMvlc=~6>+u=Nv?>T0%(Vl!s zCs9pGf*c6B*4Cq_OzEVQx6_mKlHoEC(tp|TcOBSQVF+i}jpsnVApoa`w9Egnn=djI zuZP*qx9ixAZO5n5zC!1l9u=I{q(sx-N+*D6N#M#mpK3i}!Q||TSJ}M)-BCpyFin@P zpb)84kaod_G@X#pH#f)Mtx1OI2I8SkPn1@>O=xhs0(fHLBy9>49FS*PZ3#|A=ZU4q z0p?G9pbn;7|4v#ADM-_2629m>$F#43Jr4yJY1w(P&;f=5>o8(;DHn8q_<4J*+0Bsx zC#cQ*int!Q&drI3I4I{Bs7J!DIE6mNv~YAvIzDub^lPQ&@%lhR&Hx8*rVC2$ei8=1 zV~ku`_^dR7k23ZatoQ|c#!N@Dq$RMv3jr3M_fy_3n5O#;4{udQ39>QsFt2Giidn7u zy@aE5bc%WLJ{VlbSIr(GXS=2z7g4^3WD zAc%}c;eY+nuDq~G>*iMH*vS4R`h+LHJ~_P$pGp`n%KxD;=tjY>{H!aTRxq%KMTS(5 z2#L1)RUyt|689i9JX1kH=K3_UZL)9mN=|5!9c3zmaPy_wUc>AMb?ONEoC| z^}jO-@3Ej_`@a*ZJ4cyq`f_A*9z`%Q5f4nbVU4g*R7(jBH#2^SZGBFtWmXiTNaf6n z4;1x&y!StNFbRtO51;JcibSIO&-9O0W(WCScHF4Y|4wRq!AK7It^_k6>^a?l9PPh7 zkX_HK!{#5@=r}DFN+2fKc?TDqqy0ygqWAj^;+E&=6>9vQ;_pH{@gYI~T7iT-3kuQ- z3jE`%#LIyURO@p|nXRPPvf5OnQ~mFpmyz?ulPwYD%afMTB@w<#T&NPezEgD>?{qjA zwjlD@wacGhAru~@GcP)kx==Xw1O(SVg~-ehi|wB-A|^*CNB13qEFu%Ui|n7${l+Qs zpfpO+VtaudA9<_on!9v6@xotcRV#m{6;0;y6uv}eEhIVz{LJ(_vXXhTbFnC21y+I` zbJk#K-@ymYq{Nzkes=$Z?fIoc{OEm7J?P`Zl0b=ot)!vuGh*Q;axVb#t-RAJG$m@x zzGg^MLd@jkd{R$*G>L!nRmJQowq7bFwCe}@g*tbRZkAF0wEx}ht=Xhg>7<{TBkzs- zv@5HXE1Qx-sFJ2ahw*fDJH{p=_||l+f)P4l?=}aky8DuzL%+jh_~xa8=)Iw*SIn2K zZzkxVF(OjZQVOEii{GQvd8g6ri`43=HPd`U+#*gwJM{xF!n>J*ffF8#*ZW&o-();J zV|3 zq$kCHbe%nT2>|mg!xT7G(NprByXQ{9!qVbO4tn_{cBQNJu(vZlK4zpp{XofiMMj-Y zrz_Of!rq)jc|7|6%plV@|LNEyIJXd(|Ka3$9re8X>kk?kq!5z?5370Q6ywz5A{R}| z9-fP{1de*a2N4!Q$bX-hb~>QjEoc z1XX*VgsYFo&((k3UTD4aOMP5~OKi5LQSe=)P8o|G;3 zm&{TO3Xktf%3qmTh-X>&eZl`not)pOU6BV{8@lYrIdgP#5LEQUXXG#08%ZCHK*NV_ z-OkRY9Hcl5Oon~%{Uc&js3-hKs=z}l&$J_9%?2*9Px@J2Sv@<+(R53$!!S>a9e?Og z+8SNgk=k#J@8LDALd-4}%+a)f-K4=#5nanrQGj|%glyAP9^G|$m#k-y1gjKljdssK z|Ds|vVFFDoE`(rsz-mwn3F0DPG3M^Mt1X}9zHDOAFdh=Q`rL0bQa`~tG{!}5pt_GO zzrFERf+un+ymeIXXTC)hOD1|N!GRt!KPAj>Xf%D7nbsHXbHB*~M2p|r z@^}oK-)|`eN8Bt$&wGhw?7$LPlRhjWAlUBvfN`tLv}kTNb5k%>hiDkdvpX6f=JV-| zrq62&IoOACBL2vPFGmhqyS>1@26*&l7%QVYEsQ2b8Z}kki z4paX`bJi;z&+6b>vF*ylH+owpmXPUq-M4suLyUYaf?$uzkH=9OgK|N&ErF|; zOg8B2CA!yi=j8Qh4vB?j*b?$lY1bNST}mKIgj@6=i_p4;v}7o<7l=|qt|vDFfk+Rn zbgahS58Xtn1K~4XbynU;mN+Ky;SD7vrLPFPv{73~D{4s+-)rtus>iBoo*+3}QS>y* zx8|uwsAQ4D5r2+i{wJh0D&0STwTczEnjV2wUpz>Q7#-vnOzvlVliX;9DD@!bdKzja zjpTv^@vrcyj$M+r*L9CK%O+mt{7C)GbfA0;~>` zgbrM==%kS-#0E$Ti?yaKa&d7vER=ZO-KB#(<6E1GC}SJ(S!gml$q(bD#r_5;4TS2uGzE7Uz>niI6)r$J1 z7Q=N+0CI9(kxD~mpS`&ZwjQFGOS9a!x6%;6LToGe1z2&3ErMyZhq>q4ky2 z*uvZXWQrdEFfQ3Z#nn@3pl8^d)!tT_2c{~C@7ZotOEdn+%VW`?V_;a7RmCN$P!V($ zOPPsR$YGhp&tigd`fO+WVVffjG1IDM9x&gQvA@z#t@f8SHDjFt5tsm^*lDRr~{w8h7t!9TdwI zpC(4JA8Ai+BP`P(0A(+LCPjbNI6NAJ5{*<-6E}`4;pPs+U5d!x z(pob*ilF)8@2><|Vrh{T^J_E-l`QssA|{o&wihFogr9@*2sQ#;uI0)=V^@7|e+L{$ z82*&Nz?#drTH0?9l5A?g`p$0Y$t|7sD4O?P(P^;WDWcyt(_uWwNH5#dZmpFC63Yd}k(RciX)6z!Y zc@oQDQ7un_pM!wsfkp73|1=d~9mi_npa=98eJ!@a9C(wk6M)i#`>9njTk|i3n54HP z0z;Xg!JJ^Ml>LQn_RV}5;z)A=G3o69#pB=J693KK;mG{wkccILFDFJV3s(nOhGFuw zrWAlB9+CqpSas8pxym9`IFI&Qd@Q#9F@xaU$2Iek zA}wEVgB7IsM>u#55`X-khB#SM5!r}j(9v<^{BZ4A&<#&BxWjT;JhM7m*N4i;M*oZa z7p0JX6RMp%5MLgDu{3A=InSmJWR$-W`3pCEB8&R{{1cESzGPRO3CuR-e6C-XRcA_k zt2hwxZozfHdX3gRj|EnVL{?f>$49cBGKC7k4~HBa>`OkdB@bhX-(Af?cYblML%0>xrq*K6<9DSv7INXPgeBUh*Cw+T(^99rG)2Z9ZCwjzg0($W zDCT(cw3NC7O~d?@cvK$imajnCmYo{+ZsB~E2Q{PpLh;u5{Wk6kMmBMWhnmaxqf0$# z=Vs}gV+|W9uIPPW zK@?${778U7)WQ1;3H9`QLfiDFU2TiPP($7#3|zf!TIUpt*Gn;I{Xm#cq!c>*=8Q<%B<_4 zE*Of68T6Cr;Z(R|fa8=6zRA`)`o~|v`>peQ@0HRvhbo=fEC`we3wZ)&ac&pHVz6;KviM=kEZ|DqXNzheb zAO6lL8~5FrzZNE{uWvuhRDlcDZ1E3$R(CXqgZd^h>o@zRtfp-Ey%k>D&V`gS99C(snqN4hujEpiK)=Y<)f+|+^6!<%|mV*3QWDrys!^UTJHfZV0Ip$Jv^e6gq1<(_f$$fX1Torh3ob@Mk>}7 zjFA^KN_td#;0)b;%imQrTR#fFlfW?fS9r_Su_@iv%GQy6u0<|c6fQE6pNqI?`Nnpp{F-Ljxp^DC;K(wXsWglYZ9M7bTVm6_)IhVCjnhjzZ!f!~nub z4c<@(iS$x7;m9BX*0kI^2()+k#SKR=&0fGBA{!o3N^{;wDi3fGgl!qyjf-D*Dw9UmX0!>W;T26Vx+qhCNRQyG3LfVs!Q0{OBNK+|>a@SP&V_#N$9 z>DLhC;0hm5YtLsenw#&WGXeO^%`2btBahi5+^^kqDgwW6c*y8-fS&@1Nj(T4;U$2A zuoO7=n7#@R)%Zd)3D(lD^bl`i7p&Wfi)5dWz0b`DoLMN!f`=;`(=1dHpMyK&ErJ!l z^B5|-O)7g;Xw$luj}&W{K!(9W7o{+lTn(-bt_ls2BTH}&nsmGbK1Ar9YNIrHJ zjfC(fbJRc+3QAmrsxu-F?oFtTJg4em4A{H$Q`5uND`XdyZ%MW;jMOH#UcEZhVr-3* z;WPt^KWux+5|*4!vyC``YYQ@B1?jywvvh{KE7HK&689H-rXy#}f><`<{4T@2O`P*! zsAOL4f?s!SPjY*p;U$$=VmjgEPRezH04kp!bR?C6gbY)HGO)351FrJ;Ta6TU{vQ2F zknl4cXW2HSL~F}S#HW1Omt#EBV_D0p7vX8=oEsiYL+xpEP zbx`J2h4@xLN_UF3TB<(`TA;JOE&{+FS61~@6Yqr=N!|A)vRZ@buG`9`58q#5w;JBx zVy6qTN~A`n|1+hMM2sQas9l7xuuay(S#L}mQn>rQpG=LkjY@n--b>wEnBA!P~?Eq z1sMqgVcz{v5Z4v_mLuPZ8MaTepaXXC_4w)19eI#aqkWj9y~V|6Kh)cs`Ih-f>P@Md zo?)zT9`#!L;kEaf3o^jLmM(!gAgT@!hE*43P-oQ#~h+)J+fS{pgDcxB<6BeyY}k?(SBX8O)KOQd@0y_2hlv{e-`Bl&8_ z9@DKdlOsT|Xo$m(&BvFFFK0jp$SXx_qw#f|P2!Sclv+$J`G@nw6FBbsQ9(i>yr>kr0^_Z=YZfx>FtWNE8t=a>X14X;o zt^2`sU548(GBfRd{0Ha}Iuto{_ZNRn7&g&x?v%5mvcC;Kf?lZ2e+ITUI)w;-`AddR zD%-L)^UypwC!t_-iHsbqre9sf7ZO)vXc9fvPi`Ae7K(sg01iUAN8-~t&eH^TE^5x{ zUb^oRxp)mw`Q?Oe4 zT*)t`7uzx%(4Tdo4f~Ve*#BHbDhqJ8J?YqSNMgj^=;$KTI2fwXgNJ6O?QA)G=@qru zp56{=SAG4ScsvaRvhnsDCjQiJ#5ORWFd=T5?*rcC4W9E3cpD7n_tT}kbp|EC6JG0W z5&gHAxjju+I-lA<9@#x~10FAUpse`;nQPMD4o2@d#lj&WrOaKiShdiv zQwzZzuk|$?`;^5qdY!G8ON?w~Gwu=LHmIGwsq3OQgl?K>%-`0X#M6qUejm~(%4vkt zZZ**7q;RBtMA=%%?b9hIar#%r=6&&fJ!ZZsP}opWVnEspB2dFnE*Pt6g6k=woK9dxujWPEqPcJ322`QR(zA zX}T8URxlA0;<}gD2ANm@i>_d*UJh()Mx@x|eNWDj+RKDf#x0E&Q_dS#4)$aI^G>ts z&Z&~&In#;Ip22F;uuAp%@{)Qw@@{|(Tqk<+<=j;7j=-5hemR5_hQ=1~&6p7x;S`S~fjoXgmvrm~tu0dJQx0=*R%=Ct#=F^zsWYtF&8$|9 zH)ldS7g@6xi7P2@-i(qUVs@IhDKhtmoICp<*d89Bg6KS$5nIm3!ZHkbik8Pno=l;VF6Fm@Pr2~+_=1MHXE&R^UbpY|)*jW%I@Ooe!tBOj|QbjVA&j!M% zq`mm&Mp|1@TY6qEDt}9`%w^B;J>LV=G&)N|;^9r=3;Ef;NltxJWC?t(mkcL0_#3?c zVoxk7`j#v}OEbdr?<`nZqDPjJPN;A~m@HfoRC^m%Pz|cg*p13~_za}Jm-8$f=PfM_ z7!Kz)G~Ds;r`oY^{r#N3U@yuB3lF2}`L*b|OVDZYoEPOoo@n}f#Wqoa-#X9R+C8>v z)j3VtU>SVRZ6T*<#1REte%+rm+A=grlN|uxD2%$F^NE&Zg^9VB&dxhDS2QxI=QbIZvT`*kY-mW z4BM=u%BfKxhHWO!ZQVXl@F`Tp3c+Ju7k;(}*?XQm+{=ExTFK=Hol=$7zCOpCnTL;N z!D0telwm{ohCLDFFcqrh;;Mq|lzbOPH;YQYUuOu+L>Y#CNnG6WG$_|BpTX7|6X(9a z6G7_9wqCLbeRj`<$M~pK?%7OHwY=sGFM`R2#R;wH=gdYWCy%m#Pyzuw7ao7abH{$) zktyC8tniMa7Du=O5ALpl=|zmM@Vy=c*$>lm8ib4d;-54_hC6d_xY6%{2Gi|vEZt9v zE>2jrk)wegNgBqL)jSkCVCZOi;XeOlwsw%G8ca5>MsdKmj~Op00tx^>WYjrc4YhJt z$Er1IFhqTsT+PWa)Jj!id5jpf+4PK6yu&Oh?Z`I_rs;-zFwCGyMG*)Vt(a822mnsCZlMOFUVr`D@+Ez+3?OKc>K$D7cKT>9 zz3+%P3%e-i*keI-t-l5&!RwS2^^AGv8xP0OceS6O;-Dx@zA>|~*ArF|4C_mP3z2zAuB5+5Q&t=GgKhMyNin|#Th>_!*2K+-n*L9$DejHihiGS#4?MB zU^4F?w2;-Nb|YsVV8y8oard#@nr2Z)8}PExTxK`&B6UUC8Lw*(+Goe>R=^8cWKn9l zI`>&X2>>=m_fH;JeZ|MFMnm($vAk0-t&J^_&>vKaKI8_?!Av)#?;*P?2+;`5ZH;B+iOm z8jG|vgdi%ZM-UTfrO1*&aSyX>3df2Z{^lp*7^8cu}kTHQ_B<+?UP+SfcKQJY* zx4$Nz>URQE%%75QZIbGh|(3wSb+sWyuc%-JG z_={6^wJr_L52jEX3Xl7SJ(f`kLhp*Q3}pwZsBs3cp8n25lIV29l2G%{ebxTg=cXS% zT#6n2B^$qNJH>P#C4Y0>KCz&A_kr<`_@yB5EcFt5mP|V2uGrU_56*>-HAiCB-tNaf zIB)(LTYT|uTQeqw8z`9!$tTq@54|*6`XiY9)1v##>fGou_%9hrM?Fq0%KP->l+~yR~#D@wVHBWD$pd`Lb?TX;Nr45I0lo0|gQ~sRnXGIfIKd0;(N_md38h4@!4P zO{G~fUj03V+eOPU_*8zgaLF!>B;3GfqE_6e z>95|gZ5)y_Gx_t?%`ngB<#Ckl$~}X1ThBm)BPc%U$%5IS z)`Gd+hfwP}OPp2~P5_a*s7ZF@W3U{v~fXsyz$bllJIv1)4D&RI`^`x{S^eIdG zNom!NhM31bcYA3vf%M9IUri=;F^W`0w6v4Zes0xv^7OOm`*qDd+>=|k_B9EmFA4AJ z++N94=BgIY07f=4oJWxI7Vmx?Khe?1AL2{KrucvkMBZK0o~o2+ryhTP-`@8jN>^%5 zBTuDQ?hL2TaOu1PiN%*T%~ z(5@$A^8!w_U^XS=A27?VxcBpKG#b9&-x!m4x!>*8Mm+p_0=l&Se8T_d%SqYZrR0Mv z3@xqeujdYL!IE*a`&Zh>Qg4xPHlU7qa`{ti3@21I)6MSZa51&-wR2Oy3#;%1gMd8X z1?}4~+T5aDg|v`c`4jKnOa3LBh1@mX`4MAcq|0_yx8jBK$)U|qe))^K4^gAxQH1cQ$+h2d{>9I=fq7k~2fHkN z#@D@-y{c*)j7;%z*Vv@Ff}+Eys{w(GOodyoT?@Io>tad@VOxA9vrs?2Lc%PVB{tTN z;kEg}9pwmpy%py(Bq2r@#5B;Au8hmEIQAY1su^c&FijY{a+SQ16Pj`u=D&Jln@y}=$Rs|Xtcn?LT|hCCUM*a{tML3v z@;DE2mblbk$GR_rosP{8aFKs-pL$6B zVgBh4)2s>7=DYqo(x!B5h5w-Dl%y>CLhAK=@&yD(9(Brx0vEA#BySCvRTg*FMA>|f zA#(9BL2W`5$HT;01JZsoz5S^vH~E0Q5~LmW(EdzWr`tmLw+NYaeM4{k++aDo-Q6^& z@0Nebd9xLF%Ck2s$FkfdK;Vjsyi6P!hs#Rzx{2N^%C1yd zSuL(wf9dATwv>(~n<2ze=ALz9HGD>@DU7XBhy&|$ZKsfsh<1C))GKWDg7#Kctc6gPPub0-OoGrvzrxm*@$XF3Oy=w85O2l+eTMwBNBLhqrDY^g zNdc;=+{rAducSCn)my`!-$^SFee|T)XSC3PesJgQ0!kMXs@E}7)?Em)?(z zAnz4I(Wy$nxD?xX7g8TJm7Jgw(*9Na$N zzI<$PHgjPgyZrRXnr$L;T|AcYkTvu&R@c8X>|ovQnE!U+DL>0u*t+9iGN*M`?-%&k z=?s3ijhL?|WX#xH&m z`_27wx2i4S^oM5kg>h`}4?dE(($lXbmENzU-1@r9TZfXL*DlPq_-n1)JP$Qz#SUrh z8rJ#u0hi=bRDCP_-GzHEA26=PeEp-jthpBZfU|V^W%t;DX7|OtpPDn5w@4#a*UO`e z&421Bu$Z3;J*d+J#XIssS(L zG-e+qXzO*$OQxHzeH6jT6?L{_%66{Mbt~p>$Q7lEW1tR_dER^iI zb59tWB3op1_?L(A9o%>6Wg6v1j458mQ)q+lzryc=0>w+JwvQeOFzFM-W8CBa+)cMB z^@gvNeWz8PiM9WwPIljhF{MS^ZwZ~s!4&t?T3Mf1oDY^!pmI(cbmX{N9Etl>vkeeSy*T} zGQ3x0hb-Un-E!cs@<+$5z}C)d*YjP9Z5u2q**U-R|8h!uB$K|)9zSPXvCv-+Q61f= zy`B^!WM2OK4yYH%lve1$R*)Yy{M78{X&H74boeXe*K&P=(qrQl>zFU>lfdcbc&?m% z;G-M5sVs682n^}D-))IQTGNL}%xGYs7gFMJQ0o^EcMOyi=6o1L(e$hdr=;bL&2Cg~ z>7T@Yd!yi5*S9$_Zsb$A)H{meVE)-e=-*>-YpRR5*GEzA$N4$rAmd7<jwnHwhm zsN&hXC4TM~lX_uaQuhaL(bn(HvQ$hHaaJ1zCwKiv_#@JKmAk23tWNa&+bz&Ih0im!Q0dUqys&TU~9poDA&`6TB%^~dufClUQdz3jNjqNLAQ?jXCq?00D%Ae4h(kX!H)YEDF~>s8u6ige>sxjhM|O0UTp$P}WDZzF03j@At!B31FK>Sd2&EgaD@sl2^ay zS8sNacC`xe4dEn|=Vds8df0&`a}nrw`}yJtjR7W%E`cbmpI=3x7QI zyx&{qTX1Gw4c*!@Zv)=POIMgufb6?X>T*%kAGxD^G@ZeI9M$#`7K4>lG&7{4I*Gbz zD>BTuf?hA(%MNaHr$;s|BiL1-`A*CHK3zfl6>DGsB|5=^^5X|432$4Wry)1jK>>{A z3m57v+{{I@H~^ilzU%c2Dp8(ldij!8vB!+so7+^Xl5^5dZr5~c8kI}6kI1#3KjTG} zY}>8Uwc4QbWMz3%ZFTF9$jzmCL!n7pw=vG%&b zNw&W~F#+go6mXkQOhDJ|nClxcE?DBB?-B2&_ydp0Pk%V=xBi@j)tSe8#lP|oHzs8- z2{N#ci+4BWOu$FX&&@N_IfN4r2?C)s4ns=VvO>?2-n7UuSwi zJHJz2IVEPV2vU~nrj8rAh#?N90>s#;YUl4Hcv$K0D;^uM)q9F7d^#?$S7`wrrk6!j;H=| zs`K4KHg4(|{cJQ~T*ss(Fi@f}2C7U9u%MoIem**_CNJ7AO9c4(0gcuRafe*An z>s+x}2u!NwLf2VNv+65fDaY^BPmgm&y>&4X#9SO{kQJ-I-d>ZKt!1Ji-JE=B2f{Re z$#XurKvhF$nUed5(-7NRw%9pd0hA|qK z4$F6HKlNE)qqk)R5SVY)k?H^_Rh?zASp`lP6Zq)hra?YwOhRBRar)M^r0?228}0w~ zUXw1iEcv|sFPWm|nAyJ7`TK9NWluM8u{h0l|K862B@-dNBEeqsPd94*h?ne|4tDm4QDN2lbzcbrI}YO#ZHCzjQ0SoxjO`05yt$TkhLMg(r`G)W3$6 zNC0Zo z-3RF#Q|Y}re`QSNQmZ6CXz*LF>0aK?^vcjFZmHF#7v9GvmJ{?RG5e^vjtn%Q>%r)^PQ7DN@=nEJ9LpHyyXRM|Ks@7hHl*f5U?^uKNL$A^ zs9im&g8-(0PCfuD@qED*RGWN-wc$6P4TK7<(nJQ8HpGnn^|J`7x~DFqFC8%!0Lv!o z2sduz(_#Z~bT`i53#j@|cjjqf*oQP}SgK@5R#CFPNOs%pIuGk0Bn z7b%|H)Mtx>zqRH}HX7U;zVWKi1wPtCC&1RMWp}6GqqC857q2&haFr-S>Y}owt6Uf6 z&R+*>Xq;Q zAZu-Oz0;?LNqw+*I{c$v1z7n5l$;Ve-ydMJDIOIoYN>}I47Q;4uYjc7+1`aj2Lz>r zBz&}BIHN|}cduRyq)YN?2JzVhH!qt#tvu!q=vsf;Rk%e+kC7aY&abEami$d%A#wX$ z8^h{{Bk~V=PMOisKctj&{!P|m#=c`D{TS%>Hk}=Qq#Z}B)$`BticqbErrcbry0;R7 z$GMHVd~_E~Ka5;wx+TvBah|`u!E2D!SL?+p#krF$H*X?Kc2RM5m=N>IY??L1 zjPNIURraOLAjO_V>P7l*O?=F)qkH3*AOAdEd?|m%u^DT5{%*^y_`>)rYTQGd;7z z+`(C3mgTL@q*EznX)+bJ`%Zl|b4iZxD@bjultFri<48-521XvL(ed39rws{W>m}L6 zk}cWnZ2EXUsoGRGafpMLOWWP2oC!*gd^ zO*ZZ>1--LxwV*DCVbrY!i8rt7ANomsX-N2*qTmL#LOXZ8@x_Zzp03mgP4^cJq}z)4 zxWpW0ddycRR=q@E*l2vM80v0<$Qm9A;b;g|2j2}lLfkWnb#_*uq69*u7O$z3h67<*fp&!b)rX&zpEwtF!+{tD@G&BXSS%l^TSn%~k7c4Gd_A9>II(X8Ey zp@S?-Fq~O_=V-lZv8QQO?>1BQjY{S+tFM!!Wop_s@F+$`?izL{bKoMZSmXD_m|L%e z%Gp2+-(Rxo*!LIrC-@JysbLp<#7b6DSWxU#bGD{d_4beW@9V|~zZ&8+I~~G|KOdWI zKYi+qPJ8W&qMz$Eo?yq#2UAJQdTSvhz7lAu-cg(0w<$UtIUgU#bFFVGaz29%8xbGS za~ZeH-w$oYP;S;WV9e3Z9Zm`h^B;0SZb;r&8)D5<+LLEVj8=J7o4wM0zMsG5z5Bv4o9J#-Fr#mbQ0OY&Mli zxl{KW`Wv<5wPOa#L>6(tqaw`pmGa0@K%ls-!wqoN%y_$O@@?A2fd^?@@7hPZEi0^z zF;F$@`tb-sAM1t#+i0i_Mv>E`LZ77nT!48>dhGt7oNfww>iDQDiIc7Fh1}yNF%>j> z0hT=jVTEOUt{FI6j+HD}?0!=MhuCncfRU8GZI(Nq+T<$>E1Bw@(90mdxhJ}GgwcV) zN?#_&F{fHdBC~H`0A0&RvPdX-?m*iX*zX#L;o&1>z07`*BvnvJ?WhxZ&`p{>L_{d> zpERTcY>Axp1K%qEzS^!~Z+WnWc~7oXfIHx9C~${c&iZ;;&@s5!rdhYh&Ul+TS>M&D z{rxm73a`TXtdJu`An5>UJ_}>3Ip|`Uej~pt@y0So(sbX*ht)|%rUZ4jK!B4MD)^RI z^J%;#zJW|lw&mNl_aezeVD{%|gr_&KUCf$N`JNUHVbz$w1pdv+;e-D!mx>765d*9{ZTYTHyKS3~h$~q3(~;aMQ`CUMHRn#D$uqMxEL9MdfF|qLXomjo^+m)j*!JOFFvU z_VIJ-mHmY1>V-@>+IE|5S93HLYri4fx~rdW6*sWTGYAT%-y;h_hPAe3 zuhi{AhC>$EJ9SvvA_e<+JuyVux5@UuYgg+$X4fUJ_~FS^UR{wVLu_v|7g(lOi`Ya| zTH@r=FiuCBQuBZY&zhiV zpE>hx2oj&XdgRA=p&A=m_j=G4>`UF_bz!&dtoW4Deh&;0>BH&wRx zukgTL{~@s$p`aPAf;Xk156M+JrO@ixuk)h4TDT$M}e;P`u8G&IAspfvsysb@NoiP=r{2=5F)MMa~S)J57Ivj@aCr}i3uy! zw^Du=S?{wu15br=z7UK!$6mQSx$~XjI~)Q^?9)aYTs0{hY9ubF^_ed=4w1XI2(izE zmEDpufng*X1(rCu37Zv&13z5t;_***foemWS3wWdm4og#*`X9#Ck^j5M;WKkfRggr z-r4uZITq%NHdj^79wj&r5WlVfNu&Z*4%s9;Q@3v@7|(J!K;blqKspedx16Nix)#p842>q$hf@(KV7pNQzuM zO$6PF3Cz=Ezx1E5jMY9?KJ9UPOD>#G{Ud=U6iPWY!f8~Zm$f8#ZDC3yn;rVX2`pJs z@wJ22DtmkEsP68w?OPM@pMrtT)r;fW25^_nl-dq^vt;S^%0m1>p5TSx8wrrzpe^(ws z)kGA*X%P@X5JZ7@1e>D8>5_G$mgkc@jf5^{*q!K$u%XMVY8ue-kAFIp81IE?N zOb=n6!Uek|@sy2;o^)-AXCuy@xBA*1t(D{@os_V<4oa#gQH*G=f*VeUsk;T#>0`do ze;g{C5`Ce{bn8o($!34ttW9I9ed9*$U{YLlA5*X{HG56;K|&N+zL%JCndb^caNQ3D zjR4!1b~mk)&$`CVRnWh@qeG+@sZ-y=*_!rk3Zqyz(v~3p%Sn{iph@-vb1f_+^`{EN^`GjLWYvh=H2?W2wl`xZFfz@rV0#AlmY| z6^66%d@fnlZz=gKJJ=n7>`YfiLUE*(1wk20{Ff{>kulod> z#+L-urAtuR3a%KBFs%KhcS~Up-U$iIn2afSmfu+tyfteUWmV`b3_z8L8I>#hQl&tZ zDg*&56O6F7vS@cv2 zl`17}ReEuAa*Ki5SD~iT{TqT6-gOf?v`f>D)kn+%3sQ7Wq_!@xqEf4MsbWP*UK~sX zW{TXnp#unrnppDfHUeboYx5h+hPuQ>ETvYsh-lMDZ40RT18@O#c=L%(vBidA#T)9f z=AVhVz)uFL_msK?VXFy$c!kzvjdJ_P?Uh^Bu3-!5HfHaR2r~>g06eMU80ZtK$e+2C z6D4_<&`MjU%q2SsiRld1Xxj+yE1#KB=)GF>^4s?z9WmgGgudI3pb=c;<}eb(Tf|B( z3DHp{OQ500M;Z5)faqu!MMkHBdN3S)WvcNY?y|#}k<$=sA>huXo-7r5He}3b!1Ty= zv5w8k0|M^TNbG}xwWh}6wB!b<{gX~M8&@4>eL{(__pLsnKbZJcB2-o z8#>J6uE9i0&E89d5acNxmzw-XD~o6Y7t*`Tt8^n~;(7xKI1Gj*c9n@tuF!;)D&R_$ zD)J+#BUqir{?Y2(NRiB_cY?JNR7jGgdMnYju;`jm6nZTUdQ=OQKCea$6iO}zVV0sw zl`6ezS00senyFDGr~d#^{{SMp8-cZ%TWMIl_m3p6S}f%4h#7LMGc(XMB@(Hn2I)EB zAsN1}FW<~2OucmBUzjn;(!-XHPXuCwEmm`S^Br*dSOyE7Wk$hnx2cF0fDQ}3usI>2 z*2}o{zy(3kM66+D0K0AZjr1EE((Z@zA6&&zusNxWZtc3><>_v;RXyq=b({gWdp})MlcT)@?nZ!&r{B zi}ThRuv{h^XYwEs0+!%;#IFUak2Um20194cruq1oAQgcCa%IdfpSWOa-1@?jq=pvJ zlz!1RQ3|JX5MC%%H$iaP16560E-{3S0GLn$CDrU}y+pxH(`oV`c!Hg+{6RonLj_&c zeDMHfc2!TE`#==~l&{MZHLz&py?!7tf+)H)(s_#<#g0wmt{@wUK`M)@ypEhkbRevR z#y4XyZvOy@W!lrMH!3ZiV7L?}$ZApVDMT8)l_&_R=_}AImCQ>f@p+6_Nl-puO&~DB z;!24a!8cOJ8G|&z<34|z~= zbp_@U8M%IrBi4UXGERLK$m=n2SC%1mb%92p88c{SQAzQ!qvx3ARW_w* zb6o&S;NQ!ntwKpQ&huD_YP`2BcZxfOYa3{b|us;LiD3()n=)wj!Vci59(AhO@zDlOx zpp>Mg&Id@GL1Hw+P9ue!c)3Ba*}+vye&lwnrmChwxw(Q1W!(11NQEINasvJ!oB9h4 zhdv90Vb?1Ie=_1&!reXfEm1^0kIbwJvvaWfO%jNzjb3wDls>d@Ro1I9E_T3Mu%qT* z^fJ0YSf>*Z$=xpKFPn$ZKoHX3>4B2Sa7=i|0kY4eqzQ{%l+{ciR!!@ehN@#KRwL_Q z!+s||iQc{hlrgoBctW>=2f&t<$~exsiaSbS(om|-xkGEy57I6IKr|L;2K>&FL^7H$ zUh%{VjWlY&`Oj#YX6UqQzJBp_MS|VyWp|X6lr-hm^lDZj9bjRL_leP$7exXs!2z=O zywrXQ1#~QLuMf-veL{*A>~}EGs5GwbFPN2@2JYyu!~k`4B@nQ`SV22AD_1+(okVwR zs0?#~OIN&UvQ%Oy(}(~ydrQ^3{rz7tJIg8lQ2zj)gs6A)PSk%i4|mo+fWnfmaDqJ#=a|g-J?X^V+48ujQ9i=<5(!pb%=|G%|`R=|ry;P{TGr z0m*SoARr|-LA~cyDgt!rOUoLz*Ew{mxwcpnK{4@hd)<;#MZk|9WF7+4sOFUeOt8c& z3%*N|UZIF&TOp*RL_j7uHva&6OjM~*B~B$w^`0eMtC>IRG3HznhlLVWE_IbF5~@_B z@6V%6V!@q6M+y-Xbn!P4fa&XTR5lU9Y+_?9m6N2@Q@b~9Rr~~BMAt-Eim{gg2$Tb| zx*eibi_xsNgO6!NHA0LHTO1lt8xi4w64?!kuV-mcRaUtTr-%grb%FVcVY&@-dptl` zjWVnhc2u!VWtP4##9cd=Tido@nR$i{sVTXflBQ$=sp3{Ke$y2-YlZbS#UGNIDk&l?5~}1A*V9I~DBc z!u>vF)Ihphqs?njZl!NZu-;>rTJ^>lQP$!`U119wte8_C@blU89z0 zX8p3a*X=Q#Ds3(gBa&OLf(9Km`I!U)Kn=H6Dc3P4fRz>-3+Y;m5c>TN?RHm4#Eq>K zP}1{D6krPJEv)HGy$~v(x0ghBJdxRAyjQj%vT7)71EFSmL@I$e8q>#lSeR<1FB!=! zOOP!V4>Is%fki5ktUJs_+ySET?=OfEm#O0(^$Xx~)k<-!JaY~mheEBOak-RLC)WDR z%PQK?VK12Es@u#A)T()DDltV*yt%};c~7Lxx*&r!s&gF#$lI!U>l&4+rK*Dc zDh@z&p7-y$Q2_(MANw{RQ*u>^%sTsp7PaRZmk@*(Y^&e2yb&Ch^xokHE9f^>-(;_r zmf;~sZTvtO0;`PQ#Lfi1A{ff!e@U3Iic+KH+~|gDn{TeG=2pNR0c!l>pp{aS6zE%}P@Uh>#3woVl%d6NQWk;HM_-w0;WZZ!ZWl4dKi{UaYsNPhaKK7@P5 zy$!|lB8mjpCmD@VRj@@LrxC}6xoH~@&U!($DPlGxF54`mTHP0G8jXDdI`_xCT+7m> z*D+9pj_B#vt{{5Mjh?J=3Q5gGv2qVP)Ugm)Wb05~2QBh>j^o|j4IMm2=n$poqPd4V zHL0D2*TcDKb;Mley3Z67A+dP7T7NC47OA@3d8Z*y0(`pWRQ8M{|3 zGYn!Iftg;F(jI{VaV#B!>UwrO%X0!TI(j~=WlD*-kt_J|=}{vbz-m?^R})92K+LYv zu2mYG%}bA^VpOP-qx?54E~KUySKzP(6$}yiOoojvtxA?n*hRavtQ%tDs;Itq%3LN7CA|a9a~O0~d&<7pO}$K*GDG zpacLxR>k8y`GGV#z;DnZRIfm|XVF)1KE9pEwseIiwNWBwR%bqmDpX6AQI(%cl`2=O z8$;DSY8r)~!l6T{0X9NjZFhzQ!v8}t&*DEv}ta;f@TCXf`=#H6E`SS z8XKr$4i`l(?o#Haz`k5c8>EcvLcP^;hSWh&z1}=UEy6Zin#875RXMdjs}{~ z%oH0zYwm`u#1`^?KeZi=G+m>-)VvhcU1`=Jwm@R>gT7)&Z~?1K;odfw=4(!Cn}QyGyS00qa@y+Bl{nRp^3@>CpD z-r*`I5hLUIIF7GqdUVlZ?|8Kkw&6;RxoaAzf=~kaVz{YnSyZ>KkW|o=qJ`x1j`2aP z3wtjo3>A=A48CH_uRd>JudE1(u$)8?Zn@J@(*nf`edT2#BVn zF1H`L7P5odUQi|GV863+hKI0zfTr6ObW7 zp^QPnSIo(PEV8Zx!Khx6z3<8C)d8z5RLxBxDpktNtV)$ArYC5UuHy+RRH;(Eaax>Q zsa}kI0}`Q+PG(xq`VgV8f97b^7?-epTdN2cN^QvC<~mR)5t2b07!>)J6n%&l!o zi2=gJ(Mf+;?#?P;IL)uv=`ZMGL1Njg-&oQFAWA~@-X4KNWVMU-#0=y#&be7&<5b&> z!^Z*>Cl>E|h>uGvbC$kl6_g;iH;_N(}U>L%;Jwd>A5Q7j&k7Igsvu^rE1KD>oaz0u#H6$ToBN%WB!Y!BP@ z0}ke%j9e&K3K{r`>p+ONrlSo7UZQf96h)vj%LT2JwWjvh(iXu2-Xy9`*Aa?=f&q=4 zJH-tJ;7oaxo2?2|FxZW5`HfYEhgP<=*Bgwjy{U-qr;@S?7cny&fqJm!S2R>AQFm1} zhhQk~>|zyy*ITNpc&~Yw&2V9Yyf-fm)19zD>ud_8--7ZW2|;g=kr zFn9n{lA5Vh$6?y9A1BN~3qTI+I6$J_bz8ViVlJ@9S#=dUF&+ZwCHCNcX1RtMn<`$d zO!299T>!Q!unZ%zK3wFekXkQS12wm_tXTs&B_1M(b@k7uS$Hx0Dpb1SP%QHF_>NEz z!ZN3Rkt@`nRD(}gVuY$Nm9ySiSy*DwVebo3a!{bWdC3no?l+Jv%b{YqxU288{EbQD zgOwbvmLD+l#GENbIJ2)Y3n^*7&uDrpVMT#U;-&0n71dQk zArQ50hOu4Z%WpE%S-Sa^8KnjAR(ieQAS!UU4Q==H48w5+hc$XzkJn(K_`N_}2f%dK zVrUBr#9u-b7oe9F_N#b}D)(F!8-}Aa$>LiB%Hz-lZxehkXa}eWSLmV@L&S0D>US_c zlfI$#ocg;yj>Pd~`^;&}q?aKBOISS#xo~be@`~t`i2w~37OZ%Lo4AXPsv?*Ub+-ebm_V51*t)(C*$ z!GBn1=u108Xlo=;%{V~SH&+wJ+9xEX7sO&0A-!mQ%lMaCgjv7gO~PNqH3^4_P{bMk z0JZuRiZZCpaYSL##c*(~=w-zt9c`?%Dx$*jD(V)|QKt&y*>FH4z}sl39wUK3 zXVha=X;>R9i&1U>Q{_>XldxNoxR&|RfE8Fzw6lWZ)Dtef>RGDB*4wwa95mn-9Uk$$ z3DH-AqE-I@5dKVMB|>5KnP&vzaT8PQj37J9%B&$?$e9!k+F|Cr*)w>~9ucSUE3>z( zSk}_{77mOCB>{#oru8zfY*|+fvnO)FlWh^=j#m=KRxYW`G+fvPwFCpi&UXjVRV*yU zn_SDP>EbwtoHa+hYz)mkNQiFN_KK{JUX5uk=L^|;&Fy|AWdi!*P;Lf%zlLb(8L;mQ ztNe)LQkO-si#0ZY%NJWN48e^J2-v>Y1Dq5?gWN|xWmgn9(|Fs9?HPF~0(RIwB47ZQ z1yY_86c;H~TdN4Na54#?dR1<5;@((Y8n{XYAsh%=XAp}pq8M3C=jku;vkO)oW@z(B zvZ}h0uzM09Rvs^s2+VUO4W=PhjA}-$eg>wPs0dRwT^;*GQZrLP;fTc0YRUFH)IW*n zL--8;0Mh+EqXc!VJ}UjCR7qZpsZ$7&u_{#JSEWjUDc#Ctc9qO!N?EpHyRS#kP`2V` zYW+!~K9%dZ&XM`I;#aSG^+wfo(tV&Fkz08`+WrBT3c^tsybvd~+MAJUlHY)><$C;{}NJs3%B5iYlLc!|E-za%p=w_Ka(I zU?$#>4T^@Zo;cx^#$>rtZv&J7zwu4cJd(6@=30jTR+ zK`FBlYnZjX$N5-yuLXz&US-ziTGx@p!elE#B|gyT9$*?Da7?1Tm*zj&0!h`N8yxZL zb3>^GGwLNQ7A}uDgT#SgVwqn<#1SzmOHft_dW^)$E}LTaGpvh~9y2L`DYDa}6-t7Y zaN=0iKw5zFDuMtQFdIG|Vk$3Sr5AQ{s6I4UGTl=OWtMTY>ds8cfJ`x2Rf=^%EMKYPKu)5uS`o-46{J* z-UYv|v32p#)jiC1#(`)Y#6mbQoH!7TQ1#4xSTE+QBS83ts_d)dj3fD#)#YfG`Zprgn zVl{v^;T^B8Wn}OoTz((9V}Ft+!7fj9vjg~X9fy|{G(3?U;&(9~0rL*D7P3J)!5u+2 za_PeaIfIx=7()|M;R$?t*0*1hUj}5Lz`MnkWyj!)>vH{D^d)BFnD6-1!5=a7sa}=q zQ8SFo$rdvG1H8F%{SNVB`T#=gsa3NtOUj*sZ^mJKP?s?l_!HftG^aHaen)Z05H0X(Wg~9h{kySxKw}n-=iUTT@{twZ zPG!B2v=porQoU7*fSFD*z^dZ{5pEIzbc+DV);E+bTZ60(wVr2GcbJyqC9UEiurnq^ zW!mA{%YQQw;l#Nw2hv`6X?;I|F59%oW*yh}B2YsYnQRWUYewB7=EL%f3$fEK{b_1_ zs6bp;e8Og{LCnkOSat2@SU`x3?ULd&l?pm^J>q$ARACEB%k^Q_1fBrF=Ngr^0_| znK$_%oB-Lb~Mp5kjrYjl^iZ@W> zwp%wxFN_}2@k+Q@s$+WI-Vu7B~h6W!?rT9(YN9|wSdN| zNA~SF?=I6G{vY;#O8v#3n||`8WL4%lj={h`GnG=yi$y z=A+&zzk)Bf_C-&?if&7P=`YoMFWg_B$~_SahD0}L_dik9_NPnWk3;^v&WV4n@!|Id zZTyq{C-ok>&sfytho$&I8+?=d1grJOljcT@{ON!2OiZW)Ei&V9H{Jrb5!P2%05@|k zWje+0FRZh)_m>tsmcV7)B|uk0BuH7u^uY~+qQ!^@j6*DyMcyHmH0xgG6vA*0AR|UKHs6?OyGFnp3WYV^SUa7cW}&nZ!$A7Q@)dZ!=d%D$eq^8wQK)7) zmg~d?zGh2R7n9P3J3@pjT9ogACX~jb${ru$SkvTB#HHkRP2vC>P;QGfSMZ;>bso{6 zaN7`T42cg$&bLrqwNcoEw~yWxzo2T!s3BM_x2@`Cn*rb__T3n*qSuR?zd*b}V({`s zgU8r}2|T?x&p3Y=ULt@O?bL20Cdx-=fCl} zewQv>yM)iCd7krp#=1*3p3^nu@R`37Dfc4}{3Fr)vFyFkkpA{IY4FZ~d`$QBNRA)G zTl;=zKt9tQErE9de4#)zLujrh*uYo3WPwV@EbS_<^(opwC>9swxpTkW0I1YG73Rc~2A zE~ii*62g{i^_2=#aGPb8q_Fd4Rl5BucM@wl@M2s^5tf7 zvj--pJCK{J+=84t(+2T-HDA<9uj4RARhcS5V4=gm+!te>PuVmc%0u!&RI%1kPj^B4 zlBhS0EI^n~CI}VI&*B&D1hGN|+5TVrG)(lGb!7a5 z9hIxYJBksnllpPmT%2VZbBSsZO9HI~?`FHpMg5p^>60(S5jKG7GU*ZF#B*^&d^2O2 zWWlMt1Q$vL2Ef5;>K-Sm3K=#_D#4~ZFRY-bJz!$UCle?vM_S9gO0yF4bEPhGWM&p- z^{9PCE9(Q&*^D@S7t$JFDhgu;{{1v!9w|gIQbxdyU>H>3YCG{0Lov9 z#V=`3AD9Ot<_f9!v5Y6=j9sU+z-4|Qj((UatshAHD>^Mo6qlqW$@Rv#rX5#$XAuJ_ zc)>b4cuH2E5kK>kMT#cX71>~TvR&?2FWX4dAh>Vzo*rSJG^?y3Pyicd^_;e8|Q{mOP9Z`KTG zPAvqiAJe4nhgJHTVe-_Zti7>nOV~_+z6={u3!wYUxt+;Qvb|+`!@69#c$etEMa!2i zT)A@nE;$C^0C0L#?Gxx!D)t~tC#8{V0p~XzGldpgB5{@(HQ+Cj`P^^3R$b#y#-S|4 zMk9)?3xT!iI`^zvsNHW9Lr zRluO7;_hjSkQL>9N~kz#Qc;oiVDesot*kyCAU-1%=v5eZ%-!Fis4}b+i+bD{UQCkl6h*g6m%{rYTXSkJCiX+nuMARux3&%}A(hnzSOLCSOH7Wp# zl%uDGMvnl!LQBW@v)Qb1N01i{PF;7{$f(MV5JC1X~n$GFZN1pSpKY9%p(l%)G0_>Qu5f5?~p3eqaM5 zUeJWz(_=6@e{zVMGll)Zk!$ZRBThV&ZS;t;n!%6iV?41U2~-d7GRF>e7xxU%*@b^- zFqY|eDmCgG`c0DOSp7-^{f^UaomG$^m#JU&R2QzR{mM&0TNf}Ox8?eP9IlTaNH!U@ z{{X}*6uuc|llDJwbjW{v!$My8Ggcn%8btEHP+ku$K$c0OUu^K)9+;F=qoaP0{hhdD zyo9^BqsHK*!u!oBuP{b96F_MPNoEe)NQy*2QH88^VXc713pQS|k?zs~4jdmyyxF@1587o5wN|vuF~G#R<$X-;iFNw zG(cTNA9-MmSu{2!d7gLij%@aRvV)n>DhYI`oVJR!W#$W1x8@5zYB5)4Gj`9~7a$&C zPcYZ&CkLabdK;M2#HdAoD)l^higPd3m;4V#G4*{Zl`2tEizAU)AfUs3Ok@>6YSQ0O zuH$KL7?e@g1*P*a{%QLvHJMZkN;)p?i!(Q8pe5Q<97<}_v~_6dP#3IMkl%RU6{(io zV#HI#ZMqDkg4=Zk$Wuj1=GU7g_j7SkwO=_(t0l zu?D(6au|hh8toJaPHq$~!-oiE50emjC72eJRzZN#b;e-Ec6v+nRv^l%2}*!x2Dyz0 z>j12)-9Zq?Xkdq7OL9>xnId6&ONa00zZ})e??9&Y@2tOB+OlNA%Q(e*OI_oM0{QTs zHP&39VQWfO_qj+Io4fX0TAv$0m+)dN?)8l{ooh1<)e5NLUh?kX9)>a|uO)xTsKO4t z?ZzzQG1xe{Y0X`3jr(RjsxGj>O!v7~g#c#DV9El40>&@HRsF1w<&j{RJ>$Wcy5@>8 z1x=f&cD(nvO4Dd4>Gq8*W-1glDaJJdge_2)F2)up#8sZ~e~dperhU|%UE;rpYzCT& zQ_`csE z3t|^S(U>C5s*wy4zGq@~2~R^blQE}cyR_2`8IfdnsAaE8kE+Y9GmwmAyl@e3Ygs5+V&KGb2tVB9K@ePmj8uYhgP<>ML z87@ASTtT)HA#v>#6ONHr6$4xKNGxdOqE)UhY z)u=y+EIKmbTl8@VvS1u95CrAT3A2U4RDL4VWl&jVH|?IffTI^Mh8x5wpmnhoupZgm z=3I$!Nqh`Mz^tbcg>h9GqeNh>m0e{%iL$pHokAl8=5nBTvl4>@ia04(vl7ZWDxt4z zWbque%|(G+LGna3D`m{DD8TGYOT;K*HK$mR!w@F53Gpt?b(FCi1HAge6t>uSUf{Na ztDxw;q8z21rhP6d3<|k&=HvYP61^vCSER2=PLh!$>D~09l@g|>2uow=E(S5R_2~!e zNVCI7)L{yZ<69bt#%KiYID`=%=e2MpY`mnP6nPCJ~_0 zJVf2cYK0@P&3bAG5!1ina^(zFiD)Je003wwA~}xh<1)uFBnwO)SwVP$@52t23#peU zY^pqQlYQY%WeQL%&&1QogKR7gtEhq97*khGwriV}?E@Srra4E<56CU|ce`qLqV)+8`E&@ih{FwTM{i zfL@+rAvJ7XH;~k*CoPXb#3P4K-aReB8x{m@EKO&u5w{2e;{zPqE<%*J4&Z2*bQ zsIEZKWJ(NM1k#jrsDzFsy{A?gr?!Ny0&+6YEt?uIk;jpzV*vAX6wIwW2fwe$-Tq#?gbB*{7ae`E`pegth0riNg@6E2!LzSukws!x0C9@XH7)Yz9tXkv zLUxGGabk;7;_PiObzv+Td$6yq`e3;jLreY-%-BWM-zH}o+^{=RE?8T5whNQt!>v8> zGLg*(;%sl4{pD}7j4RTjTziuHOzJ$CmQS)4Eub(!Zi^ozSMX|+$sQpF*qCL@JHYIT zPF-Oybk*)o1iDbq`$sFcd1L~jn5x(<4sV!iDP#)JBiR%d(R&c98N$z)_+x*@<@z3% z{{WIFYt$*yDA_GGN;GMduH&d&!-Vq#u?2rFKZ9W1b%Bw?7NguMC_>y(Dj*|7qmG2N zWgI&0%q7e%(nu^u8c|^Z*w>675Pc4g7FASqfFR*bM1^f+tw7!niEMqf2){)eqVf$3 z^nqOntXor>$1tiOip9-eo_uO9-d4d5Jzg6oY6A@o>_CB<+x_4~Re25?X%f zj{Yc#u_eod4^U@DIq(cP7s!VtJ|`pi(8nLgnEm|3V8g9f5w%8$4WVc9Fa?tJSzBU? zz2ni|AUS4Q&j=ALaE@dv@;uN0T}_m_aavbnfk(NzW4fA3iAE|I0J`Cv$qP^`Pm z5|idI4jmz>-YX@6=&MrUQyA!Ny)hEtys_y`1z^U_x8!*1YWfO6&3tp2gGJlT?-OL# zn9@*}(qST#+T~DqB3u<^ywHRebXFXnc;=}#()B5bTcn|OzcCV(6TAs!9oa*cHZI8a z+yd020OvB1ZV8t(5wKw`#XTih&xn`mi0ynzdNQgK0(QIYQuNTk@i3;^{n>Km$_=V2 zSu#B)ozQieUv>$)S!Wi3@rh*cRks-f>%GN{wa~>?SHTI@sDKm|^!)P^H98s&g;st40=Zg1<7Gg}58a^K~q6!)~1Klc~VIdM_7A-b$c$qwrxKhwN+wU6< z$Wq#MrbY-=2F@FqZbU*jtQ+&%2<2Q+OFNV=!4D>&$I!lDcOObhhbdK^l8z)TkECp) z$EcGiE>0-Va;+0+0H_L3S8Jr+;j`h^1=?>TpC|jMQI@+2b_+&EKj}*Nz8OOt240+= zgo$wwij@MT5~IV8lpz6l_L+J-eycFHG!Lf260I<1H$A}92r4@yVw~{cSTltu_)Gs4ZLXN7) zj!~td{J`Aejw`T`DD5IWkZeT3$*_Lou!^t4FLNy^@0`pkxaSRzeweR`AjxEl>H?ofX7(I zG|YjTm>cZ4cl3&hr*LBb08XAGV17raBe(@jDeDnE%t=+Qpa|1%g6|^_#sKIngk^S-L>&<9)gVMN4%sj#A;w*8k zG6ub?Fhv3bv^+uz%6~*lM;`@x5;Md#-_zO|^a)sksJJ!1Lyq$`h#owC(4a(bk~iXF zi@1O(A*dUN3L{UUb?CAX+z^a`?Ctc5SDkL@P@)>zxgZYbGgt;G)y3Ib4f6ga;!&`P z^@(!!3yOg+bW1~rnOF!=w;L&x%SdU``veBE>di8VT{4>`eTwxfyDtYsEuD0Vl@lTO zd4QxaVw->&_>^VAdWc(9zVd^LqaGrI5U3@<*tX&r>2=;*W%f_`6Qh?*=gcBub-;dO z;`_>v!z*13ZsC@W=D*}}L0lUA#9jii^DNp|NbLa5aJQ)(nmwjfO9)dA^(jqcxrTEL zfm@{^eWpWkwW9{>+8G%ch!L{x@`pY3310~1m3_=Vb1z}!bcyw*O z6QU>RYVwI8^iOuZ~?);;y8{8Rc|Sr5W=6*0G`bJ%56*-MwF6) z3Ox`dwx1;WQD+8&#_#b1ItQ|7L(f>GDI)LCI6;NQqg2#I$UO3DD8Xtu>gEWn0%wLb zb%^wuu#g?={>!(TxSgc+Wn>=OM(m%x#A&=){{UsQ_5_u#^jTBw4as0r&E48!i{qs* zVXV2RCD9GLB3LZje0;#$^hy^4jK>I{X?t$^&#S2^GFcNMz7s4CIL$+`Wp|1L13u<| zaRjZfe9ZV$A8~;{Let@i&|PvtgANboTSL;^xX?IAh(xZ}1gfprOh{wQRfb_SzL8rM zVp&)ld_yW|1?e$^gweU3W+O$#0W(kl00sc!5X9(?K0|^k_bXSp?eq*xLk$)J?jB+; z;_hB0%T_m9g|ORd@dIIeKvFxP_kuYHkLpWHx8RwDS}vJi@?$)mA@-L1u(GCV#WauF zS{D4y33tq`ruhW2lzLdcJ>yCe4b`yyWjI4GeEy+(u?ror9UYa?j>|-Od_dLlNhOdSp)gYxDqTlBun zV&)Hda^=J};1qdkQ^GP?aO`{#7jVlAf!P!YDCk)z_f)OEI!i3#yrUY{4?I31Q&9_K zMU&8kAQdCgGfO(?<{knpbw>mkS$59K`@&??a2;pnrTtT?oX8qw>-nV4K!`dxcOFBoqx>ZHV zWr)?D(e9(PvMrM%(Sa6%+knr+39);VwfBbaxK6zA&V;WsIc~K~0`5wFVh@Zg`axuM zO6ohr7o18BRrO-}dN{_Z6)BBefv%D%qPKcZAOTP4lZ#~Tn>ohA30#iv-W>@^y$ z&hQN@;FQ1+D%FMa))IzkO$G21j^4ZM8#V8qL z+Z`i#Qq!k{GNNb6hXa|fR`u*k;HpMD=kqQN@tDRC&)9&P*u@CRK64OYlJN=gWL^xw zgl%cvsG_tyHyGQ|Fb>9BLg;iDQ`wy8U}&#+poK2Y#W(}4%^ETgrn6OWy0=KVx~tI_ zsK(`5!`d#mU@Mtv+_mm3<~HkbdrNM}RKJo|Mj!BoiwhA|m`oi!${dKpgP{&^itd-Z zEaTz~O&%Fw9D8M5S=d3M>L3+hgiXr_S#VPJ^pGIO@TpR8|La; z$^zw7{XVd|!*NOg+^Jds_2LE4W=TXb<0tX3B5Q6?-9Ox=YmPnfkDd(R2j zm47q1P1UC>l8W$}#v9q2gr&{Ri(k)AQmw9YfDz!XfWs=E#B3wAcNy{pY7>MG| z+(Hd%5VvyN67SVHlz9YJkfAdEr6Q%wz96#W5~D#4a0mv3hhBGN!hqem^9`6Kx8kBCc1)xIsy z(&Lc>f^HRtoT`>x$u_e-(8+2xFl~e|!MFM#fwaVP)hxz*d32l`<*m?*>`cUIv`?U|ZO4pYPU#t^qqOK9e^Ydc zV@Py_YtRBG44@mf@_!#QYpDq^hVpb{?ofq~4H=dLx=U*96;HfsL1G+R1?`b?q6)ct z%9~0t!rU4`%%x4O zb@=9W>V$bwx|Ye#j&1AGp{R7%_;iXW%?c#ck2oyk^&B#n6zo5PZx}j!Vb3VezbqU0U>&c{}R? zMR6);TuND2grOV^uzO5QR6e}E(0jR-a2URZ2zBg4k7%<z2N(xB@B!BaKw z77OC##-y||XBDte<`XvzVWAW%93OP8)j~(gxqT#FqkAr@zOX%s8keKZ)?GO04FRBz z0McR^>!RqE_)tkjV&lYoL2hMtIiECn1a)HB8i)NDFewo#Wcfq!{KUeh4XkXvawpKw z(ooHIf25^dKe*h^A)Keu8vEtlxH+_$7$LSn%m5RpWyc{JX?KPf|p49KZp=-lyu@4S1_!2KSXr3 zUG*AjyonPm4w@yxAqByc6PR(B(N?H@%(!bESk%*Q%|?sto0|_ew9RWo01qKMUJM%% zM>TN+D^GH~Ft&o+r{H2m)WWwHF$=2?+%PVq+4znYLyIAta1yIxS5f^-i%b5T!`fA> zu&_XD7N0SY)UIOXvB5HIc9(mX$4IENZ!t9V2R>uU@1tWc)@(KhcV5v!wIN9>GYT>d zw!CH-;vC0jhORFdCrCFx12j?X{-E03*^WUISQ4M!X7-mme2lYq&yx>YEe<)1sKW(B z=IX#XQdA^JQCOl@2&rm-AQ_k_por&ns1O($k2y?qfw1Zp9zEh=2fXDUVpHU{re`hc z<{Rsk5mqq^0&IqfPbw=^Ih7BHj;rg@)Asq7H*|It1bibAyaVqJ1~%yyZ_+O&XF)xn z_JsvGV^>Poq)b(D&^RV!160wk!|^WG!Vzo8a=S_t04O5HC#HCP1JT?@tWW^{dHB#P^GU1UnNBh#)|@QS6LW+Yhur02O6bLeB)RYMN+Y zeHa7=;oewI0r!@48}~mk?~UHzHAkCe96hC23|~%Var6wY1Ljy19a*ukd5b1chc%dy zX7`({18P@@)0owqd6k{eP({-U!LV9z^D2Nx9pWr$$%&L#fg8isnT*Kp%Ty`iF48gV zy_FuCI>iuVYmQ|mJ`fdODCM7GWI^)WLWFgU!V{_;Aw^6BbqK54T%Tz5AXoCVz@`Uj z%IZL7B~_ERQ5-#xpq%a&+`KsfpVKgIGx9*?eORQG_6_ zUF0<^qIF9@FB` zGRLH9JKWCh2!g#boqm$U>P%m#5-RRnx_m}q_##dS1QQT9#G%Bgm@Y_ndK89-!F>r$ z6pkTIVY=XB-VG-*@KwoE-Q1!emF$v=%2n*&;u41l%&9!Z9K##KiiU-!B16H>7{V!V zSBU5uEwNT36QD4_usP~XR_snL5rB?03goU!;tlHF7|kl1?n;@X!lEss;yKP!J0n>bX+&C80!H-VtBjIf{(P4&kpkA~?OTq+&62?5SZ zh!z7v#|E$_Kn9e?j4D`NWgfQ_GQ?n!$eEixBNXD|{bzR%GukOvFu09y{bFJTOU}=U zP)aCX)`^uo2GyJqMe}k_bqWXG2yJ6#&eFlXiS~l^mN_N8CF7ZtPGQ_aohE!sGlmZ( z#;)cU5gsBQVDTy1c|h+p>SGY|>4sE7XN*f~;AYi7v>v5g!)V+MuQPQf2AH|0wYGdQ z0kVV2D}Pvqbce|<6@*h3drI7_#^)1>dL&_wvFqA#j>VBKF>7VwD&cHa&+py=1*;I;7- zF5CLlMx|ip3)rLD0q-wW1+OyWP}cJGgU5KC(#%9u#ay9_cn%MUX9ZRth}(jIw@awE zFfbY&AyUq>>od|F$&QkaxE5IZ#iQ1h#$g*SwMpJ%<70@>7OH!|22E|Freym>OEQy8 z1wc9Sk1(xuORxf|pv`=dp;q${XuFhxp{s5XcEx0Rp7Jh3u8pBJWEqm7mE5sIg|}l zpiDgAM1ZDlyVlrye#M2aeasNUZxLQHyLn@rLz8l_h`a40>5>4s!`(PsBHb2VLnLlN6C9Z8~tonU5a4B*0?7 z9E>BJ@bx%maGgr-Y?i&4;t4lyPZ3(WaA|9axxBpl`d@!c!ucj^q$3UFsHwZn!MbMn zmPM6N0#Hsgfeh)j=@!_&Utj zMrBt+FXHc6EB8Kx#hm#ENm&5oWzyKS?GS2}P4`3n!JQ1Up*qOv^fLsyPq8)3FC!K0 zHUr;L#lU8ux&}FA`Ir5r70VG1Lirs&@L#!++K7oP+Q1v>kEp2Fn}0`nO=4lunU>z8 zyQzJpoon8ubXj=Xd6&rjBFR@DS!>J{s6EgDzpOLN2B1BnV6cyj!mm&Z<=BF8d8;{YX~X^V(Xz}A78OBX)UdF%>*_<0fN>7S7v2zPsfjeOC`UkcAf3fP zuJNncdJ;j!^7BeN$nR}%+oVx11(xcp!Xby{fMG$R{tM4FKLBh0c$wa$}v&pU;*w<6-5X|gh+cTGKcDZA=z|& zmI9=F6Jzp6iEmb8G==@BEh6tPbI08B&WL3mIikPikXNL)`oZjc&UGy5^oj;& z1|P1(7Sz9PAC1L2uzxS0~euz84NE5sL>(5u8Te^A6_jGRh}ZNt(AdrYw$fIPER z655plFI6{Hx;ohb;mj^Nc(?TFx1T4C|bB8B=eHn+}dU_b{fE~Q{vs@0g7 zdtgOgA+?;01_pVE8o=)oJxmsE9xl>u0aX^b??Iq)MB}GOS#2TKb3m*YN*yvb9>$CrXm=R4D|LYZ@>uGQ z+7X5kOi)qYl6|Kg3{`c ze{{8h&BJtSxXu=pVo(v(OBr?MSJL)_yTQ65_6hm{IZXk@EUeZFz^@SLjY?m{uT0cd zT^LEo<~H^;N{Pg~iQTDvoK$gM5`2s_>4RLe#TNQSG|;<>0If$uq((eo@Iggam$5Tv zAAHYJ<9ftbnQcYQQ}HXHCfKP}rH%DreQsYtENfBgQukj;cSt+Kf$?)pC=r_3Gujt< zfvz0Jsx(0&Q2yp;s}gM}1AFWL01&0KEHz`&CxkMDY`k~5c=^oL%4Aq4QQGbs0cpKD z%DD@4!I@)rj?h;mY_6_cTyN2AI?h!R`@x|r(ydcbVQQyqjXIQSX?PGBc5TgyQXBl>M)ZQsaSVTc$ z;T2M;FrIi3Qs}xoO>mjXP`6Z-xFE~dXe8TvA`%b|l~rQ}upO!;(a%|qu>^FK9KsNR za;6%+;|HS^lf(|O1cLD|P9^ZN!4T$PPS_oty1-G~fURy+tMnEbmx?_cdJ7JuvFxaU zE|a{jr~te@lH8_YYpcl+d3~U``DY$`#!Lq4E9n%LFX~7(w#K=);wCrrly1uJG9hj| zy2Rxi_w5M1gQP>UYOmTcV|!ZL9PmW0AZGG-h>N`>&uN!}7&@W}$vl!M5l)z`>QTY- z0f9LxQsd->7=Y^gFghp=Z{}yOw4;OO3#Zm5+%Q|W#0NiVgNdg87>IgDmxzE`D)nPP ztZLL?m1tjQ{=qAdJ>>(?N}>9qhSN;(0Fk^aJ{XRJh#e}Q8I~(#cTr+XJ0+%M0+!YD z4&k|3W5c2KmoAkSiwG-=jl?zDJsoN53jrQGEF3~~kyXce`hZDnZ$EUw&ZStP+s)$vfKq^f>AdfmR#=kL(&fI6;FveWt73N` zZyzXjA2SUuBmV$%0&F+hcG>;odjw`XrO`rz@iX-p)3kmiIA!gEU4zb#nYy$S@@{oH zM+XWKF^F2sN^fEHhO&;!+B<|#X&17}P>NNsH(w?PXYUMFPS6g-)B3@ z@JDmzmI!-R>OK?&2CoH|a|n29R))Xw*!oJGBrk$1t12-4CJhk2xUOHc#byF%z8E5D za?Xs-kcLdbT%r$CQh{63!`6ExDY7Lvh|~bFYgw875g|h{0m0kEzpVcN0sXh$tbTD5pWDtcUh*Mf;!NKe)f?V1K3k z&+#AJSM{)%#k-8qVRio$#xM2fpKPjM25IAEMbiMEfVSi&FXhxeF1WJb{O;s)f@ z+o(lDs)?)a>k`+x%0AxdDzq_)q$k>Om+u|cec15?(^tgWeA1CT)dTp9Y1a`obi8Ib%jQ_TJ~0v2U=5+?u_~JsohXI|y{K9KMl9QRSOx$B zg0X+rpXI0dY5r<|n4jaP`RV>De~6#pXZYysd}yxzG+Xp%_!<6se}bRnrFt)H)cn9K z^E}@2>jzMM1sS6Gie0^!gE@W|r9}Zm9e)ayDhhyA;E7Fo)J+TE{{YBT=1#fG3}`4+ ztJf0AH{KK8BA(MqJ-<-f7S57I-)Mxo<`&aZfkQIVOBSQ>mAc0}ipZM& z7ZA&+u}1O-OD@u)$?h`fE@A0R;VSLRW#H#?UEmL?`hv1r8S=8L+|#y>(yflt4(FgN zL{}l?uiy&MTM<;0{{Rrd5|Uti{{RqF0@p!1Pa>aRq;*QiqAS5bYTB&9*F>MI@fET`)DQj+Q*#IM z32J#?EM70X+QbH9C`xT?brDs2GV4tGJi!A7X5q3Z3P71m_G5ZM#LA}AEy@$C?J0~M zum#JVgmzXTT(K`C3SqbdxLGPR${{PfE?X^@s@!yXM{l9&Z>JL|ReCYRLhWdzW72C< z)+WlpRYfJ9h7~QBE%X>RDl%HSCEEsr%)PKtTy~jwG4VLSpH;QpozMK|(Z2AoxQ*No z`l8);{`HhQt-7VJ_oPq4+yZ0uDi+mJtGEU-0I_dBS!qnYE3x$_&?ASs2~c)C#a^XV zYiD%SMXQ-~@;^vT+EBb69}_uw2;JzGBP_NBe#lZ(1G;sV`|V)A5e8Ear3;I3Sl%z` zHhSMo`^@7c^H4v;6myew-0P7q{YQV%!V_z04aCckjX?1Q!e;@D#$y1jV())2ks6fg z-Y=KFA9uk5a486=L>x|3QudU02cVU;rt2$&<{%ltiVGb4OG_AVSgcDTdkdW6;7|xC zA9y8To#a;KsdT@i^DV_-=mY-%0^7ve7GZ5OD_L7}FfksI()Q^EImAjqD@l&5(=>%8 zDn6-2gCdt5<~YJwY5mFvs{2e|Sc>3jBG^XzMxby@Dh#Kr9w5So6!YoCCqA6>F+R(h z=GbG@^b(*6NXs^2zLoy~gX_&kBsHku?YoPG0i!H*(x!>+3aZs{9Y@#y0Gz5t({Qht zEN)N`2BrT1N{_*T%KqB`jp=0V;#g|cm+>uNxV?(_)U?#>jdSe*YAma(mnE29)7GXt zDCr(*6ug-$E4!7XAs-?DEIeB8^_?23F-PhM)>2)L^YJl>xN=O*qkvapTzLG8RRU=% zN>`W+Re@J}_4;Ste9iW$h1AH;qz;+%ii9fYA|OQA`gh}kVuqYQ$r8}DOfg^vif#@R z=}{X29aZWIfwp47-3s-u;BV93;wUU4f;M!Flu~g5H0~iKJ`o0VWkTi5973iS4m+`J zH<*LDbO+)B!xt`Pe9MXGS^!nzA~2bRB}|fG#X$1{z;%InlN3PJLhC$I_T93U%nNtgkYp%X|?4%hi>1VGfd43mm1SUtG+Owf_KqAmcGl z?|M#P$OCpN$e;?NMaS4XeI=-C4x?uN;B52=fLIF0qv-Lw8kQq;LUInv!~lXXbo%M{ zy0FAUE9yRjp}a8o{y$9n%$h#4h(FqweLTzPpD^G3hcES~qq+N_`b5IDyNj#TP}tyc z2i3q7uXt$YEZF|A>6v~6YeJHL#tC~@ZqwqSfbMa=#(h>Q*expfB5BgVUV4aFVQepa zkM~i`tyR;Qi!p#L__gaL3jswDknKS)tt!aX2W4s5=B<5O`&Hd-@|}s1N*{sYc+!n~Dv1MHUHLmc$Km zk)^{hmD+t}M{_ssf1*S z$rAAbm256w5o{uJ+*`?0HmFXp0;Fn$x- z2!)I5h>g9=`$QB+ihX7{i&!Oq(pR$x+7=;&H~E#ZF6~S*+x*1-?xF3-@o+(@W2iX$ z%sytU(nerI0F_|hIm|f}P5CvR^AkQ=l$#x6#5du6+12W*QLTK+4rNzFe$z9>M*-vN zM?~l~u1Gi3*z<-veuX&Wd>0+=3rMv;1aTT>>IHjiEo)FrY;s-I{$|G3y)#ee=lK0I z?+kG;^_QwrFLHB`Wp*Yw*ty_dRdDdjjOg{$z-V_r5G(%VUx`9X(8uEt+^ADqyKk%% zY-$y|a^&~i1~$OueC}MP;X!E_bwW-Ws)(Sjwz#RSCB1zmsveIQak2(-s+(|+t6m2ScIjf7d8 z{{V(I7LH{ew*hP7#B{8sSD03u-U&MzGZO{mhC` z*&U+z=?v2tkWmJShMXu1VK1Gdn6}f0jxiPtHtvqRL@=2{J=Yw8UWdg+K2v6?ZZaM< zD+m?boRFBHf`hw?q$Oa{4k5^JG=Cqaedb$J-BS8SdY=>6mcOGqC;l(|MnNNOYt(p& zRvG@+@IVD!1g(ltwL$09BT+zd#HV{x1O-kuh9W_|g+8q%#q>pru@N^LO&Z`g8F7wC zZzby6QpWQT`HDG~dXk51UERjUTa>Fab0>LSV!(KLhH(;{Y70@SG!g3vuq7AjQVUYu zCH9$Yj@{KbWhD_MBHx)?1nC?BbD|#WIi-&|j$sJ4OgqCJA2CM#kuF&HiLXxU9G6g4 zwE;{ntZo?xQO|iHNODD%FK7{nsl>ewNS#TcHQp(f{Vh0g(-^(jbs@R;7Y$+UDO7Bi znH9AJx}(fxrT3KxCW9`5Qx=LB+CTjN08IP9w;y>=d7ggL9MnDF`8}e%*9g9Z((&qZ2-EJN-+Q%QbAtxMyS`U?Ja@FtRI*A6$wQg5?WOOqOp-ryEH}eJT zjT?1@Vjv4S%t8*hTE3Fe#~QYe+Y=@Bw)*jLtwu3S?Cr$jDBP|cbcwKjO+*Up#2RzC zDrpk=i#U{b6J&Z5B%#SUkqgx4ZuedDyy>=p44wg$`n5u`taIDOe$$fgSBEi`K= zJ{)#|3FuJDfOz#l98;fyi3Z{lxqvP^y3nVxcyBoB)6)>rY@*t872mp zx~x55e6JXad&F1>VjK302phuuIgZ5Y$zBeaR9RVMsasgn=2Q;Jc=6qjA%BvEV%3iC zrAa`CNuPO0v1wU6MsQMuYvg^Mi! zY{_Ed@`zm%(o(8JfHA3G?-f^Rq{WLEvaq2P1gIId%yDz@RV!#1G!$2-3y7PSn5*qC5vB__(GZN9loSN-00p0SWRwU-GZ;4%@ z*)wGr<{@zpOQ>W&E5e!wUSb@7aqtk93bWY0EGVlPZ8Mp zC-~7iL$YVkNxu{O7vg_q{75b~${iT3NnQ9!Yg?nDxH`J56xJfc31xkZnC!^a>!g-3`l6N(+@=WAiHcOg3KwCrz^& zDmn=93-!Va4$)8_Q32|yQKK-L5TQpgHZhQzW$LPj(JjHR+76hP(F>KGKp-5l=DpiM zqJ$<+E{~-}CMA}O`6ZD7!2``sG6fV|SqE0tG^}SZcST)o^Ld1pHiI+Hpi|&lm3pxh z9K|q^atoS^Q&zf%wtPx4+AO_|%b81^5%fUIEZ*!REEQFJ%RMJRO0A5mPi*Y+76NckpMy5^6 zobxWSuyn@mMd<5|$3pP);yGnH+!C#Bk*Gip{s~;(=tHR9(z{BWOP7dQ04-Nl9WVn% zna%yCG3z>uP>o(7`h5&|d-@Q6f!vCOq^$}LT8h*SaIU912gLh8?+kM(d4XKVt)&_Z zg6Q)Ozn__9(rC0+Z#kA=hithXm=0ji$+s}32rxixSe{C&j&WF{{y?t5 zgly*EP9;~?W;SXzO!EclEjX9M?H?Z#CZ*b$l;>yr+81{h{iE_ljk&ujqx>$6vD=wCABmb$uNUGD598A`)1SN+|ZiPLa&?(B=N%tBz@iywyLN`&$;DZWuQ=jW zvh}iJ>2p%m%@~QM+JZPTqN>yJ4VI0Q_K8Oa5WH6!l-D#`CnSb4K?a^(N4#VbhErQ# zd>0%lPiApiJxHoM6JTRmj}ZWKLgGBVF9P)=*`NT3?>sfuW_zmp&w0}2LVkF4SQptTHzK)_zGw7x6ObCxsWZ7IbWONlSGkdFn;I2fd-Xn)}vcX1+(3NNd zp)Bn@rZDM^())txGQ&7?xoF{SZHtsB;tau4j2K!C;yQShH_{yS*%ib8kXG)#G#aQ&z0~!1lzXQu$>Ym1^dM95IKeJpo)hWdl&vMS*O@01bl z(!TQGjon-aJ8v>(G1CTNsX=n@Y+WYU;^ToT1XOW^?e)s|g}0EE#NMI3!Jk=F^D>N8 z7pqx)w+-0ODf40%dxneAjsoXou$JlT+@uy!fg?JoaBc?U?p3P zK<;Fyfz@=V1BkcP(c$qcX@EVpAb6_Xokoah^@FKgoC85%0dXKP&-3BK~1VIGaRmI z>wVz3svBn!4zyx@rsZN1(|(yd_KlM(b5aQ)2Yw-&RNIK&szIe?kD(r((%upbw^)l2 z-w?jp{6z8tuu#mf=sLXA3_&~Yci%91A1JG=UZ!2Q1nUaxEUnA9w-I6Apc3O9Wn*(QGNsNE@fDbYCVe$TaEha{?-iox6CWHIaCu{v z@e;7h2Q@7@nOksX8;ypytaQDjwEl&ctT-W#C%2}OfN+K9Qk0-6mTh&R%7qut6A^h_ z7<)Y+l7QrDyG0$Iat~-XMZrA#Ox3B@ARt}3DsgYpTF|m?UC3zWC0%Q*P++JVfVLzw zg`2H;ia*Y(bw(1oCOG1ES#LAh?JSor0VoWU>|z+sU1GfA=*HmNUemOCeYuz&2;j}I zAq8R+h||PZ6ih>K1!w~L;{O07eaLUlV@n$Q(4Np=of5GV(&1nEul@rO{8cOY)Tv#i zc7alg^i@LO^iK(7!~@VEMH7t7r4?<6iyhM!6DOf@7Z*uwT4;q|iCmQ>megAzVRdj7 zF^o&IaZ*w_OCwOx=nF2DEXQGKf_o5V34P+m$b+{-?TD-n8YM1yZg?TN0BIeOVP^N* zJS%tFB`Yr-BaoWeF@9-Nz0Trb+~zUTrKK&@7csau9jDrUddpG~n?W%i|FpU7;zWX@Y-Qg_^mM5H)eOZTO0+vRO)zDsXE;xVmM@ z6iz!~`$Q8=KJ%bQtkEk%c!|k8F;kQ}hvU!{ul=w1Rlx`Gzf1JFc$P~hJt{G2NiBzD z1QHb}l>zH1>oOaP`$4Qj*`nzQa^sX3;<-e~?HCXZw=Y}!e=_i(HF8&MWnm8rJk%?O zFtM{YxCW)(<{N2!rccCLCNT;sk7<3P_LQ|t^hcEttnY|}(p!|Q(Bi*P6k?<)<$z<1 z^i+=bY(G;mLAk5FOB1x+KlTn60``62Q)f*9l&C`L zIhej<>fnZj;U{DR20h@HVzA+GXmYqNW35B>AXElcnPs4pVYAvPq%p|~fy_PYRmK6oxl*~6LvNMJK_w|8my<`4I zW6B@)C+qk6luMo3ue{c;w7vu8R8LI*0OQY~LjpdJ@VrZxE-$6amnh6eS1^ey(w?(0 zi)wagjjGEAzHvZ%Fn=+X;dwTbXhJ%Q9XLk%6XY(-Nl{l^jc^ zTV9P26?h{r1nI62t!!*(NY@wi%g&;*>T%kJS-eClc#NaCAcEMA@*Tu77-2iq$hyQs zk3!IMOhGc;BaXHuM#sdf77Q0XAhHTFd_aZ_$E@8zG$~hu9u?kwjT0D+t9rOrhGsVL zp73yF8-raTYYgl`mn@cZ6xGYkPkEt@Vety$6+QAXxT=jYQN%n7iL7P=q)y=RPzKVV z&ZA=MJ!N8sJ48=?Nz@MQ{o^ONSM4tXh#~`mW@0e6fkLL*8U^qn;x>EhHWoHPT(=EsuOf zQ@vuC*t%SLQ_QahcKzj>-~BVdVWMPIx4*wc-r` z_+?6o5+qOjQspweR#~VdC3j(|Z&>+#;hN+Rytu{mAt?p}tiiSOQ-s@P$9J@ZkFMF`Ktbf;Rf zgykTY!4Su$P;O)cQq)~D^C@V?42$zQcS6Q}$Qu{77hM4&Qbpzouj{4e1L%gM+bqgTQY28QK z_LR#G@hM%X*AIp%koke`2Fsn)!j(=To|C+t#O}TzWlKhncxXW#G(T_{{6m3>Q;1mV z4p@QcX6^}dC%wRXZ5+oA^6n(409n!%P~5YK075LwsHxOZv*Hsri7k1Kw{aJnmNZLw z8;HT-1>P)4a!rdoOXlZQ+*>simMM%&o*<5E+Afy_v6T_WWY0}k5{r$)wkdUqM%5?| zD3rUztM4pRIE7TaGYZz=UFIQO%ZeL;-H(}d)_cO~%)Y4i64{=TuYv%&quLrr!ia7= z<{S&;fN$uf8~8m55!2AF@}kkyaMUD#V`T`La_wz8L$uT&9f90n;$x=2bOQTgFVL2U zdVXbxG?~DCB2*47m+uKJDxI!qWFCZ71f46W3cB=6gQ})9NqWZV=e%~?Km*P{lw5LC$3_tf1~I$t*ajK)A7BD26QsSlk-Ytd$yst|1&_ z-V3hdcmTlk_>YQZhcT{UTt%y*Q&ia-bpzB!NlybJ|&bA#j%1i%*(t=))>wP1rpVI%<5h<0(u2qB_M;WKCr5}VO5ys9U|hO zd6}N@zOywm)>|!V7dg3ZlEz^5U`(fk+EVo>hzZo0(^|U(1JN!;cDZ~aLPhopCE?PQ zxXVR)CFULQ)G2)PjUugE8!Ig-#2OOG2GWjL*AQH4ONjW1q|i4L%I^*wCf6&#cEJP! zQPNOML(w;MOdA-BnA3@aQ8}_w^!!Dg7+Kr`aR9n1R=AalJkdNIt%xD&xRL<$hXqol za}&I;5zA7Gj+Nk;fkz8Cf|95qZK4hqF`i|(Q!5z^Pmiz{qgIRaep>GC{&tcM2$AJj=b`pz=vWG{p3jXVz&`-cyuBY?RF|E4qU7 z4x(UnBW|cirpT`?%T}hNxso>KrT3Vv%Q$8CobFp$WxZx)yt6)v8fDv3CiqWR=HA-f6ZQ zvORZ&6i6kwPO9e7_mmDBji58AC}u7d%oK-6sfFFPLC7aCu*@)314gdfE literal 0 HcmV?d00001 diff --git a/include/PineDio/LoRa/Exceptions.h b/include/PineDio/LoRa/Exceptions.h new file mode 100644 index 0000000..5e553c9 --- /dev/null +++ b/include/PineDio/LoRa/Exceptions.h @@ -0,0 +1,9 @@ +#pragma once + +namespace PineDio::LoRa { +class InitializationException : public std::runtime_error { +public: + explicit InitializationException(const std::string& message) : runtime_error(message) {} +}; + +} diff --git a/include/PineDio/LoRa/PinedioLoraRadio.h b/include/PineDio/LoRa/PinedioLoraRadio.h new file mode 100644 index 0000000..04f6904 --- /dev/null +++ b/include/PineDio/LoRa/PinedioLoraRadio.h @@ -0,0 +1,27 @@ +#pragma once + +#include +#include +#include + +namespace PineDio { +namespace LoRa { +class PinedioLoraRadio { +public: + explicit PinedioLoraRadio(SX126x& radio); + + virtual void Initialize(); + virtual void Send(std::vector data); + virtual std::vector Receive(); +private: + SX126x& radio; + bool dataReceived {false}; + std::vector receivedBuffer; + + bool dataToSend {false}; + std::vector transmitBuffer; + + void OnDataReceived(); +}; +} +} \ No newline at end of file diff --git a/include/PineDio/LoRa/PinephoneBackplate.h b/include/PineDio/LoRa/PinephoneBackplate.h new file mode 100644 index 0000000..1bdf609 --- /dev/null +++ b/include/PineDio/LoRa/PinephoneBackplate.h @@ -0,0 +1,22 @@ +#pragma once +#include +#include + +namespace PineDio::LoRa { + +class PinephoneBackplate : public SX126x { +public: + explicit PinephoneBackplate(const std::string& i2cFilename); + void Initialize(); + +private: + uint8_t HalGpioRead(GpioPinFunction_t func) override; + void HalGpioWrite(GpioPinFunction_t func, uint8_t value) override; + void HalSpiTransfer(uint8_t *buffer_in, const uint8_t *buffer_out, uint16_t size) override; + + int handle; + void RxDone(); + void SyncI2CBuffer(); +}; + +} diff --git a/include/PineDio/LoRa/UsbAdapter.h b/include/PineDio/LoRa/UsbAdapter.h new file mode 100644 index 0000000..07b71f1 --- /dev/null +++ b/include/PineDio/LoRa/UsbAdapter.h @@ -0,0 +1,21 @@ +#pragma once +#include +#include + +namespace PineDio::LoRa { + +class UsbAdapter : public SX126x { +public: + UsbAdapter(); + +private: + uint8_t HalGpioRead(GpioPinFunction_t func) override; + void HalGpioWrite(GpioPinFunction_t func, uint8_t value) override; + void HalSpiTransfer(uint8_t *buffer_in, const uint8_t *buffer_out, uint16_t size) override; + + int handle; + + void RxDone(); +}; + +} diff --git a/libs/CMakeLists.txt b/libs/CMakeLists.txt new file mode 100644 index 0000000..baa18ee --- /dev/null +++ b/libs/CMakeLists.txt @@ -0,0 +1,10 @@ +cmake_minimum_required(VERSION 3.17) +project(sx126x_driver) + +set(CMAKE_CXX_STANDARD 14) + +add_library(sx126x_driver sx126x_driver/SX126x.cpp sx126x_driver/SX126x.hpp) + +target_include_directories(sx126x_driver PUBLIC + $ + ) \ No newline at end of file diff --git a/libs/sx126x_driver b/libs/sx126x_driver new file mode 160000 index 0000000..42a75df --- /dev/null +++ b/libs/sx126x_driver @@ -0,0 +1 @@ +Subproject commit 42a75dfbeb6a4df8bb4e77d10d135fba878b88d4 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000..96a6530 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,31 @@ +project(pinedio-lora-driver CXX) + +add_library(pinedio-lora-driver + ../include/PineDio/LoRa/PinedioLoraRadio.h + ../include/PineDio/LoRa/Exceptions.h + PinedioLoraRadio.cpp + ) + +target_link_libraries(pinedio-lora-driver PUBLIC + sx126x_driver + ) + +target_include_directories(pinedio-lora-driver PUBLIC + $ + ) + + +set(AT_LEAST_ONE_BUILD_ENABLED FALSE) +if(${BUILD_FOR_PINEPHONE}) + add_subdirectory(pinephone) + set(AT_LEAST_ONE_BUILD_ENABLED TRUE) +endif() + +if(${BUILD_FOR_USB}) + add_subdirectory(usb-adapter) + set(AT_LEAST_ONE_BUILD_ENABLED TRUE) +endif() + +if(NOT ${AT_LEAST_ONE_BUILD_ENABLED}) + message(FATAL_ERROR "Please select at least one build (-DBUILD_FOR_PINEPHONE or -DBUILD_FOR_USB)") +endif() \ No newline at end of file diff --git a/src/PinedioLoraRadio.cpp b/src/PinedioLoraRadio.cpp new file mode 100644 index 0000000..2303fdb --- /dev/null +++ b/src/PinedioLoraRadio.cpp @@ -0,0 +1,109 @@ +#include +#include +#include +#include + +using namespace PineDio::LoRa; + +PinedioLoraRadio::PinedioLoraRadio(SX126x &radio) : radio{radio} {} + +void PinedioLoraRadio::Initialize() { + std::cout << "[PinedioLoraRadio] Initialize()" << std::endl; + + radio.callbacks.rxDone = [this](){OnDataReceived();}; + radio.callbacks.txDone = [this](){ + std::cout << "TX DONE" << std::endl; + usleep(10000); + radio.SetRx(0xffffffff); + usleep(10000); + }; + + radio.SetDeviceType(SX126x::SX1262); + radio.Init(); + radio.SetDio2AsRfSwitchCtrl(true); + radio.SetStandby(SX126x::RadioStandbyModes_t::STDBY_RC); + radio.SetRegulatorMode(SX126x::RadioRegulatorMode_t::USE_DCDC); + radio.SetBufferBaseAddresses(0,127); + + radio.SetTxParams(22, SX126x::RadioRampTimes_t::RADIO_RAMP_3400_US); + radio.SetDioIrqParams(0xffff, 0x0001, 0x0000, 0x0000); + radio.SetRfFrequency(868000000); + + radio.SetPacketType(SX126x::RadioPacketTypes_t::PACKET_TYPE_LORA); + + radio.SetStopRxTimerOnPreambleDetect(false); + + SX126x::ModulationParams_t modulationParams; + modulationParams.PacketType = SX126x::RadioPacketTypes_t::PACKET_TYPE_LORA; + modulationParams.Params.LoRa.LowDatarateOptimize = 0; + modulationParams.Params.LoRa.Bandwidth = SX126x::RadioLoRaBandwidths_t::LORA_BW_500; + modulationParams.Params.LoRa.CodingRate = SX126x::RadioLoRaCodingRates_t::LORA_CR_4_5; + modulationParams.Params.LoRa.SpreadingFactor = SX126x::RadioLoRaSpreadingFactors_t::LORA_SF12; + radio.SetModulationParams(modulationParams); + + + + static char* message = "Hello, I'm a Pinephone!"; + auto s = strlen(message); + + SX126x::PacketParams_t packetParams; + packetParams.PacketType = SX126x::RadioPacketTypes_t::PACKET_TYPE_LORA;; + packetParams.Params.LoRa.HeaderType = SX126x::RadioLoRaPacketLengthsMode_t::LORA_PACKET_VARIABLE_LENGTH; + packetParams.Params.LoRa.InvertIQ = SX126x::RadioLoRaIQModes_t::LORA_IQ_INVERTED; + packetParams.Params.LoRa.CrcMode = SX126x::RadioLoRaCrcModes_t::LORA_CRC_ON; + packetParams.Params.LoRa.PayloadLength = s; + packetParams.Params.LoRa.PreambleLength = 8; + radio.SetPacketParams(packetParams); + radio.ClearIrqStatus(0xffff); + radio.SetRx(0xffffffff); +} +void PinedioLoraRadio::Send(const std::vector data) { + std::cout << "[PinedioLoraRadio] Send()" << std::endl; + dataToSend = true; + transmitBuffer = data; //copy +} + +std::vector PinedioLoraRadio::Receive() { + std::cout << "[PinedioLoraRadio] Receive()" << std::endl; + bool running = true; + while(running) { + radio.ProcessIrqs(); + + if(dataToSend) { + std::cout << "SEND " << std::to_string(transmitBuffer.size()) << std::endl; + + SX126x::PacketParams_t packetParams; + packetParams.PacketType = SX126x::RadioPacketTypes_t::PACKET_TYPE_LORA;; + packetParams.Params.LoRa.HeaderType = SX126x::RadioLoRaPacketLengthsMode_t::LORA_PACKET_VARIABLE_LENGTH; + packetParams.Params.LoRa.InvertIQ = SX126x::RadioLoRaIQModes_t::LORA_IQ_INVERTED; + packetParams.Params.LoRa.CrcMode = SX126x::RadioLoRaCrcModes_t::LORA_CRC_ON; + packetParams.Params.LoRa.PayloadLength = transmitBuffer.size(); + packetParams.Params.LoRa.PreambleLength = 8; + radio.SetPacketParams(packetParams); + + radio.SendPayload(transmitBuffer.data(), transmitBuffer.size(), 0xffffffff); + usleep(3000000); + dataToSend = false; + } + + if(dataReceived) { + break; + } + std::this_thread::sleep_for(std::chrono::milliseconds(100)); + } + + dataReceived = false; + return receivedBuffer; //copy +} + +void PinedioLoraRadio::OnDataReceived() { + uint8_t size = 0; + uint8_t offset = 0; + radio.GetRxBufferStatus(&size, &offset); + + receivedBuffer.clear(); + receivedBuffer.resize(size); + radio.GetPayload(receivedBuffer.data(), &size, size); + + dataReceived = true; +} diff --git a/src/pinephone/CMakeLists.txt b/src/pinephone/CMakeLists.txt new file mode 100644 index 0000000..4761acb --- /dev/null +++ b/src/pinephone/CMakeLists.txt @@ -0,0 +1,23 @@ +project(pinedio-lora-driver-pinephone CXX) + +set(PINEDIO_LORA_DRIVER_SOURCE_FILES + PinephoneBackplate.cpp +) + +set(PINEDIO_LORA_DRIVER_PUBLIC_HEADERS + ../../include/PineDio/LoRa/PinedioLoraRadio.h + ../../include/PineDio/LoRa/PinephoneBackplate.h + ) + +add_library(pinedio-lora-driver-pinephone + ${PINEDIO_LORA_DRIVER_PUBLIC_HEADERS} + ${PINEDIO_LORA_DRIVER_SOURCE_FILES} + ) + +target_link_libraries(pinedio-lora-driver-pinephone PUBLIC + pinedio-lora-driver + ) + +target_include_directories(pinedio-lora-driver-pinephone PUBLIC + $ +) \ No newline at end of file diff --git a/src/pinephone/PinephoneBackplate.cpp b/src/pinephone/PinephoneBackplate.cpp new file mode 100644 index 0000000..077ff60 --- /dev/null +++ b/src/pinephone/PinephoneBackplate.cpp @@ -0,0 +1,142 @@ +#include +#include +#include + +#include +#include +#include +#include +using namespace PineDio::LoRa; + +PinephoneBackplate::PinephoneBackplate(const std::string &i2cFilename) { + std::cout << "[PinephoneBackplate] ctor()" << std::endl; + + if ((handle = open(i2cFilename.c_str(), O_RDWR)) < 0) { + /* ERROR HANDLING: you can check errno to see what went wrong */ + perror("Failed to open the i2c bus"); + exit(1); + } + + int addr = 0x28; // The I2C address of the ADC + if (ioctl(handle, I2C_SLAVE, addr) < 0) { + printf("Failed to acquire bus access and/or talk to slave.\n"); + /* ERROR HANDLING; you can check errno to see what went wrong */ + exit(1); + } +} + +void PinephoneBackplate::Initialize() { + SyncI2CBuffer(); + /* + uint8_t bufferWrite = 4; + if (write(handle, &bufferWrite,1) != 1) { + printf("Failed to write to the i2c bus.\n"); + printf("\n\n"); + exit(1); + } + */ +} + + +uint8_t PinephoneBackplate::HalGpioRead(SX126x::GpioPinFunction_t func) { + usleep(10000); + return 0; +} + +void PinephoneBackplate::HalGpioWrite(SX126x::GpioPinFunction_t func, uint8_t value) { + usleep(10000); +} + +void PinephoneBackplate::HalSpiTransfer(uint8_t *buffer_in, + const uint8_t *buffer_out, + uint16_t size) { + //std::cout << "Start transfer " << size +1<< " bytes\n\t"; + uint8_t bufferWrite[size+1]; + uint8_t bufferRead[size+1]; + bufferWrite[0] = 1; // CMD TRANSMIT + std::memcpy(bufferWrite+1, buffer_out, size); + + //for(int i = 0; i< size+1; i++) { + // printf("%x ", bufferWrite[i]); + // } + // std::cout << std::endl; + + if (write(handle, bufferWrite,size+1) != size+1) { + /* ERROR HANDLING: i2c transaction failed */ + printf("Failed to write to the i2c bus.\n"); + printf("\n\n"); + return; + } + //std::cout << "\t Write OK\n"; + + //std::cout << "Reading " << size << " bytes from the bus \n"; + for(int i = 0; i < size; i++) { + if (read(handle, buffer_in + i, 1) != 1) { + /* ERROR HANDLING: i2c transaction failed */ + printf("Failed to read from the i2c bus.\n"); + printf("\n\n"); + return; + } + } +} + +void PinephoneBackplate::SyncI2CBuffer() { + std::cout << "[PinephoneBackplate] Sync buffer..." << std::endl; + + std::cout << "\tInit LoRa module..." << std::endl; + // Set radio to idle + uint8_t dd[3] = {0x01, 0x80, 0x00}; + write(handle, &dd, 3); + usleep(1000); + + // Set RX/TX index to 0 + uint8_t d[4] = {0x01, 0x8f, 0x00, 0x00}; + write(handle, &d, 4); + usleep(1000); + + std::cout << "\tSend verification data..." << std::endl; + uint8_t cmd1[] = {0x01, 0x0E, 0x00, 0x10, 0x20, 0x30, 0x40, 0x50, 0xAA, 0x55, 0x00, 0xFF}; + write(handle, cmd1, 12); + usleep(1000); + + uint8_t cmd2[] = {0x01, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + usleep(1000); + write(handle, cmd2, 13); + usleep(1000); + + std::cout << "\tSync'ing..." << std::endl; + bool done = false; + bool sequenceStarted = false; + size_t sequenceIndex = 0; + std::array sequence = {0x10, 0x20, 0x30, 0x40, 0x50, 0xAA, 0x55, 0x00, 0xFF}; + int count = 0; + while(!done && count < 256) { + int d = 0; + read(handle, &d, 1); + + if(!sequenceStarted) { + for(int i = 0; i < 9; i++) { + if(d == sequence[i]){ + sequenceStarted = true; + sequenceIndex = i; + } + } + } else { + if(d == sequence[sequenceIndex+1]) { + sequenceIndex++; + if(sequenceIndex == 8) { + done = true; + std::cout << "\tSync done after " << count << " bytes!" << std::endl; + + } + } else { + sequenceStarted = false; + } + } + count ++; + } + if(count >= 256) { + throw InitializationException("Internal buffer synchronization failed"); + } + +} diff --git a/src/usb-adapter/CMakeLists.txt b/src/usb-adapter/CMakeLists.txt new file mode 100644 index 0000000..cd46237 --- /dev/null +++ b/src/usb-adapter/CMakeLists.txt @@ -0,0 +1,23 @@ +project(pinedio-lora-driver-usb CXX) + +set(PINEDIO_LORA_DRIVER_SOURCE_FILES + UsbAdapter.cpp +) + +set(PINEDIO_LORA_DRIVER_PUBLIC_HEADERS + ../../include/PineDio/LoRa/PinedioLoraRadio.h + ../../include/PineDio/LoRa/UsbAdapter.h + ) + +add_library(pinedio-lora-driver-usb + ${PINEDIO_LORA_DRIVER_PUBLIC_HEADERS} + ${PINEDIO_LORA_DRIVER_SOURCE_FILES} + ) + +target_link_libraries(pinedio-lora-driver-usb + sx126x_driver + ) + +target_include_directories(pinedio-lora-driver-usb PUBLIC + $ +) \ No newline at end of file diff --git a/src/usb-adapter/UsbAdapter.cpp b/src/usb-adapter/UsbAdapter.cpp new file mode 100644 index 0000000..6360310 --- /dev/null +++ b/src/usb-adapter/UsbAdapter.cpp @@ -0,0 +1,113 @@ +#include +#include +#include + +#include +#include +#include +#include +#include + +using namespace PineDio::LoRa; + +UsbAdapter::UsbAdapter() { + std::cout << "[UsbAdapter] ctor()" << std::endl; + + // TODO remove code duplication for exporting GPIO + if(access("/sys/class/gpio/ini", F_OK) != 0 ) { + int fd; + if ((fd = open("/sys/class/gpio/export", O_WRONLY)) == -1) { + perror("Error while opening GPIO export file"); + // TODO ERROR + } + if (write(fd, "240", 3) == -1) { // TODO how to find the GPIO number programatically? + perror("Error while exporting GPIO \"ini\""); + // TODO ERROR + } + close(fd); + } + + if(access("/sys/class/gpio/slct", F_OK) != 0 ) { + int fd; + if ((fd = open("/sys/class/gpio/export", O_WRONLY)) == -1) { + perror("Error while opening GPIO export file"); + // TODO ERROR + } + if (write(fd, "244", 3) == -1) { // TODO how to find the GPIO number programatically? + perror("Error while exporting GPIO \"sclt\""); + // TODO ERROR + } + close(fd); + } + + handle = open("/dev/spidev0.0", O_RDWR); + if(handle == -1) { + // TODO error + printf("SPI IOCTL error %s\n", strerror(errno)); + } + + uint8_t mmode = SPI_MODE_0; + uint8_t lsb = 0; + uint8_t bitsperword = 8; + ioctl(handle, SPI_IOC_RD_BITS_PER_WORD, &bitsperword); + ioctl(handle, SPI_IOC_WR_MODE, &mmode); + ioctl(handle, SPI_IOC_WR_LSB_FIRST, &lsb); +} + +uint8_t UsbAdapter::HalGpioRead(SX126x::GpioPinFunction_t func) { + if(func != GpioPinFunction_t::GPIO_PIN_BUSY) { + std::cout << "ERROR" << std::endl; + throw; + } + + int fd; + if ((fd = open("/sys/class/gpio/slct/value", O_RDWR)) == -1) { + perror("Error while opening GPIO \"busy\""); + return -1; + } + + char buf; + if (read(fd, &buf, 1) == -1) { + perror("Error while reading GPIO \"busy\""); + return -1; + } + close(fd); + + int value = (buf == '0') ? 0 : 1; + + std::this_thread::sleep_for(std::chrono::milliseconds{1}); // Why do I need this sleep()? + return value; +} + +void UsbAdapter::HalGpioWrite(SX126x::GpioPinFunction_t func, uint8_t value) { + if(func != GpioPinFunction_t::GPIO_PIN_RESET) { + std::cout << "ERROR" << std::endl; + throw; + } + + int fd; + + if ((fd = open("/sys/class/gpio/ini/value", O_RDWR)) == -1) { + perror("Error while opening GPIO \"reset\""); + } + + if (write(fd, value ? "1" : "0", 1) == -1) { + perror ("Error while writing GPIO \"reset\""); + } +} + +void UsbAdapter::HalSpiTransfer(uint8_t *buffer_in, const uint8_t *buffer_out, uint16_t size) { + const uint8_t *mosi = buffer_out; // output data + uint8_t *miso = buffer_in; // input data + + struct spi_ioc_transfer spi_trans; + memset(&spi_trans, 0, sizeof(spi_trans)); + + spi_trans.tx_buf = (unsigned long) mosi; + spi_trans.rx_buf = (unsigned long) miso; + spi_trans.cs_change = true; + spi_trans.len = size; + + int status = ioctl (handle, SPI_IOC_MESSAGE(1), &spi_trans); +} +