From 7d9c96bfff9b0fb9a2e8e4ca37254887c6afa751 Mon Sep 17 00:00:00 2001 From: JAJames Date: Sat, 25 Jun 2016 21:24:16 -0400 Subject: [PATCH] g_config now gets rehashed IRC_Bot no longer gets rehashed directly (instead, their access levels and config secitons are reset by ServerManager) --- Bot/IRC_Bot.cpp | 6 ------ Bot/IRC_Bot.h | 2 +- Bot/Main.cpp | 9 +++++++++ Bot/ServerManager.cpp | 13 +++++++++++++ Bot/ServerManager.h | 5 +++++ Release/Bot.lib | Bin 19516 -> 19292 bytes Release/Plugins/RenX.Core.lib | Bin 206992 -> 206992 bytes 7 files changed, 28 insertions(+), 7 deletions(-) diff --git a/Bot/IRC_Bot.cpp b/Bot/IRC_Bot.cpp index bbbda91..05695be 100644 --- a/Bot/IRC_Bot.cpp +++ b/Bot/IRC_Bot.cpp @@ -173,12 +173,6 @@ void IRC_Bot::setCommandAccessLevels() set_command_access_levels(section->getName() + "Commands"_jrs); } -int IRC_Bot::OnRehash() -{ - IRC_Bot::setCommandAccessLevels(); - return 0; -} - void IRC_Bot::OnChat(const Jupiter::ReadableString &channel, const Jupiter::ReadableString &nick, const Jupiter::ReadableString &message) { int chanIndex = this->getChannelIndex(channel); diff --git a/Bot/IRC_Bot.h b/Bot/IRC_Bot.h index 2850103..1842a7f 100644 --- a/Bot/IRC_Bot.h +++ b/Bot/IRC_Bot.h @@ -42,7 +42,7 @@ class IRCCommand; /** * @brief Provies extendable bot-like interfacing with the IRC client. */ -class JUPITER_BOT_API IRC_Bot : public Jupiter::IRC::Client, public Jupiter::Rehashable +class JUPITER_BOT_API IRC_Bot : public Jupiter::IRC::Client { public: diff --git a/Bot/Main.cpp b/Bot/Main.cpp index 1a0778d..725538a 100644 --- a/Bot/Main.cpp +++ b/Bot/Main.cpp @@ -87,6 +87,13 @@ void inputLoop() } } +int rehash_config() +{ + o_config.reload(); + serverManager->OnConfigRehash(); + return 0; +} + int main(int argc, const char **args) { atexit(onExit); @@ -124,6 +131,8 @@ int main(int argc, const char **args) exit(0); } + Jupiter::addOnRehash(rehash_config); + puts("Config loaded."); if (plugins_directory.isEmpty()) diff --git a/Bot/ServerManager.cpp b/Bot/ServerManager.cpp index 34105f1..1db4775 100644 --- a/Bot/ServerManager.cpp +++ b/Bot/ServerManager.cpp @@ -68,6 +68,19 @@ size_t ServerManager::removeCommand(const Jupiter::ReadableString &command) return r; } +void ServerManager::OnConfigRehash() +{ + IRC_Bot *server; + for (size_t index = 0; index != ServerManager::servers.size(); ++index) + { + server = ServerManager::servers.get(index); + + server->setPrimaryConfigSection(g_config->getSection(server->getConfigSection())); + server->setSecondaryConfigSection(g_config->getSection("Defualt"_jrs)); + server->setCommandAccessLevels(); + } +} + size_t ServerManager::syncCommands() { for (size_t i = 0; i != ServerManager::servers.size(); i++) diff --git a/Bot/ServerManager.h b/Bot/ServerManager.h index 5b2b6f9..feb63fc 100644 --- a/Bot/ServerManager.h +++ b/Bot/ServerManager.h @@ -76,6 +76,11 @@ public: */ size_t removeCommand(const Jupiter::ReadableString &command); + /** + * @brief Called when g_config is rehashed + */ + void OnConfigRehash(); + /** * @brief Syncs command access levels from the configuration file. * diff --git a/Release/Bot.lib b/Release/Bot.lib index 7fdf94679bd988046fb1164344c21a58bd6c3e63..1e11571bd07181df79b02d3326b77034b1dc179d 100644 GIT binary patch delta 2883 zcma)7ZEREL6@G4Tnh!`Yafp);oDT;AHy^%s96L^&*l`l)8G`TrsiIRT6;Ym9yk*m#w{MDiXM)E5%B zG?Gj}VSr8woy$r>-mK#Y~agB(3Y$$uZ zu*p?2JusZvmD!b?lVsCYV>}la)m@bR!ZT;o26Vfueh0&mNX%Mor${*0PCWo7 zP2fNqaHbvjD9mlg*${)k$q+CXpq*=dF6$G$5v{g8Ddzq5^xpEe5hEy==bJneK8NSkd;6xw`Qv6A6rAYXRrL( zvN_9Ee|{|%wAXe8lX`8@tdd^_E0yp2!Pz`77_xckP+G5@3fcNML#y$;;^ffLxn|9Y zd7;yZxoB3)N@s=AFAv8b(t0KA_$`KQ?fc=$e0(R*gI%k6dgX&IJEy;OIXa7`x1%d} zzSXtx-FG~xhAM6ii?hMd+WF#d=B8~YNtx?YgMXo2=O|ta4ymBm3 zuNkT`XQP!igQuE3M}|?zITm$prNyvUI=emVmBtP-D&UgeR(p$_*(OHJ38thjcURg( zo@bsHmwZy)E3ViYrQgInTa*%~43C)$PZ)E?tnBX0X)-unY)$2|nVLqahdmy0@(-J~ zv6aRu$GE4*${D@#s~+vmiNaH@yiNHHj{0I5s{vlrJRvYG2;>6*G_dffqEZ1(4t8Tv}28v}* zYW2uf$Ug&YoASMFOFt3(919Ln>Nb763!N_A+Pw8`otb0rBM>eH}l?WV>ZdAlwaxw zR-4`{jB6K%7Z3cl`S$~BVzWSYTI2HWK+EZ(CMg?QTa>VATU(_p)gm9K97k)YS~d(; z*lo)znbVpDxw?J)@q%0#)E&uNgcIE*uh*qWTHToLo~LQtLE|6mrXE(XhVq1+B$RD^ zgrJ)K*3wHG^%Qw(|Ye2np!28{%O8yAEvd}6isb%H~n1Rv~NV0BrbQ- zJLPb^_TeV^azu9mZ);vh?AX7!+SYU|k4zwPh|QjFI;&3VT1gnkLzXpQhCOw{{IIO;m~|71T(zX#zTz!Lxf delta 3138 zcma)8T}+$T8GcMmupJsmFgAn$Hs;r{v5mpT81N6jh9zZmNhcKHr4?|c!5)vryJaorU5qDFKI88vE&!*1;AJ4R288bbJx#zs zGcfGY==vN`h`g)OOI(hbg~H^A3ep%FUFj@|l*k#sLtflnEsxq?kxvsDdBR`q znVvg&;uj}RJn_@H?8Gn6o;o-8^K3Q?v2~o5sqyBOKbPLxWjiWM&KBFzl|MO;*;0@G zOq*m2(?iAlnRD6f(cH-Rk7rOUo_h9dG4oKlTd9JXzBr)2LR77 z@Hr`YH$pl2?&tGv0{DjVW#VohusQ~uP6G2>Ut>evDgeic4|2ejENjK*EbBEB2U?@R z8^l5iSiHv{M+_+G1>Td9Pfd!nU?KN&-ViI_5l{Gx`{70vS`bANY1mNmfBf6= z2p%iPKI}o|j$nJuaHZcPU2!`tenqp(t_ z?bNM(!tZfEsHNps{+HOtU;C%4AK1R~e$#>Flv_S_)JeIsb=l=zxzjXLCUYULo_{Zf zJTf1wESU|i{64s0+gxldoeiFO{5|=5xKaKZy1lvVmA`~5l{NKkTPvQJIm^{vj>O#MDg;{!4hdOGwn0Bh>jgHqe%Z=`BMkGTS?d{3xTveo#J#MwO(9^Hil%tM9 zRh{C5^8*!RC6g&8x29YoZ_LiAh;N5Mbkm^neuD=!Vpg_1sE)`aG$oA;xsM)X(eIVg zgqgfb^lHNGR53UwuwOn-oY)K>G?;4VauqkdSmR}X|0daHZE-cJ$>ikW$+pXqD=js> z+v>r31(a)5uWHugA+uZFkC>gMNcyx_XWU66k1FC#N2|Cu%WT%eI2DKFU#VJINJTd@ z=BY^OQgQHc0NG{L8I+;TQmNfe^y#+b6y+==O;XJK*2C%9@8) z#U(dJYKof{iRGTOvgQFZMCyRGQWTJloM|~VR3oAMexntqDQ+Vvl?Ny9C*_m8rk?jI zFCJ3A`bf^oZE8q&^N%R)po^uF!#iD2!5AG%A*jq>ZR?Py+SK;GQ@yLhIuI{+UPXpx zSpGA-jlP}{y`3U8Lh{3rUt9Fu9?>KmrYJ17(WfoZ%cEMPKCC(^YLQpd2X;2j-Z34T z*Eug?Ht!{S$ZB45!Wc}d2@{pK$HpxGmE*d#en3%-6hs?Ftj5?`yIi4Nz8v3nCONna zc9h$=+H-8TUrrSQ+WS&LbH~pXeg{x`siR#s3g(%roY2%aQ`*D0H!JGp9}}j~jBAuv i^=yI)w#Jq%h2=@@x`nc&a{WJdy^|k>opa~s;QAJ2BisxC diff --git a/Release/Plugins/RenX.Core.lib b/Release/Plugins/RenX.Core.lib index cae83ca3ddf1aff9df6fd99f8c49fde9323a53df..d5fb12c7e1e837d0e2d829431f758c2ec80a8d03 100644 GIT binary patch delta 12242 zcmZu%d3;qxvgY&+pb)Z?1PECmV2oMW#IPg?#!T4a3L=Ey@Dv#gL6OH(#Hi?Cj1ahz z#)ufkWg>$SbVeOOz#VyjxD22p5nP^*1DPPBG9d7(s{1=R=i={|f6}+Qx|XlLuI@f{ zABNY_Uvk)>yn%ysV~$GPRM2p`{lAynP9L@Z9{$vS_12^_juAZL+%6;aomuWbMy~R#Q)cAKJ~Rqj&pOw7<|`AJDIKzU#KGV-0mu&UG59WT|#o5NbbX*d+D~WD#Iv`>MqJxRViyM zxt^d4qs53-->Wf3OkBu4VoWP{)D(AET=>pWld+@>R4HYx&-=z$-=W+>GoM zkZ@E7RJj>$J7feS!juhA#Umgvjnw0aGNWJCAf`Q6>uu^L1L78f`-2OLR6TdgBdAyrd`5K;O7Hi$0xaGqx)( zG-JcN!+Xk&_` zQH*;*5aWKBUfxSxqL;-w;ksK-ZyZI{@)W}$OMAf-AI~NxS(|;Vx;6a z{Q!9xp4ZO|Kh#eZ86y}BEcjDDbyK@pJhHSu+z=#SFNwMc=#wB9zGgJ8y+}ZzR?F z-0z)V(|z_5pKdt0G|T5CY>&@|bX3qR*_f^FGHwG~r8&SB^+saW?i?Vb`X)0{lB*Wj zU=^rDz3ksAhV5_7Rg27UqwQK6@|5XXG)9K!W2EkVqpZapsYo!ntRA42c+{s3R523g z85HMP%u=HsajxNw&eO)|>S2}vZzQQ(i8Lzy(p#tIJK4e1hr{%UL4X$-lA!MyWEtib z5}qx>Q$iKyv1`dU8rMn(tHs8oqL+->CkJDT7mfD~F*vFpqSo3NEV9LOC#_Mb^M|Uq z;J)DXq07kZ?nBM&%%N(v8^Hv9h=zsLe@7~+$jsIk%0uUqnUbaE%U~f!rWRlX!S6B* z!RKgk$~Fu`%EVm`wNNXE`c54^LJic1hk>g2S($lw?;gV6RCS+J#nN2p_ zqbH71S$gAWHOkXbU2crudbwKWnaIX-Xzm(~VK+29Jamk@-%2|MuHTPQRc1s4Q4KX$ z_(F@}A;lPuT3``7oh)2JQQB8?wFjtmWS%6yl74>R?aHLFq^|u@TB^T^ zw5?(a8vlfItq*B}!dPGK$1uI4Fco^Y-TtpX-Nk-D0sR+Cil&|_mf!IY>~ zU1y@U0S-cvmx>3M=YcQTyOdPk+l)OKEbWfJUdoNbalb28HJTRZLs ztPND`zX7O_>f{^>D#ns0jf9GdKab>9y&NsbV@eglX(YIg1e=@7Lc@Z?#NiupnBWna zbq&pWnr21(wK!Bg_$gx=_(@!NWts`!u4yj05;co5rsn5J*@jiKLQO#3OrDMc5oK-D zt@TwjwTYseoaOx1gQoLi@jMAtXF2Bu11PJQ;iAm$h+S@i{n&6f+=LC6_ee4Qx3vBX zWcuO<&fik_?95Fx7f+{|YNjnU?_S+76K=T{vvl!)`6`gBNZ`p;w29#v`MB&rwssKl zwKv0J8Zi)LZAG_$83CHZw*WLk6X4p$S)eN!=4E+)`K>5?K@RUuJlu1(OTiYjyJveq zD=fC?cdkZCHqR=Uqv~z-m|69=VG^v{c$>$%MBUb4)~l)n3fa5*xfTJFC??w|xsd~% z(oiTeVeq0`=fYG$5BRUL3j8O-$@8qr1*Gx~QW-tSxzz(I5vtv0tT{Okl?c+=d^?I5 zpq+IGvMcdCcZaRbnWX<60?o*KC+SZTzz8m|+2Wn^5d*YiOYcNGhAm?F0z?je9$f%G zWkI{I>$U$4YVx^IxezXhG&YO8|G{Q)zSVok>V0=l^6(hUYq$&M$tVbnv0z z6H4Wg0w-IyR3p|nT`ap7-9PRSlB;n{a*qk3sE8CDFp6UJwrX5}xQ7}M8bLw_tx)iT zfxUS}FZ22ilsoRjfl?xtf4|*F?pNzQ+e_C6%y8-hYO`nfM?2hQiE8o;?^&W^rQLdp zEIFj3m#Fk$QT*^=RPiAF=n^-CxYZLvAUaoEA7P^YE1J;KqddMS=pIMswdj8ly-HcKCNV`JO9h#HWXMC7rVdY2sD&t>K1-S{zwnQ`Vy%n}k1_9)-&|P3J8GOjwU3 ze-y3KO3DAQ$Qh(_e{utP*8YAa{r)e4^QhkxczzZDolZ9QBQ49ZOSsXH6b+`S$2mpa zFVeXypjl*aaz0rHw-JaXD=;E^%NJ)&#G+QJSr#!211#ON5=&!893I4u$bk_Tv&fF0 z$%S>Frs#;rP)x2JA~TF+PO_Vy=7iEQ4!5n3;c$y2RINf1_$ozw&LKUg$!A@@#YqYt z{xr<9qFZ%LmDTkCo(yBhjnHt2Rf=h>@+_HFJ||7@*4BJ;=VWhLQ&+>X^P8j&PMBUa z+9}hgS0e*3zwB|Ck8|mlkKu_}^1&-aQ zdL4EnK{2lOhx`HYk3?+(4$MGAOo>9!rLM_cVZT!v-%1xjo}Wr@WvR8r(_i!JU_6;to>Smk_dj ztaEcHO#u4uHUs+Ps{rS&7t!D%%t;&FcyNZW89lSn#|gN99sLos~NIFGvQnpZLz(Q4aZ@ zI??H;8{2>Po~?2zmubg}b>d6jU{k$F99F-ATEX>Q;;V>^lnE|rHouBX8keMnT$!W? zvW@w>s4r?e>|I175{F+yBz%0k_^*g9fE&Kq1ujPdrMqo2N>}2B8>0DJd^bcrwwiF} zY*jlw;f#LW4EKLsy<~}tHd2Pv1>3NJ`MTN0ZN6@H{C3+#)|0CvDB982Iz9D++f~rB z2%4*s9cZpxl94ctr@4g;`-&Nb`tCPC7~&4!3bHx--oWVy=a@jocJHAZg(kAm=2r^X&&iFx~gm4shgA=b68u!u-LfU^fLh4(xX*XMOPKeJC~TCnxt|Kf%bN4>2O;XdeXXKf-$e-jQlP!aEYX z>-MnI^ooyFA6>oQ>8OW%3|>JKQu8sI5ZqTJeS-T6rb|KePzr7Z7k=~sCsQ9A;dzhJ zzE-sKZ|)u^#A;vgTK)zuL|;?6A3ph7h?%^|kpuM2#oGNocENj0)d6^o=e<)0;5FEN z;X$ywFJ7OzGwn-U&8HR&KzI0O$T7^U{mg477jD$wu^ce9?C7@gB<2vdR^)#5AsB$|H>t(Su+@?sR(uEZP2Pz<9?h&mDtaLO zKA*VkY`N1vgtgrgW7nSh!YvL?9^Rue4uiQR)z~awafjU~%W9X=Y75ED=pVB5hJ)TD z%3>g`y+Nh|sIVwee^cy^l$W%TxiI2Py-cJ$Dnc>j2zOU0Y^?=w#e2dtj-qw7JdUI8>H96mb zMnSBb&l@TJ2V{I-k1VBNmyH}Cf&GP_!G0-Yr8=YBYW?%h3e ziFZ>;UjsS6arQ+0zJ}>zc2Kz&+Ot{DQ-6p9q$c z;FDJHgRdOAHTcQ94xa0ie+GnoTj9o^u{_GBRm;-0*mXmgqaEn}UnoFzyf%(7n zYbPzVs<>wmDSm5tn$cYM-Wbne&0Ro*_}i0bj8IxIZ)cq6hRU}!KC3sKriQ_PO@K;W ze;RIL^BMk&#e{3PgpCbvB1om(>huY@yL0JD%;Fa2c{Xdt+kHbF6bEpvvhxhKQRH^& zSp?S?^MAX;*o|t>f$c1AS49Ny!fCDoRy7CgLmlRnIsyAh3b4N0!6b~#Q5XSG!vg{P z)(AaY1EG3GhG7;q=a#U5`H+ymDrj%|ZtfVcU!IA7=uf+Ja&5Jrs6E#Sf*{J$&H;S= z;r)znf9HVxjE^tYCH^;3{I_!am%lSU^zK*MH=IFIFAUh1PZ{=oaj=at9bM_1_sM}v zbX?ZUx&-V8l-OJny9O%k8NzNZO0{!tVJr(kp~(**9caUCOUn=8F6uIiI}1@yJl3q-7~f1FcEw(9j=D z3)oMcaj-1!1O5_0v>U2#C}Gt0b-lFTawVk)%*VX$r=6?QF^gO_C%!Al+gANldLS#< za%F^Pt9OIKkb12jl>6wmq(A7EZ*#=$38e2hxt+Vv8Rgk;xe=G&`Rl?T==Zq`sb6S+ fmZaj0*KHRC;&`=A8G!5$kpt?Epwfs{~q<6ghv=eO4a}Vedr<`7z=Jn7oopz3yxm6uiCQZ}3 ze{o98$i_yMsHfGcI36xK<6Lh|I^!6@GtM0{QrD5?{%zzc&N`(=uJj|Lu;r|Ctw-*h z6W5uo$ZOZGUHf(sp|q3f`tXG+O3&@865Hgygxn=0*Ma0d`niX0?W{74@?cj{zN%7L zW6AYIT@WKitomM!F=FCE&Jkl;nWLt-!{Wksj+%@mWuQ_iYklrF#`;#J%FU#PZscZk zkAQ@uDxk{DaO)u>7!{#xfXW|LnUbX8WO}sT)L!+~J0euBkq`c2GYf|IQq^1sPg3sWrju1iqHgrTta@UZ-J>N9W_q#w<7z0>WBxj&MnU~luqFtzP zPA^>;;Z1>NZ6cIOLP;!it}t2mJm*B!opBP3qS_0MQClxm#b%^6I*=*Jy_{xsZx^8p zqMgBd$7Gdmeiw^2but#c*Gb)ChdUcZQ#-56&4^8}-rLzaBN$^$Fcym=)i{x>OR$md zOY8O06C=stUxL6$>K>yuzl)l0)KUs1u+3fU(ym&`7elSLo)@jU>e?tbUj}KqH41U{ zLQT((2G)>(=4h|YsEf%#n<#fl_T*sDdZJyW62CrVNe0C)FNO+we1ht0+_fdTGX_Zq z_=;lzK7eU&tOrcdobFuGnMIi_D9F=k5o)vvi7(OpInf($NaiIyi3a+{#as00T${07 z@!=U8-WA?cZp0VPO&<9&D%MHz_(DH(1hNuTk+H;$fZ&cJFp$jA&izhTeJ*H2piw>v zi721emyD){L|e=nQOQU`R8Y-LNxxdnBfFuRfsozZ08T0U`%WptTBFIVd}5=jONZzl z3Pv&R1woAaVS0HFb%|aU=S1o*-Mw)XRm*!B23gtzrucX^DcRcWW7W0E$T)J5(ld++ z*7R%xm_#-?1#>D>OoY~?Ab%*`?!8dDK2{h*%pAJ^x?XxqFSzJ4GMI|MroL@d*QKhf zO&YOSQkr)$$!P{fre}rMfp#TmHGN_(7y=tX|PuCFqQb{d%gaia(y!xqrI@W3>okkjX+k zH@+_*FT?Ztn&F50szPG~gMkHq>Z@*QGmA%-_JbRO1necji-0}}a>46HD4x9+V}=islQW^8w=lN&yG+>NQ+*?; z*5`ij{F?5wm-uwU$)#C7Ct-U+e@F*IX32*B>TcsUuvL-`Y*B9{X6?=fLaJ^uBgHvt zfelu^O47^zrDECsmK?Rn3^&-Wr9M}gu0>;HcpgS-KQPLg-I4M{lgp|BYKcdE>Od7M zah^eOp2aLR>QUz!-sn7SjIJ7H8SqAux{XMq{4YIqYM#?Sl=?`79x({;B101Oy@M>n z+)Bc;MR-cM!d!MO)W#;~5hMNl2Y>)KxEoQiQl&TIJ7FTAI z4fpDaqg0mOI9iSJbX1ocEqSIW-3{hq+4Dz<@EV@^|%cgx6Ln=8|k$Z)Esvq1An$Cf1;}K3?G?j(RB~4 zzk+(5+H|Kv-(Kpg@E1$1&>Rw4X@oA(saL2NT~+V&VKmw{8C1CVDo`OtGOor*?OaRs zH<7kgOhMzHbgtF8*FXs}vE&+Lg2O4S#o5(7<;;`LRpC{@Bq&l>lhkUG3LScUj3<~9 zwaV*E)RtVQR(j%a**zv|Mb~?(CoDZrlIKo_Gg|Mc@R-`hYp+g%y$!QXvS&_4`h9E1 z-+;A&iv2eL6;hp?LqWw@@}z-KQU2$VysDR@1$j)VA~=l%*O6dTQ)zfuaF{rJBMuWh zBD1ccSu16(*J73~y4hEOTtxy;uA)s0&*&#)2eP$; zh_Af`7So7E2@He=1nd8kB?&gMH% z!~pHAJCR+9=eav=ZO$b9?-FQ6-Zx2qng~X4fz1~0oR1iw9b0-A+A(Yq!xtcO@bl;b z_$dq8eO<5pFHn=ug^Go6L8P%+-ag~aYfE+nKYq;5oN>plw8$FyMf<~wwk#h!h|aP?L6^Cw&kBpA1A;hhokO~{!OmSS9m7_a93>ieI{9!~02h-MveJ8r* z8;yYre~-fsE`>TQ#qAM}R#i)Jw8E(-@)4YBe6d;jh#MQ*-bGb|#3WizRGU?ss?nTc zjhaWX2A`!Q7z4<|f9iELDoq#Gs7w>D%5M!f)Yst13Y)SX^VlT((fAl##%Vft8DPSC zB>AIgl@?0=M}^KHo%53$$g}qME9v+DCpeG#O}^)60nq6bb3f9&9J_=Y4N1{pntGg5 z)b%2rvjUn$1}Eo}wQw7OSh4~mvbTJB)-0xR^zD z{7f#a`>dCadK|^%+95K-NaiHF`B`>29piA@@;DB+NJ8Z*B!RC|#OG|%bDDhCWm}x& z(BaP_JS)0Y$5dHW2jIytcHAfphghYU#wyQ}X=QWL^lojRK`?f>h^?ajx`iHsIC9C&8{aL*@$3-q})s!$($N?mNSE{@?CRJ0a5lz;L64sWgGKL==mGWI?P%D~NR$@8F$+!jkilWFxNeg7X-x6s<7gX&&K{b2XL z`;YGKZ5yhrM(pqi-4~5eD^c>b6v^aSVcaC$w9D1Zr#x1fNhaqS z*+rIp4(s#^W=YH+dc_cF{VVEqOQhVk-2P|Vq&JXj{V7(ua;LLWr~C!UVD=N=c{|D` z-%}?#eRV_I@7}Xj4&^fKSdmV8*&A%C7m35_S5YgtzDs%yk&!aNCC%p7a7p8mw2&*4 z^gy;TZx{7Nt%tpfXhh=h>xhJpZx{a+u?27=H@m>)NT77LZAR%z+;BrQe~a&isM}T( z&g`vfrze~-ZX0oanVM~kh)+SHZWf|+px{o&5qx0yU03nbp%B_=31w_erUT2 zc@{x)RlEbul}j=brtvhlfMH)gqd?#DCI~~^;afpAXWyGR9pU^^^A-vX8{W9L!IQ|> z-nVVOgaYx%SNRTT1Z02o9gsa{E`8URXHxe3 zyDvNlcK5~WGk2zaiL3t1f&u7`{2V!knKhq#&E&!j{vFE!Q_KF|riQ-musvb$i?&fy zSp2FymkIjEKFpo=7Di0Orz5e4u(cxhs}I2dY`@9PR)(#X?6BfHnQwAW^!8|G6;jay z>G%1>WoOHreqpTbmKeMC{FiQVaPsgTm2nu%Evd$4`KmkYMp;(7j824Z4U5l#yK(d-!xUF-WgT~iN;UDUUT9qMh(x2QK)C0mpI z9cUE9y7|13qJKih_w~q93U=v;!E6U^_R!P_JVuhSk1#y8_sjJN@jBuRe|u9+I$HYW zg#FBhE&e|&+F+Ti(@~en?DN(7qiEuAh@X56hj=&U!bc2_<$C%t)gzR8Brd##8mH_H_o1@pE}`X;9T3{O!yIdk=u{ROzub4(9FuD1YP|V5xD1?fnRXA?GwQg z5`4-Ee)yF`w+26X*THjr%FlqXZ!6sRGnPmB6rV)-2y@_!-F(t+5^j+TPIGAWKQRBd zeC?!#R~7dRBE@el&oG*6-yh>Sthoz_5Py5}tPx5J~=)6_8duL)48 z>rcZ?Y(B$(v6yfTm$0$njRdK*+nnBEcXuv5iCNsjyufD7c&AUegW>?LRd$}iHj3O% zJ&WM_V*W387`su;Ik26@?W(8%UO3HFz^bNzeW=5n5+`6kNdeY(JD7x#ISL~HYGfc_ z-x{H3Yam?D$Oz2B=G+_+Fdq`~R|RcN-!1I}_RBNz5B+JU4z8{C6Se0%KoCS((lLOq zKfIsu?e7?{pYidV*OO@+rfdrLl9se%0sO2}VZ39f1UPl3kGj`xzzhIk`)q?W-C3 zqLVf!Ui$kkn2!K0i1Lnf;V;~n^WUdP6okst`q#w9@RNgBQA|T8&=iCq zRvaGVU6GaTbVqzmJ@iJLx$K-07qFjDy2Db07m-K% zC^Zx3(SdDlJT8y$d1Og^pu}jy@$;Sd0KNqvAlBKNhXq{&_U6H5Up7A_Az;6b5t7HF z?yiJ@ebmM6Lrr2}iCxD&2o@#6ngxv9LmXuHHyx+Lbl797E6R&kbVD?e`cvJI z2=GHq_kj0)mQf>N;cNOYC@i`2om`5scT4o$Zyh3;>GPcdVKOeQiZZ6vW)iHO?+p1h zL11-%G63P?MCNlRa+vm)9jSS3`F2GlDlBq@qq6RV80-V4Jxx@lcuJ}5E;`sNFw+Fu zs3d7oSx73sCY7P-z1TgUMtX&CE&GNntL^n`mboJTOU|b(a6B@UC}~+r(?DyIIyCeL z(*pKWXB;fcdV{}25bcKQ6HXX4eOxc?w_M5T0rN4h`)TLubj%``&57>{^0q}kogT;v zHD4L!+3MY(Fr;4Z3*|n#E$#=p<=Y%_djjb@PHyKcbVhmhTW-YVcmBHY2l{>PLh2XV go+YU`6LjlEfp}i6Lq;IqWJZRkWSHT~j6mvt0QCAj?*IS*