From b06acc5a44dae7fd8523005ac382452a6866c251 Mon Sep 17 00:00:00 2001 From: Octowolve <32366759+Octowolve@users.noreply.github.com> Date: Tue, 9 Aug 2022 05:00:11 +0200 Subject: [PATCH 1/7] Add files via upload --- app/src/main/cpp/CMakeLists.txt | 10 +- app/src/main/cpp/Dobby/arm64-v8a/libdobby.a | Bin 0 -> 366194 bytes app/src/main/cpp/Dobby/armeabi-v7a/libdobby.a | Bin 0 -> 283322 bytes app/src/main/cpp/Dobby/include/dobby.h | 190 ++++++++++++++++++ app/src/main/cpp/Dobby/x86/libdobby.a | Bin 0 -> 260076 bytes app/src/main/cpp/Dobby/x86_64/libdobby.a | Bin 0 -> 324824 bytes app/src/main/cpp/Includes/Utils.h | 149 +++++--------- app/src/main/cpp/main.cpp | 11 +- 8 files changed, 256 insertions(+), 104 deletions(-) create mode 100644 app/src/main/cpp/Dobby/arm64-v8a/libdobby.a create mode 100644 app/src/main/cpp/Dobby/armeabi-v7a/libdobby.a create mode 100644 app/src/main/cpp/Dobby/include/dobby.h create mode 100644 app/src/main/cpp/Dobby/x86/libdobby.a create mode 100644 app/src/main/cpp/Dobby/x86_64/libdobby.a diff --git a/app/src/main/cpp/CMakeLists.txt b/app/src/main/cpp/CMakeLists.txt index cae7a79..06eae45 100644 --- a/app/src/main/cpp/CMakeLists.txt +++ b/app/src/main/cpp/CMakeLists.txt @@ -20,13 +20,10 @@ target_sources(${PROJECT_NAME} main.cpp Patching/Patch.cpp - Substrate/hde64.c - Substrate/SubstrateDebug.cpp - Substrate/SubstrateHook.cpp - Substrate/SubstratePosixMemory.cpp - X64Hook/And64InlineHook.cpp ) +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/Dobby/include) + set_target_properties(${PROJECT_NAME} PROPERTIES @@ -94,6 +91,9 @@ find_library( log ) +set(DOBBY_LIB ${CMAKE_CURRENT_SOURCE_DIR}/Dobby/${CMAKE_ANDROID_ARCH_ABI}/libdobby.a) + target_link_libraries(${PROJECT_NAME} ${log-lib} + ${DOBBY_LIB} ) diff --git a/app/src/main/cpp/Dobby/arm64-v8a/libdobby.a b/app/src/main/cpp/Dobby/arm64-v8a/libdobby.a new file mode 100644 index 0000000000000000000000000000000000000000..c9a4b11b7a3937b55267e355d5810e5367c83f95 GIT binary patch literal 366194 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

r}78ifrnv==ggsV(porX*f+$wR}@!o{K28 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

?_Kb3S&7-@lM`F1ywovd=*Rk3gf^f$ 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 XqS}&Qyq=5wE|8{-Uk67!sN??wH?LDC literal 0 HcmV?d00001 diff --git a/app/src/main/cpp/Dobby/include/dobby.h b/app/src/main/cpp/Dobby/include/dobby.h new file mode 100644 index 0000000..bc4c96b --- /dev/null +++ b/app/src/main/cpp/Dobby/include/dobby.h @@ -0,0 +1,190 @@ +#ifndef dobby_h +#define dobby_h + +// obfuscated interface +#if 0 +#define DobbyBuildVersion c343f74888dffad84d9ad08d9c433456 +#define DobbyHook c8dc3ffa44f22dbd10ccae213dd8b1f8 +#define DobbyInstrument b71e27bca2c362de90c1034f19d839f9 +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +void log_set_level(int level); +void log_switch_to_syslog(); +void log_switch_to_file(const char *path); + +typedef enum { + kMemoryOperationSuccess, + kMemoryOperationError, + kNotSupportAllocateExecutableMemory, + kNotEnough, + kNone +} MemoryOperationError; + +#define PLATFORM_INTERFACE_CODE_PATCH_TOOL_H +MemoryOperationError CodePatch(void *address, uint8_t *buffer, uint32_t buffer_size); + +typedef uintptr_t addr_t; +typedef uint32_t addr32_t; +typedef uint64_t addr64_t; + +#if defined(__arm64__) || defined(__aarch64__) + +#define ARM64_TMP_REG_NDX_0 17 + +// float register +typedef union _FPReg { + __int128_t q; + struct { + double d1; + double d2; + } d; + struct { + float f1; + float f2; + float f3; + float f4; + } f; +} FPReg; + +// register context +typedef struct _RegisterContext { + uint64_t dmmpy_0; // dummy placeholder + uint64_t sp; + + uint64_t dmmpy_1; // dummy placeholder + union { + uint64_t x[29]; + struct { + uint64_t x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, + x23, x24, x25, x26, x27, x28; + } regs; + } general; + + uint64_t fp; + uint64_t lr; + + union { + FPReg q[32]; + struct { + FPReg q0, q1, q2, q3, q4, q5, q6, q7; + // [!!! READ ME !!!] + // for Arm64, can't access q8 - q31, unless you enable full floating-point register pack + FPReg q8, q9, q10, q11, q12, q13, q14, q15, q16, q17, q18, q19, q20, q21, q22, q23, q24, q25, q26, q27, q28, q29, + q30, q31; + } regs; + } floating; +} RegisterContext; +#elif defined(__arm__) +typedef struct _RegisterContext { + uint32_t dummy_0; + uint32_t dummy_1; + + uint32_t dummy_2; + uint32_t sp; + + union { + uint32_t r[13]; + struct { + uint32_t r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12; + } regs; + } general; + + uint32_t lr; +} RegisterContext; +#elif defined(_M_IX86) || defined(__i386__) +typedef struct _RegisterContext { + uint32_t dummy_0; + uint32_t esp; + + uint32_t dummy_1; + uint32_t flags; + + union { + struct { + uint32_t eax, ebx, ecx, edx, ebp, esp, edi, esi; + } regs; + } general; + +} RegisterContext; +#elif defined(_M_X64) || defined(__x86_64__) +typedef struct _RegisterContext { + uint64_t dummy_0; + uint64_t rsp; + + union { + struct { + uint64_t rax, rbx, rcx, rdx, rbp, rsp, rdi, rsi, r8, r9, r10, r11, r12, r13, r14, r15; + } regs; + } general; + + uint64_t dummy_1; + uint64_t flags; +} RegisterContext; +#endif + +#define RT_FAILED -1 +#define RT_SUCCESS 0 +typedef enum _RetStatus { RS_FAILED = -1, RS_SUCCESS = 0 } RetStatus; + +typedef struct _HookEntryInfo { + int hook_id; + union { + void *target_address; + void *function_address; + void *instruction_address; + }; +} HookEntryInfo; + +// DobbyWrap <==> DobbyInstrument, so use DobbyInstrument instead of DobbyWrap +#if 0 +// wrap function with pre_call and post_call +typedef void (*PreCallTy)(RegisterContext *ctx, const HookEntryInfo *info); +typedef void (*PostCallTy)(RegisterContext *ctx, const HookEntryInfo *info); +int DobbyWrap(void *function_address, PreCallTy pre_call, PostCallTy post_call); +#endif + +// return dobby build date +const char *DobbyBuildVersion(); + +// replace function +int DobbyHook(void *address, void *replace_call, void **origin_call); + +// dynamic binary instrument for instruction +// [!!! READ ME !!!] +// for Arm64, can't access q8 - q31, unless you enable full floating-point register pack +typedef void (*DBICallTy)(RegisterContext *ctx, const HookEntryInfo *info); +int DobbyInstrument(void *address, DBICallTy dbi_call); + +// destory and restore hook +int DobbyDestroy(void *address); + +// iterate symbol table and find symbol +void *DobbySymbolResolver(const char *image_name, const char *symbol_name); + +// global offset table +int DobbyGlobalOffsetTableReplace(char *image_name, char *symbol_name, void *fake_func, void **orig_func); + +// [!!! READ ME !!!] +// for arm, Arm64, dobby will use b xxx instead of ldr absolute indirect branch +// for x64, dobby always use absolute indirect jump +#if defined(__arm__) || defined(__arm64__) || defined(__aarch64__) || defined(_M_X64) || defined(__x86_64__) +void dobby_enable_near_branch_trampoline(); +void dobby_disable_near_branch_trampoline(); +#endif + +// register linker load image callback +typedef void (*linker_load_callback_t)(const char *image_name, void *handle); +void dobby_register_image_load_callback(linker_load_callback_t func); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/app/src/main/cpp/Dobby/x86/libdobby.a b/app/src/main/cpp/Dobby/x86/libdobby.a new file mode 100644 index 0000000000000000000000000000000000000000..cd231295cc21efce8f9a92100cd029377b3e7bb4 GIT binary patch literal 260076 zcmeFa3w)eanLqwcGHsI@lTZs(s5&hJwAjncKmodOq{cbDnda^PK0L^PKy6&%5B_P@=2%owJvFGL64FP*GbMsPs{Zmtk(JRS#yWONYEAiEcbDaQEuYUmV!52p7k_8D?%9?3e68JbP3L+3Zp-yL zJOyvwVHLd1EuV8XS_OPASd{;%7_tg3TP2?>4p;@|6MWDr$n|U~w+i?~@A}_)z6`nk zT+e@btODnAbgotKTlKtnt5qC;h(0NH~;e40ZK} zo7)FFd_jvOzKyljplXfw#2Wq0gIR6?=@!_&-Cxm=OosbABjLn~P%`ZIw?qb#y{(er zmOh4@l4?sHs*082RAa0=ykelIC!EL|Wi80og+r0P?cwf*?rx+inV+^Jo3>q~FI!5a zJg-+EuUC`GuWWuzMy}N~52eD1XehESjHHF5UE!LLL-eY)P-i$&)7cm84yIzwIxCfP zq%V54?R;r=WOaSb9wkT4}! z4ypjC)`hm3)zzO(Rs*UI)YZIv>KNGoGE!Fg^{viKfRyVyayf3u;fTg8T>}0%}(7p)b-MPWbCu`dGr-!!3zeziw}2OXtrOAW&@v$kfN? z_M8ell}`Crhx=oRZ4FT6kl!B@ZMw6>bu$rcf%BkE*6AoJ=KR+nU?8Sc1|D2D>7m=;mNoC=v;x zDeOn4rovOyra&d?-ny_#4`geIcCSc;qFuf1gPHt0{IVmtX|`zUXFuU}ZS9Di*uCIhso7 zb~KAB;D?fj6Q~VZ)4SRHs3s|!oOMEwuTO;f<1uu#dcc$(&t-+GZs_Itm+MSrdp5r6GUrr^iQW62;E9$R7n=7qn)vv0Ov4EwkLVmyp9b72Wqt~15xO9EZQ1nRah5} zM?zg;T?4C{`jYWbs;gHyNDZGNP~D0Fbp4r}M8Nf}lZO=5U}};LQ;;;pIy<+q-I$_# zTodrAWVJ^IHuptWhoTr7B>a_$@aDcG+9K)P+{ z{cSL1H#RKnJV9#WLJkZ|Ca>XZ0{-?ytP2yjbpz2ZM&GzB~cyoB>vc;;M{uhX}Au)=`L2RaALgWD8PaEV94 zsc`GM_Lfe6MNkgS)}gp!Q4C?4+xgerx!xD-s1B|dLmHbQ1S6NpgAV2l3Q-ueV)C$C zWZ3MORq)E`2G7f(>LfVWOe&fG{;Ku891hreTipm0leKnE-fEk|k?>}L${Bp_Ff~{V zSQF~El`1!tJ!e!iTR~MVqp#{ng%V0vO!r2t4@gC=S=-T`=!>TOJ^`AAX25Sdwb=Ib zZ^-m*7fPjp`0J8_iO&c4M;uc?W74i{3oxWZs5Zz-Tx{Pmz(pfUk$kTfOMpf>@SGYzsy?)J3FrxL`sKo>hw*>`e4^ zW4_xPigshoQ3zKdD`Uq%JdRc^;7^IBK};=?(ypt6SBJN$$Q`5swH_oHG-57_3f*M^!&hptO6f90xBQd-+En~vDaacK(Xia~*5%teH%=Ohxf3JX>?E72!4524G(q`{!h z!4HFflV2{1%ov;d>@`h0K0jAbGjgI;wRNUce)g@3N_CjI$O1mu5*u<~8dj4XlU=~a zMmiOC&@nRtTq3f|T@`pVJd}c>#4+9vvV-J!rZEQX8cK;21!|Hf8)%9_$zR3XAW+S< zRaA~>4;NB7#7HFu!~i&nHJ8j0yB?9B%<_Xjz-plf)mR%1`m-0WMa|B)<|?MKTy(Rm zRj$>5yvrOFSQr;eve>w2zg!pnB#X4^X-h?Npz{?5)#6<059lbld>d#@Hm|$1gCnsV z>n@qJf+n5irtq0wjzwzG-%Nj%COgvfyeuQf7-`xoSEROYItzs`lT6vNVz3uZGSYm4^fsv>jR^}RH7=v#kv>u&yt92!Euj=N44Fk^&GJ)l4k`tdvO%aUO+4)OvX|#59e51h1`=$W3LV84vQtT z{3}oJoFtuyd40!Zp*yAuy@(|}4a`)X3v$`#|nX8X}jLTtd3lD}P&9&Ob zgeZ!NNNjW31FIQOP_aCs{28VNTZ|E|scg4EEoYV3g~gstJR)2;_>V9OiEZt}JRIjE zf<1kau)`_2EeReFpeEQK?(d3k!{*_oVr@e>fD=|aWKR3URye!ORArB`2I4n7sxUl` zb;+5RbYI)K1uKOzfSf)Ha_L-?P^%{N;TV!pNH02Ikv-D^W3LQ{HGu%}##khRNVv|8 ziBJgZlKu(|nATuAB$=tfc0S_TzGz?SioR5Dnh~-$P~qUs*}J_goQGExPTc5YCi#SO zq&nbdJX&(G;-O+;`{0m4rBCF}BmvPhT;R$gU?wWzWl3dGp!t+-Nw$wZW|HNj&yZ!OK0PhX z3giz^d32pp3wM`hvj|jXv=c3{gb}74O9m{Wbc2N5U1ynzhHJ8>f+rAi*YM1BTx=2N z;@vSRZ;Ym=!yEg|xp?lIQWCy0JMcZ`HjHrMCVF#ur4#n*zIGna|k3F8hab?6|xJV zJT^yPD|XoL!m3zR<_0D9GtDj2*7iXx9vaCKdz;O=MY9tW!1iJaV=ZJePKZH=LOsw{ zq@H`Ht=QiSVg*=IaI-*c$AUN2VsL%XDTE?zWw0!5n@+|<|ALhfsBbHFAgPU&L1}CD z2Z9)0VlgFr%|Iw39oJ1F9~cFoJtA#buT5eDSPg9$Rs_`EOc)(Inh<4QbF*Yyr2>Z$ zr=)0scgM=$x=XY7h8fLYLaHYd{m&_P1vcr!m@TkX>O~8QlgEA641~qrP$;ok6z?Ta zViq#X+^=(c%0i;K8@Nlti9! zcvXsHR}gADM|Y^A*o4ERYikf^Z+c}-8C>hs+1E1aYT3Rq9Vc7oRB?&|ty60_eLbxk zL!o4XywIQN)goIp)4XD$vcNR3~&Vr7{pvr_b9SyZQM9@;+aEYDXj6J;ruYK$Yz%evxmmT~$x zppjphj&^n#>AT9c{`Ub(C{ypE%386sL~af2;KCJ?V^tp3Or%1EMH0jyNi}oCgh+ zAGoK`w)Zc^`%QgA%2DWoI5WC56^lhO{rK|SQgOCNdScM-$f#IC=aD=zxKy5JSgLj! zbR=@$QhTN=3Ut6$8Ry=n3fmiwU{{a%ZfBg@HZ|DUUSL>VITcGs__X>$XQm1(4|J%* zI6Cd^DrcpqGrLpbz>Xtl#m28rL0VCu)Kf{&EjPE8;?+6K2BAE9drQTeXM-w3b;KN+ zif*4n$t*DJ1vqzO6nDoifpXEM^|@>kW>c|27KXx05bUv(wk@Ar$h{Mq<#n*G7% zwicJmWohHG3avC|SvR|-Po)5htT$x%T2{x%vqeYgcja{t7XpktTe4?__?|KG|6%^O zZ<%@7x-BP;zI@`uiID@Ik!Rf|P5WiGSGgd$a>08&SDu@^@Z9bT&rQDfLeFe#`Q;ei zB$p=!qIiE``PNwC>g8f>Mg1pZ19&}Sc~>kEUe4D6T93v z40n6jG%Q%Kz_RcjQXGV}pS62r7-4(SJ zVP9oWPpvQ96$po`>iiY{D!;!PtnJjbwQX1}(~=yFE=G~z!UbVm+t*pH9YwCQOWf{V zP>g!G;?f6U*7Luiw5YMPe59bcbZ$dwd28wXj#AHxQg1`)qK48XD@uK1lW$} z4GIUaO(FFAY8$gGN^`%$nVvZXh1M*G|63e*3GmrPmUTK{@l4A)n-Izm{jrJ*ENdyC z8P$xP(i`qi1w3f9kLvxp7muy)ymI^Oh zx#sev;!vc8*H$CT!o9&Boa7H%nW|3~SQNCDp=BWqu54SoqM;}@`zs!$pn66>jv#rr) zCy<%YO>MN5kPnJT7}YO%}h?ixGq7?FwAJoEn z0T1~F@X*|XXS=Y;Kl<@`qk=x^Y?Z>Xh#tyly5+zPXX^~;m}#_MqoUK^^I*ZnEVj|< z75Zqq;#L);gK{$+ggPBvuxnnhS}7pofQ(PmF>jWuIRkqX8vhjiPj!{NNoG3z&!<%4 zWZ5l3S;FB|E3H~-WWHfMhMn!GYFE-NilgDkoZ+F3$ZRVNZj)Q7pHLy&T!kW{j%lNc zQ0NWqQ`JW{iKNr@f@PnpUQqWmZ&7)fFFDYL8E+p~wC} zEk;u`Q;(zCR0e51o@yL5*5oZeR6iF|S%>N=9DwL|57p0;m{$T1LC>N3MI3v%<)~{* z(Piywur=?>hcAy_9gS^`o~ky>0KB^=MtXk3g#puDYcn+NWxFSVAUUJ#e81fHa~S0+PlY2e4mcrF4!1KCfu?IN+1OsSDbW z4!DFW5W(1&o&T+sP z+%zv(t>1y)Fd*Y2FFwqhkX|2@)6gl$0hN`3X}6!pmGbNMbD^DDL=1!W(miJFKl-+Z z)A&fOl`8a)KRhzzw#sf9S3Vj3WuH;b3@_-EgXDL^_|O~ntU7VScv;gUqmMlN!eN_- z@Ne@Lz3}*G5gj$&AWP}!v>UG*FC;C(jji{(_Y5<)M+-(TDLS-56iQxtP3t<; zAPJrGZp2?cR_`7w8g+Y5Tvk4Epy8qD^u(xbN zA}~%|x~Bj6I)&rPsb=~zM}#>w#uJ@YzP^g}P4`u-uQYViZHNv>wCIl8-plSJ86HNlN#5l(zw}jvmex2p#61eYh0J0#>=Ed{TEuNIq)|*aII0& zxlpWrq)7_J>Whh=X_XsUz_PeO*t!<( zG}OO21!dM31*Y-StnVrLCH+jxr*Mu9=3t>`tHN1Q9M9dOaF*1Zf*ICF70#TVQ{cAl zRQbpBpH^_Tb*;j=?sQtgS=M=u{C%&&nb)Tk%#(dNijnJL#TTf)9XQw0h*Qqlz%_IO zcOml_pX*HN?xOI-7t4O$waBtOzzdK!m4t|M6(Is&MTkLEoDk}~lMtDEDgqq+Cp$0vS=Tn&#A!C>ZGkzwGj0aV<1h9#_)cjK{~Q+>W@Ku%)cP1&4j*3VDB>^{ zSshCvwg}n59XDcbNsBurZC?g$*2Rxzq{}u5jNoNJlxYZ zG!*LW8}$2eE)Sa!$)vd93g_{9V$E`@D3)V6XH3Mfwu@ldDI=wvtnnR(JOtq2U?tvy zbyO%Z-a{>(o{u6t9qQKn%VM{^B`OuBlwv0c`NZ79uN z2VFbd*gk8c>GnD3;vg`4U`=<}K{pIKw!hkFx(gh1dqJR@VnM3u9&x01AAHT8UekTi zK{pP%T=9Mz?ugpXzr(Pzf7C|vtA&F}cLX@P4%=ut=D#^oSr2CPTY!i8!}35;S}!@$ zTMpao)i?-J0JJ>>#z%;RE8;%m6jN6znFy6!=k|1$a0@()|7bc9Y+x zJpBG1bSA$Y20xClG(YxjCcnKv7_T;3KGK+Uw*kpjZpR&T`||Mnpi>V(NB-LAcsm?) zhx5?2qYg5>u8Q9QqIr-f(@VqkPcvV3B44P_3-A!?d>K^y5WO(Zfgi^^+GyUNbi`YP z0A~Ja`^Oyde#+37v%yryd!b6NPeoKteoUA$wDM_GblQC$_?t!tIi~0UgdyF{+7m81 zUw#GxGhgn4e7oSk01wyyw0uPfuX(}Qx&t2jR2&?sla6__++XW4&D47_)rx%THEil0 zjcij-?Zss7n9ID;{~m1toX%d1-Lb1MNm= zf>zfJmVd6gLH*ObVa>ZA!}U&6m-Fq%EU!4F%O`WPe}? zK-^AUZZzc4`bPM_q01K`-f8J_b>=4dRPD0AszNo)Q@6_=)tTsaxg?_&V(oWB`%z|@ zI-)g}@|NS&R_`%5ofvehjY2w|NO|X{UFN<|Eg|O!KU(P(;R;)dMh>`1cxt_N()HR} zWVT+frOt4Dv!S#EN2YEp)Q6{VNUFJXexul3Y%HDEr0pJ%Z)6x4FaL6crL$@7HIS*- zCTCbbFzDHib6l(q@jV&=B)&}Hl!t3qFDjgAdbmp3z%;w)Y!3ANl9Nelk=kn$fIeRM?q({r7t6&7a9ent(Sw2_Nm4N zzje^n0~fjtNW*fc`4t{>jC%m_a?H=Nr#x)FI9^|b$BcIvxX^b%8qJSxCcme^PwN;| z%I0?^?BwUeLvsh7T;rB*xa+i&?k*EC{QgPV5uGrk8&Y-xx3Yg8(3J04Lq58bj_G|I zkLCrdn#3?lhS2>g`Uh#JvSX! z8Kmc?vol6on44a)VdU9z$Mn>T(?*`L+R=;UBy;589~K|f2+lVh!db0j$WJi?wcS%V zoa9yk4wSzycxq0HHY}ydl<7~>w`6Z4AShJy99zZuL&Qd~Duy+t*640#h%Lp-$_5gBT z$@ygVu4eXDwnQl`1!R0W9p$hu_g7^sdQUyB zIQ1^gU(&eZ)z0+(?~IRY^nh0klBd$+%DU;lOS6v~{V;k=ajso!rTgV#P*K7r%U<)2 zcs+;QUe+)m~=9bMu*ad>QulzT2K8a-naLkp~J;{^4d5mw{TnV=(4`~1;E z+FCyPjj@@eYA<&k9V@lNl#I0$jYhmhqdU?=5m&Tm^tq7(B^Zyq_u`Ty#*i+Eg}1IRhcqJx%3a6DRs$_+zx>2y zCBPBE6&p?r6zNrd*9Wj*FQu`g>A(xLq7z*A*Bb=cW4N+= zrF@>TSx6}*8!s3u6Bz~cvXZftMLnZFIF7CaA30dF#mP4&+yS9%c5Vkda&zb8#{G{; z(l;_*d?vcV9@LIbZ0MAwQ&UePz;jZJmf;5xz*;u-yq14yH9Ui_OFYS%`ZTUvNE$^`` z{KOer0PAA@NuHF-9+EGD^DXp);aE2vZ}!-owBw|KY2=?RV>Yb^-p`T-#^9R~H(Swi z4qRZkhEGE`uX59RNw?Y@Zfy=XqNm{@Ud!q5P?5JoCOrg=g9GOuT;A zyiwpKc6m$xQmYE?G%WLlIJ5uH0@L`J)-w)y?sMQzDSGPBLLBb?qrwR&|BVWl{7<*I zmqNpw=b88s2fu^LpZdfz@}F1u5`oXNu6EG(I`WfsMH|Nd6$kxi9rR_OnTYdag$pa-WVzmKSsp?N2azn-S!$0>HD<1JrJlJKD!vOqL^@;w>mkqJ zGe4jvV!xJW{8PkdSk@zinB+Z6h>6ZTM^IRj(`1cZ`y6_zup7GyH2%$NT;u(L( zyQz*{Rr5RM-4UF~w~t8YxU1Uvo!5*>x3llmpJbnmVaA2plM(uzA4;E$_+&5oHm+~h zH_!|A#^H5y-`kl`k%j6b^6PV6@r?uAtvRyOTDBSA!iZbhFa1Wh=DWlkS0(CO=%>2x zJjWgClNOlXeaCtG$&%|ApT|*Otd}1+bbJ+H(%_lf_>RNt*x69gs$$g+8>-0arahmL#>;-_y zu8dyU*q9-g4>ft(W(C?2qxrOcigw~r!vRf$FjcV7j^;&}N(D7wTSybcW75?FXTPQm z+eR9m12ETU?m|0N3pcijjGp}9WW5y#`Kc~LyqBb!O1Mfo!Ws~m@p3FA#(wmK(eYM* z&W!h`h=hKOmub`S4m$Y7!H@m1Hkx0;!S8qAN4d$5Q1e@b@TPqGfUuv@M)PA^ZOZqu z!H**y&5viHO@7RvM$HUR^DA-4$MZZ|KK56dAG(hWe(eaCOFqVF%2#6WV?U|+eG-K1 z@3naj5$Je%cN6LOd=HOE2jZi-4N#9?iR*MY`5ia-p-Z*-Er;FY$2C#Lt4%(BEPO4W z7&jmQ4;whX5{C?LsN@zxz?UPtLP+^ zW!3A5lmmIt%vJKKXaybXur@jv^Hs>FJaz)v1iKf{LOfc&OF*Z2!P%OReAx>Jvefy) zGFk4gt4Z%@Pv;&dy~H>5KHzOie%Y3vdUxQpe0P9*Kl<8QdEsc*;DE(GE%SfoymjCt z&u8c@?P=WQ#5oMjDP6_|m{~VR%DmD49&G`f?l~hvmtXZ64X#h1`Lhkr8<}GbRg|JF zq#aG8F!{!unCfP<^`y(y*0Vj;yvdO7xR^$x+^;s5pt9m*+Gc;C zMr{mE-8R>&4AT0XbvIe=Ga8eu$IE5(=I;KzD+iM|78Y#mN*%s%z{z*KjW zErK3!O^2q1f0L}?QeRe)28Qc6xr{zfLBCw*H_R|xClxE`%8~rfQ+D#_`TxrlPTB19 z8BksiaGtwpBcz@=*D&(EfN!3__Xk?~hWO#>wooU&J&14mWlrXE9@ZBm_Ke!>Bjp`` zS$$;g2{c5Wt{DTN+1BtrtuGsaS*K|T`ApT;Th?8^Kc>%15&Wk2#*@+B9WiI+z}vjt|2Q zFWb0*#DOtwq~XJG%LCO_C(~x0Iye89bJkdo0bcESiVEm~Str^5H^NOD>I@AbpQ-Ak zvu?cF{{JGxY3g$R{=fF5=4SpH{SwI3{r}6V0_y%h>;1vJ{XdRWuwu$16}6-B?7kkp zmOQ^O|0wPH9mE}8pFRUIdQfib8^EJhv zr!K*Pj3W5?MjslpM%zHco9gD`;DK8mW8moxb)W&K5X1=$!Al(&9X&d7V7@q_;s3?N zZ%)0-IQ?^@0T${cV-c<+ts)J~KK|LXVxQfY-e<4GZa4`t%|Qd5&N#)n{`(6fJo|)Q z4qUI>G94VZyiqj>l$GNe-99iF!?Ul|hB((xW@CMDAt3K`7yEj^#kv$avnJ*K9zrxO zpC&|o^8jXyi>7%lb&BCr@IBn5$s8T&_Xo{S)%fdL@J)?K-}Z1zBG%u~-HoqGB%9S| zsr|+mZ2UPsU)?8mBicjwGP7gfqCwsOYQ}`SK&LspkL%Ku zhfQ-4o>^dK@*9TRK0MlJeuW@1`9;8lGLs+F(&o1ecJlM#q45F9HO8xfAL+EIH9IRf zYQG1SU3-%*r2_$~E=JtXYszbn%KGN`EnwMAjPikIV>7V{N z!&}v2wC)$@*{MauFb_*$|I2=E$x%A!e(tM8Za6XEMMpLlR@qe^8kKJ`uwo1~JHAiGho4cizb8Qr<-w0v;T#MgO>Hw8cGoZP947B*QaX`fJOj z*yx2@Jz&N+F-|;=Kz0I=w0iWxI3PJ|H0B;_DVL=3q~wXmaZGaJ68TXWq!))TDI{z~ zw#|*VK1vqC6crmdJyc_Uj}Qizd9I zHl~kf;?yL9iA;iZqF}cwxMti_Xno2x_sK%*0oT$W7Fx$#QVj7sMWmufZ3k)^=_QccpOW3W#ghcF1PE zwjGUi2PPjm?qZQ&oZzvge7yAmwG58BgTVE@eg0}0O*WV`ioT^e zXK2SKuZ+$Kcbb}AQ_kR#*k;_aiu}WjE6C5z8OIq-QEHm>C!YPvS$221PvT`xmrOpn z=WNrVZ^HMuR5q}{{M9U7^%X<$wL)Bi+-LDB*-)@EytywLL~pHUf$~EmJXsdq4EIPR zXse8MlBeA!)2v$is9`J;fo`FAo7*o9R5%oo`Q3wWj9Nxvoy1(UGntg1H#36!{TyTj zyEq0(;v!t3s`#Rr^H3Z|4zHuhXK%6d|?2sL5+_cQM&>k2~ptT5fH*Pqf`4EQn zns(g-RZ3_3pZy2TIuMz3^>EWX=+8Em<`5o}t{pi09Bnk+!*DR?dPmUaJP9{6rS=?- z6NF6&OMaR~H!PcgYoq1+1c=Odd7kMUO$4ap{V0gcc<)0b^kcjbLB!2?zvYZAjCBAqrzbOM!w_S*otXjkG{q@(_6 zql2vjfmy!CAsl6(d>lJy`MwJ}&5Jw^BVRZsVH`SNSa!=RD*Pw4?^LZmgENh@CwHpE z$vS-M9Mx-ij%t$6bZ0GLvizrGE(Q_Q*f!jMYO}Gl9vq&b z(rLqeCDUlM367>t=iPs*sMar<3)P z;$5_7jJ+wm*4wsKce+wnOO%axkmgh6!jP-xp-`q8*j<4abrcg3H%_72qKpMz;``pxRT7~N4R0lx5?X%Mc<1B zEk!=D-rEMpRdC$lU83HzXRs!($SG{p@-2KV>`w0i1j2IhJ3&xS24mRP-RT{N&Gpde zdhf=%hstiOM`8P)KtK;%u0mdTZ3bAA<}&4p$IGr5FI&9RyB7fohXri%#>*Brc{d%} z>AeFEG_c+#EW&!HvSKZ{9{jn_?4f|bH-W84W!XKqcs~NV;g{lN*AKw5^NFErcCGim zt?X-ed2a;{;zgPmklDu72@%-zE4!!7`?ley%Z48vF1zPZB*R{ZHmM3DUhm>RVoBfj zJ@y>9jUIN-ySN~^aZJWZDl-&$_kkt9!VCb713j{TiRzyK3YK%k?X2$3;!vjjS_B0&7{>_22sAi4%$~ zGISI31*}-IqrV#cmegyhf^T0m+UtfMkN#1*+In?Si@WTm&*0T-SDHS=pOuH{O<(_JMCiaK3O zOE$Sy7QHX+{zjMEH*>wlNt^554IFw^E!M2Dl_eA4< zT9Q0(Z01<~d{I?#VaQ>zRrh_JSsG4!q_j%TYI-fxyWY<@ zWw>01#Ut!f*?LhHi|5Mwcz!nuJTH+eU}m65z*`+g3pL4*c1&W#3~$`bDbE=X=8L zTPCL`Dd*Odi*{}$6P73__W)%Y=*~Svo}H$hYed*K683q3+-jja)6XdY?R?LZaDjs7 z0J4neb{?Mdm3=Yb149pPn8aT=Djuy|9OZ1R~`I6r-=bc|9c1j&lnS7 z`u8Y$>N@vTTNFQums^iH!vDPk=Q=zM>-9ox6#mE|&s#G1m0E8!ijeX5JLo6KOd0yK z4rxQYStEeN^><|HOuSE}kL|)jd>HgC3O^$7S=O13{A*GEY!?<5oG$J%fmImtGsF}8 z>s0#L7Az?6TmS9gx6zTl^W&k`bY9wS_4Sw{$)lh%^%6bW~7-hxt!8|vB&t;2q1Lpy{TX7zOIP$WZ5KoJ8zm#y5WnD&h zgujvy;lqTG?E~~j_z~g=zlRXd-zoRc5+eMAgpIh{hY%gkVM25Q#{encuNBUf3zi@I zIp#n27Ylsy>+{PuUEl1Ao=O=Y)=^f`GAc7Lee2TvP8tc5s>t(-;9s+ z?iRIYR|Pw8SDhLgpc0bK#g3VTV}AE{H;$@8Fn% z=Rh_QqEYHo_+5m^#Bo9t`gaJ?U>qep&9Yu5L}i}g0z~*Fgcua@{ubhsog3M{-SIWp zd>?G)QGhIB`I%;M7GCVq*BIv%or-S%*JrZ~;>|l;o)$=2>>8I|y>!U}fIn zlxO-WzTlj3T1642=b?E?{QmZ2c%VBbUKE|=Q_umGhO9I;r9ToK>Wn2)#%){alSw&} zE>9R`T^wb+nF@;Zhm$j=y6ICP%pLjd<)=^d@LeZ|?_Q7_o zKH}I{hd+q3OTl2zK(s3uMAO<9@HxVYWv86ssJzY!pqG&Rm5#S{GHSzQRM||$x5RU= zTji=r;w$DPPd6XgA2HANpCn$B(X{VZqmJo-=KE2v;GHI3+?S(MY|c7}R+HsYt&gTv zXv=GVe9d_r4kN?qn+-F#CXhBBjK_*OU{VG{3t{drz!(QM40naWFgwF=Ohq#cekNT# z+&FL72E!R)c7U!}I|9~Xd^3)K94k^D2B8@96hA~SOfB#`l$}7c=9wq3u+3v{kmEY? z<9Lg7e9qMAPz;ZN-x0WLqvd-O{Dpjq?l{I>y&xjLS$N2c@;T#u67kZVbQn6?@!o>8 ziF{G~#*vXAwT+I~$?u54?;L~QCfH4Whry5WYLk!OQG*|bvbKC@I^;VtO@7ZA{JaLg zdI!JfrpfO(_;D!9{PP+7x{z;XdRYiuf6zv!H|Qw0O&A~7gNXc4gn7%&jYxI8m=f9f z!hLQt-eJTWgugaA-isaa-iCN7KjTG}${TOF5pT1iqi#KlKQrDVh<5?pwbAi@19YaI z9!9*Jw=iBYuL7iAJcRJ%7r;Z~g5zhURpNBR!i+Gm+*M{Xm^9#_y3kt(Oyc>^r+W}c-q|c{+y@;3ckPcIN zJKi$%Gp7EvgE`j~wV@x4v)tlFI2z!YKakpnGSKj@Ml&6^8u_RDw_N$R z!-y9_?0CPc+5;VL1k81wF+Od79CT*9`@lr!OQoVC{tZnHh?*VPBuFSiU@0`K0{HJ5s??7E`^H+P8xU#B7D6{%g zI-U2-Wkpq>Rvx;X`pji~L}m}$0VYc!rba?&a?uHWO#iq#&HMaZRrT+2ZhwmN!!_2KC z51=7}_iw*0WqP6P`d++Ue~f?d;2E2vgzvs?Kcm1|y7JxcQMn~KAnkVG#Jt__nW;FR zX1FKaB8}^ch99~YQNJ`R`Kz+8Jv6rSI3Ri8xcZ6=6LtHCW-lnf5AF#XdDJ~xI%bU=uTPyma@#^u#^|!0zZf`U_{5BX(+$L+|E@LjcfIc|yEeRapswdo3w9*HYc4XGiAYr-qX(`T zesR`7WakqDZb*yspRRqp>!Q5uhM)Zj%J*5ylnyfRtR$gyIi2SqyzMaz;ph6qz18s33K4_rDih=7H||2}iqwQso(V+m{GOo7aw zn9Y2fpge_qaf_KUuXz7x>CPu)F{jE9S=mR%$Bz`cg|I5u_FPu7`0y@#ChFM|92{Lz zcF%h6{Lw$OizAsM2g)IWXSBtmZ=N8PD5*UkLLAnfkMSSmy$etK2D!TGv zCT4^@_l${u!N0xt4?r@L;x@_JFLR`bDpivps^+?B3{BO->D4 zSGzGvF4~=HpD}#!)5Cw7S9a5v!2tRB@^gfShm^SK0OEh;e-wSJ>WsdhJb!oFn&#pCpB{b@MfiJAeg(z%=-ACd-&{X9@$^?b$NoRT zphYp5b3ammaL2iozcF#AV0G!NG0q&;)P4wzO!!JFTY8ig%H>p*_Fa5UchI2tBN^YX%{(2I=>wXVG z?fsm6P5AF;M>ui8{lf(3+)r(vn14TKa}%cvMVct(N^|-h2=r2mijS4uQ@-na!~gwU z{qUb4`bL!VDx9$X)}9s@{dbo>zrQF|I9yh~Yi;GR+YwwO44u`vAAHNiJG7_*3Vz?( zU0%;*E|kgKnvh9EKqHCY74%Hs3Z}0K=^JR3X?sAX?O$Zt?viQy2bs1{%d~w=rfsiG z+o(+2^&)M@hJ^evAG?J0-bH2ipeC0MRPAXmkmxGc9(U{5-J+#0yZ1ryVay(0Nj3H$ zkCa$AQN3s92q(@Hi>6CicJHFmqi7>W4~_iKyGBmTEgLx>dGCE!>b#5Jlv=pEKn&k7 zuGus9gZqCnW6v#Erb9Nm>&GguFS|E#{cI}auC-O8TkFg2#mh83qbpa9;gyY*O+BNr zOLnhp!uU)K&Bvg;WjF0cU}K1$`~Z%3qfAORTw(Xq2qVVJm5B8IM$+HDKY4yO9h*AV zg2j)Fu0$^=?~~fSvPA^OSlAAnczE~9Rl@Z#)AgSw{&n}-7Bz3c7}=gTlwH4>4a(Y8 z(y#2MexMotE8%eL3jF2icOOO$o=m^XJ%HnrJpVR{AH)6Y6#n;2;Xhg2uczM=kn0C{ z4&XV0hhu@s;``MU{!dTg|HCQ#CyV>_^m`t1{Sgl*cy8pwYyUcfV_%!EIGFp~%epLw zORzuIo#@90syc-<{_3TjeJM{!-cRX)XV`-a!#&A?cpQf_!rim87(@s9JHrX{y@*6O z)YTj6jD+pCBAk)N;$qi5_bU`qB5?pCSZ$eDjTH$ctVl9qb%wgF;i zL^x&jMF+dBt(^i4bO$m*$E}`le}B>nBUn5ftmux$wt`@AAf6S#(j00iQF!b?~Nx?;Q=$5LQxqCc6i65Xj}7yhL^ z-rvP^@P(3uunhI3tS-b66aP^OIwc~(c8N&P8CG5rA})lDN)VTb1jsY`NDxt>0O8o5 zyc+T+uSqZ&2@SjAz(Ub(`5y&{CGa;S{-G?e_YW}Nm=j2DH!a=QFiVmHo%HQvpzgjw z+CxM5kITI7+^TI`yS1(R8Y>>^x;mNM+G)kR`s15Z8iH8hAO*pIAP{_dZ9cs=pI)0! zwy#qaTFiJF2QT!E|zLg@@@HJA3@HJA3@HO3*(5Ef^@tB1_ln?$pg;o4- z7gq6)q9KI@NnscNabXqz5n&boC<;;oB*Uo~|G*pnox&>qw+pNI2UAi=fDDIS{Kth= z{6~aU{7a_f9Un;c276Evu{c3je4ww}>P%V5-Uy2Vo|~m7KqA=>FR<-RFdL1mtFrn~ z^iZhyP*?9}RL&#_QAxouf`G{K?VS+;wh|a2eHmyif^}J)$sRlj(kF+kA*dEPQ)!^D zsXi-?LpurNKQ6igU`YzUG}k%=-x`XeloJuq;U8(iKUJ!m3ISp10e(<*lqmFbAgLie z`l16sq3j}r@Iy%G8vH^-$}bAf!OaYo2#ILW9?^wF1CibV1%=*4Q&hTvP8Ew_gk*pu zmJo5!15v0L2vD&QLDs3WfUdAb&#<3>hLJ@QKCZ$Q1(lZ*A!s+KwR1LpE3N>bjaN z{D?Om4fEgXjj#vn%80!JJvKTz)b_4OA0RqOsCY7!*|1b*gsHL;u?QY?nO%Tg=pTF0 zob>{R05K}SD8-6~H?tpNKV$XrFB$1Zd&cI7mIy3^;e_}@wr!?gAKht-(3b3H-trG4 zh)8_1)iac24)qKrkndpA-9OZY<|&zyFwzr_c0mUuNJr& zVGpG399Gx?@HNuNK(Y_9+fFFMzMj5tH-?YG1cf2JfVT(?)_hMlVxI*pQE z^31kNJ|@pi2LD%PZ|+}-e3oHN`z6~M8zsYeqrXCXb7xxqzec+(YnlJ~?9GEK?KX<` z)=o)Jdt=+=Ve|1c-A{tQYzK@sv$=C6N+2zdwy)g2I zjfTC+u&*%e9qnoQ6^6Z|HSOMH*y$P!-e$CKugspo2kFY>Id1TOJ?uve{;%G?TC{a0 zA9>VI^)KB1(0$FTw#$6;7<^t2d%eN`)!U`al22a!@64!=cKg%N#(F39xnW}~dJJio zJWab$f9tj7FL|1Ay|(;K`KA37|Li>Zzm)&4cl-S3;V|dl^_Ak;d`xj}K{flxJ z{flxJeTuZp{zclQ{L=n<@HchIw67do9nx(J`t)vXH)*D0XA2b!O8Gf9Xx%RLnXOoc zyBbrO{ql6|mk2(R=U=0}xl@dzL;{#Q7*k1mraMxp-E)uk^0kxs+*ju5Uz!Iy%ylQb z-|5(zUXS989pft@Cv93cUcd2`h$>?ZssW>09WQOK)ZWmx*62^y+UZ@}*?@O?WxQ(# zSqrmem`=R;`fGC6Jk2)hF=sL7IHJA`i-tzlBWZ8NY(a-L z`Q+oDL1VNnrn_lx?(~C7%Wv2_8&SgAJ#9C`{w3H?w#{_tvz@oCMty z-K@W+3=M5;^@TcE4I9(;rj64%l&JAHbY=u`BsJ|ARXEcs;HWw~%ANY^PzGr7B2F4;Wu#WlIR$y+MS5?b$b?7)>QecEB&5M+_u&2!B;^N z6@l71U&UgN__~@0#|HRWJ5S9r-?D&bQEv*z+%8m8#0C;w;bl1C zw>%Y#MQ{ePFS=ZY_xURPcxrsrzM4Q~0B3NjYW-E=%8;+JqRv+n4%PX5m4RCS;*;VX zi469?7VqB9Rhi=2zRq&(C~}=$;&$&s2Jx)^eC4O#aVM=$xosrGoxnF@XMuF9l>39q zy`i+Ep|t!)_f3T(1zx!ID*w$n{F_VXf);nT!f&slTga7V`_5tU{d&hYPYd@Il(w~% zwy!F!Usu|8d1-rd>H3D!jSZz&ttj0D$HvlCD@)r}2m;Hh2fJq#@4E@X+xR|eK~L%Y zj#5u^skfnYQA6pH6{WsarR9yKb61znYbc$+LVP%t>F_Cq65p=3<&){u=~x81jf!pu zp-q>4cXAxwI~DD-Q>Xbq3rd@sOIJ0Nwl#=^y*m>vxT&EZ&v_$~#kBDBVLS8``>IM5g)g2cy}*b@+OClo|eChy8Q|{}kkT zC*&1_l|1+pW)ufO@@CA^7a`1zkCDk zTQ&UqA@4N?{wy+PD{w8()v)lMWu0F?M?^Oo{(Z3T!K2IL9}wTAkXMKQ9_0Nn{85CW zd@q8$9|f-EeE{-)61e8ygz&cm*Wn+Ayk7v0p9sGK@_xy{_aop}fNOsB2zW1WWSgM> zIy?><{_lkS-|*=8_&yxJzo^515%T^A{P7dv%OUUg4g5op_eTc)X2|#q7;r{^S4H(q$uFIGA z@QfMwJ7NDY9v%K)A@3)E<0r!ZJv?}yu};qgkoPn2)cigHc|T|1ZwBE%1K0d+hrGPE z-A+H`ebB)F9)dn(;2to3#K1p;fZsOox5EA%JUafrgS<}x*YSBkABVg;zS)rX8N+`& zWRU{wD;S2OKO!etrP* z@~$TQ1pXQL4?mdI&;5vWrgZv)=uG3co!EXSr`QHP}&A=g+kiQD{4;l1#gVD!;BU<5q4J^A2 z`ObiRpM$@S??(84(Fi{S^8E{N9p8tL-wzn{rI7b)2K^q$d(faSfxO=`=*Ph5ao|uR zArE!sDZ_shf*djM=TLwC2J-6int=ZDUUeP*O33>wgZ_u0|E+;{L*5q*`ezW3-`Lja z?S#BD4g6{9FL2F&6YOk*HT{pFxNkP__rc>W2EHBf@g9CH@4rFb1@PDU?t{GN8T9`Q zc`pDC5k-E~A-vC^zYl^`8U8hp_afl<3Ho~=?+PGVUec~M@VgN)@4*LKL0y;49L6Hz;{C49l*7`rC@x$f$ssoUBI%YqrvYP=Y~(pZ7(5)xiG~f`1*jj{gOO=S#gh{g*)A1Mr7fLjHe- zyiXYP%i!^S1HTXQJ_THduYtTrfa~<*3tiT)4F4*`_ge$M8}jnIAX=UZSY9^puRvbj z@u$mk5Pp1rRLA!=$U6)EI{b$aafyMKLf+F1{8q?&hQaSl$UEP_KMHvl8u;n3FEa33 zAjmQUe-k3EH1NNLycZhy@8Q4S(BBi#*LuT026kK>v|3@G%*oyN1G331o{yKlxg3-;u zb^PCkyn7A*jga>v2L64>`w4@70~mkWz`qN5KWotQ8yKH6aE@i~0uC}E&pOEaFTl0@ z-$4A2!B5NkH1y$d$PW@hUyc5Qulj5G{}Ji=nt`8-^gIk4Y^A<~-$CFyean!ZZyNYN zAwAzV!Y@I@|6$-?grNN1wwCV#SpLfh|9LR}iGjC39==lywj%yFK;Hj0{NE4%p99zB z{}L>`i&4wB6Y{=n;DwNvnW6o!2V=K^yI|*?irRk|^0E)qILA)qz;%4r!sD$5{tb9M zW9UaaLo*@0G1J@GBtS#RmR8q@~`#FNb_h2F|hMDg*C8#BBz? z7V$l6l>a#Nfp;5f`ObyB>ka%4$h*u_ZG-|zv2Jykaxeq zZw=&q#K50~e*U|GUjcc)2OP-|@zMSa9;z|dQ!a-fzcTReAmTq5cn9R21(|gCCm`=! z;Jo*N;U7bI7uJNdyzhd%=ffY>O!!}ljF@Hke-r%PXy9Di(03@4-&zRvU4-TOA@O^_ zZ$9XCew_{d@*3ekf%IPhT<5nJg8B{r+mZen!+#-Ud#B<5_h8&)_YH5itue^E$q4@(%4@ShAA`L8hX0F5Z_4l=g1p-e{})geyhBQ- zZxDj)06bel_GBH|QS&|APj8DFl7Yz`u!zo&c`pZ3Uwr8TccR_ooK^V@SBy zkhco*{@n2Y2gv)JfqNnE^9KGU$on#ISxob-rI2?f;?VeA5Tx9|-wt`t0@^%{G z*%n<5T<8BAAXwbMcO(7*;96gbLAV1rq7~(}3wGYEs_}0^P~JDB<^4VC*C!1BFbF>n zT&Mr1s9#?;@F?WH-@t!?gz-i~Enfuk9yIU?2=;HlA*PUL3oMTt{>LE5_YD7D*q<`| zXThFA*t1l4-r>QErp{D&2g>@Gf&UD48m{9Ppw$}?m}Rk^yQ~FbtwA^;9WH$NYB};E zjlV@95@df9kGYmMg(B4^&QzvNp~yuOrxv75VaAQV95b<&rcGhSjmh+9E1Ncj88=eX z|BSRJY=z?H=(JN|#*NtYcc%AkX<`w6fdfCsx)|l54OB=)W1yoPwFwYE@p`51Lcp7WdTApL;HI z@KL0tiXZoy<`m2j^W@pryTsk>#n-t+Js^G&=!dT3Rs*#TdMH45^~`Ora0vi^@))6h7jr{AoGAY`#0^*`0?2?t9Yx+0!yoS zi_01!1kY;;5$_&A#`|&NxRU8Jgh$YJEBAebI)2Dc%`65K@dJwZ0Y&_PB7VSmijL(% zdNel{B7J}& zeSji;fF2cIqz|}AAD~DdphzE}NFSg`AD~DdV7&@2(g$3m4^X5JP^1q~qz_P}4^X5J zaFYtp_MGYaJn;{>tecTELXMq^uSNbV=u_}Q1^Laz;t#s4H41WUL%dr-jwOnRUDj^^ z3$WSCzOmpYm-Pj};;UWOK0-YA5Q63#fYejA>BZ;>zfX9?vW_VCql8*dQOVtu7f|Fo zpvZSXk?(*a-vLFw1B!eH^r&zm-+_yK2Nd}ZDDoXp z;Ij%or{M1tJg(r&3SuxO^1-cOk%A=(LQO2!J7jy{S|#hht3&o9E^HY3=JrY`kjO=^6Uu1vp%^lll`dcDmhMcVQ?`{_oQ6=BBcJi zK7hH2g4A!sWhG z@Kyy`-gIaAQht^v;UfyNyoj@WT;G&yHH6H67be!sZ`acpixHx-vVU;BfHhb`7wQXP z3ED@(GtnLrE=2oB=#~9~3%7U1iJ#}Pb`UN?zeLbJ*+Z=zomZAM7#Nd5Bp%3jdq2Fai2rDq2BCK>- zI|-{?)?UJDm-Q*a8kcn^Aqwek!aA2VPI#e9d~?}_!Qqp{FLqf!CBy-d=Lp~BvR)>v zNB@PiyBg465w1Z0MA(S_h!BO&Gas&Im(@gw0~&gis=W8`gE1OMDyFg@X#;A->*a9U;W6tj`i|aEWhgxo|MR zjft6SBl=fD_{~>v5#hU0{)F#A`4e7=@+X9nZX|p!%AXMLTEz)Bq5KI$D1X9Emvswa zm&>}15d7~_kXLsTKcL`Y1-VyE_oIY}|96ClpA$q^H_D$djPfVMpv_CT8RbuiN^>zG z!mJ|1!}Vy5?fdf$((He?m;Nia4LdBy=v}JWI|m@y*yJ#Lq_kC!CMDKOv@B?SvTg zUqy&%RxhCkb6dg%mNiVc5cQw%9Lu_u(2H-H5uPXas9fix{u2j$gb?}o9R-gNE<*h$ zT#Wipcme7^^2GIa)PKSyD1QaH2jf~Q_gY-bEU|~;S}ylW2shH-FZV)R0jxO?ufRNw zuo7!hgjJ~jgw>XH8zJQ3-h!*fvhE|SMfnrrgG7f3|9|$r1wPKBy7!Z`wq-|I$wnj! z7_xFUK>+o$)xCG@-cs=H77373T!MohKbHWPR-|aYjzo#JK&Vd&+xO3YDjqaRv!BThb zxu6NKjFf5KZ){)D%o{0R~NvxM(;oD+n%qx=cmQ2vCQQ2wa<1??z*!p$gu!Y%0k2|G~! zgqY`m>_Yhy?m+ny-huKb>_+($?nL<$_MrR;dr|&`eJFpz_o4g= zQz(DJL6kq?E|fnZ;-x9rt>&o#(WJy4RxqL9pUf5QDJf5HPOe+8jh#12&; zQ1n0iMgIe$D{~4yfbu6CLirOy*!vWGK*3KdDEc4%qW=Mp(fuIGpYR@(Kj8iLk`jZ3sL^cF8UvK(f_}P@}CB}hfw~6zmM`K`~#Ff;ipjkgr7$HC;UT{ zKj9yt{S$r$Rmg7#1Q|55t?Pf`A~KZ^1v{4=Hh{~YB{ z`{z*p(*gei<*%UVf7nI;1B(9tJj$Q`fTI7ufbypua1-HQqx=;V{SUk7e?ZayfTI5& zSNb1z(f@ym@@Kfml>P@l(f@#={{cn+1B(6!6#Wk<`X4Yf1L41@^#5Ne{r@GU|G%vC z|5ud$A4U0-{xHg)@ClSZA>Hoh)`O}VgS`-xh4||8Qi~fgQ^gp2Je?ZayfTI5a zMgIee{s$EO4=DN{Q1m~b=zl=b|A3a4U|9K z0Y(3R6Xj3)vl#!WaH9VaUiAOBQT}xQ4$7YpoxJG(@1p!^N4%o{0Y(1=>MN8{SRd+`v2ch{`7xI>HmLM`u}C6|9^(^ zr~fM`KU4wg|1A9tJv>bJ11LX2SkUE(o_m-ugYqN%Fv^ec<4S)Al>P>Mf$o41N#HpJ zMSsIx^fzFL`tq#O->;(lX#WMukMNf$KSBf+{rw+GfB&b_-{UAh`lH>6{st8N?cn>3 z?uGb%BP_!A8{tBfA7KFBZ-mqE{YD5q_9Ed&QGVi&@}qu)e4@VrMSlZ|{st8N4VWMu z!i)Y!c+uae52C*TMSr6ni2eo?{e3^mPw{_t{*1RCm=;8}6dN0Y!fUiv9)^{S6qxPuj17qQ8NQ z{st8N4Ji5>Q1myT=x@ON_(}gwh@a?hK+)fTqQ3z}e*=pC1{D1bcmh9$6a5V+`g=Lb zf12wq`ui58zu_{4R-k|h1?4rN7qx=p9?+7pY`wGn8kp4|5f5JDT{0Zk` z{)X@^n7<)>E9P$quf+TfVF>d#3d;98?4rK`N9kUP`5VHkFn^=yM1R9B`WtkjzX3&m z1B(6z4511a_POf^h3|9M1q%Bi58Vea&q0_1A404nRik|t?!kNx;hmTdA>4<53sbm+ z+-cv8XAvBp`QydcuH!;HfY8y|-`2ZzD=uSqVC@#-h2Ap=T|0NS;hlv6*RQ{~qdnC= zk+1lXMSrg$ac^_(@7(6TNdQJIeB?4;T)0OYuQ;@+XBtEpe}p~~+&!^%uxCqKn~5)* zqPuq+UX{Qr1wHNEZCyM2x}Al%ez|ku@|)Hz7)aq}epe2^d+tcY@QJyD{$qM=0+0oUGJIs-L!e?R2!0s+w&b%3uQ8q~sKhSZ=@gBmQ3=aAgN$HJIFqZaD< z$0HsZGicPH#=Cy8W*Rl9!D4mB-=GGI)f#_;8Z1_0{0(Zb_+rmLX3(fX4HmC9qy~)| z)L`+rAvI{!pcWQ0qy~)|)L`+bAvI{!LOuU@#6x2SjT+Q=*H@bY@KECztMeSA1~pi$ z*7zILV6htGZ%~897kmCOgGLQ%uz0m0HE7hJ28+iHsX?O#wXm2WHE7hJ28%}xsX?O_ z>iNeb9vU-f)S$+@K5h!YLycps&U1_!)L^k%<8M%d#cGVdK@ApP?D@wG8a1fF;?;)K zpizSwEFL$c28|lj!eWNhpizSwEFLwa28~*%=O2%FXw;ydTdY22a@|9XW30||j2hHn zv0CGAP=m#4jK4t*7GLc7#|#=ZsKMgZhSZ=@gBmOzH>3uQ8q~%NY0N{T1~phb>iNeE z8nsZ*KOXVWm_efkHQx16Qve=n9C1aC=WkGh#cGYeK@AqGG5!WMSbVYPA2VpwpazRq z8&ZQt4QjA>+>jbHYETP{8B&8r4QjA>)Q}o9YNI-@;t@k?(5QuaAISJri!LWsfZ4Hm04{suKzyvFm788m88gT)scQiDbfYOr{ocLjEvK zCZ<|J4KP(F<}&=Z=@PJCDn9PNGKFJnQx;tk?wD@$jHY`V=b7QE<9!r3rl&ol=|1Y? zhp9O^1E2{t-G||hr5n#Y+={t!*sAbj985^KcfUv>C@`G{ zSe@tIi8UQmD6;$j{*fQkvZ%VYE@YW#O)OqljTz7SP-t-^3ZGbn-cU+4)zzU8CNN_z z`KDQSH@7U~o?>kZP)m%>U2~^jwGdR{44>_bdjoVp1=p>;Wj&r)KS}Ft2cBe=%XEiB zndZRIi^b!q@ci+<;*;n24*QX^^wD&4F`RceI~>n#EZtlp)PY;pTeO)O2S-zjGphpW zhBA0(RuvD8&czG!@449w)KJZ;$ zoVmF?QP8T%1mY1L^r;#oQCuS&KNcGP5aMrout4 z;@kZBpJ@sQGKqlS*%c1|qctnJ+OwszFSQ1*eRlP1bG=yK#9X{bb6{7`wW3#;ALqMA zQ@4aopwoTGCmG1QA5!kQ4Ba#BgMp!T=4^jry)i z*K0#Cyi|M}TuQLLpS)q9UM7j7UGqZVWx>!&xdYQ>grM{BJAoff3;&&0UbpYWb^tMz zir%_wQ~IEY^7rbIOYZ&W*hU-PNvUzd$Uvmm)IroXp?YnuV7R&3N zVSG>d(F#LAGr6`hn9h6>IsC{wEL z00w1LX@si@F^1Sph;f3ZtAxD>kuRk?_Wx-21nm&A1d#lwleqVua&wP8-ML3!WMClL zFIRMLbes_Eg^->41=->}KnNx;5Mum`?FkOD*Im2E_|VzexpPb3UbQ;kcI!>K9a=QD zyfd|;xA%_bo>c$d=3UkjXVVM_{+_>xeTg7b2#P2#cS_I{7bY$)(| zybHJV_2Dg(EqmJA`Ud+u+je#Jrv}?|7vS4&jYpPu_TU}tROd~-{X5&cTd~I6*W2CI z)7dz05@;Ok>c-B6X#KJ-EbZgL>}CDEI~&{ww3~Ny zO_nLKsE%??Ctia_)E(s7+~p7?+p+HMvapx*+iq=LpIaW@d<4AL=Jm$vyN}JviRjD< z`;-=<+is0jBOy8slpPAL5l@P5*`C~$j7C>=?(FT~yL9_t&mC){Sh)5!c;qcyVI~FP zFM{UeuCYnz^UAwS)1-!d`U_f>WV5`N}-ewk7ETYtJvU_k_SI?^U zp7w2>{jpe2XM2C!W|6Ng`M#%yztI;3j$x zkVePb20HtjAcO>=+Yx?Do95RJ+~${rr3G%f$Y{^Vth1i+pI!cg~P@1xs1=S$gtAl@sHZtFi#- zI?7=VX?5EmUB0%#`lopVb(Yu`%kMhic3mc2Ncq#<)a6)QRZamH>+<>EgLu8(Y(NoY znUH0>@VZ=6{aR`>>zcnVH(B!NDn`iP|LeNE1aVHSE?4W0)~?Gn5zK_;n-i<8r4P;I z{qpnWZicw+x5{~ERx8wVK=V(MO3#5cg%gTJl7J zb3^d+1U=BtM5Al>OME}GU1!eWq{-&VdhM7+n6#P!X^sjhRj^m$rV?jw} z@#caBC7TMC7vEl>D%kiZE-eT|rnhQ4`Dl}G4i9r|DnDmrmX~1q?mf|;oSt<^Ofy`V zdYNu}rv9nS?vjCPGSf4OxyY|Tx;i|5Jbe^Fz5~?FG6hdRb?}u`ncvlmXLkVJSD4}o zl2x)q(~m8e4qfM}o+{Mkg2~I%j>&W#3eM5dCv{QB0$;;iVx@{FrK0**HCOSK#2dosF#Z%tj@|*fKX8bwzYz)nXyL^3IWJe<@E-lKjX` zu{-aKV`p`=x^=LBbFcb}?(ElJUD{uNUuz$>MBDi7w%>)|(TMv2&rf@X%i()*3@Bqj zy{1!eXR<|JJDTwcX4jkbn@1c!Nw*02B7RbjvgbN|ZxFd-t_`52Ie}k*46?)c=5x*W z*ZJm(i@=74{XFHO!8Do}x-}_Wmo?qA9JX7xk8VEfdTc0jb_qCm^5(uzMEW|_$F>0v zFp~4ola%98%0Qel6Y8}yPU+E(DL#SxcBFcw8^5VA)h9Tn64iZ>?tJoFlsne}Nn5Gl zRe;QLx?O|c+Z28+;M*0>G%Qf~A_bv>WF3^@sFxSx=Qoc?1#n$CuHtzmW2QL?*crEL zra22?PiU(%&6x|kE))0mOwSWzCSAg=TkbuR%td30vc5t&=F+vnr76nVu|a<|d8$|x zNsin6?5}pxU*>F7>0`1h3#*;4Tj^*0dcV)kb9^)ea|&lV4a)wa*o)+jZu-+O{C$GC z|7d@JnXe4(pV1aT+F!AoL>|N{G&hLbkT3m($&lmfA=MR+~R*C=b6}`6qOr?*qR2I&4 z_9}nZer;BbrCZcjeydgZO8Ctyyuw-R%daiI^s+_pt(>a>16SkC8Niu!YApjFy$!Gz zp(D7R?&uVD5Z2;t6~F+9KT0?cZ%+UgR=Inc0$2!PJqTQbwRXZej`I)7|A)%1<7J;l zew;HbL`T(0e}o?(M5g|RvL67XT!#QD&!?38pA#aUCjbkvw*L$vI=SyEJJ+C?J|xWv zpfa*gWd#?QW#@gr*_{7OQ^zX6c+tT&90^Z|Tm zv5yYC13y6CFH}s3%qCqy82<=slz&|LbJLOS9#ifSMF;5TBm7ax#Qlwmf5@$4ynjjb z3520syoZT;pZ7I^#3`s$`T~wsv{UI2YPq6{FBJyeuXpD+v7{#STw4N(yf?Fv5JIpV z`ToqqgfrcGfh9bt59n6hwJBu6S^A?fl@tIXvvGu0!f}435S64^*)iY0HdT*R_nlaZ zNp#G%?hQB_@nmJRZf$33O{Xl`bm;Y(iHMiRuShS-a#K6OBA@+*qR->X@?N$_zJR(JLcU=i0xm{Yr0 z_1((SEUZ-RsActq*tIw8?4#85l!f8Vomd=f!}9AEwcP41Jab90XB*tRyW6~e1?{tS zrN41IZR>h=clC6%t?3*X)Fz#VW6g`>i#Xp*;shst$=A1t zyIy}d=YCk*b>@6jxlC7H7`Z2dX;;n21os3vYpiCM?SGzlZ9+DhtmWPqmVO7i@~!x` zir~J^zS&v6bZJ%r)aAI;=D1)>zn9xhw*cR|u&r&|o;_`Sc-pv^tNp3HZMz~l;h=h_ zY`y}eYz@zxB=j5KEzkz4P0Vj$Oh{aN@!QKb)a^8UU%{qJ!0knPCDTWWh zasuw!X!*E4D)K415STGu@&jv6zOBCW?gu^P*GBX6%U1y=Odt92+gQto>n*b6I|P2n z8qZ9`FJ$q33yg|!H@B3GZDWki(e&(wR|rFxA{FfMSc;BAIEi?AFdP0;x{@) zes$od%lB;-zXZbD@*Rhr-)Y+D^e%zBUB35%Spq~X4}M`&KIW6Z+<0fGju%6ClMY|J zNmK%U?`fms<^D7~-eX`E0TJWnkanVYc}J;^7ejb2-Ww6XPVb|Lw-Wx^=y*9tZO3~S z%s9?wy!h0ZFkaq?s^i5ckQeVs6>kyJL-Q=+)p60zbkMxui?K6d@v4@a={4E<>Q_3u$D9Xej} zJE!>RbR2?XzWTzwU3R&RTKT8t%a;z`Nl1Q72g`+V^0yv}oU-b8AA}>_wbA$*(An`m zhj?|q=<=ZbL6r`+1)7JzK+jjx&bauiM0?eFME8eLFKnazm=DCkRt)Jnv?pA&eD?tn z`4rs=$kzv)>DBd=^6_19&5NYRkS`~cEIMBZ7cH)-4O!;m-iZHkdn5L|ww)2~`U0wk zXa48z^QpU_^FlFP6XaI?$@fNZeS|&n&ag z#BgO^mT!lSl;5roy5v0%vm%hek(y)$7K7J}zpq#y2ddD47~KRWR<{iIqoulfdsg;v zL-m@@zV7xdo!;3P_7R@BxbAx1voRrL6vu8f>}S=wA{QZxhScd7>bL~`U^q@8jdhk} zeXzVCSg|xXw}FRa*zx+zv8=v+vU4QUoPW3I$?p3WKiaupS{vGjv;~m%Kk(W0Hy6{# za~wA)f2M_RmzDYA`)y^XuAPlZ3py$S$n(nN zL%WR0(AI!Dd?SJNly4}|zW^4>&Nmh~X62g-G<<_a=#{SK8w(-0bIjaC$j&W$PV&61 zBf7Y$YoL#FQ>wY-Olh7!c)gra$Zm0J+BN5tT8(%1f-~4T-V>j?@NfLg8+_u^4l<{f z6P+~y!|Fa%{HUY9p#S$r>7QrGAwDF;TGI({Na6(_K)}948>W@!9$&nVBVNi!KI~?6 zI*tJcskhhV9PoVO{$~^&fEeDLY#Z{R`HGTHdy}r)^^*TOU%u#*@3@uETo2Xqod%ue zMFxGes5nT&AJep`CYo=oG~qr{+=eyfvC=~-Q}tNs63H<{s>}rY91o6{4)1`dI9ILr zW)|O~$2?_nayd~_zrCV#_%2Z4F!qj(Y8ZtR*JBCEsWFLSEFncamJmV45>yt>SVHQ= zSVC0!SVC&wSR(BDgRiy|f`kiNT(H6g8(h%pf+T?}>5C;^ zdeYOe0TAhM(s$vkc*%~CmzJ?~Um(4##FJM^FY=mAnWgDooD(m(1v?6{VKFm9@G_t( zrsDNpRGDRE*lJmoE+CDLCOUe059}jDlx`#=|3Ak6$sIFSuh}uK=t4NB?b0MYx3bgq z6ND_!4jFJm-eLuP97p7FM&3OLep}^xL$_T$aNX4%*IhmE-s?iMoJH#fFxS7Rf3OGL z@uJfO9~ulhgGJBTCRi~J`J7b!ixDDRjzziacJK3t1Ty&)0sT%|*Kw1Nq> zyJreRT?3)Wp2)0h&#U`F?cKaXd2eWQXJ=1nJA!w1EJROnaV&k_vGgcvm>x^Z7}eXO zm+wsZ?bZSBwfaDL;b(*M-80`eYo{J@!HMu@L7L?RdV?lw(a7@P{I$VIW3aj*Sl19- z(ilwOtU6Ak!@W^Xqa%1eg79*Y!=+&x$u@Wr%`@D8cU0N1#Rfg!H0O`tPdugUJmY)_ zIQOB@|9;s21USdOwEsKcJ@`@Y&~6*<$HP_sVwit(U}txz4f{CDDt*0lYKnmV_iJK6 z+HdyR2Yq(lpP~)vD}469)t-R#$8cQEOtWhZpeN?m8J?}akq`twQ|?Sh0Au#c!H@3O z0~R4Lo_LdRypM%vwwXS@RWA1{VIai(;vTZ!B}5)De*;(y`*Yf%2B<4(=Qq_%(0`o} z^v@E4{)F=9`v!cY{AbD@f;`+GBb!O0UMJJrAB|zdiaB|mtoQI-(m2i~+qCZ1lq_zw z*w^84ur{IO4*$&&ZVp?sm{hObj?>s3D|>L8dC!(S$FkLR>v=9h=g?l(+fC1B-H~lM z`ff~jw=YcTivTfrL-xF#vgv;P=hG%whnLIa7n*Aj^*v@>Gv}z<--A0lV~Z;_J2zqW?s9U>L`k%7My=2nSmNa(0P=yDmbP!AYe|kY|)Q<+nPd4w0nC z^kknt_JO%PoGmKhrti0x-QrxQ3-{uos+UYc>SJ6|3O3Zov)FNPgzR72|`wjYkQ28?*oO6p={5WTZCvL=$ z|7>jNw8dk1>Q!xMXFJn|cBo8e7TP2$?@Z`l<{R}bwvfu*Cj6kG`+I4Jp6(>1{)6Fr zq;CM^T_sh7=u_CY@(vRyJ=y2!KZ<<5O>Z*o;@^b1G>UsSE^s4P_B>wR+a{vbcy**} z02|2MODLL?H*QJBV(KHobrbEr6*EUpmh;r-krr+q7{Kh<1Q%Y^_Q~}Z1K5*wUb=}d z#`yJbg%UkPeWMM}N$C4`=%%X^yE@{N>AwR$x&-X3+uE>B(!3u(TW^#jUVc?`+(>y? z#Te%u_%U9shaLg0c>wkF5T2|OdYzUpS$;O%f+^Br>v`7RstO2z<{|R2SD<|SdG`e> z0Vj&ryDw1DwLnm&kLhJT==8F^GQAP}Xh!kNr^m5%+$$TPGR`H`hCFE6@guJDkK^Ga zJ(OX*G;IHNd9*@4&Nfg!bQhj{{{md|0_uceIRnTzbiS~B7S+_|*W+-_cSafaaM#wz zLfqtf`~fw<(|Y{vSvldJQ9khE5@hd5Na8KVJrYjBX{?!U0Fv^tW)=b_lGFr;I|-6p zt!GFMj+PGp5t5i5!)%8)nF7~?JRmcY3fH;Q8&LY8)0anIiH@Fn5Lw}#&DH;*?r+)7 z(q6CGf|-Y3PoKee?Eg}@4#=!jz^73rw5(% zx&TH-0p5q$5GYCi?Wt0o5XB+giWA+baCv6-wckpgI{a#3*VBLe+0TA9{q;1Ce>WU> zb^W?^Z!8_U1ED}U_uAu!&lYx#lH!Z&;B)=|{_JOG?VepQT7Rsx@$kXX^b@7S1OGWb zp8obo;N#4PkwC&OJWPXCjFhZ|sO9PMdjZPQt@j2-%I~EZBjvkB$`1i6herS&#UoAk zmdKFqz~v)ZeR zcF6R}14mfxdFuU%0H;UY+L=AI*O)y)mpirR*3uVC#vcoB1UFS_OHN;U`VySrZ^i|Z zgL6(_3DixTxTH$cyav;>5lb%in;7q2_0d4dkET2SEAVBMZ-OzBR*nr7(>eH$FY_%^A*L&zSSf4Ck2{GUSo*bI5T* zb2d7$cO#%>nAPuW3YV3B)IDs@x#j~ewm^)Nq|%G?kA*kEX-qVlI*2{C4C$SuJ9sO4 z#@z1UXY3A!7#NkM+QT9vkAzo%=P91ogIu8xwFH(AKV3TfXQ1Ez>a5b?hXuKpyYl|Caatzg_4M>{J+J4=kd+bJCyfj=7nTIBp|&q!M% z%@^Md-|OFc;!4NY)}CgXzuol&ncEd0{cl}pP;>>il96&WGt569?K(`Sf-}e_+&StO z5=kl<8J;eofTCHIr_cQ5-TUv}uNvOrU(76cqU)0?n^k^o?)Kp5 zH`k`0vKyaQ8g4%xM?bzC1wJcvt;fP@3T0M*{sb~kXwZAlW$!Js`>jYOZ5h^`%26{*>QAQX zGyB3NQa-wx-r}`OHz${Pc4XFD4veu<*8j)gaZSI&D16pyh{+2~$`P-Qvy7LN%vJfs zG8U6N4}sYSc1)7~^ii*O@pcipOF~1V#p&rTig=1W%p*h0c_$-Oyc)Rq<-g;lNqFuH zCr)2EvJA>AfV$LzUs*E!9o@&E&nP~02#GBoS@AO3V#&{+L#V3LS9xuLhzh&j>zam+ zmZX1*Nl{Z0UbRgS&{DM62gCiDgVa5eMz?&9&?f$`e$b0gZ8SyKP= z(hp>ipQkuKHq!kC>iw#beKRUZ!9~tG^s;0&7#JU+rI*nPFE~sehrF&R zLw^NPIG{P*z=Yz$X2ocRVYFN`nvs`L{Vz(JzKs@9J~T$*R-_Lzx7}=GI{NV!7>|wb zE+5}rHom)LABtXA-(Jl-*dXm*o73jng!bejex9~drSJ;UX{KVwGMdz0;x&fczzh44*!5UfiZNz zNxxKja2iK>qUNlDt+a)I^G3oL+1@vXzVFl!{-ON3!{L$lgLg3{8}B|l__!4a*>NQ+9rE+wGpv#Sh??i7L;qLa!$;sV^8N}bpWWxicb^^KotNR@oRQ@( zqhbz?meijaeCE`B2$xxYPSvU9FI$!BoT{D6S!uGXXZ_Cyn@+8!Fc(x>xYnoy5un77 z3&`~VD*bN1FOTmk9^Vxh zud%Xl@cH_mmVTfW)loix!ZVfxNy{F ze^ox5u01yV4Hjohn-oWg4D|iEQ-|Y+3(@(;MOm8bucL(25uK_4K0Gt17o9n&((HXS!2Ens4I zof+Tt;`pwU5T^>ix$8WpLq}P?hDQgVIz0pNqjLohL1) zzv5Di+!99Y#S{n229hg@m zVG(lg!(V`Ez^#7cm!r0#8!45%Qf|6=i)Z>UdXZ8mbrU)8qvAzGmwqCXVD}Ccp!5WX zadqj#bQWzD;Kulu;pWk&jUqNF++RQQYaL_(^=>!K}Ol%N8wT zu577y{%VPrHm}BXPfF>#^HHc{S>w-r;rS?k*82z*#C-m|QPfe2=@qroa*#2p6kO@> zDP|mW8frbtS(I8J%*H25jcQ#~no@d!FdVQuh^=P6Zo*y!S&TnK#?rx%F&Tkxj`CFT z2;XLoV7t>dg&ZWCS0nQ0Cnuk}!}HyyoM4tN(La@~A%3)5 z*=lzi-Dy*xLovns3TPCQgbd6=^vZA}0EA?Co zkrh2Rb6G!hukgNNc@_k8hWkgzUD_)7QcUpmV#{i(s!@sP1vv$mnH}xB?wnXpxa{Wna%SLERJR@_Pt3wgTigii{^7)st(~X`M zgoZZ(AC`?p{sjjH{P$Zb&&fD zSK(5MMak~=)KG=Bt+;O7+8Z_VY+s9(gPO`a77UNb(Eibt$s`U zUc50QGWg^U;faKS&d}EOuI|o`%2^Js#b{&7z_tzPYTJ!VH^hN9q;kQ6KK$F$=WwFM z*@eqidiz<;F76{-7@N|5fO}DQ!fuW^AHnP_rVRA?oQ7Z-_7pA)9xpQw)jSKQ<7Jx{ zmMslFSGFqnJgg_mR>0{7IvHy(tt5V~tl4tTCR&qi{f&hYawUB;xHbo0!0#k}FXDFw zznAelThzRrbaFTK}*20@eV(cxnzEFX3 zKnUY3S(fWu*pVH2Oa9Pzy3WW$k7*L3v}FfYagYjCpklcaIGgC!Y^ziummXCH;aeuB*!7ri!Us3bOUtOpT2M-6-A=KKN-q!+&;J<7FsQ)YzOG zSruH;985F^m%wLZu)0~c>o#z^Ze(e&t|_?0#aD}0qqg3x5wM?+-xBEz9Or$&16=s_ z;>_JA#D(oqCEq*v4d>CyzGUBhs<#H4nu05uf-McfU{LWx>Q?aK+MK%hF(SnRZ_m z+_VyWKchXo0Pt89Ox&E$9dd2UabFtTgp4ih4K^Wi$cRWF@D0JH2Av$re^YS9a`9WP z1wc3muuJn>n(bcrhuXuF*o|m?jyqDwlyqqiq-41y-HoAem5AbHC34cu3NOVjgFCf5 zBtZ^0Ne+|oy6o_4bTKsOVnF)V>9nGFZ1?+6>_=3cd6j)rb{+85(f0)Fma>8-8iP$s zMV!W9vN;%8p5u;8hI`@f2J4pR1Xu}=yR8r?79<#);4uslS~0gkBX@dc%j3JRca6M_ zh9}sX)K>PYrScrx(qJ{(3`E6t_m#oWZ^(9cv@2|bcioW$+ucWxxF5prc_oK@zMof) z)gnPdu)0ZFYLjfTZw_9VG=&X0V!Gnrt=)ZMjzY%$n17++n<>7s^R?eTU46W2rK;bJ z+0|!j4qe{rhX&r{*6Z7>@MwUm^VKxC-;`4=;V3&RrrPR^P6GS=h2;eAU{E37{*)RR65^5 zxf3TD?O%tTvbcMYDxJ^49)aDJuhRJ}?2WMBrs#hY_Q!xTeulpX_E&%di2eOQerefL zuya2byI|7K1^fOekCyh3OTSZR$9v?mTwR{fS<#06#XkSLefBr{ z?DoDqhX0_CU!#xyn?C=b&)@Qv{NY&|ZOEVPcorI4E#OS#{q=<4(F7R4mV{dgv4Oak z?kLMo&<s{y<0cWC+7b^Qrgpgx1A@X6E{@A0{4wpwhtDbdUlAf7z6!{E;JeXLR`RE@*ItZg~zS{A};m-1A zeiQzP@Ez!vk&lJfqTW&dw}Fp>JxKFRD7%w@^#6P01>rfuw?i)E0mIYGgmOR;3PceK zWKT?Y)^Wme1*v11J`KTA_-Z?nEc~?{Npfbs1!v9_-9t*=BZP?m1wzO}Gjpzz15o4u z6gdDz4nUCukfs2cf~MdULb)PKoI)smWSvupM)@`Jh35%E1Uf|scb)?;#DE}y1mmi8 zXC)!r`v{TF6!Qlc-f>?)x=-gm!Z$-_Lm*sbj!V5${XKkmRJ}jyUeB7^-ru_$C#>4q zcpSE^4IABC;*s-DX7Qk#dn~{^U&ih6(Y&*2F}`J*XHJbbZP>B?D&g(uZ(N(IX>050 zxFgC78{GM|w#~Q(xory`N5$nhEt{jw&GeHbw{>^+Y{Lv)XMewYiL=dXf}}+2t)%pJ z40d;}YVUKe`&gTb#%zw({lx8?ar)TYQjFXm=uA0Vk;MZn68s?}cr*^V+PdD)h>k0B z92dF=Fc4_VPW=KaZqk)kPSs_sxH&`Jz{@+GEyu0BeVsjw8S*-L&J5-~3b?hicdIin zu%*3ctFv`Wcke*wg`Va>dbc=vYlxi0m`e87__LqKJ&-{+A%CJsNf&McW^pdXo#OED zA2-Z8PvX@Uyl#qXyiMvT`-K?RSoM`VWXcJ_L#(w;axqLo9EpwA{MM@ zqJ7<+sm}9DxOq|uUmxa5=9XAB8Y|w`ZQ~&$2ums3@rE&u3H#~^p3Pm}a&u!tOWV!M zmaT1WZEJ04Y-vUvanG{WYot~qH5yr*bH{PD_VSQ;4oytccu3CS*kAjpqJP8q1}e!j zeb9+-gAURLYD-K%5aQa4;|SYOf79H8pG}v5o!=tbP><5A#c!ry?!WyQJ3I%J`kdtC zM;*Kq@{u2am}lX+N#O)K-fJ<=$ch&p)ZNP2XmQ!1r3dk z_lKZ^mly8|Fxmtw`EhKf<6Q`Z{0db%9svUk8$ClhnzsY7`6V!Bi@=@ym|vQoKmX<; z9ZV`C<6(rT4hvr|ZiJ zWJbRF@--j7V-`PrK6w02sD2{`H=48HS3-f6AKKiHX+4;&s)r3GWK1 ztE;YdDJMT;*or)%adlGeJE%{(-rj%z-JRI6e*&Ir?@@8iZJldzH4_8t!${a|j=f7e z0(uXadt__<>K%@ERsdU&i@BvDfD1!GJ2J%Z*+;uJOzA)c!};aK{*khbJR&+fIy!VD zN8mj4<=9+VHu5o+SbFx*VccMa14<|(@ARa7N9ljJ^rC!N~^sW=tAka9|s2* z2Cl;%)3WH(2ftDJ@xzC|9~gRi9vJU%c8sqce@qGxTWaR(UE`tX(>Ur`+H_b7V1hE< zn_b2MyB;K0n+v)mX)J0n{_=wqhw3DjcJcBd+_At*6c*tU zPT5Vhps#nJYY)HOm*RG`RHy8b>ciX$u1X7S5ht}dYL<7BY+!)15+W1sU%Pr> z)-1K*DuwM(@LJa2yVL#t_K^$eU=O%%+1|dnyEC)}8@nniE8Sc*|8J`1j89FgNYRXY zIm8}a>^gXffRAg~tJ!7(`no2(sI?7=)B$xk4ar06GC!m~E5dIEeo)<5uk7jQ@9pXc zRaMt6j@DF1LzKBA)Y}v4kH_ljBk^lP@;Fjx7cR&{u7qkAMi$0GRohdkzJco&Eoyhe zFWlDKyREy^y(n)XzD*aUdV9N(KV3bG-0+b|Jc?g!q$W}utB!SabS$omF7B*uk5tF& zBek9F^^r(*tS)-(1@V5p-i+s%kLG-Ph?sXYoW9iK7%6nDOIvp?I~(DjBq7W`{`1zY z-FutMu|sTCaBibq$-G={Xl~RuG~XPYyEYhVlr?o+BqvwDVOI?{)hK$fWBiYjFU&mt z^Tj_OPRHpEQ_FwZ{u_hk%|UFm@$Q7CyfV-M_;ty3UYh&+jK+o~^Sh0MjL% z0>IV8v+GM%91rf3>k~i@D}De`8swB6POEZSLy8L*)ulPV*$uAMOk06daC8tXFdiL*Cn9tbcQ`p!HK# zpIA@lU_p!XaWrmxLFZ3VzBFw6a|$b*4=Q^08*{Lb){$ku%sH*-e_Qr-XnLZ?&N`H5MH1x&rKigQ?%Sn&LYN-wNZ z`Vaf;hgJ9zp$|Kp|Ivo!!F6$MX!q|2_>_;|11i55hV+;F!t?G-ZRr0QpMA_{|GY1} zf4{~`%?yzIuJzIXAD{gXefCfK?97K*n9$*zO`y?zJC1hdFW1qT?=z9PtXEuzZ=xNY z#SMhul_W%&Z>0Y_aR)o?$fG`G-$QtvJLgBfIzG0fnTyprc*CzhUP<3l6TjaMQDnWD z>+oE^-#|OMpW6wM&JIGPQ>TmVkNXBbK!`e<0c865nPI1QF759!@%rtY`{Fvc}+6;9pd)$`O^rE?>G=F+AK+C7gmqZo4mF=R`Z2 zx44T!wd@h)4+SXxm<%i8ugM16gh5P^6_IQIc` z5JE8y6TZRScfx%D{J`M)|9nDp{~HJ|$Jz%WA`2i7x&9v^M5WzC_-2I5TKBBId2O=4 zt0%Qs{&Su5&in+?h)W^s<3ffdW7$7o^J|I4+)uu??f5L|?(A>d-QV7aS3LQsv%RL9 z|3j?C{dR0l-n2H-X1=nL44t((;KGCFM6SLH7q3mV_wz02Eb;1YUh95%;(1f9qbJ+9 zb*eX(^V8K$M3G<8db}3h-`SH|*}<5(!07n*1>o=yKZDiE9vA3kG22mV{W}MHaFEE^ z$$xEJ=kDpv&ZCw%Uy;TN`*}X5qcu67*ZGqdjc0wc!N9~5b^vQRTAZSG8p%g4KCId={ws}yw` zuUYRk@+7uH*x95>qESVon>h*fntlGNT#Ev|seLEp=N=22snDxtHo+c@{LAFnp0G@I zzhu8e9K}AKo%x?4&VI8viaiCG^1#Wv)ZV^M>?hdT>w6+Oe^N}3<0i!S`t!=kr-Ss3 z)Yzr7b^>ZjlIJa)3!+}{QhO6yxzSo)6Gmoe+-(Vq^)3Qyr-9nBF!8ww$*Xqg8$ zZ8X2taIpDR!-MjWAED;g?#q`5_^DwFs7$`R7j!niCE&*~3i^6^Xf z_p5}MEk6#G(eEhhd-sV?r@xyS@<9C%my$JU$_-mu(!IJMy@YDQG`O>=y9#?B-fSRATPel2>Z1IzC7r3*X zT!Wuo9*4j$U;CH`I$OQ~3RSlc&X#ETN`Tn>xUV1ze{HmU#c;Rz&9(T2K&<&C&^eG_ zOfe`xhMrJ30sZ(J#Xls`Gq^xdzF}A%{3awn{vJbk((8Q$FTl?Bs10do9)-KehjON= zhJ2Kr{KEK=j``=0H-dO|KSY^H$KSImUcJBK4D9FvJwusj{QT-He#}SB@4Y^L4)O_~ zH=fb??B|!T@&%t^9zUK(vhyVbeoTip8vg+3?0jjm^5q>Mo+w{htaL;a9cj-tJ4sh6&PfjV~RoRywqN`O0^b74IS|UjP1-O^7$769K5x z;oqOqfp|&BdWFwuFaK^sy_0-_8_j<3W51`3=J&rqL^{e$b3fBd2W5!z*QELl?aueL zZKH!ct>{#>cSv_H+_Ygn(>w(?yZsI$9sA+VbkyNTI_BR&AetAfPB-#z6Wkadrjdk> zX<1Yoi-s&S**=zNe6f2~c4+c_EMHRcyJM#+=yRP~L=5BJO_hB&5$+|zV)~A^=>>A! z8F}>Q|9BN1v&B;Rju}bs+DlmF@**r&&(}-K*v1mrG0j|+3BORmQ&=Kj=TUHjiMr3{ z;)wJI2HwBF5H zs?P=E46;0TmF2tAqGS}d>9j0dtFf#Y!xza}Fzv>=%r-znS@|y2hsEapqrYAIXvZ{_ zXJ~KoY;M0nJuwUYm9!T$sv6jNj^#!|wD((;eJ3I6dI(VZQ*6-Ykrv#c4$G-*E^nfiN}_bLG<>W801{I+@W;${%{@*iYMxyl%S-^eo4 zeWR{Qbc<+u1^r;H<&dvWv%FD10?rEMz&N;msoRxncUMT+=g=L?otRgbXCm zoH@em{zOfxVVVm4O4}CcSX?)|r=jNp@pQWyOh+!vJ;txk4Dq6{gO_X)}}3TD~ZKc<3-5 znhlKiRjl>~f4QU_*Ku>Qdf%0(JS4av7Kue8HPM;{u~@vlee)KKVlM7<+tqU|N@AkE zjqbW{!}O@*G;`eN_C;=aI}Y;E8V{QNY-_AtKP|y>>{#>uce;j{seVF`dXWsG6(6TvcKjx8@HucYZg*(n>w-7 z*1MPINVDJFT)YOS|8{kH?{{LsCYNXmkAP0~{Z6kF@k`h^*wx*!-rWqEqh`!N)~9fg zDlEt06ztxeg!u=jdLaSC7xJR!zaSftrJm`7h4Z}HXmkh;#3$1$pYhQpV3+m)NW*$S z^C|pL)Sd|;Uixu<3#jzRtS_hrS@CXyeG7itXnvH<=Et@32;9hzJXl@G?@|zwHijR~ zlla-+H1y*ytsr^O{5^j8^x0p-o%GuLvu%N+w*G^{wGMg#9{Y44K&2X-?*g~eu?gwW z`C`xQ{}gnZ7ujrrWfYL{>GU$(qT1TU7cxeU#bZ;}XWgnYxcyrd<}`I`5iyK^kGuQ8 z1r*dYIYf~4NX8HYq@8pkU=Fj~vL1&qN;0#eqxH|ELb!Un43~>rCbPG=es^(dW@cvn zGlMVP-u7hr82*uwYZ$yZGYf&=fWRe(_{3FTacY)JA055@$%9Yh@W$;rNbWlx2o}Ok ztb9$B6-iWRdQUMP4Q&Xdi}~jJbX>cN_dtZjdfr~1DX2e|;=@{qudld%eQ~NdB&;`& zlY0*#<$6#kl}=PV*!~_JhG<HC_D3&dqZ_TQup)jsZr(6^l>lf0o4VtR?jZHMBYp%3G;mp9wu$H zx(LS4X2mf8revL&7#O?_knf6fo}6}$73e=txrYGx?Uo=ca`ymoERdod+4B$~`lZJS znH^@LC}&tO@eASV8*eJ(hzUq@M-%x8W09?Rd%SIXZ|@y#`1ZsV1wELg;s7N-eKhYw znyOik z`h#Nk4DWvATk_gy^bJ6WD;4F<0cbkubz%82el}eKcIiU^X;?>TeuST`mpi~91ULFq z9`fV(;zRh^{Px2xeGVXv=GP9~rW=J_`X4|VO~)2*)184`w?UhZG`4)h5QseZV>8h5 zQ5KsY_Zaxc@gQ-&=%eG_0lN>=^6i5=)2++oUf3CzHX6SI?)dZO2S}H1JjM5vNvF*r zv~}BPzZONOy-9b(BGmD&0G*vL_roIsI?B(!g>;nvcF<{Fu*x3oG8G5?NyjjYYU|bb z$Q@NpIzJGpt8*zQU;BAf2~drAsDb=zKRM$md7P}64`j_9PZkdy;Q_;oU+S_#L!C_H zA1hSBZLavJyEUP!t@CH@`6irMS{BqbToD6oGAQap?%GP)@@MEbDSH@@-_xS&&`?6K zQ-|fuJ9=C2yxy^`AD7m5^=wmDU$t%S@9Nmrski9n^wrtDH0LvWdltB17N~8#Q-3WR z0#40vzm#tO3{i%({hk#R%}5L(f0OmeEIXSn0Xy?h8(lJlcH3qHW?Q8j<Nh)T0Xl^J^(t+i{Tyx zza${z(CJ`Ww|919KlXz5{+%d9%ui0%_tY$osZYPj`yS4R(&)ZNUar5`m#EcVH*fU+ zkVXKdACRG%xfpJtZ>=(`+;T26vzSeSE`-0`&NiaV-erYRMJV-#_+;(O-!548`Pv2R zp61Qyme>}{k7EnF9+NJl{OQhiL0*gMV!C2V{hYKO*F>gVk3X$syI7BL+`Oe_{VMm& z`Rh`Td0Qa%(rbm{_Cv3sKC`~~>+>?WX``zdA%Fj`>oeQd)ar9}t*W3?tj}slIEDQ{ zk6f(JRo<-%uXBBFShK2OV4!p7=I*^q-KyQ%-@dc2x4WySGv6>t*UQOZ0tEhgO?|G- ze|5cH0YRo#uj?+XpT0QW*cpm;)W++#ZrvP-*VI(Uq8;(NcxR+~>(;tR=ayJ!=i>Tk zJi0gJu7eCys>k(_=!Nyq7sng_9qMuJ zc;mIzXVw>geP&;%&3|=$PC$^U)#sQVKum4CQLDT0$-e{n?MZWS{QUZlpE2I3ss6Q$ zINW_&{<_Wi2W|eV>-G&0WGZ!A>8?G}(l5?&$o*pHyC3ZJy2DG?6AeQe0la`Y4!7K1 z!#CmoH**~IH5at+qUPcp$A62lvv17tn(OobH**~I^?Fb|wJ}GH9->S>=D0Y=@$35* z-0*7}aU`G@{Ns)Pk#ii;NX+i2y}4+7F)o(R#+cN5T)$bv+o+>*TQ!@&yME}!@{`2%thoWZV!|G^9@S z(b+a1vn=`6jNhUM=Ah%+NS(5?>deN5rdw2a#>f3vf2HgMr02d;ZD_aHiT~Bw6OjIY z;j>=~`z$nM?$PBPYF7gCyxz6SF6X#0@ygavKu@1`Y(El#$ErlgMEE? z5+@c@7c;r8OL5=^_d{*D!@H%)JKmEO>^xhZawNy4OqNK^UED)%%N?y=(LRt(k-Z>4 zwPS`0^|mQr0;4Ip3>im`y1NIMw6;4s_g={6Deir?`|L0*TdWGB(P5Mw@yXU(c*e)3 zOTaGe0+5FFjb;^o_B!|xd)@S!@AC%Dh_6ZTE^qR>8FjxKLiKH8&Mvl%eQX% zhl);-InObWWwf;j2yy*=N;-Rwm5z5DG2T+iq_YuG1%m~X9+is!D!u6Cb7G2{GVqpQJK~VW(W4f^tt!Z+qava zpFb|H|G0N?y^3OTc`hm^y@*?`^31=tiMmPar%KXf?`@Jj&AMKTUdZ;(x~rIcwvz|U zHT;)NEAiY*cbI%}xjyDU+qO3O^q}@5%zeX`I~9!KzUFlnKenY$8ES4+^pu@?^(JL!zHp!NFSGn-x_h_KA#x8S^`7kIf}Qz9y{PSee{Bze&fd4&O*=Y* z`v}=qb96}_JvqrfldN69S&E4_y;+J0TYj6nd{^3K(`TzXq0f~tn+W=FVgV-5jQV~$ zJ92quvUyL}0QbFFLTmos!TzLrzrdx*x6qaUq!coHYNi>LM(ZMmI1bAlRz=b%>kM&J z2QhA+t1JLof9wHn(p*~vm*#4?+v$B2@`d2e^5FPc%eM-2 znirg%hhSlv;VgB7bj(BO{Th42i1*D2?Vj(OGq!l@XN=FPO6b~*B_VxEZ(=`X@qjU(SV-7Bre$Wjnd&fBrxg*P7c zwz0F!1LbbNYLAmP!QCDwJwiMBxUUgX*_>z0kv-^>C1^Zlh7gTy!(pj zl=sf!ZJnu9SBC@82cS6&;1%q?&MkOjYK!Lv662;{n@Y(n#;@z{r6*8dp`JZch5^n= zs}5`Q2~ZH9Y|Pf_qf5Z9&vgLx##rsZ?J>fBD0{Yd&Z|)#Jx2H~;C8&5V9&?zqj0zR z@vckF4@vU)#ev)W_QTG;K^umlS%ja>?;(qyJ!bnM=xlzE!d{7=Hk#k};b8N7)Z#~X zo!-mA%;t9je);&l0Yo;xQH$Rt7C)xl=2r&G)o{~B%SRfUAMf_0AIrlYvr&(bHi93` zVp#HxDW8EK>9o1t9_YbQ`*i^!uDugL&gejZ%omzY5ZUsbfCpuueCQUv{QD~CG%q;I zn*d1_2fAUQW4iRdiMpDpoehab-F1zrtYaKk0_ZWN|6CfzXvK1NePtlsaPCRmsc><; zHQ9KJWk#Jx!|wuny%jpSBz)AHM`-zMetIk9T3Qtnzl7~N__x_c$fC#DDR$>bz(VIi;n+S2s-fz8c~AY zhksUGe+_$0{v64*bp`L#dIE0R=rY(12jY|I3ewng3D|Yn0+sS5T!NoXmsEE8(XbxS zydOW(={m6*c)q^r9z_Qr<~>_;p(lRDn~aR0W1TYn+}NVX|R@% zrJrvK&qg0Ucj&~Ja4c~-l6GWYcuwi(@pkaaH10P+`n;uM$aya~6hVX!4Trh(NusK{(5SW}s&YitqoeB9QEi_js?dc- zwFyyGAgZl8stz61rir35Rr6RKXaZ@gYEDo;n!+0p&s@ZFyN+k0j%UL}@qn6DF>*mk z!rWH{+LGI4WKiQAv=O!sG(zdB#fPoPbqj0&iMV|^1Pl#`hlklMq#p}!2bz8)oC1JH z9{>%|=K$Dg0DT@Hgr9TJbxt&4&9Jdn4 zOz&`|)D4rXx(KS{@^AWBI{=-hN9kd8Xki)A_;O*$P3Upl-Jz3_U0`d6p& z>s>mYB|09q<_lIvuetusSJ{X9R|ORLS`C2Aj3^JFk0bw7zJ3X4NU{^km+oHukkGz- zg#v!NDBvnlzzcPn=j$|Ay^d)ff;3KgID7~o;{tHcZvVsKxk#3(M-@Pk-Y@_X83LdI z`Y3=(?_)qi_(?sYyO&-Goy)%jY!v@upx|E)0H$RCG(aB)Q2ZYO8p2Qb)7|4Qp>z44 z1C8Q;7AW`!T>g&X|B#|VRG$VK!cX`=B#3GU657Y#?kn9l<)_+xTRq-wh{fOIy(f>` zt$EzutKA^_i@;S%PXa|sUj~5382}of4*-w`=z{z=8l$GG-N3k>Hht9Q zYN_^Yg-1^7zCR1!eWq{-&VdhM7+n6#P!X^sf{YfShLh6K^aisVv@H zu%Kj9!SdqUjr*kqfyne$ZO`}Kg1QtCOHJDkkkzh$WarS4veM5l4`lEhLuOxiKD;kw zNhB@*q47}a%|qkGgKvj#`XolYmhartrEpzm$mdE%4!u}1B2C?`pd%ln_{r@XkdW1D zc8sg2`P73=mR#+5l?e$$!MwKgjDmwDaoK;D^vq{QdmneHa3Zrz4Z;HK9o^dQIg!}s z#Na-s4cZAxY~J|z_}%=l3QgM&op}xV^|$iFD$IU;F4|TIu);*jonpcc#8+TYS(dqp z<5u;Bqazw=3BRfI^R3~E8`8L_QuRFIiEqxZW`U;j6xvBsS`9PPV`I(mLm$x0p1>J8 zT8yRx*|_b}jdiR!M4$BgDO$n`7zleb={i)>gxVWSy`kG*W_QWKR|YE~Lb>J#5!~-Z z6MA<^W_r3?LX9UwndLdzJ#=KgR9`$sqFTJ}4cPL>yzW5tC2*w3dF$ssT*A4$1iQwD zIU|xOhA`u+i?L1mebJx50}d2~j&svTA&R0Xvr~m#&Z7({*^8j%S{j=uvutkW=76}U zkBnxQzeHI7RR2f3hfqY=iRIO^0U~$mJ<*?>p5N3o%ltesJ{}gh2;F`?zOk%Fi z&Ex5#kncNQuBqHR{nWu%Qe}QuFP_~2cwb>=CxW0HPnKxrimU*H8fWroN*gKy`rJM@`8jN?eO)FZS6LvG(V+s4D~SToEX}f7GKSx4h*&^nclV z7x*fxD{uHYCkF@+a{@-in%WZx8cKw7k^qU&Hi29~0z?R46%By|0}V;cg^Pm@HlccY zNK2- z`N&9dCoQT&-(Y6swV?n~p+>T_{BZZXqTJSRDiqS`KO}pHo)=reNJ!pVJLFH3?J95h zFNJ<|f2P=tj@=&EHEb6OnrmHqKl@!ltb*eXS>{)~dAeuMgsad6OYWKKtPH%fx3*LBW zf~OGQkIB!^cW^<-hj1fX`-a}`mS$XK+1=CCyS`^*M|-!MZerjD@se$2vm>PqylU?}iO6UG#S@xe~reWI_E(S@N%TBE@2! z-_+e=$w`v;&Zi*tDJaimlJC~~y5){F+bg4gYbl^X>U_`N;vxBgPN1TLJBk8at^+ zwEJxeyE7^5`2C77Q6sg7DrD?J#f|P);CH1lPXm6hG0yt2O3D1}`?4=W@93 zoqYB9@%tjpEAVT;&kOlXKm+{t+-lOFMa+i<+utEkX%_kg&;igak96M;n(0Vgr2heQ z56oi?9R40yOuMk^d{B@KFh7omWN96sb6{t z<$NAA^F!#ZpqWlWUtr?LF#8gA(eOL5iLBv1_ZbBUw}5*AZOCxH@@m@*Rodbl87if0 znk6p|840_F7(Qw3HBW{rkv4xQPQaAmO!3exp>fDS{KuH|WqRcMS2(R!{GI{y418quETH>;v9KB-eV-7(qzgUrhdp$rM;^-- zfo;TO|0L&jBVW^b&M*_g0OkMGL(5)ICfj8H#m~<5f*#{l=o#%e1aa@ zE&=4P7SF(>U-sx5^0-%;@P;6FvOnZJWBA$LPWDf6W}70*esVJQqOLUVOxMZ&9Ea~B z5RT(F*?*z4(1ibSMUQg^66i6`Hw{1A=gIynoR53be~BqiY#%23FL(F!f>iOD>xsWb zDtF%HO~}G8-@ib;Crg^?o9|!Z+~+Aj7g|-4>GeyaU;D3j8tD4ydp)v-}$VkJWleI zk5`O;u&elgJR$rw>YW5}%lFT4K4$nC*L?rngg2*Y_mrpnUTfl$54XwwY0jmd^vkx| zTlz2bg!fg$&+#kw7Ik>sAN1&BzK?@4mg}+a(PQAi)%s1+v1`yiz&?PL>E*x~t8w;* ze5>^MU@TVMKSdg=>L-Db{mv8=kU$~&M}xT!CUAx0eBRLCHJD>8+D}CJB>z9q6C+k@yB;$hnz#j^k_w z=KEN882e8XgYOMs#xsn1M0%mY>xkihi=jVi@P7jP=OZ0QYkxa|>F;iXzeRin(gEd& zau)*AeXYT_62pC;p^q5+8)N^Pq4_=s{cQrKzIzS*h`~Q6hMX6GGnx?(U_S;e*Q0!s z{|5%Y3-y!q6~Ih~BH*z|vkKDi-#}c5y^aR&FnEu__ZrN%!YF4FF!_rNt}vMId;2SJ z2AMPlSZje<{#t2YiFBtuzRU~|W3csU;>nKl732O5L$ltq{9Xx6J+%h67`%nJz;W&b z9*Z~*5F<}MNsPSwBHh9K4bn)ws<583~ldXUsAJ{)f{UUkHX2itMd zpEsCy36Oq<7@mGfjQaXAF$Sm;SkJCP`Vb>=xVM(>ONpmBPLrW|MuB`hn?QN@5hMM- zNsM&oJc;x{Lrc0hP){}F5Kl+FAx62`4(xv)Ru4%d+`@k;Xto;=<@n!^J-BoS(M>$V zasJNGcL1~f*#pdW=S#-^Tf`_2j{^IV7{`dK9Q9@wY0>ju@*zAm#Aw_h!U-(YW6{7A z>^n2=UjQDPY2HE`;`2f?W)!kNMuF!hl?u-3d04JHKH@hvlRvohWP`dIjA|3Txv(zq}2 z*rO022^?R&;R9B*B}d7>#@HjW42Q2&_o2RGGvC1Ei{bK>m^s}{#|e=}q7)E^^_x&W zMv}CI3zH_Lug>USYG`IY`K~ke?8HcmKP0O1$3&)mlb&z-Ls}1pTWUV&pP@Pw4M~ui-5MPRRlo*4OR^rRBK0=(Q z`*Z)hp%-l~yZr<3AHB!Ez*xcq`-w`QsmoT{|7%9W?o8>J{ zZ5wZGX|8N;?rQ1oHt#NCNz}u$C;H7 z9bM;Oj1+@&dDB+Cq8ksnCo@VAs(5OhLngOxuRykGX_2I~oP!fiEl6<>;(A(^NTj~IrMJ05Wsu_1 zr?)%>Ra}x2r7A+@>LKZ-b-0fvzL}jloRo%EyeP&Q=_4?W z*Eg(6QG|3FH#hY(sl@K;Kv4suz5Xw6hQeWm$DyUoEuJXkDtqh{DxRJG8%TA1qO7{c z#tpsg>l+(c*8fk1@o=3dPKy%N-Ha!5I-RzToAn!GsJx9EH+Qxry_KWiHA`LnBC|KP zZ|qsUv8UB-ayF?ZC%LRgN?Y3bDuRbGDZ^Q#O?GQhp4KZ8<_9QKjqA6l%Z2QSMT%=S zZewLoC6w1U=+x9r%A9p@Y3%9X@xN5*9j^hAl7tUk)k{}|8_V7AUhvNpu?op-vX>Ma zhoopNh|r~R{kEpYbvO{xj@yZP*0-i=o@Y@|S#_&j_wk5&6CXFijYf@bzXFC1mBp%9 zCVpsAML8+|6M5imk+*Mf8dtV&WfCoK>F(X!qQl@GD4B8d`t^-1+t%X|yhhdMSYbrA zA(ZOj3-kJtV=ic_iudoS5xX0Pc=4`IC_NINMEA4kwHeu5qAIX(Z);k& zaSKk&H8yr{WSQ;mZtU6K*@6~kLq|0VyN59{2cEoKsk*$lx)O{lR9#H`(CVq3R=JF~ zrIwKH-gP4o!Wu4~w(C&=o~3T-DxO_~fgJ~IHC-K>J>RSAnUMbHRXeo{79>>8S*C-W;TlSlcuJCNA|>K2gxrT^aj?fkJ zLG5_UQ?(lA4Ko@WZ{D`85f5^8cQDa0nr| zU^19!#*|J0rZNe@`3~U~FxY$*u;bdC0HzoUhQK#gEP-Fhcbxs06JV;M!b5qSt2}Sy z!AZdx$hymziA3+0VZijkg@u@FaLz?}3-BW!e|JKu3ZD_U6HJf8UO>Xv2R;=(!*@@C zo{Lf*l1#~B_`G@>EWPs$AN9`n=&ipXwchu8^ae0@Y=wX7#ZpsRy=yJKA258>8-^!4 zz9CGYe?kib5?{6MMLQGUHt4+{B=sVwY4x^QdMgYc^)7=PTkk0>RNM!90nxh{e0DnL zUZKBjQ!jZaD^)sgv-DOPKJxDL=-mq;$6+rZdO82J^;SWzq%)?wY4!F)FT=y|VcM?v zsP_p(){gH^6h^DqtGIwIsl4pAynQ2-cdsR{#*$ZyN@d4)KjdNg!G(13eGu}bp1;qM_p-EC$Y;WF z$O}<{0g?Bg;IqrYgD404z{C6v;m5e9Dt`}KdaIF9^&;wN^&YkKQZ9A!w|I17 zz8#0&eAo+!-dgb4>HGxra_x(Hr{PCgOy^9L17c*00^ZL;HvuufY}z#}r70lagTe&N ztme;KKVGonaRb~bkH5E|m;4z>AHqJ!ldzK(y|07Mj>m7Ucwo6w@uey+C!m-1jBkVC zqs&5BQZLWL6ZS(dSY41Xc;j)(l80qVHy&T{$U6>s_;Vqhyfaq1)LZg?Y~)G0oPjXb zHvz_pa2N(VUEZ|PMcN_qdgBqmTASnkoAiM7U5dY5|i<`%}wRhf~ON^g#( z7t6@5-a9;cbD>w#3~Y*z_%@H;B1`XF!Df8X@9 zS5?r<{9?J1b|{tJLg=ME`L4x}^7uPu^h)`whhFyg0xX*ZZ@z`Ccwm{^m3JqE+VyB{ zntba6pIu%)g?LDNu)xSm6_0tA-s>&BANJJWHjiG$m2kVK{yqr3%wMKU4SwWHrFWr~ zek%+gc^@!(CH;0nFP6Vukh0@Vzj{j^m+2{szgE+pioDN49)?aXq|1-%taMonZjpDV zktgNqe#m3|1jO9uX`dgl(uJQtC@)pIG+TP{8N$_j%#$DcJozDdpY-I%6VNN=faN-! z-cCzz$kOY>pvx|Qk3cVF2#EPD^dENl`z`b`Oe_bIzociF`Vlq)_A~t?6JSRpe?Nj? z%i1}DZz48`+tZT2#*utGp+i8z_Y=tvw=6!@gpcp931i)gg45I-;h!5MB7qbk)bq3 z5A_{-dHPKFTEotT1?gdm$H@vFmv2yN>Xn)-9LfsAj`v^k4giEi6&M|lHk_@(p)LAV zekzoogcOY7?hiP}b{FgIDiB?o6|E7eCRJi%plM#L+TlT=qJrV0$PyAc znm{OcF9(7@4EIwey7mlb{QT5`2v z7k63TmXlT-KiJ@tl&zAdt)tR+4k&^UE{Os_~`L6SQvl-iG6pZA2*8&U@ z)lk7b-%^>KyC8d~FMbfI-&YA55@o&M|HkuO9EYFL(RPjl2MX{nF-}Qmr8xfmDSiZ5 zlck+%)Pbe`(2o0^2)3QvDq`F5LKA|lQSN}b%-9{HgBzxg1nyKXHRV=j=d8`1RF$2F zlSK=&bFRsT&7?{pS6WWBmVIq@-iqu{wH$?-&y!I(3$k;UD4zLB6x4C8AjeDuxZW73 zz&|$(sn0T17=E>$ciq|f88u8bRJzcN>61!Jnz>#;%y}v?mRc3YQlP?^GAYb?G3R#V z!E%#1W25)vVau1Y4*};J^AuoaFZr)9xX|GD0#7&QtAM%oMn0C0h%uJ{b5270*#?&Z zmmBjuV6GX{{R0M98q76_Dr2qzt~KUGz+CU}!cC*%Haw^FHIue1A3p3(JdVOcbG@Ot z&%YC9&OzzUeaqWnX5AxwF)HginDMzr(U+^qDhLImoG@r+nTAo$A^2xn3H<=*3L$Y$ z$%eoFxgvXof@`-d0dYt^XT%Z_hm3?36Z&WAh(m_+ZnZC6Y*` zy61W5Rb(_k_ve}E21s+Cya4GZJoIjH1g3k;BkyjHy!$--4|wG9`;!3WJ#E6vcADoH zHW)`_BhEzx)j0!NY5GFv4v)N59(t<@58FGQt9jTHzBecgpyf?)uJO1Z(a!2W!^e6n zK)PB8VAAV6@u@L1+oH+X`1yvBe_YYyoTu5C0N7Se#)i>W2E+j6U1jLUVV>+C<4iH~ z*j7!(hS5)%^kSWwjE$&P@Kty&HtE4N<9vUabK2w=#q!+F7*F~5ghzkNXfOh_{~G7_ z3G`LYO(y)>{k_g<6F#GRKqpLV3Tc<750!aL9TgrUisk8@WS8GcQN6KX8&>OJM@Url`S z;WpVHaymTapJxpO=>Hy1co%!po9k)<=mu>Te@;`1o5f0;Q?FvpxH0L}J-`2ZFbkA=kOoZAfj_r!?L$AKB2PZJ|P zpC?9q9-uqo^Ig)2&m+W$kBSHEpQJnD!+wo=rjnj)&H+rpkcBkDiL7)2`DQH^@oFUv z+zHHZi+{FDj3?8d@w}RR@V|%{kzgN5{w!eXBY&XYoC7F_8MF_bKdZlQhUW9l1VI`? zlzX*t=U~CMuQK)(h7Z^)NBKvflzpC&KV8>Z9}0Oc$`IWphW@_DURbX^PCLY{SV59P#1i&;_l%?H|G>@4wx?@}%A4 zR9pW)Vjp>m-Q(Al%{B+6wlC28${V_xHg|U5Kt)TcM-1JT>A$gET;5lV%t=yJT%sRY zPIACWEF1|)U3Jo|7N*?rop@nXeEV#?Ccd-XJl=Sw*hT&~-EOW#^KO{@;#qIfm>mG-DjLV602JbLr1uY=+^RgJHgcQiBC?%t?40@@&2e z*l`_00K-EChrnm4ahfqsd>Aemo~!Us9>=fcMxKc1hoKer0;2ayL;^!j7Xlbp;!nw& z4NN}%u7pq(J|plH@Z+!-knl|bp9-Jh%ftAUdKtbk_(}M@dUGtjC5Df@r=ir=yC2~_ z4toL7dkRdp-hNB(I54Nvn+LrJvI-xj4sLvJ@#x(P0i4$fh+c0z3M_e;g1GY5!feNb z?`~1AKstFvmb@Y`Game%#?O|we}wW%EqRy{x$^kFp)HSVFCz)xJWC#@OcK72NqIKq z;5ZymR9#3H-zvz%pUMx`6_NKi3XdH=2l9`(()3)AQw*m9D3NW$UbA2kE-Zhq9EFrk@Rq@$Iqn zs`UxO+Ydd|n}PTcehXT3k)}MtPT1ReU$FE}fqOc=JE2$Vd6nTK?>CKJ*(=CKiuolV zVepohyDWLtV5Thot}^9R>NLdwBaMqVnt_gi}FEWO;jZkK}w(2{11 zG}DE^x7_Xca<8xG4bvUJRC*t>^wteDfgR4j=glqdev6 zUWAY3fa%9?j^tzbyn2sA812co06)%qkSKtRfvSKbLr-h42Nydy9$9wP5% z$P0=vV7d{!@=jUl!lgrz_Xi_S%HKA~V>|@J{2$=6^X(xkT_nEb_3C}o(kpx1srx!l ze(Z#2u(}|68$9`O&?+xA;HIopdNWa&DUbQV`bj?i-UPE<4t9g4y?~g{z}}AU3(!kF zl(z^!@{#_csYk5)ggvlKwa2)^)DO*tJGGQ>q2l>A(~MsrRss3ign*5NZ#wvF5x+(F zcEX+ETVnVazK?*<^6um!UFwYv8JDmOVvq5xS!&O){&%iD#>J&&`pLb}x%U|7pzab% z)&D|_`=yjB3uncuz87;(&@9jGamVIp>@LOC;IW$ARQL1u9n8JyhR4Kzy~lSB_TTA^ z#r7^dY)Y<~gqIb#sc-m}%vEZyt1U>2OZs0DuG-$-w0R@%7HR6*zDV8Qy}6~mXL(0& z&&Kwf#RJpZg?H|;R`*!T7{t3DDTIW=Clv+kN6dZ~Zgx>SZVD>1Lu_v==muaL6W-~ieL>L*SA8JL{s(;kfsKD9Xkw8LzBeDK6_?!)Ak;qZZ=EFbDP z^O|Qk2tHUUetdUQ{9q2jp8Zx8G1^1DW+-cp=c;8Tv*!2W+JUoIMel_^=Moy3Rkg9Z zlS{{@E<*sXJD9zw9rugyf)8UqyAqcUY>_LBlAPz%ceQjjb*Zb0)SW(Q-)B!Ly*N_a zf>#N!g0Ai`0&eD-HdfK~V*zYz+y`=-O^DSpS8_;Guf(1!A>b>1iOL9=Q{0I$GGFc` zD$Tl0y$Uzcpi#Xl9??{b+Ksh!%jQ?sH7={ESyA24*ibpYt{NAgq{^w{Qc27BI=OpI z4p*w_>-^WZlP>K@x7>i=^v(2OdmK=-4D0Af8OT#uj4 zR{>hJt-u7%b_>66r0OLyd z0qkwPIZ(v#Q4X3rSMLijgH^SgK|R5ECkwMKC!-wwk=B}rQfpU|PUU z4MzqmREZp{DA1N6jfym4DFmmA)L=zeQyiwivP`2YjVd&%(`cba*J;$CQ9Y3k>5Exz ze4?ZA2o7^EdOP1S+GJk8JD7tvusQ?Lnk+ZGCiE)2@l$lcXh$CWt;Wz9kM_jID02>s zMpNc0R~4Nkr6T)>wt?0Op73(qrp(0mhuln&r{r>m%G3DFP4pSi(pT5VpPG9Z52X#u z8%pPW{=vN11MKK@tdA3SFTKA2rtD{sjxw4NkcA(s9JtVc-HUi?tIvZ>)7eLiMV%^mrC zkw!mkvOo-wi|1>S9wdqDgZESn1+@w9+aLxBa3ebr1Duci#hCfM!iS#o-{DU4Hbe71 z^3TCM#n4{|&Ao=~*T{b_=>0IyH1xB;AH|RD8{KW-KJwof3#RQv&>w?;0qsX9EkiYe z#)|HriaRSETze3pd#@0{q~Gh2@12kMJ?=sHLA6qSKldYsK?jf^Y-t0Shs-C=GWSel zzA_g6X+Mz|9pZFi*k22rfdHs`qv3uV?J-Z`eYgQA`A1;hd;HJDNX#!2BTdx)Qt103 zX>^*0fT{m~kp@5ap_Bht#NZz??tdoD!5ZwyAEJ?64o995x3%i%iWK8}`NEEl4^_AK zbZxJ$FL%w!tR=W>&F0nflmuyWYFm0-3D)Jc$#aC+3pzIAc11JUNf1)Hq80O)W;T9J zxWCrDq%?j(o40YaHu@wvt%n}8cjhzudEBzuu~UQgK-$u27 zLT?b8Q5xSEU~JNF13<=(4ER0>>#9I0%Fwg06Ab{HM>Pd=v2%t&!@ z$$5-_BeTOJUh`}OL1r)!`jPYLA>#r8C%AuUb8qF zt}Dp7cGd7v4CX)$Z_SYv%n;8Pi)4*c$fxY8f`Zt#tpB!(cSbCF#G==_n9|-cO9kv? z%(9#e>CW-BswedHpkqOHp*z-qmkRvW;zwA?f9Yg=D7_4Nv*BkJF_N`UZ(qE`^3S>> zYn6;6*Dk+i+!SacAmv^a4);NVz#bpWAn`|jqPA-Z0+bw z1$YK%652cgF@6{p zG@q+);b_t3s{pOaGcZB=7V_9_atL~*d@ww02H7@$89!UzUeKy+0~18vzrbwE3tRFS zCXsg+%#;_#kMJsfsrsN#z@B^pZ`lMah5U&zyZr_Xd&Ltl^%4g0v%^hEr8)?iBJl#F-{CWjp(K>DC}yRp^wN#EUYmrnozRBHmb z&ZUnLiH_zg!FuK{cg5({hG^LH?Q8{>7ART1;(eP$Y&5zu_a*H?Rqpx@2Ke#L%imLw zi%)ZSZaKuCbZ&gXd3>}ccb`vti|jYvQ@sV8D?uc8rl(Vk?0>AirKtf$K=JIQV4ttJ<7>(FZN0d+ob1KLW}!h_se%25ru8i%ipfV1tcZ8I&=G$ZWZz-> zzJ%|BAy`-7N0`ZfZvPnnF35JFnQj2?J4nT|Bs;fCo!rN_MjXsn{r27D1x(>T$X$?~ z)90_|hs7LKUmvDDfNdLr^%+x8g(n)!g}ICH^TH3T27!I>y@r9`;e83aZzx|hXr^<& zA8EHr^q=MY+S13iW~DTCFq7uKD+1G*^MC2nnWhu5UeG~D1LUvv$orBNM7sM7&Gep# z?~k80`lcv)tn+h2lWj5%l6}F*WBtg-L9@$^JJWLl4ww}hcO3nL`$XqOU;_6SPQbyn z#}uWAzh!K`qv{iSG>`ZN;92ZLq>(L*5BVmM2En%9hy9_9w-27_?n3|=244{Wh*2mM z9}5#{cvdtDmhy+f7J@y;PF2KkY$Zk~c@Hrf+DC}T;9q>~g0a=?=8kpiwsXkB*K#l@ zO4TA_IK*=o=G$z^EbRwpea_}3{=84}ibJH>UYv-pDtHzM%o!=A+;f;})mfWk`}5^F z7*l+@JiCwfj-HkowM$oCg(Z>oAHvd1`&K^5QH-a1^haBE6Y&m0e{94c(_QH?-NdF% z38}jDY+B`ea|$u>hk(u|!2KefQUWvA9i}FvUAjIEYgfhLg#K z-5_44Szn*FYfP21i_&rILm*PkX+Hpa@(Da*!YQ=4U2Nhj&g45HOu$SR0^hZ@!^a9=2z#a< zhCy!lo(G@Eg0-_3>AcT`g>j`k<_YGsWthIY5Sd+EQdU|#J6xQ4U%{-h+1On`IQPB+ z-pNlWRsRc79wfHP!W|Q8D&0PV0_-mcVYbWMG_&1kp*GY6qV1W{+p`i}2QjT2tSSgF zmYVJM96brf-c(GF;XHh8h%?hHxiWR0{%~(yk;;2ev)C}!=4^3RBLc&pzs=Xho3N(m z>>2OO?PY3a_GdY7`6AyRj~7+uzB%5xGvo4Kj(2{Yarxo#&dET{@$t^-QITiHJNJyK zh3oIes9-(kdF+Z_1w^HUJt=#Qs8 zTK?l;?J@YTznD(A+Q*Yhib(veQ0MED>dt&P>)nvBL)hMj*J0n?~t# zC<`pC(JErdg#zk|_2it%=*c-<-cwM4j}HsGi$@|kxJ&KPfmF&VKM?G1ffnRfZsZw+ zZxS>WQ4?Yuo0n7mXGEqd_+d7evAUdq?{%bbMX=8Y8hR)7-m>eNp3U?P*VDk07%Cl+ zLm6QB^K<#9e20SbPn5sHFj52b=58r3e>qtDvcx!mtBsRVp>GG`jA8?k1qA&T3s_oKB`s+ijFCpn->g8mo%BbuV3YACb=g6nCk`UbNQ@S^gcMc)X1 z_&aY84=WE8$1P7N?FCU&Ho%>?Yq;lD6&{3d2XtkEAs~f6p7@^)}j zk=+)at+hi5|9AEQ$OP5u9XrX_(^VlyTJP`&`}wN6R&c%-3M=hsjLnGMj=GoGcP7v?s_%@i_r`K0+Sb(rfthow3UaqD zMFh7=LPZZiPL;CZ4cJ+UcW@i~EZ{2esT;CUrX*D>cJ1%Y={uZN{#5TrReU2a4ULH& zQbu?|hNFyaOU#*FFZEoK&}i`1@OjwBHI#|6Fb@%9`A|)lYTt0;p#iPkFq82w!^1-t zfjti#$nxN>u_yy4bMOxq^ZE|1N#D~9twdUxhL1&fXxY$$p+(VnQxZL_h4x-PRO*^1 z4i&0fyx~E+_Dq6$x0DTy!;&zC;SzAT>-Kh@3UIX4ZKNzEj9t{HPDx?CJzO}w?x#QcBIff%n=d#PP0)e~0#BpbV;zY3o zW`7c2H%+zYN}pBiH+~8YzqMw%P?lJ$%w?z4ahKtrj&Wvy0d?1Jm5$E%wYEK#*_~R4 z8gPJhBsv&h&P%wIMlO`vPs9S^)4&9kW>{F{{E#4Y)cB_z^>Yp*K-&9_m}fl&=zgmZz@%?7`e{vi zkB7dS4hHCMIV=9R#Sxh9_8gk@C7$rAjtlnr_)W%o@s~XAe0NNM{;&1W_T-1|e->t7 z(kyS|#_P3!02YHe2I75tmBgS|5M#=*26!yik#~^3+;LccxGv1OBmHw78NqYqVaZqV zPbD85=MY2A`;7hdz!{im|AV2wLU&B~A0ozppZC7eUnMazjr(ngdx#;Nb)Pi%(-Z#- zF(!V$G4vk{{)@5Sgmfd{Ck?)j82qmr`U0dI-SdfIzlRv{`~or3<6ns}k^dnv!gbi# z|H{yRBu4z+0A@N}i3&k^?=$!&Vubtq#8a?`iWrIWU&IC2XNdVV^<7O2`JXZLKM^C5 zzi#M%2lj^?=QTrLih4u$0$|#E^FwF^Mcr@6wT*yjRDF{j2VT@V{0E5f?X`gzvTr1Y zOtyPmkAIjr({Tf$7i?CawsR!E*OK{E9Qf!7W?@Oz#gk{TCXbE_lmA84- zV{JG7sJrW0X4%W|=|U`brzI@u zCJ8UA#}nxcU-hQQY#o~VmafekySov22FHy>q+|us&2_^SRvXXZqfD+iOT&BikeM{) z4Qc9jv`w2*=|e)`FU`Z_=TMO13N|Q7{N9k1VDXFFs_^W)8#I-3BYnBs3RmjaxzF<@ zZLWl;E4O9tE9-8V#@B}85>GM5exNS(9ey*O3+`C&cnarvd_h>(-OWenlM^n|iDK5c zo|)O5{Niv)(!0JReGeFoz{uc3XdCh8!kg$XGSL1Bps7}H0{>}7^P`~DU_s(#A1rLX z3PTGY`!~WBV6yq@VaM@Uj>*LK6?$n8}SfXl(7bhu@)8-De1yI!5i^y9XDem(amU%W^~MS*T}JOp6cvf zq*R~98_62^gC_HIT~FS7j5&2CmRAB%-(w77(j1+0?wG^nliMzZIS>1eLs)tVV5#`p z_~Ehm_NvF;nT!{oYhN()+zb`f{t%{nA%0Shuck%fexoM!N{HE;ME`5Z1F(vxwlM$i zv#4|L@s*OTJ#oHz$nsBpjfQ5s#67<6H8jJ@`6Am>0>d*A1Kdw2O8=vOwpZgY{+$8L zeJ~+le#>LIWq22_I)NgMYP+?qIuF)SshJ=Nr^YuVD$1~z<@ z2dC%kz1hFA)OdEA%kp-iZ31TlWb)ZNqKE?&bP&eXe!$W{`wc{lvBmdU?Cd7x zZwd%sWd9upnM`U0-wjCqSppK=bs7u*V1TF`_t3V{*RyAcM?syY>H6R@qxVjith?k~ zl^7`bx2hFypR9G$UixFTH>Nr}vobrN_P(cVn|!t8r97iHg{IY0YBSnSJO2+JziRl=^?vRh!8YmK|@XASskEuLkT zd439h%BwN@))@Cn*v&U~*L&n$3%bgZX%fLg*E7BbIPNGiW>ikp_Mr1oxYNu&i}XUn zPsDxCp8+PIMt~mgaK92kyJxxU(AquQ%?C|OkD~n~ugkNwjzfk!YSDJ7*5Tva40o1I zg2n{Uf($i#id$r$SLC{?07EC^B-)WaNP_{=-v0JYaRjFO21B!4O++vCVMDXra^E)R zVg#1UiO}{lMd`g<+{ZoD&_tA1;-M=%^nZHjKY8d((Bm*EpVsO!@$D)pRwbVRhfk9|O`NqqC*m0nr9DgR55bx?v;scf+!!35$yE zc5b?;gK6zeZH*f@ceZ)lcyO+bgKB4n+JUV?VJtj5p%XRX8m(4m!-h62!g@t+-H02u z8hbh#ySH~kzasmVX zBOJDyGv7%!z9WxD2+hcIws`_Ms3c#6oq!mL`D5EikiJJ#C_l!q1K8%P0Im8hQGIye-iSjrb2uVH~wnzv*oQx6OTN@ z9|k6nFV+0&U*JZ$0?iU}VtsBaOwe_%5c;eL!9MwXBF^2r z`&ZoaiP2Mi>CQ8rgCFDh6AXaNl&rljo~aeNQm)gu{_OtQ&-x{O69- z<7WrG=K|@cp1gpO`k{_~<-@GUd*%ytzxOQe#>qtoTodcYABQaxZB=5W9m!e2Us(cJ z&u%a@ zf8lr|RJx(7rG=k>tr1S+^>Z4v^!hFJi&Hs41-vBsNf0|reW>K4SqTTTsLU}RG2>wv z`S(jid!)eefL)5XJn^dKS@Ms456wt=1?k2sE8%MMRe)A?NBN5P-`9e+`#FBQVEG8* z$M7H+s=w<5w&jsdC9e(kw!B9ydG>fE>XEk>bUuCp3Jn~+!UM8VQyWNB7otm~&Eh zN2>nK{jil#N0VpB-jl8=53nN1Mg%_x7n&3o_M+X$vI>eA-wzI&*_IH}^)vZ!v-v6v z4WxkiOCXQUS8rrmKZ5&0yH98ZWFjH)aUFTu}lCtDE@j!oEZ+x<)jXv&kevKeN! zqXKjz?8eX5%Xz%p4q4{AV7B${gkXk`ddbhSN?e5><%RJh?8Gls|M39qB@8gCy`aPb z;`Sq0&@Az|3q*x50aGu5<32llJaZ}GW4)5_{Ss!81*5uqZZ9x(kcU6|n;9typU)j_ zB@y0KJhJ|y%p|ZbTZK65D6xfNK&rC{v4w%y1b&C<%)EAZd2YhlxRiIU72tFZj~X&U z>ibW$HZzuuZ(cmLHGFMubZdZj)#M~!;g&T2#$} z#rzc~W$;z&B1B+Qz}?C*Sfdgmg#=p~@4I13k-VQ&xQZimUu1Tf#;?OM$t-LM<@%lP zRA>KARftrR`6|tx?@r6JC+YVtYH&Xd-4~JvP^td$n^qRCuHp4LfjixYHQ>f}p@%#G z^*tcPJa~C_ZnZ7H2)y?zANnkRs=0GR_N4jp00(Om$Bo1j@Z-9U7ZzKMz`4f)rc*XT z;v)fV!EZSqvgEP-;K4)z(!7IHfb?gC047~-Xr>A8uo*V|m5Lsv=A~p|T5~MYNdhnn zKc2aGL{a)5N_Q+6Wk4z51o@1jrVsxJDzc~MXkeJyPU&}ws4&PZ_Eto6wb{KmCp03?V-p4*7 zZ`J_Ko!y^xXvXJc6Ngi&#%k$8nJ{iU3sZ_QTzYQ(l(=`g4_3O!M9z0tx82E%d@UsD9+q?$wxFzz5N<$umvJJ!>_$0%z^b37 zYCB(t8_nk$%d(o-d=;Pz@e^PjC6LD+WBnHOjP;Oh2E)TTPMT{0w!BW*RpKWg@?Hg# zE$>ALpc~~eOd^kMqAhPfXw`QB6GYxjm~DA)TH)i|P2_EY*_KCw?Wlmr+W-q&9@p(9 ze6$yN$6%&B$rFB`WxFXrKEjju+46EBkLk?#vb_{}e}S3uBunc-kVinmw-om5-vo9d z0FocHr#$|6Kf97=1ac3%9lmt(?t(nF)6~uWROCHj*XGcq0uM@p8w+v! zoZ%B^^8Hji0aGvGGvKrHw+-P7!JhHuy0e6DJ^YI-SUbEohIx#?gf%S8L5hp@q(c37 z_xQmw)n4t{@=VGI*0A%NY!gH_jLtlpu-v$Z$S%v|3mJFX zv&>T#%5rJS`E;7HTrw*%;`?U%O{J5vd|5)sF`r(IhaPiIAQbKw&z^#UU9a_A$~m%J zA`q<&V2T{wnzhe2gQS2ZtL1x#Bb<%4{3r?}XWh0{f1jy;GuO(Z727q|~a;QxHSZzifn zVDer~GhubzbCTxIydzD3;gvfRXh+(i10qWmizN3A2E9iI$$euw9Ha~$Za3_YJ1fxC_v$-kKx${1eqDSx2Z!0`@S zhSLY3s%#(-45JV01`H4HzU4U7he2Z=F_eXfFEZy+$V~cOMjn`zyo)uTz22}7d|Yoh zPK@#1X<~H3>{F3!P98BmyJwA3w1$xg4#qEN>TFt%v-NUEt@?hG+;WzawYRIgqw5@u zkz#NzZ`x|!pfn$T(ny^HUUTX`VJ#y?VE;zT7%4O*tYD;ePqBEBk}>tV#kryyne86@ zmdx3dxI~mfS){b3y}P%o#m!IN*_*KI!d@ToY~e6_I%MO9$77oHlce4?)sQpwvqOLN z)rnhBukG>bLDYr)uoE!NfVxwg=5vi#{}D_!Uj_WI%@QzGRo(fGX26BtqAt=6Rak|G z?Eh;RYv*g)xddjlpagBg_1tcC` zdHlX4;Y0JO;=%B--L~cJ9HG1-OCEJn7JsWe^7f>Wmjiq1l`_b+1m>FnWfA!8*Upb3 zjTywDX_CPQDBI>1F(fcQu z!RpS_ehVViJZ%^3$tUol1k_lF+j7{`EY9RB6i3)gx-5mg9lqTNUm4sPK891mw;g;U z3)W649QHvTMbba{m^PUA%})8&YnplA?9!3HGxCI~D5cQDT%MVb66xlBob#C{M#c>E z(Jy9x1A*^QM$}wYhl$`|t;)XW)*N>xnDlN5F5VMSqm8HIqWYzhs{9tHOeFqkQ>XR;+EWkWXov)8A%8Ui>z&j_aSDm1< zZ1cqtzF1Axz&799+jF+OJ2o1#!_}*X>lwlF!7ZaB`}r+cb6`rC8(W2|3O|f1Y4`c` zM`FkiB+mfxT5mw`e>=1br=6bHpw1c0e*^OhWwTqi&vBI-3mk36 z;r#dT+oMd5v+Pk0>Fl_0m@?c_qpf*P)rJhu?u-o2jhPtlVOf}n_l5XQFhTQYJAX9%tY5q@li%G4T7HJp?x8uRC9vLdEl2j22>pHKs`vX% z#C@LfHY>~UM6Atp8h0Yb=M&N>8~THE05E4K_@_D?lM_Pt<@={N?=$Jm@aOwOP6U|1 z`N;(TyPUU7csXXw_vbmI4F42GU+(5O=W!GKlhi$mFe+ep`aSvgbr1a!!^^rm5qnt% zO?v3~UF7`8=+B4yWbBRkqM_-H^6#|j1L|L{GUxILm{NfhI1|`mwaA$|k+kO} z=j<_zggbHYT<_z;wNVK{NZ!CTl6AL$DKY6B#fnKH@Ke0Ye8D zP9WkOZ%|$YKg#3pVTrE@L^$$cFCelXlK2|FeFz`N50uAnOZbN1ZpSwaf?chE$h+Rd zR{_4I!UQaQtH5Wc%Ms{hx>7IWBYL?$YwKm7Pd)*W_iI?#e0$UI{m>J>ec=172m=;* zyw}tY-%%^y$RpwVwns1TP2f0DK;-R&g&jW59a8aSd&1WVnrR{+@(w_lEpKlczBwMg zqu^6>Q6o^~m4MHV?-|6GZq$vTrW;?DS?WcxQIG}0JYyzex)8`?%ge;Ltrd2Zr^dy= z%*Sc?kr%;Iz<0wre-M!HdCUE2lzS;JltI1xy$b(Io)Opyn)45Vbn@P`WnBJV92 zYkG$S=;r%0` z_X@*D-S08+5WV}MHw1eDiN|H&v-R$T-Vm6WZ;Ur(QEwf7DjvXumYHyEC>7IO0j?*jur;LS6#$){n(9pzM+8?nUU8LUQvqOdZur9bkC%|VPEg%_$(9d z`}=^?n;U&)`qde?zBv?#{%ZQwSdkA$w+Cwa9u1Wr?s_u#y_Mlz&&1XgXx$@N|%SpCcl)5_Vccy=AT94Q)Nw8GT0B zT|KPSY!rQ?+;F^DyZkb3jPc8UkHMlDF}EiF*Sc2SZgkHHRs^- zVd<{dg8g^G5%R*(KmihH2aJWtqXRDmdOG_KTiFn+c{2kCE>RvID%g!6x`BbO3Y3SO z@>jZkF*I+4!HPV->+#^OO=we2{+t2G-t~BI6M{4k4zKlWKq$&|fNp@X$OLGa9iX#? z=K=}O$%~+Y!h`+eVanL8Qg=FDip#)DYY@#sQ6GIum#X+)RoIp>@%s=qN8gh=@JX8M zH@)xL<(r00_Jx?Lil^SS%ZdJxQTsUBPn~^kwq+rHnP_RU%HIz5FM>O+cx}bwjk&6j z;|pVJ0O`8Qt<+K`fVrq|E_ z#kOGAOTqrHfB`af=?M07&dqa9 znLJ3lUB}d$aBP5=I4C#kluRTn3(s(J;ZcnW)4FF_-(Vo}k`6+wHhp-+zlm@q!az!NDiq$0?AhjiS=7iw_>MtSiV-MFY(wKWrnzCm~$9tRnxd;$-A7 z#4N+FBjQ7Ou2k6kfi~kur3oJ-O(u;bHZ{9V!GQy-UnJY@#X2En$=@try;Qy~H^Mk*5L|KQ-2QbIjUD z$2u=$s!s&E{cnr@Jo=>FAflLW!j;C-0OmvockSo1ircu~fQ?;zYdQ<)7j;QbRS^r$ zRS}19$#KdmoR{b`prx<0>Tu+>$V>1X|J;ve93eqI`lEa&kh$)U7WN%%Q;CUGFGcV- zIjcAMH)X8aq|dzf9Sq_6<(@$F(9pNjgygEkkR&%IKST#ReDW6j^X|vcWiBt??(`jG zW9Gl%u^UeE8@zi}d-L{oT!-o0kbh(7hN<0GPi?+>YWIy-hsHTGS9Z5_bq9fEI@Yb*ZvL<9-PqQ%vHhyfwq9H#IdjGK&FebambY|wv~2-q zlyqpsAy(zW)hcxr<>t*zol5J}?htS43~gw_4VKO0lpP&i3&q~sF8rI7(RD?-D|qMo z{8_)xS0Ry9Hv#-fw2hu`*Wvh8%%zptVgC!+WmVbpDzhsVW`}FD%WB1}?$Bsf3GV1S zW6t^w+`lBduu8sz`&U?mgeBb`0M3C5jGohILhzRu=9=uCW8;DDA6p4}=IZl1lgU)MXN2^s@8a%s1Mvq1A4LEgrrbY1I#_yWm#`ogpy6UTi#W)w0Mz&*az^7ti>rV1FUm z&O}&(T@Rmi=M(HYcu*;%!$$H}YKaFmPBHB{SG~(j5bKl6+D@P3+oJ4#AM(vdJU{y` z{C0!h<3mJzOF%=IOD~2QsSKV^!R~JS?tyu);zg$WkawW9U;0bW+YjEm;6Kh!zoK`8 z6%Oi}@6lCvR@sT+K#?uPk7pcHVsb5Ga$1^JaT3mHr6)z9_(b z6FUsS>46VliT?rVO|#HZ(3FKwx5~X8^kkT?H*^c=kHDO3Xr4j&9L&^Bd3-bKyD)Rz zi}VTLui=L!0Y&r8D~16}a*Eyx{y2GW=|Nc*aD|r2L-p@PU};j0Na_mJqUq>) z%A%gBz|=FH7tugt=qPFMf1DWnpC$(XzZmzglOC<>ApIYvJvLpvO*{qR z@M-^-62t#{h~a-aF!{O0PJJIRG}l2HZmv7?o_Mb3VS9@LA2x%8NMrH8l{g#al^B)( zC^0hqd14f#-6p;7M*3p=PW%p0>q~T`7{kBD^*!70k#J*A{TxGKOF`rH&20+dYhKF7 zJ0s<_@y9zmntR(?mNa$BVWRkj?;E;%ns7sD9Y?X&p%*niO&p2JE16(izq!-VgGWaV zKGps3&21Q<^2HkO{qLT0(=+NC8#nZ}uWxL`DW$qdcmwZ|S0mB-Es5uD>dKWHRp1Gx z`uf&-xF`5d!LYuqqr1g9&u1ai4zSe+RP!OcxXjHAbqN)2zted%i7!@# z!LPD)#%wXn5<{sNlHZan7AMz`bWeT!t8&$9m^aL5Y`l5fw#H6OayoGBKTfwbZV976 zj||>Iy+Rdm;eOT?)C~bRD`5Sn8C6+9x^Ka(pEh3wXf;k(zH}Q-Bbum$HTq7peTA?? z)1<%k{yJj%n4wv$NRwJ44|*9RV3UOn6oVfY|g$)n6~7emjDv)4GtAU4aSTIVs&7fp z89pEdWgO^PKpBL!Fwkt&I^^Sh!U7W3HDI#SuM^=b0~5o?F{gxY6aA8(XVA$F0v@h>+kDvwB?iZfMqv*e1(Jy-nASq^Tm8vy%`^^ z3`ET_Agt%y@R;_Z*V1;dnz`p`RCwn0F`0WtM-_IT5Nku?y2L{u}@#_CVU8s_N!?33GBK_B94otDbhKXE}m3Df;q(xBYi;d{q(byAtUj;-Z7G zekCb-0JmO5%LW49i#`>t%-r=7mii{$eo?foAd~Tm&eQ6BuS9PT@Is6oT>X1A;NW7) zJT7ADLLw25mTLCCGkMxUe@F-}J7V}KGE4KA(!@a-hTyyEu&n#n66)stt^lO!VyV@+ zc^2jDS%2o9 zQO>XY{|xinfr&8h8HGVA+_RhojY`gKRtf@55_xt$8R)Y4mnO};u@#;11agt)W+Z=zRc(S&Qag( zIQ#1#599NG4AH4S$N2+F;2(SwzvRc2WsqTmx-+ITp}Id*uoE1TW4+f5>?pVp-;TUR z&Xmv*6*-gBD5k^5`VMwl?bJK^ac57+PJgsOIa04tsM$Nr?J3CZnSswcVSJXfTdO^L z@NE*z!_VSd%2=`uYzg!Z(GNb&WTBzRb(@BRAtt-}+LD8+l!ay{SM<0{FS0GOA*ug> zuh$%3&!|{M=8&%<;e#c(njGG_%T7gqt9}6@6XMukun$(Ep3!_n+01>U;2}5! z`=7*s(QUitxu!bTw9uIP3pm_}&2-CaEfTPvZD_2jV4i4DcG9Yx$%E6v;IgWMI#aE-xjJ3ai^Z2NHzuaTXOMA^F{-M$$N1I5xHlMIWE)^Z zTyOAo#IEmvi5eI(G3VBPVYeoFV6Z~v<{t2piJ86T@)!=aRxzZE^x`}^2vGM{_} zUeiZ02if6f5k(rsJ$I@>Ne}YO3`M}$5bZBGikQJT3DL;|c?4v1cfo$z_A7*KbOn7IDN^5bb|J-JUqoq2s!35a!1ZW= z>)_T_nOTs7i_&PmbH)EvdZ ze^i@jHLFR8X%8&zg=#-+4K2`MT6S!g2u5}5F4Y*r&U%%}y1g~=lmax8frZ=5niq!c z_QtJfY1-F24zgF`uo|7Bs=&PyPsULC4HfKX>w?H$cXBffCojRjp-YA?LYIK1Y1eRY z*A!awLX08!f#oE`v7Cuiex_%Y$?}x>{ff!&Noe5QoI%OohXA2#4x*y47mRvS1jFGo zLqAdBTjT3(8S0RL-!gOnArJw*|337D8z7c`257Yo(8$A+qN!G?6zpG)5xhzl?$$$y z9*442l|Us^&s?}QAOKTU0M4qv9;NjR(j;EyRiXxW-G}MK$zR}~70ckRpV9VL_=mI- z(DPTlS5r2|?a=!)r61ItqV5i3wSnnlg8lym@6iJXUiWW2`Lzcgc;Jq=R;^rlQLyh7 zT1zGzMiUn1q}ex6wb>a6d<4@r3_Ea}A}UAupU-K3eLsSf8(kVes%W-Mu=Cx6=+mlsioSk0kjQYgt@IqqL0a z8_YuHae&|ZKNj>bgKRG=i44J{XTmZu{22Lrd{ z^!@&nWIQzWJ>`qeL9&OU%Q)xAL+Z0z%Y!&ws-zo&9oY`!7W{aqg1bs|qtFm@PV&yX z=*!c79*rjDAZ%!qXI(m2C|qk%++xD0jzzLMqdv0KZoc=A4Pi_MmS2{ zkZVKA`ZdPadr1s;nyTtGM%Av{jlbA3oj#>V_E?9iV|np9HqS~K?E!(v8`zlB_q$UV z|1&9dKhJbQoqN(3oq^(+r|O(anKoVDp49d2BvLJxbq*^6`Rr9)ZKXQL-js9&ZCtQ z@*^Aob(cr~qyikC=EWdr=)yo@rY`G&nIxgI@6hSqf5NzFO)QK^wg-o$E{25NjqPX@pHxXKKBOm{d7c~Jgp?~fpP(#i2E!BOu}4hKpXA#Ep> zAML5dTn|+$dLphd*7atz^G&4Z{L=_~#p!{H(}VNhRKcHrMx)b21ItgBAL~7a5}J!n zi(A=sCavi+WQ zh|lg>iy9z@k>ysLh*%Q(cl&CNYQ6{*+!lPyEj&EgZ)Q8Z!_TMRuio0vWv325pE;JV zl`pbOe4#RYpl6Ry`7QA#7xrb2WQcCD(S%1_BIuF0;d&iiFz@jqOs?M-!%NR6~ntGw7he71urAME|v3N!(3{ulc~ z^O663I{$v$h#d0ewj=)>1Rb*X`G>c{Qtd$3)bj7V7&?g#1H^qMiU`FJ$TpZPMzzP0 zs=s$sHr!YV`t3p^HzZ|ixqL~#xOf}PV5ste3^HezAOHUp9Lc+D@z-%ja;IA(jr&R8S=!qyXQ z%-8G;`8Z@gp~H`dS&p zFrCXXtH|xROAyuzwdZu_h5bWSf7B{THsK4cu%JMXNd?MQ$Tzuml-JO)vRwEbd*qgf zMgrXBjS;HYH*eB=I@=B<$h@U=+8)78;iPyJ8<=z9vYWn#Ysb*VK;0NV%ls1rU=jA*3e9DY%|CPp#OKt}humIV1$uFZ{VjXZ<^MSv zy>@$+TaCn61|qWuy>^3rn5U&wRS_~7Ro@p2eP3Lx@5fN|VSG`HI!`@ETOGn+<1sus zDvy%kTVa1j{uv>T)290{ za?F63qSK={jU`EUyt9=W}}@AaGbQ375-$m12-c-&#B?q{mI@0m9mIk6s5aECtTWT|G7_FiXJ!D$)gq8ADj6C`pXgOf%2 z$w9-me0!f}WHhiM*Y3anZT_Q;pIb40PS-Vzs`?n&7O8#yYN!p%>gsHV=x-avH8X#a zqoA-rHO@Gd9WqBbvEsScP)r9&bgWB(|nWDiy#35ZSQua4$ ztVa{eX}s0GnNL3Udr#s?hCfPUaqDq4<~x9)OUwS@1NQg)JGpsH-J+Sp@J@ALa=n-m zsNS8c+>)!jJ-Zcim%G{SaV+B9t%h|4L%m$@ZjKNFP*5wo#fvuo5>bP*H~-PTf&I@m z_CH&Wpr5&~P4++AWdE~G_CL2A2^|*w&p`HKO!ej`V5O9u!_zREhej9UblD#pSAS4f z1RO@$Gt$6HRIL`2osOB3@@V?ODOQZuc1?VQiwV2S(i5^54*lv+D^RFSp{G;l&m8&I ze}d-B*FsPFZ+k_cWY*>u)6UmC`UXO7ef!mS-nnJV+I(_%S*9YlwG0hJMSdFOh#n0` zhk9N^+o$}r-$F3BvveHbYTOb!QLiD%v?Q~Z!hug_4+MT?_)z+ zJ>4EO7#hy(-)j4|2L0MrtVJ!aTY|iDILMv~JBw9fQkjcIv|^kSSLKpzz=6u)UxP5x z-CNfIBgIKrZKT3g``W~0?7p^YGT+x$MIa`kres(6T*@Ohs|j8gL5CTW5b)VsU_kfw7Oh zA!fF&U?&A?KIR@GmRRGTh`HtLM9y0yU7{S+#)WqxoP!Tz|AuU6up7d5#}8u|*U|Mg zjAS(AB3^1JSk#0tne#d1epgG??y}ok>&h|MOjhqI6CO|Iv}X_bAKa6lN^n@eO~001 z7EhVMOt!CvK}4xdJvSbT~CPwARXc((eZjL)Ow@z=bm-%<*8NO5us6;Zsy~;n#na=RY>-cZK zpn4J#pcJ*OiydJ3O$=P)^5QHB|3y1Um+`6h3Na8p2VkH@}xU6HfP?e!4xH^3fN`|HF-Byn< zoJ()TFO1(pg*0n~c?!L)@lr2xPNN*gL}Z=|+eM($Uc3_wo_qN7Yd?P_Gu%}Kt#CVH;?87$vlbj$CN$CSJ|X5bXs~^ zuEp#way&B#`HB7=rtfO}J8uPrU2V`atfAjrou8;ghXVJ8o{GF4)fBHHib(4`6W2>W>s74`PqOt`!{0 zW}5P?cG(EGmOnev!Z3Hzrdpv)$PSs~lG5T_OBqX8R5VCK4wXgm?gBm%PJ9^JZI$`Cj1o%M`BGdB&(wt>#LxYL(7$SAwhEcOtF1C^rUv7yb-o=pR9czExuunu zu*lYgzMq~p{8IX&9XD25>9g{4G-Cy`S9lS6BSSNpp~oxtmX(E$`R@u>?kz8~_h##hnZL2w z*ZekAF%1qQa13hJcPndPIJG6`eS}%DRa+;9G)=k6N3(c! zU#|B)4ykbN8~LfZS=>IsZ4*c<>S498XV9x^;54AB_fSOUOrX{_Y|T8Hzt>hxEtL9y zXxLM{zi6KrI5EF+q_t1%-K2k?*uTjqq|V%Tr68QdDWc9L@ zo#{EzXfW8gF_ubnMMiH9E=DCyLw{DXgV27q*Lu(kqBRgV!gcsU9mK7o5Y() z#7$dwBE@f-1)PKjaP&eaE6_dAAIBN**kF9yg7g#(&N^@S=Ox7whA#IO^&=Upg7Lu-7aSA4PBH z73_jmFX_OY$A5+AWF1~(ofmIHlsd+Pdl)@vF}>)dN!-tVhjZ>YBF+$Vrcs=o`K5?u zS=$MnI5;_8rt>0?Dc2*oijm;PgS&8?xZD2+0oDMh6nnja4WPW;3W^_lej9-wpODBh2{8rpZpz^QqcL2Qz zKj7lyqk#d5A6EF+1Ks-rGY&r~;QgrcQ2_)|zC43MC-A8tj=V<4uP+zq)&m3%uF$&@ z8Ik@K3V$_aRfs=o`fpeGjivY{^jQWC3csJ_cBF(yiA-+?%Ihl5MTCWED&pa}gT*~R zGI?P{ToK_pF8qu1H4&FhZfX@bNVLk}Wg-|iO2EGy*Gud!K?gPG!inWzzfDwN+^zR# z^Xqv?r$sSau9-nuaD9ceE&CNcely9q9F1Dm=U4rDaXoeoW!cr);b7?}W0F z`m}_44F`1>_{JRoeUqzKXk&;kF37V_s5;`j9Fxmgq0{l>^ECWuclnItz}DI7c?Mvu zdaeWfpn5(RkohA%?dtjJ`2xV%>X~^8s^>X?P3pNBaGrV&0WMI_3l+Q=koJeP7va~U zo;v~8;8*Papk%=Jyu;udj0lG;gGQUR*Ds%mM*j>1@SHx=O8>(Mr#{HMwOOBopXc&V zQQHh-apNeOmsixnH^e#eptMY#h;luEApAf@$!ha#2W%;#P%iv!I{|puW zLHK)(@Tu^#Ud~kEzXt!W;#ueSC-6T3zs~PJ!T&S(2Ngbb>FaowZj!Yb^nRedI2Ab? z{$CpYM-cyr;m;x5b(5?$@KfETn`9jYen5Lc?@RDE82*pIf0yBZU6p?a-g$7Sr&8G) zFZ^Xz#QKy9m;R;JcMAMVtbc$k>1232PUD#VW!C2z04Kv&So&Kd(!bnVSwL^4L{|Sx z@1$T2bX~bPU1|C`Z|=Hsp+%;jTH?C$f}4qXR(FaUh^NwTi%_#%S1zo8>8B-dUAfRw z(@(8(UAfaclJCkbS_apZ%U+lB0ykhd&wMC1N>=)5DO^`x@MS^b(_*-;yx>M&hSPeu zu3T6U(|@V!!BaW(!*u21i+JvvatnvU3|DR~HGGWEn&!H4aa*kEU*UT2RE`^>4=Mep z{><=nTJ1_-iHNFY9dhb|^v|RrQI6raDShNC`e*Y2j{VcA_?X06Lq!;VI_e7@Z7RPV zvQGG9Uz6W%`H}LoPg3hS*VE5o(8L;QWAVX zgr8?|E|!k%My+Rp^;MNWwxPA2h1NMVY;f!^)Own&b9~ZI8(r%OS=TCh?1R*L=2*ij zzieY`Jr`TcRC?J5s`Xr89a8bx2dwp+W!0!E#(re2XPVWn__Hrsi_0sXRq@#l*LoIN z-v`u=`G2&?Z)y<3yNb$lp|U5W!SK6^;;$_V7ppZyh9mx;%<=~A8;1R4_&*lW2Rv=Tfc!VENknLgx3RTc;!x>TfLG&`hC769vcz>(l zrxpCFf)4?DHd)rU=|{Y$)cY3{{HcPkD#&}^iQfdsbSzNtDnMLYXz?I|_a@8wBHyEK zurK08W&IW*rWPLOd&ukn;RMTio)C5ZWrnXtTTDOl^BQ3r&Vdqw&P2$Nbo_*%Qv*mk zXAy!9?`Ei&Vp($-4mu(F5&sfGEqp9yz8i$;Yc6b3EqvA1oT{KSs$l=l4aei{7(W> zzu8yzT!p(cs2_mTKgwaQg6)Jz$7O^_$4!70C&7*alI|;n8*v{#Amj1dW^8lL2W0p? zfPDX5`hoYN^7Hy8_^&!GeT!6s$E0ACMA>WS>B2Ay< zd&rmf-wS>Uh80{w2>rQ7`5#p9fP!xUihQB07=M9+ev~ik4eJ%lR;CC{XSp9Un~ z&nx%KLI5F zUlW3_&L8U=@t`UKZ#y9I%=+y`rK`pJ3iMHC6AyQSGy#_P$o8uI3fvJ!|7Ioke#_cO zygujwp+QAKAnp`l-2ApVU?uK=GX zK8QB3eBu9oSPtALOkRfECtl@QA9#6_Yfkz53BI! z0V$WC(~oi*0jxlzH|a;Y{{fKY&O3!z?ws>wxzm1nL3Ab|%AGrXnNMy1r;-koYr29$ zpWvUR{2{^t)&IF#^?!Qt60VHGCLDwv1N59H$MK%?E$cJ%FUL2m2|?^3!V56|Ae=47 z z!Fh58OROEr#X{!_I`fLOIdc`BTr(8tCCh&NAf9o@-O6R1>E>v(zx%piBR-C0E=NVN zp4K>96GC7dsjdo)Y1HN2}BF*@_pyi}1h=oLhRC~vk zm7V5#VP`Ok1w;K6yv}s6(M+QG4ZMx1)NDsYT#a>a;*+w+_m#IL(kKYIRER}Wtl=hc zqZ(FF)y-_;Q(?tS__Dp^<*3*AIpV_Af5~)aP+#mvoxsI@t~gaf6Z*D0u@0j5O#wyMuOCg}BEiyi>Jvx6(li&dOS7bw#~p5S zR95BtNN{fPLi$*j8wvq085p?Enq73wVRU`}*23!yu^_GVymU=^v?Xa%!?+@i$gHZo zFYvES7@wj`Z0?tYu>hVZ6_`<<^%ej}^o`AqMsuTpsPq~sf~v!{f9R3E}=^4 zI1OKp=m>Lk#Sf|t8r-(=XHbiGd00_(m1H!P*%)n)ZbVhZb_gXsqweuOdE8qG z8xq7No?S4wPT8k)3ubZWjY=?DxcPfsJ7){ak&SsiZHU|9YCaibYboruwm^q5p>!cRmMjSno_e=BRzre17Mkr^;D8f?UcsEPjW zX#Dz2tXBrF?w|}IRx*wD4|K;xBZiiTn^mIBg$U^yz&8h?(n4e73M3~Y>R?9X%g$Eh zE)j`HvaoI&#eB~yb915}-@r(V>VrIPO~wXA z?%F$KWv5cV*TRU5E{x7gqe>hrI~PUUJC=zQbw;B2bByQM_wbe)9u`H(rnB)h@TT>H z-Cez`b3O`3e}>oTJv7c!^><^eH->VJ#x|jchQ5K2@CghD4BVP%=iIRh{M{v5CUi`q z%7ncac5@Co`0>8MUhE`{_TU0!Tq2#gJ`;~#7vGNI%w}O|mqLi5H4*hg$xT<2G0ml_ zqKI>X%H7!>rA39wY#m&+2DdGb^G;@``(04k-aGR;ubZ0{2ewB>Z5f!=0s}Bd_qoRI z2X$-_yDL?rU#d3a-C$Y#mEn-SdOGMlg{)$v`6X|H^PPCklk*UqrvvAeL~PbULFdVN z2s(FV&n<};bgs{KpPEXr8cXli4$g5nI!~oo?#0{Ally?nxaFnZLH7yeH_#nR$9RW( zaQ1k=)vV|=Hk711*x)e19LRWG5Oa~3j&R)m#h8z-a=e@x6E2AdJ_B7i&JCIlQy0Sh z4s#+VUKnpAW6;BNT|xQ|8T2?msnZvLKumfaD1Bbl{o! zogbF_x|m<;ho*N5CP__thd~dl9jEE}foIa&5VouUut@I|{4_m&H^!vbfHeuOM{B3) zeW)mXJHjXryd%9+@zeB*_4#2#pW_OTxR;_31z*shy9Yw!y1#as?ly!0FWqW z+VipUTV?RwsPKr(HB6K5J!i}H8UzWa`7Q#UDd!i#w;mYeiz)aq`A#?ZVhPWY^WGx8 zqLOf3N;}P$-{~>=a+_BJkjR&Cto+s+d^adO;$BfC=WwlMasQEan(rFmnS2|-cL|Wl z7fU2#@@+EsUaRoPHvqe6%K82e$bC@=5>E5wH^fc8+rSq~DuOSTTE^rXHuy#rp5R+# zHx8ep_Dl<|uHBekWH;^yU)o3JH>BtRrKG>H9DMnnc-JUA^8HegeIBgGK7di=Tx{>x z82N}9^lm{TTOhxg@*7G(5l+kRM&Oz9+mC#JwMgH^fK1zH`Pg9a-K6k{`(#o5s6r*< zelqPe-@Qfk<1qLR0*P{2grDZi4vxr&BG7TZv{%aO*zrFCN#sKXY-n@)e=w~My@{wF z%nyKY_kbRGX{Vo`LHkI)SmqOsc>GqAb`0Z>=Q&Jzv#@?hd!?PG_sIK7@pKq*_4B8} zqnMr!Gx0t?PI^y{lOFF68V}#kjT5hZoasAhoOqNex>!!RQO={ug?TXb;2!7!-%+nR z@M9eMi|bLZq0h?|9&uk$dZ51_(=Z0#mw{*2qumDIPDPJ=v(OjnO#^;(O`zxF3+4F8 zUndmQcx^4bP-94_!#;sT@>#1U@zRi~c3MVv;=z>5{YYO8B2q3`qIcvHn&8qRjct(2 MVP%W8Tv&(y3s_Ev5C8xG literal 0 HcmV?d00001 diff --git a/app/src/main/cpp/Dobby/x86_64/libdobby.a b/app/src/main/cpp/Dobby/x86_64/libdobby.a new file mode 100644 index 0000000000000000000000000000000000000000..0ac4c6328a96a3efe8a858b2a6b6c605ab3a29c7 GIT binary patch literal 324824 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 literal 0 HcmV?d00001 diff --git a/app/src/main/cpp/Includes/Utils.h b/app/src/main/cpp/Includes/Utils.h index 5f98c36..4d1205e 100644 --- a/app/src/main/cpp/Includes/Utils.h +++ b/app/src/main/cpp/Includes/Utils.h @@ -1,109 +1,70 @@ -#ifndef UTILS_H -#define UTILS_H +#pragma once #include #include -#if defined(__aarch64__) -#include "X64Hook/And64InlineHook.hpp" -#else -#include "Substrate/CydiaSubstrate.h" -#endif -typedef unsigned long DWORD; -static DWORD libBase; const char* libName = "libil2cpp.so"; -DWORD findLibrary(const char *library); -DWORD getAbsoluteAddress(DWORD relativeAddr, const char *libraryName); -bool isLibraryLoaded(const char *libraryName); -void MakeToast(JNIEnv* env, jobject thiz, const char* text); -void octo_hook(void *orig_fcn, void* new_fcn, void **orig_fcn_ptr); - -DWORD findLibrary(const char *library) { - char filename[0xFF] = {0}, - buffer[1024] = {0}; - FILE *fp = NULL; - DWORD address = 0; - - //sprintf( filename, "/proc/self/maps"); Buffer Overflow warning. shit is depreceated - snprintf(filename, sizeof(filename) ,"/proc/self/maps"); - - fp = fopen( filename, "rt" ); - if( fp == NULL ){ - perror("fopen"); - goto done; +namespace utils{ + bool is_library_loaded(const char *lib) { + char line[512] = {0}; + FILE *fp = fopen("/proc/self/maps", "rt"); + if (fp != NULL) { + while (fgets(line, sizeof(line), fp)) { + if (strstr(line, lib)) + return true; + } + fclose(fp); + } + return false; } - while( fgets( buffer, sizeof(buffer), fp ) ) { - if( strstr( buffer, library ) ){ - address = (DWORD)strtoul( buffer, NULL, 16 ); - goto done; + uintptr_t find_library(const char *library_name){ + FILE *fp = fopen("/proc/self/maps", "rt"); + if (fp != NULL) + { + char line[512], mod_name[64]; + std::uintptr_t base; + while (fgets(line, sizeof(line), fp)) + if (std::sscanf(line, "%llx-%*llx %*s %*ld %*s %*d %s", &base, mod_name)) + if (std::strstr(mod_name, library_name)){ + fclose(fp); + return base; + } } + return NULL; } - done: - - if(fp){ - fclose(fp); + uintptr_t get_absolute_address(uintptr_t relative_addr, const char* lib_name = "libil2cpp.so"){ + uintptr_t lib_base = find_library(lib_name); + if (lib_base == 0 || lib_base == NULL) + return 0; + return (lib_base + relative_addr); } - return address; -} - -DWORD getAbsoluteAddress(DWORD relativeAddr, const char *libraryName = libName) { - if (libBase == 0) - libBase = findLibrary(libraryName); - if (libBase != 0) - return (reinterpret_cast(libBase + relativeAddr)); - else - return 0; -} - -bool isLibraryLoaded(const char *libraryName) { - char line[512] = {0}; - FILE *fp = fopen("/proc/self/maps", "rt"); - if (fp != NULL) { - while (fgets(line, sizeof(line), fp)) { - if (strstr(line, libraryName)) - return true; + void make_toast(JNIEnv* env, jobject thiz, const char* text){ + //Add our toast in here so it wont be easy to change by simply editing the smali and cant + //be cut out because this method is needed to start the hack (I'm smart) + jstring jstr = env->NewStringUTF(text); //Edit this text to your desired toast message! + jclass toast = env->FindClass("android/widget/Toast"); + jmethodID methodMakeText = + env->GetStaticMethodID( + toast, + "makeText", + "(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;"); + if (methodMakeText == NULL) { + LOGE("toast.makeText not Found"); + return; } - fclose(fp); - } - return false; -} - -void MakeToast(JNIEnv* env, jobject thiz, const char* text){ - //Add our toast in here so it wont be easy to change by simply editing the smali and cant - //be cut out because this method is needed to start the hack (I'm smart) - jstring jstr = env->NewStringUTF(text); //Edit this text to your desired toast message! - jclass toast = env->FindClass("android/widget/Toast"); - jmethodID methodMakeText = - env->GetStaticMethodID( - toast, - "makeText", - "(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;"); - if (methodMakeText == NULL) { - LOGE("toast.makeText not Found"); - return; - } - //The last int is the length on how long the toast should be displayed - //0 = Short, 1 = Long - jobject toastobj = env->CallStaticObjectMethod(toast, methodMakeText, - thiz, jstr, 0); + //The last int is the length on how long the toast should be displayed + //0 = Short, 1 = Long + jobject toastobj = env->CallStaticObjectMethod(toast, methodMakeText, + thiz, jstr, 0); - jmethodID methodShow = env->GetMethodID(toast, "show", "()V"); - if (methodShow == NULL) { - LOGE("toast.show not Found"); - return; + jmethodID methodShow = env->GetMethodID(toast, "show", "()V"); + if (methodShow == NULL) { + LOGE("toast.show not Found"); + return; + } + env->CallVoidMethod(toastobj, methodShow); } - env->CallVoidMethod(toastobj, methodShow); -} - -void octo_hook(void *orig_fcn, void* new_fcn, void **orig_fcn_ptr) -{ -#if defined(__aarch64__) - A64HookFunction(orig_fcn, new_fcn, orig_fcn_ptr); -#else - MSHookFunction(orig_fcn, new_fcn, orig_fcn_ptr); -#endif -} -#endif +} \ No newline at end of file diff --git a/app/src/main/cpp/main.cpp b/app/src/main/cpp/main.cpp index 7eaf90a..dcd4d81 100644 --- a/app/src/main/cpp/main.cpp +++ b/app/src/main/cpp/main.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include "Includes/Logger.h" #include "Patching/Patch.h" @@ -43,11 +44,11 @@ void* hack_thread(void*) { // loop until our target library is found do { sleep(1); - } while (!isLibraryLoaded(libName)); - LOGI("I found the il2cpp lib. Address is: %p", (void*)findLibrary(libName)); + } while (!utils::is_library_loaded(libName)); + LOGI("I found the il2cpp lib. Address is: %p", (void*)utils::find_library(libName)); LOGI("Hooking GameManager_LateUpdate"); - octo_hook((void*)getAbsoluteAddress(0x7000DD0), (void*)GameManager_LateUpdate, (void**)&old_GameManager_LateUpdate); - patch.miniMap = Patch::Setup((void*)getAbsoluteAddress(0xF09D64), (char*)"\x01\x00\xa0\xe3\x1e\xff\x2f\xe1", 8); + DobbyHook((void*)utils::get_absolute_address(0x7000DD0), (void*)GameManager_LateUpdate, (void**)&old_GameManager_LateUpdate); + patch.miniMap = Patch::Setup((void*)utils::get_absolute_address(0xF09D64), (char*)"\x01\x00\xa0\xe3\x1e\xff\x2f\xe1", 8); return NULL; } @@ -89,7 +90,7 @@ void changeToggle(JNIEnv *env, jclass thisObj, jint number) { void init(JNIEnv * env, jclass obj, jobject thiz){ pthread_t ptid; pthread_create(&ptid, NULL, hack_thread, NULL); - MakeToast(env, thiz, "Mod by Octowolve/Silence - https://piin.dev"); + utils::make_toast(env, thiz, "Mod by Octowolve/Silence - https://piin.dev"); } void changeSeekBar(JNIEnv *env, jclass clazz, jint i, jint seekbarValue) { From 97b8f4934b2960f34bf57ce95b228c83afbfc65a Mon Sep 17 00:00:00 2001 From: Octowolve <32366759+Octowolve@users.noreply.github.com> Date: Tue, 9 Aug 2022 05:01:49 +0200 Subject: [PATCH 2/7] Delete app/src/main/cpp/Substrate directory --- app/src/main/cpp/Substrate/Buffer.hpp | 38 - app/src/main/cpp/Substrate/CydiaSubstrate.h | 152 --- app/src/main/cpp/Substrate/SubstrateARM.hpp | 67 -- app/src/main/cpp/Substrate/SubstrateDebug.cpp | 93 -- app/src/main/cpp/Substrate/SubstrateDebug.hpp | 33 - app/src/main/cpp/Substrate/SubstrateHook.cpp | 945 ------------------ app/src/main/cpp/Substrate/SubstrateHook.h | 19 - app/src/main/cpp/Substrate/SubstrateLog.hpp | 40 - .../cpp/Substrate/SubstratePosixMemory.cpp | 75 -- app/src/main/cpp/Substrate/SubstrateX86.hpp | 200 ---- app/src/main/cpp/Substrate/hde64.c | 332 ------ app/src/main/cpp/Substrate/hde64.h | 112 --- app/src/main/cpp/Substrate/table64.h | 74 -- 13 files changed, 2180 deletions(-) delete mode 100644 app/src/main/cpp/Substrate/Buffer.hpp delete mode 100644 app/src/main/cpp/Substrate/CydiaSubstrate.h delete mode 100644 app/src/main/cpp/Substrate/SubstrateARM.hpp delete mode 100644 app/src/main/cpp/Substrate/SubstrateDebug.cpp delete mode 100644 app/src/main/cpp/Substrate/SubstrateDebug.hpp delete mode 100644 app/src/main/cpp/Substrate/SubstrateHook.cpp delete mode 100644 app/src/main/cpp/Substrate/SubstrateHook.h delete mode 100644 app/src/main/cpp/Substrate/SubstrateLog.hpp delete mode 100644 app/src/main/cpp/Substrate/SubstratePosixMemory.cpp delete mode 100644 app/src/main/cpp/Substrate/SubstrateX86.hpp delete mode 100644 app/src/main/cpp/Substrate/hde64.c delete mode 100644 app/src/main/cpp/Substrate/hde64.h delete mode 100644 app/src/main/cpp/Substrate/table64.h diff --git a/app/src/main/cpp/Substrate/Buffer.hpp b/app/src/main/cpp/Substrate/Buffer.hpp deleted file mode 100644 index 34d9df3..0000000 --- a/app/src/main/cpp/Substrate/Buffer.hpp +++ /dev/null @@ -1,38 +0,0 @@ -/* Cydia Substrate - Powerful Code Insertion Platform - * Copyright (C) 2008-2011 Jay Freeman (saurik) -*/ - -/* GNU Lesser General Public License, Version 3 {{{ */ -/* - * Substrate is free software: you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Substrate is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - * License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Substrate. If not, see . -**/ -/* }}} */ - -#ifndef SUBSTRATE_BUFFER_HPP -#define SUBSTRATE_BUFFER_HPP - -#include - -template -_disused static _finline void MSWrite(uint8_t *&buffer, Type_ value) { - *reinterpret_cast(buffer) = value; - buffer += sizeof(Type_); -} - -_disused static _finline void MSWrite(uint8_t *&buffer, uint8_t *data, size_t size) { - memcpy(buffer, data, size); - buffer += size; -} - -#endif//SUBSTRATE_BUFFER_HPP diff --git a/app/src/main/cpp/Substrate/CydiaSubstrate.h b/app/src/main/cpp/Substrate/CydiaSubstrate.h deleted file mode 100644 index bb806aa..0000000 --- a/app/src/main/cpp/Substrate/CydiaSubstrate.h +++ /dev/null @@ -1,152 +0,0 @@ -/* Cydia Substrate - Powerful Code Insertion Platform - * Copyright (C) 2008-2011 Jay Freeman (saurik) -*/ - -/* GNU Lesser General Public License, Version 3 {{{ */ -/* - * Substrate is free software: you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Substrate is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - * License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Substrate. If not, see . -**/ -/* }}} */ - -#ifndef SUBSTRATE_H_ -#define SUBSTRATE_H_ - -#ifdef __APPLE__ -#ifdef __cplusplus -extern "C" { -#endif -#include -#ifdef __cplusplus -} -#endif - -#include -#include -#endif - -#include -#include - -#define _finline \ - inline __attribute__((__always_inline__)) -#define _disused \ - __attribute__((__unused__)) - -#define _extern \ - extern "C" __attribute__((__visibility__("default"))) - -#ifdef __cplusplus -#define _default(value) = value -#else -#define _default(value) -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -bool MSHookProcess(pid_t pid, const char *library); - -typedef const void *MSImageRef; - -MSImageRef MSGetImageByName(const char *file); -void *MSFindSymbol(MSImageRef image, const char *name); - -void MSHookFunction(void *symbol, void *replace, void **result); - -#ifdef __APPLE__ -#ifdef __arm__ -__attribute__((__deprecated__)) -IMP MSHookMessage(Class _class, SEL sel, IMP imp, const char *prefix _default(NULL)); -#endif -void MSHookMessageEx(Class _class, SEL sel, IMP imp, IMP *result); -#endif - -#ifdef SubstrateInternal -typedef void *SubstrateAllocatorRef; -typedef struct __SubstrateProcess *SubstrateProcessRef; -typedef struct __SubstrateMemory *SubstrateMemoryRef; - -SubstrateProcessRef SubstrateProcessCreate(SubstrateAllocatorRef allocator, pid_t pid); -void SubstrateProcessRelease(SubstrateProcessRef process); - -SubstrateMemoryRef SubstrateMemoryCreate(SubstrateAllocatorRef allocator, SubstrateProcessRef process, void *data, size_t size); -void SubstrateMemoryRelease(SubstrateMemoryRef memory); -#endif - -#ifdef __cplusplus -} -#endif - -#ifdef __cplusplus - -#ifdef SubstrateInternal -struct SubstrateHookMemory { - SubstrateMemoryRef handle_; - - SubstrateHookMemory(SubstrateProcessRef process, void *data, size_t size) : - handle_(SubstrateMemoryCreate(NULL, NULL, data, size)) - { - } - - ~SubstrateHookMemory() { - if (handle_ != NULL) - SubstrateMemoryRelease(handle_); - } -}; -#endif - - -template -static inline void MSHookFunction(Type_ *symbol, Type_ *replace, Type_ **result) { - MSHookFunction( - reinterpret_cast(symbol), - reinterpret_cast(replace), - reinterpret_cast(result) - ); -} - -template -static inline void MSHookFunction(Type_ *symbol, Type_ *replace) { - return MSHookFunction(symbol, replace, reinterpret_cast(NULL)); -} - -template -static inline void MSHookSymbol(Type_ *&value, const char *name, MSImageRef image = NULL) { - value = reinterpret_cast(MSFindSymbol(image, name)); -} - -template -static inline void MSHookFunction(const char *name, Type_ *replace, Type_ **result = NULL) { - Type_ *symbol; - MSHookSymbol(symbol, name); - return MSHookFunction(symbol, replace, result); -} - -#endif - -#define MSHook(type, name, args...) \ - _disused static type (*_ ## name)(args); \ - static type $ ## name(args) - -#ifdef __cplusplus -#define MSHake(name) \ - &$ ## name, &_ ## name -#else -#define MSHake(name) \ - &$ ## name, (void **) &_ ## name -#endif - - -#endif//SUBSTRATE_H_ diff --git a/app/src/main/cpp/Substrate/SubstrateARM.hpp b/app/src/main/cpp/Substrate/SubstrateARM.hpp deleted file mode 100644 index 564b61d..0000000 --- a/app/src/main/cpp/Substrate/SubstrateARM.hpp +++ /dev/null @@ -1,67 +0,0 @@ -/* Cydia Substrate - Powerful Code Insertion Platform - * Copyright (C) 2008-2011 Jay Freeman (saurik) -*/ - -/* GNU Lesser General Public License, Version 3 {{{ */ -/* - * Substrate is free software: you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Substrate is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - * License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Substrate. If not, see . -**/ -/* }}} */ - -#ifndef SUBSTRATE_ARM_HPP -#define SUBSTRATE_ARM_HPP - -enum A$r { - A$r0, A$r1, A$r2, A$r3, - A$r4, A$r5, A$r6, A$r7, - A$r8, A$r9, A$r10, A$r11, - A$r12, A$r13, A$r14, A$r15, - A$sp = A$r13, - A$lr = A$r14, - A$pc = A$r15 -}; - -enum A$c { - A$eq, A$ne, A$cs, A$cc, - A$mi, A$pl, A$vs, A$vc, - A$hi, A$ls, A$ge, A$lt, - A$gt, A$le, A$al, - A$hs = A$cs, - A$lo = A$cc -}; - -template static T xabs(T _Val); - -#define A$mrs_rm_cpsr(rd) /* mrs rd, cpsr */ \ - (0xe10f0000 | ((rd) << 12)) -#define A$msr_cpsr_f_rm(rm) /* msr cpsr_f, rm */ \ - (0xe128f000 | (rm)) -#define A$ldr_rd_$rn_im$(rd, rn, im) /* ldr rd, [rn, #im] */ \ - (0xe5100000 | ((im) < 0 ? 0 : 1 << 23) | ((rn) << 16) | ((rd) << 12) | xabs(im)) -#define A$str_rd_$rn_im$(rd, rn, im) /* sr rd, [rn, #im] */ \ - (0xe5000000 | ((im) < 0 ? 0 : 1 << 23) | ((rn) << 16) | ((rd) << 12) | xabs(im)) -#define A$sub_rd_rn_$im(rd, rn, im) /* sub, rd, rn, #im */ \ - (0xe2400000 | ((rn) << 16) | ((rd) << 12) | (im & 0xff)) -#define A$blx_rm(rm) /* blx rm */ \ - (0xe12fff30 | (rm)) -#define A$mov_rd_rm(rd, rm) /* mov rd, rm */ \ - (0xe1a00000 | ((rd) << 12) | (rm)) -#define A$ldmia_sp$_$rs$(rs) /* ldmia sp!, {rs} */ \ - (0xe8b00000 | (A$sp << 16) | (rs)) -#define A$stmdb_sp$_$rs$(rs) /* stmdb sp!, {rs} */ \ - (0xe9200000 | (A$sp << 16) | (rs)) -#define A$stmia_sp$_$r0$ 0xe8ad0001 /* stmia sp!, {r0} */ -#define A$bx_r0 0xe12fff10 /* bx r0 */ - -#endif//SUBSTRATE_ARM_HPP diff --git a/app/src/main/cpp/Substrate/SubstrateDebug.cpp b/app/src/main/cpp/Substrate/SubstrateDebug.cpp deleted file mode 100644 index 5f09da0..0000000 --- a/app/src/main/cpp/Substrate/SubstrateDebug.cpp +++ /dev/null @@ -1,93 +0,0 @@ -/* Cydia Substrate - Powerful Code Insertion Platform - * Copyright (C) 2008-2011 Jay Freeman (saurik) -*/ - -/* GNU Lesser General Public License, Version 3 {{{ */ -/* - * Substrate is free software: you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Substrate is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - * License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Substrate. If not, see . -**/ -/* }}} */ - -#include "SubstrateHook.h" -#include "SubstrateDebug.hpp" - -#include -#include -#include - -static char _MSHexChar(uint8_t value) { - return value < 0x20 || value >= 0x80 ? '.' : value; -} - -#define HexWidth_ 16 -#define HexDepth_ 4 - -void MSLogHexEx(const void *vdata, size_t size, size_t stride, const char *mark) { - const uint8_t *data((const uint8_t *) vdata); - - size_t i(0), j; - - char d[256]; - size_t b(0); - d[0] = '\0'; - - while (i != size) { - if (i % HexWidth_ == 0) { - if (mark != NULL) - b += sprintf(d + b, "\n[%s] ", mark); - b += sprintf(d + b, "0x%.3zx:", i); - } - - b += sprintf(d + b, " "); - - for (size_t q(0); q != stride; ++q) - b += sprintf(d + b, "%.2x", data[i + stride - q - 1]); - - i += stride; - - for (size_t q(1); q != stride; ++q) - b += sprintf(d + b, " "); - - if (i % HexDepth_ == 0) - b += sprintf(d + b, " "); - - if (i % HexWidth_ == 0) { - b += sprintf(d + b, " "); - for (j = i - HexWidth_; j != i; ++j) - b += sprintf(d + b, "%c", _MSHexChar(data[j])); - - lprintf("%s", d); - b = 0; - d[0] = '\0'; - } - } - - if (i % HexWidth_ != 0) { - for (j = i % HexWidth_; j != HexWidth_; ++j) - b += sprintf(d + b, " "); - for (j = 0; j != (HexWidth_ - i % HexWidth_ + HexDepth_ - 1) / HexDepth_; ++j) - b += sprintf(d + b, " "); - b += sprintf(d + b, " "); - for (j = i / HexWidth_ * HexWidth_; j != i; ++j) - b += sprintf(d + b, "%c", _MSHexChar(data[j])); - - lprintf("%s", d); - b = 0; - d[0] = '\0'; - } -} - -void MSLogHex(const void *vdata, size_t size, const char *mark) { - return MSLogHexEx(vdata, size, 1, mark); -} diff --git a/app/src/main/cpp/Substrate/SubstrateDebug.hpp b/app/src/main/cpp/Substrate/SubstrateDebug.hpp deleted file mode 100644 index a15c705..0000000 --- a/app/src/main/cpp/Substrate/SubstrateDebug.hpp +++ /dev/null @@ -1,33 +0,0 @@ -/* Cydia Substrate - Powerful Code Insertion Platform - * Copyright (C) 2008-2011 Jay Freeman (saurik) -*/ - -/* GNU Lesser General Public License, Version 3 {{{ */ -/* - * Substrate is free software: you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Substrate is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - * License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Substrate. If not, see . -**/ -/* }}} */ - -#ifndef SUBSTRATE_DEBUG_HPP -#define SUBSTRATE_DEBUG_HPP - -#include "SubstrateLog.hpp" -#define lprintf(format, ...) \ - MSLog(MSLogLevelNotice, format, ## __VA_ARGS__) - -#define MSDebug false -void MSLogHexEx(const void *vdata, size_t size, size_t stride, const char *mark = 0); -void MSLogHex(const void *vdata, size_t size, const char *mark = 0); - -#endif//SUBSTRATE_DEBUG_HPP diff --git a/app/src/main/cpp/Substrate/SubstrateHook.cpp b/app/src/main/cpp/Substrate/SubstrateHook.cpp deleted file mode 100644 index dd3b64c..0000000 --- a/app/src/main/cpp/Substrate/SubstrateHook.cpp +++ /dev/null @@ -1,945 +0,0 @@ -/* Cydia Substrate - Powerful Code Insertion Platform - * Copyright (C) 2008-2011 Jay Freeman (saurik) -*/ - -/* GNU Lesser General Public License, Version 3 {{{ */ -/* - * Substrate is free software: you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Substrate is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - * License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Substrate. If not, see . -**/ -/* }}} */ - -#define SubstrateInternal -#include "CydiaSubstrate.h" - -#include - -#define _trace() do { \ - MSLog(MSLogLevelNotice, "_trace(%u)", __LINE__); \ -} while (false) - -#if defined(__i386__) || defined(__x86_64__) -#include "hde64.h" -#endif - -#include "SubstrateDebug.hpp" - -#include -#include -#include -#include - -#ifdef __arm__ -/* WebCore (ARM) PC-Relative: -X 1 ldr r*,[pc,r*] != - 2 fldd d*,[pc,#*] -X 5 str r*,[pc,r*] != - 8 flds s*,[pc,#*] - 400 ldr r*,[pc,r*] == - 515 add r*, pc,r* == -X 4790 ldr r*,[pc,#*] */ - -// x=0; while IFS= read -r line; do if [[ ${#line} -ne 0 && $line == +([^\;]): ]]; then x=2; elif [[ $line == ' +'* && $x -ne 0 ]]; then ((--x)); echo "$x${line}"; fi; done WebCore.pc -// grep pc WebCore.pc | cut -c 40- | sed -Ee 's/^ldr *(ip|r[0-9]*),\[pc,\#0x[0-9a-f]*\].*/ ldr r*,[pc,#*]/;s/^add *r[0-9]*,pc,r[0-9]*.*/ add r*, pc,r*/;s/^(st|ld)r *r([0-9]*),\[pc,r([0-9]*)\].*/ \1r r\2,[pc,r\3]/;s/^fld(s|d) *(s|d)[0-9]*,\[pc,#0x[0-9a-f]*].*/fld\1 \2*,[pc,#*]/' | sort | uniq -c | sort -n - -#include "SubstrateARM.hpp" - -#define T$Label(l, r) \ - (((r) - (l)) * 2 - 4 + ((l) % 2 == 0 ? 0 : 2)) - -#define T$pop_$r0$ 0xbc01 // pop {r0} -#define T$b(im) /* b im */ \ - (0xde00 | (im & 0xff)) -#define T$blx(rm) /* blx rm */ \ - (0x4780 | (rm << 3)) -#define T$bx(rm) /* bx rm */ \ - (0x4700 | (rm << 3)) -#define T$nop /* nop */ \ - (0x46c0) - -#define T$add_rd_rm(rd, rm) /* add rd, rm */ \ - (0x4400 | (((rd) & 0x8) >> 3 << 7) | (((rm) & 0x8) >> 3 << 6) | (((rm) & 0x7) << 3) | ((rd) & 0x7)) -#define T$push_r(r) /* push r... */ \ - (0xb400 | (((r) & (1 << A$lr)) >> A$lr << 8) | ((r) & 0xff)) -#define T$pop_r(r) /* pop r... */ \ - (0xbc00 | (((r) & (1 << A$pc)) >> A$pc << 8) | ((r) & 0xff)) -#define T$mov_rd_rm(rd, rm) /* mov rd, rm */ \ - (0x4600 | (((rd) & 0x8) >> 3 << 7) | (((rm) & 0x8) >> 3 << 6) | (((rm) & 0x7) << 3) | ((rd) & 0x7)) -#define T$ldr_rd_$rn_im_4$(rd, rn, im) /* ldr rd, [rn, #im * 4] */ \ - (0x6800 | (((im) & 0x1f) << 6) | ((rn) << 3) | (rd)) -#define T$ldr_rd_$pc_im_4$(rd, im) /* ldr rd, [PC, #im * 4] */ \ - (0x4800 | ((rd) << 8) | ((im) & 0xff)) -#define T$cmp_rn_$im(rn, im) /* cmp rn, #im */ \ - (0x2000 | ((rn) << 8) | ((im) & 0xff)) -#define T$it$_cd(cd, ms) /* it, cd */ \ - (0xbf00 | ((cd) << 4) | (ms)) -#define T$cbz$_rn_$im(op,rn,im) /* cbz rn, #im */ \ - (0xb100 | ((op) << 11) | (((im) & 0x40) >> 6 << 9) | (((im) & 0x3e) >> 1 << 3) | (rn)) -#define T$b$_$im(cond,im) /* b #im */ \ - (cond == A$al ? 0xe000 | (((im) >> 1) & 0x7ff) : 0xd000 | ((cond) << 8) | (((im) >> 1) & 0xff)) - -#define T1$ldr_rt_$rn_im$(rt, rn, im) /* ldr rt, [rn, #im] */ \ - (0xf850 | ((im < 0 ? 0 : 1) << 7) | (rn)) - -template T xabs(T _Val) -{ - typedef int BOOL; - if(_Val>T(0))return _Val; - return -_Val; -} - -#define T2$ldr_rt_$rn_im$(rt, rn, im) /* ldr rt, [rn, #im] */ \ - (((rt) << 12) | xabs(im)) - -#define T1$mrs_rd_apsr(rd) /* mrs rd, apsr */ \ - (0xf3ef) -#define T2$mrs_rd_apsr(rd) /* mrs rd, apsr */ \ - (0x8000 | ((rd) << 8)) - -#define T1$msr_apsr_nzcvqg_rn(rn) /* msr apsr, rn */ \ - (0xf380 | (rn)) -#define T2$msr_apsr_nzcvqg_rn(rn) /* msr apsr, rn */ \ - (0x8c00) -#define T$msr_apsr_nzcvqg_rn(rn) /* msr apsr, rn */ \ - (T2$msr_apsr_nzcvqg_rn(rn) << 16 | T1$msr_apsr_nzcvqg_rn(rn)) - -static inline bool A$pcrel$r(uint32_t ic) { - return (ic & 0x0c000000) == 0x04000000 && (ic & 0xf0000000) != 0xf0000000 && (ic & 0x000f0000) == 0x000f0000; -} - -static inline bool T$32bit$i(uint16_t ic) { - return ((ic & 0xe000) == 0xe000 && (ic & 0x1800) != 0x0000); -} - -static inline bool T$pcrel$cbz(uint16_t ic) { - return (ic & 0xf500) == 0xb100; -} - -static inline bool T$pcrel$b(uint16_t ic) { - return (ic & 0xf000) == 0xd000 && (ic & 0x0e00) != 0x0e00; -} - -static inline bool T2$pcrel$b(uint16_t *ic) { - return (ic[0] & 0xf800) == 0xf000 && ((ic[1] & 0xd000) == 0x9000 || (ic[1] & 0xd000) == 0x8000 && (ic[0] & 0x0380) != 0x0380); -} - -static inline bool T$pcrel$bl(uint16_t *ic) { - return (ic[0] & 0xf800) == 0xf000 && ((ic[1] & 0xd000) == 0xd000 || (ic[1] & 0xd001) == 0xc000); -} - -static inline bool T$pcrel$ldr(uint16_t ic) { - return (ic & 0xf800) == 0x4800; -} - -static inline bool T$pcrel$add(uint16_t ic) { - return (ic & 0xff78) == 0x4478; -} - -static inline bool T$pcrel$ldrw(uint16_t ic) { - return (ic & 0xff7f) == 0xf85f; -} - -static size_t MSGetInstructionWidthThumb(void *start) { - uint16_t *thumb(reinterpret_cast(start)); - return T$32bit$i(thumb[0]) ? 4 : 2; -} - -static size_t MSGetInstructionWidthARM(void *start) { - return 4; -} - -extern "C" size_t MSGetInstructionWidth(void *start) { - if ((reinterpret_cast(start) & 0x1) == 0) - return MSGetInstructionWidthARM(start); - else - return MSGetInstructionWidthThumb(reinterpret_cast(reinterpret_cast(start) & ~0x1)); -} - -static size_t SubstrateHookFunctionThumb(SubstrateProcessRef process, void *symbol, void *replace, void **result) { - if (symbol == NULL) - return 0; -printf("SubstrateHookFunctionThumb\n"); - uint16_t *area(reinterpret_cast(symbol)); - - unsigned align((reinterpret_cast(area) & 0x2) == 0 ? 0 : 1); - uint16_t *thumb(area + align); - - uint32_t *arm(reinterpret_cast(thumb + 2)); - uint16_t *trail(reinterpret_cast(arm + 2)); - - if ( - (align == 0 || area[0] == T$nop) && - thumb[0] == T$bx(A$pc) && - thumb[1] == T$nop && - arm[0] == A$ldr_rd_$rn_im$(A$pc, A$pc, 4 - 8) - ) { - if (result != NULL) - *result = reinterpret_cast(arm[1]); - - SubstrateHookMemory code(process, arm + 1, sizeof(uint32_t) * 1); - - arm[1] = reinterpret_cast(replace); - - return sizeof(arm[0]); - } - - size_t required((trail - area) * sizeof(uint16_t)); - - size_t used(0); - while (used < required) - used += MSGetInstructionWidthThumb(reinterpret_cast(area) + used); - used = (used + sizeof(uint16_t) - 1) / sizeof(uint16_t) * sizeof(uint16_t); - - size_t blank((used - required) / sizeof(uint16_t)); - - uint16_t backup[used / sizeof(uint16_t)]; - memcpy(backup, area, used); - - if (MSDebug) { - char name[16]; - sprintf(name, "%p", area); - MSLogHexEx(area, used + sizeof(uint16_t), 2, name); - } - - if (result != NULL) { - - size_t length(used); - for (unsigned offset(0); offset != used / sizeof(uint16_t); ++offset) - if (T$pcrel$ldr(backup[offset])) - length += 3 * sizeof(uint16_t); - else if (T$pcrel$b(backup[offset])) - length += 6 * sizeof(uint16_t); - else if (T2$pcrel$b(backup + offset)) { - length += 5 * sizeof(uint16_t); - ++offset; - } else if (T$pcrel$bl(backup + offset)) { - length += 5 * sizeof(uint16_t); - ++offset; - } else if (T$pcrel$cbz(backup[offset])) { - length += 16 * sizeof(uint16_t); - } else if (T$pcrel$ldrw(backup[offset])) { - length += 4 * sizeof(uint16_t); - ++offset; - } else if (T$pcrel$add(backup[offset])) - length += 6 * sizeof(uint16_t); - else if (T$32bit$i(backup[offset])) - ++offset; - - unsigned pad((length & 0x2) == 0 ? 0 : 1); - length += (pad + 2) * sizeof(uint16_t) + 2 * sizeof(uint32_t); - - uint16_t *buffer(reinterpret_cast(mmap( - NULL, length, PROT_READ | PROT_WRITE, MAP_ANON | MAP_PRIVATE, -1, 0 - ))); - - if (buffer == MAP_FAILED) { - MSLog(MSLogLevelError, "MS:Error:mmap() = %d", errno); - *result = NULL; - return 0; - } - - if (false) fail: { - munmap(buffer, length); - *result = NULL; - return 0; - } - - size_t start(pad), end(length / sizeof(uint16_t)); - uint32_t *trailer(reinterpret_cast(buffer + end)); - for (unsigned offset(0); offset != used / sizeof(uint16_t); ++offset) { - if (T$pcrel$ldr(backup[offset])) { - union { - uint16_t value; - - struct { - uint16_t immediate : 8; - uint16_t rd : 3; - uint16_t : 5; - }; - } bits = {backup[offset+0]}; - - buffer[start+0] = T$ldr_rd_$pc_im_4$(bits.rd, T$Label(start+0, end-2) / 4); - buffer[start+1] = T$ldr_rd_$rn_im_4$(bits.rd, bits.rd, 0); - - // XXX: this code "works", but is "wrong": the mechanism is more complex than this - *--trailer = ((reinterpret_cast(area + offset) + 4) & ~0x2) + bits.immediate * 4; - - start += 2; - end -= 2; - } else if (T$pcrel$b(backup[offset])) { - union { - uint16_t value; - - struct { - uint16_t imm8 : 8; - uint16_t cond : 4; - uint16_t /*1101*/ : 4; - }; - } bits = {backup[offset+0]}; - - intptr_t jump(bits.imm8 << 1); - jump |= 1; - jump <<= 23; - jump >>= 23; - - buffer[start+0] = T$b$_$im(bits.cond, (end-6 - (start+0)) * 2 - 4); - - *--trailer = reinterpret_cast(area + offset) + 4 + jump; - *--trailer = A$ldr_rd_$rn_im$(A$pc, A$pc, 4 - 8); - *--trailer = T$nop << 16 | T$bx(A$pc); - - start += 1; - end -= 6; - } else if (T2$pcrel$b(backup + offset)) { - union { - uint16_t value; - - struct { - uint16_t imm6 : 6; - uint16_t cond : 4; - uint16_t s : 1; - uint16_t : 5; - }; - } bits = {backup[offset+0]}; - - union { - uint16_t value; - - struct { - uint16_t imm11 : 11; - uint16_t j2 : 1; - uint16_t a : 1; - uint16_t j1 : 1; - uint16_t : 2; - }; - } exts = {backup[offset+1]}; - - intptr_t jump(1); - jump |= exts.imm11 << 1; - jump |= bits.imm6 << 12; - - if (exts.a) { - jump |= bits.s << 24; - jump |= (~(bits.s ^ exts.j1) & 0x1) << 23; - jump |= (~(bits.s ^ exts.j2) & 0x1) << 22; - jump |= bits.cond << 18; - jump <<= 7; - jump >>= 7; - } else { - jump |= bits.s << 20; - jump |= exts.j2 << 19; - jump |= exts.j1 << 18; - jump <<= 11; - jump >>= 11; - } - - buffer[start+0] = T$b$_$im(exts.a ? A$al : bits.cond, (end-6 - (start+0)) * 2 - 4); - - *--trailer = reinterpret_cast(area + offset) + 4 + jump; - *--trailer = A$ldr_rd_$rn_im$(A$pc, A$pc, 4 - 8); - *--trailer = T$nop << 16 | T$bx(A$pc); - - ++offset; - start += 1; - end -= 6; - } else if (T$pcrel$bl(backup + offset)) { - union { - uint16_t value; - - struct { - uint16_t immediate : 10; - uint16_t s : 1; - uint16_t : 5; - }; - } bits = {backup[offset+0]}; - - union { - uint16_t value; - - struct { - uint16_t immediate : 11; - uint16_t j2 : 1; - uint16_t x : 1; - uint16_t j1 : 1; - uint16_t : 2; - }; - } exts = {backup[offset+1]}; - - int32_t jump(0); - jump |= bits.s << 24; - jump |= (~(bits.s ^ exts.j1) & 0x1) << 23; - jump |= (~(bits.s ^ exts.j2) & 0x1) << 22; - jump |= bits.immediate << 12; - jump |= exts.immediate << 1; - jump |= exts.x; - jump <<= 7; - jump >>= 7; - - buffer[start+0] = T$push_r(1 << A$r7); - buffer[start+1] = T$ldr_rd_$pc_im_4$(A$r7, ((end-2 - (start+1)) * 2 - 4 + 2) / 4); - buffer[start+2] = T$mov_rd_rm(A$lr, A$r7); - buffer[start+3] = T$pop_r(1 << A$r7); - buffer[start+4] = T$blx(A$lr); - - *--trailer = reinterpret_cast(area + offset) + 4 + jump; - - ++offset; - start += 5; - end -= 2; - } else if (T$pcrel$cbz(backup[offset])) { - union { - uint16_t value; - - struct { - uint16_t rn : 3; - uint16_t immediate : 5; - uint16_t : 1; - uint16_t i : 1; - uint16_t : 1; - uint16_t op : 1; - uint16_t : 4; - }; - } bits = {backup[offset+0]}; - - intptr_t jump(1); - jump |= bits.i << 6; - jump |= bits.immediate << 1; - - //jump <<= 24; - //jump >>= 24; - - unsigned rn(bits.rn); - unsigned rt(rn == A$r7 ? A$r6 : A$r7); - - buffer[start+0] = T$push_r(1 << rt); - buffer[start+1] = T1$mrs_rd_apsr(rt); - buffer[start+2] = T2$mrs_rd_apsr(rt); - buffer[start+3] = T$cbz$_rn_$im(bits.op, rn, (end-10 - (start+3)) * 2 - 4); - buffer[start+4] = T1$msr_apsr_nzcvqg_rn(rt); - buffer[start+5] = T2$msr_apsr_nzcvqg_rn(rt); - buffer[start+6] = T$pop_r(1 << rt); - - *--trailer = reinterpret_cast(area + offset) + 4 + jump; - *--trailer = A$ldr_rd_$rn_im$(A$pc, A$pc, 4 - 8); - *--trailer = T$nop << 16 | T$bx(A$pc); - *--trailer = T$nop << 16 | T$pop_r(1 << rt); - *--trailer = T$msr_apsr_nzcvqg_rn(rt); - -#if 0 - if ((start & 0x1) == 0) - buffer[start++] = T$nop; - buffer[start++] = T$bx(A$pc); - buffer[start++] = T$nop; - - uint32_t *arm(reinterpret_cast(buffer + start)); - arm[0] = A$add(A$lr, A$pc, 1); - arm[1] = A$ldr_rd_$rn_im$(A$pc, A$pc, (trailer - arm) * sizeof(uint32_t) - 8); -#endif - - start += 7; - end -= 10; - } else if (T$pcrel$ldrw(backup[offset])) { - union { - uint16_t value; - - struct { - uint16_t : 7; - uint16_t u : 1; - uint16_t : 8; - }; - } bits = {backup[offset+0]}; - - union { - uint16_t value; - - struct { - uint16_t immediate : 12; - uint16_t rt : 4; - }; - } exts = {backup[offset+1]}; - - buffer[start+0] = T1$ldr_rt_$rn_im$(exts.rt, A$pc, T$Label(start+0, end-2)); - buffer[start+1] = T2$ldr_rt_$rn_im$(exts.rt, A$pc, T$Label(start+0, end-2)); - - buffer[start+2] = T1$ldr_rt_$rn_im$(exts.rt, exts.rt, 0); - buffer[start+3] = T2$ldr_rt_$rn_im$(exts.rt, exts.rt, 0); - - // XXX: this code "works", but is "wrong": the mechanism is more complex than this - *--trailer = ((reinterpret_cast(area + offset) + 4) & ~0x2) + (bits.u == 0 ? -exts.immediate : exts.immediate); - - ++offset; - start += 4; - end -= 2; - } else if (T$pcrel$add(backup[offset])) { - union { - uint16_t value; - - struct { - uint16_t rd : 3; - uint16_t rm : 3; - uint16_t h2 : 1; - uint16_t h1 : 1; - uint16_t : 8; - }; - } bits = {backup[offset+0]}; - - if (bits.h1) { - MSLog(MSLogLevelError, "MS:Error:pcrel(%u):add (rd > r7)", offset); - goto fail; - } - - unsigned rt(bits.rd == A$r7 ? A$r6 : A$r7); - - buffer[start+0] = T$push_r(1 << rt); - buffer[start+1] = T$mov_rd_rm(rt, (bits.h1 << 3) | bits.rd); - buffer[start+2] = T$ldr_rd_$pc_im_4$(bits.rd, T$Label(start+2, end-2) / 4); - buffer[start+3] = T$add_rd_rm((bits.h1 << 3) | bits.rd, rt); - buffer[start+4] = T$pop_r(1 << rt); - *--trailer = reinterpret_cast(area + offset) + 4; - - start += 5; - end -= 2; - } else if (T$32bit$i(backup[offset])) { - buffer[start++] = backup[offset]; - buffer[start++] = backup[++offset]; - } else { - buffer[start++] = backup[offset]; - } - } - - buffer[start++] = T$bx(A$pc); - buffer[start++] = T$nop; - - uint32_t *transfer = reinterpret_cast(buffer + start); - transfer[0] = A$ldr_rd_$rn_im$(A$pc, A$pc, 4 - 8); - transfer[1] = reinterpret_cast(area + used / sizeof(uint16_t)) + 1; - - if (mprotect(buffer, length, PROT_READ | PROT_EXEC) == -1) { - MSLog(MSLogLevelError, "MS:Error:mprotect():%d", errno); - return 0; - } - - *result = reinterpret_cast(buffer + pad) + 1; - - if (MSDebug) { - char name[16]; - sprintf(name, "%p", *result); - MSLogHexEx(buffer, length, 2, name); - } - - } - - { - SubstrateHookMemory code(process, area, used); - - if (align != 0) - area[0] = T$nop; - - thumb[0] = T$bx(A$pc); - thumb[1] = T$nop; - - arm[0] = A$ldr_rd_$rn_im$(A$pc, A$pc, 4 - 8); - arm[1] = reinterpret_cast(replace); - - for (unsigned offset(0); offset != blank; ++offset) - trail[offset] = T$nop; - } - - if (MSDebug) { - char name[16]; - sprintf(name, "%p", area); - MSLogHexEx(area, used + sizeof(uint16_t), 2, name); - } - - return used; -} - -static size_t SubstrateHookFunctionARM(SubstrateProcessRef process, void *symbol, void *replace, void **result) { - if (symbol == NULL) - return 0; -printf("SubstrateHookFunctionARM\n"); - uint32_t *area(reinterpret_cast(symbol)); - uint32_t *arm(area); - - const size_t used(8); - - uint32_t backup[used / sizeof(uint32_t)] = {arm[0], arm[1]}; - - if (MSDebug) { - char name[16]; - sprintf(name, "%p", area); - MSLogHexEx(area, used + sizeof(uint32_t), 4, name); - } - - if (result != NULL) { - - if (backup[0] == A$ldr_rd_$rn_im$(A$pc, A$pc, 4 - 8)) { - *result = reinterpret_cast(backup[1]); - - return sizeof(backup[0]); - } - - size_t length(used); - for (unsigned offset(0); offset != used / sizeof(uint32_t); ++offset) - if (A$pcrel$r(backup[offset])) { - if ((backup[offset] & 0x02000000) == 0 || (backup[offset] & 0x0000f000 >> 12) != (backup[offset] & 0x0000000f)) - length += 2 * sizeof(uint32_t); - else - length += 4 * sizeof(uint32_t); - } - - length += 2 * sizeof(uint32_t); - - uint32_t *buffer(reinterpret_cast(mmap( - NULL, length, PROT_READ | PROT_WRITE, MAP_ANON | MAP_PRIVATE, -1, 0 - ))); - - if (buffer == MAP_FAILED) { - MSLog(MSLogLevelError, "MS:Error:mmap() = %d", errno); - *result = NULL; - return 0; - } - - if (false) fail: { - munmap(buffer, length); - *result = NULL; - return 0; - } - - size_t start(0), end(length / sizeof(uint32_t)); - uint32_t *trailer(reinterpret_cast(buffer + end)); - for (unsigned offset(0); offset != used / sizeof(uint32_t); ++offset) - if (A$pcrel$r(backup[offset])) { - union { - uint32_t value; - - struct { - uint32_t rm : 4; - uint32_t : 1; - uint32_t shift : 2; - uint32_t shiftamount : 5; - uint32_t rd : 4; - uint32_t rn : 4; - uint32_t l : 1; - uint32_t w : 1; - uint32_t b : 1; - uint32_t u : 1; - uint32_t p : 1; - uint32_t mode : 1; - uint32_t type : 2; - uint32_t cond : 4; - }; - } bits = {backup[offset+0]}, copy(bits); - - bool guard; - if (bits.mode == 0 || bits.rd != bits.rm) { - copy.rn = bits.rd; - guard = false; - } else { - copy.rn = bits.rm != A$r0 ? A$r0 : A$r1; - guard = true; - } - - if (guard) - buffer[start++] = A$stmdb_sp$_$rs$((1 << copy.rn)); - - buffer[start+0] = A$ldr_rd_$rn_im$(copy.rn, A$pc, (end-1 - (start+0)) * 4 - 8); - buffer[start+1] = copy.value; - - start += 2; - - if (guard) - buffer[start++] = A$ldmia_sp$_$rs$((1 << copy.rn)); - - *--trailer = reinterpret_cast(area + offset) + 8; - end -= 1; - } else - buffer[start++] = backup[offset]; - - buffer[start+0] = A$ldr_rd_$rn_im$(A$pc, A$pc, 4 - 8); - buffer[start+1] = reinterpret_cast(area + used / sizeof(uint32_t)); - - if (mprotect(buffer, length, PROT_READ | PROT_EXEC) == -1) { - MSLog(MSLogLevelError, "MS:Error:mprotect():%d", errno); - goto fail; - } - - *result = buffer; - - if (MSDebug) { - char name[16]; - sprintf(name, "%p", *result); - MSLogHexEx(buffer, length, 4, name); - } - - } - - { - SubstrateHookMemory code(process, symbol, used); - - arm[0] = A$ldr_rd_$rn_im$(A$pc, A$pc, 4 - 8); - arm[1] = reinterpret_cast(replace); - } - - if (MSDebug) { - char name[16]; - sprintf(name, "%p", area); - MSLogHexEx(area, used + sizeof(uint32_t), 4, name); - } - - return used; -} - -static size_t SubstrateHookFunction(SubstrateProcessRef process, void *symbol, void *replace, void **result) { - if (MSDebug) - MSLog(MSLogLevelNotice, "SubstrateHookFunction(%p, %p, %p, %p)\n", process, symbol, replace, result); - if ((reinterpret_cast(symbol) & 0x1) == 0) - return SubstrateHookFunctionARM(process, symbol, replace, result); - else - return SubstrateHookFunctionThumb(process, reinterpret_cast(reinterpret_cast(symbol) & ~0x1), replace, result); -} -#endif - -#if defined(__i386__) || defined(__x86_64__) - -#include "SubstrateX86.hpp" - -static size_t MSGetInstructionWidthIntel(void *start) { - hde64s decode; - return hde64_disasm(start, &decode); -} - -static void SubstrateHookFunction(SubstrateProcessRef process, void *symbol, void *replace, void **result) { - if (MSDebug) - MSLog(MSLogLevelNotice, "MSHookFunction(%p, %p, %p)\n", symbol, replace, result); - if (symbol == NULL) - return; - - uintptr_t source(reinterpret_cast(symbol)); - uintptr_t target(reinterpret_cast(replace)); - - uint8_t *area(reinterpret_cast(symbol)); - - size_t required(MSSizeOfJump(target, source)); - - if (MSDebug) { - char name[16]; - sprintf(name, "%p", area); - MSLogHex(area, 32, name); - } - - size_t used(0); - while (used < required) { - size_t width(MSGetInstructionWidthIntel(area + used)); - if (width == 0) { - MSLog(MSLogLevelError, "MS:Error:MSGetInstructionWidthIntel(%p) == 0", area + used); - return; - } - - used += width; - } - - size_t blank(used - required); - - if (MSDebug) { - char name[16]; - sprintf(name, "%p", area); - MSLogHex(area, used + sizeof(uint16_t), name); - } - - uint8_t backup[used]; - memcpy(backup, area, used); - - if (result != NULL) { - - if (backup[0] == 0xe9) { - *result = reinterpret_cast(source + 5 + *reinterpret_cast(backup + 1)); - return; - } - - if (!ia32 && backup[0] == 0xff && backup[1] == 0x25) { - *result = *reinterpret_cast(source + 6 + *reinterpret_cast(backup + 2)); - return; - } - - size_t length(used + MSSizeOfJump(source + used)); - - for (size_t offset(0), width; offset != used; offset += width) { - hde64s decode; - hde64_disasm(backup + offset, &decode); - width = decode.len; - //_assert(width != 0 && offset + width <= used); - -#ifdef __LP64__ - if ((decode.modrm & 0xc7) == 0x05) { - if (decode.opcode == 0x8b) { - void *destiny(area + offset + width + int32_t(decode.disp.disp32)); - uint8_t reg(decode.rex_r << 3 | decode.modrm_reg); - length -= decode.len; - length += MSSizeOfPushPointer(destiny); - length += MSSizeOfPop(reg); - length += MSSizeOfMove64(); - } else { - MSLog(MSLogLevelError, "MS:Error: Unknown RIP-Relative (%.2x %.2x)", decode.opcode, decode.opcode2); - continue; - } - } else -#endif - - if (backup[offset] == 0xe8) { - int32_t relative(*reinterpret_cast(backup + offset + 1)); - void *destiny(area + offset + decode.len + relative); - - if (relative == 0) { - length -= decode.len; - length += MSSizeOfPushPointer(destiny); - } else { - length += MSSizeOfSkip(); - length += MSSizeOfJump(destiny); - } - } else if (backup[offset] == 0xeb) { - length -= decode.len; - length += MSSizeOfJump(area + offset + decode.len + *reinterpret_cast(backup + offset + 1)); - } else if (backup[offset] == 0xe9) { - length -= decode.len; - length += MSSizeOfJump(area + offset + decode.len + *reinterpret_cast(backup + offset + 1)); - } else if ( - backup[offset] == 0xe3 || - (backup[offset] & 0xf0) == 0x70 - // XXX: opcode2 & 0xf0 is 0x80? - ) { - length += decode.len; - length += MSSizeOfJump(area + offset + decode.len + *reinterpret_cast(backup + offset + 1)); - } - } - - uint8_t *buffer(reinterpret_cast(mmap( - NULL, length, PROT_READ | PROT_WRITE, MAP_ANON | MAP_PRIVATE, -1, 0 - ))); - - if (buffer == MAP_FAILED) { - MSLog(MSLogLevelError, "MS:Error:mmap() = %d", errno); - *result = NULL; - return; - } - - if (false) fail: { - munmap(buffer, length); - *result = NULL; - return; - } - - { - uint8_t *current(buffer); - - for (size_t offset(0), width; offset != used; offset += width) { - hde64s decode; - hde64_disasm(backup + offset, &decode); - width = decode.len; - //_assert(width != 0 && offset + width <= used); - -#ifdef __LP64__ - if ((decode.modrm & 0xc7) == 0x05) { - if (decode.opcode == 0x8b) { - void *destiny(area + offset + width + int32_t(decode.disp.disp32)); - uint8_t reg(decode.rex_r << 3 | decode.modrm_reg); - MSPushPointer(current, destiny); - MSWritePop(current, reg); - MSWriteMove64(current, reg, reg); - } else { - MSLog(MSLogLevelError, "MS:Error: Unknown RIP-Relative (%.2x %.2x)", decode.opcode, decode.opcode2); - goto copy; - } - } else -#endif - - if (backup[offset] == 0xe8) { - int32_t relative(*reinterpret_cast(backup + offset + 1)); - if (relative == 0) - MSPushPointer(current, area + offset + decode.len); - else { - MSWrite(current, 0xe8); - MSWrite(current, MSSizeOfSkip()); - void *destiny(area + offset + decode.len + relative); - MSWriteSkip(current, MSSizeOfJump(destiny, current + MSSizeOfSkip())); - MSWriteJump(current, destiny); - } - } else if (backup[offset] == 0xeb) - MSWriteJump(current, area + offset + decode.len + *reinterpret_cast(backup + offset + 1)); - else if (backup[offset] == 0xe9) - MSWriteJump(current, area + offset + decode.len + *reinterpret_cast(backup + offset + 1)); - else if ( - backup[offset] == 0xe3 || - (backup[offset] & 0xf0) == 0x70 - ) { - MSWrite(current, backup[offset]); - MSWrite(current, 2); - MSWrite(current, 0xeb); - void *destiny(area + offset + decode.len + *reinterpret_cast(backup + offset + 1)); - MSWrite(current, MSSizeOfJump(destiny, current + 1)); - MSWriteJump(current, destiny); - } else -#ifdef __LP64__ - copy: -#endif - { - MSWrite(current, backup + offset, width); - } - } - - MSWriteJump(current, area + used); - } - - if (mprotect(buffer, length, PROT_READ | PROT_EXEC) == -1) { - MSLog(MSLogLevelError, "MS:Error:mprotect():%d", errno); - goto fail; - } - - *result = buffer; - - if (MSDebug) { - char name[16]; - sprintf(name, "%p", *result); - MSLogHex(buffer, length, name); - } - - } - - { - SubstrateHookMemory code(process, area, used); - - uint8_t *current(area); - MSWriteJump(current, target); - for (unsigned offset(0); offset != blank; ++offset) - MSWrite(current, 0x90); - } - - if (MSDebug) { - char name[16]; - sprintf(name, "%p", area); - MSLogHex(area, used + sizeof(uint16_t), name); - } -} -#endif - -#if defined(__i386__) || defined(__arm__) -_extern void MSHookFunction(void *symbol, void *replace, void **result) { - SubstrateHookFunction(NULL, symbol, replace, result); -} -#endif - -#if defined(__APPLE__) && defined(__arm__) -_extern void _Z14MSHookFunctionPvS_PS_(void *symbol, void *replace, void **result) { - return MSHookFunction(symbol, replace, result); -} -#endif diff --git a/app/src/main/cpp/Substrate/SubstrateHook.h b/app/src/main/cpp/Substrate/SubstrateHook.h deleted file mode 100644 index 40a0296..0000000 --- a/app/src/main/cpp/Substrate/SubstrateHook.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef __SUBSTRATEHOOK_H__ -#define __SUBSTRATEHOOK_H__ - - -#include - -#define _extern extern "C" __attribute__((__visibility__("default"))) - -#ifdef __cplusplus -extern "C" { -#endif - -void MSHookFunction(void *symbol, void *replace, void **result); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/app/src/main/cpp/Substrate/SubstrateLog.hpp b/app/src/main/cpp/Substrate/SubstrateLog.hpp deleted file mode 100644 index 3e57280..0000000 --- a/app/src/main/cpp/Substrate/SubstrateLog.hpp +++ /dev/null @@ -1,40 +0,0 @@ -/* Cydia Substrate - Powerful Code Insertion Platform - * Copyright (C) 2008-2011 Jay Freeman (saurik) -*/ - -/* GNU Lesser General Public License, Version 3 {{{ */ -/* - * Substrate is free software: you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Substrate is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - * License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Substrate. If not, see . -**/ -/* }}} */ - -#ifndef SUBSTRATE_LOG_HPP -#define SUBSTRATE_LOG_HPP - -#if 0 -#include - -#define MSLog(level, format, ...) ((void)__android_log_print(level, "NNNN", format, __VA_ARGS__)) - -#define MSLogLevelNotice ANDROID_LOG_INFO -#define MSLogLevelWarning ANDROID_LOG_WARN -#define MSLogLevelError ANDROID_LOG_ERROR - -#else - -#define MSLog(level, format, ...) printf(format, __VA_ARGS__) - -#endif - -#endif//SUBSTRATE_LOG_HPP diff --git a/app/src/main/cpp/Substrate/SubstratePosixMemory.cpp b/app/src/main/cpp/Substrate/SubstratePosixMemory.cpp deleted file mode 100644 index 709cb22..0000000 --- a/app/src/main/cpp/Substrate/SubstratePosixMemory.cpp +++ /dev/null @@ -1,75 +0,0 @@ -/* Cydia Substrate - Powerful Code Insertion Platform - * Copyright (C) 2008-2011 Jay Freeman (saurik) -*/ - -/* GNU Lesser General Public License, Version 3 {{{ */ -/* - * Substrate is free software: you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Substrate is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - * License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Substrate. If not, see . -**/ -/* }}} */ - -#define SubstrateInternal -#include "CydiaSubstrate.h" -#include "SubstrateLog.hpp" - -#include - -#include -#include -#include - -extern "C" void __clear_cache (void *beg, void *end); - -struct __SubstrateMemory { - void *address_; - size_t width_; - - __SubstrateMemory(void *address, size_t width) : - address_(address), - width_(width) - { - } -}; - -extern "C" SubstrateMemoryRef SubstrateMemoryCreate(SubstrateAllocatorRef allocator, SubstrateProcessRef process, void *data, size_t size) { - if (allocator != NULL) { - MSLog(MSLogLevelError, "MS:Error:allocator != %d", 0); - return NULL; - } - - if (size == 0) - return NULL; - - long page(sysconf(_SC_PAGESIZE)); // Portable applications should employ sysconf(_SC_PAGESIZE) instead of getpagesize - - uintptr_t base(reinterpret_cast(data) / page * page); - size_t width(((reinterpret_cast(data) + size - 1) / page + 1) * page - base); - void *address(reinterpret_cast(base)); - - if (mprotect(address, width, PROT_READ | PROT_WRITE | PROT_EXEC) == -1) { - MSLog(MSLogLevelError, "MS:Error:mprotect() = %d", errno); - return NULL; - } - - return new __SubstrateMemory(address, width); -} - -extern "C" void SubstrateMemoryRelease(SubstrateMemoryRef memory) { - if (mprotect(memory->address_, memory->width_, PROT_READ | PROT_WRITE | PROT_EXEC) == -1) - MSLog(MSLogLevelError, "MS:Error:mprotect() = %d", errno); - - __clear_cache(reinterpret_cast(memory->address_), reinterpret_cast(memory->address_) + memory->width_); - - delete memory; -} diff --git a/app/src/main/cpp/Substrate/SubstrateX86.hpp b/app/src/main/cpp/Substrate/SubstrateX86.hpp deleted file mode 100644 index ffe2b06..0000000 --- a/app/src/main/cpp/Substrate/SubstrateX86.hpp +++ /dev/null @@ -1,200 +0,0 @@ -/* Cydia Substrate - Powerful Code Insertion Platform - * Copyright (C) 2008-2011 Jay Freeman (saurik) -*/ - -/* GNU Lesser General Public License, Version 3 {{{ */ -/* - * Substrate is free software: you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Substrate is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - * License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Substrate. If not, see . -**/ -/* }}} */ - -#ifndef SUBSTRATE_X86_HPP -#define SUBSTRATE_X86_HPP - -#include "Buffer.hpp" - -#ifdef __LP64__ -static const bool ia32 = false; -#else -static const bool ia32 = true; -#endif - -enum I$r { - I$rax, I$rcx, I$rdx, I$rbx, - I$rsp, I$rbp, I$rsi, I$rdi, - I$r8, I$r9, I$r10, I$r11, - I$r12, I$r13, I$r14, I$r15, -}; - -_disused static bool MSIs32BitOffset(uintptr_t target, uintptr_t source) { - intptr_t offset(target - source); - return int32_t(offset) == offset; -} - -_disused static size_t MSSizeOfSkip() { - return 5; -} - -_disused static size_t MSSizeOfPushPointer(uintptr_t target) { - return uint64_t(target) >> 32 == 0 ? 5 : 13; -} - -_disused static size_t MSSizeOfPushPointer(void *target) { - return MSSizeOfPushPointer(reinterpret_cast(target)); -} - -_disused static size_t MSSizeOfJump(bool blind, uintptr_t target, uintptr_t source = 0) { - if (ia32 || !blind && MSIs32BitOffset(target, source + 5)) - return MSSizeOfSkip(); - else - return MSSizeOfPushPointer(target) + 1; -} - -_disused static size_t MSSizeOfJump(uintptr_t target, uintptr_t source) { - return MSSizeOfJump(false, target, source); -} - -_disused static size_t MSSizeOfJump(uintptr_t target) { - return MSSizeOfJump(true, target); -} - -_disused static size_t MSSizeOfJump(void *target, void *source) { - return MSSizeOfJump(reinterpret_cast(target), reinterpret_cast(source)); -} - -_disused static size_t MSSizeOfJump(void *target) { - return MSSizeOfJump(reinterpret_cast(target)); -} - -_disused static void MSWriteSkip(uint8_t *¤t, ssize_t size) { - MSWrite(current, 0xe9); - MSWrite(current, size); -} - -_disused static void MSPushPointer(uint8_t *¤t, uintptr_t target) { - MSWrite(current, 0x68); - MSWrite(current, target); - - if (uint32_t high = uint64_t(target) >> 32) { - MSWrite(current, 0xc7); - MSWrite(current, 0x44); - MSWrite(current, 0x24); - MSWrite(current, 0x04); - MSWrite(current, high); - } -} - -_disused static void MSPushPointer(uint8_t *¤t, void *target) { - return MSPushPointer(current, reinterpret_cast(target)); -} - -_disused static void MSWriteCall(uint8_t *¤t, I$r target) { - if (target >> 3 != 0) - MSWrite(current, 0x40 | (target & 0x08) >> 3); - MSWrite(current, 0xff); - MSWrite(current, 0xd0 | target & 0x07); -} - -_disused static void MSWriteCall(uint8_t *¤t, uintptr_t target) { - uintptr_t source(reinterpret_cast(current)); - - if (ia32 || MSIs32BitOffset(target, source + 5)) { - MSWrite(current, 0xe8); - MSWrite(current, target - (source + 5)); - } else { - MSPushPointer(current, target); - - MSWrite(current, 0x83); - MSWrite(current, 0xc4); - MSWrite(current, 0x08); - - MSWrite(current, 0x67); - MSWrite(current, 0xff); - MSWrite(current, 0x54); - MSWrite(current, 0x24); - MSWrite(current, 0xf8); - } -} - -template -_disused static void MSWriteCall(uint8_t *¤t, Type_ *target) { - return MSWriteCall(current, reinterpret_cast(target)); -} - -_disused static void MSWriteJump(uint8_t *¤t, uintptr_t target) { - uintptr_t source(reinterpret_cast(current)); - - if (ia32 || MSIs32BitOffset(target, source + 5)) - MSWriteSkip(current, target - (source + 5)); - else { - MSPushPointer(current, target); - MSWrite(current, 0xc3); - } -} - -_disused static void MSWriteJump(uint8_t *¤t, void *target) { - return MSWriteJump(current, reinterpret_cast(target)); -} - -_disused static void MSWriteJump(uint8_t *¤t, I$r target) { - if (target >> 3 != 0) - MSWrite(current, 0x40 | (target & 0x08) >> 3); - MSWrite(current, 0xff); - MSWrite(current, 0xe0 | target & 0x07); -} - -_disused static void MSWritePop(uint8_t *¤t, uint8_t target) { - if (target >> 3 != 0) - MSWrite(current, 0x40 | (target & 0x08) >> 3); - MSWrite(current, 0x58 | target & 0x07); -} - -_disused static size_t MSSizeOfPop(uint8_t target) { - return target >> 3 != 0 ? 2 : 1; -} - -_disused static void MSWritePush(uint8_t *¤t, I$r target) { - if (target >> 3 != 0) - MSWrite(current, 0x40 | (target & 0x08) >> 3); - MSWrite(current, 0x50 | target & 0x07); -} - -_disused static void MSWriteAdd(uint8_t *¤t, I$r target, uint8_t source) { - MSWrite(current, 0x83); - MSWrite(current, 0xc4 | target & 0x07); - MSWrite(current, source); -} - -_disused static void MSWriteSet64(uint8_t *¤t, I$r target, uintptr_t source) { - MSWrite(current, 0x48 | (target & 0x08) >> 3 << 2); - MSWrite(current, 0xb8 | target & 0x7); - MSWrite(current, source); -} - -template -_disused static void MSWriteSet64(uint8_t *¤t, I$r target, Type_ *source) { - return MSWriteSet64(current, target, reinterpret_cast(source)); -} - -_disused static void MSWriteMove64(uint8_t *¤t, uint8_t source, uint8_t target) { - MSWrite(current, 0x48 | (target & 0x08) >> 3 << 2 | (source & 0x08) >> 3); - MSWrite(current, 0x8b); - MSWrite(current, (target & 0x07) << 3 | source & 0x07); -} - -_disused static size_t MSSizeOfMove64() { - return 3; -} - -#endif//SUBSTRATE_X86_HPP diff --git a/app/src/main/cpp/Substrate/hde64.c b/app/src/main/cpp/Substrate/hde64.c deleted file mode 100644 index d69f0c6..0000000 --- a/app/src/main/cpp/Substrate/hde64.c +++ /dev/null @@ -1,332 +0,0 @@ -/* - * Hacker Disassembler Engine 64 C - * Copyright (c) 2008-2009, Vyacheslav Patkov. - * All rights reserved. - * - */ - -#include -#include - -#include "hde64.h" -#include "table64.h" - -unsigned int hde64_disasm(const void *code, hde64s *hs) -{ - uint8_t x, c, *p = (uint8_t *)code, cflags, opcode, pref = 0; - uint8_t *ht = hde64_table, m_mod, m_reg, m_rm, disp_size = 0; - uint8_t op64 = 0; - - memset(hs,0,sizeof(hde64s)); - char *tmp=(char*)hs; - - for (x = 16; x; x--) - switch (c = *p++) { - case 0xf3: - hs->p_rep = c; - pref |= PRE_F3; - break; - case 0xf2: - hs->p_rep = c; - pref |= PRE_F2; - break; - case 0xf0: - hs->p_lock = c; - pref |= PRE_LOCK; - break; - case 0x26: case 0x2e: case 0x36: - case 0x3e: case 0x64: case 0x65: - hs->p_seg = c; - pref |= PRE_SEG; - break; - case 0x66: - hs->p_66 = c; - pref |= PRE_66; - break; - case 0x67: - hs->p_67 = c; - pref |= PRE_67; - break; - default: - goto pref_done; - } - pref_done: - - hs->flags = (uint32_t)pref << 23; - - if (!pref) - pref |= PRE_NONE; - - if ((c & 0xf0) == 0x40) { - hs->flags |= F_PREFIX_REX; - if ((hs->rex_w = (c & 0xf) >> 3) && (*p & 0xf8) == 0xb8) - op64++; - hs->rex_r = (c & 7) >> 2; - hs->rex_x = (c & 3) >> 1; - hs->rex_b = c & 1; - if (((c = *p++) & 0xf0) == 0x40) { - opcode = c; - goto error_opcode; - } - } - - if ((hs->opcode = c) == 0x0f) { - hs->opcode2 = c = *p++; - ht += DELTA_OPCODES; - } else if (c >= 0xa0 && c <= 0xa3) { - op64++; - if (pref & PRE_67) - pref |= PRE_66; - else - pref &= ~PRE_66; - } - - opcode = c; - cflags = ht[ht[opcode / 4] + (opcode % 4)]; - - if (cflags == C_ERROR) { - error_opcode: - hs->flags |= F_ERROR | F_ERROR_OPCODE; - cflags = 0; - if ((opcode & -3) == 0x24) - cflags++; - } - - x = 0; - if (cflags & C_GROUP) { - uint16_t t; - t = *(uint16_t *)(ht + (cflags & 0x7f)); - cflags = (uint8_t)t; - x = (uint8_t)(t >> 8); - } - - if (hs->opcode2) { - ht = hde64_table + DELTA_PREFIXES; - if (ht[ht[opcode / 4] + (opcode % 4)] & pref) - hs->flags |= F_ERROR | F_ERROR_OPCODE; - } - - if (cflags & C_MODRM) { - hs->flags |= F_MODRM; - hs->modrm = c = *p++; - hs->modrm_mod = m_mod = c >> 6; - hs->modrm_rm = m_rm = c & 7; - hs->modrm_reg = m_reg = (c & 0x3f) >> 3; - - if (x && ((x << m_reg) & 0x80)) - hs->flags |= F_ERROR | F_ERROR_OPCODE; - - if (!hs->opcode2 && opcode >= 0xd9 && opcode <= 0xdf) { - uint8_t t = opcode - 0xd9; - if (m_mod == 3) { - ht = hde64_table + DELTA_FPU_MODRM + t*8; - t = ht[m_reg] << m_rm; - } else { - ht = hde64_table + DELTA_FPU_REG; - t = ht[t] << m_reg; - } - if (t & 0x80) - hs->flags |= F_ERROR | F_ERROR_OPCODE; - } - - if (pref & PRE_LOCK) { - if (m_mod == 3) { - hs->flags |= F_ERROR | F_ERROR_LOCK; - } else { - uint8_t *table_end, op = opcode; - if (hs->opcode2) { - ht = hde64_table + DELTA_OP2_LOCK_OK; - table_end = ht + DELTA_OP_ONLY_MEM - DELTA_OP2_LOCK_OK; - } else { - ht = hde64_table + DELTA_OP_LOCK_OK; - table_end = ht + DELTA_OP2_LOCK_OK - DELTA_OP_LOCK_OK; - op &= -2; - } - for (; ht != table_end; ht++) - if (*ht++ == op) { - if (!((*ht << m_reg) & 0x80)) - goto no_lock_error; - else - break; - } - hs->flags |= F_ERROR | F_ERROR_LOCK; - no_lock_error: - ; - } - } - - if (hs->opcode2) { - switch (opcode) { - case 0x20: case 0x22: - m_mod = 3; - if (m_reg > 4 || m_reg == 1) - goto error_operand; - else - goto no_error_operand; - case 0x21: case 0x23: - m_mod = 3; - if (m_reg == 4 || m_reg == 5) - goto error_operand; - else - goto no_error_operand; - } - } else { - switch (opcode) { - case 0x8c: - if (m_reg > 5) - goto error_operand; - else - goto no_error_operand; - case 0x8e: - if (m_reg == 1 || m_reg > 5) - goto error_operand; - else - goto no_error_operand; - } - } - - if (m_mod == 3) { - uint8_t *table_end; - if (hs->opcode2) { - ht = hde64_table + DELTA_OP2_ONLY_MEM; - table_end = ht + sizeof(hde64_table) - DELTA_OP2_ONLY_MEM; - } else { - ht = hde64_table + DELTA_OP_ONLY_MEM; - table_end = ht + DELTA_OP2_ONLY_MEM - DELTA_OP_ONLY_MEM; - } - for (; ht != table_end; ht += 2) - if (*ht++ == opcode) { - if (*ht++ & pref && !((*ht << m_reg) & 0x80)) - goto error_operand; - else - break; - } - goto no_error_operand; - } else if (hs->opcode2) { - switch (opcode) { - case 0x50: case 0xd7: case 0xf7: - if (pref & (PRE_NONE | PRE_66)) - goto error_operand; - break; - case 0xd6: - if (pref & (PRE_F2 | PRE_F3)) - goto error_operand; - break; - case 0xc5: - goto error_operand; - } - goto no_error_operand; - } else - goto no_error_operand; - - error_operand: - hs->flags |= F_ERROR | F_ERROR_OPERAND; - no_error_operand: - - c = *p++; - if (m_reg <= 1) { - if (opcode == 0xf6) - cflags |= C_IMM8; - else if (opcode == 0xf7) - cflags |= C_IMM_P66; - } - - switch (m_mod) { - case 0: - if (pref & PRE_67) { - if (m_rm == 6) - disp_size = 2; - } else - if (m_rm == 5) - disp_size = 4; - break; - case 1: - disp_size = 1; - break; - case 2: - disp_size = 2; - if (!(pref & PRE_67)) - disp_size <<= 1; - } - - if (m_mod != 3 && m_rm == 4) { - hs->flags |= F_SIB; - p++; - hs->sib = c; - hs->sib_scale = c >> 6; - hs->sib_index = (c & 0x3f) >> 3; - if ((hs->sib_base = c & 7) == 5 && !(m_mod & 1)) - disp_size = 4; - } - - p--; - switch (disp_size) { - case 1: - hs->flags |= F_DISP8; - hs->disp.disp8 = *p; - break; - case 2: - hs->flags |= F_DISP16; - hs->disp.disp16 = *(uint16_t *)p; - break; - case 4: - hs->flags |= F_DISP32; - hs->disp.disp32 = *(uint32_t *)p; - } - p += disp_size; - } else if (pref & PRE_LOCK) - hs->flags |= F_ERROR | F_ERROR_LOCK; - - if (cflags & C_IMM_P66) { - if (cflags & C_REL32) { - if (pref & PRE_66) { - hs->flags |= F_IMM16 | F_RELATIVE; - hs->imm.imm16 = *(uint16_t *)p; - p += 2; - goto disasm_done; - } - goto rel32_ok; - } - if (op64) { - hs->flags |= F_IMM64; - hs->imm.imm64 = *(uint64_t *)p; - p += 8; - } else if (!(pref & PRE_66)) { - hs->flags |= F_IMM32; - hs->imm.imm32 = *(uint32_t *)p; - p += 4; - } else - goto imm16_ok; - } - - - if (cflags & C_IMM16) { - imm16_ok: - hs->flags |= F_IMM16; - hs->imm.imm16 = *(uint16_t *)p; - p += 2; - } - if (cflags & C_IMM8) { - hs->flags |= F_IMM8; - hs->imm.imm8 = *p++; - } - - if (cflags & C_REL32) { - rel32_ok: - hs->flags |= F_IMM32 | F_RELATIVE; - hs->imm.imm32 = *(uint32_t *)p; - p += 4; - } else if (cflags & C_REL8) { - hs->flags |= F_IMM8 | F_RELATIVE; - hs->imm.imm8 = *p++; - } - - disasm_done: - - if ((hs->len = (uint8_t)(p-(uint8_t *)code)) > 15) { - hs->flags |= F_ERROR | F_ERROR_LENGTH; - hs->len = 15; - } - - return (unsigned int)hs->len; -} diff --git a/app/src/main/cpp/Substrate/hde64.h b/app/src/main/cpp/Substrate/hde64.h deleted file mode 100644 index 2fcc4cb..0000000 --- a/app/src/main/cpp/Substrate/hde64.h +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Hacker Disassembler Engine 64 - * Copyright (c) 2008-2009, Vyacheslav Patkov. - * All rights reserved. - * - * hde64.h: C/C++ header file - * - */ - -#ifndef _HDE64_H_ -#define _HDE64_H_ - -/* stdint.h - C99 standard header - * http://en.wikipedia.org/wiki/stdint.h - * - * if your compiler doesn't contain "stdint.h" header (for - * example, Microsoft Visual C++), you can download file: - * http://www.azillionmonkeys.com/qed/pstdint.h - * and change next line to: - * #include "pstdint.h" - */ -#include - -#define F_MODRM 0x00000001 -#define F_SIB 0x00000002 -#define F_IMM8 0x00000004 -#define F_IMM16 0x00000008 -#define F_IMM32 0x00000010 -#define F_IMM64 0x00000020 -#define F_DISP8 0x00000040 -#define F_DISP16 0x00000080 -#define F_DISP32 0x00000100 -#define F_RELATIVE 0x00000200 -#define F_ERROR 0x00001000 -#define F_ERROR_OPCODE 0x00002000 -#define F_ERROR_LENGTH 0x00004000 -#define F_ERROR_LOCK 0x00008000 -#define F_ERROR_OPERAND 0x00010000 -#define F_PREFIX_REPNZ 0x01000000 -#define F_PREFIX_REPX 0x02000000 -#define F_PREFIX_REP 0x03000000 -#define F_PREFIX_66 0x04000000 -#define F_PREFIX_67 0x08000000 -#define F_PREFIX_LOCK 0x10000000 -#define F_PREFIX_SEG 0x20000000 -#define F_PREFIX_REX 0x40000000 -#define F_PREFIX_ANY 0x7f000000 - -#define PREFIX_SEGMENT_CS 0x2e -#define PREFIX_SEGMENT_SS 0x36 -#define PREFIX_SEGMENT_DS 0x3e -#define PREFIX_SEGMENT_ES 0x26 -#define PREFIX_SEGMENT_FS 0x64 -#define PREFIX_SEGMENT_GS 0x65 -#define PREFIX_LOCK 0xf0 -#define PREFIX_REPNZ 0xf2 -#define PREFIX_REPX 0xf3 -#define PREFIX_OPERAND_SIZE 0x66 -#define PREFIX_ADDRESS_SIZE 0x67 - -#pragma pack(push,1) - -typedef struct { - uint8_t len; - uint8_t p_rep; - uint8_t p_lock; - uint8_t p_seg; - uint8_t p_66; - uint8_t p_67; - uint8_t rex; - uint8_t rex_w; - uint8_t rex_r; - uint8_t rex_x; - uint8_t rex_b; - uint8_t opcode; - uint8_t opcode2; - uint8_t modrm; - uint8_t modrm_mod; - uint8_t modrm_reg; - uint8_t modrm_rm; - uint8_t sib; - uint8_t sib_scale; - uint8_t sib_index; - uint8_t sib_base; - union { - uint8_t imm8; - uint16_t imm16; - uint32_t imm32; - uint64_t imm64; - } imm; - union { - uint8_t disp8; - uint16_t disp16; - uint32_t disp32; - } disp; - uint32_t flags; -} hde64s; - -#pragma pack(pop) - -#ifdef __cplusplus -extern "C" { -#endif - -/* __cdecl */ -unsigned int hde64_disasm(const void *code, hde64s *hs); - -#ifdef __cplusplus -} -#endif - -#endif /* _HDE64_H_ */ diff --git a/app/src/main/cpp/Substrate/table64.h b/app/src/main/cpp/Substrate/table64.h deleted file mode 100644 index 144f290..0000000 --- a/app/src/main/cpp/Substrate/table64.h +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Hacker Disassembler Engine 64 C - * Copyright (c) 2008-2009, Vyacheslav Patkov. - * All rights reserved. - * - */ - -#define C_NONE 0x00 -#define C_MODRM 0x01 -#define C_IMM8 0x02 -#define C_IMM16 0x04 -#define C_IMM_P66 0x10 -#define C_REL8 0x20 -#define C_REL32 0x40 -#define C_GROUP 0x80 -#define C_ERROR 0xff - -#define PRE_ANY 0x00 -#define PRE_NONE 0x01 -#define PRE_F2 0x02 -#define PRE_F3 0x04 -#define PRE_66 0x08 -#define PRE_67 0x10 -#define PRE_LOCK 0x20 -#define PRE_SEG 0x40 -#define PRE_ALL 0xff - -#define DELTA_OPCODES 0x4a -#define DELTA_FPU_REG 0xfd -#define DELTA_FPU_MODRM 0x104 -#define DELTA_PREFIXES 0x13c -#define DELTA_OP_LOCK_OK 0x1ae -#define DELTA_OP2_LOCK_OK 0x1c6 -#define DELTA_OP_ONLY_MEM 0x1d8 -#define DELTA_OP2_ONLY_MEM 0x1e7 - -unsigned char hde64_table[] = { - 0xa5,0xaa,0xa5,0xb8,0xa5,0xaa,0xa5,0xaa,0xa5,0xb8,0xa5,0xb8,0xa5,0xb8,0xa5, - 0xb8,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xac,0xc0,0xcc,0xc0,0xa1,0xa1, - 0xa1,0xa1,0xb1,0xa5,0xa5,0xa6,0xc0,0xc0,0xd7,0xda,0xe0,0xc0,0xe4,0xc0,0xea, - 0xea,0xe0,0xe0,0x98,0xc8,0xee,0xf1,0xa5,0xd3,0xa5,0xa5,0xa1,0xea,0x9e,0xc0, - 0xc0,0xc2,0xc0,0xe6,0x03,0x7f,0x11,0x7f,0x01,0x7f,0x01,0x3f,0x01,0x01,0xab, - 0x8b,0x90,0x64,0x5b,0x5b,0x5b,0x5b,0x5b,0x92,0x5b,0x5b,0x76,0x90,0x92,0x92, - 0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x6a,0x73,0x90, - 0x5b,0x52,0x52,0x52,0x52,0x5b,0x5b,0x5b,0x5b,0x77,0x7c,0x77,0x85,0x5b,0x5b, - 0x70,0x5b,0x7a,0xaf,0x76,0x76,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b, - 0x5b,0x5b,0x86,0x01,0x03,0x01,0x04,0x03,0xd5,0x03,0xd5,0x03,0xcc,0x01,0xbc, - 0x03,0xf0,0x03,0x03,0x04,0x00,0x50,0x50,0x50,0x50,0xff,0x20,0x20,0x20,0x20, - 0x01,0x01,0x01,0x01,0xc4,0x02,0x10,0xff,0xff,0xff,0x01,0x00,0x03,0x11,0xff, - 0x03,0xc4,0xc6,0xc8,0x02,0x10,0x00,0xff,0xcc,0x01,0x01,0x01,0x00,0x00,0x00, - 0x00,0x01,0x01,0x03,0x01,0xff,0xff,0xc0,0xc2,0x10,0x11,0x02,0x03,0x01,0x01, - 0x01,0xff,0xff,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0xff,0xff,0xff,0xff,0x10, - 0x10,0x10,0x10,0x02,0x10,0x00,0x00,0xc6,0xc8,0x02,0x02,0x02,0x02,0x06,0x00, - 0x04,0x00,0x02,0xff,0x00,0xc0,0xc2,0x01,0x01,0x03,0x03,0x03,0xca,0x40,0x00, - 0x0a,0x00,0x04,0x00,0x00,0x00,0x00,0x7f,0x00,0x33,0x01,0x00,0x00,0x00,0x00, - 0x00,0x00,0xff,0xbf,0xff,0xff,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0xff,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff, - 0x00,0x00,0x00,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0x00,0x00, - 0xff,0x40,0x40,0x40,0x40,0x41,0x49,0x40,0x40,0x40,0x40,0x4c,0x42,0x40,0x40, - 0x40,0x40,0x40,0x40,0x40,0x40,0x4f,0x44,0x53,0x40,0x40,0x40,0x44,0x57,0x43, - 0x5c,0x40,0x60,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, - 0x40,0x40,0x64,0x66,0x6e,0x6b,0x40,0x40,0x6a,0x46,0x40,0x40,0x44,0x46,0x40, - 0x40,0x5b,0x44,0x40,0x40,0x00,0x00,0x00,0x00,0x06,0x06,0x06,0x06,0x01,0x06, - 0x06,0x02,0x06,0x06,0x00,0x06,0x00,0x0a,0x0a,0x00,0x00,0x00,0x02,0x07,0x07, - 0x06,0x02,0x0d,0x06,0x06,0x06,0x0e,0x05,0x05,0x02,0x02,0x00,0x00,0x04,0x04, - 0x04,0x04,0x05,0x06,0x06,0x06,0x00,0x00,0x00,0x0e,0x00,0x00,0x08,0x00,0x10, - 0x00,0x18,0x00,0x20,0x00,0x28,0x00,0x30,0x00,0x80,0x01,0x82,0x01,0x86,0x00, - 0xf6,0xcf,0xfe,0x3f,0xab,0x00,0xb0,0x00,0xb1,0x00,0xb3,0x00,0xba,0xf8,0xbb, - 0x00,0xc0,0x00,0xc1,0x00,0xc7,0xbf,0x62,0xff,0x00,0x8d,0xff,0x00,0xc4,0xff, - 0x00,0xc5,0xff,0x00,0xff,0xff,0xeb,0x01,0xff,0x0e,0x12,0x08,0x00,0x13,0x09, - 0x00,0x16,0x08,0x00,0x17,0x09,0x00,0x2b,0x09,0x00,0xae,0xff,0x07,0xb2,0xff, - 0x00,0xb4,0xff,0x00,0xb5,0xff,0x00,0xc3,0x01,0x00,0xc7,0xff,0xbf,0xe7,0x08, - 0x00,0xf0,0x02,0x00 -}; From a9cf15e7f407759372c81e1056e859fb238dd1f5 Mon Sep 17 00:00:00 2001 From: Octowolve <32366759+Octowolve@users.noreply.github.com> Date: Tue, 9 Aug 2022 05:01:56 +0200 Subject: [PATCH 3/7] Delete app/src/main/cpp/X64Hook directory --- app/src/main/cpp/X64Hook/And64InlineHook.cpp | 591 ------------------- app/src/main/cpp/X64Hook/And64InlineHook.hpp | 42 -- 2 files changed, 633 deletions(-) delete mode 100644 app/src/main/cpp/X64Hook/And64InlineHook.cpp delete mode 100644 app/src/main/cpp/X64Hook/And64InlineHook.hpp diff --git a/app/src/main/cpp/X64Hook/And64InlineHook.cpp b/app/src/main/cpp/X64Hook/And64InlineHook.cpp deleted file mode 100644 index 5d272cd..0000000 --- a/app/src/main/cpp/X64Hook/And64InlineHook.cpp +++ /dev/null @@ -1,591 +0,0 @@ -/* - * @date : 2018/04/18 - * @author : Rprop (r_prop@outlook.com) - * https://github.com/Rprop/And64InlineHook - */ -/* - MIT License - Copyright (c) 2018 Rprop (r_prop@outlook.com) - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. - */ -#define __STDC_FORMAT_MACROS -#include -#include -#include -#include -#include -#include -#include "Includes/Logger.h" - -#if defined(__aarch64__) - -#include "And64InlineHook.hpp" -#define A64_MAX_INSTRUCTIONS 5 -#define A64_MAX_REFERENCES (A64_MAX_INSTRUCTIONS * 2) -#define A64_NOP 0xd503201fu -#define A64_JNIEXPORT __attribute__((visibility("default"))) -#define A64_LOGE(...) ((void)__android_log_print(ANDROID_LOG_ERROR, "A64_HOOK", __VA_ARGS__)) -#ifndef NDEBUG -# define A64_LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, "A64_HOOK", __VA_ARGS__)) -#else -# define A64_LOGI(...) ((void)0) -#endif // NDEBUG -typedef uint32_t *__restrict *__restrict instruction; -typedef struct -{ - struct fix_info - { - uint32_t *bp; - uint32_t ls; // left-shift counts - uint32_t ad; // & operand - }; - struct insns_info - { - union - { - uint64_t insu; - int64_t ins; - void *insp; - }; - fix_info fmap[A64_MAX_REFERENCES]; - }; - int64_t basep; - int64_t endp; - insns_info dat[A64_MAX_INSTRUCTIONS]; - -public: - inline bool is_in_fixing_range(const int64_t absolute_addr) { - return absolute_addr >= this->basep && absolute_addr < this->endp; - } - inline intptr_t get_ref_ins_index(const int64_t absolute_addr) { - return static_cast((absolute_addr - this->basep) / sizeof(uint32_t)); - } - inline intptr_t get_and_set_current_index(uint32_t *__restrict inp, uint32_t *__restrict outp) { - intptr_t current_idx = this->get_ref_ins_index(reinterpret_cast(inp)); - this->dat[current_idx].insp = outp; - return current_idx; - } - inline void reset_current_ins(const intptr_t idx, uint32_t *__restrict outp) { - this->dat[idx].insp = outp; - } - void insert_fix_map(const intptr_t idx, uint32_t *bp, uint32_t ls = 0u, uint32_t ad = 0xffffffffu) { - for (auto &f : this->dat[idx].fmap) { - if (f.bp == NULL) { - f.bp = bp; - f.ls = ls; - f.ad = ad; - return; - } //if - } - // What? GGing.. - } - void process_fix_map(const intptr_t idx) { - for (auto &f : this->dat[idx].fmap) { - if (f.bp == NULL) break; - *(f.bp) = *(f.bp) | (((int32_t(this->dat[idx].ins - reinterpret_cast(f.bp)) >> 2) << f.ls) & f.ad); - f.bp = NULL; - } - } -} context; - -//------------------------------------------------------------------------- - -static bool __fix_branch_imm(instruction inpp, instruction outpp, context *ctxp) -{ - static constexpr uint32_t mbits = 6u; - static constexpr uint32_t mask = 0xfc000000u; // 0b11111100000000000000000000000000 - static constexpr uint32_t rmask = 0x03ffffffu; // 0b00000011111111111111111111111111 - static constexpr uint32_t op_b = 0x14000000u; // "b" ADDR_PCREL26 - static constexpr uint32_t op_bl = 0x94000000u; // "bl" ADDR_PCREL26 - - const uint32_t ins = *(*inpp); - const uint32_t opc = ins & mask; - switch (opc) { - case op_b: - case op_bl: - { - intptr_t current_idx = ctxp->get_and_set_current_index(*inpp, *outpp); - int64_t absolute_addr = reinterpret_cast(*inpp) + (static_cast(ins << mbits) >> (mbits - 2u)); // sign-extended - int64_t new_pc_offset = static_cast(absolute_addr - reinterpret_cast(*outpp)) >> 2; // shifted - bool special_fix_type = ctxp->is_in_fixing_range(absolute_addr); - // whether the branch should be converted to absolute jump - if (!special_fix_type && llabs(new_pc_offset) >= (rmask >> 1)) { - bool b_aligned = (reinterpret_cast(*outpp + 2) & 7u) == 0u; - if (opc == op_b) { - if (b_aligned != true) { - (*outpp)[0] = A64_NOP; - ctxp->reset_current_ins(current_idx, ++(*outpp)); - } //if - (*outpp)[0] = 0x58000051u; // LDR X17, #0x8 - (*outpp)[1] = 0xd61f0220u; // BR X17 - memcpy(*outpp + 2, &absolute_addr, sizeof(absolute_addr)); - *outpp += 4; - } else { - if (b_aligned == true) { - (*outpp)[0] = A64_NOP; - ctxp->reset_current_ins(current_idx, ++(*outpp)); - } //if - (*outpp)[0] = 0x58000071u; // LDR X17, #12 - (*outpp)[1] = 0x1000009eu; // ADR X30, #16 - (*outpp)[2] = 0xd61f0220u; // BR X17 - memcpy(*outpp + 3, &absolute_addr, sizeof(absolute_addr)); - *outpp += 5; - } //if - } else { - if (special_fix_type) { - intptr_t ref_idx = ctxp->get_ref_ins_index(absolute_addr); - if (ref_idx <= current_idx) { - new_pc_offset = static_cast(ctxp->dat[ref_idx].ins - reinterpret_cast(*outpp)) >> 2; - } else { - ctxp->insert_fix_map(ref_idx, *outpp, 0u, rmask); - new_pc_offset = 0; - } //if - } //if - - (*outpp)[0] = opc | (new_pc_offset & ~mask); - ++(*outpp); - } //if - - ++(*inpp); - return ctxp->process_fix_map(current_idx), true; - } - } - return false; -} - -//------------------------------------------------------------------------- - -static bool __fix_cond_comp_test_branch(instruction inpp, instruction outpp, context *ctxp) -{ - static constexpr uint32_t lsb = 5u; - static constexpr uint32_t lmask01 = 0xff00001fu; // 0b11111111000000000000000000011111 - static constexpr uint32_t mask0 = 0xff000010u; // 0b11111111000000000000000000010000 - static constexpr uint32_t op_bc = 0x54000000u; // "b.c" ADDR_PCREL19 - static constexpr uint32_t mask1 = 0x7f000000u; // 0b01111111000000000000000000000000 - static constexpr uint32_t op_cbz = 0x34000000u; // "cbz" Rt, ADDR_PCREL19 - static constexpr uint32_t op_cbnz = 0x35000000u; // "cbnz" Rt, ADDR_PCREL19 - static constexpr uint32_t lmask2 = 0xfff8001fu; // 0b11111111111110000000000000011111 - static constexpr uint32_t mask2 = 0x7f000000u; // 0b01111111000000000000000000000000 - static constexpr uint32_t op_tbz = 0x36000000u; // 0b00110110000000000000000000000000 "tbz" Rt, BIT_NUM, ADDR_PCREL14 - static constexpr uint32_t op_tbnz = 0x37000000u; // 0b00110111000000000000000000000000 "tbnz" Rt, BIT_NUM, ADDR_PCREL14 - - const uint32_t ins = *(*inpp); - uint32_t lmask = lmask01; - if ((ins & mask0) != op_bc) { - uint32_t opc = ins & mask1; - if (opc != op_cbz && opc != op_cbnz) { - opc = ins & mask2; - if (opc != op_tbz && opc != op_tbnz) { - return false; - } //if - lmask = lmask2; - } //if - } //if - - intptr_t current_idx = ctxp->get_and_set_current_index(*inpp, *outpp); - int64_t absolute_addr = reinterpret_cast(*inpp) + ((ins & ~lmask) >> (lsb - 2u)); - int64_t new_pc_offset = static_cast(absolute_addr - reinterpret_cast(*outpp)) >> 2; // shifted - bool special_fix_type = ctxp->is_in_fixing_range(absolute_addr); - if (!special_fix_type && llabs(new_pc_offset) >= (~lmask >> (lsb + 1))) { - if ((reinterpret_cast(*outpp + 4) & 7u) != 0u) { - (*outpp)[0] = A64_NOP; - ctxp->reset_current_ins(current_idx, ++(*outpp)); - } //if - (*outpp)[0] = (((8u >> 2u) << lsb) & ~lmask) | (ins & lmask); // B.C #0x8 - (*outpp)[1] = 0x14000005u; // B #0x14 - (*outpp)[2] = 0x58000051u; // LDR X17, #0x8 - (*outpp)[3] = 0xd61f0220u; // BR X17 - memcpy(*outpp + 4, &absolute_addr, sizeof(absolute_addr)); - *outpp += 6; - } else { - if (special_fix_type) { - intptr_t ref_idx = ctxp->get_ref_ins_index(absolute_addr); - if (ref_idx <= current_idx) { - new_pc_offset = static_cast(ctxp->dat[ref_idx].ins - reinterpret_cast(*outpp)) >> 2; - } else { - ctxp->insert_fix_map(ref_idx, *outpp, lsb, ~lmask); - new_pc_offset = 0; - } //if - } //if - - (*outpp)[0] = (static_cast(new_pc_offset << lsb) & ~lmask) | (ins & lmask); - ++(*outpp); - } //if - - ++(*inpp); - return ctxp->process_fix_map(current_idx), true; -} - -//------------------------------------------------------------------------- - -static bool __fix_loadlit(instruction inpp, instruction outpp, context *ctxp) -{ - const uint32_t ins = *(*inpp); - - // memory prefetch("prfm"), just skip it - // http://infocenter.arm.com/help/topic/com.arm.doc.100069_0608_00_en/pge1427897420050.html - if ((ins & 0xff000000u) == 0xd8000000u) { - ctxp->process_fix_map(ctxp->get_and_set_current_index(*inpp, *outpp)); - ++(*inpp); - return true; - } //if - - static constexpr uint32_t msb = 8u; - static constexpr uint32_t lsb = 5u; - static constexpr uint32_t mask_30 = 0x40000000u; // 0b01000000000000000000000000000000 - static constexpr uint32_t mask_31 = 0x80000000u; // 0b10000000000000000000000000000000 - static constexpr uint32_t lmask = 0xff00001fu; // 0b11111111000000000000000000011111 - static constexpr uint32_t mask_ldr = 0xbf000000u; // 0b10111111000000000000000000000000 - static constexpr uint32_t op_ldr = 0x18000000u; // 0b00011000000000000000000000000000 "LDR Wt/Xt, label" | ADDR_PCREL19 - static constexpr uint32_t mask_ldrv = 0x3f000000u; // 0b00111111000000000000000000000000 - static constexpr uint32_t op_ldrv = 0x1c000000u; // 0b00011100000000000000000000000000 "LDR St/Dt/Qt, label" | ADDR_PCREL19 - static constexpr uint32_t mask_ldrsw = 0xff000000u; // 0b11111111000000000000000000000000 - static constexpr uint32_t op_ldrsw = 0x98000000u; // "LDRSW Xt, label" | ADDR_PCREL19 | load register signed word - // LDR S0, #0 | 0b00011100000000000000000000000000 | 32-bit - // LDR D0, #0 | 0b01011100000000000000000000000000 | 64-bit - // LDR Q0, #0 | 0b10011100000000000000000000000000 | 128-bit - // INVALID | 0b11011100000000000000000000000000 | may be 256-bit - - uint32_t mask = mask_ldr; - uintptr_t faligned = (ins & mask_30) ? 7u : 3u; - if ((ins & mask_ldr) != op_ldr) { - mask = mask_ldrv; - if (faligned != 7u) - faligned = (ins & mask_31) ? 15u : 3u; - if ((ins & mask_ldrv) != op_ldrv) { - if ((ins & mask_ldrsw) != op_ldrsw) { - return false; - } //if - mask = mask_ldrsw; - faligned = 7u; - } //if - } //if - - intptr_t current_idx = ctxp->get_and_set_current_index(*inpp, *outpp); - int64_t absolute_addr = reinterpret_cast(*inpp) + ((static_cast(ins << msb) >> (msb + lsb - 2u)) & ~3u); - int64_t new_pc_offset = static_cast(absolute_addr - reinterpret_cast(*outpp)) >> 2; // shifted - bool special_fix_type = ctxp->is_in_fixing_range(absolute_addr); - // special_fix_type may encounter issue when there are mixed data and code - if (special_fix_type || (llabs(new_pc_offset) + (faligned + 1u - 4u) / 4u) >= (~lmask >> (lsb + 1))) { // inaccurate, but it works - while ((reinterpret_cast(*outpp + 2) & faligned) != 0u) { - *(*outpp)++ = A64_NOP; - } - ctxp->reset_current_ins(current_idx, *outpp); - - // Note that if memory at absolute_addr is writeable (non-const), we will fail to fetch it. - // And what's worse, we may unexpectedly overwrite something if special_fix_type is true... - uint32_t ns = static_cast((faligned + 1) / sizeof(uint32_t)); - (*outpp)[0] = (((8u >> 2u) << lsb) & ~mask) | (ins & lmask); // LDR #0x8 - (*outpp)[1] = 0x14000001u + ns; // B #0xc - memcpy(*outpp + 2, reinterpret_cast(absolute_addr), faligned + 1); - *outpp += 2 + ns; - } else { - faligned >>= 2; // new_pc_offset is shifted and 4-byte aligned - while ((new_pc_offset & faligned) != 0) { - *(*outpp)++ = A64_NOP; - new_pc_offset = static_cast(absolute_addr - reinterpret_cast(*outpp)) >> 2; - } - ctxp->reset_current_ins(current_idx, *outpp); - - (*outpp)[0] = (static_cast(new_pc_offset << lsb) & ~mask) | (ins & lmask); - ++(*outpp); - } //if - - ++(*inpp); - return ctxp->process_fix_map(current_idx), true; -} - -//------------------------------------------------------------------------- - -static bool __fix_pcreladdr(instruction inpp, instruction outpp, context *ctxp) -{ - // Load a PC-relative address into a register - // http://infocenter.arm.com/help/topic/com.arm.doc.100069_0608_00_en/pge1427897645644.html - static constexpr uint32_t msb = 8u; - static constexpr uint32_t lsb = 5u; - static constexpr uint32_t mask = 0x9f000000u; // 0b10011111000000000000000000000000 - static constexpr uint32_t rmask = 0x0000001fu; // 0b00000000000000000000000000011111 - static constexpr uint32_t lmask = 0xff00001fu; // 0b11111111000000000000000000011111 - static constexpr uint32_t fmask = 0x00ffffffu; // 0b00000000111111111111111111111111 - static constexpr uint32_t max_val = 0x001fffffu; // 0b00000000000111111111111111111111 - static constexpr uint32_t op_adr = 0x10000000u; // "adr" Rd, ADDR_PCREL21 - static constexpr uint32_t op_adrp = 0x90000000u; // "adrp" Rd, ADDR_ADRP - - const uint32_t ins = *(*inpp); - intptr_t current_idx; - switch (ins & mask) { - case op_adr: - { - current_idx = ctxp->get_and_set_current_index(*inpp, *outpp); - int64_t lsb_bytes = static_cast(ins << 1u) >> 30u; - int64_t absolute_addr = reinterpret_cast(*inpp) + (((static_cast(ins << msb) >> (msb + lsb - 2u)) & ~3u) | lsb_bytes); - int64_t new_pc_offset = static_cast(absolute_addr - reinterpret_cast(*outpp)); - bool special_fix_type = ctxp->is_in_fixing_range(absolute_addr); - if (!special_fix_type && llabs(new_pc_offset) >= (max_val >> 1)) { - if ((reinterpret_cast(*outpp + 2) & 7u) != 0u) { - (*outpp)[0] = A64_NOP; - ctxp->reset_current_ins(current_idx, ++(*outpp)); - } //if - - (*outpp)[0] = 0x58000000u | (((8u >> 2u) << lsb) & ~mask) | (ins & rmask); // LDR #0x8 - (*outpp)[1] = 0x14000003u; // B #0xc - memcpy(*outpp + 2, &absolute_addr, sizeof(absolute_addr)); - *outpp += 4; - } else { - if (special_fix_type) { - intptr_t ref_idx = ctxp->get_ref_ins_index(absolute_addr & ~3ull); - if (ref_idx <= current_idx) { - new_pc_offset = static_cast(ctxp->dat[ref_idx].ins - reinterpret_cast(*outpp)); - } else { - ctxp->insert_fix_map(ref_idx, *outpp, lsb, fmask); - new_pc_offset = 0; - } //if - } //if - - // the lsb_bytes will never be changed, so we can use lmask to keep it - (*outpp)[0] = (static_cast(new_pc_offset << (lsb - 2u)) & fmask) | (ins & lmask); - ++(*outpp); - } //if - } - break; - case op_adrp: - { - current_idx = ctxp->get_and_set_current_index(*inpp, *outpp); - int32_t lsb_bytes = static_cast(ins << 1u) >> 30u; - int64_t absolute_addr = (reinterpret_cast(*inpp) & ~0xfffll) + ((((static_cast(ins << msb) >> (msb + lsb - 2u)) & ~3u) | lsb_bytes) << 12); - A64_LOGI("ins = 0x%.8X, pc = %p, abs_addr = %p", - ins, *inpp, reinterpret_cast(absolute_addr)); - if (ctxp->is_in_fixing_range(absolute_addr)) { - intptr_t ref_idx = ctxp->get_ref_ins_index(absolute_addr/* & ~3ull*/); - if (ref_idx > current_idx) { - // the bottom 12 bits of absolute_addr are masked out, - // so ref_idx must be less than or equal to current_idx! - A64_LOGE("ref_idx must be less than or equal to current_idx!"); - } //if - - // *absolute_addr may be changed due to relocation fixing - A64_LOGI("What is the correct way to fix this?"); - *(*outpp)++ = ins; // 0x90000000u; - } else { - if ((reinterpret_cast(*outpp + 2) & 7u) != 0u) { - (*outpp)[0] = A64_NOP; - ctxp->reset_current_ins(current_idx, ++(*outpp)); - } //if - - (*outpp)[0] = 0x58000000u | (((8u >> 2u) << lsb) & ~mask) | (ins & rmask); // LDR #0x8 - (*outpp)[1] = 0x14000003u; // B #0xc - memcpy(*outpp + 2, &absolute_addr, sizeof(absolute_addr)); // potential overflow? - *outpp += 4; - } //if - } - break; - default: - return false; - } - - ctxp->process_fix_map(current_idx); - ++(*inpp); - return true; -} - -//------------------------------------------------------------------------- -#define __flush_cache(c, n) __builtin___clear_cache(reinterpret_cast(c), reinterpret_cast(c) + n) - -static void __fix_instructions(uint32_t *__restrict inp, int32_t count, uint32_t *__restrict outp) -{ - context ctx; - ctx.basep = reinterpret_cast(inp); - ctx.endp = reinterpret_cast(inp + count); - memset(ctx.dat, 0, sizeof(ctx.dat)); - static_assert(sizeof(ctx.dat) / sizeof(ctx.dat[0]) == A64_MAX_INSTRUCTIONS, - "please use A64_MAX_INSTRUCTIONS!"); -#ifndef NDEBUG - if (count > A64_MAX_INSTRUCTIONS) { - A64_LOGE("too many fixing instructions!"); - } //if -#endif // NDEBUG - - uint32_t *const outp_base = outp; - - while (--count >= 0) { - if (__fix_branch_imm(&inp, &outp, &ctx)) continue; - if (__fix_cond_comp_test_branch(&inp, &outp, &ctx)) continue; - if (__fix_loadlit(&inp, &outp, &ctx)) continue; - if (__fix_pcreladdr(&inp, &outp, &ctx)) continue; - - // without PC-relative offset - ctx.process_fix_map(ctx.get_and_set_current_index(inp, outp)); - *(outp++) = *(inp++); - } - - static constexpr uint_fast64_t mask = 0x03ffffffu; // 0b00000011111111111111111111111111 - auto callback = reinterpret_cast(inp); - auto pc_offset = static_cast(callback - reinterpret_cast(outp)) >> 2; - if (llabs(pc_offset) >= (mask >> 1)) { - if ((reinterpret_cast(outp + 2) & 7u) != 0u) { - outp[0] = A64_NOP; - ++outp; - } //if - outp[0] = 0x58000051u; // LDR X17, #0x8 - outp[1] = 0xd61f0220u; // BR X17 - *reinterpret_cast(outp + 2) = callback; - outp += 4; - } else { - outp[0] = 0x14000000u | (pc_offset & mask); // "B" ADDR_PCREL26 - ++outp; - } //if - - const uintptr_t total = (outp - outp_base) * sizeof(uint32_t); - __flush_cache(outp_base, total); // necessary -} - -//------------------------------------------------------------------------- - -extern "C" { -#define __attribute __attribute__ -#define aligned(x) __aligned__(x) -#define __intval(p) reinterpret_cast(p) -#define __uintval(p) reinterpret_cast(p) -#define __ptr(p) reinterpret_cast(p) -#define __page_size 4096 -#define __page_align(n) __align_up(static_cast(n), __page_size) -#define __ptr_align(x) __ptr(__align_down(reinterpret_cast(x), __page_size)) -#define __align_up(x, n) (((x) + ((n) - 1)) & ~((n) - 1)) -#define __align_down(x, n) ((x) & -(n)) -#define __countof(x) static_cast(sizeof(x) / sizeof((x)[0])) // must be signed -#define __atomic_increase(p) __sync_add_and_fetch(p, 1) -#define __sync_cmpswap(p, v, n) __sync_bool_compare_and_swap(p, v, n) -#define __predict_true(exp) __builtin_expect((exp) != 0, 1) -#define __make_rwx(p, n) ::mprotect(__ptr_align(p), \ - __page_align(__uintval(p) + n) != __page_align(__uintval(p)) ? __page_align(n) + __page_size : __page_align(n), \ - PROT_READ | PROT_WRITE | PROT_EXEC) - - //------------------------------------------------------------------------- - - static __attribute((aligned(__page_size))) uint32_t __insns_pool[A64_MAX_BACKUPS][A64_MAX_INSTRUCTIONS * 10]; - - //------------------------------------------------------------------------- - - class A64HookInit - { - public: - A64HookInit() - { - __make_rwx(__insns_pool, sizeof(__insns_pool)); - A64_LOGI("insns pool initialized."); - } - }; - static A64HookInit __init; - - //------------------------------------------------------------------------- - - static uint32_t *FastAllocateTrampoline() - { - static_assert((A64_MAX_INSTRUCTIONS * 10 * sizeof(uint32_t)) % 8 == 0, "8-byte align"); - static volatile int32_t __index = -1; - - int32_t i = __atomic_increase(&__index); - if (__predict_true(i >= 0 && i < __countof(__insns_pool))) { - return __insns_pool[i]; - } //if - - A64_LOGE("failed to allocate trampoline!"); - return NULL; - } - - //------------------------------------------------------------------------- - - A64_JNIEXPORT void *A64HookFunctionV(void *const symbol, void *const replace, - void *const rwx, const uintptr_t rwx_size) - { - static constexpr uint_fast64_t mask = 0x03ffffffu; // 0b00000011111111111111111111111111 - - uint32_t *trampoline = static_cast(rwx), *original = static_cast(symbol); - - static_assert(A64_MAX_INSTRUCTIONS >= 5, "please fix A64_MAX_INSTRUCTIONS!"); - auto pc_offset = static_cast(__intval(replace) - __intval(symbol)) >> 2; - if (llabs(pc_offset) >= (mask >>1)) { - int32_t count = (reinterpret_cast(original + 2) & 7u) != 0u ? 5 : 4; - if (trampoline) { - if (rwx_size < count * 10u) { - LOGW("rwx size is too small to hold %u bytes backup instructions!", count * 10u); - return NULL; - } //if - __fix_instructions(original, count, trampoline); - } //if - - if (__make_rwx(original, 5 * sizeof(uint32_t)) == 0) { - if (count == 5) { - original[0] = A64_NOP; - ++original; - } //if - original[0] = 0x58000051u; // LDR X17, #0x8 - original[1] = 0xd61f0220u; // BR X17 - *reinterpret_cast(original + 2) = __intval(replace); - __flush_cache(symbol, 5 * sizeof(uint32_t)); - - A64_LOGI("inline hook %p->%p successfully! %zu bytes overwritten", - symbol, replace, 5 * sizeof(uint32_t)); - } else { - A64_LOGE("mprotect failed with errno = %d, p = %p, size = %zu", - errno, original, 5 * sizeof(uint32_t)); - trampoline = NULL; - } //if - } else { - if (trampoline) { - if (rwx_size < 1u * 10u) { - LOGW("rwx size is too small to hold %u bytes backup instructions!", 1u * 10u); - return NULL; - } //if - __fix_instructions(original, 1, trampoline); - } //if - - if (__make_rwx(original, 1 * sizeof(uint32_t)) == 0) { - __sync_cmpswap(original, *original, 0x14000000u | (pc_offset & mask)); // "B" ADDR_PCREL26 - __flush_cache(symbol, 1 * sizeof(uint32_t)); - - A64_LOGI("inline hook %p->%p successfully! %zu bytes overwritten", - symbol, replace, 1 * sizeof(uint32_t)); - } else { - A64_LOGE("mprotect failed with errno = %d, p = %p, size = %zu", - errno, original, 1 * sizeof(uint32_t)); - trampoline = NULL; - } //if - } //if - - return trampoline; - } - - //------------------------------------------------------------------------- - - A64_JNIEXPORT void A64HookFunction(void *const symbol, void *const replace, void **result) - { - void *trampoline = NULL; - if (result != NULL) { - trampoline = FastAllocateTrampoline(); - *result = trampoline; - if (trampoline == NULL) return; - } //if - - trampoline = A64HookFunctionV(symbol, replace, trampoline, A64_MAX_INSTRUCTIONS * 10u); - if (trampoline == NULL && result != NULL) { - *result = NULL; - } //if - } -} - -#endif // defined(__aarch64__) diff --git a/app/src/main/cpp/X64Hook/And64InlineHook.hpp b/app/src/main/cpp/X64Hook/And64InlineHook.hpp deleted file mode 100644 index 7af5090..0000000 --- a/app/src/main/cpp/X64Hook/And64InlineHook.hpp +++ /dev/null @@ -1,42 +0,0 @@ -/* - * @date : 2018/04/18 - * @author : Rprop (r_prop@outlook.com) - * https://github.com/Rprop/And64InlineHook - */ -/* - MIT License - - Copyright (c) 2018 Rprop (r_prop@outlook.com) - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. - */ -#pragma once -#define A64_MAX_BACKUPS 256 - -#ifdef __cplusplus -extern "C" { -#endif - - void A64HookFunction(void *const symbol, void *const replace, void **result); - void *A64HookFunctionV(void *const symbol, void *const replace, - void *const rwx, const uintptr_t rwx_size); - -#ifdef __cplusplus -} -#endif \ No newline at end of file From 143e18e7374f30d27a88d740ca555bbdd1393ffa Mon Sep 17 00:00:00 2001 From: Octowolve <32366759+Octowolve@users.noreply.github.com> Date: Tue, 9 Aug 2022 05:02:10 +0200 Subject: [PATCH 4/7] Delete Application.mk --- app/src/main/cpp/Application.mk | 15 --------------- 1 file changed, 15 deletions(-) delete mode 100644 app/src/main/cpp/Application.mk diff --git a/app/src/main/cpp/Application.mk b/app/src/main/cpp/Application.mk deleted file mode 100644 index d528a44..0000000 --- a/app/src/main/cpp/Application.mk +++ /dev/null @@ -1,15 +0,0 @@ -APP_OPTIM := release -APP_PLATFORM := android-27 -APP_STL := system -APP_STL := gnustl_static -APP_THIN_ARCHIVE := true -APP_PIE:= true - - -ifneq ($(APP_OPTIM), debug) - $(info APP_OPTIM is $(APP_OPTIM) ...) - APP_LDFLAGS += -Wl,--strip-all - APP_CFLAGS += -fvisibility=hidden -fvisibility-inlines-hidden - APP_CFLAGS += -g0 -O3 -fomit-frame-pointer -ffunction-sections -fdata-sections - APP_CPPFLAGS += -std=c++11 -endif From acec43af482e4591e71569d4e9a13a8d62953a4d Mon Sep 17 00:00:00 2001 From: Octowolve <32366759+Octowolve@users.noreply.github.com> Date: Tue, 9 Aug 2022 05:02:18 +0200 Subject: [PATCH 5/7] Delete Android.mk --- app/src/main/cpp/Android.mk | 21 --------------------- 1 file changed, 21 deletions(-) delete mode 100644 app/src/main/cpp/Android.mk diff --git a/app/src/main/cpp/Android.mk b/app/src/main/cpp/Android.mk deleted file mode 100644 index 756cb56..0000000 --- a/app/src/main/cpp/Android.mk +++ /dev/null @@ -1,21 +0,0 @@ -LOCAL_PATH := $(call my-dir) -MAIN_LOCAL_PATH := $(call my-dir) -include $(CLEAR_VARS) -LOCAL_MODULE := wolve - -LOCAL_CFLAGS := -Wno-error=format-security -fpermissive -LOCAL_CFLAGS += -fno-rtti -fno-exceptions - -LOCAL_C_INCLUDES += $(MAIN_LOCAL_PATH) - -LOCAL_SRC_FILES := main.cpp \ - Patching/Patch.cpp \ - Substrate/hde64.c \ - Substrate/SubstrateDebug.cpp \ - Substrate/SubstrateHook.cpp \ - Substrate/SubstratePosixMemory.cpp \ - X64Hook\And64InlineHook.cpp \ - -LOCAL_LDLIBS := -llog - -include $(BUILD_SHARED_LIBRARY) From 8b41b80f26982c7162d51e014a028e08b1b510ff Mon Sep 17 00:00:00 2001 From: Octowolve <32366759+Octowolve@users.noreply.github.com> Date: Tue, 9 Aug 2022 05:02:52 +0200 Subject: [PATCH 6/7] Update build.gradle --- app/build.gradle | 31 ++++++++++--------------------- 1 file changed, 10 insertions(+), 21 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 1006306..6b5eed6 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,9 +1,5 @@ apply plugin: 'com.android.application' -def build_ndk = "NDK" -def build_cmake = "CMAKE" -def build_method = build_cmake - android { compileSdkVersion 28 buildToolsVersion "29.0.3" @@ -14,15 +10,15 @@ android { versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" - if (build_method == build_cmake) { - externalNativeBuild { - cmake { - arguments "-DANDROID_NATIVE_API_LEVEL=" + String.valueOf(minSdkVersion) - arguments "-DANDROID_LD=lld" - arguments "-DANDROID_STL=c++_shared" - } + + externalNativeBuild { + cmake { + arguments "-DANDROID_NATIVE_API_LEVEL=" + String.valueOf(minSdkVersion) + arguments "-DANDROID_LD=lld" + arguments "-DANDROID_STL=c++_shared" } } + ndk { abiFilters 'armeabi-v7a', 'x86', 'arm64-v8a' } @@ -35,16 +31,9 @@ android { } } externalNativeBuild { - if (build_method == build_cmake) { - cmake { - path "src/main/cpp/CMakeLists.txt" - version "3.10.2" - } - } - else if (build_method == build_ndk) { - ndkBuild { - path file('src/main/cpp/Android.mk') - } + cmake { + path "src/main/cpp/CMakeLists.txt" + version "3.10.2" } } compileOptions { From 65e24350bd109af46d383f3a86893f3bdcb1890c Mon Sep 17 00:00:00 2001 From: Octowolve <32366759+Octowolve@users.noreply.github.com> Date: Tue, 9 Aug 2022 05:06:03 +0200 Subject: [PATCH 7/7] Update README.md --- README.md | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 378bdb1..7975dde 100644 --- a/README.md +++ b/README.md @@ -3,11 +3,7 @@ [![Discord](https://img.shields.io/discord/720937884814671923?color=%237289DA&logo=discord&logoColor=%23fff&style=for-the-badge)](https://discord.gg/bmRF2ac) ![Size](https://img.shields.io/github/repo-size/Octowolve/Hooking-Template-With-Mod-Menu?style=for-the-badge) -This is a simple template for the usage of Cydia Substrate and And64InlineHook with a Mod Menu written in Java. - -### Implementation: -* https://piin.dev/android-mod-menu-implementation/ -* Read this tutorial carefully +This is a simple template for the usage of Dobby with a Mod Menu written in Java. ### Tutorial: * https://guidedhacking.com/threads/function-pointers-and-a-tutorial-for-my-hooking-template.14771/#post-90490 @@ -24,5 +20,4 @@ This is how the menu looks like when you simply build and run it ### Credits: -This template should support x64 hooking now thanks to this repo: -https://github.com/Rprop/And64InlineHook +https://github.com/jmpews/Dobby