~id~89;~jO{_sp2kwjK8Ndm^Gl4lLD**lx
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
Y-(4rUjuG`D7Km6NVu6SS!f%290}c6Fp#T5?
delta 13195
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
diff --git a/cs2_patch/BuildIn.cpp b/cs2_patch/BuildIn.cpp
index 499a055..a1916de 100644
--- a/cs2_patch/BuildIn.cpp
+++ b/cs2_patch/BuildIn.cpp
@@ -198,11 +198,11 @@ DWORD WINAPI fGetGlyphOutlineW(
if(lstrlenW(ns_str)>=5999)
ns_str[0] = L'\0';
lstrcatW(ns_str, loca.c_str());
- return pGetGlyphOutlineW(hdc, L'A', fuFormat, lpgm, cjBuffer, pvBuffer, lpmat2);
+ return pGetGlyphOutlineW(hdc, L' ', fuFormat, lpgm, cjBuffer, pvBuffer, lpmat2);
}
BOOL WINAPI fTextOutW(_In_ HDC hdc, _In_ int x, _In_ int y, _In_reads_(c) LPCWSTR lpString, _In_ int c)
{
- return pTextOutW(hdc, x, y, L"A", c);
+ return pTextOutW(hdc, x, y, L"\0", c);
}
void start()
{
diff --git a/cs2_patch/Data.cpp b/cs2_patch/Data.cpp
index 28d9825..6fe0fae 100644
--- a/cs2_patch/Data.cpp
+++ b/cs2_patch/Data.cpp
@@ -7,117 +7,221 @@ extern HMODULE hMod;
extern "C" extern DLLAPI wchar_t ms_str[3096];
extern "C" extern DLLAPI int nID;
extern "C" extern DLLAPI DWORD tPid;
-DWORD CreateDataExportEx(LPCWSTR data)
+extern "C" extern DLLAPI bool blockRestoreSrc;
+struct ExportParam {
+ WCHAR data[1024];
+ WCHAR src[1024];
+};
+DWORD CreateDataExportEx(LPVOID data)
{
- // MessageBoxW(0, data,L"",0);
- WCHAR sjp[3096];
- WCHAR scn[3096];
- int lasger = GEtLargestID();
- if (nID == 0) {
- MessageBox(0, L"the ID value seems not available,therefore this action has been refused", L"error", MB_ICONERROR);
- saveProcess = 1.0;
- return 1;
- }
- if (nID - lasger > 2) {
- MessageBox(0, L"the ID value seems not available,therefore this action has been refused", L"error", MB_ICONERROR);
- saveProcess = 1.0;
- return 1;
- }
- if (!GetDataByID(nID - 1, sjp, scn)) {
- CreateDataByID(nID - 1, ms_str, 2 * (lstrlenW(ms_str) + 1), data, 2 * (lstrlenW(data) + 1));
- WCHAR abv[16];
- _itow_s(nID - 1, abv, 10);
- wstring str;
- str += L"Apply ID:";
- str += abv;
- str += L"\n";
- str += ms_str;
- str += L"->";
- str += data;
- MessageBoxW(NULL, str.c_str(), L"successed to add rule", MB_ICONINFORMATION);
- saveProcess = 1.0;
- return 1;
- }
- else {
- wstring nString = L"This rule is already exist,do you want still to replace it?(according to your PC,it may take you a short time)\n";
- WCHAR abv[16];
- _itow_s(nID - 1, abv, 10);
- nString += L"ID:";
- nString += abv;
- nString += L"\n";
- nString += sjp;
- saveProcess = 0.0;
- int result = MessageBoxW(NULL, nString.c_str(), L"information", MB_ICONINFORMATION | MB_OKCANCEL);
- if (result != IDOK) {
+
+ ExportParam* bData = (ExportParam*)data;
+ if (!blockRestoreSrc) {
+ // MessageBoxW(0, data,L"",0);
+ WCHAR sjp[3096];
+ WCHAR scn[3096];
+ int lasger = GEtLargestID();
+ if (nID == 0) {
+ MessageBox(0, L"the ID value seems not available,therefore this action has been refused", L"error", MB_ICONERROR);
saveProcess = 1.0;
return 1;
}
- int p = 0;
- MicroData *_Index=new MicroData(L"~Index.ax", sizeof(IndexData));
- MicroBinary* _Data = new MicroBinary(L"~Data.ax");
- IndexData createData;
- while (GetDataByID(p, sjp, scn)) {
- if (p == (nID - 1)) {
- createData.Id = p;
- createData.JpLength = 2 * (lstrlenW(sjp) + 1);
- createData.CnLength = 2 * (lstrlenW(data) + 1);
- createData.JpBass = _Data->Size();
- _Data->Push(sjp, 2 * (lstrlenW(sjp) + 1));
- createData.CnBass = _Data->Size();
- _Data->Push(data, 2 * (lstrlenW(data) + 1));
- _Index->Push(&createData);
- _Index->Save();
- _Data->Save();
- }
- else
- {
- createData.Id = p;
- createData.JpLength = 2 * (lstrlenW(sjp) + 1);
- createData.CnLength = 2 * (lstrlenW(scn) + 1);
- createData.JpBass = _Data->Size();
- _Data->Push(sjp, 2 * (lstrlenW(sjp) + 1));
- createData.CnBass = _Data->Size();
- _Data->Push(scn, 2 * (lstrlenW(scn) + 1));
- _Index->Push(&createData);
- _Index->Save();
- _Data->Save();
- }
- saveProcess = (double)p / (double)(lasger);
- p++;
+ if (nID - lasger > 2) {
+ MessageBox(0, L"the ID value seems not available,therefore this action has been refused", L"error", MB_ICONERROR);
+ saveProcess = 1.0;
+ return 1;
+ }
+ if (!GetDataByID(nID - 1, sjp, scn)) {
+ CreateDataByID(nID - 1, bData->src, 2 * (lstrlenW(bData->src) + 1), bData->data, 2 * (lstrlenW(bData->data) + 1));
+ WCHAR abv[16];
+ _itow_s(nID - 1, abv, 10);
+ wstring str;
+ str += L"Apply ID:";
+ str += abv;
+ str += L"\n";
+ str += bData->src;
+ str += L"->";
+ str += bData->data;
+ MessageBoxW(NULL, str.c_str(), L"successed to add rule", MB_ICONINFORMATION);
+ saveProcess = 1.0;
+ return 1;
+ }
+ else {
+ wstring nString = L"This rule is already exist,do you want still to replace it?(according to your PC,it may take you a short time)\n";
+ WCHAR abv[16];
+ _itow_s(nID - 1, abv, 10);
+ nString += L"ID:";
+ nString += abv;
+ nString += L"\n";
+ nString += sjp;
+ saveProcess = 0.0;
+ int result = MessageBoxW(NULL, nString.c_str(), L"information", MB_ICONINFORMATION | MB_OKCANCEL);
+ if (result != IDOK) {
+ saveProcess = 1.0;
+ return 1;
+ }
+ int p = 0;
+ MicroData* _Index = new MicroData(L"~Index.ax", sizeof(IndexData));
+ MicroBinary* _Data = new MicroBinary(L"~Data.ax");
+ IndexData createData;
+ while (GetDataByID(p, sjp, scn)) {
+ if (p == (nID - 1)) {
+ createData.Id = p;
+ createData.JpLength = 2 * (lstrlenW(sjp) + 1);
+ createData.CnLength = 2 * (lstrlenW(bData->data) + 1);
+ createData.JpBass = _Data->Size();
+ _Data->Push(sjp, 2 * (lstrlenW(sjp) + 1));
+ createData.CnBass = _Data->Size();
+ _Data->Push(bData->data, 2 * (lstrlenW(bData->data) + 1));
+ _Index->Push(&createData);
+ _Index->Save();
+ _Data->Save();
+ }
+ else
+ {
+ createData.Id = p;
+ createData.JpLength = 2 * (lstrlenW(sjp) + 1);
+ createData.CnLength = 2 * (lstrlenW(scn) + 1);
+ createData.JpBass = _Data->Size();
+ _Data->Push(sjp, 2 * (lstrlenW(sjp) + 1));
+ createData.CnBass = _Data->Size();
+ _Data->Push(scn, 2 * (lstrlenW(scn) + 1));
+ _Index->Push(&createData);
+ _Index->Save();
+ _Data->Save();
+ }
+ saveProcess = (double)p / (double)(lasger);
+ p++;
+ }
+
+ delete _Index;
+ delete _Data;
+ delete Index;
+ delete ::Data;
+ // saveProcess = 0.0;
+ saveProcess = 1;
+ DeleteFile(L"Data.ax");
+ DeleteFile(L"Index.ax");
+ rename("~Data.ax", "Data.ax");
+ rename("~Index.ax", "Index.ax");
+ Index = new MicroData(L"Index.ax", sizeof(IndexData));
+ ::Data = new MicroBinary(L"Data.ax");
+ Index->Load();
+ ::Data->Load();
+ return 1;
+ }
+ }
+ else {
+ WCHAR sjp[3096];
+ WCHAR scn[3096];
+ int lasger = GEtLargestID();
+ int jkID;
+
+ if (!GetDataByJP(&jkID, bData->src, scn)) {
+ CreateDataByID(lasger + 1, bData->src, 2 * (lstrlenW(bData->src) + 1), bData->data, 2 * (lstrlenW(bData->data) + 1));
+ WCHAR abv[16];
+ _itow_s(lasger + 1, abv, 10);
+ wstring str;
+ str += L"Apply ID:";
+ str += abv;
+ str += L"\n";
+ str += bData->src;
+ str += L"->";
+ str += bData->data;
+ MessageBoxW(NULL, str.c_str(), L"successed to add rule", MB_ICONINFORMATION);
+ saveProcess = 1.0;
+ return 1;
+ }
+ else {
+ wstring nString = L"This rule is already exist,do you want still to replace it?(according to your PC,it may take you a short time)\n";
+ WCHAR abv[16];
+ _itow_s(jkID, abv, 10);
+ nString += L"ID:";
+ nString += abv;
+ nString += L"\n";
+ nString += bData->src;
+
+ int result = MessageBoxW(NULL, nString.c_str(), L"information", MB_ICONINFORMATION | MB_OKCANCEL);
+ if (result != IDOK) {
+ saveProcess = 1.0;
+ return 1;
+ }
+
+ int p = 0;
+ MicroData* _Index = new MicroData(L"~Index.ax", sizeof(IndexData));
+ MicroBinary* _Data = new MicroBinary(L"~Data.ax");
+ IndexData createData;
+ while (GetDataByID(p, sjp, scn)) {
+ if (p == jkID) {
+ createData.Id = p;
+ createData.JpLength = 2 * (lstrlenW(sjp) + 1);
+ createData.CnLength = 2 * (lstrlenW(bData->data) + 1);
+ createData.JpBass = _Data->Size();
+ _Data->Push(sjp, 2 * (lstrlenW(sjp) + 1));
+ createData.CnBass = _Data->Size();
+ _Data->Push(bData->data, 2 * (lstrlenW(bData->data) + 1));
+ _Index->Push(&createData);
+ _Index->Save();
+ _Data->Save();
+ }
+ else
+ {
+ createData.Id = p;
+ createData.JpLength = 2 * (lstrlenW(sjp) + 1);
+ createData.CnLength = 2 * (lstrlenW(scn) + 1);
+ createData.JpBass = _Data->Size();
+ _Data->Push(sjp, 2 * (lstrlenW(sjp) + 1));
+ createData.CnBass = _Data->Size();
+ _Data->Push(scn, 2 * (lstrlenW(scn) + 1));
+ _Index->Push(&createData);
+ _Index->Save();
+ _Data->Save();
+ }
+ saveProcess = (double)p / (double)(lasger);
+ p++;
+ }
+
+ delete _Index;
+ delete _Data;
+ delete Index;
+ delete ::Data;
+ // saveProcess = 0.0;
+ saveProcess = 1;
+ DeleteFile(L"Data.ax");
+ DeleteFile(L"Index.ax");
+ rename("~Data.ax", "Data.ax");
+ rename("~Index.ax", "Index.ax");
+ Index = new MicroData(L"Index.ax", sizeof(IndexData));
+ ::Data = new MicroBinary(L"Data.ax");
+ Index->Load();
+ ::Data->Load();
+ return 1;
}
-
- delete _Index;
- delete _Data;
- delete Index;
- delete Data;
- // saveProcess = 0.0;
- saveProcess = 1;
- DeleteFile(L"Data.ax");
- DeleteFile(L"Index.ax");
- rename("~Data.ax", "Data.ax");
- rename("~Index.ax", "Index.ax");
- Index = new MicroData(L"Index.ax", sizeof(IndexData));
- Data = new MicroBinary(L"Data.ax");
- Index->Load();
- Data->Load();
- return 1;
}
}
-void CreateDataExport(WCHAR data[])
+void CreateDataExport(WCHAR src[],WCHAR data[])
{
+ ExportParam alc;
+ lstrcpyW(alc.data, data);
+ lstrcpyW(alc.src, src);
+
DWORD dwOld;
HANDLE hTr = OpenProcess(PROCESS_ALL_ACCESS, FALSE, tPid);
- if (!hTr)
- MessageBoxA(0,"","",0);
- LPWSTR PszLibFileRemote = (LPWSTR)VirtualAllocEx(hTr, NULL, 2*(lstrlenW(data)+1), MEM_COMMIT, PAGE_READWRITE);
- if (!PszLibFileRemote)
- MessageBoxA(0, "", "", 0);
- WriteProcessMemory(hTr, PszLibFileRemote, data, 2 * (lstrlenW(data) + 1), &dwOld);
+
+
+
+ BYTE* PszLibFileRemote = (PBYTE)VirtualAllocEx(hTr, NULL, sizeof(ExportParam), MEM_COMMIT, PAGE_READWRITE);
+
+
+ WriteProcessMemory(hTr, PszLibFileRemote, &alc, sizeof(ExportParam), &dwOld);
+
HANDLE hHookStart = CreateRemoteThread(hTr, NULL, 0, (LPTHREAD_START_ROUTINE)
::GetProcAddress(hMod, "CreateDataExportEx"), PszLibFileRemote, 0, NULL);
if (!hHookStart)
MessageBoxA(0, "", "", 0);
WaitForSingleObject(hHookStart, INFINITE);
+ VirtualFreeEx(hTr, PszLibFileRemote, sizeof(ExportParam), MEM_RELEASE);
+ CloseHandle(hTr);
}
BOOL CreateDataByID(int ID, LPCWSTR jpBuff, int ljp, LPCWSTR cnBuffer, int lcn)
{
@@ -156,6 +260,7 @@ BOOL GetDataByJP(int* ID, LPCWSTR jpBuff, LPWSTR cnBuffer)
if ((*Index)++)
continue;
else {
+ *ID = index.Id;
(*Data) = 0;
(*Index) = 0;
return 0;
diff --git a/cs2_patch/Data.h b/cs2_patch/Data.h
index 1dd3a53..5be88da 100644
--- a/cs2_patch/Data.h
+++ b/cs2_patch/Data.h
@@ -1,9 +1,9 @@
#pragma once
#include
#define DLLAPI __declspec(dllexport)
-extern "C" DLLAPI void CreateDataExport(WCHAR data[]);
+extern "C" DLLAPI void CreateDataExport(WCHAR scr[],WCHAR data[]);
BOOL CreateDataByID(int ID, LPCWSTR jpBuff, int ljp, LPCWSTR cnBuffer, int lcn);
BOOL GetDataByJP(int* ID, LPCWSTR jpBuff, LPWSTR cnBuffer);
BOOL GetDataByID(int ID, LPWSTR jpBuff, LPWSTR cnBuffer);
int GEtLargestID();
-extern "C" DLLAPI DWORD CreateDataExportEx(LPCWSTR path);
\ No newline at end of file
+extern "C" DLLAPI DWORD CreateDataExportEx(LPVOID path);
\ No newline at end of file
diff --git a/cs2_patch/Release/BuildIn.obj b/cs2_patch/Release/BuildIn.obj
index 1f8f20ce047765f490366a55ad86835082e738c8..51487579ff28a040a722f294b9e68c87db37d531 100644
GIT binary patch
delta 58351
zcmbrn2Y6J)_XfOobMK}>NCKo1QXm@^*c575T0$VSKq#U2CcTKDbV4y8f`C^!2+|P+
zlwwp|!~%9yiWL!5q<0VtsKEE0nY(*8A^g7o_k8*=d*`%y&zUoG=guv;exl0nC#pCs
zmizY=OP=zBsFIUS0kDTS@k=2fC#CTPl|Gw=getxns04aQXAKl;g|y
zrzp=aznG$==wV8VvZA<=GC~QByc=8dm2gn%CO;Z}^
zuIO~7kva=1>oiuF9r0PRQS}ZyFEn8Xm
zzrd0D&MJ}7Bbb}hrJ#DxoNku5me~c_k~>`g1>8qWZjLW^m|h_+GJ2?&+p>i25WP9L
zgH3J;-9h^Jxag392Dd{tx2(?qDbKfs{`$Ld(fYo)@*%x_$$j;kanVX2J-BML9#pk_
zNu6GL^QzJHdwMK)g5?s*Jq%8F_BPwsYQab9>y1c9G(=)r)1bIl;ME`e~9P+XLbk`(Mc63ctKGKhL9nrKE({oW+
zTk}y{E{eH&f{%XXqu)^Yo#vynT%6hO!2JZ~4$Nj~esz%S)_N$^27J^=pV%|cQI;UfC@ong7lmINK5DO@
z@7XSfrLDp&TNK8uYz(R1zE|1oM$B%b@9fn(v>ofT=VCaU99bOQJ6Z{t$O0j4f7BCt
zN9djU{HLrf?$Gy3tL-S$kLmFPbbs4f7MZDc9GI^M3~Y|U+h*YNimmwPf!Wq_napf1
zBsBe*!EN-%hGYkf74wZIX48o+J_4r5Zdcv1Y^}l3Q$&rHZL=uHKkZC{_zO^GdT_2?^#GO765#0pBt31MX+N=x(RUGx_x*U}qI%2Jj<
zrMkX)QV)M-DIqVQ8M_`o*;9YX+f@AI>iTDs>l$*qy-hJa|M9v3QeXLAKUEk*N1RHA
z{@vrv{p+7+s~7dyC&npPMO!fHOzw0~^sVgF^qeoKAFvEv=}pnEipWySPVTsNx@Tfn7hKkDD__`NV)W(Eot2dBh88=G@K(?Ko&D
z`pmi2^@Mp&gLcM%Rau`kuaj~>KRj<~$Z%md7NzLPn@`r#X?_!H`~{?1HGM`=b-l`y
zX#vbvLL3*6kjaAhqL)~gB{?a>1tYG=Bi&RoIDuvqbwvUlDO#xbPZE|k>NgiO(pN4_
zHR^rzdj~q`jh_zJ$A4L|xcO6xqAb$07xnOeS%|MLUbpCg5>PBE7kA2j$0Q)BSP!?6z`((pdilWedIG
z3zL+#`l~OjPg-^nl3P$%f90dNB`7U{Mg9S%eSfvNOxVl7r*NbbUrrM?Q)oyDMiYCE(9h)
zpo+e0dlThE@zw3YN*K>kRvy*XOG2Q&p131Hcf58!Ow2A~yi3lq;=~=nN|KmBOmf^R
z=$3GHjoxu*M}H=V>^=|RG5WhZ8)Kpv?P-t}9U817;O#a!h84lgdZ+omLm(P@(7
z9)(vW>`v0_z1}{O$#Dxx^A_nVUhimQa>&d2rPup}?%bi)3=#wbHzs(96*CmzCG|y%DIZZzSS4K;QOey+{^~`?IwCZP==B
z$k!CIBj2j0{Hd>fYnjrpIBidNMOm#Ey?xA<$ARgh4|Sgbz3pB>U;oZATNkE})@SWw
z`jB@8eeZi-`pWlDfj;enPHg9k{ohIXmBm{Q6oFFg{HU1~KVv=-KifZR$hFf4qtx*9
z(sM;Uec+K;y~g3@k<5x~SeoBh@LvF*S#ixu^IHgh(2?em%!+GOn%@@u{{Bo3*>X{z
z@O8BQ^N|L)5~+OjrSN;~Wc)Q0)lpbOR$USTXOA{en(E`fj?o)@ovG}?QCD1?eE9YD
zu!StUm5UuhAyJ?GO;>B5D^QEouYc1hd=WCcL@F)OUEfZMWOCf<(!90cRnhyMs-WNa
zwzWUALtek4um8S^-ut@_<%6!HnMf`|K9|%Zpe8e+j-XzW)ZFhol*?j52SJU|*M0v;
zTpvCj!9`qKI9UQxo__a-DBbl#BO9|qy697X7!&olkR4H4b~I!=M>09?`O>_V!p_WN
z_57I?Lf`2Feyl1NAO1hyQSRx=@l*b~02Qx4b0St(f65F`MBGZCsjheYsbd(ELpZu}
z!pd%;587N=zqEOdzV3Jhea1`S`p^^A{PzfBTVbqw`1aCJ(h|Df{M5uqCda)|
znzskMsyMZT>SK^|+HVb&H}s~zMJuiJ9=}af?&x3tmJxN6l?rbp<1+d$94dcvp;-RZ
zV^7yKnEyIUF>mPoPTLLUZ`HuGy#uA+rDmSK`t*EdjGl0&evsvcVzJ{&zDpfF`)Z6n
z^-Q@q+1{!&i^cB`R=6v)AcsaH^o?hd!lZ<-8_D#j;_uG9WyLl8;`5(kt}nQdR8flj
zf~J)UED~(lp$A=vr;&k51-jZ(3DWmp7=xvL>czJdHBK7Il!xLq@xwRk>&Jq>5P%Ioc;buC`
znXW|W@7@g1zq~$Q`9tq~!)cfmN-|ExOK$`#il4svW-Dd9e(GjV<*x4fy@a630sU8>
z^7}`)tZI6zp05!8nKPpZ$|yFu$n|
zW_0l%|D-EQIX(Hm9k}BB_PU1wXf;UPm
zg%RNvi@3D@7*$1`udn~Nl792v>&koj=KGnUrjWQ4-&cI)es@3R#-1EMrL9%@ot9{d
z2ckf6YtOrylBXzP6y&dz$RXKL)YM;DuSD$m*OuhRRK!ao`3@7Kda)uN9&Bdal-BfoAEjv!&lnP+zWaJby52`A=NpyViChifxChcBeU)m8LW}w;nW;X5Og6`0f-QNovbzlET993UUAMx+p<;7Q
zv1oLouTra$)M?MjYLof=R3t4grzBFReoBJUksj@b4joM|^ixuOa!YLJbfzErDGe2W
zs?c9aijNqzf6uHByJ`YR)`gFyENc)MA&985I_Dua|Zw0NMhB*4mw
ziY1y72Pp}LS#xfQ5oViG?}4~{nLJ4O91~ab!Ag=bJWat+>CPge_I;F^w0W?Ss&v@%
z&0yuWqTHr0hblFU{t+r-YP+*X8-|ES@|KWgQm2taEk)QOwW=1ylB8Hdxg%;BN@7-$
zxlc15QIeF%J?kD(Zk6vbnsu$6xm5ivykBNf{8Wp-Wvn=aWBwN2_=1ak$a`GI;d^{&
z-Nz*~KNU3|<6QfdE>2RCvU!Wn;>UWtPiOH9&Ko~yXsap1CQcd#8gJWK{M2!i$D+bJ
zS{A=@!z>f=|9JeffOwwrCM*5hUXX$bg2uafuv9Q{(73J>#tajdY<#ihXJr-MQ-)E_
z8h;D#xmo;dk4+jhaT2Qa=+j7H_Fp{KDH>##x41hFPXqQZ0i}GKi5B_ko;DAI
z_^M6{v@;JMH4k;Z7Er8efWKv*d3e%1yk{Qf@oE{y6n{%MaX4FaUl)_y(>MgeiRR&C
z^KgfGxXV0z-8_8NI7A!A%)<-j;Z0Na+H8~jhe-~(vK3V&uEeqjpSG7tYV1@4&C`zEy&?@P#NcQg*sT6>e)`7+u!
zI`?f;Vy}6)&pdp~)ce&uEar<0*~UTh@UnRr%gcBv(2x)PLLZwnapbt+36sW;PZ&eH
zrYg4C$4r@%=HYMV;d%4$ig_5oOLCZoQ_1FGFXIs1G}JtN))d%j94GS&h3sYJokmC9H-Bu-ZxN`xd0n66Y%{-W{Im0F4)t)7lqH-HXK$62a8
zU7HToaIVEr>I@}Ni4?~{EeA~+l$C{G{6T$ZDAhxGLCj6w;a{w->Cu@=TqvI|naT@a
zi&cF`Py_j#%~XX>L$v}g6}ZYLGmF)aB4#R8E2zQ~e+w^8E!F@@
zzCIkQRd@rAh;a$df3ppTMZA4jIB5uE{uU8*AC6)bZo!<0d3+yzJU
zfe&Z6)hc`jOZ0>f%W4&lgL8vH`f%j+7INB?U}A)n5a25k2zYYsANq2(66H;@dvq1m
z*`6d5Bcy~nUl>5$lW_iAEg`^5BM5ksuiOIyyrzJFClSLQ5D34KA|yOn8S#JwU&g>h
z)Pn7W3jSI5Y%lctc2^p&NpkbLTI{@dbMyVfq83TDi(0O4XQ{(wdsi3GECp7F_@(_%
zE4Apy3^k(VM9`g&axno#UVd0tOTH3ipNvY~qMUgF&_~%mUy06FV)B((`xJ2Oe!1@!
zWlst%TvN|taZjYWb=36MkAu;zC}(3pU9_Fm4Tb#)kZKDnV9X0}b2~*j>+6BGF+m6?
zxVc$o3W>bTRkW>+n%JO(vBKL}90-Hc9%`^flEwZ6DRtHAHA-1r4IK-6mBdB0e5Ja5
z7D)DK)S<50Y&IVQYvzkAX3uIW9a{&->?J_d5CCREs%(z{z-`#FN{RpBrD%-dq}1lJ
z26~Py*F{h(rEm<>8PXbt#C!)Awd`{!v%cz3X41fVYP(=BI=djm)^^WbU#at8>;ruQbAl#k2X}Rh8s3(BQTu0lif>b
zLqoM<1dq3(oIMFX$&uG+108IrCf4yH;t^zJIQHiu{y(~t;xg5!9)`2(|9jqTggKE>
zSsdhSG0c5NCFigwiQLcA;!M?9AXEzC@|7IdGS<#lS{76(h;?k>N&%*XRt3=oQI7SZ
z8kw);7DTv2$2f#|LFIgM4^
zg0O;6$66ZLNR3kF&{WvyDuzfwxqPKVL2yBkLyW6}z
z;V^dNVQb0e!nK8oXi6{(&{TK(%OJ6YV%LmWGZ)Y2xY>45&b9>1d)pH7taTs(AA8te
z0o~0yMcEOPcwAZ4+HBeo=xN_ZAGy>T$}4o$rN%0oD6p{_pR!F@yBW}E7Y+of-esWL
zMfr`@>a)2Cm_%+SiD}h~MP`~$YPvmkeRI$g0Xbtg+U;qvZy7BLCdZ+l{WZwhSGe9S
zqBjfFIIDXbg(1+^O{Zy4Pqk9U0K}F>L~LJ|Hp?(5IBakrb?yWIU!$!})GFmf-1C*e
z=)f)9fsNDoVw+Ei`O5HoWxSnt%+pvBip;)U2-rNs%M(1U6L3KPcTOIw<&At47LiZ*8#_!rn5ztDl^YFgO0pdlY_1|WG*x^u~zrKUuhWH7gh)BCmr
z_m`BFrN$|zsDGAfugIGm;O-IJJqdQyxv?r#oTY}@jm8R#aJm-_p5oREw0xy-0Z1aC
zFnB3Tt#0Fe92{55R_zH#SWM(fBM~RZQ6@lZ5o>*SnsyYZS@FEB;?uS}7j<5Yz=`$s
zB+e=n(@jlK1m-I3JS(5V#V~`geJ2z!^3Sk&?ux=Cf`fx+xTO=IbEjAehhl^?prCFj
z?8Vf#g_;@0dpJG-Kz^x(+C2Q6Bzq!eKYyAwbW`J~VvZUX?g`0q*cWry8ETM&(f=I{
z$Wf~S>AW1(VLJ&E@Zj|vHAOi|$8*$}C?<)NLIxhpwZzLG`P2kA;iYIPix(`aHVH9Pz=
zBsH>Cd8GS3
z3*Zco8m?LHam`p9-W?)XKNo=YbAkIm!J5p=J3dikqQyGzA0cwQ0Yr{Bz^vOMslTGM
zT#a9Do!9j(Wp7wf<=!|5aQ&3R4ftt~Ua``$4r&8>s=XRFyF5gk<+upuB8ZDX6rMc#
z3Oa5+Kk>Oqo(^7Pe^?LsBqpCw93vi{>BY^K44#_}dXCvHLzcKjW{0^dfXEmRp&?+a
zAhC_fQ)?ygp7-4F^vp^uB2xAn2)V+!ivFrZd-Bw$aFZdsgPI=C!gV37)Iq^La>A6g
zI>OoPpftl`qbRS%Q!Eu>SQKQD*1v&lA4>@x)hV)piu7tnH7-y}S{)G*Ws~ScH
zSs3LDR~X&b2}lj2Z92oKl(agkN~4=Q!{~SeX?3qrD?;f?GK>ncFzN@geLUUk45S}P
zq#L`ysFbuilBCglT}-2mYIu#7XQOt*s2~fYA<}5iu0Z+`9qp>72TCEU!!GS*aj({b
zqP<&VV>O>v2g%l!W)`SvN^Q#Sr)J0VZ3N$$x#U^47H#N
ztorKG;BGiMl|CWXqxId?YH>9gGg2oWKjKtamk9!VfPq^RU&Nw`u`PavM}LJg^EDhkS=$B7}BbdH6ZQsz;&P^E=C$s{~l_M
zJdX`AyNKDT7EAE;i9jkGsx8~|aYTvF%=B?26$18j=?LGH`M)}nE)A!99C6Wto)34V
zE~LGV)I&u$;-Y_gsx_*3Y?zKTU-}G=#o66*BDw2yn=&kw(HS_q{ijMX!!_Qn!t*S{a7*-R=a(?CD
zM|jbS38Fh%8u`_X#`bw2zgn}HkzcKGXwQ;h+kpOm1RK^?m~dx7MdVjo>fQIDa3k{|
z?S8rlTFOLngTRO1>cZ)zO9O^9FE16&Id>rWt0ecJSNc;Z}j&zfTTX-DF
zqrWiV%O28IBYQ&H>qswDgd=%0vOn_6W5aZ$4@MCMo3
z0m!d>h?bpSgP>yXBt8A#Q$oJXuY8$bX#iEOI=|dx1^x0P9AvgK>?~g<1|)
zt0i#gN=ErHuNI=*QAYXQ!H9BCh?X7YC)kf((vSZ=U-gtx?kS^uXb7U*%i~Nx`en#N
zok^O(uzEn2qdXHoBFg=kAfi0Wh_c6=8RbHV*!xIy|9jY$Ko>R_dN_gg@!;!Et%p4n
zU*waJ_TnpIRGiEGY40!uyAPcnhG269O9uNXuNH#cLk7F=BdVifJDlaPmGE5ZBhV2C
zL+H?OHG+0LqUOd90TI`K&!xi4=Th_fa%nZBDhyYnl_BI9uGYp+_u;sZ98S}QtBzW1
zN@(#$#B-^HB>H9B^f)ceF)cW%x+t0lqy8SW^e
zHI^GN0?iDg#Us=hWh6IKwcIDpeo7M7#Ndyhqa)O2N;?W2srFFX(}UqDoij1{=5F$LM*-LTv;@atl2
zjQ!;^G-!reS$UTBk5(hC&!3@XGtju-7&JcS3=LeR#*{~pzf9!|kVDDtWz=j8u9CoF
zTr_2j8UmvW#;6@xH*AX*7Znx=oZ}3f;!2wK0B9j6*vgja9>O
zd}zFyR6+Phh8{iO-=D|e(@N?$4*soW|5mbz7}_{ajk3NVoeVr%)Be|S53gZ4Jlbsd
z`JUnDd(zMShM!N2ho39Y(44i>&$}K!_pzT5w(q4e;H#~yq<_c5O{kh~t}@_?U*YCT
zDx9EpDSrSAzLFCca+Ekrt!=Y^2Ve&%>`}E|=!dL_KD}LDq{4@kHBrr>m5(BtAJNN?
zsx7P^ouNnXz`Y53)o_ZOs78l=Z0Ky0Iv=x6XXO)mcA}b$pSLHf_2NH)3}4e?=l5QU
z#r3J7vJ0t$jQf-`t|jF^rfSyD&d||aGVKB^_9;IA+h?@=F|{#s!e*+8bRA+rpR)z1
ze(uvB6(*pE#l`;`cIhB>ouoFf9fKr}VIqdMPEsoR}uK
zBeV`2vPVK*4vJ_RI75wyjs}6JioIg0sLL`-KgBtq3N4+XHen0sp}3%(X~x)yqz&_t
zGd($$77CrICegqtY7h&KnWA>ERyiv&C%PdI5G#yxV8yTS3Su{>sGSqzz%ksy7DcXe
zMoEw2d_Ah_Qwj}lhT09LK&T$g-4|!F4^9t*BTt=Xs9JD}7py}@
z-T{Ic`SRY#*OcgCfzbzhBcF1XnvYQ{%g|S6A8G?j)0r5qH4XS;RMO;w;F>
zfmkThp%4T!9n66^kJF(hohU-6h8y^U7O3TvSv(SBna1IxpXQ^FhSR0_$cK3{AELw{
z90|ib2*t1PVmOU|5@)ITbl^#xX9U{$K4_nmXa%WZ@B%N;rzFs)N&q$Uc99Rz`946c
z3uNN@ALpJ2hv8P>-mbtoKZ`qbJ`G#|+=~p{B9Ds<+~QZ@p3k_O(v5|xzirabP