<?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>
    <OCTLogoFooter.lua Encoding="Ascii85">l},w}/2Df8YXYRdfu}wVVns/dyTt-Q5j(fvfU[{R7d-=%(:O?4p-F,H=YQUu?D4vj$,DcbIoRgRo8fTYaEAH(r%#^m+SZk$2VN0$hZ,kZQEyg_-3T-GOlEX-b/.aLo#6!_6QT4Uk@z2i2@O!fh1R9_c6ljE!qb9atqnxQLM_@ilx)#qX(RSB]D:c6o(2otzJ9rx()BUDh0sKf#Zo+^MtnFOLKD]?XqH/I15I4:B=NY#Wn-EWuE-cKh;5K(0m}dSMb1vW+l+HY8SlSM#*F$U:;:RPpti*_y*4%68f=x@@EFR36((F#gGk+OqEs-3OGP0W^j/^)nxmkDKuLylK^%2]uO(x;XMkZM#SGc{nGIq4obqf_t*s+2c,a)oaSF1N0sNV7:d#4yW,.]w51E*%1VKom*R-#WZy.${/7f*Ok.tkIiA;/@QHs?6gMJl-U1KL]xLHuW!X/bzW:o:ncI]avho)wKHJr+w.3SQ#g_nPgm:M_23l0tupz%GUOAZE?4TaWXwXc05bXjOn-_owwDWB56Oy,MBG#Dt2d4@=XL_dv0@o%Kg6mk[.5nNR!rVvirhk97B5u?pwVbWD%b2Gu8#Rduil*i!?1%+JQI_=L95sf)6dj1L+G-N3gYm:bV]py_%q5;/#g,?EDAnzrWZZDJ4gJ42lt:jqy3Asa8t{q7!bD^mth8QLk$-LRgzLBTfuRVsqdBKadtKAr/N8Mairo2K729o5!aN#_aLQ#9wtaqx;V!c#ItTh6n5H3rCC0d(ta.TF6EiCtFfu)oocAN:Qn,fv5z:*SSF^ucv0S!L2TvuAhdFFM$a^z8_echmwLZy06Puj4!fxk[XW2hHy-85/iMSWz[V]{8E9(m2%%buKiUsduyEYhwRGNQB.yKt01Q{x4t]!9dZUB/UG13G{;q=YMA,fKkpu3MPy5/{/cy2f-{b,3VmB%{ge=-jo{=Yvj)M{i6ICP(pqOt%[_RVg@)I!gKu/Idyn$@:W$4RQLmlmd#aQ4J0-6cQ=Ms({?BFVvLsC2Q*+hOn2l;u8J357:vO1FNrMOWBaYR/-rC5Zfmp@I%(q;@)GD+TUX8@a39vGoEK+JU0;^c)V$,x^*dfW8dFN3SmbdPyPA4-zWojJ21R6syXehg/VB/dkYT.e,#eog)F/rs*zI06F?7?2paCbp/W!/ub6$KN5OUMCwXtWQ/_*L9f(H]$$OFvZ$ICBzU:@2boO3zH54qHw;*+wQY$}C#-]4,Hr.YLT1)_;Kt4f#n,Wi-kNBUwHD7Os9Dy6[*sN!#b1ICD3U]#sfM]-#3u]JHFR@^dG2(VXKdXP}P/3-!gF5J^mB.8Z=@%.36Lc$^V[emUf9I-t0OkiTzt%IfABH/%8^@!,KJ07E94t58;.Y;WdbW8FICaC!,vVULUUFavfDC;=,Zr29/V?lfSqZtj?E(3X,3$x?4rm;D7yofWRJ}[^UA^Y$.$llN:NoJ}xzpJ.jg2U3!u$krwHW[tht4IshDnJcKS64tweybSOyX@1%r8*K.irv5*VFQyyxUFA)N_a2)6u3^.ZB6Kg1qM5Tee*CHv{%Mb9D8kvaWL0;HWa/^[zIE#0mP}+?WFarU)AUhj)[@rsKKP@.l{TYW/?VZkUDHkADC</OCTLogoFooter.lua>
    <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>
  </Files>
  <CheatEntries>
    <CheatEntry>
      <ID>1</ID>
      <Description>"Compact Mode"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
--https://forum.cheatengine.org/viewtopic.php?t=570055
LuaCall(function cycleFullCompact(sender,force) local state = not(compactmenuitem.Caption == 'Compact View Mode'); if force~=nil then state = not force end; compactmenuitem.Caption = state and 'Compact View Mode' or 'Full View Mode'; getMainForm().Splitter1.Visible = state; getMainForm().Panel4.Visible    = state; getMainForm().Panel5.Visible    = state; end; function addCompactMenu() if compactmenualreadyexists then return end; local parent = getMainForm().Menu.Items; compactmenuitem = createMenuItem(parent); parent.add(compactmenuitem); compactmenuitem.Caption = 'Compact View Mode'; compactmenuitem.OnClick = cycleFullCompact; compactmenualreadyexists = 'yes'; end; addCompactMenu(); cycleFullCompact(nil,true))

[DISABLE]
LuaCall(cycleFullCompact(nil,false))
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>2</ID>
      <Description>"Enable (Enable Twice)"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript Async="1">[ENABLE]
{$lua}
if syntaxcheck then return end;if process==nil then ShowMessage('Process is not selected.')elseif readInteger(process)==0 then ShowMessage('Process cannot be opened.')else if monopipe~=nil and monopipe.ProcessID~=getOpenedProcessID()then monopipe.destroy()monopipe=nil end;if monopipe==nil then LaunchMonoDataCollector()end end;thetick=0;Timer1=createTimer()Timer1.Interval=60000;Timer1.OnTimer=function(a)thetick=thetick+1;if thetick==1440 then addOCTFooter(true)end end

{$asm}
define(TenCrownsGameCorePlayerloadYieldStockpileProc,"TenCrowns.GameCore.Player:loadYieldStockpile")
define(TenCrownsGameCorePlayergetYieldStockpileWholeProc,"TenCrowns.GameCore.Player:getYieldStockpileWhole")
define(TenCrownsGameCorePlayerisDeadProc,"TenCrowns.GameCore.Player:isDead")
define(TenCrownsGameCorePlayersetTechProgressProc,"TenCrowns.GameCore.Player:setTechProgress")
define(TenCrownsGameCoreUnitgetHPProc,"TenCrowns.GameCore.Unit:getHP")
define(TenCrownsGameCoreUnitsetTurnStepsProc,"TenCrowns.GameCore.Unit:setTurnSteps")
define(TenCrownsGameCoreCitysetBuildProgressProc,"TenCrowns.GameCore.City:setBuildProgress")
//TenCrowns.GameCore.City:setYieldProgress+2c
define(TenCrownsGameCoreCitysetYieldProgressProc,"TenCrowns.GameCore.City:setYieldProgress")


registersymbol(TenCrownsGameCorePlayerloadYieldStockpileProc)
registersymbol(TenCrownsGameCorePlayergetYieldStockpileWholeProc)
registersymbol(TenCrownsGameCorePlayerisDeadProc)
registersymbol(TenCrownsGameCorePlayersetTechProgressProc)
registersymbol(TenCrownsGameCoreUnitgetHPProc)
registersymbol(TenCrownsGameCoreUnitsetTurnStepsProc)
registersymbol(TenCrownsGameCoreCitysetBuildProgressProc)
registersymbol(TenCrownsGameCoreCitysetYieldProgressProc)

[DISABLE]
{$lua}
if syntaxcheck then return end;if not syntaxcheck and monopipe then monopipe=nil,monopipe.Destroy()end;Timer1.Destroy()

{$asm}
unregistersymbol(*)
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>64</ID>
          <Description>"Data: current player"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : OldWorld.exe
  Version: 
  Date   : 2022-05-20
  Author : bbfox @ https://opencheattables.com
}

[ENABLE]

aobscanregion(INJECT_PLAYER_DATA,TenCrownsGameCorePlayerisDeadProc+b,TenCrownsGameCorePlayerisDeadProc+1b,48 8B 40 10 0F B6 80 A2 03 00 00) // should be unique

alloc(newmem,$1000,INJECT_PLAYER_DATA)

label(code)
label(return)
label(i_LearnToPlay2Player_addr)

newmem:
  push rbx

{$try}
  mov rbx, [rax+18] //mpLastUpdateData
  test rbx, rbx
  jmp short _test1
{$except}
  xor rbx, rbx
_test1:
  jz endp
  mov ebx,[rax+4C] //meLanguage
  cmp ebx, -1
  jz endp
  mov bl,[rax+54] //mePlayer
  test bl,bl
  jnz endp
  mov [i_LearnToPlay2Player_addr], rax
endp:
  pop rbx

code:
  mov rax,[rax+10]
  movzx eax,byte ptr [rax+000003A2]
  jmp return

align 10 cc
  i_LearnToPlay2Player_addr:
  dq 0

INJECT_PLAYER_DATA:
  jmp newmem
  nop 6
return:
registersymbol(i_LearnToPlay2Player_addr)
registersymbol(INJECT_PLAYER_DATA)

[DISABLE]

INJECT_PLAYER_DATA:
  db 48 8B 40 10 0F B6 80 A2 03 00 00

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: TenCrowns.GameCore.Player:isDead+b

18A75AF6942: 00 00                 - add [rax],al
18A75AF6944: 00 00                 - add [rax],al
18A75AF6946: 00 00                 - add [rax],al
18A75AF6948: 00 00                 - add [rax],al
18A75AF694A: 00 00                 - add [rax],al
18A75AF694C: 00 00                 - add [rax],al
18A75AF694E: 00 00                 - add [rax],al
TenCrownsGameCorePlayerisDeadProc: 48 83 EC 08           - sub rsp,08
TenCrowns.GameCore.Player:isDead+4: 48 89 0C 24           - mov [rsp],rcx
TenCrowns.GameCore.Player:isDead+8: 48 8B C1              - mov rax,rcx
// ---------- INJECTING HERE ----------
TenCrowns.GameCore.Player:isDead+b: 48 8B 40 10           - mov rax,[rax+10]
// ---------- DONE INJECTING  ----------
TenCrowns.GameCore.Player:isDead+f: 0F B6 80 A2 03 00 00  - movzx eax,byte ptr [rax+000003A2]
TenCrowns.GameCore.Player:isDead+16: 48 83 C4 08           - add rsp,08
TenCrowns.GameCore.Player:isDead+1a: C3                    - ret
18A75AF696B: 00 00                 - add [rax],al
18A75AF696D: 00 00                 - add [rax],al
18A75AF696F: 00 01                 - add [rcx],al
18A75AF6971: 04 01                 - add al,01
18A75AF6973: 00 04 02              - add [rdx+rax],al
18A75AF6976: 00 00                 - add [rax],al
18A75AF6978: 00 00                 - add [rax],al
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>4</ID>
              <Description>"Base addr."</Description>
              <ShowAsHex>1</ShowAsHex>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>808080</Color>
              <VariableType>8 Bytes</VariableType>
              <Address>i_LearnToPlay2Player_addr</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>82</ID>
              <Description>"mpCurrentData+"</Description>
              <GroupHeader>1</GroupHeader>
              <CheatEntries>
                <CheatEntry>
                  <ID>83</ID>
                  <Description>"maiYieldStockpile+"</Description>
                  <Options moHideChildren="1"/>
                  <GroupHeader>1</GroupHeader>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>74</ID>
                      <Description>"Wood*10"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>4 Bytes</VariableType>
                      <Address>[i_LearnToPlay2Player_addr]+10</Address>
                      <Offsets>
                        <Offset>50</Offset>
                        <Offset>30</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>75</ID>
                      <Description>"Stone*10"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>4 Bytes</VariableType>
                      <Address>[i_LearnToPlay2Player_addr]+10</Address>
                      <Offsets>
                        <Offset>4C</Offset>
                        <Offset>30</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>76</ID>
                      <Description>"Iron*10"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>4 Bytes</VariableType>
                      <Address>[i_LearnToPlay2Player_addr]+10</Address>
                      <Offsets>
                        <Offset>48</Offset>
                        <Offset>30</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>77</ID>
                      <Description>"Food*10"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>4 Bytes</VariableType>
                      <Address>[i_LearnToPlay2Player_addr]+10</Address>
                      <Offsets>
                        <Offset>44</Offset>
                        <Offset>30</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>78</ID>
                      <Description>"Orders*10"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>4 Bytes</VariableType>
                      <Address>[i_LearnToPlay2Player_addr]+10</Address>
                      <Offsets>
                        <Offset>40</Offset>
                        <Offset>30</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>79</ID>
                      <Description>"Money*10"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>4 Bytes</VariableType>
                      <Address>[i_LearnToPlay2Player_addr]+10</Address>
                      <Offsets>
                        <Offset>38</Offset>
                        <Offset>30</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>80</ID>
                      <Description>"Training*10"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>4 Bytes</VariableType>
                      <Address>[i_LearnToPlay2Player_addr]+10</Address>
                      <Offsets>
                        <Offset>28</Offset>
                        <Offset>30</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>81</ID>
                      <Description>"Civics*10"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>4 Bytes</VariableType>
                      <Address>[i_LearnToPlay2Player_addr]+10</Address>
                      <Offsets>
                        <Offset>24</Offset>
                        <Offset>30</Offset>
                      </Offsets>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>19</ID>
          <Description>"Min. research progress"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript Async="1">{ Game   : OldWorld.exe
  Version: 
  Date   : 2022-05-20
  Author : bbfox @ https://opencheattables.com
}

[ENABLE]

aobscanregion(INJECT_FAST_RESEARCH,TenCrownsGameCorePlayersetTechProgressProc+57,TenCrownsGameCorePlayersetTechProgressProc+a7,48 89 45 D0 49 8B CF) // should be unique
alloc(newmem,$1000,INJECT_FAST_RESEARCH)

label(code)
label(return)
label(i_min_research_prog)
newmem:
  push rbx
  push r15
  mov ebx, [r15+44] //meLanguage
  cmp ebx, -1
  je endp
  mov bl, [r15+4C] //mePlayer
  test bl, bl
  jnz endp
  mov bl, [r15+40] //mbConnectedToServer
  cmp bl, 1
  jne endp
  cmp eax, [i_min_research_prog]
  jae endp
  xor rax, rax
  mov eax, [i_min_research_prog]
  mov [rbp-28], rax

endp:
  pop r15
  pop rbx

code:
  mov [rbp-30],rax

  mov rcx,r15
  jmp return

align 10 cc
  i_min_research_prog:
  dd #1000

INJECT_FAST_RESEARCH:
  jmp newmem
  nop 2
return:
registersymbol(i_min_research_prog)
registersymbol(INJECT_FAST_RESEARCH)

[DISABLE]

INJECT_FAST_RESEARCH:
  db 48 89 45 D0 49 8B CF

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: TenCrowns.GameCore.Player:setTechProgress+66

TenCrowns.GameCore.Player:setTechProgress+3f: 0F 84 CD 00 00 00     - je TenCrowns.GameCore.Player:setTechProgress+112
TenCrowns.GameCore.Player:setTechProgress+45: 49 8B CF              - mov rcx,r15
TenCrowns.GameCore.Player:setTechProgress+48: 48 8B D7              - mov rdx,rdi
TenCrowns.GameCore.Player:setTechProgress+4b: 4C 8B C6              - mov r8,rsi
TenCrowns.GameCore.Player:setTechProgress+4e: 49 8B 07              - mov rax,[r15]
TenCrowns.GameCore.Player:setTechProgress+51: FF 90 D8 21 00 00     - call qword ptr [rax+000021D8]
TenCrowns.GameCore.Player:setTechProgress+57: 49 8B CF              - mov rcx,r15
TenCrowns.GameCore.Player:setTechProgress+5a: 48 8B D7              - mov rdx,rdi
TenCrowns.GameCore.Player:setTechProgress+5d: 49 8B 07              - mov rax,[r15]
TenCrowns.GameCore.Player:setTechProgress+60: FF 90 E8 21 00 00     - call qword ptr [rax+000021E8]
// ---------- INJECTING HERE ----------
TenCrowns.GameCore.Player:setTechProgress+66: 48 89 45 D0           - mov [rbp-30],rax
// ---------- DONE INJECTING  ----------
TenCrowns.GameCore.Player:setTechProgress+6a: 49 8B CF              - mov rcx,r15
TenCrowns.GameCore.Player:setTechProgress+6d: 49 8B 07              - mov rax,[r15]
TenCrowns.GameCore.Player:setTechProgress+70: FF 90 08 2A 00 00     - call qword ptr [rax+00002A08]
TenCrowns.GameCore.Player:setTechProgress+76: 48 8B C8              - mov rcx,rax
TenCrowns.GameCore.Player:setTechProgress+79: 48 8B 00              - mov rax,[rax]
TenCrowns.GameCore.Player:setTechProgress+7c: FF 90 D0 0F 00 00     - call qword ptr [rax+00000FD0]
TenCrowns.GameCore.Player:setTechProgress+82: 48 63 90 28 04 00 00  - movsxd  rdx,dword ptr [rax+00000428]
TenCrowns.GameCore.Player:setTechProgress+89: 49 8B CF              - mov rcx,r15
TenCrowns.GameCore.Player:setTechProgress+8c: 49 8B 07              - mov rax,[r15]
TenCrowns.GameCore.Player:setTechProgress+8f: FF 90 C8 22 00 00     - call qword ptr [rax+000022C8]
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>20</ID>
              <Description>"Min. progress*10"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>i_min_research_prog</Address>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>21</ID>
          <Description>"Unit Editor (Active: Click on player unit)"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript Async="1">{ Game   : OldWorld.exe
  Version:
  Date   : 2022-05-20
  Author : bbfox @ https://opencheattables.com
}

[ENABLE]

aobscanregion(INJECT_UNIT_EDITOR,TenCrownsGameCoreUnitgetHPProc+8,TenCrownsGameCoreUnitgetHPProc+38,48 8B 06 FF 90 38 0C 00 00 48) // should be unique
alloc(newmem,$1000,INJECT_UNIT_EDITOR)

label(code)
label(return)
label(i_unit_base_addr)
label(is_auto_set_hp)
label(is_set_setp)

newmem:
  cmp byte ptr [rsi+48], 0 //mePlayer
  jnz code

  mov [i_unit_base_addr], rsi

  push rbx
{$try}
  mov rbx, [rsi+10] //mpCurrentData
  jmp short _test1
{$except}
  xor rbx, rbx
_test1:
  test rbx, rbx
  jz endp
  cmp dword ptr [is_auto_set_hp], 1
  jne check2
  mov dword ptr [rbx+6C], 0 //miDamage

check2:
  cmp dword ptr [is_set_setp], 1
  jne check3
  mov dword ptr [rbx+80], 0 //miTurnSteps

check3:
endp:

  pop rbx


code:
  mov rax,[rsi]
  call qword ptr [rax+00000C38]
  jmp return

align 10 cc
  i_unit_base_addr:
  dq 0
  is_auto_set_hp:
  dd 1
  is_set_setp:
  dd 0

INJECT_UNIT_EDITOR:
  jmp newmem
  nop 4
return:
registersymbol(is_auto_set_hp)
registersymbol(is_set_setp)
registersymbol(i_unit_base_addr)
registersymbol(INJECT_UNIT_EDITOR)

[DISABLE]

INJECT_UNIT_EDITOR:
  db 48 8B 06 FF 90 38 0C 00 00 48

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: TenCrowns.GameCore.Unit:getHP+18

18A75AF6B8D: 00 00              - add [rax],al
18A75AF6B8F: 00 55 48           - add [rbp+48],dl
TenCrowns.GameCore.Unit:getHP+2: 8B EC              - mov ebp,esp
TenCrowns.GameCore.Unit:getHP+4: 48 83 EC 40        - sub rsp,40
TenCrowns.GameCore.Unit:getHP+8: 48 89 75 F8        - mov [rbp-08],rsi
TenCrowns.GameCore.Unit:getHP+c: 48 8B F1           - mov rsi,rcx
TenCrowns.GameCore.Unit:getHP+f: 33 C0              - xor eax,eax
TenCrowns.GameCore.Unit:getHP+11: 48 89 45 F0        - mov [rbp-10],rax
TenCrowns.GameCore.Unit:getHP+15: 48 8B CE           - mov rcx,rsi
TenCrowns.GameCore.Unit:getHP+18: 48 8B 06           - mov rax,[rsi]
// ---------- INJECTING HERE ----------
TenCrowns.GameCore.Unit:getHP+1b: FF 90 38 0C 00 00  - call qword ptr [rax+00000C38]
// ---------- DONE INJECTING  ----------
TenCrowns.GameCore.Unit:getHP+21: 48 89 45 E8        - mov [rbp-18],rax
TenCrowns.GameCore.Unit:getHP+25: 48 8B CE           - mov rcx,rsi
TenCrowns.GameCore.Unit:getHP+28: 48 8B 06           - mov rax,[rsi]
TenCrowns.GameCore.Unit:getHP+2b: FF 90 48 0F 00 00  - call qword ptr [rax+00000F48]
TenCrowns.GameCore.Unit:getHP+31: 48 8B D0           - mov rdx,rax
TenCrowns.GameCore.Unit:getHP+34: 48 8B 45 F0        - mov rax,[rbp-10]
TenCrowns.GameCore.Unit:getHP+38: 48 8B 4D E8        - mov rcx,[rbp-18]
TenCrowns.GameCore.Unit:getHP+3c: 2B CA              - sub ecx,edx
TenCrowns.GameCore.Unit:getHP+3e: 3B C1              - cmp eax,ecx
TenCrowns.GameCore.Unit:getHP+40: 0F 4C C1           - cmovl eax,ecx
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>22</ID>
              <Description>"Base addr."</Description>
              <ShowAsHex>1</ShowAsHex>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>808080</Color>
              <VariableType>8 Bytes</VariableType>
              <Address>i_unit_base_addr</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>23</ID>
              <Description>"Auto set HP?"</Description>
              <DropDownList DisplayValueAsItem="1">0:No
1:Yes
</DropDownList>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>is_auto_set_hp</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>63</ID>
              <Description>"General+"</Description>
              <Options moHideChildren="1"/>
              <GroupHeader>1</GroupHeader>
              <CheatEntries>
                <CheatEntry>
                  <ID>25</ID>
                  <Description>"miID"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[i_unit_base_addr]+40</Address>
                </CheatEntry>
                <CheatEntry>
                  <ID>26</ID>
                  <Description>"meType"</Description>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[i_unit_base_addr]+44</Address>
                </CheatEntry>
                <CheatEntry>
                  <ID>27</ID>
                  <Description>"mePlayer"</Description>
                  <VariableType>Byte</VariableType>
                  <Address>[i_unit_base_addr]+48</Address>
                </CheatEntry>
                <CheatEntry>
                  <ID>28</ID>
                  <Description>"meTribe"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Byte</VariableType>
                  <Address>[i_unit_base_addr]+49</Address>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>62</ID>
              <Description>"mpCurrentData+"</Description>
              <Options moHideChildren="1"/>
              <GroupHeader>1</GroupHeader>
              <CheatEntries>
                <CheatEntry>
                  <ID>29</ID>
                  <Description>"mulSeed"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>8 Bytes</VariableType>
                  <Address>[i_unit_base_addr]+10</Address>
                  <Offsets>
                    <Offset>58</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>30</ID>
                  <Description>"mbAlive"</Description>
                  <VariableType>Byte</VariableType>
                  <Address>[i_unit_base_addr]+10</Address>
                  <Offsets>
                    <Offset>60</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>31</ID>
                  <Description>"miTileID"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_unit_base_addr</Address>
                  <Offsets>
                    <Offset>64</Offset>
                    <Offset>10</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>32</ID>
                  <Description>"miGeneralID"</Description>
                  <ShowAsSigned>1</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[i_unit_base_addr]+10</Address>
                  <Offsets>
                    <Offset>68</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>33</ID>
                  <Description>"miDamage"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_unit_base_addr</Address>
                  <Offsets>
                    <Offset>6C</Offset>
                    <Offset>10</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>34</ID>
                  <Description>"miXP"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_unit_base_addr</Address>
                  <Offsets>
                    <Offset>70</Offset>
                    <Offset>10</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>35</ID>
                  <Description>"miLevel"</Description>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[i_unit_base_addr]+10</Address>
                  <Offsets>
                    <Offset>74</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>36</ID>
                  <Description>"miLevelPromotion"</Description>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[i_unit_base_addr]+10</Address>
                  <Offsets>
                    <Offset>78</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>37</ID>
                  <Description>"miCreateTurn"</Description>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[i_unit_base_addr]+10</Address>
                  <Offsets>
                    <Offset>7C</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>38</ID>
                  <Description>"miTurnSteps"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_unit_base_addr</Address>
                  <Offsets>
                    <Offset>80</Offset>
                    <Offset>10</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>39</ID>
                  <Description>"miFreeActions"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>i_unit_base_addr</Address>
                  <Offsets>
                    <Offset>84</Offset>
                    <Offset>10</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>40</ID>
                  <Description>"miCooldownTurns"</Description>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[i_unit_base_addr]+10</Address>
                  <Offsets>
                    <Offset>88</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>41</ID>
                  <Description>"miFortifyTurns"</Description>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[i_unit_base_addr]+10</Address>
                  <Offsets>
                    <Offset>8C</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>42</ID>
                  <Description>"miTestudoTurns"</Description>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[i_unit_base_addr]+10</Address>
                  <Offsets>
                    <Offset>90</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>43</ID>
                  <Description>"miRoutChain"</Description>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[i_unit_base_addr]+10</Address>
                  <Offsets>
                    <Offset>94</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>44</ID>
                  <Description>"miRoadMovementModifier"</Description>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[i_unit_base_addr]+10</Address>
                  <Offsets>
                    <Offset>98</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>45</ID>
                  <Description>"mbPass"</Description>
                  <VariableType>Byte</VariableType>
                  <Address>[i_unit_base_addr]+10</Address>
                  <Offsets>
                    <Offset>9C</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>46</ID>
                  <Description>"mbSleep"</Description>
                  <VariableType>Byte</VariableType>
                  <Address>[i_unit_base_addr]+10</Address>
                  <Offsets>
                    <Offset>9D</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>47</ID>
                  <Description>"mbSentry"</Description>
                  <VariableType>Byte</VariableType>
                  <Address>[i_unit_base_addr]+10</Address>
                  <Offsets>
                    <Offset>9E</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>48</ID>
                  <Description>"mbMarch"</Description>
                  <VariableType>Byte</VariableType>
                  <Address>[i_unit_base_addr]+10</Address>
                  <Offsets>
                    <Offset>9F</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>49</ID>
                  <Description>"mbUnlimbered"</Description>
                  <VariableType>Byte</VariableType>
                  <Address>[i_unit_base_addr]+10</Address>
                  <Offsets>
                    <Offset>A0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>50</ID>
                  <Description>"mbAnchored"</Description>
                  <VariableType>Byte</VariableType>
                  <Address>[i_unit_base_addr]+10</Address>
                  <Offsets>
                    <Offset>A1</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>51</ID>
                  <Description>"mbAutoHarvest"</Description>
                  <VariableType>Byte</VariableType>
                  <Address>[i_unit_base_addr]+10</Address>
                  <Offsets>
                    <Offset>A2</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>52</ID>
                  <Description>"mbLocked"</Description>
                  <VariableType>Byte</VariableType>
                  <Address>[i_unit_base_addr]+10</Address>
                  <Offsets>
                    <Offset>A3</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>53</ID>
                  <Description>"mbTempHidden"</Description>
                  <VariableType>Byte</VariableType>
                  <Address>[i_unit_base_addr]+10</Address>
                  <Offsets>
                    <Offset>A4</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>54</ID>
                  <Description>"mbAutomated"</Description>
                  <VariableType>Byte</VariableType>
                  <Address>[i_unit_base_addr]+10</Address>
                  <Offsets>
                    <Offset>A5</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>55</ID>
                  <Description>"mbCriticalHit"</Description>
                  <VariableType>Byte</VariableType>
                  <Address>[i_unit_base_addr]+10</Address>
                  <Offsets>
                    <Offset>A6</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>56</ID>
                  <Description>"meFacing"</Description>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[i_unit_base_addr]+10</Address>
                  <Offsets>
                    <Offset>A8</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>57</ID>
                  <Description>"meGender"</Description>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[i_unit_base_addr]+10</Address>
                  <Offsets>
                    <Offset>AC</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>58</ID>
                  <Description>"meOriginalTribe"</Description>
                  <VariableType>Byte</VariableType>
                  <Address>[i_unit_base_addr]+10</Address>
                  <Offsets>
                    <Offset>B0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>59</ID>
                  <Description>"meCooldown"</Description>
                  <ShowAsSigned>1</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[i_unit_base_addr]+10</Address>
                  <Offsets>
                    <Offset>B4</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>60</ID>
                  <Description>"meRebelPlayer"</Description>
                  <VariableType>Byte</VariableType>
                  <Address>[i_unit_base_addr]+10</Address>
                  <Offsets>
                    <Offset>B8</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>61</ID>
                  <Description>"meCaravanMissionTarget"</Description>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[i_unit_base_addr]+10</Address>
                  <Offsets>
                    <Offset>B9</Offset>
                  </Offsets>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>65</ID>
          <Description>"Unit: inf. step (Orders will be consumed)"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : OldWorld.exe
  Version: 
  Date   : 2022-05-20
  Author : bbfox @ https://opencheattables.com
}

[ENABLE]
aobscanregion(INJECT_MOVE_STEPS,TenCrownsGameCoreUnitsetTurnStepsProc+16,TenCrownsGameCoreUnitsetTurnStepsProc+36,48 8B 07 FF 90 80 0E 00 00 3B) // should be unique
alloc(newmem,$1000,INJECT_MOVE_STEPS)

label(code)
label(return)

newmem:
  cmp byte ptr [rdi+48], 0 //mePlayer
  jnz code
  push rbx
{$try}
  mov rbx, [rdi+18] //mpLastUpdateData
  jmp short _test1
{$except}
  xor rbx, rbx
_test1:
  test rbx, rbx
  jz endp
  mov dword ptr [rbx+80], 0 //miTurnSteps

endp:
  pop rbx

code:
  mov rax,[rdi]
  call qword ptr [rax+00000E80]
  //*******
  xor esi, esi
  //*******
  jmp return

INJECT_MOVE_STEPS:
  jmp newmem
  nop 4
return:
registersymbol(INJECT_MOVE_STEPS)

[DISABLE]

INJECT_MOVE_STEPS:
  db 48 8B 07 FF 90 80 0E 00 00

unregistersymbol(INJECT_MOVE_STEPS)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: TenCrowns.GameCore.Unit:setTurnSteps+16

18A75AF6BEA: 00 00                          - add [rax],al
18A75AF6BEC: 00 00                          - add [rax],al
18A75AF6BEE: 00 00                          - add [rax],al
TenCrownsGameCoreUnitsetTurnStepsProc: 55                             - push rbp
TenCrowns.GameCore.Unit:setTurnSteps+1: 48 8B EC                       - mov rbp,rsp
TenCrowns.GameCore.Unit:setTurnSteps+4: 48 83 EC 40                    - sub rsp,40
TenCrowns.GameCore.Unit:setTurnSteps+8: 48 89 75 F0                    - mov [rbp-10],rsi
TenCrowns.GameCore.Unit:setTurnSteps+c: 48 89 7D F8                    - mov [rbp-08],rdi
TenCrowns.GameCore.Unit:setTurnSteps+10: 48 8B F9                       - mov rdi,rcx
TenCrowns.GameCore.Unit:setTurnSteps+13: 48 8B F2                       - mov rsi,rdx
// ---------- INJECTING HERE ----------
TenCrowns.GameCore.Unit:setTurnSteps+16: 48 8B 07                       - mov rax,[rdi]
// ---------- DONE INJECTING  ----------
TenCrowns.GameCore.Unit:setTurnSteps+19: FF 90 80 0E 00 00              - call qword ptr [rax+00000E80]
TenCrowns.GameCore.Unit:setTurnSteps+1f: 3B C6                          - cmp eax,esi
TenCrowns.GameCore.Unit:setTurnSteps+21: 0F 84 6E 00 00 00              - je TenCrowns.GameCore.Unit:setTurnSteps+95
TenCrowns.GameCore.Unit:setTurnSteps+27: B8 0B 00 00 00                 - mov eax,0000000B
TenCrowns.GameCore.Unit:setTurnSteps+2c: 48 89 45 E8                    - mov [rbp-18],rax
TenCrowns.GameCore.Unit:setTurnSteps+30: 48 B9 A0 88 5C 49 8B 01 00 00  - mov rcx,0000018B495C88A0
TenCrowns.GameCore.Unit:setTurnSteps+3a: 48 8D 6D 00                    - lea rbp,[rbp+00]
TenCrowns.GameCore.Unit:setTurnSteps+3e: 49 BB 10 10 8D D9 88 01 00 00  - mov r11,System.Object:__icall_wrapper_ves_icall_object_new_specific
TenCrowns.GameCore.Unit:setTurnSteps+48: 41 FF D3                       - call r11
TenCrowns.GameCore.Unit:setTurnSteps+4b: 48 8B D0                       - mov rdx,rax
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>70</ID>
          <Description>"Set city attr. after end turn"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : OldWorld.exe
  Version: 
  Date   : 2022-05-21
  Author : bbfox @ https://opencheattables.com
}

[ENABLE]

aobscanregion(INJECT_TenCrownsGameCoreCitysetYieldProgressProc,TenCrownsGameCoreCitysetYieldProgressProc+29,TenCrownsGameCoreCitysetYieldProgressProc+5c,49 8B 07 FF 90 98 10 00 00) // should be unique
alloc(newmem,$1000,INJECT_TenCrownsGameCoreCitysetYieldProgressProc)

label(code)
label(return)
label(is_low_discontent)
label(min_culture_value)
label(min_growth_value)

newmem:
  push rbx
  push rcx
{$try}
  mov rbx, [r15+18] //mpLastUpdateData
  jmp short _test1
{$except}
  xor rbx, rbx
_test1:
  test rbx, rbx
  jz endp
  mov cl, [rbx+235] //mePlayer
  test cl, cl
  jnz endp
  mov rbx, [rbx+40] //maiYieldProgress
  cmp dword ptr [is_low_discontent], 1
  jne check2
  mov ecx, 0
  mov [rbx+30], ecx
check2:
  mov ecx, [min_growth_value]
  cmp [rbx+20], ecx
  jge check3
  mov [rbx+20], ecx
check3:
  mov ecx, [min_culture_value]
  cmp [rbx+2C], ecx
  jge check4
  mov [rbx+2C], ecx
check4:



  mov rbx, [r15+10] //mpCurrentData
  test rbx, rbx
  jz endp
  mov cl, [rbx+235] //mePlayer
  test cl, cl
  jnz endp
  mov rbx, [rbx+40]
  cmp dword ptr [is_low_discontent], 1
  jne check2_1
  mov ecx, 0
  mov [rbx+30], ecx
check2_1:
  mov ecx, [min_growth_value]
  cmp [rbx+20], ecx
  jge check3_1
  mov [rbx+20], ecx
check3_1:
  mov ecx, [min_culture_value]
  cmp [rbx+2C], ecx
  jge check4_1
  mov [rbx+2C], ecx
check4_1:


endp:
  pop rcx
  pop rbx

code:
  mov rax,[r15]
  call qword ptr [rax+00001098]
  jmp return

align 10 cc
  is_low_discontent:
  dd 1
  min_culture_value:
  dd #950
  min_growth_value:
  dd #950



INJECT_TenCrownsGameCoreCitysetYieldProgressProc:
  jmp newmem
  nop 4
return:
registersymbol(is_low_discontent)
registersymbol(min_culture_value)
registersymbol(min_growth_value)
registersymbol(INJECT_TenCrownsGameCoreCitysetYieldProgressProc)

[DISABLE]

INJECT_TenCrownsGameCoreCitysetYieldProgressProc:
  db 49 8B 07 FF 90 98 10 00 00

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: TenCrowns.GameCore.City:setYieldProgress+29

TenCrowns.GameCore.City:setYieldProgress+4: 48 83 EC 70           - sub rsp,70
TenCrowns.GameCore.City:setYieldProgress+8: 48 89 75 D0           - mov [rbp-30],rsi
TenCrowns.GameCore.City:setYieldProgress+c: 48 89 7D D8           - mov [rbp-28],rdi
TenCrowns.GameCore.City:setYieldProgress+10: 4C 89 65 E0           - mov [rbp-20],r12
TenCrowns.GameCore.City:setYieldProgress+14: 4C 89 6D E8           - mov [rbp-18],r13
TenCrowns.GameCore.City:setYieldProgress+18: 4C 89 75 F0           - mov [rbp-10],r14
TenCrowns.GameCore.City:setYieldProgress+1c: 4C 89 7D F8           - mov [rbp-08],r15
TenCrowns.GameCore.City:setYieldProgress+20: 4C 8B F9              - mov r15,rcx
TenCrowns.GameCore.City:setYieldProgress+23: 48 8B FA              - mov rdi,rdx
TenCrowns.GameCore.City:setYieldProgress+26: 49 8B F0              - mov rsi,r8
// ---------- INJECTING HERE ----------
TenCrowns.GameCore.City:setYieldProgress+29: 49 8B 07              - mov rax,[r15]
// ---------- DONE INJECTING  ----------
TenCrowns.GameCore.City:setYieldProgress+2c: FF 90 98 10 00 00     - call qword ptr [rax+00001098]
TenCrowns.GameCore.City:setYieldProgress+32: 48 8B C8              - mov rcx,rax
TenCrowns.GameCore.City:setYieldProgress+35: 48 8B D7              - mov rdx,rdi
TenCrowns.GameCore.City:setYieldProgress+38: 48 8B 00              - mov rax,[rax]
TenCrowns.GameCore.City:setYieldProgress+3b: FF 90 80 00 00 00     - call qword ptr [rax+00000080]
TenCrowns.GameCore.City:setYieldProgress+41: 0F B6 80 B3 00 00 00  - movzx eax,byte ptr [rax+000000B3]
TenCrowns.GameCore.City:setYieldProgress+48: 85 C0                 - test eax,eax
TenCrowns.GameCore.City:setYieldProgress+4a: 74 0D                 - je TenCrowns.GameCore.City:setYieldProgress+59
TenCrowns.GameCore.City:setYieldProgress+4c: 33 C0                 - xor eax,eax
TenCrowns.GameCore.City:setYieldProgress+4e: 48 8B CE              - mov rcx,rsi
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>71</ID>
              <Description>"Set low discontent? (Level unchanged)"</Description>
              <DropDownList DisplayValueAsItem="1">0:No
1:Yes
</DropDownList>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>is_low_discontent</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>72</ID>
              <Description>"Min. growth*10"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>min_growth_value</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>73</ID>
              <Description>"Min. culture*10"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>min_culture_value</Address>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>68</ID>
          <Description>"_WIP (not working)"</Description>
          <Options moHideChildren="1"/>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>67</ID>
              <Description>"Auto Assemble script"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>{ Game   : OldWorld.exe
  Version: 
  Date   : 2022-05-20
  Author : bbfox @ https://opencheattables.org
}

[ENABLE]

//aobscan(INJECT_CITY_CONSTRUCTION,89 77 24 48 8B 75 E8) // should be unique
aobscanregion(INJECT_CITY_CONSTRUCTION,TenCrownsGameCoreCitysetBuildProgressProc+93,TenCrownsGameCoreCitysetBuildProgressProc+b3,89 77 24 48 8B 75 E8) // should be unique
alloc(newmem,$1000,INJECT_CITY_CONSTRUCTION)

label(code)
label(return)

newmem:
  push rbx
  mov rbx, [r15+10]
  test rbx, rbx
  jz endp
  mov bl, [rbx+239]
  test bl, bl
  jnz endp

  cmp esi, #1000
  jge endp
  mov esi, #1000
  mov [rdi+24], esi

endp:
  pop rbx

code:
  mov [rdi+24],esi
  mov rsi,[rbp-18]
  jmp return

INJECT_CITY_CONSTRUCTION:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_CITY_CONSTRUCTION)

[DISABLE]

INJECT_CITY_CONSTRUCTION:
  db 89 77 24 48 8B 75 E8

unregistersymbol(INJECT_CITY_CONSTRUCTION)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: TenCrowns.GameCore.City:setBuildProgress+93

TenCrowns.GameCore.City:setBuildProgress+59: 4C 8B 80 60 01 00 00           - mov r8,[rax+00000160]
TenCrowns.GameCore.City:setBuildProgress+60: 4D 8B 4F 18                    - mov r9,[r15+18]
TenCrowns.GameCore.City:setBuildProgress+64: 4D 85 C9                       - test r9,r9
TenCrowns.GameCore.City:setBuildProgress+67: 0F 84 3B 00 00 00              - je TenCrowns.GameCore.City:setBuildProgress+a8
TenCrowns.GameCore.City:setBuildProgress+6d: 49 81 C1 60 01 00 00           - add r9,00000160
TenCrowns.GameCore.City:setBuildProgress+74: 49 BA C8 A9 00 7B FB 01 00 00  - mov r10,000001FB7B00A9C8
TenCrowns.GameCore.City:setBuildProgress+7e: 49 8B CF                       - mov rcx,r15
TenCrowns.GameCore.City:setBuildProgress+81: 48 8D 64 24 00                 - lea rsp,[rsp+00]
TenCrowns.GameCore.City:setBuildProgress+86: 49 BB 10 90 FD 74 FB 01 00 00  - mov r11,TenCrowns.GameCore.GameCoreObject:updateLastData
TenCrowns.GameCore.City:setBuildProgress+90: 41 FF D3                       - call r11
// ---------- INJECTING HERE ----------
TenCrowns.GameCore.City:setBuildProgress+93: 89 77 24                       - mov [rdi+24],esi
// ---------- DONE INJECTING  ----------
TenCrowns.GameCore.City:setBuildProgress+96: 48 8B 75 E8                    - mov rsi,[rbp-18]
TenCrowns.GameCore.City:setBuildProgress+9a: 48 8B 7D F0                    - mov rdi,[rbp-10]
TenCrowns.GameCore.City:setBuildProgress+9e: 4C 8B 7D F8                    - mov r15,[rbp-08]
TenCrowns.GameCore.City:setBuildProgress+a2: 48 8D 65 00                    - lea rsp,[rbp+00]
TenCrowns.GameCore.City:setBuildProgress+a6: 5D                             - pop rbp
TenCrowns.GameCore.City:setBuildProgress+a7: C3                             - ret
TenCrowns.GameCore.City:setBuildProgress+a8: BA 5C 00 00 00                 - mov edx,0000005C
TenCrowns.GameCore.City:setBuildProgress+ad: B9 A6 01 00 00                 - mov ecx,000001A6
TenCrowns.GameCore.City:setBuildProgress+b2: 48 8D 6D 00                    - lea rbp,[rbp+00]
TenCrowns.GameCore.City:setBuildProgress+b6: 49 BB D0 20 6F FA F9 01 00 00  - mov r11,000001F9FA6F20D0
}
</AssemblerScript>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>69</ID>
      <Description>"Old World v1.0.63420 (2022/10/19)  /  https://opencheattables.org  /  CE 7.4+"</Description>
      <Color>400080</Color>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
</CheatTable>
