<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="42">
  <Files>
    <License.txt Encoding="Ascii85">#eLmw8%dJxUJo$uP/Jf;Wo@5Are_k+Z}$7O,r-F^R,8K6%Ooo*+1A}5tslu.-}jU:dtPpy/ir.d]Bzo6XLb+8u56K2nURt4A73Wd_NEc+;Cca5UD,G6xBn}4E{O%#EuVIMc6NE5^rPB3OP}I@rf.*mo0+}CHS}$.v*hBMFL(1T^CaoMv]?eN(2N8m+IKiu5AgrToy}r@]H:l$YulPCyBpS3xyi1{jjcPIm0f1CZEJ0wZD]ucZu[j#?3u^wb/MVaF_Ex@U1Uwavu+adtcwnWyfp3S=!rx=Z+}0IzUlh8cMq-E@yP-:.FmLeTiC9As%==:P1c+w@!ST8X2*h_nXsbS/C_^hM%wI5^bVy5PbtXW9Ete4Z%x/d^Q1]xT-Lp/3z[g}Fs-4#=YAd1Rh2#4wkw.Omv3k[%}NakuU@sPdr.mD@h)*ht:+fFp2Bc{4PXogDf:!PIvVLB]*GyWw_MZuJ?}d6;caFiQH{=^wIt7QA[_Le6aEZR%.8X#v?53S8Z67yN8JlBk0]CI;A.H{aR!WEADKXrG9vL*Gh]c6@Fa6tgD_gj@(PFCX.:)C=rfdC)25V%d/Hei]g44R/,XNe,qSHqFqCpU(,4Y9A!$h$+*5Gezt+Y51itq;)g;m},nHzKS,tu*,4XI=9)oHo2Sdi;WoNqA=US(SM%ZWNmWO.PyWM#nrfBWPmd_+3Xg3)LAk{P^PfxZ7m*wgaT:Zx3DxQf%+iTQdW3P#{jZlX^;a4aeLT6w%::8(VuA3J;ZqZ.(mKb8M;Slvid%Njn,t^+nycx9;9v*izY;7@m3rH;Ttg!VFTZExyOnDJ;n)njzssZy]:o52HpSsA%B,x!L+ml1s8^77z7sS2pKuT1u%c_[L7s^.JO@TV6V_IOb-xTE+0^N%uctjOG!/u6]fPU}2nK5r@Ec=am4.793H43[6vkTfzoZDGeAo^B;nIWv%,1Bb{[X8;8!F2Rp%}lP3v73=xtcioXA^cX{tDDGGA!@6tj0BusKC.H.UI-);6J}jtyvP/LE1sloN3z0Vtx^rJn!IBIk0MF+ztYJFbLomiqiPP23!Xo+M_anAvPIg]?3Q]dM5DKd=oZj-;vNJBvUoi@8S!mkO_rER;$4xuiQ^A+RPKnq(dNQN(rawn]$U$3Xxf)?%rSV3f%AC)Xt.l7!;D57[Z,hpepTP]ylU.fbIW1V%gdxCZpcKoWc%!wL(av?ZA8oNq.5#dTX;P9,KqB#]7bieyC(HayFZ$/qa6.jwe}-Tvb8!3lV6gWde5]ABoggs]p9%?NQzuGQK%{{G=V,@V/+Vpz[QX=rdQS!8JXXvw$0Gds@AlZ639ACK{lcu]Iv1F(7OHyZe{bnEQPEqGaGt/*sNWJ!]IQe,o7IW#z=dALRqkAk%pOy2pXPt^K)$a!/NDZQi0Z4xvqhQfiEXk!((Z0vuHlr:z7!a52TpH02M=U!/2hjo$M}jk#0ofB4((-o3X4rk^s]8$PFoVPfAk/tFVSXG?H%PBCe3RDEiXLieb{BKtwSU$!^?]8@(Dp7VJn#L)mEiFb/t1;R(^tdVI/+eW:0HLy!0[F^*(}+]_h[06Ubuj:PX2w)rf3jH8$b4Z*m]YdY(Gy}tL(E-yf*CBo;lHEn0zm(#(_Ac%3$2POvJ7bLu/V3D$45Mv2ZG{v=L@i+clH!.,9z_KwtgGkRI.qXz.ONpf!S#+h^Sh;p?@yL^TcYAd98m#PhL;Li715u#JOQ_@0?#1(D+WkcIPyg#,Du:3I*uA!TFzN(9T1b/K615[bJ:SQJg;B@0VU#)Hd36{t0}QY9Bo%ClX^3rGGEJwpy:a)}2sT)PpPRA{c[ddxyw3[qXe$ppf,WCW4w*oUpt-OF[8,wOmdq,]^4;Oio{f[6[NG0OP:x;h,Z8Mkne4$EA}zi:pxTq6lUXC?=]E!;]V}m:$$=6@dK=b48q$cKcN}HU@G#_QS#Zb.9u)8D.c%E9#b)H]%lr2a,2ZCZyS%-+T0O3AZytX8o9^2OE4wXg8JZvb,h70dF;*k-]_JOa2$c8IDa=.v=oP)pZZMyoVI(T#[twxdylZ/@mBjMOyeR7:a.C{V?}2!435lHDm+5I%BK#HwSrPp//2+0pL?!,eB6;f!VY7$GUh@?MO5L8of^ScvXij{XlE9+%t=tCD)2V3{X[gE8S6^Lnua_a(J]2$dKHMX1u!*VM6.Lv2;heEL+a=y{dRII$4/=if][zX@@oe,=Fb7sX^BbaC=^/jaA.lqSH^A{KCoU6KJ%kq[I;=ppv:[BH6b?gJ!qtcXHxibJu[rDJ6=,Jo2NGXZ.ESg^?=%)ql7$$dbZHgGgZw^wY0U_iJUo7q]Le*Mn{*]u:kO@rmAPU_rJeMx[OnN[5KZOg.iscVBHlys%?e8e9QzBFB}Bg0bF#-Ul*T]tW:NU)60D0v(Lk7Cswf(+$T7JN]m-vTO7VePY=5VrDN?PCYr^^3ts}7L8}z1ukN(Znfw!aNkkNPxn*%:k-y%FOpN,*rw3T/dP;2VG1l2%)?]RB(/F)RgZk4gcp]:g6#XOs]VoEilKd@O;xRu1QLySZwx2BPiH{Jl{*jms3LVERLt18,IV$!pnDgyKwHbP=vzYMk_w(qHYE2ofJXuiW6foMyU0!d#kviBTN*Wk5uVXf={VYdmt$YEB+*!O!.MfM!AZBLPHhlrd?9uj7A*C.Y[0+E.x#dVnH+}$d]0R=XsET]!C$i]*H5C==qy5=B@ra=%.#zeWx0ffk)WWu[KMrN%]:X7bPeOX*f:m.{d,DP[(#*Ry^(n_?wKYI_mnkfibNKbnushV:=;mk3Ir85:VnMLRerAE+k6j5a3stV2,cWh0Cvtit,4Hrr_p)8I:,85m%F-NhjUx_GRTS3malhA:=m9i19kz^}k=Lv)Afz5XCPKKnj9(+Wph2gX;sE}-g.gR.%a)*Y_,0wTyjlr[/ngT0HOD}a?y0Cy]A/9./]]cj7*GkT%fQk[rH}M.=[yMkciGs#zD;,Ed^[A%A?0Lxx%n,0eQHoCQ#x+0O^D7#_v[-aZ,;3^Zcq,.%#:7M1D2++SXzSb/1p+UV1jU@OdfGgZd!*bJ1C-k{#St{+,.MedB(75cbrK7+7Z6@t4cH8o?fEo{xKUB4IG87tOll/$1wInF;L^U]++ElD$b?/6Y-!cjxFO;0df.4$glpXz+g188;[{m$L.Rr^;s]vk4f9hhSueY$vZ?DX:3HvD^C43OQPTzyFWo+J%.vLs62t%A^5vt=k[:b[sg%Il:T:-,@w9%NFnOFcetk_{t9@!LttD6!OY35KPq3zxa_6K.kkp{_Bq;2Q6)8O-ArA86o;fQHo$?l]U[z{Ce7MM1L]P*MhN$#F2@+UC3z4Q0OR9p05$JI.$7Y^j%g#PiUTZ7Z^kkBlB1x{sheBNPgg#^#0o-Je8pFO;9=s56NW$=Pj#{0zMlcnOc7R:B+}Ro[Wm{)1NG2MJ]_:zqQ[x{21u[YJ@d4#qTH.Yby:,:33l//yjL+oxl/BxETgoVkI!C3nC:r#Mu1D2SsvIgqTcLHd-g71nqs5bP4YzUCsjys.d+(%w([l0rF$EP)rKw[wDK4@i%=py/94?kGtcbhQJU8lhT^c!+:Ib}(=VCm-cm0C(Ac$j9gLV=!Y8DuUro;bd3-FQ*^3D7Z-NehOatgIlEc1ogxqS?LKonp2tS^S@6}_j$vw?Q?L{#6*:PzTY=F#C4tYOjuD#+1d+Z9HWSerdsSRCBeD8zNc,H:MQ3O.;s;cTI=bu%sW1s99X3#sKEfk_O^R+)HqyWE$vWD$fdDiUjo*U0(^gqVh=-$u.s67D)]ndK]t1Y!}L]GBkawp.-q,MN:hc-U{pj29?],jQ:@;Ap?(s.Fb+CsiGyi3^m_Wj_bGZ%jwF;CR@:l6o#kqqREy#0_f;yqIOueeFa9B?3*#Qn]+YED/3tW70}V8[8%}h$phuvnWPo4=MoNy%sVZ2]DmC,//7-Py}T.376J}x,=c2hDht*(bZ8HhmzA$QbWPL;/v9%i^FeBPR=]n?AWZd3OmG7woyjPQH-{W[X+j;!25Awt=Y,hgY,:=Xocju;+j?0;L:SJZ3A?VOet,JgrF:%P=Bd.iKp%YPuIsZW8[]trU]{5d#/R1HJTwv)wk5fbzLa(4e3nCcB8![4[F}uGD?+*ku!{isBF2GFDjZ1ggbM?Xe;XPyYbyNm9wsa$fzkMR[x5PC=45uPVUn9mJ+F;:%k#7A(4wC;dGMPT9Vx);+)5ITdBs@!7@)JDw0(!r6kXcdbBH]OW_(mTVSz12V_!S,trp5sHvS#8O-L)ZyY2.s-HvW%Q7+I/1N#bN.]{D00_;VC3t)+c4w,;t{4zSNqxc/6[t^lb)xnYMb4.Dz88IQ+{oLov=ItP]c;E;tefP/@*b+#vz2Vut};{Y:{nf?OV2hfg!s1nrffIE9ytM]eU#6k=;%OLh#-3R[10KI#lEa9;Z92MM}$;c9M5.5j%_ydQJ!H(y#AgAt3(WW97o?_Lq!/$^m3O0+DU!U%?WDg==qeRf.$WHSFbLaVib?u;b2[PO[N#{a.798Yj_o3c=/9N5iz.aH0^M@S2tDj#266?#/:krSQOQZNawTdP=0}cSZrv*PpTXGJn_xX?bzowgg(nBZX;JFqbWdR7L?Et.p}U,vnyi5eoe2x^@K8iVvXv@=jpP5g07PgC#l+B.M!xt2G:3dHFN/WA=n38A,=jaA[l,,ELPi]v{v4JknFF@Vmi$%($;_wf?w*#C9x33i#4UNwcV5}Flvuy93.!IZ;:^I4HZYIo%BtGwi^N$h=]zL7W+-mJV.!V*cE6UOA8N1]a-sbY2^p!;@Xw)IL77ZBp2P3Hf(qC3fXtcOkLSO%uU_C-)6%uZGW{xn(^mFtySs,Ba8p,9!bFrk$e8GO9C75F1}}Z+a,({#6VJ+a?fxs;bg5n^x8j34nsnH3#{elf@G-twkY}?jp!Ryu%ENf*+i5HsEr$GA#=8,R;p@eY3PKRwW#7ElxN?YDKwQgn?!WYfLzVcA3{pf#HsiS0m=)OrVMr=a5$RO72_$pGM-q05by:e#e8v$o?!jNd#-5iH(jqTn2I4vkgvMY_HCH++2Wvd)S%b7j3dy7Za5qo7^4{D5d-cZfJvBy-@W7t-i3G=BmWvV:__G^ji!K/D_U8THgh=6sS*GkMJ;s:T1,g#!8Q4S!EN+J:A;8KXI2_MTLq;BzxF4r%$#!:D@*;w^tdD17!?LC#nXd=I4#vekD@En1K+wj(Z0}UoL;L8:8#Uk2hq*=6si_-.LqA1(w3?$AX$=[t^+A!o#KbW7s!VkSFvM%]_E$5(:;UZe+2rvd4LnS$d!EqS-sXL!BHh^W+yRKL?kk=L3k,HH.GHrb,(V.1LIq1iPw.NieMK,-Sb%YMy??w423X[Ofd@o=yLk88oLTj!4zJ{xhD])Po@y?U^VlK3%:/n@;=ly0%]R*LK$%tWt3(bT:V[MfTT1;ZRaOd7*o18NS8t=!hi{kWBf+EiB;Vy4+VsRtm52N=s;wU;Auolp_!FJlDJr!9ofk=%g/ni*^Q1UX*.q)dsdVJukV_*s4HgbePMw!8IG/6#e,J#Q}_y7A7!S{ont.bUTMp%um=a7NFg,hNefGy$07:@r5VJLP:Ya.MlR[HMA)]u[O2W1Dm4.6=9o7hV]u_5u.h4#8/o#ZH7H]6j7HOvwBfs=[vrk3*Ml:s(gSU{vMYVs)oq{O#0::Ws9PO.xTD[HMkU@2uPN^;A_i:}n#uSsnxb%;R32;6qE:_{YeFW.$wjuRISZTJLDrSbFDa/V#t52lWM/-MV5XGh2V$?HQ_upaDELs/[=GtPgkKyJHz?,2[F@3wT:4$*C!JZ.x!aRQlK8v:D2g;{w$3#)S:#3Vg_!XNk+tk)i/e:xv[#JCoe}+xAsl(e/8F8CII2}:S9TVv(C$0r0)zcv/hDPUx@xwyQ*RpIi@LlyD}49.U}Xg=EZdNgYW4yTU=EKo8nC$$ES_XK_8Hv}ci1BFt_e}EGdAcFpOGUam*_q8%w^.EA!XO-kuEM7xzO)+zNZx,wQwQ_38fe$l=W!EVgNK^(}=zX)79msyBZ$EoY6KUqi(/H[iJ?l-_z67.P6}bg:-)4C:urWkM:uvElrNAYqUqCiLYfHQlze[6*hr-Yd04%ow*5F%]Y[zK1gMWL3cj?RW*co#T+2^#)@TFMaa8fH/{bkc%=ELna4Eei=;Gs81cp:a.7o)vzC$OOXm]]m/niABW{8L6(_VBHk+y/ICRpykTNqg6p-Z$Op?CKTHKAn:kpYc?AJAaPUeQSi]sr#OZ0L:Z]Yazu_}:@D3[%/!euOqEQtGOV{!l1^9H,AW],82w5cceQ^]Hk2IlAiF#bcCST:Y(v^I3ijpi8I2QnIuC%FD@Nz+9XjJV:a8Zv*8QeyMEi7?7.r(Cy-:w:CSaV1D)[*H2gqRecdz}E3cIi72OMJ!VnGg?({QE54Hhmz_e6,v_v)D[h%1*TSbFC4]y;kN-5[-BMyrS_0JrT.z(;@VHqb=wM7bSK{.RnS48D.Y_ZM0U)0h9s,tdY]E_51rr,.wk.xE:kc4dDxRGFmRRaU}T*VZ)iYFL0NfhUBb,:mP{hBA/IY(Vbe?cc}%gTiW/GRwqg}xY_M2xwCU;r2eFNFxoV^21xM{?kh9Gv8HtK[5m@Y!xj]9}2{/o;V2Po_Fsm_/[?sMHhRZAA,9p7eVDTpwEJ5_4oQ=7{d;aSYUFtIho7W9^iR_=.mtO/]QBO^b?n)R{aFU8t$ddBJ[!9tEV$bIuCU0l/WyOFW5=lJ7a?xYRfV$wTTo2YakJ*]zg?P*^2ov]m*RAG{1)1fo/xyNtuOYB3Yt:8oC3?FhDx?x1ZB8-zu/o{+#R#M;6z@$:n)A5Dy+1BGE3Hw_JOG8bbw7qA?igAIa9kBVfIK4y#{h]45YAbDJa9zO2uh7s;Tx,FsGG]kU3BDPocO!];*])y5s:9]SV.@Ya0u^}?uN72.@;r3vR[aRXE)*yeUO@EJLVAuQh?AymGL9O-FC(X7{E3TJVq9LI-GJbAg}oqp%m+U5Nd}-hh_?nPiQ[x1B%KZ8i0@-MNmpmR]G$Jb-EOVrmqA7BjUGWQ@o%eSesbeBIViB)wag%$Ho=?vgdjdNkQY.XL{S5i_s4J:,4#[?mV9-KLOv@]2$DO*Q]m^Ay8wH?%wThvpX4#+?QYdZ8rb]XvfY*]+xJH4:?Nr%?$R_*KHLxnx}#0hd}:b1nPMWF$Geek!1/cg{a1nE9rI8TY;Pb0UFsGg/-C=Nkgihn9aBt:+,,7UYJf:WHH8Nt0!3^A(Z$CkTy_lE?!7q7aD?%42[#A)nZBzY}!M1bnpg]B%2A4h^Bg6Pv:861uGqFKa}A3I;@a6ECWBzW:n]Eg=tPT*iMfd_5FjYC*{B:JFOHurn1ni=OdjPO35y:H-q,J.]+;Ju.]iXEqP4wZ]kU)kzQ(P;)Sf2o?[+K1wq_0*}s2P*Sg1ZaK@xS;^e2_WU/o$#edx2zCZUEpqTzB0XntvDca49hj2/359ji11d9y!b]2O7/Ka.7.jajK#3}!K#]B=#mZF;F#VU7[G=hmu%.mQRB}RhAnGo]8L_/4Ij,dRSCoLRUDO,tlBEdBU3m7shs3P]OZ0_!8R/y?WM5H^IO}u@cwGEZR-[WRPHUJ84*foqbn%T5X+Tn-V+5NCfAU5ITHoHi8l5ozdj,[eOmwnAb.#pwtn$55mtI0=Gwev6r.r.@%TunrIc9##5iFT+.a02]V1QVmkm5E]j)Rkn%Hp,quBhZA3x%CIy]q1?ww62Vaa{)k7(]pqIS+=w6ED(:AA*f}Ctd9:dB8L^[EFR/cYAap(*.hlz,E*pA5gB@cP5V3A$#EbAX+9*M1_Lx{3PaAFg,sp-K,Cz67zG^_oMsMK[_{fp.3fx+01]u+ZRW]rTj_i;F*B4[e)GV!ws+=NaedUqah9DA*]sz:L3Dx^4m_dR?T8u;.5kT_cq6y@]IVeRnn:BA4s)K}7)K%.CqF/@qd1fk4AaET@m-?:MvsFhbjg*^Xbqg5kQe2jt9:DTthQ}M7o}#ULvp8:M?T}Q.=[4pP,y#T,=_$k/_l^IPz#xBLssh]Y.aQ,rC;I0,qpXzxF_adr3kYr9ID4A?;vfDD06q;xZ{}2)!ZQ.QD[.r7;Z)!K)}hsz{FBuIHo]o5:]56K5:qmpZ_RpLkusza^Y%ZMfq?U;97pwFQMne$52WaPWTFxLkZ9KS6:@}ZR,cv#/TxS/8nXX-k/j5*TMp*9xNP/i7Lg=;hk!JRvF}4L+Q9mDiCmdt+aHD;}Fdbs4!aEVTd]5q{pXK6mQPq^yk]nWWwiMiR-03dn*V6+5m;,b4xyPDTGIxIr[sb5q#f?:f);kg6pDspx,B2!1zm!g#6.1Hb6I1Ps2$SgS^d***g#31n#Kf_474{FO[KH]z53:CPc}v[8geIN_:T_2ZU$?L2D@n!Eyxjr{,g{[4ii3m6]MKs3eXW:P?rjnQt3Q5SqyQI;DX:%A-p/CfmYwj2I6AE88W?%g#KqZM0Qoe:fQtw@ngMflu4-*eAEjQ5-%BFSi:ON6*AO6zt6GnErq,#XAf!b_)jB7knX+d9hF/OxGBc!A:+21]5/+lPFSgrE]yu*HnsJR:q,cz%@$*Al28wWAB+4.snd190-0Uce:,Va?No{sLn_b8;3Mq@;YEF$!1m*Y[2+:+#V1VS%?)[V#GzAF=loNadaTfbjA}T?UEQtNU+{GkMRC](NT#KOc$P5[.C8vQ#*;NGu}@4YM,I511Z_GLS0VL9}T@$T!}nlIl#b*P)Qw43I5%q)LA0jKIfA(@nzHxJK+pGWARNdX%MB++EtbXX,m;vBLX#TQ@YZ@57]$J@irfn%}-E.7ZE9xdjzvHaggbPrph.9TlbpjqImvi(FCSaaeG3St5pGV3QX[6TyVZo*;2%E!4q.jn;$Al=o{G=oF0E;8sOwQxokuvY3=G51;#Fu3R$V;Fok67lgUJdaVv[Vb${}N(mZ,lzfDe-%.4E#TmTyqP9+##hT{s+Hk3.YeRtR.cI(m(G2TU{DvrH?3Y2;TIhme}?p[G9!:Vx[K{Ln:aReuzLoOCbI)r[XNa@irp[hwely6kCfnajjh?RZa1v-I:;1mg6R2D+O/jj2?.7Oywx0FY-c0,%+,GLbx13UN+p1qAj6e$r=#3koxfBHTvIB41S=$iU$DR;EePg!ciT;qajF/R5fCGkp1,x:r{$z^h(2?keq3+1P#w.]MGu1!r14SiB#,(R.uo-R$)u$bI^J;Cr3E*1i3^^EQoS8+0Z(cPc?AxbKB!94hLFjF0Kdf}l8)8?l)DU:U#%MBI=qEc2k0EM4]7mC%*+@yOB3:hTCH9vKsAc#KM:@y{kd^XH?D0/=wvhiqqT+R2%aq2Mx-p8hpUW#VGvOh^G?4yFokUMDjsolVLa=ERViojv].x;m_1U5N/MQ(0sBhht$eDW:Y^:^bj7xjiLrxAFwzh7k9AmQ3P$I04LFs@4sWI6o)H:5ZoWl9pRM]APY/-.ZZ#xp89,Ds2^]!l(dAcpM1REtWcpxs%2RUap36RjRmmPAnQsEL%xT?5LcF_!NFy:/te]CDn@Jf3iPa@@DE=mkBq;aPL:CTcGi@mKC5Dk9}DbA0-U2Gdu}3rRF=0470m+c5):FMaZc:fn{Dv[X/OSKY?h3U8.]qfaMtJ*W8e-p6M#/x(*$vm2zXz_mLC+Hjhsl1}L;[]@VQR/UHJt(i!spD2KgZ{D0%$QFe-/W8ZNqhNrv1LZqNGM5{-l!I(W6.}32B@Tv!Q=l!/U^?)ubk8tKOhS,87/:13iSWetXTidKU0VeU=9fzoHeH@A#HHoayBi}.rNRnFo18$?7)4:mtA7Bn8;nb7iw;MGofGMuAHU-Z4hueBC{kDySW+@2X1b6B0ar/JEp3SIlGB=geaJ:Ob2Wf2J-#/SdvLPrmRuO*1oi_=KAwrcXGnZMy5U#P!g+hBw[5/ECSkMY,ps*yX_e00;G=ZP=dY@Rd[JECKM[bLmnIx%rVlEMYiir)Xew:cH4)}9R4XFon{[Dp6Hd}RqpSxi4s4i.YXZaNHqk3N9w@)-7+PJ3TR1psIiN}^Uf7dQ.iEuZ9{Wh*2;py*d:l9eLBZq!aLCA0qo/$1nbsG!#(?b:t@jJ%%SB$lzR2$Ms;tZ)wpvPwP3sNFBy?yo]O,-I;+unPske@qcS},ni65Z;[=Xv4IKspys^Iv!.dp@VA1J-wb*yAD7u*FqCr@jlW8%H:Z73MM/O;w=Z4q5xQN@WcKX_xT+.I0ksM%:n0{UkQlnB++nmZ2y,rhoRNDw#/ry#FJ01+yQPjSoJvCMGMP;vM4;kUS%kxq[:1Frk5OFcyrx0U9iCub4nPQcF0EqWeTTzNg:?^]:{XH(5-x_;o0e8SgQb)cDKR-8_C?g,gvn@g2Ve#ApolN!SKrZFF5#DquDnc.$mKd,A}1ly^;l}mpyy@=EYl4LwR=.gqG2_;*:b$GepudtnJ0wVnv/qub-$R!S6iB[z.;Y_H!qLcmM3YRO}0FEu?MOLMLjLTBEj4?fJGadEO*lM;c,-m7cTJ2;o#W[8]1t379+@OMF(sZbAe{Z#g9^/c:.a2.R$APk53GCnD]JQcU/lv*R@R9)_c[O}d?tiM[r4^jJV/GO!@mHS,)kIb{zjRWsHy3RAi3OirT6[we$DM.TjRIU.K0/[ZI9o{SUQb93NTqKE6z,C}6fG;R0e;$!i#3pv=jUjT=Q:ijaz,nf2$PIXBzP}+paML{:#et1LAZ]7il-6Y*t$mRu}u3GYLZQuJRnoi?OzTf#Nz%/$zm9PqAXh5nru?aaF;Zd]0LW6GL66X;,DBAL.gQ9OnGu4wVjd5BIHZ}()D[!^$)sJ.r;5gz0qciztu*BO?*[mb%L;U:;.M(TzOIf+ULmDMssx.p-s-]%@hPLy)zB9C$%xKqr{Nc?.L)E+4v$3A5.ez^icQlyCM-*X]gL=Td3mY?J-!d1c4:yH7(EY$:##yv^eeCgU-lai-n6%([]J]XLtaN4lWy]Cp2BoC#uc_zS-5ynIeu6VmvUzVUgR,Zix%t^G}h(-_K1fuEX}^uvT_lUYtx#Qto/AFu=.MzwAbtxJa_sh0;c2:7fTa/:mk5+8yliyBJSea+T*DJKB/6OVb_p5bE3:b5TRDqZLMYA%TSF^;GGUoaN+SnD*?3a8H562[Xp=0g_Hh$b+g(2/qu/C0xrCZhV?wpR[}OTJNs-@m^C!zEc;1C_$!*]LRYsskqT[-jIuF=k6vVz5p#?XLvA22VqS54m3k?nS*{VTp3m]++gj#KejAE8RGfIV?sfx]]-vk6$9yu7!y}[n,Tb!(+psGD3,hGjPV[xQ@SxRnM:m?xLF11oC#;I/m,,@Uxtz![VMw#xDfOzhz;b;D2{/9o7!us_Ir2sK-[]o(Y49y*-:@(=YDq7%aw#e(SI#1MwYEf=)g=Jc]-i8(O;qjhkwc5o0fL#hws1tgToQ,^3WeX:IHTsd:FbY[*ef@-7zSKujJXw(j$FL%v:OPxr8s}BsX;_^@1zK%Rno}aLG]ekNTl+p=WXW;mM$%n/jhkzZyjQealy(eaAn8RWy4S#f;h?lS*RRw_r%1E==xU.0C?;MY/kw6zPdQ4[nw$jI]..H*zdu:8i7UBSsEtl6=i}@t-Mf.eIV*-p)MV;f(Q$UAZ5s-nd[85jfuDUaQ(bMcnBy*H8VH.Wc$IlkD=2HH7%RFup%zR8Mji5sYQK6#C{w5S[!$ZIIvN5*zlvvD+2gl-?8!8cT1HdD,K7]wZ,-Pp9Z[!*eXXagKjmM?RENF[B]_TvE;ch.0is79@([qoqc3d::2@A1^FA4iP7QC{M%6viaKYMf_s5e=H)EUqVuUR:b32DJH!P:ac4s^$ciaF1_^;J4;d*TDS]%T$!5Oc98yXf_R08!3e7:LFXqoJ{^*mAD@3AS[h,bDC:qD_931d4[($,89B7Et*TXzoAN@f:CUmT9Hh5Zfh}$0mxEOzF2BPeRoY.p]]6@BZAJx=$FKbQpTJo40/Ts[*8Dm1J96?yIbZpWKvp.Oen2=:i#q}_#mO,dJS2O1.}gOHhq5hwEaJ_JC6zD]DR4r)P}ap/#k)p$DZ+3u-xHG17}GC{QcgI5(+F/kIe;sH4YYD;i,iFTa5vv9O3Z.jT{/c!!{3mgl/OPZq6pYQ=9khdf9:Elo,95bpQpb!sL+MY@]hF)iC=_Z4BR2Grc{1;cC(.ACl8@9dP.g]xfB3f%r5w)l)+mJPG}P_c8%,7xIwrq[4kvgj^ci[N%HgMC[ny1-yrW]199rNqfYNEhEULc=r,-o!aXW@FoBDu=byJo7)oyf@[;e8w)#ig4Oa+lyOnF,TNi{,g?C)HT2F{qYkYr?L,-_y_F}VAyby(CqZo;z^ep#VX3#MlFNjeOSDs;J=uR;B#JO1$iKiI9-)PrSxJcAT#fFQ=d$,t[W},zn/}IAdxW8ZAJbudF-ri@QMRxgaxp;ST7jLeYdG;hApDq9Gae4EY-7W9muO1)lSJ_6S,2Zc+dUc7%vg@gi3wq^qdH0xoe7C(GZZX5h*x$D-cwFH5*lK(Ce*YJz]9/cqz58@)]sLkY[U]ujYI*B.BlXWj0Kb@sE$$yz%ZKdl^]S_@*pAT0_ANT[)GPR+arOA[[QPXX$L)7h;^Ira*y-9(Emu6=@55=6mk$p[2,gs2PlPY(%hk;0@?l5;DbL:{2sgKn,4YJRNRK[//}+xD;qZArH2)YL^pCCQbMa/%y]m{c8)42wk2f=0vvDCSxcqRvpv8Q,zq??^UI-(.3{XHL;ftXLEkW7*uOAkE9O5wz?qTf0xx]fCrPHQi#o4FZ59B}-/:0n{XTY^*cC}!FynI}!O1nr8)]+kP-YY9[A0C-a+Voz2?^+]t,/)d+miND_E{0wm%e%$u9:y7_y{!pOw;KhJKV1kI-M2{u9RgY]$qhtm]74Cw![77Lalic6547YNk-[,jU,$O8=pQ*Tu81)}.aE(@eucgWV*BUu=lyaWd$oFt%}3JByuJB#]RQT88De;m.l-O/Fy^;sv+K?w3UCTLc)r*H[,_MJ$q3K.%kpM/zqrn]hr8wF3jd,,NkT}!u7zDU542wFGJT,fWDDAEi}up!E(V^M0a3hhB1CiJvoXPEVg9LzX4kh5ERR:/$3?0e*4y,*c:};MLkwfhTU:g#xF.;d6L@CtdiX$kxw=@E!J1k3SNB)5@.nAEE;[nc=q{tYX1@s=Vpx^Puq*A159c]xL$-QLQ)nH*ZOjry_CGI;ZF#e##{-$:u2?NBK2n;9mGb9SM@K*MH2(d2e%AxPMd2m#VRDcqc5,2x75#{BJXj?y9iaUlJ{W5R?cVlbDpd^cMUX:-a-FYYr]1f$St@AeBZjmuQaK%Psf$z%B%.-k%!?l?f:e*}Mh:bQ5X:_.X#*8TrFGX-IA[nd6-%UopuT*AtBCfQO3Ng)b4b/X^7@W!kTN5jjqXkZ,}mj$MF#O+s^a:</License.txt>
    <OCTfooterlogo.png Encoding="Ascii85">Em^R!8[m-WQYgg:w79#wJH?3*AvhGLw73:xZpGbcaVhR?#U.4AOMv1U?{:,pyWC})H,PxYeRg*^ncSt*0^^]}s]8j]h}EGJ08B+%nNI*!LLB@D@fe0nTLB,)3U5%%l.vdruz#PQ9mR:o37VsVo)lkgj]#0C0Ayql!iA]:iXUZB[mRjE2;^R%-8Q)0%tlMsRocPM(eGl$?NbiLwlsCMw4n5]as5ImulP}jg544o0H6dY%1CK[Up}$D%,l)gyXz^p:cwc48LQ?N@Ovj)r#4(7/LvvA6u^5EI_YfDQZU5j8#Y)DytMEgW2TQ4wdb1p!@kMi,9QabpNIQy2ZdJz5eW(22V-n}=XDf/iha##0Pf8LLw(]Oe9tQk,;U2Uh22!w%8.-}1sylLr3fgC%S;]5^z^wB^/NEHXk$%-nHNX:yS8}9eDW@ES74IFP8JjnAVnd4wcQ/ngc@fr6Ofct=-!Nf!]DbA=lnV5u)I*4[2!otlj[w!ojphBF3fLk9,0E}I$sAQd!rj/KHSK_.BA4]J%BY:f@+%58ug$3cM76K2:sg_Z[C^4P_Nr]xKX8D$#%K[XTMv6a^OI+S?c5Y^IT=CcJMNezj8Lc@JaHIklIhgiw7iM-/R)EY#)]l@tl+H=Gt6rl*c]0(Td)8P]4^L;.c^!?Kzwf4P[O+p;2%OKv}[rLT$W%4tU9CoH?Uwr7;GpNl40i#fe.vTfi]SfNhI;22g?4RVel)]v)B.CrWXUq{ho1kLAWWheKM3!k2f_D,k!mi},3lfP@KOiv9+7Vr0S+$)qbY67rWv[Ub[[ftVu!3+53sgg_kSiN*Bq*8.=W#G,KOE8zmhYK;Ec%fAsiaT))Np^;k}plZa1KL2*16%O:$9g4ekf]Ie/TV$Z,=C#R^gy_JlhFRUwl!hNTIB*Tg^S5HOK#+q94oNh{0Lm/]Bc,5-,?/B;-M4o-lmonocq4%i23bY!^}+#Vk?R]#er:My=0*)8La5-HTwz8_k[,E+W!{+d;:m^520.MnTR:-UX1t?h,+dD/mnCMt(UpZBp?o{z;!.6{iXVYQ@33iUn!wP#OD!ZYA[#c@DRw2@?zZ;F(Aps4K*(k][c#V)J:mIx!-d)s*Lm3-)kcA$=B8%1@a9^G[jGHE.NIqNT^wT?[95.1VfaVgyCBPmB,?Js:}V,w!JSypOCSA=s+=22^@GV%%]b0%+8Ix2%s(4F=8M}4^}4{{aihk-+SA2ehV$!IL1.zdJDT{#(P[N{4sIE%a64FDDB5^w-ZwWJn7bC3q^^Q%PEK^ueeIx=#1CD,5:,X)!{l(ZeYUNKNI8kkTOukwUFTnicbe/jPd^NW%m^:(9wRj.(Ir0V1DY5L$3={}dDSypY4%X!j+(:o1pj_9ONbGAROQt113%:m,}{BWpdy@4tjN^+PeS[Ly5w(s6]Eb{6%joJes#76,MToYH.X!=zPc)F9zXqW;cb{dLik2(MQ[;y;8AQmZy[im)+ppGS/;bH^e.{:orc[6(/Tson#R/#?JJK1J)DFpyN5bz6c5Ep[}U.niYNc_K%n$E_HwC#%VMlByOvxgc#_Zy,CvkE+g#@b!yB8x+a;_-iIo]JPOd%ue!x(l;CwMZM,w8bv2*?VbOk5A4elLX9vRF3U^kGl@,Asl#*aeAc--wCqXkj(Q5Rq+KKV{{AYNfMkdWKrZ9eMkU*8A}$m%l,g;Q4#SS!e@rQMa!Q1Nt(n_ZX6l3JN.Z_gsVP[%W7kLMP0Im_je3e1YjVbw0n4IlpKLe^j#9)yUK7CJJiq^9,YQU*(fMwhBhkxu3-Xb3Uji(.u8hE(nZOIS!}$;-[Yk{eQtwlQ)1FhLj}!jvt8zZtz{deU].gY${BhhmY=J!9#:StmDIFFd[Mbq,{FU]me=d{6LP)4pQM(_m-TE(;cI(*mQct1(-sHk^)A$=-lD,8.{oc5}z7:z8W{Fm%C.j;dd8e^ep7LX_?AIT%*T7mBEH%oi[ulxKky$gh*LU8M=sg#2$^YeFhqh;=Sth;eXlzL0xIq0bK@3.LoiEr#Dk$wkSr2MD9MY{ea}^4,9$D[i!70ixs[I-px)=hg*iEq_ZdJGP7Mj;Q[?HwiQ-[6TO8^1.e_@F)max*^v3Tn,i%3*nc}YoCG(pPg?hx$]hHGMX$?8m,p3#Q;tP:c{:7ktV$iiggbPPft%$A*hooozFqvcI^,)G1+2*xZR0Kv=ZdKx4iue#fE:FAR$3An*dIdD?)E;zMwDznQh/KQ_2^bzb61MT]9heVqw:!BU1g=DXS%p6op5HSD-ZIThh*ZW6aE$166qzX%QODWI7GZOQ#rh8H%Zr(pTA_Z5ydmds9XBOi{,YqL:]mBE@FSn)^=WU?;z)j_of#1,,+SO;.b8)HRvdm2BbU%S-3Z,lH#G8!rS#R#w^-HBQ1m2S0Kqb5e39KIeQ-YBGM2F1K8ce,v!G3R#X/hDY3z91@XRRa:E6tEgx7I5nzk1ShI%96@d+ap^r9*hs#z({s.@fcKJHd^Pn[%9S!si.B!,P.*=Mpvv2:)eRtQSUae5%D3lS9t:T8M]yM.haXN.4*.P_3T}i.;{t%J8)yLEu!GdWvlc[hVom.%aV)W_sN,tw0C}rHlLN*hK:ikih1C]p(#e%G7-MV-?xVTBi9gN@cxZDCjBV#{5u{X16e74SsLc(,DjD$_+Z7;U6]97ePHOl237VT_5;3qxzn%/@p,f5IS0]KWF28#;=zg,c[+O[r]M[V4WiYB$;{@Y1/.9RPyH3f3-5pUG^tV{SdG4)0*Uxe+]h_$(r1:_{b44*m?[w%nBk*N8w]^%dK;V*7O0Dx?,].,0/Bq)8T,GY0=m*!j%:Ti!9_37-Xh[h?NKX%KODT%0zNm9HCN9SfCHbkzXXXHV;}w-Ea.8X3g3#h,sy,GCw9Va0aX2euvBIND6jtTARliQ+j{cqMg;7ZcVR-B0Vr{F,,{nxb]K*WyAlK]q+Hd1%qsFt2]^X?#Bo5ElZwfU3J_J}9oxUc5%8^;Od;3UM9i4B2jU=,Bxy]c81wULJ2)%fuI9t{8h/V=;eT@Jr%%NNDA4cv}qL.Dpyf5%Q.nOnfXW.OmK.VdPrsVH1[{sG?0jb$^)n%UvWA=:+R6POJX5$1gyH+[DZ=}EN*Y{aT;FCeZr$i6}dh5p*4]Qw,W)*#TfxqATe?%a]GV*gD:]uMhR0eCMuExaCa2f)d5iNg}(o*x9vZh0.Vywp.)pMo(P31$UB@c7K3=oP)^hqLyB;Le+QGx:UnTGJ@n$5X)d)sdIHDTsD5w_QZ-y?wrX$.#+ZJ7FO*xfR7$ARUI3Vpr/NdwU%#gn_c]uf2-nY{zQ+NEJi6f5(_hd_Z$fBOf+kQh)i8dLRd2PU,.Wp63F-zL.WrHQDws035{%(R8Zdr#u,:X3$V7XBKmULZPbdDB6$Cl}j-cRQWkpGlM4-O;u96Mc);QCiBqOpcsc_6$@JHLJAIoGa(h8h=@Z0,?pE?CsFY=,Vra?(O6mOam1-[tMCPUwUMh8#1R0N^bYu.Pk$Q.Dhnm@k+UZGHG1qC=x#0^^o8W^bta3j;N-mqJ?/e-03?gMY][$IjT:N.rTz4x1a#Kn-CrNMB*z+tBnuO0rK#+J{wU0]}atGLkHNj9z#?IJlh/0knQ/_5FmQyib:vsrvap0g4i5N9=zxmiY^N$FMi4UZ^qk2,XJHggQU#aTMI-54jj=feQ#TE%saSfydSWIN!4qMC+.R]q$b_:.6XpX5W4C0mqk9P*CtQ[bGXVk/1+D5xV[]4Xkj(#p)TqSrgnCy6{VX(m4I%=B}B-Lg^Q!ghl(b:!T-X-56ej8N]hUCING-a.n=w^ak)bLVcB0^?Jj_{@KYCJU+]u^#1+8G]mEvB?yGK=r[P.(16P?-p*xV2Mxzk1T[(6siIiNO.Hd%KuH1Ovb(Bj=)05F4.fxsRC,T9*?mJuJ#%AV#bL=f(brEdRg.2:G3ZihM=Tst4=u+as=7AgF4i/l6O_j(w!.g%NB$V)I=F,;.pDP2{Zgi6Q!=RVj+Ui[!p3SLi9b-;AzpmU*-$(Q#2w5U0cXFiAkMvA+c.,qgl$V(mCsVBrfKmVy4+S8Wb-wk$XMWzp,xY}#IW4_64kc9dd+^-RJ89Kxf:bEQu{+6CL(JK]n3Ad!30K^ZF7-S=c}zm+TRa};e#Af297JLE%So*]owVl+W?6rwD!T;oJFvB_oH=uT6o!+QVjSr^S:{9%5b?uV?!!xG/y5Sz7Yr1SsBPn7G;TQi2qe)$=C6)WyDARQ/^LHZUFF%ArBfeD:Y0qDF1n):SOE4-nBymfOg0Mts]ieUd%eh)%=B/H5_mt.j)SBH%/0EvL$@c7u6usS[N8i+E{z/e(0U39E{%Wj8*n=[N1NLc5Bgh)NI#Xjm_}*O)cK+5iHUc;7!7l?X0ZfBx}tjl./?mjB:nIaWo2c59N@KbY+sX[Z$Dpw8A$DI.syBmxt%Sp9QWbDyYKw2(il@ZzIh9U,.bPl?3HPluLZagFVvryBsc%[!UB@xmJofk]E{UW)#5W58dP[69p9e;oOx=!ti0%%f=p.-e:_[lNv$oMAD^h;nJ}qEa605GOP9Mw;PE*ef.}DSF)TbykAjarf46OI+tp!3oP@vsV2E[5Yvy}Q;vTy++:6TeCc)})0qNKd42fMVErpTEAExc_4#wu5YkMdM)5hQ]9P8=4-7W1zt[t]*[vT]fr#/d8d$3Cok)Ca9QIup}PF]TY*a,pxd^mV,buw-bxip4wT$l(@X+Hm:4[ub)kl^;eJwvFpGl,w/eKscge%g#@_8./WisIdS+)*(I8FEd.(N0r59WgCtm,E59;b_sW/cVbt2tQiR*;?9/AL_)S^pRt!v/U2;Ok[}oABv_zvn0VlY1s?!Z,@ZUWny9J*BQlZ;R+FvFrXpwVKK(E+8-Dp-2a#LRnNCrkLMg]-QeHm-+]VO1jw=X%/nGqX!hES7i_DfWAH-fF1jlA@ShG^L59Sj72Ff)YSx}eO^;d[-C?SE2Y?)Xo,3ua6*{DM3.rXi=.xM{d%.!9Ev27hXR{-*PyOi8%=EitZwOiQh8/U)Ci0Nf/m8W.@l^@V,]d.;xMw/iqCDtd9ns?*PGQr?@avgjx%m}kfNRhdkt@yLL2Jm-)rlFTx}ks!seOk(%7GsmBXj((K*Z}mHTMmHw#Tpdw;i6qyWSVu^lE3/irilDeSH@)O/^GpI{9i(EHqVF+?ZV3]/V^TYi/i/F45UhmR#^xKZcB{;c7@@7F$ILPWaB*U-#A4K90:$4X(S(J$0$_T71y:2E$sspj7=_37*6fL0zRwKtUTr58YJVbfa:{*rn}#lso1Cj(M%;.3Rw][py*8d9nozHi_0j%clWG,t$eYfhqkhW0l-.evAVRg2RdW^50N6*5]36ivkz,F1FLjk^z_nqvg%[+[Ybyw9XqZ*l{KbT_.j+Z3A5O0!qgJ+xXgq!_Va/t%ua{6$XQgHRc8%VG_/f*h0cNIp4R?j6qPhP*rgzJw2?$]B=I3?PYaD.S@ivIxd%P3c:h@#9rKTNVpK{FbXRjtNz}k4.@;D:fP}=Z7rGT.,!_sYXrfkvtVqeb;mmsjV9Fxn7I.?Xh{6@b/=-@:=hyrUm}FiChSo:7jxZRtrP9YBM;vP:n;IvL*xz:r;0[m4[{}6x0=Z[)F_[+@Fj5r*C3HHx(8f}4tx9JLP}ud*?Eb/dD{W$*B+J,$_^!$Vob3JIt:[,yv6xJUO-pv7-Xy-u5UstKQJ{^l1AAaGj;};J6^3-1r{JAe_BNv;4]W4u?qo9WnQp*G.ruh=t)$j4METw$XZ*!Z7p_Mc^v)NQ2XO=x#-LN(h[zJdEx79WOQ0v0r7$_Os9.KnAKGV(FvYL%tlUN$jZ+xQK**;sZ/+oE2L#{5nv)iwyMy^e_r+b#n)6vWSCv7^eUi6zEiN%xT;6+.}A+8,90fS*lfdtR}Va]/Wp$s2m.=DqX?KlK8;HOJI-M0w:xolfz@Kg,+ED_VX?_5W+vEQm%11OGu}KJ2%O{SgVxSs^Nfkzs!{]GL)/m[E[4)tlgtxES(q!Czex1shZCazsmFP0?6!^Z0YgdQ/WODXk-X8*1$wiPn47zCT-?:Iy{}-zH-+FZNLlp3V);F-V/RB/dze7D.?CYiQ%fVSfcKFRWlaY/x6/iv%b8+hXyb8Dw7u68+BPomPt5q@t[U67LW.Y_Hca$xx^#z-dlA16yq(vbCPC}H1l6AG:JE)^0S#O}N4Cnn$vflaS.j45,P=}s/pG}ma:v=KsF^:50ih3G@yHaFZ%Tp[xHf}2r+H1I/S;h]$(2zdx%NrmH?B@6v;D1/lJrg=w0fNP/c@OU8UAcMSs*u^$$O$AoOL{-VOrv;.;7t.iaAp.TJI^$u8J)-QkU8lAoKDY+RP;fxSi%++{K1fkAll1cvaz01FcH=y!.BUQnMd(ek+z?D]pa3tHtpImL49ik2sKxa8jlAiUr%mRnuQl0{M7i18VJH,v+S6$KRNxkW*p3wgLoj=Kgiz(UbFfUB+!n5nir}B@n-L7Ebm8P_1J7x4vhOGv?w1RV7Is-R4!ra4z0ia/}TmTRVfk^RS_dcr]xQ;vcodoJGWI=lsFXZ}OAkVku8X!8SD$li_x7%+,]rKX/so792Cj+;^%Sa5J5}/mKh+fsx,5-;dj:!$0Zx,ww8oiA]0{nM?IW*ck2j,V{V^[?g^xf$v.Tt4e3CsQ.:bT$Cn5_Gny^XcQeqB$wK2!($sNw}m.^w+5d;P}YvDyqnHo],^{G9paU/^e*KA$$@/$c1q/=KiXEYBb6?p4:.g(!lHT08{d*z.:2A_Uzgps%baNF3ZC5TyAJ8GofMkBw]b8M]ksH}%.R0t%QKjinYF^6Q[)zbHK}+J3p(db2Ld=E(uKY,+_55]+BigZ*[!XU/=Z1ES$kBcm0j9{yV}CTu.kjR70FzCdR+vQ-;({i-NMqcp}V/C7F*npx{hUIYwK?7;;].?Nc6WH%f3vI]N_W[/UB;7bhW9J$!dsr]QiHJI}^H#iCpP(m+fo[umXTt^#6$8m]eYS7@p6K?,),a[hO_fz(DjSGe0uSuIv^34pQ.)e6c4tE3T6*ufA5GWcOS1Omj_0;ohmi=g@6fE.4Yt^XpvjjU=#jVR?N87V!t6?MABnTp1dHYeUcMDs!oe--C0FU6IGAl4OVSWx@b]Ri{;T87pn4#:z_2!]8#LwW2P#KLXjkGIDXERX+*8OdYg-P7W^QXKa/.B8u_0F{.9vxi:a]1cNo[2Bn$.:Y![,ZIOHf74F,+:nd=CT}3}H$lVbhX#/JhuOZ$V.T-$98%_44sDlDm+H6W,ACRQO^qP0R)lG7:OjAaKV44E-+Pc}-s^4K0pX)e{%B:3-RDQJOAZH}sRzH*hd678bNo6.$8*Uk(#XoXW;oi[h1JHsX?+}1f*:]aF)Dy.E,)f6O0_)tb!%^!YEhhte@V(zrCay*7Z^)9-U3nm;4ZdU}jcibFg[4_n!]i.RJzh,HU*Bd2HoSEJ/=9].FliQ5oA#kR],-;IrJu{C%BxZ*L4S(=Pt]MptA90=DSEQ9qwjw^.cY-d(1L.pw_xXs@yFE9b6RVud[_FLQ+Vf)9*MR..TwXh!k,BEV.rlN]R9?(D0o;0%+/^+3_1*w;]4m=3$y7;+4uNrZ]*6n]F=*II,e.7IRHU.;*=82U:fDY1ENe^-Lc5imP@R++tzznilWQPmVY+];,2?m*%N_KkqJnGk0]RnSgaoOP2_9o3;El?A(%NqtW(OJ0Vn08.#rHK2g(]fY%8vD$_P1{42hWU=4,V?(TCCxgp1S31n,mHXyVb.y%EYt!Yjo;?:sjbOTWTC6q+]tjkLqu1l/tbzUvsni=09$,UxDb)uEyo1[tdoLM4IswMWtOJFIIU7{V$7d+g(NclbcH?UEb3g;Ee-813c6CTj1,M}?R]@Uuz_KbNZ_(2,8w(PI%SlF/yP%J]Awjqr:rgVFHlIYBQzT6_P^P8,@:8eWWO:AO$yEs,HRQ(tbL;LHu$SO)QQ$2wI)!!QY}+6(G+dYls5SE%IWRYKQm$0K3_Ru}G4Z*_!WZ%z!1BqfR+lbSaCGD_h^!}Pn1pEj?;x2L(OJrcRo(hC4:(7qc+3x$V@8sm;*-^@*7]ErLS=0/_jq#2Tt.mOODul+;aV/Q7w*^o0k8!-XE=m9[DjE,wyw;I$#CCwJ.5tA*R6vzJ{kg4)WrqGLtWpkMixc..aj:+E!c0E+AQdTz4y)RX-CXHQFr7Vr=Aj!Dhv[G$jaXFginM/+x:DyVh#}0/VgAs){S=!UmVc+nxhzhc9T@t_tmDyQyB[:6!O]/YQcU+8kkyD3u800gsgC1vc=eBKi:xG?k;b?.h:4%i6Yot/:MNLT$s)y2Jg3;p{7Otd)wOXcAnro}TG)zcYFfiHH40h0Dzk1/JMevWwx.4/K^)A)$8W+Esu_g%6lf6)W!bI+*D,7GM0/d;ByT}([kJLbB,kYY}u)D*mr)d;..uXT/6D!STmJhfFZr-?QBdSJ^.da1^uPL!t+YuV$-O9=)1yy]jd#y_GWDr+{ys-;jJyLeTabY.53.)XZ-XIIo)n]^qU2c0H:3Z:ZLw=NyOh:k7W;R(96KqnIIfZ:,$x1xh.J;/3QwDeZ,34?j2V-DlYEMxRy3YWY#BQNT,8;APK;V:NzhGshN[%[*x}ck#OGc;-grbk56nnM5H{WmeKUE#Nm.qNq*^5!liJYl##D#kf^Zl3]8F36f[kwcN]?,vD[faBb6SNj-4;y$V:EbZ1pjqmvyVXb!$1!c=Jf^o9MJk=xLOkY@9pPhAmW+F=/M;R#9E;;*5Uoo)^9LF)xDO7nE1VE$6m,?Lo9wBqmPG0UVf_M*@8mfga.5Mt:!,TdQ]C)bP^YYP#BHVvRFggT*2+k:b+h4Y.^#F!lKrIVe_=RGM=GxUFezqdHh)r?4r9-2ALX:E94qPs1X;!yFDCs[HV,j!F3HJU[e]8k5el(T+RI+*?-%uN9Inql2F^DH_3Zmoz*#v^GT:mbeF=(:$-#^ueLMWN2Z;urrt[rMunL?3!]X3VBl0B=;r3ZuLWr-=fY--3J=ezWNqHH2s*QRYH35Uc:aUvM3e6bMZ78ukes}%TUywurB[Y3SPbUba:-K7?K4dL2Xu8NJ](}^$%vcl@y3ANCG7-xMB=y!#T,fU7f!pu-gNN05(#3G!LI4wW!W-HjLzZS1!x0HVvDyEgSkVMLiLM+pPY70xS2wcFhH+hwUijUc5pYc5d[0=a]s5{dDM@MFSIIVBD+2?k,*sjO;sAb:NLzHXu^Lux#HtYWOPM{%n$KpFyAi4)DGsLIQ#5UJO6o/Yv{auqv%5#.m/+rzU4dQP4@C;011ls=;itqEX:09+ak$u/w@_);#LVUL9a,F;)U?BMD!*I:H,x,!ST91C[v=qcuW{q)Ua7;P=K1N7uhZ!*$VX@rIEI#MSfpw;TxIEDy$tmu-KX:3$!WYB?lM.,qboZp[E%U-jeeLjlN9j%zO^?T-^NsIfNA4werPh%$Bo0vXIu2!6CWZMRoBYwtVN5cLC4{RwO[6GT9:k[9D7)(=5GuTry[-1yu9z2*FQteQUiT!2KQj+kY46$8miEkQG0h+#S/TX]5E3;t.t38kJ6[B,(CAQWWx0]!CoE4z0nO@+#tHzpmL.IGSkIoQvQyP+XAuSG;o(1b^X=L9j(C=Nk.3Ce$RzLBm2;DBOmm{ySftNRWE376F}}^%hZ{rxXeC(iXoIr)+3p/R.$pVM@(Q]Oi!GuzZII7T)@TQ.[dQyP4Lo3ms3$?i1ch-Jnep^ZJTQ*YmF9IvTm%-TYh9QuVbb1+{aW0/?!sX,n:tS-+,16NhJB*CZOUkd%q/Hy{jWi[RWxa,3M?)*:_6,^?s(.zrRmCO/P]fNY(CXG1/67iCDbve80{,$@NJmEA,v6p!Ub}c;f,8Dd7zJxLL:bge9+1:Fb847=PaT/3K]EMg$pJ6WwYs?wX,_l+l!aXnfK(0%YU/P0C)rxp=)a=m!xccgMOaUPe.VpLisZ;Q(;f+ylUlXV]{l+QBe89m]s?X9c^ESUC!@O9N8kAQLHghMJ!sp;(p@/Pj386Q}KdwtIAM3%8ls+Go{)hza+0w{@VpH28sBv3x[pzzvg5EM6?w)j)K4fS[t4Gm_Gd4J^]ebk2(5aj9=M*FgWyrCNLnAe.W36)DJ{vjrUY*NUJ5JzdgWBAc0Zxryl]@nX-et4#@S)GNV8l@Jj@Hm)=6P}6eW,%9U$6J=_3d6gcad(SJs+-q!Nd^D+0+z)w,+]Hd{fNxIx84{-lspx77Co%@J6u]3.nf^!c?mp6=7oeV2vV-.2azCkfbE4fj])C}qho+1IyG/hzLxIK9vkY]?CZ-6Q/hF,_YooRg9@zrxet-5sU6TEsA1h_4L#3bioqoEKbsKLQ7%{U+iAg4}l#+O/;=@jzT0](!4xr0}SKn{i7;L!^)qGLUR{O/Jb2OLm9,HxL:+_?OCSGabD+nkQj7C}duP6H?!h6RnoL9)jvgTXQ5k?w:Fubj2z^otpQudo!Oqxa+Z,]@25()F0^?:R+0LxfP;oO/Umg}Xj5glsrL/rvq.X/X?$}:Zl?EC%++$HJJ8CuO%P-.n4spKCm1c4tleuhSR!c?e5@N)VGS).YXwrtuesKms]*[jBEjDXPG4$,U,=8RfFkuN:LBoHIlQ5JG#@a]hJr0G-Z9%j@?Fd(K+eSgKsG[I[Zk)$6/=:G66%Te{OhZJoSFzK.eUx$+Mr2fW4(zHU[.cQd]Pqz!;mu38rH!#J]J,#NAI(t=[OPnnmHC!c:AI!^?P7u-7ffav6U3Ne}aL[R*g($FT$^tMCy:bBKNY[2JRFa,G.{kpF:AxGs=(W_.?7ckmgD}Ffv23cA!{YU[q;VDHSZuzsqcG.nSRQCBEgr[Au_OX4YEYQYM]JFU,Bqh44PmoJlO0xEju;$(Nnsz:.0vCg3)@=6j@0z*V_TCMkYgnX7X^+v!9GEfL+UMh](YtyL89sP[to0gTPb-jFX64p6z5cd)-EWd7fU/CmstK.vIj56n.C8kLw,LPP_XGqdZB@wAmIXn$#+??uFi6d%ULZkQq;dROv)f7,rrN6E4Bwk@PTuP8ynPbeSFp!pHk84cVNp:lM9yZ5+b_PTX)cs,+,{r17Z^BsDyitLzQJXLf+_9cU6ZzqO(:{#f1,;0h5EZ@x*:}#{jmXHhl{E#Sv,[]$Rg^bS}ecSlYah[k7-Wg?vAW?nc(9x}W9TRrv3}=Ik:mZ5.Eh7#6=H$lFCly2[@PzYm)XA1tS#7NQ:n5y4=CKc1oHR+XY,c21d@RDZ)ur{c2oA$%}h9e8pr-uufdZ,}0,zT{0yz_A4{gRzF25u3)BtWdHK(i6NhsOEkGG}Vd}wgT/1/+^[NbBFUTp{pJf.2gsT2{}nhCnZ^B41s{$D%-(oTjM9uHi6Da-OAUT^HmV3g]h6hG=;j#=6]R#dVx-raq!nsfqtggqUSDzC^A^??8Eslzu$N[LeaS?nN8H.(@C%-:-2F^%Ts;@f0^FTO]va9p;TU!i6Id4wcE}*ARbjx]s,zWg}GgfjT01qYL:PxL0!uL5:Suip6k]$z=Ea2b9kMqbRdxpDfQ7mmNFuGkH4TC#?vZ)qkqMupMHltLLup6HkRL9ajMr5HY,#kZpS-BGo?adt-NBiSk^HehG!Zac;-*o+00$10#4qU@S$vXUeE4^DDhYnzxQXZLbD+:/rrR^y_i%n;d6{Z$sq_h*q3T5Vr0t)J05H?Hfqn)AWS#x[NQCACRE;t]Qekk[7kes59Dc=-B@1Tn/jWC9XK5#hvtmpgBm+[5D0WeHGo%-T1May7%Y7QU[nsR.^/7X3.z?eE-EOfx8dr}L-z]J(+fDXz}gny]g=nOi6Z#*uO7VK*$la^VwX;sjJN{R7wLI[HJIn4N3MGzHdE}V=8VW[#aL:!6W6Jyb8RbwHhoDm#0n7CSa_zjR+X79K2j^)IlCTld^x8QIZnfZ4^q/1vo1Myk!1Svx/u18yX,-K.V]SR.MB[dv/b}9veqzJA6TKjhhxxtH$bYHyjJ01Jvnp3(h)%py}qxZ4sr37AZAVxp1cFzJh7k8vuOWr(abI,^?zNHw^:t@9[!3G(:vhtqOyd!._QMip@rkprfZj3;^edvHCxK]gFfXoPKYmE!fFD+6o-3PsO$:y4_M+wCktwAfd:,1vH?ghle{^W+abV=Jx+y^zDss3LZf@F-VaJ*Bv[:b6l,2%?wFy=d}t[F;Op_sEyoXB.8:M%ITT4bMBa]*-tr)gG30m=zp-4jCHA,dOy84HB37UBvAvH96-%]S?rYIqftR1)^b/h+]iSs7i^2(ftqfu$3nlS.rwC_%@=Y^yDNdNwKU4d)DQ?/Oh+Rv%iKy7+7]z*Ro83_daMC67P,WEfEW}jwFMA.[9gevR5]kBFI_14L#OC!yMMX2.C__vLr9@!(0GD=M1SJN-u(L807Sr#$dH%g0rYNf[Q}ALp?c#e</OCTfooterlogo.png>
    <OCTLogoFooter.lua Encoding="Ascii85">l};Jf/2Df9YXYRtz+8,Fv7#iK-C{^Dh?DMSz{XnEiyi[WXo/3j)4.]pcHGzM3wHP.iI)NG(A}Qjz8MbZ8xALb_Mcn8^aP17^:h4O=ohB067@.U+@Mw](tyhdS2w-0)-}ecG7)DuAsOKJmSFMvT4-IWZ/m+%Bs=t$+4jW,EadWXL(.W*lBRK4l*vV8+U8WN=)3JE]TXqkQ3y?sSS-aOWyFWmAv9sVjApsjFwn#$UqWE[SvICA.fjp$f_%Ia60poMQ^=Q[i}T0y%6R^6G9KK-Nw3BQ0ktIt=]5%m+I.vYny-1Pso*4[8AR(N5T${KTq,95:%1aQ(;Yn_2$W//7lb28@jdO6cm@0IQp{LepV/)$(neGl*jB%Nj]!S^7@fgR8Ni=Ub{mcIZH7[[^E(%RMG%A{N^y,}^QybR21io{jzm@%NMr)Mk5a6r8uY8E-ZgfDz_Df^6*wS)F/TNnv{?.SKQvV]s@L@d0w*QwR-fgh!qkyXz2M+wH8j3wbjiU0v!T#htoF4{gf0sW;f3$!Gv!nIm(yEXf)8SnG0)8fjA%:Bfu1qtk3z2EDuS!Z#1z6w]%n*HHexh:GfcWl3@x/{S!_#XK/O)eQcws*x{!j%6w!#2t;;=BK_[]?u^H?xt=!*SB]UB(Txhfd3-Vr4;Gm:yJqV]Gt5sXybwcjYl]G7[z,7m+vmu5FMKW*8vTx,,[G@zJa9.3Y=HV]6:{_XVl[^=fgMlPDFkE.KrBKvfHS3+fv^*_^5@IfsD1@)BV2RcyhaBppKnu$}T43oNx+cc2*MkRbux7-_otRXFHGqImE!UOSah]eI=.L._,+}+4q*?4z)}}wV4*C^0at!stt)%{$P{D}zJ+Gwu;jCHHzU.{V[f.kT!y?g9AtOplv8#[#)@UQN-}P+AbC;Zg(43P_IB8[M$,i/PlIs=xyTs5rx@6ICSKVviMG^hhuJ=-HoOa%8@drH9bT3EMMohOFiB%}$.W_qC4(%/[?5%(A(/%0:wv,.jEvN/u7zzm$IMqAb!xw5w]I3ctvLWnc=K._G@8?zU,ra9p+itrRuvHi_2OgjiX%#:=[v4q*!Ka1TJ@{b3N-yj@ghir-y]ty@K1Sv;pVhB/kT:1?qUma0svwMge/vxNGWvK)n9ut]*ws*qVJxYhb$5(GDze+Kc#ZIv[Ih79!lk[:a6Wqi:-e4W!])O3i^obK++AI:T+v/5=?f0}lU1),Q8AOeC({;k@Udem4p7B?=:?FL!LoVFQwJ?L?/VED;P#opEtjLURIX(=6STvL05AK9_H*f8;;Y9hZmd]Ta/]_i]jx40N2#n4A)f4:p*wfU[94fJYa#s8^!53do6]o:L06,ZMwc0XO]1(5t$2:c*gb/zt7:{%4,h27*Y]9S0l*@YzaLiY?MaE^o96d]HLhE^86TWFF!Odfc!$9c3.}eAFX)b)qluhJydo/hcNgA6tRVaS]sD_-j:YQi[?Gq1XM$b6JCovKOEKpgY#P7Q+^,U[C//Zz!Ev:1_7qW-OLPqnD}fzOZG[g(JB}Anw}.ZwK+?z}y$.dbwz2bWH#tXNU0FkuhoshbqE0Kw8{7Yj%hh:xaABRJt1p#xm9tLo2d=+zH;gdVpbwr,+xj%Cz}A[KEU(len6A2JtCp,Q_3(o.voQPd4+</OCTLogoFooter.lua>
  </Files>
  <CheatEntries>
    <CheatEntry>
      <ID>29</ID>
      <Description>"Enable Scripts (enable at title screen or switch characters)"</Description>
      <Options moHideChildren="1"/>
      <Color>FF8000</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : COTM.exe
  Version: 
  Date   : 2022-04-14
  Author : Seneeki

  This script does blah blah blah
}

[ENABLE]
{$lua}
if syntaxcheck then return end

      mr = AddressList.createMemoryRecord()
      mr.Description = 'Characters'
      mr.Type = 12
      mr.Address = '[hpPointer]'
      mr.Options = '[moManualExpandCollapse,moAllowManualCollapseAndExpand,moHideChildren]'
      mr.DontSave = true
      mr.Color = 255128128
      subWep = AddressList.createMemoryRecord()
      subWep.Description = 'Sub Weapons'
      subWep.IsGroupHeader = true
      subWep.Address = '[hpPointer]'
      subWep.Options = '[moManualExpandCollapse,moAllowManualCollapseAndExpand,moHideChildren]'
      subWep.DontSave = true
      subWep.Color = 255128128
local mr1 = AddressList.createMemoryRecord()
      mr1.Description = 'Zangetsu Maximum Hitpoints'
      mr1.Type = 0
      mr1.Address = '+10'
      mr1.appendToEntry(mr)
      mr1.Color = 225
local mr11 = AddressList.createMemoryRecord()
      mr11.Description = 'Zangetsu Current Hitpoints'
      mr11.Type = 0
      mr11.Address = '+11'
      mr11.appendToEntry(mr)
      mr11.Color = 225
local mr12 = AddressList.createMemoryRecord()
      mr12.Description = 'Zangetsu Sub Weapon (1-3)'
      mr12.Type = 0
      mr12.Address = '+12'
      mr12.appendToEntry(subWep)
      mr12.Color = 225

local mr2 = AddressList.createMemoryRecord()
      mr2.Description = 'Miriam Maximum Hitpoints'
      mr2.Type = 0
      mr2.Address = '+13'
      mr2.appendToEntry(mr)
      mr2.Color = 64255128
local mr21 = AddressList.createMemoryRecord()
      mr21.Description = 'Miriam Current Hitpoints'
      mr21.Type = 0
      mr21.Address = '+14'
      mr21.appendToEntry(mr)
      mr21.Color = 64255128
local mr22 = AddressList.createMemoryRecord()
      mr22.Description = 'Miriam Sub Weapon (1-4)'
      mr22.Type = 0
      mr22.Address = '+15'
      mr22.appendToEntry(subWep)
      mr22.Color = 64255128

local mr3 = AddressList.createMemoryRecord()
      mr3.Description = 'Alfred Maximum Hitpoints'
      mr3.Type = 0
      mr3.Address = '+16'
      mr3.appendToEntry(mr)
      mr3.Color = 255164115
local mr31 = AddressList.createMemoryRecord()
      mr31.Description = 'Alfred Current Hitpoints'
      mr31.Type = 0
      mr31.Address = '+17'
      mr31.appendToEntry(mr)
      mr31.Color = 255164115
local mr32 = AddressList.createMemoryRecord()
      mr32.Description = 'Alfred Sub Weapon (1-4)'
      mr32.Type = 0
      mr32.Address = '+18'
      mr32.appendToEntry(subWep)
      mr32.Color = 255164115

local mr4 = AddressList.createMemoryRecord()
      mr4.Description = 'Gebel Maximum Hitpoints'
      mr4.Type = 0
      mr4.Address = '+19'
      mr4.appendToEntry(mr)
      mr4.Color = 255115001
local mr41 = AddressList.createMemoryRecord()
      mr41.Description = 'Gebel Current Hitpoints'
      mr41.Type = 0
      mr41.Address = '+1a'
      mr41.appendToEntry(mr)
      mr41.Color = 255115001

local mr5 = AddressList.createMemoryRecord()
      mr5.Description = 'Maximum Weapon Points'
      mr5.Type = 0
      mr5.Address = '+1d'
      mr5.appendToEntry(subWep)
local mr51 = AddressList.createMemoryRecord()
      mr51.Description = 'Current Weapon Points'
      mr51.Type = 0
      mr51.Address = '+1e'
      mr51.appendToEntry(subWep)

      mr6 = AddressList.createMemoryRecord()
      mr6.Description = 'Score'
      mr6.Type = 2
      mr6.Address = '[score]+C'
      mr6.DontSave = true
      mr6.Color = 2552550

{$asm}

aobscanmodule(hpSelect,COTM.exe,0F B6 44 02 11)
alloc(newmem,$100)
alloc(hpPointer,1)
alloc(jnkData,4)
alloc(coordX,4)
alloc(coordY,4)
alloc(direction,4)
alloc(savePosX,4)
alloc(savePosY,4)
alloc(saveDir,4)
alloc(savePosX2,4)
alloc(savePosY2,4)
alloc(saveDir2,4)
alloc(savePosX3,4)
alloc(savePosY3,4)
alloc(saveDir3,4)
alloc(jmpSet,4)
label(code return)
registersymbol(hpSelect hpPointer jmpSet coordX coordY direction savePosX savePosY saveDir savePosX2 savePosY2 saveDir2 savePosX3 savePosY3 saveDir3)
savePosX:
  dd (float)0
savePosY:
  dd (float)0
saveDir:
  dd (float)0
savePosX2:
  dd (float)0
savePosY2:
  dd (float)0
saveDir2:
  dd (float)0
savePosX3:
  dd (float)0
savePosY3:
  dd (float)0
saveDir3:
  dd (float)0
newmem:
  mov [direction],esi
  mov [jmpSet],esi
  mov [jnkData],esi
  mov [coordX],esi
  mov [coordY],esi
  add [direction],1c4
  add [coordX],1ac
  add [coordY],1b0
  mov [hpPointer],eax
code:
  movzx eax,byte ptr [edx+eax+11]
  jmp return
hpSelect:
  jmp newmem
return:


[DISABLE]
{$lua}
if syntaxcheck then return end
if mr ~= nil then memoryrecord_delete(mr) end
if subWep ~= nil then memoryrecord_delete(subWep) end
if mr6 ~= nil then memoryrecord_delete(mr6) end
{$asm}
hpSelect:
  db 0F B6 44 02 11

unregistersymbol(*)
dealloc(*)

{
// ORIGINAL CODE - INJECTION POINT: COTM.exe+1FFEA8

COTM.exe+1FFE77: E8 64 CC E7 FF                 - call COTM.exe+7CAE0
COTM.exe+1FFE7C: 81 A6 00 05 00 00 FF FB FF FF  - and [esi+00000500],FFFFFBFF
COTM.exe+1FFE86: 8B 86 98 01 00 00              - mov eax,[esi+00000198]
COTM.exe+1FFE8C: 8B 0D 60 36 E5 00              - mov ecx,[COTM.exe+483660]
COTM.exe+1FFE92: 8D 14 40                       - lea edx,[eax+eax*2]
COTM.exe+1FFE95: 8B 41 08                       - mov eax,[ecx+08]
COTM.exe+1FFE98: 0F B6 44 02 10                 - movzx eax,byte ptr [edx+eax+10]
COTM.exe+1FFE9D: 89 86 E0 03 00 00              - mov [esi+000003E0],eax
COTM.exe+1FFEA3: 8B 41 08                       - mov eax,[ecx+08]
COTM.exe+1FFEA6: 8B CE                          - mov ecx,esi
// ---------- INJECTING HERE ----------
COTM.exe+1FFEA8: 0F B6 44 02 11                 - movzx eax,byte ptr [edx+eax+11]
// ---------- DONE INJECTING  ----------
COTM.exe+1FFEAD: 81 A6 F8 04 00 00 FF FF 7F FF  - and [esi+000004F8],FF7FFFFF
COTM.exe+1FFEB7: 89 86 DC 03 00 00              - mov [esi+000003DC],eax
COTM.exe+1FFEBD: 8B 06                          - mov eax,[esi]
COTM.exe+1FFEBF: FF 90 AC 02 00 00              - call dword ptr [eax+000002AC]
COTM.exe+1FFEC5: 8B 06                          - mov eax,[esi]
COTM.exe+1FFEC7: 8B CE                          - mov ecx,esi
COTM.exe+1FFEC9: 8B 80 B4 02 00 00              - mov eax,[eax+000002B4]
COTM.exe+1FFECF: FF D0                          - call eax
COTM.exe+1FFED1: 84 C0                          - test al,al
COTM.exe+1FFED3: 74 45                          - je COTM.exe+1FFF1A
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>181</ID>
          <Description>"Infinite Health"</Description>
          <Color>008000</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{$lua}
if syntaxcheck then return end
[enable]
local function setHP(os1, os2, os3)
      local hp,hpMax,char
      hp = 16
      vhp = 20
      writeShortInteger('[hpPointer]+' .. string.format('%x',os1),hp)
      writeShortInteger('[hpPointer]+' .. string.format('%x',os2),hp)
      writeInteger('[coordX]+' .. string.format('%x',os3),vhp)

end


statTimer = createTimer()
statTimer.setInterval(100)
statTimer.onTimer = function()
setHP(16,17,560)
setHP(19,20,548)
setHP(22,23,560)
setHP(25,26,560)
end
[disable]
statTimer.destroy()
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>204</ID>
          <Description>"Free Sub Weapon Use"</Description>
          <Color>FFFF00</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : COTM.exe
  Version: 
  Date   : 2022-04-17
  Author : Seneeki

  This script does blah blah blah
}

[ENABLE]
registersymbol(freeSubWep freeSubUse freeSubUse2 freeSubUse3 stayBat batAtk batUP)
label(subde subturn)
aobscanmodule(freeSubWep,COTM.exe+1FB5D3,88 48 1E 5D C2 04 00) // should be unique
aobscanmodule(freeSubUse,"COTM.exe"+1FBE1F,72 19 F7 86 00 05 00 00 00 00 01 00) // should be unique
aobscanmodule(freeSubUse2,"COTM.exe"+210A3F,72 43 8B 06 8B CE) // should be unique
aobscanmodule(freeSubUse3,"COTM.exe"+2071AC,72 1F F6 86 F8 04 00 00 10) // should be unique
aobscanmodule(stayBat,"COTM.exe"+206F68,75 19 E8 F1 31 00 00) // should be unique
aobscanmodule(batUP,"COTM.exe"+207349,0F 82 0B 01 00 00) // should be unique
aobscanmodule(batAtk,"COTM.exe"+2073C8,0F 82 8C 00 00 00) // should be unique
alloc(submem,$100)
submem:
  mov cl,[eax+1E]
subde:
  mov [eax+1E],cl
  pop ebp
  ret 0004
  jmp subturn
freeSubWep:
  jmp submem
  nop 2
subturn:
freeSubUse:
  db 90 90
freeSubUse2:
  db 90 90
freeSubUse3:
  db 90 90
stayBat:
  db EB
batUP:
  db 90 90 90 90 90 90
batAtk:
  db 90 90 90 90 90 90
[DISABLE]
freeSubWep:
  db 88 48 1E 5D C2 04 00
batAtk:
  db 88 48 1E 8D 4D F0

batUP:
  db 0F 82 0B 01 00 00
freeSubUse:
  db 72 19
freeSubUse2:
  db 72 43
freeSubUse3:
  db 72 1F
stayBat:
  db 75
batAtk:
  db 0F 82 8C 00 00 00
batUP:
  db 0F 82 0B 01 00 00
unregistersymbol(*)

</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>262</ID>
          <Description>"Set Sub Weapon Type  (press 1-4 on the number row)"</Description>
          <Color>FFFF00</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : COTM.exe
  Version: 
  Date   : 2022-04-17
  Author : Seneeki

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(subWeaponSet,"COTM.exe"+1A166B,0F B6 44 30 12) // should be unique
alloc(newmem,$100)
label(code return)
registersymbol(subWeaponSet)
newmem:
code:
  movzx eax,byte ptr [eax+esi+12]
  jmp return
subWeaponSet:
  jmp newmem
return:
{$lua}
if  syntaxcheck then return end
local function setWeapon(a)
      if a == 4 then
         writeShortInteger('[hpPointer]+15',a)
         writeShortInteger('[hpPointer]+18',a)
         else
         writeShortInteger('[hpPointer]+12',a)
         writeShortInteger('[hpPointer]+15',a)
         writeShortInteger('[hpPointer]+18',a)
      end
end
swTimer = createTimer()
swTimer.setInterval(130)
swTimer.onTimer = function()
if isKeyPressed(0x31) then setWeapon(1) end
if isKeyPressed(0x32) then setWeapon(2) end
if isKeyPressed(0x33) then setWeapon(3) end
if isKeyPressed(0x34) then setWeapon(4) end
end
{$asm}
[DISABLE]
{$lua}
if  syntaxcheck then return end
swTimer.destroy()
{$asm}
subWeaponSet:
  db 0F B6 44 30 12

unregistersymbol(subWeaponSet)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: COTM.exe+1A166B

COTM.exe+1A164C: 32 C0              - xor al,al
COTM.exe+1A164E: 3A 45 F3           - cmp al,[ebp-0D]
COTM.exe+1A1651: 1B C0              - sbb eax,eax
COTM.exe+1A1653: 40                 - inc eax
COTM.exe+1A1654: 50                 - push eax
COTM.exe+1A1655: FF B2 00 03 00 00  - push [edx+00000300]
COTM.exe+1A165B: E8 60 69 05 00     - call COTM.exe+1F7FC0
COTM.exe+1A1660: A1 60 36 0F 01     - mov eax,[COTM.exe+483660]
COTM.exe+1A1665: FF 75 DC           - push [ebp-24]
COTM.exe+1A1668: 8B 40 08           - mov eax,[eax+08]
// ---------- INJECTING HERE ----------
COTM.exe+1A166B: 0F B6 44 30 12     - movzx eax,byte ptr [eax+esi+12]
// ---------- DONE INJECTING  ----------
COTM.exe+1A1670: 50                 - push eax
COTM.exe+1A1671: 8B 45 E4           - mov eax,[ebp-1C]
COTM.exe+1A1674: 57                 - push edi
COTM.exe+1A1675: 8B 88 8C 00 00 00  - mov ecx,[eax+0000008C]
COTM.exe+1A167B: E8 C0 3B 05 00     - call COTM.exe+1F5240
COTM.exe+1A1680: 8B 45 E8           - mov eax,[ebp-18]
COTM.exe+1A1683: 47                 - inc edi
COTM.exe+1A1684: 83 C0 04           - add eax,04
COTM.exe+1A1687: 83 C6 03           - add esi,03
COTM.exe+1A168A: 89 45 E8           - mov [ebp-18],eax
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>227</ID>
          <Description>"Unlock Skills, Powerups and Party Members and Infinite Double Jump"</Description>
          <Color>0000E1</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : COTM.exe
  Version: 
  Date   : 2022-04-17
  Author : Seneeki

  This script does what the description says
}

[ENABLE]
aobscanmodule(dblJmp,"COTM.exe"+1FEA09,77 CE 80 B9 D2 04 00 00 00) // should be unique
dblJmp:
  db 72
{$lua}
if syntaxcheck then return end
storePartyNskills = readInteger('[hpPointer]+2c')
writeInteger('[hpPointer]+2c',4294967295)
{$asm}
[DISABLE]
{$lua}
if syntaxcheck then return end
writeInteger('[hpPointer]+2c',storePartyNskills)
{$asm}
dblJmp:
  db 77
unregistersymbol(*)
dealloc(*)
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>261</ID>
          <Description>"Infinite Double Jump (must have unlocked first)"</Description>
          <Color>0000E1</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[enable]
aobscanmodule(dblJmp,"COTM.exe"+1FEA09,77 CE 80 B9 D2 04 00 00 00) // should be unique
dblJmp:
  db 72
[disable]
dblJmp:
  db 77
unregistersymbol(*)
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>85</ID>
          <Description>"Teleport to Location    F1,F2,F3 to save locations  F5,F6,F7 to load  F4 to drop in from top F8 to drop through platform"</Description>
          <Options moHideChildren="1"/>
          <Color>0074E8</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{$lua}
if syntaxcheck then return end
[enable]
local function setPosition(x,y,d)
            writeFloat('[coordX]',x)
            writeFloat('[coordY]',y)
            writeFloat('[coordX]+c',x)
            writeFloat('[coordY]+c',y)
            writeFloat('[direction]',d)
end
local function savePosition(a)
      if a == savePosX then
            savePosX = readFloat('[coordX]')
            savePosY = readFloat('[coordY]')
            direction = readFloat('[direction]')
      elseif a == savePosX2 then
            savePosX2 = readFloat('[coordX]')
            savePosY2 = readFloat('[coordY]')
            direction = readFloat('[direction]')
      elseif a == savePosX3 then
            savePosX3 = readFloat('[coordX]')
            savePosY3 = readFloat('[coordY]')
            direction = readFloat('[direction]')
      end
end
function seneekiKeys()

         if isKeyPressed(VK_F1) then
            savePosition(savePosX)
            speak('location one saved')
         end
         if isKeyPressed(VK_F2) then
            savePosition(savePosX2)
            speak('location two saved')
         end
         if isKeyPressed(VK_F3) then
            savePosition(savePosX3)
            speak('location three saved')
         end

         if isKeyPressed(VK_F5) then
            setPosition(savePosX,savePosY,saveDir)
         end
         if isKeyPressed(VK_F6) then
            setPosition(savePosX2,savePosY2,saveDir2)
         end
         if isKeyPressed(VK_F7) then
            setPosition(savePosX3,savePosY3,saveDir3)
         end
         if isKeyPressed(0x11) and isKeyPressed(0x01) then
         local saveDir = readFloat('[direction]')
         local a = readFloat('[coordX]')
         local shunt1 =  a + 100
         local shunt11 = a - 100
            if saveDir == 1 then
               writeFloat('[coordX]',shunt1)
               writeFloat('[coordX]+c',shunt1)
            elseif saveDir &lt; 0 then
               writeFloat('[coordX]',shunt11)
               writeFloat('[coordX]+c',shunt11)
            end
         end
         if isKeyPressed(0x11) and isKeyPressed(0x04) then
         local saveDir = readFloat('[direction]')
         local a = readFloat('[coordX]')
         local shunt2 =  a + 200
         local shunt21 = a - 200
            if saveDir == 1 then
               writeFloat('[coordX]',shunt2)
               writeFloat('[coordX]+c',shunt2)
            elseif saveDir &lt; 0 then
               writeFloat('[coordX]',shunt21)
               writeFloat('[coordX]+c',shunt21)
            end
         end
         if isKeyPressed(VK_F4) then
            local drop = readFloat('[coordY]')
            drop = drop + 200
            writeFloat('[coordY]',drop)
            writeFloat('[coordY]+c',drop)
         end
         if isKeyPressed(VK_F8) then
            local drop = readFloat('[coordY]')
            drop = drop -40
            writeFloat('[coordY]',drop)
            writeFloat('[coordY]+c',drop)
         end
         if isKeyPressed(0x11) and isKeyPressed(0x31) then
            setPosition(3409,400,1)
         end
         if isKeyPressed(0x11) and isKeyPressed(0x32) then
            setPosition(5509,288,1)
         end
         if isKeyPressed(0x11) and isKeyPressed(0x33) then
            setPosition(506,1008,1)
         end
         if isKeyPressed(0x11) and isKeyPressed(0x34) then
            setPosition(4621,3520,1)
         end
         if isKeyPressed(0x11) and isKeyPressed(0x35) then
            setPosition(6669,2301,1)
         end
         if isKeyPressed(0x11) and isKeyPressed(0x36) then
            setPosition(3680,2672,1)
         end
         if isKeyPressed(0x11) and isKeyPressed(0x37) then
            setPosition(7133,3392,1)
         end
         if isKeyPressed(0x11) and isKeyPressed(0x38) then
            setPosition(1555,2016,1)
         end
         if isKeyPressed(0x11) and isKeyPressed(0x39) then
            setPosition(3958,2448,1)
         end
         if isKeyPressed(0x11) and isKeyPressed(0x30) then
            setPosition(5252,2021,1)
         end
         if isKeyPressed(0x11) and isKeyPressed(0xBD) then
            setPosition(2302,1488,1)
         end
end
kpTimer = createTimer()
kpTimer.setInterval(100)
kpTimer.onTimer = function() seneekiKeys() end
[disable]
kpTimer.destroy()










</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>263</ID>
              <Description>"Hold CTRL and - LMB to shunt forward quarter screen or MMB to shunt forward half Screen"</Description>
              <Color>0074E8</Color>
              <GroupHeader>1</GroupHeader>
            </CheatEntry>
            <CheatEntry>
              <ID>284</ID>
              <Description>"Hold CTRL and press 1-9 to go just before each stage's boss fight (Stage 9 Nightmare mode only)"</Description>
              <Color>0074E8</Color>
              <GroupHeader>1</GroupHeader>
              <CheatEntries>
                <CheatEntry>
                  <ID>285</ID>
                  <Description>"Make sure to only use once you have loaded into the stage"</Description>
                  <Color>0074E8</Color>
                  <GroupHeader>1</GroupHeader>
                </CheatEntry>
                <CheatEntry>
                  <ID>302</ID>
                  <Description>"Stage 9 Miriam = CTRL +9 Alfred = CTRL + 0 Gebel = CTRL + -     (minus key next to 0)"</Description>
                  <Color>0074E8</Color>
                  <GroupHeader>1</GroupHeader>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
  <Comments>This Cheat Table is to have the GNU General Public Licence version 3 applied to it
"Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed." 
www.gnu.org/licenses/gpl-3.0.en.html
©️ Seneekikaant at OpenCheatTable.org
</Comments>
  <LuaScript>AuthorName = 'Seneekikaant'
TablePostUrl = [[https://opencheattables.org/viewtopic.php?f=20&amp;t=763]]
FooterLogoFileName = 'OCTfooterlogo.png'
AddLicenseLabel = true
LicenseName = 'GPL-3.0'
LicenseFileName = 'License.txt'


---- Table File Package Loader
	function tableFilePackageLoader(name, modPath)
		local tableFile = findTableFile(modPath)
		if tableFile then
			local stream = tableFile.getData()
			if stream then
				local fileStr = readStringLocal(stream.memory, stream.size)
				if fileStr then
					local status, ret = pcall(load, fileStr, modPath)
					if not status then error(ret, 2) end
					return ret(name, modPath)
				end
			end
		end
		error(string.format('Error loading table module: %s : %s', name, modPath), 2)
	end
	function tableFilePackageSearcher(name)
		local err = ''
		local mod_paths = { name..'.lua', name..'.init.lua' }
		local tableFile, modPath
		for i, path in ipairs(mod_paths) do
			tableFile = findTableFile(path)
			if tableFile then
				modPath = path
				break
			else
				err = err..string.format("\n\tno table file '%s'", path)
			end
		end
		if tableFile and modPath then
			return tableFilePackageLoader, modPath
		end
		return err
	end
	if not TABLE_LUA_PACKAGE_SEARCHER_LOADED then
		if RELEASE_MODE then
			table.insert(package.searchers, 2, tableFilePackageSearcher)
		else
			table.insert(package.searchers, tableFilePackageSearcher)
		end
		TABLE_LUA_PACKAGE_SEARCHER_LOADED = true
	end
	---- Bypass require for better formated outputs
	if not REQUIRE_BYPASS_LOADED then
		local _require = require
		function require(name)
			if REREQUIRE or RerequireList and RerequireList[name] then
				package.loaded[name] = false
			end
			local status, ret = pcall(_require, name)
			if status then
				return ret
			else
				local err = ret:gsub('\n', '\r\n'):gsub('.dllC:\\', ".dll'\r\n\tno file 'C:\\")
				error(err, 2)
			end
		end
		REQUIRE_BYPASS_LOADED = true
	end


require('OCTLogoFooter')
addOCTFooter(true)

</LuaScript>
</CheatTable>
