From a42905200226653142c39ebd057d157c5bcf15ba Mon Sep 17 00:00:00 2001 From: Jakub Melka Date: Sun, 16 Jun 2019 16:32:23 +0200 Subject: [PATCH] Form type XObject --- .../sources/pdfpagecontentprocessor.cpp | 220 ++++++++++++------ PdfForQtLib/sources/pdfpagecontentprocessor.h | 30 +++ libjpeg/bin/jpeg.pdb | Bin 0 -> 143360 bytes 3 files changed, 176 insertions(+), 74 deletions(-) create mode 100644 libjpeg/bin/jpeg.pdb diff --git a/PdfForQtLib/sources/pdfpagecontentprocessor.cpp b/PdfForQtLib/sources/pdfpagecontentprocessor.cpp index 578dc6e..8cf0f92 100644 --- a/PdfForQtLib/sources/pdfpagecontentprocessor.cpp +++ b/PdfForQtLib/sources/pdfpagecontentprocessor.cpp @@ -151,21 +151,11 @@ static constexpr const std::pair { "EX", PDFPageContentProcessor::Operator::CompatibilityEnd } }; -PDFPageContentProcessor::PDFPageContentProcessor(const PDFPage* page, const PDFDocument* document, const PDFFontCache* fontCache) : - m_page(page), - m_document(document), - m_fontCache(fontCache), - m_colorSpaceDictionary(nullptr), - m_fontDictionary(nullptr), - m_xobjectDictionary(nullptr), - m_textBeginEndState(0) +void PDFPageContentProcessor::initDictionaries(const PDFObject& resourcesObject) { - Q_ASSERT(page); - Q_ASSERT(document); - - auto getDictionary = [this](const char* resourceName) -> const pdf::PDFDictionary* + auto getDictionary = [this, &resourcesObject](const char* resourceName) -> const pdf::PDFDictionary* { - const PDFObject& resources = m_document->getObject(m_page->getResources()); + const PDFObject& resources = m_document->getObject(resourcesObject); if (resources.isDictionary() && resources.getDictionary()->hasKey(resourceName)) { const PDFObject& resourceDictionary = m_document->getObject(resources.getDictionary()->get(resourceName)); @@ -181,6 +171,23 @@ PDFPageContentProcessor::PDFPageContentProcessor(const PDFPage* page, const PDFD m_colorSpaceDictionary = getDictionary(COLOR_SPACE_DICTIONARY); m_fontDictionary = getDictionary("Font"); m_xobjectDictionary = getDictionary("XObject"); + m_extendedGraphicStateDictionary = getDictionary(PDF_RESOURCE_EXTGSTATE); +} + +PDFPageContentProcessor::PDFPageContentProcessor(const PDFPage* page, const PDFDocument* document, const PDFFontCache* fontCache) : + m_page(page), + m_document(document), + m_fontCache(fontCache), + m_colorSpaceDictionary(nullptr), + m_fontDictionary(nullptr), + m_xobjectDictionary(nullptr), + m_extendedGraphicStateDictionary(nullptr), + m_textBeginEndState(0) +{ + Q_ASSERT(page); + Q_ASSERT(document); + + initDictionaries(m_page->getResources()); } PDFPageContentProcessor::~PDFPageContentProcessor() @@ -304,10 +311,8 @@ void PDFPageContentProcessor::performRestoreGraphicState(ProcessOrder order) Q_UNUSED(order); } -void PDFPageContentProcessor::processContentStream(const PDFStream* stream) +void PDFPageContentProcessor::processContent(const QByteArray& content) { - QByteArray content = m_document->getDecodedStream(stream); - PDFLexicalAnalyzer parser(content.constBegin(), content.constEnd()); while (!parser.isAtEnd()) @@ -352,6 +357,38 @@ void PDFPageContentProcessor::processContentStream(const PDFStream* stream) } } +void PDFPageContentProcessor::processContentStream(const PDFStream* stream) +{ + QByteArray content = m_document->getDecodedStream(stream); + + processContent(content); +} + +void PDFPageContentProcessor::processForm(const QMatrix& matrix, const QRectF& boundingBox, const PDFObject& resources, const QByteArray& content) +{ + PDFPageContentProcessorStateGuard guard(this); + + QMatrix formMatrix = matrix * m_graphicState.getCurrentTransformationMatrix(); + m_graphicState.setCurrentTransformationMatrix(formMatrix); + updateGraphicState(); + + // If the clipping box is valid, then use clipping. Clipping box is in the form coordinate system + if (boundingBox.isValid()) + { + QPainterPath path; + path.addRect(boundingBox); + performClipping(path, path.fillRule()); + } + + // Initialize the resources, if we have them + if (!resources.isNull()) + { + initDictionaries(resources); + } + + processContent(content); +} + void PDFPageContentProcessor::processCommand(const QByteArray& command) { Operator op = Operator::Invalid; @@ -981,82 +1018,64 @@ void PDFPageContentProcessor::operatorSetFlatness(PDFReal flatness) void PDFPageContentProcessor::operatorSetGraphicState(PDFOperandName dictionaryName) { - const PDFObject& resources = m_page->getResources(); - if (resources.isDictionary()) + if (m_extendedGraphicStateDictionary) { - const PDFDictionary* resourcesDictionary = resources.getDictionary(); - if (resourcesDictionary->hasKey(PDF_RESOURCE_EXTGSTATE)) + if (m_extendedGraphicStateDictionary->hasKey(dictionaryName.name)) { - const PDFObject& graphicStatesObject = m_document->getObject(resourcesDictionary->get(PDF_RESOURCE_EXTGSTATE)); - if (graphicStatesObject.isDictionary()) + const PDFObject& graphicStateObject = m_document->getObject(m_extendedGraphicStateDictionary->get(dictionaryName.name)); + if (graphicStateObject.isDictionary()) { - const PDFDictionary* graphicStatesDictionary = graphicStatesObject.getDictionary(); - if (graphicStatesDictionary->hasKey(dictionaryName.name)) + const PDFDictionary* graphicStateDictionary = graphicStateObject.getDictionary(); + + PDFDocumentDataLoaderDecorator loader(m_document); + const PDFReal lineWidth = loader.readNumberFromDictionary(graphicStateDictionary, "LW", m_graphicState.getLineWidth()); + const Qt::PenCapStyle penCapStyle = convertLineCapToPenCapStyle(loader.readNumberFromDictionary(graphicStateDictionary, "LC", convertPenCapStyleToLineCap(m_graphicState.getLineCapStyle()))); + const Qt::PenJoinStyle penJoinStyle = convertLineJoinToPenJoinStyle(loader.readNumberFromDictionary(graphicStateDictionary, "LJ", convertPenJoinStyleToLineJoin(m_graphicState.getLineJoinStyle()))); + const PDFReal mitterLimit = loader.readNumberFromDictionary(graphicStateDictionary, "MT", m_graphicState.getMitterLimit()); + + const PDFObject& lineDashPatternObject = m_document->getObject(graphicStateDictionary->get("D")); + if (lineDashPatternObject.isArray()) { - const PDFObject& graphicStateObject = m_document->getObject(graphicStatesDictionary->get(dictionaryName.name)); - if (graphicStateObject.isDictionary()) + const PDFArray* lineDashPatternDefinitionArray = lineDashPatternObject.getArray(); + if (lineDashPatternDefinitionArray->getCount() == 2) { - const PDFDictionary* graphicStateDictionary = graphicStateObject.getDictionary(); - - PDFDocumentDataLoaderDecorator loader(m_document); - const PDFReal lineWidth = loader.readNumberFromDictionary(graphicStateDictionary, "LW", m_graphicState.getLineWidth()); - const Qt::PenCapStyle penCapStyle = convertLineCapToPenCapStyle(loader.readNumberFromDictionary(graphicStateDictionary, "LC", convertPenCapStyleToLineCap(m_graphicState.getLineCapStyle()))); - const Qt::PenJoinStyle penJoinStyle = convertLineJoinToPenJoinStyle(loader.readNumberFromDictionary(graphicStateDictionary, "LJ", convertPenJoinStyleToLineJoin(m_graphicState.getLineJoinStyle()))); - const PDFReal mitterLimit = loader.readNumberFromDictionary(graphicStateDictionary, "MT", m_graphicState.getMitterLimit()); - - const PDFObject& lineDashPatternObject = m_document->getObject(graphicStateDictionary->get("D")); - if (lineDashPatternObject.isArray()) - { - const PDFArray* lineDashPatternDefinitionArray = lineDashPatternObject.getArray(); - if (lineDashPatternDefinitionArray->getCount() == 2) - { - PDFLineDashPattern pattern(loader.readNumberArray(lineDashPatternDefinitionArray->getItem(0)), loader.readNumber(lineDashPatternDefinitionArray->getItem(1), 0.0)); - m_graphicState.setLineDashPattern(pattern); - } - } - - const PDFObject& renderingIntentObject = m_document->getObject(graphicStateDictionary->get("RI")); - if (renderingIntentObject.isName()) - { - m_graphicState.setRenderingIntent(renderingIntentObject.getString()); - } - - const PDFReal flatness = loader.readNumberFromDictionary(graphicStateDictionary, "FL", m_graphicState.getFlatness()); - const PDFReal smoothness = loader.readNumberFromDictionary(graphicStateDictionary, "SM", m_graphicState.getSmoothness()); - const bool textKnockout = loader.readBooleanFromDictionary(graphicStateDictionary, "TK", m_graphicState.getTextKnockout()); - - m_graphicState.setLineWidth(lineWidth); - m_graphicState.setLineCapStyle(penCapStyle); - m_graphicState.setLineJoinStyle(penJoinStyle); - m_graphicState.setMitterLimit(mitterLimit); - m_graphicState.setFlatness(flatness); - m_graphicState.setSmoothness(smoothness); - m_graphicState.setTextKnockout(textKnockout); - updateGraphicState(); - } - else - { - throw PDFRendererException(RenderErrorType::Error, PDFTranslationContext::tr("Graphic state '%1' found, but invalid in resource dictionary.").arg(QString::fromLatin1(dictionaryName.name))); + PDFLineDashPattern pattern(loader.readNumberArray(lineDashPatternDefinitionArray->getItem(0)), loader.readNumber(lineDashPatternDefinitionArray->getItem(1), 0.0)); + m_graphicState.setLineDashPattern(pattern); } } - else + + const PDFObject& renderingIntentObject = m_document->getObject(graphicStateDictionary->get("RI")); + if (renderingIntentObject.isName()) { - throw PDFRendererException(RenderErrorType::Error, PDFTranslationContext::tr("Graphic state '%1' not found in resource dictionary.").arg(QString::fromLatin1(dictionaryName.name))); + m_graphicState.setRenderingIntent(renderingIntentObject.getString()); } + + const PDFReal flatness = loader.readNumberFromDictionary(graphicStateDictionary, "FL", m_graphicState.getFlatness()); + const PDFReal smoothness = loader.readNumberFromDictionary(graphicStateDictionary, "SM", m_graphicState.getSmoothness()); + const bool textKnockout = loader.readBooleanFromDictionary(graphicStateDictionary, "TK", m_graphicState.getTextKnockout()); + + m_graphicState.setLineWidth(lineWidth); + m_graphicState.setLineCapStyle(penCapStyle); + m_graphicState.setLineJoinStyle(penJoinStyle); + m_graphicState.setMitterLimit(mitterLimit); + m_graphicState.setFlatness(flatness); + m_graphicState.setSmoothness(smoothness); + m_graphicState.setTextKnockout(textKnockout); + updateGraphicState(); } else { - throw PDFRendererException(RenderErrorType::Error, PDFTranslationContext::tr("Invalid page resource dictionary.")); + throw PDFRendererException(RenderErrorType::Error, PDFTranslationContext::tr("Graphic state '%1' found, but invalid in resource dictionary.").arg(QString::fromLatin1(dictionaryName.name))); } } else { - throw PDFRendererException(RenderErrorType::Error, PDFTranslationContext::tr("Invalid page resource dictionary.")); + throw PDFRendererException(RenderErrorType::Error, PDFTranslationContext::tr("Graphic state '%1' not found in resource dictionary.").arg(QString::fromLatin1(dictionaryName.name))); } } else { - throw PDFRendererException(RenderErrorType::Error, PDFTranslationContext::tr("Invalid page resource dictionary.")); + throw PDFRendererException(RenderErrorType::Error, PDFTranslationContext::tr("Invalid graphic state resource dictionary.")); } } @@ -1808,10 +1827,42 @@ void PDFPageContentProcessor::operatorPaintXObject(PDFPageContentProcessor::PDFO throw PDFRendererException(RenderErrorType::Error, PDFTranslationContext::tr("Can't decode the image.")); } } + else if (subtype == "Form") + { + PDFInteger formType = loader.readIntegerFromDictionary(streamDictionary, "FormType", 1); + if (formType != 1) + { + throw PDFRendererException(RenderErrorType::Error, PDFTranslationContext::tr("Form of type %1 not supported.").arg(formType)); + } + + // Read the bounding rectangle, if it is present + QRectF boundingBox = loader.readRectangle(streamDictionary->get("BBox"), QRectF()); + + // Read the transformation matrix, if it is present + QMatrix transformationMatrix; + + if (streamDictionary->hasKey("Matrix")) + { + std::vector matrixNumbers = loader.readNumberArrayFromDictionary(streamDictionary, "Matrix"); + if (matrixNumbers.size() != 6) + { + throw PDFRendererException(RenderErrorType::Error, PDFTranslationContext::tr("Invalid number of matrix elements. Expected 6, actual %1.").arg(matrixNumbers.size())); + } + + transformationMatrix = QMatrix(matrixNumbers[0], matrixNumbers[1], matrixNumbers[2], matrixNumbers[3], matrixNumbers[4], matrixNumbers[5]); + } + + // Read the dictionary content + QByteArray content = m_document->getDecodedStream(stream); + + // Read resources + PDFObject resources = m_document->getObject(streamDictionary->get("Resources")); + + processForm(transformationMatrix, boundingBox, resources, content); + } else { - // TODO: Handle another XObjects - throw PDFRendererException(RenderErrorType::NotImplemented, PDFTranslationContext::tr("Unknown XObject type '%1'.").arg(QString::fromLatin1(subtype))); + throw PDFRendererException(RenderErrorType::Error, PDFTranslationContext::tr("Unknown XObject type '%1'.").arg(QString::fromLatin1(subtype))); } } else @@ -2224,4 +2275,25 @@ void PDFPageContentProcessor::PDFPageContentProcessorState::setTextCharacterSpac } } +PDFPageContentProcessor::PDFPageContentProcessorStateGuard::PDFPageContentProcessorStateGuard(PDFPageContentProcessor* processor) : + m_processor(processor), + m_colorSpaceDictionary(processor->m_colorSpaceDictionary), + m_fontDictionary(processor->m_fontDictionary), + m_xobjectDictionary(processor->m_xobjectDictionary), + m_extendedGraphicStateDictionary(processor->m_extendedGraphicStateDictionary) +{ + m_processor->operatorSaveGraphicState(); +} + +PDFPageContentProcessor::PDFPageContentProcessorStateGuard::~PDFPageContentProcessorStateGuard() +{ + // Restore dictionaries + m_processor->m_colorSpaceDictionary = m_colorSpaceDictionary; + m_processor->m_fontDictionary = m_fontDictionary; + m_processor->m_xobjectDictionary = m_xobjectDictionary; + m_processor->m_extendedGraphicStateDictionary = m_extendedGraphicStateDictionary; + + m_processor->operatorRestoreGraphicState(); +} + } // namespace pdf diff --git a/PdfForQtLib/sources/pdfpagecontentprocessor.h b/PdfForQtLib/sources/pdfpagecontentprocessor.h index 3c74096..a00ae29 100644 --- a/PdfForQtLib/sources/pdfpagecontentprocessor.h +++ b/PdfForQtLib/sources/pdfpagecontentprocessor.h @@ -387,12 +387,41 @@ protected: void addError(const QString& error) { m_errorList.append(PDFRenderError(RenderErrorType::Error, error)); } private: + /// Initializes the resources dictionaries + void initDictionaries(const PDFObject& resourcesObject); + /// Process the content stream void processContentStream(const PDFStream* stream); + /// Process the content + void processContent(const QByteArray& content); + /// Processes single command void processCommand(const QByteArray& command); + /// Processes form (XObject of type form) + /// \param Matrix Transformation matrix from form coordinate system to page coordinate system + /// \param boundingBox Bounding box, to which is drawed content clipped + /// \param resources Resources, assigned to the form + /// \param content Content stream of the form + void processForm(const QMatrix& matrix, const QRectF& boundingBox, const PDFObject& resources, const QByteArray& content); + + struct PDFPageContentProcessorStateGuard + { + public: + explicit PDFPageContentProcessorStateGuard(PDFPageContentProcessor* processor); + ~PDFPageContentProcessorStateGuard(); + + private: + PDFPageContentProcessor* m_processor; + + // Stored resources + const PDFDictionary* m_colorSpaceDictionary; + const PDFDictionary* m_fontDictionary; + const PDFDictionary* m_xobjectDictionary; + const PDFDictionary* m_extendedGraphicStateDictionary; + }; + /// Wrapper for PDF Name struct PDFOperandName { @@ -585,6 +614,7 @@ private: const PDFDictionary* m_colorSpaceDictionary; const PDFDictionary* m_fontDictionary; const PDFDictionary* m_xobjectDictionary; + const PDFDictionary* m_extendedGraphicStateDictionary; // Default color spaces PDFColorSpacePointer m_deviceGrayColorSpace; diff --git a/libjpeg/bin/jpeg.pdb b/libjpeg/bin/jpeg.pdb new file mode 100644 index 0000000000000000000000000000000000000000..7efeb3797b55fc270c8ccbaefabceea6ed06d6a7 GIT binary patch literal 143360 zcmeFa33y#q)i=J*Ic+IWFhC1szJ&s%P)ItLF=?7kq)A9pXc4&0aFg6N$ql(ln<7F* zL{Px0hzx>7K_+n?Z~&QQR3-rdnO-IV6$&CUe!t%y&e`YW-iq@4zxV&W@4e4+lC$^P zd+oK?T6^AWoh8|}{#-uSF_5Z0uzJ7!QcIfVr)C{cUcS{9JI!kn{K`Z;{M!@HIz0SM z(Emz*OB^V1pu~X^2TB|$aiGM35(i2gC~=^~ff5Hw94K+%{}B$1mLF{W-iM`Mi324L zlsHi0K#2n-4wN`h;y{T5B@UE0P~t#|10@dpPv(F~@bv%W`jzTd;y{T5B@UE0P~t#| z10@cWI8fq1i324LlsHi0K#2n%e)!erec90M%R3u=+4zhvo9*q(&^(cw`UBa1gD*2X z13CQ?PYyg@r1@@N?z`HTf9~wbh@*Y+XNjCP=u7!HUw-(mC$F#Yh(ZY z9qma=Hjw@WBKy7_$jd(nDWf( zkV@D)Y%6kQD|Sb=L;O0Ct;UL^HfUQ2U!wnbRrV2oLjI?B5qSyE-FSYF=RrJ=<9Q6v zf8lu^&*r;|tOq@1_&*lUj(GOLlUXlv&@Viha}(-P=E>@F0(ob5PddSuM_%*f_xpNs z{0L9BL)vk8ez#m?C;Z+k#Wl?wu? z^gWqZ?#rcjd-7bDCr2XhiAVVI`7V*2Cwek}vM)z|MdV=ceAKK!-hU9XyeW_d=tLLN ze*g2nd}DWC>OU386`uo7?hIt(9f;rGmz(Q->_myYbw(gd|02>;ABcza=Of>95BqXX zugG8b4djv2eR<(cPj>D>-NCcACw#eeiZ9QDS1q+7uR-RIpB6~%hazuW>C1oJ;>*2| zWf^qmjPHAL<%J^0{uFuyTF<-~Y4`VJ%PAt~w)^t*g`Rxl&%R7-3go36`1p5EE=`NP z_=?EtD?It<_dK};xF-*Rhergm)9oT>_Ik4B_r81wbbb}jd3YYe)A^t$=|ep^^a1d8 zTgVk{qYv%nuwy(q{dAG>n~7}P*O$84B6I%c%gd*F(sy?tH=~_Yr9`SKe0gOg+6?$| z@duFCB2V7F(U;wBfc%dXIc6gCZcHHa=lJs7$9#G917F^pB=YO)ME1Mcm$O=Z`NLzL ze0pRccY>bDka6mhB3+>2k$JxS`ek44NBkf09D1)WXCDZ8wR!Sdy~rPaEAq2FJ$drv zKwLLs5p+HeoI*tW~V#_{f7MI z7vRyTK<1);n>PmX^OMp4Kn|l06uGfNWQU)4G8g(hVYMe`1K*oJ52W>7k#9klmtTZ7 zaJ9&XzeHWG52Ws|fizzsvH|JNx(fDD4bZ`jBC{{{B|F)Z*?;h5(%one$onwb&kX3` zgKzk90(9ex$kTKWcz?JjM}vnmJ|%MDLI;S+)E zj&jhX6Lb%k>wapZGL% z7WwW4|91So$V{}GXRk+pH9L^Ae~5PeR3LM14y5KywA~GX41r&_|6FAITRi#dw>)_o zdCvv^ZoJKt;9|6U^fh ze-pW`+mmO2=eUc}AE6Igm`8oD4P@+x=!d?Geh2*g)Nz5_G6;Sm?+q9oQqb}D(5@f6 z%#(>zJh}S|=x4JSA8I^#7c_V;iVSQFWHjimJPkV3DN_9zU+x6`{ig=9?Mz=z8RyHK zrJf9c$E!{NA8z&Ji8kot-k|YO^hpn(ANUh=dUwba&-QqB$1?%r@*mLGPK7RR0VBT8 zZRg8BP7%p}-IKKpR9q z{Q`LSC}c1S<(vf^i;!l{cRjfZW6T5hqODx(%eVJH-`4^j-WJHwfVXS~-CHB_+mVBC#Xc5{$?QAC1@Mq(=B)Sa@pKK_63ja zJm;-4)E8~H3}fQxO1zhTB@UE0P~t#|1OF>Ikn7I%r`vM9t26xrnSMFo@T#RN`!bz~ ziUBGsW#j8xh+lR&#*ZSGQ@SozsA*(>tEB- z-=1!78;EFgB12qP8C>&=)0OER=+E`7O=o)Ba_uf{2|$SR8iSMd{<3+WyIHX9R^tLW z8DXs2`}@HchSwoHT6!`)CVVQwWzyH5>+H{94y@7yqcA6tw(cwnOt-fTw3xIhU`k0g zpKi~z<$C&{ z+0xTv>%ejrO1`b7JCp7m>=E*WakVC{J=2@BykUHUC|%K{8r+O;*71f^T_$N=CS+I| z%xTN!v$8H>#52&^ zo$edx&)ag&0&KmUkk&QqXlWaOh)g+O0&Ih{x23xVJ36AAsvN>@l$L_9^?*GsE&bVn zE+}}q*5YIQYf=1CH(orQ9vF|X@#I07M;?H>-n^>ISAk=^$8c1?6w;-<{+2aL`4I2u z-von~O~c}4`aQf{-$1q}dtwF*ZqN31I(hc=s;d_@&MdD;tL9Fisx$LV^xAXjj+WlG zwdt_wGXeF2^iJ~fJ-OUK7vhjiaZ}~}8tC5NLvv5}WCpr&?UokmM!AQkG0@UK0MgM} zt#0Yo2bS*7t;sud&i2-T$C>ov`HSYKyD}|o{G=m=d~-Y%+tacV{UAC)SGNd1 z$iTC`h2aN#(CmD6U~PJ^H*4C~1mru!TZZPWAgV0J9p){M#Swp{p{=St*P2Q9wDhk6 zaYnDc4qnXjwCWD@L$c`j+%~k(>&*-eD4};}doy93YCYTUWLEXQ5!e7Y~wPfSt&cNXIn@(@*6@AY15cdl)f zDg>!i85f|8b5$Pn+pUm&SGLdco^<`%YYN*x!#8?OVcTH%R#AJ?nzAa1nZW=4IT?n=a!`C(HH>v=We$NL=|e^q(kML6Y~ z5!1A>YY{ie&$snw`=E_#vGA>=n&rz4Zdx~+ZMYP@*{*Pn?3PtEu+gghT~K~evEj| z3w~nK^F0L^Y1tlmM?=Ft(4XnuAXLS}mX1=Arzhx~N6DL94dM;G}5c1(S2Ip?53#)AFlES;KkFC>< zik?w&6aJI#n?C|Qt;Ohx144RkH8{z`+Y;s7ZeUx0R?pC?WQBL0&fEbw>AKUT+X?AL znslVy)+dFyNJb;&ZjqNco+~_j{9XYn11k@~BG@ZP>>%X&*3YJ3KwV z{3*iNJ?ciMmCpCzziDfXA8q2hTlzaQCjJ+QFSF?tZ*_aU0rBHayk@PAzXkCr>Cc=n zh#@uYXoA7_Tfis9;U>GDlidY)Ip8hboEoV7s#H7f-V69_%zN6{W?l5AAG;6m${5_B zH}D4mUnm{@nM}Gb2ZiMr#WEWtpXu(vFlw4J6`60(O^y9hywdsLedN8lYCc=(Y zFwM)huEE|_sN+HCFSbG-^bl~`pP4HfBt4zZawv*}MpBnJ|7TlwW!r~_;>z|Bq+!}e z!?eLT+n1!!#@XikP&nIs1HwCrmi=Q$FOpSteq6ohWvYzA4zP@R0^tTZq@_34yS67c zn4dDx(s>x0b8{lj&{>7_r1M0hSLC5uw_rMx8N!Uk;rD3C^kg~l%IC3+(0ao3Ws(~l z;6lMdOrAdiHeNU>X&DA%KI&IKGmyqA38j&r(R_ZA^yIn9v~v@lpYE^X`dTo_3CE9< z1T&wuOu9R>I%C@aWx7ty`LQNWR(8CR%FX_odC~B^&7p$#ou?*I7VcQuk zj8Id%R;<7G=4Sx#Hc`Tin9%DhMb_`sGN6`u&`=IwgBl(yzeUc3~ zAiRg^H^!5h(l^*@c)KNN7_WF3?MZwGa!N_Q1v;a63Vhsq=*>eY*|uocgYAuD=WO;5 zT+ij%V|V6kUo-}|E3vl`YM*J}q-zD&(hkVY)5SHo1G8fh@tu*#XJK0bb|v$1sR2cI zDQ6Yemg`GE!1Rk=Rddi1mN(%ou z=PLt@{lGT(PrW+8v=Q=Cq^5pu1VEB}j(lgO(iF$_}F7;522roy`!c%=zjIIiC)c*?+UO~A*S@E!)f9%0L0kcnU6zGQ^cm#|He zzY~GO{?I>}z9VXUN)v`hD?M=QT$!M8tO@U9Xlzfwp@*uD`x^Mf1bnm!?`PoTS>b-9 zXDwFIdV5f<8SHj$fq0`IQ-G8DvA5C5v5IL?pFw#~LVuvQVDf6sMqV9=eD+r^1@J3o z6^KW<4n%U!1ItrKNGjWlHv9|zcGRtUBbI{R~jed)G=em(DCe0vz5Por^U z?c5^;SeL<*?idW`%^DGi`!2FKKmQ(C0S6MFEQBwLCQStxU&$rDbGdtZ}sOVppoxZPuQF{y{Skh zBV-xUQs&D|o(D{u*adXBJUs^R@iN$FcI@@q4Q)In)o7GlgPFb$ag(IFHQgG;adWAh z={nxXHF_kb;V|W&$`rd&B~PKG|cv~4eZyQ`6hX} z1!VL|)WQC+m++Bz$$C>Z?Dt3?`wpLA=%GM08ju?h9FcCjIuk-qG`0OuVb3Jg;NDsH?7yc7h)2XqO|4EZ!-L2FT)j zMRb<)0j&4bDK|K!+W1Q3>%ti>&z)@BW`A*A$cHqPDw-qwI-yI{F|H484CfA()p|Yp z4$6EzRt3XTmV_zONWy|3(BIGUWZTZ<_-pQ*~D1(#b zN#LDE*{NB=oI>qqKN`!F+5rglX2;*vK48C_F3>L@W6B1!uDUQJ>CBhI(41QQ5yiX#0 zKq9@J;hBl>j6`^DB8)4VF?`rBjfD?MgmHy72Dj@eD-XLCv0?NlvGj8i z;e!(4Pb9+A6XA+P7*{rdA7?huZR&px`p>@Nn@&679wyt2ou6!jF!xOPV_vp@&UL?q zJk0y;uw6xS-8)bYVcbJ>aV;!@>k5PG%8(9yZo$1gmZ|sjJh>WhwpY@__K8Wg;umRR zxYE?uhF2uQ>k{D&iSUhy@Y9L#t%>mZM7TW>w(_;~q|Ex^Mdw!034rZ@qZstSl>aS8o-?smAI;Cy>5V$X zz;e$XYBmpxH8^fFI9QL{@lLuSe$eIOR3|^fa1M(#IPY+9-s#}{nHd{TK>_Z3?zc#@ zLNtZlS==x(bBMbT--rDq%#N{?iQ+kquM_8xM?=*-kmqD)XqY+KQ#loka#=6>UVu6_ zPOCE-+;P(Thn$<7tM{)sX~X7;KE0ugxZb%N^w{6|YF(_4f9%N(S3qG5crn-1mweUx z$$AVXkL?~Z&W*x5Cz|(qt)(`K!3XZ;2Ppeqr|j{C&SRDiKabhNl>a-Gx2xT*J*reC z+6Q}j)(Yk9y zkISEj6%OKIJrcZ7EhrHO`B?ruqVjH-i$~Zu9}IU6YK#{wuFbQo}jfw((^= zw`@^IsA1gL5C_UI^L^qTuj0cdqS_bZcTsx?YJMNCn;4%mXIX>2?U@b*(R0)kU=y*A zkx65fo73%saeGNSt`V$NbTGWPw5IdvTwliQbFdH4>jjXZEKbh0jkF;Irv~hx0iOQ2K1wUcC3g ze%e0lKlskc$TKK|{l~NTZ`&2+?#_Xj|2f1lkLr6=-awu=d0%kyG9B~U^97ricW&JB z(f{H%QvPgkylnEheI0Q{<-tDEr2UIY`vub%zk;yv9z%ON*0$}KNBC&b_Xpz%bbI+L z;AObeo6Bbs2sGS7{m08d26xyxvN(!n+a5xml#c6d>B*?GQ|=S}P0>PnIR3^;`$&Bd zWkGtA{Ab%t0cXSy*xe!>)4x$5J#{RZ{_iIJTP8j8vhK;UD64RsL7AL8|I_4s$E1&R zD7u^To`d%Wlux|&J`eYvnMdzCd-9>dheKSI&Rx@v#$3tH>KRXAEV$f=cb2EdJ@7IR)4aRMbc;Zh1Kk41Z@QGo&ua;5` zD>^UXSb{y9)z~t^W&EC&KGWY10M8`GB{}*2Ic@4? z3jeDs6bGognOn=K?I)qkRjAt@s3XG%AbcFcJqV+(QFwVbOw~)>EXu8Aotbu;NsG0q z$~)VHt4#PX6Q)dSv$CzF4`0lWQ;KGb-frV3=*|zc52yRnF}nXP9cWYcb1gUt~9u9=3v5<(Mh_e zZ4j5JF%;k)Q7G30yvo8Y4-;_Y@6Uifb+4&N8sLc1*m}kB$m=$qdZ1N6RX1$wsx2zn zxwY=cSghM3^o_O)ipRLS=I9%Hm`LCLJ-PAja@zoPf$d}^Xgdek*mqi9lP*oKJujuc zYkk`?Ru^<(xCm`wp8zb>LSuhp^*9F8*Sun~kHPhIxKPJcJJLF?3dEoA#N6_D4a#1L zW9D9-D?ukC9!B+z^N_dy|8pKukf)n|PTiFnV2{wkhYV%vn zF3r6-jt{c{r{z8Cs$k}T%C?zEzx6qQ!Kuy!UHMpE#^rPQ$B+-M(_@pu>iF5<8ExU* zzG*VzteqRIE<*k%;?o`7xfaUK>T%RIsJ>}l+~;;k48Bt7s>RN${gLcHhjP`Jz?|vn zLsN^wD$0juMC~q~Z}!miqWQAZa(NJ~XQsol|3U zo*ApV=4=raR`+Q`71N5qW%&U`ZKxK{=wdm&bw{A znOlO=u)N!nFx=a><^7H@J@15hZ(41Bxpj=s2bJ||IL>e!apu4p=w$EH z+LoKZ+u1VErN&e{?*0*Zl@4@fda;EF^HP|?>6`i??aA^DlCa+KIqPuR^%!Ta+Uk4N z;X3zWTfR04QHgZ%8(-hs%p+H#{%Opi`>)7F(~Th)P^fP?+uan$ajHWF`l ze~q;}i&xD#l!1LqcbhgtXwUZ0P&C);>baUPwr5vkYc`xSTK>87O?@YdvmRyF71lAH zCVpMe%89fb0$%977Qc+PMfQD;iRWI$TEuhyjbHJ*Eu6+$GMu|DiDN;&o2F2gkMfc;VGbPDazYjt*F* zIIvw5j7Ln$rZiksa9^bpbfy$MexIfb@qLNAH@qXmbEzy~_ID%Cr4mdCH;>{h3wgu( zTRHIVhJC-0$oj(^L3Zi5XKn7<4W`A!}28oJW86=`Zey~oK*XNjb)|G9Ubw$;c z?vi$!?#oWP%0xQ)70~ItG9*KG+E#gG+{fcPaeoZ};$CO^q4P|*5@DV>M`!v-q<-=F z3spK6gW6D57Z|$uexZ41d6ccHi@Dd)XTzwQ)%$NCJw|a1GHs!K%*Biw!MJ>u<2h;b z!ShR0TBgTuWQ-EU?pTbWjkqlT294gkw2es6=7F}tyclld6^k+DU1rKFj3Z`sqG*oA z0LL*#KY8EM*n}D5M74>h^pZRst!+m!@WuP>@1T5~*9_XR;UwtABxCnQnnr++S2%nu zmsl+nO|ckLFXAB|3!f*eDTcN4a{bQ~0sy17`@7okit?b|uwE&no9v@(c(pluz6Lb7 zZI*S#9fHsvi~2^JUA5oi+<|3VX1khh?m6lN%8iTS=XZf;b`jeu!j=`Wt-2PlA!S>I zIn01|r^2!r4_iyvR>k8}py4{vGd*rf4d9MRwoUspp}cR@^c9r%9Yy3#x!h;uYwP(a z%cg^uUhVgVe0d^aJH@!CWo`}I7xVG#=_T6nIQm3c1HJz})W`l_lR_d@YEuYcWUcRi zT@F0#>r)DuCqF=#eFoPK$0sCj?{UY;j%OxI`Y0I^EZa_Ti!!=T}T=JJ?yJOu=COy|pOmEM3 zE&eDid~cexx0$pohx*Ta^G%-!EGpVp&ebV4# zzsfll>(_w#oow{vV#K-qDD_f}8KL(YcddbSL&AP6h4j#iLEPuTQLMhpwmHh&McbVy zhdk6V-a&_5ad=Ok^@F(lXAp0Hed=CYydwXqek_apqHH&yF7|z<6VI}3{8rBUFHHIa zf?!)8G~Osn(oOaA%h?Yye3K4W*znCdJk^G8(cx(}e47r>u;JTvc%}{iR)=TV@Er&* zZdf2J>rM@uV_|pcFt+YAEq9wR_c59NUK8d%F~h$zVeUmU{CgATJ|x4pB0O(lvnuNz zzE@SN_xteP*wh@>`F->NYhjo5Xhr>EQq{GuK-G9*GkOvRzaL9v4bU5U}qX;+E zFH*Gp5$`qT{V^5aq~agP`@ADH?N9K%u2#kWiSLa%?~{CA*r4K{!h6j!{r)uGVQ8l6 z*H^@c7wyl6;Acn~)~PF-(OP<)@)K3qhtz2bR@jHs8KIA;!ak(V3gLx)NUbm8LyB{Q z^F4isPVd!3w%K;f-%!NI)RjeiOx;n$$J9NW@G*6t_V+Z*$J9fc@G|<)YANMiEGIsF?d({mnbDM)a+Y0he!Eco7d+HO2 zn}j&)dukhm%YANc=>CxQq_cfm{^;;Hge!ezMBFxDe6{U>xP=LSR68QBA>mVMXT&Y@ zvpk$q^Do-1uJEnRi;mkJaa{>NRr_hh zt7>C%7$_V&*e=*_t~6r>!|q+#6hfnMZ`1YT#_?l}O zYwBs|6->u*g7k9Cq~1jNM#_GGGvEFu-&Dh&$q3uidUc>~=F?LUKib$|*|S{A%11p9 zP!H)aN4QBl&7?iOKs~fs zyuK?z8CD=I>jFm?JsIuTQ^}TfFEck4%%VkQVxH-MLB65GPuCylD)2c4eArM8eJYVR z)PWhuXMdA4Z`up)FKRtbfaep^5V0Z5OSR zN@LYML6(hs=t{1`+&jeR)AdQ}I`hNl6K)XT*vtX4UMZBAlCG9~x@WL^Ad4IA%Acb; zSF`X5lF4PE8Z9_ZX*c!eoVU`cx6$ii_Pm^-aFa1#Zf%8viLboTF?D zJrUdfx$kBBHTxdr-%M&u{`n^VOvB@O2p8(x=u2U=C<|EYC_vpdvi;jam5+JD{;eIx zJi~2+O&d;thUsYvcp`dzSq%KF?-BUV`r5S?>&w1-c>g^@mY6(sCQpZ{BW=zL)sgnP zw*R)bVmGDVR`187O|L<(#GQBEXrntLs1SncnBoc#;4Jt$+Sg_z@a9LQgpcEC2f|u7AL={Uy+PPN;7a%MoaOZ zGU8hFD7@RX=)W32k4D#eZEdikO-&pi4f`V8`ZDjxi8{Ip@%*2{6Y2Iy=|(*9^+fp8KC9Jh{wH>8Kin6l^UK}?ZnuwRS^vaC zUFQ>(GeYvFoB@-cZGLy8q3&D1O*V{ZbtYxQ-%?@S=2!;LB_rIvtTnh#G`Mlb&n-Bi zZ(h=$e3+Locix#ox_`$Hz1^?+FW|91Gj`*eZRA`xl4UG9lp}3M$V1BDRN&(KsixiB zrEse&|6Hg6X_lVX)jSGSrH=8QqdG~zC6h3IjE)a|w6Wcj2iV7hRYP|MHm0fpVdALr z5H{A>q7ozHt^bx6o%)%!6%o|w3YStz?mZl1i1Fw^la2J1~&3bat) zEbK1^_7&TYQm~si3n_N?^(ye7|Db^ZtsJlz9iS(DRe#=A8IRjXeeh&%4_I_>s{1D9 zP3e9ymY3tVvRwk){_MIWDkI)OItT~|^?>6gc`()2eo!eBePdgFogkexJ~J3ULdns@ zD}xtJCt;)EV}rXvN&n_!;Af*ye3|3(A4futKH!3vb52Cu;|rV}?IP+k1{i4c9V@Oy zsBe0mqP?v+z!3jLDeg~wl7bc92iqTK?)DQK@U5x7_F&5^kHL(m7iavK?(mH>A56kS zdS$4WnTni8-Jsthb!zn(tO?mGQgJ}!hw(-fmNW6oN2Et z&-O)cns@fo6F?*T>2>Ib4>0ZUEmfA9poZTfNU1b=EX@pIsN+=7=7Y9>IJBKAi;rAd zRo9$uo?EL(ih^N#;5mw=g=32DAA)f#gS6N&!iLdw&}Zqk!!sRGehIaFIZkb(&L*`V zNa_poZR5phJ;2N--dFjF17|tj;)P4+&yPs8A;UBJw6}C}OyRrr-AdW&HXQfw&-1lS zwc)YS6s{YIW4y%oMR$?-zGzDHz9{EvPz~P$bL?-TnX82#!w6M?CQV8!LY{xa&~L{d z_IvSpo0_mGohHnTKWec&XngQ9zRb?!ocUb}nBa2=w+_|NqwOw`$;x6!&h3yWRyN-rJENvs_%?29y=S1 zZ>l<~2D>y%8>?$XotI!`$@uEVs=6c6^J<#7=3x53NncerPa$NV&?uX!wH@U*8g)2i zu$T6(?Nc(it~VuKw(?*aB0+3zzm3YneAEFgmgFX!(*-3#q1;%8t;1!e4(=H% zc^Y3+2Eq>ru>RYdyl$PDKALy<;+qy7W6Bxr#4B7? zOB!ky)h)32Hjm(XG^(0gYwNZ}1Y1;xqH60Kn;NRniy2zBjNpr1FzFlkqWU_`udO2(FBz*!5Z5Q7_=fuWTCz#;qRfeJtf^k4Fd5pmabfif z8X?iJoNeQALP?;v1_dDoVd5MIU3@gNP|RaKqkdAW|a3ZUdr5yqh^OB%pR&D*IqK3xS- zEKD~$bE~S4AQzgN>lU%m`sx5y<)LLbTgTOd zi}mxwBu?TfK?n^&W;B!Z3^z zO&Le(I9_*Bd}uUbP@%$2CXDMvD%@TVWts}=e zurRZc>v0-}{-@dsT+wyBj&G=HTmtqs#b9X-Q|%9fMw8{^3MW22EnTN)8oHh>F3ds< z?X51Xsis!<{F?SQ4a2m6%C#JWYjZgMw;LE1UW(?74mT~SuZJ?)?oZ?CFfjDIDs5*N zR{f!xx7m7hS(uSg)`pvO-j!i^c-~bJ47{saV*7(`9dFvT(h@~Sj~lPFMAO@A;wfuf z0IXSH(t+nxpZv&xJKEm}~2Ef{wTCdeJ;nkA5A`_8HULd=ww*?SL#ky0I>; z+E#iQI!E|yXL}kn@oMnk%vueUx(=%~Y;OI6rA_IE#%T6t+ESFR*uD5;Hr%XJ!h`WQjO`W9UmMm>*#+;&Qd7Wwd zpVskEo^(^qkxMa~UsP3Vcz?2nal~J;w0fbY)|7pU?x$+2nwrs%DJH1({yMC;xMtZ0 z>yyM{KDI_Fyxxx|;dX)nn2kbR={(`K?S%HjXSfHExD4&?K_ozmW|!|S&FT&qHrV3p(amJKp?`*<-`hTFfYg1>oSQ4Oc?LN`aT zy@zN2NBTcf4o5kxOC|nOkLqIkI>Yt7O4TJgPq1}Kfz(2GBe*AtokM@_@cKkZoE;S> za#%g6SGErE{i%^M&(x#F)Wf!iV(oUms)xQAVlD})yCptoUEt7a+e7^G=1yyf0~F2d zL-qu%>_hNVc8B~vA^A&QU*f#8T{7O?2U6_^87U{W8~UJIf^=>g%Lg}2J<lE1X84dhXBqX&U~a^MVl6j`*7l&8#QyowA~L&+rM4|oH+L)! z@)zHDC~D)@T;xvSQt*K1Ny_fboCz~d*@~gr*l(jB#dKarc1U?|=v6w#Z~GmMc>7yn zzNKBLfftj5?Vrd4j&)I+_GLM6Q%=X=ztw}+jUKo1aO=Bvf?hE3mof@)JX{;e>+D;Cc?2ddom7S$$g z`Y66%*%xE%QFMm!-MDg=)$P{i32DveI@lI%e3&PnQ|EcZaP{RggD@c{co=MDM;2G0 z`}*Lk$MspEXl_v-Ob1Y}Yb|_x)HQYzU``4woV<>~%^frgC%qc(o_@srYZ=HaRw4w*n0 z`ePS2{5R_ay5Jb^*iYFTcIp%rx){sL+d``20Lg&4a&c~C+q2bJUtxI^=ldQpzLQ_0 z!LK^h0go0|M-pET-Hf%S<)oCg9n+=4Lc$d7A~zBU6t%fP!# z_)>(U{x*jzzgegmW#ama`2)kzRj$DczbI7|8XcGwuA&we17Ac14Exiqz>Nl5lfrJk%k|sSTzL==JP< za%0>Z^)qLHhLvr(zP0Km8YU&`#<|(=_U~T<4GqAC@At%Lcji;k zgb;dY`Ex#fy z2W0R&qj9oa1-088$`TYqJ%?vDbhHaQ-%h4Yy1R;a7}Ynl2u|rM^H7dq=iE+dp29c)hPcV%uXd%Gj=j&8|o|9v%W1&orLV{s2P%2G8nn z=-=SKba)!eWcufHI6O~$UWY^f1~2Gv=-=Q)9S;2)yrjdkExteNaOmgZWgQOvJiKDU z*3ZMMCOj2#B|U#J;b|uPR}-FY!hbVi>-XU`gyCaC`9EO(w{CR>OzhmsOrolzq64RC}Dn{WpW#?zMg!h@m}$^sUD| zH}0*?HutoRk0=c3nSS0V=DsjCBmLKb!~QC@?-Hjdwa;3xeAbn`1B&o&BKI>`S9gz# zX;OG1-URY@q$B;DpWA({uYz{Vr}c;@pO7fFr-|>rs_%IX-$wQ2|M(F2 z?XO(>T>MD+5b7a05 z@Wy3s(-Ln%vBwgCJar~PJ!d^>3sIz=W}r{KC^I-1?*7O-@Q3ya`Z9Z`nt|n=sCf)MuDUcZiqYai*LKpW(!2hvB3x zBsV#o16JzhScCIl%ic`#LWHroUq~ard;c$Jw8tBI(&3!>B>*AL@dhWyiX!^?k?fRN z-<=GuO|@x`~)DRHDz#4 z-dx-G=ih04C@O0n$0%&A0JA!W97H+zPP~e1&-CW(cN41+-(bh$PJB_SMcYcH5WmcvL*kfE ze_9=5E9oL^x!83_^gVF;mpxY5qnVG4IO$g?AGs~PZQ)nExv?1GYa!gYaZ)=KX5Z14 z*Q)K`xI3aM%)LRvxX;`UKPYss4$D|f{3D!QGO#A6&5W#uDPEB0-B{`7v)F|x`Ir8Qdz-Wu2hwybap98dcPs4d|8%2fPI4s$@brtgB4A^t>BWlB0q3ilH$aOtz zec-Qx?kZGyr1N}Ro?W6E-jkMZV5f_w{q9VOv@qWW0}Gvu8=f-XWiC!T#WHZ_z0$(N z%$ml{p$9(zjqn$w99XifFM{sttlcDBo%Rjj6vg2B5@3(=tXoY@Y2d1$s&0h6O&iw& zFw!{Qqq!5dNHc9&`mDD&c{eMie5`3JOVW@+`bi#a+FDz%Z^RE)Mf$U^XZxk>YMjhc zc|+ZrY|hW^T9&xh1OI*|9+cPGav6Vc6t8U9Z2BWiJZf`zS1>NHxosuX079$(gS21mtV?mSIy$ zL6lxHuESd%izEInMO&3R_%y_YbZ0#suXfmQ0nPSt^jY2wxzOKA5=NXKY2Uq_ld@>v zeHuO_#W`0V`R$$*_ZjrjRR^s6;G80-c&l{I?%gnr`s_y{iHn0rG;8`>u@1FTn0+4ohcu^A)z}9AtPpY^SbLo_s>S z&VNXFr6L3oyPIB3ZXwcv|}8GQ=?{g;(< z0)|Tfkz6djN&}S>f==dFeU&{AV;XwKhET|+uuK(CuQ98!qh{>Q-8{V*?+WG7pNuoe z96GsYr?xURDApcWmV(*t$YghQ9Uw?Z1L!u3`?D6l1pHAGMyDd28(2NA58)9CqyKQB zp}*pU@qj0GGeP@EDmJv}K ziPBiM^@sgZ1WRxhK2(O6;YQMNjJOt6XbiA0*I!;}QJVmxeT4$^LQmHbgUW(P(k>PQEM!Iko3HMuDqN+q3dB&kw0o$fjIRDf^^Nn8-pnE%TAj?H9MvzX0fuXX@Ypy!<0XI8oKWxJV3Zl& z??w7s?CiEJR=yq2zfJ!2^@9!3JmN~kF{Ng1Y1y@Np)5p9yo$ zOZX!u+-1UlG~rGYe$s@$Zo*HS@D&LEyL9H)=J5e?P3LRCa~kOUBJkMu!Eev!xj_Km z*;WUs*U))x$DpRU{)pY7ANR=oy5X#Pr?lf3)gK7SLd)(tD@6c z^-UuSdrQMKMgy~W?;*`?ZS(=>k`<0){K};ZH)MtUBX2wUGq~K9!{-{K{(|&kbD{%_ zZF4BXHm>;u=LuX3WqMafGI|I!s(zJ=B+c?releI9Q#eO>!RE{1qY&5-XYNpRs0yD$;1HGb2kbV+4mO5IhkM?i zHTb_Ede8fts{H6o`f03R=+lq;8`$0p_j^}}`ko)Wdv=E3&Eo!5ySD$}P9PHKJs8Gg zzqAWGRftQguX(V&a36`V?kEog)~C+bu#N724z$^y`cB8cQ8&my`Df(*BFnJ<`L6r3 z(Y#uV-zfP!%AtICchHp&^Dr&*@QKdEN5~gU9^QFm9_FX57vBq?nLr591-bC1fD;wU zUSk#)x0OTx8OI!=z=tw~&tct~R{-@A?)d zX@!rbt{l!*^r496eJA24@r%7+rMd7L`eOek>S2FF`d+|C{!Xan(+J>5+C*Jy_%zDl z6VF4ee8xHNlb!bp=Y1>lj{bgIwl$W+c0}EbWD>|#h-a8E-cMPKFy+GUVc7CIocC>< z_vz-{EyK23;-s$79`FZ9=cXxS5BMXbVY&2sY|Bl7_x7E;g?ul3t{k^Ka}R9`LZJ05 z>*ogN%|`clhU>Od1`FB#kyk0lw(l(H@Wdi^eAA2A@y+9Go!9sh->O@RIxj3>t9J*_ zEs(*r)mxab)x(`1{}-wbtcOU0IU`7%S*vbfQ+(OM@Ws_p+TXc)@@u3a4|zY&%4l=v z{ZR8>bgWD`N)7uawWq0^x5oUZ-em9{WMuVO@Z6P^hwvoMFlpL^d4M{j0nO!(%_V6; zTkvlIF8iCU`p9^po1(?`iM=R~ZHW)dCU5x8`NM6%Pu|>aXy!Z9kWYor;?cQq4pW3D z1wdiHeWxkI`lL+qh3!%C#dKce%N~j^;1w^WJG{bqb!Lr|jxw)w_{Y4g<3h%nysQtB z`FA@!Z6Hqz5N-Kd0A%W;zuUqx$WNZ<(+l0bhM&I+`Ki+puF^3X(%om$-JeKj<)iyJ zPaZVs9tzX>W#kFvV|AW=vdtGL{JuPb^tK-(oV;beh=xG^h%{JFjT?Rk1U!juU0GH{ zF{V#?+|bl$^n4`3Nj;y9b5^D1W*%2aPATNVy#RetxFfBSlP=gg`+rh6i5GnYWff6T zkS?q9))I9)r1{uV0`D!j>~V3PZp=;_w$Ie{3e{^ z!5%2h<@bw-|DNGh8Qxu9ar~L2eD=n_m%YD=EBw9eas^ZKYntMPr_t1X&IPm|Vbe$q z|GN->MuE8lzjOR(bass;)j%89&FqKhyYbJ8Uee6(aY7D>%UV_#iD=VS{4$a&jZNfcshlZaMj7w)6lA=rLgT4<+haFsn4gPhctcMZ*af6u(Ly^|dF2Mf{O-S9jU zw)0PP7q8oIuzaBE(9<%cE=1^Y`$NPn6x_TvU$bZ1I|qDN@2sH&>-+PiJC|FP?o}5< zOj~>p>CPXa;`3j9-j@yCzPz*1myOT(vf19g41t)N`UBa1gD*2XaTn_nPY%RK)SB=1 z<-V(Z`RC4_j5yjCe-`$&27M_9r+@e^7X2%HdHg(II!^ZFw;MdU>)}AEe<<=~DvuLF0DPyc_2k5>JlPB7`OUC3ZW1ZK7~eHTIlHd# zx!_=5T8@W*oTq#lx6GF}t_b9eT3@bf^kl*dz8v*>Aghk{q$L|j{{oSH z-wx#E9|Uq9CVtl+EbO{5L!P`b2ekhQvYQ^ruMQXa=?anW{K=Qc z{^rT6(|oBO=SdsVKRU*fYgT$viL_HL_2tjE`||EZki}178*-S)*WdT$D;EU#mY*l{ z%6+*MhRn}(d2%H3o_K^WpT~yk&J(fjnC#1uU%`DG@O;#)K;C~4vb+gC=%5o_Nc;WI z`|^$5eX0LcAXj`2Jh?NFjdvh^e_w8{_a%5*FL=k$vF zb>Bc9Io+2R-t=VW9@HH?YkLCU{+;5>^WarWt;lPT`QxVrQVZkjH?H*Mzi#o>+^7t? zbH?{Qx$;8Xf%qx(2(+GgG1Bhu$(B<@&TaSQ=?gvi#-Dwe*c8Z1Iq>oCo?Mz1dGQtK z#}%IZ^Lw7$0^E~_z{4W~+39wXGkZN*^Lt;u13JHo=R7=A{+c)~M+YONaks`-Tgl>%qWd0mqzWbOjuYTamo0IU(vg>e9>SkZgYW3w0k9qRx zk@$`(=$Q-|r#^}O6VUL;JYRnOvM=`|{*QPLz1Nqs4}`qhJbA5Nr;IxYr{P8&_EtK4>n!U^OrK{C(-tPfIjG_zX3nq7y0G0o_uYwCpSRf z)@RWVA@3u2PKJ(NI2U~gXsbZ}bqAo2KNsy9<^1YPknby=EC6jdDVFzUL02GyLFjiQ z+S_}lK~BIib|Ko!lNeu~4dk$AJjp`em);-9dpCIE?+9IaAdqW*1b+XU%ig|R@=_ol z{0(<1yFGaZc#gXm{So@0g?ZHXTKHN15dF}1(eHqtpE@p(TQISH33+e82#|t~zlV1H z;ANgnoZ`vdUqC;b6?w46lXpRb_agS4HsU@n=&n2sI@Bpr{TW~G1pWP|!f(<{Urrh4 z%bca241mY0P5>Wn_2h{*=;Pj?@lo_i51=3T6Lfla$P~}^cy`A#;ayMufWCGrba4wz zJU+LbFaJ0NXC7bor157MhmhuiT?0v73%%G2{W!uqfOnUl8OXiwz<(I}n8~QiNvC^q z5#)AxhbN!i3H{E?7@LuHD{P1h2`-!0K8T3c!E9KTe zasm1~C(Uw*Ye=JWRjvJdp@T(pg@_t0k^2mj|7?_OPnetrV@){6dXI>y@l19@;u zPmXI3)GVqcwvo8%~n?-?ipud!{zMT7zCvV*w$Sm;kFW&aCZV;;B{ZRJ{DzP$(fz83KCwm^;syk#rs-WrkL zj>Md42aK0z`f~i)p1iOf#z^!rFHRBp@@0W+eS09^TnBwZTi6cm;JK5~kG&AcG|WwM z*FcxiZWo-5zW5POE?*PKn|t`u^d##4Ip{n3kpawmf=aaMZw8WGg0=xZ-ExO7m(2}i zU+~z@Ww@6tXuDhoj;_Re=~v=Fi324LlsNFek^@`bRpDW1Q{%&eu~^?;&J*VkKOBLm z53yF~ZvJA&&VrGx+js*dW5$@E31jq)ONaX`q=F$SmI z6WbDD+*HW5sc)R=J)*4;2YbL)8^`i}Y*B2j(yGcsEU~(LWF9NIfj^;a@s4|E+j1XD zpGl+}x?9>ZI4tIsb=)}|IS#WBe_N;Q(Nb7nMnP_*j{C5CLRS2ZMLw1_4*#h~cE5ca zgv;=3jwdeH5wZi~m}flx8{Jdi^~7{m;pSdCHE}1CZs#zaUq)QaWAABDhfY8o{}xCvwMigD^t2>+5q)_jN+N6&XU;%a9>k>i`vCsyo}9cqA6o9Q--B)4}>R}r!YT8 z$v!6UB$L;+51Y4ezL7H7$Svu5dt4Y(1#sRd@>N_*|2}+T?fnMjdAPh07i#H74(Tlb2=p z86CCsF9eMIC|v$XSp*pK(aS5_i>uGJ{Nglhrfz~V{}Pkm(r?QxUiK)dH)S`NyjCv@ z(~7+ZlfKEMxBO*Uh4YM%r6$i&1@c(hlKsvylV`cfW6w)jMm()ApEPNYHEC`AEzj)# z;kq+QjyHMJCa$z=%`28shWI*f&%EY<(DJ-hMpH%P{ZR zBRHj*r7wMo0iq-9&@z(l%vcC*&xxdTTZg~xVnnPfi{nDn}laAgvX?VmE` z6~3pZa7Gu{Lq85-REX!({~8aj8Q`9A{PVm~959j3rx-ki=R%4eYs?$RVu8k}Fj{DVGsup3<6ls2FLfULA19>y(btXkewjjxCpKRk@%heLE4 zeD@CF<<+g#{R)n6-634PWV!h+9=>m<;MFFKZ`vU|cY#8Ivo)53@7d|N<<-?ZhoqmE z(U|veuK798neg+1w1&>YZeAQXs%y?QhtIo1J&V3)t0v(E;*A_WZ+JGf;5nY4Wojd;#xlJE_DOCZh4J+(PSwO@B}JYzH^bG+o>%LxqWZ6YWEp-p4=p8%CKr zcx7J(659uT#gxhK=NcX2cM2CZ@iS>gw)E}8xcT_#iH)OQAH?BnYE>%E_2qOfa3>k@v$Y)I3K#^8(lkZc-cr=+@FvIvRuma z4CHtDPW@$g68O$OVb73Xh2$IRov|s3E2D`ta`4M8GPnxg`_j0Or-)ymwj?OTd+|rX zTjFl^y z*RmSlV^s#vuZK257zwPsP28sF5)6a2z|L8pV-tn+y}4F8G)>qbZHT4+w`^&YTagN& z)V4G{Yp1`{FF_YEM^*M&pFo`P8;)%xb&xauS+p4q*L$jLC%;W$99Ks+A9XBW zSvG_&TtZuu;jn2TZG_nz>0CdqrzjUOoSUn%UHCLN0s0V2zndoAK_9X7G86eRCH=)@2g%pswxk&eGY5YqaP9 zcy+2T2Y)ga$FMZ3bKQeInb6K_Kj0Yb!=_ROt}lipv}-y5@%W^67C!mf1|9p!3dD1M zIjEdbqd2r5tJjACX4;EsE|J`40;XuCm-JR%x6|#((mBV%Tf>UPY=I9^aD3t1dh)`z zJlt;sC|<$i;M8<)&MK9qD}qG|XUnBND06o`&F#*@{*yemc@z4ie3=%3DZi!`Z$eL} zT0OP08?J{oNm38B&cyZbu9zN%{p#RAwwt}AqTjXEyeF34uIEbY|3Z5orS*Sl{jb;j zoR5~)|E2YRY5lL=;$iIV$Tn=~lV|BpxQd<9)*8jcux>Ea;4BTW+SzKEGfAnvP z{!d!}TifaZtZ!;*Ta8YlJu{^2=(oUJ9{y3y(odf$Z;7}*>By_m#`u&?A@6$0^`>+9 z_z_TWUQ64FEwC3g2I=kZd}U8!S4g3Wd0QBRzRB*#D_dOb*{d@Kg}|4sfs1_?*ZcZB z*DpKE>~Yw+vbEtIKps9({t>dR$%jA0A=Gn%aH86h1 zFi&L51(MVr+RlJ+&kUQ4Dm($N3|E>xv|SyXyP5aznKSeh$_1wft?&Jx0clF|tM!6R zuc>&}K7drPz1IF*vBqQE?!Z+paAz<8&%Z6&2W|@KXuFtc&!^VUZBtZQWB@%>h(mVAzjolzEj8c!GH3DdjRBzO-o&78m0{tVqYekwA>G1 zT37Ea?g4|J|7mwP#pK~$0rS{1GK=4)*JT7!ZqjoPLDLi2Edia1fovrTK zB-aj%r^PC2Vv<-89LUfHfQ-1wRP@C z=(H9VwQ25ySUlX%W_>iC=zG7HnYL`oz@(H5I>XxB=-)_y0@x|4aA( zOZWf(Z{GjE4mJ%(ED7YwcGwfbF5wS&9>?<}p6Bp9kLPYYtDe*Go1Ns#mawV(-3Zth z9tPX1qhTX7$&*&t+g%9zzdg@|E#MQdH|oLs19o{ofKAlzuM~L(_Ao85ZP*DNi324LlsNF;z=6|$16x5{ z=r8{?`fU8a0DbtZ=U`t}70A0oBHOj%{^&;7DsCRghp?5q{zj}hr(@FpHf+=Ph0P>v zGarU6@y}sTz6|!p>tLhy#Lq--`zQ7jV3YRteAuVG?#p_l+wn%&O?LV69&F{7!nX4j zlylJcaR(A(%l->shx!J-opG}-S8af;A?(jDI3bX0VITM7@gkpuO=)=_Y(xQj>aVbq zeae>?kH@%mf+s(PpMi$6VM~be4t~U!XSRcl^*MnogiYP`y9ILc7vLM=VNYtm2!90= zVRLzyClxz;vimlH{P-Y&4W=(6zU@oqJFqLf4>rfJ{cK$5%OAfC9|9Gy5&e!YKiXU5 z9oP_Fnf7E_g)iT`8#brl*9JV7;5iS^(|BIOb2pyf<9QIz<9Hs!Q?mar+5ea9|4a7& zCHw!9{eQ{+zhwXaf7|~5|F7%+@|yy=@DrZweHOm^i+SGb@KJLS{2zTd-;-y5;mLm3 zUwHfPxS0=sCUOdVG++N_8DJ(cOmAFJHT&Kr7tIW@LzK?_Hf~A;knabBeHuS zV}NffJh%Nakn?xOUi8lcSu`2`Dd6AYI`~gHXCKTrvG04<;qWE%b@&Q;*Ox=KhfkZ) z@V_t%bJCVTp2Ga^@M_F2J4BA(SlX}nZ&;#~iY#%U#DV{hIN;jVEp38>Y{|jvX z`IO^dIsRigTeAO;{1TMx|1pNrezRo%ug~#!CqIO~5lZ&| zGbQ_fT>X%e{lE6xz&k0${5O>D|J#1HbpO9of3z<4J&2P1fBn&QxD#2j|99*HDl64p z!_xi#(*6I^{r_}Z!SB)iFS7r)pMGr{OwX&vCs6wFd0=ZBdk8N1I`AqBx3;kfIP&*r zU^}dA?2DuUjwlV*1hjwiBhrtNKHLmrQJY{x@-nSP}*64qaCvfsE0?QYvuyt3_% z+v%Q(U5)?HUYx7{cKuyc+K1l?8omf@xJrk+&!e`dMK8m+#t_o^3g-HXOvj;(YcC$c z;ZMQ+-VxJS+581KGCh3*YwZ`v&F5Au-y=AY7!L?0jm5!o_({lQ85TzfFF=R2t$vg| z@5}I0mhD+sbi*n<^vm#=h1vWVi*ff{$^3VK@k6FL_=>P`{3a1UZ^?SvxZ4@0++9TJ z_)VgYj_$#HS0YXsr7+HZvp$kdT;3ObJbCB)+n_|a*F9?cCqc`_z_t_QYxS9WsN}1^ z85Hs(j3++~%*tXG>y%Y?^RU^spV5na2!wFv)y^u6G$R}MPXb4NRkqK-)xMNVlah6U zrWcUMksoRnee3ik3sdw00=Zb-INrkG_h4;rTN)qQG#_h=Wb!o9K%On_O74zK4FBRX zx$0xcgw9r?@1Vboa<2h4e0m_pd)=3WpDPO6Qq<3A#`eKKf!o$1xM@c!LDUwfp*;3A zJ#+$*Ps0b3N)X~NCtQ6U5#K${!>fb#@frFqAUp;EpKbd};8rrVFzQ6UCzr#QOYtq) z+$vW-iF`VlDc8!7z7KSN*`D-C6Y`DUJzCk8>%*5F(NDOL&}6 zeKgzG-%MBjS0_-$4zZ^riyqK~kEM43bf zCnRu{YZF8|%Dk#L5^lkX{NTr`bX(6_{4te^@<(lex}9!UenHT#U7l-Q(#}oT9u#9> zBj)Ohm2F&K?)n(|f^SJ_Cq=41eh2lu2iWj=ftWlsZPqCX@_=^B*QLm#`aty&sEX-B z71KlgkHh8+%_*L5>d?%n?~Lc02~e@}rVmXo3Y#%BqbRIm#!$tKB6L=i4^@;GgH0cr zRgBK*LsN^EH*=_BYO#E?fU;QqK+B9``A~)OVzAkp;LFURX~oN%HuQhmI}h+Gs%?+2 znW0FN-t;L^K$^iMAi; z2ue{bG!ZW-iXu%#1$@6fXXcb}5_$Lf{O# z%ajSc|I0~X;VUbtxB7}*fFuOC6uGiwxRxAQ1-+1$+3SypA0X`%*6bl z8c)$>XX_Um5G*WOTp&+%H;?TE z60Oa30Yh|jT{n;FBCfU_4ld-m($OL7B9F?Z#^Lh2@)v;Q^eQLCb=KTx;cGCDkAufy zx;?lKv#WJlFNmOHLpldun4(!@hbFzCNzfJq=^Q?H3j6z?U5nZNTfldSpqFaN`Uucw~b zF)aN+Qhv{bbMmh55Hd$0&Sr3qLVZC$*q<-JBdRR(mf@n+VPOj$)Pj&TPml)TbgfM3 zbLkrT{{KC4wC*opn1$dR z>P*=8;H%y82e;uFZ7))3$}ihBX~!ff-?F*G9|~XI^`fvVi` zIBhuh!^ac;%s(EtoWg4lw(qfN=RQ-|>^$=Z8Veayv1eg?q43i~%H@|r3!8skTBP~Q zokQEO`wng0G71ZQl+Ry8;itIzK)u8FI9h|tl#d21p3e*Qr)hwfH&#(L1F$E@2k&GbcGLLucH-~yLzpdn|FToE1J7y z6~6jtF9;+ff@K>=YBQjXd;uG+Vga1fHT+= z0MyM*MQD4ETwnn#1!SW`3kP_+J8h}ndBK*6tDFZsCBR&Gky zJYV6Uwrx_zv}v8vse8+eF&T2~h|_MgH!Av;tf=T*Fj9x*MMV#6MH&3&Vjmf0$QPG_TcI(+Hj^Cc0yWG(KM*i@0?{C_i=?=GGC z_w52;w`X9-zCFA3ys;mpa;UpYSD*Ti3VU?smby))nfVE9K6<^>I9(xal2J4Hn&lI&gcf{gsUfEipyL%MIbLzMlDy*c z>goTkd;MYdWZuq{&`+h4BF^*q^*N`s9-mhgJ~%cb{a>zzg-1c*dDNoDTSv;&0p7xn zgQN8NjU@HmSsL@N;@U)&I#1sG{6J&pp{-Kf$u7!?iXIeP2lGl2U%_6pg8P2Hy3f`} zeKWE%Qhgb=K5Utvo~FhWzUE6}6z8t_Mg-Puwr$FFl>!Z%~Z0DNrx%TrHoom7@+t(jC*Myn2ulG9F+c;9A>igWeUgKOJaIR}P;gnJI`om|d6drzVhFUtxuFirN0q=1b-On&>hdb?VX zr`|a@IfDE1fjp^c=<#3<*UxC=w&5$v_rIp{!_D7+nDgsX4C%0dbN#n-)_%V!qn@-T`LZ1hD-o5jSTmv6P8_zIi)wj;9a{{AWwrO*UjYadRv01#kW_OFGxLIA3qc z2E2iFBP>}v!IJ5%MLqz7 zU_KiT&(1O>dA}u<0C$fcK;7?Ja@}cDj)GIr2dtY9VD6K|w4M+4P1mE)<2^%S8W8{Y zDXnfGJGCS+uzWicb5_$npoAV+cHP{ zdB+(;JbU62Z+@6P$9bllxDe(_W-pLFz5?Ds0W#w`V#;ubT6m@rbh<@KmzWKzSevP)CAzsb{#6@3i$hOMF=O&(V;Z2rQc?JGMCv1R6`Xk&G zImee&(Udkj4cYYgj z37*Y>2cYT6Yl)>!eCRrz4LQuq!2x*RD}ol0OYzFri^Y0Pqc(j7SnGwn)YNczF$P*wnASvM2m)4 zQnrYg^Mfr}z7SlbG*e=U6+IEdv}Xl#Ogzq6#J;ZN12^M#QwEN+&?o^2p!~;9dMkfWz0j8PXgKjK1YKmr>b}3y3*=@2euuz{|(tn3E^q@#BVE zLj3BA$ia4auGRadc)-1w&%AF%E~mX@NZIP9T(kzcy-r#FINx!xsN83!fXC^VI z>DOPDGB+LR>v%&(a*lFQB3KjRd|8byrliJZTD5FP~w>fu`r*?l*7 zRQ#@j4kwYhaVe%86jPRX!QmK7o$cX?YrtG=Yf9QQL(-GjhrH61sq2Vu&za7scMNH= z!<6e1!RQ!l$QeEyUmDNZ&NlER_mXF$H|fKm1mcP_FWupr<;=yQQN;3|VaZwaycr5hkr52pQg$JvkPiir53!rt>SEkIt#!P{yPl316cBm;Ep!3^zfd%u9DfeG) z$bi$(e-meV%UV)@8S~Rhq(e34G@f(4A6imxEiu+#6#40|rj*S>&Fv7`_8B(g5ST2- z(D_;D<2~qvE%Y}L?6Nlv$+(BMW3e$?(OJmeb0@eDZ!G9;$%FeuR-vDs-^x4;G31_4 zO!;LA^X(N`u^L*ThgOV6pEJHoV&Mh&c=B0dzccpnnWo%#6#6}9$>-q7RD6W}`Ad=Q z$>_{goK22mN(NYx^0_HrVtcBuKqtaq1()%6Cz0FR5*vOpv25CbjZzPriYz|A0e=)+ zo7M2uz-i3aMe38(A-za=~cy%4L>(TE~*sKY+)I?7DGlCT2dXp*)aiIKNlHh?v^g3 zpYYeaZ7dm77p%5r#HgQy&BZ2{AFdm^z1dswpQNlS_b zfwhT^N*yNhvlv_o@}Swxw_CFDaZ8?r9{>2#l!wse3m#_tRk6#oSDx`? zp>tb&YRa|P!#h6WO!f@=&3LOLH&0hY2QV)~;PoR_MVeiW&K?eL4>hC^J$Bn`hMYo& zTu7ZaJOu9CZODHv_!IDBt@}l~-3Je(S+bJ*UETsWs2u0M-^UNB3kK0FWPCX`D~YkC zGsey8Tsrgko*~b@Ysh~yuD;l_4(Ps_8J$B+0lqMM;X{7aGN&&ikxl&%czAV z^JZaFR~XU^xjJx(C2yk3AH~1A9$R%g*Y%+3%u5VeN&d@ri`?}D*nY_TkRz5%foE3! zmq_f3*jDt)64JByWWy$5C$>N<=6wj~<-2vk-l9uy#Rj)oC{jDykZUTLGQEg8Gx2%O z8Zr-kUSW>ddhMxC4O!RMlILzSBq|U4G!DLOhHb~EnT(ykFv^tosjt>kmTVep%JwRj ze3xR$iWEZ@DfzzGlyTf2+LbXO%k3(QZ1ozvfVO*~Wv0j+^lD%9Z~8$) zHZDZp;d9h$0IwvY@3=p6vLOeVpRef0j-Hmpq1!u50!s@1exozK>NoInQ%nB(nJJ(3 zGG$F4LwZ4jJ1;`#XIat^d%l^!>wSXkqbt7MiGD+mEb#F@5&ay01OCVN*s*e!44rSF zw=DU(kh-vA<32@Zmx&~t5Sd=flq%QZf9_}QV!@n37BkQ*4VjO}2GGYJ@j14N>>ZCz z8Udcw3R7Amd&8<>FPQsfR~b@&r3DJK$Xa-?Jp8^58K}WnrcS5KUoF{yJ})!Vkfpz3 zUxu18g|R=_7e0F)Ir|75!@MM5v-bBB*$JKYL$hj(eg7NqOs*x*4!5KQ<9}kMAy?A& z>Vtk=88sI^uWibq1=x>)mQ3mb4SuFA+C9PC?Yx3jX&iI>G<=vvyU0fJE|Jbf$P0aX ze=>d`IxHT2lk_@1U1$8FULtSJ#;1VSZ*2#bB!0fqMGa`X$1qbKMQ17<8kdP*=s{;P zpSSJmv`9LqGvwC9(;|A)Q6i&3 zr{+iTlc4XG`K(_SU<-$s(t8blcq;n#B>b_#lJ(4Q$5&bFFbB89A-~W+r5mu}Bhd-n zu#vm)&*qwvg3PP(E$QEJZ3SE7CQBAHWc*!3+QVxn;hlxp)bH@~+T%k^ zN6$_{X7>FAA3uW*XTDyniC;X`lJPar=R?6r+hfU|3s~ds1uqVpT<-%zw%>2ajH}UM zXAH@F82Olr-Alx$WR7Fdb!VdRCD1>2!yhY_VAqhLM;aq*_)^i|DY~&XVjjkxw&XSZ zv2@0m*wK`|__WKQL(a9x)JAxXbW@(lHOE<}AVUxK!QNfL{0+t?G(k_k%vvl1n{g>R zxH)UvSE2D*=DedNC$Oo_*Rux%@2ntCC;YwURlp@#g)G6NCto1i9lmP4YfTvf-zXn` zUS&gmLT0RS==vu3?Tq_@T9&*=o{^vU^K3xg2cdTx#EYbK$Ir!fENA?Wkw1MDyw}W< z9*-I_Hjh~21zgv~zSd%0oNdW*=DIaH<%5c>Ezli{v1^B#BKrryUA={VVqa?>w{SYp z>zlx=gQm*9#e9S8;b&BU?(J@aZ+}J}(MLBUS3f-@(&t4(zS(KWcx3wFma#^Kw%gFA z=*EI|e_K+iV$!o$zw>3yXV#R*^vG4}kcdwV{xnJMFMrzq$~wP$`k-soML7~IVM7L} z@~C3_`-=f3+ zW6ca1QpS*)Gja|7O-)E@E zBK(wH-{Uv5GNn^(L%ihw6h2Hn3)S9NV-UUEf}0_8C)VJ%$}L(I+vc zEZl6!f#HVqq3mr*=r??>iyNUYo14;S7W&{6eri1X7azi>>%h)=l(hkQjORdjEengk_N9J>SSz?fX4&@Gfj9tzZIfATwayLHMNkcBq zVeHV%y9fU_nspZQ-}?;fz84I6i@KYSfrd%w6ZG#i z;Jl3m$v>_`weOjKz)C&Fv1dvp+-;C9z)1Kk4Js<$iY)}s4<^!Hu-kb zXGevL_@qMz8{4FeQzzdP+i}SnQlr5=i&U1B&n87^T(WZ9Q}Nf-ca47BHnW;t2kY(j zzuzy7|EK5%t@!q+hKiAAsZAj9^v+K8W(?2EPUi^dF}~|$w?WJrGv7=1t{MbJWnT3tn;NNS(O|#gtRA(W{XvkizG+jMU|xnpbru!auJDD{
eQpYqjlP=X7e6nQvDc7 zSw$y>3s}hC?BX8d`y4w4UTFO#w^3diIc=zKsYCmBIoFptDKb6ENfW1RQ>UyeA8y&m z<;qHPr<^*Mq1xoTU3Pm*qC0!GPJVSBL*?hY`5H=ZsCFW^q4EFJH`;!l(fEH#-qd%P zEsCi!yF8$DwbIiC zBxOg`HFw0vwaTx~r-aUpOKaQasI0v180F+uXK_?srMHz~QhNJBv1*UyzM7wnypE6T zzc?pN9bgbX-Yf!mKn1mp^uV@#s&C_*_7Woc9(Gatn|%fL7pyICD^Sn)->(N`m%M_p z;S~k%IsVk0PCb!*A-g~J8BleuIIK&dcb&Q>I(3youMkwE@al>^2#oVCr_NdU9}4S_ zw;`SSdHVNE>Z$SnKxR^33xi3MtBwt4<~j3lk3+M#h&*;vpZ*YCffT1KwFYyZT=VD;{m)3^IV>YiDwZrTXcU5b3D15oyG zgYpr$<%~h&|7rX`jsJHM^3;~3gjL0(k6Cyw{=c%7D#eiPDSp*Ee6^m7uwIY2o>MkW z)$iI+wGL7?RNd!^eLu22h`7qPMLOaWM}O$`zdu%e6=-{bv#yH9CXUU8+;{&~ z<7DYSv&Ul3o4uBG=2ox&_4?mtD!u+!dd}TjQGSqtyhUEam6i59Q+iOZ|NVBrUH|I! zzn^Cm|3u~;z5dTfcKkkt#{bv&|D5^L>;K?7Ke+JK>wkNTO0WNuffMQ3rM=>efvwvW z?-TGHj1DG!jZ{#tM$hJ)$!zDWNMzegctb+5{!^5Zv<}z%!YaE z!QOcS+%3+ZKQr29D1qU@3GpW#@xn=EQ=5vU!VWi=l}Kj|3CZu|En*64cG&`)pYQL8ldAzyGfss z4v-F#Hj_pi@ZT?gyD63W8nT6hTaDWjKMNo20N7J$;O)!>|EJ-@U;%;kW#))91()Zg z*YJ7p9rydd$E%4inJ#iT4*#f+DcM<;dnyatw3roJkqw_mel&c*B@tpuB}xgnjN08bRG$(c>?H`z;?aXt2Q zHdsO6w6&{)O}hXbNbrlUOa=25|L=Nm&w6Kqfp{E0k$yJ<2T9{8{D&-XbT>5xGzChe zKxq6w6_Y)^|GDx1+H%-mB~+>ORtNw2r{n*z4#ReY#|pILE(Jmbx-re%n0%39niYE% z77MM|Gdtdy8-vV!=5H|=t1tY1cuY2Rep|&|bHjm!#?Dh`!b6{_l5YQE{_Y@RuF4(B+x%XFC3$j{nCx!q%5|3|4h0)sBxC)J8h~Uw|h5fTIEZtKjw>_bZG* zJ`J;D`tdm!cvZiT|Ia7CrQ-kdDoFS=SpU-$&=k-V&=k-V&=k-V&=k-V&=k-V&=k-V z&=mL+C=m50w4s~O6wnmV6wnmV6wnmV6wnmV6wnmV6wnmV6wnmV6wnmV6wnmV6wnmV c6wnmV6wnmV6wnmV6wnmV6wnm-zoo$c04i+d1poj5 literal 0 HcmV?d00001