From 2f439f5518dc77f052fec63d4d8e6f43f44ab4ea Mon Sep 17 00:00:00 2001 From: hfiref0x Date: Sun, 15 May 2022 13:05:27 +0700 Subject: [PATCH] 1.9.3 updated SeCiCallbacks search for newest Windows versions fixed win32k ApiSet resolving for Win10 21H2 fixed ObCallbacks enumeration issues support for various kernel driver helpers ported to msvc 2022 (with backward compatibility to 2019) bugfixes rtls updated (beta 1) --- Compiled/WinObjEx64.exe | Bin 699392 -> 712704 bytes Compiled/plugins/ApiSetView.dll | Bin 144384 -> 131584 bytes Compiled/plugins/ExamplePlugin.dll | Bin 107520 -> 94720 bytes Compiled/plugins/ImageScope.dll | Bin 142336 -> 142848 bytes Compiled/plugins/Sonar.dll | Bin 160256 -> 146944 bytes README.md | 11 +- Source/CHANGELOG.txt | 9 + Source/FILELIST.txt | 186 ++-- Source/Plugins/ApiSetView/ApiSetView.vcxproj | 4 +- Source/Plugins/ApiSetView/Resource.rc | Bin 6936 -> 6936 bytes Source/Plugins/ApiSetView/main.c | 6 +- Source/Plugins/ApiSetView/query.c | 10 +- .../ExamplePlugin/ExamplePlugin.vcxproj | 4 +- Source/Plugins/ExamplePlugin/Resource.rc | Bin 4668 -> 4668 bytes Source/Plugins/ImageScope/ImageScope.vcxproj | 6 +- Source/Plugins/ImageScope/Resource.rc | Bin 8326 -> 8326 bytes Source/Plugins/ImageScope/sup.c | 8 +- Source/Plugins/ImageScope/sup.h | 8 +- Source/Plugins/Sonar/Resource.rc | Bin 4650 -> 4650 bytes Source/Plugins/Sonar/Sonar.vcxproj | 8 +- Source/Plugins/Sonar/Sonar.vcxproj.filters | 12 +- Source/Plugins/Sonar/main.c | 82 +- Source/Plugins/Sonar/ndis.h | 17 +- Source/Plugins/Sonar/query.c | 12 +- Source/Plugins/Sonar/query.h | 8 +- Source/Plugins/Sonar/sup.c | 238 +++-- Source/Plugins/Sonar/sup.h | 18 +- Source/Plugins/Sonar/ui.h | 6 +- Source/Shared/ntos/ntalpc.h | 45 +- Source/Shared/ntos/ntbuilds.h | 13 +- Source/Shared/ntos/ntos.h | 257 +++-- Source/Shared/ntos/ntsup.c | 154 ++- Source/Shared/ntos/ntsup.h | 19 +- Source/Shared/sdk/extdef.h | 66 +- Source/WinObjEx64/Resource.rc | Bin 167136 -> 167136 bytes Source/WinObjEx64/WinObjEx64.vcxproj | 36 +- Source/WinObjEx64/WinObjEx64.vcxproj.filters | 160 +-- Source/WinObjEx64/aboutDlg.c | 138 +-- Source/WinObjEx64/driver.rc | 2 +- Source/WinObjEx64/drivers/wdbgdrv.c | 163 +++ Source/WinObjEx64/drivers/wdbgdrv.h | 26 + Source/WinObjEx64/drivers/wdrvprv.c | 562 +++++++++++ Source/WinObjEx64/drivers/wdrvprv.h | 204 ++++ .../{drvhelper.c => drivers/winio.c} | 311 +++--- Source/WinObjEx64/drivers/winio.h | 83 ++ Source/WinObjEx64/drvhelper.h | 63 -- Source/WinObjEx64/extras/extrasCallbacks.c | 665 ++++++++---- .../extras/extrasCallbacksPatterns.h | 27 +- Source/WinObjEx64/extras/extrasDrivers.c | 8 +- Source/WinObjEx64/extras/extrasIPC.c | 8 +- Source/WinObjEx64/extras/extrasPN.c | 8 +- Source/WinObjEx64/extras/extrasPSList.c | 10 +- Source/WinObjEx64/extras/extrasSL.c | 8 +- Source/WinObjEx64/extras/extrasSSDT.c | 111 +- Source/WinObjEx64/global.h | 9 +- Source/WinObjEx64/hash.c | 8 +- Source/WinObjEx64/hash.h | 8 +- Source/WinObjEx64/instdrv.c | 348 ------- Source/WinObjEx64/instdrv.h | 55 - Source/WinObjEx64/kldbg.c | 952 ++---------------- Source/WinObjEx64/kldbg.h | 69 +- Source/WinObjEx64/main.c | 12 +- Source/WinObjEx64/msvcver.h | 10 +- Source/WinObjEx64/plugmngr.c | 18 +- Source/WinObjEx64/props/propAlpcPort.c | 8 +- Source/WinObjEx64/props/propDesktop.c | 8 +- Source/WinObjEx64/props/propObjectDump.c | 32 +- Source/WinObjEx64/props/propObjectDump.h | 24 +- Source/WinObjEx64/props/propProcess.c | 8 +- Source/WinObjEx64/props/propSecurityConsts.h | 11 +- Source/WinObjEx64/props/propTypeConsts.h | 11 +- Source/WinObjEx64/sup.c | 514 +++++++++- Source/WinObjEx64/sup.h | 61 +- Source/WinObjEx64/symparser.c | 8 +- Source/WinObjEx64/symparser.h | 16 +- Source/WinObjEx64/tests/testunit.c | 56 +- Source/WinObjEx64/ui.h | 10 +- Source/WinObjEx64/utils/GenAsIo2Unlock.exe | Bin 0 -> 127488 bytes WinObjEx64.sha256 | 145 +-- appveyor.yml | 2 +- 80 files changed, 3684 insertions(+), 2519 deletions(-) create mode 100644 Source/WinObjEx64/drivers/wdbgdrv.c create mode 100644 Source/WinObjEx64/drivers/wdbgdrv.h create mode 100644 Source/WinObjEx64/drivers/wdrvprv.c create mode 100644 Source/WinObjEx64/drivers/wdrvprv.h rename Source/WinObjEx64/{drvhelper.c => drivers/winio.c} (63%) create mode 100644 Source/WinObjEx64/drivers/winio.h delete mode 100644 Source/WinObjEx64/drvhelper.h delete mode 100644 Source/WinObjEx64/instdrv.c delete mode 100644 Source/WinObjEx64/instdrv.h create mode 100644 Source/WinObjEx64/utils/GenAsIo2Unlock.exe diff --git a/Compiled/WinObjEx64.exe b/Compiled/WinObjEx64.exe index a246e6d65802161da0bd017ee68a81387593a8ee..e61c59192c145c69c81f514c5e0fa5e24f2be616 100644 GIT binary patch delta 223313 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

s|!6^vDuu&k zTH#kbC7fJcj<9l9leryVjS6_DMeZMbbl{`2r0^J2i*@*`;kOlR(dh?12tJpPJCk2; zos>pt*NyLPlDG{y*Ae4(%g2WMT8W=b>=SxGYdq^h-X^*Qt%Nh&eqvlz1O5zoV^Y-vpBPP=y)+%GOEwhPbvU+^ z$U@#>8sPJO>fKKa?-lbm06>$xU39VnucPkdGz(bt>h~Pf!O1ILsuXuq(+JI&e6`U~ z#jZ968yhF8?A6?6T{clYu-b@or(Y$*hyJtEzWOTl%4(xym%KhaUBuLOZ+}sIB=u8T z1p~l~rACZ1D@YCp*_}E-ofB-vQ>w|QL=jp_vylm%0+qX%g{1fd+gj`nJx+^3A$t;m zDnvi#s3{)(DM~CF@;fa!Fj_i)v;FEs@C2XKsS+P+A-OzCmeM_^gJ%VAh1toI3eMKN zr)jWGF~5W9cCbz$P_QxD#mbWh^c9@|ry z-TqclRN>fO~ACvrfC(X&)P(Z$;GA?#u4+DZ)K9;V)dUTJV#0U?rSen;@qxrNLKHzA)1L8 z9SD!WDA9(G6H57urV>m&#gl|7mD7ZaJPULl;w_prq@*rzIxNL|R|*i5bw0=2vgs5I z?1*#B^y2Cf=9u)nFh{(eWx7e3d}=;vlOWwGjB@i9IahdU8ii%lhwC?wUs2ngWAxT3yEG3%?wu&hs zhU5 z2#erw+>>PG9~@)9bGcf#j;rTSXdrLH2#)uzRDZ5BnqTurPjOA)IGVXC#yXK{T8R&N zuW^c$;Tof>okF#On|q8C7v|JrIvRYo$vsV&R{Mj?)wuOWqk1kWgyRs)gLGB<&1&9y zF_c-H>IF`UL*5;C$a4(N|kXC|MVN{PTA@A)BZH9VrgVCUyNl9Jk3jkV=a+Z0^ zUF}&`sTqxF3oNujmRP)Oq5Uo7OQEYvbDQfLH)(yc+WgsHg8 z<$d5yTCEyxG~)B__F;&ZjvT&{QN}yTUNK7^Y4H@cWTME6aH)0*=L%tA-<^Z+l~@gz zrh$16$7SK~CYo)Avxn>_6 zW6m5Y8N#SHJ9K7G!8e2rTB>nxmiUhDD}=?IaNzYeC~Q?d4Xd9j+hlZZ?_Q5CJKO^k z{eVgtdY>LI_QSQV^Uf!3Qm*I^REy1&DZ4@q+sw896W!Fkn~i2^qh?DN>-P$NaGqVX zPcUf313Ir{h@{Fv!qVmI!DJynI_S~QN0A@4_e%DWq?iwaa0Pqkd7=5E2TH3)3ThvGrW^ndZ7 zo+0lX4bMVaW}jv-gp0O720&VSDYMU>6X7C{A-Lmy6QkRvaIk%=Cl`KT5E#+>^A4eM z2Gc~F1!YmoumX5LxG(SK9Oxzr#yn97!+481pQ>PIu-`s}rbZ-bd2C>r#?wjgXco(< z8n?eK?PcgYKP5b&$M`E5$)NX(uOtI$d=QfOeG6Fh?=AcecQ~)fp`Fb+Zq!suwi-zj zMt>lNP}kl3k@teuJ|V4?OZhw-C;e*?@c3-j6wDdEIR5Fdp*G@dg1 zswIMFU=xz=`amU>p*1adS|^EuUG#w(T4pqGPj!-H=d&oBl;I?anc+E|)G&#Zh(+uz zhmi1TXRm;T|2w-4=#cf(cB`FbJaxT4I%>_24GX^Rr!$??$o=-#r$V9Npi>nIa{k|vgTw~&tl#{-AQV4SMXGLlN!4f-msUL$>@+x) z-f9!)fF?@Ec99M#ICc_vDsuKj7amj3eP;9=b^leBYDGSrqI)>qDi>EZddWTYJv}sY z_#;E}^kY(kxRZDa8#6S{wloV#f%nQXd~skXXJ;66z4*TBvdu_rr}PwM0|@T;D0^PI zjHt-0oEedJJ^8-6Z=2CN&qu@O`z4~uJrvTpT1&4CmJ$D?0Eh?6q<;noY2IkkxVc*&h9HS12azJicDq{8CdAFRKu zBeo0l&Xr5lFSG4Eu>o-ayh8umS~^W!0qfvNG@6>rUxsqNFOzRsKlpa>4V)8DJUIMk zmPbeRoC$fa)PgIshRF73 zKi1krIFmz+(rOAGps+21@Ry_y>n92s4HhZbwYV@|I% zJVm4U@e%)zD%|5K8o~z;58Vo8c`#1wEf-I@1ydTY6x)k6E>B?xpo7B(RRYh6m$0k; zc=0vb%BDjb;p{14=s&1~yR9)9DgOAJS|5p8SpJ=EIPSHgEv91WlXI`%&#L=&@ec5x zvfhZ!u~bS1-M=muo}ta&uin+pB=+U(hOoiQY|bMBVnTq|N4PA$F=kT0^T3*4J$d-f zr1##QbBk<3M+-TukaL#Hr4igvq=msiqPB7l0VC$cMEkWxn)|R_fDaig&y9#PhJET! z)qJNYiy!dhP+QDiF6VZ zBj*`mZPV@|+B&oo5oI{XSET^hud2^>8*$gHgC2=4+u|zukVBj`lnbA4y`(3^f0+_MCWbHA0G0is0+WcHc_4FR2^_5*QRg}xVM{5x1AMDzFqCxl$2v{>s zu{&qMCF(})$h40XQEsi!X6h@@S~CAFZeM!r;Gg4yx?54r)WIs zn|!e`KqLDOjWMIj#ifn!9h3NGmn_-*D@h;UPLjM7OcL8NN$PkTNup%){mHF-*H(Q# zH`)!lZVKN&00StRrex;{D93$O5Kf&y(i$fzjBu4yOP5HAX`|J$&#_=FA8kfej02O~ zNzcB8-y`{5)A=0>nuX!XCngDmz7go{DoH^>kQ?3oWBBy}KX4V+Ia}xpoRpo6_41=(dNCG}=zx`q zHK}PA^~ye@`&E{Yw1X@R#lD!_&KZ`kS0;SmL2=6|HrYh*P>9206Zsi7vo|G$SL9;% z6XkI43dOUugX7=o7M6H&I>0WD8|lCJ5&N}PMyE#Qmp4&M_ZtnblATa=vn_MKk{wZ+ ztP&-5lhf;B(mZKv*t8~lO1_CrBXWbND7>FTJ&41m*yGx&pZ6Q>8zy6=a5RHl+VC~M zDyFMD4;al_zX%8SZ5tIuLKodnNC6iiR)C01?8n*xHYwzxDt0X@0?RRB@NDt2%Lj>yI?2PIR-~bH9#? ziixtedP>UcpIMg>6}8lpwpHx#m`a=`o>>=&ipp|YIiyM}2hqx@Od%2aA@9Fh(;nOC!y`(GSZ$D~?8)lbAN_%y{r=cU zxZiAnDA?o*togx(=E-J*n8b--DjtC9y&1Wd8wWGBQk@PNgYwP{V1SUp+I=afn;h_N z4y^gg6-WE${!TaOVFg81p|Wyy<_Gi;c?ZBK7SItob_JKy~MrM$KvcDU^}4)i=Ldy?I8u zxjQpyZSE<#CNn^WP&h6tz4wOP8upFs4J&w0sGf{WIG)+R3q%s=7j$oF2P?Aml-pfQ zpEuuerq5Dm`eggY_(qQ%qwYMx;`ZB@MvsAAC>l8^2!y;{+Y5Uikd-GXldE}CHREe5 z{bqYEN9<&DLlm8Uuu}HC$(=v7{DKizJJ~meiOW0)#;L~+vs=EWV;{ z)=tpQ81C|Xm@YUe+Hc8)kdo(OrM3mSHupC2m>XToROu0;UF_>QQmuQjlNz^N{eHw~ z(d!8rUNZ{fF1JH*rP_HnwwY?NnZJmDm`j=yI|@02vk4j z(aFI~#nbee*7}misJz(!IyO_FAYmRl1$y3 z(X>GTd3zbE>GYETN&*j`I|)anq?LK4bZL*bRPSR(5996jYWgwEG$$WWPaQMb8FO2x zPmUR_S}%J5F3J%4(h>+OJhX)ry|@*d@us?P%xIz(H8MPTS>mWs`JCC0?ZPZlv=rsg zx;I8b%UP%7_F}3qiw?DwEHW+1kibp7{PWK{(W2PdW{zfyAu2Eer7ti-x|AshHBA%w zhn1ldAmp|pNoTFhV_}d8>JSS|sle0#Mh?AMXirCOy_9hbR{j{EypGfKQ#2Oz+&gRJ z`b2hS3yVw_bkl{D>{WH5E-$bz6zEfrI>Lw9V(1uIfqOfFtbDQ`!eAONi%G*g!7wsy zK93AI$p-z*)_h(yDs$$oL@ha811j-pre3ND$N}vv!4}XGn*%Te=wv;MX7Nr45I&FE zBp1+5&=_mLPmA{y!XIJAdfzPG0e(|DCZuiLCHyJvB2 z;~s>IZ*x;1SS>X#t*~=Jz>|iX51yS2bC!Ko6VAX`k^&|MmTKv#g?$Qgcoxl{FV^jR zqMMr=_=?Zv4OVY;{4t3^y*-e$b5d~(Ii3}Dj7ddXa({u!cs3~cJ=mTu5_0YBaGKyX zcR)s0xbzwZA}_4#@KRsE*sRG<03t3O>Dlk-2SK9KYOqvcM+^QyM|_s6Mv z$p5SAc;`vE|GVRF`hQk0r)^p6hkd8>N>g)jQN)2ww)(>4mkgt0cH!vvAIDJifNWuM zcGjoSxx|ArTTcAk-`*?g+Vjm={V(D8sj^u{wxwzTmo|TP9-Dc~{UP9C-oKqPj@%I$ zWJKIdM$)jUtkGQ7rxpv>%AdXmFUVw{)k@^fWLYzM=rx1jA%oV5`3!q`-6sEy zR7)CyFIEv^4MN_3Q$5HAX(4v^@V`^y6slULArCP*WfFB62&k-BZ_WyqF{nKql0x1h zOrBNbU|gQP?l6X1CsV8Xn_|Tj*Kgwm~YptFGqj={F3gGI(9U=gzjkj z`;-XTp29*{R%8vb6#=RnakQ@B&1oqtkriInS#;)w(J&?#>aoI0@Xbi6+IDTdW)UJ? z7ZUvdrVM$nr;tw4to6t}!dd}31;&}nk8qo>AjMzEG0GX4K(t3o&tO(7yH6#lIT;R_ zmbN%{f!sV{kDiwh>!=*md)Vu=8Hnp3mg*W@tZs9JrJMz=rMZ{GZ<(pPyRm_y$8+`7A3Y0a7){j;wk#;tAk>!+P%6B2e}$e>>W zp;AU48Qj~P`G)ks-4}ZxLXuvdt1Q=-tkjJ{-faLf=R-dJ{GQO9Sb4NnenGw*C}s@QU3sUNvRC6^n`Gd4Hi{E6E1fxw)ltMX+SgWh_0!^wd) zI$`_z&=T~vB8A@pF5Gbl?4%`CrY#S7|Ei}JmmA&NjF_rbAS_WFVq-I2%23%U-Gn9* zLf*BF)bVoOl)D{uk+sf=qt!^-#bk?Taf%Olf1pJb^%#+juaK^j_DUl$kcx*zFPVy| z0kji*;9L*>LXM0M*-Pak+y40`8Nf;xsgX;?Hnb!m744FjCh)_)KVHrIk;pJE&0%`0 zGmi7&u6Jo|zMK33ky!GnAXa`#(>V%poF`BBQ?1=*hdTd;J9H<#9~-S2R2Vr8Ce9=} zoOcNS!X;V!v42+2R2ZFaeEVfFF&CVre?#86G7BvoFNCgrk1Rdqrf6!|9tXXjI%x&7 z>aZi~6VRYHHG;X7 z^E)f@+fy%EO+Rk<%(5n?djGhQX1?NyR(~GHbQD)xwK!pPtT)0VZ3~JLCEEWzK4 ziI-RSKtCKe)Qr+Li1KkxLiQ*Us)MaO%SrHHWm}0>997=$p&>bAfcL(SDt1P~!JKr0m zwPJuQM@tfN3dvlF0EjA|;3N#YQT_Fk(KqFNTCkGci8D8W{B;Cqp2IxM_X^NgJjTZ( z!+{b5XSo<~Nw{#G%K6#o*!H>`fFA8Y54;}eg=D&glC};dGlr_tpN#>-MuE0s6`A9u z#9`4B2q`ImyPWT4w6A=F^Zh8*l^=4xdkBo-)bOy-#+y4*_WqmHh?7R^QL&{*1p>yO$I@05~j zrGLc&nMoRyWCe#|a^?5u{Dzzlm#eA27|qQlwWF2AN3}m{VbK`!oY_dN`NimLKGDEb zCx0;-n?3+)oibXa-wS|mbv}4GUwP#@SvmG0>a;i*O&+)M1ODIxcoLQR#K#U%I*?@I zTf6|UIHM!K;_X{%sOhJSW*Pr>IetI!diNodJmihm@b3G7uaa6(QzIV**2po!0g@^) z{#jix#tj~25Bvw5&j1R+Jubyr=-|w#f^$YyoKJ>vX4pro{WqOG9Gu6OTta6H2WM6l zoVBXr>=MSAWzYHtoS(&LI$ymM=ZB=yvDa6@`7%kBZQtl}+J3!V?;mhZba0Nj6z32J zCtLK&{_Il~=U4}4hmrQb%>QotU+kY{sS*A{OtyMTz4x2pH?v|8r@t93>dhm+gh!A8 zVno}J-0^p#g?UqrXqEoE(IGXNe3lsme96m}NGENhQ;0kK7 zyWr{R%^j-k|>Z_um+mQ!Rf;|5(RCTO67bGQ~s*+E+RG;gPhO z(W=QA-Uo4uT;imW2SRXvCI1ecp9sU?t+z>{oVxFSnj`L}c`Ex1mxl7iw88POC^?qv zh#R4z9}Uo@FB9?A5RR&JO)q5 zdxvlzZ#ovrshzZU&atoxIQ$ro6J#WevTyzCyzEMjmAE4{UPg^%Wux33n^Zjdn4J~@ zsT%>QDH$HOxumkP$0L==hDTR6 zN<%EJgqR+I=oo>x3JA}K*C)&r4p}3c1Q~DnF_k%n6qpXANP!s(h1Y5?N!aP=;Q20< zY#9x&juE%zRDB!%5AlbN&#?NVBYVF@-3WOh`D6)blJkVja)od@2<;+3Y`!>n>aSwh-}Uh%8ugnm#b!Y*)j=P?4Q(?Xq8!!)dMn zc%RmQ?}gMie;Uc1(=|O?O3*MdsWxKZHBB?4H#^*e8L>T@k;v2uiI z0?Spt_{h;_k8rv$2ArC}Prb{8$oQKBp>}&nS2Ip##$7zMm>lvxu4~o- zb7oTdE^;%1)#fnkowJRQce+3n4~&=Q4U&6~xN%N6e;(hJ2a@F!r7OkyIK@U+DVE|C zOO#@<0rAAzY#hiik^dI&e|>XcO7LdMm`ljj%JGW*xdIxpiJT#o%%v*Y|lqs`0A zpQ@RQ9y4#OxfPW<*Sm{?AO0g8|hvD2{Eirw2ORFxGk=or>|F2s+$ds zpU$cL>ShO|z*+Tub@LV@cAUDVhS~P|4wiI-%x=0NUkI{X_rrX+(?U28 zC$rl`m}5|(55AuN-@t=4@G-6xiXu5OL&stI5s?-WS2)1}5M zSxu~ya!m$Fgf?Q8?Fx?YP7egKi zawUUb$1vvpq8_bndfU&wQnW-OByZ9u#JaPOBVF(btS&p;;P9RH`McEC+UAVx+eiWM974J3^>&(_d0Og_Jrzn*a6Wv@*cbiEK zR#9V#a0KfOh*Lzl?nL_D*$bjK^#@Vd9-sbCrftJ_Gn7tnF(8PTGyXT%ilY|Ye=dS+s$uY3i6 z)Xr^2@q%ZBr8e8&{BT}&XN*{B`C&b>ysWav_o;fZp4ljRzgk((Y|ABJ>uh@Otuw#l zT=#x-BRk(IC1P}2h8cBDu=8-yi88DW!7L{A7HV}ikU3KV1tApHof#f~=$c@iIV=LS z=1@)>(WzPldY1=0{kKV{)(a#Zm|v~IJR=ZV8z?A`&OOCOh9<-JZR`)keq_0Cp)S1z z^-GQ>YE+&cJanfq?g6SNYRbgipJ;8gDp@S_4-+YGRr_M zumwP@yq-ew*~Q}|k%RSkGAZ{6TVJy02GUo!CFv4cne4(6^L=Z-$g?;SO72*q1)Ly^ z(+D;ro*Rd}Z+#zue%aa|@}Brg-Pp(+7%O+^ICjthNa&sK)jN&MIOF&rwY3pb=Z3Gu zC8un4t@^SyWp095SUu{^CL*Yq@mOQ%$!F+&%e!O{o^Ybk=S^A)AfCis^})>745w`WB)3* zF8G5KM55G0c7?nh$qRWaKb8*!NKu?l%Z#HT^T7UIdwT>;|4-vdhhCYB~<)?6G(nw4fiErP1j&6Ejdn!; zWB5rmEzWG|N%0F~W0DfyIR3qQCeG|TF4_9A$D#D%CV0$pD**QYGR=$%_WU=MVtw2g z9EJcqc#&7{MM2URe=)~$3y3#$t7T|U_`wu?k)rHFPe@q`TEBBZ|AXq;)J$nKOtKsy z9s}bE$s?_G>i)jbP1SQv&1S~VA5}?H^U6*u5Zf|t$7wc#J$@F;Nl-u9XvZIsr9yv) zyhDztX3fmRyg378r>WoS%Sdw8rSx5A2M4S9V+lwq45U=ft(GFKO6E+JgEH5nM7v~NfUGHQ7kB=p!=uVH$wn?KAQw)3!NZb zhmlQd-1~4>=QlS1QZDb*-;By_TH>LPHQ!E=ykb`ak_DtKTfZY(JHsnTng)<=nClmx zNU0v*Q4$4edQJWyM82J-PB%BZ)O?Kk%ZIa^spJ-HXYXsR?3Mgk^}fM=G18UE_=O}H_II$DG?`;!A!d8YNtNBO`614OdI zxvys$RsimVXe`-&;Rt6 z5uHk?n*=xJ>wWjH)u^`S0Kc6;aKB4=?z57~qysg=>smYpsvMuURW6y`an|!_3=C%u1=`pri zrn)7VUL${*8kk@v)c6nEQ#^>DBmP)^x{f*j0R| zI-Fo8cFaX`={`aA`&`4u2>-|LlkOl8hlpUBuzaHG+75jw^_Uvm&TMO#cdEPEnO*9C zyw`z?G_~_Y^`CZTVx#{YtsGP_j5DiHc=xK4?aa8mYjqhN2%#6BMTb1a%V_eXlr94p zGK}(lG&^m|sg+((YE1H_B<7xGJPUilWJ#M?f%K?eT!!wK>FM~Hk4Nq&+(FgsSElZf z?an@XC2z))+)gK#*>4P%-)w^z_INuWK=`RhrcSVQ?jGky%WDO*ySCKqL;^3>tImQ1 z-6;AcW`f$+p256}C9{Ls#`xx#>es={G)fPuM>?4C##0=ubub&pT)0A5rN$R(M+dXD zas5Gcssp_^Ilru?0xmZ0%2nj#~mAFwH|ZmS(Kd_`ito0Rh0QhAL!rzR&k#-x-c zxo12pG8f{`o70%{sD*)~vpD%m9$vmR#LM?2=vskpQZaTMjnQ6$n{ODOZ&hH4to5Z@ z4Epp9#E`cGeF;H})*=235pzM^YxK4|n_gDSI+>Rl4}YN!b;1;W(=L^qgblaPE;TU8 z9MY#^r=DPUP;b<2x)}>0+^(i86^B~wC1VG+X`cLG@S`jm2YB z)6V7fgm| zj~aVh7c)NkQ8mAd*|Enqy&HBPNv>qaCm4X0vV>MN6|wN-wg}$-8gI|->U+u?H|4ms>}2fUsb21C zcIfstJtXB5g~o&bA7yU>S9O(#jsLj6dlgXx7ZmsFmS`@hsVFWN1-+;!xngCaxlnGT zplI4fk(90!Q|ckLM5~FGDcS_H1xpjtinbZ5sc0Lo>C8~g6w@OA=X=g`QJdy{|1X~p z=lMO~v+w)4*MsC8k9*A{+g<1pTdHl{7;5ihb!w&cS<)gxH^Qicx?m7GL4@_L_!2yVK*(pr^SZM=DL zRu-;NVgbRE0S~lKuHAi1YIlPxgYk_yh1Lk~uQl{mPl&i!IOegd8OUR=OJnG|2V4&U zKI|{{?nPxl{CnR9u|y`X_s#Ov5aoyQz+RWQ5&jfJ4N=E*4M8j`@Bx=Xu99Bg+{rA2 zW3m*N1n2U`ygn9AWOad=H}R!?TcLfsO0;`FBHDRlavM#J*&Z}DQ5&QcxnOiJ-DXOONte3a4r`|fP|l^T zF}$f@-sO_}i?Vlwhq>f9)=wDer6tO5km0AG{NKxVcN1^Hb)f|vhhpM{MKdfM2aaKS zVO|W$!UN*i#*#xg7|Eu~KwudrHL{_BR30mneG~-IDVP*mFyefFdiaG7*Iw)Z6Xv-kpK-h~WF z+-fysm_5z${u#A(m_2yNw{S@kt}igJeq;6=-Sz99bNFd!ZR(Y%^8jOWExh%N`g)i> zs8f-)hi5X|ONENOWa}?)s6oRq&u=|jO&xAu zRI(e_%-_PAIi5*+4aRV!M4F_6VK<`eqtlbLZHRjGHAxa2y{pG6It~Y*{^9!Q)lxms zp~p=v7|;jbfM`IX|L4L~JU^hv>TyHgJ*WDPuvaEu=O|jQ$C5x1OkOJ7GFMoY>I~);6S$?i(c>u@a80Gt^(>>|yr4 zZnkPW(jL+B)?<3jd?x%Kj+1}$Mq-@b4Kl0+n^!q;*6Q(N>h6(P);MxK#_t|X&xTf> z4?nUI+0hU+tWteA68(GKY1MUNUvVR$F)Sjq`?Zj?Pdu6Hlnk}>t2@K_f= z><3BX$H!hiLhhrrUUnV2Z`7%XS1?9_2iL!>=Eh?{^2iIy7moqToa#LO#ZK4)Ljm?#B2l#8QgQ4iXUT- zbKFyVENcEpFc7mhdt7`OEdyM1bW9qiC_L`n^-I8SswO@5I zmP|u^%<6zOOuZmh6?n2hMUJyOw~jn!k}Q)$f9q8>b{q~+IH#)X#@Rj8`@cFOeRZ&$& zqPPVAXBcaz#v;oT3g?DM6C10a?8t;T!=sDfjg=C`h#iuuL!FgLh0~SGW4nD{zii~= zApbF`7-sQ9dP9OF*NWJN+rzrU-dqMt9-RFu6Hj#Am7)=c@&67zxNe9lreoj18LcM) zjt!iU>z&efNn|i1m61fmHjF_nT>X*Xa==^QGU+Ldin(9P#0xL!Fl~DRCK5+(&W+f1 z2wyU2*j%T7*$ey6!(mbe4zQ=IU_`msfzu+PNKPBABQFnN6}Rx1l+~16NhyRL`_734 zn{zP@s*~2h7c~u@VSgK$nV?I$A0v3wyKAsZKQgP|D>!6?J8*AFhtowmt>}ny=U{Kc z8%wb~(D1f5?{#@(Z}i~oPjP8ytVs{p#ZeONV5L__w?L=}^0_jRm3rm*Zi(y{Ydbyp&e#jJc*ok+CD zj9B%o}Bi`;g=m?Z|;dI(JkHWY8v7en-F54u&9gm>Ww*4Z(tc}ZdY{_4;tl61nQ zD|dgpt;$Wp;>>_bwHsQF>Z9t_BzvK6J_3m4uNinQ<}(xyY^H|KfJkqcpq#h^u_&`J z&V>ttsJ7G5A{2(t2Q)tg>f!Px=aOBu!TjPqO>8bV7988j)Lz@Ddnxp!P~wC{~TLYbbwZfw+g zQ46qsDzE57Eu!4r5H%M?7!jCa4yK_K#a2H=31uPDHMqrLh^{@XO?AW*B9V#aWrB6j zNzkw~yBkr&oC*fvToLSckf}r|q*$Pof~m_93g*`dYCtk($je?-*C(S}`1!EH?agkE zKOa*i$ynIx@w}=O{hiONeIcvDK?ao4M8B0(fEwBkvY{XQLlX)j zym^}|EjewRgdr0O!@joC+Rugo@!l*mAMmKPld)HH)ls#7vK`awInk{j(-Ui{5&3sX zQ-#JT7MnV-AFb{8C|7~WcCW}4+9ZloJhVQ;0HX60J9@zTkaDn#R}HY(Se+mzaRC{pSH*lXv2Q{faZ%G*nnJaCw3QIvc zPI^oYO+gv_>}hp<3bHcdnDV6{3nx6MaGqi2*u&3ALLe;7b2rym*@>?#luK{;IUWoR zp{0kCABmZv7{=$zO%}bysn^xM7_DNbA^RVGMx{(cd5&!^d*8{T_C zMiH{*mEAK*%DwJ`T-G);V|cd7E7k5^)Ek_Uz(Z zlS04wIp%4#dAdC=a`97=3mYOZ@_~zoz3R+#J7!$}E2N*opL2JiJxDkb3fCnc(@~j` zV|c>g+F$W(^%ce=k`?aR#6{*meYw*klGSagcIT@;)RjNz;qqiSeIAZtQ>FG~Qf&r4 z@i65h>ZMe>kNrlJtA-|mMmwE@ zq6tr_r>?bojrr4`j66743P*&ct2KMc4H6~%I+=_u*FK7nVmG%i*9jwN2^=F;=pJ z&M=lZ^2J_dh*uW&W2(-hDR@&F20S{@^C2mxX#N=KykQF0u6hl?DRWGq{v$0;y8kNecc{M&eWiuVt*U$jP%Sgn0iW&+(HUb zKd--;Zld)0*1!`Ox@hCwXdEkuVm82Ba!Y@39=R=JJ6y1AVkU@sV)n105a;2Hy8N&Y z|H1{a%8-U2|vs9HJ~=|1d9RWR3HH#6msOx!BbegwwLXJLAi z6uWkMp|e-vOr(GK2Ti2y|4chkBZK@|`j#h7_n_E&#+%DpvIgZ^jj_)Q2)VX}~Js#%I;~kIid1$}RuZ3>R!|Ky{wtM0ouyGzQ|Ajv+ALH<` zNj~tSAmJ0_181MY$IC}Ad>oXIPI*5M%W|Q#oo}U!pv&%PtHkTk)<`ti89WaG_B@@2WVe+jjHYBa&&?#j5A7vu8OHA5me~+p}6+ z%tFpzU5iAY^_aTldV6&1MBBz@K|$D?|}L$-A-sXSKPu|RhQfA`GAUFh+;IRMB#o& zzmSL3iwo`HzK`xl(%o>G`&&dXJiHU5vKHBiy{~}=CdK!?b{@}OG%bcJD70@h zMEy%in+gwPLZxnvw%gzH7pJOUWDo6i>Swe-d6kQ~xbuc~T1GNishF%t2lUDwHT@<# zdQkXotP-J%Mv4@=DpyMrWKNCFLeWFMuY^k+!}UPy%&F0*Z?Y#jW<8*Ox(Vwec?VVe zVtd$)qoIv@5srE@y1+IYNqXCiP3)$t;9%bIRB4sXPxs(r(28E~U;8BvbPHrc=FSUu8bW*diUvCQre)dzmc6+<0AvrGGaPc>>8JWhW=-M9=T zJ8`$#yA1Bl?5U0}v%B_d{-ca?{)5A873qjBUgIjl7-Ukkq5i1zKi~`>21#p+l$~K; z)9+7192UxsYd3K-aS3tdTaM@TM>@XxrRk0K`v zBiG}Bcf9|bT!6P63f8)V+l=!<_NgVe*yCEI`GYN?-jJNt?(&`ba0OPWBX+AFSJ?e} zE;}eGCakK(gPjtS`su~XmAk(AopN&R6p`nHR^Rpn~CUGF(}$|?mG z1G^zrlF@$YH9^EC1>e};aW+I{E24MAR9r%={GTO!YS5G9)SQ-&d zS3@vHB!x!OzR}1g2=E-S%VXuj*=~*U#gI!kYJOdyT}M@)iKgYiF4gT;yYsNmck5XD zJqVXeOkyA$vEyEp7M*-D?!^LW)Lt0VE+TkH>C9Vk=KEL?qk+d0W#geRYBfw<7LO7b z&{~&8WG7{Djp5r!iKkJLAr2$NJnPq?gE(^oZZDy_$j+fG6-3WgVQcJGj)V8AE^F*) z$B%cb5o_#t$79=7)*8EeSG66M3RAGXRVZKbcC-vJ^`v|GcJ=HU`w!uvcWZ%+*T23) zUAxv^JV9X{L_&)pUe+C=n^M^rtlOXm0jfVUKzf=UWQq$ z1ia|eDR2>~k&TJM&*xh%9obdRshq?)m2TNTR^XrnhNP1&W`!+9?Gr-a4@)Ai%I2e zamoHKWwm*}dLYYgf6KnRnV8#pd1MM&I4t2RNMxO=Bu|o3hO)`}SdhG5=H@l~@JatL z4+gnr=#~=28}++oFI*W5g@3rBj3!r-9C3`5t@5K=Rkv)ronv`hH6k15e}A~E(O)xo^(3xi)<(4So3LuDB{TYp6_PT|dD;UQN{tnBSpE5|3ix(LMAicz|qA z8`WYR7MMHSrADqpgWon^-MG$f-|6RV5>dGu^@1}J){(PbT|K_ori#{~6Y6lMdU~CG z*wJj8x_Q0*jU#)9nw?{N9FO}HZp`+WdN&H4wlEDJXyp@8nvh{<0;_h&aqLqG4JVTQ zf0ZAn@Fe8@>WJ8B>jl5J0@I+6<~|WMD^8N)fk^9K-;-U`#Z8VTDrSS-($Uec;x^d* z=Z*HsEZCLbL+7kc%D}%)>OzSY7Fm511*vdKNZ{>5sAzgc*Z*cejWbAOL`{XGdOpGK>2Rc3`hQd3+arVB|NPKUEKfIY1>0_-g zZ&N!rV#C2-piXYYVe4zUtG{iuV?2k%D6WZrfmJQ+iOYti%um+l>#(DgM{Ii)DX*8b zXQR`oYKU64)inJ`p#6Dj+HLmeId{MniRW|}MY`jWrkyZ^G?X@Si~bD%=yMDP|B_gk znVM*Sug_=HXul=)5!>+E83Hh?7n(?1Ldl82Y1eJ4_BJd6WN%f!3Px{L9XHvXJN<;j z6u&TElM;p~KLbk`Wfp8v*KV>CeLb~-9ItF01itV~d!thjc{=;;l)~u_seqU+tlz8C z(3$XhQ#cU*Vr^sk-Ks;Jg68mm344jw)3eLjM(-qtYc~qzlz5{y)kdfHAY)A5JGrfe z>a*FNFzgu&1B3ndENp7Z)xz*&Fvy=A!^vN_70B8tA;zkmq}`WW)PcwxXmbaiM??8L-rZ;FSlUf@25>@ahvPb0YB4oyWD5RVx%^K8(JsuqdGcN zsMJzUdo@?L-)=8UMibw^8|xZI85hdH)H?ZjBikCUMkGlS{HSL;A#ju$VU%+REaYk@ZpmW zOt!-($_L()4-dx&TB@aIrCo9@gALtwN~~hBEspBe5Y=4=3N2E?kysQ1m@B_lhT15d z(~t&I8+EgdSgvbkb&{qq4N*c*6ws58I|T<=R~aHisp2Mc3mgX>l1nIarE3 zZHpDXQ(oK$lSW<&P2nTB2C;K+NR02z4Pp}I?tT5iLC4!zmIw~daU@6&Ib>Y!fp0hE zF@g2zk;|Tdeg>Yx!z-VFe)xH*)^NYSxR1q3{RA|xx?xP&e>~QJ`j{1# z5buqP$d^Y^sp;4$`h@Um8nw`cWK`=j`a zo1o!Iof==0wJG6bNK-g@4#O;~0?+oyqFHqI=1Z|_BC*R}jD$!J#_BpmD|?ELQub6t zXU(`^RMv%_bTo%c=O;8qM?_ff!p~wJnF{C64M%ry($PdDT@&)UTV)~Vqfa`T32%AQ zp}xt(9uIzrD|DOvNyv8fw{7+ypA1NK(VC4jV^`cnS?Ob0Nvgw-SKQk+rkl|P9R!R886n>l!-#>or(^2hos^^E|P^5Qc zcCG&P9W=bvs6l#ku4l(X;ISSw!hZ}JF<@M)2aGo^ke^s%CEs!(9VHv}{JG7{yKQFs zR(@{c9b{SK8IWK;`Od&SbVfMX;x>22;~g_^s4(8W$} z%Mjd(X*p&XvOTNm7#Q|s5*1&g#5bgicYd2sE#OYcr%*~nG#PuTaO zM)0N!`r-7|fgpLF7S_B>fXseuQ4iSrqL!DWW(Z1kG5>{~iFpi3Qb- z;`>kOD^4ag^@ykV`MvLb5x%5|hNvn;5((Er3IS%@DQB_J3>YV!|yVL}+N8aXuGrM!%<_pg3cCvC) zm{b`bn$<@hQK)q0{p?!v?GWUFS-lfibovYC9nYNq8d{_;&=+B19`5=pYEr+bL8wa7 z*NvAnlHXcOl#&>gj^HCP-IAEn>t)`mCg4=U$HC24R){rpT`%JUTd6CxD=##2qJZR?lQO%YV_Yz*EU@Et!-cpb?co+~B|#tI zYI+2v#(J|aLi`2}djw8NcF1B5jzT{Ds#FpA&a1@S*p(pM@7jxB<3+N$n!~&p_24@K zS|?p!S2`>S!%5d?_>#Dtbe-duep}PKyb>;ke-4@Vq%%akz9jdDKe|C2p6YZ5g)(g1 z9~8o3G+N=n_ZQXCJM8|x{N*|Zp$I~(ze-2p3pgCO6|PFSVi2xV5=KNJhEbTO!|ZxS zpup7=#!tGMK{cVa@nu3C&aYrVB-Ad*u+@Ym;kGz_5lD$)i!k%Q&Czxl@N zwuV1H%K)D--}s%I)@ zZnM5uKNVn|Yf=X6_kc#j$#cUnHo!{C({MZ4zuujE^}o*T!8c|A_9=hjX%kGTupko5 zwYW?@+nJE}g*z(|eK*#Eg zr(4Kpi>%Ougoa~@c*>#*O7;jbgZk707P7l0;nl3(=iB3!Ji?w(Fv*Mc(bFxS4oR_( zCp1(yob3*At5Q$(o7!=>8Nf%Z>m?ymZ^_++9TS> z&%~-m-dhbR{?C*B0pxG8e_KQJN)=OxB`|BHnqFwP_my^c!VN5DnWvC&Mr5hDCL{Ii zIhd${<<-y49)Nddn#!Xscy1&c>Hi=qG2-10rCZy^dH+lHx+de7`U=PRXTbmMc)ELK z6Eu`3FwVSiZW%HRi@(rasdeM14Y#l=kETs6k*xece}9Q@X+^`)Rwi%XiLf`pudb(T ze@HiS@_^sH>)$JMj@%gf^TNrg?mP)@1r^=UNJQ8dgzqm=7M%~fqTLc*W z!SZNW!1%8)YN)s(10lH54c~!Ldg0?e#2G;d#e*4eOYTqKbCWuAm!0KkajhDEw>_y> zSMN>N;?UbWTSlcOVQVB}XyuXSNS&o4Cr3x@s(fvz{C1c6)7^HL$b*><%aPTOP4PpE z)JJ#Q;~kYNRM#SVw=eJ_Y~kr*1VLAU?XHuMV0F_UiX9j{ZsS_N8ck7E-sj`+mh`it z7hjD_EJI)Qz9)w%&Ds1fQSDL5&OrNo3z=(Tgc1H{u)x7^z3^`1(o1$5M7V?WCWYY+ zK;X^hR(DCac1G4zWG^&_zJEffm~Z*IYx0X~<{#{dj`tR+eSffzcm6tEw5w#Fq9Z<0 z{$O5jOWm8UZo9|sG-g^RnlT);IlMrZm2NWomc?t4W2m?g_9bN{*E{KEOtj4g=h1Za z-aTmU5?89Qd+~Pu2-W*udu+#fs18&8&&ym$kH&CdQ#Y^4%hcw3u?o{}nX0(g9x-x0 z_JFXKRF6Yf_>v)(7smkci9#KTCr?}C{fr?Af;@V-M53@3<8T?3WUH86_ALV^qlJ+s z(!*yS8c(a>aK;16d!WBlz+rz}?p z2FzFUcH8cj@8MFR|FmS^&@Lk?)b`!>w~phh)W$vbgf0z-W#W!2MgNeGNPPTTKCl}x z=KaI!qdhp+HuYxZP6I!^;W$cZhWewj$F`|ojHzKm_4$@K zJ}U>DqRuWZ|54eUL%RM)j?Q7^RB$ck8R6GULGj~sC~iMuQ)QVNe4l+!^JJKji;=Fn z_xXTbg3G*7cEh%rE1|`JH~N#iSmp5{(0)@y;!c?wM2co z7xS^KCF-J>o3TW>_rYAu5;b`rTvKV{+9!+E?tQRTzE~aI2UEKjt53w#^2Ms@e#pD0 zsR8@##gX?uFH1+SacBCIx$5A4dvM1Ykm4lBS&yss_P;Z`+z;!@$N#k=>dCd--}NoH40l)A%kYl(t{?v?+HOJ zBLBrDy+N~7p93iN2X0cU58!;)v+3%!1NQjvZqMkj$zt=0S*mr3z1;E0QspbLZ*ojt zs=g|*|K_-Ei8^!8MxDP|jXi|Kc`rjPKZLEZk_`30A$yC%wODn3&|c`Cyx3voS7l+* zu^X1Wvis|wzjz#8eXK*t@2xe?na8MLb}<Gu4@BR9h^#tw9lAB_1bmz|IoK0S(}pXvh9Dy! zgZ2v^L@7bHh4`(uH*nU~``#PLL#wB3-=)(-juu62fx+_?_{hNrRyU4_rM%j4S66x8 zdpmjPPgAzP2*c8m4D#(ntvS*e`e^+(;Tv(@00>yp2_VevWP$kPG5qeSjQjMV^ny8P zsL_#{u{Rod&rA%o-MUNq6@ASSmvQbKzTw=c8{pj2m`kEw!oe0nXU4-B@3nOEyV39sDdZ~~4VYca`R!vcLf3yd+nJ<3(&%yW<6N;%fsUeTp z^BpO()gKOf~09uevKhY#Y2ys;2&%b83J?WazC|(IM-fe21_wz5=I2MJW{7F~uN7N^e z*=rsBXR8^HqsiSjOFjEIhB8wpmVflPy)`7nQ$GJs_Ph|s>({D^C-E}O-_lgzNrdsA zbJd`y(9Ud5Q`bI)&G=7KRmoHKocLCUB#cwh{Jl6+n#Sx}FK(=Q#t9=$q12NWl9Ks)c1Z<8f-b$}dCn zeAO&fT87Ghbb|W049!r3NA-Ey-ruF~Jj5Tr-sy^#k4Stpl@H99T|cC$+NbUIj_?xo zpQq7&6wgpsJ!5a{G9HbnSm`oYK47JbTRvc=OGKJF`HVe2 za_Xg?=fDGq&U>e^=TwNwjH;;%;%k1_T@R?DXYJ0uVx&cuE6_|wWr`c~&%2D|M}1sy zN(?01jO1%0iG^gNk-TRlagbyh$uT4GK(f?Go-z_IBsUnz{YH`j$t{bG2sa@SxG9+s zr5nixBguhej*%?W5`QiV5`@V{IKv2c7~yCm9AktssD{ZwGu7SC*}W!jKn5eG4&yKe z{o$*Pr0%Tt91lN-FENr&jU)|{eMWM|NYWws!;JD@pR;#`IF9yJ_Z~(^mN`YeblC3Q zF=vVsLynwwW4?mNYa_hHcsM%2zwKn?VD-yk4E97$vm@Q*kH_C0^ zZguaA*y~%kTYd1No!IXCUC_gt&qzmBJO7qa8$G7$z+^S(CA(|8r+!Co`DAs|OZHzJ z{f4X2FWV;^`-Um|6`XQArv6chcVzshrWQuo-G6C_IQ(w%(GdPkjd<##rO6SiUQ5oa zkBHcwhnPlmvy$zqN&cN%Yrl2j?ZP(_8a|&|Fz?&Mf_eYJwWfK$ChnNmfS+-i_Z`Sj zBDwh5Qu7yF^?>I0kpHYr!aZ=`zaaQUto{26M}7>t_JeT=2I^lcS{kvU5+QQ0Z-JX@ zA>WV3FHVQly_PrTy-5zsj@bGMTA!)$uD8I}wZq4o_*ftQgRAX54huiM{SP$z$G_Yh zT^Tafe=0fe^KQv`=X~zut4}3g{Z5K~EO|@4G+*nMz~(O4jM)AbqJ3oyPWb)tT~$%J4QocQ%D zB5+nBa8^g)ti<3fV{n!+IJ?Ef;Ov(Fdkij*K;mT)*nBn^0r@f!kS`Mf`H~1sI(~5T zSseob#6aNk7(_f-Zz2(l0dnWtBxEr1)l;PNwIljVwdw>~xhXogf+m-ujNm^ZQWUo+ zv7&fHNfjksluTq$F7gQ(WT0MP?W@S32xL&5$secWPex<(bkS>;YoN$L$@hb#KsGBg zw9-Jefm#hAbtt#`6rNtlQ`MDd&nI?Kp~rB{tLVG(tB%?IL%J7C(53lH^kY&c-6)go zArTL9Qwf0rJ-ckKs`O4Sqfgz56eW&g}Za?X$yHll{uwQjVe_!6}b-Zou_+-1f zp~}9^apDE_VU_)+^Ol#8Q2N==6Q}H#!mo?HY*|sg^N!uNmp`&#cDlD9C8JCrfzs>@e@ZF_YVBjy$v5m#ZKqHR{rK!Se+u@XPYqI0r|r=lI}McaMoJEL9`RM= zEi9}=g5v7=K(+j|-SLL?pn;bk#6TD~sr384k@`B-S-(sH4h|4IdB;6iKlWf4DQ|&% zqfZ09;|~qomh%h7&w0mVe^+;Yj`|!v_>zyq2QPi_;&yD7@!?kO!_}AjFjKt1#s|De z@_PMgkyt>&wVLL5($j2|_wI`^sUG#|;jv!A_%=qzFiqyQ(Xap=*unB#y=dgM>YcL< zd56yUgJcx(sH1(9|BT&fag)CwSoh-~ghV{^Qm|gXQzD+*Um}jHD@ZJHxG5g^)S|qH z-Dp27?@dV=-h%uXd}FW@_L&^V$QPX#u8q{eL4q%iQDJYQD79O!V&237lkPDpMfiK` z)bcm+zV?NW5Q3uz|0@Jv6-WpkxEdiq&~h#X?X=d&HyZg8v`czVX}z0iNk7nKl6jBT zNEHpF!3|#NcEdMpbyzsvx38xPear6ZJN+?2(vcy#EQ=;+yTA4`A<4MpTR*Mw6*VsN zt(Dd|EgI-8Pw$f%oa?wid}S6^CR`Q#?w{<(uXuT|`W@{}FPIRj3*GxWB<6R)wmzxt z+6lwn_?qnZr~30N7~KweFO}ibVktVPtz0i2B6`av$ztVp*FX14w;aA{i%!WN>H=cv z9{w3(*`>s!xBfYHlR^`<6IMUf?`^Do+F!ub7YATU7FMEqNN&CqjhsD?85g!(nrn#< zmkk=S|ACt2W$~DaqKOidl0p7ucg+hWuoP7rk;{FbsmNGxs*-n6Fa>oXfAIdc-!;z( z%}WWrXS>88RlA+n`)n~vGAf)`Ht%$ObfdCtJB8)D!tgJ@M!@??z)@;qE;%93WaCZx zzN$;L-C^Wi-{@mpFHAs;5ZW|cFzwxV-f3E+@cUlamHk+|n+_X+R~}HSt8w^d*IIQ~ zHQM%dYfaU6>ww5&AC5PE<1HwxlIUVVEwW&Dv3wS!c+rUYlhVhyu*nvY|E+jYn2#wt z^zuu!>6ZksrWffnk5fg}`^8Y97z(VwXo%l%489~`1ynuRX=3DsyiE zt*^Imx8xk|E<)pEQY>;DQzv`?@s?OD3UHh$z*25vOu4Cq9?Ojm60#b-9wNkY^RX#6 z)ncq5-&dlIza(&Z!8u+ap(_+qfjFHw`WpoY-Xz6H;z+s4(B&qEDHGF}GBLW`WWXrO znUouRqTI~rtjmqaOu5PS-QH*>;WvfmI|M-|+kKaXB?Ki8sh4kpk0g*}U|=$JU}71V z*v7!b>cC_+dNdoKC@Qaaf>XYRsK>kLl*mO?8%t73T)@4`lojy_Wn~ev>}dofkgM}H z7yu7k)rIy_E&3lNR%(${pF;5{@EAOYi`%DMikpt>Q{qKeDa6oq+<7Sz!XU###oZ;4 zSCkM5AAUUw8fx{scDq$Ex3Y*H2w85l#TkdtF*c(VDhL@V+)Da@dJ!DAa~ElV&th#>gjjze&gO%s_GpaUCq{M z797W1Rw&C5NEXU%@~I0YlFrLQ`K~FH`b23#eu*~yUuE*gJ7BZ0Pz(i@OGz@{m&zm? zv-JOCp-jJ24)BRWncv~Jh4O!w$=+z@bUvNAEG*YZLGl*n$NCU5REjGKrKutRt5E)? zhQtK^6AibJ`W>}PEHWsK^Ol>^D3M2LT!7N?4T2Cj(oxbO-z1#xQX4A8(bR|kRUAM* z8ruQWD5XM%iXn{>K9T<$+W-I0{|@=g|H{k45`zLH`Ok32!UNML;aA6!(*BQ)Qre}! z;8Xgqb~^vxjn+wk;vp?3@;~KflmFre^Z!!>A@C=icR{Z`aIUd6NOiTK7yaf;_^#T()s_HxIazGBQ%E~;>drU_M;%f8F(}#zsY~mZHT%X8Yh!v2(Pl= zwIeSt1W0!o+5{wn&CsS&J_}MZ3v~bK&zCNXZNg8cG^C^1LPu3A2K_GyTwW%sw?bT4 zD24)wIxX}!oJ8D`($O{e^msysP)d>MlBpVH2RQ%7yrmRR3 zaHNw9&A@b>x4{6UBKUexd}*ZfKSsn?j&yt*;5mxO95~5z)^WXEy!bnkNt%~;E@=in zgbcqO6D@(fVx%MCYls>MjsNRd80jnxO@*Z&Rn$d9mzIK*G;}LX?FcdCz1=252p=u#@BS+_BUp{)FbUkHXnBK}Pq zV@xLernu}ucytnuxh!B0OBSQJn2=pIg+V8zy9XV#|B+*+|7Z-EwBx!rT8NNgG%~R@ zcyL&@yF}}zqy>&HGUZ0RWD_$LAqsTT86FIYFCB4{hWP)b9cBYuD1HS-OZwmp$felo z*e8fzWvxsB+I2}YuphF9D2FtRC_p}a3*5}6B&4|Z86_pigKyo&cz|eQJZNJsEeFJ+ z0Acoz3nX5Dc8RRwi^#nzgNPEeei+F)Q<^SKhN*w*Gs#S=2xc z(raL!gsacqv%AME(oT1V(?w{vgSxY58p)T7SE}DtsU7Ww$QUYYvW?#9{cg!1wLt*X(~p*0NG! zyair2G7E7}3k_@+VL@68G+Z`2kn=x*)laC8 zKfvv-?~bTnKCrt^d-urYX7rk)oVaWZicaSicKVhQmD;u+!>#GefMtgr~1u;hu{#!dJ_@RXfc`Y&M(VZ?MFD6zHtBC#Ov1Bpi8m6b5l0dG6FU;ah(GCD zD=1UM_lZ@+!^A_xA|F3C5;KT%h#q1r(M@bkbQ1r?n0-Zji@1?VUrGKP@gd@rd-$=H zxPq8QoJ<@`9760xtY;Y*+qH?B`B!_GuQph}h%XW!B1(aizn2Z<{+0E3ANkAVPyD8S z%di4}xmtztP;--Y_Yk)l^jRw?xPds87)$I*Y(cCKGY)-2e2Z8~JWM=9yo;DiTtQ6J zhytBR!Ej<%Vi@t4X7rF)LwuR|BylhCPU7vvOyVM9Dsi-+RH!mGAnm9TMyz6t{}yTj z@ILWX;&a455{rp{rM(NppNLK9Pg`OoP*>=BmO5t><56p3SK=XB*hAb#Tti$;98UA& zi8F{d5?2s65$|fk2IT_Qxnj3#D2t4#Hqwt#Kpuc;x^)*rfg9D zNWlwCs(L16Dr1&N97ycXEUKWrH;6UFZ-_q-ThP6(#8~23A3vrN(}=5xn}|D!Js5ys zwVKFY?*`)V-}Hj5JDZdmNSsIv+V_1*!5hTKh(~lDB2l|9f|#k9^x!w7I7D`gjh+eCDsvJv^Va$iPsPliE}if{I8-Qmsmo4 zg7^aQ46&A2Pi!4+JnByzOPor)fw+!XL@W`M`u7Y4mBd=&55&k0j0tfRaR#xtt!301o0;txOD$6Q3aNCvGEV5T_Ey`uNd<*o62)q;as8_y+MYVi9o@F`YP#xQa0i zR?~~@o+GK>i#R%HAo6irPYxULg5j~h!JzrFFKmzce4VSaGxihn)z(?`SIT_VBVn$3 z6co=mD7iNX6{X}xk)_MmLMXM1pwumaVy(b`39eUJWw@ec#o`W&R*Lkgp%oUKv_N<=A} z55lh-t-M5CxBGSw*6hh*BqtyAFy+lrlU)V-*}LqP>b`Adarp+3TyPekVn(YYX06mJJ7bVVr^ zr9_lcQL03#7Nt&N-IQ?F>c#ebE-d$6uvZt%<5SU>EhXmNoGp zU#$`%!lZd+cc(_Hhe1z|@;lGjb8KH(ZzBjAs3VWP%E)txwZzyyS2~nQUPi1V#>UV- zv6dLymvV!hEDu9eOpP*Pec$qpf44t%b}a2@Y*Y}dh&BDxn(ypszOn&E|2bj>@kL@K z@i?)Hc!u~sv6dJh))Sorjr)Gd`P2ZCPpLXgTy>I(e}A zXOO$7pF?hjFld~}n^J!Vc_?`ic{9U(Rxt%(G*Cj`oV=901$h}cR*>~y1v%EG^w~8s~PXi_71ISCs2a%VN4=1l6A3t0o_7;*T;w!8oID)slP21LO(hb>tJs>&X+ztprmBCX$DePa=;bPuA%V zVKfDkX~0cBg*=9Q8hI@Fbn-azRB{jb9C9!DT=Gb-*@jz?x;CP@7c^u8RCHIm?k*ATjBhL^n`5#R| z4h_gaO#XI|%OFhtipga>CV!>m!J%0Nc^B$ek#{ApA(vm#l)nJD?#0{`)YAZ7A<%!J z6HF5KAde>RNghMqi#(1TH(T|em;5U7H1a;=855j7-HY|5AcqF}k?$bCn!K32KY1zn z0P;%mLFCosL&$5%uOY9S;4?8CMuC-R_;B(_@)6{2a(Q!7{$j~Tl6%NUk*AW!lc$r9 zCC~IxFph#;au0bCc>;L}`2_MZ@aD@=4^rdJ2*$2u(66Fqu4>9GBUO~Q`yo!7Uc@6m% z@&I{=9+9B_)l=Z)5G6R?Z%Q6I(WFQ-@@Vof@)+_Kg-iX;c@_Cs@*469q z|3ms43vL={MjjiqK<*(Ai8ba^gXYQ8gXYOIgXXU>=5vGQ$%}+b`3s|Fs~7~g9fG=9vkGThI`1Jn+#7S z??|3LrMzQP=T$9y!NKBqW6lbW&zX`|**p`HTdAMQDHN$yN&OlMs>x+NRsL$ppElI0 zBQG%=iF%#!;BFd-B!8RSP5uFSEV-=O%Abe)QA4d%@+0KwfI z^&e!XX4O+5n*#C|dV@*wCk(Zs$xo5Tkl#ZdNB#o2m;3~I8u@eN8RUP~=?`HJ1=TdL zgM12kF?l6F?j{~r{q=SAClK- zj`V+>f=t%S;L=Kf7J}34;L1jDX{4U|D`R1?gwCGFzPo*HZ z^f8b;h7PPHFJm4zCy%54E^;sV!{lk?Pm*Vlr;z7>>q({TkICN-8hFuA%gcHASn^`( z?;sB@jReesE<3YddCA8C)!?qJb=0h-Q*HAY8rVi&Ll0xgxtDxBc^Y{(c?S7x z^57zMYvEE=a%f-=4eTJFMP5v<$m_g{}>ubqk%{oXipwT{dqy2 zU_2O2?xlV{c^dg6rFOyf0zeZj~ zUPfL+UZK+;!T<%QX`r6`BzX)2(2+cJkx79Y$kRE#|B^hK`md75lD|amCHMU?=l})x z1uf9SPUJb%-%GxOd_H*{%?~9nrv66qv;-4i4|%E4_gQyR5KRMdpj> z-$EY80CXm=q5h5J0rFMk9&H}!--UvD8dyMX(ZgZnp*NWrY$8vihi>v{>MtVqQok#C z4E58=>qTGk{~8M7Xy5_zRPx)%i|Ak<@(k+VOrAr&ntTVjOUf5P(cF+ z$*ahpA+I5Sj66U-k-Yw<@-^L^tJK?-b2v zsn4%*8k0?FQVkyF9Hin3oh{UbIOjd~5Nn9qGSWFNI%VMo_uy;XLt=*vvE1-0_L@y0YwG!H^U}&J4 zG}@Wa=YMD-pxH3G2!_|drKM`$XlI93$=arfR#^*iB5I&oFvi(|HRHcDtz>JhN?75F zQbl8&O$Pt2zBLyCTLoY6{?LCpKF;GD)IAZt-Hh;yuLF^atKsuvYbIi_5dYcY#a3sV zD2Z>Tj@oav+6cHRdOWsrdV8#MaL~Di%f1JVbN0m`?@GfEc2UoaceaM#>&H2}Ym2Ud))c&CdY}m5dTyMv zZP2xqgIz;abe6LP4F5RJIWojjPmOm*fvxs9;|E;fvXzJ=yxE$Aq+Egglwxy*z8bXH z*`-sa&Pho=nKAsgfsjmf>%L}D3Y$;jso0rx$xaL$US%!E|7vSJ)V{xU1JPKA0L-*9 zpf1*?CL%bJ%WKustRBx~f#JKy|5tLCL;Jsy^)E1|DifT& z)DsEL zyv5mD6)kZ(%Oh7gi$faazFScEAiw1N1Ux@3&NmA>pRE3niDtAU-ql&T=eV4zYPHj? zF0OWVRrf?mD5uC1Ct#Y? zA(jxUi1ozS2aNelVi_?&bRRJKxx{K>YzggY#JWQX1q!FEqE-4jXGdS_Hf^KYweQrK zqo5Fn?Q}J18rm$Zd5iFt5s|GrwCRXpdg?32r8Hs&F^9N=XzB)L6h+2-EwP>$`UfMA zA$ooMNGIkHi-@JfN@9Q*c@G^TdWq@8OkxqSlvqWqC1U-_IOHaJi0Q-~#8P4H7<-2?mqRQg28izMMn8jCMyw-xc0gaozq#@OtR}h( z49_H%5$lMlcN+Z?Vl6S&Z{#_|3Zk{s$jdGotRe=0di^W1!Dz$~J;V%R5wVO|O-v1O z>44Xfr;|roM(!qNP##JibSF2&W!Aq+Xdspb(ug_4Vqzt+niwF4(tZpvSPlR0ha`O_ z=5k6>vf%&qkfb-!#59ArgIG$eA_j<&NydB}G1@oB2)tD$0I}q0#9U$tv5Z(vtS3g! zHSWX`(}?NB9AXKvis*|@VTg#C#3EuTv5II-qesM4VkWVKSW9$IH|EobMZ`*jI8^zB ziMf?(48{<>#2jKNv6@&%bYE-ir4n<9CBzD1fN0Gy=A$*D{&^|LAr=uUh&9B}nZ{x) zF_TzEtRY6uGUnolUSbAu2eC|0>VGW-k+Y3OFEN)`LaZXz5rd_?X1B3dPmJDUcq}oE z=xt}@(Zt9TtpAxbP)w{K))Ld&8H*XjSYnJaat|?`m`f}nRuXH8k;M#PG3$RC1;xZl zVlal@ZVUjih*&|aC5F1`FfpC@zuN&WDFhEQ|G&2b<#*oheASLx7aXVo8%N>gn4->Y zsj%PZR_Xj&QHAR;!gOogMZZ zaC#z^!*kjX&i1;i;sef>QPW^S)*fVfE(x;=vjI!RA8;0`*l|whP~*IrdShCGiOO2c z+s(S-CGW4$SIZu7cJCG}8zxG!o*^?3nWgI?yv!-P`(}YGLQu_EAL#*hDN%!AOVTES zD&l6AJql7>tbSE$W{UERCLysNQHz>p-?wFs?* zb%QeV;1cIAs@*}SJ7kDTI_TV|6EyQOQ{@MpeWS$Ue@9fb)E$Q~v;OX&b5GAJTt{Yz zFS63I0$GrO3|MKcEzdjT-0i@GyVV{PfW;3x_m@Zi(HUu%$3E)JZ9OyrW;2n?sXAI& z|LrA8gG`ppf|ATEE%o?O=YaCsqt3W4eKX;q6mGLtA#o^tBV>k$kkCMeND2dTp*JF-Wk|M#nLL zm5es)Wz0A=Y_jX;;5N|}kS(<-08*p=t#5{$d}m4(8x0a03_mk*a(tII!G>N*0Dr&fh6*(HTXjMic0#m$@fH+pU7#N3CMGV)br9h6N z)Ej2R(W;CS8Ps~uC~6&V0a5FS zS((`vPe|x-;R5`xuGx45I~Nns_2`5&9WB8#5qds%jT{;3c_jIyCnwW`Yj3uk8hr4* z%wF9j*Kq`Y8E@$`Sv_8%$1f?5Rrs+Bxf_SxNf=C&uPO|Cswe74$TfP;9~WCj1`jo5 z7X?GVv$)KTEcy9r{^|Z=wJi!TS_dfJ%-Il&^j{n*hmb?rd(e;aRGRl$R6M8Fa`-yN z5M!7z!bq{4xYj2h-gghK{heh<&|hQ8^kw)n{Du20!UKB^kX{|Xix2uP+in)~Ap0Tt z_^R&&$iXJF_z|*br&;^~@+{;f$m`}z@h;>e$fuB_kmHaX{Kb6%q!i+WOom(x@gjaV z+8*Bw_7n8ixYmD|1-*1n0O?`&+NDkHoiaUvq%n?QStHoXk zd%SxrFKYAVc&so`F(?DQ@M`2SEM)J08GLk!Wwb9D&%i9vqpGLqQHE0y59WHwy_(|d zBQq$|qjq2}?UMJ;5_x5LB5#`2o9)SRQ#k34L&dBIGreX{h72p?D$W+&mggk0;}&nG z$L!8CN5;K5rh!!v;Yywy@dIPf-w6Mz;<*B_j--O`&( zOK-CbB;3fj4_+=HFP;p_LXPN*q;nHF@$8r^movkSegu1flEmiC?ewLI!lRL`dN_SEE-}J`Bgnc{*3M-A00D) zon59y@f4ki{8ddAeP_5u-?B@P*C~QJB<0Ud`A-ddVluFc0uRj=y{Zn1US+R~UZ&SX zE(i2vVHUalc1z(|vKla2l+SzMvlc#opY-W~jr*>%Xi%20SM?J1vYx_zFpr9U^mfY$ zLr?A|hAb==LojrPl=TxsP}=0s(KQ)7{SHh2!IYZpNHWuQ6c~jrL!lp41$GB7hqppm zHe}z_gZgw1`m|N_7?bM_9=O9&C>ysXxC9<;+GEkk;0JY-(GCkr{vg82#+IE#hAsFX zVM7%5B%3HU%@y4ex$&G>c2svUO4p9pj3%0m7Uqef8M&C1pih&tQncs<=%)UihKo|X z#o4_@x98DoRg^Ruk>TKIpJiaL1R|$_v;Tga0P{yIPG1GD^jS*!QKIxTzGy&}=zcV{ zKt4-98YNF4JmH&+-vebqLx@my6OqxY>|dr{rsF2+P?Q$xPyDb+i2F7Ran)C5F?x&A zOM!QQj{?4qmlQd6>O#5bLN;Mvkmsdo6?Gtju;&JY!T%vK@hZxiAnL_*h5DuA5s>>_Vn$8;x$S=w~x zf&ZSpvM?U3qSu(h?(sZtu17Bd>+v@de}}yBRdB>I%UD@EEeJq!N$;}R81FMgUcwev zN$^}kU2JrY7*I7`3@Do>24Eb^Sb2oVu{<;fgKvtOi&9#Z$GRNOQ;?|(;jcmu(%^^7 zEW@bDvX)y$s4+k#9b^&R%7%z;CWpvEGf~qgMDWVxY78u2Zn=QMytZ65_t(o+^V{y^ zapa{8kIWYR7G8#0o{3tXCURwFgA?wwjG?fL@3agYp}X33uVKxN;oZ;IsoU``j^c#^*3E?O0RGap53eNIu#Y>RuwDjA-EA~P1E`KE-u8tkA=wo#w^i9<)%e* zom#JC@4!0McVPi0;69judvQHrjiE*-zX#=-)cr2YXsVa9?oxF*>n>H-OTo{fvPu7A zx(UY%zZH&!^Ms=c8`!cNgu`^LC`$B=_d)&XeD(hx^>Z9U7x|*AB>47SmLbWJJ^yFC z9yXc8pT7xq|2>+4qL<6CA?q##lT+7%l#zZD{8Kj9{9a|Vk?}>ikE3|p)O1+4dX$Y2 zJxoJ|u^-!$wo72Uz+ejwyxY=mCWV(XjO>2*qWje*yPp$_Nzq^osItDI*TL?Iytv%m zxG9WW7G#?4w0LQH4(?lH={vxQ{aM*u?9FBgdjf+eW{Y-YE%^N1mXe|bqCyVE+rvy^ zOQ}ihPpI0vA^7v%mi|66qkToei6-$fggW1Qz}Fyzn$Mw{qbXsX-q4uw77+6nZTGNZ z>kj$O2$MKrqzX3*s3z?`ole>TAx2{UF^e3N)ubkC>5$Nj!NZSaOf*ZIkY?3@@Q7rJ1#8m<_$QQ1m^R zT4QMbd*Sa&@)tp~^u*^|y{qytec43sX+09%;vJ*zZy3t+r<=sLM^s&^QQb3jOElCf z`Yh}%`e1+12m6CQ2YbemM)!Ly{R(ttonC1Yy)QS(_UU(d@GPV4D!3nI+mDwAZ-R}w z=)Lz^2AS02E@xTVJj$(hNyk?E@wq0^?^+dYF)*jdDvH*nZ0%)xQRe4fhw6e%I%*b& zs+GPPSOtC%_$q`@b5o&B6rx%RXXFOodJy-xb5>ecfge?~IaR2eY;vxi zhrWIzrk-k^tAo2%VvktVTiq;>U+PtApOcI6W)nRYts zQDx8Qi;6A~eU7TNiQ>ZSCW=aPL_yWtqM)o*6qpW*9`V#gari$EGqw z#l`RIWSdsX)y+lWBwsDLn>g*<)}>5;<5pYxCCASj%S>X_a+5gpeel}Vd^;7Qa6FAB zkRO^)taq72DTF2n!t*I@+M!hyVAs}16djZ|Y*B0zlGB;Vk%t++hj3t9@4&X+F|9b! zFJ2fch~|4`6Q+$9q}5v{7QV+M>Q`dGW9r|rGT40$29eIl6{}35212$MR|U^ngWZ|7 ztypamTOni{u*M{gV8>N7+=70xM)WbQ5?QEbI|?K#M$XTxF+bm%oS&%zP58iE-Vb7f zR8)dy-<-a2RdKke0*2VoEee7^t+Di^(c1k!ONpF$YRQN`Q&?6a3Qhe)>e?Kf27hwF zlKbxQxnktPuoziYFGiw|jWlf*0}}n?MVwh-32wa4Qb6%Pfp7&>fH6?qXWF9jZ;4H{kR=Bc=n^} z=GRMZzsV5;7hWL-R?QLv%PtoKO*4g^^An=9rF{ITU}5zwq->M4@< z;kc(nJU6Yi43~4H%mB?W&vR=djGQwkbj+D$Z6oFMOP^$SeElmJAy>j9;b1%m$-(a(SjVU+ z^|~w6>RQEu46*emEb73Uvx8%Usw2!~T+FyW zXep7;9q55&QArkdUVX6h$``$l(o+>)$WcMPO(O)aUHsrE_;pZqTpONu$cI=i>Y(_I zjBZD>ycSQUGZ`Ka1oKQIg?>~=?$R$d4+U_yC9LtRm>h|6`lwTRT~lY7M04$%b(XUT z3m#CNWE|s_4=8_2!R1^pJLzyN1g4Wxx4n2Ef$-16pBzXu8danBN2BK(8a*(4|2y0QTyXTX+PRnb@Jd&PN6cMJ;`_yC_haIN8ZX1 z54L8A&we&bTuW^*BwO?>+bw#U!m3^j?HYPJLwxd12D(8ep;?@437++kYJ^!2Sq93C z%R3&21rvTDc6<4}(gxQ(WEo2te+B+}B^#z+hR8jdiG~jT6YjDRy|NLru%Pu6-PWmb zE*p#rO7|htRCSPBDY?nJsC>1!#PnTM@ahegl3C;@F8x@rqwI^y?uE)$Yk{BKlLyhp9VmuV9>Mn}0Eh?Utd|H@Xtastb*y}x2gS`n< zd439cjudp7X>V}J!MgJfrm^tBMoWpj^8c=qrX@JRXGCmCQ(zA;KY~(hpW~(6o za-Y&Wb)O<1`s0B=_CY-!rHB5(D<9#9(B%|H?lo*Y;qwE60cI@gy)Z61x`f;wT-~uf zxa=&mcnd<~g-}hJGv%a7-AnF)P_5mlt8+X7N>4tlULE}Q5w#)A3gH%(0?6?px8^9o zKZ4^zY7&{ncq>q@IMlD?-4QZF;bdQT`-%vQRiJ$V^w>vFTm#9Ju38X@wz`Z~N5l25U2#L9BD=qQ4! z0C^8DTdZHQ#i9tSTI7Oci@2!bh zqKM_XJQcIX6oVgxrvw~$AbQlA$cke&QoGKlHe341U90SF!?3jAzO(?#cEM5HdE&Ji zwIX_moU!CUPGnijh{)$2R6NuJ7Yij zFUHezeN(CGVd+*&fy|%mv3RGKb5QQew{OKwC3PHX_Ct4@MMr^4T#Py$(Om+@m_+pMdgJS@Mx(zR$3SG7DJ%*}J>( z3oP{zLUoQ(bdHjghNo^_bV{x$!E@k}s+ppsY=$VoMo{j7FqUKkQ|FKmJXT`~T!kg@ zUj1+y-$jgX&(f8aaPxyX9ut!j$4Yc%xkhp_k2sIr2s{ zOW4MA+=za)%Pbtb(YknRO-SMBB22$edj_;MgU9A8wv1@a&w?)~3pJVnn$cS(JMekSabApXqE;B)ns0aWK7)MKL3liRi@%;K88X7M;8 zq3aFkUm193kq&>{EXG3+sSIPvLI20Z)|uaK&3HBe(SF%aVajv zC(ACKO#%LA1^)PwS*&>3kb{m^kd09AH@xkFSn*xS{szmLRKXdIma#Gyw6gTf&%(=I zdY*=tzSHcjWEaVBuZpb#sLy)zQyCEz8j?zHxfGmd0hs=ds@pqg%I2Fod$Soh? z&o&@)Ay+~!gSa8*Lnc7ZfY9{;@P&`fq7ZTk_4&)-p>5yTNH$OFtze4^5c?_}*vKDd&xZMOd7u*7dgl~nLK*H6A3@*mgfL6E_8Zy%kw^}6PHMnJARf|&wRT>VN z$4WSQkci!onM}Mq_7`TZ9o*;FbG+o&_`jax_3Jraznp5P(p5yiFIbOe>_3Jrazn2nuOnRCm+ z^A;?azW{$2mvz~K>lea~CX`K6k<5 z>#vzRec_yii*7lu2G4&oF7eL2iJdPCPI<|4LGbvCh+zFomYN9-8Pn!ohdj=lGjGw{ z^J?&861S4ec{eTk?S*rfkV6%5l~Z<^Pc9SZ&YQb%E?nyKS}f+mgQklY%Je5*zW^WM z&0nxYeT^5iy=plYoc9+?;fa+Q7cWFg)8}5Z2z9`AaR~xWT;!d1{WYix6=v_xuUh7t zf*b#0Y1_NuHOpvI&)X67(wpYZpHnq)!S##hE)aWP{;TB_(_Z`QmI71v<%nWR(zbW# zLCbrVp#AKui-VOpHv3+CtHoocPA8Dg9 z!o-M7`SD4a&pS*Vwd8atJeTj4Yfex+e)Io7=;P~lj`y&NccftDKfvIE5Ain__~RhX zqI^4`b>W$(il(3Mg_z@6sl4LM)iX08oWE86b!-9Vb{*qQ%I;w9Qrst8>=0rPe&z}0 z`U#_JzKTF+GoU%=Ag(#*!0l!KoP((54wZoYX0p@Q$S&pJl@8GTil2A!c{9#Cx8mYU zrd%@l^7Ah~7iXSJ1CCX9JYA>!RNP|`lE)NZeOnee$?KZ)1U)RVk?E<)_!C{$pEl@o zd>6D;Z#Sdh`Ur1=mb1n1knDi>|f6ZHUGxHo&9ruaFU@cu#b*zlo@dU zL7{80!osu+MbZ*T_wPtcAeQDI=Sj+RaG<5cQt4mUKeClb3xKmHrAHitsRE`YV0|F9 z$#6`i^cPy7usqGbll@0GDLYQIbeV!5Eyf>qSEfaUGcsjVn4Tnh(xR$P^Y6Y_`ExH* zSe@p-HqAfI(NyuzljsxPv;d*B0623~Wn{U+nl%5>H2*lBQ~Jl*pA!9P{^KeBPe?1BcXT~{~o-^|t`mL)eD+la-2 zqMLX+hKUvz%|Yab7)mQv{;A^5AAf;;iS##R^?=}CKeH4C6Q5a1efBohkkpmsWWcb)9MvwP6eX~n+=>I zY&CGoP`iOse1)H@0#bNmd}PZMRVWdAAO{k+f!n}6%<=17@~UA@HoE-GX@R5+1env0 zCKC^R9=!E){1H)<-T8+UMeOrn_5T$mtWvuxT+JXAQhr@0ae6F_;0Sk z9{o<)n?76aqjd4vfv7gvtB)%CTh$M2J_+uZ!M;}iBrW-Ka{|TJE&W$H__vUU$iP>{ zF%`jeOR`JRYlR09v}hx+juVKz_}WFC*-JV8H;+%6Nx?=Te3jgUa3l$ipy%r!P3bIx za*iPQrm5sKgrN-TA84g03XiA^UhO(Q%Lz^;`~w;I@_(c3|9B-QaU$FDj_VosPg!{ny4VV0de&YH}WMGlOUc&|4 zZ)*Q|2;48BP2k-I4}~1T=EU0jbPkOfEc`*0u&8_ZozCoSyOe!fyy#6D5cr)(akC-* z2-m}Y@d@i{i(5t_+%vTfFS`t_ko{FUwpF+?$ks< zgFU)cW$=QgXIki|YA>Ll#9D6fP|j`m=t*bZ>VW$c*jE_rQBGju{OcOVz?~AnXPU{Y zmNR(X9rkBwei{w?wMi@f?1(dP$?@afesK3qf`_FB4|Zat;`|SpM9arJ_ z4@2d>;C>eDiw*WdE7AuZ_TFF2TNW+fF_Kd^+qa4fX_QV0rO}yF1H3HFx6i%ikW`mvVkC zBDl>EL7dz0t*>_1b{0XHo9On3mp(rl;iwO+GlUOw4IW$5=Xafj7hD7HZJ+Ze-v|Vp zi3rvhBB>euu%{#u@l& z?S9`!oh4Ag5nNSte$6lhoQeqUF+|YH5xm^E{9nD{em3mCGuTVH0A(kgaqD2XUj+MI z2D?6oNA{e~GT`6@W@nC@M=S5Ch~T$|2nyLgXzTQ0*zCx8;Ch4I&i0?ze~7&N5KJC3qI|z#s&?5E0yIh#t;!*ptatS`U zHXzh1v+L<9Xun^v6%3?H<17#P7azTsU~0nw`#Gmx$xnCE^5ji8z1Vg)b|y zC>&7^IF(%mII0jQvP-T}ELGz=iJVqwj=FP*U#-yP5%QVbP+#auptoNz-X$vf87Y937r2_^cb81k!Dw#VZLt`;_F%L8MGmkPCoP)ULoP&1FDF@WM ztO1oH{jkxgIp?5KbB9WyMst_qb(;GXk7zDbih(lq^ul|ZLN{ZqJWKuHr}tE4u(QY5 zSj7X{{S3tu95BN67`q2fQTB+An7NZNHb&WF9KRb0Q{}kJveYB4gbtt+;)LCtkXH^=Yh@OB?7P7V-Zj4^t3!10_>jxfPhYG=EXGwRg-*xjq+*ZyqX#r8?czpmnP<_;M>HVe#M%tOrm%v*izpc536RfIZ02XmdEi@8qF!`#6U z)-rc7k1+Q$k2BXz>MN{J3G!MYDm3RD)M(B*2y4zch->apDOkDF3YX%gn)?;6&|Kxf zhvQW_1A4Veay2lb9b6{)fBo@SzeA-Lk%;l9l>Zz9Lv)5!i6YE(A8KK)n@|i@{&gpG zGMDA0@$Y7bOzs4=%pJ_zFH;fd1RRx$>poM#T#tfU<~jq-%ykCZnA0er^o8|u6``K_ zoXmBn^D?LVEV@F>>8^pU7<0N8m)9&6A8ncGax$j}K6F(w$Cg;8FKXFAPqh)|x|b)I z(<3Xo99O6WdMSz%I~AupO}hNd>As4tD08|ApsS5}0jDn z=9SEcF!wVb%DkERFy?XQzTxa(ze*)=0&^GhQs#c7Hi#hH&(R9HPKzER9e znbVVHx;%>eaHfsA{OsX3%tOqb%v+e#ohDuF%*QAy9CK8H^w^Uw7xOYjg`YXyiPF_9 zIqILD64KSi9_Yz2UG}S0gyo8ga^`fWNtcKDI7LM*^D~$?Gp8Q{rYp|;Y(+)kHHe?u z-^C8)kQ}!qDBt}yKaI+ z7k1qQqKi(do1oBOr}UE<&>ot*=!7ovjH}cT0dZXbKM`CNUD$OKS9jQD`pF1%8`-<) z<+_P#y0GgStn0$AYp^+K$ERp?=@RHFY)yJdwL7G5tQB3@U2GTII`4#jwwG$Vk8eM9 z26PowXb1A(q0 z;40{{iMR^lU4++7M2nqV|I?d5dq{KBgydx$;UMR<90Cq%qUJJ*q~i>X#W7Ax%1uIk9y zguIQCDk4vJZ7JRjUGG{QY0| zd@UWTne0}2D%Vxq)`eXbkjB4tQ|FyXm(bCLU6;_+h26ou+|z~K1-qPoYP;~@=LkYw z*!3uhc47Yy`jDFcD!b^#x(|4}uQZ;dLjhOq&PVPoPnU{--@SO4TsbRn|OIacys9uI*x&vgHFF)IpSiB`FmqkSt;}7BLtdw;`20+r%yo&QV|e}7 zC2WHO={iG|vWhxtsP;F?uKkCZYyTcjK-+7XYkMUKUEG$( z%w5dG%yo%knsbVg@u?XWXQmd=btbR>I!9jipfeO=t}~Qit~2C1OGT(N+V81kKEK6SOjy#X*VM(|92d zI~QzpxtRMU!z&r)sy;FPS{y2ex&(3NIzcg5*&Q5#gSm^jo4KEPHFMo5Yc=NtBAQc` z(D;vQ2QG4{Zez}Y{gl)uC}*xST+LipaV>LQgAwMsK&{MOoIZYHEwzL$=6-mf%gbDs zs7`avK}>Vbft_bM{c5*TbIw7H<_>=T9?}jjnVx9T+^={$k89mY3r|mNGADCg10LqO z2I`pW8fa#&(-#SL;Pi!KoJxSx7jEXd1_GLM4K!=cIY?;EIdGhz;?sB673V0PT>op? zLAPmyxh_$Hxh_%p1QmfUk(aqcRhS4d*9B^2t_u|9Vb1q|7)EL1zJhbCtGt%E&R~?e z&R`pJok2TKy*h&~<~oC3#XHu2`?*{tT!M1uI>E@kRps>kKtB*BQb` zr!Kkv>m1dkt#&QUbpkDE8MIDJ&A|Way&#Q${a!BR#UR}O-Frc2T83k38;*A7x&Wo4 zREBj8Rf5a**Hu)@9(0>WnCl4QX%SdYQW5I#PUgCbJkRst>kNjRy#6~l11;>q#XP~>&)jjcN*=DG%a zp0r*aNE>!u-qq>^1I%@T&1t*fc-k)5%JYg&(8=7P%HtCiyzNdVz*{QKW6X7eR-OlR z37yP!3BAm9g5LD_Q?~gSe-U=j5wiUXvD4D{ zujA9EBaBhTR>lOQb)I?|Rm$jM{9jExNSEdv`S$fcpLq5zyE(hSw0>Y#rf(r$#)ohM z;2vO4yolceJs~(Pws`lEsz7y{dfs~7yg=;{L}(}!8`X>=mPKBC*%G4 zG3XV*f8t$w-g6dl9C#YuqgOz$0e%DVK4-y$BPdtmg}NUG5Aet!+(tt`2HcFsIRJet z@X^6Sya#;`a9s)B)kD7@7>8J+7Ks-PLHf|$z_Ovrop9hVyzPLy1Na!k1$_^24}BXx zg9zTA-;Q_YUg(5pl;Ud;=;MK}Lh7I&08Yev^9Xdp#~@MYdw@B3e;$LL2du}t^H%6# zU>V+*p7s zmjll@TV>7#EVuxF)(rPT;NnYg)A>BA7x=LoC5C<&cmZDYRzRNu+zpuxJp#;~hK(zc zJSeO2vegSc09-U1e*q5N5BxKPN)`iNhZn9*aIXfgy%N<29e;Q%x?Kf7(Cxs}Jt#eN z7qD&)`T_X?zI(M0`TNmKz)@9rRRbO96Q9q;$2TAe;2YQC3lZq8z>@1w6VQhO+aUqy zgf~{>V?pTifM?u*OhBj4N~X=nJpl9>z`6zKAJFlcs@Qf5{s!O$lo&X85fX=v?_ODd@pyR7raqhkN6L#qMVpjBBiNDiA;6p zD?dJbwJjc4gD-zzzz5mloB$GsJ`s57T2v`?d`K-O{{ce{IzCAjW9~=7FQSHkzx+{% zV(9piSR98`k{(2pLA<2bp{*ZOaT3}#pjqLLuWbdsp!JEZAW+2TkD!M`$5*oAxlJfF zxdW$fL9c!ZnE?I(nFzfd_{=tB8am;BZ%0_@dw_H5QA5zHfRn=L2hiQXyhb60wxF{E z7d0VM&}*8|9_Q}D9t~t7aPMy98hRAC`%!c{=n>$m$1v`p6OMcWlM-|%@HNOW=rQ2= z&8PwBQ-DLCM0321&I=4YgZp{tgfpI1nIL>&pAa4&3^6FXqDUBe1o*{%R1x$qfuFvB zAqPDH{M(%w#RDwpV-ii!9l&S%nnVlqD6oG&+&CSkh@d$SC|ofa^<4!VSF+_~0;{%>{h}u&orC zf=+0`Ic!nrR^Wa}=3i0Z5x8+a4TrK7f|LW_!N<gHZvndS8v1`bhcgFYVU@Xa!b{MXSozz=656VT(pi?2aq(A~gERVHye zbn9G`XoOItO~BzeN-YHUQs6n)Aw$>)OavaTMpeU|u=aX%x`WuF0kdvU{mBYk%(|}z z%7z=!iQtLwi+QM4=wAXKyvZbHlRGdlAE#PDC;S9b3%w1v%WD#K&?CUBZbn~$?g73H zX@>qD@Tmo;Nvs{u0Drgz9T4vAz!{6t{)a)Jh<3=(zrg^!r3P&XeIf8`NDcG^@SY_| z82T#Uz}t~==nmj55E=ywfwOTh9ECgKMhI`jXRFWz zZ=kk-7p^gh@zAFL?}Ie?(1`+2^6pa|im)nx@eNOe*RDf}p?iVPLPF4^z&3J6Pfh@* z{Xx}`2lzbeG2oc{mAebLne_-T|BuSu0rV|r5&#}$U93lGAXM#M;6c{oz_WuKDR3+6 z5n%s1H3v9=cR?s@0C<#j@c`n4$T)%38&KdkF#mg@bbA<`2<>DC7H>4k8wm%nUkJkn zC3XOx*^0>rI$?a9N!Z`SNC9rFS2Ym=?r$&&C){5E#+%T=$Pch?7ZQd}xcgDe2hbzH zllGwfn?am=Ok&(#BnEvvunj`Mc||u=y$U8~7o7_-QrCgn<2@ zQ5h-*zWyu@uY>8WWD;xm)z3!&ju4txZ%5bhyhUYi>CcHn3Tt*B1m zS&$VJKd=$96?z2t+~=r0=+VzH{)>-b#sVSS3MqaY_j|y7-=d13M}hs?QA5y+fwO;v zKj?(}e!@~pet@t2jAnu!18(`3YJvzb{}+`Z!qZGR%KaS_0Jy-MAx6D}`F|mld6o>} zhQSN`TXu%rLLCA&Sz&`a;dwZ4FaW&*I2-3j?14^rJx)$&rLe%~Av6cXfMfe-h<3QU zfF~Abh{AViMa>Yy24)B+>A=OlK{)sdJ5)cR1DSv!2E4Td2}Ab-e;Se@RzVj-GsM1; z$Q1M_;iwD|gB}5%aZ-k8gYE*p%6bequPj3xhr1W(KMe(Y4{-t?J3T{8gzk$%S$|fB zs0OJ6PMv_npnHIOCTGZ-jVQ4Ad}I*rgn0e(`*af}}v2+pI z>;qH_u=ip_ilLPcJpXq%E)4EdfRk!aL(nULuP=cg=!bx-Z$&de4**x+h8iLrxbJqQ zM}f=k$PjV3uK-S6s@!J)9Z37Q4+c_l{mN4w@Eu6uhgdp+4=qD4g}woJ&z)#9=&OML zT7gnR7k9xA#7};JnRlZ(pcCFzi&}wR3mm@^H38iPJo}GmKGK1{2ex2H#1R;{vL1;+ zUj;mW7dj(!H}DXICX+aD?qeCk3-@Z^$9pow{m>J@tDZrBf$jmm_AHtKdJI?;%@D_+ z7Xv@}GfGVUfj_;3=Kee8|Km`4ypkcx{*L({xaKuvzZv-Ccc@ahKLcF!y&4fUK-&*$ZpZ_U`w^oFe#Qe65Z`PNQhsa3`4!N;z-|_t zkpkTg+)6syJ_5|jHp`jO3OoYY13$-rD{^sGFLc83dEm$p;YB^n;!C)@flKYm-48sD z^TOgpSW?2)Zz^R2eNCSRm0Ke~tbDp5L z1Iry|(FC2aX9?nho)7#1hk)5Xfghmr1e~M;oiGmh@>L%agYr=+&I`eiNC20OPzkR9 zJ~vX8EDG#?5)RowU^}qzH^>ll!i^A`^FzQ>oTxFlmjMTkF^gvC4&X-+s+GgQ4X3CA z5RUehp?YC(0&`C_%ify@44sB!uMt=xbh_EdD@RR1WS;W;Me$01=0q0a-pd<8}U^aH?t|E2mzG4MgiA-HbX@k2L_{3F6%Lmd7 z<#P{m^*Q!*z^bd!PS6RLUW0_8`+?CaBmkYTWiCnyop9*2ILrnGAnbn~`VQQSf$OVr z=oIui;QVo#{(;c}^flnWLXallO*diuq91sH&iP6wd>2v%KkoszdQoC@ zI>M@((Ql~cfIA^>_=y0!FG71mw*&nUni~jb{?07!hkGUPrW%~2^=I1uLwRNi+6D%~ z7j8#$K#u_j-l3|_0Xzbsh>iihOO;Oe4ul@7ya)Ua%}M+GcHja(#y8?w2n;MkiNC;% z3CvoKnucx#PG1g>)X_Y5;#|=cC^dNkX5WR0f;<6lg?OOX0c(Db#Gw;@455S%1E0BD zwLPJ)7EJ>`e&Au8^%aLsc*#om{}LS#IAIk|&VxSD2j!wQsA@6*KZH>A#(@_GP(^T` z0{kcBcId}}v({oLLZ1zM9ukKB0`M>QqZXmZfJ^^~`2)Hic*%ORXov0w9;rhnzCtYm zXFY(-(sVl;%9#(M^f0)9%@BI(LHN-_=&`t$I}BX40UZr@wS)s7hC4Qv^MHSa(4-Ut zUi%1YV;}Yhz?(y6F$Hlh1diQ|8iHO9ym|}#L$BI`@jqy*S%g3wz&NBCI^o&dFae=y z+`yY4F}QnyTOpKK1h{-VN(uKBz#xQ%aUHO%9{mIEgqt9Tp>GBD37bU%dLfVwtUCS` z=6_P2ZbZqxMhSpzkW%Og;1S3u=wb)XD1tblyMfO_%Amghd>=vy$AOPDp|8A*X&deQ9&jq8@*6C#z~zv9 z=qrF<@5Qizo&f%)8JUCb1TKPvq1OP^smT>mmwQ6CI-P)>QpENh|+_}>tEowf%!@l};m!eM{G zOa}j@z)xR8>7cg(Lw`k+K_?V3RRF?b)(PJ@h&2U%T7lVrQ<=5`edF<842Froiw|LV zKz9S5flw0==D(pbM_BwO+6{gPUxm=-E^0)L72 zhSXp{h~$U9ni`D9X==zF(G^dLY@dG zeU09X&O%7Xz*9toA3-Pq!t8I9PB;ugVF~{Xp#%u`C(x`1EE2^LcMLxkI;?z2c`KN|=y&qQLVb`Q`Gp#X$*Xd~%_boL_YggC`e>V!C;Q0jy@Ur_3V zI5JS`gypOYx`NqfXT7>N&y}^);k&~o@N6V`)u!>nG#*Ohi8Nl3#^Y(cEsgt}X$~!E zygiLKr*T&r7fVwMRGMaYq;j8#r8)?28jqy$@-*I>#tYLj;7+sqQ#f7)hEp8yE-{T) zrg2XiuTJANX*`g|>x>-f3u{`A?P=VR#!J(&|js0`_!gFS7fW$ee5mru4wYOcEYIjdfwZ|__wO3q` zYHz(t*>(EDH8<5m?E2IQ%IBxrTW(3UJC~%|qj#j*OYcmzH{UJo$@GO|b*hKR+SCXN zgQ@oLL#cNArc`@qTdLipydo}3y%-Plxn=^5bI|LQAz zRw^%@fQid6?5fXA4c|7|m+DYGC6%|i!3{Owo|$To&q}pdcv9`HRjGE@4XO5+@1|4- z_bsVB_Pf*w%I`?Ew=7GwJMT`lM^~oWOV_5_ea(MN_276Y)kEZwRD0pJRC~A~)o$ON zY7ae@YPUX_V#ikS*;Ef=e~JeYcqx^a9|kwHx%G=2k*5|D*$oQ6$q{&emb_d?azvTI zUh`d!xINh?F#g-W&k=YYlDy)_bHpJ-fM%0Tv}PyGB9LPfEe3mKcbfst?ZRr8%pHpnVWLJL-RXmf{yT_7Iwpq zOGJ?Yx4|C5j%td5N3nw{G4N*Wn2782MFcaI(L)#$laW_r7#ex|t2is&5McycETcV) z9hH%Xu!A!4I_#Lhlj(~9wn#<~acq%{3AA8GWVA=I12Xbv?0Aekf*p>Lhq0kC@(?yK zC5H4x9d;~64*~2@jJy^b5+nCx17hSg*l-wmHTDli?!kV+$SbiwDCsCaw&BEQSj>#P7K@jW`>|LVdCg;U zQXRZljEo+<*d!Wx02>TrhV0m27(iI0pB?rn*g`P2o+EP0gEv)whd)xNJ_V(?f-db<3FRXXem)1M$%j;eB74`1=%6dm&8e_0js4`dEEyeZ0P{K2hIZFT&QaJzN-egiFKDaCz7jt_Zus zm0?e~I_wSCg#F=KUpNr13x~qta3tIuj)q&pv2Z-x7EXlQ!=l03U~edFa5R)QI2+0v zTn!Zs?uN<+PeXNsx1pxN-%#5SXsBxlHG~@?4b2VFhL(m{Lu*64p{*g&(B2>#t&R4^ z!bV49X`{2TywTNI(dcfhZ1gl%H+mau8vTv6jk&Vg8^eu}#^&G^8*FEHi|%OI5!=za zBfg_;MGFD|`VID~b%o4O!{PNJlof>5+%##%N}cLWS>_DyXy0LNvNshrIebl}P329lrivza zQ)N?ileej+$&XH1hb|dLr)+L&LC0)uilcM3%hHshH03*8J1cfp?)2=e-s#<0v$GcE ztJ@hu8C3~mJ6m_Q?M&=!-zj!kcNOk(>?+;m+*Q6yII~18dT3jyJ!IWfxT$ngaNxtX zp}y+PHJihmn>WWcCpO!+IJdaBc((+$M7G4XB(~VMI=8yFdbb9)Mz+SbCbrtQIk&mD zdA9|&MYhGZCAQhOJGZ;Hd$$MBIb-OMc635FI$i*sErt$eN2hY5BL&cRV(2k;^b$9E zMgYAbh8|#VbXK9ky%<^%)M}#9j(T+O@S^4-XyU{Udy^BDqbnw0sG2A$M^%k|r(ztOfJ_^+_7-+<B-EQArxZSb6bnk$A+jtXZBlq4}VOw^F#gioxB6wxkcA&Td6;Qd|v%MPC XP_x~SstBPnqNtAe_MqwPtb_j#HA>)a delta 210987 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 M&^%dmB$=uwEJ2$Of(-d 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 z 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𝔙Pe@mr8GxMFy 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 literal 144384 zcmeFa3wV^(weUZa%#Z;R-iaj|@1w>V8!stAO^oQgWJcbBi3SBhs}hYwtW+t?Koo?8 zNtDTUl(u?WThA%S_I$OMQ?<2nv1&pf7w%xIpsk|qsc#&uQCkRVo$t5yJGo%(`ObHq z^F06O`9EJCc=vtnz1LoQ?X}lldr$3kYhAf6m&?QdOvdHffGdAN{r%5Bez(gt;nYnN zTu+bPdD;edbmwWa7TmTZuxRm}w=TZvYk`KF?zrR5Sm5UQfyMDV0=L}}2wiz~;A?l@ zGXK1Sf^j8T(0^V3vkRVjX>;Sy|C@iUcjj@(h)M{%1ZauKcgR#2%Y?RK3s6!$r9fb>e; z&}?G8+vSr%{|A5P#pXA~NIQ51g>-{(Ka)S;a@C)=_?DYuH__jplNp$hqjzuF}&<@Pm_lTo3N3zo5(2ao!>)qwXVpbxkCLLgp;f<@!Y8>q(a^ zC4Zmqyv0ivH;|-p2M+ZBeev`1&0lyY83mWFX3~AQ=los1sl@*O>d#7EU*fZpD@y!P zwNLF0sXlXqj9%i%xW&h8*tuiJj!35C@SB})=O#WHx8%>uWR zBrln2DJqYs4ogvg*N$vkVkLfQP%#aPs!pqVTij=<&i)r^mDSc~wD#hm6-Mg|c#QQq zA!GdsjS1VNqOL$=V(|FJkTLCq#&FxKM(d+wF^%>9M#=vm0WxnhQ|1dq?v=b|DiUZk zjcGKqdV8!elIX~h{F03_@!#-?T^CWWMATrUY`?MoIAgu1n$-O2Y?Yn5%GC5gYU&G8 zu_O#0Z>3h{G#b;k0ktnahPL#@yW|@iD>d}rmdRx3cRHtnzRLh8=`>gRdt zrg4QXS5yFi_jq&4s{8OKmfGGEDk+z-4W}+2npTJ|87irarpRQa z!p)m51qOvA*2)y!Pi{thLE9nYfg~`bu>q?s6T38Zd8T?=@jVw3bGX=2Jw(R6rs_@~ z+Zd|4C^pWb!}!YMhpe(5Yww_yn#?$6VqUB5P&``Emnm8cUj=r4rsx@bnWD$}3Sv@g zrBxL>>>fBjc z`^oVA^wh8Oy<(+iHz&s!>pQK^et$CDEIze88E(xKws?3 zdsn($;fhRKhq301Bt{#6Db!HW!T8^^Rz|se(|B^HEDK6Vh1UuxfH5hqhn=uBmWWKz z4}b-r*58w=1WwVH_tE&&bL)Vd9Al;0#AB7cY^JWPX-xX8R4|9>kkbf>4^UlYHU~ql ziwqM$W&Dt_zIHA7V#m?XwN}|4DGqgfruf5B!RX?fg?=uEeo|9@wHLIXE)6gHs4+dw_{97%VHPsod+oajag(anydI@S19v85;{4JAtp8mR?lNC{YN&`=@61S8D7|_0u z+A3Kgy61qCTIse@-e>o?UFODjklE;#j9oxzmn`3vs&vWRPu0s#X`Rp_2`TSSbU_o8 zq~^GFK>;8o>$4@xU7Lg^LMmDkA|a$gB|+gLr5b9c=wMVjLxEGJ0J$ugoL@SgZY8$V zX>5IEh=2L#z^|SJ92i@7gzQ57t$GH-uqyUhs$lG~IgHL=rl?ZDRpl9NKc#jx&F}32 zAwT|@d1bVHhbV`)1&0`$!_HE_E?G+&gc}s}Z4?F&PMKqc(-r)@D2Fb$>KxM5xtXHv zy72`Mk)r2=FuI_mS(?)Ur(T#~rsy#;G76_t-4KXP{h(W;jP6qjoNA&5cfZpiuuxJg zU468qSGwG?MS4DO7#FiG^$zH0rk$YU8-rPNga<%Hrl@KLVVQD2l=Rf>gPJ{kEU~HC zdo;rT>;w*4soIWAQ8S^C3jc=C9yNQ9d3gWfS29IcIk8(LkDA?)jlIN){hbrLKO6f+ zVpVttupbdlAP8iPOI>A~^-%8}45?lf?hWPE{_&Br%@zCh4(5grh7@%#q@<;42V~^S zk8}DgV?>{uab&tU>(?+ZTv*aa-}gu!<$d_@P~Xprst=;-h{YnCSJBaL(FS$$6~#F& zb3;9O)r)4z`bnnflW7_a$3@g`HIOO#kLghVNQMoWqF2c<6r%<&qjIB2lF3=J2o@PT-7cYj zSxMm^)a}gWxG!?rnEuNl(29;o@)Q=Jp6AEGUg6I@Oe*zKmd|=`1VB%?2c|+vIBj@$ zPxueW_C#(MAvsetS%9XzwL0VW)nt4@MnkfORF446a)9wVW5Hx6qsTy3vUay*0CFfb z&8=R_6#Xf}xDru&mWzsS16O{&xw7xrGGXQ6$>Pez!JVgIaM^~80NDo zc)2jgWxsYPlj)a=EB00N^~;nip!EPo9-tKjj}L&c3$3_YB>U6%ensLNQ-%uE$5mUz`E zLLzJ0J$tOOBaKPFv!+eV69ICdFH50p_o!ptC6*5Is!On@)v@sy4FIXoDn`9pcO_W+m?;;}Lc5j4aHO&+~ za=8>46q%_!s(PtpQ!|+@wJTHfHNfdmRP81rl$zR-DVi&FB&V2w0eL5gqjuS^!Pwz; zZBs<1RRtd#Ij&I3@=KdjMPJ({7@kK>{r{q27yW_sXsW8R?k7Y#D{36do6ts|LC z`Yzdt#O!Y&aG4vOfxNyX;PjTYKV^1iiW+s(3%(632R&LsM&5MdSLyf;I<;vcQg5c{ zU!3?`iO&@MIP7+%zo4atioW~2U(%5wa_A^arDT4{d<$rK?9q}^nLsUDWFBb&0>Obb zzo3eOY+zzzs27mL9G8umkSUr4!C8qjJ;X@La}xwvEsslx?iGL?Ggar#6x|{%OKd3> zJ}ZC0tAV}<&RYEe2{K(FXHDh8*ku!oJDCR35&u*vE3yR$&6UZn3Zhix0H2>JdYwk- zWe+|`qzFx0h*J9#gPB;VK&{LaeM#Exc;6zi?bXqu>=k3q|8uH;!D*B``4+0RnJV?A= zFbhVJdoSb;ex9a}8^Ib)^xDkM)XbHJKi4R98U7i5qtNmj{+fVM7z_|DCtOZANH|Ei zj&L2}dcyTq?q;GES-GzeJ7B@C;?DpH^h8tMd!gNmeg79wExoN`Y)VhlbE!y%BI!NF z=}F8}kx8GxXpA8&{J$epRHFy$%n$P&g7_KkD1taqB)pE!k4{az=}v6U$rMEyinRBI zb(EC_fRPf4e83QDy1ryCBolPx5uwGzlphM%*aA(#n}q+~=eXR zByP~GWyA^oR}o8afzEQB1QKUnM?fOSy-~|lGixEwi;VTvjchp2Z)9`AcEib;=)wb(+Ol0y_}kptve%-7>m#`ii1Z5p zh!f}b+B&8QfQx-`DvXWC- zws}_imq#@(m~Ea#^Lk8waYV+kC{K7z@*A?26S|8n4u#uiFequPR)pfW3!>NWMNvh)OcZzE3X;xG&Z*} zd3^fnC>stzr25!OEza0KgU5;7SQ=G3MS;NJ(-t;s>}dPk_P>3N6}3;+Ijgg+qiMYL z9jm%~nJ1pl9K9R3jb`$srA*YsmddP1#?C1ydnVb`z#1361C={_re|e{L&#uBnTv*S0ZO?=Xr-D0%-O^{0W?kO155RXp-xXl zN4gpwFwK|a+9Yd^sRpB|X|SamE)m#T>wy-b*e zFf9~ekm(8}wZxWyd1IF#c32lS%h9elJBoGET;;7vXAu=XU(11PhTo5-&Wv?xm58bK zv(HFbh=MdUHk~DA9CEEG&DgC9+g^+pWIC)wr#~^6v-rJqp_SWlc;6YXz(9L^tkv<8 z*n;JW5+zSS??fUs1aEX>I; zmAxeOW?||Iqsd!JN_B1aMwwfQ9)Be9XLtN*<~0)UNCyn*fGSuEU|{44IKAA5U)FVG z+13cSp@ugIRMC>vo-YJa2_=o1i$Uh1CG!x4iFrLLxgmXt!`T_5@AnTAvk2*INd|CC z)uDb}GAIa;t>F92cjPtIX|JI=2nE?z?Xr|@H|gs4i%1`oF}~p2tdV+5p<4Kct0Dt6 z&lT*!XHT?Jvq}~RB@M} zt65L@?CDytlPPDkK17DvwnH)4rKp_j@7mJZj@T-M2lfuou>Czp4!obUn5d$WQPId8 zOFPx|Pxvd|wQ^stDqDJ`+G*vYjtXthm-${4stRrQ$0vy6iRX#qi=9a-itLvWFv~@U zwA~Lql@jS;?~XTM|B-RbY^^R^{8Xm9dYQ*q9V9Gszh34(xQ?-QGWVNAT5+i9bNSC_ z@$r$yN4|0I-lOpGUa^|>-bDLi_8UVgIGJsNkBM1)w7;eCVYJ>)0^NJhud%Y*ZqtPd zmgWv)^oHjU1J)k)!-E@W9HTUIs6! zSmqhwEPhlz!=UlAg`ogHw|f@s)IzTnl_ z^N5yr7IAb7BR=+zV9k*#>WMMc5f}>Gm)^@JKe*`~*~+5tKnceFU2v>=1>L{8P);Ab zr)*-I-|ys^s`ETVLZk=!$zDz=jm6EAM;H0?q>i zm;Gd&U5{o5A`-ExT$pgFnVJ_6!78M-YmM>C8Mn)RiCmhw{Q~qmd8M?d{7bW$Em=wm zek{2km)rz}8@5m&k;#djlE`>sek8)(Ot?g5OvDKHq$T_ygqP04vs6xR;FI}?b{rsN zir%H0=}<*qBem3ta+LKzXq8S}cXTJd_gB$F_^C>GEK3n%R&Xp$$rP=*!0lQ)gyLKs z^;e=mF(6nLU(6KM5(Z@<)s?z>90mV_qrOa$LG7W`3=a@B9(L>4vBb(^A|ok_$-fFB zTeiqhJ2Isx&_Vris0JvuNDcBV(cy5r~9heh0;%ptM{6B0FZSs+@{k_$vxo zSq{^#%YaM}AqXqAuV!4pepF5(0%q#2PY?H?>B+>4&BPI3?3gInFSXQf1#U5GN;*hI z9|~zYv~+(-kjm{ss41!CQ2;c9)8yZfwT4D0Q}jWF#4^Um)28$n$@d-d=>k{k z#uv;zxZR6cE$ZxXQ#jM za3{TTcUhf%{{E??X7xE>;(#bno|vSOhdv4q=b}2;yJ@V)h0MAo@D(d_=A*=o)Fa~^ zL-M?=e1ukPo~ zRBwM>3TSdkdLz;=`icHS_w#_XPkARvbkh3+WYivSlCRS@6h7I$rLw-E=1Sk%h*Mgr zJds1Wf@>yIm+7>ay{53Ctd5KGoxAj~J*x#>hac=_B4>(jlXx0ENv2*UP|-qI0Ifq0 zDZ_}8wMQcBHER>;AF!FCi#0ezRFRVOx+Z*{ArC?|nWFJJ`Ik~#g|K9qQT3X>kI0;( zzN(S>7D#>dBlUGleT$B+ZyUujJ@CyHPw5(O)MtD{G)KLqEPYjpx81Q)`5Y@6e`gsY zduf;b67wPLwSR=eQmEr1Fl5sD(M};-bQlkJ>R_=DC7px_vo;{vy{5B2sOYmVM=#h4 zC-0@8y_0pQeg7IrGq~QJm~z{@6gS$olGNk9mVi*ET}-vCu~*t>K|uC(6tVA;^($3$ zv!EkYP>o~%Q$1UUj`-R3uSg?%fb=-#$anEewn>U zAKve`5|yr4iO5LHbTeaEuypGaRhAG-;A zyO!fZ(FL%j4HhF-T1m?%@`X@dL=C8q*urt(VN?}uU`DNyL!Up>12ij%LHDvSGc70> z14f7Aa7cXuYPZZuK%Kv)94fN0LMk1))w-!Jmhc5*c^=LV!*p ztzw@Pd;eWoybnQDcDLSfdwZx&C|^uHbe>GnNmMIFD2YsNJU9&YyiqmA&ZfyJr(}F= zYOWi~EKg4y%9|-VaNbbM(_<=Ll~hNQ;cQ>99T<{19eS3*3m{)Av*Ahs=G9_ z(FK4*1hDpb{SVUg?6?Q?`7xzw(5zSJ%CnOmd;Q!;${^$Fu6WE!%rAzLYl}HoIEPdf zM)VJJ^s|l-##LVy|NV|XRU2@^F$ssE^IBG-g8{1oe?{1DRdiY#S!($M`WXZ&Myj%m zP$!&n?*XYqB+|os2yT)fO}+sgTft8FBCFDcK!;{i1(;xdUN&6`T&rqE<-%_44%R!K(EFZh^>fYEy&KWG@se&~CivM|%!%LoY zrwpZBDqqgx2bFqk!>@w}!%PeOdtJOmU63g0OwJFpF=%C$borXa^}w zU@Z9RBR>6hJ41;GA~f#6YMwIq7MN5A;~jhE2MH%Ya>Mhoe> zwEArc-=M>>^T2XNqj9JA+;gQXy_pYU6 z(R2XY?c7j%9opq8@5wy~SWQ+#K^-2LdVx5(+ghr`&Nn`90|yRdGmGQ1qGg+n_2xt? zHM7{t-GdiXr~KwDQ5KVSGX< z6BBorxb6|(IOuW=ZjL6?Vsv7RTA=-ay&cq6>;o_3TVIXmS@#uf`jZ|#`Z0vZCx~&i zABcHc_r>$=PeBoU`f6x-sKY{IDesRzU_K?z+$g!V%;B3Yr}#nHJ-58m0aDa~ta!At zREtL*wSDK=SVVxWEzCUHovIx$H|$}c>~Aru66AdQY#OBg*(Mu@()&q7(AE;mdP$+_ zmkdb|se?LIXBv?rU<4^!5)fiIHN;p1Pe26Pl^S$guOuRA)LF?ksYV*2Bh3w3Gp6OU zwl&huPw2L#oDwV&a#~-9Swj$4&R~#m_nqZ-vBHRC2Rso}Q{e&QAuxjSTPnSc3{qP# zQ*;ep$S)t%`%+e}{k&cu9xd4evJl+`XIQWdueAX-LFr#e=_!B2Nu$lnmHu;r`#Ug- z{=sKezrMKNnW-{AopI1Jp0Y1EWjB1L?7DwYmSNqo86uYYM_7lSO<$k!SV(n-D_&(M zY_<&C5u3lzYz# zk7EZ@Q1%<7xibeY%NSES#<*Rv(kb<5gJY*nStQO0-Y1WI!g?K8R$^@w2})3G89(S; zGBKpQ^=J>wM6WxP^v=ec&Lb|0X9J`oXZRmi53Km2w3XUJN>)VAP~FC+Ka5>6Ea#!65kL&$%0ixJj=klk|#GgX(ukZiyS8{Spse1Q}%#PQkaq z<;vX?I%9vRdVjoFLn=9V$-#I*q9C)+?FuGO{wt1*Zm9@bF&5~=7QdFcweSY>tLUim zp7b8=f4DieK8@#_(u?+Mg1w_@`_Frg7t-94$t1gPDd6l(ge>oKPG@5Fe zWweR;pnxeCGr`L03M0|ZSg22}+>8o+?1@$n7^{Cm9s)iIB>tH|V#UXPm(lu7$D8kt z9Y=D$(0+L&cS}V5HnWGrsC!n%TJCW*Ecx2OI9s79eas103?rt34t)0b<20+7z}8o0 z-cIZvh*r^${f=RHBzFgZY!7XZsA-5!Th*+OMUfX$wXR6+Z)Dn`9iLVz9=0nrB>){m z?o4<81;TVX`nLi(qE?~S86PS8#H@bbNQf2{)xUblWbc!^PlaA|x+pw=fOK)ms*t+D zV#^fmBF0+SC1UQ{?z=eOA0KCBI$HbUSZsHl*uiY# z+)u9!nWDfM5F1VUf~6qFUc2dL8G$a&5#sL-Ew*~?e*$z4%O)2(fjoOBo}*=xuLz%& z{Z+?kIp6>jV^~-bc(i7meG#SYc0R*Nj!bpxQBga@faTUTv*1q&Od6{+6l)kjoEtl!+!sj@n`c zmO>E_L{@DUJS4VQT7J&FnZ*ygTl)^0ZmGJt>9JPT339k{6-D>OKS)g#iH;?dgUCZW ztcDybw=;3K$F<_vXv1`m)o_(BqVmT^8$9D`b2}rsOx005UR43Q<+7`4Y7WMZX}PTS zO5AZRmr2)Rr>DPQA3;V)G?lwn`s_dB%~*)(NM>*Z&GGF6M9R6SrM}{`cj&;}Qv1Pr z5l0*xCLF);2j_1@A2dg8=JW!d@ZnD)s!OvLvW%p2(rY}kFS5~{{fin;Y>OlY{l>i? zfXBv&aYtvPQQr}18EhuJ%-?^zM30m|D|LnQ9b<+yiv3%Q!XYGRoXW*$DhH;Fme@%Ya`7{4(<({|Dl~ zHGV!QHKZSwIhK#to(Gu*7qg z;?q2S^!SKq!~SkoNpT2%=SLMTQy}fjj`P}~0z>*gP1Ecv1CV&CXad%3R`urC8KZVP zNi70ZTmHpktZK`*G*90`*m<@CN#?7}mO=!;y59qYeUaC`;zoL+_fQTmfuL2v%pEL- zM>4SrVIULiFQJoG1(y)XX;{TR`)0y&M2X1j9it)bkNHHU>UMxRvc2XvUtnNmGJAC$ z_Vr|t{^>cSbv0VxNlbZdJHmxF=Uqz)>~K$Jo*GEs zpbCCO4tpQz)N#e8X3D0fx7cq`jVe&2Wi1HMt?aRX>SSZ?clFdXA-|#Ce+^Y~xH${PT%8~bvap^vYR+F?8UO_seM1H@i2LCXXH5L>r18JiDYrP;l9wNu}O z9`Eemxm{8pl6{`-qmkJisGj4h;LU9gy7TQOU?mFn5+<)REIN5r#uWc%lFjDep1sXGfc13q|A2qCEw#eS6HT z>uKctPZTv-E5QSa`d&!hI*1O(wgV#lq8^;9IGhp2n|BJ584@&&aHUyywPI*$x@luY-ICNW=jWA7f&PllFv^ z<>7=|=iFtl2}q%%2}0@sTbvJ~*BUxx4w$NmW1u&**!I3YfB(q7n@Vcc#1dsklgFY) zibd#fW;b1b!AhO9Hj+Ef$1(28|ERv*x9VU-8TuSZZ=qrgS+t?Xj~QVu8Eq<5Jl1C%T!yY<68EJ^F@mngN3mg-q`Exa0FGRx& zO0xzSqxDY1I*6m?P!20Vnzkh9hoge>h&mEhnEfxwxBt07&aT*2gi)fkzN0fv^T}rp+XU){=Sg~hio;bdh`RYa0CFICl_M`l>Ql92WYGNXiyGM*> z_RUD;7l+kmGqIf!-WM~}R8N(AL<&F4hb4u#r9p0#LlY+6@ztqtmbvRkN2d8*lm&i>4ne zVz>%S!;f)kAr%I(FO6Vlifw73iJd97rG*hm#=g|V&NPU9X#_jdHO)XKs-CDtmTHzE zA-KpWOiGHCY>^l$T5zJs%j2o~K}&_N#Qnb25T1woBf@iV*Bj4-SK;B0-stM zP1b&!!^CJZ{DgC@FFE^#h&o0K=2lO5x2#m$cR}rrWsf08h&TQR^R8vfLF#26JiL}z z$wK=>PT;KSxpS9{w{7t%Yc7+TLx~wa`(=qp&V?9Zkijv!2YQ& zTsKz+|13*g#}4`u${6Sjump!Ggqc9 zn@VYgbCBZ*4SYxBojKPa9&-L665} zH5S6q`f=RW>sqVEQFf|F(#IsFT+l=M7%4XdcN9n|M%Jl0lnt#3=8V+;47xO3HKp^1 zYRy)tgU?L&5nN;WvY?&ZUD^7xRqNn0Q#~5Ghk+bt(MaQ&acg`eNqfOcVA*jW8h4KS zaH?_VtegR6{aC!KX1NEttm?f>CR~xqhv)Vgt4(%GYZFu4U8oL>)qg;cN2+!OT&|_Z zipN##T2^q#dmU56F-OXWVybcC<#u6PV-pe^r3bbwNHi*KhsXshhwm*!e6o5hK=*pB1$A<@LbS(~!x zz#9i^)qzN7+B;1>`rWmfj9xJ_e~?b!KTeEC@vXXlY}Q9yU^p)8BQ7``m-P`>KOC3! z-5DL%EWn~;#UZrL35i3f!wG3;q5I(0Pgl9N4le6zTnh&N9$#;PueStWZwbEM`mf;Y ztt`IY%Hr#-EWY0Q@8j#~&&Ah0Z~Z;KBrf1!WEfu(_gQ>N+)?{2MZd5@;-cJ#;0mmHZd3v&j@&G_ddYap=<-n_K&7)$*}b6 zdOxLSnsMhg+vbsXKIB@aQPH06x}heka@qx*+(F3pFgWU7NBC$!cHi6a!|gv25Aq!SWH z=*Yh2rZsMFw%7l)gM-)WrfPER~)eAsFGjkCvUP>3#t2d$QVK?3oMjI$%i4xvJ1 ziD+Ta*`wDHiHs2{MBs=P2FO-UOh97%hCjbB{&RsS`)Z>!s{-)EP8gvFy?^f~tEW)* z@B?}e?=ubmIMXN`PpWL>S%k9k_~*%&0d)imxgY$yEJ?dEwIVuWSO0cIwPyC8mg8C* zsqQvf)AT_k{I);hsjcobTKD2naRi-54|hm5kq5>{s$VnO9w8-td#(EQ;mVk7@USN} zHwe{o@2p^GcNo7WQ#8kr?c1FAxuH}|9=X`Xc}{0*`TaV*wLBIHT$j!iT`*Gal!)r4 zy&q!HAGxnp*KH-XdLq^D^xw*yM5ZD2x1&>$Y@Me7-eR>yNr?EIDLQciEg=OpR&V6K z`*l~-<7)4FTKhzO%w-d?;X_IiBV;5GEw5*d6NhCMv>OXfqnC2cXbv9wFc-&GvRMN@ z_i?ssv4vySIeyYbgu!1%{fvtP2O>-rR8b5iKC?FEJ=1~oMS&!CD!>3%{!rlwqX1n8 zYL0^A7C5Yi0_WX;Zqc7{>?3kmel(nJ24D#0H#MBma^Nd8Y6m3|Xi`O8c=S;eP@fQR zKao8on}^-fGGC_XZeXQ3X_=~rYFHK=p*?Iww18=16P+qh0+<@ScjFP6DOJ=YRj{bL z>?@?Hn3HSR<3p;O@yde#m@)k9Mo{WN&r;i9om4A(Nw=vy?!@4y@$rZ`5w*=;4N&@t zu<77iwxfuQ`|XYIODB9*L(NGd@dZ`L=g|n!bEe^{lK>V4Z*(q zGsUY{_&h5;Nxn`KwKTkgM)cEw>=~}?g4sS^6>Yedlh3PsGg6)}2nx-RGAD}pCH``D zUE8NOOe~D#?z5_2S&TBgGhE%f*p`jw7kC3D!#-~NR2A}PTgz@Q{a1TQ)X`x|TZe6O ziieGf%WLKN1NPup@Ap?^%&I0&%&2W>^4M2lddH?OFFi)vJj+hcXk7*^hS@9^+7)7% zhoZls#$)C7rgIsXVC7w0ES4j^s^z}8ud3SMN;84#730X}vvPqna45GqHpx6R#veP! zQr-i7j2xZgkl_lU5x7a~`IHgckJc}WhvzC(Z+hOLTwmmt*>^AbpZhj_^Ei+ ztSY{T&V7*1i!>}^oF>^jnQRH$9lL~6+4!wiY7X7HqSS8W?g2*SRr88t`F8jN+TSpb z#_u;ZkHV~5_JCmepN@gsmk$>^e{``4BgIAvTuXtqqoy$Z3(B11_K^KlM5pOHOk%er zuM&({!`DaE&q_MLKgV(?L!w+m)@O8EBVuK=!%kyK6jjb8E3t=HPwPuqa+}Y2HD-_O z=zcGpnOyq;#I8|Q*;mUnZnz?!+a+>w>q!zgkZ8X@d)ei;YdHD_z8EiCGOvP6uu8Fd zj-q^Gs~F<4#Pat9>Z2v=q;O(O{qSO;pCmy)A;#T9T|rf`A5{hC$`GWt{26A0R#niQ z=R}Dhom2n*IKEnr9)XYH-vKK*yBQNh-H@++2Q^SP=j*Iz@7sq_Z-vwVno#5Zt6-qj z(>z8hf~TcgPDPBiJ|HEQ7kiAh7x1Z?;e#LJzMm6eC6<@Fj5gWo*v|?zCz=ABORnSe z#{Q|M?zsW`G3}XADYd$zstI+)ijoEPoPkWnsV07kR1q&81%BCh2XyPN1ysEQ8mqfY z>{<8$Qfbe?!|>@>r_E6!XEaP`ZB-pD45fDlUh+g*&X|JsXBP z_%qf!r-P5-8`T2izHbl_u6Q?8bte}meg(!=+dAoUYW4=b(NERxkE&hzb(gT}wwGY* zWcb7TMdj4nXe`<9Ycy7NRAZu$Xrgdb)$R|e`FrF_ViVe&UQ4++GV_~?hdlC|Bg*te zQ=WDNFb`ZJ>hdRRpA-N_VR)U1AoU>f4Pzc&XLZ_v5C_2z3V(~Ldmb01YA!6L^SuBg zy%x@Ew91*0skRDa0JZ~UP=(rgX~<{)5{o)Z%|PSQ!GYP#eAKr>h>Ps+4kZw&^8K{) zmbSi?m)NUyJm#WNRa0&?jD^Cn^%xXm`(${HT@ATlYQe3bl3T0T){BUKc5 z@5OGm)a*(Qkq&b*^2(s}7G4og_QI({v z5f3~gJSZM!&UDU4$N3BwnGeP zAU47Nwpb4~Tp6G{@zd0_l1@A4abBvB$(>alhoLa2NL!i?XJ}&uazGT?vjhZaXqW~R zt@YHV>Q(ug`r1-};@yrlV&1D>5!@#3h~(080hM8c8e2X&)zd zdJ;{QF4(oI#RzbRJ!>yfEn9@6jBuW>+|cz4&SAt z+Yb9%HS+BgWg_;X_6G4V5DPeYD7BaB#Nv<^Ek@gv%2~x|{+wFSDRxXWu%(K*%3MJG zj^V`nu{-SffMnX-X{mc|rRCgxiHoVv16*0>u*kk#YOI>;kIge%F4YIR*Wi&8-jMp* zvREx7vq~nZntdgR386to3Cx@YLm{x0C7`E43-ZOO!iG_jY6~G+GlGvBx&&O7e>?&I z_>qi*aW5A$Fk=xoso6goVFvOv&+GQhENC!<*M%XhAH@(3FZnji;PsHY=LHnE(`e%Q zVP1e8_~-M2m$ST}$E@CBJorOeN4Xw{7aTMm{FX%IUg1M$x!dYY2P`=~I*HSxlO9Pd z_qbx`MjLMT*gxc2Xe4)Q?8Gn^87J5e%PrA{8Hi?`A~`gJ-FU5Z^iXav9?GIFisD(D zHP5~h20qutr_L=1nx{Rx+%HWgdGg z3E*#x$Y9&mhn3eNXl^3Ip}gkUxIhA=jp> zp3G?tyJFr$dA?YQ7DVy7W5?t5NUSF|!E7CaDPUgAtBo|V%Jy!6z8GkIdNphwI?8lh z_Ajg-pLcH?PRe!zvAx$pqkSh+**^A7>Gq=~&A{DwHgj#$7x^Tbg06UF))Jz;%82_D ztBQ^I1gm9Ly*}m6sX7j;$lNnECp{fbx_I0n?0t;32WjA;X`V)-^#LFXsTr-yiAy+l z=;2Ubb8-Y?H&h)LzbL9M56H!4Sj$;Rwp#GGogCFQ2p%`%;rItpi!4aR_70Yo{&R?> zNvCj)u##&*NGcagzUmp2z-SxvTv?iCJwYi9+@1Ebe}Kde>(=DE;!}rOE&PA+#KiJ| z3(EiATblAU?+*;+kbW7fpQEIz8CngVAmrdBeg`ooA_O<%uSrD>mD% z2V7M4kJDHmEnhTuZ!Bm$Wn12E>$2~?RA%0= z9>T&fB~@?((u6Um!%B{~Qdj$|l;txDbL{icy>KqIh(s&N9Lb*gSc#kb62Cyln`HOa zYACmZ0;z;=Hw>=(rjbqFGKobnzJvPZpT09WBv$K}b&hZ)QD3ePo%U-j%12L= z#g{-YFzr`glR;jfSL2|)laQr?0gGohI&_uG>a66`B^$JVnx&T*OU(;vq7Zf&Rm&(F z6A@>-{pRnPj7fpP-Ces`d$1*1rlHmauy^M!deQ8!fSHc?(xeDySa%`n7Iox`~5-^d*!YOX);?kStESnY6Nl z!AMjV|6TTx1JXz5Jqor=nDGURRh>uq(go4f6$CFYR@ZnGj~X3Dt_s1IXgK^oit;Ns zR9}>>XkAq4g?ER&i^++A8lTj1skSKlQeq{Ne+gV+*rE*GDVxamshcHvoYRs!3E9_y zGcmuiXX1$_7tke{2Iy`gYK+`J`xN%%P}HK4rCW>|vbq~J7A1z<0p2Ke^QsK<*i`Q7 z&iDkz{>nlZIBQe~FL3wm+|T~5vlC+9h)ijcE6aU^G1AdVSoAi-Xi7FlugC>!IVk zF?(D6N(4?UZ0e{e6D&_4UugZRS^bIez?)PnF%L|n0o5zvj^pt}8xGt5E=<4S3g7gU zXFy%z*5cqJqv8@P+=vJ#*=?iZtcL5|9(#$z%Ref+RoXc!>s!DVn_sMry*DezoW*1cNY-)&R$tpamXHcoo+Q;iA2`zkl2a# z??<8>3fmzOSu$niVxMy16DXSJ|3>qW)3|`2=$=@8{)%5<$n_avN@E?1thZPO<+ftx zAZr6JHp|(L+JmKX1iMuEvl4gtWX%hWW9c!%=8%P;P8|M>oUe#pSugWqGguh{&9Fp_ z**fiCybON!*stP}-#59wxCLmRPND)-eAo@NRbCsiR9CUH@llIsfRqVy}60 zeqmBUVOJI?kVgOQC21{+Zd!htl+Lz1+w9jQSvNaNzenp3o53A#EpQ($78UDXcuB}g z?9N!3p5{x~jUKjASGw)C3!LSO)RUsHba}oO!@Q+By36do+~Qw~(HNXzZL7i5VL z1D2By<@jU86y}r<7_@6HlO-6;6#e=Tz_6_g&??^L{E!g13&^3Cfj(N^d*IQB7hJ(d z+>WKa-qFJ?pbqXC=%q+-Rw>1Tyr-DU{cnLnhZcz*S8f^BW$&AOW}a9Zpd|TQ1?RG= z_be?myMyKKNgZZS@Env7uJrXh)sdQfj8(N!eghyr)@u3Gg=gtltNJPNEb~D77s+D( z{97qzD(oEaHPQw~yYK=(#k^zx>ia=T6*kJ1_f3 z?X1`Be3&NlK=A*ut)9(j9H&uiyDkx?qY203^OrU5IZ^X zhR59S9(NB!rfR-EP=@b1UC5r zL7=j6yoj0gR7U8MMTEEz)Qmsa2*sJ32Aq`8A_+a)I9BJg{zQm8(E-P;Yb?;=S&JNZ zZXN0*(yzbHaqIUu?k%r4?t*}!(-(fpaTf*sIvktsxJ?I-)8Q3wi`!b#Ow0Yn+S`iv z1ln#M?ncqhL(|ILkBntX?I_A03svxqrTs{Hn3KUXmAqfsxW({g*q*)Ne}iz){Ja{anEz zJ5_Tv0?(s*XqFUE^|>-O{dq*ghRbyi=oWddFPUttuA*H|*vTpfR3HvW2$=)~6(zj%qXEp*hez+EJ9GbAo%tZsAiHA&n>61T!w{dI}EzoeNO=yPLPXJcY;?6Twg zuO(j4A;akm*k+Um@zag<+xd|PeuyDuet+p$T;o1DXT!5BH_>@8W%j{-S8#Y|ZhRed z8S4w9P<=ExCN=eO=5%MwV)kKUtKWRUxRk3u1M&aYaYzzc+isTa?0-Ze%<9*TgwUEplO5WB# z(@BOXqmt|pPmW>N7evCLMkbKW%0C7X$TDX2 zt|gZUg{ZBj@kDoOqR&)2s`qgCV|=sItnOED8{h62-z)Uf`9_XIKZ!o%;xXfo^dJ12 zY&x8UgdDuQ^)vk(B&qVuC@)4A$NcuUCJmEn^vkSyhkAVRV=a!nqRC4|;L43AE4h;= z69_ed%heoCSs8M1@W$62o6R>TmSHznA=@(m0wz3waQToIR|?8QHK8 z-OD{%)}g`!!S=URWOCw&*Lbj#B3w9U1(Z!LtGCg5FHy3LU#CNVk_U~)#OKG#gWLYbZ#Q8K#v|04^B z)dQiirr0+MP%O_fURX4k{)Mrg@6V(msZHW49hRNYQr zF=T33G}vDNSbE*>74QvLmnYsh%&DG_9$Tpyb@pY4i00Q?Jc)+V*Sl+??oc}eg&9)D z$8|>al0A;aE}e(xWGYcLrJZ)(#A zpZ?PS&{*Fp<~0A=Sj#&gdaT=ET>m3ujhMxyr)?3{EZaxf1m|hxbb100`tyFcepHP! zcPkYX3$h^hGhq&!(Yu7ywdg`Sxv9O%D`snDym^o@JNt8!W;s9obuf>+#6dhA@?&E# zI#bw;8RP&ay@kuyk<`>2Ywt(NnU<9_gJ{@V=F$KRnmH(_3%6s0!7Cmktr6p@qgxYA zdCXdhq6I<~XsVgzZTqAp`(ksr=48@}?6087kEMO~SJ3vFsp;iZ(U>?=wbU@%yC%Ck z4thO#Ih{QBh>=Ioc%HWfeGzH31gSp#C^*+#FJoa!}{AdKzzkZ|0}aGJ-tA?0lQ22SA>K&A}>^2E(m1b9lm%x4Q(v zN8`35{ZoxwVw(qqgm<^Q2E7VX`CV~pi(&l|F1Z0SK3C0yk2 zo7O)XX)5}^8R>ueypi7VnX&#%j(srLj3#k8-JO;cK0RavBT!Y*bvRk zph(@zdpu^l$8TjeugM|Xhv-%0FX-GUOH{eg1;-;=MaJ*7y@BAm$}e_7lAJLRNnLGYV{wkj>k)cm7fB+Dshv2s z{Vr!B$vm#gA#_(-<*_k|rgKi`0=MjZtm@0EX`9v~)tBRp;J zONjBQtHIQE`%Lr&>4=uVMeBW5A>4jr&FHPTyHz$3Qm0VH^J}Z;U%acnc&3CL zaBg?9CXhZmxjc|A$%d?qkY>WkFSqk3?Sv98=4p-mt|d#O{02sipX8d0`SAx#+2kh= zG6_A}&pM;sb_!A0J$_a?M~gmJM09zYpB=&|LX)5-C1-D<$w@XSw)b?#v?u*5v8k`* zVXccHjLYN49&%$#eLu+SHcMpgRraqTK-v{?Q>TgUf;6yi4)1r4st@9YYUL2y+3!4h znwE>i4kU5cWLLZ!U=gEri;PWTFlw|u<@jb9t^eZq7Q~uJ`D(0@@4}cgEEX%}yDWAr z-@A>rcgWXcPG)=K>ObiCQB}J7f8+SERdDso2|I1{Hzq0<@^dK~yQY5wVm3~pbM4#S4UX-A&^w;pnCN+JFrDpp1xlViQq^iSf=P$6aD#3=fkbeW6L}PzO@W4u(> z_A`9E?C>uPME`g3+k)4Ats!Xtjr}Y(L;6RdD0b^o8PeNg^ZDMvZ+9dH?~G02yC`-N z-z71FZ#;&su_t~VKg`u-Z)OnFksh<$4_we7*h>GHmuh4u?=@Su#PWfjR`MG*X*g)G^7cxj?KOOC{wq4b)@00d z8gVO4%}TYlKS{%e-A!GFdD+jrBDb zo0~*|>9E{xRF|9M1qe{>JDj%1b3^SrIYW5Cd_nf%lFms*m=}LMEXJn-YQ?O{Fs|-c zp71C$j^z3&znw7aLf#+9QA^G#`=D%zb*M8xULR6BIUv3kMjv%}N<;;Hk*c6SevDbU zpg88qbZWI$az-HiMTa@ny6cZ-M`w>>M*x!7Nqphl9ii%7D}JK+M{0Q>gy9jr4@6VH z6h6kqYOyoqC~dO+BZdk@3aWAi6>~fLb3jp?9mQ7K#zPAcg>GvqjB=_!UKp(W>ZoQJ z>64^Yc~SSxez6Qu!XK-|2X9nHwk?l#9pjL4d7}s-It?khA-L>^x5A8`Q(Z=bhLG>q@5Ft_40V| z5KBKMR2eCbjS0CMco!)#BalfKi$ChVX{e>i!fZopa|g}bcdBo<;%l*Lc4!ED{HA;K z?hI^fi7j@parlAtCF3M?0DPTzsAVx%hh6 zY~P|!fyHw8gnttQ36A-BiXW@m&v}YJtJ@j6zr|Kfme>QJ1KnHGp!_&663{XfgNI@m zQJ9mB^)oM)6WRu>o>(T~I0n>PEUV+*{xlER6coXzd5R#ok>+!N8+9dTWK~OGSsvEa zvK{iH)a~#!xjrFBx-x~So%gEDU&~Z#>$nTeuB=k>lhS8wX*|52ce)N9NpuvjH%gxp zhmYKK@vX73{JJilY4Ln`hp=vK+!K{CP2E-Jy@4n(-fP%n&&84j-6~uF)=*+4o|T=a zOMWD|L(Zxbde6JpPObR?Yp#eQxnhT}?(>li>a&bc59@VsSQLq>Z#jF{uYk6S4|qOe z(0Km#i$CC@rIJO6`|OrXv%Y}4FR6XbdP(r!Xc`=COZ@DiHpNdpx;3AI1ZfR61I6}C zeP?P$kgdkKJn=W9G)P;7XxiQ9L@qgV*~!+X)2Lnk>ou_;(NKDL!xDmx2ukvF5iM!H zq!7CVP2b6@nL1x7eUd)jULN7)H_VCjy}nUL+})-KaQw7{CULWP6g7)d*!~9Aw-CjQ z;2L>cP%ZIcwE5-A%S#2ByX?z!^SR=cT3%VhHB)g!YNuuYc?6bHGa`e=+-RJ9D z9l-l9>Y#naB9o=BP%}hBzbX*Bh;980k=rNmiJ!_i1{#xj>9g8v0&DWp0hHgdiIQx{ z3H&(mos57Ve}G$n0V|m&eH_vm>#Y$oD#h*pgr}&lmnS~O_-crcG!2S<#40O!SI`Iz z2wxeGQ4L)(G|SmLZBDcc}WM6}x5V%6SK8RHb^S?0o*N{v-BAZdl2L(6%}QQRm^A zXfg-i8fi;%S|F;X`Rvn9l!i@%oy`ddHQqy5-TOEb{P7&-Pj60A2fC+~vbD(Cs}0kT zY%5yjL&M7m5*h?z3W>mS?$(`9|G~SSj-7 zi!*KdJ9LjO`?Ku>AA_5gcl?OyNV#vV%u2a!!a=!vvlw+y2m+TjU9s55#Sv zL!mYEoB6*6rXBP0G*H?fsycJ}H+il47{l+qwuP6ALnTdaZhnMH7NFk}37uoj?r<~O z3idJ1&Pm&IRP2KtuaHw6c2Hdt+0pFI^oNavsVJCFeiMHLdS(BW10$p`2zvZ6({}r%c7(TeUSw zkCWlY`DL&TPt)g0h9`!jkI#a3QteI5$rof_n=T}#N?oZW2R+^l6(~ z#W`V9i#T7{bgwx1n-b!9H?77=UM*u-@nZRvr#`AS$`+lI0e)wG7fH+g=@X=@WLWZY zUF6=*ZXTc0$v-36O5X14&w(N6CZ-C$l;XZgzO20kgeDWRZ%0KyqjD42W_|&4+G$SC z0FG^7jX+e$iMl|dKKVpuca2Z7Pw4hOuG}uS1t z9MthR*+H4PGI#3vsY~d3x?Jx&ZaXc5n5JxWo_F`fD==QZ1molEgYG38h97i4KCw|o zaKci5VxtI^{ID$Rv|Quq4wuqD_G-znjT^unz(vXp4{GI0GW?rlm=_spe-lkfmf8ID zVC^1zCQVwKxF_I3tqq^3rw?^EbO97jiN<)yrj+N!&LRSNqLAMa-zKBhD?jb@0bVj! zlO`si+xv7Oq^wdqUH-qhd-M3Hs`K$b$;>1H5^hie0YnA}ipC`x)WiXuff>0Y6G>Gn zwl1_NwQ4KE3}69GoJ2CYj?#+NTGwhn+E4vdyD8u{A&{`jrV^w=aJ}Po!3_cm^Lsz% z&Lm;6zkXid?_b}%UXy$8x#ynsInQ~{vx46{v%^EK*NuWv(=F$N76#WJg39 z)Al1j+V){qF0{IMZ%hek33i7i3u8VnbUBg9Xc6>BrKgJLN-8PGG3)bx zbj|M0jYD6ULFnC ztCHoIJnAktilVqbO*w|a&huq;@ z{`ZPJC57~Aosi11C}yMg?7dBS!o(GR-dK0oIkuM==(RQFSzk!9fQxKJdBNC;(zsyC zS*p}^vD|Z!FO_K0YWH6i{QA9?)RG`V*->d=Z%<`P4sdY_D(?gQ0ddyQfWgNC?d-dUrQdZ9PXqI-Y7v&XDC| zmreiEOOSA)e0E zn|C{^wdYo|BM<;2=xLsFLeQ~Bjf#2A83KN68|K))0#mk$2)jYI4^dHx6=KWyL=G63 zRuMG@eVxmI17wk`f;j`sU2s0**A9r4n7=DvEqt3KAXJw5!~}|r54~{_4&9eJNx}LB z;^?R6%iTHi?*+NVhF&fgI_>gSUJ!9$zRAkgvCQ?doV|+0A##t{LS2}7ubV-oL$%QB zOPj|{;Yhd9jyiE9KMxV$3r30KSke)s<#GWs@v#&F`e+hlJ=M zJ8T5#`>ONNG>&uTY<>!FG~L!d)ZfZ}!qS`-GQMicWno>bqm@Ra#oDoFh&4fK z)!1?2a}=l|oHL(SA491o!lRTi6=wRY%@d*HgrOIi7>r#Yi{2D%X5I0P^{k8lKqx)E ziZmN-Cjmpdg`845tSS1G@S#AphtYK?2I$qQ|>S?RUmu?<%`?5cYOAIn3vH&rzUo zh&;Ti9*n{h<>3eNrBT?MdkU{i`gmTSe36y&Z|IkYPf?`8Mib3zygx(0d`!v_Fv0c? z;dj*05Yk17SxZ1@k$j*axn01{@PvqebStgE(R#3=Gg#41v;d)GwrB&UYTv z7X69byurYkmm!13TYA(|p*pUGdcpr#`12q^v||-E0n|l@YpdkM>)M0l3GMlG;RfeV zxOC(5t1DLXRdDMXzN+?Y1j8fm`!5yIffK9=7+Mda5|ll<7(t z;+X59sQ9Grev^JLFc&W@l9vyWnmn`!-JMAE{ zO46=ZX*G7*7k1ii5o4NTB`rGYU-FO{7wE8|?Igzw2W(>(`2~BrTBoLCIH@p9dcJkdEQow*rioW!}N!!447vvxqx!0$!B71+F^fB}L}J)gEIEuE1f~zCgQi!ix-P z9AutEhL?nC!A`jovKYLmHh-piys^RytA+^#ro19HNrrlT4?^O_=x@>Gzz4X4<9xE%YvzPO%aa$>PP z%$bw1f49LS{lAC(9Nt-}<;H!@OjuTUD6Hx8oxLMhv%>^atHYPFiCm)FFC*^-U#d<2 z1(&A|*?)0o?@=i&D{EXQ|K=tHcX=q_MX^5*M$P;=S~U)4g;E;X93-;)Mpm0XB*EsU z)>g7?lp0eR!4h6+FJ{l6J;%@R#d?a`XTBFrw z5!>5#hDVT*)rgfHT#PR&e^eA9-rR=}$ZXWHYx70pCRO}8&r%a!o#W1(_HK1JFVyCZ zPm#ER@n=hmY5+X|UBJ*N5P8EM3{bsxocV5>s z2B$X@%}N|Jzz>?H%&%0Ta#oik*5A~SHRMa%V-0r6_7mZ&;KR|5hG&2&-ALyN)MDco zP8APlkSf+lnDvbu@}zVfdqHjifg(821<`L)>agktsp^IuW2*vxIx!KfJzOfIC4vV6 z&M2|NHP4)*Gl>kC$cm0@;{~VQP5exLd-!#tBm_&c^=4R-0aG}V z0S>w10}D2!j;*jFl}&JPR_#JF2ey(CNTfMswF~!T;kW(jPZ*AbdDGj9Pgc9IQzd?_ z5`U-?IdD8&S}Q{kT{-i6_4kuLVT$1$2*wB8C-X#MBrqitb)#0K{BrN%z`*dFb; zuxWL0>$+-=Pg-|HI6Ad{BOF2`-^y;Ap>e03i3p-n_!WNlb*0_J9rWOQ_Fnqi6}MLC zpH%U|zn-? z06e|JWvK)X_0cVw^<~`mX|%K7+}x#{9C2i9K9*Bsw&l^pTHGk7WEkD0gbjuFd9o#Zlm?Axv5 zE3;!4k1>DDN3jW~wPF*I&SK;6vL5w(^s`Jo(lxcuntgh_Z^^uO+wa+1&Q)=d&<~We zTH$!ej8yT0Won%az#j^CkjlFlZyNlpG@-<ppeQ@vHDXwsPbO672k$7uE2D->?eJ%PF@li{lLEicH@O*UlM|c?(U0tEt_+ zp4Yy;32a3{dp{7zYo66w{S&M@B8FG>*6M#Ncn3rd_bu|7(sRN;_)<5Y>1EAgU%qd9 z^^hH*k?q0FR<&nqwKo3kiZzqs&Z$Hh4ELo76cp2+e;F*>gsyGSvsG&dP%OI(qKFm2 zGKRFH1FvnOH64OWJap9;pRZZj9Esozds}lu0_V?>UcqRyo0pOID7?n%J;PVkD=djQ z9PJ}`1wx!oqac{HyIT+I6pf@UTD^2N-Kl12epjddF5m6ely%$xL8l^NI-~kj)}md3 za(2g_bf2u^uYB4q*)y~V5s$VdK$g<*BI(VCsyBV5H(I@z$Ygr-Y4Q}FWK!(*hl#s! ztkL9n%>v25jq9;_f*#)1t8&5vj5-kyG`PM3RYvknr;w#FM+Ou!-^5)v+234jI1`6` z_mchHdZ6wY-x;p^M8@{moHzO}4*l7glkPHmW_L=Q*o~E|*bX zDw`Cc1sf3Y4E7n{RvVkOAeb0`BVWWP_6beru+u!ZLO0UBWa2*_k+DT)3l+@)Hww3? zK*X**4g5Fo0PC?Od7@x$qu273qK%vJNH#_vxq`?)T7$47ukv3uG;3BMpPF0U?H!To-QAt(V4GUifH9D)!Pn!;x}cF$@aaRq7UdQbo!JH zlh63vkJ+}2R`UlgU0TQAo;#we@`B5NGX6A*TOBF!HxlS17kW?M*Iqs3eP7-ChbYN% zv^vfT#v|Em@h)`h#lHSw<(|i1`QyM0jF=fr^g0n*%=eiyS^?>c5ayCpQ@{B5<-C63nyt`Qg1$hWylH&ybx!MapyozAo|Z& zl(6F>HvqIFD1hz1Zb5~xn8zAgna5`?Q6M?2=NRA@=waKfZiC+4H?5%Tg?0B~t6Lpk?dD20LgVE{j zz%$m8-B{{YPJ}kojsflR$xa(?pbcsFKrOW|m)6o!nu@!P@Tr(+UvRp%WQFe7M*X)V zt$-<>N{p`^n`84Q_4viv=1mWwNqxcTy0I&g*P3^_9=|rb;nUmCYMOwL+kdFGDQx4b zy`cK1Pn}Apx)K->nb>O23je}`?v^_XI z=)`Th&oIM7kazfypC6AXEm{R+C2&?Wqs^b4Dksct)#(u=MW>4_XSxsid?Pb_M=(-| zb(qX)MkuJt4fh6DW3Vtg+ZrbSITqP~=|}^n?OA)%1F2N2qnvno2)`WdEb)65DTw*r zFCOI!|OGu14~8b3hzy%!qo08`{GXxLZ%>FnF0?QjJZH8rU8{V+t?aIDnyk zBgGyLG~FO`-b4YJ1p+dOG{~&(!h&yRa3vsCuBMyAwcgX{U>t z|4juV0v8Eynj*=|QrhSOn5os#&hHjn;IXqWJjd_pTv*T~B23i&_BBp8lqpG-BK2|n zMh>x205047AI_`R`G+Cc%m-vsxYo|g$xGVV6U+V+N~|ZCD#vMQ$3Z>;R^2$-M`)M4 zRyPI(U+yAnM!p@;UfUBK`7aQzPk1LOeXFG#A7k?qDZpDwzIIn6QI4GAAiQ{M>8&8*SmMCFy%aEyO4RCVEkN3HwDWl_GJw3wuY zhE;nu5O%maSXxxmB?di$=T%cpbOv$zwO@FZiVhYUF#e+fiVRNgDM#@EG}NG=gKwct zFcu<1WZ#zW6nj+7mDsYxrk-Z46ideraTH(6d*McIP48mS{l0Kv-1icW2j{quRa*}4 z3kVS&R#eS4KqFwbNoWFK|C!9SA4QT z0V{1>Sx(~b%w27?mF-sfx2|sn?Pu-I%6#y@sVxO{VySbF zK+ON<%YI_fZEsCsMazhbup?Pi*P+BFd+@Q={}0)$$^#X9l_C-t^-CM>wfd3F0kEmn z59Y>Sc{YM1k=q~76Y6zmCGmfk6{x&bX)dob8{U+5T!y~$r3Jpa1IdFd!;|4+6$;}` zj*KC3^|=AD-_acgAC_2#579YR%qtE8|6`JCzbF4<-6kcnZ5*%A-^%(ii^$qO%3ivJO>jc$H!? zS-nEBb54P2cC=J4jb)VK9C8>2FH&so#VcgmkI-}Yf23-3|FMFIsyK%KZjRiBYYiN; ziXE>B$pymAQw9c>%hRTX+VttGm3%zrdWuYD8wQzI3!+qpTJKMO0 zJji4`lF1pCoOA7*H%LyUsuvMaYW$oFiPM4+sGCbLehJ``umjqjTqe-!sw6*T>rYgf zZ^}6;6dQvs21cMDk%9!lOgF*CT|L^CZ{RC6w=EZ9Q6%*U+@~rPMs@u>JMySKlu#{Q z+Jy|IE({os3Tgg}c?yaNrW;5S0Y%}9u;+B6ppUtN6dLrj{S4Qpxja?e?~f#kmSptX zlE`MVH}cvv7=HwI^SS4(;&V!Nc(7jpg77od{X6R3DBN(Vn&ar2Y`vEooF8`I@n`X86Gnq{?ER1%~gG3f_T96k}K%}7~~gQ466R7h0n zT(k0H#L%=T24T#R&QWu5C0`3@EdG>qJ(CZ*y z=TfJ7wFxCXD*NU-!6$)^*bm59IBcm@B<1Dvlr0V6DYjTRcy@ZDv^swAc=Z&YGI~a= zQ55auk=qqA_wi~-Tgr$&{JszU>TDzWf3iq>{K<$6R(xxS zeG?@p%3f!l!JcLVRi^J=`eV|6eo}1lb?}@I@3p+i^tK}wcwb2tS0HeO>AjN}0;mju zpMx{a&D{@E&6V8`)65sUA8s)JyZb>mAL)LmF&B3~%rm2153yQWZ_e(1PB0$kbe?6d z(!;^9GaPG0tP-#8AhDA%dS4}qtc6Z{ZCz-AO?48I4Mn_Y#?&c|;X2LC8zaMXuS)O~ z4xf%P%RnY~Q;iKteWJG!g1}{V;J-?bJ!XHmL!5T5Grf}5V-2Nc9EErDt%wd!HSau0 za)>%pc&JerCLM##h)P^%{zB%FV&dZY-Cp(SbtJ0vc6_l^aq4l1)WRzHbg$7a#SS&g zR0&FXs5fdS!XY_i%`ys)mqueNWFAKb@Ulxsjq69tS2K2MCo#{5Ix`ACnJmC5pGU-i z^n+1?q0L;HVR1s*X1+lJ?~XGHSCEq&EhK=UE%4h$b2;2AvTq|mg~-0HpndF6VfHp< zhtbx<7R3Au#w{7%HvOkG>A(>4Mpd917f>NV&*xdcFbXf1c1iOuQw<1D@6qzwTxt2) zs^#*XYPra-X-bHuSm#2dnS<4b((-(}<-Jrz>!juD%q+X*L&n;&vE~Isf@$Xjy>@x1V9+kEnHRMP1!zfHuQxx6*(jNIeBfGj_kNj;i@^6z# zbznQM0oLn!jC`(Y`%=l#-S)qdkH&1lC{lRI+swz+hcfc_NQGO>dsRj0w%^5ZknB&2 z4du^w3OwqLT{fWDoUqI`)B~F_Cqk>l3rEp$b2P=pTxV0Z_*ise)>UlkvVa)wUKCvf zzOa%RZ5O*3`Q9iz6tbbN!2Dzc)L!AIJZCh3dd_>-<_A-BztP+LA+21@Nuuwy^gMpf zYkVey>jpVEB#HCJAib&r{|-V+5{JH=UWw$RCEt3>(9Ai~OD4!G{S=x(T#Kz&q}n3a zU#~%44qri#IvuXy=T@=ZRL*wV+QnQh;$2uT}L#TP#!=a#*Y zsNvF|YV{8>C?Z9^fl<=x@0O?OC3<|O^R+BD_l})am0GBhHGSv@_-7w?+E1Y+CXXA% zg#|s$XMCndJt>6YQO}{UiVre&Z*D#+`9_~q@y{@@0#Z)ZjaATFUtn^o8yocI{kafY zL8D+b4mJ{ED-!c>9^I7N=-*rkg$4iLrhXu|!L%=VCE10qhmT~UEj(!>L<`9SfnxPZDIt1i!=(Fd*Q(c`Zo=qx! zc8fov*v-2}b2g6TN#S1WtZ1hra+=)dqf07DXgTg04TOSgTz|NV;o(cHx1G6d-V#Yh z6oP_h^pHbqI7{VHYx$UjW_nfF`-{>zGNCqD)&Ty58ijHS%$;m`<{C==d$yhB8?rQU z0!wQ^r(s>~gCK)4FfP!e|!C5wuFJD%{i9^~<-# z{ct1;=?z6qK%auOHVOU|iam6)U&=KC5K6T~zwJ9~EA|7jK3N>tV%m+-r{ig-pq7QS zR;?|7B{eFKu{~_{ckLTP-}njQ`=Mn2J=rCSkgAmVXyH_rD*Pv};d1PN(R&x3Ey5Sr(jfUxl?ykBre?dP{h$%PSCxRyyl$K|Ag}t%cZGRhrqaX@T z#NiVipz$60zOOJvnl&M)J=d<5H>#uT$Rh6_aEcm{(Sjd#4p;X?;Vk@$;X&T7&OfQ* ze$q@{kRD>5 zzHd{sqX5waC}v4>8xm?@m8+L>>k%KvY!&?r{;;qP-3G29e$dI zqlX?rt>X9x*(O(;o8AGEub@&R%UUQWdEN8n9G|~(wrW2*raw+M2uL{BY~tal_Avf$ z9o`_}o=qr{X25769!MM53MA`Rtyn&gRy?S%r1*8!MR$IJ+dlnydvJw&9Hg0*W8>rK zCtk4A_m2Hzbnd9J7iTCS?Xx16A2s;5r1RSZ+#@_4)!AbVJ_k>0C07?di$_qS>eLjPh8w(`%&QvO*p)8Oqf4R7#Tx+2C5&SN#~ z7_;EX%z|oE8W_rr4KgV#Cz%nm5e=gBY}|b0Y}6brGV{uAq3E8TF3;^#9?W9GKdbe+ zB{I;=p~b%V)neW8(%bZ{CAp1}hg~0vozEFZRM9%HDcz$WfxVQCe~Lb%Euf!zAsc|d zapA@0)0fJ~_8~`PtQ1ln6r-#uC}v>?0yy2X(6oKfkXgws6khdQZK8zJO355o z$hXPVAQR+E6ru$28V>8u!-}x?@IL0xb};jj!!9DKCU{{-FuI-%CSnr6L`;=qQ))tG z`*dV5&4=KIw(9KMBSHpy?0U3H1C?X*#S~!$TO;98Q59;9yer?N1-Q&(cs+y>?2LTwGrpDs!3G)0)?}O(T^ujKsCyr0OJa2FmdZnV84e@@ zdNoQ3$dQ8Zw^VqAy~x#h2$sE34J*_!rG^%oFR=$P64!7B);VHMy(CszUhViu_DPJY zBQGIOja{8(UUfvHLOmNLE%J~ci`S+vK;AXVI99@46T$Q-p5&(XG*42_iO1Gefj-@U z^r4cRF@p;)H z$3Ybr6izJzF2+)Wh}l|gtV+kC`O76T7`7*v>as%&ZH1cT4b{d<^VjK@FDWpXobQj% z%O{!>HnFeU5g7HV^CD$FV_RHzntrMf7F?b=V!KqP$>ud4YZtd3n@oo%7FoXtm7SLn zc%<$S;0by5%sr93lj5gww0e_Jh35190e$9Y1c1@bn8~gtWB01?_DNgGJ%AwAr2+_4 zsLGEQm|W3*GM`i*NtJ^_*>~hy>kysFS=X%=5g9Jprp}Aq@n!Y+v!#iHR8{v0sxvG+ z*TxH>T9l%0IZUK#;!ts>enPWD-5JzFPB4!R57`r_U`2rb~N1 zdzQo3)T)y&_qNNWMkt7xayPYl$ft6h78?1nzY&Ib#TFF|)BGg`3sF9A znQ*47^n%Dhe`Tamm@6m{XDq^vHCCnhIr`*`_u!-7+niym_~r zoM=RXRl=qD!Ll)>Isha6i#!ka1&jR1Qhp%S$ZCF@{Ed-zQzCG)t{?2`^#I!bjF__q z7We4%x#j_&j7|?a>UFx${f~Ol)#dmUslULS-U&;{h%lWE3A7w^EwHw>>Ws*+CZBkH z)GDX6htC)7hvVsrRX+BNh^z7kIboBIv;5>V`z1$CzhTmhaAlx9tW+gFM64jepDNiC z06LD~p?lP6OBQMBkO-!or9l*a^YKaw8(nZLEb%}SESoFWM!t|3f@RKT_Y~*K%5^9y-L=}N?9kq zYkUgXrF{X|crC-*X!Vs)KSAnm%}4qs&LVQGqUgAxFpsh#g=l7<#u8&I%(X5te}TA0 z*0CIM8|AP@TmtSC|CKc@{J`<7S?~m&I*QCc*!Q;HV#ZU4QeteKSc3FW9dUYch}I`3 zFjqoL9f5l}7<+LtB_1!~*C`5i2!5nShn?QW8%OK08;kg1Mt!3@*+R2sRGktTqgUNn z5*gK<%RK&#RBG7>UdQr{W^dz7e0Nhx@_y-tF}}##INEwu&^<96CDtt(8qg!6cmZkj zx;(qhgN5Xsz6n5pJPk7kboi{TkVZ@S2YDL8!w=-?<~aqp?HV19OC{E#42`1-r%Y9L z#TK;2M@zv%<2)q=3&k0J`Y>v0kY&%G73oNZXh4+f@F{>5YtrJ2X`FZ zb4i$rF2KwzbD7{^@Kd=@tzW;OtzzKOneN;nucQp>zdFW>?8 zcM9KSUV(=MYq8#;e)1pQSz5xK2jtPK|y;3;6$X)3+wUSsofyA1*B{ewjj07dVP%#8D8)yg z5HZa`WisaNwii#!45Sg!=92W(eRu=whgQumz=t(>eSj>$*kw)*^m^<*H**-jICsWZ ze}-RiJgrw&*3*axg_Q>aD?d0e!&c^CwvK#CBoGq)n z?tt`g!Fx91jEXZAS(80*L9I}ab)VG2*M~OxJHelA+Gu93BhjVb%JO$xZd8%SXKOF4w)%M1 z%`Ry57tD002okb-&K}XiZxS!b|1u^zWev{+sg$GUv`!#)ImJ?K!%Vs(w4R{8gXhCu zxenAJYDY8qN@5in56H-2<}P{-@xV;FS*~E78@KsF=!j2jmv%>d)i9IV4*zf=A42!c z43)Ko;&FK&DuXV%U)lrhH)wATOu*XwBK!kqePs39n}gr4+I%;U*&pHeVhuYT-zZB1 z#wKcIM>bd&%Ir@bq=pQ)6p!Ik#x3zx@@sn)#mBoXm<;w4$AAuTp3zt*g>dR(Y`4x@ z4@Ohd14g?M6A!^?GJl6-v@YJlOgJ>UI~4Pl*oJG*%(KzI^uXVQks5{*LD0H~XJehY z5`v8i9;ZTySFR+!J`e8h^1%6rNL@CXjOLULl1&LxH0bW$JhG;f??`8j2KidR!n+(M zAX5p$OS$Lr$1h$W*hb+)(4wG2L5qS81uY6X6tpPlP|%{FLqUuB%%G!LFe7Tbf)#^e zQ}{xTQd|4cb{y_DZ*vlCK^ zcFIZJ{=(p-RXBrYFvTZJUs?s&1abg2H~e;+*KXVJDZJ7Z9#1LX7_QsEP7R8HL%(6sym;gUJ!XxaB!XX>Q0EXmaP>vwna(i6v zTPvfD3-U$wr}UWZKw&$(f%9dDvNGl=G@m*!t2ODTnbL zMyDX)%bAH#d{ikaM}Fh0ps^C;4@5HcNdL0@j&Gn;%F#!3&9drJrb6PU^Fn)ZW2$&f zosGgzAYrK>cu!~K3_W&{Q;$6=h%|Oh$&A=FC+P9p*`->PXHwacIP<(j{mJ+EOaRDj zP}cS7vQ{#e*j$u!5h>sO1gwCbQBLgkOu1Ua5|t}ddQ#<8r6+|?tGqHhe6sd}kIkVU zO7Q*5R>Xgm9q&K7HgsNz({WHQdo%Jin`chtpa|Lv7Y$x^i0^Cj;XbX>%Qi&5F)ne| zC7%NP!)KsD7sdx;VfZ*~JP=*CSR)v}$$tRQFi>$_AU6;buG8fvkDC*?(PMW>f2|zD ziv2P_*@u~{8rl*>kkzo4ngpqJ9@(!_`h|8?HH)h#6d!j#5aD}OFkL8qf;ZUwp0nDq z4y@{{92CBw@<-X>Dt5md*#P~X#N5(AyasoO2V?`EJ%1^5OG@%D##Gg+Zi+b)T!wo)Z1s86Fb-yf9qoIT)dzLx1*!-Or&vlpFdv zG$1$hbLbduLS;MCQ>({+SfD0!QhY3-zWf6_XT%6ua%ql?=jTb0Ey+B4IQ9zGdduPn-OX!rRmeMajfE&nnP z7)He(rO-e<)}8FWAfu2LXydmL7gdn@IWc@Ik^xdvjym1|dnH)0=vtb4$3i9F>Y^KN zU^kr!Mw(~a?s!whQ^+Bq8q}^YV8vk}+}DM3OX#o)M%A+&xgoR$y3)oJws zkp@1*qxCOUEQP3Ir98Vdp%X>Bv5wL>xx#kZX#QM2=*^eYR6%gK;fZ`rhm_9%IXA$W z;Y0_&O{{rt5C~I3WHo<+ml=-C<`xu(DR33O5cUU0o^B!DY|Y%&(k+3reB#cjw`q-+ ziaLooj;hUb1dc;ZW~r(7CWDUI{e zE{OQ<_14uc_Kb{~k=t+VN5gUFU|eV!yJ;-^=1IoghqB6Y*q>alqme8o87L=<^=`#x zWkarS#b4Got^Q+~Q@X_&Y(;Vx4?)i-TD_=S8wGy_8NZSq3cP3y&yy)teCq;mYUdS^Kz!=+WK>bci%)=iXukN0 z%vSg`J83&8OXmFvJ9U8Kt&)%`KCi3H2vY@Be$F?8;GHe1w_6rn<&+jTNW?ihyZaPy zvyoWlrFQy>4c^v`xZjzy=w&q=g5VCHe8#tn*AL0iBJo0cmQNE=xdnKhzD-()wFCD% zq)oiJhZ=98#^q9-?SiLlbJJSHGz@RBV$-BWOH{R1EMt3XY=>~ToX##oj>-Pv@^cS) z;NxN{R7|mM4EqzC$Gkl-@d|LGw>2N2a{>uJX59`1h?kDSDWpn3IPnQ~KZXDExS&PK zdz>4}dxDF(8oET9Sxk9p-msR9*n`FYfZw&OZx%IQlCF6$HNU;(?3xQ6zZ1J8vFw3peH||yj3BqJE>Pu@$6^G$o_>~|?)?C^;P&g*s3z^9+JC-f{ z#m_>j`2P8{|7_5JvB4Zi1_XV^Itr7_!VqMK6ZU7ObbqNkRlI$!wE1u=LS=?!?-$IX zn}dJ6aJcH*b~-gsI(3{BiT)7x<^ebwGMfYG*xBuukIa4NV`bu%Dt1bPSitMdQ!liu z0qLgkM$a8m&?Gys>*bTc2=Q_Mt`o*XcBTCYNlsLn z^GRZ-PRnPzVJ@xQkE?(iL^umWh>;MVvVXYhs+Er}*@fOCkcwrQNJa6!x-+tae_;RA3sT65w9CEqgk9RF z=z4=_PNfu*^VC{pJ4r8k#wx9svc}x?FLjt2`cWyoqjkzx>do~PSZTYD`1{nI_Zf71RQKHF~Irq5E{FqP3mg9^u`!}sW+-D~44rH2+P^ht@a z!twTHf_?FG$?R?RF^DZq82PwSt@zYG{N~bmz8A7Z7&bGyKPNmqy5AWNMfc~12S)ej zhsQ_v_X&@S?$^Tkai0aDHFqIy*tPoSXjKp68oVsX5kv(ly;E*5s|i=6lI%fQ=D7%T zLhSC44JDBNA_10F%<6#}utg$l3c!6~Ic#yfNjfo%wt7`fbs~t0CIGbN$d}9t-ydhb z`BE46^Pc69AAivivIfrHt2)5hBtC8uf)dUq@p0$N4d6D;CpUTAxVh1zPnFhEy)X~L zeU{1anpr#4^qwb4FeP1C*tXb?)TVKcCnYgj)j3qv-2eNv6FBhT19{sk@+;Pye z|C)Usu|B}w-RP)17`;B94Ed4E%vVG#;VlAZ&Ew}b|A*%`ZxNh-mEmk^yr4;X-r)>7 zAn}aC^VFjn2*qz>2!tA(hG`Z9Vp)7~)d-pFJS*33iZs2q-J9RM4LFIzNg*fifnJkV zj5N=qRvoLFArAXwv7YKwI9AF7*w$za@IERZk7 zK4NwtxqvR77t@QZd!-fm@k<QbR62B;-+scR1wI@ zhR?z$NCpy$>&S;E6_qvKGiyYgRny8_FQ58hUSm5PHZe_0jk+Pi=*j+h*t+9Ppd)OU z__~_h%fQ_ZVU&Yge`EyvOU#(U((LdhMsulSY)-_rw;8flTfV!`EN3c5^k*j&)#9fZ z>j?SG@b%wpl6{zDxw$6NK4f$4^AD$=sRAgrbWAtx5a3$|Kh6k=UR3ba+ zRj~IN1>3vAG&R0|%}!R)mi30~Bv^|r>-VUradjOs$F#|z_3VPDTACESV!4ep8YO;++Y{vAsO%{s8d z!idIaB77SR#5tp=1SI(jqUUs^8}<`%Gkz7(^6ZA=FOeXTk$&di{wW}A2nWi%bQoHD8amx%KF$*^$2jT500zu!C^&H{^s)R7L={(0ovh@;b9pwZT?> zmhuNv{>|y~`?3nVN?)BR-KJ;Bi_0uVM05i7__Gm87+uimBmorH1)iDb418vuGc#pB z_k_^hL(>q7+)+WOWWk0dVJ|(8f;4u z3|A|=b;D}eErxNZmmePqPH%V`;!yM^OWC~Jlpl>bE1Lw$Do8+jbF)8;UFG|tYYONUAa@w zdA{6so|0Nk0e5_e>n9Dt9$Pc$4Q9bvk^I^V&(R)9Sm&4nVFmz=6DKhfWWVvIf{*1Wu5o zfh0wa6IV`HhOTRJjI9cPeJIiB@YP;;RwUP#y2xqaC|>!6nNYhR4_VST*t`ehSHQB| zXimP|<_90nE=lvsY_Bu8VL$9ocI~3eY^7RpB~tfEIZRc*(N8(i|AO$-T79(>$Qukn zA5;Mf-I)2cUr6?Pnn~l(2PG42%x6auPUn&6vYV})~3`V-*(}28;PdF4Xt|F86O0z!()x_KI ziLZeUIYGGjU)Jd_`^X=AO3DAQ@43X%UX%3Lvns`Jd?581TYbj*tsfg3w{{RJ-M95U zf1lNv;-cT?%qfXaI7klsI^N~nYWn-MXI=*4GnEb%?9X=soLw5fV_tp6N_$R1)FOiC zK>V~5h5GXf`CK0Gd^|UAym9$oobbNijNv?mEQFwh%BLgo01is%kx-DM0maj3bcF~s z;Cn;6v*vNhftKUej!>TjE%ikYI%W;zGihK~`z%*TvI<`_5#09$!ff2D20d+a2I*>> z5r{!LEn3Lhb3&Fn@D9;7cMLox8A7#fF`L?R&5Pv_(7f9n?6Z#je@@>Z^HsJYfd5aL&lqa;~nteEg|D6!u`lPc-a=bMprsB@aQv~rPcB4N}W=A$gycc z+*twS(7fi4-O>RZJ&1P;4`P4`TL1-LswL*X$LaU%m<6-kF3=udKh=m_7o;d-81$@| zUF|pCqy-Z~kkHbC5Sqo&7H5z3Kz(Nu%}WLwYpuI{hNC+EVIpFF0~VWJIuGd${jDG-RleQ+|Sr4@DTKumlT!56^EJ^QJXCLpsIa zLQldpwppiA-)#eWxJ-dbk*ACXX(}tB*{s;N$v3i%sAvH=f=*vqTi7rE&Xs?oeK5eL zQbX%QQtbUYLnEB|zdvQWI@wSJ`FkJ#$ntx#SUb3Bk{cMJDmTxwc$SZDPk;2FeDq`f zb?c1lBik`I01V0r3duTB5g}{D0d5TzQw-Zwz-i2@Oe`g>4vvJYEvTWPeAv}NDhKF7A$l*PWf@5ZpDXm<{#-ikz9L!~fbvIy4RFowI>Kg;Ius2}>mTO!dUqYc;*yS2?&G7ridNB+KX6h|X5zD=BHOKNeXWFxU}Z znMUW^8t`V2#aLw}hcPByz1{HtaBl?`lV|ZC^5k5t-p>I1I~akXdJGs5v$?}yM0=$r zGwY0US*PcaPy0=)FS;(pT+2jjcX1985P0=m##^SrSN63Yj|)T^hbp!-f9}GLRnZBE z63sbYsOS%efeDCSzqKP)KU6Xj={h@LtPD1HX%oeb z58l~~P8==X`O^oGn!NCjJEwCMS@a2NaO2Ltv?2`^u?Cr7^JW?Z17g*8_{41fFh_f_ ze%UlWB3NC`J#tYHB*A1HsL=Jl(d;I;;f($F83gyk7J=|!J#`$CQ3j3ueH{bv%s%f^08K|=p znWx_A48Eo|0(3Q;0_Na-`mKof=i%N^Xy5vAY_haXHOwDh0+nCOIELa*{h}Dp44oQ5 z&+Cz0ij*%Te{|vE*;=#%0tSm1h!nPv?1hVyUy=~;pgVQH46F~A0rouW+Jv>CxSCNP zF1r<*Rr^hX4R~xiZ%~`CsXifxxblD&c!Q?W9$K5_viH0JlsDcO6C-rPaAs0#*v~|c zAO4THlMI3QPqNc_le=YtD|Q5k?Jh^YR|S%d?fZ71=QLgO)2{3OBkD5hRSMOy7XqxYyVY~LSUIuzjqNZG{thuW)-F)O$H{R*5h>-& ziQltMYxtPdZp8X;VON@9?(=uU?z;1V-AAA3g54{KQj>-mIktcxdhI`yDhrkRZF~TE z>cx*9TP&ogQq_t(YaNNQ)mptcU&KeJQGaJAOI*;%uSrqs^*7w8^%|3#iUj!Xf4c%s zO|Jkg>Y?$Q&~|WL)OjeiZ#PZnC}rcia$^$+ZLBo%K5)%4L3N(Z z#tLmB-t&2bfs4^eRN=d81=n%&k6J-?{|?pFRVh^W_P+lR)!jPbFjP0CC#u_<{93?L zP+b-vuNLS&QhK1eP<+V|c#f1VB=>sco#X@ZfoGq#XgfE?)l0fC+?RgnOmUoeej2@1 zFTq)TH*VVo#>(KfKUV@Dw?EbeALl(Pt&S`f#0GmtA+~9>FZ|;ki0%KkZGzHH66`U% zxC?VoXuv^;-pFE0V{;W8#w~Ot#D*^eO^(7c z)wMQ~0hp&O>BcZMV3@b4NMV?NW-v_gVHgI>RAGd7W0+gPFe-1dLq_-CW0=-sVHije zhmBz}c*Vvtf^Qs~g!_*vxVLr`Z7**F%7{xhfu@-DRUL(a|O`q!wh&ES=NENrzn&gY$49B0W*H(vRV0C0r8 zef>9u9RmoHJ3H;>Cg0>Hs_0b?oND({@E5OM0_fPhz#jmJY+-_Wk=iXbBNk<1tbiv8hJ#oWa;-Ddf{F59Qp(J zj`NFWfrP(ot4{?QR%EYlUq|!Dj;6JV-8pe*znp~s)C93)%GnX9er|7JZ};&v?L%Y0 zXl^VJRSdslwV$JBGkjCMtc5UmL2WXGYP-@x?9cc}U*X}3Q(u<^GUbSxLWx)zyefXo ztB5Q(1Yz7FOdio`K5e)#fmR9=D8nqm;Poi;{x2Rx$ds0)W^~?^i_txZGb9qaXf6Lx zBn!pn?%$65kk!bXM<>5VRmiq=6OQIgk!aD|a^aD>O-mfiMLV5y z2MaZXSwdD;-GLPUwTYWW%Ho(2!zyE?Sgc9^5PIKSS|a8L8CBA9-8dg_w}!1ndVr`J zbW^MUNT%7?u8xY&b1y8rTCSCOk$kM&xU){EoR}>StVK9tO%rqW5>5gJYI`u6a9}7c zw(M^4Nv`H*yfhRoNl{an4+jt4-pwq4X#)9ZSbK0?ojoU5*Nij|GsmoUy59^1F|FCe z=xxIcU!TN`m}9BLyqGbPacRj}n)NU4`>d|uMIYU9K+;5%s5MLlR)S?agRu+s&ELZQ zN{Vg^%DEI^eMG9SHBg@IYYW(3RDUUc*lSge_WwoiWFVz?NX~y&uI3;WE)fCnJu)4{ zb|t2vqm%zY&NEVBx;~{v4TTBM@Mb16nsMhZJ|B=T${dN@uAI}cJ4-Dm^Ya&wvAsmk z#d59GGxV0@@Id$reL8(}-Ne0a6o_m!l4D(tVu-Csf;mLtWc%HIbH&-59T<0KO4KV1 z*SVRG@EV#be!NCTr*L>CxBCGhdR_hGIa=C@mnLhG-H=uq0tiwBX28;PrKfD`rBO5R zLgnZQoUEFW%iU01K<1mT|2CD{Q#ZZ8#JgweW2oH49QX&Kh;&TD=>9`UX73_jTb7_T zYkb3+d1rVEUxq%IeUd(X4TSOY{iLh5A1@O>UImCfoh!5#{HrUY9bW4=b7I%$X4d_x zCYFzq3EN~{#_uI+M9@0ZF{WPOOncHPW^meMa{oPMJ!IWv6_-L=D3u$+;_4(`on@Z! zD(mzW0S$ura83^78}kbGJtANcFg8{jD~*jqwt!&JjZ$a^YnIdsvmL)awrNHl%93xB zIf%O;$6jo*fPp>YZha)j&Zl`nJR4yI&xOMBX-K+oq_PzAZ28k9CYCwIN2W4bBi&*f z8rJ4mzn*1%ym{z1G9vAQDSNkNz4H$FM17ZSlWfQVT1Crxo%v)L1g5c3*?Z7n0SDXv zE^_KKX{aB<#%K{D=7f+Dua!25TyjIIICwFW(#cDl$|bPIAPY|0^gVS|Qdz`hdTBxJ z!jdfISR^a$l|ZP5YPVjo!Q5XW4P>kh#@b-4Ui&>1g;`0iu{)X!rK8Pl~G1p`ACA(AeGQke!Xi7vD z)}&A0%yH*Via{SU`fl3mV*%1#XM$ZrJPE!M6kRTr???YGUtHxAJf`&0?S3nSq)&%c zG;fw?=wKQ#`$oVGGm^fPB~HW%>)!ksJJi?&b?)8k@2o_xLys=#9GwbZXs$m^cH`{G z$pHL-vi5Kv^yh~h!^Na{-3d>WRp{KSM?-uJDKWtO2}5gdlIFSGM%`k;m<9uxD@NKY z2-vo5iheR$_SRyvx1HA<(e=4?2|YO5Q#cj*#OzbqV;Qv&e)4zv_tK<-6|qB7DEhM1G)ffjoHgZOkL|si%5a&RL-)J zLcRCK8k!7AwsmVV<_=w`oht;rick9suIoh4~lcuA=pi8Of4S3b{AElM* z`f_PG*AUY0(Q=LdDpjpLcPQl8FJ@z*Qg;vew#fYPFt#eV4>UIw8(u<%EJDsotcZhi zB9r1{&IlS9a~%qL_RT$28CDUP-8>{iU|4;#1-pIc#qlv^J)84Z(Ac1wV}gqa0Cgs=!a%1X&u8J%F8vlb zYrxYcy=<%YLhr^LqJ4?}kGLQCpt~$-db+HK?Xpml)1#VWXUk7#LuE_HyHnXZ;FmpE0ndW6kmu9c#T>oXLoht6fCiru z3Z57UE&3?jmyls49b8G6T@304zG60fWwKI;7M-oK9!$22!XCOQvZ!<-U#UgLnMo}= zG)H6+0-$QK>Bik^VawV3`F?y?w^CNVZCQ~%-`KcRDJKSG{k6k@lQZ^Nf&}=tCEVX! z(A0g%9ut%8p4G-qhsay@lZ@3EJKP%*7k8t4@A5bHv(UlaVc)%^m$AuhCOnF$w`0B( z>EFb%%fW>TMniv9EAKPw4AOLCUncn>NhVfR6z{_yaQKDx5!dMi?np!&{>J0vJlrsg z=~M;wy{Pf>LCE84YLeHGM*U_Bja8@nq==#9EI$>rH|~ox+C$za(lb=JI^77%X3uT) zJKbzz2}xM6rzyu8roDh`u#X)$5RP`_X)lEOyR|l#-eLhj#Ic< z6WyJMhKFP8yY-hl-H~Ce=s;6`0Nugu9JW9yUYU&%Ma)KYDIxLo>JgXL0S9WR$c zt3WP&Etgz09B}%UX<(cgS~wkGRjaRn8rNRlRE=g(ZXkZ;msWo`#KsC`7#J+W+7(Ia zZwN5lT!w~Jv$kj>-y3(|^^9u!>#5z8ygyrt&rbeB6+L@@jy&ch|CoMs$fG0q+w`MT z9-YZW=||Nxmo=Z%{kifg*SbaS^W;9ynlAVGa-VNqA@{xHzLy%8{k`SBw{@YU_mTTP zR)yTFUKdy=%YC7w7g|H)zOUT(wKTbxf7><7K?GW)Us}Vvw1?TbqG*P8%L)dlB^`kl zV}q@tk;ck_!p64w+T=|vY8kIh{>m#*FnWeBd%h0wT6-B0bg*oNF4j)b&Z4=?{AFv1 zW24Qz4TCVo&hTkvvE#PPHdx+nE@%tOUSNW~w_ZGi*`F+Ok0KZ(UFplGQBEN_E zJ<0FC`TdpOQhu-TYvs3r-y8gP@OzhElHVSF`}iH==VC%QR3w>7MM$eNx3}9VUVrn9 z1|ifGN%c`w7$ep+Ic+l;hIo{UNe?RmD z3Z=&D$2i}1z9Q#aR>_Wa^x9 zSI>3mg1L9^fkHMfg{P*M?bhRRutDu~L|dLZ;SLaohlA>6C}GO=IOMjm1UbhLGiohp z%a0n~XuGv?s<6+twA;LtR*IPPk7Sb5xmS+ta#P7B+a@=JUnI7kalL3@jiwuHGS|T? zG?%WRQgN-I)!)F!%cbr9hL6LS8iARTh*N+p&mQgGN&miN*vk0)LDN0}tHBRkOruDMA8yV<4rmRk*2)3We4$xcEuCc#7mS4A@WdHp1^~W1qsuOS8fl~Dh1;C)vfZ)B z$?%W5`2%hmB1iaLR+)@N*FabV6X?p;VeYSk#lIZ~`+H?A!D8ro=Q7{nozRKZ`NC0n zI$wGQ#2Y}o0mR3zFUoizfTPf34~ATriQO}z2jy4=lQeV>%xj;ewEEJ7j4ugOX_Xi9 zlcc32`IY@S=f1Z{c%B4amy2bj!tK%n?jN_)-R3P2bGFO`^AZYAyR{R)FEjD`0!Ad7 zukoH@AP9ZH`O$29fdN^AKFgA36f&cVr%JkzYlF-!wOzQyxPyLX4uQ}O!pSK-6}F&! z!>RkRN>1Hrnxm&pHRbeXWts0$lr>BUxIFXsa^H{hSjU{x&0nfI3h0B4!^W15nC6WMbiq4zbv@r7x-C;nXS%akI6ui{9z>sgaI7gwO#I&RUn zL#fx^qqewnm~ZJ6ZhnVmYuSp;o%(c8(wn;RjqZSOU9#=*zp))We}bGi!l&HkiZ3KU zTKwv4&#v27+AU?yZx-%{xc!wgIqr0D(C642oL;~089r`E%zJCx`_wQS57!A~u5C3i z94*D~I?8?&15Nkm%0|bbPtONJz(W$!f^+*4xPijzi1(*mnFISs^B~#5N2%ieSnEj) z^~lgv@g@euXgBx6A%#>B2fru34gU``9AuEK2;q*(~7VIhD?fn9{pHT=*x7R?$gJEtl{ zqpU&&z;zQHxfHy@Ib9W*XD)>2p!f@w93#XIsHZ3Q_ziy&Rd2>oZwsIhLa$>}86nro z4@eSzLtr2gsY9{Ai=pXXva5uQU)&Lj{o*<1RgYDFB(Axov9Z9@2pSf>c_<}4h*f_c zijPIgP`@HEGAHX|!{0fYEZYKbEgT)8*!B0OivN5L3oh_jMaoyXkl=!xo6XVJb38Dr z2`=a>@W%pA0tq7R$PZOr|DqQC1FVbg>UJ61n))_EqQ@3SeJ_JqVOI>zqkdmqr*g{J z@GBBUyov&GeTy{Xl6b+v3nZgsbr6@em6hnouMj`(a*#jdTJR~%60QDC$ze=+dXiDU zRlXX}Nuu+Di?mmt8nme-2MZiF$(3a*Vu1&AW6Hg_AP!AWgitNN_g2{fjg6c%8vTWY zIgq0VF2fgm#?j|?OysIDg?L>=oWtF6lAQ814gMjfvK)%>K%?ryx#{@E1^X}Hq!skM zg$v8r!q+geWljQZMjM*6PQuZp5`LotF0PUiVwy{iDQy%VH7|cp&`2j6m z&=|-gXiXr$cK5dv8hK+2LMb-S3gQhc7aRN%Otoi>uNv!HcvdJrCp+Yc+^aFgrApwC5cx>T2=yoK#<4S|edl*y>x@3}kue!BEewCK@xkbmWEAb6JmemtP5&IORX z#sg98pQ;}-r~OmT&Wa|$X$>O-sli|`lF^7y(V!w=^{h`7e*!flG{Se3WV}^24N@FzUab5+1j0di|1do!$WbE=AfhUvS345Vo%k6N=_GTam5F7vhvG*omRaNcZ@MhA(py!yP zIOS16aX=|eQRH}zKphkmXUs~FK~RPh9283nMH4zvRBATUWR#g!R%nCZh%;y=W*H9Y zK^joYutDD6z1F=C2cDki`Cr%jUElj%*Y|EX`?r7VUgN#jT6;}b2$p1Z-iGUs6G{HUdKkMRgb&hSs2j?j*$uB7HD*y2a1Mg5~pOTG2QQzVCa&C(7FxNxxp^? zxMM?Cv~YjRevwqL1^19P^xki_J>gH0CN-SL{^hhaBqa|G1$~rlQ7{?`;*I-%)Un~iL zQVgsVG~TJDER=!`b%j=Fi2!NE?F^m;P*JmQ-SB@@O(CgfEt;_ZqMH4;{*!9d_8rz; zsQW&aTM!|;4vQdV9=ZK{hkoKA5qSiAAMJ|7Vhr&N?Xc~d)K83CV~ni{+ak4OlO&l< z++sra;US|fI4V?x4Z5R3Z{-AOKgF2MeyHfCSFXiGIq@e}?{v{)vz zG8dq^c!GBe?rY%A@7XbRB~b%d=-Z1#;+E;nfQ#g2AR)QB56 zk5E;;Ryd$94&W&lf$>T=>_vMxV#q#>n`2=MtopfO>I!-92%Zf?_M;dg;`Jl(3~%-g zKrZFN_=G>HhH_#YS_fj2QgGx%RspcRJEm zN8fu%yjjqEE4PU+ z@)u0)`1Zq)9?kWj-XT>4PqexJaRW;cT&%Nf$Lx7OU=>Tj(Pq5We6tZBJ+Zmtj=`3& zk?Ttz^4%XULfRJ|;!=<}5>umSveK$z+ex^ON3f{3aW#v4vh8aaN!^6Ne-mA)Y^*uM zH~_ueY!A+n%_a20Q)xyB{huVPJuko}H?*Upn8#G#my;`j#K&+_M_|&mDLN60fzU*{ zhUr!L4k_yA+|eRz1Yjy!IudUdk-A14AcfJu0>Ty%6psb_2N)tnYps3*JyCHxihZx+ zAp&(##}XfaL({4%x_Bs_$UX-rXuq`9kHI+WIF}`!SiSXoHP($hJK;t|eTbgEpM^Iy zv4yg$-P8$10M3h+*VzwzM|JW{_~G#aJf>)NL-mZNZ}o(bW%dwlF>QQc40$*(7o)p} z?Ca(_>@S3UGj>NYk0}pE;t4t~OHy~2gF*Z!%{HiU$>-*S9?<>ufhte=i#4alAxCQkmXZtM`_{QC`|ZR zdt+N9?dnzR8+?Iha4{ z+-_}3N>TX8`ZxYYO%nsh*k2L(to~VWaT9Mu*h7rgcBXto4{IMPQ|uW1GhBwa)Tfcl z$csbv^S)ZCEe~?63Y6=ZOxhido$+|?UxAmK(NlP*?yttbtN}Ec?k$SeX)V=B_HQ0+ znW1>bLVc!&o_P1bWII5^0r(EGu-4#Ve+L(Mj-&U7HFz=%cxxYwY82kI*8sw?yii(j z$g!zU1Vpw;?)E%XNU}PnnmO2Bj+zl_@})=j7`NOGz>#CZ-JNz;b@oeE>DUh@$$y-v z+C%J1qz8DNfHoY4pCJYK^+7MizD$Zd?FAhv*1S`z^bbW}ys?RX6@9^EJFL?2DE0LE zSE?_c8pH9i924#Fh9^ol)wJzICsCzyitvY-Qg+?^! z$fvffM!YAgX}BBcG4)xLgK-FK`v}O9S4Ix5Do0tvwr6$peGGh8ssAn~SMU$tp~Qu{`HU5`2{MH^U)UmXUVPmD}4YahXA@}Iqj!wpRB zDcTu9*Po&5;Xw^R?W)z%P4#u{rRyo$**`(DSNqs-VS2{58{A#f-WTwya6kO6fosW4 zE#eBF0+xc|{c>}Ek7oE4-M@nd)}m_8;SFc+I4pkumCFcWsFNOq5uk^OJM55b?Hj}TYz4vQrIjP%tbaGg88)95?kB@tMcU9cIjRNA-% zmwWI#i627Eg36JN;&x*)+-W`>4t!IEgZn%z0^_O?MMUEP1g{H77g5m#tpdWl5mC4b z4-eqF2G{gEkKYxT1q91z2bl#rWXIVa?C5+CKTR=>`vK8M1a)`42M)h*^Uw5_?(f?T zc^%9!i4u62{YS#)9L4V}WR$2%{2*^h6zosiAV>ih;t>7zQ3zD3f%@Th1Q+%jKo z4)vG=F$zwohmkIhn!P<1;DWMJMM{ZN9JPHSkex^+xLJ#x>vn~&h?&)$<@ckdsU zuJ65hCP+)yH-`tc2WnTDkem0`{PGh_khd=&_ri{EDB1b*zJT4*?p>3RLhUNNTS(Fl zLBjM*@4E=k;-@!eVImq2G_?TQ?pHsQ_PhIZ=WcN>9(9^&@=dZrgyNoY_#^VACs}rUxg|#^# zHQTH9oIkhyFg)n+-c!=?Mc|(E2R60j;rY*V9^Ts!cM_uQ9$SUoxLtd1I_`4`0`@Hz z=J$D25H`eB@BQZJ1ND_spF0 zz~kcj#GEU8&&2((_so5lpvK-Cg%9`bhFKl#b!bN+otYERk?_JC55X_Y>HYJQ;D5&L z!4Im5+wBxn(rO5!U1!AGx>wjPFC_=4Rloy)}OXy+VRNkQwPcH<3Sbhan{$ zZWN0gHyqKhKaK~1lfSa~I@XhrZM(GXLALK}Z5!(~Jhnq@9f*rkx}f~I9~YvkL#{r7 zDA)(URRi|CFgk~Hc*QvdV`a8VG2VxP3!Q0)F&|H*{CE6q<{D)+so=D=X`|dhbFaMY8D8im?Dh z6l>S&bl5w<)l^WYu^o)?t|&O?N}L3m%5!cop-XpDjorJd;Jl05fy(pl5#E&%-WXh{ zsI2qDnt7=^n)Sp)3AXyi@DH{!tf{njg_4lI$}4_o=^(%nH@vHbHihn>7fM?d7VP#h zg&x9o`&HI<5!z3WHgq*@SMs5Vj;8HUl!Dhcw$n|q?GoQQfmVe+@wQp$Zfg&EO%tlb zPMZiV9=5vx;jF<2s0X^k&wZ2#tS;M*Jr@+rX@7c@3|w=yURFRGwPmj*?3#-4rSnIrR!5Il%=&EeFNG$ei+%sRLVYrPhdFE!8s1nQgN9SI z?R<xF&H`{`>H&Gj+JyD5=l?roQw zit$YPI1$#AU*KWX? z#x-hJ|ANSwwqgUKPb#*f{i_VAvYk9}-t>6wkdvnVH4TFzAD`fEvfXBS{N8qWNBGt_ zSM8e5Va+)9JMGGk$nDr#ZNa;^(0Mh~G>jLX-qE`kNzk#plK z>)P3BysOb~j~cQk3hmKT(V<6jdQtGE!KYJ9*uX~n$!@}SrlQ;G-KbQqR05lu!4T&4ds6DSg;~ttV-64NZ?K-}K<+Tk0@Tqq7sWQ3 z`@10<@L%#hHX8#5gmI%PsXsfK;Il6gGSHF%f2ZI77G%wA{`O?#tTuz^r>U@Z~?t)!t7+H`eM(`#X2EVbt;aQBSVA2m= zbsAFFLJsQA2M@OcnmXYB9f zT5Q^h?^8t-N8$5SJ0rCB8~`hxsK--Hd(XikmAT${1<#6)^nLj`0#yV(4?y8(}CP zcy~wkhwXP!hN!ih0mzCsc8|ACLiXB?RVe3O=%I)HdO;OtV(`p}z{9Vq;DEco1~dNJ zh$>r6!9iDloo%-^qK39BD>&eSaZ7E)!5h0>tsdy@*LOy`WDoc7;d(q1)j4YU%)|<2 zo+FO1owuDft+?37P2*;N15u`3MDP*7%6d0b!8skKR7_ur#~%f$iR`}*!PnRhA}#^c zOhJ%Xy@et`{ z2a4i`X4j4@-6OGP=J)Cdw4wTc8{xeh`?+XWl~Sb+Ri4wKt$_vwnmyiMuTV@ zI_k!5qxB9{Cp5;=aOXacN645em4XX9Vcdv1UZ|OGn^13qmlU3W&~^y77U@SuqdRI6 zHv+`@mP(my3nKke>JmUV6dE9@;}#-6{?G2+iVKvKf(E0t=ZXe#WVCfcJBW8n0bS1h_itNh`aVmpn?C;SU>xr16jMP}42^2-Mp)G?y}-^pypDXtdZ zk*l`9gpx*OQ*Zy{O)=Wk9ts-`L-<0IfB2Ard}cx6nwCBLY2C`Tf(w0YH*ZvGtX(kH zxKz6x`AD(vhueY+zcr!$BS`-?-ziak@<_*)otA-PXZhwXZj%n*`aNI4-RDpsE%RRv=@ zn990%*9>b2ri(4Gi&GEq@&WB23-sbqycfwA%LabI_a|&uh03<)_n{JjioMpp48`9T zGmlzbW~%>(uXg`N14NP;FpprEfEPvEBx05Y$XF=Ts$aA+8RJj#J?!*M> zJUJT$kMOBBxW+tg7M=;Dd@Pegjc+gXKw>7n(cFy1k0Y_t3=IQ>iqTpbrtKK;{w&+f z1)>coLJ!0l11|R8Fv!r*3$qBzPz0#?VHPQ|e*vn-IOZ2>lDJ*G)vOKN=3foXsk5Be zOdG?Zht)ATjbiq$qPY%@a4OozqJGxVtOK@<@pz^V^>eY=g&q{I7rA43l1}j>2mPy{ zBX_L%@WBh-Lq{CYx?qj-dA%8JGZ^Z{lMS80X>jk~Zd|)aZ3K1~^auw97y)8@R5urG zVyr_c_Be^ox@kL}lxPl-il8BSV1!`Ob`Pwi;x^i~fmhL0!`P0AmUIusb_*`KX%R)n zTJ3BM33ZCC#s^%1#;X0sioS5a-zYZ!ZU{ol&PaI{OOAyyLrmMzse!&aA^%XbuOHb) zuSN)_?d8BgEc0YKm=ZVGUyd|`udZGr;W3!F+h37Rr z9V))2`uqI&DaG!zsHYNBBJ_myv^OAJe6_SAx5bbZ6}fh2Fns&RwL5XqiP(t{i+G!E z<@)WL5Q1GbCXRG+UXLC*rn~auBSJl*@aA96>?j*1SA4?|1+=4SnQY5io?UX9Yb0gd zc)EYa2;77`%DusKCAMwP6VG_MJ7R>{V*i6$!$T=-Llh-=vEapyX1NrSCv=c zI=4gU&0PJB{Cr%ySi9M;VDEKNC1I_h{W}mdda7T-yBfNt7MQ-XXo0=k?7IBzwLa<4oRZFYz4%r`?Bb&vvQzcb8q6$*0ox=rDe&Q`?q}`+` z!V=0NQ!o4i*OLnn9#%{SG7xAMWac zR=v5%V>4Wdr8DbxBOerq*Z!fwmIH+&5G&+X3wt;JUV<;W+;N*IJAtC?(5k5-`CTwt zp@)h-z7|trO)<7A+ch+^%viNR`Lshge86{csNGVF3T|Pu?^5_v(9|w>9;5+I{?|~{ z#B4I6?vJSBIuN^^;i*rJIpibc66@G;$}(9t&Ek-D828LKETySu>1m5ng6O-8OTa$%#V zrI9;~+}Y?!X{3RXhK)+3kq%uR{M<0^+8*Ec_`Q0B2?G$iJ4^^(6?j(Gxv@agO5la< zXjtIhO5p8Q!RD?ohwtQ9rQL@OU0`UxjB<(XA278mf+~pe(cReP?jV{QyEH^1bp>W0 z_Zz!(4&r)am)=2KY;N0?c=*)65?>FMt>6JbBbs~Yc~s`2sKE=3Tf;zcp}!@$YeP55 z(J>;q3wlR$OYO6%q^^J`uuyrgl$2OQr6Q=SDaAPy+X`rpjwa6qKV`UiG zL&k7&K2v9#5YN^o2!H4s8%43P_8*b6P(2pM=xoO@8}8EVI~HT6Vd(t)O7uQ~N?JBRm=^CGvAafs^OF^BRHJF}{edyGYo{@p(72c#{ti*+#4mb_z zh@LvGJJNLrsBT67=2ua}kya39Y*9N>rzzH4)Q+mV5Gs{M>LAm2gkG#Qpn8Ws!{b|Q zx`jZN_}O2WL5oP~QQF{bFBXKJ!f=6ZpW5#W`wN<@Ex0h=9z$1DrO_;^d?sKx6Kx!) zg~axbWT_EFF~oN0_nH+49?frV?qAjaPw!(W_rdvLFQZwfSOacU8m)T!RhrZ8yU(ML z3~6mf!MUCGZ(&I7#Rd&A+Q*gZ9<=W$O(HpXpF!O}!Tt*5h@AIsR8M-yJ)E2s#J3_X;69=&ykXRHU_V*zdN;;_T-QvN+=ABi+!KD8fxZ&19bYF~*= zNb{^(o6*10-sksf3}}jJaPfdb>_rt?9&;}S{l>WD>dlC$*{yO#NNgk?qMf#TqX4Ij zG5h7V6O*pHWkgsP#U2l%hN01_B9|Mx@V)FEeu#kmF`Q^6oxE$52V!g{WRHXRbgCWI zpVJ5FkQU?gNShzkjs+K*qHPCEHxzfYiLB_J8#OVBvF^XuM!VIR6RV>8*F+`mo@ncW zk`u0jngE&`5iV|8t2cH7adE>21Xvs!Jp#cTm|H*S^sVN@^*LzKk-kK|?0CjGzI}<6 z6jKqgYj_(Ok2pk6yt8`KWb0wZ$6lk{@YTC;cl*6mkR#pwQ*P7>CD1OyZq=)&yIZl} zJ@!>VR{7d&J7QmdiSB}U@Ta#e4&t?J=Ua&DR?jPZ%)5&}ZI-Qxq1EU!{QaVbRL5v1 zoJfwg^$Nfv5bq|R$myDb9=_5TQ~aWWw^dBo773=gjnOu^MaUZHT!)Dk4^gw@qpM_5YmG`sou}-ZK;PZh;gi%lA6M0r;X zmT$nvD0pY9syv60e7swR{qE6CuvDQb?(p6u{fF36gXv?ubH^swV;lcfxk1`54&voJ z5=FTkTzx!R8+jlK@gRF%s%3~zRbwFSgst-T+WwWzRsE~sti?X208H91mC#)=7{)T? zhbYz`@g^G{>e}4Ph^=_<&7>Whs2FoPL?<4IajSyQM6G+G=(}9!9l6XYe+{XLDrnMV z_q$Qq-r6Olx9}dL& zqUydU#CR3`K<>{Fw{IvQ>iF4wyv*7vv-SX<@G^8q%H%~$`kL$7hy-<#2kb&mqs5MK zCTb-;hG-v;F;cd>zy8`;R2NRhdV3vAN`w&Ok*a-Z+4P-iIT(H*G5BH&9yNjJ)aWs7 z{Rmzp!TNNIZDuMS)$#U~-%6i?@l1qI!o`RKD?&WbIukF~koj~9B9MedF(LQ`=P!>_ ztm$YiAPm%8F_1+Dt_TsO2A)I)7UcQ4=S~u)d3wFav)$=?Jg}0d?@NSQlSKM~x1n;Vs?2pu=L}2N?9?1-(*$Ejdvy2rU^f6}p3gJ(2 zJ}km33%r6@V@ADVPm#W*A{a9^%n!l73Q1T^DjNRS*sfGKiGYf1#T#%PZKL^rJSo-{ z3h=al=Yg#Z_2f%IyhYg`Df;80%0-0CB0`QEQ51t0Nf1-px^lR-@AIM_HQh=z)`3FN zF(LN$*aNy?xn9W~Yqq^imbvN~Qt&Vo7+?$62a)y)np~IQIW#HI-VcK!COB1gt9Lao=5@k9o2v1y88{6|!*xJlUngId@INZu}yZZ#x$6Q_FP*~%L+ z{U-fyT-eHgy!WR%`MQ;4JF+RY&rnFdXeGepkT89_m1+KR3%1yipWQ2lW^JGbS;{G8!0%F$QvY zU72eb|MHRHkM)pP#r#9Ymlz*s%wtSvjAxw17{NG_QP0?gu^rbfr|<}2^7oiI5lF1NU`YA zsVEtUtI|N6st3_&I8Mepaf-hSCnQ5rf{i#C!*R0EX)B#7l5o-`<78Y!SEV=w(v6KsN$ew0M_14le5Tz3bkR6LC7?5Lg7QJ>q?Gn>75Bl|QzDF79q2H(I*?{zU$s=1 zF7-@LZaNy7x0h6DY9rTVNc)~F_hatGJg^N9VeZ3na~th()kdyl%KM|n&z-qyU(<&BwBb7DZZf$_mo{?0HoR9Gu4k@>@83oq z*hW6IjXb!Gd}JGWNE<$`4L7!NAJK-J+wkZ%Jhly=(T2yh;rB6D^%dWSC$+Jk+J>jM z;TGm<`O0s@OPH(qa|3fVzmzfW!uPMDjl7yU=8D8&XWomsCQIfYs!{0(WUk81ZRDwK zr+S+XKZ^{1fTW6%x#~WiIpzz*VPUT7-^$#B<@s&w zmoQi3w~e`4|5Pwn^shYLmf`hd9>P43c`Eb4%r`Knsd_rfnXC126?4oHildIXT7R~!FB{v~*W}3fsQw2s zSM!&VxvHOd=G{5Gw*I%R-`dtsZOeDt`oNF#vs&M^&HwovzAuMAZ{GZboa7``eagIf ziAl+c=|D?DPGUkjTLaIrCV{I4^X6Go)5roF%$t{zkYjb`i<1+rS=p)y{7qNMym`q9 z^V6iy@OMdCign%{j`&D^r-NIp*`r1x{Osf$Yj#?qRdtt}nUJ2gATv2h7^qT8h(0rU z2|HKxNy+KS)?_6N1_pzoj2ovYeQ_NIgTDC9yAxJ_NrY{D$KffS&=5 z#=(ODxL$_e1Ng-+PO&D;Pfs2Qw{*lWp5KO(Mh7bK)}@x@tQ6In5}%$0fj-BYU`EP7<ToNp?{ zudRIU{jF@oXC!1MEJ#lJZ%S=z?;n*);kD@XUo_XE{Z{r={kPGxvu)T!*kJEj%%6Uc!=uG_FP+=HtSs7DL@R1NDkNA~`29JI&HkJt+DK zRBeQ(C*RziBN zG$R3;}PQiVl+bF%*;iZSxYkY z$$5#%7P2pFqaFQk?9WHBXk}M6bm=UbNaEzC5O1frg1NhU(4XS?bMv6KwFifT*kfeK zO#`t88Z4krak?{pRgzGl6{T%BTMYJ z48h?SN&YvFK;({G-1~F|B?m`fW^Q`Ayc8U%s8HL!WY8O29UCBy<#VlgF*uaqIB4mY zGk>ZL$2?mrIjtUZw*O2UP7BVQ<=b3a^N-tbAC3v#GdesaC^YxTmkywNuesr(=-Gts zG1((?f0(NWT?K=yrHJfN`Bh78vNB9b5;|3s@T}}eJU?Qyvl5eYa{k#r)n7edkpKTK z+-igy=wwe<+Pc2WZ^JQ;Cdvth(gen{Tty7P33H6W3B+idKn%DEZWM)ZWa>W_+Q_$tS!VJmwWN)%kRXJH=P#+-E36+fy&=tuXNkn*S> zejfPI!X7HnbnmHHQJ$bYL`Y_YG+stB%Im6({3W-9^!y-yb@-7P^$&03ADQ>XkIe7F zkGP3>IP+K_xtYf1(-~(2$^SX{QP}DDkv|#u>G8AR*9*UF{3x#Z_)%O}Fs=lWc>#Xp z&no=LJ<5?N(XTLn4M_2N6F&;)ZT!d{)|-fU9R-s76n-S10|io_#}7&&{isL&!?GS$ zaTRkF3z@6<1alQj+Q>`W$hWqUSG18wO}<-6%S=%wni~zcMP1 z%5Z!bb&OpY{TO>O>KXkR0~v=h1~ZOi3}G}fni*#>-p8o=pTsx35V>P3l(S;S<#2lqtly42Aj?s@%<!U%xGkcWsGOcV=Q4TWh`f`V60-SW~^nb zW3)3iGBz%N4Iz~UnKt>~DETigwJaY?UK4S@E8DlwPHRDCb9~qk%bt`3jLKtHi zr{`uWF=z$NK)Y);#zJPK<|=n*rzz7DtO{gF2}`kDFH0ib64=WjL)gufSMo-|UA7Q_ z!o6@u68Mvw&1@pd-`&acm6(KV#bn6_E>$KX{E4~giYa%2GCkR%Ou+!n_PrfPUCW-?r|*W|1nhMy+FA`=llOANOQHnYi1tLSjNcFL+bu>f0%ML-EAvMSq4z;)vA5s|K^_h)9Fs`s5gA4 z8aVL3xlf0F6JaYI{yZe&k|t^dH6G;O9siH`M|n2~ep75I#m*tLv|9dKe5rI(jHy1M zGLs6PjCd!3sXmhKR2}>`|Hu!j;WAMxIJ;M4^xxetMabkn1@TgSXwlk#b1z3ovJnf_ zEyZ39{lDM8JfQ`dhsXyRa*GfD96p7o_U?iZcYG2V{?Mq5I%boE)GYajIQ_GK-(Sl zsqXdvzt0ExD^?b)TK(9X!lK7*PZU4-RLRrNJiB(?`sX%0|H6wez5L3nrLVpI#+z?# ze7o$OcQ?Ja`TZ?hKlt#YZ6AN~Y5DdYpMCztmpdyeckSM@ci;Z10|yTsK63O}b_bU3-nEm$y%cj#^!(+d6mg?b^++dyk&Idf(nh-?v|X|9}Al0|yNrGBjw|@ZdY{ z95M2)QKLh~j19#c$#`SJd`yt1EJ#gTxF|g%Gt2T|c8)c7@shly56!*r{s-p8|9knv z%a%X#=>O^T|DO*3e_Q{i3E>fuci&@SyA{wv6VZ8E__3rAIhQ2Ds-V%P>zG>&1_wBwqC=uiDIFdg8d!)yn z<7-l$x#=64E*?Jc;B-my+MyHXpK^)p_d>S;1E;)79=Wb-Us*KEzt`J;>|KyimGf=J z=7ww+@}u%-(!kdf5Bk0NOTfc5M=Za5zo?Jl%FFZINTyuOytVttLZ8o5?(8#Wn44?l zy#YgBeF(pT|Gz_U4mYX1(+3J?%z) zIO+bndEe%Hy?d+Cc>2k*>iiyy`lDl+6cT;s`u(#DPEMG3F`?f(r^9sPzR14*!_!vZ zITal?_Wm*b^kChIOYlv%`u4dAQ!>*AKkV1*e60JBk>3sfd0=ef^A8@_*tLG*lYzrD z-Lf*HdSrGdZ5!_#VBG8;n|=GulQnAxeRgDS%KBlUub)}|NAi2q&n|iKb^X@qH+Sya z6tH$u%msI4MbPd)f35B}EjCd5>Gf-!XLs&0;oIf+kNNuf?sJ-Yg*>Bt-Q}alwl8_> zp@dtX-nK9Sqo)@;^)6npdzQY>+Of7#o-b)+R?!3S82)?ncJ0 zr^BZnJFsrx%uVON9(bwjrHvn8fd~>avHHhf8w>kCx;MisF3Wvq`0o3In#`I`Klhqb z`bS{nuSdqeHLQE-gI|BXCL(RQOXf}8%d>hc&3*GJMLGB3_Hns|E1&H;{>Y-S+ltPv zc|~(~WK62h#xs9E{jC4@oqtRX9vHFh`JYWIKG}WHHSX%v)YGpAEM8vx;AG^Wq(3he z+>%l`D{EiAYs;;f?f+Ne_fNi*d8(T*gd7DS3EQa4DEK5 z+N+LTo>}q7xep^;e%bnn-ajWGyJp4B@{8|#__jCB4}ECL{cj!}VLCr0BSYKw+K5>{ z%<5bj@Z70}z*P+Iy8Zp2KKJNDHm|Qa`p4sEj+~wRSVij0*X~dIuxQ+E{trej z*P+GMYv9CgnX})Y|Kqzw{eJoG&(}Y>_{+I&*S<&@kzcrNv|(uZ&Zp15*IkqJ>sNT| z=dO+mXD#Tm{fzNo=-|B67w=qjdheFsK2J*;fb?Aabzc6TTWV(hRHmQ!V$}Unn~?DZp=WV+YT|vfr(`K4bst zWd33ElZkV5mk&K>PdhchkbQC6WAB#C?Kft`OS$bIn)G!2JwZ!uX1;LQ=-qWs(=$H0 z#(CE|rSA@yV7qzX<)^)Kwk&J*SRE9;H7$2Y(9l)0H|l=rQ>_>u+W*7+a{I!1+81LTiFPsBh|*@xTj3 zArIGfUwSlq@xHuQxBswovfJ8=qUunT*XqBzFFkAd#TPH14!!wW*8C+?N80w;=L|U; zcXr&dxaPb2`7WDXHYfM;fawdCbW8m7Qo}s2zb~YXv5&Z`)T3<8_B(EbYy0#)6Mk>) z`rmqPdcFJjRCg#a>DKZuhr1t`wDqUo&V4iawWo5vqL$o(OdRpIQbY9K(6KX2Y_A~g-{(j5j^M3ekiS6L!H|9yt(cT^1UJD&}D{#kOg-hbXUnzg{ zVpz_uYj-c(FyH!=wr}?{?|<^fun)V$zFWL$%#{fv*FX2p_usqRI&uAYzU$J`(eT~n z#g}5QZvJ-v(9K~Xqht2vR4>T5(yr{qsZH11_Pl;>TItySx>N7utd7`m`nF?kerqf* zj{SC;ecFdVO#ZW5`{5g7zC3qolh>4==0EZ9kK2#-HKu%}6!^Y&DfhzRYlDWbT0zmj z*lkJDpTC`WFl=#Y{qQc!Q=)$zG3;vj^(Q-MJEyIU&MDIlh&Oh28Ru2_;NiYOZ;k%t zz&DR?yW_J7rs$hrr+e72;kn28Wj{SPZBN4P`R~?#v*zrT5#iV&bZ!LMF|CevBocsFW;n}*o9*ubU%ks{<$|m0#ePHv5 zS3ciy>%GNy_KhBP=aJ5aZBO5_j5>YaXRDv7)wuS!b@gMz z`r43%HNLycxZ?DZrlDb{&ONwc_~nzHiBq$`>t43y?t2G+ee_$`!MDD< z`)IL$=YgA#_y4r}XYPB39B%jN!G;g+`F4`$%LiS*-TUO!OLyeY+Wll%-0+bTZg;nJ z`C;d+&VMy~XqP4~_rC;pxht&?jCvt+?;W3(jM_UPuT$>)cLpYCxv z|Mg*EHx`90janK0&gG>OFa6!`1xnCi(Dx6%#mAa_s2#l3^#;&Gee(#}tDZFjrk z+CBj5ErPJ#;x5I_)1bI{nH6`hX^Ok|{ffI!n&RP;t9W!+sd#iOQ9QJ-D($rIEA4b& zD(yNQQ`&c`Q`+BlO=;iR!$s5C&qd=Ks?&8^Xj*DkEi;JgUp^KMasf$CoTuK-u?-c*lJ$K8%6mu{exX=LV( z{xm~LIF+U-fiycQ&8eN1t1QB~<>2~MDcLB;No6)xlnu;fa}41zr+Si(GUnV~RLYrC z)}*6?Iht$YsA5iY+jLYj_motrWiIMVnAI_-xnMf%%tdvYpShmph0OahFJUf=8{)e`>Z?D? zH?Z8Fc`5S%=4H&O;X%h%=E$1jC}*xtd{;0Z%$?D>;Vd0(zFM44hfp5=bbjm-7TP0RzChcgdmPGyXa5av`C z=`b?CM^eSiJc@ZN^NGykm``FJ&m2Wr9I4EwFt;#QtFk=ivsj+bT%Ct0WPUHpOPD7! z-@yD)=CPNgzFfEhC}p`T^R3L?m{%}&SLHl^lYjk-3Js@{SDOles$I z?9E)qav$b;<{g*^Gw;aU$Xv@jmbs33Jo8S>)p@bon5*+*otazMeizj~b6@5q%)6@Y znfo!{%Dg-C3g$hSS2OR)ypDM<=8epIGgsb~`nsLDj(H#EdgglO!OZ(IH!|zTW7108<@&fLPhJ@b6# zp3F;_doeF%?!$a5^B&AAn1?d2W$wZaMmuv)=1t7Km}|Dm^!qUPW8Q;#AoEb>M&>Tu zpp0ei$vmF97jp~q9?bKZhce&5+(l2N1 z&s_6?Om8T2Kjtoh(tRLvPv#-ay_lO-`$MJuIMqJ$RMkH7Jk@@%v|p&&XTCwT&%8{v zKT_H+SM4*eQtdOZRqcmJ`*u~%yh)XhlXA_6GW}l6{g}HLr94oTGY?UDgp`|AZk9Yw z<SVcewt)G!7TbeYR zP6w?+k|^!bIvF}rFw;&)Dr`ukRc;ET(jKi}po7*W(Lw8v=*VP$GnreMV+$rBr&TF* z&^$gJv@V5?9PS_IC=W7UERa^N&_SzD=%BR|bfh6gbkI98bmTbFBg07-tJG*+wd5%r z&&8a+RIIz8BLNztBbnoq!SP6d2IyGC?r7Bt9jWY|*8S75i0v<8|8lSzgpOSH*UI5r z*q;R)4y~S`gI0dfv54UW{JXjM|n^_3c~6()qN&XMBLHu67pDw zobnf?R}G)?SrC|NpYj`VHGIl<6d%<-8!c+B2Yr*LLso_)p4npkI zekSE};;Q~Azf*W>`Y7KA!M39xi~K|B5{9%?snWaDsPkyHQpH_oiUDd(uykQd?DYb zi*e|Y$|tRhRP#BNQ{rm5pz=yw4WG&_-Ium{pmOY-f98vHx5SIew{twHoI7(W@2$Bk zA8NX&{5#7t#QksapXvo?c}^SusGgwvqWYI8(s>VZlsu^ZaK4YS9%=DW)+dzX<_HI} zULhZ44to&kA#FYA+VM|qL!Ut8iw>l7)pIJPhA zlL?OdLeCqjuhjA;>xUM3rbxeY{Xq6(o$?9kZ#qm`=WkiATk0|Aau6=+Soxfk`K+b< z%X~J$p>OAW-eYPBmV!tYI0iXh*q`@tW?4r;Jy$Q#>fYwS+6PVvk@ z+o7f8%J3r``A3EyjACBC$#mU6ENXXpAY2dfJy9_pQy z@rZH6Q|dp;kq>1!u@1QmCx-7X)!UTM{y7|~0n{8S!-(_W&T_SXp<(}rv%HDrR_1YBKl(A( z?34Fv3v)l_YP&#T`yE&w$nq)7)p_bb<{>O!$h?Hz_hD{kc>;3{%R4fUV>u7IDLR&G zS)R)BbKXZu5#2eLeac?k0Y=IT7USm_EgGs_=ic`C<0lzAM>S25SIJXp2Q@|T(CF_)ut zic-itm*pFn&tx9>woKn`%*$B5o_RU*8O*DgKgT?n-FIeQ%kpC8Mvm_&=604p!aRiC zcVXVd@>!~Tmisc-RLS_xX70y)1M@)UPcRQ*{wi}b^D>pQ|6Q5Ku{@4>EX%twPi46r zO~AUDG8vz7EYD;4YUYK^-)6pn`C{f}%wJ+2&*61vUe5Bl%u89`k9if#lbF{s|B|_# z`EKS-%(pVv9FXxZXYR-R5c5Fh`3ye>Nx%d=4O`fVjj=@3+8#uH!?3_ z{ycLFhu4#N8OvW_Ue5e}=7D80JtLS`vHT(CB`h~GuVwk;%wt&|!radCeCBa1AH%$f zU?>rE-=pW3H~V(la-+d_MC+_WyR~ zaV(E#9?braWS+|MSD5EBf0%g{`!|sJ29~EWFJqp?yqvk4>Yn*|=C#aAnA@4Z#=MF7 zhs-sHq(0we?#KLY=7G#D%;mT&z1b`e+0RW-)b^9)^D(;XEKlND4z-`1%(GD{PvhAf zl`rI36qPUH*%FnfW0c?7|8$JNIddB8aOPPUeQ@Rvwvp2)sk59$Ii0yW%B_aK)G56* z+9^i^6P?BZrHMSJL$3Nj^H4#Ez3RW5e^F=WXg-F<9q9dMdC2jo`S5|>MsD#(&ePDS zfIQ?pO`=236qg|JKChI^d7C7Ra;u!;LH;@OmVFoGI2xUu<@8p2Ypy;A)p6hqo==nW zKnr-(K^@;o!050%q$XD3zriH`d$<@A2Cv->nh{G@!L<33BC*~Wj1BVS6n zI_su}M{fl?``?n!rTvE-`B09>P;OW4)A$R$J?+dBanD-ww({2Q>78k3`*QCLGLhl6 z+;7PjIPRb1sg8Ujc?RC)cJ?pRasQ-Too!V8w>asO(j)i&XbIoq$hXoxjfy+_pW8;h z*vUT{XHRzGH19#a$V1LUr8)E|=MB|aW}0WFc{+7=Rn9w;zSaCG$5&hOkIL10NOC%> z;nDbOx+6bIc?RC9mxr7OX^Eelr)epda^A9KUlKY06d%L zkPVt=rt+xPQ*s_qoxPUx=~OSM`jYb;E#*~mb+%p3w+CUwTCKO`{MiDBzT|w@B1id< z^GYr8SLc0H6XHRrJyiY4`LRWgdR)#csg+o0S4Q)5E#*57Jp4a$d_>F3VesoOp&K|H=73I?F@O3#+RQ&{Yj2c%DkP`+QC;mK-vbFk z9#QKLxlX|1cz(;=BhSwIaW;2OubkIkj9AD+&cCJ^@HSA$MaLp_qT-q@AliQ``blP`%)h4H{LE$hcDQqvDqOK7mbg$=1pzn z8i%-9ZAi0;i$fwW?Hj zaM%wp%s)H+7dK})Sv5M@$7S2}*E!r{gNlDR;#=fG+G2mEI8L^aS3CF%&(m?h!KMAZ z4lcZFda6PV^zZiSl{0Q_ZD0Ah4Zqrk>l}{xV?2+l2A5_~3_f<)|7zb3#IMM~U!8ij zegCNW4&K;&f7QtRaSl%Yke{l5q%K$d+GGO~m%Q@DTykgmYRe+R_;uT@gr$quJ}fY1 z6w6>sJML*-=WUKey&J!V1@!uM1qz_YK05PCp6E zcPW39cwNZKw+MCHCv7A&7Ib-=uwuiv0;~UcqfGF37rsMS{Z8<^gouYg<%J!ah?f*U z@*bh?q-ir@>4Wa?6Izn?3EcYrnk~dD0{zAPZXB>mV9D_d0)vN!e?W5M$kzqNHz*$x z*G-!zurBorfw93oKO*zGvOIyoCr%11-E!wPGOso~B~ZVjL16HbdqjSS@B4;8WBx6P zYv+7I_8aftCUEO_9X}AXULmg?^XZvAW2XJlS|u~=Ym(M5sAD`P(=bBpF_fx3&A1ePuz_XU~fpL|-N z^5Z3erIn#ylKIwIB?3z~T@+YR5wcU*U;l)_;GjBzrMtRU2>+*q3yl9FU0}Y?dVxyV zPJy~9c7cr(I#rVWQopeR^Q-3zELmt1sJr};z~H;TmAue>7um0SZ>YfPZ8HQmzPe0c ze&(A3x9SfIEcxWRK-|aO%9-D|q! zrAsAxmI_qj_6ZDr;zxnTjkk&VD0pLtz}P1q5LgnoN}$pEU4fQ2k4f(To51SFd+ej| zVr$0>toBJ3m>>AK#35S**7<%V<(HcTT3+kDU+81P1cAoGDFREwYyyLy+ageR`h>t( zw41z1=j6aBT!koNg(o{z|zud0xh?774`4dj4=Z9KfF(%a_&)q zu{U2AX!&!mz^#|<0vo^ZK1ku^KQc^U{Gh19}rma$rXXYQ+*DTyVz4f5~HRFG`?*S7<~0<$p?NU zFhA-mfx5Wg1S-?J9wGPfV@FHu7$;CUmM74%?0JEuU3Unqe)$`Ljh+4!7@X7dD7i;D z5*YjUT!HZemItsu51z*TjyOZ!e87|V6giTfx4ox0*xLM1=i)w5!iSkRiNeWJc0S8YXs`9 ztrr*^x=~=`!ygNb-L^+y{KXSe?sGw4#gJS{G6uxnqPU4(C0)yj*2~?(p39Jr_ z7Fg;(SD?jhp}^R0@&p>+StBssvR+{6@V5k_eh^r(ewV$ZO?@%&zaTiw4B7~AK(z=}H?1?tD&5@?C=5$&z56M6`&8xtr{H+Yo5R_!swTO3d6 zKkWCp*N0(Wbr?1xP5VLE?BkEvJFGhzmX!hCL^KuITohhru=K ztIbO$ZVu}hJi2lG;*N&hH`?8EYW}&fE}zHrIqcHTu=9r-Q|qo@32V6C<96?dJPrF@ zD=bBCRD@04kC~fcIzz|IBR?y1eGOYacC!q6?EA2cH%5K5eYVap-Uhl4{wAOHd^-0sJ|Ze(ZR8vp4sk(x9=Z#`6)|p!{zM{ zE_vnqK8E;qUT^Ols4>WRbT!Oh+Vc;uaB1Cuv*GrTkJ)x9x=oeV3h+r{tc)XmVOxntZg&*6r# z=Z0L^+ohY~g(*3Izx~+&L&2)LkDvPW@33{=G5cQ}-rvyKXQ|nqb2BV6ZlC7!!?znY zOq_PJ-nXxz{Ej>37`qKO+!c}(U^~{+kpGjdciFr?hKr{M-He&&Z&>TouU5a|HiPE{ z_h-%CgAKQmH*T60)5nlFbyW8fpT34s1Lxez(>8@2>{S&|I8A3*Xw6tYeO+Cc)Q_KG z+_RBCmThfkc<0P-J)7>;8GKL99Pr2aZibx~-{1M;oDPOJ#;1NW+}7JLdi2=8zbp4Q zxZn1E!Xqm?8(!7cM?L(+P($xI&-pf98Dtps@Ew^O-|cRg*)H32R`xK%jQ1Y;YecUB zhH0-S92=4{$PhemPp7JIKf|a)_j-Spq&K|jGH{j8NH4?JOP~69=94`PFTDJ~OMQdt z!xsMiXopLQ;|*OBr=ITk;xL2HUGuw_^dDqc@jzZkVb-07EgLsQFPs}{=(YICZx{A! z4Ew3a*gH;59B1fOoU_cH=1>4~4V1t!#TrZztfqe}J-<~t#x}}35z*yG#kw=FZZZGP)J2QBM zAvV`Wk55BV?^93Qwbfv-u3g=)YVlaZg~!fL+t)G7uqE!Xy2Eb{H@xCias2gFp@y2d zyRL10OK*7o#@v4KUxyh+H@>)9`+>%A?oi3c{R<6-8|!bs-l_8_!wcHi?_1MnnBlGM zW1_Ox4KNxd$3{c zjL&||(&I~Hho@xQwl#(gI-lU(r(nEc%jfO)JlCTs?A=cf^-2#k7@qa&7v-H8Xt;0a z>y^IV&0%+Y_PQK7<1WMMjCM`ImqHC=(oZ*j|9pU9#nz`jSbcbup{ne5CF7ovhCU~{ zzEU`Tv|-KQr5$v$|5tn80vA=a{lCxf8eTde;((Z=W#JC7kf@-MP)WTL{!w@cb#)a(Cps-@AbdG z-{*IaEWc~-v-jF-uf6u(=giq>pUJu&A*Er%p<8rEd)`P=mHFt-D)+23g<`|Iw2$*6 zUY@F}yl3otlc!A3DSrO#FA-Zt>3&dZo_y#1TXgzQUWsvI5xQ^J7_NQ&q4BzJ#=mgw zH+PNGy_2=6Wx<_log;nl_tO`Q)P48JhTL}zr>4(ZnE%PWtNW&Bf3qg2XYx(DwVQQa zsuyq24N;}OoK<+UE_g>{Yx<(I)9)C&b9ly%8==R#(Z=29r$5HH`@PANb?T@66+fz{ z$o*)FZjM2@rP71zMkVe(_GkmH#M-Kyb-x6FvUFY zPFOHRskts*x9p?CffMuQ=;Bs?zG1mOMmOq%c|U(z9k1K}*~XRA?-{EbQnUZ`@@F)< zukQS4m1fx_UEFmwT|aCdtK0q4h3?dNt{Z%7`^J|K#Oj(W=by{ibBnIF{PxWiYsTvi z{W^HV8}CQ!>@Y&Ogw8&^2bbZg<>=uN&Wt)O~Q{k*I*TC+p_l zvUc&Va`W`)FQZ&M&uDbrN51nkJvdP}bDQh-p5b$KN!4e*NjRa?y<$AZJlD>Y$A@`3 z!_k|zmS)B29Hl-TjmB7=<#=4~tYcuBSZa8t|fcv*mx?Le1 zo5rVKuiIGuMPY}>R9%nxwd=!AN9z9Q_ZW?RB>r9C4v#+JKHCNEe@3VYDY?Kky#*tC z3oh{Izp&P+R$btC%$W0(F$Q6;t7Ce`T;R%)8y&BCT;PfaX7;}Q(|K+?Ex4d;2m3RQ{0{+hPZCiW4 zJN*4Q{_Y6tm%_W}_!k8)-Dzkz$G6>g)zzK5&hhXG&519pKgai(bMxz#pW`Dwjl$nK z9=xotY{GTtxW$(B;PXD`_*<{WEYIrf%^O%zqXItZ3QkKgZlXPom)?AK6#d( za^HRb_^;0LyLE-ea|h4z)|X!kI9+#^UwuJ6{;EgL^6is9pPqToS?+e?z;{QDXZeER z?avj=Kg&OKZ<`Z$(^-BbKQnTQ<}5ECePq&H&$B$Vv1I?&&NF;P(eC@&zc|B(o8AmI zy?KV8`{mC!jA%T=53E{a_^tR1U;3?f;SZb6@O8mhF}m&ypR+C9BWlSR9$X%Uzcbt# z^5&n%O*q39bMHF+Ng(2_0{+hMBa>B+JaGIpzdn8Ku&4iank!0<%|G<|Y5uut@z2*Z zoaWN+VW;^8+XKEg{OL3|H~aJ+Go9uQ>%a5<>+;jw{?p;UrnuAmhY3&I_g466KK5wq z?6aEF{Iep#e}V65en!3L!Pidra(+|CT?s$*@=w&-ox&%*eCh>UNWI$2Yr57BeyOgP z@3~*-vHhi&&uOZ4e807qzqHG?|2j)AS8q+hUoQ`E&wHIM=;dD>*mu`s(|WnJe3LL| z9L|eJFLzht%NOpw9N+gi=hl6Sk63W)!ZAlr@ou+!qHb?J#WxBQcRhRH6o2EmT{*h` z6yJXH3u|khIK^Aa^9tg(o#MW4J?^L6aEd=u9e(V~v{QUtuJHQ1NvC-1u-hz$W}f0Z z&quxK2tUR5e;s>Y=ryOf=f*wj@`jw^rULKfcEu?^%+MKV=A_`Qv!ChVMdn3^rj_(?TWjIeSr6fSdO=`%K@Sg36Q(?UM-M+e zdf}SmDLuSw&MkjhkkG?ZM|m%8nbE_)wry)pn%u)9R|@OTT;0QWH%v-@HlT;Q2PPW| z+FciR$6;h3}l?51pCy*8Z1Ia@(!KTDQ8B zyypF@J5ruJ$$w2Q(0=^DNp5gU7LxK$@~La}(|*0o#fK*pC|eGO@IAi z%&e3Am%-g}o;RQ5bKR{^miyZ$}SCSTEr3B!43QtCbISb@Q9u zZrE%8zMIES`0_w>TQ|>Y9P{Vqcf0ww4_1Dqd!?H%do{s&xUrkh5$>$Nue6(|weI`w z=101Dew;Act+1Ql9ndiA+q=5?YQxg-57%|`$3Hsx_IrkI{_dS`A3d_Do1Z{MTbZCIM_~NlwA2Gbr#RG16X2>nibn($GcST%N(ZyHY zr=AeJBOC#cJVlmue)|;bn)JCPv8FGZC(7eyzys4 z61sTo5PRK**e9RFZ}XT@_Ka_FFK?Zf_%HU zL2+Zzy?XOHU`Cd+2=0{9iixWBGG!W9*&Ws=r?F`V2UsVBXnxI=SCXw?1(C zKqrqJFVwp}*U8;p>)I7k-N~QwKQ=b%sZL(u+PuvCa3>$qROsJS*vaR8SQ2sOo=$$_ zbp_4(oKAk7aCqah>7Be|SH5ZVicY?7{X_RYxu}!xx@I>1I{7lgu*Y81b@FfaKc1Hq z-pR-LTSp7yI(gpNQ3WrK?BqWzj?3RLw38pPrTNVA?&SU&0e_v`H1f53Tu*iI_~!ej zbsz8GmS%p-Z$~@$D|05MoowsiBMM6E-9PH!OYI?jqu=b{V}Ff}ob%TX{@u%+X&ayE z;E&!NobuA%4*ry%JxF+}gYPNbk-unn2mfMx(dMRY9o%1C;HNI=;9Cw458AfAgKx;0 zald<32N%Nn^gB~KxbJnjw_mlagTM3Hxw4lQcJNz1@EUY`TnE2qR`||Ayo39-+=#yp zUT6FD{_PVw_+;&EKPF$@!LN9`!dGYAr`6}VSSr3FA=T(mL4qiIu*)zYMbnv1* zKde1@+`;_}n-;qtbMQxFAFR@R;owuBx-lu{V+X(G^Zg6%c*nu-h}yn&ug$?*o*Z-h zhZi0E`QsDKH#9o6-EU#;G9Q>^RhCR=(aqzzCj*sW9bnvaYX6uQi4(=NMw^NTTbnrJ*1K*!L z+rd??QTRi;S({#bE5gBpSB!lAA+3Y|GWT7Q@p2(sx(r3lQ`*01e(3q9=ItwUQKs zVj+jl(Xkk%7{wI*-x0Vpy_gJjpfw1z?tz|g({~}HBNmcU@HEf4{vZlr`f7kPEGNVJ zOth2#BIL8+-6dL|vmReG(TMuf7h_Vv(=%eymY$ZQ1S~*i{*ceE1uDFs4 z7-$!#C8&L<9BOS^p&*sx%uOvq>sILd6p zHv_Ff_WOG}j)C^eFOe`XcmH=2WpiC-cj=1}{a%p;N#xD_K1Y5{y(L5R9H*6?(x|0mO$J6?}6w!u~rD@&6O0+4B1I}JF z(Axbq*FZk`rBj9mb*30vVL)x{togr3Kl(xleXrxv7S=!?`Ub5T=lZ|oH2Uk36te1| ze$$Fvgm78Je^F4WQsiGrv@%s1XVo%VWt{9RH`lqNku&1I7mv&1|K+8qWW6*phRRr| zxpKWO&+iNmv_V|3f>j+C=-ar?)4xMHgL}}6@vQ@RiX<7%gXS>eBS9p0;4v_yK_1Po z0)1n5V3JFCk{W?D&O;CW^0Mh1$#SL|SU$-gcnl1gkjIMim}>_nxrC=P%>&N24B#mt z$#5P6%O$zaLrqLR{{06I!ON9-Srp7I9A6X}?9K*TT$op?6b_o`$ws6uVRp&b)Vd*xgL71{b|T zOZnoUW6(%9<{Q40`3gzQ-6YAgl00les0ts#RGsd6N{dr0=vq&v4j;|bLh$d(u+jNY z4>l~kf(;X_Y+(5gSL{jcDlpd>NHbKy+&`AereOKSY(?jU5k72$WiZ-j5F3%`i#9^o9OM{gA8HdcK1`G9hi{^*m?nG>)0jgX!FF|P zpe?{8sJ&1}Z>CNJhNI450SKt>W5L%mc0GuA z!W7t6Odq}rd3Ic4cjrESlvYp*ObPo7o&xh+2_#<&_Z96fV8c$OSt?0zNBe{+w0=XC zY$$9sG}VI*g`I|m`Ps?-3dm{+W9%jjmWEp;zkeKj#elFZL+>Y+p=4eO?k36$RoOR4 zcOJA}&ig6&z;HYOm%}5$j{`Z+Q+WJ<^PceI;PAmL*c@mNFby#{eIf;EX5j^na>yYR zbx2U?#eRf33`QLWhk2U>Y%b~xTlpjUQ;YUsxe}nU-+|1bLkU=OY1g6jfu>oKJ zd?o-s6972@VJed_)D3odnGF@18TB*Cp6<*m%-tlFiSokT*kFH@iF(r^wnK;y3rSV6 zki@|(1pW|WRy$CWR)3qygUY@%+N)xVCs(p zv`*Wcoypj6yZ}pohXBh;K zLv0Ui4Y2u}{0u6w3|eb72m^u@^ulsM#81)~dmG{R5vD_dg{Ml8GaQ7C8&w~Rqg|`J zP4ZvTmwfbl+@yG|M&CeQLJDsJ>SS4xj=s zKft5U1|d&S!cfN$yI-rb%=#q8j^fcPX&aIZJwSxcu&3Ck(627*Q*=H7>00EpUju`# zgM48O^L2RJJzG6&;<&9g7~{>xgkR0ZU{k_N ztgJ^Kc?|wTyn=p`FAs(<4`PFNd7Fa9d$M4mlzBTm?fqIwVi0SF^GMiOs*4hJ!FWJpfxnXZV_f#fc;dfn z5RLc-sUJ&YmQ)_ff(`-DK`bwXd^&`MU~Z9Gf3VHho|d11c7bp`4+B21dE{4fTQJxQ;~ zJc0QQ5tz3ePDhxIPoI|bljbkXU67%M4CnlHCB1IL%Wi2Pr(Qv_FSaa^=C$)BSoBv4 z8$vW89mGr5JqMxV8@TQ{aLIL#o%~H4&sEI#V|TsarJ(UwE48yP+QLWlS*gC5ms2q> zV@w)>zB?j8tZ%C{4!~y;;WObFmk0Qb)c%9e{umn}D_|G=jmCgu7#l2?j13OKQ^7oU zVZI?WEA&^gLB=bLZ2&oKaHTXq;rxYvkY>^W%u}GhC#M=RUK}7t@DMO}z-Iz5f2H>O zv(sIar#=yQRv-B8#rK<3=4A*?70E`8aUfs~E3wk*&>Se-O zXsO-3*kH4_$!Xt=!zd9OHor_NB2E_X(G`QSdK}X+e9O zZRn?Dei#e=%)VHD=4taVxr^6J3bgO(<*dOG*Lh{wW)4y$!|MXpPzG_8V2!Wm~P>5xN9k7wj)1)+b=-svW(3n!e zl%LLI)>DlAavC;0E6ra6!=j%j4uY@yvSA5B9QbZYtFO)5BwhDc6fLD&1ma2NeCIkCeuMG;|2~)R|YhLbRhemsxPH1{=G<#&rFRaijn0OTL%aQa+VCQ=$D; zXn$3LkI4^>stQLKytAJ1(E?iv%5vI^?gue1cm~itj(lAeCXU-SXPy~x0-Fokiadk@ z^^IMwTJiUQbj*#g5v~R?y0~e{KGgO$(ud{{e}z`?hJU2HF^|{fwuFCNX?*!UUSQ+r z4QNZcMo=IR;U?g4B^z#mjWI3{$2HvWumHWM=u@8XDcA+qbWWXbO~gGMh;%0Oyuvtg zJ@hn?u1G^D-tWPXVtM{R)WLaJQzg!RVPLEj2NhW_;x*!(hckzS^jj4j&fkmF;8n6L z@r3-J^Eb7D=`yd7&Y8!VZWGERjhvK+@J3KR$fRNHAs~LiHf1a_T9Pu1>nEmWX0rYV z4=h5E^dq_HXfKUHU~Mk_ar@BLwv_@49gyy0#Hom}pMGFHjBL&ke$Oq4NQ#%p9d#meF3 za=G(moFQYdj0zcl#`QZLAItc z%W0SKOBvslv027a8F$N=FQZw;6*B5&)X5kuqf*9RxgPB@9+vT-jL*qvm9a=hr(KTA zdNbMH0WwaM(e6AiXE3_N8B|?C`H6)tTd;XH$kP`tQEDzpgTKjb+&n(_$7D7l4J?-*{jwvcAFepoQ3)!?BO~uH!~*VPRu4$ zyG0vvEXH*)8D`WX+q_{3dqtpEF`g|~(D~Wx zQqssaH@QHU*z8rgIrx23kzhtL+k(HXgp0S?!%)dsTK8dxgQ%OevOC=@$jE#}x}!ug)=Ar1VcH7MP4#{le-< z&sA&n*`{2Rs1}}`N;d9~+T3qr*@oK`viup@XoEF!j+l%TEJM+!m{Zol&fCah7uEQU z&CH@M;Iwc!$&@QE30=HsW`fg?d>HbQqOlp7#`!7h$eW@U%!`Si{7ba7Znotd}FXd>}Y-$L3v=7!q-;puVI^Wc$Y__*Gjy$T(Gz0f}{IHTB8F0*sw zK(;v+BNytXHyd-PYoxj^%r%-f=#6Hv>u0S(t#eUrGaLVV>9bSW4Fh7O@dJ@eaDgV$ z7?7B;&KQ+L_9u=NxR4Fdz!`TL7sY4fh=yj5L8BPs%G|UxquHrRyEu+mQeaFI4Ma=W zDYCm{R+#NikOaMG_%Wu&X6ELki}IL-^2Mj*SZ12d*|6CXve|%elz_%EnxoB7V^vD# zBJ^%pn6bky@y3)pjlYW@F2oo!jh5e?xMx63F3S{^mAc53fi{NaSc_X?W{xxnvv-My zdPymnxkmOLg`k`idWS;d@O+SJKn)a?nu=z@Xfz!a*dfXp6gD6H>5T=AwV# zK8|doUzM0mmX@8@B+eerX5UUy2hKX;xLepCJD`vJOtFhBsnYa>U7RQ^w&4bok^NbS zg=dSS3EL_1u^HwZ@w_PWDKTz7x(a1k!phOQsAEQIG*tm(GCN3pIw~6XTlFM)!OVHY ze?qa*dTMOeF7oIq=n3%|S;i=7q^Hg!$1Gt=nsY1}Gd5U^iP=jsQjO8+DP}g--N`0q zUp&v|QaLlT?#wV}XRU*yFS4M|r{!Qg*e}jZS2|TE#9nN<2I3(?YO6*HU2M5}3W+WE zu1kFMycClp9J1e|QsoAq>jcJTlQ)uCGkJ^q5;(V!;+Q|l#$c0^jf;w0izycd#?z_+v2Y1U{X`yn zr52keNs#kFp?@9!M=kKdZJLi)e|q6USm`&{|7CptZvk{?Om`4BXk^3mO6a_|mt(~= zPM**Qq#PJ=1zylxA@aWwH4VyM> z8YM?oej_m@6%rOaZSNy4^4@$AtC0S+vd_yj(&^v*UvOTEij?vB|Ht%Ea{3pL{-e@k zrNQj`()QA2e=Psr5;4a@H^vrzzT$HYyZ!SupNIWE{U>c-+wn|s(!G*q=P_{&Ow=Ne z;}a%G%7j<%i+);E}f4j@~EVhDXF&`oj+Yf=2%iABiWVGU7m(Yy;3?0Zi;Ttz+EBa z{OkDtYylNx+d-ix1hxbC5I(#R4t_Tlix-p3oYK z&A})Q@U^iL-wON*FJtu~{y6YU+zY84f{0&ZEwdK99eC>vC>Oj5_y8y$d=c;b7DR1S2Rr~Goo&F6 zW&Ts(aS){^q_vvF6K(@pA=3(M0@=aafHx)}5BLb+)#WYTyc) zHvpdjkv`7>hc1@tr3P{k=@tph0Fj(L;Ikk~zaKa{Ns7M)I64{QRTsuL;4zRAYk~=% zUy6PUz8QGW3XF~5^MQ{T(7xb{fuE&FV@?}za4PBsIkb)<9z^BRT8XD*-Ud_{B^^}2 zGppe@NZ$wCoF=8;0vwcqwjepcN)YwID&Qk)Fm52e7^qn*#hZXlphDo{P{D|KI%*F>Qh;Pd8Ut|3$cx3@&-H=Z>45UOFHLwyC2fhlpb_@Cy_)K8n zR>qc78lYtx`Wkq`UqR&C4xoM~>WFwk{|8_P@BzRUP#t(e!-Gfz6=g9{34x^P_lI4Ez@0?8mUC z27Em5UJ%(iAJ_yU|0En)44XiHJka}bv>np>05d?M{{TCmfS!o&2Bz(ibVvuTe^Rnl z9`Gd)>A4?x7)0{hfSoem4ZP_o$b_6o;N2hx_>I6lPh$)PPxuXJKX|Pb?`wldjtQ7A z^MtQ}NVis?szl-m*Mca0K5)0p6PC+7;Srht5_nwZ2?I;vXQu=f4ty9y@^=G&29Zow z2AhK-kmfnyRpnA!Yk-*`@(04VD=?oSO)GG1CHx0`Ch(TMl21+p-U=eWS`I7&k^JMp z$yHLh;lL!BPX^|JC=Fq;%oBbJN{4*HuxcroX3;qE4B3?a<2x=nq~GtawgpuPWe~=i#e}?*sb3DEUtS@bpWVcPJic z`K#n7gpY%$E>_^H`=znV1|0s1q;ouQJE$9ZcL3i38F~fwKG5#~`Uv;{U=C;+cndJ< zRrn<71~h@lCWJ;C+8BH~@FNiQomQaVYf@POz#l=>cJ07zuS@YefQfHN@r3>dC0+wu z3L^atz)dp01=tDN0e#q;xEBO%0j~v)cnj?WUIPq$TdJ=XxEAyr;!VIN5a~wP3!=8u zwBYF?hBGLmxYXxfu8tP#xm;0K<<+Iuj260_}zP5a9N& zaQzB?2QcPq)DgTM*aRZG5xy_;g!g|7yHR@J1yDH3(j3LR{2)qS4qW&hWFbBgxbm1( z$5h~H5Y0_}z`y<=&E5Nf0Y6IiAxs95oIGGVNNj81r|ptI6HfX`s!Jqr6-bY=Ou%PA zWPcm*OAyI94$S{ql0*0wNc1b9=Py!vA7CUX8FC2!1bPm9A@Btd`9>Qs=>%+!_-0_j zZ_ponA~4*6I$&Kj;X|Ny#P0@P)gjea1MC2`A-<@SG52mMUJG0eBL6P}Mx2y%CaeTa zgUl+RZ;zz23b^YO`WND@K<9dH!mrOlXT%eZ?ZbQqegZIa5XNlqgk8kL{@p<3U|eUx zK7?~Y#6m?{UE9f;Rz7g*#Ybg zfUhA9;X{F>7wiMPc^KLXX{G^pfD#c;7_P?sANVamT@Y-5xiu2_Jcx82xNe))b2p7Z z8l)%u5cEFyR^Y2wN%ge>SB!)&Al?8By&Csw;I+Vmpg!<~-(8D7cMf_3@461Q0iO?i z3`FG?0}sjkr@;B4QXTccUJ%WRgqyLBI}Ulb0Edo)?%>tH(utUhz?TCnZ@?G^z6$u7 zR^kr=!^2SSc?p+Jh76=x4$Pba0#Eo6h}xnR=#Y8BX*WsnggazjA0e=_(@|H*RO$rw zGl=?249B}yk;sF1Rg}Pfnt}EQe;jCxM*jn!4)louf+s8okq;Bjn~8paIq@Ly0%#A? zuvo0e29a)gz$vql7V#0lCqb>?t-xF7NbRy5xOpyQQan(Fb<@4z3AG@aa|z!9F|12& z0dlOX4gens6y`%O@UFl^Ao6VoaK-}Y0Dsm4GeOjLgyZzk3-OUaJtzWsi-0eJBEdHU z-&};Y1K$Gd0a4yw;Lt>=UTWZO&~l_9d{&Ns4)`XB(rXqAY#nF|(qJzf_8y3ALhH$Y z0#Tadz*$LXf25&zqCW%CZxIflZV7xD@w7hwRS?C~dpkptWq(^Luwl1CU!>6j!$7PP za)3!7C3t$Lnch8ipj<+FFPV5kdbgN(LV8Eo0=p5?`?<~F3F-aVILINScTYbBPe|{b zQeHxOzm?Ju(z~n_Pe||85Kl<&_z_P??_?2ANbhhEPe|_y5l=|(BN0zX@Ba`_NbmCy zPe||H5Kl<&*AP!g@6ixXNbjc*PdHuX3F*BEiYKIZ2dM6Zw7#Br!hIl0L+k17GSB{X zu&-y}-8zs*G-H1Q9s_lQToL{h=mTsAYJe(`9lQgC4U$+ZFcdiOI58Lb;t>zJ9rQWq zRZtU13;F=`2xu!v1u6rXKye@k^1d*iu|`k{=wZ;GKzD#{1I-5A2>M|G?omL8KyQGa z2bF+!f;NDRpcxBsy$`w`G!o50ftMl{7{e^PDKJ$z+@m` zz=8P$A=4kk7hWMAqZzYaA>Pv!*MI{gODx6~#JBuGJT85iDOUk)`;Sn(a~Ma3$cO3< z>=EGN459s56!sTOX1B8#HXD3A*2~U9C?5P$c^@=Nt#%2=|4G=V>UR7;lO=$gjq~#n zo{j%w!PD`I>u=}j=?VSgN|%es#k1%?_%~2LioO#O0_4$-Vbb1H&K=KYV|OI!TX6|u z8Z8TFT6Qxi96J?hkvEKaA}{T#Mmu|@ApM4md!Lc)EA0!G#D*b{vy2#Vx29EM+5Nj_ zQQjq@HVaVF8gXB(DJWHgH~DBUt~BwS2DX@l=WCNFIh(?~2gtp24=*||rJTqnBS#oQ z^p6fHAJvuib20-{P=<2{H{3&_W|!~9M)~jtEy{~Wo-{Fsb8k7aVj6b$vLMax<1{Q3 zv13t_Fj#OBtf|2ltE3QVg-aVY7;+bg7Ln>n`Z(?7+>7hVdJWv!Yb6^6IeN&+#%@!& z*tyCwpjKDTf4O~~`?6iBEyxB_MVnt*#^sj(BfG~SKdvHRJM+cb^?Mvvsl!)sw~e#p zS2?gj3Tn{5dz+_glPkSNNP5uG!rm>S99Y>XqzHrqTki55-uic+!(AgQLWh}$K0tf< z(awL;u6QxPG!k_2@W3sg2h$4gq7|hlnEA*->7~5`X+JR91&(~Fe-|$)JLUbH-5?AS zF3n5zr+w};Y=*canbY&gQ|L>Kv;&;9%O7#l4t8V*+TCpIMa?88Us<3Z#JKQR>=^bF z#+eHj3NA^J&kFS4;ye=uv7fJS{*uK1%zy#ct^!)7Tve_v*OZ5r$Cc~LlgmxzdFA=# z){3f%)(U%tqk>hcDm9hb%E(H6rJ>SPnO|8{X{~Ikv{klN+AAHEY_DpsX0LW{muv)b%r`q zU4C6rowcs1&Q{l2$4t1Fg$*LgBT@Ujiu{T~)VryoxuQtau^C#nK+iU4+FsQQU6s&Q z4ShqQaa?tBbviW8gU*H3tX2t4)X*gq+C)H~IB1j%ozkII9&~AkHoeeC360dyDHK{o zK(9DxmJHp}p+6&24fW~uruw}4{QAQBqWa=`YkgIHQ+;#2t-htcwZ5(1Uf*8tsPC<34ax>pgStV} z5Za(^h-ipxh-=U{BsUlu(i=<-c@6mug$+dw#SL)GeB4t345jI%rqaApTWL#aYiV1l z9ji?orM;!BOj)KXQ`@(yQ{S3ag5%s;Zh{#WvA` zN?0$nIzqNx9_&_JT~*y&-BR6F-Co^Wt*lYkgw{mV#MLC%q}Sxt6xI~iRMj-swA8fK zwAb|3C}H7HST_!qO@~zrYl~~EYMX0YYTIDn-dZIr8w#t&!J_G~W+5zD1uM3|g6*)L z5|#_CkAT&ZVX-_|s~DDQhLzf2q278WY!eE*#K9)%uty(B9D7plnn( zhBiht#x*84rZ?s_7B&_)Ry8&^wluaiwm0@RqW)I=9sy8V)z(mJgf-5ZY)!Z3SqrVj z)+%eWwZ+iCmXfxT_LANbWvRL}v^1hL zt~41fkXKq*T3lLH+Kg6cLksklDq;Ij*gdW+xh%abudJ}FxU8zIxvZtEt*pJQw@is% z9a|@v@)VHt}?kYy)v(|uo9JO!fzgETWe_({Gk=T;D8^f-~(E;zrM^+W-7}s zD=M>=HI>=QTFdNZjxvVvMN_Ut57U<$FuLTI7nNJfo62qFt>yM|M>(rdRcI=-6_FMC z3PXhneXyv)iau!jKQR8-(W4o9vqtR6dh}uwdT>m+ z@$guD84r)fdwKbhcsIi0O-H&NLHPT&+V~P49#+CTyUFQac>4Y)X3nO*RPtY{5~@@= zR+Z|pf3;B+#V&d@l-Z!_WsK6aH>x%vXBX?GzN@WItx|=nR1XYd52^>;z48IIDhFi^ zN~l_?RxJoaMxk0YTNeU@aIIRE5rIy|s#V=z?HL~%V^gb40M-0gt5OwcUhUbf;{eC3 z1rB8AZNyIuo=vQqrpJ)c%Me8+)p9)F<7x3{QmIS>9(%;`2=a^x_{jt0b_nh48BMn# z91$R-YL6@++VanYrZeuhm?xQ4s%ccT96uU_kFl+q#DOc3!e~|bRCMdlL>)dqYtFMX zReV@9JXIvhpJeUB&ip$(;-S&oR4Vgk)Kl5L+NL3Dl^|9NUW5J~wJK=niNejLom7ba z`J+m;g@B9OmS`V&it6d^=Rwgbpdpm_9Br-XzMvr)ZPIrJ4PXAq9tn>d;GTf0>DvX5 zB`HG?j|2@b0+3iMcy(QQ7Zv5`0svHkSKH+&_TTXLVy8Swefzf}Pt=V>LhxwQpJWed zQ#Dt7tW=xmLJlV6KSXn*DdPk0buAdH8OY(dJ*8bAy?$&9>N%kE>PYvK@gA zd_a>16P7!EU~feBi~dd-h~VCy!s;xBnBDpL`ov-k4c%qw+KywFBR|ofoJzwksYGU# zwr(o>tZmQ1?S4QFukJUHpY&l*m8!(&>?6$rSr_{pMy&2O6rg+^mG?k-m3HA&cC)Q1 zY6No3!MdP!#YARnH^MS`q8g1|x^$l)PD?TYle8HX!D^3o7z(7BT9vBoaH%E9=pMc+ zSFO@G?~&%C7pWr(q_!Yzck(y6tft-6yEfggR=L`w`~2sCr*~w~-Kd^#6-2F%Fadh) zsw_!q7>Fv+IcP}zj!leu)G$UabF{aMJJR>t#Jxeow_Dh*sAP@qdv+nJo94MKOc(u} z3;RzHYe1ri1Pu*5S-qugxXK57jSmUIS_z->4o z?&*W6*>WGow-X2nA`z}f`vC?Zcq#7oMIt?r(xSHPezl9}^Lh>?Etn#YHi))W+Jnd; z9ICYY5Tl`0X^$weO|%7tr+l;sb=0ydTupo6R=%kFY&7yc_Hbh;Qw{2TCzOeX%eP>X zFWn5Xg}Q#O4SWERz#vVm<|Eh-xYBdf4>D7L)@GnZBS=w3V579C{g48WwiBvXX`8TH zWuz}5CL?`AiG}bWq%R{+oRpL%csi?*Jg(l%QrdU#3M>TiyGH8NJ1Hqg5chGGpx(fy zw;wWeJ(W&NnvGR4&8Wa~m?l0j1*>4u^ZLw@_gQGL(~<sZH_Uiao8(|K+XkylE^ zT6N$m#)5IAaN;LAlD2>s2f9i#uo=W^>EoV!b;1Yv0&S!*$!u=S9RrpDezDI!20sMX*(A7OE-ecb3x77ztNf0D2b%fiq0R0v zPyq}1G6G6c7=^TmaEEsCeJr!%rillDY5IQj5>6|rbzqzR48ON+S=Aw&FJTuE? z5o^ST^qpq!D77`JR{x>7=)#y;&p18dN!F-3&$Og)v5EMfXHrtM^C7{lTQ>rSPIAM& zLA_9=eH#f?p-RPGGz^OEFdm1KyIO7WXd@5}w6TcV8`*4|Vc=c6vWZ_rqc%~8#iMJB zsD8`o&U*K&a>n1o)vE6>M=DRkU&C3i*nR_kM2@>UvP!!K5v+~Mqx}Lg^OXvtBg0*7 ztkSMPQp*e2aJDeEds_!GOrC@%hqDi2J16jS9YmGx%hdja14qBYMu|MKUkgG3}H z-0vdcUU(@6(!{^zXtdhV1;x>{W@)yt?KbgXu(rgvV9{bn(IVB%xlh+S!B&UAiDgwe zNTyhhnDo$lE>7g_x!@#-dxC}+kT2RV#hCd}Y+<_rNeag-*~Bp>yI3hsx)fs*_gKVi zl`ZTilA2Ob0`_f5G6oGtzW~$-)DBkp?+yloI8VPuk2Z0>(U$tR|24$LeL~ny(NZH1 z%k?s4S!!rpb6>EClf%vKQ$~lyn!dASzazscmS>0gMv9h-a3QPVc_YOl5t|!}HZdbJ zEfq1&C`6+v8tsTQ2g@y4yPmJckMka?0wRq@eP<7A$$n>Ypo@2m8Ur$W#t0T__H~Rp zJ8Zi-SR1SoJ7rzdznsU`$KBaY-h4sB->b1O0MSVh;~;iQrAF4HYZq4l18ioE&&!E6 zQUWoS+gRi4pcFI*5wzrF2IMLXROZUXJDu&Mxd0>mf}iFhnPWe6D@!QZ>3F0BpB3h*l+tzt^C>bU;UDA(?3&T zb2sYsOWc@weIiz|dW^XAWfIr3!*-d2C+(i87c8EsP5Jn_VJV#&tU%61B(71;&5C^a zFC^%p@DlQ`^O}H%wCitV{6ozy-v;Dr2-+1H5-K!SEYH`^@c|>_{Aln=^`((|mqp!B z;T|5Ji9M))`B!WOdzLm9sd=%87!aASyP{nyK%Uc=oVyteZvSmjoKI~RciP-16K!t4 z3&gh5mRgq`R&Fb5r2Ri{7Fr(5z=mA17sI}N1eG^jYCL8m{g~({4?jhPs7T>TCG;s_ zJwlOwuMy5(srdB_;{eMue|9}RW{C-7a_C+l{Zdf0HtUio*zu&E7J9GqFz4z1KHo^RTe3J8`Yb3m*Vb>(;C%xMZb z(gjEw?WHm(C8F*NWD4Tp^!?H{q*3DNj6?oY4(YHX5~sIxup3*EkeHDIm~^}dI5#2o zJCb5ZVuijl9w35F(rA`r>_Nl%PY7@(a>YieT|0I*q3a`Ekdg+W2k^M@TWF5FV~eEw zx>L>T(DZ-;vA-litd*kVYB>5Uszxoqt_up{aY1Yd=tSK<)CI0mTi^=Rq9Nvq`+|mo zPgs7BUdhKGGkUbIppLsS=t#!I{2S6O*y-D-5Af})w3jXH%N_}?`>77*B3e3(Hg266 z>0mQMlqW6yC;)5*04{<@zb$y9cWqgz2lp(M!F32~x1l�WtLX1CV~(NI+f1rC}~F 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 MeZkQ&`*ffFPm#pk^#A|> literal 107520 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≠E1Guy$3q1cm0^6?vA&YLFxQfEX%>>{wo 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 X$2XTn+!1fY7YRhFBC)J1ZE@@0<4|md delta 40725 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 z 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 PPmlX2c~hRXc^Ur!nJlRx diff --git a/Compiled/plugins/Sonar.dll b/Compiled/plugins/Sonar.dll index d93cba8d36f388ff7fe89444b4c5f919a41f6d95..2f6ab29a117af78ab4ed1db2e906db35cd0b97db 100644 GIT binary patch delta 77803 zcmbTf33wF6);B&&hD?^B!!jWO0s{mHge4Hbgd{SZOr!@U5(Sh+1qC9A3&ISbER!&a zW@!3~wqCqfz2b6xy{;f$2oZIXKo-Ihz$JhR3Q7-y7(^j}(*NJ7o+RkK-}ipc-$$ma zt4^Idb?VfqQ>RXKicd!s|7PBpt=B!Bljpr_&8`y(y$^3_`xm?73#l94V^WJbul6;Y?kNuD>nD(AlP&q}S;p@Q?nJGxaG^TMWq1>Beu6 zAJC5&yRoZ5C!nYq&&>q0(V$ys#B;7e7tw_>!vAeH=*C3qbT+*~*Zb*yz2Z-*dYwIt zmx0X1d&JZIdUhS*Ua-=QtR+qq$00FE9%|?_?v5%X0i>(O^VS<{>U4JeKVts9?t4*W z>xZ8-5ZM{eIC-t1=Qu_P2-0;$Rv$cX_|J~2b8dI=(|DckF2Y)jaso+{4;cE6LU*XQ zy3zkxYsAt84?Z$a$GWB4jB+#J#>st*-^q4k+%pjmdWEdL9%Fi-Mks6WMEL4eBo2Eb zq+ETCkh+)K5z)m#KSe%;MN9 zO*>a_|CBg)K5jsX=87s|s-iQXPm&jekAi6+p`aY%SM4e9X?M|CrBlz!1 zHs2ZU)WxJfbZS28e@cDw%}=(0mO4g>YRv|+nOeWxkB73_nj6>A+yFpG5fjAL9Q4t) zVmgRPKxqext5X@Z&6K{CDx7zU4d9jV|ma;4KL3Svc~ovZ_sg1>_$5- zY3!ZAR2UVXP;?VvIsmDB7+sZCCogeHCOw*48`ak^Aya-i%I4jF3OGpITz=2<%E8}N zRS-R!g|bWTF~Oy(s-nhtfK=8~7bK|(Gf{c;H-fU9&A_-y&rz0Y{SmbA;@8N&hU@~d zjtEpH>vdv{AWCzgd58gzfJpDv?&p-$(aKav+@^xcHVJHYyv(=yYWP&k&c`i0*eirI(Xpc*D(O z)5|!@Uau zCKZ}g>zB~Xf;0_MEHB!; z5%8~0PD?*bVgYax51VTJJ1RRwOS%R@XwnY@$MLc9wb=gNIjk{P@?4^D=>%<<%SmW_ zyO+!%CAg22f^GU8cS5D#A(Wh(OEMsu#>Im?QhBAxg~-WIKkXD1m-ur5#I~PkdTK05 zQ@u;9CMpE+5SpBfJSF#Loi4Ok5R-E7=JG=QrHMKBAx$8SMGpV`k=jHijQ zA=!?8qv&;(aEN=_0C@2WR1(A%Wg#HTR5w&!eW;Tl9zdQTexdySD~bFDMk4j_X|zs) z{H7+za|htb-^1TE=bpRKSC{ye(?6T~ihgb+CWxj&tNeFMPM3Sfpg;b}8<~!R+MOsX zmRk&!zsPBwdl5%PhEwC~L}=hjL>K>$}NwxxtB}0JnTGq`3SWOkxNQYPpi_NKz{JN^5>zxS#<9!fFc~KR7HDsEb5v3)VVgZn0KyCZoO7#@WZhuFZRR+0!@JfigebNy~q|5c_>UCD*$ zMEYTVt6p&=QukUxzB|u_rKJ!ETaW3z$UFiq%t$+gF1oPDwbP=2c;!w_H{S(A3x%YF zoq06KSf1LkpGo*5_8Gwb!ZCtsNACVJ^0x{3EmyBG&99DZ$9^uCc;`x9QUIMj42Y)w z5z#OpLc<+Y`o7Z3Z+3mq@Om#fz8jy`g`r~0*>xTyNY8V82_5a`ziIgH$VOdpR?*0A5zf!%4B6RnG) zi+aEgh;znOj+gs%>nXos?UDBOFxEX1h36*#xnylPN^MvkK!Iv?GqNPcNO0IPPX5uF zYe=-qqvEZ(Kc_M^GXapAP3nIz*{19s0o6N15Uq_`aqn<3CbB8E0~B*z`I}rGpKRGc z?b4Do4~b{a_F4dgx8&Sr(j%hD92*|Y(qv6l9%bta58SGC+s&w%)$HMRl0HzL|5;Uo z&r!XsqyzwPWo(HNE#2?}Wl%{=Zob4vsn(L4<;)(F4DSw=%X;+d+LiD?cd-`G&D=3^ zMUUieu`z9e6bC_aiPpTK@=ra68D7eflM)hoUK@fnds!Sx<^}xu&(`H{q18mSF3yps zBv^;PK9sbH`!>zEvPp$Y#JyxenBGP`rqnd1Nv7Msgwc?Y(&b<_ks(oIq(Rft<-G|> z)7{B&WGgR0%}Y^Xf*i>UF+?{3QTk!0*sNM#XH{c_ta{I!l2vgzP}W>oJjfBm$#Y#2 zRA#zL+SDeHwpH?FK5>ATzY2aGVSI*-u5`VO*WK(jXL|}-$~wrEeTa84FV5Hcth<}9 z^>?o9HDoA*fj{^+Dl+W?q)W2=2;N_As=N*C@SW5P;z7UZRl+fEc5iG4U;$=P-z;m9 zr&{AOF-0uibp!yzGwt%xUWcWns<9q{3lDNUK@Hwj2&RjuhPR{1U2Nc%10@he&~SpM2rzhw~1O&%;i+$(#2 z^?1gW7Y5NlLZz!#Gv#EpdU}Y~qsS$e;h_x2qzYnUQpN(x&$_~uHQ?PLn%U+`0FVSqoBF)tdnlUe;1E2EloNNN-TBx1d$pFiyq0YE8kL zY8{H-AQUW;mjMftN4XOUJ~)zPoepPBlb`OL;2l87jD##e18Pe@ED3QW>=yq(8t`iw zdL3J{U0E$27!=He=z~g*^#_?)LPi8}zcN_UTrN~{WnJLPwm<~J=5j8E8kPYN?Zoh_ zLe^2wc;N3xpm!2N%)-jf03s_wwLSwtSPH{5p%*PzlQ9^M_ZsAo{CX zSAuLB@mOrm_ z`8{(TV$IGOY|`9{K8V&O$frCTOfkrH7i$J}O|)$7&*(VZBv0#`*?Y=3%G8_{Q`ll{ zxeEYTg`_6=Uww0i-hns&*v z211zLKoz|yz*@Pq1I^4oqA}cn=8ZNqACFn3l+mxNBnep)iVCDd*4nR=18RS{a7x#f62FQz_DH}D&y8#K-Fihee zK^prys_^3H0&>!n#Q+kme`77KPM+(t_>ol819heXo7}JeAn#a>kJtOs$YT!(GUk68 z4W}L&Uj$4b4RZ;(3svjPbP}FaVBjm}f*@WJ`m5H9tm~FtH)5c!OC}!m+bj2GmCpmJ zy)sZnZP#jh`^pFV_wfFpQ8NcnpTc}n#V=LsUM+7j^29HlF?%p_s`Ya%a~v`uV4v<} zgsRrRq7iVohnD?jTeerrE=G3c8z5Y@npjRFWW|U~T6Zqw+hnqEzC@M4tbdU@ihD45p+rUTK)p$ zhu|M5*rHl*Lt0BcLeQ$4{uR8Tn9?c`Q? zI2?oWyyR}3JEN7IP!^!wGQN*on*6u)N3g5_dM>b#YKur$Lp?#FfOlFrFdpxY0EBPg zSme+EZ0{`>4(!wA8?-{cJXdlCDd49D$=-npu5-Ns-8yQ>oU6hshZ!BWC~gDo|;D3p?~$`f;WBtG2xcSNbMe&P?D+ z|AMD@jeFt=JYAAthIj6tSk&Pf<_8r>e2U8$a8GfH=L@oG-Lnc(Yk6*a_Y}D*rJHxU zPMY*-@s&g=*XH21H^a$%Oi=gammYST^2Z->*Yn&bHTbtTwcg!Lt%LHWop#pEoX>)1 zXrox?TGUEePG6nbWxURn{t8ZMi+9>iX6;I*-XH~QIGJ4h&NSV1Z>1SrRm#v2FRT^H zcfc#IS|d_PA<=f4D}4`mAldy;7Z!tRZ5>Jpg_ZeHCSHRmt?Eg0YFcu#Lp%c!OD>Rx z4Rg|B`s#4K?lM+s9h4cjy~#7H_-dplkuP4O6Fgm|iTdK~6wwnUP4pU&%5ldUua>Af zbYt1*(7*W1yN&Ll&Upn!XX*jLR~6|rPKk3G_X)=R&a5eMOECi`COC}~<6tBU+$~3) z;sMoqJ0s6BJAu?S+h+>s3_RL`2!Bx65Z~XAhUZ1*-hmOB<`m^ShIW%jz1Ktb4NaST z2)ioH15avW8^g$a3lZsoP#(IQ0m&eR58Ww#;iQ$|VYnDEC%Qx0WYi8fT|892K9u)f z4vS8HtB_?WXT^uOCw7DfXwAv=`E6AW*B;`!$rKxE=W?GxJ;AWYqXjFYHKIGDLHk7qrqmyxJFH;M-j|XZGD- zWnJjZw)A0FyBbfxTRPX?M{ks;OxUVlBJ1tRS@#>lIA|YpyA{(JHQP~%NFZ~)5FLIWuGX{(Nrn{$*=wJ#m*ms-S$%HR-+(L=7RwFDs-xw*_z}i+-|A(F zA8UBLi@Y0;#xC+TUWq*VKD6L()$-ZgR6}Hx+#_$C@zWDS{slOq&p2ea~bq~fDRvm@N9bBOBn#| zOl|;jQ`ReAkYk&+(*+Fp$W9BZ`Uqiy%tf)XekfC|%aFI}=?C@QS6O<@#k+4usOv${I8I*Vt*%YN0m?&jPvIgBZc|o&o5Q2S#jvA zR8U-(Uy7MYt9xZ9EcR@=^*~wrap;NiD=2c!14`Qer3Z@qcW;y?3v(-D07^L=n83!3`?}tnQn_$qspCcY|rCR|a5*}$Yn)7#30v|)sYHvlEFHxpD3hKa6l$q$c zEIV)MCl@>M$Fe3(ajqT_g0sQ+1|<5zz3{2Su{jA>B<1BE#r`>ox9Du z=E6yqYVD3<*F5M$<_~7R2F40_o>l9eR9BjUoluqgMU1R~?M{XV2XO&6=@kVl5bPLg z<#Q-~qPP91$*9bZkPlAmWgKx_FaJ0(*Razfj}p2WP8;Q0gki=v;0N;vg$b#sM=dX; zG0cQYW};)U$X^Rn5_ZLghqCk|i~tzE5gb!KsFWSfS%yjf0uwV0b+Phs=U~GigB&p_ z+t}Q!m-8m&8s^2wPfi+U7#k!1d(x}{|B7L<9;;fPLQ1thjbFxG!bi+))ybnL59&P^ z77FIg9=o<{hli+`+7(Uz1Mf+(YjpHz@@+~>AE9>mQZ-=xz}Fb&iv8Yh@KqrRu{qqHwz#(Nb2(4C&& zlOxw}5^=6ZpmwC6LQ$P*0dk0jI@27afC+hv!l?=0p9kxei`P~8!CQxUBUuN`pdd}GXFa$Nc$G(~9b~3}EGJP+ zzNK&vj#9&-X*6Z~O|N}NMEmip5$!`tBU%cl+UOvn%aA9Mx8L6#Zhy-U`e->}O7BF* z`j1+vQP>Mm`v)P5FpJG{!IW|1!DLz;7GhNF>=cR3Hs3ir>{Hb$v*K-3IbHKIPs0He zO`S*0^2gYEn&n@nyb-tP2T;Y8?EzSwY32`l`K?0R*l4ONSx$iq%Am3ASYU|qZy1uL z0k;kIO*INozKzOX#era*DFQXsLVFByc=eEKdhUB13fz{HKOMtd7Vug~rrS@D)q1}v z8wJWX4AT1Ma;O+z&h5xBcy3ba(2Vi`3Y3}9C%%E>fob1uGe%Z`uinV?K=3?Bm2y>I ztA0g3_}xUbkcCYelQb-l>^$h7dZiMi4GH zL2UZdD`pw&2FbD?Qi0hv2sJUsB+JKm54J$ovGuD$x`v!9%8m~}z0aJiVEaS~1L~*L zFvp9sO}=kh{|V)Q^_(9~(>JANi#~K2GoMvm0aZ=&RH=lm7fMv-;2mpd^Gz%}Vss!B zsjSM9Yo-kv@f4aZ4R|Q8tFjy?e0YgeB;uh#>P60L+6n-SZzUe|O3zrl*Wg)el1}R7^>+;HvgRdK^{f=;S+*d7 zdG?STxT9p+5p;kKWZW^O$32n4lh(=;j7Olijo9~*qg#K}9Z`DN6RY&e#!I6z7^BIC zM(Y@aW@iXO;~TgWrrmRQ_BUMD$vf|~4SEf5klq&Tn{_}ezNCPEIFxFp4S?9lRL)49 ztlnuis5+USF;X8ZKRTno;dh<<+>E}K-w7BNt7<)foT?dVJ>{2xM#|ZMM+i|dMp~3R z;WP!cV`ld6dB0XX_fN$cD4sZT{ItV-Nz23T1rPEiKQDTCfzu&2iY@64yp*TUk7?pw z$)( zO6O17-ykoYHEhJo$nn*i>r8(^0%HXC;0C1lOEorkhOgdMXY$|`qK$%O4f4KOy`!cf z!|qR-)F5A&)jf%A&>?f_flO1fg7%&ZkOXS~$y*!x$XT;vBU@bJS>=~b@~yMuy6(}b#DO%FJ^l2y@VIv>WgtYuJjo#8LM~q zKyfVF#X60H(al@-&`A$gwH)VlfV<(aw%CzUVnSXv2Rc_0j|AGW z4ne-?x){f^u3)562eFV5JkF z)w2GP-|b<4YsvK)=nuVs%p#OV>d?>n2@f$e44 zVRuHpSXE#Q<2k2-O=nU0z`PYjZ=l#F$od9})swRdSfempl3 z2;?*t@SZ;T*dGoI^}wDR9pe2H1;mjx#%_(%7Z`W*YLi+gcFVfTt(z;G?jGDzn}n+M zH>|ZJ>fHn}fwm$QNkMf8!HtT}irlb%)s%K= zgC|;91~kes{InNo3Vn7*7J1w6FQ1kyoA0^HDqIC_c;=Z$Ui~gCVVQH1^;PoPMe$y- z!6jK=dybCk4?927hyQbN?;k62au3%yeXSh#qz}yJ`eGpKCyE=^QOse1aWAia>+;XM z;PB79f}Qou-yP*M)f(jdjF+pFbG@cW`>)N?MBzo`Ut^HKhj;HU$oP$_{rU$am)o#i z(l7y_wPs@x_h0}N*;d3tlj<+#a$bkNrN)@CAA)t4O4Nl*;eVx9b7xLENOg&U!ta6sLk_uS905x}^Cimn4bo-Az z*z>zrkAJ+4e(dx!7e6J%0Ho*U@G}s8p2SlqsUoz_5=DEkMwV?akOZ{YfstRQxpY4rH-g#?Xg*V1lU7=a?f?IZcpn9 zZ4laqV9)Po(1A15fitWFXQ&5f!aX<>?!lQ7tp{gH{`Vf-*n#;sbYRVywhmBA>j0&+ z4p53ZFmd-QYtFD9&;vc7$BjMU-fPu5(bfZuPGSuP7~|Ug3pTDj5uPVsf2g;2G8?Qm zz#@nU{_%12W22um`mxhbA^psypCuTdVhj_;M|-r=V_7xEhr{@^Xu}gh!&BbgJ0^Ki z#oA+|_Sk%JB*|mc7VR~lJ({$~N%qjUKx}pGivF2K|&zyw~|h+1@Rli9fd5S z<$b_{Rt2GcL|QfsL2?XkY|+U(?&~+`E0~pj)58EF-~T|c=I{}aQLns!3TV1>ooOuM zIIrK=+dGQd?8I^pNet1{gwW7wh^y9#A1sGt;2vY0|__w!mGY1t~uHoyVnhao- zS_4yc=@D4SkqU^{F^icQPZ}OE=_?=!C4sYVBcV15Qa^?bp5ECPz%$Fo$i}FgxWVj_ zXD!M$40=j_eo=43mf~&O7Y)<*yYMm7RHv}ZA$?qrnYC}fJwpSi5*Y}XiRn_S`pcaVVIw>gdtWzvi7dmA7l7Zer zhe5ZIgdoP5^$k}>p$ehJ1>&yD$}-|R{5go62D?=2b3qybI)e1vp;~*K1q)m6^bB`M zd69qu+g|?-Y&wCMUa&nL{A0CM>)jpo`Z&c}my~nrNzn6T>1DKi8`hdV5zef0!TZ^$ z*PwV$M=@I@HAh@upuq~u+zq`5C0emy?Q}l50evy(LeT|Jeu&hjxCnhe`Hn|B-)#mx z=~%5ym#+a_vbN%(h_r!2RUBtDGD9A_CT|GkWYi;l5f&{(K0Jy?aqe;y)o^%4o^8_} z4O8tkSg(&-z2k1EIGRZvh`doiGGIX~xk2kcD7Fzja0@dzL20r&3kmF!e-2 zU`P@`|NBdOM(2e=YtC%iItQ1)qq2+u6zacMDb8AZQ$fI z|Inyh4RrBEd7FQzfx9T5@TYmdMtlo%O9P4i1|(q&pHMMj*k_*(j~@lGBCbSwCpnJX zP$lPD*iORqKOaIvu+#aI=q!t7#W_T)ApQ&oD`Mn43Cb==TAdEDUkEQmGyyhGK^*?W zCB))R5qS*_@?0UIqb-NB9jOBGG6l3|!bF&#oZ~2;pFDxonvKQ!xG2<>_x)h-L{muy zcKjYwE!<9Uv%m(W;w6H=tRD0b#<`R$xcm#s$wXZ!h-EXVEw4Yn7?~R#{sqrF$`@=# zQwv_jzb$zA(B=PU1*+o_U=N%E(?G9u`2R_vdCDWO$%J{BVwc>L`Acndb!H3O?B zN+|hVhs5$IA?sh1SP=nrib%r!%1~4buMbIr_!NOFUm)gG@V`uH`*ywHf1j#gSN;j| z?duWQe;0ToK1kB)PL{vk5V`4mXMNPBEQ8)6yEeqOQ8W|a?G()s#Iqo(>U+cg15sWg zfayPXJ5j0s2co+D2T}5|4bes@7WwoBhZl=%$y|`{LXfquY6dShJH%s{zMjYm9W+g- zGwC&P9TTW3#UMy_Tp)Qo#uPGl|djbN8c$N3(X7FOo<%>lW9V|8% z`L1Rz=lJziWAuTOrie&GHTOxAQ_K}`&{^a+d!4>q;X1vCJ|w=GU8w=*q1JqVZXuNz z;1PmU{wI;H{~tsafJl2gkxt0i<%?b-)AhfS*+J#D|4Jo7xYlAu5~T=bipv+f!06#V zxtfnfT*S^Q*DPe_#(BCIKc1j-n|QT4ggxM1HQ%4pCDf0{fh_NbW7jCC_BeWo<|02L znvH@_X8@*J*s4VIJl^n%pBI5FQ2?RC4p+)yCd(X{7$yLCzQA>=+9WMM1&bR0U!7iY&UaQAeI z`ZgOGg^aS?OA+=6&jp|h0A{7fL0K2QxfQaC=Cl~(4a^|K)oL~4{(Z&c@?GX%B8xf=*#F&+is>GCnhX~>`Y96-Z6|0 zu$x-YrUrjH4L4IHb{cbm)@J^m8u^iCw<o#Ao=p^5%NjW0pnq~kun`6RWf{SSwu+rlaZIT8 zMqvNsF@X1P28eHRTEyj}$Ow|lsVM7n_eeB1z@3cWRCfY?hr46(o90;sP_H@Up&Fq_ z@T(6kidvi&nvbL*bdTU)mS!(sX7{hk@Gr|oYFcPgZQeA@agjz!5P2vBKF$+o&v-P! zZBp}6LdpJBDWSed2`UdI;M3rs2%t)|7bt@*G(~5jmkHbsb4rnaa&8f5FPlo1Bn_DA zW8?dgHoj$P$QScc0-fS2Zy5LFt)bZK06bC=k($rkA9zWm=*qreoVtjl7gW%^AD!?y9agwp3^Yhuk zSMfw`6CTXh7Ot`Ih8mzk7dpbs#Lzy#TIl_uI$p>oxoY&c^0Co2h)cvO1$q(fTkM_cn(EZ|DNMlRAk;v}_Ho;wro4(^E)+WSQAiG5mX zs@MHUQPv(e7O>V?ZX15@)y~zCnx_TfVyk)`%nNQt4dr>L2F5Rx-_Jeqq=sdY`(eC4 z?7kPjkGOO2yTsiWzsuZR@#}FC0S%_f@O|RoK=-mr$5kKK`^oI(!!P=e2y7FS7J#;!~;V-yjf`xt10{*QzN zO~=?3ud?g7G65-ZD#8q4(x#=WMR<%6tE-d9rHJ7A;L2P5^14UVQ17 z?#PN%BKSwK`jA4!Q7{SNd3K5_w_|cHzw?Aj8m)@78DCcA;Rp|-+Jw%8jQOJj68|Yr z=R7(B;GPZSgS-e#y(BU&SEm(a?RR@S75T349wWEo*CM}r^=QFYXAl>UaY@TkQWqBr z(l(mFsXtw+j`egY5Dy@bh+mH_;{ipFkbObQi({E}%&E-Q4=URU4vUi+8;wMHVpY(< zmmciE@EJjUdI?_VJj9+iDzAX4E@^TK@5|J!?&Sc(_^Pvpd@!MNM~fQ)&#&(YxO?*; z0-_OJZv| zgDclX8+QQeZT#Dcf0X|CPycGd?`>saLrHVubjI51<4JWN#Z_-xe4X>0Oy89ghFOmaK&uv{n;F)?a!;UNrq15h-(SLvNB ztk-7`_gJtV+F>-(P_5Swb7l`*kt9_113mOl;9jdiSq5Wlj@;!;FE5yPlwYri&TNPHv+@8r5XfWE0t-;@Udw(#U(kR{(7r1X?jFid zN$rd0?%r(iL?8#Tp2-8$+?y~K@_=?_Yv`{3$aZ%U=Aj^uN^eG~_m8#QkplNAijuh< z`0ewb)lvQlN+P)JD_g_*1`Xn(Xqoz0lyLckufY!GO~bz?sxFU-f2f-Fl2w$chZoG3CtPQ5e!ZH9$qcilkC*8RHq18;FR?|b8b?Fq>8@-51H-oN zy}j7}-XTuTR`%nnlt5->D*Nq?UjsGM8sXU|%!8rjj|^F19^ug$VhwXDGGtnxmr@={ zgN~IQGUvs3V2rUd`GeAG*I8FcXNiwy_^zuR5;vo@0)7aPJ`)nvLVBzlcm)O4kM<6@ z#*%a-NE337Ak3p%%C!@x>6Pq0n9!~^fa)-SmktRptsPyQrNhT2#EIC&V8?*z2#KGJ zJ8Qz$L{N64=| zW6?COOvI>UE-K{yvJMHsD?TcSziYDv?wKO2qfjCUh}C9^9-PM=9_)T^51Y2!4t7~R zY~OYP&aizu&^I|n{a+1Sr?Cas!B!P|HiQOKg^W-?hnR=ulx*Uuf=hCy;LwBF#!z53 zC6S0k4+ZMzgA{B;cT0S`)8yp$78u??A&c+jn}P>}IA!TKy+;=H^Qw@FQ9FwDI#T>q zsQSr>Z+8gX#NWwrh4A&ZbN^Qk12f%}R%?Z<%bp+PgBz^!lC9lSdxc@5;ZFt(Brt}- zWt|9}(gKFsWk%kyb)F&G=B|OiffCY7$aEal1c&~--$yLOJ)YSU;}Z^tbpgD z6FX?yH+2K3OSGGDah@yfgcqD2nmmXJ7Rt5zE|*Ou@g{9P9?UO%G64$z>HOPv6$f zI|g2ZjkMNv1CEVijN)T11(GTzP@10^94*eN*a9NCvX=qKR?8<%n~(!x70p<-#=sE% z=><9w@qIf17a@F9meqtUaC)_Hq@KCy={`d*qDHd3xD}@su|Dq=JysXV@&;a&q$oy< z(T8=Z8_bkPHPA_TD0*@}OV)?AtT~i*p6TH{Gl6%mHT6V;q*dc;@c`|!Ym``+up43h zqz6i_Py_*NJ?&E`4v1F*R>e3gK1y;9bEHr_3NMdm5>Y7cm%Sg_?XM7jrTm22{1mV+ z|0E)4Kf}8XX$3btP9hB@liz~C+h%4uAzr1)pZ}RZzgd|Md*GRWclUx}x^@@8axEPj zs8;NT7YJg+z_}cX8ZSsd!6!Q zJN_B_08aAQY*5VIf+^l+@`Rgr-zPAP46P zaIxN+O{uXx$S3blYS|{gT2UC+2N*tz1sl>EfF-S~Y}h&KriZrS9+hbhe$yL5i!cO; z-&_Oxt5I2j4?>77=xw4P7Gx-&p;cP5P^#2-kssJOz!t-5F?heV6JC_3ZvZOmBEP$H z(A^)ut=HksOCTgDlkz~ZQy@I-P|5_)OlUB*1#^lR3r{t2IwN%IWz@o>7!PzOQA4YA zp`OD)Z=Y0jQNatx3{Il$>h7Weo7^ zX?H9~JkY;s}^n>YnTz_t>`J7-c{6cej!- zcn6|kfzG+=l`|2g;66JC90dw3&rm6cC|yr!QOmzeOIIPE zFa}+C4<4Z-`frc->b`qeSP@dVu-FPs*mby^y=%PpAl_Y~X@v|~C2u)yQ)Dp}H`^>6 zIp|Dp7LMT1bt0(5W$Y(OI|8ggYypf5pW_fif-i)KpA$==YK%_Y8~Vwa9&o|+cLYbY zkJd5dxUU3uc0xsl8NNu^SGneb^m?bP?&{KiOM!UB3FjoP?TF2xR|TJn`(vcFhl8^q z?!Yth=#R(egui4m*$j=A;gs^sPJf(~DSzP_pPI7sOi<-|{h zd0z%2!~T-CH6v-;)6^{}u^5t;MkUpyJtGUW=i5`X=gZhMv$|STV0uIFM_kj?wypSW z!)J+s>cPCgtvNj{jL>tI)_2i_lr+TqES_17ICI|wT>MFgbVlCSYDx)SEc1`#Y3l%R|^2|&`Y?l;Ey%wD>zIbaq-9Dg^?yf z)~P{dg%!|P+;0e;QeML{8?H$(xG)rtptg73073}#W4CpbO4d4{1J=MXY83LijWBD| zKuN`MDmTnD})-);Hnr|{j_iA@feYh=tvVP zwR5yQERdAnN${Q3V+tb7>}YwSq9X_xH@eVntveUdJYkRC$&NzDOxEcxnZA7rfiCW$ z;TZd`s^q@}k~%*IKLYscv-T=Ez4=@UIyU77toR%KaqyKygI z^$$J+6&z8fg0*$?ZrW zkD}&}^5eBpu@o}v?K`n{=kF>`Ykddc61+B?%WskLJ}-h}2s_`lde|#e{D9`^)MjTK z+z6F(;dtObN<;VgiWa0Dl2FWFu7#nGuQ=R`-FXq8b(~wb1LFp)>4z8k7KC78qM{$xnuZBxCEP>!%TJceC-JMjt z1f)@At+*JM#Xrvk)q($V-%LXwT-> zxxq;deCbN9ac&)jT}i?%Xlm*FwmeeOJMEBP%DuHMcO2!Ogr=t4jJ8}Ga>0b1aS13$ zt%8p;YDKSLG;%AvJu#|`XTL$=L5CoS$Ab-YBYc6D5Gu zKgmt3@&&Le!s7^5=|cBIVE78ny%>jkEpT9SQtq4Zl?2?`5L)IlSW2&4};Cc|}>?rY0S=*X*R%Om^Ft07Bb68z9#>dsntx>`hl~l zdqdWWu&gaJGgj{l8GQ|26#-!+a7U!vPa$nm?#mE3NF4-jF9Z%blOS+=eZiY}d~6aw z2bPWIvy`QsJtjV@VR__E%t3r4gXi8qZw#^x-yhUh%!S~27M>FcCF_D?Z6)*}gfOxQ z$KuwaOmBiaPU!;W8kRu%QiJ_ct=Tio<)1(y8ni>j0%7xQW+56ln#=*U83%y4|GglDzvy%>G z02rp3C>gXzwUKKiyz^IXg5+qHCbK8PCWF30&fJqU@E;IfeBYyjNUN{xq224lVd=m_ zJAe`PvSg`il2`5FZ*UokSCli*Pw1>C3RdbPW$-9OKg5~o3~t9mR+n~z$lG4-l}yGq0GkGYUCmAOL0B-kioO|S8T}dp zF|84x9HjM7AW;}uT%}%$wGz86+~*@Av^{r+bqk->m6I#7G3&Im2+q+QvMS%?6Bfjq zLPYl7tkd;;X$szo{6m5^ zJe`_ZmZm62sCSO!jFOeHWLS9mW2}4#GQjOB_=t(_+t3FLD^^`Py06ElX*1uXCOkta z9<-B}+a6iuH||6Z8iPz~swge2io~km2PomTBg_Rcf=Y#haRe?&I58Ze)6C;G)Y_4J z)`itWMQ1Fo^p_on^j2cX==KVBIdIe51p{(0w(G1CMuijRVT*$c88_QAW;~*IX8=#g zhf_R8g@z$qnU`+E{uCW#SVSRKIRQTo?E13F7+9qmlIv?w>vTiWUNDEo+CRMPc{l(9 zo1W^Vw{~Wq6At@Miq>s2*SYmkxQSI&#B(0KTvmUlT(~Wv=M4Bd;fIT4&cl*&;A&BI z*o1CQly5ygC?P>B=19Jxl(%4jlCSQ*M0vyU6k9Xw9n_r&GUG^^-0t`2cB8bi<%Do*gGn8o^FLRZN9WM)&@f|OM zGQ8uZP_cEqtW>(Szxa#64aL~;&O!_?wyNr2_~dNx#gPvVR2L*DhcOz+gtHFcYLKR% zW|?E5mo%>8B#f35{RXA+K@ckx& zVBb0N#G%pUfWr)b0bA-&B^}Z%U==-GMaz?b1cY}QYwchN(Q5~lI(Sh5{~+K6@iKV` zN462E}@s1+~Wym?~&D&To1~{n?y_D^v+gSkr17hUYgdP$t-P`Ct zfnq4Bg_ZT*_6`(chb&rt#%@UC9qYgj0D_>eaIB55O5-D(Z?KxwfqFoq1JALR8j1c! z#jMf)F2G5f;KV6>Z&FzoA|C?tH<2$&yHlWA2YBD5R@VSm8~cABMWp{X_TNdg5&QdV zH`3S~6EY3%c(H^`!!lDhs1T1?sh~;mU)C|x zvcLXkof9Rj&fLM_I^OWjR_)8X@KY_0bNZJh+!$H2L@Z5)7J> zC(H0dU~Pfbto$3;#a76-*-@SzbmOgZ0ju1ooPQBW=!|DJa@TK2ZbE*s_kup~t*N-G zupAYZ7=w0{RSc&ZWety+%MmMD17g>gGH5|stRJK2cd1}M0vQ$h_78T0INyT3ME|vT zt9~#!VL;MB!{?xaTttLej|T~)(!Zq)11<+>iRBH zZsnUNJm5zZ!b(Fw2?)dKR(v(n)5%_3J3eHTmg?>0qe8~(JidCo){5`N^Xm`6=oU{X z?`?(FH(pFXo^iJhUtd4Z2fjD)#d``JC zc{H~@N9!^!wH&Gf3C3fB?}A=19u-orVet`szvHB#`$%vQSB&x1J+ca4XS7a6n3gKP zd9bL{uH<6m$X%McrQi1KG>ig0ZHk&Y@S+;ApyexTjOCaX9IedADGP zbP#lUogRx*yv1Cck>;W65C}^KWlMDKXiP}N(Jt19`qD2fX{YKXRvN>s#K(@s{mQy+ zs#_-F&&3we5+>s$FBi;oT*7 zFF~y<&K^loLh}x|GH~e`9}UB4l@bF?u6ebUqydSJRqrr1WQ1AT;lIGy6wbOoiI1lc zxIZj2tHQBkB-%7IPC8YI(q`CInoSTmntt4!0SeTzD?el3<$wW%JKX^`y)ezf(*h*5 z%`nU+HpO`L0GneZ98RfshSvdD!beg<7EAX`Howf6UqKo9;EO}8_qG1E`j#vWa!rmS zt7T2>dRhh$&vdyw51}*Kd}gTIG13xnfn|J3o=0Fl7nC&i_*egkz%t*7<$h4O&Us%7h$9^SbHBGhmz zTb?gKiQ>l8D`zp6VVu(Gf(OwVVoh*27C4H*I7Lo`Z(LXlNR`k>$PXb+^BeJ&Zi~c! zxJ`H~UkS)q^;KID#$eO>p1%e%2cg!087B246%HVSIe?Nt@usqKB{Q`1Tt3 zOU=D54fv2e8aiJPF~3;=^93Wc@A^^P*j@C~!x!wymG*5bJIeT=ciU+Qx8Q~RHW(k= z#yNnT&B!5J1iN||B1atMu*_-nT%_6y#J!65ZH!$I-+|I$2_a~T5h!$uogvE%Ncl$QfwmR_e&DLLM4ce4cR*2 zYVc*W(oQY?S%*R$A?-g32P7$oVt!MwIUcDXO3jFVtz5j(L z=Mlt7tL$9uYtxJIwdrLxr?@J`DV~B%|A*H7JHA;HHnI`cVpZ0kQL(!xX;$W-2un-I zh&XoU`(gGp`w>KZq;3#GwEkC zh)1#mD}T<{c%i-6Lv4_s5oDwWSx=BAYSu%C$T*p|h5Si!f_=jpYJ!)kvT z3Dfg{$9h$ThdlDwLhqGSP~ID-b#zrOQ}av^@6!`91_+gI>tAY$?7M-z#Vf zyJ6cfCWmAZAY}WB7_Hm`3u_~Mb#DMYdRK>TF;5Hj<}Xkd?ux@9YFWY|Nad{^X`Pxms6SS#;3 zounTwA3NRuneVNJCvTN|e4i1wAMOH-3I2pqgF9OJsX(6d{jh$oU|=w`f4m$14#Ei0 z2JVJ`;FI6^evoAr4WATSkFhxMynN#O#EJ9KA$A=+6-9I%yzMsl3sADEB_G9qxDC!C z!efiU?W=467_Jr1%M*SWVi?w2e&7co{R8aU&?*-1M&%zimZmQ%zgEgzkW7Z*_6BF3k{zB8M9Kz@R<~+e0@??%jaP4GzTv2ISKe@3wDNd zWh8p03z@SLJhybfZq;Df4QJ&vUIbjO0x8(k^g4X`u?uIxb)N8A!) zgdj4Tc9@#ioDuRd1q;lpr+p$FjbaCcuGpB1p03L>cRhLPakMi7Qk}-%!y=RI>BqI> z^#A1X0(9fgJnj!3(^nU#{h7%b8nEV9T8x+fHzs?7hr&!Q2ak!d8Pq>YAiSxT7*0o+ zQ1j$~wXr@bV0I!tUiutkb{ZB`9&=B;vgd2KA6T5*3tusVXERuhRafwj$A%hT*FeCae+_+v)_n&Y zlZ8cf`GrF#KzZ29*W9i=0$n7CF(~!Kk^2%8AAT+gC_=F;*3gTOS42WlQe+!WJ4i)~ z#?S{Yae?9z*PINtf_0Q|i3cgqiH~N}g0!a4nOX-M0^b65R$VvJwpcUYgxouwt*tfs_+MZ%r0X+#hztVc|9jw{(?fD9ZkUZkEL6A5gwPY z&vW@CsXIPMa#`?CZx-lmX!;B^fS!tt&eVf~zo4l=?Bo*9JJmgT8QCeY>QkGL7L3yi z3or{X>3%98y~36Gm<;64fLFOm5T`d!@<)tv8u!d_`fAN^PXp~Q9^56)hp$rbC&0t? z2-xiuze3~A)DvI~dKU`!?gTjmyTkfXCIJXLiUMgloc`B5=g0>!j>f50erQF4l|`$q z4o9m2r*aG?0Q=b0s&lh?onoHnX1f2Lh-*Cs;vTSoTKhdSfeMEfr?1rd10Niu5&BGb~J6)P^O7A2${jT<EPYJrWpUq@oyvg`Mk2{U9FQdI=aW4Krq6+ z;WI9+f782l^sfyf3~*!r{#3;JH;pJL_)Xc49zqWkmjxi=)UD#o5uPsVdAeC@%N_w= zTE=5=<)UK{W4J-TP?A``z}DI6sy$=P^KLUuj+kc9EKSE0#DTze31iL%h-Rn-^6C^L zlAZ8Lm@$uqs;fp<*3a%C&eShRjkp8L?0{`Q^SOx!J zX(W>MU@V`7(VYbYV-^gIS+?NEn0B=IrLo12StA6a{PYEaiC{bH{AO*vOc0NRgO<&GxoA5B|;3{s# z_MERUAx(#XfFpXpFD}<-HZ!1h&U|tZ?SQA2X2(+Wax0Oy%x4)?&{LOm}T|w-vStw^r{D zaVX3JraLDfW{GkM8VE?|LQ1GxBqi!P+TFdFEKtX>!^7@w6?S*0=+F8Qq2~7O267QY z+l(E@hu9Hrqr>pV|AR3RfLu@`Qul=<@=a>z?CGyn74#oPU|>5)XvWABK_Sg z;<2(2(X_sSTixiA@7i@w*E-XyNaGDr1gGIS3R!*Ee)n{*`~TSc_OPg`_5Zzx`^_0t z5Kv?kR1{HCG!!q4&gh_nQEFmoVJKml5)4XZ4F)DS&54uMwmYY+?3^xkQ|y$1SG;7X zT_{V@ZX2fy*-6n(&hPWC{cc1~-^=s-{{0Tm=G~ulUu&=RuC?CvuC)T(oyMQQ7@EL+ zDu4fX89Hu!fqemYu&p~Uyt5<`{DvFO^--4gkWGc2`N$;Bd7`3oAH)nDEck=J(r34O z?hCiqO!F7}E$uaQ5efFtHWdE)51g4foa$1_rS<*^VqJnR7c9eZ<9~@oIPX$2*ZYry zV4Ow_P#`@^`%9Kk(WB+zl!du=bVt-T()rM0?IpmAedbzkRE%W+458fF{%bB!{V`Te zq{N|$=Hi0Q8mcfj_W(weMAU#C6kW9pfv&GHbMJ6n200gE299rF>vCX0QB7F5BmwI{K){I>gx6nDH!>W6e+*TNPU2 z2#Yb{#tCmvOD8tt^ac{=R#$~lK?v{$zGi82hnRbJ|-&ERwGUc zjg(<*f|&_Q&SvPQLz`y+_R1YoBN2zVkELvodgn)adxVS|p{o@zpiYH^nZzn_)g@io zid&-~m85h)9!>E>x+0XyUC=7W)V9+cv*Nu}S;fhB=@hyjGOi`umIi@JjqpxB+|^=r zG~xs}Kv@;45vq_4ona1i5NsKE?;u45&(r{Pt7?snG!t5}lSq9HO#^8%R^^~y9f6QC zh%MDbOh&wI<6)-pF|9F?*u;#psjzzD4k){EL)q_%2J;Uap7=f4bpo5~NxKE-HqkMC z(+^Vy1MM~ID1TI&vA_ZcU_;v>Wx^TSSjDIDF$z)4FA*&yizp@Rhg5&rNgNXE%oP*o zQ^hQEV8QvlJj75FF$M-Gm*o_nCqjXSvK@EIxX837A`(P>5ZxX|0a19zdG~M1P{0PW z9E<;Z1HxcPyDuS_f#~grWEID}BB4!oPt>=|5d_TJ4pCPI210eO+ffU#*TD@9WW`eK zS@lPh-st04dF_qbH5*mI;Yl4lpOo0J&u-6#)Bhf7IC%eth(9t?@4bl8>uKbLxC?3z zuGzs{gDT~26bG^5SuyB{;6Q!Ny`kif%7Vxj&?2F06(G?IDqg_PSljUi;pGHgm`&n* z6mQM);I=U2aa{b|J0MP4`x`<;m1;ZRJ>*Z%`;+DH);=ADH8}I;I)gps!?K^-VyW0L z$_>OA5d4zVqo}PvUrxqPX{!Ke1Xm8C4%s&>^d$^``&n{?N&?|{R@G`lY*`$pJ4g$- zAnGG_qF$T0mnB>qUi1x%Jaou?#IoI=GDsSJZ7VmN^!14*nG0&eOOWB=K4T3$cl)E^ z@-2q3u1AaIR}HTFlmuBeyXM{}R`zwqfDEH@wijB*r8%*cSL}TPNS{`QqrB3m*(>+r zD)(_?%f6wt_zZi>uSC^^x(kX#Z_RVkCKHMbE9S|jRFW8oHI#s@D6qYv5LnC zI4LC6vBM$|_=ajF3;B1Z4TY25_NPYHJ6W2pLS-ukJ?8cscfB$MR{my zW_|``1FGqegdrC@+j0SNGItxRXnnz52A2QSxpoI`{6S87U~7`G>J?as!&h?LZ=b7x zU{4%2PbV_sBjO&W)s#}=;bqt0NN!}Cj%1wT$=d=!04|k7>;3W}w46Rzltj@D)r?-o zS0zD#teN%_Gf5cuqFh>d$T`#y#)Ke;NDA%9*oWg9Mbf<7F!L%G#o?mvbf{{-FqnM&O;tu$;iz1esBZ9a17p&$SC)2wrm;egKU(3@k z&xy2zQZT6q1_2;7;kr-P-CcrNc{i!~vI-alvky5BqS4APly1el4xbMv>V!?A zgmq3RNa_Hw(M0EBFa%G)y-PqcG3W_6HVtom_uJ1OsXR6CSNlImcpSV%Mn&xM+wjx3 z!NYNY_ed! zFdm6T;`l}aq(vP_UjnJ=EqKW$_yhnd}OOG-uR30$-)DC?lt8RTC{myH4PkFFy)HzZ+EA|e=*Peb0_!qVf zO&m)vD58lI=_Lp+{ccfS3zefsI=&R?y4qHC&WTB4fORU;Cw7>QZnq!9jck{2YTF~C zNHG5NQ+^GV)6&Q7MJvgo&7tL@HyjGQFUtfW0Vb!xWup+z8321@tADni4b>&$>j#y2 zVe$Z1-4x1TkT(#!m7si0v4(2f08bnzrg%vfGXqj}p^#$Lx1h`8&NWff*$WoEWhEpP zzGiO^VSpn9o`r$$Xyxx=t8jbX^Iw)iMW-sM0tv~ku?15QZ>Yr-gab*nn_S-KDav5a zEI)NQBGjVJz}%XS06=gu(&s*4A05?{58X$6Omvl4Hqb6Oz?XRg#uy4meQu#~Yol=b zbXTWke%KI;*$+v$eS-{09m4IDF$@1t8i{8|k5{x8fg04FlX$dpD|K$S~#`2h}}CDLD1EtA$92 zw%Pm9n2&m?U5DO~+m4`)h~842jF||H*wZjmtHq}$K8kl-sziQ@?0ZZ z-HqxiQ#Jm8p*9X5Yo;+Z1c6$X-2vlW3u(z&^nzLT0x)or<-GbAtOHGzCsLfNkk`)f z^ZY>)sxEPvuEH68Clp4D$him$`Qfm}Abtp<{a3|7)M}<}tkN2cFOak8M=;P)OsR74 zoHTJm49i<^LS5GxliBVbZyWuiejGO)X$;pxW)C-5|j)R_)ymI=QMzmErEUN`Qa3jhz zw^0qX`#vnRgf(DuM?LAT7A7`<(HrWeFYzAMR9F*c_q#|YBvLZ2y%|*nYdG08lk7*J zU6;Mf+c(?&2hLgj$; zgGuf^`0XxchvKP-+^uB)R2TEwt;$7{Jn*Vznwbf;;)4n}vZs8c=4oamq#>BCL8>_F z#H~tBq&&dz#6+byQjQKa2)iEY#dnn2NIAyP`i}DVNIBWG6)KJ3LFljhq33U3r<{(I zQw+P-DaM|1RDXv^)IoItTyfhHZsXv#cAYY%r@Y2so1pCJDbLDZ^d7addTL^tBm=jG zfe)^2B94?mBktj1q^SOIL~x&|^lQL<+#jjQlpA-8W;qh=nug%e)eu4j%+Q29!M9l{ z?Iq7Jd_7M2pqD&w!#n#;8y3D7bUkz#wK@rg#<3&lw5>*X-3d!9_ksP19xPG$=Cq8rBC_Tu5`C!+>b)`suzT**kcmWPku9 zv|@6aGp+Jcs<)45+hyTokN|_SIB(df1`KR^l4douVh*nNn=sC)^o)}G_RfGX=r=5( zW<%MO)>Xb)g(Zt?-|suEa|A|Pv`pd#J?(_@H9yc)-|EKgRA(Wr#jP*KsvpsK+~e2! zaK71OLsWwTFpfkCz5w@ham-lvd?5|B z)(oXZL~`Hh^b0J@k3Q<&WjX(^wMT2N_s=pux~FDD+ieup2WXS1_&6i#H(TasPUuV> zQnI4ulwM$&P+P1SA!38<#9v*m+!rk;4E+tMw?L_W-5I>tFgGnYYE5adxeq}5*PeN7 zbv8wA_xL}p?2VQO$;Xr*qUA)_8aPI#{%OWXv$-7)_bvbdK$;BPU$-&pfXQa3VKbdleKpR-a)07Jc9g)i@n#z>JLzYC=Zc&Y_xR1RSf0EGkg*; zT1fNIA=om{tO}aqp7Rn5)Ku?891>&?!LkJ+jFDR5+jcqcCrM*apV`nF3MPT=FZY7R`)0Hl;L1c z4y=a5pOPCZ55D@dlFzbz`)!`NzU;Crs;uNA|W>k z!atOaI4)>{;*FChUx(w7vD{@z*=MX;r@xfYOD0TcCCrY_O#EDwmNa`}3v@H6ZsCMT z$Tr0hk?7v$B;`5WJ0a4_S3c+~XS&*uJ=KhVXN|*~Y8GzttU)#_DqAnnIhW9UFef(F zEZj`7Bf9-K& z73q#bPJ?Tz)^3_Iu1eS%*Per0o8LZbFth}|MUiAEYx>D4@+Rfge)6?FHsMs&(fczG zlm@!zcs42F@p51LCU7Y$I7WbbZk@LtGD7sWJu4S`Hc1x0kFZix_A7ZhXRRr#v$?;w z*1TVgi1)3fH82uLw8bJlBBB-X|7}FB|Br}J6jECXRmaMIk2O|hA@2XKXv}|BG?8mD z9Ta8LSu`*7NAI(iN^JDG9b=Ij%A_UbUv`g&%G!Nt^wGwj1KcO=jb9red{nO~!i4C% z1ngqZT7URhYfV)=IkS3hm2K|b*^R9R+}c2&2ZRbqjN0<>@=s#)2$agqk-5vbZlJ)A zl5dxK_j1U)Q($88O!HY_U3Dkwo7LTn3#xr+$U)QGjz_gGXC*kr?O3}BO>lo>TYofL zL>txw_2wxxaAhO!qu`xB=6mOlV{0IN8#FI}9atBk|6hR zO`#GP^FNosG|UqIvjp1Cf@5&%o%R2#lqXE}_=j|++odJ^9!~fUv0qyKq7c)P_g|v1 zW5~P>u$n-3>}SCO(g;Z`7^l-l8;7sS-C^AN;QiMoj8r(8I0Siw&%i&-SgM1hlvQcq`l?`WzOFBt4~6c(CU7a{Gv-X zu6qJ0aEo?|d6p5!KX5&1yO>B-n;6b7c(JYh##p7&3wG1Ho6%sWxF7U574ty3w~MM! zcB5*x`F&)|JXH1>TC1_@ML4b$?Xt8q&Mg)=tuf^QXw z55(W<_@>TpMa;?%U)Dn6Yd<}M7ZJY5;IS(*xVU=;+enMWmWc!X9wjS_`%5lpyK(9P zhes5r#W>{)>S^+f4>y1_TiI>4aVjoLpkZ5v&1m}=*+*0;bCY6El+BU71CRpGBHZZs zf(fr}r+3-v#< z)%`g%a^G^hkS{Gn?9)XDhun(DP!X(|2aRjbpb1{)LVy1C_~TI;)F+`tsee3U0Y2W@ z=Q}^%zUMkW9?q+-LJbR+7a*|?=#_Y)9`3m0OK~JQv?hgOw;R_^A&D(DI~wNhp&4Luf*|&a_P5W8J%-;n7va-`Ph9co|EzA~h+3}KtN+V-y@czy-Cb6J zOTuVeShW)@0a1wXt)5L#)vExDba?#j(`tZGXrd8i9xgj6TF}FA@2b4FuGCn$1g~ye zowWx2s#U(Xu5FbFOK+^+$InBK9#C=qlJEQ}WFDQq#&9y+&EP6l%IZUC@!N^tWFB$v z#NkBHWJTE!zrmK42P?pE=+=$5D=sq}VmGet{N|2Dg5N|Vs{a+gc^}NVE5Es)TDHz_ z!nqG`+ldw^cn#@ki^AGMFQXe=I8`nKaX<4|blf~eM$GLUrAf4lxzvOIkIl3~JvtYJ* z{VdE!{mjNdj+smUI?8BS9dVW+I%oNT7z%y+ujz$Yr^Z?S$K15hx|A*RQybR%k?|A% z6@SU8*4PW$z}!ujc}pI6%csb(;4SZ%l)n#=&EeF#_E3OKNw2h6%6H8ouTX{M)kjDC?eRd3Y=msxrfzKrA9&M!0I8STq3+n~ita6~H_%+EMXB?a0-qFsO` zTa9b)Bc?$u2*YS*8pf*6u#$p9(6CrqRiUvC=WU|8egF&ceYeufW%ltueqS2U_7^pE zK)0Go!@ag!5gb*fwwv%mJfw0--9#|h6W+v1F`C1qLNp?nqm$3sgb%IF+@C?^CXFE~ zKTl4b+8>GS zvV$q%Vy=C5K?+GJh-i#G^^=B(=U7|5}$ zez?B3sjME$+2WW0d&;it%-z|>Yj$I&EEUFDA9bsvv4Iw%SIqt_#z*&gEvU|^9*h`z z{!HpK0kQNRsJ#c!`^BG-YMz6_o>pOKb^Xm+Az{xzc#tg94qk1ZI|GtA%qgJu)k;%l zXoA#d)0BF5yAm^8PB3hLLK!z4qD{|}m*sAYo>1-_F87I-&_{R=VhIytFy{^M1@YP* zXwH|0t2s|9FAT>7M;U=e2zf5_bt>>G)ot?xH4{5bDm0V%nn@8%{^HV%rfWvUFsjl_#%LzxFu7YZNfajT z3S=IJcW8z^G(({`mKl++8D7{(nQ_-@E@x|o-;g0BytD*CLg+%V3gn^%3~^5H(}P4o z>=1ru1|y0Mn#n7g36_B)YBZB4G?P4-e4v?BYbNj@OYaK3d))bWN8qtq02?(#8e|l>JV%872Y3X9j_v?){j8x{Ad0J%pxa#s zs9Lq~H`9BD_D*9jb-4CkPw!?$**Z#2H$2=|`C*hCXZZAXC3v))KBW2(c#YWq7Bt$| zb{P30Z6`k{T}{KsX(#Q0#3tu#<<`;i0BZ~B9i+6{Jyd3xi>%n^cjyqBO)qujW0V}y z55hgT(pO)>9Txc^5)cYG(=mI6f*scV0_Q3RN6T^ZP9GF{LYU=wDi9~mvxN4Hg|s8g zP?}|xD8zt^n`XAJ8Aky^Y4g2DvDg3J7zl#V0ZIDtVBl~$X8Y(5)wxp@Te>{Kua}>tvj?ZEw7!xW~$|hVm5U#j)}*bFQ7fkpDS*rK2MmT7KSW^{aH3F&MuCNW^R5aDam*{UQHOt9XF^RFH5HsbAZw15+($|6K8O5lP` zbXaW}=oM(u=DQrs+fLalFB**ZCn@UH^1^I49OY#Gv2w{wPx=Tf=h<=0Pv-emX2_;V z$I6XcTy|ss2+ES~*}3Lqwjb<$E5F8h=Ctn(`Xv3aj7W0jXENl3>o(D>)=ZbQ&}80h ztcFGwq~FU9VTa;-hiI{-Z2`5sBi?NHhnSw6K=3m>=_y$0_C=k|rdaM9ihWsxPsSR#9?plbFh>aVa2VoOmt zKWC?4uytuA)}7%%E2r;JV=!(ytt=cbkF!Fa;fy)=WS|Yj#rw z!KJR)vqN>KbC6)R(Mm=OBp!6d?r^Fn_;=LVTfGzO=lanRHV+Nc@WsJzprJ>sA4)yw zXRva8-1#wi4X{>6dQZ^uqSZd)133c;%%AsJ$sv28v~NG$;} zl7KZmmB%N@YsU0IcY~DWVd1&Ki=#M^Z*CC#y_ps48?bMTZhb)r1jFnoY=`$YL& zL(u?b$RznA`8(zOB((9HQIt3(qpaDQF%JqlG~1yfFi|%Zb8}mkVwo%tG;AKAESW5? zj5va`1P@>=N~%@qiaJ@I|`|zyA^B|rLc%H!XH$0p1ypCrpp7-(W z#?v2XQKaITfM+J28}Jn3DZz6ep7nSh!}A=T*YLcHXD^_GGPBmi( zb(F0nhZzf&fwq@j-;V0wbK%4-yI%wL)uO{}wD&z~PdwtBZC`Vd)-iD5nrDg;XN;|a z7IA~Uvb9~UPQ&MTw^`$tW3eKN}bGlVJ zSxYVMfrh^GyD-FH|FF6N%3_qpyJ0}d&q6_<#*(m}M96r-fk5t0utktoSCWwrYyqZR zs=w_*v;{cAOxuI=E+yZ(_Kfp7x2>2Ahatqw4&y`kOjm?#?-n#Y`(bpAYkxAEI>#6lQ|0(u=ZxgyA+2hX#E^KqbDZ(h15`Hu z)i|T%zsWIldqlFR4_ANP`Ir@F(tm`kK}3dfL-SuUfR0MVKeJl(o|fXW{40hZ0}wez zn&`AJESYtASP}wrnrGz%(Bhm^OhXyDJ@pnPVPXUMCRfi`)>2K7|83&-ww4WvpD*F^`fiwYhT<(^VbO_Te$7J#i)o}P@w z6ZAR$4d<-Q8L~4;y$j73ie$d1Wf{ojaa4i+>ILj3ME&wbH6sf(ergEHQJWj$E^=t% zEy8sC3e6UbD1y-;WMEKNdGS(Ng!&mm;MwFd47u_$qk4Qb0AnsFQej;o;7Gi(cDkJH zTHfhQor>9p_Nj0Q2ltU(H@mW54CK4>;-3YXk#bVjdQRW-u5$A zkxqPi$%mn%&E1ycr(#L`q{IE4qvnp+vm5^%=Ks{C}}# zEJ&N=45PhjU{aR?R{uo2?k}zQ<}=+@-;+y++xEI6W#1IzR!94!X~rGzjcd*@Ko@48 z&Hb}ApOrg=~LEQjR zAMcAII|z^MeuqiV%{h&vGRMiQCqVh+k`KErS}AVL`?Tr>zf6MX)hb2cs9E>{a=Z^a zygtB{=#bv-vsC(^*+MH9k3dTalNzhLLtV8G#R(Y(WRS=Wsfjq;ceq}+7qr{`&WpQ^ zar`muSV;M7hH=N+8I&u}ESZjFffmg}-{7<3PC>->5yet-?`H@caef3fD9_x_Xy!yQ zx?5BuN8~I;z*gL}v>x$6)9a&;FZpJ;9}yXuvfgoa;<-kDm$NSlZ+g4PF3 zsfIbi3#zsSdlS^hp;e3XmPa2g9M{`^FAk2|o1OWavGPq(1wXUUj1nOuTD1@AF`Ya* zu;Si_q&7Dkpa&IJRG=5AYE#x7X1F6Gv)|XuIhoLPX;=Ry_|_RuYuDPo^w9Y4JOW zT072}s3lhjvN;=52qR9 z=nU$CA56-EM@qpB!+grZ9C>7TN0J^$4_OOjLLUlbeR>N9V(5E%LM)gD)#%J!B^apv zR#NQ^#sU41JN`$QlZT2h`zjk|$*~bFiF&|4`6OlgEJ#%QMJr#-lI!Hd%01U$gU5=I z%Inu4)gPuQN3M~3`85ymDc@fs_jjSPY1=ue_qak|7ial6a9&cu=d=$zM*YiO+C2V6 zP_0vGdkD1v{Yq(O{L3-uR&E!HmLw+tdry6=w-6jSJV_1NZtHK-lylZr^mWtFSwH_R zg8B$-(fZrui8T&PaT3%g5hMgIZ-elVzeWpDs1jh9 zjZW?LULspL?jN!n|3E$`pc@Nsn_}GIyf6;REfeHbA=p%TzIikDSHF%tU&t^!d(gQ< zhp?~Mpx$Mqu`xyo3tQDeC$#Y~tww-1UXPGxxc${B84Efxj2_yzsgA9n%Bv}xk9#}= z4$Gq9G^LBvamK0xa0=5XVTu!5JagM;xE(VtB!hvZQpGY>ZH5!Evv&=>Tsn-!0@=6@ zvK?ubC+TV=r`bU~0O$zNPvT}o468a)sA$SUd{N6$NHBFTY#|2H3JaohSeH?dcAn1j-ri@-goD;s=s2U-u4ava>|Y_VpjE3Je9liyK*YmAqvcAxYe7T`I8m0DdW_`5c5zJ`_?xmHB6|`PF`~Fgfy_RHPC$|teG}rrtHhkY%KZA zk@;b1KgbvwEW0U85kHV z6XwW6Ttm?qFfhMZdRa_#xCCDkn*}U5gwwsBBn2U=K{)dUs24DY!S}5cixk?9MXVF3 z!;nw}(JDm@;#&oM-sMq`WX! z9&5PkG3Bed@`R|&$0Rz0kR(KfMr@BUS57=1rHr^xwU>AwnHu(( zQgA)ii>?MfYg{ns1I>KQbhK1sRSQ)Ho*0k-dq-kKGD!B3Q&9IUv>TT< z6&gnl8bdzrKS@Q|s17eQ;=~XUmN()a^5cp4<|PrufwLCl{P0F31Y)CP+)*3x4+VFl zp$W$Cf|rL{G?Cq{njN|S68Ip(Nj>%` zg*QLKthu+V?Pt*^OP%L@hBI@se#~cDim@S3I zD4mb%r^|l`1#CBss6+VGhj+-^xJ!I=3+hK*!b=K_dnE`jf+S$h*kr|Lr zZ-?z+0qZs>LG!V_@pc&Ox%l0$doCPL9ZByOMy3t{HC9W^&$v0O0MYD~_5vIrE=Mp_t`m4O>)W`dGpSo~g)1J?d4|*1E5!#@6 z-@$&znkLe9AnVb zH$Zov{^jNPCVol1880ZTR$=;_a5f*{$o8h)r%!D^ga9HAJ*;{57k>69{Nr*xx&JAy zCwshkpX@%pe|tdl!^*51#VS9zE1-tef&uiUte161W3hns(K_iHMJwHI;ujj}2 zz{1K6a(v=s5!-^OtBD>dJ(|9!?ReA^e+9UZymQZyi>W&vR?=?7Vp25BP&ckY`05v7 z%A6Zzvo%;V8$@QWgpr>WU=iRvdAn*+BR;Q1Js5(Q26~|i@jYHd6GuqDB1Uy(m{O0B zZnC_aRY4Oa<7+tJ$O^_8jG+TAlu6ua@yuwTp#pYu(P0DL{y3LEOCYc_uL)Pf?Suxy zb|KuuMYGUZu)Hhfql-w~=^Q#yG9%``ie-V^%VpXwp|*K(e-$bcb~qfcu#oXc3S?ju24rb$3-@cVB_4oT*paX!mat~`PWOSv z)@XD*81G9Bji+M58pC$Fh~X&Dj2Hw^t?NczeG_yhPg z&^wv7X=w|C#$01-OxRA|Bq&ZMqJ7h5?DInzAmBkh-{c0%npPyi2)*=}u!aw)lteMY zK02|<@=pncs9dv99_oUU%619TkAI4}&AU`oiH**InY)~QNMkb$pCD>G6|6UMyOaeI zx}6Hw>u20{*mABxb_Tr*<$HlYMOa7F&2pJPE_^=$fGu;!kRX`AHFm)?6o!3@7r@HmU&>Jo!8!)(Z;5#QKS;FbwPC$S(pv(pjv=Z9CVT znk@NzgBq}v5Bp?L)W+9vtlKVex(7Zy?xv1`>`e1PRp*FmOKdc{wlL^rAe>EDBft!KpuZ+4L=24=pzA^M!tkbw#YZy! z5NlAE^#qiq-0$S6&K9FG%c6$>V{Wo zm~#*kqSV9UP5liM4ydFMlvn{SoJ%j=XUZk6NWm%&Zt*S~uwWS!e5<0uZ} zyWfSD8a36QT;<5E@_@c0gp)tuzywtgI0!F|*ltF=YHuZ?NFEu{j(6kGV$_9zN55CH zi{ylX6DSioHx<;n2@qzHT%WcML&UWLC(BTR^EEk^ z9di}+_f0+@Ezn`>R2tR0EGz+w!0gJeMe?AlCg7vf2srCqYKiK-fSNT#DnHYx_$?zu za>;KewIY>5hbw!jJjQTcfKstko|MuvK$emMCj{ES)2%fDet;knh#1e?(6iX&b~>LHdNAu)m_(ebVRD8EXq31SOY$tX` zg3^WL3Y>Zed|XTK#3L3&2_ErxU(}m;!!dy$sdqt11(R2#?ED3-RIqH-g)!{49?8I- zDQ7t9V~&ha!4 zTt{Hp&G1py#m4}c>l2rVbmeb%$ngVq^wiAEm{DMft_g9bz>7Ep?-O5?(o;Ekhg=Z; z_b2gHdKVf;1Z;kC+pOjCQwGERCgq1>d57`u^XVH7M6$hM>eKU;?RUyc`uzAkuyfG4 z#w@2<{e^@B1NH{Ae6Nftkq;XBy{Z^W<>>?Z+Y7FpVD~$+W_+#D7mU)vA{OLDQ&CybO&IN!r`zcQT^z8CJJT)4 zP8S-ThC<_K4H#l5Ys%!lt~Lx;rOJs99hW47(L)1U>UQ9T?q+XkJQbW>`E@&X3L!A4 z78DwnV=RQpMsX7z+Kj9DoPG$dMTA^@1ha+}JCC*M#?2V`B({{L8s9%)oVTCsvi%N1 zkJM<}kG+r>WEq{7Fx~Oz2&Wmf10@wm#hZa5#c_Y8AXmA4>Z0_UU;LDdbivsb{)2$ zbx8yw3|2pY!bGjI;%=OHb={qc2hI%R?o=8;W6W1LAB}Cxl*Q0Hm7nj%9{BcRCFCA7 ztHaBblzZg9ecveV8o1bxu6fv4tSq`m?&I%*17*bBa`aWN?&#{&os+9MeC!Hi-r~B{4|Nv5n0Sp2XZjtR3rqY{V>J5?rafadY-T!w=>(?J259yf zOb0VHG4INg4g)!&i~Y469%cG2)90A3XL>g%#V_5$26LEBVLF0o4AV%htej~T)5n3K#^ej_DoJ$KhiMA2rm(Fw=(>$hyOz&p;Fw;7wuQA=p^i!rP(|n&+&+ny1=qxk5R0Mvm&WSF@0E zG>i7#QUx})8~VAn#3H2PA@mR8Y{_&L{?(4czjpjH6wk+7>y7v)-HZo`lBBw&_}6|1 z{+XBKUq1aqD)0|m;iY!^XMP6%(&%3n{i~pVwe+u9KiW z6aJyUm8327&%B?^4&Yxdw0$M>Df~0F5u|^0^sj;bAl`%w4_~A=*bPK?+Tq^-# zkAMD*A^s3Q6JtGs7{;Q!;i4a7o#~jn;iRtasU{?Mb1=LcPV0s<80(+N+Rfh1SWl3n zn|*EY$pJ~OF?cU57QzY@rU`(rq^usmbf^WoYP%7_c zzp?wcY%0VT|Q&@oQkLe}dftqx>O| z5WnVb9$Fde3G}~HOQ6n}OpNtUU}lWf4e?83tY;{fv0j43gz5VaVhx@u{m^XAdpK6lIJz(}X&DT`@^bKBn^mPg8ZF;QHBe;v?A z4pe^WYv`-|ct#F>te+uVytwrGr&l8_W$?i-)NSa=AtUN`=%H%box-TI`s&sA&nU%7 z=Ae4*B(E^saFyQ>r7q3jUqqZi@3P1};jUrnoI~d*I)*a}S0Zzw^wTN%Cv!a%J}Jxbg~k&z=kkzKKF-jz}Sgz2aI>5etq z%l10f-F2bLyeWpL2;D#gs9Zb6&@15btH|57wAFGSSxI|T?oi4f!`YD-M2d!>hm8T` z6&OQ5fie0M6hqA`D8`H$-mg&%5Cz5R8R~!HOd|^ z3Ke7O-c$6b^&m006)ts*5$_c~(->oj%;ww9DDq0#m31#SBc|4F)XrF^4#qmo?Pj0f z&AzyseZ`gb%E`y&MXvk`EfI^E7BOAMw3w-rX*tu?OskmIGTq2@Gt;-3HZVQJv{|Dr z>0>r%VfrQ0R;J%DRhj<4w4Ld{n07Fg)@T_DX4;!+Kc;&4Ndlw$8O|2zOtYBgGRO8ETaRXCa;3?`sGg0dPTG*hKsmipSsdT^Q!NkgHGp%L1k!c;M=>9gd!4{_VOdFUsF>Pkr!c=7{RdNEE>JgY3r!mc9n#;7PQl2b| zqMQwCnQmhG3e$R~%}hI(nyR*4d`jNy7nfC~r68ASKGWhV<%>Fbn#;UavzNHX%4b~1 zw4G`01Dd-!rg{(8%GkV4v(IN*$F!YkZZ-R7+OE<5QUymGT%$QKGc6*z?ft*WxBI)W z04#o%k|ooYE?Z(LURr9IH9K3PibQt*6(!zE_SESRbxh4!R6N^RvUK^aw(_p#D+(4Z zTQY0W9ZTk{a7@j%!b+lnho!hUcg3=$+t$4(4+~U|yd?KhcD^Lv87i;Q|CGPZG$bf> zGYz40O^8DOyI;QiXORDQf4X0@bonotB27?QUy@DqFHjCvenBdR_ms(XT4#K{rQUeg zOig&#-^f*G5{>yLNxtIuzf0IK%ABW4-UM zWlUoh`fX&aj|Da}*8A@*jP-7~p0VDWHZbPlwo7Va1ASuO%vc|dwlLO*Wvz^{W*~kl zV|_%_&RCx?bTHQIrSuOi!`kQGIZ)7}}aUJ6!j5jkL%6JQ7eS%WY7&9Odztq46!`VX<<5b4Y zj7KtVVLX;`E90vftBf-kw=*8cxP$Q|j$e{q(Mn)4I|yc+#n{By!Z?QURK{k;f*Zjs znejBXPh&itaR%dTE&mYkvB3;>U}rp&aW3OojPn>@!#JODF5@D`*E23=JdbfXW7iFA zP{9UE7+32K7{{E^N=Rl#P|NlP#&wMS7;jnn!QU3WP@h*5X88ZaWLa{ z#vzPN9AFq@=~XR(;krHJ2*zf{Js776jPf_KK^8lp&HnVuWgMy7bA&w^>%DU?9kcu1 zjEfmZF|J@7&A65@eg7CXsAC7QjJGh3W8A>FFXLv${TR10j%VD?xIbg*HLZja7@L5_ z$jQtGW_B=uaT?=+jI$UgGR|e3#5kYvAjZXv2Q#iM^qj8hml zFdojhnQ@u@KHXEcdp20Ya@l3|Kj2(>g8P8%|%=j9{6^!Z31p3u7zD~m~sg4bh2kb zGtOshVqDC)7vl=Xy$MtMuVsU1c2LJSj`0@8@r;`o4`6(}VjRl2oN+kgYQ}MlH!{u)=l*vK8{Ezg8W>~b zEPl<5{Ta714r1KSIE1nEmX_mC#wNz$jLnSWOd|gn0kJ_QJIG=z^Pn%6u|MN{#zBmW z8HX^gU>wT0mT@@aI>tCERm*XQVl1a=?#p%e zjH`9`j5q4;(>3>-b@zfijRkxp@*>~vnjDxpw31n&ZF^oeQ zC+pa%*=GRL<}4}Ht{K>M2M!JA={Q%zMU4GdYq*?o9OLS(+s^Ekqr+YLU~!7(PSVHc zT#{1rZY`yEvb{bDWhk|>eG413GyXz%ut)PxYw`3mF|HE`OvTIw4`~Kc8sm=`XEFYS zaW3PdjPn`4%($5GcE%NqcQdYK{H4J7sC8_hPY|{+KExgx7=OUHnQ;?ieFmgYp<3Dg zNw)7`d^_W6p3#Uo9#tySUag1zAdl^B zY_H1!{DCQcsfZouQ=W3h>)3-XD9{B7)ojmoQPKqmx?o`=+ds$tH#7b#<9f!~`lPan z4c=l0EsX!cSfAnOb2^pn-E6N*DuNhyu)RJ-(*+m7Y#+Q&EAi*KQLB+l;Fje=5o!h8x+SnH_9qJd<%f;|9h}jE^zaMKK|a zTiE^xW0f(fw$QJGvFkGpOTkTAksM$g!YdfoN)`|6O2{HpEK?d80Ej04Rle7E?NoR zua$^C&DJFwx@aVZ?U%8CU38+0T9Vnmi0yUhSSaHRvZwFwU;|zBF@mw311M#zi_^jw z=dt}GjEfk*z_^_8YmBQI=P=#~EGCs(*Mqi&S>tWDj;`l{^xXI@tbowhum_eIi{lq6-uw*gl5suVJhU zuaX%jAK*#lZER4%5hgIs-~bje)+LlZ7~9#NdtFIl|3 z#wLzn6yp}Qzl-r^4u241mF;iUFea7kAc-Axu!BOz!3VW({1?W$Krw}J4BOwqIGJ%J zV_m#9k#PpwKOiuwsxF_)WCwP3P{ml{9HueOWBaEW7cpMNxSVkr<7&op8OQuX%TQ0k z)KoUIgU8sxX2x?E*E3can>m19jGNfr!#Ir-tczS**#17YPiFtUfhm4TWe2(hGL0QX zv4;+}pT{`(kd}jujAIx-$T*qtvy3wsZ`Lt~AFcQQc6N}*4zk!mAI5oXKc8{_D_R03 zFfL;IwT#Odzr?tj@k+)U89$}>|G6AtEIZiD4sK*z%k~2q*R%a%#!ZZOFm7SIi?Pah z3*!#P^`iV?82q7@ql4@qhVeeed7OYa#>s5IfN?dC@4sf8!S*{D=Q4huaS>zJi)>KA z29Gn&=Lq{U-pKY(Fy72~A>)`=vY`=yLGGG4)WGh;v9KjYJk zn}EfnvX%{6*umcztBl`d+`;(ojDtVYigX&|n2)xNIw=?G(zf==+nU?tEpgjw{S6&a z`p8tuB86~>4ATsneoJiDVl9|lrYh4B%Fw=sRsIz+I~-$Yi#(?JOpBNnGo|F*9euC( z5Ivx8HQN;f6GMfeVxw%3D)1g-Fi2FzCH9Yv zGDv~f8PXiHVS}v1Vl5&xJy;68F0j}!TiF|L7#2--d1M#wCxyv9CI4cKHfJk={S5;R zpu_qb`n$+YKB|c3KT--kO8#L+{sx6ez0x0*ddUw;;jN(!!No!Ofw>e0Qs)o*#2_g$ zJywcD*rCNC`N3>gL4F4YNxfm$8+Kj&3A@w~sc-rKsjnQTyx!jsL5bOc#1K8f^iqGr zuu&9IEd@3>K#Fp{C`HMeBs~G90GRg=l#GibC1bitG9C@1jNg=Ch@)`sPB4rR1+WFh zre!Wn3M~V!tl5S~$8sPl%qT-{Wa#CJLVocbB^TU1gXbmo>%{w3JPnLL!25wN_Jj{=_DaG) zLsVyB%3!zOCKgq^QN9=|NJ|sL0mXlyIpZDonpQCaGV#QR-I`(;nU0ySZnBN!0ob6ozc1N)?Ps z6(ku)g%!)DK*{9nA(_%6B-6v;tumGadM^%>dd~?(4G)oeUuPSTf>;>tSs!8;ENTFK^D$3J(qugK2$OyxTx5E9JD$aC7Z2GA8XYP{qadQw zdq~kGJ=;yKJsMC)^T}Q&zxZIWBSNJ3#k-~W^j%WCyhG~Is@Gy!YDEh~VJI608+rzX zBJ-mH)0Em|LzMD>Q&Mi@e6Z8P%$p11|=i69MyZDfZ#0cDWx_kZ4qpC{&Q%Qoo~@ zD~ML1dPq@l9|iYO4@b5t3x*nEM(HK|nhUZ8A0+HRm`jjR~nvW+aPkC{uAyJ7O zY>0{O7pledW>kBx*2rdKLqu_SewcD{D7bT4n3Rxyr<5QUN~U&{ee;z}*i4K&B}j^M zUJpJq7Y*Y&N#ilHRDl+xRn>4*RaDn>RM!$yacm-0+n)4(MTo?YMD?dMml)C_(F|N& z+ku|R&%cB?=qpJw=V{eUjt$g`ucT*jWWFg^Bxv!!kf2|Yp!UuL6$kx!HMf0=y;+}K z{`Ok?3qx}VReZw?eITRgUXF*)NYXcW#&HrNBZJWqMM{w+5v^g(Aq_#rf%%kN6oK^W z50Z5IkLcIg?N@mJtqcCM>e$1JE*X!gjzg&$g&U;sl7QSlbG-Z~FkU>xdCK7wLv&}o z5C2(`-p1qB%SkZaAZjMXf*GUtmivTCeddHqebU3EKBIcIN46T9BO1brH6|S>-0I~X zaUKH`JexT@jT2t#&It=d_uPuYmZL+YXxS78mw zxeC+8+N(LT!Pv=hTW~!^$S7I*m;TA<^Q8BY`n-8%TZtVOhBlil^^?ti)-DsIb`(o2 zjdJGH8v3UH#n4w?ZxF0AUv%(0M;HbUpyJE#4R;B_=v$1EspRr7g6z_iA4eDx`fF8A z>x%U9Oq+^vCZ4eQ%Jm}+13U9OYMLx%;z`6Xk*G{x`eFaH*uf!EOi>RE#`;U>Hqkl) z(){u1D4J#@RaD2GsE%P6C>8}sK|BAvseXbjk5Mx(mnXbZPoexi(s0#yJ#nEJyGG)n zL=X)T_5RAb{1wbiRDIyaG+QZ5GxQ&ZQ#X7R;Le@~(M5@F2)G{jJvfOSc!vt-3x z(i-KBv4&oQ&IHU`wA49mMagVv=r3Dx%`LYrDR4?fvaNinb50S0T#PM|O50eB*`E!V zv!vvXrOOcu+tf%?m#rvWVqdg;@v=uEM2)o+j~$tPa5Ypec6gz z7A-?*pfIu+Y2{>PrOQw-ImpMNTT$}=P*TPjM$1MpbWXMQN9{y7$EmoeB%sP$xka+jmOa7RV8Ps;wk~^*_*gyQPb1tLo%w4{;V8vq2IAl-$Fwb7T)Y;Aa4{4TDd_L(m z-Gx?Gl2?y~YeO`!__Y1RUJx8NYCw=v7Zp3pN|sDrvD}HgNNtKG(-12sD>r5uo|hXG zU#6jNfQ!D)V-pOqQO{hiJbJa29#nEB82Z|;(>`kMk`hr(mKPw*G6Y&84fxN>p1oKa z)WuY*YcNEblr0ksF|HMUl-H$;mMy(|$!y2cQYYHRVri{kHmb}mWw+kCq$C%W4XsD| zg2I{YTvXyLE2fg1C!MB(n7e!xJ~lS1lp-Xg0=4D#C5xvmD=RG$;Yt6mwet^ey1MuH zNdS#gXB5Vh-NCbehMN(P9gQM%ucvD@(S^e7X&`un7qR zGzo#kw08-@l@9x8_6V+bw`iV;u6L`Cf%R&KIOFUvZvMEhPtL(H?z8*sj|vPtR1vbioFX?FRZZDUkeEEhdII6Ru*<8h{UY6xMKfVqA z7WGZbVsb;*lTBs6xNUuBd3|*cTW>3e-AN6QO;)HMkJCu&7S0 zRxwHXi`7e5P`{MmMRk(#>gBTUSi6>nq_%Bc%K}w6FJy%}Bke|4+rkaBJ{>FCnp+mN zHm&Ew-&yPH_;9^i5dP$C){h4cl$(?4b@#We?^w5%BLA>07?^a<_mVh^C*{CQZb@6p z1g27R<&^3=+N5;l%S$J8PRVzfByZU6D-vs2*N1ucW!>aa_2@fnE-x%?(M6fEl&g>= zxv+cHs+RR!@f8=Wpwj4z>LN*;i>b4NR=B&%-%aN5UEOm+DLImT*0i!ZyJv@&c&$IH zoELxj+8uM0I`&oPuT~wGhh_b^ERV_hq1R>}hLts3xzJk4^jRN#uyvLr+_lg;vDIz6 z$o+l&qTLd{Z-#Yhc=ICbwUg%Ya$P29nLP3jxys3Ik9i$GExSc0=l-E)l&^bAS~pzo zzuwG&LYi`Ti+E$*bm-=4>noE3^FliI`{wY6NKfL7-ueH-fcZCU(k+;D4d<%!0{-su zTn=h32mW+8^aZOw;5?;|+iMs!j2Pw&#|@pYnfQi&!-(OKVad>W+Qc_(H0;$3r~wl& zVrY9^Z{RYlHw+pM7?uoOf6(#k41sNwl_$dtXJF6n_X-t#KY zh}lrRqZ4!+HX5GI;{UsB|B<4dr*}~Icgpr`8J=5q<$k^&dnauSI2c{>F7nguCd^+! z4;Ov}c1~65A$%9SjJF{vydCaDIs7g-$Vh?Xc;QbS94^yyIK1$BmhtxMsk@tbZ?TyLnes~BVMrw5Y&xEz zcwrTiaAEU}yyw6RD|jnAfp@{HZc^$J`WNiA>~x7zPQ38$JGE~Ra!Yit!wEEl6~d;kP-ggM_yY3a3((!5;|mwl%~VTx4ID-x zyzo7Gna1$ypOv~5$%%R4X*BIZ4z5wDIf(rRR3)ZGFQ`_y%Xr~_;}617kaW7|s37D*)Ga^qX!0iJFfh;tAYQ9E8( z$V{raz}LZ%wPY(^CS$Yl@vexs!^_bGUgl?;g-UptrY(RZ%^*A`%W`yi%%p&T6<038zIBvY~o*-vHcq9A^lA7%JHgmh9D2Wb2*LRfa z#S5Q!Q0LGfeDJ$`q9(iq@B5zKwhJy}EY>*TKKSPVe@0k%7k=vpI-yPQBR|w1}62`5_7km!F)F-#@73WQ4JYsKEF@7Sq0s ztAGXJ<4DS80LqV%i1)$|!dza&Q4z8ZmCGK!vV(&ld>s0IqIWF(@=o0{Ho)B|N}MP> zjHC_?!WVZ^{<1K_f_;~%TyPm0W&jIqUrz>M<6+fD(E<9t`ztblJFed{O>wkCVu=6#EAu%0FwF4 z^@5s!6_4u;T<~t=8{p{A$U2T%IDA;2negF3dddio!YNPc=K~vD@)U6huY;>{y7IQd zN1o>HC-LDkPX~1N%KVdW9MP9w5q{yQK8Oe4DYTglWHkC*v4CP-Ad{+RIH4DOuU+NWA@bG_9=}2f0Em(#Q`vc{NM)9ZN@EeNh$=DhERFR5CcqQD2 z(5237D;Bxl?YFMLNg&*yefOUHHbU3N@-;Z5)H2#>!71}~$R4llgW z&SytC8yh{>Gmz{|cnlpUQXbm*)iyaxq5OiI#PP##Twzfq;yeJyku*?3?^H`UO<@f` zdZ_4^7QXN?(!!6xjni2tbz(Z79rG;IvO?HHM|cB%2!7i^A0vJfd{2|IKtiN2tEosXIjcR)CI5LH-^UucfxUg@Ao*q2sd3xXLf)EF*_#gV zf1O@94I8evFyhf#=I!$=su^Dc=gjA~+3`2Pi*B^2X_xaj1v`)wjUR@L7mgY)tn}zO zMY!{G^qjM8@ivRPaREOhe>v^{AZGbOU1p8&cStJN7+g$0dMz6qgl{0fYz*(I(uuah zt8b^+2zS9PD1i^bJ8E>AwXl;pf%_#~<_4ypd>Aiu-a+}x?b6A@aYNH5?k z;V~rHn1@?x^}+SS_mNy$GR^P|RIa@6H%OY^B2*0Gwb3{3h4&&mz7=-gMc+5RCxF?9 zWaAV(iX=;igiAR%A_-R_32%noNaE+=Ogid)#F5bgZAik~;V)1R;RQICfvQ2g3|L*W zoE=kFg79_*0tR|nA#)^u4fV<;0UtymybMp2VTZl!SSUjd#S3K=p?IN;8oY$~LK!CL z#S3MKP986m!E_Q|C_}Ks!+?@;C$b=vVN2qLGJZ(BP{s#|7y6AC%J3Zt7s}8Z@xq@Q zFO=~m5-yanBjSY@GrXbqf(mQd$an}@A^f88GXBA@eR$RbmiGej)wG+a5A8t5(GiqH z+t8oUtEhA_gtF*S6h}Le{CnR|V)yY7i8|0J^c>0|FM0{>Mca`R9Y8@;j}&^Q zlRFyPkM?vnaF&>Fp|$94RE^Gb@#ut3py$z1v>)w8-$mVM>HR!XpyZ{J;gnxJ$32Ev_IXG4yJq4p>!l2O{dZW>0Ej!ollRX3+eH6F>UK}^tt-n zeV#sVUrk>)w8rWTKeNXArGU!VGWLukB$5$y_rxZ zl8I(gnQUetlgkWc@|lrLAv2ySW=a{3BB+OL@!>LRk2<2xs4MD@dZONFO|&jrA9W^N z33tMi2qt>XIi(WWv*-1R#7Lr$7*7-vrG(mR+iTzJ*sDTZ`=lHGRl9Y=lqh4)E#akW ztp!hMpDpP~x{{t`O|m}On(RsTCL_sIav(XB97&EROG#VGk#eOxshU)Msx{S<>P+OU)x{cP{#Y;;ibZ4DST2^26=KDh zireGPxI6BR*Toy-{&+ARibvzwcrKog7vjZu_?C6no3G+f70&?t^^{MzF literal 160256 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 diff --git a/README.md b/README.md index a7f806af..997fbd7f 100644 --- a/README.md +++ b/README.md @@ -206,19 +206,20 @@ All driver helpers require WinObjEx64 to be run with administrative privileges. # Build WinObjEx64 comes with full source code. -In order to build from source you need Microsoft Visual Studio 2015/2017/2019 and later versions. +In order to build from source you need Microsoft Visual Studio 2015 and later versions. ## Instructions * Select Platform ToolSet first for project in solution you want to build (Project->Properties->General): - * v120 for Visual Studio 2013; * v140 for Visual Studio 2015; * v141 for Visual Studio 2017; - * v142 for Visual Studio 2019. + * v142 for Visual Studio 2019; + * v143 for Visual Studio 2022. * For v140 and above set Target Platform Version (Project->Properties->General): * If v140 then select 8.1; - * If v141/v142 then select 10. + * If v141 and above then select 10. * Minimum required Windows SDK version 8.1 +* Recommended Windows SDK version 10.0.19041 # What is new @@ -230,6 +231,6 @@ In order to build from source you need Microsoft Visual Studio 2015/2017/2019 an # Authors -(c) 2015 - 2021 WinObjEx64 Project +(c) 2015 - 2022 WinObjEx64 Project Original WinObjEx (c) 2003 - 2005 Four-F diff --git a/Source/CHANGELOG.txt b/Source/CHANGELOG.txt index 8bacd578..fadd5332 100644 --- a/Source/CHANGELOG.txt +++ b/Source/CHANGELOG.txt @@ -1,3 +1,12 @@ +v1.9.3 +updated SeCiCallbacks search for newest Windows versions +fixed win32k ApiSet resolving for Win10 21H2 +fixed ObCallbacks enumeration issues +support for various kernel driver helpers +ported to msvc 2022 (with backward compatibility to 2019) +bugfixes +rtls updated + v1.9.2 more Win10/11 21h2 compatibility changes added FLT_FILTER, FLT_OBJECT structured dump diff --git a/Source/FILELIST.txt b/Source/FILELIST.txt index 737493ef..c4b5c94a 100644 --- a/Source/FILELIST.txt +++ b/Source/FILELIST.txt @@ -1,264 +1,214 @@ +* Driver providers interface * +winobjex64\drivers\wdrvprv.c +winobjex64\drivers\wdrvprv.h +** WINDBG/WODBG provider ** +winobjex64\drivers\wdbgdrv.c +winobjex64\drivers\wdbgdrv.h +** WINIO provider ** +winobjex64\drivers\winio.c +winobjex64\drivers\winio.h +** RKHDRV provider ** +winobjex64\drivers\rkhdrv.c +winobjex64\drivers\rkhdrv.h +** HE/Alice provider ** +winobjex64\drivers\alice.c +winobjex64\drivers\alice.h + +* About dialog routines including window dialog procedure * winobjex64\aboutDlg.c winobjex64\aboutDlg.h -* About dialog routines including window dialog procedure - -winobjex64\drvhelper.c -winobjex64\drvhelper.h - -* Support for WinIo as additional memory read driver (mitigations enabled) - +* Custom access violation exception handler including minidump * winobjex64\excepth.c winobjex64\excepth.h -* Custom access violation exception handler including minidump - +* Extras menu handler * winobjex64\extras\extras.c winobjex64\extras\extras.h -* Extras menu handler - +* Windows 7/8/8.1 missing API support * winobjex64\extapi.c winobjex64\extapi.h -* Windows 7/8/8.1 missing API support - +* Windows kernel callbacks list * winobjex64\extas\extrasCallbacks.c winobjex64\extras\extrasCallbacks.h winobjex64\extras\extrasCallbacksPatterns.h -* Windows kernel callbacks list - +* Drivers list * winobjex64\extras\extrasDrivers.c winobjex64\extras\extrasDrivers.h -* Drivers list - +* KiServiceTable/W32pServiceTable list * winobjex64\extras\extrasSSDT.c winobjex64\extras\extrasSSDT.h -* KiServiceTable/W32pServiceTable list - +* Pipes and mailslots dialog * winobjex64\extras\extrasIPC.c winobjex64\extras\extrasIPC.h -* Pipes and mailslots dialog - +* Windows Private Namespaces dialog * winobjex64\extras\extrasPN.c winobjex64\extras\extrasPN.h -* Windows Private Namespaces dialog - +* Process list dialog * winobjex64\extras\extrasPSList.c winobjex64\extras\extrasPSList.h -* Process list dialog - +* Software Licensing Cache dialog * winobjex64\extras\extrasSL.c winobjex64\extras\extrasSL.h -* Software Licensing Cache dialog - +* UserSharedData dialog * winobjex64\extras\extrasUSD.c winobjex64\extras\extrasUSD.h -* UserSharedData dialog - +* Find Object routines including window dialog procedure * winobjex64\findDlg.c winobjex64\findDlg.h -* Find Object routines including window dialog procedure - +* Authenticode hash support * winobjex64\hash.c winobjex64\hash.h -* Hash support - -winobjex64\instdrv.c -winobjex64\instdrv.h - -* Helper driver installation routines - +* Windows Kernel Debugging Driver support routines, object related internal API set * winobjex64\kldbg.c winobjex64\kldbg.h -* Windows Kernel Debugging Driver support routines, object related internal API set - +* Signature patterns used to find undocumented stuff * winobjex64\kldbg_pattern.h -* Signature patterns used to find undocumented stuff - +* Header file for kernel symbol names * winobjex64\ksymbols.h -* Header file for kernel symbol names - +* Treeview and listview handlers for main window * winobjex64\list.c winobjex64\list.h -* Treeview and listview handlers for main window - +* WinObjEx64 internal logviewer * winonjex64\log\log.c winonjex64\log\log.h -* WinObjEx64 internal logviewer - +* Program entry point and initialization routines, main window dialog procedure handler * winobjex64\main.c -* Program entry point and initialization routines, main window dialog procedure handler - +* Set of reimplemented rtl routines * winobjex64\minirtl\minirtl.c winobjex64\minirtl\minirtl.h -* Set of reimplemented rtl routines - +* MS VisualC compiler versions header file * winobjex64\msvcver.h -* MS VisualC compiler versions header file - +* Known objects support functions and global objects table * winobjex64\objects.c - -* Known objects support functions - winobjex64\objects.h -* Known objects table - +* Plugin manager * winobjex64\plugmngr.c winobjex64\plugmngr.h -* Plugin manager - +* Symbols support * winobjex64\symparser.c winobjex64\symparser.h -* Symbols support - +* Property sheet for ALPC Port information * winobjex64\props\propAlpcPort.c winobjex64\props\propAlpcPort.h -* Property sheet for ALPC Port information - +* Property sheet "Basic" handlers, including window procedures and consts * winobjex64\props\propBasic.c winobjex64\props\propBasic.h winobjex64\props\propBasicConsts.h -* Property sheet "Basic" handlers, including window procedures and consts - +* Property sheet "Desktop" handlers * winobjex64\props\propDesktop.c winobjex64\props\propDesktop.h -* Property sheet "Desktop" handlers - +* "Properties" property sheet creation and window procedures, all sheets created here * winobjex64\props\propDlg.c winobjex64\props\propDlg.h -* "Properties" property sheet creation and window procedures, all sheets created here - +* Dumping and decoding kernel objects for "Object" property sheet * winobjex64\props\propDriver.c - property sheet "Driver" handlers, including window procedures winobjex64\props\propDriver.h - winobjex64\props\propObjectDump.c winobjex64\props\propObjectDump.h -* Dumping and decoding kernel objects for "Object" property sheet - +* Kernel object string converted constants * winobjex64\props\propObjectDumpConsts.h -* Kernel object string converted constants - +* Property sheet "Process" handler, window procedure * winobjex64\props\propProcess.c winobjex64\props\propProcess.h -* Property sheet "Process" handler, window procedure - +* Property sheet for Section object dump information * winobjex64\props\propSection.c winobjex64\props\propSection.h -* Property sheet for Section object dump information - +* "Security" property sheet handler and ISecurityInformation implementation * winobjex64\props\propSecurity.c winobjex64\props\propSecurity.h -* "Security" property sheet handler and ISecurityInformation implementation - +* Object type access values, generic mappings here * winobjex64\props\propSecurityConsts.h -* Object type access values, generic mappings here - +* Property sheet "Token" handler, window procedure * winobjex64\props\propToken.c winobjex64\props\propToken.h -* Property sheet "Token" handler, window procedure - +* Property sheet "Type" handlers, including window procedure for "Procedures" sheet * winobjex64\props\propType.c winobjex64\props\propType.h -* Property sheet "Type" handlers, including window procedure for "Procedures" sheet - +* Known object access rights converted to strings listed here * winobjex64\props\propTypeConsts.h -* Known object access rights converted to strings listed here - +* "View Security Descriptor" dialog routines including window procedure * winobjex64\sdviewDlg.c winobjex64\sdviewDlg.h -* "View Security Descriptor" dialog routines including window procedure - +* Support api set and consts * winobjex64\sup.c winobjex64\sup.h winobjex64\supConsts.h -* Support api set and consts - +* All objects test code here * winobjex64\tests\testunit.c winobjex64\tests\testunit.h -* All objects test code here - +* systreeview32 combined with sysheader32 control * shared\treelist\treelist.c shared\treelist\treelist.h -* systreeview32 combined with sysheader32 control - +* Wine support header file * winobjex64\wine.h winobjex64\wine.c -* Wine support header file - +* Global include file * winobjex64\global.h -* Global include file - +* NT os internals related definitions and prototypes * shared\ntos\ntos.h -* NT os internals related definitions and prototypes - +* MS ALPC port dedicated header file * shared\ntos\ntalpc.h -* MS ALPC port dedicated header file - +* NT PE loader related declarations and routines * shared\ntos\ntldr.c shared\ntos\ntldr.h -* NT PE loader related declarations and routines - +* Native API shared rtl * shared\ntos\ntsup.c shared\ntos\ntsup.h -* Native API shared rtl - +* MS ApiSetSchema dedicated header file * shared\ntos\apisetx.h -* MS ApiSetSchema dedicated header file - +* Windows SDK 8.1 missing definitions support * shared\sdk\extdef.h -* Windows SDK 8.1 missing definitions support - +* Visual Studio generated resource header * winobjex64\resource.h -* Visual Studio generated resource header - +* User interface global constant * winobjex64\ui.h - -* User interface global constant diff --git a/Source/Plugins/ApiSetView/ApiSetView.vcxproj b/Source/Plugins/ApiSetView/ApiSetView.vcxproj index 00861400..23150425 100644 --- a/Source/Plugins/ApiSetView/ApiSetView.vcxproj +++ b/Source/Plugins/ApiSetView/ApiSetView.vcxproj @@ -20,13 +20,13 @@ DynamicLibrary true - v142 + v143 Unicode DynamicLibrary false - v142 + v143 true Unicode false diff --git a/Source/Plugins/ApiSetView/Resource.rc b/Source/Plugins/ApiSetView/Resource.rc index ad83e704990aa6f2507dfafe2dded0be4f072e31..2f06d233ee2935c42657dd8f18ae0d8ac5ab8b07 100644 GIT binary patch delta 80 zcmbPXHp6Vg3=UQ!1_K7u$#Xf3p)7e$$<6OLZZSc*AGvfV|Ki@lXfzqf+I)vchY>Cz SKG}>{S+lX;(cHq0g0|21l7cT$+ diff --git a/Source/Plugins/ApiSetView/main.c b/Source/Plugins/ApiSetView/main.c index ea8625d2..6cdfebef 100644 --- a/Source/Plugins/ApiSetView/main.c +++ b/Source/Plugins/ApiSetView/main.c @@ -1,12 +1,12 @@ /******************************************************************************* * -* (C) COPYRIGHT AUTHORS, 2019 - 2021 +* (C) COPYRIGHT AUTHORS, 2019 - 2022 * * TITLE: MAIN.H * * VERSION: 1.13 * -* DATE: 01 Oct 2021 +* DATE: 11 May 2022 * * WinObjEx64 ApiSetView plugin. * @@ -139,7 +139,7 @@ BOOL TreeListAddCopyValueItem( _In_ HMENU hMenu, _In_ HWND hwndTreeList, _In_ UINT uId, - _In_opt_ UINT uPos, + _In_ UINT uPos, _In_ LPARAM lParam, _In_ INT* pSubItemHit ) diff --git a/Source/Plugins/ApiSetView/query.c b/Source/Plugins/ApiSetView/query.c index 785f0d26..31942912 100644 --- a/Source/Plugins/ApiSetView/query.c +++ b/Source/Plugins/ApiSetView/query.c @@ -1,12 +1,12 @@ /******************************************************************************* * -* (C) COPYRIGHT AUTHORS, 2019 - 2021 +* (C) COPYRIGHT AUTHORS, 2019 - 2022 * * TITLE: QUERY.C * -* VERSION: 1.11 +* VERSION: 1.12 * -* DATE: 11 June 2021 +* DATE: 11 May 2022 * * Query and output ApiSet specific data. * @@ -141,7 +141,7 @@ LPWSTR GetApiSetEntryName( HTREEITEM OutNamespaceEntry( _In_ HTREEITEM RootItem, _In_ LPWSTR EntryName, - _In_opt_ ULONG Flags + _In_ ULONG Flags ) { ULONG i, flagsValue; @@ -259,7 +259,7 @@ void OutNamespaceValue( _In_ ULONG ValueLength, _In_ ULONG NameOffset, _In_ ULONG NameLength, - _In_opt_ ULONG Flags + _In_ ULONG Flags ) { TL_SUBITEMS_FIXED tlSubItems; diff --git a/Source/Plugins/ExamplePlugin/ExamplePlugin.vcxproj b/Source/Plugins/ExamplePlugin/ExamplePlugin.vcxproj index 933b26fd..c456212d 100644 --- a/Source/Plugins/ExamplePlugin/ExamplePlugin.vcxproj +++ b/Source/Plugins/ExamplePlugin/ExamplePlugin.vcxproj @@ -21,13 +21,13 @@ DynamicLibrary true - v142 + v143 Unicode DynamicLibrary false - v142 + v143 true Unicode false diff --git a/Source/Plugins/ExamplePlugin/Resource.rc b/Source/Plugins/ExamplePlugin/Resource.rc index e06cbbde5a90d3dc60332c134d517cb92d866757..8a4eb05897bfbffaf3c3a3553554c12d2d2da460 100644 GIT binary patch delta 72 zcmdm^vPWgZ3=UQ!1_K7u$#Xf3p)7e$$<6OLZZSc*AGvfV|Ki@oXfzqf+Wd$|hY>Cz KzFCV;hy?)s=oGX7 delta 72 zcmdm^vPWgZ3=UR91|Xa~m%|v!lIN7%{Ep)m6O{XrOLy`w?p=%qlYy+wk9c$#;S%DT IwfKZs0Q*7|q5uE@ diff --git a/Source/Plugins/ImageScope/ImageScope.vcxproj b/Source/Plugins/ImageScope/ImageScope.vcxproj index 4a2478c5..fdf77fed 100644 --- a/Source/Plugins/ImageScope/ImageScope.vcxproj +++ b/Source/Plugins/ImageScope/ImageScope.vcxproj @@ -15,19 +15,19 @@ Win32Proj {38d717f0-9152-4b74-8d32-5222373eab3e} ImageScope - 10.0.19041.0 + 10.0 DynamicLibrary true - v142 + v143 Unicode DynamicLibrary false - v142 + v143 true Unicode false diff --git a/Source/Plugins/ImageScope/Resource.rc b/Source/Plugins/ImageScope/Resource.rc index 8a864179190f0d381fc4f811023bb706e1a659da..c333cd3487ef4b831152888235d00527b9090d1f 100644 GIT binary patch delta 76 zcmZp3Y;)W&gM-zG!GOVZ@>~vMC`+DGa`QWmTTD>yM=ssTzqq$B8chbWHs9gVVT4PF OPd4Kd+HA%bAOrwK0u{Fa delta 76 zcmZp3Y;)W&gM-zO0SG70J-*H@F0t)KE6@BE=o&1Y?6Qki| SAZzn29vMbt>CKFMnk)d{D-{X= diff --git a/Source/Plugins/Sonar/Sonar.vcxproj b/Source/Plugins/Sonar/Sonar.vcxproj index 3329686b..58e94f10 100644 --- a/Source/Plugins/Sonar/Sonar.vcxproj +++ b/Source/Plugins/Sonar/Sonar.vcxproj @@ -14,19 +14,19 @@ 15.0 {91A5250B-99D2-48F9-B649-82D66C9A6396} Sonar - 10.0 + 10.0.19041.0 DynamicLibrary true - v142 + v143 Unicode DynamicLibrary false - v142 + v143 true Unicode false @@ -102,6 +102,7 @@ + @@ -111,6 +112,7 @@ + diff --git a/Source/Plugins/Sonar/Sonar.vcxproj.filters b/Source/Plugins/Sonar/Sonar.vcxproj.filters index fa89409c..f1b86ce1 100644 --- a/Source/Plugins/Sonar/Sonar.vcxproj.filters +++ b/Source/Plugins/Sonar/Sonar.vcxproj.filters @@ -54,15 +54,18 @@ ntos - - minirtl - minirtl Source Files + + minirtl + + + minirtl + @@ -98,6 +101,9 @@ Header Files + + ntos + diff --git a/Source/Plugins/Sonar/main.c b/Source/Plugins/Sonar/main.c index c89e2189..6061dd59 100644 --- a/Source/Plugins/Sonar/main.c +++ b/Source/Plugins/Sonar/main.c @@ -1,12 +1,12 @@ /******************************************************************************* * -* (C) COPYRIGHT AUTHORS, 2019 - 2021 +* (C) COPYRIGHT AUTHORS, 2019 - 2022 * * TITLE: MAIN.H * -* VERSION: 1.03 +* VERSION: 1.15 * -* DATE: 31 May 2021 +* DATE: 11 May 2022 * * WinObjEx64 Sonar plugin. * @@ -22,7 +22,7 @@ // // Maximum tested build Sonar is known to work. // -#define SONAR_MAX_TESTED_BUILD 21382 +#define SONAR_MAX_TESTED_BUILD NTX_WIN11_ADB // // Dll instance. @@ -30,9 +30,9 @@ HINSTANCE g_ThisDLL = NULL; // -// Quit flag. +// Run state. // -volatile BOOL g_PluginQuit = FALSE; +volatile DWORD m_PluginState = PLUGIN_RUNNING; // // Number of listview columns. @@ -594,7 +594,7 @@ VOID DumpProtocolInfo( PVOID ProtocolHandlers[_countof(g_lpszProtocolBlockHandlers)]; - ListView_DeleteAllItems(g_ctx.ListView); + ListView_DeleteAllItems(g_ctx.ListView); pModulesList = ntsupGetLoadedModulesListEx( FALSE, @@ -770,8 +770,9 @@ VOID DumpOpenBlockInfo( */ VOID OnContextMenu( _In_ HWND hwnd, - _In_ UINT idItem, - _In_ LPPOINT lpPoint + _In_ LPPOINT lpPoint, + _In_ LPARAM lParam, + _In_ BOOLEAN fTreeList ) { HMENU hMenu; @@ -779,21 +780,24 @@ VOID OnContextMenu( hMenu = CreatePopupMenu(); if (hMenu) { - if (idItem == ID_MENU_COPY_VALUE) { + // + // Add "Copy %item%" menu item. + // + if (fTreeList) { + + supTreeListAddCopyValueItem(hMenu, + g_ctx.TreeList, + ID_MENU_COPY_VALUE, + 0, + lParam, + &g_ctx.tlSubItemHit); - // - // Add copy value text for treelist. - // - InsertMenu(hMenu, 0, MF_BYCOMMAND, idItem, TEXT("Copy Object Field")); } else { - // - // Add "Copy %item%" menu item. - // supListViewAddCopyValueItem(hMenu, g_ctx.ListView, - idItem, + ID_MENU_COPY_VALUE, 0, lpPoint, &g_ctx.LvItemHit, @@ -996,7 +1000,7 @@ VOID OnNotify( break; case LVN_COLUMNCLICK: - g_ctx.bInverseSort = !g_ctx.bInverseSort; + g_ctx.bInverseSort = (~g_ctx.bInverseSort) & 1; SortColumn = ((NMLISTVIEW*)lParam)->iSubItem; ListView_SortItemsEx(g_ctx.ListView, &ListViewCompareFunc, SortColumn); @@ -1047,7 +1051,7 @@ LRESULT CALLBACK MainWindowProc( INT dy; RECT crc; INT mark; - HWND TreeListControl; + HWND TreeListControl, FocusWindow; switch (uMsg) { @@ -1059,7 +1063,7 @@ LRESULT CALLBACK MainWindowProc( if ((HWND)wParam == TreeListControl) { GetCursorPos((LPPOINT)&crc); - OnContextMenu(hwnd, ID_MENU_COPY_VALUE, (LPPOINT)&crc); + OnContextMenu(hwnd, (LPPOINT)&crc, lParam, TRUE); } if ((HWND)wParam == g_ctx.ListView) { @@ -1074,7 +1078,7 @@ LRESULT CALLBACK MainWindowProc( else GetCursorPos((LPPOINT)&crc); - OnContextMenu(hwnd, ID_MENU_COPY_VALUE + 1, (LPPOINT)&crc); + OnContextMenu(hwnd, (LPPOINT)&crc, 0, FALSE); } break; @@ -1087,14 +1091,26 @@ LRESULT CALLBACK MainWindowProc( break; case ID_MENU_COPY_VALUE: - supCopyTreeListSubItemValue(g_ctx.TreeList, 0); - break; - case ID_MENU_COPY_VALUE + 1: + FocusWindow = GetFocus(); + TreeListControl = TreeList_GetTreeControlWindow(g_ctx.TreeList); - supListViewCopyItemValueToClipboard(g_ctx.ListView, - g_ctx.LvItemHit, - g_ctx.LvColumnHit); + // + // Copy text to the clipboard. + // + if (FocusWindow == TreeListControl) { + + supTreeListCopyItemValueToClipboard(g_ctx.TreeList, + g_ctx.tlSubItemHit); + + } + else if (FocusWindow == g_ctx.ListView) { + + supListViewCopyItemValueToClipboard(g_ctx.ListView, + g_ctx.LvItemHit, + g_ctx.LvColumnHit); + + } break; @@ -1157,7 +1173,7 @@ LRESULT CALLBACK MainWindowProc( break; case WM_CLOSE: - InterlockedExchange((PLONG)&g_PluginQuit, TRUE); + InterlockedExchange((PLONG)&m_PluginState, PLUGIN_STOP); PostQuitMessage(0); break; @@ -1385,6 +1401,8 @@ DWORD WINAPI PluginThread( // // Init treelist. // + g_ctx.tlSubItemHit = -1; + RtlSecureZeroMemory(&hdritem, sizeof(hdritem)); hdritem.mask = HDI_FORMAT | HDI_TEXT | HDI_WIDTH; hdritem.fmt = HDF_LEFT | HDF_BITMAP_ON_RIGHT | HDF_STRING; @@ -1432,7 +1450,7 @@ DWORD WINAPI PluginThread( TranslateMessage(&msg1); DispatchMessage(&msg1); - } while ((rv != 0) && (g_PluginQuit == FALSE)); + } while (rv != 0 && InterlockedAdd((PLONG)&m_PluginState, PLUGIN_RUNNING) == PLUGIN_RUNNING); } while (FALSE); @@ -1459,7 +1477,7 @@ NTSTATUS CALLBACK StartPlugin( NTSTATUS Status; WINOBJEX_PLUGIN_STATE State = PluginInitialization; - InterlockedExchange((PLONG)&g_PluginQuit, FALSE); + InterlockedExchange((PLONG)&m_PluginState, PLUGIN_RUNNING); RtlSecureZeroMemory(&g_ctx, sizeof(g_ctx)); @@ -1505,7 +1523,7 @@ void CALLBACK StopPlugin( ) { if (g_ctx.WorkerThread) { - InterlockedExchange((PLONG)&g_PluginQuit, TRUE);//force stop + InterlockedExchange((PLONG)&m_PluginState, PLUGIN_STOP);//force stop if (WaitForSingleObject(g_ctx.WorkerThread, 1000) == WAIT_TIMEOUT) { #pragma warning(push) #pragma warning(disable: 6258) diff --git a/Source/Plugins/Sonar/ndis.h b/Source/Plugins/Sonar/ndis.h index 1e782fcc..0397d3be 100644 --- a/Source/Plugins/Sonar/ndis.h +++ b/Source/Plugins/Sonar/ndis.h @@ -5,9 +5,9 @@ * * TITLE: NDIS.H * -* VERSION: 1.02 +* VERSION: 1.03 * -* DATE: 11 Jan 2021 +* DATE: 04 Se 2021 * * Common header file for the NDIS related definitions/structures. * @@ -39,7 +39,6 @@ extern "C" { #pragma warning(disable: 4201) // nonstandard extension used: nameless struct/union #pragma warning(disable: 4214) // nonstandard extension used : bit field types other than int - // // Basic types from MS ndis.h // @@ -671,7 +670,7 @@ typedef struct _NDIS_OPEN_BLOCK_14393_17134 /* 0x0480 */ PVOID CoOidRequestHandler; } NDIS_OPEN_BLOCK_14393_17134, *PNDIS_OPEN_BLOCK_14393_17134; /* size: 0x0488 */ -typedef struct _NDIS_OPEN_BLOCK_17763_21286 +typedef struct _NDIS_OPEN_BLOCK_17763_22000 { /* 0x0000 */ long Padding_297[240]; /* 0x03c0 */ struct _NDIS_CO_AF_BLOCK* NextAf; @@ -691,7 +690,7 @@ typedef struct _NDIS_OPEN_BLOCK_17763_21286 /* 0x0438 */ PVOID MiniportCoOidRequestHandler; /* 0x0440 */ PVOID CoOidRequestCompleteHandler; /* 0x0448 */ PVOID CoOidRequestHandler; -} NDIS_OPEN_BLOCK_17763_21286, *PNDIS_OPEN_BLOCK_17763_21286; /* size: 0x0450 */ +} NDIS_OPEN_BLOCK_17763_22000, *PNDIS_OPEN_BLOCK_17763_22000; /* size: 0x0450 */ typedef struct _NDIS_COMMON_OPEN_BLOCK_9600_10586 { @@ -986,7 +985,7 @@ typedef struct _NDIS_COMMON_OPEN_BLOCK_14393_17134 /* 0x03f0 */ KEVENT* WaitNetPnpEvent; } NDIS_COMMON_OPEN_BLOCK_14393_17134, *PNDIS_COMMON_OPEN_BLOCK_14393_17134; /* size: 0x03f8 */ -typedef struct _NDIS_COMMON_OPEN_BLOCK_17763_21286 +typedef struct _NDIS_COMMON_OPEN_BLOCK_17763_22000 { union { @@ -1121,7 +1120,7 @@ typedef struct _NDIS_COMMON_OPEN_BLOCK_17763_21286 /* 0x0390 */ KEVENT* WaitNetPnpEvent; /* 0x0398 */ PKTMON_COMPONENT_CONTEXT PktMonComp; /* 0x03a8 */ PKTMON_EDGE_CONTEXT PktMonEdge; -} NDIS_COMMON_OPEN_BLOCK_17763_21286, *PNDIS_COMMON_OPEN_BLOCK_17763_21286; /* size: 0x03c0 */ +} NDIS_COMMON_OPEN_BLOCK_17763_22000, *PNDIS_COMMON_OPEN_BLOCK_17763_22000; /* size: 0x03c0 */ typedef struct _NDIS_PROTOCOL_BLOCK_7601 { NDIS_OBJECT_HEADER Header; @@ -1533,7 +1532,7 @@ typedef struct _NDIS_PROTOCOL_BLOCK_17763 /* 0x0340 */ PVOID NotifyBindCompleteWorkItem; //class pointer } NDIS_PROTOCOL_BLOCK_17763, *PNDIS_PROTOCOL_BLOCK_17763; /* size: 0x0378 */ -typedef struct _NDIS_PROTOCOL_BLOCK_18362_21286 +typedef struct _NDIS_PROTOCOL_BLOCK_18362_22000 { /* 0x0000 */ NDIS_OBJECT_HEADER Header; /* 0x0004 */ long Padding_126; @@ -1625,7 +1624,7 @@ typedef struct _NDIS_PROTOCOL_BLOCK_18362_21286 /* 0x0328 */ UNICODE_STRING ImageName; /* 0x0338 */ PVOID Bind; //class pointer /* 0x0340 */ PVOID NotifyBindCompleteWorkItem; //class pointer -} NDIS_PROTOCOL_BLOCK_18362_21286, *PNDIS_PROTOCOL_BLOCK_18362_21286; /* size: 0x0378 */ +} NDIS_PROTOCOL_BLOCK_18362_22000, *PNDIS_PROTOCOL_BLOCK_18362_22000; /* size: 0x0378 */ // diff --git a/Source/Plugins/Sonar/query.c b/Source/Plugins/Sonar/query.c index 1f5a3a4e..5173df44 100644 --- a/Source/Plugins/Sonar/query.c +++ b/Source/Plugins/Sonar/query.c @@ -280,8 +280,10 @@ PVOID DumpProtocolBlockVersionAware( case NT_WIN10_20H1: case NT_WIN10_20H2: case NT_WIN10_21H1: + case NT_WIN10_21H2: + case NTX_WIN11_ADB: default: - ObjectSize = sizeof(NDIS_PROTOCOL_BLOCK_18362_21286); + ObjectSize = sizeof(NDIS_PROTOCOL_BLOCK_18362_22000); ObjectVersion = 5; break; @@ -345,8 +347,10 @@ PVOID DumpOpenBlockVersionAware( case NT_WIN10_20H1: case NT_WIN10_20H2: case NT_WIN10_21H1: + case NT_WIN10_21H2: + case NTX_WIN11_ADB: default: - ObjectSize = sizeof(NDIS_OPEN_BLOCK_17763_21286); + ObjectSize = sizeof(NDIS_OPEN_BLOCK_17763_22000); ObjectVersion = 5; break; } @@ -465,8 +469,10 @@ ULONG GetNextProtocolOffset( case NT_WIN10_20H1: case NT_WIN10_20H2: case NT_WIN10_21H1: + case NT_WIN10_21H2: + case NTX_WIN11_ADB: default: - Offset = FIELD_OFFSET(NDIS_PROTOCOL_BLOCK_18362_21286, NextProtocol); + Offset = FIELD_OFFSET(NDIS_PROTOCOL_BLOCK_18362_22000, NextProtocol); break; } diff --git a/Source/Plugins/Sonar/query.h b/Source/Plugins/Sonar/query.h index 929f7b13..73b045a4 100644 --- a/Source/Plugins/Sonar/query.h +++ b/Source/Plugins/Sonar/query.h @@ -6,7 +6,7 @@ * * VERSION: 1.03 * -* DATE: 26 July 2021 +* DATE: 04 Sep 2021 * * Sonar plugin query information definitions. * @@ -26,7 +26,7 @@ typedef struct _PROTOCOL_BLOCK_VERSIONS { NDIS_PROTOCOL_BLOCK_9200 *v2; NDIS_PROTOCOL_BLOCK_9600_17134 *v3; NDIS_PROTOCOL_BLOCK_17763 *v4; - NDIS_PROTOCOL_BLOCK_18362_21286 *v5; + NDIS_PROTOCOL_BLOCK_18362_22000 *v5; } Versions; PVOID Ref; } u1; @@ -46,8 +46,8 @@ typedef struct _OPEN_BLOCK_VERSIONS { NDIS_OPEN_BLOCK_14393_17134 *v4; } u_v4; union { - NDIS_COMMON_OPEN_BLOCK_17763_21286 *v5c; - NDIS_OPEN_BLOCK_17763_21286 *v5; + NDIS_COMMON_OPEN_BLOCK_17763_22000 *v5c; + NDIS_OPEN_BLOCK_17763_22000 *v5; } u_v5; } Versions; PVOID Ref; diff --git a/Source/Plugins/Sonar/sup.c b/Source/Plugins/Sonar/sup.c index c4ec2f92..0264a192 100644 --- a/Source/Plugins/Sonar/sup.c +++ b/Source/Plugins/Sonar/sup.c @@ -4,9 +4,9 @@ * * TITLE: SUP.C * -* VERSION: 1.01 +* VERSION: 1.14 * -* DATE: 08 Jan 2021 +* DATE: 28 Sep 2021 * * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF * ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED @@ -28,7 +28,10 @@ BOOL HeapMemoryFree(_In_ PVOID Memory) return HeapFree(g_ctx.PluginHeap, 0, Memory); } -#define DBUFFER_SIZE 512 +// +// Conversion buffer size +// +#define CONVERT_NTNAME_BUFFER_SIZE 512 /* * supConvertFileName @@ -40,71 +43,87 @@ BOOL HeapMemoryFree(_In_ PVOID Memory) */ BOOL supConvertFileName( _In_ LPWSTR NtFileName, - _In_ LPWSTR DosFileName, + _Inout_ LPWSTR DosFileName, _In_ SIZE_T ccDosFileName ) { - BOOL bSuccess = FALSE, bFound = FALSE; - WCHAR szDrive[3]; - WCHAR szName[MAX_PATH + 1]; //for the device partition name - WCHAR szTemp[DBUFFER_SIZE]; //for the disk array - UINT uNameLen = 0; - WCHAR* p; - SIZE_T l = 0, k = 0; + BOOL bFound = FALSE; - if ((NtFileName == NULL) || (DosFileName == NULL) || (ccDosFileName < MAX_PATH)) - return bSuccess; + SIZE_T nLen; + WCHAR szDrive[3]; + WCHAR szName[MAX_PATH]; + WCHAR szTemp[CONVERT_NTNAME_BUFFER_SIZE]; + WCHAR* pszTemp; + + // + // All input parameters are validated by caller before. + // + + // + // Drive template. + // szDrive[0] = L'X'; szDrive[1] = L':'; szDrive[2] = 0; - RtlSecureZeroMemory(szTemp, sizeof(szTemp)); - - uNameLen = GetLogicalDriveStrings(DBUFFER_SIZE - 1, szTemp); - if (uNameLen == 0) - return bSuccess; + // + // Query array of logical disk drive strings. + // + szTemp[0] = 0; + if (GetLogicalDriveStrings(CONVERT_NTNAME_BUFFER_SIZE - 1, szTemp) == 0) + return FALSE; - p = szTemp; + pszTemp = szTemp; do { - *szDrive = *p; - - RtlSecureZeroMemory(szName, sizeof(szName)); + // + // Copy the drive letter to the template string. + // + *szDrive = *pszTemp; + szName[0] = 0; + // + // Lookup each device name. + // if (QueryDosDevice(szDrive, szName, MAX_PATH)) { - uNameLen = (UINT)_strlen(szName); - - if (uNameLen < MAX_PATH) { + nLen = _strlen(szName); - bFound = (_strncmp(NtFileName, szName, uNameLen) == 0); + if (nLen < MAX_PATH) { - if (bFound && *(NtFileName + uNameLen) == TEXT('\\')) { + // + // Match device name. + // + bFound = (_strncmpi(NtFileName, szName, nLen) == 0); - _strcpy(DosFileName, szDrive); - l = _strlen(DosFileName); - k = _strlen(NtFileName); + if (bFound) { - _strncpy(&DosFileName[l], - ccDosFileName - l, - NtFileName + uNameLen, - k - uNameLen); + // + // Build output name. + // + StringCchPrintf(DosFileName, + ccDosFileName, + TEXT("%ws%ws"), + szDrive, + NtFileName + nLen); - bSuccess = TRUE; - break; } + } } - while (*p++); + // + // Go to the next NULL character, i.e. the next drive name. + // + while (*pszTemp++); - } while (!bFound && *p); // end of string - return bSuccess; -} + } while (!bFound && *pszTemp); + return bFound; +} /* * supGetWin32FileName * @@ -211,48 +230,58 @@ VOID supClipboardCopy( } /* -* supCopyTreeListSubItemValue +* supTreeListAddCopyValueItem * * Purpose: * -* Copy treelist value to the clipboard. +* Add copy to clipboard menu item depending on hit treelist header item. * */ -VOID supCopyTreeListSubItemValue( - _In_ HWND TreeList, - _In_ UINT ValueIndex +BOOL supTreeListAddCopyValueItem( + _In_ HMENU hMenu, + _In_ HWND hwndTreeList, + _In_ UINT uId, + _In_opt_ UINT uPos, + _In_ LPARAM lParam, + _In_ INT* pSubItemHit ) { - SIZE_T cbText; - LPWSTR lpText; - TL_SUBITEMS_FIXED* subitems = NULL; - TVITEMEX itemex; - WCHAR textbuf[MAX_PATH + 1]; - - __try { - - RtlSecureZeroMemory(&itemex, sizeof(itemex)); - RtlSecureZeroMemory(textbuf, sizeof(textbuf)); - itemex.mask = TVIF_TEXT; - itemex.hItem = TreeList_GetSelection(TreeList); - itemex.pszText = textbuf; - itemex.cchTextMax = MAX_PATH; - - TreeList_GetTreeItem(TreeList, &itemex, &subitems); - - if (subitems) { - if (ValueIndex < subitems->Count) { - lpText = subitems->Text[ValueIndex]; - if (lpText) { - cbText = _strlen(lpText) * sizeof(WCHAR); - supClipboardCopy(lpText, cbText); - } - } + HDHITTESTINFO hti; + HD_ITEM hdItem; + WCHAR szHeaderText[MAX_PATH + 1]; + WCHAR szItem[MAX_PATH * 2]; + + *pSubItemHit = -1; + + hti.iItem = -1; + hti.pt.x = LOWORD(lParam); + hti.pt.y = HIWORD(lParam); + ScreenToClient(hwndTreeList, &hti.pt); + + hti.pt.y = 1; + if (TreeList_HeaderHittest(hwndTreeList, &hti) < 0) + return FALSE; + + RtlSecureZeroMemory(&hdItem, sizeof(hdItem)); + + szHeaderText[0] = 0; + hdItem.mask = HDI_TEXT; + + hdItem.cchTextMax = sizeof(szHeaderText) - 1; + + hdItem.pszText = szHeaderText; + if (TreeList_GetHeaderItem(hwndTreeList, hti.iItem, &hdItem)) { + *pSubItemHit = hti.iItem; + + _strcpy(szItem, TEXT("Copy \"")); + _strcat(szItem, szHeaderText); + _strcat(szItem, TEXT("\"")); + if (InsertMenu(hMenu, uPos, MF_BYCOMMAND, uId, szItem)) { + return TRUE; } } - __except (EXCEPTION_EXECUTE_HANDLER) { - return; - } + + return FALSE; } /* @@ -429,6 +458,69 @@ BOOL supListViewCopyItemValueToClipboard( return FALSE; } +/* +* supTreeListCopyItemValueToClipboard +* +* Purpose: +* +* Copy selected treelist item text to the clipboard. +* +*/ +BOOL supTreeListCopyItemValueToClipboard( + _In_ HWND hwndTreeList, + _In_ INT tlSubItemHit +) +{ + INT nIndex; + LPWSTR lpCopyData = NULL; + SIZE_T cbCopyData = 0; + TVITEMEX itemex; + WCHAR szText[MAX_PATH + 1]; + + TL_SUBITEMS_FIXED* pSubItems = NULL; + + szText[0] = 0; + RtlSecureZeroMemory(&itemex, sizeof(itemex)); + itemex.mask = TVIF_TEXT; + itemex.hItem = TreeList_GetSelection(hwndTreeList); + itemex.pszText = szText; + itemex.cchTextMax = MAX_PATH; + + if (TreeList_GetTreeItem(hwndTreeList, &itemex, &pSubItems)) { + + if ((tlSubItemHit > 0) && (pSubItems != NULL)) { + + nIndex = (tlSubItemHit - 1); + if (nIndex < (INT)pSubItems->Count) { + + lpCopyData = pSubItems->Text[nIndex]; + cbCopyData = _strlen(lpCopyData) * sizeof(WCHAR); + + } + + } + else { + if (tlSubItemHit == 0) { + lpCopyData = szText; + cbCopyData = sizeof(szText); + } + } + + if (lpCopyData && cbCopyData) { + supClipboardCopy(lpCopyData, cbCopyData); + return TRUE; + } + else { + if (OpenClipboard(NULL)) { + EmptyClipboard(); + CloseClipboard(); + } + } + } + + return FALSE; +} + /* * supGetMaxCompareTwoFixedStrings * diff --git a/Source/Plugins/Sonar/sup.h b/Source/Plugins/Sonar/sup.h index a9b0403d..02f56df1 100644 --- a/Source/Plugins/Sonar/sup.h +++ b/Source/Plugins/Sonar/sup.h @@ -4,9 +4,9 @@ * * TITLE: SUP.H * -* VERSION: 1.01 +* VERSION: 1.14 * -* DATE: 08 Jan 2021 +* DATE: 30 Sep 2021 * * Sonar plugin support definitions and declarations. * @@ -34,9 +34,13 @@ VOID supClipboardCopy( _In_ LPWSTR lpText, _In_ SIZE_T cbText); -VOID supCopyTreeListSubItemValue( - _In_ HWND TreeList, - _In_ UINT ValueIndex); +BOOL supTreeListAddCopyValueItem( + _In_ HMENU hMenu, + _In_ HWND hwndTreeList, + _In_ UINT uId, + _In_opt_ UINT uPos, + _In_ LPARAM lParam, + _In_ INT* pSubItemHit); LPWSTR supGetItemText( _In_ HWND ListView, @@ -65,6 +69,10 @@ BOOL supListViewCopyItemValueToClipboard( _In_ INT iItem, _In_ INT iSubItem); +BOOL supTreeListCopyItemValueToClipboard( + _In_ HWND hwndTreeList, + _In_ INT tlSubItemHit); + INT supGetMaxCompareTwoFixedStrings( _In_ HWND ListView, _In_ LPARAM lParam1, diff --git a/Source/Plugins/Sonar/ui.h b/Source/Plugins/Sonar/ui.h index e1bc8c06..0288897c 100644 --- a/Source/Plugins/Sonar/ui.h +++ b/Source/Plugins/Sonar/ui.h @@ -4,9 +4,9 @@ * * TITLE: UI.H * -* VERSION: 1.03 +* VERSION: 1.14 * -* DATE: 11 Jan 2021 +* DATE: 30 Sep 2021 * * WinObjEx64 Sonar UI constants, definitions and includes. * @@ -73,6 +73,8 @@ typedef struct _SONARCONTEXT { INT LvItemHit; INT LvColumnHit; + INT tlSubItemHit; + UINT CurrentDPI; // diff --git a/Source/Shared/ntos/ntalpc.h b/Source/Shared/ntos/ntalpc.h index 0ebf7f20..64256f56 100644 --- a/Source/Shared/ntos/ntalpc.h +++ b/Source/Shared/ntos/ntalpc.h @@ -1,12 +1,12 @@ /************************************************************************************ * -* (C) COPYRIGHT AUTHORS, 2017 - 2021, translated from Microsoft sources/debugger +* (C) COPYRIGHT AUTHORS, 2017 - 2022, translated from Microsoft sources/debugger * * TITLE: NTALPC.H * -* VERSION: 1.90 +* VERSION: 1.95 * -* DATE: 02 May 2021 +* DATE: 02 Feb 2022 * * Common header file for the ntos ALPC/CSR related functions and definitions. * @@ -53,6 +53,14 @@ extern "C" { #define CSR_CSRSS_SECTION_SIZE 65536 +#define ALPC_MSGFLG_REPLY_MESSAGE 0x1 +#define ALPC_MSGFLG_LPC_MODE 0x2 +#define ALPC_MSGFLG_RELEASE_MESSAGE 0x10000 +#define ALPC_MSGFLG_SYNC_REQUEST 0x20000 +#define ALPC_MSGFLG_WAIT_USER_MODE 0x100000 +#define ALPC_MSGFLG_WAIT_ALERTABLE 0x200000 +#define ALPC_MSGFLG_WOW64_CALL 0x80000000 + typedef enum _ALPC_PORT_INFORMATION_CLASS { AlpcBasicInformation, AlpcPortInformation, @@ -100,6 +108,11 @@ typedef struct _ALPC_PORT_ATTRIBUTES { #endif } ALPC_PORT_ATTRIBUTES, *PALPC_PORT_ATTRIBUTES; +typedef struct _ALPC_MESSAGE_ATTRIBUTES { + ULONG AllocatedAttributes; + ULONG ValidAttributes; +} ALPC_MESSAGE_ATTRIBUTES, * PALPC_MESSAGE_ATTRIBUTES; + typedef struct _ALPC_BASIC_INFORMATION { ULONG Flags; ULONG SequenceNo; @@ -466,6 +479,32 @@ NtAlpcQueryInformation( _In_ ULONG Length, _Out_opt_ PULONG ReturnLength); +NTSYSAPI +NTSTATUS +NTAPI +NtAlpcAcceptConnectPort( + _Out_ PHANDLE PortHandle, + _In_ HANDLE ConnectionPortHandle, + _In_ ULONG Flags, + _In_opt_ POBJECT_ATTRIBUTES ObjectAttributes, + _In_opt_ PALPC_PORT_ATTRIBUTES PortAttributes, + _In_opt_ PVOID PortContext, + _In_opt_ PPORT_MESSAGE ConnectionRequest, + _Inout_opt_ PALPC_MESSAGE_ATTRIBUTES ConnectionMessageAttributes, + _In_ BOOLEAN AcceptConnection); + +NTSYSAPI +NTSTATUS +NTAPI +NtAlpcSendWaitReceivePort( + _In_ HANDLE PortHandle, + _In_ ULONG Flags, + _In_opt_ PPORT_MESSAGE pSendMessage, + _Inout_opt_ PALPC_MESSAGE_ATTRIBUTES SendMessageAttributes, + _Out_opt_ PPORT_MESSAGE pReceiveMessage, + _Inout_opt_ PSIZE_T BufferLength, + _Inout_opt_ PALPC_MESSAGE_ATTRIBUTES ReceiveMessageAttributes, + _In_opt_ PLARGE_INTEGER Timeout); // // NTALPC_RTL HEADER END diff --git a/Source/Shared/ntos/ntbuilds.h b/Source/Shared/ntos/ntbuilds.h index b09753f5..5c4b53aa 100644 --- a/Source/Shared/ntos/ntbuilds.h +++ b/Source/Shared/ntos/ntbuilds.h @@ -1,12 +1,12 @@ /******************************************************************************* * -* (C) COPYRIGHT AUTHORS, 2021 +* (C) COPYRIGHT AUTHORS, 2021 - 2022 * * TITLE: NTBUILDS.H * -* VERSION: 1.00 +* VERSION: 1.10 * -* DATE: 01 Nov 2021 +* DATE: 13 May 2022 * * Windows NT builds definition file. * @@ -76,5 +76,8 @@ // Windows 11 21H2 #define NT_WIN11_21H2 22000 -// Windows 11 Active Develepment Branch (21XX) -#define NTX_WIN11_ADB 22494 +// Windows 11 22H2 +#define NT_WIN11_22H2 22610 + +// Windows 11 Active Develepment Branch (23H2) +#define NTX_WIN11_ADB 25115 diff --git a/Source/Shared/ntos/ntos.h b/Source/Shared/ntos/ntos.h index 6cf1e052..705dc49f 100644 --- a/Source/Shared/ntos/ntos.h +++ b/Source/Shared/ntos/ntos.h @@ -1,13 +1,13 @@ /************************************************************************************ * -* (C) COPYRIGHT AUTHORS, 2015 - 2021 +* (C) COPYRIGHT AUTHORS, 2015 - 2022 * Translated from Microsoft sources/debugger or mentioned elsewhere. * * TITLE: NTOS.H * -* VERSION: 1.187 +* VERSION: 1.194 * -* DATE: 03 Dec 2021 +* DATE: 14 May 2022 * * Common header file for the ntos API functions and definitions. * @@ -341,21 +341,40 @@ char _RTL_CONSTANT_STRING_type_check(const void *s); // // Semaphore Object Access Rights // +#ifndef SEMAPHORE_QUERY_STATE //SDK compatibility #define SEMAPHORE_QUERY_STATE 0x0001 +#endif #ifndef SEMAPHORE_MODIFY_STATE //SDK compatibility #define SEMAPHORE_MODIFY_STATE 0x0002 #endif #ifndef SEMAPHORE_ALL_ACCESS //SDK compatibility -#define SEMAPHORE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3) +#define SEMAPHORE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|SEMAPHORE_QUERY_STATE|SEMAPHORE_MODIFY_STATE) +#endif + +// +// Time Object Access rights +// +#ifndef TIMER_QUERY_STATE +#define TIMER_QUERY_STATE 0x0001 +#endif + +#ifndef TIMER_MODIFY_STATE +#define TIMER_MODIFY_STATE 0x0002 +#endif + +#ifndef TIMER_ALL_ACCESS +#define TIMER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|TIMER_QUERY_STATE|TIMER_MODIFY_STATE) #endif // // SymbolicLink Object Access Rights // #define SYMBOLIC_LINK_QUERY 0x0001 +#define SYMBOLIC_LINK_SET 0x0002 #define SYMBOLIC_LINK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYMBOLIC_LINK_QUERY) +#define SYMBOLIC_LINK_ALL_ACCESS_EX (STANDARD_RIGHTS_REQUIRED | 0xFFFF) // // Thread Object Access Rights @@ -656,6 +675,7 @@ typedef enum _KWAIT_REASON { WrDeferredPreempt, WrPhysicalFault, WrIoRing, + WrMdlCache, MaximumWaitReason } KWAIT_REASON; @@ -1046,6 +1066,15 @@ typedef enum _PROCESSINFOCLASS { ProcessAltSystemCallInformation = 100, ProcessDynamicEHContinuationTargets = 101, ProcessDynamicEnforcedCetCompatibleRanges = 102, + ProcessCreateStateChange = 103, + ProcessApplyStateChange = 104, + ProcessEnableOptionalXStateFeatures = 105, + ProcessAltPrefetchParam = 106, + ProcessAssignCpuPartitions = 107, + ProcessPriorityClassEx = 108, + ProcessMembershipInformation = 109, + ProcessEffectiveIoPriority = 110, + ProcessEffectivePagePriority = 111, MaxProcessInfoClass } PROCESSINFOCLASS; @@ -1103,6 +1132,9 @@ typedef enum _THREADINFOCLASS { ThreadWorkloadClass, ThreadCreateStateChange, ThreadApplyStateChange, + ThreadStrongerBadHandleChecks, + ThreadEffectiveIoPriority, + ThreadEffectivePagePriority, MaxThreadInfoClass } THREADINFOCLASS; @@ -1390,6 +1422,10 @@ typedef enum _PS_ATTRIBUTE_NUM { PsAttributeBnoIsolation, PsAttributeDesktopAppPolicy, PsAttributeChpe, + PsAttributeMitigationAuditOptions, + PsAttributeMachineType, + PsAttributeComponentFilter, + PsAttributeEnableOptionalXStateFeatures, PsAttributeMax } PS_ATTRIBUTE_NUM; @@ -1703,6 +1739,12 @@ typedef enum _SYSTEM_INFORMATION_CLASS { SystemSupportedProcessorArchitectures2 = 230, SystemSingleProcessorRelationshipInformation = 231, SystemXfgCheckFailureInformation = 232, + SystemIommuStateInformation = 233, + SystemHypervisorMinrootInformation = 234, + SystemHypervisorBootPagesInformation = 235, + SystemPointerAuthInformation = 236, + SystemSecureKernelDebuggerInformation = 237, + SystemOriginalImageFeatureInformation = 238, MaxSystemInfoClass } SYSTEM_INFORMATION_CLASS, * PSYSTEM_INFORMATION_CLASS; @@ -1790,6 +1832,8 @@ typedef struct _SYSTEM_CODEINTEGRITY_INFORMATION { #define CODEINTEGRITY_OPTION_HVCI_KMCI_AUDITMODE_ENABLED 0x800 #define CODEINTEGRITY_OPTION_HVCI_KMCI_STRICTMODE_ENABLED 0x1000 #define CODEINTEGRITY_OPTION_HVCI_IUM_ENABLED 0x2000 +#define CODEINTEGRITY_OPTION_WHQL_ENFORCEMENT_ENABLED 0x4000 +#define CODEINTEGRITY_OPTION_WHQL_AUDITMODE_ENABLED 0x8000 typedef VOID(NTAPI *PIO_APC_ROUTINE)( _In_ PVOID ApcContext, @@ -5062,31 +5106,27 @@ typedef struct _CALLBACK_REGISTRATION { typedef ULONG OB_OPERATION; +#define OB_OPERATION_HANDLE_CREATE 0x00000001 +#define OB_OPERATION_HANDLE_DUPLICATE 0x00000002 + typedef struct _OB_CALLBACK_CONTEXT_BLOCK { LIST_ENTRY CallbackListEntry; OB_OPERATION Operations; ULONG Flags; - PVOID Registration; //POB_CALLBACK_REGISTRATION + struct _OB_REGISTRATION* Registration; POBJECT_TYPE ObjectType; - PVOID PreCallback; //POB_PRE_OPERATION_CALLBACK - PVOID PostCallback; //POB_POST_OPERATION_CALLBACK + PVOID PreCallback; + PVOID PostCallback; EX_RUNDOWN_REF RundownReference; } OB_CALLBACK_CONTEXT_BLOCK, *POB_CALLBACK_CONTEXT_BLOCK; -typedef struct _OB_OPERATION_REGISTRATION { - PVOID *ObjectType; - OB_OPERATION Operations; - PVOID PreOperation; - PVOID PostOperation; -} OB_OPERATION_REGISTRATION, *POB_OPERATION_REGISTRATION; - -typedef struct _OB_CALLBACK_REGISTRATION { - USHORT Version; - USHORT OperationRegistrationCount; - UNICODE_STRING Altitude; - PVOID RegistrationContext; - OB_OPERATION_REGISTRATION *OperationRegistration; -} OB_CALLBACK_REGISTRATION, *POB_CALLBACK_REGISTRATION; +typedef struct _OB_REGISTRATION { + USHORT Version; + USHORT RegistrationCount; + PVOID RegistrationContext; + UNICODE_STRING Altitude; + OB_CALLBACK_CONTEXT_BLOCK* CallbackContext; +} OB_REGISTRATION, * POB_REGISTRATION; #define PO_POWER_SETTINGS_REGISTRATION_TAG 'teSP' @@ -5225,6 +5265,7 @@ typedef enum _MEMORY_INFORMATION_CLASS { MemoryBasicInformationCapped, MemoryPhysicalContiguityInformation, MemoryBadInformation, + MemoryBadInformationAllProcesses, MaxMemoryInfoClass } MEMORY_INFORMATION_CLASS, *PMEMORY_INFORMATION_CLASS; @@ -5299,7 +5340,11 @@ typedef struct _MEMORY_REGION_INFORMATION_V3 { ULONG SoftwareEnclave : 1; // RS3 ULONG PageSize64K : 1; ULONG PlaceholderReservation : 1; // RS4 - ULONG Reserved : 23; + ULONG MappedAwe : 1; // 21H1 + ULONG MappedWriteWatch : 1; + ULONG PageSizeLarge : 1; + ULONG PageSizeHuge : 1; + ULONG Reserved : 19; }; }; SIZE_T RegionSize; @@ -7532,7 +7577,8 @@ typedef struct _LDR_DATA_TABLE_ENTRY_FULL ULONG DontRelocate : 1; ULONG CorILOnly : 1; ULONG ChpeImage : 1; - ULONG ReservedFlags5 : 2; + ULONG ChpeEmulatorImage : 1; + ULONG ReservedFlags5 : 1; ULONG Redirected : 1; ULONG ReservedFlags6 : 2; ULONG CompatDatabaseProcessed : 1; @@ -8909,7 +8955,7 @@ RtlSetDaclSecurityDescriptor( _Inout_ PSECURITY_DESCRIPTOR SecurityDescriptor, _In_ BOOLEAN DaclPresent, _In_opt_ PACL Dacl, - _In_opt_ BOOLEAN DaclDefaulted); + _In_ BOOLEAN DaclDefaulted); NTSYSAPI NTSTATUS @@ -8927,7 +8973,7 @@ RtlSetSaclSecurityDescriptor( _Inout_ PSECURITY_DESCRIPTOR SecurityDescriptor, _In_ BOOLEAN SaclPresent, _In_opt_ PACL Sacl, - _In_opt_ BOOLEAN SaclDefaulted); + _In_ BOOLEAN SaclDefaulted); NTSYSAPI NTSTATUS @@ -9541,6 +9587,7 @@ typedef struct _RTL_HEAP_PARAMETERS { SIZE_T Reserved[2]; } RTL_HEAP_PARAMETERS, *PRTL_HEAP_PARAMETERS; +_Must_inspect_result_ NTSYSAPI PVOID NTAPI @@ -9577,6 +9624,7 @@ RtlQueryHeapInformation( _In_opt_ SIZE_T HeapInformationLength, _Out_opt_ PSIZE_T ReturnLength); +_Must_inspect_result_ NTSYSAPI PVOID NTAPI @@ -9591,7 +9639,7 @@ NTAPI RtlFreeHeap( _In_ PVOID HeapHandle, _In_ ULONG Flags, - _In_ PVOID BaseAddress); + _Frees_ptr_opt_ PVOID BaseAddress); NTSYSAPI NTSTATUS @@ -10315,7 +10363,7 @@ NTSYSAPI VOID NTAPI RtlDeleteBoundaryDescriptor( - _In_ PVOID BoundaryDescriptor); + _In_ _Post_invalid_ PVOID BoundaryDescriptor); NTSYSAPI NTSTATUS @@ -10746,7 +10794,7 @@ NTAPI NtCreateTimer2( _Out_ PHANDLE TimerHandle, _In_opt_ PVOID Reserved1, - _In_opt_ PVOID Reserved2, + _In_opt_ POBJECT_ATTRIBUTES ObjectAttributes, _In_ ULONG Attributes, _In_ ACCESS_MASK DesiredAccess); @@ -11544,8 +11592,8 @@ NtManageHotPatch( * ************************************************************************************/ -#define MEM_EXECUTE_OPTION_DISABLE 0x1 -#define MEM_EXECUTE_OPTION_ENABLE 0x2 +#define MEM_EXECUTE_OPTION_ENABLE 0x1 +#define MEM_EXECUTE_OPTION_DISABLE 0x2 #define MEM_EXECUTE_OPTION_DISABLE_THUNK_EMULATION 0x4 #define MEM_EXECUTE_OPTION_PERMANENT 0x8 #define MEM_EXECUTE_OPTION_EXECUTE_DISPATCH_ENABLE 0x10 @@ -11566,6 +11614,7 @@ typedef enum _MEMORY_PARTITION_INFORMATION_CLASS { SystemMemoryPartitionOpenDedicatedMemory, SystemMemoryPartitionMemoryChargeAttributes, SystemMemoryPartitionClearAttributes, + SystemMemoryPartitionSetMemoryThresholds, SystemMemoryPartitionMax } MEMORY_PARTITION_INFORMATION_CLASS; @@ -12579,7 +12628,7 @@ typedef enum _IO_SESSION_EVENT { } IO_SESSION_EVENT; typedef enum _IO_SESSION_STATE { - IoSessionStateCreated, + IoSessionStateCreated = 1, IoSessionStateInitialized, IoSessionStateConnected, IoSessionStateDisconnected, @@ -12711,8 +12760,8 @@ NTAPI NtOpenTransaction( _Out_ PHANDLE TransactionHandle, _In_ ACCESS_MASK DesiredAccess, - _In_ POBJECT_ATTRIBUTES ObjectAttributes, - _In_ LPGUID Uow, + _In_opt_ POBJECT_ATTRIBUTES ObjectAttributes, + _In_opt_ LPGUID Uow, _In_opt_ HANDLE TmHandle); NTSYSAPI @@ -13275,6 +13324,17 @@ NtReadVirtualMemory( _In_ SIZE_T BufferSize, _Out_opt_ PSIZE_T NumberOfBytesRead); +NTSYSAPI +NTSTATUS +NTAPI +NtReadVirtualMemoryEx( + _In_ HANDLE ProcessHandle, + _In_opt_ PVOID BaseAddress, + _Out_writes_bytes_(BufferSize) PVOID Buffer, + _In_ SIZE_T BufferSize, + _Out_opt_ PSIZE_T NumberOfBytesRead, + _In_ ULONG Flags); + NTSYSAPI NTSTATUS NTAPI @@ -13345,19 +13405,27 @@ NtCreatePagingFile( ************************************************************************************/ typedef struct _PORT_VIEW { - ULONG Length; - HANDLE SectionHandle; - ULONG SectionOffset; - SIZE_T ViewSize; - PVOID ViewBase; - PVOID ViewRemoteBase; -} PORT_VIEW, *PPORT_VIEW; + + ULONG Length; // Size of this structure + HANDLE SectionHandle; // Handle to section object with + // SECTION_MAP_WRITE and SECTION_MAP_READ + ULONG SectionOffset; // The offset in the section to map a view for + // the port data area. The offset must be aligned + // with the allocation granularity of the system. + SIZE_T ViewSize; // The size of the view (in bytes) + PVOID ViewBase; // The base address of the view in the creator + // + PVOID ViewRemoteBase; // The base address of the view in the process + // connected to the port. +} PORT_VIEW, * PPORT_VIEW; typedef struct _REMOTE_PORT_VIEW { - ULONG Length; - SIZE_T ViewSize; - PVOID ViewBase; -} REMOTE_PORT_VIEW, *PREMOTE_PORT_VIEW; + + ULONG Length; // Size of this structure + SIZE_T ViewSize; // The size of the view (bytes) + PVOID ViewBase; // Base address of the view + +} REMOTE_PORT_VIEW, * PREMOTE_PORT_VIEW; typedef struct _PORT_MESSAGE { union { @@ -13380,12 +13448,70 @@ typedef struct _PORT_MESSAGE { } u3; ULONG MessageId; union { - ULONG ClientViewSize; // Only valid on LPC_CONNECTION_REQUEST message + SIZE_T ClientViewSize; // Only valid on LPC_CONNECTION_REQUEST message ULONG CallbackId; // Only valid on LPC_REQUEST message } u4; - UCHAR Reserved[8]; } PORT_MESSAGE, *PPORT_MESSAGE; +typedef struct _PORT_MESSAGE32 { + union { + struct { + CSHORT DataLength; + CSHORT TotalLength; + } s1; + ULONG Length; + } u1; + union { + struct { + CSHORT Type; + CSHORT DataInfoOffset; + } s2; + ULONG ZeroInit; + } u2; + union { + CLIENT_ID32 ClientId; + double DoNotUseThisField; // Force quadword alignment + } u3; + ULONG MessageId; + union { + ULONG ClientViewSize; // Only valid on LPC_CONNECTION_REQUEST message + ULONG CallbackId; // Only valid on LPC_REQUEST message + } u4; +} PORT_MESSAGE32, * PPORT_MESSAGE32; + +typedef struct _PORT_MESSAGE64 +{ + union + { + struct + { + CSHORT DataLength; + CSHORT TotalLength; + } s1; + ULONG Length; + } u1; + union + { + struct + { + CSHORT Type; + CSHORT DataInfoOffset; + } s2; + ULONG ZeroInit; + } u2; + union + { + CLIENT_ID64 ClientId; + double DoNotUseThisField; + }; + ULONG MessageId; + union + { + ULONGLONG ClientViewSize; // only valid for LPC_CONNECTION_REQUEST messages + ULONG CallbackId; // only valid for LPC_REQUEST messages + }; +} PORT_MESSAGE64, * PPORT_MESSAGE64; + typedef struct _PORT_DATA_ENTRY { PVOID Base; ULONG Size; @@ -13396,16 +13522,32 @@ typedef struct _PORT_DATA_INFORMATION { PORT_DATA_ENTRY DataEntries[1]; } PORT_DATA_INFORMATION, *PPORT_DATA_INFORMATION; -#define LPC_REQUEST 1 -#define LPC_REPLY 2 -#define LPC_DATAGRAM 3 -#define LPC_LOST_REPLY 4 -#define LPC_PORT_CLOSED 5 -#define LPC_CLIENT_DIED 6 -#define LPC_EXCEPTION 7 -#define LPC_DEBUG_EVENT 8 -#define LPC_ERROR_EVENT 9 -#define LPC_CONNECTION_REQUEST 10 +#ifndef InitializeMessageHeader +#define InitializeMessageHeader(ph, l, t) \ +{ \ + (ph)->u1.s1.TotalLength = (USHORT)(l); \ + (ph)->u1.s1.DataLength = (USHORT)(l - sizeof(PORT_MESSAGE)); \ + (ph)->u2.s2.Type = (USHORT)(t); \ + (ph)->u2.s2.DataInfoOffset = 0; \ + (ph)->ClientId.UniqueProcess = NULL; \ + (ph)->ClientId.UniqueThread = NULL; \ + (ph)->MessageId = 0; \ + (ph)->ClientViewSize = 0; \ +} +#endif + +#define LPC_REQUEST 1 +#define LPC_REPLY 2 +#define LPC_DATAGRAM 3 +#define LPC_LOST_REPLY 4 +#define LPC_PORT_CLOSED 5 +#define LPC_CLIENT_DIED 6 +#define LPC_EXCEPTION 7 +#define LPC_DEBUG_EVENT 8 +#define LPC_ERROR_EVENT 9 +#define LPC_CONNECTION_REQUEST 10 +#define LPC_CONTINUATION_REQUIRED 0x2000 + #define PORT_VALID_OBJECT_ATTRIBUTES (OBJ_CASE_INSENSITIVE) #define PORT_MAXIMUM_MESSAGE_LENGTH 256 @@ -14016,7 +14158,8 @@ typedef enum _SYSDBG_COMMAND { SysDbgGetUmAttachPid, SysDbgClearUmAttachPid, SysDbgGetLiveKernelDump, - SysDbgKdPullRemoteFile + SysDbgKdPullRemoteFile, + SysDbgMaxInfoClass } SYSDBG_COMMAND, *PSYSDBG_COMMAND; typedef struct _SYSDBG_VIRTUAL { diff --git a/Source/Shared/ntos/ntsup.c b/Source/Shared/ntos/ntsup.c index ddd78b28..1e441984 100644 --- a/Source/Shared/ntos/ntsup.c +++ b/Source/Shared/ntos/ntsup.c @@ -1,12 +1,12 @@ /******************************************************************************* * -* (C) COPYRIGHT AUTHORS, 2011 - 2021 UGN/HE +* (C) COPYRIGHT AUTHORS, 2011 - 2022 UGN/HE * * TITLE: NTSUP.C * -* VERSION: 2.10 +* VERSION: 2.11 * -* DATE: 31 Oct 2021 +* DATE: 22 Apr 2022 * * Native API support functions. * @@ -23,6 +23,7 @@ #pragma warning(push) #pragma warning(disable: 26812) // Prefer 'enum class' over 'enum' +#pragma warning(disable: 6320) // exception may mask /* * ntsupHeapAlloc @@ -2150,4 +2151,151 @@ NTSTATUS ntsupEnableWow64Redirection( return RtlWow64EnableFsRedirectionEx(Value, &OldValue); } +/* +* ntsupDetectObjectCallback +* +* Purpose: +* +* Comparer callback routine used in objects enumeration. +* +*/ +NTSTATUS NTAPI ntsupDetectObjectCallback( + _In_ POBJECT_DIRECTORY_INFORMATION Entry, + _In_ PVOID CallbackParam +) +{ + POBJSCANPARAM Param = (POBJSCANPARAM)CallbackParam; + + if (Entry == NULL) { + return STATUS_INVALID_PARAMETER_1; + } + + if (CallbackParam == NULL) { + return STATUS_INVALID_PARAMETER_2; + } + + if (Param->Buffer == NULL || Param->BufferSize == 0) { + return STATUS_MEMORY_NOT_ALLOCATED; + } + + if (Entry->Name.Buffer) { + if (_strcmpi_w(Entry->Name.Buffer, Param->Buffer) == 0) { + return STATUS_SUCCESS; + } + } + return STATUS_UNSUCCESSFUL; +} + +/* +* ntsupEnumSystemObjects +* +* Purpose: +* +* Lookup object by name in given directory. +* +*/ +NTSTATUS NTAPI ntsupEnumSystemObjects( + _In_opt_ LPCWSTR pwszRootDirectory, + _In_opt_ HANDLE hRootDirectory, + _In_ PENUMOBJECTSCALLBACK CallbackProc, + _In_opt_ PVOID CallbackParam +) +{ + ULONG ctx, rlen; + HANDLE hDirectory = NULL; + NTSTATUS status; + NTSTATUS CallbackStatus; + OBJECT_ATTRIBUTES attr; + UNICODE_STRING sname; + + POBJECT_DIRECTORY_INFORMATION objinf; + + if (CallbackProc == NULL) { + return STATUS_INVALID_PARAMETER_4; + } + + status = STATUS_UNSUCCESSFUL; + + __try { + + // We can use root directory. + if (pwszRootDirectory != NULL) { + RtlSecureZeroMemory(&sname, sizeof(sname)); + RtlInitUnicodeString(&sname, pwszRootDirectory); + InitializeObjectAttributes(&attr, &sname, OBJ_CASE_INSENSITIVE, NULL, NULL); + status = NtOpenDirectoryObject(&hDirectory, DIRECTORY_QUERY, &attr); + if (!NT_SUCCESS(status)) { + return status; + } + } + else { + if (hRootDirectory == NULL) { + return STATUS_INVALID_PARAMETER_2; + } + hDirectory = hRootDirectory; + } + + // Enumerate objects in directory. + ctx = 0; + do { + + rlen = 0; + status = NtQueryDirectoryObject(hDirectory, NULL, 0, TRUE, FALSE, &ctx, &rlen); + if (status != STATUS_BUFFER_TOO_SMALL) + break; + + objinf = (POBJECT_DIRECTORY_INFORMATION)ntsupHeapAlloc(rlen); + if (objinf == NULL) + break; + + status = NtQueryDirectoryObject(hDirectory, objinf, rlen, TRUE, FALSE, &ctx, &rlen); + if (!NT_SUCCESS(status)) { + ntsupHeapFree(objinf); + break; + } + + CallbackStatus = CallbackProc(objinf, CallbackParam); + + ntsupHeapFree(objinf); + + if (NT_SUCCESS(CallbackStatus)) { + status = STATUS_SUCCESS; + break; + } + + } while (TRUE); + + if (hDirectory != NULL) { + NtClose(hDirectory); + } + + } + __except (EXCEPTION_EXECUTE_HANDLER) { + status = STATUS_ACCESS_VIOLATION; + } + + return status; +} + +/* +* ntsupIsObjectExists +* +* Purpose: +* +* Return TRUE if the given object exists, FALSE otherwise. +* +*/ +BOOLEAN ntsupIsObjectExists( + _In_ LPCWSTR RootDirectory, + _In_ LPCWSTR ObjectName +) +{ + OBJSCANPARAM Param; + + Param.Buffer = ObjectName; + Param.BufferSize = (ULONG)_strlen(ObjectName); + + return NT_SUCCESS(ntsupEnumSystemObjects(RootDirectory, NULL, ntsupDetectObjectCallback, &Param)); +} + #pragma warning(pop) diff --git a/Source/Shared/ntos/ntsup.h b/Source/Shared/ntos/ntsup.h index 67e7441e..626054ba 100644 --- a/Source/Shared/ntos/ntsup.h +++ b/Source/Shared/ntos/ntsup.h @@ -1,12 +1,12 @@ /************************************************************************************ * -* (C) COPYRIGHT AUTHORS, 2011 - 2021 UGN/HE +* (C) COPYRIGHT AUTHORS, 2011 - 2022 UGN/HE * * TITLE: NTSUP.H * -* VERSION: 2.09 +* VERSION: 2.11 * -* DATE: 14 Oct 2021 +* DATE: 22 Apr 2022 * * Common header file for the NT API support functions and definitions. * @@ -74,6 +74,15 @@ typedef BOOL(CALLBACK* PNTSUPMEMFREE)( #define NTQSI_MAX_BUFFER_LENGTH (512 * 1024 * 1024) +typedef struct _OBJSCANPARAM { + PCWSTR Buffer; + ULONG BufferSize; +} OBJSCANPARAM, * POBJSCANPARAM; + +typedef NTSTATUS(NTAPI* PENUMOBJECTSCALLBACK)( + _In_ POBJECT_DIRECTORY_INFORMATION Entry, + _In_opt_ PVOID CallbackParam); + PVOID ntsupHeapAlloc( _In_ SIZE_T Size); @@ -315,6 +324,10 @@ BOOLEAN ntsupIsKdEnabled( _Out_opt_ PBOOLEAN DebuggerAllowed, _Out_opt_ PBOOLEAN DebuggerNotPresent); +BOOLEAN ntsupIsObjectExists( + _In_ LPCWSTR RootDirectory, + _In_ LPCWSTR ObjectName); + #ifdef ENABLE_C_EXTERN #ifdef __cplusplus } diff --git a/Source/Shared/sdk/extdef.h b/Source/Shared/sdk/extdef.h index bab55a9a..68af17e3 100644 --- a/Source/Shared/sdk/extdef.h +++ b/Source/Shared/sdk/extdef.h @@ -1,12 +1,12 @@ /******************************************************************************* * -* (C) COPYRIGHT AUTHORS, 2019 - 2021 +* (C) COPYRIGHT AUTHORS, 2019 - 2022 * * TITLE: EXTAPI.H * -* VERSION: 1.92 +* VERSION: 1.93 * -* DATE: 13 Nov 2021 +* DATE: 13 May 2022 * * Windows SDK compatibility header. * @@ -123,3 +123,63 @@ typedef enum DPI_AWARENESS { #define DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED ((DPI_AWARENESS_CONTEXT)-5) #endif //_WIN32_WINNT_WIN10 + +#ifndef NTDDI_WINTHRESHOLD +#define NTDDI_WINTHRESHOLD 0x0A000000 /* ABRACADABRA_THRESHOLD */ +#endif + +#ifndef NTDDI_WIN10 +#define NTDDI_WIN10 0x0A000000 /* ABRACADABRA_THRESHOLD */ +#endif + +#ifndef NTDDI_WIN10_TH2 +#define NTDDI_WIN10_TH2 0x0A000001 /* ABRACADABRA_WIN10_TH2 */ +#endif + +#ifndef NTDDI_WIN10_RS1 +#define NTDDI_WIN10_RS1 0x0A000002 /* ABRACADABRA_WIN10_RS1 */ +#endif + +#ifndef NTDDI_WIN10_RS2 +#define NTDDI_WIN10_RS2 0x0A000003 /* ABRACADABRA_WIN10_RS2 */ +#endif + +#ifndef NTDDI_WIN10_RS3 +#define NTDDI_WIN10_RS3 0x0A000004 /* ABRACADABRA_WIN10_RS3 */ +#endif + +#ifndef NTDDI_WIN10_RS4 +#define NTDDI_WIN10_RS4 0x0A000005 /* ABRACADABRA_WIN10_RS4 */ +#endif + +#ifndef NTDDI_WIN10_RS5 +#define NTDDI_WIN10_RS5 0x0A000006 /* ABRACADABRA_WIN10_RS5 */ +#endif + +#ifndef NTDDI_WIN10_19H1 +#define NTDDI_WIN10_19H1 0x0A000007 /* ABRACADABRA_WIN10_19H1 */ +#endif + +#ifndef NTDDI_WIN10_VB +#define NTDDI_WIN10_VB 0x0A000008 /* ABRACADABRA_WIN10_VB */ +#endif + +#ifndef NTDDI_WIN10_MN +#define NTDDI_WIN10_MN 0x0A000009 /* ABRACADABRA_WIN10_MN */ +#endif + +#ifndef NTDDI_WIN10_FE +#define NTDDI_WIN10_FE 0x0A00000A /* ABRACADABRA_WIN10_FE */ +#endif + +#ifndef NTDDI_WIN10_CO +#define NTDDI_WIN10_CO 0x0A00000B /* ABRACADABRA_WIN10_C0 */ +#endif + +#ifndef NTDDI_WIN10_NI +#define NTDDI_WIN10_NI 0x0A00000C /* ABRACADABRA_WIN10_NI */ +#endif + +#ifndef NTDDI_WIN10_CU +#define NTDDI_WIN10_CU 0x0A00000D /* ABRACADABRA_WIN10_CU */ +#endif diff --git a/Source/WinObjEx64/Resource.rc b/Source/WinObjEx64/Resource.rc index 71651e406517779abbe8bd9061654d06a274dfdb..28e58b7761b0b277f37cb873288f1f53c4ab7d81 100644 GIT binary patch delta 96 zcmaDblk34ut__Qt0>fWdU~S}R=?zP`2O=6_bNn1F(Ma7Fy~x|pPUfzW93S}R=?zP`2O=6_bNn1F(Ma7Fy~x| Application true - v142 + v143 Unicode Application true - v142 + v143 Unicode false Application false - v142 + v143 true Unicode false @@ -53,7 +53,7 @@ Application false - v142 + v143 true Unicode false @@ -61,7 +61,7 @@ Application false - v142 + v143 true Unicode false @@ -103,7 +103,7 @@ .\output\$(Platform)\$(Configuration)\bin\ .\output\$(Platform)\$(Configuration)\ - NativeRecommendedRules.ruleset + AllRules.ruleset true @@ -162,7 +162,7 @@ true true $(SolutionDir)\Shared;$(ProjectDir);$(ProjectDir)\props;$(ProjectDir)\extras - _DEBUG;_WINDOWS;_USE_OWN_DRIVER;%(PreprocessorDefinitions) + _DEBUG;_WINDOWS;_USE_OWN_DRIVER;_USE_WINIO;%(PreprocessorDefinitions) CompileAsCpp @@ -184,8 +184,11 @@ - _UseOwnDriver;%(PreprocessorDefinitions) + _UseOwnDriver;_UseWinIo;%(PreprocessorDefinitions) + + $(ProjectDir)Utils\GenAsIo2Unlock .\output\$(Platform)\$(Configuration)\$(TargetName)$(TargetExt) + @@ -257,7 +260,7 @@ $(SolutionDir)\Shared;$(ProjectDir);$(ProjectDir)\props;$(ProjectDir)\extras true Guard - CompileAsCpp + CompileAsC Windows @@ -315,7 +318,6 @@ Windows true true - false 6.0 true true @@ -323,6 +325,7 @@ true + false false @@ -337,8 +340,7 @@ - - + $(ProjectDir)Utils\GenAsIo2Unlock .\output\$(Platform)\$(Configuration)\bin\$(TargetName)$(TargetExt) _UseOwnDriver;_UseWinIo;%(PreprocessorDefinitions) @@ -373,7 +375,9 @@ - + + + @@ -388,7 +392,6 @@ - @@ -432,7 +435,9 @@ - + + + @@ -451,7 +456,6 @@ - diff --git a/Source/WinObjEx64/WinObjEx64.vcxproj.filters b/Source/WinObjEx64/WinObjEx64.vcxproj.filters index 94bbf06a..1f1e7fc1 100644 --- a/Source/WinObjEx64/WinObjEx64.vcxproj.filters +++ b/Source/WinObjEx64/WinObjEx64.vcxproj.filters @@ -13,39 +13,39 @@ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - {1f87af63-dc0b-4a32-88ee-e9e15a1041c8} - - - {b8b6096c-f90d-41f3-a643-a53ee0fae82b} - {3dd02ac9-71cb-4104-baba-dee9bd04a2cc} {cb4d8330-830a-457c-9f73-0d59de70caa2} - - {621f3500-b7f1-418f-8901-7eff2d8c3a2d} - {87a2b20f-17e9-4ce8-abbd-11f4b06fde61} - - {34095c79-e50f-47a4-9daa-c1f74616bcfe} - - - {ae7f1c88-69d2-406e-a44a-9dddafd020c3} - {9201749a-5b24-4976-a330-f03440b3e27d} - - {8d5cdc6e-beaf-49b6-9010-113b6a83341a} - {495dbe60-1cd4-44e0-a57a-5820605391e9} + + {da588ca3-321f-4491-adcb-55b1d888e133} + + + {ae7f1c88-69d2-406e-a44a-9dddafd020c3} + + + {34095c79-e50f-47a4-9daa-c1f74616bcfe} + + + {621f3500-b7f1-418f-8901-7eff2d8c3a2d} + + + {1f87af63-dc0b-4a32-88ee-e9e15a1041c8} + + + {b8b6096c-f90d-41f3-a643-a53ee0fae82b} + @@ -57,9 +57,6 @@ Source Files - - Source Files - Source Files @@ -73,7 +70,7 @@ Source Files - hde + Hde Source Files @@ -145,94 +142,91 @@ Source Files - minirtl + Minirtl - minirtl + Minirtl - minirtl + Minirtl - minirtl + Minirtl - minirtl + Minirtl - minirtl + Minirtl - minirtl + Minirtl - minirtl + Minirtl - minirtl + Minirtl - minirtl + Minirtl - minirtl + Minirtl - minirtl + Minirtl - minirtl + Minirtl - minirtl + Minirtl - minirtl + Minirtl - minirtl + Minirtl - minirtl + Minirtl - minirtl + Minirtl - minirtl + Minirtl - minirtl + Minirtl - minirtl + Minirtl - minirtl + Minirtl - minirtl + Minirtl - minirtl + Minirtl - ntos + Ntos - treelist - - - Source Files + Source Files\treelist - tinyaes + Source Files\tinyaes Source Files\log - ntos + Ntos Source Files @@ -249,6 +243,15 @@ Source Files + + Source Files\drivers + + + Source Files\drivers + + + Source Files\drivers + @@ -268,9 +271,6 @@ Header Files - - Header Files - Header Files @@ -290,13 +290,13 @@ Header Files - hde + Hde - hde + Hde - hde + Hde Header Files @@ -386,22 +386,22 @@ Header Files - minirtl + Minirtl - ntos + Ntos - ntos + Ntos - ntos + Ntos - ntos + Ntos - treelist + Source Files\treelist Source Files\extras @@ -409,14 +409,11 @@ Header Files - - Header Files - - ntos + Ntos - tinyaes + Source Files\tinyaes Header Files @@ -424,11 +421,8 @@ Source Files\log - - sdk - - ntos + Ntos Header Files @@ -443,16 +437,28 @@ Header Files - ntos + Ntos Header Files - minirtl + Minirtl - ntos + Ntos + + + Source Files\drivers + + + Source Files\drivers + + + Source Files\drivers + + + Header Files diff --git a/Source/WinObjEx64/aboutDlg.c b/Source/WinObjEx64/aboutDlg.c index 118dd697..3a8c037b 100644 --- a/Source/WinObjEx64/aboutDlg.c +++ b/Source/WinObjEx64/aboutDlg.c @@ -1,12 +1,12 @@ /******************************************************************************* * -* (C) COPYRIGHT AUTHORS, 2015 - 2021 +* (C) COPYRIGHT AUTHORS, 2015 - 2022 * * TITLE: ABOUTDLG.C * -* VERSION: 1.92 +* VERSION: 1.93 * -* DATE: 14 Oct 2021 +* DATE: 11 May 2022 * * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF * ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED @@ -34,7 +34,9 @@ VALUE_DESC CodeIntegrityValuesList[] = { { L"CODEINTEGRITY_OPTION_HVCI_KMCI_ENABLED", CODEINTEGRITY_OPTION_HVCI_KMCI_ENABLED }, { L"CODEINTEGRITY_OPTION_HVCI_KMCI_AUDITMODE_ENABLED", CODEINTEGRITY_OPTION_HVCI_KMCI_AUDITMODE_ENABLED }, { L"CODEINTEGRITY_OPTION_HVCI_KMCI_STRICTMODE_ENABLED", CODEINTEGRITY_OPTION_HVCI_KMCI_STRICTMODE_ENABLED }, - { L"CODEINTEGRITY_OPTION_HVCI_IUM_ENABLED", CODEINTEGRITY_OPTION_HVCI_IUM_ENABLED } + { L"CODEINTEGRITY_OPTION_HVCI_IUM_ENABLED", CODEINTEGRITY_OPTION_HVCI_IUM_ENABLED }, + { L"CODEINTEGRITY_OPTION_WHQL_ENFORCEMENT_ENABLED", CODEINTEGRITY_OPTION_WHQL_ENFORCEMENT_ENABLED }, + { L"CODEINTEGRITY_OPTION_WHQL_AUDITMODE_ENABLED", CODEINTEGRITY_OPTION_WHQL_AUDITMODE_ENABLED } }; /* @@ -372,7 +374,7 @@ VOID AboutDialogCollectGlobals( ) { BOOLEAN bCustomSignersAllowed; - + LPWSTR lpType; ULONG Index, Value, SaveValue; WCHAR szBuffer[MAX_PATH * 4]; @@ -429,7 +431,7 @@ VOID AboutDialogCollectGlobals( // OS version. // GetDlgItemText(hwndParent, ID_ABOUT_OSNAME, szBuffer, MAX_PATH); - AddParameterValue(hwndOutput, TEXT("Operation System"), szBuffer); + AddParameterValue(hwndOutput, TEXT("System.OS"), szBuffer); // // CPU. @@ -492,7 +494,7 @@ VOID AboutDialogCollectGlobals( _strcat(szBuffer, szTemp); } - AddParameterValue(hwndOutput, TEXT("Processor"), szBuffer); + AddParameterValue(hwndOutput, TEXT("Environment.Processor"), szBuffer); RegCloseKey(hKey); } @@ -505,72 +507,92 @@ VOID AboutDialogCollectGlobals( SystemInfo.dwNumberOfProcessors, SystemInfo.dwActiveProcessorMask); - AddParameterValue(hwndOutput, TEXT("Number of Processors"), szBuffer); + AddParameterValue(hwndOutput, TEXT("Environment.NumberOfProcessors"), szBuffer); + + AddParameterValueBool(hwndOutput, TEXT("Internal.IsFullAdmin"), g_kdctx.IsFullAdmin); //admin privileges available + AddParameterValueBool(hwndOutput, TEXT("Internal.IsSecureBoot"), g_kdctx.IsSecureBoot); //secure boot enabled + AddParameterValueBool(hwndOutput, TEXT("Internal.IsWine"), g_WinObj.IsWine); + AddParameterValueBool(hwndOutput, TEXT("Internal.EnableFullMitigations"), g_WinObj.EnableFullMitigations); // - // List g_kdctx. + // Helper driver state. // - szBuffer[0] = L'0'; - szBuffer[1] = L'x'; - szBuffer[2] = 0; - ultohex(g_kdctx.DriverOpenLoadStatus, &szBuffer[2]); - if (g_kdctx.DriverOpenLoadStatus == STATUS_SUCCESS) { - _strcat(szBuffer, TEXT(" (reported as OK)")); + AddParameterValue32Hex(hwndOutput, TEXT("Driver.LoadStatus"), g_kdctx.DriverContext.LoadStatus); + AddParameterValue32Hex(hwndOutput, TEXT("Driver.OpenStatus"), g_kdctx.DriverContext.OpenStatus); + AddParameterValueBool(hwndOutput, TEXT("Driver.IsOurLoad"), g_kdctx.DriverContext.IsOurLoad); //driver was loaded by our program instance + + switch (WDrvGetActiveProviderType()) { + case wdrvAlice: + lpType = L"Alice"; + break; + case wdrvRkhDrv5: + lpType = L"Rkhdrv5"; + break; + case wdrvWinIo: + lpType = L"WinIo"; + break; + case wdrvWinObjEx64: + lpType = L"WinObjEx64"; + break; + case wdrvMicrosoft: + default: + lpType = L"Microsoft"; + break; } + AddParameterValue(hwndOutput, TEXT("Driver.ActiveProvider"), lpType); - AddParameterValue(hwndOutput, TEXT("DriverOpenLoadStatus"), szBuffer); - AddParameterValue32Hex(hwndOutput, TEXT("DriverConnectStatus"), g_kdctx.DriverConnectStatus); //kdConnectDriver status - AddParameterValue64Hex(hwndOutput, TEXT("KLDBG DeviceHandle"), (ULONG_PTR)g_kdctx.DeviceHandle); - - AddParameterValueBool(hwndOutput, TEXT("IsFullAdmin"), g_kdctx.IsFullAdmin); //admin privileges available - AddParameterValueBool(hwndOutput, TEXT("IsSecureBoot"), g_kdctx.IsSecureBoot); //secure boot enabled - AddParameterValueBool(hwndOutput, TEXT("IsOurLoad"), g_kdctx.IsOurLoad); //driver was loaded by our program instance - - AddParameterValue64Hex(hwndOutput, TEXT("DirectoryRootObject"), g_kdctx.DirectoryRootObject); //address of object root directory - AddParameterValueUlong(hwndOutput, TEXT("DirectoryTypeIndex"), g_kdctx.DirectoryTypeIndex); - - AddParameterValue64Hex(hwndOutput, TEXT("NtOsBase"), (ULONG_PTR)g_kdctx.NtOsBase); - AddParameterValue64Hex(hwndOutput, TEXT("NtOsImageMap"), (ULONG_PTR)g_kdctx.NtOsImageMap);//mapped image address - AddParameterValue32Hex(hwndOutput, TEXT("NtOsSize"), g_kdctx.NtOsSize);//mapped image size + // + // Ntoskrnl + // + AddParameterValue64Hex(hwndOutput, TEXT("Loader.NtOsBase"), (ULONG_PTR)g_kdctx.NtOsBase); + AddParameterValue64Hex(hwndOutput, TEXT("Loader.NtOsImageMap"), (ULONG_PTR)g_kdctx.NtOsImageMap);//mapped image address + AddParameterValue32Hex(hwndOutput, TEXT("Loader.NtOsSize"), g_kdctx.NtOsSize);//mapped image size - AddParameterValue64Hex(hwndOutput, TEXT("NtOsSymContext"), (ULONG_PTR)g_kdctx.NtOsSymContext); + // + // Ntoskrnl symbols + // + AddParameterValue64Hex(hwndOutput, TEXT("SymContext.ContextBase"), (ULONG_PTR)g_kdctx.NtOsSymContext); if (g_kdctx.NtOsSymContext) { - AddParameterValue64Hex(hwndOutput, TEXT("NtOsSymContext->ModuleBase"), ((PSYMCONTEXT)g_kdctx.NtOsSymContext)->ModuleBase); + AddParameterValue64Hex(hwndOutput, TEXT("SymContext.ModuleBase"), ((PSYMCONTEXT)g_kdctx.NtOsSymContext)->ModuleBase); } - AddParameterValue64Hex(hwndOutput, TEXT("SystemRangeStart"), (ULONG_PTR)g_kdctx.SystemRangeStart); - AddParameterValue64Hex(hwndOutput, TEXT("MinimumUserModeAddress"), (ULONG_PTR)g_kdctx.MinimumUserModeAddress); - AddParameterValue64Hex(hwndOutput, TEXT("MaximumUserModeAddress"), (ULONG_PTR)g_kdctx.MaximumUserModeAddress); - // - // List kldbg data. + // Directory object // - AddParameterValueBool(hwndOutput, TEXT("ObHeaderCookieValid"), g_kdctx.Data->ObHeaderCookie.Valid); - AddParameterValue32Hex(hwndOutput, TEXT("ObHeaderCookie"), g_kdctx.Data->ObHeaderCookie.Value); + AddParameterValue64Hex(hwndOutput, TEXT("System.DirectoryRootObject"), g_kdctx.DirectoryRootObject); //address of object root directory + AddParameterValueUlong(hwndOutput, TEXT("System.DirectoryTypeIndex"), g_kdctx.DirectoryTypeIndex); - AddParameterValueUlong(hwndOutput, TEXT("KiServiceLimit"), g_kdctx.Data->KeServiceDescriptorTable.Limit); - AddParameterValue64Hex(hwndOutput, TEXT("KiServiceTableAddress"), (ULONG_PTR)g_kdctx.Data->KeServiceDescriptorTable.Base); - AddParameterValue64Hex(hwndOutput, TEXT("IopInvalidDeviceRequest"), (ULONG_PTR)g_kdctx.Data->IopInvalidDeviceRequest); - AddParameterValue64Hex(hwndOutput, TEXT("PrivateNamespaceLookupTable"), (ULONG_PTR)g_kdctx.Data->PrivateNamespaceLookupTable); + // + // Product info + // + AddParameterValueBool(hwndOutput, TEXT("System.LTSC"), supIsLongTermServicingWindows()); // - // List g_WinObj (UI specific). + // System ranges // - AddParameterValueBool(hwndOutput, TEXT("IsWine"), g_WinObj.IsWine); + AddParameterValue64Hex(hwndOutput, TEXT("System.SystemRangeStart"), (ULONG_PTR)g_kdctx.SystemRangeStart); + AddParameterValue64Hex(hwndOutput, TEXT("System.MinimumUserModeAddress"), (ULONG_PTR)g_kdctx.MinimumUserModeAddress); + AddParameterValue64Hex(hwndOutput, TEXT("System.MaximumUserModeAddress"), (ULONG_PTR)g_kdctx.MaximumUserModeAddress); // - // For MMIO usage. + // List kldbg data. // - AddParameterValueBool(hwndOutput, TEXT("EnableFullMitigations"), g_WinObj.EnableFullMitigations); + AddParameterValueBool(hwndOutput, TEXT("System.ObHeaderCookieValid"), g_kdctx.Data->ObHeaderCookie.Valid); + AddParameterValue32Hex(hwndOutput, TEXT("System.ObHeaderCookie"), g_kdctx.Data->ObHeaderCookie.Value); + + AddParameterValueUlong(hwndOutput, TEXT("System.KiServiceLimit"), g_kdctx.Data->KeServiceDescriptorTable.Limit); + AddParameterValue64Hex(hwndOutput, TEXT("System.KiServiceTableAddress"), (ULONG_PTR)g_kdctx.Data->KeServiceDescriptorTable.Base); + AddParameterValue64Hex(hwndOutput, TEXT("System.IopInvalidDeviceRequest"), (ULONG_PTR)g_kdctx.Data->IopInvalidDeviceRequest); + AddParameterValue64Hex(hwndOutput, TEXT("System.PrivateNamespaceLookupTable"), (ULONG_PTR)g_kdctx.Data->PrivateNamespaceLookupTable); // // List other data. // if (NT_SUCCESS(supCICustomKernelSignersAllowed(&bCustomSignersAllowed))) { - AddParameterValueBool(hwndOutput, TEXT("CICustomKernelSignersAllowed"), bCustomSignersAllowed); + AddParameterValueBool(hwndOutput, TEXT("System.CICustomKernelSignersAllowed"), bCustomSignersAllowed); } - AddParameterValueUlong(hwndOutput, TEXT("DPI Value"), (ULONG)supGetDPIValue(NULL)); + AddParameterValueUlong(hwndOutput, TEXT("System.DpiValue"), (ULONG)supGetDPIValue(NULL)); CodeIntegrity.Length = sizeof(CodeIntegrity); CodeIntegrity.CodeIntegrityOptions = 0; @@ -580,7 +602,7 @@ VOID AboutDialogCollectGlobals( sizeof(CodeIntegrity), &Dummy))) { - AddParameterValue32Hex(hwndOutput, TEXT("CI Options Value"), CodeIntegrity.CodeIntegrityOptions); + AddParameterValue32Hex(hwndOutput, TEXT("System.CodeIntegrityOptions"), CodeIntegrity.CodeIntegrityOptions); if (CodeIntegrity.CodeIntegrityOptions) { @@ -589,7 +611,7 @@ VOID AboutDialogCollectGlobals( if (CodeIntegrity.CodeIntegrityOptions & CodeIntegrityValuesList[Index].dwValue) { AddParameterValue( hwndOutput, - TEXT("CI Option"), + TEXT("System.CodeIntegrityOption"), CodeIntegrityValuesList[Index].lpDescription); CodeIntegrity.CodeIntegrityOptions &= ~CodeIntegrityValuesList[Index].dwValue; } @@ -600,7 +622,7 @@ VOID AboutDialogCollectGlobals( SaveValue = CodeIntegrity.CodeIntegrityOptions; while (SaveValue) { if (SaveValue & Value) { - AddParameterValue32Hex(hwndOutput, TEXT("CI Option (unknown)"), Value); + AddParameterValue32Hex(hwndOutput, TEXT("System.CodeIntegrityOption(unknown)"), Value); SaveValue &= ~Value; } Value *= 2; @@ -616,7 +638,7 @@ VOID AboutDialogCollectGlobals( sizeof(KernelVaShadow), &Dummy))) { - AddParameterValue32Hex(hwndOutput, TEXT("KvaShadow Flags"), KernelVaShadow.Flags); + AddParameterValue32Hex(hwndOutput, TEXT("System.KvaShadowFlags"), KernelVaShadow.Flags); } SpeculationControl.Flags = 0; @@ -626,9 +648,14 @@ VOID AboutDialogCollectGlobals( sizeof(SpeculationControl), &Dummy))) { - AddParameterValue32Hex(hwndOutput, TEXT("SpeculationControl Flags"), SpeculationControl.Flags); + AddParameterValue32Hex(hwndOutput, TEXT("System.SpeculationControlFlags"), SpeculationControl.Flags); } + AddParameterValue(hwndOutput, TEXT("System.TempDirectory"), g_WinObj.szTempDirectory); + AddParameterValue(hwndOutput, TEXT("System.WindowsDirectory"), g_WinObj.szWindowsDirectory); + AddParameterValue(hwndOutput, TEXT("System.SystemDirectory"), g_WinObj.szSystemDirectory); + AddParameterValue(hwndOutput, TEXT("System.ProgramDirectory"), g_WinObj.szProgramDirectory); + RtlSecureZeroMemory(&VsmProtectionInfo, sizeof(VsmProtectionInfo)); if (NT_SUCCESS(NtQuerySystemInformation( SystemVsmProtectionInformation, @@ -642,11 +669,6 @@ VOID AboutDialogCollectGlobals( AddParameterValueBool(hwndOutput, TEXT("Vsm.ApicVirtualizationAvailable"), VsmProtectionInfo.ApicVirtualizationAvailable); } - AddParameterValue(hwndOutput, TEXT("TempDirectory"), g_WinObj.szTempDirectory); - AddParameterValue(hwndOutput, TEXT("WindowsDirectory"), g_WinObj.szWindowsDirectory); - AddParameterValue(hwndOutput, TEXT("SystemDirectory"), g_WinObj.szSystemDirectory); - AddParameterValue(hwndOutput, TEXT("ProgramDirectory"), g_WinObj.szProgramDirectory); - // // End work with RichEdit. // diff --git a/Source/WinObjEx64/driver.rc b/Source/WinObjEx64/driver.rc index 5aa81791..956c5823 100644 --- a/Source/WinObjEx64/driver.rc +++ b/Source/WinObjEx64/driver.rc @@ -5,7 +5,7 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US IDR_KDBGDRV SYS "..\\drvstore\\kldbgdrv.sys" #else #ifdef _UseWinIo -IDR_KDBGDRV SYS "..\\drvstore\\ene64drv.sys" +IDR_KDBGDRV SYS "..\\drvstore\\winio.sys" #else IDR_KDBGDRV SYS "..\\drvstore\\wodbgdrv.sys" #endif diff --git a/Source/WinObjEx64/drivers/wdbgdrv.c b/Source/WinObjEx64/drivers/wdbgdrv.c new file mode 100644 index 00000000..16106a31 --- /dev/null +++ b/Source/WinObjEx64/drivers/wdbgdrv.c @@ -0,0 +1,163 @@ +/******************************************************************************* +* +* (C) COPYRIGHT AUTHORS, 2022 +* +* TITLE: WDBGDRV.C +* +* VERSION: 1.93 +* +* DATE: 22 Apr 2022 +* +* MS WinDbg kldbgdrv based reader. +* +* Note: +* +* Windows Debug mode is required for using this driver. +* +* THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF +* ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED +* TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A +* PARTICULAR PURPOSE. +* +*******************************************************************************/ +#include "global.h" +#include "wdbgdrv.h" + +/* +* WDbgpDrvReadSystemMemoryWithStatus +* +* Purpose: +* +* Wrapper around SysDbgReadVirtual request to the KLDBGDRV/WODBGDRV +* +*/ +BOOL WDbgpDrvReadSystemMemoryWithStatus( + _In_ WDRV_CONTEXT* Context, + _In_ ULONG_PTR Address, + _Inout_ PVOID Buffer, + _In_ ULONG BufferSize, + _Out_opt_ PULONG NumberOfBytesRead, + _Out_ NTSTATUS* Status, + _Out_ PIO_STATUS_BLOCK IoStatus +) +{ + BOOL bResult; + NTSTATUS ntStatus; + KLDBG kldbg; + IO_STATUS_BLOCK iost; + SYSDBG_VIRTUAL dbgRequest; + + if (NumberOfBytesRead) + *NumberOfBytesRead = 0; + + *Status = STATUS_UNSUCCESSFUL; + IoStatus->Information = 0; + IoStatus->Status = STATUS_UNSUCCESSFUL; + + // + // Fill parameters for KdSystemDebugControl. + // + dbgRequest.Address = (PVOID)Address; + dbgRequest.Buffer = Buffer; + dbgRequest.Request = BufferSize; + + // + // Fill parameters for kldbgdrv ioctl. + // + kldbg.SysDbgRequest = SysDbgReadVirtual; + kldbg.Buffer = &dbgRequest; + kldbg.BufferSize = sizeof(SYSDBG_VIRTUAL); + + iost.Information = 0; + iost.Status = 0; + + ntStatus = NtDeviceIoControlFile(Context->DeviceHandle, + NULL, + NULL, + NULL, + &iost, + IOCTL_KD_PASS_THROUGH, + &kldbg, + sizeof(kldbg), + &dbgRequest, + sizeof(dbgRequest)); + + if (ntStatus == STATUS_PENDING) { + + ntStatus = NtWaitForSingleObject(Context->DeviceHandle, + FALSE, + NULL); + + } + + *Status = ntStatus; + + if (NT_SUCCESS(ntStatus)) + ntStatus = iost.Status; + + IoStatus->Information = iost.Information; + IoStatus->Status = iost.Status; + + bResult = NT_SUCCESS(ntStatus); + + if (bResult) { + + if (NumberOfBytesRead) + *NumberOfBytesRead = (ULONG)iost.Information; + + } + else { + // + // We don't need this information in case of error. + // + if (!NT_ERROR(ntStatus)) { + if (NumberOfBytesRead) + *NumberOfBytesRead = (ULONG)iost.Information; + } + + } + + return bResult; +} + +/* +* WDbgDrvReadSystemMemory +* +* Purpose: +* +* Call internal WDbgpDrvReadSystemMemoryWithStatus. +* +*/ +BOOL WDbgDrvReadSystemMemory( + _In_ WDRV_CONTEXT* Context, + _In_ ULONG_PTR Address, + _Inout_ PVOID Buffer, + _In_ ULONG BufferSize, + _Out_opt_ PULONG NumberOfBytesRead +) +{ + ULONG numberOfBytesRead = 0; + + if (NumberOfBytesRead) + *NumberOfBytesRead = 0; + + if ((Buffer == NULL) || + (BufferSize == 0) || + (Address < g_kdctx.SystemRangeStart)) + { + return FALSE; + } + + BOOL bResult = WDbgpDrvReadSystemMemoryWithStatus(Context, + Address, + Buffer, + BufferSize, + &numberOfBytesRead, + &Context->LastNtStatus, + &Context->IoStatusBlock); + + if (NumberOfBytesRead) + *NumberOfBytesRead = numberOfBytesRead; + + return bResult; +} diff --git a/Source/WinObjEx64/drivers/wdbgdrv.h b/Source/WinObjEx64/drivers/wdbgdrv.h new file mode 100644 index 00000000..1053c2f7 --- /dev/null +++ b/Source/WinObjEx64/drivers/wdbgdrv.h @@ -0,0 +1,26 @@ +/******************************************************************************* +* +* (C) COPYRIGHT AUTHORS, 2022 +* +* TITLE: WDBGDRV.H +* +* VERSION: 1.93 +* +* DATE: 22 Apr 2022 +* +* Common header file for the WINDBG Driver Helper support. +* +* THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF +* ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED +* TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A +* PARTICULAR PURPOSE. +* +*******************************************************************************/ +#pragma once + +BOOL WDbgDrvReadSystemMemory( + _In_ WDRV_CONTEXT* Context, + _In_ ULONG_PTR Address, + _Inout_ PVOID Buffer, + _In_ ULONG BufferSize, + _Out_opt_ PULONG NumberOfBytesRead); diff --git a/Source/WinObjEx64/drivers/wdrvprv.c b/Source/WinObjEx64/drivers/wdrvprv.c new file mode 100644 index 00000000..4a82a335 --- /dev/null +++ b/Source/WinObjEx64/drivers/wdrvprv.c @@ -0,0 +1,562 @@ +/******************************************************************************* +* +* (C) COPYRIGHT AUTHORS, 2022 +* +* TITLE: WDRVPRV.C +* +* VERSION: 1.93 +* +* DATE: 22 Apr 2022 +* +* Driver providers abstraction layer. +* +* THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF +* ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED +* TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A +* PARTICULAR PURPOSE. +* +*******************************************************************************/ +#include "global.h" +#include "drivers/wdbgdrv.h" +#include "drivers/winio.h" + +#ifdef _USE_OWN_DRIVER +#ifdef _USE_WINIO +#define WDRV_PROVIDER_TYPE wdrvWinIo +static WDRV_PROVIDER g_wdpEntry = { + WINIO_DRV_NAME, + WINIO_DEV_NAME, + WDRVPROV_FLAGS_UEFI_REQUIRED | WDRVPROV_FLAGS_FORCE_SD, + WDrvStartDriver, + WDrvStopDriver, + WDrvOpenDriver, + NULL, //register + NULL, //unregister + NULL, //preopen + WDrvProvPostOpen, + WinIoReadSystemMemory +}; +#else +#define WDRV_PROVIDER_TYPE wdrvWinObjEx64 +static WDRV_PROVIDER g_wdpEntry = { + L"wodbgdrv", + L"wodbgdrv", + WDRVPROV_FLAGS_NONE, + WDrvStartDriver, + WDrvStopDriver, + WDrvOpenDriver, + NULL, //register + NULL, //unregister + NULL, //preopen + NULL, //postopen + WDbgDrvReadSystemMemory +}; +#endif +#else + +#define WDRV_PROVIDER_TYPE wdrvMicrosoft +static WDRV_PROVIDER g_wdpEntry = { + L"kldbgdrv", + L"kldbgdrv", + WDRVPROV_FLAGS_NONE, + WDrvStartDriver, + WDrvStopDriver, + WDrvOpenDriver, + NULL, //register + NULL, //unregister + NULL, //preopen + NULL, //postopen + WDbgDrvReadSystemMemory +}; +#endif + +#define PHY_ADDRESS_MASK 0x000ffffffffff000ull +#define PHY_ADDRESS_MASK_2MB_PAGES 0x000fffffffe00000ull +#define VADDR_ADDRESS_MASK_2MB_PAGES 0x00000000001fffffull +#define VADDR_ADDRESS_MASK_4KB_PAGES 0x0000000000000fffull +#define ENTRY_PRESENT_BIT 1 +#define ENTRY_PAGE_SIZE_BIT 0x0000000000000080ull + + +int PwEntryToPhyAddr(ULONG_PTR entry, ULONG_PTR* phyaddr) +{ + if (entry & ENTRY_PRESENT_BIT) { + *phyaddr = entry & PHY_ADDRESS_MASK; + return 1; + } + + return 0; +} + +NTSTATUS PwVirtualToPhysical( + _In_ HANDLE DeviceHandle, + _In_ provQueryPML4 QueryPML4Routine, + _In_ provReadPhysicalMemory ReadPhysicalMemoryRoutine, + _In_ ULONG_PTR VirtualAddress, + _Out_ ULONG_PTR* PhysicalAddress) +{ + NTSTATUS ntStatus; + ULONG_PTR pml4_cr3, selector, table, entry = 0; + INT r, shift; + + ntStatus = QueryPML4Routine(DeviceHandle, &pml4_cr3); + if (!NT_SUCCESS(ntStatus)) + return ntStatus; + + table = pml4_cr3 & PHY_ADDRESS_MASK; + + for (r = 0; r < 4; r++) { + + shift = 39 - (r * 9); + selector = (VirtualAddress >> shift) & 0x1ff; + + ntStatus = ReadPhysicalMemoryRoutine(DeviceHandle, + table + selector * 8, + &entry, + sizeof(ULONG_PTR)); + + if (!NT_SUCCESS(ntStatus)) + return ntStatus; + + if (PwEntryToPhyAddr(entry, &table) == 0) + return STATUS_INTERNAL_ERROR; + + if ((r == 2) && ((entry & ENTRY_PAGE_SIZE_BIT) != 0)) { + table &= PHY_ADDRESS_MASK_2MB_PAGES; + table += VirtualAddress & VADDR_ADDRESS_MASK_2MB_PAGES; + *PhysicalAddress = table; + return STATUS_SUCCESS; + } + } + + table += VirtualAddress & VADDR_ADDRESS_MASK_4KB_PAGES; + *PhysicalAddress = table; + + return STATUS_SUCCESS; +} + +WDRVPRVTYPE WDrvGetActiveProviderType( + VOID) +{ + return (WDRVPRVTYPE)WDRV_PROVIDER_TYPE; +} + +/* +* WDrvProvPostOpen +* +* Purpose: +* +* Provider post-open driver generic callback. +* +*/ +BOOL WINAPI WDrvProvPostOpen( + _In_ PVOID Param +) +{ + WDRV_CONTEXT* Context = (WDRV_CONTEXT*)Param; + PSECURITY_DESCRIPTOR driverSD = NULL; + + PACL defaultAcl = NULL; + HANDLE deviceHandle; + HANDLE strHandle = NULL; + NTSTATUS ntStatus; + + deviceHandle = Context->DeviceHandle; + + // + // Check if we need to forcebly set SD. + // + if (Context->Provider->ForceSD) { + + + ntStatus = supCreateSystemAdminAccessSD(&driverSD, &defaultAcl); + + if (NT_SUCCESS(ntStatus)) { + + ntStatus = NtSetSecurityObject(deviceHandle, + DACL_SECURITY_INFORMATION, + driverSD); + + if (defaultAcl) supHeapFree(defaultAcl); + supHeapFree(driverSD); + + if (NT_SUCCESS(ntStatus)) { + + // + // Remove WRITE_DAC from result handle. + // + if (NT_SUCCESS(NtDuplicateObject(NtCurrentProcess(), + deviceHandle, + NtCurrentProcess(), + &strHandle, + GENERIC_WRITE | GENERIC_READ, + 0, + 0))) + { + NtClose(deviceHandle); + deviceHandle = strHandle; + } + + } + + Context->DeviceHandle = deviceHandle; + + } + + } + + return (deviceHandle != NULL); +} + +/* +* WDrvExtractDriverResource +* +* Purpose: +* +* Extract driver from application resource +* +*/ +BOOL WDrvExtractDriverResource( + _In_ LPCWSTR lpExtractTo, + _In_ LPCWSTR lpName, + _In_ LPCWSTR lpType +) +{ + HRSRC hResInfo = NULL; + HGLOBAL hResData = NULL; + PVOID pData; + BOOL bResult = FALSE; + DWORD dwSize = 0, dwLastError = ERROR_SUCCESS; + HANDLE hFile; + + hResInfo = FindResource(g_WinObj.hInstance, lpName, lpType); + if (hResInfo == NULL) { + SetLastError(ERROR_RESOURCE_NAME_NOT_FOUND); + return bResult; + } + + dwSize = SizeofResource(g_WinObj.hInstance, hResInfo); + if (dwSize == 0) { + return bResult; + } + + hResData = LoadResource(g_WinObj.hInstance, hResInfo); + if (hResData == NULL) { + return bResult; + } + + pData = LockResource(hResData); + if (pData == NULL) { + return bResult; + } + + hFile = CreateFile(lpExtractTo, + GENERIC_WRITE, + 0, + NULL, + CREATE_ALWAYS, + 0, + NULL); + + if (hFile == INVALID_HANDLE_VALUE) { + return bResult; + } + else { + bResult = WriteFile(hFile, pData, dwSize, &dwSize, NULL); + if (!bResult) dwLastError = GetLastError(); + CloseHandle(hFile); + } + + SetLastError(dwLastError); + return bResult; +} + +/* +* WDrvExtractDriver +* +* Purpose: +* +* Save driver to system32\drivers from application resource. +* +* N.B. If driver already exist on disk function return TRUE. +* This is required for WinDBG compatibility. +* +*/ +BOOL WDrvExtractDriver( + _In_ WCHAR* szDriverPath +) +{ + BOOL bResult = FALSE; + + // + // If no file exists, extract it to the drivers directory. + // + bResult = PathFileExists(szDriverPath); + + if (!bResult) { + bResult = WDrvExtractDriverResource(szDriverPath, MAKEINTRESOURCE(IDR_KDBGDRV), L"SYS"); + } + + return bResult; +} + +/* +* WDrvLoadDriver +* +* Purpose: +* +* Load helper driver. +* +*/ +NTSTATUS WDrvLoadDriver( + _In_ PWDRV_CONTEXT Context +) +{ + NTSTATUS ntStatus; + + // + // Build file path and write file to disk. + // + RtlStringCchPrintfSecure(Context->DriverFileName, + ARRAYSIZE(Context->DriverFileName), + L"%ws\\drivers\\%ws.sys", + g_WinObj.szSystemDirectory, + Context->Provider->DriverName); + + if (!WDrvExtractDriver(Context->DriverFileName)) { + return STATUS_FILE_NOT_AVAILABLE; + } + + ntStatus = supLoadDriverEx(Context->Provider->DriverName, + Context->DriverFileName, + TRUE, + NULL, + NULL); + + if (!NT_SUCCESS(ntStatus)) { + DeleteFile(Context->DriverFileName); + } + + return ntStatus; +} + +/* +* WDrvOpenDriver +* +* Purpose: +* +* Open handle to driver device, run optional callbacks. +* +*/ +NTSTATUS WDrvOpenDriver( + _In_ PWDRV_CONTEXT Context +) +{ + NTSTATUS ntStatus; + HANDLE deviceHandle = NULL; + + ULONG openFlags = GENERIC_WRITE | GENERIC_READ; + + if (Context->Provider->Callbacks.PreOpenDriver) { + + Context->Provider->Callbacks.PreOpenDriver((PVOID)Context); + + } + + if (Context->Provider->ForceSD) + openFlags |= WRITE_DAC; + + ntStatus = supOpenDriver(Context->Provider->DeviceName, + openFlags, + &deviceHandle); + + if (NT_SUCCESS(ntStatus)) { + Context->DeviceHandle = deviceHandle; + + if (Context->Provider->Callbacks.PostOpenDriver) { + + Context->Provider->Callbacks.PostOpenDriver((PVOID)Context); + + } + + } + + return ntStatus; +} + +/* +* WDrvStartDriver +* +* Purpose: +* +* Load driver and open handle to it, run optional callbacks. +* +*/ +NTSTATUS WDrvStartDriver( + _In_ PWDRV_CONTEXT Context +) +{ + BOOL bLoaded = FALSE; + NTSTATUS ntStatus = STATUS_SUCCESS; + + // + // Check if driver already loaded. + // + if (supIsObjectExists((LPWSTR)L"\\Device", Context->Provider->DeviceName)) { + + Context->IsOurLoad = FALSE; + bLoaded = TRUE; + + } + else { + + ntStatus = WDrvLoadDriver(Context); + bLoaded = NT_SUCCESS(ntStatus); + Context->IsOurLoad = bLoaded; + + } + + if (bLoaded) { + + Context->LoadStatus = ntStatus; + ntStatus = Context->Provider->Callbacks.OpenDriver(Context); + Context->OpenStatus = ntStatus; + } + + return ntStatus; +} + +/* +* WDrvStopDriver +* +* Purpose: +* +* Stop driver, delete registry entry and remove driver file from disk. +* +*/ +VOID WDrvStopDriver( + _In_ PWDRV_CONTEXT Context +) +{ + NTSTATUS ntStatus; + LPWSTR lpDriverName = Context->Provider->DriverName; + LPWSTR lpFullFileName = Context->DriverFileName; + + ntStatus = supUnloadDriver(lpDriverName, TRUE); + if (NT_SUCCESS(ntStatus)) { + + supDeleteFileWithWait(1000, 5, lpFullFileName); + } +} + +VOID WDrvFallBackOnLoad( + _Inout_ PWDRV_CONTEXT* Context +) +{ + PWDRV_CONTEXT ctx = *Context; + + if (ctx->DeviceHandle) + NtClose(ctx->DeviceHandle); + + ctx->Provider->Callbacks.StopDriver(ctx); + + supHeapFree(ctx); + *Context = NULL; +} + +/* +* WDrvProvCreate +* +* Purpose: +* +* Create driver provider instance. +* +* Note: +* SE_DEBUG_PRIVILEGE must be assigned. +* +*/ +NTSTATUS WDrvProvCreate( + _In_ FIRMWARE_TYPE FirmwareType, + _Out_ PWDRV_CONTEXT Context +) +{ + NTSTATUS ntStatus; + PWDRV_PROVIDER provider = NULL; + + // + // Enable debug privilege. + // + if (!supEnablePrivilege(SE_DEBUG_PRIVILEGE, TRUE)) { + return STATUS_PRIVILEGE_NOT_HELD; + } + + provider = &g_wdpEntry; + + // + // UEFI compat check. + // + if (provider->UefiRequired && (FirmwareType != FirmwareTypeUefi)) { + return STATUS_NOT_SUPPORTED; + } + + Context->Provider = provider; + + // + // Load and open driver. + // + ntStatus = Context->Provider->Callbacks.StartDriver(Context); + + if (NT_SUCCESS(ntStatus)) { + + if (Context->Provider->Callbacks.RegisterDriver) + if (!Context->Provider->Callbacks.RegisterDriver(Context->DeviceHandle, + (PVOID)Context)) + { + ntStatus = STATUS_INTERNAL_ERROR; + } + + } + + return ntStatus; +} + +/* +* WDrvProvRelease +* +* Purpose: +* +* Release driver provider instance. +* +*/ +VOID WDrvProvRelease( + _In_ PWDRV_CONTEXT Context +) +{ + PWDRV_PROVIDER provider; + HANDLE deviceHandle; + + if (Context) { + + provider = Context->Provider; + + if (provider) { + + deviceHandle = Context->DeviceHandle; + if (deviceHandle) { + if (provider->Callbacks.UnregisterDriver) + provider->Callbacks.UnregisterDriver(deviceHandle, + (PVOID)Context); + + NtClose(deviceHandle); + } + + if (provider->NoUnloadSupported == 0) { + + provider->Callbacks.StopDriver(Context); + } + } + + RtlSecureZeroMemory(Context, sizeof(WDRV_CONTEXT)); + + } +} diff --git a/Source/WinObjEx64/drivers/wdrvprv.h b/Source/WinObjEx64/drivers/wdrvprv.h new file mode 100644 index 00000000..95bcdfba --- /dev/null +++ b/Source/WinObjEx64/drivers/wdrvprv.h @@ -0,0 +1,204 @@ +/******************************************************************************* +* +* (C) COPYRIGHT AUTHORS, 2022 +* +* TITLE: WDRVPRV.H +* +* VERSION: 1.93 +* +* DATE: 22 Apr 2022 +* +* Common header file for WinObjEx64 driver providers. +* +* THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF +* ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED +* TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A +* PARTICULAR PURPOSE. +* +*******************************************************************************/ +#pragma once + +typedef enum _WDRVPRVTYPE { + // Microsoft WinDbg driver + wdrvMicrosoft = 0, + // WinObjEx64 driver + wdrvWinObjEx64 = 1, + // WinIO based driver + wdrvWinIo = 2, + // Rkhdrv series driver + wdrvRkhDrv5 = 3, + // Alice driver + wdrvAlice = 4, + wdrvMax +} WDRVPRVTYPE; + +// +// Providers abstraction interface. +// + +typedef struct _WDRV_CONTEXT* PWDRV_CONTEXT; + +// +// Prototype for read physical memory function. +// +typedef NTSTATUS(WINAPI* provReadPhysicalMemory)( + _In_ HANDLE DeviceHandle, + _In_ ULONG_PTR PhysicalAddress, + _In_ PVOID Buffer, + _In_ ULONG NumberOfBytes); + +// +// Prototype for query PML4 value function. +// +typedef NTSTATUS(WINAPI* provQueryPML4)( + _In_ HANDLE DeviceHandle, + _Out_ ULONG_PTR* Value); + +// +// Prototype for read kernel virtual memory function. +// +typedef BOOL(WINAPI* provReadSystemMemory)( + _In_ struct _WDRV_CONTEXT* Context, + _In_ ULONG_PTR Address, + _Inout_ PVOID Buffer, + _In_ ULONG BufferSize, + _Out_opt_ PULONG NumberOfBytesRead); + +// +// Prototype for driver registering/unlocking function. +// +typedef BOOL(WINAPI* provRegisterDriver)( + _In_ HANDLE DeviceHandle, + _In_opt_ PVOID Param); + +// +// Prototype for driver unregistering function. +// +typedef BOOL(WINAPI* provUnregisterDriver)( + _In_ HANDLE DeviceHandle, + _In_opt_ PVOID Param); + +// +// Prototype for driver specific pre-open actions. +// +typedef BOOL(WINAPI* provPreOpenDriver)( + _In_opt_ PVOID Param + ); + +// +// Prototype for driver specific post-open actions. +// +typedef BOOL(WINAPI* provPostOpenDriver)( + _In_opt_ PVOID Param + ); + +// +// Start/Stop/Open prototypes. +// +typedef NTSTATUS(WINAPI* provStartDriver)( + _In_ struct _WDRV_CONTEXT* Context + ); +typedef void(WINAPI* provStopDriver)( + _In_ struct _WDRV_CONTEXT* Context + ); +typedef NTSTATUS(WINAPI* provOpenDriver)( + _In_ struct _WDRV_CONTEXT* Context + ); + +// +// No optional provider flags specified, this is default value. +// +#define WDRVPROV_FLAGS_NONE 0x00000000 + +// +// Provider requires UEFI firmware type. +// +#define WDRVPROV_FLAGS_UEFI_REQUIRED 0x00000001 + +// +// Set System/Admin-only security descriptor to the provider driver device. +// +#define WDRVPROV_FLAGS_FORCE_SD 0x00000002 + +// +// Do not unload, driver does not support this. +// +#define WDRVPROV_FLAGS_NO_UNLOAD_SUP 0x00000004 + + +typedef struct _WDRV_PROVIDER { + LPWSTR DriverName; // file name only + LPWSTR DeviceName; // device name only + + union { + ULONG Flags; + struct { + ULONG UefiRequired : 1; + ULONG ForceSD : 1; + ULONG NoUnloadSupported : 1; + ULONG Reserved : 29; + }; + }; + + struct { + provStartDriver StartDriver; + provStopDriver StopDriver; + provOpenDriver OpenDriver; + + provRegisterDriver RegisterDriver; //optional + provUnregisterDriver UnregisterDriver; //optional + + provPreOpenDriver PreOpenDriver; //optional; + provPostOpenDriver PostOpenDriver; //optional; + + provReadSystemMemory ReadSystemMemory; + } Callbacks; + +} WDRV_PROVIDER, * PWDRV_PROVIDER; + +typedef struct _WDRV_CONTEXT { + + BOOL IsOurLoad; + + NTSTATUS LoadStatus; + NTSTATUS OpenStatus; + + HANDLE DeviceHandle; + PWDRV_PROVIDER Provider; + + //full file name to the driver + WCHAR DriverFileName[MAX_PATH * 2]; + + NTSTATUS LastNtStatus; + IO_STATUS_BLOCK IoStatusBlock; + +} WDRV_CONTEXT, * PWDRV_CONTEXT; + +WDRVPRVTYPE WDrvGetActiveProviderType( + VOID); + +BOOL WINAPI WDrvProvPostOpen( + _In_ PVOID Param); + +NTSTATUS WDrvStartDriver( + _In_ PWDRV_CONTEXT Context); + +VOID WDrvStopDriver( + _In_ PWDRV_CONTEXT Context); + +NTSTATUS WDrvOpenDriver( + _In_ PWDRV_CONTEXT Context); + +NTSTATUS WDrvProvCreate( + _In_ FIRMWARE_TYPE FirmwareType, + _Out_ PWDRV_CONTEXT Context); + +VOID WDrvProvRelease( + _In_ PWDRV_CONTEXT Context); + +NTSTATUS PwVirtualToPhysical( + _In_ HANDLE DeviceHandle, + _In_ provQueryPML4 QueryPML4Routine, + _In_ provReadPhysicalMemory ReadPhysicalMemoryRoutine, + _In_ ULONG_PTR VirtualAddress, + _Out_ ULONG_PTR* PhysicalAddress); diff --git a/Source/WinObjEx64/drvhelper.c b/Source/WinObjEx64/drivers/winio.c similarity index 63% rename from Source/WinObjEx64/drvhelper.c rename to Source/WinObjEx64/drivers/winio.c index d1eb3966..8995ce06 100644 --- a/Source/WinObjEx64/drvhelper.c +++ b/Source/WinObjEx64/drivers/winio.c @@ -1,14 +1,14 @@ /******************************************************************************* * -* (C) COPYRIGHT AUTHORS, 2020 +* (C) COPYRIGHT AUTHORS, 2022 * -* TITLE: DRVHELPER.C +* TITLE: WINIO.C * -* VERSION: 1.85 +* VERSION: 1.93 * -* DATE: 06 Mar 2020 -* -* WinIo based VM-through-PM reader, used only in private builds, WHQL. +* DATE: 22 Apr 2022 +* +* WinIo based reader. * * Note: * @@ -23,110 +23,159 @@ * PARTICULAR PURPOSE. * *******************************************************************************/ - #include "global.h" #include "ntos/halamd64.h" +#include "winio.h" +#include "tinyaes/aes.h" -#define PHY_ADDRESS_MASK 0x000ffffffffff000ull -#define PHY_ADDRESS_MASK_2MB_PAGES 0x000fffffffe00000ull -#define VADDR_ADDRESS_MASK_2MB_PAGES 0x00000000001fffffull -#define VADDR_ADDRESS_MASK_4KB_PAGES 0x0000000000000fffull -#define ENTRY_PRESENT_BIT 1 -#define ENTRY_PAGE_SIZE_BIT 0x0000000000000080ull +typedef NTSTATUS(WINAPI* pfnMapMemory)( + _In_ HANDLE DeviceHandle, + _In_ ULONG_PTR PhysicalAddress, + _In_ ULONG NumberOfBytes, + _Out_ HANDLE* SectionHandle, + _Out_ PVOID* ReferencedObject, + _Out_ PVOID* MappedMemory); -#include "tinyaes/aes.h" +typedef NTSTATUS(WINAPI* pfnUnmapMemory)( + _In_ HANDLE DeviceHandle, + _In_ PVOID SectionToUnmap, + _In_ HANDLE SectionHandle, + _In_ PVOID ReferencedObject); + +NTSTATUS WinIoUnmapMemoryEx( + _In_ HANDLE DeviceHandle, + _In_ PVOID SectionToUnmap, + _In_ HANDLE SectionHandle, + _In_ PVOID ReferencedObject); + +NTSTATUS WinIoUnmapMemory( + _In_ HANDLE DeviceHandle, + _In_ PVOID SectionToUnmap, + _In_ HANDLE SectionHandle, + _In_ PVOID ReferencedObject); + +NTSTATUS WinIoMapMemory( + _In_ HANDLE DeviceHandle, + _In_ ULONG_PTR PhysicalAddress, + _In_ ULONG NumberOfBytes, + _Out_ HANDLE* SectionHandle, + _Out_ PVOID* ReferencedObject, + _Out_ PVOID* MappedMemory); + +NTSTATUS WinIoMapMemoryEx( + _In_ HANDLE DeviceHandle, + _In_ ULONG_PTR PhysicalAddress, + _In_ ULONG NumberOfBytes, + _Out_ HANDLE* SectionHandle, + _Out_ PVOID* ReferencedObject, + _Out_ PVOID* MappedMemory); + +#ifdef WINIO_A +#define MapMemoryRoutine WinIoMapMemoryEx +#define UnmapMemoryRoutine WinIoUnmapMemoryEx +#else +#ifdef WINIO_B +#define MapMemoryRoutine WinIoMapMemory +#define UnmapMemoryRoutine WinIoUnmapMemory +#endif +#endif // // AES key used by EneTechIo latest variants. // ULONG g_EneTechIoUnlockKey[4] = { 0x54454E45, 0x4E484345, 0x474F4C4F, 0x434E4959 }; - -int PwEntryToPhyAddr(ULONG_PTR entry, ULONG_PTR* phyaddr) -{ - if (entry & ENTRY_PRESENT_BIT) { - *phyaddr = entry & PHY_ADDRESS_MASK; - return 1; - } - - return 0; -} - -NTSTATUS PwVirtualToPhysical( +/* +* WinIoMapMemoryEx +* +* Purpose: +* +* Map physical memory through \Device\PhysicalMemory. +* +*/ +NTSTATUS WinIoMapMemoryEx( _In_ HANDLE DeviceHandle, - _In_ provQueryPML4 QueryPML4Routine, - _In_ provReadPhysicalMemory ReadPhysicalMemoryRoutine, - _In_ ULONG_PTR VirtualAddress, - _Out_ ULONG_PTR* PhysicalAddress) + _In_ ULONG_PTR PhysicalAddress, + _In_ ULONG NumberOfBytes, + _Out_ HANDLE* SectionHandle, + _Out_ PVOID* ReferencedObject, + _Out_ PVOID* MappedMemory) { - NTSTATUS ntStatus; - ULONG_PTR pml4_cr3, selector, table, entry = 0; - INT r, shift; - - ntStatus = QueryPML4Routine(DeviceHandle, &pml4_cr3); - if (!NT_SUCCESS(ntStatus)) - return ntStatus; + ULONG seconds; + NTSTATUS ntStatus; + AES_ctx ctx; + WINIO_PHYSICAL_MEMORY_INFO_EX request; - table = pml4_cr3 & PHY_ADDRESS_MASK; + *SectionHandle = NULL; + *ReferencedObject = NULL; - for (r = 0; r < 4; r++) { + RtlSecureZeroMemory(&ctx, sizeof(ctx)); + AES_init_ctx(&ctx, (uint8_t*)&g_EneTechIoUnlockKey); - shift = 39 - (r * 9); - selector = (VirtualAddress >> shift) & 0x1ff; + RtlSecureZeroMemory(&request, sizeof(request)); + request.CommitSize = NumberOfBytes; + request.BusAddress = PhysicalAddress; - ntStatus = ReadPhysicalMemoryRoutine(DeviceHandle, - table + selector * 8, - &entry, - sizeof(ULONG_PTR)); + seconds = supGetTimeAsSecondsSince1970(); - if (!NT_SUCCESS(ntStatus)) - return ntStatus; + RtlCopyMemory(&request.EncryptedKey, (PVOID)&seconds, sizeof(seconds)); + AES_ECB_encrypt(&ctx, (UCHAR*)&request.EncryptedKey); - if (PwEntryToPhyAddr(entry, &table) == 0) - return STATUS_INTERNAL_ERROR; + ntStatus = supCallDriver(DeviceHandle, + WINIO_IOCTL_MAP, + &request, + sizeof(request), + &request, + sizeof(request)); - if ((r == 2) && ((entry & ENTRY_PAGE_SIZE_BIT) != 0)) { - table &= PHY_ADDRESS_MASK_2MB_PAGES; - table += VirtualAddress & VADDR_ADDRESS_MASK_2MB_PAGES; - *PhysicalAddress = table; - return STATUS_SUCCESS; - } + if (NT_SUCCESS(ntStatus)) { + *SectionHandle = request.SectionHandle; + *ReferencedObject = request.ReferencedObject; + *MappedMemory = request.BaseAddress; } - table += VirtualAddress & VADDR_ADDRESS_MASK_4KB_PAGES; - *PhysicalAddress = table; - - return STATUS_SUCCESS; + return ntStatus; } /* -* WinIoCallDriver +* WinIoUnmapMemoryEx * * Purpose: * -* Call WinIo driver. +* Unmap previously mapped physical memory. * */ -NTSTATUS WinIoCallDriver( +NTSTATUS WinIoUnmapMemoryEx( _In_ HANDLE DeviceHandle, - _In_ ULONG IoControlCode, - _In_ PVOID InputBuffer, - _In_ ULONG InputBufferLength, - _In_opt_ PVOID OutputBuffer, - _In_opt_ ULONG OutputBufferLength) + _In_ PVOID SectionToUnmap, + _In_ HANDLE SectionHandle, + _In_ PVOID ReferencedObject +) { - IO_STATUS_BLOCK ioStatus; - - return NtDeviceIoControlFile(DeviceHandle, - NULL, - NULL, - NULL, - &ioStatus, - IoControlCode, - InputBuffer, - InputBufferLength, - OutputBuffer, - OutputBufferLength); + ULONG seconds; + AES_ctx ctx; + WINIO_PHYSICAL_MEMORY_INFO_EX request; + + RtlSecureZeroMemory(&ctx, sizeof(ctx)); + AES_init_ctx(&ctx, (uint8_t*)&g_EneTechIoUnlockKey); + + RtlSecureZeroMemory(&request, sizeof(request)); + request.BaseAddress = SectionToUnmap; + request.ReferencedObject = ReferencedObject; + request.SectionHandle = SectionHandle; + + seconds = supGetTimeAsSecondsSince1970(); + + RtlCopyMemory(&request.EncryptedKey, (PVOID)&seconds, sizeof(ULONG)); + AES_ECB_encrypt(&ctx, (UCHAR*)&request.EncryptedKey); + + return supCallDriver(DeviceHandle, + WINIO_IOCTL_UNMAP, + &request, + sizeof(request), + &request, + sizeof(request)); + } /* @@ -145,28 +194,18 @@ NTSTATUS WinIoMapMemory( _Out_ PVOID* ReferencedObject, _Out_ PVOID* MappedMemory) { - ULONG seconds; NTSTATUS ntStatus; - AES_ctx ctx; - WINIO_PHYSICAL_MEMORY_INFO_EX request; + WINIO_PHYSICAL_MEMORY_INFO request; *SectionHandle = NULL; *ReferencedObject = NULL; - RtlSecureZeroMemory(&ctx, sizeof(ctx)); - AES_init_ctx(&ctx, (uint8_t*)&g_EneTechIoUnlockKey); - RtlSecureZeroMemory(&request, sizeof(request)); - request.CommitSize = NumberOfBytes; + request.ViewSize = NumberOfBytes; request.BusAddress = PhysicalAddress; - seconds = supGetTimeAsSecondsSince1970(); - - RtlCopyMemory(&request.EncryptedKey, (PVOID)&seconds, sizeof(seconds)); - AES_ECB_encrypt(&ctx, (UCHAR*)&request.EncryptedKey); - - ntStatus = WinIoCallDriver(DeviceHandle, - IOCTL_WINIO_MAP_USER_PHYSICAL_MEMORY, + ntStatus = supCallDriver(DeviceHandle, + WINIO_IOCTL_MAP, &request, sizeof(request), &request, @@ -196,30 +235,19 @@ NTSTATUS WinIoUnmapMemory( _In_ PVOID ReferencedObject ) { - ULONG seconds; - AES_ctx ctx; - WINIO_PHYSICAL_MEMORY_INFO_EX request; - - RtlSecureZeroMemory(&ctx, sizeof(ctx)); - AES_init_ctx(&ctx, (uint8_t*)&g_EneTechIoUnlockKey); + WINIO_PHYSICAL_MEMORY_INFO request; RtlSecureZeroMemory(&request, sizeof(request)); request.BaseAddress = SectionToUnmap; request.ReferencedObject = ReferencedObject; request.SectionHandle = SectionHandle; - seconds = supGetTimeAsSecondsSince1970(); - - RtlCopyMemory(&request.EncryptedKey, (PVOID)&seconds, sizeof(ULONG)); - AES_ECB_encrypt(&ctx, (UCHAR*)&request.EncryptedKey); - - return WinIoCallDriver(DeviceHandle, - IOCTL_WINIO_UNMAP_USER_PHYSICAL_MEMORY, + return supCallDriver(DeviceHandle, + WINIO_IOCTL_UNMAP, &request, sizeof(request), &request, sizeof(request)); - } /* @@ -292,7 +320,7 @@ NTSTATUS WINAPI WinIoQueryPML4Value( do { - ntStatus = WinIoMapMemory(DeviceHandle, + ntStatus = MapMemoryRoutine(DeviceHandle, 0ULL, 0x100000, §ionHandle, @@ -310,10 +338,8 @@ NTSTATUS WINAPI WinIoQueryPML4Value( PML4 = WinIoGetPML4FromLowStub1M((ULONG_PTR)pbLowStub1M); if (PML4) *Value = PML4; - else - *Value = 0; - WinIoUnmapMemory(DeviceHandle, + UnmapMemoryRoutine(DeviceHandle, (PVOID)pbLowStub1M, sectionHandle, refObject); @@ -348,7 +374,7 @@ NTSTATUS WINAPI WinIoReadPhysicalMemory( // // Map physical memory section. // - ntStatus = WinIoMapMemory(DeviceHandle, + ntStatus = MapMemoryRoutine(DeviceHandle, PhysicalAddress, NumberOfBytes, §ionHandle, @@ -370,7 +396,7 @@ NTSTATUS WINAPI WinIoReadPhysicalMemory( // // Unmap physical memory section. // - WinIoUnmapMemory(DeviceHandle, + UnmapMemoryRoutine(DeviceHandle, mappedSection, sectionHandle, refObject); @@ -440,14 +466,15 @@ NTSTATUS WINAPI WinIoReadKernelVirtualMemory( } /* -* WinIoReadSystemMemoryEx +* WinIoReadSystemMemory * * Purpose: * * Read kernel virtual memory. * */ -BOOL WinIoReadSystemMemoryEx( +BOOL WinIoReadSystemMemory( + _In_ WDRV_CONTEXT* Context, _In_ ULONG_PTR Address, _Inout_ PVOID Buffer, _In_ ULONG BufferSize, @@ -455,47 +482,53 @@ BOOL WinIoReadSystemMemoryEx( ) { BOOL bResult = FALSE; - IO_STATUS_BLOCK iost; - NTSTATUS ntStatus; + NTSTATUS ntStatus = STATUS_UNSUCCESSFUL; PVOID lockedBuffer = NULL; if (NumberOfBytesRead) *NumberOfBytesRead = 0; - if (Address < g_kdctx.SystemRangeStart) - return FALSE; + if (Address >= g_kdctx.SystemRangeStart) { - lockedBuffer = supVirtualAlloc(BufferSize); - if (lockedBuffer) { + lockedBuffer = supVirtualAlloc(BufferSize); + if (lockedBuffer) { - if (VirtualLock(lockedBuffer, BufferSize)) { + if (VirtualLock(lockedBuffer, BufferSize)) { - ntStatus = WinIoReadKernelVirtualMemory(g_kdctx.DeviceHandle, - Address, - lockedBuffer, - BufferSize); + ntStatus = WinIoReadKernelVirtualMemory(Context->DeviceHandle, + Address, + lockedBuffer, + BufferSize); - if (!NT_SUCCESS(ntStatus)) { + if (NT_SUCCESS(ntStatus)) { - iost.Status = ntStatus; - iost.Information = 0; + if (NumberOfBytesRead) + *NumberOfBytesRead = BufferSize; - kdReportReadError(__FUNCTIONW__, Address, BufferSize, ntStatus, &iost); - } - else { - if (NumberOfBytesRead) - *NumberOfBytesRead = BufferSize; + RtlCopyMemory(Buffer, lockedBuffer, BufferSize); - RtlCopyMemory(Buffer, lockedBuffer, BufferSize); + bResult = TRUE; + } - bResult = TRUE; + VirtualUnlock(lockedBuffer, BufferSize); + } + else { + ntStatus = STATUS_NOT_LOCKED; } - VirtualUnlock(lockedBuffer, BufferSize); + supVirtualFree(lockedBuffer); } - - supVirtualFree(lockedBuffer); + else { + ntStatus = STATUS_MEMORY_NOT_ALLOCATED; + } + } + else { + ntStatus = STATUS_INVALID_PARAMETER_2; } + Context->LastNtStatus = ntStatus; + Context->IoStatusBlock.Information = 0; + Context->IoStatusBlock.Status = ntStatus; + return bResult; } diff --git a/Source/WinObjEx64/drivers/winio.h b/Source/WinObjEx64/drivers/winio.h new file mode 100644 index 00000000..75985299 --- /dev/null +++ b/Source/WinObjEx64/drivers/winio.h @@ -0,0 +1,83 @@ +/******************************************************************************* +* +* (C) COPYRIGHT AUTHORS, 2022 +* +* TITLE: WINIO.H +* +* VERSION: 1.93 +* +* DATE: 22 Apr 2022 +* +* Common header file for the WINIO Driver Helper support. +* +* THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF +* ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED +* TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A +* PARTICULAR PURPOSE. +* +*******************************************************************************/ +#pragma once + +#define WINIO_B + +#define FILE_DEVICE_WINIO (DWORD)0x00008010 +#define FILE_DEVICE_ASUSIO (DWORD)0x0000A040 + +#define WINIO_IOCTL_INDEX (DWORD)0x810 + +#define WINIO_MAP_FUNCID (DWORD)WINIO_IOCTL_INDEX +#define WINIO_UNMAP_FUNCID (DWORD)WINIO_IOCTL_INDEX + 1 + +#define ASUSIO_MAP_FUNCID (DWORD)0x920 +#define ASUSIO_UNMAP_FUNCID (DWORD)0x914 + +#define IOCTL_WINIO_MAP_USER_PHYSICAL_MEMORY \ + CTL_CODE(FILE_DEVICE_WINIO, WINIO_MAP_FUNCID, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_WINIO_UNMAP_USER_PHYSICAL_MEMORY \ + CTL_CODE(FILE_DEVICE_WINIO, WINIO_UNMAP_FUNCID, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_ASUSIO_MAP_USER_PHYSICAL_MEMORY \ + CTL_CODE(FILE_DEVICE_ASUSIO, ASUSIO_MAP_FUNCID, METHOD_BUFFERED, FILE_WRITE_ACCESS) + +#define IOCTL_ASUSIO_UNMAP_USER_PHYSICAL_MEMORY \ + CTL_CODE(FILE_DEVICE_ASUSIO, ASUSIO_UNMAP_FUNCID, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#ifdef WINIO_A +#define WINIO_IOCTL_MAP IOCTL_WINIO_MAP_USER_PHYSICAL_MEMORY +#define WINIO_IOCTL_UNMAP IOCTL_WINIO_UNMAP_USER_PHYSICAL_MEMORY +#define WINIO_DRV_NAME L"EneTechIo" +#define WINIO_DEV_NAME L"EneTechIo" +#else +#ifdef WINIO_B +#define WINIO_IOCTL_MAP IOCTL_ASUSIO_MAP_USER_PHYSICAL_MEMORY +#define WINIO_IOCTL_UNMAP IOCTL_ASUSIO_UNMAP_USER_PHYSICAL_MEMORY +#define WINIO_DRV_NAME L"Asusgio2" +#define WINIO_DEV_NAME L"Asusgio2" +#endif +#endif + + +typedef struct _WINIO_PHYSICAL_MEMORY_INFO { + ULONG_PTR ViewSize; + ULONG_PTR BusAddress; //physical address + HANDLE SectionHandle; + PVOID BaseAddress; + PVOID ReferencedObject; +} WINIO_PHYSICAL_MEMORY_INFO, * PWINIO_PHYSICAL_MEMORYINFO; + +typedef struct _WINIO_PHYSICAL_MEMORY_INFO_EX { + ULONG_PTR CommitSize; + ULONG_PTR BusAddress; + HANDLE SectionHandle; + PVOID BaseAddress; + PVOID ReferencedObject; + UCHAR EncryptedKey[16]; +} WINIO_PHYSICAL_MEMORY_INFO_EX, * PWINIO_PHYSICAL_MEMORY_INFO_EX; + +BOOL WinIoReadSystemMemory( + _In_ WDRV_CONTEXT* Context, + _In_ ULONG_PTR Address, + _Inout_ PVOID Buffer, + _In_ ULONG BufferSize, + _Out_opt_ PULONG NumberOfBytesRead); diff --git a/Source/WinObjEx64/drvhelper.h b/Source/WinObjEx64/drvhelper.h deleted file mode 100644 index 475adb31..00000000 --- a/Source/WinObjEx64/drvhelper.h +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************************* -* -* (C) COPYRIGHT AUTHORS, 2020 - 2021 -* -* TITLE: DRVHELPER.H -* -* VERSION: 1.90 -* -* DATE: 11 May 2021 -* -* Common header file for the Kernel Driver Helper support. -* -* THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF -* ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED -* TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A -* PARTICULAR PURPOSE. -* -*******************************************************************************/ -#pragma once - -#define FILE_DEVICE_WINIO (DWORD)0x00008010 - -#define WINIO_IOCTL_INDEX (DWORD)0x810 - -#define WINIO_MAP_FUNCID (DWORD)WINIO_IOCTL_INDEX -#define WINIO_UNMAP_FUNCID (DWORD)WINIO_IOCTL_INDEX + 1 - -#define IOCTL_WINIO_MAP_USER_PHYSICAL_MEMORY \ - CTL_CODE(FILE_DEVICE_WINIO, WINIO_MAP_FUNCID, METHOD_BUFFERED, FILE_ANY_ACCESS) - -#define IOCTL_WINIO_UNMAP_USER_PHYSICAL_MEMORY \ - CTL_CODE(FILE_DEVICE_WINIO, WINIO_UNMAP_FUNCID, METHOD_BUFFERED, FILE_ANY_ACCESS) - -typedef struct _WINIO_PHYSICAL_MEMORY_INFO_EX { - ULONG_PTR CommitSize; - ULONG_PTR BusAddress; - HANDLE SectionHandle; - PVOID BaseAddress; - PVOID ReferencedObject; - UCHAR EncryptedKey[16]; -} WINIO_PHYSICAL_MEMORY_INFO_EX, * PWINIO_PHYSICAL_MEMORY_INFO_EX; - -// -// Prototype for read physical memory function. -// -typedef NTSTATUS(WINAPI* provReadPhysicalMemory)( - _In_ HANDLE DeviceHandle, - _In_ ULONG_PTR PhysicalAddress, - _In_ PVOID Buffer, - _In_ ULONG NumberOfBytes); - -// -// Prototype for query PML4 value function. -// -typedef NTSTATUS(WINAPI* provQueryPML4)( - _In_ HANDLE DeviceHandle, - _Out_ ULONG_PTR* Value); - -BOOL WinIoReadSystemMemoryEx( - _In_ ULONG_PTR Address, - _Inout_ PVOID Buffer, - _In_ ULONG BufferSize, - _Out_opt_ PULONG NumberOfBytesRead); diff --git a/Source/WinObjEx64/extras/extrasCallbacks.c b/Source/WinObjEx64/extras/extrasCallbacks.c index cd55f088..cecdf6c3 100644 --- a/Source/WinObjEx64/extras/extrasCallbacks.c +++ b/Source/WinObjEx64/extras/extrasCallbacks.c @@ -1,12 +1,12 @@ /******************************************************************************* * -* (C) COPYRIGHT AUTHORS, 2018 - 2021 +* (C) COPYRIGHT AUTHORS, 2018 - 2022 * * TITLE: EXTRASCALLBACKS.C * -* VERSION: 1.92 +* VERSION: 1.93 * -* DATE: 05 Dec 2021 +* DATE: 13 May 2022 * * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF * ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED @@ -25,12 +25,56 @@ #define CBDLG_TRACKSIZE_MIN_X 640 #define CBDLG_TRACKSIZE_MIN_Y 480 +// +// Known CiCallbacks structure sizes (including marker tag), update this from time to time. +// +#define CBT_SIZE_REDSTONE5 0xD0 +#define CBT_SIZE_19HX 0xD0 +#define CBT_SIZE_VB_V1 0xD0 +#define CBT_SIZE_VB_V2 0xE8 +#define CBT_SIZE_CO_V1 0x100 +#define CBT_SIZE_NI_V1 0xF8 +#define CBT_SIZE_CU_V1 0xF8 + +typedef struct _CBT_MAPPING { + ULONG Build; + ULONG Tag; + ULONG Size; +} CBT_MAPPING, * PCBT_MAPPING; + +CBT_MAPPING g_CbtMapping[] = { + { NT_WIN10_REDSTONE5, NTDDI_WIN10_RS5, CBT_SIZE_REDSTONE5 }, + { NT_WIN10_19H1, NTDDI_WIN10_19H1, CBT_SIZE_19HX }, + { NT_WIN10_19H2, NTDDI_WIN10_19H1, CBT_SIZE_19HX }, + + { NT_WIN10_20H1, NTDDI_WIN10_VB, CBT_SIZE_VB_V1 }, + { NT_WIN10_20H1, NTDDI_WIN10_VB, CBT_SIZE_VB_V2 }, + + { NT_WIN10_20H2, NTDDI_WIN10_VB, CBT_SIZE_VB_V1 }, + { NT_WIN10_20H2, NTDDI_WIN10_VB, CBT_SIZE_VB_V2 }, + + { NT_WIN10_21H1, NTDDI_WIN10_VB, CBT_SIZE_VB_V1 }, + { NT_WIN10_21H1, NTDDI_WIN10_VB, CBT_SIZE_VB_V2 }, + + { NT_WIN10_21H2, NTDDI_WIN10_VB, CBT_SIZE_VB_V1 }, + { NT_WIN10_21H2, NTDDI_WIN10_VB, CBT_SIZE_VB_V2 }, + + { NT_WIN11_21H2, NTDDI_WIN10_CO, CBT_SIZE_CO_V1 }, + { NT_WIN11_22H2, NTDDI_WIN10_NI, CBT_SIZE_NI_V1 }, + { NTX_WIN11_ADB, NTDDI_WIN10_CU, CBT_SIZE_CU_V1 } +}; + +// +// CiCompareSigningLevels offset +// +#define CiCompareSigningLevels_Offset 0x40 + ULONG g_CallbacksCount; typedef struct _OBEX_CALLBACK_DISPATCH_ENTRY OBEX_CALLBACK_DISPATCH_ENTRY; typedef ULONG_PTR(CALLBACK *POBEX_FINDCALLBACK_ROUTINE)( - _In_opt_ ULONG_PTR QueryFlags); + _In_ ULONG_PTR QueryFlags); typedef VOID(CALLBACK *POBEX_DISPLAYCALLBACK_ROUTINE)( _In_ HWND TreeList, @@ -39,7 +83,7 @@ typedef VOID(CALLBACK *POBEX_DISPLAYCALLBACK_ROUTINE)( _In_ PRTL_PROCESS_MODULES Modules); typedef NTSTATUS(CALLBACK *POBEX_QUERYCALLBACK_ROUTINE)( - _In_opt_ ULONG_PTR QueryFlags, + _In_ ULONG_PTR QueryFlags, _In_ POBEX_DISPLAYCALLBACK_ROUTINE DisplayRoutine, _In_opt_ POBEX_FINDCALLBACK_ROUTINE FindRoutine, _In_opt_ LPWSTR CallbackType, @@ -48,12 +92,12 @@ typedef NTSTATUS(CALLBACK *POBEX_QUERYCALLBACK_ROUTINE)( _Inout_opt_ PULONG_PTR SystemCallbacksRef); #define OBEX_FINDCALLBACK_ROUTINE(n) ULONG_PTR CALLBACK n( \ - _In_opt_ ULONG_PTR QueryFlags) + _In_ ULONG_PTR QueryFlags) #define OBEX_QUERYCALLBACK_ROUTINE(n) NTSTATUS CALLBACK n( \ - _In_opt_ ULONG_PTR QueryFlags, \ + _In_ ULONG_PTR QueryFlags, \ _In_ POBEX_DISPLAYCALLBACK_ROUTINE DisplayRoutine, \ - _In_opt_ POBEX_FINDCALLBACK_ROUTINE FindRoutine, \ + _In_opt_ POBEX_FINDCALLBACK_ROUTINE FindRoutine, \ _In_opt_ LPWSTR CallbackType, \ _In_ HWND TreeList, \ _In_ PRTL_PROCESS_MODULES Modules, \ @@ -109,6 +153,7 @@ OBEX_FINDCALLBACK_ROUTINE(FindObjectTypeCallbackListHeadByType); OBEX_FINDCALLBACK_ROUTINE(FindRtlpDebugPrintCallbackList); OBEX_FINDCALLBACK_ROUTINE(FindDbgkLmdCallbacks); OBEX_FINDCALLBACK_ROUTINE(FindPsAltSystemCallHandlers); +OBEX_FINDCALLBACK_ROUTINE(FindCiCallbacksEx); OBEX_FINDCALLBACK_ROUTINE(FindCiCallbacks); OBEX_FINDCALLBACK_ROUTINE(FindExHostCallbacks); OBEX_FINDCALLBACK_ROUTINE(FindExpCallbackListHead); @@ -486,6 +531,39 @@ static const BYTE CiCallbackIndexes_Win10RS4_21H2[] = { Id_CiCheckProcessDebugAccessPolicy }; +// +// Windows 10 21H2 updated +// +static const BYTE CiCallbackIndexes_Win1021H2_V2[] = { + Id_CiSetFileCache, + Id_CiGetFileCache, + Id_CiQueryInformation, + Id_CiValidateImageHeader, + Id_CiValidateImageData, + Id_CiHashMemory, + Id_KappxIsPackageFile, + Id_CiCompareSigningLevels, + Id_CiValidateFileAsImageType, + Id_CiRegisterSigningInformation, + Id_CiUnregisterSigningInformation, + Id_CiInitializePolicy, + Id_CiReleaseContext, + Id_XciUnknownCallback, + Id_CiGetStrongImageReference, + Id_CiHvciSetImageBaseAddress, + Id_CipQueryPolicyInformation, + Id_CiValidateDynamicCodePages, + Id_CiQuerySecurityPolicy, + Id_CiRevalidateImage, + Id_CiSetInformation, + Id_CiSetInformationProcess, + Id_CiGetBuildExpiryTime, + Id_CiCheckProcessDebugAccessPolicy, + Id_CiGetCodeIntegrityOriginClaimForFileObject, + Id_CiDeleteCodeIntegrityOriginClaimMembers, + Id_CiDeleteCodeIntegrityOriginClaimForFileObject +}; + // // Windows 11 21H2 // @@ -566,7 +644,8 @@ static const BYTE CiCallbackIndexes_Win11_Next[] = { * */ LPWSTR GetCiRoutineNameFromIndex( - _In_ ULONG Index) + _In_ ULONG Index, + _In_ ULONG_PTR CiCallbacksSize) { ULONG ArrayCount = 0, index; CONST BYTE *Indexes; @@ -614,17 +693,34 @@ LPWSTR GetCiRoutineNameFromIndex( case NT_WIN10_REDSTONE5: case NT_WIN10_19H1: case NT_WIN10_19H2: + Indexes = CiCallbackIndexes_Win10RS4_21H2; + ArrayCount = RTL_NUMBER_OF(CiCallbackIndexes_Win10RS4_21H2); + break; + case NT_WIN10_20H1: case NT_WIN10_20H2: case NT_WIN10_21H1: case NT_WIN10_21H2: - Indexes = CiCallbackIndexes_Win10RS4_21H2; - ArrayCount = RTL_NUMBER_OF(CiCallbackIndexes_Win10RS4_21H2); + + switch (CiCallbacksSize) { + case CBT_SIZE_VB_V2: + Indexes = CiCallbackIndexes_Win1021H2_V2; + ArrayCount = RTL_NUMBER_OF(CiCallbackIndexes_Win1021H2_V2); + break; + + case CBT_SIZE_VB_V1: + default: + Indexes = CiCallbackIndexes_Win10RS4_21H2; + ArrayCount = RTL_NUMBER_OF(CiCallbackIndexes_Win10RS4_21H2); + break; + } break; + case NT_WIN11_21H2: Indexes = CiCallbackIndexes_Win11; ArrayCount = RTL_NUMBER_OF(CiCallbackIndexes_Win11); break; + case NT_WIN11_22H2: case NTX_WIN11_ADB: default: Indexes = CiCallbackIndexes_Win11_Next; @@ -674,6 +770,97 @@ ULONG_PTR ComputeAddressInsideNtOs( return address; } +/* +* FindCiCallbacksEx +* +* Purpose: +* +* Locate address of ntoskrnl SeCiCallbacks structure for Redstone5+. +* +*/ +OBEX_FINDCALLBACK_ROUTINE(FindCiCallbacksEx) +{ + PBYTE ptrCode; + ULONG_PTR cbSize = 0, ulTag = 0, Index = 0, kvarAddress = 0; + LONG Rel = 0; + hde64s hs; + + UNREFERENCED_PARAMETER(QueryFlags); + + // + // NtCompareSigningLevels added in REDSTONE2 (15063) + // It is a call to SeCiCallbacks[CiCompareSigningLevelsId] + // Before REDSTONE5 it is called via wrapper SeCompareSigningLevels + // From REDSTONE6 and above it is inlined + // + + ptrCode = (PBYTE)GetProcAddress((HMODULE)g_kdctx.NtOsImageMap, + "NtCompareSigningLevels"); + + if (ptrCode == NULL) + return 0; + + do { + hde64_disasm((void*)(ptrCode + Index), &hs); + if (hs.flags & F_ERROR) + break; + + if (hs.len == 7) { + + if ((ptrCode[Index] == 0x4C) && + (ptrCode[Index + 1] == 0x8B) && + (ptrCode[Index + 2] == 0x05)) + { + Rel = *(PLONG)(ptrCode + Index + 3); + break; + } + } + + Index += hs.len; + + } while (Index < 64); + + if (Rel == 0) + return 0; + + kvarAddress = kdAdjustAddressToNtOsBase((ULONG_PTR)ptrCode, Index, hs.len, Rel); + kvarAddress -= CiCompareSigningLevels_Offset; + + // + // Read head - structure size. + // + if (!kdReadSystemMemory(kvarAddress, &cbSize, sizeof(cbSize))) + return 0; + + if (cbSize == 0 || cbSize > 0x1000) + return 0; + + // + // Read tail - marker tag. + // + if (!kdReadSystemMemory(kvarAddress + (cbSize - sizeof(ULONG_PTR)), &ulTag, sizeof(ulTag))) + return 0; + + for (Index = 0; Index < RTL_NUMBER_OF(g_CbtMapping); Index++) { + + if (g_CbtMapping[Index].Build == g_NtBuildNumber) { + + // + // Validate for known table values. + // + if (cbSize == g_CbtMapping[Index].Size && + ulTag == g_CbtMapping[Index].Tag) + { + return kvarAddress; + } + + } + + } + + return 0; +} + /* * FindCiCallbacks * @@ -697,8 +884,6 @@ OBEX_FINDCALLBACK_ROUTINE(FindCiCallbacks) LONG Rel = 0; hde64s hs; - UNREFERENCED_PARAMETER(QueryFlags); - do { // @@ -728,141 +913,125 @@ OBEX_FINDCALLBACK_ROUTINE(FindCiCallbacks) // if (kvarAddress == 0) { - // - // Locate PAGE image section as required variable is always in PAGE. - // - SectionBase = supLookupImageSectionByName( - PAGE_SECTION, - PAGE_SECTION_LEGNTH, - g_kdctx.NtOsImageMap, - &SectionSize); + if (g_NtBuildNumber >= NT_WIN10_REDSTONE5) { - if ((SectionBase == 0) || (SectionSize == 0)) - break; + kvarAddress = FindCiCallbacksEx(QueryFlags); - InstructionMatchPattern = SeCiCallbacksMatchingPattern; //default matching pattern - InstructionMatchLength = 7; //lea - InstructionExactMatchLength = RTL_NUMBER_OF(SeCiCallbacksMatchingPattern); + } + else { - switch (g_NtBuildNumber) { + // + // Locate PAGE image section as required variable is always in PAGE. + // + SectionBase = supLookupImageSectionByName( + PAGE_SECTION, + PAGE_SECTION_LEGNTH, + g_kdctx.NtOsImageMap, + &SectionSize); - case NT_WIN7_SP1: - Signature = g_CiCallbacksPattern_7601; - SignatureSize = sizeof(g_CiCallbacksPattern_7601); - InstructionMatchPattern = g_CiCallbacksMatchingPattern; - InstructionExactMatchLength = RTL_NUMBER_OF(g_CiCallbacksMatchingPattern); - break; + if ((SectionBase == 0) || (SectionSize == 0)) + break; - case NT_WIN8_RTM: - case NT_WIN8_BLUE: - Signature = SeCiCallbacksPattern_9200_9600; - SignatureSize = sizeof(SeCiCallbacksPattern_9200_9600); - break; + InstructionMatchPattern = SeCiCallbacksMatchingPattern; //default matching pattern + InstructionMatchLength = 7; //lea + InstructionExactMatchLength = RTL_NUMBER_OF(SeCiCallbacksMatchingPattern); - case NT_WIN10_THRESHOLD1: - case NT_WIN10_THRESHOLD2: - Signature = SeCiCallbacksPattern_10240_10586; - SignatureSize = sizeof(SeCiCallbacksPattern_10240_10586); - break; + switch (g_NtBuildNumber) { - case NT_WIN10_REDSTONE1: - Signature = SeCiCallbacksPattern_14393; - SignatureSize = sizeof(SeCiCallbacksPattern_14393); - break; + case NT_WIN7_SP1: + Signature = g_CiCallbacksPattern_7601; + SignatureSize = sizeof(g_CiCallbacksPattern_7601); + InstructionMatchPattern = g_CiCallbacksMatchingPattern; + InstructionExactMatchLength = RTL_NUMBER_OF(g_CiCallbacksMatchingPattern); + break; - case NT_WIN10_REDSTONE2: - case NT_WIN10_REDSTONE3: - Signature = SeCiCallbacksPattern_15063_16299; - SignatureSize = sizeof(SeCiCallbacksPattern_15063_16299); - break; + case NT_WIN8_RTM: + case NT_WIN8_BLUE: + Signature = SeCiCallbacksPattern_9200_9600; + SignatureSize = sizeof(SeCiCallbacksPattern_9200_9600); + break; - case NT_WIN10_REDSTONE4: - case NT_WIN10_REDSTONE5: - Signature = SeCiCallbacksPattern_17134_17763; - SignatureSize = sizeof(SeCiCallbacksPattern_17134_17763); - break; + case NT_WIN10_THRESHOLD1: + case NT_WIN10_THRESHOLD2: + Signature = SeCiCallbacksPattern_10240_10586; + SignatureSize = sizeof(SeCiCallbacksPattern_10240_10586); + break; - case NT_WIN10_19H1: - case NT_WIN10_19H2: - case NT_WIN10_20H1: - case NT_WIN10_20H2: - case NT_WIN10_21H1: - case NT_WIN10_21H2: - Signature = SeCiCallbacksPattern_19H1_21H2; - SignatureSize = sizeof(SeCiCallbacksPattern_19H1_21H2); - InstructionMatchPattern = SeCiCallbacksMatchingPattern_19H1_21H2; - InstructionMatchLength = 10; //mov - InstructionExactMatchLength = RTL_NUMBER_OF(SeCiCallbacksMatchingPattern_19H1_21H2); - break; + case NT_WIN10_REDSTONE1: + Signature = SeCiCallbacksPattern_14393; + SignatureSize = sizeof(SeCiCallbacksPattern_14393); + break; - case NT_WIN11_21H2: - default: - Signature = SeCiCallbacksPattern_W11_21H2; - if (g_NtBuildNumber > NT_WIN11_21H2) { - SeCiCallbacksPattern_W11_21H2[2] = 0xEC; //test only, remove with proper find pattern mask support - } - SignatureSize = sizeof(SeCiCallbacksPattern_W11_21H2); - InstructionMatchPattern = SeCiCallbacksMatchingPattern_19H1_21H2; - InstructionMatchLength = 10; //mov - InstructionExactMatchLength = RTL_NUMBER_OF(SeCiCallbacksMatchingPattern_19H1_21H2); - break; - } + case NT_WIN10_REDSTONE2: + case NT_WIN10_REDSTONE3: + Signature = SeCiCallbacksPattern_15063_16299; + SignatureSize = sizeof(SeCiCallbacksPattern_15063_16299); + break; - ptrCode = (PBYTE)supFindPattern( - (PBYTE)SectionBase, - SectionSize, - Signature, - SignatureSize); + case NT_WIN10_REDSTONE4: + default: + Signature = SeCiCallbacksPattern_17134_17763; + SignatureSize = sizeof(SeCiCallbacksPattern_17134_17763); + break; - if (ptrCode == NULL) - break; + } - if (g_NtBuildNumber <= NT_WIN7_SP1) { + ptrCode = (PBYTE)supFindPattern( + (PBYTE)SectionBase, + SectionSize, + Signature, + SignatureSize); - // - // Find reference to g_CiCallbacks in code. - // + if (ptrCode == NULL) + break; - Index = 0; //pattern search include target instruction, do not skip + if (g_NtBuildNumber <= NT_WIN7_SP1) { - } - else { + // + // Find reference to g_CiCallbacks in code. + // - // - // Find reference to SeCiCallbacks/g_CiCallbacks in code. - // + Index = 0; //pattern search include target instruction, do not skip - Index = SignatureSize; //skip signature instructions + } + else { - } + // + // Find reference to SeCiCallbacks/g_CiCallbacks in code. + // - do { - hde64_disasm((void*)(ptrCode + Index), &hs); - if (hs.flags & F_ERROR) - break; - // - // mov cs:g_CiCallbacks, rax (for Windows 7) - // lea rcx, SeCiCallbacks (for 8/10 TH/RS) - // mov cs:SeCiCallbacks (19H1-21H1) - // - if (hs.len == InstructionMatchLength) { + Index = SignatureSize; //skip signature instructions + + } + do { + hde64_disasm((void*)(ptrCode + Index), &hs); + if (hs.flags & F_ERROR) + break; // - // Match block found. + // mov cs:g_CiCallbacks, rax (for Windows 7) + // lea rcx, SeCiCallbacks (for 8/10 TH/RS) + // mov cs:SeCiCallbacks (19H1-21H1) // - if (RtlCompareMemory((VOID*)&ptrCode[Index], (VOID*)InstructionMatchPattern, - InstructionExactMatchLength) == InstructionExactMatchLength) - { - Rel = *(PLONG)(ptrCode + Index + InstructionExactMatchLength); - break; + if (hs.len == InstructionMatchLength) { + + // + // Match block found. + // + if (RtlCompareMemory((VOID*)&ptrCode[Index], (VOID*)InstructionMatchPattern, + InstructionExactMatchLength) == InstructionExactMatchLength) + { + Rel = *(PLONG)(ptrCode + Index + InstructionExactMatchLength); + break; + } } - } - Index += hs.len; + Index += hs.len; - } while (Index < 64); + } while (Index < 64); - kvarAddress = ComputeAddressInsideNtOs((ULONG_PTR)ptrCode, Index, hs.len, Rel); + kvarAddress = ComputeAddressInsideNtOs((ULONG_PTR)ptrCode, Index, hs.len, Rel); + } } } while (FALSE); @@ -873,6 +1042,50 @@ OBEX_FINDCALLBACK_ROUTINE(FindCiCallbacks) return kvarAddress; } +BOOL IopFileSystemIsValidPattern( + _In_ PBYTE Buffer, + _In_ ULONG Offset, + _In_ ULONG InstructionSize +) +{ + BOOL bResult = FALSE; + + if (g_NtBuildNumber <= NT_WIN11_21H2) { + + // + // lea rdx, xxx + // + if ((Buffer[Offset] == 0x48) && + (Buffer[Offset + 1] == 0x8D) && + (Buffer[Offset + 2] == 0x0D) && + ((Buffer[Offset + InstructionSize] == 0x48) || (Buffer[Offset + InstructionSize] == 0xE9))) + { + bResult = TRUE; + } + + } + else { //win11 22h1+ + + // + // mov rcx, xxx + // + if ((Buffer[Offset] == 0x48) && + (Buffer[Offset + 1] == 0x8B) && + (Buffer[Offset + 2] == 0x0D) && + ( + (Buffer[Offset + InstructionSize] == 0x48) || + (Buffer[Offset + InstructionSize] == 0xE9) || + (Buffer[Offset + InstructionSize] == 0x8B)) + ) + { + bResult = TRUE; + } + + } + + return bResult; +} + /* * FindIopFileSystemQueueHeads * @@ -1028,14 +1241,8 @@ BOOL FindIopFileSystemQueueHeads( break; if (hs.len == 7) { - // - // lea rdx, xxx - // - if ((ptrCode[Index] == 0x48) && - (ptrCode[Index + 1] == 0x8D) && - (ptrCode[Index + 2] == 0x0D) && - ((ptrCode[Index + hs.len] == 0x48) || (ptrCode[Index + hs.len] == 0xE9))) - { + + if (IopFileSystemIsValidPattern(ptrCode, Index, hs.len)) { Rel = *(PLONG)(ptrCode + Index + 3); if (Rel) { @@ -3090,6 +3297,50 @@ OBEX_DISPLAYCALLBACK_ROUTINE(DumpIoCallbacks) } +VOID AddObCallbackEntry( + _In_ HWND TreeList, + _In_ HTREEITEM RootItem, + _In_ LPWSTR CallbackType, + _In_ PVOID Callback, + _In_ OB_OPERATION CallbackOperation, + _In_opt_ LPWSTR Altitude, + _In_ SIZE_T AltitudeSize, + _In_ PRTL_PROCESS_MODULES Modules +) +{ + LPWSTR lpText; + SIZE_T Size; + BOOL bAltitudePresent = (Altitude && AltitudeSize); + + Size = MAX_PATH * sizeof(WCHAR); + + if (bAltitudePresent) + Size += AltitudeSize; + + lpText = (LPWSTR)supHeapAlloc(Size); + + if (lpText) { + + _strcpy(lpText, CallbackType); + + if (bAltitudePresent) { + _strcat(lpText, TEXT(", Altitude: ")); + _strcat(lpText, Altitude); + } + + if (CallbackOperation & OB_OPERATION_HANDLE_CREATE) _strcat(lpText, TEXT(", CreateHandle")); + if (CallbackOperation & OB_OPERATION_HANDLE_DUPLICATE) _strcat(lpText, TEXT(", DuplicateHandle")); + + AddEntryToList(TreeList, + RootItem, + (ULONG_PTR)Callback, + lpText, + Modules); + + supHeapFree(lpText); + } +} + /* * DumpObCallbacks * @@ -3100,19 +3351,17 @@ OBEX_DISPLAYCALLBACK_ROUTINE(DumpIoCallbacks) */ OBEX_DISPLAYCALLBACK_ROUTINE(DumpObCallbacks) { - BOOL bAltitudeRead, bNeedFree; - ULONG_PTR ListHead = KernelVariableAddress; - LPWSTR lpInfoBuffer = NULL, lpType; + LPWSTR lpAltitudeBuffer; - SIZE_T Size, AltitudeSize = 0; + SIZE_T AltitudeSize = 0; LIST_ENTRY ListEntry; - OB_CALLBACK_CONTEXT_BLOCK CallbackRecord; + OB_CALLBACK_CONTEXT_BLOCK CallbackEntry; - OB_CALLBACK_REGISTRATION Registration; + OB_REGISTRATION RegEntry; HTREEITEM RootItem; @@ -3141,11 +3390,12 @@ OBEX_DISPLAYCALLBACK_ROUTINE(DumpObCallbacks) // while ((ULONG_PTR)ListEntry.Flink != ListHead) { - RtlSecureZeroMemory(&CallbackRecord, sizeof(CallbackRecord)); + lpAltitudeBuffer = NULL; + RtlSecureZeroMemory(&CallbackEntry, sizeof(CallbackEntry)); if (!kdReadSystemMemory((ULONG_PTR)ListEntry.Flink, - &CallbackRecord, - sizeof(CallbackRecord))) + &CallbackEntry, + sizeof(OB_CALLBACK_CONTEXT_BLOCK))) { break; } @@ -3153,81 +3403,56 @@ OBEX_DISPLAYCALLBACK_ROUTINE(DumpObCallbacks) // // Read Altitude. // - bAltitudeRead = FALSE; - - RtlSecureZeroMemory(&Registration, sizeof(Registration)); - if (kdReadSystemMemory((ULONG_PTR)CallbackRecord.Registration, - (PVOID)&Registration, - sizeof(Registration))) + RtlSecureZeroMemory(&RegEntry, sizeof(RegEntry)); + if (kdReadSystemMemory((ULONG_PTR)CallbackEntry.Registration, + (PVOID)&RegEntry, + sizeof(OB_REGISTRATION))) { - AltitudeSize = 8 + (SIZE_T)Registration.Altitude.Length; - lpInfoBuffer = (LPWSTR)supHeapAlloc(AltitudeSize); - if (lpInfoBuffer) { + AltitudeSize = 8 + (SIZE_T)RegEntry.Altitude.Length; + lpAltitudeBuffer = (LPWSTR)supHeapAlloc(AltitudeSize); + if (lpAltitudeBuffer) { - bAltitudeRead = kdReadSystemMemory((ULONG_PTR)Registration.Altitude.Buffer, - (PVOID)lpInfoBuffer, - Registration.Altitude.Length); + kdReadSystemMemory((ULONG_PTR)RegEntry.Altitude.Buffer, + (PVOID)lpAltitudeBuffer, + RegEntry.Altitude.Length); } } // // Output PreCallback. // - if ((ULONG_PTR)CallbackRecord.PreCallback > g_kdctx.SystemRangeStart) { + if ((ULONG_PTR)CallbackEntry.PreCallback > g_kdctx.SystemRangeStart) { - bNeedFree = FALSE; - - if (bAltitudeRead) { - Size = AltitudeSize + MAX_PATH; - lpType = (LPWSTR)supHeapAlloc(Size); - if (lpType) { - _strcpy(lpType, TEXT("PreCallback, Altitude: ")); - _strcat(lpType, lpInfoBuffer); - bNeedFree = TRUE; - } - } - else - lpType = TEXT("PreCallback"); - - AddEntryToList(TreeList, + AddObCallbackEntry(TreeList, RootItem, - (ULONG_PTR)CallbackRecord.PreCallback, - lpType, + TEXT("PreCallback"), + CallbackEntry.PreCallback, + CallbackEntry.Operations, + lpAltitudeBuffer, + AltitudeSize, Modules); - if (bNeedFree) supHeapFree(lpType); } // // Output PostCallback. // - if ((ULONG_PTR)CallbackRecord.PostCallback > g_kdctx.SystemRangeStart) { - - bNeedFree = FALSE; - - if (bAltitudeRead) { - Size = AltitudeSize + MAX_PATH; - lpType = (LPWSTR)supHeapAlloc(Size); - if (lpType) { - _strcpy(lpType, TEXT("PostCallback, Altitude: ")); - _strcat(lpType, lpInfoBuffer); - bNeedFree = TRUE; - } - } - else - lpType = TEXT("PostCallback"); + if ((ULONG_PTR)CallbackEntry.PostCallback > g_kdctx.SystemRangeStart) { - AddEntryToList(TreeList, + AddObCallbackEntry(TreeList, RootItem, - (ULONG_PTR)CallbackRecord.PostCallback, - lpType, + TEXT("PostCallback"), + CallbackEntry.PostCallback, + CallbackEntry.Operations, + lpAltitudeBuffer, + AltitudeSize, Modules); - if (bNeedFree) supHeapFree(lpType); } - ListEntry.Flink = CallbackRecord.CallbackListEntry.Flink; - if (lpInfoBuffer) supHeapFree(lpInfoBuffer); + ListEntry.Flink = CallbackEntry.CallbackListEntry.Flink; + + if (lpAltitudeBuffer) supHeapFree(lpAltitudeBuffer); } } @@ -3720,16 +3945,14 @@ OBEX_DISPLAYCALLBACK_ROUTINE(DumpCiCallbacks) { HTREEITEM RootItem; - ULONG_PTR *CallbacksData; + PULONG_PTR CallbacksData, DataPtr; LPWSTR CallbackName; - ULONG_PTR SizeOfCiCallbacks = 0; + ULONG_PTR CallbacksSize = 0, EffectiveSize; ULONG i, c; - BOOL bRevisionMarker; - // // Add callback root entry to the treelist. // @@ -3738,19 +3961,19 @@ OBEX_DISPLAYCALLBACK_ROUTINE(DumpCiCallbacks) return; if (g_NtBuildNumber <= NT_WIN7_SP1) { - SizeOfCiCallbacks = 3 * sizeof(ULONG_PTR); + CallbacksSize = 3 * sizeof(ULONG_PTR); - CallbacksData = (PULONG_PTR)supVirtualAlloc((SIZE_T)SizeOfCiCallbacks); + CallbacksData = (PULONG_PTR)supVirtualAlloc((SIZE_T)CallbacksSize); if (CallbacksData) { if (kdReadSystemMemory(KernelVariableAddress, CallbacksData, - (ULONG)SizeOfCiCallbacks)) + (ULONG)CallbacksSize)) { - c = (ULONG)(SizeOfCiCallbacks / sizeof(ULONG_PTR)); + c = (ULONG)(CallbacksSize / sizeof(ULONG_PTR)); for (i = 0; i < c; i++) { - CallbackName = GetCiRoutineNameFromIndex(i); + CallbackName = GetCiRoutineNameFromIndex(i, 0); if (CallbacksData[i]) { @@ -3780,7 +4003,7 @@ OBEX_DISPLAYCALLBACK_ROUTINE(DumpCiCallbacks) // Probe size element. // if (!kdReadSystemMemory(KernelVariableAddress, - &SizeOfCiCallbacks, + &CallbacksSize, sizeof(ULONG_PTR))) { return; @@ -3789,31 +4012,49 @@ OBEX_DISPLAYCALLBACK_ROUTINE(DumpCiCallbacks) // // Check size. // - if ((SizeOfCiCallbacks == 0) || (SizeOfCiCallbacks > PAGE_SIZE)) + if ((CallbacksSize == 0) || (CallbacksSize > PAGE_SIZE)) return; - CallbacksData = (PULONG_PTR)supVirtualAlloc((SIZE_T)SizeOfCiCallbacks); + CallbacksData = (PULONG_PTR)supVirtualAlloc((SIZE_T)CallbacksSize); if (CallbacksData) { if (kdReadSystemMemory(KernelVariableAddress, CallbacksData, - (ULONG)SizeOfCiCallbacks)) + (ULONG)CallbacksSize)) { - SizeOfCiCallbacks -= sizeof(ULONG_PTR); //exclude structure sizeof - bRevisionMarker = (g_NtBuildNumber >= NT_WIN10_REDSTONE1); //there is a revision marker at the end of this structure. - if (bRevisionMarker) SizeOfCiCallbacks -= sizeof(ULONG_PTR); //exclude marker (windows 10 + revision) + /* + * Windows 10/11 x64 structure layout + * + * CI_CALLBACKS + * + * +0 ULONG_PTR StructureSize (in bytes) + * +8 PTR Callback1 + * ... + * +N PTR CallbackN + * +N+8 ULONG_PTR Marker + * + */ + EffectiveSize = CallbacksSize; + DataPtr = CallbacksData; - c = (ULONG)(SizeOfCiCallbacks / sizeof(ULONG_PTR)); + // skip sizeof element + DataPtr++; + EffectiveSize -= sizeof(ULONG_PTR); - for (i = 1; i <= c; i++) { + if (g_NtBuildNumber >= NT_WIN10_REDSTONE1) + EffectiveSize -= sizeof(ULONG_PTR); //exclude final marker - CallbackName = GetCiRoutineNameFromIndex(i - 1); + c = (ULONG)(EffectiveSize / sizeof(ULONG_PTR)); - if (CallbacksData[i]) { + for (i = 0; i < c; i++) { + + CallbackName = GetCiRoutineNameFromIndex(i, CallbacksSize); + + if (*DataPtr) { AddEntryToList(TreeList, RootItem, - CallbacksData[i], + *DataPtr, CallbackName, Modules); @@ -3822,11 +4063,13 @@ OBEX_DISPLAYCALLBACK_ROUTINE(DumpCiCallbacks) AddZeroEntryToList(TreeList, RootItem, - CallbacksData[i], + 0, CallbackName); } + DataPtr++; + } } diff --git a/Source/WinObjEx64/extras/extrasCallbacksPatterns.h b/Source/WinObjEx64/extras/extrasCallbacksPatterns.h index 9c5b7234..fe71ebb9 100644 --- a/Source/WinObjEx64/extras/extrasCallbacksPatterns.h +++ b/Source/WinObjEx64/extras/extrasCallbacksPatterns.h @@ -1,12 +1,12 @@ /******************************************************************************* * -* (C) COPYRIGHT AUTHORS, 2019 - 2021 +* (C) COPYRIGHT AUTHORS, 2019 - 2022 * * TITLE: EXTRASCALLBACKSPATTERNS.H * -* VERSION: 1.92 +* VERSION: 1.93 * -* DATE: 10 Nov 2021 +* DATE: 11 May 2022 * * Header with search patterns used by Callbacks dialog routines. * @@ -60,32 +60,11 @@ BYTE SeCiCallbacksPattern_17134_17763[] = { 0x48, 0x83, 0xEC, 0x20, 0xBB, 0xD0, 0x00, 0x00, 0x00 }; -// -// Windows 19H1/19H2/20H1/20H2/21H1/21H2 -// -// Locate SepInitializeCodeIntegrity pattern. -// These are params for memset. -// - -BYTE SeCiCallbacksPattern_19H1_21H2[] = { - 0x41, 0xB8, 0xC4, 0x00, 0x00, 0x00, 0xBF, 0x06, 0x00, 0x00, 0x00 -}; - -// Windows 11 - -BYTE SeCiCallbacksPattern_W11_21H2[] = { - 0x41, 0xB8, 0xF4, 0x00, 0x00, 0x00, 0xBF, 0x06, 0x00, 0x00, 0x00 -}; - // Instruction match pattern BYTE SeCiCallbacksMatchingPattern[] = { 0x48, 0x8D, 0x0D }; -BYTE SeCiCallbacksMatchingPattern_19H1_21H2[] = { - 0xC7, 0x05 -}; - //Windows 7 BYTE g_CiCallbacksPattern_7601[] = { 0x8D, 0x7B, 0x06, 0x48, 0x89, 0x05 diff --git a/Source/WinObjEx64/extras/extrasDrivers.c b/Source/WinObjEx64/extras/extrasDrivers.c index 4feddac3..0ab90bad 100644 --- a/Source/WinObjEx64/extras/extrasDrivers.c +++ b/Source/WinObjEx64/extras/extrasDrivers.c @@ -1,12 +1,12 @@ /******************************************************************************* * -* (C) COPYRIGHT AUTHORS, 2016 - 2021 +* (C) COPYRIGHT AUTHORS, 2016 - 2022 * * TITLE: EXTRASDRIVERS.C * -* VERSION: 1.92 +* VERSION: 1.93 * -* DATE: 07 Dec 2021 +* DATE: 11 May 2022 * * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF * ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED @@ -788,7 +788,7 @@ BOOL CALLBACK DriversHandleNotify( case LVN_COLUMNCLICK: - Context->bInverseSort = !Context->bInverseSort; + Context->bInverseSort = (~Context->bInverseSort) & 1; Context->lvColumnToSort = NMListView->iSubItem; ListView_SortItemsEx(Context->ListView, diff --git a/Source/WinObjEx64/extras/extrasIPC.c b/Source/WinObjEx64/extras/extrasIPC.c index c2fcd643..74e66b85 100644 --- a/Source/WinObjEx64/extras/extrasIPC.c +++ b/Source/WinObjEx64/extras/extrasIPC.c @@ -1,12 +1,12 @@ /******************************************************************************* * -* (C) COPYRIGHT AUTHORS, 2017 - 2021 +* (C) COPYRIGHT AUTHORS, 2017 - 2022 * * TITLE: EXTRASIPC.C * -* VERSION: 1.92 +* VERSION: 1.93 * -* DATE: 03 Sep 2021 +* DATE: 11 May 2022 * * IPC supported: Pipes, Mailslots * @@ -724,7 +724,7 @@ BOOL IpcDlgHandleNotify( switch (nhdr->code) { case LVN_COLUMNCLICK: - pDlgContext->bInverseSort = !pDlgContext->bInverseSort; + pDlgContext->bInverseSort = (~pDlgContext->bInverseSort) & 1; CallbackParam.lParam = 0; CallbackParam.Value = pDlgContext->DialogMode; diff --git a/Source/WinObjEx64/extras/extrasPN.c b/Source/WinObjEx64/extras/extrasPN.c index afe1c11e..c2e8397c 100644 --- a/Source/WinObjEx64/extras/extrasPN.c +++ b/Source/WinObjEx64/extras/extrasPN.c @@ -1,12 +1,12 @@ /******************************************************************************* * -* (C) COPYRIGHT AUTHORS, 2015 - 2021 +* (C) COPYRIGHT AUTHORS, 2015 - 2022 * * TITLE: EXTRASPN.C * -* VERSION: 1.92 +* VERSION: 1.93 * -* DATE: 12 Nov 2021 +* DATE: 11 May 2022 * * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF * ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED @@ -607,7 +607,7 @@ VOID PNDlgHandleNotify( case LVN_COLUMNCLICK: - PnDlgContext.bInverseSort = !PnDlgContext.bInverseSort; + PnDlgContext.bInverseSort = (~PnDlgContext.bInverseSort) & 1; PnDlgContext.lvColumnToSort = pListView->iSubItem; ListView_SortItemsEx(PnDlgContext.ListView, &PNListCompareFunc, PnDlgContext.lvColumnToSort); diff --git a/Source/WinObjEx64/extras/extrasPSList.c b/Source/WinObjEx64/extras/extrasPSList.c index c5b62eb4..fff136bc 100644 --- a/Source/WinObjEx64/extras/extrasPSList.c +++ b/Source/WinObjEx64/extras/extrasPSList.c @@ -1,12 +1,12 @@ /******************************************************************************* * -* (C) COPYRIGHT AUTHORS, 2019 - 2021 +* (C) COPYRIGHT AUTHORS, 2019 - 2022 * * TITLE: EXTRASPSLIST.C * -* VERSION: 1.92 +* VERSION: 1.93 * -* DATE: 03 Dec 2021 +* DATE: 13 May 2022 * * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF * ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED @@ -179,7 +179,7 @@ INT_PTR PsListDialogResize( VOID PsListHandlePopupMenu( _In_ HWND hwndDlg, _In_ LPPOINT point, - _In_opt_ LPARAM lParam, + _In_ LPARAM lParam, _In_ BOOL fTreeList ) { @@ -1323,7 +1323,7 @@ INT_PTR PsListHandleNotify( return PsShowPropertiesDialog(NULL); case LVN_COLUMNCLICK: - PsDlgContext.bInverseSort = !PsDlgContext.bInverseSort; + PsDlgContext.bInverseSort = (~PsDlgContext.bInverseSort) & 1; PsDlgContext.lvColumnToSort = ((NMLISTVIEW*)lParam)->iSubItem; ListView_SortItemsEx(PsDlgContext.ListView, &PsListCompareFunc, (LPARAM)PsDlgContext.lvColumnToSort); diff --git a/Source/WinObjEx64/extras/extrasSL.c b/Source/WinObjEx64/extras/extrasSL.c index 9f1d5e85..b1eb0b7d 100644 --- a/Source/WinObjEx64/extras/extrasSL.c +++ b/Source/WinObjEx64/extras/extrasSL.c @@ -1,12 +1,12 @@ /******************************************************************************* * -* (C) COPYRIGHT AUTHORS, 2019 - 2021 +* (C) COPYRIGHT AUTHORS, 2019 - 2022 * * TITLE: EXTRASSL.C * -* VERSION: 1.92 +* VERSION: 1.93 * -* DATE: 09 Dec 2021 +* DATE: 11 May 2022 * * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF * ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED @@ -327,7 +327,7 @@ BOOL SLCacheDialogHandleNotify( pDlgContext = (EXTRASCONTEXT*)GetProp(hwndDlg, T_DLGCONTEXT); if (pDlgContext) { - pDlgContext->bInverseSort = !pDlgContext->bInverseSort; + pDlgContext->bInverseSort = (~pDlgContext->bInverseSort) & 1; pDlgContext->lvColumnToSort = pListView->iSubItem; ListView_SortItemsEx(pDlgContext->ListView, &SLCacheListCompareFunc, pDlgContext); diff --git a/Source/WinObjEx64/extras/extrasSSDT.c b/Source/WinObjEx64/extras/extrasSSDT.c index 2b657f0f..b9ec6985 100644 --- a/Source/WinObjEx64/extras/extrasSSDT.c +++ b/Source/WinObjEx64/extras/extrasSSDT.c @@ -1,12 +1,12 @@ /******************************************************************************* * -* (C) COPYRIGHT AUTHORS, 2015 - 2021 +* (C) COPYRIGHT AUTHORS, 2015 - 2022 * * TITLE: EXTRASSSDT.C * -* VERSION: 1.91 +* VERSION: 1.93 * -* DATE: 28 June 2021 +* DATE: 11 May 2022 * * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF * ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED @@ -25,12 +25,22 @@ // Win32kApiSetTable signatures // -// MOV pattern -#define IL_Win32kApiSetMov 3 - // lea reg, Win32kApiSetTable #define IL_Win32kApiSetTable 7 +// +// InitializeWin32Call search pattern +// +// push rbp +// push r12 +// push r13 +// push r14 +// push r15 +// +BYTE g_pbInitializeWin32CallPattern[] = { + 0x55, 0x41, 0x54, 0x41, 0x55, 0x41, 0x56, 0x41, 0x57 +}; + // // Win32kApiSetTable adapter patterns // @@ -38,14 +48,16 @@ BYTE Win32kApiSetAdapterPattern1[] = { 0x4C, 0x8B, 0x15 }; BYTE Win32kApiSetAdapterPattern2[] = { - 0x48, 0x8B, 0x05 + 0x48, 0x8B, 0x05 +}; +BYTE Win32kApiSetAdapterPattern3[] = { + 0x4C, 0x8B, 0x1D // mov r11, value }; -#define W32K_API_SET_ADAPTERS_COUNT 2 - -W32K_API_SET_LOOKUP_PATTERN W32kApiSetAdapters[W32K_API_SET_ADAPTERS_COUNT] = { +W32K_API_SET_LOOKUP_PATTERN W32kApiSetAdapters[] = { { sizeof(Win32kApiSetAdapterPattern1), Win32kApiSetAdapterPattern1 }, - { sizeof(Win32kApiSetAdapterPattern2), Win32kApiSetAdapterPattern2 } + { sizeof(Win32kApiSetAdapterPattern2), Win32kApiSetAdapterPattern2 }, + { sizeof(Win32kApiSetAdapterPattern3), Win32kApiSetAdapterPattern3 } }; // @@ -133,9 +145,8 @@ ULONG_PTR SdtQueryWin32kApiSetTable( PVOID SectionBase; ULONG SectionSize = 0, Index; - ULONG instLength = 0, tempOffset; - ULONG_PTR tableAddress = 0; + ULONG_PTR tableAddress = 0, instructionLength = 0; LONG relativeValue = 0; hde64s hs; @@ -145,7 +156,7 @@ ULONG_PTR SdtQueryWin32kApiSetTable( KVAR_Win32kApiSetTable, ImageBase, ImageSize, - &tableAddress)) + &tableAddress)) { tableAddress = tableAddress - (ULONG_PTR)ImageBase + (ULONG_PTR)hModule; } @@ -164,8 +175,19 @@ ULONG_PTR SdtQueryWin32kApiSetTable( if (SectionBase == 0 || SectionSize < 10) return 0; + // + // Locate InitializeWin32Call body. + // + ptrCode = (PBYTE)supFindPattern((PBYTE)SectionBase, + SectionSize, + g_pbInitializeWin32CallPattern, + sizeof(g_pbInitializeWin32CallPattern)); + + if (ptrCode == NULL) + return 0; + Index = 0; - ptrCode = (PBYTE)SectionBase; + instructionLength = 0; do { @@ -173,50 +195,27 @@ ULONG_PTR SdtQueryWin32kApiSetTable( if (hs.flags & F_ERROR) break; - instLength = hs.len; - - // - // Check if 3 byte length MOV. - // - if (instLength == IL_Win32kApiSetMov) { - - tempOffset = Index + 1; //+1 to skip rex prefix - - if (ptrCode[tempOffset] == 0x8B) { - - tempOffset = Index + instLength; - hde64_disasm((void*)(ptrCode + tempOffset), &hs); - if (hs.flags & F_ERROR) - break; - - // - // Check if next instruction is 7 bytes len LEA. - // - if (hs.len == IL_Win32kApiSetTable) { - if (ptrCode[tempOffset + 1] == 0x8D) { - - // - // Update counters. - // - Index = tempOffset; - instLength = hs.len; - - relativeValue = *(PLONG)(ptrCode + tempOffset + (hs.len - 4)); - break; - } - } + if (hs.len == IL_Win32kApiSetTable) { + if ((ptrCode[Index] == 0x4C) && + (ptrCode[Index + 1] == 0x8D)) + { + relativeValue = *(PLONG)(ptrCode + Index + (hs.len - 4)); + instructionLength = hs.len; + break; } + } - Index += instLength; + Index += hs.len; + + } while (Index < 256); - } while (Index < SectionSize - 10); - if (relativeValue == 0 || instLength == 0) + if (relativeValue == 0 || instructionLength == 0) return 0; - tableAddress = (ULONG_PTR)ptrCode + Index + instLength + relativeValue; + tableAddress = (ULONG_PTR)ptrCode + Index + instructionLength + relativeValue; } @@ -382,7 +381,7 @@ BOOL SdtDlgHandleNotify( pDlgContext = (EXTRASCONTEXT*)GetProp(hwndDlg, T_DLGCONTEXT); if (pDlgContext) { - pDlgContext->bInverseSort = !pDlgContext->bInverseSort; + pDlgContext->bInverseSort = (~pDlgContext->bInverseSort) & 1; pDlgContext->lvColumnToSort = pListView->iSubItem; CallbackParam.lParam = (LPARAM)pDlgContext->lvColumnToSort; CallbackParam.Value = pDlgContext->DialogMode; @@ -879,7 +878,7 @@ ULONG_PTR ApiSetExtractReferenceFromAdapter( bFound = FALSE; - for (i = 0; i < W32K_API_SET_ADAPTERS_COUNT; i++) { + for (i = 0; i < RTL_NUMBER_OF(W32kApiSetAdapters); i++) { PatternSize = W32kApiSetAdapters[i].Size; PatternData = W32kApiSetAdapters[i].Data; @@ -1111,10 +1110,10 @@ NTSTATUS SdtResolveServiceEntryModule( ApiSetReference = ApiSetExtractReferenceFromAdapter(FunctionPtr); if (ApiSetReference) { - if (g_NtBuildNumber <= NT_WIN10_21H1) - ApiSetTableEntrySize = sizeof(W32K_API_SET_TABLE_ENTRY); - else + if (g_NtBuildNumber >= NT_WIN11_21H2) ApiSetTableEntrySize = sizeof(W32K_API_SET_TABLE_ENTRY_V2); + else + ApiSetTableEntrySize = sizeof(W32K_API_SET_TABLE_ENTRY); resolveStatus = ApiSetResolveWin32kTableEntry( Win32kApiSetTable, diff --git a/Source/WinObjEx64/global.h b/Source/WinObjEx64/global.h index 7c809a16..9092f8f2 100644 --- a/Source/WinObjEx64/global.h +++ b/Source/WinObjEx64/global.h @@ -1,12 +1,12 @@ /******************************************************************************* * -* (C) COPYRIGHT AUTHORS, 2015 - 2021 +* (C) COPYRIGHT AUTHORS, 2015 - 2022 * * TITLE: GLOBAL.H * -* VERSION: 1.92 +* VERSION: 1.93 * -* DATE: 03 Dec 2021 +* DATE: 22 Apr 2022 * * Common header file for the Windows Object Explorer. * @@ -108,13 +108,12 @@ #include "symparser.h" #include "objects.h" +#include "drivers\wdrvprv.h" #include "kldbg.h" -#include "drvhelper.h" #include "ui.h" #include "sup.h" #include "supConsts.h" #include "list.h" -#include "instdrv.h" #include "excepth.h" #include "extapi.h" #include "plugmngr.h" diff --git a/Source/WinObjEx64/hash.c b/Source/WinObjEx64/hash.c index e0e7891e..e6a8a9f4 100644 --- a/Source/WinObjEx64/hash.c +++ b/Source/WinObjEx64/hash.c @@ -1,12 +1,12 @@ /******************************************************************************* * -* (C) COPYRIGHT AUTHORS, 2021 +* (C) COPYRIGHT AUTHORS, 2021 - 2022 * * TITLE: HASH.C * -* VERSION: 1.92 +* VERSION: 1.93 * -* DATE: 28 Oct 2021 +* DATE: 13 May 2022 * * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF * ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED @@ -481,7 +481,7 @@ BOOLEAN CalculateAuthenticodeHash( LPWSTR ComputeHashForFile( _In_ PFILE_VIEW_INFO ViewInformation, _In_ LPCWSTR lpAlgId, - _In_opt_ DWORD PageSize, + _In_ DWORD PageSize, _In_ HANDLE HeapHandle, _In_ BOOLEAN FirstPageHashOnly ) diff --git a/Source/WinObjEx64/hash.h b/Source/WinObjEx64/hash.h index 7178c042..c9f4329f 100644 --- a/Source/WinObjEx64/hash.h +++ b/Source/WinObjEx64/hash.h @@ -1,12 +1,12 @@ /******************************************************************************* * -* (C) COPYRIGHT AUTHORS, 2021 +* (C) COPYRIGHT AUTHORS, 2021 - 2022 * * TITLE: HASH.H * -* VERSION: 1.92 +* VERSION: 1.93 * -* DATE: 28 Oct 2021 +* DATE: 13 May 2022 * * Header file for the hash support routines. * @@ -53,6 +53,6 @@ FORCEINLINE VOID HashUnloadFile( LPWSTR ComputeHashForFile( _In_ PFILE_VIEW_INFO ViewInformation, _In_ LPCWSTR lpAlgId, - _In_opt_ DWORD PageSize, + _In_ DWORD PageSize, _In_ HANDLE HeapHandle, _In_ BOOLEAN FirstPageHashOnly); diff --git a/Source/WinObjEx64/instdrv.c b/Source/WinObjEx64/instdrv.c deleted file mode 100644 index 3742e8b8..00000000 --- a/Source/WinObjEx64/instdrv.c +++ /dev/null @@ -1,348 +0,0 @@ -/******************************************************************************* -* -* (C) COPYRIGHT AUTHORS, 2015 - 2021 -* -* TITLE: INSTDRV.C -* -* VERSION: 1.90 -* -* DATE: 16 May 2021 -* -* THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF -* ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED -* TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A -* PARTICULAR PURPOSE. -* -*******************************************************************************/ -#include "global.h" - -/* -* scmInstallDriver -* -* Purpose: -* -* Create SCM service entry describing kernel driver. -* -*/ -BOOLEAN scmInstallDriver( - _In_ SC_HANDLE SchSCManager, - _In_ LPCTSTR DriverName, - _In_opt_ LPCTSTR ServiceExe, - _Out_opt_ PDWORD lpStatus -) -{ - DWORD resultStatus = ERROR_SUCCESS; - SC_HANDLE schService; - - schService = CreateService(SchSCManager, // SCManager database - DriverName, // name of service - DriverName, // name to display - SERVICE_ALL_ACCESS, // desired access - SERVICE_KERNEL_DRIVER, // service type - SERVICE_DEMAND_START, // start type - SERVICE_ERROR_NORMAL, // error control type - ServiceExe, // service's binary - NULL, // no load ordering group - NULL, // no tag identifier - NULL, // no dependencies - NULL, // LocalSystem account - NULL); // no password - - if (schService) { - CloseServiceHandle(schService); - } - else { - resultStatus = GetLastError(); - } - - if (lpStatus) - *lpStatus = resultStatus; - - return (resultStatus == ERROR_SUCCESS); -} - -/* -* scmStartDriver -* -* Purpose: -* -* Start service, resulting in SCM drvier load. -* -*/ -BOOLEAN scmStartDriver( - _In_ SC_HANDLE SchSCManager, - _In_ LPCTSTR DriverName, - _Out_opt_ PDWORD lpStatus -) -{ - BOOL bResult = FALSE; - DWORD resultStatus = ERROR_SUCCESS; - SC_HANDLE schService; - - schService = OpenService(SchSCManager, - DriverName, - SERVICE_ALL_ACCESS); - - if (schService) { - - bResult = StartService(schService, 0, NULL); - - resultStatus = GetLastError(); - if (resultStatus == ERROR_SERVICE_ALREADY_RUNNING) { - bResult = TRUE; - resultStatus = ERROR_SUCCESS; - } - - CloseServiceHandle(schService); - } - else { - resultStatus = GetLastError(); - } - - if (lpStatus) - *lpStatus = resultStatus; - - return (bResult != FALSE); -} - -/* -* scmOpenDevice -* -* Purpose: -* -* Open driver device by symbolic link. -* -*/ -BOOLEAN scmOpenDevice( - _In_ LPCTSTR DriverName, - _Out_opt_ PHANDLE lphDevice, - _Out_opt_ PDWORD lpStatus -) -{ - BOOL bResult = FALSE; - TCHAR completeDeviceName[MAX_PATH + 1]; - HANDLE hDevice; - - // assume failure - if (lphDevice) - *lphDevice = NULL; - - if (DriverName) { - - RtlSecureZeroMemory(completeDeviceName, sizeof(completeDeviceName)); - - RtlStringCchPrintfSecure(completeDeviceName, - MAX_PATH, - TEXT("\\\\.\\%wS"), - DriverName); - - hDevice = CreateFile(completeDeviceName, - GENERIC_READ | GENERIC_WRITE, - 0, - NULL, - OPEN_EXISTING, - FILE_ATTRIBUTE_NORMAL, - NULL); - - if (lpStatus) - *lpStatus = GetLastError(); - - bResult = (hDevice != INVALID_HANDLE_VALUE); - - if (lphDevice) { - if (bResult) { - *lphDevice = hDevice; - } - } - else { - if (bResult) - CloseHandle(hDevice); - } - - } - else { - if (lpStatus) - *lpStatus = ERROR_INVALID_PARAMETER; - } - - return (bResult != FALSE); -} - -/* -* scmStopDriver -* -* Purpose: -* -* Command SCM to stop service, resulting in driver unload. -* -*/ -BOOLEAN scmStopDriver( - _In_ SC_HANDLE SchSCManager, - _In_ LPCTSTR DriverName, - _Out_opt_ PDWORD lpStatus -) -{ - BOOL bResult = FALSE; - INT iRetryCount; - DWORD resultStatus = ERROR_SUCCESS; - SC_HANDLE schService; - SERVICE_STATUS serviceStatus; - - schService = OpenService(SchSCManager, DriverName, SERVICE_ALL_ACCESS); - if (schService) { - - iRetryCount = 5; - do { - - SetLastError(ERROR_SUCCESS); - - bResult = ControlService(schService, SERVICE_CONTROL_STOP, &serviceStatus); - - resultStatus = GetLastError(); - - if (bResult != FALSE) - break; - - if (resultStatus != ERROR_DEPENDENT_SERVICES_RUNNING) - break; - - Sleep(1000); - iRetryCount--; - - } while (iRetryCount); - - CloseServiceHandle(schService); - } - else { - resultStatus = GetLastError(); - } - - if (lpStatus) - *lpStatus = resultStatus; - - return (bResult != FALSE); -} - -/* -* scmRemoveDriver -* -* Purpose: -* -* Remove service entry from SCM database. -* -*/ -BOOLEAN scmRemoveDriver( - _In_ SC_HANDLE SchSCManager, - _In_ LPCTSTR DriverName, - _Out_opt_ PDWORD lpStatus -) -{ - BOOL bResult = FALSE; - SC_HANDLE schService; - DWORD resultStatus = ERROR_SUCCESS; - - schService = OpenService(SchSCManager, DriverName, SERVICE_ALL_ACCESS); - - resultStatus = GetLastError(); - - if (schService) { - bResult = DeleteService(schService); - CloseServiceHandle(schService); - } - - if (lpStatus) - *lpStatus = resultStatus; - - return (bResult != FALSE); -} - -/* -* scmUnloadDeviceDriver -* -* Purpose: -* -* Combines scmStopDriver and scmRemoveDriver. -* -*/ -BOOLEAN scmUnloadDeviceDriver( - _In_ LPCTSTR Name, - _Out_opt_ PDWORD lpStatus -) -{ - BOOLEAN bResult = FALSE; - SC_HANDLE schSCManager; - - DWORD resultStatus = ERROR_SUCCESS; - - if (Name) { - schSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS); - if (schSCManager) { - scmStopDriver(schSCManager, Name, NULL); - bResult = scmRemoveDriver(schSCManager, Name, &resultStatus); - CloseServiceHandle(schSCManager); - } - else { - resultStatus = GetLastError(); - } - } - else { - resultStatus = ERROR_INVALID_PARAMETER; - } - - if (lpStatus) - *lpStatus = resultStatus; - - return bResult; -} - -/* -* scmLoadDeviceDriver -* -* Purpose: -* -* Unload if already exists, Create, Load and Open driver instance. -* -*/ -BOOLEAN scmLoadDeviceDriver( - _In_ LPCTSTR Name, - _In_opt_ LPCTSTR Path, - _Out_opt_ PHANDLE lphDevice, - _Out_opt_ PDWORD lpStatus -) -{ - BOOLEAN bResult = FALSE; - SC_HANDLE schSCManager; - - DWORD statusResult = ERROR_SUCCESS; - - //assume failure - if (lphDevice) { - *lphDevice = NULL; - } - - if (Name) { - schSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS); - if (schSCManager) { - - scmRemoveDriver(schSCManager, Name, NULL); - - scmInstallDriver(schSCManager, Name, Path, NULL); - - if (scmStartDriver(schSCManager, Name, &statusResult)) { - bResult = scmOpenDevice(Name, lphDevice, &statusResult); - } - CloseServiceHandle(schSCManager); - } - else { - statusResult = GetLastError(); - } - } - else { - statusResult = ERROR_INVALID_PARAMETER; - } - - if (lpStatus) - *lpStatus = statusResult; - - return bResult; -} diff --git a/Source/WinObjEx64/instdrv.h b/Source/WinObjEx64/instdrv.h deleted file mode 100644 index 35318b5a..00000000 --- a/Source/WinObjEx64/instdrv.h +++ /dev/null @@ -1,55 +0,0 @@ -/******************************************************************************* -* -* (C) COPYRIGHT AUTHORS, 2015 - 2021 -* -* TITLE: INSTDRV.H -* -* VERSION: 1.90 -* -* DATE: 16 May 2021 -* -* Common header file for the program SCM usage. -* -* THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF -* ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED -* TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A -* PARTICULAR PURPOSE. -* -*******************************************************************************/ -#pragma once - -BOOLEAN scmInstallDriver( - _In_ SC_HANDLE SchSCManager, - _In_ LPCTSTR DriverName, - _In_opt_ LPCTSTR ServiceExe, - _Out_opt_ PDWORD lpStatus); - -BOOLEAN scmStartDriver( - _In_ SC_HANDLE SchSCManager, - _In_ LPCTSTR DriverName, - _Out_opt_ PDWORD lpStatus); - -BOOLEAN scmOpenDevice( - _In_ LPCTSTR DriverName, - _Out_opt_ PHANDLE lphDevice, - _Out_opt_ PDWORD lpStatus); - -BOOLEAN scmStopDriver( - _In_ SC_HANDLE SchSCManager, - _In_ LPCTSTR DriverName, - _Out_opt_ PDWORD lpStatus); - -BOOLEAN scmRemoveDriver( - _In_ SC_HANDLE SchSCManager, - _In_ LPCTSTR DriverName, - _Out_opt_ PDWORD lpStatus); - -BOOLEAN scmUnloadDeviceDriver( - _In_ LPCTSTR Name, - _Out_opt_ PDWORD lpStatus); - -BOOLEAN scmLoadDeviceDriver( - _In_ LPCTSTR Name, - _In_opt_ LPCTSTR Path, - _Out_opt_ PHANDLE lphDevice, - _Out_opt_ PDWORD lpStatus); diff --git a/Source/WinObjEx64/kldbg.c b/Source/WinObjEx64/kldbg.c index 7d6b2c12..0fa28b00 100644 --- a/Source/WinObjEx64/kldbg.c +++ b/Source/WinObjEx64/kldbg.c @@ -1,12 +1,12 @@ /******************************************************************************* * -* (C) COPYRIGHT AUTHORS, 2015 - 2021 +* (C) COPYRIGHT AUTHORS, 2015 - 2022 * * TITLE: KLDBG.C, based on KDSubmarine by Evilcry * -* VERSION: 1.92 +* VERSION: 1.93 * -* DATE: 05 Dec 2021 +* DATE: 13 May 2022 * * MINIMUM SUPPORTED OS WINDOWS 7 * @@ -40,399 +40,6 @@ UCHAR ObpInfoMaskToOffset[0x100]; //Context private data KLDBGPDATA g_kdpdata; -BOOL kdExtractDriver( - _In_ WCHAR* szDriverPath); - -VOID kdpRemoveDriverFile(); - - -#ifdef _USE_OWN_DRIVER - -/* -* kdpShowNtStatus -* -* Purpose: -* -* Output ntstatus message. -* -*/ -VOID kdpShowNtStatus( - _In_ LPCWSTR lpFunction, - _In_ NTSTATUS ntStatus) -{ - WCHAR szBuffer[MAX_PATH + 1]; - - RtlStringCchPrintfSecure(szBuffer, MAX_PATH, TEXT("%ws 0x%lx"), - lpFunction, - ntStatus); - - MessageBox(GetDesktopWindow(), szBuffer, NULL, MB_OK); -} - -/* -* kdOpenHelperDevice -* -* Purpose: -* -* Open handle for helper driver. -* -* N.B. -* SE_DEBUG_PRIVILEGE is required to be assigned and enabled. -* It is checked on driver side for all supported driver variants. -* -*/ -NTSTATUS kdOpenHelperDevice( - _In_ LPCWSTR DriverName, - _In_ ACCESS_MASK DesiredAccess, - _Out_ PHANDLE DeviceHandle -) -{ - NTSTATUS status = STATUS_UNSUCCESSFUL; - - UNICODE_STRING usDeviceLink; - OBJECT_ATTRIBUTES obja; - IO_STATUS_BLOCK iost; - - TCHAR szDeviceLink[MAX_PATH + 1]; - - // assume failure - if (DeviceHandle) - *DeviceHandle = NULL; - else - return STATUS_INVALID_PARAMETER_2; - - if (DriverName) { - - RtlSecureZeroMemory(szDeviceLink, sizeof(szDeviceLink)); - - if (RtlStringCchPrintfSecure(szDeviceLink, - MAX_PATH, - TEXT("\\DosDevices\\%wS"), - DriverName) == -1) - { - return STATUS_INVALID_PARAMETER_1; - } - - RtlInitUnicodeString(&usDeviceLink, szDeviceLink); - InitializeObjectAttributes(&obja, &usDeviceLink, OBJ_CASE_INSENSITIVE, NULL, NULL); - - status = NtCreateFile(DeviceHandle, - DesiredAccess, - &obja, - &iost, - NULL, - 0, - 0, - FILE_OPEN, - 0, - NULL, - 0); - - } - else { - status = STATUS_INVALID_PARAMETER_1; - } - - return status; -} - -/* -* kdLoadHelperDriver -* -* Purpose: -* -* Install helper driver and load it. -* -* N.B. -* SE_LOAD_DRIVER_PRIVILEGE is required to be assigned and enabled. -* -*/ -NTSTATUS kdLoadHelperDriver( - _In_ LPCWSTR DriverName, - _In_ LPCWSTR DriverPath -) -{ - NTSTATUS status; - DWORD dwData, dwResult; - HKEY keyHandle = NULL; - SIZE_T keyOffset; - UNICODE_STRING driverServiceName, driverImagePath; - - HANDLE deviceHandle = NULL; - PACL pAcl = NULL; - PSECURITY_DESCRIPTOR driverSD = NULL; - - WCHAR szBuffer[MAX_PATH + 1]; - - if (DriverName == NULL) - return STATUS_INVALID_PARAMETER_1; - if (DriverPath == NULL) - return STATUS_INVALID_PARAMETER_2; - - status = supCreateSystemAdminAccessSD(&driverSD, &pAcl); - if (!NT_SUCCESS(status)) - return status; - - RtlInitEmptyUnicodeString(&driverImagePath, NULL, 0); - if (!RtlDosPathNameToNtPathName_U(DriverPath, - &driverImagePath, - NULL, - NULL)) - { - supHeapFree(driverSD); - if (pAcl) supHeapFree(pAcl); - return STATUS_INVALID_PARAMETER_2; - } - - RtlSecureZeroMemory(szBuffer, sizeof(szBuffer)); - - keyOffset = RTL_NUMBER_OF(NT_REG_PREP); - - if (RtlStringCchPrintfSecure(szBuffer, MAX_PATH, - DRIVER_REGKEY, - NT_REG_PREP, - DriverName) == -1) - { - status = STATUS_INVALID_PARAMETER_1; - goto Cleanup; - } - - if (ERROR_SUCCESS != RegCreateKeyEx(HKEY_LOCAL_MACHINE, - &szBuffer[keyOffset], - 0, - NULL, - REG_OPTION_NON_VOLATILE, - KEY_ALL_ACCESS, - NULL, - &keyHandle, - NULL)) - { - status = STATUS_ACCESS_DENIED; - goto Cleanup; - } - - dwResult = ERROR_SUCCESS; - - do { - - dwData = SERVICE_ERROR_NORMAL; - dwResult = RegSetValueEx(keyHandle, - TEXT("ErrorControl"), - 0, - REG_DWORD, - (BYTE*)&dwData, - sizeof(dwData)); - if (dwResult != ERROR_SUCCESS) - break; - - dwData = SERVICE_KERNEL_DRIVER; - dwResult = RegSetValueEx(keyHandle, - TEXT("Type"), - 0, - REG_DWORD, - (BYTE*)&dwData, - sizeof(dwData)); - if (dwResult != ERROR_SUCCESS) - break; - - dwData = SERVICE_DEMAND_START; - dwResult = RegSetValueEx(keyHandle, - TEXT("Start"), - 0, - REG_DWORD, - (BYTE*)&dwData, - sizeof(dwData)); - - if (dwResult != ERROR_SUCCESS) - break; - - dwResult = RegSetValueEx(keyHandle, - TEXT("DisplayName"), - 0, - REG_SZ, - (BYTE*)DriverName, - (DWORD)((1 + _strlen(DriverName)) * sizeof(WCHAR))); - if (dwResult != ERROR_SUCCESS) - break; - - dwResult = RegSetValueEx(keyHandle, - TEXT("ImagePath"), - 0, - REG_EXPAND_SZ, - (BYTE*)driverImagePath.Buffer, - (DWORD)driverImagePath.Length + sizeof(UNICODE_NULL)); - - } while (FALSE); - - RegCloseKey(keyHandle); - - if (dwResult != ERROR_SUCCESS) { - status = STATUS_ACCESS_DENIED; - goto Cleanup; - } - - if (supEnablePrivilege(SE_LOAD_DRIVER_PRIVILEGE, TRUE)) { - - RtlInitUnicodeString(&driverServiceName, szBuffer); - status = NtLoadDriver(&driverServiceName); - - if (NT_SUCCESS(status)) { - status = kdOpenHelperDevice(KLDBGDRV, WRITE_DAC, &deviceHandle); - - if (NT_SUCCESS(status)) { - status = NtSetSecurityObject(deviceHandle, - DACL_SECURITY_INFORMATION, - driverSD); - NtClose(deviceHandle); - } - } - - supEnablePrivilege(SE_LOAD_DRIVER_PRIVILEGE, FALSE); - } - else { - status = STATUS_ACCESS_DENIED; - } - -Cleanup: - supHeapFree(driverSD); - if (pAcl) supHeapFree(pAcl); - RtlFreeUnicodeString(&driverImagePath); - return status; -} - -/* -* kdpOpenLoadDriverPrivate -* -* Purpose: -* -* Open handle to helper driver device or load this driver. -* -*/ -BOOLEAN kdpOpenLoadDriverPrivate( - _In_ WCHAR* szDriverPath -) -{ - NTSTATUS ntStatus; - -#ifdef _USE_WINIO - // - // Cannot use address translation on legacy boot. - // - if (g_kdctx.Data->FirmwareType != FirmwareTypeUefi) { - g_kdctx.DriverOpenLoadStatus = (ULONG)STATUS_NOT_SUPPORTED; - return FALSE; - } -#endif - - // - // First, try to open existing device. - // - ntStatus = kdOpenHelperDevice(KLDBGDRV, - GENERIC_READ | GENERIC_WRITE, - &g_kdctx.DeviceHandle); - - if (NT_SUCCESS(ntStatus)) { - g_kdctx.DriverOpenLoadStatus = (ULONG)STATUS_SUCCESS; - g_kdctx.IsOurLoad = FALSE; - return TRUE; - } - - // - // Next, if device not opened, extract driver. - // - if (!kdExtractDriver(szDriverPath)) { - g_kdctx.DriverOpenLoadStatus = (ULONG)STATUS_FILE_INVALID; - return FALSE; - } - - // - // Install and load helper driver. - // - ntStatus = kdLoadHelperDriver(KLDBGDRV, szDriverPath); - if (!NT_SUCCESS(ntStatus)) { - g_kdctx.DriverOpenLoadStatus = (ULONG)ntStatus; - return FALSE; - } - - g_kdctx.IsOurLoad = TRUE; - - // - // Finally, try to open drive device again. - // - ntStatus = kdOpenHelperDevice(KLDBGDRV, - GENERIC_READ | GENERIC_WRITE, - &g_kdctx.DeviceHandle); - - g_kdctx.DriverOpenLoadStatus = (ULONG)ntStatus; - - return NT_SUCCESS(ntStatus); -} - -/* -* kdUnloadHelperDriver -* -* Purpose: -* -* Call driver unload and remove corresponding registry key. -* -* N.B. -* SE_LOAD_DRIVER_PRIVILEGE is required to be assigned and enabled. -* -*/ -NTSTATUS kdUnloadHelperDriver( - _In_ LPCWSTR DriverName, - _In_ BOOLEAN fRemove -) -{ - NTSTATUS status; - SIZE_T keyOffset; - UNICODE_STRING driverServiceName; - - WCHAR szBuffer[MAX_PATH + 1]; - - RtlSecureZeroMemory(szBuffer, sizeof(szBuffer)); - - if (RtlStringCchPrintfSecure(szBuffer, MAX_PATH, - DRIVER_REGKEY, - NT_REG_PREP, - DriverName) == -1) - { - return STATUS_INVALID_PARAMETER_1; - } - - if (!supEnablePrivilege(SE_LOAD_DRIVER_PRIVILEGE, TRUE)) - return STATUS_ACCESS_DENIED; - - keyOffset = RTL_NUMBER_OF(NT_REG_PREP); - - RtlInitUnicodeString(&driverServiceName, szBuffer); - status = NtUnloadDriver(&driverServiceName); - - supEnablePrivilege(SE_LOAD_DRIVER_PRIVILEGE, FALSE); - - if (NT_SUCCESS(status)) { - if (fRemove) - supRegDeleteKeyRecursive(HKEY_LOCAL_MACHINE, &szBuffer[keyOffset]); - } - - return status; -} - -/* -* kdpUnloadHelperDriver -* -* Purpose: -* -* Unload helper driver, delete registry entry and delete driver file. -* -*/ -VOID kdpUnloadHelperDriver() -{ - kdUnloadHelperDriver(KLDBGDRV, TRUE); - kdpRemoveDriverFile(); -} - -#endif //_USE_OWN_DRIVER /* * ObFindAddress @@ -1001,6 +608,9 @@ PVOID ObpDumpObjectWithSpecifiedSize( *OutSize = 0; *OutVersion = 0; + if (ObjectAddress < g_kdctx.SystemRangeStart) + return NULL; + ObjectBuffer = supVirtualAlloc(BufferSize); if (ObjectBuffer) { if (kdReadSystemMemory(ObjectAddress, @@ -1212,6 +822,7 @@ PVOID ObDumpSymbolicLinkObjectVersionAware( objectVersion = OBVERSION_OBJECT_SYMBOLIC_LINK_V4; break; case NT_WIN11_21H2: + case NT_WIN11_22H2: default: objectSize = sizeof(OBJECT_SYMBOLIC_LINK_V5); objectVersion = OBVERSION_OBJECT_SYMBOLIC_LINK_V5; @@ -1662,7 +1273,7 @@ BOOLEAN ObpFindProcessObjectOffsets( } while (FALSE); - return (pOffsetProcessId->Valid && pOffsetImageName->Valid); + return (pOffsetProcessId->Valid == TRUE && pOffsetImageName->Valid == TRUE); } /* @@ -3011,69 +2622,42 @@ LPWSTR ObQueryFullNamespacePath( * * Acquire handle of helper driver device if possible. * -* N.B. -* -* If device handle is already present function immediately return TRUE. -* If current token is not elevated admin token function immediately return FALSE. -* SE_DEBUG_PRIVILEGE is required, if it cannot be assigned function return FALSE. -* */ BOOLEAN kdConnectDriver( VOID) { - NTSTATUS status; - HANDLE deviceHandle = NULL; - UNICODE_STRING usDevice; - OBJECT_ATTRIBUTES obja; - IO_STATUS_BLOCK iost; + WDRV_PROVIDER *provider; - WCHAR szDeviceName[100]; + if (kdIoDriverLoaded()) return TRUE; - if (g_kdctx.IsFullAdmin == FALSE) - return FALSE; + provider = g_kdctx.DriverContext.Provider; - if (g_kdctx.DeviceHandle != NULL) - return TRUE; + if (provider == NULL) return FALSE; -#ifdef _USE_WINIO - // - // Cannot use address translation on legacy boot. - // - if (g_kdctx.Data->FirmwareType != FirmwareTypeUefi) { - g_kdctx.DriverOpenLoadStatus = (ULONG)STATUS_NOT_SUPPORTED; - return FALSE; - } -#endif - - if (supEnablePrivilege(SE_DEBUG_PRIVILEGE, TRUE)) { - - _strcpy(szDeviceName, TEXT("\\Device\\")); - _strcat(szDeviceName, KLDBGDRV); - RtlInitUnicodeString(&usDevice, szDeviceName); - InitializeObjectAttributes(&obja, &usDevice, OBJ_CASE_INSENSITIVE, NULL, NULL); + return NT_SUCCESS(provider->Callbacks.OpenDriver(&g_kdctx.DriverContext)); +} - status = NtCreateFile(&deviceHandle, - GENERIC_READ | GENERIC_WRITE, - &obja, - &iost, - NULL, - 0, - 0, - FILE_OPEN, - 0, - NULL, - 0); +/* +* kdIoDriverLoaded +* +* Purpose: +* +* Return state of helper driver. +* +* N.B. +* +* If current token is not elevated admin token function return FALSE. +* If device handle is already present function return TRUE. +* +*/ +BOOLEAN kdIoDriverLoaded( + VOID) +{ + if (g_kdctx.IsFullAdmin == FALSE) + return FALSE; - if (NT_SUCCESS(status)) { - g_kdctx.DeviceHandle = deviceHandle; - g_kdctx.DriverConnectStatus = status; - return TRUE; - } - else { - supEnablePrivilege(SE_DEBUG_PRIVILEGE, FALSE); - g_kdctx.DriverConnectStatus = status; - } - } + if (g_kdctx.DriverContext.DeviceHandle != NULL) + return TRUE; return FALSE; } @@ -3105,6 +2689,7 @@ PVOID kdQueryIopInvalidDeviceRequest( POBJINFO pSelfObj; ULONG_PTR drvObjectAddress; DRIVER_OBJECT drvObject; + PWDRV_PROVIDER drvProvider; // // Lookup using symbols. @@ -3123,28 +2708,31 @@ PVOID kdQueryIopInvalidDeviceRequest( // if (pHandler == NULL) { - pSelfObj = ObQueryObject(L"\\Driver", KLDBGDRV); - if (pSelfObj) { + drvProvider = g_kdctx.DriverContext.Provider; + if (drvProvider) { - drvObjectAddress = pSelfObj->ObjectAddress; + pSelfObj = ObQueryObject(L"\\Driver", drvProvider->DriverName); + if (pSelfObj) { - RtlSecureZeroMemory(&drvObject, sizeof(drvObject)); + drvObjectAddress = pSelfObj->ObjectAddress; - if (kdReadSystemMemory(drvObjectAddress, - &drvObject, - sizeof(drvObject))) - { - pHandler = drvObject.MajorFunction[IRP_MJ_CREATE_MAILSLOT]; + RtlSecureZeroMemory(&drvObject, sizeof(drvObject)); - // - // IopInvalidDeviceRequest is a routine inside ntoskrnl. - // - if (!kdAddressInNtOsImage(pHandler)) - pHandler = NULL; + if (kdReadSystemMemory(drvObjectAddress, + &drvObject, + sizeof(drvObject))) + { + pHandler = drvObject.MajorFunction[IRP_MJ_CREATE_MAILSLOT]; + + // + // IopInvalidDeviceRequest is a routine inside ntoskrnl. + // + if (!kdAddressInNtOsImage(pHandler)) + pHandler = NULL; + } + supHeapFree(pSelfObj); } - supHeapFree(pSelfObj); } - } return pHandler; } @@ -3233,143 +2821,44 @@ VOID kdReportReadError( } /* -* kdpReadSystemMemoryWithStatus +* kdReadSystemMemory2 * * Purpose: * -* Wrapper around SysDbgReadVirtual request to the KLDBGDRV +* Read system memory through driver callback. * */ -BOOL kdpReadSystemMemoryWithStatus( +BOOL kdReadSystemMemory2( + _In_opt_ LPCWSTR CallerFunction, _In_ ULONG_PTR Address, _Inout_ PVOID Buffer, _In_ ULONG BufferSize, - _Out_opt_ PULONG NumberOfBytesRead, - _Out_opt_ NTSTATUS* Status, - _Out_opt_ PIO_STATUS_BLOCK IoStatus + _Out_opt_ PULONG NumberOfBytesRead ) { - BOOL bResult; - NTSTATUS ntStatus; - KLDBG kldbg; + NTSTATUS ntStatus; + ULONG numberOfBytesRead = 0; + LPCWSTR lpSrcFunction; IO_STATUS_BLOCK iost; - SYSDBG_VIRTUAL dbgRequest; + + PWDRV_CONTEXT driverContext = &g_kdctx.DriverContext; if (NumberOfBytesRead) *NumberOfBytesRead = 0; - if (Status) - *Status = STATUS_UNSUCCESSFUL; - if (IoStatus) { - IoStatus->Information = 0; - IoStatus->Status = STATUS_UNSUCCESSFUL; - } - if ((Buffer == NULL) || - (BufferSize == 0) || - (Address < g_kdctx.SystemRangeStart)) - { + if (driverContext->Provider == NULL) { return FALSE; } - if (!kdConnectDriver()) + if (driverContext->Provider->Callbacks.ReadSystemMemory == NULL) { return FALSE; - - // - // Fill parameters for KdSystemDebugControl. - // - dbgRequest.Address = (PVOID)Address; - dbgRequest.Buffer = Buffer; - dbgRequest.Request = BufferSize; - - // - // Fill parameters for kldbgdrv ioctl. - // - kldbg.SysDbgRequest = SysDbgReadVirtual; - kldbg.Buffer = &dbgRequest; - kldbg.BufferSize = sizeof(SYSDBG_VIRTUAL); - - iost.Information = 0; - iost.Status = 0; - - ntStatus = NtDeviceIoControlFile(g_kdctx.DeviceHandle, - NULL, - NULL, - NULL, - &iost, - IOCTL_KD_PASS_THROUGH, - &kldbg, - sizeof(kldbg), - &dbgRequest, - sizeof(dbgRequest)); - - if (ntStatus == STATUS_PENDING) { - - ntStatus = NtWaitForSingleObject(g_kdctx.DeviceHandle, - FALSE, - NULL); - - } - - if (Status) - *Status = ntStatus; - - if (NT_SUCCESS(ntStatus)) - ntStatus = iost.Status; - - if (IoStatus) { - IoStatus->Information = iost.Information; - IoStatus->Status = iost.Status; } - bResult = NT_SUCCESS(ntStatus); - - if (bResult) { - - if (NumberOfBytesRead) - *NumberOfBytesRead = (ULONG)iost.Information; - - } - else { - // - // We don't need this information in case of error. - // - if (!NT_ERROR(ntStatus)) { - if (NumberOfBytesRead) - *NumberOfBytesRead = (ULONG)iost.Information; - } - - } - - return bResult; -} - -/* -* kdpReadSystemMemoryEx2 -* -* Purpose: -* -* Call internal kdpReadSystemMemoryWithStatus and log status for debug purposes. -* -*/ -BOOL kdpReadSystemMemoryEx2( - _In_opt_ LPCWSTR CallerFunction, - _In_ ULONG_PTR Address, - _Inout_ PVOID Buffer, - _In_ ULONG BufferSize, - _Out_opt_ PULONG NumberOfBytesRead -) -{ - NTSTATUS ntStatus; - ULONG numberOfBytesRead = 0; - LPCWSTR lpSrcFunction; - IO_STATUS_BLOCK iost; - - BOOL bResult = kdpReadSystemMemoryWithStatus(Address, + BOOL bResult = driverContext->Provider->Callbacks.ReadSystemMemory(driverContext, + Address, Buffer, BufferSize, - &numberOfBytesRead, - &ntStatus, - &iost); + &numberOfBytesRead); if (NumberOfBytesRead) *NumberOfBytesRead = numberOfBytesRead; @@ -3379,8 +2868,10 @@ BOOL kdpReadSystemMemoryEx2( else lpSrcFunction = __FUNCTIONW__; + ntStatus = driverContext->LastNtStatus; + if (bResult == FALSE) { - kdReportReadError(lpSrcFunction, Address, BufferSize, ntStatus, &iost); + kdReportReadError(lpSrcFunction, Address, BufferSize, ntStatus, &driverContext->IoStatusBlock); } else { // @@ -3396,116 +2887,6 @@ BOOL kdpReadSystemMemoryEx2( return bResult; } -/* -* kdpReadSystemMemoryEx -* -* Purpose: -* -* Call internal kdpReadSystemMemoryEx2. -* -*/ -BOOL kdpReadSystemMemoryEx( - _In_ ULONG_PTR Address, - _Inout_ PVOID Buffer, - _In_ ULONG BufferSize, - _Out_opt_ PULONG NumberOfBytesRead -) -{ - return kdpReadSystemMemoryEx2(NULL, Address, Buffer, BufferSize, NumberOfBytesRead); -} - -/* -* kdExtractDriverResource -* -* Purpose: -* -* Extract KLDBGDRV from application resource -* -*/ -BOOL kdExtractDriverResource( - _In_ LPCWSTR lpExtractTo, - _In_ LPCWSTR lpName, - _In_ LPCWSTR lpType -) -{ - HRSRC hResInfo = NULL; - HGLOBAL hResData = NULL; - PVOID pData; - BOOL bResult = FALSE; - DWORD dwSize = 0, dwLastError = ERROR_SUCCESS; - HANDLE hFile; - - hResInfo = FindResource(g_WinObj.hInstance, lpName, lpType); - if (hResInfo == NULL) { - SetLastError(ERROR_RESOURCE_NAME_NOT_FOUND); - return bResult; - } - - dwSize = SizeofResource(g_WinObj.hInstance, hResInfo); - if (dwSize == 0) { - return bResult; - } - - hResData = LoadResource(g_WinObj.hInstance, hResInfo); - if (hResData == NULL) { - return bResult; - } - - pData = LockResource(hResData); - if (pData == NULL) { - return bResult; - } - - hFile = CreateFile(lpExtractTo, - GENERIC_WRITE, - 0, - NULL, - CREATE_ALWAYS, - 0, - NULL); - - if (hFile == INVALID_HANDLE_VALUE) { - return bResult; - } - else { - bResult = WriteFile(hFile, pData, dwSize, &dwSize, NULL); - if (!bResult) dwLastError = GetLastError(); - CloseHandle(hFile); - } - - SetLastError(dwLastError); - return bResult; -} - -/* -* kdExtractDriver -* -* Purpose: -* -* Save driver to system32\drivers from application resource. -* -* N.B. If driver already exist on disk function return TRUE. -* This is required for WinDBG compatibility. -* -*/ -BOOL kdExtractDriver( - _In_ WCHAR* szDriverPath -) -{ - BOOL bResult = FALSE; - - // - // If no file exists, extract it to the drivers directory. - // - bResult = PathFileExists(szDriverPath); - - if (!bResult) { - bResult = kdExtractDriverResource(szDriverPath, MAKEINTRESOURCE(IDR_KDBGDRV), L"SYS"); - } - - return bResult; -} - /* * kdLoadSymbolsForNtImage * @@ -3705,18 +3086,18 @@ BOOLEAN kdpQueryMmUnloadedDrivers( _In_ PKLDBGCONTEXT Context ) { - HMODULE hNtOs; - ULONG_PTR NtOsBase, lookupAddress = 0; + HMODULE hNtOs; + ULONG_PTR NtOsBase, lookupAddress = 0; - PBYTE ptrCode, sigPattern; - PVOID SectionBase; - ULONG SectionSize = 0; + PBYTE ptrCode, sigPattern; + PVOID SectionBase; + ULONG SectionSize = 0; - ULONG sigSize; + ULONG sigSize; - ULONG Index = 0, instLength = 0, tempOffset; - LONG relativeValue = 0; - hde64s hs; + ULONG Index = 0, instLength = 0, tempOffset; + LONG relativeValue = 0; + hde64s hs; PKLDBG_SYSTEM_ADDRESS kdpMmUnloadedDrivers = &Context->Data->MmUnloadedDrivers; @@ -4140,52 +3521,6 @@ BOOLEAN kdQueryKernelShims( return KseEngineDumpValid; } -/* -* kdpOpenLoadDriverPublic -* -* Purpose: -* -* Open handle to WINDBG driver device or load this driver. -* -*/ -BOOLEAN kdpOpenLoadDriverPublic( - _In_ WCHAR* szDriverPath -) -{ - BOOLEAN bResult; - - // - // First, try to open existing device. - // - bResult = scmOpenDevice(KLDBGDRV, - &g_kdctx.DeviceHandle, - (PDWORD)&g_kdctx.DriverOpenLoadStatus); - - if (bResult) { - return bResult; - } - - // - // Next, if device not opened, extract driver. - // - if (!kdExtractDriver(szDriverPath)) { - g_kdctx.DriverOpenLoadStatus = GetLastError(); - return FALSE; - } - - // - // Finally, try to load driver ourself. - // - bResult = scmLoadDeviceDriver(KLDBGDRV, - szDriverPath, - &g_kdctx.DeviceHandle, - (PDWORD)&g_kdctx.DriverOpenLoadStatus); - - g_kdctx.IsOurLoad = bResult; - - return bResult; -} - /* * kdIsSymAvailable * @@ -4401,8 +3736,8 @@ BOOL kdGetAddressFromSymbol( BOOL CALLBACK symCallbackProc( _In_ HANDLE hProcess, _In_ ULONG ActionCode, - _In_opt_ ULONG64 CallbackData, - _In_opt_ ULONG64 UserContext + _In_ ULONG64 CallbackData, + _In_ ULONG64 UserContext ) { PIMAGEHLP_CBA_EVENT pEvent; @@ -4514,24 +3849,22 @@ VOID kdInit( _In_ BOOLEAN IsFullAdmin ) { - BOOLEAN bLoadState; + NTSTATUS ntStatus; WCHAR szBuffer[MAX_PATH * 2]; RtlSecureZeroMemory(&g_kdctx, sizeof(g_kdctx)); RtlSecureZeroMemory(&g_kdpdata, sizeof(g_kdpdata)); RtlSecureZeroMemory(&g_SystemCallbacks, sizeof(g_SystemCallbacks)); + g_kdctx.DriverContext.LoadStatus = STATUS_DRIVER_UNABLE_TO_LOAD; + g_kdctx.DriverContext.OpenStatus = STATUS_UNSUCCESSFUL; + g_kdctx.IsFullAdmin = IsFullAdmin; g_kdctx.Data = &g_kdpdata; NtpLdrExceptionFilter = (PFNNTLDR_EXCEPT_FILTER)exceptFilterWithLog; - // - // Default driver load status. - // - g_kdctx.DriverOpenLoadStatus = ERROR_NOT_CAPABLE; - InitializeListHead(&g_kdctx.Data->KseEngineDump.ShimmedDriversDumpListHead); // @@ -4562,64 +3895,41 @@ VOID kdInit( if (IsFullAdmin == FALSE) return; - // // Find EPROCESS offsets. // ObpFindProcessObjectOffsets(&g_kdctx); // - // Helper drivers does not need DEBUG mode. + // If the current driver provider is WinDbg then check Windows debug mode. + // This is required by WinDbg kldbgdrv. // + if (WDrvGetActiveProviderType() == wdrvMicrosoft) { -#ifndef _USE_OWN_DRIVER - // - // Check if system booted in the debug mode. - // - if (ntsupIsKdEnabled(NULL, NULL) == FALSE) - return; - -#endif /* _USE_OWN_DRIVER */ + if (supIsKdEnabled(NULL, NULL) == FALSE) + return; - // - // Build path to driver. - // - RtlSecureZeroMemory(szBuffer, sizeof(szBuffer)); - _strcpy(szBuffer, g_WinObj.szSystemDirectory); - _strcat(szBuffer, KLDBGDRVSYS); + } // - // Test privilege assigned and continue to load/open kldbg driver. + // Create driver provider context. // - if (supEnablePrivilege(SE_DEBUG_PRIVILEGE, TRUE)) { - -#ifdef _USE_OWN_DRIVER - - bLoadState = kdpOpenLoadDriverPrivate(szBuffer); - -#else - - bLoadState = kdpOpenLoadDriverPublic(szBuffer); - -#endif - - if (bLoadState == FALSE) { - - RtlStringCchPrintfSecure(szBuffer, - MAX_PATH, - TEXT("Could not open/load helper driver.\r\nSome features maybe unavailable, error code 0x%lX"), - g_kdctx.DriverOpenLoadStatus); + ntStatus = WDrvProvCreate(g_kdctx.Data->FirmwareType, &g_kdctx.DriverContext); + if (!NT_SUCCESS(ntStatus)) { - MessageBox(GetDesktopWindow(), szBuffer, TEXT("WinObjEx64"), MB_ICONINFORMATION); + RtlStringCchPrintfSecure(szBuffer, + MAX_PATH, + TEXT("Could not open/load helper driver.\r\nSome features maybe unavailable, error code 0x%lX"), + ntStatus); - } + MessageBox(GetDesktopWindow(), szBuffer, TEXT("WinObjEx64"), MB_ICONINFORMATION); } // // Init driver relying variables. // - if (g_kdctx.DeviceHandle != NULL) { + if (kdIoDriverLoaded()) { // // Query Ob specific offsets. // @@ -4636,49 +3946,6 @@ VOID kdInit( } -/* -* kdpRemoveDriverFile -* -* Purpose: -* -* Delete driver file. -* -*/ -VOID kdpRemoveDriverFile() -{ - WCHAR szDrvPath[MAX_PATH * 2]; - - // - // Driver file is no longer needed - remove it from disk. - // - RtlSecureZeroMemory(&szDrvPath, sizeof(szDrvPath)); - _strcpy(szDrvPath, g_WinObj.szSystemDirectory); - _strcat(szDrvPath, KLDBGDRVSYS); - DeleteFile(szDrvPath); -} - -/* -* kdpUnloadWindbgDriver -* -* Purpose: -* -* Unload driver, unregister and remove service and delete driver file. -* -*/ -VOID kdpUnloadWindbgDriver() -{ - // - // If we loaded Windbg driver - unload it, otherwise leave it as is. - // - if (g_kdctx.IsOurLoad) { - // - // Windbg recreates service and drops file everytime when kernel debug starts. - // - scmUnloadDeviceDriver(KLDBGDRV, NULL); - kdpRemoveDriverFile(); - } -} - /* * kdShutdown * @@ -4693,20 +3960,7 @@ VOID kdShutdown( VOID ) { - - // - // Close device handle and make it invalid. - // - if (g_kdctx.DeviceHandle) { - CloseHandle(g_kdctx.DeviceHandle); - g_kdctx.DeviceHandle = NULL; - } - -#ifdef _USE_OWN_DRIVER - kdpUnloadHelperDriver(); -#else - kdpUnloadWindbgDriver(); -#endif + WDrvProvRelease(&g_kdctx.DriverContext); if (g_kdctx.NtOsImageMap) { FreeLibrary((HMODULE)g_kdctx.NtOsImageMap); diff --git a/Source/WinObjEx64/kldbg.h b/Source/WinObjEx64/kldbg.h index 27c4053f..b64ecca5 100644 --- a/Source/WinObjEx64/kldbg.h +++ b/Source/WinObjEx64/kldbg.h @@ -1,12 +1,12 @@ /******************************************************************************* * -* (C) COPYRIGHT AUTHORS, 2015 - 2021 +* (C) COPYRIGHT AUTHORS, 2015 - 2022 * * TITLE: KLDBG.H * -* VERSION: 1.92 +* VERSION: 1.93 * -* DATE: 03 Dec 2021 +* DATE: 22 Apr 2022 * * Common header file for the Kernel Debugger Driver support. * @@ -95,20 +95,6 @@ // Structure version since W11 #define OBVERSION_FLT_FILTER_V4 (4) - -#ifdef _USE_OWN_DRIVER -#ifdef _USE_WINIO -#define KLDBGDRV L"EneTechIo" -#define KLDBGDRVSYS L"\\drivers\\ene64drv.sys" -#else -#define KLDBGDRV L"wodbgdrv" -#define KLDBGDRVSYS L"\\drivers\\wodbgdrv.sys" -#endif -#else -#define KLDBGDRV L"kldbgdrv" -#define KLDBGDRVSYS L"\\drivers\\kldbgdrv.sys" -#endif - #define NT_REG_PREP L"\\Registry\\Machine" #define DRIVER_REGKEY L"%wS\\System\\CurrentControlSet\\Services\\%wS" @@ -200,9 +186,6 @@ typedef struct _KLDBGCONTEXT { //Is user full admin BOOLEAN IsFullAdmin; - //we loaded driver? - BOOLEAN IsOurLoad; - //secureboot enabled? BOOLEAN IsSecureBoot; @@ -213,9 +196,6 @@ typedef struct _KLDBGCONTEXT { USHORT DirectoryTypeIndex; ULONG_PTR DirectoryRootObject; - //kldbgdrv device handle - HANDLE DeviceHandle; - //ntoskrnl base and size PVOID NtOsBase; ULONG NtOsSize; @@ -223,10 +203,6 @@ typedef struct _KLDBGCONTEXT { //ntoskrnl mapped image PVOID NtOsImageMap; - //driver loading/open status - ULONG DriverOpenLoadStatus; - ULONG DriverConnectStatus; - //system range start ULONG_PTR SystemRangeStart; @@ -236,6 +212,8 @@ typedef struct _KLDBGCONTEXT { PVOID NtOsSymContext; + WDRV_CONTEXT DriverContext; + PKLDBGPDATA Data; } KLDBGCONTEXT, *PKLDBGCONTEXT; @@ -463,6 +441,9 @@ VOID kdReportReadError( _In_ NTSTATUS Status, _In_ PIO_STATUS_BLOCK Iosb); +BOOLEAN kdIoDriverLoaded( + VOID); + BOOLEAN kdConnectDriver( VOID); @@ -478,42 +459,18 @@ BOOL kdLoadSymbolsForNtImage( _In_ PSYMCONTEXT SymContext, _In_ LPCWSTR ImageFileName); -BOOL kdpReadSystemMemoryEx2( +BOOL kdReadSystemMemory2( _In_opt_ LPCWSTR CallerFunction, _In_ ULONG_PTR Address, _Inout_ PVOID Buffer, _In_ ULONG BufferSize, _Out_opt_ PULONG NumberOfBytesRead); -BOOL kdpReadSystemMemoryEx( - _In_ ULONG_PTR Address, - _Inout_ PVOID Buffer, - _In_ ULONG BufferSize, - _Out_opt_ PULONG NumberOfBytesRead); - -#define kdReadSystemMemoryEx2(Address, Buffer, BufferSize, NumberOfBytesRead) \ - kdpReadSystemMemoryEx2(__FUNCTIONW__, Address, Buffer, BufferSize, NumberOfBytesRead) - -#ifdef _USE_OWN_DRIVER -#ifdef _USE_WINIO -#define kdReadSystemMemoryEx WinIoReadSystemMemoryEx -#else -#ifdef _DEBUG -#define kdReadSystemMemoryEx kdReadSystemMemoryEx2 -#else -#define kdReadSystemMemoryEx kdpReadSystemMemoryEx -#endif -#endif -#else -#ifdef _DEBUG -#define kdReadSystemMemoryEx kdReadSystemMemoryEx2 -#else -#define kdReadSystemMemoryEx kdpReadSystemMemoryEx -#endif -#endif - #define kdReadSystemMemory(Address, Buffer, BufferSize) \ - kdReadSystemMemoryEx(Address, Buffer, BufferSize, NULL) + kdReadSystemMemory2(__FUNCTIONW__, Address, Buffer, BufferSize, NULL) + +#define kdReadSystemMemoryEx(Address, Buffer, BufferSize, NumberOfBytesRead) \ + kdReadSystemMemory2(NULL, Address, Buffer, BufferSize, NumberOfBytesRead) #ifdef _DEBUG #define kdDebugPrint(f, ...) DbgPrint(f, __VA_ARGS__) diff --git a/Source/WinObjEx64/main.c b/Source/WinObjEx64/main.c index c9b6c3c1..5275087c 100644 --- a/Source/WinObjEx64/main.c +++ b/Source/WinObjEx64/main.c @@ -1,12 +1,12 @@ /******************************************************************************* * -* (C) COPYRIGHT AUTHORS, 2015 - 2021 +* (C) COPYRIGHT AUTHORS, 2015 - 2022 * * TITLE: MAIN.C * -* VERSION: 1.92 +* VERSION: 1.93 * -* DATE: 12 Nov 2021 +* DATE: 11 May 2022 * * Program entry point and main window handler. * @@ -72,7 +72,7 @@ VOID MainWindowExtrasDisableAdminFeatures( // // These features require driver usage. // - if (g_kdctx.DeviceHandle == NULL) { + if (FALSE == kdIoDriverLoaded()) { SetMenuItemInfo(hExtrasSubMenu, ID_EXTRAS_SSDT, FALSE, &mii); SetMenuItemInfo(hExtrasSubMenu, ID_EXTRAS_PRIVATENAMESPACES, FALSE, &mii); SetMenuItemInfo(hExtrasSubMenu, ID_EXTRAS_W32PSERVICETABLE, FALSE, &mii); @@ -358,7 +358,7 @@ VOID MainWindowOnDisplayGridChange( { DWORD lvExStyle; DWORD dwProcessId = GetCurrentProcessId(); - g_WinObj.ListViewDisplayGrid = !g_WinObj.ListViewDisplayGrid; + g_WinObj.ListViewDisplayGrid = (~g_WinObj.ListViewDisplayGrid) & 1; lvExStyle = ListView_GetExtendedListViewStyle(g_hwndObjectList); if (g_WinObj.ListViewDisplayGrid) lvExStyle |= LVS_EX_GRIDLINES; @@ -872,7 +872,7 @@ LRESULT MainWindowHandleWMNotify( //handle sort by column case LVN_COLUMNCLICK: - bMainWndSortInverse = !bMainWndSortInverse; + bMainWndSortInverse = (~bMainWndSortInverse) & 1; SortColumn = ((NMLISTVIEW*)lParam)->iSubItem; ListView_SortItemsEx(g_hwndObjectList, &MainWindowObjectListCompareFunc, SortColumn); diff --git a/Source/WinObjEx64/msvcver.h b/Source/WinObjEx64/msvcver.h index bede39c8..9075a6ba 100644 --- a/Source/WinObjEx64/msvcver.h +++ b/Source/WinObjEx64/msvcver.h @@ -1,12 +1,12 @@ /******************************************************************************* * -* (C) COPYRIGHT AUTHORS, 2018 - 2019 +* (C) COPYRIGHT AUTHORS, 2018 - 2022 * * TITLE: MSVCVER.H * -* VERSION: 1.72 +* VERSION: 1.93 * -* DATE: 04 Feb 2019 +* DATE: 30 Apr 2022 * * Visual Studio compiler version determination. * @@ -20,7 +20,9 @@ #pragma once #if defined _MSC_VER && _MSC_FULL_VER - #if (_MSC_VER >= 1920) //2019 all variants (will be too many to list) + #if (_MSC_VER >= 1930) + #define VC_VER L"MSVC 2022" //2022 all variants (too many to list) + #elif (_MSC_VER >= 1920 && _MSC_VER < 1930) //2019 all variants (too many to list) #define VC_VER L"MSVC 2019" #elif (_MSC_VER >= 1910) //2017 all variants (too many to list) #define VC_VER L"MSVC 2017" diff --git a/Source/WinObjEx64/plugmngr.c b/Source/WinObjEx64/plugmngr.c index ef200cc3..3041cefc 100644 --- a/Source/WinObjEx64/plugmngr.c +++ b/Source/WinObjEx64/plugmngr.c @@ -1,12 +1,12 @@ /******************************************************************************* * -* (C) COPYRIGHT AUTHORS, 2019 - 2021 +* (C) COPYRIGHT AUTHORS, 2019 - 2022 * * TITLE: PLUGMNGR.C * -* VERSION: 1.92 +* VERSION: 1.93 * -* DATE: 03 Dec 2021 +* DATE: 22 Apr 2022 * * Plugin manager. * @@ -38,15 +38,7 @@ BOOL PmpReadSystemMemoryEx( _Out_opt_ PULONG NumberOfBytesRead ) { -#ifdef _USE_OWN_DRIVER -#ifdef _USE_WINIO - return WinIoReadSystemMemoryEx(Address, Buffer, BufferSize, NumberOfBytesRead); -#else - return kdReadSystemMemoryEx(Address, Buffer, BufferSize, NumberOfBytesRead); -#endif -#else - return kdReadSystemMemoryEx(Address, Buffer, BufferSize, NumberOfBytesRead); -#endif + return kdReadSystemMemory2(NULL, Address, Buffer, BufferSize, NumberOfBytesRead); } /* @@ -771,7 +763,7 @@ VOID PmProcessEntry( return; } - if (PluginEntry->Plugin.NeedDriver && g_kdctx.DriverOpenLoadStatus != STATUS_SUCCESS) { + if (PluginEntry->Plugin.NeedDriver && kdIoDriverLoaded() == FALSE) { MessageBox(ParentWindow, TEXT("This plugin requires driver usage to run"), diff --git a/Source/WinObjEx64/props/propAlpcPort.c b/Source/WinObjEx64/props/propAlpcPort.c index 52e1f8b7..4dbea6ed 100644 --- a/Source/WinObjEx64/props/propAlpcPort.c +++ b/Source/WinObjEx64/props/propAlpcPort.c @@ -1,12 +1,12 @@ /******************************************************************************* * -* (C) COPYRIGHT AUTHORS, 2021 +* (C) COPYRIGHT AUTHORS, 2021 - 2022 * * TITLE: PROPALPCPORT.C * -* VERSION: 1.92 +* VERSION: 1.93 * -* DATE: 03 Dec 2021 +* DATE: 11 May 2021 * * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF * ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED @@ -174,7 +174,7 @@ BOOL AlpcPortListHandleNotify( case LVN_COLUMNCLICK: pDlgContext = (EXTRASCONTEXT*)GetProp(hwndDlg, T_DLGCONTEXT); if (pDlgContext) { - pDlgContext->bInverseSort = !pDlgContext->bInverseSort; + pDlgContext->bInverseSort = (~pDlgContext->bInverseSort) & 1; pDlgContext->lvColumnToSort = ((NMLISTVIEW*)nhdr)->iSubItem; ListView_SortItemsEx( diff --git a/Source/WinObjEx64/props/propDesktop.c b/Source/WinObjEx64/props/propDesktop.c index e474d9ac..61d05089 100644 --- a/Source/WinObjEx64/props/propDesktop.c +++ b/Source/WinObjEx64/props/propDesktop.c @@ -1,12 +1,12 @@ /******************************************************************************* * -* (C) COPYRIGHT AUTHORS, 2015 - 2021 +* (C) COPYRIGHT AUTHORS, 2015 - 2022 * * TITLE: PROPDESKTOP.C * -* VERSION: 1.90 +* VERSION: 1.93 * -* DATE: 11 May 2021 +* DATE: 11 May 2022 * * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF * ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED @@ -369,7 +369,7 @@ BOOL DesktopListHandleNotify( case LVN_COLUMNCLICK: pDlgContext = (EXTRASCONTEXT*)GetProp(hwndDlg, T_DLGCONTEXT); if (pDlgContext) { - pDlgContext->bInverseSort = !pDlgContext->bInverseSort; + pDlgContext->bInverseSort = (~pDlgContext->bInverseSort) & 1; pDlgContext->lvColumnToSort = ((NMLISTVIEW*)nhdr)->iSubItem; ListView_SortItemsEx( diff --git a/Source/WinObjEx64/props/propObjectDump.c b/Source/WinObjEx64/props/propObjectDump.c index 5e3ff15f..2694b209 100644 --- a/Source/WinObjEx64/props/propObjectDump.c +++ b/Source/WinObjEx64/props/propObjectDump.c @@ -1,12 +1,12 @@ /******************************************************************************* * -* (C) COPYRIGHT AUTHORS, 2015 - 2021 +* (C) COPYRIGHT AUTHORS, 2015 - 2022 * * TITLE: PROPOBJECTDUMP.C * -* VERSION: 1.92 +* VERSION: 1.93 * -* DATE: 03 Dec 2021 +* DATE: 13 May 2022 * * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF * ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED @@ -155,7 +155,7 @@ VOID propObDumpAddressWithModule( _In_opt_ PVOID Address, _In_ PRTL_PROCESS_MODULES pModules, _In_opt_ PVOID SelfDriverBase, - _In_opt_ ULONG SelfDriverSize + _In_ ULONG SelfDriverSize ) { TL_SUBITEMS_FIXED subitems; @@ -217,8 +217,8 @@ VOID propObDumpPushLock( _In_ HWND TreeList, _In_ HTREEITEM hParent, _In_ PVOID PushLockPtr, - _In_opt_ COLORREF BgColor, - _In_opt_ COLORREF FontColor + _In_ COLORREF BgColor, + _In_ COLORREF FontColor ) { TL_SUBITEMS_FIXED subitems; @@ -257,8 +257,8 @@ VOID propObDumpByte( _In_ LPWSTR lpszName, _In_opt_ LPWSTR lpszDesc, _In_ BYTE Value, - _In_opt_ COLORREF BgColor, - _In_opt_ COLORREF FontColor, + _In_ COLORREF BgColor, + _In_ COLORREF FontColor, _In_ BOOL IsBool ) { @@ -321,8 +321,8 @@ HTREEITEM propObDumpSetString( _In_ LPWSTR lpszName, _In_opt_ LPWSTR lpszDesc, _In_opt_ LPWSTR lpszValue, - _In_opt_ COLORREF BgColor, - _In_opt_ COLORREF FontColor + _In_ COLORREF BgColor, + _In_ COLORREF FontColor ) { TL_SUBITEMS_FIXED subitems; @@ -377,8 +377,8 @@ HTREEITEM propObDumpUlong( _In_ ULONG Value, _In_ BOOL HexDump, _In_ BOOL IsUShort, - _In_opt_ COLORREF BgColor, - _In_opt_ COLORREF FontColor + _In_ COLORREF BgColor, + _In_ COLORREF FontColor ) { TL_SUBITEMS_FIXED subitems; @@ -459,8 +459,8 @@ HTREEITEM propObDumpLong( _In_opt_ LPWSTR lpszDesc, //additional text to be displayed _In_ LONG Value, _In_ BOOL HexDump, - _In_opt_ COLORREF BgColor, - _In_opt_ COLORREF FontColor + _In_ COLORREF BgColor, + _In_ COLORREF FontColor ) { TL_SUBITEMS_FIXED subitems; @@ -521,7 +521,7 @@ VOID propObDumpUlong64( _In_ HTREEITEM hParent, _In_ LPWSTR lpszName, _In_opt_ LPWSTR lpszDesc, //additional text to be displayed - _In_opt_ ULONG64 Value, + _In_ ULONG64 Value, _In_ BOOL OutAsHex, _In_ COLORREF BgColor, _In_ COLORREF FontColor @@ -583,7 +583,7 @@ VOID propObDumpLong64( _In_ HTREEITEM hParent, _In_ LPWSTR lpszName, _In_opt_ LPWSTR lpszDesc, //additional text to be displayed - _In_opt_ LONG64 Value, + _In_ LONG64 Value, _In_ BOOL OutAsHex, _In_ COLORREF BgColor, _In_ COLORREF FontColor diff --git a/Source/WinObjEx64/props/propObjectDump.h b/Source/WinObjEx64/props/propObjectDump.h index cfe88a59..ddb23552 100644 --- a/Source/WinObjEx64/props/propObjectDump.h +++ b/Source/WinObjEx64/props/propObjectDump.h @@ -1,12 +1,12 @@ /******************************************************************************* * -* (C) COPYRIGHT AUTHORS, 2015 - 2021 +* (C) COPYRIGHT AUTHORS, 2015 - 2022 * * TITLE: PROPOBJECTDUMP.H * -* VERSION: 1.92 +* VERSION: 1.93 * -* DATE: 19 Sep 2021 +* DATE: 13 May 2022 * * Common header file for the object dump support. * @@ -32,15 +32,15 @@ HTREEITEM propObDumpUlong( _In_ ULONG Value, _In_ BOOL HexDump, _In_ BOOL IsUShort, - _In_opt_ COLORREF BgColor, - _In_opt_ COLORREF FontColor); + _In_ COLORREF BgColor, + _In_ COLORREF FontColor); VOID propObDumpUlong64( _In_ HWND TreeList, _In_ HTREEITEM hParent, _In_ LPWSTR lpszName, _In_opt_ LPWSTR lpszDesc, - _In_opt_ ULONG64 Value, + _In_ ULONG64 Value, _In_ BOOL OutAsHex, _In_ COLORREF BgColor, _In_ COLORREF FontColor); @@ -51,8 +51,8 @@ VOID propObDumpByte( _In_ LPWSTR lpszName, _In_opt_ LPWSTR lpszDesc, _In_ BYTE Value, - _In_opt_ COLORREF BgColor, - _In_opt_ COLORREF FontColor, + _In_ COLORREF BgColor, + _In_ COLORREF FontColor, _In_ BOOL IsBool); HTREEITEM propObDumpAddress( @@ -70,8 +70,8 @@ HTREEITEM propObDumpSetString( _In_ LPWSTR lpszName, _In_opt_ LPWSTR lpszDesc, _In_opt_ LPWSTR lpszValue, - _In_opt_ COLORREF BgColor, - _In_opt_ COLORREF FontColor); + _In_ COLORREF BgColor, + _In_ COLORREF FontColor); HTREEITEM propObDumpLong( _In_ HWND TreeList, @@ -80,8 +80,8 @@ HTREEITEM propObDumpLong( _In_opt_ LPWSTR lpszDesc, _In_ LONG Value, _In_ BOOL HexDump, - _In_opt_ COLORREF BgColor, - _In_opt_ COLORREF FontColor); + _In_ COLORREF BgColor, + _In_ COLORREF FontColor); VOID propObDumpLong64( _In_ HWND TreeList, diff --git a/Source/WinObjEx64/props/propProcess.c b/Source/WinObjEx64/props/propProcess.c index 6ce73048..28b6069d 100644 --- a/Source/WinObjEx64/props/propProcess.c +++ b/Source/WinObjEx64/props/propProcess.c @@ -1,12 +1,12 @@ /******************************************************************************* * -* (C) COPYRIGHT AUTHORS, 2015 - 2021 +* (C) COPYRIGHT AUTHORS, 2015 - 2022 * * TITLE: PROPPROCESS.C * -* VERSION: 1.90 +* VERSION: 1.93 * -* DATE: 27 May 2021 +* DATE: 11 May 2022 * * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF * ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED @@ -198,7 +198,7 @@ BOOL ProcessListHandleNotify( case LVN_COLUMNCLICK: pDlgContext = (EXTRASCONTEXT*)GetProp(hwndDlg, T_DLGCONTEXT); if (pDlgContext) { - pDlgContext->bInverseSort = !pDlgContext->bInverseSort; + pDlgContext->bInverseSort = (~pDlgContext->bInverseSort) & 1; pDlgContext->lvColumnToSort = pListView->iSubItem; ListView_SortItemsEx( diff --git a/Source/WinObjEx64/props/propSecurityConsts.h b/Source/WinObjEx64/props/propSecurityConsts.h index 6206f953..6bfbed63 100644 --- a/Source/WinObjEx64/props/propSecurityConsts.h +++ b/Source/WinObjEx64/props/propSecurityConsts.h @@ -1,12 +1,12 @@ /******************************************************************************* * -* (C) COPYRIGHT AUTHORS, 2015 - 2020 +* (C) COPYRIGHT AUTHORS, 2015 - 2022 * * TITLE: PROPSECURITYCONSTS.H * -* VERSION: 1.87 +* VERSION: 1.93 * -* DATE: 26 Nov 2020 +* DATE: 24 Mar 2022 * * Consts header file for Security property sheet. * @@ -159,9 +159,10 @@ static SI_ACCESS SemaphoreAccessValues[MAX_KNOWN_SEMAPHORE_ACCESS_VALUE] = { // //Symlink Access Values // -#define MAX_KNOWN_SYMLINK_ACCESS_VALUE 1 +#define MAX_KNOWN_SYMLINK_ACCESS_VALUE 2 static SI_ACCESS SymlinkAccessValues[MAX_KNOWN_SYMLINK_ACCESS_VALUE] = { - { &GUID_NULL, SYMBOLIC_LINK_QUERY, L"Link Query", SI_ACCESS_DEFAULT_FLAGS } + { &GUID_NULL, SYMBOLIC_LINK_QUERY, L"Link Query", SI_ACCESS_DEFAULT_FLAGS }, + { &GUID_NULL, SYMBOLIC_LINK_SET, L"Link Set", SI_ACCESS_DEFAULT_FLAGS } }; // diff --git a/Source/WinObjEx64/props/propTypeConsts.h b/Source/WinObjEx64/props/propTypeConsts.h index 0cef5fa5..062768e5 100644 --- a/Source/WinObjEx64/props/propTypeConsts.h +++ b/Source/WinObjEx64/props/propTypeConsts.h @@ -1,12 +1,12 @@ /******************************************************************************* * -* (C) COPYRIGHT AUTHORS, 2015 - 2020 +* (C) COPYRIGHT AUTHORS, 2015 - 2022 * * TITLE: PROPTYPECONSTS.H * -* VERSION: 1.86 +* VERSION: 1.93 * -* DATE: 17 May 2020 +* DATE: 24 Mar 2022 * * Consts header file for Type property sheet. * @@ -160,9 +160,10 @@ static VALUE_DESC a_SemaphoreProp[MAX_KNOWN_SEMAPHORE_ATTRIBUTES] = { }; //Known SymLink Access Rights -#define MAX_KNOWN_SYMLINK_ATTRIBUTES 1 +#define MAX_KNOWN_SYMLINK_ATTRIBUTES 2 static VALUE_DESC a_SymLinkProp[MAX_KNOWN_SYMLINK_ATTRIBUTES] = { - { L"SYMBOLIC_LINK_QUERY", SYMBOLIC_LINK_QUERY } + { L"SYMBOLIC_LINK_QUERY", SYMBOLIC_LINK_QUERY }, + { L"SYMBOLIC_LINK_SET", SYMBOLIC_LINK_SET } }; //Known Type Access Rights diff --git a/Source/WinObjEx64/sup.c b/Source/WinObjEx64/sup.c index a1456b49..44e9c6d0 100644 --- a/Source/WinObjEx64/sup.c +++ b/Source/WinObjEx64/sup.c @@ -1,12 +1,12 @@ /******************************************************************************* * -* (C) COPYRIGHT AUTHORS, 2015 - 2021 +* (C) COPYRIGHT AUTHORS, 2015 - 2022 * * TITLE: SUP.C * -* VERSION: 1.92 +* VERSION: 1.93 * -* DATE: 07 Dec 2021 +* DATE: 13 May 2022 * * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF * ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED @@ -1520,7 +1520,7 @@ WOBJ_OBJECT_TYPE supObjectListGetObjectType( VOID supSetGotoLinkTargetToolButtonState( _In_ HWND hwnd, _In_opt_ HWND hwndlv, - _In_opt_ INT iItem, + _In_ INT iItem, _In_ BOOL bForce, _In_ BOOL bForceEnable ) @@ -1553,7 +1553,7 @@ BOOL supTreeListAddCopyValueItem( _In_ HMENU hMenu, _In_ HWND hwndTreeList, _In_ UINT uId, - _In_opt_ UINT uPos, + _In_ UINT uPos, _In_ LPARAM lParam, _In_ INT *pSubItemHit ) @@ -1609,7 +1609,7 @@ BOOL supListViewAddCopyValueItem( _In_ HMENU hMenu, _In_ HWND hwndLv, _In_ UINT uId, - _In_opt_ UINT uPos, + _In_ UINT uPos, _In_ POINT* lpPoint, _Out_ INT* pItemHit, _Out_ INT* pColumnHit @@ -8095,8 +8095,10 @@ LPWSTR supPrintHash( lpText[c * 2] = nibbletoh(x >> 4, UpcaseHex); lpText[c * 2 + 1] = nibbletoh(x & 15, UpcaseHex); } - +#pragma warning(push) +#pragma warning(disable: 6305) lpText[Length * 2] = 0; +#pragma warning(pop) } return lpText; @@ -8498,3 +8500,501 @@ BOOLEAN supIsValidImage( return FALSE; } } + +/* +* supxCreateDriverEntry +* +* Purpose: +* +* Creating registry entry for driver. +* +*/ +NTSTATUS supxCreateDriverEntry( + _In_opt_ LPCWSTR DriverPath, + _In_ LPCWSTR KeyName +) +{ + NTSTATUS status = STATUS_UNSUCCESSFUL; + DWORD dwData, dwResult; + HKEY keyHandle = NULL; + UNICODE_STRING driverImagePath; + + RtlInitEmptyUnicodeString(&driverImagePath, NULL, 0); + + if (DriverPath) { + if (!RtlDosPathNameToNtPathName_U(DriverPath, + &driverImagePath, + NULL, + NULL)) + { + return STATUS_INVALID_PARAMETER_2; + } + } + + if (ERROR_SUCCESS != RegCreateKeyEx(HKEY_LOCAL_MACHINE, + KeyName, + 0, + NULL, + REG_OPTION_NON_VOLATILE, + KEY_ALL_ACCESS, + NULL, + &keyHandle, + NULL)) + { + status = STATUS_ACCESS_DENIED; + goto Cleanup; + } + + dwResult = ERROR_SUCCESS; + + do { + + dwData = SERVICE_ERROR_NORMAL; + dwResult = RegSetValueEx(keyHandle, + TEXT("ErrorControl"), + 0, + REG_DWORD, + (BYTE*)&dwData, + sizeof(dwData)); + if (dwResult != ERROR_SUCCESS) + break; + + dwData = SERVICE_KERNEL_DRIVER; + dwResult = RegSetValueEx(keyHandle, + TEXT("Type"), + 0, + REG_DWORD, + (BYTE*)&dwData, + sizeof(dwData)); + if (dwResult != ERROR_SUCCESS) + break; + + dwData = SERVICE_DEMAND_START; + dwResult = RegSetValueEx(keyHandle, + TEXT("Start"), + 0, + REG_DWORD, + (BYTE*)&dwData, + sizeof(dwData)); + + if (dwResult != ERROR_SUCCESS) + break; + + if (DriverPath) { + dwResult = RegSetValueEx(keyHandle, + TEXT("ImagePath"), + 0, + REG_EXPAND_SZ, + (BYTE*)driverImagePath.Buffer, + (DWORD)driverImagePath.Length + sizeof(UNICODE_NULL)); + } + + } while (FALSE); + + RegCloseKey(keyHandle); + + if (dwResult != ERROR_SUCCESS) { + status = STATUS_ACCESS_DENIED; + } + else + { + status = STATUS_SUCCESS; + } + +Cleanup: + if (DriverPath) { + if (driverImagePath.Buffer) { + RtlFreeUnicodeString(&driverImagePath); + } + } + return status; +} + +/* +* supLoadDriverEx +* +* Purpose: +* +* Install driver and load it. +* +* N.B. +* SE_LOAD_DRIVER_PRIVILEGE is required to be assigned and enabled. +* +*/ +NTSTATUS supLoadDriverEx( + _In_ LPCWSTR DriverName, + _In_ LPCWSTR DriverPath, + _In_ BOOLEAN UnloadPreviousInstance, + _In_opt_ pfnLoadDriverCallback Callback, + _In_opt_ PVOID CallbackParam +) +{ + SIZE_T keyOffset; + NTSTATUS status; + UNICODE_STRING driverServiceName; + + WCHAR szBuffer[MAX_PATH + 1]; + + if (DriverName == NULL) + return STATUS_INVALID_PARAMETER_1; + if (DriverPath == NULL) + return STATUS_INVALID_PARAMETER_2; + + RtlSecureZeroMemory(szBuffer, sizeof(szBuffer)); + + keyOffset = RTL_NUMBER_OF(NT_REG_PREP); + + if (FAILED(RtlStringCchPrintfSecure(szBuffer, MAX_PATH, + DRIVER_REGKEY, + NT_REG_PREP, + DriverName))) + { + return STATUS_INVALID_PARAMETER_1; + } + + status = supxCreateDriverEntry(DriverPath, + &szBuffer[keyOffset]); + + if (!NT_SUCCESS(status)) + return status; + + RtlInitUnicodeString(&driverServiceName, szBuffer); + + if (Callback) { + status = Callback(&driverServiceName, CallbackParam); + if (!NT_SUCCESS(status)) + return status; + } + + if (supEnablePrivilege(SE_LOAD_DRIVER_PRIVILEGE, TRUE)) { + + status = NtLoadDriver(&driverServiceName); + + if (UnloadPreviousInstance) { + if ((status == STATUS_IMAGE_ALREADY_LOADED) || + (status == STATUS_OBJECT_NAME_COLLISION) || + (status == STATUS_OBJECT_NAME_EXISTS)) + { + status = NtUnloadDriver(&driverServiceName); + if (NT_SUCCESS(status)) { + status = NtLoadDriver(&driverServiceName); + } + } + } + else { + if (status == STATUS_OBJECT_NAME_EXISTS) + status = STATUS_SUCCESS; + } + + supEnablePrivilege(SE_LOAD_DRIVER_PRIVILEGE, FALSE); + } + else { + status = STATUS_PRIVILEGE_NOT_HELD; + } + + return status; +} + +/* +* supLoadDriver +* +* Purpose: +* +* Install driver and load it. +* +* N.B. +* SE_LOAD_DRIVER_PRIVILEGE is required to be assigned and enabled. +* +*/ +NTSTATUS supLoadDriver( + _In_ LPCWSTR DriverName, + _In_ LPCWSTR DriverPath, + _In_ BOOLEAN UnloadPreviousInstance +) +{ + return supLoadDriverEx(DriverName, + DriverPath, + UnloadPreviousInstance, + NULL, + NULL); +} + +/* +* supUnloadDriver +* +* Purpose: +* +* Call driver unload and remove corresponding registry key. +* +* N.B. +* SE_LOAD_DRIVER_PRIVILEGE is required to be assigned and enabled. +* +*/ +NTSTATUS supUnloadDriver( + _In_ LPCWSTR DriverName, + _In_ BOOLEAN fRemove +) +{ + NTSTATUS status; + SIZE_T keyOffset; + UNICODE_STRING driverServiceName; + + WCHAR szBuffer[MAX_PATH + 1]; + + RtlSecureZeroMemory(szBuffer, sizeof(szBuffer)); + + if (FAILED(RtlStringCchPrintfSecure(szBuffer, MAX_PATH, + DRIVER_REGKEY, + NT_REG_PREP, + DriverName))) + { + return STATUS_INVALID_PARAMETER_1; + } + + keyOffset = RTL_NUMBER_OF(NT_REG_PREP); + + status = supxCreateDriverEntry(NULL, + &szBuffer[keyOffset]); + + if (!NT_SUCCESS(status)) + return status; + + if (supEnablePrivilege(SE_LOAD_DRIVER_PRIVILEGE, TRUE)) { + + RtlInitUnicodeString(&driverServiceName, szBuffer); + status = NtUnloadDriver(&driverServiceName); + + supEnablePrivilege(SE_LOAD_DRIVER_PRIVILEGE, FALSE); + } + else { + status = STATUS_PRIVILEGE_NOT_HELD; + } + + if (NT_SUCCESS(status)) { + if (fRemove) + supRegDeleteKeyRecursive(HKEY_LOCAL_MACHINE, &szBuffer[keyOffset]); + } + + return status; +} + +/* +* supOpenDriverEx +* +* Purpose: +* +* Open handle for driver. +* +*/ +NTSTATUS supOpenDriverEx( + _In_ LPCWSTR DriverName, + _In_ ACCESS_MASK DesiredAccess, + _Out_opt_ PHANDLE DeviceHandle +) +{ + HANDLE deviceHandle = NULL; + UNICODE_STRING usDeviceLink; + OBJECT_ATTRIBUTES obja; + IO_STATUS_BLOCK iost; + + NTSTATUS ntStatus; + + RtlInitUnicodeString(&usDeviceLink, DriverName); + InitializeObjectAttributes(&obja, &usDeviceLink, OBJ_CASE_INSENSITIVE, NULL, NULL); + + ntStatus = NtCreateFile(&deviceHandle, + DesiredAccess, + &obja, + &iost, + NULL, + 0, + 0, + FILE_OPEN, + 0, + NULL, + 0); + + if (NT_SUCCESS(ntStatus)) { + if (DeviceHandle) + *DeviceHandle = deviceHandle; + } + + return ntStatus; +} + +/* +* supOpenDriver +* +* Purpose: +* +* Open handle for driver through \\DosDevices. +* +*/ +NTSTATUS supOpenDriver( + _In_ LPCWSTR DriverName, + _In_ ACCESS_MASK DesiredAccess, + _Out_ PHANDLE DeviceHandle +) +{ + NTSTATUS status = STATUS_UNSUCCESSFUL; + WCHAR szDeviceLink[MAX_PATH + 1]; + + // assume failure + if (DeviceHandle) + *DeviceHandle = NULL; + else + return STATUS_INVALID_PARAMETER_2; + + if (DriverName) { + + RtlSecureZeroMemory(szDeviceLink, sizeof(szDeviceLink)); + + if (FAILED(RtlStringCchPrintfSecure(szDeviceLink, + MAX_PATH, + TEXT("\\DosDevices\\%wS"), + DriverName))) + { + return STATUS_INVALID_PARAMETER_1; + } + + status = supOpenDriverEx(szDeviceLink, + DesiredAccess, + DeviceHandle); + + if (status == STATUS_OBJECT_NAME_NOT_FOUND || + status == STATUS_NO_SUCH_DEVICE) + { + + // + // Check the case when no symlink available. + // + + RtlSecureZeroMemory(szDeviceLink, sizeof(szDeviceLink)); + + if (FAILED(RtlStringCchPrintfSecure(szDeviceLink, + MAX_PATH, + TEXT("\\Device\\%wS"), + DriverName))) + { + return STATUS_INVALID_PARAMETER_1; + } + + status = supOpenDriverEx(szDeviceLink, + DesiredAccess, + DeviceHandle); + + } + + } + else { + status = STATUS_INVALID_PARAMETER_1; + } + + return status; +} + +/* +* supDeleteFileWithWait +* +* Purpose: +* +* Removes file from disk. +* +*/ +BOOL supDeleteFileWithWait( + _In_ ULONG WaitMilliseconds, + _In_ ULONG NumberOfAttempts, + _In_ LPCWSTR lpFileName +) +{ + ULONG retryCount = NumberOfAttempts; + + do { + + Sleep(WaitMilliseconds); + if (DeleteFile(lpFileName)) { + return TRUE; + } + + retryCount--; + + } while (retryCount); + + return FALSE; +} + +/* +* supCallDriver +* +* Purpose: +* +* Call driver. +* +*/ +NTSTATUS supCallDriver( + _In_ HANDLE DeviceHandle, + _In_ ULONG IoControlCode, + _In_opt_ PVOID InputBuffer, + _In_ ULONG InputBufferLength, + _In_opt_ PVOID OutputBuffer, + _In_ ULONG OutputBufferLength) +{ + IO_STATUS_BLOCK ioStatus; + + return NtDeviceIoControlFile(DeviceHandle, + NULL, + NULL, + NULL, + &ioStatus, + IoControlCode, + InputBuffer, + InputBufferLength, + OutputBuffer, + OutputBufferLength); +} + +/* +* supIsLongTermServicingWindows +* +* Purpose: +* +* Attempt to detect LTSC/LTSB product type. +* +*/ +BOOLEAN supIsLongTermServicingWindows( + VOID +) +{ + NTSTATUS ntStatus; + ULONG dataLicense = 0, dataSize = 0, dataType = 0, i; + + UNICODE_STRING usLicenseValue = RTL_CONSTANT_STRING(L"Kernel-ProductInfo"); + + DWORD suiteType[] = { + PRODUCT_ENTERPRISE_S, // LTSB/C + PRODUCT_ENTERPRISE_S_N, // LTSB/C N + PRODUCT_ENTERPRISE_S_EVALUATION, // LTSB/C Evaluation + PRODUCT_ENTERPRISE_S_N_EVALUATION, // LTSB/C N Evaluation + PRODUCT_IOTENTERPRISES // IoT Enterprise LTSC + }; + + ntStatus = NtQueryLicenseValue( + &usLicenseValue, + &dataType, + (PVOID)&dataLicense, + sizeof(DWORD), + &dataSize); + + if (NT_SUCCESS(ntStatus) && + dataType == REG_DWORD && + dataSize == sizeof(DWORD)) + { + for (i = 0; i < RTL_NUMBER_OF(suiteType); i++) { + if (dataLicense == suiteType[i]) { + return TRUE; + } + } + } + + return FALSE; +} diff --git a/Source/WinObjEx64/sup.h b/Source/WinObjEx64/sup.h index bf6491de..681a6bfc 100644 --- a/Source/WinObjEx64/sup.h +++ b/Source/WinObjEx64/sup.h @@ -1,12 +1,12 @@ /******************************************************************************* * -* (C) COPYRIGHT AUTHORS, 2015 - 2021 +* (C) COPYRIGHT AUTHORS, 2015 - 2022 * * TITLE: SUP.H * -* VERSION: 1.92 +* VERSION: 1.93 * -* DATE: 03 Dec 2021 +* DATE: 13 May 2022 * * Common header file for the program support routines. * @@ -111,6 +111,11 @@ typedef NTSTATUS(NTAPI* PNTOBJECTOPENPROCEDURE)( _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes); +typedef NTSTATUS(CALLBACK* pfnLoadDriverCallback)( + _In_ PUNICODE_STRING RegistryPath, + _In_opt_ PVOID Param + ); + typedef struct _PROCESS_MITIGATION_POLICIES_ALL { PROCESS_MITIGATION_DEP_POLICY DEPPolicy; PROCESS_MITIGATION_ASLR_POLICY ASLRPolicy; @@ -248,6 +253,8 @@ typedef struct _FILE_VIEW_INFO { #define supOpenThread ntsupOpenThread #define supCICustomKernelSignersAllowed ntsupCICustomKernelSignersAllowed #define supPrivilegeEnabled ntsupPrivilegeEnabled +#define supIsObjectExists ntsupIsObjectExists +#define supIsKdEnabled ntsupIsKdEnabled #define supListViewEnableRedraw(ListView, fEnable) SendMessage(ListView, WM_SETREDRAW, (WPARAM)fEnable, (LPARAM)0) ULONG supConvertFromPteProtectionMask( @@ -363,7 +370,7 @@ BOOL supTreeListAddCopyValueItem( _In_ HMENU hMenu, _In_ HWND hwndTreeList, _In_ UINT uId, - _In_opt_ UINT uPos, + _In_ UINT uPos, _In_ LPARAM lParam, _In_ INT* pSubItemHit); @@ -371,7 +378,7 @@ BOOL supListViewAddCopyValueItem( _In_ HMENU hMenu, _In_ HWND hwndLv, _In_ UINT uId, - _In_opt_ UINT uPos, + _In_ UINT uPos, _In_ POINT* lpPoint, _Out_ INT* pItemHit, _Out_ INT* pColumnHit); @@ -384,7 +391,7 @@ VOID supSetMenuIcon( VOID supSetGotoLinkTargetToolButtonState( _In_ HWND hwnd, _In_opt_ HWND hwndlv, - _In_opt_ INT iItem, + _In_ INT iItem, _In_ BOOL bForce, _In_ BOOL bForceEnable); @@ -929,3 +936,45 @@ VOID supDestroyFileViewInfo( BOOLEAN supIsValidImage( _In_ PFILE_VIEW_INFO ViewInformation); + +NTSTATUS supLoadDriverEx( + _In_ LPCWSTR DriverName, + _In_ LPCWSTR DriverPath, + _In_ BOOLEAN UnloadPreviousInstance, + _In_opt_ pfnLoadDriverCallback Callback, + _In_opt_ PVOID CallbackParam); + +NTSTATUS supLoadDriver( + _In_ LPCWSTR DriverName, + _In_ LPCWSTR DriverPath, + _In_ BOOLEAN UnloadPreviousInstance); + +NTSTATUS supUnloadDriver( + _In_ LPCWSTR DriverName, + _In_ BOOLEAN fRemove); + +NTSTATUS supOpenDriverEx( + _In_ LPCWSTR DriverName, + _In_ ACCESS_MASK DesiredAccess, + _Out_opt_ PHANDLE DeviceHandle); + +NTSTATUS supOpenDriver( + _In_ LPCWSTR DriverName, + _In_ ACCESS_MASK DesiredAccess, + _Out_ PHANDLE DeviceHandle); + +BOOL supDeleteFileWithWait( + _In_ ULONG WaitMilliseconds, + _In_ ULONG NumberOfAttempts, + _In_ LPCWSTR lpFileName); + +NTSTATUS supCallDriver( + _In_ HANDLE DeviceHandle, + _In_ ULONG IoControlCode, + _In_opt_ PVOID InputBuffer, + _In_ ULONG InputBufferLength, + _In_opt_ PVOID OutputBuffer, + _In_ ULONG OutputBufferLength); + +BOOLEAN supIsLongTermServicingWindows( + VOID); diff --git a/Source/WinObjEx64/symparser.c b/Source/WinObjEx64/symparser.c index 0132865a..6a0f8fb7 100644 --- a/Source/WinObjEx64/symparser.c +++ b/Source/WinObjEx64/symparser.c @@ -161,8 +161,8 @@ BOOL SymParserRegisterCallback( BOOL SymParserLoadModule( _In_ PSYMCONTEXT Context, _In_ LPCWSTR lpModulePath, - _In_opt_ DWORD64 BaseOfDll, - _In_opt_ DWORD SizeOfDll + _In_ DWORD64 BaseOfDll, + _In_ DWORD SizeOfDll ) { DWORD64 moduleBase; @@ -1436,14 +1436,14 @@ VOID SymParserDestroy( /// Temp directory, maximum length is MAX_PATH /// TRUE on success BOOL SymGlobalsInit( - _In_opt_ DWORD SymOptions, + _In_ DWORD SymOptions, _In_opt_ HANDLE ProcessHandle, _In_opt_ LPCWSTR lpDbgHelpPath, _In_opt_ LPCWSTR lpSymbolPath, _In_ LPCWSTR lpSystemPath, _In_ LPCWSTR lpTempPath, _In_opt_ PSYMBOL_REGISTERED_CALLBACK64 CallbackFunction, - _In_opt_ ULONG64 UserContext + _In_ ULONG64 UserContext ) { BOOL bResult = FALSE; diff --git a/Source/WinObjEx64/symparser.h b/Source/WinObjEx64/symparser.h index 67fa0f08..b2212cb9 100644 --- a/Source/WinObjEx64/symparser.h +++ b/Source/WinObjEx64/symparser.h @@ -1,12 +1,12 @@ /******************************************************************************* * -* (C) COPYRIGHT H.E., 2015 - 2021 +* (C) COPYRIGHT H.E., 2015 - 2022 * * TITLE: SYMPARSER.H * -* VERSION: 1.16 +* VERSION: 1.17 * -* DATE: 29 June 2021 +* DATE: 13 May 2022 * * Header file of DbgHelp wrapper for symbols parser support. * @@ -115,7 +115,7 @@ typedef DWORD64(WINAPI* pfnSymLoadModuleExW)( _In_ DWORD64 BaseOfDll, _In_ DWORD DllSize, _In_opt_ PMODLOAD_DATA Data, - _In_opt_ DWORD Flags); + _In_ DWORD Flags); typedef BOOL(WINAPI* pfnSymGetTypeInfo)( _In_ HANDLE hProcess, @@ -174,8 +174,8 @@ typedef BOOL(WINAPI* SPRegisterCallback)( typedef BOOL(WINAPI* SPLoadModule)( _In_ PSYMCONTEXT Context, _In_ LPCWSTR lpModulePath, - _In_opt_ DWORD64 BaseOfDll, - _In_opt_ DWORD SizeOfDll); + _In_ DWORD64 BaseOfDll, + _In_ DWORD SizeOfDll); typedef BOOL(WINAPI* SPUnloadModule)( _In_ PSYMCONTEXT Context); @@ -318,14 +318,14 @@ typedef struct _SYMCONTEXT { } SYMCONTEXT, * PSYMCONTEXT; BOOL SymGlobalsInit( - _In_opt_ DWORD SymOptions, + _In_ DWORD SymOptions, _In_opt_ HANDLE ProcessHandle, _In_opt_ LPCWSTR lpDbgHelpPath, _In_opt_ LPCWSTR lpSymbolPath, _In_ LPCWSTR lpSystemPath, _In_ LPCWSTR lpTempPath, _In_opt_ PSYMBOL_REGISTERED_CALLBACK64 CallbackFunction, - _In_opt_ ULONG64 UserContext); + _In_ ULONG64 UserContext); BOOL SymGlobalsFree(); diff --git a/Source/WinObjEx64/tests/testunit.c b/Source/WinObjEx64/tests/testunit.c index 307a99f8..ac4c5211 100644 --- a/Source/WinObjEx64/tests/testunit.c +++ b/Source/WinObjEx64/tests/testunit.c @@ -1,12 +1,12 @@ /******************************************************************************* * -* (C) COPYRIGHT AUTHORS, 2015 - 2021 +* (C) COPYRIGHT AUTHORS, 2015 - 2022 * * TITLE: TESTUNIT.C * -* VERSION: 1.92 +* VERSION: 1.93 * -* DATE: 13 Nov 2021 +* DATE: 14 May 2022 * * Test code used while debug. * @@ -1119,10 +1119,60 @@ VOID TestCall() } +VOID TestObCallback() +{ + struct { + ULONG Value1; + ULONG Value2; + HANDLE Pid1; + HANDLE Pid2; + BYTE Spare[392]; + } request; + + NTSTATUS ntStatus; + DWORD procId1 = 3448; + + HANDLE deviceHandle = CreateFile(TEXT("\\\\.\\ImfObCallback"), + GENERIC_READ | GENERIC_WRITE, + 0, + NULL, + OPEN_EXISTING, + 0, + NULL); + + if (deviceHandle != INVALID_HANDLE_VALUE) { + + ntStatus = supCallDriver(deviceHandle, + 0x22200C, + NULL, + 0, + NULL, + 0); + + if (NT_SUCCESS(ntStatus)) { + + RtlSecureZeroMemory(&request, sizeof(request)); + request.Pid1 = UlongToHandle(procId1); + request.Pid2 = NULL; + + ntStatus = supCallDriver(deviceHandle, + 0x222008, + &request, + sizeof(request), + NULL, + 0); + + } + + CloseHandle(deviceHandle); + } +} + VOID TestStart( VOID ) { + TestObCallback(); TestCall(); //TestSectionControlArea(); //TestSymbols(); diff --git a/Source/WinObjEx64/ui.h b/Source/WinObjEx64/ui.h index 9ad45f49..cc20670f 100644 --- a/Source/WinObjEx64/ui.h +++ b/Source/WinObjEx64/ui.h @@ -1,12 +1,12 @@ /******************************************************************************* * -* (C) COPYRIGHT AUTHORS, 2015 - 2021 +* (C) COPYRIGHT AUTHORS, 2015 - 2022 * * TITLE: UI.H * -* VERSION: 1.92 +* VERSION: 1.93 * -* DATE: 29 Nov 2021 +* DATE: 24 Mar 2022 * * Common header file for the user interface. * @@ -49,8 +49,8 @@ typedef HWND(WINAPI *pfnHtmlHelpW)( #define PROGRAM_MAJOR_VERSION 1 #define PROGRAM_MINOR_VERSION 9 -#define PROGRAM_REVISION_NUMBER 2 -#define PROGRAM_BUILD_NUMBER 2112 +#define PROGRAM_REVISION_NUMBER 3 +#define PROGRAM_BUILD_NUMBER 2205 #ifdef _USE_OWN_DRIVER #define PROGRAM_NAME L"Windows Object Explorer 64-bit (Non-public version)" diff --git a/Source/WinObjEx64/utils/GenAsIo2Unlock.exe b/Source/WinObjEx64/utils/GenAsIo2Unlock.exe new file mode 100644 index 0000000000000000000000000000000000000000..0bbf9a26067210f15333353fefb68bd9d7b66474 GIT binary patch literal 127488 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