From d641a6de7215b3c53f7f8b43abf7750d78b0bfd0 Mon Sep 17 00:00:00 2001 From: BetaSteward <betasteward@gmail> Date: Fri, 27 Jan 2012 21:40:33 -0500 Subject: [PATCH] update MCTS + removed from config.xml --- .../src/mage/player/ai/MCTSNode.java | 46 ++++++++++-------- .../mage/player/ai/SimulatedPlayerMCTS.java | 16 +++--- Mage.Server/config/config.xml | 2 +- Mage.Server/plugins/mage-player-aimcts.jar | Bin 28559 -> 28132 bytes 4 files changed, 34 insertions(+), 30 deletions(-) diff --git a/Mage.Server.Plugins/Mage.Player.AIMCTS/src/mage/player/ai/MCTSNode.java b/Mage.Server.Plugins/Mage.Player.AIMCTS/src/mage/player/ai/MCTSNode.java index 15f8a5b4e7..0b4fb0a73e 100644 --- a/Mage.Server.Plugins/Mage.Player.AIMCTS/src/mage/player/ai/MCTSNode.java +++ b/Mage.Server.Plugins/Mage.Player.AIMCTS/src/mage/player/ai/MCTSNode.java @@ -61,6 +61,7 @@ public class MCTSNode { private List<MCTSNode> children = new ArrayList<MCTSNode>(); private Ability action; private Game game; + private Combat combat; private String stateValue; private UUID playerId; private boolean terminal = false; @@ -85,8 +86,9 @@ public class MCTSNode { nodeCount++; } - protected MCTSNode(MCTSNode parent, Game game) { + protected MCTSNode(MCTSNode parent, Game game, Combat combat) { this.game = game; + this.combat = combat; this.stateValue = game.getState().getValue(false, game); this.terminal = game.isGameOver(); this.parent = parent; @@ -147,7 +149,6 @@ public class MCTSNode { sim.resume(); children.add(new MCTSNode(this, sim, ability)); } - game = null; break; case SELECT_ATTACKERS: // logger.info("Select attackers:" + player.getName()); @@ -160,7 +161,7 @@ public class MCTSNode { simPlayer.declareAttacker(attackerId, defenderId, sim); } sim.resume(); - children.add(new MCTSNode(this, sim)); + children.add(new MCTSNode(this, sim, sim.getCombat())); } break; case SELECT_BLOCKERS: @@ -178,10 +179,11 @@ public class MCTSNode { } } sim.resume(); - children.add(new MCTSNode(this, sim)); + children.add(new MCTSNode(this, sim, sim.getCombat())); } break; } + game = null; } public int simulate(UUID playerId) { @@ -269,7 +271,7 @@ public class MCTSNode { } public Combat getCombat() { - return game.getCombat(); + return combat; } public int getNodeCount() { @@ -340,9 +342,11 @@ public class MCTSNode { } public boolean isWinner(UUID playerId) { - Player player = game.getPlayer(playerId); - if (player != null && player.hasWon()) - return true; + if (game != null) { + Player player = game.getPlayer(playerId); + if (player != null && player.hasWon()) + return true; + } return false; } @@ -399,7 +403,7 @@ public class MCTSNode { } } else { - if (mergeChild.game.getCombat().getValue().equals(child.game.getCombat().getValue())) { + if (mergeChild.combat.getValue().equals(child.combat.getValue())) { if (!mergeChild.stateValue.equals(child.stateValue)) { logger.info("mismatched merge states"); mergeChildren.remove(mergeChild); @@ -421,18 +425,18 @@ public class MCTSNode { } } - public void print(int depth) { - String indent = String.format("%1$-" + depth + "s", ""); - StringBuilder sb = new StringBuilder(); - MCTSPlayer player = (MCTSPlayer) game.getPlayer(playerId); - sb.append(indent).append(player.getName()).append(" ").append(visits).append(":").append(wins).append(" - "); - if (action != null) - sb.append(action.toString()); - System.out.println(sb.toString()); - for (MCTSNode child: children) { - child.print(depth + 1); - } - } +// public void print(int depth) { +// String indent = String.format("%1$-" + depth + "s", ""); +// StringBuilder sb = new StringBuilder(); +// MCTSPlayer player = (MCTSPlayer) game.getPlayer(playerId); +// sb.append(indent).append(player.getName()).append(" ").append(visits).append(":").append(wins).append(" - "); +// if (action != null) +// sb.append(action.toString()); +// System.out.println(sb.toString()); +// for (MCTSNode child: children) { +// child.print(depth + 1); +// } +// } public int size() { int num = 1; diff --git a/Mage.Server.Plugins/Mage.Player.AIMCTS/src/mage/player/ai/SimulatedPlayerMCTS.java b/Mage.Server.Plugins/Mage.Player.AIMCTS/src/mage/player/ai/SimulatedPlayerMCTS.java index 27182d89fa..f1187606dc 100644 --- a/Mage.Server.Plugins/Mage.Player.AIMCTS/src/mage/player/ai/SimulatedPlayerMCTS.java +++ b/Mage.Server.Plugins/Mage.Player.AIMCTS/src/mage/player/ai/SimulatedPlayerMCTS.java @@ -310,26 +310,26 @@ public class SimulatedPlayerMCTS extends MCTSPlayer { @Override public boolean chooseTarget(Outcome outcome, Target target, Ability source, Game game) { - if (this.isHuman()) +// if (this.isHuman()) return chooseRandomTarget(target, source, game); - return super.chooseTarget(outcome, target, source, game); +// return super.chooseTarget(outcome, target, source, game); } @Override public boolean chooseTarget(Outcome outcome, Cards cards, TargetCard target, Ability source, Game game) { - if (this.isHuman()) { +// if (this.isHuman()) { if (cards.isEmpty()) return !target.isRequired(); Card card = cards.getRandom(game); target.addTarget(card.getId(), source, game); return true; - } - return super.chooseTarget(outcome, cards, target, source, game); +// } +// return super.chooseTarget(outcome, cards, target, source, game); } @Override public boolean chooseTargetAmount(Outcome outcome, TargetAmount target, Ability source, Game game) { - if (this.isHuman()) { +// if (this.isHuman()) { Set<UUID> possibleTargets = target.possibleTargets(source==null?null:source.getSourceId(), playerId, game); if (possibleTargets.isEmpty()) return !target.isRequired(); @@ -350,8 +350,8 @@ public class SimulatedPlayerMCTS extends MCTSPlayer { } target.addTarget(targetId, rnd.nextInt(target.getAmountRemaining()) + 1, source, game); return true; - } - return super.chooseTargetAmount(outcome, target, source, game); +// } +// return super.chooseTargetAmount(outcome, target, source, game); } @Override diff --git a/Mage.Server/config/config.xml b/Mage.Server/config/config.xml index 3703d1642a..928761f7cb 100644 --- a/Mage.Server/config/config.xml +++ b/Mage.Server/config/config.xml @@ -6,7 +6,7 @@ <playerType name="Human" jar="mage-player-human.jar" className="mage.player.human.HumanPlayer"/> <playerType name="Computer - minimax" jar="mage-player-aiminimax.jar" className="mage.player.ai.ComputerPlayer3"/> <playerType name="Computer - mad" jar="mage-player-ai-ma.jar" className="mage.player.ai.ComputerPlayer6"/> - <playerType name="Computer - monte carlo" jar="mage-player-aimcts.jar" className="mage.player.ai.ComputerPlayerMCTS"/> + <!--playerType name="Computer - monte carlo" jar="mage-player-aimcts.jar" className="mage.player.ai.ComputerPlayerMCTS"/--> </playerTypes> <gameTypes> <gameType name="Two Player Duel" jar="mage-game-twoplayerduel.jar" className="mage.game.TwoPlayerMatch" typeName="mage.game.TwoPlayerDuelType"/> diff --git a/Mage.Server/plugins/mage-player-aimcts.jar b/Mage.Server/plugins/mage-player-aimcts.jar index d45723969c22f90120d5424fdbf94e73ec1a8912..94c424de3a082afbc3009da22ea07032cc747f73 100644 GIT binary patch delta 13901 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 delta 14354 zcmZ9z18`<b7cLyzwr$(CtqCViW@5jwGr=3%PA0Z(PHfxuKj-{)&v)x~b=T9~d#&o; zdsX$Wy`KH-uYtyHfg-BNgG0c9{8QlSc;XQ$z+wLaN8-OQPVz5YQvU-$98kJ{uwD|h z8|&W=G|nI-+TR(GoDh;)Trd!jXmAh^Vh~`j4Jq)8kPRH(2fChv=n@p^ADb&Ze&14D z5D;}vAPWgOphy?i1LI)@u(e{wl`$$x(vtuZAOV{Z3_>O+0?~&FD-DYhj-6o+3qN|< z)-I}gQ*DJ=rL9@{go>;o0YkFrrEy`;Y^!hExH`A$*F>~Hm;d5-1^8}Rp8@%i%{&cE z`+C_tI*;x4ImIPQuT*@TlN8_z8*4Qn!sH{~qbz9!I8_P^jTW$_4A*asYZ@@l<E1HG zn`+R{N8F}T#E#be%uFe{zTp)}QjR-`sAE-JJazKmn~rM)b_f8Krw()l_*0I4bWS;2 zcxJa>`Kkeo=nh_5Iij#f%<`rXZ?(ddZ*IvP5{FHnDzU3ohBxY~vn)3IZ_z*-HI6Kd z(tEZ5DCgsX>-z_o9c*FMhnhwXhYNMhQb$<4-sK8P^Di!*Ii&QKaE`W+79xv!7FCKz zZfOt}j#<%s!BG!<VI3T?+#_RBD`$!GhDJ!v6e$G)`bYInW%0^DX$7PK$RB+lzERp) z?XH`JcPmDEqh^9WzdE?bdz~#@vIVBFZ<|K|o$wOyaIYa?*JN4Dk81wR@xw)RK56Uk z#WO!z36|5xwZk#+U*vFo$H%pA7T8v)3T*d(+A{$%l*f0@p1oS#g3dQf?-Y$9?{qvN z_T%G*-8+2Pr=PAFO}UQXi}fX8)&zYr;$94qx2o?5iB_qOE-~WQ4|duGePY9|CU@Qd z&wk9pJ%UbGqMi&WO+<4qCRC<uczrv@m0j#8vCw-8;=8?5#`<I!uuIZ`XNw`LV!b~C zBaYY(7Nq-bBuFxKFptlX+LW6pMl~=74-P;L^iWR_hQM~3ax-XJ&n}}~Tp-L8x`t#b z3%F1a8>)~OO@EGsu1Ym>5{7Yw?B+oLuARYwcjqcN;_e(M>Lb1}h5^5f?Hkx@cyTHa zgKe;vep~6GStIY}m)QH3))OA3!r^m6a6#I%qvuVn4ygzPY-ARzNb|%U|AI^_XKS(~ zKs{9;rO6HM;aC^IvO;tXMawhpaBIS|AHubi&ZVdESb$CY!_))LZ!|)Ss^Js}@K6}Y z3iu&yuTF*q=MJ+$wHf;8(xzQ)mrCCrVO&X%f#f1a!e~s6P<KkcL5A=Yt-_O-I?B<) zhJN*|nOjCAod$;|zO$WhS-og%Cz;!*u8L|6?@|pnAjZ~=l@;+oD&ysFfNBvRu_rT! zvcB+*IGSKO0vdh%k1CaPQRO}-fD+6e9~(L!%hO>VC$D`>0XIfCQjw?a;1_!(MP3M< z@xn(nw@6cfghVBiFlx9fMFfiGego7Vth{};iciRDQ}Ws13<|odA4DSLbOcmi%T9P$ zTX2$!c0y8uU1C~>NLfby8Uj8nMX)}4?OG;G`IL-Py!i5QxMW+wOuW23z*w}iHqMM* zG`IW=$8#;{EO5sS-sVrfwN=|Kw=@un#m!&cd_>pB#MEtCb=5A)r4b6P@!_;l#7a}U zm;mw;^?Ic7<txlq8iL&aeMOeYs+qln+>&&Z1oyN9TrZ5Ooqwletd}hYskf}9+iS0} z$#kPOR|hG&1v5Q-h-_8_5C*naX@{~l<k!)zPQZiVhyb-nn-S)iqCqs7Xvhj%Aq&qz z?vKaJz0}F(5Y8+PGDNW)vWy=|*T7q|zM_SIA3qS!7<sTqLMGWsC@rcT<OxW_^tZ6H zX(8?eUqChv1(AoW5Kzc?4e29o$)v<N+|_ZWvAcnIcUH`-s4P?gEMvig$pFjn2Iuxc zXRlyT$ru@=P4j*g<{SnGSyB&UrqR`?K(0-q=cBf6VMRD7ZPH5Q+s3+tOd+Pz=hnYh zL?obWV1@VcLZ?|;p#82IR^R>f>ahcpNn{oYgE2n>4JHq#VMwjVp+YD_0n;atAt4Us zPn<}zp@WutD_txGB+&NB>bp<;>7aKIbIMvE#DGM)2=jDfz*-jI4kt9oN_5?`;>Bu2 z+IE9PHBFO?&E%6XH*&4qEM#KlRDC>+3}nq~6vR=i#D*4s2SPG#(hZ6i!yLNoQTb>c zNvnQ|690rD_>O%kMe#IYb=H7Z*-Se}XbV4uESozaKgTW#=)t|GdBAg_x92|QT184S z|G~^UoXdZ#6hu@kjnEc*Deb}f%<5-wlm#W++m7Jn?}gx(fP~i|oqK^|wN<o+*cNul z>A`(9+q$&f+41eD1VN}r8UJ0-Zzvb~gfysodivx&uvd5+8}T(xXzqnF=-VOj={tE4 zU_w|lo$a{<@XpTT(N>G|?hLY{{frG2Tlj?dN%<9Ny^K2Gc>Vh%cdDE9S@W~1_xI?Y z`+Zq&_mQwji?o6(RQHr4jtlz+*iLZJ5yjX<U^xQ@GrYUI+vz)X(AIu4!Y6xo)g3?7 zm!#DTJ#lcnMXV;&SIn2gb^ANQ{P6@iNSEyUg3uc>;IpLni`>aKF`MIA(B$cx&&)R9 z?#-G_wR{)(S)8|ZZ98^<2Jmc#b1*xX*_(4c4E3dbNti#4_?aj?{}R`mb7zv(4YH(r z8{GRXvTcj%dQIBcRRM~)XC4!FNlqXqivdH*A`?|5CLH}Sz(l&{$IMKV5L$#;k%HWP z-AJ)9pmJhH#w=*F05B@U&H?RfYNb>v<{S~{SJp~uttkETdO;MGZC)TWxxf>VQJWnB zgVD~)Q?Dxz(<-EmYh)&}p*NIEf_||vFO*9G-@!`AN)n$m7OhHSN$PZ!Mx1_r2xnEN zilBV1&~zM2DY!4E*M87I{DukEt@n`)6KPBXkQ<3_Fc7q3bPxOfnktLQ*|*1<D_18Y zry#G-om<V(VAl9EREsvO72(S@9L$2#qK#{F=3OtTS`%L{hO2iwPbF2WLUF?3W|tZh zsA7uDz-D57f=e2Mpso+YH_8D!M8|%YyqcQbP;zf^SDs`LTV{u=^4)U0Nrt|z)di>n z2(MOwE=WtAWe>5nASbNvw4<`e&65$Sd?*aHSOL|fP*zaBs|<JpX|nU|pF2RLU+j7A zhWle&rfy1V{y1=`LHaF`f#cO(v#;V$*T~2CBJ{2(Fm{fjb@Y+T$mB|CiSyX?Ild`x zqV?_+-;z1U{V;Q==ppKm(NV0{)!b?nz{1Z`n3^<iP~jF<izH{3OG{IESi~qJYplOA z)3EoUM^G}bIng)H0XRphiyTnwO*~$|ZV;iCp{XYDkc2}FJB^4`UHlGS7PLkQXX$5y z?Fx%l53bn#r{B4#%Xw%TO|yNHZmgWUYR+bTcCFJ-vl$~bkWu%<>rI)iK4tL`a1i-N zc6J<9NHMou2U|wwBS{mFM$v{oeF}*bCC|1B#T=8WE>fhFjGir#vLwHw`k60SG(BFY zUH1!9_cp%E-de*gFTWPN8x-LkW;d~X!6gC|vld=O@&po;K44YWLhisnnUs7O$?jCY zl1sWTlY9oL#fY`W+>wr|ivuqP5UiSI!bcUA%&yp#E4aKE!DQaFK+jIdy}jt~+2n{Q zB1pZ$W7g4gT0XxQOv%zurPpfOCD~6<&(57zXZyL6q-)QP#3No;HQvk=v9!2=ar-J$ z@^E19rS~ddwMUm(p}QhUBlMe|&dUipe>T@AV#Mg2xa@h7Cx_#>AoGa=KsM@gfDp1I znONPfqQ*k_hM9Z5&BD-L6TAazV~^T-!a@yEmkUFGrpUV=?na)FnHm!QTUN`6psezn z^GPK~y!bTyf_65kY@7N<I!z0U^JGKJkcuq>%39_iS7p}8_syp2Xx?)43_lhMd>mCj z@3-?QB}|yP-{#I>+WM9(01{r|t}gElzJ-NUyiDRKm#T1ydd?c~XRMM59XTzSvcx4Y z;xL@5rM?yU!&PFXIb_*B|Le)1BydCiHB1u=nFEkE^HvT)T8s1=Z$pYj%278xtZ%#z zXDvaRk_@;iqxQe314m4Mg{PX<dNN~_8B$fzRzras&I1iiU)ey)0iTWRnek=`Om>pL z&4tP@0aCtA&}q`2HQ6~#qIlv5E~uynvoLMRU5W}zCdIQ4sawmAe(3fohl(+?hviT9 zi}-@&UIm?lFYSMx9o`G<HO)BMPh&o{I%j{EbMu)z(9a`5mSDIO7Y$$g5Y)GiMxaaF zy?aM|{1Pl2?cWg=0Zegvk2Z#_vn_pSdXMb=URCCebJb+_d{U`anDrRBG#Yajl6_I8 zapAwo6lwLCg1+V(%R5O_rjCz2oT1SJ5oIVG{UgGDjFB!GWyQpquufouCf1IT!G;!U zJUl0>xBm&jPQ9u4P1K<=PTxL3-#%X79ti&(?w!-SR0U>B67VwBXg#1Dk{q6FPU=S+ z{tark8+12i-p&RrioRz^ZbFNe>Yd7y3tdspwo<C^SFuz+YnZ8B^Wd`31VP}#*R+mS zHWe`7=#)XA3RIbKSr}6w3o2VFY<oI)(4}~{WTJ5F&@y6j8ZC-gu`6H4Kp-&fyz$i? zXeo?ndX90C59mdnG45{Vkbq&l%;Wt~LfDY(C(3m?8~CAndr^X_@KzRlqD!aA4OjIM z4;MIdsFE2&@-kbI6j>TGq!w2^!*^^h2x%3x+rvUz$Fm#-z~&uNN;vTC$%Q#O+95Ks z>l6x>;sjA<wd=4e2c8+Ewmi+_r0y7U$WZ<I;Lrls1RU^BGIC71IuJuyx$o4nscEDv zoe24ITf5J^njTegs8ao^vaz-m)i3OEM0%X9eOwj7Yp%6VF9|zcNNAh=<ou0+ls87Y zza_oEMtoV;@q%>wde67?Ls?w;Tg7zaeDX2@-9SBj6G|wdgcXXU3ACju=V0EGgU%h5 z&cI4T5`b%7-9@NVLI3#31@t45sZjgG^p(&spQ0U!tQ~<RN9_Gpq;7O}+~4LG);y*Q zh||&ughYDDiMO2g@3qByKEWUyN~TXdUt(^K^><wJCm1cL+1L}_OlR7x7}5{<a<>|# zX=1A1O3VbsML5br3ZZ-KWBi2(SJ1NJE`A^qFMyhl6;t;7=?@KZxr`Z@!No3x)^;n? z*+QfAj;LS2B%^e;9g|FEE#a&LHZS7OW)r?DIsf~)o2ZJUrj$QAZAO}AWnMN}^9_^e z#_&uz@F>a(WEgALyg5bILfXs=oNoqivVPP7Cj_~-oPIguN9*$JkMpv4oKN=;&$vjN z{QzxU9!sY9X4ot9n7NMpDP1$Y9C?4b$To{YH_L@qb&6h;d70a1hW5#u108PZv5~;D z2TvcPocWTcx%2EUZeK5`(O08%Acco5a;NpIo+DbqCGzyzCrgErvg-bg=N!%04W%H! zA!~`1vzce<NYlt2xzV&zf6qdwlV|C+8=y-?*Kes)`U@C8D3;AUoN{!x8g}$B_g=V{ z{3>!DnB7Hem^?1%+YEEa@hI@IT!GH-PWQVtXlTci_uPpdG0ZS!wmGh?sdwnNXhSPj zmouSZq|c{)8z}C()WBoLk1Ku{EpGA|yD-KrDMu17Kc(jSjLYpj7iwZ<_n(3r{eY60 zP9La^VbHdmwG&aKdGU@IqC@>-RKGa4YX`5yZ@I(Im|mH}MOk{Zg5@zq8>=3x1z8fE zs|+|HDzBt8QRIEy;Uni@oPJ)go5xVTcgJBPyh;*7^NGZK{`@I^5Lb7%R^=+Tyt%fG zZ52UnA*a>Q_f5U%R}hKaWLP7-*Z?b>AdPpFgPXM;DqE<lqL_R2>ooZCD{U2l+z%>9 zN@xND*y%3x<t9-&;bEDh`hahP5Z7<?UXZp-dK1L6%q(-qyj^jA5%EEr+g#_u6lt0n z_JhAfS0!FKN!UN2>eF(k3hy*U*nfU34n5%gNW<~7G<)uh+2J&fgSkV%Bmxw(WqqoA zLSi1@^O;VN@;#uO_`*ax4B*+t>wS?og}+**L*(CEaC(5tpN^2yT@}Rd%kfLz(^~t= zXty;g9EO5<vf<)Ze2{eg8gWT|kF2o{8=<V>eB+tVIaZ`c{=yZIEwq2s-!aP@VA5&j zLcfB#saJoTCu@nFKWbPn(E~`0`Qj-`8%<E?UTe|Ct)TJlIZd6PybX>Jy3yf6(!tW* zM?U{(g!%4ArlSi5t^*77?o*qJkeO$m)kpc#;ZveD94q|JkIGSDifK=<ej=%<h0$yN zh2YGVq%QM|*_r_&0ODG#3io2G*qy=c_W&(zB~_vw^$|Md$RE#7&JjS?RHK@hN#UqW z5Cfc%SZA=dEHk5G5{jA0A;g|*pPc~<4zq#<Otd-1#2yZg5~2d5W}Z?_S+)oOG$fOO z&fuk=^@X0WVI)1UnF9T{E)9d(s>za>L*w0=A7<nd*f`40mI90((^OvE_aoKvIMVx= zke3pk;x?TSANsm8G<HCe5rBrgf=qNdsm+AICg^3bTE9%;kVfv0P4Cc1L*@?e-rbtR z3sbB2YxaXD%E-cEU$k>zbr{!J$2G4_Thd~AmDrVU!`P8l6n)cte&r0mzYp5n6{uds zn46}mGjr8rtGBfxbL0J7S*MGha7Vwh(oZnWEsPv~&2Bq?R#bqU5b}dKEP)Nj?kSEA z0P-9_5N$`QPyjnri+2huO3Z3inDP0`=Fsro_)8@ClX~~o`$r&vJg@^<65ziQ=HUmi z^^Qz7I($$0k&-5){>qDp=?tUy%I|QvJp{XGMM@&$x+nVZ9?527=wfm5lY^zZg0G!5 zSF(mrWJkZ}0|pRnL12}9I#d;1lDSUl%fbxHj-<I?>hUA>&{)SUoKGR@i@1Hpp%(4} zZN4~c48HB@s$@RCxiFkYCe1zGsfk%+BSj;cgdHri=)Ah{o5eW^QNZBS@i(k&z4728 z1g7;ght6#d$UzJJt8UWS%17bv{vY+!6(4}OhA)nL$TYxlOy#j~FdB3|cSV!}Oo;C6 z*YJ1aK*-(*KRVz&>BlACMLY34wXV$cq=bL~{mECzLt2Wq&Q0%;He#?xhgrpzQ^D}g zP3+p(WQtyreEhDI8f)w+^m0n|vMHLkpD?_q9+jh6ecVyvH~lJy6ORcBQ-=z*g-nbA z-URijkpzI2(p8RDc>;9R`<%R`sjqNVQu+-D<f6_QO@uyWu&jYq#b^tKt2Mt(J^u&i zv40S!f45RWx`xlSJpC{yiY%kzenbm<#MJgE#{S;1K(-jRf55m0o#7xgjZ{j7k_FiM z1tZKhg82gTHZ7lGq2x7|tR8vkhLYae`E~c?s|bLUT=pB@r9t&vN?OCM>|3Bz>3K}_ zhLqAv(jwZ9Bo8^6PaB=Oo16Df#~4N)N~IbkzwxGdtTa~{@|tYxa{2G1;e!Sc9f;`^ zmoblJO3v&QR&5088-tgoOM)DOdi}FMvWzHo$@;b#+j6FyDDp;a6bi=IOA`Te;-0iT zg1!L8G8lF0Nv!F7GfytX9bOJ-O?&w1B3FUfe1V*)1IUIX?77Kxe>iuc@>R*w@7VL8 zM&E6X>0?Y|2;)o$4gxh299+stCDJZtdTL860f>e?sFOr&^g8j`RZ%7Oh645{VjL`i z>tSUuyI%>5r{|`h(MmH&s=we$O5KpZ-#`Hb=ke3)c<Ikzj1CVVl;By5$`{obCwEU% zXu4OK(%pE}FoAGG>(OkUoMLl$5PQjf#Cme}p>kD`G}wq?EDmfCnPDbs=U|Y$=Z(>$ zQHHcndPph+yqvWyt6TCLlQqeTYt}+WmgFzYWuhd3b<?1docy-ua-;|4LTj4iX9j?U zx!-R6lba_eYt#I+D^O`ujYxyO&<D;itd`(0`!O1$S^Gy!IzLjioD#L}blo1BVX9Lr z^j`LQOHO3SPb4I+*D#kDxt16+r3JUg#K(Da;Cq%F8CEjrLy`$XfoCiSX9CA8Ny|A9 zLItz=i)2K0Ny-57Fu74~8HDOS;TFJ_Qt16>hN`7No}754Z8=|JBr19sM$DpR^Pr|I z>xvO?{!ntfdeX%Ag6Cg=p3$HW<?n8%%qv-5tuEsu)y#PaPUTN*oL5E83j~fu4QJ+@ z+Q|xBp_D77$yoYxe#nxujpXLpOO7Wlt;u%P(<x_<5&>0jc*efqz4=0!tMdTvO1-4U zwUd@;W%7d$k0;)bTV1qU*@!dbvaVNy#Fc>!mSRN?48a{1A?)0#0@;p`;v2|6(M(k_ z%z05SYAzEgdElQ^og*pp6&;utJ(%}Q-z2Z@7VdGsiHE&-F&*Hyq&x1@`k+tm>U)50 zjg3EZ8TGsWq~Ds<e<tcmycz_ILMH}D?U+u6_nPJ^l{X{&37B%`PUz6Eno}(AN@0T1 zx--CzWUY_g6q7u}%QW#}W4l3=1wwI3o<^N;IEW&3)#u1&(7WqX8A^NhcjcCwAMw7j z92j4R)HyzMo+%(i3YENyYuw|KMp}mzDG$!d;e5=Pvk#O6Dp`-YQNshy8EI-}uMAXN zNTEt=vbGAM7I`9>99E@M7@Ck6N8gpSjuQ9bqRxxtZ<yK;kZCa?rno0-#fMVN*3Y%S z>#OW3r=Oi38a6aaY2IlUdL<-2#L6^(q8+UowbhkeU1&(L_D_iOe6lQDle@58<s!b* zWDUm7V)+rQm{SXmD9-?Z?}c-_V%P5^foj!r%MYckiZP-{Za-Eg`!(9#5DcT>DxsZz zgAx$S8A0P+IXnpVmbtJhtWGlWr5qbXUcRy*ss=Iz<w~zo{&58%ffP-04xKD$Scw$B zK>+qrQlbnrFHRkw@arU`L3zpUb#kOX&3gEaeSR1>U@{TbB*a@qB3tuUFbHvE5?VB8 zh5o^TqQ8~v{jzG8#Hm2Tf?Mm==!&iON}v+TE1%GK@+7NCft4T<U!qxOYQyV<!SwQ= zd$-(TAXYv)deQC3um<}=y*hjLw7+NA`U3kuj1mmUKWtGZPd?bcY>_CxKGMHTP=WWi zesO#dkPtCoxhyXrVU)ZQJ(c1dY?OkuRECoQ4XwvY#~kytFAl-Pg$>=33WmuQ^lZ_l z!Zb>&q9r$63pL32Y;Mr^<WSD`N%F$Rz7gi|E$1ycZ9;*>O4v_$v;B(cDBJtfvJ;3c zwDAUkN?4G!Ul1cuA17eI9IJb~lIvW6Ok97!Dt*+-mqP)Vr1H!(7%2HsFK~Dw@NJRd zdUmiwWk@OMQc_Z5A}Y!QmN}`*Vos0Ax8$UwPrBcu=-#I`eD%fUM5rKqdcWSqh_XRU z2(P!ocfGHQ4J&yVFKtF^z?N5S!19ilPda4W?Mi{|>xF0NXBNMY#^li}Pp_<X(f+J% z&)L3jw!k6)J`a&E=bOav4Wv+49CN~OO7LV<h^yomS{C!eEJv3@8#kPKM&z^8XB|t8 zjGnekg|419oVT{@nT@9bIeiyd>~FZBrLny>vQIqb+nc2qIM2VgNpG<YmF8a1z%`!u z*B8HUeko*3>a#eu`Fi2DMU04hd=CrvIT_|n%NnquHL!KK=GrB`sb6%Y#Jgk|;={eA zKCt#|<SF6OrR=tPx%cK77E8PhZE@=E^Nzwj4o)M)Ajt3g4s%7fD{Ud0;=?g6T_1gs zJZyHmOis2=|0cjxb%k~FROkvPOj@8kwnw{iX`R*0oC)@e_!?O<TzKvUw>Thve^<ua zk^_(k*US_h$`y>R(2+2j6yC^&Xd}emz@)L37Aawi9b#H_^H`=JnU}0VL1Y{5KBShq zKCmA%w6<z)k;|KHRe|UlthX3yJIniWzWSXr*kaQ<UWbA+$XZ4cYN1Fz1FxjI(qL%c zA-p*>?Uh^Fbmt}OqM|>7GH+qFh6U9TRuYgBf`<Ci#J5q_7*8>;I(d=T^us=Ew}T6# zY?5!HBa||#wi&C}1j^iToFgxv`7DIrF^rPHUB1H%eEvCdtjqqQyfm06YOSyARiQQy zKal=dMq)QY1`YyRzp^1@wZGB%CYA1N{g$@UGKLkmDt>YB=8<I|#nx<2yn<X+(h88u zyY&7m7})r52(x&vp9$BP$<F*IFBrzLSL2vv2xGz`&s}d*rQH)vaFcW#C<wVuAY05* zp)x?8VbW4a{R^MZjv+|*toWhnEV_(O7~Z594OO+=>um%`U#HE$Y8kA5QS=ggrZ~ip z&S-3WZ<5jv+RxzXhXj|7Al=Vc_6kTGVat>`3_-%{N2U5^>!HZAh^NFM`t=%ePU$4$ z<32DAPyJoG|6)f6&RpP3Y*y*Vo*`jG2paxCdZIyoo{s*7X(sO?R|Pwoz2>5ei(eWo z7GGb)qYA>`;H@%Jw$T`{6<Xd3)8jQSKQ&P9X5rw(i{?{qcJU>a+pGL;Wdr;Y6s$Q- zcJ_a^ab}z!=|87ScE?~43R)@F;6are{F|h!opO`JSHRHW0P+dPW{Fko!OqK($QD@G z3uGf?Ako-2l&OG?>9<RC-h$gHp+enOf+P~&n6u?)M&45lz7_Hs5^y2=KZG30wNU=B zX@Z=c6|__ycVl6%@$<>9KLVtc-of*A!&s(xE>dE>Q4{SBv}z^L!%D8$sx7`)khJ8o zLx$(sNvShnDRD@Mj}|T;gV~lq;keL2GzyHR^Kvpn>kf~E1rRki<1OM_kNjznh(AgD zQb%GN+Ihqf|EPaWRXSc_XB<9fV2kHb34Mx`n!+9~+GaE$u#O5*%L2d>T#tQ8FUI=Q z^6t;|*UX{GHBi~&@2AD`;*LZWOEV^>W{MAi@}!`-C>?3L_$}00=+~zZr;WT;-Y8sr zvBTcm3pb-k2qh`{mYdB}?Re4KW&fn0=Ef#O6)x%o&b|!8fK#d8@fFO<=)=r*&z$R| z2U96uWwjb`PFUVw>;TNsHk6>!TK%mLcWQL;V;i=85KprJVTHU_w=to&lbcu-^EoLf z>XKKRJV42tVPR1!M@p8GN%%oAg(_ZaDS3f3xka+&5Sxn*sba2Ne(1{R*2hfq&4L4S z@~L!}$Ae_6iUieBit^ZCW>!<&?|4hpSZPWp;~klWjMEg9OMtty>dzeby4dz3^yY*3 z@4t0}D#NYqB;Bww>SfTLf_aJ6GTmCvIqjw@4KYHQ8cXe_4JyG#0?$8wS@{ZW$}zYD zlls{h`3=&es|_N<CSyz}rfBw;!UW@R^f#rGeB_;<6F$wiHVnHCOeroRJGxU$3`3LF zu4UvkX*^$y%K>9&T(|L<h*x5=#@W+MXjl|_l!iiw*KJAq1z4eTNkh9vi3cdw0AjbA zU7#kaP6yryO#CWG=xP#ij{0n3zc(}PDCupl1rpx(mCQ;`TMJFvRRwZM`QSD2cpRD4 zHE;c@(Cj+(2T<AQwX!!KO{&<@c%|&%_l8X1e%j;86hJE#b&FbqgY$t@r_adnB0g0> z{46c>$cTPKFp#`xwso&`mX9wFIF*?vcw|1}AtPx4B@eHa!>ANo#_$zb{P?SM|8QO} ze{nL#u~u&WNTSe&IQgi{EMJBDnEqWosJgHMVO1h!{Ak*La>r4g1;~Z(!o3j`bohMt z_~=pT1|V&iyRjs%{}7j_t5cHEV@LSp?f!m!_8vMljrUHqVS26q&UG%(ZN_>$?h?}b z_LnUCO4wq3)@~Tw{&wf+@|Pp)-rK@|hxY5=7KY0czHv;Y^N!_n?k}w%V|2SlrF~!7 zc7G8J+A7gU{Dilkec=uI8UvWoDOX6UMR#f$0{-v}Kl5+UoPFip2_t^`e_33Iy*mbd zk-G@(#;Wq;y?@(`om<&f#!1C|($ES*4o5)3d#8057xik@LV4+~v^BS?v<^L-TMs?V z(@*tC$n)gfn1O2$6Th>TRQV(RN(eswcA{6C_pk(ovnmp<gby)m9b_#ZJAb&zj<brA z2DljJ^NL`SKCzimZbTEur!(%TKxA+5UsQgTL#$Gu=Wf`+$<;pA4BE`w8rzHgUQ6mM zHS+WZby4sQ=N|N9d`8Nqz{S47$0uB1d1eSiVFuTBM*6-skC1WzX-0G(5Xz;5k1Pyi zWE9WH)%0ibDby;1bgdejv1y2C)3UV!0vZaOAK3T-><wlOX0G;id4$r<$Ez6PZ(yBv z*TzKow!=qE(?~5)$b0_PS;khbs~UzGp;ka@G+cwJeng_-J;dq(@r>$8mKH7k*_rP) z4{coIGk6lXK?WAr=0a1sjx*dB^WP1gPxT7&CKnHJTsRH;F^(7bA7=ROLMvKI0L|is zqlg6xA6^Fe#%c~b`L@pX6_aJSJ<e{TmeZ4E$J>ow6_Iwdj|{kf4vdnIu$6_$j&^za z6~}`=Nyl*scN5swz8xqkhxzx1EK=I|@=f9akE*$j9v8BrGh@kHG|Dc1TaBH4Jm`4% zmdiqH4<QT`h~n}y)m*uqIkjGK0`SLo#A7Keo87}v5N6yG++Y)UTlJYaN0x;Yf~fpE z425+JgXnHqFi@74LdaCxXLM4-o86j932cq!1)7*LK^VA9?k(y%DY{r1dK0ny-9q&A zC0knaHB%HB^K`^x@niF4&?w#1cs(Gr?{z0pn;6*oMWlJ~H22WL6)k}BfV%R{*^z?E zzh`BVTpfFBQwq4TeL&Ulse1-Psdl-X0IJeZ!C4<w3p^j+F6*6;w@dZG{(3c*1Od0o z9C&H8t!Xn24bQ{?!`@>j&*W2w3Y_#$*MVtqrEjy#Ix8^8bNwo}HLq#qJeWB}m&=M_ z*=G1tk|ErGW>J%g`)uf(0AbGBg};wFXMa>Grrt=Ij@B4hC|8aEk%$r`##dGHH`&Ia z*jqXF%%z5s@g<77nyX8^%e#`!kuNL=T^c#p(GV#KR@ewLf{ee_8^7rRWT>o8atQ7l z^Y(p0%8wPOQn8Th&%fdPnzGnI`5e-q`$o}9<KtinLCRi{eU)@X2B;N3LTdXQna=8$ zAbk(Czf<?#$wQuUNxRLac5NERG!$ocak^qd9>w*j1IXj9tttBnGO@f_x~8%AMQ22v ztHoIBA$coGJ57<*-s#?Wa4=XtM6_kp;z$|9AK}P)izPqR+1sWS8J^_oX5%}sF;hZW zQsU6>j2inLR#<6$01_xC>yJ1l9sVX1mb0BpR!<~}ZaqzvhID+VLQ3<OhI7mmFQY1P z8d1;&99B591cTE)JHStkR4B!IyS`10N;1@i#JzWA8`d2dz4s9Bw;KoiRu}foXRU;u zLA)t_*N8xnh+Ojdpc;Um*M@HWB%4=1{EBh%iNz1-c<gj40+>sMXnm*nWi952f1t4u zbmy`+67j>^Apda2=+nG!eab=G(x&CL73uBaa~Nw-a3Mkp7{-MbpTSW!df@0%xICy2 z6eGOKpzI!gqcKhVn<&21^QjtWfxiOnE#DXrT`DMq94Dq+>bE&?^*{ns%!kYcz*#XB ze!9^4A_^8v09@}~+l)RGXF%El93V8UVWHDkE$bVnO?_-VkduAa4}~<_N0KZnC>OQl zZ#ot1HBFgZoA4C4^Fr!0<?w8S%zA&>89noOYC*UIpGd<hwGk^d3K5(WBqMuIu%bk& z$Yl0m1FHyiqoyZx&VOQUDKzivR$4F{Wx3xpA8Xm(02GZ4k%W3V4GRmVe|x6GIZ(xV zd(|A$(p8?4ZQX9ep}74HTpkPQkdG%8<;%9M)eVL_CJ;d{3cx5}JI(#+QoYJ$mEdO1 z9pF&lXl91U?x4+rIU~~+)D(D_CCA|t2UVx!ZgT9<HoPBy1$JbFAdC&cFL_t~6bCx( z$&dK={d1A$hbJgGc-O3&>qY&*J=|vH&yG^rn;+nM>F<q<h*nET%?Rwt_2&nQ>GmL^ zE&ia2Nf+cuwMIsahaPe$!0n6t=DQq3sZgaZ;5Tj00cI$kMpR-#FEV`vTDF0)EMA27 zmxHKI4@;~HN3j&KlgQ%P@Upsuf_VT-SHPa*0JMc4&ZOjCV9(RFVHDt-2xpKKj-MDU zFCrToPK$g<j8KDyv%$<@?a{14W!(7>Eu?zq1a9*}2OcrNblm%{{!&GJ+pwzY+){IQ zK0vDEu)Gk-=}}jD1-(7J@0kJLhn9gZl@k)m13uA5dB=5`k-8B+J{b>!YfjHR()p_u z14Ne`k+n1}O>0Bo%1Iulp=4Sse?y+^ke#5?+vI+byU&+0;Te*9u?~gYL|8AlUdgy4 zSM|2lijX_&tYpEC6Iii{stnG|p}|;U46q}?@xs!1l1bDPi0MN9bQR-BnE^*x3i`o~ z+)sWU{DU|^$KB+f6*`+0Nnk#6(dikl9-s*(Z2|t^5B>-I9)+gP2G%@1P#R$+llgkR z%%J>;Bo!PbzyVK=D9i2iK3u6C1cfhx>I>Uu@SX<3D$p5G3(NT67ai&f5uaSp<1chf zqUpHHV9#9`x<ll=F+9p=dZL1I+Y%TwKW>rKUC+#N?epSvKF6N3Cjlw+_EI;`9>AI; zaN<QDH0|#%6UR(^-(Q+8-3`@Ux*cK_`p`O~ei8n-zu?HXK~@a?cy@(f+IyVAfFRdd z#O6BbsCpaZ5J2W%{sW4cPi>8Z747e(6wFGXEL`aIiptqfqcvCG5Sm?r(FtN_6rAEi z<m87t=PkKY3u75;Jm`QE;ZZ~QYXIP`Q_PA0b%XP1n+sqpbRuR+hcR1^!gQ!q5ZxN+ zIo)~alHUr7Umi)l%c<#D(YbXAqBJB0<H?2~Ksb8DP~8Tx_PO^%G4WajJ#>Lj#aHNc znZ1#-nICtgdg|Z(p@cH{+l-CTs$8c>cTTN^Q2Pi};^0y<Fn;NZaZ8SxFBtG{BtJBN zdJh7U>hMy#)9WuSYv{V##0}~_xxDCWEA&Df1VsBl_;q%~5o}bV<^|5?3B)^Qw8?Kq zt$Gw?>h>@2g6{p&j=T6x*qRdobM3obWcJ8l?1pLXE-(r1G%bQ*=D$||L&X%Do2PW$ zIB$;l^2)Pvre+Vy*gNN-Mgnm8J(kg3xD~laleo|irA3L^Ppm@m>mKb-PqY_sf!ox4 z=7T0HRSC?8ZuyI7;+>S-!He<xx)Z9M38Zj!&1!Wt%%yp86hxL6s0GTtki2Qk<))Ow z64F~e1c(XJseK4qU!`r>gD-!Q*1|oD_>7%|-KNRoVry387!=_$^&fy|Qpk&-{%Foh zg~D-Xx&IPX;=$%;^n540NhdV+t<b{EH<Xx9IrbA`7q$=JR6a6|1aY6nr{d8p00kf< zw)x14^n|*-j0}Ar0e+T3yPZ1k2HkRTZ}u9Iu;n%$fa~#vQN9PZ;8hwc;!BiJvXsbc zAMDhDRDZ|!b0qUClpXM;IDVihOMq7}ug{(~CgmFR1!iI9NYCyKAJ;#YJuvlVGVait z-7JC*7D7@}QU0nM=uwJNmll%_fg;xAyq;`9iy~;f9;&BW3jM=v_(H>o@<QQQ#I72j ztob#`LhmlgHF8#$=cJkz@)N9EduIH2L&G?~gukI~`>dEP^9O*SK*u<SsusSotqhg= zTMuMID7-Zz_H3)&4CQ)kSKpuu`cp}j$JRKwH8rx@brzDRfn_iCX~%egV+!~dlSF>i z7>gS%iJ=U46Aj76$Q>R=9MSXYD4Yy4nMnwkn!7*8QTNUS0R8TY!^{k*)O|iwvL=Nh z3a<p+>3<D^2nonOFl)CK!2GT>BARw^ggf5C+>j6}QWK@LDkj-`3bLy;k7Q2F3Hs!~ z$D1{PB~REZo(JDwDh!<{LzNLlC<<}xehpKpM~0@@_~{ScrXeq3dP*7T{}~AsHcj~9 z#9l}mVXJGT1eU$wB8R61#4cPAK<kKB>zH6k;qOS~?Ew63|5V)$nKPqT^eGd5nfjyY z<Ymm9E4q@W?A<5daiOj#SfP7Iu9r@*#aV`8mfYf~L*7jV3%yf{yEB3O`iEBMLVb)a z`pB!F7~haR2r-#|DAL|zzq+cvM{g>I<Uex;fUOt@tclv2=&8}!e%}`m$cDOxF!#sA z*p~wYw~=_1<pW#OwSFLmc#;jaCNuTCsR^Z5@0uOsWmi(PLqQwb()y9YCB>;(A^YT< zq;)ia<y~?fEcB@et6H(fO(J1s5HfJ}yMJn$)Z&)DE1J}<^!0IpI)`y*5^fG41xli0 zCilh==FS!iqia6VYJRmVea)QYcs6w66L<sa4&xGCiD$YQ@LNXe0@ToD$!WyS^VJD| zGL3NsqLWPVg*)4Xq9*c%F}fn@pVAnW-NG|1oSHy@W6%@pRdz%I<;<-(bkj1wm6c1% zW7*E6;?0Iqj>s637&iRLGGQFA8&l4PEk5hLXE+uCComybOIvXfn08gWg8h;FCG`$K z<F|47HGfP{GTU4Ix2h6OROvaf%-gs)!K)SNJfec-@nv$2)}{I$?if{9*MiB%pzBCn zj<X{|a?V(vI9J5xS+kGAun_V0L{~PQkHWGTHi&_?&3&{gR`IEjgs{_?rg<kRE@~w* z7hgCCA%;%G&)y2)P2QD7Vv8)op8)=*E|d-=8&Xr|(mJ9S@0|E@v}dG@WS8!+Pq@sR zo^Ej);IBG;usX*oj;T9VYy0^L_z4h4Gu&EG+tb`U1m&3KksQUVjn{UBpvQfYlHdHd z0hq~e1Pkja7GZ}-jy(L!Zp%_#A$%7pD*LI6pDrA$zw>8h=B4C^pK9hlUI1ol+>hg= zlv=M5&M$158zCZ%AR^dV*{<&W_PE$8ZO%p;a^Zv41Pw5QKgDL3(9{uqu>^a6aA(Ea zpQ@59D-9Biw-nO;JWk=cWyn+BiRD;e1Mjxj9z^2|7RThI(zTEuS@)qucvqmJw{>Nk ztJgp?k6np~OKbCDSJzhHPzPui-B)lp=^w!qakA1#4a;VdhbVLdrEd86lBWw!I<nKR zje3seow`6&x5=pGvv$qP#I2f=e1GMm>-bbdr*jfn|Ir*%4kpn3r!EgVP)5a3!t*!L z*__v|Z|OL>npJ?odpy!jdZ=1vDK<XqIJCBayrhkxKJ!$>=@3@}RJr8@$J+<f4zfnf zIOmmY0^F@#MWan>y;-d}JuA)DZBH4J5(>$4mqr*jn=YH1T(_X3SKF+roLEY4$#6Xn zaCU;23s^f)!PX^8ZVpDse-|Tlg`)W|R_&b;m@xV4cLw>Q9KwR^=~|SUZEr<tP+FGK ztyk_Z^7k1`L$Rp>w5m+aNz(ByXce68{9Si2NUlKHNV<YFs_sNMhWfiyCot1a;1hI` zyX|V{s^CROl9ZaEL?ARD7vhg+9QgS8H^h?1GV;W@Eez-_3-!;XvqqI{iY%x!&X3R< z7=SpYKRGZ65XGsi*NR4GX@KN_q?$jHNB((CkwTIe$h1uWQ)CO>V@BgMeT;2=_GP?- z8qP@hRs~kpG1GBVu(dJbLmf9>(s8ERpFYSl6Afd|e~CRMlA&BG&yjs3U_xicQEQW@ zX_s|M*}d<f1YO^de(y&XNBC7fst>o;hIkT8gsTtp81T)CbaVXKZ}|}X7oVcLoioa0 zqn$HEq89|f$pm>}R)#3aHbWqNIJM~ngJz|vtn@}_oJ)ShH;yielgKp=ik;s14@tw% z5eh}ZwpFppIgHitas|rMpUM_uOKCzKup3GQpQy_-)d<IQgvIm$k!7k$ym*vm%7vUZ z(M775+rMww@0yu1x&^l#nV-D{gaN1Di?Bcc5Xu_?J_ASE6x|;|RRWP_jDX!27EYLu za#KaV5zf}JbW2xRYBe!K2kosnxdu9Eo>`hG*AVxDE=0HeeIh&T90DrG%yF42)lo~{ z)~#D-%vM>u8&aaqhfovukUrBY);*R}E}{X`%F~s}y4WKjK2N9i8UzgW&J%w>#tg?t zV$lTwkO6{<LZ77Nb;P|?Iikki$>lGQ5VhFWLfr_8evqmcnvplLJ6(RE9Y;qll-*KW z`%5Ql?^sSb%_n}F(#W^W*2vuj5Zw{4W%~N{D%HUv&1Gml<Vgi8zomTiL8%SE-Sud2 z(dckyzo7mw97evlgf@cJxoxjS*&NY9E*b>`4&D+K&m|A$tBf}*=p>tM(md_)3?`&q z&Ak#LG=6|U6Zxt{CQ!eC*o8uq9nmI?e`PT=+f-J(DNt~vPtOIJ<v{~crxd2$BQ*UH zxF2%64HT0b!N%(}`2#Hu=o&j{_*q{VB|i9Z4zJj4;&!HXLhmrne)PY<pHitv2{$4E zxH~Kn**ru9eS>1BUm_}_x)MM3*4Ni_M*i%g3r+8~P1k#z9_b2Purn2dWnUV^DXGm- z;@$EXc9?P--oiW(D`XEJ&q*J%v7$`1FbU#beW&R`D1xG%bCmH@TsYQ#NBi*l?tgWd z(r}s<@CE*V$hm*zULt>0U%+#7D)7J3FCeA``#)GOZ!rJ{`?n*Kh-@DF1BhcK4G@J3 zVnG4v@g@Q2TxS|5tLgO?gok9GLThb=iYS`L1a>bGSw<$4!&_t<^K2{fOIJnunR%!} zbby*3Tqb#o-JO8Shv{7~*viy0UGy8>Co~mhoKkE~?d#Gf5Oi@I(tnvG6B9Co2Br;n z*tq`X4?)2&!2i>viGTpNtl0ilpkY`G|BG7IEdOGJHTS>RZ_W1)CfKO`JJhsMfcZyq z_Kz$LSY{*n|LV`)Z3O?d6R^bxd*cPx+TsI;cu*Psx9-2pr3fOSLjoxh2uKsjKdQF> zmBN5rfxk|SB>$}OKQa>pgyw%XAcX;+a==epF2jGG<o`7fg8bhA1?1~1>^lgEqNIi> zqpXq?v%QI%g#+{dw((z#{&T_kulJ90!*^i3-TxoFHamQ<)9*l1D<&YMJslW_C6Lu# jl;poC{&jQx+xY%-2l>0fTI;{|0>CMI6ev%df3Ez0IQ?iA