From 5ea724e809db1641237ad3704cd6d872f315c6a3 Mon Sep 17 00:00:00 2001 From: JAJames Date: Sun, 26 Jun 2016 06:26:50 -0400 Subject: [PATCH] Added GenericCommandNamespace Removed IRC.cpp --- Jupiter/GenericCommand.cpp | 222 +++++++++++++++++++++++++++++--- Jupiter/GenericCommand.h | 81 ++++++++++-- Jupiter/IRC.cpp | 27 ---- Jupiter/IRC.h | 22 ++-- Jupiter/Jupiter.vcxproj | 1 - Jupiter/Jupiter.vcxproj.filters | 15 +-- Release/Jupiter.lib | Bin 318142 -> 323784 bytes 7 files changed, 299 insertions(+), 69 deletions(-) delete mode 100644 Jupiter/IRC.cpp diff --git a/Jupiter/GenericCommand.cpp b/Jupiter/GenericCommand.cpp index 12b3a4b..0fcb4c1 100644 --- a/Jupiter/GenericCommand.cpp +++ b/Jupiter/GenericCommand.cpp @@ -19,14 +19,19 @@ #include "GenericCommand.h" #include "Plugin.h" -Jupiter::ArrayList o_genericCommands; -Jupiter::ArrayList *Jupiter::g_generic_commands = &o_genericCommands; +using namespace Jupiter::literals; + +constexpr const char GENERIC_COMMAND_WORD_DELIMITER = ' '; +constexpr const char *GENERIC_COMMAND_WORD_DELIMITER_CS = " "; + +Jupiter::GenericCommandNamespace o_generic_commands; +Jupiter::GenericCommandNamespace &Jupiter::g_generic_commands = o_generic_commands; /** GenericCommand */ Jupiter::GenericCommand::GenericCommand() { - o_genericCommands.add(this); + Jupiter::GenericCommand::setNamespace(o_generic_commands); for (size_t index = 0; index != Jupiter::plugins->size(); ++index) Jupiter::plugins->get(index)->OnGenericCommandAdd(*this); @@ -34,18 +39,48 @@ Jupiter::GenericCommand::GenericCommand() Jupiter::GenericCommand::~GenericCommand() { - size_t count = o_genericCommands.size(); - while (count != 0) - if (o_genericCommands.get(--count) == this) - { - o_genericCommands.remove(count); - break; - } + // Inform the parent + if (GenericCommand::m_parent == nullptr) + GenericCommand::m_parent->removeCommand(*this); + // Notify plugins for (size_t index = 0; index != Jupiter::plugins->size(); ++index) Jupiter::plugins->get(index)->OnGenericCommandRemove(*this); } +bool Jupiter::GenericCommand::isNamespace() const +{ + return false; +} + +void Jupiter::GenericCommand::setNamespace(const Jupiter::ReadableString &in_namespace) +{ + if (in_namespace.wordCount(GENERIC_COMMAND_WORD_DELIMITER_CS) == 0) + return; // We're already here + + if (Jupiter::GenericCommand::m_parent == nullptr) + return; // We have no parent to start from + + Jupiter::GenericCommand *command = Jupiter::GenericCommand::m_parent->getCommand(in_namespace); + if (command != nullptr && command->isNamespace()) + Jupiter::GenericCommand::setNamespace(*reinterpret_cast(command)); +} + +void Jupiter::GenericCommand::setNamespace(Jupiter::GenericCommandNamespace &in_namespace) +{ + if (Jupiter::GenericCommand::m_parent != nullptr) // Remove from previous parent + Jupiter::GenericCommand::m_parent->removeCommand(*this); + + // Add to new parent + Jupiter::GenericCommand::m_parent = &in_namespace; + in_namespace.addCommand(*this); +} + +Jupiter::GenericCommandNamespace *Jupiter::GenericCommand::getNamespace() const +{ + return Jupiter::GenericCommand::m_parent; +} + /** GenericCommand::ResponseLine */ Jupiter::GenericCommand::ResponseLine::ResponseLine(const Jupiter::ReadableString &response_, GenericCommand::DisplayType type_) @@ -61,14 +96,169 @@ Jupiter::GenericCommand::ResponseLine *Jupiter::GenericCommand::ResponseLine::se return this; } -Jupiter::GenericCommand *Jupiter::getGenericCommand(const Jupiter::ReadableString &trigger) +/** GenericCommandNamespace */ + +Jupiter::GenericCommandNamespace::~GenericCommandNamespace() +{ + // Murder the children + Jupiter::GenericCommandNamespace::m_commands.emptyAndDelete(); +} + +Jupiter::GenericCommand::ResponseLine *Jupiter::GenericCommandNamespace::trigger(const Jupiter::ReadableString &in_input) +{ + GenericCommand *command; + Jupiter::ReferenceString input(in_input); + + if (input.wordCount(GENERIC_COMMAND_WORD_DELIMITER_CS) == 0) // No parameters; list commands + return new Jupiter::GenericCommand::ResponseLine(Jupiter::GenericCommandNamespace::m_help, Jupiter::GenericCommand::DisplayType::PrivateSuccess); + + command = Jupiter::GenericCommandNamespace::getCommand(input.getWord(0, GENERIC_COMMAND_WORD_DELIMITER_CS)); + if (command != nullptr) + return command->trigger(input.gotoWord(1, GENERIC_COMMAND_WORD_DELIMITER_CS)); + + return new Jupiter::GenericCommand::ResponseLine(Jupiter::ReferenceString::empty, Jupiter::GenericCommand::DisplayType::PrivateError); +} + +const Jupiter::ReadableString &Jupiter::GenericCommandNamespace::getHelp(const Jupiter::ReadableString ¶meters) +{ + static Jupiter::ReferenceString not_found = "Error: Command not found"_jrs; + + if (parameters.wordCount(GENERIC_COMMAND_WORD_DELIMITER_CS) == 0) // No parameters; list commands + return Jupiter::GenericCommandNamespace::m_help; + + Jupiter::ReferenceString input(parameters); + GenericCommand *command; + + // Search for command + command = Jupiter::GenericCommandNamespace::getCommand(input.getWord(0, GENERIC_COMMAND_WORD_DELIMITER_CS)); + if (command != nullptr) + return command->getHelp(input.gotoWord(1, GENERIC_COMMAND_WORD_DELIMITER_CS)); + + // Command not found + return not_found; +} + +bool Jupiter::GenericCommandNamespace::isNamespace() const +{ + return true; +} + +bool Jupiter::GenericCommandNamespace::isUsing() const +{ + return m_using; +} + +void Jupiter::GenericCommandNamespace::setUsing(bool in_value) +{ + m_using = in_value; + + if (Jupiter::GenericCommand::m_parent != nullptr) + Jupiter::GenericCommand::m_parent->updateHelp(); +} + +Jupiter::ArrayList Jupiter::GenericCommandNamespace::getCommands() const { - size_t count = o_genericCommands.size(); - while (count != 0) + Jupiter::ArrayList result(Jupiter::GenericCommandNamespace::m_commands.size()); + Jupiter::GenericCommand *command; + size_t tmp_index; + + for (size_t command_index = 0; command_index != Jupiter::GenericCommandNamespace::m_commands.size(); ++command_index) { - Jupiter::GenericCommand *cmd = o_genericCommands.get(--count); - if (cmd->matches(trigger)) - return cmd; + command = Jupiter::GenericCommandNamespace::m_commands.get(command_index); + result.add(command); + + if (command->isNamespace() && reinterpret_cast(command)->isUsing()) + { + // Add commands from namespace + Jupiter::ArrayList tmp = reinterpret_cast(command)->getCommands(); + + for (tmp_index = 0; tmp_index != tmp.size(); ++tmp_index) + result.add(tmp.get(tmp_index)); + } } + + return result; +} + +Jupiter::GenericCommand *Jupiter::GenericCommandNamespace::getCommand(const Jupiter::ReadableString &in_command) const +{ + Jupiter::GenericCommand *command; + size_t command_index, namespaces = 0; + + /** This is broken into 2 loops in order to insure that exact matches are ALWAYS prioritized over inexact matches */ + + // Search commands + for (command_index = 0; command_index != Jupiter::GenericCommandNamespace::m_commands.size(); ++command_index) + { + command = Jupiter::GenericCommandNamespace::m_commands.get(command_index); + + if (command->matches(in_command)) // Command found + return command; + else if (command->isNamespace() && reinterpret_cast(command)->isUsing()) // Search namespace for matches + ++namespaces; + } + + // None found; check namespaces + for (command_index = 0; namespaces != 0; ++command_index) + { + command = Jupiter::GenericCommandNamespace::m_commands.get(command_index); + + if (command->isNamespace() && reinterpret_cast(command)->isUsing()) + { + command = reinterpret_cast(command)->getCommand(in_command); + if (command != nullptr) // match found + return command; + + --namespaces; + } + } + return nullptr; } + +void Jupiter::GenericCommandNamespace::addCommand(Jupiter::GenericCommand &in_command) +{ + if (in_command.getNamespace() != this) + in_command.setNamespace(*this); + else + { + Jupiter::GenericCommandNamespace::m_commands.add(&in_command); + Jupiter::GenericCommandNamespace::updateHelp(); + } +} + +void Jupiter::GenericCommandNamespace::removeCommand(Jupiter::GenericCommand &in_command) +{ + for (size_t index = 0; index != Jupiter::GenericCommandNamespace::m_commands.size(); ++index) + if (Jupiter::GenericCommandNamespace::m_commands.get(index) == &in_command) + { + Jupiter::GenericCommandNamespace::m_commands.remove(index); + Jupiter::GenericCommandNamespace::updateHelp(); + return; + } +} + +void Jupiter::GenericCommandNamespace::removeCommand(const Jupiter::ReadableString &in_command) +{ + for (size_t index = 0; index != Jupiter::GenericCommandNamespace::m_commands.size(); ++index) + if (Jupiter::GenericCommandNamespace::m_commands.get(index)->matches(in_command)) + { + Jupiter::GenericCommandNamespace::m_commands.remove(index); + Jupiter::GenericCommandNamespace::updateHelp(); + return; + } +} + +void Jupiter::GenericCommandNamespace::updateHelp() +{ + Jupiter::ArrayList commands = Jupiter::GenericCommandNamespace::getCommands(); + Jupiter::StringL tmp_help(commands.size() * 8); + + for (size_t index = 0; index != commands.size(); ++index) + { + tmp_help += commands.get(index)->getTrigger(); + tmp_help += ' '; + } + + Jupiter::GenericCommandNamespace::m_help = tmp_help; +} diff --git a/Jupiter/GenericCommand.h b/Jupiter/GenericCommand.h index f1ecf39..26f11ff 100644 --- a/Jupiter/GenericCommand.h +++ b/Jupiter/GenericCommand.h @@ -26,6 +26,7 @@ #include "Command.h" #include "String.h" +#include "ArrayList.h" /** DLL Linkage Nagging */ #if defined _MSC_VER @@ -35,6 +36,8 @@ namespace Jupiter { + class GenericCommandNamespace; + /** * @brief Provides the base for generic commands. */ @@ -55,6 +58,7 @@ namespace Jupiter { Jupiter::StringS response; GenericCommand::DisplayType type; + uint8_t error = 0; // 0 = no error; 1 = command not found ResponseLine *next = nullptr; /** @@ -65,8 +69,10 @@ namespace Jupiter * @return This. */ ResponseLine *set(const Jupiter::ReadableString &response, GenericCommand::DisplayType type); + ResponseLine *set(uint8_t in_error); ResponseLine() = default; ResponseLine(const Jupiter::ReadableString &response, GenericCommand::DisplayType type); + ResponseLine(uint8_t in_error); }; /** @@ -76,6 +82,35 @@ namespace Jupiter */ virtual ResponseLine *trigger(const Jupiter::ReadableString &input) = 0; + /** + * @brief Checks if this command is a namespace + * + * @return True if the command is a namespace, false otherwise + */ + virtual bool isNamespace() const; + + /** + * @brief Places this command in a namespace, creating new namespaces as necessary + * Note: This moves the command into a namespace relative to its current namespace + * + * @param in_namespace Name of the namespace to move the command into + */ + void setNamespace(const Jupiter::ReadableString &in_namespace); + + /** + * @brief Places this command in a namespace + * + * @param in_namespace Namespace to move the command into + */ + void setNamespace(GenericCommandNamespace &in_namespace); + + /** + * @brief Fetches the namespace this command is in + * + * @return Namespace this command is in, or nullptr if there is none. + */ + GenericCommandNamespace *getNamespace() const; + /** * @brief Default constructor for the generic command class. */ @@ -85,18 +120,48 @@ namespace Jupiter * @brief Destructor for the generic command class. */ virtual ~GenericCommand(); + + protected: + GenericCommandNamespace *m_parent = nullptr; }; /** - * @brief Fetches a generic command based on its trigger. - * - * @param trigger Trigger of the command to fetch. - * @return A generic command if it exists, nullptr otherwise. + * @brief Provides the base for generic command namespaces */ - JUPITER_API extern GenericCommand *getGenericCommand(const Jupiter::ReadableString &trigger); + class JUPITER_API GenericCommandNamespace : public Jupiter::GenericCommand + { + public: // Jupiter::Command + ResponseLine *trigger(const Jupiter::ReadableString &input) override; + const Jupiter::ReadableString &getHelp(const Jupiter::ReadableString ¶meters) override; + + public: // Jupiter::GenericCommand + bool isNamespace() const override; + + public: // Jupiter::GenericCommandNamespace + bool isUsing() const; + void setUsing(bool in_value); + + Jupiter::ArrayList getCommands() const; // differs from m_commands in that it checks if it's using a namespace + GenericCommand *getCommand(const Jupiter::ReadableString &in_command) const; + + void addCommand(GenericCommand &in_command); + void removeCommand(GenericCommand &in_command); + void removeCommand(const Jupiter::ReadableString &in_command); + + void updateHelp(); + + virtual ~GenericCommandNamespace(); + + protected: + bool m_using; + Jupiter::ArrayList m_commands; + + private: + Jupiter::StringS m_help; + }; /** Generic command list */ - JUPITER_API extern Jupiter::ArrayList *g_generic_commands; + JUPITER_API extern GenericCommandNamespace &g_generic_commands; } /** Generic Command Macros */ @@ -105,8 +170,8 @@ namespace Jupiter #define BASE_GENERIC_COMMAND(CLASS) \ public: \ CLASS(); \ - Jupiter::GenericCommand::ResponseLine *trigger(const Jupiter::ReadableString ¶meters); \ - const Jupiter::ReadableString &getHelp(const Jupiter::ReadableString ¶meters); \ + Jupiter::GenericCommand::ResponseLine *trigger(const Jupiter::ReadableString ¶meters) override; \ + const Jupiter::ReadableString &getHelp(const Jupiter::ReadableString ¶meters) override; \ static CLASS instance; /** Expands to become the entire declaration for a generic command. In most cases, this will be sufficient. */ diff --git a/Jupiter/IRC.cpp b/Jupiter/IRC.cpp deleted file mode 100644 index c6aa744..0000000 --- a/Jupiter/IRC.cpp +++ /dev/null @@ -1,27 +0,0 @@ -/** - * Copyright (C) 2013-2015 Jessica James. - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Written by Jessica James - */ - -#include "IRC.h" - -const char Jupiter::IRC::CTCP = IRCCTCP[0]; /** IRC CTCP character */ -const char Jupiter::IRC::bold = IRCBOLD[0]; /** IRC bold character */ -const char Jupiter::IRC::color = IRCCOLOR[0]; /** IRC color character */ -const char Jupiter::IRC::normal = IRCNORMAL[0]; /** IRC normal character */ -const char Jupiter::IRC::reverse = IRCREVERSE[0]; /** IRC reverse character */ -const char Jupiter::IRC::italicize = IRCITALICIZE[0]; /** IRC italicize character */ -const char Jupiter::IRC::underline = IRCUNDERLINE[0]; /** IRC underline character */ \ No newline at end of file diff --git a/Jupiter/IRC.h b/Jupiter/IRC.h index ed34aa8..9c31789 100644 --- a/Jupiter/IRC.h +++ b/Jupiter/IRC.h @@ -1,5 +1,5 @@ /** - * Copyright (C) 2013-2015 Jessica James. + * Copyright (C) 2013-2016 Jessica James. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -42,13 +42,19 @@ namespace Jupiter { namespace IRC { - JUPITER_API extern const char CTCP; /** IRC CTCP character */ - JUPITER_API extern const char bold; /** IRC bold character */ - JUPITER_API extern const char color; /** IRC color character */ - JUPITER_API extern const char normal; /** IRC normal character */ - JUPITER_API extern const char reverse; /** IRC reverse character */ - JUPITER_API extern const char italicize; /** IRC italicize character */ - JUPITER_API extern const char underline; /** IRC underline character */ + constexpr const char CTCP = 0x01; /** IRC CTCP character */ + constexpr const char bold = 0x02; /** IRC bold character */ + constexpr const char BOLD = Jupiter::IRC::bold; + constexpr const char color = 0x03; /** IRC color character */ + constexpr const char COLOR = Jupiter::IRC::color; + constexpr const char normal = 0x0F; /** IRC normal character */ + constexpr const char NORMAL = Jupiter::IRC::normal; + constexpr const char reverse = 0x16; /** IRC reverse character */ + constexpr const char REVERSE = Jupiter::IRC::reverse; + constexpr const char italicize = 0x1D; /** IRC italicize character */ + constexpr const char ITALICIZE = Jupiter::IRC::italicize; + constexpr const char underline = 0x1F; /** IRC underline character */ + constexpr const char UNDERLINE = Jupiter::IRC::underline; } } diff --git a/Jupiter/Jupiter.vcxproj b/Jupiter/Jupiter.vcxproj index 879f469..195d8d9 100644 --- a/Jupiter/Jupiter.vcxproj +++ b/Jupiter/Jupiter.vcxproj @@ -186,7 +186,6 @@ - diff --git a/Jupiter/Jupiter.vcxproj.filters b/Jupiter/Jupiter.vcxproj.filters index fb9aad8..2221399 100644 --- a/Jupiter/Jupiter.vcxproj.filters +++ b/Jupiter/Jupiter.vcxproj.filters @@ -63,9 +63,6 @@ Source Files - - Source Files\IRC - Source Files\IRC @@ -87,9 +84,6 @@ Source Files\Files - - Source Files - Source Files\Files @@ -129,6 +123,9 @@ Source Files\Object Extensions + + Source Files\Object Extensions + @@ -188,9 +185,6 @@ Header Files\Files - - Header Files - Header Files\Files @@ -266,6 +260,9 @@ Header Files\Object Extensions + + Header Files\Object Extensions + diff --git a/Release/Jupiter.lib b/Release/Jupiter.lib index c6114f2b774f0117f88b380b8ee70a19583f45c0..551e1a5af82bb156f010c4a2828b3d0c1d7c4b0c 100644 GIT binary patch delta 46451 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 b7h(&-I$EfDmz=7B5!kByQMLM#6Z(Gu1{lz> delta 42153 zcmeIbd7O?_95;NH3u7PqZpO}F%-HvtvG0b2B!-aPkR-`HB$d!`<4D%Zl4OaD5JM7@ zElIMclEf%U63_Q{uIoN?pBZ|d=lwjN=Y9Wp`+UAG?(@6O`R(U-miuo1#R5A&E|6R* zOH@?-=(;Mllq~9NP_tGz{g;q~v8<0X@$Xe8SwSXwJ0?Hv@8JTTz>WYC@ONMr+BNX` zE?{Q>Xxo{4LPGXa~|vIqWX2_XmrD~8n^s3Tw#2^BKVz)L%pP z^9^URAMkBm4M(n9Kz%s8uH>AMsVJ0=VHh^%+bI=L!hZI7kLQ9 z6F3M40Vkomi@p$q;Oh-;HDHF`z~H$WvULtf1eAwF8c=z8pxgo%6~ZAYaIzY6mg2Kn zFo$gHLSS&hiJltHQ(zj9g?4H<3*Z-k94DBM{*dFQyLcX)Yi!077(c;9_U=p)a@=>3 zrwx;YyfZw6;0fdeBZM3ST;!_FBq4Vm571g}Xl-Lb4;Os+%LV3q1P3H+ZsTIp1m+Mv zF6yG$EaniJmv+$rYS%c8C(v+;i{)dOLwJXINX8R*_ne2icmnT@)R6OhgP5ELl+5p9 zE1nvs@C1G?>EQyNV6^`g50Q8R{T8`MxD2}j>*l*y50BT_iYKrEwkM>*@d%Hlx$t#M zVh*9J@BnVRCNp^!>Li?j2?(d>y7<04lNyMS?}5{xA$&K{#pkz~BM(>0A9W70Rz1XydLV}$<0h^ zMBoYZ?&{*HMNDcG#uLa66%)EPbMY7?CWLHtk%&G4=Y2S-kN#K4Tsf6)&#Pja*+eHfNV1b@sB@b zCD>V`DV{)O#4MpzvWv1ym?V@d?V?*GlZ3}+xd?@Z2tC@kC;+Vj&R1Do9C{6t4R8dB zh;Z_Pi?7=t{=Y`de}jZTIF{t%Xier2zU}Gan;B>azD{*<>^A6tBY2l^a;S?FOPE7A ze%!^eT%ZFEpK7cf!gtqPoLbEs!gmmq;QJ0z19BF;-Vb%Z2~#9DX7cJ3<{*b_ zyuOt=fQ-83qRnmC4yaPi#nTIzBvgk@3H>Ly7z76;^uOm~%pHU<0N>FVTN3uiA95@P zB@9^TV(@(?35|Yo(HI^}=zQEozckF6K;_jg28J`Kfj$NTH4eLo>JNs24t-oiuVE5! z_6_$SVE=t^mN^KgnFpDi0lU3gmpP61K@*Lcvld=Y`0$Q~Oa()P^W{B&?mX}Vv_ZIx zPz0RT<6X1~We(v5L>FN~4i{~2GY62JDF1f?>OopU{V6UYb}&geH^IdZtuO$5pw&qi z&;8CELR)+W$kz8V_oO`LVv^9gr-surl{vY=1R(Fjwt&O?yT~)0IfPt!Tx5Z-5h}f>A#d)4{qcvq zhRy*eWQU8aXP84M+rmYemCPZOJ>;U?MCK5}8hW^ZCs3ici{}wugztko&TRd@zR*9DdJ5-pb4& z|+h{2gW@TyN;%G@eM&`6FHU@~PgZ&ALo#!1-zdwcrbYGauR^ z)JJwBWW(PHAy6eC+ac}=)jD{%fG4nbD3f~_lXKy$lUp%oCm8PtCc7hbzdj%Ke**(d z--AMO19O(u1y17M$n9@jX7a)y7tO9PNyxIrLrFXVXQB%UsR-Y0c5&hs3Qu4I@&jQ# z{th^OhPxO$1LmE<027*HSiqF2*_X0xp+Y^se!>?04Df~;t#@B7cWj?l2E*%ixN;1q4+%)MW!)H zD16mLQ6wUb`*;Gy7HK%!iZd5i@C3GRb@6F;<`8yFbK%TjK%!R0A5p83~PHQo_mz58LnrR<+acIjhd#FK4hYfa4Jg zKrMuV(2B-8c)o)&{HlvBJDEdB0h5HSgI#9w1mRpl}Dkhd)N|({SD%fVJKL{Jo%tv+xij$UBaPBcXCay{;|_+-44;$Uzs; z*O&vyF7O>f9KsK9<|Vp_gm8qKNiOOZ$NW!!)ZOEv&QRtMYC%du4a7Ggs-la~yUYRP zF*qpUctsamPBTeJnd0Io!c7BG9|g9waPjd5Ea8C`ke*O-A>to@$U80^XAIM*2fGmp zF4K@*_CO+_*^~It z9A4PPuyM>G3`Ke*4BzTvEqsJ966yxz*R?$y#}oJh4h%Shes}SBJLYJ>B##5HK;?v~ zms~v2fjJt!tN07hsk{f6q7(2&eit1|G6#@HP972f;9=hQPR6?W> zDx7msF^M^Z;t?(i^n#NDg=e`a5(#Goa*omPIsR0pF&i%tO2hF8MaOE$dyt;+4)Qo* zb()Lih!n!RS6r-uV-c2>cd-QCPnh?+3$=|&!iV`?tbj&WR7U<^aL>gebVgV?+{KzG zCJ7(l--Ne2xLDYjNkR)aEuqv-7iHnmgfdw@B;yIR3U%@LNG1v04!OwJg2{Y7{1Ljw zMfbH#YUIHa$e-vU-zg9ReYUtLg~17Z%DWgkjY-0=(i+a^b5P^M=DV(AmkVZi3X(2? zzYrF`=VD!dCJDZG5gvs1r@O$;g(SQ;#l`A&P&cp)QWBOEIyHF2!{u|*o`P4>`!*_ zl@HQ=1x$F)#fvMM1IWz_G@Oz{nZ{^H0m$~3T|}P1U_gy-E@sz+GzeY7l;bW&jb{#_ z*J~PbKbQlYnGi;!1@iw){E^(oMJO5pd3UIb&)|T7^VUHPnF#(_z4AT8&(2K(RJso~66%?R>O{F`v= z9S`Anh9fEE*N}g}G=$&baDY?lH5VnX!c@kcn0wvBU_1eTLk+ne0j!TX~;B44>%p*gn;}Essfyaoiya`B&Km-47TKe{fG>}DF$^DBJa7F zvlVj*Fb_-uvJ-rPQ2)M*2FM{Aw_yJU;Nlq%{-R9IMi#7d#zkE?pax#73)GwB;+esC z2WSZA)A$`vpwVy_gU4h40GOK??*;qQc<_&3mSufz6#=CDf#95xonb;x1s z@LBH}lJ$JdVb`lWtQ%1HW1QTzl&n)}$qoTc`%3mxf@IxhN><*d99FTT!|r`0*|I~D zb-=U!cFB$c*FTYL&Nd8&=RxMMLjxVQd4R*Fww7#R1<6|A-xHt40QhYFVK6wzVZ-}L zR`*-UT1ki1|5LI%Z#yh}hQoGDcG#MW5bQ07y)y*w0E@nq%omD3rXG~6djd|;`Z{c3 zZ%6{n9qh0iG*EeP4=gArSvUr*b`pPI>ab3;Bx@`sTO=Uu3CVUm<*=QFpp^v<6XPVC z4itV~vdzGR@#sIhWcPDO)+Uc+GxACn0xZZWeQW?etes1;Jh>%X0~FlounWMtj~v!! zv%@BAa#+!i9X6|(!%8=ISi1%eI}J=}=&&)%9md{qSTb<#U5C{LM!x5;LGvWbUlQ0V z*(spp&oCQsrN6@>fkpisb{PWCU+07R*E?)0Fm;2&`lmW94Yo__1}VCtV<6-#Bse44 z+|#hv_b>|(g1=AvPO{sdOEztvWbt1}HWYt9w^y>eiyby?iNg}{jJhP*HsJOF$;OP4 zZ0#_ZXSifZBS42|h;Jlp44fGS6#*d=@o(VFOZYdCngp9o#^6(+Az;8HFaXrY=O6hX z*~^lx1k$F00U-7{$;33t#=io8!t?5@cn1i59j16vvIwASZ!{&@}*!|Hk!?REsFm@LlEgoj*3~k}rYZFWe2R)S?pXY#S z+Cb_`@N}SdWyz9TNw%b{WToLlk=-Plg|R|I;R`)re^EfPtY10oHH6QOBe4BR*!^pV z75oNfIOedLM;+GlTZhfSzf9DQ`9k%Bn>>qLf|2XZiYu`C+^(hRBXF(tp9-i!n zByYmglO>ySmAoCk^18!rMZu>i$XVC(tM!aQT~KCo~A zynis_z7aIsShC}tVKRj3Y9G`SJ`hB};Tnixblj%{A|V=`f>QxR%t8Fm#7i^aJg+)z zUt@z~p7vzqP|c+rW%3AdDwKYi$t~o$yXQ2vQ&6 z8UcpS!TzoA!pT++`~5kn2t@ZjS5}9$DC_vx$}-4o zWs%9sIjmtA><{#=06RVpg7J_R&jsUPL#TcF2M!w#hs=d%=vap(jKE;PqMszY1qQoU zmFxsiu)M?e0wcqb>CpdC^m8fMVdJL5#L&w1MGk9L2xcq<`(Fmfa~{BM;J9*Lhphz1 zYr%2T%5c2jkn?NHNgxvczKqWYT|mZaCfSxO za3o-&14bm`82SCy2{_LNJlDfd`XD->jfh_*%Yhs}rMUznNWs~VE3zUv0liKkuY7~{ zk0k585uw-@8i2`t=kStv0d@h3PCyO-CcOx$iz7};Kr47oD}qE)7*19c4g@SJCRy=q z4!Z(u-Hs6Z6d7*^vQu>F^SATPAFPXvUh;1AH#9BpwkqG4c_Xo*iYceO`uAkTMX>k6h6`%owsmU zRtz?_3g!t6mLCJK6?hLg{wjRvHK<-;&Ug(D-vimRC&Kj!AH2O61_L@k!hNF=pO`WW z;(2Hxiv2s1?U%?8^$XdMh%3;s|8 zb4!%N?uI&S(lN;@9*6n1z&t51+ffV-wD94B4IhJn7Dy5$0Sq|Cfpi#fSwVD&fd<0| z?j^$GmqOjJ-}OzBUHcJf8`ysY9Rq2pka8%zeK@>)7<>qS--^FyT?@uX;+Xeqge!37 z3pnE-X!~&p0{D_%L1;{MScfOz*+BVD7!=6=hQmsBfKC5K@&RIR!xX^8zc3L&x>L2G z1z-mxOn^ojPk|=nD#BUud9MPn|E$8` z7HS=n6Dik^#@SF`X>?W;4BUg4zXR!3!z{}Y4evr*tKf*sp#CM0WF9i7LSp(*vdSx< zr3Ii{gos!vS=1UlKY&@^M*3a|%|gRFOF`3RG2fIyY6n7F!Tuv3hpoH87Wt6vLNP~o zhlD_4eiRS*Y)c<>fEUZ-Ic+FHXBa~1b4Y&*iDVZfIfTKVf@6ZA_ZB1bt%GU6==Apy z`(S>`dziu@z)mndaVer|J`xoe-3+Gp`oQ)4w-8p~Is}sK2iJGO^>J{$6I|DYbaU6D zM1vhG{)VIj48DSN{0r#t9Nq=a^$!M{1vA{2Y~7p4hV7Br?n2^x2)hNyknNzk>XMB^ z*4qLnynhNpw?}%9ME);604hv|ioZg59Y$u_jjCrq=6?M9y$OiZ7ZEy}k;zIT{f
    j792goJ z+7bQK!u;Q}wq%!pggPjn20?{$psuV?Dyh(&!WnxY4*}MKZb63HGTEM`?f# z2+u&pemEsmeFhpztc!MFQa$(q+J-hn6ad2;VImp~&z=iGzC_Ir2i^ZIX23njfCSsCld zI|1%Hpf%Qx|l_(r}#<(F)~($h_d1xzMhv5&x#_fJs&T=VJ%n$i{Zyu z4&IWF;BWGcVvE=-!uhNGr0Brw@)EKmFUD)jW-^;7BR*w2*<;_aQ*45GK}-@aiSOB8 z{0{${|HJR{tt^Fo!nU(*>}4@o6lbk@8(xA%v*J7t59PV|R#AwTerT{Ja1!$TzUA>@n7jJ`gX<&1AD!9dSq$mWAYe)|542jafJ=!@^h% z79pyLqN0c>APS1jqL!#FIpt*N@6%4$Da4G6=IcGDe}k<`8M8zzboDoFY~FqgUBsI<=>(^pTcj8 zKgA#7cTt<&6wO5o(Nb_xO2mm~;+R+`-WLhthUhHLiw{IRpU4lhN~{ZiiD%=rm=L8! zH=e}LiYNF?K8yF{m&6fvlwB83ipRK*cjmqqc~?G($BUyPzgRC`;nR3e;fQeY0-wO2 z5WPee(N}a5MPv`rMLZ_Diap|v_)FXpeMBGLmyhAk@+WyO-kU$g6ZvSKz#kXgMK|#{ zpUm^h>-+{k!N1|(@{_y}_9}9SqB2zE6KzF1kyYdrtwdg*Xd_ySJR+CKEu;t&Gx!iT zlnrBP{1pF=|IDxOtNa&!m>=QC_)-208_a&?*Z6PzIRBbA=Fz++f1Wqxb@)ZGUwkNH zMLt=YH4#lkwEPnL5Qo@m@iLpr3b4s+3acmT3odc_K{OJL#h2n|@sr5jjK#6e>;t}4 z@uj?&uda|%$mXmOYshMdY9dlp7g1s;AI5(WHN`>kqqr=}iO@u6oB12?W>BxGly*MC#6<5VI(NHuHSHv&k z4}Oaeq_iphUPZ*fojBeIL)@(o^!{mHwq z4Wa@2n%1P^KCij53nRwRqPN^ zvWEPF-D0^}E|!l~m*sd_euv#=f3ZK=r{W&V%kr?h>>u_wt0qI)Id+!q6x+mhm2)Al zQY=z(CjS4V{QvEw{1!stZN88%L!f4?sNXBoULTlBw|#eL~%++^{r{Qq7a_XQ{N z{}=MOFF29^XCANo|1gs){$IH~Yyo%Ec_*Hp&?%o!7ys8X`aJ%yoL-5WtnQ<<{(mT| zw_}U>68^uJ+j&)0W*IN^?zGY;aAJ0j6KV*6;rFa^U5i$@9?k0BhQ`aR7vIghexQv4sWBLc6b4G zc9W=?Qsf?AoJB2&^Lro>Ir zGUcP1VifoP{CS6z<+a7_yo$FJrBb@K6t@eeZ0IFUp@*JLrR;cFjLDrcake;{rO-o9&bTE!pLGQ_{+YWtLr zj$%oq7JMxt)ZMQ|WbsFzqNRkN5L;y7hn}G|Q{iJ^*N{_UO&)b&G7nd21$lP$*_%$e zlodaV;-cuI4*2}bs#R6X7Kv;rzx*Oz%Bq$`^Oh>|cacN=S%ueBOV6QY`c2WF`9P(?2V$QuE5t z?D1tr_4tG_Ce-@evV^*oSN=W-2`OmRl>*;^`%o(EjjGu*S)=t-a@Ij808xx zJF2CXWZ~dp105VKX*xj1TCm}zj9^Erz`D0fxz^25TE6LZ5xU;h+riTEG4CVDS41_c z>Z-U?Sm5)3064esj7VR$bj2p)4i67}KEI_Ck&7(Z0<0Hh4pUuXc^ws``GB<+mNC}4 z(BE-2ABUHUtL0^+ej{(NyqdH1WnIqpmX%L<9AEgxmA6wl`K0$z(h^s$)8ztG#FbVk zaaCGfEGMg~8mn>j;NJ+DE7-+CyLdiO4}@VvSlQqATvk=Rf-IXpU=g*ej>||=1^JZs zIr%W@B2Pu5_@s*NM{6r)GEbXIhDw|KcqQqYd^!d$uR2$fv1Ic8UgrU;rdBqu1;*=B z#e4)qYZmTRk+TEbLbb%z&IsAh`^d6!eAR%B70IrHkYtabON?!+sXm3Fpdh!?nIdtg z>r1_>nH&&b5ALuu$;|=xtI00zVDopl!zWdjeZAo|<&hs;{e?!#j^5|X+M$P-cJAl1 zB4umua~Rmww|1*0;4KPn^i)wqVN9c*d{uQu?b7%GRKaiHTB^KjOvJ(PA<*SZT)H zHF+hFxADm1TF8d3pjO&yt9CV!QT_}2b7o{uQ4ZA3+8EumBf4&$rb3}~&3QGnv?tDI z&k9%P%UI$m@ZwTc1Ql*_6IBr_XD{{!r~rbFs!5D&>J32NtZfyA7F?@S{WkKFD!#ES z6r5Jc(wd6gud_=P7GzON(0COWCu{g0%*&;&#HJgH(!kQuUQ{+iKV68fm&XV4QW2FB z=QR&Rb60APR;kTp5r5kBf~rO{6S*cwWFb>EQcdDyEwv#sFkLGOAkA)F^wSOOF8zp? zS5eJ*HdVd4tvWpo`kG7EVcUTIahJY{I=VH${QMR&LJw6#ZP=9E&+GsHtoKY=Q~gRJ^Ufd+eI zB{J!i^rf{=`Wgc5Z+sc+%An5lm^8s_s%TIR4N%2*lF{CfG(Bkonx2LQ5rnA2{V+9N zjknBc8DqGL>1>Rl?HpFf8?GjL8-d<#evIT&V++rze(Iba5J*8LLdMc@Rz=02Nd+0oDiNMl zySmDFcWlZCI`NaUkA+oep18Od(j{d>J(I!fY5vg?(){zB>eo#cP_w2;EP4-RqE)o? z(Zsa$8Arr@g4JQ^^m&pgg;xspTyjm#8VNmKvlgwo)DlJ1{a(fcGsnsciY^0$9xXViNg0}BQpStwMt5UCqhH-j!7x#c>Jc0(Zui9MOX%J| zIl6SPEL7L%@hgJ>*PofXK0uTVrm!3qm#6(n??wbmparFZL~}p|Ns{XKglz1Y5y?b5 z2qlxrC43Mg@I6M27k~KzLtw7{Ha972Z^X) zxhO+vmT5|VMfL4%X6$6l<(g-j%cp^xJWrrJ$v6UefpPs;L3QC1xPC^-bbwK@tx2ia zehsAeKjE5}N80#x)uoTIu{94(SI7F8OdUKSyn%ibxAF49wy|>j4E0stz?-_D(LPMl z&xC$rV&KEmkkK+qklDj#sa*-i!!jG?P4qU$Z+SUsRO^~FnyfbVGrBgtYh#iB&L(5s zct(^87Q{*ubJX(w!D&LjN|E8GSK|x9!7>_)7WlXnmtR}qIgrkUwr+0cmHf#=viPG$ zHC3rYth}o$9L+LSIP=t~0kV^qB+OQj?kpb7^JytKzM)DSgc2)gJH{&el_qMgLX}C5 zv{R%z>4HucfTQI*cq_Fwzs-p*plI_*lXeE_TP|rMl{m&sWi*yn1Z@y4Bt=9I70sx# zKv|^wq5Tj|)&XR1dt~*fBdZ)u`p`>}O+mIutsiV^6kSG^8RE^pGtj(PH5nq`^OR$l z)w&~Qmr!%8-}fM^>O0irJ-y?yWT>~K9|yXn$~R0#1luFPxMlohMCQ#AWTYa>T8J)p zdx;;GRr%gBqgfTVyf>5^Rmn82#?jVpnFf#skC7t zmi#8bCuK@K&DBvehs$c}{b91AH;g61N_xGrKLd}}7SAg6#wb&{TQ9Fxr4nuVX};1X zr5fOUGHK_LqGFJrSvyYn(hjx;R@J9Q7sxm+Tg~H7%@# zLr&g}g)f{tIHxI^-n84&^!6blU{*xsOhm?tnv%8?)}g;+yLsfpNl9SsUL^2(b@5r* z&QmjOCu#QEqh$lBV#6pAL#tVfE1h(xQq#RqrM6K$7@OWpaJlr6n*5x}#3ZzShl;mN zijOl%LHoV6$GKURc^Ar?FBUVDX3t9<%Of(5zGp$jz258FK0u6Njj7O_$ z&l~^Btfv%EB@BR`GUg2GOOHZ*ZB<9cr>}Qm5uNzSBA-A-F)_7Om+`@6rTZr3y>06J z3r0jeyj2`+$MDtnqBsi5Y1UM}0|a3&V=50KKsTyFhSuFRvB6Z(+rJs_HjMR#xH9itK8c&vcSGw0CPle`3Gp86(@+ zeGicYCIgC19rN{6-j@*b@xRIZ!J8Ns7kkwxpUFI#$Nrp}tE!}Avk__e+dgWpJbxm# z^kz;n*(r#DVZMhj5dRsrwl_@nroO&V7QPMV-6!MB>N`~q@>(n@ zzoM4Ps=_NKchbzJl}|Ietj#O|5-H zRtWBbxS~=-_dun{2~Fp(aYj!jR-&?4`bJ%R-Ol{h%y&}Z!hbd5I56p0N#I**uCBu0 zF#Eunr|MHgGuYFs>z~0h^mi(3hMbkIc6aL4-rqpom@Xq#-kHYSmg9e~M$P;W$3H{O zk9PdC)cl{0Kl34uPYmb;LAyZb;m*4c@hU3$FwgqX44_GAa=+k`4#^n*nt<~DMVFxB z!y-`|l{Pdksim`xu`FHupf=8du#aR!cR`F?Cc+sHi;*9x<)I2O4R%CJtSH1x;x~f>a!cv94Ik~51l`#Kupv5qnEn)DQ~EXEi{p46+<_XU(XGT2+pr` zqNhi1jZS`7|1Jzn`c`T72g`yjsw7cg9eq1JD+P9SO<8seWd6Jd>jqOLZubU=!2o}% z?Tcj3K%8QMuZN}u{%zHMv5fUvXi=s+rA66a)amt7#nk!5Cf}PfNmEgobcd)estUnW z);jucwS9?M+fnhSho(~Fu8Ll2_LcOa@vWt@KtbAGE{o=W&~r>o-+HZv498~QVp&|3 zE^jtjX#pHcl(Z3h&!ePk6zcoM$j|ANv|FYLX}95Dk5FA)kLCMQODsxvhmdMOBiwxw zuJ4oz>d5kd3aCHbPW?SVyBak`lvSPHG3KHD6FnlSmvL7J6}OQW%*Y#!=&FPEVz>%> z*Q}wnqG>Z)k43wc0zIj-Q$!gR`z~tN8Y|4Hwx*>GHBCzkW(ivVY*i|QQHm&QQ^rxV z-wSNY(CXhkNz|;>-j#$?VYd{#|N5Puma;Wnw%}lH(H(KoKv`vfM zoY*yts>kEhx>d${bhfGW*b@Y~IMxd>Q$+_Ay3J5nKAc;vUu}HYT5IH?cXv+3S|e;z zz z-VaPSrXts7q}5PTpAXs;_9ik0KI}F80`7>V?%~itsM|7oWsjK2dd$TT&eWV+dAd1E9 zc(5B-+sh@@;*I9o0g0qLCy`3gs~cYvZB^&(#tX<#v?R19Ev?ReWF*lWNeMnDzcybF zG>4%BctLwLdOG%Q_H43iHEVepj>93th2?2w)b`B*7qJ*GtNMLxUa@RZ4z@^Y16u^~ zo!JcK)$%Qdc?umZ7KKg))g(nG1{=rIW9A60bebcgRPLQ-*{->uTPIrBu4s;?UgBnnR>AthLeCA+KA@;ca(3X41*ywE zD6gfy-(@nYwQjGCS10txx;<-FCs1P1%3m`_r%ZL!Z>eV6L@zJv-t$!SG@9$GGJ9kX zl{3{o=GB{vS@w9#s{tUaM}!kSUFv?4x_Vc?ow{nIREcNB%LY-+ozNW!Z1;=Or)l(r`%M+m$pH_lvO@!7|YHg~uq2@CF z&gDx7jYrq4jKFO*h01eS*7H2e^4)gIcSM#{ZylD^0*)8ByQRCJO1QmC)9xbA6;$X` zy{Jj3UhF_5-qE>rfY*^4%BrxVrpU5}@1%UkFnr{EkyD*0W)!9qfVFAa*${^K6G}Rd z;v=5O9>zx(YQUxG`MB^Ev>9XtdRNL36zJ*4$>hCentzNt{^Ylss*gW2naUETn_B#} z$pcn__c#@J54&R>T;N$pU)@!y6XpPmM$ueQw&?*bOAp09W9kW`FN>fj2qyIdLF_k% z019=d2CB!OpeQW$0xum*p=(#FqRUa4Mn{{yi0Oy_B9h8iK9J4rEc&EcdJ;P?u_w)J zZk4UQsX4HLMC&-cp%SC=p2Xdp84E;qb!x9YS?Mgf^jq&t{RQ>*Nm_NWAv?>n;%uB%JhV$y1+ZTWtb%KBitIoR64+bsBH4t4Ye+y#$0Z59C5 z5x~Z6!RrKf z64t><_immcn!vpq*x3zRIt(4G`kpmw96jS~JL~27-e?}8CZEIItFUr9Nd@LUO-H+| zdH~vG9ZGcLz4-tUqpjLj9XpF{vc*5~!kJPWnO;xcw1gi{?s(&EQA?$c$z*)j?`h5& z0c|A|#hKxei^lgdn{6a2{i3kijin|=Y39>|Q7@xtu$zlS6`CcAsbv?;B?i-%rX?3h z^k}OG_hwBvqt%l?{7)vFF+>uWa7YbMj@g zOtKa)&$$E<>d;zSeWt3_PE9Los5vs@&ZgEGEzC4av@n~dvfVIi6CLc!8hg#X z(EO@ee z9aPJI!v!q3Vnu)2m)X>hH#2vtd8SU^P%*!o-F!Hro8st{WQIEbyViDu*q^ekiXU#glh$3DVOl=VrshCh zXOygaCne8;_!%~i+#GUbSS!V!G1KTmbJW47F_ zWB2*gQd!r!{z^va+TW}zw@THxi;IlsyW*l+`t??O?{5Loc()m?!tgEk<$ZU}tq$YR zS_?FBErb@z+{E{!I-RylWaG3tp^($QO$p`hDpA`0QkqIGBFhB|TRI)IR%VM-mwW%Q z;95-0wBRbQF5HAGVl@>Upw`M}iJmJ~V`UTM{IqP*!qBp1DTGP<9YxoO`{`3I)!MWf zs;Ou`SmsidRo`t7p1|DiV;Of}uKGPN?rt))Zl()eSWJy*ux1$6NL( z>kh_y>IiqD)Uq`qB)B}bw%S(^O<*RYY_7YdY`#+U6;9wl#IU1nL+q@AZu}cRY#LNo z>%?K$TCIH2@I@1nZlMY3eO1PB0%xbzf@}@76jZSzV3-F{NV7o~l})jyS)e7%2V|bo zYefY$DvQyp^|i3IQ2hN{ypakmU{?87BKc7D&1!_ybDecRU>)919ftb>$sd{bOCd?(C30v?8Pr8qiuNe?&CJRs3yUmS}=q zmx^|G^3bJP6SXu1Uo;EPk7_m}rR6`HRp%VWP&x=HwQK1p3xBL`=5PXMs#dPuqGsoG z0{4)t)5;X+ZCQ6-BY1bkI$GYUO64&wU~%(_+MXxCjkSTWO+A&@>Fou8HkDOTZ&x?- zI)Th?EUA5k_LX;#uN)i5E2@>D#+2Htt)=&;>OrUzxX)soUT<%b)9*wt^b58s_5m;9 z->|c&O5P~4sZ;q(mzFHMRCNA;Ec()}&IojAHx&vhcGq@HYlm*P8d4y@2<0Sg4%!0T zqj8zCctPy3B3HSeU#&%t}%e-IRxo0=j^ zyG z^hL)YHmy10D{2qj-y~CvS%Vx_Pn9r(SPOfkUv=zXtOUYKW{?8k$pN679al3;nQUhr|9njyBu4QVHL`)7R5HiN z3AMg-z%||Ph+2mk-%wX^DLBlS85UsH{`T)l2y^EB=Biq_k=WY4{ub?NpSDv$bqX0? zOG{U1PLawte$Y%Mma#g}F+z3Ncj`bH$E(AveY4YQR9Q3ISqA!EJt%7oq`iQWpdONv z;29F?W-g8$!^+mQWSxJX)uQ*n_nL#|8*A!2r;e02dC%l)%{bLY=hcV`PGC{5HBZM7 zx|vpb7u52KHj@-`x|v+{qH0pf@pf?Sx%iU$xspjlIxARrrG9|IQ+IR^I_a{u$S$Kf z@zbX2#VW?0nm5brKa%WucEIcp^&smwg-MQKdB{J{ae?u?xJav(<)V~jtc(Uq`K%-(LTr(m9?+* zmq$@Uy;<7{+!M33b4UGF+i1sH0{yMtsN)2##po!ot`**eI%bE6!v4M+%c_oboxt}W ztx4&hbfSu?cP%?t>ON!ZIqoc&0D z*?B~vD#@{4^{hw(cH9p z&`P0iHdAOOh9F3<#u-`Z^g#z#H4x;XewObO;lUJIW!8ygUbU;4GcFL|!Dn=#)KXuq zXl?>eD}u7J=7O?vK5((F5^tNy;gLpNUg<)2ewV7cdcKO460F&@0P$NU8)nmyEsaDb z8|x8i&Mb(&4u@brA)|Jz{nSFB>Rl0+K{8TVDXg&izLiN~R#qvZCbu?O#d4vd)KW$D z%`5V%SEJ3&ipd4qM-sqjF}1Oc<87$B=dYHB6~{MN(>*NsI$Q~Asi_*Zv-NJ3+a)1i zOsMFjW>yOJKG*tGZkHl$zIjlz3@T*t6;`j_rVG)f(ZwxSltHQS zx(6J>YA&yvaas8=c04dz70-)JwW4i7H*PAZ-0^0aWG%2OsvBMKzr$GicdkrX!MZ+P zNz+jZ3e*u+b7g8C>y4i|$f{6tCl!8JWK}o124retrcL#mADR6QJ{9$QxsEm)Y+b< ztTr>cb~5^MOkL%B!Yq`m)qOo`X*9pK*+#Z)7{qYm^naYV(3W`K&1SoLj!S+dey)k;*C z(p}X!fs^b<|MXYzX|`4HG$WSc%JOD(hbpl8fbm>!rTxj~9!1k&1JS0grNI_N_2y(~ zaKbcOG;%hr0lHt&$v+1@7)1zH$(Fs;SaQJf(_2EG8yP4xLPCHFhJ@{KZ zmhZM#vj-Wkrujj89-aAi!1&Q6MD0hPkZIBvK-$qIjigaJ1S^H&OH)yNbpq9~61V^s zbOlp~t5xE5cBvv%Y)O3QHsb~?UH{d$ALx>JJo(JS|CdTZmo}`_)&;#^8;#$$xpQTZWkqtfcU` z$~)X71#(v%BIK^!sU%rwMqAslIdvRDJbQM@E{puyu3lNot8!8^TC6wF6yP8Navsb(BfbnG@Yp>f&fD zWY0~OP5c|`;CC4FrmKdIeF~2DPB8m}kv^IjhsQ0{Yol#CYv$-nbb*PPY@kIU8ziWi zW6Tb6W=Z=|bCi+C+IiPe^v1K^_c5PAXZ=;*u})Q$dInSXun1EX>Ta#`wx@|Oa2%lf z`DU!w&k*!8K;0bcOmXvprMrRDP~E@2gZ^Ep;7K+8ciXgRv~N8~#f&qH3(I+)p_c0Y z#OI1+yuGK_-MR;g?ZHG>*`F}h`WY%~c|AmvsPJ>BX@XLeRb35LZ;p4oYkpRk4MWxm zkElbpMFP%dW$oeQj-yK>YiA5_YmGC4$j*1$b|GwfWWmlopNYt zJqq5su`J3X--{;6>YWqoClC_BZDRH68Sd}sPRNr+>*nYnw|DD(>yqslb#tNRET|S0=PiTxz(M7PF{RMwNFlo}pzIIYjn(~F8!zLC zEVLwVuMYUkaFq6SKA_$B=Rx65+M*{H%lFOpgeD~&j(17J)Y&AbvNx4kR(gR(yEzC} zN|}5oAj$KR&sk$HJXw+xoI;{a+?U{BvioZap^tw1Z{1`y#%Vz zXRsOfpLuSQ+V!%@b94<*M+SXy#HTt=bsBqOy73+SYf4FK_f(VPtOM4`)KWTQNNIJ_ z>9HPwPLHQ(x=e8eLYIjM(7f!@q`mA|Kkj5{eJYtHY)iQMWgXNJbg~L}D57e;>Sdil z=hcxv^SW!uXq2 z%)Cy`^;PORT(AyWFa%#ro=zlTYRz<0MrV%HH^4@0Wz4G$-Z0}>iDd>k*~TBS|CKSZ z=vm&{f1jzMXPA9qQv{eSJBymBXnZ8cZ-Sc|Rd7r*W2W(Y>v~}_2(DETl{3|pCOY(J zbPP9Jefp*o_}zfa^U54`EE(Gp2@xVxjZZeCS-H?pG=U9Ks#I#0r zH{(5x%wx?{`TU?>_8iZfDT=J07Mt%92AHz)h?daW$W}xhIA7N4w$5r7P;&tl`irO* zG^%x2`j#Q7qAt+-7@DvKwe~j_y3`luIxRidr+bwZXu(1ED&MB!@ln4C9K77HmNtvj zQ}axYA`jO(rZeEh>g>G0T&P!F`Di3s3@m|9#ymT4;`zpZjRAC~ zqg{ff5bans?DzYI*w=O_0ca}P09@u$l~MR#eVIu%(`A+Apt@NNcj$sfv?AsmikNd( z5iuDSP+BsoNZ(au-ZHhSiAmi|2PE&QU2g>!TCPfH;#@&3HPnQKCZbIc>e+=3!B)Zy z{#*-URq?lt6y~emTGnx(S_LWkM2gD(w12E0LNH#YDQSti+NF$CLlzkgQ_Z3Wq&q(E zlf1jHi3aLHI)%=eO%{7!;u-<6H6WY+o9L%LU2OU>-0RVZ`wvhW^w}O4tU9agUQ2_; zl*47$1FPVw>6uS^h~|kr$}yaxU{OVb!zug6Wi8V?|MDNb>!~!)8zE} zM05HWhS&hTr1imxXWGa3TTq(T)q}MH+vt+E4qkX_(enoX=+8%>+88BTWGXbR47dqY z@dJ5fmFNDFU~uysJzZZ%QKFOeN7LYWXUY ztgVgdZICxtEfJwQuMWtYzB#P9piQ0a;9`C>%CjIQtYTt^>hiwXCo$t|W77DaVw5$b zP)P-ik~tK1f+{q`^}WD`m#IfIFI120B8}|+9k-j|qK1qXWY$6}Ro(m`eW4Y6Qn4Gu zEUPW5)7|Dk9?}}6pIp`~)5>xWs1DT@HC3)Z>O!92G?YS*(qjeKf$xTZpvSZ)`q{W;DyBnJ>Wd(mF_;8A+`p z#QmU3ts@#|Jc_WEcL&tj4W?`~BWZu4kq)ZS8y)W}F^aaubPH{ZeW`A2bOPUyH;T|K zQq^z>gD2L7G&l#b)Md@QU#SP1FrlY4!cwl-CZiY_DLq#oc4PR%9#zM~aY{9ows&yNki zCjDw+O21#b#7Dj@=Ms1S*l5Apyuclotyu1cx6GkRrI>GFSk=Nenq*GvJZgQ48PPgT zI!P4m)P|B)L6{!hnk$O#Z;8-5T%=X8Ziq$0DQbxF$KS}NW_@BfwJNpmG>MA;8%G{t z+X9S`FX(jTDnXrC$FARFR*L_pVNeJ5srwn~;n?4zqW{A8`1O(eP&3pL z`~$bdwjPk!KAV~RgB0taPhV8k^i*x0^XTgkgI0Z}(*o_6Xj)3N=RMk*s>HU;U24~& zE-!$^n+@Ut8F2ZQzRTI(1>m`pU(+Z5@PE%3b{Sctaum-cD z`m(yYD-hMzmm+?ohA=aNHSrTO+9QaWpIkx=68KHs;BV~xtbDsoT0qut-=hWM74`4# zz(yY>K+QK@9s31*$2Ah=GcA&J(xDx1O-k$Os~~+a8JC?iuBQ=a?noU$h08OanQ*lt z=9-HB9Osy+b^e**>POdAn&|fc z(NqxK(L^r<%cF_*edXQSc@0E=>yYGfqDnYy#MWf=f4R`^^E$}x!t4ogVv;Ix!q)cl zN1OsVXzlY7sQwZ2k2{t8X+N~eD1z1kDM`~Nf%cxE4VJGAFfA@(_ z1uJ9oaVNj-W(vA_Ak@+0&Rgm2uG5p&ak1iSXHlRf_?U`ItQ!C0|NIj4rOV6_CnS8c z1$MBo0cPbz^Tke`7wLofz3SAg=U1h$W4r#&n642(%%P5R76>f*j|noFQLpZe^KQ#-vG zHzKciM(up{Q!jd^4@XM@8R8F5Dx@}_HC*f7cm3e?UJ^tFRqk`9cP%>^ zQ>%}RSxCKb&h&0geT8A>Ti>fcro9>BuJuop}Of|S*bVl0L z<{)hrCv%j^E(>6X+ZZ*o+DfQm7tP3M&Y-rE>XnPu$T}8i3nu5Cj9`xLDJ z`q87Zq=3*~_`b;L%ZTa4Ma-`(XE6H-Cd_z~xj8-8(es84=$a;wf~ z1K(^-{~;>vu4I!)we%OW03&zReT1pJKcSDxS4~Ni*%71Et5*$k*3VW&t6{%7_&KCs zoxu0rv}oiDy7x+|@6YIc;;-iFfR%M>sULnd5tLaewXwT}n_16X3pla>#MNqCS7J$O9M6gx=~AJ=V_=OTsO|6 zo2{JLNDaI3AI*)`x9QEHX--4|DntrF>?Vkoi)y#d4#6w{WK@+e*nw} B^tJ#1