From 1650a3fc945e322297351848c43f6c9a230437e2 Mon Sep 17 00:00:00 2001 From: "Eevee (Evelyn Woods)" Date: Wed, 13 Jan 2021 01:46:47 -0700 Subject: [PATCH] Add new, smoother pulling behavior as the Lexy default --- js/game.js | 56 +++++++++++++++++------------- js/main.js | 11 ++++-- tileset-src/tileset-lexy.aseprite | Bin 97919 -> 97921 bytes 3 files changed, 40 insertions(+), 27 deletions(-) diff --git a/js/game.js b/js/game.js index 527849d..e0d700c 100644 --- a/js/game.js +++ b/js/game.js @@ -137,6 +137,18 @@ export class Tile { return tile.cell.try_leaving(tile, direction); } + can_pull(tile, direction) { + // FIXME starting to think fx should not count as actors + if (tile.type.ttl) + return false; + + // FIXME i don't actually know the precise rules here. dirt blocks and ghosts can pull + // other blocks even though they can't usually push them. given the existence of monster + // hooking, i suspect /anything/ can be hooked but on monsters it has a weird effect? + // figure this out? + return (! tile.type.allows_push || tile.type.allows_push(tile, direction)); + } + // Inventory stuff has_item(name) { if (TILE_TYPES[name].is_key) { @@ -1404,38 +1416,20 @@ export class Level extends LevelInterface { dest_cell.try_entering(actor, direction, this, push_mode)); // If we have the hook, pull anything behind us, now that we're out of the way. - // This has to happen here to make hook-slapping work and allow hooking a moving block to - // stop us, and it has to use pending decisions rather than an immediate move because we're - // still in the way (so the block can't move) and also to prevent a block from being able to - // follow us through a swivel (which we haven't actually swiveled at decision time). - // FIXME so, we shouldn't be able to pull a block through a swivel, but the swivel doesn't - // turn until on_depart, which is after this because we have to know we can actually move - // first. but also, hooking can stop us from moving, but it /does/ still allow us to push. - // also this all seems to apply exactly the same to monsters, except of course they can't - // hook slap. so where the hell does this actually go? - if (success && actor.has_item('hook')) { + // In CC2, this has to happen here to make hook-slapping work and allow hooking a moving + // block to stop us, and it has to use pending decisions rather than an immediate move + // because we're still in the way (so the block can't move) and also to prevent a block from + // being able to follow us through a swivel (which we haven't swiveled at decision time). + if (this.compat.use_legacy_hooking && success && actor.has_item('hook')) { let behind_cell = this.get_neighboring_cell(orig_cell, DIRECTIONS[direction].opposite); if (behind_cell) { let behind_actor = behind_cell.get_actor(); - // FIXME starting to think fx should not count as actors - if (behind_actor && ! behind_actor.type.ttl && - // FIXME i don't actually know the precise rules here. dirt blocks and ghosts - // can pull other blocks even though they can't usually push them. given the - // existence of monster hooking, i suspect /anything/ can be hooked but on - // monsters it has a weird effect? figure this out? - (! behind_actor.type.allows_push || behind_actor.type.allows_push(behind_actor, direction))) - { + if (behind_actor && actor.can_pull(behind_actor, direction)) { if (behind_actor.movement_cooldown) { - // FIXME this sucks actually, make it not default behavior return false; } else if (behind_actor.type.is_block && push_mode === 'push') { this._set_tile_prop(behind_actor, 'is_pulled', true); - // FIXME i am pretty sure lexy benefits immensely from doing an immediate - // move, which also makes it match pushing, but that only works if this - // happens at movement time, which prevents hook slapping, which is nonsense - // anyway - //this.attempt_out_of_turn_step(behind_actor, direction); this._set_tile_prop(behind_actor, 'pending_push', direction); behind_actor.decision = direction; } @@ -1493,6 +1487,20 @@ export class Level extends LevelInterface { this._set_tile_prop(actor, 'movement_speed', speed * 3); this.move_to(actor, goal_cell, speed); + // Do Lexy-style hooking here: only attempt to pull things just after we've actually moved + // successfully, which means the hook can never stop us from moving and hook slapping is not + // a thing, and also make them a real move rather than a weird pending thing + if (! this.compat.use_legacy_hooking && actor.has_item('hook')) { + let behind_cell = this.get_neighboring_cell(orig_cell, DIRECTIONS[direction].opposite); + if (behind_cell) { + let behind_actor = behind_cell.get_actor(); + if (behind_actor && actor.can_pull(behind_actor, direction) && behind_actor.type.is_block) { + this._set_tile_prop(behind_actor, 'is_pulled', true); + this.attempt_out_of_turn_step(behind_actor, direction); + } + } + } + return true; } diff --git a/js/main.js b/js/main.js index 5c277f1..5fd883c 100644 --- a/js/main.js +++ b/js/main.js @@ -2804,6 +2804,10 @@ const COMPAT_FLAGS = [{ key: 'no_auto_convert_ccl_blue_walls', label: "Don't fix populated blue walls in CC1 levels", rulesets: new Set(['steam-strict', 'lynx']), +}, { + key: 'no_immediate_detonate_bombs', + label: "Don't immediately detonate populated mines", + rulesets: new Set(['lynx', 'ms']), }, { key: 'sliding_tanks_ignore_button', label: "Blue tanks ignore blue buttons while sliding", @@ -2814,9 +2818,10 @@ const COMPAT_FLAGS = [{ label: "Blue tanks on cloners respond to blue buttons", rulesets: new Set(['steam-strict']), }, { - key: 'no_immediate_detonate_bombs', - label: "Don't immediately detonate populated mines", - rulesets: new Set(['lynx', 'ms']), + key: 'use_legacy_hooking', + label: "Player pulls blocks at decision time", + // TODO maybe steam as well? + rulesets: new Set(['steam-strict']), }, { // XXX this is goofy key: 'tiles_react_instantly', diff --git a/tileset-src/tileset-lexy.aseprite b/tileset-src/tileset-lexy.aseprite index c5fb80fe0d378c12fb703999cab43d7f23282f52..645b80bd2da8b1d29c03d7d6a9e8639cabe0a29c 100644 GIT binary patch delta 13983 zcmY*=cR&-tw{AkzSdgHoh?Ia05d{^MCIrEPSip*k5Ui*mLAtaFP3(vb6eU=(06|5O zy7Xcp6e)s`P(u-t5JK8!=jC_ryRZDSGkbFO?99$NGv9o30@3Nwis|_1Bs@^TM}3Uh zI2}LnIdA$PA6)L)WpX7s@M&S!hWm)<4G%XsHtbdKB68)I+@ysMNvovsYqK=Q15eoq zQT4t}xyy#%ti>(g%WBN`c%uHs*EvD=phPrr`@?d}0RTOZSc%|Dcy@3862$yVN+6rp-o=Fg5k%VJMOK{ zyigcJ-2Se!nPoktmOQwP9-VRk>IdtctvAC=xaD|9P7T?^lx+h673*p-&H<*soC>-C~5nV-1{ z?Gw+GCi{W|3$WX8&uD9Tvzn;#@#zNRV!HJe$ov%1e$r1%eapn!UzDc2AHZ{S?-!5I zl|t6&g10^Q@~Rf~l0=eKy3O}b6K}*grDcwC6H?BEZ3U0FT9j)Hji(=CubZ>Sx~$>i zF0qN-KlcyWsV%XX@6|G+BRVra8>llX4^r+?)=2kl?g;QA-) zFNvL>!E0S$clsz=)7E2QvGH!isJlno^FX%mbIqzid=1{}=!byEfxoYxp3Mt5zWk>< zmE863JxjlwJcQ1->@n+U%#Dy5iEP< zG0Vy(Z1w$s73>?{4k>Qhx6tE?Tcf>%rS-a=QoM@S79b^7O1r=+YVO%v3Iup>M!PS`*XnWhB%0_+lXI_`W{Y?Z1x#wO8ib z>xlX_w!Pm%;jj+bW;0Cg-TcN$`Fj3gb4Wtnb=3!L;|B_CoK#&5f0_LON5wCPY#$d@ zO{?vrrR+a&Qei&q{*pW6_%H3+`@1WLcX`HSOAUeX#R3n54V85UhnJQ(oyCt!=U(r1 zV;7o9rRsq**Jd2KroDc(VlV0vRCqUe@j+3qy(Z;d?~2FhTCm=K_Q^r)wFkL-?1^Q} zscB&<30Ep_-raFh_3_oj`Kkdd(mH~R5$3uhk+H^eLf0(DXw#nAEXZMr9lPv3%DtL^ zVU-v>-D|TzbV~H;{@bFC+Gay%v1Y>2d-vb&-!qrg=@s{?+paqrC%HFqC)1%PCUJ2s zA1QulI8pkK`cy^rrQ$%3O5uT)Lt#_b;=SbU<}E>so7Hy@dsR}>mYiw0uijFjJ+(nTn zK4?K>Br52Nr{87I{nuWMvl+L8zFCAsHO(3n6$p@tQL>0Q^8RY1V*O0hoXps{fHOoG zp7EzM`CBwP`ATEW$m>2$R$^4^qi@(#j}@2$6&!F)<_hPUz3V zql0kY*KUIv*593uh)Lv);k;MLcNn%vmph`P- zSNs$a!vfL$wpe2tlNpNg(W{YfMi$E|M#6ylsJ$%mV_0Bh!=Fcmm|fx>%968vllA-_4@Hv;^`a}K1mXB8zEit0wIqm4cKLj z)vNh~xCms569vdCN%4G@-I}J@TP(rrCtxwCc-`A$iO(x!ee1Dg4J2ECYK%C!IZm`Q zdqPNfcA{ZhT=&4RuX(s?Ho1>-23;I|S=;}Wi{8l0zr$B*+O!rt{epdnn%8R%u69dx z`zR4;#dGWGb$8dRe0Xv#;@KUXpqc%gNwg**^)^9} zEJ8&OMOl4pEs(uijJ)F3BR5LUqNZ`MY*MoV+J$vZFz*4iIbrT4ulroT(G4<}A0odS zbsip+q?uI01ELw&#@Veq1*5FdK-4a=kGycQ3EPy&utbtSVN~It%C_0_YkZ2JlDL#u%R43;puSeYOhRem)MGghZSLI&q~jeM`3JV%_v(T>>QTC z9!Cp`9s=Zj5(1pfq+Y za^t;Tagae2Ptqg{0Z~zx(P6oFHe<9#1e;_5W4iA|+_dm2fi=9>=T)FXu`VgXx}LG; zxB)Pvblv&8iKbZ8QCMm=$Yn7(ZEg_j=xbZ}vqZ7D=#6s3Y@$ZUQC*{KYB*ZaW9;#t zUuimF3h8>RqMB_nDHEPX6K+G!C@WDwZi8gdM+rp#k6);{*$j+57VUVMR&p6lD1ixI z2UdGKvoehnGGEhl;By}3^YnIG2glwdxcg((?1}d}-A@d*T~0=Q(&Tf7Qx9~c8axwO z#pa!xdF*eO;xH1@aAZv!lb!xrwCMP8uxYaUy3}A+u$XoQcn+}t$E({10W58OD&y!#0>K#g= zv+ki8p{hX_jIfxY@x&L2n(Geh>3318o(+=xi49i0u0za+(Zr)fKiS*{$lSoEryix@ z6}!)J@L5NJPrCPu`&LB1Fzq35WQJbD9g$W;!X-WqjN%@_$<90k)?3=uQ#M-va9usu z3448~?2i7`^kosd_rvC8gnfPTjA3um%%DorB(sf!=io}zB+(f7 zztw>yTW~t1ZFtI~ecpVWAC5{y?V#{~gudBjgi`z#Y&NCm@t!ll{urdYbp}SnH+g<^ z@l6&nt6w}8-;E(WFWS?W@pr3x5rX7XmcZe66ZDlmp#&gs|W2`&aB}aNZ7f)oysQPq*~f(=$0ZN4&0g%(1=6`CJ)#2xS|gUL#m}i z=4wbUQ-@RC<`xI$LS`BMcnRhx39qDDmcC@>=|)v4pYCk)`Y$azFP!t#pdTifJEiDz zyIZ13XUlf}WFIO{4g>iSwS#s*)E`J+;fy^f37z3N&ZwePwtZMl^ekYY#j19rTcqJy z^wujA;tja0(SG(#Wg+b6oy8sJ*0F!!?6JV`b3pdMmS*YjpNcoymEHB9;>YVQN4}x=j0k%;QyPwK-9K^T>xHnj8q!$KNql*j|4JN} z`2)Ty1(nj%EA{zE%cEYn-|Ys4LnJy*AWdV<(_r@31@QIe$FPoF|70uHrHb~sHQb#- zmt}+a)Hj+fI3c=M?Exq6;nP_zNpM|1MOB)xXo9r1Kk+JBXODf)&aTBb*kjM*QHPrn zvr@zPV4Td3xthxW+rIcUPo6?6RP=vF-=pUxnc;)Wfav#yc!`^?2lysk&l<)`;m=e@Jyw*wcP`M>&R+!68x1sH}j(X44qfO2G4D@Gu zuGagZfnbPg2lzG&*pyU!dp|4aFz#=dTEl@Vcw^L@Y(td1x&fSN?xB{Y`KvJ-g+Nge zevb5BBAyIx3!u9lM#E)3!Nw{m{6xO+ra%q=R znrhkA4cGn9oYl%t{EKbIe$E4j=KcO@tzX6Vd1G>RwfmbwO2)ak_-gP{EnmyO7kYAOUWN?oAvC36brcHL@(`h zCyTs6z`a8!R6ZWYTVa1+&sn{jgIfI zxIg~1Eo@C~6>e#2#naO4aZ~y2OT`h9=6NAn9o3;~K`MoXNVnv>=}WSdH;&Ez`Y!65 zhI=#2javY=rmRfgF2Jo=-0QsoX(NQB7WTF7V|r>K@1=M;j)x?0Y!5Juww2T zk8>gq8dD9|RdY*)xcRbzg_GO{>Qj0UH9SR zaa`zUIwiJ*f^jznSaZ_RrB6$9`vZ{uSoU8b#Yc|@=F|*y}faJ z!rN0)nOhPi?rj3a4H!=(sBhwn=csu~G_bAp)bpCySd3+HqRLr0rt}? zY*Sv5Lty0LKh|Y6H;yvzkGq;=aY^ddMYj?_m-h5yxG-Gu*EtzEHG zKL1ka)Wg@jx1d06YHQu-m)Uo>{hLTQbM2Pw&u{kqX*W^tFFe*>h0U&C(j^qX<1 zmgfZyQT@A&lffi}ju@S^DRk-VnW-LWu0S+*5!;*I_e1$pPQ7 zYw<@lXm5!TSA&<}cuTMPZA%S;iP~Fsuj=J>iwr=zfKgqS`a?fqWnxfr9pANv`del6}cx!!jowy z6rBD`&}5bVxD2~in)(CG<%S$O564fHpag7kOs7e54tMr?7RR z#%DQb^3U!im?Xk~ZQuJSrY&)~UfD z={(=!2M($3_nuW=mRTw$g>JM#G2*4|_}LLP4FNNe#G1&n^2>A{d$*cPFF2xe%;c(s z&v-#7vLhMs6@4)t&bZaS@&C~d^I3f8>Gs@*gfo&}))5k+%DOJWvhdp)j!oeS>N$r9 z2@6r$D05hDe6Ap?*WjL)NAGT{xb#F9Qy|bCZP{uO$;YCsF*ahTTk6jR_M7B$+O>)z z%tmn*mIj*kJ=EQ5{6fubGdW!i?6_r6z=$E_nmDQXJqqknp)MP>OWsdcVSjYj*=!dX zK*V`GLaqs|FNIPc>+tj|4_GS**cT2CfukXs+v2aOpaNR31CWRO!vWL_JPV;evJ$@_ zERQl3h(zsMogyM_p5f1Y5;vUMq$u{skRT~*$Y~ggfuhrb{?7osE&ivg*c&-ZmqVId zqPfi?!C&Tl{5mat=k#sLYsPBa@I>)SIP%q9!QS0HKWaM5((Wk+?HCPtlji7B3tR;> zZN%T;rhS^vo-5r6B8&yef37}R{N@Cw?ejU0b9HX-yNtB1ebTY3#pVpNjUkY?9S_8v zOD#^|uHZYD2VJa)`uD)M@d@p-8ZIKAFcW`NmOKipCKxU1prYceuBR+`8F7{1w#xGN zU{}dzyNCUz4_nc;C4a)pCx#29=M*b7mO6G{*FW*-38<0*O7iYuAPaV9;a^O#rCQ0X z`l>1F6JDrAugvf6UhI^}*1aU-z3Rg3)ICn@y>C_*LjSv&MephcD4+dhV$po+ zOizcWRsKo5qm+f)O!b|5ytMD7pi8Li8OOE>$5LmShFrIoCEm+h{HizqP_7E*FC|+! zMw^Z-P=R1a*mYh?>m8D4Y0@+RjMW3sf%z3aPUfYGY(CS0$ai1Lplp2AUwpc|Ft1cO zIzhM%TTKKl_*Kd3{e%h4CNMN#B?=_YguX&~!I9@CE}S2PYyQzpq53h~GnnZs+B--7 z+)kY5U;6v^ zepYGT{wJ~|?rwvoi+5nO989}ELEL@R31&7M4yoA-3nGf@(|7#t(OA}=Q)qahbMM$? zaK!tf^E^-xHxpPmVw`z*1fBb+M&bN|h~j$Bdsk%1Gh#wwVZ)>Pb|E@P6gxL_og`JG z*jJH57te_7o#f4xhQ@APiL0S5nOT3`wDVs3#R;Y@G^9vh$|@6AiG*9(7U8R2fg?6E zXT+TTuwE67`LzgTi!IA_jNaf!J`04C-(X*d0GYPw? zLCJeMX>{y@p68Lh)UqF3>L>qVri*dreoS)~Qo4&BT|9{*K2;aNWem&(B2E2>|4{tO zY3hmB&9k1yYtg*)ITyw68kJ80~p>24J@g(0+M9|D@+F9sJ&P;-T!YC{xM zi1j*n*R$AWefEgLBPiwaW(MnD*43;5;fVUQHL{@m+K#`ByhXoGUDB$LCS)>h!!04Q zA3b)8-QyoN614Z;tPa@o1t-Jm*VCjU3e87IINjZcrTRan-Uc@4H+Xx&nx zXU4kbT|pjf!lDoHQ}l>#%Bl&|s^33^yw}@y-a%*Zvlz# zrO_7QZG@eCOtzxi#A=D7|gf-CL z*ED))V+L6CYuKUjgo)id^87EA%Sm+Z5kTgFObt{C;>8{H4^JFA^S z0tJ(~VI~0kBc69;0PNOUxug*hNz9kY_9g;nGhXmqMOqC|ZzMaSn)_$CWI{Y#v^+S+ zEU)p!B>c+3$);^VUl4NdQ%@a?DmsoWK{bsz?3FU}^F#Pcd*JHZ(Y7|v_Bq?cQlDaf zTzFqQ!#>{}rjF)XY-6dtrYzf|gd!>B)b;J)4#lO$&?~R~Y7Zj>cWZg2sfC^079Q?q zM#}+9yM-i+K#UZ${yU^}{rwM-w@wNpt`|6sXYg#SU!&Af##+pSc_{#waXN;4yXJI? zo)cIFGoEmMK2ltso3j)KgoTu!{cv`(4$LHYqVup?ynXiuC`egZy0&#T9J$~Q%J6FL z@H0w_#x|u)(1U9cDfX&vO!2Oi+Jh7ZsBwgFw)4y-i8Ce*`xDP10(?~82ff zQ6;4xca=iGRtDm30RsUw6g7SYA|{e_`pRgpUk0_!*jMEAPj>t+4zV_$N_BdFZng`!hwEaLv;_P$UbF zI)|vhFGINcCH@m6Gx}E^{=i%piqvs?7uobf8LbG1H5g|IjIpdo0rY_gTelZ?&`0IkuSd=Q@b^i_21&^RH zCfTtn)c(N$O$Z(iekp5R&7nS5(4?tfskM}0TpYEZrCTakNmiHiNmEtR13R-?vf$WN zq#A&^Eg%)Y4b3nleSb0wvw0}5z%~=ENlBbvp0U@U|5T-}=b|@o_843W9}s+gQZZ%D z!fi`j#Gw#+hX_9V4b$S0r6e9G*Q}V19zGtm;T_l%eunG%5px|RTbG8_ph*gxS+rL_ za({}^%T~ee!qc19m60dF+v&5>a4=TL3b_kAS9{(=eDOyy4z3@cBI5=O;;cE)gp0H8 zb1s&8yUz;Ufr(^52QE5`OCc?nILv7H$%mO6=pIj?I$PC9K&^j3T%}3>%?w>fY~L

;MC?Hh!KA$`UDBaF%?W*`U(K5$t$ncH%veGc_$nH zehRuICYFKxK?Q{te}!C)4_5Z}59Qld(Ik}tvnPNb{RSG3k!z5=>EMZ0<_WvV7{Zz? z!Xa-+)S_d9-(fC+^ZP+Np5LA-AWvOaguR?mI%gOzBhp)uDpP^$ZDjaRue0PK;csO1 z<6UFEpdBWtHDsWaA?RQhg6;1L9>leDz^EDN_bH=rmQLxyX|%O)`!!&OeaHI9duPhRmpY!Wb<;;A zP}*UIQ^kK1klFaw=Y)-W@SH?A1N;H;Jq$rZ5KiGV21cMzmm?cIXgm)4)YPY-5te2E zTA`ONE~4}nOu;C=i8rcmEyOEZSdC9_@)C@q6drDFGCoI2J~?43NQkTD z*LjL)!~9k~zsSe{<6AIvJ?D@aH~{ggU6DhFy`DF5Y)W>FztvgTtTD@C^soS z@TMB>vK5iDv;H=`LVdpOK=-#LeIg@S>K2v0D!!|lojb*ac&i4aViKC!5;%5cMj? zsC7X?Fki}u-miOi(QMa?Fgy~h6v#y&$2^))6!~Ki)Mw3USn`nbwBs>tuFtI_`OP1T zr(xGu%)ZHOa(HQ#KEA|5>6*KhjIM^7C#%tV*GVkIS~~qbu5%^SOoI1yL9l{k{+=*0 z<}as&g+zznuzUo42Au!lOpb8z*Z;uYm5=>vrYR4`5QjGSv{(l_O5B)w^MD*#o9tmR z=jjNzKn(p{Co^?$e~K}b=O!Ys0%PT3ySw(CuN+ak`!F{ugc;^JZeUO)qt2kLnH%n= zj36;FtGAcLavFsXK-wTP*XuacdN$B|Mf9qQAjB+wo%NM6SF5}jU<**B__ztLjpyVj zbnPf<0~JMc&fUHW6-EuqIt3Ujn|r{p{d5_&=IAiy!#%8mh*qPOS>*%FWMkHEyiNG* z$p-t#n~KlF;XGNUXD1(N2F%|`lj7YE_M%s#hb6PLfiwG(>S%RXR$l8=o-Y4GKG;0n zM4a6=$UdDjT=BVBNXu+O+iqv@Zr>uTQX~&hc8zGPeIw2@2!4RU4YqvOe%y!*QLJT? zC6Po_8{H>#zP49DYtL^<+T<|}?iq`EC#oxtXulnv?Y3X>c-25uFONw`0Z!HG*1fQe z3R>}#Y&|YTaW4DOcOBu}DE2JyH}v>b#@q@r(*B#}52^7K{Y@^0x$6bezP4E(i3KC< zxG`reCfY6^sZp(AMWEmhZk@3jL)*ZUu`$N&c6|?NdS+S%emv@vG9TWKr|r zy};?aBWqZ7Ha;B9j1N@a{-pzH0Q;ygbb8u=cRXx;H+vmLeUzwz*&!*=SfKfh>h3N@ zqp?Kt2qga{q$L3k&H%t}+D}TH>oYjK@geG*vHSNz>pfpqE9{#NYu^QI=gfWh1&2|y z^)O#?U2HRcYY9e@5gMZOM@SuW_4I0|>uv61-$zSNP?`*}A-pvhR34D%h=(Pg(QZ=} z3wWhrjhf__Yuc;`ZqxW*O3X3~EW<=``V9>!qHK@KxIgR7anZZ7^6H2UA7zSdhTi<> z@IBnpwlU`-5m*prFC#QogC#{>F{};1NEl-BoC$|}YDhJ(hD8+0??`sm^q>dTa%O=< z_TL$Azk_-Z)t7KEqMI=>pV2m>8=)@I)u1f*z}?h7fn?wwQ1%2`0@jpayp!U3_N+ZF zU{!my6nF+IoGAc9%bFqS8R7RJl78&wdf?vtN{0NyjRp;%WQiqRc|?OVc~uMQ#R;;< zdj&aTC4Xe8MrgElD{fHotA!UxuhYpn*ay_q3l$#+>0hE2#vP~ULOls}7YcGvvayPF zFLFGqGHTlh@dOhQ1}i_lliCmNy3})M3h{R@h4EQ`tAZ?@Ge&8imO`K$OeJ-MwCk^1 zi)?>&u+#6kIIo7S1(Bswu8&}|^Ik)Vq6$XcqAr3Z4;uRw=l* zN}giZi+|yc%AO6`YG*m~QL11zxE8)uFh^0BXab0RWJ_b8z63rtD69)iOGnA2?Zao!Kb}875~p3cT{^7gbu%l8(H_cw4hQFT_&&p>$%|L)bY*=_BXD_4%jMZXdS$S4jOE@T|SSS0z&~ z2g8rq{1%Z`RBa=}B)WFP6bXKu4d3=c{|R8-u5DG?L56F8vu}uy!zEbCJDC4H{{wMC zCb#+0{bvV4J!c99pR|VwAnGK^wcSR*EdgGF2oI1IjH} z%oLce1jN+o*!3yKUaSDJu*z!Qx&i06)C9~+B$r?J#s4f$I>n5%v$4O=kt|%V*$loP zm9uC#TbkTC5QiwJBZ!d*o-e}07Znr}=_p41i7T2a1T7!uB#+380Dba$CzwB~@xgh~ z>q%rS%$cp83*Ctg0Ta&Fr7IO7QjF~n*9XiuP{>Dl<&!t3Q+~~ydM3Ve*Y1o`T^Vb4KlVpDwn$Q8ubm;M* z4a<1Kep(IRT_HW&nhkK;=wg+XI6Hp^AH&bw<32NR!4ng@OsyHZ-^Cg=V=!Qio4lof z1qw}TIt62Jk%={Wa4ny88$POmn&My|lH29Ux@xiJoaTQ>+aG6+c@sHztVOu}zvKJTx6r0B~#tV1`bj^eRQ04>Zx$@EHYSoxZ} z#C;L#PAI6227l+cQ%a%^;1k<95_05`eAgj(0tDD z3hZ`Evsg8%c1esVrzb{^jwrKanT7E4sP$fWK+1Cq1S1o9&ROnj%bowq1UBBe*j|&! z{j0MW&PAPV)zl8S7@q6{hgx20&0$WZua2|Y^kBAByd_-a!`TZ^ne=uCOi5Bgx80t< zx{_gyuZ>iuyG=^QyvYyUL#cY)g}u%U+@g{XdlqdInEwfQ&AviS1BRGhxUaNBKCwm6 ztbMsw)}73~1_d7@jfKd!sHcx5FE36uRgv#>X}$Eh^u_5&c_7;S<|pi`6IQav>d>|j zmIge(O2{Ln8DM`-b^EfH6#7y>o3;fUE^cTHQE4`$3k=g5H=7GSWBYtpV(-GgPS#Dv zMOvN|FlKzMkQ4%UdHY1+xUSs4rk6%kN_I{S*H)CBFD+3$ic(cNPoj4yr6Fn@i7}cN zeSx@6P?M1}*_-Ixvx`IGKOMob5|8lLWtnv?jYstIhnF$*@sYci+?gnxl{qLL|TS=dWuMq;hDk>6_o6r9#UdMGoYnvb%- zsG@|0w2Hj3Hjnk{Z$PPU+WXmuE4qXf!Hwv33T;_Gp11D|=3-V`MM}(a78s&G@kNs~ zzBlpPeJLm?ls~u$Pcy~qZ%~Eg&?>tW3@?Y6m#sYZnb2z?<)HdBwCi+G&-9Nf;Gp@Q zD%!}tr2xcbvrXR2iJ`+hT0MRnmXX0((MotB$&f9aS_wwY!@*CB1jNlz3Ju82-wX8!0*o}Lb zURBD#cE;bqLwDGNrU#>uDqcwy$^_Y&gnv&c`i46fKX&p|+WWZ;>nrp0v3)Hum?6}f z;7WdlRDpavXx{d%q(x1=k~NVWT*>G&XD@^+`rue^G)0Yh8Nw6OOVzgdDiY%4pZf)+MfcuAs-Rx3A3*uF=SWuc+S z{7Hk`eUf8>7fOyJW1_o{ay`uvik8mER=T8=&)QT=DdS)^>i1MaX5G26RF6SX^rzk$es0;;+sJez-CG;|WHOX+LzSrPU%` zD@pCUFy<$Cf3LJN?bW3T=-Wof`~YLPm@91-#+%gX1lat#XRg{2DM8I_35%1_Bs`u)ri5GB)_ zdv!g0UZEshhH%t`;VE(r;}SGN*8|oo6xpkn6FbEyCkttxmZ$ZT48D59=@JJl9)%ih z<^zCdNv}2)kPAL8eFqcJWnHkZhb4lzs6=30$zCJ_nclSmS_33VY_PJ?gu^qR!x~9V ztAf&65MskXGEU7jfO%gpV3d9}PkuOB+@XE-u1rZPu8DfC%*zpsO1SpWv{x+6vmv=q zLt3D*_49yu*%TeA0=l=1wxE^mCdD0 zjPjNxA^x}os&XT=9*vT5)$Ek*$rL913rp;y#IgH$B8>j*-&r)FPb^^v5eo0uz_0n( zdDQDn_oHzMX-D+jer1x31sR@SP)$j!2AiU)m04Q(YMHNl8=w?>p1No0JrIl5dR-;d)S0o4vXP`~Ou2c0m|h^E=1Nu zB|_UiF&7*|^)mi|LIuEE=l_% zt!Z3vN?}&bNTC+x2!4ER5;!{_`@x_wwm73*iP^`+NqN1zG()U0MT82*%0NIRCHzdS z4K~(UvwGBdu+IF1X&`FkwjWi^uK^tqX%a1^E98l{2+aERU?cxZFNk;$!uYj1i&9s_ ziTHTSEZbAL@+RCNzj!QXu~!^C5HAt(@+j4?sgJlDkp({bxg~JXz1y~h7D-de6z+Bj YBo)RO>C}16ax`ZcHs=C1bxY3X+&gr3=f-~z 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