From e83801bd048122ca19ed76d81b0f708252758963 Mon Sep 17 00:00:00 2001 From: "tim.laue" Date: Tue, 24 Feb 2009 08:25:31 +0000 Subject: [PATCH] Merging from calibration branch: * Module for capturing image data from a directory * Sample image --- src/app/capture_thread.cpp | 22 +- src/app/capture_thread.h | 5 + src/shared/capture/capturefromfile.cpp | 275 +++++++++++++++++++++++++ src/shared/capture/capturefromfile.h | 101 +++++++++ src/shared/capture/sources.pro.inc | 3 + test-data/ssl-field-2008.jpg | Bin 0 -> 37322 bytes 6 files changed, 400 insertions(+), 6 deletions(-) create mode 100644 src/shared/capture/capturefromfile.cpp create mode 100644 src/shared/capture/capturefromfile.h create mode 100644 test-data/ssl-field-2008.jpg diff --git a/src/app/capture_thread.cpp b/src/app/capture_thread.cpp index 25ca3b3b..99e9e56b 100644 --- a/src/app/capture_thread.cpp +++ b/src/app/capture_thread.cpp @@ -32,7 +32,11 @@ CaptureThread::CaptureThread(int cam_id) control->addChild( (VarData*) (c_reset = new VarTrigger("reset bus","Reset"))); control->addChild( (VarData*) (c_auto_refresh= new VarBool("auto refresh params",true))); control->addChild( (VarData*) (c_refresh= new VarTrigger("re-read params","Refresh"))); + control->addChild( (VarData*) (captureModule= new VarStringEnum("Capture Module","DC 1394"))); + captureModule->addItem("DC 1394"); + captureModule->addItem("Read from files"); settings->addChild( (VarData*) (dc1394 = new VarList("DC1394"))); + settings->addChild( (VarData*) (fromfile = new VarList("Read from files"))); settings->addRenderFlags( DT_FLAG_AUTO_EXPAND_TREE ); c_stop->addRenderFlags( DT_FLAG_READONLY ); c_refresh->addRenderFlags( DT_FLAG_READONLY ); @@ -43,8 +47,9 @@ CaptureThread::CaptureThread(int cam_id) stack = 0; counter=new FrameCounter(); - capture = new CaptureDC1394v2(dc1394,cam_id); - + capture = 0; + captureDC1394 = new CaptureDC1394v2(dc1394,camId); + captureFiles = new CaptureFromFile(fromfile); _kill =false; rb=0; } @@ -61,7 +66,8 @@ VarList * CaptureThread::getSettings() { CaptureThread::~CaptureThread() { - delete capture; + delete captureDC1394; + delete captureFiles; delete counter; } @@ -86,6 +92,10 @@ void CaptureThread::kill() { bool CaptureThread::init() { capture_mutex.lock(); + if(captureModule->getString() == "Read from files") + capture = captureFiles; + else + capture = captureDC1394; bool res = capture->startCapture(); if (res==true) { c_start->addRenderFlags( DT_FLAG_READONLY ); @@ -136,7 +146,7 @@ void CaptureThread::run() { stats=(CaptureStats *)d->map.insert("capture_stats",new CaptureStats()); } capture_mutex.lock(); - if (capture->isCapturing()) { + if ((capture != 0) && (capture->isCapturing())) { RawImage pic_raw=capture->getFrame(); capture->copyAndConvertFrame( pic_raw,d->video); capture_mutex.unlock(); @@ -175,10 +185,10 @@ void CaptureThread::run() { usleep(100); } if (_kill) { - capture->stopCapture(); + if(capture != 0) + capture->stopCapture(); return; } } } - } diff --git a/src/app/capture_thread.h b/src/app/capture_thread.h index 5991ef70..11c4f8a3 100644 --- a/src/app/capture_thread.h +++ b/src/app/capture_thread.h @@ -22,6 +22,7 @@ #ifndef CAPTURE_THREAD_H #define CAPTURE_THREAD_H #include "capturedc1394v2.h" +#include "capturefromfile.h" #include #include "ringbuffer.h" #include "framedata.h" @@ -43,17 +44,21 @@ Q_OBJECT VisionStack * stack; FrameCounter * counter; CaptureInterface * capture; + CaptureInterface * captureDC1394; + CaptureInterface * captureFiles; FrameBuffer * rb; bool _kill; int camId; VarList * settings; VarList * dc1394; + VarList * fromfile; VarList * control; VarTrigger * c_start; VarTrigger * c_stop; VarTrigger * c_reset; VarTrigger * c_refresh; VarBool * c_auto_refresh; + VarStringEnum * captureModule; Timer timer; public slots: diff --git a/src/shared/capture/capturefromfile.cpp b/src/shared/capture/capturefromfile.cpp new file mode 100644 index 00000000..77f3e47b --- /dev/null +++ b/src/shared/capture/capturefromfile.cpp @@ -0,0 +1,275 @@ +//======================================================================== +// This software is free: you can redistribute it and/or modify +// it under the terms of the GNU General Public License Version 3, +// as published by the Free Software Foundation. +// +// This software is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// Version 3 in the file COPYING that came with this distribution. +// If not, see . +//======================================================================== +/*! + \file capturefromfile.cpp + \brief C++ Implementation: CaptureFromFile + \author OB, (C) 2008 + \author TL, (C) 2009 +*/ +//======================================================================== + +#include +#include +#include "capturefromfile.h" +#include "image_io.h" +#include "conversions.h" + + +#ifndef VDATA_NO_QT +CaptureFromFile::CaptureFromFile(VarList * _settings, QObject * parent) : QObject(parent), CaptureInterface(_settings) +#else +CaptureFromFile::CaptureFromFile(VarList * _settings) : CaptureInterface(_settings) +#endif +{ + currentImageIndex = 0; + is_capturing=false; + + settings->addChild(conversion_settings = new VarList("Conversion Settings")); + settings->addChild(capture_settings = new VarList("Capture Settings")); + + //=======================CONVERSION SETTINGS======================= + conversion_settings->addChild(v_colorout=new VarStringEnum("convert to mode",Colors::colorFormatToString(COLOR_YUV422_UYVY))); + v_colorout->addItem(Colors::colorFormatToString(COLOR_RGB8)); + v_colorout->addItem(Colors::colorFormatToString(COLOR_YUV422_UYVY)); + + //=======================CAPTURE SETTINGS========================== + capture_settings->addChild(v_cap_dir = new VarString("directory", "")); + + // Valid file endings + validImageFileEndings.push_back("PNG"); + validImageFileEndings.push_back("BMP"); + validImageFileEndings.push_back("JPG"); + validImageFileEndings.push_back("JPEG"); +} + +CaptureFromFile::~CaptureFromFile() +{ + for(unsigned int i=0; igetString() == "") || ((dp = opendir(v_cap_dir->getString().c_str())) == 0)) + { + fprintf(stderr,"Failed to open directory %s \n", v_cap_dir->getString().c_str()); +#ifndef VDATA_NO_QT + mutex.unlock(); +#endif + is_capturing=false; + return false; + } + while ((dirp = readdir(dp))) + { + if (strcmp(dirp->d_name,".") != 0 && strcmp(dirp->d_name,"..") != 0) + { + if(isImageFileName(std::string(dirp->d_name))) + imgs_to_load.push_back(v_cap_dir->getString() + std::string(dirp->d_name)); + else + fprintf(stderr,"Not a valid image file: %s \n", dirp->d_name); + } + } + closedir(dp); + if(imgs_to_load.size() == 0) + { +#ifndef VDATA_NO_QT + mutex.unlock(); +#endif + is_capturing=false; + return false; + } + + // Read images to buffer in memory: + imgs_to_load.sort(); + imgs_it = imgs_to_load.begin(); + std::list::iterator currentImage = imgs_it; + while(currentImage != imgs_to_load.end()) + { + int width(-1); + int height(-1); + rgba* rgba_img = ImageIO::readRGBA(width, height, currentImage->c_str()); + fprintf (stderr, "Loaded %s \n", currentImage->c_str()); + images.push_back(rgba_img); + heights.push_back(height); + widths.push_back(width); + ++currentImage; + } + currentImageIndex = 0; + } + is_capturing=true; + +#ifndef VDATA_NO_QT + mutex.unlock(); +#endif + return true; +} + +bool CaptureFromFile::isImageFileName(const std::string& fileName) +{ + // Get ending and turn it to uppercase: + string::size_type pointPos = fileName.find_last_of("."); + if(pointPos == string::npos) + return false; + string ending = fileName.substr(pointPos+1); + for(unsigned int i=0; igetSelection().c_str()); + ColorFormat src_fmt=src.getColorFormat(); + + if (target.getData()==0) + target.allocate(output_fmt, src.getWidth(), src.getHeight()); + else + target.ensure_allocation(output_fmt, src.getWidth(), src.getHeight()); + + target.setTime(src.getTime()); + + if (output_fmt == src_fmt) + { + if (src.getData() != 0) + memcpy(target.getData(),src.getData(),src.getNumBytes()); + } + else if (src_fmt == COLOR_RGB8 && output_fmt == COLOR_YUV422_UYVY) + { + if (src.getData() != 0) + dc1394_convert_to_YUV422(src.getData(), target.getData(), src.getWidth(), src.getHeight(), + DC1394_BYTE_ORDER_UYVY, DC1394_COLOR_CODING_RGB8, 8); + } + else if (src_fmt == COLOR_YUV422_UYVY && output_fmt == COLOR_RGB8) + { + if (src.getData() != 0) + dc1394_convert_to_RGB8(src.getData(),target.getData(), src.getWidth(), src.getHeight(), + DC1394_BYTE_ORDER_UYVY, DC1394_COLOR_CODING_YUV422, 8); + } + else + { + fprintf(stderr,"Cannot copy and convert frame...unknown conversion selected from: %s to %s\n", + Colors::colorFormatToString(src_fmt).c_str(), + Colors::colorFormatToString(output_fmt).c_str()); +#ifndef VDATA_NO_QT + mutex.unlock(); +#endif + return false; + } +#ifndef VDATA_NO_QT + mutex.unlock(); +#endif + return true; +} + +RawImage CaptureFromFile::getFrame() +{ +#ifndef VDATA_NO_QT + mutex.lock(); +#endif + + RawImage result; + result.setColorFormat(COLOR_RGB8); + result.setTime(0.0); + rgba* rgba_img = 0; + int width; + int height; + if(images.size()) + { + rgba_img = images[currentImageIndex]; + width = widths[currentImageIndex]; + height = heights[currentImageIndex]; + currentImageIndex = (currentImageIndex + 1) % images.size(); + } + if (rgba_img == 0) + { + fprintf (stderr, "CaptureFromFile Error, no images available"); + is_capturing=false; + result.setData(0); + result.setWidth(640); + result.setHeight(480); + frame = 0; + } + else + { + frame = new unsigned char[width*height*3]; + unsigned char* p = &frame[0]; + for (int i=0; i < width * height; i++) + { + *p = rgba_img[i].r; + p++; + *p = rgba_img[i].g; + p++; + *p = rgba_img[i].b; + p++; + } + result.setWidth(width); + result.setHeight(height); + result.setData(frame); + timeval tv; + gettimeofday(&tv,0); + result.setTime((double)tv.tv_sec + tv.tv_usec*(1.0E-6)); + } +#ifndef VDATA_NO_QT + mutex.unlock(); +#endif + return result; +} + +void CaptureFromFile::releaseFrame() +{ +#ifndef VDATA_NO_QT + mutex.lock(); +#endif + delete[] frame; +#ifndef VDATA_NO_QT + mutex.unlock(); +#endif +} + +string CaptureFromFile::getCaptureMethodName() const +{ + return "FromFile"; +} diff --git a/src/shared/capture/capturefromfile.h b/src/shared/capture/capturefromfile.h new file mode 100644 index 00000000..a02002ee --- /dev/null +++ b/src/shared/capture/capturefromfile.h @@ -0,0 +1,101 @@ +//======================================================================== +// This software is free: you can redistribute it and/or modify +// it under the terms of the GNU General Public License Version 3, +// as published by the Free Software Foundation. +// +// This software is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// Version 3 in the file COPYING that came with this distribution. +// If not, see . +//======================================================================== +/*! + \file capturefromfile.h + \brief C++ Interface: CaptureFromFile + \author OB, (C) 2009 + \author TL, (C) 2009 +*/ +//======================================================================== + +#ifndef CAPTUREFROMFILE_H +#define CAPTUREFROMFILE_H + +#include "captureinterface.h" +#include +#include +#include +#include +#include "VarTypes.h" + +#ifndef VDATA_NO_QT + #include +#else + #include +#endif + + +#ifndef VDATA_NO_QT + #include + //if using QT, inherit QObject as a base +class CaptureFromFile : public QObject, public CaptureInterface +#else +class CaptureFromFile : public CaptureInterface +#endif +{ +#ifndef VDATA_NO_QT + Q_OBJECT +/* public slots: */ +/* void changed(VarData * group); */ + protected: + QMutex mutex; + public: +#endif + +protected: + bool is_capturing; + + //processing variables: + VarStringEnum * v_colorout; + + //capture variables: + VarString * v_cap_dir; + VarList * capture_settings; + VarList * conversion_settings; + + unsigned char* frame; + std::list imgs_to_load; + std::list::iterator imgs_it; + std::vector images; + std::vector heights; + std::vector widths; + unsigned int currentImageIndex; + + bool isImageFileName(const std::string& fileName); + std::vector validImageFileEndings; + +public: +#ifndef VDATA_NO_QT + CaptureFromFile(VarList * _settings, QObject * parent=0); + void mvc_connect(VarList * group); +#else + CaptureFromFile(VarList * _settings); +#endif + ~CaptureFromFile(); + + virtual bool startCapture(); + virtual bool stopCapture(); + virtual bool isCapturing() { return is_capturing; }; + + virtual RawImage getFrame(); + virtual void releaseFrame(); + + void cleanup(); + + virtual bool copyAndConvertFrame(const RawImage & src, RawImage & target); + virtual string getCaptureMethodName() const; +}; + +#endif diff --git a/src/shared/capture/sources.pro.inc b/src/shared/capture/sources.pro.inc index 999bfbb7..f68936be 100644 --- a/src/shared/capture/sources.pro.inc +++ b/src/shared/capture/sources.pro.inc @@ -10,3 +10,6 @@ HEADERS += $${PREFIX}/capturedc1394v2.h SOURCES += $${PREFIX}/captureinterface.cpp HEADERS += $${PREFIX}/captureinterface.h +SOURCES += $${PREFIX}/capturefromfile.cpp +HEADERS += $${PREFIX}/capturefromfile.h + diff --git a/test-data/ssl-field-2008.jpg b/test-data/ssl-field-2008.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fe9c5ff3cf5482579ef2185b38e27a19aee0321d GIT binary patch literal 37322 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

o9TiB0N!lag z*&;e$6)F2V-ceb~1ZdVAHdq z^ah_xu*H8VBzK)MR7Kk44qI~9K)(OUABBE$?v7v8GJT-l`CjH-Wrjy|s+7lGC$0y| z=BaTia?E%q?lsKkR`A!2ZxjAVVXa~ z6ee6$CIqc994%k4)2t_Q6}%BzJ2S7#RZq~S1|tR0s}zTPo$|jEa$x3-{IVAMKmwz1 z9UEy$M|Lc_`~fcZGi@w&MM$JpDdpGDG&8q{tH7-5sBlHBD`sS1)zuYoUsCLc1(?3r zEUsHpS0pqN9hv4o0PG3pTPMaDutirvH|O0+>*5~()`b5d6ZgTPPl#C=+EKTq6%=ph;_^9fA zB|UmFnSlbfH%!VS(-vBoQSKGYCI)#`l^IxI#af2NL{*?GR)Q)z?$g1nqJCtW&lwIkZ|f6QpYVRytY}q85MAz?pi( z&0$bOv~=P6>K!%Nptw-pwdP!2!8hF=NEliEb6)dcYcwaPBd~?%>zx>*X54&m2!Pzy`pNm{P)Ehx~FPE#UtkqzuMrsOfsPXjgniFy<3r2Jv)JHv;9@OVZR)H zzYb@DQhvWQEl|_eRrgel+2H*k51#7P~bK zN*G>zxWWqc*Ym%xQs~pdRj3Q=E?km5w_Z!xkeE(Z?29Eaiy6wBSkWfEjN?ZxcTtW9 zQ3#G%cZU~u!z(9ua50QEfW4ZzJv=~kWV!|uW0~24Trz-4Jlg${w&V^Moyth*)-4+O z?6m3ws#sU{&;DNAUfDVmxHtx5WD=dq)f!d|jl(JlpeF8AFPD9VVLXIWJqWhC5W4mNGt)}Ar8ny$t%PS{U!JcrXDaZ2e zH#NtSeC<@;e4@c&d-Fn{e?#2mwN^|1D|&XBZG?l-MYigdf`LL*nW{WZs%`D(%Qtpz zaFuqE%`@4EYyVm=d~Tt~5l-D%oz7wU9{{_W+Ps;Ws&o0mGNo80e^Bp0*7cOMNmurd z!QtlXZY8s&(~uM5tw6i=zSPXjAAaKbXK&*_hZu*)Pa+|vU;pG@@*$f2$NHB9S7m=c zw$ktOG-;=ORZi+VuOmv&8PspNL?qlfq9Jl-4}@L0QB46!U_Q{Hvsb$jU%@I#&xS(f`h{Dlfu`WJEGd(uOUHn!SRqdlF5V%^(+ zrE0r_wA6rEY7sYnZ5Szw!LAcCqO1cpRVNC5NkkrPTDHclxqWwrg`MMU_}^BZ%gi>d zJkv|KmR>s8G1KXuo9rqEJHRVTq{nzd$V8go9Us^{$3&Oy|9 z11&7H+RG;c$2#xvzooW~Rf}D6Q+-d&HEjC$Lg7}p#wRz_QTzv>1r~d9Qm`h3KuvJy z0?^O^Gpc8jy;0R5ICbkaGAFdbQtaewh}6^{z-j~e?JCFRCjY(o_S^VZIhv`ye~{9- zoCbw=nCta9EVe8CF^5c&EP#G9_l7^(2Uyy$3YwWheiAoMiTKNzgzuD(f>>}Jf1~~Z zcwr#%c9Zw7e#GFEc!V1+h#PvVenes73nXqm*<=@#iB2aAFT-!d7%v{rKRoe2rDn+f zK_{O-n%ux-QTc@@p-oD%Ln9b=44l)TUA&ghA`ImEvUG<@K90(d!AYW=t?9#<&WM|I zpk6$vKuA*Np?B=$=a8gs)E}x1-@*V(UehDV{E!K1&KQ~>>ech|BEw3nGS~SOED?w= zL=N42sUmu&v&WXqnu*-=L0dPK810K=HJPh#G39|qVgv5VI&c-vULbvwWsvD~UM9_q zjZf(=NjDSS$6@V`UydjLt+~!>I!Pq2Tg@mD_qvg!7@K#W{O zmokv?b#toQ$s*2uP|l#wKWoXo`7(BxW_hk5{X@D4AD&LtxbG5gywlam0!9faXh>&o z3%fr=E!~jsNg8)r%@nIV&-T~w>Z!430h1RHapI1)w}O3GVWKqe&SUWwymNi$Z)vzE zOIcoLFp-!mm@b1_%oR^4liERZfcz;kFDVdC_RV^Kq6KqNNk_O3Go3S8Qi{eH#QX{5 z|Bm6n`oKo9^f`${BtJzZEUvgv{K2*8n57Sw-cG&pH`P>*0h@(zC|~VM!Vm@-PsQ@g zFBa|QWzNT3ICR1(CSf7Wr0RxajqPryrA=d&V24r{R9?jS#)t1jIDL-WE|VX3WK4Ux zQE;DIv{)*VFMsna1#OiE`DKIo@_qMO!;;h=`w&i^v5=8D0Y___WUmAa!aeEWh)<5Ai=qt1j zOsnV`(soRna^sx74_Ih2A?)#CHm#nyYOc~w+hghNO?(6O>Nh4K95f#UthEsPYb$rS z{Q;n8y7o-dhB9;KYbVNU+dua9TDH_T*Zfw<=p>qKr%S8X}Eq|z&dmM|39kj{Lt z6?Tt*sOwKLJ;Mi&mk#<4g@6*b{X7)&uCO$YPq0Mfh6qrlhJlYhM>GrFPIk`YfyUp4 zZ(-s!?y2%$74oW_KM_Yf7E)`a`vbKdRsvfUmo5ojMOjpdp%f!!TN+BW;~mt}Wt9f9 zHK&1*{aR%NfyS*}qMW^VG1-^#)AlX1?QG?gHWRHTk)W7#R;Ce5XZEngM`t*?bEsqDb7bw>3s7z_+4*NG`K2Yqpw^QQAC$k#>#8U zUom0#dE z$xLr4G4P_)qU#T!6xHnb636^CE9D$P@Hy_?txa){i)>3Dldy^z*UGRvTJ_BzfSBn8 zojgX8UxtyDb>@b{jLAIQyvhExnxOR}834Q3IOP=cysj zt!N^5CPN$VKB!D$ciA85%tnhV=frlaSSwqW-NauXRtVjh{s5M$-=JRac1`-2^!NvYaMFYD@|{uTCj8Z6Jl9KcSCF3FLR_sj4RJ^FtD zC(xz2hZ7u)FW;!n-{P3(lB>PG4smTUUL7F(+82;}Xq=hJYv^;0c1!wY6YIT=8w%BF zJ{gikw2w7!EEtuvG5A;=dGyP=nfifSB9njJDb~!d+~sBF!sggZ$XIS*A+f*!F+e(b zs-3R1omL9nwO1jsdSOSFdgu+N z*7n4FA00dLAHZRW>QS1`;`$4?fUesM;*KJ&*p8Zu-QMu>sg87Gq?Ajxw7C z73l6{_AJw%$T1T^0^_x0BVr^%Ny6Zcm+p1{T$>h$+y=6t#SOXHD!>EH&|*3t6VY_h zEoVc|C8^R(=GYv^`z4y}_DfzJR5NCwK+N|>homyP?tu_TD-&nc33%L0rFi4!Mu>D1 zDEgGW_Yi0mT^Q@a3tBWGbS8QjQOm9FFcn^F4mBZ6|Ei#hZDv5$!-i>_I4Y2(7fB$u zmEi2Dp*~7$H>svoZ0oOrkg^Eo^&hTPq0cCuQykTgnAlLmUMNb?`8jd>eV)E3aW{|G zi9V39f;f<~cj`c3;<{cdN99MqzFwY53B4<{*X`vw2$b2AW5etISm)n_RjqJpxpUf~ z;9#xy;PP$J?|_kE)vH)X;aI;-U=nSLpQA`Vn^3@ztGblr@L+zlI(n=jJ-tLivo+^f z6<_5LCnfc;=bmL(d5^4-a6+5Zn-tcYRV#4~0kr39Zuc>2kFz0g)be;IxjI9i#vC zGttPwlV>zTE!V0}h<*A@90$sCuR^3LT5F<$fz$Up45o}L>1=20Jyd1E$ z`}Uh^L!v#T=eyB-?Jp%^wEMVK-9H2iXdSG}3q6_BU*6LWsd?ZbB)CW$K(TAcSPJG-v^ z9wPlix6|$6`^kD|4tD*!!+3h|_!f#@<8fkUQ$5*>+7smWq)rplvOvysG80oqRq%+A|kEx-Azw%w{uP?@b)}& zW?^I~N@kx<%B88c+!MB25Z820O zRlxZl9@Vz7A2aEIQ6SCyJ>=v}b{U)CpUL+FgCeYJx;ioSu@Tj;8P{cs^FdqaqeIOc z4gwvzo}SUG86(P-WiIyZ3jvk%-mWlhT7J!0Pb`AI5O{ek0|80G>+!n zb@s7E`;lMSPR(|WWu<#GY3AugxU-+#RcH#i9=g{KYuyg2K^sc&L;8Gt^EadGb>K!a z@Jqr(T(|sk2@QOdIPz@R*9pa}Wh!0te(G43^YR_1_yHFe(bAUIr|=%E#I|Ky#WQ>i z#VFToo5%L=aB@(F$Z9}-av;g>!oh*!b#JSXjmIAVPathYYAt7;gn$*}WDO-LiCI|g zYbbNvMJ8{(VL3gv7Ou{ghwEedh#1d)o0GHUVgcxus3O6KjycNki8`j0#EiPs;4>q( zdMP&7ps4t$V?Q1tCT0{RKMUL5J7LsVOMUzhsIE&I*_hA3U74@QpN}!bS-)Y%P15Kv zf2cjyW6q$X$^N>ei6B0PSjIZZB;;R!r&KFn4_Q67P+JNYAvaGBwvZ8WMBm3CrsS*xZpH9cgjET-%YN(=#5o2}8^zzdV<&wSdXrMo zDT*m$?dk}H$*{@tCK+rDFjNNR5lp7DN|~z&xa6RcPOsVETj0+a&(z$@zQ-cloII^n z)w@2h2(vIoLFY<7#>tlm>dZX#t~iVgGb12@ayJ4Y&g>jBAd97~TJtTEU2 zLN|5VMLr98ny)NMXy*Dn>|Yu~d~V1F6{(#D9rv`jPJ%yJRs<+Xry0$;lM>nj6 zD6RIuT|Zhf>@+^H-6_1cwV4;=KHWlc_`#MqsT4qbgmE>BJ-2YgV;);2MUN-L&S#&+>os6}67e>7oQ8tcj#>B6XjOR|k07I@3tsSU$O6Q$ zhrBh-6pgZn-`(i-4yjm9+DaTvYE!lkT{UR9Yyx`=eZ zsUwY&HiV<1HUENxVe*kf8d~z*EHQ4wI_4Mb%5*;R%5=0SPyjO$u8o1{>xc6qMcv!< zSCenQVoH9vWoVgr6}f`vOdB&(8u@d$pX8txj5_&}iaHAuswKhp8fhI4Kr1VUT!KUg zonWpL%EgGlWEXAT5aV;5l8s5y29(8>OPAGLvJ15JX0vRm>H~~I*3wLAvxF54`fW?M z=8jAI_c6E3a=8d%#04g1+MGqgmyD{>^$D;J-l$x^v8jIP)p$Iav8EkE;hf0^ccw3X;?_7At`+gmeH7GTK042lrDHKv`=Z-ZPNo8ow&Q_({7CvnX3hiCiwZ$MRtg?+4y+B z{+Mp8n#@Iu`P4mmSKGvkSFzQm;n8ka+r(cm^Emwp1&!sS*vDb(7SYV9y5ruw%CS8% zSWraSlN3!=!;=hfMr9#riS>ET2(`}mS@n$dSTukuqQlrQ1l3dxGn28>37)50=n<3f zWB)rx=q(v(GUQp^m?Vu9!I%CnzvBIvT9LqdpSl-1$a=9gDW+7daIDfjm78Db;y1n^>QOg)=JW2UZ5 zZKix3u3o)iFIzc1KD{2c=J|M6`hdW|i0ZY=o-E%pzfb4aYC+H7kn$xy_(-b;)2LFa z@L5azFUTvBG>}`AI1RseGln|8q#bWE3*dmB2`!tY9|fG`{+aMIW+WCxU>ZR}1PALY zIOCudOCEMDeTgMwSItUZixVMZ(3?>r)IT`YYlm5Hdn!n%3iJk_tz(F9G@cu33z|gA zvT*fUNHL8$QS%7S`D9+JJy>v5mQ$@0QjyQ@cciA&T2X~OKARA8f<(fD$csI6U2sr8bNtOL{M1B$eY;+eu9GZS?cLq+q~U|RmR#+?&HfBk z;c^9yf7aObUTJdn(63anA>lPqa`5@QDrPNV#^9pe;Z+jbJfHu;=4-wV8g1R^$GoAg zX(lV7%TwYcdvvXjCRw??F!^FQHxHjZJqt3x6?ypo;a&eKP?SWAAT@J&Ih?~pik z+w_H1$_kCnemB|a&x&;pn3Js_{f+9Jhy~Aw=o!8WY#>@JbWe~-hB2p$m~}=f3d16$ zqTv$%yLR)XpeUmn07hH}QBxV#F68FAjq zempDvun7iG3Q9pkmm`ub!oV1meERoS3I4;JuQ#u~UPWlP~Ma`B#;pEh&V9PICL@P1uzua|YJex4ZNv2Xo8&vg@+j~rYKTz$MgeB}(U=I=3T zqY}}xS$zcQRmTr4h3evX$pZ5$MAS2-XNi;)1b@t)aE!O3VBQM8v9aHQO7$O&BK(bv zB{ZtN(jQiChDztjOWcHX`T3RbzZ2`Wvb@ENT; z1hKSB3VO>Q`As>C*m4~tFl_Pt1l8MI7O^Z~UenV@9zK;X<;rRK%KjwfTYo(oc!@e_Njrj*eV8=toPu;$6VxJj6=s3RE65NjeBuT;Yq zgFi-bIDXBq)#JZ_Y*l<;4B>Ign!oh!mCEs*?J{S-mX}$65>BGjq-d;O31Tv#YoX{THdmL(N#yg&?K7YL)Rx4msWcPU>$=xPf)_aW0|Hul1 zlWnBoSZqp37&nTP#PHb=+QMlztleMA9QR8t;^v6_9J>W=<%w~kKHP>S!UYcsmqFqK z05Hp1dC_k-hQg3CBo7Dc@B-(Ahhv4z5{;(|-9ZInoh;R(?Wm0siD+U?Hq%VYICM8f zTo2@~>|@m_eV#46;nnR)^c6e_p!}|tMM;P_{W&7!mGGCv=E>;nCE1ne25~oj(L65N&+zgk z#gM39^#N;N+!D@plV{&og|O@_dfeKJpstIw?{F-5HLUuFb|+nNc|LlqXmK3=uEM&^ z35{9EQeu;^gQEFLvf(zXcN{Egq?+D< z!Rj8$o+;oMO-41i{?v{UPaP)GXah={NUw@#k9gU6nJ2wbQv&}+y{k*!0dzgvRAuG z{fkeY`W*$cF4bBh1$?#RAHdyM%FScK84iIFyI9PXY2Q0Lp;aE%;Jz3qX(349HR&pG zf}|&{at2zB>}mV<@u$oK zkNv4jt-z|eH`=*|Nt<)J_=@~p^7Zs@bd60;$D0)rN~Fm7v?xEoN8T-+)+=kvTNa;U zB=J6~SqBORK1KM|Z^$)d2+s-WMYUew6tXJyVV6pDsF%KeG8{8ktm#w2?&VJxQq1vPKW-QeX9603zl1LK z(Fbq$tdRRs^Dl)WCB?ltV%!Tm4_iKg@OSR^1Uv_4)F-D;i@8DFi%IC*VJQg*kdVDS zhpTD^8PVkIuo2LFt~0gq^v{R(Nz)UufJ4*7K+ejSFBv-(4euM8Fi8CMKaU|=d)h(X z&SE_c5fNu+;p9tqj}yz`^R$~mVGz(i<^(M3@xAd!)2XBnzRdOQI^bLsTRDAYfwB?o zPxc0ABuIZpk7#EN7U!HxwA8n&E|zR_Pg8J&69sTe*rBa*+Hm;7NJ+B-8l>PTM5j<8 zR(|6~GW7;0fJdhNn?I(Dd7`nk>}TB(nswxP8Z8uYS^3Y&G$OhmPPta=o_6dv3w+rgEvZ{un@&W*kHs&q;RIa<}F1gBU!{xi|?eu=%*qE z#)Qq!f8}M%Q*g!l(SGN<=3-!0^2M`Tu|?MF6aD=oJ$-f81@B|t5mvp{1^0up&Mq6ZUmDy`g`b&uDoaE)H%4=UX3y7CHhrGcVcF7s%kLGC@#t@jW;^k>)%L`}duM=Wq8#jJ^c``$6t%qI+;j9 z{u7HeZLGxy=w{d&1IG)Nj3UOsurKTVPGuG>T+FGL(5daQHo;|{aKoCtQw$0x2Uv)@ zMW}2MKE&dpA23liAb%R;xbh2qmd_5Em?Yk;pA(jtDm7@V7gtA9m~gaNelK(31#;c~ z0niy;9Q(CbZRVSwx^52Bd3HOjWRqghWKMJmf+c=#F2+G@9Z?VM1EK=&Ut-Ml?*_80 zzS4fRYS5%f;ckrOrAt8J=4VPTpR6W^H(@hOmOlxi)zloQUzg*W{4paZRqE!fb~vA8 zlpR8rNOzJOXyB0k>nsO{r&{Yiaj@o8G0E$|d%^+x-aXy?RgE@CX>m)KBtaMWsbbk{ z{|^9QMZLM}AT=nRlyRLv0Id}uY{&1H9Mhm#qqn;|4LLj(F|Yd ze&vcz4z!Mv3I<-i@EFv(IQ{;j5TaE?-lS4u5WW2*o!3JaW?6@VZ`C24J3NGbmC-g6n-75<$C8B(8szq@aZ6zkhDju>0!vob7 z3Kf74Y8`=*iiU4{)f_sYLF+zi+@U|Sc?j*DJOhRs6}6uAsfap?Mffbh1_fnmC>W3% z@tLOWD{O|fRH?cAaTt#t`#F;6fJ7o>EC6U^QsgX?>t7Y4hG&;)5qKrog^_rS=s}2p5rgr1$ zu(%lM>NwR;ELSj$Xo4g?%1qJocF(4LE}!$&7Jijf5M}I0#uyUqwt?7@DU>w%Vp^ej zSVwxscCpZ)x+qI&I-^od=Zu?Yea@H{mzV=_v^RRr8)Q@_A|*^~48xXpvUMI(Okh4R zGHoE`4%G+aKN8^qaes(0=Na$g`%S0edVak?%@=fWZ%a!iFxcUA(*CM)6m$6r63T1zGwe#kwhRND9?m3tN4 zYt&Bq9)8Pg&JFRhr0T7yada)BjdXd(I;fS0EVU{<+8crNE}RmoIO;1^w4)R>>!>8_ zJ*gLfhev)enUPQiIZEToJmZ5*5f-w9xXO4V#uw)=h*>VMA1x&)5n?5N9>1 ztewMz!r$LusLO3x#3PQ0<5q_U#l@ayMbUJvnC2R4V#IS)pwP4K7t zBEU3ToK27%uBzu{V@k)x2`i?6>D16k0qdD9&yEXeZ9*B7){q6GpvjCL&{Oy9sNs!y z*EmJQEN1E;qC)G)wj|FBmF@69-oZ_H;A71Zjh?ySEpqBW8yvzj48 zMmF_TAP7h>P}AvBetG5dU2Ffhi_p4_m;ZfW0QyJS*7(4}kKB2xT;;+vQ!6(cxH^hm zhMReTt=;9H^uX8qit1o`-hBsx_e%mF5g1Zm1e34-q3JWz&hx8eRRw_>Aas@F`fns?|%GTobM%X(b|VpsrYD+{7U z3asNpN&v{pM}P5m!6ZNeT>w* zts{O}g#?=7>hzSzWyW9iZG|S+^ZI;?ZkGEty!zvp*w`gelhZhh$q0o8n;Vi}v|A}Q ztSJly4cAxHHUgb?1$av6Tcj`YoU2%>}({= zlvx*TrGzjX-Va&Ci_55yMv0W_nCU7mhAf}!Vf{210+H@yolZu%`d;{CSS+5mzt&0MZKWc)Jv)JvJZ@ zAt8MhT0*Tf!~aIpR|mE6f6)eQ@dCxA6u026#T|+UcXxL$uEpJp1P@l+-QA^VAw`Ni zefj?0dw*mno0;9o?A*Pd`#I;_b8W_zw(q##A2n;3DR*jG-o`&YMaNFEj|%%(O$21_yy{vG))OP(fH~}Q?ZJlW zK{<3+H~OvjB!J4#)|6wxG=+5qkX2jpuhj&8&T zj$h1y`PJ&Z!&b6N$3FhfauN3fp}qqW`VKb1yx8epIV=8GyFXIJ=W`6Mm-y`7if2m? zc|uGwv0UpLF?VK~AJdEP>|^V7_g26P%ho@!${6$pVKwh6n7+n;s)M4UW1Tin8Y?5P zY~gzVP*~~CqvVH)WggRG$<$uvw#H6UM#k3eO8jiDobt_y!sw-5Mnk6%J>8VTc(u;$ zJ-o&Rp8`wvAE{52yp}J`A{D0{xHG-{k~tuEf=jENC-Wd_lgsXMe|a9-2GW zem?M4RdjZ{`V=FhF3UF)6E(K3I`C2E-}^~n*#IIe}G}4#QTB+ zZ^7ncB4Z+ed9)%tk#`7sSO_g)kxVqjDP9GBkuGscvG8crJ-j|f#2|#i9UXq@d;R7+ zia}~IbJ#{1zKL_wy0D2b_%i|;5Rf)vyLU=#UbC3Es5yC$7JCV}uEN34Ck0cAudoTG z%9fHK^tkX&$pc2EPqZ?iF$;ai`jG*+cY0Gx=uB zWZP@IzuwzY^w~kGLg**HRy}}(gDLJS@Bg;g3fk%2gpM50~32BwsQ4|QQxmlldx&e&TVpRVsElK<9}(6^h63)`N}0)(Xf`i zq%LO<%wdjmYNMWCU9LCas}8$1iPmt zW6w{xLVQytE|3HESao-EMxxoA-YC&7c`;XPy!;iSu7eH?>$0j}n3SgfID$;qC)DbT zOV9A@sEPWO8caQy4nRBX4*N+_%t}?!e^- zJia|8yT>9jXmcvJ(laIYhyhr@N57K+or<%_lq-?A(-Fdw-YogY?Bi^@#mqdhKj$zsOaKVVdGSu(l%~)cTjvSI@ zp<^G+zl4=mf9%a0Fh)-sBZD*LHiPp$m29Fou?E1{9z?vh&%vW#&}GMPga>d0k~(m7 z?HQM#h&JI;j`*YBk!+-5iFqHg(p$gHY~hW2(*Q58gEZ$yx=SL_2#0 zBWI*p$JK`Th;Nb+U-7?^vFic&RvFfi@6o@a=8#OX&|}TQujyx=z!iS4Z-^R83a+w4 z7GMvopRy?u=b-e#_&_-ejHjT$gTk#NzXIr4ohfcV7(-Q&Y@lSDmByv_S$7T= za_rFa$!L4CrL8nnvlf<98%infwC9}D$x*AZf?uCr6h))EJV)yWaSPT#FBtEbU@t5i z>i{;^p1a|i$?NCH>?QfUbC1j^peX8s>-gKFirR}z_oUYa2QdbgoS(}rq6e{nvPdaL z1`5f-(hZM4ST_w#Bmx}nnkL%1)&S-f58sinSW%j9Ao8CKK;sK{vzTXZ4FnC0%uY;e zUY+FYUEQlklq-p*G`kf#p9`ywIX7)K$1z)f1dh+8sj#~jg3DGI?nH8`h+WuOu~bWV za=X212&7rwm!&!}<)DuJR%20D;@)C` zwb^oc!Ed@t(n<^VsN4K1c(FozJqU`flJSB%2;u$%#O?lva`JDaY2+1^J*;r{-1QuI zBbUbetdVTq zU$~q(hzG|?nK)Ef_^moHBf2c%>Ot`-Lf~5u=Ta0z4 z)J2=9SXtzpvxgI(3dP*DMo?z>oUCY=lME1u520khK8F|XU!4{RRT!l~vfZa>LUKd^ zeo$|1*hKOo=ar3qDBK=}7soXMd^h{7J<8Rf8(t>8HFBii@o`?3eKx6$>>QAK3!$#L zPf5ROH7uek##q2#S;YKf%nZ9l^ky7@=-36}R|>TLifM)&A{TlWZ6LO-6g}-OENIxGWXjT_m}~ zk&Q9sv}b2kWV}s7Qv;9a+gJT9Z!{{qY3kP!X{I9I%M{i*m|j0icI|)eK5QuouzpIZ zFzWiGR#d<0tmG;)yXtyU3yuC|tmbZ3z9ih)^|A#NNMlKL&nF9-TB#IPoHBv~Enazh zy!77+=lXUVX=Ykmhr)=&ySBpH<6ejzICmt7X zpjN(1yL=ORgTu+{PQ9~@nxDpTU9=WYxayN~EvC=osbcC~ieg+NGOX(4A0x9bL=xvX zGGFPo4P=h96a%jHb>s(zhg4gkzxfoapXwIZycst5`u_oZKJD2tZ3UK%^tD?Ns$5XL zD0^zEtkV<_TL%4CAP!L{`Zaz02l)Tt7nU9_Z=XR^OY$L85nUV^uRcBd-bBjTB4aiS zy;?dv#%y&kjeRjV31<=ELl=Cg0%{iWp@iO-k8xq}z^Ks{s#Q2)>GFE~5?~zm4=Gn_ zfjPjB&wvbj9`SOQHuuf<%e_WQCVO?pdcT7$u;;%}wNW(DJGs;pqNa!G>U*DpU{Hd+ z4xKlpv`8P$EL-9ls{d#jHzJp@6n1B%H2_l$tBwDQ-YUZu98<(HI?G_!9CUEs~1bC=g*> zVJ%o~78S0iNzk@eePUb&Y}SZZ1xTV=LjDZPbrO1FxWrGy_!EUJW0oYr)Z^w8G!TtC zHxnijWE2*y4r;!{dLyXKb?AMW}GZD9QqU4VVXk1 zU6tu+b-!GR^EXZNyVlok1QH3J4RW1tQV&w=R~&rPL?bj+rZ7Qqi9jWEtLm(@xHKqX za=R(Xd8|wRoEnF*sW@dcWQEnA@Uh$ys~AVp~9@Vp#@Hl^9OpvlCvr&?ukT7ESf_I=OH z_j&XNU2d%9{GySUe0o1!MR4Fvy~gmHx_(S9 ze~Q=aLe1&bIHU60_2%jWkLye0w-_+pHDqToi}7buY6j_%)9dd?;;Ty@%=zLK;-mk? zXAMIgE={^j{TyC6F2gr$06mwQSOZd~nk54EVAMeo&Lv?qVsA&>mmi1?M23Th5dNCd zU~I&nsE9w=;DsX)R^b#(k{3VTkvZCj+(yC(a~vi0edWcISkTHh)$3mds9YRM$r@$7;V#frIQSCgax`&CQ{DHhRITooGWT`gboVbr*Njov_giS7Ex8x zZs%qiXIzbUoLmT2M0j$x%xmUnuHYPu za5wtO*aMKJwFV>M)vDM5%_*p1S4rx0+Q5DqT(E7BalqjxgXJ`Mm`3cJBQWe_o0nt( zbRxD1q|@_0zIZdq7R|0ziZkLf?OMx{&(WhPrI`$WdQ5lAq?U~u+Es9xYMcp+xS>P0$PMoFH==m4#XP&0JSq0 zOyExrS%gug@deweqCP1fYLxZg0e#8S&J*bXr@qc!GAGlqaNtw6raQtl>~oljm14bN zKYQ?$wG^yWiw=U@y8*0G=w*%R&a(wP^ZipKzGxdt=0fa)sBZVB zc+Qf~;wZ5V<_1GTQaVHICK>#`IIYhjaGP+qnfh;p%J(YU70XocyCWK8V%8Z`M^AZ2 z<+K$xY3*0s(|x7-7(fU}GUF|TNN^#>b^sN`TdOz*Z%`1MD5IV!n}PO-4)waAPieKq z9i@K3)a#Uul>S>t$=2__naM$nJ4bASW1T}BKcF9Ix*PyIzacXN;V4?Z{`VU$$NU(Y z0}=I5>!=J#F}Q={QIIn0$C~phh`JV}*)Yb$(OxH>hVJv3c+-a6QPW$WF|o6N9D z|Cy>^EuCcUM_)*c z>g<&>N>`#Xj!Q!MaovL<33*D_cqMBd^8oiA2y~*7MoLSBOS+D@-nuB}%C3&f3VdE3BJJh%LdJ+#q; zruelQWkZVQ(RRph($vcsA7G_!5t&eSx2bf z$?tU3kNHuEf5=nBkwx)Nq(*E4NSc_kA#a<@!A~;ygiwcBx5(Cn2+yUo6Sx`_GM5bi zhsxv(4%7E)25s~^-SDe(vteCY}{RCA4Y)kl(}mR;k3WtFD2 zY!WH<63aDRrBU`g zD}zNRle&?pjw8#_+_G{lw@W_%H--p7)x>YoZr%K_Qg@$LI`Fa4ny5rj|KGJh5@#*L z)m9xp39Z1jtCFyOs387ear)34{{$AsjM3*bNUBk|Bn;*ojXp82UCj<^icTiMvc+*5 zG5+z^ESTM>kk#mLCN9)CcIf1XxwB_W(wIwd@O3OILNATsC;WC%EP@2JsiLGfr36q~ zQIgF#+25bL2qgu zEMH&_bR8t{ zjsA05)Owp(W=*m^nlU-cKEJkRA$b|~Sv}7HK654#TM_Ohs%7Ygg!CCob!crcL>4y* zKdRO*lN^VrDy?|59^nSNMuGHut?V*(jRZ|0$zrkv>OqKyOPN-$k1flB=JDn*TH+>K8*+t z9KVKHKj2~g0v^%UlpnfP51bH%sM`7xMb2}=7cXj>NBwc36xjMW+?P?M8d+2jXEdkq zJetY(?waj2g_nf&xb$_8*j#?KWJL= zaYbH`8TH6=h4j*F(Gvz=nBrC^tK&#*r6OI1OoWWv$A2sAKIw$j`Pw=EN|@%nw) z7gGPE!93^~12*aeRyK<$j%+c9r>@j%x8P*7>bCILUkZ~J{U^x%y|6hwVNhA8PK5EZ znRhB|_c5ryXU`^QXL0jcVTEz`QS=V5DpDUso1!<&RUd8fc|M(+j1!45BH3lNeJ+ z3K4_#7$jXoIWbg@!e44wBBENTy~u#?lNAw6wKHfYQ7C1M&s8W89DpcjUH#cHi%I_5 zU+~d>a761b7xJnp!F7r8SffB{tF;b7DhQ;G5pNLc%Vh{0j#-GG2jG4lVL$~6I*mVP`tu+w^Poaxg;2pdi(FS{fM3#}4)Dk5}Ku%fKj5#Fkojc*qkB zvC(UoJoyJ09C#q@cTJA#QqJpRQE2erJ@eNP4QYAdsC?So=P=@%5pkTn;iS8cyFO~> z=%lZ59rvqKYi_d;UI9z&^fiI$>kwGkZTa;@9SAc?_zWI!d4_1dg^6xc)*ZEaE*z23 zean8N;WwOHknrf=$r>BKbnzu!V3>AZ6ETu+VFdPVD3DxWn%P*c2Bqy9O}VCcPn8*F zKMOIB1<5Ha)|?w<)%_Q86K)9wXs`t|0-NRUEyItw{oS2u@*0xWSImOaT}bhnAm#ez z7-g$^L6@bG6+N^?#AE+FU97_104JM-K=QhNarwv)?&bHk>4*d!!c7DRNuAAy-@DbJ z#p{HAfwW0MHjjIv4~dhP%nL@0Wusn#7#MY(*_>Jex{Z`D%a2z!4DVsGSz3JQTe}jISlW)goPs>1Y6OAKe;qnq)|({9+xS z#Jy*YWs*G0A&2Hn$34&$oED)6plMA>2ys%A%Vts~`yAp7hm2s`OK6XW{ka%51uk1D zX*Jr9B4&~Lr$gNNyArgtV3u9A21?VhR62GRMj{F_*@Q2Pa*jyJ5IwuE1`T>&(bdGK z2juj?deYx!<*;Vu;Pi9qYbAIxYe+Ccd8$D?v83)yx$@x*-@#a)?KOA;*yMniMg2yP z64`YRnL!Ad%|#2|pnm}RYoj;IPrX%vM4ADPHi?F7Av9H-kc$mA^IKS);gF+gLbbBY z$qu^Y$^_J?e>`hvY~KoLpmkiz+@GaNmLE+?%S| zh1;@nS?h~GdOIffEb(p+8Lyx&2C&2r+xYlaosLf>Kl*nm+O3XH5nMlV;&rKz|1YvE zNThYiYd>j|Tau?7E#A_vv&+6>oq0DjYk~0#ON$(I#<_0%GAqYx;-YDs$gpz2W2pmK z*qbB&9S+UM+OzoR&IspN`#UuFOS@cf)0C&J6;74u=M3M<9y8@MP8&K476-+M2~Mbv z%{5!tnMWgK$1?b&TEF~6iN`CHRHP6IX$c*1nZKl=!mb6dk)eNw0QGQ^*L&Njw+8SE zZ5goZsb$(i@`H~s4-Nr5g!N4ygMl%36oA+-O~`~HWW7J;$?V#xWKlQIzlnf8auwGU zBkolP^U4bSDdaMdb42vNa4C9cmy($gNKJiWEnD;DKQ8QD8%x+?#x)m_AcukmieSek z&Vn(*edICKrWYjmNAO;)lrt33^N2bdLRL$p+snAhM%rCd&b1 z>RX&by+z#|Jk)S?{9Q1_U~9@+`OdC%x~P9np&@Rn{0)Nj%k`Qe@i4fYEIT;A3RbRk{%MJT&`lE*_z zJ7Wa#CuAt3Brh_(f4o2SL&EK?~AE{olTdj1=5n^eJed1L$ z_%}TgM!WeI5#PS5>Do>;B4}k7FjI}MJLJ}R`92Pez^pQA6))Y;8<7%fEB7keQ&bOC z@)cCt9`n0JyoMErQdZ2Sj4-ovyS?>}4eQKJ!CdFsf7a=aVR-CF_!+dB!|}Pv2U5Ku z?QZ2O`?#KT&_B+yz(ILIg`B5iKUS`GdT6cinG%Yn2{kJ_HIQ*XcT@0B{(ag(hPQyL zlnuP)t%ls^5~+l@n!WeXn|A6 zyppb_Z9eFEy;#P={dWkkjG7Kb)6Ou~&Qya}801}~p^l0`Xn?0ifj`BuKp`v}$xCJe zsfa7JAUJ^etNW&0^}yfBx=nQJe?s_czs7$imdv@v6J?{aCooS9&IYKM2w(|^9ozHZ zja8*BS~sXNfpLnyR_dV+=l3`2;>bN4%E;|z1wE-|1_dGHC~PT=p74|LVve~?&*)2{ zExqvk1IU*jMe3G-e6j3b>T=hg+ zHh)GYl6!Uimmit7@~A_xj;l|jSEt4zKq;ZcFD#yp5tC_j`O>>`H9Hwh=beOWV_2?I zF8^9us-8Job}NnX&Vj{Jb*U=L+CQrdc-Z~7_`=(cz3``3MjtW9y~8i3yu8}`!zM2k z41T?HF5%pZc^ST1A``Or0<_c4R70^J8i|=)+KaSyp$NhwQHd_IvSS;@BL+jt8|gCY zh_X!Lg5Durvc}i?45&-d&de0tw1qebYPN{^g$W^>=*YU*qbSL;2!8SS)L$oi*D1j7 zSHEIRDhD@5t-^KSIs;{Nnc(nCw3B3k$;on??B)=lRsFlKP?EweKzls?S!?axW>QZS zM)5mNwD|VWJ6ekl`Fo;MrcJBa%3QiHHNklG#-}o$_3%$&g&=`>2Vf9qlOAUiKAUD1 z2SMtciELe_cNZW@!VNWxyogpY9uBS^)!Z8G3qL>|LSC3c{Uu2YO)>@Ph7cPXLSB>r z*)%MHBL+`U^Er@>p28_~R;-FP;k6tShEWtw=w+zTWmA)g7M!O5@DA zB2jMP@#%@C?%iv(vWeb4>lK27{Ci#V53 zGAxU`^WI9_VX=nqq<>tbs`uR4{}y5wQRFf+EAmQuNmNOf>pt6}bzSl0^0D?lDNih@ zVrNuxYdBS07@m5{^q_59`#nw8Y&G$_-KFtJ(PpU%_^}74qA4v2@4~OZlL_Zq_o_WD zJC$YyX2jTMa>S+YNvI(0b(p>6P4@gK=E9;_qQd;64OWF#NZ&z5 znC8mk%BL(QR}3Qs4C&UUpEBlJXf=MZt@>uNysoH%oj&YV*4i26mACEf)qAjk$CgqO zHQI^Rxa!Eg18eq~&xup?bAXGd%c?JB!?^ z&e%E@Vrpy;us|vQvK3vg4lft$JQnL|Y}qSK53g7&FEzpt0Iu1u2*c<^KqV6l+OQzb* z#&PS4!}VMND=hg{?bX%49=6h)E6_&$QO){GnJ%R~iY2EWDCC48*LmENV#-?S< zl!0Zg%grk5LX+k-(b?C0hHNJ`6QSk52pmh3%fPpaHGN|{W*1t9HhS`EZZRqu5~X)` z>!f^IdD_#YXH}%bF1D&E0RmVkZqjnKUCPAGlkM{l5gS=ni=6)d03=y^R9n+s%GP?l z_pKx}5jN3vS_;|mw@y`D`Z*ZPhAbbMOKTPauvhE(6I7C%2W;JUb!0RNs?79^9N4kE zq~_Fhy`XI?#Iyas8W}SMP~7CTl78L4mmJZ>W%YXO9NO z>k3W+QO!Dp`!>QUZ3^Jr(*b++Ha!~OF-inzAx8A6RD55xXvLT$(U-)dD~@sKqRapt zNKOv!nQ-FTOnQIgYwN#$Y{v53XtFYIgY~qTeU<_Cnc7umyQ!8Pj=qq!@FpOh&h6Dt zMDfj#2$j=?9)aeYI&osRI5(&KKoj0xXduSZ3zqT>v1e{}NPMN%b+R8>4R*=P#;*H9 zy!NDbVw#VP857bs?Q^b~V+(I@=zc^M(NfSZN50=00fzc{!)CUSl-j4#;dy7T=LFSU zE1h(gIPdBK0ATcRpTuf>SRl@&FUX=F>L0BOe%MwL+h&GcSJ^W z`Q;ccS^)#A;mkQ?>S(HRN>>vyj@fxk7$ZV7!#DZ3@f_>kiv4wsr2TO|Wrx4#@LKZ( zHX=z}ZFwD}RZ8z^+WVdZ%z)S(m%lCB3NXLwq@!wF+t>Oo)JW@Jg`T*#aB1XJ6zMu@ z5_cK}55yN+b13gNT4y(R7sg*y!4+4di~?gjIHVp~K=IR;J#>8+majF)ldh*)s?i$k z8ESS=sJZjGRrFXRU0kV6S#~3BK(^MDOBF6?wV^rbXv_XFpsh~kN%SAUp0EokKs-Hk zM|~j?D_Z+m=t^r?F&bXh7(YT*@O zQe!SOy^1Yv__mN6^xh|8v_OD8MsV3Tru4&Pru3r$1>iW;euAdWKq>2MsnYR#``$Z5 z9?OyF^nQ&Xo>$DgME|_hUzBf6rZC_)QzNkdM!++GhJ4c1x~@h_bnwFGA7BP%AdNBi z0$T+gt>T0DCW+21%=9kMW!n0y^2MK^vY<2+UTj-Cl4zbbZUIT|KgMp}ZR(o%BjsU( z64<%@&bsK(Vkwvri8U0w@sFWQ~$Vpw>UnN@PF$rR%Lm&n~levI3XIKmDZaBMU5C+G6-#J(Zt^utdQA!Uo`)C#c;w1}R@ z_u1!Aq3tO-J3$ARk9u|)T6Z~H81L}t(AsD^^Y4Xj7Dh5vTupbpkaY#&%YOLQccJAd z{*4Q=5s2Fk?HXMj`n`0R*+4tsi8wY@;TRNRY+_6}8l%V}Ijh6HL=?x%DgArx;*+I6 zL!8EDHz-YG0Xr%T--kXGRZ?deM;4ZMRyM-0FHg|cT*W~h0vE}-c09X(LaTdjg zU6n7v*1M8R^U3mu`uvYiodp%+9Z8m5s!AH}dA#yp{ko`MzkW>iO8$Mc6_5hC%Nx)E z;r(4=5#2?#;Ypr!c3*CSiozxwkb*97=5)AT#@*!Di^KdPSb7Cbla3L9-dR-UkN2V+ zE&XN9SRD103I-TWmgtHn2ftF{Y_TzD4yy&<*+2No4=-0_haK*`=iL zYXdI|Uf~LpvAwZK6lTBjFAyQp2Sjc#kH+?H4tDmeAD)8i3PhtlbxBP^%9;u$hVmX1 z|JBfu!J3wkHRSB>CooF2AJMbtrtIYSW~I2lp8hMJBw}ZZyufEgE2x~!`VHo(=4ce_ zFqP@}a-{Y7S(>?^Ns+||zA}enJ6w~;O4fR}c2g-OyfEM9le%I5pK<$_&uB+Bj~Sje*`UHuC6wOnRKUAta$$b;VZD-Aa27g7UDy?)1^R;HjTfp2f6c`ZLHZz zC&p}*Wth2VekITwVpUrom*u4m*1T(h*;3VtMr7`Cem{EMspY&wH(r)_!L=XePzM8s z)>T{1iVJ$^R0`91Jy*wC6<2MX{0EKw84HWWt84$c#R89a#eaqFrVfvzS0|_3i1wjv zocL+&nXR_aJC@kab8`?DPtDbIDa6!5V>>){@we6cbVpRJy!e5{fbLJDj5XlhT%*DH zzqJdoSG*z=k8j8Wi+0Dkrdf=27y`^Dl)P#dBU{$+;*zcQh~J%z3Bx`IH*tNfffCj; zi&;xiw8*PWlAFMPM+(P=iy%a#fWN4ao6IC{PbQ5+b4d%vp0$g)p|qcU;&A;|F)kSn z{b_D0q*nWEf%D+^`4o`pK3^$xjJ4bj~|)W&YgGhOs*pMVN@xw{>&sg zf>FcCovgQQ9aO_)QILe+vfVsXfpn!H9JLJgMn7z2XZ!nR5@=e##m+f*f~HlW0q?L3ipoTsuH3=x;;M2c)?q& z1XdOZgE1eQ;9?K2cT`63C-$z_nLvW$6 zADM0BD`3%c!W}webxi3inA5mc+<34X^oEIhM&5LB6TVm>e#D1@880)dR-lT02VS1}3s>O-%Mr&)j%1JFDFm z<0SGbVXv9FSDPlj0qz6~=WZa;y8o8ap6kUk+t9e){9r$Ayx6n#wyX6^dB`<7;~!O} zI!VRaPOj3{<6342F3e>zhvch1!{&Emf>ug`R-|xyKut6T41&SzMy~H`4N*R*f0-1T zRILqWl(a|jN!oHp=hD{0X8T!)U6sTH$0L19ExZOOtvD&9k|p@EiNUGuL6Jr~flaHn zFSVgcg6g@HLr#b6#-Dz@sw~~OJ-drqcl6iYDwA$^%TMbCi?u0`BID!bGRz+0Wts6O zw!+ zl=6&`+f0phZnN?+xqj8}>lpa&y){ucC^EkO!FRLilMH^{n`J}S!!-~`Ajq*PP&IrP z{Zi&Pr+&L;<;+mIS!SDvbpE9$j~TfL9tW!{50h{BsU?mLn+IMGdoi42e}gbD(xj~1 zrnM}{>4Pw!K@laER^bsg;>2DH?J$Pp3nszVQgdR8(u9ApHrS`?}xUCX$ut&VG%}rbUV(Dp_xdd7) z_*2dRs34M=M1V}0W|vg33zN7Hwy?G1=m$w>w_wrs?Y2Hp6%qj15<090yJA*1ps$ou3B0>tp}AYmcbg45qp%5RYmy zVtuEno#W$=#vm{IJ=8CqtE59*z7ixyE*n`k-_D_-zSs|@pRO6Ku53N0RFW|mYx;2W z_q*2Ym<=8H+qc@nW)1^QUiTT{T~72?d{?NMT2dOB>O>^Jj*M=$jYC4p+OnQdph|oR zYHSafzhsi8P=h;+f8s37+WRD^nvPSNkr(w3fL=X#%_>j__`R4{{I}tzGE2Xe zHR@wvDAqiP&Cn~$CG+tgw+w zo4|^RZTg$GQccu7dqzb-VB2b|NsyJ?Au*s~B$&KwweQuIPq(>->B8t?cA=j99O6CV zMRQMvec3IerUf1#B=K$7nGVFxHu#PHtMi_Y`*rg4k4j^X+sK$N8(895#;tsQx)r`Q zdDQvlm2xDXvoYE!h~Mn&H4_eetvev>m<9gfpUQ|%o4`J(f8(MiE_{{3xvA#3#j!!hZ#d;a698(jM94 z8J{BKzB5ac*D4+4y7OFuEdKzlVgad_;wxPfJ?9@b=v;en=C(4T)U}+{eIw0ZKtSl>&i(tK8-*dy z`C5a(f@$n|uJQ+^W-}+8TW9A-)+@`I!lOqQ{u< zYXk%XH{PF~4ug&hV(Y5eKHbi~GQac-CS3yYTApO~xIn3av{%nGd%ynyE+_s0oFfy> z{q^?KUmsFMl|hE6`ntm}dEybpK6L(_(L8a?;2?PPJ6W?mi~uo}Ew2AD$r z+f#&Qy8T%xv_xzEw_KtbsXARPC#)-`J<9e@aL|3Zb+UBhjfK|K_=a z!J+1ias~)UdFycE<4RmNAT{M_{((%s4(=~Eeak~50jsR!a3rc{0E(`^N@CE}_pA}- zGh2yVDKOJ2ZmM4!-FRAodZ|!Kqc2C}j2mj~bPVv3&Z24m%oL(2Y@JrJc$2mmoul%i z)WqGTB9XZ1vK8UH%=2Tzn;5%D>5<3fmYYP~RjpvX?H1EV1gU5Z6PX)4UZ(%(*E&w_ zOS;GZ)8Yn1cVMj%Kw3D~{Zm2UDFwga;YLNNX07ycBDw9y*=#H|q=;B*N7*`#!CSGb+b8J-3U0+!>$ty=*-S8rYG?w{nMAtwp5k^@`e*A&J zw<+4`5c1ipaigUNBRHi;x$wKHxYAPe4h$t9;V{phw!99RO5Kkf`g^_uOp}bF0yrFh zUx0%iHxUXkp!J&{@e8l4zyE5L&=34FT{?4$C2_FS{QS&=?a&Ew^TWQntl!GJGzfa- z_!?B5EsQFhd>L*u_v=@|MvZCZYlVx4=9!h|`g5Wn?ufojRF8<2&I8oxj{~_NJ8VG2 zlWowQ%8OsaDNH{9Dr{egHt{i{WX(`GK*TCzV0bk%JKT|S(vC@iNXxK#@G+3qp-paL zSz4-mH?MN!AAox1$=#ML!y;DS=)+vht9+8B_~~`XN%PL7Ap>_0wdu6(r6y~M-HT!@ zo_h5`_w^6G2Mr~v4VIe6(lt+F|0VAfcCceYC{W{>zQ0>@$F%0|#L<;CbvgB>is5ax zv5uS7rukU%kDdCZ9`Y99QI-d^?H|DML0dNx-Gpi4Hbo{+gnzU`?j<&y1FBHoG;IoH z2(Xbv*(v9(h&RxC(=*>F6#`+VsW-hy5xi`$45$XOTW|}4_H?S$hR2it#>nuc<=m^1 z*e)}vt@JP_Hg}r($?e4yJau_??@tV0rn^OX)ntKExZ6Y<9tLWaS;9D50f2IU^Cm;IKjvwSI&*@0rx_aq4{Sl2;{7qNKP9mkw!l*Wn z=`d<{to4&v4U%~X5$eJu(0>sNjeT2Zz2sq8X1sP00kR~+_8+6abmf2I{n~#Td!u!- zNrZti?9hAppaXX()pU-#|MC<^*$^w(Ln+2c-8fj6vQ1bzz29;A`?3X=OJm_(U{B8G z@5P%!cjXz)zaZWtknH47Z#zayEZi}#dT9>~D};$Xn;@Z>ze3G%k^?J-gzdA<>gAxsLtYgLsC95U+4HbrXY?r#?@rCjuaitGug*IA zS%fGh^@o9S`c&)$*i}vT&xbP(M<|Cb6)rYm-`a?qNb06Rmb8e_`EiaIPG54%P%5K5 zOaJ)G24=Drzaq=3FP~RYmh3=3kek!EY4h5ke?*sw71#ckqC|P_u;{wjz@9DGe#R-> z_R4bA=InaTD0(D)aArJ#a-fqXD1Jb6ZV?i;0{H{JxQj=^WEoasVr=aB<;~k+H(*Mq z+;|=<^@ff39;WkK$YOJ(Q2%s1nWrCLFD=nQwDD;5EJYikNz*)tDs5VTy7f}6p8d2F zwRI+S+k;c5rZ+j2bmi1kqiOqEeo3TN+1>aMO`_*4m($XNY~NWvhO%KX)GcdJ!9;l_7!udIFbtzhRUf30_bW1oa?qm~j)ad#MDy799@y)Kp)pKfqMPuf=lLHg?*cm4W4|X9LlV)^&f< z0;yzTI0KeB8Uo8B2|TLT@So(xx$OSRfWXZgu5T1mE}zEs1t+yc8V60T8M$6gr)?hh z3%nqyji}2CN=g^?Z~E7feBZ(tMJ%*ZFLS%y_tyC-!(|ncOBa-m?{%Z+>IQ1syOg)| zm>*W6sGBFNUgRx?9{0U`;)9~=3~o~}R${4co~&OTwoh9d`CU6kmT8pfrw)4RmLKx* z7NAN`i3=wMH60r-zo&vWs$S$Cr?Pu)p*y$(DPEgNPJ^{uDoaq|x@n=gu^l|oZF+FN zC2ooeuAu0$(2v)es5YNwiAJr!I@PA-z0;#Qj5kSda3`-oT3aU;d99hDgUFMAmC_^) z-TV9WPS5%pLGF*$x2$FvzLVLR>u1mNuScrtLr&wKii$<3a~GW;^>Q+sm+^=r~E@$raTJV zBg(sNYDrY1sNtX%&nLQMJkWYCubQ@^hoOYO;Ww8+S*If!Wu;s4O@Do3a9E9lV;u`O zYnSb*`>x6O?asA^k}5LaJ9DD?E-O)6Wb{D-=(Ik#iwC-wJy0J~>FNN*@*1vP#vk!} ziWfAdtDRFm*?~(m`b_DEm6pPaJE@x`}uS3^*f^Ld48}0CFf?hk0 z7E_9ua9C=R4yAFp8#7bpc<~&fE)q0^%nQ9q`lV%a!2EO?vyNc*?DqczH4V!0X-SLP z9QpW%7}r^ueUMsQWvcgZwIASl9A8(w&M`7?c{8U`&YHS^P1@~3tCmzM=wuKQe#o%i z#FhC$P3m-0Dmv5U@MzySa~b(BC6*?8b1V89E+6S4pIIYp&RT~JIw_@l6+W0=kC}8l zhaU{v4ID-mKQ|VZh93}1pD>b()jdjk8-+;lz9LPlDu`^|##yCix4GxMV)%P8;eJOB z{{TPB;nh@(z6|NSMP4g8#B24x$mg6B4*QHSaI><5m%!UNf}?rHCtLeRuU`8!X)*5S z(?nj@%jD}NsTD-@DaB8hOPKMLx;@WbcR0@1p&2Ij9&x(Z#=}OvNvPAOImzszuFqbU zO`q0}%;cGsU)aORn`yo{XWH`nmpY4045{I%#wn$#WT@hB&Qx&}YEi2PX~J=|qWsrE zs$Ek}>vP4rFltj06l0;0O%&657Qvi1PF(H6$nJU>RZdJzIsKWYdH#k*3Ra!TmP2dp zCW`Me%v=8eSi`xRj3nG+=x%+WKa_C(L0NrFGmE#Wrf97d(2`8H3fzlgbqO1wTV24l z9RNZAlEJW21;U=7Hlb}3nKTYt^)N-aK(`1C8;CO0Bp#zgkqZJX$oC@Lk8mZ?E`fAQ zpbf{1D{r9DBr|s+*@><89ykKuk0utSUTiOfp>0|;%2lUB5k{;ZFC)Af@#uDrEy72%KFqTG>j@rg-zB7| zVia|iMD=p>66;v-;>?S1JsZB3(^7Ty*q1C}0OSyIgOp4*1(0uIg4{7;OlUm-G9VvZ}xwmqg^x<}hMj}5D_E(OBzg?wF1ZD$D5e4fs)W8Uop zvHVXB<#loSJ$ksh7v`x>YSuhlj~sl0Yoi=8;Sic^NlN7NiQOCQ8M353mY7)p|* zkHa}iE-%pO^&X$7>E~`AZ|St?dYu`h+wOc=n~gec-Q8{BjHiLkA&ajbWl3{u zv|mF0G0T=0jk6591qaC-M|B9L^`6!}4mrxGg=8&ukqG=^L%AoYKpyCURGwmhO3CL1&608I+B`}J>r^6zr59ir>m0U($h)`QKO^HfUlF?dm z(xhdjpON*?59YZa7G-_z6~?_gB`C@(nm$b&8@CP>qr?1B3iwKVlrd@4N-IeD9xZKJ z+x)(#)P99MK8$K;&gl7Q@Ek}EdEz&EpP8A6jg~$9$$u~+0UwaaM#B?BHY?uYVz3!9 zF=E*Jm>_Noi+?jgdjKzBFaZz(wloqwg>n(eff-vty}@_jY&5cwRHeCOkyMdTq=UKy z)roFWH*xPQx0#0H*#c{ctJLWnB~RdMd_z8LbxC-(ZGDj>vDo^)7;1|D0O2&;)_l@( z@ocNd4wUf{^D1msw=Ai#THM%V1m1w8wYX-q1t+bJkf>(iqWkzat>lfDiPXO%#x$um z^u3X;;MMUopqJK1OUkHI#KF+12+26u+t1p)A5^_w%iyT+i@LLwnTd^VS(NRwx$fkY z>EQ5E!a*)r!JY)A&02GMK4Xrpvv;nu_C3DOWY-$ela--Q4>WsOt~Q*r3et|L%X44s z`!B@fxQ7*1l=)*$l=Z)n>PH09wDp%(dNrf^baT-4S;q4|%kzp(RcZ3nyZ2K){>?ii zubSuhTrO)0^r_CIV)oSShw@Cet}7RsP=bscqN6n3?ci;`rCITmewNYf{P^wChc9aUP^CX@V?Dd+ z(9rJ}O}5>-Xm!pk$Z=d}#N0!~*htZ@M;nRn6za>B+Q%%+Fs}!Rt$}j9=*rD>BARm% znRC~-mL($fsxjj1T?02nOOLVP?->|(?U?c0wuAP`mP2>XS9{s~F)Q>FjW_q2R93O{ zH%f26?9U%b>eeO=8d`c^z>-Xx4cHS6(J4!Y;7B$Bq7XzRu)qlbJB2?HeFC;589S0F z2@$rLq3(lmHx0s0nH$tZ$k-3Bi8U7fVY~4G?c_@W;?tsNN#2ugP19S2n|W7 zhGPjP?`O5m&$DhY#qh3i8A5l%Ra}*$;|IF<8e6+kjJLSdF9Ut-?~9>;gtCm<3lWuKy_r*%sx9cH_ZU2X z!L>4K{{WP7*6}%2e`=JWuAi-KnJTTNkZ`wb)cQZo_lTE=R^Njy3$=A}wpOZ$x%})VM1T#yM3d zO22oCrDsB|J3TkC^A#y~Rnv}^*PE(mMd0q#b9}1_3@uJvOd`{ZsV!1Q_pe!rh|ELu z-$wd|jcIKSUlBg;qrl(EyEe@yfyVJRYc-d}s;ZP)ZdQ6Gj`hd9MUnP@+5Jdf6sb|e zx;Sbv-t9YS>Tsp}q%o8-SkS{@X?Kb|vYV4lKO<6(CpzQ2T=c~yQ=5-67l*NUdO3AE6)4q~A`okqFu9wMX7N;`O1_EACtZr+q@2I+J_w_@C8_#+|>>KaxLZxrR2DX`SYM{s#|U zvUI7q*~vA%ndN^hTowl@#^t$Y9;>N2QgW27tXg{={{W2pN#TAC$|_U9&V=gIi;XID z+U5KYihEGvyk{429el?XR!_W>Y8@iH5%B(@*J$;6xzUH}bTzt;mqTu?ztc~Stg${( zQso-g6X=MS$F}J9MIo1%6l@iyNIt{aJctjR1>K45pGN} z2`z(5RxI`(4zA9SsCs!to<5RtZpTc>m7g?jb6k&~<@!N3j+w(aJjWMCQl$l>@iS69 zL#CIiUgavP7;5s8o0hq$5k!Ek}v?w}`0J zsomza@9 zKDA}xDG-Oz>ErtFuBs#SwsmgLAsO&}Ze@LrJ;oH_9Qzl`6uq(#`<+|xcJ(|M`{k>0 z5c$)>=YvPzEr+~99PGyHl7IU%F#Was4K6=N5)jB1M_|N+H7U?&kc5Vo!0195W*Q;r zLKy*}?vZZDKnFqR?xGL_4cQmG$U_p5*o$%y25DT9O2i;xqp=p`AOZWs^dSX;%W%hX z5SU=SfIQ9(6>ahL0+>+93{?^-IgA!DqM`2ukD&Be4h*ArLYUG?Lt65Cv=7 zBogmF@(|c;@eQA{TqYkh<9Oil^rK#amDDA*&D*xzULy~fM=PUNRPc1;Xi|=eA`qUp z#+@CyKRVNwBdxfkA-}N~_XOH*Dd>A#HJM|ubsECrYEn-}%E&{PQTW}uIL}cA&#~CL zvwh`x%hjF@N|SF{G7xm}7G_vdi6anlffVPe_Q+5p4JwljvAUtd!!-sHGeIUqxj+f*&!{P A=>Px# literal 0 HcmV?d00001