From 4c4205442e1f6caa82fa6157466b4a6d07014784 Mon Sep 17 00:00:00 2001 From: Aleksandar Andrejevic Date: Tue, 20 May 2014 18:46:50 +0000 Subject: [PATCH 001/232] [NTVDM] Use a separate palette for text mode. Previously the text mode palette was equal to the first 16 entries of the graphical palette, which is wrong since the AC registers can be used to select arbitrary colors from the DAC. svn path=/trunk/; revision=63385 --- reactos/subsystems/ntvdm/hardware/vga.c | 115 ++++++++++++++++++++---- 1 file changed, 97 insertions(+), 18 deletions(-) diff --git a/reactos/subsystems/ntvdm/hardware/vga.c b/reactos/subsystems/ntvdm/hardware/vga.c index 590ff058407..4593a5d5188 100644 --- a/reactos/subsystems/ntvdm/hardware/vga.c +++ b/reactos/subsystems/ntvdm/hardware/vga.c @@ -171,6 +171,32 @@ static CONST COLORREF VgaDefaultPalette[VGA_MAX_COLORS] = #endif +/* + * Default 16-color palette for foreground and background + * (corresponding flags in comments). + * Taken from subsystems/win32/winsrv/consrv/frontends/gui/conwnd.c + */ +static const COLORREF ConsoleColors[16] = +{ + RGB(0, 0, 0), // (Black) + RGB(0, 0, 128), // BLUE + RGB(0, 128, 0), // GREEN + RGB(0, 128, 128), // BLUE | GREEN + RGB(128, 0, 0), // RED + RGB(128, 0, 128), // BLUE | RED + RGB(128, 128, 0), // GREEN | RED + RGB(192, 192, 192), // BLUE | GREEN | RED + + RGB(128, 128, 128), // (Grey) INTENSITY + RGB(0, 0, 255), // BLUE | INTENSITY + RGB(0, 255, 0), // GREEN | INTENSITY + RGB(0, 255, 255), // BLUE | GREEN | INTENSITY + RGB(255, 0, 0), // RED | INTENSITY + RGB(255, 0, 255), // BLUE | RED | INTENSITY + RGB(255, 255, 0), // GREEN | RED | INTENSITY + RGB(255, 255, 255) // BLUE | GREEN | RED | INTENSITY +}; + /* * Console interface -- VGA-mode-agnostic */ @@ -184,6 +210,7 @@ C_ASSERT(sizeof(CHAR_CELL) == 2); static LPVOID ConsoleFramebuffer = NULL; // Active framebuffer, points to // either TextFramebuffer or a valid // graphics framebuffer. +static HPALETTE TextPaletteHandle = NULL; static HPALETTE PaletteHandle = NULL; static HANDLE StartEvent = NULL; @@ -774,7 +801,7 @@ static VOID VgaWriteCrtc(BYTE Data) static VOID VgaWriteDac(BYTE Data) { - INT PaletteIndex; + INT i, PaletteIndex; PALETTEENTRY Entry; /* Set the value */ @@ -789,8 +816,20 @@ static VOID VgaWriteDac(BYTE Data) Entry.peBlue = VGA_DAC_TO_COLOR(VgaDacRegisters[PaletteIndex * 3 + 2]); Entry.peFlags = 0; - /* Update the palette entry and set the palette change flag */ + /* Update the palette entry */ SetPaletteEntries(PaletteHandle, PaletteIndex, 1, &Entry); + + /* Check which text palette entries are affected */ + for (i = 0; i <= VGA_AC_PAL_F_REG; i++) + { + if (VgaAcRegisters[i] == PaletteIndex) + { + /* Update the text palette entry */ + SetPaletteEntries(TextPaletteHandle, i, 1, &Entry); + } + } + + /* Set the palette changed flag */ PaletteChanged = TRUE; /* Update the index */ @@ -800,6 +839,8 @@ static VOID VgaWriteDac(BYTE Data) static VOID VgaWriteAc(BYTE Data) { + PALETTEENTRY Entry; + ASSERT(VgaAcIndex < VGA_AC_MAX_REG); /* Save the value */ @@ -810,8 +851,17 @@ static VOID VgaWriteAc(BYTE Data) // DbgPrint(" AC Palette Writing %d to index %d\n", Data, VgaAcIndex); if (VgaAcRegisters[VgaAcIndex] != Data) { - /* Update the AC register and set the palette change flag */ + /* Update the AC register */ VgaAcRegisters[VgaAcIndex] = Data; + + /* Fill the entry structure */ + Entry.peRed = VGA_DAC_TO_COLOR(VgaDacRegisters[Data * 3]); + Entry.peGreen = VGA_DAC_TO_COLOR(VgaDacRegisters[Data * 3 + 1]); + Entry.peBlue = VGA_DAC_TO_COLOR(VgaDacRegisters[Data * 3 + 2]); + Entry.peFlags = 0; + + /* Update the palette entry and set the palette change flag */ + SetPaletteEntries(TextPaletteHandle, VgaAcIndex, 1, &Entry); PaletteChanged = TRUE; } } @@ -843,33 +893,62 @@ static VOID VgaRestoreDefaultPalette(PPALETTEENTRY Entries, USHORT NumOfEntries) static BOOLEAN VgaInitializePalette(VOID) { - LPLOGPALETTE Palette; + INT i; + BOOLEAN Result = FALSE; + LPLOGPALETTE Palette, TextPalette; - /* Allocate storage space for the palette */ + /* Allocate storage space for the palettes */ Palette = (LPLOGPALETTE)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(LOGPALETTE) + - VGA_MAX_COLORS * sizeof(PALETTEENTRY)); - if (Palette == NULL) return FALSE; + VGA_MAX_COLORS * sizeof(PALETTEENTRY)); + TextPalette = (LPLOGPALETTE)HeapAlloc(GetProcessHeap(), + HEAP_ZERO_MEMORY, + sizeof(LOGPALETTE) + + (VGA_AC_PAL_F_REG + 1) * sizeof(PALETTEENTRY)); + if ((Palette == NULL) || (TextPalette == NULL)) goto Cleanup; - /* Initialize the palette */ - Palette->palVersion = 0x0300; + /* Initialize the palettes */ + Palette->palVersion = TextPalette->palVersion = 0x0300; Palette->palNumEntries = VGA_MAX_COLORS; + TextPalette->palNumEntries = VGA_AC_PAL_F_REG + 1; - /* Restore the default palette */ + /* Restore the default graphics palette */ VgaRestoreDefaultPalette(Palette->palPalEntry, Palette->palNumEntries); - /* Create the palette */ + /* Set the default text palette */ + for (i = 0; i < TextPalette->palNumEntries; i++) + { + /* Set the palette entries */ + TextPalette->palPalEntry[i].peRed = GetRValue(ConsoleColors[i]); + TextPalette->palPalEntry[i].peGreen = GetGValue(ConsoleColors[i]); + TextPalette->palPalEntry[i].peBlue = GetBValue(ConsoleColors[i]); + TextPalette->palPalEntry[i].peFlags = 0; + } + + /* Create the palettes */ PaletteHandle = CreatePalette(Palette); + TextPaletteHandle = CreatePalette(TextPalette); - /* Free the palette */ - HeapFree(GetProcessHeap(), 0, Palette); + if (PaletteHandle != NULL && TextPaletteHandle != NULL) + { + /* The palettes have been created successfully */ + Result = TRUE; + } - /* Fail if the palette wasn't successfully created... */ - if (PaletteHandle == NULL) return FALSE; +Cleanup: + /* Free the palettes */ + if (Palette) HeapFree(GetProcessHeap(), 0, Palette); + if (TextPalette) HeapFree(GetProcessHeap(), 0, TextPalette); - /* ... otherwise return success */ - return TRUE; + if (!Result) + { + /* Something failed, delete the palettes */ + if (PaletteHandle) DeleteObject(PaletteHandle); + if (TextPaletteHandle) DeleteObject(TextPaletteHandle); + } + + return Result; } static BOOL VgaEnterGraphicsMode(PCOORD Resolution) @@ -1001,7 +1080,7 @@ static BOOL VgaEnterTextMode(PCOORD Resolution) * screen-buffers, which is a new feature on ReactOS). */ SetConsolePalette(TextConsoleBuffer, - PaletteHandle, + TextPaletteHandle, SYSPAL_NOSTATIC256); /* Set the screen mode flag */ From e387cb4358f62fb5531a18a5a8b64ad828df34ac Mon Sep 17 00:00:00 2001 From: James Tabor Date: Tue, 20 May 2014 19:39:34 +0000 Subject: [PATCH 002/232] [User32] - Update and sync DDE code with wine. Make name space close to what it should be. svn path=/trunk/; revision=63386 --- reactos/win32ss/user/user32/misc/dde.c | 1586 +++++++++--------- reactos/win32ss/user/user32/misc/ddeclient.c | 65 +- reactos/win32ss/user/user32/misc/ddeserver.c | 71 +- 3 files changed, 900 insertions(+), 822 deletions(-) diff --git a/reactos/win32ss/user/user32/misc/dde.c b/reactos/win32ss/user/user32/misc/dde.c index 30498d13c11..d600ba47876 100644 --- a/reactos/win32ss/user/user32/misc/dde.c +++ b/reactos/win32ss/user/user32/misc/dde.c @@ -36,7 +36,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(ddeml); static WDML_INSTANCE* WDML_InstanceList = NULL; static LONG WDML_MaxInstanceID = 0; /* OK for present, have to worry about wrap-around later */ -const WCHAR WDML_szEventClass[] = {'D','d','e','E','v','e','n','t','C','l','a','s','s',0}; +const WCHAR WDML_szEventClass[] = {'D','D','E','M','L','E','v','e','n','t',0}; /* protection for instance list */ CRITICAL_SECTION WDML_CritSect; @@ -91,7 +91,7 @@ LPARAM WINAPI PackDDElParam(UINT msg, UINT_PTR uiLo, UINT_PTR uiHi) return uiHi; default: - return MAKELPARAM(uiLo, uiHi); + return MAKELONG(uiLo, uiHi); } } @@ -229,7 +229,7 @@ BOOL WINAPI ImpersonateDdeClientWindow(HWND hWndClient, HWND hWndServer) * DdeSetQualityOfService (USER32.@) */ -BOOL WINAPI DdeSetQualityOfService(HWND hwndClient, CONST SECURITY_QUALITY_OF_SERVICE *pqosNew, +BOOL WINAPI DdeSetQualityOfService(HWND hwndClient, const SECURITY_QUALITY_OF_SERVICE *pqosNew, PSECURITY_QUALITY_OF_SERVICE pqosPrev) { FIXME("(%p %p %p): stub\n", hwndClient, pqosNew, pqosPrev); @@ -238,535 +238,10 @@ BOOL WINAPI DdeSetQualityOfService(HWND hwndClient, CONST SECURITY_QUALITY_OF_SE /* ================================================================ * - * Instance management + * WDML Error management * * ================================================================ */ -/****************************************************************************** - * IncrementInstanceId - * - * generic routine to increment the max instance Id and allocate a new application instance - */ -static void WDML_IncrementInstanceId(WDML_INSTANCE* pInstance) -{ - DWORD id = InterlockedIncrement(&WDML_MaxInstanceID); - - pInstance->instanceID = id; - TRACE("New instance id %d allocated\n", id); -} - -/****************************************************************** - * WDML_EventProc - * - * - */ -static LRESULT CALLBACK WDML_EventProc(HWND hwndEvent, UINT uMsg, WPARAM wParam, LPARAM lParam) -{ - WDML_INSTANCE* pInstance; - HSZ hsz1, hsz2; - - switch (uMsg) - { - case WM_WDML_REGISTER: - pInstance = WDML_GetInstanceFromWnd(hwndEvent); - /* try calling the Callback */ - if (pInstance && !(pInstance->CBFflags & CBF_SKIP_REGISTRATIONS)) - { - hsz1 = WDML_MakeHszFromAtom(pInstance, wParam); - hsz2 = WDML_MakeHszFromAtom(pInstance, lParam); - WDML_InvokeCallback(pInstance, XTYP_REGISTER, 0, 0, hsz1, hsz2, 0, 0, 0); - WDML_DecHSZ(pInstance, hsz1); - WDML_DecHSZ(pInstance, hsz2); - } - break; - - case WM_WDML_UNREGISTER: - pInstance = WDML_GetInstanceFromWnd(hwndEvent); - if (pInstance && !(pInstance->CBFflags & CBF_SKIP_UNREGISTRATIONS)) - { - hsz1 = WDML_MakeHszFromAtom(pInstance, wParam); - hsz2 = WDML_MakeHszFromAtom(pInstance, lParam); - WDML_InvokeCallback(pInstance, XTYP_UNREGISTER, 0, 0, hsz1, hsz2, 0, 0, 0); - WDML_DecHSZ(pInstance, hsz1); - WDML_DecHSZ(pInstance, hsz2); - } - break; - - case WM_WDML_CONNECT_CONFIRM: - pInstance = WDML_GetInstanceFromWnd(hwndEvent); - if (pInstance && !(pInstance->CBFflags & CBF_SKIP_CONNECT_CONFIRMS)) - { - WDML_CONV* pConv; - /* confirm connection... - * lookup for this conv handle - */ - HWND client = (HWND)wParam; - HWND server = (HWND)lParam; - for (pConv = pInstance->convs[WDML_SERVER_SIDE]; pConv != NULL; pConv = pConv->next) - { - if (pConv->hwndClient == client && pConv->hwndServer == server) - break; - } - if (pConv) - { - pConv->wStatus |= ST_ISLOCAL; - - WDML_InvokeCallback(pInstance, XTYP_CONNECT_CONFIRM, 0, (HCONV)pConv, - pConv->hszTopic, pConv->hszService, 0, 0, - (pConv->wStatus & ST_ISSELF) ? 1 : 0); - } - } - break; - default: - return DefWindowProcW(hwndEvent, uMsg, wParam, lParam); - } - return 0; -} - -/****************************************************************** - * WDML_Initialize - * - * - */ -UINT WDML_Initialize(LPDWORD pidInst, PFNCALLBACK pfnCallback, - DWORD afCmd, DWORD ulRes, BOOL bUnicode) -{ - WDML_INSTANCE* pInstance; - WDML_INSTANCE* reference_inst; - UINT ret; - WNDCLASSEXW wndclass; - - TRACE("(%p,%p,0x%x,%d,0x%x)\n", - pidInst, pfnCallback, afCmd, ulRes, bUnicode); - - if (ulRes) - { - ERR("Reserved value not zero? What does this mean?\n"); - /* trap this and no more until we know more */ - return DMLERR_NO_ERROR; - } - - /* grab enough heap for one control struct - not really necessary for re-initialise - * but allows us to use same validation routines */ - pInstance = HeapAlloc(GetProcessHeap(), 0, sizeof(WDML_INSTANCE)); - if (pInstance == NULL) - { - /* catastrophe !! warn user & abort */ - ERR("Instance create failed - out of memory\n"); - return DMLERR_SYS_ERROR; - } - pInstance->next = NULL; - pInstance->monitor = (afCmd | APPCLASS_MONITOR); - - /* messy bit, spec implies that 'Client Only' can be set in 2 different ways, catch 1 here */ - - pInstance->clientOnly = afCmd & APPCMD_CLIENTONLY; - pInstance->instanceID = *pidInst; /* May need to add calling proc Id */ - pInstance->threadID = GetCurrentThreadId(); - pInstance->callback = *pfnCallback; - pInstance->unicode = bUnicode; - pInstance->nodeList = NULL; /* node will be added later */ - pInstance->monitorFlags = afCmd & MF_MASK; - pInstance->wStatus = 0; - pInstance->lastError = DMLERR_NO_ERROR; - pInstance->servers = NULL; - pInstance->convs[0] = NULL; - pInstance->convs[1] = NULL; - pInstance->links[0] = NULL; - pInstance->links[1] = NULL; - - /* isolate CBF flags in one go, expect this will go the way of all attempts to be clever !! */ - - pInstance->CBFflags = afCmd^((afCmd&MF_MASK)|((afCmd&APPCMD_MASK)|(afCmd&APPCLASS_MASK))); - - if (!pInstance->clientOnly) - { - /* Check for other way of setting Client-only !! */ - pInstance->clientOnly = - (pInstance->CBFflags & CBF_FAIL_ALLSVRXACTIONS) == CBF_FAIL_ALLSVRXACTIONS; - } - - TRACE("instance created - checking validity\n"); - - if (*pidInst == 0) - { - /* Initialisation of new Instance Identifier */ - TRACE("new instance, callback %p flags %X\n",pfnCallback,afCmd); - - EnterCriticalSection(&WDML_CritSect); - - if (WDML_InstanceList == NULL) - { - /* can't be another instance in this case, assign to the base pointer */ - WDML_InstanceList = pInstance; - - /* since first must force filter of XTYP_CONNECT and XTYP_WILDCONNECT for - * present - * ------------------------------- NOTE NOTE NOTE -------------------------- - * - * the manual is not clear if this condition - * applies to the first call to DdeInitialize from an application, or the - * first call for a given callback !!! - */ - - pInstance->CBFflags = pInstance->CBFflags|APPCMD_FILTERINITS; - TRACE("First application instance detected OK\n"); - /* allocate new instance ID */ - WDML_IncrementInstanceId(pInstance); - } - else - { - /* really need to chain the new one in to the latest here, but after checking conditions - * such as trying to start a conversation from an application trying to monitor */ - reference_inst = WDML_InstanceList; - TRACE("Subsequent application instance - starting checks\n"); - while (reference_inst->next != NULL) - { - /* - * This set of tests will work if application uses same instance Id - * at application level once allocated - which is what manual implies - * should happen. If someone tries to be - * clever (lazy ?) it will fail to pick up that later calls are for - * the same application - should we trust them ? - */ - if (pInstance->instanceID == reference_inst->instanceID) - { - /* Check 1 - must be same Client-only state */ - - if (pInstance->clientOnly != reference_inst->clientOnly) - { - ret = DMLERR_DLL_USAGE; - goto theError; - } - - /* Check 2 - cannot use 'Monitor' with any non-monitor modes */ - - if (pInstance->monitor != reference_inst->monitor) - { - ret = DMLERR_INVALIDPARAMETER; - goto theError; - } - - /* Check 3 - must supply different callback address */ - - if (pInstance->callback == reference_inst->callback) - { - ret = DMLERR_DLL_USAGE; - goto theError; - } - } - reference_inst = reference_inst->next; - } - /* All cleared, add to chain */ - - TRACE("Application Instance checks finished\n"); - WDML_IncrementInstanceId(pInstance); - reference_inst->next = pInstance; - } - LeaveCriticalSection(&WDML_CritSect); - - *pidInst = pInstance->instanceID; - - /* for deadlock issues, windows must always be created when outside the critical section */ - wndclass.cbSize = sizeof(wndclass); - wndclass.style = 0; - wndclass.lpfnWndProc = WDML_EventProc; - wndclass.cbClsExtra = 0; - wndclass.cbWndExtra = sizeof(ULONG_PTR); - wndclass.hInstance = 0; - wndclass.hIcon = 0; - wndclass.hCursor = 0; - wndclass.hbrBackground = 0; - wndclass.lpszMenuName = NULL; - wndclass.lpszClassName = WDML_szEventClass; - wndclass.hIconSm = 0; - - RegisterClassExW(&wndclass); - - pInstance->hwndEvent = CreateWindowW(WDML_szEventClass, NULL, - WS_POPUP, 0, 0, 0, 0, - 0, 0, 0, 0); - - SetWindowLongPtrW(pInstance->hwndEvent, GWL_WDML_INSTANCE, (ULONG_PTR)pInstance); - - TRACE("New application instance processing finished OK\n"); - } - else - { - /* Reinitialisation situation --- FIX */ - TRACE("reinitialisation of (%p,%p,0x%x,%d): stub\n", pidInst, pfnCallback, afCmd, ulRes); - - EnterCriticalSection(&WDML_CritSect); - - if (WDML_InstanceList == NULL) - { - ret = DMLERR_INVALIDPARAMETER; - goto theError; - } - /* can't reinitialise if we have initialised nothing !! */ - reference_inst = WDML_InstanceList; - /* must first check if we have been given a valid instance to re-initialise !! how do we do that ? */ - /* - * MS allows initialisation without specifying a callback, should we allow addition of the - * callback by a later call to initialise ? - if so this lot will have to change - */ - while (reference_inst->next != NULL) - { - if (*pidInst == reference_inst->instanceID && pfnCallback == reference_inst->callback) - { - /* Check 1 - cannot change client-only mode if set via APPCMD_CLIENTONLY */ - - if (reference_inst->clientOnly) - { - if ((reference_inst->CBFflags & CBF_FAIL_ALLSVRXACTIONS) != CBF_FAIL_ALLSVRXACTIONS) - { - /* i.e. Was set to Client-only and through APPCMD_CLIENTONLY */ - - if (!(afCmd & APPCMD_CLIENTONLY)) - { - ret = DMLERR_INVALIDPARAMETER; - goto theError; - } - } - } - /* Check 2 - cannot change monitor modes */ - - if (pInstance->monitor != reference_inst->monitor) - { - ret = DMLERR_INVALIDPARAMETER; - goto theError; - } - - /* Check 3 - trying to set Client-only via APPCMD when not set so previously */ - - if ((afCmd&APPCMD_CLIENTONLY) && !reference_inst->clientOnly) - { - ret = DMLERR_INVALIDPARAMETER; - goto theError; - } - break; - } - reference_inst = reference_inst->next; - } - if (reference_inst->next == NULL) - { - ret = DMLERR_INVALIDPARAMETER; - goto theError; - } - /* All checked - change relevant flags */ - - reference_inst->CBFflags = pInstance->CBFflags; - reference_inst->clientOnly = pInstance->clientOnly; - reference_inst->monitorFlags = pInstance->monitorFlags; - - HeapFree(GetProcessHeap(), 0, pInstance); /* finished - release heap space used as work store */ - - LeaveCriticalSection(&WDML_CritSect); - } - - return DMLERR_NO_ERROR; - theError: - HeapFree(GetProcessHeap(), 0, pInstance); - LeaveCriticalSection(&WDML_CritSect); - return ret; -} - -/****************************************************************************** - * DdeInitializeA (USER32.@) - * - * See DdeInitializeW. - */ -UINT WINAPI DdeInitializeA(LPDWORD pidInst, PFNCALLBACK pfnCallback, - DWORD afCmd, DWORD ulRes) -{ - return WDML_Initialize(pidInst, pfnCallback, afCmd, ulRes, FALSE); -} - -/****************************************************************************** - * DdeInitializeW [USER32.@] - * Registers an application with the DDEML - * - * PARAMS - * pidInst [I] Pointer to instance identifier - * pfnCallback [I] Pointer to callback function - * afCmd [I] Set of command and filter flags - * ulRes [I] Reserved - * - * RETURNS - * Success: DMLERR_NO_ERROR - * Failure: DMLERR_DLL_USAGE, DMLERR_INVALIDPARAMETER, DMLERR_SYS_ERROR - */ -UINT WINAPI DdeInitializeW(LPDWORD pidInst, PFNCALLBACK pfnCallback, - DWORD afCmd, DWORD ulRes) -{ - return WDML_Initialize(pidInst, pfnCallback, afCmd, ulRes, TRUE); -} - -/***************************************************************** - * DdeUninitialize [USER32.@] Frees DDEML resources - * - * PARAMS - * idInst [I] Instance identifier - * - * RETURNS - * Success: TRUE - * Failure: FALSE - */ - -BOOL WINAPI DdeUninitialize(DWORD idInst) -{ - /* Stage one - check if we have a handle for this instance - */ - WDML_INSTANCE* pInstance; - WDML_CONV* pConv; - WDML_CONV* pConvNext; - - TRACE("(%d)\n", idInst); - - /* First check instance - */ - pInstance = WDML_GetInstance(idInst); - if (pInstance == NULL) - { - /* - * Needs something here to record NOT_INITIALIZED ready for DdeGetLastError - */ - return FALSE; - } - - /* first terminate all conversations client side - * this shall close existing links... - */ - for (pConv = pInstance->convs[WDML_CLIENT_SIDE]; pConv != NULL; pConv = pConvNext) - { - pConvNext = pConv->next; - DdeDisconnect((HCONV)pConv); - } - if (pInstance->convs[WDML_CLIENT_SIDE]) - FIXME("still pending conversations\n"); - - /* then unregister all known service names */ - DdeNameService(idInst, 0, 0, DNS_UNREGISTER); - - /* Free the nodes that were not freed by this instance - * and remove the nodes from the list of HSZ nodes. - */ - WDML_FreeAllHSZ(pInstance); - - DestroyWindow(pInstance->hwndEvent); - - /* OK now delete the instance handle itself */ - - if (WDML_InstanceList == pInstance) - { - /* special case - the first/only entry */ - WDML_InstanceList = pInstance->next; - } - else - { - /* general case, remove entry */ - WDML_INSTANCE* inst; - - for (inst = WDML_InstanceList; inst->next != pInstance; inst = inst->next); - inst->next = pInstance->next; - } - /* release the heap entry - */ - HeapFree(GetProcessHeap(), 0, pInstance); - - return TRUE; -} - -/****************************************************************** - * WDML_NotifyThreadExit - * - * - */ -void WDML_NotifyThreadDetach(void) -{ - WDML_INSTANCE* pInstance; - WDML_INSTANCE* next; - DWORD tid = GetCurrentThreadId(); - - EnterCriticalSection(&WDML_CritSect); - for (pInstance = WDML_InstanceList; pInstance != NULL; pInstance = next) - { - next = pInstance->next; - if (pInstance->threadID == tid) - { - LeaveCriticalSection(&WDML_CritSect); - DdeUninitialize(pInstance->instanceID); - EnterCriticalSection(&WDML_CritSect); - } - } - LeaveCriticalSection(&WDML_CritSect); -} - -/****************************************************************** - * WDML_InvokeCallback - * - * - */ -HDDEDATA WDML_InvokeCallback(WDML_INSTANCE* pInstance, UINT uType, UINT uFmt, HCONV hConv, - HSZ hsz1, HSZ hsz2, HDDEDATA hdata, - ULONG_PTR dwData1, ULONG_PTR dwData2) -{ - HDDEDATA ret; - - if (pInstance == NULL) - return NULL; - - TRACE("invoking CB[%p] (%x %x %p %p %p %p %lx %lx)\n", - pInstance->callback, uType, uFmt, - hConv, hsz1, hsz2, hdata, dwData1, dwData2); - ret = pInstance->callback(uType, uFmt, hConv, hsz1, hsz2, hdata, dwData1, dwData2); - TRACE("done => %p\n", ret); - return ret; -} - -/***************************************************************************** - * WDML_GetInstance - * - * generic routine to return a pointer to the relevant DDE_HANDLE_ENTRY - * for an instance Id, or NULL if the entry does not exist - * - */ -WDML_INSTANCE* WDML_GetInstance(DWORD instId) -{ - WDML_INSTANCE* pInstance; - - EnterCriticalSection(&WDML_CritSect); - - for (pInstance = WDML_InstanceList; pInstance != NULL; pInstance = pInstance->next) - { - if (pInstance->instanceID == instId) - { - if (GetCurrentThreadId() != pInstance->threadID) - { - FIXME("Tried to get instance from wrong thread\n"); - continue; - } - break; - } - } - - LeaveCriticalSection(&WDML_CritSect); - - if (!pInstance) - WARN("Instance entry missing for id %04x\n", instId); - return pInstance; -} - -/****************************************************************** - * WDML_GetInstanceFromWnd - * - * - */ -WDML_INSTANCE* WDML_GetInstanceFromWnd(HWND hWnd) -{ - return (WDML_INSTANCE*)GetWindowLongPtrW(hWnd, GWL_WDML_INSTANCE); -} - /****************************************************************************** * DdeGetLastError [USER32.@] Gets most recent error code * @@ -1258,6 +733,545 @@ INT WINAPI DdeCmpStringHandles(HSZ hsz1, HSZ hsz2) return ret; } +/* ================================================================ + * + * Instance management + * + * ================================================================ */ + +/****************************************************************************** + * IncrementInstanceId + * + * generic routine to increment the max instance Id and allocate a new application instance + */ +static void WDML_IncrementInstanceId(WDML_INSTANCE* pInstance) +{ + DWORD id = InterlockedIncrement(&WDML_MaxInstanceID); + + pInstance->instanceID = id; + TRACE("New instance id %d allocated\n", id); +} + +/****************************************************************** + * WDML_EventProc + * + * + */ +static LRESULT CALLBACK WDML_EventProc(HWND hwndEvent, UINT uMsg, WPARAM wParam, LPARAM lParam) +{ + WDML_INSTANCE* pInstance; + HSZ hsz1, hsz2; + + switch (uMsg) + { + case WM_WDML_REGISTER: + pInstance = WDML_GetInstanceFromWnd(hwndEvent); + /* try calling the Callback */ + if (pInstance && !(pInstance->CBFflags & CBF_SKIP_REGISTRATIONS)) + { + hsz1 = WDML_MakeHszFromAtom(pInstance, wParam); + hsz2 = WDML_MakeHszFromAtom(pInstance, lParam); + WDML_InvokeCallback(pInstance, XTYP_REGISTER, 0, 0, hsz1, hsz2, 0, 0, 0); + WDML_DecHSZ(pInstance, hsz1); + WDML_DecHSZ(pInstance, hsz2); + } + break; + + case WM_WDML_UNREGISTER: + pInstance = WDML_GetInstanceFromWnd(hwndEvent); + if (pInstance && !(pInstance->CBFflags & CBF_SKIP_UNREGISTRATIONS)) + { + hsz1 = WDML_MakeHszFromAtom(pInstance, wParam); + hsz2 = WDML_MakeHszFromAtom(pInstance, lParam); + WDML_InvokeCallback(pInstance, XTYP_UNREGISTER, 0, 0, hsz1, hsz2, 0, 0, 0); + WDML_DecHSZ(pInstance, hsz1); + WDML_DecHSZ(pInstance, hsz2); + } + break; + + case WM_WDML_CONNECT_CONFIRM: + pInstance = WDML_GetInstanceFromWnd(hwndEvent); + if (pInstance && !(pInstance->CBFflags & CBF_SKIP_CONNECT_CONFIRMS)) + { + WDML_CONV* pConv; + /* confirm connection... + * lookup for this conv handle + */ + HWND client = (HWND)wParam; + HWND server = (HWND)lParam; + for (pConv = pInstance->convs[WDML_SERVER_SIDE]; pConv != NULL; pConv = pConv->next) + { + if (pConv->hwndClient == client && pConv->hwndServer == server) + break; + } + if (pConv) + { + pConv->wStatus |= ST_ISLOCAL; + + WDML_InvokeCallback(pInstance, XTYP_CONNECT_CONFIRM, 0, (HCONV)pConv, + pConv->hszTopic, pConv->hszService, 0, 0, + (pConv->wStatus & ST_ISSELF) ? 1 : 0); + } + } + break; + default: + return DefWindowProcW(hwndEvent, uMsg, wParam, lParam); + } + return 0; +} + +/****************************************************************** + * WDML_Initialize + * + * + */ +UINT WDML_Initialize(LPDWORD pidInst, PFNCALLBACK pfnCallback, + DWORD afCmd, DWORD ulRes, BOOL bUnicode) +{ + WDML_INSTANCE* pInstance; + WDML_INSTANCE* reference_inst; + UINT ret; + WNDCLASSEXW wndclass; + + TRACE("(%p,%p,0x%x,%d,0x%x)\n", + pidInst, pfnCallback, afCmd, ulRes, bUnicode); + + if (ulRes) + { + ERR("Reserved value not zero? What does this mean?\n"); + /* trap this and no more until we know more */ + return DMLERR_INVALIDPARAMETER; + } + + /* grab enough heap for one control struct - not really necessary for re-initialise + * but allows us to use same validation routines */ + pInstance = HeapAlloc(GetProcessHeap(), 0, sizeof(WDML_INSTANCE)); + if (pInstance == NULL) + { + /* catastrophe !! warn user & abort */ + ERR("Instance create failed - out of memory\n"); + return DMLERR_SYS_ERROR; + } + pInstance->next = NULL; + pInstance->monitor = (afCmd | APPCLASS_MONITOR); + + /* messy bit, spec implies that 'Client Only' can be set in 2 different ways, catch 1 here */ + + pInstance->clientOnly = afCmd & APPCMD_CLIENTONLY; + pInstance->instanceID = *pidInst; /* May need to add calling proc Id */ + pInstance->threadID = GetCurrentThreadId(); + pInstance->callback = *pfnCallback; + pInstance->unicode = bUnicode; + pInstance->nodeList = NULL; /* node will be added later */ + pInstance->monitorFlags = afCmd & MF_MASK; + pInstance->wStatus = 0; + pInstance->lastError = DMLERR_NO_ERROR; + pInstance->servers = NULL; + pInstance->convs[0] = NULL; + pInstance->convs[1] = NULL; + pInstance->links[0] = NULL; + pInstance->links[1] = NULL; + + /* isolate CBF flags in one go, expect this will go the way of all attempts to be clever !! */ + + pInstance->CBFflags = afCmd^((afCmd&MF_MASK)|((afCmd&APPCMD_MASK)|(afCmd&APPCLASS_MASK))); + + if (!pInstance->clientOnly) + { + /* Check for other way of setting Client-only !! */ + pInstance->clientOnly = + (pInstance->CBFflags & CBF_FAIL_ALLSVRXACTIONS) == CBF_FAIL_ALLSVRXACTIONS; + } + + ERR("instance created - checking validity\n"); + + if (*pidInst == 0) + { + /* Initialisation of new Instance Identifier */ + ERR("new instance, callback %p flags %X\n",pfnCallback,afCmd); + + EnterCriticalSection(&WDML_CritSect); + + if (WDML_InstanceList == NULL) + { + /* can't be another instance in this case, assign to the base pointer */ + WDML_InstanceList = pInstance; + + /* since first must force filter of XTYP_CONNECT and XTYP_WILDCONNECT for + * present + * ------------------------------- NOTE NOTE NOTE -------------------------- + * + * the manual is not clear if this condition + * applies to the first call to DdeInitialize from an application, or the + * first call for a given callback !!! + */ + + pInstance->CBFflags = pInstance->CBFflags|APPCMD_FILTERINITS; + ERR("First application instance detected OK\n"); + /* allocate new instance ID */ + WDML_IncrementInstanceId(pInstance); + } + else + { + /* really need to chain the new one in to the latest here, but after checking conditions + * such as trying to start a conversation from an application trying to monitor */ + reference_inst = WDML_InstanceList; + ERR("Subsequent application instance - starting checks\n"); + while (reference_inst->next != NULL) + { + /* + * This set of tests will work if application uses same instance Id + * at application level once allocated - which is what manual implies + * should happen. If someone tries to be + * clever (lazy ?) it will fail to pick up that later calls are for + * the same application - should we trust them ? + */ + if (pInstance->instanceID == reference_inst->instanceID) + { + /* Check 1 - must be same Client-only state */ + + if (pInstance->clientOnly != reference_inst->clientOnly) + { + ERR("WDML_Initialize Mustbe Client-only\n"); + ret = DMLERR_DLL_USAGE; + goto theError; + } + + /* Check 2 - cannot use 'Monitor' with any non-monitor modes */ + + if (pInstance->monitor != reference_inst->monitor) + { + ERR("WDML_Initialize cannot use monitor w/any modes\n"); + ret = DMLERR_INVALIDPARAMETER; + goto theError; + } + + /* Check 3 - must supply different callback address */ + + if (pInstance->callback == reference_inst->callback) + { + ret = DMLERR_DLL_USAGE; + goto theError; + } + } + reference_inst = reference_inst->next; + } + /* All cleared, add to chain */ + + ERR("Application Instance checks finished\n"); + WDML_IncrementInstanceId(pInstance); + reference_inst->next = pInstance; + } + LeaveCriticalSection(&WDML_CritSect); + + *pidInst = pInstance->instanceID; + + /* for deadlock issues, windows must always be created when outside the critical section */ + wndclass.cbSize = sizeof(wndclass); + wndclass.style = 0; + wndclass.lpfnWndProc = WDML_EventProc; + wndclass.cbClsExtra = 0; + wndclass.cbWndExtra = sizeof(ULONG_PTR); + wndclass.hInstance = 0; + wndclass.hIcon = 0; + wndclass.hCursor = 0; + wndclass.hbrBackground = 0; + wndclass.lpszMenuName = NULL; + wndclass.lpszClassName = WDML_szEventClass; + wndclass.hIconSm = 0; + + RegisterClassExW(&wndclass); + + pInstance->hwndEvent = CreateWindowW(WDML_szEventClass, NULL, + WS_POPUP, 0, 0, 0, 0, + 0, 0, 0, 0); + + SetWindowLongPtrW(pInstance->hwndEvent, GWL_WDML_INSTANCE, (ULONG_PTR)pInstance); + + ERR("New application instance processing finished OK\n"); + } + else + { + /* Reinitialisation situation --- FIX */ + ERR("reinitialisation of (%p,%p,0x%x,%d): stub\n", pidInst, pfnCallback, afCmd, ulRes); + + EnterCriticalSection(&WDML_CritSect); + + if (WDML_InstanceList == NULL) + { + ERR("WDML_Initialize No instance list\n"); + ret = DMLERR_INVALIDPARAMETER; + goto theError; + } + /* can't reinitialise if we have initialised nothing !! */ + reference_inst = WDML_InstanceList; + /* must first check if we have been given a valid instance to re-initialise !! how do we do that ? */ + /* + * MS allows initialisation without specifying a callback, should we allow addition of the + * callback by a later call to initialise ? - if so this lot will have to change + */ + while (reference_inst->next != NULL) + { + if (*pidInst == reference_inst->instanceID && pfnCallback == reference_inst->callback) + { + /* Check 1 - cannot change client-only mode if set via APPCMD_CLIENTONLY */ + + if (reference_inst->clientOnly) + { + if ((reference_inst->CBFflags & CBF_FAIL_ALLSVRXACTIONS) != CBF_FAIL_ALLSVRXACTIONS) + { + /* i.e. Was set to Client-only and through APPCMD_CLIENTONLY */ + + if (!(afCmd & APPCMD_CLIENTONLY)) + { + ERR("WDML_Initialize AppCmd Client-only 2\n"); + ret = DMLERR_INVALIDPARAMETER; + goto theError; + } + } + } + /* Check 2 - cannot change monitor modes */ + + if (pInstance->monitor != reference_inst->monitor) + { + ERR("WDML_Initialize cannot change monitor modes 2\n"); + ret = DMLERR_INVALIDPARAMETER; + goto theError; + } + + /* Check 3 - trying to set Client-only via APPCMD when not set so previously */ + + if ((afCmd&APPCMD_CLIENTONLY) && !reference_inst->clientOnly) + { + ERR("WDML_Initialize trying to set Client-only via APPCMD\n"); + ret = DMLERR_INVALIDPARAMETER; + goto theError; + } + break; + } + reference_inst = reference_inst->next; + } + if (reference_inst->next == NULL) + { + ERR("WDML_Initialize Nothing Next\n"); + ret = DMLERR_INVALIDPARAMETER; + goto theError; + } + /* All checked - change relevant flags */ + + reference_inst->CBFflags = pInstance->CBFflags; + reference_inst->clientOnly = pInstance->clientOnly; + reference_inst->monitorFlags = pInstance->monitorFlags; + + HeapFree(GetProcessHeap(), 0, pInstance); /* finished - release heap space used as work store */ + + LeaveCriticalSection(&WDML_CritSect); + } + + return DMLERR_NO_ERROR; + theError: + ERR("WDML_Initialize error %x\n",ret); + HeapFree(GetProcessHeap(), 0, pInstance); + LeaveCriticalSection(&WDML_CritSect); + return ret; +} + +/****************************************************************************** + * DdeInitializeA (USER32.@) + * + * See DdeInitializeW. + */ +UINT WINAPI DdeInitializeA(LPDWORD pidInst, PFNCALLBACK pfnCallback, + DWORD afCmd, DWORD ulRes) +{ + return WDML_Initialize(pidInst, pfnCallback, afCmd, ulRes, FALSE); +} + +/****************************************************************************** + * DdeInitializeW [USER32.@] + * Registers an application with the DDEML + * + * PARAMS + * pidInst [I] Pointer to instance identifier + * pfnCallback [I] Pointer to callback function + * afCmd [I] Set of command and filter flags + * ulRes [I] Reserved + * + * RETURNS + * Success: DMLERR_NO_ERROR + * Failure: DMLERR_DLL_USAGE, DMLERR_INVALIDPARAMETER, DMLERR_SYS_ERROR + */ +UINT WINAPI DdeInitializeW(LPDWORD pidInst, PFNCALLBACK pfnCallback, + DWORD afCmd, DWORD ulRes) +{ + return WDML_Initialize(pidInst, pfnCallback, afCmd, ulRes, TRUE); +} + +/***************************************************************** + * DdeUninitialize [USER32.@] Frees DDEML resources + * + * PARAMS + * idInst [I] Instance identifier + * + * RETURNS + * Success: TRUE + * Failure: FALSE + */ + +BOOL WINAPI DdeUninitialize(DWORD idInst) +{ + /* Stage one - check if we have a handle for this instance + */ + WDML_INSTANCE* pInstance; + WDML_CONV* pConv; + WDML_CONV* pConvNext; + + TRACE("(%d)\n", idInst); + + /* First check instance + */ + pInstance = WDML_GetInstance(idInst); + if (pInstance == NULL) + { + /* + * Needs something here to record NOT_INITIALIZED ready for DdeGetLastError + */ + return FALSE; + } + + /* first terminate all conversations client side + * this shall close existing links... + */ + for (pConv = pInstance->convs[WDML_CLIENT_SIDE]; pConv != NULL; pConv = pConvNext) + { + pConvNext = pConv->next; + DdeDisconnect((HCONV)pConv); + } + if (pInstance->convs[WDML_CLIENT_SIDE]) + FIXME("still pending conversations\n"); + + /* then unregister all known service names */ + DdeNameService(idInst, 0, 0, DNS_UNREGISTER); + + /* Free the nodes that were not freed by this instance + * and remove the nodes from the list of HSZ nodes. + */ + WDML_FreeAllHSZ(pInstance); + + DestroyWindow(pInstance->hwndEvent); + + /* OK now delete the instance handle itself */ + + if (WDML_InstanceList == pInstance) + { + /* special case - the first/only entry */ + WDML_InstanceList = pInstance->next; + } + else + { + /* general case, remove entry */ + WDML_INSTANCE* inst; + + for (inst = WDML_InstanceList; inst->next != pInstance; inst = inst->next); + inst->next = pInstance->next; + } + /* release the heap entry + */ + HeapFree(GetProcessHeap(), 0, pInstance); + + return TRUE; +} + +/****************************************************************** + * WDML_NotifyThreadExit + * + * + */ +void WDML_NotifyThreadDetach(void) +{ + WDML_INSTANCE* pInstance; + WDML_INSTANCE* next; + DWORD tid = GetCurrentThreadId(); + + EnterCriticalSection(&WDML_CritSect); + for (pInstance = WDML_InstanceList; pInstance != NULL; pInstance = next) + { + next = pInstance->next; + if (pInstance->threadID == tid) + { + LeaveCriticalSection(&WDML_CritSect); + DdeUninitialize(pInstance->instanceID); + EnterCriticalSection(&WDML_CritSect); + } + } + LeaveCriticalSection(&WDML_CritSect); +} + +/****************************************************************** + * WDML_InvokeCallback + * + * + */ +HDDEDATA WDML_InvokeCallback(WDML_INSTANCE* pInstance, UINT uType, UINT uFmt, HCONV hConv, + HSZ hsz1, HSZ hsz2, HDDEDATA hdata, + ULONG_PTR dwData1, ULONG_PTR dwData2) +{ + HDDEDATA ret; + + if (pInstance == NULL) + return NULL; + + TRACE("invoking CB[%p] (%x %x %p %p %p %p %lx %lx)\n", + pInstance->callback, uType, uFmt, + hConv, hsz1, hsz2, hdata, dwData1, dwData2); + ret = pInstance->callback(uType, uFmt, hConv, hsz1, hsz2, hdata, dwData1, dwData2); + TRACE("done => %p\n", ret); + return ret; +} + +/***************************************************************************** + * WDML_GetInstance + * + * generic routine to return a pointer to the relevant DDE_HANDLE_ENTRY + * for an instance Id, or NULL if the entry does not exist + * + */ +WDML_INSTANCE* WDML_GetInstance(DWORD instId) +{ + WDML_INSTANCE* pInstance; + + EnterCriticalSection(&WDML_CritSect); + + for (pInstance = WDML_InstanceList; pInstance != NULL; pInstance = pInstance->next) + { + if (pInstance->instanceID == instId) + { + if (GetCurrentThreadId() != pInstance->threadID) + { + FIXME("Tried to get instance from wrong thread\n"); + continue; + } + break; + } + } + + LeaveCriticalSection(&WDML_CritSect); + + if (!pInstance) + WARN("Instance entry missing for id %04x\n", instId); + return pInstance; +} + +/****************************************************************** + * WDML_GetInstanceFromWnd + * + * + */ +WDML_INSTANCE* WDML_GetInstanceFromWnd(HWND hWnd) +{ + return (WDML_INSTANCE*)GetWindowLongPtrW(hWnd, GWL_WDML_INSTANCE); +} + /* ================================================================ * * Data handle management @@ -1459,7 +1473,7 @@ BOOL WINAPI DdeFreeDataHandle(HDDEDATA hData) /* 1 is the handle value returned by an asynchronous operation. */ if (hData == (HDDEDATA)1) - return TRUE; + return TRUE; return GlobalFree(hData) == 0; } @@ -1514,7 +1528,7 @@ HDDEDATA WDML_Global2DataHandle(WDML_CONV* pConv, HGLOBAL hMem, WINE_DDEH default: FIXME("Unsupported format (%04x) for data %p, passing raw information\n", pDd->cfFormat, hMem); - /* fall thru */ + /* fall through */ case 0: case CF_TEXT: ret = DdeCreateDataHandle(pConv->instance->instanceID, pDd->Value, size, 0, 0, pDd->cfFormat, 0); @@ -1573,7 +1587,7 @@ HGLOBAL WDML_DataHandle2Global(HDDEDATA hDdeData, BOOL fResponse, BOOL fRelease, default: FIXME("Unsupported format (%04x) for data %p, passing raw information\n", pDdh->cfFormat, hDdeData); - /* fall thru */ + /* fall through */ case 0: case CF_TEXT: hMem = GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE, sizeof(WINE_DDEHEAD) + dwSize); @@ -1736,6 +1750,259 @@ WDML_SERVER* WDML_FindServer(WDML_INSTANCE* pInstance, HSZ hszService, HSZ hszTo return NULL; } +/* ================================================================ + * + * Link (hot & warm) management + * + * ================================================================ */ + +/****************************************************************** + * WDML_AddLink + * + * + */ +void WDML_AddLink(WDML_INSTANCE* pInstance, HCONV hConv, WDML_SIDE side, + UINT wType, HSZ hszItem, UINT wFmt) +{ + WDML_LINK* pLink; + + pLink = HeapAlloc(GetProcessHeap(), 0, sizeof(WDML_LINK)); + if (pLink == NULL) + { + ERR("OOM\n"); + return; + } + + pLink->hConv = hConv; + pLink->transactionType = wType; + WDML_IncHSZ(pInstance, pLink->hszItem = hszItem); + pLink->uFmt = wFmt; + pLink->next = pInstance->links[side]; + pInstance->links[side] = pLink; +} + +/****************************************************************** + * WDML_RemoveLink + * + * + */ +void WDML_RemoveLink(WDML_INSTANCE* pInstance, HCONV hConv, WDML_SIDE side, + HSZ hszItem, UINT uFmt) +{ + WDML_LINK* pPrev = NULL; + WDML_LINK* pCurrent = NULL; + + pCurrent = pInstance->links[side]; + + while (pCurrent != NULL) + { + if (pCurrent->hConv == hConv && + DdeCmpStringHandles(pCurrent->hszItem, hszItem) == 0 && + pCurrent->uFmt == uFmt) + { + if (pCurrent == pInstance->links[side]) + { + pInstance->links[side] = pCurrent->next; + } + else + { + pPrev->next = pCurrent->next; + } + + WDML_DecHSZ(pInstance, pCurrent->hszItem); + HeapFree(GetProcessHeap(), 0, pCurrent); + break; + } + + pPrev = pCurrent; + pCurrent = pCurrent->next; + } +} + +/* this function is called to remove all links related to the conv. + It should be called from both client and server when terminating + the conversation. +*/ +/****************************************************************** + * WDML_RemoveAllLinks + * + * + */ +void WDML_RemoveAllLinks(WDML_INSTANCE* pInstance, WDML_CONV* pConv, WDML_SIDE side) +{ + WDML_LINK* pPrev = NULL; + WDML_LINK* pCurrent = NULL; + WDML_LINK* pNext = NULL; + + pCurrent = pInstance->links[side]; + + while (pCurrent != NULL) + { + if (pCurrent->hConv == (HCONV)pConv) + { + if (pCurrent == pInstance->links[side]) + { + pInstance->links[side] = pCurrent->next; + pNext = pCurrent->next; + } + else + { + pPrev->next = pCurrent->next; + pNext = pCurrent->next; + } + + WDML_DecHSZ(pInstance, pCurrent->hszItem); + + HeapFree(GetProcessHeap(), 0, pCurrent); + pCurrent = NULL; + } + + if (pCurrent) + { + pPrev = pCurrent; + pCurrent = pCurrent->next; + } + else + { + pCurrent = pNext; + } + } +} + +/****************************************************************** + * WDML_FindLink + * + * + */ +WDML_LINK* WDML_FindLink(WDML_INSTANCE* pInstance, HCONV hConv, WDML_SIDE side, + HSZ hszItem, BOOL use_fmt, UINT uFmt) +{ + WDML_LINK* pCurrent = NULL; + + for (pCurrent = pInstance->links[side]; pCurrent != NULL; pCurrent = pCurrent->next) + { + /* we don't need to check for transaction type as it can be altered */ + + if (pCurrent->hConv == hConv && + DdeCmpStringHandles(pCurrent->hszItem, hszItem) == 0 && + (!use_fmt || pCurrent->uFmt == uFmt)) + { + break; + } + + } + + return pCurrent; +} + +/* ================================================================ + * + * Transaction management + * + * ================================================================ */ + +/****************************************************************** + * WDML_AllocTransaction + * + * Alloc a transaction structure for handling the message ddeMsg + */ +WDML_XACT* WDML_AllocTransaction(WDML_INSTANCE* pInstance, UINT ddeMsg, + UINT wFmt, HSZ hszItem) +{ + WDML_XACT* pXAct; + static WORD tid = 1; /* FIXME: wrap around */ + + pXAct = HeapAlloc(GetProcessHeap(), 0, sizeof(WDML_XACT)); + if (!pXAct) + { + pInstance->lastError = DMLERR_MEMORY_ERROR; + return NULL; + } + + pXAct->xActID = tid++; + pXAct->ddeMsg = ddeMsg; + pXAct->hDdeData = 0; + pXAct->hUser = 0; + pXAct->next = NULL; + pXAct->wType = 0; + pXAct->wFmt = wFmt; + if ((pXAct->hszItem = hszItem)) WDML_IncHSZ(pInstance, pXAct->hszItem); + pXAct->atom = 0; + pXAct->hMem = 0; + pXAct->lParam = 0; + + return pXAct; +} + +/****************************************************************** + * WDML_QueueTransaction + * + * Adds a transaction to the list of transaction + */ +void WDML_QueueTransaction(WDML_CONV* pConv, WDML_XACT* pXAct) +{ + WDML_XACT** pt; + + /* advance to last in queue */ + for (pt = &pConv->transactions; *pt != NULL; pt = &(*pt)->next); + *pt = pXAct; +} + +/****************************************************************** + * WDML_UnQueueTransaction + * + * + */ +BOOL WDML_UnQueueTransaction(WDML_CONV* pConv, WDML_XACT* pXAct) +{ + WDML_XACT** pt; + + for (pt = &pConv->transactions; *pt; pt = &(*pt)->next) + { + if (*pt == pXAct) + { + *pt = pXAct->next; + return TRUE; + } + } + return FALSE; +} + +/****************************************************************** + * WDML_FreeTransaction + * + * + */ +void WDML_FreeTransaction(WDML_INSTANCE* pInstance, WDML_XACT* pXAct, BOOL doFreePmt) +{ + /* free pmt(s) in pXAct too. check against one for not deleting TRUE return values */ + if (doFreePmt && (ULONG_PTR)pXAct->hMem > 1) + { + GlobalFree(pXAct->hMem); + } + if (pXAct->hszItem) WDML_DecHSZ(pInstance, pXAct->hszItem); + + HeapFree(GetProcessHeap(), 0, pXAct); +} + +/****************************************************************** + * WDML_FindTransaction + * + * + */ +WDML_XACT* WDML_FindTransaction(WDML_CONV* pConv, DWORD tid) +{ + WDML_XACT* pXAct; + + tid = HIWORD(tid); + for (pXAct = pConv->transactions; pXAct; pXAct = pXAct->next) + { + if (pXAct->xActID == tid) + break; + } + return pXAct; +} + /* ================================================================ * * Conversation management @@ -1876,7 +2143,7 @@ static BOOL WDML_EnableCallback(WDML_CONV *pConv, UINT wCmd) } if (wCmd == EC_QUERYWAITING) - return pConv->transactions ? TRUE : FALSE; + return pConv->transactions != NULL; if (wCmd != EC_ENABLEALL && wCmd != EC_ENABLEONE) { @@ -2201,259 +2468,6 @@ UINT WINAPI DdeQueryConvInfo(HCONV hConv, DWORD id, PCONVINFO lpConvInfo) return ret; } -/* ================================================================ - * - * Link (hot & warm) management - * - * ================================================================ */ - -/****************************************************************** - * WDML_AddLink - * - * - */ -void WDML_AddLink(WDML_INSTANCE* pInstance, HCONV hConv, WDML_SIDE side, - UINT wType, HSZ hszItem, UINT wFmt) -{ - WDML_LINK* pLink; - - pLink = HeapAlloc(GetProcessHeap(), 0, sizeof(WDML_LINK)); - if (pLink == NULL) - { - ERR("OOM\n"); - return; - } - - pLink->hConv = hConv; - pLink->transactionType = wType; - WDML_IncHSZ(pInstance, pLink->hszItem = hszItem); - pLink->uFmt = wFmt; - pLink->next = pInstance->links[side]; - pInstance->links[side] = pLink; -} - -/****************************************************************** - * WDML_RemoveLink - * - * - */ -void WDML_RemoveLink(WDML_INSTANCE* pInstance, HCONV hConv, WDML_SIDE side, - HSZ hszItem, UINT uFmt) -{ - WDML_LINK* pPrev = NULL; - WDML_LINK* pCurrent = NULL; - - pCurrent = pInstance->links[side]; - - while (pCurrent != NULL) - { - if (pCurrent->hConv == hConv && - DdeCmpStringHandles(pCurrent->hszItem, hszItem) == 0 && - pCurrent->uFmt == uFmt) - { - if (pCurrent == pInstance->links[side]) - { - pInstance->links[side] = pCurrent->next; - } - else - { - pPrev->next = pCurrent->next; - } - - WDML_DecHSZ(pInstance, pCurrent->hszItem); - HeapFree(GetProcessHeap(), 0, pCurrent); - break; - } - - pPrev = pCurrent; - pCurrent = pCurrent->next; - } -} - -/* this function is called to remove all links related to the conv. - It should be called from both client and server when terminating - the conversation. -*/ -/****************************************************************** - * WDML_RemoveAllLinks - * - * - */ -void WDML_RemoveAllLinks(WDML_INSTANCE* pInstance, WDML_CONV* pConv, WDML_SIDE side) -{ - WDML_LINK* pPrev = NULL; - WDML_LINK* pCurrent = NULL; - WDML_LINK* pNext = NULL; - - pCurrent = pInstance->links[side]; - - while (pCurrent != NULL) - { - if (pCurrent->hConv == (HCONV)pConv) - { - if (pCurrent == pInstance->links[side]) - { - pInstance->links[side] = pCurrent->next; - pNext = pCurrent->next; - } - else - { - pPrev->next = pCurrent->next; - pNext = pCurrent->next; - } - - WDML_DecHSZ(pInstance, pCurrent->hszItem); - - HeapFree(GetProcessHeap(), 0, pCurrent); - pCurrent = NULL; - } - - if (pCurrent) - { - pPrev = pCurrent; - pCurrent = pCurrent->next; - } - else - { - pCurrent = pNext; - } - } -} - -/****************************************************************** - * WDML_FindLink - * - * - */ -WDML_LINK* WDML_FindLink(WDML_INSTANCE* pInstance, HCONV hConv, WDML_SIDE side, - HSZ hszItem, BOOL use_fmt, UINT uFmt) -{ - WDML_LINK* pCurrent = NULL; - - for (pCurrent = pInstance->links[side]; pCurrent != NULL; pCurrent = pCurrent->next) - { - /* we don't need to check for transaction type as it can be altered */ - - if (pCurrent->hConv == hConv && - DdeCmpStringHandles(pCurrent->hszItem, hszItem) == 0 && - (!use_fmt || pCurrent->uFmt == uFmt)) - { - break; - } - - } - - return pCurrent; -} - -/* ================================================================ - * - * Transaction management - * - * ================================================================ */ - -/****************************************************************** - * WDML_AllocTransaction - * - * Alloc a transaction structure for handling the message ddeMsg - */ -WDML_XACT* WDML_AllocTransaction(WDML_INSTANCE* pInstance, UINT ddeMsg, - UINT wFmt, HSZ hszItem) -{ - WDML_XACT* pXAct; - static WORD tid = 1; /* FIXME: wrap around */ - - pXAct = HeapAlloc(GetProcessHeap(), 0, sizeof(WDML_XACT)); - if (!pXAct) - { - pInstance->lastError = DMLERR_MEMORY_ERROR; - return NULL; - } - - pXAct->xActID = tid++; - pXAct->ddeMsg = ddeMsg; - pXAct->hDdeData = 0; - pXAct->hUser = 0; - pXAct->next = NULL; - pXAct->wType = 0; - pXAct->wFmt = wFmt; - if ((pXAct->hszItem = hszItem)) WDML_IncHSZ(pInstance, pXAct->hszItem); - pXAct->atom = 0; - pXAct->hMem = 0; - pXAct->lParam = 0; - - return pXAct; -} - -/****************************************************************** - * WDML_QueueTransaction - * - * Adds a transaction to the list of transaction - */ -void WDML_QueueTransaction(WDML_CONV* pConv, WDML_XACT* pXAct) -{ - WDML_XACT** pt; - - /* advance to last in queue */ - for (pt = &pConv->transactions; *pt != NULL; pt = &(*pt)->next); - *pt = pXAct; -} - -/****************************************************************** - * WDML_UnQueueTransaction - * - * - */ -BOOL WDML_UnQueueTransaction(WDML_CONV* pConv, WDML_XACT* pXAct) -{ - WDML_XACT** pt; - - for (pt = &pConv->transactions; *pt; pt = &(*pt)->next) - { - if (*pt == pXAct) - { - *pt = pXAct->next; - return TRUE; - } - } - return FALSE; -} - -/****************************************************************** - * WDML_FreeTransaction - * - * - */ -void WDML_FreeTransaction(WDML_INSTANCE* pInstance, WDML_XACT* pXAct, BOOL doFreePmt) -{ - /* free pmt(s) in pXAct too. check against one for not deleting TRUE return values */ - if (doFreePmt && (ULONG_PTR)pXAct->hMem > 1) - { - GlobalFree(pXAct->hMem); - } - if (pXAct->hszItem) WDML_DecHSZ(pInstance, pXAct->hszItem); - - HeapFree(GetProcessHeap(), 0, pXAct); -} - -/****************************************************************** - * WDML_FindTransaction - * - * - */ -WDML_XACT* WDML_FindTransaction(WDML_CONV* pConv, DWORD tid) -{ - WDML_XACT* pXAct; - - tid = HIWORD(tid); - for (pXAct = pConv->transactions; pXAct; pXAct = pXAct->next) - { - if (pXAct->xActID == tid) - break; - } - return pXAct; -} - /* ================================================================ * * Information broadcast across DDEML implementations diff --git a/reactos/win32ss/user/user32/misc/ddeclient.c b/reactos/win32ss/user/user32/misc/ddeclient.c index 723a1b1b9e4..1a7ca94a927 100644 --- a/reactos/win32ss/user/user32/misc/ddeclient.c +++ b/reactos/win32ss/user/user32/misc/ddeclient.c @@ -30,8 +30,8 @@ WINE_DEFAULT_DEBUG_CHANNEL(ddeml); static LRESULT CALLBACK WDML_ClientProc(HWND, UINT, WPARAM, LPARAM); /* only for one client, not conv list */ -const char WDML_szClientConvClassA[] = "DdeClientAnsi"; -const WCHAR WDML_szClientConvClassW[] = {'D','d','e','C','l','i','e','n','t','U','n','i','c','o','d','e',0}; +const char WDML_szClientConvClassA[] = "DDEMLAnsiClient"; +const WCHAR WDML_szClientConvClassW[] = {'D','D','E','M','L','U','n','i','c','o','d','e','C','l','i','e','n','t',0}; /****************************************************************************** * DdeConnectList [USER32.@] Establishes conversation with DDE servers @@ -91,7 +91,7 @@ HCONV WINAPI DdeConnect(DWORD idInst, HSZ hszService, HSZ hszTopic, WDML_CONV* pConv = NULL; ATOM aSrv = 0, aTpc = 0; - TRACE("(0x%x,%p,%p,%p)\n", idInst, hszService, hszTopic, pCC); + ERR("(0x%x,%p,%p,%p)\n", idInst, hszService, hszTopic, pCC); pInstance = WDML_GetInstance(idInst); if (!pInstance) @@ -166,7 +166,7 @@ HCONV WINAPI DdeConnect(DWORD idInst, HSZ hszService, HSZ hszTopic, /* note: sent messages shall not use packing */ SendMessageTimeoutW( HWND_BROADCAST, WM_DDE_INITIATE, (WPARAM)hwndClient, MAKELPARAM(aSrv, aTpc), - SMTO_ABORTIFHUNG, 2000, NULL ); + SMTO_ABORTIFHUNG, 0, NULL ); pInstance = WDML_GetInstance(idInst); if (!pInstance) @@ -180,12 +180,12 @@ HCONV WINAPI DdeConnect(DWORD idInst, HSZ hszService, HSZ hszTopic, pConv = WDML_GetConvFromWnd(hwndClient); if (pConv == NULL || pConv->hwndServer == 0) { - WARN("Done with INITIATE, but no Server window available\n"); + ERR("Done with INITIATE, but no Server window available %p\n", (pConv ? pConv->hwndServer : NULL)); pConv = NULL; pInstance->lastError = DMLERR_NO_CONV_ESTABLISHED; goto theEnd; } - TRACE("Connected to Server window (%p)\n", pConv->hwndServer); + ERR("Connected to Server window (%p)\n", pConv->hwndServer); pConv->wConvst = XST_CONNECTED; /* finish init of pConv */ @@ -312,8 +312,8 @@ static WDML_XACT* WDML_ClientQueueAdvise(WDML_CONV* pConv, UINT wType, UINT wFmt /* pack DdeAdvise */ pDdeAdvise = GlobalLock(pXAct->hMem); - pDdeAdvise->fAckReq = (wType & XTYPF_ACKREQ) ? TRUE : FALSE; - pDdeAdvise->fDeferUpd = (wType & XTYPF_NODATA) ? TRUE : FALSE; + pDdeAdvise->fAckReq = (wType & XTYPF_ACKREQ) != 0; + pDdeAdvise->fDeferUpd = (wType & XTYPF_NODATA) != 0; pDdeAdvise->cfFormat = wFmt; GlobalUnlock(pXAct->hMem); @@ -848,7 +848,7 @@ static WDML_QUEUE_STATE WDML_HandleIncomingData(WDML_CONV* pConv, MSG* msg, HDDE * XTYP_ADVDATA and callback should return the proper status. */ pLink = WDML_FindLink(pConv->instance, (HCONV)pConv, WDML_CLIENT_SIDE, hsz, - uiLo ? TRUE : FALSE, wdh.cfFormat); + uiLo != 0, wdh.cfFormat); if (!pLink) { WDML_DecHSZ(pConv->instance, hsz); @@ -1008,22 +1008,20 @@ static WDML_QUEUE_STATE WDML_HandleReply(WDML_CONV* pConv, MSG* msg, HDDEDATA* h */ static HDDEDATA WDML_SyncWaitTransactionReply(HCONV hConv, DWORD dwTimeout, const WDML_XACT* pXAct, DWORD *ack) { - DWORD dwTime; + DWORD start, elapsed; DWORD err; WDML_CONV* pConv; - TRACE("Starting wait for a timeout of %d ms\n", dwTimeout); + ERR("Starting wait for a timeout of %d ms\n", dwTimeout); - /* FIXME: time 32 bit wrap around */ - dwTimeout += GetCurrentTime(); - - while ((dwTime = GetCurrentTime()) < dwTimeout) + start = GetTickCount(); + while ((elapsed = GetTickCount() - start) < dwTimeout) { /* we cannot be in the crit sect all the time because when client and server run in a * single process they need to share the access to the internal data */ if (MsgWaitForMultipleObjects(0, NULL, FALSE, - dwTimeout - dwTime, QS_POSTMESSAGE) == WAIT_OBJECT_0) + dwTimeout - elapsed, QS_POSTMESSAGE) == WAIT_OBJECT_0) { MSG msg; @@ -1034,16 +1032,18 @@ static HDDEDATA WDML_SyncWaitTransactionReply(HCONV hConv, DWORD dwTimeout, cons pConv = WDML_GetConv(hConv, FALSE); if (pConv == NULL) { + ERR("conversation no longer available\n"); /* conversation no longer available... return failure */ return 0; } + ERR("Msg hWnd %p & Client %p\n",msg.hwnd,pConv->hwndClient); if (msg.hwnd == pConv->hwndClient) { /* check that either pXAct has been processed or no more xActions are pending */ BOOL ret = (pConv->transactions == pXAct); if (WDML_HandleReply(pConv, &msg, &hdd, ack) == WDML_QS_HANDLED) { - TRACE("WDML_HandleReply returned WDML_QS_HANDLED\n"); + ERR("WDML_HandleReply returned WDML_QS_HANDLED\n"); ret = TRUE; } else @@ -1057,13 +1057,14 @@ static HDDEDATA WDML_SyncWaitTransactionReply(HCONV hConv, DWORD dwTimeout, cons } else { + ERR("Dispatching message\n"); DispatchMessageW(&msg); } } } } - TRACE("Timeout !!\n"); + ERR("Timeout !!\n"); pConv = WDML_GetConv(hConv, FALSE); if (pConv != NULL) @@ -1143,6 +1144,7 @@ HDDEDATA WINAPI DdeClientTransaction(LPBYTE pData, DWORD cbData, HCONV hConv, HS if (pConv == NULL) { /* cannot set error... cannot get back to DDE instance */ + ERR("No Conv!\n"); return 0; } @@ -1237,14 +1239,18 @@ BOOL WINAPI DdeAbandonTransaction(DWORD idInst, HCONV hConv, DWORD idTransaction { if ((pConv = WDML_GetConv(hConv, TRUE)) && pConv->instance == pInstance) { - for (pXAct = pConv->transactions; pXAct; pXAct = pXAct->next) - { + + pXAct = pConv->transactions; + while (pXAct) { + WDML_XACT *nextXAct = pXAct->next; + if (pXAct->dwTimeout == TIMEOUT_ASYNC && (idTransaction == 0 || pXAct->xActID == idTransaction)) { WDML_UnQueueTransaction(pConv, pXAct); WDML_FreeTransaction(pInstance, pXAct, TRUE); } + pXAct = nextXAct; } } } @@ -1253,13 +1259,16 @@ BOOL WINAPI DdeAbandonTransaction(DWORD idInst, HCONV hConv, DWORD idTransaction for (pConv = pInstance->convs[WDML_CLIENT_SIDE]; pConv; pConv = pConv->next) { if (!(pConv->wStatus & ST_CONNECTED)) continue; - for (pXAct = pConv->transactions; pXAct; pXAct = pXAct->next) - { + pXAct = pConv->transactions; + while (pXAct) { + WDML_XACT *nextXAct = pXAct->next; + if (pXAct->dwTimeout == TIMEOUT_ASYNC) { WDML_UnQueueTransaction(pConv, pXAct); WDML_FreeTransaction(pInstance, pXAct, TRUE); } + pXAct = nextXAct; } } } @@ -1278,16 +1287,18 @@ static LRESULT CALLBACK WDML_ClientProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPA UINT uiLo, uiHi; WDML_CONV* pConv = NULL; HSZ hszSrv, hszTpc; + char buf[256]; + WDML_INSTANCE* pInstance; - TRACE("%p %04x %08lx %08lx\n", hwnd, iMsg, wParam , lParam); + ERR("%p %04x %08lx %08lx\n", hwnd, iMsg, wParam , lParam); - if (iMsg == WM_DDE_ACK && /* in the initial WM_INITIATE sendmessage */ - ((pConv = WDML_GetConvFromWnd(hwnd)) == NULL || pConv->wStatus == XST_INIT1)) + if (iMsg == WM_DDE_ACK && + (!(pConv = WDML_GetConvFromWnd(hwnd)) || pConv->wStatus == XST_INIT1)) { + + ERR("WM_DDE_ACK\n"); /* In response to WM_DDE_INITIATE, save server window */ - char buf[256]; - WDML_INSTANCE* pInstance; /* note: sent messages do not need packing */ uiLo = LOWORD(lParam); diff --git a/reactos/win32ss/user/user32/misc/ddeserver.c b/reactos/win32ss/user/user32/misc/ddeserver.c index 087431a8931..711fbc24c4e 100644 --- a/reactos/win32ss/user/user32/misc/ddeserver.c +++ b/reactos/win32ss/user/user32/misc/ddeserver.c @@ -30,8 +30,8 @@ WINE_DEFAULT_DEBUG_CHANNEL(ddeml); static const WCHAR szServerNameClass[] = {'D','d','e','S','e','r','v','e','r','N','a','m','e',0}; -const char WDML_szServerConvClassA[] = "DdeServerConvAnsi"; -const WCHAR WDML_szServerConvClassW[] = {'D','d','e','S','e','r','v','e','r','C','o','n','v','U','n','i','c','o','d','e',0}; +const char WDML_szServerConvClassA[] = "DdeServerConvA"; +const WCHAR WDML_szServerConvClassW[] = {'D','d','e','S','e','r','v','e','r','C','o','n','v','W',0}; static LRESULT CALLBACK WDML_ServerNameProc(HWND, UINT, WPARAM, LPARAM); static LRESULT CALLBACK WDML_ServerConvProc(HWND, UINT, WPARAM, LPARAM); @@ -62,7 +62,7 @@ BOOL WINAPI DdePostAdvise(DWORD idInst, HSZ hszTopic, HSZ hszItem) pInstance = WDML_GetInstance(idInst); - if (pInstance == NULL || pInstance->links == NULL) + if (pInstance == NULL) return FALSE; atom = WDML_MakeAtomFromHsz(hszItem); @@ -135,7 +135,7 @@ BOOL WINAPI DdePostAdvise(DWORD idInst, HSZ hszTopic, HSZ hszItem) return TRUE; theError: - if (atom) GlobalDeleteAtom(atom); + GlobalDeleteAtom(atom); return FALSE; } @@ -380,12 +380,12 @@ static LRESULT CALLBACK WDML_ServerNameProc(HWND hwndServer, UINT iMsg, WPARAM w LOWORD(lParam) -- application atom HIWORD(lParam) -- topic atom */ - TRACE("WM_DDE_INITIATE message received!\n"); + ERR("WM_DDE_INITIATE message received!\n"); hwndClient = (HWND)wParam; pInstance = WDML_GetInstanceFromWnd(hwndServer); - TRACE("idInst=%d, threadID=0x%x\n", pInstance->instanceID, GetCurrentThreadId()); if (!pInstance) return 0; + ERR("idInst=%d, threadID=0x%x\n", pInstance->instanceID, GetCurrentThreadId()); /* don't free DDEParams, since this is a broadcast */ UnpackDDElParam(WM_DDE_INITIATE, lParam, &uiLo, &uiHi); @@ -708,7 +708,7 @@ static WDML_QUEUE_STATE WDML_ServerHandleUnadvise(WDML_CONV* pConv, WDML_XACT* p pXAct->hszItem, TRUE, pXAct->wFmt); if (pLink == NULL) { - ERR("Couln'd find link for %p, dropping request\n", pXAct->hszItem); + ERR("Couldn't find link for %p, dropping request\n", pXAct->hszItem); FreeDDElParam(WM_DDE_UNADVISE, pXAct->lParam); return WDML_QS_ERROR; } @@ -748,6 +748,54 @@ static WDML_XACT* WDML_ServerQueueExecute(WDML_CONV* pConv, LPARAM lParam) return pXAct; } +static BOOL data_looks_unicode( const WCHAR *data, DWORD size ) +{ + DWORD i; + + if (size % sizeof(WCHAR)) return FALSE; + for (i = 0; i < size / sizeof(WCHAR); i++) if (data[i] > 255) return FALSE; + return TRUE; +} + +/* convert data to Unicode, unless it looks like it's already Unicode */ +static HDDEDATA map_A_to_W( DWORD instance, void *ptr, DWORD size ) +{ + HDDEDATA ret; + DWORD len; + const char *end; + + if (!data_looks_unicode( ptr, size )) + { + if ((end = memchr( ptr, 0, size ))) size = end + 1 - (const char *)ptr; + len = MultiByteToWideChar( CP_ACP, 0, ptr, size, NULL, 0 ); + ret = DdeCreateDataHandle( instance, NULL, len * sizeof(WCHAR), 0, 0, CF_TEXT, 0); + MultiByteToWideChar( CP_ACP, 0, ptr, size, (WCHAR *)DdeAccessData(ret, NULL), len ); + } + else ret = DdeCreateDataHandle( instance, ptr, size, 0, 0, CF_TEXT, 0 ); + + return ret; +} + +/* convert data to ASCII, unless it looks like it's not in Unicode format */ +static HDDEDATA map_W_to_A( DWORD instance, void *ptr, DWORD size ) +{ + HDDEDATA ret; + DWORD len; + const WCHAR *end; + + if (data_looks_unicode( ptr, size )) + { + size /= sizeof(WCHAR); + if ((end = memchrW( ptr, 0, size ))) size = end + 1 - (const WCHAR *)ptr; + len = WideCharToMultiByte( CP_ACP, 0, ptr, size, NULL, 0, NULL, NULL ); + ret = DdeCreateDataHandle( instance, NULL, len, 0, 0, CF_TEXT, 0); + WideCharToMultiByte( CP_ACP, 0, ptr, size, (char *)DdeAccessData(ret, NULL), len, NULL, NULL ); + } + else ret = DdeCreateDataHandle( instance, ptr, size, 0, 0, CF_TEXT, 0 ); + + return ret; +} + /****************************************************************** * WDML_ServerHandleExecute * @@ -761,11 +809,16 @@ static WDML_QUEUE_STATE WDML_ServerHandleExecute(WDML_CONV* pConv, WDML_XACT* pX if (!(pConv->instance->CBFflags & CBF_FAIL_EXECUTES)) { LPVOID ptr = GlobalLock(pXAct->hMem); + DWORD size = GlobalSize(pXAct->hMem); if (ptr) { - hDdeData = DdeCreateDataHandle(pConv->instance->instanceID, ptr, GlobalSize(pXAct->hMem), - 0, 0, CF_TEXT, 0); + if (pConv->instance->unicode) /* Unicode server, try to map A->W */ + hDdeData = map_A_to_W( pConv->instance->instanceID, ptr, size ); + else if (!IsWindowUnicode( pConv->hwndClient )) /* ASCII server and client, try to map W->A */ + hDdeData = map_W_to_A( pConv->instance->instanceID, ptr, size ); + else + hDdeData = DdeCreateDataHandle(pConv->instance->instanceID, ptr, size, 0, 0, CF_TEXT, 0); GlobalUnlock(pXAct->hMem); } hDdeData = WDML_InvokeCallback(pConv->instance, XTYP_EXECUTE, 0, (HCONV)pConv, From 590447888e1b2d49a2c00344acff63fe3ca8153c Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Tue, 20 May 2014 21:11:43 +0000 Subject: [PATCH 003/232] [NTOSKRNL] Fix ending address calculation for the commit path in NtAllocateVirtualMemory like done for the reserve path in r63356. Add a comment about a Windows kernel bug, which we will keep for now, until the implications are better determined. svn path=/trunk/; revision=63388 --- reactos/ntoskrnl/mm/ARM3/virtual.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/reactos/ntoskrnl/mm/ARM3/virtual.c b/reactos/ntoskrnl/mm/ARM3/virtual.c index 935fc971dda..3eef793fcd9 100644 --- a/reactos/ntoskrnl/mm/ARM3/virtual.c +++ b/reactos/ntoskrnl/mm/ARM3/virtual.c @@ -4593,8 +4593,8 @@ NtAllocateVirtualMemory(IN HANDLE ProcessHandle, // on the user input, and then compute the actual region size once all the // alignments have been done. // - StartingAddress = (ULONG_PTR)PAGE_ALIGN(PBaseAddress); EndingAddress = (((ULONG_PTR)PBaseAddress + PRegionSize - 1) | (PAGE_SIZE - 1)); + StartingAddress = (ULONG_PTR)PAGE_ALIGN(PBaseAddress); PRegionSize = EndingAddress - StartingAddress + 1; // @@ -4700,6 +4700,12 @@ NtAllocateVirtualMemory(IN HANDLE ProcessHandle, { // // Make sure it's okay to touch it + // Note: The Windows 2003 kernel has a bug here, passing the + // unaligned base address together with the aligned size, + // potentially covering a region larger than the actual allocation. + // Might be exposed through NtGdiCreateDIBSection w/ section handle + // For now we keep this behavior. + // TODO: analyze possible implications, create test case // Status = MiCheckSecuredVad(FoundVad, PBaseAddress, From aede864303310416cff8dd3db5fe9faad54185f6 Mon Sep 17 00:00:00 2001 From: Christoph von Wittich Date: Tue, 20 May 2014 21:29:27 +0000 Subject: [PATCH 004/232] [urlmon_winetest] -Fixed some occasionally failing tests. Patch by Jacek Caban (sync to wine head) svn path=/trunk/; revision=63389 --- rostests/winetests/urlmon/url.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/rostests/winetests/urlmon/url.c b/rostests/winetests/urlmon/url.c index 820c93fd56b..132d64f5a33 100644 --- a/rostests/winetests/urlmon/url.c +++ b/rostests/winetests/urlmon/url.c @@ -2818,6 +2818,7 @@ static BOOL test_RegisterBindStatusCallback(void) #define BINDTEST_ABORT_START 0x0400 #define BINDTEST_ABORT_PROGRESS 0x0800 #define BINDTEST_ASYNC_SWITCH 0x1000 +#define BINDTEST_ALLOW_FINDINGRESOURCE 0x2000 static void init_bind_test(int protocol, DWORD flags, DWORD t) { @@ -2893,9 +2894,11 @@ static void test_BindToStorage(int protocol, DWORD flags, DWORD t) MSG msg; IBindStatusCallback *previousclb; IUnknown *unk = (IUnknown*)0x00ff00ff; + BOOL allow_finding_resource; IBinding *bind; init_bind_test(protocol, flags, t); + allow_finding_resource = (flags & BINDTEST_ALLOW_FINDINGRESOURCE) != 0; if(no_callback) { hres = CreateBindCtx(0, &bctx); @@ -2975,7 +2978,7 @@ static void test_BindToStorage(int protocol, DWORD flags, DWORD t) SET_EXPECT(BeginningTransaction); SET_EXPECT(QueryInterface_IHttpNegotiate2); SET_EXPECT(GetRootSecurityId); - if(http_is_first) + if(http_is_first || allow_finding_resource) SET_EXPECT(OnProgress_FINDINGRESOURCE); SET_EXPECT(OnProgress_CONNECTING); } @@ -3133,6 +3136,8 @@ static void test_BindToStorage(int protocol, DWORD flags, DWORD t) CLEAR_CALLED(OnProgress_CONNECTING); } }else if(!abort_start) { + if(allow_finding_resource) + CLEAR_CALLED(OnProgress_FINDINGRESOURCE); /* IE7 does call this */ CLEAR_CALLED(OnProgress_CONNECTING); } @@ -3959,7 +3964,7 @@ START_TEST(url) test_BindToObject(HTTP_TEST, 0, S_OK); trace("http test (short response)...\n"); - test_BindToStorage(HTTP_TEST, BINDTEST_HTTPRESPONSE, TYMED_ISTREAM); + test_BindToStorage(HTTP_TEST, BINDTEST_HTTPRESPONSE|BINDTEST_ALLOW_FINDINGRESOURCE, TYMED_ISTREAM); trace("http test (short response, to object)...\n"); test_BindToObject(HTTP_TEST, 0, S_OK); @@ -3973,7 +3978,7 @@ START_TEST(url) test_BindToStorage(HTTP_TEST, BINDTEST_ABORT_START, TYMED_FILE); trace("http test (abort progress)...\n"); - test_BindToStorage(HTTP_TEST, BINDTEST_ABORT_PROGRESS, TYMED_FILE); + test_BindToStorage(HTTP_TEST, BINDTEST_ABORT_PROGRESS|BINDTEST_ALLOW_FINDINGRESOURCE, TYMED_FILE); trace("emulated http test...\n"); test_BindToStorage(HTTP_TEST, BINDTEST_EMULATE, TYMED_ISTREAM); @@ -4086,3 +4091,4 @@ START_TEST(url) CloseHandle(complete_event2); CoUninitialize(); } + From c71be46956b453e94109903e8589ecb0e70f35da Mon Sep 17 00:00:00 2001 From: David Quintana Date: Tue, 20 May 2014 22:33:26 +0000 Subject: [PATCH 005/232] Fix KeSaveFloatingPointState. It was working once upon a time, but the fix was lost on some refactoring. I was told to blame it on Arch. svn path=/trunk/; revision=63390 --- reactos/ntoskrnl/ke/i386/cpu.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/reactos/ntoskrnl/ke/i386/cpu.c b/reactos/ntoskrnl/ke/i386/cpu.c index 2d741ab6144..b56414ce0a7 100644 --- a/reactos/ntoskrnl/ke/i386/cpu.c +++ b/reactos/ntoskrnl/ke/i386/cpu.c @@ -1432,7 +1432,8 @@ KeSaveFloatingPointState(OUT PKFLOATING_SAVE Save) #else __asm { - fnsave [FpState] + mov eax, [FpState] + fnsave [eax] }; #endif From 6a96b1732b600c89669eae901cb684ba0eb9fb5d Mon Sep 17 00:00:00 2001 From: David Quintana Date: Tue, 20 May 2014 22:51:38 +0000 Subject: [PATCH 006/232] I was noted that I forgot to also apply the same fix to the KeRestoreFloatingPointState function. Also, for reference: r23894 contained working implemnentations in fpu.c. In r23895 ion "moved" it to cpu.c, killing the MSVC implementation in the process. In 23972, ion added new MSVC code for it, but this new version had the bug. It has remained undiscovered until very recently. svn path=/trunk/; revision=63391 --- reactos/ntoskrnl/ke/i386/cpu.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/reactos/ntoskrnl/ke/i386/cpu.c b/reactos/ntoskrnl/ke/i386/cpu.c index b56414ce0a7..09568113b65 100644 --- a/reactos/ntoskrnl/ke/i386/cpu.c +++ b/reactos/ntoskrnl/ke/i386/cpu.c @@ -1459,7 +1459,8 @@ KeRestoreFloatingPointState(IN PKFLOATING_SAVE Save) __asm { fnclex - frstor [FpState] + mov eax, [FpState] + frstor [eax] }; #endif From 8cbded8053d2519e53c88ff743ca618387d9b448 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Tue, 20 May 2014 23:48:36 +0000 Subject: [PATCH 007/232] [USETUP] - Implement creation of extended partitions. - Add creation checks for primary and extended partitions. svn path=/trunk/; revision=63392 --- reactos/base/setup/usetup/errorcode.h | 9 +- reactos/base/setup/usetup/interface/usetup.c | 207 ++++++++++++++-- reactos/base/setup/usetup/lang/bg-BG.h | 51 +++- reactos/base/setup/usetup/lang/cs-CZ.h | 51 +++- reactos/base/setup/usetup/lang/de-DE.h | 48 +++- reactos/base/setup/usetup/lang/el-GR.h | 51 +++- reactos/base/setup/usetup/lang/en-US.h | 48 +++- reactos/base/setup/usetup/lang/es-ES.h | 51 +++- reactos/base/setup/usetup/lang/et-EE.h | 51 +++- reactos/base/setup/usetup/lang/fr-FR.h | 51 +++- reactos/base/setup/usetup/lang/he-IL.h | 49 +++- reactos/base/setup/usetup/lang/it-IT.h | 49 +++- reactos/base/setup/usetup/lang/ja-JP.h | 51 +++- reactos/base/setup/usetup/lang/lt-LT.h | 48 +++- reactos/base/setup/usetup/lang/nl-NL.h | 51 +++- reactos/base/setup/usetup/lang/pl-PL.h | 49 +++- reactos/base/setup/usetup/lang/pt-BR.h | 51 +++- reactos/base/setup/usetup/lang/ro-RO.h | 51 +++- reactos/base/setup/usetup/lang/ru-RU.h | 51 +++- reactos/base/setup/usetup/lang/sk-SK.h | 51 +++- reactos/base/setup/usetup/lang/sq-AL.h | 49 +++- reactos/base/setup/usetup/lang/sv-SE.h | 51 +++- reactos/base/setup/usetup/lang/tr-TR.h | 51 +++- reactos/base/setup/usetup/lang/uk-UA.h | 51 +++- reactos/base/setup/usetup/mui.h | 3 + reactos/base/setup/usetup/partlist.c | 244 ++++++++++++++++++- reactos/base/setup/usetup/partlist.h | 15 +- reactos/base/setup/usetup/usetup.h | 3 +- 28 files changed, 1498 insertions(+), 88 deletions(-) diff --git a/reactos/base/setup/usetup/errorcode.h b/reactos/base/setup/usetup/errorcode.h index 8bb5a43d308..0acfbd67b1f 100644 --- a/reactos/base/setup/usetup/errorcode.h +++ b/reactos/base/setup/usetup/errorcode.h @@ -28,7 +28,8 @@ typedef enum { - ERROR_NOT_INSTALLED = 0, + NOT_AN_ERROR = 0, + ERROR_NOT_INSTALLED, ERROR_NO_HDD, ERROR_NO_SOURCE_DRIVE, ERROR_LOAD_TXTSETUPSIF, @@ -67,6 +68,12 @@ typedef enum ERROR_UPDATE_GEOID, ERROR_INSUFFICIENT_DISKSPACE, + ERROR_PARTITION_TABLE_FULL, + ERROR_ONLY_ONE_EXTENDED, + ERROR_NOT_BEHIND_EXTENDED, + ERROR_EXTENDED_NOT_LAST, + + ERROR_LAST_ERROR_CODE }ERROR_NUMBER; diff --git a/reactos/base/setup/usetup/interface/usetup.c b/reactos/base/setup/usetup/interface/usetup.c index c0c597e617c..af5e16fd99b 100644 --- a/reactos/base/setup/usetup/interface/usetup.c +++ b/reactos/base/setup/usetup/interface/usetup.c @@ -1463,12 +1463,14 @@ IsDiskSizeValid(PPARTENTRY PartEntry) static PAGE_NUMBER SelectPartitionPage(PINPUT_RECORD Ir) { + ULONG Error; + MUIDisplayPage(SELECT_PARTITION_PAGE); if (PartitionList == NULL) { PartitionList = CreatePartitionList(2, - 19, + 21, xScreen - 3, yScreen - 3); if (PartitionList == NULL) @@ -1521,9 +1523,9 @@ SelectPartitionPage(PINPUT_RECORD Ir) return SELECT_PARTITION_PAGE; /* let the user select another partition */ } #endif - CreateNewPartition(PartitionList, - PartitionList->CurrentPartition->SectorCount.QuadPart, - TRUE); + CreatePrimaryPartition(PartitionList, + PartitionList->CurrentPartition->SectorCount.QuadPart, + TRUE); DestinationDriveLetter = (WCHAR)PartitionList->CurrentPartition->DriveLetter; @@ -1553,6 +1555,10 @@ SelectPartitionPage(PINPUT_RECORD Ir) { CONSOLE_SetStatusText(MUIGetString(STRING_INSTALLCREATEPARTITION)); } + else if (IsContainerPartition(PartitionList->CurrentPartition->PartitionType)) + { + CONSOLE_SetStatusText(MUIGetString(STRING_DELETEPARTITION)); + } else { CONSOLE_SetStatusText(MUIGetString(STRING_INSTALLDELETEPARTITION)); @@ -1591,27 +1597,42 @@ SelectPartitionPage(PINPUT_RECORD Ir) return SELECT_PARTITION_PAGE; /* let the user select another partition */ } #endif + if (IsContainerPartition(PartitionList->CurrentPartition->PartitionType)) + continue; //return SELECT_PARTITION_PAGE; + if (PartitionList->CurrentPartition == NULL || PartitionList->CurrentPartition->IsPartitioned == FALSE) { - CreateNewPartition(PartitionList, - 0ULL, - TRUE); + CreatePrimaryPartition(PartitionList, + 0ULL, + TRUE); } DestinationDriveLetter = (WCHAR)PartitionList->CurrentPartition->DriveLetter; return SELECT_FILE_SYSTEM_PAGE; } - else if (Ir->Event.KeyEvent.wVirtualKeyCode == 'C') /* C */ + else if (Ir->Event.KeyEvent.wVirtualKeyCode == 'P') /* P */ { - if (PartitionList->CurrentPartition->IsPartitioned == TRUE) + Error = PrimaryPartitionCreationChecks(PartitionList); + if (Error != NOT_AN_ERROR) { - MUIDisplayError(ERROR_NEW_PARTITION, Ir, POPUP_WAIT_ANY_KEY); + MUIDisplayError(Error, Ir, POPUP_WAIT_ANY_KEY); return SELECT_PARTITION_PAGE; } - return CREATE_PARTITION_PAGE; + return CREATE_PRIMARY_PARTITION_PAGE; + } + else if (Ir->Event.KeyEvent.wVirtualKeyCode == 'E') /* E */ + { + Error = ExtendedPartitionCreationChecks(PartitionList); + if (Error != NOT_AN_ERROR) + { + MUIDisplayError(Error, Ir, POPUP_WAIT_ANY_KEY); + return SELECT_PARTITION_PAGE; + } + + return CREATE_EXTENDED_PARTITION_PAGE; } else if (Ir->Event.KeyEvent.wVirtualKeyCode == 'D') /* D */ { @@ -1773,7 +1794,7 @@ ShowPartitionSizeInputBox(SHORT Left, static PAGE_NUMBER -CreatePartitionPage(PINPUT_RECORD Ir) +CreatePrimaryPartitionPage(PINPUT_RECORD Ir) { PDISKENTRY DiskEntry; PPARTENTRY PartEntry; @@ -1907,15 +1928,161 @@ CreatePartitionPage(PINPUT_RECORD Ir) DPRINT ("Partition size: %I64u bytes\n", PartSize); - CreateNewPartition(PartitionList, - SectorCount, - FALSE); + CreatePrimaryPartition(PartitionList, + SectorCount, + FALSE); return SELECT_PARTITION_PAGE; } } - return CREATE_PARTITION_PAGE; + return CREATE_PRIMARY_PARTITION_PAGE; +} + + +static PAGE_NUMBER +CreateExtendedPartitionPage(PINPUT_RECORD Ir) +{ + PDISKENTRY DiskEntry; + PPARTENTRY PartEntry; + BOOLEAN Quit; + BOOLEAN Cancel; + CHAR InputBuffer[50]; + ULONG MaxSize; + ULONGLONG PartSize; + ULONGLONG DiskSize; + ULONGLONG SectorCount; + PCHAR Unit; + + if (PartitionList == NULL || + PartitionList->CurrentDisk == NULL || + PartitionList->CurrentPartition == NULL) + { + /* FIXME: show an error dialog */ + return QUIT_PAGE; + } + + DiskEntry = PartitionList->CurrentDisk; + PartEntry = PartitionList->CurrentPartition; + + CONSOLE_SetStatusText(MUIGetString(STRING_PLEASEWAIT)); + + CONSOLE_SetTextXY(6, 8, MUIGetString(STRING_CHOOSE_NEW_EXTENDED_PARTITION)); + + DiskSize = DiskEntry->SectorCount.QuadPart * DiskEntry->BytesPerSector; +#if 0 + if (DiskSize >= 10737418240) /* 10 GB */ + { + DiskSize = DiskSize / 1073741824; + Unit = MUIGetString(STRING_GB); + } + else +#endif + { + DiskSize = DiskSize / 1048576; + if (DiskSize == 0) + DiskSize = 1; + + Unit = MUIGetString(STRING_MB); + } + + if (DiskEntry->DriverName.Length > 0) + { + CONSOLE_PrintTextXY(6, 10, + MUIGetString(STRING_HDINFOPARTCREATE), + DiskSize, + Unit, + DiskEntry->DiskNumber, + DiskEntry->Port, + DiskEntry->Bus, + DiskEntry->Id, + &DiskEntry->DriverName); + } + else + { + CONSOLE_PrintTextXY(6, 10, + MUIGetString(STRING_HDDINFOUNK1), + DiskSize, + Unit, + DiskEntry->DiskNumber, + DiskEntry->Port, + DiskEntry->Bus, + DiskEntry->Id); + } + + CONSOLE_SetTextXY(6, 12, MUIGetString(STRING_HDDSIZE)); + +#if 0 + CONSOLE_PrintTextXY(8, 10, "Maximum size of the new partition is %I64u MB", + PartitionList->CurrentPartition->SectorCount * DiskEntry->BytesPerSector / 1048576); +#endif + + CONSOLE_SetStatusText(MUIGetString(STRING_CREATEPARTITION)); + + PartEntry = PartitionList->CurrentPartition; + while (TRUE) + { + MaxSize = (PartEntry->SectorCount.QuadPart * DiskEntry->BytesPerSector) / 1048576; /* in MBytes (rounded) */ + + if (MaxSize > PARTITION_MAXSIZE) + MaxSize = PARTITION_MAXSIZE; + + ShowPartitionSizeInputBox(12, 14, xScreen - 12, 17, /* left, top, right, bottom */ + MaxSize, InputBuffer, &Quit, &Cancel); + + if (Quit == TRUE) + { + if (ConfirmQuit (Ir) == TRUE) + { + return QUIT_PAGE; + } + } + else if (Cancel == TRUE) + { + return SELECT_PARTITION_PAGE; + } + else + { + PartSize = atoi(InputBuffer); + + if (PartSize < 1) + { + /* Too small */ + continue; + } + + if (PartSize > MaxSize) + { + /* Too large */ + continue; + } + + /* Convert to bytes */ + if (PartSize == MaxSize) + { + /* Use all of the unpartitioned disk space */ + SectorCount = PartEntry->SectorCount.QuadPart; + } + else + { + /* Calculate the sector count from the size in MB */ + SectorCount = PartSize * 1048576 / DiskEntry->BytesPerSector; + + /* But never get larger than the unpartitioned disk space */ + if (SectorCount > PartEntry->SectorCount.QuadPart) + SectorCount = PartEntry->SectorCount.QuadPart; + } + + DPRINT ("Partition size: %I64u bytes\n", PartSize); + + CreateExtendedPartition(PartitionList, + SectorCount); + + return SELECT_PARTITION_PAGE; + } + } + + return CREATE_EXTENDED_PARTITION_PAGE; } @@ -3848,8 +4015,12 @@ RunUSetup(VOID) Page = SelectPartitionPage(&Ir); break; - case CREATE_PARTITION_PAGE: - Page = CreatePartitionPage(&Ir); + case CREATE_PRIMARY_PARTITION_PAGE: + Page = CreatePrimaryPartitionPage(&Ir); + break; + + case CREATE_EXTENDED_PARTITION_PAGE: + Page = CreateExtendedPartitionPage(&Ir); break; case DELETE_PARTITION_PAGE: diff --git a/reactos/base/setup/usetup/lang/bg-BG.h b/reactos/base/setup/usetup/lang/bg-BG.h index e4be51b6421..742c323ac08 100644 --- a/reactos/base/setup/usetup/lang/bg-BG.h +++ b/reactos/base/setup/usetup/lang/bg-BG.h @@ -828,12 +828,19 @@ static MUI_ENTRY bgBGSelectPartitionEntries[] = { 8, 15, - "\x07  â¨á­¥â¥ C §  áꧤ ¢ ­¥ ­  ­®¢ ¤ï«.", + "\x07 Press P to create a primary partition.", +// "\x07  â¨á­¥â¥ C §  áꧤ ¢ ­¥ ­  ­®¢ ¤ï«.", TEXT_STYLE_NORMAL }, { 8, 17, + "\x07 Press E to create an extended partition.", + TEXT_STYLE_NORMAL + }, + { + 8, + 19, "\x07  â¨á­¥â¥ D §  ¨§âਢ ­¥ ­  áêé¥áâ¢ã¢ é ¤ï«.", TEXT_STYLE_NORMAL }, @@ -1288,6 +1295,10 @@ static MUI_ENTRY bgBGRegistryEntries[] = MUI_ERROR bgBGErrorEntries[] = { + { + // NOT_AN_ERROR + "Success\n" + }, { //ERROR_NOT_INSTALLED "¥ ªâŽ‘ ­¥ ¥ ­ ¯ê«­® á«®¦¥­ ­  ª®¬¯îâêà \n" @@ -1500,6 +1511,32 @@ MUI_ERROR bgBGErrorEntries[] = " *  â¨á­¥â¥ ª« ¢¨è, §  ¤  ¯à®¤ê«¦¨â¥.", NULL }, + { + //ERROR_PARTITION_TABLE_FULL, + "You can not create a new primary or extended partition in the\n" + "partition table of this disk because the partition table is full.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_ONLY_ONE_EXTENDED, + "You can not create more than one extended partition per disk.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_NOT_BEHIND_EXTENDED, + "You can not create a partition behind an extended partition.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_EXTENDED_NOT_LAST, + "An extended partition must always be the last\n" + "partition in a partition table.\n" + "\n" + " * Press any key to continue." + }, { NULL, NULL @@ -1612,13 +1649,19 @@ MUI_STRING bgBGStrings[] = {STRING_PLEASEWAIT, " ®ç ª ©â¥..."}, {STRING_INSTALLCREATEPARTITION, - " ENTER = ‘« £ ­¥ C = ‘ꧤ ¢ ­¥ ­  ¤ï« F3 = ˆ§å®¤"}, + " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, +// " ENTER = ‘« £ ­¥ C = ‘ꧤ ¢ ­¥ ­  ¤ï« F3 = ˆ§å®¤"}, {STRING_INSTALLDELETEPARTITION, " ENTER = ‘« £ ­¥ D = ˆ§âਢ ­¥ ­  ¤ï« F3 = ˆ§å®¤"}, + {STRING_DELETEPARTITION, + " D = Delete Partition F3 = Quit"}, {STRING_PARTITIONSIZE, " §¬¥à ­  ­®¢¨ï ¤ï«:"}, {STRING_CHOOSENEWPARTITION, - "ˆ§¡à «¨ á⥠¤  áꧤ ¤¥â¥ ­®¢ ¤ï« ­ "}, + "You have chosen to create a primary partition on"}, +// "ˆ§¡à «¨ á⥠¤  áꧤ ¤¥â¥ ­®¢ ¤ï« ­ "}, + {STRING_CHOOSE_NEW_EXTENDED_PARTITION, + "You have chosen to create an extended partition on"}, {STRING_HDDSIZE, "‚ꢥ¤¥â¥ à §¬¥à  ­  ­®¢¨ï ¤ï« (¢ ¬¥£ ¡ ©â¨)."}, {STRING_CREATEPARTITION, @@ -1701,6 +1744,8 @@ MUI_STRING bgBGStrings[] = " ¥à §¯à¥¤¥«¥­® ¬ïáâ® %6lu %s"}, {STRING_MAXSIZE, "Œ (¤® %lu Œ)"}, + {STRING_EXTENDED_PARTITION, + "Extended Partition"}, {STRING_UNFORMATTED, "®¢ (¥ä®à¬ â¨à ­)"}, {STRING_FORMATUNUSED, diff --git a/reactos/base/setup/usetup/lang/cs-CZ.h b/reactos/base/setup/usetup/lang/cs-CZ.h index 1bb8dd6e600..79b4e78f7b8 100644 --- a/reactos/base/setup/usetup/lang/cs-CZ.h +++ b/reactos/base/setup/usetup/lang/cs-CZ.h @@ -827,12 +827,19 @@ static MUI_ENTRY csCZSelectPartitionEntries[] = { 8, 15, - "\x07 Stisknut¡m C umo§n¡te vytvoýen¡ nov‚ho odd¡lu.", + "\x07 Press P to create a primary partition.", +// "\x07 Stisknut¡m C umo§n¡te vytvoýen¡ nov‚ho odd¡lu.", TEXT_STYLE_NORMAL }, { 8, 17, + "\x07 Press E to create an extended partition.", + TEXT_STYLE_NORMAL + }, + { + 8, + 19, "\x07 Stisknut¡m D umo§n¡te smaz n¡ existuj¡c¡ho odd¡lu.", TEXT_STYLE_NORMAL }, @@ -1286,6 +1293,10 @@ static MUI_ENTRY csCZRegistryEntries[] = MUI_ERROR csCZErrorEntries[] = { + { + // NOT_AN_ERROR + "Success\n" + }, { //ERROR_NOT_INSTALLED "ReactOS nen¡ ve vaçem poŸ¡taŸi kompletnØ nainstalov n.\n" @@ -1496,6 +1507,32 @@ MUI_ERROR csCZErrorEntries[] = " * PokraŸujte stisknut¡m libovoln‚ kl vesy.", NULL }, + { + //ERROR_PARTITION_TABLE_FULL, + "You can not create a new primary or extended partition in the\n" + "partition table of this disk because the partition table is full.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_ONLY_ONE_EXTENDED, + "You can not create more than one extended partition per disk.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_NOT_BEHIND_EXTENDED, + "You can not create a partition behind an extended partition.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_EXTENDED_NOT_LAST, + "An extended partition must always be the last\n" + "partition in a partition table.\n" + "\n" + " * Press any key to continue." + }, { NULL, NULL @@ -1608,13 +1645,19 @@ MUI_STRING csCZStrings[] = {STRING_PLEASEWAIT, " ¬ekejte, pros¡m..."}, {STRING_INSTALLCREATEPARTITION, - " ENTER = Instalovat C = Vytvoýit odd¡l F3 = UkonŸit"}, + " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, +// " ENTER = Instalovat C = Vytvoýit odd¡l F3 = UkonŸit"}, {STRING_INSTALLDELETEPARTITION, " ENTER = Instalovat D = Odstranit odd¡l F3 = UkonŸit"}, + {STRING_DELETEPARTITION, + " D = Delete Partition F3 = Quit"}, {STRING_PARTITIONSIZE, "Velikost nov‚ho odd¡lu:"}, {STRING_CHOOSENEWPARTITION, - "Zvolili jste vytvoýen¡ nov‚ho odd¡lu na"}, + "You have chosen to create a primary partition on"}, +// "Zvolili jste vytvoýen¡ nov‚ho odd¡lu na"}, + {STRING_CHOOSE_NEW_EXTENDED_PARTITION, + "You have chosen to create an extended partition on"}, {STRING_HDDSIZE, "Zadejte velikost nov‚ho odd¡lu v megabajtech."}, {STRING_CREATEPARTITION, @@ -1697,6 +1740,8 @@ MUI_STRING csCZStrings[] = " M¡sto bez odd¡l… %6lu %s"}, {STRING_MAXSIZE, "MB (max. %lu MB)"}, + {STRING_EXTENDED_PARTITION, + "Extended Partition"}, {STRING_UNFORMATTED, "Novì (Nenaform tovanì)"}, {STRING_FORMATUNUSED, diff --git a/reactos/base/setup/usetup/lang/de-DE.h b/reactos/base/setup/usetup/lang/de-DE.h index 731ff05b03f..3df2aa17968 100644 --- a/reactos/base/setup/usetup/lang/de-DE.h +++ b/reactos/base/setup/usetup/lang/de-DE.h @@ -814,12 +814,18 @@ static MUI_ENTRY deDESelectPartitionEntries[] = { 8, 15, - "\x07 C erstellt eine neue Partition.", + "\x07 P erstellt eine prim„re Partition.", TEXT_STYLE_NORMAL }, { 8, 17, + "\x07 E erstellt eine erweiterte Partition.", + TEXT_STYLE_NORMAL + }, + { + 8, + 19, "\x07 D l”scht eine vorhandene Partition.", TEXT_STYLE_NORMAL }, @@ -1279,6 +1285,10 @@ static MUI_ENTRY deDERegistryEntries[] = MUI_ERROR deDEErrorEntries[] = { + { + // NOT_AN_ERROR + "Erfolg\n" + }, { //ERROR_NOT_INSTALLED "ReactOS wurde nicht vollst„ndig auf Ihrem System installiert.\n" @@ -1493,6 +1503,32 @@ MUI_ERROR deDEErrorEntries[] = " * Eine beliebige Taste zum Fortsetzen drcken.", NULL }, + { + //ERROR_PARTITION_TABLE_FULL, + "Sie k”nnen keine weitere prim„re oder erweiterte Partition in\n" + "der Partitionstabelle erstellen, weil die Tabelle voll ist.\n" + "\n" + " * Eine beliebige Taste zum Fortsetzen drcken." + }, + { + //ERROR_ONLY_ONE_EXTENDED, + "Sie k”nnen nur eine erweiterte Partition auf jeder Festplatte anlegen.\n" + "\n" + " * Eine beliebige Taste zum Fortsetzen drcken." + }, + { + //ERROR_NOT_BEHIND_EXTENDED, + "Sie k”nnen hinter einer erweiterten Partition keine weitere Partition anlegen.\n" + "\n" + " * Eine beliebige Taste zum Fortsetzen drcken." + }, + { + //ERROR_EXTENDED_NOT_LAST, + "Eine erweiterte Partition muss immer die letzte Partition in \n" + "einer Partitionstabelle sein.\n" + "\n" + " * Eine beliebige Taste zum Fortsetzen drcken." + }, { NULL, NULL @@ -1605,13 +1641,17 @@ MUI_STRING deDEStrings[] = {STRING_PLEASEWAIT, " Bitte warten..."}, {STRING_INSTALLCREATEPARTITION, - " EINGABETASTE = Installieren C = Partition erstellen F3 = Installation abbr."}, + " EINGABETASTE = Installieren P = Prim„re E = Erweiterte F3 = Installation abbr."}, {STRING_INSTALLDELETEPARTITION, " EINGABETASTE = Installieren D = Partition l”schen F3 = Installation abbr."}, + {STRING_DELETEPARTITION, + " D = Partition l”schen F3 = Installation abbrechen"}, {STRING_PARTITIONSIZE, "Gr”áe der neuen Partition:"}, {STRING_CHOOSENEWPARTITION, - "Eine neue Partition soll hier erstellt werden:"}, + "Eine prim„re Partition soll hier erstellt werden:"}, + {STRING_CHOOSE_NEW_EXTENDED_PARTITION, + "Eine erweiterte Partition soll hier erstellt werden:"}, {STRING_HDDSIZE, "Bitte geben Sie die Gr”áe der neuen Partition in Megabyte ein."}, {STRING_CREATEPARTITION, @@ -1694,6 +1734,8 @@ MUI_STRING deDEStrings[] = " Unpartitionierter Speicher %6lu %s"}, {STRING_MAXSIZE, "MB (max. %lu MB)"}, + {STRING_EXTENDED_PARTITION, + "Erweiterte Partition"}, {STRING_UNFORMATTED, "Neu (Unformatiert)"}, {STRING_FORMATUNUSED, diff --git a/reactos/base/setup/usetup/lang/el-GR.h b/reactos/base/setup/usetup/lang/el-GR.h index 91b88d6410c..15c5dcbde38 100644 --- a/reactos/base/setup/usetup/lang/el-GR.h +++ b/reactos/base/setup/usetup/lang/el-GR.h @@ -837,12 +837,19 @@ static MUI_ENTRY elGRSelectPartitionEntries[] = { 8, 15, - "\x07 ˜«ã©«œ C š ˜ ¤˜ ›ž£ ¦¬¨šã©œ«œ ⤘ ¤â¦ › ˜£â¨ ©£˜.", + "\x07 Press P to create a primary partition.", +// "\x07 ˜«ã©«œ C š ˜ ¤˜ ›ž£ ¦¬¨šã©œ«œ ⤘ ¤â¦ › ˜£â¨ ©£˜.", TEXT_STYLE_NORMAL }, { 8, 17, + "\x07 Press E to create an extended partition.", + TEXT_STYLE_NORMAL + }, + { + 8, + 19, "\x07 ˜«ã©«œ D š ˜ ¤˜ › ˜š¨á¯œ«œ ⤘ ¬§á¨®¦¤ › ˜£â¨ ©£˜.", TEXT_STYLE_NORMAL }, @@ -1308,6 +1315,10 @@ static MUI_ENTRY elGRRegistryEntries[] = MUI_ERROR elGRErrorEntries[] = { + { + // NOT_AN_ERROR + "Success\n" + }, { //ERROR_NOT_INSTALLED "’¦ ReactOS ›œ¤ œš¡˜«˜©«áŸž¡œ §¢ã¨àª ©«¦¤\n" @@ -1512,6 +1523,32 @@ MUI_ERROR elGRErrorEntries[] = "Setup could not set the geo id.\n" "ENTER = Reboot computer" }, + { + //ERROR_PARTITION_TABLE_FULL, + "You can not create a new primary or extended partition in the\n" + "partition table of this disk because the partition table is full.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_ONLY_ONE_EXTENDED, + "You can not create more than one extended partition per disk.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_NOT_BEHIND_EXTENDED, + "You can not create a partition behind an extended partition.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_EXTENDED_NOT_LAST, + "An extended partition must always be the last\n" + "partition in a partition table.\n" + "\n" + " * Press any key to continue." + }, { NULL, NULL @@ -1624,13 +1661,19 @@ MUI_STRING elGRStrings[] = {STRING_PLEASEWAIT, " ˜¨˜¡˜¢é §œ¨ £â¤œ«œ..."}, {STRING_INSTALLCREATEPARTITION, - " ENTER = „š¡˜«á©«˜©ž C = ƒž£ ¦¬¨šå˜ Partition F3 = €§¦®é¨ž©ž"}, + " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, +// " ENTER = „š¡˜«á©«˜©ž C = ƒž£ ¦¬¨šå˜ Partition F3 = €§¦®é¨ž©ž"}, {STRING_INSTALLDELETEPARTITION, " ENTER = „š¡˜«á©«˜©ž D = ƒ ˜š¨˜­ã Partition F3 = €§¦®é¨ž©ž"}, + {STRING_DELETEPARTITION, + " D = Delete Partition F3 = Quit"}, {STRING_PARTITIONSIZE, "‹âšœŸ¦ª «¦¬ ¤â¦¬ partition:"}, {STRING_CHOOSENEWPARTITION, - "„§ ¢â¥˜«œ ¤˜ ›ž£ ¦¬¨šã©œ«œ ⤘ ¤â¦ partition on"}, + "You have chosen to create a primary partition on"}, +// "„§ ¢â¥˜«œ ¤˜ ›ž£ ¦¬¨šã©œ«œ ⤘ ¤â¦ partition on"}, + {STRING_CHOOSE_NEW_EXTENDED_PARTITION, + "You have chosen to create an extended partition on"}, {STRING_HDDSIZE, "˜¨˜¡˜¢é ›é©«œ «¦ £âšœŸ¦ª «¦¬ partition ©œ megabytes."}, {STRING_CREATEPARTITION, @@ -1713,6 +1756,8 @@ MUI_STRING elGRStrings[] = " Unpartitioned space %6lu %s"}, {STRING_MAXSIZE, "MB (£œš. %lu MB)"}, + {STRING_EXTENDED_PARTITION, + "Extended Partition"}, {STRING_UNFORMATTED, "Œâ¦ (‹ž › ˜£¦¨­à£â¤¦)"}, {STRING_FORMATUNUSED, diff --git a/reactos/base/setup/usetup/lang/en-US.h b/reactos/base/setup/usetup/lang/en-US.h index b89e0e4b93e..10374175549 100644 --- a/reactos/base/setup/usetup/lang/en-US.h +++ b/reactos/base/setup/usetup/lang/en-US.h @@ -819,12 +819,18 @@ static MUI_ENTRY enUSSelectPartitionEntries[] = { 8, 15, - "\x07 Press C to create a new partition.", + "\x07 Press P to create a primary partition.", TEXT_STYLE_NORMAL }, { 8, 17, + "\x07 Press E to create an extended partition.", + TEXT_STYLE_NORMAL + }, + { + 8, + 19, "\x07 Press D to delete an existing partition.", TEXT_STYLE_NORMAL }, @@ -1278,6 +1284,10 @@ static MUI_ENTRY enUSRegistryEntries[] = MUI_ERROR enUSErrorEntries[] = { + { + // NOT_AN_ERROR + "Success\n" + }, { //ERROR_NOT_INSTALLED "ReactOS is not completely installed on your\n" @@ -1488,6 +1498,32 @@ MUI_ERROR enUSErrorEntries[] = " * Press any key to continue.", NULL }, + { + //ERROR_PARTITION_TABLE_FULL, + "You can not create a new primary or extended partition in the\n" + "partition table of this disk because the partition table is full.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_ONLY_ONE_EXTENDED, + "You can not create more than one extended partition per disk.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_NOT_BEHIND_EXTENDED, + "You can not create a partition behind an extended partition.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_EXTENDED_NOT_LAST, + "An extended partition must always be the last\n" + "partition in a partition table.\n" + "\n" + " * Press any key to continue." + }, { NULL, NULL @@ -1599,13 +1635,17 @@ MUI_STRING enUSStrings[] = {STRING_PLEASEWAIT, " Please wait..."}, {STRING_INSTALLCREATEPARTITION, - " ENTER = Install C = Create Partition F3 = Quit"}, + " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, {STRING_INSTALLDELETEPARTITION, " ENTER = Install D = Delete Partition F3 = Quit"}, + {STRING_DELETEPARTITION, + " D = Delete Partition F3 = Quit"}, {STRING_PARTITIONSIZE, "Size of new partition:"}, {STRING_CHOOSENEWPARTITION, - "You have chosen to create a new partition on"}, + "You have chosen to create a primary partition on"}, + {STRING_CHOOSE_NEW_EXTENDED_PARTITION, + "You have chosen to create an extended partition on"}, {STRING_HDDSIZE, "Please enter the size of the new partition in megabytes."}, {STRING_CREATEPARTITION, @@ -1688,6 +1728,8 @@ MUI_STRING enUSStrings[] = " Unpartitioned space %6lu %s"}, {STRING_MAXSIZE, "MB (max. %lu MB)"}, + {STRING_EXTENDED_PARTITION, + "Extended Partition"}, {STRING_UNFORMATTED, "New (Unformatted)"}, {STRING_FORMATUNUSED, diff --git a/reactos/base/setup/usetup/lang/es-ES.h b/reactos/base/setup/usetup/lang/es-ES.h index 2089e1e313e..277304abee7 100644 --- a/reactos/base/setup/usetup/lang/es-ES.h +++ b/reactos/base/setup/usetup/lang/es-ES.h @@ -826,12 +826,19 @@ static MUI_ENTRY esESSelectPartitionEntries[] = { 8, 15, - "\x07 Presione C para crear una nueva partici¢n.", + "\x07 Press P to create a primary partition.", +// "\x07 Presione C para crear una nueva partici¢n.", TEXT_STYLE_NORMAL }, { 8, 17, + "\x07 Press E to create an extended partition.", + TEXT_STYLE_NORMAL + }, + { + 8, + 19, "\x07 Presione D para borrar una partici¢n existente.", TEXT_STYLE_NORMAL }, @@ -1285,6 +1292,10 @@ static MUI_ENTRY esESRegistryEntries[] = MUI_ERROR esESErrorEntries[] = { + { + // NOT_AN_ERROR + "Success\n" + }, { //ERROR_NOT_INSTALLED "ReactOS no est  completamente instalado en su\n" @@ -1495,6 +1506,32 @@ MUI_ERROR esESErrorEntries[] = " * Presione una tecla para continuar.", NULL }, + { + //ERROR_PARTITION_TABLE_FULL, + "You can not create a new primary or extended partition in the\n" + "partition table of this disk because the partition table is full.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_ONLY_ONE_EXTENDED, + "You can not create more than one extended partition per disk.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_NOT_BEHIND_EXTENDED, + "You can not create a partition behind an extended partition.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_EXTENDED_NOT_LAST, + "An extended partition must always be the last\n" + "partition in a partition table.\n" + "\n" + " * Press any key to continue." + }, { NULL, NULL @@ -1606,13 +1643,19 @@ MUI_STRING esESStrings[] = {STRING_PLEASEWAIT, " Por favor, espere..."}, {STRING_INSTALLCREATEPARTITION, - " ENTER = Instalar C = Crear Partici¢n F3 = Salir"}, + " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, +// " ENTER = Instalar C = Crear Partici¢n F3 = Salir"}, + {STRING_DELETEPARTITION, + " D = Borrar Partici¢n F3 = Salir"}, {STRING_INSTALLDELETEPARTITION, " ENTER = Instalar D = Borrar Partici¢n F3 = Salir"}, {STRING_PARTITIONSIZE, "Tama¤o de la nueva partici¢n:"}, {STRING_CHOOSENEWPARTITION, - "Ha elegido crear una nueva partici¢n en"}, + "You have chosen to create a primary partition on"}, +// "Ha elegido crear una nueva partici¢n en"}, + {STRING_CHOOSE_NEW_EXTENDED_PARTITION, + "You have chosen to create an extended partition on"}, {STRING_HDDSIZE, "Por favor, introduzca el tama¤o de la nueva partici¢n en megabytes."}, {STRING_CREATEPARTITION, @@ -1695,6 +1738,8 @@ MUI_STRING esESStrings[] = " Espacio sin particionar %6lu %s"}, {STRING_MAXSIZE, "MB (max. %lu MB)"}, + {STRING_EXTENDED_PARTITION, + "Extended Partition"}, {STRING_UNFORMATTED, "Nuevo (sin formato)"}, {STRING_FORMATUNUSED, diff --git a/reactos/base/setup/usetup/lang/et-EE.h b/reactos/base/setup/usetup/lang/et-EE.h index 90dce3ffbd6..f07a67cf78f 100644 --- a/reactos/base/setup/usetup/lang/et-EE.h +++ b/reactos/base/setup/usetup/lang/et-EE.h @@ -819,12 +819,19 @@ static MUI_ENTRY etEESelectPartitionEntries[] = { 8, 15, - "\x07 Vajuta C, et teha uus partitsioon.", + "\x07 Press P to create a primary partition.", +// "\x07 Vajuta C, et teha uus partitsioon.", TEXT_STYLE_NORMAL }, { 8, 17, + "\x07 Press E to create an extended partition.", + TEXT_STYLE_NORMAL + }, + { + 8, + 19, "\x07 Vajuta D, et kustutada olemasolev partitsioon.", TEXT_STYLE_NORMAL }, @@ -1278,6 +1285,10 @@ static MUI_ENTRY etEERegistryEntries[] = MUI_ERROR etEEErrorEntries[] = { + { + // NOT_AN_ERROR + "Success\n" + }, { //ERROR_NOT_INSTALLED "ReactOS ei ole t„ielikult paigaldatud.\n" @@ -1485,6 +1496,32 @@ MUI_ERROR etEEErrorEntries[] = " * Vajuta suvalist klahvi, et j„tkata.", NULL }, + { + //ERROR_PARTITION_TABLE_FULL, + "You can not create a new primary or extended partition in the\n" + "partition table of this disk because the partition table is full.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_ONLY_ONE_EXTENDED, + "You can not create more than one extended partition per disk.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_NOT_BEHIND_EXTENDED, + "You can not create a partition behind an extended partition.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_EXTENDED_NOT_LAST, + "An extended partition must always be the last\n" + "partition in a partition table.\n" + "\n" + " * Press any key to continue." + }, { NULL, NULL @@ -1597,13 +1634,19 @@ MUI_STRING etEEStrings[] = {STRING_PLEASEWAIT, " Palun oota..."}, {STRING_INSTALLCREATEPARTITION, - " ENTER = Paigalda C = Loo partitsioon F3 = V„lju"}, + " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, +// " ENTER = Paigalda C = Loo partitsioon F3 = V„lju"}, {STRING_INSTALLDELETEPARTITION, " ENTER = Paigalda D = Kustuta partitsioon F3 = V„lju"}, + {STRING_DELETEPARTITION, + " D = Delete Partition F3 = Quit"}, {STRING_PARTITIONSIZE, "Uue partitsiooni suurus:"}, {STRING_CHOOSENEWPARTITION, - "Oled valinud kettale uue partitsiooni loomise"}, + "You have chosen to create a primary partition on"}, +// "Oled valinud kettale uue partitsiooni loomise"}, + {STRING_CHOOSE_NEW_EXTENDED_PARTITION, + "You have chosen to create an extended partition on"}, {STRING_HDDSIZE, "Sisesta uue partitsiooni suurus megabaitides."}, {STRING_CREATEPARTITION, @@ -1686,6 +1729,8 @@ MUI_STRING etEEStrings[] = " Kasutamata kettaruum %6lu %s"}, {STRING_MAXSIZE, "MB (maks. %lu MB)"}, + {STRING_EXTENDED_PARTITION, + "Extended Partition"}, {STRING_UNFORMATTED, "Uus (Vormindamata)"}, {STRING_FORMATUNUSED, diff --git a/reactos/base/setup/usetup/lang/fr-FR.h b/reactos/base/setup/usetup/lang/fr-FR.h index 258afe6b439..853bcf72acb 100644 --- a/reactos/base/setup/usetup/lang/fr-FR.h +++ b/reactos/base/setup/usetup/lang/fr-FR.h @@ -832,12 +832,19 @@ static MUI_ENTRY frFRSelectPartitionEntries[] = { 8, 15, - "\x07 Appuyer sur C pour creer une nouvelle partition.", + "\x07 Press P to create a primary partition.", +// "\x07 Appuyer sur C pour creer une nouvelle partition.", TEXT_STYLE_NORMAL }, { 8, 17, + "\x07 Press E to create an extended partition.", + TEXT_STYLE_NORMAL + }, + { + 8, + 19, "\x07 Appuyer sur D pour effacer une partition.", TEXT_STYLE_NORMAL }, @@ -1291,6 +1298,10 @@ static MUI_ENTRY frFRRegistryEntries[] = MUI_ERROR frFRErrorEntries[] = { + { + // NOT_AN_ERROR + "Success\n" + }, { //ERROR_NOT_INSTALLED "ReactOS n'est pas complŠtement install‚ sur votre\n" @@ -1501,6 +1512,32 @@ MUI_ERROR frFRErrorEntries[] = " * Appuyez sur n'importe quelle touche pour continuer.", NULL }, + { + //ERROR_PARTITION_TABLE_FULL, + "You can not create a new primary or extended partition in the\n" + "partition table of this disk because the partition table is full.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_ONLY_ONE_EXTENDED, + "You can not create more than one extended partition per disk.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_NOT_BEHIND_EXTENDED, + "You can not create a partition behind an extended partition.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_EXTENDED_NOT_LAST, + "An extended partition must always be the last\n" + "partition in a partition table.\n" + "\n" + " * Press any key to continue." + }, { NULL, NULL @@ -1613,13 +1650,19 @@ MUI_STRING frFRStrings[] = {STRING_PLEASEWAIT, " Veuillez patienter..."}, {STRING_INSTALLCREATEPARTITION, - " ENTRE = Installer C = Cr‚er Partition F3 = Quitter"}, + " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, +// " ENTRE = Installer C = Cr‚er Partition F3 = Quitter"}, {STRING_INSTALLDELETEPARTITION, " ENTRE = Installer D = Supprimer Partition F3 = Quitter"}, + {STRING_DELETEPARTITION, + " D = Delete Partition F3 = Quit"}, {STRING_PARTITIONSIZE, "Taille de la nouvelle partition :"}, {STRING_CHOOSENEWPARTITION, - "Vous avez choisi de cr‚er une nouvelle partition sur"}, + "You have chosen to create a primary partition on"}, +// "Vous avez choisi de cr‚er une nouvelle partition sur"}, + {STRING_CHOOSE_NEW_EXTENDED_PARTITION, + "You have chosen to create an extended partition on"}, {STRING_HDDSIZE, "Veuillez entrer la taille de la nouvelle partition en m‚gaoctets."}, {STRING_CREATEPARTITION, @@ -1702,6 +1745,8 @@ MUI_STRING frFRStrings[] = " Espace non partitionn‚ %6lu %s"}, {STRING_MAXSIZE, "Mo (max. %lu Mo)"}, + {STRING_EXTENDED_PARTITION, + "Extended Partition"}, {STRING_UNFORMATTED, "Nouveau (non format‚)"}, {STRING_FORMATUNUSED, diff --git a/reactos/base/setup/usetup/lang/he-IL.h b/reactos/base/setup/usetup/lang/he-IL.h index 9bdc3a8d2b3..d3734c0a235 100644 --- a/reactos/base/setup/usetup/lang/he-IL.h +++ b/reactos/base/setup/usetup/lang/he-IL.h @@ -820,12 +820,18 @@ static MUI_ENTRY heILSelectPartitionEntries[] = { 8, 15, - "\x07 Press C to create a new partition.", + "\x07 Press P to create a primary partition.", TEXT_STYLE_NORMAL }, { 8, 17, + "\x07 Press E to create an extended partition.", + TEXT_STYLE_NORMAL + }, + { + 8, + 19, "\x07 Press D to delete an existing partition.", TEXT_STYLE_NORMAL }, @@ -1279,6 +1285,10 @@ static MUI_ENTRY heILRegistryEntries[] = MUI_ERROR heILErrorEntries[] = { + { + // NOT_AN_ERROR + "Success\n" + }, { //ERROR_NOT_INSTALLED "ReactOS is not completely installed on your\n" @@ -1489,6 +1499,32 @@ MUI_ERROR heILErrorEntries[] = " * Press any key to continue.", NULL }, + { + //ERROR_PARTITION_TABLE_FULL, + "You can not create a new primary or extended partition in the\n" + "partition table of this disk because the partition table is full.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_ONLY_ONE_EXTENDED, + "You can not create more than one extended partition per disk.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_NOT_BEHIND_EXTENDED, + "You can not create a partition behind an extended partition.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_EXTENDED_NOT_LAST, + "An extended partition must always be the last\n" + "partition in a partition table.\n" + "\n" + " * Press any key to continue." + }, { NULL, NULL @@ -1600,13 +1636,18 @@ MUI_STRING heILStrings[] = {STRING_PLEASEWAIT, " € Œ‡‹…š..."}, {STRING_INSTALLCREATEPARTITION, - " ENTER = „š— C = –…˜ އ‰–„ F3 = ˆŒ „š—„"}, + " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, +// " ENTER = „š— C = –…˜ އ‰–„ F3 = ˆŒ „š—„"}, {STRING_INSTALLDELETEPARTITION, " ENTER = „š— D = އ— އ‰–„ F3 = ˆŒ „š—„"}, + {STRING_DELETEPARTITION, + " D = Delete Partition F3 = Quit"}, {STRING_PARTITIONSIZE, "‚…ƒŒ „އ‰–„ „‡ƒ™„:"}, {STRING_CHOOSENEWPARTITION, - "You have chosen to create a new partition on"}, + "You have chosen to create a primary partition on"}, + {STRING_CHOOSE_NEW_EXTENDED_PARTITION, + "You have chosen to create an extended partition on"}, {STRING_HDDSIZE, "Please enter the size of the new partition in megabytes."}, {STRING_CREATEPARTITION, @@ -1689,6 +1730,8 @@ MUI_STRING heILStrings[] = " Unpartitioned space %6lu %s"}, {STRING_MAXSIZE, "MB (max. %lu MB)"}, + {STRING_EXTENDED_PARTITION, + "Extended Partition"}, {STRING_UNFORMATTED, "New (Unformatted)"}, {STRING_FORMATUNUSED, diff --git a/reactos/base/setup/usetup/lang/it-IT.h b/reactos/base/setup/usetup/lang/it-IT.h index 0e4035713c5..1561841e9a6 100644 --- a/reactos/base/setup/usetup/lang/it-IT.h +++ b/reactos/base/setup/usetup/lang/it-IT.h @@ -820,12 +820,19 @@ static MUI_ENTRY itITSelectPartitionEntries[] = { 8, 15, - "\x07 Premere C per creare una nuova partizione.", + "\x07 Press P to create a primary partition.", +// "\x07 Premere C per creare una nuova partizione.", TEXT_STYLE_NORMAL }, { 8, 17, + "\x07 Press E to create an extended partition.", + TEXT_STYLE_NORMAL + }, + { + 8, + 19, "\x07 Premere D per cancellare una partizione esistente.", TEXT_STYLE_NORMAL }, @@ -1279,6 +1286,10 @@ static MUI_ENTRY itITRegistryEntries[] = MUI_ERROR itITErrorEntries[] = { + { + // NOT_AN_ERROR + "Success\n" + }, { //ERROR_NOT_INSTALLED "ReactOS non Š installato completamente nel vostro\n" @@ -1489,6 +1500,32 @@ MUI_ERROR itITErrorEntries[] = " * Premere un tasto qualsiasi per continuare.", NULL }, + { + //ERROR_PARTITION_TABLE_FULL, + "You can not create a new primary or extended partition in the\n" + "partition table of this disk because the partition table is full.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_ONLY_ONE_EXTENDED, + "You can not create more than one extended partition per disk.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_NOT_BEHIND_EXTENDED, + "You can not create a partition behind an extended partition.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_EXTENDED_NOT_LAST, + "An extended partition must always be the last\n" + "partition in a partition table.\n" + "\n" + " * Press any key to continue." + }, { NULL, NULL @@ -1601,13 +1638,19 @@ MUI_STRING itITStrings[] = {STRING_PLEASEWAIT, " Attendere..."}, {STRING_INSTALLCREATEPARTITION, - " INVIO = Installa C = Crea Partizione F3 = Esci"}, + " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, +// " INVIO = Installa C = Crea Partizione F3 = Esci"}, {STRING_INSTALLDELETEPARTITION, " INVIO = Installa D = Rimuovi Partizione F3 = Esci"}, + {STRING_DELETEPARTITION, + " D = Delete Partition F3 = Quit"}, {STRING_PARTITIONSIZE, "Dimensione della nuova partizione:"}, {STRING_CHOOSENEWPARTITION, - "Avete scelto di creare una nuova partizione su"}, + "You have chosen to create a primary partition on"}, +// "Avete scelto di creare una nuova partizione su"}, + {STRING_CHOOSE_NEW_EXTENDED_PARTITION, + "You have chosen to create an extended partition on"}, {STRING_HDDSIZE, "Indicare la dimensione della nuova partizione in megabyte."}, {STRING_CREATEPARTITION, diff --git a/reactos/base/setup/usetup/lang/ja-JP.h b/reactos/base/setup/usetup/lang/ja-JP.h index be3834f7125..83685cdc1ee 100644 --- a/reactos/base/setup/usetup/lang/ja-JP.h +++ b/reactos/base/setup/usetup/lang/ja-JP.h @@ -820,12 +820,19 @@ static MUI_ENTRY jaJPSelectPartitionEntries[] = { 8, 15, - "\x07 ±À×¼² Ê߰è¼®Ý ¦ »¸¾² ½ÙÆÊ C ·°¦ µ¼Ã ¸ÀÞ»²¡", + "\x07 Press P to create a primary partition.", +// "\x07 ±À×¼² Ê߰è¼®Ý ¦ »¸¾² ½ÙÆÊ C ·°¦ µ¼Ã ¸ÀÞ»²¡", TEXT_STYLE_NORMAL }, { 8, 17, + "\x07 Press E to create an extended partition.", + TEXT_STYLE_NORMAL + }, + { + 8, + 19, "\x07 ·¿ÝÉ Ê߰輮ݦ »¸¼Þ® ½ÙÆÊ D ·°¦ µ¼Ã ¸ÀÞ»²¡", TEXT_STYLE_NORMAL }, @@ -1279,6 +1286,10 @@ static MUI_ENTRY jaJPRegistryEntries[] = MUI_ERROR jaJPErrorEntries[] = { + { + // NOT_AN_ERROR + "Success\n" + }, { //ERROR_NOT_INSTALLED "ReactOS Ê ºÝËß­°ÀÆ ¶Ý¾ÞÝÆ ²Ý½Ä°Ù\n" @@ -1489,6 +1500,32 @@ MUI_ERROR jaJPErrorEntries[] = " * Press any key to continue.", NULL }, + { + //ERROR_PARTITION_TABLE_FULL, + "You can not create a new primary or extended partition in the\n" + "partition table of this disk because the partition table is full.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_ONLY_ONE_EXTENDED, + "You can not create more than one extended partition per disk.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_NOT_BEHIND_EXTENDED, + "You can not create a partition behind an extended partition.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_EXTENDED_NOT_LAST, + "An extended partition must always be the last\n" + "partition in a partition table.\n" + "\n" + " * Press any key to continue." + }, { NULL, NULL @@ -1600,13 +1637,19 @@ MUI_STRING jaJPStrings[] = {STRING_PLEASEWAIT, " µÏÁ ¸ÀÞ»²..."}, {STRING_INSTALLCREATEPARTITION, - " ENTER = ²Ý½Ä°Ù C = Ê߰è¼®Ý »¸¾² F3 = Á­³¼"}, + " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, +// " ENTER = ²Ý½Ä°Ù C = Ê߰è¼®Ý »¸¾² F3 = Á­³¼"}, {STRING_INSTALLDELETEPARTITION, " ENTER = ²Ý½Ä°Ù D = Ê߰è¼®Ý »¸¼Þ® F3 = Á­³¼"}, + {STRING_DELETEPARTITION, + " D = Delete Partition F3 = Quit"}, {STRING_PARTITIONSIZE, "±À×¼² Ê߰è¼®ÝÉ »²½Þ:"}, {STRING_CHOOSENEWPARTITION, - "±À×¼² Ê߰輮ݦ Â·ÞÆ »¸¾²½Ù ºÄ¶Þ ¾ÝÀ¸ »ÚϼÀ:"}, + "You have chosen to create a primary partition on"}, +// "±À×¼² Ê߰輮ݦ Â·ÞÆ »¸¾²½Ù ºÄ¶Þ ¾ÝÀ¸ »ÚϼÀ:"}, + {STRING_CHOOSE_NEW_EXTENDED_PARTITION, + "You have chosen to create an extended partition on"}, {STRING_HDDSIZE, "±À×¼² Ê߰è¼®ÝÉ »²½Þ¦ Ò¶ÞÊÞ²Ä ÀݲÃÞ Æ­³Ø®¸ ¼Ã¸ÀÞ»²¡"}, {STRING_CREATEPARTITION, @@ -1689,6 +1732,8 @@ MUI_STRING jaJPStrings[] = " ÐÌÞݶÂÉ ½Íß°½ %6lu %s"}, {STRING_MAXSIZE, "MB (»²ÀÞ². %lu MB)"}, + {STRING_EXTENDED_PARTITION, + "Extended Partition"}, {STRING_UNFORMATTED, "¼Ý· (ÐÌ«°Ï¯Ä)"}, {STRING_FORMATUNUSED, diff --git a/reactos/base/setup/usetup/lang/lt-LT.h b/reactos/base/setup/usetup/lang/lt-LT.h index d6f0c71c18a..a02554a5186 100644 --- a/reactos/base/setup/usetup/lang/lt-LT.h +++ b/reactos/base/setup/usetup/lang/lt-LT.h @@ -829,12 +829,18 @@ static MUI_ENTRY ltLTSelectPartitionEntries[] = { 8, 15, - "\x07 Press C to create a new partition.", + "\x07 Press P to create a primary partition.", TEXT_STYLE_NORMAL }, { 8, 17, + "\x07 Press E to create an extended partition.", + TEXT_STYLE_NORMAL + }, + { + 8, + 19, "\x07 Press D to delete an existing partition.", TEXT_STYLE_NORMAL }, @@ -1288,6 +1294,10 @@ static MUI_ENTRY ltLTRegistryEntries[] = MUI_ERROR ltLTErrorEntries[] = { + { + // NOT_AN_ERROR + "Success\n" + }, { //ERROR_NOT_INSTALLED "ReactOS is not completely installed on your\n" @@ -1498,6 +1508,32 @@ MUI_ERROR ltLTErrorEntries[] = " * Press any key to continue.", NULL }, + { + //ERROR_PARTITION_TABLE_FULL, + "You can not create a new primary or extended partition in the\n" + "partition table of this disk because the partition table is full.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_ONLY_ONE_EXTENDED, + "You can not create more than one extended partition per disk.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_NOT_BEHIND_EXTENDED, + "You can not create a partition behind an extended partition.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_EXTENDED_NOT_LAST, + "An extended partition must always be the last\n" + "partition in a partition table.\n" + "\n" + " * Press any key to continue." + }, { NULL, NULL @@ -1610,13 +1646,17 @@ MUI_STRING ltLTStrings[] = {STRING_PLEASEWAIT, " Please wait..."}, {STRING_INSTALLCREATEPARTITION, - " ENTER = Install C = Create Partition F3 = Quit"}, + " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, {STRING_INSTALLDELETEPARTITION, " ENTER = Install D = Delete Partition F3 = Quit"}, + {STRING_DELETEPARTITION, + " D = Delete Partition F3 = Quit"}, {STRING_PARTITIONSIZE, "Size of new partition:"}, {STRING_CHOOSENEWPARTITION, - "You have chosen to create a new partition on"}, + "You have chosen to create a primary partition on"}, + {STRING_CHOOSE_NEW_EXTENDED_PARTITION, + "You have chosen to create an extended partition on"}, {STRING_HDDSIZE, "Please enter the size of the new partition in megabytes."}, {STRING_CREATEPARTITION, @@ -1699,6 +1739,8 @@ MUI_STRING ltLTStrings[] = " Unpartitioned space %6lu %s"}, {STRING_MAXSIZE, "MB (max. %lu MB)"}, + {STRING_EXTENDED_PARTITION, + "Extended Partition"}, {STRING_UNFORMATTED, "New (Unformatted)"}, {STRING_FORMATUNUSED, diff --git a/reactos/base/setup/usetup/lang/nl-NL.h b/reactos/base/setup/usetup/lang/nl-NL.h index f1814a11e58..011111d13d0 100644 --- a/reactos/base/setup/usetup/lang/nl-NL.h +++ b/reactos/base/setup/usetup/lang/nl-NL.h @@ -854,12 +854,19 @@ static MUI_ENTRY nlNLSelectPartitionEntries[] = { 8, 15, - "\x07 Druk op C om een nieuwe partitie aan te maken.", + "\x07 Press P to create a primary partition.", +// "\x07 Druk op C om een nieuwe partitie aan te maken.", TEXT_STYLE_NORMAL }, { 8, 17, + "\x07 Press E to create an extended partition.", + TEXT_STYLE_NORMAL + }, + { + 8, + 19, "\x07 Druk op D om een bestaande partitie te verwijderen.", TEXT_STYLE_NORMAL }, @@ -1319,6 +1326,10 @@ static MUI_ENTRY nlNLRegistryEntries[] = MUI_ERROR nlNLErrorEntries[] = { + { + // NOT_AN_ERROR + "Success\n" + }, { //ERROR_NOT_INSTALLED "ReactOS is niet geheel ge\x8Bnstalleerd op uw\n" @@ -1533,6 +1544,32 @@ MUI_ERROR nlNLErrorEntries[] = " * Druk op een toets om door te gaan.", NULL }, + { + //ERROR_PARTITION_TABLE_FULL, + "You can not create a new primary or extended partition in the\n" + "partition table of this disk because the partition table is full.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_ONLY_ONE_EXTENDED, + "You can not create more than one extended partition per disk.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_NOT_BEHIND_EXTENDED, + "You can not create a partition behind an extended partition.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_EXTENDED_NOT_LAST, + "An extended partition must always be the last\n" + "partition in a partition table.\n" + "\n" + " * Press any key to continue." + }, { NULL, NULL @@ -1645,13 +1682,19 @@ MUI_STRING nlNLStrings[] = {STRING_PLEASEWAIT, " Een ogenblik geduld..."}, {STRING_INSTALLCREATEPARTITION, - " ENTER = Installeren C = Partitie aanmaken F3 = Afsluiten"}, + " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, +// " ENTER = Installeren C = Partitie aanmaken F3 = Afsluiten"}, {STRING_INSTALLDELETEPARTITION, " ENTER = Installeren D = Partitie verwijderen F3 = Afsluiten"}, + {STRING_DELETEPARTITION, + " D = Delete Partition F3 = Quit"}, {STRING_PARTITIONSIZE, "Grootte nieuwe partitie:"}, {STRING_CHOOSENEWPARTITION, - "U wilt een nieuwe partitie aanmaken op"}, + "You have chosen to create a primary partition on"}, +// "U wilt een nieuwe partitie aanmaken op"}, + {STRING_CHOOSE_NEW_EXTENDED_PARTITION, + "You have chosen to create an extended partition on"}, {STRING_HDDSIZE, "Voert u de grootte van de nieuwe partitie in in megabytes."}, {STRING_CREATEPARTITION, @@ -1734,6 +1777,8 @@ MUI_STRING nlNLStrings[] = " Niet gepartitioneerde ruimte %6lu %s"}, {STRING_MAXSIZE, "MB (max. %lu MB)"}, + {STRING_EXTENDED_PARTITION, + "Extended Partition"}, {STRING_UNFORMATTED, "Nieuw (Ongeformatteerd)"}, {STRING_FORMATUNUSED, diff --git a/reactos/base/setup/usetup/lang/pl-PL.h b/reactos/base/setup/usetup/lang/pl-PL.h index 2cf3e6f8bfa..6ab8e361e8e 100644 --- a/reactos/base/setup/usetup/lang/pl-PL.h +++ b/reactos/base/setup/usetup/lang/pl-PL.h @@ -828,12 +828,19 @@ static MUI_ENTRY plPLSelectPartitionEntries[] = { 8, 15, - "\x07 Naci˜nij C, by stworzy† now¥ partycj©.", + "\x07 Press P to create a primary partition.", +// "\x07 Naci˜nij C, by stworzy† now¥ partycj©.", TEXT_STYLE_NORMAL }, { 8, 17, + "\x07 Press E to create an extended partition.", + TEXT_STYLE_NORMAL + }, + { + 8, + 19, "\x07 Naci˜nij D, by skasowa† istniej¥c¥ partycj©.", TEXT_STYLE_NORMAL }, @@ -1287,6 +1294,10 @@ static MUI_ENTRY plPLRegistryEntries[] = MUI_ERROR plPLErrorEntries[] = { + { + // NOT_AN_ERROR + "Success\n" + }, { //ERROR_NOT_INSTALLED "ReactOS nie zostaˆ w peˆni zainstalowany na twoim\n" @@ -1497,6 +1508,32 @@ MUI_ERROR plPLErrorEntries[] = " * Naci˜nij dowolny klawisz, aby kontynuowa†.", NULL }, + { + //ERROR_PARTITION_TABLE_FULL, + "You can not create a new primary or extended partition in the\n" + "partition table of this disk because the partition table is full.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_ONLY_ONE_EXTENDED, + "You can not create more than one extended partition per disk.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_NOT_BEHIND_EXTENDED, + "You can not create a partition behind an extended partition.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_EXTENDED_NOT_LAST, + "An extended partition must always be the last\n" + "partition in a partition table.\n" + "\n" + " * Press any key to continue." + }, { NULL, NULL @@ -1609,13 +1646,19 @@ MUI_STRING plPLStrings[] = {STRING_PLEASEWAIT, " Prosz© czeka†..."}, {STRING_INSTALLCREATEPARTITION, - " ENTER = Instalacja C = Utworzenie Partycji F3 = Wyj˜cie"}, + " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, +// " ENTER = Instalacja C = Utworzenie Partycji F3 = Wyj˜cie"}, {STRING_INSTALLDELETEPARTITION, " ENTER = Instalacja D = Skasowanie Partycji F3 = Wyj˜cie"}, + {STRING_DELETEPARTITION, + " D = Delete Partition F3 = Quit"}, {STRING_PARTITIONSIZE, "Rozmiar nowej partycji:"}, {STRING_CHOOSENEWPARTITION, - "Wybrane: utworzenie nowej partycji na"}, + "You have chosen to create a primary partition on"}, +// "Wybrane: utworzenie nowej partycji na"}, + {STRING_CHOOSE_NEW_EXTENDED_PARTITION, + "You have chosen to create an extended partition on"}, {STRING_HDDSIZE, "Prosz© wprowadzi† rozmiar nowej partycji w megabajtach."}, {STRING_CREATEPARTITION, diff --git a/reactos/base/setup/usetup/lang/pt-BR.h b/reactos/base/setup/usetup/lang/pt-BR.h index 1ee9c7f12f9..2837b8526f2 100644 --- a/reactos/base/setup/usetup/lang/pt-BR.h +++ b/reactos/base/setup/usetup/lang/pt-BR.h @@ -838,12 +838,19 @@ static MUI_ENTRY ptBRSelectPartitionEntries[] = { 8, 15, - "\x07 Para criar uma parti‡Æo no espa‡o nÆo particionado, pressione C.", + "\x07 Press P to create a primary partition.", +// "\x07 Para criar uma parti‡Æo no espa‡o nÆo particionado, pressione C.", TEXT_STYLE_NORMAL }, { 8, 17, + "\x07 Press E to create an extended partition.", + TEXT_STYLE_NORMAL + }, + { + 8, + 19, "\x07 Para excluir a parti‡Æo selecionada, pressione D.", TEXT_STYLE_NORMAL }, @@ -1315,6 +1322,10 @@ static MUI_ENTRY ptBRRegistryEntries[] = MUI_ERROR ptBRErrorEntries[] = { + { + // NOT_AN_ERROR + "Success\n" + }, { //ERROR_NOT_INSTALLED "O ReactOS nÆo est  completamente instalado no computador.\n" @@ -1525,6 +1536,32 @@ MUI_ERROR ptBRErrorEntries[] = " * Pressione qualquer tecla para continuar.", NULL }, + { + //ERROR_PARTITION_TABLE_FULL, + "You can not create a new primary or extended partition in the\n" + "partition table of this disk because the partition table is full.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_ONLY_ONE_EXTENDED, + "You can not create more than one extended partition per disk.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_NOT_BEHIND_EXTENDED, + "You can not create a partition behind an extended partition.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_EXTENDED_NOT_LAST, + "An extended partition must always be the last\n" + "partition in a partition table.\n" + "\n" + " * Press any key to continue." + }, { NULL, NULL @@ -1636,13 +1673,19 @@ MUI_STRING ptBRStrings[] = {STRING_PLEASEWAIT, " Por favor, aguarde..."}, {STRING_INSTALLCREATEPARTITION, - " ENTER=Instalar C=Criar parti‡Æo F3=Sair"}, + " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, +// " ENTER=Instalar C=Criar parti‡Æo F3=Sair"}, {STRING_INSTALLDELETEPARTITION, " ENTER=Instalar D=Apagar parti‡Æo F3=Sair"}, + {STRING_DELETEPARTITION, + " D = Delete Partition F3 = Quit"}, {STRING_PARTITIONSIZE, "Tamanho da nova parti‡Æo:"}, {STRING_CHOOSENEWPARTITION, - "Vocˆ solicitou a cria‡Æo de uma nova parti‡Æo em"}, + "You have chosen to create a primary partition on"}, +// "Vocˆ solicitou a cria‡Æo de uma nova parti‡Æo em"}, + {STRING_CHOOSE_NEW_EXTENDED_PARTITION, + "You have chosen to create an extended partition on"}, {STRING_HDDSIZE, "Por favor, insira o tamanho da nova parti‡Æo em megabytes (MB)."}, {STRING_CREATEPARTITION, @@ -1725,6 +1768,8 @@ MUI_STRING ptBRStrings[] = " Espa‡o nÆo particionado %6lu %s"}, {STRING_MAXSIZE, "MB (max. %lu MB)"}, + {STRING_EXTENDED_PARTITION, + "Extended Partition"}, {STRING_UNFORMATTED, "Novo (sem formato)"}, {STRING_FORMATUNUSED, diff --git a/reactos/base/setup/usetup/lang/ro-RO.h b/reactos/base/setup/usetup/lang/ro-RO.h index 38dee78cff5..b4973c86532 100644 --- a/reactos/base/setup/usetup/lang/ro-RO.h +++ b/reactos/base/setup/usetup/lang/ro-RO.h @@ -881,12 +881,19 @@ static MUI_ENTRY roROSelectPartitionEntries[] = { 8, 15, - "\x07 Tastaîi C pentru a crea o nouÇ partiîie.", + "\x07 Press P to create a primary partition.", +// "\x07 Tastaîi C pentru a crea o nouÇ partiîie.", TEXT_STYLE_NORMAL }, { 8, 17, + "\x07 Press E to create an extended partition.", + TEXT_STYLE_NORMAL + }, + { + 8, + 19, "\x07 Tastaîi D pentru a ­terge o partiîie existentÇ.", TEXT_STYLE_NORMAL }, @@ -1340,6 +1347,10 @@ static MUI_ENTRY roRORegistryEntries[] = MUI_ERROR roROErrorEntries[] = { + { + // NOT_AN_ERROR + "Success\n" + }, { //ERROR_NOT_INSTALLED "ReactOS nu a fost instalat complet Œn calculatorul\n" @@ -1566,6 +1577,32 @@ MUI_ERROR roROErrorEntries[] = " * Tastaîi pentru a continua.", NULL }, + { + //ERROR_PARTITION_TABLE_FULL, + "You can not create a new primary or extended partition in the\n" + "partition table of this disk because the partition table is full.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_ONLY_ONE_EXTENDED, + "You can not create more than one extended partition per disk.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_NOT_BEHIND_EXTENDED, + "You can not create a partition behind an extended partition.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_EXTENDED_NOT_LAST, + "An extended partition must always be the last\n" + "partition in a partition table.\n" + "\n" + " * Press any key to continue." + }, { NULL, NULL @@ -1677,13 +1714,19 @@ MUI_STRING roROStrings[] = {STRING_PLEASEWAIT, " A­teptaîi..."}, {STRING_INSTALLCREATEPARTITION, - " ENTER = Instalare C = Creare partiîie F3 = Ie­ire"}, + " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, +// " ENTER = Instalare C = Creare partiîie F3 = Ie­ire"}, {STRING_INSTALLDELETEPARTITION, " ENTER = Instalare D = ¸tergere partiîie F3 = Ie­ire"}, + {STRING_DELETEPARTITION, + " D = Delete Partition F3 = Quit"}, {STRING_PARTITIONSIZE, "MÇrimea noii partiîii:"}, {STRING_CHOOSENEWPARTITION, - "Aîi ales crearea unei noi partiîii pe"}, + "You have chosen to create a primary partition on"}, +// "Aîi ales crearea unei noi partiîii pe"}, + {STRING_CHOOSE_NEW_EXTENDED_PARTITION, + "You have chosen to create an extended partition on"}, {STRING_HDDSIZE, "Introduceîi mÇrimea noii partiîii Œn megaocteîi."}, {STRING_CREATEPARTITION, @@ -1766,6 +1809,8 @@ MUI_STRING roROStrings[] = " Spaîiu nepartiîionat %6lu %s"}, {STRING_MAXSIZE, "Mo (max. %lu Mo)"}, + {STRING_EXTENDED_PARTITION, + "Extended Partition"}, {STRING_UNFORMATTED, "Part. nouÇ (neformatatÇ)"}, {STRING_FORMATUNUSED, diff --git a/reactos/base/setup/usetup/lang/ru-RU.h b/reactos/base/setup/usetup/lang/ru-RU.h index bbfd631b414..c5376f6f8aa 100644 --- a/reactos/base/setup/usetup/lang/ru-RU.h +++ b/reactos/base/setup/usetup/lang/ru-RU.h @@ -820,12 +820,19 @@ static MUI_ENTRY ruRUSelectPartitionEntries[] = { 8, 15, - "\x07  ¦¬¨â¥ C ¤«ï á®§¤ ­¨ï ­®¢®£® à §¤¥« .", + "\x07 Press P to create a primary partition.", +// "\x07  ¦¬¨â¥ C ¤«ï á®§¤ ­¨ï ­®¢®£® à §¤¥« .", TEXT_STYLE_NORMAL }, { 8, 17, + "\x07 Press E to create an extended partition.", + TEXT_STYLE_NORMAL + }, + { + 8, + 19, "\x07  ¦¬¨â¥ D ¤«ï 㤠«¥­¨ï áãé¥áâ¢ãî饣® à §¤¥« .", TEXT_STYLE_NORMAL }, @@ -1279,6 +1286,10 @@ static MUI_ENTRY ruRURegistryEntries[] = MUI_ERROR ruRUErrorEntries[] = { + { + // NOT_AN_ERROR + "Success\n" + }, { //ERROR_NOT_INSTALLED "ReactOS ­¥ ¡ë« ¯®«­®áâìî ãáâ ­®¢«¥­ ­  ¢ è\n" @@ -1489,6 +1500,32 @@ MUI_ERROR ruRUErrorEntries[] = " * Press any key to continue.", NULL }, + { + //ERROR_PARTITION_TABLE_FULL, + "You can not create a new primary or extended partition in the\n" + "partition table of this disk because the partition table is full.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_ONLY_ONE_EXTENDED, + "You can not create more than one extended partition per disk.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_NOT_BEHIND_EXTENDED, + "You can not create a partition behind an extended partition.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_EXTENDED_NOT_LAST, + "An extended partition must always be the last\n" + "partition in a partition table.\n" + "\n" + " * Press any key to continue." + }, { NULL, NULL @@ -1601,13 +1638,19 @@ MUI_STRING ruRUStrings[] = {STRING_PLEASEWAIT, " ®¦ «ã©áâ , ¯®¤®¦¤¨â¥..."}, {STRING_INSTALLCREATEPARTITION, - " ENTER = “áâ ­®¢¨âì C = ‘®§¤ âì à §¤¥« F3 = ‚ë室"}, + " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, +// " ENTER = “áâ ­®¢¨âì C = ‘®§¤ âì à §¤¥« F3 = ‚ë室"}, {STRING_INSTALLDELETEPARTITION, " ENTER = “áâ ­®¢¨âì D = “¤ «¨âì à §¤¥« F3 = ‚ë室"}, + {STRING_DELETEPARTITION, + " D = Delete Partition F3 = Quit"}, {STRING_PARTITIONSIZE, " §¬¥à ­®¢®£® à §¤¥« :"}, {STRING_CHOOSENEWPARTITION, - "‚ë å®â¨â¥ á®§¤ âì ­®¢ë© à §¤¥« ­ "}, + "You have chosen to create a primary partition on"}, +// "‚ë å®â¨â¥ á®§¤ âì ­®¢ë© à §¤¥« ­ "}, + {STRING_CHOOSE_NEW_EXTENDED_PARTITION, + "You have chosen to create an extended partition on"}, {STRING_HDDSIZE, "®¦ «ã©áâ , ¢¢¥¤¨â¥ à §¬¥à ­®¢®£® à §¤¥«  ¢ ¬¥£ ¡ ©â å."}, {STRING_CREATEPARTITION, @@ -1690,6 +1733,8 @@ MUI_STRING ruRUStrings[] = " ¥à §¬¥ç¥­­®¥ ¯à®áâà ­á⢮ %6lu %s"}, {STRING_MAXSIZE, "Œ (¬ ªá. %lu Œ)"}, + {STRING_EXTENDED_PARTITION, + "Extended Partition"}, {STRING_UNFORMATTED, "®¢ë© (­¥®âä®à¬ â¨à®¢ ­­ë©)"}, {STRING_FORMATUNUSED, diff --git a/reactos/base/setup/usetup/lang/sk-SK.h b/reactos/base/setup/usetup/lang/sk-SK.h index 6c7bf3c1504..5ea527a917f 100644 --- a/reactos/base/setup/usetup/lang/sk-SK.h +++ b/reactos/base/setup/usetup/lang/sk-SK.h @@ -827,12 +827,19 @@ static MUI_ENTRY skSKSelectPartitionEntries[] = { 8, 15, - "\x07 StlaŸte C pre vytvorenie novej oblasti.", + "\x07 Press P to create a primary partition.", +// "\x07 StlaŸte C pre vytvorenie novej oblasti.", TEXT_STYLE_NORMAL }, { 8, 17, + "\x07 Press E to create an extended partition.", + TEXT_STYLE_NORMAL + }, + { + 8, + 19, "\x07 StlaŸte D pre vymazanie existuj£cej oblasti.", TEXT_STYLE_NORMAL }, @@ -1286,6 +1293,10 @@ static MUI_ENTRY skSKRegistryEntries[] = MUI_ERROR skSKErrorEntries[] = { + { + // NOT_AN_ERROR + "Success\n" + }, { //ERROR_NOT_INSTALLED "Syst‚m ReactOS nie je kompletne nainçtalovanì na Vaçom\n" @@ -1499,6 +1510,32 @@ MUI_ERROR skSKErrorEntries[] = " * PokraŸujte stlaŸen¡m –ubovo–n‚ho kl vesu.", NULL }, + { + //ERROR_PARTITION_TABLE_FULL, + "You can not create a new primary or extended partition in the\n" + "partition table of this disk because the partition table is full.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_ONLY_ONE_EXTENDED, + "You can not create more than one extended partition per disk.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_NOT_BEHIND_EXTENDED, + "You can not create a partition behind an extended partition.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_EXTENDED_NOT_LAST, + "An extended partition must always be the last\n" + "partition in a partition table.\n" + "\n" + " * Press any key to continue." + }, { NULL, NULL @@ -1611,13 +1648,19 @@ MUI_STRING skSKStrings[] = {STRING_PLEASEWAIT, " PoŸkajte, pros¡m ..."}, {STRING_INSTALLCREATEPARTITION, - " ENTER = Inçtalovaœ C = Vytvoriœ oblasœ F3 = SkonŸiœ"}, + " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, +// " ENTER = Inçtalovaœ C = Vytvoriœ oblasœ F3 = SkonŸiœ"}, {STRING_INSTALLDELETEPARTITION, " ENTER = Inçtalovaœ D = Odstr niœ oblasœ F3 = SkonŸiœ"}, + {STRING_DELETEPARTITION, + " D = Delete Partition F3 = Quit"}, {STRING_PARTITIONSIZE, "Ve–kosœ novej oblasti:"}, {STRING_CHOOSENEWPARTITION, - "Zvolili ste vytvorenie novej oblasti na"}, + "You have chosen to create a primary partition on"}, +// "Zvolili ste vytvorenie novej oblasti na"}, + {STRING_CHOOSE_NEW_EXTENDED_PARTITION, + "You have chosen to create an extended partition on"}, {STRING_HDDSIZE, "Zadajte, pros¡m, ve–kosœ novej oblasti v megabajtoch."}, {STRING_CREATEPARTITION, @@ -1700,6 +1743,8 @@ MUI_STRING skSKStrings[] = " Miesto bez oblast¡ %6lu %s"}, {STRING_MAXSIZE, "MB (max. %lu MB)"}, + {STRING_EXTENDED_PARTITION, + "Extended Partition"}, {STRING_UNFORMATTED, "Nov  (Nenaform tovan )"}, {STRING_FORMATUNUSED, diff --git a/reactos/base/setup/usetup/lang/sq-AL.h b/reactos/base/setup/usetup/lang/sq-AL.h index f82c4a68b47..de67d4a7a22 100644 --- a/reactos/base/setup/usetup/lang/sq-AL.h +++ b/reactos/base/setup/usetup/lang/sq-AL.h @@ -823,12 +823,19 @@ static MUI_ENTRY sqALSelectPartitionEntries[] = { 8, 15, - "\x07 Kiko C p‰r t‰ krijuar nj‰ particion t‰ ri.", + "\x07 Press P to create a primary partition.", +// "\x07 Kiko C p‰r t‰ krijuar nj‰ particion t‰ ri.", TEXT_STYLE_NORMAL }, { 8, 17, + "\x07 Press E to create an extended partition.", + TEXT_STYLE_NORMAL + }, + { + 8, + 19, "\x07 Kliko D p‰r t‰ fshir‰ nj‰ particion ekzistues.", TEXT_STYLE_NORMAL }, @@ -1282,6 +1289,10 @@ static MUI_ENTRY sqALRegistryEntries[] = MUI_ERROR sqALErrorEntries[] = { + { + // NOT_AN_ERROR + "Success\n" + }, { //ERROR_NOT_INSTALLED "ReactOS nuk ‰shte instaluar plotesisht ne kompjuterin\n" @@ -1492,6 +1503,32 @@ MUI_ERROR sqALErrorEntries[] = " * Shtypni nj‰ tast cfar‰do p‰r t‰ vazhduar.", NULL }, + { + //ERROR_PARTITION_TABLE_FULL, + "You can not create a new primary or extended partition in the\n" + "partition table of this disk because the partition table is full.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_ONLY_ONE_EXTENDED, + "You can not create more than one extended partition per disk.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_NOT_BEHIND_EXTENDED, + "You can not create a partition behind an extended partition.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_EXTENDED_NOT_LAST, + "An extended partition must always be the last\n" + "partition in a partition table.\n" + "\n" + " * Press any key to continue." + }, { NULL, NULL @@ -1603,13 +1640,19 @@ MUI_STRING sqALStrings[] = {STRING_PLEASEWAIT, " Ju lutem prisni..."}, {STRING_INSTALLCREATEPARTITION, - " ENTER = Instalo C = Krijo Particion F3 = Dil"}, + " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, +// " ENTER = Instalo C = Krijo Particion F3 = Dil"}, {STRING_INSTALLDELETEPARTITION, " ENTER = Instalo D = Fshi Particion F3 = Dil"}, + {STRING_DELETEPARTITION, + " D = Delete Partition F3 = Quit"}, {STRING_PARTITIONSIZE, "Madh‰sia e particionit t‰ ri:"}, {STRING_CHOOSENEWPARTITION, +// "You have chosen to create a primary partition on"}, "Ju keni zgjedhur p‰r t‰ krijuar nj‰ ndarje t‰ re n‰"}, + {STRING_CHOOSE_NEW_EXTENDED_PARTITION, + "You have chosen to create an extended partition on"}, {STRING_HDDSIZE, "Ju lutem, jepini madh‰sin‰ e particionit t‰ ri n‰ megabajt."}, {STRING_CREATEPARTITION, @@ -1692,6 +1735,8 @@ MUI_STRING sqALStrings[] = " Hap‰sire e papjesesezuar %6lu %s"}, {STRING_MAXSIZE, "MB (max. %lu MB)"}, + {STRING_EXTENDED_PARTITION, + "Extended Partition"}, {STRING_UNFORMATTED, "I ri (papjesesezuar)"}, {STRING_FORMATUNUSED, diff --git a/reactos/base/setup/usetup/lang/sv-SE.h b/reactos/base/setup/usetup/lang/sv-SE.h index c0f8c13352a..fdb6377365d 100644 --- a/reactos/base/setup/usetup/lang/sv-SE.h +++ b/reactos/base/setup/usetup/lang/sv-SE.h @@ -826,12 +826,19 @@ static MUI_ENTRY svSESelectPartitionEntries[] = { 8, 15, - "\x07 Tryck C f”r att skapa en ny partition.", + "\x07 Press P to create a primary partition.", +// "\x07 Tryck C f”r att skapa en ny partition.", TEXT_STYLE_NORMAL }, { 8, 17, + "\x07 Press E to create an extended partition.", + TEXT_STYLE_NORMAL + }, + { + 8, + 19, "\x07 Tryck D f”r att ta bort en befintlig partititon.", TEXT_STYLE_NORMAL }, @@ -1285,6 +1292,10 @@ static MUI_ENTRY svSERegistryEntries[] = MUI_ERROR svSEErrorEntries[] = { + { + // NOT_AN_ERROR + "Success\n" + }, { //ERROR_NOT_INSTALLED "ReactOS installerades inte fullst„ndigt p† din\n" @@ -1495,6 +1506,32 @@ MUI_ERROR svSEErrorEntries[] = " * Tryck valfri tangent f”r att forts„tta.", NULL }, + { + //ERROR_PARTITION_TABLE_FULL, + "You can not create a new primary or extended partition in the\n" + "partition table of this disk because the partition table is full.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_ONLY_ONE_EXTENDED, + "You can not create more than one extended partition per disk.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_NOT_BEHIND_EXTENDED, + "You can not create a partition behind an extended partition.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_EXTENDED_NOT_LAST, + "An extended partition must always be the last\n" + "partition in a partition table.\n" + "\n" + " * Press any key to continue." + }, { NULL, NULL @@ -1606,13 +1643,19 @@ MUI_STRING svSEStrings[] = {STRING_PLEASEWAIT, " Var v„nlig v„nta..."}, {STRING_INSTALLCREATEPARTITION, - " ENTER = Installera C = Skapa Partition F3 = Avsluta"}, + " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, +// " ENTER = Installera C = Skapa Partition F3 = Avsluta"}, {STRING_INSTALLDELETEPARTITION, " ENTER = Installera D = Ta bort Partition F3 = Avsluta"}, + {STRING_DELETEPARTITION, + " D = Delete Partition F3 = Quit"}, {STRING_PARTITIONSIZE, "Storlek p† den nya partitionen:"}, {STRING_CHOOSENEWPARTITION, - "Du har valt att skapa en ny partiton p†"}, + "You have chosen to create a primary partition on"}, +// "Du har valt att skapa en ny partiton p†"}, + {STRING_CHOOSE_NEW_EXTENDED_PARTITION, + "You have chosen to create an extended partition on"}, {STRING_HDDSIZE, "V„nligen skriv in storleken av den nya partitionen i megabytes."}, {STRING_CREATEPARTITION, @@ -1695,6 +1738,8 @@ MUI_STRING svSEStrings[] = " Opartitionerat utrymme %6lu %s"}, {STRING_MAXSIZE, "MB (max. %lu MB)"}, + {STRING_EXTENDED_PARTITION, + "Extended Partition"}, {STRING_UNFORMATTED, "Ny (Oformaterad)"}, {STRING_FORMATUNUSED, diff --git a/reactos/base/setup/usetup/lang/tr-TR.h b/reactos/base/setup/usetup/lang/tr-TR.h index 415329708a1..2afd98af27d 100644 --- a/reactos/base/setup/usetup/lang/tr-TR.h +++ b/reactos/base/setup/usetup/lang/tr-TR.h @@ -807,12 +807,19 @@ static MUI_ENTRY trTRSelectPartitionEntries[] = { 8, 15, - "\x07 Se‡ili boŸluktan yeni bir b”lm oluŸturmak i‡in C d§mesine basnz.", + "\x07 Press P to create a primary partition.", +// "\x07 Se‡ili boŸluktan yeni bir b”lm oluŸturmak i‡in C d§mesine basnz.", TEXT_STYLE_NORMAL }, { 8, 17, + "\x07 Press E to create an extended partition.", + TEXT_STYLE_NORMAL + }, + { + 8, + 19, "\x07 Se‡ili b”lm silmek i‡in D d§mesine basnz.", TEXT_STYLE_NORMAL }, @@ -1254,6 +1261,10 @@ static MUI_ENTRY trTRRegistryEntries[] = MUI_ERROR trTRErrorEntries[] = { + { + // NOT_AN_ERROR + "Success\n" + }, { //ERROR_NOT_INSTALLED "ReactOS, bilgisayara btnyle kurulmad.\n" @@ -1463,6 +1474,32 @@ MUI_ERROR trTRErrorEntries[] = " * Srdrmek i‡in bir d§meye basnz.", NULL }, + { + //ERROR_PARTITION_TABLE_FULL, + "You can not create a new primary or extended partition in the\n" + "partition table of this disk because the partition table is full.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_ONLY_ONE_EXTENDED, + "You can not create more than one extended partition per disk.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_NOT_BEHIND_EXTENDED, + "You can not create a partition behind an extended partition.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_EXTENDED_NOT_LAST, + "An extended partition must always be the last\n" + "partition in a partition table.\n" + "\n" + " * Press any key to continue." + }, { NULL, NULL @@ -1574,13 +1611,19 @@ MUI_STRING trTRStrings[] = {STRING_PLEASEWAIT, " Ltfen bekleyiniz..."}, {STRING_INSTALLCREATEPARTITION, - " GiriŸ = Kur C = B”lm OluŸtur F3 = €kŸ"}, + " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, +// " GiriŸ = Kur C = B”lm OluŸtur F3 = €kŸ"}, {STRING_INSTALLDELETEPARTITION, " GiriŸ = Kur D = B”lm Sil F3 = €kŸ"}, + {STRING_DELETEPARTITION, + " D = Delete Partition F3 = Quit"}, {STRING_PARTITIONSIZE, "Bykl§ giriniz:"}, {STRING_CHOOSENEWPARTITION, - "Yeni bir b”lm oluŸturmay se‡tiniz."}, + "You have chosen to create a primary partition on"}, +// "Yeni bir b”lm oluŸturmay se‡tiniz."}, + {STRING_CHOOSE_NEW_EXTENDED_PARTITION, + "You have chosen to create an extended partition on"}, {STRING_HDDSIZE, "OluŸturulacak b”lmn bykl§n mega‡oklu olarak giriniz."}, {STRING_CREATEPARTITION, @@ -1663,6 +1706,8 @@ MUI_STRING trTRStrings[] = " Kullanlmayan BoŸluk %6lu %s"}, {STRING_MAXSIZE, "MB (En ‡ok %lu MB)"}, + {STRING_EXTENDED_PARTITION, + "Extended Partition"}, {STRING_UNFORMATTED, "Yeni (Bi‡imlendirilmemiŸ)"}, {STRING_FORMATUNUSED, diff --git a/reactos/base/setup/usetup/lang/uk-UA.h b/reactos/base/setup/usetup/lang/uk-UA.h index 10231d1448b..a3b39c23e77 100644 --- a/reactos/base/setup/usetup/lang/uk-UA.h +++ b/reactos/base/setup/usetup/lang/uk-UA.h @@ -825,12 +825,19 @@ static MUI_ENTRY ukUASelectPartitionEntries[] = { 8, 15, - "\x07  â¨á­iâì C 鮡 á⢮à¨â¨ ­®¢¨© à®§¤i«.", + "\x07 Press P to create a primary partition.", +// "\x07  â¨á­iâì C 鮡 á⢮à¨â¨ ­®¢¨© à®§¤i«.", TEXT_STYLE_NORMAL }, { 8, 17, + "\x07 Press E to create an extended partition.", + TEXT_STYLE_NORMAL + }, + { + 8, + 19, "\x07  â¨á­iâì D 鮡 ¢¨¤ «¨â¨ iá­ãî稩 à®§¤i«.", TEXT_STYLE_NORMAL }, @@ -1284,6 +1291,10 @@ static MUI_ENTRY ukUARegistryEntries[] = MUI_ERROR ukUAErrorEntries[] = { + { + // NOT_AN_ERROR + "Success\n" + }, { //ERROR_NOT_INSTALLED "ReactOS ­¥ ¡ã¢ ¯®¢­iáâî ¢áâ ­®¢«¥­¨© ­  ‚ è\n" @@ -1495,6 +1506,32 @@ MUI_ERROR ukUAErrorEntries[] = " *  â¨á­iâì ¡ã¤ì-ïªã ª« ¢ièã ¤«ï ¯à®¤®¢¦¥­­ï.", NULL }, + { + //ERROR_PARTITION_TABLE_FULL, + "You can not create a new primary or extended partition in the\n" + "partition table of this disk because the partition table is full.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_ONLY_ONE_EXTENDED, + "You can not create more than one extended partition per disk.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_NOT_BEHIND_EXTENDED, + "You can not create a partition behind an extended partition.\n" + "\n" + " * Press any key to continue." + }, + { + //ERROR_EXTENDED_NOT_LAST, + "An extended partition must always be the last\n" + "partition in a partition table.\n" + "\n" + " * Press any key to continue." + }, { NULL, NULL @@ -1606,13 +1643,19 @@ MUI_STRING ukUAStrings[] = {STRING_PLEASEWAIT, " ã¤ì-« áª , § ç¥ª ©â¥..."}, {STRING_INSTALLCREATEPARTITION, - " ENTER = ‚áâ ­®¢¨â¨ C = ‘⢮à¨â¨ ®§¤i« F3 = ‚¨©â¨"}, + " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, +// " ENTER = ‚áâ ­®¢¨â¨ C = ‘⢮à¨â¨ ®§¤i« F3 = ‚¨©â¨"}, {STRING_INSTALLDELETEPARTITION, " ENTER = ‚áâ ­®¢¨â¨ D = ‚¨¤ «¨â¨ ®§¤i« F3 = ‚¨©â¨"}, + {STRING_DELETEPARTITION, + " D = Delete Partition F3 = Quit"}, {STRING_PARTITIONSIZE, "®§¬ià ­®¢®£® à®§¤i«ã:"}, {STRING_CHOOSENEWPARTITION, - "‚¨ å®ç¥â¥ á⢮à¨â¨ ­®¢¨© à®§¤i« ­ "}, + "You have chosen to create a primary partition on"}, +// "‚¨ å®ç¥â¥ á⢮à¨â¨ ­®¢¨© à®§¤i« ­ "}, + {STRING_CHOOSE_NEW_EXTENDED_PARTITION, + "You have chosen to create an extended partition on"}, {STRING_HDDSIZE, "ã¤ì-« áª , ¢¢¥¤iâì à®§¬ià ­®¢®£® à®§¤i«ã ¢ ¬¥£ ¡ ©â å."}, {STRING_CREATEPARTITION, @@ -1695,6 +1738,8 @@ MUI_STRING ukUAStrings[] = " ¥à®§¬i祭  ®¡« áâì %6lu %s"}, {STRING_MAXSIZE, "MB (¬ ªá. %lu MB)"}, + {STRING_EXTENDED_PARTITION, + "Extended Partition"}, {STRING_UNFORMATTED, "®¢¨© (¥ä®à¬ â®¢ ­¨©)"}, {STRING_FORMATUNUSED, diff --git a/reactos/base/setup/usetup/mui.h b/reactos/base/setup/usetup/mui.h index bf35835f792..48092c81ce4 100644 --- a/reactos/base/setup/usetup/mui.h +++ b/reactos/base/setup/usetup/mui.h @@ -100,8 +100,10 @@ MUIGetString( #define STRING_PLEASEWAIT 1 #define STRING_INSTALLCREATEPARTITION 2 #define STRING_INSTALLDELETEPARTITION 3 +#define STRING_DELETEPARTITION 59 #define STRING_PARTITIONSIZE 4 #define STRING_CHOOSENEWPARTITION 5 +#define STRING_CHOOSE_NEW_EXTENDED_PARTITION 57 #define STRING_HDDSIZE 6 #define STRING_CREATEPARTITION 7 #define STRING_PARTFORMAT 8 @@ -144,6 +146,7 @@ MUIGetString( #define STRING_UNPSPACE 48 #define STRING_MAXSIZE 49 #define STRING_UNFORMATTED 50 +#define STRING_EXTENDED_PARTITION 58 #define STRING_FORMATUNUSED 51 #define STRING_FORMATUNKNOWN 52 #define STRING_KB 53 diff --git a/reactos/base/setup/usetup/partlist.c b/reactos/base/setup/usetup/partlist.c index 3312e217c76..70c606027b9 100644 --- a/reactos/base/setup/usetup/partlist.c +++ b/reactos/base/setup/usetup/partlist.c @@ -1373,6 +1373,11 @@ PrintPartitionData( { PartType = "NTFS"; /* FIXME: Not quite correct! */ } + else if ((PartEntry->PartitionType == PARTITION_EXTENDED) || + (PartEntry->PartitionType == PARTITION_XINT13_EXTENDED)) + { + PartType = MUIGetString(STRING_EXTENDED_PARTITION); + } } PartSize.QuadPart = PartEntry->SectorCount.QuadPart * DiskEntry->BytesPerSector; @@ -2095,7 +2100,7 @@ GetNextUnpartitionedEntry( VOID -CreateNewPartition( +CreatePrimaryPartition( PPARTLIST List, ULONGLONG SectorCount, BOOLEAN AutoCreate) @@ -2104,7 +2109,7 @@ CreateNewPartition( PPARTENTRY PartEntry; PPARTENTRY NewPartEntry; - DPRINT1("CreateNewPartition(%I64u)\n", SectorCount); + DPRINT1("CreatePrimaryPartition(%I64u)\n", SectorCount); if (List == NULL || List->CurrentDisk == NULL || @@ -2180,6 +2185,102 @@ DPRINT1("Total Sectors: %I64u\n", NewPartEntry->SectorCount.QuadPart); } +VOID +CreateExtendedPartition( + PPARTLIST List, + ULONGLONG SectorCount) +{ + PDISKENTRY DiskEntry; + PPARTENTRY PartEntry; + PPARTENTRY NewPartEntry; + + DPRINT1("CreatePrimaryPartition(%I64u)\n", SectorCount); + + if (List == NULL || + List->CurrentDisk == NULL || + List->CurrentPartition == NULL || + List->CurrentPartition->IsPartitioned == TRUE) + { + return; + } + + DiskEntry = List->CurrentDisk; + PartEntry = List->CurrentPartition; + +DPRINT1("Current partition sector count: %I64u\n", PartEntry->SectorCount.QuadPart); + + if (Align(PartEntry->StartSector.QuadPart + SectorCount, DiskEntry->SectorAlignment) - PartEntry->StartSector.QuadPart == PartEntry->SectorCount.QuadPart) + { +DPRINT1("Convert existing partition entry\n"); + /* Convert current entry to 'new (unformatted)' */ + PartEntry->IsPartitioned = TRUE; +// PartEntry->PartitionType = PARTITION_ENTRY_UNUSED; + PartEntry->FormatState = Formatted; + PartEntry->AutoCreate = FALSE; + PartEntry->New = FALSE; + PartEntry->BootIndicator = FALSE; /* FIXME */ + +DPRINT1("First Sector: %I64u\n", PartEntry->StartSector.QuadPart); +DPRINT1("Last Sector: %I64u\n", PartEntry->StartSector.QuadPart + PartEntry->SectorCount.QuadPart - 1); +DPRINT1("Total Sectors: %I64u\n", PartEntry->SectorCount.QuadPart); + } + else + { +DPRINT1("Add new partition entry\n"); + + /* Insert and initialize a new partition entry */ + NewPartEntry = RtlAllocateHeap(ProcessHeap, + HEAP_ZERO_MEMORY, + sizeof(PARTENTRY)); + if (NewPartEntry == NULL) + return; + + /* Insert the new entry into the list */ + InsertTailList(&PartEntry->ListEntry, + &NewPartEntry->ListEntry); + + NewPartEntry->DiskEntry = DiskEntry; + + NewPartEntry->IsPartitioned = TRUE; + NewPartEntry->StartSector.QuadPart = PartEntry->StartSector.QuadPart; + NewPartEntry->SectorCount.QuadPart = Align(NewPartEntry->StartSector.QuadPart + SectorCount, DiskEntry->SectorAlignment) - + NewPartEntry->StartSector.QuadPart; + +// NewPartEntry->PartitionType = PARTITION_ENTRY_UNUSED; + +DPRINT1("First Sector: %I64u\n", NewPartEntry->StartSector.QuadPart); +DPRINT1("Last Sector: %I64u\n", NewPartEntry->StartSector.QuadPart + NewPartEntry->SectorCount.QuadPart - 1); +DPRINT1("Total Sectors: %I64u\n", NewPartEntry->SectorCount.QuadPart); + + NewPartEntry->New = FALSE; + NewPartEntry->FormatState = Formatted; + NewPartEntry->BootIndicator = FALSE; /* FIXME */ + + PartEntry->StartSector.QuadPart = NewPartEntry->StartSector.QuadPart + NewPartEntry->SectorCount.QuadPart; + PartEntry->SectorCount.QuadPart -= (PartEntry->StartSector.QuadPart - NewPartEntry->StartSector.QuadPart); + } + + if (NewPartEntry->StartSector.QuadPart < 1450560) + { + /* Partition starts below the 8.4GB boundary ==> CHS partition */ + NewPartEntry->PartitionType = PARTITION_EXTENDED; + } + else + { + /* Partition starts above the 8.4GB boundary ==> LBA partition */ + NewPartEntry->PartitionType = PARTITION_XINT13_EXTENDED; + } + + UpdateDiskLayout(DiskEntry); + + DiskEntry->Dirty = TRUE; + + UpdatePartitionNumbers(DiskEntry); + + AssignDriveLetters(List); +} + + VOID DeleteCurrentPartition( PPARTLIST List) @@ -2561,4 +2662,143 @@ SetMountedDeviceValues( return TRUE; } + +static +BOOLEAN +IsLastPrimaryPartiton( + IN PPARTENTRY PartEntry) +{ + return (PartEntry->ListEntry.Flink == &PartEntry->DiskEntry->PrimaryPartListHead); +} + + +static +BOOLEAN +IsPreviousPartitionExtended( + IN PPARTENTRY PartEntry, + IN PDISKENTRY DiskEntry) +{ + PPARTENTRY PrevPartEntry; + PLIST_ENTRY Entry; + + Entry = PartEntry->ListEntry.Blink; + + while (Entry != &DiskEntry->PrimaryPartListHead) + { + PrevPartEntry = CONTAINING_RECORD(Entry, PARTENTRY, ListEntry); + + if (IsContainerPartition(PrevPartEntry->PartitionType)) + return TRUE; + + Entry = Entry->Blink; + } + + return FALSE; + +} + + +static +ULONG +GetPrimaryPartitionCount( + IN PDISKENTRY DiskEntry) +{ + PLIST_ENTRY Entry; + PPARTENTRY PartEntry; + UINT nCount = 0; + + Entry = DiskEntry->PrimaryPartListHead.Flink; + while (Entry != &DiskEntry->PrimaryPartListHead) + { + PartEntry = CONTAINING_RECORD(Entry, PARTENTRY, ListEntry); + if (PartEntry->IsPartitioned == TRUE) + nCount++; + + Entry = Entry->Flink; + } + + return nCount; +} + + +static +ULONG +GetExtendedPartitionCount( + IN PDISKENTRY DiskEntry) +{ + PLIST_ENTRY Entry; + PPARTENTRY PartEntry; + UINT nCount = 0; + + Entry = DiskEntry->PrimaryPartListHead.Flink; + while (Entry != &DiskEntry->PrimaryPartListHead) + { + PartEntry = CONTAINING_RECORD(Entry, PARTENTRY, ListEntry); + if (PartEntry->IsPartitioned == TRUE && + IsContainerPartition(PartEntry->PartitionType)) + nCount++; + + Entry = Entry->Flink; + } + + return nCount; +} + + +ULONG +PrimaryPartitionCreationChecks( + IN PPARTLIST List) +{ + PDISKENTRY DiskEntry; + PPARTENTRY PartEntry; + + DiskEntry = List->CurrentDisk; + PartEntry = List->CurrentPartition; + + /* Fail if partition is already in use */ + if (PartEntry->IsPartitioned == TRUE) + return ERROR_NEW_PARTITION; + + /* Fail if there are more than 4 partitions in the list */ + if (GetPrimaryPartitionCount(DiskEntry) > 4) + return ERROR_PARTITION_TABLE_FULL; + + /* FIXME: Fail if this partiton is located behind an extended partition */ + if (IsPreviousPartitionExtended(PartEntry, DiskEntry)) + return ERROR_NOT_BEHIND_EXTENDED; + + return ERROR_SUCCESS; +} + + +ULONG +ExtendedPartitionCreationChecks( + IN PPARTLIST List) +{ + PDISKENTRY DiskEntry; + PPARTENTRY PartEntry; + + DiskEntry = List->CurrentDisk; + PartEntry = List->CurrentPartition; + + /* Fail if partition is already in use */ + if (PartEntry->IsPartitioned == TRUE) + return ERROR_NEW_PARTITION; + + /* Fail if there are more than 4 partitions in the list */ + if (GetPrimaryPartitionCount(DiskEntry) > 4) + return ERROR_PARTITION_TABLE_FULL; + + /* Fail if there is another extended partition in the list */ + if (GetExtendedPartitionCount(DiskEntry) != 0) + return ERROR_ONLY_ONE_EXTENDED; + + /* Fail if the partition is not the last list entry */ + if (!IsLastPrimaryPartiton(PartEntry)) + return ERROR_EXTENDED_NOT_LAST; + + return ERROR_SUCCESS; +} + + /* EOF */ diff --git a/reactos/base/setup/usetup/partlist.h b/reactos/base/setup/usetup/partlist.h index 5cf1841602d..7d092044c2d 100644 --- a/reactos/base/setup/usetup/partlist.h +++ b/reactos/base/setup/usetup/partlist.h @@ -216,11 +216,16 @@ ScrollUpPartitionList( PPARTLIST List); VOID -CreateNewPartition( +CreatePrimaryPartition( PPARTLIST List, ULONGLONG PartitionSize, BOOLEAN AutoCreate); +VOID +CreateExtendedPartition( + PPARTLIST List, + ULONGLONG PartitionSize); + VOID DeleteCurrentPartition( PPARTLIST List); @@ -237,4 +242,12 @@ BOOLEAN WritePartitionsToDisk( PPARTLIST List); +ULONG +PrimaryPartitionCreationChecks( + IN PPARTLIST List); + +ULONG +ExtendedPartitionCreationChecks( + IN PPARTLIST List); + /* EOF */ diff --git a/reactos/base/setup/usetup/usetup.h b/reactos/base/setup/usetup/usetup.h index dd88ca8103b..0d4f587c965 100644 --- a/reactos/base/setup/usetup/usetup.h +++ b/reactos/base/setup/usetup/usetup.h @@ -128,7 +128,8 @@ typedef enum _PAGE_NUMBER LAYOUT_SETTINGS_PAGE, SELECT_PARTITION_PAGE, - CREATE_PARTITION_PAGE, + CREATE_PRIMARY_PARTITION_PAGE, + CREATE_EXTENDED_PARTITION_PAGE, DELETE_PARTITION_PAGE, SELECT_FILE_SYSTEM_PAGE, From 456a955d0b072a11a4f376ca56e0cd970cd08419 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Wed, 21 May 2014 00:18:50 +0000 Subject: [PATCH 008/232] [USETUP]: French translation for extended partitions feature, see r63392. svn path=/trunk/; revision=63393 --- reactos/base/setup/usetup/lang/fr-FR.h | 51 ++++++++++++-------------- 1 file changed, 24 insertions(+), 27 deletions(-) diff --git a/reactos/base/setup/usetup/lang/fr-FR.h b/reactos/base/setup/usetup/lang/fr-FR.h index 853bcf72acb..2fb6ed3338d 100644 --- a/reactos/base/setup/usetup/lang/fr-FR.h +++ b/reactos/base/setup/usetup/lang/fr-FR.h @@ -64,7 +64,7 @@ static MUI_ENTRY frFRWelcomePageEntries[] = { 6, 8, - "Bienvenue … l'installation de ReactOS", + "Bienvenue dans l'installation de ReactOS", TEXT_STYLE_HIGHLIGHT }, { @@ -140,7 +140,7 @@ static MUI_ENTRY frFRIntroPageEntries[] = { 6, 8, - "L'Installation de ReactOS est en phase de d‚veloppement.", + "L'installation de ReactOS est en phase de d‚veloppement.", TEXT_STYLE_NORMAL }, { @@ -457,7 +457,7 @@ static MUI_ENTRY frFRRepairPageEntries[] = { 6, 8, - "L'Installation de ReactOS est en phase de d‚veloppement.", + "L'installation de ReactOS est en phase de d‚veloppement.", TEXT_STYLE_NORMAL }, { @@ -814,13 +814,13 @@ static MUI_ENTRY frFRSelectPartitionEntries[] = { 6, 9, - "l'espace disque non utilise pour de nouvelles partitions.", + "l'espace disque non utilis‚ pour de nouvelles partitions.", TEXT_STYLE_NORMAL }, { 8, 11, - "\x07 Appuyer sur HAUT ou BAS pour s‚lectionner une entree de la liste.", + "\x07 Appuyer sur HAUT ou BAS pour s‚lectionner une entr‚e de la liste.", TEXT_STYLE_NORMAL }, { @@ -832,14 +832,13 @@ static MUI_ENTRY frFRSelectPartitionEntries[] = { 8, 15, - "\x07 Press P to create a primary partition.", -// "\x07 Appuyer sur C pour creer une nouvelle partition.", + "\x07 Appuyer sur P pour cr‚er une partition primaire.", TEXT_STYLE_NORMAL }, { 8, 17, - "\x07 Press E to create an extended partition.", + "\x07 Appuyer sur E pour cr‚er une partition ‚tendue.", TEXT_STYLE_NORMAL }, { @@ -1300,7 +1299,7 @@ MUI_ERROR frFRErrorEntries[] = { { // NOT_AN_ERROR - "Success\n" + "SuccŠs\n" }, { //ERROR_NOT_INSTALLED @@ -1509,34 +1508,34 @@ MUI_ERROR frFRErrorEntries[] = { //ERROR_INSUFFICIENT_DISKSPACE, "Pas assez d'espace libre dans la partition s‚lectionn‚e.\n" - " * Appuyez sur n'importe quelle touche pour continuer.", + " * Appuyer sur une touche pour continuer.", NULL }, { //ERROR_PARTITION_TABLE_FULL, - "You can not create a new primary or extended partition in the\n" - "partition table of this disk because the partition table is full.\n" + "Impossible de cr‚er une nouvelle partition primaire ou ‚tendue\n" + "sur ce disque parce que sa table de partition est pleine.\n" "\n" - " * Press any key to continue." + " * Appuyer sur une touche pour continuer." }, { //ERROR_ONLY_ONE_EXTENDED, - "You can not create more than one extended partition per disk.\n" + "Impossible de cr‚er plus d'une partition ‚tendue par disque.\n" "\n" - " * Press any key to continue." + " * Appuyer sur une touche pour continuer." }, { //ERROR_NOT_BEHIND_EXTENDED, - "You can not create a partition behind an extended partition.\n" + "Impossible de cr‚er une partition pr‚c‚dant une partition ‚tendue.\n" "\n" - " * Press any key to continue." + " * Appuyer sur une touche pour continuer." }, { //ERROR_EXTENDED_NOT_LAST, - "An extended partition must always be the last\n" - "partition in a partition table.\n" + "Une partition ‚tendue doit toujours être plac‚e en dernier\n" + "dans la table de partition.\n" "\n" - " * Press any key to continue." + " * Appuyer sur une touche pour continuer." }, { NULL, @@ -1650,19 +1649,17 @@ MUI_STRING frFRStrings[] = {STRING_PLEASEWAIT, " Veuillez patienter..."}, {STRING_INSTALLCREATEPARTITION, - " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, -// " ENTRE = Installer C = Cr‚er Partition F3 = Quitter"}, + " ENTRE = Installer C = Cr‚er Partition Primaire E = Cr‚er Partition tendue F3 = Quitter"}, {STRING_INSTALLDELETEPARTITION, " ENTRE = Installer D = Supprimer Partition F3 = Quitter"}, {STRING_DELETEPARTITION, - " D = Delete Partition F3 = Quit"}, + " D = Supprimer Partition F3 = Quit"}, {STRING_PARTITIONSIZE, "Taille de la nouvelle partition :"}, {STRING_CHOOSENEWPARTITION, - "You have chosen to create a primary partition on"}, -// "Vous avez choisi de cr‚er une nouvelle partition sur"}, + "Vous avez choisi de cr‚er une partition primaire sur"}, {STRING_CHOOSE_NEW_EXTENDED_PARTITION, - "You have chosen to create an extended partition on"}, + "Vous avez choisi de cr‚er une partition ‚tendue sur"}, {STRING_HDDSIZE, "Veuillez entrer la taille de la nouvelle partition en m‚gaoctets."}, {STRING_CREATEPARTITION, @@ -1746,7 +1743,7 @@ MUI_STRING frFRStrings[] = {STRING_MAXSIZE, "Mo (max. %lu Mo)"}, {STRING_EXTENDED_PARTITION, - "Extended Partition"}, + "Partition tendue"}, {STRING_UNFORMATTED, "Nouveau (non format‚)"}, {STRING_FORMATUNUSED, From 4da2490a2d2ea2198395aa697296ef9b1b3c8889 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Wed, 21 May 2014 00:22:05 +0000 Subject: [PATCH 009/232] Forgot this... svn path=/trunk/; revision=63394 --- reactos/base/setup/usetup/lang/fr-FR.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/base/setup/usetup/lang/fr-FR.h b/reactos/base/setup/usetup/lang/fr-FR.h index 2fb6ed3338d..5fc74fc8f8d 100644 --- a/reactos/base/setup/usetup/lang/fr-FR.h +++ b/reactos/base/setup/usetup/lang/fr-FR.h @@ -1653,7 +1653,7 @@ MUI_STRING frFRStrings[] = {STRING_INSTALLDELETEPARTITION, " ENTRE = Installer D = Supprimer Partition F3 = Quitter"}, {STRING_DELETEPARTITION, - " D = Supprimer Partition F3 = Quit"}, + " D = Supprimer Partition F3 = Quitter"}, {STRING_PARTITIONSIZE, "Taille de la nouvelle partition :"}, {STRING_CHOOSENEWPARTITION, From 110e942a46d4295b2345a36ff850c84f7f8aeb4b Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Wed, 21 May 2014 09:44:41 +0000 Subject: [PATCH 010/232] [NTOSKRNL] Do not ASSERT, when an unimplemented, yet legal flag (MEM_RESERVE) is passed to NtMapViewOfSection. Instead fail gracefully. svn path=/trunk/; revision=63395 --- reactos/ntoskrnl/mm/ARM3/section.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/reactos/ntoskrnl/mm/ARM3/section.c b/reactos/ntoskrnl/mm/ARM3/section.c index c69efc605ac..43274f93614 100644 --- a/reactos/ntoskrnl/mm/ARM3/section.c +++ b/reactos/ntoskrnl/mm/ARM3/section.c @@ -2655,9 +2655,15 @@ MmMapViewOfArm3Section(IN PVOID SectionObject, ASSERT(Section->u.Flags.Image == 0); ASSERT(Section->u.Flags.NoCache == 0); ASSERT(Section->u.Flags.WriteCombined == 0); - ASSERT((AllocationType & MEM_RESERVE) == 0); ASSERT(ControlArea->u.Flags.PhysicalMemory == 0); + /* FIXME */ + if ((AllocationType & MEM_RESERVE) != 0) + { + DPRINT1("MmMapViewOfArm3Section called with MEM_RESERVE, this is not implemented yet!!!\n"); + return STATUS_NOT_IMPLEMENTED; + } + /* Check if the mapping protection is compatible with the create */ if (!MiIsProtectionCompatible(Section->InitialPageProtection, Protect)) { From be2afdedf6edf86aac27f64457710aaf3a602cfc Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Wed, 21 May 2014 11:01:17 +0000 Subject: [PATCH 011/232] [USETUP] Display the proper partition type 'Extended Partiton' when an extended partition is going to be deleted. svn path=/trunk/; revision=63396 --- reactos/base/setup/usetup/interface/usetup.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/reactos/base/setup/usetup/interface/usetup.c b/reactos/base/setup/usetup/interface/usetup.c index af5e16fd99b..e2c394cf5ec 100644 --- a/reactos/base/setup/usetup/interface/usetup.c +++ b/reactos/base/setup/usetup/interface/usetup.c @@ -2137,6 +2137,10 @@ DeletePartitionPage(PINPUT_RECORD Ir) { PartType = "NTFS"; /* FIXME: Not quite correct! */ } + else if (IsContainerPartition(PartEntry->PartitionType)) + { + PartType = MUIGetString(STRING_EXTENDED_PARTITION); + } } PartSize = PartEntry->SectorCount.QuadPart * DiskEntry->BytesPerSector; From 666f21e88f2a4099fc68489ee6f644e585af33c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Wed, 21 May 2014 12:23:04 +0000 Subject: [PATCH 012/232] [USETUP] - Fix a bit the translation of yesterday; - Use TEXT_PADDING_BIG instead of hardcoding 3 spaces in the status messages. svn path=/trunk/; revision=63398 --- reactos/base/setup/usetup/lang/fr-FR.h | 96 +++++++++++++------------- 1 file changed, 48 insertions(+), 48 deletions(-) diff --git a/reactos/base/setup/usetup/lang/fr-FR.h b/reactos/base/setup/usetup/lang/fr-FR.h index 5fc74fc8f8d..9130cd1dde2 100644 --- a/reactos/base/setup/usetup/lang/fr-FR.h +++ b/reactos/base/setup/usetup/lang/fr-FR.h @@ -42,8 +42,8 @@ static MUI_ENTRY frFRLanguagePageEntries[] = { 0, 0, - " ENTRE = Continuer F3 = Quitter", - TEXT_TYPE_STATUS + "ENTRE = Continuer F3 = Quitter", + TEXT_TYPE_STATUS | TEXT_PADDING_BIG }, { 0, @@ -118,8 +118,8 @@ static MUI_ENTRY frFRWelcomePageEntries[] = { 0, 0, - " ENTRE = Continuer R = R‚parer F3 = Quitter", - TEXT_TYPE_STATUS + "ENTRE = Continuer R = R‚parer L = Licence F3 = Quitter", + TEXT_TYPE_STATUS | TEXT_PADDING_BIG }, { 0, @@ -218,8 +218,8 @@ static MUI_ENTRY frFRIntroPageEntries[] = { 0, 0, - " ENTRE = Continuer F3 = Quitter", - TEXT_TYPE_STATUS + "ENTRE = Continuer F3 = Quitter", + TEXT_TYPE_STATUS | TEXT_PADDING_BIG }, { 0, @@ -342,8 +342,8 @@ static MUI_ENTRY frFRLicensePageEntries[] = { 0, 0, - " ENTRE = Retour", - TEXT_TYPE_STATUS + "ENTRE = Retour", + TEXT_TYPE_STATUS | TEXT_PADDING_BIG }, { 0, @@ -435,8 +435,8 @@ static MUI_ENTRY frFRDevicePageEntries[] = { 0, 0, - " ENTRE = Continuer F3 = Quitter", - TEXT_TYPE_STATUS + "ENTRE = Continuer F3 = Quitter", + TEXT_TYPE_STATUS | TEXT_PADDING_BIG }, { 0, @@ -505,8 +505,8 @@ static MUI_ENTRY frFRRepairPageEntries[] = { 0, 0, - " CHAP = Page principale ENTRE = Red‚marrer", - TEXT_TYPE_STATUS + "CHAP = Page principale ENTRE = Red‚marrer", + TEXT_TYPE_STATUS | TEXT_PADDING_BIG }, { 0, @@ -556,8 +556,8 @@ static MUI_ENTRY frFRComputerPageEntries[] = { 0, 0, - " ENTRE = Continuer CHAP = Annuler F3 = Quitter", - TEXT_TYPE_STATUS + "ENTRE = Continuer CHAP = Annuler F3 = Quitter", + TEXT_TYPE_STATUS | TEXT_PADDING_BIG }, { 0, @@ -596,8 +596,8 @@ static MUI_ENTRY frFRFlushPageEntries[] = { 0, 0, - " Vidage du cache", - TEXT_TYPE_STATUS + "Vidage du cache", + TEXT_TYPE_STATUS | TEXT_PADDING_BIG }, { 0, @@ -642,8 +642,8 @@ static MUI_ENTRY frFRQuitPageEntries[] = { 0, 0, - " Veuillez attendre ...", - TEXT_TYPE_STATUS, + "Veuillez attendre ...", + TEXT_TYPE_STATUS | TEXT_PADDING_BIG }, { 0, @@ -693,8 +693,8 @@ static MUI_ENTRY frFRDisplayPageEntries[] = { 0, 0, - " ENTRE = Continuer CHAP = Annuler F3 = Quitter", - TEXT_TYPE_STATUS + "ENTRE = Continuer CHAP = Annuler F3 = Quitter", + TEXT_TYPE_STATUS | TEXT_PADDING_BIG }, { 0, @@ -739,8 +739,8 @@ static MUI_ENTRY frFRSuccessPageEntries[] = { 0, 0, - " ENTRE = Red‚marrer l'ordinateur", - TEXT_TYPE_STATUS + "ENTRE = Red‚marrer l'ordinateur", + TEXT_TYPE_STATUS | TEXT_PADDING_BIG }, { 0, @@ -785,8 +785,8 @@ static MUI_ENTRY frFRBootPageEntries[] = { 0, 0, - " ENTRE = Continuer F3 = Quitter", - TEXT_TYPE_STATUS + "ENTRE = Continuer F3 = Quitter", + TEXT_TYPE_STATUS | TEXT_PADDING_BIG }, { 0, @@ -850,8 +850,8 @@ static MUI_ENTRY frFRSelectPartitionEntries[] = { 0, 0, - " Patienter...", - TEXT_TYPE_STATUS + "Patienter...", + TEXT_TYPE_STATUS | TEXT_PADDING_BIG }, { 0, @@ -884,8 +884,8 @@ static MUI_ENTRY frFRFormatPartitionEntries[] = { 0, 0, - " ENTRE = Continuer F3 = Quitter", - TEXT_TYPE_STATUS + "ENTRE = Continuer F3 = Quitter", + TEXT_TYPE_STATUS | TEXT_PADDING_BIG }, { 0, @@ -936,8 +936,8 @@ static MUI_ENTRY frFRInstallDirectoryEntries[] = { 0, 0, - " ENTRE = Continuer F3 = Quitter", - TEXT_TYPE_STATUS + "ENTRE = Continuer F3 = Quitter", + TEXT_TYPE_STATUS | TEXT_PADDING_BIG }, { 0, @@ -1028,8 +1028,8 @@ static MUI_ENTRY frFRBootLoaderEntries[] = { 0, 0, - " ENTRE = Continuer F3 = Quitter", - TEXT_TYPE_STATUS + "ENTRE = Continuer F3 = Quitter", + TEXT_TYPE_STATUS | TEXT_PADDING_BIG }, { 0, @@ -1068,7 +1068,7 @@ static MUI_ENTRY frFRKeyboardSettingsEntries[] = { 8, 13, - "\x07 Appuyez sur CHAP pour revenir a la page pr‚c‚dente sans changer", + "\x07 Appuyez sur CHAP pour revenir … la page pr‚c‚dente sans changer", TEXT_STYLE_NORMAL }, { @@ -1080,8 +1080,8 @@ static MUI_ENTRY frFRKeyboardSettingsEntries[] = { 0, 0, - " ENTRE = Continuer CHAP = Annuler F3 = Quitter", - TEXT_TYPE_STATUS + "ENTRE = Continuer CHAP = Annuler F3 = Quitter", + TEXT_TYPE_STATUS | TEXT_PADDING_BIG }, { 0, @@ -1120,7 +1120,7 @@ static MUI_ENTRY frFRLayoutSettingsEntries[] = { 8, 13, - "\x07 Appuyez sur CHAP pour revenir a la page pr‚c‚dente sans changer", + "\x07 Appuyez sur CHAP pour revenir … la page pr‚c‚dente sans changer", TEXT_STYLE_NORMAL }, { @@ -1132,8 +1132,8 @@ static MUI_ENTRY frFRLayoutSettingsEntries[] = { 0, 0, - " ENTRE = Continuer CHAP = Annuler F3 = Quitter", - TEXT_TYPE_STATUS + "ENTRE = Continuer CHAP = Annuler F3 = Quitter", + TEXT_TYPE_STATUS | TEXT_PADDING_BIG }, { 0, @@ -1161,8 +1161,8 @@ static MUI_ENTRY frFRPrepareCopyEntries[] = { 0, 0, - " Pr‚pare la liste de fichiers … copier...", - TEXT_TYPE_STATUS + "Pr‚pare la liste de fichiers … copier...", + TEXT_TYPE_STATUS | TEXT_PADDING_BIG }, { 0, @@ -1208,8 +1208,8 @@ static MUI_ENTRY frFRSelectFSEntries[] = { 0, 0, - " ENTRE = Continuer CHAP = Annuler F3 = Quitter", - TEXT_TYPE_STATUS + "ENTRE = Continuer CHAP = Annuler F3 = Quitter", + TEXT_TYPE_STATUS | TEXT_PADDING_BIG }, { @@ -1255,8 +1255,8 @@ static MUI_ENTRY frFRDeletePartitionEntries[] = { 0, 0, - " D = Supprimer la Partition CHAP = Annuler F3 = Quitter", - TEXT_TYPE_STATUS + "D = Supprimer la Partition CHAP = Annuler F3 = Quitter", + TEXT_TYPE_STATUS | TEXT_PADDING_BIG }, { 0, @@ -1283,8 +1283,8 @@ static MUI_ENTRY frFRRegistryEntries[] = { 0, 0, - " En train de cr‚er la base de registres...", - TEXT_TYPE_STATUS + "En train de cr‚er la base de registres...", + TEXT_TYPE_STATUS | TEXT_PADDING_BIG }, { 0, @@ -1532,7 +1532,7 @@ MUI_ERROR frFRErrorEntries[] = }, { //ERROR_EXTENDED_NOT_LAST, - "Une partition ‚tendue doit toujours être plac‚e en dernier\n" + "Une partition ‚tendue doit toujours ˆtre plac‚e en dernier\n" "dans la table de partition.\n" "\n" " * Appuyer sur une touche pour continuer." @@ -1649,7 +1649,7 @@ MUI_STRING frFRStrings[] = {STRING_PLEASEWAIT, " Veuillez patienter..."}, {STRING_INSTALLCREATEPARTITION, - " ENTRE = Installer C = Cr‚er Partition Primaire E = Cr‚er Partition tendue F3 = Quitter"}, + " ENTRE = Installer P/E = Cr‚er Partition Primaire/tendue F3 = Quitter"}, {STRING_INSTALLDELETEPARTITION, " ENTRE = Installer D = Supprimer Partition F3 = Quitter"}, {STRING_DELETEPARTITION, From be8085bec0fb4d46c9283efa4886540e08b25ded Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Wed, 21 May 2014 13:20:38 +0000 Subject: [PATCH 013/232] [MSVCRT_CRT_APITEST] * Don't reply on _set_errno() which shouldn't be exported. svn path=/trunk/; revision=63399 --- rostests/apitests/crt/mbstowcs_s.c | 38 +++++++++++++++--------------- rostests/apitests/crt/wcstombs_s.c | 38 +++++++++++++++--------------- 2 files changed, 38 insertions(+), 38 deletions(-) diff --git a/rostests/apitests/crt/mbstowcs_s.c b/rostests/apitests/crt/mbstowcs_s.c index 3976fd6a3f7..ba65a98e4be 100644 --- a/rostests/apitests/crt/mbstowcs_s.c +++ b/rostests/apitests/crt/mbstowcs_s.c @@ -54,7 +54,7 @@ START_TEST(mbstowcs_s) size_t cchConverted; wchar_t widechar[10]; - _set_errno(0); + *_errno() = 0; cchConverted = 0xf00bac; widechar[5] = 0xFF; ret = mbstowcs_s(&cchConverted, widechar, 6, "hallo", 5); @@ -64,7 +64,7 @@ START_TEST(mbstowcs_s) ok_wstr(widechar, L"hallo"); ok_errno(0); - _set_errno(0); + *_errno() = 0; cchConverted = 0xf00bac; widechar[0] = 0xFF; ret = mbstowcs_s(&cchConverted, widechar, 1, "", 0); @@ -73,7 +73,7 @@ START_TEST(mbstowcs_s) ok_wchar(widechar[0], 0); ok_errno(0); - _set_errno(0); + *_errno() = 0; cchConverted = 0xf00bac; widechar[0] = 0xFF; widechar[1] = 0xFF; @@ -92,7 +92,7 @@ START_TEST(mbstowcs_s) ok_wchar(widechar[0], 0); ok_errno(ERANGE); - _set_errno(0); + *_errno() = 0; cchConverted = 0xf00bac; widechar[0] = 0xFF; widechar[1] = 0xFF; @@ -111,64 +111,64 @@ START_TEST(mbstowcs_s) ok_wchar(widechar[0], 0); ok_errno(ERANGE); - _set_errno(0); + *_errno() = 0; ret = mbstowcs_s(0, 0, 0, 0, 0); ok_long(ret, EINVAL); ok_errno(EINVAL); - _set_errno(0); + *_errno() = 0; cchConverted = 0xf00bac; ret = mbstowcs_s(&cchConverted, 0, 0, 0, 0); ok_long(ret, EINVAL); ok_size_t(cchConverted, 0); ok_errno(EINVAL); - _set_errno(0); + *_errno() = 0; widechar[0] = L'x'; ret = mbstowcs_s(0, widechar, 0, 0, 0); ok_long(ret, EINVAL); ok_wchar(widechar[0], L'x'); ok_errno(EINVAL); - _set_errno(0); + *_errno() = 0; ret = mbstowcs_s(0, widechar, 10, "hallo", 5); ok_long(ret, 0); ok_errno(0); - _set_errno(0); + *_errno() = 0; ret = mbstowcs_s(0, widechar, 0, "hallo", 5); ok_long(ret, EINVAL); ok_errno(EINVAL); - _set_errno(0); + *_errno() = 0; cchConverted = 0xf00bac; ret = mbstowcs_s(&cchConverted, 0, 10, "hallo", 5); ok_long(ret, EINVAL); ok_size_t(cchConverted, 0xf00bac); ok_errno(EINVAL); - _set_errno(0); + *_errno() = 0; cchConverted = 0xf00bac; ret = mbstowcs_s(&cchConverted, 0, 0, "hallo", 5); ok_long(ret, 0); ok_size_t(cchConverted, 6); ok_errno(0); - _set_errno(0); + *_errno() = 0; cchConverted = 0xf00bac; ret = mbstowcs_s(&cchConverted, widechar, 10, 0, 5); ok_long(ret, EINVAL); ok_size_t(cchConverted, 0); ok_errno(EINVAL); - _set_errno(0); + *_errno() = 0; cchConverted = 0xf00bac; ret = mbstowcs_s(&cchConverted, widechar, 10, "hallo", 0); ok_long(ret, 0); ok_size_t(cchConverted, 1); ok_errno(0); - _set_errno(0); + *_errno() = 0; cchConverted = 0xf00bac; widechar[0] = 0xABCD; widechar[1] = 0xABCD; @@ -187,28 +187,28 @@ START_TEST(mbstowcs_s) ok_wchar(widechar[0], L'h'); ok_errno(0); - _set_errno(0); + *_errno() = 0; cchConverted = 0xf00bac; ret = mbstowcs_s(&cchConverted, widechar, 10, 0, 0); ok_long(ret, 0); ok_size_t(cchConverted, 1); ok_errno(0); - _set_errno(0); + *_errno() = 0; cchConverted = 0xf00bac; ret = mbstowcs_s(&cchConverted, widechar, 10, "hallo", 7); ok_long(ret, 0); ok_size_t(cchConverted, 6); ok_errno(0); - _set_errno(0); + *_errno() = 0; cchConverted = 0xf00bac; ret = mbstowcs_s(&cchConverted, 0, 0, "hallo", 7); ok_long(ret, 0); ok_size_t(cchConverted, 6); ok_errno(0); - _set_errno(0); + *_errno() = 0; cchConverted = 0xf00bac; widechar[0] = 0xABCD; widechar[1] = 0xABCD; @@ -227,7 +227,7 @@ START_TEST(mbstowcs_s) ok_wchar(widechar[0], L'h'); ok_errno(0); - _set_errno(0); + *_errno() = 0; cchConverted = 0xf00bac; ret = mbstowcs_s(&cchConverted, widechar, 10, "hallo", -1); ok_long(ret, 0); diff --git a/rostests/apitests/crt/wcstombs_s.c b/rostests/apitests/crt/wcstombs_s.c index 324de4468c3..d16468b0ceb 100644 --- a/rostests/apitests/crt/wcstombs_s.c +++ b/rostests/apitests/crt/wcstombs_s.c @@ -36,7 +36,7 @@ START_TEST(wcstombs_s) size_t cchConverted; char mbsbuffer[10]; - _set_errno(0); + *_errno() = 0; cchConverted = 0xf00bac; mbsbuffer[5] = 0xFF; ret = wcstombs_s(&cchConverted, mbsbuffer, 6, L"hallo", 5); @@ -46,7 +46,7 @@ START_TEST(wcstombs_s) ok_str(mbsbuffer, "hallo"); ok_errno(0); - _set_errno(0); + *_errno() = 0; cchConverted = 0xf00bac; mbsbuffer[0] = 0xFF; ret = wcstombs_s(&cchConverted, mbsbuffer, 1, L"", 0); @@ -55,7 +55,7 @@ START_TEST(wcstombs_s) ok_wchar(mbsbuffer[0], 0); ok_errno(0); - _set_errno(0); + *_errno() = 0; cchConverted = 0xf00bac; mbsbuffer[0] = 0xFF; mbsbuffer[1] = 0xFF; @@ -74,7 +74,7 @@ START_TEST(wcstombs_s) ok_char(mbsbuffer[0], 0); ok_errno(ERANGE); - _set_errno(0); + *_errno() = 0; cchConverted = 0xf00bac; mbsbuffer[0] = 0xFF; mbsbuffer[1] = 0xFF; @@ -93,64 +93,64 @@ START_TEST(wcstombs_s) ok_char(mbsbuffer[0], 0); ok_errno(ERANGE); - _set_errno(0); + *_errno() = 0; ret = wcstombs_s(0, 0, 0, 0, 0); ok_long(ret, EINVAL); ok_errno(EINVAL); - _set_errno(0); + *_errno() = 0; cchConverted = 0xf00bac; ret = wcstombs_s(&cchConverted, 0, 0, 0, 0); ok_long(ret, EINVAL); ok_size_t(cchConverted, 0); ok_errno(EINVAL); - _set_errno(0); + *_errno() = 0; mbsbuffer[0] = L'x'; ret = wcstombs_s(0, mbsbuffer, 0, 0, 0); ok_long(ret, EINVAL); ok_char(mbsbuffer[0], L'x'); ok_errno(EINVAL); - _set_errno(0); + *_errno() = 0; ret = wcstombs_s(0, mbsbuffer, 10, L"hallo", 5); ok_long(ret, 0); ok_errno(0); - _set_errno(0); + *_errno() = 0; ret = wcstombs_s(0, mbsbuffer, 0, L"hallo", 5); ok_long(ret, EINVAL); ok_errno(EINVAL); - _set_errno(0); + *_errno() = 0; cchConverted = 0xf00bac; ret = wcstombs_s(&cchConverted, 0, 10, L"hallo", 5); ok_long(ret, EINVAL); ok_size_t(cchConverted, 0xf00bac); ok_errno(EINVAL); - _set_errno(0); + *_errno() = 0; cchConverted = 0xf00bac; ret = wcstombs_s(&cchConverted, 0, 0, L"hallo", 5); ok_long(ret, 0); ok_size_t(cchConverted, 6); ok_errno(0); - _set_errno(0); + *_errno() = 0; cchConverted = 0xf00bac; ret = wcstombs_s(&cchConverted, mbsbuffer, 10, 0, 5); ok_long(ret, EINVAL); ok_size_t(cchConverted, 0); ok_errno(EINVAL); - _set_errno(0); + *_errno() = 0; cchConverted = 0xf00bac; ret = wcstombs_s(&cchConverted, mbsbuffer, 10, L"hallo", 0); ok_long(ret, 0); ok_size_t(cchConverted, 1); ok_errno(0); - _set_errno(0); + *_errno() = 0; cchConverted = 0xf00bac; mbsbuffer[0] = 0xAB; mbsbuffer[1] = 0xCD; @@ -169,28 +169,28 @@ START_TEST(wcstombs_s) ok_char(mbsbuffer[0], L'h'); ok_errno(0); - _set_errno(0); + *_errno() = 0; cchConverted = 0xf00bac; ret = wcstombs_s(&cchConverted, mbsbuffer, 10, 0, 0); ok_long(ret, 0); ok_size_t(cchConverted, 1); ok_errno(0); - _set_errno(0); + *_errno() = 0; cchConverted = 0xf00bac; ret = wcstombs_s(&cchConverted, mbsbuffer, 10, L"hallo", 7); ok_long(ret, 0); ok_size_t(cchConverted, 6); ok_errno(0); - _set_errno(0); + *_errno() = 0; cchConverted = 0xf00bac; ret = wcstombs_s(&cchConverted, 0, 0, L"hallo", 7); ok_long(ret, 0); ok_size_t(cchConverted, 6); ok_errno(0); - _set_errno(0); + *_errno() = 0; cchConverted = 0xf00bac; mbsbuffer[0] = 0xAB; mbsbuffer[1] = 0xCD; @@ -209,7 +209,7 @@ START_TEST(wcstombs_s) ok_char(mbsbuffer[0], L'h'); ok_errno(0); - _set_errno(0); + *_errno() = 0; cchConverted = 0xf00bac; ret = wcstombs_s(&cchConverted, mbsbuffer, 10, L"hallo", -1); ok_long(ret, 0); From b5adad7bfa7b73a205c2c2ca602bce5db43ebd04 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Wed, 21 May 2014 13:30:26 +0000 Subject: [PATCH 014/232] [MSVCRT_CRT_APITEST] * Don't enable mbstowcs_s() tests (it shouldn't be exported). CORE-7889 svn path=/trunk/; revision=63400 --- rostests/apitests/crt/msvcrt_crt_apitest.cmake | 2 +- rostests/apitests/crt/testlist.c | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/rostests/apitests/crt/msvcrt_crt_apitest.cmake b/rostests/apitests/crt/msvcrt_crt_apitest.cmake index b9ec8eb63aa..40f59c956d0 100644 --- a/rostests/apitests/crt/msvcrt_crt_apitest.cmake +++ b/rostests/apitests/crt/msvcrt_crt_apitest.cmake @@ -1118,7 +1118,7 @@ list(APPEND SOURCE_MSVCRT # mbsrtowcs # mbsrtowcs_s # mbstowcs.c - mbstowcs_s +# mbstowcs_s Not exported in 2k3 Sp1 # mbtowc.c # memchr.c # memcmp.c diff --git a/rostests/apitests/crt/testlist.c b/rostests/apitests/crt/testlist.c index 12532923837..765857d783f 100644 --- a/rostests/apitests/crt/testlist.c +++ b/rostests/apitests/crt/testlist.c @@ -4,7 +4,6 @@ #include #if defined(TEST_MSVCRT) -extern void func_mbstowcs_s(void); extern void func_wcstombs_s(void); extern void func__vscprintf(void); extern void func__vscwprintf(void); @@ -31,7 +30,6 @@ const struct test winetest_testlist[] = #endif #if defined(TEST_STATIC_CRT) #elif defined(TEST_MSVCRT) - { "mbstowcs_s", func_mbstowcs_s }, { "wcstombs_s", func_wcstombs_s }, { "_vscprintf", func__vscprintf }, { "_vscwprintf", func__vscwprintf }, From 934a5546ea25a579bdb3f49ec2a6671ba0ee208c Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Wed, 21 May 2014 14:26:20 +0000 Subject: [PATCH 015/232] [MSVCRT_CRT_APITEST] * Don't enable wcstombs_s() tests (it shouldn't be exported). CORE-7889 svn path=/trunk/; revision=63401 --- rostests/apitests/crt/msvcrt_crt_apitest.cmake | 2 +- rostests/apitests/crt/testlist.c | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/rostests/apitests/crt/msvcrt_crt_apitest.cmake b/rostests/apitests/crt/msvcrt_crt_apitest.cmake index 40f59c956d0..6da1664fe35 100644 --- a/rostests/apitests/crt/msvcrt_crt_apitest.cmake +++ b/rostests/apitests/crt/msvcrt_crt_apitest.cmake @@ -1251,7 +1251,7 @@ list(APPEND SOURCE_MSVCRT # wcstok_s.c # wcstol.c # wcstombs.c - wcstombs_s.c +# wcstombs_s.c Not exported in 2k3 Sp1 # wcstoul.c # wcsxfrm.c # wctob diff --git a/rostests/apitests/crt/testlist.c b/rostests/apitests/crt/testlist.c index 765857d783f..13670f0200a 100644 --- a/rostests/apitests/crt/testlist.c +++ b/rostests/apitests/crt/testlist.c @@ -4,7 +4,6 @@ #include #if defined(TEST_MSVCRT) -extern void func_wcstombs_s(void); extern void func__vscprintf(void); extern void func__vscwprintf(void); #endif @@ -30,7 +29,6 @@ const struct test winetest_testlist[] = #endif #if defined(TEST_STATIC_CRT) #elif defined(TEST_MSVCRT) - { "wcstombs_s", func_wcstombs_s }, { "_vscprintf", func__vscprintf }, { "_vscwprintf", func__vscwprintf }, #elif defined(TEST_NTDLL) From 10af5eafdfde36e6ec3e9f5e9bfb9150c9cb1dbb Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Wed, 21 May 2014 18:02:48 +0000 Subject: [PATCH 016/232] [MSVCRT] * Don't export mbstowcs_s(). CORE-7889 svn path=/trunk/; revision=63402 --- reactos/dll/win32/msvcrt/msvcrt.spec | 1 - 1 file changed, 1 deletion(-) diff --git a/reactos/dll/win32/msvcrt/msvcrt.spec b/reactos/dll/win32/msvcrt/msvcrt.spec index 8587c0d9e66..2008a214d26 100644 --- a/reactos/dll/win32/msvcrt/msvcrt.spec +++ b/reactos/dll/win32/msvcrt/msvcrt.spec @@ -1304,7 +1304,6 @@ # stub mbsrtowcs # stub mbsrtowcs_s @ cdecl mbstowcs(ptr str long) -@ cdecl mbstowcs_s(ptr ptr long str long) @ cdecl mbtowc(wstr str long) @ cdecl memchr(ptr long long) @ cdecl memcmp(ptr ptr long) From a5b59586d31dce3eb70e9e9fa430120b2378820f Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Wed, 21 May 2014 20:20:18 +0000 Subject: [PATCH 017/232] [USETUP] Display logical partitions. They cannot be selected or modified yet. svn path=/trunk/; revision=63403 --- reactos/base/setup/usetup/lang/bg-BG.h | 4 +- reactos/base/setup/usetup/lang/cs-CZ.h | 4 +- reactos/base/setup/usetup/lang/de-DE.h | 4 +- reactos/base/setup/usetup/lang/el-GR.h | 4 +- reactos/base/setup/usetup/lang/en-US.h | 4 +- reactos/base/setup/usetup/lang/es-ES.h | 4 +- reactos/base/setup/usetup/lang/et-EE.h | 4 +- reactos/base/setup/usetup/lang/fr-FR.h | 4 +- reactos/base/setup/usetup/lang/he-IL.h | 4 +- reactos/base/setup/usetup/lang/it-IT.h | 4 +- reactos/base/setup/usetup/lang/ja-JP.h | 4 +- reactos/base/setup/usetup/lang/lt-LT.h | 4 +- reactos/base/setup/usetup/lang/nl-NL.h | 4 +- reactos/base/setup/usetup/lang/pl-PL.h | 4 +- reactos/base/setup/usetup/lang/pt-BR.h | 4 +- reactos/base/setup/usetup/lang/ro-RO.h | 4 +- reactos/base/setup/usetup/lang/ru-RU.h | 4 +- reactos/base/setup/usetup/lang/sk-SK.h | 4 +- reactos/base/setup/usetup/lang/sq-AL.h | 4 +- reactos/base/setup/usetup/lang/sv-SE.h | 4 +- reactos/base/setup/usetup/lang/tr-TR.h | 4 +- reactos/base/setup/usetup/lang/uk-UA.h | 4 +- reactos/base/setup/usetup/partlist.c | 77 +++++++++++++++++--------- reactos/base/setup/usetup/partlist.h | 2 + 24 files changed, 96 insertions(+), 71 deletions(-) diff --git a/reactos/base/setup/usetup/lang/bg-BG.h b/reactos/base/setup/usetup/lang/bg-BG.h index 742c323ac08..8e5e61f3730 100644 --- a/reactos/base/setup/usetup/lang/bg-BG.h +++ b/reactos/base/setup/usetup/lang/bg-BG.h @@ -1733,7 +1733,7 @@ MUI_STRING bgBGStrings[] = {STRING_HDINFOPARTEXISTS, "­  â¢êठ¤¨áª %lu (%I64u %s), ˆ§¢®¤=%hu, ˜¨­ =%hu, Ž“=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c ¢¨¤ %-3u %6lu %s"}, + "%c%c %s¢¨¤ %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s â¢êठ¤¨áª %lu (ˆ§¢®¤=%hu, ˜¨­ =%hu, Ž“=%hu) ­  %S"}, {STRING_HDDINFOUNK6, @@ -1741,7 +1741,7 @@ MUI_STRING bgBGStrings[] = {STRING_NEWPARTITION, "¥ áꧤ ¤¥­ ­®¢ ¤ï« ­ "}, {STRING_UNPSPACE, - " ¥à §¯à¥¤¥«¥­® ¬ïáâ® %6lu %s"}, + " %s¥à §¯à¥¤¥«¥­® ¬ïáâ®%s %6lu %s"}, {STRING_MAXSIZE, "Œ (¤® %lu Œ)"}, {STRING_EXTENDED_PARTITION, diff --git a/reactos/base/setup/usetup/lang/cs-CZ.h b/reactos/base/setup/usetup/lang/cs-CZ.h index 79b4e78f7b8..319c8e026b1 100644 --- a/reactos/base/setup/usetup/lang/cs-CZ.h +++ b/reactos/base/setup/usetup/lang/cs-CZ.h @@ -1729,7 +1729,7 @@ MUI_STRING csCZStrings[] = {STRING_HDINFOPARTEXISTS, "na harddisku %lu (%I64u %s), Port=%hu, Bus=%hu, Id=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c Typ %-3u %6lu %s"}, + "%c%c %sTyp %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s Harddisk %lu (Port=%hu, Bus=%hu, Id=%hu) na %S"}, {STRING_HDDINFOUNK6, @@ -1737,7 +1737,7 @@ MUI_STRING csCZStrings[] = {STRING_NEWPARTITION, "Instalace vytvoýila novì odd¡l na"}, {STRING_UNPSPACE, - " M¡sto bez odd¡l… %6lu %s"}, + " %sM¡sto bez odd¡l…%s %6lu %s"}, {STRING_MAXSIZE, "MB (max. %lu MB)"}, {STRING_EXTENDED_PARTITION, diff --git a/reactos/base/setup/usetup/lang/de-DE.h b/reactos/base/setup/usetup/lang/de-DE.h index 3df2aa17968..c0a2703fb27 100644 --- a/reactos/base/setup/usetup/lang/de-DE.h +++ b/reactos/base/setup/usetup/lang/de-DE.h @@ -1723,7 +1723,7 @@ MUI_STRING deDEStrings[] = {STRING_HDINFOPARTEXISTS, "auf Festplatte %lu (%I64u %s), Port=%hu, Bus=%hu, Id=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c Typ %-3u %6lu %s"}, + "%c%c %sTyp %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s Festplatte %lu (Port=%hu, Bus=%hu, Id=%hu) auf %S"}, {STRING_HDDINFOUNK6, @@ -1731,7 +1731,7 @@ MUI_STRING deDEStrings[] = {STRING_NEWPARTITION, "Setup erstellte eine neue Partition auf"}, {STRING_UNPSPACE, - " Unpartitionierter Speicher %6lu %s"}, + " %sUnpartitionierter Speicher%s %6lu %s"}, {STRING_MAXSIZE, "MB (max. %lu MB)"}, {STRING_EXTENDED_PARTITION, diff --git a/reactos/base/setup/usetup/lang/el-GR.h b/reactos/base/setup/usetup/lang/el-GR.h index 15c5dcbde38..790b375e606 100644 --- a/reactos/base/setup/usetup/lang/el-GR.h +++ b/reactos/base/setup/usetup/lang/el-GR.h @@ -1745,7 +1745,7 @@ MUI_STRING elGRStrings[] = {STRING_HDINFOPARTEXISTS, "©«¦ ©¡¢ž¨æ ›å©¡¦ %lu (%I64u %s), Port=%hu, Bus=%hu, Id=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c Type %-3u %6lu %s"}, + "%c%c %sType %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s ‘¡¢ž¨æª ›å©¡¦ª %lu (Port=%hu, Bus=%hu, Id=%hu) on %S"}, {STRING_HDDINFOUNK6, @@ -1753,7 +1753,7 @@ MUI_STRING elGRStrings[] = {STRING_NEWPARTITION, "† œš¡˜«á©«˜©ž ›ž£ ¦ç¨šž©œ ⤘ ¤â¦ partition ©«¦"}, {STRING_UNPSPACE, - " Unpartitioned space %6lu %s"}, + " %sUnpartitioned space%s %6lu %s"}, {STRING_MAXSIZE, "MB (£œš. %lu MB)"}, {STRING_EXTENDED_PARTITION, diff --git a/reactos/base/setup/usetup/lang/en-US.h b/reactos/base/setup/usetup/lang/en-US.h index 10374175549..6788c36bfb2 100644 --- a/reactos/base/setup/usetup/lang/en-US.h +++ b/reactos/base/setup/usetup/lang/en-US.h @@ -1717,7 +1717,7 @@ MUI_STRING enUSStrings[] = {STRING_HDINFOPARTEXISTS, "on Harddisk %lu (%I64u %s), Port=%hu, Bus=%hu, Id=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c Type %-3u %6lu %s"}, + "%c%c %sType %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s Harddisk %lu (Port=%hu, Bus=%hu, Id=%hu) on %S"}, {STRING_HDDINFOUNK6, @@ -1725,7 +1725,7 @@ MUI_STRING enUSStrings[] = {STRING_NEWPARTITION, "Setup created a new partition on"}, {STRING_UNPSPACE, - " Unpartitioned space %6lu %s"}, + " %sUnpartitioned space%s %6lu %s"}, {STRING_MAXSIZE, "MB (max. %lu MB)"}, {STRING_EXTENDED_PARTITION, diff --git a/reactos/base/setup/usetup/lang/es-ES.h b/reactos/base/setup/usetup/lang/es-ES.h index 277304abee7..8d6dd1d6aa6 100644 --- a/reactos/base/setup/usetup/lang/es-ES.h +++ b/reactos/base/setup/usetup/lang/es-ES.h @@ -1727,7 +1727,7 @@ MUI_STRING esESStrings[] = {STRING_HDINFOPARTEXISTS, "en Disco duro %lu (%I64u %s), Port=%hu, Bus=%hu, Id=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c Tipo %-3u %6lu %s"}, + "%c%c %sTipo %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s Disco duro %lu (Port=%hu, Bus=%hu, Id=%hu) en %S"}, {STRING_HDDINFOUNK6, @@ -1735,7 +1735,7 @@ MUI_STRING esESStrings[] = {STRING_NEWPARTITION, "El instalador a creado una nueva partici¢n en"}, {STRING_UNPSPACE, - " Espacio sin particionar %6lu %s"}, + " %sEspacio sin particionar%s %6lu %s"}, {STRING_MAXSIZE, "MB (max. %lu MB)"}, {STRING_EXTENDED_PARTITION, diff --git a/reactos/base/setup/usetup/lang/et-EE.h b/reactos/base/setup/usetup/lang/et-EE.h index f07a67cf78f..08666686476 100644 --- a/reactos/base/setup/usetup/lang/et-EE.h +++ b/reactos/base/setup/usetup/lang/et-EE.h @@ -1718,7 +1718,7 @@ MUI_STRING etEEStrings[] = {STRING_HDINFOPARTEXISTS, "Kävaketas %lu (%I64u %s), Port=%hu, Siin=%hu, Id=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c Tp %-3u %6lu %s"}, + "%c%c %sTp %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s Kävaketas %lu (Port=%hu, Siin=%hu, Id=%hu) on %S"}, {STRING_HDDINFOUNK6, @@ -1726,7 +1726,7 @@ MUI_STRING etEEStrings[] = {STRING_NEWPARTITION, "Loodi uus partitsioon"}, {STRING_UNPSPACE, - " Kasutamata kettaruum %6lu %s"}, + " %sKasutamata kettaruum%s %6lu %s"}, {STRING_MAXSIZE, "MB (maks. %lu MB)"}, {STRING_EXTENDED_PARTITION, diff --git a/reactos/base/setup/usetup/lang/fr-FR.h b/reactos/base/setup/usetup/lang/fr-FR.h index 9130cd1dde2..379815f3750 100644 --- a/reactos/base/setup/usetup/lang/fr-FR.h +++ b/reactos/base/setup/usetup/lang/fr-FR.h @@ -1731,7 +1731,7 @@ MUI_STRING frFRStrings[] = {STRING_HDINFOPARTEXISTS, "sur Disque dur %lu (%I64u %s), Port=%hu, Bus=%hu, Id=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c Type %-3u %6lu %s"}, + "%c%c %sType %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s Disque dur %lu (Port=%hu, Bus=%hu, Id=%hu) sur %S"}, {STRING_HDDINFOUNK6, @@ -1739,7 +1739,7 @@ MUI_STRING frFRStrings[] = {STRING_NEWPARTITION, "Setup a cr‚‚ une nouvelle partition sur"}, {STRING_UNPSPACE, - " Espace non partitionn‚ %6lu %s"}, + " %sEspace non partitionn‚%s %6lu %s"}, {STRING_MAXSIZE, "Mo (max. %lu Mo)"}, {STRING_EXTENDED_PARTITION, diff --git a/reactos/base/setup/usetup/lang/he-IL.h b/reactos/base/setup/usetup/lang/he-IL.h index d3734c0a235..5279790ae76 100644 --- a/reactos/base/setup/usetup/lang/he-IL.h +++ b/reactos/base/setup/usetup/lang/he-IL.h @@ -1719,7 +1719,7 @@ MUI_STRING heILStrings[] = {STRING_HDINFOPARTEXISTS, "on Harddisk %lu (%I64u %s), Port=%hu, Bus=%hu, Id=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c Type %-3u %6lu %s"}, + "%c%c %sType %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s Harddisk %lu (Port=%hu, Bus=%hu, Id=%hu) on %S"}, {STRING_HDDINFOUNK6, @@ -1727,7 +1727,7 @@ MUI_STRING heILStrings[] = {STRING_NEWPARTITION, "Setup created a new partition on"}, {STRING_UNPSPACE, - " Unpartitioned space %6lu %s"}, + " %sUnpartitioned space%s %6lu %s"}, {STRING_MAXSIZE, "MB (max. %lu MB)"}, {STRING_EXTENDED_PARTITION, diff --git a/reactos/base/setup/usetup/lang/it-IT.h b/reactos/base/setup/usetup/lang/it-IT.h index 1561841e9a6..bb27717aac1 100644 --- a/reactos/base/setup/usetup/lang/it-IT.h +++ b/reactos/base/setup/usetup/lang/it-IT.h @@ -1722,7 +1722,7 @@ MUI_STRING itITStrings[] = {STRING_HDINFOPARTEXISTS, "su Harddisk %lu (%I64u %s), Port=%hu, Bus=%hu, Id=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c Tipo %-3u %6lu %s"}, + "%c%c %sTipo %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s Harddisk %lu (Port=%hu, Bus=%hu, Id=%hu) su %S"}, {STRING_HDDINFOUNK6, @@ -1730,7 +1730,7 @@ MUI_STRING itITStrings[] = {STRING_NEWPARTITION, "Setup ha creato una nuova partizione su"}, {STRING_UNPSPACE, - " Spazio non partizionato %6lu %s"}, + " %sSpazio non partizionato%s %6lu %s"}, {STRING_MAXSIZE, "MB (max. %lu MB)"}, {STRING_UNFORMATTED, diff --git a/reactos/base/setup/usetup/lang/ja-JP.h b/reactos/base/setup/usetup/lang/ja-JP.h index 83685cdc1ee..d0842ba028e 100644 --- a/reactos/base/setup/usetup/lang/ja-JP.h +++ b/reactos/base/setup/usetup/lang/ja-JP.h @@ -1721,7 +1721,7 @@ MUI_STRING jaJPStrings[] = {STRING_HDINFOPARTEXISTS, "on ʰÄÞÃÞ¨½¸ %lu (%I64u %s), Îß°Ä=%hu, ÊÞ½=%hu, Id=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c ¼­Ù² %-3u %6lu %s"}, + "%c%c %s¼­Ù² %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s ʰÄÞÃÞ¨½¸ %lu (Îß°Ä=%hu, ÊÞ½=%hu, Id=%hu) on %S"}, {STRING_HDDINFOUNK6, @@ -1729,7 +1729,7 @@ MUI_STRING jaJPStrings[] = {STRING_NEWPARTITION, "¾¯Ä±¯ÌßÊ ±À×¼² Ê߰輮ݦ Â·ÞÆ »¸¾²¼Ï¼À:"}, {STRING_UNPSPACE, - " ÐÌÞݶÂÉ ½Íß°½ %6lu %s"}, + " %sÐÌÞݶÂÉ ½Íß°½%s %6lu %s"}, {STRING_MAXSIZE, "MB (»²ÀÞ². %lu MB)"}, {STRING_EXTENDED_PARTITION, diff --git a/reactos/base/setup/usetup/lang/lt-LT.h b/reactos/base/setup/usetup/lang/lt-LT.h index a02554a5186..b2bbf911100 100644 --- a/reactos/base/setup/usetup/lang/lt-LT.h +++ b/reactos/base/setup/usetup/lang/lt-LT.h @@ -1728,7 +1728,7 @@ MUI_STRING ltLTStrings[] = {STRING_HDINFOPARTEXISTS, "on Harddisk %lu (%I64u %s), Port=%hu, Bus=%hu, Id=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c Type %-3u %6lu %s"}, + "%c%c %sType %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s Harddisk %lu (Port=%hu, Bus=%hu, Id=%hu) on %S"}, {STRING_HDDINFOUNK6, @@ -1736,7 +1736,7 @@ MUI_STRING ltLTStrings[] = {STRING_NEWPARTITION, "Setup created a new partition on"}, {STRING_UNPSPACE, - " Unpartitioned space %6lu %s"}, + " %sUnpartitioned space%s %6lu %s"}, {STRING_MAXSIZE, "MB (max. %lu MB)"}, {STRING_EXTENDED_PARTITION, diff --git a/reactos/base/setup/usetup/lang/nl-NL.h b/reactos/base/setup/usetup/lang/nl-NL.h index 011111d13d0..47ac10dd4da 100644 --- a/reactos/base/setup/usetup/lang/nl-NL.h +++ b/reactos/base/setup/usetup/lang/nl-NL.h @@ -1766,7 +1766,7 @@ MUI_STRING nlNLStrings[] = {STRING_HDINFOPARTEXISTS, "op Schijf %lu (%I64u %s), Poort=%hu, Bus=%hu, Id=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c Type %-3u %6lu %s"}, + "%c%c %sType %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s Schijf %lu (Poort=%hu, Bus=%hu, Id=%hu) op %S"}, {STRING_HDDINFOUNK6, @@ -1774,7 +1774,7 @@ MUI_STRING nlNLStrings[] = {STRING_NEWPARTITION, "Setup heeft een nieuwe partitie aangemaakt op"}, {STRING_UNPSPACE, - " Niet gepartitioneerde ruimte %6lu %s"}, + " %sNiet gepartitioneerde ruimte%s %6lu %s"}, {STRING_MAXSIZE, "MB (max. %lu MB)"}, {STRING_EXTENDED_PARTITION, diff --git a/reactos/base/setup/usetup/lang/pl-PL.h b/reactos/base/setup/usetup/lang/pl-PL.h index 6ab8e361e8e..f03915b3bc2 100644 --- a/reactos/base/setup/usetup/lang/pl-PL.h +++ b/reactos/base/setup/usetup/lang/pl-PL.h @@ -1730,7 +1730,7 @@ MUI_STRING plPLStrings[] = {STRING_HDINFOPARTEXISTS, "na Dysku Twardym %lu (%I64u %s), Port=%hu, Szyna=%hu, Id=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c 09Typ %-3u %6lu %s"}, + "%c%c %s09Typ %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s Dysk Twardy %lu (Port=%hu, Szyna=%hu, Id=%hu) na %S"}, {STRING_HDDINFOUNK6, @@ -1738,7 +1738,7 @@ MUI_STRING plPLStrings[] = {STRING_NEWPARTITION, "Instalator utworzyˆ now¥ partycj©"}, {STRING_UNPSPACE, - " Miejsce poza partycjami %6lu %s"}, + " %sMiejsce poza partycjami%s %6lu %s"}, {STRING_MAXSIZE, "MB (maks. %lu MB)"}, {STRING_UNFORMATTED, diff --git a/reactos/base/setup/usetup/lang/pt-BR.h b/reactos/base/setup/usetup/lang/pt-BR.h index 2837b8526f2..e4839862082 100644 --- a/reactos/base/setup/usetup/lang/pt-BR.h +++ b/reactos/base/setup/usetup/lang/pt-BR.h @@ -1757,7 +1757,7 @@ MUI_STRING ptBRStrings[] = {STRING_HDINFOPARTEXISTS, "em Disco %lu (%I64u %s), Porta=%hu, Barramento=%hu, Id=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c Tipo %-3u %6lu %s"}, + "%c%c %sTipo %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s Disco %lu (Porta=%hu, Barramento=%hu, Id=%hu) em %S"}, {STRING_HDDINFOUNK6, @@ -1765,7 +1765,7 @@ MUI_STRING ptBRStrings[] = {STRING_NEWPARTITION, "O instalador criou uma nova parti‡Æo em"}, {STRING_UNPSPACE, - " Espa‡o nÆo particionado %6lu %s"}, + " %sEspa‡o nÆo particionado%s %6lu %s"}, {STRING_MAXSIZE, "MB (max. %lu MB)"}, {STRING_EXTENDED_PARTITION, diff --git a/reactos/base/setup/usetup/lang/ro-RO.h b/reactos/base/setup/usetup/lang/ro-RO.h index b4973c86532..ac0a0f50ccf 100644 --- a/reactos/base/setup/usetup/lang/ro-RO.h +++ b/reactos/base/setup/usetup/lang/ro-RO.h @@ -1798,7 +1798,7 @@ MUI_STRING roROStrings[] = {STRING_HDINFOPARTEXISTS, "de pe Discul %lu (%I64u %s), Port=%hu, Magistrala=%hu, Id=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c Tip %-3u %6lu %s"}, + "%c%c %sTip %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s Discul %lu (Port=%hu, Magistrala=%hu, Id=%hu) de tip %S"}, {STRING_HDDINFOUNK6, @@ -1806,7 +1806,7 @@ MUI_STRING roROStrings[] = {STRING_NEWPARTITION, "O nouÇ partiîie a fost creatÇ Œn"}, {STRING_UNPSPACE, - " Spaîiu nepartiîionat %6lu %s"}, + " %sSpaîiu nepartiîionat%s %6lu %s"}, {STRING_MAXSIZE, "Mo (max. %lu Mo)"}, {STRING_EXTENDED_PARTITION, diff --git a/reactos/base/setup/usetup/lang/ru-RU.h b/reactos/base/setup/usetup/lang/ru-RU.h index c5376f6f8aa..4a0c38a4b50 100644 --- a/reactos/base/setup/usetup/lang/ru-RU.h +++ b/reactos/base/setup/usetup/lang/ru-RU.h @@ -1722,7 +1722,7 @@ MUI_STRING ruRUStrings[] = {STRING_HDINFOPARTEXISTS, "­  ¦¥á⪮¬ ¤¨áª¥ %lu (%I64u %s), ®àâ=%hu, ˜¨­ =%hu, Id=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c ‡ ¯¨áì %-3u %6lu %s"}, + "%c%c %s‡ ¯¨áì %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s †¥á⪨© ¤¨áª %lu (®àâ=%hu, ˜¨­ =%hu, Id=%hu) ­  %S"}, {STRING_HDDINFOUNK6, @@ -1730,7 +1730,7 @@ MUI_STRING ruRUStrings[] = {STRING_NEWPARTITION, "ணࠬ¬  ãáâ ­®¢ª¨ á®§¤ «  ­®¢ë© à §¤¥« ­ :"}, {STRING_UNPSPACE, - " ¥à §¬¥ç¥­­®¥ ¯à®áâà ­á⢮ %6lu %s"}, + " %s¥à §¬¥ç¥­­®¥ ¯à®áâà ­á⢮%s %6lu %s"}, {STRING_MAXSIZE, "Œ (¬ ªá. %lu Œ)"}, {STRING_EXTENDED_PARTITION, diff --git a/reactos/base/setup/usetup/lang/sk-SK.h b/reactos/base/setup/usetup/lang/sk-SK.h index 5ea527a917f..4572b00ae41 100644 --- a/reactos/base/setup/usetup/lang/sk-SK.h +++ b/reactos/base/setup/usetup/lang/sk-SK.h @@ -1732,7 +1732,7 @@ MUI_STRING skSKStrings[] = {STRING_HDINFOPARTEXISTS, "na pevnom disku %lu (%I64u %s), Port=%hu, Bus=%hu, Id=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c typ %-3u %6lu %s"}, + "%c%c %styp %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s pevnì disk %lu (Port=%hu, Bus=%hu, Id=%hu) na %S"}, {STRING_HDDINFOUNK6, @@ -1740,7 +1740,7 @@ MUI_STRING skSKStrings[] = {STRING_NEWPARTITION, "Inçtal tor vytvoril nov£ oblasœ na"}, {STRING_UNPSPACE, - " Miesto bez oblast¡ %6lu %s"}, + " %sMiesto bez oblast¡%s %6lu %s"}, {STRING_MAXSIZE, "MB (max. %lu MB)"}, {STRING_EXTENDED_PARTITION, diff --git a/reactos/base/setup/usetup/lang/sq-AL.h b/reactos/base/setup/usetup/lang/sq-AL.h index de67d4a7a22..e746fb25a97 100644 --- a/reactos/base/setup/usetup/lang/sq-AL.h +++ b/reactos/base/setup/usetup/lang/sq-AL.h @@ -1724,7 +1724,7 @@ MUI_STRING sqALStrings[] = {STRING_HDINFOPARTEXISTS, "on Harddisku %lu (%I64u %s), Port=%hu, Bus=%hu, Id=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c Tipi %-3u %6lu %s"}, + "%c%c %sTipi %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s Harddisku %lu (Port=%hu, Bus=%hu, Id=%hu) on %S"}, {STRING_HDDINFOUNK6, @@ -1732,7 +1732,7 @@ MUI_STRING sqALStrings[] = {STRING_NEWPARTITION, "Instalimi krijoj nj‰ particion t‰ ri n‰"}, {STRING_UNPSPACE, - " Hap‰sire e papjesesezuar %6lu %s"}, + " %sHap‰sire e papjesesezuar%s %6lu %s"}, {STRING_MAXSIZE, "MB (max. %lu MB)"}, {STRING_EXTENDED_PARTITION, diff --git a/reactos/base/setup/usetup/lang/sv-SE.h b/reactos/base/setup/usetup/lang/sv-SE.h index fdb6377365d..7559e6c4cdd 100644 --- a/reactos/base/setup/usetup/lang/sv-SE.h +++ b/reactos/base/setup/usetup/lang/sv-SE.h @@ -1727,7 +1727,7 @@ MUI_STRING svSEStrings[] = {STRING_HDINFOPARTEXISTS, "p† H†rddisk %lu (%I64u %s), Port=%hu, Bus=%hu, Id=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c Typ %-3u %6lu %s"}, + "%c%c %sTyp %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s H†rddisk %lu (Port=%hu, Bus=%hu, Id=%hu) p† %S"}, {STRING_HDDINFOUNK6, @@ -1735,7 +1735,7 @@ MUI_STRING svSEStrings[] = {STRING_NEWPARTITION, "Setup skapade en ny partition p†"}, {STRING_UNPSPACE, - " Opartitionerat utrymme %6lu %s"}, + " %sOpartitionerat utrymme%s %6lu %s"}, {STRING_MAXSIZE, "MB (max. %lu MB)"}, {STRING_EXTENDED_PARTITION, diff --git a/reactos/base/setup/usetup/lang/tr-TR.h b/reactos/base/setup/usetup/lang/tr-TR.h index 2afd98af27d..bb86584510d 100644 --- a/reactos/base/setup/usetup/lang/tr-TR.h +++ b/reactos/base/setup/usetup/lang/tr-TR.h @@ -1695,7 +1695,7 @@ MUI_STRING trTRStrings[] = {STRING_HDINFOPARTEXISTS, "šzerinde: Disk %lu (%I64u %s), GiriŸ=%hu, Veri Yolu=%hu, Kimlik=%hu, %wZ zerinde."}, {STRING_HDDINFOUNK5, - "%c%c Tr %-3u %6lu %s"}, + "%c%c %sTr %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s Disk %lu (GiriŸ=%hu, Veri Yolu=%hu, Kimlik=%hu), %S zerinde"}, {STRING_HDDINFOUNK6, @@ -1703,7 +1703,7 @@ MUI_STRING trTRStrings[] = {STRING_NEWPARTITION, "Kur, Ÿu b”lm oluŸturdu:"}, {STRING_UNPSPACE, - " Kullanlmayan BoŸluk %6lu %s"}, + " %sKullanlmayan BoŸluk%s %6lu %s"}, {STRING_MAXSIZE, "MB (En ‡ok %lu MB)"}, {STRING_EXTENDED_PARTITION, diff --git a/reactos/base/setup/usetup/lang/uk-UA.h b/reactos/base/setup/usetup/lang/uk-UA.h index a3b39c23e77..93c68772985 100644 --- a/reactos/base/setup/usetup/lang/uk-UA.h +++ b/reactos/base/setup/usetup/lang/uk-UA.h @@ -1727,7 +1727,7 @@ MUI_STRING ukUAStrings[] = {STRING_HDINFOPARTEXISTS, "­  †®àá⪮¬ã ¤¨áªã %lu (%I64u %s), ®àâ=%hu, ˜¨­ =%hu, Id=%hu (%wZ)."}, {STRING_HDDINFOUNK5, - "%c%c Type %-3u %6lu %s"}, + "%c%c %sType %-3u%s %6lu %s"}, {STRING_HDINFOPARTSELECT, "%6lu %s †®àá⪨© ¤¨áª %lu (®àâ=%hu, ˜¨­ =%hu, Id=%hu) on %S"}, {STRING_HDDINFOUNK6, @@ -1735,7 +1735,7 @@ MUI_STRING ukUAStrings[] = {STRING_NEWPARTITION, "‚áâ ­®¢«î¢ ç á⢮ਢ ­®¢¨© à®§¤i« ­ "}, {STRING_UNPSPACE, - " ¥à®§¬i祭  ®¡« áâì %6lu %s"}, + " %s¥à®§¬i祭  ®¡« áâì%s %6lu %s"}, {STRING_MAXSIZE, "MB (¬ ªá. %lu MB)"}, {STRING_EXTENDED_PARTITION, diff --git a/reactos/base/setup/usetup/partlist.c b/reactos/base/setup/usetup/partlist.c index 70c606027b9..eef02c1f367 100644 --- a/reactos/base/setup/usetup/partlist.c +++ b/reactos/base/setup/usetup/partlist.c @@ -520,15 +520,18 @@ EnumerateBiosDiskEntries( static VOID -AddPrimaryPartitionToDisk( +AddPartitionToDisk( ULONG DiskNumber, PDISKENTRY DiskEntry, - ULONG PartitionIndex) + ULONG PartitionIndex, + BOOLEAN ExtendedPartition) { PPARTITION_INFORMATION PartitionInfo; PPARTENTRY PartEntry; PartitionInfo = &DiskEntry->LayoutBuffer->PartitionEntry[PartitionIndex]; + if (PartitionInfo->PartitionType == 0) + return; PartEntry = RtlAllocateHeap(ProcessHeap, HEAP_ZERO_MEMORY, @@ -545,6 +548,7 @@ AddPrimaryPartitionToDisk( PartEntry->PartitionType = PartitionInfo->PartitionType; PartEntry->HiddenSectors = PartitionInfo->HiddenSectors; + PartEntry->ExtendedPartition = ExtendedPartition; PartEntry->IsPartitioned = TRUE; PartEntry->PartitionNumber = PartitionInfo->PartitionNumber; PartEntry->PartitionIndex = PartitionIndex; @@ -609,8 +613,12 @@ AddPrimaryPartitionToDisk( PartEntry->FormatState = UnknownFormat; } - InsertTailList(&DiskEntry->PrimaryPartListHead, - &PartEntry->ListEntry); + if (ExtendedPartition) + InsertTailList(&DiskEntry->ExtendedPartListHead, + &PartEntry->ListEntry); + else + InsertTailList(&DiskEntry->PrimaryPartListHead, + &PartEntry->ListEntry); } @@ -1055,24 +1063,18 @@ AddDiskToList( { for (i = 0; i < 4; i++) { - if (DiskEntry->LayoutBuffer->PartitionEntry[i].PartitionType != 0) - { - AddPrimaryPartitionToDisk(DiskNumber, - DiskEntry, - i); - } + AddPartitionToDisk(DiskNumber, + DiskEntry, + i, + FALSE); } - for (i = 4; i < DiskEntry->LayoutBuffer->PartitionCount; i++) + for (i = 4; i < DiskEntry->LayoutBuffer->PartitionCount; i += 4) { - if (DiskEntry->LayoutBuffer->PartitionEntry[i].PartitionType != 0) - { -#if 0 - AddExtendedPartitionToDisk(DiskNumber, - DiskEntry, - i); -#endif - } + AddPartitionToDisk(DiskNumber, + DiskEntry, + i, + TRUE); } } } @@ -1340,6 +1342,8 @@ PrintPartitionData( sprintf(LineBuffer, MUIGetString(STRING_UNPSPACE), + PartEntry->ExtendedPartition ? " " : "", + PartEntry->ExtendedPartition ? "" : " ", PartSize.u.LowPart, Unit); } @@ -1406,17 +1410,21 @@ PrintPartitionData( MUIGetString(STRING_HDDINFOUNK5), (PartEntry->DriveLetter == 0) ? '-' : PartEntry->DriveLetter, (PartEntry->DriveLetter == 0) ? '-' : ':', + PartEntry->ExtendedPartition ? " " : "", PartEntry->PartitionType, + PartEntry->ExtendedPartition ? "" : " ", PartSize.u.LowPart, Unit); } else { sprintf(LineBuffer, - "%c%c %-24s %6lu %s", + "%c%c %s%-24s%s %6lu %s", (PartEntry->DriveLetter == 0) ? '-' : PartEntry->DriveLetter, (PartEntry->DriveLetter == 0) ? '-' : ':', + PartEntry->ExtendedPartition ? " " : "", PartType, + PartEntry->ExtendedPartition ? "" : " ", PartSize.u.LowPart, Unit); } @@ -1466,8 +1474,8 @@ PrintDiskData( PPARTLIST List, PDISKENTRY DiskEntry) { - PPARTENTRY PartEntry; - PLIST_ENTRY Entry; + PPARTENTRY PrimaryPartEntry, ExtendedPartEntry; + PLIST_ENTRY PrimaryEntry, ExtendedEntry; CHAR LineBuffer[128]; COORD coPos; DWORD Written; @@ -1551,16 +1559,31 @@ PrintDiskData( PrintEmptyLine(List); /* Print partition lines*/ - Entry = DiskEntry->PrimaryPartListHead.Flink; - while (Entry != &DiskEntry->PrimaryPartListHead) + PrimaryEntry = DiskEntry->PrimaryPartListHead.Flink; + while (PrimaryEntry != &DiskEntry->PrimaryPartListHead) { - PartEntry = CONTAINING_RECORD(Entry, PARTENTRY, ListEntry); + PrimaryPartEntry = CONTAINING_RECORD(PrimaryEntry, PARTENTRY, ListEntry); PrintPartitionData(List, DiskEntry, - PartEntry); + PrimaryPartEntry); - Entry = Entry->Flink; + if (IsContainerPartition(PrimaryPartEntry->PartitionType)) + { + ExtendedEntry = DiskEntry->ExtendedPartListHead.Flink; + while (ExtendedEntry != &DiskEntry->ExtendedPartListHead) + { + ExtendedPartEntry = CONTAINING_RECORD(ExtendedEntry, PARTENTRY, ListEntry); + + PrintPartitionData(List, + DiskEntry, + ExtendedPartEntry); + + ExtendedEntry = ExtendedEntry->Flink; + } + } + + PrimaryEntry = PrimaryEntry->Flink; } /* Print separator line */ diff --git a/reactos/base/setup/usetup/partlist.h b/reactos/base/setup/usetup/partlist.h index 7d092044c2d..40022f4b800 100644 --- a/reactos/base/setup/usetup/partlist.h +++ b/reactos/base/setup/usetup/partlist.h @@ -57,6 +57,8 @@ typedef struct _PARTENTRY CHAR VolumeLabel[17]; CHAR FileSystemName[9]; + BOOLEAN ExtendedPartition; + /* Partition is partitioned disk space */ BOOLEAN IsPartitioned; From 16a52a9e08f037897ad431370966ee2e5bc279a2 Mon Sep 17 00:00:00 2001 From: Kamil Hornicek Date: Thu, 22 May 2014 09:33:29 +0000 Subject: [PATCH 018/232] [WIN32K] - make DIB_XXBPP_StretchBlt work with top down bitmaps - fixes missing icons in the taskbar in explorer new (32bpp) svn path=/trunk/; revision=63404 --- reactos/win32ss/gdi/dib/stretchblt.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/reactos/win32ss/gdi/dib/stretchblt.c b/reactos/win32ss/gdi/dib/stretchblt.c index f8272aadb58..55f80575942 100644 --- a/reactos/win32ss/gdi/dib/stretchblt.c +++ b/reactos/win32ss/gdi/dib/stretchblt.c @@ -29,6 +29,8 @@ BOOLEAN DIB_XXBPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf, SURFOBJ *Ma LONG DstWidth; LONG SrcHeight; LONG SrcWidth; + LONG MaskCy; + LONG SourceCy; ULONG Color; ULONG Dest, Source = 0, Pattern = 0; @@ -56,6 +58,7 @@ BOOLEAN DIB_XXBPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf, SURFOBJ *Ma if (UsesSource) { + SourceCy = abs(SourceSurf->sizlBitmap.cy); fnSource_GetPixel = DibFunctionsForBitmapFormat[SourceSurf->iBitmapFormat].DIB_GetPixel; DPRINT("Source BPP: %u, srcRect: (%d,%d)-(%d,%d)\n", BitsPerFormat(SourceSurf->iBitmapFormat), SourceRect->left, SourceRect->top, SourceRect->right, SourceRect->bottom); @@ -64,6 +67,7 @@ BOOLEAN DIB_XXBPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf, SURFOBJ *Ma if (MaskSurf) { fnMask_GetPixel = DibFunctionsForBitmapFormat[MaskSurf->iBitmapFormat].DIB_GetPixel; + MaskCy = abs(MaskSurf->sizlBitmap.cy); } DstHeight = DestRect->bottom - DestRect->top; @@ -124,7 +128,7 @@ BOOLEAN DIB_XXBPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf, SURFOBJ *Ma { sx = SourceRect->left+(DesX - DestRect->left) * SrcWidth / DstWidth; if (sx < 0 || sy < 0 || - MaskSurf->sizlBitmap.cx < sx || MaskSurf->sizlBitmap.cy < sy || + MaskSurf->sizlBitmap.cx < sx || MaskCy < sy || fnMask_GetPixel(MaskSurf, sx, sy) != 0) { CanDraw = FALSE; @@ -135,7 +139,7 @@ BOOLEAN DIB_XXBPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf, SURFOBJ *Ma { sx = SourceRect->left+(DesX - DestRect->left) * SrcWidth / DstWidth; if (sx >= 0 && sy >= 0 && - SourceSurf->sizlBitmap.cx > sx && SourceSurf->sizlBitmap.cy > sy) + SourceSurf->sizlBitmap.cx > sx && SourceCy > sy) { Source = XLATEOBJ_iXlate(ColorTranslation, fnSource_GetPixel(SourceSurf, sx, sy)); } From bbbef82de905b495512f3371764f759a996c8eca Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Thu, 22 May 2014 10:08:44 +0000 Subject: [PATCH 019/232] [NTOSKRNL] - Do not align the size of a memory area to the allocation granularity, but to PAGE_SIZE. Fixes OllyDbg regression from r61108. CORE-8168 #resolve - Clarify the size calculation in MmCreateMemoryArea - Silence a few DPRINTs svn path=/trunk/; revision=63405 --- reactos/ntoskrnl/mm/ARM3/miarm.h | 4 ++-- reactos/ntoskrnl/mm/ARM3/virtual.c | 8 ++++---- reactos/ntoskrnl/mm/marea.c | 10 +++++----- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/reactos/ntoskrnl/mm/ARM3/miarm.h b/reactos/ntoskrnl/mm/ARM3/miarm.h index d1cfbb4a24d..6e803aeb7d0 100644 --- a/reactos/ntoskrnl/mm/ARM3/miarm.h +++ b/reactos/ntoskrnl/mm/ARM3/miarm.h @@ -1100,11 +1100,11 @@ MI_WS_OWNER(IN PEPROCESS Process) /* Check if this process is the owner, and that the thread owns the WS */ if (PsGetCurrentThread()->OwnsProcessWorkingSetExclusive == 0) { - DPRINT1("Thread: %p is not an owner\n", PsGetCurrentThread()); + DPRINT("Thread: %p is not an owner\n", PsGetCurrentThread()); } if (KeGetCurrentThread()->ApcState.Process != &Process->Pcb) { - DPRINT1("Current thread %p is attached to another process %p\n", PsGetCurrentThread(), Process); + DPRINT("Current thread %p is attached to another process %p\n", PsGetCurrentThread(), Process); } return ((KeGetCurrentThread()->ApcState.Process == &Process->Pcb) && ((PsGetCurrentThread()->OwnsProcessWorkingSetExclusive) || diff --git a/reactos/ntoskrnl/mm/ARM3/virtual.c b/reactos/ntoskrnl/mm/ARM3/virtual.c index 3eef793fcd9..f82aedb9c9f 100644 --- a/reactos/ntoskrnl/mm/ARM3/virtual.c +++ b/reactos/ntoskrnl/mm/ARM3/virtual.c @@ -1291,10 +1291,10 @@ MiGetPageProtection(IN PMMPTE PointerPte) } /* This is software PTE */ - DPRINT1("Prototype PTE: %lx %p\n", TempPte.u.Hard.PageFrameNumber, Pfn); - DPRINT1("VA: %p\n", MiPteToAddress(&TempPte)); - DPRINT1("Mask: %lx\n", TempPte.u.Soft.Protection); - DPRINT1("Mask2: %lx\n", Pfn->OriginalPte.u.Soft.Protection); + DPRINT("Prototype PTE: %lx %p\n", TempPte.u.Hard.PageFrameNumber, Pfn); + DPRINT("VA: %p\n", MiPteToAddress(&TempPte)); + DPRINT("Mask: %lx\n", TempPte.u.Soft.Protection); + DPRINT("Mask2: %lx\n", Pfn->OriginalPte.u.Soft.Protection); return MmProtectToValue[TempPte.u.Soft.Protection]; } diff --git a/reactos/ntoskrnl/mm/marea.c b/reactos/ntoskrnl/mm/marea.c index 5deec1abb9b..6ea4db48075 100644 --- a/reactos/ntoskrnl/mm/marea.c +++ b/reactos/ntoskrnl/mm/marea.c @@ -988,6 +988,7 @@ MmCreateMemoryArea(PMMSUPPORT AddressSpace, { ULONG_PTR tmpLength; PMEMORY_AREA MemoryArea; + ULONG_PTR EndingAddress; DPRINT("MmCreateMemoryArea(Type 0x%lx, BaseAddress %p, " "*BaseAddress %p, Length %p, AllocationFlags %x, " @@ -997,7 +998,7 @@ MmCreateMemoryArea(PMMSUPPORT AddressSpace, if ((*BaseAddress) == 0 && !FixedAddress) { - tmpLength = (ULONG_PTR)MM_ROUND_UP(Length, Granularity); + tmpLength = (ULONG_PTR)MM_ROUND_UP(Length, PAGE_SIZE); *BaseAddress = MmFindGap(AddressSpace, tmpLength, Granularity, @@ -1010,10 +1011,9 @@ MmCreateMemoryArea(PMMSUPPORT AddressSpace, } else { - tmpLength = Length + ((ULONG_PTR) *BaseAddress - - (ULONG_PTR) MM_ROUND_DOWN(*BaseAddress, Granularity)); - tmpLength = (ULONG_PTR)MM_ROUND_UP(tmpLength, Granularity); - *BaseAddress = MM_ROUND_DOWN(*BaseAddress, Granularity); + EndingAddress = ((ULONG_PTR)*BaseAddress + Length - 1) | (PAGE_SIZE - 1); + *BaseAddress = ALIGN_DOWN_POINTER_BY(*BaseAddress, Granularity); + tmpLength = EndingAddress + 1 - (ULONG_PTR)*BaseAddress; if (!MmGetAddressSpaceOwner(AddressSpace) && *BaseAddress < MmSystemRangeStart) { From 3369bd4f94ce90ce90dfedf7889be488d0308541 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Thu, 22 May 2014 10:18:22 +0000 Subject: [PATCH 020/232] =?UTF-8?q?[NTOSKRNL]=20Pass=20process=20id=20to?= =?UTF-8?q?=20DbgUnLoadImageSymbols=20instead=20of=20ZwCurrentProcess()=20?= =?UTF-8?q?or=20a=20PEPROCESS.=20Patch=20by=20J=C3=A9r=C3=B4me=20Gardou=20?= =?UTF-8?q?=20CORE-8253=20#resol?= =?UTF-8?q?ve?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit svn path=/trunk/; revision=63406 --- reactos/ntoskrnl/ex/init.c | 2 +- reactos/ntoskrnl/kd64/kdinit.c | 2 +- reactos/ntoskrnl/mm/ARM3/section.c | 2 +- reactos/ntoskrnl/mm/ARM3/sysldr.c | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/reactos/ntoskrnl/ex/init.c b/reactos/ntoskrnl/ex/init.c index 1d5b644247f..04f8e785d10 100644 --- a/reactos/ntoskrnl/ex/init.c +++ b/reactos/ntoskrnl/ex/init.c @@ -846,7 +846,7 @@ ExpLoadBootSymbols(IN PLOADER_PARAMETER_BLOCK LoaderBlock) /* Load the symbols */ DbgLoadImageSymbols(&SymbolString, LdrEntry->DllBase, - (ULONG_PTR)ZwCurrentProcess()); + (ULONG_PTR)PsGetCurrentProcessId()); } } diff --git a/reactos/ntoskrnl/kd64/kdinit.c b/reactos/ntoskrnl/kd64/kdinit.c index 723a18ca323..18ea337ee36 100644 --- a/reactos/ntoskrnl/kd64/kdinit.c +++ b/reactos/ntoskrnl/kd64/kdinit.c @@ -356,7 +356,7 @@ KdInitSystem(IN ULONG BootPhase, RtlInitString(&ImageName, NameBuffer); DbgLoadImageSymbols(&ImageName, LdrEntry->DllBase, - (ULONG_PTR)ZwCurrentProcess()); + (ULONG_PTR)PsGetCurrentProcessId()); /* Go to the next entry */ NextEntry = NextEntry->Flink; diff --git a/reactos/ntoskrnl/mm/ARM3/section.c b/reactos/ntoskrnl/mm/ARM3/section.c index 43274f93614..f8ae660db29 100644 --- a/reactos/ntoskrnl/mm/ARM3/section.c +++ b/reactos/ntoskrnl/mm/ARM3/section.c @@ -1185,7 +1185,7 @@ MiLoadUserSymbols(IN PCONTROL_AREA ControlArea, Status = RtlUnicodeStringToAnsiString(&FileNameA, FileName, TRUE); if (NT_SUCCESS(Status)) { - DbgLoadImageSymbols(&FileNameA, BaseAddress, (ULONG_PTR)Process); + DbgLoadImageSymbols(&FileNameA, BaseAddress, (ULONG_PTR)Process->UniqueProcessId); RtlFreeAnsiString(&FileNameA); } } diff --git a/reactos/ntoskrnl/mm/ARM3/sysldr.c b/reactos/ntoskrnl/mm/ARM3/sysldr.c index 3175b0330cb..de123958b22 100644 --- a/reactos/ntoskrnl/mm/ARM3/sysldr.c +++ b/reactos/ntoskrnl/mm/ARM3/sysldr.c @@ -928,7 +928,7 @@ MmUnloadSystemImage(IN PVOID ImageHandle) /* Unload the symbols */ DbgUnLoadImageSymbols(&TempName, BaseAddress, - (ULONG_PTR)ZwCurrentProcess()); + (ULONG_PTR)PsGetCurrentProcessId()); RtlFreeAnsiString(&TempName); } } @@ -3309,7 +3309,7 @@ LoaderScan: /* Notify the debugger */ DbgLoadImageSymbols(&AnsiTemp, LdrEntry->DllBase, - (ULONG_PTR)ZwCurrentProcess()); + (ULONG_PTR)PsGetCurrentProcessId()); LdrEntry->Flags |= LDRP_DEBUG_SYMBOLS_LOADED; } From c52bfa77a861f57c558d296076222089e77f05a6 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Thu, 22 May 2014 11:42:45 +0000 Subject: [PATCH 021/232] [MSVCRT] * Don't export wcstombs_s(). CORE-8174 svn path=/trunk/; revision=63407 --- reactos/dll/win32/msvcrt/msvcrt.spec | 1 - 1 file changed, 1 deletion(-) diff --git a/reactos/dll/win32/msvcrt/msvcrt.spec b/reactos/dll/win32/msvcrt/msvcrt.spec index 2008a214d26..4212aac86e7 100644 --- a/reactos/dll/win32/msvcrt/msvcrt.spec +++ b/reactos/dll/win32/msvcrt/msvcrt.spec @@ -1439,7 +1439,6 @@ @ cdecl wcstok_s(ptr wstr ptr) @ cdecl wcstol(wstr ptr long) @ cdecl wcstombs(ptr ptr long) -@ cdecl wcstombs_s(ptr ptr long wstr long) @ cdecl wcstoul(wstr ptr long) @ cdecl wcsxfrm(ptr wstr long) # stub wctob From 02851fb0e2f73daa2952fc6e51af5fc3d7f8ea99 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Thu, 22 May 2014 11:45:53 +0000 Subject: [PATCH 022/232] [WIN32K] Make all GDI object cleanup functions return VOID instead of BOOL. CORE-6870 #resolve svn path=/trunk/; revision=63408 --- reactos/win32ss/gdi/eng/driverobj.c | 9 +-- reactos/win32ss/gdi/eng/driverobj.h | 2 +- reactos/win32ss/gdi/eng/surface.c | 6 +- reactos/win32ss/gdi/eng/surface.h | 4 +- reactos/win32ss/gdi/ntgdi/brush.c | 6 +- reactos/win32ss/gdi/ntgdi/brush.h | 2 +- reactos/win32ss/gdi/ntgdi/dc.h | 2 +- reactos/win32ss/gdi/ntgdi/dclife.c | 6 +- reactos/win32ss/gdi/ntgdi/gdiobj.c | 73 ++++++++++--------- reactos/win32ss/gdi/ntgdi/gdiobj.h | 2 +- reactos/win32ss/gdi/ntgdi/palette.c | 20 +++-- reactos/win32ss/gdi/ntgdi/palette.h | 4 +- reactos/win32ss/gdi/ntgdi/region.c | 5 +- reactos/win32ss/gdi/ntgdi/region.h | 2 +- reactos/win32ss/user/user32/windows/mdi.c | 24 +++--- reactos/win32ss/user/user32/windows/message.c | 28 +++---- 16 files changed, 93 insertions(+), 102 deletions(-) diff --git a/reactos/win32ss/gdi/eng/driverobj.c b/reactos/win32ss/gdi/eng/driverobj.c index db2e8e3e39a..fff1ddad1b9 100644 --- a/reactos/win32ss/gdi/eng/driverobj.c +++ b/reactos/win32ss/gdi/eng/driverobj.c @@ -19,8 +19,9 @@ /*! * \brief DRIVEROBJ cleanup function */ -BOOL NTAPI -DRIVEROBJ_Cleanup(PVOID pObject) +VOID +NTAPI +DRIVEROBJ_vCleanup(PVOID pObject) { PEDRIVEROBJ pedo = pObject; FREEOBJPROC pFreeProc; @@ -28,10 +29,8 @@ DRIVEROBJ_Cleanup(PVOID pObject) pFreeProc = pedo->drvobj.pFreeProc; if (pFreeProc) { - return pFreeProc(pedo->drvobj.pvObj); + NT_VERIFY(pFreeProc(pedo->drvobj.pvObj)); } - - return TRUE; } /** Public interface **********************************************************/ diff --git a/reactos/win32ss/gdi/eng/driverobj.h b/reactos/win32ss/gdi/eng/driverobj.h index 25961e461ad..254a0cfec30 100644 --- a/reactos/win32ss/gdi/eng/driverobj.h +++ b/reactos/win32ss/gdi/eng/driverobj.h @@ -11,7 +11,7 @@ typedef struct _EDRIVEROBJ typedef DRIVEROBJ *PDRIVEROBJ; /* Cleanup function */ -BOOL NTAPI DRIVEROBJ_Cleanup(PVOID pObject); +VOID NTAPI DRIVEROBJ_vCleanup(PVOID pObject); #define DRIVEROBJ_AllocObjectWithHandle() ((PEDRIVEROBJ)GDIOBJ_AllocObjWithHandle(GDI_OBJECT_TYPE_DRIVEROBJ, sizeof(EDRIVEROBJ))) diff --git a/reactos/win32ss/gdi/eng/surface.c b/reactos/win32ss/gdi/eng/surface.c index 364fa226e9c..4f34a616898 100644 --- a/reactos/win32ss/gdi/eng/surface.c +++ b/reactos/win32ss/gdi/eng/surface.c @@ -62,9 +62,9 @@ BitmapFormat(ULONG cBits, ULONG iCompression) } } -BOOL +VOID NTAPI -SURFACE_Cleanup(PVOID ObjectBody) +SURFACE_vCleanup(PVOID ObjectBody) { PSURFACE psurf = (PSURFACE)ObjectBody; PVOID pvBits = psurf->SurfObj.pvBits; @@ -108,8 +108,6 @@ SURFACE_Cleanup(PVOID ObjectBody) { PALETTE_ShareUnlockPalette(psurf->ppal); } - - return TRUE; } diff --git a/reactos/win32ss/gdi/eng/surface.h b/reactos/win32ss/gdi/eng/surface.h index 2ab6037f947..99c70e723c8 100644 --- a/reactos/win32ss/gdi/eng/surface.h +++ b/reactos/win32ss/gdi/eng/surface.h @@ -111,9 +111,9 @@ ULONG FASTCALL BitmapFormat(ULONG cBits, ULONG iCompression); -BOOL +VOID NTAPI -SURFACE_Cleanup(PVOID ObjectBody); +SURFACE_vCleanup(PVOID ObjectBody); PSURFACE NTAPI diff --git a/reactos/win32ss/gdi/ntgdi/brush.c b/reactos/win32ss/gdi/ntgdi/brush.c index ec40791e08e..b079a288046 100644 --- a/reactos/win32ss/gdi/ntgdi/brush.c +++ b/reactos/win32ss/gdi/ntgdi/brush.c @@ -114,9 +114,9 @@ BRUSH_vFreeBrushAttr(PBRUSH pbr) pbr->pBrushAttr = &pbr->BrushAttr; } -BOOL +VOID NTAPI -BRUSH_Cleanup(PVOID ObjectBody) +BRUSH_vCleanup(PVOID ObjectBody) { PBRUSH pbrush = (PBRUSH)ObjectBody; if (pbrush->hbmPattern) @@ -136,8 +136,6 @@ BRUSH_Cleanup(PVOID ObjectBody) { ExFreePool(pbrush->pStyle); } - - return TRUE; } INT diff --git a/reactos/win32ss/gdi/ntgdi/brush.h b/reactos/win32ss/gdi/ntgdi/brush.h index 79a2e0edf83..fe6cf34082c 100644 --- a/reactos/win32ss/gdi/ntgdi/brush.h +++ b/reactos/win32ss/gdi/ntgdi/brush.h @@ -94,7 +94,7 @@ typedef struct _EBRUSHOBJ #define BRUSH_ShareUnlockBrush(pBrush) GDIOBJ_vDereferenceObject((POBJ)pBrush) INT FASTCALL BRUSH_GetObject (PBRUSH GdiObject, INT Count, LPLOGBRUSH Buffer); -BOOL NTAPI BRUSH_Cleanup(PVOID ObjectBody); +VOID NTAPI BRUSH_vCleanup(PVOID ObjectBody); extern HSURF gahsurfHatch[HS_DDI_MAX]; diff --git a/reactos/win32ss/gdi/ntgdi/dc.h b/reactos/win32ss/gdi/ntgdi/dc.h index a1a11701cf9..a65e7a3d64c 100644 --- a/reactos/win32ss/gdi/ntgdi/dc.h +++ b/reactos/win32ss/gdi/ntgdi/dc.h @@ -194,7 +194,7 @@ INIT_FUNCTION NTSTATUS NTAPI InitDcImpl(VOID); PPDEVOBJ FASTCALL IntEnumHDev(VOID); PDC NTAPI DC_AllocDcWithHandle(VOID); BOOL NTAPI DC_bAllocDcAttr(PDC pdc); -BOOL NTAPI DC_Cleanup(PVOID ObjectBody); +VOID NTAPI DC_vCleanup(PVOID ObjectBody); BOOL FASTCALL IntGdiDeleteDC(HDC, BOOL); BOOL FASTCALL DC_InvertXform(const XFORM *xformSrc, XFORM *xformDest); diff --git a/reactos/win32ss/gdi/ntgdi/dclife.c b/reactos/win32ss/gdi/ntgdi/dclife.c index 16a628a4998..3a8a35954db 100644 --- a/reactos/win32ss/gdi/ntgdi/dclife.c +++ b/reactos/win32ss/gdi/ntgdi/dclife.c @@ -344,9 +344,9 @@ DC_vInitDc( } } -BOOL +VOID NTAPI -DC_Cleanup(PVOID ObjectBody) +DC_vCleanup(PVOID ObjectBody) { PDC pdc = (PDC)ObjectBody; @@ -391,8 +391,6 @@ DC_Cleanup(PVOID ObjectBody) SURFACE_ShareUnlockSurface(pdc->dclevel.pSurface); PDEVOBJ_vRelease(pdc->ppdev) ; - - return TRUE; } VOID diff --git a/reactos/win32ss/gdi/ntgdi/gdiobj.c b/reactos/win32ss/gdi/ntgdi/gdiobj.c index 2958a186dd5..2273dfda8f8 100644 --- a/reactos/win32ss/gdi/ntgdi/gdiobj.c +++ b/reactos/win32ss/gdi/ntgdi/gdiobj.c @@ -87,53 +87,54 @@ ULONG gulFirstFree; ULONG gulFirstUnused; static PPAGED_LOOKASIDE_LIST gpaLookasideList; -static BOOL NTAPI GDIOBJ_Cleanup(PVOID ObjectBody); +static VOID NTAPI GDIOBJ_vCleanup(PVOID ObjectBody); static const GDICLEANUPPROC apfnCleanup[] = { - NULL, /* 00 GDIObjType_DEF_TYPE */ - DC_Cleanup, /* 01 GDIObjType_DC_TYPE */ - NULL, /* 02 GDIObjType_UNUSED1_TYPE */ - NULL, /* 03 GDIObjType_UNUSED2_TYPE */ - REGION_Cleanup, /* 04 GDIObjType_RGN_TYPE */ - SURFACE_Cleanup, /* 05 GDIObjType_SURF_TYPE */ - GDIOBJ_Cleanup, /* 06 GDIObjType_CLIENTOBJ_TYPE */ - GDIOBJ_Cleanup, /* 07 GDIObjType_PATH_TYPE */ - PALETTE_Cleanup, /* 08 GDIObjType_PAL_TYPE */ - GDIOBJ_Cleanup, /* 09 GDIObjType_ICMLCS_TYPE */ - GDIOBJ_Cleanup, /* 0a GDIObjType_LFONT_TYPE */ - NULL, /* 0b GDIObjType_RFONT_TYPE, unused */ - NULL, /* 0c GDIObjType_PFE_TYPE, unused */ - NULL, /* 0d GDIObjType_PFT_TYPE, unused */ - GDIOBJ_Cleanup, /* 0e GDIObjType_ICMCXF_TYPE */ - NULL, /* 0f GDIObjType_SPRITE_TYPE, unused */ - BRUSH_Cleanup, /* 10 GDIObjType_BRUSH_TYPE, BRUSH, PEN, EXTPEN */ - NULL, /* 11 GDIObjType_UMPD_TYPE, unused */ - NULL, /* 12 GDIObjType_UNUSED4_TYPE */ - NULL, /* 13 GDIObjType_SPACE_TYPE, unused */ - NULL, /* 14 GDIObjType_UNUSED5_TYPE */ - NULL, /* 15 GDIObjType_META_TYPE, unused */ - NULL, /* 16 GDIObjType_EFSTATE_TYPE, unused */ - NULL, /* 17 GDIObjType_BMFD_TYPE, unused */ - NULL, /* 18 GDIObjType_VTFD_TYPE, unused */ - NULL, /* 19 GDIObjType_TTFD_TYPE, unused */ - NULL, /* 1a GDIObjType_RC_TYPE, unused */ - NULL, /* 1b GDIObjType_TEMP_TYPE, unused */ - DRIVEROBJ_Cleanup,/* 1c GDIObjType_DRVOBJ_TYPE */ - NULL, /* 1d GDIObjType_DCIOBJ_TYPE, unused */ - NULL, /* 1e GDIObjType_SPOOL_TYPE, unused */ - NULL, /* 1f reserved entry */ + NULL, /* 00 GDIObjType_DEF_TYPE */ + DC_vCleanup, /* 01 GDIObjType_DC_TYPE */ + NULL, /* 02 GDIObjType_UNUSED1_TYPE */ + NULL, /* 03 GDIObjType_UNUSED2_TYPE */ + REGION_vCleanup, /* 04 GDIObjType_RGN_TYPE */ + SURFACE_vCleanup, /* 05 GDIObjType_SURF_TYPE */ + GDIOBJ_vCleanup, /* 06 GDIObjType_CLIENTOBJ_TYPE */ + GDIOBJ_vCleanup, /* 07 GDIObjType_PATH_TYPE */ + PALETTE_vCleanup, /* 08 GDIObjType_PAL_TYPE */ + GDIOBJ_vCleanup, /* 09 GDIObjType_ICMLCS_TYPE */ + GDIOBJ_vCleanup, /* 0a GDIObjType_LFONT_TYPE */ + NULL, /* 0b GDIObjType_RFONT_TYPE, unused */ + NULL, /* 0c GDIObjType_PFE_TYPE, unused */ + NULL, /* 0d GDIObjType_PFT_TYPE, unused */ + GDIOBJ_vCleanup, /* 0e GDIObjType_ICMCXF_TYPE */ + NULL, /* 0f GDIObjType_SPRITE_TYPE, unused */ + BRUSH_vCleanup, /* 10 GDIObjType_BRUSH_TYPE, BRUSH, PEN, EXTPEN */ + NULL, /* 11 GDIObjType_UMPD_TYPE, unused */ + NULL, /* 12 GDIObjType_UNUSED4_TYPE */ + NULL, /* 13 GDIObjType_SPACE_TYPE, unused */ + NULL, /* 14 GDIObjType_UNUSED5_TYPE */ + NULL, /* 15 GDIObjType_META_TYPE, unused */ + NULL, /* 16 GDIObjType_EFSTATE_TYPE, unused */ + NULL, /* 17 GDIObjType_BMFD_TYPE, unused */ + NULL, /* 18 GDIObjType_VTFD_TYPE, unused */ + NULL, /* 19 GDIObjType_TTFD_TYPE, unused */ + NULL, /* 1a GDIObjType_RC_TYPE, unused */ + NULL, /* 1b GDIObjType_TEMP_TYPE, unused */ + DRIVEROBJ_vCleanup,/* 1c GDIObjType_DRVOBJ_TYPE */ + NULL, /* 1d GDIObjType_DCIOBJ_TYPE, unused */ + NULL, /* 1e GDIObjType_SPOOL_TYPE, unused */ + NULL, /* 1f reserved entry */ }; /* INTERNAL FUNCTIONS ********************************************************/ static -BOOL NTAPI -GDIOBJ_Cleanup(PVOID ObjectBody) +VOID +NTAPI +GDIOBJ_vCleanup(PVOID ObjectBody) { - return TRUE; + /* Nothing to do */ } static diff --git a/reactos/win32ss/gdi/ntgdi/gdiobj.h b/reactos/win32ss/gdi/ntgdi/gdiobj.h index b049ff5d801..d2f13ad8c52 100644 --- a/reactos/win32ss/gdi/ntgdi/gdiobj.h +++ b/reactos/win32ss/gdi/ntgdi/gdiobj.h @@ -28,7 +28,7 @@ extern PGDI_HANDLE_TABLE GdiHandleTable; typedef PVOID PGDIOBJ; -typedef BOOL (NTAPI *GDICLEANUPPROC)(PVOID ObjectBody); +typedef VOID (NTAPI *GDICLEANUPPROC)(PVOID ObjectBody); /* Every GDI Object must have this standard type of header. * It's for thread locking. */ diff --git a/reactos/win32ss/gdi/ntgdi/palette.c b/reactos/win32ss/gdi/ntgdi/palette.c index 73b4832ac2c..7fef04ea4f2 100644 --- a/reactos/win32ss/gdi/ntgdi/palette.c +++ b/reactos/win32ss/gdi/ntgdi/palette.c @@ -230,17 +230,15 @@ PALETTE_AllocPalWithHandle( return ppal; } -BOOL +VOID NTAPI -PALETTE_Cleanup(PVOID ObjectBody) +PALETTE_vCleanup(PVOID ObjectBody) { PPALETTE pPal = (PPALETTE)ObjectBody; if (pPal->IndexedColors && pPal->IndexedColors != pPal->apalColors) { ExFreePoolWithTag(pPal->IndexedColors, TAG_PALETTE); } - - return TRUE; } INT @@ -702,15 +700,15 @@ NtGdiGetNearestColor( EngSetLastError(ERROR_INVALID_HANDLE); return CLR_INVALID; } - + if(dc->dclevel.pSurface == NULL) ppal = gppalMono; else ppal = dc->dclevel.pSurface->ppal; - + /* Translate the color to the DC format */ Color = TranslateCOLORREF(dc, Color); - + /* XLATE it back to RGB color space */ EXLATEOBJ_vInitialize(&exlo, ppal, @@ -718,11 +716,11 @@ NtGdiGetNearestColor( 0, RGB(0xff, 0xff, 0xff), RGB(0, 0, 0)); - + nearest = XLATEOBJ_iXlate(&exlo.xlo, Color); - + EXLATEOBJ_vCleanup(&exlo); - + /* We're done */ DC_UnlockDc(dc); @@ -771,7 +769,7 @@ IntGdiRealizePalette(HDC hDC) { goto cleanup; } - + if(pdc->dctype == DCTYPE_DIRECT) { UNIMPLEMENTED; diff --git a/reactos/win32ss/gdi/ntgdi/palette.h b/reactos/win32ss/gdi/ntgdi/palette.h index 3dd16dbb271..4dd591d80db 100644 --- a/reactos/win32ss/gdi/ntgdi/palette.h +++ b/reactos/win32ss/gdi/ntgdi/palette.h @@ -117,9 +117,9 @@ PALETTE_vGetBitMasks( PPALETTE ppal, PULONG pulColors); -BOOL +VOID NTAPI -PALETTE_Cleanup(PVOID ObjectBody); +PALETTE_vCleanup(PVOID ObjectBody); FORCEINLINE ULONG diff --git a/reactos/win32ss/gdi/ntgdi/region.c b/reactos/win32ss/gdi/ntgdi/region.c index d1cf0671f13..ce79722837c 100644 --- a/reactos/win32ss/gdi/ntgdi/region.c +++ b/reactos/win32ss/gdi/ntgdi/region.c @@ -2275,8 +2275,8 @@ IntSysCreateRectRgn(INT LeftRect, INT TopRect, INT RightRect, INT BottomRect) return hrgn; } -BOOL NTAPI -REGION_Cleanup(PVOID ObjectBody) +VOID NTAPI +REGION_vCleanup(PVOID ObjectBody) { PROSRGNDATA pRgn = (PROSRGNDATA)ObjectBody; PPROCESSINFO ppi = PsGetCurrentProcessWin32Process(); @@ -2288,7 +2288,6 @@ REGION_Cleanup(PVOID ObjectBody) if (pRgn->Buffer && pRgn->Buffer != &pRgn->rdh.rcBound) ExFreePoolWithTag(pRgn->Buffer, TAG_REGION); - return TRUE; } VOID FASTCALL diff --git a/reactos/win32ss/gdi/ntgdi/region.h b/reactos/win32ss/gdi/ntgdi/region.h index 778dd294d91..b11f31da8ee 100644 --- a/reactos/win32ss/gdi/ntgdi/region.h +++ b/reactos/win32ss/gdi/ntgdi/region.h @@ -29,7 +29,7 @@ INT FASTCALL REGION_GetRgnBox(PROSRGNDATA Rgn, RECTL *pRect); BOOL FASTCALL REGION_RectInRegion(PROSRGNDATA Rgn, const RECTL *rc); BOOL FASTCALL REGION_CropAndOffsetRegion(PROSRGNDATA rgnDst, PROSRGNDATA rgnSrc, const RECTL *rect, const POINT *off); VOID FASTCALL REGION_SetRectRgn(PROSRGNDATA pRgn, INT LeftRect, INT TopRect, INT RightRect, INT BottomRect); -BOOL NTAPI REGION_Cleanup(PVOID ObjectBody); +VOID NTAPI REGION_vCleanup(PVOID ObjectBody); extern PROSRGNDATA prgnDefault; extern HRGN hrgnDefault; diff --git a/reactos/win32ss/user/user32/windows/mdi.c b/reactos/win32ss/user/user32/windows/mdi.c index ae867416199..7fdfee0c734 100644 --- a/reactos/win32ss/user/user32/windows/mdi.c +++ b/reactos/win32ss/user/user32/windows/mdi.c @@ -860,8 +860,8 @@ static void MDITile( HWND client, MDICLIENTINFO *ci, WPARAM wParam ) for (r = 1; r <= rows && *pWnd; r++, i++) { LONG posOptions = SWP_DRAWFRAME | SWP_NOACTIVATE | SWP_NOZORDER; - LONG style = GetWindowLongW(win_array[i], GWL_STYLE); - if (!(style & WS_SIZEBOX)) posOptions |= SWP_NOSIZE; + LONG style = GetWindowLongW(win_array[i], GWL_STYLE); + if (!(style & WS_SIZEBOX)) posOptions |= SWP_NOSIZE; SetWindowPos(*pWnd, 0, x, y, xsize, ysize, posOptions); y += ysize; @@ -1091,9 +1091,9 @@ static void MDI_UpdateFrameText( HWND frame, HWND hClient, BOOL repaint, LPCWSTR DefWindowProcW( frame, WM_SETTEXT, 0, (LPARAM)lpBuffer ); - if (repaint) - SetWindowPos( frame, 0,0,0,0,0, SWP_FRAMECHANGED | - SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE | SWP_NOZORDER ); + if (repaint) + SetWindowPos( frame, 0,0,0,0,0, SWP_FRAMECHANGED | + SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE | SWP_NOZORDER ); } @@ -1830,7 +1830,7 @@ void WINAPI CalcChildScroll( HWND hwnd, INT scroll ) return; } - ERR("CalcChildScroll 1\n"); + TRACE("CalcChildScroll 1\n"); if ((list = WIN_ListChildren( hwnd ))) { int i; @@ -1851,14 +1851,14 @@ void WINAPI CalcChildScroll( HWND hwnd, INT scroll ) OffsetRect(&rect, -WindowInfo.rcClient.left, -WindowInfo.rcClient.top); //WIN_GetRectangles( list[i], COORDS_PARENT, &rect, NULL ); - ERR("CalcChildScroll L\n"); + TRACE("CalcChildScroll L\n"); UnionRect( &childRect, &rect, &childRect ); } } HeapFree( GetProcessHeap(), 0, list ); } UnionRect( &childRect, &clientRect, &childRect ); - ERR("CalcChildScroll 3\n"); + TRACE("CalcChildScroll 3\n"); /* set common info values */ info.cbSize = sizeof(info); info.fMask = SIF_POS | SIF_RANGE | SIF_PAGE; @@ -1883,12 +1883,12 @@ void WINAPI CalcChildScroll( HWND hwnd, INT scroll ) SetScrollInfo(hwnd, SB_HORZ, &info, TRUE); if (scroll == SB_HORZ) { - ERR("CalcChildScroll H\n"); + TRACE("CalcChildScroll H\n"); break; } else { - ERR("CalcChildScroll B\n"); + TRACE("CalcChildScroll B\n"); } /* fall through */ case SB_VERT: @@ -1898,7 +1898,7 @@ void WINAPI CalcChildScroll( HWND hwnd, INT scroll ) info.nPage = 1 + clientRect.bottom - clientRect.top; //info.nMax = childRect.bottom - clientRect.bottom; //info.nPos = clientRect.top - childRect.top; - ERR("CalcChildScroll V\n"); + TRACE("CalcChildScroll V\n"); if (ci->initialStyle & WS_VSCROLL) SetScrollInfo(hwnd, SB_VERT, &info, TRUE); break; @@ -2029,7 +2029,7 @@ TileWindows (HWND hwndParent, UINT wFlags, LPCRECT lpRect, * TileChildWindows (USER32.@) */ WORD WINAPI TileChildWindows( HWND parent, UINT flags ) -{ +{ return TileWindows( parent, flags, NULL, 0, NULL ); } diff --git a/reactos/win32ss/user/user32/windows/message.c b/reactos/win32ss/user/user32/windows/message.c index f3a729155cb..2e7a737c72d 100644 --- a/reactos/win32ss/user/user32/windows/message.c +++ b/reactos/win32ss/user/user32/windows/message.c @@ -245,7 +245,7 @@ DWORD FASTCALL get_input_codepage( void ) if (!ret) cp = CP_ACP; return cp; } - + static WPARAM FASTCALL map_wparam_char_WtoA( WPARAM wParam, DWORD len ) { WCHAR wch = wParam; @@ -253,7 +253,7 @@ static WPARAM FASTCALL map_wparam_char_WtoA( WPARAM wParam, DWORD len ) DWORD cp = get_input_codepage(); len = WideCharToMultiByte( cp, 0, &wch, 1, (LPSTR)ch, len, NULL, NULL ); - if (len == 2) + if (len == 2) return MAKEWPARAM( (ch[0] << 8) | ch[1], HIWORD(wParam) ); else return MAKEWPARAM( ch[0], HIWORD(wParam) ); @@ -743,9 +743,9 @@ MsgiAnsiToUnicodeMessage(HWND hwnd, LPMSG UnicodeMsg, LPMSG AnsiMsg) case WM_CHARTOITEM: case WM_MENUCHAR: - case WM_CHAR: + case WM_CHAR: case WM_DEADCHAR: - case WM_SYSCHAR: + case WM_SYSCHAR: case WM_SYSDEADCHAR: case EM_SETPASSWORDCHAR: case WM_IME_CHAR: @@ -1139,14 +1139,14 @@ MsgiUnicodeToAnsiMessage(HWND hwnd, LPMSG AnsiMsg, LPMSG UnicodeMsg) } case WM_GETDLGCODE: - if (UnicodeMsg->lParam) + if (UnicodeMsg->lParam) { MSG newmsg = *(MSG *)UnicodeMsg->lParam; switch(newmsg.message) { case WM_CHAR: case WM_DEADCHAR: - case WM_SYSCHAR: + case WM_SYSCHAR: case WM_SYSDEADCHAR: newmsg.wParam = map_wparam_char_WtoA( newmsg.wParam, 1 ); break; @@ -1169,9 +1169,9 @@ MsgiUnicodeToAnsiMessage(HWND hwnd, LPMSG AnsiMsg, LPMSG UnicodeMsg) break; case WM_CHARTOITEM: - case WM_MENUCHAR: - case WM_DEADCHAR: - case WM_SYSCHAR: + case WM_MENUCHAR: + case WM_DEADCHAR: + case WM_SYSCHAR: case WM_SYSDEADCHAR: case EM_SETPASSWORDCHAR: AnsiMsg->wParam = map_wparam_char_WtoA(UnicodeMsg->wParam,1); @@ -1303,7 +1303,7 @@ MsgiUnicodeToAnsiReply(LPMSG AnsiMsg, LPMSG UnicodeMsg, LRESULT *Result) { DWORD len = AnsiMsg->wParam;// * 2; if (len) - { + { if (*Result) { RtlMultiByteToUnicodeN( UBuffer, AnsiMsg->wParam*sizeof(WCHAR), &len, Buffer, strlen(Buffer)+1 ); @@ -2404,7 +2404,7 @@ SendMessageW(HWND Wnd, if ( Window != NULL && Window->head.pti == ti && - !ISITHOOKED(WH_CALLWNDPROC) && + !ISITHOOKED(WH_CALLWNDPROC) && !ISITHOOKED(WH_CALLWNDPROCRET) && !(Window->state & WNDS_SERVERSIDEWINDOWPROC) ) { @@ -2468,7 +2468,7 @@ SendMessageA(HWND Wnd, UINT Msg, WPARAM wParam, LPARAM lParam) if ( Window != NULL && Window->head.pti == ti && - !ISITHOOKED(WH_CALLWNDPROC) && + !ISITHOOKED(WH_CALLWNDPROC) && !ISITHOOKED(WH_CALLWNDPROCRET) && !(Window->state & WNDS_SERVERSIDEWINDOWPROC) ) { @@ -2935,7 +2935,7 @@ User32CallWindowProcFromKernel(PVOID Arguments, ULONG ArgumentLength) case WM_SIZING: { PRECT prect = (PRECT) KMMsg.lParam; - ERR("WM_SIZING 1 t %d l %d r %d b %d\n",prect->top,prect->left,prect->right,prect->bottom); + TRACE("WM_SIZING 1 t %d l %d r %d b %d\n",prect->top,prect->left,prect->right,prect->bottom); break; } default: @@ -2983,7 +2983,7 @@ User32CallWindowProcFromKernel(PVOID Arguments, ULONG ArgumentLength) case WM_SIZING: { PRECT prect = (PRECT) KMMsg.lParam; - ERR("WM_SIZING 2 t %d l %d r %d b %d\n",prect->top,prect->left,prect->right,prect->bottom); + TRACE("WM_SIZING 2 t %d l %d r %d b %d\n",prect->top,prect->left,prect->right,prect->bottom); break; } default: From 17be1062a29492ed641c68c0b33de999f8501bac Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Thu, 22 May 2014 13:40:23 +0000 Subject: [PATCH 023/232] [WIN32K] Don't access the object header of a kernel object from win32k. Instead get the desktop name from the desktop info structure. CORE-6818 #resolve svn path=/trunk/; revision=63409 --- reactos/win32ss/user/ntuser/desktop.c | 59 +++++++++++++-------------- 1 file changed, 28 insertions(+), 31 deletions(-) diff --git a/reactos/win32ss/user/ntuser/desktop.c b/reactos/win32ss/user/ntuser/desktop.c index 384b47780fb..ff2e1de5837 100644 --- a/reactos/win32ss/user/ntuser/desktop.c +++ b/reactos/win32ss/user/ntuser/desktop.c @@ -51,7 +51,7 @@ IntDesktopObjectParse(IN PVOID ParseObject, OBJECT_ATTRIBUTES ObjectAttributes; PLIST_ENTRY NextEntry, ListHead; PWINSTATION_OBJECT WinStaObject = (PWINSTATION_OBJECT)ParseObject; - PUNICODE_STRING DesktopName; + UNICODE_STRING DesktopName; PBOOLEAN pContext = (PBOOLEAN) Context; if(pContext) @@ -65,43 +65,40 @@ IntDesktopObjectParse(IN PVOID ParseObject, /* Get the current desktop */ Desktop = CONTAINING_RECORD(NextEntry, DESKTOP, ListEntry); - /// @todo Don't mess around with the object headers! - /* Get its name */ - _PRAGMA_WARNING_SUPPRESS(__WARNING_DEREF_NULL_PTR) - DesktopName = GET_DESKTOP_NAME(Desktop); - if (DesktopName) + /* Get the desktop name */ + ASSERT(Desktop->pDeskInfo != NULL); + RtlInitUnicodeString(&DesktopName, Desktop->pDeskInfo->szDesktopName); + + /* Compare the name */ + if (RtlEqualUnicodeString(RemainingName, + &DesktopName, + (Attributes & OBJ_CASE_INSENSITIVE))) { - /* Compare the name */ - if (RtlEqualUnicodeString(RemainingName, - DesktopName, - (Attributes & OBJ_CASE_INSENSITIVE))) + /* We found a match. Did this come from a create? */ + if (Context) { - /* We found a match. Did this come from a create? */ - if (Context) + /* Unless OPEN_IF was given, fail with an error */ + if (!(Attributes & OBJ_OPENIF)) { - /* Unless OPEN_IF was given, fail with an error */ - if (!(Attributes & OBJ_OPENIF)) - { - /* Name collision */ - return STATUS_OBJECT_NAME_COLLISION; - } - else - { - /* Otherwise, return with a warning only */ - Status = STATUS_OBJECT_NAME_EXISTS; - } + /* Name collision */ + return STATUS_OBJECT_NAME_COLLISION; } else { - /* This was a real open, so this is OK */ - Status = STATUS_SUCCESS; + /* Otherwise, return with a warning only */ + Status = STATUS_OBJECT_NAME_EXISTS; } - - /* Reference the desktop and return it */ - ObReferenceObject(Desktop); - *Object = Desktop; - return Status; } + else + { + /* This was a real open, so this is OK */ + Status = STATUS_SUCCESS; + } + + /* Reference the desktop and return it */ + ObReferenceObject(Desktop); + *Object = Desktop; + return Status; } /* Go to the next desktop */ @@ -522,7 +519,7 @@ IntSetFocusMessageQueue(PUSER_MESSAGE_QUEUE NewQueue) { gpqForeground = pdo->ActiveMessageQueue; } - else + else { gpqForeground = NULL; ERR("ptiLastInput is CLEARED!!\n"); From e849ca97bc8c62b5af993a9055657020042fdf83 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Thu, 22 May 2014 14:10:49 +0000 Subject: [PATCH 024/232] [CRT] * Update fgetpos(). CORE-8080 svn path=/trunk/; revision=63410 --- reactos/lib/sdk/crt/stdio/file.c | 29 ++--------------------------- 1 file changed, 2 insertions(+), 27 deletions(-) diff --git a/reactos/lib/sdk/crt/stdio/file.c b/reactos/lib/sdk/crt/stdio/file.c index 299e2ddf7ab..150d61b9006 100644 --- a/reactos/lib/sdk/crt/stdio/file.c +++ b/reactos/lib/sdk/crt/stdio/file.c @@ -3416,34 +3416,9 @@ LONG CDECL ftell(FILE* file) */ int CDECL fgetpos(FILE* file, fpos_t *pos) { - int off=0; - - _lock_file(file); - *pos = _lseeki64(file->_file,0,SEEK_CUR); - if(*pos == -1) { - _unlock_file(file); + *pos = _ftelli64(file); + if(*pos == -1) return -1; - } - if(file->_bufsiz) { - if( file->_flag & _IOWRT ) { - off = file->_ptr - file->_base; - } else { - off = -file->_cnt; - if (get_ioinfo(file->_file)->wxflag & WX_TEXT) { - /* Black magic correction for CR removal */ - int i; - for (i=0; i_cnt; i++) { - if (file->_ptr[i] == '\n') - off--; - } - /* Black magic when reading CR at buffer boundary*/ - if(get_ioinfo(file->_file)->wxflag & WX_READCR) - off--; - } - } - } - *pos += off; - _unlock_file(file); return 0; } From f537d6e8e4ac18f739a76d69e26cf626abb588a1 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Thu, 22 May 2014 14:55:04 +0000 Subject: [PATCH 025/232] [USETUP] - Fix a failed partition type assignment, when unpartitioned disk space is converted to an extended partition. - Rename the extended partition list to logical partition list. - Add a pointer to an extended partition to the disk entries. And keep it up-to-date when the primary partition list is built or modified. - Add the 'Unpartitioned space' partiton entry to the logical partition list when an extended partition has been created. - Remove all logical partition entries when the coresponding extended partition will be deleted. svn path=/trunk/; revision=63411 --- reactos/base/setup/usetup/partlist.c | 178 +++++++++++++++++---------- reactos/base/setup/usetup/partlist.h | 6 +- 2 files changed, 114 insertions(+), 70 deletions(-) diff --git a/reactos/base/setup/usetup/partlist.c b/reactos/base/setup/usetup/partlist.c index eef02c1f367..051d02c5b7f 100644 --- a/reactos/base/setup/usetup/partlist.c +++ b/reactos/base/setup/usetup/partlist.c @@ -524,7 +524,7 @@ AddPartitionToDisk( ULONG DiskNumber, PDISKENTRY DiskEntry, ULONG PartitionIndex, - BOOLEAN ExtendedPartition) + BOOLEAN LogicalPartition) { PPARTITION_INFORMATION PartitionInfo; PPARTENTRY PartEntry; @@ -548,7 +548,7 @@ AddPartitionToDisk( PartEntry->PartitionType = PartitionInfo->PartitionType; PartEntry->HiddenSectors = PartitionInfo->HiddenSectors; - PartEntry->ExtendedPartition = ExtendedPartition; + PartEntry->LogicalPartition = LogicalPartition; PartEntry->IsPartitioned = TRUE; PartEntry->PartitionNumber = PartitionInfo->PartitionNumber; PartEntry->PartitionIndex = PartitionIndex; @@ -556,6 +556,9 @@ AddPartitionToDisk( if (IsContainerPartition(PartEntry->PartitionType)) { PartEntry->FormatState = Unformatted; + + if (LogicalPartition == FALSE && DiskEntry->ExtendedPartition == NULL) + DiskEntry->ExtendedPartition = PartEntry; } else if ((PartEntry->PartitionType == PARTITION_FAT_12) || (PartEntry->PartitionType == PARTITION_FAT_16) || @@ -613,8 +616,8 @@ AddPartitionToDisk( PartEntry->FormatState = UnknownFormat; } - if (ExtendedPartition) - InsertTailList(&DiskEntry->ExtendedPartListHead, + if (LogicalPartition) + InsertTailList(&DiskEntry->LogicalPartListHead, &PartEntry->ListEntry); else InsertTailList(&DiskEntry->PrimaryPartListHead, @@ -991,7 +994,7 @@ AddDiskToList( } InitializeListHead(&DiskEntry->PrimaryPartListHead); - InitializeListHead(&DiskEntry->ExtendedPartListHead); + InitializeListHead(&DiskEntry->LogicalPartListHead); DiskEntry->Cylinders = DiskGeometry.Cylinders.QuadPart; DiskEntry->TracksPerCylinder = DiskGeometry.TracksPerCylinder; @@ -1009,8 +1012,8 @@ AddDiskToList( DiskEntry->SectorAlignment = DiskGeometry.SectorsPerTrack; - DPRINT("SectorCount %I64u\n", DiskEntry->SectorCount); - DPRINT("SectorAlignment %lu\n", DiskEntry->SectorAlignment); + DPRINT1("SectorCount %I64u\n", DiskEntry->SectorCount); + DPRINT1("SectorAlignment %lu\n", DiskEntry->SectorAlignment); DiskEntry->DiskNumber = DiskNumber; DiskEntry->Port = ScsiAddress.PortNumber; @@ -1228,10 +1231,10 @@ DestroyPartitionList( RtlFreeHeap(ProcessHeap, 0, PartEntry); } - /* Release extended partition list */ - while (!IsListEmpty(&DiskEntry->ExtendedPartListHead)) + /* Release logical partition list */ + while (!IsListEmpty(&DiskEntry->LogicalPartListHead)) { - Entry = RemoveHeadList(&DiskEntry->ExtendedPartListHead); + Entry = RemoveHeadList(&DiskEntry->LogicalPartListHead); PartEntry = CONTAINING_RECORD(Entry, PARTENTRY, ListEntry); RtlFreeHeap(ProcessHeap, 0, PartEntry); @@ -1342,8 +1345,8 @@ PrintPartitionData( sprintf(LineBuffer, MUIGetString(STRING_UNPSPACE), - PartEntry->ExtendedPartition ? " " : "", - PartEntry->ExtendedPartition ? "" : " ", + PartEntry->LogicalPartition ? " " : "", + PartEntry->LogicalPartition ? "" : " ", PartSize.u.LowPart, Unit); } @@ -1410,9 +1413,9 @@ PrintPartitionData( MUIGetString(STRING_HDDINFOUNK5), (PartEntry->DriveLetter == 0) ? '-' : PartEntry->DriveLetter, (PartEntry->DriveLetter == 0) ? '-' : ':', - PartEntry->ExtendedPartition ? " " : "", + PartEntry->LogicalPartition ? " " : "", PartEntry->PartitionType, - PartEntry->ExtendedPartition ? "" : " ", + PartEntry->LogicalPartition ? "" : " ", PartSize.u.LowPart, Unit); } @@ -1422,9 +1425,9 @@ PrintPartitionData( "%c%c %s%-24s%s %6lu %s", (PartEntry->DriveLetter == 0) ? '-' : PartEntry->DriveLetter, (PartEntry->DriveLetter == 0) ? '-' : ':', - PartEntry->ExtendedPartition ? " " : "", + PartEntry->LogicalPartition ? " " : "", PartType, - PartEntry->ExtendedPartition ? "" : " ", + PartEntry->LogicalPartition ? "" : " ", PartSize.u.LowPart, Unit); } @@ -1474,8 +1477,8 @@ PrintDiskData( PPARTLIST List, PDISKENTRY DiskEntry) { - PPARTENTRY PrimaryPartEntry, ExtendedPartEntry; - PLIST_ENTRY PrimaryEntry, ExtendedEntry; + PPARTENTRY PrimaryPartEntry, LogicalPartEntry; + PLIST_ENTRY PrimaryEntry, LogicalEntry; CHAR LineBuffer[128]; COORD coPos; DWORD Written; @@ -1570,16 +1573,16 @@ PrintDiskData( if (IsContainerPartition(PrimaryPartEntry->PartitionType)) { - ExtendedEntry = DiskEntry->ExtendedPartListHead.Flink; - while (ExtendedEntry != &DiskEntry->ExtendedPartListHead) + LogicalEntry = DiskEntry->LogicalPartListHead.Flink; + while (LogicalEntry != &DiskEntry->LogicalPartListHead) { - ExtendedPartEntry = CONTAINING_RECORD(ExtendedEntry, PARTENTRY, ListEntry); + LogicalPartEntry = CONTAINING_RECORD(LogicalEntry, PARTENTRY, ListEntry); PrintPartitionData(List, DiskEntry, - ExtendedPartEntry); + LogicalPartEntry); - ExtendedEntry = ExtendedEntry->Flink; + LogicalEntry = LogicalEntry->Flink; } } @@ -2208,6 +2211,40 @@ DPRINT1("Total Sectors: %I64u\n", NewPartEntry->SectorCount.QuadPart); } +static +VOID +AddLogicalDiskSpace( + PDISKENTRY DiskEntry) +{ + PPARTENTRY NewPartEntry; + + DPRINT1("AddLogicalDiskSpace()\n"); + + /* Create a partition table entry that represents the empty space in the container partition */ + NewPartEntry = RtlAllocateHeap(ProcessHeap, + HEAP_ZERO_MEMORY, + sizeof(PARTENTRY)); + if (NewPartEntry == NULL) + return; + + NewPartEntry->DiskEntry = DiskEntry; + NewPartEntry->LogicalPartition = TRUE; + + NewPartEntry->IsPartitioned = FALSE; + NewPartEntry->StartSector.QuadPart = DiskEntry->ExtendedPartition->StartSector.QuadPart + (ULONGLONG)DiskEntry->SectorsPerTrack; + NewPartEntry->SectorCount.QuadPart = DiskEntry->ExtendedPartition->SectorCount.QuadPart - (ULONGLONG)DiskEntry->SectorsPerTrack; + + DPRINT1("First Sector: %I64u\n", NewPartEntry->StartSector.QuadPart); + DPRINT1("Last Sector: %I64u\n", NewPartEntry->StartSector.QuadPart + NewPartEntry->SectorCount.QuadPart - 1); + DPRINT1("Total Sectors: %I64u\n", NewPartEntry->SectorCount.QuadPart); + + NewPartEntry->FormatState = Unformatted; + + InsertTailList(&DiskEntry->LogicalPartListHead, + &NewPartEntry->ListEntry); +} + + VOID CreateExtendedPartition( PPARTLIST List, @@ -2217,7 +2254,7 @@ CreateExtendedPartition( PPARTENTRY PartEntry; PPARTENTRY NewPartEntry; - DPRINT1("CreatePrimaryPartition(%I64u)\n", SectorCount); + DPRINT1("CreateExtendedPartition(%I64u)\n", SectorCount); if (List == NULL || List->CurrentDisk == NULL || @@ -2237,12 +2274,24 @@ DPRINT1("Current partition sector count: %I64u\n", PartEntry->SectorCount.QuadPa DPRINT1("Convert existing partition entry\n"); /* Convert current entry to 'new (unformatted)' */ PartEntry->IsPartitioned = TRUE; -// PartEntry->PartitionType = PARTITION_ENTRY_UNUSED; PartEntry->FormatState = Formatted; PartEntry->AutoCreate = FALSE; PartEntry->New = FALSE; PartEntry->BootIndicator = FALSE; /* FIXME */ + if (PartEntry->StartSector.QuadPart < 1450560) + { + /* Partition starts below the 8.4GB boundary ==> CHS partition */ + PartEntry->PartitionType = PARTITION_EXTENDED; + } + else + { + /* Partition starts above the 8.4GB boundary ==> LBA partition */ + PartEntry->PartitionType = PARTITION_XINT13_EXTENDED; + } + + DiskEntry->ExtendedPartition = PartEntry; + DPRINT1("First Sector: %I64u\n", PartEntry->StartSector.QuadPart); DPRINT1("Last Sector: %I64u\n", PartEntry->StartSector.QuadPart + PartEntry->SectorCount.QuadPart - 1); DPRINT1("Total Sectors: %I64u\n", PartEntry->SectorCount.QuadPart); @@ -2269,30 +2318,32 @@ DPRINT1("Add new partition entry\n"); NewPartEntry->SectorCount.QuadPart = Align(NewPartEntry->StartSector.QuadPart + SectorCount, DiskEntry->SectorAlignment) - NewPartEntry->StartSector.QuadPart; -// NewPartEntry->PartitionType = PARTITION_ENTRY_UNUSED; - -DPRINT1("First Sector: %I64u\n", NewPartEntry->StartSector.QuadPart); -DPRINT1("Last Sector: %I64u\n", NewPartEntry->StartSector.QuadPart + NewPartEntry->SectorCount.QuadPart - 1); -DPRINT1("Total Sectors: %I64u\n", NewPartEntry->SectorCount.QuadPart); - NewPartEntry->New = FALSE; NewPartEntry->FormatState = Formatted; NewPartEntry->BootIndicator = FALSE; /* FIXME */ + if (NewPartEntry->StartSector.QuadPart < 1450560) + { + /* Partition starts below the 8.4GB boundary ==> CHS partition */ + NewPartEntry->PartitionType = PARTITION_EXTENDED; + } + else + { + /* Partition starts above the 8.4GB boundary ==> LBA partition */ + NewPartEntry->PartitionType = PARTITION_XINT13_EXTENDED; + } + + DiskEntry->ExtendedPartition = NewPartEntry; + PartEntry->StartSector.QuadPart = NewPartEntry->StartSector.QuadPart + NewPartEntry->SectorCount.QuadPart; PartEntry->SectorCount.QuadPart -= (PartEntry->StartSector.QuadPart - NewPartEntry->StartSector.QuadPart); + +DPRINT1("First Sector: %I64u\n", NewPartEntry->StartSector.QuadPart); +DPRINT1("Last Sector: %I64u\n", NewPartEntry->StartSector.QuadPart + NewPartEntry->SectorCount.QuadPart - 1); +DPRINT1("Total Sectors: %I64u\n", NewPartEntry->SectorCount.QuadPart); } - if (NewPartEntry->StartSector.QuadPart < 1450560) - { - /* Partition starts below the 8.4GB boundary ==> CHS partition */ - NewPartEntry->PartitionType = PARTITION_EXTENDED; - } - else - { - /* Partition starts above the 8.4GB boundary ==> LBA partition */ - NewPartEntry->PartitionType = PARTITION_XINT13_EXTENDED; - } + AddLogicalDiskSpace(DiskEntry); UpdateDiskLayout(DiskEntry); @@ -2312,6 +2363,8 @@ DeleteCurrentPartition( PPARTENTRY PartEntry; PPARTENTRY PrevPartEntry; PPARTENTRY NextPartEntry; + PPARTENTRY LogicalPartEntry; + PLIST_ENTRY Entry; if (List == NULL || List->CurrentDisk == NULL || @@ -2324,6 +2377,20 @@ DeleteCurrentPartition( DiskEntry = List->CurrentDisk; PartEntry = List->CurrentPartition; + /* Delete all logical partiton entries if an extended partition will be deleted */ + if (DiskEntry->ExtendedPartition == PartEntry) + { + while (!IsListEmpty(&DiskEntry->LogicalPartListHead)) + { + Entry = RemoveHeadList(&DiskEntry->LogicalPartListHead); + LogicalPartEntry = CONTAINING_RECORD(Entry, PARTENTRY, ListEntry); + + RtlFreeHeap(ProcessHeap, 0, LogicalPartEntry); + } + + DiskEntry->ExtendedPartition = NULL; + } + /* Adjust unpartitioned disk space entries */ /* Get pointer to previous and next unpartitioned entries */ @@ -2744,30 +2811,6 @@ GetPrimaryPartitionCount( } -static -ULONG -GetExtendedPartitionCount( - IN PDISKENTRY DiskEntry) -{ - PLIST_ENTRY Entry; - PPARTENTRY PartEntry; - UINT nCount = 0; - - Entry = DiskEntry->PrimaryPartListHead.Flink; - while (Entry != &DiskEntry->PrimaryPartListHead) - { - PartEntry = CONTAINING_RECORD(Entry, PARTENTRY, ListEntry); - if (PartEntry->IsPartitioned == TRUE && - IsContainerPartition(PartEntry->PartitionType)) - nCount++; - - Entry = Entry->Flink; - } - - return nCount; -} - - ULONG PrimaryPartitionCreationChecks( IN PPARTLIST List) @@ -2786,7 +2829,7 @@ PrimaryPartitionCreationChecks( if (GetPrimaryPartitionCount(DiskEntry) > 4) return ERROR_PARTITION_TABLE_FULL; - /* FIXME: Fail if this partiton is located behind an extended partition */ + /* Fail if this partiton is located behind an extended partition */ if (IsPreviousPartitionExtended(PartEntry, DiskEntry)) return ERROR_NOT_BEHIND_EXTENDED; @@ -2813,7 +2856,7 @@ ExtendedPartitionCreationChecks( return ERROR_PARTITION_TABLE_FULL; /* Fail if there is another extended partition in the list */ - if (GetExtendedPartitionCount(DiskEntry) != 0) + if (DiskEntry->ExtendedPartition != NULL) return ERROR_ONLY_ONE_EXTENDED; /* Fail if the partition is not the last list entry */ @@ -2823,5 +2866,4 @@ ExtendedPartitionCreationChecks( return ERROR_SUCCESS; } - /* EOF */ diff --git a/reactos/base/setup/usetup/partlist.h b/reactos/base/setup/usetup/partlist.h index 40022f4b800..b276ef3ec81 100644 --- a/reactos/base/setup/usetup/partlist.h +++ b/reactos/base/setup/usetup/partlist.h @@ -57,7 +57,7 @@ typedef struct _PARTENTRY CHAR VolumeLabel[17]; CHAR FileSystemName[9]; - BOOLEAN ExtendedPartition; + BOOLEAN LogicalPartition; /* Partition is partitioned disk space */ BOOLEAN IsPartitioned; @@ -117,8 +117,10 @@ typedef struct _DISKENTRY PDRIVE_LAYOUT_INFORMATION LayoutBuffer; + PPARTENTRY ExtendedPartition; + LIST_ENTRY PrimaryPartListHead; - LIST_ENTRY ExtendedPartListHead; + LIST_ENTRY LogicalPartListHead; } DISKENTRY, *PDISKENTRY; From 292420e2afa0a2c63d7bd551541f393773f9730c Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Thu, 22 May 2014 16:13:44 +0000 Subject: [PATCH 026/232] [CRT] * Update fputs(). CORE-8080 svn path=/trunk/; revision=63412 --- reactos/lib/sdk/crt/stdio/file.c | 47 ++++++++++++++++++++++---------- 1 file changed, 32 insertions(+), 15 deletions(-) diff --git a/reactos/lib/sdk/crt/stdio/file.c b/reactos/lib/sdk/crt/stdio/file.c index 150d61b9006..254bf1feaf1 100644 --- a/reactos/lib/sdk/crt/stdio/file.c +++ b/reactos/lib/sdk/crt/stdio/file.c @@ -553,6 +553,29 @@ int CDECL _isatty(int fd) return TRUE; } +/* INTERNAL: Allocate temporary buffer for stdout and stderr */ +static BOOL add_std_buffer(FILE *file) +{ + static char buffers[2][BUFSIZ]; + + if((file->_file!=STDOUT_FILENO && file->_file!=STDERR_FILENO) + || !_isatty(file->_file) || file->_bufsiz) + return FALSE; + + file->_ptr = file->_base = buffers[file->_file == STDOUT_FILENO ? 0 : 1]; + file->_bufsiz = file->_cnt = BUFSIZ; + return TRUE; +} + +/* INTERNAL: Removes temporary buffer from stdout or stderr */ +/* Only call this function when add_std_buffer returned TRUE */ +static void remove_std_buffer(FILE *file) +{ + flush_buffer(file); + file->_ptr = file->_base = NULL; + file->_bufsiz = file->_cnt = 0; +} + /* INTERNAL: Convert integer to base32 string (0-9a-v), 0 becomes "" */ static int int_to_base32(int num, char *str) { @@ -3427,23 +3450,13 @@ int CDECL fgetpos(FILE* file, fpos_t *pos) */ int CDECL fputs(const char *s, FILE* file) { - size_t i, len = strlen(s); + size_t len = strlen(s); int ret; _lock_file(file); - if (!(get_ioinfo(file->_file)->wxflag & WX_TEXT)) { - ret = fwrite(s,sizeof(*s),len,file) == len ? 0 : EOF; - _unlock_file(file); - return ret; - } - for (i=0; i Date: Thu, 22 May 2014 16:15:48 +0000 Subject: [PATCH 027/232] [BMFD] Fix inverted use of scaling factors. Patch by Victor Martinez. CORE-8165 #resolve svn path=/trunk/; revision=63413 --- reactos/win32ss/drivers/font/bmfd/glyph.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/reactos/win32ss/drivers/font/bmfd/glyph.c b/reactos/win32ss/drivers/font/bmfd/glyph.c index da4642a0c82..ebc5f06e824 100644 --- a/reactos/win32ss/drivers/font/bmfd/glyph.c +++ b/reactos/win32ss/drivers/font/bmfd/glyph.c @@ -118,8 +118,8 @@ BmfdQueryGlyphAndBitmap( } else { - cxDst = cxSrc * yScale; - cyDst = cySrc * xScale; + cxDst = cxSrc * xScale; + cyDst = cySrc * yScale; } cjDstRow = (cxDst + 7) / 8; @@ -154,7 +154,7 @@ BmfdQueryGlyphAndBitmap( } /* Fill GLYPHBITS structure */ - pgb->ptlOrigin.x = yScale * pface->wA; + pgb->ptlOrigin.x = xScale * pface->wA; pgb->ptlOrigin.y = - yScale * pface->wAscent; pgb->sizlBitmap.cx = cxDst; pgb->sizlBitmap.cy = cyDst; From ce7e55def93a24d7878ab0e53361ba838967d0a1 Mon Sep 17 00:00:00 2001 From: Christoph von Wittich Date: Thu, 22 May 2014 18:53:44 +0000 Subject: [PATCH 028/232] [shell32] Import some changes from Wine to shlexec.cpp patch by Ivan Rodionov see CORE-8196 svn path=/trunk/; revision=63414 --- reactos/dll/win32/shell32/classes.cpp | 10 +- reactos/dll/win32/shell32/shell32_main.cpp | 2 +- reactos/dll/win32/shell32/shell32_main.h | 6 - reactos/dll/win32/shell32/shlexec.cpp | 329 +++++++++++++-------- 4 files changed, 216 insertions(+), 131 deletions(-) diff --git a/reactos/dll/win32/shell32/classes.cpp b/reactos/dll/win32/shell32/classes.cpp index 5b232a2c9a7..5d7d92f037d 100644 --- a/reactos/dll/win32/shell32/classes.cpp +++ b/reactos/dll/win32/shell32/classes.cpp @@ -34,7 +34,7 @@ BOOL HCR_MapTypeToValueW(LPCWSTR szExtension, LPWSTR szFileType, LONG len, BOOL /* added because we do not want to have double dots */ if (szExtension[0] == '.') - bPrependDot = 0; + bPrependDot = FALSE; if (bPrependDot) szTemp[0] = '.'; @@ -66,7 +66,7 @@ BOOL HCR_MapTypeToValueA(LPCSTR szExtension, LPSTR szFileType, LONG len, BOOL bP /* added because we do not want to have double dots */ if (szExtension[0] == '.') - bPrependDot = 0; + bPrependDot = FALSE; if (bPrependDot) szTemp[0] = '.'; @@ -109,7 +109,7 @@ BOOL HCR_GetDefaultVerbW(HKEY hkeyClass, LPCWSTR szVerb, LPWSTR szDest, DWORD le TRACE("%p %s %p\n", hkeyClass, debugstr_w(szVerb), szDest); - if (szVerb) + if (szVerb && *szVerb) { lstrcpynW(szDest, szVerb, len); return TRUE; @@ -173,7 +173,7 @@ BOOL HCR_GetExecuteCommandW(HKEY hkeyClass, LPCWSTR szClass, LPCWSTR szVerb, LPW return FALSE; ret = FALSE; - if (HCR_GetDefaultVerbW(hkeyClass, szVerb, sTempVerb, sizeof(sTempVerb))) + if (HCR_GetDefaultVerbW(hkeyClass, szVerb, sTempVerb, sizeof(sTempVerb)/sizeof(sTempVerb[0]))) { WCHAR sTemp[MAX_PATH]; wcscpy(sTemp, swShell); @@ -420,7 +420,7 @@ BOOL HCR_GetClassNameA(REFIID riid, LPSTR szDest, DWORD len) } } - TRACE("-- %s\n", szDest); + TRACE("-- (%s)\n", szDest); return ret; } diff --git a/reactos/dll/win32/shell32/shell32_main.cpp b/reactos/dll/win32/shell32/shell32_main.cpp index aa2d299cffa..a38ef84521e 100644 --- a/reactos/dll/win32/shell32/shell32_main.cpp +++ b/reactos/dll/win32/shell32/shell32_main.cpp @@ -1075,7 +1075,7 @@ INT_PTR CALLBACK AboutAuthorsDlgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM /************************************************************************* * AboutDlgProc (internal) */ -INT_PTR CALLBACK AboutDlgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam ) +static INT_PTR CALLBACK AboutDlgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam ) { static DWORD cxLogoBmp; static DWORD cyLogoBmp; diff --git a/reactos/dll/win32/shell32/shell32_main.h b/reactos/dll/win32/shell32/shell32_main.h index 7c6d8643c60..d3274f17515 100644 --- a/reactos/dll/win32/shell32/shell32_main.h +++ b/reactos/dll/win32/shell32/shell32_main.h @@ -53,7 +53,6 @@ BOOL HCR_GetIconA(LPCSTR szClass, LPSTR szDest, LPCSTR sName, DWORD len, int* pi BOOL HCR_GetClassNameA(REFIID riid, LPSTR szDest, DWORD len); BOOL HCR_GetFolderAttributes(LPCITEMIDLIST pidlFolder, LPDWORD dwAttributes); -INT_PTR CALLBACK AboutDlgProc(HWND,UINT,WPARAM,LPARAM); DWORD WINAPI ParseFieldA(LPCSTR src, DWORD nField, LPSTR dst, DWORD len); DWORD WINAPI ParseFieldW(LPCWSTR src, DWORD nField, LPWSTR dst, DWORD len); @@ -173,11 +172,6 @@ static LPWSTR __inline __SHCloneStrAtoW(WCHAR **target, const char *source) #define HINSTANCE_32(h16) ((HINSTANCE)(ULONG_PTR)(h16)) #define HINSTANCE_16(h32) (LOWORD(h32)) -typedef UINT_PTR (*SHELL_ExecuteW32)(const WCHAR *lpCmd, WCHAR *env, BOOL shWait, - const SHELLEXECUTEINFOW *sei, LPSHELLEXECUTEINFOW sei_out); - -BOOL SHELL_execute(LPSHELLEXECUTEINFOW sei, SHELL_ExecuteW32 execfunc); - extern WCHAR swShell32Name[MAX_PATH]; BOOL UNIXFS_is_rooted_at_desktop(void); diff --git a/reactos/dll/win32/shell32/shlexec.cpp b/reactos/dll/win32/shell32/shlexec.cpp index 7adbd0d0e03..76929844d6a 100644 --- a/reactos/dll/win32/shell32/shlexec.cpp +++ b/reactos/dll/win32/shell32/shlexec.cpp @@ -28,6 +28,9 @@ static const WCHAR wszExe[] = L".exe"; #define SEE_MASK_CLASSALL (SEE_MASK_CLASSNAME | SEE_MASK_CLASSKEY) +typedef UINT_PTR (*SHELL_ExecuteW32)(const WCHAR *lpCmd, WCHAR *env, BOOL shWait, + const SHELLEXECUTEINFOW *sei, LPSHELLEXECUTEINFOW sei_out); + static void ParseNoTildeEffect(PWSTR &res, LPCWSTR &args, DWORD &len, DWORD &used, int argNum) { bool firstCharQuote = false; @@ -382,7 +385,12 @@ static BOOL SHELL_ArgifyW(WCHAR* out, DWORD len, const WCHAR* fmt, const WCHAR* } } - *res = '\0'; + used++; + if (res - out < static_cast(len)) + *res = '\0'; + else + out[len-1] = '\0'; + TRACE("used %i of %i space\n", used, len); if (out_len) *out_len = used; @@ -451,7 +459,7 @@ static UINT_PTR SHELL_ExecuteW(const WCHAR *lpCmd, WCHAR *env, BOOL shWait, startup.dwFlags = STARTF_USESHOWWINDOW; startup.wShowWindow = psei->nShow; dwCreationFlags = CREATE_UNICODE_ENVIRONMENT; - if (psei->fMask & SEE_MASK_NO_CONSOLE) + if (!(psei->fMask & SEE_MASK_NO_CONSOLE)) dwCreationFlags |= CREATE_NEW_CONSOLE; startup.lpTitle = (LPWSTR)(psei->fMask & (SEE_MASK_HASLINKNAME | SEE_MASK_HASTITLE) ? psei->lpClass : NULL); @@ -589,28 +597,46 @@ end: return found; } -static UINT SHELL_FindExecutableByOperation(LPCWSTR lpOperation, LPWSTR key, LPWSTR filetype, LPWSTR command, LONG commandlen) +/************************************************************************* + * SHELL_FindExecutableByVerb [Internal] + * + * called from SHELL_FindExecutable or SHELL_execute_class + * in/out: + * classname a buffer, big enough, to get the key name to do actually the + * command "WordPad.Document.1\\shell\\open\\command" + * passed as "WordPad.Document.1" + * in: + * lpVerb the operation on it (open) + * commandlen the size of command buffer (in bytes) + * out: + * command a buffer, to store the command to do the + * operation on the file + * key a buffer, big enough, to get the key name to do actually the + * command "WordPad.Document.1\\shell\\open\\command" + * Can be NULL + */ +static UINT SHELL_FindExecutableByVerb(LPCWSTR lpVerb, LPWSTR key, LPWSTR classname, LPWSTR command, LONG commandlen) { static const WCHAR wCommand[] = L"\\command"; HKEY hkeyClass; WCHAR verb[MAX_PATH]; - if (RegOpenKeyExW(HKEY_CLASSES_ROOT, filetype, 0, 0x02000000, &hkeyClass)) + if (RegOpenKeyExW(HKEY_CLASSES_ROOT, classname, 0, 0x02000000, &hkeyClass)) return SE_ERR_NOASSOC; - if (!HCR_GetDefaultVerbW(hkeyClass, lpOperation, verb, sizeof(verb) / sizeof(verb[0]))) + if (!HCR_GetDefaultVerbW(hkeyClass, lpVerb, verb, sizeof(verb) / sizeof(verb[0]))) return SE_ERR_NOASSOC; RegCloseKey(hkeyClass); /* Looking for ...buffer\shell\\command */ - wcscat(filetype, L"\\shell\\"); - wcscat(filetype, verb); - wcscat(filetype, wCommand); + wcscat(classname, L"\\shell\\"); + wcscat(classname, verb); + wcscat(classname, wCommand); - if (RegQueryValueW(HKEY_CLASSES_ROOT, filetype, command, + if (RegQueryValueW(HKEY_CLASSES_ROOT, classname, command, &commandlen) == ERROR_SUCCESS) { commandlen /= sizeof(WCHAR); - if (key) wcscpy(key, filetype); + if (key) wcscpy(key, classname); #if 0 LPWSTR tmp; WCHAR param[256]; @@ -624,10 +650,10 @@ static UINT SHELL_FindExecutableByOperation(LPCWSTR lpOperation, LPWSTR key, LPW */ /* Get the parameters needed by the application from the associated ddeexec key */ - tmp = strstrW(filetype, wCommand); + tmp = strstrW(classname, wCommand); tmp[0] = '\0'; - wcscat(filetype, wDdeexec); - if (RegQueryValueW(HKEY_CLASSES_ROOT, filetype, param, + wcscat(classname, wDdeexec); + if (RegQueryValueW(HKEY_CLASSES_ROOT, classname, param, ¶mlen) == ERROR_SUCCESS) { paramlen /= sizeof(WCHAR); @@ -651,7 +677,7 @@ static UINT SHELL_FindExecutableByOperation(LPCWSTR lpOperation, LPWSTR key, LPW * Utility for code sharing between FindExecutable and ShellExecute * in: * lpFile the name of a file - * lpOperation the operation on it (open) + * lpVerb the operation on it (open) * out: * lpResult a buffer, big enough :-(, to store the command to do the * operation on the file @@ -659,12 +685,12 @@ static UINT SHELL_FindExecutableByOperation(LPCWSTR lpOperation, LPWSTR key, LPW * command (it'll be used afterwards for more information * on the operation) */ -static UINT SHELL_FindExecutable(LPCWSTR lpPath, LPCWSTR lpFile, LPCWSTR lpOperation, +static UINT SHELL_FindExecutable(LPCWSTR lpPath, LPCWSTR lpFile, LPCWSTR lpVerb, LPWSTR lpResult, DWORD resultLen, LPWSTR key, WCHAR **env, LPITEMIDLIST pidl, LPCWSTR args) { WCHAR *extension = NULL; /* pointer to file extension */ - WCHAR filetype[256]; /* registry name for this filetype */ - LONG filetypelen = sizeof(filetype); /* length of above */ + WCHAR classname[256]; /* registry name for this file type */ + LONG classnamelen = sizeof(classname); /* length of above */ WCHAR command[1024]; /* command from registry */ WCHAR wBuffer[256]; /* Used to GetProfileString */ UINT retval = SE_ERR_NOASSOC; @@ -699,7 +725,7 @@ static UINT SHELL_FindExecutable(LPCWSTR lpPath, LPCWSTR lpFile, LPCWSTR lpOpera { TRACE("SearchPathW returned non-zero\n"); lpFile = xlpFile; - /* Hey, isn't this value ignored? Why make this call? Shouldn't we return here? --dank*/ + /* The file was found in the application-supplied default directory (or the system search path) */ } else if (lpPath && SearchPathW(NULL, lpFile, wszExe, sizeof(xlpFile)/sizeof(WCHAR), xlpFile, NULL)) { @@ -711,8 +737,7 @@ static UINT SHELL_FindExecutable(LPCWSTR lpPath, LPCWSTR lpFile, LPCWSTR lpOpera attribs = GetFileAttributesW(lpFile); if (attribs != INVALID_FILE_ATTRIBUTES && (attribs & FILE_ATTRIBUTE_DIRECTORY)) { - wcscpy(filetype, L"Folder"); - filetypelen = 6; /* strlen("Folder") */ + wcscpy(classname, L"Folder"); } else { @@ -736,7 +761,7 @@ static UINT SHELL_FindExecutable(LPCWSTR lpPath, LPCWSTR lpFile, LPCWSTR lpOpera /* Three places to check: */ /* 1. win.ini, [windows], programs (NB no leading '.') */ - /* 2. Registry, HKEY_CLASS_ROOT\\shell\open\command */ + /* 2. Registry, HKEY_CLASS_ROOT\\shell\open\command */ /* 3. win.ini, [extensions], extension (NB no leading '.' */ /* All I know of the order is that registry is checked before */ /* extensions; however, it'd make sense to check the programs */ @@ -773,28 +798,26 @@ static UINT SHELL_FindExecutable(LPCWSTR lpPath, LPCWSTR lpFile, LPCWSTR lpOpera } /* Check registry */ - if (RegQueryValueW(HKEY_CLASSES_ROOT, extension, filetype, - &filetypelen) == ERROR_SUCCESS) + if (RegQueryValueW(HKEY_CLASSES_ROOT, extension, classname, + &classnamelen) == ERROR_SUCCESS) { - filetypelen /= sizeof(WCHAR); - if (filetypelen == sizeof(filetype) / sizeof(WCHAR)) - filetypelen--; + classnamelen /= sizeof(WCHAR); + if (classnamelen == sizeof(classname) / sizeof(WCHAR)) + classnamelen--; - filetype[filetypelen] = '\0'; - TRACE("File type: %s\n", debugstr_w(filetype)); + classname[classnamelen] = '\0'; + TRACE("File type: %s\n", debugstr_w(classname)); } else { - *filetype = '\0'; - filetypelen = 0; + *classname = '\0'; } } - if (*filetype) + if (*classname) { - /* pass the operation string to SHELL_FindExecutableByOperation() */ - filetype[filetypelen] = '\0'; - retval = SHELL_FindExecutableByOperation(lpOperation, key, filetype, command, sizeof(command)); + /* pass the verb string to SHELL_FindExecutableByVerb() */ + retval = SHELL_FindExecutableByVerb(lpVerb, key, classname, command, sizeof(command)); if (retval > 32) { @@ -882,20 +905,34 @@ static unsigned dde_connect(const WCHAR* key, const WCHAR* start, WCHAR* ddeexec { WCHAR regkey[256]; WCHAR * endkey = regkey + wcslen(key); - WCHAR app[256], topic[256], ifexec[256], res[256]; + WCHAR app[256], topic[256], ifexec[256], static_res[256]; + WCHAR * dynamic_res=NULL; + WCHAR * res; LONG applen, topiclen, ifexeclen; WCHAR * exec; DWORD ddeInst = 0; DWORD tid; - DWORD resultLen; + DWORD resultLen, endkeyLen; HSZ hszApp, hszTopic; HCONV hConv; HDDEDATA hDdeData; unsigned ret = SE_ERR_NOASSOC; BOOL unicode = !(GetVersion() & 0x80000000); + if (strlenW(key) + 1 > sizeof(regkey) / sizeof(regkey[0])) + { + FIXME("input parameter %s larger than buffer\n", debugstr_w(key)); + return 2; + } wcscpy(regkey, key); - wcscpy(endkey, L"\\application"); + static const WCHAR wApplication[] = L"\\application"; + endkeyLen = sizeof(regkey) / sizeof(regkey[0]) - (endkey - regkey); + if (strlenW(wApplication) + 1 > endkeyLen) + { + FIXME("endkey %s overruns buffer\n", debugstr_w(wApplication)); + return 2; + } + wcscpy(endkey, wApplication); applen = sizeof(app); if (RegQueryValueW(HKEY_CLASSES_ROOT, regkey, app, &applen) != ERROR_SUCCESS) { @@ -908,6 +945,12 @@ static unsigned dde_connect(const WCHAR* key, const WCHAR* start, WCHAR* ddeexec /* Get application command from start string and find filename of application */ if (*start == '"') { + if (strlenW(start + 1) + 1 > sizeof(command) / sizeof(command[0])) + { + FIXME("size of input parameter %s larger than buffer\n", + debugstr_w(start + 1)); + return 2; + } wcscpy(command, start + 1); if ((ptr = wcschr(command, '"'))) * ptr = 0; @@ -915,8 +958,9 @@ static unsigned dde_connect(const WCHAR* key, const WCHAR* start, WCHAR* ddeexec } else { - LPWSTR p, space; - for (p = (LPWSTR)start; (space = const_cast(strchrW(p, ' '))); p = space + 1) + LPCWSTR p; + LPWSTR space; + for (p = start; (space = const_cast(strchrW(p, ' '))); p = space + 1) { int idx = space - start; memcpy(command, start, idx * sizeof(WCHAR)); @@ -933,6 +977,11 @@ static unsigned dde_connect(const WCHAR* key, const WCHAR* start, WCHAR* ddeexec ERR("Unable to find application path for command %s\n", debugstr_w(start)); return ERROR_ACCESS_DENIED; } + if (strlenW(ptr) + 1 > sizeof(app) / sizeof(app[0])) + { + FIXME("size of found path %s larger than buffer\n", debugstr_w(ptr)); + return 2; + } wcscpy(app, ptr); /* Remove extensions (including .so) */ @@ -945,8 +994,14 @@ static unsigned dde_connect(const WCHAR* key, const WCHAR* start, WCHAR* ddeexec assert(ptr); *ptr = 0; } - - wcscpy(endkey, L"\\topic"); + + static const WCHAR wTopic[] = L"\\topic"; + if (strlenW(wTopic) + 1 > endkeyLen) + { + FIXME("endkey %s overruns buffer\n", debugstr_w(wTopic)); + return 2; + } + wcscpy(endkey, wTopic); topiclen = sizeof(topic); if (RegQueryValueW(HKEY_CLASSES_ROOT, regkey, topic, &topiclen) != ERROR_SUCCESS) { @@ -986,7 +1041,13 @@ static unsigned dde_connect(const WCHAR* key, const WCHAR* start, WCHAR* ddeexec SetLastError(ERROR_DDE_FAIL); return 30; /* whatever */ } - strcpyW(endkey, L"\\ifexec"); + static const WCHAR wIfexec[] = L"\\ifexec"; + if (strlenW(wIfexec) + 1 > endkeyLen) + { + FIXME("endkey %s overruns buffer\n", debugstr_w(wIfexec)); + return 2; + } + strcpyW(endkey, wIfexec); ifexeclen = sizeof(ifexec); if (RegQueryValueW(HKEY_CLASSES_ROOT, regkey, ifexec, &ifexeclen) == ERROR_SUCCESS) { @@ -994,9 +1055,14 @@ static unsigned dde_connect(const WCHAR* key, const WCHAR* start, WCHAR* ddeexec } } - SHELL_ArgifyW(res, sizeof(res) / sizeof(WCHAR), exec, lpFile, pidl, szCommandline, &resultLen); - if (resultLen > sizeof(res) / sizeof(WCHAR)) - ERR("Argify buffer not large enough, truncated\n"); + SHELL_ArgifyW(static_res, sizeof(static_res)/sizeof(WCHAR), exec, lpFile, pidl, szCommandline, &resultLen); + if (resultLen > sizeof(static_res)/sizeof(WCHAR)) + { + res = dynamic_res = static_cast(HeapAlloc(GetProcessHeap(), 0, resultLen * sizeof(WCHAR))); + SHELL_ArgifyW(dynamic_res, resultLen, exec, lpFile, pidl, szCommandline, NULL); + } + else + res = static_res; TRACE("%s %s => %s\n", debugstr_w(exec), debugstr_w(lpFile), debugstr_w(res)); /* It's documented in the KB 330337 that IE has a bug and returns @@ -1019,6 +1085,8 @@ static unsigned dde_connect(const WCHAR* key, const WCHAR* start, WCHAR* ddeexec WARN("DdeClientTransaction failed with error %04x\n", DdeGetLastError(ddeInst)); ret = 33; + HeapFree(GetProcessHeap(), 0, dynamic_res); + DdeDisconnect(hConv); error: @@ -1296,7 +1364,7 @@ static HRESULT shellex_run_context_menu_default(IShellExtInit *obj, memset(&ici, 0, sizeof ici); ici.cbSize = sizeof ici; - ici.fMask = CMIC_MASK_UNICODE | (sei->fMask & (SEE_MASK_NOASYNC | SEE_MASK_ASYNCOK | SEE_MASK_FLAG_NO_UI)); + ici.fMask = CMIC_MASK_UNICODE | (sei->fMask & (SEE_MASK_NO_CONSOLE | SEE_MASK_NOASYNC | SEE_MASK_ASYNCOK | SEE_MASK_FLAG_NO_UI)); ici.nShow = sei->nShow; ici.lpVerb = MAKEINTRESOURCEA(def); ici.hwnd = sei->hwnd; @@ -1411,34 +1479,61 @@ static LONG ShellExecute_FromContextMenu( LPSHELLEXECUTEINFOW sei ) return r; } +static UINT_PTR SHELL_quote_and_execute(LPCWSTR wcmd, LPCWSTR wszParameters, LPCWSTR lpstrProtocol, LPCWSTR wszApplicationName, LPWSTR env, LPSHELLEXECUTEINFOW psei, LPSHELLEXECUTEINFOW psei_out, SHELL_ExecuteW32 execfunc); + static UINT_PTR SHELL_execute_class(LPCWSTR wszApplicationName, LPSHELLEXECUTEINFOW psei, LPSHELLEXECUTEINFOW psei_out, SHELL_ExecuteW32 execfunc) { - WCHAR execCmd[1024], wcmd[1024]; + WCHAR execCmd[1024], classname[1024]; /* launch a document by fileclass like 'WordPad.Document.1' */ /* the Commandline contains 'c:\Path\wordpad.exe "%1"' */ /* FIXME: wcmd should not be of a fixed size. Fixed to 1024, MAX_PATH is way too short! */ ULONG cmask = (psei->fMask & SEE_MASK_CLASSALL); DWORD resultLen; BOOL done; - - HCR_GetExecuteCommandW((cmask == SEE_MASK_CLASSKEY) ? psei->hkeyClass : NULL, - (cmask == SEE_MASK_CLASSNAME) ? psei->lpClass : NULL, - psei->lpVerb, - execCmd, sizeof(execCmd)); - - /* FIXME: get the extension of lpFile, check if it fits to the lpClass */ - TRACE("SEE_MASK_CLASSNAME->%s, doc->%s\n", debugstr_w(execCmd), debugstr_w(wszApplicationName)); - - wcmd[0] = '\0'; - done = SHELL_ArgifyW(wcmd, sizeof(wcmd) / sizeof(WCHAR), execCmd, wszApplicationName, (LPITEMIDLIST)psei->lpIDList, NULL, &resultLen); - if (!done && wszApplicationName[0]) + UINT_PTR rslt; + + /* FIXME: remove following block when SHELL_quote_and_execute supports hkeyClass parameter */ + if (cmask != SEE_MASK_CLASSNAME) { - strcatW(wcmd, L" "); - strcatW(wcmd, wszApplicationName); + WCHAR wcmd[1024]; + HCR_GetExecuteCommandW((cmask == SEE_MASK_CLASSKEY) ? psei->hkeyClass : NULL, + (cmask == SEE_MASK_CLASSNAME) ? psei->lpClass : NULL, + psei->lpVerb, + execCmd, sizeof(execCmd)); + + /* FIXME: get the extension of lpFile, check if it fits to the lpClass */ + TRACE("SEE_MASK_CLASSNAME->%s, doc->%s\n", debugstr_w(execCmd), debugstr_w(wszApplicationName)); + + wcmd[0] = '\0'; + done = SHELL_ArgifyW(wcmd, sizeof(wcmd) / sizeof(WCHAR), execCmd, wszApplicationName, (LPITEMIDLIST)psei->lpIDList, NULL, &resultLen); + if (!done && wszApplicationName[0]) + { + strcatW(wcmd, L" "); + if (*wszApplicationName != '"') + { + strcatW(wcmd, L"\""); + strcatW(wcmd, wszApplicationName); + strcatW(wcmd, L"\""); + } + else + strcatW(wcmd, wszApplicationName); + } + if (resultLen > sizeof(wcmd) / sizeof(WCHAR)) + ERR("Argify buffer not large enough... truncating\n"); + return execfunc(wcmd, NULL, FALSE, psei, psei_out); } - if (resultLen > sizeof(wcmd) / sizeof(WCHAR)) - ERR("Argify buffer not large enough... truncating\n"); - return execfunc(wcmd, NULL, FALSE, psei, psei_out); + + strcpyW(classname, psei->lpClass); + rslt = SHELL_FindExecutableByVerb(psei->lpVerb, NULL, classname, execCmd, sizeof(execCmd)); + + TRACE("SHELL_FindExecutableByVerb returned %u (%s, %s)\n", (unsigned int)rslt, debugstr_w(classname), debugstr_w(execCmd)); + if (33 > rslt) + return rslt; + rslt = SHELL_quote_and_execute( execCmd, L"", classname, + wszApplicationName, NULL, psei, + psei_out, execfunc ); + return rslt; + } static BOOL SHELL_translate_idlist(LPSHELLEXECUTEINFOW sei, LPWSTR wszParameters, DWORD parametersLen, LPWSTR wszApplicationName, DWORD dwApplicationNameLen) @@ -1448,7 +1543,7 @@ static BOOL SHELL_translate_idlist(LPSHELLEXECUTEINFOW sei, LPWSTR wszParameters BOOL appKnownSingular = FALSE; /* last chance to translate IDList: now also allow CLSID paths */ - if (SUCCEEDED(SHELL_GetPathFromIDListForExecuteW((LPCITEMIDLIST)sei->lpIDList, buffer, sizeof(buffer)))) { + if (SUCCEEDED(SHELL_GetPathFromIDListForExecuteW((LPCITEMIDLIST)sei->lpIDList, buffer, sizeof(buffer)/sizeof(WCHAR)))) { if (buffer[0] == ':' && buffer[1] == ':') { /* open shell folder for the specified class GUID */ if (strlenW(buffer) + 1 > parametersLen) @@ -1487,7 +1582,7 @@ static BOOL SHELL_translate_idlist(LPSHELLEXECUTEINFOW sei, LPWSTR wszParameters return appKnownSingular; } -static UINT_PTR SHELL_quote_and_execute(LPCWSTR wcmd, LPCWSTR wszParameters, LPCWSTR lpstrProtocol, LPCWSTR wszApplicationName, LPWSTR env, LPSHELLEXECUTEINFOW psei, LPSHELLEXECUTEINFOW psei_out, SHELL_ExecuteW32 execfunc) +static UINT_PTR SHELL_quote_and_execute(LPCWSTR wcmd, LPCWSTR wszParameters, LPCWSTR wszKeyname, LPCWSTR wszApplicationName, LPWSTR env, LPSHELLEXECUTEINFOW psei, LPSHELLEXECUTEINFOW psei_out, SHELL_ExecuteW32 execfunc) { UINT_PTR retval; DWORD len; @@ -1513,17 +1608,17 @@ static UINT_PTR SHELL_quote_and_execute(LPCWSTR wcmd, LPCWSTR wszParameters, LPC strcatW(wszQuotedCmd, wszParameters); } - TRACE("%s/%s => %s/%s\n", debugstr_w(wszApplicationName), debugstr_w(psei->lpVerb), debugstr_w(wszQuotedCmd), debugstr_w(lpstrProtocol)); + TRACE("%s/%s => %s/%s\n", debugstr_w(wszApplicationName), debugstr_w(psei->lpVerb), debugstr_w(wszQuotedCmd), debugstr_w(wszKeyname)); - if (*lpstrProtocol) - retval = execute_from_key(lpstrProtocol, wszApplicationName, env, psei->lpParameters, wcmd, execfunc, psei, psei_out); + if (*wszKeyname) + retval = execute_from_key(wszKeyname, wszApplicationName, env, psei->lpParameters, wcmd, execfunc, psei, psei_out); else retval = execfunc(wszQuotedCmd, env, FALSE, psei, psei_out); HeapFree(GetProcessHeap(), 0, wszQuotedCmd); return retval; } -static UINT_PTR SHELL_execute_url(LPCWSTR lpFile, LPCWSTR wFile, LPCWSTR wcmd, LPSHELLEXECUTEINFOW psei, LPSHELLEXECUTEINFOW psei_out, SHELL_ExecuteW32 execfunc) +static UINT_PTR SHELL_execute_url(LPCWSTR lpFile, LPCWSTR wcmd, LPSHELLEXECUTEINFOW psei, LPSHELLEXECUTEINFOW psei_out, SHELL_ExecuteW32 execfunc) { static const WCHAR wShell[] = L"\\shell\\"; static const WCHAR wCommand[] = L"\\command"; @@ -1540,9 +1635,9 @@ static UINT_PTR SHELL_execute_url(LPCWSTR lpFile, LPCWSTR wFile, LPCWSTR wcmd, L iSize = strlenW(lpFile); TRACE("Got URL: %s\n", debugstr_w(lpFile)); - /* Looking for ...protocol\shell\lpOperation\command */ + /* Looking for ...\shell\\command */ len = iSize + lstrlenW(wShell) + lstrlenW(wCommand) + 1; - if (psei->lpVerb) + if (psei->lpVerb && *psei->lpVerb) len += lstrlenW(psei->lpVerb); else len += lstrlenW(wszOpen); @@ -1550,23 +1645,16 @@ static UINT_PTR SHELL_execute_url(LPCWSTR lpFile, LPCWSTR wFile, LPCWSTR wcmd, L memcpy(lpstrProtocol, lpFile, iSize * sizeof(WCHAR)); lpstrProtocol[iSize] = '\0'; strcatW(lpstrProtocol, wShell); - strcatW(lpstrProtocol, psei->lpVerb ? psei->lpVerb : wszOpen); + strcatW(lpstrProtocol, psei->lpVerb && *psei->lpVerb ? psei->lpVerb : wszOpen); strcatW(lpstrProtocol, wCommand); - /* Remove File Protocol from lpFile */ - /* In the case file://path/file */ - if (!strncmpiW(lpFile, wFile, iSize)) - { - lpFile += iSize; - while (*lpFile == ':') lpFile++; - } retval = execute_from_key(lpstrProtocol, lpFile, NULL, psei->lpParameters, wcmd, execfunc, psei, psei_out); HeapFree(GetProcessHeap(), 0, lpstrProtocol); return retval; } -void do_error_dialog(UINT_PTR retval, HWND hwnd, WCHAR* filename) +static void do_error_dialog(UINT_PTR retval, HWND hwnd, WCHAR* filename) { WCHAR msg[2048]; DWORD_PTR msgArguments[3] = { (DWORD_PTR)filename, 0, 0 }; @@ -1591,7 +1679,7 @@ void do_error_dialog(UINT_PTR retval, HWND hwnd, WCHAR* filename) /************************************************************************* * SHELL_execute [Internal] */ -BOOL SHELL_execute(LPSHELLEXECUTEINFOW sei, SHELL_ExecuteW32 execfunc) +static BOOL SHELL_execute(LPSHELLEXECUTEINFOW sei, SHELL_ExecuteW32 execfunc) { static const DWORD unsupportedFlags = SEE_MASK_INVOKEIDLIST | SEE_MASK_ICON | SEE_MASK_HOTKEY | @@ -1608,7 +1696,7 @@ BOOL SHELL_execute(LPSHELLEXECUTEINFOW sei, SHELL_ExecuteW32 execfunc) SHELLEXECUTEINFOW sei_tmp; /* modifiable copy of SHELLEXECUTEINFO struct */ WCHAR wfileName[MAX_PATH]; WCHAR *env; - WCHAR lpstrProtocol[256]; + WCHAR wszKeyname[256]; LPCWSTR lpFile; UINT_PTR retval = SE_ERR_NOASSOC; BOOL appKnownSingular = FALSE; @@ -1766,36 +1854,40 @@ BOOL SHELL_execute(LPSHELLEXECUTEINFOW sei, SHELL_ExecuteW32 execfunc) dwApplicationNameLen ); } - /* expand environment strings */ - len = ExpandEnvironmentStringsW(sei_tmp.lpFile, NULL, 0); - if (len > 0) + /* convert file URLs */ + if (UrlIsFileUrlW(sei_tmp.lpFile)) { LPWSTR buf; - buf = (LPWSTR)HeapAlloc(GetProcessHeap(), 0, (len + 1) * sizeof(WCHAR)); + DWORD size; + + size = MAX_PATH; + buf = static_cast(HeapAlloc(GetProcessHeap(), 0, size * sizeof(WCHAR))); + if (!buf || FAILED(PathCreateFromUrlW(sei_tmp.lpFile, buf, &size, 0))) + { + HeapFree(GetProcessHeap(), 0, buf); + return SE_ERR_OOM; + } - ExpandEnvironmentStringsW(sei_tmp.lpFile, buf, len + 1); HeapFree(GetProcessHeap(), 0, wszApplicationName); - dwApplicationNameLen = len + 1; + dwApplicationNameLen = lstrlenW(buf) + 1; wszApplicationName = buf; - /* appKnownSingular unmodified */ - sei_tmp.lpFile = wszApplicationName; } - - if (*sei_tmp.lpParameters) + else /* or expand environment strings (not both!) */ { - len = ExpandEnvironmentStringsW(sei_tmp.lpParameters, NULL, 0); + len = ExpandEnvironmentStringsW(sei_tmp.lpFile, NULL, 0); if (len > 0) { LPWSTR buf; - len++; - buf = (LPWSTR)HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)); - ExpandEnvironmentStringsW(sei_tmp.lpParameters, buf, len); - if (wszParameters != parametersBuffer) - HeapFree(GetProcessHeap(), 0, wszParameters); - wszParameters = buf; - parametersLen = len; - sei_tmp.lpParameters = wszParameters; + buf = (LPWSTR)HeapAlloc(GetProcessHeap(), 0, (len + 1) * sizeof(WCHAR)); + + ExpandEnvironmentStringsW(sei_tmp.lpFile, buf, len + 1); + HeapFree(GetProcessHeap(), 0, wszApplicationName); + dwApplicationNameLen = len + 1; + wszApplicationName = buf; + /* appKnownSingular unmodified */ + + sei_tmp.lpFile = wszApplicationName; } } @@ -1849,6 +1941,7 @@ BOOL SHELL_execute(LPSHELLEXECUTEINFOW sei, SHELL_ExecuteW32 execfunc) /* terminate previous command string after the quote character */ *end = L'\0'; + lpFile = wfileName; } else { @@ -1880,13 +1973,11 @@ BOOL SHELL_execute(LPSHELLEXECUTEINFOW sei, SHELL_ExecuteW32 execfunc) } } - lstrcpynW(wfileName, sei_tmp.lpFile, sizeof(wfileName) / sizeof(WCHAR)); + lpFile = sei_tmp.lpFile; } } else - lstrcpynW(wfileName, sei_tmp.lpFile, sizeof(wfileName) / sizeof(WCHAR)); - - lpFile = wfileName; + lpFile = sei_tmp.lpFile; wcmd = wcmdBuffer; len = lstrlenW(wszApplicationName) + 3; @@ -1919,10 +2010,10 @@ BOOL SHELL_execute(LPSHELLEXECUTEINFOW sei, SHELL_ExecuteW32 execfunc) /* Else, try to find the executable */ wcmd[0] = L'\0'; - retval = SHELL_FindExecutable(sei_tmp.lpDirectory, lpFile, sei_tmp.lpVerb, wcmd, wcmdLen, lpstrProtocol, &env, (LPITEMIDLIST)sei_tmp.lpIDList, sei_tmp.lpParameters); + retval = SHELL_FindExecutable(sei_tmp.lpDirectory, lpFile, sei_tmp.lpVerb, wcmd, wcmdLen, wszKeyname, &env, (LPITEMIDLIST)sei_tmp.lpIDList, sei_tmp.lpParameters); if (retval > 32) /* Found */ { - retval = SHELL_quote_and_execute(wcmd, wszParameters, lpstrProtocol, + retval = SHELL_quote_and_execute(wcmd, wszParameters, wszKeyname, wszApplicationName, env, &sei_tmp, sei, execfunc); HeapFree(GetProcessHeap(), 0, env); @@ -1941,7 +2032,7 @@ BOOL SHELL_execute(LPSHELLEXECUTEINFOW sei, SHELL_ExecuteW32 execfunc) { swprintf(lpQuotedFile, L"\"%s\"", lpFile); retval = SHELL_quote_and_execute(wExec, lpQuotedFile, - lpstrProtocol, + wszKeyname, wszApplicationName, env, &sei_tmp, sei, execfunc); HeapFree(GetProcessHeap(), 0, env); @@ -1953,12 +2044,12 @@ BOOL SHELL_execute(LPSHELLEXECUTEINFOW sei, SHELL_ExecuteW32 execfunc) } else if (PathIsURLW(lpFile)) /* File not found, check for URL */ { - retval = SHELL_execute_url(lpFile, L"file", wcmd, &sei_tmp, sei, execfunc ); + retval = SHELL_execute_url(lpFile, wcmd, &sei_tmp, sei, execfunc ); } /* Check if file specified is in the form www.??????.*** */ else if (!strncmpiW(lpFile, L"www", 3)) { - /* if so, append lpFile http:// and call ShellExecute */ + /* if so, prefix lpFile with http:// and call ShellExecute */ WCHAR lpstrTmpFile[256]; strcpyW(lpstrTmpFile, L"http://"); strcatW(lpstrTmpFile, lpFile); @@ -1998,19 +2089,19 @@ BOOL SHELL_execute(LPSHELLEXECUTEINFOW sei, SHELL_ExecuteW32 execfunc) /************************************************************************* * ShellExecuteA [SHELL32.290] */ -HINSTANCE WINAPI ShellExecuteA(HWND hWnd, LPCSTR lpOperation, LPCSTR lpFile, +HINSTANCE WINAPI ShellExecuteA(HWND hWnd, LPCSTR lpVerb, LPCSTR lpFile, LPCSTR lpParameters, LPCSTR lpDirectory, INT iShowCmd) { SHELLEXECUTEINFOA sei; TRACE("%p,%s,%s,%s,%s,%d\n", - hWnd, debugstr_a(lpOperation), debugstr_a(lpFile), + hWnd, debugstr_a(lpVerb), debugstr_a(lpFile), debugstr_a(lpParameters), debugstr_a(lpDirectory), iShowCmd); sei.cbSize = sizeof(sei); sei.fMask = SEE_MASK_FLAG_NO_UI; sei.hwnd = hWnd; - sei.lpVerb = lpOperation; + sei.lpVerb = lpVerb; sei.lpFile = lpFile; sei.lpParameters = lpParameters; sei.lpDirectory = lpDirectory; @@ -2090,10 +2181,10 @@ ShellExecuteExW(LPSHELLEXECUTEINFOW sei) /************************************************************************* * ShellExecuteW [SHELL32.294] * from shellapi.h - * WINSHELLAPI HINSTANCE APIENTRY ShellExecuteW(HWND hwnd, LPCWSTR lpOperation, + * WINSHELLAPI HINSTANCE APIENTRY ShellExecuteW(HWND hwnd, LPCWSTR lpVerb, * LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd); */ -HINSTANCE WINAPI ShellExecuteW(HWND hwnd, LPCWSTR lpOperation, LPCWSTR lpFile, +HINSTANCE WINAPI ShellExecuteW(HWND hwnd, LPCWSTR lpVerb, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd) { SHELLEXECUTEINFOW sei; @@ -2102,7 +2193,7 @@ HINSTANCE WINAPI ShellExecuteW(HWND hwnd, LPCWSTR lpOperation, LPCWSTR lpFile, sei.cbSize = sizeof(sei); sei.fMask = SEE_MASK_FLAG_NO_UI; sei.hwnd = hwnd; - sei.lpVerb = lpOperation; + sei.lpVerb = lpVerb; sei.lpFile = lpFile; sei.lpParameters = lpParameters; sei.lpDirectory = lpDirectory; @@ -2122,14 +2213,14 @@ HINSTANCE WINAPI ShellExecuteW(HWND hwnd, LPCWSTR lpOperation, LPCWSTR lpFile, * * FIXME: the callback function most likely doesn't work the same way on Windows. */ -EXTERN_C HINSTANCE WINAPI WOWShellExecute(HWND hWnd, LPCSTR lpOperation, LPCSTR lpFile, +EXTERN_C HINSTANCE WINAPI WOWShellExecute(HWND hWnd, LPCSTR lpVerb, LPCSTR lpFile, LPCSTR lpParameters, LPCSTR lpDirectory, INT iShowCmd, void *callback) { SHELLEXECUTEINFOW seiW; WCHAR *wVerb = NULL, *wFile = NULL, *wParameters = NULL, *wDirectory = NULL; HANDLE hProcess = 0; - seiW.lpVerb = lpOperation ? __SHCloneStrAtoW(&wVerb, lpOperation) : NULL; + seiW.lpVerb = lpVerb ? __SHCloneStrAtoW(&wVerb, lpVerb) : NULL; seiW.lpFile = lpFile ? __SHCloneStrAtoW(&wFile, lpFile) : NULL; seiW.lpParameters = lpParameters ? __SHCloneStrAtoW(&wParameters, lpParameters) : NULL; seiW.lpDirectory = lpDirectory ? __SHCloneStrAtoW(&wDirectory, lpDirectory) : NULL; From ea89346b76ed8277fc08c37a702564965f402eb8 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Thu, 22 May 2014 19:15:40 +0000 Subject: [PATCH 029/232] [WIN32K] Amendment to r63409. Zap remaining kernel object header access from win32k. Noticed by Hermes. svn path=/trunk/; revision=63416 --- reactos/win32ss/user/ntuser/desktop.h | 5 ----- reactos/win32ss/user/ntuser/winsta.c | 15 ++++++--------- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/reactos/win32ss/user/ntuser/desktop.h b/reactos/win32ss/user/ntuser/desktop.h index 56c721ae212..2dbcaa385fa 100644 --- a/reactos/win32ss/user/ntuser/desktop.h +++ b/reactos/win32ss/user/ntuser/desktop.h @@ -174,11 +174,6 @@ HDC FASTCALL UserGetDesktopDC(ULONG,BOOL,BOOL); #define IntIsActiveDesktop(Desktop) \ ((Desktop)->rpwinstaParent->ActiveDesktop == (Desktop)) -#define GET_DESKTOP_NAME(d) \ - OBJECT_HEADER_TO_NAME_INFO(OBJECT_TO_OBJECT_HEADER(d)) ? \ - &(OBJECT_HEADER_TO_NAME_INFO(OBJECT_TO_OBJECT_HEADER(d))->Name) : \ - NULL - HWND FASTCALL IntGetMessageWindow(VOID); PWND FASTCALL UserGetMessageWindow(VOID); diff --git a/reactos/win32ss/user/ntuser/winsta.c b/reactos/win32ss/user/ntuser/winsta.c index f4fe81a017e..908da59be63 100644 --- a/reactos/win32ss/user/ntuser/winsta.c +++ b/reactos/win32ss/user/ntuser/winsta.c @@ -1210,7 +1210,7 @@ BuildDesktopNameList( DWORD EntryCount; ULONG ReturnLength; WCHAR NullWchar; - PUNICODE_STRING DesktopName; + UNICODE_STRING DesktopName; Status = IntValidateWindowStationHandle(hWindowStation, KernelMode, @@ -1233,8 +1233,8 @@ BuildDesktopNameList( DesktopEntry = DesktopEntry->Flink) { DesktopObject = CONTAINING_RECORD(DesktopEntry, DESKTOP, ListEntry); - DesktopName = GET_DESKTOP_NAME(DesktopObject); - if (DesktopName) ReturnLength += DesktopName->Length + sizeof(WCHAR); + RtlInitUnicodeString(&DesktopName, DesktopObject->pDeskInfo->szDesktopName); + ReturnLength += DesktopName.Length + sizeof(WCHAR); EntryCount++; } TRACE("Required size: %lu Entry count: %lu\n", ReturnLength, EntryCount); @@ -1277,18 +1277,15 @@ BuildDesktopNameList( DesktopEntry = DesktopEntry->Flink) { DesktopObject = CONTAINING_RECORD(DesktopEntry, DESKTOP, ListEntry); - _PRAGMA_WARNING_SUPPRESS(__WARNING_DEREF_NULL_PTR) - DesktopName = GET_DESKTOP_NAME(DesktopObject);/// @todo Don't mess around with the object headers! - if (!DesktopName) continue; - - Status = MmCopyToCaller(lpBuffer, DesktopName->Buffer, DesktopName->Length); + RtlInitUnicodeString(&DesktopName, DesktopObject->pDeskInfo->szDesktopName); + Status = MmCopyToCaller(lpBuffer, DesktopName.Buffer, DesktopName.Length); if (! NT_SUCCESS(Status)) { KeReleaseSpinLock(&WindowStation->Lock, OldLevel); ObDereferenceObject(WindowStation); return Status; } - lpBuffer = (PVOID) ((PCHAR)lpBuffer + DesktopName->Length); + lpBuffer = (PVOID) ((PCHAR)lpBuffer + DesktopName.Length); Status = MmCopyToCaller(lpBuffer, &NullWchar, sizeof(WCHAR)); if (! NT_SUCCESS(Status)) { From 6314cbc84d54ff9ef714d5bb476ac378cd1c5275 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Thu, 22 May 2014 20:59:46 +0000 Subject: [PATCH 030/232] [CRT] * Update _wtmpnam() and tmpnam(). CORE-8080 svn path=/trunk/; revision=63417 --- reactos/lib/sdk/crt/stdio/file.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/reactos/lib/sdk/crt/stdio/file.c b/reactos/lib/sdk/crt/stdio/file.c index 254bf1feaf1..36a01098482 100644 --- a/reactos/lib/sdk/crt/stdio/file.c +++ b/reactos/lib/sdk/crt/stdio/file.c @@ -3718,6 +3718,7 @@ char * CDECL tmpnam(char *s) { size = int_to_base32(tmpnam_unique++, tmpstr); memcpy(p, tmpstr, size); + p[size] = '\0'; if (GetFileAttributesA(s) == INVALID_FILE_ATTRIBUTES && GetLastError() == ERROR_FILE_NOT_FOUND) break; @@ -3749,6 +3750,7 @@ wchar_t * CDECL _wtmpnam(wchar_t *s) { size = int_to_base32_w(tmpnam_unique++, tmpstr); memcpy(p, tmpstr, size*sizeof(wchar_t)); + p[size] = '\0'; if (GetFileAttributesW(s) == INVALID_FILE_ATTRIBUTES && GetLastError() == ERROR_FILE_NOT_FOUND) break; From ccd49a5b8a17ffa2eae3cfa178f128a316c67679 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Thu, 22 May 2014 21:10:16 +0000 Subject: [PATCH 031/232] [CRT] * Update ungetwc(). CORE-8080 svn path=/trunk/; revision=63418 --- reactos/lib/sdk/crt/stdio/file.c | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/reactos/lib/sdk/crt/stdio/file.c b/reactos/lib/sdk/crt/stdio/file.c index 36a01098482..0debf16feaf 100644 --- a/reactos/lib/sdk/crt/stdio/file.c +++ b/reactos/lib/sdk/crt/stdio/file.c @@ -3824,15 +3824,39 @@ int CDECL ungetc(int c, FILE * file) wint_t CDECL ungetwc(wint_t wc, FILE * file) { wchar_t mwc = wc; - char * pp = (char *)&mwc; - int i; + + if (wc == WEOF) + return WEOF; _lock_file(file); - for(i=sizeof(wchar_t)-1;i>=0;i--) { - if(pp[i] != ungetc(pp[i],file)) { + + if((get_ioinfo(file->_file)->exflag & (EF_UTF8 | EF_UTF16)) + || !(get_ioinfo(file->_file)->wxflag & WX_TEXT)) { + unsigned char * pp = (unsigned char *)&mwc; + int i; + + for(i=sizeof(wchar_t)-1;i>=0;i--) { + if(pp[i] != ungetc(pp[i],file)) { + _unlock_file(file); + return WEOF; + } + } + }else { + char mbs[MB_LEN_MAX]; + int len; + + len = wctomb(mbs, mwc); + if(len == -1) { _unlock_file(file); return WEOF; } + + for(len--; len>=0; len--) { + if(mbs[len] != ungetc(mbs[len], file)) { + _unlock_file(file); + return WEOF; + } + } } _unlock_file(file); From df7e3fde891a80edffbadb5dfd1f80d8bbd226d4 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Thu, 22 May 2014 22:28:57 +0000 Subject: [PATCH 032/232] [NTOSKRNL] When a user mode debugger has single stepping enabled and steps over a sysenter instruction, you are obviously not supposed to enter the kernel debugger on the syscall entry handler. But exactly this happened on reactos. This was because the sysenter instruction doesn't disable single stepping, so we need to handle this special case manually in the single stepping handler (which we didn't). We now check if the single step comes from KiFastCallEntry and when it does, disable single stepping in the current (nested) trap frame and return back to a secondary fast call entry. The 2nd entrypoint will make sure to re-enable the single step flag in EFLAGS before returning to usermode. To make this actually work, the asm entry stub itself needs to handle saving of eflags, so some trap frame modification from KiFastCallEntryHandler was moved into the asm stub. Since the amount of asm instructions is rather small (10 instructions, pretty straight forward) I moved everything from KiSystemServiceHandler to the asm stub and killed KiFastCallEntryHandler entirely, calling KiSystemServiceHandler instead. Now stepping over a sysenter instruction works with OllyDbg without breaking into the kernel debugger. CORE-8057 #resolve svn path=/trunk/; revision=63420 --- reactos/include/asm/ks386.template.h | 7 +-- .../ntoskrnl/include/internal/i386/asmmacro.S | 23 +++++++- reactos/ntoskrnl/ke/i386/trap.s | 10 +++- reactos/ntoskrnl/ke/i386/traphdlr.c | 58 +++++++------------ 4 files changed, 53 insertions(+), 45 deletions(-) diff --git a/reactos/include/asm/ks386.template.h b/reactos/include/asm/ks386.template.h index 77085d1bcc4..77ac3f8c306 100644 --- a/reactos/include/asm/ks386.template.h +++ b/reactos/include/asm/ks386.template.h @@ -347,7 +347,7 @@ OFFSET(CONTEXT_SEGSS, CONTEXT, SegSs), //OFFSET(CONTEXT_FLOAT_SAVE_STATUS_WORD CONTEXT_FLOAT_SAVE + FP_STATUS_WORD //OFFSET(CONTEXT_FLOAT_SAVE_TAG_WORD CONTEXT_FLOAT_SAVE + FP_TAG_WORD //OFFSET(CONTEXT_FRAME_LENGTH 0x2D0 -SIZE(CONTEXT_FRAME_LENGTH, CONTEXT), +SIZE(CONTEXT_FRAME_LENGTH, CONTEXT), HEADER("FIBER"), OFFSET(FIBER_PARAMETER, FIBER, Parameter), @@ -387,7 +387,7 @@ OFFSET(EXCEPTION_RECORD_NUMBER_PARAMETERS, EXCEPTION_RECORD, NumberParameters), OFFSET(EXCEPTION_RECORD_EXCEPTION_ADDRESS, EXCEPTION_RECORD, ExceptionAddress), SIZE(SIZEOF_EXCEPTION_RECORD, EXCEPTION_RECORD), CONSTANT(EXCEPTION_RECORD_LENGTH), - + //#define EXCEPTION_RECORD_LENGTH 0x50 HEADER("KTHREAD"), @@ -463,6 +463,5 @@ CONSTANT(EXCEPTION_EXECUTE_HANDLER), CONSTANT(STATUS_CALLBACK_POP_STACK), CONSTANT(CONTEXT_ALIGNED_SIZE), CONSTANT(PROCESSOR_FEATURE_FXSR), - - +CONSTANT(KUSER_SHARED_SYSCALL_RET), diff --git a/reactos/ntoskrnl/include/internal/i386/asmmacro.S b/reactos/ntoskrnl/include/internal/i386/asmmacro.S index 2ab3bdfd6ff..4a6b009d5fc 100644 --- a/reactos/ntoskrnl/include/internal/i386/asmmacro.S +++ b/reactos/ntoskrnl/include/internal/i386/asmmacro.S @@ -83,7 +83,7 @@ MACRO(KiEnterTrap, Flags) if (Flags AND KI_FAST_SYSTEM_CALL) /* SYSENTER requires us to build a complete ring transition trap frame */ - FrameSize = KTRAP_FRAME_V86_ES + FrameSize = KTRAP_FRAME_EIP /* Fixup fs. cx is free to clobber */ mov cx, KGDT_R0_PCR @@ -95,6 +95,13 @@ MACRO(KiEnterTrap, Flags) /* Get a stack pointer */ mov esp, [ecx + KTSS_ESP0] + /* Set up a fake hardware trap frame */ + push KGDT_R3_DATA or RPL_MASK + push edx + pushfd + push KGDT_R3_CODE or RPL_MASK + push dword ptr ds:[KUSER_SHARED_SYSCALL_RET] + elseif (Flags AND KI_SOFTWARE_TRAP) /* Software traps need a complete non-ring transition trap frame */ @@ -183,7 +190,19 @@ set_sane_segs: mov es, ax /* Fast system calls have fs already fixed */ - if (NOT (Flags AND KI_FAST_SYSTEM_CALL)) + if (Flags AND KI_FAST_SYSTEM_CALL) + + /* Enable interrupts and set a sane FS value */ + or dword ptr [esp + KTRAP_FRAME_EFLAGS], EFLAGS_INTERRUPT_MASK + mov dword ptr [esp + KTRAP_FRAME_FS], KGDT_R3_TEB or RPL_MASK + + /* Set sane active EFLAGS */ + push 2 + popfd + + /* Point edx to the usermode parameters */ + add edx, 8 + else /* Otherwise fix fs now */ mov ax, KGDT_R0_PCR mov fs, ax diff --git a/reactos/ntoskrnl/ke/i386/trap.s b/reactos/ntoskrnl/ke/i386/trap.s index 272886d4891..733451d7db3 100644 --- a/reactos/ntoskrnl/ke/i386/trap.s +++ b/reactos/ntoskrnl/ke/i386/trap.s @@ -142,14 +142,20 @@ PUBLIC _KiSystemService KiCallHandler @KiSystemServiceHandler@8 .ENDP -EXTERN @KiFastCallEntryHandler@8:PROC PUBLIC _KiFastCallEntry .PROC _KiFastCallEntry FPO 0, 0, 0, 0, 1, FRAME_TRAP KiEnterTrap (KI_FAST_SYSTEM_CALL OR KI_NONVOLATILES_ONLY OR KI_DONT_SAVE_SEGS) - KiCallHandler @KiFastCallEntryHandler@8 + KiCallHandler @KiSystemServiceHandler@8 .ENDP +PUBLIC _KiFastCallEntryWithSingleStep +.PROC _KiFastCallEntryWithSingleStep + FPO 0, 0, 0, 0, 1, FRAME_TRAP + KiEnterTrap (KI_FAST_SYSTEM_CALL OR KI_NONVOLATILES_ONLY OR KI_DONT_SAVE_SEGS) + or dword ptr [ecx + KTRAP_FRAME_EFLAGS], EFLAGS_TF + KiCallHandler @KiSystemServiceHandler@8 +.ENDP PUBLIC _KiEndUnexpectedRange@0 _KiEndUnexpectedRange@0: diff --git a/reactos/ntoskrnl/ke/i386/traphdlr.c b/reactos/ntoskrnl/ke/i386/traphdlr.c index d98109a21ac..568c4892d42 100644 --- a/reactos/ntoskrnl/ke/i386/traphdlr.c +++ b/reactos/ntoskrnl/ke/i386/traphdlr.c @@ -12,6 +12,9 @@ #define NDEBUG #include +VOID KiFastCallEntry(VOID); +VOID KiFastCallEntryWithSingleStep(VOID); + /* GLOBALS ********************************************************************/ UCHAR KiTrapPrefixTable[] = @@ -417,13 +420,26 @@ KiTrap01Handler(IN PKTRAP_FRAME TrapFrame) { /* Save trap frame */ KiEnterTrap(TrapFrame); - + /* Check for VDM trap */ ASSERT((KiVdmTrap(TrapFrame)) == FALSE); + /* Check if this was a single step after sysenter */ + if (TrapFrame->Eip == (ULONG)KiFastCallEntry) + { + /* Disable single stepping */ + TrapFrame->EFlags &= ~EFLAGS_TF; + + /* Re-enter at the alternative sysenter entry point */ + TrapFrame->Eip = (ULONG)KiFastCallEntryWithSingleStep; + + /* End this trap */ + KiEoiHelper(TrapFrame); + } + /* Enable interrupts if the trap came from user-mode */ if (KiUserTrap(TrapFrame)) _enable(); - + /* Mask out trap flag and dispatch the exception */ TrapFrame->EFlags &= ~EFLAGS_TF; KiDispatchException0Args(STATUS_SINGLE_STEP, @@ -1521,11 +1537,11 @@ KiDbgPostServiceHook(ULONG SystemCallNumber, ULONG_PTR Result) return Result; } -FORCEINLINE DECLSPEC_NORETURN VOID -KiSystemCall(IN PKTRAP_FRAME TrapFrame, - IN PVOID Arguments) +FASTCALL +KiSystemServiceHandler(IN PKTRAP_FRAME TrapFrame, + IN PVOID Arguments) { PKTHREAD Thread; PKSERVICE_TABLE_DESCRIPTOR DescriptorTable; @@ -1658,38 +1674,6 @@ ExitCall: KiServiceExit(TrapFrame, Result); } -DECLSPEC_NORETURN -VOID -FASTCALL -KiSystemServiceHandler(IN PKTRAP_FRAME TrapFrame, - IN PVOID Arguments) -{ - /* Call the shared handler (inline) */ - KiSystemCall(TrapFrame, Arguments); -} - -DECLSPEC_NORETURN -VOID -FASTCALL -KiFastCallEntryHandler(IN PKTRAP_FRAME TrapFrame, - IN PVOID Arguments) -{ - /* Set up a fake INT Stack and enable interrupts */ - TrapFrame->HardwareSegSs = KGDT_R3_DATA | RPL_MASK; - TrapFrame->HardwareEsp = (ULONG_PTR)Arguments; - TrapFrame->EFlags = __readeflags() | EFLAGS_INTERRUPT_MASK; - TrapFrame->SegCs = KGDT_R3_CODE | RPL_MASK; - TrapFrame->Eip = SharedUserData->SystemCallReturn; - TrapFrame->SegFs = KGDT_R3_TEB | RPL_MASK; - __writeeflags(0x2); - - /* Arguments are actually 2 frames down (because of the double indirection) */ - Arguments = (PVOID)(TrapFrame->HardwareEsp + 8); - - /* Call the shared handler (inline) */ - KiSystemCall(TrapFrame, Arguments); -} - /* * @implemented */ From 15accf6c001f7e5d5843306161a979640e7a510e Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Thu, 22 May 2014 23:31:39 +0000 Subject: [PATCH 033/232] [USETUP] - ScanForUnpartitionedDiskSpace: Scan the list of logical partitions for unpartitioned space too. - Fix a little typo. svn path=/trunk/; revision=63421 --- reactos/base/setup/usetup/lang/en-US.h | 2 +- reactos/base/setup/usetup/partlist.c | 122 ++++++++++++++++++++++++- 2 files changed, 122 insertions(+), 2 deletions(-) diff --git a/reactos/base/setup/usetup/lang/en-US.h b/reactos/base/setup/usetup/lang/en-US.h index 6788c36bfb2..23cdcebee74 100644 --- a/reactos/base/setup/usetup/lang/en-US.h +++ b/reactos/base/setup/usetup/lang/en-US.h @@ -1725,7 +1725,7 @@ MUI_STRING enUSStrings[] = {STRING_NEWPARTITION, "Setup created a new partition on"}, {STRING_UNPSPACE, - " %sUnpartitioned space%s %6lu %s"}, + " %sUnpartitioned space%s %6lu %s"}, {STRING_MAXSIZE, "MB (max. %lu MB)"}, {STRING_EXTENDED_PARTITION, diff --git a/reactos/base/setup/usetup/partlist.c b/reactos/base/setup/usetup/partlist.c index 051d02c5b7f..61b93a2582f 100644 --- a/reactos/base/setup/usetup/partlist.c +++ b/reactos/base/setup/usetup/partlist.c @@ -530,7 +530,8 @@ AddPartitionToDisk( PPARTENTRY PartEntry; PartitionInfo = &DiskEntry->LayoutBuffer->PartitionEntry[PartitionIndex]; - if (PartitionInfo->PartitionType == 0) + if (PartitionInfo->PartitionType == 0 || + (LogicalPartition == TRUE && IsContainerPartition(PartitionInfo->PartitionType))) return; PartEntry = RtlAllocateHeap(ProcessHeap, @@ -752,6 +753,125 @@ DPRINT1("Total Sectors: %I64u\n", NewPartEntry->SectorCount.QuadPart); } } + if (DiskEntry->ExtendedPartition != NULL) + { + if (IsListEmpty(&DiskEntry->LogicalPartListHead)) + { + DPRINT1("No logical partition!\n"); + + /* Create a partition table entry that represents the empty extended partition */ + NewPartEntry = RtlAllocateHeap(ProcessHeap, + HEAP_ZERO_MEMORY, + sizeof(PARTENTRY)); + if (NewPartEntry == NULL) + return; + + NewPartEntry->DiskEntry = DiskEntry; + NewPartEntry->LogicalPartition = TRUE; + + NewPartEntry->IsPartitioned = FALSE; + NewPartEntry->StartSector.QuadPart = DiskEntry->ExtendedPartition->StartSector.QuadPart + (ULONGLONG)DiskEntry->SectorsPerTrack; + NewPartEntry->SectorCount.QuadPart = DiskEntry->ExtendedPartition->SectorCount.QuadPart - (ULONGLONG)DiskEntry->SectorsPerTrack; + + DPRINT1("First Sector: %I64u\n", NewPartEntry->StartSector.QuadPart); + DPRINT1("Last Sector: %I64u\n", NewPartEntry->StartSector.QuadPart + NewPartEntry->SectorCount.QuadPart - 1); + DPRINT1("Total Sectors: %I64u\n", NewPartEntry->SectorCount.QuadPart); + + NewPartEntry->FormatState = Unformatted; + + InsertTailList(&DiskEntry->LogicalPartListHead, + &NewPartEntry->ListEntry); + + return; + } + + /* Start partition at head 1, cylinder 0 */ + LastStartSector = DiskEntry->ExtendedPartition->StartSector.QuadPart + (ULONGLONG)DiskEntry->SectorsPerTrack; + LastSectorCount = 0ULL; + LastUnusedSectorCount = 0ULL; + + Entry = DiskEntry->LogicalPartListHead.Flink; + while (Entry != &DiskEntry->LogicalPartListHead) + { + PartEntry = CONTAINING_RECORD(Entry, PARTENTRY, ListEntry); + + if (PartEntry->PartitionType != PARTITION_ENTRY_UNUSED || + PartEntry->SectorCount.QuadPart != 0ULL) + { + LastUnusedSectorCount = + PartEntry->StartSector.QuadPart - (ULONGLONG)DiskEntry->SectorsPerTrack - (LastStartSector + LastSectorCount); + + if ((PartEntry->StartSector.QuadPart - (ULONGLONG)DiskEntry->SectorsPerTrack) > (LastStartSector + LastSectorCount) && + LastUnusedSectorCount >= (ULONGLONG)DiskEntry->SectorAlignment) + { + DPRINT("Unpartitioned disk space %I64u sectors\n", LastUnusedSectorCount); + + NewPartEntry = RtlAllocateHeap(ProcessHeap, + HEAP_ZERO_MEMORY, + sizeof(PARTENTRY)); + if (NewPartEntry == NULL) + return; + + NewPartEntry->DiskEntry = DiskEntry; + NewPartEntry->LogicalPartition = TRUE; + + NewPartEntry->IsPartitioned = FALSE; + NewPartEntry->StartSector.QuadPart = LastStartSector + LastSectorCount; + NewPartEntry->SectorCount.QuadPart = Align(NewPartEntry->StartSector.QuadPart + LastUnusedSectorCount, DiskEntry->SectorAlignment) - + NewPartEntry->StartSector.QuadPart; +DPRINT1("First Sector: %I64u\n", NewPartEntry->StartSector.QuadPart); +DPRINT1("Last Sector: %I64u\n", NewPartEntry->StartSector.QuadPart + NewPartEntry->SectorCount.QuadPart - 1); +DPRINT1("Total Sectors: %I64u\n", NewPartEntry->SectorCount.QuadPart); + + NewPartEntry->FormatState = Unformatted; + + /* Insert the table into the list */ + InsertTailList(&PartEntry->ListEntry, + &NewPartEntry->ListEntry); + } + + LastStartSector = PartEntry->StartSector.QuadPart; + LastSectorCount = PartEntry->SectorCount.QuadPart; + } + + Entry = Entry->Flink; + } + + /* Check for trailing unpartitioned disk space */ + if ((LastStartSector + LastSectorCount) < DiskEntry->ExtendedPartition->StartSector.QuadPart + DiskEntry->ExtendedPartition->SectorCount.QuadPart) + { + LastUnusedSectorCount = Align(DiskEntry->ExtendedPartition->StartSector.QuadPart + DiskEntry->ExtendedPartition->SectorCount.QuadPart - (LastStartSector + LastSectorCount), DiskEntry->SectorAlignment); + + if (LastUnusedSectorCount >= (ULONGLONG)DiskEntry->SectorAlignment) + { + DPRINT("Unpartitioned disk space: %I64u sectors\n", LastUnusedSectorCount); + + NewPartEntry = RtlAllocateHeap(ProcessHeap, + HEAP_ZERO_MEMORY, + sizeof(PARTENTRY)); + if (NewPartEntry == NULL) + return; + + NewPartEntry->DiskEntry = DiskEntry; + NewPartEntry->LogicalPartition = TRUE; + + NewPartEntry->IsPartitioned = FALSE; + NewPartEntry->StartSector.QuadPart = LastStartSector + LastSectorCount; + NewPartEntry->SectorCount.QuadPart = Align(NewPartEntry->StartSector.QuadPart + LastUnusedSectorCount, DiskEntry->SectorAlignment) - + NewPartEntry->StartSector.QuadPart; +DPRINT1("First Sector: %I64u\n", NewPartEntry->StartSector.QuadPart); +DPRINT1("Last Sector: %I64u\n", NewPartEntry->StartSector.QuadPart + NewPartEntry->SectorCount.QuadPart - 1); +DPRINT1("Total Sectors: %I64u\n", NewPartEntry->SectorCount.QuadPart); + + NewPartEntry->FormatState = Unformatted; + + /* Append the table to the list */ + InsertTailList(&DiskEntry->LogicalPartListHead, + &NewPartEntry->ListEntry); + } + } + } + DPRINT1("ScanForUnpartitionedDiskSpace() done\n"); } From b3a2dbfc9a70150c6d5793e3af7930117f02c56e Mon Sep 17 00:00:00 2001 From: Christoph von Wittich Date: Fri, 23 May 2014 17:14:39 +0000 Subject: [PATCH 034/232] [shell32] revert one line of r63414 svn path=/trunk/; revision=63423 --- reactos/dll/win32/shell32/shlexec.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/dll/win32/shell32/shlexec.cpp b/reactos/dll/win32/shell32/shlexec.cpp index 76929844d6a..717117a56bd 100644 --- a/reactos/dll/win32/shell32/shlexec.cpp +++ b/reactos/dll/win32/shell32/shlexec.cpp @@ -459,7 +459,7 @@ static UINT_PTR SHELL_ExecuteW(const WCHAR *lpCmd, WCHAR *env, BOOL shWait, startup.dwFlags = STARTF_USESHOWWINDOW; startup.wShowWindow = psei->nShow; dwCreationFlags = CREATE_UNICODE_ENVIRONMENT; - if (!(psei->fMask & SEE_MASK_NO_CONSOLE)) + if (psei->fMask & SEE_MASK_NO_CONSOLE) dwCreationFlags |= CREATE_NEW_CONSOLE; startup.lpTitle = (LPWSTR)(psei->fMask & (SEE_MASK_HASLINKNAME | SEE_MASK_HASTITLE) ? psei->lpClass : NULL); From a65891147dfdcf90a238ba4def266fe15f2e6491 Mon Sep 17 00:00:00 2001 From: Christoph von Wittich Date: Fri, 23 May 2014 17:28:39 +0000 Subject: [PATCH 035/232] [shell32] set first verb as default fixes opening control panel applets by double click svn path=/trunk/; revision=63424 --- reactos/dll/win32/shell32/defcontextmenu.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/reactos/dll/win32/shell32/defcontextmenu.cpp b/reactos/dll/win32/shell32/defcontextmenu.cpp index 6c5b2b84bee..2de0965d002 100644 --- a/reactos/dll/win32/shell32/defcontextmenu.cpp +++ b/reactos/dll/win32/shell32/defcontextmenu.cpp @@ -600,8 +600,13 @@ CDefaultContextMenu::AddStaticContextMenusToMenu( fState = MFS_ENABLED; mii.dwTypeData = NULL; + /* set first entry as default */ + if (pEntry == m_pStaticEntries) + fState |= MFS_DEFAULT; + if (!wcsicmp(pEntry->szVerb, L"open")) { + /* override default when open verb is found */ fState |= MFS_DEFAULT; idResource = IDS_OPEN_VERB; } From dd379d872b94f0fa766223ea26bb0c934f8f5fe0 Mon Sep 17 00:00:00 2001 From: Sylvain Petreolle Date: Fri, 23 May 2014 19:31:23 +0000 Subject: [PATCH 036/232] [TXTSETUP] Install wmilib. Dedicated to Timo. ;) svn path=/trunk/; revision=63425 --- reactos/boot/bootdata/txtsetup.sif | 1 + 1 file changed, 1 insertion(+) diff --git a/reactos/boot/bootdata/txtsetup.sif b/reactos/boot/bootdata/txtsetup.sif index 555365a0642..a721eea20ad 100644 --- a/reactos/boot/bootdata/txtsetup.sif +++ b/reactos/boot/bootdata/txtsetup.sif @@ -59,6 +59,7 @@ pcix.sys=,,,,,,,,,,,,4 pcmcia.sys=,,,,,,,,,,,,4 swenum.sys=,,,,,,,,,,,,4 ntdll.dll=,,,,,,,,,,,,2 +wmilib.sys=,,,,,,,,,,,,4 [HardwareIdsDatabase] ;*PNP0A00 = isapnp From a85003772538ed70010cfce1b9133371b8a47563 Mon Sep 17 00:00:00 2001 From: Christoph von Wittich Date: Sat, 24 May 2014 06:44:22 +0000 Subject: [PATCH 037/232] [shell32] sync _SHGetUserProfilePath with wine svn path=/trunk/; revision=63427 --- reactos/dll/win32/shell32/shellpath.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/reactos/dll/win32/shell32/shellpath.cpp b/reactos/dll/win32/shell32/shellpath.cpp index de7e7e72ef7..7d2c2f0d8bb 100644 --- a/reactos/dll/win32/shell32/shellpath.cpp +++ b/reactos/dll/win32/shell32/shellpath.cpp @@ -1171,6 +1171,11 @@ static HRESULT _SHGetUserProfilePath(HANDLE hToken, DWORD dwFlags, BYTE folder, if (dwFlags & SHGFP_TYPE_DEFAULT) { + if (hToken != NULL && hToken != (HANDLE)-1) + { + FIXME("unsupported for user other than current or default\n"); + return E_FAIL; + } hr = _SHGetDefaultValue(folder, pszPath); } else From 229b404fdeb646fef93a70129bf11410d49b00f1 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sat, 24 May 2014 09:53:24 +0000 Subject: [PATCH 038/232] =?UTF-8?q?[DDRAW]=20Avoid=20buffer=20overrun=20in?= =?UTF-8?q?=20IDirectDraw::GetCaps.=20Patch=20by=20J=C3=A9r=C3=B4me=20Gard?= =?UTF-8?q?ou.=20CORE-4623=20#resolve?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit svn path=/trunk/; revision=63428 --- reactos/dll/directx/ddraw/Ddraw/GetCaps.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/reactos/dll/directx/ddraw/Ddraw/GetCaps.c b/reactos/dll/directx/ddraw/Ddraw/GetCaps.c index fa0316609dd..ba45e683534 100644 --- a/reactos/dll/directx/ddraw/Ddraw/GetCaps.c +++ b/reactos/dll/directx/ddraw/Ddraw/GetCaps.c @@ -101,7 +101,7 @@ Main_DirectDraw_GetCaps( LPDDRAWI_DIRECTDRAW_INT This, LPDDCAPS pDriverCaps, if (CoreCaps->dwSize == sizeof(DDCORECAPS)) { - memcpy(&myCaps->dwCaps, &CoreCaps->dwCaps, sizeof(DDCAPS_DX3)); + memcpy(myCaps, CoreCaps, sizeof(DDCAPS_DX3)); } myCaps->dwVidMemFree = dwFree; @@ -126,7 +126,7 @@ Main_DirectDraw_GetCaps( LPDDRAWI_DIRECTDRAW_INT This, LPDDCAPS pDriverCaps, if (CoreCaps->dwSize == sizeof(DDCORECAPS)) { - memcpy(&myCaps->dwCaps, &CoreCaps->dwCaps, sizeof(DDCORECAPS)); + memcpy(myCaps, CoreCaps, sizeof(DDCORECAPS)); } myCaps->dwVidMemFree = dwFree; @@ -152,7 +152,7 @@ Main_DirectDraw_GetCaps( LPDDRAWI_DIRECTDRAW_INT This, LPDDCAPS pDriverCaps, if (CoreCaps->dwSize == sizeof(DDCORECAPS)) { - memcpy(&myCaps->dwCaps, &CoreCaps->dwCaps, sizeof(DDCORECAPS)); + memcpy(myCaps, CoreCaps, sizeof(DDCORECAPS)); } myCaps->dwVidMemFree = dwFree; @@ -208,7 +208,7 @@ Main_DirectDraw_GetCaps( LPDDRAWI_DIRECTDRAW_INT This, LPDDCAPS pDriverCaps, if (CoreCaps->dwSize == sizeof(DDCORECAPS)) { - memcpy(&myCaps->dwCaps, &CoreCaps->dwCaps, sizeof(DDCAPS_DX3)); + memcpy(myCaps, CoreCaps, sizeof(DDCAPS_DX3)); } myCaps->dwVidMemFree = dwFree; @@ -233,7 +233,7 @@ Main_DirectDraw_GetCaps( LPDDRAWI_DIRECTDRAW_INT This, LPDDCAPS pDriverCaps, if (CoreCaps->dwSize == sizeof(DDCORECAPS)) { - memcpy(&myCaps->dwCaps, &CoreCaps->dwCaps, sizeof(DDCORECAPS)); + memcpy(myCaps, CoreCaps, sizeof(DDCORECAPS)); } myCaps->dwVidMemFree = dwFree; @@ -259,7 +259,7 @@ Main_DirectDraw_GetCaps( LPDDRAWI_DIRECTDRAW_INT This, LPDDCAPS pDriverCaps, if (CoreCaps->dwSize == sizeof(DDCORECAPS)) { - memcpy(&myCaps->dwCaps, &CoreCaps->dwCaps, sizeof(DDCORECAPS)); + memcpy(myCaps, CoreCaps, sizeof(DDCORECAPS)); } myCaps->dwVidMemFree = dwFree; From bc9a62248c476f25b1a7d3c2944a38bb43b06ae1 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sat, 24 May 2014 10:19:01 +0000 Subject: [PATCH 039/232] [MAGNIFY] Update display even when mouse does not move. Patch by Andrea Faulds. CORE-4739 #comment Committed in r63429, thanks. #resolve svn path=/trunk/; revision=63429 --- reactos/base/applications/magnify/magnifier.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/reactos/base/applications/magnify/magnifier.c b/reactos/base/applications/magnify/magnifier.c index 856bf0160d7..8d8bec5b35c 100644 --- a/reactos/base/applications/magnify/magnifier.c +++ b/reactos/base/applications/magnify/magnifier.c @@ -353,22 +353,20 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) //Update to new position pMouse = pNewMouse; cp = pNewMouse; - Refresh(); } else if (((pCaret.x != pNewCaret.x) || (pCaret.y != pNewCaret.y)) && bFollowCaret) { //Update to new position pCaret = pNewCaret; cp = pNewCaret; - Refresh(); } else if (((pFocus.x != pNewFocus.x) || (pFocus.y != pNewFocus.y)) && bFollowFocus) { //Update to new position pFocus = pNewFocus; cp = pNewFocus; - Refresh(); } + Refresh(); } break; case WM_COMMAND: From 12bcab448a4277e5333953a1c192da6d2ab2c78f Mon Sep 17 00:00:00 2001 From: Christoph von Wittich Date: Sat, 24 May 2014 16:39:55 +0000 Subject: [PATCH 040/232] [shell32] revert the revert, my wine version was outdated svn path=/trunk/; revision=63430 --- reactos/dll/win32/shell32/shlexec.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/dll/win32/shell32/shlexec.cpp b/reactos/dll/win32/shell32/shlexec.cpp index 717117a56bd..76929844d6a 100644 --- a/reactos/dll/win32/shell32/shlexec.cpp +++ b/reactos/dll/win32/shell32/shlexec.cpp @@ -459,7 +459,7 @@ static UINT_PTR SHELL_ExecuteW(const WCHAR *lpCmd, WCHAR *env, BOOL shWait, startup.dwFlags = STARTF_USESHOWWINDOW; startup.wShowWindow = psei->nShow; dwCreationFlags = CREATE_UNICODE_ENVIRONMENT; - if (psei->fMask & SEE_MASK_NO_CONSOLE) + if (!(psei->fMask & SEE_MASK_NO_CONSOLE)) dwCreationFlags |= CREATE_NEW_CONSOLE; startup.lpTitle = (LPWSTR)(psei->fMask & (SEE_MASK_HASLINKNAME | SEE_MASK_HASTITLE) ? psei->lpClass : NULL); From 59af32287db72bd132b44fa660d9a42313fe67dd Mon Sep 17 00:00:00 2001 From: Christoph von Wittich Date: Sun, 25 May 2014 08:28:51 +0000 Subject: [PATCH 041/232] [powerprof] fix some typos in comments svn path=/trunk/; revision=63435 --- reactos/dll/win32/powrprof/powrprof.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/reactos/dll/win32/powrprof/powrprof.c b/reactos/dll/win32/powrprof/powrprof.c index 8feff109ab2..e449088f859 100644 --- a/reactos/dll/win32/powrprof/powrprof.c +++ b/reactos/dll/win32/powrprof/powrprof.c @@ -64,7 +64,7 @@ CallNtPowerInformation(POWER_INFORMATION_LEVEL InformationLevel, { BOOLEAN old; - //Lohnegrim: In order to get the right results, we have to ajust our Privilegs + //Lohnegrim: In order to get the right results, we have to adjust our Privileges RtlAdjustPrivilege(SE_SHUTDOWN_PRIVILEGE, TRUE, FALSE, &old); RtlAdjustPrivilege(SE_CREATE_PAGEFILE_PRIVILEGE, TRUE, FALSE, &old); @@ -332,7 +332,7 @@ GetCurrentPowerPolicies(PGLOBAL_POWER_POLICY pGlobalPowerPolicy, return FALSE; */ /* - Lohnegrim: I dont know why this Function shoud call NtPowerInformation, becouse as far as i know, + Lohnegrim: I don't know why this Function should call NtPowerInformation, because as far as I know, it simply returns the GlobalPowerPolicy and the AktivPowerScheme! */ UINT uiID; @@ -793,8 +793,8 @@ static BOOLEAN CheckPowerActionPolicy(PPOWER_ACTION_POLICY pPAP, SYSTEM_POWER_CAPABILITIES PowerCaps) { /* - Lohnegrim: this is an Helperfunction, it checks if the POWERACTIONPOLICY is valid - Also, if the System dosn't support Hipernation, then change the PowerAction + Lohnegrim: this is an Helper function, it checks if the POWERACTIONPOLICY is valid + Also, if the System doesn't support Hibernation, then change the PowerAction */ switch (pPAP->Action) { @@ -829,7 +829,7 @@ CheckPowerActionPolicy(PPOWER_ACTION_POLICY pPAP, SYSTEM_POWER_CAPABILITIES Powe static VOID FixSystemPowerState(PSYSTEM_POWER_STATE Psps, SYSTEM_POWER_CAPABILITIES PowerCaps) { - //Lohnegrim: If the System dosn't support the Powerstates, then we have to change them + //Lohnegrim: If the System doesn't support the Powerstates, then we have to change them if (!PowerCaps.SystemS1 && *Psps == PowerSystemSleeping1) *Psps = PowerSystemSleeping2; if (!PowerCaps.SystemS2 && *Psps == PowerSystemSleeping2) @@ -923,7 +923,7 @@ ValidatePowerPolicies(PGLOBAL_POWER_POLICY pGPP, PPOWER_POLICY pPP) if (pGPP->mach.BroadcastCapacityResolution > 100) pGPP->mach.BroadcastCapacityResolution = 100; - //Lohnegrim: I have no idear, if they are realy needed, or if they are spezific for my System, or what they mean, so i removed them + //Lohnegrim: I have no idea, if they are really needed, or if they are specific for my System, or what they mean, so I removed them //pGPP->user.DischargePolicy[1].PowerPolicy.EventCode = pGPP->user.DischargePolicy[1].PowerPolicy.EventCode | 0x010000; //pGPP->user.DischargePolicy[2].PowerPolicy.EventCode = pGPP->user.DischargePolicy[2].PowerPolicy.EventCode | 0x020000; //pGPP->user.DischargePolicy[3].PowerPolicy.EventCode = pGPP->user.DischargePolicy[3].PowerPolicy.EventCode | 0x030000; @@ -1053,7 +1053,7 @@ ValidatePowerPolicies(PGLOBAL_POWER_POLICY pGPP, PPOWER_POLICY pPP) pPP->user.MaxSleepAc=PowerSystemSleeping1; pPP->user.MaxSleepDc=PowerSystemSleeping1; } - //Lohnegrim: I dont know where to get this info from, so i removed it + //Lohnegrim: I don't know where to get this info from, so I removed it //pPP->user.OptimizeForPowerAc=TRUE; //pPP->user.OptimizeForPowerDc=TRUE; From ce1a5160ecbce4af509718142561d1b598ea3da3 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sun, 25 May 2014 10:21:08 +0000 Subject: [PATCH 042/232] [NTOSKRNL] Add SEH to LpcpCreatePort and NtAcceptConnectPort. Based on patches by Aleksander Andrejevic ([TheFlash]) CORE-7156 #resolve CORE-7371 #comment SEH still missing in NtSecureConnectPort, NtReplyPort, NtReplyWaitReceivePortEx, NtRequestPort svn path=/trunk/; revision=63436 --- reactos/ntoskrnl/lpc/complete.c | 136 ++++++++++++++++++++++++++------ reactos/ntoskrnl/lpc/create.c | 55 ++++++++++++- 2 files changed, 162 insertions(+), 29 deletions(-) diff --git a/reactos/ntoskrnl/lpc/complete.c b/reactos/ntoskrnl/lpc/complete.c index 5134757f269..0f9f7f27682 100644 --- a/reactos/ntoskrnl/lpc/complete.c +++ b/reactos/ntoskrnl/lpc/complete.c @@ -55,6 +55,8 @@ NtAcceptConnectPort(OUT PHANDLE PortHandle, PEPROCESS ClientProcess; PETHREAD ClientThread; LARGE_INTEGER SectionOffset; + CLIENT_ID ClientId; + ULONG MessageId; PAGED_CODE(); LPCTRACE(LPC_COMPLETE_DEBUG, "Context: %p. Message: %p. Accept: %lx. Views: %p/%p\n", @@ -64,22 +66,81 @@ NtAcceptConnectPort(OUT PHANDLE PortHandle, ClientView, ServerView); - /* Validate the size of the server view */ - if ((ServerView) && (ServerView->Length != sizeof(PORT_VIEW))) + /* Check if the call comes from user mode */ + if (PreviousMode != KernelMode) { - /* Invalid size */ - return STATUS_INVALID_PARAMETER; - } + /* Enter SEH for probing the parameters */ + _SEH2_TRY + { + ProbeForWriteHandle(PortHandle); - /* Validate the size of the client view */ - if ((ClientView) && (ClientView->Length != sizeof(REMOTE_PORT_VIEW))) + /* Probe the basic ReplyMessage structure */ + ProbeForRead(ReplyMessage, sizeof(PORT_MESSAGE), sizeof(ULONG)); + + /* Grab some values */ + ClientId = ReplyMessage->ClientId; + MessageId = ReplyMessage->MessageId; + ConnectionInfoLength = ReplyMessage->u1.s1.DataLength; + + /* Probe the connection info */ + ProbeForRead(ReplyMessage + 1, ConnectionInfoLength, 1); + + /* The following parameters are optional */ + if (ServerView != NULL) + { + ProbeForWrite(ServerView, sizeof(PORT_VIEW), sizeof(ULONG)); + + /* Validate the size of the server view */ + if (ServerView->Length != sizeof(PORT_VIEW)) + { + /* Invalid size */ + _SEH2_YIELD(return STATUS_INVALID_PARAMETER); + } + } + + if (ClientView != NULL) + { + ProbeForWrite(ClientView, sizeof(REMOTE_PORT_VIEW), sizeof(ULONG)); + + /* Validate the size of the client view */ + if (ClientView->Length != sizeof(REMOTE_PORT_VIEW)) + { + /* Invalid size */ + _SEH2_YIELD(return STATUS_INVALID_PARAMETER); + } + } + } + _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) + { + /* There was an exception, return the exception code */ + _SEH2_YIELD(return _SEH2_GetExceptionCode()); + } + _SEH2_END; + } + else { - /* Invalid size */ - return STATUS_INVALID_PARAMETER; + /* Grab some values */ + ClientId = ReplyMessage->ClientId; + MessageId = ReplyMessage->MessageId; + ConnectionInfoLength = ReplyMessage->u1.s1.DataLength; + + /* Validate the size of the server view */ + if ((ServerView) && (ServerView->Length != sizeof(PORT_VIEW))) + { + /* Invalid size */ + return STATUS_INVALID_PARAMETER; + } + + /* Validate the size of the client view */ + if ((ClientView) && (ClientView->Length != sizeof(REMOTE_PORT_VIEW))) + { + /* Invalid size */ + return STATUS_INVALID_PARAMETER; + } } /* Get the client process and thread */ - Status = PsLookupProcessThreadByCid(&ReplyMessage->ClientId, + Status = PsLookupProcessThreadByCid(&ClientId, &ClientProcess, &ClientThread); if (!NT_SUCCESS(Status)) return Status; @@ -89,8 +150,8 @@ NtAcceptConnectPort(OUT PHANDLE PortHandle, /* Make sure that the client wants a reply, and this is the right one */ if (!(LpcpGetMessageFromThread(ClientThread)) || - !(ReplyMessage->MessageId) || - (ClientThread->LpcReplyMessageId != ReplyMessage->MessageId)) + !(MessageId) || + (ClientThread->LpcReplyMessageId != MessageId)) { /* Not the reply asked for, or no reply wanted, fail */ KeReleaseGuardedMutex(&LpcpLock); @@ -125,8 +186,7 @@ NtAcceptConnectPort(OUT PHANDLE PortHandle, ConnectMessage->ClientPort = NULL; KeReleaseGuardedMutex(&LpcpLock); - /* Get the connection information length */ - ConnectionInfoLength = ReplyMessage->u1.s1.DataLength; + /* Check the connection information length */ if (ConnectionInfoLength > ConnectionPort->MaxConnectionInfoLength) { /* Normalize it since it's too large */ @@ -142,16 +202,26 @@ NtAcceptConnectPort(OUT PHANDLE PortHandle, /* Setup the reply message */ Message->Request.u2.s2.Type = LPC_REPLY; Message->Request.u2.s2.DataInfoOffset = 0; - Message->Request.ClientId = ReplyMessage->ClientId; - Message->Request.MessageId = ReplyMessage->MessageId; + Message->Request.ClientId = ClientId; + Message->Request.MessageId = MessageId; Message->Request.ClientViewSize = 0; - RtlCopyMemory(ConnectMessage + 1, ReplyMessage + 1, ConnectionInfoLength); + + _SEH2_TRY + { + RtlCopyMemory(ConnectMessage + 1, ReplyMessage + 1, ConnectionInfoLength); + } + _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) + { + Status = _SEH2_GetExceptionCode(); + _SEH2_YIELD(goto Cleanup); + } + _SEH2_END; /* At this point, if the caller refused the connection, go to cleanup */ if (!AcceptConnection) { DPRINT1("LPC connection was refused\n"); - goto Cleanup; + goto Cleanup; } /* Otherwise, create the actual port */ @@ -259,16 +329,30 @@ NtAcceptConnectPort(OUT PHANDLE PortHandle, goto Cleanup; } - /* Check if the caller gave a client view */ - if (ClientView) + /* Enter SEH to write back the results */ + _SEH2_TRY { - /* Fill it out */ - ClientView->ViewBase = ConnectMessage->ClientView.ViewRemoteBase; - ClientView->ViewSize = ConnectMessage->ClientView.ViewSize; - } + /* Check if the caller gave a client view */ + if (ClientView) + { + /* Fill it out */ + ClientView->ViewBase = ConnectMessage->ClientView.ViewRemoteBase; + ClientView->ViewSize = ConnectMessage->ClientView.ViewSize; + } + + /* Return the handle to user mode */ + *PortHandle = Handle; + } + _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) + { + /* Cleanup and return the exception code */ + ObCloseHandle(Handle, UserMode); + ObDereferenceObject(ServerPort); + Status = _SEH2_GetExceptionCode(); + _SEH2_YIELD(goto Cleanup); + } + _SEH2_END; - /* Return the handle to user mode */ - *PortHandle = Handle; LPCTRACE(LPC_COMPLETE_DEBUG, "Handle: %p. Messages: %p/%p. Ports: %p/%p/%p\n", Handle, diff --git a/reactos/ntoskrnl/lpc/create.c b/reactos/ntoskrnl/lpc/create.c index b4fb88589e9..10ab79023b9 100644 --- a/reactos/ntoskrnl/lpc/create.c +++ b/reactos/ntoskrnl/lpc/create.c @@ -49,9 +49,44 @@ LpcpCreatePort(OUT PHANDLE PortHandle, KPROCESSOR_MODE PreviousMode = KeGetPreviousMode(); NTSTATUS Status; PLPCP_PORT_OBJECT Port; + HANDLE Handle; + PUNICODE_STRING ObjectName; + BOOLEAN NoName; PAGED_CODE(); LPCTRACE(LPC_CREATE_DEBUG, "Name: %wZ\n", ObjectAttributes->ObjectName); + /* Check if the call comes from user mode */ + if (PreviousMode != KernelMode) + { + _SEH2_TRY + { + /* Probe the PortHandle */ + ProbeForWriteHandle(PortHandle); + + /* Probe the ObjectAttributes */ + ProbeForRead(ObjectAttributes, sizeof(OBJECT_ATTRIBUTES), sizeof(ULONG)); + + /* Get the object name and probe the unicode string */ + ObjectName = ObjectAttributes->ObjectName; + ProbeForRead(ObjectName, sizeof(UNICODE_STRING), 1); + + /* Check if we have no name */ + NoName = (ObjectName->Buffer == NULL) || (ObjectName->Length == 0); + } + _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) + { + /* Return the exception code */ + _SEH2_YIELD(return _SEH2_GetExceptionCode()); + } + _SEH2_END; + } + else + { + /* Check if we have no name */ + NoName = (ObjectAttributes->ObjectName->Buffer == NULL) || + (ObjectAttributes->ObjectName->Length == 0); + } + /* Create the Object */ Status = ObCreateObject(PreviousMode, LpcPortObjectType, @@ -72,7 +107,7 @@ LpcpCreatePort(OUT PHANDLE PortHandle, InitializeListHead(&Port->LpcReplyChainHead); /* Check if we don't have a name */ - if (!ObjectAttributes->ObjectName->Buffer) + if (NoName) { /* Set up for an unconnected port */ Port->Flags = LPCP_UNCONNECTED_PORT; @@ -140,10 +175,24 @@ LpcpCreatePort(OUT PHANDLE PortHandle, PORT_ALL_ACCESS, 0, NULL, - PortHandle); + &Handle); + if (NT_SUCCESS(Status)) + { + _SEH2_TRY + { + /* Write back the handle, pointer was already probed */ + *PortHandle = Handle; + } + _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) + { + ObCloseHandle(Handle, UserMode); + Status = _SEH2_GetExceptionCode(); + } + _SEH2_END; + } /* Return success or the error */ - LPCTRACE(LPC_CREATE_DEBUG, "Port: %p. Handle: %p\n", Port, *PortHandle); + LPCTRACE(LPC_CREATE_DEBUG, "Port: %p. Handle: %p\n", Port, Handle); return Status; } From 84baf8d20a397bfddd6beedb83b6287d947affb0 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sun, 25 May 2014 10:36:47 +0000 Subject: [PATCH 043/232] [RTL] Fix warnings and a bug in 64bit bitmap code svn path=/trunk/; revision=63437 --- reactos/lib/rtl/bitmap.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/reactos/lib/rtl/bitmap.c b/reactos/lib/rtl/bitmap.c index 350e182191c..c7aa880bc1e 100644 --- a/reactos/lib/rtl/bitmap.c +++ b/reactos/lib/rtl/bitmap.c @@ -30,6 +30,9 @@ typedef ULONG64 BITMAP_BUFFER, *PBITMAP_BUFFER; #undef BitScanForward #define BitScanForward(Index, Mask) \ do { unsigned long tmp; BitScanForward64(&tmp, Mask); *Index = tmp; } while (0) +#undef BitScanReverse +#define BitScanReverse(Index, Mask) \ + do { unsigned long tmp; BitScanReverse64(&tmp, Mask); *Index = tmp; } while (0) #define RtlFillMemoryUlong RtlFillMemoryUlonglong #define RtlInitializeBitMap RtlInitializeBitMap64 @@ -734,7 +737,7 @@ RtlFindFirstRunClear( return RtlFindNextForwardRunClear(BitMapHeader, 0, StartingIndex); } -ULONG +BITMAP_INDEX NTAPI RtlFindLastBackwardRunClear( _In_ PRTL_BITMAP BitMapHeader, @@ -771,7 +774,7 @@ RtlFindLastBackwardRunClear( BitScanReverse(&BitPos, InvValue); /* Calculate last bit position */ - FromIndex = (Buffer + 1 - BitMapHeader->Buffer) * _BITCOUNT + BitPos; + FromIndex = (BITMAP_INDEX)((Buffer + 1 - BitMapHeader->Buffer) * _BITCOUNT + BitPos); Value = ~InvValue << ((_BITCOUNT - 1) - BitPos) >> ((_BITCOUNT - 1) - BitPos); @@ -787,7 +790,7 @@ RtlFindLastBackwardRunClear( BitScanReverse(&BitPos, Value); /* Calculate Starting Index */ - *StartingRunIndex = (Buffer + 1 - BitMapHeader->Buffer) * _BITCOUNT + BitPos + 1; + *StartingRunIndex = (BITMAP_INDEX)((Buffer + 1 - BitMapHeader->Buffer) * _BITCOUNT + BitPos + 1); } else { @@ -796,7 +799,7 @@ RtlFindLastBackwardRunClear( } /* Return length of the run */ - return FromIndex - *StartingRunIndex; + return (FromIndex - *StartingRunIndex); } From 704c97f42227489f5de1d18f2fe5966cd00f436b Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sun, 25 May 2014 10:47:48 +0000 Subject: [PATCH 044/232] [CRT] * Use lconv and define MSVCRT_lconv to it. svn path=/trunk/; revision=63438 --- reactos/lib/sdk/crt/include/internal/locale.h | 23 ++----------------- 1 file changed, 2 insertions(+), 21 deletions(-) diff --git a/reactos/lib/sdk/crt/include/internal/locale.h b/reactos/lib/sdk/crt/include/internal/locale.h index 148bea673da..23c618ff2cf 100644 --- a/reactos/lib/sdk/crt/include/internal/locale.h +++ b/reactos/lib/sdk/crt/include/internal/locale.h @@ -18,7 +18,7 @@ typedef struct MSVCRT_threadlocaleinfostruct { int *lconv_intl_refcount; int *lconv_num_refcount; int *lconv_mon_refcount; - struct MSVCRT_lconv *lconv; + struct lconv *lconv; int *ctype1_refcount; unsigned short *ctype1; const unsigned short *pctype; @@ -37,26 +37,7 @@ typedef struct MSVCRT_threadmbcinfostruct { char mbcasemap[256]; } MSVCRT_threadmbcinfo; -struct MSVCRT_lconv { - char* decimal_point; - char* thousands_sep; - char* grouping; - char* int_curr_symbol; - char* currency_symbol; - char* mon_decimal_point; - char* mon_thousands_sep; - char* mon_grouping; - char* positive_sign; - char* negative_sign; - char int_frac_digits; - char frac_digits; - char p_cs_precedes; - char p_sep_by_space; - char n_cs_precedes; - char n_sep_by_space; - char p_sign_posn; - char n_sign_posn; -}; +#define MSVCRT_lconv lconv typedef struct MSVCRT_threadlocaleinfostruct *MSVCRT_pthreadlocinfo; typedef struct MSVCRT_threadmbcinfostruct *MSVCRT_pthreadmbcinfo; From 3052ad7ec837d00aebe6262314fd073091c5093b Mon Sep 17 00:00:00 2001 From: Daniel Reimer Date: Sun, 25 May 2014 11:39:12 +0000 Subject: [PATCH 045/232] [FONTS] Add Open Sans Font Family as Segoe UI like font for Lautus. Add Ubuntu Font Family which is used by Lautus. svn path=/trunk/; revision=63439 --- reactos/media/doc/3rd Party Files.txt | 8 + reactos/media/fonts/CMakeLists.txt | 26 ++ reactos/media/fonts/OpenSans-Bold.ttf | Bin 0 -> 224592 bytes reactos/media/fonts/OpenSans-BoldItalic.ttf | Bin 0 -> 213292 bytes reactos/media/fonts/OpenSans-CondBold.ttf | Bin 0 -> 264372 bytes reactos/media/fonts/OpenSans-CondLight.ttf | Bin 0 -> 221108 bytes .../media/fonts/OpenSans-CondLightItalic.ttf | Bin 0 -> 210804 bytes reactos/media/fonts/OpenSans-ExtraBold.ttf | Bin 0 -> 222584 bytes .../media/fonts/OpenSans-ExtraBoldItalic.ttf | Bin 0 -> 213420 bytes reactos/media/fonts/OpenSans-Italic.ttf | Bin 0 -> 212896 bytes reactos/media/fonts/OpenSans-Light.ttf | Bin 0 -> 222412 bytes reactos/media/fonts/OpenSans-LightItalic.ttf | Bin 0 -> 213128 bytes reactos/media/fonts/OpenSans-Regular.ttf | Bin 0 -> 217360 bytes reactos/media/fonts/OpenSans-Semibold.ttf | Bin 0 -> 221328 bytes .../media/fonts/OpenSans-SemiboldItalic.ttf | Bin 0 -> 212820 bytes reactos/media/fonts/Ubuntu-B.ttf | Bin 0 -> 333616 bytes reactos/media/fonts/Ubuntu-BI.ttf | Bin 0 -> 356980 bytes reactos/media/fonts/Ubuntu-C.ttf | Bin 0 -> 350420 bytes reactos/media/fonts/Ubuntu-L.ttf | Bin 0 -> 415552 bytes reactos/media/fonts/Ubuntu-LI.ttf | Bin 0 -> 409608 bytes reactos/media/fonts/Ubuntu-M.ttf | Bin 0 -> 341324 bytes reactos/media/fonts/Ubuntu-MI.ttf | Bin 0 -> 366992 bytes reactos/media/fonts/Ubuntu-R.ttf | Bin 0 -> 353824 bytes reactos/media/fonts/Ubuntu-RI.ttf | Bin 0 -> 386440 bytes reactos/media/fonts/UbuntuMono-B.ttf | Bin 0 -> 191400 bytes reactos/media/fonts/UbuntuMono-BI.ttf | Bin 0 -> 216208 bytes reactos/media/fonts/UbuntuMono-R.ttf | Bin 0 -> 205748 bytes reactos/media/fonts/UbuntuMono-RI.ttf | Bin 0 -> 210216 bytes .../fonts/doc/OpenSans/Apache License.txt | 201 +++++++++++++ .../media/fonts/doc/Ubuntu/CONTRIBUTING.txt | 21 ++ reactos/media/fonts/doc/Ubuntu/FONTLOG.txt | 274 ++++++++++++++++++ .../media/fonts/doc/Ubuntu/LICENCE-FAQ.txt | 177 +++++++++++ reactos/media/fonts/doc/Ubuntu/LICENCE.txt | 96 ++++++ reactos/media/fonts/doc/Ubuntu/README.txt | 15 + reactos/media/fonts/doc/Ubuntu/TRADEMARKS.txt | 4 + reactos/media/fonts/doc/Ubuntu/copyright.txt | 5 + 36 files changed, 827 insertions(+) create mode 100644 reactos/media/fonts/OpenSans-Bold.ttf create mode 100644 reactos/media/fonts/OpenSans-BoldItalic.ttf create mode 100644 reactos/media/fonts/OpenSans-CondBold.ttf create mode 100644 reactos/media/fonts/OpenSans-CondLight.ttf create mode 100644 reactos/media/fonts/OpenSans-CondLightItalic.ttf create mode 100644 reactos/media/fonts/OpenSans-ExtraBold.ttf create mode 100644 reactos/media/fonts/OpenSans-ExtraBoldItalic.ttf create mode 100644 reactos/media/fonts/OpenSans-Italic.ttf create mode 100644 reactos/media/fonts/OpenSans-Light.ttf create mode 100644 reactos/media/fonts/OpenSans-LightItalic.ttf create mode 100644 reactos/media/fonts/OpenSans-Regular.ttf create mode 100644 reactos/media/fonts/OpenSans-Semibold.ttf create mode 100644 reactos/media/fonts/OpenSans-SemiboldItalic.ttf create mode 100644 reactos/media/fonts/Ubuntu-B.ttf create mode 100644 reactos/media/fonts/Ubuntu-BI.ttf create mode 100644 reactos/media/fonts/Ubuntu-C.ttf create mode 100644 reactos/media/fonts/Ubuntu-L.ttf create mode 100644 reactos/media/fonts/Ubuntu-LI.ttf create mode 100644 reactos/media/fonts/Ubuntu-M.ttf create mode 100644 reactos/media/fonts/Ubuntu-MI.ttf create mode 100644 reactos/media/fonts/Ubuntu-R.ttf create mode 100644 reactos/media/fonts/Ubuntu-RI.ttf create mode 100644 reactos/media/fonts/UbuntuMono-B.ttf create mode 100644 reactos/media/fonts/UbuntuMono-BI.ttf create mode 100644 reactos/media/fonts/UbuntuMono-R.ttf create mode 100644 reactos/media/fonts/UbuntuMono-RI.ttf create mode 100644 reactos/media/fonts/doc/OpenSans/Apache License.txt create mode 100644 reactos/media/fonts/doc/Ubuntu/CONTRIBUTING.txt create mode 100644 reactos/media/fonts/doc/Ubuntu/FONTLOG.txt create mode 100644 reactos/media/fonts/doc/Ubuntu/LICENCE-FAQ.txt create mode 100644 reactos/media/fonts/doc/Ubuntu/LICENCE.txt create mode 100644 reactos/media/fonts/doc/Ubuntu/README.txt create mode 100644 reactos/media/fonts/doc/Ubuntu/TRADEMARKS.txt create mode 100644 reactos/media/fonts/doc/Ubuntu/copyright.txt diff --git a/reactos/media/doc/3rd Party Files.txt b/reactos/media/doc/3rd Party Files.txt index af7379e8b77..41dcea0758a 100644 --- a/reactos/media/doc/3rd Party Files.txt +++ b/reactos/media/doc/3rd Party Files.txt @@ -10,6 +10,14 @@ Title: DejaVu Fonts Used Version: 2.34 Website: http://dejavu.sourceforge.net +Title: Ubuntu Fonts +Used Version: 0.80 +Website: http://font.ubuntu.com + +Title: Open Sans Fonts +Used Version: 1.10 +Website: http://www.google.com/fonts/specimen/Open+Sans + Title: DXTN OpenGL Compression Libs Used Version: 1.1 Website: http://www.geocities.com/dborca/opengl/tc.html diff --git a/reactos/media/fonts/CMakeLists.txt b/reactos/media/fonts/CMakeLists.txt index 53345f35a4e..3aacdc7292f 100644 --- a/reactos/media/fonts/CMakeLists.txt +++ b/reactos/media/fonts/CMakeLists.txt @@ -47,9 +47,35 @@ list(APPEND FONT_FILES LiberationSerif-Italic.ttf LiberationSerif-Regular.ttf Marlett.ttf + OpenSans-Bold.ttf + OpenSans-BoldItalic.ttf + OpenSans-CondBold.ttf + OpenSans-CondLight.ttf + OpenSans-CondLightItalic.ttf + OpenSans-ExtraBold.ttf + OpenSans-ExtraBoldItalic.ttf + OpenSans-Italic.ttf + OpenSans-Light.ttf + OpenSans-LightItalic.ttf + OpenSans-Regular.ttf + OpenSans-Semibold.ttf + OpenSans-SemiboldItalic.ttf symbol.ttf tahoma.ttf tahomabd.ttf + Ubuntu-B.ttf + Ubuntu-BI.ttf + Ubuntu-C.ttf + Ubuntu-L.ttf + Ubuntu-LI.ttf + Ubuntu-M.ttf + Ubuntu-MI.ttf + UbuntuMono-B.ttf + UbuntuMono-BI.ttf + UbuntuMono-R.ttf + UbuntuMono-RI.ttf + Ubuntu-R.ttf + Ubuntu-RI.ttf UniVGA16.ttf ) diff --git a/reactos/media/fonts/OpenSans-Bold.ttf b/reactos/media/fonts/OpenSans-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..fd79d43bea0293ac1b20e8aca1142627983d2c07 GIT binary patch literal 224592 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 literal 0 HcmV?d00001 diff --git a/reactos/media/fonts/OpenSans-BoldItalic.ttf b/reactos/media/fonts/OpenSans-BoldItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..9bc800958a421d937fc392e00beaef4eea76dc71 GIT binary patch literal 213292 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

JU{jq<7f203t|Ihq? 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

93Tg2c}Lc^2oc3nPS$ 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 literal 0 HcmV?d00001 diff --git a/reactos/media/fonts/OpenSans-ExtraBold.ttf b/reactos/media/fonts/OpenSans-ExtraBold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..21f6f84a0799946fc4ae02c52b27e61c3762c745 GIT binary patch literal 222584 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�LN9 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%0DpzNyo5m`c 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 gdXGe&xpSVmb3UZsF@w&B^gHI!dG<);L$9dk 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 DzdWN1 literal 0 HcmV?d00001 diff --git a/reactos/media/fonts/OpenSans-Italic.ttf b/reactos/media/fonts/OpenSans-Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..c90da48ff3b8ad6167236d70c48df4d7b5de3bbb GIT binary patch literal 212896 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 I-Ko?4FC8~NI{*Lx literal 0 HcmV?d00001 diff --git a/reactos/media/fonts/OpenSans-Light.ttf b/reactos/media/fonts/OpenSans-Light.ttf new file mode 100644 index 0000000000000000000000000000000000000000..0d381897da20345fa63112f19042561f44ee3aa0 GIT binary patch literal 222412 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%0AG%b#%#Weyp=oz<}IGPqm z)8c4aT%)1Wt!Z(MiMFk2@iJ>#98HU(X>l|yj;6)Yv^bg;N7LeHS{zM_Yxd#ySkvN~ zeHg82+}v^bg;*NE&CYg!yli=%0AG%cHosL)|1w>IGPqm)8c4a98HU( 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%0AcdZx)e(&Qd#a*s5*M_SL=`WWXP>A<;1 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

    tNNc zgH^i@R_!`iwd+Xy19j~N_2jAkYA>i?0ad&od=k_zcBgx)+N^iG?Ogr6GgNaz_=p`K9{`l+#wgq~3q>WOBd-V-7GHRzo=9f|)1dVfww z!cPQruu9pHm>@m_o(13ZH7BnH{k&C2vKaJEs*a?e4DDb&vm@yzLpxa2>`0apdv8xi z@;YMgl

    o8+@-@Iav9JaRqTDcmpL>#2+NC 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 !}#gv~NV!5|5YF|kE)J0y^zWbk4>=%|6F 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 literal 0 HcmV?d00001 diff --git a/reactos/media/fonts/OpenSans-Semibold.ttf b/reactos/media/fonts/OpenSans-Semibold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..1a7679e3949fb045f152f456bc4adad31e8b9f55 GIT binary patch literal 221328 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%0DJH?LFC28_mTUAZOar9j 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

    MAzfu-#(7W5VH7%hxxNU1% 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 b^2ROSp1r5Xdx>eYXCxdsa=Oc~d6M+Mf|cc} literal 0 HcmV?d00001 diff --git a/reactos/media/fonts/Ubuntu-B.ttf b/reactos/media/fonts/Ubuntu-B.ttf new file mode 100644 index 0000000000000000000000000000000000000000..c0142fea09311a2dfe8325322ff5c3241562a008 GIT binary patch literal 333616 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 XX_JlEy11}O*U$$Oy-Rk!!r1=-)9IBx literal 0 HcmV?d00001 diff --git a/reactos/media/fonts/Ubuntu-BI.ttf b/reactos/media/fonts/Ubuntu-BI.ttf new file mode 100644 index 0000000000000000000000000000000000000000..12e4c7df7bf6110e6a5bbba2613f89297eb34aff GIT binary patch literal 356980 zcmeFadE6vbdG~#~`@Zj9tGkx2uBzUbdz*b21V%v&i--)%FfhXaG6Tpeg2*On5W#37 z8W&V>-?yl7-{XoJjZu>r-$adxMiVvq#3UL`qVn|f{hjK%XB@`l{qOm_@5ghdPIcFE zmg`*C?^@33drZz46H?5XohP63$Vc3s0*Cl;Uj?jM@@$=i%M>cyv@d(Np({kQRRjcL`W;6KkgXUn#`F8JlQjLChKS})#n z@)>)-d(V&VF{U%eGk^8yYcIL}-Cwz8oiQKf`}~_9ealV5@#mJ_W6bBjZ%n><#r0QS zd&@^p{d_CxZpjZ`8B@3knf9EU3=55yN-L$w`ps;F~L`^ zx%`IfuK4An%O?NNryBF=<;Onm(U;8Mu=BmfeBqbe|LV1u+-~Fm{`{-&yI@+FPMl8`?lT3(nNQzPS$O^QB-3?1!2LY; zzi<9kZ)9oir+Q}Yr@6eToA;UuZ@OlSIUlMH7yir4bGMLxQvM@+GWn0>@8Z2@r{~U zzmMmJrjYx0v(3JtesSbh%+B2ZGVjg5&^#RKo?N)X+?v0aYrc7J?lN;}?y~9kb3Ze8 za&N!+#q?*n^UNd7FU@he_fFr)wTn4E$8j9TF&rmxJdERNj^E|Dh~o@BZ+@MiPs{41#Y+2$?Oy(xFI>F4e-_vCJ# zex3HO%KgXm+vY#aOY^7GhliO{a^K>7CWmh>%e{a4jr=iYls}5=9gZ<$J%aPG=JLXs z<`nLol0TkjPc%vXp*;T%e~q>I{$EvvAM0V6`C#4@8wM~ zNc+1ucAI~m-cMVv%6(>ff8pIc^F8xqj^lFAF`t?H7skPup!a2kubC&Ce>Qh=+?xB0 zxs&78-0yHe*TTQ@{LSX|g*|*%ANHDu7A~i6jC(e}L)yBV<0_8*9OvdXn>b%Ei}~1m zuh8YaubO-EdS|=2T=Q$M-D=*NdkQq%ZZ_twfnL{`N9FqFUHMzhB>%_eW#-55#wpV& z*I%Cd09<-G?Otb|$?*b?bC};%JGYwOLyp2%77&GkWt=KA0RemG%mt~K8WAKT6O ze81ezx8^)MG~Z8y$8KW|HMfU33J*6I*!gCzHQ(7`=UVeUJM#Oum(8{2``}}{xq$Dd z+WFR;XNTtdMANqOu5qjVL(h!ew*TwSl7naSp2jbp6phr+|LH855#Rp0Gx8*!ra$&< zX|1t}?!R(|FFVs8uU+R};gP&^I`1NjRvsje$VA~GoR8-^vMKqPoj2O^4s(t@|J0tB zxxdxUr)Vk}KImMy%{(!GA2AG>Ob^s@r(A%i>C!-?J*qZbL`@{j^m{qS909S zaXiO0921UB9P2p79J;=TL)VVa_skyJco8!Cat`6C-#w_;<$|C4ICG9 zJcr{14n2D+$H^R5aOizKzl&oJ$BQ|x%s+;?`=qJl{~8*dj9y%^I^sf&!~D!#n!mv8 z&R-90-Z=d#7;_Yd^uh*voCtpInf^`wW5}?M&!@-S#nZ3P-2r`%5k{Nm1WN?%paI9n~$L%uSGxpBzGQI_}=Lsq0b%<7Oz9kyaqk< zk6`|V;Qd#*f5Qx~PX@0~&h3SFR~YZ*<_3-(VC8YrL520`%-fI)KHK9iFy=|{^oNm! zCFltr6s|H)%l|$&E?n4P`uUyUEVcpseOZ3%^nLj+@a%o&UiA1WxtG)KmC*TvsjTL% zMgNXXzwiZfUH-c~yOnk_OntbyY%VlUD;&j~cj$+7+lzQ_3H|aNa~5;h&wUu4do?ot z4D-93g-6fN|A4k1jeM-21HQm`-j95oGyU5&xwr^@aV5{rA)o&~{b_!M{vJ=AvLU{2 zw&zcPw&+FXvY$VWYuF=mKQ}w(?&VmdPbb1}kDwoym~-a7!?iNsA5Xt$n3`eK8czJr z@|?=O4_ywyW$7j928*9(9E77YtXpd%!z9L*`zLH7VZK%X=GEiew~vATw7e{Sm1 z2W#y}e@TZN(vL%Nem2I@1IC*5<5w^d+8j!QUD$blKm8f)r1<|K&OcyIz6>AjF^^rF ztE?ZHp2_O}b>|rt=Kc{G{vrJK^JYo?J(cVU2nc+kI$PgbI%@@wv4af!Mp2e^9{5kyxxu+ za!9|;HO=ar%jf^#8O{ASI37!1@8c{QNk;GH;QhiQr~g}Z7JdT%K8m^4vpV$N7tJbI zc#NgHXsGvPv!=Gs^Hpczcypud)Iy!>FERHN{sBH(=JU7A^9wKG{3MQNn-k_XaefW; zizX*QvsLIKxdaPk8x-CE-M-5G%np%Gz7*{EG{-r7mM)dPMXqIgSUVQIQmAlUcIsKs ze%U;sa1r+;uY1jPV8JQ*HuL%;v#oF;pSSXy><}HYhiO0ePhhd^PT3DSkcGmzjC%*q z>wWb@eUi@9`FLzEk8841_^$TyUpIFa9?Z2FpB3`hooCQ~i7|sM`KKeRA)jBsaVEHQ zEOYgzJbw=Q5EM`L|Qw z*Ri8_nm-7?E z16Bq!kCKIh&*~$*BYA)qc8YJsJ9Fo7{s!-Dr_bBb6X~&4%j?$q?9JWk`16e(E|{j?hU~2Qe>ea&#mzBwOQR=I=J{2j=(CrI+RY6TZ8jYtnhU zu$LZb9%FeEeQ13ed^YrvZ2HUcXTwuxqVK-R=Sz9_YxceCkd^BsD}@@oc_P=o!<>EJ zJh5=Gd1CHM9Gce~v14zYzCyfGxSP-PLv5>FwK+S^x9x1DzS*Jra-YcMbGMoAGVkBC z{nr?N-SIX0{m;ndpO`xe@57$E*E|Itxx26(+lj-DS7ScpKo{Mf{}DFZCwTAuy!UzD z`y&3K={}i5x$rdFeJkxfpLTELd=BmIvi)77T}H!$ z&&c$P3P0fai1Rn;BlP`mk9X3}7kU0Yv~v&V8))b8=I*&VM~C)i^N`Uqqg6J}wf-M8 zpO!~{-Tck2W6$*F`eqw8&mD8$rQOfb?w4uvYIB!g83mf`~NU*+Prq*M;Ab%bRKQ8N8cA zK4bHKjt}Pg_&$fD)%SSz?L7N4&L5+n`>;{_*!Pb!)BLZK!A<6d!e(=0;e2@NO7p_G zM>4nY!M*a&xmIhQTG**w_! zfH^VuDf;yn#N*7|zwgiGa&OM%q7AnU`4n;FqP1i{-{4egIlofL`F?IWSII5ra$fG- za%J18JI?$Y?~W)}*tuu_u8Y3BclZ6D-TV4$&fdNIyqjw`?z!NG3-|5!zv)MNznB~4 zKK}9C)?Bpu#V?LVx6?#Yi#F`Yy=m_`dmnzpzFh8V+wf1+`kA?0oV!ll$W?6GY|p+@ zZc!;(ER%NBPTy(MvHLF~-A_85rb*H6J*0hm_EmN&=k}-B&-uG57iBrOH_iTT^8H!9 zpH@G+ycZAq^<<@2=FYY`mpglLx3YJ$a;~O)?w_4|BwYaQnv3 z+B$OO+_oE(ckGMP3;*xR)#IRloZEJ~osm)U)TiEgXKq{i?sAT~I81V8*BoZX_akT> zy@^YE{L}XAIqj@RobPYkaqg~jPC9$fDUUcS=bxN=*M&#q_AV~&IpxOO?&<~m_gwdd zGj2Y+yz97Aa(A7%|E!%C^XjEn?D=Nyyf=$INN%pO)4zXl_kl56I&VHUw>!6Yd9O%x z*1pef;>o?|{Z{U5Z)bGu;%++=&|Y-Th^PwA-RJKtsla5>5ee*f~S!X;d zI%iLA=f2a<*|s~msCM@DQy;#&cIM(4{v)>>d;6<$`_H{*$Hiy9=cHZ7oRT~Hw7sY8 zKIWohF7mhSe&o3)-sA7`&&pj;c^KrY?A&~8<)V`=JZYb5Icr~UPjAoS?i0zUT(WbY za&FHB`?j5M#)fEj6y++ly{nZo{Y8KIno90;MzrVL9k-mi^Nh1k+jrh2m+akn@2(5a zyx@}Er=N3aF2$(lzz)? z<~5rdx-jV^R75^G`RQEPc+DOm%uc>oh7W zrbbyc4rR@jj;ZsxZW_~Hnuc*HUE@)Dl)o^(2`B^8q->gyGBhp9mMtR_O@D4;6H_K8 zp=_HDWyf?WyQVk&FVnMS-}L!BFhk0r8BPC_wVE;I*i0xVwp=ued|on3l*?wBa>cAn ze`Z$AD&;y`t~cxXyuoaw+-S>9W)q(`n=O=E%vQ>+ls`2`m?J2+nQha5H%Hp?LFPz4 zA7zfBJlY&R{fRlo97DO?Y^Qv%c`)TeYMKbD=q(@=>kGADy<`O<% zZZ4&~!dym)Cro*jxt#K9bH()g<}v0BdOqJ|9zXp@bF;aDlGq646UDSF$Z24C6hUwSL z+svCN|Ioad^6j>Khj|O1-)Y`T`7ZOe=~vCWZTTMac0Rw?yo2(6lz(mBZ{A7y0rM`( z51RK-e#n*|Ht(JOmH8v{KFW`n4^V#8mLD@8oc=%N688zlO_hD85=wTWa6 z{l+HxjZO3$o9O>5Hj(_Gvh{Z=*1M@%U#4b#7RUN2b?cQhtoPwsUxPIy{0rau5rOp@ zn$|}MtuN5BmVadJ{McIciM8R|)?)8io4jl7@Se4|`_{T1Sc`gS?dOrTlgHL7o>&`r z(OSGq*1lb~cI=9^T34-&y3Sgp>#hB{!CIRet!=rRc!c@P^vif> ze=_|Gyt6M&|J*#t{KfRou!;VP@@Vt*>6h@%{%-n3ytBWbegW_7yVF0#JNv=(^X6Fd zqv@aEo&9+FIlQxrBdXbGxSRW<_of<(}O6(|4Nla{H$5 zFne>4p1z$Z?v>L&WIf_B)3>oJ;#$f_|p&+C7w4`4Le_6NqJT7wbNIdt8;If zzKZpgw@zQlE||AZUtu1bd-wF^?9h1s^ku9!e|Y**^SIo{rY~Xt$9>Zmvs2@<(|g$; z@p;M{b6=Xi$lR3sGUd&=zn;F(+>-m7=?mDs^LNv`Su6U^^m(lAe3$Y`xgSiQ%j(p> zOrK+ZoAvJBXQkz5luyb1eEKX_IPRx>YCb=GCei64<(>KJ6dx?#p!}VDFnxx3dOn&y z-8>`Tp8gKIEC$o3u|74P-f5nhU!LA!?#geVd{%z*^mg`BY@_`B{4vwphy_1{^11or zr@w8Ump^g(WL6wcnLdeiiPNS}WL4#?>8<94?7MgZD=X(sZ(%*|!s*TC-u%AlO{`U3 zO8JufmD3y8?|2R6%kqz#KHj`Mf8+Fe^NRcvrq`KQ=ATUYs{HNKYgv1J+VrvJHTh>u zuQ9L9-!*-Vd0qaw)2q$v^LJ0LGH=M=JH67pG5@mZ73NL(S5m$?|JvzgMEc)I`Ih`! zr;j#o&A(%Msd-!eJ=06fALc(Wz1X}x|3{SX$bWpg&%85#-}EAO5`K32DD&?8pH43{ z@5%q!^aA#v{w3x6@_#)&pP2mLO!t}(j`JYU8nUCiGV|q60iN9bo?8oy{%1;yu)3eMc3&rV~=DtE@db;^kp+WiSLNMK7 zK2wOMrRMIcSQmMk#`8l306pNJe3&pv) z;#{Rz<#==~+z~{n3b*?pqXt2$6!dcVkci#&fILlcOiJioxLIgMojl2)LW?&Y(F*3Jv*+T~$NMhIo{ zDRr5La;a1<*Bl5vOKWu;^dV2;>wJ}&nV;u(992jP0o1rEELDnBpk9_L^GwlPsY>rl z#cD;9K-Ekfw`q%UFo6qPP3N}m)N18oy-H0?#X)1{ao#Ue+D~xG{2ULL7OM6kdxuY= zygI6ynZq{0IAG3fGw8qy1@pb8z! zw&F6qW?m{hGEcj@%i|i8ZMZZiij_4;-mR1i`cQ?##DA(~!BRq3$ur*7)oR(Piuep) zcaXkRF6d-asZ@pA%4G>BROMSWl`-yC zDm7BIDgr2}-js%VwNi0l0$T}1xmr_2X{xf$>QuR>H)d_pg)~)b^}16(@TTLqjYgwh z&t9(AJ=f*Z>~Z+K1luyF_CmQ_sZ>+mv3)`kz>2lRc!3~Wl}1u4K&Nzo<=J2=bWVe! zUW6!E;g?Uf^+n+xEXRzfA>rOyl|m*aOAG~-OJzM*WeS-@s3C!Y9YHS34+n4$)_^%I zH^HRzczzzj&U?kVnkZRVsLfRtQrx3@I9mjotJn$(#k3#QYIRW)(>HfjumsYu1t zmXJ{#ZTvWotr3Hrp05|}My~+^OUwyVj)XTySTGu(7FMR^{U{hMA1K|vLj}q7AxqMkHI3b&;l~c$zB)w z&&_3E0Pa=GvoX+P(Ss@1T?vh3v|Or`9SOM2TF$VBByo~cE`$B68FK^DyzNh~6MtT4j>1tx~bV0lEh(Q!K2 zgh;_~6+t{n-wq&>kWC;V;wmjzBO`mWS_QwH>|3Sgfc9w;veoM~?rBC2#l4yX%z<;+ zo8TPDb+fk{4d2)I*?sz7Ru2FKrAiqzgEwu5Y@e`+W{+~JR?$}}?r9`W0h~w&m<`6l zuC%svTe-O&+;cXkxQB);TW|;W($;Ln7Wd|PK`bJag2+VhLqF zR}&^NZN*{@#z5?)F&ApgiC>(n%Yd9OI`dUcOraq70&FF67Wd%kGPsAu!OSovN{&#D zs*#wKP7s1*p;(ZJygg49F$W z&_5<|&VzBQCD*aIXCY=LtoG!j$Y99?^>`R8WdM}aE|Q4uqVyUOxrX#JN)CHpca((> z)_mhOR2Ej#33O)}DZ~U#ac>5HfB`QfX_ybC1}!z{h2UAj zo7#h=1?HBnF*{I2NF%JJpPDXp8d#}Su-WLNE(ndOpaz1ba0a$PF4@6UjC|_4H4f|< zvEotTp4gU}Ebar*Fnz_=!t>QyW zfLWSZaJEOn0g?!qCTC{PW#5H!Lb~i_*J}nr;QO=tux7>4^rqCXJv<2a1a${SLo+f{ zY*h|O+?bos2AB<|W;^FN)Qj=Z+Pq*)>dKvpaQ^$S619^7LhON|AmIPX+a@-T!N zP0B*S^hP^sz-6?~LW%}rXH_i?Y!g&TQ`*gxy1EbVC`n9UPeHkI%2Dv9#y~&QECy26 z6M7efQsFQfYy+UiX7CoxN|v#panrPASh07Ovj%i-FbQb`Fr?%h<^oGFlaxWR2VhkR zE<1ce&7oWJP&d^807$j!c@~Z=hdiJzE~L0O55dLO%xFWZWPys9K#doGDp?Dp>R@vd zw*btTQj|4!C1(tPb|vV{WXg#+XXUxTcU`9(2>6%^X}?)U%8`4_IP!1#-R5k@F)t=D5R0J!z zu6JS_Qn;yiS2bqmj-t&p9}pc$^t)!48tB*}G01u=28JYYn%Nac+HPu_-!%@DQa? zU0I8+3#tVN-t_&D)NE#N2SL!U;^y*Tw#@2K)qv5C@F{Nw_Co693suw}pwbEbdc=5@l4& zEL+@z7QnF0&_fT@%Jm8*6~O4Y4_FwM%hX5)uW5A%IUJ~L{c7PJ0muyZs>OV&WDhFK znxn&}3e)6(d$OdI2!~XwzR$O`aj5mcB;1opErN4~)?&gU@~6Z+HbgiMR4OJE;h+X1 zt5tAJp$4Oo+%Znf2}S|;!d%5NruJMD#&s%94=p%92OVYv6f01l{9j8?QMoi1241!7 zGJq*7}ts#;!r?5(?UKF4qrA&KWghq0Od-`0I znS~PztOGR~gJ4q?G%E0y$UvJ2k0*Pe1k?+|z&*xA<@IX4I?qT5)#;%sdJ+Fs)Jiq3 zYC+A4#q8Lr-{KxXTx>W#(k|SCuCjS>{pkiHg5nMQQAR?GVpYxvp#4fO8vsRdzFy%W zK#}R^8N39`04iz#Y6HYd@k=(GYa3Eybs-xHF2xua*9u|wYQ2F`=Ic2n$MsZEnuKh; zN}uSGSdKPR$>n9wYmyGUnc`d+W-m9xIF5k6Sv%l%&DHeI+QCcqz?ZB~7WZ^ZjR>~U z=@6OZlKpvHg>-<~U>dW|Rk8VH>!E}iCrQF*>cN`nu=T8$4Us_eixkf;>BO~^mofph-KKMCPVb4E zi5?Sf@wl!7ocuBBk;511Whao#-MaaP4=rSDn1ll`D3!iJ;J9{fUSe@BYaGz zOe`1xXv6}odW_7e$}yE;Av2warQL*RwjHDgLbRHGP_KkOGP{7Weqhv=&MueriYy## ze;%$?Jo%OtuaQ11x{JzsLPXT_GR=g0LXXrs(p>^5j&P6plu|2Nev`wD{|ai!4@G7* zTu#D0dbCjX{W@G~``xGn;6l}bS7nA(Tx#$FAiwIV9eC5_z0}ea*2!~eH0W)~;vTia zO^v#ct5QXVW!3I9y@B&iHIen4A)Lh4r zcvX4G@`#wl#jsD!2#g+U(^**Ojx~xrJI@piAsY%##8rYFh?!+#)o|sHX3y3=U&|3` z0@;Lo43Q+3qfIw!(f3=}cL&~VHe*t&mAxFc+DVc`(d>C}+wowPRNa^BxT(Hf0ZRKM zbhfwDh+tc0iml26i34zNHo$B!t{2+Q)towP(L1ihU#2^$VwhuupBX`URu!kux{Di) zj;WS>{CFnKsV`t?d*CZm%shB__rMwI-mR2$g`AGi$2ab z02vhBa?z{JTTd1mH8A01p%CSrcN_*>s>z;CtstMq(qP2QDymw~5JXJ-=~}cC?!g@g z65Wut6?deWZo@HI778lYc`8FaGzuWQ;2lxhB*1kW`WDaM%RORU6d;njoDK_}Ov77P4VS0dWtLgnL{r z5i8MM(Hi|%l0B9RA6Aid0G&F}=m0++%qQC^hJh^Xgfn&HLJl;$RVj&IV0F6>1| zk>?U|B<|vN;Ka!$1<(;L;W{Td1gNfsO4w{T)Ie~Z`SbZeR0)m|n>5flL9y!fXKUwX4Mdh{aE67QIS_do^Urh3{mc@c4pLryu2-?CBKenl^Z1fn;+egECJ9wXAL$&J{p6B+2)MXbj}FM8CC%d7=utxjxu^v*~eH& zvx6<-%)&7>K%&Nyz=7;zPNj$d2Wt@u+kyJazN=iTJ`ne+avctvAUGN+8Sa&X6!%1HEfD}@G8w>m-~=H;IO~3iT`9#{lW{d_A=){^J*3JN zeh3(tLj)aHb0LYtmRCzczg}B_DhI}FKMD>7h9VL)Y{y}}8p3DwTGLA(7TrZ@Js}dR z0xR<%2K{1gQUde7EN+}?a1Y&y=*h=W>=esR&LmcdaF4_Zhk)0Gd!ZOpL3yq;Wd_uJ z1cCIt zAOusw3<4lB+|#!dVD+5m0bfMgG*L>}R*)20+2jZEM$^yK*$kVR#TEnr8^|W_n;xZY zT1BlE!!SwW1NK}sj)6IFE_*v^_xrtGr=w>{;C2JHEzS%u*Cih4U_{IkTFaZ=67Kmv zcKm{^stFRe7K+&bv%#oy0&ME7x{dKE;9huIihK1M69h)pu=ikzEZLY^xe2WmG-woI zPer#~C{eG2pST48+`McFLEl2L2JZ1PxCgfg05RQacuCA)sZ%S4HsVcqb5xHvYaxMx{71yb>N zTD7bKEu9jhLOz?ma=psh>LCf<|20V}-K!O_fYTX~^flrb5VK=|xQ9tB3d!CpH<=lr zuT%|DB{-A75_U55z<9?40-zdx87L__O-ANAEmqfv+~H!%Q^E+ul##&+Nx3TA>m;qn zciOE$1cMH1qqcMw94d=M1owHkUJDzzW3>>x*F1>wqVpONsX(40F&W;|{gl9}y5d%F zTX};h6?P!;a~xbc2-JXkilX5Er6=K@HhffZn}9hjID$Sch(|cvM&4_Hk5>;{ZnN&t zD~+crrU6UTDQtNmobNj*J?mV|aL?y1kOEuz_)n-HJ7^?ZxYr8sd@Y&WI^=?WNO`3e zSnS9819cfkP!Hy9O=o2enCt6f3`3C+hVekb7pU!d7iY3#Dv;*4R|GZ$zs zrN{>UrQK&_a%@xqzD~OtShUmqwQdU)(Shk;GfoCvwc7shaClPQ*g5UJ;R? zVZRf*PRsy6gn)<1qP(cAYa*dumqU%5(l6cD9eWqfuEEaeELa+BBz}%wrGrG;w5lub z)^6kA#9lC(B~+QjnqgTxPO~1dL#*L7sarr8fPiu0!LTu8VCHH~-UCX+Le+q%UmZm& zoRD)N(Z%s#xsm?Ky(HG(q+fLukIXHI)No|ax?It9j|TAnu?g!COBkR_Qx@?}%#NR1*rqa=t>q%Fl5*=?*9Fi+{- z5d2D#^fRI6D28j&)M|Bswm6n;NF*|C)6ZJOj|Ju0?d;7?XEYoR`~B?gUVkzkjRu3+ z^DO^*5jvZ_M@m}#jaha}`@~Gc8`k~S%|@e%5~&q!RZ%NywTq=}fZ1TO&Y=$+-&;Am zVoZE)4cseYLN#63sRsD5vtcdaTOxH4v<5RgPtS$emFODgA<{Y!^sMm^J`_uW!o5(2 zv6!{4Wojg^UME6A$gt*>zYPJR~{r z;NcTt4a@~_kBGVwuBhjAx}r4<4Nn|Wll>~(1Me!4qEy1Y7*#?AMAU}PgxHFMZqjZx`bj8)L5HQ!>=`kdzezN5)lH7`w|@lCNX#M zaxL!J6N7=`!o9?EX%D5y{3YN5BP8+;D*#J@8@K()b=#6*NEc%7)~)`=WmT6^wBQ7; zISd3KfP3dxA<4vLygl0m=MKk#O^Hy)41!$J0Tf3UbX znGA<%|KR(;kFl6$;D)u=O0*wzme5*FdrR^TO)#3B6!&6~xKm_>D;;1qn5=WuTMzto z=T`Y2hxQ8hSVpLao*JsNCs(R)mMrd7V}QnIXN+HB0$M0ygow_;Mp~(^I}7rIr5b^r zGC>_JHK7v05IPI)p*3P~aZoSE(ja9g0r$!+3_F@>V1N^ispFYxHLck2!95s=I6_L6 z7=%kV82O4s1oT~SXpv8MLgZLYvsoq$0H!7UXZZ z2!d{pnyqX&cJ1*{>`QU4T#cC--GkOz8bz%Ebyy)j#=9IqLcidi zPZ&IAWI?0NvH%M&gi4UTpb`2oJ1;2M!c|mCX-EJjYz*2hpUuC)L1QNBggJ%Wi>8)D zPLYSbdK)a&9hqAx?M3H|h{8$cs1B3UCEZU6EP1X4HJoZ}K$e7YL<9N@gEWZ5$(KlR z4^S8Ufl4&X-iCHNAX*RH0XL1d_LKQ7;@mK)i;L@7-19oxea#HT+JP%;P&OE=9gTXc zrHD#PgtoX>w7AD(xR)&-lxf2DaFXB!acRfmucn8J0R2L*-6GcIG$Qeu58eTEbW6Bb zYR8ZTfD9mi6ckfxF=8-EweURDNyqM4Z&zUk2i)r<^s7#wPt@^)5(8qcpq3pGz=npw z_Ct!W_mBk4K7vmHqi)qoES5$n4s3tf2QBRQEcrpY%8=q7!7q}At%OHPN|MZpkhh9n znxz)#*6pTG!jDNi$rv||`_`fp?rCQ;)D=Z%sofq927?1{_WKjkXq3G@7%nd@E{?~u z$9>2R+hQ@;rkc$tLSL~%CQU+TYYC_k+|CFWvuLX#h!}UlJv+c=6Z6y#ChHt5UvK&w z_JVtz{f_KCNFVv^mLP=3!cW#+{a}vIwIuL8<~#^WV&i7hYofaRAc3_Alb{i0i9>Zg zUX~Tebf6Mjnl$Z5!7^>5CdZ9(TUKhN-l;@RIRfC+64MqsUZc!v4=`GC1NKbSJmvy( zR;g{>S`9f!{Xx{Pl7&9dFS6#Ha1RbwN=vk@02*eSc~3T$yJnq8K!DBlw+6DRmPDZr@m|&lu6et(lQ~KlR_%M?<(v>Y@Qfs(o**8+86YzsX<)i z@W~6BsO&k^yqLP-;#34de;{8=88h%ONzQ%;n0!~ldU(?R$Y zoyr0}GRxKtoly8R%Z}q-7qbk_fIkws9imo#Gqx*^cqSlVrx(Va-xX@WtZm-IYNA?P z^g0ki;M9%kPAp1e*}zQ^T!78S*xk4Zs^PQJPx_1>8#KCY)^J@QhVc@K^PwN>wr;}o zb2nk?gl37K_@z!8Jpus)l1W$+E!q*I1*1CDB3CQRsby?EYA23*9rcEVFQ^DJl#pj0 z3^0#BgB-8Y9$7n@Ex&{-OxgNSmB^(Hrsfsip44ETf41> zl%j~p8jU2$s~JwJXyE8va+~1YX<|b*=3g)aHP~?Riw+JZPq6tYAO*l;`=cnhkD6Y)k!+- zeyNfTFanGyr2IuvU{mx2oN)!v9E?)woSqkSprL#=QcpoB)Zrv z!=6bP`h==su(riL;xt7fG#-kJO?qxQ*1K{Au=yK+v=*Ifj&N_{RywkPEA?(Au2*88 zZGF&(X=@R(BLqk^yHfI-;GW|VWx$+O>e!7QvRznVS8|C>h`nbUKw?WB5oK*=)dg4? zfF{eLQPSXh&Hg8V~kA zkYx>}xCcLbtUSmfA%4(qDf^AX;GVWF9X5IF8;RUG!kX!fpmCbb!4QMe`cRFvpEn*1 ze<|)&YHdQSO3+%k2WSFy7(-wI4nIyQdY;`FF1W|YLbn&S7zTbNrWXETq%8_q_`*Gu zDxu=i;;27}yh$%<5+s)#XSpsacc@nvL?+MC!-3lkLWI2&t4wJxI_n9MP)~cvd;mjn zW^UF}ukCTOf(RN9cJxTpM%fPJ_1Uau8|zP87@vDfv8 zU^Nrs+^`9#*9yQr?9aZS4u`)ZoRBgHq+=Rh!#zZa0n1E^-~zbFg-PQOtq{7h;@Gl= z(-XMZvxK@M)&~#=&b^obP~B@Y{d6Y*%h3XE5+p&n+kq@Tz{#a{SW2noS={SVi=u&9 z4y^4b>#tF7N5ih#XWv#Djd*h~kLeXl^_LfT#nF1mJDC^fio~GFC|&0wOjV zWW*+gEHy)Rk+h>IwcA3zbvk-RDUJa)@Jr&RL=1|QnHU0)!61E-I=j8DRzZ~7oiQQ1 zUJs_BC$l!Ati@h`aWck_&E6c1fVq{WrS#n>nk=qgzi!>~^6YtVJM1yNEO{xl*xlD- z=TF)r_88XL>6caI`#?BIYpd$EyPW~JHydC!7|6A5qdqNw}5QQrv?|_<$Z*;j&Ym9)fjf zuG*4Y=~>)s^r}g{k_6x$GFZlv0e35e0EuFk{E**CIgBQ$r7+jEZmk9#ruu>PeUhCH z5h~G?)3k8U5-uxYG-bJ|%Av-f25rtXtT--1Jyt-8je~o!XHid)JKS;QwnvH6BH2?u z827};S?(lwG_awsShR4D_!Mm5poz$VoBh@fIGiOHuj25@Zz52_J$6`-JcOy)9FF8` zDdTY;Ce3iq=`b_0_!>P_iC;r9nLr62utnetQEDcv8M+m($H-b9PMUP2HtL_MZq4~d7^^+c3TaW76_B>usqaVw^8 z7+F}SFgiNa?RR_@Dd0pZ2ZRFRo_O_MTWH?&+63Eq7F)XAEcZGx2ty7`;8rQ67Auw* zsy%8^h>4pvQ-kGB0J+|YhCTI$Ei=^Uhb`eAj}iFvkU;v&2h9&V{bbBD62C4Qvfn6i z%78phy>z3@ftU?wRyZiaR+m^@Y)xBPW!h7shLjR4x&ioQbtVOlv+VKNyD7S*Pf};E z-^)CePFE`v{l0u+?T~?TqUbF32e`3|qfz#z?7LNPE_-`%Y2$|V>sMB0kB4E@>I?VM z=h^Mo?z5{X?UVLavofq(Y6SDEjZ0s$RrNZ(?vO1EvjJvWxI3BM}wC29R73!C7NLu@Ikt~23wsZ==%Mg2fcX( z-1EH|?y>pXsdvG>Wv|jNvIbIX^sDW9rQOuZi^aVdHCkbno2B(~5VCvP@v*&engn2!Q=b<&S<8q&?w&II?9XtIUm|o9<)*8B;J=z&*0~O! z0`|+r-h9yy(iv%s8siB{9e#(UXB!cIwK_H<5kjpv-4yqrwQ$ezFvs*`A-B~gXn_b4 z4o+&-kTLdJUKDu)xU`A%5HxmVO#nt1EUYbvlP&HoPllt!UmmnWHo!oKwJ}>d_mF!~ z$C3ydu1toZ2kuc-FNtImS=x)zYeb|1;T_tHrgT3gFjc#Fs%_e7c#0M~sDFR}2cgNP z8)8-f9?+z%g`9A709T}8IEZLZW***VpB=W%u#N2_Hi=nN>J1|N?jg3Nh}YNF)&RVN zb=!aiHe!rl$WjcW#n^(Iw5=9r-Xp9A?$I|N>&^v%La1cFzoj0ps&_&k6B7=*iqfW{OZU(vsLxG z{oc6DjwTH-jB1^&&zuu47784Lr zsKCI~*F+Vw#?r@&U}4jDOEv<*Yvqbp!TSxgJ{Ax|c0IObve~BIU9Vx5BU9SUiLc>iv##=w`n$PGia{JpvDhPt7PMmM~9P z)6PiH5j7TGK#wFl>oU1 zj4Sp>?F4H{cpW+c?M5wDU()@ioG(IoCR!x3#VcW%$_-G!+E zt2XvM+}c$nxkESrGn3FnrPJXiu>r#5ov2OU0^DXV6t9EU`0<3qlTg=Vth!N0D?>q# z>4&#^7za?p?}pv5GU|mwUJg`2QckHQry}-7L_t$NO~Oy6WbavK3;Bb#18MYPt3H-%CM?Zx5BX7 zlbK?x8uo{SMYe9u1_(@(u=LW-ji}d8;$yA{_eM7f_bSA(yDfIddKi5rmiMy6S_12* zgSZvOP3Tp@sPDx|NQ54~8UQ{lS_d8vVgFm)^D7;pjusWLkph0CStB4@Z$MaQ)vu0( zdyY4%b=_*O1@6)His!e9)>hlKI$Mg$VZ@f_MiU)Gh(~F}FHF)u)ey(lAq?1G#6oq* zbSQODFbv${UV0@f;Yc!(UYk+cL}Rinyi*pxWvIsjC{A?+>kgbHR|#2VxYxuSAXt+G zt-5lmmQx2>jGSeOzZ5##czuFX!o51bEvyeZ%B|pmxaSjiID8WBb%Oa)GfZcMU`iY> zEwe@npA)tEwYUe~)d$QBXJ~D4FX&iRg(24?SO!)6DDJXX0-qh+OOjxW9AO3Wb1T-o zl4b|-Qm{;NMZk((#Fh0clf`ax-MANnd&$~}!46S*)PV%(5|Ie+nTI2bdvP$tzt?!}BjKC9eJtunOy@eoZKv_twVa)skA<~X>AXYbdG>TQBegkrXZ<<7^P`ES-);|-GMh(R<>*w&ZX~m zI_uVNJ7VkBjT>i=$B=uho!DthZGO!$4g=|Nl5EL?a1YzAPbjl&s~QbP!zH$E%?5~_ zXWeUcPUa>SV9<`Y-_$T>@?>AQhaKLJP@{g6p9{iDSz;}LeNCezY9%4tb*fCjpxtS) zLlM$<1NN(w>*W%hvfh(d?>3SrQNsrcbdvq@BZgxR>ESsSxemiWlT>3g+4 zh8?w|t^%Ua&03dO0@3PLQsM{YA?x0lvr1#T!A)SFwC(5+N)pf~zYjkcvn2h=GmxW{ zE`Q)f0niHZ%wi`=#FC8VDwQZso5gRK)U#YhHCKrR1u2Amn=Z)Jl?Ow>eK(Go2BfiX>TC z#j0Rz(AMq{KcqJPVw?VyT&*!;Wt`AXop>(267S^fP=jz3aYYc-O_R|+_;EGS1oteM$9%9Q5iTyH%697(2$4Y z<`R6SI~_X@qPpmu5m7`7g>@a~i08r?fg!PCB!dCkwaKca*C4*r!iV67%Vt1!@!8+f zYoizlg~G>+#ll!z#4Ka!k3sgs3H#7c`_wIew->jg$x<7Izl`e=z^nt_3tAX(fJYBK z7qU{ArCui@=s6Jj zx0{0)7aKGiM1!b08OVOtgAwYXl2R+QY&98B8@9OWP${fbX0p6dcXc8;tS8JGQHf49 zY7=B&M8xNNalZ@IFyezIz=k~x;}f`Pg5EuV!mSQk5l+1}C(CZ=v31Z22SvNh8pNpA z%TR@_bl7QW>i3sPlZg;Ui6|Y)HhXh0lHI0GDfK2xlT2fe#vt43;*xw~?TFUTVSByo zy~U+X8|BAlt*i&>~^!ksB>B_re4hCsV>j#4{0o|(}AvOgKDTjG~sVT0c~V=lJ4wWKrT!M0|ypY;0xJT6Zd z@{1qT0ZdPj5WgBzt~>N)i2!ycmuW$W~tLvEUs@M9(Rdvi;J1S4~JTDSXxRk zM!WYAHOQ2v(PRVbuGzEwrIn>jV^0=0u`;o|62UR_sHQm7V34)AjD5Fh^ZNDKn;SPi z=s`z5=!he-w>NLue$3HFZ`(F|9^CFO>lY}g1=C}fGx|!~Ds5^8{IWw;sS(Vt5ep4f zTh-EJd9tor&jy$cMxE1gG4+PM&cp8Xj9GrV#l0YDjS}_(1}%Q$XIUa0C_gY`7tUfQ ziP2{5PEAwU?ZpJKVX(z^0`3vsV!;7J5Xx68E$GcF!o3hS67ID^ux^on=a$e}7Vb5I zW#Qf^DXVtjUZ1}^==9l_L$o^X@T(Cw8nOD5n!!sl?d*>NJ6((FEfg9M5F<89g9EsC z@D^ZjPyEy&#*}6jRN<5?ryEOPNOFdHL=c9pW+iEXdo{8H?$x@H@|Z)6*=rF%A(+W*ta2Z5cHa(A)Yf^Pgo2{u%(21Ew;n42|B|)w)TO0 zD14L`e`#giYA@-=^76tFb{&!X?x@3$>o8cb*OKLRy$NaqrjZdhAwJ!TU}{wMDCo2P zfs_uxJ&Y-WIN)AoG~^NC9xT=y+P*2ogH?w`7p^Q~+eZC%2h*#EVY!N2#_K~lU_BYR)i_vYc5ZS0}^5q>h;NKL;$ZBIGzmGFKgOa;6QuC zogTP{%fN_QQPRiv1BF`wx(VDP;Ep?rzmKBSHk6TH8^?(%2PqE4y>3@gy1^i|zT^xp zEvX@;(FkB$zq~wy7=rWdM0;M+yW>TzyJqM$SYBPukZW;iGbzOsYCRiZHkeuGRyrMM+&$sx;NI%9n})xjfV!P@SRHFd z`kPC$<~gyJz*^rjK+}uau2Tznt`E%-icWWll}L6FMNJ+GpgiDIjU1c_ULjc98bNS= z(GW%aaAX;?@yJ$vrOaoyx!M>9^$AJIh}wZ<$_Q zGGlOTZbn!c%8PM&?niA;SwVUB5&#mh+d+P^yfl)#qRb;PJ5AVe!p{J_rIB(w zq}GyxuZK%Xw-*hgg$lncwIdpf9-B7fNE5%udt2KMe{hZbh(W)C@s^nxEIw#m=V#zv zG~^fModo%sAU83)R=T~3TkjI9TxDeaXx(Utqz3#XvF%0uc--sasv)Sz70yHz1Ng`- z>o<<$ZR;i?SbuHAK$2*W#M5RRi(JRVL#QU5+PbAqG=TZ~ z7=cTJT1qWO+vG~Nu1V5|2q72|fVUu*X!ef(Pt%l5cC z8ZtYmgD7U<0~;Q96vrAxNniUDzcxwQON2YI{RLWMwoFTmlzM$d=|-azzvK+AV5g;N zGQlC;xVoA-64-+{SvIP~1B=UBHgDXRq1R}2{pxs@mRGi7(yd=FpBUkBgp>-XrD@&z zBXMjuZOU5NvK5@$e$<1qx3?X6+_4XN$k9j79`E&r{dN2vimixBLw3QeOQP9t<>W(S z6R8vWLkR8mWRZnhW{b4Cyl#0@wUG^QJR6KUw`tS5b<`UT`X@izH)j0{LU6AZcH_k^ zQQ|P>k7TgCmnD8+##-NMzuW02(92;0mhh*CnC!jY3cG*^_mwioCz(^ zv9EGW{EzMEaa8exRiY0^MfG*%3M)S0dUvr|U+Pq-ooQ=Dqb5H^WOol+ifZjX+q8rB z5>e0;=GNH_ZkmWb0a#MZ{v!R=8XM+|kF%h#YUbFnh z6Z)ljnyaYhY8R~?JLEc|>I`D#(fqDTft#Jzz4 zLHAPv4?zrkg{4JeYH?4yD7wQwZg7JRVq&plnhl%SDnt;pIFTeHn&r2nn>G%+1I!?d z%*AAV!mkJVOZ}nUu0QS$yX!U%Q1}~Z6IZmgLVT0Iek3da>jtcU5dN98LIqV=X3^g# zS)A}FXi|;h#Q|d&fo@=X60tzhjqu}}{r0E}@o=Xn9pawtPBU3nSY(habqCm<2n)u6 zvwo$U3}HUJ?r3FLOR1H#g!1dDg|G??HneO;ln=CQGoYxsGTE|T?X%#IAKmE>9R@UL zGom=@fO`NNx&qzgB)q|y2x5R=J;Ib*44kD-XPM<@#75FEVK1SgLrQ~zqI8o$kYcia;^ifAXXv>!D&28I`J@z5T9&=3g_EASa?D&U1^uZ6FJ<`?pCD*O3!9Vu_v9W@1TjxJ@gFXZlAXy6L({TE?At)KSj7 zr%|8PC%b)ErMOjjL{5M2s?u5M#PxogNC3a^BuDMWxUIadJBGQH`%UH4t4#qlU8_yY zjmv`>BJfB@zdrW@epB7txU4*gv%e{WgEmVE@!rFy?r_vuY8R{gz(#cHtPI&&^`N7$ z2?*0C5oX|FlJ@%$?Qd>iX4oAGtzD-}ICrVn#%yA|t9}0DQ)sQFEp0V< zzh@?4v3-}%`^WpgP>wJd(8genDnISk;V%<`#)csQLtB&N}5t4^vORB#H$_kzwUtc>y~ zAqDH@+~}D|s+35n5x1ur!UCkKJqr0BdiwmYB4G1D{uc_l{PxNqvJ&ssVO?@C2%6iR z4uiuP@&DTDc`_cv>^!^IRuu&YUg>qhmE7&AoTa@o;!nqUx|b>*RGV%^ zHG1R_49ZAJ$&Zm$2%OOWb+{k^#2iWRW#}$D{B~auj8C~S?3TcC^95*p52zqokIBpH zjmILDz|HY1P?fC0vWwgm zjc4j=YLZFJK7s@ce!|mWaMH(QvZ=AYp{6Ep&*8{q+OpYfbMvI_#-^^$j*ga=3G<5L z_a@M0m!gY}%a7T9NjFx)WJz?~0*0cFNjk?<+94>JON zW;Ady)UN>u`MlnQqR3^|QkT61rVku;W+ZjRRF~P;GJjSh*^E;nC-Q~Pe&5v2+{}T}f#h>3W;)c8u z0x~QDsz^lmtvLC7$cry$0#W^sm!$gKA(y^{k2LZ~MR}!P-{`^=20jVe32OcOg~_}a z@Um1SkTMvV1g$MbNvd#%F@UGYUZ*dnV0I@)Z&hCmvUBjR)qYnX;I2WrS6p^X)l|yC zR)l=23)PqhLtt(&iY9CWlWnTaL_DoEF;1|6>wK&ooQBmAD8L0yB2OhZ>~*ER{+v$0 z#Z7Rka~e+)kvo7MAw~s#9vN<+xyjiEiJjoDqfwu1ck#IgywMVJdr{SZ&*p23 zAs2|PTWAiTv+D>XF%1r;2`rLKr4?Lkk@AM;_dwd|I{N>EAF`l}?l4%H%v=ScF| zx{~Ta2DC+-0muO(5f6G6QIuCin6J~1MqtE=p+lED;*TI~o*=>rGIBA1tESomkxxkR zxdWbn99C+hXew;(xPmcPpF6Jlc^&MIDpAFpPI}!zWWIo;II9AtJheOypVQ|^Cpp*0 zGgvkxR9_C33*T(I*>kQEK-071BFnk zbOoJ33`;~S%`sW2@;LZH4DLv{q6~~e{_^?3v{i+}yx5>t2_%!%IghxxXbb}knN*q= zH-4dy4{n1mZsk`z(b$m5n{A!aQeQu5 zv#EJ%cUO0N`=ssGZ141*o{o;m0Q$oIG-g?1%!OZ}U{$rz}45+)cAZMSI|Fyq>`xaMHgZ84-HpBMX$jrVIHn+ zQryTl#KOBR9rSsF=w$~jE}th63aeqHgWsRRun-tK$!U-!hlEB-GMhZ53BJG&jJNEG zfm)c%AxYqR(-_q5^pw?c4!GP|XRUISB~*i%b8Tj)J8D;?vZ%E}!lW5*z<}usN+OY{ z%r^(MSYsl~oV5vpA;*PrE?lSsxVkLILFoKK8zrB#l7}n1Jg%V3?>xiibp+L*B%{NV zzx`-3`5nZKzUahlj>|5S&lAUN{M_yISV9uNlS)Y9jd$3iR`NSvdCHK#$(4Tj{GE!a z6BR020vSC~2*})}mdaF&->OT`$DS{`+!(+A&zBMiN-;@qP`s776sh8ZnC2ERln_^W zoNmuW?o51OQd=>4f3`GI29tz9>oT*VR7x>0$*Ssi2NNnLZv|yYbrKb20r0LhArEL; zAC00mw9B>%wNef#v49^e3#t$&h6f!Ui(4{xwKg=xmCpKPP_~%Ep7U{bb1K)yp&|GLZF$7^pi6RW>o|d!EgXel$5wH z;;U^4rM$jIAJ)&?J+3tDN!|daw0ax~cr1J3RdUSZtU{iJ7!NxEo2sh7>bPXdB+2nm zEbNKO5k+yT5bOGR9&{k)JO?8>c2Gwr&W7I>&3J!i%r(0W^oAd7;Ppqz?E{!q51mkM#{*o$Vb{rcBz*W@q&F&X_uN(spOpoW5DJrcIj+U@#WSpv^AN z3-qIy^-}MZ_%J&zi^c7V$IH1>y!KGlWHlNnQ_iWnbf%`+WX(q~7OTofrj7@$xw*bR z7>r1f(Bcyz)fGNZF9jQ32sgY^5{ZVH9*TlqQU=ZBblKWqMAx>`-B^)wSyKTc zN~ElmdZa3+Pq9{2fYm6s_`^m_U+|^VX?w1g3)f@Dq1Vf!9Es-mA_a2SPzXEMaQ+AJ zcJbW7dEj#+quhezm3RdmR=JFY-;qE><*NBRgia8@!?^Q{FZjQy+Uqd~6mZ0)xXTo` zQp%g`s8XXwm00c$p#L7Q=POUu#_y2#{9Ts}OjM{aqGFE*$l|23QhQyJ-vNow3%dA{ zz=Hqh%NLG-r!F+AK8QF#)D#!Qv~?(U*`r{95%Vnm!^Nj7V|I`|gOtIv9njiphUiL3 zK#&d2Uyh_vZoE+yLg|#PJfxJ%4N*B3^EM}{lz@cZJR+w?eN_-ybLI(MV^lec86#-Z zJEyc(tJ9j(VYSp0Q_jaZN9Xz^6qG=YM5@aS!y%<96jdT>Lo%lDbl`O7H0EUFB;*dL z&ae`SMd20K&l4EBk}K*?rNVx<5<;tPLooo8W35tyjsQf~iLpkYfQZcI{oDRp(Mymc~Fdl4bjn?=AEg{r{E=8(^Jq3XRU0o?DE_vl- zwVIGz)qHs>Y6Gk?twt_Dm=&|)O-2$3o0oHO0rbjMS3qvgAne|%U<7qu%%2QQNkx5r zms%G<>k;v$LlHHEfvj{e9V~6C4Jt7|uN;GNUChF1QJ;ha3wKj3`nRr#7p~+p7rNxR z))=ioO`;9e2->VL_(`un94ifk(oq#L@~VL(MD;!}kZzCcEyZMA3GzO#OLai_RF#ZI zQ_j+~KTwO#4vG!m<1^`)=slqW6^YhoYU`3o-YasuqcIFI)N@XOU#V2Kr8V2w#EToh zoX%h{6ykeE@vEk;vpt*58N^?*aY{pS;>y%_ceb}TPx1LMcmPjPu;pYj*I&b5^OWh+ zruMY8P1@}0nmea&&Wst8wx>vdI{u&# zq(Nxko1&1OdjnYD=g##ebAJ{K9`4p;ESdzjnJiafE|rd^WByQ8RV#YYkl6&hmS9i` zp-~EySp($_U`m2+*%?&pz>{HGY9L^Cds@9-=OzBiHZztaI=r3s2D!2^W-h}V?|{|o ztChlm%38Y}3zf?vNi*i9hnt$3+j zp;Ulp;&d?P=69ak2|4*)6+C~p*2UCF?uL<&(^?9tman4R-CD=*n2I5wPhGxNMD;&j z;Y4+?E>L6+MbHriuh)=BB$K@}1DH}D@cJRO{gg|&PdVkP-m#RI+koorZIaW6t0ig#5;PbTO!e(I2vm?;A@qU zQ9=nUG6*USYK=eSZ)^-_{7NHMTLomuZ_2EVjmSu9FjyK0HdZ4JHG!IN)E5f{rH~x= zcV$CzB3xTl9ZE&g(M)V=V@))wgr>yMrX)knP>=hgfu?vq|5Tu z3i+yWceaAlldFT(xvZ5&Ud^}Faqw6znd$93-5tpo_`FCmT^>s`r9y~NFchnY$SNFx zC{GQ9%7gxhsvtT_SPsuNX)s}5($z(Wp;Ps-W z%eJ*~kNDNtIIU;e^p4KS7FCks80QG_?Ne|yx6Ya|eR|$xAduuCA%``{&M^F=NtZU*Ba*2A2#BOxo_hWckptWeXQh7*8haQk@u6 zbog=>YHM4jbVUNW<>@?J5cbqNxDJ?~KrGhOj1FvB&Z&;p&TMa)Js-ikOhe;z9+?gv zxZd8bF1Q=0N!{=V5AjQ!fQwk}^UF}-Z!Xe^x8wOL4O0Ql!doF3$W2>VHOsIbHiyk) zm$7ARJ=?%;WuImD3YCIWs1q{6Y~fzv1>wJi9|`Y@7V!>om$+NpBR(uXDUOIg5?|F^ zrny41PV*1XcF$iRsdh_U(oE@6X@Rsz8kBC4My12j>(Z~JKS^h#F}WPFGPG$j8gaQ% z?v&Ta8|BZ)2jp+aqw;g$$SM>sxQr^LUs;9K!e4NLW^tt%Rw4bF|J)6envVOLdU5@x{WW(%U_Bp{OxDcQE zTzrloK5rpD+r*uS&)wo@#jl7@iBF3^){y3M%?+Aeo?*{N5@B#omU^VViTGS54NKpa zj!17x?@Av@f0N4~Zgioo;_+$7#b>QN{2$^oPnoYQnuw1D@v)za&(K7CC>NiCv-B@Q zeAxIu#{W8gV*EGbzZ!pM{N3^Q#f#N-a7G%6K|Y2HeNLL&#{k*j%SZIj%$7$IX-^;Eq$|?|=XE@89)F;rn;Kzw`a=?{9p6@cr)hJAU=P`l0m< zEh#%w`ccWw!lyr}$mhdc3Z4J^AzoiR|M{u6NAUeE;BZbo|9=4QU&wv`Km8k`CA664 z=8Wh6|L<+q|3@R)bE@c5(N(m9ZeT0eTDFd@WLInM)qGyFSMvqU{hBXozNC3TJfPX9 zc}VlH<`K>YY(j3ryfz4#I*?cMxuqQfkg5=8PIam3&F!43{yg>7!*St-UG^9m2 z)*;syQV|tX339)YOk_sdmr@y7shldPl5Aur2RTvx-Q*#OWKzgWD*4Dy0SZ!x!W5w> z#VAfyl%OP4Q;O15L$y>#8LFoSYNRG=rYY1yt(2uUYNrnBq%P{FsnkQ$Xgc*G-_1m= zGMoBn4ro4)`e{C0LYLA2Eue+82q`g$^tcT9bs6IG5bdW&=utXAPt$kk1^O<1kG_u_ zafp71RR1q}iH^|A^xyO&`Y|0vo%IU+lzv99(HnG(-lSh34eq2{Xbas=H_&J4dHM`( zqnqd++R7fIhv^yi723@nXHTH6+rz%Z9%TE(AF)SiJAIygnSMa8)0b#7?O>145c?{7 zfbKxfx{@~01N3DYp=)U)-AHR`4P8&y(Q5iRdy;-hH?!;La#}?j*a7wp*eeU`W#!%hS+7<)`9u` z^S~v~o;7nu@APRs5Ri6uw6|q35RN%Om=;u5i-|2zAn&eM1fJP zOYL4Nj|7&EXaZ_aPn>_N%b>9A0)?d`GL*V6HZvk~d&{78k;yDfUim4L*}Tc@Ig`vR zH&ZiaT6C%M$Sa+ye2^`iGl2KII@Ja8$m!hs%-p*skoz#;Ls4Ku?y{}ultQ9MRZ7Zu~R7;hsXbgiJm^#v-+ zCR7Ui=D!lxK%keQXJZB*PEz{-BZ&5Z8T`(dn z+o#9EHbJmxtplp}gwRGZl(+b)hF42&eyH6vEFJx^^Yz!87f%6S7h zD|ywf5o^Z?ExlsG)<~iYc9BK8cJYMa0pxC}a|WKH^!V|oYh>p$ynb20!!c6PfkX*( z?HU-mazt9{976uQQXX(BBiRKY-vV`D`2wCws(B=Q9NytV0_JQXZl5weX&BKS(fRfA zfZ!At@YI5W+>JlAy%`$jk%IguPto>fd4M@-(inW1Fu~t0at9xxzoQ41@r2cm9;brL zoxA=og5=Cc0Kpj1p9_-)fzX~0Q{JEd)1c)|^8khAuH~H<1n?q9@sSJQglqpfoC2rC z1Thc{fK~g=9G9U+T;=HlLyr0>H-ycDBCx{6Nl3}m%hF8)ZRG@ z2Xd)BkxTk7`pWCqpVOOo8xcB?0lTBQMCECk`<|NnKKI%4DeY;K+VU>F+BhkuHVzr&Cw{rE?ym|pw z*QxCztb)bSs1-7i3Evu$k-o6ET>88q zN_z#f^tnAj>0aQoY@W1-1*CiK%1C$bo+{lXgr(hrRr>z(KYd=vKCdt7zH?`Rv}BlMLNiurES8Hv=!gC1GfRgj7hh$A?X(AZ5F)Jrj55qH^a2uU@od{)$D* z=3ljF@%$?nT{eGF$Ab9_I|k-oGBj&`|Im#2^M>ZkpF1>j{`4)K^Lw^*%`G*cI&O!mRPXASaeFA9z$8iaV|fS>Yp5 zW-;N1q#yq~?WGUECte3G?mF;ym*M+GU=w0L2>$JE+?(;0Vpi~jTkw7jZ3U0^b#Rfh zz@Obh$6@-C|JO8{>}~9U3!5ff8Nzer#QVaD=l|D_LGaN1)F+_7JN{RZfzp##4_+?B zA$-3D`pZb4B$4K2q5=&7GX+mj&Z0hxj`M!t9S8(avlaFO!$d_s0MFtWQ3=#b4iOpF z5*cCF_$ZO-D3KXY^9#T+BFi=a@1?77s(TiRd7P*MepYh8t_^m1BHQtFz-`BCI4vLq zARMm4*hv;WD-U{K9`rw@y{KWEi4;9>lE@3FLqtBP`Db92;s&B1{0l)XjIf1=0k{#7 z0jNdx0k9KAxMGhI#Sw<8KB7boaF(cA1H6OTP%DViaIOBO&&J5U{33p~9j57}s&3cV!Ho~97W}?2u zL~~%5cW~!f0jTvqN;F?4y2J*+jZ0zvQn-6*AJM>4U^meMxVc~((L$J6c!p>Z!n~Mc z4*>gvF#!5YpuYrWm%#3lH30N4>j#E`1HfBEOX2>~dZJ|~h%P@)bj3SFLwcYFfPX`K zfkObovK;O$pFwmb+`MuzuoD;sVDG9DAPeAo1qaktLTx47UbzampXllpMAsk;*Sr9n zBwA$#puY<0tDt`E8KUbDj@3|K4fWMa0jRG&2*ABHdI0LzBd*sE0lNX{T@Sq*pmziG zZWtlD@loI?aF%GT4D_eq;ifFS9$O5Z?y#UH^^B)-?e9+j^L2+Yr(AW?%&XKeof{_T#`=qC0%R3}7t) z^LLCA?IZyH?Cb|N1CIi*vlDhcqXAsNA);L{xC`cYLH$lWfH2>=7}y5DtvjK&8+Px) z^DdaV8)ojV0bu6tJpkOe`xMbVR-hRe0-$~m!g$XKqCF)*J+PGMvxkX32fKT1M4xv7 zJ-{l6hkU?EqWj>+eQ@Kx6#(40?*#yE+z&VIN4V}E0`?Mpag^wRPGAkN4|o~)kZ2#= z+y^)Jtp%XI59<4%{@@+};dv0@|FRxP0*4{YfV&U%0SMbe_};GpVDDk5KMeJUhk+5` z9im5I?~!I;4X_`8+mDXC=wJ!p0%AZjFauZ&tO7Oz zyMcYc0pJDTDDVyd`aFklJ_q_d7X#qubN#>y0QR2S13U^GBYGbC&#wiZ01g76@$+v1 zCxNp>-_-+f=er@G9_RrEfEB<7U?*@tfG~XbFaZC*3;$mLUWD5(o*?=@^bQRZ{h$Vb znIGc)zmfpLb=V9XC3*?wj{yG-H(!R{k4k_ih<=RkpFB!*6z{Ldz#)k9M~Hs<7SU_l zh<@%OdL8Z_vjRQ<>Tm2Jdb5-07tLS=>H)a>_8FpIo+A3yNuqb)-aDg2@526j{lIHP z@4rBFypQPDGl)Kb{%?kePMC>)3wM7D{og_V_p69b#()z<|8s!ofAReX9{@j3?IAin z12_(RNc2ZN0DFJL_n!!mfh;fptO0fc`+C(Oq7UKLhkd{X;8EZxaF*!Lu={7& z`|}>)WulJ=s0Y>nPXNb>{sMJGk9|d=d z{upGc4DwF~9+uHT;3WEJR-hSJ13U`62Am}(!~mETb^;^731TA5idkRh*~4sZ(im{>FXYIXrJVpHJW6u379?oByK ztmOc)R=l^KA(llP+x8M`p8=dD*6|v#&L@C_#JV0O*3AJkQ?~&y2Y!)Fhr83^?(}|O zh*+-`_>kBPxI5zo;3)78a0>XC*vt}QvtVYHkJ#+p#QNaQoDpJk5tey)_Tzg#!gGn4 z*rjm)QrI2P0|@g1s4rMcY+*An16T~ejfMM&Ekc+U!|viof!6?pe-QLo0`<$Ff7vK- znAoxqvCCHwyJCRY5CEQ!U5V#a{lGC|E8*wWFB7}w05R}w>{^(;t`8U?2HuUWh97I- z=Jl|5gOwO~F}4ojxoIb{^(TpKgxbx}+f+krvmSVd7?v*$Rm&wfnoUWDUw z_Y>O-yL)?xeZHC47y5~T*I?i&*!_?s!jdru7$`x?v~&;!lDDquhG8t^f(uls-jU?=bb0K4Ci0oeV< zA!6U$2f!?Hkt)sW)xu>h5gZ^#GYLWtO16BJ;c7<49ox) z6Z=jQfSvF30i(cSVh0hgg9yWOA)p?>_wz9KJj|iJWiMy|gzI}B5_@q2vG2p|A*dfZ zPV5Jd68qsQ0RA4f0Wf#?V`49r0B49Df!!k`#Qu8)v6rFt@&RH$f*(J25&H?u|0G20 zXeY5(Rsq|9eE`Ds%28sk5&$!=A}p^C0h@s*fY*St#C|FReZWote*6^Sc})*w0l4?t z{lH;jKkEV30&x3haQ9~)6Z?4#SPbj|4gqfg9};^V_Fwk_&A23J=_HkmrECHGU z==~Dz{qiVq0{EENudF~4=mCa+-M}aS{da5t)Zf_*901+{&JcSS;e0m+bOLJtxcM&J zd>8J$2e;l^3hV`52H^jD2>bi6^FHjn4?FKe|NRZX9spr{AATJ#0qOzh9p4Qg49DT$ zuQdSN{Ph5^4HyBS{(&BV`43hA_XF_jgR{hb69QoNHyZ$`|K=b7^S?pZPRKwOfFCE| z_lZNmhs1sh_22dZ!vNg>?QvqiBLM2Z%K}3H{Qlh&0Q~vgNn*dZ0X+cx`90Ks4?j*K z4kuy$ty0D#}%@z|LV0Kd=d z2H-dNJaz_t|5XF50*(P668oDB^Z*FQ-yQ{^{x`V$cbNOT3#b8R04o6K|NSsot!lmYJ>t4SUl2enNFm{ zEAPC*%x^9k#PdjXGHp>TK_JEUq{fa3fBd90CG7g-CWrv3Z~QN82js7X5W^{1oZKZA zt}EB*9b!>wm%fc!Ti<;Z4y96`q*8E*8JSLPVXZ7JrYg#{6C+`G733wpKz7}n5Do)jzt(t=i%wX z-LiXuF+7OpO0I4{&vB2a5OVSaD$-9zR>iFD$>^#R!LRD1U)8A@HIvREtxIPBotlGM z2359c_0-|1U9JV`>s+_@4EL-Cx?Ky?t6f{C4(nH^S3mXCQ#Wq95&yXdb8kY{pw98n z30I4H%+a_aTW>A&6$*v2_ST5w9y_zw%C{QpYMW|&%(oTiz|_&!Y^^EDlEaDAOow}G z)=pMt9WJZrMqC}Q45l5YQ|Dev8_d5RKa)8=D?__s6+A`Yn*p|++`lIIe9H*m$*XMNxEe#fso+~(D3vZY$)Ls?cq%H9U zy5#oO%_YdNr(0Xor46T3$fBo@olcwI7(8Wqx>a4{sn!rF128n#in^R z(e@~IWUKS}`|aghqm7QR<-P)w{<52EXV=(II64FCOjw?9iK8T0i)BLT2Yas#>XkMr zG&Sw145VH5x|%ApWlgx*a&51Fy3gP;wYd^asOY|=D{Jw{3HAk7R9lf&%iM9Erx~w9 z*-fZJ3#l?&sG(tPVUebAkXm12=J!&LSFkHMLum6AHoK{`I9hpy1{?VZXQwA`Xl%Tp zdK%oge0(bVt7sw%Nm+xQw6_jhaM%i2^o4}#EzL`M3gw@>WkeCK;ANU;t_=HY!;;Q` z&2e2k9G`Q2r*O38GkYJL)4Hj(qj&%Oh2MJoz7`(F@sr~{Y?H`mpV_lTaQasGQEGwX ziJa3pmvt>7D2ZADlr;)ETf=1?=N(=*wasj6yJ%CLFr8dP|V zsM=o|OeIp5w51`@kWS;t|I!R4&z{Il#aK*J>=%Xt3Fl z-gLED?{K?IjJ|-^0AnSx4bx-a{^IgpYmtoF!01)w zB5QAXv8}RP&ontB*cqbGp!!q;wg$k1=bg(aE%Xas%n(dwE3^fAjrgdJ=?VpgNrNR? zkrfr{z(u6rcm-MDz0|wdI^f+w{P9eMMk(J!q1oE@?iSAYTSsSmw{-oW^SdHQM_x-Phx8zk60LUr(do zv)!0iCz35&EMpRbs7WBm0_^jq=M^+KWr|L@nt7G6_t_GS*LD$_K?adt6cdeQK#iRTT0mf3S>dD6*1OCO#! zRl{oIwBQXd?wT?A%%uTlN)l!@KZ`k_!EAYfZhIldb7lQfy@*YZ3k|vf?EtO^a$7Qs-s4yQ|%~;_=UKQ0Mvue~IJ|SANn9hFdAg(Hm~_`1>i7mAz`I zYrDDCG~0yM)Lfb@?JE^a1ExDH172x|idmkmNc0>L2H!{x9zJb8%4VL=d;aOGb<_*G2j(D>-&|Kf> zD-VR?uFb8Bd)xeKIvOa)E-vb|)uCK|${?+lBCORI?ySb9c17{B?PM02=-D3k`HRg( z$)dg@u_)zJc7(`wN3w!dROtPoMa9M)MS7$kNW&YI#Ng?aIoGlbrjDeJAu&^@Q8gs6 z#}Ug{UD!t)l~_98?nYT=;%y>I=hF9=kt*->8~ScoROh}V?y3#hI_k6Tp7N@IJsFgG zLxJiQ^|gJq4vUgzYpnCC!*koiiJNe+rYk0gBRA>GvC0;^N3Oxj_v94Wk&gS3A3Km9 zTaeZTnBTiB>ui8%S6`x&3Rz*Hu4H?Gu^44!kKsdukmFk%g{B^Z2HdTwLVrh*_6{R9 zwltPd`GS%GWC_F-+=%(KnP=P7;G5CGLxT+spZx5Hi9y7-p*lH;wm_FI6FHx%W)xn< zvHx~7G-hm%{CW8__w>Ns{;^-!<;APk)(cvDV{4nl9vNG*;eiLPi>+R}2CWyPR;0;Y z2(L=hvf+a5c5~J=g50B8tlO~@3H6~Q`K)&&iy8J~B5{Z6S!lk)i2Qn*r$#O<5H_R( zc%oFE5k*Pow6EiQDEcTFMW-Sg=lM?FdIxV(`}{pK9F5DmmF7xzgXix>m4(fhHn{xL zuj?tVYsgf7sl1}D!4`Cy2EW(8**DFuRqMKf^^3D=L2+pbXuJ|({*3SfdM0t2nXL+F zL)$Cm?Iwd{NEk!|4NFX-N~W)@(&~2vlIn;m;Fu%Y;aU{kQJSv?c)$_;kZ>x4idY0BE`kK7Wn_s+LUtau^ z8lOE~VTe^FrwCnwF_29g4V8)Rs>z5w)OxiZ@p4N%gYl#^m|J2lmtTBMdli`cTg zG_bvrT+C%EWu;WVU8_e1(Nkx#i8bwrMk}?VA-zLc*tWxfiUf6OX(bY!Hv~%tkEKq7 z!{Y@JDi*G6LH5jW{v^+)Op^41eBej^K+~KfXp11C{+(px1}*-^uuXAKS=<`wsqqwf zGI5Ki!k~5xW&Jaz1lertkW(fFEA`cCdC*gOWysYS45{Jj2R)gZYI|i;dR0isuuYKiNf;?eOD5+Ow^G!s}-~+tgsODOeA~a z6^KKSZQgqOW%LGYQ8U8>{d5|P4(8r3RzjsdI9TSdG%%fiBl~61*kjDqI<|$ae0KAO zt*c)^vBCO=Ey9iLP2_YPl{}*<;0(h{@4bW!i1v(gC@a{Tp0UWh-2cCBVFS11+vQHg zvtuHjMI!|eoU>8HlgB2@WAkru{Vw8~qr#`-3Gsx^q@9g;63hNuJm30%98bSC7-t!+ z5E=^`4cTXn0z$xlNmABM?sO*UBsv{ zpC{rp_+6zTu)k%&kaWs}3ED>3TURXEYV^hL9& zu+`n@muh06w=ZJ!kO%?|jV~5o7hc6$l}qT^Y)|jh(dlgZa46PU!)mg{I0&j2EX+XD zK<|K%7+`{FKpGJAbBAx0?~w($wS~2;K`;K&-sH^e%)Xi8%+PB8t>BUxAQX6}!rsH5 z*-(k8r@=5a(K>(jd|^H|KKN}R=%Clc5eLs+7XyN5Sq1a zR`V?9Q~~0*m|Pm{Tv*d{&-LB$8Os~gOMG*fMy$5j!i~XFIpDchUzA*M>#W;<{F$l2 zzMK0ywqBLR(TQa%=2u^RX?=O|*jrk?#$xifEvRW-)Zolq`_*fwE~&Q_>5l5H##c4o z+N?XC;OS$+-_vN9%CJi5FIfu;KX&ugS+Su%U*}@A^1^bP;_G?M%1lY3vS4MWm$o3oA9Y)q?WX5C}E5q(ytPm$<=?!aj ztU$+bhO)tG(2e3>Z#ZUPn+)t<1~y_~pMktb?<{M#Rc_RXqOr};rf=7^W5E;TH?6H; z0g>mCS}zR_4qku#j&qU*cK!8v83P-HFmRA-4?969=pBHq(gOt1=CaqMGj%=(qK>sJod+-b%s3xz+4%n5u~TO925`+I|HUVP%d zo}O=h=R19ZyJK6|lwHX0BK1Pf^1SdptouUWmxi(#?|N%&eMz0EE>S1gL)eV2re;(l zS~a3cg9NRusosd)8ABVvk}`CcHM(wxdy@$9Y>t)Bal?r8l!PtM5x+6GBZ^q{s3;cNA`0KUdtHsM z%xTt%0;g=9VSsCYqPH(9!Bw%$YNG3)=g$Zx8&MHA|l5V5`Bg1Jyu(I#hg==Gl zxoY-`#(_R7rici+^!NzrVIrAkd`rLH%xjFGv9!mGrLDJm@A0A^N~1O$6ks<&WNTAQ zhD~-?H;J2Ua;m|;JI{QthmzJwsKmiG~8C@k=Ty*O(Ux# z*QFnBSQ(kVZcgMD#zMWX4dr3^7Q#|U-C2KuP;4sx zbQp>d1|EQmy@&6o|J`%Q0MB_X!s8#vW4}_dTw&~!F5%hR_TD!3YaV~z4xU0DQsAc# z%!pQ_6-NuS)`9|Ufwn@G)(;!KT5X|YQ(3o2n+ggi(uv0y(FH^H=8@D6^SRoA%K;#F zOrvO@=glt6VC?Hw+0eMJ-*xre?rVB{nN|B&B(I6qtFr@BE^GHr+aL;m9{Xx>d3eUE zTpn{Fk5%OI*qn1T5~W;vt}}!MvA-d(xxB@Ae^3O6;eANU)@YfeZPg->Y?Lt5 zNyGvbk?BPZ4@W)}@OjDL8@W*xUZJ9H<+3SJ{qw%ZAK>oi+_j?IFMzvc)Rgs@OUsy< zm5!D%YZ+rWz6&E(ZKZ96tYnj3n@_D&D`Ipch4O#C8b?AIMYO7uo%>8#n*FvUlwHzM zx6I#VYY1Wst#bXUeLqjnYmyY#T8qQru2LALjOF4by5YZ-ewN+H55>bt^Ei_UXUbC% z%NFe^60AiGuSJH!0>h}$Vl`R}MnTk)Q~Q8cFlZTREojBGqd1$}QdnTIIxSI4lSQ=P zj71ZgF&yeCRkT)!`ioK!D?-by?Z!6CMB?#wsTx1W4%KiczrC8|go7HXKrK@zy=KISNRtI*9t++vJw3Ou;&4*|2uG(skhA^K-8}y)nG}swIkN@l`7$8&6+3_xa}zbe^vh znm`{D`dAAVVQGv&*gR?!=dKw|t4%+J2*zmXN6jrFEpk1r0>6>C_!IG8D3>PWH$z)No3>pu!56ir!Qfn<&apX@)jdmH&&Ne4 z8m$xtvN)&1a}j946I6;^)qLF-A6s8pTVHR#;(^C+I<<1FR(Mvu?7H=h>|vB@fw$$N z1NE>8J(Bn{hV@yAH=Z~%xJUA9*AJKbXp^H`zsZaeofp0GzHpQaURi#$Y(g$4eyT^z z&Q#5AQd+0x{-2t1<@9jf@_QHaXYKNPh1O)>icIfdvhS+;-oa0v3H9 zc$4E}x(0q&OpmFi%K@qR19trz*V#rU?crz(!h^cLy4;+%+dy|G-!3mU%3;l4LN_ zRqbpOzUNF&uj*Zqb)6KxR;1r5u%iY~!W$3d=+~8_p9d@ZyR!z{I_(Lg*)@RE& zB`XZ2J!MJX`r*O^-Ruc&DzLRnn~b@^we;!txKMC{pgB1q#v{S&@o|k$iCl8yzT!m` z7cQTDb(?GH^^@` z`S(EcO3WmI!F0obyib32AP7^cGpH6oo%7A zc0;?-{F}x|qX0#kSKS3p z-EN)eiG!I%Dj~`EfIa`iSAH~fLj1wGkbL(LLsoobk9W)SBlmn{8SfW}Q2D^Up|Z+X zS>cV8JCk0k+O?uvZmx-%+Uz}%%7|QMvdN`VW6Tkmu`(N())Y0gmw2PewYpM_$+>ZG ztl1aO_^M_%D#hmVq8rN``Z5nc+|OKS_9dFb4gK{_94}Y6USDc1&b8m4MVa~y>MI@1 z%_am<15t-Ks?l0CTCHYwAu~h3&F4yE6tB?(ZX*#-ImQ_OTP-69ZPU+ zqjqMsV|p`VcBje7^dS_Wj+5~)OE2LKM=GbGwViK_p~pFp2__NDhnSmE!Mh)2Xrv!nJZ5(TS1!+#}D2@aAKpDP<)%6v(Q3T*T3+ zI%(>(sh-CI3$MDdb^fi4}XI zR+8F0ZMJr;-(T5|b}`R9AgUN!v83_;D(_()JA&L`Pb5kkQadJM2X>4z2NO)zxj3I! z<9q|0IL|s12Z`yKu%Zp=A?$0d0e5mf~pIkBc?Im*_o;&d5B5$`^ecg3e zg>$q*uT(6~m5Fa>Z^Wq!ML4RYr~n6(6&ZEdbH=FCQelA!BAUW4Vg@v4ZS6&)g=8(H zLVKZIXEGO<3JgYFvGE$?AB^G`jZ9N8RB)m|{6YaULTglKwCZ$5r^(c667(jW!`^Oc zGlKOh%ymL0B`zQ#X9+QEiT+eBTU?*ZE}VLNxW2)bNbH!%FPwOMrquJes9FdIffs7i#6SKU|zgm{hGV2t6M4edu2)TEB1;)^nFH*8e^=MkVAIvhhib?E$V#vN z@#>ykh#v;(gbxru3tgS9H=A@wA5($ef}=(YjSO9sZCZAxk!kTYN?I$QWmRS=)R$V? z$hgrA30WaJ;GBO4x15)crQSG_o=mWO2ZINEGQs$K3uJ6?!4LuPF$)Yc2``7%+pCugYv(nC4x%X`iue-Bg5n4ak% ztvg6ME0lFvy}3uH*X%ARfJA6FT8sonv@pkoHxSW$7ZzO$-p)hzgK%K{5CfbFD_|z~ zZQs1jJ@%1kTK`F4J&FPR`vT_8?9R;<2xUvrNqs)wNfki_^j`SPfdr3NB0nb(NyPi6 zW$G91x#}L#^l?3R1G{!jWk1V>Ig@pR;Xa7T5;~$nlaA?i;9qnIEL)7g!Z{Eyahi(} zjv$0b@}d*WOHeX!G^3mx`^Y_vFf!9~>xEygNBCA?e#|Q2IgF*avzWA~6F4cbCTIyJ zxup0M7YIR)aB}N{x*$snt8Sn5oYjj#r|&2v#R~atZ8=d(1FpbB;D&60+#JnA*xH&GwMH5b_O4voc-FvGkhIx#3Yk!FOx9W=Kiki6)?Qy~0q;&5z zPv;|pY2FBkC~n4iE?9Rs6B+VvBa{yph)ZLjHIT7)9m}!9$$Aw&o-RPw zE_Fp_)F7z-c^TnpmlXI8W7Sz4QCLn=q26@sFnP*Lw^rEa7M5()YZ2n}GFMEHNug2X z)c_yEvX=_yKy(HG;t}8EgbtGFZski^UbHlq zu>8_=Yf0hyVvBFe+=+bj9B6Att@hb$|6K_dskBCMYK|!u$4O1msL=$$it(Tc5*o`f z%rGpYL|;NkJY-_Go7id-OPZL;B=JVcck8gWs?0jqXqw}Ywi=51BbMOSN-VYK9l2Zv z<9Q9_M|AR>%#pz(DfA}J_5aV!KIE-AB0H!(*AuO%Y-QrP{8v_m`DBwls5;Cz%rFT# zt-Sh@o4QLSbKL{mCUaod?GWD?i`C|+O^H?pc&;;gk=Z&oF09dLKCpfAt8;k}dz%SN zsh{dkX7V|2vYd71(ke)+vR#VlR>FzVbWfOtvqgp;Y^V?x!hu_diLi`c(n)tV2qc}IC2S!f0RqHMXcT2h00Bi%kZ~E88Bjr^4ifzuT!x_I zgp4`_9rYc@Z(c@T$JZHWp!@wl=iaLBPJ;S=zb{KKbx)l-_uO-y^DO`8|D1;A&AsY0 zAy|?n0A3Lo#nK2NqM-MhBKS4>+hhb*r2!ZD^_xlnWlBK8W&v)5;qiaW3d z!iaysvkjHkWKxuqDD#9WJ^p%hEc#SbiduI_M)fHt$orm zB2R+Fj{FJ(F9C>vr;J$p>*Fs&g?&YJgKFqf+G~yF3xgd<8TfT_IMrY)vY)msbyi(v zPfwTG@NDdvMX9mMdqb`1pz-S9os!XQJY+KU7DKnqoOm+h4lG~0F3q01<{+1c$(d#1 zO?XZTWRKonUsi#}k+dfh0Olu8CP*A67?@A0jzm0BPDlxpF+YJ?P;HY6bGWzTW~#~b zWFopzZ(>H%i*V!^^=q*MfqUGBN2Nk(u!?b8Z&LhYRzfz{F2B9`9#J^48`g=oX|=$j z8fp}+j*gXAE*rQcU5zj8s1KTTp0;3lS;^Zwet1b`Tia)x!R*44-=IXi_Og4);P!#I z-+8m$)7R!UTce%B#gRj6^B(VJUATR)#TED4%`Qv@ii;#xezq6PIC9XToJK_Jr3QAI#E}~Q`{hph$CzbxE3+wfdNDsG3?jI z;lsws#%h6=;Ti{UxRz^%hH1O~_4XUSMQPJ^KMC7H&0^S_=MB-gJFqP^ zwdxJBPWITCMGniNO}5G>T`-qroy&#;4%!q{DxG|iD}J)zqMFCPlibM!r(d9?V{sjT z1Ayo1Jg_d-dDghs*w$Fr=tcygoj)d8TyMP2WBaeXs+?3wn(SZp9$xD$<&u_9nZn78tM}pO9%o~f zJ;lYhEDbGNHIfP~UbMjf&sct#n=591&+f(C*o0a==n!lsSw3mdc?>#(&Tf#`A;xDr zMn@fi!T9*Oa&d+Q-XNtJ=NQ8S>%jw~U_fFRlFKsj_`N!2jfTuE^$lgw9eC%I3z-Md zk+nT6T?PHFCcIg{zmV(8i3M+;7eJ?YCZ8+hTC$l!wl6D!sQP3f=PBee|5#wl3QUi4 z3FswPpNAC@?svIPQn6pJ>nDD;%nvUE^Ow5@x<X zYT)?ktgWf8$*sw*p`9P^=s=adNc$wg&8ng5EEe$kohSd^~}gj!a1 zl$W-8^m<4YNe+Rz-61xAQGAY_kFekCZ5EkI4F$`CIal68V#c0!MhXt2(QcUgf+S7v zZ9E5YC!T{x_;7vPY=sSLvYwPpFvd+cn%HU+E0~y$qe%yR+f`?fZ=d`dS+vOPWtlxM zGbt>WWRYwaQKqV6ClR)SQHWc?!Z)q4%CbwD6f}iTozL0HRDM7*79f}X`w@+Twg9Xt z{>-s>VIA-(Qzxn&-Z1?1qO(vN$ltsGBrb+q^m{1!DGa4XJE zH{u4sYzr+4AUny4y2F8EAqcH5{?q3 z`L}|NcU!&BBUrtt=y4MD#eMz>EN7pPP!eK7o}iGeXv5Lw@G+w=ZZ%K(LmPc-y=w(= z(&HjKhwN?oirK}Sp5Z3I+!L!u0|eoa*6;x&D%6$uzn#Hcy)Bq6CnBt+vgwxPs2=$6 zr}9@V>|NIxJgAFyu52wWG+eUs@a7J~^Wt+>H*`!s{yiA~VT@nFIkBN$j+;$Rr^$4Z z$CFJ)A<2>sxhy{^OGX(pEhOTRNwammajnxcDL0G&ZP0wuU!INZ@?%!D2mDgH$3Vey z#2V)4#e2HO?^rRu>n|Q@Z*9*Gmc#5iv(HkfxB0V4AoyNcd&ed1xpy{x%N^|*gY79M zdRFH9T7fIp&H|kn#QD};4?7+3j2TWMEDRT}Q85V8q{C$0Xj~)ngB5{+D$VMwvw-{r zG!kvI(vD_7^5nAilx625x0bG58eHUO$Mq&)cCKT;wFgbeMuUC^yU2@m*dZLQkHjJw z*(OaWNXAoYtmcUWm((7au$2=iC@DJH4f6)4Sp{@qPOi|3Nfclfja zRm;js#20K$x^Fqqy)jhtE=kzKetSHU>x|pO3oakX4OEh*nsdc9QKv<*JIt0~x-GtL zTfn~0;z1s%!{f2L6B*RqTU?1DXH$Q`9OE))_ss9uTVMk8!`f}rNkMxZhcA4^A^}I( zNx|n4e51HWUqJTx?3QB=*LuC~7?7SL!oX>0skB}oNa%?)V>Mj#lCPg)#L&T1#e1$@ zfdlHb$FrY`eX`Xc*%FaJo8J;!UKtum=&a&{fyZw<>CZDGYDLF~J0k6Zl*^ zcIIpKyC|ZJSo}%5;-PBijq{}m;j3W*hxY3AYoS#+1EvO1%f#5 z1y)8$0LiH&>WLpDbcs0l008|26AB2nN1^ULU|cB(HamOA&OT*lW^ypcVroiQjBZt?nIGBPdZ$nsME%8X=P_Q+DbYzT(^IUlUdLD4?_8rhbp zZyqZRZ>_M%^gsLBb3rG0HIS*tz_=)g@5B6ggeCPBpZ!SP@f70BBy>H3Nq3}gb(Urj3Y1HP#;i=tQbFXG{NEtmdLiC zl=!p4DF|YN-f2BzDP-5QtVxW-NBkqc5u_6%ox%xBy3;@ktznH`9U&ae7}gxsfDbhQ z#k-0j2Vdhu#@RtWP149}6iy?bEP>9oxPLoiKX;cq+Fb{YPQ@lYgomLIcC_Ujcj(P1 zwi35~%+s^t@}7fME9)$5TDLM%Jotgf)@C+dzOB8uWy|L5iZAYI+rD*Us(R#}2Zq)^ zO81FV7t76#b8fPJnagd}IUjSd0QQ#Ks#lB_L9aZ@pq&8>Cg_~X`|*wmxAPX=-B8}| zhA}Z=(Rm;CegYQ9<9bHkCJ`1AG8{*oYZU0OmNj}jCB6uoD$#3ndPBTG@QlNB9IrZ{ zlR6yukDFH=?HnFLsgyWtBo-V=Es8u++_NO#>-(T9<9zUm-y9R|pD2zM7am)_dSb9+ zefm?(3O^z4XXaNpTW-buB!tWB-9k!9iK)bqw*<(FI3C!~qHje-3u<(V#;DyEIO6dq z6C;5UPt@!mvD=++&|ISK7Xdk)jmg~B5WA(hva>!_E%kKHlCvw}iU!Ga< z>@{50EyOd~hI?=V-xOD5Jq0@)29w(<7!^|j+1W0^eoPrL>5tJ_1KGyU?{TaniV{(f zsIN-yTC5~ErO7)Ex39R|zv`09bH9sCZ}vu4uUnTs8)F}4pYsfD*iyXh(#*z7MiaN; z>5gIk;2wp?;KBM(w#DYKGNZM60&W6=n+ugn$qj2cigZMmD^ZeNa^hr3_LSrV5N=?b zFUfMLqtucO%64n8T!C*d2sC{yP_DvltGpg)d}Yc{zDu?o|8pVYg}=db3KG>Yngi9_ZO0JV~$s?Cs#MH0OX~j`u#!~Y!v{*ZsfRabSQbwI=%<-AP zOPFE$N;#)5LH9WGGLjX3fVul-bEdg4pKmSlsfLe6n@}wiji#BW#b7p}vhr6!;((d< z)!6;>CpVbz+Vt--xo^$Rt=Sv@6LY&>m=dpLAH+`0)|F7$Y)KII1@(0my%)0zehS9Oln>6LhYxgFmn=7FMA^tbq6IF@q*xtW}l%b61c0GQk!k1jVlW9j@GrmcDnk;e(Vjp zBVa}-brwrqfuWCx!>d(1N&Lf&&Q(gpT)L-*)0V#Cw*4}ca|0?ix$G|oB5z#N~n|bd$kJJ3jJW2Kk?EW}%@cTfZ5sd@`C`t^X zjF{hQioqE4$2|U+)o=1kE@x6FB_iQt!O#c_&`&z;8&nSuT#0nQTrX3V`B$ol@HhcE z;pTC}iKuA43l4UNsZ4@kuEU3Hk$JvT_!Eo`mrut0p5UD~&v&414PMc3`-tvq4mKUA z(-T+k!R@K{jC`Vx0R67svn=crw$i<;c}mh>0>6-jbOwd6;AC6yT^5|;muYT*H`^z+ z@i^$hdO~n3aHA?thaK@Sn^kYJ)PdeaO8YT~#WtuLh3Y~n&UpCaJZ<_N_4$()KptSu zo`R>$Q>fWpJ)UA@gVFEqIUc*Oa(m_e7`yeC>+W5-^4@j7yy<)214@!Uf1&pIeql?! z?DPADpb`{=F1OdINP_1iGR9>cKqp3yr9yLpObhM*1Ob ztS^am_V38|*9$Gs<^??(EOa<44wdO;`%A`)+19pR>bXKics?hxkAT>mck3advdvI^c!_dEgm8 zdkQJ}1O9=Yd7K>;v;k*Fe9sjpc0RdNbnJ}do3!)R2Zq`9VI~Z-(cx!?#o^(jmpyQq z_`qfCGU}L!J}$d;^hDvwg6KdE<|hl1v2bh8)(XtFI~HynXl1Q;bS~?x;A!0v>BL{p z$ij;deKay_p)(>^5l;k3KAi324Py2HrvUJhVE35%|G@n*kB+Ai)8qD>dtP2ua^7$L z`Cg2RaDpsBU~g59f1S?bAE|)MiDQk4q+D|30bk4C_>b)=M#j?y*Bsf?JCQN z$|l11EXT!3UlX&aMkFwqZ5MW-!jDq7u=gyicL&FqdvLT=>g4-pkI>3KDq687m((*q zli3a#$Yg?b|WH(u5~bjN3|2n~eUL}L0EiT{ctpQ1A{eQfyZp`<&% z7^S86DlwfdIB@-@E1$f+SJF+s|LCVD#RXmKudE~&wuKDrD@5TPMC#I z-C~u^M+|~R77W({R=|(&cgPJ4XA;FK5yzA7WO`9q)3!BTHL~B>WAf6&#dP=WV0l7c zx3Yg`yTuu;FN1Id#1^u_Ons561I{Umub>nBL%v!MiUaV@E=!k<;*8o^OZV+dNrq!w z;!2Dwi<$r=KW-3y%-0D%L+rj*)?Inl=$#mgOUHx6#O8*jlJJ@Xd31l!h#eavNq`mI|AAKY- z(3z3$_)LG>cw5_^EMEuYb1O?h$csxb{RXxj;3kq5H&naZ-DAwr!=(j7HM3T5>X59! zS$~vd#m{6>CrU>lF${WvM8yLl1HcWUg5<kt$0Q+D?H30L;M z6}3x(`5g-`jJywA5{ivG=Qy}oRSU!06MbvT3lHyFR4Nr)&kM(w)9Lbj$G5Q&oX7qp zOlknDtQ$K6@?4k{Rtisn*9h)2qrdDljEVY|QKt9eF_k)LyJ1}>X4bJwMK^N5RPH+P z)*S+W9dXxfG(s1h&s|3n3E)Tvh_dFz5?5c8x=yDt*NNuybBCGm5V+O0U_YdUo9c@U zc8A{Kh)7OFrzj3x98MG@o<}B3M^h+G;c>X*P!~;UkAJeRIF7oJU6G1U)^+-$@GisB z=lg;atkDL+57-^#zJ!SYV0|^DU`uns56fBMo^a@CxCf2jfQZ&KO_`tdJSR~fT^vgu zZ>cTH3~a2VkEdF5)j-vs>MQzdnP@%KZ*@rbe8hYC+WOwHZtDa0nS3|dt)Y&U?bQ~A z`=_tQjIa<%YvXLiur|2T)zJ ziY80};CZ-p$B}(Fp&-d23-KgK!&F0HWa_}&V>dq=ebyARF-L5AZKlm}Y4p;d(zASB zYulQ{!dk00mkgWOJ-4MtlSkIQukW@U3pdmNM83gq4p%6r0Tl$rE5u7+zm$Zl>kGW$ zfG-pZn1Q?0x4oEP3H%d`Ofj+>jXyKK1qz&Jv#gwD*+8q?W&5~;Ab2!RDF1^XPTmyF#`M{<_5SvV|uu>X;(!D$s#>JGLm z*ydX`zQXHWv2B$XsQtOWT~|q^D)e7W7|p|5hH_M+cFm0DrCwzfjvZ^SeD z8DE2cS>Nn;yL?`o6_9L5m>BT!vPTD)oZ0E|Dqg$A>@YhV&naGyqIkUlAr=h?f!K3E z<42=`Ks2L^rj^*B-D&Zdy@(nr(Ln{EW!<3E#GpcNM|S#Y=vevM}}1HDM$ddUbejvuz-WF9EPxkmeKiWDo&jY3Xwf^~2jBsh3(Ilklme>uM6 z_?hXOr0-0Vks}J3nTN#9uuZxk!FSfXr9u6oiSUAWcX=Wi9Y;SktgT$dfJ1&qDyfDZiRXJm3TS+{+44$B6UmH zEm;x)BPy_ScN&L(p5c5MY@R@_&HIfNqglH@>WJhWf#?tB{48FciMbO#TT2|6AnV+p z>72cF=6^{QJR{=gS}OF`!ySVjVW_thGcT)lb+iW^%j=57ycDEI>b`wr-F!LT6ZTPSY`iW%`w;0(gLgjxwLZ3@3bw9fVtp|<`+@sgodfDF0r2K!C?9CWg*a2;Ndh3gnXw~&EXfWz)G z_7Ui65n!C3fj%hcC4&wtuYCG6TauddW01V+uCF1;f39;QrnYDpIIs{tzrS?+qAWF3Jd4- zxQYhEPjL0&D>iUVAszfYW8#7pgg67#UMHz(I7blKQb`fG1MtsSLtjN+O@3#p-}muu zi___}yzENAH3wFhKe>o*$oBbfW|tV{!;7QNcrq89at1sKCXwd$b6|Hfh_7KMIqRkY zL?^f7$2sQA6k8IU{)YJ4m3Z+f_7CjmAi#3t^j%gjBn3Tt3*2Hy$NW3|qQ5Rg*;_CW zjygy%Iuho69`;jUc3>)(Pros~A5ZFRDRd6RreHe3H?sK}3abW-1@R^X8$6;Ad~7h$ z-x>d6}*k_XX2qyoc?2stq@52#Qoqda0tG-NfdMj@c-Jk zWADFl4vsoJskyv{q@_Ie>B9R9pN{dbRpRg|v2TC&vqwJr+0z=2&(+upUxbWF357aX zhpeYUE_X^yyBt$)?|~Fid~i*j3-_t&Yf#T|YjP5z9IB6cLvjwngS2x45o)o=J=6bW zjdc~HDVN^kbk`Cs%eDmDQl3h;JrZ;qfkU6nRJA{b7yP4R_B7h8k*aQjdSXbZc6 zp4(Q|!oGwtwF;Njy9}o?Nyn*J%x7+G8!(NU#1p1x5NewGzU8Nu-&iC|J(^r$u_Tj0 zL7HkU9Q3-Te8B_Q|L{TJKWDuRAgBzF6rGaLN#CqdMyi|J5x4;!LeL%!S?G;hX|UmC zb9cEHL=%-*vgT<^q>(?@>G1|f^MO**ol5vZiO!{|{HhT9h}Gc>Io)ewPOD2XkJ-E? ze@i&pYqzw8vz(YdLvuc&x+|ZR8I7h^2 zuo~dl#+oLSyQV&RaHJDm0u*JHn+r;lTfA>rFNe|{19f|HWf~_e0*4QO@{y%FnS~3s zVzd#4_atq8zjz0Wdck^a_qVpJ5ucm>XJ?Bul(vO}Jw8O^>HZ&|8I~mYs@#I@dDl|w zQX^#kzyLM@Ig)j)SikW4$9J^v=>Ea+llHvttH+sWf$6Y&Ny=z?`w4MI z6yJUa@^qK*w=BRWA)TF=SMFnh*FBBGK1hZW@^xnje5DA*NZ>w5fSS;O-T%6J+E$w} zAVdLXmkww10mq$3aTg~8=?NZWMa?rybYJkes*eX2>4X?cV@+F@fG6k#`mkEeV6pEU8#O$ z-*NkG`e18++7+Ph3yallD_cjF@UM6d@L!0N{H(kc&l-MoX5(k*2Qc;5U=Fgv!*3$S z!EQkHa$ILOvd>PR!TUal>vyWx|3kh0A^!gR*$?>j4Y>Xu+-p`iu3djYd;d44&tNX{ zGYi?@V^5K=yrY~Q3_M|-AP3uMGuoX5G$$pC2<89Bk4c*d5h)nBHMoVu!+cOJ zRKFXy)^T+9oTm)NN@458NWuDa=aYh615U7@1Ds$MyKycjSY$yqQESVc&k2S(KyIV> z1?ffjh%(qFGW5ouzy|>@k@((N#ONLqZBf;ye37;%u+r7GUyg=(+sJuszufG1FY1+k ziue1q_{G}(7z`GTF&qMm>tFD;-^x^Yzv+4X{tP~oM%zi@eX7qy5?_vXp|NBujf%GL ztj`3@w)`Fs(3vG5f9I=05z&n&oSqd$2f3W0nXC@5=d@hN=P2%-cBJF!a(a7uBCS7> zW@+Np0+nc5NP|}^74@W|m(+?%?SY6@*8796hX3N2e7<0o?`))Z37n&C;OP zN;l}WMnOCyf?8`IQEPRlmV6%|-BX}(uGw-~BH4=0V;;oaRVZ zjb@8bPJ!}igvg0(iydnxF7$qwXmn~M+fQ)FuF#B$LbqBZp9I^IxJ<2XtYFK zNESU5iFgH{KM;o3)pwVV-KAqbq!H@P9=-WqL?xqoBw|Lwham&Y0I5OMHMH%6a(;CMbrUS4n&7KZBGA+Soo54y>GGtvZ_&cQ$3KzXoW1Vk zC!ZKoBMvG5;P7yS&Zyf_^_Td%y5VuIgd>z04g8`WwshgOQleekQM(XG1N(X;7hlGDn&lPqPNQ2InA) zsLxRx&$W1BV`4D-u5C{U|E9HFoz3vJE$6kR=cx9(S9n1?2iN8=-j>cmwe2C{TiQ9e zzO9e<+j?HVv{u!&lfqH;nM>j&*~Mrq1v^K@Ur55^wPa>S=m%}ewKG+JA3!|hFMOF)7x;gj{yzNBQ5gWqKe>V70+BEK z+?7{e@%iQa>!gIk@lA3} zV|5X^2w}h&4;hf5p-*X!X>uddU{#Ul?#wZ`4Ht_!)uZEQS@z)8CH1w#9YoP{`I5zJ zmjyy#KYGwG{SVRh_6>_$-dA3~I3r3d7qu5x4y;>#9kKKjhX>ZCFYjIp9wheJM0omH zPi^BhKkM9hZ4ca8Y}A9>#~S2(Dtuk_YVzSFb*(U0G%O=#Z<*DZ&To4{_=VPXBog9n zNv%O3sM#;AE4AOf!sj*lurhY>wzO8%wv)ou>RJ&|OR*Cji$vc9HKvdi=t0}vnHJ;=Z7U2P#jh(obj9w z3S32wK}ERT8}J4Xn=R%tR3Nk0Yz2?j5-W~oP8Wl+FnFkM(tpk|+Dzug<1Im!jKd&r z_)9oN6zJH*syvq^>ZO6p`y;ta@7+BV2QOPd_6NMJ&Xl#%QCwb&EEhK>x|e6$caGJL ziqG$X6ActZ-?7E2*#hwCJZJWkh^sFLs-Y*9bS2B>q2S{F{*!FT!-m+<;EMc2uzP|h z1)B$l2kUE7Et89f%C3I6-;=TReUo~gE=zuH+yF|GAiM>7&?)7IKTxw1k&X~3_q{|r ziD&pUydg~|w;di=jeD=*--ee_EuetJ3moB;R{M9huH_p_`PF@?c+wH|JF)>!IFeto zsV%=I*%j^dwX`bEwp_rUE~Ndf(ad7|b|l>%<4Lz-Z{H|TG1;C}YFXSK3Pl{=IIm}y zIu3S-9sL7C`-a4W{R~|1L;XYjmP#+{oy@Hd2PO?EOC-L2U_0XgV|Aodhpna>_!GUnWT;M z^Jmi=i+#Id?n-A*2w<3S$L3obS?Jjf#hx7rXSu64oa}F(b7gC7rFHS@yp8?1@xzSO zneFft-KMluJP9923VL&m7pLFgVezO90kcMc98(URXAg8@;#24r*46XK zW6b3v!C<@&W(8wgo6xJ0D}ebLiTTy@`4walb&8ivr~;>A?sd|^S>c>y_(SD*nv7gqc?KZVu*zO45Cu+ONw6;(76_=nxN!L3n z>hiPugmSib(pZ_5_q+6$ykC|8k&86OM6UT_KT*3c%xQPRt+uwnPOaVKLwuYf+ii%ULs5jbD>k)Vl~3g)2NZXiWf?gu29hHav5Xs4Vg(J2cQu0r1r*36ze~WAmvN= z51(h~%@80k)hR;!a&`wQnuOD-v3|5|hRq0T8*y@c?V$iV6)Nk2d!GlD#MORJe%)>B zJ4U*~)zO`m#DaiivD|FgXixih_Z3clw|J$lQlgSj(&C=VwF@^rx^FPGV6=7J z4NGG-OROuH-4Iq1%F=9CdDA=pv#?}CAsA|3lt!@yt}oyjh}UvixsE@pLzk;_yE9hw z$YV^$y*!%i+sfD9di9y!!rO_dT#L>=CYrbwd_g-|I3eI6aM^!ZHp5%a>cAxXxAOI; z_Ssl}EAw+&YJKkHV^rH68dG~*)z-&*_)fp;Lx!x@T*z@YaNUetgS7=b>HB-MUC z%+AKAi?1e1eHr|JulAkoJ<^lOw$C^qs_Cz$T`yM!mSaXy&J^Ks6~blTGu@pov;`((S28Ap9y zm&o#Q#^#Naavu0Nk@N7Xmh*6bBE$QfuV-xHcxScG?bmwfSPQyNx`TN249Z)Cg`Tk;L`Ew6Mu}F zjh+!E^~?OsQGN0E2p?6?2X^R!cmS=XJ^aj3?Us8qf5EP~7E`lNI&*lRICDtrpjCH! z9GW2F2IK-${cF_cRs781eX^ZMkE0XsV1Jd{R^8hARL4ncUhQ)iU_(#wKKI!{g@8UO zTrk_`GQQ^3K6j~hkhr5*;eC>6Mf?`4At%3#b1W%bQSXg9yr7$E79K%x^8BJ7DXr*7 zqw0tk)uQQap=eMeujV54KgOp3zpTCimA6?2L{1_X`68#o1!YMtJQ1`)B^RCmn%pOz zy)y9schuL^z_XW#=e@oV{t72h@s6|Y^(*~ifA3tjy#?tA%=*&5*8aOD?x`KD-Bpun z8sA=NJr$e22;Uwz_~$V0A&uNw1GX8PqhauqvkkfxX;jD!xyU)t1LsJ?6LK*kzR-N> zpRfE0T0Yl&p+68kkEM_7esvv@oKx4)cHv%4&KuLGt)m@W&Z+BYySCmBUw{FSBEh%CPu2% zve_r?A>JqU&^NR_bW2w&@3S(mPgQT@eKz&Br(dlA$68)vCw<4RKQWBywl( zAM-rn`91!x4Xr)QYv0^D#(w^L*YCwW>+t7>X*1QpVZX<;U}EU>7e}~nW}-dj7kl1gFd%Y-BAe4sKjt%-*A#U^56Ea8uP zoRdk7%@E1x0Ge|Ro9r!4YPi2jgoc2;a|Ybm8&U%b8mp0pRHPeg9En72`02vpf>*C! z@<^Rn$iQv5{gLB~{flt`p70+>MwVy^l?PggZ0s#i*%12}NDglnH}W%Y1G0h}>qrdn zxTG4dJp>N{$GfmYwjht~&Yl^h$^43ZBAT!3&{=gI?X(5C?~J$9lxK4zx=QC4Ybify|RbFKDk@*Cc z0R5eRAL99(mg@Rop9d3AR#2biu9*hDV!y%4pCvg=$yvzvB-;#Jn2#?cnO?pM@x z__RlntcbSqQu?U0&(qpSUyt_i8qtlP4RYX8|~hQ zb}e459rlX!U))ZhevpeR-h=O|eET%!At3x`{rFGyDDcJhahA+DV{s3QJK5c+_3m_e z93B9gK%Tz`h8Re+?h<|n;wAy;XkgRzsC$KgsfO3}`F)@lJ880e@Xu;7fr}nIfF?n2 zFbO98NrTB_FzG`j1B)BL#c5zhgD-fHXbepbe_({frDKhKje!`o=nwqb!7>9yR)d%G zRh73wtCd2$7079N72$RKq*B}v!D^sE-f5gNf}s<+Vw{G^AZ{*KZ*5Wi+s*TKySU|M5Lc2G-o9f(wqi=OYV`13{I>N@xd zp0C@fJ>S-u0_OsfYa3%67r%mi#>WVGV6>sMA7WB-DX3@GN;9I5}e5> zHKH>k8&l^q;)0C&ah7#Dr_(!!jum5V&}%qry!05A5K(#F7(C=OR$ZY{Bef$873Z(TN}GPtVG3AiG{MyR-=6U?Wr z!`oa6#}&=$>X3aRkC6!!ccC@=Nz4V=oQJ8nD?Bn9jzW`3RHuw|Ru5l`=wDrBBx`(g zWfJk0(wcpSw?p4*y9Y=n@zvNIC)pHyobYqJpxG2xC>}n}rrhLu*iNno(>ReUuEt*2 zRo);UCAW;x=V5%_cSs(h&-?MI2Da^+w07ZY5%1<}dL5P`UVR)Fu`XB73`ulPA>pC= zMnrA(cGO-&;LYv`IkXaN4tr#7>9ug9^xBk_?LgN3oU&_w3y$)zkJyUNFS}MIswea6)@rd$_ryn5Vqox!h1A4rZDzZfu^whk&AAj0^ z<)!{wv>b3{Qhj@0-9pvb%6qT7t^?KCwr;=PXu28sLi~Q0&kS)+*`)AveY?x)Ov?VC zZ1S6e8nG+{@k$fRo0x$U%l4X7253vhMhbJ@!M zIBHz)9(*H9Y}I+ON3~C~L3y9BLBFE)d09_8$H{SPmCIDMPl_GzKG{ydnW)c|J?%WE zIBVCUzMk~WW}jCGUlN{Hql$a8d5)(m08dBGMiu^nd!xQTJ{v1#S3ou3amX98c^-$v zJ4}stpgqa=7r5N$(qzH6RkU6TSR9fAVRFQhygs8>~DlpryJiFxPO3*0xV z_P1R)s`*B*%9Z#Sc@&nXOE0KE*Sd76T7+&RiqNfHvtiMK z#e*nBw^q1)&8qV%(IKdV1B#+N*qyWG=!n{IUPU^}8lNJ3HvT~_@lap8_{Xc$Ihr5? z4JoE34l#}~0POeAD_WOZzN_DJ0j^v2nip*F{9o0v>sj9u72_8`zAbUPDPz})+Yt|N zn)3j!5|(D-y$%VbL)h9~OrXFOupN6nmY7(BF??_c2jO$#^H2a-ms zu*T&!2LcIEN+iXk^jso|!f(mMXbV$XkVbhUW>HAg6QVJZPGyoPE0`X1Io!TTLai$BLxN-9j)-Uc2o$M3A_AVC#hM4&~0?;FIa%aprv%TR-DihG+uC%_7;1yX5kLl z?8K>D0mp4$Ebhx>$~vifKC^P!gZMvguiOy}#}SVzmqD*wx{zNPTNawcIl58o*|SZ@ z*Bq8*EERr>7jiAX`<@gpq+kwoB`NoEeuAIuwRCiQ4VHPl%qF{t^vv_p{j3SQv3==A z2s6mo2O*1p!R2-joh{Jy?$C6-Hlx)*XogweB;h0$Nk+)dOL^NL3TJT|z|MFv6!1!P z6fgm~b9~)6sNxEW3PL-VkobpSH>yHBXS8{YHk)z4$zXsu!F9)W;5`-aBY_IrY*$PM z^IMl}dOXRVO2s5RXQ2Hyol< zB8pbFod_SVKT*Fgd~X|HA78y;`hPRa4PPY`1Lv*gYatAzR~JYxqOLl~#RW6C_$(G8 z*bX5Ho0dT+VhM#DC~FAo!sR&T_Fc%cO{R`Y)j8|nz|iI_1T1rH4G_5pnG-ywzys?| z&TY>ZeP2Xv=Zo=fZx}b8$GlC?QpJH&9zZWWAK{SjtmYpaNtZbeeAXYXVqORXt72Xb zsX7x|mha>!nw)lCs(q3kruKOc^c&Tex8?#Iy4olFgIb^Wz$Bpaa_~G1kJ=~cVZ2Z1 zVV~Ce+|-ug$69&PL2a?UQU^wa?wKS?&h*R%8Qd!nJed z3vxJWX>BbQpJQzv)>af) z8)I!{N0}MZ$y6edN<9~id!q4FEEyE-xv%&nvTf#~t=W z$vPM3k&rW8Sa25>UZwq*<~;J9!msQ1=L^ML4mg}l)|1H=GjVVcWivLr&uGjDp=h*H z>8MpZIy*WAu|w>f<&uA44wrm46S|e|diM{yb=@kL{IlnC$!FL*8TP3RGiR7F)73eW z8_AA{nG6a-B~WPI98Ij(g_?x&TFM+GKIGH?4Xb(seZrTm_RB;>Mx8(OFKMS1)G}iG8+N%AM zFP!%aoXS?s9y#O*@qTCH8oXZ~v*-R~whQ_Z^}1{pc%T0B#!9?= zYMz`!7^uD4Z!W5J`r2ZB!p^;Q%a@wq*yz2tTTr4t~z4_MtM zpH6Vt*Yc`U$UZ?vf3sNInU@=hCjcg+a+j9fIh#iUo1dMVWf$IY(b8_7d)c+hDLgvAW2rWHax3ZYfz|-1dadU*I}F`Kvz2{Z+8TRO|B-us#PeTDx1& zj&xOO_bhJ*U1ruw^*4O6o8XHjeUI85=k1`!sO=s@e_0Rphe1#suPfktcLo^rEnJxe_phU9N=?&ix(}~b$*eq21B!2m-Wio}_?Mh;7|-w1V22UmZ}AEDyiI++ zDqbR5#kWx-3_Pc16fhRd`wYzBK!@Y6fV3AtX&N4}caWM>Yow9%fTogpgMk*ql~Ss@ zC?2ln{5tV%)Qb*;GwC8irb@D!bUW}FY`wS{&+d1qwPpK~Niq-}IxADR9BhrG6~bn) z$KrV~VipnY7B^=S#r6!W6hA!pqVTuk3icJLo%8PW)|0|fPd#*$GO@~L$!JbEp7Fm( z{5wwX3V-wg5b}T{^xPXIPPnrTR6C(JLiAxg>vR_7C(p@pXJ2tAO96i|>274VuWaPA zi(hZ#us6OpQrDpd!v=9+rTK(R-C;HQ1e??84+xUaZ4C&@8E$vt$S5NVn;x=O?vWEo z)tV5LH<}2`@*xdm^4%tuGNQpqu+%XRe=QD*8zibXi(pmVq(l6}2r?bqFXzlZ`_kE$ zaG!8>>+zqx{}bI0F*m-5-+lk0k6(iSq-Q?G&jRutsb|4b)+u~UaMS)hTQ{}0^5cLj zX81_7SI-0TNvY?-QqFn8+yA(3YAy03p`?nri}inkU5EZj(iPe+e%8$PeS%r=q0}~4 zI{&Ou$Nm21xF-?0c~sTXqHRMMwP@}iWo8;l(^tpG&T|ITu}=!`NB>;2iF6u_CX6#C;+>iqnD-4yWgV@(t5xZex#MjaIsOEdQ9JO6Qyh*IP4tj1;h5ru15p1lO06fuIQ>aNJC0pLJ9 zr-Y1u%CSE_r9Z&AQ6Zw<+puN0jv6z zeR1)XD{_HcM@ajg52cgUg%SRh#&Q`{*;B|Fw}S6xQ9WU^$_D2tkPI@hj$+56f-=}9 z(J1NnkAdGpz{tQ`L7r){qfft9ItQQ$Ous70I8KO2WQg#VkRzqWPW86C+kM-7-*EIC zULA@LhPH?={A%p7%Z7$;>AX5Tn1*~>k4)Wfy4Rxl~uLqP_z*03PlUU z> Q~##-F`Y?lmwmCUKU6D(oXSS4#TN;=rO=}OPUjYLoIkG{Fvb_e7s1Y&#~dZ4 zbUJ&=BLt(T%yo->h1pX`C#EF5-XTl{4}_*17%8Z2NiL`?s3j!x0jfq$KnPm7yGdi) z$k&q^v|wCl_}KHSw#FhUaL>4-<^EW>BkONjH*xt(iG)9B3E6adw|EUpq)ir-vdZ-3 zJW8@N-MM?Defou*&lS<@EFp_0Mza4S@cO^WpKY%023e3^r?Z|CY}WmU7cm-(HJ2?qsG3ID}+4p+CU;w%LPguekE2}7zYPc$ADMUWqGKf9eyKyc4;yp15*z z9ORBIPP;pdy>TmR#oBy{KleU7_w10~X>*EPquG;*uT(cDfukdr(_0>0wH0-1{>UR|$5=dVocqYTc8#>NrSl#+mT}V z>d58o>Hb!X`H`7_m%akd$|Sg>+Us76wU+1-+kKrCi%}4ax$ttM6NCq+2TsEYR^=K6%(T@*O{a69jNsfTGf)(F4m?uRqj|hdRL_{G_-ze zWy3?)4GdiO(1r~kynf(eTv@T=j*4EdXTR04b-I^qrdsb{ccPZ@^zEEny?Sz2U*E3D z)#jhtES2sB6`f7~rYzGsc>-LchafLpmIP(YTF1#P_`wsz{{0;0${{DjuPoKa457LM6esFL7M!o(e?Yhd%wHEI` zPVZ;?p}Wpp$k#kHa#Yy^h!*-mmu0-_LHuIA*VZa^}CJ+tm9v%^m*%_5vUO z4qVsn&#qp_=i>bb7RF z>q9sHx;lR!ZeG6$&yCiHI{ri2{9eVcWBsv%xG%ci=%1t=<$L_Qct2!L4!*^qdZs-R zpD^Z7`PBg*xN$-Egr~2)V-l(AQhw60K9@oEAB=Jw@^cRRHx=Y=YFWdo?AK0v-RucK z)pENy|E>W^`cyWIb~jHNej|T*rDMzTk|W(ScI{Bdii$tGdjIO!!YE_DY&D!6iLLP0 zDg~Q8R1Kt1&>}7Vlgk@keC6u$fkW4CswMkY7kc(@U0?%z3?+gSHn)A+>}y|9?RG2i zt`+$-0LxfsW+;At1x%7b`XuIo>hgS00)7%!$EEcG*kTNNgYKkk@W=-I4Bi-E1ErG! z<#9=Z2{x%wkO!FoR*70w{I!?oS4BeHQ-v2b65Sx)G&Hf4`sNcK|F@4neoB1)?Ki}a zy|YV7;qwLX(EklS-wz!y;+BFKpF!sgC^%o)k!&G@j|@xwV^wE*s{d5-oO0AL*8sEu6WrW64QTUizkyTzvTFm z$sJpsSdm|~a#dl|WOV5e!rxTWLIA$yC1^INafj2v8z~uY5wbyl-F3^+NGn*9mIn^| zmIO;GwhBX{BD<6}{z~ojSKb8p4jBp@OU3z7+cl+32oU)&9<5|wgYR2<#*eard-N4tw zMK~{oO_23LaFE-D?e(e+9)n|Mo5u`#AsgWm4JP@R(d022O(teGGZQ{dfuYRo$YnBZ zH_GF}z^Q>#$epKn+sn$!IGW4l@*KAHW*u+}wg9TbYAg*$s=VnZvejzVv!3@(UwXvk zckW7bKG45#w2y?isg{oT~Ofkj=Ss;pZ#=nG#6+~dXn8slG(a*-fv%<-<0)(y1)g% zug~g_Z)nLXiE6TSc}J)vJLl(X=Cr|K>vq_OSN zNq0*5$~)87A2i*m%U7_Vx`biz1Mo-1G4t?tQT4m7M5QGG7Sz+AHAKw;QfAa8PcAQ- zGqP4uL`Ra}<#qPGIVJEc$@aM=@pe#2yj_3dI$O}Flb0GON3@>Zi?ceZalvJG=pf}EWY_rr;229r$YMFT3gv9Dt< zCBUKdtPaFNI>{jEzNR-IH$DD1(mZM?e0~H}BS!6b<4ljDtOrenv&bIWOVipk{lE-^OG>J>}#_ z*g50$Cs}mi^ljZl4P68^^v(OX;wJ>7#tKZ<)0Sp8!6@S{KX9+*DY#(MM&_aLsDP8->l>0c~l?|bK*dKatI zyO@6AFz(^V%x}aU;)j323NT)R4#8);R)uVL-ZkTW@wQG(9o8n&lr+orL?`sZ&@ zzdv_Fsh&=+Z)+V)r#F%u{>Pc6Istn)E3BM>9w@A2Phrj_;;NEb@w$YSSr$G}UlWU` z(wS&9lQ~&x_mtY(OSxpi-+=-V(n*ndP-a?W0dPrXO3`*5s&=nUO~yw8;Yq(|gG2Ws z3b~X4x!f=h-9JG5qg-`qL=?_c&%QRB&45t8^21YVI*rDg335@uDs$x1<-8MgeC3*P z2hRKliOJpEa3hFEkSov~uR0^3&Zn>c-PY^uawR=IU1r0xv1b;|jYpi9-0(HK@t|Jr zErxEJnHQd*In(9_XV>Rwee&N!m@6CX#0Tpe)pCz9zyD;u#glKzwzTQOVM~&(<>>uRQViy&R|fZ+~R2%q{f| zWzijY=M={-iywNI$~;X_N04NU2oH5cYKaL-F*FpIj{c}`wOlY5Ek+# z=s^a-t;74tK4H_)(+q;=W%|7n58x_(-TR;PdjjoO^51>Grr($1`g?eLKkv_n>wEa` zfq$UuSK{~gfxp`z{2$8R1U|0nJ{!Kv?CYJGd*{xbec$(yG}<-VZA+G9TiyVf&6ve3 zHrU8QfNW%z0tuu|n#E2+_N3|81fqbGGzm$K(=>smsi7OtzI~gf%a68M`?iVY?>Xnr zXd&kP`e87d(agQ)oO_o4^8BAixkO*%^AFSCd;gZa-h$s>Pp{|uSM~L;xm&mk_`LsD zm%$(*dNi?N9pT_@cPgAI(~n*NPhoGT<<^W@9!~@*AKHFX8)1i{}}!J zlk6wizoD;>)6ZKjpJs1nBQzHC@zrbS7;L}%I6K8EG#2x0^F0Oc-AF!%SWN3Z?d4PK zHT1oAU;bS4bLPvx1z!>0MJ(pI=6jmU53vjMy`yXIx$)jjtdGWGKHL0UC+_hC{oFm5 zKeBe;Q|x`TeaF_mo4x!Pu1DH@TzwCl`5$m1dn4VC#20WB@nCLJvs(nsfD;7@IP8sc z`|7;m=RYU5$#*Vi;H$p^nqH`-V5`+T^jd>ia4-Uenh{AnVkTfarDjN#+6N!k26G+I zoR>6u-sQ3C`D&?=6b#d>)$JFs)X|R5aeLW$!f1 z&9l1;yy2VQq|fb+%lASktsisAY%XCf{p|9+>?8EG#azT(xPgseHhmVq7nE-N{%iRB zL-hAf37=<F@i=^_Y+0dhe&N2k7;Ggx9ar*A4pntMU0x z`uYI<{a@nuU#73Gqrbl!S%uGY+i?BcZT-032~`&m^;vh*_K&cBZkGK3et(aF+z+oc zTj=X!^z{V3f0};(1pWRt4Ad#^+nAI0qiXI8^cuJa_Z4m%&MVvl=hf}tQziGpce(e_ z_wil4e}eVV_j@n@2kIQjH9myA;|kfYnK7*CIgGs@NPxQ=!*0c!&Pb5DIEP{>QE=gJ zSoK1QD@B)xWP3^bQLVmdVd#|6vD^t(FBHG8*gWmZS+9bcVHc=W%SKBJP|Ng6HPGZRWTQ0*X#7` z4|*T0o%SbW3%9^_-u2nLSTGg!?ydWbzEU!uOU^!WXHKX{!Jbmk>`D2iZ|LoD_~S0A zY%!Y5T$;DI0xkiWQxsUgTkOoTC`i5RK_$& zLn8BPJq0j-F!EsZyhUb(zSVUSE{4BML4SmrsmSG6_OQRQNxFhaawwrdw!po9C7b`)rkY3T^ZFQZlb?)s8lmzbix2;X~ zZA5liJ62aWuSt%>oVp5g>b;0*y1?fKt)#er-t3BMH6m8u z3gZ&V)Pm;Wq7YrwYBerllwmc{!Fcs0suBpDGZIBuYd(24WInlQyVsvh6U*P4P(N&R zJvrLHaZa7vG@Uro+RM!PoI0{`J`ueAPq|OPE{ZU@h7?og4H3p6L>=OyU>%JF7a1Nc zq$5mQ2XcG0Q5$E=rWTPk{mt^>jt(RdNA7w5&d%F_5FAf-T|F4}WIBS`y)o{CqQ}>B z-ROzuj&~`_f?Fu>J~o`{2-_qCeP}((aO(YEGtBwiL0HME7^OW^WsrE+P`rj;xsq0**`ynQ`NO0s6$q0GT8{Wot-6RLW- zBzyOiJE~nFrREJ~hiKEcZz=DH1w~J0@{SS0Pp{RL)9!g&$FN%{PT$hKcZVpT?Zn3Y z8h0EkljNVn2840I=Qn?nNr(K4;n=9ly{NSbi)I6H5HHdeld;89rwpWMHAytpRhQ`P zttC27q_It82qhY|dd%{4F`uu=VonN+xzM(~`JORXd-2Brjw>y{NJBq?p zhiaDeHl!Dze~I<@_t@h_U?V0P>7YvtK;ChM=S0*ACder&9k<2<-UUN&!R2&vykS&a z;6NwP)a`68Ns`gNcwuc}VoBB`d<)w|8eM0pcnxUMNa+3F!tBLQ1bVt^(&&wiP;AGe z2PgciKXgVQ8JM)^2Wul4Cs#Rr>1v%($N4KGsoD(_#k*HO;t4zT8t$v$AE34knM*HV zpZCFQe|KX?UU3(k4ws`?f{0O}0BMba%XZG;f*{sK;MXOlG6U-1yBr^NaL`h;J3@qF z5ESW2&_$Ic_fFd>#}0pF8SGGbS7upRXNSV(`M>D)>80I7;mh2GxeITjg+gIBDc+`H z7n_B2iHh9+mEp`Y~JU;9cx=2tfuiU}2e;4c`2Kfz=wch9J`=ba7qfrKVa{ zdMVhM&uO(@v9=tWb%=s>4>q`$VeWyiRrszN$fYL7g=kg3s$pj1xT_Q}W!s#|fgRbl8zSAliAX5p&sB2%jy<=v)g~&+>W8uc zu(rCADR(97WA|rfrv@bcOHm|#Dd%?OG7Jpz~&6EaoBI0*|_74HQ2ia>6Yz z02Qgg5?FZzwsBw%O4J~VzOZJ}fcJ?!UG)#24zu0q)yrTd2(P{#W?%fw@@GyywtNX` zLSP$^%Vcqe1YzCR8~#Lko{97GdC6jBa@;~ZE`%1nqZZ?$RcIb21kggvCkViur`sUe z_3DvUA`2(p`gvF6v?Sykp|HXeVfGd1J4K5Ji{|n@z0(+&vAdtz+CMiCVhyQ*TGG1u z#~Qx-AGTj@Dh;L_ig;fjP?)@_e)nhY>WDS=cgpE{SnykFh(tE`>le}PD&qdA6}4E~ zk_o9e?+xhYrCKtx81+^bO86WjB%))q{jCj-SjVjs2jtO!XH+j-!0=&~G_!9TwrVmz z)&M9?Y%R^u^{||ETYR)08L1WzWo@O!f$IK|v@6w}@+h@khr8Nu$!+ycmXv%{Y?ODi zDWj5$#Di|<{cfKlx2-eS(^0THyCWUD>JaLk7raI(s>Ff*MBgrd8EXT1IoKR~8d;}9 zLNW!Uq<{j0M#W?iO^D)|L=)t5PC1>t-L_yE)EO4EJPs!82&5V=DcMgxqbHWK?V(Taolt**=sCn=|Zi=ohaV%yzO9nQsoy!MbGzxWk0djh|L=!(9En9G z5ykrL#&or)cwz~+&Qo+ai;kjQNSuU{sE|MgQb=fv2|-wK6h()lsMmQsI^Bx4C~7s@ zVzyY+b~v={oj65OtQD>bS%%f;rLD$3?i6j7r&=NT#HZI=mjQBR)E|HT_Kcjn`jW zmh9fjcrn%%a|VNRVOhhQaRfQP*mvK9k8JBdc=cSpJa@y*Jrj?gJ~_~r&!)yZLSnq^ zi%%s!9`=|$)@)4xv$2Cbd-yN>$KkW*Q8zZ4$Yzq6Wb#}pEvC}xl;Cthn;8^{lIW78 zVjB)N-nbNc*vlpncTE-2nH{O^$?cM5S>Bn5E@v6WHR&WYCAAW91n_UuV@LJoC2-zf z_||$|Kg{V3I~y?WlBjaoQT(G?Zb4_v080cFsOug>?G}*lpSx;@!KpX;VscOt48!jm z4=x{>yUO4;_zA<)_3v9b(+6fJd1fe>-0sT?U|$JUVyt)d)d!Bvj`?D9QI9_iny1^i z|M2_@6i+O3H)0uQF<+cyx5OC_)H%3~93o(oIN}{9{i4}A$__I0(PKSUA>a5z%m zqyMCp{iu~aVr4_t0V}70Dh{G8fQjpLglI`GBBo1Dgwp5XKrO^*wJRQ<=rQW>1`!SM7=1z@9N+@P(gAAUfT*C! zsM8sZD+ax2&>QrA-;h&WblAp>gC3n>P(OrL6Cf?Am%=Q;T*3L%wCPj^8^n2F`8c|A zj~axWRwW2&vDL715iBA?1))bwu$lcNn)68Hu>aeZDs}kBAtTcF=b5Q^Y`{Ash9EF` ze&AR!IyJS$zxpQk<^TSpWF+Xl#lu4AWc0avXnz3^pxi+*=K01!yWq595Kc0zll*{i zrppzLo^y+$TYLoKWTMsSJg2vadW+L!#M7{70PWWB8s?l{BkGBgw;0ERdJ2zC&+4N= zBJjQ(aC>)&+g;nO+b!Gm8Z4C(83B-lzlE|&wggrl9Kvd$IeB{MG}g(5w^R8De>V51 zr%9OtHlK?ObmlN-IPBn3Z)WaUm#;@?C)aa0`Pt5esZA6U|GuDlVQD$r&7syChmqdN;DF8y5jLnOpHZixmZtZ0_!0oN|Mj( zw%P=J0}23D}ayO7u;puZc@p} zFd+!aB-aI19pGSICTru(19PumJ2&^roN5MBk=EA!!#E&ZBRq<{)cKaGJws;%Wq2Z_ zI`|i4E4bF9hVvTAsDd9gsuzKILlzTGqNcDQ65-fyTMLUY&;!Gr?T)2d*pZdhh9DHI0r>?TY#I3tB_5 zKej6}`u-2TcL;mSotJ;AiD2)`Gfy|RGWq;UE-RuAGh57sW07z$7L2TfgJL)s35E&T z7FgTG6}tmJ;9o}qc2gmT3QWf!3KWBWyF$$o8h;>r3I1u-2hM$~M2Bf@vnFwzZ_%x> zHGJfq^XgkzaBIj?VzH1jSv`xI-aby~4SPL)Tq+;yt?drwj&vl3YeCyhXRkAuVp)Hi zXfohuCnis&-SXtKkH@oSg%v~q5vV8*w&m#Xl zp69(o%Ag0srL!8Cl1gE&lJB(GcP>zKjjbLf^gGQsLG`FAI>}?{t$|8hP4*owl)a_r z20^-AwJ?>S@ssm%N4-`ED@pOd!TF25id|=LJ6P zMXXQQk+46!IAdJM8YGzhFDbEkJ6RV2ggNY~sCQnQY(&}UeI-OU6eh4}8WR^uOuXqV zy+u@?VfjN)3^wpOH?kTzO;Jw;g?9)8K+_t!VSR_TWr%7R`9CDXwnzJFY0K)$z=!Zd z%F0d-*wPcXBc!yro&FzMVUPHVjl|3W_B-CRTkrXtoH&nF(Sv@rZNjvF8Q zqDis8-RiU%H4kVS{W?8_DcA_G`Qa@6+ZOJgE)yM!5>QdO;OLQzn3t(8#qTG(M?=+4 z^>4M!%h)ISFh6ok4>R2;S-a*_(|yrzKje5z5IKdJ3ihTzpE z@|Y)Wt$9LNwy}W{x1J#UF_JaIyi+A_ z-g+}v^^&e{oPAgBx9*A^UwgJF*^2JX=X&GF{vLhbT?k@mM4t`h7Vq?&fr0b5Q}wXY z?qAKb-{+kk#pnqeb+N>io;nBq0EXX-xTlP`{RCJ?=lQr|G(vsa80zJoz zZr1K*4eo-)v<$4uY$y`+?{ZH`Q&5u;omh{=I)+UEJAiO;;EBS%ZwirYH1g5U7Ev0( z|Is}J=eQcwCBh`c7*t_`c8VDca=&oNsYXFbmco8EQQkd27L69(`%P1_+7~UBk{+iN zG6?V&iG0a1jVei^+p~3HACW2vX8Y4F;jlRn9%hMziMn1VfcJe7V-Ua?9BK4Pf)$X> z<8~7v0M-_XLaH?$Mw^mOT1x{ zUB*>hp`^?!4P!FqS;?jZ`qi z%%8M7Sc9V&^esN&KI8tpn?Id@Z~l{c-krCEqGJYr(b!6E63Fo!qFeO2dr@!pD*htk zahn;bKSc1y?c?(&|&RNpm+uj#8L6SHx# zs{L}$2f?(kgS=L53AA{ZV9?O}ejGP<`b7R|*y9=EjU^}3Qh>B%{~QzU(#M&Di7 zt1`?;17{G3WOA;hu;NWES+YtOe5GYaLhlXC@*Vi_vPMs*G^FfF&+y>L(TH9(J4GW# z@6-WuN@_@4B$3*d)rmKbk@RO_cxt$yB$Ay0ZQ$ziuKk6PnUO;9u*1G!@W{!UuYD+^ z$U()11L>H_G1S#FQTEA-8(tmk5#k>JpALJ3)C+L1OGnth=PlTIDnN)wE5^itfspW1SVhw-hsmj@4)KN z^N7}fQJn`r5DB0%1D7E5hOHA%=Czjuuqvn#C+rg_(9<`u5fK^+VGp!LPqJNy-nE;x zhrjd4*+;l?GA-yV+KHVh!^4+;z?E_DgWzEr#om?zx}{U6!3O45crKMpXfz4Mt#K#L zDQ;15Ky9O6^f=5~&`k8vfH1psDZ0D;JSZIe#|f1bh& zRS%Aqmr@V7IbA5cibR=IM#$Et&i)4-)|gLf^P6?SOhvhRr)|bs8=6eVw?yF8C6R9A zZ1;W5BAFrqo%wFwXw*$_%XYIfU6Uo3)qG4yR>@h$GVi%OMssx%&=?8XWdo_J#M%T& zU{`E{XoFOy!{!zjgazlIZB(yaG?>&-H8`WtsS7V{>J1CUdx-vCz}i;RrgeQYN(Q=i zJOFlH=X47}b9-iV(m+_mDxvR59z-7v3zmTaRKir2m(eDY*Z2tR?illAVflz&WLFMCdB^<7Z$2u{}{(eVC ze7rNs)8_&HBzTA?kYl>oIE8XjzdsZ@r}#w07g9n#*5^~~PG=&KOsA5Fdz&mt3v-U< z6>Q(Ou+LlAn=HpI4_kQDU!2qkS*U9X*+%vUSxwewVhI_;wCPU~wRzgG)no!w{UwF{ zw8EMc)}UnklfFrdq9DNQly=(eJ55^9eGh#9Wujd}H;2tUJV!6g9mTL9O9x|n!*NZ5 zdL#;gLH@SqHz{~(G;{^X(wdMB**4V?4I;uvwVc?$ytjvX@3pS=7Z{1ezua!h|CT9BRdjgp`BOT1zJWEgZuq#$S%1wn%n z&!Z%W8kqfuK8+v;|5bJt- zK@ivW4i!PyJh7=Fh_wH1oW1`7TRFqj8eX5*tIbLCF{5?fpv`(ci@xBPVNhr~LgaB_ zZQ`f`W@Pi0P4Y8zYiSvcG^$FCDGfV2u%|;d-h{cU%XgKhJA>(hsMzH;v12?fNV%b_ z?y<$YC)3F!`>EAi+(}2K*s=d;@5q4eA+07hIM-c2a`RO~NwoF%uyK|63&o;Mku4#F%MW%(FcNZBpsbh1*HhZ_Dg&8 zCLNDeMs0qWz}TS3DR$wdOUi4ndWbwOX{H+ZR#Rw5o>0WCx>k}L%`mZ_4ehQeZN50v zGaXPFGVMt1zUBth1s6ci66+0nYlaW9dXq)R{_d8#*>HzeXO?50KfL<>$%y~B!RXH) zWHo0}2XDD9PWK?n!-Tb>Fi$nMdStUn#vhAf7hICt>SmGgHZrG;>=SO*h}SEOQDhh+ z9b-l#=%$vxbe{k2(oeG zc}NdN;_8685@JCu?gfO1@vI_hl^~+V*ieux=l(c;L&t*ePcoAc_L}geAIq`*)oI_E z>~w7Pl`wmm+ZwvMK*ehm?x@=fTx|lF}DxmyUbO@@ql%1MKIWeaU^^ntb2h;AniG zw=CYLwl{`-fYe#0i47i~2jtKQ>TZoMYtZZbCviYz7+Wf(_lFjJo>A?Bp6p~~Lm;gr zy8`SufDO<%N9{G@DkC|G(IaFL!Oip=bcX0KxH z4c*l-k=&OjGSuTU74|V#p_p?%G-of@yM4M)z8=i&9nX9H_sedpFXc;;)IY|X#HLwr1+t2{1?#XGYcp3{ld4v>xfg zHA|@(#w9ubR_UnBUalOxzNfGIj)YJ@InZ`sJnQSfe%z5wg^h0ZN1@ffu|{H;P1XKt zIv#S|@ApfEk#cHksBHAq+luzNhn%@0>J8EEG<^QMF;B9iQ|!iVm6IQ-I>U|DaE+cw!r;Hqrh-ZP#dz_s(3O#}|ku$UcL4|8dOw7@7Ct zJgi&4qA@4JpFhb2!!Gnd!*(#05|9O;bwBIU8jEHu&FWk$ui~>(t1#y?#Z$-{NXX>$#8B?682s%uFbV!X1(8VmS+AoeLU4Q2*`{f8QE_B!_w z_ZQtS!ZmW6LZAfKD;j+VCHP_53z zbBI=T*{X&rG3VpGl?$+zocQ=<4%t#MXHI+ za0TjF$6YS3%PEUuFdq%3{u55H9Vl}WmmsmlYrzL^LRIicBZioS!{cU5U{OML(j%Gy z>rj}}Znw=NPnitMW?Ktmjy;mPnJu>+<_|(G2o;f~nnZk%Muuqm!Oq71tz$>0Kb;AO z9<1J9J$PN^ruQETy?39rK0F>ul&v?q+&5g^xc~4j`8184fUobpyq(iAV1FR76tr;} zb>&I&8t8>p5?{}BUrUYiHC5ShKE05<#^8WRVya~zXJFbXBDm2 zu$p)2oKBEc8Qx{GLGq+wV#}s4nqD;VI+M->$~y+fC^<{#jv}>5bTpg)BQ_GP3psy& z-QH6Jg&qMhGf)a(ao3QxBl%?fr-C5rvD4?KpPGI_dBOdH_k|r#?RY^s=RU`NmmORE z>g`wEzWPOW=Ju=5znRNFV;?24B1S{|3tdv}{rp!kpZd5Dp{GgwL~8G@<+q~dhj6O= zr{-6vX;R-$F>~C9)!%ck)9>TV(>zIkKaTgw?*XA9-zQo`^!q>6yq}(lCGtK~;QE{I zkMm!nx=ZT&+qndNe;3C2Rm3Nf4ArTD9@9YUI@(Tpol5gMf7`l_<^g&g_5JPKkLml! z(eXc`?}JPi_ubARxQq7KF%iE*Ijdn0vV^nxrKZ-v4}2l20lir-_88R~7{OvJp6I#s{5J<^Li@X5Yujw!Un z)5*7JyVO3k?x*9vajf;dZP_TfTc!T?yRG%-ZvMfw`@PWB`rddcMef(p`#-whH&3*_ zH`Tmf&pY1l4*sgO`<(-|iQ2#Z=KUJ~qx*dwupae$TbuX$jnQ1|-<|xz+WnqyZ+&mL zdA}=+C-&ssI8WLU_YPp~-r3kHxlIxK62awvG{Z9)A#+`Z&zxjhpx@-u5~u*v2kpn~ zr|rD`i3oczaxB7?BWxt1g>I@_nJov|;IftkU1-0#cai+nfXe&o4-%V%*rK9XzQicD?NMslx5Hr(sWgt=Dz&b#}1a4WuwNvhta z^&Nab(@r%QKStWeJkEX>eCXiEMAd!67!GO)Gi7sGlY3l+_~Sg)yZKi0^BP$KLpn#%u@ZTEfv-EZo`Nh5%2(mI#9zF>x-;ijg?OhFPYY z?Y4(Q;Zm3n8x8p-PgiFo-rgQ)t1Ju9)xOrnxw;dn<#1qDYh(>Zi$P0j0$!>fpsRwY zfWQvJNFX|b!2nkzktL|n2<@hWpT^KzVMjIKm1t%oXqaRG&1!|_Xv7B=K?)`j0b$S> zE*(P7Vy|pHG%~O!Rt*hT8iOW{SWrqMIjM7QVW@ndklHQnzC&~;`f{>P@JqIm%ib;Z z3^lGB2+59nZDLo!WwHd?#

    hr_!SIiK{-P@f8OX&X8;~IUB^TP<4OF*@E+*o~y4l z&z5&ZlT=Tasshk?PR1H_()jE)d=}@`arM0V-AX%Ezulm7%?IeYN>X&>to~&4npaDT z-ZsM;*0r;7t^)T+&V?y*P3{jT)$?jt_CZ02b+@!{7r~uRusU|scZ@VF9wi4F73cDA%fsF{5OXnh+IPizU z#^ToNds|4KE$_Z}7uGVtUBsYiMX*TisOL6+Ky zxwCTvoJJEXST~US4~FeWX9=!?ploWlTs6%84#CsZ>gwNQAEVEa?0dwnBl{jS8>qGf zH__9TuFi0UZgn4{`zjd^XiIQ2WNt8zW0;72G|^RegM`=DNj{0s(fAXYZx}muzMX2$ zxBD{%pJ9g87hBi7{7cxW!(s7lO@2l&O@CVa% z$UMcCnP+IrJ_$zPE9q|&{$sKZ34cBMLPzFZwG9f~c#ml6{Zz9J_IH%|Kx1dr=LN(Z znPi~4iMELs8jlu}-30MylV~xSED=AD)Zy?-C@6+P!MKG91!Lhsls@~tCZ8`58Vn8v zh760YQR}2-vV}?q+bfNHm%6$T)FXb-s~0bxU#|@pz753iS_B*j zs~3k3^!okPp;S7PU;S(R4wQgcTO?NY7WXymA3kQV5e-Q5Ce|+a@QPVs!9&4utY5GX z`8=TgHjkTXFRB#N8t|(z-1GdmnJ}z?8Us46uV4sXY+UV- zx1^PZ;M$@zjJ7R`;)}*LQ2qo1RWbq7pNTvb`2xhA8b-^O2oupWD`B4)_RaXN^BwU$ zd(Zq__6*w4qab0fpb6<6Ml!+j+DFk2ickAA8M^59=lCZ zYIfcX z^AA`U^fmsA&-OmE`oX^o4f&p#efseywzK~pUj553s|~IGD$NdrS4+!MS6{E^WBe_T z^?&TwKT7UP-hS>=XJ?ilJNcPqE-DX>kNel`PpX-r+MiFc4K#z;pG#Ad)c)Mw+GC-o z`{&@9B751F)cuLAU_P6k=btVYH3B+-~9i5BsC$^`0)|tlk-3p*t~M zAH*hqmg+64KEQL#ysFK^bBj?wvB|9w*yI5;0E2|fsQWB;j9#CNr;dBB)U?P`wF0ro zT~%1*OG!i{zP4a+?NtX8ebsZh3d-^d;b{K`B1O@?2@|sUehsv zORI)H=_83RJWtz=2r+z+=a@q+O`)wWE5prjtaF-WZEtV)2yOQkwcT8^-Of^mG0yOs z;xwlrQYy`MtM?%KBpJ7yv#8Ei+kVt0Z`2t_n@IfSJEZMu{DpfKVI*>H@3+Y`{z4VW@i{gA zvZl?6F@Ll*SHigj)#l7Xn=`qw?c{l0L&u!PVYuhQ%`uPX5>%TL-!Qhmv33tK<}}8G zcK>m6u8bAyG{!@tENk=d8an3cwV#Eg02%Y)Vx7i#TJae29KTM-90342SGrs6_7>AH zg?R*3IEI9T*5)`l3l!S!-S`gX_%E6x-X=RBs>zw%2;PvRW5ZneIvsEI9?vrGZ?^lI zN;lQ(T(|YfwY{|6>b0LmSIKzq@y4iLr+~|nIj+Wa)^xKl-gmd=iX8D#-K;QLLCpBI zcB?TYV!zNB75AK{*={izrn*@P%&y3KyVZM;@$RH!^DNWSqaTYGX#8v4pP<*K?N+b- zEW(JS-PKH$#=lgTn#Hpj17`9(sx)^rvKhmCK5n=9{5Je)>yYN-Oj~=#zEH-YWetJO zpslh6mVrOCPJjXPdhRVCcYdG(8W0es@REyfA%`ZrDfN`f@={+z!>)x%NZ5Wu^?2Hm zkV-d$q9I!k4u&(yZ9UMRO3g*BZMW8{v%OI%)0-@oYj>}ll51j#v!};9{Ylxh>_81> zEFs#F&2$$=%aM`ZirurXqvPmY58<_8Ve5_|%S;%N_BP7CC1A9}0+bgDOgJQjSd@c@ zq*7wZ;FgM3a;7f_gS>lL+EYk_fw&pMCl1qFbCmy_0yjwDTkYsv6}h*KR!}qlqZ&gw zw%!5(qpy#rt}Pe0lod;`mMml|N1uOKYP)SueWd0MM!R#KT*#S<1&!=wv(uC92zsie zywfp~%OBWYeUP&R+jG(2f>lX+y`mQ33w3|Tdf`LV$IOvA0Uz^gO`HFyMbNW|bZ*ww zo}xY`*>To=%)`Er1RqmYBge#69_Ri7KBj_vYRYP{&-=_K%F(QNWO;>Apv}MlH$3DS zvP_w$WE6w&%?SZpk(j;IOeD}O0t-epJ5A>`?L>m)AQS;e*btomTOFqcD*J}hwx`cN zZ5G2>x12|<4)a+kh~KI60pE+4v$1{&+w3LM1b2&sP@ zdBDVW_4aZwChB0WXpbj4>kLz`s}zoPj+?NvA;O7STJmp8WS8TS+3K<+@8q;y;{$fl z<#O8hFf54IfT=tR#dLN3NqU+v*WknfvS~fAs zO2I7AZ3=M|xo9)^Lp*I#aJ(7$qvL{S-fs`tqSc7t1!F?nF7rK|hh?ccUXUt#?j3W6 zgaFDqZRS{S&J)SWNy(&}(`prm#Vgso;9Eph?WM=H8aY+-$Hu$j?Og{)uh*{ANX%~} zj_C0Gv(0Og-6qlRlpP4_6ONFda{moqDF>~u;YKXbHSdXM=3^*ZuFTs8wDUSof56Nv zwzaupgLybXv>uyg)A6YB{INm^lM5>a+ zfjSX9LOQc8?a8zMoZNbNw06rilWy;9dCTov;!0&(H8DNj<&b+KwWIA)dsioB%j$2r zfoe__m3)6Z1u`M{#s%oF6Hb^AbD}XolCY9q7r-BPNb&h)KZ|PP(^~ckKdZ&76-Fzf z_?U@=WOq0;$oLn6gYF@_MR3a61&Jbw=)xh0BFu&AtD6x-syEU?4hgTm@qHu?F-0&t z2-1bD7g9LU0pyDcf8qW(edNCTs_ZoZd$!ge4adcl=<D1&ACAtoKk(qarDfW`Ui6RPh(gR17;gf08~Ug9(=N)95aTBND4ZN-{HKDG zHjCXMYfniOKcq&J$dsM~c&LdT0_J~XtD!_iL0_cN11xPd^5oo@ylu}_sh`I!$x2tK zQcL^&N?fm9y(k4Hcg)087?C(Kdv*3bIfeR&5xd0_kEc>zpEDe0OuFm1 zBiz%-1B2BFMIsub24&-vk{+-Quj~tgplP9mB5FNL@M0RC;4q1&ilp=pbc3+!2k6|OqzZ7;#9(9c}W2n9v@zz?KLNk4jgm{U74JN=X8eaX2Fslo#{&$*f zgr9x~$z$%zC!c)q_fEZo;4xX-B%U~e^S=|(jHerWd+kdAcqo-hTU#m}lH3LSVV)Xg zM@fEw85Ksk(ZQvY2#Y`=jRU57Bo$BRkQ`F}wf9%O+`-;sy{CKm-T~CV+O=(NW#>Q_ z+qJBPp+GW5sHZ3)T|_`<&G8^fBg7$dYSpl#wmuegb5yCV)CdZos$}XDdd+tpm?978 zyq<IvH#lqf_@AlF8

    zzNh*DEARuKHhqvGFE6jIV`KX<3sy|bk<_22c$-2)$^HJ)( zzH)8TpP6k_{h5v5SnJc8KZ7+l-&}LslllLAn82N@eJgU$BdoYSTG>6tpY(T`4pJ-|dbDIU% z5YMGLqBMVY4Y2{4#}R%de!-DVdTSi`@9zRvZ;5g$&NV6-{YiT?6y*$2QD)qv0!j3U z?sFt`gFk7>y$dXh40lRS1Wut8#4-&t%2A^=Iru*%(}Gpl3SJ>mrdo%WUIfyvW8GK+ zYz@{D<#VQirzR9y$3pct-Vt{Mx@J41Y*f+R-SaztaOMTjO{3i3X%gK+?5jq1vf_(x z=}Fjp8Q+atmbpLoT(Zb6z0+rNd#w%yrVaK2Qv3X`oEK4oPAD(5b^A`%(qNI#xa>j* zPJsy}3g=Y1C{vfqeX65)DwRwo!g~zbWwUkGv^{Oa$pGD35)viG-=#Mx1WeuZNT+CG ztol0X*+$kBbP{9Ms`*m^OKNXr6(+gX)z6!QF^kV}!}}KQ-gDqqbJ*dx#oJ?!RNrL6 zQ%rbC*MHmOkp!R9Un~ZxJI*j8~e-np1rZkqdK09M0uj!Z}nyT7zv}#ExR!Y z7MF+Ecb8wm7({@hyb>3#6x$0#6?2qt-qs1XRE%-M4PXzi#+t>o-_Ba z-e$2oz0D4r@z|-)@Kc`T8zNA=A4Kg?@33ttmD0Eeiv^t)EJNCJnn6)h;WdMr?+&tq zJxhThw`b>Ie}6Fw6VEuS(e5Z@vz3lz9p7TvM90ZYfYH~S;cxw5?nT0-vBro?%pBoG zPw5hg?gP#~z=CXZeYPi4Ykq;Ng3!S&EIFCVdq`I-X-j-{NHe6-oYR&>ZKLVOER^qd`W{DpUI zT_}oq@e_kbZ#~%d1gGJ)ZF>+tx1jr8c1N=Pm=k%Rcxoc?e`2pDCQ?Vf@!9upF*=P8 z#r|gSw;q4EmkSI(Jo5eT+rcwL_SAbWe~9}9@5VeS0BKQ|0Q!aGhE8Wlq>@gT-X-es z#~fu!9yvB|E+&1R42b+BCrARK0K@BbAphhE(z8~31$ziE7WAi=@e@q%CaRoZ4IKa& zP^uc@d6OAK(FM)wFLH9U#D7SyY4u17tBIIY2~l<>sn^XN0I_K%THn)A?<3r%kz#d! z-Y1V*70WLTf)SjitKW(ISgY3(dREYz8m~`Ymw0eDp*l0{Pi;3_PZ%uPRm78Bj?>dw zc&K1Kqc-Mez`J-5V~}BPZq&fW9tfI(!EiEVFouk0t#fqwSHksn7<3vg5Xw(5Y98|et z8L7mmetT{#7VuPK;ZNJ;CL^jlR)oOP~ zcZ9Cn>IhnXsXa*cQ)s*3!FR!zurjla49nQTG-R~`P^0HWJ!e3HtsXF6n^C8=@Mbfo zALNFts+v=?%mfb?oukx4)GAPm{pgIQr-VL&vcwijlp? ziX*6!ta97BR*yY)3#+XD`1Et#td&)kb>rQuKO?Ru#;J<4R>B_IV3ryawQ9A`5r}$q z$QB7;R1t9Zkb`yfd6&%LzH%RD?+f*DhQ7gCN41m+ERX1Bq4ue>^|#?l%YE6@c4v>o zO3MxvSxm~e32PON!Q$Yh?iaib!g2!ME&$d5PXgu!zlYydr>u4W*dqA{0&m)x{wp$hj z*BEtMrlSKF*!*uVy$XH93@&6S>kwn#1(oz1!ON4wHn>XCSTsK0Fb z>(X!~5lj2MvO|0j9E7Re+cu+q}?k?=SUp zkzkvFaZj)7pO=c5IKPmhA z%>X`f#=xhO(}P&%2v=`n=pO<@f1+RNKh*U=+h%5d^L}Z+`5oE$KfI6qoZ0Z3l>Ehg z#Ve8WbA+Rda#4AJta-Vy7?6FO;Fn?0`&ftU^Q~w-A{67b8jqIuXgPuLXjz9Aq+OgK ziDB5EE-UM>yR00D(>MJqK4u+`?WS_Rih;QmscL3vOd zWLd|3s1x8gy=zce)DsXHDVU<*7DAZ^nUT3Fu}e1W-;@v8fqHE+z<3N~2gNqJ`BQd$ zhwQ6ld|M_SMfnksi>n6kEMDO^1OUkWV$3({Y}IaSCwvoqXZ!xS@9gS5DBrgKi;0$U zvtPb*qE)`_zLRAxV_jT2KQY>$Zx(Vl<7uCu9237!=jp`dGu(f}A0QPGGV@qtl$YEN zCpoqBP;fRHSjC``p_c*wXGNnG!MVzE8jr(d6c*eTvn*>|&IOe9X$K{%DB2b{*3L5; z93?oqzmMgPnK(d=8M61Pr#W_l3)MAym$-@-$h2HP(8-Zb70`$xTC+NWhZq|9k1Y*s zNiKhyeY|brkIJFzZvC6^TaWGi=FOg4_urK2=f1ovx%wT%z}U|{xjKnx0BR#{y!>fy zFLwz3P8PVAKE%DoqCGurOJ31vC>5Cq_ADtP!8+(nBtv0nUPRmxuhlk?TjIU_r9`x| z$I#j7C?-!u!c1t^E!C~2Q!)xfR5K0M369Jf@%RX)lknqVr+X8De@cpi^`~|XopaPc zjn`zxBb_B{l16;hxF2+_)QDHp8Ejf`IB3ZPJkoWXPdbtPuWXxG+c#1) zX7`6p`D@GIb`DR3OFf0zg_-b{)r-EO*cB`%y+1P<+B`nHX7$&0Yup}maGXsTsfK#0 zas3h5a;L+^vQyHebYPYQ!nR4PKj66E()d!PNtgxxp|J$y4^LHmW zj2;b*UpxIp^s#~fa3pcomulNHc>`26RA<6A*Ji30od;l{R5u9O?d@wtQpUcKNJ zgmZSIXh)ro(Hx(xjP(Fks0f)K9H*+O-x+ns>E0ifKJm!C!YLZ9YdV zX{c>;Z!5pAJmwy+SrTnqezHOQ>?>x&y;@y1{pWMv`Oe&5v`y9&UY|%x37??;O~(K+ z%TYdqGn;UucQt~7L+g|0&0X#D+QRWzXBn0Hqk?q-hfaDCI16ldIKS~97A_QB&cBXB zoU&O{xEsnT5w}@0mH?q5({&BXEN?=Ra+>MG4WGqa(`8(uVDwgPd$#ggOyENM^%HsE zWhXaaYPpw6GlzQ$R~7!kvKtmJJ zp1cyyxgrj|6zQHRjox>48>bg+s~(eNa^bi+t~WRWDYxigFTlr+)}ipzX+<^!{T#$! z--B&Ic&+9eBQ6`|wX$yHwUWI)H!5W#k`#%o_}rq;ZAabpN$?*P+(X{zf-IUafu$iU z<+mbF8CzI$>XOmGCN}rFO1+4cNP`mOD7zB972Be>YT6HS6mz0wEwJAnJ~$M%XGS~x zJ>Jil-HOjP)pw?M*1uB%~(aYSOtg0p*NXzW)M+2EJ%quEFKWTkp=t^Ar>;4bqLqNY@D@h zCl&E91<^?g+oz5L^}#N-K%KO= zzI>Ovt0Q-KSm~45cWaGW{?y#_&(Hm>4McJDd7Xkm=)s=p!4rGAal{?)17&LjnVHU@ zm_1rE!@A5KKng_G#oCQn7kYzY;5mg;3<`(Z3_&y+1z0L8Af9kKT?)s#6c@L`xgOvgB)Ubq`&wF+Y&jWka(fq9YQ4}SkkpoEVmi3 z!~Y0)l0;W1=TGYg!rp2ZI9M%q0Cg$R2xX$EA$i>_P6nuf#9r!JQYQPo$XT7ua6X;> z_-x&CTWUuM^b}IUahuFCwwU8;u5mor9jNyozp-{>J7K42J6OB%IcEmm57&&(+Ym!4 zG20udO8NmN6Mewrh?En2;2~{3@5^|!T3dQDIvJUCQYpnfgbRi&Vq%q%Gp0)|$Rypp z@X}k#t6-}j0Z0-8qLtJe>n{*8L9+q(Z1o5c$~y8;+zCh6F(B^_k0yQHeRW~K9 z7y!b+Jnb%M_1p)+I(To$`w>^%z8@-xw!%zuZs2HVYNnC4BAa9^Bs&(z=aM_}vDy6g zJ*$s<`$7RAG6)_A*mL-I(B*8zqf0i_#p{@)4u6!i(co25j4eUP%9a)P9;5b@9^IoG zF`2mZA<}YdH6R321C9+XrKR=B8&C$#^9O^B`M_WU<D)#zFG0|SEkU9eL%mj_4k)S`@7067mz5MxLU)LdR{KJ}YD(5{Q=l;P z_~Nl_e@1ddDiIe+`!b*82DvyNf;WYv5-aOV_%FqN{pNvFH{(A(^lahm5dOm&_J@g@NhV^W-d!~3T94YJHP zRoX7O0xe3_tx$l0%^N^D$h@=_c^e@;j$#}kwHvEjX!NEu`*o_X} z?$9x0OmJsx3mAyE--;btyTi4=aR>FfJhQ@0ab5gEvv0|U5DEkwMqYOKgE~>v0eW7l zz6?Ihi!ZUIS6_PxQnxR??N*VE_jQq{{EM~wuKw%Vk9QCCALORiJGTB4n|n6#3>jy& zEf21@#UBjPwuAzR#A2*5LH~cWB|)D472Cp^9_zjP%8mKayUU+jZ_8D*Ey%Yt;AKYq z{zwGv@i;<(V5HfeH>ww3eF@=hIyQZ!Z+S|>x1j63>0xXdp#d7szH+G&_@mB0*`!YwOtXGv7ATn=OF-OpxNu|6?EdG4EmD z;J=M_R2uRT$PehJD(SI zOfX1S0~W(?EVoTh7*|ViuCq05 z_a}!2_FwtFUp$$A{5S3!VQ7CNk^k9!)fs)|JKJjmS4V&A%J=?4y{D)9R>U=c3+Gou>H{a_>zn?(=?UX0%{P`WM?W zGnQuN+urY8p7(i*M2r`Sv6;j`bTBe#bIw}L$R)vDfw#h2NJ&!@x6*X!_18+T?dE71 z2NChuzO}5emUewYTe}*F37v?ojRbh{$4D;uR50>r@0hsy%;}H@E`0kora_9 zwU`>rCFTXV4)N#EN{)iFE@F3pn$a5OAQw_=6c(S(Zb^?F3Nlx8@jrdJu2}OGIeGAg-UlBpUGv0^I#K9{@o^sa`yP9E!y_}}UO&dufX{fV_@bzR7Aj$O2=)6Q=gw%VJr?~E?FT$& zT4Da}=WF}nuqMp=8)P8RRrURV*PuMeW&Ab3Lpcxrjx! z<|CF!#8Su{aak=9OTR?|*Qs!;NzX z$h`jg`SQ74(}=vQ=_Fnv!akTLuwZ758a+PCYw3ZNqN3l54O}+2$66Ze%7H$Lz0gx$ zrZGC-wn7lH<$-UXoY4G%s%7fH9rumAwImEF##U>MLL*h>=P^wNIknA*a6KMyT>8AS zknwqaa7vC?H4#lgBk44ak;Xz}f1`v{tlf@0qSGPs-woaYw`&HsPDYqXL)dJ!%xD`pmb5Ae?rVvJ@ejn|E_EFEvHM8*ao#@d+o5#YqXbbie>)x6{DI3^69x zzZbkrpwxL3HslBNz0${ohpSku9kE8AeTwOoPHy}o;p{n&u2I-gX%itaM54r!N-`5C zdB1ti{CTq)a@c1KdKv7g2EEBJpdVzyjBZdfq#BeE;UkknMN}Te zBekyi*}bQq{G0qE`L92D`h?hWVeE@v#QN3oruqG>N6sfMI>!BY850SQCQ^*%$IhlC4guX%L&4O{^+qM*%zXV zKNX)jftN(=yNLPNg4aY916Ads+kUHtbT`od4OEsNEeH|aqi60J z^Pq7^H{h+Z>2Y)k&#s~v2*5tT$CP;FS!V=^d4ERHjFi)^P3 zI<;02jMIKY&F)dNSv7O35#6!RSlE3Q768*ee%rA!dW+p|(L-1c0B$q;zL|Z~%$_i_ zlV(;lSIm3NH=9*>-Yi5d7PVRv8Kk3XA2bi>p}VH6CqJ`XZ>>P^lh;sp!+!^fJgh+f zDG%u@H(52zU$shPV_&^jMM)O=$ECFQQVj_O125n%&{TQ>bn57muJQm^pEyYROw|Mp zHWJFYQaOOmX;voPDI%PQS)e39_Ocy2^I!R^2ZkOUVu5ED|F~~Y>`$GEWY#zK=vZNF zcx}4lz}~Gf*0=Z*=H`DsJNEf&N}EQ9(~Ez{+Owmh8_6*6JM;wlql&_oN?s@yU5Tb6 zfntf3ybwe*nUnnqmT2(`Glc>x6l}@NY$Ccs)=|07c#9M~oU`bXD!+g`ty+@@KXDEB zSL2Q$!n;+F=xPSzSC<6ZngWGna(kn@aQ$%CWXU}^)S608-nnD&XwztRQ=y?dlKaXM)Q$DVxb%9gA4U6G%A>Z3PwUAuQz5x3Aa z?KfYyx8cGVJKKBk#+!REgt~ox3^teBXV~0Vgwq_=db=mW?ekLKIE^>N&n=c$Szjs6 z$G@Y}YX_IP6|RfL>O5(A-12#gWTDO?ORI1g@a7kUAHv+-dd&2M3D^>i!!~Fgv<%o+ z`Y$x*5|9@M&*i48`nb5kY7PrV##T8dFFtwtUU8)Za$!ttp>ZKuCOyJGYq37g2!EX8 zk2$uO`**-#SLXq|?BLP=LhZ5mJh$29+V_j!<=>y?kLmvY0e?Nb6Xt^7U6_jiG06B~ zgB-HU4)4uuGrMdm(7cl$7Q&r=hbxl^=s%~Ad9u@8Pwo8dSoy9?dV5}W$AeTmSiA0=aup|Hg*FHGTqDlK9MpZ(^&^=X(Te`9rLoU$~*tX+R~o1JGX?5jC%bC(yKF7F23mAh@*k9=;e@HOO@P7mpG873zty!l6Rg>Z;LFNw{ zzFJAt%qWIOJ)okje|48Fc>=FN^0GR^FVz26DZ~>KAz=>qpV)t%zW14X`JbnL``60c z()>cum#;tnY*x%~FaK;-S%9?Y(r2@;{A?i6FlhOwvv9L`u}_DpDQ5Zi{d{~YEPcj% zX*c}#`^!Ejc`4Wih}nM)K629dP6?xxbOtopcE=gPB}3dhbVM)M(=t=d#^V;pj6C4- zLJ@M9&l(OUZ{~r=Rv_|{^Hu6+@HUbcPCj_GPX(o0_}a;_A=EqD-_KY_cr^lKtMlp8c!rzIaE0J?MVty+_ zw=Rwye9vD?w3j8`eQvj&S zsQ6R$J!|nKMuv$#_nP8%ERmShj~|d1;8=;3R}GRU8LIdnYFAzJ@TX2)Fq~dB&i5YV zO{)ed()h#^7@q@Kl?|0tDsaT$5OFgAk#I(E$btj6X;M_fm52&X_pHNOUml#z>QI)4 zgQ(e2fd?`>E0<{1r~lc1?{hO@0I~m{p?;naDwUWga75?xdTl9PLa^JCzL^3l4IarZ z&zgr5(OHQK=mg8dN1mpn2l+l=yyx(T6%Eq_{7{lP#CBav=)6)q(B6LKc=Os@KC-#< zy24;~U3&VkfAOa=W(efF!rAQ!@egHhu>i@%sT^~zoxW|Ps(bei1v!TjXLnsQk*^8g ztyYjjz6A&T-^IUzzEuWMceBas5loQ(M1zNL#^nZ>LvS~`B0=4eRMgy%3L0m;UPolm zJ?N4!LM(}b(?DW@mIPrpshh9x(}gY)vBY_&5->I6x_elv%322lPpgGOq9Ri%wpqiL zNLQ1;&^xgBh2ATV5BFYC{KV;Ar#b1!?r;5Mu&=MvT}*(WQ8fCS;_+`E)i%F5>Fx454bn+!@OUk1orpN6gmvt05i4PT0hwOMC;S7 z>Q>0tn2cF@SX$E*>ilJ4KDH${ZznZmHIn(i1!+?HdD<9 zP8srvHH%hl$b~zB-_&8ZyeC_HFu!-_q`$2rK2Qo5x7^U1TUP=vwyaNm=44_xxp>~+ z9WaNKi=oNkdUoLfl!4eWGb+f@?N7%_UC!}Krr>bVn zLH4X*g*gO(S1A3+_bg0 zuj@uh(%M2UuXA5g_IR2bY~7pNyraF@39Gp$8D3M0THs}2?W@{VqDD0HwWqzX8*3lI zY^<%M1Nk|lC`ry@#cUfbT8)rpPR%(B(fNRPYs0*4vnb3FN z;!Dw$1?8K1cC{I3BfiHe4(mv>zSa&?Vr{hds?o;6mP12VT+uXkb+@a@Bl$9|`DAy- z6>IR9vLQ`cyx)D7(HI?@y?piyhuRPBS$FH!W{tMc9W%WxM7t)M{7r$rtH$73*7i2~ zPqDX0@dU?`NxuSScS!g`WjZ*QwPdrIAz`?^t#1yA!<^aFWNJ1T^TvFBp~)mSnet7L z2x>BAAet+$jYT5uo%5w!_PDwExE{R&_+@V^ZEYHlC$|n&DlX5wY~RfB9=xXlb_|<< z09rWu3Q`shHwk3XG2m`EndaAE?tKX-3yQaAw&2h z-mzVcW3?HcqYqNM3BVC_ApvThUdDGIJr-*7j%;V!OYd(P_uYPJw8`HP_Q%WMItaPK zx{jv)F?MOogDvC1yQY@@EgrBXWdJ^Q@6}m!ufDqfR)hIAYpQQ5m&uxL@!(mr_LWzz zJ!~=`wq`4n$$XNNit+fJy#;Jk5j+vQlZk{|SBlJ88s?0YO%ipwqTq2?bf!^vi}8a= z&;r|%(WGQb-Yvv!@k)FuuIfG(|6p94itmYkKmPN$>go9Naj_8ZkBjlRnm$OZAvv03ponmBoUO(Fwaa?>$y#v;QC#F$aiFvxY21-* z9%^!ziqUv}!{x=|W$`BWhO{dkvS&lveV1mF4IxKEBBW&(ELK;d*_R&k*g9h^BTb0e zZZX?6R*&6pzb@r*+o&}{*_R4Oj0OAhQoc`>$8RGiipNYNeGKF`)EhdQY+B-s!Fk2g z;!`4iPWo%UpG)v({t$Q$JN))Rm6K$ttTwBC!D5vyR%?%Q44`79paPbhWvAsa%Qq}) zWTOBWK}iXQ%LY;fhjqd-Za;1w*C^Dx#H5E=qZWp9R1t!p5fXW|I0Uwv*8tkMv8IF` zoTp>K(#W-&^L=tK1S+Hl=1%Qp5AT2Us58Bfs8#cAHZXX+pbl!E(`$v)+rzVrX z#@J|W?#I}S!Urmw3&cC?K7I-aj-)Ydzr;*i~ zA{In#GLGwY$E5=DxuVK2t{GQPsA|gCRGOfo9mWmJ%hI~QYGCZ&*){#js%L5JXnlai zfR75hAR14V9xI)iJ5_kBaO%}pfvkF=W+%b>iTw!hNOhm>1^bdl*u)=mZBPDqOWm#( z`S)Yg%J)mx@PD78$2BY!ejdHfxMxYvHH>?OG)?ou?Ui*x!B!9p<~eI95-NnGkjCMS z>$Fa%R=Yp|4p&1X^|9S7ACpC^%ye>MPH2`lIyZVDJm}c0(Qavs&nulWbU3U(*ex#>q zqAQx;etb*z!R&$S*zJkFyx#~lh{bQw*Rc!;Z~uAprj2>c>%L#`8AxLKa#1MM7uD z7%%gC(EWk^C|NN1xS43~;m{JSW0laEQ@mjv^wy@FX$>~=oSM=?-fq?*{q*+`S<(9q@Nl5e!nRB{oZAXoCPJ3lMD6)MIYqRPMBEE z#6l(}T1`v`G7l_Kpq17M(i703GyBKQ6DHWIT2hC+fC9Y0Z%;p8*fk9Uh2-1xGP6ae z*9Hs@{mZJ{J?2YW&GR6$gD60mu(sBI#yT1$i#uou`#N!+vvSIj9w-F#anbT=liudk zOX`2S@Qcq$DqFI%A)GnM=K&gy()%zEy~4GXUbRNkc5Dq>)2kBadfskhPqeYNTwyM2 zdOOXcaDm0NFEr-gNPMQ47+fYwPUEFT+TBWuOEA zqQT*z@zQv7ystZ_YnYcUp3O%4W&=nV$SU#qx#$FO8Sd&qA=hrzk)TMA4#w(v!Azwu zI#d1C^KutIFN3*vnK4{1eEybA*}v*QDzWSc{TFAB;>BNy*YkTXC|qCZhYFt;8o0rr zO10qi$yAsR8|JJ)!;5yi)f@2^ypMZTI&UaAF7@L!oQF`Q+jl%Lj;02$y9SM?00NC< z*jfL$Yx-}I$9Mtts9N^O_IKU_A>|1tO`#KfHO2Skpi0V*#n}D!gb`=M+TAmgOIb8t!*SAAI^2F^hk0WpYN>aw*M@@0AG9pA-Fcc01 z1EGa*Kn@22Q5uLd;uLjGKM-1GmD#*t^2;Va^xY!i>ToPJTOc$Zn80xS-p!^eKv)5~ zD$j!^rhhx(c}ML%FO7upU4K#gcK-VzUYOceIaZ%R7o4x+jL1ynYIJTG>z zGAQI3<;09Ss`u#@c)br0{XEMz&Y@VX^Tg&L71U%pt}SRzY97}}lq;KeY&DGQCv+3Z zs?a@*FDHTGu{TK1D5>zmv~AgD!sSByshTlU{J?k3m~Cp?SoR<0{^9l3((t9N#JGMj zVS6>Xj=Ax!IPt7sT*sb#ookR=alz-isZxm~3rSG|<@M ztsx;##7Ph2xK?=D^}I`j=CgCcG4A%wTenKoLqSd+cYtfV56%Y)Ss1JmIK$0TI^3oa zE5pBMbyfl>PA5>eTFR@j{?tV5(WYJLbfhq`uf6kz{OqZGrzK){WunexV%@X3EAs=l zW?Vh-o{h~;t8tM%`zHD^AzL6v;Kxy(WQikJi+sZSvBt#wHIyTgT!kRFweBn5DgFYn z9dZzWPs}H(oI*Ec2l1_v3bHJm_?9F85J!MBZ5+OG9(qwD#|jJvHK$P*5_3;Lb~x8a z%2C;@BrS+JS!`lrPRupuCbX)%HB7j>NrPWfb|Mg(_j|TArss9Wt)iqbE0Uv(KfGg? z=OB0qggeXCE{wXXtTYo+>-w}4-^KfJ>oGH_+40P=8|~fb-c{JDiCi-Axi!|uTqivr zkmW`hedaE;y3fCBQ?L+9d*u#GMba>T+7`0xKJ|e$;ure8+o!kSDo2q5m-2<{uP_*I z(|0igzpGW!;%(wqK7W*>N)X2^<*0y_J1G#5h@#`!rmQhC#ez8n0|Z+^>(Y)hmIjKY z4T>~+y^z)!=fataeo8ME_4JpdpWkC-PaB^%iUngo%7#W?KTyE)iLJJIAMPKh+mdtv z+*`#!Krpt1c#^mgsym40gO}dmrEtuklEI{Wi>P*WM|{P`u=dNoFM(7O+!u+EUYFez zEnHGbw_I{)AT^O;e}E9sn+_ZZWjqFr-l(3DZQhRU{i8>>6>JWQ6G|8dxC;;`Y^%jr z>^^Z3kH_ne|DE;}GbwxOLwrw(>`DzdY`}C3^dMT_6f|j7OW+ay^Ap?_HQ=thmfr&n z!gWw+kyH(;hK2=T>2O_py}qpBPJ6^x@b&v7U$oJGXBre2bXgzAWgThoLDoAuAKAR( z#zum>dT9gMk1QA9DNtIomkV_o{`b1E5s%k%3gSKW%Wc`+efiZZ(+u?sW7##nBI{7S z@1)%rCo!aava%DHLBS&W0}L4vj3%&P5oC+dYGKdiJ&TZLg=f=t5jLlg= zy(c&w34cGTEXP$g>v6ZsC8|_*=eT3SJ`o7dTcDL!zvjt6DcC`3gvb2?C4y-x=hadu zN~r#V?N!LSE`O4Gz_7zsT=liMoj15uJstL+%P;)qN4c^7$g}k+6D{>i|9LXfyKC+a z?JLSrz_tKehD22L@l$lR7}DGPY<;DAwr&de+?pw-Ud3z7xt@8BN*LOwoI-7!D3cYs zWbn*YV}HtJah@~jV}L-=X}uxcY_5MF?!zn5i$t++7;E#>%0rlSf@&^seRbIqfw8k$ zB9F&EAAc?`#iIo4R%^9>KPYaXogAiqys#1js}KQyS!7osvVI?U6m3c}v66f>sY)tA z@YAb`4oZ4bxc?;c@%8Z9Ebq?Pbrr)_?$~x}wzt?i(+^GXRFrH$=VlG ziAJ!}zC2yBeeIoM-x7&@*F5~yp)W$bGQwYy_cj`W7ghHj_{v?0;}raM-I8~@0~e9@ zX7&qR2>3+OY!YwAU1A0f`OeCe&}r)wjRBy-X+X|J#*$9`i#4TRp8ba;5uO8( z9PEqsuC8e?^G+jcs6=}_S&epf)B=?7MyUvN6Y(VH^Q353#cmj?w8q^{33vQ2%Ukxh zH$wLE`t1cbL~d+NEk&1X^2M6MnZ`)5y%=GSC9mmfYjLL96Y0^*hp*p|@wH8L?0u-Y zuRGS$96%cF5Vi%gM4X9qzHd`?-?Q(F=WtKl|Br&8AuGzy1L+Ih!tL$`ZYL=(`xw5D zI=ue1a*|ZI9jF3X?Xnf{oCMI#&jN5`x2kozKp+?n1tURF-Ur3V($0K#+0INcA!SQd zQm>{|DbSx@G(Tfy7p&|_D>GP`4%Bet4s1@*YDEvR&PW@xKROxR9hIVSvN=csD%r1# z=4cRuzsDX`@-r(6Q)Gbn?tItG3^jvQx2MLSewY3Ef7oC779ppL9eTLQX}YNTJhT7J z)imkE5&BE%^O)maF!kI~Sx;GsHNCyZK+yAEd5MbGD-ZPdP4?~XlluC9cZz~q1mWz1 zHgIL00_klfUG?9}RHQI1|MhIeg>B+%z6(wNKa&=<`MVo6fFFqeg4|Y4I8f;Tdd!~J zJHV;o&N0CYrV{+$0<^4%x+F2Dx695ZPp)B}Ne%(Yvnk~YqoWM(`nx4G1rj72C=@h> zoL91U5Fy9qRBg%zB!#Xx?37iQ2ZY^<;M%fo01i(1Yx_!Y${n8!f71C!&d-Jyf3XUq z;#t1}qoSRinwnj_b_I%q$FS0N)RhuQYu-{B5?Yw1foU?Vr5RZUW+&6-y)DSBIE$h# zn25#W3kgV13qqopm@r!Afmcz-CmM2;ZHPtY1D9&vE1LVYZrj(O>!*_F(9e^nNWD|DX~z$w%J=i ztN}BR8XHQg)x3nu60-PHn#KKfX9szTD)tb4r)i-}7&}u+B#&_A8=#6ttv$Z%5p{PW zR%-JFv;7(NT!v*bf;?*&$r(h$fegJ(8`1LgAPI#=YtlKxI zE=Stux~=N2O17yIj*m7GbCC%Z#U{DjLQk~N6J9*gax4;ePsw{^5mc$5ecKwWhR+l` zA1r^T1R0-P$wpt8-}c6Lh&Z1z-|w6fDX!Ikb`^8bUY&vt%n8pCV2WC)YRFnCh_1<% zA$Y#pW?|86uE%O|>(GQ5*qQCNdBH6Z3YbiG7PZtu=-S`Rpw?NmrOq`uwaQ|%e7vX8 zfWJ@}QkOd6wLXCfc~pE3d4wk_(?ST>YRG3Y8_iHnG$IMkG)5*EZN{ikGMbGV^BG@2 z_65v7YakLR1RjTglAzHrBVg!8L8IW@;hzbjPEZE}gFcsMR<@1+H(A4+Qx207yf5xr z=C4wp!@23#d2XMp9!)bK#tAt}Ul50ba0j=3j3Y%QPnF||SEGSeL*+3V@@k)w3>LfL z8`*vR{#?wX+31cz%6jqZm;A+<&y025dH4G&?C8b;v%{_5?R9uA{0AIV&i(bQ2&4^k z+I^Trx1d+eNgnrv3|c>%d8=w%8t24YO6i?GH@fg~c)hPv^Fvw$a8>eDDHW(Tu9d#z z&+0zPRA55k(XP&j%47?ea!U7ndx1ZC4VtkwwtdsH!a?eyK3z1A*n@roO8K+ zsct0CN3gKyC3 z7zE*MB%1IOjY1vE{l<4+;T4##_P>PDC`HX$EKvt_qZQz*wL%L6qMQ4lFH=K&9obz* zN+bg(izB=lPI?Xcg$Q;D@O|%o+hseqcuMxG72r3UjI?FEY(IsJQxcHx3a->9CFEG=#-b(MQ zy{g`Kaisk0f}cG}B^{_e_GHIHmzG%atZwbi|KX)zBMASJF49MXS$iv!UV3VV50t%E#JM_Q7b# zH)A#GipY&v1lyq3HS0hEfz$So3!#v!k%>K5r|qfrN5VVgS#yn+m;Q3d#^Mf8czU{7 zN2bHWZ^|$AUp11R8cyBN80?O;bUyZp_5)#i+*E8aIQ6j`66pc)%YpKS<{dYOcQ@`= zsooSng9@w2USiuCcZR$2X&yfiHsN~sgKi)+udVb6SzA`j#^DP_P;t^}JPq0gpbB^^ z+Z?R%^E$>Abs8H|^Lo=(-A3)kNDy!$w90eTR=udHY*cuEFD?y_a0JM&1GB8;K>4tg z4a$c~IT{*Wy;G9S$~lj{(Vlk134}IL0RG>BkBn94ov+AXXkXg<@Lm5Bo?{O$ zqNa8Sef~@E`rm*ZK@zBfTCA3#hegnfYK?#<0}YdbePI@}c)LMuG%~$zMpMU=ld4^f2tK&F1yZxWIlXR^f71vTu}DAcf0(6iWbqS!d?P-?6#PgTeq=$o zqEgPu$a}V=U32mLT+n7J+5>?uRPpE09_*0QsZ>Kw&S`^@trnVwj<=X-mF%KP-^FhU5mdXk3$x@0XusZVAguY1uG8Uw;BU2WBpN>I#3coT+Aj5O}8E> zUOvAC0+tbQ2DWVM2+4_-5ORDQPCv=M8eRM+_KacX$d;4W^-8M4sLih3S<1AA&62qI zx74CaHIWf9i(Fw+xU4>o1!Wx3L|lgzi>5tux@ZcHy_8HGkBvtsA`>>pywyzN*%aFL zBk(T~LiIc6pQj<&o-a|Ej4DTj$i+x#O=_jSIxHN*YRG} z1naMS*@g6x5fLle_+*C*L|lLmn`>RGXjTmb4MA#E4M89st*S_RDy^#FaDrM@L!pp9 z5e_RZJk;9Xt2Y(ibNx>8j_>SE2PN#2Z_faY#+(C!{|4z21( zeGwD8sw1`5j!IY-azs}lTB?`+s%}&=BJa|EYEk-8Ifjc98zLTu9RqrAdH*S4W8R|& zwP84P6Pk7)9Q9s(sHGeG(8#m86&33yzkO2`H~bfsJyqPW$o{LyVU8Lm_%K0-FOD3> z6-3w({D)0TNxeFBn3py=dKgb*8~<+T@N1;bU_tRb}IU5j>nu z%jNJx4_@;7VTW5{a2M&EG(b0qdVj}+TPthOjMLfK(^F_p3uCSLQy~f6-rf9^I>cy{uZme_8GEhfluNR61LS+{=7@zNB#lA}46cVg=7kc`8 z#GW3hSe|zV6NM({=Jow++1lmU>t!>1QRFoy*|s#te3ok#w}!(eIFBOGQoT#wWnQ6Z zN&X{2+gIST!==HL&+YbPO8!8bD`}2d8&FQtIQ7|y(C-7<2BFxU)Y#qdFcC>wwSW(Kn!Ss9BRl)h$* zTF`5RGcuJO1NNM~$1d6R0o(`Zga(5Px}g15f5hMKmvm}_UIQ9Wr5#hR)A}F)kcblfI4j_kMBbnJbz$r|yA~jc?pI8eDus zeCGcS-O;o4PbP~8hk1J>=4#~an+U&-T=jP=$G)d#5jDF>#Ul94Sj0_T?)Nf=V!TQ% zK-9=>@e0&LrUCdRe1a2Xh)0 zL5<fjW&ha2RgCUT^pL$GsDt3A25|Hes36DDX_Wz~IdJz^G7|M(U5_GhgAkl=>A# zlV|%{$@W!lPQAA8*4zdnN;r6k=e^)S2)jX%fIQft=|hZT%yBC-&Tx?KTkVep2K=Cra67#b77FQf zDhs$@s2jElO!XB=JM-*!OJ^|&K$HVJ&lN9-%^m)2370n%_iA~iYJIx43#26yR@xn) z$}Y2iVxz|f|8(R3xIEaBO*=nj3?&=gEU`CH*nnL!R7~z=A0NJN_>!kCNlt9PqC35P z%X;63KfL$~a!Th<@o^#sLGL%|1>RKY4(rh6&Lzkg_SL)_or z-{ZNBj|p*)v=jB2AQW19gkTuP!L9a58ofbnkZe|yQKh23NVSZ|>QHddJz$f3K9^wC zSWJ4e!RSH{JNV59`J%l6C${u5JOl1@mAxE$Tj!CjMn%*+L_I}Z^(lrs2@6y!&LlwT zT|36?x3Oym2TtF!$-BvU+PTfUEzx+{rJLhlyyB%pL${TOKiswWA7b;qsi}P*j*e~^ zjb8EDONKvwpterpvtkeSLggP5~6Qvh@$Jcnj5N(MOi8wvBX^?##6>I`*=9e z-`9qdc5=H1f*!{IVT`7-uC|A-9|l`$e*K)cqrJtk=J=q0Xx;i~ptrlt{T=oqh6X$H z5Z3D`&YD~Jc4Zb~Tp*`++Q4{hvI-_vF@4Y^$|i>YHCc@s>lqtprJbOtg;Hlg{g_%b zBPdrpk)c+fak^!vQG*J-Gw1AaN=~EOZ3U{qOCZ>OFD$wV?7>)iomSRqby|;m&^F-I z7U2q^Zjlno&K?I%!!1jc95AzTvIjW z_dFJ59W`s-f4I43$y-iTP5JPjfvo{^bR%N!A+j#g9;1~h_#a~nofzLy&p3{5}I99*_kmeDDGfb43c#p{T zi!&lnZY;$!KWH%m*WeypcDO_#bEacRe4Vt5deBfC%;qyDBWBZNw3!F2mKl8kG=Vw; z7$-m(qa73_&7gWnHMGRt@N)Gi*1C+U`6B`?DQw)+U*~b1lJ}vfZC{<{*CGOFTmlq@ z)#%T}`P26vggCv-9{iKp`rbAFYe`cZH)UawJl9gzs&zyfxN@ubIW?j?u*eOP>Bp$3;_ex#kT-ar4-daLN9!?II~T{o+fY zW%(wyG~eII%Sl_2doKx}sO<7gBE{rJ;%;sd%-or5Lq?a?H7sOwa$1+!uVXuOtP$qt z<_sIl;NK&eLPpYMN~j4glmr>Ap%4?CNGIlX27|g~qG2L4;qlG8967sz?vr*qLb?e5$ zgfqBp{<3_aWhhhFcj>S#6ccX~1I>LYP1E>wYxkVKu{W}KSEMo7zpcfoZzy+S?EBF3 zcsFwJdFZ`wsWgRxCSwr48v7*V(960WYh!9o?%mza+J)%6Z)-!bnKjSDP1ac{{Z2E0 z!rBD|&jp!Vl-H)eiz(na94>F8O4Tj+>2f~a0t_j9dXhyWB`*MUmoJDR+;R5?O#~hMIw$e-c zHGZZZLe3uCV1Q>#RvN&NqK78{V|zxggMbj4(r}UKz!0aOVKc@7-Jqn>;tq$|e-T&r zc}j2-oA24BxQ#Rv=ofYeOnmi*?htM&a68{~FSPWYnP1$Dn^`Q))Bfafy7Up8 z>ki?q%0rF0uAJED>w+>wBGJ&4%jX)i4UO3@l-Yn8&*$WPuHm2ZY;B&Y(Y=y`tVF=& zc0)H}A>fk(KF2=>*xCS7gN?Y*)!#MQC3XGW$E-j>{5;33Ii|~Xw6(V{bO&%fW%0$&bUZ~?$i+d2{;I2)*um{2y5Octo)}JAhk!k5`C{+CQ zX2r~2#P~-BCGE0?MS5U!TWco6>#cVxejH&xlJv`a6&HV4eL|AB?ZE!|H11w#d!QGf zm#@{`*e^4WNLZ7_C}#HffBUpcIaeSAB+h`87r>LLPjBEQ4&+ zBMY+kj7J7Z37+x<;bfPdVh zC-|=ECTUI*CG>5f*sPi0aWCyz0tl>H7v6DAOQSU1D4!5?dz!F_&4~5syQ{q2bF}GH z(;?3`qr+;H9!GA(sEJ%s7A=4DT4nl+U!2bFyXk0e;HsOh^cDZ~LFIE=ao>Pb516q} zSFQj@u+8H(dR<1Z)@Cw#t-5=R4014Mm_cTG1IptX1Jl|>q$=-YjM)NKyHjh^TCBSJ ztn3~wv*N)SomJN9tRcvD2mM2~0V_D{46sJpL9Y)KV72qeW7o6ih*=LHQsl;}=ZqJ7 zY-m)w6Hi#J#5PEWbJ|J@bxI34@q+QR8I#I1bfRofQjemiXmPvU=CA)5>v{0ATk=~I zp9u{NkHmt_uItAi$qjaugTG=ktoQZyn_3#TZ`+z$bD(SSulZRqApdv(XGI48#9EsQ zIasaAF6bf2=a9hJ>X1M#c&F?zo9>~Mp~-ZTun*FmZlmEOD&P*6%zHlcmI>n|hngul z#C}R5;&h#xK3hKf&uI0AO+uCx`Y7ii!dKu@rXDEPU{T#Xcbb5*8r(2u9UtmEmAz`9 zF?=)ZL}xPb(CPmGvj3BtH}@VN**FAquy^=LhDLLqm%tj{gEh1YcURWYg(`wNRCO~Ne9n2>+>}JFXNJooo#yn#kFb!&@8RMXSsD84}P%b-RWH%|Pgr~4j)vJWEez1z97c1Tq{pdA|pzz~FiErNXxN@hE zuekhPxe<5&OPK$Hu&dJMZwUp1QJZNlV7GcA9?{cWP!;4tvLNXSf@-cQ*H9D+$8*Q? z<9?Gq8cJ*qOxpN_m$@CNeq`VfO1m)GRrz;JJ(p2Jk)}qEh|PmfYFX7{O+|T;BsLaWhMQz#`i3yOGR!{wxHV?8KXdS9^M7~%iL--yvktJxq)#E+o+Fwo-$*-|@A&cZJ%y+#DVI-~N3eLzQ zI7`H-5Ei~vxk(hlLHKkF;h-E23MayBHq5%h`@>=~%nV_FSd_wHXxY?fpvI{X?TL!M zD2rMx?_gB`CNR=Uz(8ProNl*0JdUZDuuj&Q6_lw!Ah4QT0r3%$*3eA=V?sNZ^1~D!PB)- zQUbe!+5U1ywRy^B#L~H zn%8>rHd2osA-;I5_@C0JPz%qZhigkESF|6Ax3nHH;}(y1TFqG@CB-{@?%7aQD$b+| zh`g;je`q*2t0U4u-kvp$fbj*MMgZ~POOR^j5hI?!Z~suS}vah7mqObVRNp(lb834r+Js0Wzn zZ@?Ku%BUS4eyVB{h5ofLmb<;y|4X!mJf8f~+ELejv&(L7-?*`F1vkHTP#Hf zL&o6taxV~oEMA^4tr^c+f?u<2Xipa`QI9*QEnPO0k<%TC&W$bZ#-!1Bs}U;SW6ZX` zSG0RWW{aLtU@@h{NKU|Xx28HZAN!92w@(Yn3{^k;y9LSL`= zR`q+ypi*b=)$2FOZBs0{w%&(d!$dR)e_6S?m|)2S6B4$B7)Ami9*H1d%7u(#(F9mH z6H>z&K>}L`{@-&%V@2Po#S+zIt++l5!sC!sjyCR*j!Cad`0{f}lqG;sW$9r_(n(05 zM&bhsZ1Lg=)R(~nc<>N6*=Nr}2yU7VH3y;PY6X5|39A>W4oE;0(uk&tBOO+NQEF_& z6!mkud?_^Xp^Y0huYxvuGX+mHIf9D!+RWJK5F~mwJ}~UOZs*i}S9NoEW4f}nkZcK> zG>iX&H0zIJV;e?7xMK<9NZ5#!@a4*(6O6?f(+G)#AS_gK%P!~v0_tGUFtqw;*@8hU z8=zlrG|U=)YLI?uVD}l=VFYc#xiNT_nSi!O`+!!$Z6<1yX+zu=iAIVMDH2Jf#*-6? z30Kimfzv%NJGMdRQE{v(wZ>fzpu1_x;4_^C6CgTDz~lw_hRFliSz?}=t@|N6at6~6bS*RHDLSQA_9KzpzO4Ipd;X0sUz?ra!F(m zt5O1`v*)V4fH>E*FRBVi(o#dsJA?)9-C6CTx$GSR1GTOhB9A9-n;o3L(T7gPQB{Bu zT@oj6gbo7u8v|njF<^Ud0!P2s>Y0$8la_JcN*2d*KX)0IF*%~wwLn1~h1$5+Rxvp) z8_z06$15f*+cs>8B<-75GdnI`zxTfO5pP436Fd?YYM9qBeZu{fDTJji=I{wNkg=X& z5-PzrN#8^sgaxPgE)De-yU8f3<7EYP_Ha6Mynxm2`8-Gq=h*bP$oHwdZJB80x4$O++rPD~v zBu4ZcV^o(u#y-eYyqf7EUv18H(xoy(RtIW0XV6w-v)Z13 z&nnvooQ@fDf#{SiNGA9}Uen|ri?Zg^D;J$=Ki|Ti>Oq~Ru+Iyey1h)6 z99aq&^9<4eOZ82ZrZ1_U(XC5G&I`5ESub^RyS#(*dOC$auiWq)+M6l{`>2XJ?FPL= zk0iHKkevbu0A3K-N0FTUk{~@G;2I^a1Zh2f9xO(jGR$lQ*vE=GHe&t-t{_C6HD=j4 zZnqsb7GSsyCdW8nOj!I0K{ufyAn?ls0H%=XJy}0r!rIgDiHors_0sTLin-}jee5+d z5p-uX)DQGh_4@YeNv@KDF3(-eRMw#OZbI~Kqy&c1;o!L^q@La@cVP|Nox)$)^2&~f+MuvC3W%CT>g>andrM{U3`&6?p~6+z?x9*;!>R9u<(`2p_RFd z_bufva?5fT)d{F3a8{=;RwplJf-Jcze_;-fTPGb$#E_`cQ-o2^UaaDVTuNThZ2X?= zkaW5c?bq`crDT;MvV3apNMf#kud~Jy84@iYuChda`@%0CVw%YsQRGp&mpX9P{}^Yz zDEw{ZfFbC0xrmuG=(C|v=R0FF$~L3VW;Fv=VxKdfG>Vrafov;4crqSSt8?-e8w6FE ztz<1RA=A`cDCUYvOJ}Z_DQ3^)igK=41TDxwZcrW14%%=PQ~Fp5vgxoByDv;T`ZKtv zMw0=DLjhW%PXLCVGL?2}!2xRX9J~}tB;z}jn)vb`QYt>!N@)D$jtO%AHFE%yfa{#n z%y@?QfY}oor^~I6Pi|c2yI*5>`^>eQe50!%`zw`R_aU_fqLZ2az(+hCJ>3u_3|x8J zU9GJ%hxf%g@A=T9>#JR{SN&|J@v5tL$HJFivp+lYv#U0L>5HEk=600s{6*}&tZ=Gw zna~8>Ya+4Whd`fazkkMmpI_SHXN~?Y|9U@gA$DRT%{Bt++5`eZE@Spia^zgXAD@VX zC+iH!jmsF4t8T!usidMf9J^P_NCRL3&+)_(K_Cb4oM^>ah&*2|P@(3~3%P@NM74BN_3ImM)8L zN^~~ScUE8X`&_4!zosxR+#_(^R!KY?YQu|4=G>(6!isJyeuiHAR?hdvUt5?DRQcW} zn@8~ClCyVGc?0?hd_VqEwefo1$9O#$xew_G=b-s2e@ywRzu@D70tMGKe1A1YyVdR! zNN1L0W0$z*run!y*PQgRb;`J=^KGD-Q)uQ|c~0pU;%~(lVgIt|r1z&9jtEKBktUar z6K9f1TV&S1LQ0Kj5~#9#j&fc+CDOX27lMm*sc))TR1-S{+9To7-4bQ5tV#}z96Gsv z&2)c+;RKb_=Ec8NN!>pjn_iw0x~k*QQ#Z9ERn$otAzRQ?&S8o~;nKIyi=CneImnE# zp^`(1*$}hNH45oDLxZayF5|rKhp}JA!~?O}*aI;shO&~|w>4a)HK)iOd`(qSuJf;9 zBxHVJ7wTL@Kt>Qk06ophh!}A^plTp?=C>SPSI^}X%GF#>-?ldI;&-dTIP0k#o$jh7 zaIy)Wz)AE@E&iq&e-~-3k78{Z?I#9&82Gm4h5fbtG?5<`>r8&+1ruh0iHJ zb5D6JAy0|cfk|d zpIFWlLnmfkrOB5(qD};kG*)zu(Z=VjtYY0`z1b>R)eXMe3yIGsL?j!CC?>p|CBzya+t+u`Y%QS(_Beu#-H9iVQ|Ru3zKv!9UNPFRETMJQc*ay_=^qgV5<@8EB_ zYfZk~$(sAKEuD1c>uW9Dw{opj(zfg%R!*hwoRsvn6U_HDt@Vwx*3$jTT7yg#`$;8j zP4@DiDB&mKOZ$oIL-9R(zWN^N+Mb=rRBSj|QhAa|_1!_Ai+FXj{5_~u82jnf>Ym+{ z?2UPG36>_AbJ=?+`nq)1e!$=3e!RmU^8DY{NQmp}hVg;;JyhiYq_f630EPR(JWrXz zL&-Sj08G$#;xj0(NoP%Y&3R#c?Q;)@+wr2JzG+es?ya4*>TAL*{2~SE2_m zE($F;Yq6!dQQqULwfA6G2_F$YuKdI;;V6HP7~UgP{RwVoehfSFDCaul@4>DbuD-`3 zi4=d2G~Q#`+&qE{>W6&(e_Wma!P+=dp*ELkN;KvsnUNfj+BkSkZJN(Nz}+z(^{`Ir4qX* zB{5r@efk-NADqslQCY9Ue7#gsPrTb7o>G~Llah(j<$S$VbdRV$0Ut{eT*&FR3C~rg zIvxPR@hA(#axu{wV`A(W^lOd^K3U~NOpW|5{Wh8P==$d9cjyb41cX-YQ6L1d(#?0c z(|3eNUUjgW9Y1%74zhR++5G4}ct5T|8EWSJ`boVQ(C75xKk3;4{jB~s;Ja1e{!~vc zqh0L~|2sE*u>bsb&T|;$8`G3g;#om7x4o?VFSg3-rSsDiDc~g%&^l3r8Z84_^0&pPCCdH)h;>AUwTwaw^cise^yjcoQC@ zC(OV8YWDWt{ny?&0Or7FIxfHb%06}yYP0LN4K-}8G;SMe+*D~~F>kU-jx{P@u}4e7 zc~v{xk2%(T0WM+zgh#ZgH%f1Ye(PiV@1T7Q-fi(dtV1_x&iL%%xk5VASrF&^vfW_p zDi?a3d%9V7r>oPqrnwGaENLR6p3P*34eD8=1=Un4{u0*%2b&VU=VeN{ z&{tfNr4sfzblvP-5QoQCc$W1ZRqjw?TN80GLaDMgM#V(VqgJc4LI43^G|EwRu;;y* zCTBw`qSquYt8CxpYWH3jAIZMyUHqD(H{&j3<3?-lmae7^ts#T1#j`!UF7XX7`&XAo z4nyQjb(=$;>}$;J^CVsSd``bhV=!rsIK6VFCu5A;_xaNHef)eQ(1%9tGtgw&SZNZC zCJ=4|m;!1|m&?@eV?s*n}Rp*9E+(2k0RqY)cJj`WiY3Kr%UPdwwZU$GE{` z)8Vl)`jhC;WDpaPXj+A3iKI2jnAkB8a7ZdYiHC<%_Kd5uM&L>#3g|J5|mMCUg$_^V;$mb z=*gX@cYZP?y26Y8F#F}~;=OEU_N#=*q1QwdC4LM%I01M?#fsm5yEl2e$$h(Qx!vY9 z$u^s8@~T9~poj(UuPSR(+dcil?&4H$wB5mJgViJ@F3=w0Pl^-911DN)zp!g-=Z^kZ zeDc_?sPm2B8=eojM}wnI{9&8z!MG#r%M?a7h@WvdvxCjWZG)MKTX*lib>h~2vd^kf zf2@N(ClkIRZWG<$&$0^P3Q}zvwau(no6zPe6cnZ^@?Tzm5rbbz6vZ~LW`EkYlG6#c zjAG?4@R$>Etzr+wy2d;`#=k>j9)9-U^Erd7DSi&?01YD`9g~7fZAa^^87;WzVY6#Y zXTUtCCA6o;Bm-PlgO=d}DnL;jnVDsR<2+HL004=Tt(s{7PMeZ2hQ8~sxu)xWN6_as z{fWj1mE-cv@Qn+f`smcuW1m{M;qEm@4(y0+{>EL^&xrdFI0>vM9_R5HQBcF#J$9xR}da7jAYpE7xffDdzQ`x4q^k9$QQ_ z7JQj%9XY)mDMXNZ1!&I>d@uC9Cz~gGV*Ts**H5qFM`RzpgT;zd*LI9e7pJc29GkxI z=d0-u`FdajJjln=R3FQ7?QB}VPhdUVsI#nt#;n_JM!&h~K0ABR4oY~CikR$fzAEUD zH9iei8xa24-GbV#cAr7xozj#C0k%Op(0sZ0vBt^9kkNff$+Tr_hLq8{b7#?8p)93B z`L`R*&ioszy>Ydr3BJ40Tl{*N@sdutOD6B}axkGA&!le0Jy{@*aW zJG(Qx6E@6jPP4OlXLAlCA+7Q%XRQzju(2^1OfXSGa=wBiJ}efB+k0 zEOM3sV-t)>GDb28gwWYW^Zlycnbk_@&d+oI{|Aq1di$-euCA`GuFhY$^GDxbyzED} z{Cxe&%g;NtyW^s-eSJjBh}wVZ&Fuk|0ZV1nA0s8}x0KmdYtR_a=Nvr?!5(kg`5ceq z)Z|p_e3?Py{`TZ_#f}}%?RW?slPPLEtLRWtN6;a1qYcsyY~J-I$5rue*>mZtzdK0jj$C+oPv)|t}8Qi&&&bj4(u>iKb*sgyn!wW3FrB`G^}bL#NTC%i+h zr)-jXKJk_~JTbnPF)?=gqWF};+%#4jGQ5VJVH;b$8F@y&HzVLRcs-my19{$n@hw?X z;Xrtr?aI#!=LgTv^?F^ooCCMh&zGa%bZX2*7sllA1el~7+cD01!{pW8ue&E5sgZMl z2$iEIwaBy*SAaQG0&IFR2df4nh2}dIho1FSR95-&hNg}bn6ZjOnMG4Knx_n$KIP=i z#r=c*g@Mk#-u%s{O}&Wnao+auTj>0KW*=2hiYrJa}4R5i8QePL!r<<$JyjmCu>#GNfS&`C)ZQcPxm zI4Q(`N8CTh1#L`Av&KvJEGK5I{_J?$cQb9`>?zQy?Gee`4-kCX9L2 zQ~kn8H*bya*m+oqE9E(_N!#^whlGd@2HF?W^fM;kzePb<~!6y1(1+ zkByzP^d`^AYb)E{e|0cYUz2WLdFXUI)HJ2})%T}0q0(YI%D%3d7@JoMb&4lWmD z#!sAt!)Je_qPY=Gm`~Yp&UK`f9(tjqZnUd>;r#k}{nd?CC5K)wy`ZXM%ICj1d+@YH zt*aMabkW%b(-yC4nln~0W!=c=NmXZG)b@q$HJ7h#t(tc7ajS2FZ8_`ofps?LXo~5b zR>j+7^F?Llwh(6|@+-MVJrt8A(OACi&Trh1-4ZIUj`F`-RyaAQHGrzq?W`aO|>Inm(@ zPaF#7AKFtsA zf!&zLc6(e_L0hYBx3+FecjcwKTGL(a=`EYxIW?D7SKIEzt}%Ozr(P_l(6m%p9^2dJ z7^MkCqrc&eWJe)stjy<%r=3BOGPn#O==;pZF)=(GkpjHRH#SNvICGMhzQh!}(`Jl%ge$@KQnWwBA>p8U|yuPn# z#c1QTIoY9_mQZe_*#G7H%KF@js>T*=ua_Z%i&@txGCJcWC4r0AF(^w9d5bQl!@4-V zxM<9KX=qV^_Z-!KmVS0G11v5Y=1M{ADQ6sTDCBI zx^Vy4$=L1myGJhSzxdBzs9tmONsZAJ$Dh=`ig?e5YB~(j2p>xA)`hs>>tqC2GT#L#1L7 z5g>Y0K5y0&yeQvmcrep@E z4R=--H&q5JqmR}un!|M_L#0cX737_f&UM8ldA_2YDX}yA22UMpDe78iW=22T+S^f3 z+fiCGkG)XX1KAte$$W4N`+lYvtz4X!Q&?!UvTdw9$8zTw`5V&9HW;yJ~8f zo|REk&I4r|3nJykmzFN{WXTnGSP81HXz%mw&pqE>Bx^J^yrUqkfx)LJmeZLrQmMow zn`TYll)jo+&k3P$q^f3GXL-%SO>1_Qn%5MMZa!uBg_=5Usc48sPi*ZDHTlbO-I;|A zBeB-ceDT8R7oFAdrL)g~uTk`U4BHmwy}ap97nwgPGS4nDjUqEUu%XC%hui$I+dSKC zE_a)DkJ~JEH@Ypkc++x+3qql7VGe#72G{s-Bae5ifC*YX*C$A%qffN$Vfq6Ifq4=Cl@|3%2;EU+N2y;t;~8=i^}M&>K!sSV79MamrCf)Uc z1RejK+h3RyJR#l}W~m|+^3)m^8#Sh{=09qznzYJ`{b^Yj>uc-Lnt7r8&Eew3UrD<< z?MG>L+E@H@J@c|s&jIh{^$%JMy2p}6;q%Xj_ZG4l;>_?~v0LLf26A_o>~Nq*5!0Q4 zHy}gR5KgK4xLu-m;G9jGJz~nR$KjU8~vCaJj6@8Q<2wFGgS3Bgfw>lQw&* zbv9-0HKxa_dwZIL0dIdxb6LlRXxfIdzUuBvdwT;dt(%)07rQryg8?yUv0YL&%Axo5 zsX=ak=!FM4oJQj^)twRhmSZ^vuEmPs=7{?IN{*3 zFU{Zu>@@B^OdTRsv+o#5cEQN*$JFK*jAwE)B=QognHpzWmtAtrx+_k&W`mW(%iMU} zFo@qEKHO>atGTSSjl~;vzqXre+C7gyh9z50Ue-dT(5>t^*< z9=fWox~eM@tS@Fw$6UDJ(lza+k62d!g7#2e>)4@BLUkhxYU}E{QvG8LzH9KiimI!4 zxwE|17v8W@uJ>Q&&*kcXCB?;;GI_o$rhJNN_!5+Ex$>}j4cP_J1NuTT?#4LAjGv`>s83j9<+!t7NadwSSa%pgGK3>00Ur0}`o<0vcin6CJ zMNGQ)oLE%9wl?L|_Xcv>7MJ-=KirvmF=3*)_@5D1gNwD~rP)-h({!BG;Ugd3Wq^wxRS`R`F+V+RDlb#J!xarp z{^PEh5r|D)mQ&n1C7Ra|GV>3;ogeiVmJLleiw-?MI^GjvI7=C4*mdY^9;5pPmatk zQ3jP1&i>(AH^=3!ITkm#J)%QZL08AvUOVwprU(+{;1UsMl0#MkQWGFLAPVJLv(^{2 z)RuV$uNum3nRn*=hX2#B_VZaoR}H46Rkf|>d8||H+~`2#!9@4TW34~?S>|agYHJb) zgV8{w(_|~Lw1ty+r*SoU(q&v8UtH8-=6E((J!X&Zrl5Iw@CQN57c37RAGCvXe2lic zwsm&ob#`<#beiRzriaz6y5o!op)VL6N`8bq!WyxIlOXIYr`Sgf`MB{mbxtN_2k3>F6{PFM1|T1+In5oa zDy}QeDF|LvQPnzoO=Hh!amCuUs*$$R!lt2`FP6lr^GYgs9H{AP)1BL#R}!u6n_bs> ze04+fxl>nMFt4hvwY@eJo7K^B%DN?`{iUOGW>-er1_tj%O!yzNrt_G!%V6&x=j77u zKi}xYpHE|(OMERD%%{nhs{~)-@6q^1E~z>q-m2F4rX%oWJ)}VQ>o6a0vTrN#tJM1b z7t_mZlht}&+%#ON)nCnnyi=U&xh{PGU&Xg=E2mF z;!1cb}HbL1~E}ve9l~t@<9JW$%_*R@s4J z{ab5`H-CW@h(Sj8YUp@+n&RFEZo0jDsk2w(Yi%(jXMvg3DwxPj#(U$6x81?xJ}lYO z@q^;RaK-}Dr7uN-Cu5OE6z>5C?+*^%>A3+{<^t0#8>fVx;JvT=9~95nOaw0u(?Nvw)S*h*t%)+G6ne&+(^=PAK6HdiG187u2{6&$q_1-jZ#X*m_&-o4x@ z=XhBO=+1@`$zSkpRK6X&cm9&%dRlb@n096#8@F26f})!TgzID-()N}9PA%_l<7KA~ z&2xIYD+3EmUypE3oXIYb5%WE}g`UN?)v)BsmDq!H(y}<1QQKp__rrPDTDx!Qq_vpF z+vXl~D>{?JHSHsDx1PIVwYBw;Di;21<4@KM>u$TAd)|uasaS{1DJUs3-0b)9g&5eDZvwrF; z3-Po~w5h7x3Dq`MmHnvpUTH^Ce`nhxDP4A5XI$;b!TNGbpX&0EBZp7nrn`2oaO%3N zwOcV;l65UKFP)&7?z;Ja*0pWTZI6Ly2d2!o0;2e`m*W_8w_cIL?{x6nKaKy`B>J}u zB=P^XU7DXmUz*?~`ZrF(zk{v7v<2Hbv(v#B`bXhkZeKSclUt2%A`?xqX~qK0VVD#m z7|CJ6CY(2sCf#-Cmy;>JFe!xyD9MwoGi|pX6PrqBobI~rKfa}OWF77~C!Ps8WPF?KL!7c3H%JC_Jvd) zCw4h0B#%@I&0_;{oGta}y6#`3R_df(QNF8)U!?InuXf^ppz+kNE28n#tKgdm9(?N8 zRdhuC)|s-yBw4?%mPz$nXQFhZp?+O$N7Qefd0{e*&MRtJwu>E}sIT>f5$$JWqomZ= z(Re#gbn5kl;!4FUoP_7pmqTx&zD_DF0?~4@&(4+FnU|!yaw31JFX2qy@@o`7rQhx#U-WEIXZbr2bpYJg1>nZ{v8Nc@xN5=;7bli;h(N;*D1rT^!AGX zwe|s}Uk`q22Whel^C#io$wY+We`XTC2q?*q=)zr-bfHmh_JWS+!o8Dpp^;s35-++S zZ8|D#99?KMX??_tE?jnmE;O<`i~smWTX$VKNf#PTR(6ROUHFe9bfMAQm`o$z;!azC z!pWy{BF#*Vzw>D)zFyEmS;l zJ4DA$1@G?@cp0vn6JLZgmE>4{P`#80?nZ7>lFGwpNwafOnyrT*?xg7pIcf5bP6I#K za_Qq7zHj+%GR0Z>;xt)q$tAVp+~MEyP2fv=&raoWa>z*`d8ATI$mVU;2`7(R-%RFl zQbUL4A^uis|6)=`zng@A=W|K?g_H0n`Df^mRWnJ4nhxs_a|@y?jy-8QtV7n{C+Ser zVS8fjJ3@z=CfgG`ZITW(9kwUjm@>J)XqvDm=#X{mBpqrpOHw*y{bG_1HJQ#{D92x< zE*yW+b={e&8`cStnEHzyN!>USFT=Id*hn3Sk9}&iNik)+b*JVv;cp~qPWT%u>S{o> zGkb6Wqe(47_JY4&>NknM^{Xm-+ZtaH(=30%vlKAtEsM~gvE?mDkKDe|S^{rENWzH|DRUcdq z(xiOwbG5xVc&WZURu)k_*=C)>`_?49o5@C7`+|y65Uotkab(Ii_oN(;%wPHnl*LI= zSLLLrn3Q6IXU9f4yxfvXF|R@f4o)7a-RS6o(uWYgqG;UG=F`M#(%TFc@9 zJ)(XGr52SZ=^JiL)?>N)bb}_Iqka=R|M^L6anM|>@jCyZW#5TC&%pP8hXgX}T-iNE z$3Subgyd=8d;O;bjm&6_H9ah}#{{|ONb!D==1N}XqTE1DFTP`y-VY% zd*(6jHvUuN#W#3Zb7V>BG=RFg6LX&ke#r(qLSr+Bf@oR<8?G8=a zuFyQLM4V5@RTY|ow^nHip3uB2N%Q|qo{>?S;_v)Oah<;Zp?^3uhw{WBaU2+-DR|o_ z;XPaE;H^Ar?nY#^M(~pTO-hzMwbDH~U0F(&hw+5REe?;?d6Q>flt;&wO1T}I^$=!G z%H2>dhSV{;Li0#Gp?Q0<+{aIzc}do}v=O1XQ)Tp!u`h|+-6sv#Y2=gb$6?%O&Bi3| z8Ar~yz{5$2h|Edg(_DM5k<=)$PFIt{dlx&5Ju{0V3ur?B4KDVQnF-%7Y-3yE&s#my z9b^(G@tK=Ag0?e5;frUoNYd^ZcF-s6#;19~LNP<(;MW}kpSg*n=*tX+gTLG}^eOtx zO&ox%;nF+o#OCjH%Pkz5N@ljgNgndfQR)AsuLepPE`oB%G zQ-bj>X$9lok~A&>=j91|B^b zg^Evom-&oOe;-B%$DDdOC_1=Zt%b~P_`ebC-^CM>@5wPVdU$vY&3D&`^Ibe*Cw-cZrTHS3sFqRo=L91; zk0v#hkFUj<4pu%Q7OK1+5j1BK{Bfj=v`OUeCOL zitqSrPE8KX8g=lKbG66f$MM-5{Lwl896#l=IVn!@Oi$&Yay@pL9iPofvF>n+i85dJ zDH%CFo0DRO=QGF1Lk7p-zR)G zz8^Sj8}YWjqTe5Iq0?N%C%W>w^(ZR?LC(|7!Q$|~H@haBIe*!Z$BwdpzPS8PYu3X%YaV{Md1*~`thyjn@2;skbm>3ap8fSt zZFNIF(w=^G*sdqN%?w)C@e}PyzSkz(4-!^?G>M@&BBSLKc3tY=O-F|I-}Jk*rxp5L z?7Do%Z`C^bds4S#&-g!*UPZcj!g}?Ctdpkns-Max4jrqC4|bXLe9HSUzG-ZNj`*pk zPxfe&G{r~A7yV;h@vz78kZ~Dl#AETNyoAH}?CnhA+v(yn8`*dB@!qYTH0`~`b~t{} zr|CXx{5VOsGUXi{t8A|CU*K@Ox_3m&c6faTeyx9`@=wXa_5E`lZks$~jt2n`EKXRD z+c)BiM#RT6PvG8{n^g`^wAARmFZCiZ&0laIvM);EBD3vDTyCybTp30?xMwi#2}oNo zj{D1xWu0LiMIt}!sP(MIU-4^=uW;ghv^^i^HIxsjPwSV8|A94X{*-YkvymXmzS)Rr zCY~_ZWE0QgSwpXn7b|o825FFg;69kST>%Bvi*)dSmdouh0m z)E%zeFm0Np;lgOZ0nF(!%N&Q-N=p)#arPz`gi=O{G-%_qGG1C&-Js*d)cS|= zOI=Q;>tH)n|FPB6=Qu(RA2?L@rHif_^(gGZ!~_Z@pEV=9QlO~-h#H1-|%Z0|7DF@%)Ox@xs*rxm7}!QiqlQJl~Uct zsdMZh%>EBj>RVkCUC{xZ_n^c4T9OVc&uK@~x#CA7-#K*qBtq8TwzNI`)RBagr-z_r zp{qW)HBkB^TG6pIjYlF1{ekRgC=~6R{+(m!*ynh(BeOV%mk-J-MvLzJw1%mSWE}po z*6jmQx8@1YICZ-+Qmo^3xk@HAUVlmZ0L3%D$sk8`VD?etdS~xM3_GfLt{pd~_8_Eo zPQ;GhIiY;~Z}(gX|4$s|-}U{M9KNO%S1JFg^%cSU>!dY?AK)50J33ZX4S;F8>*1?B zwOry1Hqb3R4=Y`5eiQP+<|qE<*m3hh_8oEWq@lY^9DM`Vt2SS8jc;PhwSO?r%1Be( z^a-1fE?Xy0(&Z)tkJ!;=?h8Du`%Tg&49h$l{djdk*N*muc&@~{%5iNPxsJN5II}dM zI_tP9^#!47-bTxX&biho#|tLu>=8Z{bZiTqeW|l`f{v=}f2qrJn2zyV`kKUqzE1Yb zpm9unJ*%!6Ls%Rx$jl8E9z$P8ONPoyYs>NiRq5G*oGbquebqS`t#6&XF;AH5)c1^7 zROfEwB8`c;8`W3EGg5aj#g8$^bFD4)i2U zqEGbHEV!r-@$IT+F4?kjWI^BY3y#EPCI_EHysir(4T>q(!W=HE_;F4dzR!%0w9Sra zv&v-hn#1I|_a9*XoHj7Ec@#|NVyA}GGQva~VBXyhYa1AJ+5kO;qt^{}DQX3eQId`WGxPp_~z@Xvyv**LdRN`x0I};b^ z{*DgyM2R-;wB}jgwqu5~e~8WP+?y{B&8K$=(RR$)$KE0I?$qN}9dn1!iQB90pqj{M z8~c>5oY<%IKjkAkk>(ydA9f<0eaw7xCldLX#tqhS<}LKmwqfML@#_zD{LaqbJpc0| zA7@OczVH#_U}w%z#PF@FLtenD4af1FkX`pRRnX-&DI*CLXWnIrZNjKV! z4;fQW91(}%?~*H5;Xqeogx;jfH2sO>tQ zyViJuoESIXaJl&U5R>oieAm5By30vML$C3H@72!tOPTwSJx@{H2Qe|1$V|wuH2pPv zclJJAYu-YV+T`3#MsiM3^0)+?!+W46<`SXtO{H-q-<`cs*Xk|Xsj;Wfkog#)aTYjv z6Jt(BAnRq0=UTHO`Ta|L&z~4`^8F;|du8(b2EPAP%OPt#%Sg^!v5?UF7iCVL326kd&i^Rdv!Iu?7YOT>~Qriz-u`bD{Ai zXAa`)m&^Qs+3VzCHR|_oCcldw1S}?|;qrtUE0uTEQ?``?opBLhb{v#TZX=Sr*4p ztk3^&X zJoBV9Us1vOP>C;X{rbx2`r3i|LRV;L+KkGoIWyzo<&4obCHC3NxZ^69UAm3Nh_QlO zGd3{4;IAL7KC>wAxU*X?$V&5#rg5{4+-a2BtDCwnpv+239%9yGsq!kS&Ofww*Kq7v z?&Xm!{%TSg0riA1u^b}g&ICTmtpl|!{K)fsa^y!R1USv!Luu*kbK8>xa!v!-%X&}z z%G^0$IkB(r#IMYm`;`-WKl%6El9JrK(o*x=<^F==(%ig~Ll0G!M$1~VJUj@U)lwEM zt!%3-sVHfShH#QAi#Y`14dr^}S;96?Wqz!X*B-crKIBcy$|$b1N4Ws5tt3$TV}E&3 zL6B$FR?Yd!34MJhklj~L?Cm}AtGu$7S6rNzS9<6lp@P!9{G#&RHA8uWp^;j5Nx)Z< z866G}2ZweI=Hykk6h}vkc!%4U?@hB0{kY$gW!u^L9AY+$M(ayjtMf9HBde>~S)-5}?Y-)dVW=>(-oQ`Q{mgUEbI_I>9xq9D| zT^@}TZ=7=8>TYw^l(t23jGrRWe)|$1raxm|Yt))&B%VI>9KA!p{5+p(8U1w0-{u+i z5Bbe7&q(v|YcR7lHL*YYH+mmL9dF3aGfrlA?p1i4TbP@B)_BACh!c+AzuWj`;wn$z!3*xI|NYAQOoL5{Ujtrd zTxc3wPW{X&E2dxtjAh0c@FZgnaGntdPBmht`OC7N=#)(Usxxwd`3CPE7@4LO_ulo+ z?x#L{e#f8wk$LTnQ+iFeai!@pzRthP*oX@NX?& z7Mf|sdVa@*mP-`MwO}LZaLU8l=p2fc${^s>hIWx%NOMw%Ck-bkk zF(XfeM5jJ^nalpR3rPO|n^NW@}9bYJi?heD@L=f4fF)G zy~{B%nF!=ekX}G?tR#WzfMRi2H&AVMh!@y?FHk5Gkg`L z1!?221g1ClE*~tfnYM0l>iUZDoQ~+6RsKj{T{IrBPdOUgA70d!H=bSAUIT$p z+PHPjgAaPck#IvtRxoF@xodhuVBFezbVBo^s{Z-S&13ylRsCbl&GY-K4txI-mZ41<%BI?ZdqZTKR4H(S6G(ov%)!P z?rJ{9>av2q98WOU=MGlKmv@BI$g(*pb63a{uA6z%;K<3N(O{qa|Di*gQ~^J#n`F|wlT(95R3by`ENWxLEnvn==6`&`N4&2`Po$S>}m-)TPM|KyZU zC$5`ZGD^xFWu8EQ(*0YuFV~ZklY34<#1qM>31#Kyc|wsK{`g#TMQf#%>vLsSyKi+@ zXS;m4R%L5N^PN&4o*W3`ZyB4+l~$YH+aUejkTKsl!T196-@fXl{q;r1cTLTk^I1=t zZ?Pfj|3CM3|NknI)%O3iKCRaO7Xr;OX5p889pB5jTg`_b5z-Ss)jAf4@d{s0`hUg0 znO+<%?k*lJKBf3;#py#C#T>FNiWYSjjTW6!^tB>liipWA$c^TnlIuzj76hZgQ-ZF- zG_#QBB+ZqkHH-TItjy45NK+ih*u zscq-CeWT58i)ZD`%xW{+VjDXLX2v$uT_IkaxqVAhY$m@O44%usu6dr!OF-ni|M5f3)E&1`ElD;iC+G0@f+V#*TgS`5<;l9wzj9%t}Ss_n3)w-F`mM)GV{%WEAsy%Kap>*%{PCYzc>Gr ze0z1iIXB-d&Npw%zbD^1Kc53_;e0DAKQq@H$n|+gyk~grq50k`y!U(G^Sa8s=I!3S zUh6`yIoE4?yyk7*KYFb`@2OtPEq}+{$IH9%=D<5{^9uL$W^@sYHu9>?kTULhC}-(1Os$(6>YHhg`ct`$E<)L+0X;nHQSIjd&sR+|Yl9 ztc*}7WMy%)P%C$d+d~_DKli=nvje^pFZtSu)b(!nC zzSLzc=`xS&GOytUNvFPoGc&qEUA0|ySJk$J5zh^m&b*`Q!K&x0?EmD5amOo7X45t^ z9`{y6XU=I_-DC}Fgb^7J&?cv*5|PVUSmd0nune4Az5)ee7cZP8A`TUrNZ zb|#gS-;MF+>c*KDbza_SeZJFN(`nA(aPCH5?#xcnz0Tt5#_9pC0NkEeG_$(Cacc9n zLmRh5YG?AheM?z2zX@YYQK|gKw*(617e)2>XJ#~;S%jKH*9xs)aGR^f+Gb&(u(EJUp=(#6c|+j?h1TXm^Q=O1eWB?pj1*2Q zv~MbWu<-f9w+da|g`E^C<^SE^LCXMx` zpBlP0WVu6TN2uH%^N;v9_+4(lIruaGdw%QR{pNiC6@Dw5XJNLP>*9%qS#$ks{HOVU z;@{&>^Z3oj{pM}{d;C_RzuteU++b(&ToUKJtSK+r9O?KE+xo<2slc3Tud%IrZSyv6 z@3aeTPCCP~{8K-2M8QEq>wr{Et@CPaa>jJK!je&0mei(Qy;4%YK0@kj; zzJPT@z+4&%3kOp^nd_`CTKxAj?oZ;GoRKHbYCnGb_%n~^VM861@&Gmu^zomJP)8V|j!TSw zLEE zLt6z}=a-g#@>vGN8dnbT?mstmK@r`wrfapf85<}VU^fLj!9O&lP6 zhlcM|c$dc9op_zmn_y;`ztr#+;xo*Y-M*qCU?vU>`6QY z>`S}|9AJEu$*j*kz#$DUV{SInSgqkTP|h^QjY8n{Le1PQY0W)C$J{TJtsIHBe1d5e zC@j(VGNE9V>(>g6sgzU}&sG30hVxA862-rUb&gEy0pXd^cs}qEW=1lt$2H~|gJ(Rf z=akM1O7r(h?PbM$J@E`*-%y&n6@RahMa+8|b3pMwR{Xzd%-=Qq5AMdwv_8?81nV7{ zED^w!ohEtN*+SWt`(HBI(Lm{#%gzNBXiQir*u|PEs<1xsdt&A%9tEz^nDNB>gx9ib zBGW!cN@riHsWwS@?He?g8ziq zd#{w#{#D{5;C9XTw;HoUQ$1*SiGP%vSTpU%^y@S5;30Mp7=aUyQKK-L_%q>J4c95G zSJhbt2w6J{SjaJ9lU zn(uhx4Px$A`u8Y&TxgmrBurb|0lZ6Nwh6wuFR>eVKn$PX4Z3{X^4!qA`aQKOte;5Pob^Vr<(809}d4fN8>&ouN3H!ik-gcn_E@ zWwCQK-Y0q4K~0sX6!Il6yFkB&*-zx59SO~-#?&*4@z^cGr#)No=W}Pa$6lax#?f<+ zy;h`ZpDX3H&zIV#H@t}$ChlD6E*?XmCF zn7e2h9{X;QgME+EzgJWJD)CoheyuV0XK@0{h^{YYZT5S~8q_jUoLy zjhgb(js(tDI8Wgcg{zUC*H}Ya@EYS9bG?MI=K}Yj4_>q#9PAQ!Q!Hd^o|*{|>lG!ib|cYq%%Z~GNW3-zkTdTm?7845Ec zUpuI4{Kd|G3k zMXK58!wz7Syt0i3h0Td;3AaKaTV4qQb}H;4ZMM-%F4^eJ$H0NabHG8`U^Y7QDsUQQ z%r>S&KN~wN;TZ~NDx3xX+31qQ&!MifjkyZvA^B`$OvCdvuZ0?3q?n5}yhOuGHM~qY zS*|>+P&lq%uTT6Zbnekyq_5A$4wEC=_!4lR@QF756}Vr&9zff(tt_EwdF3mbDKLk& znT=-d29`*<(9CCnW%{)Oit%k7x??cPT)(4p95dk9ADM6yA-}IWw+i?%5O?tpu^Oo zwU>60jSjyJd|&z5r+gvtf&Y-Ywm#9AL;5u#VKg5O zvDM&XrO6jNEb%_c7yXy`JcapEM(nVB4GYh9vBpO=rd~L=XDOVm@$>QevS}%Q2A(6e zh6NUC=L?6l7r3=A70J_5kdJ+%l!Epm;hQ!7CmOz8^ZJ=m-XgVzZzFu(q4e*>C6h5tRCu#jy*B!t zAK=CLE&2ptj^N{a^HpuK-zpV8(R^s4+X6QUKh|cAzg;L`dnp&5hJ1YlS^3dziFpp$ z`qAnafWOzTFDZOkIKd7hA2j(-z&AB!FSX-GhyMzEUvt?<5AL@<(69Ryex&dKt=?}P z)ZE2N``O{j9%}25eC7Tlfvl1M)1*XphG4QSTA+^=Dqa@Xuk}(=d$xw>3(vOnWqv&E zD&V=ogMGe~6m1kbTZL!UF28-JQ9)QnNq%nb^Z@V1XYjLEUQ&rK?YDoe;rldvzlMLK z;fEAHY!rd>h=#QW?I$$+w8CeU^0UhGPIw6D_$z>|-a)uQVKcQBU@VpeY}c4hh241j z0oA|&8YuYvNGYJBvw-ShKu2c*wbB7Y>@(|Qc%cEjVhJxJ-vGC6y$)QZF{?FZjfTfH ze7)u(mNtOyy$IYYG3K2LcO%b$j_d+DvJ0SN&}4iE4m$P}uz(gC(3=ngRvCI2uw-Nx zU`$7O(Kl%7m@a^SD=`m9Ss2p^g-4|9Xqv=4Bb+m)D+InkT?BZQG9UO72|w~saVzbWS5d5<)pJLLn6 z{v_=o#Z2H81#}D;zSa+Xc>0I8)&)dhj4ViNr62{~-D=;l&zWqT!_) zUY2;7_!XMhxWeo8>pe>0aS7vZK#f+A1(ZH0sH4B2xeZGnH1DSNgZLqPfd?pKQ2h<= zapV@zAU5_DU^#t9(5j^Fg7_8igWvl$aFfu-qj(1>zC@7m9p%N|A|FO}5`IR*&ne~$ z$To-<@gneLkrn#?CUBR+*A-u8IfCfFe0@*j-`BL_DFqq#N$wvi+)rHxX$8WA*xsP^ zvGRFP`T3jX@^}6E55@mPV-9IdLSpbG1ey{OqL3_T&tfk)x;#XV-JXa~m$S#OqA*nVA=lB)K4Ua`W(cs zkP`hyb9_L{^;?bEp{00G!w)OvM>OrDiu0KAsTyTJq47^C=F=MgtcG_c?#K2-pi`(aitQzpRi!a9hgQnmLKg5Eg~D?w z_Eu6oqVREzk(r-TY^>0EN#W}nFSC24*2hBA&XRbwW~H`xfTebe#*6P)YL5#h{cHeu z4zppU*dj0R2F1Ba;ZGE95l-lNC6%!Dm_?v@x@=mDcjXJe{paR-cQXzl~{K(iXD z3KWm7TBTZTTrXc4`3l@4@!Hc>tAwlZqljm`03Geos_Dg`K+h%c8U6YKJXhl*3Fhk> z|AxlwRw(1sYFa3i@w%adJW0!_^C{q3N?nb%%UAJIs?lxepxXj}qEKf1s#SW`>akR# zz4G;5G_#r+KY`no@(%pxh#@1~h~Xh7Vq~L%5yKDV2(^_3l(rc$s?f#=cfaoja&s*( z$`~ZVyq|>Y6xJ(j(D+6THz{nUW+Tk|31&=To5FU*?9gzhhPyP}L)(ln_7txAG~CaK zK7#!J6F8!r#FaxCfkxD;iRjofqP|T;N1YL4o|b67Lh*AVhKwsC%=Jl0W!5f&&m*N+ zg={0n8sr}_)+)|AMy3&CJz5trPD7p%?xOes@C=oYoDz!AzU1rO%Cq=I5%U$so)L2w zBZ~+c@;q=K{%wSD=%0ZHur?890+9nFP=VrmN6?&CfTe zaqGDkYg~ix>jU;s7d6P|ufPF~AEeK!K|UV>TH` z)R0=>1`)-PT8L^b@P@X=uSCL8YC)i^8bqlD;Y#EmMgFe?PuK7n3Psvcq)j{$-VZ!L zsiX9;q@{Hb$CG}g6Hzi@I<$7bOhL>qr=56Y!S>bIR<*hf?BhPwD z^dV46RIeqfH@>Vm*C!q#M(VnrTHXgdfDYGF%Y=0ny&ie)C#)sHr-B-O6uDF5q|&;s zr>^(mbBVS$Xe~FWWow{L_Y>2nke8zgk0?%Dq3B)%tr#5Yk+0;4??#T$A;xgJ4Un8X@(B*N~c9zF|**{w9uPo0Y(2?Xwk0&1MuI1Uey7m$8Vu^OMFDb;#0Ly z?*e5k*+PvAlos8hYc4J5o`l7tXu+=*IHWNnjJ#TmxW-IF+AU~>z!?f<6{ZEP5V%nJ zk(HMgv_g1WqT!_)7CYRcYc4I=;im|%!Wy@*dMNp>QB1MMEoh76xSq1NAfbiK)c>HTF@?X z#A|{Fq&)}}?P_6-#s{p>cv=5yLC26MwpzY!lDyEg_km)oIR`~+ifK<8Q+UMbSB^rSI#ArB}$X-s?4m?1rBOly#xTN;*n zj2Y6C#?Wx#p%)Hg=(&XZ^{d#E7#8eo;0W@JVY^-diVbHsvqG86jcFT?X&aAe>yBx= zj;ZyIsr8Ogcao#@p)swynD(SGTKaBc*3tT6)LkR+G-iil+LOlUNq<0C`p}s6p)qag zG3?lb?7-cf*b0=sGDa^6ecBxy;=#f>`hOQtBp=f@9#aoC#){ZJ?6ntr(n{I)0L3eA zrKAF-b+=N|_kq&7Tj2+M@*-Z_c&oPVR%)CWa(Rp$HQJ$_MOb=`cI`FVwby9ZUZdTRUZWj;{tA>{qg`8iyY?FG1fS(r$SHXFQj;TA;ws*kE0b&N= zssm2m1P&qF4mkM`7)Sp*&;h|2RX9W8Oog))XSRmt!9$0(?hdp<@TGNkpc?|Eb$95z zWe2q{l-E;t9V*EVT5gE&849n{+^<)7k77P9X&G6Q3OT?JEmUG;MX5vWe+M#o*XW=w z3V{XK(hekp9JJOt=mqu=u0(S>=nF`zeL)8jdxx-$cRJ7+iQi0pbyzZE->J3PsWR-; z+U(TY?9|%q)Y|OS+U(TY?9|%q)Y|OS+U(TY?9|%q)Y|OS+U(TY?9|%q)Y|OS+T>L` z%Gjy3*{QYJg?$L~`h#du7xp0^7^M_l*a3mf%yf0p(k0xfum=iV@bfNkK+_H;{z!NP zX>`HKUZ7a!E?TibvBOu#0*T%%C{~sG& zD(xoMHwz3}d zM&Y=|uVswTL!Vm#Tu+bOgKVYLr^8VXvK9Dcjk!q6c%6o?PuxxX!?f!j`rmG#%xUx( ze`KYmhhCW8h+Y^^+H?yJweuWsw}$socRlFXexrx}7k;Rt1;8?)%q$sFrRSvqhaN%VW#y<>TX!$D_5oqB487XAdnw&P!l&ao z^in#3*D+q}rTxBb^rAT*8ojh!aMb?yqAl-JTQZl`hlcD2iiY%|A!Wb-JoKpr?o&^@ z58dz)Q;l8fBj2ZhQBB*RP`vIwU4iXGH-u)V!X8T6r?uaQuT?}?e62oh(S7P`^=Z5A zGi0T;Pd%0c-N1cMHb=pTgLI>OO5s-VVfVabKze>1Y>#-j>zer4wzOP>;+>dPE zA{^y3Pd~oAz-Dx*pWao%oeE{ftRJn+1CC&$`jKr2D4tJ0vK1(vPrrIT{mAxx!m^6p zk8Jk=WsK90Y$YsXoPK00;bjU}pk4jgSRZhlQuiZO8O5zvK2K99Qtd~o0 z^GC!;+v!KnaI1Y{KfPf#VVP&>N7@ImJ2EpcfR#G{3}B07R=ol!yD|pQ+gE@M3Y)P} z18A(obSjiNfdP6+N!zRVL(mvN&I04)HGrIV14pUr0pu*@x zK2U7_0QO3FlhMHd_Uav=%n}SBVc}%G%!8n}!q4fnmjNW454?^VAD~}j77s~62Z_A^ z+(lgssAdk(FOUoCRyn`})Zl>5&kP{L4+-Z8eI$t-=rt%EUMOYJzGHxuEK)H#VBJ@3 z)Bv)DE2K*49I0Z9O3?RAw2|F&=>H%VgOxet{4P)|#vq#f6tI+3gW8V_qR$c^)tCl_ zVk-u*6?=f~8q=w;8<~hz&I68M!3L4G3aNWHuQ6dN*# zZvO#TP7MyC;eKEhz4jn_PU+O13{n@Am%5PnYZTs~P}Ww4&~RBF6*&)~+X7{sbx0*V zglz)gg{gcDg{;R-yl$x~1VeA-`SwSNe zD`*nlCVZ+*8>ZghB`ozmOuhdJ=wp3tm=+fVR*D3uYtmBJZvii1SKcu4ffH&RX&|Kt z@OE0|FzaYgW*rUru#P6-XGD6eoe6wdB*xmAq!RluY`v~HZ(z@dSv!MUX67ZA_m#fP z?hdndCh@Xoa@g9B1`e}!CNVPaH_Y1Ehrol>?=bstkO}*6eh2)Amgp0WIi&ar=5L2t zH6yJpH)9RkF8YOG*3OU#YiCH09g>uSwKM3jb|#oXsYlk%B%Cia*_k6>!%|1=kd&`c zr7SCG!*&arKg>EBrL$$1?65swYTsTfGGt|eQm~GO^jJHVd}W8^u)PTjGi=`=Qev$^ z;H^sGCmOz8jP;51}D!albHKxr2vv}|W#>}B@jJjeg;H&Q8AJLr{BkaMD7->5ry8mZ{QO`q!We4&Iz1tf=X+a}q zLP~0730LYNjOa|)2y-kui77xcN9fny0+!=Rji{e6VqJ`dAE9N90yhcgv@9sovfvOO z`vahOXd|q4Ax~Bhkuz&v5|)+y5q4|T0bh`^Td!#DuVSA^Xk`LlSIjrjz!7%1NviiX zmwm!HElYCTFJ;%3HNxJEOu`4HyzIds-sZ*%ptPM4+74XNcA&=Y3v#CgJq65Uv^c^Z z42hSy+!1XxBeaxFgzFV&mhhwPVuTepYTsUZ$j5bSl^V~Z&G-x$e;Zc67zEn%Ub6MYn_yr)jG-RPUYb)(LHv4J_@`?sokro ze#LlXgmq`h>pm&FeZSKAjYx@|Z0`eiD9s14LL=<85d4Snlt#4ejL>#ICj6M z8nK_GA0MF|QK#(3cm=4nMr-;D;hn_C>17TAn-%sboJPIJjZyfC(;_51Q^T?YKTeB~ zm^t))aax4Hd1ytP79n9-4~pY~NO+N^TCCwEnrf+rmnn|S632C>F^=yc;c>;69r$tj zM{=hJA&kz$A>*~Zz~>z*fi6d~!td-v{Ps4961*7YL>$^GI>@U&698 zIgVfPF|ZQfBW_h|IHDA$V%6h}1m6K}5}s)hM8DYg~7gC~+^y}X>?I8)% z76iIz?{V}W`Jn#-vm`B=FJHq_BWSyXRjO#RgwNMh7YKb;nUM+mC`b=6%T?o8^_!-L24EU)aEPn3{PIXDVtjNrO=0V_f@H_)* z`9K*H&CoH?4Cs^?Gm+kVK$#VssU@08iQXVAbIvo7(m~)lBtH|$>@j8{lfTllJ`CMi zjD^F%$H;jWV}uw`M!~Zf1=kw0wXSDtUC-9Ko~`s}YhBM)`m?b-d0@)Oakkd@Y_0Lx zTH~{|#%HTcW^0Yl)*7D!&wIFiGMm;qM>(GZ<^6<5u#j`0EMM0k+c{AC5V#(#n?wB` z0G@#+%%K$EP_qY(xljlJN8n^Gp1%huqolcb`vM<>_qj-~7+(F1Ugz<58Bp-KmjpeW z$N%~KTZe4tXaYX_R?e#UX5;ysU*i3gA09GPZ>j!uK{HgGX_^R z!0Yg1$IvwBV2z;zhh@MrI2uFRaH#u{#?ZY|!eUFu;JgTU1N_cc`OjC*=fim(F;WZj zkx3SC8j_z6=K^Odl+o6F?O*1@xx~xaf%*7X9|2cs%xYvfAI>Faoqmv1yCRcOOt}+G6s3 z4Ji38R-3k%y#7j9Y}#V-5=^mai^=OPpxCs<3O*tErJ)0RNrXDrcnx`cWxBrG<0 z3AyY7iXB*@Ep&_1Vkx@)7h@@<*aghSjxA*_<#)g! zwq>c(Uuq0fqNUJ(4mgcoY^k1DS&Gi@Av{B4WJmN;okv}Y775NA%C!`~Mc_P2v=qNZ z!s53q#cvTDnF(CV$XCKk6v~N}rRdv1;7T-qDeWZ(xEk)38pkUq>!|Cc%$5kBry}*+z^qvCBoa$0q4fOGC2&0qxjipwW@L*+YSlZE2yp#`s(%zTipO7zOVR)c5 zkvn=T;cJ9{T2nUryhYQNQ42Z1D)?E3{C5MTmX~QQFH`+lhUERkoQ8%hQ=M5(s*tgq zx*G(J&_Mua)kCv++xLo_Ai ztV1nF8a2Q(umH=c@dBXuc+1TM`7gJ`Z(mN^l(1Nj<&>S%n^v{Zq}0&Y{%biJQcU;; zTJZ`r{2);Lffevy0F;)sf>OK=l$N!EQXBxvisuSA7brTv0?q}lCa)D}{>MORUn}4_ z7brEj0zRQky^ssJgHP`4r$;{z0KJrJCFKkO{nXk@wDe7&>;qW|C%b`h+W1P%aiwbh zN;KpxVopa&E0IPy@XO?~5)FCDScx>CgEWXo4mrRodWV%rpaLj!Tq`Mi7+Fj1t2Fmj zn)@npe}|YLZF808zDjdng?ErejGRnah0PEsZEzKwybBagR>4Ub@H(_*m7YUc1t+D( zD&=IAahzYHjA)2qq%EuiSnYV_xIp!hSZ(H{wm{;a0O z?FY&%(`wbC)!M#RGa@)hjO->_t#z@Qy7&{})3F1q;WGe~-e)!XLt1S?tEnTX!EF#I zeb8#ywG}*iVl|lJnR;pw!wLa~(!B$RdbjY_1Sf*jgcbt4BM!bb_ z^35~WGS=GUo<6v~|cT1uA%T!TKZrLU2gb;hYcv5IS1Hw*yx z(3aOS);kD1fR$Kld8z%i)bd|}ocsa$Soc|L$$5&kRtXxomKukq#d#iJB{E!#&4d%? zIz9kijBcz&CX^AafODNUUW8(AxXI@B8YsiBIYwi1Ruaz9wBaKX$`RiLuH-u2|*h z0{2*o`z_`Q3sY%v92l-?#H&S&vDVFNySz39<1=0%E36UzZMdjf= zm73KL`7D?GSuI3*PB($3vid=Z*y)X4v06yYGM8+E#g^7bMxEnJb!#MB=8uYJt>tr_ zbb!?lYSZbwRVp(_<$06+YC6N5Q9j!wN#=});0}9gCvlEJd(Xj#jgJ~N5+8%cHp3^4 zPnrMI=GKYwF|0P!!+I?F7}~Ym(!()mU=vIxhhxydWY`s1jR|@qhcQ7PbN4m3cB+g) z1H}iCz!+8)6mquWNB4-CvvoD_bBj&;#>a4yPVpbHFh}jzT5Qf3)(RB9&ir+{c?|0V ziurNu^D)fdDTS>#jX~NcaPOcWNyE0Bf!dvw#)@k#yqB2MSZh5DHET}ua>-#D z>p7KByP?up!)byE`k*x0ct@BlAI6!@u(!fvOB>;}9OX{^kY!%}0J z@_t>$ zEi{c45;5PnT=`^`kC<8I(^D%HGduGswJT9>T^TWt^R*s0&dw8!vlZQO_8uh4I<|H~ zU(ZufRPAt@Hv>cC^Xob_@S?bKha^Zbs+~9Z`LE6q_&VjA7LJ?kIL% zK6;ZIW#&=|M`5d@^h?Q5?`NajB(A)vzm8J-YhVpBiPEx~U;{QG>R(V8*0CGCC>Fj4 z)c(LI?Q1XO^bU+*XQI}QqO>Do!+N)aYgI0+H)UjvnjO{XgM7*)VXU{pe9nk5iuLXQ z_gnl2Bsbm)A$iuT#R_{$?}MVjQFGUsTdR&y&JvPC+MRN!H$hQ5OBm&(jPiDY-XY2< zLP~9G*HJ7sVQ8CT3(15Qx(;4LtBkTjV?HAdijnocrbI6sgT1U~$ z*Kvm?_xRDD7RTOf$}sY-#EBaGoTS$lqgV{N*GNjN`^jCRnqs9|?hWRzw>(ih zXC1ZG=_sqy)GT%zd16WQYne%72Q4v+ey%;di(R8x=;|4GAK|kYKeY9-u*~P6cCTe& zJ-T>VW{0z|z^8F@KMtJ1yN@h-e8OXI36GwXz>SI-4Uv04vdW^~T{jZ_$#T!zuhYnL7E1J3~xq;F-BS4pmu`A7-jW__ZaVE zbQhzowSj7DF>7lvYiluUYcXqUG3E{p{Hk$s%-UMa)2{m%a!7&CQI;5^DaDh^E`pe~ zvKZs2WG{x4jzR5$h#{-fUX1?hB-B~O7_uT}tSi4VUP^)wnp>-dF>7BjjRZD*q$MDi$2I_;vazMlVKLSnC$g8r7O& zjDqy*1*96|Evj;L(R}nKC>A8-cAil!E9RWyq zHFl@(h%pvIK8%IrulJ`hYh^LULevX&eGSyv!~vww*34tpQexIdV)lL~X1!{RURC*At6Jc#=sCDv(ngn*bG4Tk{VZ}|g_BQerN!^`1pJoUsLLQO~={3Y7k`;G%D2y~bj)p6KoxP2t;fnK|QRiIZ>>N-Sz2%If z^OOjkFNR-Qn2Y9f$=nI$mVSg7(DNdwH$HKC5T0evKpjk0cy#_RuoGGlN9Ps3i)4t- z>(}loDLS772U?tiRPXdJdAEzJDv(o=K z=WUzeQu9$;h|?Ano7zI$+CtpgLY%gMOlS+@YNJM&aoPg4Lt9X})*07Z{x{G%;Y z-()%0x!O2wLEK{0`^`A5U>n@Qh$~K8*u$!dR?KqfL5ktstdZt0+G&9IBC8yFleeJW z{^y|8XW(Nzn`8Q%WBQzfKFddQ+Z>zK=AgZDKZ7mJVa%i0o}(4#puOdAG@6`)_8x<| zlqd)7C1&(i)Gc{AjC*TfgNWV|o6T)=(Ay^5+5?}%$cK>hX!^A`+Ma_BD||mnniE76 zTX3zp2Pk!PTOl>e$f4Jx?7>Wn=MCyT2i-meHCoQ02Sgh5ePWs9V{?!kM$3C~?@^x7 zbH!6(VRV8uhq2IMSZiTUo6lJbqd8Fy`YdV=n}a6Ht=Vf178^RJoG`{lK8$(fZYSy4 zyfp{CZN}Zn*v0&<)TXgH+&`mVHDk@8M<$2##nc+3Af&-4=pdY;{GgxYnXx*uV&qc| z=c#n)s+ezFZmAcjT=d$Cr%0N>s7CRxl2jSbkbj%|r~Y;H%66Qs7F)sB_WJ8mO}XbFtN; zP65ni2a9;8QTNZxWyIbD?`G|NE;@V`-j~<_@5k=VMbp0U=AvC^pk}Od(XIxl+L?<+ z9ff)iJ{MggJXTSRD1Nl)6x7L!DAzMcz)pp%&XP>Sz^fJgs3Gb+O8eTMXKdy^8$r_f{dd zO4y*Z$T@M6bABb~XJBt+zKWd7Uo*i~NcbSs?$%Y<@N=xe$^MtJCR`7d|595EEu}|m z#;rThO6j@8$B|(v{gK?GEWF-*l+tn)gVyv)tv!~~k95J^PvL1({7T=^?0sQU;-(^M z@C(xF5A}xS3zO9sl==W}t-XIiT8&Wi-!HHar=Z@je1RP5q2923fi$Y1-mrW@+usNE zhUE)O@dWRaAM#G{rnDb?j5*&4-Yeb-A7>_bg12z;8R0zue`xM!E&Ox5V?DuKOwW$y zed7scWD385ue6-t-D@h`?ETz3!MoQfuqC&zpYU7rjf3|+&OgH6CMx{*{enazM0?>% z{FhOSNl;;yX>JSAYRGOS$ju>;+Z7-;hrnXE+@4y_3_k@oV>39E7?u-H1^jJdufN>V zT26bxpR^i@mv^;LAqyy|=vqct9k;PL)TKM?%Vm#lPv$!i630o{$gZ87-WdQYz|af#a4H_{N3!b-Rtl3M*92x1AN1R{nUvw@V-Qye-Qg$ z3#;UVoj>az#M0uAofM1kFUJB@!*q-TqWnS1pTMw~76y*7@M+Z1F`~4{tCxcgf-&WE^b%+$D<-cgaF-k%hMyZ#CX#yxl^6-Q0JW`y1wF zMT_vPXhH7Cg7;YJsyp`JC*Fd*DTdrH0f!|%gPg2^>|ulKVS~I2hU{U3ybFfUn43KY zxOpc9pS7nrt$ue-N}yp@C8`vKc>hXVKH z@wJ;;tX2c;NIto{h!WLuDnViTTbKc8S}nCEpMlhDEn^b#W($A2x$iLY<_LdI#ldfK z<8v*u$ieU)?xd(?EinS`GoSmt_P8IQMC{PS@~}S+D^yF{*$dfw1s_6lYH3IE8E$Uo zBe);)_{0G{T{3*!+)o%sU}I|;lb?V;u<%csoAXfkJZewbPJ$a{OAolY%u~7kEa`vSLZz7^NV|AW3ekwOYmu zHMou)?oc}GId%fS9#cQ^pa zoT5YnAnzUEJVLU^m-05EpJ$4ZDvJ(S^6F0OXvz-^jWIB}F$VDN?!-%APj{ zye)zcDlO_-oM$1IQ19o>hM&ix_QK7M0{8&2oyU&VL-rNGG3LXF8uwgcI8W+?A(hsU zeIxLVL|x#?8bI!0h8?&e*F)yrAvZ2TPS!x?l5l9^2ppEEgzUnC?81WV!h+aF$o?z% ztc9nK!#&FD2C;`Q)nZFaG~~J%zA>9_tK19x|LiVKuEvPkqWhQbKw)c8M-uFRHc|+zSK}*_Z57>tM zx1@#khV1o%eaKZy+G$TXlv1=LZ^`gk?)_;=yXyx>8Ap4)aC2@5(&Av8)2%Jl;@~UX z)Yg(bHwG=$)`FJgucWT+oWrH3Y4sdytuF&>HQk zf$V{V?B0azzJu(6gp4pDdmtfuAR&7oA$uSpdmw|>^iYJMZ)(Q&h5XuVIgpiY$a!|io*c+|UKmGj z+aj4{IG3`whap>&ZLDWYTY;nuRC9n$Ct zJE1e}kVZ8emN*XCWeTI{c{?OfAGD(`x(4l#18tialwJqoOhy99>H~-~ncC+*R$5jQ z=v9 z#Qq1#jAX=ml@6K9-H4o%8Ob0ABtHOl)vwl4lIic{uQr~HQX~ z^W6dbS*eDsW5ZOeZVIx!0Y(%1Am{EOZ;BwZMVMoydj%P$(9$=;+(a2Hwscwf4^oge zd0-rp4C~F!2qZ|sMpeRO^eP3JKLmTzB2pM{kP})c(qO#N8D6IxB7fw}cq0kUR?d+> zGSo;T=t5iW3fbWX*{1~Adjq*&95VKR%$lKYP3=OBTn`^0#V$y)KO9Dj>*9Ua!i*qS zT^Mhqz#p0WSQ<&UfjGTgS?l3IoOsi zSO8+CC0-kJq3r3fAMLjbZCpMB^lR{-@{hieE^WMjz;{cKTMukt1LV6NumiF6pmgPs zJF#IO((OUpKL&XR2cJcYdXV#Oa1>JNfptoO>>Gs9#D2)0dB`{c#<9aa$fx3AO)2O> zKKlhd$S3hwf7gS2cE&x^eBMwh@-o3_&%ZEuFmr{H%8(;NM4gb$mWeciaF zpS{sf{rZ^se9!neHnTT2L1DO+9ddUQWCu9pb{F`RJ@vG?pRp9#>54zI9>|RxaFlU0 zlIe|BE1oP1uU@q`B~5~J?N@1RZ|nmxo5uFmm;^U#dO>e21O7;WGMY{9O;0MHK1vr| zCAS*4KxQIPR=PJ@N*)-=C=5H1fGi3A#J7Qz|pp%^-^I~`%xzdfAUEsY&Zn(ld z6iw)Zezu0+A+0_dEyIV+ExXzW8Or~0((Qx9&Oq7EK1fOa%m*PebjWUVm`Zv3(7NSj zhaSvA6Z)V75y*a5I2Ya4y`9~mEN36uZyn?wd&pa%K=*l)LnPA|%4X_TPvS%}gt0MF zpCE$G>_hui_}S*qofx>)`}C!q_Jr-QY}^Ho?y;LTaT2n#7a}bzDhHD}E)X?I1UGz?q5}S;>E%VqlDvB$=X15v;*k*nwO{$Xi>eyhYHW zYan;>z`Lot2qTuiz@f-Cf_*pvS;>J>;*U_v$w9>W#E6X~Bh)6dKI)NFSiKSZqk$20 zn|QFj4OnOHIfosPz_qk=`7q0d_Y(89UK)AOuAKIeI}l);d|pc*aW1%)(cLN7sE~|< z_}&I(CmzyewTSjb7_FH@wWe#W)cviz{V8cDa>JYg4x>c+WyXwLh_?1pSd@ zYd8}QppR~b?4*Ufw}KtW;Q+>vjZmYV0nAp;!J*i_0mQr?vepE7!wbjQuk5PDEx8RK z#S_5*S_IEppLHGa9}9GIX$@o*3$ls@S;c~^VnJ51pklsGYch~kEXXPrWEBgtiUnE4 zf~;Z%x}S3&WEBgtiWO*Ya2@2vEyzkTJBg$5fHd{R!J0mwYZb8{(b{ZRHlSgB1MA_ugw1_0AakzFM zAA}m!+dgE-9$?6gTaX*Kpe!(ZlJ%@v;L&IZ`9UY;!;M=|HfJ>Rnv+o4G8%0;4LKhDZAJQY0RLEO>lgRZl6hh2Ea7z%uIA!y?YEzo{0wj1!}f3lUe6Mn7~%dL>sH2 z+Sg2MnD~a*n{P8{&OQej9)<1biRO^5zS+>p{JFUWH*bESWIM-XJIACt$D}$3sh-B4 zyYe8b{g4~;;QbbZBs_m*=b*77XW^kn7jsxO6(6@}HM*EX zU)cnu$#bkO=Gf?B4mF~uq{(wU)>NTJ7jtZMF^AEGO2K!CAm1T^&l^>Db8KWa2W^)> zD{@d4Zw?x+U!~!5&~TC4z+eqEILB=79O{>l)Gz*lMjdmg@iVZLKHN+?*TzX}ND&@BAjU(1csP$(z(d4b;fwO=>}IjZEG|{&H(H@+MN1 zn{zi%edU|hcfaXzssMMCKKf1MRtq(Qdy|~>gq*v98iBlt?sW{_BtPvTBL&F08>rdw zn*rx;Am?u2Y^8-x_JW+d33AO^=9;z4HEWq`){+%5tYxlQ%UrXTxn?bM&06M~wahhZ znTrON5K`7M*Q{l(S<770yDxl~v?T=#ZBDn4v~I-B+gQlDE7W{vA+tGA^QMK~1Lo$}_h2%jYQ_V+f1q;zM zG0Vt#H{6_egEX#QWB2~!esi{TY7>gl|9g2&P#(hv@r$yNO zQ!q~3S>)wdu3o`PETRqehsBE7|B>-1?Q{`ZcN(gXUWDzUT z@MvH;lpR|{`z1DHORlhHJc}NlgnV-lYQ1F& zdy*k1E+Ho_VSmCep+`OoIdKU&aS8cG7-an%a^e!QiVk_d203vFAEOjY=r2UxvO!K< zLaih(p)D&6tL~5!myi>ekQ0|sJ;f5Vt~2DsCFH~<l|1EPC1gz=YRpw`TnqDy)5v+%a`l z=b9+ddg`|xYQ1;8S?Tq(Ao=rV0rEBha_c7K)=fAUnXK0>Rl$1R=2t+iM6KtoJ-@Pd znlDqbf4&iNmlv#5clt_e1>-=Geb5&uSZ8q`8g z*+A~-fVCFpw7EG!6Ko_uXWp!JDUuWqC_FN(h2=)}-QniW5O~CRG_eV{ z@?08d-LF(U8Ty84~y$@+F0!3^^1+cH_fRbMMzvNaG+ZH%c01$bop!D7ovD3Ub&6&nhjX zQ4Kjy2YIgun~`~$PR|8pj&pO+$p={-fqb(Ga?dB^)*z@EZkf)_LGBBJk0^Dg5my;< z`v~$qCiuKPn`&XE*i$cC7*1aB>vZME&0>sHh9vg~JJ6z|kR2vaYce~K-dV_-N63B> z$bJ&Ydq$|0gdON`MX&=|@vF7F9oFu4pu;uz>`_QsUu$^Ce9Da#KAN9$bDM?aR$km%AKQgKABJh>jwaUN&SFh|7bUtKvR@wN*t1%<-$fah2D>O@ zMX-xg5-D(FA`NmM9V}zrU>CMXRC#w%UU9$jgB>^u4=Nt&R56qrIYWV)9p><~a*O_x z3iT+TGl_TLS@Yq$PPiK_Op~!$Wem=vvAfupn+?CTFc-~-?>ga=klT4izUzeB=_y(Y zxk5waZe`?_OWa9D?()T*Y)`RM1-HhKyJ$g*p^N!+MF)1dZmjU{!WK0_zIp}++Earh z6EuyI(#rJI2()FFV>c$`%{xrBU(?NJisgszK;b_PtGQGob}?V z-S#FmM+`Fmkb8sm2yPLXBfvITqZrY&y)93+rqrJT$`$J&N;*XQ7 z-PG@A!ESVT8(dF`c4NW#N+S9!pE7!3Jwdu?vfKyttkvmmtJB@+b_qVRX}is)?WRr} zaI<$8YJFxm)=WOl$Z$6`NEta_)*4D1 zpJzR7H}%D?KJHJGzii`fdTl+W`udEzXb;)>3Hjm)1WHQ0w8sDW*$-+gGvHLwF3vX7kH z2sIPghgQgk?_WUa!#?ZF_Mr(qadR6I~hM2`c~l zX!RoBD};Qn5LS@GeP*BcQTy_#L!SGn_e!Yur~7Ej;S!|BQ!Qr*M181)A20KLF5sIkxiT2md=8u9_8*9^7#dI0IQfm*{kfQ4)b z4j{2}!2w!O4b;dSJvE<03XiPB3UuQDvZ{sLoCc2~;REyn@;R*(X(_~sOo$Dc5FTlW z+=K=PnOkqk51_ZF;7C118A*{6$w%){4pN&b0bkXobcbxDcZlBMIBr=C?#LwmLzM0m z7JW|0nKk>oRo8b9oYSojgj1Co*d^A=Ak^RL6mhf<)cq>hv-f^xF}xkdJJ11YG+Rzx%Rkkq5o|e9QVeSKoWwG|LJrH(;k^O7n#qaA%c4eNx4Fd9M$YRjj}&_J!P35BY)s2&^X>}dqi6Yo0Mv-6f}7+UA>R%NDv;8tpaQE% zDp*BvBjbF{hvY6ZHz!7MbAu?{Z*I+rDomcpUU?=yzNp8SUfaW?=B}kKDv+(7J!3qJ z238=|rLfVS;+!3BSn?h?wyJ)`V5tE83{Qu<#>E#C;E_LOS5l3KnQa*H)oEmu;@ z#X%*td_1V6mixkui4~9&!LW>dEQ}NshWhOU`I0GA{Z?Xklb}`)Dye0$LMak!3ap~8 zE2(R_Yc1qyY+WTaeh_kY7@oDK8Y~RwEAdgiSK6qlk{YKJ)VNar(!yUfA5K={!)fB6 zk{TB|UkO9>xzbu(C3Q`HXmRJDR^BS9Yht6WNteDg0y$*~Iav(5+OOQ|h`X2l%E@Bf ze1{EcO{0=pR`?MrqtkosN|$cr%jvjZR=KEOg?tq|R>>@~4g3SW`4OyECDb0sBh=$T z*opr72o}BuYF&;yXt5Yau=9*9Y<-OTEwF({s6qXz)vzPkbsdO7lm6){%O;~&BPE4C_owpRI}=cvRYL(eyg(aTa}I9__8aKtg`W2 zmFaMmjo+$l{8ohy>nV-js%-pLg{3OSElXa74kts6->T5wEwCINuCnnPYhC26%EoW> zv`D53{S-BRtFrMMPi56k!Po%+Gb3AvmI@(wiy#&DrUx1ZR4M6WLuA0qabb_ zX2!&wtjMq$30FhSn5vO;cc>XtHFDk!HDluBF}hccgg*_7w5jH%jYOx4I-KAJIA+l;B&W=z#K zW2&YW^s8n})zk%Urx{ZIX;>(Ra<>kQ(t;YGbWvn zPYI49y>megY{U*~jLJC<{B?rkIMf)G6BdNwgawwL6Bb5|QFV&pNKk8%XVsIEvI>Yc z*4h}g*2Z80R7`4{MsI|25hM?BUTWe#~S}Rwr zjZtfDj9P1B)YDdqI`Z5;s59-VL%Vw5);k4mwnhTnKun5t=ucOunL?e%J-tC4qoWkq zB${QeqmG(!YsW$zmZW`9ZzH;Tbhrk$BvX%MnqhyVB*Q6K)Hlq z$Xjc^Iv+B+J4T3jjp;meutlqgtnRps_*PH~k%ca5O)4)?n!8x8f4Yl%r&Qd?eQ`jk! z{5eW=2Djc-o#QFO^Hc}q&K-kLdmfs2wlmZl!zPmnH;!WsnoK6#ghYv&C8B&?V2!1BMI^~>Yy2!^nmJ} zn~_WkRBq4HM>Io?X3twHoS0xFqf-)9P_xnV#M}dNlP%O9s`F@O1kRR-U+u-KX0Wt&kaAVacgb)JeEXsNcB9H_E|o&N$Ucd(+;*lf6yn|+6Cm_2Wp@H1>`0@)2jOg%BApe z^M3^$yFl$DaVyIO^42%FK&}Wwy2((fd`bLmA>SQ_YMWo0+`dF^?Qm<~`n@|sB6E2y}zeHN{*M5%#Db_%pl1PwZZ>SYT-m+683DP|X zrM(GKJPTD92~uo?Iwg@H|M(DFv(xFDTG+w60rD0AVpSk}j3KjoNX}s_aR|l}tjww{ zJCA%e!4`?55c>v4CeA@5?|dYm1bJ@@J9-0PC$Bf;Tn}Xb0E~JO$f+*K{z=F=CWys= z>`-++t$<&p|B(49ME_xv*B4$eeyQ-%f9Fg8q4Rn`G#~Q4c!)Q&nzfg`V8xBPI|S)pV5dX_ z>`z)DJ+HzHP3(Z2nSx`?CoORTcPz05#uIBHdjQ~E${3QXdYGW@Lg!KTkoqMa>KA|X z@F?s=c|%4Q;y??@n>*Z`%7Lo)7Rc=kupv5&gouXI*x055YdwWM5xH+^nNxw_zHL;)|L4=pK|+|uWkrq3-Y z*NwOt8A54wOUl&%)xKI%BAzm>Zs|A`ft%Ykp>(^Y>2^!>Cj}{7gAccfQAbIXXa&TE zK$R$o5-Cg{BlZNhv?z&MVo7;*87UAmWszHTlw@r)iL&sN zY#PK?!&XQezr;4kyF55u;nAN4l?Thvj=Y_KSX4;A46&$CIpL;H>ZP68C7pgs!i`0R zSX78bb&ODua64I4*UnOJCyR=k_YM$?3bCjz*-}il6m^U10DP1p=blKBb5Eqmouj14 zStOp)S)?SW6gh=NipiE@vZa`8DJENr=)U5y6q7B*WJ|FVDb_HXlI>-s5Bck>U`bFi z??k!>AvPRh!yz^tV#6Ue+;yUUZ-lDfPQ=+vtxIm4g`vf9{)MMF`9j;_C!8A#cf$o}IjgUQa0d+1;!`cjm<@xHJFTWW^H90z@o`D2y-cdTOsc(1s=Z9Ay-cdTOsc(1s=cf%y-cdTOsc(1p1n+- z1FfYDB+fH#AaSmMs;Pn2QU+Q}8E7qKpv6Cs_;>KDv}K^Rl!3$_!L61ukoaGRYAFM) zr3|!|GSFJeKx-)jt)&b!%^7GdWuUc`f!0z6T1y#dEoC4%Y+&xK9%>M?<};8J`jF8k z>_E#JL_hTo>_ob(?je~$tV?u*tgXSJ7LpZI+^O{DgQ$fFjM`JIOW@|6GUP27Ith8{K^cv1LWpC$T})ytsb(51G%FNvZ@AIRf82ui&eFb@QBL7%(6YK zrLG4to0CtSO2G=o9w_Y^#2iAuvW@|pEzEi4hn`Dmv4RROnh)z6xD#?a&&azf+@Zpl zE)8N%O)4(ger-=n8H8T-hrFMHU1&9fm{ThTGzbnf_aHQLkXFwi@2cPk^I^3gH(w!# zycdQq+pp69L9Cm#bAzd`8px~%^8HrG-f7s8G7hGuPQpIOVK5ri1o;9B`5~2sD+F%_Ire!?}2lX+as){Y=@=B&&`Kj zEBLT$1y+#aBdnj)LGI&%>{@}m*K>~`+rDs6;tR-LEXW%x_b3t;+a)$b)_5Un1yDMm zuil)1Lka&V67B%g$n&G*urrJ$*1&jTy?fMpnMaWo&mx~DsQ&j+(!CvyB%TqpixSAU zN+D;pA>S&6e5(}lty0LhN+CNTp)A-4EZDV>Z;wLOtY8}LbObGB6Xe^VP`$|rTFUj1 zZ-YWvuo1{@sT+X>+YV)sMqtN!!i|Y#u+-dT$`uxjka`mYWyeNn{TUuoidZwT!opWt z7Ofm3Q2sT(4-VNdARy5dTG4pN+_xZ%w!m}R+cC}x56NG!9x!D7Q zdx%Pbm7{d%t-_BmfA*N+o|1SUzN~VwDyWdW1A?=W?I`N85z5N3FP1n*p+6~5BOHB; zL1B114<9hHQxP{i6(KtnVH$CcLYF#1b}B-4D!NhV`CE`ZicqyMidv|J>`{d5%7g4t zgzQm->@vRsQ0%}}0nliSB8rN}V3hOc2Mj)eY z1j4PpXso`)&2*X->is#YTQ&2O(=aB>c$l*9-f`1f z7|8w&$SEo~mwcwvmiN1Kw1P0K)t`ZfXnpDEhR7}*cm&C(+w3wOeK>`iJ?&64g>;*X zrQ5h7oz|y#zC<6=X?JpKE|yNa!|gmhW%IIhvc;NOGB;<`kJWr^rN48gOe)k!f>^O!VXo zZp|q&trcXFdTZR8Q)E)7O)k?$eVOE;ugkR5Gtr`C+!|9&p^WXJW~@_)VF1iR8>di~ z8=*$6Q_zZfH%0HxAp0U9d$%Bax1h9Q3i{CKrVu}F>XGosxf!x|3$k|$vUdw=)IE)| z@GgY1q(I(xK;Cyi>FqSibqeyn1M3nj221t;ww! z?sW2812w~)PHuS*XEWUCIX1LR_OJ|^FxYH@cX*bl zbkoD>NU5IjE-Uj;7Il`5$7WGGjkr0R598>@EaE)wW>H6w`9d@N+_(ox&NACR%WV5B zY&znX3=K#YZr5?7nnucl+Q?HGK=4FQCrIEJZGih{pvFlQhe3{#aia@5+*!=Bee_4}McVYI-hF>}kR&oe8;4HxJ+C&{30>Do!=nUBug z4A~b7J0jKjw5Afs?og<{az4FeU&zjIC`ryoi{y?n0-uj0cR|hK=c7drLH2}0jeh5o zD`F;Bzk+$j1;}AOvXy_n`7EJy^O3WBxW5z@C|9mfsUU4qblhbMS9(3*D)T8;{78N; z{K&YP8kx`C#l>)~ah-9!#r&y-*=SE~GXKry=9|uh-(uXRvLpGopho8N-45eUtmS-n zm=-kOmGk}J`C)fvEAzu1-eB0%^IO9lxJk#nt)9O6a z>O5-U3zuj5oM-x+hgKBhBYn;@ea!F+4|$5x=RDKrJk#eqBPq=k7DObw45G^_dHGWu#{)n<63*7=e z<(44lh1?v=Q|QSySV&7>=vI*8Lhg?}2v^##-0g|`1M;)bl@J4`J_)l3ZK;RK)gsH) zBFoicw7teHM%zWLB`!wi8=>saVst(QYVN<-?9XC!UjFP(hgxGRAp z?AT8WcbLyk3nQDe7)cIwi_r>xMJoouUgmxZ$uGvvP+qe$i;?ytxH+*3-%VVA?=c(7 zH#?JWb|&BKOupHfe6ut8W@qxv&g7e&$u~QbZ+0f%WS(z!Cg1E#J~H1+oa#OE&CcYT zoykYq_}f}XzFC`mvo`r=ZSu|9{4s9oT#O>a%R@3 zHoMf?>{80n9=F=;QfsqIt<5gAHoMf?>{4s9OZ7Dh!l=zIwKn^{<@SARr|(-kU52*Q zxn<<%1mt#T$nJW`?s}-X-ZJuY7HST@%yeTJ zY_eZvftR5n^4VhCije!g^TpLl3tei4 zYmx18O4kHcy5*Ek{+ih>xBg{0U&fJ}8!g}#qk5L*l-)SI9Jv)%=!Aq8ki zF+S{~hqB(>V2?f*AkUsKmGy@Ltak*miyq376d=$0phk}c+FuQ|pP>NRo^l0fP65m_ zs)ZIXZj{dw%3ENqwSf9b!p#?0pvH{_){hq;=gzpflOGlT-1oM0A13v8Zj2wh_L{fE2OM<0VBp+V7d1UtYW@a z5O!6Z$o~%5!`PEvvHSZr(t!x)kFTJ5wwhO73{!lC1h183} zYh}BTdbu8IWxLQ;whL`+Ur6n2cZFu{3$1k*TI()E{|QMQkuG&q12wWLq;^u^3UjMQ z3b94xgnD@gs=XIdI|{E6S0S~t6Mk%AKCxfdGWIB>j`WnqpM|s$xj(h1HlPoMR$qnG z*B;!PEf1=%LaVPr`Uu6Z8CIdyS|PP2_YUJu$&gyR0hXhUh166xsBwNFEu{_Q-7j3k zsH~9M=>qe;2O)h6eAf%%dyF1eU_TE-?i+#J=LtKpg0}+uSphk51G#e;4kNcKSeKR$ zcRRo+7I+16UgK6^;cMVRuLYE~TtN>Yw`}GLtUWPfIk!Q+tpH`=S0GPfGpn)!J5NrK ziTpQXpI5l8NUz9RbP+bN2X6NEL+)0B8b24I8|@%xBA`}8i?D&$!z}8h2;Jxj<4B;$ zdjBFuTzy>;TCoMPtK1ba$|4>c2^87*st8Tsn+n!ii^zE+ZjG#p(1B|BA(APg_T|>R zqsaQ!A{$v1(L&{;dM~mXFTyG+yhc_4Wth5!mmD&xC zPa1h!N!{&*8dt1DN_`;TAA_0^ucW2$t9x6q(O%?UfPG#`dy!i`#Y&{Xv(`tiL>hAQ zl~}mO_%U)=iAr ztQ20el9foQ4jwjlIl8fuw$K9hFy`}~cO~-a=T;%-23Kq&dHZq)ZuP3gXjBi_pBVK0 zjtZ!^62)lv8OWYz$ew4&J#~Rho|fMQD8g!>a}s+e361MRfYePCmx4=k+@Xjy&m zQCc66N;Bkc0m%J?P-DCgs2BO98M)KLeL(z2-G{83r9gK1LiJ)F659aS(R{Qw=|ju; zhs1LPw{|6cNIVTNiX=azX7!X-fIsxK?MpJ0$;+*@};>L?4m*X?&FKN60D}#%NO?A*EALW516m3(q2%3dkuH_Yt;8 zzbF3Cr_ zwA%D%wdv1l)0x#)t~F*))>unfLmzazTSFhT7itgN8XFI+!M5Cpdzk&oZFRW$b}o#X zzxtgu$hJLgI*^B-GHeN5?Y z#?5YdIF$8-k11VSs9EaAluP6uJQzp*A5)5Y_lfD=Cl=2q*prj^Xm0WewQ~Zhc0NH4 zNs!YJkee~wCpKbVYx=*IXOrAo%fni0Yimto*AhwZLPJnwbs_w zl9L*@*4o-yYinz*t*y1TwvO6tbn9$Yc^#>=$K46ZtRv{t?<%UjM*t#&>|-*^_k z6sY;sr`BJ5iUmt@8_OnSt1lepT?f;=ufZt#v%yNVffV(W zTK5K%`3CH?+>-eQ%GCr*7vvnXTSL zY~9@^Vmk+iBJEAYb`(mxHd#EIc=oK@gxr$cX3NQD%gJWT$!5#RX3NQD%gJWT$!5#R zW{Y97#(`VxJ=7LT zT8~@1&bCm}9#A{YwwQdjkO%o|C1eYlb`9hXb12KU#jL~@(!CM)Ry|A1J#cAns9tg_<(0q6yOp#c@g%uzSDXq#dfQU?N%3dXB25@FS>4v>IC&pT(?D?gR+*o6{<7L zqTO*T6tki2|k3Cqk9mYF3iL+0|)`nhgcIt``Ux?8Ck z4mIkXm+n)NkJ8#fTFH=aMnFk>hpnjWuv*?hyKce`VNcx{rVU2!|_ z`c{jsxH-X)H0g?)?~*5dcE!zJ`=pX9?pEHgq^t3?_S(1l(-nXAwExwe6ujMP`xXB- zUeBcRD{k%~|Err@*-6WJes~ReeVzXfOe_5%1gHShOe3f7&}SmYXgk-uDQT?hU~uxBRuMV=_#~ zN4p}@aZkdXO?(;r|7mZW`Deq3_mIV>bpH0V;)syq5K{h*rIT%;BHSA|mVaNc&`S5K zzh3?Aa*pmH%-^TGPc~@Q|q%efi?^>LB7xCHy4sMO>;w+ex;Wmu$x@SE zDGwv;IlcjZB?d`6!}2=CYC~bJmh*C)FWKKyVAhp7oM5Gp6eJDFO7Yb~z5^H%@7!(O=c}zi+cwTa)zb1q-kLOUtk7?NrNa2IC@WhuZno zyh>ZYYK%XNOaql=+I#Bz0fjmkFRM(eVY&Nd3ru8a| zY@0OuavS>JV!PT?eKq}?|C-0I_6pBfDzcrITmRKQLj7SjwQ-Mk3;#~Fe}|9*wYbYY zlyah0HpFE8l6T9u;}fS%%6wr$cI5V3Z@Vq>?Xj_VEHgSbEAqYU^dXVR_cEgyvB??f zktwnCj7gE~2^o>6$4!Z4Pl-Gfk7Zx}IhqlR{A5^W3w`&kz0p+^VX;SM|2O3eJL|*T4d~`j7V1II5?g}CP&6A@$|^JX@8%+ z2+57hm@qbLd?Y^pt67^kDgNV(X!ekZ;#U-r^o+@wFT^5K(xj={e3{haQzl=nAby&}Ba`BY+@3;YS>!zy$(|C+ zh)m7Qo^U1T4U;1iCuC;DC&wpFm=>8jAu~E5G8rinfA)m2*^!KwGbT+_Qj;Q+C&Z@^ z$+(Qj*m0C8J1%d>48Nf|F>PR`DlgmAMbjZM#ZY3!sI$>;d51XH8B{QS*-YYNXG za_OF0#DwhZiTB)c%hah;hooDBdWjY^gdE+X$wT0Ie3{%!{2crFzx)%P^E{uAFfw8e zy%t_ekJHm0_sFx?nBA6Mve%xO5wkt7GvBrE;&t`9dELDpUQe%=*PB^yU%pu$@vh}f z=m5USbiFr_FOc8p4e|ziU&HR-jLo>kM%uS~U-$0tzQH$d?qXzmH`eA}?>_H-W;#Qe z%YO@t^=-zz`VRWT-f%4IqkJ9qdyI^qU{o~H`@Z)B?@2}%PkYbsrLiAz$M$pFtv#A= zA*6CUdzv@acV3D2jv8_onwNzm<2$ ztM~rHTjZVd8oWktp0~u?k3|A@UT#lCLjd+Xc1E#6jdn|GZ4Y?oK&?eN~i zcGh|SKYP?fkvESOi#!vFw_-*}m-bL?{pX|5yJNO;Fgzx#C{LX%g-^K6h zck{dZJ^Y@2FTc0n$M5U+^CSMXUbFY#et&;}f1Q85KhVFyztJD$5B9(2-{jxy5AkpD zZ}o5UZ};~2U-$3uzv18M-{pVPzuUjZzt_Ldzu$krALyPuJe!8FGkN02jC-|BEkNp?@EdM1x=Ewbs{!jc#{$xMfpW?slPxY$3qkfJ* z&7bc7)PKdF;m`ES{hxXJy#wAs@38k5|5bmMKii+--Xbz5l7d!Qbd_@;CdX{uY0$ zzs=w7m-##VojzZ3_doML_xJEM_b>c?`kK3c&_Cq=#pgTdeuZD@AMvaFYM(Eg`^Wtg zd|jHa4)c}X(|(;_@1OC{`VIa$zD?WYH~at17h^B@U-}pQOMZf8?gv5Of-qn zt%GZVq(EQBY{xem+Xo$jjzOnD-x2H*bPc)%-T7Kw&!89IWb32vfAKA=YxzRd0KTbo zeK0V%A-FLZ6buf&7Tgrv91IC=32qH;3vLg-9^4UpBe*lTEBIz`cW_T|Z*X65fABys zG#D0qD|j&YcJQ6xyTL=j!@=<2k>JtbvEX~bS>)-;576prge7+g*ZtxyA^1mM}3zi23L1C~WC<;~vtAgU-gW$v9qhNKgCipn`Bv>1) z3re^v|I=Ut_tb9+HgntimSAhJE!fVD<~z6nn>(br3-|M2Pp~)mf?Hzua}%oW5&a8y zYnF4DVI?=PRdLtV(coBcJU9`Y3~IQ|=~Qraf^z}4^#skqf9qD8;7e{^ zxx_6c9`|ts+*;#A z-mZ`9>-xEfyVmu01Kf4)dN4RN=)TitE$cK3C6hx-PnOYd^u zba%UZ+`aBTcfWhU4RyoZx7>s7+wME=yY38|R{&&&hD(-3xAl%XB|>FS;!El8d>xo9KSx zCb`Kj+i}*!O?5eL8mB6L>Rxd(+)Vc~_o~hlxH;}M_jC6P_e=LH_iOhX_gnWn_j~sT z_YdwL-9Ne4-9Nj3ac{Ukx;Ndwx_@(X-JjfB?%&;ixc_wj<#O4j{x-X#^VpTUfE}p| z+5gGTO7_dW%Z|6D?tOM#EoT=D`#*T=zLK}b#d;UZd&||lYx|ftTWfiD^q;&dS$v!j565uydFab_u(N-NNo+kFaOhE9@Qi3Hyfq z!bo^+*gqT)UKd^;4h(MyZwv>8gTt?dH-$HcL&96aTf^JJ+rzJicZA;v?+ot>zZu>g z-V@#%-WT25m>P}=)55XgxG)-~hZ*7c@P%+fm>K>!d@;-lUkYPk zJe(N*B%BmZ4zt54;mhIFFejWAP7i+?z7oy|XNEruUkzu4v%@*zYvIqsUxdF5e--{Z z{7v}V@OR`E~Me@<_5i`Aza@@>ueCvLSgQc`|t_c{T4G+TD5XT<8@3)RxW1#W-{rZPUk&np?g<%GQqlj zN%cZ|4eDHZ)yfr1t{Jq@z3b;KTDEG@+H0>|zU2M&i;DKTd5c%BS-41<)-B4c)$$`$I|Tsaz6#3mo>De?tU=F7S0( z>+5oXtIJw@Rb8-(Ib+pYJqKTqugT!GdDox|Je90<@A`|1<*L6SXTLaS|3J}ReTl2# zjrOX$B%`sq8#8Owa^}XX8_vr$Qv<67Stqc1x3_ir_uLv%E?=^G_0@Gnl)A8a9n}|I zwQ3<;;s*D+$U(osUbPo3UdC*9^|IBqH>9@ei(SMI*sI~jC977hUTchKRl}7l*RCo$ zmR-Ljb=0q3_Wsm9cr|@#Mdn(frK!}_uwvPYERp5CY{ivga;xg$U73B&4J-^e|G{gP z(sfdom7wUL1gS$MNbRl!nafI$x~v4Lqjuqy%a+Y-YoFawyJYnmm;y^WH56pc(q*d_ z*HQ|ztggk&GFjSSrE&Jv^;ZJl+Z(LX-k~h6Tz2J}rOLuAtLrVHv)8E^omDX@_?o44 z%FAr4>*S{+Mzx zXRn&SWciwfBBl1W_L=r>Z=2!Y9r2Y{T*8jBx;fNyW=p?9sd zf^0Qv181QS7Khqf94m_1tRNPN(paQg%Nc4~t*T8ki}IGG&SfrZt>x})%HHBBe~ae; znAJhBhz7!J4hA&hV8~)Hu%s}sdKhLi7>Z{w6wkwu)x%Ik2SYYvRH|Biu3I-U3gw(b zvPjcde_OStb^&WtE0!<0a!sAtY|*#+v=6|)S5%$1eBtV)QRkZaxiH*omcS0KTvIz2 z>uLowcwb9WE5{Pc$86>~_|&z_mam5QEmuJGTtt&4YpT0eEGBhz*R^^zW>G9fUDx|r z`Mh@V${SW#VisY=g|1v<@yuoM8s529oonR^#Wb$eHrq)$ZL{0F+jH{S)4jXk-$rV! zZL^K^c+c|wv;Dinza1xRn?2XN=lS=1|L*edZujo+@H;&G4iC4(!|m{JJ3QPD54Xd^ z?eK6rJlqZsx5LBj@Nhdk+>Y+5bHLz=s+D@WGIaVncY4^J9(JdP-RWU>df1&FcBhBk z>0x(z*qt7Br-$9yRds>ETw8=W*VlKhhdtNBp6g-H^|0r9*mFJXxgPdh4|}eMJ=epY z>tWCJu;==E&-Lv+&$stH4}YGAKhMLT=i$%u@aK8>^E~`{9{xNJf1Zaw&%>YR;m`B% z=Xv<^JpB0{{(KLAzK1{G!=LZr&-d`>d-(G`{P`aKd=G!Vhd$8uqHZ+m)uh)s?2b)s?2b)s?2b)s?2b)s?2b)s?2b)wM=@t80z+R@WNst*$lN zTU~3kx4PD7Z*{HF-sa)AdH8J}ew&Bi=Ha_xuC=|*!*BEO+kF0QKL0kKf1A(0-RIx# z^KbY0xBL9teg5sfer{N8ZEyGaxBL3F`}(!}`nCJ|wR`yO9)7!r-|pd0_wc8C_|rZ7 z=^p-c4}ZFcKi$`Fx`#X6!=3KoPWN!9d$`j*-02?fbPu=S;TAmHf`?o1a0?!8!NVJu?5&MikR>WQEn(4VfEsL4;ZxRHjA;v3FKR4``f{ct{pv--OEYK6 zbzRZRB`@(ZAc|%Eq|n-G(rR04Yy0%nHlr=GwP&_sXd&~Pk=bTuwpp2Nc4q5HZ8I}y zGaWt)t@E?66joay%eO7dtu4!~Ez7Mv%dI^taeJCeYkOAC_AI~lteovx&h1&w?OD## zvz(`AIZw}Wo}RVE^bE%I494^f#`Fxv^bE%I3`QY?QOIBvG8lynMj?YyY?nd?qmaQU zWH1UDjG0-fW@ag7W+`T7DQ0FVW@V+Cm6c^yR+d>=S!QK9&&qP1mE}Au%XwCo^Xx3= z*;##OXE0`GFlJ{kW@j*FXE0`GFlJ{km}hCm1r2v(Fgh|A9T|*{3`R!=qa%aSk-_kC zSz$(&+pJ=4DJ-CQsBNujXj^LvtF1MK)z+HAYHLklwY8?O+FH~4w6&)7Y4c-HVMf|F z+S)Q$9n%|qU1!d;#iQY=bGA9BEnBlN^Xlm3HM_01S0VFqEWs~;6lOXWTbSioZedpH zb}Y9r%dy&Df)|+!USuwKk-6YS=7JZQ3muNF7yP1Vq0_S=FE$sv*j(^pbHR(v1ur%i zyx3guVspWZ%>^$u7rfY9@M3epi_L{j-v*r?{#-Y#6};$N@S=0Ui_QfvIv2d?T=1fE z!HdoXFFF^z=v?rkbHR(w1ur@myy#r;qI1EE&IKuO3to6Gc;UI=h3A47o(o=hE_mU&;DzUc7oH1VcrJM1x!{H8f)}0(UU)8e z;kn?2=YkiW3*C+#&1{=K!?7O5aVN?mxmrI(lI^NOo#m<})hO>Exl~`XYT=q|7FKmG zzi#QmWbTqR3#(3D$Qqz^{^@kQuIpB#zOy2^grK;KV6=+XEKE*keZT4*3$MFwAq&gb zzIXA$=&ZHT*=wVBEn_uznO5+l11Vs_Yf70X%Cqs!5DKQoM*8XVuDUmt3{5&MJ>u+RD`pzPje9=|WLSzO|~Y z3zsdGu^N0$U5KxpIfi&g8nf;k!Lgt^tFcSsYiW)e>SvZ(RnmpamS!<5?{LAsw&ob( zYnMiE@NNriE(vmHr-X6Z2QsMUS-INNqhu`Mm zwRw1MA)9ay&rPv#dw6b2)z{Epub-Pz;r8`&Q!3mZo|{tP_Vsg9D%`$) zZc2sQ*UwF<+PdA8inp(yn^NKS^>b4y+`fKpN`>3EubW!o_VsmBE8M=mZfb?w*Vj$0 zaQpUkQ>(UaH?`vJ>+hykxPATI)C#w+ubWEY_VsmBDcrukZYtH*J;TO0-oAb_eEu_h z{bu<5XZZTf@a;Rp*KdZe*9>2u8NMDfeEDbk{M}Tdt=q{hynX&Nef~3j{xg04GkyLu zeSKznI5T~HW_oxteSKznxHCQeW_tLuJp5U{eojtm>vnPyZx7$eNw_`ySswl@4}X@2 zKg+|P<>Alr@Mn4WZh5n<+bwVM_U-AGH*tG-vweNt@+STs-fRzVwuk5BHo`qTC%55F z;raT`_Vsnkn{C~0d6Tz??_@UI9=?;=aQpf?nGLsx@0K}n`}#VW4Y#kali6^4_)cbP z>vl35Z{OZdX2b3A?PNCGzWz>T!|m(uWH#Ks{!V7Y?d$JkHr&4cPG-aH>+fW?wr(f0 z@%Ht1G8=ARe+U z!|mZZ84b6G>trP8P%M;W}9iw}uAIHQXz$47-;v9|BbR?iF8_{P{vEmeJ97DVghzcZJAXDhQ8{5x~`cjoe+n~Og$XYV$$2qw*Q`LBIZ+bg zDOS<0e{-e&Q4n9VWEJ1!+HzKk~M??_mUmgsOaJ=@XhJR1$otI@W+9?i;+ zq8<4;G$Fr&*5mDHIQ|T6#z&*)(K8&6uHYQ>{Vqdi??dR_eFoh)PIy71?FqEf{tL~r z7PQ39M$_vOw7RZDbL+!sW&ITzSf4_R>RV_+J&ab(Fqnp^d*s>`buS6yB8k*dF{`b^d5s=ilsZ`DIpPgL!$9$r1EdRq0I>h9`~RR53a zFIC@OeRuWm2GtB2J80^l3kUtvpa%wRuc@mUU2{~;oSHLg-c`ePYt79y>ua{u?5?e@ zZLXbC+gf{4?U}Wg)Gn>PzV>6aAFutV+OO1pulC;B^|hO7ch*I9L+e`V7Sw&T?i+QR z>UP#g^+W4h>RapQ)-R~PyncE8jrCuuf1+V%!`y}i4VO18Z@97HriM>7{0kIzZ!i(f z^NHw}PXy<8p-q1;czv|zH~1ch?-5}Qei6Qt@EL7!CZTDrc*o&0l{k}#GZbC@y9mEG zn3d*-@5CU4kYBV^r;Ii7&UUd2WGt}SiNCAE6Il-ReEsxjw%L5p%S=|I$`2b@dIUZ)~V-hV_H3 zfrnSdq-*=it+l68xt36@{_@`6@V?7704j6%p$*68=(-dut_AhvjA5Q5?YX~gKDjRn z1cLPxzE|G)OgJx^ z^ZwT9tY}V?t4la1n)6Ev38&E}oQ_8wIO7=KN%$VgDU451PtGhOpL+7C)9JuI^eBtV z`3an%z!|`0u7+F*>PUGc(CdJ{OQ*+r$fuL;B%K-y^r4o%iQJm-ZQ@ir2Xz=eoX9{~ zR5FD-X!Ybj8lM6s8%F-)sNo=B3?uJB#OfeTN5W~6aUJ( zL|C+Cu4XLTSMBE8NBvz1OOyzum% z*BRfQwL(#^o|h=MH`Gffb>!}#hS8pWi7)+>o4=Zp{_SJ_n0d(|wEAms#3zv`HzRx5 z_=c4A8vZZzY_YIckjQ=`pS}#S`U&kT)f?{r$1G3oY3zQ(8~2R_(DNYjmMHKcNyyOQ zgUkljVS7=lM6CUbTQQ(yMQvynV8`|?cZ|iUF{bm;C0K*!^c}MVmTHknPFbPR(BqLTTi410R z8;iRUtnJ9(oNK+65nqx_;{fM6Z}vFP9wjB-2n7zIhOa<-FI!2O^*}>8{%5!pKK;G7 zSaoCJ0me*!*|qdMOJCSbIiFNC`pR=W9|KFTgFj}ic#cPMnP{`T-Z_m9M&#??J3=p? zHxG9$aF1Ojb%T4*_tXoio0V+5$&->ORj&LUu)A1k*4nE=Z;?l1&|<42;LA)C7!=== zJn0O74`Q8MbDoX)TdNF;;K%#dz&V`Ir>XEt<+uLgR7ke(UM+CQmzBI{gFUzQynuZp z_bz7QZZ0qi{Eg-+#aW%L4oOz_GUQ&;rog?iCZ(`|8nR~rFywuc|7CacfHBlf^PF;{ zP>p?}%%<|de%)_QpQFU->Kq*2Fetp4yuS+{fn=ia%n9{wAjpUtooX$ zl|MxC{4DQ{Hrv?>pUf^o9G~2Q47v{g=La^|Q7kyvZc_12@$`-4P;@DTe?xIU({nQ= z+THVOq}(kQgMa1q+)H11EbU8uHlJ#Nkv!{c=5l3zOXtuw=FVr0ifvKUZguJ)2Dw_45GWh=Xoz?2WXM^8!BWyWaLLKR?CyS^CDrB=Qc zdXq~mR~q7derDl29PfZ46+?Z=OwSW8z8gJN!Zd`QWbKvfDH#@vr66`ct&`<-KrP}D zcDvOnT+UEZ=Kh(>LQ~hC-xYc58&8vaE?5?$DB<+SC$s1|%O6wS%6SKpV}^69@|22_ za;`NFgthNgqKp@2U{bs>mhWUOqz}U=p|Pu(IRHHmt}q5EMSofxLVeN^rkUB?9D1on zvD`&}a9m_7QptmaXKM{9F!kbMuQeVZAMqq{_d8v@^j&nBkNAMNK{KabGe=~UV)s+V z^4Si|X9=^>*~U6F5iHnoPZv)z*G8n94b){L{O9PNhb;~bA49awEPkj$FB%o z=f=-sO+1_mFBgY4ztdzW|2D}=QkQ&n-$d>=VOwJ%-%v(23t^twa~t2$ z23+)VaKDA8#(%AsuiL@FX|7D#E=zOJJ2g6LOotag9gKzoMqt~`UqHpBUuAb^G#Xyp*)z8B4w~ej z*342G*il|j42}MKxAOHSx0sXFglkIcF|HoudLF(Sf72NvWi$Kev}Y-m3as6KR^98E zBkS62_fFcOQS0*T8fl+A9e>{B8dAEQ8OR!X?t~ux|IPJTt7i-U$!N0wW{hQ3Mb|pG z(}RZ3@8Htj|8{zHV=xuJJCPB%@Z-P0ipd_*95~eilO7&ow0<3%B#5cdfyL#yjx~fy z#DC5B-bV6j##ixjEt{2buPs(a!-LAI5z~#P<+J6|jKR|Lsic&Jz`c5z$&#zyg!ykT zzAT1HMj_zGi+dul8^|&97LW zwizWpZrvM6(MxBx54~UYBQccO1oXjH(@DyWaeo7TJhM^_Biyz5M!4x=gwsRuc@@gu z?RIL3JBHOLE^@H-FJ?7-zd?rNivPpD)T%{F8|uZ9EQ}jd*G4oxSphLWz06SWVZ>>q zZy<;4z42N^F0XaueY=(OCM#=NlF7k%<1@E_i}gMCfWcdOzQ#>y;U2F`GZlKfz2|0K z*l#w;Xe;e-7#VBN`sSWr!AYJcSFO?@?^9!4;#^Pj$5i=mKnq43cPRcF$=A_ru1e7D zKCZcDluAi~Ej$dfr?hH^<0Tww1>0n(;3(mUanrd1+c#H2Nm9CYY8B7SRKD&B;KvH_ z>v=w;!M)u)vWQb3dH`RnZ;LO!!ic_`HhhL2;P#oVj6Dw_89q(vo-gOz_&nyzs8RoU z?DVbPrc#^t@~bHwD|6$QW$36g9j$xA*prV|)nw8>2PHhurTv2Ep(Zz%R=AtPOMk!{ zeAM5bAr5pX18s2y?L40#UOM+|hwjS9wr2FUbZt#n)JgpWeBCrc@&65N{v2hI^r4*L z+V+0Q`Biu_i!eFG$8_;Y`7FEw*$hbAdmgkrjQV}PFT%sOxt-c9h2wWN+ca6l>y}ws zNqTmf%i6-VNY)S1Y_fMTgr2uUaBU3oW3-EAz8-Ftun&vp$HmZ^Jg1R2t*6o8Q9Z#9 z-@ln2i{ujFCo{D8MvbM!IyCiUoa91=d8Fql{ES2L?nZ~?ku(k|RPzy@CZ5URQ2j%_ zzMe38t;P&p#gzToNVBz4e})#=ZJ;*Wxo!R4wQ2t8@&z7O9)^`*OTGm3XD+m{B&Vj* z(Qf0M8EvOIz>jpjR?L$!>`)(tGSa=1B9(e-O;h*%h7!`8cUr8GKp09HGzzKxyqxNB zJ()4P#YtVhJ=4CWm~O;>J?(|~2>V;W;TG#RlawDcu$Zy4bR?_CM>95!ry3uYDWdJ` zOrkVM_KvpYYervv1k7jl!3b~GZkj(Ccg*Ka9bTecpUP*P_4!PiD)yv&ywomko!a;G z_PyV=ec8SMrL?hZPkEGwv*)RCb~C-|e%DtR_0+b1YtL7}`9rSvc^qaLFosLZ*MT zIZ3a?Pg0SaL(&suGr7V=u`#4H_P||f56RxQ&|a@IKa@14l_=@?VI1${?J-6T*F%9@ zpyP~-Fmu%P61PUm6t_rjZX{AZ*mu+8$N1KGu~-j%O=c0)Qcr`q^{h2t`;Lya&>qJKWsbWN{>eQbRsAS^!lttr_Dco9Wk^344vPV~9rAv=30y0kspnUz*Oy zZptOiyRSEVRXTyLhQ%G6zM|_(MO|+Xqy9G}h`x5C)=&A#;B5ZD`ltBubu72`(=;nD zJ|)#^Z9-b($BJ{)rb8tE5`RdM!@fN#x38rTMax({o2lh`bGj9X&-z-j=g90(+@dAx zzwI`&JeD@n40EcUw9Hg!V=B394cb`&(OWtjEj{&Dk6}t)<1I-ZJVhy*O?f@vV46(QcNoS>?jza4$`_pyy}Yn{8yN6EC-wfGNb^ zOl_K(+dV7(VsGig-OuPb%2s40eSB0QNX6Fk{fOIbYbGy}gJgQGX}S5FR!-2!60MM% zR=*F&#z^r-8?FBMdQm&sajoOg?fOKfJn zjzB8KYq8YQJDg*w_WW?UE8bhkCyMigw7|W6Tu9H)yv*YGMjHJfew&24O%B8VWTQS; zuC%B3Dy7@IL6@kstUlEqCCSoMMHjv0O*J;|Q0uIR?9|$qy${Z}aLn3=(n>aSUq$Uh;tEN6$$Ayy z{84zZ#<2a5q9S{!gkSH=c0d{DpNC^S-t+TPeU1F?%pS7*|AYH#fq_cMeWgFx{TCeU z71+=6+y2*n<}twJ2TsD+n=!oqxJX0k%F+O9u@BMQh&PZ`+ks`iH{*Tf(b4-FMk>b` zSV;yH>%hu;{o`{$1@e(>-OaCo?M=G9iR(&x;3$7@VD}#v%J(zKzGejdryo$Lqx=IY z?F|U5MXKCOyl)xhSB^VySO;0mto8?vCsk~L1J_q8X1|Y~W%T|A;huHsiu3G!EcAer zvC7}?svx0ttgG@>6|*q*ka$*FNggn~w_C*iTOFRS@%{}R^Vm_~+r0zVE(6cY_DK5y z?07y;X-K1AJn)?R&a|kLQM9G8S=ZzwFXnEqpi|8E5O(iMHEPmW72iYizS)kDd8Yab zMR>UtUqO>D1nX;lpUYN`^SK>JyI+^qNdjdW6tr-!**bm|OXH}LP-zN#LyqaG%C=sX zt^+FvYQ|S4X-w5PztU|jZlRU=FIdEo;>OyM-y=N$DzquLv_y@$SYtsEjOK;gagH`t$X8kz8!bT2VotssTz zYtriOjea}$Pjx$l6Z`(cL9{(db|&3Ei1*W;h}WgWmVJ964K<5zEtfy5qF8!h3HQH7 zyK5cgewBSyX`^wjN?%toZQkbg-=HDYa7QXh`WVCPTLj4#!_mN`C)3iy99IMiU!vIV zjlM`h8x!rf!}xCDD6|yNhUa`yv?jf&VW(Ssz;WwZMy>{pZQM0zq;ZORsg}}DLuoIg#=8RP zFiqjhDScJZ%XlhWkOuTmm5Sx40n3EkiD3Fu7vBTu+$`mg-ilwrsIA6U@W;#Gvrmqx z3ud^JZTa$K7h`{M@6&=y9t}kotvg^XL(iLPimCU_X1s3uzNIZqrE!RUKhA&6pnb&c zm3v5Oy8c`#H5B8JtKV6I9>*HRWr2=R1=+ zMw@N$cAeR{%{ZXr*5fHn3;GZG*2g4L_f1OAeYxDc)gV3&EdkjX`{RN^GCs=btF}J= zR1fD&+c1Bzv2C*{HEsWppytUL_&&-otSa@-lEG zn0%eEm9GuA(qr6L1JWAd+m=dk`}7-<3mKnjXy-h0RyV@tJo>j9)r^9^@@71~O?i(# z?V@XG=T|Uj&oge4({PP??p#!66yjJTD@4z{jDs1q)3%cB_-=*Xk7R{ugnJIIB<=X* zuBFs(Tzv0c>6J-4r9DgI(>U=K<&fT$(&Hy+eMuOcZS4A=B*84bYR;Dk12KO5os`xk zl@)r|47t#Kb40&SM{Qz58oJKYe&KCmcLWx(2>Y;fqSkVK?&+zC@J0Z(}&)OE*7raHEfl-t6^_^NDRF zvU1d#e4a0*;gmG)JBJ2KR?B=Pzeb?%e?*b)%fful`(q!He#r$DO~^Ql`boY%x|D$5AVi>G=M zEov)yW>?)`k)IFK`WvS)FwRagE+T(sroN4odKa$z9Jn567#p93ZO3EwuJCGWooh0V zYYujO$2gP{Og6pZ{&QSV0Td@y;G6zAph5)iH9i}SZEVRRj)mV0r9A2EGz;j{A|5mx z`qxIrKoiyRu->vKAEqLMgCh&=;L*6(LN_RxF~X!n>37g^qjn*ujG1SKBQ(^np8 z>h$f>FsAka6P~OU--^cjPl4v_f0ERMKS%N$fW+22L*uP^skC<#^MS9rvmi=JrIn99 z67=OQUNnYze=}bRPr|OV`zAw2El$4cE1CI=`}Q^yXpv#Py~})b`l$P2rARBX4aUFT z##8O>4ultRW*%Tuvsp`V{%x zExs^XqY{wIbH)`V`*`V~*k1_sJW?|`%Y_^*o=)S?X#BE$GbU*QSGjQz;uVx401+k_fCgSuuEI2j*@7!DD^LO9+B7`T%xXJuY2VHrDxGCcU@_@p$j#hM(|c^s-wnQLp=& zS=?odxx~Zx7an$Isl5#~EtkD_2GMn|Y4zpfmwd9BQ{g(v!SP2<3S^Aj04_)JY~b7r z&1ZkZ88^@1ucvsMY)|mkb0_z`*q`M6d~fIj_c83hL}^6@I$!Kz-f9WQrFY9;##+Xt zz#{)OKS=;8t>*GO_oXcMg{MyX`VBC*fQ@lHhxzkB9^o{i$Km=L+)f#gOd95?QE3Bv zUbcVdWefH30dobbmOVrZ>FsS=anRpi-9KRUk3#6n;=F*rMyhla)A!~2m!8od{`<7< zWGyLuBhlY0^oFVA*WxK{3#}_^b8|QP0Ps{kTW^MvpTNGGIIq($h9aHT(I5Ak9~lHe zvC);hpVI14v5oq-6=~g#x~j+Cnw~qLfjcO{9fsRiq<_LmlI&OV*2!s-2}ENW@4-KP z)=oAR9NPmC7u!aE_zmvOoR5Q4vUkRvCqU|3ES>&tDXeRMMG&2QW0HySjE%It%CV7_ z@@H02PNM@ackdl|K>;#)JFj!24ThZGXeGGQN}w}AMD;q`LFX{-#Qik4P7G0v)n2b= zXK$tdFWB2M98LmGQet0q6x`tEo{y6+{}CW>PN%hU*b}!}#QR`h5AActlJScnQ1BS) zpi}Vnni5M3OzqZ}`s7@xEa$w2=0f(%n(=I`)a^s>8_}NZO zPNhMg!p@}8pCSxSjp$6q;XbJKZ$Hz3Zz#lJU9!?tJ5^18)Yw}ygaqj=>RSi=%GBg) zn&v;;ENS~VsUZ#9ySJcmI*Xt(N4^D0Sf`x@{5HYo;V+ELq7mD5pbxN8FMdF;+{`$R zCYztL*1^Y~^;p`g68KZO{rM=!ZR~rq`-^5Duy3Kyt%nP6YKCdhZN*2Y<+_ttIM$AT|)j0`A1O@87s8NES8kra z?D;Xz`?KHyT9BnIJ!!pEH^77yqiLjfZ4XB*%KF4r?oJMH3B>_Tw%^VB6-h`%d7)y~ z{dl@{2_!$ACC$iSBO&J!8bvS$DJipoty#Pc^u4ryxUpHh#GNp$lBh4azY}hz?`Ukb zzZ1gmK8yX~{QNzY5%m`2qV|^D`(ec8%rJf6nnUS}tr4)_fflwHNOw9bfd~C-rk!IDnxoiy^yN<9KqkB-snai%5}S|xg-sf)Y37Rw_2C> zt)pjazetqM8J70+%>|E?WG8-^VqLS3^$z2<5}@5gcA;!1j8w?jclyM_i~jJ$nCz6Djkbdo^mmJzJbp- zDET+YQD@z0-rQs@qdK_JS>u4_G8&ytR=3fcIVP@juA9!}#6Mowd3l8BA3qz(b1W;L zlaO%M17D-_%fN0VcUM1JpD}+kx7G;6m&8eLrcC-z;RA}ts4X6(HLF`#Eiefot7*|< ztw~z`$-z_q?ogT6GqWFW|Ks2vAC%@WH~z6+cMGN597LCG(F*6EJ^be%BXlk)^j+d- z4WioMSFW5zFmH-Yb@9fx(^ItSde(|GRzFKC>|o58}FOYxM`s+^~XltY2Ptv)!I_JUk@8wHRP#NdhHKUKAlNfth}kuZh;QAs8sZt3GPb^ z-+$1)B4@@bV!2C{=ID&F<;q|y$$9r%V^=9lAgj-fvAStRPwSu~OTsHUn9Xc++Nh*Z z%d$UNF{1Y@gIN;Q+Ejc--+}7HdeiVt*Op46_UY&!x=WTT!&LLpxw~GLW>h)EW^dLu z#=~{?V#PY;@=^cN$;6U}{Mo){bNQRK?4h{1FEG^NsUhE~#&5T!KD--CX($(xTGeve z%`uZJTN>W$U791V^3@Uc_6(<+tsTVAYkFlOk34rNo^PdIlJO1SCrT-a6j;)C@_#(DPhpOt$Wpi$`l3OTfcKpD;VvV zcct97cmFP}hFr{4ymn5pulGH6J9$A=HI%mAUZO|kQq6IcYO-xRdH1GCK`p`()%cx4 z<~ud;3r7=@mZeMY=~IckDbF#7HDoez3;(ZQ<5Buc<{k|&_inecoHv(3C@*1Y=o{pE zi)oTtxe|E%yIKy1SGw7Sla87yYs|RFPTqy1HaJ~b<(F|<*(#4&Mf^5cK6!fB=6Td^ zaR%{hanO8AImqcVM{Nxi=q8tQmLfko6-$x^^JX2{=)r39jOS5%)~`U`WG3Lpj`WRR z9$pSgE+jhZ7n+A(fAbCZ@dd|1A`P*+YqjM?dR`rSK|9d6;cvOX3~wMVl)WJ3N*at|7hCr@ZerYNy$*{-II!MdN-{ z1{y#EzFC@1(8CZ~@;TNXq_O^l{w>Mw&t_H|9t7%BxELRym!_Uy^0xm=($@Gh_ur@( z=zLDGMOIGjzu>P&8T!Pn*qVz_@PZrP90lhoSO>DTI8GW{bRd6LzE*P#%v zLr5%ZZQqlTHazCgbxWbUuu|ETd|o6MTkFNn$sV-KOFZ4zp3*=*5N5J{@i^He&dEr! z(z>EmsDtLd;tu+vO#kP6mAXlPV=Mb(NH*AZ+EZHa`YVq#{1%W#tA>nw_$Z&37=@3r zRQgw;z8cbhwq??jB+Rkz4_}t2)rP>_3>`f`klgy0h>Y?x`9Xb5Mm@s%+q2lSGl^W- zzCT4D{7rC&G`(p3N1&ulv^sczuKjm$;N_QKLE7JFeAzB&ZpR%zo%ModI5z2Fff=n& z^3->BDy?CX_uuz?mvzrw^s47s2YrHhh}OzHPu=G_w4euaGvk_8yO9GZhwb!G78|du zB--NLZc9M=Lb@u-$%rqe)Vj`AKRUFFUteQ6~-do49QrCD;BM(`!Q0 zO!-(DALMQ85AYL}c@r|d{?@nNB>VM*-p1|L5Vzz1B(%rhbFsZd?bJu0bkaRY9f(aE z?XvX;N-Vx?w`y>wIQIVbXWDO~J!nbe*>20ChYKqKx8 zGD)x&=2kOtq3>pE*~*O-a+~L^VK=r04h8JRNO9C2(z?h5?tn2wkHDq2i?Clx{R|{8aoNtyUXV zWRsq^;-Ptw=3>;R^ql$ut!;!Ki4KuL90V6{-=DzJuKZ`oK|4)P@_ZQ%K2CjXACsS`D<(2>yquU8_6yqxd9+FKVw$PtV26^2^N>%R=M?KiSi)_Tc0>-osK4 z>Z|Whbf+n_Dne_R&wf6PCpYjEt%%!+Mt9iUa|f-be&Hz^oA?cSf_!@+ZGm-Ay?CX~ zhb=77AKzruqi9`pM!@E=)CXNl+TN{>0|jFvHdLj{-*HYYSzOHX4opyZj%d2BNSZeJ@fhLPLSUNcTYccz# z08a6UNqXCfhgJ@->WDK(bbBC-qXWaXt=$7Xqnd%|U(Oe;A7tFg(;C@0Drr|0|PP!{u5 zRy5Wz58UcyYlC8GbpGfDUAW9pKXgRt=h~So*ATr0u4^k>Y3%gv%IBZ@y6g99p>MF_G?Vd@tVn)T&)o+b&$ z)yGL%S&oE>0^S2YZ=yXVSxA1=>`(s&m-Y?1?2LA6ut^8zc6+8;vL@Bwb0>7DF;8n3 zLyTG^TS;4%9WB97p7`99wm1}ubcFQeRw|1cMjFBO4TY#u(#})dKV+P0M-H%dCnw3d zw`k5pZrI;m#^|GtUFpsA_@}73NwK*y@=dO;oKMtot5zYGe*5ZGNCNL6WHd4WC+^Zp z+NB=KQ(v=;QQlmVEpCS{bdHgB26rQS?#8Bbg<5D4PBp?;=WREe|8Ck&+7kL>z1E|i z220Jv-@=-t_7)%Q`E{-|2gd4jf~S(1n;nSm($Ur4#lF=Gpx=||r=!bsVqI(@`8W z=}yJ6yoxQDW(!3zy4l@pj?I{s@k7PO?M@Z&XC2@c=X~D6^bPTg#ufboe`e%;~bIFRu~xNx?W0~GCT9Dy`nL1vQ_>~(2aI?O)s2xj{h)w zcoM#}3#!ve=o_>WTgkw8a@wQDsiiaRC|L=z{vZb&gzu~LmJ8#?r8@INk|JFH-DU++ zf%s~^pg!QgqP5Y>+Cup?a@$EPyv3njq_m99)?1`K?{q5eA*?U{uO5`HJgBt3 z#BThd4cOrV3yiI44%SE1Pt-Ef`qUU%k2^nBs?dBl!$WcCLp+scJvbR^E}hq*@yTS9 zEN@9Gd2VI-xQD}M&O_Ezb5*CcPesDx*2rrRoG!s3P9|dMtZnq*Q?WK*}8Y9-D z2TK?^YTaOhBt&O=zC-Bi`0zCx?fo(>>T-WwTCzDET1lAbv{Ea{mCVE~J+0{|7${oj z)H**9)7)`?57)7Ly)TL4TR^|tN`tN@=`<=JKiX62cMzu8yXpR$#=mKV;kS{Nu<_o$ z>vW@ufYd>aN`E-1fy$iwd&ZMrrYxiIA4AGn>^X=!w0aEBvHNyXLStI<#LY=T3M0)S zxFrqlRxIrHMXK4>Rlo$)*X1MbPB=TW%8wiU2J=Bu z!*>UBzg@-Li*f^@`~{h@+ID{`L3jDO5O~5Ax8iDWw&crGo;J@v2G*9Tv{}rl*yoCV z{D+R7o&9*nw4P)>CJ>*=+-}=pdO?@QBX%!AIk1W^813GJ-u_fQ#wv&L0_=dG#Yb zzml(edb!xm6f#muR+~XwgW2~N%FdBg^dB+=Tf6WbyN>g9l z&})gA!aA9KwI~aKy7c2TmVA{==)cG(Nc^DfvF@zcIaRj*CPKVmD zg*Nis%)-7#dVLA=w59nKIY?^NS5(7H+TZBDpfYJ(b7aYvT4A&ktqfZZ3rZz<`!%3x z<#E00@n+KxAP*@06mjO}RLoPnMwiu2v!fEqPv;p5tz=y6bXBo<_EWwWr#yfbA19jE z&X)4>GNw@$x*?lP+nw)jEUYgoZbGuQ8Bl3y==aYc-)dJ+G)NES$w@)HcVXj}5BC$e zwpfW80DvVR8|1q`+v#BHDzyRFr{ugPhWstHql zeO+8Aa|eCX?q(d|mbrrASh1bV?s$s1%O7v~`jz^>GuGG2|526(9?*A6ORP7PtUu&| zc#6tP$ob&Z9v${Bt%qK6?`4OhBld1^vrT;)Y(Hx&VcIFsI>t`^<;H3Vb0JnT)5LGL zH>0($ukk6Zh4^`pQM$MoXTcLoXQvNlCaV>GJIN1Q@scK&LS9D#Q0&*CYGeg^q~iLW zr2|=aw?adXliz};FP)$gA?P4s|AD(w%I-5oLrKU8x#03I_E)Ns6n!|L`|Y;grd1-8M{M@k8(k?%=2uFa%_ia1W}$ss zG-k=PxDifPt)T9^Db}1B2z}U_6i({y>z%e_U*Sdnq27v4j5GV#!_(w88;}Efe@;EL zSd%PDf0lvNu#}dX44U+!O@it#^Zvu&?fTkAGZp^Xsv4x{b@!icKSJSMr86FvR~ZiM z3-CQcq2-KgOWJ#-zpq)yDbEGMABREDQ_NQ;NiR>vaT!Vgm$T=1MvbW! zif)tDXq?4?HeLNZXLVl;Du?IHC(p6vE3R3Dp7me+#mxuC1IWUg3A|lye9@J9mc2Fq z+fxs!b#n!!L^e0T|9xD34X@WA!$SBj0VY zxN7shYg}x7MRxdhPfNVV$HCj?P`L~k=I@%$Uj8&W)9_!4@6uT!lBTsZJ>yAuOAQz) z>vN?zDnfDoeT5d|mDxN$hYLSd7P3cYQQ}clO3caw@15+1h_}4j52f_ZyKk!M9oP9B z;a<#2AM9%k6$O{hc>OH1jPl*O7b{oVyQ$rC8O0Y?)# zuBe_i)l#ru>Nr74H|g6#8;rxMo^Jj!3Ewh`$+QagRhMh>eZJJ6ZG zJAE5yeVB5dNsA)045igQ9z3-D#uwU^lkt8JZQ97gcskHc1KSr{ul#N}IuY3&v zGLaH!wTaoBogr~}#sB>lrIma+G@H{rq{jXkP+sEHoz>Mm#=G*O^Y-yHLiyV$#oF4< zo73_Z$9uIGBLe&EqCTj_?JG|zZ3}DFO4RJmwJFxAya1Km2k%I9@Rt1THio)!qcVMz z%4ilR*Uu`a!M8GpD@Hedf~?9IYBOkf(cV&SF|&c#4qjPN=T*q0@4jkVi6`_G*R4Pp zckeYa7BTKPc*@1yD8p%NeP!Cq|LsQSy$YD~IB5B~mrl~&GgPuIy=ffUU%$@kSH!8j z)E6e&IFhc2x!Oy*Gh?IeHddV;K~j*c$O;JS(~n!4G*W->VZbPp6)HqG39qB`bL}@G5Wi+`Ny%E(4WbdR8;OLeojA0tS>l8$zrur zqUX?yUz4W6{i?MY<)a*YQE4TA3YXeazUxvRnXAJPz7PYG$ci5~et6(ZUP=j*+?)a3 z{GX;J@AYk`_HCYecMaW<{jJ{Ot&$zM2#b`n1ciawsF+g+h zj{XOel&c+$+H{WvjMAH#XAa|R(fnRVo&$;VI$CmnaH;X@uK76n>&7AE;noARHZTFL zl9WqhF;mOxNUg!q|BF?QW^)ZDM~!PkY&I7LU*R;LSwTl|JYTY&9Go7U8Jrbd6kN=o z;@%T13Kj=Tg5|-D!Cwa74(4(bD zhDO7p;ZajGA{rfyiCUtG(Xr9As5NSfW<+O27ep(f>!J@wpNKvkeJ=X<=qu43(Yolt zXk+wD+!jxdyW+Fr{~7k}!#qI7yPKq%j$i3{8e5!;_|@IT?|(BomWK$>d~8 za!7J$a#(VFazZjEIWhTM^7-Unk}o7*O1_-jl6)<>HTin-!{kTFkCUGyk0p;M8t>pg?=i4^9K~XRz--GPsuOsNe>!qk|7{9TWVY;A`lWf1PW7@ZI44 zpeuMVJR-O(JSsdc_*&Q&wgtC^)5Gb(x5F9XjNm)rtZ-Ivd)N_n1m6u$2u}#UN86tm ze4o}oIrstX-x>TcoEOdueiU|vUBQpTQ^Qk(pMw~o)!EQES(el zEPQA9&fu=_yzso>?(l-}g5aL;qVS^N-tdy}lHljUVekuZcvY|tEG`Rv1s<;n?hCIC zuMO@8o3{iHgqy?7!TNA(xHb4qxGmfsJR0r_cLk4!uZOP(8^S+?J;4)E6eYpaQEgNg zJPXE$2Ajb7@L+Q^E*cj+9~~9V3SNjhqK@G8=!EEmV0Uz4bYk$^=;Y|+;CE4HbZ+o_ zDB*%|aCA|0Y1kOOJ6aPqMb}5yhet>6kKP|16Wtiy7#e~ni0&T zPt3MnaRU9~#Nedhl;Cpf5lez==n*S|mBDqv`-0WMn&AD`KW+*>6?`N3X7H`xHu}nU z!q%`oEQB+|+2Qf@jFadUbHn*zcX(QOMtCOuV?lUscz$?ccrm@?a{9J46eaZV>CXRV7+uwG&!0Q9TFWH zofn-ST^9Wbz4Xtck467%{q&2`m!n(g0f$gZ@w<9jH>AA7(SlKFYX~`naZqhrZ>`%1 z$5}*emQeoTwDNLz)(TpAgw!VWxXJ@T03X>Dw8UHD9lRzZ4sJ`nn0z(( zc5++tli&x*UCGabdy{p^eZjAiXObiAD%Vff?KaGAC z-4)#(-4op#{XF_b^h=&|VWXhZZw^kno@^t8Bf^lbE8v?X$#G{q51xH$e0uy2IQKd6JLB`>3*w97 zi{neWe@PvSq1|04c>;{O)^_xS(y9RGjE ze@m$sN86(v(JRrb(avaB^m?>A`fc>P==afoMt_L@E9!}ZIEj+3}5u8s%AHF0fR z7uUxP@!+^I9vTmehsRCvhl>xFwz#Pl_kUhs1}*hsRUnBjcmu zW8!IXYg~wD#>dBV;*;W2;<@qs__X+p_{{kH_`>*I@n!Ml@q6MW@m2A%_?r0IcxAjQ zUK78cI^0MtJ`{f>{Lt%pox zo;KNf^`V>%uQl7Le0y{hqsE?02!+PdHVdkZPt-s|bx@I`qsEMD=&Xwoj7X9q`ZE(N z1WJAvg#9(+sBd~rq}~(#CGMcB#cF*dHP;o`-51P+degn_8U%mTHQH+30C(4=eN{<7 zx<<0kG7{KM=F)ot>GL;#TmXJdiIQITWZE`=PobrC9|Fwsdk|7UjopWV3EhW-4|k8v z>{BUe{#GrIq`c|vWIW9#bgTW-8@+P)rn@EGRk}4tkR&Kvr?<;tnC&*m4Sal;z24&C{aG&F^ zbA$7dI7A!8Yc#cX*EH&_tHo-~f4c3`Nlz#EOEc9PppVM#lWDj7eG09p9qvx@EWhW` zw)uNLEv>r?nB}+g>852*1rw)|=V{=h{63wMmfvSk-t;~TyruUd+CRO|2AAo54t1+^ zzY|QKOKl~sruPiXK`DnB_oP^vQT+5)y0^+40}U6iH>wnu`;4#PeL1rdolt*)`5ldI zq0xk#7b4dL$gTnF4s*fF0&MT%7FMV74h(;yQ-`&H*;&8}#jM~eWEaP4)o)L*zuTwy zSQ=ak4;jpC?OHgK=5nby1?nFIoj6K44f+tZin;`$5}p@lw0s^hQ~Ff-(lRY2^I_zx zoE0u3s#DHNqj+hbNNGN$=QNL$3eyr?#%L|t4;X3Q%~KSnJd{37lfG5!M&LC9e*&@8 z-(;>f?mpS<@3oX>^$(?rph(Guk_>g}+_Pcu;-NsA!4=ZlGl?~eE2bT1Ga7VoRl#kJ zN7_-p9|S+1LtZCx)xu{_A`i7iBY3|YPW>LPq4bMI^oS)~&0ysk^3)7(1T(x9lyW6k z6Lae8u)mM1$>w~cY|b~58P|>EubJNnoB55hncqle+_zDlZ*$cI-{Gob-rX96%)Q%r z7QzD0nIYw89zL7r@!|12=Y(^Z5}XvC#PgK!6rOX#xhw_E59jmj4!e1t7M{lQjPMMe zXNG6;JUcu)sAk^2AgE#Per{09{QZ2M7ls$|yg0m=oG%S8B{$7So0!vIN&KbZQl3|b zSMyvRE+_48!`}u~%=7Dmkh%V_AZEVb#B+2sI;dgZegiFJL5U64n+Jo_h2Z|ZV0jTZUJL~ch1Q2b1H-}I z`6Sld!kMYybtHXt6utW>TR}ORe!0SEMWe$pP|LA!hfe5s8uWdfjnY~*lNkrU7-w9< zfAORd)0 zEp|J`jnvy+O;Gnc;ad4ivnzLr-gQl+-lMZi=OU%!^Kq2nIG{^c*WLBBTmHV(INp(z zXjHGefws-xm($X^uK;HG?R*B)vhM*C?*Z;Y@KJtCYAU}QDQ|i&25;#-hxSkJq2MyT z&!cvg?i0au6SX}bT&MTBmV;6r4R%Y7;-|OLy;WubG+eyWQe27UszBqwfiW86WHb`a zwC8o&Kfs7bhDH-|X@x*zsAS=HgBQ&)B=-udD|iQnKhdefS^%HbNP8;We7YZx)o(lD zqdL#Y;X|tir0X z{Alu3&I*?i)hTDCQM|N2q;#LsbDBp=g=q-}A;pUJ1IDl^JVjy3L+R5r>07nddfFkt zKZaQ9Z!*V{CO`_5sk4-3wZ}QuRuOGj&86AtAkt~2vl?zV1Pl%13gLz6dS^sArZ8@5 zO`{f`cQP0dH))}+;-Xh_g~5lo2C;7YVOruNT!VwZK{t>x1E}_&&zi zq_xr^wpKcnwbEy>Kg){gP*#DTXC?K8@C8;DhurmBwaBTRy z@OP|IL2kh`R*9>E!`Q>A4i1k7Ma)WBF|G-YVx71lIF6O$=HLick4FSkSwS8X9L)~S zr)lAkQR+*)fKyPb-)~^Q36QRFr=?hwy zpG^Olf&_6$u*$}{<8734D`)Qoi;_fTw6cFR9OW1=ua(qJ!}mO!2ZfA05xsmGI7-0T zabUF-yxhoGx7bpDnAjgSiBrytf%HM3UPZstEs593ztg~HXgvE*=ym1hgBDZ1>gT=9 zhrHJkYFoV8sQ1o%TDvP9d1|P)W})uVJTqNK zYbCcI6p-b(jY z8Ohwm>s0uQPX3Whe;OP_^2y#CNpPvryiH?FxzRd|jO72JMiX*rKPrGTY7TS_c#+h# zhFe&j$6I6AIryg-)B1zPo_CnU7+Z|P3_k_zDLy1ejb;ls-+9zE$hlz?%(xtx2oD$xI_nIwno9l;&-Z@zz#RFq&OD_S)E~ zYYZZG>&7#?m=H~X>$XHK%snPX6NBn#QZy+T#17tM<_S}xDa;NIiP(>0H}BA(o*ljO zNOgX6e$c?q-etjHcK7}yXk>@)!@&@C`Tjf@%1+yB2-kK$!2X%;++`dK^JXd=k&WL`rf|u^E2=kJkM2UykSaCRXtX-BfX?5*Po=l6r z%S$Bn#IC2LsW}gfTn6SE><*|!wFS*#JxTf*0odzpghdyxcbI(6^4_PI{2&=Z*Rff> zOH-vY6V+a~GlD(M&pFb$hyH5du5=tY&T5_RvS?K~owb}q`jdb1_hpnfz1_S{T;_1_KPS822`-k0#g573w zlZ&y5>t9CyOO2bK$TbE3BF4noFJL_FW_;56Uts-qD%@TB0}daZaQRc=$)~~VLq-m* zT@;Nd&{2x=7PX4P1fd+qa?j3a`B-A6^eL)K%hX9a(V^&C;m)|6l}7Q>K2fB3N5N?x zMM`v3rd?P^|I)AujKW+=$7OKSw5oMNO%mWA1|;=28R=zdA6G`RJN35IEU>nU;G~*) z41-$5Yqf^wW+BpN8H%5Hh|~NUYGX+wbvcAlS~5dK{wFhzpTZTJ+?v2quVC%wJzP~t zyo<vpv^M;Xi*wjA!Lb-O_}>eetaUWZ-lb~Uzc*I?^*^|oSHXDfCMwqjRrYhyJw z|7f!LN3+d8nr!~jjK;?2f|2p(-g8?jCL4#u8-HFJA#%Nailde5^=aH7;9Q1 z<4tR%#k58aHLa1UrZqBBx?#jYJ1iJ)x+5*KRXjzY`6A$Ji`#n&IzQ!{0QUOCD$VI|VwKf`lL}wi*7~4S&-Oe+9#w zb|MzhgM_)6hPi2mxmkv}*@n3e!`y7cT!&%qSi{`$HV-}7@HflwcdX&>c$8m^;*PmKdI@3{TaDp(71LgA6x^8E$F}H?{G%;%^0Y z=Qias1<8c>I(2CqYwuM|?-n9N!u9N0a!c@lS&h@z3I)f&07SyP&qa=?ZTH9bLv0VB2{Z+L!bgMJ z`0@C0%C;fiKuMm6`HN!wWc)PHH^v*u|C#tXa@Z7aBEEEn8cb(ssObz1Go7I((-|6# z&QM3tlAM%u1yhoI4n1~G%iD9D3Fi~xo7-X2JF-+7NCh80m^@fQC!^B|2M5AG1 zh+$%=VPcqJVz^6N07-g6kX_y#om>6T27;BgqXP6jon3xbh7C#mwhKVY} zM6F?>-Y_xPFwta~7-N{2V3?>fOw<}C>J1Zv4HHdPey`Oj zeL1afr!_7(eVD;HzT!rQLv3^zV%%k@ahGAnT@JI+VYu;_CgU;bu8vl)8jQyrZan4) z<1t$Mzm73pqr+6=G4;k{jx-+AX*}j|<1zKdV~#W)Gs1YxRO2x<#$#%Y$J7{)sWl!m z%XrLe<1rn^V@4W}8D%`?c;hakjk}C7?lRW6%Q)jMaWTWOOM$HAI<{3uK zp;2>W)EpZ%Cq~UxM$Og6SH>GPA8ph;(Wv> zr_stBLrZP8KK*WMuT!m0pJsjfUDl^hw?2J__34YPPoH73!aJ-_Uv9F(nI(ggjpFYR>^aAVCms+2Gr}gP`O>U4D%$2OpNa8!s`tC) z>(lSCK7F3`>5HvTUtxXvGV9Y9Sf9So`t(KCr!TZVeUWregL!D5{v-&|K)o~QL<{w& ztYDytivQiw-Kj85vk`20NjIqM4Orea?gaq61kpb8v3h>zNR7W%5c#{O{h za4_3&(1G^qqxd`)Jw`r{M~|}-vLV`l&lAxT!70*a#r|~kG|)Fj8(ATFCVGaPpN*bn zh2**Dxu6>z*Gg%kipuftB%I~7zv7++(h(Gh8$@-tH zsQe-N0~GdO(SJci_y62+|i#2BO&K50N|sfw$RTB_q}WS~LuAS92P z7`-I4Uu%(I>f$;i7_?xaw!!gW!;HJ0<8LK&NMuHv@ zk3bGXQx+L(bUYeaYD~;OJq{MI=N^yjbwYdsapuHxD9?%UiP%qyPr`n3d@}Y^;#079 z#+}&b#&faHi|1jVAI~SxuDA<(cifHr)c92Fr^TmXKRrG@n2Wye8Nm!RnBNg}qWOC! z?SEE$7PUA#J{v5Y6Q6@V_=0#ra4h=G@5Fv?d@lC$;`4%T^n}j`FBilY5dWh1qTqP6 zhTjEtE{-q8eo1@@_DkbSgZbzZUlzwJbkE-HT@hUJSu2h8{^BU}H89zt+IyIb=B2f{ZE}~boBb&_3nSaeg1zR;OSG{b-H@GI-Iwv`c&0ecv{A> z;~0+3U^5sQo5^Ov`gnFctWRJkz!_$-S#XBbuK9uwbPn8|iR?ti4}76>84vL7o&?94 z%ua^qVG271*7MjrSf9#Hh38=!I}M(P>Fjh^pTW+6^_lEUSf9ntg7w+#Y^ELfQRl-k z=dg1aE%2zG3s2oVb{?$HXXnHE0v7xsz{`3etS@30L9Q3G(02g5u9w2Iv<&>nJG0Bd z0~@>y1!d@WPru+XP^+ci?}X5zLBFAzf-M$;6&5yBz#*g_h}08W<$J99UL=J2H}wHj zd0kVl8X?$geUQ}mS_3Tg-}|R(Jy4A)^|1x><2leA&_5cgFSPYb3l^G&`f|`#TDnbJ z80n%53*Cn<)YFx=!BEd5y3p%E{rpsav_+_4FB*Qlg0vlnz(U(K=+ba5u!?)pJ?Z&3 zEcA;5ZP9I58a!<2@4-An@ZSLm=?A~32c)B=-hN2Pwn#`-%W7LBWIH6}KqO=U60#E# zvKJDvGvg2cfk?<8BqZ%?F$B(*)~p3cNC6VEEfSJNLJEf*R>5qi$f`sgg zgk+JB{z%9!NXYI;NDU;UFA_2g3F(W33`0VSk&q%JqyZ9A6A39sLTVu)^^lNaB&0SH zQjCNQMndW!A;m~YT_mI!3E3M78IFV$BO&#WkP%2oF%nWA2`NTG8XzGJk&wYiNFyX< zBob1LgfvD%ijk0pNJudfvIi1UjD+logfu}ynj#^)A|XSNkWG+~W=P0rBxDQ{(i{nC zfrPX~LiRyIN|2CNNJwiWWPc>24HD8C32BRjv_nElk&xy{NP8rtITF$V3F(N0lprAo zAt9S0A)SzrW=Ke9BxDE@vKbO`020y#3E3P8Nqd!m4=obX6$xp9gfvG&(w-)EV9BJc z6zmfvqze+#gr$TuM?xARA>ELW`bbDCBxGwOWH%&ae;F zI1(}j2`NTGS|B0CNJtALq!5YW+K|&fJ zA#IS5hDb>3|CW%zMkeQlprDXkdT&0NHG#pf`k+!AtgviVv~<&NVf1?( z?eRpvRZ)LC9Z01EN4EwYJ*ui*-T*AF6xJzsC}$|0=^s6UJ+7&kK$)bz(EaJ311yfP zsJ$jwXF@DXb!9N z{OLlu)v!=@Q6e@hu!{MB@3qWv$hi<&|0&75kz_tdvNlLEUp11MU|ml|GE*cO{VweQ zUkqrwa1$h1KO|WPB$*$QtRs?a0B~#w#8Q$4AjtyMNM?p4Ge?qHAj!;;WEMy=6C_zD zBw1%9nHiGI1WDEjNoI*8vp|xyMuxRUZUrK@tdUzmNUSbMtggtaV5F1?DJ4NZ5hRlU z$;2X)x+0T=NFyuckTr5h134r@4rwBXw2(mB$Q})(jt=rh7kOiYys<^z*s1YGioCH` z<4qsrjRW$g8}ddEc@v7f2}9mEB5%4QZ+akanj&wyBX69LH_phLX2=@{5sh8L*9fTZz7O4-H z`XCjIkP0&7fdi7j0ZCwmBydC$SRn}9(IP3s#*I@zPwiofgb_?$a;!3i*#Op&?Gzj?Ww`F4fl{Vz zM0h7D^&fiw9xWmLQVHz@@XfeAeE;piYXopiN8Cpjte_6qX=|{>uJA><1AGPUNxkPF zy)M{WU9g)rV58l@$I}nK4)+2d4XjUqUJusvfH}6{mC+i$xpsu|dkB16?gw^JBOoS7 z%5>@+9w}u8b?+G_WirBhc9$}_k>R0IW(FQ#3``S)?X&}*3mMqoc3>lepam=(EVAnN zske$5kjNQ)EPTLrhC<6&e_p2v)|vLIqdsA6;LCLwd?N?H3^*@B>qHm=`!F9`P#clJ zSg%Tb;{S%b0;<(0J9WF>nGWqn#wN+SCLoM)6M1SKFA70?YIzFuBLpm;o`hK_g?Hhb}O%)P9KJ@3qB2_35@*(xO zhvUGP1$;W-s{(E}&r#je=C}FnN2<`(RJEU*Asrl2nmXq?(*2 zHMo5oH0p6*+V3ml;Fre#ZNKCN{SQ+}3PW5yphS@<=*qSQ52f20bs}TYEK!x_L9MMi zb9KAuwb2``_p{jDz|c@&_`+zTae?s_lSq^KO_XMd=Ft}VmW-vJg_6^JsPh#u8=0L&*szTtJ1?;gX!Vj z!Srwjm>%9EOb>4prYGsD^zfA9?~`$S`V2mOCZB#hpMCTc@8{E(^63xp=@0YikMQZs`1D8l^yPf|3O;=$pZ&tk3 zIj^ta^(T3K6|b-6^{1iCNNX|PP>WL4!v;YcPzvoI>`Pj9Tp zq%_uJpiNIz&uOg3sOmlcTlJVm#xyeKvzAd+TNI4q)7Vzl*jAR(*j5JPRjJzA8r#aS zMOM`Y2DQeoZ7XYJOe13&8PiygX{^VjG}dGOL*HW>8Pmv^M#eNUrjap?jQLM}^A`wi zgU8(8;p50M1jYg&(Ayq7Her!40(KDio1G(dOo2vzA+`*HRj!*9ay%)YTpCFx;;#;PGSpgn4tH2+2 zHB-bCGi#W&%sOU0vw``J*~n~SHZxn8t;{xNJF|n?#i-3L2wrzrnd{6=<_G2ua}P!b zdC2_4JZ7FU&zN7BUzu0TZ_Hcf59U1~Ff@b)(InbLm*^8i@WV4DX2b%#@vMn0k%CWN zQ{qfqz%#D}asMC9S;)^=h}VyLOlx4T3v1e+fouc+YM4nBW`?9;PqGnwNkhnHkYQvi zNEm4tdbR$ARDvgeA(cRI7{;|aC#(~m7hVuv6kZZu7G8nztptJ+h`;*jjGe+q5Wf}T z?+EV-?+Nb=2gC`UL0$=X z<ZF#}|C@7s9_Dk%K>?nBP+X z-aud4BOCXCQN6%_wFY{X{JSHm_NxSMBKn)gq!6SQoB{27Pk&Pje^Up%)?lm$$ZHmi z3%--=hf&54k_tu&UbCn1=tA%)Tn4WW^*LoRFGBF;Tn3&>0=Vz=NDLlHfM*YH8}zE7 z{X-4G>+Iv~g+rj{yaIa_j)ne&dEj%loJ7NnqXgcpkFzv=oTI5>hNf`nbrT6aX8J(C zplImb69av4={4fSb2&4102yhHB21f}~ zZPRhY7#s_X_CclT&iDrNzDMOwTD>LDYXpE+bPDGqssZ5KHO-_(G zagH=n$HY298LLQ4N=S~EMkd4!Pmw3fhb1MXwUCCS#JS7ba&72tx+b#WN@Z%>R;}U^ z6w0K;q_|jRLYjM8LsBKAbdQsdY^6v@m8T^s<%)5wWZs+?P0O0J{P+_Q35wB4aS3VC zaJgJ5?fmgz(tvd3aJeE$IgYb67t3T^YtEDN;ovU@Hoet0xrs;rlR5U}WU3sys^$34 zvf7GksmiMJ7qS|eG%^9M)W}q|JmwMy^&3ev7&ey}FkCLt5#$oWJl{2MZRy1eA>x-4 zE|j;NTl4nekQhl^6U&0#T;aEMW9vno+dW?4=;Gl#*u&|;qA6m(o;kav+Y5>Y`SqUj zW`X;GomI!%843C@(wPCxC+~J^J?`!HB+X~j1}e6c-98nh@3gIQclm|Q3ANcpul8kh%)lHTO1`m2%z25)A#HfJ}f|@-!@P5T>i}IXb_dZf? zuPN{7=lSaCQET1vT~8)>_>9zzIvLgTw1f4LRnHc-a@$n6fm3#F@#Bn8sn}tY|JdHA z1Ta<;Db6Kb;EHtO^x)#!m=N+_D1eFN=<{u3K(~afKvc$=(QPNXt;gwzwBV)G(16)X zIU5?U55u~dRyh_+ckdXXSXC-tKFLq_#)^m1L?I^V1%yLY3AJ3L_uKqTCV5`c| z=QEcYK77{OkZap;EJB3tTno;%VVfg)w*12(k4sDa!fU|!(u3OxJ>dCuFKkihn&;B+ zG%1q5uzy-&ngU)3_c%o|7eSLsg<)JbuB%9QNM2Wx_eToRv=DH*Jz^UF zO8&_Ms{X8j(STEGTc)_NWL-s_v;hp#xS zv5)CGWo}gWnoa9Yc^xl1zNNGz=dkX$vh{bbte5yE7GA!;AOsuaBDK*ET40p=5Eq*@Xu~?rdv4JJKnv|LY4rmxY`5dEe?b{jE-t zyt?lX_17GB?l~4w|o8W=UvJ&RAYsAHUYGv&4fdPYQ5ji|T z8Z4Iv#>U5wlLjl~>8ZT2lyR-#-hr`n`JnEc9GjLV^-!~PN%9mmI{>zh^WwZcd}Tf$ zsjc%=-~4+{B9}eEr@i8G`zHPVqIB!htTZr$5i-@-6Uc6NJq5# z#%;&3X<3yAY_}i16x2+<(I@)VROgGATE6_we6O9tyT>~7jtNWWUv*6xSoCh%E!`X0 z_hvWw;ipq=&)+sKGHH1!f7@W=4ux78S|tP4CbSU-Ewe2iGDLYSV69@P)zD*h^1+f$ zhXuV8Hf(jY_~!Sq?04O>b1L3!iurxD|C%aGvv)gBJROuKelq6J@|WY59^9chtf-0j zdSUeOz)T&#p)P|<12iL|&lqL3Q678!eoxZeIg^$3ORTmD2wOa{jGK5!&7{;;Zm*qJ z7iKhSSL~?{tKVJU@J-zvZsKf}O_?}_o0ywp`lWqV4_lM)x7^iSc%oHyQ>ekQU>((O zaf1!;2>oSemEXMIjgPO^oRvSO&{JeOV6LsjE3I`MbS!_Hnq!obba$~i_ugw>oTAN> zYHLz#v(ROY>}5t}=TBDn{v@rR^mx+gB`I15f9l~}lIC{z+{>_c&ZBO}8Y#QI?<<*V zklxk(Oz$M~LVYQIRbh-GF~~aw*uc z-!-Q179WFcHrZDXtpXcxgUe-)^Q9}6e0GukmODiYJe;>o2BjQXYcEe9FajRxo7}{z zPfgKR7V#vU1vN)HCPu+>G*+~P#+#}ymU2Fn>xRkWsd4+PL?;85(F3w3%|6(-h=jOw zMZ&)`Z!#m!fTqwe(c*l3y?s5}_<&LQ?@K}h>$#Wr)RZ#wtYE$3a-c$BuNqqh=dpXKzxso$`XR@%k<79EqhLVp5Tq$=ogY(Dc zSdRtCK^Ja6nKF2J>5rqA4X^(3lQPVgtPN*O4HA}|v^WtM0RdPA&xS$-lxv!Cv?9Ql znV?)_u3oNDdknZP^gwpPj$8+>U7>HGPhRVW0?o%Ve44vj3iYbMu=o$9n^1ZjsW6c1 z#QBSau*z_4IPZotfMSh$vHMRR$WKdxMD*Fqi=~{}ys}4!ep_8K>`9_-k*KY(SAG-4 z=5ESG5vP1k1%^D;oIAqv^5UNt_E~GfX|$i>VV`;Odz}qU*UY`q<(!kFDLbs(@Pgc6 zU}i@3s$z&6|_UiWbdp`jBP^dp;R{&VEkWuDic# zKdv?07_s~C&(-~OFSJ{1y{Ku(&6-DltnWI{G)TX#xBN=buAriTlXVvZd-&~Fjy_*x z64m1P)Z#tMHj5@t%}y8ne#A6PzdEJzW{17Tqh36C*4y8~CFGV(=+q5f)uN*7#xeiO z^Nwd*%jIKIetJHo*U~|o*oZCj9OLZF3Qq6esS(%qhZn=G%r#msig*I`M?bJ~&MFHh z(tY~kNK)o!7wVs7V5l|q<$OK7WS(AL9-g%N=%KdBjZibD!JT9Va52C{X_<(^Y`t= zj(Pp4xU}`{qBD=y)a%fcbQg~TN(y#^Gepe*R|3sb?cHc z^#1hqx&gnM-Y=^k5v4F1n1AM4wCD8q_vWTwtEg@{#P0(8@Vn!YehUvinlaBi<8jm< zmpY7S)LiW>E zn+9u_2UjW=VWF~CSY%;16KXA-KB?ESpT6~)Ih+UG$xi6THRqZYIu$zR**BObsB5WP zq+#)C9xb_lTge(pG|j(Q$@;w6L;aX)4IbRYoCZ4vmQ~3qxTX!;U|B8xjb&}cb^EZF zAkVMi)W6EA4o*r@CMZTG#3w;>4CG7s2@t+WjE|M#;fb8#u&C9$RzLJPo^CYV^Ujou zCZ8Dww4jIj_-XGpnegWExpzS&H*Z>YeO)~3yiw$wy7_@7M@Jnn=3wBtAdAL z-sPn2t@lva?)KH*hRSz_gHGOPXV8@0vC?;OMWI1hc-4=c5{+WghljLn={RDLsIv33 zm1IXN-L(bAwtgKfQew6*Qg(C?{ec^qR-rJDQEeiB~qJ}>8T|Wa@J~Fx-xyJiF|A|a|WTX!icW~!xWui(Mt z#DWUlX9v~|+r6*U$NPA%6+>U$>+{qnRp-s=0edp1HqY!^l=|zaw{jzoRY@Vun`Qbx zF0hi0VIppBsc~AnX2;%QZryLizFN}R<;A7$GlJHJDh;;=JB%6Ecfremoxic)^e&4` zedur{u1Wv*NoDQ!=;(P~61#YAzhHZK{@!UlMkG&IzxJ-8NU*e~sNN-EV9J(DiPsV; zS2>4IzFlx^po!A3$>f5IOHZ`>Ej@VlAF2I=TRX(o%^l-5T+u(>c!>5O-=;eDZ;i(7 zI`8Cvb@bTk2SWSy`Z1x0CZoQrk7o3uUaUzTrfE?k`}P(q7E>c^`mlI03w zA!;B#oEQFijlo}N@h%()^_maQ4=dCCu%Sudx%;5ekQrb@vag4StThLfmze+Z+>QNa zW|&{y`H=9PfhTOQTsb;m#Dvr@Ja_q4C(gGqK5uYGn|ayi=<59DF(y^+w{@(}x+OFz zQ08Ypo^t6_#?NCa7cN;7=y6KC?NF^z&GpGHk7`>yPfZOvAd56QR6ljzp&qq;12SAg z*N)X3WV~|M)8%d}14TABb}HIM*_W<#-TEwlovdVfM)%AndQnC}(<<`5oB7Dl&c}cB zWgUO}U5jV=WlL@^zSe!Jduq>jGamb&53p_P&*tSk{o#ki-5DD?Z=C7Zv34cdE0UkR z-_a#s{=>Hmyu4!`_!$^J**erDKC)n8%esAwoLuC@BC)=NoxYem;%YT zx%}YKi!MBKL2SZI?0uavmBkA$zxUDLqn}(iV=uqM1RnMM3y&V(fBd<52A13#sKpWOTC!t%4{f4R+=z?W$C^eGH{tXXGoqwmPjKK$E zKKiz2)4wqvd(C8E?fGlFCzi%O!EMCA85^iK_PVtLrap0m{1;Cwxh;9QoW_5kC#2V# zq)7Zr1*ko`lIDVT6 zu3c`N2l%ZYyx`Ic%sylOdweXscA?oZ_B!)E$Cy{&mmY)R;5#Yj(E3l!vaRvYq#S{e zITEhJ=?4;wA!_@tNCu3fX3m%n=VIWQrZcugotr7AW0#p3dntX0uCS>?&koA!7}D-; z$`1oa%(CbRe$&#@2;OK)b{t_d6Z|N2K>NCk-^$orIW;-Q?O0v_?Ym4i_z~o=oAG}L ze!SI`BxCz*7wtQy%(GFTY#fd<gAaGw( zm3;5+2!7cFC37op$=pAJ@GEF8=ST*EYd=RPQog(;^UVk2+G_8Sx#aF2R_5QN&2OQ< zlJDId!I$w|GMBtJ9mso(V-Lq9a{oc#6Xg5ymdrOF;>)MdGs%4OA(>03bQb;U|J<`^ zSO52LhVG-mfLRp%R>#C2jq`sw%WhQu9?$z|=XNtsyJ^lT_#A}JUvVx$v+h%zL*hT@ zanASRZ0#WUT?9@L8QpkY&z{U0)Ge24Th2$xo z{?_?fYv1E}e*L*@9DYm2XPss5*qpWdBPQpaFSE8HJCx0AK7$L^HaDLiWR6&@KyLr% zGniuST9_i)3Rh&?=bX*=;e|g2uTP61yUYV+*Br~<`C86LI4AA}4+2tIwfloqH5PC+)>sclfyc)VSk3fgf9P&?$`K{<-&&5QGGw%E_ z0?X^cYmjl(J3RXyyTn{Jc0c(025eyleSH+igTb>uWsZ87i3VQI^GBFi;MM5i%dyS> zD^Kpe+;8)Em$?yHNsh-kZuI9!VW#F6JEv`)YlQp4d@%ehyauD~+$+olH!W6v7OdOL zyl^M{5`KIZ-uxFb{Wvs!2fMz>#e?AEZJAl}7XzQOm@pSClK&R2-@NvH=I`ynG<^Ri ze43}Nj)@18oZUGr5%^=18XITsJY?x1_CNL}bV#fasbKkK~nPX!s+<%TbKBjt@wT=_=0saqmZSmA^ z!#itU(%b<3+XJ704?dpC|M)9#^BgRKt~_)_W#4wpZ(z(jP0z14b}?hczwt56AM<)Y zZhKSS^QNB<&hKY@^XqsYTzemVywk(y$#chnoX$hP*0Io&$%-$Vz-y7$DH8?vUHqSB zOw(owy;%s{ie35`=JUgwXMU@nbLsc7@WQoU1yhaadaX`Rz66@~6RJ;j%FE zDcI}}V zri^%mjat8z`s7VWPQl-2Tz_RsDr*nbI{?q+vr32IU2qHa@muY@uem{OJ`WqfR|Wfz zVY@rVCeZN=<=fQ#KF|J(UvbV94s(zUr+vj@=S;3 zCGVfjY;YAD{%fv3O8 zH_G2d`BnPa0j(c1k>Djf{|5O_gqLCF63UCl;KR_h+o8kPSII{Fk$yju{&apBa{mph z?l;ihHRy#Q|JT%eH@b-2SZ(%c)Aenh$eJa_;hm*h(htc9Y&aJ90DT@oUw+8FY!aHS zj(rPS)t2P&ZS>|EWGB7!?b18@_~GM&#eeC5<^i3(zNC-vrQqX~?ZfX&=X31Yzn8vA z=F(3qw{y?l7_D6H#XNzYijQM2;jHzD)-;;i--?f<^~Q>6h=z5W!7s352X}niusjmZ zYW?P|^Y9Vo&axZkAg%Kxk9E6wxY=uci!Y+zKd?HIMD~k;r=zP+G6VUVf$y4ahV`4( z#ph!utYNfHBY$e$E%p7AlJhx& zYj*|z-`dxL=W(quJ&Ci%p}y&tJ}<=Q{T|0hY(KQAb~!Gv?d>v;0iS*cZ2FF^r@Hra ze0}X3fgi4&3BGXc3-og)cp>NOIPYKkvJTs)`aS0eMkyDk+?zSSl=JgAzhUhQmM`MX zJsiQOQ|{?&XU3ehFN{%tY@BnS`oEw*4rp8ESc0~1a{N2jMb6*ixKl^qAblKMI}^B_ z^CvlfnDe(dzlX8v*u0k7bRB#e{l1p|_S4_I?e7a?RqAc<&gbD-=iqkAzMJFQ9RI)= zk=OrtJd=L@ntm>!pZ(PN4d*83JE{9C#^=ky=cmUfX!{AY_SeVnjmz(Ay`EqHoOAHj zwQp#QW6!3)$8g@u`6TCEYhTuJPxA1ek3E+1k6k-6p5wemy`QgrVZ6-wJJjd!$8k^R zv74y(YUG7sQ5>YX(&7yYqr zJ_q}h*YQgC7}H$1i@9?bcD0LrrJtA(M*{wSh~vXtPjLP*xRB;32OdP9I(A{VyYM5a zvq>i|;CdhUeZ(HVt_Zhfmxt){YK|d#BwMow7=Cv;@*c`PhvWSmFMwCat#6^RULN>g zZ18`xnc)AXbK!A^gEyV(=(hj5oUE65V%iZWfxn~7iq#a0m4@c_GmdVEz0+sdB3xm9Z z+kc?%J$Hu{BiO#zO9yC3P5EJA=$7>F-Sa|Yp%IArF~-AKV5zobAJ`IuhGLyV9YcEC zMz?kfLKodjFI^{8O{J8$VFo6Xw|PK**8g;#55zYMWW8u}{pxNnV5TdYwzAu8D=}Tp zxICECbzsT<1)yv_pD_~yf%!ln5ePU=AP@-za)G2ehtum!v_;^4K%-H<%iyz`W-M6_t8A2LbKFg^!_xCXAfko_5H=tQ(6t+2 zeOOm*QA3CY78aI*v}?6%U4&U*ouy4njim*fZyQ0XLLjlKMGE^HicSusPyH zaACm~+ThfjXpSwxslmd4L0X<{YBvxFsa2OPE*U|Z^Ql2Rb~I@2Qef1D#~xXJ1zQ(; z^yOghZ9=^q3bFoxfi=7kwj5$yUO1O3>YO#i^)~E9&!!DJJ^Q)t#yR|6bl*|p2efcg zz~DW@wiT2k>9|AUdR5Q2n9hnj7Ea}h9oS7w^H*=&5W}bA>ERZgl#kHT|Z7q>*vFTQ` z%=I?7@iVhxw&8JYH!Gw&%y!b9W+&+`o1SNOt^L%TZ_Xp#ZPPtwH`jY@y3g$4`U0~T zpJuD1k>1Z7Cp}@)E6shmzQ4KO z+V{-^%$20SW77wk`*Z!f=66URWFClLebW3c=_#9DWlnN^wYiG)8q)8YYt7Z94>s43 zKEzy0dYySN=|jy!NFPS}9rJK=9qA*?!$==#9!`3_O&?_*vG!l)2J=YL-?QnX&7-)! z(cD1#81s8;|7jj;)5n<`x&D7PeY|-r*H18yTl==T$vmF)i8g(bc>>o@Hcupd3hB4Z zQ_Yh|Z#GXReVTa+>C??qNq^tmj6eMc=4qtQu<0L~r*r*G^ZTUFGJml44fAaC4ARr) z4@v*XJd^Y}HhnI8t9O{^nbV}tx9JPabGUw?c^>JD%=1ZKO!{^667xdRKQ=ESeW`gd z>C4PZNMCOLcbp%wLfHCFvRSMuTT>-eg`!`eyTb(!Vl)N&463jcZ>uZ!vEo zeXC91X8wxnRrA-Rx0tuAeZ{=prhjAJ#`QbQD(O3I`nTp5uK&)weeFNYyKMSy^A4`x zW8O*n_vUX&-%EO{d7t?^(tj}TCVjto59tSN`j6(ltY7}g`~&Gf+w_Cx{ak;@e1P=B z<{w$@e8l_{>A#qNCjF@SAnC_!`mg3gYhN-SHy%{R?$q~9`MBmK5b z|I^&g^?#YKul<|(j`;@Zcg;6Rzh}Nh`hD|l(jS=rT>Fgqq4_V;ADQov{@8q%^d~m` zsrla8r_G(_`=md!>Cep%xc-ItA?Yv8kJdiL`|3MM|J(eG^w;L+q`$H0UFH{SpEPUc zm!t;tHRC^xr6$>U9UGsV2=R7%Y}1rk~lFrsdC}T5M{@C5T=+)k5gfs zOWjS3>FLDy`1r*5B&qV*jhPsaa2@3pc`(S+@$guPYu+xa@EDh>99DIXNs{r2a5zk( zgh|_?9oXb#NP+$dHd9H+mZOqwZT&GL&^6_BrSWX4qvsn@b-fUR9GD?;6k&*4EJSfS zCQd?_NK^0{-qcih(tSoV%J!Qb3r{LejKkz}!gv%??>4~k@sMSbOPM7*5`kf~d{*n{ zG^yK&`%Jv1Hu7>AHa;2B1;^whIg>QTu;6Kg=a9v{3X8>7j9yogPb?aVgeGDUI1)xJ++f@FGtm*{ z`nQv4tTjd@VYi-GDcw++jaI|qXf%TA_%)+ZywrFs=GTr!5Pv3ag~L7J)u7>w^QgCQ>ngFP^rT2ZzF{tPyYKkG&p`qCJumB14aD zle9c3^-*aE1qFmD++f@US2N&&@_CanF%jh^HX%zCXCmX_@v(@Hc|t^*iU6LduAtS! zJT--~T0v`I9-E+wfEv5ByV$6Fw>(;+V70}j7Nmd=Sh0y)USX@5s_X_7>m1BefsnNx z_sYdQUqN+tpS!6L!OgSU2t2t#%A~xz!Ms@H9)h^;VxE**EJu>jDEzb5@?3_;_M54_#1ce^k1bXk`Pg z&|PZ7@Q#LD8BxRbNLfvC8nZ{1s=;sZ!^J#{>6?_t_NE>oKN5~vkg%gCY(FM;2tR8VEO<51VChM%aUJ&L9;lKh5TC%jWBa%opn}&O)hFfbxgi=>oSd+3uK&=UC*t=2c@c>zjQeeQ%fPKHnGikef|2(a#>Qjh zK@+?dU$6(4c&tJf9Kh!|76(>9UwASm=wryjJhJIaIwiZ%A^9Yjjw6!^6~qamj34cV zyevgA3%OG`G#SGL1vYMBv0hwO3Cl$C&{_tft~4s2(Wq3&x^3ziGVRzUi4fX$F4a_H zjObM?##FD?#5E#!5tmw~O-&XdG?r0Wc52F0hXm-O1^I!XxvRbw^LSttTQupAl1uDR zglhZ5(@`iY!1uLGel6w2LTpMmZgov77Vp)rn{T@&+l}ij&`UHDw;&Xqs@E3JQu4ZSwV($PfSn{JScdkU@_0lvAGtz{QD5#=vpJ` zI;z#_YL!kp0WYPW7V{>7@rmT*cuXx$OvWZ6xP5?|xEQ#uO~+#FTjfTvhQkqrd5n@#CN(yGMWBtSeP38L<-mk0QscMl8+zABfqqh-+GrTxmqtA#lXfbP)oC=WjSEYXnuxKy(TP6Xe6{A&Y};SQ z!dNsJlWjn{fR6d!s+M(`MU7h;MMpD)iLR1^+VsalfP6W0T;rmSq5an5UO~s-K4cR5oC&nKfh&UO_3-i)N5A%=^ z?O8VY&_T;~{1bv?m~1gG6o;*N22vu_N9ZIE3R(dxijQLvT+0C$Um0b{U@?=x_(W<_ zmMBPwv(~kkr_sBZM@`w5HuAK7*o1jjO(j1>X{lpgC7|7^4O1m@n~y5F!79Ex)1qD8 zJbDk9hm)?hy#Q(2Orbp+84=ZpQ5`&wo`rc9Oi}WU2!L3{6;6R3>n>S5qIh?hH<^;A z-Ccm=lhIJnLYC;VWG9opb-6VA1NYBXDL}mhee(=nONcJ!i5G~ErX4I4CD3y!NkQ7l646ttBxI!*Peho! z8I=}(;H3MUJLuyMg<}@S4}>$Ctj5P(zmcK{-nL6wh9k^_L}8VMGa63-_;TiC2Esb^ zfw2;C*wlbqJzzjiW}$>`qC=PZ!(hOCt_NM@&Tjme7NFDk}p z3&1u7A+e-txdi&etPd`NUKP_|UZ%u9dBoj{Y7!Diid3IU-ElpcM18On7>}&tP@`!r zg8HC6)WNplFN$O_&#u#@r<5g&d|_TFi6GOV@q}8OoJ>r_z&|`ob%l||DbCWDD+aBB zOfoIUncfuKmA?q~*yI{Ngu4UXz&wu^lC#wncMi4cfJz{1`_yWrr-&j9&D;obVl+v5 zh=;YSKr|e)sjjpHl4oI~0OBmnOIY(%9@@AG^AZuoa3~0cXNSr3-Qk^{fd-5uh@rS5 zaWOBofq7>)wE1p)0`U{j5m+vZkns~Hqr8N$Q&=Q|F5%m>>EaDiZp1tQ5x zhZaranRGH43uh=O%(HgvTC=raFi($UkiduvN5V-sj>dopE$YLc3}Au+$eQU?*mN%DVP8~5uaZegSWKd!n5O$E%4%hf^dboa5N1dgAJ#EX zERi3Gp;m+!IaW-6xbNiC ziS(Kr{CN*RbR(1_xTb?~@jk&mwmI&qQ$kV@f^7s4g*B*u9|auOmnPooR6-I6sEjz` zhIk^CN~V(QHB+fI~Eaq7P{?D#`KGU5wIS!`k(F&q|H9*qbJ#Z6c)!GKWQ zOe7ezW)WnLG?Z_`SZx~9$%H487V|<$*18i(z)ghW5+*4=o&+dCJD?R5MMV>cT7iBD zv;=Jy9vCZuXD*u(Fq&2fwjht~d0khfUy4iw%JZUTJ4I=x>UsgoXM+oYF&2$1%!^9J zxIN^nF_{v5AmxmbZ^Wb^MW*6zD&eKLAsJJQ=mqsTA(TztLty>DT8tNxbfRF%Wy z1YKB~&uPteh>A?4-Hgc)8Y9DD_EQMOScu^-OI?y|=|f`*>f(`f0wT~^1R#KVC-q8E9+V%g)h1P+cEuuyr*JfqhT~{V!d)AP^BUAT6DhA18%8Lz zCRaI%5FC@+20m%kiT5H|t55Vq&e7(8k=usDsgxuvg$Hf`Fz!%RD|4h5Wi^E+rG>Gy z;`@PO2`GYBXfY9f19CtSKb z6{2t?$?`@PM7ug;MW~5w!KE4_QiL0m$wbD2gd8{SW7Gs$K`8j3!s3w}j|dh7OGJfa z9E#H)rbRhsCh0Xf5xpMJ*$u2-K`R&YwD80KUC&7olJ0CtUAGn;*brw;noRj+W8lg9 zT%BNbNG|2~t+=W_h{wKLg5UiV(UEE~o2hpZ8%xnVdqXa?Ry z4BE`SZAuGhN~&uS7>~QeFl;-xDA*pUX2HBdJqG6CRl!kcwC|!fHEG8m0+JCQ-s}W2 zPQ?>ZmN-ZhrFOv$4-geVJQSa>>vTAZOtBaZ(8ywd@lY;2i6sgW(xF6XGR6L&2n97# z)SpN(d1}tp=3W>TO=*2ga994K7|&ZFVz~`)yKG8Ip6j8=Kd=B=4vh4Q?J zMc8OH)8(g98FUPfj4`vHExl2Jcr?iY;Y2Ng1m}uY({Oz^V%oY(dTu@4b)PvMR|NCm z$k`#BmvHVbNKA9 zLOv6VX5ly*101?WZzpA{x=a+)v~EC0ISUkA27`4h0CC$`LRuIWPVZ7by=14D=PRE$MGxQ^E#q&cG5>gkai~}sViPkj*dJKrKB{N3bfEfkJov3tJ^7afIiIm^N!|Ar(%uydft=yE@zH(YE8#EgV!t zHlcJfXF)=a8{COgGn$H{_|o~LLp!S=OL#NqEi{+{RR$&AO{qJ0iEw^;T2qTuy$R zUo)3077G0NwR5>rN%vkp;)}X_d-j1=#u>)%j!0wLL=5+sy zW8pH!d=i~R@vL7fwF3xwWTH$`c_yY}bTTUx4M(!!RCqE2%Bm|S&J6W&12MM{Mk%z2 zW$LId+E0sD6cnnv{Qt8n2v0jwZkfzn9MS_}}AaTLNsI#(m5l|0@2 znjBo>=NJe~-kg>$lPZt|uafapOfimyU?ZENl*o^Q4i{GKs%3q3kWDJaqWEa!YPESy*q2y#ALac&!^+1d`5F?ieDV~(Q-LUeOic$ zMaZ4PiC8|7L=M?BOp_dllA_NUMU( zZf(PnJcK0e4^1xg(lVg-4WKkG5Fc(N?ypT%g^VxOpED4OMt{aq- z#ZK*r&=q<~`}MNfVj*A1yZ?-gt_p=prCceO{knx>wW@osyatoC61KzA2=m--jENiN zs1robwsAOYo6@ErC4B;YVyJEh7f+_5F{cdX)%r;=FNB;jN$eB97*D}=W)tf+Mv5%t zVN5a|0{ZeSaMG+9Qi(k77S0ZOE7uQ~gdK=@C?`C!PKk6EBaEB)WIR>`J1enJUIrM6 z=EIptCp}0w6`{uNoTxq_n}~&kaIQCpCWTZWoygi$S4kH2*ockpQcTM2$Gpr) zrV_=6VtoNYHsn)^@tEE0@E_W9v||4W;oT&NDVB-rg`|uA8IfHo$wjf&vA$(;R(tkl zGE|fws#z=#UzqmO>}|lAXd0&^0autm(U2tEFF;i~QOc%p5+ZS&ya>Y0U|xa;OiBk$ zgld&iF`K9s^HhQ>KE*8T#O1u|gK=UJa<5g2$wUc`D@Q5K5yWDjiE1Dgr6K!5Soz9P zWNDU)P1RM7$is{g`#14FdS{l9ZF3l>mn9b0P zFfopWWQ4Z-AR`0hhIHc+1tT)3miPhliR_FbN1tZex1OOOG8V~aD;6Ze5Cdn@=}w!r~ z3al*bI}JBGlP!_$mrb!8Rb2&g@YM3;*%7&YuD6=cm&?UcvFO( z7MIxjREV>&gq6Y^8*&o4&By2z;$%rzVy;;-I2$u5nY$k}+bLSj^f?*|<&rUejsbfh zg^^+HDv(L$II`Fd))Q59am`|06ysWt#f+3uQL8rAxLzn`6ccxcd9}hlghVPG%f@-h z;9;I6yIj%clKbHF;ySbr)}$O&&!7$i^;3sE?gEW>f- zz%-(Q80|Ar4QSl}E`e^!cNvVe#3GqUKF=Z$kj9@$39#dAeB!;ynK&!3hyg&rymCnr z)_jP;=i(XeP*z^N#3j8{v6N==E(@8_))cF{IG(qZ6(5fc?|hz0F-_U>8yROFa7T+6 zrHHji#(44L5(O4BU=_3p@v^B>4yZvUh#nNormWuaJevyTxN$Wol_+LIE~kW}sYK3t znaXtOmd3hT8;=%qwW16#0x@tVL(OC%lYkmfD2Kc>daX<`P%u(d5HqnX{beH|FqlP! z*0eGOZI#I)+`taS`Wu8)N_%VTIjk~;P7;y=wd`vE2`-VyS?u!5rt?Lrdci|AY)&Hr z^XN0@m-PKO|GrvnHXF@G!>?SeIW66L`G_xBumZLZ(yWZj+`1#u(sdItVvM!`Y*X44 ztcXyTKrNX?j63XNF_p>26T=3W=Zw>Y}&*hyHt)20w`Ivr86v-sTY#2Nb&WDPK8? zpi(x9+s2v_RRR|oJQB&LGE8IMj)u=z)Gmjp0rqMY&4kW0h{r@JJuNZ!Yb{scaix+e zr&Bfhk+%ANAiQ7;ffkaO1x}#0nRp@>ng{Y58KsELX???Zd83*v<=ENb8EDA!d2c#c^F%(L&JH(?$i26)$)GEu}# zF2a;m&gGG^Ft36zFf5CCabX_&21#BAGgj8-X%tDXvpmehb&WO?k&2Ibg;=DVVjq#< zVO|(Y&%r!*mkVAJWWvlz3dy`M&(f^=MV4tE=BaPtnwWz2coQshuVM}h{B6vW&bjZ) zl!lAx1V6`M>Vp)Z1`M!DnJ!SwU7u#~3Nk+C3EglzHzELH7jpb07XZ;R)D4xKV(M-% zFWxHOLtttW=7r&{D0IoL*TFpIc9v)V1LlPzH8G4W^*FPnEF#CsSeTaso3LZOO)Imd zZ!wQ8k5s*wP2qdk;m0)7K^RP69l%h-r5(Q$a4Z%N+mEa0nQ~g zqhVepyH-v^XdYw}Xwei|nN*qW7Ga(`%B2gLT9JtanFz7qfIQ4phUbM$qyV718k9*@ z^2{;f2Ovf)WPQwY>GoH-nrte?ri*zH!+nmL>2eOQOb}E=URJ-^ldzb_f`CPKES(4Q zGMPd&!Yrd53y6>@2=inSZYUP?melp#G8sIfqMrjyR4cVgMcAT%5ld&hP$<@Gm8xGh zSE`hJ)GCzf^$Kvwm^2~}^Zb(KO0!XG)N1~HqtWSfy6v`KyV2_P+MRaW%SU`^6w@Cv zE88MS=3$=p3%wj+9-`mCJb86>5$Y1?6XOpqgFl;^6Xx}oa|VYIFRz@_TO4_coA|@K zeF$lyK7~v=SBL_AwPG<_Wa7?e>x@nVV8bHA8y_^2;=B%K)L3Me$(3DN@=coQt%)<< zNk!{$g!!-*FD0T?96AxoW@0s-p(YCkwvMuSZ84*w)r9NT0l5TPiWU%%WW;8AK9A4i zvZ(^2-B;mq+6ig91V-;XWlJzTVgYm4UWOa72pbF8Le_ohpfpm>vXg|3q}Wkn4U2~Z zxx}(kyFSgu6}>50Z(|er>_)5uDX#MJc8?b#?tB`L*9(f7l>eJ?k>iF$r*;n^lPjc3 z=?T=`^>|AnyXCMUZ~cLdpR)T+>8uX5W!iKf!fTKX@(X|gtD0n?Bvim=a`{>;2HvL{ zP*%*eDj)_!j%X_^pQW#ioE&~7kBgOwBIW_c>t7-kAVvolDfL^WJP zpQYXzBL{w%;G4}N{S{D}R1uesWlf>R3qh)8%aGq_kZ>T~4vtPPDrTEO>pz(w>nbvs1iY=~$46K}-(#EJkx#JaMRDc;yW9 zfe;rOB49G^2;H-sEv8Ck)^zbGPB$|X_85^Vl;M;$3=;0xUGv|X=5l(UAP+*JTxN;c ztk% z{k~th-I|d}Gs^=oZ)Rt~0O;v*wpPGC)AAH!{^+vYah>e4L0Qh>&BhR4vs}re#Mx58VHcBq zCA2WhM1@O|r+Bo%x*9hrkw@+LSwk$w|Ed+qraNHgFcWixqRCV%QBB60psc!zWfILq zE{hw;CUQK1d~w!u&1RErXN8vCIM8dIa=D_At!ODoH|{{|td2C)XjBuJcxK%}bX9nU zP1)B6`Bb@x0pTcT9c+ zKVRS6jDM~E^!A~vEkC{3YJqIIWWLO+Gf+QWu5kf2WDCVsBF@{vj00trT(?omYiBQp z(*xpFOT`>!g-?i~r*bqAn;CYy_55_VS;)qsmD~o+mdmX=_4BX}cQ%uXQn;A!!tp}3 zRj=eE2k~7zRtd3C4P^0|*mvQqe3!u$rr2aT*=Q7SCUZFL35=9YnrJm&1Zv!kL7%Ve zGv&&NnmxHrr$T>aeh85%=W0^@GRj&;O(ea7(=Is$hLq*~ZXS3jFs3R#56eWrE)OQ= z>e+OieUm&3P_(I0&u0snJfp1SU=ih+2M~GzjLTS|7r?bjzEnH#X$7yTKH~WXmq<;t;+ip2xvKm)9r;;YtZlZx?TUi z-=7_gW@l#n%KhQ|+zj_#KH|%_taR;z5?TU z6I1gBS14Drxt&vB-u#}D!C}l)^UX5$nayJ+algqtcU-3jrE(EVDc9o2xLvCk>*Z{| zQtI*!nq4LIfL(+_K3OPIJmzSbk4Ie0R+$;GME>`{Xg)gtJ7==-u23|U=_DKJcpH>e zS8OJ>Q-yr24Nx+x7t3rhX9|wvq-Eo!Qpau_$fj$xxT(iV4w6TV{>#eyPrE7}PO#4OvhyWy-#cWInhn2^0MzD4js1=(WuCG>3DQaP+ zMGrAuDQ?7W71OZOIBU1OcFNt*ttu9>{M7cGkQue_AxKR1{A3I^TS_h2!yy~;*cQ=S zpq$;Fy3>~F0MWoQc&(oYqzhFh_fnyhsWtR#DBcy9%bg@|E@HVJl+_D^7N*INyr;L9>PYj_PCDVp1*>n;#9zg<-kIMBHiB z3zCHRE*`6dSf~c@0*lC!wW0D|2G>ECR5j%|EG_|Qe62F;sC+iopc=18J&yXPLZJqP zGr{-!NVv$vfWa4vQ|+Oq*pEXdX;XeI4I|fg;X(L!B@(c>f!~(ehSTCHNfgbNHa3e{qbSr#y3IxFSdwOpnGU@|qJKaFy~RcG~K=h$2+S1*?| zP4c`^jyK_Btwb!A3!OT@^btP_dHjZa(|X3rbm_JpA6QtXmu_pOBbg^520_&7@p7qM zD?kl1R}*;^OXxRlP7L@4_O$p(7wg%2lkKxqyiqO4d$%T0EV9O8x6%tGR+{T?P0Qt0 zv)S^qn$3Q%*Y9>^N(#K?5(4F|Q571(uD)Nk3dpTb)UDy5OFdSAunRL}I5^#2=yYbL z2UCNAe?L9FxUjG|KkwI`9xX4=bMNINzGBD9);_4x3w!3kyyb%xgTt7s7o95hnbXUn4gPRP$C>F$wS=Wq8wq6GYc$JE zrkPr0P%iNzj2HE31W=M+jdjJlWnhYRN;%K}H>?-d{4c4oVtyKje?FfW2u0J`e!7)O z^h(i$=;9@OFI_6edwLa|#1YYUOR3xKvfNPUS>%&t<9RC-*-Wq1N=)Q7v|)77zU3;Z zZ@sROv#a^pf)RtWu~BW}SAhmTTBF=7 zDOS^p-jvKfUm=Tet;d1fB|DAt(}V&mUoW`-zjP_@{(cg+t%vMF?;b*_TFVY>0YInh&M|cG+QqB+SD(> zI#|T7F_ssmtEHK0qg*NW+Rc(AA+C$dJ`>eIA=}VT7uXC`zRO_V>EzRmbhpcj5s+qe zT-DEH^6?hD$IYYm^u#m|zKRw-~KPCnY9+$3xyiryVs8DW~8`a^kHmH=Rt3}@L zGKb>_7Ama@D#Nm%kuR4z9cI^D8%CFzP_TneM;Kl%)e(Fh@q_8C8S@z^YUZ;bRjFF6 zmr#xBRHsEV1?&1&3ax6TSOsLAs#8rkwQ8|Zkp@*u{Z>MJ=(S6B8g*)tqOx4NK{vak zV0Ow3I`bA@(h!3n8qGwt(rc8UhMB8fW|N_kXAR9ue0-67PE?dLbx9rBc~({F43t-0aL~dfLCAo!z=+%hu&(zw+Gt%E~hLUcTO<^sQ*^gIcZK zp61pa5nh?ZuN-xP=v#H}ZByNLw>=`yBhV*?VcWq~8m(gK;1Za(a#78&0Lr&Y-8%1F z3i1^7%G3)omr`~PG(|h=tz@BI8n)WiHq%VAHeD&}l`20{#gr=LOr=Wk#DL9AmWG*X zp;aibGD((9DPAhf77Cf=VscteM>ao|>130`axAHS*nJsf%GBhA4Xd_lBhEXo@?bFF z9i_t1BA@KK)v_K@sV(FySM6G_RO-R#a#@(DjZ{LZ!e(H#P;n<%4bH|^y=8w5sb54^ zunjl1s;#Qtx4AKaFP5m6oKgu=N-4lHp#m*@v{toUQDibDy0`|GWJ3_Uy-l3<6Wpf z767R^?qM0c<_8+(Y^BBKG&|J!R)>oU=wEM4rPFoLYzE5OmAQVSf`?X0W^jR;)piq* z%*mD3PmwFBayhxOJU7>?Zkrv}O36gKvO#lMzRIvi{Yt$g7V&#z3fC+1^;T6m?TSi> z>*BJ{L^V)i!N*S*I4j>}a2wYs+mhSH0=klA7q;H4Rm#Og2i{lt2Oeh!JOLnvx0$oE z4*fA7){8A%I<|3IC~LD?DOJ0bR()osFgZo#&l; zvfHSaotiYLUY=?vT~1ZNxklOUCghdn(oJ7B)|mmOdrMQYjf_@Rl~Svntk;IEGSpz} z-3s!;KW5&lC78YWl`q{_a#g3$?$+v^OcD(4;D}n2s8+i$%o+wswbt#l+AVBTp0=XMXm2Pitc6#KNtX5lq9Bzpl`tx(s)MM?%Oo|y|f6Q23 z7)~uM&MnN%`85|8cWmFjb7jS^ytsVcu9Y1tD_(KLR~=dj+X~HQuQ$uBJ0krCh8yLm z6Wr8xlY86LpgZW!ljjlW6VvquS8KIPm5ca5v)Of71I$Ym+m(J3`z%(_N#5%FLF2FF z7aPqQLT$EFrDl1i)2(-zxShsqt*Teol|mL%s#UVJdNNr_PT@G$*jPjR`K2O@T>kI- zM5VNVn<%^|Gsa~C$VsXa?`DRAmdX2Zn>^JnuJC{Z_NuX|&Ov zW_8p{i4QaM(IWQQ4JfhT^%V)jizx++yJW0&d<))G$J~sm-=Af z*3!ac>z2jk#YMm7mMy!_J8$={U4G@QD|`3sI)B$Lue{!(%vjml3XU@zE^_ORh~E=x z6JI&%1kraL?rl?3gXzH%c^-j2F#~UKjdr(Ey=(`Vci;gX1E5z1jZueRX;mAt8vpww z4eq!uZSQoMF&o`srrND94X4}Fom!*c-r_VH>`OP$*H*dJDDXy+CCLJ>Xz(J7PHj-F zl^GD<^++|U+i|@1)UsP-fW^vkVWyN_Y$j}1ygpehG#lwf-mT?wg?2Ah$d#K53kxha z6qabP)e`g%halnfbYr?tXtq&rh1s%F2A0K*iFlOmhK_6I{oT&Ba&`5T=bu2x23;xXFXrBOX+%Tb2I+6x?>+9 zyIrpgSeaIqvssp|ts!q++pTtGIKxG&$1euD%X!{hq-$HDY`V2$zSruohmk3^ijBTA z&5PGYnLV*Ga8qv4ME1a*9Xn>*7i?eZG&1Sw)&|X%%S*F8akL>O)ynAud$)I6JGw)s z(^#6FZdp0Nd2w1L#6mSt$7kyIdrqT_oNQg?HfzN}aef|erQRx)tHo}=&5n6`rqxBQ zSlyi!TCE}Q!vw#wGDUv_eh7g}G-?co-66_4psF*=8E>6`ztUgo?TEq6J zyD~RTGYz@EVBoaSw$XJ)-BC9)>UEpLwqmEbJe?6AmS$Tlx_gZgo-sZnS*~KS7KRX~ z)`9%xx!uds>H@@cT8-g!rrTZ`HlYSgm_=Sr8|Sg&w9^eatD?dwwWq4nqfU3GkeL}Y zM>HpsU}ZFdU;awcY0r*^)5D?M2zg^b)tsL<8m(;Iy0T@9Oi7_wbXrZ;RMx0kqq!a1 zw`}vbo(Bud3nM?w@7%Fv+mo~K5`ZZxDO2nWXb!ZbGYNWx@R!#jyle8lxq%KE3vPRD;N2pV!1z+VcWN}ZQHi0I~8p23i)KyquDtHXHLl1>GfR!EVDFg zx3TZ6UJntRt~SV;-R7XJ=)OMaR!4(Tx5F=i+=xZkIO>gh?wec-5=*^icIeDGEml{p zJkxP@wx_tnG1pZbRutWpoqZcyo$hVKouf|ERo!f}>hL>cFYFvCcAD<*C#_7qq;`1a z9zu6G)0lUnnT}JmBAK6>nx5Xf&*6tsEk$pEvbiz%M_?ZzzeleOSe4dycb%U*nV&#=39INKYvw=d6iB?s|cJocHW23j~j z)6-KuW=L{f2G4an&B~~IE81kLWYo7n|;Puo6Ay>q8C+v@Ris^;$9bM!ZZ z3DdP|VM>%8e5{obBoyW6Ss+EcYYm^-gGiq(2^w$bZs-O^ch z8cV2Bx6fb%Gti$X-^Rsr(kexmMoWUaImR3;C0ZBH|(#>cA&;_I!oR8`EI}2Z8UoQtb;e%fQnkT+M8?4FAau^<=n!kv)FB5 zkC;TSw*;rGVUYCt^2tUc0cwMJVaxK;7JoZ=aq;}~cAdX-r%XwqT<&!{7@1plam(J_ zJJ0vaj<)XDwmwyF*}Hcq^|~4nozhEhY02+#`;LSA_gt`Nk6&~D{>v`Cg)Cr=W*FK?bYU|RrrG4ai1p34* zd4n5_=AF*9N5H(JH_R9Sy|vI=nSn;92eK6X(e=3Fx_)qGG+Z2XXBP|1Y3DC4Pc4ty z-TCRg!+wu_>0Yzi8#ac$%5W;5@8)++4cINN*N`bdjQ`v-yZ2zFl5F7D0c+DLj& zb!)wNUO#QSDz>ZVRR_J?c>rapRGps9RZGpmdFP$S7L3Afe$O))$g&p~mlb-;^MwA? zlsnMvFuK>%TP|&+5_*Fv0`uogPm#gdxHwuIlIO+Qp&J*c7N^`dxfUc=rrP;Y7lA=a zw}d9;RbX*yg=2Z3II1aXN!)fE6paJM3YVTy9w%!&E(=iy)xkUoXtJO;$To8F3#X3 z52jm-Te%p__PR5(dn)Bw&}<)+Ee{Uum>Z7Tjb5QPsCDP3w#?5CdbrZ;r*I64{eJQ2 zrH2n~pSt4U`7^yjetED#v*q&c?I6x@)D?@`&HT~J4$ck_j~1t9db_tT4`d_s z*Y<$}OGtQuEve4pU|V+)d84cgQy}pQ`|o72JKdfd&JULd3&SPKgI@@JrhndYr#a8_ncl)+X=>Z( zz>Y06)0OMnndxpB&GcvbBc5*?6}HXJ_7|s#Q#1WNTMFXC?(G9Rjc%Lm;zcRbrF#lr zQgNo=sqNWui3N!&#Eb^L#pS|i`uxQ{)Uf}yGTgF-)z*-0`ssWZXO;PD*c>*dmfKra zW=7kpg{=$yZ9@lp#3ZJsR$!RFWjr;#ecR%e#YH=bI-}9f?JGNEEehMV?Z05(fxUZW zN(!|a_B7S+Tca9m+i~dN-u-ULsi}osdv>i))jJO#+P8o2-l0ZBr&O9+S@C<^z31YK z4jnmk$gg?PMfW>??0!d&`nB(M>HV)fcHg5%z4C}}YPXfJtuQ~oW5+>m-4WrHHMmg@ zZ(A7J;+A>tZBx5ecCB1Uo=2ch%!)U-nZ+%=!3~##d4w_VsGESjeI8GARX5{fkLLU_ zz7aTS?!{GvZzDI%Q}__<_P~+A6@jCH2L(Ekj~)MI^BK*b@cV#9>rm^` z*8N&nwjR)WVC%`PceFm(`fTgg)(=`gZQbP*aM7E*7aur_&MuJi2ImRRvz@RTcV{ab2W$a_)X8fx0M~|Ow-rW2#ALJ~v$T-rv+@s||t(#ka+xl?p3$3rT ze%$(*lfx}!_sY_;)6()7=jOYi~*Jt_OPnpiu}Os-va*FWC%fxF&**Q;*-*6mNc<6C!p(Hs-bqZaZ&n{A;7HncIGI+t1JZ-R*Dtd7|JURsU->-2 z7ef`?^nb6p^=^xtZ=dQv?zoQcd)^p$XyCDd#|0i1c=-79$6qx5!toc6|MB=s$6q%7 z^07CK|H=3(#$Pr5>hV7xf6e$`j=yRA#nzgxG?T%oTEYCRE!q~{Bw&KxoqyhxdDf*{ zbIgqM_3}x+XdcFHqkN^7FVyPGv?k5hXtR8UHqX~*i~8!UshFy%VebvTEZf2++I&g2 z%NJz(X24ftr}$dz3}1| z_whB?{pNr<$k$sB^VQZPXxhE_O6w(jo%J%l%6d6pW4#YwVLiszSMSSLS5KHLk--D_ z!s-M0vg(8QqUtH=`E$PM`C9XOzR3A@zNz^>zMuIINc#QeANfA!hs+20Cgw-@3g*9n zPXEeRFF(aMFF(!qEkDDzEI-eeEWd;dp2K%epUT%vZ$u;ho^O>tgD<4M!2Cgg?|_jO?>(Eg@Hc{yeja@u@47cZ~oA{H1KM^!}&SBI{IYutiWr{wShMTUct9d zU&i-apTt*4U(L5bujk9EkI}bR4PRvC3$33GyqT|LJ~8kpzWw@0^Mt@#0&hbDUd%UO zAI#TXU&Z%FU&+@;U&mKR-^|xW-)P>(S4E|}f6F&R-x)~o9oWa2KLUHM4qRhi5_oXn z+Q7+udrurccJw}1Tz+qy;*0Nf(UA+;5IDe;w0F;LobjDIwy$hkn4g=S8t@W|Js|!8 zf&Rk|{qK@|%Ow~vvxmBePdclEldI!{?vW#Ny6>Li!KqCTPOdsUI(&ASRY&zsk#$zd zeUyCgIVJbGCHJkD45Xd&&G~b)&Y`Ze`iX;G=UsvOUvYx#=N{}{>8yUwUSDdj#|QQ% z!A-kO4d+n#x`WPY;G}bC_3-1aJALTn!MWMMEwSi9{l`iD+kvwHazCk`FtjsKPQnK@wFTAe(w8nSIU4_#%<=8v3P zWd*5Z$o1UEVo=o=BcN%4i#C0~UGJkq3GmMQ9LSMVB zvHa1y_L-}=S-ts+6YjlZuByG=>{}RJxf(pFoDcXph2zS(+0R+8ezFT^4|NZn^!^@q zU3vB9tDL!6By0crtK)t0oz=0y$*ZouPUlnCp6(umLU?J8omky>kc)k%JZ2ucWpRP> zr%pn|L&b(GPOL6;Z&=ND_q*KY0gdzzJ@n`aTg82PXf=Oe)ttQAtF^jth`OlAq0)Hqg)2N25O(CHJ`Jb1NrvUUyn`C#Wnt-ZSMO4xU0 z_r$eVN=n`I>hx`NM?iqK7POsH+Aj>*tD%0_IT5UlT`6htz&T9P-G4qA>D5X1RubKR zzH=f_Gk!68@k;3Gtai8=>mN8mWzJMRaHQ5oxo!9#hE#J2U>K|6^)Zbzh>49cx&7SZ z(A?4*(6n>t+Jl=0cvhp_*a3R2-TgR&;)TZyh7guGkBEl3*&x>r+2Pe7blOLfV%b?W zmpdoA*LJV$qC@*GKOy0W*H*q4AMIXz#r;oMX?t37?5sOCf5&>BceNTkfC3(7eMyi^ z?fr%Je*N~yIoTKa+0N;3_u`|c)pOTt&^V_rS~aNbKFoDTcB|WA;4nzpJ$$O`q@Ba3 zPrYmH=BrNMvTxt%8xEbkZWnfNx_i+zr@Kc_oR2WA;Xk={le*8Eivt%Q+dnr8`0T%> z8+g_gx9kf%>*)PYyqo`++IiNo6So8d`>&)VzyFyNZ-g?Nj*R-xZGTplR)HN-PyLIIi)2$Q7XIl3=eogE7#{F0dHywZS%oC0;+!T1wP0zpSQ#Y;MG`@IKAUl&jo|uUrpO_gxo|;J> zkIh7nhh`>^2WHIi$V~Y7*i4W)@LhrbPurWoM^UAF!*!~9U#s`M)1BVClXTLZJt1jA z_5~8i4hbNuh{zfN5s+1uK?adgbkt!S2OTdm;(~L%%Ih#*#u4;7jCvhm7)3+`L`1}S zC4B!=odA08-1qmrzwhg$tE#K3YdPmR&+>nk!|XE?G1*VHHtm;Q8{4#3);fMKxp!}1 z99^c`diP51-OF_Jj_>|0AzOOZ{^Tc2m8)s5Yh3r<$6Y;5dskwEasAfJRQ1F#*ZuHo z!GeW!lVBIYCbJ;@2}>qMzai;^3Ej`oW66RAR)$qGYW4+&$6L)&8-l?s@(kvv$NO5{ zwXd-slh5G&|M#mG7np?iXy{k1Sa(3zO20a>>V;N9Ew&cuU+vJ!Zhob|2gHw^&3LD- zf0;h#oq`_R3T=skV)NM-U?Hu>mh{?p!n+pw+(`Vfyjwn1zF7XG{E+;zqF?D$o>whYy`xU3 z`_=2z7d2r`O0!V&mgbE1MLxyvN5b76eOUjT{wVTadW|yUT;m%ik;!kWHcd6{GQDVe z&s<^NVZLk`ZP{x%Z=G&^#(Lc5x2?48Mu2U%{h-6{nD2Pf8Ft>{eA0CSHrh&$-_!5e z?K$98!D{Ty)MOTB-kZ5S^NGy&d>&t|{~7=5{)>TI0viL*1zruj8MqXb1)ahE;Jd+7 zA#3Qv(529&a5TInd?qq0@`OR?#Ml!dnr$m=gHfW_hjBHc}MfkBt(h5Nlo&Z`Gpa(5zY~b z5w#=Ut(aM{ykc9$?uu6`-mN%Q@qHy<8LrH)EU$c`@|DVWDob+4HNByH( zQmwBJSC?0}R!^;-TYaedMD^twMUA_rxTd+Lzh+j=Gd17W>T83wrM07Lr`9g5U03@^ z?S;BjU3cA_x;1qV);(AEX5Ghim+KYv?)t*|#`;P13+p%5KibgS=x^N8WNyl8s%V&HCnWb9r-X^DWKGnzuI(woGkV*0R0jnU(`B@3ov6&5SmVj*hMvJ%9AN z(K|=)8U6a`i(~9#Qe)c3EFH6R%!jS2R&eIlxvlG3A8CED^_|w!t%Gfzwl!^s#%7Iu zbL^FI&$m~!k8YpPKC69k`@QWu+MjHHzWreP(T-IeCp-Sp$#;f3Q=Q$Nb34~{?&{p% zd8G4X7u#j+%IT`^>g}4_wXW-tuIIWAbsg`z)UD`V*L|`_($n4ZLC@KqOFe_Vy}jqh zXO7PqzkK}u@fRmdm@sp~8xxN7<@c5M)%UgcP3W82H@k0P-?F|neVhBX_dU}0MBkpi z{e7?Zz18<#--*66eV6(M`(^$5erJEMKexZMzq)^Pe|P^a{j>X5^*_`9LI3&w%l(5B zB@;Ch%@f@dgA;Qm7EY{~SUYj_#LkKR6Q@s{J8|*El@m8kyfSI~qzjWrPu_Ej=9cNV zd^n|kO6!zEQ$16cPSa1Tn6_tnV*29g7iKJ-abl)wX7SA3x0-Klz4gMZ(X*bOb^5lM zw_TaN@^`;a8Y>C zqXYcF#yeGa&cE}+#pR24FTS++`z5j^^-Gp7*|Ox(C3}|qZpj-<-d%Eh$(bdWmui+~ zE-hZ#y!4i(14}nAeSGOFOW#|1@h;6>(YtEzntIpDyUr|=Eb}ZYUN(B!)MZPTUAcSt z-P`ZpefNR8-&?+Ng>yyziux6kRt&7zxMIhOT`TsiIJn}2mANaIuiUZnnR{m5v+SO2 z_w2ss)qCE(=j#C<$9bEO{s`IO5t20*@uWnvFef7%K53b&` z`q1i+S6^A9TC;hrVy$Ow;o7%mU$uVc`t$dS?zP^#eM9|*sT-DWtlq?IGH;4* zs@l}OY0joqn=Wh~*nILQE4MiBn|j~i)|FfLZoTx=9Y4Lat##WI_gCHj=yv_~dmo5C zFz~=zJGyrq_*vD@);y?raMwfThsqzC_0TIj*_}B%7w5p&;Ri#`{?$^M30SqZ02JtAKUTR>yN$p*t?H?_}G=l zs~>NE{M0Yz|KinO9R0;dyP~@iyGnOe?V7r4_O6AymhJj@*O^@xf9d(2t@w5OuP6Na{O(D+_wGKp`>m%mPc46H&r>fx_0dx& zpE~=r=4tcO_ddP#=>xxEf0OvloZr0pOyZf1&z$;~ssD2HU(W1d_blGCdC#dm=l5KG zR`aa+*=>78dsTZqdkgng?49#l{cl(O_WW~O_SyHX*?0c=sn1_|Vde`Ty*T^D!IwNQ z)xI?F((e7{{qtWo|8Duew!Xr=GX0f9|5pBQ&%EkM!U2a``WV?@8X%yk~yT{od~P_P)3Oedc}H`~3U$@3+3+{r;r)XTCr8{l)K}eE;kR zsSoNuc=11T|8x0=<`1|0Rrc5Vzy9v8C;oc+qt1`|Kbrp0rH{TpCOS6t*wN$p#}^)d z?r;3xtbd#OxAP}NCyXcjz~Dxo=sz*%#JwjTJn_tl11FB2IQ@6_@1DQs|GoL|lm5Q! z@7w(f_0eecurr(~x*r;1NCp6Wd{`_%GNTTksewdd6DP8~UQ^3?aAnLo?< ztoF0+&t`tM^s~*MJ^I<+&kla};b#|5t4{k*m!BScde-Tsr#GK|^z_rG51jts^u^Cr zp9eorect`~+|O5izU}iTK7aA^L!W>6`Kiw@o{^n#p2^!sg%)v7s zo;m-8~pKm?Kt<$x!2EqaPIuM!SkB);qz7J`_C^s|KR!O&%bm2?3e79<}b6p ztopM1%Q;^z|8mQhPki~iFOPnC>dV0k#tT^&sxM5qF#E#t3mY$NyRiSl$**Kz^?tSR zt9!rN_0|5b-uddpR~Ij`7mXJ^7bjeN@Z!mf|M;5!I_K-=uW$K!`PbXOe){X*ef`!Y z$)(h#&6gg(^!%lFE}i{``NsTB^qcB$dcT?b&8lyaQiai!|Y z*ef%yEW5Jp%I+(#UO9T@dPS`ND^DV%wPe+Z4&0^ zRPv-;)u;A490*%;c*%F|8>*`}w7+t7iN)`?z$r-4@LKW>$!D(sw*-!g+f)FtV;IHr z@Ldo&(e)MJe&V<(8ScjctaEFs6&dV$kwGDIyG$aZ-0aN2%z+jgLqsC0c#MQd16lG08 zQ9A~THES=7ntDyFDI&?sRH$djF*9>vFfs!XUtT7DERi^u;ExL{9iFeG56|D1i1X+0 z@L1|f;>mM~yxhLNSl>;r0Q%nKE65?CA~#7U3Jdac*ia5vkYB+T6(mh=Vv*($U#7%l zbh8#WNA4^e(Gnbqyy^1HtfQ*Y{h`>&nYhqV{$lnWa!y4T^+GcBl7g@uQwTUw^YhSuDN-B^FH4?D5GkdosI zr3b%|(!E%V>3JHlLFiuns>jiJlDKt+l|>@ds%Jrm1>sfCW|GXDRZfqc*zJ!yi8DWM z%^d*}h^@)cTOG*o;G?~`+Mno zRAJ#LyxB2Vo7fkg{?T5_H#jEi+PCB~`v>?Q@?oQXlya`i-;vL*&3z!3eIQ8I;6Fg7 zXONnVjtmxH#fj8ia#j5zH<|7xQG2Pq(atID4m+zrHsMCgPK!vXB@ZabItAGwB5U!_ zKESe_ED^IcEE_D2n?<&=xf8v_>&*$tIgu_p7bfpqNmapI-j-`)ZMMW*-N>N1m~+Z= zxKLaijjAdZI`y%In6yVKjQVqx=kz6UO9=)vI3sOiv^C{v*g-#FMG5|<*D&o94UvMj zeZi0h)Sbf$^qxZm&gW*4pUFxs6{Ltu6c*tKbP0zT^a^}Wdx(4@MoL*w-K92pMu!u1 z*(d}NvDibStNi(1Ew)W}DtXawT}75H?qI$OF~~7QYVqAL+73%N-<4UE6V&bYjLsSSi`V;mM{Ry?ihPk-=C)U42ZJ=>mr!2IJP2MZXN)hA zIjB^K3BMs0(wrP@98{F%;}0t2S#kw?C6PC)u<+Jo9)8<=t%g`R9q^O!FEgrZr(e`C zEoK!_(y@VZ8BDXBjwG=a3l97CVMGaB$w-f5i2`$sGjpY=L5qnhL`*yxPZIE$_|@Zy z!<4BA6x|mypq0Qc(2PYE4cS#uTvO4|P*GD{L1HUE?hj7BeBXVSCkOjKru0S_@wFP} zKZJYgOqHmtIz7{@vf_FrDiT!@n~JdXc39jU7T6zQOIX&<5|M&a{!ceU?*@Gyiy88R zl&#Tr30080{`u_?#s?4dB=DUqra9%$^kv03H>X1O%nBXRp~6E*!f`p-x)`68C8ha7 znNlYH7L_!VtsYJYZSjZXG5q%>-bkQj_+wb3Pe5dXWTp2|K`Oyc1O^&%9#zt;*bwUqjE*Xo$j08I@bmVOZmHBg z(yk52*>+YgVs#O#IA3C|u-Pgsl6s$*FtH#XhYF=l|QCMUpGb5fQ#xSL2e$D<@l zLd%+C*2VcEmVlO$R}*P^N*?LEnmE#jCqN9X2|^JTEp<~y_F_Rs;(5F9(uYHFoHtABL0jKHlC3AnCvArP^3@Z znxnQVh4Wbn$NUFr2RBmhV>zs#^u%!n18%|k^2?;XE&V(t&~f$x1B0AMDVTYfs8c0h z#8EChJRFK{(q;AzD=|64stf4v+No=GB+O}Xk=&G%MVayzR;B=g#}c-OV~n^u!8Gv< z(Fhs_iO1K+*57?FFBd?i#b-zswq9&~nL9-9hh_4weMOdncN!qG7NBvqUkt1i3{gs+X)MoV#HTNqixnD}mQX-a;r#P~cBXZ8hvBoKi zh zL{_XKtk;JtVp$`?`m-_}VvU@bc5G-(#!uhW9tgB=nm)W9JEzL&teP`+Xf5y|EX>g7 zRLsbfZ;^s*P!Q>4ObdvHknu7WMQJrM)k?U2Sq7!8#3D3bGH&}rpS4oxo4zCzH6Egn z=_7rH3a%)r^XV`uY7Gb^S5|fEvTbZk=?R1k5LMZFkA_||3yXPZUl+49rP}Tyi(G46 z>_aA^*njN`752g!!d^~QseEvZr)1=5DajX+fC!qUQN+$7#4-g_^ocW6XjWjxJkRoO z)ihdXVg|#ab)g^8_Ptqa8gAt@M=?;n7{WmWEzt{+Axg^wX;xWBTc6Xv3(P?e#ScSp{*6p3)3qqM(^sc&0G3BGsB7Af^Bj z2@>{U2YJjwHVQQJn4WCXle_g~qh_au-7F(wF)@h94dEz%>8WH@K|7~?bq zn)}35HI%5+kCTLsU&5bDP+b_Y@oDKOXn{8g#lAiwFiEKX*R{Z4j1&m!AQgC&dkRl3 zAtX`M*B_`wVrSBsEUB!qo6Adcg7&yB(_ZHr-JVSr>BrYky2Grm)fg*lYHAx&C4~h> zZKc(EOIyhp`rIt^3x;e5{b*pHeDE@(hq%G8gSa`7+KLUm2fCU*42G}EMbGNO=uI8f z?l`)|@%Wa@#kZVQjbG7&*%Usq9()w1!dQ4hOv@NC5vL61`VC^TSWIpclL=zdC?@4% z5)%^_zC`_pTN$wtN+++LEY&J16|CY}8If5Svy?GSL&-7~FVJq~F=*Db1u^o#-p?i0 z^OO&e;TDX|i^V|9Hz{@0l~E)R_7LMN(rGwpR9{?Pr0cG(9`pYD+EB=^K3%bK01l)se9ot-XDqa?nLWpot?Bca`*4p|pHKN40F=Miu z(6^Pi_m%8^#JEJ5)hYKt=DJL_%uJ$Y;xLn^c(RixR-VXtvQ16YRQV``4jEJwDp;|? zq+sutQ)O`-OF~m150o)+#uNrV2-XmFf&quHf_11mK*#HrdG14bH-H$#?>^{(Y}MG1~~wK6%$D5VZkvn z=@g}2rc+9%DMa9ym6gI^L@z*d01r%7h>Ls$UK4I}0jsm4LaP2OX|a|jgQDC!<}bLl zH?w(EX#G>K_EAxYwp|W>k%6m>U|viue>k6P%qI`zk#%`wXBOEJB?Ce7h>vXak!3zo z;3h#g5xY%pw$w^cK*P!^tt4VBF|rCHv1^D@LrT;nswRbU;+GS%jEKNqSYikyIgz;# zH}9Dusmz&THixJ16^bMYaE7EPRx-mOj?JLtg)V?S4MUUa-Zxb5VWv4eKz^_$&;uy9 zp+raZ?n3B3RQslKi=)P;pl(wOh+3RODz}Cui%Npg3Rk?`6R60tLRZdpW*57hMOpSH zozrJ<1+zomyayFVlzj7rT}r!2!#YbR`ZBu8<8^VXBVHA%m>h8RlxL5O8Vr%t;6!_N z$fI%87Z#2zBQJXLkX-E=nLi>fGx-G`RdQ`mkmnZ2^WUcI+e2g^v@XOx;3Ic=$p#Mz znn|H)z{F}P4fh+EmK|DR(h`xDs66-t6*jCQ3Y30jJ!ZYzMMMI@$Ld6u+%e_+ zFu6Bxxub?79eR~bbA#F`{!?=865Qo>wh%FH1elc$^uHJT9ncHuek3)0LvbNtKcjk) z7*jGuy^-i*G`XE1zHJPmKd&Ngt~ljfDcUMx=Zna8F?kqfH7Ayd7^zr7qpL)WEuMs? z4PDy`Sw=@YRUn{2^ce~Q7AZA5vIEzy1&Fj_|HvIXMuHc`m?xq0?#0NFGOm=GmB=}% zjG50#=ZmPKc${)YdM0R>UX$<_Bi)0$h4@oD__QOHUGNx-^lN82tCR(8(72V(<0uS6QCU=X8 zXD&)O&9R6?C=fX>5{c(pvK9q-j#(&@>eGz<28NdezLTKbgm%7RSY8YLE;2c(nLDJc z+>GySal~|)&QvHn6-Ih%z-uC-IRg>_4OyrRmWKS;C3;Pj!D5dUyM0CRSiI0DR*4N3 zUqMzd63>WaUwz?*IxX=28SHm>o=W($f0dfOXfzpUB$5g;rId^pHvEPl)rP8q5tTO5Xa*xwCiOR#-6YzTOR6n)Mo|<^n4kJ+`5X z(h~F-@(JXQfw7a?l-{wSxsUq@glgp!zb_SE!M1rk|lgVSRcZjx_cqi1=hh67q%Qe@j^Gk{Bh;V#Wv~2j${&#goKy z#he)B2Z+WYS2UnrkcI&m%oteM7GjAEBY^%T=igw9(A#w-w)lE0w6oYjGH-t0{MdTU z!GrjyIVe7OP;+p-_@?iMc5Bk#3;G+hwwqtX%~=48hkQ_zd|;?RG^EKKLSk0b2eI^G z(!LKBysXQdlO4C_*m6uS8FSbdnjYHy%I(?RSy|oLx4*Lcp{D8Mc6WF02CD-XYQOfs z$uag7*sNAy;>%O*+ahFMgoq=i2)jCPe}G->yWhv&=_9|&AgeOAWv~k}h$(}JGRQIu zx!po~EM%4eQi=GvT2xi94dpTF>UgeS1y1GU8?$7xMkh2dDwV0)PsMUt-Mb+x(qu2N ziDV*8=Mt$7FfTO^sWrnMh7>M)G=* zzqP)(Gm=E1#wP8HuTEaq9lUe2r79b*c**<7P5`^7{6m zo_$=V2)3`E+&Ht!&9YZdvaEaLOiG6Y@ktDM7`#FW+yhe+ahyUemRB<>Sp(+a71a|~ zUXK{|AqATP4j?12Q7UoacLEedt(v5%ofI8Abm$!WLd*M2-?a>#cN5MlXCf&~ZOH+i ztY#GStPDLXJ*NQJ-Z^eh+Vhp`qE&^4U(b8LJ53VmJ8mS}k(!`$m= z%_^KQDnQ2Hvau^<l6~cB>zk z5~)gDuT^9y07NO^_yhcuW_4h5{e86E`sk3x0w@%PP3T`zmn7SIdr#t@ec@^osTzEh zePQsg*ZZ2;gKKdVCu6HQP9%nR3S1(M#enb(I8S?TFa0U{P>gX|j^hnXFl7?6CN{uw zx@yLR$#qzv?J(Lf(kiJrERbzr*nAw~A-I`xLu6ELu-56;l{idZtEzW@PD4J5l-8*& z3P;=zZ7)rO-{CrTrYjW(fnai}W`!7~hQ(skm1?GjxftrO)5KTn9gLkd@nW&w!0PF| zzm)k`>cQ)iNo!^DI(-W0oWTBN0!jyyO5osJNN6N*aB{+2R9fb6*H)M7rn(c%8(1b_4?d>hj>+MK3;C{vM%BrB0Rb0zRE;6>}9F$#X+(&Ku}>Kz&_w5 zL2sd#UF0EmI>`eL5_A+g*itz9*ocKJF_U&3snL-Jb&r~DkoHK~u^g%9h_Uu@G&TNWCn`Ty4&TNcC8fW5psVqDQolFa4 zxieKb%SL)^=2Vh;qNs7&29FUP{04%iMJ)_zd+n(FjuGC>imrlaZ?8YID2N>PgxhXr zf1|S%w3n546j%qZkydSHVK`jm)o{ao)GYLo6PaPVQwtZz$-_A$l2ekyZjX{+v@psJ zM94sZZ1>*L4ae;p4BMU2twf4b#KHGA%?d396XwhD z)WQQAaoVdLVN?&XH9DQF1M@D)0*#agsPmuF0K9_NWzsqDKt6UiPrXJrT4b0apkq@L z1FVh=k;V`}1Iieg-(K!5imNbrh`Lwl_4_q^rq0&g9js|I`0~;;V$C00THj+a){N^8 zyPKP8tkAtLlJ3fuP(g-3EN~M*o-e_8&STc3Iv$9Vb#d4m#2h9CezG>>feiK`Gm&e_ z5+zY7NlZbO%E?1AvQb82_?Hrulq{7HlZmShCUbI}wd#Z{X7lRfOk++=Znia=^l4p+ z4gewQgg!ao2jIbu8LVo-QoYyMjhbB4T$X>muQ5)ECcl z4>6uCGXEo#iG@@cB7_Fqb*1}u~Vz{$17u@+JX$T zz8*jvUIcyzhCBkkFJ(L_E#ayqB9UCiO6sMo2n-egt>C6Qa`gy0%_Qhp1>}*Py*r_s zUVV_A*+S1T8twYNAUjG@{xv$XKu4(LWH-Y^Ar5jE;Z)UHgQS|%t3|B5ks2wWk2K33 zW)9RY0cTEQ4s=68_{o!dbIL2Sd#7sW+)4g67#TCBt%bZl=v{>12zp&==O4p$&G1u4 z%$PcWRO?_{D2w606G9?NKpYOKnW=02F->Z!BZFk4uC7E$=KIyM~$FnmmL+w z?6$Bk+=9aLsFX{STcH#7MQ*BYnWGZ7As0H`EIM?Mm?W4k;@X5TN>r zghiM|T5Aci!_7u^tKHsAtqPMENxCg1!SPxYWm2m>nLh3KV2NeC1kGnz#M=wN3&gydLMEFj%j8MM%KWxGL$PYqCy~RG{`U= zAIuD)Dbo5H9D>xUyP-ATeGoIP0S^&C6D;Tk%!8sNLLt&zDy^n*$uoEMK5B|*hqXOQ zmk$&Y%ycQbG~ujl)8iA!OM`>2W>20xA?&VeZ1MYB8tdGl-ied4h=8X;gpmVy9wRd; zRe%AbF$%gqBgTXX&6w;|Ez`m=B$Y{_{R3C6mP*Yg#>nd6`@wv=tmL{qgdo4lq%csg z9_fP#1gmI0Wwf*xWod>BLWce$P&R=lp@bpU!CY%{Bg5AlSh=_!kOr7W z+Oad#sKV$1?cf#wEElAmJY=1_v0zWRCd z8t#Lk_PC3<20w9;NkZFQ`~F%ZS#a%s*u2{3IRuf27{tutS@UvfXNbt1gBxydz&$$I zTIOv|f#ZDe4v=)j0*6{02wAoL!FtU02VxcC7O;hOwn#%g1F?HK#bbf3xDd-ku6+al zy&alklxa)lDRg!nt5Dn3tXUis7ea{_6SJ>Pn&lp+Wf*NN*ljd&K5w^Fp>)~15L}X0 z8wJTJcxY*uCM4$&SZ$!#j~UbDUJp=9CM-h%2Z*x*7*PP`X3lF37L(<(P@)T-Do(43UUa&f<7(f&?m#>S)8%vQ_tMly$~i zX2cru-Aef=OrZw)q4&S;dVA-|ZDgUGbjYX4*=eZO!gh*?Tix~=Pk4`XoX1Se84TOy zb`Z6qi#I?bN(5$p9r;X~Qp27OBG5)Umb6HR_=B{UBaMQRT$k4tbZAOSm3B?1vpz6; zvMIYZ*W%^LtGqF%xp;OTCt~+$uS!(fjhiZ`)rI5~Gs?sLu10&?QLkcRs(ipnwws=;TM($^F_!>19 zwXO~I(iKRNWkk|$@S!v*oD&S~1P!2}w`Ukeku|J~P}b|ypYtB{6LqlN}gmmdR-UXYq!vSU9Z8$fRT-S9Qz8G&C(u0cc8WL9t24d|ziH z0^j@rNLM%l(XWEf>%YOo$vRhJRM3-h==J%|ykg#O>F=`SjV=zpW!ebAgoe5d zU0lb>6pKYHLvZCv_=WrXXmBeHYJh4C=^7gL5Q1er(b*ZZcmXYYy{x(~1I6X(8{-+Z zfU1RS@Zd;^l+)gBG>VxvjmG8Hx-;ByHz%_!)@d1e7l&>;chhy=5-wz+>@XdG1z*gM zF4|n_wX5WM%t67+uV3HU*{Em$Mr_Qqv;LcIWvK0+K-*iHX(%v3L6lZTrwnHS)8IaZ+ z1eJLRZACzJT1`a96zQNRll!ABLFigxO}{prm1XGc)T6$nidEO&neVJ^YRdH1*HoAW zuhAa!S<6S1T5#XZ*Df=E$9>Bw{w!(ZIHf|X%uvRaoJ=H^$U7*5riRo|59Q?|ytV+> zL*Vgyjj2wjPr=qSvGcT7m-{j#>2_e}vsTpBxg}Nca0c0sL3SEQp^Au9Miu*n_<1pF zkvQ6%PCwtK4f@&`KkxVWIe);fa3UDPV(bD8l1&ss9Ec z4~;22j~*HauL{GQQc)mRMR8pT#gY*~ht!4(DTf@uWt-fnYhy6Sn@7*-4VVCv*WC0Z z!w)fx&I-2=r0S-d4RrcLsqFN~5^nFttzzs>H$r1KUZ=Hf9c5R)*iJ{+!}Rxtt|`f$Va z5m^ldE>}TAR#rp4%az}N=W2oe{YyNT8r-@il_$1SU8q++OU_b7i0u&(={T#0(X=s` zK*6Ksv}xh26ofO;Vt@}b<{z`LBB*X@Un@izn)(O2&@a=1xu{$a%yogHF?p7bNftjp z=DJ+Iitsv>Hdr^KYVBr-WuXu11i3=*wJnv9>&bweOp}vNz*!A?a5d2@JA4m?JkK_tMVMulJTPAf33k&k^ zH|uVj*H+D_3u;wY>xXz#inX9^5qDjw9;0T}T5%ineu+oINi-sc?N&?COOzQWaaU<6 z0D~O{mB8`Sjb^rxJWn{_>2x(^TXRk1HH~^OMJ{U$2oDhCk01I<8Tv4rS($3@3=n@H zKTsXuxPSp@whNMuEYXlMO_PR=(qK4;hHa9QCK<_+5`%#o=SML|`#2BG(VV+vWEMh0 zLzWCa#&kzRN~5LQz~9h!(+O8J5RPX0{5R;=&A1of;G4aQ0_+9OFT~#dEEwYLnJD&b z)3(*P@^uEi-{c8uEH2&MZkE@{C{%=8z;8%`eG2@dAe9l(mS|Zef~neQ^s|TOc!NUPMJKw~a~){1%5#T@ z{pg7Pf9oyiJA!p7AXG&bdXwO_kFHr0^6D~_Fs2(DI$3q&;NJ>k3TcgX+$3^Qi)+^5 zn)kD6=vX6Dk!@PCNV`_c+GGSe_ETuuHpZfEqmgbN1*b3@l?d?cV(6Hs1V|w=fwK;& zf`Osfn_-*`9#}Zo1CfX>0;I1qp38f5om#P6DmLVft0bca542QrVuY9AK42ywUQ*4N z*{qit^R?5@`}|BZ0$r}`%N+8OWeDpF`!L3_|AT$5^#13qwxI(pLkF6L^*j3z6C*^* z7=`tPeTe6So9)Uz97iK(_Te}q{fy(_wRwkr#`<*1g&k_E4-1c%ZsEde53Z`_9avDl z4L=>$r|B=TK9Ta_5-R!&74ObKVhnGmpK+9mx6&g_~vV`Wq#)W;jC9H*0&@bpI=sMMcn^W+(BTShL$5k$#MovGn z$R%Z(iN_CDmj`W0cwC%VU2g2e1Uz(!LrE?UC1L!MSkX@KhwY^|h4nirBfe63aF7a< zN%!b5R0;`@A*zz};Z1S8_uz08 zyo|9S0FR`jv47+ZyY6uOKW+$-+tekQ#zYUPFx!c&Q|$```5rzP@TtekFlX1a@azTi z<5k;!vOFhe`A@c0#pf@W4VuHCVE(}Vh{@%yvu4{rKU8dqHaQ~kt`Mnky1LO4pX0%5d*HV+^vMyVy)H&0mi#VFDA z&F_OanLh*o&!0aG0TUsTc8HFK$!Y%3233~cE%PgnHLT(T)H3>nt#{AaCrXW z1+krjmu6&4o^wY|&K+|m5A(Pspf?NR$y((|qG~az&0d)tfD^a?N)XSlE}NA4c5Z3ZpPi? z!W5@2>rpxImNoJx1Rs@w7l@u54otsoMzFCWYxeBPo<>|V0G(L`%-G3{ zNMUMrxw>9#m22u{MwQN~;jC7-OXCE5Ej7+J$>t-0lET=qpOCDMQUuB5kz)xOi;c9+ z3dGhT_t}(*7+|B+jD;B=g4h`h1-zcNmS|>8O=h&E&EqA_qRQfDI%`M8vVXHE5?S<{ z?AWN<&S#1%MQM5hj?O%bdqO_nOY9sW{0RVhT(~5Rdm8-I-`18!y=l8q-1}4E8LD4q zEZ})~0N7I>z@F078)dw5j!naeM0gZtzSAkY=}{Cur!9VyWf6=m>x?3BsP z76bhDj2LqPYbcN&=a0RGu}iZkKRS%or34r=ARr+PuL+UOKr)fy#cg&(eHoZxRaVAn z9T7~Ki2{8lTly1OjERK99=$mpwB6WBx3L3y_M_}U}5T#2u^6 z_eoou327$p)b|&gb($Kvc3el5+OEl}>K~(&*U0pa^8Qg(N|Q=sSEt)K^V%9z(*1vz zYx|2Exwa}<$;>=`_JoMiL{m)&RN`uYwKDiG>Qj*p6{%K{fT}>n?hp}~%#|TkwwZZ1 zDg;Um4AzxsG>wJ4ah0M)tQ7X?|W?!(gzvLslzBTi(?%o`Q(TBf&G1Mm%#6wSB=lu-q-| zH=^?21?2w*866@WLyV5lMnawmo5Gs%qC3cV_@8u4G-c3fNt;R`lNt1kT&q%v)x4OA z(^!q<;dJWu5jtSO4d8;O8T19zpCzO{e=3$HB$9!F#sPBw;Q#JeKdO3N2NBnQ_#w4p zhp*vaYExd$VOMBWGHsg}wIWm6C$5D}g`%GMBM ziNISPeGvkRuwq2+A4(}Oz*zi@fGr|oPnSG)I7Yo|G@%C19V&uzt3A44L9~Ib@jdvU z57wZR*5cr%|DYB}B`R=!nbKEyFpMjxW>{9yR58ASE2pworBE`>$?{R<E)Mg#A;F4=mLQb>aL}(_a}Y@1!<;tr539e(uTn9iG#mFJ}59AQo!MAQrrBGNUiP|bIl5mlri#%l|k639X z0A!h|_-e10(P$J3UBpq#gx!s1nYKZtk|FW{c)g4bG$Qj1D(Fzohfp3sNP$Si1!#H* zMWI4}IG+7R0Kb=ld8iVQhIe#1_#`QgG|d`m&an|SjqM-&z!Wx)ysarRspl5pV;YBg zN)H)7aeYTfBod!%{lu-SSQc|Pu=k+(z!!@V6}_Lm41CX)Qb?oSG7EsS7gWIFCI$lL)eLCV~L%J5Xy;5uXst`lTvu$2@`$QoQf!CXN3-*t6KWvqB5;K@}{iW zqlD!r(;7J?>bRhK3xDjR!^!w{oiHYN1Zhm_P_BPkJtQu9$fa{xO$xbMl8}X6dQ1na z#5VgMxk)%YjdtD88qdTs7BZWyVqb!{P z4n?!z0(T-cBa+2uSa^tJYD*<6p{vqAK|EqG9XpJWaxge5G2xO!(2pQI(e5yn1XB}M z)KFL!t>;5)s&Gvw@e%(6BC<|I-MYvGTEX0hX$@$=3lZM|g5soN5lW3P z;39ZZCMbKK%Oh zFF_3==!ZAzkDW`D{J0*I@NifJZgThET$71vjZhuol!EU+@PoX}3bqK*F9-(6K|=1$ z;Q)n=7R#udVGmHwC`){7c11`>2A}(}Bj_1Z2AqJ8NqN_en1QTlG;7#3loRXmS4}KM z_<-$49-?opu~M(MBxa+0106>WaPvVAh}k1jW(`vf*zdLP`i`(ayD2Z1`T!nA?Ua9Ee9VMY!6pw`>LDfgcaV+nYT3zjHJL7hHPGh8l+zq% z2q?z6{UT|X7jaQ~ZI{geus2;^F1;M?QwW&kaIg~XM-&mcsaV{QWh4}rLpixZRFflC zd)Q#+GtDLW3R{-f;@26pInFWuybN_^)fhI5)yV4p)p<@DB*U|-H!I^+W8>3S zn>S&Y&>Ap5WnTxj(VohM14p5^>rt(ZLc@>{5}%lOCPM?yg~uk-=A2<7s%ajr)@l-q zr=hqHXcE;>aK~xeukSB{;YULtheCXak7hjr@}Teo)x&>~GYFf8jDy4NuY+%>G&ME$ zcq-^Y03#nV#1orIT%ETt*;u=|!C3RtoVr}AR#~r5l@;G7^tGFrgSncTg}C$8srv0f zvMxv-_7lYAZ+9ao5D%hPVyalyB94`)J3r`CQ zh-IdLG{Xdu@zG(S(pfSIRX$+_hJrPi$5HThVcW{ze8jLaV8};8IvrLP=q9LVgXH-T z4LyLa5=<)t=`gcV=CabHFB z;;o4qv$-bGnq65oa%36acz%Ma7Yz9YY_Uw#?m_85qt@1JcOh2QWz=e$HA>Vmh)vVQeGF+;$_R83V zfdPC`)n7GZcT;HGxG|ZTV=!G<)9x8n{UEy=_>z?IrZk*r4kMLfQW&X(J~<>U{?qst z9V!M$G3s6i1U(=W$-Jx`~m#~R43g(MKF2_cc1h(lzd zkJLEHItytKLi6o{H*J}S%o34EBk_+U!4%FoZN-kQLTQVMtL(hBFI+=SOLgHF@bd5NNm7prPU+BxoHgMO<4?d z%o}d1-!Tl343&!fVG6MTa1IrhEJ9_E3?igDq>G?Ma@`h}Emqqb^Hh&CsE|y~#@Q3!03^f?#F=rjXT) zRPcVE5gt-RT81z!U4zM36!jsyMyIK=hx}%@*`QQ9f(3ER!44!oIMR}7Hz`Ciu^zFn zETc!Qs4!xMXbsB1%P7-u07{g;-lXMHSaEW_1QbmrHT0+0@xwrN4L8LHC2!hp910Y= zZ)nZV8jcqlUQ-#4nmO#f=zAJNQOUfO+W1r@iB^&a3dy=c@<4*DOOR-U^aTGHWM>6P zEI@1lGR;f;USjr=H$0@nL;m0-olY{%LHrJ4c92^wB+Ei<7IMf;dQg2wPv+{#U23vK zMS=i%WMqYu%;!jyCE3|!MrLGw*sVzAo z*m0<2$G|m*xd|nMfBO2ddi>)oF2T6GE;T4tly)<-_vW_UT3R}*EjPDqR%z+2ZMoIn z^09e&@^N{2W6QmR+s4%=vUxsih{W@vhKP=jCmP$ygzohda&srF@9thVAs(Nw zuDkY*mPn-Kj@sI}qa%^gb8Dx}a+Ju`b@laiYI%uc7W&(d+2|CID@tfl_oO;eb;52% zy4_M#v1D(vkUk4(w2*x$W~u#^mL1TN8f}MmnwDFwAsNbhp4GpmXZ5jANV2LGwtkf1 zGI*EAmFwbME|pTgMsEuG)`Z~Zq_7zkKMN?5AU7<`T5<>3hB%Nv4iDlX~n>E$OKxvua3I4YAjdX(K61HIF23 zq)1nabe6wS&Q32QzA|DeBeRM~RuQom5w5%NP$3&mkOg^!U6xG(StJl9%R*$nk3=&` zzM3phlBr5ER!QlO;W#%OeDRT(Pwnu@6MJq@hE^>Q56T+PI}F(RxUd0vPl3Ff#^FS4)AtWw0b0)j z))5UlqJkf$69=2mL_ym8Ac~O;Rb`@)q5n1KlKe&=(L|~&dB#ou4{vWCSXXu33!lBu zoyT*>bLV-!8n0&AvaYSck~||zvSk}jn89Yob})n#Yy$z(-~gt&K>GScBk3=JDW2mXTI7IKm$m2Z?s%UzWu*gv$(f4evX;> z=WtJ7j|*A*>R0*a#vwA0=MXpH#QbyU(xlW!*m6Ip!@QVs5LmE<+>8Rq1O-J?eko!D zaxop{Uus52V4=TWWfgEN)-tJ?#ZN1&EsaLPZJ|&#?cb0Ig);QR?})V}(Ph3Z*7zGw zrQ-O}##KeV*g5t+tTH!pLqiU`&1o{2uLsbzM{(TjRsg?wGhjHeBfs$43kWJ|HUrQ& zHP3J>3MWAoHIO(7u4rDMasC~a0Ol#hYSPd7C#95hq(1sS7??QZrP#?7JCb6%Q*127 zGO1dM`%>%^UL@o`tMKZGN@}7A@T;pt z>;SM`xLLEH$XG^5Q?E~edcw)=M{YHW=!Nlj{)mCjd6Z}EH1 z2SRr=BN^l>16&HO5Z5TM%&?XuWDGzW8tca=R)|1FY-aC?%UlhXLixKlL^JJ?P|WK0 zI-)^OQV9h*BC$%$8SzJw3cCHaSNxtNJCO{h;_HkKzgrDD?EP+!Cz|o5%8IKurB>3u z@OnEk7^D+?5@lz4jmm@ad#IiTdXONoT5D9OSOxb6`SAlR@z&~T{2w8s3kVxh8WuLGMv5!p$Iw)WG^|2V zoIqhI>K?-$cFCD9zA^1x6$BH zg4Te^WRx9>2dl7Wlyn>J0;x3UY*t~Sd#wlCc3pej7nU(?tbZCq(5OtXuUlRcvxV=BHqk&w0n{KPE7x#adKvb z=7|}fT^^IZjZucBL-oufW_Gukoiwv!X13eR-eLR$o` z+f26stpLSdb@;5!@)_LP>emjuFe=cBU+lq+MWkJzubRxM_;9FaGLz(ol}cpk4we={ zN1RI#p&a9%#XPF0A8=faO^qieJx4 zVeeT}$bH^=N8r3HREg#cYQ?&t$auqAHn)JEv#}i;Hte9E$$TbV$Y(NnZasMUfkTJ) z??1e0WMmVX*hAODzs5eO+b)as-aD=A1{1qczEi#+%W$i~y=EjB75k0W3s!Eu(R8Qj z0`g0-evA$n`yAjA!sABaH*Bf!xz%2#W&z~Dhm7NY?LKMIv3#osF52pd`;;(Q;0KCe z1G?SE5-~~GE_em8hMU+UOJ9_%@bmiKERFW{kcJ?07n*WT4 zi4>v?+5%`VK^GRJ2VEN9oX+<#o$sK=7jqIpOm~8Zan|mT_SX9!Qy2;_Zc|vrI&9^3 zYt+i`lOH3`BS7WC*S{CJ!2U8p&6Uetox#GXHUTiFoeOn*In*Y21hP8J*M{J#D`9Ve zEVmv9Y5|OkZL-xt_55$dm^<27c{es7=91Y#K+Fvg#GF5v?FYnMSF+O1x9JNL^MKqs z_RsQr;b#-qFO8vl?W2;(8e84d^dO2ep_FFU6yRIHnOdX(>LW z@ji~;xH|9Ux;2&%l4gUD79*E)=h?mTMuKV6UBmuGvBT%Wry_gGH0WRYWkPx{fcJfC6-+V^H{{wX=Z zA}OnX>ec|f0n(@1!r^2p<8&)QCD|www>h%;q-;%Ew^A{PjMH*k(006hRbK7hjjVW!o9`Z4fO7rU#A-Q30cD(vADyE%0>#jlC6#TeTf zV^%y+kE?uIWsexxSp%V$%o&auIIQ0a5~-DTbc~_ zNIqZ9Y3k{y0!^%D&E#j&i3Z98NrASXwRnM7b~TY*)Y#kTuknpHw+7_vipxkl`s1X_ zN^5pKqtkr((Kp0s>n^R?3SDWJ|EUkW9=8o^a5pCKaiKd(cw~m|*rly+w){n4`k>}) zCu6Ra^}UwXg?2DTAA(B2_!%VNDKUQXf@A#4-)(%yKh%-^F0q|RUR(K&ouHCi z=r0I*ic*zK20?6Wjvt$f^m7p#*LWXa{*HdFk`eItU~Fj6F8@3DIz_BQqdhP9idY9T zg+RU4mN0|X2iesD_5lH!cizb!b+ADPd(^`2 zwy+@!`+$JP_fOgi@n~|~$2|FjcRI?LF`1e1xGfQN2I(!WRy@QLa#?#3**vc+93pW< zx?iK*hEBRgPc|>i4jh2t1QzLB?(xD@dhEJwmCCm3HjQr`XP5S01#rDeZjds%0iV&AWBdQ}9!bvgTqO#4E&xKF34!?_k6OnA-8PMjbcbBR0vU@eJz zRMYOM^bYNwiv6rwwjy%ms%Ye72dt&PAn0k&DOO5?xV(lp$)v{nINztlD(k^ncJ=PyF5<4s0F!#r+x<57BJ9X@^(adD zY{;9iN(MVK8|`MRWReXw!k(tqBH_=}LSLx?o8vPu$~t>q(jF?G!I=yJCW=zP6dO>P z{f6Ef8vj_e@dz)GPjztlC151|1MIB4)Fu6o`c*(l8t!0KXr3&Jh}cwuJse<@f%yP8 z2iPSu+iPYsW`@pg-I_iH#%wPF2_p=L%MB7l_HTa zb2|)H)ta8Mx|~ic=}82yUmexrGH{$XTGNQ4AW^8GJcs|3d+9f>h{Uq_pV|b&4pMBU zfs@|@80qWj8yIU~eF1D_sn`nkMfI>hXU`$%wLyBkejRd%4I}=M+=zU!hdq#I zLwWW6q7CG{))seZYCG-c_KqumR`rhZ#=As}inQK2v77Zq6)Cv6-AVCXbX0-ETO zapwYh6M;DC*zV0jX2jkxF+RyzLeCf#X>CTVW>fW}XJaf2U!sY!Pp zbV9Sb+ehi7zz244PE1MKoAk>KdUgfq{dK3z-Ce{O?xKzz)m|c&as5BzS0d+N06y>S z($n=@9^20Do@Q50pPuHnd?a7V%at@kr$1Yoophgf^J8viG_iLX*eOoUyMVQLCFjv~ z>o&+h(R0jh*pS^iYYznMJ11tdsXo@%m))^$a8ER0ukQg&!Q7TDM!#nv5VBA0F|uB{ zd!Y|z48dzqh6uK5vX^nXq=&-!hI~a5GtsLKhIH#0ToW@|W?Djsz=FvB#-tIom(uOY zZ%eI9;JSleE#fJ`2L>5l1%$-&<&FOKtw4?V&(`FT;yN|8v6QQKMhQwKRbm25#Tyy! zj#j)bU_QhMP^FUv1k?oD66VGQzC;sq!sqk&e5DN)fwF?MxC#NSOxvAHd8a+GrJcZ5 zqD26<>Ub1gu;~fIq)&QNJ#WnpW%)_ldD|m4dCqnW?Jz9pk#yF=XDvr9{Qc&q%{&OW z$xqdh+dgGAxx?Xfu_z6+&!P?@-ERtq`+bi7%0iCS7Gh|Tg^3+~b;VrQ7BMFM`IlRL zP+X!()-}1O zXEihm$+W;35$kkHTc=y~b&5K=d{znWEovx+5fb>pUSE*b^5N7rDr_s?m)p#Dq z+9x_gHZSNht#o4jX>{i|>Fdv!>j$Ci>)644M69nrC{gJd8Y|_WlTP`*7%N-;4q4?4 zn+?~ja$Fa6h5tzl?S;P+V_*pra!ElbEOOAn6D0kR^2>Cd$6wOuV2ukpVT~^@FaHSN zXr!^~bmw0dW91B%I0!k1CC;0cxQ5^I1R7eU;8lOPzVEg+c1;_*vU0k@j}=c9xz)oS zv$Olr63ou-F+Ymt@n#0}aVZ{-sDZ2@7IUR%4V|Ug6k5%66!!R%kyJRu)DZZgG9#2q zg?w@>ZmKR=#omFcC<0egUO?`E_KUX625N#j^x2o6!wI@|AJJT)tsyA2Ad*s09;FV* zz1T*w89fm5#9jc8RVRDeH?;?2-DAaE%BAiMZ;R$eD#?SFnOr&bSZATP$}d%>pEx*r z{mzc;#{EMZ4~`}rBR%<{Tsv|Qd)t?`5BAuc&+gxOt7h|HJ}(I!4O9}`%hNCp;9X+N zuhp$dpJc`@q8u)vcL}@aJwiq=)9$-Q%a^}hx303>aX;76UeIMP(Q36f=}1O3p2rc= z5#B9$pjKJz4O%f)jrR16CeN#^^(GzdCmP*((EVmhT?R7ELBy$kh26pp4@tF-##xH( zi^w$(24itwSazDxKtn>`KV$)DK5d|{z5F6vr9OnET6?acmZIt06@4|nn+Szab{9%C z{<59Z|1*$E1%j#6(zE&lvfWF|udpY08UFViyqFKx=dWoy)5hPFVOM6@J^n}i{C@K# zGY^%DE@v1@6?S^qAvqSEVLzTb^Ru2VNkZX1`hInm;>Cm^Rapp1VaTe>ZmhOCBgv%HQOZ{ zelJ)dK#EVAE(S}4NMYEPJ2XUK6y?Fhw(R8tginzlW~E4n|5qgfrsydAM}~kYgq(`{ zdLeszG}+ss%PG8|VHM{uW)C&wbS>=#hyhu`qk+~DaN{AjP(MX+4TLDeAZ*w$z)BDbKq@E z3+yok9?!-45YiHlN7&v7I}x}&!1o52(N1{0p;=qXV}QGaDJ;bRGUf3tC=h|@f&n03 zfDaP58)Q&uMg`POi-`{NK?OFAFx26#Ch;uxi5sPdE#Egk?@D@(9u$ZhEl3<6lb>|| zyTSPIIYQh(LjWBii}ot5UX|uUyT0=!eLjr&0bC%LJ9jXdHX(gJ{FsG*mJfhFheu|1 zc*Tc}RUUnv4_m{S`yA+neaQ~PzN3B1U2QQ~F%FIITbq23toWnj1+qkid%0K0kH+(- zO`b;@Jlp$MY*w6f{OB3_U7U@wh_pQNbOp$7+wxTVGJyv!M=_rZxO48UO2Dru0js@K z$ptMr%hqTRHQ~WrE~*$4QnXE}rqRvMF{^8f2l#3jL0GqhE~vJvL9dzFRxkx2m!i*y z@FQU1!;f%5dW-HC7*E7_cqcQj#7P96pU@SPpfyPsIyGHUOU4ZmP$qO;rST;HfyVQ= z^gBAwcswb1uEcdTo}||_p2vqZp20*)@D$(P94Gl11W$HUx>M(wNaWs#r?3$PPj*y0 z^D#AP)ak4`zJd<(3Q(Tc)lWWGw4mEhD5`t$^zjo1oMEGipLVp}Wm5T1y`)1vm z%b1~qZNli)_6qRjQTPuEIP;;Vg?))ZVdHvrpDZ^?AI9q%j?>?PE(FR0_5Ld|Co_C5 z!;ZyI#rb?3Jxf^#35C1RHnx{wv_xx2 zEjeUsgeF7(A(dr-+^wr23HuP#*3V~@1o%I1p5L~u6`1hmn_D0Y`G>Z<4{Unv{VV8% zhd#8TmBsbpD&g-ZJqv{_^z6JgPr@e;w2L+VesMnFq-TZQ&kn=x7w3aa%Yg&)rtu{` ztMNU88W7#r|LeNdrLOh$YkW!9YJ89Ae2uyGRp$Pz4ILgMyyy?XBq||=)u{Ru#o>U}kZ^g&t#Qw^%jI=W*|>Mg8s&Zw`Fja^ zrU}r9s1FY2B0WYcB5$gkY)eC!hKgbDCbg1|e^+Y|qiGRcx$50wG@S~$>&Ey9Q?d*% z?S1uyQ&n~{!j47Q`#tPoba?TwyoZ@QK@Y#=W)I+>jUa?>H#}f?+#p{|s+AdYDN9O{ zQmKwvU#(r8b#@myK(pH0W0gG$OU4$ENKQv#9c~imVG3Q5;|}H@b)uzY6Cs%^znYiV zIR8@lNyFWM)3UBgHAjM`Mg88s>2?ib!w%@$~XxmP#~p0szA!xcX(Z$8>UrPRF! zrXW+B9hzT_=qLpOkbb4h_sC={6w`w08!eW+DwA*uXOJq%|RUBJ1X@I?sHz z?TvVHS`UIJI|9L{br$Rxcmtla9yFduTX>e=kSDDLjptF##^wHw-ZebOsh^O})5N}f zGdj$mBVjcQhO4gG+2r-Vuhqua-qF8`7p>PHig|=%P|V}m#{GdE=S0N<+{`U8zYb7c zlAi-#G}-{P=U4~fL(vI{?I#cWZl+*C1(8>U%@Vf{~@KizfL$S9Ap6qawr({?ahy|@1wBMn9MdQg1 z>pVfZiYL+iLaZT;=aD8)W}bn_mqxR1yPNXLJRolu%@W9Lt^f4!D14eqeiT)pR}Lz#DL%3RK~SyW5TgPmFb*=Oo|Pm!1OfpiQVp8q;>r0aq4uxO$?48LHD| zql%?ThmZ3&i5hG0!`N?Ne}%sqeksja2o=JKPzuNmp%f6xLRQ%#@1?Ft=q>YGP-&(A z7gSn?9!WSKl2f~hNZS+m?;z4Tzb)`+alLfvzE7NAa2TQU%ktkh^!!KbR%l*KqHNZ- zOq!pvz^{D<^Rt8Ihkx?Bx}N_bVA*Wkx)YuZK@D1(bMzDgE%C-&_Ud!_gQpZoP;)NJ zz!e52Zi6TL^7A^~H=aWIsLWO7H~ zc3=#^+hy(Id?3clzH}wYhs{y<1*RMr@)VBQ-85FgyD?U?^sw|fX%p?9Gj^H-5ep+; za}8d&=MSTPeiHW_+6H)#PosVxyV)fN`puwYmw6m%s}7ghVRD+_WHw4pBmU=>Db$gW zI--&@;51Ry_mKESi5)N0L`FQITBHL$Qc4JtqxV7DW46yOUXi)yAD8~NoAuY&wx$2G zesI^)ueY&i9M=gk{tw)jUtw$>>2l05gtkt@0;~ag5|1#mW%vAGdT%Ui zpQ-n-TRPc-d+Bde>uSpq5Q?XOR{TOtpWmMdIn(k+E;RE-N`5VGq$Pfi3%VrE$(o<~ z!ZvM9#{-&^TC9FuzR=$c@<2QxUng|A`Io0+e&nJwWPsN6B_0Bu;K#l^sMCG#Dd1L` zn{*@tKM{IIjFBB`juGhHYjRsiJ6saBqsH?PKHTu72mPyj>C3M|SM3BX(Y9a%N2}kKUTW+o zW9!{)#$61n4d8kbxiKw;j`!O9BgT_M*0uq#9YJ6IaV(}9%i?N z?+|L+ED_;pnKefvN0jM=la2Mv(`0g}1CUd0z>WTzn$&2A`mHge&`wSer=5 zrab_WJl*H={kpYMlH5qw(^Id+9to{MeVD(bwlYo(d`8*r3zKNoPhePOQ(pjd3DJ zuv!-5Y{@61HCh*IRO5T7qK#AX09^&+RP=Fb*g5Y7Uj$dh_4k4=S;n2cHG!Seqb);R zlZK5!ITivNL%QJ6cow=k1U5$JDxNe}jpuQUS>tK#=@UF_Yk1N*RO5L(rt!3*?vwB~ zkl}zSpk8NVqSx7s^hfopPSx(NU98Dh)YyEDP1IPhR;clty4Yo1N4og=P9~RGe~z8X zQ1`Rj?1b*^uu!kFON?#ku6B$MZroVdEE=C}-Mkr%&$e`I+&I3jcgrP|J%-2AUa2~6 z4O92C7e;#!;>5N9Y$ZGZFpO3&Mg9eCvp~(q>s<^74zyxIQ@!0vGAyOhh+b&FB{0t@ z!REhelIAO}D;dmdtc9j|rUZNz^XC z^S#uAMIeh9pfFlI}kEwx3ryW zi>~9yoN^H!w+y}K;&*jyPIsrPqnK7m_O z2Q>G%v}deXUyaR;je70PX-4?y?ugvwH@Z8k?~j%Pp;zYWw+AUtTErT>cf~@$-*omH6Fu(IK$wc1 zw?AU%bM|BQQ+D~R^&u-iYQ4qEFS9ar9C*H;s;7}oVlyj|NCH@lwsyo(*xN z)zwX&f?IUlgW>^>$rvLn^C~=rQ9w-EitG_TyW7uB`q?o*+wEr$dH)c_*Z`1w%H^3# z`RLj@acw@QQV3_Ws138X6Zm;qDW}RZkcYBaXFS+eaM{fZPJ5*)Ll2_p@dc5e)S5UW z+@F*=)2QESCc3Y}NB?aC(F&YiYgNbBo>QKUg?-OT;1<;z<-(4?!U)uvdw_V#nATz`dHk2C} zQem6Lgbs!>b2>eW-DSby)@d>GDKtre2O z-o1-^*_}Vww(SR-mOjmp0z>yv!=w*NJL(+|Bg-DTS4o^d}?{A zlmiU|n0!Sd*Oc}-DWT=CHqX_192~wPJq}K}B1CD(XmNEBfX9BQ@g#dn@Ps`@d9;Ej zI{CFE(SlZsty2s_#Maqiou?dZ3F^fTbUu0UKQ8Z z#(A;H^9sS!@i7hvBf55BJT=Ei`Gy+5D=#V*q5U z=jBGQN)HLF!~=j0+S;*`>YuSwQ%IFPK>jA5=ini&gQq)+#EyX1P5}Vn`Y-#~^`~2V zdUlR=cA3l}1JHaE!a#vAg%N}q7KbGxto^W!H%PMDf zNrl)hDXfH3VL6;P+4EUsx@VFL9tr&v^a@_>lEiu8mFHW~0g&*gjkxJRBY+7&*fp+9 z^jOfmW=6Uu6}ZQi)^-b_ju1vXig-q(-Ot$C&I@D%BWl5)7rF@nSFEMu(o2wgaRS6S zqS6+(?_{P$8d8olN;1fKxZ`XWt)EkX3b5+@i&Q)HY+n4lp`ecjC z*4h(I_iIvzTwlX(MQ$y5>R0tbTh$5ewI`?#8padGc?La+F&?u0aqe;G=b7(5wZ0d& zf8#up10DLefKJ%`?92b5)BVd+gI%!v8+0zvVc!BB?StS4VG=&ce|pMm!#>!cn*tr| z2heGI;Fsa>7j)l*pQEu2!dFB-Q}R(N5_(XH4qhIw+ne-udS%N>`>uv>7ph`y=dM3m z)vYVi(xoed0ZIq>i1ZTt9Xg&R7kHK{_?WK}bhvL7p5;FR&vJcOK^Vnpwwr4Es@~$x ztj%k|5&^#!%-_1hAR`39jSOus0p0TXr{G~ljZ|k(^{X{1sDW<#jPkPH&T>Hgp1}MC z(3^(&`x|gJh#b3Wt%Sk-E)Rw|~k2fHDLoIspv?SR}3b(+6)nQ0pk5 z-{UvEdvM(_S5qmK53lD}O>atfb)`2^AI@X^xb#(lx8!-|0ze{V6ZjA$2ki;43T$sX7A2+}5{4+i{vUhu|-Ctv2@aV(g92;0w3`pAoxG^E2AML-V8UJ7b6t z==&P3Hxv~6j!3H1=11FiXnwSPXAA=sv-3*bTF8m5C$AalZ23Wano$107YU*FV8q9M zHh|_8fzE9MgInqE*1@Tb8>gn~b?rK8xQ?f>rV$;gx7(?M(5?25+qtvLgMQ)6aF=2S z&>r`?zhwOu&>he|=!}&q=L}{Oz$RW6MJA%t3xNH}qQjwq1`Jq#pEw|7aaIw~{pOyp zS1R>8E8DG}oHD_m{=dTq4;JpZb$5JcnRIK6RmD9?qK{(zSdz^r*?5xqlG$WWQl8** z{1}&eILmS7<18F@o&6|2l#ayjQvH5Q%6C2e}H zUbMd7Dvw)tTlr_qUp0RhJ^IXlWag&`_~Z&RA47^QK@Eh_)8SG6JZfQV%bOXq!egwNYCV_Fi@0Zr_1Gevt-tw)0{eOl9=mE;{CW{UhZT86IxCNgKt z0e?>o^ZAqhNoOqBxqjW?`r*vbRAD|4?yjo*ZbN6Ut-gL_d|~(c`N1fA-f6pOA_v2b zWWdjAOolAFq z#2@#w+x++Y`4;~^{|Uc*2~d8X2R!^)H@lziAwYbTso%4(dn|0XKIkG0sfFp_b2(jGM${6;YCgn)UY0n#sC%=@n}?}P#O zXZ4P!(KFG-cDt@{@d+0@V`E!v`)nuB1c2uD8h(azPZwm^Q=*O~)IdvUOKPh|f-btM zL9pRW`*9uc0Nc#8Cd?%ged@lD!vi^d_M>j*PRGw8z->*1fQlow@2GU%|CZ=^ho)Th zWavh|FXgW{=8>emDe45=L#MW;afE{?{K*4-y`n-UHMALE?T+^0;enBLx#5}Oew*s7 zRnUOL*xqL})<=dX7Pi;-3`W@B8qM~bH|G+xm#fRaWQ^SpEWaBiNg&H0Dtf0ttPy*C z3Txrh>^v%nE{gZfeXPT$FHUS8HdYixWrhVdHN19GoM_NUI@{VYw;Pv#CLcvV zp)}AL;fb_696jm2b~)H9xw}|bm!%l>+U*t(z)4@Ibqdt50~B<@g}m|tu8$54Xu5<- zWO4A&8%XMdjkBUwM@HUzQ1zs1eSdGXcD;Fe$N8?I$i!v)yJjD{c69XGhh}FVzHamp zyfZcR<}Rbr$bM>Iy9}RkT6+dJ_NRJs{-ML?wrn|fWN7Hfxh=MDI_+Kk!(9fa`LE4p z$Zcf#SNw7887o*&FyrB;c#wT?=}TAvykAJMSXVvB(bn*t-tLnm!j0$u%K7wMH~Ok?8Dl;2#73g>^*{(#@?70Y?|P$(FW?k zEX*=@mRINtm~#1n%b_bV_jJvFpy6fd*G#5d<8zqL0s4UU9hJs-*iHJ}ucnnFE3`EB zM^=p;nVR5x3wsb_Cwwn$>S+wGpGR%%x3E71ty;GMZ;`n(GS_CaF?w;&BG{n**Q)Qq zmVxg%$v!1CAlI~*COd+*b&j<0H)-=LEu;^$e<2mvEjCFaS=Z#N$v3k?OY{BAs(J8=c{t5Jsn53{7W$fGZC;yLZ%tZ*TyE0Rebi_h*H&G_SI1t%J>S_FFFT3D zAzfQ)&3KDVzHNdQ_l=#><*suTt@{)Z2cD{Lz1YU?X=A5L>{yB2 zpSqOdL#gT1-juv9#3~`G)UdnQDI2>2{|qM$JR7*t+)=&JElKY7Y~f_U>*a})4kaEr zDRB*zm~yQMnYdwfAQfiiK%%AO!Z>Rj?{t$x?U1Rw-iIURa(%gA*?U8}J?dnhws^7{bMl`CN3OhQde37wZ9H}3J&*W3{d+fL?3ULq zjvl+o)~oBVb=RZkm@ zczK)F;t+)m_K>7HOh)eYOxfX>AJP0oOa2RzO|PJPm1z02uT0A9G&=JeZaa2+bntpJGw#xZ(0`^*7Fu^~GjT6QJrU5*lS{)ewKrYZwjL9oO zAphuONdWY$mg+C58#=yzlQ$RlX6uUs{fqUiH=gs}^z~pd;Q?3(zcn^;c>L&lM%HZ& zZ`!`twd3~LYIXMZ9bJptH-)#ZOKje`w|o5XNDS9sg^oGLcEb2tgG)>xy^P>_cTQtJ zX!v%3PJDyV+e6Zir6<`{93AU0kFSZj^unh69C}Z>(96~8q~52?5N)yF3`ahvXB0xH<3706+EE%ys7F#@`CE?k*Nc++51qS==+_ycU@}>1XSl3JCWb? z&N=>(Uw^x64*keIxN=2$H~W1C$15W91HkKD_(JbL^zu*kvVZ7ef7``A(Zx;_*i2!u zz}FR6rNA;FyL;+%@SY&QBFH9!b3uOEdykjz_Fm!T6JF+snQApO2_9<84LW4EyRV## zS;OH@Sh+CoVC7Nkq8F&V;RP6cP+c#qzzArzE9op9{zDjnO`KlMx1xu;gm?taTBw** zn2GI+_&o`$HR16`&bullcP@#-%$&PaajklGdWDQtE2T_VSElr)NYR<@uT=We&SIqH z@m2c!kQMY61(vS`^#jSe%O_oLw%bEt-$}RmBplMz43+wzzDPk8t&YCfM?N6xojA-O z(;1Wcm)mxjTxL%-ziqo22_V&q(X!_n#%9(J@%o;t=`YzHVc@1;WZ#6(@vw9i&?F8^ z9}x0YmAX)Cm4iMx0FRo*Y>*u?LkA?d5IA&)E#PoEeQv+SW3S_&k0%bZm--UH1Bps0 ztpQ` znO)blUt&+5j4V#yI(<5_fBIGo5Bi>V)^l9Jh><&APnS_CJkhB^AKemsgzt7Zb~{JG1m_MCO;iC>CUS>OEt3-Z{2$ z`VGGGclo%V<1eQ)HlX!|B7{;5!L1n&yBu%zxKe=61bnf@I6!C!dK!tW6M8cZ->rA{0FEn5g+MBFP-JkpNbB9c2AW=PNcn#$k?!*Kg5YyD+ zHWSFdn(7B6CnYQi{~|mtvGQWKt$VRdf4UC*D$*B;_C_MT(MTWLx9^#K`=8#o@9F*c zJ#f6Q@A$yLiN3xQkU4Az{6@%jL85CkOVbQH19SskXMc~^z1YJu$oJ@~z&`OrJv_BL z67lcyaAxt>R_p~Yy z5qu;csn&6n!jBAv7R436i0S)k!KFmPx#GR|&TnP4`T43IMUpKR)3~*BczR}OgaVVl z{txav&@2U^b)=6SI{U-ozHMLrH;zy!FqUJ|we`tLl-Z-vD4av=IA?n~o8bsovNq1_ zJj%Je%VbSBok4%78K{qkZR(s~aw&V9HWT`ATlYX`;_9HCX|tw8WLzOZAidJ8h9X^N z1b!B>%Ha@W4Je+K3+9%Y`g|;az51W@+=llziRYnj&~xH{Gygc=5C4>&+d;oaydQam zo|p0dt%6_lm-M`}yo7KGjVJaadamL+n7p0~Ulzr6@LG!fx%6qdAA9aajCSRK$nUcB}z@fv(iI-R;z88Ktn|2*bbIsR&j)<)0f74zI zE#C#d8$K)iZrW$n<$J*opB4T#jV=bdUqEPaLWZwPqr+?Pt$DTU&|mZ8v$FUs`O~z| zhVj`YF}_pH&wBCNuf%J(4*D$izFUCj@;S(nEO|e60nf2Mu(TUNUURnZbI~E$^387& z?E%!ge1G{x*cFH^Bl$}5c+soGBVko&6>2YFi&T3=gq&g}gyGTO_pTYXzRm768Z6;R z&FGXz`#JAr3B=oo=NvyQeFrgjx0I+mtu`70rd6@x5ZZ}QFr|XNd_V-=v(%XqhZ+@$ zJs+H9{#3z}a|RSEKMbZg%><0?R&O{P)%f1RC-v(>>>5nPX1VsVKK*HNkG3wKWFfhZ zx-WEI!hJL@pOn5Vo;$?z5bKt{%+BI{Me2af_`T)RtR!#1bFX-RbooR4KV>VPXQgp` z{&KwU6Yp=J_gm;k1-)tcwDd{weqB7zgWe#XU*3HGyW;sF@jNEoA-%!}!2ddF1NhgZ z|BDLK=kfd&>6hUDYaqMd!rp@CC#81nIeJsl^HcO(s^IfK6rVpMK0memWAwQDUy#2$ zFj*fIbAaz)j|-Z61r0vKJ}935o_HR?-Z;UZ!)G4HXFh}!m$Of+g`{KPK*|X zBaN%$6p-4b4$!SdsDx91Ji-m|A&LeMBxj;4^ngd0lys6nP3rsZx=Tr`-IHyBqsQ}8 zu?-vMT@m~6kSkgUr{nxXn+{p5#m&b?AGqJ`;QKahcfYp5ARoAPaBGJjt|QtXCHMh+ z{IAg?ty3D39;#pd;1GNB5PN$+yS<+oGt?mN;TZcsh&>Ww#t?fz6gd$XOL zu(Q2(b{r+~CKexln$EE4s-T*Vql=7CIveVf$gTx0M3DN(#kwZy7 z;8$xX^`~U@*PZ%l>jADMU9Z;iBHzGm7E`hk!6|CRp@9LkY(Og+gxS91%X?$Bd|+(z z(%*BrcgN+Gj)k#OZ@Fhvw!XJ7yR}@1vcI%>EF0dunN9vuHaKG4xeb#aFvncO8`BnV zWuj-p4xj(Bss5SH0Bo`S)?(J;G2PDo>Bdp`(I6AMm;aOf4fX>Mydnqc!~3IbOO!x6 zw*=W0KofSbD;y^s+=%wumSYwkp0sgpOB%f6oYH1?Zg*eU zvr%@X`^!7(V%*z=EJF)QDQS1T@3t7*8@ndP39b7!RYo>Pc-9JseTMm(Hc?udQ%t_# zg4WMSz7(gdj4R40;y!3J$4AO9woIfQuE~)<|Gm#g&CV-72onKG`CzznFRL zcUQ?O>eBUf=!0i|uHL&CKOX1%LMKA}7A!y$y9J%kXDwODze|CM<4UJ#!jQ2Nh`kcP%8cE<<>g-k@R%Ab@ac6MfZwpdfc!D;@PKl}L6`{#>c&t}DY|2y9LuwU8ijbOaM>ETt` zi+$nBdi~)tJ6~oumw~@Lk>&Sh*rOtoVj#(^CT3-O*)>dtIqfO6r6=WTG%;iG24*}i zyG1VMW=gQRwPC*mS6&lW=0y?h(FRVxjb!(0r8K0t^@17~cQbLkZ)AnL80)$1Y<|=J zL0`_}8tzi!4u=yUNFle)z|;|3+Sd7UPbjQzasTPFbY&((d&O*=G8w(`LcnClMc((2 zc9G(~P_5c0_$i!U57Y-wp)~{kB~B**Q%88xk8$=k&a9kyaCznS)NBeF4sFr+0xpoQ zkCpNZWjY54C*?~uI5_CuP?8Onbx%tsvPwz1nm1t0<>R|? z%^o$d(xlp9a;C<4d(vi;V>4c!%FghHcNT8GPP*z>#b&gkeh+F*%#6Tl7l{D@)YP^* z_GIc3)Yzfm+>4HHEyQ3!$bGvGS2y3Zyf23W z_q~S+&YhoRul*C}$+4@armx;a$sb&5gU+CM740)~_5O+QT$qphcl-G@R`yOKJ7Z)g zjO-f28N*`+*%=>~lEF!{+igyGr<~5HdrINa84iungwhdRw4m@-JnVVsX}Yf)_&ThO zzBIYjwR<_h{$TTX|HAroe&a$<^<_4&nBTn9pYKUVRGX)P8U56@r6=n<%Kd2c~iR#naHe-v6Kx!zrFwrBbJK8FtW2bm~z^7 zNGh)3a$OlMy5gpB8${ZHw#)*MJS6^VJ~Y<#X%=b)ZEA&VdUobD`wCuD3y27X+Wfu1#P#_1D9GLr${S5hMW<7dOr#k< zC^KJ?I!&c$ElXaf4vQzY4Pc7|eEHPs$-I&6~`w;Bn?RHb|J@TQL48;iw_ zyF0cWOXRMaK(FZ#I;0AH(~iyHBxKSqb=5;AK5lnfEO7if4AY2GTc)6D^e!d1OlrZc z^)(YR2lN-nm?+fow7>fK&qJuT{pXgiZ+mSEWQTCozA5&Xf^=Pd@>cXH3$tzE17U6p zv)w^979>oj3D2B|-;Z9RPIlbMhRv)5w{v>ZU&>6%PN!Tl-gI^%R>yP@4u zWJZaR5Q<%k^lLNiTh9g%Wf2>V9%>S+LZ#?Z7K&|vvCYh#8$mynSa`$k$%E@6r;iTq z=vH4u!#y|uzCB!JL++So;PQ#0$G5qy_u#o5&pg{PciW%jHq3Q*&5h=;ACXVtA>!WMw0>86!rn zs&;#(L&C-?M<+||QfN95u%r_+nY>kOvikMnnkg4d*wo4Xfdfh&~>@K*d8ypMY_hyh3SME9E$W0jBk&nw(s6L5?vqiM#oFnU8lqg>||ia zP-(0q;tNiBeIs4{n>KG!UN(C#w9BBs-U6g=Bw{zbU~U z!B!GseGyiOFiS9)8+YbAW0O)xE@#Z9X9{I&Fg#;)DGr+j14NNxO>CbebC`eHPn1`l z$Js`2Gk>xnM7V|GW-=MJFuMh*`a_wQ6I z>+{LrVsvL)|NgN&+jr#tg`&~02UdbzLH||7?tI&WTdy5Yp`XOkC!F5u-ur0o2~%^5 z{Tg#0hPCka`kpI8EEnnx@oPAm@eXrdo-`^hr)#TQL2qou=5RW;+HHt&+TxP|XP|D} zX?)W7DWhRW;9%gd0$&Um;B5}r-R<@^w8qZbYzln#b{?65Qv;_O=r{pzfOV(5DBv^> z9Ppx=g27B5{| z{F`9RV|K>cQYh;(*({1;v6*=A1Ou!rP#V{1JzKlvlN-h$DNUQ zR_*9ev+;;Co+rC@`|>aN@548ghMl-+U5Zsw%$|y(NoAZF;>-vz2c*&f*#u{zblMDv zsjSVkOEN3wlvy@sf(r?IL^8??HYc-KP3WNsEF+yk2c@33>m$@#d;jabW!#csv@$Jns5k_#Kd@u8HgWts0@979V) zm%S}AGm4z<@9j4lCQbG|m(d)dL3z3z;pw~*bIvm4S6-l6bkUY&?wJ^ z9~r@2+<)Mshyb%=&*C2ZV-K*(($_XEeT>1ui#RoeGKjp1taN>Sy~h&-AlO!y$M5oF zT`FMrw#HO{ET+0$Ndz8DreHoD8&BlYF^?yagyMy(gCR*9f;)?-g-prkk+BfDnbVD_A{f(!;jK2NG(RCjrIcaCz+UErrD7 z_QXruAs7<`W;TlfXM zBE%kUs&DkBtga~-M^=}0FZDmO$QeY?_r^2+csv8xpy~y2_SSrCnfkH3AV;vFI@R9wZmAhb!9(p;|}Db-BCL*5;en zVLBoSZ@H9naOc#UdSjDYwq(*%6B`0c%lv98BQj=tmp(7BiEwRBVA^~S*XEH1>v2~X zt_`^mmR%l3P&QN{f)mxARur4n;z4yN5D=(4Q825a)nuKc^W)1qDdnRoQ zsy4%dU9(Mv(~itHC^w`tG_Zk0egi7~d+0tWBxrXi&*>^oG^7)&Uq4M~+ki-05hq(Z zDk5Z=&?FEUA6eX>qPcs)TMQfBW}7o&U$;r!<=?IpN+s_eOE466xRSAmZ9yrPD}L7^ zzbc;baK2SGbPq&FBc1oW_fHo)ZoK(Kx#PqQ*LF=lc;8$4dlNz)cQ5~#6DC_u+Foxz zpJb2v*(v|s5Ml?5kB3Z=h$}NL6+Gjvd^YOlq2P?kYR#l(BpC-_tS{{cF?^9c0SM)ahv&*#l?JnL`}>T@@R0e=niLmwUV;f-kZxTdR=}T z34Q*qT_fygOTp?u((bQJ(8KMc3cm`sefd?`4TP~1M?Ol`5MXwR1puG4H4^Yg0+I1} z(l~CXRse}8Uo^5UIOd|8&x{p)c|QfnO7GMh8mo)*-hnD@PX`W&fYEz&bS`-$Dxt2$;`z1OvtI36k7_L>qDX4>+XBtzICttomd`bfZ6ab zY&iQnw-2zNz^K)90ICpVawZI{*W+0}3s`@A+A+*T`IDls~; zR>cH2TvOOJ*5K>RuSV5zuvZ0`4t+QEp+b)@*wj8`3YVof*LOc&V&&3MiJvL5(;4<~ zn%$jdg>-+KUyQRi#n>5?`v%!=58LEnGtNaP*ZNY8%e!Ts4^K+fTx8N#iHIZ`e{#kx z`)7=l>m%$kkp>H$`+5VLBz|pUYnhB|wD$Ai=t4P8JWm~@Mh}c6658MRzZLs)UcU4d z^xGIL6bAAracSe;+yGnLh4xXs2k#awrTPxuvve_s_6kG$H|BVM4t|xv{hM-h{ajrC zfSiW6vsb#ezIZEI2G>}*HdNyP3h77Kxr3cYL)`nQ`E5BAx zgjQsL{-u5tjKHUD7M^`N)Y1alfP-c0wCr66^~C0RE)$6yQgTCOYP99i{wk~Ir9a%0 zvIR|chqY@l*LBC%(W|$hZO+xBqgT(AMVqb0dHp$lM$FHx^-g zgnplAa{TW2#W=rP!DQU$e9S4MS=j@^vt*R-mM_Y(n3QOG7IQL7XL>O$3#yxSEl@k> zS4SJu0*}%wuYTnPQk|>k<-a!}>^;=TpcAKA>TNLA?s71+u*sy{u0>lg7pBGrHZ_Zo zd(g&A)XAVUb!-DQH>j$e32j0;7jl`oTH7?bmZ7;p+jMVSYi^*)%fDg0-TNg)}P;!E01+X7Tfwl9WXf#DVc#1Jim&P9W0gxGHc|gqWVIE z`^T56?D+%RoVKp>yIvfxy6!5dkf}8c~(j>wq zubZru)uliBZ%@`5v1$tqWzvJi;C!l0L8Ey0e<52Hj~b}WjV=l8>#%3{^sbdIP6~UOWBYO>Mkjseeca?@w|H6E$%>PKcG$Y;P$;!Ur_yOfN?BNZ zMiCCnQHm8($e7|Ua99eJ+p?r|u++7_$}02t$X(fp2HcMz7-IM^*huQu?PYJ!W`p!3@@csXwr&E^gxjB< zF6=FE6v_R#z6lF?-gl*sqXFJUH#_PETrRu9#UlQ&f2#zPKq(SNhNUq(>1j(^jpL?j zm|iqYCzGbqjKu-h1}^hO;nl#Zr}RjiT4)Q!?NvUj8THLJjnxCN>2Vv8V-)DG>7n6< z-AG9YT2z=>l#D05XOBa5^zL4t9_Vy;^>lj{-EEznHxwpjeA(_qB#7h+zVuVsvYm%| zFB_iPt41%s@ytN=_%(;F8r@dxOOijAFwK6#Zh}7SMwMFc!`W<@bj!h4>II-^T1V_OOwfL;v6@$_NuxNk|bx4U$MI!`~m&t9Zdk znP6~=LMJZc+ciaVMDFxb|iAuNKc>Jwb|v5bd6Waqum9?70XnjJyf8L zI-H*Y^C5!h`swaPqjeUVb09)fzhw&kXR^obRqCbfyL_plUrDO2 zay*dr`h4B-^k7Lve?zY~8}(F20P$rF?w&|@!nbDgsd0b0Xtzz;T!DOlI?Uaoz!&{r~qI^82$}tCU0TT6%kSS6B729OaOY-#I#Q-_-W?TOOX?bYV)% zA?M3a0zctZtnB~}+q<9nYKDD1!BD39t$M}gp0bDV%R;}9XU9`k_f){U3rZ{^%h?<- z(M@qzU=Hq<(N{ZPAn%`svH+z_d9+okUIUCZ<)JL8~cR)KJ)L$urY4GVH@DsCXrd|-{?k0uw}Ul1T+4 z%ZLYI)U5XAuxVZ~9ZzbwsTpT)88eLuj1H@2R@f)T%ayRYN*(p7>6uu&!|ee6Kdu5vK{KSL`iZA571n~ zH*{#_RqqFzF+6Xk95^5ttTra1FzlHnR8Aap-g4JEb5#xz8H3qv4s;YEy0wGHZ^M`n zf7eC$FFmC1WO5fu2gcZb5r%l5{QSMY&LFO4;9AC`Ki)bv|j9u zJ(vC!wJYaE?qT!UcGlm{@+hooV^cvk?qw%s%H4~wyiKc7adjpewJRN_Y}S^XG-o&} zR@A{3r7GINh^Qw81z{RqmV3wvAP69fSk7vIy?HnyEeFN`@;X`fe^#L~Fmic;%C38; zK;@oYR~4v;eiFCaFHlF7K)$D=7H20=n&Uj;P>aShQIRc$hCzfxsO!+am7c-zA!DGDbI4||ad4{5?dx4|9zD)} zvX9_Vcf} z9b+b2B+|2Ed~0#-7tGdu%Pq&cc7Ad?-aRzYTSnO-^@Vs}zR!K&bl6|*P3O|F+#a<$ zO={~&$6|ZbxVqgQ?GCg{oy%>xB1`K7fml>>xPT7V^3)=QqXyQIGr)NOdla2OX#J}_ z_*Ux>x#*CwuO6KVGE!*?AhU?2d=9OPIvju`U&9GeYr@e@AVJ9b-d%)YY&$;yyw6`r()e~ z(Drk(H3-uklJ2fhL* znUX!85VxBrZG@K~fE9Lj0fj-ov67l0c4=tnK|QIb!>on0sP;YU4WbBxLhe{v>jiCC zRTu@}7LZ2VoILVSYNHn>$vb=_nO(OgHU)prR`@NI6VZt_B4+Tp0udn^UQ4aR(4wRMi%*`$&XDgdKms0i3`Rltjw{MRi35b4pvG#AnGf7ML zRcGIjWXF9zr1 zprm?IH+!b!H;T?o6;75~%57HwW(x@_LXx9AJ;Q*@E#YBh;)BvtrK# zSuhPM9eehP1Vc1F5sBy~AkdtcjHX#V7>sfPF({hv1Ao6)#b${PuF{mG?AB#HRnzzs zI&ATMg#I*fqhg<7#lV(b-gG4t-5gTF@euiM;p2;Q*3i z>>M~vjAxAeG)E-`6P{tvnPzH#pKA7ZmioJZ{w|}xlFhtiSG3*d+WlRVgLQH z9!LG-)1GuC66^{nfep!?9fPsO-KEJii+?dOk$?BZXtpnODdJtcN}9KIi6p+(+E}X%~CW z!R~didytC=1Z;DOj+Uadg985#DSd==Nv3BA#^ExwV?y6!{j*#YWSy-n>6j?hA#| zev6U+SvHwyOZcotPdF3o?Un~~vu*XEuDxZwACdOrP$5j|2%pm#)zcWjn**B<#YGQP z2fVthu1_a}6)YO^BqsDGlzq9(W_@0n@I+9UprGS9YiQCGjdEquW6GxL5^q7`pnvEm zz)uYqzNZuL0McC-7$^@}$rKEyom9r>6rohqJ%|Wq492#R<+(i(-_Whzd@`W>@!A)? ziK6d@XMB;RSht5iJiKQyKc1Wp4-9X~?eO$1Ol^)%C&vm00V|=t1hGyDzm$+}u5Nj4 zfL%v)C+vua?e(xb&Fr|2<#o&lf;$~cBzzNwlqA<8PAt_RG^mqOWHJ`4%W{l6-E{|& z>LM{rE4=_c^P3K(hIe(Ow#I^ip75sH!GlH< zA7@ki#%HR`oOWJ4(EEk$xevs)aZ4*~Xt-cgTvc3Ww4*{?V!ZT3n>SKr3P&h2zepbr(q zNow$63&3EE_9a*j%HQN>^hcN+Vdqc^FdbkRm}zAB3fg;e)QLX*J^6wX zj61PCITxRM&hC#Xo?P6Gn&YbC))>+QZnG^`=*uEu{A|4x&W61fTR7dB8lU%@i3gnn zTe1zlng50S!=3a=nW_s#%SOxV6vZFVd5+r^ z6SxdUFMdPZ1>$Ft(=;lw3&O&wpC{;5=kZ_kreyg{6n?cL-U`%cruX9 z27=ivjR~|(3im%``=l4oywZB7;u=)4Z=HF3chQ9-cEf*0-QngMC z(klB$_5JLBiN6Dz!zq6)^pQ}bT4Cq4-`DtVp|eE+9q4Sa_ln;y;;bd?2(+9~CPw;O zziM1ZzE51ITfDx)Yt8HYMqEez{fzc|=!V$0FRWl_LBA7q+DMjyM_@nr zdEZIwko*!jlH=Fbf)*UcxF0jH{iA{nle;@E*MbH{16p$L!gbr#>q5iqT@vwTq99sm zm^C%;&?{)k(KQ)Ge{juLREABw@-lroRTqZZ+M~7g9cU}AiL&j>L}AqD!2U$EbGLd; z#F`J5>8i3Wy_4$%Ju+xL`!E1_pL+cw-Y2fl&*S>)yL8bGVoH~-`JLPvCazBL zuI9bIpxw*B{~RTd@v4vRl#Sy~jT>oH=jzRx_qwHdug}dj-X{wYb=lg9TQ!B$o9|P{ z>(kBqeGw2R?S9_8xL-Ru76)Z1u|yM7Iy%?9-_GX!UPRy2_o<@ovbF1v+;6>qU$|3} zQqQA%pTqogiNRd&B0VbYmh1Oi@8f6J@0pEbJg<3A>^I$)ehm(Q2y%28=}@)$R0c}* zEEE`mMH^sG32d&x>-X~0u<&GdRAxzO&Xr5eMa^a<%A#3mA(_<2mi<Bf{5;eXFemXYSNB%&Evrx+8+XalEHxXyqdK8qf`Q^I$Xvdq zx^yc2MEd<{8NxjI^gx<_HpPGf&c_B~{HeeP1N_dw0|EXba+&zw&YZ#>X`baCYnU!~EV3 z+iXc-sruv|DVt4ncPx1WfxcXEDV<<;W!YwKM300U13QM?^9wEY9I767OOKhbzW^a_ z1d#?t5Q11wn1Id$DF!vpPmV3Rer9wu*0VLAtVZ1KzG(LbB^%hc6zJZuA-661r?aTb z+cY@P<4QPY+0fWeH_UYT9gazhvY{3-n%{h4^w74P)ArT3>E!Ef+Bah|0vwI`rRoSj zi#b!KIfL`??dtqu?b)=@{MCfb@mdf_( z#-S${7Grw0dgGD7lY{(l?}=W1yuuDw*pbr764zxO$UK>mA5NT0aC3s43$aH+NK=GE z{1NXnUjBM7yV=XG^Rh()ds4?v3rA8Lzd4NGToMO`HiSzl*1r@GS%~HU3YgR%8NvU{ zkz;?NMDo6d5{MYNYoIplQC%Y(1v-8=Y5PkhlM?$&S{)!_x((8{YFpjE;^#*JEyVv;cF+jQ zFm}SgJQJpeIBO3gpMQdsCZa(n0O zEu-b_gDG#iE0Qa`C~xzH?!RyM>0=A2y`jUD= zx%Pvq`ErR-dd{>%x9Xs7UC`#*ccH1?sxb;C-Zll&LJ59NTv?U(+a>Pb*5oQku9 z@jK&uYkV%w`{E4oSzR1)2ozU8iUSr7_he_7S;LVqgeSWI{tk6@C6Z}`o&8EenRfZT zD4ED*Y!qeR2?`rOiwpt10dJ!xpdqoujt&eWLD*S=5+Hm>1mO^(& zwJjf$K8LwYwq^h9PGMW_YOdoAmtN*Mq382yF{d7DXpSQ3*Dbqt$@X=f$>OCSvX6@E zejBgFn%|;cHQL=N*>}mdF1jl2ug<0ag0`ym{0q>rc~%O4N(R~YcdPa^IquK|-^qnx zq1w)I_^(HWzLh!-FZh5=6YuzG)!sw?yUe?Ha!&gS-XYe5dY?Bn@AJI04=X}=()k$P z!KGGv8`tN*ZI1KvNT~{YXrMx`3*hDX&YOC4yQbzIbl0C(p0ExG>eO}y$+OFQ`d1&~&MLh}r zchwwl;5Lj2Ayhm%+@qWBA=E+LI+ojy@;jo7tkDa?Em3f?+|TQ??Yp+-sgGDd2QbGmPt&_p$W2} zP2&1u+|}zpKdsIi*7{1kZWzx~9ru21-t;uv{sOfG;<7SB+u3^CJ$PkRv>h8W%^O6~ z)N%h&)$SvWS#I|3RCQ(>bDrkSk7a7RdLMPpij{?pC5^PQ?aL@_6>3nG3Zf*Hc+9T0IR(h64N zLNCA$Q2X#o)gB{VK5mUdnvV4T8hudXG}H(6KF=ctCB`3~hL<8xx^)dP5qA>pSFis( z1_0|871cppn^{$XYpV5{V)ww;D5G|H>1>%DFSFAnDw1D`9F6c>L=puFzhiE;*Ud&8 zti!=-26k4@w(3vm`4f!Y$sS-}N17-Wl?l1s=YtE`mWb9t*MbV>WJb2tK}v7hSJ48*itN||-SH6;*H8xwq$S0FqgQPjJoYxxa33|502zT?#1dOkD0W7A-~ zI}na-&2&xoN4r^a`0DEhI-Roy{H#=lxi=cW+%yo2l=kz^Nghe7Y zTfRG&2H8ei+b0ckm_HUWfmHyau8fu+5=Ppp0NU(X5u6$X8)|N2Q% zC!$@KYwAQ~yKZBDhdJeux~oy4EeQUh<0y2mnSJh>$Lld!Tn?0;shPvhQO&s&cHb4{ zPzC^L=GzaIJGS@7R{FQO+k-3o{SI$r^rq>HkAe38u)%!sX{v|nMl8G+ws{6N-iY+4 z)uZt14vL5e2(1^2hl>2+ID0rm2I+#0P1snUmFcZMYtAZXjeSP$0oj0&f%^fo+dRxO zUXQDLwx5rp^aYQ2b2h(}NwU5kuG1kb5_D~FxZMti59%~H&xO%N45k+dj)64q1p!`A zv1hOJ5U8I3m`%Hu++_7X&=A3lQUS{pBY_>&e_4FwG9HWosm%y@U0i&1mi*-++&=(E$mc!XhJ@sak7C!t4 zVkQN%X`MJDmaLSz3grTxIIO46OaHQ0Ys`S!@7&z$WVinmV> zCK7|w?IQ<0zQvKsXf`vE*}84pR(#3AAH>-7z_$1Z=A0F_&coH^XS&!!UF@DN_M{+E zN14nsarUT~b*FtGFbnwj6AHUuAsLwCCI$xDdpH|#_RbB0S$xhtoKKYIa_O{TF1j({ zl$Sa>266_o7DN!ErLjI>tkjezebYKv+N8>fol>1Ct%5jLjhI@8CSaNvvt4~19ewmM znv3TLqdnur(s)mFFdxqu^$U8v#S?YA5!TY<2jkE7?%K5%AM9_p>~aNU4t7cI;gs2L3UWGFdJ5H`J( zOQk|tDLI+p9$QF185DS}moESdBu)+GhiWw^09h9W?iCrz)Ma=dL>GZ-(o@o!or%|{ zw)mLiGRX4UkDSGh?(T|5;IsPQ{?5k+W?Ep&zQN-D8*h5eQVKyov^RzJ5>_ik?VYFg z&Z52XP+UOn^in2~2&JX?LQ10cE+|qx-%`yUH=YKzNroH0U}Vqh+57eE9iYh36E)in zIySFk9&ieOvDyYrY}D+BY<_<@m5Rl(g+!(n&ZkinlZj78cxEyz<4=k?7sj*Il)sfG zhmls+PoR-?MeN2_xw@LtfEJBBz6RJOkV1nP1c_&sxuy{KOLKso=jnbc0>&N>~_w&cG%XF}O2lI6>LkByDgzwNb7e6E)M-`l$fOz;9s~s30x6PRYHmtm1uFGuh+B7K5 zm4}__v@PlzmKFvF^?l0~h8z=UUkJN_C9X1~;QT-g2cEn(NDAeinzG^RgS7q~>Kq$(%8quLkg$MZ zhLEkT`Yn{ZQvHhaFh|sPNq^v7I_+K;U?oIQud`M9tLlR%$Jn_oY-kHBZ(;o-PmORy zy-sXmcWq!#A<8~DFv!cj8+*_7$|rj$YcgJ8D^E(SH)pH?^6+>?>&sBWi@Ya`#KR28s8l!nyLa6-G?~y~8g}vsLlH~2x9SjwX?I>z=khIOXWx>MxEX-%g zSwK2Oi+QV_<@Eh}?g8Zl;8F2_H0yG@Q!uLBU{R8Iz!$N(6vZZxUA@XHNc#3rkpSdW zmGAUixCmq5O8ac^N_*cm=xH(QKe%qx=SN+=T?>o-n)$xFX}TBkyHbzHCgozPX{i$) ztp+`mAZ)8n=}lGJxj1_SnBX9|TRfRuVk6Rqsz7Qct>tATc`rH-1KJDj;rJsZ`OLx)~rsd!~WUjqrfHvB}S<^ z5OjvC&l#9Q(!PA{d53~NLqSmt0yc~9RlD&E09)P0bOfRRvrd(%<2`PjI~QE=NqD>w zX9z+GE*?r;{(LV0$%>v25fG7jkFI|MW(?K$lFD7%HJ&bE;r{p&e&B&W@QnFKfj(S2 z+|oIj_D_C4=5QSG!;R8o)xGlr2M6vPkPmj>+07T>nibhS86+*4#mnAdV-MI^z{U(V z_N0-WLPfsOXXFY`%*Hov^ylU*oBHPb!|jzyxpRrfgv~~*hQA z*MZUCo^DdR62XBxGHfApD8nBJvv-7;FLXM@bs+}MzB68?_p+yL>@7ATU9Cv7?V!2G zux-Nd4R3^pm|pTIcGg*GFE7QR+Mu_p1@7v2ArNqlVY_lu0K;rX`2E5~BS1(q??q7o zS%XNBzc$#50Ta$Jo%ih2|Mj?i_P9hzfG? z)lXmXcOU&7>XTkts(2l~{_+KgG~?^{==a#i{*rzVOZr;Jq{Ktjv1RR4lHCWrYAxH z(peHqkA{=-jiHwW#{*?zL=O%K0o5vjnnSNW%q|6_b@ zEnm+)1^;aD()-v~Wx_R;rT<#pA1tuRJUg3X55(9VF~Vm6?ti;-zrt6HM~yt?_c`H$ z*sO(Op6ZYblHK8OxuWf9Nyj4q0f-w%!B@CD-7cR(R z`xAC#!6>78+=FHPw$R{EZfvFBU^jXPz4=hY9(KMVR#B;=ySs|MPOtAy{jSN`W2N`M z@xYn+99y){TV2~tcKyYF@dyHG$13|${kA;&x6>H2u1g<7QPNQ$Eb`Ln>b78}m|4!q zagW<(O<2v@45HwY#cFjrL&bz7fk@iWW#EQ_lt7_wJRZ$JRo%A~idx-DcFBwhX|`G{ zW`aOs2IAj;J~mhAII&fXh44IS;xLfcU1J;^>|sZ&7_?sh8b_zy=C}HtzA?q?&wxy< zKM{1l%AK8(RC?*sC*aqlg=nlYO6$cor?HLDpCf{N3E$_O(v8D!2G zvvHGAkJbEDOeqYZYEobnRZ#ucVK%;WLD*Bkipmg&Fcv)c>>13Ul&tsLE33Vao%{9b zDqx$zwb`|AKlS+_I9BIp)_(H^^fQat`!LSA&9Dtt-_gb%Xk&Ne*ufmjW&Utbw z?Ni-xkAn|8SjoYn!u;*(%6dHVT((*m9uChX!B0P0S?+b*Yhp)Dtb}rmLLi}Rl9q=H zR&QY0qpVZz3u6$|Ts4WXB-HvQY*3e(lMc8Pqdi~^gAC9f09TV%$Px5dEs;zm zzGauwJZ`b%GTvCgYqo|nRLkLtSc6{OgsgLfQl8|fiz+*4uA~qHx&?8+w6t6ucsjuz zPO!GbaN^#C{FH~C@SH(DPcP~Bm>piT*%1tyvj!-qIHZNN#kU-GnDq-Lz-}mT(~MkV zi%>V^#)bgC4vPAblzUvS0p&V$Z7kJ@`1v*t^*S>h=};&cu-J@2Z>B4kEcE3~TG+3e zz3J9tB~!XkPW$DWAzJP(N2%>Le0mLXFL7zLI&xQ-%@M=xK$ss25mV2zw5r(a9qbYF zGiLrQM6UJ7+OtPxW}NWFYW8?MnTVTg7StwcWnE%Ue)S@eGBkHG`ev|ivrdq%v;dqz zs+u_%%$Bpkk)91h;n-BEJT(vx=E}L?%K5?V1Eo?=w$hj0<_Y-P#@Z{@?sE4?`*{pG z+KnM&CCuBD1TKOTF?I<5N7-#*HsE7EUk)@8K4zK=BxjweR0h=RkPrDGa86-V&J9ZMsUEr)Hg^ZRxqNS#6YEp{o;-ib%?xh8n?LDb zryT4_8#`rVA2P8gP3(RX^NS*`vqokIftaN@p$xUhqsdyB1vl6uQ|&0^LWvLl>A_+j z^qB_x2q=ZU7V`-o*ep6bMFox`NT9_wrLMQD5{u$7^=j2bRCc#srPiNOOQUGDsm5f1 zx6|~zgJy*5) z6nOsAJ`=1(KwE^(iLd{QELeQ~WpxUF(D~WV{Qu$SR)zgoVSdHhfONsD`mywDiAW-U z1`G#M*VB5*tJh0bt4km3g6Rm%sGs0ms<|gJi!kh7cbUE{d)@7?yS+iPOy3LN6IPo* zX~_j_Dg@GEr9ele-M`PC%;wzgTsCRn>u;}g1o-*wPk;FHubp}3>{~}i-+K0$8DV%~ zZqHwOguTFjj}y!TEy;IPulILBB;HrVr)3{I>3-VH-vX6ABt2&=NqllxEk+$^v3!1) zTW65;25^dY!sZ1qx5k~LSk-vyj0Y`&DWjsuR)b#enUuNDIteCO2UG1?oO>Y3(`;Fh z=|MHcs^C5&`FH@*Tmksp0l1n%LB6dmK=FQ@j5w5q5~K_nNEbftjgK?0Z{Vi3E%i@+ zEhFDheLvqmbNDbnKki)n5aRpCx#7DPfATweraHv=KZ!X1jo5EWz-ISK@2y_{V20fY zSI@x8hK&YpHAD>jY4#DulU`3p#b&UkSWj=hV1|mM)mol&hQrSOT<4rFh0FCxNO!Pg zGUn-B=*Z`dJzlSWDQ2w{(#uAh*=)2}ggg{hu4XP_CF9^%3xesFLOzwicgTZMG?EO< zX1~>qSG6AzQW54h^C4uPF|M1BNFIAAf)6V*0OA!Va1?>TTl|&${+%wDx6KET^fREQ z*UC+NS+Loo&ZL^x8EYnM{8nbRM924}UcdYCGx9F$eE9CYs5N=cCF)O%`kg$rIQcAN z?=Fsd@0~~w1#YK3TMyg|)vHCMv1<05lj*E1XCc+B2n*F<*h4rGp${9 z57Vj!P$WTCmbz}6b{6pC&2oXw9831T*I>1JK-QI?h{jz*5nn23dkuS-wXMB0_E^VM zUo_y`W)D~*o!Q6e*>ZvZ{U`pii2saLQ|b9=)QtiM2zWsPDW6N+9SR5muYhE+FPV*6 zRfDkn0MQVq$=6A@>l=73IQLY#A0$u67!muW5bU~44e|q{qtm0Qu+8kYIs%G$VWBAp z$@<3DeoZ8F;5-0{EHjRMe_aidu>KSL5uDe=V|ssePlLzwA;Dw%fJi*S3<8O1fAKW3 z9z}L8%O1(HjagRAvT-Myva-7^Yygm8{aHP)>se|dBGufWF*WrE>#=;@j@U1Ky=eat^Rt4MddeQ)dRwC%2;`n88Kv2+zez}>mzYfpzxAM9Y=aAw?rR?Sj z!<8w6*^ZtTV%OQV$BB2svU&lsvO?5nQ`k;j?yZs*y@C_BRd*mDRW*l5klsU9Hg; z)`j|${R>+CNuz(sk#SLoqRO$!CiA1G$8Ow~ciJw#y56fFH6to?_5q2^egeCJ;!mfm zvu`Z2sp6g@zq!C}%CI-4*|9WRNwcXmdrHp?da5r_AXYl2U$G`L8AmWu#)4c?*(5VPpd92Ma}n3z_SJxQ z>#n6jyk4&bKzUX z%Bz-ruIU+8aR1AhEy3o)trE_}S`w%500rciRxb^T&7F(xp?6l8qp4%jY=;0p1~0N|q0&k(N= z!Yo9=15mkRqbp`RV2e1Oa7JwV>@j8IqQ4SY33dh+eq;;U_FF?dR-DOXX9|UxY-Xl7 z)_16D?O&O#>&U?C!b9;m5n*tVKY0ZHP5~$3yQ;e|7(RQO*;cf*oAgC}p6N2WqOGX6 z?XmkX7Cunxbb-&LsMqh&WxSv?!~xiuX>ar7X*7zyOom1yu^e>RZIWIGUkEWPk;T4j zKtMe7eW${(K+rEmp!m`!Jc69CUY&+1~v9GuL`pymaed^X8K}%FFhlU^D z^^x*?TNet!2`h*i6v2@K&YQO;*}X~jNQ5|VP?|A-v(L&-S=gfGu!X~+LJ29Pd*NK& zBQqInH*@yvagZp}btK}vNiD0KH%mUZ!zeH4RhJPHUYG?MOcISemBATdHJ4Jim{#Y%CRIWaam zqom^oRDocTclN%#x{8{~9t9t`O~BZR@KE7f`#Wyijt^P+X!N-fKIq!ARO4Huf0y5Y z@0_qfw!a8bv7c5QW;eJU@yVRTC**s6gm{m8Qm6PW*d{Gf6(#nJ**zhn)cMK}n-vli z!b5HgeWSQ16*LIt8IZDIoAkF9H~c#a7d%wRKp&Mx1%o_*0)>A;y+VOL8ifinjQL$G zD;Kpk_P+??)h||qAgu=~7@)%{zBAfo2*}EQi=x9QywXFXOklz`G6XNQ(bPw(nMfw7 zDRAU^TfXmk>7}4Q9{1zpG3~2d96K8e24k%s;#u_Yo#1#V0096b(o1}2L(lsAW9XUM$6IjS0G`9}XM&OYkTw(- z_lb);tN7xq`hxd`!v;5E6!frrI#HN{kG3Du4ST~E=z+J~Q&fp+J;p>R{8H=Q=e4hf z>)USOyIMO*-?R8z({H@0O(UO;1n&z$#S}?~FII8BO!}NMjlEnoNA3%S+y=x=I(sf} z6j|k0wW@XO2Qf?PT5B4EZ@Q)J`m0;@>KoH$L}TG_OXFTa3xS!$Bf_8wsgMh3^yTB$+QI_HZ7^_U8$HPrClX6nxAIc?`s>R` zx6`_f@dXx>Rh-66P&gsH#b3GDi!Sz27h8t69(4OA&+EUU=O56M&GG=1mmbm|*UOP= z1N+j7c%dqt^zMyOC>V4$`1n)6x#b{$pjfHJu z6y@Q@pwTsYagEQnUIY5vk`D2kPVLF9Uqd{ZU#ZvleB&DOrGMbBvOV$_wEbe|ivUji zvPwxRX+QSL`}ltBoFpvv#i}23CDhnK{1(w>F18TNTO{OZJH62MGA*uE%wyV5+h`pb zTh>_XT)7?VDWlEi-)mpxFJLvj=gKvPz4wZC_Ei0LW2h=i_c82hA&VayK6Y81g2&#{ z8g)Sd)r9Q@fV08YO)b^ZEXJ{lR<$;){avFmZ^bJ5o2werXv?RYYbq0cJ22Z=@GKO= zYBHO{Fo}=v%6G*`O{#0^)hnC# zwZ@|bPGug4|1+XytcdTZ4sk`TrDXsmn4MH2rItqlE<;#1_4T&{1EaqF0r0Ay)v82( zTeUlqqNWOUCCmow4xwy_L-rz1!oE#PH&jRV1dasw9Y&TjGA||nnaOES*gNgAebO{# zw{!1=DUFO{Esoq|d@>mc)n&at$zvuLWL*jH(L$E^omVbipg<$clQtM5`-H;?>RF$* zMU#6>1q_0HNuWI7C9`MG6-)bWy>16sp7cgtrPGUgg+gM57-_#`JMr4r+$vAAk@50S zMzODbl-~plrq=KKX`J}C#W+1CO`_j~=t-FjTnEk+twsv{C2hg4ig-76sRv?D#`x{P zodif?@68r=n}zK$95L`|0|^FALx~QWXVIkFHz8p)C47@^cTknrqud{H+xDn&R#@)> z;Gud@P3B+G=@vCuRb7uvbBYWIVm?&@cBQ|4Iv5EKW~Zj~-~5(tdbg(g`k60KzAoSb z-2S#ZXWn#1ReMFBiI4px{|XGDfyNj}ALr-sb36Tf>9-gOyG(NdKV$AZfV#1>u+J1M zGeb}mrzt2-(`geyT!Z2>o5VFLVo$eR`gc?z68^dy*`a+$JJ{Y1R_|bYibslkvdG>M zqco}^b|S_NA$E_09kH`z2rt>#qc(Q0jpa6XD8 z*Df^`wE6WH|FKmH83)BYYQK#bqX0(fj%xk76q`!1o1?5AU5WB1E$oEljD`CkKw@F1 z3{N0UYVaFQAgvdy1)z?Vm@wu1C~?VVT$9`nIvI~C7_K|*CR|y>zO)quZx%C4EGAg| zt)@Myv0J;XRbn@Kk6I`cWw&&e%CfZ%3wiLh-v^-#Fg({6bg|jB528H#*K6;S?Wz9K z4v@Ui{(!@sV(>xeM0Ffd*d69mX0A8;%>0ar*=x42N5TQaYyLop`zM1QR~_Qvz96^z zC|s+B7w`np18fL_%1~`SZ3X0q6YeXcW`>BuyPtjXUu&34G%eNZg>#=8HV*dM9d$cQ@nW7@j6#3F)FBih6$(%$%QVvqQ~c4qmMD7`lTOYj3Cib zMYaILVW^qy`Wm+xWp2?=f^SwDz3{3E^P^}Q_QY4ay8`{9Y98U-jPGC1t$b(Y+>0+l zZtrP+<3;!;SmR#Y`Jcpk%&Kc#)tcu9_Wx=>{|E96pU0Xn)YC@oXYH9g2HHp?JtI z1!|qaV8UQfdP}85PZ#eD`K=(YiI+6RaR^mk4>6e_;EO0lqyU-l zxO;kf)fBBrtUzfGl7a}z;46L6qy=R}Vvw;_<7F6lEz{CLOwS}H1^`M&d%>~dZtLvy zg$Da8&g+$8r8_hi>ggyc*EuWwAW-b?D7jYb#dZ`BvQw$~`I%^HZgD;vUp{!GtLMPd z6odxZOn7SPKu_n9gG=$!(!$PUbY^}Y`3HKoK)zyMe-r;QqBT!c4?NKEBt)G$*oVsO z$uiTIedXij(`6lsI6?LEwj4X=XM6o@#dXxhpRusFS=gH_RJH-;)~6Ud1vfl40U_fF zxhtCu2Cbc$WW50K*-$83fKN#3?pXG8CjOt+Z>}~9I2)8dBER?t3L2TMXG?nH&Pt)4 z@W(eLBb^!VT&=5X2!y4{P2O-~d%jfbj&!m+y?eIy@9c|sT`1n9I7M~aw&9V1L7#oX z;|q6eE%xo!)(i3QIg$G=)eS4yot+lvjBN1AvcXa_x#XIJ5Y;m-669>_z41mSOdhq3%ECC3}6jnrTtJ-H)XJWutg)QI*4^n6JUP6@AbR4&8H`} zjs&saI#2%FgBQ1Rk5G?WpY#7F_8zfUVecUh6@gHOW(;jqf;6tVK7J?G2i4zE%<133 zu}!gc6sywUkdlYuF!eR=m*;v1g0cobI1p*FUVK0GHhva09>S)fiL35se~-Qxr9{<)W^YuAaAz

    yRYTh~Nj0=&tQufPbu3^8%^VgYlX!N#^uDM;~;{r9y;kR2Zr zCl}N;F1~B+_u|@AasDw}+bfM$^M@TL99*b;S&U&LN6OSC)x3Ti>U&+zI{0-_o!Vpn?nN?$FvV#>Xw}R>&=ixx+st`c|n1 zjF1nJzwK z|15~$&d8m;O ze&-coNj7Xq)?zawH4sB$XIkXiX zo0R6SV!ULjo&6kNg{{o~yBN2aG+!ND2_FsfBVM-RW$(1GGZuE*{FIp+%qQ@K^z1`A z7ML(5m{OBqgv4W$AiUu2x*+9;n@RQt>8xm+xTg$PrW$`#1XpE>Y_ z&xmL6KV=Un!Phw_siBvCvlzI9o%jzYr2@^ z4y?k>!?U~C^TQr>?{0PKTD~WCGom~!(7ui(vKiHhS68LUy4di_=HWfVNq&4~;I5W5+)L$VUCXcEz6KiMwU;Mex2v7<%bEygix?)@Y_P~bj@)ZRDu5Y$Y!%Xu z_}{W;YigMhZUY%UFzZSWRYO)A-JnF(*vW#ChV0*lu}+-3z7l6*O} zEK?*}0oK60MdIdijNfVsUBwe`7>R(R0sX6LHH*rJVa7hb9CD=d>f?Fl;5-Py=6GRgcH9@(vwdK8AmZ90I}-hcnNd0y)SBKf&b*pf zms_;D^dxG5?yBxM*~#t!3Y1tM5107aI6ECDIoO*8x5q=ks9Bi-WC$iI5UI?Wqfv9W zT$qzwiYw`oU0vDK5?sJ?bRl9WFHupdTCc0_>zXuDL+X9~c@qp=q-8}Rh>9p6&||`0Av#q!BqPpo&ME1Vdr zbSaV4s~s8}9?DomwgBHkt2Oo>4( z>p@r($jif3^kC-qx-9*{r~@bX%^8D8!b3uGgNcI6D#@JeRd3qAruZTsA;6HehksL9>LA8uoDE zA7V?RSg>#qd)aEkMa0wZRoMrEuaZIzIfPd`h#okB{k=Yn0VV7;HxXl@?Ev}0QA;e9 zcJ6ehQ!&e~%$Ag|y_m7h+tRt5veT8%r){&gbg|vPrN-@njhi+F|KT5kn>K9>Or9Xg z_UUwTa(u*h>5^|`d@`BZzI{A;`0X@CarlD>H=!FhREPUZEL&o}64RAfFR^`QbsT~Y zQf#hVcF)Nj*{np02j)s9xdcydfjm7%I4DD7uG2(s9Aw07d<9hxs<^b`t_B*=AMD9w@Qp z5OOJJ@@a=-%HgVSZW|Hvfad!%T!Fo`znXWMWYdbx<+a&d@+|Y%W_4z$n}RFPy$3Fw z3kL8907LxTrFT8=p2C+8R~@dY+ii>=#BWU&B!S7XyB>8e!ow4b8og}p-Z-G>iQ$wY z6y-CszP{dyv$o6K)zj_c%Ee!@*B1`nbVHsiYac3Izq*j5Jy>nuPZ3}G9a?IT-@T%7 zbwwfKh3FFTI1$Giz3u~GB{nd>I=|uHy&v=2BaKvZC^H+jfnVq_>_2(j$oQgJ%>UPA~J`nLxEzZxZ(|Xy@5>Jg;lkpx=CJ3d^Q*>>n*d2 zWQ9d+EoB0d-X#?yUWT|<93TOzPU=}D+nC&oRfLfM@Pl=%jw>J@4+d2fQV#JFZAlQo zgCxJX^BLmHd%+{+bk?$vwmNEFccb$?<2`IK8t->C)=XYh-D(bZ{KpVa_j9k z7e>y!<;0*Y`pkC1@^|Ib1V*}L_4rH{sL6gZ#rUL$@*yD@uTx46dT^iS( zK`avI7_L3nyw`5=^MtsU106gn?v;d3t(!IK^=6aaA{)qOB!5W79g%3IhoX1*=U~^J zT0BKkgd^-r)PA*o8go**4sViC;y1-ps4)%U>?~kTjJzw)za$M%eaEV`G~> zd*0AKeqDe6b>r=ZpE-ZO{=<3p7t=S{+1=Iy+qb{Qx^~8X1YJa*35#};)*<4+VvgV} z{2MVx`l@kx77Tj^%dF9ka}~2aX_c)u1IO|MK201IfSWhA4V-`&Th-|k2j31nLY#HD z8VxX=ahQXYwK;+72c)5D>Wu5Gi(AZL^G35AzBvS4JLQn)Zn|$1&eW)LBA&Yh;{xN z(Z}v;*f1;0R^zNibdibfS>ae}{lm;@^iOqf8y&=^nA)-U5dK~Kxz<5+k~R{ovrD(~ z_u=|ZX-hRn*LNCcotW$BoeKl$RGdjCC@~OuTd+GVCiPZ55J?tRw1_n~-RYM5X@g4l z#IQ>1cNIe`?3mxM|BCy%Fkcs{ef?IFA0u)vK47AxmCocf@!*^}os>aD1P#4ZGPbNU z7-Y9^*@c<90I~rJ>}c34>Ny^2t1s$-yQU>NTcB22s?%URa{c*uY}XC3zKL>XOJdRH zxA*p1{P`%9@KA>L7lxI&?yV)a#Wcd@&VFAuqJS(P>ukrR-#{OP#><0RqXX5EhhyxK zAbZlx{AQ*%v$F=KH~0)ZJZDs9Jz4H;j$y_nDVB6%8FXY4s{CEvQhc5W3iw0(a9MB*34)n(X zk85|eZvYJQL8OlKKA*4OC!aI3XLQUk=TEwj$BrxUWL%CX9M)x*$K#ab<#@!3McLAc zMi;QWgkK@djpmpG{@>b}545&)v9%v9tz_2q9$+3M;V12YkB~%byY7innosXyr)^I` zz1v0rK9-nsq?1XL$)8GMKeYzJOMZ{ls9Q2wTg%_*ytvBgC;Vp9zlSl@GHi2df4j=F!+Lau1d0hEGyd1If_pG5Sgj|`$j{>(0rBjK*Bs02a@F(2#x1?=;EgBQ*J7S>hnCN>}y0toC@q|76 zX@xzku#Y+ao0Hp|QRgP7>@ev~T7910m6c}0d9yj$bZK)AfR$he$Cv%gY(niT&AJwU zo?IH7Qdc?jss2ov6<}gDD3HmW#}Os!^Wo3JpZAwc4wE;pEE~PSur*hTc5f}FMq`Us zul2fOf9Wf%a-=J`ad<<(J2lW=E&D8{i~oy#gUbiY6t2d(B>W%26%79eTqawm1@9;a zveBF)N?er=SMZLiz7p}YsIPrsOd>>p%=Os;L7ofRR1c*!1py1d0nitIJI?hYq5}0t zQqQFLJ)o&~kGpx+%{*?%yTCbPet#}L>nfWJy4-A$NqHro%***w-V$2!IL05$19s9YKDMopLD64=6jVzH% zV+V0%bfb&+-RG$UQXAVslbcX{=T_`qr%6zPjPj4|aITJBZ!i%b$l6D!v_fyB%8Kp8 z1v0{qig6@6dxXZ3|5}XWV=z)FhYPH}KF?jW28$z>+a%wqWXf z3Y=~R36lj_kzb(4dg6Ffd4r_~UJ>&`AVmZzF_0p>ffT{(e|V{;y?;jRFFKq{Zxj1? zhjgsEWS+iiI`5vL$TP1cR(%zO=-SEJ@`8Vu6ty_M}!L{!6xb54x+|lQSsxRPZ zw)M@QeZIvL>Nqohi?*-+hChUUhp<9k`y#?4Kdo*y+a~)Aj3{%cXpe3Q6vTKrsiF965l0KFMnd$H1bZ^?Xz-+N8cV4`yKmYeA$oMqO=yT~IL5 z@HgOVYr!KrN)Ww`6~{Wmnw|09#l`ntW@~W!R}6vnYN=~$5yr;<{2jOd)nBb`6n= zG(O~iCI)@s;;N!rcgs=-4`9oHzuNs5NX|c+)hE~(sY~%|~)B4rkrfT!mU{N}sFVd~%50G{kP~zpI}wb-%Nl-`&BEbg+kt zPZ#-_?Aa^_hZrLN2!g&p#?E5fu&_-QRyMDg`6C8)QqPX+*?G<$Bd53?F|dcstpIGCv21J0?rAOLqEQOylfZ}9? zLU|gGwW&|2#>aDrrW75B;)2n$`(jCgMFna z3Vn2RjJNq%z#dGw514(KP%!H=|7zbm+f4pgA=Ezs54UC#hy%%xE97;V>}}(RC%X1- zYHc0gTkf0g&seuTjMV3FxUArr+TrKX@E_xjl9i5CCikR{rufkaTZph@Hg?*|ZbNRa z^_UgmLdT5!Q3H#QoAZc~4OD%egp0Xy8uz4+`LYuT++aSfPwSTv{N!@LT#l1LYy#|e zkpM~aMHzPDfM}X4w>TUcTOp4dPj_##lVJ0~cM!tr*cIc6cpyXrYJGF%GBIPtT##KM@nw3>&dgaEpUxxFpNrGMWD&F(F;T)D5z@5!^?{GmM0<=Jt; z_d}tFLcAr!P6XK|=bV#IS{JN*x1LSv*|LhMrZRnlQ+`h}o?)3x zXJpDQcdDKray~A0|A1^f${m$%OU?IrmG5hMVjYDLH&&{Ph8jUiu$Ufljeshl6DwC+ zo?VST_`f`P8?>H*e10$s=!I+`+LB7X$BhE;?(9G=Kag>AYd#ol0YLMfRTzZZ-1h!` zl}vWy{y~ew>48hb*0*~@DqYz#V1+vsNqKY+Q|&jHzcey|-%{CmT_-!-dc2h%E!j)863^KYqQo;kPpMoE zw(PRApsH8XtaU%v^#ep03*-6ulXl*GrI58x*L-Di`n!Xf20kisQ;$|Q+-6~KW$Y+p3yirDdNmzzdjbKs3wOO~s|$Hyu9!8DwCaKZJ{)7^ z7>l{w2FYsGo2GOs(l?@NU?W6C4Kf(I8$d-Xf+rSHbe5EARbwJEp&DJafw2p0)eW&W zPr?*(Mw3QQI+<`BXv%R9_VMi2SvX7#me!U%_nkaGghcl*UL_LU5B^9QlLZ5NiFb;K*gu*1ZOQFl4c%oz|i5NT)Mo3R^;9 zc1Q1(m+s57zwJHmA1lA<%~uo#KC)+Yy~AA5Tj1EF^Ka+!dOjq-4KbZLV07mqQGhH- z23^1%P-CCmuBzP-HYF?CI%B$TfM9e2siF+(rR|)iB{QxOF^|2_`6? z^u@Dh$d>!+w_qzTLSU2O4(1u*{dnuw$*hQgd5YvG)0YT`f=x>JvyqOE0lSrWXf+N- ziISS^9~_Gm&Fe+5)Lr42Zp4Ieuc~Q87psL%Jz%chKGYi7(WZt_$$hDuZFFE@)Rs$$ zyYD54k^C9%z6GGXyO9c=30NHygBfPZgaADv6UlVCc#p6N|9JQhdRH~uhJ z2p--&-VpM$LKgE3BYzj;t=@XQ-WCfW;&S1XN4my)v-fVV>~)&-aH)}b`_&%=pABF# z)R_@yzT?HS#pWr&oFHclf6k!{HV!s{8p>chZk`#{vyfjgLG0nN?zZ**v~jT6-Ei^B zIdUxZ8;6gz<^#j2)lP`Jo2Ci#&U(^%uT|C}&69hC zrK#y8mzqxUDV*dEEf;4w|DT=ZfBGc<)D>4Wo#aR;ZVE`@pPd=Is&SGBaFRDgauCnc zS^geg5NG-I6>HYsYu{v-HFghd0K@@9SlJb)xx<^lYOXlZ?JUlC!qkDA9?o{Ip6#&g zD26ng?2C)ySYPXGC!EV#F~>i8w$oiU7TIz=O`5EdXZ$}~AUb zCvEc5E1F9b*{AwPkW-$QK3=)v^2kjQz9+)&^Rst39&qsMEUeqI(ZV$rk0oP~F9@&$ zewK6O?RLM_H)7jv<2GAp*3{z5SAfl(&nJ_xO)~O(%dC(~`r)YbReS&~Pw#Sh9f0Gr zy3C2_E`*%1x?`goupTrwWuy`*R&$&Obqw|r?StRfJ^R2n{Ifvh$aa>%m+4|SPupCXI1W5bm`O_AAZu6yMdvA*G z3odGmhQB@NpB^O8%cXZY__dfMCGPUw@}LrTsYBeQT-6x#d_v1L6w2}{-M5t39R%^i zLj*t9yIikc~wm|z{@p* zvB8N&mjvN1tFrcg#ucE-?qsc7&yFvBks%~i!N3~9ebXxSRw9xe*~K$vqohZoh~B0( z%yF|BK=u|%FW#8ATXA*>$PXo4LR>=>Y=Lez0_-DT3j8N~=96Rp^iN~IQ|1)5w131H zC`)AWEg?1)V($vFqd}D1WJf)$#WU&QH=Ec6z(X-I9fT|y^5?WHo%SO~gvF}~n=O&S zHbaJBLYheO1SMTjr5s_16t6_#=}@qntJ|ymI{@bva}w00Cbrn9Y{EHKJahICb%$rNoiJ7Rx%AW}sDe{Zo*>gB~&LpJ3$XgfM| z8ACWQ5jEK0ITR^9VEGjxBjn?xb$jvEXAwI=j!umHPi7WS;D{1#pyn4Kw!D`VU$8mp zj)+6R4<|*^z`RH?SacQJ+r6GrvEbZ1KOm9}=7XJW1;@pXoN{6ok-4$PdNT{#$`%2m>ZH+qcQzU>#BMJN% zap0kF!r_#rL#R+iXs-gtRiIaclD<}qfL(PN&^s_-MX&h!!%7>Vw;Tcd){(%2Cb*XX z`ij;})Q&L#Am?eLz<+h19}T?^Xz}%DpMle38j7%J3SWQt8KX&>ZbJ3?)suJvKmU;M zXC-5119dXD(>Ms40kxbo(>(Z#^d_fP;*r zEdpck-#3)6u+;nubXochiOTNoA{5@PBHjB{*fIL(PyDwkFbbe1h>9ZqZUjdGz2gQ` zB%ZYGvL)jY)9&Q@M0`VF)6PyyB9pQ2vS%_0%RWmY*WyjAORfr!x}m4_8o1e;!=q9Z z9@TRLIYz+G8`&|$$ZnEes_eUG6T5X2dvuiDJIZbyWw}x29c3E)SYhw1FrY%et&6>_ zjU8=cd)o+2`$&Q9DL`dL^xGjTf0LOVFf-JG$*I2Clk8pqefErR+=#L##0wqJBPj$1M2mcYN($g{yG z--6Mgt6U_U@wJRB>Y;!yYVHkzf00i*Yx=Xu6T>-ZMKoD*FNJ{?$qsX56IHM;)P1qGeXzG(0SoS-G634)yQCoX^pm zvt(v>R38di6S}C`1JU+|bFM_ZiAg`(^)HP%zYqaq;y)$+?a!IwKN1$VdDy&qel5Ca zpZ`xr%2l_SqUX&nX|aDSd=B$VxgkEBjWOxU$_M}laZ#E!X+0(rfT)pYr{vS2gsLfS zDg%wlRy8Mro~i_UE>3hF1V*9H&wU1~X~GVjkpzblD2WTPxCoP)LMNUQ?A4SrhvN%} zThn=_MAiM!*EcjA3iS2&_{Qc--v0F?u|0c2LxWv7wNkTmPF1(g7I03rU$iidj5wGF zltT<-L7WNuCeEi2Jiw!{Eg?c@K_>%CTMo&Ryr5j~F&14M8DNOwiFh6L3w{_+c^$Is za!W3gQKww&{|BQ%SZ70ek*-Y9p6s61t-0)$Xmw|sy-+H-=jUB5g^Yz;C$8^ly%v%w zIk9PjcWIehe;io1e#lSjflDlq7!mhzOJyrUSR={EblB$!hkbRpNS_k`waJv>Q_@#( z5v2PGkb}Y*JG4qNf?ddB+w3$6AqI%?p$G-WSR0|DZ;27EW->D{IsjYxJchYQZ^)TRMohbmfl$Q4Z@%_5ZvDqgFAWR~^m?(J zh{N5Iij7u={mR{n?lS)+*72swICRd2Wwfqyx^1>V#!!nl)WoVOmPqT98WuCSVS%zt zFgJ5U{|^L7t)#0D4GQ}Uk;s8^5tmCRmW>W(@+=_b8cwEF3s|>Ah@sV2Pq`%R866cH z>tbI&im=DVtLt2clnqzqmu}lO_7_4qY^+{w$067RrDpNZBfJB5fmV9NT3Ldp#FZN&! zBS59?A~05mS(T02h(Dqhr;|)Ez?!;&AMMa0N+!bH6FwM9OazpH)MA8>DFPALZXzY? z{6!)wFhrrM*2A$y;l(_B-m1Lg`!zXO-%zzBIWk?7g0wb9{PSfY2QRAhLJk^j#sw-B zZjj}WH?$y<8YKx8*S#}NGV6r_Hw`4nkmQ{6Ab!jMZTGxaUp$K&=UVT+Vzw1I!Tx&H zRA2bnhTIbyr8dvcOsRrTy*qE_?U-*nVxE(Bebo*>rLHPFZKf(>z$Yk4-DZ+3NVVq^ zdU4taCAF!7J=vjQVIa#h^hm+x_#V&*WAo!mrFu$S{5%^|E7U7z#`iH-c4@4Vv*~6i zfJHmQomS&a4S~>Mn6p|o2w(zb_jE;opN7o66|q$%>*TC8g+WEroo~^Bo)G@s0EMsh0X>X-(HhD0~0ojen z;7KhT(y|sUFy{k~s?+H;jK}kysy8Q3rR>(J03<$b9xrSYkaabChnQtGIv6*MI(WQx zwRMB$Az7=NDwJGUIt|S>j_>SYcQzS7jToqRts`SWk*`YF}mOsQ*U) zDZhN9>y(Qh0hqTIc*Rn9CK5?_XAPP7jFfOB5(znx4(x{Yh6+F?Oc9e~w^H_38Ii&> z(26LCp*|ep-4dvq=i5BQxY+xe%^ucdK{b1bsPLZi4IgTxI0ivjvJ-p&_nZ#Y%=&WW zEvJXs@!{Ks`Hj6yerK8SW9_%L^Xp2?Q#@I`wfRXcn$2Gr)Q5QfZcV|sn*HE>k=cOpuZg2b#QXC$L7oqx8w%%Zf{{I z8{RT>*6Qf!PK1-0r+o{9>MtYrA8!FG59bhW+fHa#3u~5IWYxhTxX-M}Q zH&g`3bX;IqN#1SqnBm0+Oos@nAdhlUnO&G&8`E19^SgNd1ovaE8c2d_6%q<5Z;n*6 zaereT!1Gk^n8^*NyVDANc+a?p9*}?8MW1t1oh5=QQ~gJKV>arkTu1i5OQFe4=%QzQg7A~E2a zET36CcLryfVun^v34)`-0fAKJt><3G)j|QDq4uv9ITU88wc<6*K#7LE*l4lpks5-# zP%V?<)ibqR3TjtmQ;1_g$*8~yAaW|+`JMM6t3r$e5mxN0B0rx%^8%a{ zO=7@TB;KitAC4u(UH+^k9P%6Ht?6veG4IF&yjM7v4;8L>^P9?}?|bjt%b)vX`#bJF zEnLcYH}zei99&*m=MVWkA))t3T4VxE(_2DGVsS3?5oZKY6cxVyyx(R zfijGm2SQ`%^jL_0wtVU3M?1&9^PRDdqnBS+-u~(7=}&JLbL+v}V*YWzJysbfYxNx- z8Ft=KZDOTRXd&qF1U-O@E&~`2!5>z$&NhQ8Z%Ur4GZ7C3G3TB+8zQ7@(=NRGn0#U> zjN>^mjf@1!FBXk(ug{>HFrvy0j8)*KGf-C>mTG{YHtrK|MI|WI zg`(0?^jG|Y(opXHZkcYrs$E(&O3U59JhAIT$*I`p`4)3DoddjjI%e8wE0o&2AKAk` zx4iV_@rTE;)nc2sOlLCFTQftpP1x(Thk^mg=auX>lTMx^JqFqu2GtnWS#TTh zd#KixGCYiis$9WUI=l-xYADgOH>o}l-KT;g+BBfB(EiEFBMeHZgntY0DZc7)$WV?xQ|u+Ay|!q z3St=dSO6a;5dsbI8VLl^eJzLtrehSn>s^u0geY*r0s$Jx{o^a(K!BjJ3K4`*Nq|!f z{`m~%BP`8Sx~8mqth{I)w(=01iB=XS9Y4-S;K+rZA9c;xBO(7TRASJD9Vq-&)9=@M zH8S&2%m%6WO5D|oe5>mq>d(u#BE5gDoU0mcN(h-r9ru{oNi#cUW|u&AYQh?B4>rsJAmd2{#DzxQu6zvFgpVAq`6vV{81*DLadF8fC@ zmm#2$wBS8!Z#LtJe8l)^<5!VfJEOedF7*XXF63rozpZ>h!mDn);p(@;omY9gPe;3R z-g$p)gUd5NZ*-e3+0VT&9l!VX&OzfW^5A}R?$`eyYx%`O7E%nvH^F-zWU05j6|jUT zs-tJO5uzo^S>CH-=BmlZ0K2E6&$vC@jMy{f-Bi9K`(!Q9)UA3Rn}O<9g4Ds<*aShd z1dyXzth9)omIye8FxFnG9Ugst!&pT0(jLp)!vppJCmElQe9pfgy-_%#OjdME!=cIIR%r=qZ<+9f2p7IBc zz}rAMChQ|+YEi}jyztyvkzxy-ukKS7_Gy@@g{9iQ&eQn&NG5`v7X zb6E<+>_)`#%r?_?`v$gk_}J3Z%$8Z-k?f5GH|(tL8xFJNV8O59z-wVGiBilVzhVj$ z*!L%N4}Y+I?#3UE_DKpgSpbZIa@?;)H&au8QIy{v2z5hMRWCQ_C4fT z5XStym4nAy*dhEMITqoUhS?#0u|7IUoVz!UEkU>S@!b{ zn>0YSV!uFbl@G_*ZK+o6^;e0~=W3O7qc=0UZ$LMW0uq=b`^Nc+Nl0h~ua9`CO&S0O z|Ha2US#QUt4t_`c!8m_&;GO`#IKZmJLkt{rSkHFqksHn4t@(h4gN^QxAC&pH%nULM zRin{Vk6@^wZZK3z$`7V&6Ro_vo46?&_J@q^HGX<-1xK9~@w|eeNXM*g7r|BHpEX&E zgpJTT|4gomj%Me}W38S)o3FfH{)s0ogL79_)?_Z4yQ>9n72xK4pmI=z?j9x-(@>Nd zqwEsLbq@YcJy@$xK;i22K0SXx3kG8Y!b}m+0*Z_UalelP{{&3dDWy6};4>-ii1T{y zFaIe9Gr0M!@A15C|7sS)J&UfbO_;I@_M*V0`wk>5VPgI-6_-w0*B5u}VA_E?-ll@X zLHGv01ugImE?4tE{<~uA@67s;D$=bG3ttoaAw*^#F}5SS)9iv2duI%KsxQi?4eVW7 zHi7CbKBsTmAMpUh!>=2Uw>a~8OVw78r!r2<6nvvLzt3mqHgTQ6nTA7#a7KhhtgM8@ z2%QcZl**od6?`}+;-_HiC+n(+rhqF{NxpnZYte2R+cyKdlj>`_*ozp<;DO7cecQSa zE^w4xea*E%*k1Zl-QASfvSUZueD7PvuGrcN)4Vv3P-~mP)CakLu(Ixm?}U%{QqdNl zmbZ}qDbwP~WN@_&&KimthXdxKq$8O~%E?wdk%`N4G9@KVp55@nQ;>`}KWk2m+Sr8Q zTNxY>J7G4ijiI*-YLXHt(@Gl;Y6`~5?#XRRCy)Z}N6~n_-JsEFawVT`WQ)$CuREj0 zuISJuhjtDO?%$YUY?7sVM-#IP4E~Lu1lDbUR|*S@q^I?;A(5YOe`VlEi0uxsJA)4g z`6e&x@v@tBcf+NoHvyld8jJbORWhUUgg=g8OAefQBSR%kJ&HL{q%2ZnRGbQ^y0j-8 z=UxmxTPtL-A}Dqx5+T4V*uSfx!W#u3Ven#s^&7Sjcw0R{7_fwwA33DL67G2RvRm-} z`sGVdXU8gR`Td8@$IZwrV!9d1=J47yGj@O6Uq+5r;O5BP00Wog*+9$|l_EAB3V+*n zS7?KVSjP~zFr5C!xqdt~)?KIpzvP(ndKC}qE=`?_n{wNfw`tDqL>(`|tcWdqxGAMmF`A$I zZas^0`4k{IMcsPSFRjZovZnw1^zwG}+}1I&*H z_l|b#h8gZQi^~RX*FKl6o~7^gNLJ*GBJu|)2=FxPVeto3(axaPYRp&ty|Ck(-m2kW z`0)C!b`cw{ppPg_Ls8&$TRh#*2%nK`OC5(@$6fp(GrPmgOy-c8KV)KF4N5Xqr9cQ^ zfQGgT6^hVGIC_fRmjI&KB-2@xb-Fy*JFKX=2{Md?n+UJ?>@g}ud zAUD!FmT*23_C=WPj<L(v`{ENVhHR!C<=~yX z7nzm9ONc@eWS>wt6Z1?u!;7djP=m-}#Q;Kp6xTIa@8uP+# zX2We_lczPGv1_!*$eV`^-mG76wUu;`O)O(${y(E!P)sU;3Mm)>wb+{rB8C6x_0Vaegx;iAs~pm+%Fw zXD4#aW>V?gOw8X|>J*?s9)Br66AelW(h*5+h7U3aqGY0o#=2_|LIkSP6`jkQkPTK6 zSVEm1OcXh!)QM8|3MNXy5_+!Kn5o64nW|0Hig~KT3ay-{KZY-aKxQq6oTiP||EFMv zdagZote%U}3^%lfo`qqtpOBsYg5?K2i?IAi&w}X~ z`MBKLTP8~0NtEbAX_M*!h&H8@(tfllvj3$hk;+njJD0*B7uo-Ge^uHhya3U*bP{cg zC+uw_^aStU&UsON0`yRK_+JV8^;o}&Cm<~SgMMy;p_=jWSP2v(9XCHU!WI_);>`Tq2>3?)D+F ze3#LpB6q0psR(U^#!g0y=Iail9K|MVPN6^cu0zf)^u@Ht$BNAtzy2-l-eCJ^9v8yD zQ0{$+Y^59$wKEG7m#mvSQca3G;LFNwPw{zRoK(+&#>r66LAnHU7kXUgPcOe-v9=6L z?j5qNdpoz~l?AEKA=Xd6p5{sXNX#alFzjpwgaxc_6WV3qU)m{Mc0>39-)3X0%8BVVl9tC+2_(AicPfD9>OyM zlU(%kf7E``Vm$QJZz|T#jb^@s=Z3cE~7I$4F10pImc4 z9z1gm@g$E59#m_x;pfNeJo%cuh&F-Eg?YVGx?SZ-hS=h!q5ybj@{>QzzX@6;r~S?u z^-lBqiqW+yr=58HH8DP=-ILO7^?7t<&@g8a6k>7Irle*sdYEt+)b>yAsEzOU6{{zQ zq6&gM<4?^CfV@_l^nm%2@s%Lok*-gp0CNu9@I0F{*<1dl<$?{W@K^ytdx!g zW)pBfrUG-Zm?w-3Ur$qpuj2WqOX>=l0-Lf5fm`!m%Op%XZNg_4_}c6H02O zx-Y3;|18cpRV!&%`-&;WoT_^Zb4t9@CJjn&ugv^U_@$Wb?C&=b*9@y%GgRnFwcFQb zo!TtYMdb~q@%;H~=At*6y|uWjRsMopLZS$`tC(FqXXkUf3P-3wXc{e z^$d7S$jE$C3Q zrnc?OL>f{}Mk=*jNXEY``nglOSe5aXNL18viGjLDypw`O0vS)(hG_rJqR=~F;>|dz zl2n!`@$O2SbWSR5*7YgQ46zP0%B2ECH5H(#%Uz{ylDkUVC!q#GpW;lL?MLH4N88Ti zwE9H7kH>0#u*1^f+8NRwONc&_=p%YwAF`v?2Rn?|8qr5+LW600U@kxteV@iyW_H(zuov@BRAqEY$)yq^t619>t@&8F4;wCnca&&0CpeD zJiw?GXQ*OZ{+7^JUtB!5()^iCdXsuw1j&qn7*otR6Zs#CByBEV%C|7%(r-T+Sif;R zwR1~ub7e5FlU=!e!-nnjcRZU)=CY|&_QmlBL0$6DKl+BhKSkEL!+ z@oJDgtb_SC77lndu0&@~Khu;oHSk2RN`%C{O# z`YBX=z|1INWi{xP=LmX*jvkRN`He0rBMck7f6(dj4}PP51iMj3S(K%MT8|S&#Nbiv z3Cwr+7l1pkY6u^X5)4HE{bU*P{kOr`*Xk>|!o4Gf(e|KLTih0zh(7;2<51Dt=?O(g z62*<>puS@|xH0}s_Pj0O=@_sXtMM>UnA~yO`eb)>eJIvDWVIp^GTd2hNe0(vx?6N)O=Zw+w*cT)rr0KPH7;U3ES6xvWix0@Rz&vd9Y~aQYF%2{5T}^$UJiOs5{C)2KX&+vH75@G$^h>&%#qs`k;r)?; zAr&iL*^FurhN{tMwHOUL^Q1tuiL+~#?q=7#XZ}6t zX}5h*WSTp7GEeJaiGjI$f#?6iT&_vumR-qaFxJ3ZA9^G5;&kKbtz z#Y3C}FoQX!qEW5SkeQ;m3z0_*=fT+*FH~_?y3TfWkwYCPEOb)ESxOKVwU|P{ae*a- z`@g$4-7gThgj>Nf zU3Jyi!OiQpZW~6(4TL&Bz=FW7u%aHRMg{_w8P}{bAU0U7qO!_-qC&*OD`6i#(uC~* z`Q^df{6yT#q0b6=*Hkx*e#YmJ&$tu)v-q6o|BXL|JM{+?di-3k!3BC+M@&EVFR-@N z=V6D&&p0fxx;1#PI>r-R`yT}E3^!>@Y7kA%l2jY^%-_N!A{3nF5VaC4}}>V z$1P!YLx|0J*|?W2IN6kw?J=`SGXSpHCg401`T`4#YuX69p3A9mTSI=psjEu%%@% z<8&%t9qi=x>?#l;)RfrL+PdYkMokH2j#l{6XwIAKHqo4)#oq8q)k?OW(&O|=I^Ilv@XuRZow#P=~ZaX^i`g88Gpt>oKpO=Pkz zS2mNd?)8=0+L2HM#GC(pr9iwHdCz?hZ@uz=f9%06w5FS|sSw71HH8A9uJLQ)=T5Q4 zgsXX4>}5T6bAKgL!Tkot1D(|jbZ5QAjQC2}iuDF$>4{AxJUT+?LfneLQ!EZk_9hwj zHi9FQ?5?Gcvc;tjvCEbo$g|MWEBum~b03&t_w1nlSJZ}5-v_m!z_UNBzh85mC*o1@ z{u~M-=t*0w*LlLvYWyO`x2`rGs+FW-SnsR!oyxIOX?9zj9gDNufM^zB59rwgxV~Bg z)u<^L)F#JWEunF3Ase0YOF=^>Hbvzh%4cDv9ie~dZUc!yK3|+b^>bx$5q3wq(e)$# zM)A|ZEk_~A4d`kX=?CgmYQygS`Mw4EW}$EX-ihhy3HCPncV62zd1&3bLsM?@F6Sfu|`!IgN#l7lT*!8@~9=N1ZIhJK_PO?jr>|rN6o3#*daybe0nxvXZBn)0US0K^ueBImgh7AwN}*&$X<+v0ys(28ex?%0Md{s zq(i-6`so5rqiZKjEocB>jIUU{ zgeK087)}`Y9s>&-*atLFMQ}nQK<-A)<)SV(8?o6UgPvKPu6;Iv(GSQ)bN8;K*$(In zGXdg4W?(pf7A~Z~gj91HRNOO4bEvueQL=;(A#GSea&T?n9o30M$)E3wMF&D|XDL+8 zWh1?)!+agW-fV|$tWpe^Y!j9uyVY~r!-usjq;1u5Gcsbx zBW*V4I#5}pgu)_nqQpvN$v@}w0W4#8uElJz?*>$^G8vcD=5EVh?7+ixcngrG90L>kzrX+BI5D?q^Uq2lw zR7OWxdB4c$CvP?7^0%XC?a+?$*I53F8$H>+l-?MN23tMRoXwKx0>Ufh!);~{VU1lb#2Jye&JQ$yeHf^8&G%OJ=*kYBsRf2%;GW zv@G?4$DYETw8O4O7&=>zrrF*!1HRSaD4UD2LqRqlWTyjckL#$5-)KE$<;P77l?HDE zsFfC_8=z*)8nOxBtOL2JFj4s6c-&bw_%_e#Lkb1+E#mAm%DCq$w?S3 z7cxnNASE3pt!csR0G^>k(spRM)||yEee4UQ#^oKMS|zLDG=pZ@zxg|49RCe`M6pZJ+_ zkl!Y1bu5T^EnvT158mmP?x^f~xX4Vc54G}#bL^oE)ipcqWAE^>d%f&l7dzxU=Hv)f z-)Mg)_Ns?SJKA(U1ZpVJwpbn4 zpeX!B@n=G6Iq+TcVXJVHP#}cFQUHAkfTOWpDSmW?g!@Cs(9}?_<^7&aXRLdDefO3E z>w3G3v7Sx2&|tvr&ham=UtbxSe6XcE;W0V}2b(r>tYdS}w*7(7_DXqkIbgMn8!g}y z70VQJ2VaoNH!zFAb3w9>OB2}lk7C~wy3=B1{dFjL5MihN?4+N)*$;Sc_Hj2ex!6%7 zJE~y|8m6BOrKCnk3!nyeC8B22E-$mw9Eq4@p>dJDdc~~t!=R!Bs$ptKHjs2z_ggOi zp;$WD61JDx+Vb<^_DZI0W6`_oU?Ah%?(lSM8$7&!Wc|6{a6N@2=QbZ2x&1C9)CI_` z4y--ZY{(){X|pMDD)CT44u%#&{FIB`0QqcTCoSwSYSmkMEgaQDQKuc?c*ix!MfJ|w zfKr}_c0_qJXHEfnNZyrAF-oSZt+lE6pHviaHp|`q27)9Wuj%5u%31 zkr+E1VfO~uPCq+hWheA^kSB^xD};G?6SF`^$cKb4D(7|0*`;XB4@K7%QiH#NlecME znlH)3tTCin(iNGEUxdt;2O@U+Xdye+8I2EY@A&f7!NLcbk){kC6^UNn-3 zRSs6S92tvGMX!Fhvu*o^-4|WBH?h9Al`yz$%fDkA@&10Pvl3i@YktP>M;@CTlmb>0 z%IcXl{y7H44@V*1jPyR-9Z5C7OS-9OoKvl9gXnZ&iNh_b_pN4Ez-kSe^~n2;bmvjX zYHDifZ~ak+R@Q9RYAx}BHby0I(f5^&p`kvuZ|RZU zm+arq_TfzHK;5Jkai&t`q-~Y*g9%m*>wMCHvaU)n@i?~`z3`HqeS@=u{g~IkyX=_elb_TayNvZOePeW+mYrGZ(rz1NLt=gVmtW@> z@BlnWtfPTKkPZ~xy>U(Q#))wZokbghg78I+^iiKu;r|r zP068|V9=DBZ7Ex4B`7xun{0E=5)c44wdbrs9Pv@vw@adOC}30YssfF*cus68p;`>m z25Z_{i&|W|z$YS=7U1rx!Y-0?R7ptaOLP%qpGyyW3X`RE8AmC%BUR8lWBv_u8~ib+ zzL46HD>*XjO!34BwDX?n(<9-blbbTwkPE;6{X(>JEVJq4P-UaYlA?=&DjUw1>}a~4oPS8P9`PpFo{pEF+Tllfb$ zk$_PGKHK?-oafI zl|z0*aaR&_UsUK+|6;MTT+HoY`VN&&=rn@vOA4J@XCdrG_0AoPi{c4rZ!>hp*96^H z6uN&>{FPdZi5pS3#H_Tp{3_}O%ED(S=%kb1ulY@XT(MeWpye9hcBV0bUiF(Ue-qCX zo7#Tm2a=S00+lhIUj9kNDIStF>FrGq;>jL`$An%%&nht{^2?C76u%W|El?bbtwkND zB7e!Z_V@Ju(#c(_FOhk2cD&SzfESEc(2I8x^zzF}To_AxTp(wXTWxm~a{bXJx>v9s zG58!1#v~e+r6R)J>d`dHi=%xZFT``t<9+n<%hE#_5LLK{b+j7`JD8Q?k!X-ix{i;+ z&WcL#lJm2&gwi&E+<#T#>p6#+AF@v@Ish}1Hn+p=(VGAr4G9|97Kn>6T+KC(AofM z5`8baYZfc$l-*6==g~>r7mNAu_Z9W)=KWpM{Hkam5N-Z@^0DBjgsh--e3tyl3SVpP zSL#%9p6evOcJ{0Dy_)X%y&^V>BSO~L+Am0RV&X8zt7#trEp|L2mU4rjl$}G{m4=BC z*PwrVns}F_72>{H8;?*2D({}x$D`mA(T6WLAo>{m<9$4VaVmW*qmRZT=l5}KeQqAR zSnWg8-75N+L?2D@k;=Fm^iRTjq4e>KidB7Npy?5kbw35;e2@PvY<1LSYkn1;YXL@Q><-OJIK3=HF%|Bqx8jq+^iek^uGw*Eb<53v1MIUYDQPIcP z`F*^#iT(*VUj%))yFp*;06c-UfUk&nqA&&-rMZ9kre#`n<`Y~|TMNX+3L2Q`YJ7pC zRz0_AJ>QDY^N7X$aT8x~rI9*c98qb`H1P!rT~RZFhT1ux(tJbED4fBWcLmJ}mF7i3 z^Mv59rgjwjl9&T=-f8X!chLID?wC05C}f4sPvu;sbynz}2c7%#z%N1!rk~;}0r^Oz zBsW&mKC+{>c8E)L=O_r1=TX|K77nx4Gmm2}>M^GN#xvAOP1daL=TWE?V*M=ctmq`y z)X5s}MY2ZFYyA!SS_gG{k{imHA4B+_r((rXmhg)a^SR z!~6U+h9IO2-t+w5L&{*zy2$P(c<(Es z#rqNZEO_cC6{E>3)F_IJS8M34qEKUA!?#xqTN8scYOXB|z?Jc>zD_|Fs(okW{D zK_CAg=z~r4Pt@NF=a8-ONK+rnzrlMg$;5-o96ffn##cY7m{6Gtx);|V@VdrVtLdLy ziyqN&HG1%&^ee0@?g1wMTmQ|CiVlT2gp6}(Ye#fO5VCezrBD$PnhY|!9c zm~tMLq?LTwpurTgd(?JT@?nDp{KgIoJ}j-~!&Sdm_>lC257W9RINRJ?Swwm@4#H@oiWNs`Bi|Fumhz_TQ)$?vO{o{kg zf2yukYCKX8C|{$GN5|AYVuc~m$M7HT;|a)R@lN_ugTB@Q$rs%BCIxSFWtz`B-r2+( zpt)S38E>3-yra$=%dept9i4YwlCoZk9>itQh{79a<8_th+d>j3dJvaIGs<}fny;!f z4+|Rgyj#`Ik5w8)Vk??ZQ#4IY8zM%9Vv^UsNOTPMBVy#5MFO@8p7Dl{xBXwu@RNM}WkZdF796e`$!3^jhiIU$F{=a3~#k4TlD;~kAp zO2BBT>BrzHNOWogvP96}H-bhqqsSEW^Y?-VvP963&4Jo!&=7C_QqX|k1P$<7wSt zo}s&yxK+{nykF>V^!vXRzo%Oj{r-M2$0X~Yl^Nz(*sL_q+@zi(f2bH+;I_l{e#JS` zOnV0RCgp4r_ATd1`xdo{_k(u!40Kh&;awf#9#+doRPI#`x-&(EF14l|jOY|e`pjN+ z7yJnF&m**7vePx``wiMNqe`3Bl{T~GUkiPY=)R)7BMt;1Q~$04SHIBVEVVYXpgkw% zNTEH0gF(<@j+#wu#DmJ&iFVcV`x)rh09TyCwkyPEdQdSyPnYuU#{|B5`U zj~}|J*Dd6Ky^g9P4{2Nq?HQb_H22X}wlQT76P>cRo@vOI?^TSQW!haK|)l2kt`#w37Q8*msyLRZgpOvbwH&V zRvrV1$E$yc#yU`FbnLMIy8wME(RZ`==Al7dg*5i%v2hF3kNtm#^P zku^!_%hx}t^fmRT`XVhy?dvz_Yt>_ozDVX_Ki0=ZRwbn`O?8+iPvhFNy06vGkY!2j z>lYPM?XgMqG4!?kQ}{*xj^qj1mCzULO0af*h5ZaYudpwH?gfPo9$`fi65VfB(Y>(z zx_mw8R67$Wg-n#c!tVp+Dti-XFIH*q5+fC|5w!0(kCxhPQ~C!F<;dnp->=2d3aX?(KT7Dhb!s!EIdCumjPr`#ez+hkh< zt)god=^hGNmHTDQTI~XykM>`Y?l+)SxnG8sy6PQ>x4$d&Q^h{g;Qrs$d4J{SHSQOm zLpQDR3k2`u{Gd4`Jr;Jz`y?6>Q8 z&p;-UH%C!!g=Q<5agDx&UR!@o<^Pu}CPl$zP>dUVy!t&KB|WN!=}UE?|8V`VOdp1bNfMd9VFrtmiArtzH6ci-qaRq@4hg8wfgK2fd4InsND zl!RlKwA*I=7ku&_&sZDtrl*T7f8MvVjgElSN zq`NiILbDaL*p8rW)_G~Kz9?wvj!m@Ci^aR1JCBz3)v}l;JCBz5|Ao4q zOtjFGC6WO+)l}L4{kpzPpF>|3pZ^zquK1Ste< z+}cS>6VzhmeOI=7W_zt&p_6%p}+n9Gh^hStKT_2Se2j1?}d(x>lW@Y7fXxqy^9%vs)vA6f;UmDt>WDk`hzuk z;4|!Rq7O#|J!QaRsI+!3pw%V*H*~ItF-mFU7lc17+;nGy??in5U+7=Dd--zVJ3;hA z&CV#9g>Lj&RW|}(kXD3w*~=@^FCh1z&!RIX%`R7^v&(0Ym*@VRMzR_;cBkZc@dt1L zpQQjziU#UOI4)6ytA;x+*?;DY=TG5u;HezE!6|=mBkO0cD=3M-MGw%fGsy`Zw`dV`- zimz(rS1<=~IVg`z)&MO>54^H+_lxAGei43ZH(E-IXf=Jhr|*OP>xQ^Lk?`}OVgB36 zv1CU_atya#8Cgd=SXMqD{LwAIJ$FT8nQYeXHOk&VGM3S~5LHs{KHK$T7d8DNN*Z?| zgN{0A@;}!zDd3lOQ*2+o=MDTd)gS#O_3OGwN5(s#$)(d-&44G) z0MrhZuil_-x?w8%-Y?O%fb~!^#MQPbW}5bq(zd#f*fKah<`s8WU+q39-n~Xk`$)Wv zvX3a>;^&`kNvCht~mEBgJzW#ygc_4`+!41ZSi8{id|l&{5j(==XhEbR(dv^uLr zGU}|>us2N`83pZ0I$+~DUci>79ldH7$g9WyfmPd}-5E96>=BPQ?h2$E zEf9Auy^6wl+JM~~iUnQic-RE~*28}BsyM5J{eoS5R>*R;{4(qpif@bDJc3`Xp#8Bp zs|2ld=l4}w*jh|0?IO$1!iUr%;$#G^=4;=p#|HhV9vhTdGd5`X8+f+0@vQs``cdPG zeq4X{4dRNlc*lPg`$XyYf!aI%81@jGAHe=oXdguUQmhugWDB@J zEjNOfl&cKM1P501b#X?OunTcUEx&>@hwL3(hpaM08BsWza<&FQ`zme}wfMC=>$FUx z6|}kvENF~`wb`pB8IH~d1JqUu6e&gfZQWR~eYn-WwE8+J=T@FLsxrw$^#hS{s`fzmkonajg zlD}5A6#CSm&w)mtw5LR$*ilNKXGQ1{^-1D?%|5Z6E?v>*6SSRH_j#wXozUm1{p3m~ zqJG*=e(WcUC6sWf`-x7Q7idGB#dy!(PwrJ?U%j2CoT;!Y?)3mb));lI+D^}#!tt~# z7z=sr0WG!`@rJOmiTxyOZ0zEB#S$iY6u*sd#?x51;<j5kVC~U!+(~YMuEL2-Q@=G?l%m(9&KMw9pkd*Y>T~Cusf6dy$Wc z^KqSon?KG+MN@3P|G$8P>>@!Uv_xo&>!gohzt>Mu=$kKrhVI=tsT+Q4T`m49r)ZO_ z4^DUOKR<%+u}=jb!~3amgvjT31#gac zdsw($L7<`xomIY>QP?70fOO0d9lvOP!^hH}mD#)7ZxTAMavxT0zqmDuJ3j82ip^Nj zeSTgsj&-YUoSI%Gp5p=Vgkob>Yy+mxvG^d73Lbl-wiWxbup<;k$1Hm`#%Zjbh&U~MHvKXFH#fDvo7Q>k78R+vN=kmwm5X~)0e{TpFsD7|NomqAe+v6&JuVUYD%p>rJzq~_ zQKJ*Ze7pp@dVC`2$dg7Za1tY`Q;NB-HpeM~QrM3*_pvl6SKE)P&GCw$6*e@`;s7LD zmn^~~Reyc85w{3RVL?OxP#c;lYwy~KUj(hNpn>)eYtVidHn2t;=Loz-^8YI8hR(;U88 zrERuDR(VrgR$~^~@6c$M=BPPNt3HeD!ulMp{9K(y^>doTCLb3oeG;M!Y1gf=WmOx#+?p*59D_51D4T3q)rL=3*pV>Hv@YzU;{BWLQ{Zi!kg9K2 z(Bd=@v=5#~OYd6u@d{dD%R;+5&!a`V4PURI{i53LvGZtY4jVq-x-ARs;=oq>~9}Fx=(Og30fq-TwXb9g$-0=jDlFWrHPxzgBrpWRx zya(YmU=5UamA;_T40fB6bd3gnC_X`9X55gDRVw${*tmJ#%#UkXB06qzTV2-afZG!Y zxLq!TUc*h8kp)Bo@gBaJdcGfurDId zlw$Uazz&#{_DWYuCo01OqoW%~7S>%je)(1zxCUOM@#wa4YU}vAUd^@<{0XFh3?NBU z>vnaO4qGfP*S_)6fnE3$%}eEP(GXpOT~vr!`9lSM0c56r;zx$KsQFv_n7-nFc&;T`sf5>9nX{Z%GYpZ)@8&lu8Y4Yirv+lv=t^{iMs|^tr=2heH>30}gvLO<8aaU9>)AD$4t$l6c1H%W+xcg3rW5v!9axW)qY(#RllP^JJmY?Ss&ZNv&V~EJ zgdo@HD%*vb9j0c&PA+0zXnXQMjWZ7sNC8FhkG0 zJ#$xv@6TM7;afATJ+mRht(j@rQgfdlF>$T6wZi z!dEo3ObzAp`To3|j~Einm`Ihqcfo4mWy5!QKkQxh%KN?SOWs$#=e+V>FPrwVu$O(p z`vosQ;bjJIz{^cuqnix_EN#ScwMAaP-Ex=ZE0%w^Xkr%j*Opf;{3Z*VwlK4WeZulR z3m>!`v2X+ZTt=xhOfMV$xq;n971Lq{_Nsy1WMC*s@(IKDP(sZxU;q*yttH1&cB2}g z{~|wMzr%mC|8D=U{F)#6U-R=P{A||GJpL-Mmi+9v|1m$;`~3t(E!jKl7un_YH`_mL z|Dj!W+DGmDM|Som`(N0(#*Tso|7@?UXOB`^BGcRZ?c8jaOdTe^{%+G(O+0C0ubJ2_ zCbrYWUN*7Mn%KCB`GLVCX$GO+%Q{CeuB^y_b$(U?sM1oewE>s%JItRrOIDao~exguJTxA^p}<4S1O;X zjCNIqU#<-QU1eDLMSbOMnNc~vva~X;T>3^T*f=l0aLcPpf3@`d()hWh;nKb3Vfg^J zdb|;C+&Fu2$(D!jZ@oXNvq!LzU&h|@!~47Mf9L-A{%U&f+Vyb=EF<@?v^?{94^FJ8Un&ny1ABKmqo*j5of%q4%0gTJMR755dd zF0L((i+?s}!It7Z{95YjnQPwo{97+CE8W81KYO{Tn7>oO%L@wi_r{lV3-mX7o0-@$ zV@;T`rbyCxkt`I=To&dmD~T2tY%KVbf&&HLD){??d*&B}K|xsivx46hM8^xlFMMNu z6tZAR!9xXUR|>+ef?pIwe^n43DhR()5T+F@E7(*JKU?stg7XDe3)23y;9nL*n+wAA z1>uZ>(t;?nfM1oIaZgxx;U0b>C4Bmx@X9^mm+uLmweReEzBd2=njg)aAC}KwlvtN& zNOUIBW+uYAA16LaME^b!K9=}4KNgq>6K{kEHl|i>-JWPm{8{235~GRq%tZKZBK%>Z zI}sHmRwlldh{`LIm-{k)=|DF7JYyQ{rqX+ZDmHFY!{4g^=XGXZ;gBjufIwSm_W`s9p z@RPye4`+lkXN0q7{ApG=BP%S=%9;7a&ubpYO{@P_?*Eqi_qo5zO$&1$%8jn%j^{>Q zx#7;-ujEE)xtnsM|2Fs8+*fmdwXr5QZ9dCY(LH<pFa8IA^zLnUbdgx8J^@n{iESM{v{tj z{o}(go_`UV%O2Xx|M-Spu$$1Uzj)mK|9k(7*uRMX|4p#nsg$iI8ID-4Ufsa&JFI@P zY<2r;*QB1qU1oQMS>=$`#F-J)*j;CC^3x{Au-V*VZZmhJ#tGkS_fETa*}dED z$H_@Xu-7qkrT!N8DL?Jg({PpflEP3r^1~ifFPu=AXt|z7CsW^rr`Z9`h|Z^8guRqE zBf6OChL`njG-wVfx6#$qARHs5jOb(gkEcd(-&D-eE&JSd{FCo5^dv^a8cP9I;O|T?223MJ7W`$YB{#z!ukmtZU^ATnyncP5~ z5oCtv^=@>YbTg^7ad=s8QETE5J0Y3W+AvhDWl~cg!`lu&Y4=^qm>H$yjw3Th0-2mp z;@jmo-99rFGx8?}+rJTL2lxZVvB~Uo!Lll0)FT)V~QEg z9}i|D0Yb*x6^1gBtN4hXqF2NmcbVT;{FGWDe_)^I?LMyfh=gLp~E4zPVo;2U_Tc_++ z%gTy>i#x$O@Eo|xT$4J3yUgwib3HjpVB62aYUGeWbHrNOO9IW2e?8igppE6g&E^(! zo7rscGP_c@2y;sAP^C!Fvkbyll}h-UQVicP-?Yz!LZXcy!;{JzwZ=&lYK^zhNpeE1 z^}@>zIcN^qXE=2U|Er3P8-_EWG&2$1beP+APue|Y_ubToJWa`mEgCVFKPRN*o~d|Z z&dfl5UK_f+vCE5wlZUv)VOmu#+Vwd62JJTyKdsc!e99hw-!VMr7@jwet1Rfb__AYo z#p%B8r*Hb*Zo7Ztr$4p(ZSz;=Z_JaXWgEZeRDO$3ET-S0gchHXFu13ze)O9bcCEZ-=TJCz*0dj*T;?MQ19J%Zj%Dv5e%xpF}GlBme z$F|qp=NMXO(YZmJeYzamDTPE6NHL`UgRd!M_`2N_dK#TpDX`)EGJVvea=91IjV>y0 z*dD<9yjUe8v8+I<40or`l02{jcKx ziTP9eyyYDJ+^PQ(-OG*N_ESzg;Qozy(tOA9zw7X)RCn=v&dK}s`7L4cu*rk41Y4Si zj)`k{D-Ru$yTYvEm(lXD$tz$@uo%|bU1v(K@~l^R)~h`0Ri5=KkI|h{kw)cV$xlM* zOdd9*0KUwcR9^Us;z57J*OVXhM^E3tdgO&~V%74(Zpxb%o}h*1F~%bXtjcM4TH&KJ z^a6R&S@WEEp1RA6F4*0JrOZR?GT;aH={IG6@}f(2Uq&W*=%F}7JImvDGf2z5NnUhK zsoNIiMc0)#G?SdWf5~(Il1KmY5k9vZgKShDx+)*psJ!S7BZs``6F;3c?>gt7Q7`=Z zk9|@K&xnycFk%!V`@~8eeI}lGmi=?ggnjOn+|X*ht8rr<<3{p^J}ZXJ_TR1&#rx2) zJVq}_4=eW;RBx4sKFjB6Q(B!z|0Vw}Q~I2TKBEuxW%B#SfbGOr;wA1dU{u6oIrSw6AGyv;^7i}`DFWPv8mBQA@*bxYMf9Q%Z3!j z$CX1Yz&KQ^ET$z+!ZqZxI9P9YRjLPfHDQX~cNf!lkKnFzn0iyAzGC{>JMbi_6w@Mz zhu&6h^|r{DiUg}ENdETirQAUCW-je(aT4aHE4MlEyiwu~B-yMeqd3pV=cCa3kdW7ta$mjx|$ zw>m%Ve!3qWSQZ>eeF{6A^Q74oEDe^0rC7pc;W?Eh zv?Q1bmj?4-F)eXfw2ZO-vgnAU5p|~S!e=C_=vnGIqN zXQ{*R%Y^t>BbnvMQ>-=X?7z`(wcF=_-Cd0Bmxra~YB@3?{_wm)A{kMm@#V;bw2+B7 zV1CFrYB}Zo6Iet`Tu!;N;Sn@;dDI!)1COy!Q9`^+U?yX&5=vMMv+yek5{y?%(4Hcg zXG&Hj)X*GQOe)$N)YB5XSD9-Z8z&X;uQ1m;e3e61o3-qV=qwInEL(t*paDBp5^VI- zCfY&?J({@1+-5eLyUe|my@Xvf)n_}UD+%^frzODw$8ZqcC?6{PNinHOR143(%7^rYg9j-YQPXcxJPx>P&p)g5+^v}%C{Q0h`@ zN}NruO3^X76THj*6s@&1$U`Sf-O@{4M|^i@pEb0vQd{FvbZ-)Ot>4v5wv?7DZbFwz z1NBp-v`xj_VJ6Kk#ZTMhY4~0FAU*NCauQykq@`%1e58$~Xd`i=jq*{eEDgD94&Ihe zq!pM_Wc6iOs2I@CJg7EON{gEfkECwGPRdsrb=iH)?&E$sq=k6fq+c(n5;}gBGR3iwa{2tiU3XEA%8ECW4)?kQ!fshUCJf*qIfSJpnt=jTPua z45be%qGO5~eVF1m`DRg@D@kJx%uL;Yv+d3@r4K97hv#4(wsd7sh#XeZax-8tlIQp1 zvF9t@ayhl{r)yYATZse|QZ08S>p_Y~YeXvd>omqWY#kcHS1Z41}e68yAL@24l`*UMh+_()4m1YrB$w^Me8l~ z3oAo@5(UmsKBYC8eE9G3oEqBJ;Ext)>X8`Nqja^>Q%u$ z!mkQiNNW{(CAWIURnF%s>(VN>sa3Qo!n?m)WsO=zezx!}ML1s7ys_4+lxy8ztVQ<}kEFL2t2GImocd;Si@D8gHg}mCldSd1_F7~V;WqU2!)ek4-M#omcM6eeYVp-N=8494rB>V~y`vhyFFY8_8 zUj{pw-K@nXj0Wpm7whOFx^ZjOWgRv0BbdMftfNNe!#rYJM~xIg_2BE=gRi4T25@Va zVI4KH5NfSs9W^3qtz#V;`!>{Qa2-8};;ivgt#zzpG$@~Xq_i$*K$7dIkqM~vx^?v9 z;x@C{+-2@{9`-pN>Hj*ct72%gk9ziX^z8CKfCSbB2U!7FN3WzZCe6bRqdHoL9Uv8t z9@kMvl#cdJ4Ac~Pqo(-Qf|^2B=x{I8%Jw>H=Q7j`bY1wN(xpZqb%CrHD^eE5io`~Z zEQUpl4A)UF^WYJz$~tOc3Tp1Qj?th(9>+3#37L#Sje);}zD>dwvrTln{*qhMmq-^M zQp|#^5yC=xs|VadA8-qOz#$)q)Vj;4>rtrjKpAx{YCKTp@j#g^Oqs_6%ns4mGLHw! zT;pXP50ufad-2!otjyzqGLHw!$g{$0JW%HGK$*t_WgZWdc|1^t^50sH}LOSPV9uJgxJW%G5K$%AZWgZEXQR*)TWgZEXc_dKgkwBS80%aZv zlzAjj=8-@dV^>yP`K@MF?U`GVibn!vu|@)A%$P)t1j?8(jdSv579}c2hvq;@tlXpY zawIOFTvolxk=0qK5kfgq8h~0SFGv3~p!&gb`a!uhVlVePc{#SI2=^vxq#T`>|7LTG zxy@`gcbWSfzg9lWt?lLPxyXIcPu0_v2kPm{k#IMB*D0!xE2noOb&oX4E$wp81b3u|m9yv?rm~Sjw?EoIFkU#Kic=A=T87DDF- z$uGg(#aOf)$>+o4NTb4fSYbV^uv9CohZWYt3hQBo^{@ijP7+=-&T&nQlaSVjDqzfZtK@EBD8Rq39wlA0oQ=2rX?4BDFuwO_X0y0_jV z-u3ix>G)`-yPp14Tw`KEaihOb zbUphuyydazdXGidyUnh*Hm)3+W50kk~v}Oz%)-8(4)N%72xqHR>w#P(Br=_6@6$UJ=wBp$Zu)#X9m+g(T@? zm?Ox4lhbNq)KrBwid)QW<_E_g?=ixvS3xVs8zvX$I!)0rz&_0YgrZi3~i|jw8B{x{03=N1@E{-?^1#)v|9N* zYd#+K%Tmz|wHH>wuXba@ZBakXug#3F_??J6%RZ;INpvLo6 zv z@=F5MXeN85?u)C@Og+s-4%MV07Si^s(aaoJO#IcPI|#MzRBa1cO&(6-mW8agg{-FD zif~IatF4*U*34>aW;L403NJdT*fejgwuP*=g{-!PtPXTerrH*=ns55$mYu8)bWWx^ z&^eiEtfkm)AL(ATb*~!TQ_LMMW70g#oUYn^dbKsJnx1_HKI+-4nY|JxdW8>qwFu5q zdC@ERXxF|PjY3vv6tY62C@IqJg}r{NnQXOnsoJ_!jV>w7AUak}T`Ymx!Kn_Xl(#69 zKeclN76vn5QR*|ehE(>lHP`l8#&J6*bhjDEm`G z&E`OzRjA>AoqW<6sv2@o02}PHiG0>jv!eDEYp7Xqo2i;gu zU=8*}JctI?*pk%PlGIR-XYqO0c{t^_RD(6tAo-!zilAz(#&)2F`kKbw!}*pPTYwsB zikPV*`Kyj>cWeTaX)Os9J zODmJR!c>1!OI_qbS^ipT;a*s8f6dctsRhNRxp^(MAZl)2i~L2+&1)HZOhT>e)-v`G zH6N^Hgsj-w?AA=Mmby@GwP#d|{0pFF<+VsY2hK2OsT9-#VJ!bz)dyuFhaw5b(vqf^(}!aC~oEZl5vF}IoO$LpwBQT=!w^((3$ucKw@-M!A6 zMwoRTVb;-)kK@)jvkqIT9ID;b*_PH(<2|_5kJq{N)zObDjOIsm?!oKagV))v)&(aW zo5o{xXb5v!_v3ZgSn^;STZf)3#w|UmLr)0fzPrxaQiqL2+UN`trpd=-PsC}6_^yEIc z6w6uI+cP-}GcwzTzxlUsdjz5CXBT73>~^{w^pTkFvlg^`BV+uqi@ z53NTZM)A=squzaJy?f7k_nY<9`!xQl_j>AG?p9<~?|QGN#;@bnEV$mSyWXw4-u+`e zwZ=&r+tqsN=nuFrDE}Ty*Hb&BNLwZbThw}6)OzY-CO#8>sy&)|>VjQoYT@g!P;t^) zImw6oBe;~Fx}J7A7g`SP-Rj-D)zeP1@c;M9A@Wq1XK`?RW%yUF;ln=I-C<_30?C!toWHgIld1ZsS^f!$<< zzp7N&P1aMLyW0@U-foCn(B2L4A+%_NPa159bwYK6XQ>-vr_1RA-tsJU1LtJqep#`_ zIy2c|``-|#$8Vr?gRs=@73NA)^MZz8wcYod+D&c<*4n+!e8AMKp&=-@TXTm7e!EjK zYh2pk6@Ug-7v*0~&Kp==)Ki_IYVcgFf!`kICnnMLbhz2vVs5qnHoG6T`w`^Xz;9hD zyym$L!4A8d9cHK9yX@X=x5mQ_p8qyjKO4|Y`Lxk;8v?BfH&`bdf^O&Pl;7=>f2bK{ zgHPo(aH3`o?pMv%kYodAX+)hVY6!cP6Q2feV3tQIqUCzmCm$N3Gt^o`bk@||p@G_O zf|^Y?aDq!Ab&k3r`oKQgUu)nrmwYbSeOb~&H$QViiY_6c0X(PbB^af*!>^PANc8y?0())U$Fbf zCa27a;kfgu^IZ*S@&J6r{;%5SHPsy_WT=Js4g0@ox9i1cy&B@5I%b^+ZHRwi{?hU5 zlve|1V8oN=J1*V3j#Fo=8e*OAYT%6MB>I|1y=)2^@Y!UI+GLBj$+m72R*R?1l6ZyWLu!X=Ig5 z@gzmBJT%%`HhOl}=+&4;ufsHwhlN2SBY$FumWiCx8$~-Z=!u%Jk8_~rWldPj9H{dE z=qAsbJSu1kwDQ@6{TH?J*@XQUwes17{TH?J*~DoOQSGbAHn7QkeG`4Xd=5Gl?S3}V z*Ndn0E0oc z&SqSodp-zWxMS7x6hi*lBVzar+l=QYDy#lCR zlC75BR^+A>HAC6T7)kD=d6>LxWkgg2-|@SeZ*Fyex|RNv+%gK{DWjk@aD~DkXL9bo zb*ty{Tah#QM9$ zk8B@i{dp8>mGxojZVp_^&d9^OH3&C4p#zUHvKohKxsOuUa%)cd zD0MArPWmWyEovV6C@m!eYIO7{wJf*#phu}?#i{w`qtp>@a!CA)f8?W`*+;1z`D+FB zQECTLJ4G---9Jk0EP#s{Z9YmXm65CWghb6zmlHXy;?;sC3!46A)hb7-^YuRjT*=%ds>{2w_S~gqe&9;`!Zokd8md$Rz z&9;`!&O@`UWwWhiv#n*bCD3fCHrrY@I}gp|VPVj0YuRjT+3cJ!szCBPos*r;$xi2F zr*pE?Ioau)>~v0cIww1wlbz1VPUmE&bF$Mp+3B3@bWV0UCp(>!ozBTl=VYgIveP-) z>749B4|9TDJiR~A_+}x@!Y1uTCr4l|J@szeqTS?e8n<@Rce5Hc4rPmW+ZOG%E!u5c zwA;35H~Oik`>-Cnu|=Y^bT?WmcZbtTn(7mGqot&1OR}4slZq|IZu0hL!ERfL-PGoF z+_DwB(ZfaX81`g0?L8kGtUc?;k=}UlIC8*^9B`wP_re4{+~a6<7F>+fA19t{*okI7 zPCW8Ijtus=J?_C*Zt3|R^gIWu?0ejQ?Q#FL$NkqH_g{P5f9-MqwZ~R>k9(^~d)kn=s{{647uXb<@> zg2#}?9`Zkr69LNeUZ=8`7}%lV-*aFVD-8R*8nBN#oy4uZqeKI(J|x9W7C>vW&% zbf4>VpX+p=>vSK_3;3h{WuHsBk2;lG^X`3~ckiRT#6xY0s?B|_&3#@=+()kV2m5SW z_E8qzr7W4SlezXj*XcgWl0zEGc?&tufLc#(AP>$lDI+vfUhbN#lte%r`7-wL{Z+g!hG zuHQD-Z#xp6Ltml(uHALo?i{u|hwaW`yK~s?9JV`$?Y4gH&Oth_J|!Q`r}oE(>^{PJ&i=Sl zsWXdL7^m)e(|%_0@;UCOFPWOl@Aq8(0HvNJ$J(hm;8X4gm~oHbuC{-TsS}|Gm~o5s z4%sDtpKm|l^X&&X-!31W>p0-A$qu-T2fPD*fcd8U#~kKk@^gT>A>ldGEs=ODj5PgCnqsxn~C&E^aZmnc8dUK+ol`y@n37U2g3)ba)r3!|UE1 z=+fWfbIMQE$905Sb?-pi3GcQ24(j5&xbQsBt2_8oMn3wsx+4zcj`eMI z2Vcs_N8eU=@QsXobh5W2*0Cbb zTawn6q_rh!ZAn^NlGc`_wIvxzTawn6q_rh!ZAn^NlGc`_wIyk7Nm^Ty)|RBTC24I* zT3eFVmZY^MX>CbbTawn6q_rh!ZAn^NlGc`_wIyk7Nm^Ty)|RBTC24I*T3eFVmZY^M zX>CbbTawn6q_rh!ZAn^NlGc`_wIyk7Nm^Ty)|RBTC24I*T3eFVmZY^MX>B=dt9ux$ zI}selYP}DuX@iGZ;gnA;dUzNM)&uLYW{0WS@!+smgAY@K*Kn&(IZO=>Kz&?3_wYyo7DAG-;1#~W$Jq|Rz}G~x5q-= zj1_Wl>pSRfR+2=0_uU=nyYKEm-+gy8vCD7&ryTTdYO%7N_8Dz(V%9x;goF2kQIl z6Ub@|>YJt$p4*=ASp7tx)xQ%i(FxW#<<`lZ6U^=vQmbSqnA^(dpr3X)o}@?)3FEbe z6VBBMpMW|MEk;TwqE6byDeB^Ls51bkoYpC?G@fE?!i^-9i>Hp^l-B@HdG(JKc}m*n zeD+bZIk+`%>T{j;xfc4!v%+XKug`PvKF`7XJO}UdD74RW@IKGM`#cBl^EkiHBho(d zObi~8_A&lk81#7#-sd@ZpXcDeW30F)xK7$DV1kj`b#&}3+(bLN&a5>DYRqumV}|P< zGhC+^kk7+@y4}=V{yM8Z;$!9xqri;AsCx*ZltS3`Z(G8(Q#2S!77 zUs5BGbw9|uA7u6cS@(mi`$6VJwz$53=qDS@(mi`-Q8t`UIJMK-T>rGdnn- zkkoY!WUW42rCJWZi**`@jME@92*|kzzOqISA+`l_LO6Vh9imD2DyhGOt&{tL{n=CI zd+ZF-dO2X69KOucQ7mHy?pL&G0nuSdi-SkV=PUd@2eQ)y`F0z=uBWn}khMX`o)M%? z5RPwxU>>Qz>Udryb$pN^J`VF*Fq3y*b534ECWE+>B585g5C6)6CkR7IW&;1$(dt3S z$^%pmUnhs7;p;B%>x3W2eL?=DMHr{`25C)%?7^f4;E~i6{A-@R!CSW=cPK%n^(GSN zg}JF0VP5KO$f-hjBy|%0HPU;N-e(-X65I=4<-W}~k;(gzy&m`msk}+p0?1wuWM?1t zC^qs_##io~RDsHQw{za@JaoIJx`}5R|2IelTS~|imgfm_^*-)AVv{|TzhXGy7*2$* zkk$#ubHa6cf_=a#e3XY1mj4Ozz`Ks~94mB9;W;#F402-+XD! zW}}dGg76&c_PiUhUkuqPhTPZ#xv>XwV-MuU9>`n(a$^tV#vaIxJ&+kFXwV-MuU9>_=@a$^tV#vaJ+4UpL@Ynq!Kauk`KGj@Rv@V({YrI8+#x(_CRjzf!x>wxv>XwV-MuU9>|S7kgt_tjo;wxfca;V^4S< z2@sOe6k#YMxneZMQ^udf%=lB}#vaIxJ&+rFAUF0vZtQ_CDQ}eh4&=rjG=teXEI}q0 z7<-7^GXu-)t}xe=`UT2+7BY*6j6ERt%s}?dA@|HcS=|e^x)*G9FWBl{u+_a_t9t>N z=q=gU3s|fo$h--@N?9(@_UAzEnStzOL)qaA$nayxJu{GdW+0}GX9nK3d(v*s&)~y7GcYBeI5K1T>z*0NJu{Fmo*?(kK$kaG zFLQxxn~A4Du#?{A){H? zZTC<7^rv=ne**s8GXuG226E2~v}|?H3~uh3!8&tB3ogf}2i+crd|eAym@7^7EIpjB zkpKPW8mtyyo7uh2{F3>AsXnNOQx*!Zo~VaY7ILpQtN8x5htaZpI2j9Tf_bpk?mClG zLin(v2-%T@>`20GX0ypI06u(!31!WC=;a}rQvkVL1iqs0V6n!cdZ-?H20i6=5y554VeiJeyA{(d{CT+eM&y{2pv9a?|Z1kd+h2 zH}|l~VYpocH@AyG<_M580Fc{7;8Tv_8}@nH>CS)6Xv4`DITFt3{la)Z+HFh(n z#?7iAWc~%auui?$t2^+d{LwMqMWf`F)#}A+5kLAPH}`cw?(2Zu*8#b&19D#nj$l504z7EKJ9gzDv;47r^0i_s+oEd|wOx9*`b8-xFatv~E z3|5((9K+4YG06HeWR)QNKqtq-542VQIXMP7IR-Tn_<(XvLX8JLpe>LtZ9(MZ7-SV1 za&inx=RZKZcuL>h3pqIkr9~fTMFl>ikd#qW5B>pV6xEM^KGlN=*e%KQVcGOl^63jI(UU&b>I-0% zeI7K``}esw?8CAt239Iyz1@7*gPT(}kh5fvvt*F7WRMdakh5fvGX;>dWRSCDkh5fP zhuxed!_BTQnD(@5&u>mJD*1 z404tXa+VD8H5}wD8RVQcvSS5hfd_2i2W;U7u<-I>#|mm(I^Z%6pw;qW#|pAz1=+C*2hc#=!!=?U$6f1?lJ+&*{A=1741e#s_&t)D4*#HaKgemx z@FP|)W7x=D7$0H(#fQ!9jFvy51&NQ^=P|}JA7TFs;7)V5`8f0Ik63?O2lobra39}U zeZ>0Jde~~V*{7ZRJ3hkN69d*BvWwjS`LYi#3YNgdoCyDj69UA*UUn7awk^2a;XC;* z=p)X>krw;f8{u(%CCFOJD9obN6I%I%S~Z%`$|q#~8M5*TS^0#L0A~m6mK-L$8aAPo zPuxk786oj7x+fm3d_q<}p;p5t$n$)-$nM2K7H(Op39pPz*}W46whnzS0enWGi(O_hCE=f_<~PWUE(@YA%i(Quk{S3}8Un$^Nvu#*;X7nzK} zRc4vVH#qok4+E4Y-z9#zYnWNwCFTLhT_sS~^)98x&DYSlqxojOsa3(dlwuM-%kPne zXmuv!q$Q-rVJr8Pg{pDb9^4m&{9OtYd@~#(pLuXGHxY+OX%6I^D&#&QxXkWO-kpJN z&x5SZLh1sx*{7YmL1z$W0Zat{0xsf?#Tmr894-lFK;|-VnZhFz@mR1F9_KB-6ikgm z)@q{Jw7U(_Y{D#pN4d*pHepspS<)ZK%oH*+h0IJL`UBA)NFN%ZkC6Mfh?5&}OsofP zMvt(`NL6RP?uGk;3fK}n09(yA`?Lp(@!`B# zG!IJxk^CB%2%d+Fkoi0${~%lvEP=(`lray^jN4$nGVIfgLE3UO3{bR_?tjAclW{O{wp}&E^(!o4F(PBL2;G@3ecD-Mj66 z+}xXbg)sY4|2Jfg16$2D`?ROt#pjgY>T~$tr{2Qnqtr<_Zhn&b5$@^Kt5E@aC}nVl z^2Q!Y5#&@nG|9o6Ifd_S8@DX-*Bpy{Yr? z!{B~6p^8n;0sz{xH z>#6;M=s}ews!N@L8_bR7KQS9qAL9Q+>NWV))J^!c)I0F&sk88)%BAnl;FFR7R&*`w zOkIM1<1pWLn17cV!-ucW;IUK>e9>VT6+{cD({ZR4y})gGfm`u{U>~t92wJ!YX8}6D z9JX5^{4Il%6j@!ykZrJqJ6vg=Ya;O$=ytX>^~yeS>`a1~~@{ zbNS_f`}FM_WH$#cvzr}f+^bAR9k|Qvt}v?|rp{!)gQv12_o0)bEXjSgB==Dkxn)W2 z)3mg>H6QfXO>?n8QC$ITaTkT2jMU%)}x{QHpPTxe1M+t zsk@L~j1csdkiHVqS3>$q$O;(b{5<6RJmma5Y&Lh9kMkRtMLJal+4X}h*qoxEHJA_C z`-9vr1vyI}6_L+OI3YLr5~E{3{^xCklDgGcBki^%y$ zP&HWOUbu)+#8uvWgm0@B1&{OYB6M4Ewa^Q2GSp;c0Jrk9h;+XS7ZKYcw0aGcJzPXu z3n3?3VJB^25q%~w2pG#RenGH9aTg+`{v$@NZwlB4| zFSR}_Wvzp^7+s1}q_UK>a-mAS6lu?ZMaX$65|Eqo0B|XCUW$ZgL5)C`BH?UGvV*6^ zoRSiEoBN2F^S{JUj0D6s`!IHmim}O%6tiF=cnC`Kiz#C+2F^axBs)WRDdtvU@RawbL{9!Zq05cIF);u#Wt<(+ZHwoddb!d;ByI|-Wsk0I^O=taeY9%e*;X+8W)ay}USFSM6A z=ywTjMt&w=kK*RLQCLM^e3a4h2&_(>gEgtkur759ZbGk)+9n^hO+IRyeAG7iC^2v3 zsVwtRTjrybVlM8z_Tj#L+%4GHqm-)zaz+}q(}VEqzzSnqdX$ouM@Jcl55NRt)T79= zALc7plzlZ^%$VvZWxo${&oorubQB5b=~1L~ls<79KAReX$7%2XCvR23qu7LJg5MyA zXRy63(chEvqUd|*%qVQa&VP^6iCfHVrsVcLN+*>9S0^uq1_qk&Ws?4q}^q+Nskn%b^R6S`l?w8eK>ujJlA+KZo3n2^Z6kbkTAN zPucm2F3O$-S;2$s0z=u!E;L~QXnX>PxbLFW}DfL zrX9o1@Dw`(X*IVXUq3BsY4NmOBYKZwA#`pCxb8 zkkhBpv$R2cJZgOb{Yi^nASb1;g}&njOY8+CCLc-c1yWB!zEFUR<&RdRL%#Tc%SiVH z@=y$qp(ihphl1$GJe>oNnQCz_@>UwpqzT7KcP3P?aoj!EacTiKX*~qh`i_$pR-U)A zpn9w0q{TdnwDRFmYU()gr^6Sq1ILLkH~MAJkh&86lHIP`tPf^U(qHQ&0Oa1h2+1;z zJ;gX`63#{@rwDTvF7;Es;K1GCFiDXS3qG8yAtb8@xV5?nH9k4TD$_}LRqwLOG#H&C zEip|YN%1=5HWJ9*C}gD(K4NzZt?v{&6!OuSfwk|{`;c4EVHP!Ynlau2sNcXi9cZL? zntZbI#dvQDHjwUVRz*IBeAxlHc@-XXY#oj*DN+jJWW+^0jJSB0^$^~rM7*o-J|Opy z!%KQsE35D%^>~{2=0Mh0At#F!Ux)5b=acZ#;wX{d`M;CyKlw7$!*B}Gwk4Ut_jXYCTFOT zF{obh3@2wkflCQ_MyIpj0djIi=Z+xfj-oT@3~#XpMR=rr1#%V(4k#q6m$xA&2_gGj zu$Njmqt#u=Ndq`c-p(LNJ!PK@UPo8Yu!c!&+PQ#|;h9L%JHvkNr|_=BOKxW@w=>qs zGw3AgT6$-Y9&sW)@`>COQgS<^wJ%troS?A^FNvK&VhZ_)eWbT%klV-bkmF&G1NYN@ z>j*l327Ml9=bQWFp<3Blw?uvy#Xg+l!bfxDvs%-G2e5Ky(Ne;@t+7w8Fi4E2NQ|di z35Sx^S)?Qm>8aMhp`>)yGC6CRoW%mjN0K>3-~gI)jyBj0`T7hd&BN5` zIp#iur*wp5y`PY@I6^Yt;VD{i5}s$4t#eR>#M%tNLG!AgUZ=gBLkHwPu5{Vue;?km z`*!MYaZjec3#XXFoinTbxGi?i*YW1j?b^K-Ff66g8ddnGr{11Obz+S<8zp-O?A^)A1d z09QK(eoqJYW`}&l{u+ntM3!>W>O4HDa-n-l{VDTlr^x+y_h_$6pzQ5=Z0v2gkvyNLX6L{ThfIo`#^PP< zD&cA4gk(pXkkl+8v7bfow0WNK1}C-X#W<-&y`RT^&V!c~5A`durvpE1CF|86LYiv4EQs3y@t%c$GHJi5=yT-caE`W^ALg zI^>pCtdO^vDeIIDX;I^H-%=mq zdv&Ic^H_Pv;RA9q%Bd`ARKGQ<-x}3#jq0~X^;@I*tx^5fsD5iyzcs4g8r5%&>bFMq zTci4|QT^7aerr^}HLBkl)o+dJw?_3Np;=MCHL4$5F@jqf)o+dJw?_3_qx!8;{nn^{ zYgE5As^1#bZ;k4=M)g~x`mIs@)~J4KRKGQ<-x}4AwWsXXsD5iyzcs4g8r5%&>bFMq z(<%oEDUIs4M)g~x`mIs@)~J4KRKGQ<-x}3#jq0~X^;@I*tx^5fsEd~WMazG{mWN*i zWd)2Iai~qcW}`;I|?g+0{ZW$os}i_HBmlXLlKWMoiTS!8ay}VydIzqyoAXq-`ECVjE#eBYlAG_%;UUHkSI}Ff$e9pw z$^Al*-yVXq$-|)K#_u{(oBYBa{X4&4<}lpKj+;ARq4a7Hc@{(NS%use1i3FL8bp%B z#<+smup2zZZpdHS!g(CMg~h<%qYKRi35mrJ)dz73Lg76-Ltm(`K`e$iWdC6#Fo@k4 zfa-%d5usdRD~KOk!LQk2E2bg8@d@uZjK&*-*b4ly6=JOLNL%ii$`4k8R6G|O#7d9{ ztc0E}v|D}mATlRK&&39@5_-z1d#JhCAok%bRF5<0c`;`&?AGj<9u)Tw(jI}_xC^DF zd>cTU8bVj!h8k@S(c@qXkoG*tUC>Z-z#-P+M9v*SP8UPI#em#=3;8k&9!$LlrQ1W+ z?ICV!M0V5*=~6GGOT7>$dQMu@i`;yL0l5hoVzJ;Q#lxtcchP+2Drmmk8ru(1Q-q{b*(Tn{dAV8`Qs2H zf21Af*e9XVG3Hkc_bUJBfZm$NuG|nK|2nvkQO!`S5#td0K#Ax(6whkq(>=%#x}mqW z`{^ToDh(MzL%QLU4tdC7o>D2$7UlD4_CSZ?!&uZI&jN-#CLE$q8OG<^Xy8!%cf>;* zK>qyxbBeR1=u#$3q%J~PykWGc8y2R12l-VaSWImW+XfD!Eg$0Mc5c|=c#`H}O2ii` ziW5B{PV|I0(Gy}rPl&-*aTq-z1~h~i&=B6TZ5&2JPU7afc*q@V@S@$)jbU_S6b_n0 z=;tu$QwroP&_wPQftL9T0yzc3TDeX`vmX!skCC4S)q8>VLoHuc9>bA zd{UydV%S7Hr`dK(ABM5IO?~tHpe^a}^zU3m?9Uf=f+qkjC9Wsjt!l zj=%%-&R0Exy~=oi*xUnNr3WN7ulaDYUhh)xyvz86cj*mzm)?+fsd2u^p~mr{#@~nh z{sq)5=_>X9Hqj+9P=j)RMtQH&8}iHa@x6?W zuEqssseQI9etI`O-DiLGZdZ{ZYbYL-U1d}-!f%&q#&pf2)@z=fT|?7GqigOduAxhl zxKkopA!;^y4Xv1l>V>blU%2Le;Tp9spL|;MHER4O6&Zyn#Y9K z+=@p$0@N>-FN;Q8Q~EvOT-=(c>lZsSpyuf#o~Ms^p3W^1#5qFkK+n@To3HSmr;m7^ zuJf34q7nC`tOAm^5s$r@710ll*glVVp3dk@@zDB2&C^Fb>K<_)I^ucy2)*YD{54M> zq2DA|o~MskG9#X+k029bKqjJA-bOr6A3-Ma(L8;`^Yjt)Up|_rk9eLwg65Mh@)0%X z9r1e9hK*T3(mCfn)}7>s-?fMrevntC2S> zlN+AL-SGJKhUXO6N8%iFs~_{of6OC)dQ;*VLv9)mX+@W>XozRbW8E=Y`X{(G@*hJ! z&@Fw;BmXgv{Kt?s?|Otb<`M6hNB(29@!v;d$ZZ^I^*BSUn^BmXgv z{Kq`Y;=@Gw2{$n2bk9p)jh9u>$k^h)S{$n2bk9p)j=8^xHNB(0T`Hy+z zKjxADm?gvSBvT^3XM)rgau`Q4HzB`<2DR5Pj-Kdgho2@z%1#(`1Appn9BRK~+*&BejK-Cev`g618!vQe-oKc!VbTc6iJbHE$y51 zp@c-vgtTVfw07M@GQ5RkMCsT~=k2B~(oN^>CVi9q)#Kc><+*8_bBny)if)m&J1~#< zZ;`7BD4TzaTzw3ct6SuRkXRDJ*s9+mCp>jdZXu`i=oYC@N4G48TWDi?#7-Wzg>wVM zz!_KCAZJ|BjR_>s4fE&`Ca`1jmozxz&DA6WcIWeX6xNpv!@B$ zaL&g%q|Wn9FmIX!H3?EP*(;>=aMCSw(k*n-dN_$5lA`r+l6+3%mL5)811GJ4)DSYC!a7YszM+G;NPY^r zWkU6FQ{;`%RHty>P#4qDCyrs-GM~20r!Dho%Y520pSH}WEpvXS8p%vs z=G@DROr|Y!?#;DZGM~20r!8~t^dg7Tmie@0KJAlQ)0R13IqRuq&KGrx*)r$53j0gu z)0X+PWsY_uXS9aWOv}HbRnNM5h)0X+P zWj<}0-?e1!T6&)$hn(m$`+P=jaev`&P5#XG?KA7}XV&4*9rAOBp?Ak_r`+OFw)rXB z{FH5e3aO6rRP~s0TT8hfQ?~gj>XCQd)>5|lsW0MmTT8h%Q*LW1+x(Pme#&hvWt*RJ z4pX)XDYvzhZGOtRO)0l=pw#0)F~@x6mAVG$p&&gJWK|H-LqT#26+TpMAzBCNp&+@9 zL**8-5(piqa*La>QyeO{kRA%sLqU3|I8<&SV`j*h5Mmi1JrrbY43%5 z#Ek|L9u1UxDky;TCXihT$huG*p@(8DAL$`v769o@V5Z4h9B$TyV6nqs2XM0%1eujc zkBK3sF0h-Fv8#6c8TL)9Op~@S(yfL+dzsnnIw1!*d zja}ZD`M925(p$7U#_N=tkqx!h3n%TyLgQAcW9p9mV@gdJ{t{V%1ZlxMn64NoHQ_0> z{OLX6T!&=s5qGIW(tF~@dc#NT^OWCx+TlA%3prAXG^B9{s@~I(!&#U|m^8~F&2mVy z1k$ih^2e^iE#@|}+2s2I{3V$*OC}Awgb(r|ek3EebRZ4Oj~i()wzCeTA&mjt(t$K2 zFbJ7xLe+knYd;M+6yRnh7P2-7S&4<2K{1pZ(p>v#)V};#eTAz{=|CECkk3;}SK|lG z3TR*HZky?Do9S+woGKw2N_e-{bhp-fWWD2iWLM)E z8vj7XKahSL%96~`_y;oniDzj10~!B7-Ij^7Ji=fZJyJehpeXKd88|bC zn}=lZA%0Q4C;bE(SnPK>gNv>f69e;1O5F>ktHsvUV(V(L<0-bT7F$<~t*gbBaItl@ z*t&{MqArT9tHsvUV(V(Lb+y>KT5Me{*7_kURxvG|bt~Fq2~zEa?EAnhYPJN~J_mDC z--UU07pC6Fz0_ff?ayyf;j=MFhX-h(CCL0m$Se;s%Y%n0ZwZnoek=n%$e)<8&tk9Q zq5mQttOW63C5VT*ARg9}d6zYZAHnmf@4+5yMG0$J_ri#dZ+$AR3eEsK$TVo8j8ISbS6!;S;)Sq{TlBiz}FKhCjFLiu5ZxeU&A_<82S zpb{UAqbOOh2A2BW)qb~0rA8-}hwYLib*-3NoO-Jy96#xI52gMF_ft;gpR07NFe^?@ z96{Fn;Ws5WR^h}>$M6@7RZ2L0gp@dagxunPZT?&7N&IcqTKvD;=kL(-QgnL|s)d%K zMQ_90)ZfB9QY@v{ptYm(3d4Ch$ZxyHrRX_6=mz1@4ML*rJVg_DN==Ef(xuc0BrqQi`+{UgMcka-{I9 zgZm)Alm{QNPpe9Y^vDSk(_4HI8LxKhE2mw*AM5w5KZUa?Bfn=&iu|56a^Ux@(R}@$ zwfxn;^IO#p&$(9IoNJBsE7H768zGFxvHX6t{9WpDk6O#=D>LHqFH)qXkK<;i5~|lO z*9<7Gq~BZtI|*5Z|7iT6pH_P$Q|+hK)}?BXNgAE=M(4cIIoI#q^u~?Oxqk1a2)A3d z~K>pC-Q0CmvQl39pq;$m$|wUjtsGl{K;EDRR0MvTh8oQ=%qT zJ}2PE212;-h{ zvwNJ)uEEXZd_3Oletfg*YqRTXvwNA%u93~I3(j59rnXZHto5Tyc~Ev>J9dCOddNvP zWM3Qd)ePi!5~0Ra+nM{wy+3se9z?3!=|>b>(mbs2)D$tJX~c}JAWm!rvC)qZ1N{gw z(AyFNc7qt`L3oS0BP2ZtscSD1vL^-AcWl>QB>W=e5Zb<-zJol|cZ@@Bqk9u> zKwFRxrxD;Rhta5byESAx{e|A*m!sjmSf}l@6uIY7kK5Ucl#lw0?erIvh&qycwc}?m z5;uF15ZS{={8YNMoz{dr(WsN~DV3K#LjF%X#lz0eHzh;*hz!UsB=%A5>k+q|N3f!E z;vKd&J8W%s*v{<4T^H{*_oAiU@m_k0Nys+~P;GOsb#kx!g}oj}?L|KoQsef$^bv%& zX6|+Gu-9X%y|lr%_68F0G?R8t*YuWBas?+gax46AXX%siN%|l6P zFYW6jluY(&M~0mSS(O%YI|bQwf|{?jpvj|9BTxTcM%-dc(n3B7Noyh``bij%+*;5> zLZXMnX-m?g^Fp{UDmF@?r1t}Kh0>9hXQnOOS0*3!o8Td(`U9Ew#sM;qoV98ph&>5D41#%+C-C3BPJm# zinx&G{eOSYIrm*=VaM41bMNP#d-mr!&w0*so^$TG=Rm`HlRWi&TU4k<-1R1f>Zvv5 zqj6cizFA<3S0`B?H_1i~ldN}}L@5U1&w5VG>&an~^<|T6j4+AP5sDw9gV;tALvu5Z;ja(F*S481fKga`LckiKC}sLe;rdjND~x$4pZ}oO|(;e8RE+V zCSMlfCitHm;D6G>|D=NdiAifErtwb`(vrDadP8!vo~6lfZUSfg!C9u}51YVQcFi2J z&JRrHT6>%ep08t9FFzLypTyLB+FWo`9E}9$g5e%azI$Tw-4m1Vp7C63r*pxR9IW4; z3!bF4@!(vrB^B6`O5Z&()%(xYcTY@KJYs6(IG2{o>O+0^#AL-ICMzB>S@DRe-hVDF zw**u3Fmw3=BfH8z*UCQETJcaRYsF}CZpyVHRhSlGtcU4p2^jDP(!IS-#gFhYo5_zo@qYwtiI-% zbe(7QH4mKk#q+>frsjL+QC~o}`kH4vHqYv7p7lHPtk&jPt#hk}1xg4{rP7`PTa8o8+8NjSy-)Ki}l%e3Ov#jnC&BZRaCZ%HsJZ8|Q=P9_)M{ z!xXmj!BalW-^cTztxWZ>^P#Zp>ILRoFEAf!%LnZVla&dWv<6J5i+K~dafUkh>ny8E zOv#O#pzVv8;^pl&AD#S6VauaQ~KXyr# zn@pbEWb))DlP5QsJh{o_$xX7xdp1q&cAh-{9A{q{^%CN>XzVii_cm? zd{`@p$yz~7>A<&G>$nA+_hRR7J4|WCx4;#chW{<#Po9SVEr$Os);eyX6r_SfNJWZM zFk8%IH%sgb1%3eH=DV|%&jUBJG&~*Hc^9}UCZKIjrVSaO0Q$@MUCGI@9o9p zn|OSy@!PF%8g}h4hS_2!J4Rw(3U0S*2QbX#${}8%9Kchd_tGkFH9T(xPuYdxt>7m6 zW;3^#$-aX4Y_qhF$)2<#8*feSz+7N6Fblx*1?=TPIi|i8ETEs-j>%~VnC!NV$y!j% zQ=!!Y>Q|wx`NTXI3NN4@_h7Q}6Z3kDuX&gSHV?Cad6*sX0?G>%^k<;Z$B_eNCuizc zc2<63{!F=1zvRYj47tIpio;)B@dBu{1+&G>g~Eq@*yM8uG+96`%V&vlU^lsbn9G>0 zT>$mSpIVmxD$D0y#_S8Ap5m`Y16;r^rmHd6T0Re;GcREOQkf5#xn7vW-#7aPMWfRh!sH)hO!Y*!Q7(Ka7e3be+(s$zrxY?J*=_@W*(K9%1M>>ZrOFMQ_hU+S z-DbGmX1Lu3ZVKIC@wb|}-C{mP3%w1V0V3QYvz6JK+o;(g&`TQQ?Z|aJJn#Sz28oa5R(>7OfV-7m=lM(Ada=-+bIPxDTPdx;&w_Q`(0+LEVt8I%P}RB zZ`Y2RnD?7~wb|F0xfaZCw-Vh>iFRXu*!(w}$u64sh~~Fz|4htnK{w3D%>E=ZX1CMg zYUA6J6IDjaE|ayCn5~QuZ>Q`s@51Nbk$b!2e@8}PlIpGTLO6Usrbc87(Rub@N&{So zoZO8m4R9fRE`RmQ3!zmBru4vtaI(_QGIO>}=te&1KZKh8vk+M1U|hWr8j{wydLjHw z{J2q2kb%TU2Fko$P_+9l=3PkFh4B(v`a(EaF_&5B3NzQ6xz+NKEc%|6?t50c?^)>< zQLcUQB3kb6F?(j8#_UBOu?Q|b0rONw4U3Ei7E${zW9MJLcoC%_6}3-%xR;p51Bt9!7oGoSUA{|3upBXn2(wbs{aahc8!AXfJ!norn`f( zE2hSwcTjfX&{Bv`*@;6*i38?@g83fImGJf*@WbozoyOaD8gJieyp5EhrtV@+Pv&fy zP(~)}mND6}HNJ~F9gGPU@nUP~i>;+EwwAuwTKZyZ>5HwUFSeGx*lKpMwe-bSgNv=D zFSeGx82tCgi>;+EwwAuwTKZyZ>5Hu%7h6kTZ1uR5HwUFSeGx*joBxYw3%v zr7yOYzSvs&Vr%J((GT~wlM6|GUI$aEbM6OK5%15qiC1QeK(- z#f+(bd5P8666@WT(Bg=Rd?Sv@wIs( zTI7b*!Uw4(6RCrFhnbQC=neFAOQFmj%yPbOE;apssZohtV9)@U!W-K$--1-s$?JVE zHD|umq#1j0T3TswOHGfIlCYnDvp!tIv zI=_6X%#_Z*l=>Zt*;iDemgOUzf2ryGOVRd~it{KjrSmUMCc-UClkdR~OVQ_*wl%mK z^A0nm&o4#)84A55C6>V(yQG=HEz68IIL!(Sm%$sWF(o$`WdVH|ywM+1ys-@4*o}FH znYCtS%oJ}dgEwBn6mKjuEn=C;nPnztmcbk325$h@zUwVB-dJXmXPNQFGUJV9@CNx9 zZ!9xSV;Q_bT9Zi2Od>5q&UeRWAzZP{B+@cCL~$0Ik9cDlSPaHwzkSRVaN{y~1L*Ju zXEvA?x(wb>=o*z5uAq!?h0KS{6jv;RE94_hdl`~SX@6ioo2boYv}O5hF;jZ@GPpu{ zJ_-*kgDapITp^#wEDpP#W7i0A8C;=Iec4$CS19ctWT%Z2$9Q0w@xU_Ufo1T(e*6cR zsd`^VjhA39QaxHvw~QKB+B?nXE-0|vdgtZT_dW7J$C80%jxxYWAY~# zroN#sx1M^r_0-F$HPTv7x7=pZmQ!n_qSlB{e?fff*OpT|v?KY%Ac~-SG;OU@PEH*?+1W zC@DEu|G2_r*9th3Q2Gec(nrX=T@Z~YSI|?)N8GpqN!0^$89LhvxKXLV3-exK3m@*n zTy6F>W@^4-1={aRn9_b%SP!zoMn)^*jpp;P#oTNrCxZ}&QwA^}F}r%q74##5$XNrJ zkD2*oFbF$))yFH~v4NNxE3JULz!v_Izs5={;2-E|Bc_#5b#J`VB*RL$Wixio{OhE- zN=(hNu7qO5fh!1wR)j(;Lg5WU;f)=bEoO46FLvnnm3xpZDPZfTdE| zSJDz?e&0;>o-1j6GNmo7w4QXO^`t8)`z!cpgt(GY%PyT^CFLC$uQY9cCFKPx%3Fe| zI$BA22ga*tBQIb|mso}Fx(8DuzEza;RZPuouA)UK&TN^Kmzb24P}A5~nHIDP4&NEC zg2Q)Vu0*F@Wt#RX)3H|>Z?7`_XO)e1R~c`wGEIAxY1*qy(_TewlD}!%t4zmc1{0rq z!SFTA9+d80({}DPZHKe@py$1&-Q8;~_g-tc_XZz_d+!BXQkk~H34MxbI^MnEPKCmO z(sv;m?w}{r~Z{;YUSVx7!_@bM)g~u7PtfA%>(6TFjA^*(JXYcuKdd&Yu7)!B7-d!)W!4yval#;Zu7SH= z!+ej~wcc+HQfM!xG}Sdmfi=cyYmi0wz;DDSf7!JTa1FAE_@=L}F>0(asj|l8$r@`@ zYpgccK!-i?8rq9YNsKkL7xIAuyD(MPYiKp{k*r|e8K1Ri2!k7P`sjG4nA@OvbJ?8M_vl z1GdNu(#m+9NvCz>{2F#ir*+0H>r6VWGwHO>q|-W+ zPU}oMtuqc^2NY77bXsT9X`M-@b;i%@4F7c|oz|IjT4(&c&N%iVxU?*O2>#rSsUH6! zqtZiAX&?6Msq2T}E5*_Lz(dxjKV(#T2r3Z=o*|C)L=V9s_`o6iG1Ut{1YDWojfdb0 z`Ku3l$oid!tlxPEPEZbNK@VAv!^|xFu-;nwdZ@7jyVmTj2dn*TW>l?!%PS-2km*ZUw^)CUrM}TLpGWT{JxK+=#Rph$-2)(fDVhNt=ye zH3Xk?E%c+vfsNKvY_y(YBa(qsCLwip;yKtg#@vWxkiSM@8x7BmhT%q|*hXkYsNuOW z-UQ7z8lD>s&y9xRMlh7WVQ6zo8{zi4cq8o^Y-!iEn3`waNV_H`?ONvhEmZA#BkdYY zXxB0|Z@^bZ==`wtFArPmd)WGyhpm5k*lOWnIAj-b)W1Az{maAF`X09aY%(aD49X^hvdN%qGANr2$|i%d z$)Id9D0~Z{9yeQkZHAXBv8xSkroKjEo(s)4)0geXRDErxCCbiDKA7y}gZXi&vDxZw zv$e|2)E#N5HR98+5#Q==Gc8p1oy6zs3)J2M5AVm6F0sXUcnjs)ja@q17PzGZQ+nwZ zAS%Arjc+lCTi|5UQbyv#C&V;4w#DUda$pPmTp4dMX|RQn2=U=+`Kax0v9`a(+Wr>! z864mi`AY(9F$u8M_<5`0xz+I8YV_G^a$u{;sIAP)RgqqO{Z`}Wt;Ww=!Lu^nYItrn z%4{`xwbgq0t>8(h@$**jJOR7f-B$RS+`zLprbbL#jkmWNS8p}0-fGxxHQwF|w*84C z-hKoc?!godA2Av}VlwIxqtYWLe;zS9@WqQb+8J1;bfia(yB;NnUD%}~X|G^~iiaOH z?t0X?OS=T)Z#?#>@z|rrV~-k-J!(AmsPWjN#$&WSO0>w*J+~Ppw;2t$natk?B~OgEnY7<# zG~8x1+-5Y~X4KmToL@lO*W8_AtQS33J*keYq$Bbe+TdjYrK4fsLlf}j) zC(0-3YxaKfPv{>o2bljv%pr+p`-diXn0XiG;2_`xrkO#=Th|4gD(CF{^%-TnJz@v^ z3EmzDr{(;Uf;jw@7QNTUDdivC?|3`^c10iZcKu6#nzwf=uy8iG#D1%=I8*?_bX8s;RwaLH@l8a5%yI$HA+!Y4eT2^k8Z*EojEK zHmDA2xCaH}g8E=4F=i4v8T$DU>G*p<=;Sf6Xq0r=3t+Ky%Bpe`8DvqBA8_U z&6tA%R;m+6aPp~@#~>gM1M+x-(`>N@u^)Lo_f(55xW#!1dj~I%!9?DqG*eUW3eMu5XZJ9ms!klO1YMLGMvctk-^#Pb&6@r3#_3b1H4mz- zuBjO`u72jMnbRlN&lq%Z^ORwO23LA~hAD&Q%$(BDIH-AA!=NiB&6(LeXHea& znawVEa>JmSVb$a7XEe{6Iq1Fh^;4DB#~L?_be6%yhN*LA)He>gvZ1kQIuWafjjHyM z>Sshz}OhDHE4H`Y&SxW2yex~4(1t|^En{9O7RjG-RJwC3j7?>g(O zdGqECn_^g94^qP>&$|AsAd^bVJJXpC$60 zf1iStN2sSSn)8BUKK!FidZI9=*p!C!D%=3fTyMlU!w7!!tx+J)iGrJ}RmvQ3j6>#kbf)BFu|5fbx|6z9G|448(x=ei-he@z8SQtDU z+!=g2__(AY=@F3D;Rd8>xB3K#xU9c=z9{gwUrQp}Wx?pLrCM*eV3qBisE_fjL z$KcuE^TAhwe+d3HXbo-;OM@?lU4qX9-wa+1UJAY({8R9Suxs#CuqXJp;Ev$sU~jN5 zXbBbvTY^o&-L&G#!PnrqN8rrO!Pelh;L%`Pus!$};nZ+iI6b^Jye^y(ULVd3XN9xFkA;n4Q`j8N3Fn6M!W)8Tf?eUq!yCg- zgr5xmCY&GM6#OduRPeLl=fRV~FN0r%e;a-}{7m@S@N?nk!@mo^5UdUVKKx?%58;=> zFNa?VzZ!lm{CfC}@SEYc!f%KF82(fE&*68%?}q;p-W>jG_;2AY;jQ6yDx!-vBkgqy<6;g)b~_(=F@ zxGmfsJ{JBk{EzVQkUizYABR8Te0I)+=G$a#w4tKn*4c0jfuuaY zis;Jd1JMVg4@Fl+e-(Y0vvxibT^)Tis*ff`lcOn7Lv&3vHJTPpkFJfbi)KXEM>C^Y z(d_7BQDf8;HAi!zxzW7nhUnwbjnOBfPey;EGj*a*MSmN8I{HlX+30i8=cB)iz7YL= z^u_2OqAx{Xj=mCoHTqig_2?VXH=}Pw-{x$Xf8tD-??m5?{w2CO`q${+I2GpBXn{^o ziEfYnJz5xjFIp6}Mt4MaMt4PvIYHzeP77HYEsK^%E25Rrs_5S6zUcmFb+jg08$A#` z7_EyQiq=Qp=bVp?(ZkUXqD|4}XiKy;dW3U0wnf{c$D$u{cEscC`TryKO#cZxXYYvq zGvcJ^=;!PZ{1kiV{xbR%JDRe;COhUmqut!1-$cKSeivyMv*)7cqZcCfh+;1%c2Z(z zpI4$+qt~L>*?;8^(f>q$jIwdS&Kwc@Hn7hDfBJWcyT;w(GX88Yk9))w{IA_J?iHU9 z_m27JI_?wqjr+y@;{owW@yYR9;(_s7<3aH$@u~6P_-*lN{0sW_cu4$?_zeDxJTo2| z4~x%=tK*uumj4qo@!9bR{z@DbkB;9J|3!RG{Fm{&LH!gpl8 zZSpl|rM@v}CZ2ibHOxXj5I-2NW4?=Z&GGk{Utx|T{z1Gc-ptr^Yy3#e=!)^kW5K_~ zKaBq)ems66{!#qn_$TpC;~nvT#{U)nEdDuTh^OLT#J`Mx74MAyJAOL;b^J`cD}FZq zP5j&Vck%A{_wjS_^YIJup7_Q1rFd`ra=b5oC4M!2Eq*=TAO9i#pZJe)HVKk2iP-KU zNlKE^q)XB@>6Vlw-IMa9M^cegCOwm0$q7mCq$)Wv>67$L`X&970m(_p$;n%ifyrBw zLCGn}smb8vZOLiL>B-xZA;~+EGm>{EXC_0FVaZuZbyAbmCc~3Va&|Hz8JUbqMknt| z{vtUi`ODlQGHIWLz>nnUK^a=OyPS7bF)Z7bO=b?@iv9T#{Uxyg!+kT$Ws( zT#;Ovd?5K?@}cCae z+dy zEJ#|C+mhRpe@_-B-%A!Ht;rq9oylFv;^gk+o@7a~G+CA`PgW!=lU2#R$$iQF$?9ZH zvNm}jc`#X*Jd~_YzMpJJHYN`zKS(wuo0Bcc*5r}o(PUe)J$WqoVe%iz`4AI`LE<>$krDSjNar(ID-N#Ly z-Z**A_1Da3xS{*xyuEDPlv&O7la*=NEnO zTHxq@em-sYX?c5c{-pZGWEw{41xTbCAq+rWV)l^1s><=?p=04 z4u#U`!)DByJR`c`!f5)n-7m~T>V9qBUVc#lYUS4zIC@<-wXvaL<_ty|({WhoLCW$O1&-2-9T8{PE4di-k{KAK?{n#Ay7ccWNK!ttz)|`> zmwu+bdd{q$J*%m?an|f<4Te+q0*`pY%&Bq1%&A>2@f4foDRzmY*erYXxMbR#nN#Z< z=UhLdeok|bS%t3Bi4Lhoht$LZJjxpj9HkQ-QjP9)nM>7VukM%SsoT9NZ?|?*GoseN zhnHUN5;xl`xm>m1tlGcA)&3k;`&am~%<*Np!j)x?y-KcVoIZ1E$sCzIt|%-?k2!^| zE?0Oind9EwKaj_(`@91ChYIW;&)Z9{awWXcUS(J1c&zNkoV8@eteI1r$}cM*Q+ZQ? z!^&M-GseHib|vMEhNh-#%kov~!p4m*{lL`5dZffW_xgZ?KF?m=J}_lEBiyFxP2J|D zw$cx|h#$9C`Hc;Yvzq3ZAZjeXX4ag>ykq*@hSbr$Y5EPRy+;#5X=cvVppkv*DxW!h zW-gKCJ$>di5^{~*kzF}^^SoK9y+`vjnojC64Dt>zNFBl;wL1)QF2f*o83w7NTm3cD zr;n(q9W}aJLsK(Cp}Ap7R}g8QHob95H?S~EQ#ZUUlWFCKjk7m(zXtf;UT%f<4rOu8 z^lO@@DGReSb+?4hUM4a+t73w9^RzPMWwxd=`H6(h)4G%1TbmpqQkSa=7ptk<5_^YL zg|{nvDDDt3OOpXlt-y5F?v}5&TPd8qWPHPn=6bPGZB6Y6d)L;S?cby0Yp%YAXFAV} z66{w`H*-c;G0iZhJ-Ptj-jqY{Zbk*!x{3zQ0umO7(pwxu#cYO%MFJa()Xj2+o0?R# zVP;X@vXr^ZW$k9UJDak%c*@`6IRIvL5Gkad1s@x3O586j1JcElD>y8Y~~PnP-pl=1iZ_gzTH4fYPz( zC=Jb}6J|~!b?Job^{U84u@q$!ZkRly{`x7i=FPOkGa9a!6uPF_;+f0hmA`+E8W*#0 z#5Ac?Gs-^OayHKUC6c#rh{qx^fce>+K7Git1NkMr;G{yo9J z>)d;^hdzuc<2*6^a&pN1P^_Jhd#kWuk+CBJoGvbz0O0g^U&*j>Fa#y>wM|!Jp8)R zWn-irImM+uXYDd(f_ZhRZ?JdwOHAfC`>ed(N>f|yuwkm-yB#*Q)ef85YKKj2wZo>i z+F?^$?Xan>cG%QbJ8INcJ8INcJ8INcJ8INcJ8INcJ8INcJ8IO{c=$CQevOA;sG64YkmH;zI?U5 ze6_xOwZ43{9)7KdU+dx5dicXV{NWz{a1VdDhd20Q z?r;xxxQ9F3!_9cO84ow(;buJCjE9@?a5Elm#+N(e;b%PjjEA4`@G~BM#>3Be_!$p> zbZv#{@mEiuIk%w^MXr3xtT~frG+b?ZY?-+AYGcXDRMWlM4Fk$hp1rjq7i5X@PD_|~ z8lZ9;RQQzLEXJ_1EN^gPBPWirmfagSJw_t zZD-fyY_&OCJ~Wf_J3D6^k+Y4=*+%7Tqf^_69JCRxJ~P$hb73j0noKU=np|!*x!h`U zxz*-!tIc6to90qoo5Qm^YC2G!*jG4o`W$w2V-~+ z#_$}B;W-$?b1*VF7?~W5Ob$jS2P2b%k*7;02P2b%k;%cxA%H=#NSKd)M7^8A9M&)3P%E1_w zgE1-xV^j_X<1CH1;Nj6Z7^8DAM(1FR&cPU+gE2Y>V{{IN*UK_z=W-jF&n<-oG!M0= zIt{ITbrXyBV+UX1uza@#=2ItGgMm?qTbrXyBV+UX1uza@#=2ItGgMm?qTbrXyBV+UX1uza@#=2ItGgMm?q=s$wl?EXV)_seEp;;_0fChMDLpueQ-K6u+uf`9$h*;o;Yn*$z{{0USA(yUO%VH z6)vmz(rMG+APqH#@~8wT+<8OhsZG;iw% zcpHE5wl>1s+6ZrJBfL#r=4~>XxAhaeO5rvps#!_T@XEVy`@ZFSTO`V&PL;vI-L!-hwr8)ar^Q*oej4y zuhZFZd-zUgtEqE38*fi=X5pR z9vS^Q zzJ8rfhTGS#)5&mqI8GPC?cq3GtftQCV!S;Zr;FkC<#W0iZV%V#Vz@nAr;FkCaGfrO z+w+yv#c+GRa=KVeozuN|dp>fy7j6&7>0G!yoH|d>IuEDL)3eUQsq^Kmo6z0*(NUx9 zD~hv^F0hX&u#YXUk1Mc`FR)K2u-E17qYLsMU6B9ig8WApA%=3oe{d-#nAmz6c9$JBT&M0V$Qvy|I~_mC*K%S?QdHaSl;XGUloYgMu^0O}v~n{_nly;z7Z? zCSLO1LBZI|Ctfs&mB=ntiGP>+cNhQe>fij~V7ZqC-LGqCoEeNa^FlK(HSs`0GB;U%P)5)c&pL5@uLIc>}8?zrc#fTUq6J7b_a?W7XnjRw(|6)rZeU ze`MX>`&eW5Y1YR*6~Dl$ukozl`WmaHZf0fFB341IV8zo$RyF;Q6-+;8wbHY!Oxl~g z&W5+8CFLb2l=LeZSn{@#GfJvUMwFaW^68QIAK(s!4RFTJqz($XtSKU_MgbXw`m(i=+WmwvYNi>0@h-qGa` zU8AmDyH<3q>N=q7psuHPJ+tfBt{?0=v+I4`qHY&=o7nAx-9FN7O1Epf&F(h8+s1A` z>Go{5*UNgAT~#)%Y;M_S%eHoJ?!K)1ecd1IzOnn(?msUtEiW%Wp?pwzUHR9_|EtH% zJ?`%DP>&zjnke%s@P9{YOyp(3j2T2WC^RWYFAZ53x!R9B3sIKSe3 z6_;0BRq@e^Ybs_`G*;YDF~8!o6<@6QTE#zB++5L8v8dwiiWL<cIHCH45ht8;!o(A%oiP7|yG~fudwlP!dVjL_ zr+a^)_rl(H^?tDT#@>(j-dlB5)uO8HRnJyEcjBNEPe1X4C(b;v`NSJf{M3ot`<&e8 z)ILM{4C^z#&sBY9_xXIEoBJ&5b6=ka`)us9wa*Xx{G`v%`|RxVY@g@)?CtY<-=J@4 z-}1gE^zGMoVBfd(J)>`R-}!wX?Khy`w0<-DeYW3s``y}aVZXcjE$eq*zX$tm?6dcSKgQn$VR&0ycOe=c%0TcpWFq&I;-% z#Xy5!#UB*P4uQ*t)#0YO_imY#hIZWBV71ZdHja*_r)VYe_WNsuOz;(9?8EK zg;=pifXBbq=RC+_3Y!UFawYGnoW*z@c8^gsk5Y-A%DYzzpZ_{GgDrnbdMs7Cf#fwb z90HajI2C#VCtqI4UtUvjUuW2SESiV=6JXvk6{aX{?2}2llyTLk$n5hA*P- zM^eKhso{}nS=&)dPzM5aAW#PabzqwqZKy}6^KmV*xLt}$oyG5{)w;GT^8k25h28uI zR7cL|@tn_dApQ%^%k!^1 zx6-N?@m@kX)yi^`vwgj_YZD!}{=@M-cJlVkm{WTR(cY(6_8%Jw(q76RiciP&cI@a{ zT+#!%jtv#g&~Ay^D^dHtYM;blCeLj=ck|rCvxJ8|-vf3t4OZ~5lU=~6GQl%E&+>4# zPr%M^!5?`3nB5b;lV>Q;Sv=42yhaaO!c)q_>0HrBo(p*{=DCz-BF|MkQ+OJAnt8s& z^A(=2@qB|vy3Wz{!JYM3?RBTJL(xW}CD|9OZ%g|^)l^=4>PFx2Zu*9I(>J_3x*|A( z{^8vbC!QTpz|EfFFpn~6I*9FgKw*-55Ud!GY?9Z+&)T*o}L>mgv z%&rTE5mwDJBD)d&Z)Z3@yE&}mIiKg^?1SON?9<@~vp_H{os)e$dN=V&f@%uI>x-ZE-)q(cbzFimhx6-V= zPfo|_NOMW$l8c|Fa@tecdlzWfg*^d1N6!v0>lhDm^mudxsTf`nUqhEX-b-jPA#j~f zSqIP)xU`CTtAb0VYb$0!sS5Egupb+_;~?erv9=ssbp&IIt87f6QWfcCMWs5iGyX2* z<%rX|j4#E5R~T(N94SP%5w_Imb_(m$NUkzh^Jb!_+Rd{n*vwW9;7g zadzqa8}{$`Om-!wMy}(`$c^z=*)!>z+3oD((l2-iv9`Nd?5DvgVuzVW7oa^sKIf3n z4)XbhLHjB@aeOnovl9pr@dqj%^C#~?vneO-o>(VgYQIyRe5tc8b<(BIxzs6_XiRp( zrOvnHbjyIBBniEU=d$dM!^HUTXcWad$MGiNshlphKnAN3knUJDt^>$Du9!5bVwYTbUi#^Wpd&Ce0GgRbl_8p6scj zvpuwLtIqY%sUAAhLnnH?&ckUQI?F>Rc_f_Up;J6`h6g)E4Q8LHF*?12ouWo+7hmn+ zn{a9eyZCCasIp{Yc6Y*Q9SLW3B%IWda88F#=}0)EBl%uX$?mTG!Qu+AxPpB-2eXe9 zBX}?wNX}K{T1Ds(LWfY7It_t+qJcYv&>`BLiqLZiJxBY>LB*%oN5Pq0h+T$zFtN*g zUX{cyBer-%F%#lcVH=A7VEhMr{}?}ERfS)b!R?Qa;8u}Sf8Z*#me5+@R%%}w?MlO5 z$l3{6`yjImvi3mM4#?X7Si2v4Y7Nz%x8%TXHTa2I?02l)jy<*ZLzVteML1mzgsXE@ z=?#>jKv5m-2FjB_*`qym$$2Pv73RF3ocCLf?4e6;D!EEHl-w%8c`!SqX}?r{pXkCRw(2julT+SiR5bXn~T>w4&GSaXIPeC1V zo;K-3`8x6zO>0RvQ2UH&mod^+K?S9=ng^4rPI#iQ#-07xQt8;{7RKyY1dnMSBAH`4 zDOJb(f4qF#)9_$EX(`4Ol*N@urOUU$L$M!Q3jhC;oA_tQVewCKZLlwv)t)m`$yXdl zHTnM!MUQPsi~ErFbUm<7^sL4N!3*Et`+0T<8o~Fc%IuyjCxB-61^u$pAaUb+d@gol zMt2K%PBs8?@76dwyNfsH?wNZx*f3KkpQAuyAiZ&w-G9YiN$k#syFaj%C;Ok8$(hbz zaw2~6sRAaDbGNV&CT~Nk_QkBitP+j~!0O5agdLlpGQ&wU)Sh#c1zYYawC6mJ*uof< z8Bu6d#qLW%(8b)f>@D~tdrZ9@{Uiu#?T(}Ag%mdKT@ISH55f+1Dg6Pj ziw+oiYy*!EEVY{SV%K-yiY{Q^u|PXcD#%lz%EII^Am^vhJ^5Sya={fRk%PF&u9S{0 zrg^#cD(hdf<5}8%EvSvrtBt#@Q<(N`>sjP}BYESEl!tF5tUN)_%v+D4EypYHkXq?r zyJuv7=iMi>*Xk~llT`-wWY^!wPwp%`R_AZ?aZ+6}>aFaS*UwTF873F{JLy2c1Pjc& zi{i2`-@&fljEyV!cHAS^PTHnm-)ZmlA>xYX&23Uj-?7q5{TDr^IjwI{x$RaNUH|nK zTG&8J)`zmYlBTKMJKwI)cKH+sA4``>3H7`E*&C3{-1;6b*^rh?{WcN>KUZJuIi9~= zDwT~=^$!M7UwLXM(5~z&-r`_=*t?MRqPS7Pr4p=4Nfj@@ywuOdPc4Jtp|=991Lv3K5`Qp|;)D6TiU3d;`a3;Hp3r%Wfa=Ben)L6A1H3qHu#L0OjXIX*wf3(sYr zbBUEIrDH*Mp6(VZ{9T-a+Q17}_K%&mJl3OFe#L3b>xhi#sWYW>@BY?vH&gdhJ?wm+ zc0`%Ji4r+2-fQw!gR(QCut)aY!O13xI%ubFqH;J?)cML)$k`y8|1l(UQ^zil}=;e0hL$gmXqh6Wa;cm+6Z*%XWeif2$p&ev;+`LW_ zFJ)f`{*Qsd`5V-Sv~F}vYD)e)*x_~{y}x8q8S7LP=5zq8?XFx4XB1Es479p+CTCH= z1}7AoyGwz{F7X*Dn7>*|Fz;4aVqsk7j%_DF1h^A)p<8dqx7kLp$T z-0ZVZN;X|p*@Z6DZ8VZ9zMw||-HOBVE>AV@aVRPBY2SRd|6`?jxv>7**YMHN-{mJ+*6}57 zKBm{nv>clurX_Kb4S845ZaC+KC+*iih@=PzP5HV~6d=Ccd2Hl1S+y(sGmA@WH(lZ+ zGnx4$u4H9@Bmpy>rN@@p&o1=%SRKgVEZH(oNQ(VGqiiqQus~^q$AMCRU%!*rEz{{Mvs?jytAwP z*~gK=lZd&u;NAxon(=>;dg{w zNM5-cdPz$`t~kmeWlU?KRiv|e1b9fNV6D{ZS=?$tPCwx<9BgI5bVhEwz+Iuz6&BzN zEwT%F@ns8p+JpC@eU_mY_cI!3MvN1}NVm`b&!&WjeK~qMTn&dqs0RUY>12ZaIH>)` z)q~T0PdD<{j1K8yVKpiRb>rmZ1vN$>VysgGjxF-LEDm)`ajMNaxG zF6p;!e%bU~e304&m*cO1QH1(AH*@9r6}M(Yi)ZxczwA;>7u$O)IlXNwn4)ojDxnbu6!3`g3n|( zKz&AUr0P%j6V%iW+JpL6jZaDA5TVx}Og`@*jMis8Z>2PNF3kqn?P8kAY=d&k-RshP z3gUEV1(Wud>n9|gxD+GL33yymD9c70!CHvnxYfgPM^nTH5Ltm-qYfgl;gpv<4Bv4*8yhWM`^CuGl-bM0OB5~ zG6ULlLvB|Sv;(UcA>Rj!@7!6q!24Bz)f-k zO&)$@eu@%3ZS8N5ygD`#ulq{V;jlE{>TcoC(d}JZ0e`_Vtdl(@T6p+Zn*Xd zzSh62c(@OEk>)L&fz^vh5$#`J&!ye!t*a}up{#}_$KSzma2;5g518&27T}@&OYPA0 z9K5aFcsWBn`%VB>(1bjMUD|5Pi|Xf)>xvu?#QoNTFgwIWOOpAL%z|sMpT{!VP!8rA z8I?UlOpOxDm;sWh`C-+V#w)owa%{SsHYdB*#W+6;kUM_6QgL1cJuD(aNT?dC)Fdjchn>psF2gr54 zd7A0g$+Y39B8UfSCv`CYh<^YmMeBwer++ z9saqSR#q^-gXmQyU6WWl*oTyN2B9AU}26{ zBL8i$O-WLxN|YP>q@Hba$@{mrwWU}g{6c&Clt6hC)KN!x9krje9kgYnSRtQulCMd; zPQugyWy8jx@JN(yw{cJ5` z&kxWFo}i@LkxzULV-&41Xa3d*PGi>H7Q$C};%MCYC%dQ@R_TcEz@qckSsbF7_dm%6 zwi@%(lSuwE(zhGTd7A_hCE42m*G}lKeoOQGnx)tJG~MYtwQH9QjXX8qRK}^??(I#& zGy|<#(|BCIhjY~!HiN)uNS+f!>B1UkhE}U^hJZ2aalnspTqNk8yad z%B(b|3z+5LhLd~5V~&pWon6HtPTS}#uKbS^r>Op^P3rq#W1Isa_eO=$`)l4q;~jM9 z&Y`xtStq1J%i+VBL9kvI8QCNZl#XFv1Zw4F= zwS3}+Vvab}l%2&p&ZW2237x?{41awuuzxa?=D6Xk`S4?LX=Q)<{!)Lqq%(5qTRF>~K5Zc#3%7ky(bx5-(ZsYzpu0uy0$TI+i8WI>Y`}2w|%0{%iTWi;rJAc%ZliCIC;EraZM(`v-DLO>34P&w?OOX zQr=D9N-BGyyR+<$zdvoO@C*5I14wC$z6c*Vpf`eU`5yHs+p<=>bk96~p7I3)u@;BcBxGjZsIPZ@0%YSF||0C{od3GH80PxCf1>^xD9AXgrBj#ha zr!YO1ty*OsHunuStNp{H1y5^cf6KXB_!FB|gjy@6b($OfD%X6b|5t2ootur2=s$|| z_WzAV)SobD;CzWOJzV8-8YkCYo{TLs~oaq&SH`Jmh|7Py?-pDmohYkFt-NO>?z5Y465nGF^S8G4xI^ z{*x-Y_;&qd_GfQ+Yb~5r)gSI}+Kc*lBzspedf6rJrY2Toe@KiUG7fr6@cHcbS!dpZ z7F$L5Q-uDMuqBq(mod9QcX4iV<^6s5snql^0^Y`Rred_aivNjh7fk=+{*WmQQJ<3= z?;luxNi){N)t8v|*SU9_=kYV(U9AC;^fB%}FrMx37?}HisBKVhB;iZ?&%wT3o*Yau zTBJK4zO3kN*A+_2=izJCo;aGj&-n{W626tcp-OpcrmA?|o3cI1OZz???6NlB!OTn^ zdoY(|C>Z0Xc|vW?^qZOb<=;*=wCy{6-Q;9XKK^0a-iCy8f2p=jXqtMC58sX~>|?v` z^rY`ed9!VrLwA$M|DG$)Z^bz0{bef-`%}1R8T#w6BR=eKmc(&Uim6=GtZVhYUvqwG z3__1nDf5)f!|Ke|F%J3tsX8n_>+p`%)iL~za(BAHp~!9ht!Qnn9eqtUNEYwuPD%eZkR2MJ>x=xa%^%E+DQ8;$)q_!UA3~m2Zf$!C;#;5PAm!zJ-rt9x%4oJH zv9t=IV`-e%SzTs_Yo1h8uJ;rqceSW}x}BCZ6-3BH+m9lZ0oom)?fxX%MX`)0z0BtO7t_gs zf8gsci-NnDW?AIb&LQ3N@UEf}HT^`FgC%!;iHnuaJ|09~kAb?>gU`8=b{t4|>*(@1 zbyOGH-?J+tkn#i5fqKn-%kPZB;ywr6V%r!;Ht%O)8nYoO*~-vSmo?O9iaU%?gN@2<3L?R$9j5f?xm?apc! zym%^>KGdxL`fKk2V8N+eo}wK|X-OYZ_`p;)7^#tRO6pGEDOaWLj^1z&RL9JJQJYP9 z-RzD_pjk$@BTYVox6{+h-(4EPr&l4Z5~$oa4Jdd=pS?@6e$|!tO`$&>uX-p5{S#XM zj7Kr?|4ffR)1#OIZC!^VW7?)U9_~Nm(T1u$?Y~LQD?ZJf>kGKp4P5(G)3a-bf9*s1 z0--OUk-nP!HESw%Gsl0(-!9rf>(r^gBarXf_2d9wfbEZm+#I0&8}SOeD*cApbb!7l{o-KjVEN-3%(WXx{#|y|e5PF|-AZ(a2bx0;qa5|q9-Wx_ z3qxzk3-&Fiw|0AEw=d%%`>0eYT$Qi$t8FOhloqX2nr)g#=jjg;QpNsXTNMX5W$?%j z|Llbq-F|p(SMj}C2W0UUx*UnQAN|6m46=*CL@OBiTIj+L%T&50w$GomP@VU%k!K~3 z%_NyQ5EoylSu z$?B+_$Vcs5U{|^;nXi9+qbbnV_5ZEoOGUO3-A-iLFIms_5-sN$`5x$Uxpo!<9@Opx zTGJs;XQx)4XXUnZ=`L(?i*xPod3}4*JTS6kA722$6-*xQ41)K!FYTSh0f&u@HMKAJ zlk5$r`8hqD4aU6@Zr`Ib12DB?+-kX&lJKa4=fBrk;q1TSOE)R~% zF^JKz+?33sT|K3CY2~Pt40W;?x7u$ig(aEY{+RhTdkpY8!Yn#$<+R{ETJr~v#{SPIsIC>6-x)(#f3A8j&+T9EGtAAR<%5fqf`7u%~XG#_LAD^*GqfXtEHwDTWzVZJr&rkpDD9*n=R_GGQ>fKQEv1lZO%$zcv3g} zZ6v0XQM7XrS6YIj#vwNrJnEc;Re>I){M6!|pW3eX(RT-ZQ9t@IoiaR*m#>o!AUKVq zgMc@&SI6T8AxxY3CFU!vpJ%^jYU-JSF$nU_;=EkcD&+P5<#o*3T@m$6I-`xMrz61T z7bK0jwVIW^&5>h0X+fN}factv80gPPw0@Y9+KMZQQ6Q~S0BB8;f$c-^C2zG#g^LSb z2F?I9N5%zk184uCQ@u_*Wp`&_={)ydh5ky_(M9V0aFAvI;U*qV$8u{6k-WA$EPl+_ zX-zUvG@oMl5#NnT^qpA$&N5HaHh;!%#O`2TO1`@-zU>O67Rs#SYfA4qSeQum&{O1d zWsl_4U!xJ8e3-NO)CH2wNi^jP_67d<=o_iVHNwWe$T_#Ox6RqyDtm{QgR7i$Sv|aN z_!~rprr)7`IAz1n`&&%&k#FIp9y0q+I=LqML!K=POWS)J*G6Whwln{9Gh;WIH(N@L zvt_@tFjun=WOvtvjKO6tFjKaL#4Pjs!7TK=B$x~R>fkh+N_HsGSlVHs zhkACjm9|dqJiUT3E-tM^Yc~z9K^Cau>utqObBzh2>E#-|-L~lV$N45)Pp)e3YUM-t zPCCZ&ZO5G*glD;JiXqSBLSNYUppi(8;nzb9}re&EwG267TH@a{(>%@8o ztI6D43E0_r>ZUVW|0vF77nmLFIjZ?s?Fy@r0dpSa);x>tHfbv^pC4wX`>PBaaW!*fvIv>_ z8Y%O#$jx_SQgZd@(tKZ+3=}1ht)?a7e<)WaI*{OKJ=}j_O7E^B2hKsZcnNu;c>>RVcZLw``^aRJxIejtP2fu3v{hy#X(QrTEj~ofK=TM_GJ7-iD|1B`?eVCv;iJ7rbrY z{w#Qv!9`p6UcAHeRz9xTvOh;N?k!4?Zi(8BQBq?;VXqy=i`!3|^yYNy-P>!q4uUiS zI~}V{(&!`GrK{eu@YZXA{!!pR0p>q0D69BU`x$c{9M6_ukisza1y7u-ld@#fiohk{ zyPIbZ6zHx}ISNn@CZ*fJK2A>XC>}2r(WFTF`w*~`P3I%}lt>hvtF}X{;0w${EeC`EdMb@I3NO;*KiI0(kLQYQe7WOv!Bj;2; zYHX*m)fmF;k4B4wpOsxBG%h!e5>D1?hiJrT>t_|H5|%OEI?>`vw)rv>TeA{MmBU2| zj>qLBZTp-%^KT#XNPLV&D!nfE?MWjvcgfd6Bt=s{>$BZR#=?~Yk5Me;JV_v^rjb3D zeC_c&X&L{KA2HUseDTr9$S(PqU6Ro2{dyx!I=H;7bK{LdGmY!~QkT;P((i-P{0IOry+7LZ5g zSlUurwav3L|F-dtg*#8dH%D$cu02F_3VEO~iQ`^s(aTV^0bRz)k`KNoaK8Ajl%Hn5 zba@^Z53SUUR{rXQr;Xbb%jQa@OLf|#7l*))9uwo({rUb&J%fWw-(&xbq-_-_;#Rk6 zCT(v!QRPz(kan!c=TD_OiYxS4Q!I7ELpV)iRSaR+(hO}iKov7(d zm#g+?(5d!1?GtSd)4ouWi}Z)VK-TQ^7O)`}xpM9)cKTFw&6h~A8+}e^p{h^T+8~|d z31(cqxb-D)we>R_=?lDs!jJEW7RO1vJG;AlqJn)}D7<3iBfkb!F01>K{>t?QsYl`4VL~3_n|9PMjCln1lm>-K+xxkbymN7^4h$10V56vf z`E!w?%S@mC&i3!_hFcq;g1AIqGVFT^Z}FLSlFrveF7cb);>w$^eP4dl?+!K>jND-k z7&FH+fAZ3%dW7Cq`_!s51Ift)&SKCKTw8QHh9sO$V)ohtc}ROeSD?0Y^B34O2dorM zmpCTH2ZE$U%DcQ%x7rNt4(-`mPrlU=9Zb_%0IdsmVYa(?zIIX@Z)t66&-NWG2TPJb zRPdqLj_N`NKf!qaPB43dwK;cUZs*(70wn!H#_4=F#f6Wpny^tiaTXvwb#nR>*)JpQ zeHi0cQb7OyX#c&*;dE?+?F_LUHV$8x{Q_@p5FSFQ_}Zn|BwdjO1$_=>_i-)kMWtyY%~KE^ zzU`0t4nvOA)0e=_PZjlocGk06v@Y@8Gx?Ru#$Tz-R@e*HH}B@lLjf)FIEhllAxhC% z?0h=eiqjQ`wRg3Nop1TCy0~q^i!xA{eW}%72lh?8C^+XR?yYPkhGM7ECKvArE%yI0 z`MEZrH<$6t^JcGtC)Jzl@v~VLV`qVjFev^TIWy zJ{Kn!JLjVs?<95_=WyN*u9^Rb>!gq(2de!8g%#%U#@OLstN%RD6pU{`p(AY5xVf+* z-RzCQ`|zRUu19uw3S0FQ^zu-P2y<63;HJWjc`iKODJe-hcDmAZR^{w=0zll)}e+uAH3$g#*x6F$;GdN;O!`csdQ26DuqWef95$PFz${ z4=t}-J7^v2zqQ4hn?dfdH|rGTV;Z252)v}Z-#u=%sc{gqs(xM-jv>_c>(=}lw;M_1 z^gO~lYmOI6+e5^v-pSJz!Pv?~PtXI=s3e40x43Pk$^b-1>Q+RqI`%Xbt?&M3HzV+(M zgzg=DQPO*h&B5UxoTO0pJZ^W1cEwcDmoEJD|AhZf-nR(%M}-2}1A-Vz>Avh~Es@QP zD^QoOk)qWRE~Fz9{F$4zFV;$XDDbyaR)cRGmV+;s-TKDn=ZiXmSmdW~=Xv;6Hn7;C zvVn`%?>UKJ>zNIzzTf$EDh5Xs(M)<<9zBBgSA^NY9chc~cwE)7??G~PrSPWjS<)o! zN|**5vv*qvxV2I-y8Hw)%WZ#l_SY7q}1scrcKK`UN{^|zJJE)P^eT8=R{GA-c#S(7_AkAyx~^T)l1+v{$^{SIZvAGbVC^ck!tM{`qu!(0vR zP^MOA>Fcv*kfaCeUtyccIexhP8K=Xety|A$oNZs%eCoUg-CpNAJOD=!TbvH}w$T&@Cs>MZ}`USB!DZkAj-C+d$Lt@P9% zvXVnKPR-Ftt5I`fNPNY4`Wwq>g_`Lrx}oP0mq9tPVrVz(kks>y0Mbxk?bMnh(GKV~ zm!PlDMoXkBc)R`SBwh7Yq65uF^(pP=Nb1$-pc!uM5*YALksrOex|H9a@cOe(cTnPs zci&9%>CZfV&?>VCuC=BumpXhC=)NY~kZ*4)nfd22!l5ygk5$kI7xq;7KI`~tCY|E> z|JeHu@T{tA?OjfK?;)KuNaaf>gg^*2BoIRAJ#-X70eeGc#4`3W>WrfZwy~mP$1d1F zbQ~4LI(AX94tDw9^`7%30b$1Ly>svV@54FI+28q2KYOqBzH6_&_CEisY&!VvVL$bR z?IesTz0|}r=JqXi;}U5(Kp*A17_Ob?Sy8CT&^kTfi*g6F#~UAs+)7@?oy2=5qa;cH zO&K3aEHZ9^?u*}4QrczM3eTua%`rW;AFtwyAd%A z@{LjH_bpzbP}z$;(#u+G@1y^_t_VGh9$@VqTP zbO1S^0vobX-nN*al|Z^b+?jd&7SQ^pCg48$J(+;rPMWCd2}VFPgSM1%7sDb`xm0qTu_e6=f_m;REzx^(IX&?LZ z2z|tVekK3)I-hCZ75~}p_Pzh@d+fjaKaoLtf=cUyys@;^ODmbYb%1PfflTBp=bWjuOug< zu8%X_cA5W$+V5u)c~rd9H&`%|4Ojqc?j#;+Zw;+j*z4CN{{ga%@7}p#zbo`ccDvHv z2l>%s@2&E0Z^_yF-_MW!Z`wk+IN-gy+f@fV=s&pQ0C%KB9@PGyWhP|O&mxdb{QDO1 ziJfiM;BAinh|}B{Ksle0G{DifRG^?KQcu=Bt?!IeqznoIkpDVw-F2nTO`fi}C?d$? z`QGsLQ@OTWgW5!-!9V^NUfbp0gH3`*?idzKv4>uAT%l`p0l5w0w! z{}I?my}&cjuEI4i;W>CTR;6c5XU}EIch?AhZm${ESSYCyIs8w1Vav5;lDo;%;An{| zcGtO`dqp!`EpuaWsa;)1;TX|w(O_5SBIsomd%zn99&3JHhsDfm%KPyP5;&Gy z|9zw69RGylzLNDlPr91hxt&|F{k}a=7wRe$z{Rns6pI1D7ukz?T zR_s7e7MLUc`*$92fRzKuxIA}fjvwIM18nYk4)*~6)5|}1pZ~oNaDn}7hVDy`ZI|i% zIVB^a$yU)HMnUg&qW>t-FaP>p2gn~hiHzFjO>X{5DqMwMw%M-V^Y_0UPbqD!f|K3Km0R8VyB|UQ zr*}KbzvZ)+X0=@q{PP z*XG@e%**>w#$>;TJp0_kyVYJl{t^HV${j>L@r5w1iyV7Q)+K5Fqi~Gq-~lK98T{qb zb{z`+5j>OLQ2!w=le2h#Im>@s=4xt>L=e*nt~k-FuN8 z1S7tOkMTb?nW!OBmpJ^EBSygATZ)rq6j8A<`lCLR0TdIP+vOjLNOs5iccabZIR8<< z=&mj{N~ycH&;I#E-U*ZR!lQn}%OcSj-AdsX-Ru`0)K#_zKH=Z`+>G;vOkk`bks8(= zT`SdrBuBfWlmFgbdg=O5eo3BaU5ODw^YKmj-l{+qsv=d4Se;VUN0q@| zs!)}P-lVPKoXd_#!mZ;;^*`JQmU>6Mr#?_S)ko@MwM%`bzEEGO z-Rc|lo%%ujq?I<>(SbTxhw5-0rDJrQPSQPes!r4CIzwmbo;pY8>0Y`>m*_saM%U^( zU9Sh~L3*$rs)y?)-K{r|Ptnu#0=-Bdst?nb>l^ha`ZN8x-mSmU-x+HH zOsEMru_oU1FsY`{lo+3>Fjc0;)S5a|Zw8t{W{4SPMwpSN#f&y%%vdwtOf*x>3^U8j zHgnB*1o+G*smW@JnyRL$ z>FOADoZ6u7R}ZKM)kErG^@w^@J*GCQO}O3@>PhvKdRlE(ThudZt9n*Fr~ay*S1+g+ z)k|ud+OA$!uc+758|v@sZS}5tUwx=PQJ<>M)tBlY>TC6_`d*;aOg2-^G&9q5m^o&iSzs2KL(O4k zsX4+dH%FSI&9UZqbD}u~a(9OLojKc_YtAd9$E7z|rYM%2j5qS!b>> zx0u^-%)FoFkN*vNftxDT05uS3(%gw1`_D5s$8Oq-i}pr}9pIpki2!~rF9fF)gH=kw zD?U9FIpT2zbT$B5TLTRp3L~PIp)}b z^Hp;7D>A@e&GY7OV1XBHHqpP_F0qH(i*SCGdBi+wHkl{Plja$-6sJL-Vou)aKesTMZ8BXZza$;E@qvk{NcUonsHPE9`Oh z1iR9%vcI*f?ddM7;BNWmar3m`NZrppV{8F&^Fj1c9_RW zW9>LQ!A`PM>@?e97uZGiP zZewh$jkoExr_BTN^|58-y;@sm>+L{0*v`UL53x(_5q6n9(jH}xvB%pJ?Me1jdzwAN z{?1-(FTq_ZaW!SNHP%|k2G~FwWJ7GI4YLt8(ni^68)p-2qD`@>Hq++dUcGDqc(%k= z*gFlR zer~_8U)rziKkRPjJm-Ap0_Q^KIp?p=^UmL#7n~QJmz-_R2g;~$SWA~Hh4Y}5up?en zarQ^YsAO0Tu_^-=Lbl4s`>Q&;Ij1=1s>7U% zoQu>6&L5mB)QQeIXPsK*T<6@Regn(nA$5kc*?C5t?Y!x{ug-IJIy=>+xN8XPpJ#E` zH|*Og+{tlzs~D$`Q>~JmI;T-(I_=IR)yp~7S*c2#JDd%w%Gu~V30v2|x*dvH!)6(V zf5S0b*e)YbCvU<#PJ|US4da$f$D9mn=olP-9A*br z(FW8QAI0pzB6nUi|KQuUt)G(IsF6a*O(nxP~Rd4zQ-I0OX^3Y zdoTwAPqhkyRb`O|=l~TA>naFohz>y-ro)iJ(n1=oqg4p(tyrY-8g)(BU5QAOb+QVB z{gr|=LuVk((pgBebv9%&SLY(l*ZD|$>)uFb@!lc3VHB{dIq&4Z1)4?((EFGjjVFTuGt>Kj#n z*o4RdScQ16^?E(lZ_~G7eUILwLSZ8!wg;T!sBo}On2LnG2p)&c7>6{?q^V@F9g)I% zR3TzNBCR&nDi{paS4F^%?5E;jOZG=PzzjgzU>cA%nnt99&0rkUWSW!%`?6UD!p0nh zwAHlY?ro+Gd)rMr(g|h)t_-^q_nK;^;+Sb>8m=(Y%*3`Q*d1fAtJk%VD^~20z zNSB(Wc#p&ioEn zINO|!=c&-aSZI4T=1BNsa$si+ByKgR1{^yC za}}{5jaZOQEXW`VWK#3XsOMSK@SfCUOHFpD$Ttt%G{$fSmsQA@L^rCHR{ENYZPjS8Sf#ZaSSs8KQ0qB7WE zGgUlw$)PSe)Fp?y6aY4SQ5C~xeF=KCO>cwNZP(jXC9KySz>!z6^kgy1gR_&VnUEc zn`r1jib+uc)WaB9xS1*eR&AE*1V1=O9nru{)crbemgrs;buSC`zy(-e zWELS6JELCjObn#{1GRs0_s={>V{|FNYS(mYFZXGEsL6#MNP}1rUk%q|2=g0 zQgbO%(YkbMT~BIVnz;%#eGDx3b*hlMmqFbNfLG%-c$5qnE*Gyj`pVOO2-@+US-_tut-@_aTAJhj(cVZ5rlw0_t zKF0bk%)#(WeTMW4%)#(aeT8&4=3w}#zQNOehdC7fsvnU4ggF#`D_}MR#vp}j1-ulf z1Ca*nV5Ffs6e(t;Q92476{BO2#_2c}i8^VLih_>|J>lTzN=2Hc(_ql1>vXJV>P)1C zx=2z~CjycnuiM@X`f5iIb=5px9)#hsG#G&vPm5{6WFN`hn@}e zbUh#>juO{gXR4`|!s8xuNsTJ9l%X5>MdH3cr25*}Zof-neVdz|O3uGjqYV9vw3^hQL}lrVciZ364`tmSZ(EPj_Aeqw1w1Pk zrMvee$NLvK@Bhv;2DVWmG<6(a$ta7Oivx>BVOt_TblRu6iN6X3h* zKDncgiKNK2MOsC=w1=#qO^ zp8ePGOQHV>#LMl26H zNzNLL@@mFDA4;zbv%&M1qXa83JGf6J@U{wbAmq9l=u?9^7`fCJ%v*~&6cXJJIJp>e z5PYUL;|jN+<;J4z<_@HHqU|OGZ7w~*J~=uEX`aqQ+DrFBTBM7>Qzg0tX&>DOX_+oV zEwDmYAg$84uddNGV5?ePi?mMHA+6W-sPPQc1Cb8WgOCo^gK?LkdMMK2dN|T1-GsDR zHzOUTQMZQI6SZoz=1jpArs-)oYk^*XEsOLbq=)K5k$$34bA^9)H`4DkI2tWH7WIPw z6QC?wdP2cU;U*kB6>DO_T=6CzX^pAD-da-&KCLr#Nb5~K(t&0m(m`er(lKTXju~sl zBAsDo;F@#IT&yoM%aE=xE07*#j>46XF~=Z1&K!rcPB14RJue5ZNnlO z-9-KDhq_B0SfCwSnmhTb9{)7;UqN>K(>T^-0#K6)gw{_75}-a0>2YgS5jbpbBosb& zrzS{m8#pwEi*UBf+NdQ%DvSJw?eiOj|6T09&rba9LS>O<{~Xu(=6j#fh9_`mHxJys z?!D`Q`dzbzw7awa3gV5CI;1;GT(I!G%wfQ;FxP)Q8oxl@4Lv6?oz^#ij~&}%okX4; z4NJEBBogRKid&+3%rI2`GhPyZQmRu5W!vc+(}tog4j=g2XBo#>Kz z_b9(K`lZnS1Y((YpG3mkClxECOM+$Hl_rsL11zfX^0pR|81C5)8QALHx$By8Rwm9U z#1#Ty+lOL~z_u{Fvv`Gq@z3uSiUU$b17XA~6bFQ?gI4#)Z18sV&|EpgAk|_Qi9Ih<4pY}=8i{qW z;Kd%B4XqGOXl8v%aJHCs5LRHrh_xo%rfAJ5)HP%huX!0tvm8>@Mz-^};8&w z!=1ZoG0MBQvqD2!yGM1smn((-Cy*$M?vqHETtm+HpX2`(X_}1tO@?ksEl~7r zI&wu~l*A(>HCDku(YCHh&WZ-Y=HdARkyBzHhH!SkB(Y!(!B>qp%E2DDU11LDv*C!v zI1zb&66OfRWSk6MIt6o>`XlB*#An>DQW2x^7kH)b(08bG#A@7$2#mY*T`ChX8+WTL z#BJQ8dLky{UX_j3;TPab6rXq$ed5vdiO0|<9*dZcm(hwPp7D74#1rTfPoz&gi9YdY z`oxnF?eR8z<>DDnqGvo=zlYe56f($7u0 z;e)@HU75y$n}n+*{!A9B3pL9QTtne{fn0B8x^Lnh*Toh4?sxyEf@%G;e9C5Z*ST zb16c}`Ilnkzkks<5>Xdi4Bl&hi|AP(-ZluO?O(+1sODK^ELmKpbCTozi=6jAHTmrU z_qP$aUq|b{2P{s(@qxeM!G-|aq^>WxIUK2sZ6lVKAfA8nT0i2WDr-{J9#_{e*+ z&MG^kRKt0Ml%2?_TWYdN>^pao5^`B6+S}rmhxe!Rr=fE#6Ve|7IdLT=AJ-OX60G1l;`XIOl7#PTv_(ZBu_2p$vJYI{~CUo_sg^Y8h$DCKY?6BB3sG#t3`LY)D%x_=O*&fMGfal+!S>7)wr8dyau0D161|7EC20eU zWQ$)oN?Pg?v%FWR$C}t29atifzb;dHJG=b|^SRS(SQTOm4)Xpt^4H}OSsjAKt*KPO z3aUn3Ot4&XFtF1PELKu~@IpUm%y3vnZcSKflj+c+4EV*Qwa3pgaggG8>cU*PLFW|N zxh8xz1eV);E`p@4-H?SN>R79EYpmT)z^ZVdd)(gJfBw&J*~@Qj=bP_+oWvQpvupoJ z6wp-f-U+Y^yXO9QZ+DiyBQiJhy`{z~vpjRQHw(Xtr#qo@8HAkcz9{mmaIDmg_Ffv1 zyWJP}3rb>@_Sk1h_qGfsiul{g#52F|BDF7fL8~^_EAZBJol95ylGI7FI+rS}RiQ*> znTmJY-x34-sKMLzMQQsNoQA8&St+#9<-dQDT_m zk56LbSg@Q}C;_OKOhlbT>Hy;5oPys;OcOnBly)A`$Nos&N!l((sY8(tfd=}gRFq{e z`V!MAscxzH_byV001>5xq@<*Lro&^R7($ui=+O{}YU%fWG6+c(gH0H`5Vsa*{a-2ruy+A!e0Xg*K11W-U-%;xfV!RecT6 z`xbKx&|Bg%0&(@bAoaPZbBkqJ1T?CJga~RB;~D$o2=R55;Ejer`XmA}0vIqHxGvtH zC}7@5NT*m7dGyz$<9)_LizLP|1M)NuXe}|0nUK8+z#fTfl$x#7Z3WM=AV1Sk0utAl zi>St9aE!z?xxTSLMtKx6%A=HCu|P&Qg)_P-g3(P;jBZL~jAJ@uoMIT`6vG&&1jc~$ zWTaC9BS8uo?-b5>kU~a1g{wC)7c%xK9Fb3N;~gaqGJ>&B5sZC`U{pw?lGvw6#y&+c z_9=?7Pf?70iel_j6l0&F8T%B?*r#a5K1CzaF#`3r7#*XE7zdT7vvoGMNEBnb&e!=! zC5kbf@f|t3SQmrcOLZwypY|b@SjJ4oGG;QCF;hz{V?JXU^BK#S&q%6xdI|#>PnAG_ zVF{zEa_KcJVQf_{eTOBCu*zl3Vm{-n@)%(i&j_n{Mp(tuvlz%Ys{}@!l+g-_pcRrt zD z_onn`GpZ^QeP+rLk0dcKg^aKYXM|OZk;s=qGt>-)^h^9pA)~FrjYPqenkLhP?aihc zF^HqgD5Mha7{i#W7|-Gn?Q$4-mB+}dNJd^oGwLzj%rdiZ%?{In>qyj0DPyt18H*Le z2%17hWQ8-1rjT)2;f%|QVq8`fS+wsmWpV;Fd66E0?i0g^bz? zXVg{{qqbrgwH3pttr$ja#n9s$$k?p}#%>j$=fx$+C9&QL7{L|E2(DPh>=ZJND}vFJ z`LykFi5+Rg4$CMWH?k{=UgSW=cO?)<9N@@A;6?zjKx(AX;3|o=6pwls^ho-)$ef5h z(a?7Bs3!s$Vu9-74@sgwBn52J3w1VWvknFxR)Y1!#~w~UNiyr>nkZw4GL|Ug&;uU< zyK@#aQ#|mA^uWi_10O>Vd@MciG4#O4(gUAB4}3g*?{W0KC(!pE??sMDt9LM4y@QD? zhR9-xES8uO;6;luPE2EhwQjXVDq3x*)rMMasMUsA9jJ?R5n8K7x81h#U~0JAVjfIA zcm4UX^x>qk6+76A@{+b}SG(L+>|jO&J8ZLdqkXLzYzBiL#+WfUQl!~!rw*n}TS~3l zS{+Oob=$1n$XvJOI+(I(8HcOcS{+OYbK9(gDQ9lWbugvPZNCnt%vs8lqqKPh{qBT0 z3^^nNHhu$;-9c(lngd`B2%oxroh*(M>s-ouAdXQuDga9Z`6(L`F$n89+|tN27-=qK zB?K(xqh(YBTSFME6w)HCgoTY^!7M7(CwueMV)IzqZD5G)s7vD*_;rJ(h z^b(vUwKlet;96p-xN%2vXgS`=$E5+kS+FsshCC4Gbzfwkf06o0Afyvq4p~RN3(Fu} zN&e^H$z&1#nbcckY2a1msS!Kac@_7lKKL)5B3V+w*!6giG+1S__@5;YS~UP~A&azf z`IlfkXExr=zsMEkUF1$u=M;aTroYh8Uufwsbm%V(puaGX{=y*o3xnw|457c!&|erz zPhki>g`s4JF!X483^vC`vk`X8U(H{Elg}IULqHFwzrhN5!MuR&FPaxsGNf#3J4hJ)jV8h`z2DABN&+Y@2JNE{|jW&S3t|Wd4q4{!U=dPGpSoBPI?>y-X2JVskjb#27pl8@7l7=v-X%hDno=w)d04&>WknYqcSZfm4%*Tjv9pCV*#osdXNRG4jW{HR5kjk1*>fI zCqujx`jmxYOPCE)Iq1C>f%Qlmsm7v@S(NIBerD0CPWrT=UsIfoQ~lAmEgr`t*aVe} z{%47*-S)6O)O_?rOHt|Qjh2eNX*NyGMjtrTdTfTxP!;H-mWe0nX?v<3)R0K@S<6xN z=+T!8eaN$Uc#C|SuLhtWTQAj!zH9|JtH>6qIq1_?g7*@QDnNg_KDfTjUjTtT)&OTyu~egljh1MywCEgRwru4#E0RI~41~>@XFNes;rE9{M4UfQC2O zCgl7`J5oiW?_D$Uzs0sFZAaNr%AmjdXsox|R;-V)V^k@6=Cz?j##*$*pdWlYjvr^o zp)c8ZJ07Jo!J;>nooFXweX^ab2BJse6lLvHJ5@R8n>Y>Y)9rMu&#*J_R5R^Ny!$LW z3-3PL&c+kYv2#>1`uxpBxy-ZkaLjx=AKMq$1z2Bb7h-*pU4*+FVh_Px7Td+D3Oy+g z!(KtF5cE=9s(i$(5PO6@0_)4{G8KUSg3DC{dR(qhh3Lb0BxK_#i#Rd#B0O5q&VPeF;Vva7KE z8~Yoq|JME%vT>?C6|%9~uEzRl_B5=YZcoSh8TJgUpJ~rTzq{Yr-{G2P*|UJQXWO$O zY3JB;uzs#R7whNQ^RRxtJs;~A*bDH!7upN)zJkI9=x=#3^5GJD37E$~8wHOvF({1a z6HJr|Aj&vInF#b(eGb?pXrhTGhG=4mCJxagfM^nkeyp#dJ}a0KOiT#@ro4&uzXMr9 zi7a76mT)3V1Q6sy?ETn$j8sq~gc=e;$u^W}OKA?E90yQ>11P%zRwOl?vKU4w45wrS zQ!)&tA&{jT%#zbA8^cnuECYwR?=as(nByVL>k#H_1oJe4xhcNvon$S4UnH@Vg|nn~ zEv)6*%8_I(@khnLZV=WIPM5FX3Tx$)wW9Hx4?lwRnHWo}S-c39sB;UO#gNU0lg(nu zW+TXEkz})8>_yQ|PCHOPqg-;@cyd}Va#}7qZ9My1v@tTYoi=hidsMWsM@1WZRJ5^2 zMH_oajAajrvFsr+mOUiK(h6>8tY|x9MccjJJ<@L3lROzno*Y7+3?ffvlP818lOg2E z9P(r+d2%RuatL{H7I|_gd2*KCrFW?|{jL61wIlX35UF^^+i5kon~`Ru8f#ii3sSL~ z+Zor{&i)Y6Z+0%WNL*(-<2u`E5w|mbvz_sq?Tp`SXOD+AvT+G@pqSj7K<+Ih>y}Ul znrHbkU7B44Ev zTbsyNsYKW&@>MGNs+4@yk4!a%Of?1go8?)^7~25eQ?Z9bs8^bLWoVaLYL|o24tAmj zEp}-DMm_ihso14~)U+UsfPj`!jDmn@LRvnSc1{4xK9r>!#&Qi~i5ixuWm#I5qJz;A zCV_dxK8axYMc59DJ~y;9EX&5hC<=$-F2dJ=d@J#`JV_407u7JAu;wE*U#a^FgP`t& z8U3Cymytut$srZwkg?>DN^(dQxuTj}QA4hnLayjbt|%v0OeIUyvgXr|HJ@76eEPBG zQ%07UMwXaLmM9}jOe3QAW6dX*h@MA8&nKeyBBJ*uq8AX+TZrg|MD$Ta^dcg9J`uf` zh+afQFDA+kBFc_qSxzR_))8wPSfYc7wT;Bu{>0jP+8YCiwF8N@4aC~%#M*XZ?KooX zAYyGJWnwgCVlbs)Jmp{_C1408U?{P67_qjMSUZDQ>kw;)6Kls1Yex`kClG6A5^FWF z)(~qgvDP8h1`ulliM2t*+F)XB2(dPlSQ|#Hb%?d$#M%gAtwXGBBi1^^S{d;IvOuhj zCf1H2*2b_l;t*?NiM4UW+DWXFG!bzP5!WH&%D5cqu)?KIGLwiKO2lm?;tnF>CJ=Gk ziMRno+(aU75)pSM5jUBL8$`r)h`0_B*CFB#AmWZ7;tnL@P9WlHBCaOlY9g*C;yOfJ zhluM?>v|AzQ;4|Zh`7N-+(AU#5b9(q5jTyRnM%Y>qkayiehwnyhEPjUpFoWwoVq%m zh#Srt#Yk#wI&n9HdYew%%^>a$AnuMJ?mEQX2I8(E?mEO>hq^tUxEoH~wZz^2#NA=U z-TuVgVZ_}`;%*jkcMNg2Cvi8MxZ9Jsn@!vuK-?Wc+#N{Voj}}eChq1CcV`lJXA*bY ziMs*B-FD(`0CBgSxEny+8A9BhK-_I4?uHU~8;QH2#N9^XZYU9IJaIRixa$yi1+)54 zTLP#pfz*~DYD+M+C4|}%N^J?FwuDnpBB&>k)RQRcNi_8&hSDDmSr1pPWQS6wgDI&I zl+HlPVhm-`q09wS=7K3_ZXGwA5*9%Ti=c!>P{JZ8Tfr>LFqTs^%O-%O62MZ?ERRr@ zhha$==Du533unGt=5GvhHimf`!`yUpCz!b-kxW0(qviH7kr75^G*YP>L=)HZi0d)L z^;qJ1K5<=Y2C?u2O5GrixZaz%9#33PAg&jnW-$yNFlo1&0l(J>w7p8Z-7I?1JJ?D$ zo7kU7>@Ott#}fO868n>g{mI1sBw~Luu|J>KKa4GQ9b|x^WPp4!z%aJbO=m0JOt#X^ zp%=Y_Ui1#Ov`uGA+jO?HO=nBnbhfn3U`yK!wzSP;OWRDgw9RBo+f25!&16g4EVi`G zVoTdBwzSQncfEst^$vQ}JIF=J67oEH@<`INi*1hK&4z>)< zG>4hP)J(PvboE4kts7AVW5hAxp`SeaMh$} zCb_X6xv`b#pvjG6$&Ib#Mni6FB{#N{8^@6w$CDc?$&Hpc(n@Z0$c+=ojdf(j8nR+5 zS#ctPyUiT#vjv#9HB@>nryQ|5BeaM8FWWqjV!b~z@A2MMk znQ$bTP?HH;iS_VeqV^_!XK5}(JP+kq#267elw)|E;dh4D8GdJYoh>5nDaSI3St!=U z;~a|7%+Py@avVlE4yPPPP=X^VyHS+gXh>};juby~03|Yp@)t|_3#R;qQvM8OE{-x3 zOzCmGvixvR{9)Ul7?ZnCvI5%MuSIp0QA}pF5sII@u4tc+B-=Ker9hjan%q z`<0XZD#(77WWOr1Up3jUfb17R_6sHZWsv<2)Qc;GyjMlu%OLNCknzgMcok&48ZurL z8P6S8r;LnOM#d{64$#|7yyh<`&6&bIJ zj8{d*iz4FzHWVtG`Tsc{;k}T(rOH)CXt02o&k>%V`Xe!8ZRb;s;vRoBeu8J&I zPL``C%axJkD#$a1Qln~#l!e5|LTXnD(J_m-SV}}JB^JgI z1!IYSeTa5FiE}-Pa6O4_vDC~2YGwj8Gl3YE3;hh{6*aG@c@=|^53hxH;%0j@(CbBv z3+QkZK!;=giPb-rI-NqD#wc!>GpW<5)M<(4j{+EqP8;g9rA|AvXalIzfz;_N>U0_{ z+92v{PwHzh_0>{ev#GBkv{plDt%lHA4W+f}_O#5VrW)!;DD|U=`jJ5WNThxw(IPCS zeq>NT4m5UDBK4z`(w9T&3#0VqQu@Lvef}DZv^eHb?(!*jQIxxA%3Uu?Tnr^Hma>*h zS?f(Hi=>oAQ_3J?kg{}2nT%c8OT|&X!YN-7l&=EHS3cz{it-gt`HH7}MNy^-DN}`% zsc_0vB>A-uWha;N5>9!EprqtcQt~J%d6bk0N=h^(C7O~VWjKW8E%B}v_O`65KBFZr5?^w4`r!` zvD8CZ>R~MPNY+szh|=LK`$*PKBG`VR*?ytf9--MDq1hgxDIZ~!kN5+~M>69gdQeJI zh@Yv%&ots^I`K1+HHHjINjkk(8I0)B9G60KEDFt*2+h_9&DICab_dON2hDZ|Hxfs) z-9fY6L9^XKV=T`rRVK#eT!U87=j?M>|J3frc$Vim7b1Pm*@pB3=L2Y+Q5Ugn%2_t$ zEF0-5C4Hqt3#(WjRV7x4rJLhuxzT> z!c@ny8N{+_WZ4X2*)*~Zsg`9>$1qCjoTW8_rPajtp<1>N)vr`)y>3+Q`uz$9H2FBiCZve;KXm3=780Y;a z)q~g@gc09wQAHT_{Z>_sk>A%t4sOF(tpOMT9+7PJFZM4g1Y^P90YCGd_D;ykUG^^c zneVoDt0;^Qe-CWZd+ojOq}*rkQ!#df-Jnu1YW)2w%|2isP<=3d{DVN9hwMYDr+wHy zj27)j>?5!%AGMFF5{~5>h7nfr-D$hYZc?%Kar?L`vrpJ3RH}W_J_(e1%07j5|EKNK zD#32Ho6(NE#comI_8I$(O0-+;R+VF)#Tczg7@__Jy!AG_4Nv~EeHl-st?DI?a8rTV>#AqHphBRa+;kM z73GX_MynL3)j=e;(}odddtwY1`Foe3)2ndnTy*sznGSvYc$b2yGU)>(-yXE^6# zi;O(mhhxt6#Ava1u#lPS?Uf; zJ)m2u2eH(HS?VDy^-z|27)w2zr5?djk7TJwvDBkk>M50F3yLdW3Lu z1jp>P9J4ooWA+A-ts@+axI?^G-iC60&^Pef@Tq6{LUG!jt;6H#2RRU#23iHMR+M2RNa_aLq` z5?4})E2+el6yi!MF+Yl!pGM5@LClXL=BE*L8i+cLM4d*WP6JV=fvD3!)M+5<3?k|b zBI*nx>I@?4G!k_hi8_r$om7@?22m%3d{IMtqAw9Bln7Ky1nNfwsv`pRCj!-zF9wh= z`jRgOk}n33F9s5y8i-Gg#HU8$QzP-Ik@z%-_%w+4)JS}4Bt8uyJ~a}b8i`Mh#HU8$ zQzP-Ik@(a|d}<&*rBgaHD3?Phk(rdjEJ|Td%HL4RUp8efhccH-q{$=FD_#yG^7 z0AfrfF{X+b6G)5+BF0n`V}gk;c|?~2qDv9crI_eaLUgf2mnx!5Fwv!e=u$*EhRsUo@r6I}|3F2zKbV4_O_(WRK^B4bhCjj^Z& zT`Gt!RYaFOqDwH*MfwT*nERT!Zl1Z30(byN02lOnkLVRn>qp|!B{E&wOr@WqKSEtFOJ+eY>1il)mv23u=#@b9 zN+fzE5xtU$UOk9j6204i=w9);H__`bl3s^qdL3FAzdnk-htZ5*Z>0xf413A65%W@s zd1=JF7-C*JF)x{zmqEEf(Zswg`XojZ`O=Ae(L}y1B3~krFPX@fOkYJ4 zeHG30Rg7h%`zU%WM$=<4nvw2qbWbAv^-V;|MEWqAh?j}q6Y0-rqCaCK{TUCb2;$|ljP(L$_EqHm*xh?_(YM+Vftuph+; z`%#RrAH@j!2}I~*dPGJOr<3Uy8BMfKrgvmCd(yPACrulB(zFr9Gl}Bv=m~}>Zi(U! zQ9OVs9!L}qB8m?qiU$+LLx|#`L~(~G9!3-oC5nd;#S`gAX`&xx91%U4ePu=w*OTd4 z8BKIgrhjEL`?!p!mt`dTxQrs|C)49Hn%JMj)`b=_KoY$#E#!e@`d~(r4U*}J8BI^j zNHRkb{V^@<4={=>kxbvrXtqE!(>K#h-bkj0W;EF&nSPql?5EPkekyHjnP?`fB-3*< zn%t61|IKJJOftPVqscSL^yQ3ZPn1#g=!~RCXAJo#k$#;f`gNMgMLo$y+2o=ea#1e1 zD34r}PcCXC7xf|+4JH@$CK?tH4GW2eMMT39M8jgDVF_`tlsMRjIOrn|4j~Sfb>pIP z;$Q`Fu##LyP{lsa&l2Uxu}+0R8KA{AQx$3ZZUAS2XjO-M+|esGDiZK zBMx&UkU0{>90_KQgfK@!nImC*XU%sG;yZ`&-8A1Vi0>B0chG!?AihHwpF50C8N{cw ze99m`Ul^Wj1Q|e+0W=w)fDB;B0BN*e9pb+w{<~wg1dsuG(SA)Q0~8YJWjve)^iC14 zL=G|A^+h?v>|CPtfqYSxXx)=IolBgy#Oa>IA=fWeOaw|K0=Z+FCli56h(JAvK(5~* zj|h}X1j;7@xnr7V6M^!HK-rY~FiL#}r9PbUUgR;p)aD{7*O`>--Ymr^mR~f>FNWn8 z%ks-&$;Gkc;#p=1lwY^xqF81LlvB6lqF81Llt;JZqF81LlsmWN5-4$DEV*cwne_YB zSVHybLB}aO=h$V7Rs4cw^A1%PEbdsb1U#0gY~%2;S;{x6c}SKT**>;0OGaJVgD)rG zyfEzViI}K5l>B&<5PC3kk4C8{p;wRe;%P#^)DDby>h2LqNCvZ)!LKnAecEQDEZsd8 zc0v#Iw<(7|su?||=YW%?uafKy$66Hn?PQ~m(LnHi3z&T}o?|Jt1Pq!oG)pxO9y=~e z%^20%0)`&jIx0(DG;VBj7Wi1smmWIN=*=Ue*7k!;4M%@k8EJDKxL)>$!Rr-+9zMC~ z?^FfbVl;Zr&W8oy?hB%gl7~33YV>YyMemmdunS}#T8j`BkO6z82K{5kAO>KeTJG%$ zLBA*IL(~@@JFzFZ42 zW4ep!Zl*s;Y6F=@GEJPjWa(ixgJ~|)LZ&{Z)lB;{ZDcxv>1d|om`<6$tYeOy#dI;# zW0?My>3K{qXL>!;JD5JqbPLn%ix(~Eu2M^PhBob)olL?ERkO{eI^Dnz7#R9b{u|?sESZ zEOw=(z`K5d_dJE}Xx6&$2lx1*LhpBydtT9M@AvoK@3r19u3Pk^LJy~+N14i3c68DG zur74bT};=zslF0h?)a%gnWB4Cxjr1<9y&*ztB=sj^m4sIAE}S}uil0`&4s?LR=>yE zY~1r`eT+U~#{jh#SKdK+o z8}%mse*k;BZ`ZKE?=Gs+THVm~%E<*_^B#>HKbup)7O(xl`_4EHpk$2~oEr*2PsI{p5PWtnp`*Jh<PM`GNT>afjKk;+DZXv`U?+ERQ{MScd*^TV&fnsl z|BQG3R`2|0QEMqj-Jub+ma(Wg{DRWfzh%xR>NEM9tnn=Zlvs-Xy;~yQ{&U^^C;{$A z&T~IdjORllcs`KE-G7p|f2FtoPH+F+-u`>N{Tsaf4|)3^@%BIF?ce0>f6Cjx+1vk& zxBpkXF{Iv=$=`Wze7^U_7#|yNp6c$0%yB>7nEUa@+^>)H_8;%X_j>#9^Y%aN?SI7E|CqObqqqNQZ~ta*|1;kHt*~74Q7fxP4OG5SG6A)=`KW~+ zg)w7SgJXV=Z?RviZqfL@1l}fDbZm zeqaIjiysMxm|5Z)BMHN-QSho?*{L8llS{;%K0Dy z{r`qQ2ki*g4*9=pM;zoB;huvW^S_g04&u-Mb^JM4kNMa2^n>-7r3dRV@aehroP+fk zx8Cz#RgXEyF$XzjAJ3@ki&6)DWht&N>Y%SoJTYilaeZh9ePsuIWp1tUm-@;Ma?C-F zImj^w>oEuGF-s5DWByI;F$X#3Ajcf!n1dX1kYf&V%)hJ6-{AWl|2;8|__B`mVQFD> zs6vbcz6OAJvlq}y<|Xvc+m6vVcA!tptLO{!x_(1?!Jrr3+voxFF1}b?jouOXk^sJ| zoQsjv^U?32H^1sqgdP>{SLl8GVoU{kVEDf`UyFFEI`j~!NAHj&_!8Nl5MOg8B44jU z?A$tawYmn;HrJ`^)t}W3>PB^wx>?<#ZdL2mZR&P)hq_bUrS4YusC(6Y>Uey4>~+M* zzJ=bC?;%olr}|j!LcHu3>MOMyeIUO>f5)E?J8QI~19dPW@WOQzz7!Ux6Lga9p;L9b z&eT11j?UA)bOCxemY_FdnXb@Px<=RPI$f^^>Op$29;%1yCf%$@=~jFLtR3I`nuyrF zX?lTPqz~1HG5;hUI{;B8@#s;Kt$OSAh=y)bE&4Y8w(1)ZOWLGwM%topMcRt95)lRa zA3n>x`76#cX1xl*xFvseo_GG{yx_d(yyR@d_$9_%kL}x?mz^EXE6%IVYtHM=8_tK= zz6RUhbpGzV<-F~@^@PicqWY=I+ERA;O+3eROEy72hfOT z+`u*KZbP)}N?hZ1{VeiIBHD)_w$32$+%pi>i)jCgF^B8J5rG)t9Vy>y-ro@`dBg^M zwfk{gQF?9f|4Qz0n-D)F_l(t7Aq~b8$X7Jwp256lDB{$PRAG3#lT|dn41OOXz8=sU zRTko8xAN)^VhI0$P-=-XwR{&x{|3=IG8%>Dl@zaJ`1H^(ME%RR2xQcT9K@InMD+Iz zM1CKJK0_D8v5h ziv7}q`Ct01EA~xy|4Z+6#r~0QPY5|vV%${^`6{LN{iz0cXLyH0d6{~6h7;D;nZNB1eThi8MtV{!J$=r%S z(BR$!6Alm_^EcDtAp-}33(&F5TEv!cA_>ea7pi@JC2we#!OtcqLZTNN;(Rf( zB`7Ymea_MqE0)jgSUj&R&zB<`L*vrgS9C0!zi8g#xmn}p%~`l)>Efje7R_5;oYk~s zPH9;`Utc*aEUs+fiWP_V>(gh>yk#pE&0jR9W5vAXrOW-NuE3e4bCw>~XW6{Nmo8s~ zo>a&7DXaEX%DFbKr0W*#^Oha8XwJOlS!0(jU6D1o>tb1hj$E;D>9R#Dj`d|EMU<8K zs(cl`8Xu-9_*>oWukVyc{+(}J;VX0BxUkzB|EpK+<12ArHGe;^I&RTn^N>@A9p3F7 zSLy8T1*rp+U8SRxZ?%VcKQ^f8QUwX9Uysh7VIBQDEoP-{i-{D*H z#}|&-892D^lRxG3F3+D?p7+7Ur$!8DU3o{=`pehO7|?d^cNdm!xc%wJ>tf6VmG!$p z1;4$csOs47*DnhC{PgL|ZhrW!%|j#eZrymtqc7bw?~aa?x85j;4L|CVIXzmA?Y|*> z#r%Kh9+Sts74gTJlXJhT&AjYyXB<9$#I=`Q8}{b$*Y?hO_sq@HFSvP3?>#HCwiNdH z+e4qwnUb{Bz`O`PakFNa3-5;-5zxC09 z11i4$^pUi%7e_obue|24u<=igZ+#{^?V&3_zo<{qjccy=tr%SV{+Z2L5!p939MiVh zU`$TEZj~N}9BK50BXiT^wBF+wd^k?zJ3UJNIo1R|>`RpYdGbHp7aAB0r3?rNvcbM| z*&gX6I`L2EtjoINwnLX)dEe4M{ANJdQ`>Lbew{B?`#D_vzIco^ULkv;6S=sDZCmE}rR>Lw-xw6t5{< z-Pq?y1fvs+ z5vQIve$>_*uiaev_`{FieBWIw9}GM8;p^Vnab3#$&rZyEvi93g-|+dK zTT^)Jw6pWtOIp7E$6+ZgH=lI_Y=r^?aqLkmyO?>HtS#RH3b@sTtmZ{&o zRP(ZP<2}`Hjy&W0&_zqPO#J)KSF>-wbJL)VZF4@nV(v}1Kla3fJC1&H(x0mJWw)$O zn%_75fw{XMA3Gzu&#dR3-u&3cWlO719g^K}`KCeRDsmPdzwVruC!PBF4fj-@wBgQM z7LGe6D}3yQqi%23Up#X9@Qa^W{CxZMEuSS1IICja#xtMYy8MEs>~lZa@Z{wu%()S$ z3VkylxX7y2K6&Juvp350q`&|$lgBNbmoyHr0BLyr=PTOL&o|?wh!&K z^oE*AU!Ru0ZF|Y?KPTOtxvYBhwMhf#U3$SQg-fQd{ps{K!(Ko6-Ln(^{?X=sFTNGK zHm+p*Ik(P?tzQ!y5Pa9PYv%QJhF+GjZq}?7n+9F8Yy?)lO7*( zeCUALy=UGxD5!nXvoR<2U9st#J$EiT@7&+6*m+6ntw!5*r#$RC<$-RH^8Cj2&!7K7 zOUw~}>DXL<)laWof5;1O`%XFA#gtP{^_{Y6W&Hk*xoW}H^Zr{(brmGq#Z4!`XMv90 zi`b6=<;`E-{`7$Je~5kjs-UyZIeJY+VEnZ6GLpXzzP3KJ$G4}gj9Ieio!=+<_Eerf zXIbA}ThjEp^ox35UAFtUjpMfMez$CrUAtxL>{l)ty8Oh=ZmY%%{j*|I{Tix zMs0nz<>`u?57JJ*;ZMICv?TGVtas12;+eV~hkt$2W%*h0iFHwyM9x2@i*sO@Y`jzA7$_0?2d-|$P<>BuXT{-l@Re0^TQNmbYXdE7_4zb>zRA%FbEH-Gy5Pm@+}yW%T#_F0AD z4>USkuN&y>-nH_J8$KO-)uQ=39!$A;`i|oHJ5vtb@NP=mNY!V=6PF&j{oaBncYQPe zu+Yo@^5qZ5oUrzrbzj{1*q8Sncm5;Sy_Z*d`SqW~&RcTG?${yihx;ym?DC>XMfJfe zMt<>N+xmx2d#!Igd zvL(Lut?EdZgf_x@3rE!^_{UN+4B(8d=lfJDnF*cS*8FhGS0zYzhurk77D0-ntTyC$i-UDHhr ze8c2Ina)68y{~Rf?V6g^Repn}%Z6WG+U<<)Re=R_JFS~$xlWcd#MkI+2z0Qje0_b@ z{wIK0)7|X;7XrDrC8z`UQC?a(&#!*?;|IRI>aGR5=7+5f?B|R*Ct=x5BUfD9zPV=e zkfu+A&O5Z?<==mH(S&Q_d;$GWE$?~!Q%{6mpL_LruMhiMUQWDS@M!c)OQWVAf83TU zH%%&hWaAY*ub=YeO;->5@``unZ0>X3)ddCmYMZ`9~s_qXm^__vZLn|{$=ReK~KG~ZOG^W_pUhV z#kFzciyuF2-JO@+6!_cIPChd5hlk=@BDXBr_(uKRu}6IM!RKua*}a?IOm9Bz`pPYV zYhR0<^4HbXb8XeqrAIIM=!;XwTsq@M+kW%;Idd`-FMsCV+XLqG`}SKAgzrI7ef$8wZvM6K* zASyU6ux06zxl5P$Hw1NVNb{x05utH$Lol!h%(qb;9SgEr79F-|#k{#?-d?-kz5f#J z);cra+y2V)SFQc>q)nCYFWY|0_ZL6=@zpyc(^b#~uO#lisXepm^NaN5>&`jvvfyEF z21FH|f7i8p!cxQUD;lKZ$p2gXqVF9~I_iEsZhD~aloaT; z`q}+Q~v6_CPihX~4sv zu>n?&0ZY~rgCYYJ7#~=&O5iA2^$on>s+ijBU`{8hRE^KfD@iTNO-;!J4#xofRf19> zV68C_o#Ko%1A+9=g_{??G(T1<*lGN@^|~-x!2m8n_lDVVZV|5i_4e{V*KPOjOM3iR z+;dehr2on!7vY12nTrn_ur%wPRZcUWmn_zgZU+jK{1b>fdC!_(g?ZyV z%V~!f@cRUvdhV1a7*(3#X{D>29mjUW`Qtpsjr!b6=LpH!*-GR^ZJ1hOujl>HAh-DN zy!`c#`Q3lrRY^!$9+S*)cjfi~lhorHte*d(sw7^?9B|tZXaOc&=4_Rv#dSH5W9t83-VaWAYe+hFnD0IH6;m8jObQznb_vM zO=7;irF7nb>FE!m&P{i@`+oY5rF&~bF6Oz)2=a+axP8;?X1hK2alwv;V^;#V+_?HF z-+5BtjG|0Fl?4HD{Ht^y#aR4cVO{_6qWhZ5S7XdJSIuO9v@E^y*tVdyLjN1f{v689 zT*Z_Um1!i^>si+q`TFNSuSHvJ)GoaW@w$6A+b!vYx&?!Vq$JySpBg@iztZ#O`uN@X z_0;FxzTJ7f$0yi3^mR?t?fS9utXJ0kohDh^4LtoY z8*;-r?2N#42bWfdn2B}s+xuA3 zU0Y22-lyNTajLo~u+#o0i`{D7tgr3r+SV%lk7{ z{9CiGVvbwDv}?&fq;46ByQ+$=ns!Y8#?rU{-=2MYoOx38#{AW;E53Uc&zNn#V808 literal 0 HcmV?d00001 diff --git a/reactos/media/fonts/Ubuntu-L.ttf b/reactos/media/fonts/Ubuntu-L.ttf new file mode 100644 index 0000000000000000000000000000000000000000..7b7ac7dd51fd51eac1e7773d182de3f8779c3bf1 GIT binary patch literal 415552 zcmeFadAKZBRrkNE`iqhLUp!lX<>m=OU91PF?+##azUWK>X4L6AYz{(Zi?y3RQ_x$yeO?|I(e?|ImD zYgcvGuD$nKd#&$YYwg|V8pjwDlP#HZ&b;?s&$|C@PX9GiyPa=LcI2#c?s@O;z5Drp zWR{mF#;HE=tb5<*j-UF|d+@w|l`$v3=pN_Z`!0X}!nfR$3Vuih-@E6%4x0ib^X&V5>lNR7jWPMRjOl&$A&GTc;Wme&i7sJ?_ybM~|(UrTg;v^6x$JF%P+*{;%iLmrwJ4c*CPExbm{*OY1lB z{`+}<^5_d5baOQ@dP}ipqe6txnsB`+io2>c`ee8sFVlwMwg&yiCdRz_JX)+QSKdQ8xbJ+=9JOzJjhxfznqP3PHs@BJZw^;ZGIy_@VNR=DO_^_- zbDdk6dvi9BicOxKYQAqyaB?%?dZzR6`9JdAX`GMX{5j4$aUSKo3+LIK`tFXLXQ;g1 z<^B}TQ+0KoWTNU@Df?8@tXyFpP`SX|uJU27`#I~Jzscu!n+KR5ng=*vH}%SWxqja~ zpn8G1YvtoyYdk+^alMrC%VxE*X1bL(n)_BRGtKI6o3+Y=O}}z$>OW#OpyQ$HGuJxp z-_H4``H!6|&FRj6nIo06%z4hI>DyVHYxM0(b6(}P+~3-qXa3pT+5GeTdgoucpPTzs zAH*}huiV*|KTq#CSMdH@&6e|Y^9wvX$N3Vpt(e65t{FIgV;tv`w10-#@6_nS8Mb}# z>7e-s-no*xuQprNubD?XpE29^ywaSybS=DvCMPs&)xR@$pzPgj`K!&{RNlFmzJGiE z-_@_p|C|1fDxWfu?L%k|Rj;#sZa;nR7ccwBJ3PzCYX?r2J)-GobxqbI8iTmF7aezpe8g`~IQorRKJa^C06pvSX|9 zz1dlPv8mbd)>!X3%@60_WxP-0`Xil{Pn)zHYmN8blYSL4pz+>&YP|17z2`C}jP3Ex z>Un&x@n)>|o{aN9Gu|h2{jSc+9W5V=vDSF+J;h6XX1w>F8gDC4x=ubW?yb=&?= zx=IfoPTitkGASOZum7j3bVhRfldk9!eZ5WP&#Cv;rUs9{2%Udz`7N4%2p;|O{6D#N z;DgKcY_3)ZDqlqZ{>I!{x=5Mptv;d?l{fJHf57YSn|q=kXG%x8Zs_WG=05g%vbj%X z32d92md2B|&%61x8qVi@KPOtX|&yDw)yP z{SU9g6X`VXH0>A*Q_yRREqku!2lTD%%c4#33*C8=^lfq8f$Q@)&*!`+XI9pK^K03j zdCB}C=-L|Rl=INyJjivMbBj~YZp&HdYEkY4KCA3*x!0O1Gs7LK7ow{dn*EFGL9T~5 zbuGWw{dDnJ&u;#`zT5k~%9eF(SMI`Ga0R;fX2#n!dDXMnbE@bNc2s7@t(Lq#Dyv}U z(A*lj|7Se;pO(AQypplHkn<&+uiTj*!A#99n$PymGZyo~dtvx7cnwC|c^AwDcMn;t zJPS;`(L|Mp!Y}3{&ZP1HF!X$M;)$BC;0t(A^=%o=S*O51VZvtRz2@}F7Weh}*DEgt z12q3#j!s@`?&q9@u0IEzfp5-|37l`4u=;Ui|KpTB6@D&owQ_fK?VrHdG4;HTHq?h= zUR|?#wS~OzpMS*a(uvG9n(H**zK6Q*V$QMS`zG#Rz9$FO?54j?b9?OZ7F3 z8K-EeJRZ6IYwnkj!8?J&Z$)1}!MOi5w$U}lt2~46KfsB+B8zs8bAE`vxbvH;F}#+H zUujb3$tI|rjm-TA9uNFR_k^EA&WCVrbKZ_~eb2ecz4Y|w7H5sCJ$LMlzob83p-tJH z;5EF()|~%H^IP@DroFVnv%iL?jJ+MdP40i6d(kBwWnAt1Z{mCSRlTR_aUI*T8gIS# zM$@+TDtxy*)ce@1woT~{bym-(ec7q+vEQFr{RCzI7xy3I*{!&q%LxWlzsL1qW^-Y$ zo`FuC=R6-hxSi=(S@|pI`2zFNJ@}4Ob8_WO)2{q)b2qEYvQtl}A!9woUaA@4S$5 zi>qYI$_HaqIgc_S=XH#Y#s}H3c@O-y>#5^Gy!%$h z?^H1O`wQLpA@kdvkP+$rrOcZ@oPXUpeg1X&yi^_Y`F)(~(>hoBp|;g7ZJuKOYyNG{ z_gcAEor_cT!I#%_Vi&?Q_5Y`xYFp>O&;O$G5A!cpKE(BN^RHH(GXH$#+4Ij^dPVci zPWt;<&aYIr=6_Mm=3lIKxgO*_@#UwT-{rmU^4>cr|61OAIoJ2jzgm6h{PQ}Y?I`B~ zX!{iBA98+|^M7;xK&Nxc{Ii^2ap}vq z?vnmvuB8kW5 z#yKs!jvL3hy5cy`b+2n&OS{eczQY+hX@_>x<}36xa%l9cP878|*VyFHHcgWvCs1;N z2I<-Zeb=VU(d8!6G#)ECUQD_qyyP198u#a2p9*wPb?&%3$F@@(u@m2TQ+eD3F*gOx z6CCGb9Bs!Vr$BK8V;z1=N9O8yrKh72?;dAea_uEziqrU{9^YhX|2OAzXI-L$XSYmA z>nEh&Iook^2X^#+q_-YmUp?$N;eN+~g+C!Z-C-QBBXb&G{_=J3`nq>HPA6Y=^89GF zkwpic+;jXBoWtihpL$iR`M%39aFQTM9mmU^%st_|-kZEvw)5P3(L0I;My*yi{*d$5 zcR6eAk-j>5jeFxw!FZQuxO|Q4WO?pv2hG3>JSV-0!tmF1Vm%2wTLRvT&m|L8K@4lV z&zklehjMPg;9z|1CEsj*Gt2Igx1Hb6*Jo$vB%bquJkRfXp9|^f+-WwgBsopbbDVo# z;Ac19==6gua31j7Yn=Q7&*|~KmDRzf|H=nky5Ssp;DemY`q_hgHw>RRaJ_`?I!_D7 zaQMxaWck~i%dYgUepRv+xNiK!Rf!W~wc$+=3RgkIKhpW2R84Tko(X?F0gbHMB;KWGk+AF}yjbBOyR=J1?#6?26As5ycBM01p!cpCZ1=EV8Gn_HQa z$WJjRlb>qyTbonn-!r!{r;?v$Zq4_no7-@ITbtj`oQ5TLhPf@@+}_-d`#YF3$nR)w zPktwxpK0zm|2Ok<=1$~yHfNHbW$sLV7n|SJoHhRrp37ay?{4#Zn7eU*w#|Ru+@1S- znzNbf&oMvG{k_P)ZGOSrbN;X9-sT+gbIrZT?_+*}{5+fA*PP4!{mgyH?{ChV6Ctws zFPi&uf4;dt`7e?Gvw5KTMeZMD&gcHY=9kDXu=$1Nf%9*fhnNSEKh#`6ev!=|W-jFZ z;pQRpZ<>qEL%F}iTtt4Uc^Kb3!aSV(k>+CZN102o{T^*DC4Y>01o>s=k@J5vk2R0t z{&D30XdZ7KO@6s~4EZmc$C6)R9#8%Rn_p=zpMS&rip_u3{4)1XG*^&6$vgpX;@8Zt zkU!bxPcgsB{Z-~k^M5c;CI7m4n)x;EpKhK^{tWXJ@@JZ>$ba2DmHb)eY2;U%r;|UM z{O`?k%rnTJYo1B|Jo7B_=bNkNUo$T-&nADN&0l1m!~JiV=gz-se$zaU`xl$%bN>?a z0`lK7FC@Rlyomgz<~QbFF)uT}N&egB#pJ(3B=;-k<>t5MUpB8W*Kq$z^HT0#WnM=9 zYV+IkFPUq}zieJ(Ue5h%%`3=XXY<#aS91Rb^D5RKe%D+}{(I&%QS*o7A2S~$zrlQnRg;g~{1fKG+<(&i5&4bgBlFKKkf=WY@1G%&MWTQI84~>r ziGGGe=KmHF{r}%4`r-deHqp#MT$+S<64M7Jh2&`OMnzxwY8))-oShJA7!Z?vb^w z$JU~rSo?Wu?c`N!56`R(yk;%lb!*>lSZj9ETCH2wI^Ab2(rs&h?zh(F0c%wrv^L}+ zYcU?Smf;a=4W3{=hD~_X+(>?+`P2Dlv5EeC{uykdznuRi-r48KPcfe-a(=2IMs99x z{(gQF-q|?|4c6y> zZ0_WEMB~qN{P~Tnd`9GVcGCGL%~{T1{t5ObOy?grcXej-8`$%;Nq%?d!2Dz89?p^Z zN6p#JN%QN?&l9u%2&>7bk)Pw7G5;fTFXznphuI@|m-&ZSLAeL{xz0KB53;l8T%!Kx zIrp1?z}(k4fBt^<8a$Z%{?0?lAK+X(f1mk9=MhA5&vza(e~$h$%->}m zrDf4%j3!G<=U+6q*ejTg1&zrxUy#Ozqzs+3ayk!3S=3&mu=5I9*cV5m4 z_{Gkv$uDtUKYz2ilr@AmnMXKpnZMCI(s?`iqnvlme~&$M@0>bIpq?XUv~texq_H^53kSHGj5wapfNKtIbO)_nbe= z{8r`O^ItdDRPH-}rg>@Q7w69~FRMIo{&e%(m4}f3PUYeArm9x;Eac}3;X^Q+7& zD~~6CRpklurw3$-K7mEb`Y?o-==v+be%Kf2_H#^5OYq<{g!fk-w7|{A0|!Dt|J6w0U>s&*qOZ@2UL7{E_CpmCusD zukttZOU?T$Uz}fJ{-E+z@(-}ab+P%w$~VbBSoxRv!_9|?u3uz6T=~KLq2`Y&KPLZ3 z<-gfWbbYl#{?Te}exdnT)tx`s+)(Y1f1H)B2boV)llcS9C#(7Vm&}dT(fs_M#fg3v zC;C~O=x1@F{}0586u%zm_ZRMFjZK-=rIlJ^h3j&SE&fZjom8!IyWCt^S*h1*EA{F! zYAZaT4l1ZNc(k&#yj)vxmwBYxs!K~Q-?eK?E=}>wU8*lH zHS4OqzEWLYYSfl%OAUTpu(U*76j@njk#3oaNX->>ht5^&buHyJ=qjncV!yA|8U*Hx z=X6o2W*?}F+;Pwi9d%w&$s*a3Wc3R>x@B5k zS`w3+8pwjz)#c@7u}f*0(St7<&015WR+n8`X{@*nF_d9guB&jPZt18ojyf6mYP$si z%dIAZU#(Kh4%POCuWkKSIF?m-WyOO4nxS?TRuZFkn5gfTDPfz^^Mb(*n&)em3g{($ zM-Ehj+FWWNQt)#pseer>Lh{63B%~mZN}vZ>72S0t6~@((V^2Mi6x;3~s}hfuhQ4V^ ztnK$OSN%i^Bv3E|8MH<1(262UJbkjF0qQ^I*FE68NKETqgJKC zTFsSG?W8)1UfKlZ(x*k@C7U!zMbglV{Ys67>o(o8>`J4_=OPtPns8U6L7OzH(JNBZ z%6C)Dw8?d~fbDtZ+n(2M^SM=)=i0O*Y)h+M06^Ge6VM=rXkcKANI_(6RZaDX#|*p( zEQ#6aTpip9-A#Vo%O3ZBZOKD6VT^}jEx8TV4(2h$!Uw4!@~q;=U|zvJQCvVC&5JCl zflY`!NzZjXCaGULhn1(D$Ax?;w_vZ=l@I{rgj{%Mk5UoKYk_mn%z=<`>{eA@X}J=A z9gx)kQ5LD?>S!Df^UA@$#g%%2fl3u!Qnwi+M$+>DT$|8{<0Q2wRABg(;PsNlJYH5p zeRKiy>U9@}LnFOnNIg_lXs{%bgcVW@`;D%`yiVKm8nw2I2nx7%siqWS!TYK~Y=U?S z!wfq}uHaCkK(Z{hB^Gm#m{&B#^OD5?TZwrMXr@o0?Tl%DJ#g<%?7d?m~oCnn19jlTw%)Qyf~mCl0A?1X&>v0ad?=Fu8zW_5 zP|zb!ZxsXz>qN{>=a7s>}oyMAE0O>Hgr-bs5 zthO}lJhX!4K$5B`X+kWXBQZ*aoRAmNq?uI5V$xS(l0MmkQmT8AWZ~7BqJ>)4qFV^1 z6hd@2p-l&z=O{3*6k1&^=GkY0&f{R7M)TOTGvk#~P+kiIV+ZqSpVVqGvst~Mk3S&+ zb<3WeD?yAF=nHJvd7>`W7T+|QbyuWP0Lq$m>^CWKfqBqr&Avj48JudZQT03RRszFv=s>9_?!6MYK#L zsVS_YkoqLH@sFXcGe6iW_(<=0(t<)wPdcO^YJ)4yf_W683bo`lt&QsmmpFut(7jtf zH5Z34uY*M)K3E}dG@0)yFHWJ%bts`@jEfaS3zi7D#XR~0=BW@WwJgKaVxB}t39E^R z^wuWeMUb*cO;AntSIJ=E3q6EWN=@vuU2Ci%7+a*`3H(!!XcSUqRWFj~={=_EMQXMD zPKSTx+wFGX`+Qy$SLc8(k}WUjl5Jk}N$9}`B{c#FG?^3^m`8=JWiX>4uq3AJoXo{$ zuXU(qOy}e}n753mwy-DxoF(+M>@J4g68E(>FF-@HiG|Godku^NzUjbNT4d-X(+s*m zY`G;of}`}7uJK&vVXcECh4tl*+}YYnr{>j`+pbz_HsGwM(er9}yvwRZfQkLftx_9- zq7EyC8WgYY3Hq=%i+;8&(&>3oUUE;8Tv=h$9IeAeYKk|M%M>mS*_%6wJ|mbAD`cZT z^<};0HavSmIUbLW1&m@5HW1L=gP~jqE_l)?oKj1%+u?9mD#hUK$!l2l$4_v*?$s;R zdee>wJs=?*jFQz2G5;1xvaB!L#S?ff>8TYjW4bVUFwTx(vb-*&lu)YLw z&;yIrh*V1$v5XB927bp~>9&~xt5x{0b675ehZ43Gu?PsFaI@j7)q1-{lTvz;_`JhJ zDgYx9B&*6i)e{}Aq6?i4Qi?;O&NJA&E8a6cRu4sHk$4T*LGn zaR7IXmISxiL2`vcB_>i@@S|^N7hIwn0IV?2VyGad=oOu`4C0$M1!;tj0#&csfkGxl z`Yk62eu^WF7DrVd)CJ2352sW70BSf|^2M!G7F3sV3aKle8+2@Q1?QT)iJO4nQ-Rw8 zaP&Qlk&__`EEQ@W?ZbBPnv`J31OapeiO{u3!W#LZN*ENR-6yiYS^!6xH2l(JCC|ei z0||=M6p$^FebRwlFpeG-ZCV&m*}{%%?Y!CPbV)%_zU}*AsLzXvg;{i%WWNw}wfA72 z24CdbWJ%GqZWI0SE$mnVUAG`+r*lnkBWs_$!XG?2wQl4AArr#9dV>hof=E?cT_US> zG#fC$F0&0o#b7r1;CA>@4j!5!w(}b9=K}LI9vzr~9nql9n$L4E&$sq+-LH8o%N-X# z3UOGf*ILj)MqH0hH-W|a3O$ysXPdD-K?;jd0L|O)HEk=kEf1tkDz`UDvJ}NxV4h%d zClyduz?t4%BxD}Jyd~x#XI6;Oo&xhMvbi;T@T@$fc+w&)VB~oZ=5>_ZM#T>2-b|Dp zKOw&LR--~-sSsHU^}a6?MY>~Wmc2FY+#?3H4kLrC*XsTP^H5Px3Ct5LXf&H`#h#W| z=oRwnqn$F}@pa)lET$NYMd*bQ!n_C^^Xg#--2)JID285fxr5Uy#g?XH2vXQ>1bm|> z6sCk&FD|Qum?)M>=L@XVb3M_4Sh--HU>A(Td!$1+F?vnL5fjdyBu7A)SN8)@3qj>I zjTP?{@dUnUal(BV=ogsBJ3UKss*RSf8J9q7V`?Kky5mQ!(v_+jbVgkBU8L( zF^^H<-lbw$?$x8cQ#DWgc3ZXXVqV!|yInjj-xS6PKb>0q>* zkji&{3g&r=6WXfU^e9juu^_M{#&(;|QBkAS_fG}$g3}wqycIM62wKK4Mo-J`V%RNl zU-Ow6mG!E?sUdGehI5Y$$H@mkba4&?3E z>VYuNr$Lnk^V-A*YEUWys72;9++ScG1_Mb0Av2lO#8QSZnH5T!5DRTmZ9BaM~hG}IpY7SncdRGEYEp&-^q>XfU1XDtQ^G1_Bs&dM0}fsUd?kq011(H!A+ z7oSjxNg?Ryz@)Ta?9En?q~j+|)~F5QZu!JL${z$6nbKFXz18f!7v}jT<^>Yn8YI|M zXY^p4Mze{uFh`h&Ck7;Fa(A(sViX&wV->E1P{WsUChJe1X+v6t#*JDT9$PQ!C7TgW}g&u6g?{1 zl$hDn>F{2lr$rLRMR6FGZ+E-Bn9tGTv9)rnFxxL=uK7EdC&9*NUlc_fJS~+Kn5Up% zSD052SQ1lqPBPRQ`lr|VOLKQ>TFgTxJSs%Jh~Zl^%4S*(!=C{=ktM8NhB9d3r7?sc zG+$zBD$bxWMl`W&Yk?enCT9=d7qwib7vNmTOq4X2LmT02goL-3yRBk56X&=?@Kx?F z1gvGA1wM|E3`odnaLyTg3JX%qvP1IpQyY=fH--N0SF3ld!-% zoE`hc-mI>0#&HuoZgyDdCgNfTgEa)t3qu?+=_}dZYWChEGAmt0Vh9p6LOB~NE^44D z5Y^TV1h%|@c!CzQpseG{ej{Yjw3x>?s29p6z2kJ3i7ThQC~P;9E>{0CM*1$*mZt%R zBK&QLNk9;VTW$o?5E#MXg70FoN{EH30H`4sz^X*SV5-JJtOo(TC8PoZFx4^EyvR$? z0zda8`5R1I%Z)H67B&Mf_*ijlcu~73KjeSbGQbO#X+MTZ&~KA3aN0=Sr(OnFT<0e zr55N{4fZJIR2F5Y9fj(frXMaX-h>#OXeww?F&(Ep7Ef@{#5{e3O+-FiuU%V4L6~1X z1ORS$DApd8#(ULblud;(B(YLzx8-&EIEZD^@CzB0I@Sj*N&*Ky!&)Z$#K#1Ztyq{^ z>S2+B0IM$4XckGo*6by5T)rH|X__Q)uPjfG13SF7xKzH&tXuR*E(;&@M8XW(wiPF| zRROGiBti=UOJa&{(>cM`qGpcup4>2K$P{6_0gzht;BhO%- z>~(%+PS{zgDUdF7q6s57m1#f9F;~I3RB&Twq=kmJ2p4V8Rtf4=!jly{>kifO$~X@vz@u zs71Fr0IBr~H38nC=pK{Za+btVrD;8op>Sj2Pv9pCBu$OW51!Je1YtMAr#Z_3&&)Id9Gj|tl}eB z==rS(3N7Xd2i-21ht%=C-&*DgMRcG!9r!JNi2t$3gLP zzgQPKm53*w3;d-OCEv#f4U2o~3A#I&=gT_{F|$!fVV=q$QH#{=7QSowIf_zJl9ZSi z_p&U_^mB5Xtj0@-i)Q5+hsR=`%%ZX^qyQPVs&3E?Vy*EN1eU~In3F*@u%7L8e=s?46Dg?2RH`TpJ%<~8)-hUCPBQFFpu!0ZeUW@oR5pskd zMYZ>3Rl0&}VumaaJ-#{S5fQz4Y7pBveuBqX--Iz+#mweQ9^x3c490RS9F&_^h=d~t z5hEizuL;YAc_@R>rP=YtPOFK;SKDA7P=VaX0eFEzGyT^&?C7>M;rqr8LAxRfHn zNS`l-c`lg8H_T`Bv&&?Q3@rv;l<4Pgtd*FD(ZuX3+fB(2;y8+mdu&3$ zu|%!FKIv+_=t+rrWqV=Bd-$^Dn{k|x(zJZLm-O>2Pt&qI*U%2IeSuZoAlid@T6x}s zd5rHa=7rs!Fs~r6Bxa{`f~{HaZeU(=FHe}q(s_AVV&D`L0sZS!a(L;EwKvdCioDw9)SauW!Snb zt*v0f5=}$EiBU9~IQ>}aO0f+bSZ(nwIJB_8A&iOKriiwS#U@>M60%dkmF83(J~Zqm z^ur!L(xJK+37lp@nW>MpWR4ZDR{T|=E|YfG9_@yX0@t9KqbO12afk+5h{arN5f3a< zGY)m&sUD-R`p`s@j-Oz-*KJi{l2);iPuaOi0^mwt(S=*o#TSb63G;f^1FY5Egzb-v z1|Wtf0BM2PsnKjl1YenPVkqmjlCF~`^YNuBbdj7IEM6gEDVG$d>tlD zyLia7$tUc<7Dir|$3U$@C1Ip#RlMrLdg=k4HSBFqun&;ghWvK7lSExOYkgEW5Mhm} zYzRuR*sb1hP&f`SkHrtwNf)W5%sGbM#x=3+c__F#|DM<$X{vglGx6^Dm91QaQ zqPW#~JHocKRy=x)c+n?WOnlH2h84*nP>8o{t70J}OflIP;lp4-Oxd}P50^K4_u??u6rpq4axC=*HRd}LKr0X_kfMbK?` z64{ka7+`&0tC+$(;2s`;c>(|yGlY3j1ae_(7XuF^iXI8`uA1>;p`D+rg{K^(N8 z22BS{L&-N?0rQ{-TKLEqLp0&9I!FuV5!kCqecNDOT~{UT6rs?-rE9Xl_Hb+A3>7=6`;CW3bST-%%e{F#qjG*Sy!D_4?w{` zpdq1bW*=~f)FxFCLr|8!B&06gIx!CEYmX|n11{cM4G zwAu#qAclg>TsS_R2p%KVM4MP*(}V%!B6k7C7%)}`X*&@e0w*-stREI3FUuV56DebO zosK*V4UAG40$pjZS7IKHBC{*8Pn#lq(j+ZP(jyE)tBe9oo`8ovcwjM4Ohuv=sb}ML zyJ(qZBhp|{zMc0c?G-j4(XZRT_pStyjj3;#U5<_D-3UVgKzO4kh5*lFIw{`FZ2 zS)?r15wx}U=h);Dzde5PF-+pll6I=uZrh2q-|yhkps!f=$5yoXL<~kAbH>Qv)4*#j z3pIT<*O36xSPO0%O+R&O-PTGwhqBo3_qte99&0!Og?(5oa|J0zSs5Jut&Ru%s5QxZ z0m_8exL_dKEIwyR$X9+#Eb4eQ3U@n$K+wo?1~tPLlDJ$lQ5CQ!Lt9jNL(dBat8_DT zGo-F17{V5k2DMi#@3C$$!}cTvKYV)B8Vn*jt`#AS>-M1#DU+QA zooUy~9SVg?C9DmFR1s1*jcNs_#QzYFm@#C{x2T^Q=!6dN-R(uAKCLsK@&?7@njd0d zLk%`>>SI*PCuS{`*^nTgsGzc_6{W+^avVYa7f})VjCKKrD8W+u-F|}IDi@$ zr6|g?EKd?%vx%**n3_a8ZHjySewG&{0UN+kYY|GtlO&~22qkUOXv(J|rD?yP_jluW z{r+S!nT|%qyJPwfcXrr62S%M~NDNfwjlK$054?~A$sVo_BuO$Ka6 zvfKRv7ETIc%FYELxN)%mAdf#ZaNz>;{G`ijDFIM0uk0?%))3&kIZGl~?A@@=fb^qY zfY{?_3kq>!B?ycFlEf-^d&LsV;+WsT5Z2Fu_}X+ zo475%o)Ef)BruO4QVTkWPAKJ8TNS&CB5M%&JpnsU3d~Ct5h^fmx8ssfI%^N>NywLo zEFKCIA%;+ojt~!|_)&%O8aRz$;yMWP@U?NdDG>QRd-k{ z3YB#0DJGW)g%O=Ru8R+OO0!M9MQlu;!4ElpCE8iRpR;Sa|$)tRHI9i*5 zdXus|GLBP7vM*?7i~e_jqEF1_VBP|REr7>e9@?s;UqcaE5Lgnk(>Z3m-r@d*En|ic z>lh;5E>aSTNS_}>+ye9ZOvPYc7=d}6ehlU@qeme^xxhS}Fm@dU?5kJQAWKF$>1!v4Y>R60{?J z;bjjtJjWD>5uq5Q*U@!#6tsZH2 zOj(@-%mZfCZ43v}a0upM^++4{SUWqnuvZbUX1~O|p~XBrBY1+W#|by+Stsn~{Hmf| z?+juvFBm2fp+1kFi-CDjkN`6vH#0Z02bjmd_0`cRZqNGc(5tWXEW8vnTa&Mka}2(; z#UcQo!eKCiKu=EajC3wAy#Ak2#_<}ps1xw?6m*rZB=d3Z`% zq=gDrmC|;SVi>V2Eb0pLP#H=5Ud)r-q*c@c^9Xw3&1ztjdRTHoC#jkejv})w+vRLZ zQbpa0lJp2^E>rO&V^uh6Zh1ERI4Dg?PQanAdA}R=Na3ZjN~4vV3!j|i@$F&RZc8_6JM!HteW3Sj)2j&ek9bu>VyEl-zlUl4{9Y1x$$WH=`dE!7P zkvxn>0Ra|lCaB)2<7PKto;zSAtamvnb&#%c^Z{XFI?oJyt#HV{xa3dT6n zdXkXC7R_&9UdcpNAe|@nj5ny~1%qKR@qS!YG?V>MS{DJoz&xxqTw$E8V-mz*wDZFq zddCQ3poXAK#&q9}kX6M&z`Pj7#aVX;^LjSk2UJN>@q}44$U(NYj2@)=PD2kth>Bcw0*fbjD3=I-Slw6zup*eyyN~3y4$iU8;M4rIBf>S^)2SCZp zg;ZLxQVo(>nS~uM>rF?@Pys3cwgxe18TaW3GglW|BP~j^NzP&(z^tX;AnhbMh7r5M z;xGlGQ5g+35aLcbs&Ja zH3-vV@OyOzbC_fyb2`5m83KiP-fT{i)T1ihI=hPpT4-RV>@wF9kf=Ai-4(AjL3B5R z`b2*`!1E_w(youdJhg;Dl(XN5tt|XliP4E_?89ioeoxRAMMJxRO#_i6)*R|)vi4}j z&IEqn{%Bdx5qG7oeZe{u@;xMHI(kuJ9~9I{)^zmbf$S!tk#*b^rYjD7?Vw&LVn#9O z=7>BUiz(S+o&q=J0j@0~UHCCw?O80+0`u7IbMw?9o_qYnDt(Z3muvhMQGG^5_HKs`es$^#!D@`wFi$nusi77^y9aNJ#ufJUCc zG)jmDF}h@;UJqK}6l2LW!}Ef{83W7Kz7bNV#WwuwNS*O{G15;Sv{7eILK^`XByT!R zh2l+ChQG+8FB(j;Ny-)0)#OVflbu4@jkjLglyvp+jw8%cbKtpsacz=*D*Aa z9`-s=EM=N!PGC~d9+Lrp!feSm39QQF2^2E7O3I*ffZYn7ck>u$wx1AMqjkCw3^RVY zCw_?kiUPvmj{02Ct+xxb^jmo{n}}bifUn`o>R~)&oZytG$<-ch-e0z1aZ;Q|Ci{g^;p&efP z0@1u2>uqOSmK}UOQ6u168WV`HRpCJQrz}D(2rP*yI~Vn`Zg#8jWnkX)^1whIOHmf{ z{1D7z*}hCQ2nbtaTx49LUQ);F876s@3-fwI984A~kWkIzU0y@-8g@a3nKESY!D1d? zd#x#Yw-q#}+BE3-Q!j5f$5FwahVS)RLTmIrR~r{YFpt3ba5!WesnSU9iq)2s|GJG7 z=E6L9Q%pL8UCb-Htt;|lCs-WB;z*)Y60k^xAoh?rJdoXlp^sqV^EB+yWX}Xe5=2O+ zj$<&-y3J)(x(+jxSLQ)SnAf@)=COHUkG2-KZRFwjNmElEf_Y(61O*wtQ;et65SIp< z1FCOPm%d=F4b1b#j0_20v&zKo%M{GxeLu~)0lg=rB+R3C%xe1arb29BUerTY@d>)& zAWE1ll719TK`sn3;Uv)wpabw=F}%RMH1K7f(55gCLlesvQ;1%HdWaha93ExV9i}qg zG)G7@`tfwY&|oTpXrSE?4;1?^?DzV;`XI&4v=YRF%mzwE10a_J2?@3SY5<46a;ocVICVcz`O*vp5HI<-+GdS zd4dupb_8qZ$PVW9iQuV>QkIQbK^+cx%_bHEm|aWE%lp&mcv6&PHfFntRYqm~Rh|r) zqloj-sLH5^MH-E!Q_yl$zB!$4ZEkL@ua|Gn*0%R;ZLM!Cid&7B5Em#U7j+C|6g{#( z&d|1^BC(An>y?-{><EAKR?7?yHT`GMlF?MKZaRk8ad>anTO_xbM@7nnC8{2(~RLdXa> z^!pKUR#uB}UThk{=;HZqzqv#D7Pg%AB;-qA;_RdZHPDep8QtDV1SJqmq9W{*=5V`> zi~<>QmLWzudMzCVu0`x&iCB-@J*Gp%UBd4-um#%1_HJTQ)1eM_XchZw_T(Mbu#TVj zC1ST9E!PCIBn%2nqS=hCX9N|bjeBZ2=2lDNQ$~iX7tAzWx1x;DHSY(E9#w(kY;y^57 z0|AATXdRC0NuL}Wa4||H6UDSHk^Cg(M{Q^}QH%wP*@>36r&FSgU4A@4j4;JY?bZkI z9w+x0QrXnUTAF$k&^wmK*WbbuHc%ayE z(I6Ql^%476M5taL=kAGN0FDVtio~xTvL5k3rCv`ShRP`A zIp~Bm7WkrH9pXRYuNF`H!`W=QTHIqy4aaP=TcqI{Pe#m9S~Oj>IVjs3kM-VoQocEx zZEx?}-rOu-Uf(!)V0-`OR#_ey2joch1)_O_sWvLwB#Vh)hn{Gq0({H${|4Kt#`I`S zgcbyr#0<*LrEvMQ*%N(Z)}Iy%^H_=+rx3|PH-8#qr}?<9|B$ymBZ!tWc6l9Bewq)N za>6Lfrfft+v$SuBC@+gf{M@bEm}sFvfr=1wRzF!}b8)+~PPk%!*j!hPpw(Sx>sE7? z@EZiswApQs+3(XFv)>tth+SwaAPd@U8@)?b5iV7Yg+Mrz6c6R%vf@+#*aSukZgy8;x{W zCxnGE9mPJBBA+rF7s8AE3+CBaF}ooO%uBk*!93Qij-Qyt!eP8zk7E1ZSBC@fV|_hl z7gnTjnr4VwBv#spcr{xyMh1%yUTgin-OKGZz_gnW3FyQadxVTy^%PuRg|cC9eS{{^ zWmhESy9@q`uHg!b2q`Qz{e^q<9+xp{BBqA z!8(Q}4t&&u89hz&vPk8>_M%B&0Z;LZ-uFi7`eXo#5I3+AH%YDB#iMkT*2n!Gc$ZU2 z5>ET|f>SY$QXXM2Gm3gt(2bXG4$c)xgTZ7x9dEQ@SV3S( zOxd|42RClF@wC90jc102RX&!YCK>zt;S;}^FFL2Zz`Ql4V$6dquOqtC{xD&Yk4S(p zkH8(7{sQx47bDvx=GmSir3~rTAwwn z<0s7VXcX7#aj(FBPPHS$+oh;csZu7#Rq~O?KMV5m=|sonAg{?gd`37BW?ij zC`(pZWDgtNH7FbQh|_@%e(Y(>Yu+2N!vyTMGdDUV%sX;`$vHf@HZCx)q?n0BT%Lh> zLIE)e=a<4+Zz~m2ux*7LwvfbVl@JqE0lqL>RtX*o^A?keO1Jv$*$mCZegX4RmVV=~ zKI*YBiK%sL0ucySB6;+V5!SX^h1lYLKgq#7?N-!~oz^B7YS-r*3y z9gTW8wj&wCgvjXUWFi@g?7$D=KK0;Y6GclRnYx&6@C%gfjkApjL$iZ<(@fq&%J<`} zJ{cr%Q$ogT1?J5rbeUs9E!f4of`vh0r4~DRkZ*4kn3u|)1oM(?+K-`z83xQ7frV@? z>Lp+v5du-cc7{PX-~k~EFpp8v)?N|F`r$&AG-(bAe5KZ@CmfcHN29UIC=D@*gigoD zywO-|4MjSz82M_JvU%tGx@5qru zhxZ>S%Om5fc7*Kxonhc^U|3SL$KRWnvd7V#c39b9 z4J~7dJnYV9vyNS{$ky57-LrpcW;np(9gmZ-JY3vc*>_R2iuj7v{HS+tLdy!bH0>70 zAj8DjNmzaM7y#hK9}H050H+&xc2U&i;Ey52O}QuoL`bKOjP>Y@@RN>&6~BZ%2)oDn zBwa-Jn|h2@OJY;i`b0;19Lx*WA@#T^!5JGTwMH+2hs-Y{@ndT%!M2Yhv}5PzJbOWa zC0#|l+8c}vTif8Z*6%yXKwyw&(QwR7kJ0R>Gj?7=B~SrRwqv*)SB#Yd}cn{5ZuvxUeI)I<-D}zP7ZiB*kvYicBGFe}RX_OG_ z#p9BRVp<%4Qv>i7FA<++!D3d12mbmxD=XSwg8w(5Gf`s#@A;XR78Ca*#g)^T1-pIw zhAE@TAL#&!R`J@>KC+6OfOP2~+t?g{qWdzC%TIbkRxBfio`h39ijsIdNrrJaX2MJe zks(bOnnZxnA@!;^B$|SYjR%{?vk{9tah_)Qwf$t0Z>^5OXGMlnWNy~CCNK&$&E3_Z zoL?PTygqUZPT^8=tPUANqI!e0pqsYrflcerh6lFPH&g&@?G47Ri0MI1FG*+Vg!TaX zAW4Z1VHYyA3K5Q@@f5?T|nI3e|kB5u(CqDS^OA-=B%8deb0wFQACF=gkn0bIV**7Lf?Y`-`*+6asW^w|~1q7Q%SV$nPoyT{qz#H<1@216G+ zeRDL$%WPF&9;8U3-YdVH_Aoj16u+GW;{xN8WD95pDk5i!w^5 z_N3`F_jPFD4d>a{F{G06*qjnZvcligV^OPBR)2GlaXQF2wt-^#O_NBH{_`wkEYz9$Gt(m?z?@c z+y`~jYi$zJ;r0^g;0LS$Nrcpwi7mrIOie>o1$ZbE9X@;Wkt`2st4ZE92UDQkQVYQ5;R3I7aB%5|gt`^VWR)p8=S={0PjY`94bm5@)mj=i^U-)Jq%_RISX zQs6=HKD#lN9S@T@B~Y49deKzIFws4vX>Bc)`)&t*oQyIoQug!2LDs|6rO5%`i~!Ts z{`T4=%P|MQCvjq6P2hBOusU$p#u;$QLE(*wTX0G^N*AdmA*wgZ7E}Y>R%(e2tW6GW zOR2RG%jVzV)Xn;vqXcT$yRe?G0&SFL{|LWJ*TxhKH3NeiUSRv{0SktVFe zr^0*?piBsS5x=!5r>5zu$|y}HT3uLMld35Z9AkFXdalxRb$fertGEYjX6vh{s7=$^ z{_U-OYgk5fhDKFJGggr{HuQ93qkMD!{-Z~ao_P3h`SyW>C!fscBa7ma@eMn$_62q@ zuWq41MUS*;Pn)ty`nenUHqnm3qN>^Y?0^r$3Ia=F%Fg9OxO~>ui$h}$y*2^!THR5; zG2&;4{LX_vdT61>W)1Cq3HGzAaKetiiQ5|_`=)DsHfd$!;eI@4*0I=rh3DJPc+GVa zZy%lRYpEW&!{OCVJNDci!uUTWZ5@))5hRC#Y1G;e$g-;@^LoKXH_p8csv@qM57^Nc z#amljf%RmE+jaw+h@MU@IOJ=x_GqQRuTA^MY4n^(g;H);l;krYS)+uIuRSJ%ss3us z;uz({G0|+in=rv$S#*hKk9O*5x}N51I{P{XfsSI;g5__HalU)($5XUG8?%=_<97o^ z>h53D(eIV}rWfCH3HL+laZ?|QdM#gR@QWV}MmA&j)bP+D_L1pF9r%R1l^lBq)&=_+ z8G;}1T5;W=Kh2YC_gg9x#Y>34Tp&H zVsyzwRgkhrX3Qc7Aw`0A1%uc6{hmMR?nml+tTMBkY^b05CcHQdh~mStz2p+C?hVki z-r>WmgK17^eb^i4o5bS><9(C03A=3b&B0`VWwG8L9Ktfo*y}N6JuvCdBrMDzv!suf z_E(eMnhXs>e)JR2#aG7AfTGoW3U}xjme?Qz_5rdH-%RsKe|>albJib#kCeus+Zt&m z9p>vJ47<%KCRbm_Al)}}3r^+PgkuxSfjPp~Z+Wr^knpRHaDDaYA+$e71(=-j$(lPD z?we*%!@RXQSYIPv#x|I|?-A2V2;2ALL72~y+2(LC>$vOm3bUKwhE!n_c9qdH?FgPs zhYQbhKuv4AE2y*m`?n8lZSk5-IEom(5i49uYa53S?LQzvR2pyY+t^&BwT;7v_8;8Z zr(j}EqcAn!U8C5y@9?1m2ls6k@8$X7!>62bt5Z)pseJp$(bH~o%Bd%vyy&5HexDuR zqMb4EKdlScq@P)k^hAv?HnS0*ZB<(v`!1LhdUvL6oF zFr9h(QB2|^;UL{)Qes0B8|}jAC?><{dHbj~&~&q-;WTa^9=fc!uq7o8_l3!zwGWSm znCWn=xNJh8GqhIS^pFjfDpL_rn&##;M zp(gb5IJ`Nup3ETeSRG*vL6{XZcMr>kh|N~1pvH6Hzq@pv*h z;pl+ry`Q16thd}UsXZ*c?qNoTFao@8;~9s;H8vrPMw4u9lN*T1r;`I=YnplK2~f5< z#C{u&^LWq+2Vs9U++0P;X#y!Gm^NtjhOIMhbJB_H+3AP3rdi9~9F`QXvMmZOAKE{| zs2XKrQ9p4hJRP1inGN&=bBhw`k$62ORUwbBz$T0=@_Y@5Ku+8)eiqg7;;ACL40`$n_TkrQV7 zMx&$SY}k*6{WX47kPX)*F8tNrjck~2ZVmB$HxVU%q=v8T5@tuP`@=PQv_4oHjq}k^ zw%n+{e;t1`pTe)T;p%W}dUXFL@hj$7ux^~~TODZ<9PFF!o3^&sM*Y>{jAN7^T!-J{ z#{jUMVI6{^i5?YHV>4RO!6J|L%}zOrFb~4%B%KnD-)xPhhZv{T(V#!vH`<~-OviXI z@-o^?prSX72kY7TJ_7lEYil;#8f61;LaMM22`r;$c#2wYm=vlr9&c@Jf>lM@*f@On z(2@Q73w+UU&SXmwX0>T^--$;LA1TYOZXeuNrY-wq|3N7v%I?wc0ao=Q9Xx1#*MsGo zC!TovX{Vij>Z#@1C*A7yXPkc9Q*W~kv|!ki@LDRoz7omC zu?`8ewqYsPh{H&D?b!K5&fB2sg9^q`U69g{4Q-7hx7d}B_?@=YsWNdvoxR-3 z&6%(k@@b9SNKN&X2psZt1|mN8N#Gj9aeS|r+nGaf6LO<@>cYNIEU0(1e{zPsA72lEJo2Lc`oz4^D@jhIH5uZtnM`f~lY_ z6V;lyq7ejcj-$P~J-ldtmJYqxR*q;9ZJw|iN`&Lb+BhBWZu8<$n+t6aMDT=73pPhU z_;B-O{K*8kmannSr`d6QjgO*fSf~3Ejfo7DT25OM1dHlH*})aepuHAO1_b2^;2;EC z{`vhWNOl~Ce{t|GUUe?0OmK1svJ^CV@|Q@pw-s7ScI+#pbE(YyFPUbaY>o${51De9 zOlBd+T&}&Xr8U>Q5VO6#PuKevEn0}(*)>?~>tD2ZK0J^491}6v34XlGTL4=tm5Gn3 z;N%*6@IhyvFB0b?Ju<0mI+yNnxfUw8P??3o1;gMQ8(Y8WChB^&iEtdQF5=Hc@HkGR zA4?*fdtLZp!x87C+QB;Gnl}=&d4f%acsh^{d9`S`4Pr8O*ZrPaZ=f-tVOQE_YqIAt zFay}a^Eak&Y!PQV{Qk*8fZbD@t8MT*b2tZs zb%sA=gMz)GP$<;mz&3uZ*gnU>75ozMH2?f*7Wc5N&Z7uZH@~Ps`Ug1c0Ipp8#y}%R z0REWH_%9wxTyQKT;xGNh{0S8M+%Jh2dGW;CWXB)0N?sdJ*KvOaK)vx7s^z~Dd1|%% zSJKs$u5GD6qt?KGHgCOFi@j|8YHI7+Qv4TanP?z{B3IS=YqeM)9gAwHh1S@B_xv>Y9Ss4;l7XJ?WYb`KHiC`7bl`lg znbUY%At*-t!6t4ZR33pN{zVWw*e4y}5DUGu(1@IX*B$d?m4q1VUuxiVAkbJ7t7~fu zhZ?!t z!~$_dFC=ZHmV&Mcf6WOE8lyP8O7(`si*>HQF^J>cxuo6&fyZAP346i_p0)+Ug}8>= zXj&j2%%;J$ptSP`>`jP;HCLb^Q14GQrSp+cs>+r@sUUWPQSea6g8~;e$s&*{KyoI>c@;V|7&T1Z)Z!(Ld@>&p~2!%U*AIPMZHUx3|-PUFdsaEeUuj2wK769 zinTCS*b6*Qs|u+{e_6Y(rGgc%3AxF^>VYl#O#ndG8)Gy)B3#9tqX`l8|b z2sT*!&Q4zEW33SJwPHz(?RYrXHw<86S{bbB$K$aLZvQ}iuBoawYR8$XaHLABZ*TBM zs@pNULza%losieP-QC^wr8VE8IE!_x*39Kv_!ntm#vYBuN}bV($sio&Mv0bG43Q`o zUyEu<5Op#T_m%##@m!QcmVT*7=`Rz>Mfi;$r9XSK=C{Yd-2zVhRRwB-&Kv^dBCSA6 zl>g%O{Krd@U=vgX_{&7j|1D~j!Ul%8lf6q@&rn(}YURJEcJV$7D`P#2yZ**6lFS5K zB35TOB6}p5kH-^<{(%V8$svCTk7jf9zx?r{1){XO7d?YRifC&bz`&9-7l(d2mh|UZ z(Q9Gu%|y4`k@7n=9W`r-4z#7C@nBQ9x*^;U%0yc-sc-}*vV2~gUhqb$@W1ZTp<>>@ zvbQZ6aM)X-=j$BiR$kPZiKZekKQ~d>Ye(QzWGIn~uun^rLvXuuD=#!6ClK^xBB^XD z8u7A!sez&C(cIaF#fu@$KtJV$?1)EzgtS=sjh8rW{W(~7uG#>@Y_&i#{9}Tv(MY92| z1=C8TQRBC{b#_Jq=*(yiHEIs!V(}p60q~?)s4EXaIG93v46T`gULzjt&O1sig(Bmxvl(0Y-keOIYaWwZ`(ac@Yi!Fd z9bh7^M;j!=kxYvtmh8!eQJZim+7WMSiN!Ri3L`Nm4rusr93$$DHAeFOLR&IksByGq zqir#NgjHQgqz!GgpfFBimo(d)OqMuMJl@vY+Qu32uTbb+yjbt*VwD;HaDp2LKs?ZV z@UOMKIMCZy3K@x{J9@w%OTUs&S5GX4g(WgYqej}$)}>!hPjNu+?^(1EvshfUa>c4; z%NAk}Em^mA5aDTI|tb$4`k3}TaN zzJd#tStwjG1HN&?z$;$jpE?f@33>YUO1rW``LObY@@?hclowT}`d)RvdXIWQ{j~Z8bwd3& z^?Ab;hOLI14S({!$NRs0H4s?_ean59`_}t5`o?^B_>TCF`@ZM#qSh=yrcc@J8mVy>HvbC=Fe&VFn5@a!jl`ir05cKR2mPoMtj>8aB% zoqqB3snb6`{iD+-Pyg5HADljM`g^DU^YjaI*4h7=eVu4ZpX!=3{3J0oH}(3|A71|I zPhb7%&rdf`UHj8JUtT-4XKKwY1uvSL`c0{6<5G4rLFWzx)fV-#mZ&7q-vf{!!q#bT3^Wf&Cxk{r}a= zHrh;^XtfMpy8fSIcD!j2{hTY-QnZ71(v4!L*ez}rSBbY8K4`etaKP|k!+nO28veoX zG4)}?{f18%K52N+@F~MV!{-eT8$K*nf*ME3q~KlV#0?_H=DAe)UYWmJFfZ`D$Xbf2 zl7WmE$7WD{8Cj{ED$wUPvXg_HR7KU~q8h5DI&xDzHBckQe-nAhM;iGlKtT#om?9LV z7{w_;NlHG4#h3pw}&^&!^}heTELvBXpR)Mo-W; z=t=q(C}NWS1-<^S^b|c!&(OE&-{{}zS@5jq=s)N`=>_^eouD7kf1wZFPj}Ee=v{Op z-AiAm_t9N+3w?;*Ej~}5rpLr*=^pWrco@9yfcUuhqn-$l`UE{l6Lc-zN;lDN+C?|eb#y&_SA2nfM7N3S=t{bV_J~Ks zmq7s^rmeJ{-b$aO&(Q<)dHO6pOkbcc(nIuR`U-0JPxLr_m5zuCx{7Y5{ot%uimmh! zv0ZEvSLnT?>(;JWjp^djT^wdY<9J)(bx}wi zA>Z;BA@x#7{ai@l(0ZsRozez_+Qf6kpmtPjSTzd!2a3V<+Qb=YUoP#2h`g!9jo*(L z+Ms)9QJWCs+Tg^{Ej#xQju+D@ak$(%5FFTUO{eIvwH(%R*d}7ZU57<%v5*!eHrRDo zAxkA^JE4XLw``kOxoUK<2vyE{=|%%GtqIe>gjuGgT{VF+)BCl2JUnO9Nj3tYC$yO_d`-xGUs70)%(1bThG$p~db2~j`4pUd+8qdHxQn~A-vMoae^ zUD^03>DlD^31yspCKr5a*0Imt1)p=#$Af6u!QkNd{QoUG-4lDS)Y2*Rto#p87{c(^ zCe+CIm0NeRxn=wQU=cM$ThiLm3B3r5zGc2K2M_162)|_`%d%_&HXroG_x}JLr4%!ed!Tuh2I3`S`Tkg^R9&J=K(n2ugG9Q9%7o~$6H9Rnk z$S@IgV7So_;+DU^Q>4aH1yGC$%egWcPzdAsGL`cAn?);y<^sjF!R^Hh3V2bXxRC{% zPwmaisc>7&HwKDe;qDyfI;2wy>>9i+6AJ1nowyg>+61lCMuXdf>w};nedQ>34!5=J z-(_op%T{d|mAySrC2KFbEBSYv^P9I#C<7qCp``3o?o)YxiM&5|JNy^kOBTGf{g&Xe zHTyZ|;CzCl?O!rMAXy#5wWF$~l%W^`rwk5l32F{)X#bX@b9=Ace^}S|?;0H6*@bbi zKe%Mu{@|L?9(1N0_;)nk#@ScVGO=uJe>w%`(|x2nr8B8Ng1LosixC*kvF6cjS{f#i_Gs=64A>UoVyWiF3dzaPgyR*2> zw-?agDc*Uj!>7MPykn2UcL%HoZx^@2YJaoZBEcUmFhFkjMzTJp; zBe1J~o9}wyI^ZhY?*O&~TY)XWdf;+k9k2#i1&jbofni_>prROIw|rP$x- z8|bU^QNNh#pXpcnVXsoQ`6?5Zb;g9U&H%eTVOv+8u&y&FOzT8~)_sd!ra4l}5JW|g z>lLwf%~3&*)e56HDh@0=YMxuYY{If~w_)SxVIe-a{yiV~ z0QEO5n`l}yI&rXR{j!O@uu#+CTIye)OwvusB>qc3k-TX)B}H=g&6{sZ65Ip=Tx7`G z%{Re&H~tWj4f(riHzy-@BgF2TlkUx=7^y;eoE!|u6L?eb+>DBETeCSgG&jgL`2BzR z>w~P<14)k{<&iYm&M5u*VDKGF%{>6$U-;wuOMt)j=adKF!?8-g4oHa`AYm?s)VLCI zXFKPu{9O4hB-5B!v=Hq7N9Gu0<+Zd@!Mb+t_o{%bzwqPUxDe0c{xqmzl*kA=F&_lE zgn(_p6j9|$A{*RnuM*i?fSte*A_u}cHvuo;i|M=YHO;d`wSapqQ3KLym?ZMugE!j1 z&%X~q8Udsmz|`;J0`i~I+X#^7jb zrLPl>Ag$%7&kE$Tl89E_N3>_GgTaJ%XWqN~S=uH6HmY}X;5>mC7~CAz){oF>{8 zBD%={ApA}6zZvGu2!Hb=a1xjyx@81_+bxHP-qu32rwHrmP4uo9(LNnGLUhkQq7R@if{^ zL=VS+QQ#f`{tr(ReZd7F%`YO2FA;z=zJxTsgfzZ1N%V*XI6^dWKY%hE_5djB;j>u! zhln0SJsy7;K>Wv%$5-L@)e+!!;2_c0$BCXq*`7qYPa^Lp_W~2ZDJT};{>>DyiRfQ@ zfNj75;3zN!wF2@!-a+(~gXrIM;2PjQ;0fSWqJMW0eFuKuf!}xF_Z_%@XPW3)xIK?F zUswwuzZX!x7fuoura%rrIsWr5;1S>y(RaszT}0oT1ZId%xPf5+ZYK@`&k%iog6O0J z(1D!*%5f6;ot!56A>4o11EBmr+y@}+50UPVEWjb6A3p=UMs&&p32Y};5FCy=k zLcmI3FK_^O7?>n_8TOZt0#nfSAg!rUU?*@tfcpQ$1;GB3vqV4D0p$Nvr2Df8u$hxY zKQ{m=U@dSvfOLQU0?{uBfcrGk`sFnM()i^hfHZ%FG=DV=ApEZ$0Zss~6TN~mzJhdK zf%_{+=M|*$3fy0f5&Z_{|3W&i9Vhz3F5n>W8qps|iOwRev%7%@fMdg6ezS0&h5IbrXW>4J{O48zxSvCQb4Yt`2J+G#;3Q-# z=v74ucmz00LYXF^?j~Uv1@-|)fzu?64xk9^0UicUkTCU-Fprb4oFZXGI^{4cCP;u6 z3+Dmg5P1Bxi>;_&S(G&yr0MC%{h5)#0uaXFO0HhU!8ASNtD6kW_ zokVCQiAWD{3P4$7NISL-fM4Q1;1S?B0RII1lNA8cNFrQv6L1ZHu*rLX2Y^R_CxB;x zQ^2dh>m*VYfCoqcJ-`UC3AhHh9k>TTd!&v4D1Yh{Fhe430NeoLrFCE}uosvnkwKj@ z2%kauGADr3z-uJ3h?8{zA)o~)0&9V7z;56!;6C6Ga1=n>WszR?brQ|UqcBXO1#w!@ zPHlTgw7*KC6K41QBo?8pi%{0ZXG!QpqR&I3*aI9SF?5Q=@UtYAY$CA?>0OHQfegh; zxUWKbt6wLv7U9-yBe5QNYy8z6Ur8Op*8q;(TN`iTiW__a99G4*SJRX@L@lOc*Ps70NzyxrL z#Fvrwmpg!Kfct?-0OkEk3>XFW0!M&p5)&=}WqcHA9=QiNO5$;Z{VM#9Z6omwr1K== zeG}on`8tVj!Tzn4Bqkpw@vja5<@wixz-bc4H2~#4z8jbX5dJBIf9iG;-?otWHzM)x zNb}hi63?9^f%#0F*h%8QDgd~jM14-7%rBxGFT?!FeI$PN0*TX80Q`P|FuyF4_!Z*4 zvWdhQ1BqXUNX#I;-y)6Q9U$?0`2P`Zf4rZ>S(Ncl6D0oU6p25dCh>-W#OyZgeTSF@H#2>ZKOD1uX+Z6e>ME8r-8GixGaDh7za=W*IwWNDK*Ha zZY_Ygb(5sH?*rfl{;M>MkkSZu58^c)A;q_n6zv6Iij=@fQbHQAiIi{)P$VUCoRk>S zilhAT1EeJGCnbrpq*3lPn~0M^oJEe4LaONMq#@QdV0?S&KNA9|TTgc@hKm0;tCZD&dk_aOXxSCVpf2Pym3 zlJdSBDf^KRc$;$1K~g^WFe&%K?<25(WCA!v%6%46K8mzHhIrsN%E#{`wu+ z5^+CymXrtK{wc)$^l?%?3;Q9sA3{2Z#sP#s1ouNHfYYRW&IR-UDAVVV&gTvQ@c$gr z`FsjMoX;c9=MMo#NO=hPKZJ5Vv<-m!L(c#R`!L+UfONjF3qX0laDtRC!tIMl^NSOt zeCY|`RZMI8+yhLK0zRWWdOs;&eSwsthmB2W#3)oA_6DI+r_XNuF&4&S`|IKGe`4-}S>k;4y;8{{8QIAQ~V-o33qKuQL zN%?1#>$riGr}mKYZIt7gQ>1(c={#>C<%Jk9L&|p%=X)K%Fe%?J0&9V7r2N^$0U+&Hklw4uNjWn`%C9Q`9oP*#44fk6 zH#q=l{1)l{ZXYm7%KrjhL)rd-{2|vWe?a^{An!lAfnfmde|!W${IkgSEbjk=wEu*> z{{*-HxdyloKsx_3L&~2+z$k$9|9p~^*INLDef)JhFl3+w}ql4`R6y8y(u0}jM>z|V06I8CY(c{oRay#U-G6RTAS zUv&_8fz;}0Qfr9RS^x+9RX5@`AWlOOxCXc%m;_!Wwb2FW0Nfkl-U#wY6PM;t(Qvsl?kV)0t zU8FYOLu&p$Qd>f#wmtzMy*3wciqv+*>Ck`?0O2~00;fssgnwrdfPd#T0MhMxnAC0$ zsXa)iXB@Z-cmhE9MQ~pPw?&TtsN3QmU@fVb6I2~>`%%_@-1pxOOp!W(vBmZPs=Ne<=5i{`Lw*sWOWg|2;dExlM9ZwaK?lE;|>QmL4O8L>zd z@RI0YAkx~>R>;>rqMFPGZ&~?}3(w6rF~n=hWkdb`f%jha&u`pPhZp|>M0`?Ztzr@_ z%2}Kwu+sf-GQs4sWpUYzvNe)V)aa95OC>G$TCB9ZNvU*|c^VzAvKqWFv#hGYS#7m9 zI`GO+rLx*uu2xiAEh^rmWi2!L8Xa{euToiO!e?IG#@YsForxM9ZX-T|wcd$WW;+|q zYDJyNpjNnzLaB5cD-~ruBCBcz;e8B>y~0sQY$l=@@TIydu}iojW^kPU%e+TJFi=(g=BZd26f;{*G!~ zv?^NOd~|O5u^L*QJ32R|m%);;)Z&8px(#<}zDqgy0y^U)lbp0$n$x4jI0H zl5=%R5MD>>kTWbupjKLB0&tkt{YW9`)6oXLy-k{_e23mSH&JD$up z=Xk5>@BFYCg`Y9lni0`INFZ)O{MinV@KMvYF&5s5`502zvF|hNSi-2Q1EVAb?u#^v9beST{Jry zBQ^e%zuso854VPwuBv$3ZsD}Ho2z$t@Q$7eTT`MZIdqwc$VlCDzf}#&ahzE4;nYzt z4T$d^qkgnHH+ZjBjgIM-*G_cL5x#9@V#%^C@35BRs)16PEokXx4WylBTbgYt>78Ql z82X3_59Txz9?Yr7;2uRMGM&PldJIvxQ~4gIya)Zx9N|o0kr8|_Who@d;uW7XQZI{F zBd=BS`M{L} z-T#r;E~G<|6qsj%feh$vu~Nu;6?01@7%<@#U4?vG^}Jine3*9W+A2d-7er9(a3|Wl z-nN8$!R+Q&!Z99Ma9J?V`84;>-rTP^Qv>O`y7WM5!R#Cy>;z_?U2s@1=RL&9Hm z&d>c(c?W1RjdO38sE;0_77S=7$flXceqByvEnr7rgJ+qh67x(gg1$XcUO^+UoYd3k zBrR8giyL7y?!9_uUG)~+x-A?IuRsEKv%ts1G0I>OoWUhbB**~f6!X_1&ItE|FeM}G zbAx9uV#eJy9~9=ykvcbxNCz-6jFuUW19O_wU{kljqt%VORvuiEw|Q}w=Gr73%+WdF zgqx{4VX@J2)MVx{6dLCAks7c#SWZ5MfH0ro@e}5vApp!$09fSQAWhVTJ$S&uJj)UM zTu@GlEsr4pOc_996QzPFXAXIfoM5795YuD9rC~mqdQOJfJ}gr_VBH*j!9=pS$0UXr z_;>^@ujZDsqL%%uygjR8gNUt{q2_}{%TPm}J+tu4v&dAI7kN)*ODbKow4@q6l|v0f z4K1mmRLlB?Ay>mtOGC4#GAA$roz)XO6S=|7ZJtWIsmd(OMT^};MN3XpdWx1xOL4uY z67S6}dh95jZbwMF$cgnPy9=Lx$J{4-8Qn0g*Vxe?Igv{>cnsd1CZU=vF{}6J+@#(O zs)*^JnZ}s##=NmwtGdddS5(r-)dpecwhHU8bxEUDR9J;Yu`cl~5$$Vghw*VZ*}*g1 zq_U&!=uVR*XE!(-tcBT3X?MFSF7} zCR66F<67489lvB#uL8@kYv9WGUZM)GBkTan)K}rA8p?Ry*Q>liF@iVLHVp^y>?_~! z?5~%>ArL5QPJ_1~O&0y!c$rff;cfM*!GIK-VnNEjn1AuPJR~}&{L2=eOXjg7_iWyc z%5eo9FV;VoOu9>kvjArV#HBemCZq(Wf*?_K6|~B7S{>xG0@Es7&;`N}X!myD&9?Xi zC1hJ$hu!1xIkPLWHSQSR_G>U3)uL)N8}M*i%w3aRA*KTzvA8Q7j@H!RAu(6ng{Q;u z(PDd_1z(@Cx)bpv9xaI{+*W)9+R_I$A*cgm@pYvZ>&k#`H>&0#g{&1uRV*zpGgJ1d z$v2*w>TVi{8tYz=li)%6tq#iAenu;WKRlC;n~w*_aTuK*pozGgD3 ztE@JNeUgsPyoA{8_%7)Ap8kvo`f_#ELR?X1GcLX{Uz^&}g74WfO?hzOZC3PQcCObe z$mlRCMuiM?BgE)4D9rbtNBdQy7@nX0RP^p-ZDlO7A#ezvik(0P0pfFQuuTWel zp}+#(fU`P0ik`+Fi%aKNU~>+vsxBxB$$qg;Kc-@9Sz-BC{0Xu~Ifld;z0!-Hj`zPtUb$^7%E_miqi^ z5X%X8$;0!u3960Pa$cw?Eex&p7_GBa%s;xdIkOp3rUN@7}v z6otj{6t^AB8D3SwJoy+T0GMZ4Ad>!&Poz8Mct})I$de|@3r;knUxt$UHB8}tH)I<> zJ_QTGi5J-#iz;|eA?9y9Sc-+U1p!?{0PbLWpb7DeC)?v|XpYv2 zOJ;8nf!026eLCP;)~V&g4W@v}mt7p${uZSyI;i(}>kEZux6-MUmuFWEFK%+Db8Xtt zB6O@NZN{4kwxWLqFvfn0{^=6`tyg3L#VgI9qDqf_0%3n_)`T2Fxj* zG+|2VRNiw};QnjeruB^igWwr`2u)S(MknCY)>z(Y=$=aM9(}if_ajuNZuoWl#)SRFwe3(Oc@dK@yugLk`*Mn zm-E7xB{0@mxHob(Miz&mh`=~U6g`U|j;-$uieNG#$95!VvqQ{JmX)=tTkT0-Qn4g^ z-1Tj(-IncED~NMSx5|ZpR$2vMp@UQ-8grBgS0NJdw&9DpG}1;pTJgm`tk>O~WNQwu zgx$e%`{T&7-U}{KNJ4`KS^^nWb=I@2f$85Z*?In)+9O*9`O|S?48!qF^cxq+emBSz z7YsaV>3M3x9QfYwZgn3r7dA8_n7;{EP zHThP$C3qz@C)KO%j8fkUC^=+ zLm;ro`Q9I9)|jvATRq-fyzDZ4_G!@-9PaC=KAqe1j$8AyJ*`hX(JI~^+PwWO8RnD2 z7>7SY{gd?KG4hp078W^EvK3&FYfYGPr6@@mtPdnJt+&8pW*%r}N{%{E`LM-VO(S8p zhAejI0(}mqGp_^Wg;y-ewc@ni2aA~()ehrUyT|8IJn6bEAmpkoga@{9ZatE+ZpVx2 zqB3%nw&Rg`5HSzSh`+LGy92Ex8J;9kNt@94^1|p0t41zTgq$PB_IcG>5N+kJ38IZI zCb!?@2V%~K{#}=uEGAWmjyYj4n3UzahJ#H#n|ihOq!&ci1R|@8wfbUus;;nZ#j;pu zbx&`XQwemf&ZkB?vlKAdj5na4=t(Uvy7#INZ;0f-J8r zgwv~00vGc`mj*_PcMe1NhQI7{SR{LuCOQ&q>m+L}n0@i&19O_$uQW^kGde!_hB;eG zFJ=urYvLpot_xzqlvD&$7G2(>$nqW~5j?a4NHV_FV0ZeQip7~O^KGS+r+x=oR1NK@ ztu*XVWv_ED%dzp&8L5Ol{^mUB{Ma~eE3KDQ^J2m3t`e(>w1WkiAnuk#987u3|MlyJ zMLSluSsO=^9hc^6-G$|?*WU2M%pmqWf?erwi)Oz>RDb8YmUctaqVXYHO|WYu5xulG z_Kz>t*zh68>{>nCnCjA2j+A5{mP39e`Ac4JG;ZOcuUN_)wk<>!GrlfTQD)q3Hb6AO z;vRb!S;zAj@1SE4H1?U8SX=RCM%DZkQ}ZQjqO%W*&jnTux0=>`{mUOt^>oGG_od0r z$Vi2H_P649m`{UvM)VSO_89p~LsrrYgpL~SM#wfWr}R!Z*jZ1BZy$q$@nuL(HA76J zgVH+4Dv3S|Geey<7dj8ZMMy$b3O~0G6{K)6ktv=CBvL%ZB++njjUiwwUgXk zK~Z2zf|Vx17v_ryQ>x!!p5=Jb9YxG?##~)kqz5~2*)t0sY~h??p4IO`!IQG3l5SKf z8AFwl8hn#6_#{{u#EYSE;aNGs%qz;x7>&U#%7LRX)IX|W+K)=k!2B`l#+oHg2I$N34$rDZzKgF4VY3|hF}UQ6b=qaB;Xe(br){S zxtit70Lo)5f|Mfx-HL`Oce8Y6!kc)VlZhkWX={!sNf7`Y&+Zq3cYRwC6kxgmm9VS*Bm6)D@3H=(& zW-RZEhUOKWK9@h~UX=2-E={$JG~=_fvFf2tU&qQT{jCFmLPu4&J&gaV+3CuV-jZpv z`|=@w-tV+~3WM=rXF6EvU7bq~H8=Y5dcfbF4pewI8wiyYg|EyB$zjQ=Vrk(kIQ*;3zo;cMQw9{;_<=SQg<^a<7tEUZJ_I) z(z`$|Q67C!9%%t7VFw(nG!IBA!XE>%`8z-h{usOZI}p~-v>`7M!|fU&F#kz~oQ2Zytt(Wa&Nzkhf(g-x2~n>5&QFMA z$Hz)!$=i-lxbko80{Oe-a^bZ^E&{9lD5RtI^D0@a_sr13o+k<@8O5)jnN<3(TU99g ztC>-V^Hbwz{_}fn-rlXHi7_7GiSfrZwu;(?iP5(L6C=(jNIekrMG?Fk0gp%VReToi ztebjNy4%mYLr!hSv!Abv-{UO9Mm=pXnxJPg-Dxzqj0TgDpT5T%Rqj+&mx9MLjZ)KS zwCH5s3xyQbXPhpSUXcvrTY>w8w8)vR(SBS$dp*`4s zwCiX)iUPXqpa)Qf&m%801@$VEBA4(=nSm^Z8%@fMP@|6a(|s3lH*qdZ4|!W<{>`l0;PlUXs^qSOiMld|pq0E8TE;R( z8QVtZI~1lAgf2%ksfvL`?j*9Q$I;bmSV~#L+ORde5?sT*xQ03KYJBpCMpipqIR7y) z&j?{k0j+;tve3D7=xmr$p#pP;H7(K|ys&q^^e`nIqBgQP(u60HOCc70 zKn1wu*o`H@5cKTJgBJJ(**C~1gn}F+=zuT2%gk~fZXv-*Sq-LK{K1r4!Z2kELza`W zwUq79LNI6acc8>JmaFg*QYHbkOqrV(?G`Sbg|o4+m}OzXA4eZ}p}>PzVQF>Us`5-$ zU9xV_^isbta|Ifvpf35UsHO8PJF z$s{k&=84yFSxjFz#4tAIEb!T_ygb3h>dW&7Y;d^dOumynE*gFp&SU=%?B_@ESTY=l zT(B*PIS^k2#A%4qk(~3IaJlQYuz9(#l#F7!TKGs`=*ruJ1W zx#f6kZy;H3O|988viuzz^6lgA9_bn=H#=8mF8}yV1N!wJUAyuFZ(ZbR?*C07QD;ys zAuZA!bJa##x@s#c+>PyPJF}}71)XKHKaK{HeM`K3x2$h%-u%ANv3oXW%MIdZ*6JY_QBDZ@^}4&SY_ z2}Q-nENleHh`*t2^Hk%oUwK8Pr4lcrlk1t>T@rS-~jk4piM|bRal-I}`=Ke?NRlb3m$Eic4^vwkxRRtb%*jmMf1xR_~ zAkVjXUYlmvmSJ03!#U28G)GCZe3#~N5MjM>fRAnj@MU92n=DcWhx*h8&?GJHCUi zSlnIEqOS%zJVn!<&W_gM^7wEfQC&@@a>e5tHgc!rS+C0~UDoDeLi_Kq*|D(Lk-1}Ia`C+m*p$7Kb$s`S}m-eXL!>{c5^*?7~eKU zH!`KvFtfy=NRW#>RE8vB%1r>i*CUvA%p6d$fQ>86i$8jORJezXw?$a| z`YJ*?s+U3nlZpp6^(MI4t*XYvs!5KlH7)f!Dp^^GqY1rv7FCk-N_=!P9~j#_2JQV{ z^Uw3#k9&V%)yREZI(4|P`Nu3z6}JuCw63{zba!u5&jreA>z8--ZRz*>^|7A*^>x+e zKugh{+jRHkm*2f9Yqi@=-S(!`%IgLOufH^b&+{1Z1yGiuc?|Bw7H4=%8>{`~= zY!VyS-!+;lD^nh@mZe7Tnth)z#Ye6!7OxqJJf<9mb}2NnOFZaSU_r{}VV`j$`Zi)L&^)vOye}JtAVWC&gQo$Gd;q zHT!C}T$dmZ@pI%+MlE`i$*%fT#iEu|xiD}pR?D!-B+Aa^!8&)Dg`}~Ive+QrKYL6B zW?w?`uXWEpF30QdluKDh$*T=78Xp7BJ1--_oZ(eHlrLvlK`u>n9g8X~LrMM#cXRbc&jMV9)n_G3g*<__yr$kaRxUO ziyRfMZm)>Hj5@)M~6Cbgp5ePD1=G?Cqo|7%S4Pl9azy8qjON(;WEPiPg zKQaqm>hYoj=CtmUt5OAs4G7=ER0 z7`q{S!G0x<&9*uV;()7p)uK>O#)o6VjiFS-@+HL|<=6EFE2~_Vc1yLxy6Q@CV!nNs zqaGgm$7AHil*Q{MDHJdxWBOt?Hec9k-0N0&RLNa6Y$#6aUAR@5^{J(UFCcAu5l=@@ z(c|3(MPE^NSChwLHR6k&ie16JgJQOr7DP1eG)Mylw`}M9=`qI-&itU`BJSqTs8QL2 zEP(NjnXyh0fpwd=q>IJK*v6Ia)lI86Z45OH3=VW>?JaNFu(W>m3+UP>1M4@e_W0Iq zxZGdW+B-PZ?>X1k;xy`Pg!ZI*UcF^D6xBT@0~WD(sSdanlMwHEHs``no)nzo^z1Fg z?r!w{dnLUrfgtBb8Zr8{&L1Mh9LOV5;}+skT+Ju3&rj@O7R_WcqJ3Dl(i5<#?CP)A zcu%~(m~H57Ska(1ByRN7KwR=8~o!lfE9%svv1(>q7-yb`Z z?5uYjzX8Y5^4WUF3HO;_NVoaGsdV1PX@JBNnx0~1RntnMxe?yn#H}=a3+@u zSa9fdpsdc>e{^@Ex||h8YZlc#>9GJhIy=E6N?^STjIv zWri-yQEo1GjF8zyW(QtfRIIwSrrd&Q)KzV%Qk+V;VpYoUIrjOr!9u+yqqs2XHaP(Ka2ud0J*}z zh>!pl}OA0co4e#fDQNI+Q z6XiArzs2XsafzX>Qd)&jiX~s8noXF7_3^VWj860npoFk;)SM>TNg>elp0Rn zykdSKg;BW6d*lLB`a?LK(i7aooP^*c>WAjVGGCRoSh2@jy%b~1YN@g>#ly&@mEJkI zOfK*Kw!|vZnH~X6Mu(hn)sLVcJ8C;yp^aO3Cad(LvcV5bi+jM6$(`Qaz@QG>~!2=p{9Rzb) z(l^f9NrwvvALk`GC^l}el$NoiFo-sg8+u+)nVTPut7gi>H}&|!&u%!Gt79c6Rh<}S zc(?+g47@CpM<<)%#Iq{0oR;V8qda18$^=87ZGH|Z1wgd4luHpESuUKLkmkZ%0&_}- zbO*5zp6u+iQaV@4lAE~#^>TAoys$b;VU}~ z$wfjl^Ei#2=9)-%TFGsE@8y4MAYrWsf>@1lRFAg> z*6TG<9uD(c+T69=@KUTtD@m~)x2maOsjE)G1ZR;`8&7I1&T~hVbSq<}W%m!TDaZ2g zJkNWR-opMH&LZKV2sLV&ABfOBhA$k8N^JFjqtMn;wWOxGkgL+PT^N+{58XRE9qFvz zoL##(6zWy@0X~qcsVVSQhj}cl~lEVU!p?`w8u~kv| zIVyQ@14?mutfv4|o`Qfy?)I<)w>jVAoFQw(SS5m8SE;9hDc5bh3(LE)Qf&@8hbfih zJg#MWu*lH|Q)>IA2d5-Guu==pA69@VXFQn5unGst0zAazER5cPIjxsrOw}0VHUkz)uJbA;6T zWSAe|5Wbw9&$42l%gm3LF*VH#c~XN=&G!gg($645IkSHw>mN*3f7lfEk62AEtI2Pb zmGXn&t>MZVwHSMQyRUt&UCDWimAAEpt&V0|noE{3lhMnNU~T=<8iy(uiqPmVd37>Z zc$(+Yh6yeg7r3MDBTrZzsXYRDC=~&E1Ob2 zErkzNIRlyg+~&oRjGQZ$m)hS-mBc!jkGR@47dtu)zj0w#*$W(n? zScot6yj3Q3>lkaSuF+!{*G^UoI(Ry<%jdprJmPH}RGuuUWOXdMRj$3uI8qtH8>E2C zuDFr&33?LdS$!Wyx~0roVXnYJr~*6qBjyU1xq@Pjm|}^U)lfJRj0F4|K5OK~*D~F1 zm?QXNZBrAT=cui#s)P4PRh_G<&SrO3RaRl&zY>a&k*Z2p6)a+xI*I34CaXjhK8)v8 zniMq{bX)516k~=!1RLDE;N)l4dC7^{$%!Q=chQUP z7ss9(yWw1Sl=fooHp(3uxdww>J~7BQ^E)-tz;?~WJz4UU57C@wC?%V~>Xg^2&>L{q z&KtargR6KYwB8&{8h;lU5|Trbp5W2`rVru#t$b@ckZdu1IgR`YICjS1%h;X=sL)eWzJSFwN zX?yedxUTwc_?~+;`@Zj*8I49Wn$bEVS&}77S6*aAkz*^4BRh$*$7u*53kifQBs3vm zX$f6`K=~9XWh->yX%-B9!L%dz!lJ; z1u!cC4tyX$vO7qjycAj(o`8_@7pMOs0gkSE z3kSpSx$D=iXcV>0^Xq03n73Fvgs1TQ3Ma#{z1Gp!{p%Q|Rskyc0qF>p`EL=yOb)GiyGA0UuX_BkT!V(h03a&n2RsxE7v|>K?~DT)c@- zNVOe%oa~Y{*s`V-L@N-Nk51cYhO1VSGxKMkHJersu6D+^%q=c#%dWm%J*K}oyXTT? zuY29#WV3$tb#J)p{5(bJ7{e>!pEdyhG_e*^c9)Ao(y;_YIU4a_`OV+@t#2BE#>*dWoaW;;Yjzt1MI!Gr#L*2R7`(=~8{$h{8M;lw2)F#) zo_(d8Tit-`e!^7ywiR-rMa<~F6<+SNe+dhZBkH$>Wy~9|7&w~3% zAQB3YZ1eBgze5e<$_Br2S}mxbW6bT^>&@7Eo$4;9y40y=oM=7hED&XLuk>Q4**F)l zZn7N^J1tr=*$+t1H8}ltAl;5VY-3QDCsWTLdJ6{TF$+I1fI_LQx1=+AQZvR zhd=w-;lDD~m9V2({Z?8np--oNg>nD!sk;D5-G8a=)BTv>;UP|>P5pG$`!-l$Da0|~ zi2y$~)H!H|41!Xfw4q*wHPWI+dJa$nLBKq4~Gm>yrUiXK^&l}CG zrev8RH2{EQb1sUK`#P55cTVId)X1oJsW{%@Sgs?*nxQQxvi6bT<WJbA@&e+BzPwc^rvqF;`7`)W7DMFa`Lc;c(i* zl`Va>sY=+e+4MrD*_#U5Ccr~-+|NJtQ#}aHMHtrdA2qWX+F@Gy!~%~5yd`9V35`c? zfg_0##A1F?EZA%qcrgazfmx;mD7DvlR~fqK_mcg;I8qoMV&m{GkY16=gg|mdbdJEXt$iG@dm0I-P`>PCgAA5=JTFS_NG^ z2sK|efF!)SGgpl6wY|0A4=wxLDw|r)0R&lA4lPaXYbm|kgvz?QTO8;m_z5kd#l8nY zjW60#C{FJmtDO}MMH{vA4@CQSHfs|;e|VRtXXh1DTdth1_&wup@AU@?{;pwZzbDHGJ^Ap~*nd9WKvZIWu|1 zd^P7&aqsF!96`UUYhqXZ;B_u26FDY7Q$NJ|N<;JeK6<8D5{4oNgFC0d#f8O!QWlGp z7zYdz3^i~gMe$scUyt>5Lj12u-btt@nr?`IK_q`zVkjk^4~9)78YpFjfq=7Gv$SSx z4MZRKYyf!1s%@R&y|83z$r`ctED<}54yXpk0wlv|cA{1^7zH&LaUe`5N^v|!d7KuD=%UE8IMX~QF=|%u#>`U0a~CqVtCDv~duw-? zy$A=EAV=Lef9lsq#8ZE5Z zxRou)?HH@fEY&Z$QK{AU8T&6Co%VbEyGFKOI-OP5>+@SnW4+J}8r!ehUcBRN&YuK%N9xgNPQ`%?A zGUI`n0mtAI>A#ag9(bl;?>Yn&)_FgTZ>xwubA{lnBDfpbjx7jaUV}xE3Q~6%6{E7K z+>eT2ElQggFHw?{v+d+M6^*t;n<@-r_cv#nmo&fKG?3}Hcdz@cjdX4~755jrm%{-y zJg}_sVJ%<-E$7f?E?%*Gde?1OnuAS>7}kZ7>x*G+d6YL|Xc|H?A^@X)P|a0dXa|&?x@7y< z#XBky*J}0VD+2CGPjKh?>T@<%ZuG3a=2-&>LMV8N>*a@7FDdP}O>c;hF(_jS)?A<} zN-=BYxftTg4QmNm4y;&9C*%$ee({hvDRO#blP-Dg%=~%gD;Zr+EvY-wDZ9^}j4T^= zrF1MXjIkwUvi1|U)A}eifrMLFnG4L4sXIdF&la{8r}hj*W*HYDRO!le=r4O$|I_R1 zn%O_P`p?Qcwm1X^(W$R)lQlPo-%slQ02&m^a5E6Pvjed>^gDtMpTVGwGc$vaVLvxc zHedzO1aGi0B*q73X9L-2G|T_G?Zb&oCV~HG5b{%#@nY`Ipm(Xmh(b(EXIk1f;^0sUs ztDyhJ{Uz^`{|*egLZo%fSR9nV6A#ViQF#2{`wMBQg`^ZvR76Rh)6TMDx#X`$eZVil}EtVJ=;IG*3RV@qsT za?7@DowKv4>6!89If>0P(<&9)x@)Psx@-G*Wc6jP$Y^rfoJu68W~aGcl(z5G|Iz*x zzAt3gm~&`rY1>Z%XDuPAqr!1M_YK0E7F~ zeT)qwdOX3Um<|w*VpoAu0y<)zgk}I%KWyfKbi1jg6-)Xww|6>-5Rr>%G0G*#CL1UG z5K6QubcVEzIY%if36=sa@RBF^07?-Cp%g|6r6@g69%)w;7Z<63Q9^m#?B?FG05}CD z4tB>uJ4c5=F9{upZi|u~rD#Ru99=dXepTF?*%F`<+e-M0OV&YYp zwf1t9vV{kP_ke&_7?2I14(3JeGiZ!U=jT=yF7LDD`X;+4&#L-CA2zC;!`%s+%QfrD zHfw{ku37bxGdj_M;I^fi{Ud~h&9jG7o?x&eJ=?wdPu8isV|8R}y*@V;PUyUG_*2 zWHQI94eZYpzPH)0)4%ufos+u<)<^AL#)vA&)q^I(Q1OCUZ*4l$A*W3ylmu;kX$RKC{5znEX=W%O$`zAEM-fOIi+O zB@W}3lTZz91A_n=9+omZqCdt1pw3@3XYqu$im&tvEAJInUUsB= zZ)O9J9t}JEw9(153_6~`0dyQZIVEY zRC+2OIGszHJ)MbKA&*pS@kl4%rhl%@MC}96_3UIIBiE41p!%7e{s5G;ta8c zdb}lAY z;X^n%ZqAW(A|@Q*-bH9mpcjeFSrwmsN)Rhl`BgY070yV-M8yhy>MJxtuTTNq&AH%Q z;y`c?FNiw3K#>Q<0#q}>sX(R>m`fbE1asj&_B(Wq0B$(27N^JemA9KW)|IZ^J7cyV86E9*K2X3&5^$Pf=+N znlX5+@vP;TKo79ftN=m&{7*tBvlVPYE2vOgdEH|EEWd@e?wWjyad`YJA8=A`q?){B z@8}MHz&kM(uXKik`TktzSS@|ch1=)7AtTx~I8g43btdBhZ>l&@oH-}#*ldrwBDq+s zGZFQAQ>EeZ+-ZDac*)YQq9E? z^MDTtc7#kORhWOF({S<=Mt#A2F`8EquPq@O=GaD{->6lhmS` z6$?A{49KkHQyW!w7TJFB3Zkm5DMXa0(js69*hP+_Z>F(q5rl(RL#Kn`ci~a%k@^Z zPMCA1?Y2^hBv*-0yhP{O+e^xi8Yw#@Om+{}rvycc(v2uek}MFNiRv9_2XipfkcbLo z?SK=hdZkjmrB+`_K7Zp)Pl9h_tX&|<8|ftldWs(*%gc~x)t03ufdB{+mZtQl5KT6HK<}=p+4@)l`7FtPfyWf zcJFI$2^34kfc#81_jT{^6ros%RJuB$rET1J%T0}*>)vwv=z}lcSX#c~x`~PFu2?SJ z`0|6Jx4-4}J&l`gz7cv!_$?p-8P;M-`;7VeM|Bmz{M)=ykI(LM$9#5&&ki3wzik3l z-7&w-hVuh{Thwp!N8|388)hYN8$RHUMcwXLAexUt0!z!7nau9YU6}_Umicz(RL0@9 zr=dc(`@x!WX4d%X)|fwzp`l@k=*8h%%5ft1EK?BB)&><(ZLtMc#%P29g>t2tK$-`O zgZ@RlueZy)t@nb#PcPp0j-8)~4Gr~2=Dc0K{Xfc?(-ZMsZ#Q3h{P7=Wx9(gl$0w#u z?n4Dx;osofyVb2`pVkuuO0-(-1PiYknSyXe1yparlH4jh>BM zz-yv6IiZwWsa)0;gEdbm>J0>=h$#&#p97&N&U^9*E#h$_0-arT0Gipb2|V@#HZ6)T z6!6~74b!c8OwS(ArJfEb#SWXXP z_3cG2e!sH5+jkf{NA`$iw4bftPWm9HI~sRSGG+H~(Tg z1(y9Ecyi*ze=BMRI^$OUZ$RZ{>}L;GnrEG6XDsl(M`< zmO$DL2f}p0T*Ats6R{l2u-nBNjC)BANHOt%Dm#=fniHtv=Z5mrmc&oxt-lJ`>8HrW zU!X7*w#jtiCp+Lvicp62MeKuCP#!lChXE=`%oaR@0K*lDf9Xq(0G@Ul>A65ApV6I} zqI=F$NC)Sj>=ClZ?exss=3;JbE~X8h{95p*^&3xq4ZE%#P!LSQnhO_PrExR2c*T zd8crm;b5l=JWO-vrHOD;5`#GJ^g?G=NgrVxF5l*eh;=L&xM~S7SI7 zHn~E=)0`cJ_nFiblgl|3u zfi6WH4Muo|TR*Cu7V>oCWXfbCya(eEH60~Nti+dJ47y><)iW|W!t7R-h_~%U>}Wdv zPAT<_=P`S-zJ0iVCLC~Ndj^uT7j7vzF1t_}D_6L>r}uA(mvR|@FgcY$WZks=$8Pn( zU?Jeo`bT?qj1)rd@ea4kQQdxFa}?L|h0)>t+bV|5Y1{1fbT+q@M`c}9PyMF$VZ@^M zXj#+WVROa+p8$NF-VPX`J;|ketPV@6v35lIDOLG!SJzM~qAqbyT-}Th?J0S{ldvu7 zy+ps9*RFp!NLJj!R5(Z%0$54{CIL?=t%pe(hF#HrFQYB_{q|feiZo=(VJ~#<%W1LX zax~;|xM8RVVIVnG{s#i1wG;Hs)VH@4s2F5RGuPISLg&orF_O5+(nEh>VgH&EY~`{I z>S){L7q=B*lUE&FQ%vJ?5DN`sqoy%7J=ztx;K1)6$@Mp!`l<0I#L!3VG#GSOw2*qU z+z-L0gYd9+>U#BA*yM!}7e5bno7vRN;N6HW?B8y>e0O`oE^VH&cfa1DwIj7)sME(9 z>649#iS)5FBJf|lq9FTYHj7c3{Ygdv1vk!&%klA#Pkvne!Rkxr-@kS1{pTy+#J~It z3H|naQ_%1CBPkpql$nU!4K+TzLQStDc(==+PP*n3?nJ~tAN4V*Ths`_ijloQARvkV z(+&dEK!4aF=~2V#QrYU!7R4U5dsSktgSD=)bNG9Y)j8Y5x7oXIvw!3IyfXD)f>X>R z!=D+!PDHpkyCf|bY(B=E5KljbEFM}tQW=A}-g()3@6G;(KA-=+-^*W$@kd^Oj;k=n z@KuMDdQ97{UnZKpLUK-BBEKux@Pcy=aOY=e$aH>zfMp*w`%C=U zBj<~($Qx&qR>0+*t#XbJhInV2v^XQbTiWeTthKvI+8Je&!~7YN^S*Yw^;Ub8R@u|O zQEE3OwlFr;!S)f#{org*2Rfy8c4&X)A=(Y38or0eK7gvg$8jCAUOl z8v)}hj}^EI1p`^;UtE`5|IhPc*?vvVEPXq3U;SA-C04s!OO5r~NwZW>yK=i+dx!xM z{=cWwn&{j1s`STXbYR>EM+6qu67x^fhUme0K-^Vq7ND8JOEMDI zGtKC*DQ>)Y6-Shpn*rR7kq(bZ6+rtFLT(e&iwO@7+N6M(W8qvVbXFj}E!Lh`%2I-$ zpp2G_UP_#U)Uq1F!BJ}Ic!3Y%nFIDRXPu#O0=)0(SDCc8L9)nz@fkeQ`!$zpL$M195l#@VKGA226xmJ zu&9pbEd+Q5EKq%+d|x)(pASN9kj?f%a&lR+uNa9G`;y6eF^Z_Uq(fGfP5l=zx1og} zQ83DHXT(sAT7wZ2AG3Jn&PNrP$PPa=- zB?D$Us}=+Hn3Tx6Jose&yU*8=uHkVyH8j2jLL~z62va>K{^9ZQSpOaKjZ63KNcx*ovltGc*Qhf*3HV71CcC-> za}ha&N&c1T+BDKv1^^wk04TD#0e=2i;OEvy5jMktC`*7MhaUy(ve`7pM(C+)cGG6u ztps{XB->++=bx`X#jIRbDzF)3r2@Hm^Ub{vK6v>T52gR%X>`b-Ei!!LLRk9^ZBpNT zNE-*s111N951k|4lqvv7L4qj23MK4gfrD*iF+0eFDe_!2z?~qNouFIeIG+VEjo_K& zl}G3!OTI|7@DMm1p?(M@Vu7P}AD`>1;;34s)j}B!igFSM!ee*iQ9@9ZC(K1OTOg~P zCn1q1=bR^Nn5A`YmPZ+h{gtsO6!Oq1^4KZL>QhwsCn?pp!pNe*hrD{&S95RFb=MYc zOK^+s?BCn<)+tci7?wydIJBIb+~-Z3!j_^BqJf8AR|W{>6EveodH5k0mOmK(!-AW5 zU^ej;#t??i7-uEPm2B9p&{JZQFILCVL?UP3w5bN$D?1?COoMTx1`%9_$|$4<92~p@ z3}ow1^7uh%C>FwWG5s2F4C4PV+u0f?)2{sM$~E}`wd%Bje1+BU#weO=8T^2l+P1{1 zGY znH*z3iVvG{9roiC=^5=F?K03a2{Q-^G@k45?$JB)yH!U7d$K-4vIb!1T*v|sgIHny z?!H$3ZV)lMyxNkLzFQ^j0qkpbzlp)MJg&|Thuv69 z+kNQE=ij%jxOMLAy81>tgfC|ATI7j70a#j5jzd}s3l8rTCkt*rC$(-)s#irJhbven z*3Q&tw%O;kXSynp$u39Vw&iB?!1jK}1HbL_jJf<* zU){H`sWW8X1O#AHzlAwh+HOpI5b=|{v_~F+%A*^}064szl)go&%8qi7B`a)!_6`Lq zV?b(3G(mDkW&+fvY)^zjPdmFEm$|!)%fdluSS3{jOEc^Ox8y5ja#tnvz*RxSc*l&% zJagtu4<#Szgw1gk;DPA)DFDLI2(NRjUjG)3pCv(v%kANk!9prX@V{caA1h8H2rcHi!~gomHym!L65j3!TzYBe*xCKHnM8PaM;`W=>h)u;$=kO~?D(C%-myy; zE**=7Jd^2Q@AjtbhjHzV$UC@={H_X{gW5!JLU&4m-`UQ7@I^54@8(5Ez~) zPq7dr=qXnQg`^@kAHz)4y7Hj$LaG|4U zSPqa9s@M<}N1B%O1Ew~9cV{vw*OU1~#)d_J7eR!}X6(JvLa(dIckzK{MhGP)`3^Oi zYN^2klCDAFJ#}kXyg;4m+b2Sw$4Q4WfrD(fU7ZxWIi@oQt?m4}SiOJ%b=ber2 zXtcZ0*(zmS=drG1fGM5Y7tKqwLJ&C;Gl^6z8i_}s7YO)Z1QQ4cyy3-29M{5yNIaL? zj@**A0J38RoZdx*GxIpThy?8PD4WxRR88|4BV$j_$6+9lkE;wq8b>;v5qS5~2tq_S z2<1#X)E44A|IA^_z?lsCx+V~m9B!OE{LC{?3Fq#-Gx#(WVrxnI&-(ftl`VM)15ODfo$bhzJdu_Fc zmk1q}ux3rtArMOAhfsGH4GR_tV&{nQae1piWl$_zD58eoMr^Stz@g@6geAZ_D5)c~ z(duRGGImC`fU|58yk(XGP4QBURdFrKpXcCG&aH*^sroS&c))P7?jWAEi%~lbk@u3K zJC`O&=W>IdOM&^hgAa{X++ z9-q0u5-*Vw&!Lq2XSF^IrO;ARVgTk_*HMZoHcCs}&jXT>kbr?}$2P@5TO=lwqMYNK zP)hne46wL)Nr`We0k;NTT<&l#Va?<^K2OduI@?-bG>iMDn=<%W8ts{!Oc%ZYc0Lk< z9#KJXHp8=NRv541beuCXPOPwr&08}k-NOuux?&j3OOW|tP87iuXQ{tc8>K`SKq*m4 zq(tLV;_Fc!=Q@A@Plg92D0aNKkGc(|EDqR;{q#jrX}letzmzOFs6kQ1uDc7+={bQRn5}&a~5Jy?qJ!`D4`?5{lds%%{QBHj0ug;R>#_; z{d>n$dMrH_-hIQMiJF7^w%-swFL29ZA9rKlEwhQ)#gUGjX574GbFus8Le2`65A+YB zKKT85@cW>jKnT<=$tNr#tX$y4ON^HP|4*d+HLUlV2QA92WvOv`HIX-1k-}T?$bc9@ zFt6)Ln8zB#GbAn+5+(YK0OnhXits#;Ed9ji)8=G)pcM7zhr3EMgV{*76zI$ySe}}L zz1U1+*c_cMPB%J(nNqk|zV?EtvlE~7#B8O3M0Hc%9e4EfrfZ{FPsAN7Bw~eh92TAB zP1WpRciI(imbdPT*hig_O09Pw;z^drYpK4ToI5&Io?nP~)Jq+Rx-wqN^<-mi!)Zj! z5@MmzEDU_ZxPBva3x6kkL+>HY3xY2~Ri8I(H(A=Xq$>s+1CYZI%7Cso_9Qgv8(D>f z_}E!v^84v%G|m5?Yai$zi>K4^4gbO4FCf0ri@-%WZCKl3gbryrEZg=*v`PtEg$;Rx zSOzOmHmcB_ShFZ4CmcA26J`?+_{Fvnj*ZyNRX$L_rh=@NN7yH6uFn)VHB5-W~3=JVXoe4e29ECJCEvTUxIihH z9#Nh!6ZjmTJI$|76CtGwoRBof#oUBe6AM~~_&&oL8Iy~l3V@awlBq?j85*QznBFQw ze4o)UUhq6ZuQkqs8_aWQjNo*Pa+fg<#h8r3*h0TSoJn+sQb4VoqXx?3kJ6oRcA-RR zHerDEE2JTb=rynqe4)#iTxurhr3Hi3F-1y4v+qT`l zGTtsHYYSIz*>d$ltzEt+JF;td=G!7f^nC;Mn+F3-0}L$$*>Z~mCAxu0{>mkYY4~jY z=TSo63+t?x)g91LB}}(kLWT*uzT5##B2+6+;hPX+8ZpWd*yrWVt8Y?Y8&Xk(hCzF+ zy!J@Jg>c3Y-?!mx61w(DZMPmbgE?;993_xB+5}P@(xOOCnEilkMMB9UiI}47OxJH< zHk|x1XmX&c_>oK_ps57h2_26u)Mk}Y!deW(##pO@lxUfyxs$-KpMbSr;9_3Z2GkOe z)yxGQmF)ImtIXpz@X7=KeFXeKjd`AB);m$1kK1&chn?$8qQrxo(V}`IDxGyED zNQqh~Pk{OY1Uh@6pHtKiFhtnVhC`NI6k<`pon{?;YJ*1(aCgh3Fcq6$Hj z1!*i8vkrHxbI3O<_O3d05o>Z$=ps%_i~oM1C>xLE z!cL{$|9=BR+&lU^)hytUp-nxk+hAV?GfyaaDZ|n_Oicw5DFLy{DB!{{ONrHp*hdiY z-FTCNd-F;VQ5hnm#n`xV>4-6ot%N6X>Xa(NZjwHczqH^RCYDk}S?yQ`)&Z#Y<7OJS zoLo{4p}VmLX^zSZ5YP!@B=kgv+*?-cs9+IBQ51fXat;yd3E_OeegG-sdWetnHB{I- z_?CVg7`$3c1ah{*UC{^Nwq#y>#eCE}YZrb-#^$5n#*o~Qz8f%-UyOTF;x@~NPy=0s z+6^}OPp?P;^MohA`y@tSBW_wZzKg7(CMy*&@<$>0usG1gKaw6~a?HVWyDSY3mhfMl z3Kxg-klBUXW&c36I>7(d*fOxy%lhjuX93MLV=jmC%-Lb|6LdMa*&Mc;0{HO5LYw$J zYM%kST5L*6(D8nmi?kA8A5J_Mk&NQP0eSCeCudBuU4vQo=Jc>(0tFPeLB5aTwFlB<(I z%94b`2tm6^aud^)rg>!g3e8M+&1;fC{Y9_xnlA6Wx7Jm17di`S(Ot+u0qVXCs|Ydo zv&H#PZ&&VWBjPRbEsXTKSn9F4ufm!-+~NoiKLnWOy$`^lPIoGh7_=w>OI4@d^cWIn z!hi(R8E(5ux5x^KtL!%@dZO(d#M9G|Qj3t)%KsOKk4iEhN*5!Julzzq^F3jIGVG~l zLb+t9BNN)vKR&JRkHMhO7b_&At|7S5bPiUEA#W^^4i!@_pRc1QoQM4d#$X5G6lFqVqqG9y;6Q`{ydc3J^Bl1(&iJV)g+`Tgz+se7)d6|n;0V0}Q64qZ zfbBN1rL0%+aGiLqF8aM9+reCruq5dW;`K#y5En#A7$k`avvK@fkuz!1oHJAT`CM1N z%k8ci5+KL8qKnhgK+P^rTi0MbQ5$exwcCA(`+B$GcIWfyx^{ICp$YpU;dF3toM{^qX_73MEmAE2>pW zyG6X9=9vbupl3+2z+QQSbFXA}gq}+{Qvz`DHTd0$YP3*~`vT!oI#@D0toz>jJRs9@lSqOu9!7^W_7FRC-doSukWOZ802o;b99N$H^!1SM|m4jY^DS8Du{O}8mGmHf6 zyTqkxE%FMwxzTa;8+9@0VpPM{(HKZL^~?jevuDM8OXI5(;24w4lPl9ddSiW3`CR1%RI z%1@I7Z4`Cl5t0UbLsY4LVA%u1^qD3sTpPz8gZU|y$#qbq*55HesfO^xJcojr zx}`PX(`*3kz(k+XQJ=~do$;Q|XwBvHWTU;=PQ&Z<7z2(_x3`q@X5xN_t#0ec!HCD5 zPDX8>BKGwbwMF|L*1uOf?|<1Y15lBuDkzak9cxnsumT)DKUW0T3d=_UJskIGR}%s~ z%E%@NFx7$n!^je7RE4lER#M-p*OOQi5r9n5q4%{z#-#uI155EA?gV$4nWhI-34+hLk(2+!vZ%PDlNH({{WWjtJLs`^rV5Xk*4eo-C zWCYSD;OFM!ImHlxyK_b^aWlDDtW)IJq1G8kC!cDqSGZlhf*5a6U@%rt_ooNUa(QMT zogSDem(79nw5LzdK6eb&kG;F=AU&iKZ7@POB z#^$ySV{@AsIZIwPE58lvxcybow^*My%L6Kmc*XSaXuu@9GQb-FkUVn0VU&X?hJXjA zn{y*M@1PuNQ zGXroVMp1sD&sss~M8-hU&}4R$?%dv*xWm+v3{hC)-l&n2u90GrRELQ~(BT{&X0!Ow zc3m>8w7rlyVD%BP4Hbq|ej6xDLc`0WV zrNp1N^I})hT~U{$#_nw-y2ghFhQ_+=Hd`oK7#-;A8&uD&S=4aP(f;Sn#>Zg)(=BUv zn|2%Qe_)ZPpZc!p>dZPLdvsq8)<3lUd6oJPU_FZcvkpfWshqVcuho73THDuX_qOV4 zS!l%3aORACYRO{Zpo|P(gje*Sp*5IL($2 zPkT)Y0Q+6RRv;z)y+_;gpGKP0{Tt$!m!Md4L23J5Xj}lOSc3keC*8 zfOow}<^bjKhj<$xU!0{h-avCG+a8ODsaXIUF4$DW{CE@3nSoH&E^7n90o~MwgTwmv)W9iVsjBSIV6mhYFCDmHK(CrS1T%T~FAIu# z%ERXVoZ5AL^{%QuP#vf`VcZZ7#Y0`)Fm4FOgT>%tD2^x(@k&qG>v6k^E~YGV8U~IQ zokrAYj5--xD-gyn=$PeS{}_-!sE89KOLRrig-IC*c({SBr;$F{I1l4Pu>`O zQiC}w{Y?c;T`Z3N8|dE_m_{zFR@RvH9LX((8eA5vM9E`qfdbLlM>4Ul>6vXkXRjqs zE^nQg?uw@;Dv?q;a9JyRa;%t47WrTQL9Wj`|9c<#{6QV4?~b{(9JQ2bl7NJ@P6%%}(IinH3IO!V0kH#t99I&`9;zNLwaS>F9d@;An>40-O;`=eHmQ%bt?E~=-0{}Q)h`cS zJap|}edZ4qEK_>@&XuoTjqzhH;~kRA*wo*5NNZr!K)CmFj8OJ*6an{93ade19i9ua z0rLcez)&k`>atUW^RNjQ>p^JiQ7w{W7-u`DfJ2M}(dx^E5U?N)tUzgUg=V@u;NSVY75(GkK-WmMbSZGRD&}p2Ao{2y`)$K+jN$ z7;cy)&QSt`p>{tf*HVX*(W(kdTcw}@QUPI-dRirr-YGTK z%77HQxgW1cvBv<3Aghu|{@Rn+<92q@E;>lcK5Vq+X_1sP9<$No)JBxe3|-n{rDxph zk%U4>jO$52uXx>8ZQ-ZncnvM`Oj3IsucY+*hS9ZyWVDz$~4qLmB?vHhNh zU*zKyTvJ%h45dWL42@3+(R}j8=2I)+B~~EbmUs%ko=Iy%6_jl>zTpxNZLh|CsIfLT zhv<%?VS}yVTHGNR(}OR6{h7>3hu5+B@}1RRn@G9_|DjhfFP@y=x#_|?_q=w3X`4sz zIP;Em2;N67PtdH}w2LgfuTFg%v9^4gdyi87b-aIO{RhBTSbk3lzgH^z*6_1cmw4Z5 z`x@;h8VduH3j=T`lDq<;GII#B9Ma3)UT0bQkcTO9&EKXvNVOMnPpk^c8t z{Xg|+`yJ1lFk98s9;MmW-!aKr8|puB>Tg^9FGKvx%C>g@PyILQDueyE+P>!0S6g)z zq6M>V#~F3mcdPC_QdjJ!6WdW2);_l7+tnWeaFjuGMP|(w$(mun%t0KG~XUt+U@1-lNS`G2f6C$w@M?DihrUt3>uXV!l}`#Y;`y}JgE29!{T>*PPY% zHQLu(b+z8Q)UBRTmwmSC-Xe8#)GYuOdI7L?tuZSP4a-AhKi2xswQ4eoF$bW9LbvTr}!=oDrBIeRO zUL^a&xuXM7Ubu+Lf*TK;-6b$hcJ-oNJz)Qc{VR53kNpNa^v8ydSklh4wu@oKG*Eeu zHG_{Kw3EbzdJJY;O@>oGCRdNic@X}`5n2+%h8W`5%G*Bp!ODj|RFPlxgZ2^5LHAFe zI)+@EM-k;2Gi+=(y9Q~XI7oJHkO*xsiM=sM%6@j04#lf;Ca0M9iB< zrDyZ%lPQ(t?hFw#eukOf)w8ajyL1tZ;S#X4h)aivaeYeVGWmOoF7$ z?v%Mz%j^z$0!o#Ll__HT;}pY~326~z{fs5R_}AGd)(?O_bqPyJh%FRM|}`B&3X0n zy!u{VJ&{-M%YP!TcR1D0oa$el>RG3H%&8u6s<%5o;nblHc&VF^6I6$`q#XAIThf6U9~UP^aC~J zDySb7)Yl8@P54czhf}H}_4_H^7FR!wtMA9v({c4!Ts;(5zZ?Ifxc;WN>WHg&s!+?< zJx-^sYawE|T`pIDEA{UTi0#A#X%qh4_-e)4Wmd4F71ILfjK_ZcqjI-ZrS*;$7uAj) zwN?soqoCyjwPaCDEvbbi5^Ndnw@p~YuHOdxL?wzo8w9TksWGN?E8*~_%W7MOW@`gX zoVw|XnmM$+I&kvKomq9s?1judtbUoxtbT0zA~}})!=3p(-RJe+vyZ7$^M$?L`}^-c z&%CBbJwD1z#4`tbRyQ}8ix_ZCau^C+rgoQbnKFrKN=hxb1_hpVfK6o`h)SA(4kQNT z9Jx$KbdR!&=t79Q;h|S)_W}6DS~O30HZ2dV%P*`x5Pn;IxJG*rb>B@n!(kD7gWb0d zAhxv*q*pXalU|8!TKg8bmcybPmZxaQB2V!^p5lQ##RGneDdEkK;w>lrN)zm#Mx|nw z1>afyBo46pd5`onE&g8l9z3kutGlg{0K``^4wjD?Wki;b*aOo2Oc*FS@r$qNGHKtr-#skW|2MtFTfnK_3RyG=%H2dRspdpPIrnz$h4= zG*8Rn{D+~L)bIa}mBo4c>$}H7tt8I7_04+6jR%>=`FHe(|Dr=*eR4gAGj)DH)f81uf=BjgHNrRbvcFaOZU~17oCOXOMo>gvq)pQj zE(D&Yn9GI^5#Y z##C`{^sXHfOH+4jM*|4@f$<7%-n2aH-fYiwE~gVvjDp@ID4h@=P768?4i3V4>D4X1 z5gziiZL)FMtR1%v8o;$}jF&5UKA;D;0_(Po9PASIeHuxUfYw5(tlJ;)+I+FJuXD5# zKX~EroZIi*vU$^#Ctb}J>nV379Y}>-)1$k#&1Odz1}?uqzcyX(!eg;;*yE2QFP6Wv zI$k~d+?Z|3mfSQDFJ@DLP&$LKeIuD*DxD4YPniy$dy<1xK;#=W8gBQ=9R`2iD>fM8S;F=6Qwq-ji8lkz}Rxe3+w%av~c71il zS+I0@)X?KI>?bQ3{B9!yUvBJ5?R@>~hqMK(J}fHiM{%^7<^IIpkrL|_<%_f$HhCYb z5vANmc~p|0PYJ!j8Gn>Jh;h5vBV*W63R~mQfLOH z00*9%6tMJ?UF#*g)=N=Jl^a_2Q#UnFS&E8++-pISgh3LUUY>fz!WfkGadRuWBV^qI zcjqiEAS7*z$;vaLx|(78GyII1{ir=do64C2Zcm8m7dm@XRAV?e!l6QWf=<^Et3AQ5 zMA>$}IYQ9ZOX(E*-MS8r;R#+xDMO6%MU!6US<;+d4wzjazKx?OX6%X=6+u5h&0!I@ z@qpTU!XC<}&f^UL%tan>#-v0Alrq>nHxu~Y#CbD@e?nUtzH5K6YjMfHTx|eEtpa*M}{NAuCB6L zT1Id)I+}`YHlRxI1##MgOsN^fW!gj%Of+GrJwXfL20+f^>#inkz0VpbIrHHE4t%Vj z@$mRCHkiY0%mzp^fi+vojhU(7V{X8MWMkNq0i_>pyNW;5clM@yVPm?$O;bK+XnuI- zQmA-Q<4n)3M%Jtokfp^3`v=BAZ~qHtzI~_74wl^hbw} zUM%eW@AZU)MPGU+XcI7hW3W?Tj=eEmnQ>22CC0H@z42^Z&&3ct7Xfg&>>q-Kq9m^1 zE+dgZRtTloa8ddyMhtQT3mN4T+?H|<;Uwt27tPJwr%qbqG`Z`VT#-$#+6IwvgZTQn zh8iZG9j4FUFtOV(cc1KLGz+naATE}s8%wq-s~jw%Py#4L3Qd-g3mc_4+7)pw3RoP- zzCtNbf#QmM}kg;F*YO7Y_Y*(c{HkD6oX3BvYaJ+u4CaRQ8Ff%5GnhwNxl*-1-S z`FO}ombw}c#zNBo?KTD>5jF7}9Tg!gzkt?ikjA3L5G@K8L!tC=prINQy?fJd9Y?;b zQAk>&jl`(E)U(``ZzThvfOSp2+7_=umXnaiK&ZLVVN9{7^_%4^9| z;ol^6f#?|skpuadVgtYCu%JS2Jg z1h)cV5w`+g3U2+L>8g}92jV64v~la1bssor;mp3CZmC#q;X*6-A91VI<~0{t^_=C3 z)Dz8T``tQmrd97A)DxWP>>WZyqoc9gdb@=)PrZO$b%=dcUaPM#vp`?fDUpyWZ4Uyw zwfl-lgOGWy*L~nI>4WOFBl#05igdIkcl{OVfL5E=e95Y(*&I?&B%^Ef(AQSIdr(iL zqR3Z|inb-;EP597bhkFqF=__Kxd+FnQW&EtzzBB*wnOL8flp zC>0nuw2PaA2FzV_;l-KkF_eP4WY6IyN>T0N4__%;c-M zo+G->(p_0lTb5WkL!_1>rWS1y?Wbwz5apJlM{H0W{HdoA{0;X>sQHNbU@CM%i~w!i z#fqC%1*z3z=on!aaUkTy823MJqZArN&N(*hJbKwCH!w2tZj?~%psT$k=7FZA7D^#b zWJu5&O7Vh|b9|hf13$_+T15$mQhq;SV2*Yg1VqxXICBs@N#^hz;R%5frw64#Gq9#| zj#9uNHB4gCn5M;LT9obduTGM?Ns{`32(tpu5_JM;(qF{Xy`SBWw+&gcf4SfFQZ95{A)A#+2QcX<2z=h|**L(^{r`Un#*J;8~P1 zz9HyA1YF*^zVKnqEt68L;r2Q(j}qU~5clxWqlYOejlkA!-F4WUfdZoTHg z|A0i2XQ3ysZ2#I0ZQ$16Z2|!?ERo|77aOpt*+>pe>+18peUZ_N&mK8k7F_+1&89N_BoyVR+9$;tg7c{ZJ=gv?Q?j7KAHh)IhB; z2+*zc{2DI!sU8sg0>nc6veLpYkW!V3BGd0`!)(ILjddTm(ZUk5;`~+VyG^QctuMf`{;4!9!NPdr(jCkXG(PMZ-S;odJ6( zu-$;9sR^G8zxe%Tv^yV05H{F-an1Pv`4$n;#KkKvUZErFqRTLn>0B}!7K8UNy;m2* zUV3PHlQ+={)v{va!Na_#fi46m0bV1m4MOLOwRutsn&3VKjT5dkgZP0r8@=vmONAID z#)e}?l~<`~CKHWiGO{=sb)47&%!Mzt8V2l&)xvp8TidH=oSJxqJkqTPR;n_ zBfXMu46+f~*dilApTN^Wj)GnH(;oG2J?fbr_4OWgU(fq{9_ca4pcl;yV3en<{=KZ8 zE2}S*pD62}Dyt8c)jP_H8#x|4vSQF{eJ2Q}4`uFsEk;>9d5Q z1RUJoD1Tw50m_W5`d(H&n^liyzn;}UomKZ|Kakat0L)7Li370*Kq)cNVfE$80 zSenBC4EBWje&S~d{gK483H<|!PbKsikyf;dALRY`VN@NBs!v7LJE9Lp^+>BZl*i#N z3&h+?*$f~G6F$InN%Dh0+}f^Rxz(rLUvTTfwcSXIM7u*h>-d2~f7J1HhyH1Yy3g@` zhc0#pcKX-ZY3yKUD?jK_U+7Vv=}~1WIWdC&QGU6sf2XXzSyqS2>cR4-%lbRZs+*X` z-Kl=msa!dABKM1&{+tZnJ90_}suPe91NF14`nRllCab=lRgYv92J61;`?ES=qu4Q{ zJW5s+rQkS@mFeflJ(^ITNT~Z0OiUreiBgzol*i31MRFLTm!j&~sCq1_9*L??MAd!K z_eXV+$YI{31bQOUW6^86Nw|c^@4!PBzxYaw{54v@S zupbWEts#pj1Zxhp>QLWtsBbvbpE$ng(BJ9!AVzVVV`pOQ;CBKcok1!~a^1b?QXR;X zlZck#x$khh+`baB-}MFh@_mDSMj8mL&di+-cTcvQOGKTv!g5%->`r^Nl@QO;U!10u zxUp@ZB_eku91)Co1er3Y;tIw-#_ZZIA|4jAFT{%5@1+xwQqw(;`%i8G(uX;lm zDPS<4R*oBvsWnFTOtr=|UK_?B>9*!>WvjICAnIE-s28EWWw-jSbsN`A?hJcak>Tox zQP+~;z6&hh*dc`1K1{-IGw>bDiB>s|()8nk9v|PlE{~NxW9j~_ci-23x4LZo-Fdj* z@6k8d;#%+iQTyHMGQ6AgLTqYby>0Mp?o)I6?a=kqwTAkf*L75E$JIGzA)uxz(7YOlCTCt6Yilhb)DA^$i`w(K}5hoos$LYL9`V<~q z{6P~Mt>!eMh6=F}-h;)LB&(GqcuOSRILE`kFyjDxy_E3ulGg7{l62^u0}eQBo`(yU zW^c&8H~Z0SM|K3%f!N5x5_YK37c%;c#ds(Ro7o4T!|e*y`-7!BnG~^EHeSJaQ<8(W*YnY>{*^Vwh z^VE!GE<-cf$5xON2uZSF3wyeiB{IdV9Da>^NDD-FBkX~;Quo!h8#XwefHZC!XEGWr ztTGuzhJeqqLnoPJSVposoQpcvY+|c(+qRac%3HV2^?Kr7Snr2jF{jO$4{Yk|`g+Sm zHehoYmQC#Izx1gO?b`LBPk!o%HK0mC#TTEmr`_m!2pHqJZ+215o zvUxLB;R>pV=!!=r9vNH_n17w1qD+)HM;c_#iB&R3KD{Y$ry<@j5>^Ey*a2dp(?2sf%Y(I=ma`Y^A^&n%h+Hopjrl2chLBTS_c+h6Pqeg_ zVxUObF|_&5HsC1~M6^u&A;j7l7KtrZh!G@WA^R&Q46e3oE(B0OfdSeOSt7DA3Pq>> zQgdftG?_YW{(P~FFSR+}yQ7(V6~XXW&qUNSB+_3*o6tkK=3MXU7a|$hg|E$Oq>xRx zjgD6r1+RA6Iv!aU{0a=Ejnod&-S+^`IJ5_}FSK;ai`AZvB2Xd$C`3fUcl=B}EI0|s zh&aiTr>VKFLPriY+x(8zCUx;vo7ZT6hBhPMwyKq0X;ZKll-pQ(?RJGfvf6FQ-&9wz zB<;5OBdgu(+wH2$*W0ZQyk@)qfcny|x*TYNxVfvV`YP=*ro8kQG3D7`)~wd5((byQ z7-fYIOZ;T3%}d&Cc6Ujer53)w05*nqOPu-&#}#dUjAKB*4hSWBkbirR?hyfGdklW6 z-w%k?qwSRX-&P;Tjo)~r+w_3Mg$We=g=jC)ZPHE1IuBusbenV%lJgS1n7ZjXk6$0w ze5>^g1M$&c+OvY_9mxd~NZYXIC3i>2yIX=NDcJNw~6 z{@#8y*sscay>IQ)68mC|c#1zqD(%S>mO;(`;$d2GN1?^WXaFLGRK2>4$hDT*8Io`A zYHVtTg`p?}v}o{qjo_0A;)vhVjS>{>7~zwliZz5E_Oy!UBucPxkCNJuUJh zkIW)_cy}!^G+PZHJa1?+pnrPg^3Kyl3P*@9IZLuXMH2C(HO+cDbZKskc>C7d1qi+Xbc+jgOSg8bxv5ip`a8)q zb&|F0r1G?zh^4!8E|f@m97YSN_t;$9)ve`3bRj7Mvnb(u#&4TRslk^BmL~tk0T|{cf|;n*tr>6_lS5^)H?O-o!dQ=@e6Vn#q z;$i!LIeQZ@xvuJ5^z2jfJkMQSQ`gW{-Cfo5B&knJtyWuVS(0U`E!&bU%LB&X*-4wP%sM*nhdD|rId}7>E_F{w9jq*Kx6Kt+HMQNDPJu7~s4gv*9}+GVcKHto`#H4~o*r3W3@bm_bL)nb2N7d&;R z_PI7a>@8Pau)p`O`T~w)pZbqNySJmRUAyxkbFWey9)ZeOGLgxXEnumQI@^Q&gIYP(XqSmH})ZPoIZB= z4yRVoo-@2DVjVNc5ooqxKa>*gmDl1EB@ck1Xi+9MCpa-(y>N2j7?XaAP72roRiVZL z%82cWJXZR2>CZ~K+ioxHaaxq^XwmB2=LXJ!DJE*@y1ihJ+4Gqt4-n|dXK>4}m^F50 z*u)UDSTqU5_lI77kpn2{N#;Lbx>v11y>wA?yEBaoki8kpoqg%*Zm~DP=wM{EBFRb&K zq3_O*Dcfkb`N2+`R{L5VGANj)U9fP?N}KBNYMW3?u5a_lsQX4DdGtg6?eQ%_gK3dC_Ga57AukRwb&~_K;FY$vR^s+I8t>m}JZv2#f zntAz5rN~E}apb(ayw9_Nu4uH2|E}D5+s6`_OalLaM|NT!{>Va{XwKO!t8-@euAMWi zRp`XDk0NdWa>W@Q+hdkJ`cbO|-l-6a-~%px3;l+*?nh^5QHS&cJ06Y?_6Lh5{lVVx z0~k7a7vf0tYZuIVup{~~#<9YBxW7|_B?Nx&y!3DCyMhn<0j zew?WPnn<}J4vvcSb`3)4@CCpVSaZnbsF}7H5ayEhwPAioC}M$CwkO!31K@Xe>c=rB z2!e*3JExConvZrMr;pY0jxG=t3=_s@KV&ekTb!tOwOJ47LhAk1u}Zhkwo;G${_~PY zitRbHyMfp>ZOo|G4Tg@W%a*Y&fhFpUg$=n0?`I7+c2C)NbHmvACb2K4ZuFdP)9uJR z$bKN#g!-n)1e((RQ@~gs)8g#$uNf|2C1JVba1^8hbcP$C`z zJotG~PzD`Kh0x2(O!@%~?Y?rn^v~n_&A$HSt$(a-Gsf*Q4|dtG+hr4OHyGN)WhRr7 zqeG5%IU;=lhqnC|*_tD~2j*knrGHm_A{#Kj@h`!?^&17h0mSJyzz+LqTj`hAMQHJ` z=ocvfhErNWFJ)daglops0r|pMbDh&KFK)k!dwz2+S!W;WWDQ?N;0XTw6*Yp&z(Ui=(Q6bFD`gK@ zb5`AH4OqN$9v8gj9|nze!oLU)Cs0k%*hejB(qJz>9YSf>f>WE2*eGmLV-3v!&*9{| zoE#tMHO(~*65_Obb?bs1wB!vl4@7%8n}!q&ok>Fq1(8AXW$;G9mk%8jZ^@1n5MQej z4(=R7uxda^FO^MvK+P||qr5|WN!dS+%zdNoa z@(EoS7`nTA^BqTlV@$Ct9s`&{8Zb!^uK@SI0gBiI959I}&wZ6KjE_@Z8OS(5Nm06j z?5PQra2meIf-`2>6Nns*$HH1@Ur-MO)jmzAR0+S+Ca`PM2r3#)Sv2Y)gBr5GN032d zouRFai;RjKz#%fTcH`xPE1?G4BZm<=7)dy21qg#cL#cJZh8FOCROUt9_Jxmh@5Gbj0kVmQG3^Qzl)& z+co_J*P1%?Ueb?2p#8)NGy#PR#A!6I_$;OjgKXlNtb9A^gW2w(-)Zj=MhzDtqS1^+ zn&x`E9buro;v>rD$abvor@E?mo zPZTz9nc$o!tinBxId>_yko1Rj4FQHI$&mQOBG14pDBmz5kWP3V>R%i`cIf)wI@FgP zW)>3+6-PjP!}!TY7y~690?3aSbb4S&!A+KFug*ns5D}?GIUbsXik=B!kyGm8i+}#4 zweh6wu~Ukw^mYJ`b}W`RCCct-+s!oxXebZZ;Gi9%+K3Sb*Th>J8`W#E>8(4qZ|&ML zHvG`NhjUw;nZbG}=XBYk-byZ1KJ=Ei-F~2O5!=Vf|MFWO8P`WH4i={yDLYoCwV!kX zutPosYXVj^zd7GC9 z(Or8yM@zY-ls{^B+OS`PT?2(k5geD?a9ZQ&()0 zG7xD~9qzQ*GjxSEi95|UZ`1w*xKpgb2J5CZSU;@6sK5|wFn-&5yETWpP5VvEyZM`9 z51P05%lHk|IV-;*{<}tS^r(!-Q^-=<)@OXja5Z`(&fR)^jqg2q%C`%i-iI^jihwq$ zQK^Q5UJG`kArl9REchDzS@fUng3o(Y@UMR9rDG#~XtaZWeSpcg3Z9ns)M=TB{XCGgVPbU7yTi+_U+HChGsB73yOEfI~Wa2&g zRhfB*InHDF1@&b6+cc^^F(!G3$IV7jw{{6RHs#ydI=&rAuGnU7WJnTh4zFvIdNQ-k zJAv~}y_0=>Qra9_-=@gf%r@_gwQ)c4b`Fn9vm$E43(?oD>VN8|v|akYpU@T|L`mnh z#YL`9Fj^?h@P%>%Xl@75GVm)(ap71XegoIF$P)^DQHqZTO39Qa_rXO-2_9lw8=s?; z`Y2EHO(^Ae8`&TQzYuVXzZXiR06+_aR4ccb{i!9Y<9_0Ye)?4OQ=i;V?xv5yZu%&u z?&G~a{-nw(RkVhbtxzu0B)KHaCdin$P38Da;GR%Qm{OGIjWkJ#WD40qtM45WT4x7C z+wn_`C{me@+nsicvOylGR_FUSdcNufd zckSNRHF*_GJonwZ`WCB@li@WSySix&v}!ZQS=0CX+<9^!GF zoIRGwFEC1|>4$|V$8F{MBm(<{fX5+lBp!dB61G#6yGccpobh~k7!f&Pm5k_|@bDsO z3@RKS3!Z9kUskGu`29?OKgoN=QXQuel7vq--9|-Aza}h@>0nA<7U$)@EEcb$GBa3m z#ofh$snVY7v#m|V##}4)jyt=?npIyiySG&suO*U=sbcR{WBI!eTWoLgZ}Fsk${h&U zr|rRjdwO$axRmmTditlT2X1uwg09JE(wFT+nC5)iA1V%PZY|yDfY=6Wx`s9VKIoFR z>z_EGEdVO8DhRe>w2u=}$)dbqOkkdy)TA}3NlS5cEr=Q8LLN64TDZ9_NgJST%(k+P zd!}u)&7UKzVL72R^VQ69Ef`#WGh9vpH?Cy9c!byZ3Ee?D@hrvFV}Q`WP@gz?O>8=F zB4PUYgyFhSo-sJkS0Z zSzrSMi>uGnD+jjBM7PXTw$!)u&wD*JbG^MLF?40Up*@r@tXp?i$+}y!-u&3l%6c-_ z6*5}@AIJ?18yA?YtG!%T=MC%)u$a=NJ%M>OznEK88}{^P(mS@W!*y=i>Z~=4PpUHv zkf^-2)LR*T6?EBJ)Dnt@oM{d&(&7-m;6XZZl^sKS{uv^wk?|#Q2E`nq6qO#z*9;Fw zpryQw%!@^MToxf09~mYyu6P5cEm$U4P3HRJnJgPd?|t8E~d@`G*{qd z3lIVKkynN6*H8cJEX^y102XtnH!nTp{#zA)P1ml{W_k=9bVly{!m9KlS zCp%J0-n4ggE0RM_j>oIrVWc|Gc8}N7dl#HP?)(o z?3l7gU6E`o)}27mom6SCylLJMFnQoG_D^B%pR_mrgaMLY_({-oTCjLtph-Aog3K}Q zqzE%qoXU*|gl=*J@GduK-y}CKL+fH|#~Q0>9P#D^+%i2~-E*l-sSQ1OXSy54Vpa}m?!};rY@f# zThQq}qibi}HrJa*-(QBy#`N^X_aoac@z^!MWAD^|UmH&IMZ8)rcVdpJdsxn}9ob4%_pnKlP?JuPgn*?k;DA`p`xejTChLivH7KvOlx0%N(c z=9r~W*^@syI?(7W&?c91ld`3zB%j+ksoiTXOz^NuAil|ORc_^as-}f$`3yasT>xpo_8k~Lk?0 z**gU5n^K|bc+=Fl(_Wj^V)qR%j;ODBKQ+GmM&Ee1JK`L3dELqnJ~j-VKP)m2#Oe|o zroARFtu9@Jy^7loIk4t2Syb}U*T6RFog#}}LVdgX%Cx3U8jXwr=3p@`$CMnC?ITT_ z;1UjlC6z$bZ%SB!W(1Q^sz`W|K42XNv;k%?cFZ{g2ykk5FLg^}w-+;~#$c<^S68|*KOmU8lCFQXd-3Kvg~=x7&MGuHo%(kNxLSq z%@20kj3?LG%$sd;zbtKHzr51V?!GIw$^EjlsSbDAOxLc^=5MdGc|`jSe7pA#htu0Vqr~e}gr!1X<=Dtbvx=XoR{cmFt!yM_KMH z#ODYllw23cqe00f{xK-wMTr{`8r+7-UtsIqmcrq}-)77pWjkjq;D((W9$OypETKe& zEwRxONkZZj=CujDMU&vET9SxXY`!%{w9shBqYYGRz~qv>kmWH_IGn(hl7`;3#K3?n zHkWv02#)Pe&z$SwL1f>mHNe9lWfOK1uw&5Ux*L{Z8H(5pKjr#CL>eMvXkm^lAkAS~ zYzwbLoO*~m3alOkhG4cVcsI)58rZrcu&$Tjh!_(2;@H$JLqF>dwADL9gmiJBW9ZRRj_D-rlSYEvP@uDXaS*K@) z{DZh=H{=-KfIhXM{hg6%P%_qzhKpSuLNQ^WQk-C!9pD_463{@dQ5my!!PrRd-7fKF z?XvB))5Oar;nZ#Pp|<70RP<7F(#uKhb)v;y0h!*tVs4)%;1o;DaMJ(j{y*#2nc}3c zm|HT9=0lv1ik~S@BEfxe%|Z)H5y-6!JxBgDjiou_>n$sBque&E?2PmnwIx>`<&ULj zDpOatVk=2eyh;DMAs$p#M{(12qpG+jM~c&pebXAd=gI`uBfL5+4~c$xO7Pm9$N<*H zYqfe7;&J<`Epr02?YziSATa_Cyi@xU=7%^?)%&s@5VlpDUpMMDrQHqfx`#XMhNBXH zOQczX+f1Jn`UAnJ60)B=@e{ThuhhhErxSCaf;OEZPunPMKBc|A-DY1h?sh`=ysA$? zUG+)989-{3Cqd1~HjB}))4p2;J2EP>P3r!oP3Z29wA*whyQNLhXG=e&P3ZC~nzX5I zDYxZG%g6|wmS)YMVi;GmUCPwVc5hm3H=UGr+iC~1uKJ|N)68~nTGMVkD($wFIbwf+ zEQ(Ih_5~ws6&C@k!x7Bv_s1VadN>0NT#;DrQ;L`uBp0f{T? z9R>^Q683&{_Tb_AsMF_Z6t+(58*jVaXPdBj=6A{%6tNZ|C&PD9{s!6OWLu{A^<%S? zzjb7UHPpl28}&r?rcQg>^;ehKY$^!Hyq7V&^t>eRai?SbDw zJ(Ev5-L>-GQpV(hh%3atfc6;yZPy7H&LHxNX$*x}^;qxDpciPspTsFVch4FzUWOj? z?y*`tM}g_BjwOqRjUiJN0a?B{M1zhtT6CD%p(qIv4CwI`oGv&nPFH8QKWn#+>ekJh zkwing1yoOINA*eVpD|Bvt##bS9j=w!H#L}4Q5}z^7Bn|z342lQn2}`e#fE~*FR=o$ zCotz2^T7ObPj`PPfgl&onL|Ud($y7L3}z*4e?s4Zyu=rg12g}5E5fuZo3tB&3=*~} zNP398GpXP!f5EV$h;vvS|H50k-uJ#P{o^<1KKx^y|a{F3UJE{oVL*hfoa1{rVS@ z{iTR%*n+uCCKt3dRHW3e-xkadl^p3*B$7%yN<;8$lJ|c|zeoEQ*uZ$S{O4SETlhhY ztiw=I&VE4|72X(;;O2pf+>AYODP-ay%`NWs|DlEF6^L0j)PK!GAKnT!|US&E)QIW zL5|T{BxN&D*cdCq#*B%KqpE>C?++4i3GCuK?AA(cENy*6cIzkZVn7r_dvlc5c!B3@|T|ZO$03zPgal#_GQC z^7fxn={8*|^;V_vRbATUZ9k>`HQFY%D>r(j;kJ?q{V>~QEKRfD?-hD4ytLLgjD~gl zDERMnx-V&8Vkek=f3MJe`HdPF#S0J$2l2w$`xTzur2iZrlm2f3-foW%BKbta!U6~p zMpx0V%YApZKs6_$gZO{7im(A~MnqkLX@F{hw@0RQqh%p-wK&1NY1B(=T)!G=p{6T% z6G84{(GV$DEd!Z} zmIY-eAj^eglwIpUSFMyg9FN<(4vWbr29u>R>H*?T*^BYpayd)aZE2fBLZ&*rci6cS?0N1y z?KL!S&jV%K=|gS5@|c-BP7FpTSIe1Kk-Ad^I`jlSC8j%sTn-!Z;m{RckzPIm{NnZlc$N~N)oIen3Z!{BF|)ton;iOG#ma-3jf&lxe&xt=3YC(y-$vysr!M}m?H>>09aiRvAgV8Kr)J4olW0hSlZ z5G}sw9TA)8YJEgMxjS0Er+vB)Pz@X+GsAhpEI~Rb0g4-^+8Bk?A`A>l^UuVfz@crk z64R;#Tn*i_9rmaxe&h625Uk>Dv8ul^n)e6u!^MTU_uOOOaU`gmupEzNBd%(1yiZTM z?U6z~5$`W2uG?|%1JgfHW**&*YJ=dOPZ)V0MF3v1VJ-vX zW~CI`O0r;eGD`~v>;e%HhT^0#iK?H(Zi98~RFm5&>api3wzMC1OM;?+I|sugut|rN zaybJoxBWJ!4G7+hP4%==>irr93yEnVNmWe=*#oo-1km2zYX?`>d8CA;O=W=J@*AU; zY<)QSq6)-DhkDe;>P0V;H-WGb?OC4V? zQBrLJ2MDhOlcE$;E(otA?WhQ|h#`q#hfvYS+Fr(k^G;wqyapb6BiKdG+hBrs?7kz($`JvdDfAAc0q8OSD4ZNR;_p7^?MBZ? zA<&yn6e5LzOum^56qD8b8Aqg$8mNqIOlCjcQ!Z8dM^g#)sll0WcQslW@OvAjcqJPQ zWqQJ;{$Ox8?Sby1mdI9p-tuq9OT~0|!54(wgM3#_O{qz&fw)#xw;Bs^0%(jogIEn9 z7o%z^Mrep#$K6Dfn}G;TQo^hgHt;x1pbB3{#)H5YB0ENnAGO(F+9YsP9OW@mEu5S_ z#&CK#5z7(5+n8gN5;j>%^a14y5(e2u(6BLvN0wyQNz?;}h>k_(d80(43MitEjkLic zc9^WIWhE7M_Ar(wa`NIW*i{3Pg1zO#5oax(xTB4m`EI-uK#6p9Xg~7)JZVcl$u8&b zfKc=NF+i3Nj2|%$6P|;F3L|pn6!|~g9Wrg%iHFvL$eTbRvd*WQ0D!#p_P1e(XY2{x3r5~z>-23H~d&qgK zw(_^?-j#cUs5c__?$elsmG2n9duPlS0HYT8<$MtGof6{2{jxFKM*>~t1e>^vM5V&5NSSz7JhhQUfbaqc%#x=dsRsj$ zsW(X#b-7lOA!`y$ddkIesr(*a zG3xUbi-b5z(Q$Il*u-cB#nNz(KX6Y$jg%45W|S{4aW$3_(FcwO{9(^{ zC1ML?Vu5VJ2YO!`*gMlx9G*_y`^Q)Jr^oucg8or|A~U$HFE&+sEH|@l?@**xj0eiI z*t-&s&0hMRPqdn1#Z? z^iUu6BYwqd49={oj!4)|s<}{WxG*&ORhz4I^r~I&YfYxNUUOq>@2|dXX69|bx_9q~ z-#+sZJXu&c+Ok1Y{avftWBm)CYj|RIEI-^6ojm;B9XsB8%jD!O@7>}4y3f-Zn`&8o zjz4#hg(dF0^g~MpJnU-zXc#R+xAM#CN5EXL-Gbp4a6~5!GtYtgA#VhW1Q{0z;JSp* z@P3kZ8`3UwF9Uyqj^3@-w%cb!Zj^TW<=AT;*{<7ccQtD=8UY$I)&{l(lV(2vzIUhVIq{B}l;NXLvm z!qp7NfO%ZgUr>%t(`J7O7kyV4@B2D%F(PgJ%wxP3F8XAQ*TID{+XY;hXtO^FN=bHk=hY-%WbHW=zfYdW?t(VQFbKZXVao%^G-}y2AL~FXK05q&CQJ zYjXUVM{yOFr0vUK$!xn}r1nUwW>0?#6m{kV8p12Ctp_@DUHJdj%TBuuY4=SyK$-1g zuFW3)>~p=+9{8^{bFwW{G(PzZaxk;qB$(@1SK`GZXCL-HIg`zmJ4s(w%O!jVwa)=>H z$$R+_=AcMgg{ox5DX|bvyc_&tfh=}GWUz%ixbQ+AzsZvyhpgl@8GVr!;rCMF?Xnw2 zQz%7xL^XrN|F>|rZ6Qx5n^v86Fgi7w4b}wLhf+**BvBt`2(K50~Xa9LiEC2 zv$YM4u7IPo>*4x%z#F}~y8qtI>GY;M77yKDG;Z3M9ja#RdTQ)C^_lX<-HrWM7st0Q zY)Ms8sw?1}^7v=o`iqP6Pd~K%zPHZaxue$`jyN{lz5|G!`wi;cn5*3l$;tmTJOS!Y z0vuQe2b{M57EX;tB*^V(q2dv$*&y0L&~AX7mWPT9W@<#dA!wD%7^2Cz&Fk~igVg1) z+uSzF*dz-QP9!gd2;GV@06rANa_%)9t{X|NYswVZ7+?`(b@I#>=5~8-D$6 z&1JjW;k4ZE2*ZAaCdrh1a%%|9CNFDWZ+^r4OrrLK_+F zR%6s{vn@va(TGip_%)suupxsJME6B-R`hjHM<{PCCa0`@6=ROQ(goKfO22dcTR->5O5;4hi#@}7o!%QdK7n)2ppTsx3W)sc+w> z_UNzv`0o!KyDAGdL+jRlNAFgD0G;r#Hbadkw8Grxf)O|`7W6ndXCSRIG($j4FootB zE}Igwubs&^h;46^f*bL2HAK~ND9FBs*w>KD@>E7;76MmgVBB&Ld6bA7n>-1@Q-Vuc?$Bso zPQsJHFRjI>=DMXMQqhIQZib5lJg?n*CpN*^jItZLXv3OFHt43}2tw)MQnuO5mWCUy zWWF~Os#ntKNU@Z`zn(+#yGSux|InlS= zdRQNeLh63;OPw>W-y!W$T~~jtk7A7<{a<|nB6saKN#rKWn)-J&Ma6$}AX zT%s%i4ZdI?+T~6MA;&?H6XcN66JP*S$4UK5$MoTXF@Sn*pFd;`yY6>75L3zOjNI?^ zAfcqP#}JIb<@6xDwYuLD@Y(KnAcN}g#i6eu#Kwz5pxdVMotpRX? zOFzQ6PQj)nr)||7>bD^c{=u62Rr3yJqJZbHA3;n&O@9u!B8OPxeet;0PRB&AH&d_} zajZp`<*Sx&TP#1cz`R|3)S_ILlx5OlDO;#aT>< zr$g##d9XXAqM@FUu7%(o9t;_w-Jy4fo(`Q1oenwg#p!2oYTXr5t&j?Y6mq<<-6mgc zbwyqJ=3}l?F8z}(b-<-gxn6O7-(_(HGRl?7he8>b3-)uFj2F}NZtAR1!VHg6C(?ZM zjW>)0MT!|HD|cu&Xh7ELtfpqLc8J!e2Zj-KC#dNqEpC4|ny`xq5z&3{n-Tk*{Z{*f zc5B0~0(Lcf+OF(*{NU3_v##60jzaB$pLh)bk*F*K-tTyIP)iE+Ub>H#bdpn{`4UvF z_uY5@{X|A#Ao<~DNdBkH_|U9Gv zE=cVriwf5dR4NDR=CONrW-1<^nwjlhIom(|{w-VHKP^Xnuzu*!4b|!mhYr1k^%5Ob}jnH#76~Oe*t?_yB7PJT%-O;xsIRV zbqUYEC-oEm#%sn0_`l>j`M12@i0gCu|B2tH&hwh>e^H*NU*R?1|IgB1=7+qVgkI*G za^3YGyzWtds5V}dl=Un)p6~cmSObwBXW%l@2bh?kcsknzxpH9z;ztCw|QN_ z^R1{K#~zs1gLpn7*Y{a?J%ILS5cDGs`GEQR<7$IEe?YG5c)o${VIRroHT79FDc29l zb%Ml$7;e1uA?Uu`ZQYl7uW{)^(0!qv=)TN*{g>Vc-52jc_Ofi=E1=$1 z{+4_8_Ps&W82|$3>TQtzQTJumt6lm9=)Txz z>b`IfYy0DR6XWUxHxxRqD+|N+HeUjHdkN9sBaYJOHyv+R$=_ZH?TV&+4{}ZP4`w`S6eEw=1v31AE_@69}4TZa77Q;1bUdn=dFhB|y^{ zuitK?o(h{9&=KehXnKwQ!>5ph86oMxlw?(@GV+mVcPS9{M1n3u>5ue`6rT|B5^}S%L$o;k_Q20WtQSXZ zuD9Rb*g08r`Ge3_ zr+jmtnp02DsqxBOyel=I1>>BLZ>jVy1cw(UCJ>e?7IbF2;_>m3g%SXYejzaOl*t04 zk!%Oce)Vey@c_H`gWUSSIH!R*HL_!% z+O;9{zVc=`RgN#}&xY$;hbMLg9O>Ta-dpal*c?{97IrzEIoI&Uf@k?xmcOIh zyikYNMsr?Rmg*Ng*}+P&+3lljiMbg@K#Tq0eSed?p$n4HH-z0GO?au;221E+kQrF^ zkmbjvLvk9}`8Y;n$r#g;aC;#k+dTvch^EdNMVxfG<|SQn6zQPnG7snd3%Oh(yO7b9 zbs?RA;E0PvtVG2#90PrECF%nw^`D50R{F2mST4=pIO*E{;I8_w zf4F|QM}2Jh_tf3XFY7jc&xV24#*%L;Ieg9J+wXF@_1~NR3ch{6;1R3^t*rfy(S@`} zZ6oj$@kmPWNXpD~hOg;(HxrM5(3yAy0BGV7o){J4kqpvBRUvJDx~iI06^-o)9j!!{ z!k$=?iKEK-B~TC%nV>v>97qG1k14p6b!;Bp>IepX*2@s54zbXG=wteyfKW-i*)rVNzkY5oq-7?R*gFGgQLXm?O z4JBzVlH|Hd(jE=6Zm|HT%v%sDPF~~a@&?nUqC9Iv34a0Z=|w#3e zqS9mClj}ZO?#}gCw53oqn(l#XTsCc&Wr$5S4b6hDgX!aNcbo~=AUK|`tV#t0wq{+z zx6RCDDGQUcph7(pAui568%l-gYd#*DN&VV~f9W@|I5+zWJv~A7POHBBWiHT}!RDr( z0DSH4e*2vdVu3cdIzs`U6(k?LSQhfeZtMrjs*CZFMa!~AXm+-pHr9+%BQpR<^$qnq<-TNepnQ=n;Z5 zjJsa)9=7@9qt%n4F0=HK{==LfYF>!fY4vseG`mcujM1>@j`nWaS7 zSsdO{-SWV-t=7JGZYymZD!C$wYXUN1fcu8X5Trv|!A|YeZ~x8R`{44VD5tf@yGu z6Tzx-gNB;OM||F(EodZ&fnJOd*+iI`GtY&Qr&)1}#=k9MCFqF6flri2s7RfW0aeh> zd@Bh=Jf@AQ*4VqpJ~MWD?Ch9L5H%MTPGqzNJ)x&WPw>x?34GURwZ2dZlyW7#gyzKM zmd#53Vw{{aLTJCWfSQq{M`?G`iRuR?KHDoOtSN{CV1t`timN z&X?IU(`+?_;~*jAO<=p1hmbOs9{v35$Xu}iJ7%BQJBp^N8`>yZ<*yOB#$nWp_1Fn3 z6u?$N{o?H5%>}~1<^zd{qc}2G-}1n|!O`m;oavv7`ZkUSyImf8!XM29-B!On*BH^C z?Av{J8z!b~KK}|#1YN^JHfu|_`QjPhkj3Y7nQIk!dh{Ondk&}@PH0ICE%Sd5a1}v- zE(6-j0cRq#ZqA}O{ZxbG>BI&OlvSn&{GLz`loyOBDk4`JAjDiz#EoDO+vblN<(Kde zgJd(vci>$p&lx_9z80+7138szVfMsqO-jNMuYn$=#I#5WbRi{L06sl$TuXc!-&=jW z>2U9}2Vl`1ypF9K0Pf%fU@jP0(k5^RR+2cha7XJ?%*Fz35Vj-$+8psqj$y5GH1W$7 ziE3pwN!)NE6TfcSaT8onXWrYBPNchL(l4J{Q|#V>0y7wjnXg6Nw++`Peg5#y`i2`f<_nvy8;@3X_wbOlJ*obt({s=513SlaVaK>TQrUK7!^T?| zs#fgtF3*j{y~J0rm*_&&`)?Rtq#;D;4dMUE1#&(xSu(3SM|Bj_mEqXHWR>a<3ft4k z7$lHE=Cuz>K(-*)IdW$SDFgQ*%XA-V!b=U5vRB;idO5DWWZQa~QpXJNki^@2^H_Af zbGApD_clM-{7mz7^KA2c(_WbKN9U6Rg`NeU+Zprw^W6*dDK^>v7s-i2+Hvs=qJo(V zQ0A#K>bx*XpULH$p=Q_f_lde%OA*z+Yd>_`#KdhMy0(5}sl(1+^UghB;q8NCJMLYq zRCeC4KihZR`>s3izU%s2F8!YM%=@%{@r!WUTzvc7+}jp=$*;FA{Sa|MOn&{p8Nn=Z zVi(OQ5gHCOtc{JN#ISJuk8y2rwNSQ;(&Sg=27nebBH`=kdm-F=iZ<|~SSCydd~=aU z3SrxPFs%^oa3K(g0Fgx#&d@?c@=IaNz%_tpCEt!=Ylm-I;Sn%qYYrrRpxwyJ-F3n+Q_-#?)h@Oc0$*kVZVKa{3tmYgtn9Z1X1l#i`|Q4=OjEAO#9 zw#vun_A2k=l~`I*uNfgT_nImfnQ~3-gMfWTG9)-Fr1_Tu)_g2x~M8>2KFZDJZzc=NRTHOSFR$Isx=VGM$xZ8C_(cKp~-iG}uk@ktMT%S0a!P zo>@pcEY#KMtWSX;`S3OHFVvX#h3V5+0eu1y5@nSTBdiCM!h)bY`+31ed(nLf1CCPS zIHHtXUnotxW}LicwD4+M)0ek8#a0&)=kfLyhRsQj6{oX2f}GWxo14{!z2(PeGtMSQ z89hZQgMjh{c1W(#5xK?}$~CYWN@(qX_;6yzkj6=8c+Vb-0tccWGLF(Q3PCVn&{(2l z&b+N@^-XdmPcGF}B)${|B{O&0jc}sFPY8NLtRV6m?dU^&Ub37W;f914H4SDg9V2~ciMw^(mg?VBuGfkqMlRhfXY79G=80rI#~_AX z#ksL!di=UgGuMr$&UQ~U(!t86fjxT)LmO0~wtdrJATeAo4P@MQrxUTN!*+i%98Sk$ zzF_Z$-Q&#zTYLMq?!Tn@s-s(a3$r7ITlWpmx4Oy0R&n?%;82e?YIHd)`dq-RobE?_ zR;T8*FIcUbbHS}6m>O6#B+zT4Hzdvb!J&hY6Co1}P#6|6{|i;s?Z}B&LvFmMr&V<7 z-=@XMT-P>$PktDC7B_Y+FBo;o)pq7d-trZCO|3P)*1sL^6JZKUGZH<~7I#tMSbG;GtTbH+XdWg8Vhxb1 z@4xYUgD}5p8b+g$4u{Q(Z-#J0a3O~UH3DqHVCTSSE~_>TOj11l-sI4Z;i-M&S&Q}O z@0~i_6;Ir;XWK*94z#YhXXZV>2xpV##G$R#=8hZsr+)eARCFp(Xx{Mi`)~Y(8~gw0 zj~$_Q4484ijt8(arLH!*CP~+aT9~31<*g<0_({r95HH4qqi94?ZBhox3>D4oDljXg z5I7OjJwM&q{Ip*2Co%R!*G3(`(g`xuwBbIb*dxm@E4AFgt+(!m%oG{5GtP|ukD4k`RwpZaPi8(qLeDxHPWY5%2${gsEwBbW`yHFz#Sjl zInkKy@3K2`^`T7v=0+?VLX2ZX$oNOZ0sRNyql5-;btmWq$q3g`7nVjWoPwL+T=3y! zVgX5Q!wW&(X@eCXM&^~FmsUlm7hfEPXN+jpI>G;mfDzOPf#P^`zQHXJ989ikFex~2;G`?dzol{dTO4fHtbWY6Saq0DLQ;aQjh{1C})KxypB@VB>wN><2Xv3 zVj*A=}n#e7NU;*+wH9?X6XY z5(CY_RH(1k)m7^YrCQBqB6P2c{raQdzyBTo>m74XedxX8rW|YkrT=B=fsVPUQpfuV zIoQ33ZN5wZ;g28!dWN!dA88eUf)+ExkZJxVN~uINNd_s%`N9=Sgs^7Fx+D>mGl>a- zrU3^rs3YkksifqZi=CovxyF5N)x`vXQWQcbyI^caThM0WJw&@vwnx)Wh*5Bc_`u-y z_Gnt!y~q35V5PLDe6&@}E>-KQT=A6bwxuvF*N}||NoGv>2UsHD3^Ki|By`TJu zn;nw4d8S$CMl%nJ!fSv3L1jy}r`Sfl<(?>tHi<5O^V? zebl%w7*ipMKo%l=hiVw-Pzxg%;<5}z@u zP>Od5^hof%Cc8}i$v?MusfNU?GdHvwa2Q|~)cy(j|?*}98 z$f^=7MeyZybN*C0k#4wx?&(rxsun{?s`KS$+T}qY#$dQUKWf5W68n=be49txXp{rK zCw#i^5vRj5r>lVN37c+v*z498u<@iVztd^c5gu-4W+jE|!J!vnJ^8JJ*r(8h0O%T4 zk)elgzIpEEo7L50YH;~4$Cf|KeGsC4=@07vH|(pn7@lCIRndE#i2o;64S+i-fhEMc zAGhbXBnmo?+OAc~Q2 zo5M*7EB1qn-yDV=^c&B&Hu@+ts;{uE2 zNMmy(s-nT%iuINw(#ug{lOs{daaHAd1HCG}ryM8;{C=0SvPU~wtJt-)IuBuDI+h2! z6N3QH@A9m~Fl{o58wdX2eMv^@y!hhKum&UR$1Ju}r_LUP>1TW7Sw7idUKG-xPP#C; zuqMT+g7;-%c4nxZz&zn#u%Z~I1o03pFx6F~mckbz_?VOv4EdSV?qtK-vXg|gr#k41&MNhO6 zdfWGkX4e*uj)ig6!8Jnr#OIn9!XG1KLV}xzoE4d$->k+~c%EMBzRfclh`D zV7=n@cw$R1k)q5Im>R4fHnazaUcNZ=a{5dojc8?pyXC_V!bNGLA|gQCVKZWS;_r!y zckY}$c#x?H-I9m!;;7o?UH)&QKa$*p_y`5us;R%hH}qO=KB4uRkOl3{Ib#fv&`TKT zrL@TuyEEiajrVGl=M%}|08CLM4leT^m??lNuxpuhi99F(LkWu^f@%+`B`$^dp*+nM zit>Wt=Af1Mt`Z*u(ol+Ul8nCCqlbuH{KVbf_8LHmoNIWmhkbFACb~!pxP67F4wr}; z%LBmG$)({SBZOQuf|X2NrbgX@MoLPipD#vvfqYkh9l%4B7f9E+6{bE3_~|u6m@x8| zW){vCe&=HEWs`%k<0j`=+x6qT5ys;vg&T=v(%R@LSMu_exFKJOPhv^Wn4P6czUad@ zpOf&nI1wAE3g3-pr9^d>vOCLH3jWH0Y9Lyz1`x3YxneDv8GVm6T6&-wYrINH|u1I>`h#^-z7F0Hp#4O9d9g1_M9NPCM6GUE3Y z4;1{-g1=aRp4@amz{yEtii1be5a1^lIJUk(p%Cy{s#fyqRz9=Vt5ti&o`{kkiqg6) zx|HG1xv4|>nn)rFzJkw^%($&~3)aGFra@*eMXC=3?|Kf~pu}XeNxMw!h1R+bfkD;8 zJI&g0KszN)X+SIVCUQPTzLhJ8zH9vVB*KX|oIp6dNeh$!N+KDRd_MSGvmM&vd-;`Z}v7Ox0LK&`#q7nJh4PJ>W|nw zFlETMN@@4e$h)>4uFR!(sQ>5PZ(Kk4o?m(j;Ys}E(Vk>3;;`vs7JD?`h}TDZ|7iKu z58U}LSmTJ>Z((lC0qtLn7~;5KOJ4(A3{c=SK%q9b(86^Js+WZt<7x)ri$q-(0A`Zc zSjSialD>?B^<$7pk?{pzOhu|gj0?>ylZ+K6aXpKuN4Ypkk>JZUAb_QjLw8z_)aS62 zvU3^VoafT(*?c=Jja4<0TD9;&J1NueUmZgLx)0OSc7t@7kx)4vN z6LZN&N-hX(=K>EG(@wBtIx_9*$bO4tj|)zlUsy%zsmwnP6g_Ro^k23(R%t3-Guvwc zW0$y0y423RSwbGpkFU$G+0MB+8JV8HdgoQy^@65O!p$9}LwDVG*C7Ovf?jz){IZyT z)^7O%=#NEgOA+oiCPV1bp3qb1@-EWjY@y*yeq6BU=%%O*hBil867t zsOmqV% zX5&aFWAmvlGd3sJKv?8B+_o{^{myXCUF1X;G5q7>237($-lDPY!$gd+S2E?&y$XMp zv%#(eLU4*Zs!8;>FPqx|u%JNbm?e>@ ztt1h91@^(KOQSt^n6dSvr4#Fo1Tg~{q)F-T;yvaN3*`%&!mC6lN8Vfy} z4^B-T+}zVC*H2%ml%B4;5*B;VHgH3^|M5NZ_gvlEd-Xl@DC_mB?`iAG^>O_^%wxZr zJOOjMa}q>0N0ul@ln><&B>deZ^c+62Wm1}aj+s{vlZCiu_=SywYU9KtV|!CwvJ1t$ z0f)CI506FeN`rV#+g{H1=TTpKqS+)3NAoO=2r4uUyri~Q*faOz19+{NjLGYP6Qv|H z$lJN6%W*AYZp%s1l=4!NYA#7<-NJ-sy&a*L*@K6t-}vIaQN{32v{QP(DF3!U<01X zZ#w~ZD#3!27*)d$*dFG(fYt^=Cr%zd6ljgn->}h@?4TlY&XC0}irxsOR9Hx2i&vyP zRd`q2Vkwzw#Ax8hgYy>IVse3D4+9Z^Mau@Wuz1U6tARP+ zBeT=<)pr>}(f}hQX~$^mBRBXP+>rEcX(v}S@jFTp637bApvk`N@LO=kXl5BBGKf(v z8Qaco8cAFumpVUxjC~kmAI6X>ha3SGuuLrkTsUt}E|)R>$HwWPnAUX!i;}h4hyiPw=EIJbLKxy{i)bfOSZfM6~(h~^Tv7XoB>Wgp1iss5* zS>d3Qw1wHG|0VKaB6o*+*YPpV?hw}zN~|*g2~K)tv2)eZ6+=`LG$ED~uxP@Ap%mK$ zFXsU@WqkQ#oj;Z(+JOTQGYQO1q9%Scasx|EZctVPd?B!i@|@8m%8(_?^a2vMTI-@OAk5`1+9?^D*T+lrg69Ui`RQ<3GK>B#2B=xoV5 z>q^w}-F06ovo%rQP_AsK$Cq~OSXz%Rh62U>^xom+r22YebAKZ4DcvyE+BM$YJ-(|Y zSc7m8#o=+-<)sk^yVr=$&Zeh&aO$ueUq1 zJ%#UX+w(~tJg`=;HV(q3k2wd41TNF^w(AbM2PP=7{C)k=%We9WzvL@zf@xdHPgxQDP_~IbTOPhx zmyAq5*G0bwqx&g55uKM!1@T{3>a*Z?k31A05eLm(mGO&|j!51-$m*fh8nqFzt?3ZCbH*gm%nW+>SR6zW1ZX%*2hGdvY6=CWd!}X4eYvR*dHExHeQRW~}N5 zsmlDVo2azU`u@gJSe4^l{3jaF6()B!Zo8YB26IjrL+0lp`@-7MzG4Jx+#f`^OY;!e zi5bbppzPR)$u-5>qHh*thn=v9m|>hjUsV&TiSNqu?}k@AQCm+WxnPe{6CEYYM`?f& zrHCaOm~$Ea-Tr(17HnEz3J^{$_#53SIhTI8?uswua@Ih~34m7`(ge-C%yDKeQ?Wjz zHyfZHQ4~0;uQZrFVhvftMI;7kbzZnpQ~qfecu&xyqXXiffV+k&T(c!Ov3VhXRcY(Y zXgHt0ckWN%({ZSI?WUfdX>5`9>(;-%`ub>e=bi7pYR99uEF>+<=Pb@&gkQ(sxpGrO z1Jgy*pSB13ns0!I8PyRud(epw9wfqOaUcPZB>6^^EJ`1fIMsNN5dlg+EjHw4)DmKd zEb50Q@M8$6slP#6LHgDNc?sHe_H+0#*$T<(VUZ0rcO*nNa%+$pj7Hl)M(hMi>;@*L z$X@}@!4Y$D;fk^e(8UXkHI5PuV5xbNU^JXWO?(Ye7)r4#>}5m1U?|0GL9WqXxki`e z8c@MfybfTrM!6+!`MHzA=f1%9guNPNA41R__q7&7v1lmP3WW%Lh~0t_3nASVO4Ctj z&ffdzcy9dCxIWCD;66%tTw+9q=L-IJjpg}5XaV4guszi0fnDrttcCI%Vm;ubg2X=C z?QFiCN6%y0-q7?$SSJao1;bWa-TdHr6hbK1i49h_LTz|MvGTVD#jf0Il(~%+w*|2W z9$&EzG(A`Z6FWpXtm37q0ovY_N4C`Neso=nun3$49~!CY;PcfIw2RBLOa zxT)23eV;oJG&74II@H=cPz?Fg$RwWY%fcyY(iQYMZ#+<)>hB5pQ>Ed`W+p#nUh(fs zUhzS7?+LAriNsVBG6dqHq*%fO)d?FlVK8`rSR3vv;An9obIu#wR?0QzUam3AD9?&9 zsyqM$@qq;A@=6L-FL8{QwAL#QcV2;KvMt^unQ;K8v`guRK^)?q1jVmaAOWM`e3 z_(<#|n>fGUWXF<1%3>VHa3af^wZ+hhtWn06!r3GfIU8IOhco*78& zS5;m0`qg{i`|hI_sx?mdLSbL1;q%qp(bb9tnK!K6TvyFP65EjYiCl}i?AEHggZPA+ z&p~ybq*cR#_{vgdqwv6UJxgEMToE1!YgRE7S;bMtO44L?fL&tff&m&m;D87Cr8=r( zGgKBSodF!zgT^&J00aSp1_)d*c8NtL5I04p`WiT36bmV`0SAAdZ51P?fP4Sq>9?gC zli5ro<3ld`=){!U=UpBMpEDiQ<{gZ)3)FZ z3#faYaQmY1Y^1^b^w2-C4&YVPth1WFNVBsK@2$W+p47q6`}|mGL4xKQ)HxQf_KIzL(O=4I3Em` zN7D7lyoaVE2MtL#rVD{aX`ooriXr(n*C_>4!@CMs?h#wkxY(Dpds5+ObEsL!BONDe zUoWZeMV;XxdL^nyTqbvys?xXxKF!UxD{RrsiIE$+{i@XCS!4sm{E@dWKyM#W?s&%Sr+th( zJE;{~$n3yJBF15|(86gRG*OAEF@JC|Y+Z6jLw1`mAWmWyWK)D&p)v=*0T@oOldrsn z%IMoh#E|6l>IboR3sOq@sgV(hPtSB0YwGH2i`s*u{kZeSbkU14=h}l9s;srt!baAL zUt&zy8zM07^hKrtO@ai|+*Uq2vk{4T$Y-Y~u}}65c&#_|L9(Lh6r8BssvCyoT%}bp zl}xLVhs!Sen%ieh#n;j~Z4JLWcj+}KakiXVxPZ@hHw-fkcL6p5{6M!#i1*iOXUWWr zs=n>Qb;YE2*3h)4^4)`1_p%Nq*6HoK7YpDfG`nd4#X4>1BUmu2 z%|;%^Rs-g@NpzsCjqh#2SO|LjVALO84r+?eVKuGTK*0^rlw6Ba-dhU(!i%4K8n|@b zA}S~YnPO8L#p>13+<-f5ao96~p-$St3iXwC(@cv{qCQj9J~`8?|IIqiFPaM2mtSO5 zjW9JpW#X(sfYO^Ti0T$`G>(ZjDMpcAl<+aW+Yple=|p>W%c28Mz>E#Tx#7O(*4(n~ z<{F0@=ImnTf%*`ldNUd}r&vrv5cr&GjyA9 zDh||qM5H{aF#sKZm?)VcIDo#y8CqYz^z|Ob2ebp^->Mezb=ZaesY=(UxEqap{^a!nJH{&ZDBpUV>&!@^VhZ!xz^lT$1s`056txv8E@_f?3QmZ^`4QGNJYeBOqcvlnQ+7rx=ORKG z9bV7@*Ua|Gp4nD9wT?S+z z_$F=hQCwO1>o3^WdDv^d&d_YIRQ>1??W8R{u=~Vr>jG$ zsjd|d9$3x>Q$f4a7qm4!F@G|1@Yq^q^S`Q@d%pR$Tb`2nL#@=d*hlV=CW>cw<&t}SumCz@# zEs~jdCK?F^W5HNF6U@X<#Dd{i45cPbZBx4pOHKPkITJ2t+U0g zAi11zyJ904prBEBf&OSBt$ z5c5`!D;dU1W-^ee-4vO=gl+3vbJ>N@0W%7fR(;NJ-;u4?^W=H$`A*{N&~ORt#J7Np z03?1oeP|PiA{?pWssqpqbQ3Sd&%-HJ2;(*rf9>w2KMoy4SfP?pG;qlQu$hp=RzR_r zRl%zMR%(7ARPD?+5`z|xxe}h*n<~tXHT-*B#rkO0pN>Ub)DS9$A@KeqwH>yX)T_ znArd55aWv|XMY}vs1wXMr9lw|NYLneHi`lMPrv7r&JE`Ur-|W(dM-b(ObeRY)|EmkChi< zo0rr()C=*O$Hv-sHYZw*cZ`jV98DvdK!w}N57f(8$6@s&=ai;_0h-+D*x?Q0mk{=l z6d4WpHvg97X5?JW94eJc}(}K8a6)0dAB-dAg+?i2=AWpk-fx4*zHK0G{H=bco|m}KBwflUP?{QF?9+(>uO>O zVqPIxavTV($OVAM0UnU&Wh>>#yrIwmi!*F-hAb8iNsL4m`uAAEVWsS@3_D$0lrXuZ zG|Rb_T9^_}xQ(R@FNZ9IV??DNv{+mf`b<^0)-?1C)E^1z}`CfrJe1ga}|bi7AKnpXDoHc4YUb;WqhR-GZpsjokJ$Q$n4&wblp>&=>>55 zt%%b__$JqI5I$=E3Ak%Oec+r@0d;PI+(#Kk9i{p6dc#0Nv%)gkVU5IdL5NR%yv7W?@ng(?a- zXr)*j+cN>MwQ>P#Avb_V%NJA_;ot?mfaNP7_i;QEj%Nm7zU9_LiT0ekjWmk2OxB7K zehH6TkA$k=2~dFp!^;$oWe1dFGJ*`w<8gmhaXZ#L1Yi$Sw|J;2MrC8!!Q8@F+xn$0 z)|;i=WWiqs2gs|2qIl;H-rB!?9kDF9L7^eU_6k=T8IQJ9#@nEv9!M1TO_guGb^Jgm z5MG8t|NRu!x~_itY(39;>CG{W0wV0A6~zdoO+mtxIvLf%c_N!9jyIE-5;4-m zxN@#GJ`DUOb>uCym|Lj7#CF4?Xw-3{P_jb(kaU6;T4r<-wiENB-nC(F5-pmL2h23u ze$1G#tvG*U%Y*b27*b3Uki{7GRH3%1!r!fMr7Dtz2YVJ$cBM_FOQl#mp$vwV!6ID$ z6;q)Q&JrnP89pUWV%a0ih1B$Wj#LA_uo`YS89C`>=T2)n=8UCJSe;?3Gi{Ao2P?;_ z#r!cv2~?FB-zygIT9ww^i&ErIAOck)ueTL2$@hBaIdCSgiSZI}f~o^=!u2}<1=6x` zbbTl>TA=-qp_nzS2Ynr;7#IesWMc&DtKWY6?ZxQ>Lz&@1(4kFOTuGP~Xh^#AuG!13gv4%i)mR4q5&v~-Nmc=j5O>9X!zAji*aQ&T$<_arP5WSkh4&^437n;?NQntHqKsC(}`r*&9no({@KX z>d?}fN?d#$uGoB*Gx4Mz_#z{e-XPQV0>pNQeW!LZ4@>?7ydqXFwv!6}0$L+J>hh3D5h zEijz0FhY0r(xm{bNGuuZS3%fVBJ z1ps7J(27yR!X(^lzg}q1+NeG|oImx+!Q@CKrY>#1SIxF&vLF6(r4uf9GWjkF_!O;$ zk-5rU@6uc&M+e5MiB6{-H_d1+SL48*U8(WP;cjsx=R#!}A4BcVCL8-_8)s@TV zfK-=4|?!x#nEcq}*N|3^$b8T|>pYEEeC8ITF7s zObItEF8tvv9Cr~2W%J9EPH zOQ-*_YO+{N#~wUT&gyqA7jJmrn8j`}gRy=}doVOJHx;lHrw(_9 z4@~47ZjWW!m5kQL@`H0j(V_hdv$?(wdjNLauK;gX)mg?ZJ&ra4CV&s2DRL363qPu)d_6%4xUIW5OQjf z*s*f4Xvw9HWfYh9m@^)N-vrz}vALbHW=^h|lU{8!(;5skFsP`mUR!^uUVqcN@wV&N z4wQDARhCo|a9^t<%#npPL=dE_j{244_|fU)XshB3_?H)MI2<28t`DQ$(yIE{KbfrN z(C*t8%fC!hy#=`ir|q$Br_e~brq(+X6Qx7>Ky6-VZ5M0yDcA!C)wgqxyrCb&dlxBy z6y?PV)F>7>K?M@P?Q}S9svq5SG(%Nnusd#Q3MHityfmO!c9U>BsMN)ppq1>QXvIlF z&ap<)0@I=u{S9nQaz9!L#6a86${}HA0Fqa95_VKHG9mqt=|mwDE@VI|?Ufn>s}A^T zYAw0SGFkQ0^~dU3uC5NKtAWbHLm4t)dJMl-@G5IHr81Dw(NjiJ3V>s{phvKJnP6-! zz}JVDBvzL+(~yOz0HIY9vJV2Be*8RB1(QfVcOM-xgpLAJLVWLqZE$7Z;!lMO5Y4>Q z8%qv;MBOu62$q=HngTRgJ`pO^W9hM>#673>t+)fGNNFTLbAzwYEvH+h(ENGzd?!1qA_T9(VNJXkutK6q<4Tbg zlXGk|w9nGvNcKIZ9c{miu^>;mj`>IX29>`*MsX01hGLkPI~BWEj2Ya{`V>Zth)sUr zs~C}k(DT?4Brx`wS|-hu`f5rII#yi|C+%y&pyKofylXBnmvmAjQ!Ex6@tU|#%mc#2 zs8Zp0$ByjDv&KU9JQQuPUe2oGvPHL<0X2C4gS+nf@ZR~%?Yoe-0Rjo!b1Q`cr7|(-_lDSAT>W0`SQ| z*)pCZU%B~t)2A>-Wbwkk-P#|4%d)AbV6*%zYf((X=8t?U2PTO#k>VXkNXx=cl$^#V zH4Br7jfT+7*#w!An!oJ#q;_Si-}QdK+F#*!8qbW9fuYOrh8`vMAJu*62*rBQ^{8}> z?nv{1MLAC7Cp7&nd`AY9eKO8<4K2s1{S?l3KQk`uSpBf($sVfLN9Er3)qhg|PwfisUBtas^%ScK;m*je>3rm{7MS6ks4wx) z_*RuZ$w_1Gu71tvQ&sI&MLn!4wtk;i{}H44SN5s8jXu9DeX5Gx3PY``$(<6nYRzo*37aweAlc_}qtEr;IFoT3#_330)8{$dCw*#Xlux10alMKft$>N7z;ROG z*aTnO(hz>fWNjSMtocK#HH}^{hohr}ae;67T~nt2yV@E2ZUc_r(i?hs_UctVkQ=}l zOpe+i&5=H&I^x^CNFT;~{^8b`{s?1Il&8)qV_;K&qq#fS!u3#E1R+Q}(rY2U$a$;R zLRgV==t8B1E>v3RHl-cvwS&D@csTT5?VXE>mO?eguMXs72D+GmVa!0WKlYuH04Igj zTmc8hd>q`Gk1t_9eojA4lD9gN|T{9q-+_{=KpC{Tjf= zyH0Ms>$7;*HNDx@nTfh1pCj_wmd}=aBKQ~Iq9!t+tq&i?)Ye-J;VrnMdr;P!Wn*ry zANyB+(%5qYvSy{%|>+}r9UU<4cpq~h^fJ+T^rT$61gt(ZbQc{O?SAi;z z0xU~notGee4{5ix%@1nXtPD9IM<8l7jSN3C`_pO-RhJRy!UGANkFzJT9r|f%`aI-l zJXCsm=mujWLx4INJOYGTsTi~J)W=?ZWOaJ_b~-&Z& zT64K9_z_95E<6spK#OFhXrt;i5dl=`;=&ux;PXO{I$JT zj93;)X;>JBift>`p@rr!C|=b|)w$LBsr!)9@Li_kr^jZ!Ztua-#nZFt%};2{3&qL7 z7)nSj-nCeG_-9bb^VHp8+oU~;vNU(D-jZ(37Pn~zah%W$;JBYNa2)mzpe`jiE+sh5 zY(m++I_QYm(>!GI6b@+~;?!$#oX{1)aY9$LGoULqJ!Q~;^bna}27NIHRt}j0vxl_6 z^mY$|-wYbIJ)W~No|ayG^LQ|vR2swCF_b>C1?U04TtAkx7)wEq8e_pwCZ{lz9mC+$ zeVB)#-t<$Z+b}P`L3*P60%~*_wDf^g#u`4Xxl$PU7A-ZUv<=+*HRE38Z!mz+ImLAK z-*m^?2~YE|sk~;~jvGM#eyIIAV+mFLEXs(BKx~xgfmmY1`sI5dk5)uw(NT8*&OVA? zC>Bgk7~luDO=x{2`Lxdu&euzMxmQOLI|^*`8+s97ALIrwsZ1uI))!Mrr_J)gX1;m2 z`B?MGrdg1GG_hRbuK|G3_I0b5MLS(u3O?9KW#JU2E}Lu|@?*A-+dgmGuwAe*t^WqH z3t%(x3&o;--m+o2V7Y8Tty!DJLz~4Ja(p;2LP3);Q@yt0M7nyzk50UoTSzwp&$%s2 zXfOS~|3~M$&v&kzuS1I75{|d`NQE41m)vY*rvvR)#(l#_XM93)zW@D;hYxQj!P|52 z&R8scdUEu(#cD4_-udzM_3Sv`hF;^;XUCal%uUUaooLTaJSR0ZY!b{-o>~o7tIn{_ z)Jx%5@R1q+jQaVR%QM>CjGE147|l1GEuapGcMuVJ1Ce7$SYiqK)T!|`BLj=iqS`Gs zW$q*jYe8(<7BTwnINcU}N$&IiXyZKd9{R6zka%18d*X<#zwNbS#<^{uXJp~#D)t3o z(REb0xKCl>QZwB=IyX?9yLD=LEq&z310U?HBBtQT&}~Q5haL)ycZTMN zK5cPi#`ZV5uskFK2F~E# zyixebA?{`Ml=AyMJ`$Ph9N>4o)vbLGSWy2~_(+--!9$~rA9?8F_^2ZYE_RG}0uM3A z*Fou%ZrAMdA@m9SpkDoJ-BHNd(uY-hzK>RR0#yb5r2dv&mW1Lh$_fL7?o^N(Kh;u zQa>HF*qkn_)#W;&Si)u%waJYLa{{7R6-)R*5J-H`%3!#7#qkrCJRsjv^cB?{P}M8? z41qGAN!Qq>!ID9)%6eTWZthc7-K*Y*3wXE7z=4W23V+;OhNc!_+AI724T-=$KYCf@*uIkta zqPO23RjNH7FYga89k1zi#ZWiYlsL2u3kpO)ZIO5}o@Fx!${6RjAn zc&^W2fx}eyg!v=0I%vr(^E{C<%!TGeigu$yy61gIk1?!Ch!C>clIOAv0P7%tRS%8Epfd zL?^MV(a;enAH~&8T1o~uKSLPe!7~ICs~dQ)AF+H{AI3;DkB(pU2wZwRsoIgsqhkn< z9X^u!&}f|w9d*KOeJ!s7*hJxo_H{i=3Our=MfoC8lFg{3;)q&lOozYt##v@3#2d|# zIRP9H5F}9DaD^9Oz(xEo5Mcm>0K*n2^e7>Gzu#(=uYmbRV z)h+#079kf_Gq+ixdx zB@t_H=p}82UXt`z^orZpMX!kK*Xjptis%PrZpZ`t2Kag50hA|{uk_yI;6Pb;fXdc; z2oGSg;9lVYlqViFcz~tRj_?3*eT9^OJfBy8X!-_pd>Q5U&N_&^#Aytm4OtfXrEuV+ zirp!AP27J-ux-NL+sFYJ32J$dO)|~87h|zNW>NiMF6dhfJdpJ+hr_-I5>5H+WV9(S zlk+AqV5_74J6LeIQDcuAsW?DMw{+hIM(bzd?~9~JxPr`F{j9PDD2%&Eb%je3TxI&m zVz_fmpFi3OZ~o%qqI&=0-kWaPtEropC)O9M)y4IR+ctk6Su_7!ZEhZT&z*O^hq&by z=&^OIkxxmfHs-;BD=TJ0@UPfo$t83A*s5s7Q%BBm6Rdp~889oBAYc%*a$kV=VYa+H z$NP#U2~&nv{PobjA{0Tav_J&3(w?CPSDKsps)vH4c~ekeFK67~2;-XIiude9lK7Iq~!F zTrDo7=Z-&c?DTrnPB_N|zf0g2`eN+qJ%HLCpZPuA5sLsIRcF)yUE%=LN>{%xunRph z_Vu0n+S(C(nev3CgAk zx=P3Mw9MqG!iv#e7|W9zj1t0uyN!ZwIJnG654pgv#kPbC3co;4XkV8^gQJveN9|k% z=rkp20IeiIk#nrKoCEIV90Nj-rr4W>*Fj&>;@81fiiMG_C$s82mp z7*G%J0Kwm(yNer#i#w&EjM$>~WSWA|R zUH{gsaxw`??7rJh4a7q+N-a<_$ry27m>N+)(kR zDaFO6X(VezGT6SS_v4R9NP%4GG0-Xuq49ps$5-!r-*X%O7x9UWfIV<>UG1eu<&SLt zZEuO*HM)%m_pMe7Ae}~b#xV&G1RX`rHFaVKu|$%_s`{(3U~zVC&%h0#qJQ&?fnso9 zWzXDfAr$Qnl*Vou*f*e7;isI5#xj{$6jI}-{n~evRoC(_f9}bBw)$etbfG%%CIMuVqrAL!ymfhYm^h;@6COm45&)25HiiJFzATq~lxn&R%^D z_7nE|`@MU=ZS-p@k9It;9>ff)!?8}_UZ3>)=d#D2xX4@AL#L`$dm5G9jJN&Ix~EF9J}#5 zPbqifcSMf=N8OS2<7ZSgz(E)_^8roAHU0}Ip=g1f4OJKpsfx8f{;R)@Xa1J!YS`Mer$5H=^Nr;R*xNJ>PiVa-Wc*C4 z@`jAx_?@S=ZFy0<*zz34;K6e-h4K$M_Fn%_^=)}kyV&yNPRyfW%Ofm`Ee~`5$(?Z1 z8ibY3+Oo~lUdm8h#1!+}y!{UhnJR$ZYC}jyZ#_w?Mjo*1{n_r!7 zh$XPuA3OOv@T-IyqyMM+{A#BxcMA80KEe5FH_5ys>AS#9XKU=A);;Z^ko~YJ+B&2~ zX^%9<9>ksZ$k^ddNx1o^{=EOW?uiB5CahExD-|@J*n*pzWZsS6c}lsy;0gty{8!^Xq8H|OTPvbV9yp(uwb!*;X4_{Dx}H8H2}|4BIN_ z-st}+uSpVnj^0@`2X)f2R^Qz(TB$KP&ahwi84ZWn;|M0hUm#Ed8{k^ zwk(=aGRq89hv$jJ*`o#jh_A!6_Xr;d`j1waIG!7csrjv+T32S}qlOzTWq(MP)UH_R zzhtHVlCTaSo+JF8WmAVJ$-?+~k&4rUgKhMI!j{k($PmDUqJ0H1T4Z7IoD2aicnNWG z0!xY{PjKPm0hM#G8_CGUjszZs=lUw8=V-H;jgAV#KT3vwl&YZ7B`?wkf~~4b0jR2o z)YYZvq;E1ed1~^jlV+1Smz~HJS5l3Y;o(rokxiMD6~rf8eufpJ%nr$^&m;9=QHeogTn|jh*_89)$E@1F1{; zakP>mMtr@^rRuDOo^0Dd@af^{a3FlBSz8*-hH^vE*&C5S=+I3SQ*_t7-p$pfW}`uO zYPy}BSN{TGtYfYqE0H8y$nWequ&=qdTZ%X)REs-4Fj;MMlGX`Nwo{qf1wsY9L)v_c z=-3%DP2Iz<1IG&H@xv(!Sku=-u!es9`_Qi^l$`P%-7V=4{eoXaa>O!<MN9&0?bX0obTI4$6M8qS9sXPGZ01F3!EOT3m;HIz1m(wjPONv2^WVdx}wXt{rk zQZdHXob(iAY@v+Un zRNWH?+7YAdi)qSGSBoBFpEi$rB{Ak(hycof5Mi9WNFffJMZ#Xtiv9tuAX~Jrh`4<{ z@&lF>2SMoo(1})Rg-A!(MQAS=X^_;#*as6&B-HmNR2Krs<0t~-f%3;L@^;?<1t&~S zgQ14qLR^;K1R$%LA!lP!wE4wQV|jG^XmT+)I=4Kq_vBRkoOXPAZ93zzU->2Nb5@Vj z21EHYfXf7aVxM*%ep_zvl}qYbz0#0)ya6f<2Bv?XWh#t06?%bl@pj$A7H9)4B2hpY;#3mF1!|$RFdh~V z%-}~QEG|68QC;Fg`#N3M=+qi$<7K_b%!DJu>e8OILfM+iV=yWDb{Lrm z=xG5lTF@)CI8yG`W6Gw?kfe|=gL8t(V+%hH&?&{X1`X}p6@bm0D%s!Eh^?Z54tCX6F{%E5*B!1G6%6VYCjx+5{ML&q4o z6y{G$mcYhRH$5J+kkzs*%{(&qD2hMKeQ{1J4J;LNVr!v~fNv@G@N7#nvW6@V4vweO z;i5(@&okHt%1W4#DO+`a5YHg_X6j7x4cjuD0-#rTi8*I_E8E}hJ=|wpWk$PxSc!O8 z_cEHHxB%*dcKdb~LP9?uI9;&Sea#!jv)S<*n*H_{A5S;N;v-`&yKZqGy!qyXZi{Yr zjg7>|8tKQ!1Et9-SeZbe%(fJmzW3zNY$Ijy-?-G=mrw2=+K<1X{mJ~k=F*LROR6zD zbn;%T=``e%An=I`J_HAJSDhwZi7`oWqHzM}I~2;sL7TRg8uxKcDzevza%zHdcq^_` zrzH@919_Gg=%h^!R1e|t5(5}Zgq0FKyupANsfUFVfou$B2{$x(LzA!pV33?3bXwqG zc&;zti)Nyh^&N?tj$|L1nbAY=-ko8xmx&{7$C28@(*`Fkd48>HZg+xcEzzWdR*HaU=ijS#(%+yS-hDH%gKGuH%!F$DwE_HR83l-L6|5 zi^F%V9l!I=<7;=RPp+&r=Q7p(LrX`4uFCkn`oyhzxvbwhQQtRSaRrYq4ehUH=9+6X z3Md2c*R^90SCof!SD33QzV<+nqP|8ehEA+rP6QJNGUafloT-4lKxjRPtKGNg ztEiP~DmaiyET^Z`ePdRDadf*xQO*O~`jLvMbW9 zzy00sx$EZK%xwDbsdv5mo)%~&-*pLg9gC7z5NDsE(*o8yL{O01m>$~Aj&dW$(#?tYsGi~wKa~#l|b&8&ng9~dT+Y(MI}?hR;5EV{xaSi z3C6$;;ib1;nFb4aD<0v>rSfRC%J*uat`xX)e^=>4H5vkPQzx?5=cpFrBsd?a!+p zN2%``N`Bw{jKxuQmon~D)N8ZUEoNA=-QJ2CL~NaiDsZ*t7Sdrb$2<1r3F# z^ngLtpn-owd`!j1YLMsE~ope0T@jSV=Epck~_MSvEx5^`6fhL0*qBsMf!!Mb&> z1@q-?dGg^vzG3?%JTcs=a$&{6LDrSlY#h8m?Eo*x`gVHj8$uR76Z@nv$^&B+j~J_% z<|@|cTi0L4^w?_k(Yf55y1Ry(^>tE?)%1sEhwE#d-D}lqp`(ONfp7qsEb+1}@@Xy7 zlom06i(Em=2%{m5iFK@##7C1fMNZP$WRg0X$+d#&W`3AA0|J+sAyOh(l2i+CM%XYM zU*SN}bDkhP0JHaj0#LDCJ9-CA=N^7*NI`&!I^}u8H z*r#q9jrYA~H-Dw?HM_rSvi>h{nJrDgW%f-F<<5Gojir<0*Ll)LRGUY=q324wt)ryx zs-dGiqr3na6!8Kz@ujVaFKunhmv#is4u{R&=|iF)9T)wmm<}*4;tMN!O!1{P^q6Pf zA-=SE>5bmFgD~-+hYot!(w7=N$n%EIbbCDKWIQ!Jy>mS1W^50-F?rzv-dECs!qO2I zc<%Z!oWmI4Lu-ry&o*b|Sp+?7scW}yrKNto8`cL4InR7^WY-C0S?l2B$6O=e) zq^8)=ebfS|(MmNPIILPkXDwu$qt~wfztDNzCo*YC&Fax2U2%$WW-lmG1TD0&Z$}yPE%wxDHg{l7lUJ>!I4m;%(d`(sVe?yA(7d!qd8*sb1Qm;#zMVX>&B)|H^PSMX0_O{g{ zh6woI`oi5NhWrn&ir+IT){YT{9gno?cZtOwCODC18 z^7o8#7xw}3SF#wOk5J2C)_I_ZF%K?T1Q&B7x@au`K{xKedSDqc>H$9lWw;4o8GMn! zxcvw*0k@H01a6~BHm0lwype}%$+fr=iTZtB1>Ibf@;z&Y>n!LwBuThVaurg6;+j{W z%gg7z#13%CB@-$98>W?cT(Kbdj&@6{i^c3F`2=PmRn60KaKU0_Si z^2wbWiJFr6^XG5sFUREeCZa9`JL?mOQ{FtWr7Xb|i|*}5rh9DU%aI;MJw z+!rPdEj%Q^11;&;RKBITrBh3vTQb{cxlGh|;Xt-DFX++}bYmadyQLNrM^sUdMW9-N zc5HEet!zcU@In?pyavdSI|w0XaYG;sB|KOqZU_-+`X`iou`VZ}h{vCtfQQ08okVL( zr!~^92-nkBbl8wcWoO-vpQz9h7gO~IzM1yXyMwj)c5JAeas+PZPOk0BRgeL*dpMCe z)O~A}*4;ahrQX{ubxscOBHGLP0v0wU3r*C4L!5V&Bcr8KXmm7%Gz(Y^r!0W;Nd3{J zzg&VB_2-v1mbBK=p{0A5o>($ZqZ_JQ(Y_%CmUuzmMP_>%4xxJ$%UYN2)LjXq=(eqX z&su3f9i4!C=;GX3h~I^n%`rqXTqtS{V7G96j7$za#UxI8YsDOzTr{pzH_?Kft>+fZ zW!f&7LezAfs`1)YGm&|<_PvBB)E{hV6J_e>cdpZ+MB?x@>vZjsuJ>!IaPqJG%zws0 zA*0&03&lz->hJc}v%vMlo^xLPEPO#M@Kr=2Iqe5hcUVlEgS0n6LV8`_i&d%7-?zrx zmNnYUsELTlWe#=9AJp-)_WLHCg-gTEoH%Zj@)K+#j5!Py`OF?bq-7}W91 z;Ct~igKdu3R#e>bt2tZIlgWBAm4P%TK1~@EeLhP@1MP&ZBMF2(Ki zsgt+~Ss<*a;RTBC31>1M56OTh}qsQ40#hvF#Yf}~#YU@>?g6c2|&@j`yU>9E_1 zwqy!sNsBdMBPmbd!U1a{Y_%pD4QtUCQbYBM(}(26!AwFc7UNpT?he{LHoMiXD8qAe zt-0suUN*-xW0yMM+Fph~*|+~V-g+DrejnM&3EHb3{wAj~<3iu5j5yu|j^Hyx>cpRl)uu&G z$C|BfdL>lyf8jmjZ+{P*&6a9Qdlo9YyeZEO-?+`2^bYJFQ0sx5e@^@1=J@>&eRQRJ zs=4`UNcA^Qb${y1U-`dnQD?j*AVK#sB*>^N|j6a0dVx>46VPId!qoW!sSKjH&| zvy&sRNewb=5lLDGVMM?ft!RJIimNylqVFW9=u~ z7uu$K+iJV5g3Ut3WZZ}YAs@V;--|6+SxPI5l zQk_nV=iTo4Iudh{tO#Ypc?~HZq0u?2{ zswUwVq&|?;#fA-KR)e>4Y(fpkLeRE*HLa74=8?y7;QJ%H7EZ)Mw&LjG(4O7RvG&{z zW5?e=muy7}n?HZsUu81$w=Wd5A1>RG&N1M-@@LV6XPNj#VA_IIFFv>9AJHcSe;-Fmubk<^sN8{%O*hkf zKZW+PWI7r+;`q?;P%2(u^M*K#5OPry$^pV`8O$CF2dFbRi*LOu={&bB+E?^4=}|GA zTZ2pvu@UAZY?2bgcuH2YN#Se5-F2?sIo~ySqz-@-+F_oZ@3fd>w9|vwb^rNwits(> zV8q`cxm-Un`L%${#K(lr>mm0VXtf|gH0!l*!(~h$7pcij!XPu8$`p>qLSU@aMywu6 zjb;ZdvG!e`?1D;IaX9AVj(3Hm;JosNS`G*`gpK#eM$NabEKe)R4&gH7A z-t0eQaatywA$0d1Wk3%pKF^}<0k6ZdY;w6! z&2Cwfe0#m@Uq8C!M;@L^1o0GOV!B2u9`%QtKYjS{;&1)d%#3>DxH_`=r{kNK2>ZdS z-$kABA3?X^Q}>+}>5beBIS%M<#LWV&ggKynmdYKT>%-U{4#6*u8qkx2d&Ven5)VPs zU?Wo^DA2O-?aFDb)Ehf$8Gb1*_j>>)qz?va-jNR?D_{^#=peg}1pqLjeD4^r@ zEo-Vu5!# zgVwO);=oWJ?B+5uHl|Eo4ZkBgH|ZY;3jMs$>-QCXf_ri|*@InF)$bw?y^Fg2U1Ys? z5n1g5RN@pfyNkTUF7nz_{hz|YMLL)8f}X(IO)}VGoF;-XdPR=f2^FIpI`B}7BsYxi zhAAY~{bBrgorgnwceKD5;x9lRLG+n8Ff3GMeuE*E`frPai=r&S!3Lk@1^N>44g#~B zW58%3zG2XLzFeNkIdi1{IYMBTZ=Lp&Ar{E1v8~IWt;|pE@$O*XwgnO+>5Npg-5lWG9A_@4VHO_1JSU zPa;$Ku&Rw}W=E(HPgJu}`+vNUfp z*~>|94AE|4SKhC_0K0OHerGwr20#J)AlxK?pMvBQos`~C@gAxHAU+@u0tNWDi~1sN zLA4)#1Q3vH62*Zj4yZ~c;u%Elgfn4Z*hs(ZkE?NIDC!%GhmS=SU*?$CTC1SIPj3-L zO@pO--v9E;>(`o|4e7&JD$c&eP{1IQ-?f>|Iir%v;04TRxjR^n__CGZY<%1Py#J=7 zg)uPsnL;IonSV+%hjW7wUn1n{+o2P;zW1Ri+h`euHxYKm`HA73nu{DCdYd2fDkm@4Y`#9!ce^QQJ3%XX@oxvfIiw(jFGfoU|jn@0O$G(OLn8 z(F#L3p*;}Y)dyh1uBhi|!M;fNFZNy#>nrRj*He6fu%NQwunUL=1MMr+O`w$pm+ROq zvK;*um|X-(>OTwsAdeuaCIkvBTmuVLbUjoYNf9b?aFnjLs)wpt5U!>K40L%KDvAN*amtu+ zO#lO}00z(H=j8(4PHq5%@SG45iX(U37KH2o5oY`B!-%y1eIOxx;qN+F>3Ps^)zy4v zA&{#lE7fRuINm&%h&l?5(afEZO#& z6HArAfKp!`zxprQLB!W)5v8fCAJb3vGDl#QXDDdSkTsho7dOq*Y5Hf4^Jtt$W0G2C zj8ga*$>|uGykYLeAoAu#FtezCZG+1i~$Bb&{yopI~CxNCYQpEC0{z1*6is8WkH?tFXR{Wg~JQ)U3hHa z^9vgb7ZxrrIF$uIF1~l+<8tZpg8eiOHx@1~n871$=wma7mi0ouylA&LADGv7FZ)Wi zWqV$n?oZ|K%|Dtq<@3tOa;FoEDNdhOt}a`+=whZaoZ?%T;K;IG-+)sKaRd_FT-o^6 zMt%Lh_nkE8_e<9}UmJ^k?I%lzRhep2B7GS&!N5lP97@(3$|*gU#p>1(Oev~2&}QEQSKU4_5Qlk5@OUm#gNy zd(m!nJ}}_bg4W!!-|luRP7Pon+Yqg=&IF5RfL0PK3RE9Nxr|FEr^Gs#KkA%k-FT#d zGNRM_ypUSwobFZ)8H!Qql0L|*RWXxr^`Z)0U1wpz<>f{7eT&P>EHpT@*iLQ!QmVb^ zV>!W-<7$5MBL9t_WQoDu$?+po$Bs=M8Bg|oyzZ7-w7)BR>z1p(h^kxvqA&|<3|9AY zlq%{d-#p5K5fO^P5t1(>t1ekn+Ik3U2R+1`RE3F0oG2ySyyPH<@(^z5)qTdCTgl=| zwmKi`c_ms2)gNB8JP>ClW4kF54Fs(=&8B$V4hUQbI`7F;EgRw@GVaS&s zUiJl?4*zm2>P8+rpQa%c0#U!V;Ih>M#V$Y{ru9n@(&xJPV6X?Ic8cqi*;P7lwbl(? z?c>|hxzrCkPm>4MhE+;JBrJ?1xvrriKxBK5_N;;JbAf>XtU)MKZ2+ z^uRcgl7XItlY_zSBK6;BC6$e|m|3*Y%7AXPi0(jz#CFG4AHml}u2z9x71&{r6N1dviFDb9DU}&FlIu4A40e z%;p?9QAUoDJ+f8C3VC}TA>t?O`LNxd&)Jn>?&IOrxc^a!8f#6Onq3YTSJBEq(2B&y z>pJYh2fM4vhbHnlzLrj3!7)@TTT6BQ!_76n-%`lN38HbzhVeFDAWmc;*j)*! zkxFgNVaGr(KZAKix;dIUyU+yzsEl-oRA~a(fK-WAarHcKtC97MPGYET4uNO~;DM+1 z3j~VRAIg4QxK1&2ozT;R$&lzPk*`Uj)U39Wt*6n1rLCtrnp0_Z1M`N;1XZ63-R1hm+jRxiC`dL)t>$xMwtH)(a-N|S?eO>LC(oo7umT_e|``M7^AasNpq zT>Jxf*fwF0+N?MGZ!JFf)BjOb(`~&xbtwGV(f5pej`SMr1?m!91kTMUU(rYHQT2_e z8WC%lq?&Lu--ny@*G&ze)U5pr_xIh}8!q+xF7>~-RN=)9p8WMQq?};NFG^AaB;9?( zsv?Bub-jfZbPx)XNv|49FJ??g8{qfmy_z>0H!Z7@CN-IKWHeuR#S5K-2&`Bf(mXQ7 z9skR(UbwPB04HS7+fsV~*GFQ+wE#3EhmUPM9~r&FaSw9}bVK?k?{d&H*x0 z=;h4Fq74hQEqQfuu*;k5|RZx4sSvw0_^lx4PfzT=~}e zM)$9cip+)#upZkgPA4zh%S0HqhQzJNNK{~P73>aM+%;1@b!z^|k(Cqaa2P=k;q;fS z<}uB@u<+xtS6&(W$2(4%Zi}T-G5jMfp1rykMJ=8KrI}Ri=MXZmp_j3W!92aff<#Fo z^r8j|Bw9&bWRyALyd*)DvUYOZSrRCP@YD6PW-zrVRP<20qE`W12||UDBaF8uh(p54 zQWuqPpR8@vwAw?{+`~GHj5?RH4^FijEA1}vQn#0qixyR*N)>%dEGs1wTv$Y0WXuOG z`qE8wC-}l@Vqh2l`i~HHw;>OOtK8cnXC9Wx&zP+>D~8@7oh?GES!b4pwJ#5pAf ziGqx=z~><7h@H%loutMtsUDLg2YF>R>3^hyfYpzK!gf^Z=+98)D$4pO1)+f>_79Cj z!zhRD&6n2v9<|M7V4QKgzEy7+h}2Ll8HkhF7k~WRm5si+XS>#L&tfBqd$y}mU*~G@ zA=uP(tfRD0qoCxPlBNH%Ioc>Wz1xWqlC43@fuG8;VJQPTI7+Y z`nXWK^CYIVF`tdjURGL<#(Pz@elOLi-ADmq~Zxi*%gIqX@eN%>w4^XZ(Fbuj6Ye z{S~BYBuLpv;Vw{;i;2OdL(pM|eTiH`vnN_DYBKSaw0J3LvHomzRKqxUZ%ZwrE;mmH z>G$BUxpegBBERN(U^r<{*uyr{vZGY86mu&suV#fF98xG38(4|F83RCn1ViBYI!aFv z1yhaKd3l{~);o#fTN6ZN=B`5lF6IY%pFjfbrCBkVAan%!5{P=MFYkXZ(x#SgAAI5y zH|_Cv$47(vBb{#h(7;saWb5c`xjcP?n$b4@MomqqH#;3aba@nqsc;&Q?< z#a8>7gsR9lCIw&el9`R>OQ_(bH}nEMUg6`g3b_Lcpoin0;IR;-44>5rWF9er!p?Qb zbM){zvAKwEAYS*q?|l^D5T}3|!l>uauWTz4S&70LJgQW0e#+&skJN^`_RoA~{@}sH zan0wnOqv~T^B;`8{PNiU?Skq}Q^NR|0v%5&MKz?~l~22(mRvd*wZxL4s3n{XMXbJb zFkGwEPDxQLvcA*HOALprcWD4kqX-JU`*?MgfB z$hhqU58+yLS}ay)3F^2D{ZR1hT~97hPlp>`A+|@0!Ull6v?aP6v07CZDno@3HLe9U zm*&(&#{u{fv5PbwgfBtHAAe9nzqUcUbK=Dg3O((}|05#6rG)?0di?yle4)lK896rP ztLHl{_+%J=Bkcl91!GE$g26FXE$#M7nFdTOXM-xjmi%=3p|(4DURl5G zq11FPAFhReD?FrT+9zA%LpKc$-ZX^I-yUz>)<*H*oAdLf(mdB70zd2TLq}X!I$Ba6 z9~Q62;W%cXP9K6gV;Y9UP*KC&ACNQ?gZySNP6Nsy(UPdhFn4IhBm!Lq*(q=rY3i4$ z^wJ%`QgM1V2&%w|pbGRuW{Z40TEyPr3qO@=~pdRseK=oz_ zYBb2SoeguW6~IS4m@>yA!Bo`Z4K$(_59-ZEEvPqZj>V!ndXl90C=!-RCc+`qRBjF< zF?1>zXrvl}6TuWr$f?oMAX#(4Rl!DQ#O-W2Rd9%k!`V<8&JzwL>`>~b8)}2#;SD5~ zS5Ygbp*OTf8T`Q;&tQBd~m$o0n=LaC0SG{(q&} z)TsmEynC-JAAS~@<>%c=@6xeoD;cVdY*igjH_MsfP}ckJ!*$o(NB546zoXlF=T!Ud z861qQd~CN-Z+P6~a%YC`9>2Zaxl{OmBM%~LS>AiLL@5d|)z?~!ADO@u$Vh;&1+s`% zbf-exaL!hT-Wa(mD0j)%xLqauVpT{a1xX0`#20dbyde%mq?Io~fA|H-Aw2*n+U{)i z5kQh9&s}063ANM+3EWB+DerEi0ala~UPl-;gS_4li0X!Z00S5pNH}zK=g5=R=Z}O4 zE1}vy)YPO+Dm^5s$;?``atu$|c4VvNTqJ0iOGIHvKV}0Ik=NmZ3K0}2x==^`a>-Ni z9IxV^SkQLVv4ptNCxSaUN%Vs9gGTfttIdJ}ZY{hNV5+N+BqzFc@8);a`+d#PspQb1 z-Id4hpIHkBLI=igy|p~Gub6lxv$$thbfS`2*tajEMTYl}zT=${*Q7IalnoxTz+!z7Hhx{cVJGCGpVA+mX1$FY1Ln)2;6${wHFz_7((&}Td8MM zh?E9qwLgqEOChMe{JB&r=eN|=P^qc?oj>1&i(VoWN+fN?F1#HzC8I5&7LNtmV4Lzc z=M)<@EUhyT6*ta=pumNhMmQ9-&vI*{6+JCl(E{*$xzWS}J}L)%6xP#cTh zA%VX9YQ6sQi+y1Li`QRMf&>0SF;q`XaAP{XE= zz&9fSIs13cDK2c81z>U1eBfs)`51?qMA8F%o`z=}j+uEQhbYuE5_aI8j6J95HLTNB z6k`nYC=7o#L`>kwo=xF?Ai`uO?b2(5>H!zFAzaC82&@Ri^re03ftX$!!ly-P;Zt8cOY$ICNkRfgTsAd=r@vc>rh5!K?=rX5W<(gb} zp9vRYp7tPe*VTGi>r|C#>o^ZX+D+;~QwB%KzNx%)PKjcWkxBKSQ^#gg^<+vtpz2s9 z6-Z^{_wfbWvjNPFAKdtc9-dM`c_#4j7_+j6anZgHjwb#!QX6E1hM< z%&G>Tbe$(o^Cb7BIW6Hvx{G2M6xyC1h-^TCjTAYAkr$CN0 z8(@I4;d1>IWB|nhcfkM8*qgw|b)NOY=bYL1ecw0DNF!+^jaEyRj^vRn%W~|oA}dbf zY)#XqB}vmjvoBrfMj@d<>Br8;rIh<|q0l(NH-#EV^M#VQ>4l^LlGGPUF}Jv+G%bN* z`TqaUnbG1T{UImwo^$5RS>E?~pZ8h+k3uh|^lq4*Hp#zIDYh!K=))2tF+XTe>zM#L z(P@sFj*uQEaXk}F)+V7AnRyHxR8);>sz!6IW<1m+d7WPmVAlDglR{=uHJT13Jc{vS zl`A~JY(1c+mjrXj|J<|a(-Y`ak=h8XPikWCcDr}0b8#GSP!ll;D(Nh%JGRy0&6Vr4 zZoh7KaOuA6NB`mt9o(hANyPrbZQQbRKCGesP-3cXOr zdv}TJ74!wG41DQJLSFLrp&hST-LX9(s7v2}!#jV<0A2dPC2zgIgSDh7Rc&28EIcTu zoOlf0GrTjW66p!;X}u2wq^4v^MTs8x(>dfR9o!}5HhJgyzs-~bLW>y-{z64ZP z1XSWb2Cx`dZEr#LxxqA{#!SBh-Z8^k7ZNRi=RW%=Gy?(p)q{MKhfHQwR~|BHTqQKfLC+>% zPJ-ZGNpkXnoVegAvCsHSzq4n$7uQ`hO{q=bcUhFCp40LMePg)Iip8o~1ZE2|1o(u- zq$-W(mpEz|tnOIZ7%r+dS)<`j)77lQa090DuImo5cF$Q|3c$m2VKr-VRZXr6Zlp8} zT1fa`Fs^DKYkfgRbPFwu{L`v^PkpcH3qrps(64-Mie@=SGZaF5G_TL%Ie?GV{Sp`mFadIUix$T6u%JTb`4vJA#_uMYj1)+t3;f#Y+{JBrSrCl&a^i;#YBfwpraJt zZ;M-`j84$v|S^Ay}Cp*~wq0yVMfrB40iZtuXoazK9>?hO&B8b z=nec`;+@toU5RggHFE9+fA=e3)`a;rAbtTEOaHxb{w-VQe^4P_uYq>@UEPBPl(@jj zZCqgRfZ)YV?Qz)gD#`^tS)qno*LqXHO=-lCUT%aAi5u2}D>gJ2fa#z*U0UY}kzr%gajuPkZUYnIIt@Nr)Y? z?9gPFLg@_^8!>=bA{{F+5tO?4K>%z~e?LA@Nm^T9)m-2AUDmw+gR!BNraj>_+dclh z3-40j2fT7^^H;Qcrl()F`0sjG@4@MkhO%|)dTYIHjF0*p@ps|t<9I%-9PeN#B<)r+ z&|#-z2+-#=m2gb2f<#~!!^aSZIKNV+)2-~sZ_4zem3g=f zi`ksWSCT?1CJ%052v3}+qX*vcS58R651g@TclfqcVur;SDLN=EZR`5ABLySs6fQIM zo_%+$4>K>Pst*+%(Zr#tnG^FpW_8czmrN!7%01l_9^cT_AK73|j??F}PWv)Fi#JT~ z(cf{P+R57C94o?q{lB#*p{b8|=bZ8@QY*Nh`xpNmBdeM?2eFSa{-9t^$8^7@st&&Z zTLYN83v6x7Tl&Nwk!uX#fTnmazHa&&=A>U4Q@*9Uh8c7;Kw~WeTm>W%#wIaFFt&q1 z<6w3Mg56MO;tZnI$1o9VG_&SgrZFAY7^A>3HdZ&vm)l8Eh|9q;=w3<~KnI1^C{|F~ zHQ34;JL*GEj{{>j0P|~Mc}%PGW;A$U!+>kx5#7V}w7%SDwyosS46-?oaBoa5Rt-0* zz`t+;T$2&tJWT5q5OIvT*qMqdoiW>?VbxBN2(eTJSSk(XN`{-lPKkgg?eW4yAT(O4 zAD%81_ZYlQ;$DHV!uC||faF*kMIx42WmvQJ--hWC-;w=+k zLT)G&_`n=+`#I?(UV(85`Y65-H(77KW%dOcfolV%fO{!fua;VsyZX?H!B}y*Rx9;t z6|H1PSLHKCR~gQT^UuR|BP8#C<-$uRu(M^(gN=80@1TyOQA5M%o^G)c?a$t{S3dD6 z^vdQ(QMKeQ^}X;?eU&{iJ2ber>{a(|en*9?<(7B9^A3koJ-Yeps9^#J7f6xo13Kd8 z&<82y(WJ3;-Q?qLJWmS==wr9@MP5R3DmrmRc;yG~vNmp3Q z#=1pp)H~;2YN@xkPMy+DUih$f&xM102f=j{-UD1W_5tE)N4c+_+uEPgo&dkA7|(?# ze-6)OQBu0cgeX0$O;MLE8lPb9yxKV9-^B2!O!f+>&uyM*0hvs zT%~6cEyD%uZ+TL_R4&y>nF1|`Db_NpEl}5K%D8Oxpc6WPDVe|m?>5Jmed54-7GaXW z|HBJ|sXTuk?@i7E29{@S3dJLl&&|JIgh_N&*O zdae11U;o`>(F-4b?UZ(ped!l|{^R4?Tz71NO^5e}?1gy{g>X)P=dkkEr<4S^D^b{y zeIaWrphrT`G_t|IR^6h9v1x%&5^p8St&$EtQEE0jY?ZAJn6^Vr9m}ok(N5OXF|(R< zbTviDhRc(`gAoWH!!0py^iacBMuzQmd!N0(HyiT9>r}Rv>(ioBP9vMa2aF;7%$z>dLM2Tg#GG{q2Jik&9-?RGIh>_iibN7kyz)guSv zheHdO9WLmF!sUCxQ+=3N{MU+iy2x8R}d`-7652LA`_t%nFu1LMB7q0p{PpPgt8^#5Co~7t)9UT z2N=pdKxmZ#MneuTxhc$hN-Ng+?N!%6eTPyDPsEI(()JwKM)<}OF(c#ds^SXrH6;}(Md{f zlSTl!yH4S%PT{V;6rJ(SG-eRJ%3xm(rWg#hr@ZHiwp9y+Lp@j@Aum{VgaL zaZVY~rAAzx5huP4tN!hw%QNxhjWf;5XNtk%Xt6Lmm}YoRkKQahqt4>MWTC!1nkmm6 z8y=i4v?fYNw2#HZQ-MsRzA%s)>C4%y>4EwB{o)CTtyJbOIZ(Q0!a z=#aY9yD{HG$}i|BMF7I^k_6q%yn-iK^0CC+4FUm^LarXw9t6;OJ?@ZODi^s!CcE2i zS`E3wA-5@H$E3bH64I~)hp}UK+8sbig%q+KkHBdPc~}1blaH9|eifepejwcEmIt^~ ztdqURlu%An@LI3McICd@_3!zy=J>ws@}bL?rbA%!&rJO6FaF%rg@f91@tSwv{_bl^ zU6~biv$zh)x`lPsBi}C$%GZggKFD z&*>f-9h}Q3_NXj}H8@4*M686h;RQI7&I?))nHT@S>37SBT!dq^-N);_)$Og_;8fb-X(6|U7brKktBmU6elf^=xRY1yV(>`aB` z%7{V5e^?svOk5nbwbtgtSRHv=E|8tR?w7T;xpg1tfLMciWS_EFP@V&rthlep6S!|# z0cK4P7Z!AAl2O;<%f?_J00VK4;AIljZRbb;4*-M1h0DS%Nek3Cj%1|z<={$wTIIr_ z0x(USC`0QuS=^|PiwcwgL2>u=SZR5+Dy5=Q%w+S0bh=Pf(n@i)kPa8pNu^LJYKp(0 zg<~rrm~dgB#GnBc1!5fHZ7855zI18mg9JCI{;$@*+=WR2#dk4Kn#_vt0^AzojL%AE zdD^63kP2JnsK22$`j-6n3@HtA5G*NZ#o!_P7$#{k zL3sQz3|3>sRm7&=gJZ?A-C1E)XNAs<3f1b0pZ2cG3L>a+LLBRjAhJcpw+?_a{Ef`L zOsF&21PuaFo>*ri08IX-95h7fEdcSYGOY;hWisAg}P)VBZMGXLip=-R0I~Vz8RBwpzaS*xEINF74!>4lE7DsjR3s zUpS}+EdE;S_{g84yA0lA`Vr}`K0WHWPiZ-!7f63Ot(s=HEUQLmHCa&L{7dIwy70{% zeFXv8^dtZI?Uq{Nf8EX!KFDid+;93HxV8_Nt{HDj3Eb`8y1bv4_o-Omy5qqC*}ls+ zc8v+{Ls5Lky|#yj><_~u`oVu_zl!_$m4fmh^=(MmU`0`Kr*4$2h7YO z0!L{PB#gp6<;g&3tY@G-Qz}d!{pG-1;!{8KlfTe+efjZAO%3Yo=D%s?uC0M&4&FjN z>m|IaNeM%<`gO4`P)s!f?m(4EilE@h0(Bv8kApP)=??JUD1}zMy9lIc1;JkWf{{yp zhVJ>vA^cnos&_-7iZA&K_Ezq$o}6ZPu_J8el|lqagTkJ>-9Z*H^2&u*I^03j0_heM zMlD^^CshfgmHwa@qJ6s6+PrO-^)hu9@!i%4awKjrJHk3;ShAXdtH? zV#LO)`hbWQ^bfn)Cq^pSk}s@=3mJ1Obyq&cp-sj(w3)#6(30T01IszL+kUe9=~dOW zYdl9ggV_qq{g7wY%rXZvu+?V8R$J1`E?Vncl!SVyQ)C%Gokf@uw!m8i#7agLN6?Bj zo#V!YE@>h6AQ(XM(;-(%k`)Xll2|}9pMEtsJyMg!+AEC8zLdJR?^@Vvf3MF}8M3O@ zK(BS#uBX!Ks-4d9hJ6k~2vEh9l?orGLdhS?2XyKR3sG0{4nIx)e$NW*?D8OJB_v$- z@ziMLLD0TPjUW&;Gy+ftEVV|En#5`&{(>6$lP8`s&;fS^XOoVg6HFjqk%4HeH?pg! zRwtE4eO|w2uApuH|LUZ=PcUSw;?vXEUG?quVu+V1Qdne4jDGzx8&mr zttY|00E^WM-PQ0dM|37JMIu22C)???qHfE9W+sX3Lky6C&tWW6D^5p+VUGf-TZ!Yl z3e!+3D_|sZ!ofP9jBVyvU^+tpAdv8dZ+6z7j$&pA%`~3LD$hJ7gvgUo&zeHr?A*@6 zuRSn#`>~OcW4F)E-nKrfeYVy5@79U6cTZ0opDPsRj!#Tp!S)L6$-%2Wa{Ty5uNv&X z;seKwV#t@h??~;!yHJpQX=j0U85@-O!)p12;zb1Wg;PpDq!)B`m7RbAK#Q;j^g=1m zRE83#560uHUgno}^t***YoRw8eS%YjvK4=;e)oVlLU0~i{hhRN+m|X7Tq`>3^FD|i ztKX}9vGVoGzf`OhPz6K*l0qce%F_{*r*$_^*J(bEwI$E_o1er9`RkB!-|y>J^O4}P z7ZvABEA^U|vL{hl)+dsFH*EpdDODU7!ag}q>MwA5!1MyP)b&DjE#HRQf-=E0!W;u+ zsxY@m{a4_=k25|&eL6JN(|c&9T$HkCgeDFKJ3#5LjL82cnW)R)ImP=KuaoSCE&X)!uHu17FJ!0y4v zTGlz|gVv!{6-?`MdK9DBw-%;ZB|MwsqL|yrxh+M&^0V4;yDm8C8D&lroO|A?lI?1cMVDk}`*va}Hs=67tVhtoa;(M;S=U z5unyCBf>?BXM#bYJ*zj!yw)rYL9%VExyIi!{>Zo%E4RbP) zGda??xG^x^&LocZy>DhE**Bgl%s4HvOu<)#MJd)hk=OjT)YNd#wAZ&VG&)ys0`KeF zcJDW8jchSsv6=q*k2Mprd1BRkx+m(yGqaBA1IWj)C`sL|war$WMOim1CIH15rtuf3 z|C7lU)Cc}?UahHTHb-zi=brE4?OG1oekHDaTu;Z_eskN15>6%=zasH1s1g%sL$^OI zC?2xGWtUGB9<+YW0R6Hfxg*usd8AP0LQzK&cZyRvRGS@2kAp1s6~PSQOO zHbwg8(^hCerx(Gnr`wfwi<8olnu+ZHMl z(CSq9xGIGHh@)%Y2h8 z(@C;HILrpxiUegSE(2*Fln6#~nv12hpi{Jx!NPqp!*W9pVgYeB8VqV_P#P+?VK^4o z0$aVwrJ)pWCwMy}Jb!RN>4nk1tn^i3V$Wt>B_&~vTZ7hs)n#>}#)ECU$O0SHkFyg&6jAqK+eL1LKc5zssg>FnJbkib3f{3WoMu(TS;vSaC@o4No$oB(LsJ#L?78@w`dgUmL(H-rK~JDhDxA4sb7&1HHf%`n8V}IF z%zc^cL{5^)E{HqmbhI+*`32x-V2ywU1i>@@wOmE|e-`BEbS6xGSe#Z(Yn2gXfci!n zBU*nwo*1^TJDtU1x?kC-Q^~7~4p*mSRoseN1qkrI`$I}deI#@?1QVpAZM!cRu==e&g;|&~K~MEz2~k$&9Zqz{q{TFRk`p3kSKTt`RMnx zzk_}Hb!=Hpzx=LFP31_&>N}#^SZjK;(|704cS+@OJr}D{@DNi$9-;{#p7Bvbx5V;z z8EP_8#mG%rkG>(@OVOllD>6i46XY4o3igIKQn_(|{k@?PrS|n@=w;Oa(5B>HFs5 z#nt_LBZuPiOt-Q8OKRV~=}>ZhVKy3_KX|xQSzVkAaKd{p{+s%3^g~SfIx=k81!9vI zh%qnaCod5`JT!Q1+v(~5;-Vqa8TtxR8O$x1tyYFN(C9^B+`@iitzawrE!Ga-Pb+>` zY-3P7q@y+zE9q2Z!q6ZoDNnTUyIpa*v_v<;hOlQIKn+?@_&PE}m31VNc5V9Lpe%FQ z6_O3pBzCv|U^T-61fs(1G@?MTnEs1~>ZPv2z;wkivNs%dsk8IynMij3%7J`gdLUyS zcg;*pJiI=4;Ros&;ejhya6g9rs;QMzN(IBrb%Bpn#_Q+fEcue>^vjcS1R6b0wb8H( zN`HY_qBX$1ctF-0Y`m^B)xii%ui>hBl472u2y_wz)Wt!Mg+v=GI_N0bcYn4G)A4ED ziA5?CuEEoc$T!I@3A->J=N`l9HlM8cdX+!%I@_-Mdb8GyH3=(bf$3reo5Zx*Y(D5w zE-Nnp3lU~=I9$VO1rX6j9R%5IAa<36Nvp{7_48ARUPLNlyfM;XTzCBZH|5~&>D%e} z%AlnRVYM_K1S+^GMuLq7V%HcXZ=a`kcr29~8?Jd5d?E9! z+3j&<3&l*_y6hX9KhT;9-SL%oykE6G5V`DacT7*;@wUq%4{ZL&``_`EJHpeg1M_1( zW1S)o_zuR%r8Hm%R#9TuV>7p{_qk2$4u{zZwq%B>L*^QIIu%{RZ-$r$5m+#>3S&+6 zJM)|WI6to@=D&lBz5KGlUyRyIlu3>XJ@8)tfP0DmMs3^fckoVjZQY6hYvU$z1Kfj` z7xzs;{fGI@@6M|acV#&8E!eL8nh)1q6Fx@S=cMRYOL8B)n)(}ZpRA6oK~vidfLNyb znfW4&{2|mU!ZuWx-0^Qr{f+-V|J#~nVsk`2LzfTkVboT#;2x;01lfHY_xu8Mwgi0? zYFJMNsig%)Wezg20f-sg2PI)H%f#iJ=5mkLz!8uGIF$$VDV&*bRoZcPG8qH_8uTXm zH2P@F>XUfEzBS8(!>Df10H;$FpfwAvfK`iVAV18l1s@oS zCtNOXh0~2Ep?zIXgSC`5JWf8j)7nV#eo(0Ku@R#R_9%|yWr4N~$$x}3_}EB^Tu}vx z%Yv~XwSpD|%xRltpf|h97sS|Ztl-#$sbkuhR=bLU`u~i+b8U2V?VY3g)`s3VI#Vpp z9BpiEX!e}`wpQzHdhX=O?$&GW%|FkK9U2-sG?wYM7^^hK`)lxjS(U3~{EtD#&kIfW z>oG3MZj^;;yV@4j1=`b`>t-t_ECd*olKs;8fB$krC=QMd3gK8rA$k7;B<~-aS3OuX zN1l3^pJZw(&^Q$JbGUX)xmn*Ip`9wou?q^sLy$eX1M7)?z#zSUc6Zx(e?n{faD}+t zvf&8^RS3C=$izz45p>z5q)nnNY&$Wyh#{>iELjtPc|(;C*z*vHIW#}Nw>cG_pSPvT zy^;Fja8k2;VtL$Y`}Ye!cwVys{~HKxytv3d+E=7M>Us>mi?-9&wwT-6eQrDguqrL< zoP6w#H#jfo`Nlu(D;GX8|F`&ObcA#Uu6yxzlM~nVDHBK=^0pPcW#`I%xw0FV)_o80 z>d7-nszBR!c%E@n;!Nt?gT1f)#f6`c`%KSm-w6Z2_kg$a;`bn{SfD>wlsiu;Rft%0 zT62XJkwP{ErxnyLXj!uOVi3@t)q5}yNlIMFHAmG4JV#9}wZqXK0yoALH&5IBll9=UfD}(qbwl&~LR{fjc{+_;-$wFc3@IY!}sOI^Ys_#1z ztu(WRg`{UevwX$k3fA<&LA^I<1_X!trxTlf&6#vx3fcHiqC5lsXe;<0Vz?~uT9lNk za@Q#oPkCJcjUkX4MT4**k|hsN{})M>azgL@)po_X1}ir*knlxZE37H^)v8L5Qn8k; zg~&$OXU%6eaCMO0*4r9u7Hc+bxg{j;k@ESD_w7jW6y5Q%D1zQRHXmFn!Ol@AOdhHy z#~L-y=jRSbE5oUrp7iMIe}fC^(swS6PH(+$1J9xHebvA3yzga{7DQu`mnF6?H}ot= z8*fG|U9Heo?km5=yNDMx(h*lWZ*7gL<^J$b+>bwfEGt zMorCToT{suEo>x}bxmhDxu*Fuw83Qrjv~V~$f&{1duNhXr)>kqBQcz#74;77*~gd` z>+*NhxQ-HM#0eY4G+%kLDOwyB`fl`R*Vr}zoQ*en6Si>;KJwS*czv$FG4AqP)8*dK z{E3-#dhfOS8i#^j_r8JQR)5s=>O^IJFcq*(Se$mtz{(AylW#jv4>|YP!|CP{;y#2H zUemsY{!A);%5UhA&=6iINM+T|SF>@8%N3KE82Y70Lx>Kx_?df?k~-0;HRZv67)!FPd6l(*)8}q`@2lrGqN;NpwR6$0aOHUwkF~ZzZ49BFRAtXgU5M`z30d*|oxu=LCv zX*4gNEiT6TW-2{1ebJ4B2RBr0?~O~<^1_KdkfL50+t^#E?!R&G(BX+}cH;2R_3wQz zd4mQFRz>||*cP&|?)-+HmgqLp<{wm(P`T3U0|TLiHCNn-ht#f`N-jx}5L{h7 zK|>boE;I)~^Fsf0BC3UQCa9f4k?59I&1x~MW6<KPfsJM_J4Exzvx6b__#6Dyb z!0y;PgfmU%k;BH>sDsKi)rxx5{{(q(Q29T!;7fi6C{2_(wC6q#$hbQ9(TivW0Yh4J zE|2R7OC#VK<~@HV>zAAlrI6?8Oy>>A)Hd-Xsd5d42Lx)O#$)%k2k#&Hy`e7-X_aEK zUCO5O_capX4OV@EqQhlC&6U>6qW1)_o5>{e1s6uswXs#%Tk>}x=83Ea(c`s|GtXc= zA>>_nraR|J-yB%}?J9dcW)ww)o+vVOb8I4l6}-!8)qk=lhx?2w*gaWaX-|KkT1=Ve zj~tnQ;)(o1VdltCC|R7Y$5{y*^&W>=3DF8UeRH4oqobF*uN!^9?O{bk%KPYWKrdkJ z|E`SV!;^-cqHMRCkj-PZb?g+A;KP4HKCFIHcct~RdMK?I@j>nf{)<*3RiU~`HaS|^ zr{zJauXw3DddXw#lKqlO#*H*;*M2G zzJQ`?hx~E+^CgvX2u!8fg1YLcq*FSM_~7TN)jD6Z)uTD}&_gwqjQ^3^=W5T@EMWf% z1bBqeGWVmr7I>iAvtA~;M_D*lx$H&-6*@14jOfkWg2NV>0Y}b0iib(b^D?_PszM5N z*ct8W;8S<1$>6OGmVkU)yagCwr{uDb2uVQP&uFL!qUbX58i`pw@+2~TIp;fnAekKm zL<*XqYhZi}BuK^?3??`MPl&;|ov zOKq3W*D$Tcr+ibnsktc=$DEEkDsd+I-j>i{HeyBx3+s(KL!NNW-7~;ZtzwNFEGw zAR!n-29V@PDq`%Bz3gp!y4~y0!9^Wh{v7$W;J|>+UbLuf^L_ojnT>Re!O{;?$fbR>TV7T_*Rhja z+BG{x=I?%2v;6JfUeX;qMP|@7{3Bd{kUxSl4ILhNPI%;h7(5cD5y&&DGm}z6NRLUA zM|RHpzMLmEUuEBQvL>n*UxGC&BxYYDC>iG(HW1i{X#=5sc*eM9v^KO|JDU3C#oNTL z<5DK|yvNo?TKum9n?&>?y%adCad$Ij-r`-hPpVJ1fHo5sOTEeSDv zm}y=HM;@f`jp>H(B@z_J#lI~r*dE$*dJ{Y{&Do1|Y;G|uG0iAlqt>Dw@_CpO*YI!q zDRxpZp^*ozqzZDstEZjQv$)^@FK8K1zdxXE45&*3>eztVGoVHWRC-r*m|oy_#}$0y zl<{%-@rg^mrz$xrRp1oDRKy6%1d~+~dGKpwn)4XAMq(g5!#m7S0GwHKKDf|WP?a^o z<`XED^vGKHfq6)Fl9nM+mPuT}nvha{iGcy~{{dgMZ=B})|}j=aNf_w_OQF->bpFk|>l2KerE zcd%Xd^;Y|P{OdJe4a-<07^&f3uD1_lxlzu6Dk-oc^Binhn6i9eHGAb5d;xyE)d_H` z?^?e?+v4f=3WiRZ2&hMQX#7|H_NDfKPkds&u|w-uUzqsx8*DiL=H9#jyGI(+=v*mJFDduVJvgT}6HCr}X3Hzn)4hq6 zX0tcFGPsQI2Ma5`>{EvyI zYv2PnjbAxmHAiODs~Bmw1FiWldslB;jFqCPXg0X_`c`@KC$Z^?#GSX^TUmPhTrdVY z==eTB2W3c#KhRx+%qAG5f-ZUpcF-bv3kRHJ<`_G%7IEzK3EDCYi$*O2W5!ftN*#)= zIUks;ZDcZex}7pQ#w3#;+K9#S&5f{RLqelD{WurIaAhNpZE_{Ff2ikhZa!~8C;+Ay zjYf42W}UQH-|(q2EAbU)rG&g-LjqCJo+Hpe(lCaQdmC|&G>UNKxN1b^x0(hMKQ5cWiX@*j%aGZhkr2bhwV~JGfzSRT9Zs zPxTY=s>^w7u{={xYM%ZA4;jXj>e7vS_uja_3d6}%KD@ed^KnLs29 z(kesr659#m+tLix<9cq- z+=0Q>?Bw`V{?EMGLOB#EBtxjWT8=qGp^$U&Bfs|42ao^i&pooDX_fw%&FKr;20SqU zS|+iMtFWOfS_Rn9Y2}QOQ|v_-_!!Tt(3FCCh~dOM^ip+~6{yiuj4aSLDC)a^m_ zZH{27nu+zee6~m!kkOx5NRAHo2N&I?-u{UCtEt`$pr%L7wsL;+mhpQ&^zr>;ci(xN zVSByuVoUqH=>g!*52(kD+z?`mBV-i9t^~}3Papu!2*f7vFk!+DnQ8wpi!YJ=8sC|| ziC7x3zf{rBkCJs^<8^(BEQ!YMyqz4Y-d8FM;MiRGaQXMjUo4x;Wz_}jY9JBEb8+~y z%%*tGWRD}!GZzo%;-;KE)^hTRL>S}7Nov1-grJ<3>X6*f$DkA-q1V~Tfk%WIO4j6< z9Ez$D&gGarY7h9m%n;=hRP)<;qOZLC%E)PWtT;;N#hp+23c%=sQ^m@&yQ(T)k~^v* zLl?tU7u3~DX?;7Pv>Ao|OsEaXEDdd;;7|ze=9w;O0hH+*b^>71(#<*j%H*w|05Rp9QR4Zceh*g*Ohh@!VvC>Cu9aB-u6v)2s73

    wfR*ZX9EU&5 zqBtzxOxvGs$D(**S+210IdWdKpC!BF7vz{|<<(>#56FF;^cnR9a)G(P;ea_XfcJ*c z4dgqZGo!#aaP0tMx!^VKkCGkg8A_=!|9ZxnMqrm$;qz6py8^bhNM#Pd2moJ&{35ZP zC!RHU8xjM)bP2g|T5qKq8^mIeiZI2ls?_=UuJEpHk}>TfmrJ6)W;I``6d15YV*zdE zkzM3+X*}5GNM+yDfUf|bOy>t;e~wkl#<8DLUaLB6m1f%jI>Y! zj-wTskNf&8Iyw;WmZ)E%urod=MwTe-l<4XzEeTA&sW;?LwcJkcUA1Iv1eW)&6$i0ODEy1;4}}zSup|6S?X=Td*<~W080!lF_&Z^R@Huo8AP9>w zNFh74AT`oSL_)FTk9{mKm)Vu2r2auCe=0kE`Q_seYUb(PAUCj21Ympqw#E$Iy7K%f z?7pr$K~q3^gECEiNkbl5F&3~DkpUYLtR-K7V9^TD5cd(w4ZdhHDS6s8@@r5k-OJtq zi`Lst#TBtyh0KX{Q_2L(mBZ=~+j2pE<1jhYc*qK{SKORnuc|`B7o!ib^qi>kKSP1q z(TNiK-R(!11&ux=1yYbhCZ*_(mzuZOsi9q3*7fth{L7arP)CmJa;X+q#%_lKRn?*S z)eI;2&yQ_xH20)ybb_B2CpdD{ux=wy8w60&Mswlcf#cN()JeG9Fbi7g~Ls8`QR3 zyrRmuQ6#2t3%d$!Mam?8YZR>oqlQJ(@b;Yv4)mIGtJRlew39iKnc|NL$tEh4T5h##Mb)NyR z2OK!|8eshc(kCN$v_Q&+(!+2Dh#9H&G?f8x$x!Q<6PEZ!|2S z-~&MT0d#>AS)QxQ5xd%8mos+SH*YFcs}v-mULnOuVkS=e<_NI@XQi~N`u`mo7`vub zzP|5g9$8)7_rH3^LdUAWk(nKtsO-J$6Cbv2zNUTF>3GjO+Sf#WOnn}ZPG?M4yrFT_jC{Z2d@cx0dUBYL2RPSu_`!?SxBSX|&>qLa}I^F%8qNwgRXk~6LU(9?vR z(LPNUD=og10SBjnUZ&X(~7Ss7GJA!f8jP#ZSnZFqphAgl|kHD&`Y zB<~LTmUl;A$kXDuw8mSW(+6+@;rUYq$M zs=+$!cV+I&Ts?WyEe=Ku31$oM6{iqOm(zWK;IIQM3qVRe~JO01sXsNhjl=G zW%CRQ#vM5V?5zKs*gU1~pHL_8eyk<*ApA>mU8mRQv0K}2W!VTfMC+NpyD^$P5LFLA

    QZczd_!49_6@sk@RrDP4ySlbOzr+X|)I*;Qhz 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 z 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≷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 Cg`CX* literal 0 HcmV?d00001 diff --git a/reactos/media/fonts/Ubuntu-LI.ttf b/reactos/media/fonts/Ubuntu-LI.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e36de452d42fa3ce887e2c33f8073bcbfea22880 GIT binary patch literal 409608 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

    =H*TglTs;H`>XiW3#5lOwIqm?{;7nGK$l~n&4 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%0A=zpcGuB}msU!gjVj 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 literal 0 HcmV?d00001 diff --git a/reactos/media/fonts/Ubuntu-MI.ttf b/reactos/media/fonts/Ubuntu-MI.ttf new file mode 100644 index 0000000000000000000000000000000000000000..321eccf73cfe8be5a89748518722e12b31c40904 GIT binary patch literal 366992 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%0Ddmkjie8ZxVB?eZ@Y~w{Z5A4X`Lcm14q>byTdw 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

    `P|qTk5iWm%UZc87Yhms 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 z zFd`Tkj0(zwGlEYAX9k}R&I-;B&I!&9&I`^DJ`-FJTo_ywj1DdiE(tCTJ{x>4_q z1wRjd5!}d$fH!e=->-xJ4t^8-Huzoe``~|qKX3})pE&vM=HM^EwBVND*5I$fZNcrq z^k7DCM{s8_lN0Rj3hoYO2XlhC!9BseV196Ka9?nLupoFKSQsn{9t1r@XwvNhz;!w#X_@^59$y z-o@t)Xn9vSSQoq#tPgn0mN!l}@kZ$u-W7e1_c^x(yzv<9;GM+}#VJb95yn)oobT(Z~SKj^UE^pnKp5`Fltm$p~@TSbc<`8qJ zIm{HB!_5()|2Jsfg5Z=KkGbfu* z@D|1=&8g-zbGjL3hMN(*k1@)Wn=^QC;!NIKILn-E&f%Sf^VrA#8FPWTkUjjP&Bf*t zbE)~P`5gP-zhJ&-E;E;#FPRE6#*Af$c%>O{CYXt)%3NWtG}UI3sWG)?viY*9Gxer{ zece}?spe{Pjk(r*#eCI#&0J@`ZmyTT%H~_<+vW!I9rIoDJ@b9@1M@@kBlBbP6Z2E^ zGxJ~O=jIpYM)ON^llhhTwfS%J8}nQ9JM(+-&$$T05)I zkFk#YgskSWn!1uT&8Jzd{H=M`JZJu9o;NR;7tKrNW%G)8)x2i@ZdRGsS+#uAyk%CK zHD;}O+pIJ1nDypev%zdMo6Kgj#cVb2nfJ{$v)%l|>@Yjc2j-vVf6c$lzs-M4I`l$6 z3_=rzVVkfZY#X)<+lL*(!mudp7=pJ7`-FYNgTq6@ zL&L+u;_&eBh_GLHWO!6~ba+g7Y!+~Kc925=?hlE4J zvhd{a6X7Z0C&N?2)56okVd3y_L^v`W6_$r*gr5q}3_l&76`mcQ6P_EM7oHz}CcGfL zFuW)n9bOz>5?&g9HvC-p`S1(j7sJcK%fl~)72%k0Y&b5g49ABP!iiy3ctv<+SRGCZ zYr@)aa`@%2F02n5!YScZ;neWz@S5=2@GIe0!>@(cg1JK=Z3 z?}gtFe-QpK{89Mh@F(F{xBKYj|6DdpJFu5#ABr8O{u6g?EK_hqJ>u;oR_^a9%h+yf?fr zygytJJ`gSp7ljXo4}}khi^C=1BjM6;S@>x9SonDOM7TU$5k48N44(?04xb614WA4D z7Cs-o5WX0`6uun3622O~7XCe46}}$65xyC|6|N4~glogM!*$_1;rj61a6`B;+!SsO zw}e~6_rmwXZQ=ItAK{L0XZS(*&+vc4e}(^U)4yg)b#*vuN?mQ+DK%9C1`HeE?js8( zRgA5xt?4wG`A6+I=4)z_wjE}J+g8|n!7yf1S5+2N=&kLr+6lEal~=Z{u=m0dW2@@M zPMI{my7KD6u^D%V5#wqbD#i-Z4r60y!N{@94{8d=+1p6SS2W<0Tia2NF6OWlt6-F+ zTdB7Wqhcf-Dr0BcQLZ$V_Fgc`BCgb1;Tf6o6i&#vJDd?C=rAF67M+3Vj0vq}E}D?= z6n-j`w{T*{9e!#|MO`=%P;h2LRrR>af-1eWJ=4{s%GKmdTN9a3Zb^nddPL8do*8|JaK9%A#aQ z!PymKr!-U+RO_wi>_pC@>V&7@Y|F%Iy@h8}ys#QjaIVc?WAmSz$Wm03@D!YD^VjID zOHIY(+WLk%rh1iHrou#k8C5gERMt#rd!FN1t>f5vmSeSg>v-P8DK!%+>ZVMpu9(u$ zu{P-|xWE>w&KBx|L^+D;5}tw!Y@zDx?LwQYUT=jLX1H5epK)tHDH&Yq?gI-hvY8w7 z7G5N+-yp3&+O|HEZG@ohXjhjht}df(U8d-*&FDHNh;60_>^M4Ela5o8zP6*CluWVr z!b>vcDx8{de>UO1CgU#noUP%tdh77HSjIYB8#~)nGZC&Yx-h|}B9;c?PN4NJEg9zS z!`qRwy0X6hiVm43wQ(cL3ND#YSAmw8YHycV>QnXB{*rN3Om^$5>f29^Tm_%C39r#x z(Y2Lzwe?d}5!Drqubont@l;(^8F>optFDgR9qZ{!HLn$T9pKS`8s=i1wJC8Pna|?PnZVRH0 zdLUJVD z{aN{F3w^y)54pEjE{Ln0@W47Kgr=ePnnsJFE-i>AqBNSQy<$e1>ZNM^)gidW(ZM1Y zXM4qNU4mZI34Tpy38>Rj(1c1tU6uwiVrhs&Y2b)x;B++9r8Fd+(vWnHhBzG!NoZ+^ zOBIz=tuWE8J246+yq)7j{aI|QYiNHyOH?)0mE#*as7n`l3qExX`n#shh1C`H6N6z5 zg~L&}S5~49#y7MdjX)m5i#iK3_?0CkMs_J@lU$sOO497I7Y$zC2GmhK^ zqbA9%Q=CL|bQpCt%bb(O)lRL^%&fSI78>86>C~s`ias+%I#+Ftq*Sd`GSpf+B|}S` z-)Zup1D!wR?kZ{nN`|WFaUbHshq`;2yIW0IGIY4}k8t;q?mo)h%k90)(JyoK%N*S@ zN4Lz;Epv3s9NjWUx6IKkb9Bob-7-hF%+W1#bj!-yoJR}Rw5b(n%P`E++(H`b#4;$5Hw9=fCp*h^ucetZH+|eHHXb*R^hdbKC z9qr+c_HajgxT8JX(H`z-4|lYOyLu0I{2t->J;Ko+;pmTW^hY@QBOLt^j{XQoe}tny z!qFe$=#OypM>zT;9Q_fF{s>2Zq@zF5(I4sPk971$I{G6W{gICTNJoF9qd(HoAL;0i zbo56$`Xe3vk&gaIM}L%~Kg!V`<>-%c^hY`RqXre6VJ(>ndb5%;%26NXsE=~gM>*=F z9Q9F-`Y12(Hbb#eX=>W@((gBtmr2{NCN(WeOl$JR9C60cHqhI3ampJ-%m>W=9;^>z+ z`Xvs3iNjyw@RvCJr4E0o!(Zy~mpc5V4u7eupB+{Ql$JXDrLKOZu70Jiex;my-ISx7a&%LUZpzg=<>;pz{gk7ha`aP zAKNKo>WeoT>FdXK%SO(WYjP&YX3q*zB9cn`Nov3VwN^_83@9BKxdxTQuF}|*iA}{} zgJRd<*fk_}4UJu8k!x^FZLn?6)PRw3TturR72_?5v6aNwN@8rKF}BjU#HA6I0i|&{ zOJjVcaXCw4%%w5r(iro=81ujw^S~JMz?c^UV;Tcv8Ute*17jKkV;Tcv8mX8@DyET& zX{2HrshCEFFR7SDDyET&X{2HrgX2;Sj&lr-a}17i432XQiAyykF3XU(EJNb542dxh zi7^j}F%O9`4~a1kjWG|6>pL{2F*K$zG^Q~$rZF_8F*K$zG^W8kOJ-cia9K>FET&Nw z(FxHvA zsWL~ynan9?GN+u$oN^{}Dr%ZIpH=HAXELXp$((W~bIO^_DQ7aL%B)&Xxkb^`FsFu` z*_?7_bIO^`DQ7mPoY|amW^>A!%_(O#r<~cGa%OYNnawF@Hm8O;9t?BzhudK-di#=ae&@Q_gfwInz1iOy`s{om0+qPC3&#di#=ae&@Q_gfwInz1iOy`s{om0+qPC3&#di#=ae&@Q_gfwInz1iOy`s{om0+qPC3&#R_vPC4T_<&5W)GoDk#n+vNZOsX&!RZM9+ z+M+V&PpmQ{_@7^2)uuw}juE;Ogl?O0x)@aHs9q~nC6XOJP^}WGS1MIj1)yq+IebJ= zGbOmXsxA9(gtV!fSX;optw|LnZS-auAkUhO)Wop)$c*KWw@vM&$_W)6wDN32tF13` z)m2ZsQS3^R(DqVW8!xWN#wv0(wK1-C>gnt}QOXYI2_22}nS!FLHj3?2!|xfgQB&>TIL1y+SbtJ4RSEM0i|MZl_e-RY!7H z9nD?G0q!ba+_jHz*FM5s`v`Y6y}7H7=C0!ecQw7a>o~z(#|iGLBe|=NEGf5BD(;TH zol@a<^zD=izoTE`=#@Bnb|IU1N6${N@H={TN>x&Br&Qcs{p^$qzpI~}QsH;?vr{Vk zj-H)T;dk}3Q!4zfes)TQ-__4fsY=T2l#08npPf?SclEPVD*Uc~c1nfc@z+kR@Volj zsTF=#UpuwJ@9Jx(R`?x%?bNEI+)k~yyZYOy6@FKLJGH{^>T9P`_+5SNR0_YVuboPj zln>G|j=QVhAcudDtKT4pe~_!+AjjW9u6~1Dy#~4Z4081t>v*CC2?J_5RS6^$h z;dk}5HXD9N-`Z>?<<@57?)YtOHvF!=t<8qt)!*7|_+9<2&4%CA-`Z^WUHz@ihTqlS z+HCk;{jJSbQf_TF?ymmUX2b95Z*4XFj;^)U@H@KJR>SY;T3Zdjqibz7{En`*)k?~( zt;XHawYD05N7veD_#Itqqv3aSt&N7?(X}=jen;2ZX!spnYonEvTN{nLqibz6{H}ei zO@`mKueHhWyY{s<8Gc8{+G6+}9czn~lv`VjyQ5=mG5oH6))vF>=vrG0zoTnyG5n6M zwZ-r|xw5txekWJf7Aq;YwikCNN7nYj@90>Y3%{dN?)X{m=#)EtmODD-uAb$i3UwSE zI#i#?Sa(^%JuKlKo^X#yxJM@3qZ01&jJqs>zbt{jEP=l)fxj$)zbt{jEP=l)fqz&6 z|F8u9VF~=h68MKD@DEGiAC|yBEP;P`BK?SjyIkF3i(tzt&qoa?FYj0}iO0t5qaW9Q zfVE6Um6wk!n4&KmNMh^<6)fzR0d_C6VYhR@PG>)zmUjjT?7&{+pLk~MHFecq4>nQo z23d7QLk+u`L&-uqNtJQ?33uR`D=X`2ydDaVRydf{ZTb7U$GSlGS9|QUjzU6qU3=`f zPWo-C_UyPmm|fK;uygtpc1NGh4rq3BgXvTD-r-t%Pu*?r*IjS#-*xe~UuXSyeb3&X zKGNR*xxn-PceR##3_F!y^fs|)xC1+ck6@qgx$McUW4G*0?1a6K9jR;mf3a7z7yCbt zWUuGx?92QTdoCN;KlwZMJT77X;_K`=+{wPecI+YS!M?zu?B%n}MxpYS3uEo1lk* zQ-8l5{`{dy{1!*!kOJ^cqI4I7vj&`BgjOXuFH4j@Q;()o=da=JgbJ1B>ux#FJRkD$ zIfFT$t1(Y@%}s5?CR)|!%hFSth-*yC)+WQ@sE&LI-nDq+JdH!z7`|O9-z+tJnN+?@ zDqkY?0z&)C*T=m4@ged3B%T~=E;c>+&Wc!}2-bK{T#BWHrknIeaB z{~7 ztcIMH1!pF-P+kMYj^yf1uF>Q=lUyCi)!PdQ=|V^ssBjJ+6eRBe%{QIAoW4iwX{0YA zeUWE~?LcTDp@nE^&b8C>9g!&C$H`p?wL?jFCh5*1XDKHd$mwEowiqXiIWBQ70oXWE zOwJRN)5H>GycC+n7$ZB3v%zEE74MhO=piIg5Ogp;8K!(Q+b9$ayq!8VwZB zg5p`^`Wm?=L$MT!XT@z)=J1|H&Z9^vygHSX!h^yl+IRQsxBEGKIR&B#`uU}9Uxi9Z z_M}aBzs~z3$L?@RYF>&?zVo86}|$m^VbM@|xvb42765jjJ|JCr}Ch{zct za)OAQA0nrRc$^*LadL>98{%7V#r()at|@Q3n0 zng1#2Z~CY5Kb`-%>1X`&Npk`B3;AEfe>DG#`Cr2Sv!wq#>Bi%p$o~rd)ujI*JuB#* z{$|jJFTM5Ue*^#T@c%{nC&3@N-wFNTy*jZRcP#wZtGvxO4vUzte_^M7q3pTXa0;@nAD``!h4=Ygl|K- zI!mqt;^Lb}2Shpcsu0S5!N4pqy(PT`h@{E=BX*rZd23vmhoHN*dneHEhj8+eoNknR zbtOiwgP4EGbr`M^@|=Ri6*AvFOhZ2epzYDO6$tlg1sr>UBE3m6i@pLrmtLjtz4UYW zQA(=pi@tu~T%S5{in3QFX^nb($YZJYk5c7=j2d2g9iT}4@?FOl(r>5ViT-Ycd7G6g zPW~c%lZ+ne4KB6b(tJalAM&~1uU_5>Q0A+l5#{s_=juo}Ur>zxl$lYI*sfAjIWGaY zHOlqj-t+YH7tg*3YMzr9SkJ0VB^7p@+hx6{qp;kG_1^XZLN zCudbL8Y{cGd0^kHd|65NyQk@TG@eZz$n`i(`$v)0Md|n8qxKYL;mptJF`0kVKYB2G z;ya|I>_I=ubLDBtJgHhas0(vEx60r!TZ?gH9y(F4?(D{j18JS1iF)Lzg?&;h5n2y) zL=*K;t(O$ta{crKv)& zlAJd_{cif*rt;*3e?H?+FMytm<7&ym$HdR3f|`yZPSa(rGDLXN&qgk=t=4r5887Xa zNekeXwmwKtIgFAbnao62%P$IYG+J7Zel}lvUHT2yNT`KK3oQ*FcYW>JwoN|-ws$hx zLr-*MMJ2r+Dc+ub+fiSgej!PXr$>6hNtYrSo7a72c4#J_tTSeQHdQnu*YIt7u)@Qa z$G{|Qn&^M@&(73LBq4D*ZTb#8-PwYbna@eqOuw+$L<2~VP5g9K6#pi;yIr~ZzP4Om zxlR;E$}Q{K-L;?;`v7~V?NXi_q= z@n`clw{J&jZ66n3#uddiasL8isGDst?ru-N6{SnRmi&Q{9*xc0Q|D1?`=c>dl5i6*OT^gMTk5j}5qsn{a{V-YBl!4wH$UYA zBjN&d)!dBcBK|HcA7&PLujBKEwpyTQbhS%1HIFj8U8A(L#ygRF7xzy`1*g_jXBF^lneioX%WW2vA;+GgdmN)j z-3<0u_%Fuh+LEw>vYwenb8D=Jq`e^Dz~R!>8tcr!y=#ximdN1CaqU@qL`bq~5e4SI zm*x+q*4vXmn+oo?SNlhHqHv)Loy+mZX=WzZWL{e1Do)3AqOyFEg$O(((<}Y(C1EvN%H#Iq#0IugqncKfg-e zU*V^JrSBG7olD|9&V6ScQ`Vkr4(8TgnlG#a-8?9LKlGkup8GtxJ5hoU(ofi*=J$B_ zV!vM5a@dsBk(rgZX#5afOpt2m+CbaP3IX=Ps`QIkEb-q~mJlm_FX9(j=w-t*5Dk;v zV{*8ted>ccA&wd>vE!3SW^Ui z^alGQL@?+)ihI@t7MXQ^kontaLTo(*pXA>4B|2L8)kBg}OSdW+X;um4Iy4)bYKN_2 zS;ca-V;5uQXXqW&lpO0t)?G_?!SZ=K`6EW8^=+h6`1Q8h8j^me6=t9{Ojc-_}0S>g!Mxv*CCNN!Xe>VA#&S8ZD{PZ^h2!F$$yppAJY38deCad z<&|*4J~?s7KjJrfuwEC(^*BUavTKl^TMxre?@j(SjYyGA!wLp+v;v>q*U8ravGRLp zUuU;xjQap~=saq-%SW$1h@QZ=qO-Evr_fu{Pa)5%lW`(-^hUn?O+S29R$rSM0kZJz zUr!_xIaKLU^4mfm<4@bmUvwAuD9?ai?G0AXw2L3!6owHfWsUaK`ZLkT_~TIhyDlSf}z^#S?P=)Jy(YCAn)^q#;GJ ztm#MbiCyBQe~=7si95ZhC8_pNn&vqn)&hTOCI2n_w=ofakkp=RUtxtXc7=eDar3lzZ|bjigA99$iRvv+4<1#clGkYmwCZIZ46_CU8IOdw#%-?cOZ>O=8@;i1dqlmp@N#R*9I6%1rG;(|&nMwaXw@7xP|>nf!>7+7z=^#!)}Q%xwSW!(MgExN#)1PH~HI{ z@ij@Or4jv`O9-9y@~6b|mzlX8>k^qHMZzm}dy;jp60fH`58ma~QFKGjb%uK)O+VwC ztJ#;;UlEiw$>=A0-*_)LJ9*1}`(W&l-f^?`{uZq5!M80fFYUfexexRN#dUgOR|P+P zR|)oKJWrJN!NtCac*VO(^rd`5SDqvAY~Vn+a_5$;cSov8u)| zUrcsbo;1wG*~|AgRtmajr_JYsK@y@$EeW-PawIY^WIc^2i2eSuD?9)DpvoqL1*y5`NYkn=pbpR&J z*jCBabUXLND&3GQG8PF>elj8He`MS(b0Lo}ql>e!wk+rVOqH?0BdUzKt*%q{#adic z-sbQ6W><^W>+*0S-jisbO(GA;`K0VQ-t8;>v}EDw?0W~Uj*8Y`w4^G(%+<2wSggHF zZ`y4p2nW`+zLf1rIhxCZ75-Ev-p=XMZ`r-jI&Lsef!D<`bzvf8mb7aI2y>@;{f zJ(IU&H?TH-0QL>3PnO11TOSRdHHwNY(c(Ab^0Ek-VAtebd$^YGN}J@bv8i$<-2jQw=1|J~zLk8aX;^dbV?SyAcieLeE-(LHxxO-qm*pOxr%&NMiYkR+yF@+Mf;)!aa~$r0zPc6^VQ#PD(QPJIuvYCrfE6bmWXs4%zrP&WZ}=R}IWn>zv1lKXKb)G%Nr=bAZx`7equDfv>|F_(>~&3}?UWTI z=kj#P3Tb_hoVXxkLFVL9IrBPs9h&qc-PlC$%O6>m|5kfXrjQU)U`y`ybu!;Fj4$l# zS7@uOvkb5wv&$L38y{!eJ;y1${e7Z$I+^;rjNP=iWcCt^HIj01dw5g3I=9?OTpg31 z*qt3JC9)@F#0mDo(OAM{)m$VoaeB7S-6h;!Ql9e}>GWg+YjN$xyn}CADO%)^H3^*$ zWLb`msJ%66^=vCMD{X6d?6XImBj}mQne`i;BTC|hexhy*u@BEL;EYSRX3V#&R4cX5v_w36JJpV2mPZ**xzg><-q}N-L#vx;j(KEIrq*wMgv+p2j_UFOcnaRvk;x5t+GY@7>0cFGE5y@>YoHLgoa{V)6I_W1dTTGXFEtzx&(@6*JY{z0D!u0K}33i`|2Z|a1l zQ4Y5@^89AAo<}BUrgrkqZK;j5PYQiFbDg7N%x(<@?QYL01c8#93@6FM(v|Xoec?!5Lr%nQ0A-k)5tH(cbJo>xWbyvCDOHJ1Z#K^ZB{dT2~3&Ge)$? zE}!V}B>4@VQn5EHqetT!;6S3~5m<}WSWo~`wWWER6O;&JhZ_gR~Gi9_ZI=y6;o&UlT+sbK8+Y<8?ei$B zoTDd_WzQby!VZ8P$l4C=pFHc1`aG$&?AxO43Ogs-JuBsn(y32O zkF2xrq8$79UdSrgCaee<-`~S3+>$)YfTu01IgxQAHPAjR{aQ5PJ}#4@Z`@Dw$$8$e zU7bJMYQ;}#Hl2|)J_n-JXtg$?e65&k&9x@Yc*YJ=`fl7KA{xk=*qqucxNmadtdz%T ztqp#7{LCrJ+6s4e?YxW~WY68wGu3jDlHvnRmAht~n{Xfap}Pj^k-jUG@2F-j_|wjn zPELr^XC2uoGHLgPOSy8u@=j_Tt@Cp-+VAtt@}u}hCrBx~6(_~YAU73J<_hHfN`!D<81ClijJBpdzSBZiqWDw zCBLo~?d49ET*~;nut#3b=91sd_6(iGC@OCzbz#;esZ^t+?-U$aCxG8+_jhvYR_p5= z)e=Gxn)!E5N{U1(O}gIz77^#mMD|;9pDWgiJ=b31-8zGw32MK{>PpCLZlje!td~~a z1;BGkJxK}*8+oeEj7mx*)~66>|KUK{yDq7SkG`;K%O!I?zIJat7Lso*d`|w7(Yx=q zv$Ll2_0V_0Y^pAt%av6c$=3W1%BB(TZVXRqce#H#GiRY6@0Tn2u57-3myAyq2pc-j zJPdnTzRwW-b}Z;5l3_9}dug8R$)zXC~Wz784xq7{=| zw7c!+xx4+QLX$Z&r$?n%Xh_gx>DuQM=r|Nvjg(+!-vC=p}0%F`B(Z>%S#&NZo4u zd7jD9=I(o|df&UzjdiJrV|*KJVV?JiyAn?-dnMk+mo>}%a7F!8M*nkT&_s~G{#45?5536P6Ta~L_%erwsw^sOz#Ol@k4sJY?mWWnVluxow zLaN9*CU%F;z}y@MYec@YR;cgnHn~oohqAnNxJi0`u3Z$_>E!7`TiP$*tYc=@C41(l z7LtTXswBsSSf_|0Hq*}Lpa0PA`LuzY_@Je8mbhAsnKuw4{CjuLuF>w{(r2c5#>2)~ zSpRRd7LcoRb>6C3bK9daJ{#i7-jNo3pC?|n_s9u@+7{ej5iOcMMkUuco5I`D@O{X; zerVGb{NF_PcV-vp6V!tlB2X-iXXyR?kQqt!7;~*6TM}y9!)j>y&!cFZH+XWuSK;&3 zM|;^L3G2Zol0Li2&d{-@wMRPKD--7jd{`Pq#tOcUMt^VVSiu`{`D&jG%eP9LpJ&Nj zO}o)YYa_d-=~R0Yvsa~){a{V^*&-e5?8>YwqU|yIWJh>uwQ<%i{v?mlgqz`Lrxx|I z_PRo8p;D8Y=^Q}U#;pyK#Gc{W|51&Sx36Yu-JDB#7q@IK|D#o3!H{=mzgEBR8m$dS z791;$@!VGREcRaRdz+04Wls=r`@=WKvzble%ATplC1DiRpM1qyM*Dbf%UCaO)pggg zS5sxkC9Np5)^?RUovUTiBwacBn&;ATA+LWEOse0y%K8!dWdoK=yaK{EN##q`3;Dw6 zLP~NlZuezTz28OI?jh_R=G+S{PQ?pOyW@yda?0DgV3hHEUheJ`v6mU^7o&~&uBzI1 zOUWzt9d}A6_T8I|pfWdnUU4U^4c6Ib6aEk<2rT7!I?wFjh5gA`@fdGD-%A*)@#%*o zZ{q4E?r4T-?JIZMej<^M6dQSyTvjOc)Pv|8Dk!eu8?py>Mv?>&u1K=8F5Ol``oSYIR8J$nsRW&0xyKZ2j^)zHtnFn=-cKl9r_mo2>p& zzHFjpWo24N_()?&D>PmM&O?E|)S`>_YVLB@kvst|qqpWi1M72gz($U2%N>_kSY~IhjNG%GVb?P4X@)wRBqz=k1*f*|*mznZS+&(khg&3pJ%){G82b@5G$TdX!i; zdB#P}ON+}+U9~$`Ch_NSiyf-ta&}xEsmV^zq%YS#&LrIXvT6HnclGXxT@+c&)FQgz zabD?-;*)oHc>?c9ok=Ssb!?8*By(6dHCgXn8ihx#s*+^aO33=;TE0X zBu?dayB)#R{a&UwNXjIRJnk&%Nyg{P>Be(;2TClQ-H{Nr_+tE0v#54O@GgsAj&g6e zqMcO-G)*2`Mes)ah-tLgk+-H>6sPn9>9;TQ6CIvii@X%FzV{ZK`yCk(C;z$bKib24Vi&ccI`&(5qX%lvDD_T?Q-)jn@gT0IaA zyd#>ESmf;D6&|5k8xzB});VvcWvB-hwbt+5Mys-o5wvOubl0l<9tYZqin@^5(7|x@ zFjnX{Q#O6`gps#TX5Sw^&b+YoLu+(G{&XJ9h_Q+PW@$~$DXy)%(%!9Fpjx4^jvpPm-oQ9{2%>WG{;Fa1aI>#AQyS0=~yJt$tYSw6~qmx@vT-@6KysN9H8EsNxO zRr)SX`_~qIx!9r8o5hq^-AhL9y<5KSmbsdn<%!*uNoifV`Xx7h-}Q1yZGR{*Ka%bFH*Y|BdnOr2}5Dr&o3-Py$(Ll>NW* z^~^4U*mBb96ZUgR{GI${twc(fkB^K3SZi5!xMGr3?(gqqVH;-`YELDD^+eT1)NP8! z>)y$n``3+?QiKgVm;QE&j)qE}mOnvPj}!9)R$OF`bU#0_=0(1vxmY}UvR8ylW*A(& zAEkEzQv{@M^4ha%(Q02hWi^g9S?@TRty`MF{tMOJW{$Y z+@8X0)umVhbk@iDLHf&O4yG`#L*&U)~K>na>Vptt?BM z5Zm7Ci+uOQdg+8uS3eaVLjUbXm|Jg4*f!ZH_tKZ6-xHFOi zec@KU<`7%mK}atN$g4?qQG|TGRO_^fHEFHw51%9F>fv}wN8(yTAF2zDfHwQV74%(pfgQ;h8VYpp2V)USTaD|@i-uRvYNhR4+OnPd#wCVdRm@rt##DNxz;9chVczCo9ga>1BmA z(xl1Qed!jhmVPivK{O`%{crht5_=*ZNv0*`Tj)*Ib@Y(8TK)5ewTr#f!vMveaDOM&-Tv#jzBk>1eamnfze=M#ZxY*^5UBkLD zA<`#1$NRzYaEY|{$+P3zK2P1m+n1R=-|XtsJb8fX$wuR$B#i7_YXP#N9q+)ES!xuT z2c_f{U8}vrNqW|EdpDzTRE3VrGc6`rYsM$125h8#Ue>;mICCyZFSCzBLi5Q=lp4L6 zw~kSKbN76`Iv$6V1iPQ^BJ>_hG`n9B){!`N zx~CU|;bz`O>_+@~R259!cx(w0HzOZIsaUq1)Cq>`(M=Wy(`g7;nV^#bQwwf+xBbIK`dqG$fj zx{1DRimeve4AM5erS|AucFzeaF40ik2z#1;yqlR2377ZIx@+AMJDMHGqh7vAYS#Et zT_8`^_W6~u+K`)lyqkF6RYv+?wie8#Wmle~P>~KaD|TcQlDRX_cp>8x7kpWTyt$LB zT#w$CoyPid`l{|EaADF*GVcy-QE67{jEKBF0F;@cXv_^s%(`bmY$ECN@x^n>oNtEN zsO-EFM%iC+8tP_z)EoE$QYYsbMi(;gE|GF~p&1ib)=t}ZGI@3O$z~`8bB<92e`T%oY!WYUuTgtJ(mQ%uVFKrpsIJq&- zuUZydzY>4*&wCnUpnSQzbQ>pfA+&1Oc#S1EX@NYWzx3MA_4kH)mqU3odhuYm$9RL? zwHQfW%LuxJINm^_}|AG(@XsMW*NGYT^HOtvf4VA5wuXpUcSl%rb7hszngjW zTG=s7i!E)w?=@NQ7DXVvhoevX^1jG}JdKib+WS$`9g>+j-7@|goNkx*;dby0d=vcG z&Oe&N^+t2cypA)PfN~n$T(L?hzgXOl1LZUc8S%E$N1tOnXe+#d5BIVgZxcDTAvvPU zizrD~vBh@h!g~8V_V{wQ_Cm=S+4MZN#?q@&srw8p1;*&u&Uba*nSR~HNsoIO8PBZE zbfes>b-m`j>^;y<2e3z(Jg;IOtfLHWuW^%gVRWST_0}HL6HDYxIEqwL4y!R_<&kw$ z##cFsp`BH+qT-9PFjeD}TLIS747(+P>^-dp{met<|Nv4oPSCoLXE;M^=uRPe|*i zg=c9+rM5|+%b9w(k7c!1uvlA6@1#Foaz-ijezC$~ND`+EDSzafQT$1#JOoBKvNG-~ zkCTRkoVAQnerqLvUTZgJ;$rS+f^bE%16l9Ov?4w8W^D8MHfe57+iP;aS_fYl;lQHM z=9HGwu&wAl8C!YA1l+`$CVe|2WIC)!)P1j?t6oyvX;xJpQI!5LfHF^h+ap!X$n<+??7qtsTCw9LFgqPX+aEW(gUZA0i2R+jBNCQ8QLrgW*?X*!u` zl}$Hdq3!bQZOx=@+7;CSYB|!MPhRuk(Q??G!!}}bEYZ39ORN_4N&gW$m6d)wPB;ngnyaI%W#3c@ z_L=19nWb=LWj5ueC5Jk$#nPp($CC5rzLuQqvL$^YvGk+Jl1@f7=}y?AGW*CGt@38; zqiZj{n?4yiPp+<%3=5d62XlkO=o_WQE{sn6QClwxclSPal_n5^|RcB=0XJjn#nqR&+bUIq!zBr#UC_Bz>-OFZo1E^A5b)+0_w1`4W^5jpGqlc8Yc}X_rf+iD=H`OQd;@Ovh{qj9^RDylfZs;v;x5ulO zeR2>LhcyGs*kP6IrF!c1-HvIFofa*~|&uL$A;|V0gdV zbx^r)W?f{r5$=-=vVxyP9BE=%u}+S7x%0kco;+^tP1t@}xbvio=abp}H2W!MzI^$^ zqVZMc%$d?N?mU-2eRH8r+RTYe5#F5AM^F6{Df2n)>_lR0{+RcyjH#w~nRd;^EbNx| znN``W$fPI28_~6KIlY^+(vo=+?w&e+be9m#(+Q0eX^Qs+r`ng%sN;44L^Kn4)ER|y zw>YAFZZ;Q(H`dcl>-5YMja+ihpWt%GNIO#Q$i}zd>1`r!{@{G`_e{#DmYI+yHF_dR z(&;pCe7=p1i>T^Tu}EuEkK|iDQQt^n%W=b7#)+kkOKCZhnURx5HCv9{FVDhvSd*&_ zee@}jj#iqZkTo!sqpbYRwQE*FN-ehad+ym&j^yMdO?sP>Y)R9%$O}0W`ju0pBdG$t|Alktl2RMhd9=ll|&mv!uc|~NaxX_1_nX+d=$(U?+ z_S3GWa;5*^aye_%`qEBvcw@Gd(&U*PMJlBp13+PN04s|7c%#jlQfS?#KB=L59h1#yDVC%8EHT5v<~i{Q>+aqwjD zZ186AmMJj<%}{fS8EHnDbIiHsBJ)%8U*;F)SLQF~7IUkaZtgTQ&0XehGuzBDbIm+6 z-z+lA%yZ@?^Rjs(^g=%jLKB8zo3KxKa`=hxl<Y z$&u8+^G14KWPjs0egnNL`K35zagsO4o62vncMY{0;{DdUiyF_Sp67e_d5?P+d&|A2 zy$Rm4{%5>N{)PU9-UffPKib>qU*dn!+eD2gdE2S)Ebrg`+x$X*1HU%@W`B!c;BV*G z&fmeWz5fBf4*q}qv|ktmLFji3+6RSxm!M0~-4{Of@(&9727Ucr!STTbe(zv(Fxnp; zToQcV9}#>p_^SV@;OoKl{>0!r!HxbE!LNhg`PT%02>#$-7u+1&?0-F&7ToGzAIu15 z_}_xhGyQMVf)l(p$a-7e5$V8cfwZc;`68zV9>Npb(Zg^#?>pZ2yqmn=z?XaD7Qc*^zRSPcpY6}_=lb{f^Zfb#z5adv zv;K4b-~8wO7yK9fm;9Ig*Zfuf>;4=5TmEW)jsLE{(ck3%!{6!uumA6$P0%)I7Ze2@ zgHA!`pl5Ipoah}K92|n&T!`F=)ci8IDfm_J$KXzC)RmY+gTsR2;PBvxpkHuga1pX~ zUGUA|Tfw)3KLvjdX3^ruQ13Rhczc!O&eXR+Yutf4_k$0odZ!a}8NV*xm-uz1_G3vU z9Ow=Ys(D|n1|IZOF7$y9S2Lge4!=X-!}s9bP5ch?FY_<+imC6*-r>~pHSaiT`i6JB z)YLoC{MjtR?T2C&@lo^bM zJQ*E%syW>ZHzQP6o?$*^&NQDkXH%>5%xBDnXwK2*VsnYP)O^-_-h9zqZpNB%W`db$ zt}s`cYExrsO`T~lQ_R)o8uJx%ow?q8!+hI($9&KH!2HPk*!%?D`!lrf&(Xg(nqQh< z!;$vpd~<>Mg1O9m$yAza%~#Dg2|Y6Sk@lp+ykg!CID+1EBxBOi^tfZuv&VBf;R)V} zj2kEMh4d0^hJk3=L5cCkI(?+p@V122PVHiu5)IWU)=}Nr5%DqlpqyWryrgGmu9I*c zp7F*m8PUQ#wBrOVbR0r`qu=4Y!zN$zmETeBSFE-EI5n4_$G^n=q~4h|Lm?MZZF?f)?HC;!E0rD8aFI2d#P{m^;I|B;LX@;?fi zx&L;wV0--^!$=|jV;L{(|KQktJeo86-1+@A$FG$tle=OG8hdKVxeNASmH zcbAO+a!LEy^x`|=|7-6%;IcTnerKLpiuB$DeFQ-Tm4_}0sE8G;fIebHL?tR1z}Oqs zBx=-H6JzWedu*{+G*Pj{-lE2q#2SrJUz6zl&)Izd{d~XVd+&R5?|pyl{`Tzb&dl!4 z%$f6_bLQ+WdRt8ypvBZmren3=zTWptai+Zo+DY<`%01hN7F0GQ__c?M7tE#pv=XYqFasLVzSc9k%sKgR-kq$lay?4TWaBbF?I1} z9WdHv7;CFbGuqW5+67d$XCk&3O|C{_Tpoqd43m->R4xvXzjB1+yfsC=mEPzLW7MSjPNU?*lC2r)w)DnO)9PlxzVy~rJE{Yz%g_?)QVqK| zx2`x>dXuGfE#4T~&9ud!1x;HR+S0Uzqik>6BGJ-OC~X}2lWD6-SCBdV(YmiMGQDY& z`TlP$HNnFr>%ZeETI1{b?eX36mbh3OeD_=~t+2Jn+L^+V)?f`l<-P{Sw2~)YUs7-w zT54<|`5Jvtvm8a43mqLfU>8R zEHYOm$f^$5OT;zD>JF~80G~>UMcRkO~LwCKvFEC$d>KB9Lii#*UQV zL!0%7Hj7za=QFPV42%VZZGhE*bzl~YfrVf`c!x7H-74ZC{6Yk1TpO)Y zk5DQCTo-{>lfC!NB@gYUE_FzcNdxzEpgw6wk|7A+`tAb0O$Q%#0}o`N_f$u}uEF9V zp*VVDf1r2+?Haz|6V=XQ1aJ1l*}AL%GA9+QA2>p4HBBLRDw7;&49*+Pa`E?$1j?U- z)H%h{B_DV4$6cc!k>w`eV68&wnnGIm;ofrTOSCkRyZ5FL+u|YdrIZOrTbni`T|wroOD&7XDqduI(YC`1fQs!(goL++$yf*Zc$}(Oq@~P#OWgeN%)F(`QZ{lauHB4M+dIB5RuO;uxaeN3HMI0utA@iH^nD&yJ z2IGE%aer6bN%l9nGzDieHiW`~l#_xQk-3JV9vxtRtpLeeQ3p!|?69yuz!nQl4E9)G z$X-7kv^LmfVQYYGHicQjK0Az+gN=4Lvx1$rfLX&SIz{ss=uerO}1dw@T!xOe0g*mx1C%4{2PLHmQqN zrt@;tSVy~eal+REYP#1>z2!iThfHgO;&Q*9P>*t}E5n{^t6FZ8^-0}Fq15VXx`LEG zb&6LRmSZNl%JHeRuGpD5vZHO-rxXnKP3kge+C1qm(?4A7pmR&iaJ@=9)UMG9B+D^H}7{Y@^_h$~eu z3Mm0ib|s1=-jx>U?x;00V5-!doRHTFVW~55Jh|-0Qe%?eMUf*hsWaIjm7F1#m~9U^ zj4!?c3*vAksVzA`Lf6Cd%8{bNx?(lM7%2l+l{%9Z(7Ok&Am`MqNoTSoov9q@OqQfG zl_QWCtHdf+Rjd}PSvAa2uVI0hr(Vl~#5%E#RmY6=mzeuoFV?e~n7Q77 z8NiKVBQszIdlL&0o5f}pin;8sSQzHBx3F-rRcvJuVw>2;BE@#Gokd|bZwIS|dBan9 z!qeh3p684>gC{vF&fyu(i}Sb(=D=~aOX3ppUd9Y#BxV>Nfj-7OV+ERL^rd;m$~4ay zK=X{%X`V3z^Nh_|gwg`Djgd6l7>U`&X$XI;%tT(ypfg`(v9g3!rkTe8nt2St%;Qm3 zT{)&4N8VG)MWno>Tt}K4n2U^{xyT4`#7N?;7~-lJw74}!v68nUiMK+Dx1xx*B8a!5 zh_`AJZ-oKrebLJ$he@3%4kJy;VReYZnh=LIB@SyrTopxJ6;51Li?}M9xT+R$RWxx` z1aVaYaaA~RRRnQW0&!I|aaDcds#xNxX2ex-#8q{PtCEPT;)$yo5LeYBu4+bHl}KDw zkGLw4xQY{31rk?PB(8EIt_mWq@*%FOPF&?oTvda(swQ!j3vpElaaAyJl{;~jAgxgxIMNv?|T@eJ3+b=>8KxP|N77WhsW@wcwj?6wunZd=prwnDSpb~L-~K%A|^ z9CvG0Nok`bGb<%UNoCebTcsUS6r<9f*(qt50e2wo*C~CJJfs<_jK&$+6Ljba(;25Z zaVwe)x5jMvHsso_>|oWDoysnR<;=K)a#y*Fl=qZ-=o@lA-V1#ol4_Y#E$gV31=X@b zwQNSUY)-XoLA7j2wOo#B*@|k}nrhjmR4v<4Ejv&x+fyw&QY|}CEjv>!yHG8=QZ2ht zo$9Dg6{=Hns#6=PQzxoZH>ypYB7FrEs!emMO&h9BC#p?1sz)8wqeAs)PW5O*_2@+P z=mt-M-pripQBm@hAqdObbW_GCA0jM049uxE74k4Jr#dyKI(4EtwWB(9qB?aWZv%7G zV`JcnoFkHGWls{to@9xhWQp`;u?J>JoT^B&gp({0Bt>*2KkP_;R3iDIko@r15K5vF zC;3r<$DDd4_}uvxXxMKS>!sWgPm6Ty&%^`-9?h6L*&^>^h_ZR*c_f!$EB*J4R1hO|w zgn>qg2%L`+QIPY|A{wKjI-(B3u_6||sFMkEQE(x@Vy59tn}r4Q>4=e#O-m)d$ ziXq;zBi`}_Z(T&J}KRe{7+F~n6u`dA@W@{ShycqaUJ!En4qxu<^qDQ(%EC~KokKxt# ziw@tegkRMY<__PgUs-whS3L!PKhr$}*TT<=Im6TH1#^M7)o-jiJg$CcHQ;si5|*e} zx>p#}Kn205nG4Rm;f1Bc87vr=z(tfY--<^<0z7xWERff-qNaN(N>@Z$2sNW8o#&phDE z<;`5+&xNn0!>6kP?psk*L|89iYZ1NzmNDt&g)_46De(3RKp&7jP{8l2D$-OF)iBZu z6oIUc2o}LC1|DDrlqg(;cQU>LD!qZH$N)@d!5%4G@-nI7T!UjX|4=rttV`CYoUcCVRCF{L7M1ld^9s z@Xl?4`fMp$Vr14zw1UpjTC_&Ejc9{#vPeeXP7x`n;Z%`|^zB4D=rKlNL_N0`?Ga8B zX$W@^9atvruE5cHO#E=BBg9lp%%Gh1NS6B29Js@Rzik_(L zUZNM$yd&NL?IZf&%6&y&Tsd20Lk8uD9E>cb^ob$qql4dDE^1!NAf3n;`3UzH{aIa- zM=|h+8;DjOBnGkC@NgRpi8DkDL3pSbim;Scc4D{~jwg{a%NKrgBT?I<#3)uz6u=)Y zoTOL`eCfuZWu+{Ofmhu)gr!6i@UNSImX&f%z|-yngr#&7@VT3a@FXz_(r~hvjB9=* zKEn8TikJe!ioMBQsR{-J=LWBK>7}w{?_FIOM@59R7*R6w7uxb&SLTb^n;{Uy#VDr zu=E9#emkl^AikFb`-~@9XXKNFASMu&pNdEsfK9c}$g9d3at4Vl=eHGH#hk8VvVuyh ztMp2eZxBh#rJOq`*<^aTn3J|CEh4HtS6XW1CSakHY2;>xV|#4U@~v9G#>ggK$zxBm`4Ba z#8suH+=wu(Jz<)hMR$PhPFi7V6Q;!yrbXfozR-(HH073rY+i(H-h^yEgltU-*=iHA zMG>;a5VEx(WQ!qWYeC2sO~_V@kS&UkEt-(679m>;LN)^-TPs4g5JI+4LbgOgw$_Af z%?R1T2-$)O*+K}}+7hw_6SB1>WHS=7`4O^}BV=nw$YvyDt4GLYNyug-WUEZbW+Y@Y zBV>ysWHS=7SrD=r3E31vwj@F}BO#k5AzK0=n~{($nUKv$$X1S!tu7&(86le$AzL^h zn~{*MIU$>okgYBun~{*soRG~($d*FLR-cf~laS4Zkj<8mtsx+i!X3FJ;&mp(bA<1*7tToBvnJeg zAl!>5+-pO)7f-ksAu0*X&=LC8C-jRa^s7tg7f9%rOz0Ou=$A(5*NM>2Na*J*LPaR9 zATiLEFwh8}=t!KAV^oEZ(2kHWiIC8qkkCj-=s-wlBqVeoBs3BdIuH^X2?-qt35_B_ zB;cA74~?RcXoRptMI$_|n;J zCv4<|jdg{@#^!{Lu7r)v2^(Dr6`K$$>IoH_5Gv{k6^(?73ZbGMp<)M-DKhbF5*sZE z8yyK7jUr2A;k-mhqv$PqBP?;UIpL%$;ba2gq!Zz!k#I7OaI!w(WE|mSeZtA=gp)?X zNq<7fAi~BV!bXL#(T=b&iLlY0u(1MRV{m*}yo)&|uEZb5R_l4LC> zDf`bngIq|mx{yq@B1vFNlE9UEza8~y`38XkbeCgRh5D{F^;+~+^jA0Pm+sUfovBCK zQO^_98*Hf`xDvNI5Z@_OW=ATsBXN)|@rydLv88r%rIOoFeY;Xk3#wy5wTpo@jUudg zjM+6NG6v=LVJd2bh;Q6R&kW5I6ZEWha+`QP{6g5PS2P|ehuZSQ z*uVe`OMveH{BIDW!!;{W$QofQpqm#ktt!R_bzlQ-j`?YsO8RrjzaW$c)>XrZAqM!^ z0@qd~j3QooddYtScw?LphWURDuiHYs}6CZ$cH9xWsD*rIi9 zF~ab{=p-29jA+=38o;BW75p63dzxds;07eG3}1l=AZt^2J+#;2q)(YUMjig(l1Q|B zGx!mvX>s!VD;^jZ1z@xjh56q^_(;HuC?h>DQx`}ylxS_D@kE;uZ9_DTXg8wobkEM| ztIH)ikmzutV~Bo0bPCa#MCbO%P0!FRB)W#^HlhcKo+NsO=pCX@`(*V@7doPrMD2*W z5cMLeCmKMsdY_z(J|dK8EuwKm6Nok=+A6z$-(1m_Xh)*mi1s3yO*EhAV4@>)P(CrP z9}dJsqSJ`ZCOVJkVxlXEt|PiRFTGE`*g^DQURHJwaf0YsqL+zYC;B7N2SlF`eUX=E z2vHbOtGxc*@)Q@MUPSdo1Bg~98cMVl(YU<+{qmFqqRoi5BHET{N21+`_9B`si>l-k z9ZYm2(Q!m45}ihLHqm)tX&w5399#bH?m6|mzfR?RruuH69QpqH!yNrdN|Dl3&R}x% z-M3TO!{N(E)FgrA86BOGS`CNa#{Y~;9f?Cf_@7XL-Y#_?21#TJ$(d4ljlW7ua+ZWR zcR~xCeX|?Ox@jZ1P=%S_za?tj1+P;q(AM}Z~U!m={X?t8Z=rY?2 zdY0%3P+iaoSP%3V)B4g_mIoaJdgy|-y>WIIpND+=UUoy=LHNh!u<2|Po6P(1cX=+) zk`rO;n{l#;*Q&rq) zJKw=~@?Cs4-^2IveSAMJq~jfkDShs3>Hgw5rVG4{J00K$`Pcj#euy9DM|crG%8$|U zLBy0k_qKF@@f_|n^l!UUIQ+e{c{byLp%@wU&@~aYF-w2l?6kR)`9$->7CS80SWU5R zWK+xLJ)56xYuY>DRq-c|E1c#!U35-yp5~hG*2CTCVTWHV#d&V=d|Ljz_hFwM6>=+f zueea}txxlf@vB)`U-_*6Hv#4WBXNgr@YKwO&tC!ifK7wX`9ijWt;aj=`|y_gNm$sg zvpeiDd%<;hOWlckabF(DLwRi;&zr$7J&kw6oBg@qo&x>>pT{LwlTr z=lE>A{+i8Pc>(R+*eu$+^9i)~;1g-@$tTm^3-71P^yT?<+IwsHCu#X7tNGDuC_nlR z<;N3He)J>CkKRQ2d4DxOxSa0K2Wj~SYx#$0`G;!xhiUnTYxzfL`8R0!H){DeY56y6 z`M=WgZ_)B^)$(uC^6%90@6z(`*7EPs^6%C1@6+<{*YX!?`M=ikf1~9;q~$-XSct z;`eCr`?UD|TKpj`{;(Ebq{Sb_*idQ~kyo;vowt9wnmuKt45om=-@=iyxuIf2GB5 z(c-si@!Pccy;}S}Eq=ciU#P_&(c+7=_@i3NP&+=V9l!b9 zYH#u8w8z!e{RnNpP1_f0`+udK%OueMZxX0%9HEXw{&U9>Wf&u6Y#GMu4f3ByO=`q=5dJJrOs-9D($EbSGze|rP!g z%AhSk600_}GFw@htxWR6pWDjHFs2M+$}px(k15k*Bzl(VF%mWY-SaVJ7*mEZWf)V2 zF=ZH2hB5!A=KOWK>+qQSJA51k-rj(JsDQ6Md1>NH8+ez)74N0J{yCUB_ z!+U4f@zxpsIs%^=yaj?cKt{l)|IhzdAiuOJzx-Ak?;^-=y!FQSH9uu@*=O*u`5gYR z3)n)oh%IJI*iyEPEoWb_6>KG2#a6R5Y%N>IzGNHNMz)DTgHUO12Bwcw?v{*5P|C-6qR2|V_aO8uFqeaWABsQ#qiw3+tS z1m3vdYvI}4lqKOGHgeyRuYfOUQ@#o`iLU`|iCmRY=l|nex(EM4E}d={D~B%(omS2$ zXO(lxdF6s~5nox+={Dp1CFQd6opMFFs$5gPSFS7faDENW-%xHUx0Kt;56X|qPs$y9 ziABc)@#S3U1^b5AE1rqtEfo2k*hlm)k5_nG9Orb8P*x7_d-+BuLip3fri5C z4F3eepPxD*^$665{Hk?hc#+F5qb8z`n=|>P?N)euMt*BM1@H8<#hW=syi1cN-;2Q) zJO|*rmD|}4wv+8*yWwHJ7yhXGSs^>X4zjP|Z+-~gsYmb+rlaf_I}Y#jZ`mn!nw?>1 z@y7Fcb^(5?m)R9~q+e$@*=_ix-(mOI19+!DW>45t_ME+7zq6OJaq(v+bNq|RiraE~ z?#P|FD|hFf_>YwjugEKLKkm<~@M=7W*WkfCgop769>t@19UjZ;^7_01Z^#?-raX~1 z=Ph|_{0S-*e}GEk9eGcl#e4I+tm;`86CyU%j!UWBElKMqj>BkL6c!7=7hN zeSbmbB$?*vg}wSFG4pgX6nNU1mkS)%WZW}bZlRlB;PJ{(;PIP|^AKx8IdiihJE8M3 zV}^8ds~~d}uOJGAoS$rHZKz)AjQ7F{Bjtw;<=PTXz9EmJ3YkN;3&^nI9nxWS1C}%#MwU7>jN1EuvczGA5VgdCrAqu~ zMGZF8P>UMymZGL)_02?0_3c-xj0N1cbVG78CJMMcGZb)qtCe&1c*E2s+s>VBYWsB9 z*?l#p9Q*C3u4!HwuAXx@8s>j`df*-N26gU#=2tZ|pi8L#k2A*F#T>)~_~ZV^GAP-_~VWJetrcclDm@M;hAsuPxlT@9e6~jp<(3 zuhwv~d2d#RXVRdU?Kb&6e&wF+TV1#Pv`hQSFQO~XIrVvRUWYS%dpqE^wWr>(cpt(Xx7HN2PZ9v0;@5+h2Y5++*L! zU%$GSzwX$+x^ZF89`5zFKGWn-W@uDj>(oQ3Esy$o@BaMJ^x&YC^Oqa)8&v<{gG9Zp z@5*`uTOZNkdm?;M0dIsFi8t7wa($dRf2HW~g9*vsKKAlR5jyid1~+-^FOO{uR_2!I zlxAiY!qVU)&)eZcOfHB07U?&B**o|1Z8@Kej$^r3>9UxpWDa)>RnV9tCnK-lTe^WET3)=O5(@sU zIlub+z;RVg+?3nrE$Q=mC6L1=*2IP*vzp1*3@;6*`q2DU#Lv+p1Kp80o)kLnQPnC`t) zyb6D(*RG4ciz}ry89ODl`LUHtkAxrGb8z*x%_DbN58AWr=EY@RKOApY;hX4xJiKZ! zoR}ZDw&NuKxsih_7~>nM2=1HtvB~T{gg1jK0_8wzF-{tXvLQB;oCQ@>6J22Z`0=E z=Iayr3&otD`#)i zks;%CDN~6U1_IL~rB|lDagIJAy?ggT`o_6A{rhRcGQ<#!wu7*&S{&V=PkLUSKD3mi z%gV_vB?lnu4B>{z(CCmTP$}!eN+13`4^hDNr3_0(=G*OcUt&z!ZqtFBW_J{{r>Ke+GnmiEp)DNe)8HbPOnvWQ{|HaC*-xt(deAv_N z<@#?PcFwbXFkt5=PY2E3@ufx2g|4>W%{LxQ7-ALIt!kHT^(~T(#~p{)%0KY@)uyZ| zAC1YsGpqbs9T$s6?JggoMcQ>RTiCysWyXEhkzF`iUH?@k97SWKKeV1AgnOUEe{ zJf2xDjkWUp$M}(s*;zMdx*J}FPtC}!^`OX`FY=jQb#chk!G$U3p56*EiiJhTx?P&y zFmKcDhKDL|I#Zxq?KdcE(w5E5j~!1s9On0<_k{UCj@%H_j)I8og%YDAiDSgJ7Z|kjhNP1AX z%Avv1CG)J#%;@%s?ePf(2SROb27TV}w(aLt=YF|0Fs)mgx}G`RrEq&=L>B@qlNS`uRf^?Xa%M*V+{}L_-a;G=_A-Z=v!x*_Ix;%6 zRuqKFe?RgmtZ~M5;@p6wd!Z3`yKHIC)0U=>YG0>c#>yL)W4{jEawzQ7pqsVt#~A#^ zOx|E{*}Q)I{@58Q%Dk&{zO(kPQ0Yo$wc!!Vzeu_J^jT>1>44N3s~`UM(m3wiyeDkZ z#6X*!@yfAfb(N@;YTb+lH~D&Y|MOd`ee>XX zkG@uOH~jMZz@ZDDFM7Ob|1VnyPu;uhwtvmJ%kMj7X20{)DIvL^VaEQsLB^n1%lu}K zceP%(d;E!{D#qTMA`X1E);;98^+yj@kBT&V-*Wcx+H3vC?`e8x*&jWhHJm)F$R+xE zX$853h}3-X?7fPEsJz$jQ=R4k4g}R0uN-A~3G0Vvve}HfF-O#=Z2orW6|(8p#V) zRO%XH4Rz*6&yN}xVH(hsjN$WYmda6D73kT$cyyB}ucKEI4Dp6~<_dz$P|FZ$dIAh< zN)NmLgdtxa33Br{IxmfKPLA7iZ|6T2Z0`A>hxJ19+Dfa*uDPq4<@k#jEUS`JmUSN+0dnaP!x4_fI;kNZz>X=c4x3 zXY0)Lo>95!)noVmSk`2!OGCTbkvSI|ZfLl${-M+75?aJ<&42IALg&=#2gfhkG-s9h znDHa}oBzJsCCRQRyYOo4S5EIf`SDTfdcIYgUh_#DzdXFieBpOaY2S{E>@Fg5at37I zeLS|+?9MAi^6II685P~;9^Ja$ETi`KPkNPiH;b5&`~do69Hd-;D&fqnA3oWgHRO$o z`p*(DQkq5^qC>+&!otHt!=(BcTI$fyyOc0(93Ntj%7BQnbT&`Q$?l$$Z8~95e8St{ zB~w^AJ15`+7#O}aPfzcuPs-|>m7m!?M2i(~jr~(;w@~SF`~0Po3l{z|{6P2*x#!pX zHskoc#dqv{n8mb9ZckSwSB!WxozGn~dCDBiM%T>jgQjj?`pUYz&9)2`X@yo`r_g~$b(*N@Qq8eS}&WfMDIG7SQeaF2IrbZ6FpZdr7*xpqd zmFsf)(%vo$pG~+qVfc$11=oV(yR~k#{h;C9A?u4KhP`+H+NL?H_xsr1m@r^qNK8r_ z*FIM+7xkOv{pr{zwVs(ZPOP%7)1sIjzDugkvU+cN&%N6}`rPYh^PwZB8om1K_2$#l ztlxbYaQ|`Vf>WPZ-~RY33%B}rx}7zv9HQ$hHsBAihWcBzbk~P@StT>f! zT%76A|B_Vgl9ipGncFwBdlt+wC|CY#fbdqtC{c=g^)NW}OkJ>H!B0^K`#ZiLc4O>0 z=QjicNzk2b*R7fOy`gX3{&_iTZ`e0}@m=Mv-IsODVBdZ5RjcsK zudA9heVI1c9Mw>qgyf7+r{nW!YXNOGq`A*zV9;t@$$Jb6>Uct|@cf%=j%r8%k zvfX|9yB=Lq*^@^%?spBJ5jSh$zQgZKO0Q>_TDXLpcR10tZ_DtC!#^t*l6>o@fiq8x zE?lwmR<{+Q-oAbkg)A0;bwCOjxHYtA1v&frkW zj%gDjO)f6x|v!@5gMrieP#mtF!%i*{^7T*WsF~3T;Do% ze$BJFm>d|B`DM(uM$WIMCH_$4cd>KMh5M_0Z7+`*JSO#r**nTDn^`+M`BBK_KZaWM zU)EvFxnCz8`*wle?(5|1wl$l+oZfQ7q^g0Rgns9P_KR(KS`S@U8kAul6lM5X7 z4ZQnB?8ZZZv$v$LTl49Q{N{fgm{eulq>c;v^?Tads^vDbR~I@}u6^ak_<5_>bvR?* zFEw`m?;{7yj$EohrdrH64y&l|<@$adXl z)ml)X%ZJ6HUrFtmhZN}2ajFwB=h^=}WAIxn-t#*_uPNpq5n^3@V8Ow6#W7|f_GCzo z4h;rS|Jjj;Jrj+dw#!dG8~mxm zr)JaJ#k`}OcAmfJ|R-SQKwlZ{r2Wcho$!x3y>e{Ha^U6u$rT^Jj-AMYVT$_|upfxhda-xAKc#6mh0wQU7PR K`q#%-V*eN752Zu^ literal 0 HcmV?d00001 diff --git a/reactos/media/fonts/Ubuntu-R.ttf b/reactos/media/fonts/Ubuntu-R.ttf new file mode 100644 index 0000000000000000000000000000000000000000..45a038bade527cbbf30f197c5a116be3cfb2f0a3 GIT binary patch literal 353824 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 z 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 literal 0 HcmV?d00001 diff --git a/reactos/media/fonts/Ubuntu-RI.ttf b/reactos/media/fonts/Ubuntu-RI.ttf new file mode 100644 index 0000000000000000000000000000000000000000..6f819f69c68273bf53172292ddd5e22792e0b0fe GIT binary patch literal 386440 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 uE)1U!$f*!u;Q8|i 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 z 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 WtXjOS+?3Sd7y73C`OUQwLi|5v%T literal 0 HcmV?d00001 diff --git a/reactos/media/fonts/UbuntuMono-B.ttf b/reactos/media/fonts/UbuntuMono-B.ttf new file mode 100644 index 0000000000000000000000000000000000000000..7bd6665765768ae885e2868623e7e9c2fd0cfc8a GIT binary patch literal 191400 zcmcG%d3;pW`9J=gduQMGnaoUP?qrfo_DuE!0yBgV0t84{BrJgdA%L<3L-YWRJ2&s=o_p>& z&w0-FoaZbvAx1=25CvK4CypBFTQz$w32(0?N{f!1IJwT8oVJIAU)2)j){dW8TzbbB z^m`(<1+m(%s2|(9sP^g)hzx!rW$)a@v%9`s*&GAI3q-2h=3cu(stM$F5(N(<&b6Ig z^A}(HT>Swe&pNyh&!2sDS29T=_?Ls9X8xj8oy9+^HxX5=Cn3IQ!MxcW=Uxcf5EuNZ zasfP)74!t2C*e7B!QvGwD_$%r#`Ae1UB;rNb7!jt-O@-DswZ;PFP^=!OW&=181IoE zl9tR~Jn!zaU#%hGnsdnT9bHSWUQzbJ?sFtu-%V7st84kZu5Vjk`Xf4Fm;Xbea?fKXF{k30?PbO|iULpKkj3KO+gj5Vp#i7Y7z~fwUdUCq( z^L~FGDfMC8M`=MmCexLqMobG8(^U99q5d68gptV33HwM%Bmo`Zs*_ z8m*`jL_yI@Lb92p=>x3mhm9RZ5>fJ^@N{xIm54*>*LZyR3Zy7#gr^Zs;@rU}^?8D( zkc~1RgOmP1Ga*qC< zA+`h8aQHq4IPvZVv>*dw52ZoW1zB=v9c0>!D;KesBPP)__*Bw^vdOvjA=mt> z1tR^I5pRRY=?|A1?qL6wi5&7P2mI16T{&Km*9i@a#SKuHk1V~v;Tw- zWqUaasS07!AXDc5Kqh(cHV>s!2tFJm5$ZA|zr}MA{0E>-{#|zaAnyPw<$4Q)`&8tL zw}BMW5O)9(|? zvip!KbR(qUeJ6%I2a|{4s|6&4Dd8N7zi#$@LLIf6>Z) zG*#+exwH$x+lTiRi1QrHKq);T=THlpYC$}|yiM|U#8dchwaLqCpw+q&D%BEs{DHRO zMGi{(IrH}c@Z)VO6_3Z^C7K|K{B9j;A%s97bT$5SEv z-H4qba|%G}0@PDIa_xa6CMp9Lep&H67-hoU1+upDAZ!epT*8%#?*S(VVgC)&S^0ai zh^<7r1K=EaUNUg;{^SG~-jmyr0xuISB;a-8!V|AAUPn^Dw0?v%0(yXJhDzisNO9b` zM46y=lz<8SCsh}PxM!lAcx`wnE%`}ub@IyOVyaAbC#R7y*$p0X#7d0?=?Gbd(n_PB z(Qk0)BkpBavN!p9;`^jKS((gDUYA^nn3t~PRms(f?TJ4nUP}BP{C;#LrzJZRn-jlH z^dufie4F^TKebevpvjJ8d*bJbrxSYb z;zP*$qYJW(Ox%#zns`0&Tq2oB$a&zBa;bQ#oIB^iV_lX%?oR$X`B38J#7Bwm68}gR zC3$`R=t{OE+Y+}Ur%xmvO!Ovtf1EN(_`jw7LmFsl$@$5RsJq`l6aNN%dFBuNlQqe@ zWF*P;Qk=%o5?NL!+6R{zy*8PZ45IHh;tiKR8yA<2yN#&JD#V>4``-G4R7pp&KJo8l z8B)BJeuLaSk@$1sT+){`C1)ht{8kT7$1>nxYc=&IWzXTcq{TJF(257EK^U%)EqvvOV7Ra=avf(bGNb)<3#5tf* z$^|WvX({EwT}Jt!<)Gi9PZxq>oC2+qX*CtYT|-gOK~$3b27SL2v{t4=s0{9*R1O-W z3Q*{YkhxdpK2t)}wyUVZ0v%+CYPoU&Hp|w2^8-N6`?_(KHlv46K2#sfpsr zuQ1vS105&R@l*$QGYtoAp?c5>p#Oxm+W;~McG6_f`E&*70-6H4 zkXk{nl<8G8HQ5K7dm89snhv^zW`Hi0X&23edl~5Gu!UxUUQO-E&u9hB2E9h6*U}ug zucHpol{61@l}xXv&g4I6wM^I0e7M)r0?-@iO3)i++D%u%eUnUYrbTeyLW@Dy(Gt*G zK|jT)-UWKQOxM#gxbL9lpd09F(2by<&?dSD^e1#J=$$gXi>`xvGpz)@8}wtkhgN~! zOV@+mN2@{ar!}BIrM0k~eFMr5Um4!Sf<

    ;rag2I+`H)B>sPuoCWphrMol<79R&Rn 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

    K6B~TIT$OQsY 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 literal 0 HcmV?d00001 diff --git a/reactos/media/fonts/UbuntuMono-BI.ttf b/reactos/media/fonts/UbuntuMono-BI.ttf new file mode 100644 index 0000000000000000000000000000000000000000..6c5b8ba023e41689a2e14dc3c88f978e3188a1de GIT binary patch literal 216208 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 z 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ăESk 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 G(fmJpf?fdt literal 0 HcmV?d00001 diff --git a/reactos/media/fonts/UbuntuMono-RI.ttf b/reactos/media/fonts/UbuntuMono-RI.ttf new file mode 100644 index 0000000000000000000000000000000000000000..18f81a29258d13e1d6f1ce98cdd167091ea9bd4a GIT binary patch literal 210216 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 feature (Lt, LtIt, Md, MdIt). DM + (LP: #676538, #676539) + * (Production) Remove Bulgarian locl feature for Italics. (LP: #708578) + * (Production) Update Description information with new string: + "The Ubuntu Font Family are libre fonts funded by Canonical Ltd + on behalf of the Ubuntu project. The font design work and + technical implementation is being undertaken by Dalton Maag. The + typeface is sans-serif, uses OpenType features and is manually + hinted for clarity on desktop and mobile computing screens. The + scope of the Ubuntu Font Family includes all the languages used + by the various Ubuntu users around the world in tune with + Ubuntu's philosophy which states that every user should be able + to use their software in the language of their choice. The + project is ongoing, and we expect the family will be extended to + cover many written languages in the coming years." + (Rg, It, Bd, BdIt, Lt, LtIt, Md, MdIt) (LP: #690590) + * (Production) Pixel per em indicator added at U+F000 (Lt, LtIt, Md, + MdIt) (LP: #615787) + * (Production) Version number indicator added at U+EFFD (Lt, LtIt, Md, + MdIt) (LP: #640623) + * (Production) fstype bit set to 0 - Editable (Lt, LtIt, Md, MdIt) + (LP: #648406) + * (Production) Localisation of name table has been removed because + of problems with Mac OS/X interpretation of localisation. DM + (LP: #730785) + * (Hinting) Regular '?' dot non-circular (has incorrect control + value). (LP: #654336) + * (Hinting) Too much space after latin capital 'G' in 13pt + regular. Now reduced. (LP: #683437) + * (Hinting) Balance Indian Rupee at 18,19pt (LP: #662177) + * (Hinting) Make Regular '£' less ambiguous at 13-15 ppm (LP: #685562) + * (Hinting) Regular capital 'W' made symmetrical at 31 ppem (LP: #686168) + +2010-12-14 (Paul Sladen) Ubuntu Font Family version 0.70.1 + + Packaging, rebuilt from '2010-12-08 UbuntuFontsSourceFiles_070.zip': + * (Midstream) Fstype bit != 0 (LP: #648406) + * (Midstream) Add unit test to validate fstype bits (LP: #648406) + * (Midstream) Add unit test to validate licence + +2010-12-14 (Paul Sladen) Ubuntu Font Family version 0.70 + + Release notes 0.70: + * (Design) Add Capitalised version of glyphs and kern. (Rg, It, Bd, + BdIt) DM (LP: #676538, #677446) + * (Design) Give acute and grave a slight upright move to more match + the Hungarian double acute angle. (Rg, It, Bd, BdIt) (LP: #656647) + * (Design) Shift Bold Italic accent glyphs to be consistent with the + Italic. (BdIt only) DM (LP: #677449) + * (Design) Check spacing and kerning of dcaron, lcaron and + tcaron. (Rg, It, Bd, BdIt) (LP: #664722) + * (Design) Add positive kerning to () {} [] to open out the + combinations so they are less like a closed box. (Rg, It, Bd, + BdIt) (LP: #671228) + * (Design) Change design of acute.asc and check highest points (Bd + and BdIt only) DM + * (Production) Update feature. DM (LP: #676538, #676539) + * (Production) Remove Romanian locl feature. (Rg, It, Bd, BdIt) + (LP: #635615) + * (Production) Update Copyright information with new + strings. "Copyright 2010 Canonical Ltd. Licensed under the Ubuntu + Font Licence 1.0" Trademark string "Ubuntu and Canonical are + registered trademarks of Canonical Ltd." (Rg, It, Bd, BdIt) DM + (LP: #677450) + * (Design) Check aligning of hyphen, math signs em, en, check braces + and other brackets. 16/11 (LP: #676465) + * (Production) Pixel per em indicator added at U+F000 (Rg, It, Bd, + BdIt) (LP: #615787) + * (Production) Version number indicator added at U+EFFD (Rg, It, Bd, + BdIt) (LP: #640623) + * (Production) fstype bit set to 0 - Editable (Rg, It, Bd, BdIt) + (LP: #648406) + +2010-10-05 (Paul Sladen) Ubuntu Font Family version 0.69 + + [Dalton Maag] + * Italic, + - Hinting on lowercase Italic l amended 19ppm (LP: #632451) + - Hinting on lowercase Italic u amended 12ppm (LP: #626376) + + * Regular, Italic, Bold, BoldItalic + - New Rupee Sign added @ U+20B9 (LP: #645987) + - Ubuntu Roundel added @ U+E0FF (LP: #651606) + + [Paul Sladen] + * All + - Removed "!ubu" GSUB.calt ligature for U+E0FF (LP: #651606) + + +Acknowledgements + +If you make modifications be sure to add your name (N), email (E), +web-address (if you have one) (W) and description (D). This list is in +alphabetical order. + +N: Ryan Abdullah +W: http://www.rayan.de/ +D: Arabic calligraphy and design in collaboration with Dalton Maag +D: Arabic testing + +N: Cody Boisclair +D: Monospace low-level debugging and patching ('fixboxdrawing-ft.py') + +N: Amélie Bonet +W: http://ameliebonet.com/ +D: Type design with Dalton Maag, particularly Ubuntu Mono and Ubuntu Condensed + +N: Jason Campbell +W: http://www.campbellgraphics.com/design/fonts.shtml +D: Monospace hinting (first phase) at Dalton Maag + +N: Pilar Cano +W: http://www.pilarcano.com/ +D: Hebrew realisation with Dalton Maag + +N: Fernando Caro +D: Type design with Dalton Maag, particularly Ubuntu Condensed + +N: Ron Carpenter +W: http://www.daltonmaag.com/ +D: Type design with Dalton Maag +D: Arabic realisation in collaboration with Ryan Abdullah + +N: Vincent Connare +W: http://www.connare.com/ +D: Type design, and engineering with Dalton Maag +D: Monospace hinting (second phase) at Dalton Maag + +N: Dave Crossland +E: dave@understandingfonts.com +W: http://understandingfonts.com/ +D: Documentation and libre licensing guidance +D: Google Webfont integration at Google + +N: Steve Edwards +W: http://www.madebymake.com/ +D: font.ubuntu.com revamp implementation with Canonical Web Team + +N: Iain Farrell +W: http://www.flickr.com/photos/iain +D: Ubuntu Font Family delivery for the Ubuntu UX team at Canonical + +N: Shiraaz Gabru +W: http://www.daltonmaag.com/ +D: Ubuntu Font Family project management at Dalton Maag + +N: Marcus Haslam +W: http://design.canonical.com/author/marcus-haslam/ +D: Creative inspiration + +N: Ben Laenen +D: Inspiration behind the pixels-per-em (PPEM) readout debugging glyph at U+F000 + (for this font the concept was re-implemented from scratch by Dalton-Maag) + +N: Bruno Maag +W: http://www.daltonmaag.com/ +D: Stylistic direction of the Ubuntu Font Family, as head of Dalton Maag + +N: Ivanka Majic +W: http://www.ivankamajic.com/ +D: Guiding the UX team and Cyrillic feedback + +N: David Marshall +W: http://www.daltonmaag.com/ +D: Technical guidance and administration at Dalton Maag + +N: Malcolm Wooden +W: http://www.daltonmaag.com/ +D: Font Engineering at Dalton Maag + +N: Lukas Paltram +W: http://www.daltonmaag.com/ +D: Type design with Dalton Maag + +N: Júlio Reis +D: Date fixes to the documentation + +N: Rodrigo Rivas +D: Indian Rupee Sign glyph + +N: Mark Shuttleworth +E: mark@ubuntu.com +W: http://www.markshuttleworth.com/ +D: Executive quality-control and funding + +N: Paul Sladen +E: ubuntu@paul.sladen.org +W: http://www.paul.sladen.org/ +D: Bug triaging, packaging at Ubuntu and Canonical + +N: Nicolas Spalinger +W: http://planet.open-fonts.org +D: Continuous guidance on libre/open font licensing, best practises in source + tree layout, release and packaging (pkg-fonts Debian team) + +N: Kenneth Wimer +D: Initial PPA packaging + +* Canonical Ltd is the primary commercial sponsor of the Ubuntu and + Kubuntu operating systems +* Dalton Maag are a custom type foundry headed by Bruno Maag + +For further documentation, information on contributors, source code +downloads and those involved with the Ubuntu Font Family, visit: + + http://font.ubuntu.com/ diff --git a/reactos/media/fonts/doc/Ubuntu/LICENCE-FAQ.txt b/reactos/media/fonts/doc/Ubuntu/LICENCE-FAQ.txt new file mode 100644 index 00000000000..776a25edf13 --- /dev/null +++ b/reactos/media/fonts/doc/Ubuntu/LICENCE-FAQ.txt @@ -0,0 +1,177 @@ + Ubuntu Font Family Licensing FAQ + + Stylistic Foundations + + The Ubuntu Font Family is the first time that a libre typeface has been + designed professionally and explicitly with the intent of developing a + public and long-term community-based development process. + + When developing an open project, it is generally necessary to have firm + foundations: a font needs to maintain harmony within itself even across + many type designers and writing systems. For the [1]Ubuntu Font Family, + the process has been guided with the type foundry Dalton Maag setting + the project up with firm stylistic foundation covering several + left-to-right scripts: Latin, Greek and Cyrillic; and right-to-left + scripts: Arabic and Hebrew (due in 2011). + + With this starting point the community will, under the supervision of + [2]Canonical and [3]Dalton Maag, be able to build on the existing font + sources to expand their character coverage. Ultimately everybody will + be able to use the Ubuntu Font Family in their own written languages + across the whole of Unicode (and this will take some time!). + + Licensing + + The licence chosen by any free software project is one of the + foundational decisions that sets out how derivatives and contributions + can occur, and in turn what kind of community will form around the + project. + + Using a licence that is compatible with other popular licences is a + powerful constraint because of the [4]network effects: the freedom to + share improvements between projects allows free software to reach + high-quality over time. Licence-proliferation leads to many + incompatible licences, undermining the network effect, the freedom to + share and ultimately making the libre movement that Ubuntu is a part of + less effective. For all kinds of software, writing a new licence is not + to be taken lightly and is a choice that needs to be thoroughly + justified if this path is taken. + + Today it is not clear to Canonical what the best licence for a font + project like the Ubuntu Font Family is: one that starts life designed + by professionals and continues with the full range of community + development, from highly commercial work in new directions to curious + beginners' experimental contributions. The fast and steady pace of the + Ubuntu release cycle means that an interim libre licence has been + necessary to enable the consideration of the font family as part of + Ubuntu 10.10 operating system release. + + Before taking any decision on licensing, Canonical as sponsor and + backer of the project has reviewed the many existing licenses used for + libre/open fonts and engaged the stewards of the most popular licenses + in detailed discussions. The current interim licence is the first step + in progressing the state-of-the-art in licensing for libre/open font + development. + + The public discussion must now involve everyone in the (comparatively + new) area of the libre/open font community; including font users, + software freedom advocates, open source supporters and existing libre + font developers. Most importantly, the minds and wishes of professional + type designers considering entering the free software business + community must be taken on board. + + Conversations and discussion has taken place, privately, with + individuals from the following groups (generally speaking personally on + behalf of themselves, rather than their affiliations): + * [5]SIL International + * [6]Open Font Library + * [7]Software Freedom Law Center + * [8]Google Font API + + Document embedding + + One issue highlighted early on in the survey of existing font licences + is that of document embedding. Almost all font licences, both free and + unfree, permit embedding a font into a document to a certain degree. + Embedding a font with other works that make up a document creates a + "combined work" and copyleft would normally require the whole document + to be distributed under the terms of the font licence. As beautiful as + the font might be, such a licence makes a font too restrictive for + useful general purpose digital publishing. + + The situation is not entirely unique to fonts and is encountered also + with tools such as GNU Bison: a vanilla GNU GPL licence would require + anything generated with Bison to be made available under the terms of + the GPL as well. To avoid this, Bison is [9]published with an + additional permission to the GPL which allows the output of Bison to be + made available under any licence. + + The conflict between licensing of fonts and licensing of documents, is + addressed in two popular libre font licences, the SIL OFL and GNU GPL: + * [10]SIL Open Font Licence: When OFL fonts are embedded in a + document, the OFL's terms do not apply to that document. (See + [11]OFL-FAQ for details. + * [12]GPL Font Exception: The situation is resolved by granting an + additional permission to allow documents to not be covered by the + GPL. (The exception is being reviewed). + + The Ubuntu Font Family must also resolve this conflict, ensuring that + if the font is embedded and then extracted it is once again clearly + under the terms of its libre licence. + + Long-term licensing + + Those individuals involved, especially from Ubuntu and Canonical, are + interested in finding a long-term libre licence that finds broad favour + across the whole libre/open font community. The deliberation during the + past months has been on how to licence the Ubuntu Font Family in the + short-term, while knowingly encouraging everyone to pursue a long-term + goal. + * [13]Copyright assignment will be required so that the Ubuntu Font + Family's licensing can be progressively expanded to one (or more) + licences, as best practice continues to evolve within the + libre/open font community. + * Canonical will support and fund legal work on libre font licensing. + It is recognised that the cost and time commitments required are + likely to be significant. We invite other capable parties to join + in supporting this activity. + + The GPL version 3 (GPLv3) will be used for Ubuntu Font Family build + scripts and the CC-BY-SA for associated documentation and non-font + content: all items which do not end up embedded in general works and + documents. + +Ubuntu Font Licence + + For the short-term only, the initial licence is the [14]Ubuntu Font + License (UFL). This is loosely inspired from the work on the SIL + OFL 1.1, and seeks to clarify the issues that arose during discussions + and legal review, from the perspective of the backers, Canonical Ltd. + Those already using established licensing models such as the GPL, OFL + or Creative Commons licensing should have no worries about continuing + to use them. The Ubuntu Font Licence (UFL) and the SIL Open Font + Licence (SIL OFL) are not identical and should not be confused with + each other. Please read the terms precisely. The UFL is only intended + as an interim license, and the overriding aim is to support the + creation of a more suitable and generic libre font licence. As soon as + such a licence is developed, the Ubuntu Font Family will migrate to + it—made possible by copyright assignment in the interium. Between the + OFL 1.1, and the UFL 1.0, the following changes are made to produce the + Ubuntu Font Licence: + * Clarification: + + 1. Document embedding (see [15]embedding section above). + 2. Apply at point of distribution, instead of receipt + 3. Author vs. copyright holder disambiguation (type designers are + authors, with the copyright holder normally being the funder) + 4. Define "Propagate" (for internationalisation, similar to the GPLv3) + 5. Define "Substantially Changed" + 6. Trademarks are explicitly not transferred + 7. Refine renaming requirement + + Streamlining: + 8. Remove "not to be sold separately" clause + 9. Remove "Reserved Font Name(s)" declaration + + A visual demonstration of how these points were implemented can be + found in the accompanying coloured diff between SIL OFL 1.1 and the + Ubuntu Font Licence 1.0: [16]ofl-1.1-ufl-1.0.diff.html + +References + + 1. http://font.ubuntu.com/ + 2. http://www.canonical.com/ + 3. http://www.daltonmaag.com/ + 4. http://en.wikipedia.org/wiki/Network_effect + 5. http://scripts.sil.org/ + 6. http://openfontlibrary.org/ + 7. http://www.softwarefreedom.org/ + 8. http://code.google.com/webfonts + 9. http://www.gnu.org/licenses/gpl-faq.html#CanIUseGPLToolsForNF + 10. http://scripts.sil.org/OFL_web + 11. http://scripts.sil.org/OFL-FAQ_web + 12. http://www.gnu.org/licenses/gpl-faq.html#FontException + 13. https://launchpad.net/~uff-contributors + 14. http://font.ubuntu.com/ufl/ubuntu-font-licence-1.0.txt + 15. http://font.ubuntu.com/ufl/FAQ.html#embedding + 16. http://font.ubuntu.com/ufl/ofl-1.1-ufl-1.0.diff.html diff --git a/reactos/media/fonts/doc/Ubuntu/LICENCE.txt b/reactos/media/fonts/doc/Ubuntu/LICENCE.txt new file mode 100644 index 00000000000..ae78a8f94ea --- /dev/null +++ b/reactos/media/fonts/doc/Ubuntu/LICENCE.txt @@ -0,0 +1,96 @@ +------------------------------- +UBUNTU FONT LICENCE Version 1.0 +------------------------------- + +PREAMBLE +This licence allows the licensed fonts to be used, studied, modified and +redistributed freely. The fonts, including any derivative works, can be +bundled, embedded, and redistributed provided the terms of this licence +are met. The fonts and derivatives, however, cannot be released under +any other licence. The requirement for fonts to remain under this +licence does not require any document created using the fonts or their +derivatives to be published under this licence, as long as the primary +purpose of the document is not to be a vehicle for the distribution of +the fonts. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this licence and clearly marked as such. This may +include source files, build scripts and documentation. + +"Original Version" refers to the collection of Font Software components +as received under this licence. + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to +a new environment. + +"Copyright Holder(s)" refers to all individuals and companies who have a +copyright ownership of the Font Software. + +"Substantially Changed" refers to Modified Versions which can be easily +identified as dissimilar to the Font Software by users of the Font +Software comparing the Original Version with the Modified Version. + +To "Propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification and with or without charging +a redistribution fee), making available to the public, and in some +countries other activities as well. + +PERMISSION & CONDITIONS +This licence does not grant any rights under trademark law and all such +rights are reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of the Font Software, to propagate the Font Software, subject to +the below conditions: + +1) Each copy of the Font Software must contain the above copyright +notice and this licence. These can be included either as stand-alone +text files, human-readable headers or in the appropriate machine- +readable metadata fields within text or binary files as long as those +fields can be easily viewed by the user. + +2) The font name complies with the following: +(a) The Original Version must retain its name, unmodified. +(b) Modified Versions which are Substantially Changed must be renamed to +avoid use of the name of the Original Version or similar names entirely. +(c) Modified Versions which are not Substantially Changed must be +renamed to both (i) retain the name of the Original Version and (ii) add +additional naming elements to distinguish the Modified Version from the +Original Version. The name of such Modified Versions must be the name of +the Original Version, with "derivative X" where X represents the name of +the new work, appended to that name. + +3) The name(s) of the Copyright Holder(s) and any contributor to the +Font Software shall not be used to promote, endorse or advertise any +Modified Version, except (i) as required by this licence, (ii) to +acknowledge the contribution(s) of the Copyright Holder(s) or (iii) with +their explicit written permission. + +4) The Font Software, modified or unmodified, in part or in whole, must +be distributed entirely under this licence, and must not be distributed +under any other licence. The requirement for fonts to remain under this +licence does not affect any document created using the Font Software, +except any version of the Font Software extracted from a document +created using the Font Software may only be distributed under this +licence. + +TERMINATION +This licence becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF +COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER +DEALINGS IN THE FONT SOFTWARE. diff --git a/reactos/media/fonts/doc/Ubuntu/README.txt b/reactos/media/fonts/doc/Ubuntu/README.txt new file mode 100644 index 00000000000..292d4ade693 --- /dev/null +++ b/reactos/media/fonts/doc/Ubuntu/README.txt @@ -0,0 +1,15 @@ + ---------------------- + Ubuntu Font Family + ====================== + +The Ubuntu Font Family are a set of matching new libre/open fonts in +development during 2010--2011. The development is being funded by +Canonical Ltd on behalf the wider Free Software community and the +Ubuntu project. The technical font design work and implementation is +being undertaken by Dalton Maag. + +Both the final font Truetype/OpenType files and the design files used +to produce the font family are distributed under an open licence and +you are expressly encouraged to experiment, modify, share and improve. + + http://font.ubuntu.com/ diff --git a/reactos/media/fonts/doc/Ubuntu/TRADEMARKS.txt b/reactos/media/fonts/doc/Ubuntu/TRADEMARKS.txt new file mode 100644 index 00000000000..d34265bc853 --- /dev/null +++ b/reactos/media/fonts/doc/Ubuntu/TRADEMARKS.txt @@ -0,0 +1,4 @@ +Ubuntu and Canonical are registered trademarks of Canonical Ltd. + +The licence accompanying these works does not grant any rights +under trademark law and all such rights are reserved. diff --git a/reactos/media/fonts/doc/Ubuntu/copyright.txt b/reactos/media/fonts/doc/Ubuntu/copyright.txt new file mode 100644 index 00000000000..77340703a42 --- /dev/null +++ b/reactos/media/fonts/doc/Ubuntu/copyright.txt @@ -0,0 +1,5 @@ +Copyright 2010,2011 Canonical Ltd. + +This Font Software is licensed under the Ubuntu Font Licence, Version +1.0. https://launchpad.net/ubuntu-font-licence + From 118cceaf95e38b4cc826a9145d4f68c1ade9a812 Mon Sep 17 00:00:00 2001 From: Daniel Reimer Date: Sun, 25 May 2014 11:40:30 +0000 Subject: [PATCH 046/232] [LAUTUS] Change the used font from Segoe UI (MS ONLY) to the very close looking OpenSans family. Same parameters though. svn path=/trunk/; revision=63440 --- .../textfiles/ExtraLargeNormal.INI | Bin 107070 -> 107138 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/reactos/media/themes/lautus.msstyles/textfiles/ExtraLargeNormal.INI b/reactos/media/themes/lautus.msstyles/textfiles/ExtraLargeNormal.INI index 493f982ffff256fcabf7265b53a644228555186c..6b19e6e14294fc346024ec9044a762559b7885bb 100644 GIT binary patch delta 1046 zcmdmYgstf)+lC!Xg8mEz45%@y+*`bg)QmmSk0C#G=ESZ7mj2 zcJ_8GqCnFpKVz4ee1<&*Q+BgG$9^s>!o0$rf|$ZUmnu$oFk>{D{6URpa*eISW*5~H z?3n7N^BXW4ZuZd?V#AaJnK9Ww*J$$r;}clC2G+Xxgefka8)D=ppE4Dje8AXhbDGUL zUQ7$XCQLqXUSN8f0i)gI3voP~&v|JWVk!iOyG+e79!#mtA3OeH5uU8S&~{oRBim+& zXVw(E2=7GTj1x7c8MS1zN+cAyiwuml-g8OL(FX^cDoRze)~ delta 951 zcmZoV%C_$a+lC!X{J{*V4CxH{KvIDrl)-ayqp|qr2TVE`5}RdNl^HQq2ePfj5aVZW z#}EUWI(Z*^4Z8SdZ;t(3=z^0kE)m|WCtN0oA<<}TJAHx~qu3;Mp3Nev931EhruUaK z8g7o$6=Fk|+1zL>jo~G*^2rBsStc9Uh)mYf5t-ajt}{tcVp5mOWC1;+$p=g%Hs3L0 zVnsI$7)G`rZJP~jWcbh}L53P{p5WDBh%U2PvF0uhx**Uj#mxqtcQ7R`F0tJlHSHHO zhK`F%-cCL>k7sk->^uxF0mJU?=2P>kuu6b+`7J8KklcK6Ni;Tl{sZl3V4Uo*oNe-< zRqxOpviaa@R~8IG@eNBc%m=#a`SgGiMxM`W^|Hwzp;pa@r+JkQH+ zazZHI_Gbo+*VM49+YrhKkHqQsq8L4 Date: Sun, 25 May 2014 12:29:49 +0000 Subject: [PATCH 047/232] [CMAKE] * Force the C++ compiler in the ARM case. svn path=/trunk/; revision=63441 --- reactos/toolchain-msvc.cmake | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/reactos/toolchain-msvc.cmake b/reactos/toolchain-msvc.cmake index 3d692605fca..52d4f4336fb 100644 --- a/reactos/toolchain-msvc.cmake +++ b/reactos/toolchain-msvc.cmake @@ -9,7 +9,14 @@ set(CMAKE_SYSTEM_PROCESSOR i686) # which compilers to use for C and C++ set(CMAKE_C_COMPILER cl) + +if(ARCH STREQUAL "arm") + include(CMakeForceCompiler) + CMAKE_FORCE_CXX_COMPILER(cl MSVC) +else() set(CMAKE_CXX_COMPILER cl) +endif() + set(CMAKE_MC_COMPILER mc) set(CMAKE_RC_COMPILER rc) if(ARCH STREQUAL "amd64") From f01e92424aacb0aa301119e9f27006bd48037f78 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sun, 25 May 2014 12:59:17 +0000 Subject: [PATCH 048/232] [WIN32K] Make sure to check for invalid NULL handles before passing them to GDIOBJ_bLockMultipleObjects, which skips NULL handles. This is a design limitation, since otherwise we either need to pass a bitfield of valid handles, or duplicate code in certain functions, where different combinations of dest, source and mask dc are allowed. svn path=/trunk/; revision=63442 --- reactos/win32ss/gdi/ntgdi/bitblt.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/reactos/win32ss/gdi/ntgdi/bitblt.c b/reactos/win32ss/gdi/ntgdi/bitblt.c index a567290dbda..e27c5e239b3 100644 --- a/reactos/win32ss/gdi/ntgdi/bitblt.c +++ b/reactos/win32ss/gdi/ntgdi/bitblt.c @@ -47,6 +47,12 @@ NtGdiAlphaBlend( return FALSE; } + if ((hDCDest == NULL) || (hDCSrc == NULL)) + { + EngSetLastError(ERROR_INVALID_PARAMETER); + return FALSE; + } + TRACE("Locking DCs\n"); ahDC[0] = hDCDest; ahDC[1] = hDCSrc ; @@ -161,14 +167,14 @@ NtGdiBitBlt( return NtGdiStretchBlt(hDCDest, XDest, YDest, - Width, + Width, Height, hDCSrc, XSrc, YSrc, Width, Height, - ROP, + ROP, crBackColor); dwTRop = ROP & ~(NOMIRRORBITMAP|CAPTUREBLT); @@ -213,6 +219,12 @@ NtGdiTransparentBlt( BOOL Ret = FALSE; EXLATEOBJ exlo; + if ((hdcDst == NULL) || (hdcSrc == NULL)) + { + EngSetLastError(ERROR_INVALID_PARAMETER); + return FALSE; + } + TRACE("Locking DCs\n"); ahDC[0] = hdcDst; ahDC[1] = hdcSrc ; From ccc118bbe5c47fbbef46af31aa8064c4df69ed6a Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sun, 25 May 2014 14:30:54 +0000 Subject: [PATCH 049/232] [CRT] * Partial update of scanf routines. Focus was on the case of reading a float. * Don't inline float processing, introduce _internal_handle_float() and co to take care of this. Brought to you by Timo. * Msvcrt scanf tests are now green. CORE-7005 #resolve #comment Should be fixed in r63443. Thanks Dmitry ;) CORE-8080 svn path=/trunk/; revision=63443 --- reactos/lib/sdk/crt/crt.cmake | 1 + reactos/lib/sdk/crt/libcntpr.cmake | 1 + reactos/lib/sdk/crt/string/scanf.c | 57 ++++---- reactos/lib/sdk/crt/string/scanf.h | 187 ++++++++++++++++++--------- reactos/lib/sdk/crt/string/winesup.c | 102 +++++++++++++++ reactos/lib/sdk/crt/string/winesup.h | 45 +++++++ 6 files changed, 307 insertions(+), 86 deletions(-) create mode 100644 reactos/lib/sdk/crt/string/winesup.c create mode 100644 reactos/lib/sdk/crt/string/winesup.h diff --git a/reactos/lib/sdk/crt/crt.cmake b/reactos/lib/sdk/crt/crt.cmake index eae70e5d520..60aeb56b642 100644 --- a/reactos/lib/sdk/crt/crt.cmake +++ b/reactos/lib/sdk/crt/crt.cmake @@ -306,6 +306,7 @@ list(APPEND CRT_SOURCE string/wtoi.c string/wtoi64.c string/wtol.c + string/winesup.c sys_stat/systime.c time/asctime.c time/clock.c diff --git a/reactos/lib/sdk/crt/libcntpr.cmake b/reactos/lib/sdk/crt/libcntpr.cmake index 487c92e3a60..6477dfeea38 100644 --- a/reactos/lib/sdk/crt/libcntpr.cmake +++ b/reactos/lib/sdk/crt/libcntpr.cmake @@ -59,6 +59,7 @@ list(APPEND LIBCNTPR_SOURCE string/wtoi64.c string/wtoi.c string/wtol.c + string/winesup.c wstring/wcsicmp.c wstring/wcslwr.c wstring/wcsnicmp.c diff --git a/reactos/lib/sdk/crt/string/scanf.c b/reactos/lib/sdk/crt/string/scanf.c index 57c56d0c263..9ab876fcdcb 100644 --- a/reactos/lib/sdk/crt/string/scanf.c +++ b/reactos/lib/sdk/crt/string/scanf.c @@ -23,13 +23,15 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ -#include -#include +#include +#include -// HACK for LIBCNT -#ifndef debugstr_a -#define debugstr_a -#endif +#include +#include + +#include "winesup.h" + +WINE_DEFAULT_DEBUG_CHANNEL(msvcrt); //extern FILE _iob[]; @@ -56,49 +58,54 @@ static int wchar2digit(wchar_t c, int base) { } #ifndef _LIBCNT_ -/* vfscanf */ +/* vfscanf_l */ #undef WIDE_SCANF #undef CONSOLE #undef STRING +#undef SECURE #include "scanf.h" -/* vfwscanf */ +/* vfwscanf_l */ #define WIDE_SCANF 1 #undef CONSOLE #undef STRING +#undef SECURE #include "scanf.h" -#endif +#endif /* !_LIBCNT_ */ -/* vsscanf */ +/* vsscanf_l */ #undef WIDE_SCANF #undef CONSOLE #define STRING 1 +#undef SECURE #include "scanf.h" -/* vswscanf */ +/* vswscanf_l */ #define WIDE_SCANF 1 #undef CONSOLE #define STRING 1 +#undef SECURE #include "scanf.h" #ifndef _LIBCNT_ -/* vcscanf */ +/* vcscanf_l */ #undef WIDE_SCANF #define CONSOLE 1 #undef STRING +#undef SECURE #include "scanf.h" /********************************************************************* * fscanf (MSVCRT.@) */ -int fscanf(FILE *file, const char *format, ...) +int CDECL fscanf(FILE *file, const char *format, ...) { va_list valist; int res; va_start(valist, format); - res = vfscanf(file, format, valist); + res = vfscanf_l(file, format, NULL, valist); va_end(valist); return res; } @@ -106,13 +113,13 @@ int fscanf(FILE *file, const char *format, ...) /********************************************************************* * scanf (MSVCRT.@) */ -int scanf(const char *format, ...) +int CDECL scanf(const char *format, ...) { va_list valist; int res; va_start(valist, format); - res = vfscanf(stdin, format, valist); + res = vfscanf_l(stdin, format, NULL, valist); va_end(valist); return res; } @@ -120,13 +127,13 @@ int scanf(const char *format, ...) /********************************************************************* * fwscanf (MSVCRT.@) */ -int fwscanf(FILE *file, const wchar_t *format, ...) +int CDECL fwscanf(FILE *file, const wchar_t *format, ...) { va_list valist; int res; va_start(valist, format); - res = vfwscanf(file, format, valist); + res = vfwscanf_l(file, format, NULL, valist); va_end(valist); return res; } @@ -135,29 +142,29 @@ int fwscanf(FILE *file, const wchar_t *format, ...) /********************************************************************* * wscanf (MSVCRT.@) */ -int wscanf(const wchar_t *format, ...) +int CDECL wscanf(const wchar_t *format, ...) { va_list valist; int res; va_start(valist, format); - res = vfwscanf(stdin, format, valist); + res = vfwscanf_l(stdin, format, NULL, valist); va_end(valist); return res; } -#endif +#endif /* !_LIBCNT_ */ /********************************************************************* * sscanf (MSVCRT.@) */ -int sscanf(const char *str, const char *format, ...) +int CDECL sscanf(const char *str, const char *format, ...) { va_list valist; int res; va_start(valist, format); - res = vsscanf(str, format, valist); + res = vsscanf_l(str, format, NULL, valist); va_end(valist); return res; } @@ -172,7 +179,7 @@ int CDECL swscanf(const wchar_t *str, const wchar_t *format, ...) int res; va_start(valist, format); - res = vswscanf(str, format, valist); + res = vswscanf_l(str, format, NULL, valist); va_end(valist); return res; } @@ -187,7 +194,7 @@ int CDECL _cscanf(const char *format, ...) int res; va_start(valist, format); - res = vcscanf(format, valist); + res = vcscanf_l(format, NULL, valist); va_end(valist); return res; } diff --git a/reactos/lib/sdk/crt/string/scanf.h b/reactos/lib/sdk/crt/string/scanf.h index 4aada82b6b9..cb37ed9fee1 100644 --- a/reactos/lib/sdk/crt/string/scanf.h +++ b/reactos/lib/sdk/crt/string/scanf.h @@ -48,7 +48,11 @@ #ifdef CONSOLE #define _GETC_(file) (consumed++, _getch()) #define _UNGETC_(nch, file) do { _ungetch(nch); consumed--; } while(0) -#define _FUNCTION_ int vcscanf(const char *format, va_list ap) +#ifdef SECURE +#define _FUNCTION_ static int vcscanf_s_l(const char *format, _locale_t locale, __ms_va_list ap) +#else /* SECURE */ +#define _FUNCTION_ static int vcscanf_l(const char *format, _locale_t locale, __ms_va_list ap) +#endif /* SECURE */ #else #ifdef STRING #undef _EOF_ @@ -56,24 +60,41 @@ #define _GETC_(file) (consumed++, *file++) #define _UNGETC_(nch, file) do { file--; consumed--; } while(0) #ifdef WIDE_SCANF -#define _FUNCTION_ int vswscanf(const wchar_t *file, const wchar_t *format, va_list ap) +#ifdef SECURE +#define _FUNCTION_ static int vswscanf_s_l(const wchar_t *file, const wchar_t *format, _locale_t locale, __ms_va_list ap) +#else /* SECURE */ +#define _FUNCTION_ static int vswscanf_l(const wchar_t *file, const wchar_t *format, _locale_t locale, __ms_va_list ap) +#endif /* SECURE */ #else /* WIDE_SCANF */ -#define _FUNCTION_ int vsscanf(const char *file, const char *format, va_list ap) +#ifdef SECURE +#define _FUNCTION_ static int vsscanf_s_l(const char *file, const char *format, _locale_t locale, __ms_va_list ap) +#else /* SECURE */ +#define _FUNCTION_ static int vsscanf_l(const char *file, const char *format, _locale_t locale, __ms_va_list ap) +#endif /* SECURE */ #endif /* WIDE_SCANF */ #else /* STRING */ #ifdef WIDE_SCANF #define _GETC_(file) (consumed++, fgetwc(file)) #define _UNGETC_(nch, file) do { ungetwc(nch, file); consumed--; } while(0) -#define _FUNCTION_ int vfwscanf(FILE* file, const wchar_t *format, va_list ap) +#ifdef SECURE +#define _FUNCTION_ static int vfwscanf_s_l(FILE* file, const wchar_t *format, _locale_t locale, __ms_va_list ap) +#else /* SECURE */ +#define _FUNCTION_ static int vfwscanf_l(FILE* file, const wchar_t *format, _locale_t locale, __ms_va_list ap) +#endif /* SECURE */ #else /* WIDE_SCANF */ #define _GETC_(file) (consumed++, fgetc(file)) #define _UNGETC_(nch, file) do { ungetc(nch, file); consumed--; } while(0) -#define _FUNCTION_ int vfscanf(FILE* file, const char *format, va_list ap) +#ifdef SECURE +#define _FUNCTION_ static int vfscanf_s_l(FILE* file, const char *format, _locale_t locale, __ms_va_list ap) +#else /* SECURE */ +#define _FUNCTION_ static int vfscanf_l(FILE* file, const char *format, _locale_t locale, __ms_va_list ap) +#endif /* SECURE */ #endif /* WIDE_SCANF */ #endif /* STRING */ #endif /* CONSOLE */ _FUNCTION_ { + pthreadlocinfo locinfo; int rd = 0, consumed = 0; int nch; if (!*format) return 0; @@ -94,6 +115,11 @@ _FUNCTION_ { return _EOF_RET; } + if(!locale) + locinfo = get_locinfo(); + else + locinfo = locale->locinfo; + while (*format) { /* a whitespace character in the format string causes scanf to read, * but not store, all consecutive white-space characters in the input @@ -246,8 +272,12 @@ _FUNCTION_ { case 'f': case 'g': case 'G': { /* read a float */ - long double cur = 0; - int negative = 0; + //long double cur = 1, expcnt = 10; + ULONGLONG d, hlp; + int exp = 0, negative = 0; + //unsigned fpcontrol; + //BOOL negexp; + /* skip initial whitespace */ while ((nch!=_EOF_) && _ISSPACE_(nch)) nch = _GETC_(file); @@ -259,69 +289,112 @@ _FUNCTION_ { if (width==0) break; nch = _GETC_(file); } - /* get first digit. */ - if ('.' != nch) { - if (!_ISDIGIT_(nch)) break; - cur = (nch - '0'); - nch = _GETC_(file); - if (width>0) width--; - /* read until no more digits */ - while (width!=0 && (nch!=_EOF_) && _ISDIGIT_(nch)) { - cur = cur*10 + (nch - '0'); - nch = _GETC_(file); - if (width>0) width--; - } - } else { - cur = 0; /* MaxPayneDemo Fix: .8 -> 0.8 */ - } - /* handle decimals */ - if (width!=0 && nch == '.') { - long double dec = 1; + + /* get first digit. */ + if (*locinfo->lconv->decimal_point != nch) { + if (!_ISDIGIT_(nch)) break; + d = nch - '0'; nch = _GETC_(file); if (width>0) width--; + /* read until no more digits */ + while (width!=0 && (nch!=_EOF_) && _ISDIGIT_(nch)) { + hlp = d*10 + nch - '0'; + nch = _GETC_(file); + if (width>0) width--; + if(d > (ULONGLONG)-1/10 || hlp0) width--; + } + } else { + d = 0; /* Fix: .8 -> 0.8 */ + } + + /* handle decimals */ + if (width!=0 && nch == *locinfo->lconv->decimal_point) { + nch = _GETC_(file); + if (width>0) width--; + + while (width!=0 && (nch!=_EOF_) && _ISDIGIT_(nch)) { + hlp = d*10 + nch - '0'; + nch = _GETC_(file); + if (width>0) width--; + if(d > (ULONGLONG)-1/10 || hlp0) width--; } } - /* handle exponent */ - if (width!=0 && (nch == 'e' || nch == 'E')) { - int exponent = 0, negexp = 0; - double expcnt, shift; + + /* handle exponent */ + if (width!=0 && (nch == 'e' || nch == 'E')) { + int sign = 1, e = 0; + nch = _GETC_(file); if (width>0) width--; - /* possible sign on the exponent */ - if (width!=0 && (nch=='+' || nch=='-')) { - negexp = (nch=='-'); - nch = _GETC_(file); - if (width>0) width--; - } - /* exponent digits */ - while (width!=0 && (nch!=_EOF_) && _ISDIGIT_(nch)) { - exponent *= 10; - exponent += (nch - '0'); + if (width!=0 && (nch=='+' || nch=='-')) { + if(nch == '-') + sign = -1; nch = _GETC_(file); if (width>0) width--; } - /* update 'cur' with this exponent. */ - expcnt = 10; - shift = 1.0; - while (exponent!=0) { - if (exponent&1) - shift *= expcnt; - exponent/=2; - expcnt=expcnt*expcnt; - } - cur = (negexp ? cur / shift : cur * shift); - } + + /* exponent digits */ + while (width!=0 && (nch!=_EOF_) && _ISDIGIT_(nch)) { + if(e > INT_MAX/10 || (e = e*10 + nch - '0')<0) + e = INT_MAX; + nch = _GETC_(file); + if (width>0) width--; + } + e *= sign; + + if(exp<0 && e<0 && e+exp>0) exp = INT_MIN; + else if(exp>0 && e>0 && e+exp<0) exp = INT_MAX; + else exp += e; + } + +#ifdef __REACTOS__ + /* ReactOS: don't inline float processing (kernel/freeldr don't like that! */ + _internal_handle_float(negative, exp, suppress, d, l_prefix || L_prefix, &ap); + st = 1; +#else + fpcontrol = _control87(0, 0); + _control87(MSVCRT__EM_DENORMAL|MSVCRT__EM_INVALID|MSVCRT__EM_ZERODIVIDE + |MSVCRT__EM_OVERFLOW|MSVCRT__EM_UNDERFLOW|MSVCRT__EM_INEXACT, 0xffffffff); + + negexp = (exp < 0); + if(negexp) + exp = -exp; + /* update 'cur' with this exponent. */ + while(exp) { + if(exp & 1) + cur *= expcnt; + exp /= 2; + expcnt = expcnt*expcnt; + } + cur = (negexp ? d/cur : d*cur); + + _control87(fpcontrol, 0xffffffff); + st = 1; if (!suppress) { - if (L_prefix) _SET_NUMBER_(long double); + if (L_prefix) _SET_NUMBER_(double); else if (l_prefix) _SET_NUMBER_(double); else _SET_NUMBER_(float); } +#endif /* __REACTOS__ */ } break; /* According to msdn, @@ -448,11 +521,7 @@ _FUNCTION_ { int invert = 0; /* Set if we are NOT to find the chars */ /* Init our bitmap */ -#ifdef _LIBCNT_ - Mask = RtlAllocateHeap(RtlGetProcessHeap(), HEAP_ZERO_MEMORY, _BITMAPSIZE_/8); -#else Mask = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, _BITMAPSIZE_/8); -#endif RtlInitializeBitMap(&bitMask, Mask, _BITMAPSIZE_); /* Read the format */ @@ -497,11 +566,7 @@ _FUNCTION_ { } /* terminate */ if (!suppress) *sptr = 0; -#ifdef _LIBCNT_ - RtlFreeHeap(RtlGetProcessHeap(), 0, Mask); -#else HeapFree(GetProcessHeap(), 0, Mask); -#endif } break; default: diff --git a/reactos/lib/sdk/crt/string/winesup.c b/reactos/lib/sdk/crt/string/winesup.c new file mode 100644 index 00000000000..860fe85cdb4 --- /dev/null +++ b/reactos/lib/sdk/crt/string/winesup.c @@ -0,0 +1,102 @@ + +#include "precomp.h" +#include "winesup.h" + +#ifdef _LIBCNT_ + +static struct lconv _LIBCNT_lconv = +{ + ".", // char* decimal_point; + ",", // char* thousands_sep; + " ", // char* grouping; + "$", // char* int_curr_symbol; + "$", // char* currency_symbol; + ".", // char* mon_decimal_point; + "?", // char* mon_thousands_sep; + "/", // char* mon_grouping; + "+", // char* positive_sign; + "-", // char* negative_sign; + 4, // char int_frac_digits; + 4, // char frac_digits; + 4, // char p_cs_precedes; + 1, // char p_sep_by_space; + 0, // char n_cs_precedes; + 1, // char n_sep_by_space; + 1, // char p_sign_posn; + 1, // char n_sign_posn; +}; + +threadlocinfo _LIBCNT_locinfo = +{ + 2, // LONG refcount; + 0, // CP_ACP, // unsigned int lc_codepage; + 0, // unsigned int lc_collate_cp; + {0}, // unsigned long lc_handle[6]; + {{0}}, // LC_ID lc_id[6]; + + // struct { + // char *locale; + // wchar_t *wlocale; + // int *refcount; + // int *wrefcount; + // } lc_category[6]; + {{0}}, + + 0, // int lc_clike; + 2, // int mb_cur_max; + 0, // int *lconv_intl_refcount; + 0, // int *lconv_num_refcount; + 0, // int *lconv_mon_refcount; + &_LIBCNT_lconv, // struct MSVCRT_lconv *lconv; + 0, // int *ctype1_refcount; + 0, // unsigned short *ctype1; + 0, // const unsigned short *pctype; + 0, // unsigned char *pclmap; + 0, // unsigned char *pcumap; + 0, // struct __lc_time_data *lc_time_curr; +}; + +#define get_locinfo() (&_LIBCNT_locinfo) + +#endif + +#define _SET_NUMBER_(type) *va_arg((*ap), type*) = negative ? -cur : cur + +void +__declspec(noinline) +_internal_handle_float( + int negative, + int exp, + int suppress, + ULONGLONG d, + int l_or_L_prefix, + va_list *ap) +{ + long double cur = 1, expcnt = 10; + unsigned fpcontrol; + BOOL negexp; + + fpcontrol = _control87(0, 0); + _control87(_EM_DENORMAL|_EM_INVALID|_EM_ZERODIVIDE + |_EM_OVERFLOW|_EM_UNDERFLOW|_EM_INEXACT, 0xffffffff); + + negexp = (exp < 0); + if(negexp) + exp = -exp; + /* update 'cur' with this exponent. */ + while(exp) { + if(exp & 1) + cur *= expcnt; + exp /= 2; + expcnt = expcnt*expcnt; + } + cur = (negexp ? d/cur : d*cur); + + _control87(fpcontrol, 0xffffffff); + + if (!suppress) { + if (l_or_L_prefix) _SET_NUMBER_(double); + else _SET_NUMBER_(float); + } +} +#undef _SET_NUMBER_ diff --git a/reactos/lib/sdk/crt/string/winesup.h b/reactos/lib/sdk/crt/string/winesup.h new file mode 100644 index 00000000000..7bc3ed7810a --- /dev/null +++ b/reactos/lib/sdk/crt/string/winesup.h @@ -0,0 +1,45 @@ +#pragma once + +#include +#include +#include +#include +#include + +#undef NtCurrentPeb +#define NtCurrentPeb() (NtCurrentTeb()->Peb) +#define GetProcessHeap() (NtCurrentPeb()->ProcessHeap) + +#define HeapAlloc(_Heap, _Flags, _Size) RtlAllocateHeap(_Heap, _Flags, _Size) +#define HeapFree(_Heap, _Flags, _Ptr) RtlFreeHeap(_Heap, _Flags, _Ptr) + +#ifdef _LIBCNT_ +static inline unsigned int __control87(unsigned int new, unsigned int mask) +{ + return 0; +} +#define _control87 __control87 +extern threadlocinfo _LIBCNT_locinfo; +#define get_locinfo() (&_LIBCNT_locinfo) +#else +#define get_locinfo() ((pthreadlocinfo)get_locinfo()) +#endif + +void +__declspec(noinline) +_internal_handle_float( + int negative, + int exp, + int suppress, + ULONGLONG d, + int l_or_L_prefix, + va_list *ap); + +//#include + +#define __WINE_DEBUG_H +#undef WINE_DEFAULT_DEBUG_CHANNEL +#define WINE_DEFAULT_DEBUG_CHANNEL(_Ch) +#undef TRACE +#define TRACE(...) /* DPRINT(__VA_ARGS__) */ +#define debugstr_a(format) format From 1c28feb238e68bd5c1fcf2e09bcde4bc0a8c13f1 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sun, 25 May 2014 14:41:33 +0000 Subject: [PATCH 050/232] [WIN32K] Remove obsolete patblt.c (all the code is in bitblt.c) svn path=/trunk/; revision=63444 --- reactos/win32ss/gdi/ntgdi/patblt.c | 972 ----------------------------- 1 file changed, 972 deletions(-) delete mode 100644 reactos/win32ss/gdi/ntgdi/patblt.c diff --git a/reactos/win32ss/gdi/ntgdi/patblt.c b/reactos/win32ss/gdi/ntgdi/patblt.c deleted file mode 100644 index b809395f3eb..00000000000 --- a/reactos/win32ss/gdi/ntgdi/patblt.c +++ /dev/null @@ -1,972 +0,0 @@ -/* - * COPYRIGHT: GNU GPL, See COPYING in the top level directory - * PROJECT: ReactOS kernel - * PURPOSE: Bit blit functions - * FILE: subsys/win32k/objects/bitblt.c - * PROGRAMER: Unknown - */ - -#include - -#define NDEBUG -#include - -#define ROP_USES_SOURCE(Rop) (((((Rop) & 0xCC0000) >> 2) != ((Rop) & 0x330000)) || ((((Rop) & 0xCC000000) >> 2) != ((Rop) & 0x33000000))) -#define ROP_USES_MASK(Rop) (((Rop) & 0xFF000000) != (((Rop) & 0xff0000) << 8)) - -#define FIXUP_ROP(Rop) if(((Rop) & 0xFF000000) == 0) Rop = MAKEROP4((Rop), (Rop)) -#define ROP_TO_ROP4(Rop) ((Rop) >> 16) - -BOOL APIENTRY -NtGdiAlphaBlend( - HDC hDCDest, - LONG XOriginDest, - LONG YOriginDest, - LONG WidthDest, - LONG HeightDest, - HDC hDCSrc, - LONG XOriginSrc, - LONG YOriginSrc, - LONG WidthSrc, - LONG HeightSrc, - BLENDFUNCTION BlendFunc, - HANDLE hcmXform) -{ - PDC DCDest; - PDC DCSrc; - HDC ahDC[2]; - PGDIOBJ apObj[2]; - SURFACE *BitmapDest, *BitmapSrc; - RECTL DestRect, SourceRect; - BOOL bResult; - EXLATEOBJ exlo; - BLENDOBJ BlendObj; - BlendObj.BlendFunction = BlendFunc; - - if (WidthDest < 0 || HeightDest < 0 || WidthSrc < 0 || HeightSrc < 0) - { - EngSetLastError(ERROR_INVALID_PARAMETER); - return FALSE; - } - - DPRINT("Locking DCs\n"); - ahDC[0] = hDCDest; - ahDC[1] = hDCSrc ; - if (!GDIOBJ_bLockMultipleObjects(2, ahDC, apObj, GDIObjType_DC_TYPE)) - { - DPRINT1("Invalid dc handle (dest=0x%08x, src=0x%08x) passed to NtGdiAlphaBlend\n", hDCDest, hDCSrc); - EngSetLastError(ERROR_INVALID_HANDLE); - return FALSE; - } - DCDest = apObj[0]; - DCSrc = apObj[1]; - - if (DCDest->dctype == DC_TYPE_INFO || DCDest->dctype == DCTYPE_INFO) - { - GDIOBJ_vUnlockObject(&DCSrc->BaseObject); - GDIOBJ_vUnlockObject(&DCDest->BaseObject); - /* Yes, Windows really returns TRUE in this case */ - return TRUE; - } - - DestRect.left = XOriginDest; - DestRect.top = YOriginDest; - DestRect.right = XOriginDest + WidthDest; - DestRect.bottom = YOriginDest + HeightDest; - IntLPtoDP(DCDest, (LPPOINT)&DestRect, 2); - - DestRect.left += DCDest->ptlDCOrig.x; - DestRect.top += DCDest->ptlDCOrig.y; - DestRect.right += DCDest->ptlDCOrig.x; - DestRect.bottom += DCDest->ptlDCOrig.y; - - SourceRect.left = XOriginSrc; - SourceRect.top = YOriginSrc; - SourceRect.right = XOriginSrc + WidthSrc; - SourceRect.bottom = YOriginSrc + HeightSrc; - IntLPtoDP(DCSrc, (LPPOINT)&SourceRect, 2); - - SourceRect.left += DCSrc->ptlDCOrig.x; - SourceRect.top += DCSrc->ptlDCOrig.y; - SourceRect.right += DCSrc->ptlDCOrig.x; - SourceRect.bottom += DCSrc->ptlDCOrig.y; - - if (!DestRect.right || - !DestRect.bottom || - !SourceRect.right || - !SourceRect.bottom) - { - GDIOBJ_vUnlockObject(&DCSrc->BaseObject); - GDIOBJ_vUnlockObject(&DCDest->BaseObject); - return TRUE; - } - - /* Prepare DCs for blit */ - DPRINT("Preparing DCs for blit\n"); - DC_vPrepareDCsForBlit(DCDest, DestRect, DCSrc, SourceRect); - - /* Determine surfaces to be used in the bitblt */ - BitmapDest = DCDest->dclevel.pSurface; - if (!BitmapDest) - { - bResult = FALSE ; - goto leave ; - } - - BitmapSrc = DCSrc->dclevel.pSurface; - if (!BitmapSrc) - { - bResult = FALSE; - goto leave; - } - - /* Create the XLATEOBJ. */ - EXLATEOBJ_vInitXlateFromDCs(&exlo, DCSrc, DCDest); - - /* Perform the alpha blend operation */ - DPRINT("Performing the alpha blend\n"); - bResult = IntEngAlphaBlend(&BitmapDest->SurfObj, - &BitmapSrc->SurfObj, - DCDest->rosdc.CombinedClip, - &exlo.xlo, - &DestRect, - &SourceRect, - &BlendObj); - - EXLATEOBJ_vCleanup(&exlo); -leave : - DPRINT("Finishing blit\n"); - DC_vFinishBlit(DCDest, DCSrc); - GDIOBJ_vUnlockObject(&DCSrc->BaseObject); - GDIOBJ_vUnlockObject(&DCDest->BaseObject); - - return bResult; -} - -BOOL APIENTRY -NtGdiBitBlt( - HDC hDCDest, - INT XDest, - INT YDest, - INT Width, - INT Height, - HDC hDCSrc, - INT XSrc, - INT YSrc, - DWORD ROP, - IN DWORD crBackColor, - IN FLONG fl) -{ - /* Forward to NtGdiMaskBlt */ - // TODO: What's fl for? - return NtGdiMaskBlt(hDCDest, - XDest, - YDest, - Width, - Height, - hDCSrc, - XSrc, - YSrc, - NULL, - 0, - 0, - ROP, - crBackColor); -} - -BOOL APIENTRY -NtGdiTransparentBlt( - HDC hdcDst, - INT xDst, - INT yDst, - INT cxDst, - INT cyDst, - HDC hdcSrc, - INT xSrc, - INT ySrc, - INT cxSrc, - INT cySrc, - COLORREF TransColor) -{ - PDC DCDest, DCSrc; - HDC ahDC[2]; - PGDIOBJ apObj[2]; - RECTL rcDest, rcSrc; - SURFACE *BitmapDest, *BitmapSrc = NULL; - ULONG TransparentColor = 0; - BOOL Ret = FALSE; - EXLATEOBJ exlo; - - DPRINT("Locking DCs\n"); - ahDC[0] = hdcDst; - ahDC[1] = hdcSrc ; - if (!GDIOBJ_bLockMultipleObjects(2, ahDC, apObj, GDIObjType_DC_TYPE)) - { - DPRINT1("Invalid dc handle (dest=0x%08x, src=0x%08x) passed to NtGdiAlphaBlend\n", hdcDst, hdcSrc); - EngSetLastError(ERROR_INVALID_HANDLE); - return FALSE; - } - DCDest = apObj[0]; - DCSrc = apObj[1]; - - if (DCDest->dctype == DC_TYPE_INFO || DCDest->dctype == DCTYPE_INFO) - { - GDIOBJ_vUnlockObject(&DCSrc->BaseObject); - GDIOBJ_vUnlockObject(&DCDest->BaseObject); - /* Yes, Windows really returns TRUE in this case */ - return TRUE; - } - - rcDest.left = xDst; - rcDest.top = yDst; - rcDest.right = rcDest.left + cxDst; - rcDest.bottom = rcDest.top + cyDst; - IntLPtoDP(DCDest, (LPPOINT)&rcDest, 2); - - rcDest.left += DCDest->ptlDCOrig.x; - rcDest.top += DCDest->ptlDCOrig.y; - rcDest.right += DCDest->ptlDCOrig.x; - rcDest.bottom += DCDest->ptlDCOrig.y; - - rcSrc.left = xSrc; - rcSrc.top = ySrc; - rcSrc.right = rcSrc.left + cxSrc; - rcSrc.bottom = rcSrc.top + cySrc; - IntLPtoDP(DCSrc, (LPPOINT)&rcSrc, 2); - - rcSrc.left += DCSrc->ptlDCOrig.x; - rcSrc.top += DCSrc->ptlDCOrig.y; - rcSrc.right += DCSrc->ptlDCOrig.x; - rcSrc.bottom += DCSrc->ptlDCOrig.y; - - /* Prepare for blit */ - DC_vPrepareDCsForBlit(DCDest, rcDest, DCSrc, rcSrc); - - BitmapDest = DCDest->dclevel.pSurface; - if (!BitmapDest) - { - goto done; - } - - BitmapSrc = DCSrc->dclevel.pSurface; - if (!BitmapSrc) - { - goto done; - } - - /* Translate Transparent (RGB) Color to the source palette */ - EXLATEOBJ_vInitialize(&exlo, &gpalRGB, BitmapSrc->ppal, 0, 0, 0); - TransparentColor = XLATEOBJ_iXlate(&exlo.xlo, (ULONG)TransColor); - EXLATEOBJ_vCleanup(&exlo); - - EXLATEOBJ_vInitXlateFromDCs(&exlo, DCSrc, DCDest); - - Ret = IntEngTransparentBlt(&BitmapDest->SurfObj, &BitmapSrc->SurfObj, - DCDest->rosdc.CombinedClip, &exlo.xlo, &rcDest, &rcSrc, - TransparentColor, 0); - - EXLATEOBJ_vCleanup(&exlo); - -done: - DC_vFinishBlit(DCDest, DCSrc); - GDIOBJ_vUnlockObject(&DCDest->BaseObject); - GDIOBJ_vUnlockObject(&DCSrc->BaseObject); - - return Ret; -} - -BOOL APIENTRY -NtGdiMaskBlt( - HDC hdcDest, - INT nXDest, - INT nYDest, - INT nWidth, - INT nHeight, - HDC hdcSrc, - INT nXSrc, - INT nYSrc, - HBITMAP hbmMask, - INT xMask, - INT yMask, - DWORD dwRop, - IN DWORD crBackColor) -{ - PDC DCDest; - PDC DCSrc = NULL; - HDC ahDC[2]; - PGDIOBJ apObj[2]; - PDC_ATTR pdcattr = NULL; - SURFACE *BitmapDest, *BitmapSrc = NULL, *psurfMask = NULL; - RECTL DestRect, SourceRect; - POINTL SourcePoint, MaskPoint; - BOOL Status = FALSE; - EXLATEOBJ exlo; - XLATEOBJ *XlateObj = NULL; - BOOL UsesSource = ROP_USES_SOURCE(dwRop); - BOOL UsesMask; - - FIXUP_ROP(dwRop); - - UsesMask = ROP_USES_MASK(dwRop); - - //DPRINT1("dwRop : 0x%08x\n", dwRop); - if (!hdcDest || (UsesSource && !hdcSrc)) - { - EngSetLastError(ERROR_INVALID_PARAMETER); - return FALSE; - } - - /* Take care of mask bitmap */ - if(hbmMask) - { - psurfMask = SURFACE_ShareLockSurface(hbmMask); - if(!psurfMask) - { - EngSetLastError(ERROR_INVALID_HANDLE); - return FALSE; - } - } - - if(UsesMask) - { - if(!psurfMask) - { - EngSetLastError(ERROR_INVALID_PARAMETER); - return FALSE; - } - if(gajBitsPerFormat[psurfMask->SurfObj.iBitmapFormat] != 1) - { - EngSetLastError(ERROR_INVALID_PARAMETER); - SURFACE_ShareUnlockSurface(psurfMask); - return FALSE; - } - } - else if(psurfMask) - { - DPRINT1("Getting Mask bitmap without needing it?\n"); - SURFACE_ShareUnlockSurface(psurfMask); - psurfMask = NULL; - } - MaskPoint.x = xMask; - MaskPoint.y = yMask; - - /* Take care of source and destination bitmap */ - DPRINT("Locking DCs\n"); - ahDC[0] = hdcDest; - ahDC[1] = UsesSource ? hdcSrc : NULL; - if (!GDIOBJ_bLockMultipleObjects(2, ahDC, apObj, GDIObjType_DC_TYPE)) - { - DPRINT1("Invalid dc handle (dest=0x%08x, src=0x%08x) passed to NtGdiAlphaBlend\n", hdcDest, hdcSrc); - EngSetLastError(ERROR_INVALID_HANDLE); - return FALSE; - } - DCDest = apObj[0]; - DCSrc = apObj[1]; - - ASSERT(DCDest); - if (NULL == DCDest) - { - if(DCSrc) DC_UnlockDc(DCSrc); - DPRINT("Invalid destination dc handle (0x%08x) passed to NtGdiBitBlt\n", hdcDest); - return FALSE; - } - - if (DCDest->dctype == DC_TYPE_INFO) - { - if(DCSrc) DC_UnlockDc(DCSrc); - DC_UnlockDc(DCDest); - /* Yes, Windows really returns TRUE in this case */ - return TRUE; - } - - if (UsesSource) - { - ASSERT(DCSrc); - if (DCSrc->dctype == DC_TYPE_INFO) - { - DC_UnlockDc(DCDest); - DC_UnlockDc(DCSrc); - /* Yes, Windows really returns TRUE in this case */ - return TRUE; - } - } - - pdcattr = DCDest->pdcattr; - - DestRect.left = nXDest; - DestRect.top = nYDest; - DestRect.right = nXDest + nWidth; - DestRect.bottom = nYDest + nHeight; - IntLPtoDP(DCDest, (LPPOINT)&DestRect, 2); - - DestRect.left += DCDest->ptlDCOrig.x; - DestRect.top += DCDest->ptlDCOrig.y; - DestRect.right += DCDest->ptlDCOrig.x; - DestRect.bottom += DCDest->ptlDCOrig.y; - - SourcePoint.x = nXSrc; - SourcePoint.y = nYSrc; - - if (UsesSource) - { - IntLPtoDP(DCSrc, (LPPOINT)&SourcePoint, 1); - - SourcePoint.x += DCSrc->ptlDCOrig.x; - SourcePoint.y += DCSrc->ptlDCOrig.y; - /* Calculate Source Rect */ - SourceRect.left = SourcePoint.x; - SourceRect.top = SourcePoint.y; - SourceRect.right = SourcePoint.x + DestRect.right - DestRect.left; - SourceRect.bottom = SourcePoint.y + DestRect.bottom - DestRect.top ; - } - - /* Prepare blit */ - DC_vPrepareDCsForBlit(DCDest, DestRect, DCSrc, SourceRect); - - if (pdcattr->ulDirty_ & (DIRTY_FILL | DC_BRUSH_DIRTY)) - DC_vUpdateFillBrush(DCDest); - - /* Determine surfaces to be used in the bitblt */ - BitmapDest = DCDest->dclevel.pSurface; - if (!BitmapDest) - goto cleanup; - - if (UsesSource) - { - { - BitmapSrc = DCSrc->dclevel.pSurface; - if (!BitmapSrc) - goto cleanup; - } - } - - /* Create the XLATEOBJ. */ - if (UsesSource) - { - EXLATEOBJ_vInitXlateFromDCs(&exlo, DCSrc, DCDest); - XlateObj = &exlo.xlo; - } - - - /* Perform the bitblt operation */ - Status = IntEngBitBlt(&BitmapDest->SurfObj, - BitmapSrc ? &BitmapSrc->SurfObj : NULL, - psurfMask ? &psurfMask->SurfObj : NULL, - DCDest->rosdc.CombinedClip, - XlateObj, - &DestRect, - &SourcePoint, - &MaskPoint, - &DCDest->eboFill.BrushObject, - &DCDest->dclevel.pbrFill->ptOrigin, - ROP_TO_ROP4(dwRop)); - - if (UsesSource) - EXLATEOBJ_vCleanup(&exlo); -cleanup: - DC_vFinishBlit(DCDest, DCSrc); - if (UsesSource) - { - DC_UnlockDc(DCSrc); - } - DC_UnlockDc(DCDest); - if(psurfMask) SURFACE_ShareUnlockSurface(psurfMask); - - return Status; -} - -BOOL -APIENTRY -NtGdiPlgBlt( - IN HDC hdcTrg, - IN LPPOINT pptlTrg, - IN HDC hdcSrc, - IN INT xSrc, - IN INT ySrc, - IN INT cxSrc, - IN INT cySrc, - IN HBITMAP hbmMask, - IN INT xMask, - IN INT yMask, - IN DWORD crBackColor) -{ - UNIMPLEMENTED; - return FALSE; -} - -BOOL APIENTRY -GreStretchBltMask( - HDC hDCDest, - INT XOriginDest, - INT YOriginDest, - INT WidthDest, - INT HeightDest, - HDC hDCSrc, - INT XOriginSrc, - INT YOriginSrc, - INT WidthSrc, - INT HeightSrc, - DWORD ROP, - IN DWORD dwBackColor, - HDC hDCMask, - INT XOriginMask, - INT YOriginMask) -{ - PDC DCDest; - PDC DCSrc = NULL; - PDC DCMask = NULL; - HDC ahDC[3]; - PGDIOBJ apObj[3]; - PDC_ATTR pdcattr; - SURFACE *BitmapDest, *BitmapSrc = NULL; - SURFACE *BitmapMask = NULL; - RECTL DestRect; - RECTL SourceRect; - POINTL MaskPoint; - BOOL Status = FALSE; - EXLATEOBJ exlo; - XLATEOBJ *XlateObj = NULL; - POINTL BrushOrigin; - BOOL UsesSource; - BOOL UsesMask; - - FIXUP_ROP(ROP); - UsesSource = ROP_USES_SOURCE(ROP); - UsesMask = ROP_USES_MASK(ROP); - - if (0 == WidthDest || 0 == HeightDest || 0 == WidthSrc || 0 == HeightSrc) - { - EngSetLastError(ERROR_INVALID_PARAMETER); - return TRUE; - } - - if (!hDCDest || (UsesSource && !hDCSrc) || (UsesMask && !hDCMask)) - { - EngSetLastError(ERROR_INVALID_PARAMETER); - return FALSE; - } - - ahDC[0] = hDCDest; - ahDC[1] = UsesSource ? hDCSrc : NULL; - ahDC[2] = UsesMask ? hDCMask : NULL; - if (!GDIOBJ_bLockMultipleObjects(3, ahDC, apObj, GDIObjType_DC_TYPE)) - { - DPRINT1("Invalid dc handle (dest=0x%08x, src=0x%08x) passed to NtGdiAlphaBlend\n", hDCDest, hDCSrc); - EngSetLastError(ERROR_INVALID_HANDLE); - return FALSE; - } - DCDest = apObj[0]; - DCSrc = apObj[1]; - DCMask = apObj[2]; - - if (DCDest->dctype == DC_TYPE_INFO) - { - if(DCSrc) GDIOBJ_vUnlockObject(&DCSrc->BaseObject); - if(DCMask) GDIOBJ_vUnlockObject(&DCMask->BaseObject); - GDIOBJ_vUnlockObject(&DCDest->BaseObject); - /* Yes, Windows really returns TRUE in this case */ - return TRUE; - } - - if (UsesSource) - { - if (DCSrc->dctype == DC_TYPE_INFO) - { - GDIOBJ_vUnlockObject(&DCDest->BaseObject); - GDIOBJ_vUnlockObject(&DCSrc->BaseObject); - if(DCMask) GDIOBJ_vUnlockObject(&DCMask->BaseObject); - /* Yes, Windows really returns TRUE in this case */ - return TRUE; - } - } - - pdcattr = DCDest->pdcattr; - - DestRect.left = XOriginDest; - DestRect.top = YOriginDest; - DestRect.right = XOriginDest+WidthDest; - DestRect.bottom = YOriginDest+HeightDest; - IntLPtoDP(DCDest, (LPPOINT)&DestRect, 2); - - DestRect.left += DCDest->ptlDCOrig.x; - DestRect.top += DCDest->ptlDCOrig.y; - DestRect.right += DCDest->ptlDCOrig.x; - DestRect.bottom += DCDest->ptlDCOrig.y; - - SourceRect.left = XOriginSrc; - SourceRect.top = YOriginSrc; - SourceRect.right = XOriginSrc+WidthSrc; - SourceRect.bottom = YOriginSrc+HeightSrc; - - if (UsesSource) - { - IntLPtoDP(DCSrc, (LPPOINT)&SourceRect, 2); - - SourceRect.left += DCSrc->ptlDCOrig.x; - SourceRect.top += DCSrc->ptlDCOrig.y; - SourceRect.right += DCSrc->ptlDCOrig.x; - SourceRect.bottom += DCSrc->ptlDCOrig.y; - } - - BrushOrigin.x = 0; - BrushOrigin.y = 0; - - /* Only prepare Source and Dest, hdcMask represents a DIB */ - DC_vPrepareDCsForBlit(DCDest, DestRect, DCSrc, SourceRect); - - if (pdcattr->ulDirty_ & (DIRTY_FILL | DC_BRUSH_DIRTY)) - DC_vUpdateFillBrush(DCDest); - - /* Determine surfaces to be used in the bitblt */ - BitmapDest = DCDest->dclevel.pSurface; - if (BitmapDest == NULL) - goto failed; - if (UsesSource) - { - BitmapSrc = DCSrc->dclevel.pSurface; - if (BitmapSrc == NULL) - goto failed; - - /* Create the XLATEOBJ. */ - EXLATEOBJ_vInitXlateFromDCs(&exlo, DCSrc, DCDest); - XlateObj = &exlo.xlo; - } - - /* Offset the brush */ - BrushOrigin.x += DCDest->ptlDCOrig.x; - BrushOrigin.y += DCDest->ptlDCOrig.y; - - /* Make mask surface for source surface */ - if (BitmapSrc && DCMask) - { - BitmapMask = DCMask->dclevel.pSurface; - if (BitmapMask && - (BitmapMask->SurfObj.sizlBitmap.cx < WidthSrc || - BitmapMask->SurfObj.sizlBitmap.cy < HeightSrc)) - { - DPRINT1("%dx%d mask is smaller than %dx%d bitmap\n", - BitmapMask->SurfObj.sizlBitmap.cx, BitmapMask->SurfObj.sizlBitmap.cy, - WidthSrc, HeightSrc); - EXLATEOBJ_vCleanup(&exlo); - goto failed; - } - /* Create mask offset point */ - MaskPoint.x = XOriginMask; - MaskPoint.y = YOriginMask; - IntLPtoDP(DCMask, &MaskPoint, 1); - MaskPoint.x += DCMask->ptlDCOrig.x; - MaskPoint.y += DCMask->ptlDCOrig.y; - } - - /* Perform the bitblt operation */ - Status = IntEngStretchBlt(&BitmapDest->SurfObj, - &BitmapSrc->SurfObj, - BitmapMask ? &BitmapMask->SurfObj : NULL, - DCDest->rosdc.CombinedClip, - XlateObj, - &DestRect, - &SourceRect, - BitmapMask ? &MaskPoint : NULL, - &DCDest->eboFill.BrushObject, - &BrushOrigin, - ROP_TO_ROP4(ROP)); - if (UsesSource) - { - EXLATEOBJ_vCleanup(&exlo); - } - -failed: - DC_vFinishBlit(DCDest, DCSrc); - if (UsesSource) - { - DC_UnlockDc(DCSrc); - } - if (DCMask) - { - DC_UnlockDc(DCMask); - } - DC_UnlockDc(DCDest); - - return Status; -} - - -BOOL APIENTRY -NtGdiStretchBlt( - HDC hDCDest, - INT XOriginDest, - INT YOriginDest, - INT WidthDest, - INT HeightDest, - HDC hDCSrc, - INT XOriginSrc, - INT YOriginSrc, - INT WidthSrc, - INT HeightSrc, - DWORD ROP, - IN DWORD dwBackColor) -{ - return GreStretchBltMask( - hDCDest, - XOriginDest, - YOriginDest, - WidthDest, - HeightDest, - hDCSrc, - XOriginSrc, - YOriginSrc, - WidthSrc, - HeightSrc, - ROP, - dwBackColor, - NULL, - 0, - 0); -} - - -BOOL FASTCALL -IntPatBlt( - PDC pdc, - INT XLeft, - INT YLeft, - INT Width, - INT Height, - DWORD dwRop, - PBRUSH pbrush) -{ - RECTL DestRect; - SURFACE *psurf; - EBRUSHOBJ eboFill ; - POINTL BrushOrigin; - BOOL ret; - - ASSERT(pbrush); - - FIXUP_ROP(dwRop); - - if (pbrush->flAttrs & GDIBRUSH_IS_NULL) - { - return TRUE; - } - - if (Width > 0) - { - DestRect.left = XLeft; - DestRect.right = XLeft + Width; - } - else - { - DestRect.left = XLeft + Width + 1; - DestRect.right = XLeft + 1; - } - - if (Height > 0) - { - DestRect.top = YLeft; - DestRect.bottom = YLeft + Height; - } - else - { - DestRect.top = YLeft + Height + 1; - DestRect.bottom = YLeft + 1; - } - - IntLPtoDP(pdc, (LPPOINT)&DestRect, 2); - - DestRect.left += pdc->ptlDCOrig.x; - DestRect.top += pdc->ptlDCOrig.y; - DestRect.right += pdc->ptlDCOrig.x; - DestRect.bottom += pdc->ptlDCOrig.y; -#ifdef _USE_DIBLIB_ - BrushOrigin.x = pbrush->ptOrigin.x + pdc->ptlDCOrig.x + XLeft; - BrushOrigin.y = pbrush->ptOrigin.y + pdc->ptlDCOrig.y + YLeft; -#else - BrushOrigin.x = pbrush->ptOrigin.x + pdc->ptlDCOrig.x; - BrushOrigin.y = pbrush->ptOrigin.y + pdc->ptlDCOrig.y; -#endif - - DC_vPrepareDCsForBlit(pdc, DestRect, NULL, DestRect); - - psurf = pdc->dclevel.pSurface; - - if (pdc->pdcattr->ulDirty_ & (DIRTY_FILL | DC_BRUSH_DIRTY)) - DC_vUpdateFillBrush(pdc); - - EBRUSHOBJ_vInit(&eboFill, pbrush, pdc); - - ret = IntEngBitBlt( - &psurf->SurfObj, - NULL, - NULL, - pdc->rosdc.CombinedClip, - NULL, - &DestRect, - NULL, - NULL, - &eboFill.BrushObject, - &BrushOrigin, - ROP_TO_ROP4(dwRop)); - - DC_vFinishBlit(pdc, NULL); - - EBRUSHOBJ_vCleanup(&eboFill); - - return ret; -} - -BOOL FASTCALL -IntGdiPolyPatBlt( - HDC hDC, - DWORD dwRop, - PPATRECT pRects, - INT cRects, - ULONG Reserved) -{ - INT i; - PBRUSH pbrush; - PDC pdc; - - pdc = DC_LockDc(hDC); - if (!pdc) - { - EngSetLastError(ERROR_INVALID_HANDLE); - return FALSE; - } - - if (pdc->dctype == DC_TYPE_INFO) - { - DC_UnlockDc(pdc); - /* Yes, Windows really returns TRUE in this case */ - return TRUE; - } - - for (i = 0; i < cRects; i++) - { - pbrush = BRUSH_ShareLockBrush(pRects->hBrush); - if(pbrush != NULL) - { - IntPatBlt( - pdc, - pRects->r.left, - pRects->r.top, - pRects->r.right, - pRects->r.bottom, - dwRop, - pbrush); - BRUSH_ShareUnlockBrush(pbrush); - } - pRects++; - } - - DC_UnlockDc(pdc); - - return TRUE; -} - -BOOL APIENTRY -NtGdiPatBlt( - HDC hDC, - INT XLeft, - INT YLeft, - INT Width, - INT Height, - DWORD ROP) -{ - PBRUSH pbrush; - DC *dc; - PDC_ATTR pdcattr; - BOOL ret; - - BOOL UsesSource = ROP_USES_SOURCE(ROP); - if (UsesSource) - { - /* In this case we call on GdiMaskBlt */ - return NtGdiMaskBlt(hDC, XLeft, YLeft, Width, Height, 0,0,0,0,0,0,ROP,0); - } - - dc = DC_LockDc(hDC); - if (dc == NULL) - { - EngSetLastError(ERROR_INVALID_HANDLE); - return FALSE; - } - if (dc->dctype == DC_TYPE_INFO) - { - DC_UnlockDc(dc); - DPRINT1("NtGdiPatBlt on info DC!\n"); - /* Yes, Windows really returns TRUE in this case */ - return TRUE; - } - - pdcattr = dc->pdcattr; - - if (pdcattr->ulDirty_ & (DIRTY_FILL | DC_BRUSH_DIRTY)) - DC_vUpdateFillBrush(dc); - - pbrush = BRUSH_ShareLockBrush(pdcattr->hbrush); - if (pbrush == NULL) - { - EngSetLastError(ERROR_INVALID_HANDLE); - DC_UnlockDc(dc); - return FALSE; - } - - ret = IntPatBlt(dc, XLeft, YLeft, Width, Height, ROP, pbrush); - - BRUSH_ShareUnlockBrush(pbrush); - DC_UnlockDc(dc); - - return ret; -} - -BOOL APIENTRY -NtGdiPolyPatBlt( - HDC hDC, - DWORD dwRop, - IN PPOLYPATBLT pRects, - IN DWORD cRects, - IN DWORD Mode) -{ - PPATRECT rb = NULL; - NTSTATUS Status = STATUS_SUCCESS; - BOOL Ret; - - if (cRects > 0) - { - rb = ExAllocatePoolWithTag(PagedPool, sizeof(PATRECT) * cRects, GDITAG_PLGBLT_DATA); - if (!rb) - { - EngSetLastError(ERROR_NOT_ENOUGH_MEMORY); - return FALSE; - } - _SEH2_TRY - { - ProbeForRead(pRects, - cRects * sizeof(PATRECT), - 1); - RtlCopyMemory(rb, - pRects, - cRects * sizeof(PATRECT)); - } - _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) - { - Status = _SEH2_GetExceptionCode(); - } - _SEH2_END; - - if (!NT_SUCCESS(Status)) - { - ExFreePoolWithTag(rb, GDITAG_PLGBLT_DATA); - SetLastNtError(Status); - return FALSE; - } - } - - Ret = IntGdiPolyPatBlt(hDC, dwRop, rb, cRects, Mode); - - if (cRects > 0) - ExFreePoolWithTag(rb, GDITAG_PLGBLT_DATA); - - return Ret; -} From 53d3cc111142782768cbd5c1fb9c6f704b80466d Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sun, 25 May 2014 16:09:32 +0000 Subject: [PATCH 051/232] [CRT] * Partial update of scanf routines (MS ABI varargs). CORE-8080 svn path=/trunk/; revision=63445 --- reactos/lib/sdk/crt/string/scanf.c | 42 +++++++++++++++--------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/reactos/lib/sdk/crt/string/scanf.c b/reactos/lib/sdk/crt/string/scanf.c index 9ab876fcdcb..8951f86357c 100644 --- a/reactos/lib/sdk/crt/string/scanf.c +++ b/reactos/lib/sdk/crt/string/scanf.c @@ -101,12 +101,12 @@ static int wchar2digit(wchar_t c, int base) { */ int CDECL fscanf(FILE *file, const char *format, ...) { - va_list valist; + __ms_va_list valist; int res; - va_start(valist, format); + __ms_va_start(valist, format); res = vfscanf_l(file, format, NULL, valist); - va_end(valist); + __ms_va_end(valist); return res; } @@ -115,12 +115,12 @@ int CDECL fscanf(FILE *file, const char *format, ...) */ int CDECL scanf(const char *format, ...) { - va_list valist; + __ms_va_list valist; int res; - va_start(valist, format); + __ms_va_start(valist, format); res = vfscanf_l(stdin, format, NULL, valist); - va_end(valist); + __ms_va_end(valist); return res; } @@ -129,12 +129,12 @@ int CDECL scanf(const char *format, ...) */ int CDECL fwscanf(FILE *file, const wchar_t *format, ...) { - va_list valist; + __ms_va_list valist; int res; - va_start(valist, format); + __ms_va_start(valist, format); res = vfwscanf_l(file, format, NULL, valist); - va_end(valist); + __ms_va_end(valist); return res; } @@ -144,12 +144,12 @@ int CDECL fwscanf(FILE *file, const wchar_t *format, ...) */ int CDECL wscanf(const wchar_t *format, ...) { - va_list valist; + __ms_va_list valist; int res; - va_start(valist, format); + __ms_va_start(valist, format); res = vfwscanf_l(stdin, format, NULL, valist); - va_end(valist); + __ms_va_end(valist); return res; } #endif /* !_LIBCNT_ */ @@ -160,12 +160,12 @@ int CDECL wscanf(const wchar_t *format, ...) */ int CDECL sscanf(const char *str, const char *format, ...) { - va_list valist; + __ms_va_list valist; int res; - va_start(valist, format); + __ms_va_start(valist, format); res = vsscanf_l(str, format, NULL, valist); - va_end(valist); + __ms_va_end(valist); return res; } @@ -175,12 +175,12 @@ int CDECL sscanf(const char *str, const char *format, ...) */ int CDECL swscanf(const wchar_t *str, const wchar_t *format, ...) { - va_list valist; + __ms_va_list valist; int res; - va_start(valist, format); + __ms_va_start(valist, format); res = vswscanf_l(str, format, NULL, valist); - va_end(valist); + __ms_va_end(valist); return res; } @@ -190,12 +190,12 @@ int CDECL swscanf(const wchar_t *str, const wchar_t *format, ...) */ int CDECL _cscanf(const char *format, ...) { - va_list valist; + __ms_va_list valist; int res; - va_start(valist, format); + __ms_va_start(valist, format); res = vcscanf_l(format, NULL, valist); - va_end(valist); + __ms_va_end(valist); return res; } #endif From db48c57de3574980d1fcff1fc1721c61b49cac3e Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sun, 25 May 2014 17:04:44 +0000 Subject: [PATCH 052/232] [MSVCRT] * Zap some commented out exports that do not exist in native. CORE-8174 svn path=/trunk/; revision=63446 --- reactos/dll/win32/msvcrt/msvcrt.spec | 201 --------------------------- 1 file changed, 201 deletions(-) diff --git a/reactos/dll/win32/msvcrt/msvcrt.spec b/reactos/dll/win32/msvcrt/msvcrt.spec index 4212aac86e7..4479a11d31d 100644 --- a/reactos/dll/win32/msvcrt/msvcrt.spec +++ b/reactos/dll/win32/msvcrt/msvcrt.spec @@ -111,31 +111,6 @@ @ cdecl -arch=i386 _CIsqrt() @ cdecl -arch=i386 _CItan() @ cdecl -arch=i386 _CItanh() -# stub _CrtCheckMemory -# stub _CrtDbgBreak -# stub _CrtDbgReport -# stub _CrtDbgReportV -# stub _CrtDbgReportW -# stub _CrtDbgReportWV -# stub _CrtDoForAllClientObjects -# stub _CrtDumpMemoryLeaks -# stub _CrtIsMemoryBlock -# stub _CrtIsValidHeapPointer -# stub _CrtIsValidPointer -# stub _CrtMemCheckpoint -# stub _CrtMemDifference -# stub _CrtMemDumpAllObjectsSince -# stub _CrtMemDumpStatistics -# stub _CrtReportBlockType -# stub _CrtSetAllocHook -# stub _CrtSetBreakAlloc -# stub _CrtSetDbgBlockType -# stub _CrtSetDbgFlag -# stub _CrtSetDumpClient -# stub _CrtSetReportFile -# stub _CrtSetReportHook -# stub _CrtSetReportHook2 -# stub _CrtSetReportMode @ stdcall _CxxThrowException(long long) @ cdecl -i386 -norelay _EH_prolog() @ cdecl _Getdays() @@ -146,7 +121,6 @@ @ cdecl _XcptFilter(long ptr) @ stdcall -arch=x86_64 __C_specific_handler(ptr long ptr ptr) @ cdecl __CppXcptFilter(long ptr) -# stub __CxxCallUnwindDelDtor # stub __CxxCallUnwindDtor # stub __CxxCallUnwindVecDtor @ cdecl __CxxDetectRethrow(ptr) @@ -190,31 +164,9 @@ @ cdecl __iscsym(long) @ cdecl __iscsymf(long) @ extern __lc_codepage -# @ stub __lc_collate # not in XP / 7 @ extern __lc_collate_cp MSVCRT___lc_collate_cp @ extern __lc_handle MSVCRT___lc_handle @ cdecl __lconv_init() -# stub __libm_sse2_acos -# stub __libm_sse2_acosf -# stub __libm_sse2_asin -# stub __libm_sse2_asinf -# stub __libm_sse2_atan -# stub __libm_sse2_atan2 -# stub __libm_sse2_atanf -# stub __libm_sse2_cos -# stub __libm_sse2_cosf -# stub __libm_sse2_exp -# stub __libm_sse2_expf -# stub __libm_sse2_log -# stub __libm_sse2_log10 -# stub __libm_sse2_log10f -# stub __libm_sse2_logf -# stub __libm_sse2_pow -# stub __libm_sse2_powf -# stub __libm_sse2_sin -# stub __libm_sse2_sinf -# stub __libm_sse2_tan -# stub __libm_sse2_tanf @ extern __mb_cur_max @ cdecl -arch=i386 __p___argc() @ cdecl -arch=i386 __p___argv() @@ -252,7 +204,6 @@ @ cdecl __set_app_type(long) @ extern __setlc_active @ cdecl __setusermatherr(ptr) -# stub __strncnt @ cdecl __threadhandle() kernel32.GetCurrentThread @ cdecl __threadid() kernel32.GetCurrentThreadId @ cdecl __toascii(long) @@ -262,7 +213,6 @@ @ extern __wargv __wargv @ cdecl __wcserror(wstr) @ cdecl __wcserror_s(ptr long wstr) -# stub __wcsncnt @ cdecl __wgetmainargs(ptr ptr ptr long ptr) @ extern __winitenv @ cdecl _abnormal_termination() @@ -286,48 +236,30 @@ @ extern -arch=i386 _adjust_fdiv @ extern _aexit_rtn @ cdecl _aligned_free(ptr) -# stub _aligned_free_dbg @ cdecl _aligned_malloc(long long) -# stub _aligned_malloc_dbg @ cdecl _aligned_offset_malloc(long long long) -# stub _aligned_offset_malloc_dbg @ cdecl _aligned_offset_realloc(ptr long long long) -# stub _aligned_offset_realloc_dbg @ cdecl _aligned_realloc(ptr long long) -# stub _aligned_realloc_dbg @ cdecl _amsg_exit(long) @ cdecl _assert(str str long) @ cdecl _atodbl(ptr str) -# stub _atodbl_l -# @ cdecl _atof_l(str ptr) -# stub _atoflt_l @ cdecl -ret64 _atoi64(str) -# stub _atoi64_l -# stub _atoi_l -# stub _atol_l @ cdecl _atoldbl(ptr str) -# stub _atoldbl_l @ cdecl _beep(long long) @ cdecl _beginthread(ptr long ptr) @ cdecl _beginthreadex(ptr long ptr ptr long ptr) @ cdecl _c_exit() @ cdecl _cabs(long) @ cdecl _callnewh(long) -# stub _calloc_dbg @ cdecl _cexit() @ cdecl _cgets(str) -# stub _cgets_s # stub _cgetws -# stub _cgetws_s @ cdecl _chdir(str) @ cdecl _chdrive(long) @ cdecl _chgsign(double) @ cdecl -i386 -norelay _chkesp() @ cdecl _chmod(str long) @ cdecl _chsize(long long) -# stub _chsize_s -# stub _chvalidator -# stub _chvalidator_l @ cdecl _clearfp() @ cdecl _close(long) @ cdecl _commit(long) @@ -337,21 +269,10 @@ @ cdecl _controlfp_s(ptr long long) @ cdecl _copysign( double double ) @ varargs _cprintf(str) -# stub _cprintf_l -# stub _cprintf_p -# stub _cprintf_p_l -# stub _cprintf_s -# stub _cprintf_s_l @ cdecl _cputs(str) # stub _cputws @ cdecl _creat(str long) -# stub _crtAssertBusy -# stub _crtBreakAlloc -# stub _crtDbgFlag @ varargs _cscanf(str) -# @ varargs _cscanf_l(str ptr) -# @ varargs _cscanf_s(str) -# @ varargs _cscanf_s_l(str ptr) @ cdecl _ctime32(ptr) @ cdecl _ctime32_s(str long ptr) @ cdecl _ctime64(ptr) @@ -359,15 +280,7 @@ @ extern _ctype @ cdecl _cwait(ptr long long) @ varargs _cwprintf(wstr) -# stub _cwprintf_l -# stub _cwprintf_p -# stub _cwprintf_p_l -# stub _cwprintf_s -# stub _cwprintf_s_l # @ varargs _cwscanf(wstr) -# @ varargs _cwscanf_l(wstr ptr) -# @ varargs _cwscanf_s(wstr) -# @ varargs _cwscanf_s_l(wstr ptr) @ extern _daylight @ cdecl _difftime32(long long) @ cdecl _difftime64(long long) @@ -375,7 +288,6 @@ @ cdecl _dup(long) @ cdecl _dup2(long long) @ cdecl _ecvt(double long ptr ptr) -# stub _ecvt_s @ cdecl _endthread() @ cdecl _endthreadex(long) @ extern _environ @@ -394,10 +306,8 @@ @ cdecl _execvpe(str ptr ptr) @ cdecl _exit(long) @ cdecl _expand(ptr long) -# stub _expand_dbg @ cdecl _fcloseall() @ cdecl _fcvt(double long ptr ptr) -# stub _fcvt_s @ cdecl _fdopen(long str) @ cdecl _fgetchar() @ cdecl _fgetwchar() @@ -420,18 +330,8 @@ @ cdecl _fpclass(double) @ cdecl _fpieee_flt(long ptr ptr) @ cdecl _fpreset() -# stub _fprintf_l -# stub _fprintf_p -# stub _fprintf_p_l -# stub _fprintf_s_l @ cdecl _fputchar(long) @ cdecl _fputwchar(long) -# stub _free_dbg -# stub _freea -# stub _freea_s -# stub _fscanf_l -# @ varargs _fscanf_l(ptr str ptr) -# @ varargs _fscanf_s_l(ptr str ptr) @ cdecl _fseeki64(ptr long long long) @ cdecl _fsopen(str str long) @ cdecl _fstat(long ptr) @@ -440,42 +340,23 @@ @ cdecl -ret64 _ftelli64(ptr) @ cdecl _ftime(ptr) @ cdecl _ftime32(ptr) -# stub _ftime32_s @ cdecl _ftime64(ptr) -# stub _ftime64_s @ cdecl -arch=i386 -ret64 _ftol() @ cdecl -arch=i386 -ret64 _ftol2() _ftol @ cdecl -arch=i386 -ret64 _ftol2_sse() _ftol #FIXME: SSE variant should be implemented -# stub _ftol2_sse_excpt @ cdecl _fullpath(ptr str long) -# stub _fullpath_dbg @ cdecl _futime(long ptr) @ cdecl _futime32(long ptr) @ cdecl _futime64(long ptr) -# stub _fwprintf_l -# stub _fwprintf_p -# stub _fwprintf_p_l -# stub _fwprintf_s_l -# @ varargs _fwscanf_l(ptr wstr ptr) -# @ varargs _fwscanf_s_l(ptr wstr ptr) @ cdecl _gcvt(double long str) -# stub _gcvt_s @ cdecl _get_doserrno(ptr) -# stub _get_environ @ cdecl _get_errno(ptr) -# stub _get_fileinfo -# stub _get_fmode # @ cdecl _get_heap_handle() @ cdecl _get_osfhandle(long) @ cdecl _get_osplatform(ptr) -# stub _get_osver @ cdecl _get_output_format() @ cdecl _get_pgmptr(ptr) @ cdecl _get_sbh_threshold() -# stub _get_wenviron -# stub _get_winmajor -# stub _get_winminor -# stub _get_winver @ cdecl _get_wpgmptr(ptr) @ cdecl _get_terminate() @ cdecl _get_tzname(ptr str long long) @@ -519,91 +400,39 @@ @ cdecl -arch=i386 _inpw(long) MSVCRT__inpw @ cdecl _invalid_parameter(wstr wstr wstr long long) @ extern _iob -# stub _isalnum_l -# stub _isalpha_l @ cdecl _isatty(long) -# stub _iscntrl_l @ cdecl _isctype(long long) @ cdecl _isctype_l(long long ptr) -# stub _isdigit_l -# stub _isgraph_l -# stub _isleadbyte_l -# stub _islower_l @ cdecl _ismbbalnum(long) -# stub _ismbbalnum_l @ cdecl _ismbbalpha(long) -# stub _ismbbalpha_l @ cdecl _ismbbgraph(long) -# stub _ismbbgraph_l @ cdecl _ismbbkalnum(long) -# stub _ismbbkalnum_l @ cdecl _ismbbkana(long) -# stub _ismbbkana_l @ cdecl _ismbbkprint(long) -# stub _ismbbkprint_l @ cdecl _ismbbkpunct(long) -# stub _ismbbkpunct_l @ cdecl _ismbblead(long) -# stub _ismbblead_l @ cdecl _ismbbprint(long) -# stub _ismbbprint_l @ cdecl _ismbbpunct(long) -# stub _ismbbpunct_l @ cdecl _ismbbtrail(long) -# stub _ismbbtrail_l @ cdecl _ismbcalnum(long) -# stub _ismbcalnum_l @ cdecl _ismbcalpha(long) -# stub _ismbcalpha_l @ cdecl _ismbcdigit(long) -# stub _ismbcdigit_l @ cdecl _ismbcgraph(long) -# stub _ismbcgraph_l @ cdecl _ismbchira(long) -# stub _ismbchira_l @ cdecl _ismbckata(long) -# stub _ismbckata_l @ cdecl _ismbcl0(long) -# stub _ismbcl0_l @ cdecl _ismbcl1(long) -# stub _ismbcl1_l @ cdecl _ismbcl2(long) -# stub _ismbcl2_l @ cdecl _ismbclegal(long) -# stub _ismbclegal_l @ cdecl _ismbclower(long) -# stub _ismbclower_l @ cdecl _ismbcprint(long) -# stub _ismbcprint_l @ cdecl _ismbcpunct(long) -# stub _ismbcpunct_l @ cdecl _ismbcspace(long) -# stub _ismbcspace_l @ cdecl _ismbcsymbol(long) -# stub _ismbcsymbol_l @ cdecl _ismbcupper(long) -# stub _ismbcupper_l @ cdecl _ismbslead(ptr ptr) -# stub _ismbslead_l @ cdecl _ismbstrail(ptr ptr) -# stub _ismbstrail_l @ cdecl _isnan(double) -# stub _isprint_l -# stub _isspace_l -# stub _isupper_l -# stub _iswalnum_l -# stub _iswalpha_l -# stub _iswcntrl_l -# stub _iswctype_l -# stub _iswdigit_l -# stub _iswgraph_l -# stub _iswlower_l -# stub _iswprint_l -# stub _iswpunct_l -# stub _iswspace_l -# stub _iswupper_l -# stub _iswxdigit_l -# stub _isxdigit_l @ cdecl _itoa(long ptr long) @ cdecl _itoa_s(long ptr long long) @ cdecl _itow(long ptr long) @@ -613,7 +442,6 @@ @ cdecl _jn(long double) @ cdecl _kbhit() @ cdecl _lfind(ptr ptr ptr long ptr) -# stub _lfind_s @ cdecl _loaddll(str) @ cdecl -i386 _local_unwind2(ptr long) @ cdecl -i386 _local_unwind4(ptr ptr long) @@ -628,7 +456,6 @@ @ cdecl _lrotl(long long) @ cdecl _lrotr(long long) @ cdecl _lsearch(ptr ptr long long ptr) -# stub _lsearch_s @ cdecl _lseek(long long long) @ cdecl -ret64 _lseeki64(long double long) @ cdecl _ltoa(long ptr long) @@ -637,33 +464,19 @@ @ cdecl _ltow_s(long ptr long long) @ cdecl _makepath(ptr str str str str) @ cdecl _makepath_s(ptr long str str str str) -# stub _malloc_dbg @ cdecl _mbbtombc(long) -# stub _mbbtombc_l @ cdecl _mbbtype(long long) @ extern _mbcasemap @ cdecl _mbccpy (str str) -# stub _mbccpy_l -# stub _mbccpy_s -# stub _mbccpy_s_l @ cdecl _mbcjistojms(long) -# stub _mbcjistojms_l @ cdecl _mbcjmstojis(long) -# stub _mbcjmstojis_l @ cdecl _mbclen(ptr) -# stub _mbclen_l @ cdecl _mbctohira(long) -# stub _mbctohira_l @ cdecl _mbctokata(long) -# stub _mbctokata_l @ cdecl _mbctolower(long) -# stub _mbctolower_l @ cdecl _mbctombb(long) -# stub _mbctombb_l @ cdecl _mbctoupper(long) -# stub _mbctoupper_l @ extern _mbctype -# stub _mblen_l @ cdecl _mbsbtype(str long) # stub _mbsbtype_l @ cdecl _mbscat(str str) @@ -1349,7 +1162,6 @@ @ cdecl -arch=x86_64 sqrtf(long) @ cdecl srand(long) @ varargs sscanf(str str) -# @ varargs sscanf_s(str str) @ cdecl strcat(str str) @ cdecl strcat_s(str long str) @ cdecl strchr(str long) @@ -1363,7 +1175,6 @@ @ cdecl strftime(str long str ptr) @ cdecl strlen(str) @ cdecl strncat(str str long) -# stub strncat_s @ cdecl strncmp(str str long) @ cdecl strncpy(ptr str long) @ cdecl strncpy_s(ptr long str long) @@ -1381,37 +1192,30 @@ @ varargs swprintf(ptr wstr) @ varargs swprintf_s(ptr long wstr) @ varargs swscanf(wstr wstr) -# @ varargs swscanf_s(wstr wstr) @ cdecl system(str) @ cdecl tan(double) @ cdecl tanh(double) @ cdecl time(ptr) @ cdecl tmpfile() -# stub tmpfile_s @ cdecl tmpnam(ptr) -# stub tmpnam_s @ cdecl tolower(long) @ cdecl toupper(long) @ cdecl towlower(long) @ cdecl towupper(long) @ cdecl ungetc(long ptr) @ cdecl ungetwc(long ptr) -# stub utime @ cdecl vfprintf(ptr str ptr) @ cdecl vfprintf_s(ptr str ptr) @ cdecl vfwprintf(ptr wstr ptr) @ cdecl vfwprintf_s(ptr wstr ptr) @ cdecl vprintf(str ptr) @ cdecl vprintf_s(str ptr) -# stub vsnprintf @ cdecl vsprintf(ptr str ptr) @ cdecl vsprintf_s(ptr long str ptr) @ cdecl vswprintf(ptr wstr ptr) @ cdecl vswprintf_s(ptr long wstr ptr) @ cdecl vwprintf(wstr ptr) @ cdecl vwprintf_s(wstr ptr) -# stub wcrtomb -# stub wcrtomb_s @ cdecl wcscat(wstr wstr) @ cdecl wcscat_s(wstr long wstr) @ cdecl wcschr(wstr long) @@ -1430,8 +1234,6 @@ @ cdecl wcsnlen(wstr long) @ cdecl wcspbrk(wstr wstr) @ cdecl wcsrchr(wstr long) -# stub wcsrtombs -# stub wcsrtombs_s @ cdecl wcsspn(wstr wstr) @ cdecl wcsstr(wstr wstr) @ cdecl wcstod(wstr ptr) @@ -1441,13 +1243,10 @@ @ cdecl wcstombs(ptr ptr long) @ cdecl wcstoul(wstr ptr long) @ cdecl wcsxfrm(ptr wstr long) -# stub wctob @ cdecl wctomb(ptr long) -# stub wctomb_s @ varargs wprintf(wstr) @ varargs wprintf_s(wstr) @ varargs wscanf(wstr) -# @ varargs wscanf_s(wstr) # Functions not exported in native dll: @ cdecl _get_invalid_parameter_handler() From 47d45987699864842f61c98fb5297d7110e150b9 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sun, 25 May 2014 17:55:48 +0000 Subject: [PATCH 053/232] [MSVCRT] * Zap some commented out exports that do not exist in native. CORE-8174 svn path=/trunk/; revision=63447 --- reactos/dll/win32/msvcrt/msvcrt.spec | 250 --------------------------- 1 file changed, 250 deletions(-) diff --git a/reactos/dll/win32/msvcrt/msvcrt.spec b/reactos/dll/win32/msvcrt/msvcrt.spec index 4479a11d31d..0d8a599a858 100644 --- a/reactos/dll/win32/msvcrt/msvcrt.spec +++ b/reactos/dll/win32/msvcrt/msvcrt.spec @@ -478,131 +478,58 @@ @ cdecl _mbctoupper(long) @ extern _mbctype @ cdecl _mbsbtype(str long) -# stub _mbsbtype_l @ cdecl _mbscat(str str) -# stub _mbscat_s -# stub _mbscat_s_l @ cdecl _mbschr(str long) -# stub _mbschr_l @ cdecl _mbscmp(str str) -# stub _mbscmp_l @ cdecl _mbscoll(str str) -# stub _mbscoll_l @ cdecl _mbscpy(ptr str) -# stub _mbscpy_s -# stub _mbscpy_s_l @ cdecl _mbscspn(str str) -# stub _mbscspn_l @ cdecl _mbsdec(ptr ptr) -# stub _mbsdec_l @ cdecl _mbsdup(str) -# stub _strdup_dbg @ cdecl _mbsicmp(str str) -# stub _mbsicmp_l @ cdecl _mbsicoll(str str) -# stub _mbsicoll_l @ cdecl _mbsinc(str) -# stub _mbsinc_l @ cdecl _mbslen(str) -# stub _mbslen_l @ cdecl _mbslwr(str) -# stub _mbslwr_l -# stub _mbslwr_s -# stub _mbslwr_s_l @ cdecl _mbsnbcat(str str long) -# stub _mbsnbcat_l -# stub _mbsnbcat_s -# stub _mbsnbcat_s_l @ cdecl _mbsnbcmp(str str long) -# stub _mbsnbcmp_l @ cdecl _mbsnbcnt(ptr long) -# stub _mbsnbcnt_l @ cdecl _mbsnbcoll(str str long) -# stub _mbsnbcoll_l @ cdecl _mbsnbcpy(ptr str long) -# stub _mbsnbcpy_l @ cdecl _mbsnbcpy_s(ptr long str long) -# stub _mbsnbcpy_s_l @ cdecl _mbsnbicmp(str str long) -# stub _mbsnbicmp_l @ cdecl _mbsnbicoll(str str long) -# stub _mbsnbicoll_l @ cdecl _mbsnbset(str long long) -# stub _mbsnbset_l -# stub _mbsnbset_s -# stub _mbsnbset_s_l @ cdecl _mbsncat(str str long) -# stub _mbsncat_l -# stub _mbsncat_s -# stub _mbsncat_s_l @ cdecl _mbsnccnt(str long) -# stub _mbsnccnt_l @ cdecl _mbsncmp(str str long) -# stub _mbsncmp_l @ cdecl _mbsncoll(str str long) -# stub _mbsncoll_l @ cdecl _mbsncpy(str str long) -# stub _mbsncpy_l -# stub _mbsncpy_s -# stub _mbsncpy_s_l @ cdecl _mbsnextc(str) -# stub _mbsnextc_l @ cdecl _mbsnicmp(str str long) -# stub _mbsnicmp_l @ cdecl _mbsnicoll(str str long) -# stub _mbsnicoll_l @ cdecl _mbsninc(str long) -# stub _mbsninc_l -# stub _mbsnlen -# stub _mbsnlen_l @ cdecl _mbsnset(str long long) -# stub _mbsnset_l -# stub _mbsnset_s -# stub _mbsnset_s_l @ cdecl _mbspbrk(str str) -# stub _mbspbrk_l @ cdecl _mbsrchr(str long) -# stub _mbsrchr_l @ cdecl _mbsrev(str) -# stub _mbsrev_l @ cdecl _mbsset(str long) -# stub _mbsset_l -# stub _mbsset_s -# stub _mbsset_s_l @ cdecl _mbsspn(str str) -# stub _mbsspn_l @ cdecl _mbsspnp(str str) -# stub _mbsspnp_l @ cdecl _mbsstr(str str) -# stub _mbsstr_l @ cdecl _mbstok(str str) -# stub _mbstok_l -# stub _mbstok_s -# stub _mbstok_s_l -# stub _mbstowcs_l -# stub _mbstowcs_s_l @ cdecl _mbstrlen(str) -# stub _mbstrlen_l -# stub _mbstrnlen -# stub _mbstrnlen_l @ cdecl _mbsupr(str) -# stub _mbsupr_l -# stub _mbsupr_s -# stub _mbsupr_s_l -# stub _mbtowc_l @ cdecl _memccpy(ptr ptr long long) @ cdecl _memicmp(str str long) -# stub _memicmp_l @ cdecl _mkdir(str) @ cdecl _mkgmtime(ptr) @ cdecl _mkgmtime32(ptr) @ cdecl _mkgmtime64(ptr) @ cdecl _mktemp(str) -# stub _mktemp_s @ cdecl _mktime32(ptr) @ cdecl _mktime64(ptr) @ cdecl _msize(ptr) -# stub _msize_debug @ cdecl _nextafter(double double) @ cdecl _onexit(ptr) @ varargs _open(str long) @@ -617,20 +544,14 @@ @ extern _pgmptr @ cdecl _pipe(ptr long long) @ cdecl _popen(str str) -# stub _printf_l -# stub _printf_p -# stub _printf_p_l -# stub _printf_s_l @ cdecl _purecall() @ cdecl _putch(long) @ cdecl _putenv(str) -# stub _putenv_s @ cdecl _putw(long ptr) @ cdecl _putwch(long) @ cdecl _putws(wstr) # extern _pwctype @ cdecl _read(long ptr long) -# stub _realloc_dbg @ cdecl _resetstkoflw() @ cdecl _rmdir(str) @ cdecl _rmtmp() @@ -643,26 +564,16 @@ @ cdecl -arch=i386 _safe_fprem() @ cdecl -arch=i386 _safe_fprem1() @ cdecl _scalb(double long) -# @ varargs _scanf_l(str ptr) -# @ varargs _scanf_s_l(str ptr) # stub _scprintf -# stub _scprintf_l -# stub _scprintf_p_l # stub _scwprintf -# stub _scwprintf_l -# stub _scwprintf_p_l @ cdecl _searchenv(str str ptr) @ cdecl _searchenv_s(str str ptr long) @ stdcall -i386 _seh_longjmp_unwind4(ptr) @ stdcall -i386 _seh_longjmp_unwind(ptr) # stub _set_SSE2_enable -# stub _set_controlfp @ cdecl _set_doserrno(long) @ cdecl _set_errno(long) @ cdecl _set_error_mode(long) -# stub _set_fileinfo -# stub _set_fmode -# stub _set_output_format @ cdecl _set_sbh_threshold(long) @ cdecl _seterrormode(long) @ cdecl -arch=i386,x86_64 -norelay _setjmp(ptr) @@ -674,23 +585,11 @@ @ cdecl _setsystime(ptr long) @ cdecl _sleep(long) @ varargs _snprintf(ptr long str) -# stub _snprintf_c -# stub _snprintf_c_l -# stub _snprintf_l @ varargs _snprintf_s(ptr long long ptr) -# stub _snprintf_s_l # stub _snscanf -# stub _snscanf_l -# stub _snscanf_s -# stub _snscanf_s_l @ varargs _snwprintf(ptr long wstr) -# stub _snwprintf_l @ varargs _snwprintf_s(ptr long long ptr) -# stub _snwprintf_s_l # stub _snwscanf -# stub _snwscanf_l -# stub _snwscanf_s -# stub _snwscanf_s_l @ varargs _sopen(str long long) @ cdecl _sopen_s(ptr str long long long) @ varargs _spawnl(long str str) @@ -703,79 +602,39 @@ @ cdecl _spawnvpe(long str ptr ptr) @ cdecl _splitpath(str ptr ptr ptr ptr) @ cdecl _splitpath_s(str ptr long ptr long ptr long ptr long) -# stub _sprintf_l -# stub _sprintf_p_l -# stub _sprintf_s_l -# @ varargs _sscanf_l(str str ptr) -# @ varargs _sscanf_s_l(str str ptr) @ cdecl _stat(str ptr) @ cdecl _stat64(str ptr) @ cdecl _stati64(str ptr) @ cdecl _statusfp() @ cdecl _strcmpi(str str) -# stub _strcoll_l @ cdecl _strdate(ptr) -# stub _strdate_s @ cdecl _strdup(str) -# stub _strdup_dbg @ cdecl _strerror(long) -# stub _strerror_s @ cdecl _stricmp(str str) -# stub _stricmp_l @ cdecl _stricoll(str str) -# stub _stricoll_l @ cdecl _strlwr(str) -# stub _strlwr_l -# stub _strlwr_s -# stub _strlwr_s_l @ cdecl _strncoll(str str long) -# stub _strncoll_l @ cdecl _strnicmp(str str long) -# stub _strnicmp_l @ cdecl _strnicoll(str str long) -# stub _strnicoll_l @ cdecl _strnset(str long long) -# stub _strnset_s @ cdecl _strrev(str) @ cdecl _strset(str long) -# stub _strset_s @ cdecl _strtime(ptr) -# stub _strtime_s -# @ cdecl _strtod_l(str ptr ptr) @ cdecl _strtoi64(str ptr long) -# @ cdecl _strtoi64_l(str ptr long ptr) -# stub _strtol_l @ cdecl _strtoui64(str ptr long) strtoull -# @ cdecl _strtoui64_l(str ptr long ptr) -# stub _strtoul_l @ cdecl _strupr(str) -# stub _strupr_l -# stub _strupr_s -# stub _strupr_s_l -# stub _strxfrm_l @ cdecl _swab(str str long) @ varargs _swprintf(ptr str) swprintf -# stub _swprintf_c -# stub _swprintf_c_l -# stub _swprintf_p_l -# stub _swprintf_s_l -# @ varargs _swscanf_l(wstr wstr ptr) -# @ varargs _swscanf_s_l(wstr wstr ptr) @ extern _sys_errlist @ extern _sys_nerr @ cdecl _tell(long) @ cdecl -ret64 _telli64(long) @ cdecl _tempnam(str str) -# stub _tempnam_dbg @ cdecl _time32(ptr) @ cdecl _time64(ptr) @ extern _timezone @ cdecl _tolower(long) -# stub _tolower_l @ cdecl _toupper(long) -# stub _toupper_l -# stub _towlower_l -# stub _towupper_l @ extern _tzname @ cdecl _tzset() @ cdecl _ui64toa(long long ptr long) @@ -783,11 +642,8 @@ @ cdecl _ui64tow(long long ptr long) @ cdecl _ui64tow_s(long long ptr long long) @ cdecl _ultoa(long ptr long) -# stub _ultoa_s @ cdecl _ultow(long ptr long) -# stub _ultow_s @ cdecl _umask(long) -# stub _umask_s @ cdecl _ungetch(long) # stub _ungetwch @ cdecl _unlink(str) @@ -795,115 +651,45 @@ @ cdecl _unlock(long) @ cdecl _utime32(str ptr) @ cdecl _utime64(str ptr) -# stub _vcprintf -# stub _vcprintf_l -# stub _vcprintf_p -# stub _vcprintf_p_l -# stub _vcprintf_s -# stub _vcprintf_s_l @ cdecl _vcwprintf(wstr ptr) -# stub _vcwprintf_l -# stub _vcwprintf_p -# stub _vcwprintf_p_l -# stub _vcwprintf_s -# stub _vcwprintf_s_l -# stub _vfprintf_l -# stub _vfprintf_p -# stub _vfprintf_p_l -# stub _vfprintf_s_l -# stub _vfwprintf_l -# stub _vfwprintf_p -# stub _vfwprintf_p_l -# stub _vfwprintf_s_l -# stub _vprintf_l -# stub _vprintf_p -# stub _vprintf_p_l -# stub _vprintf_s_l @ cdecl _utime(str ptr) @ cdecl _vscprintf(str ptr) -# stub _vscprintf_l -# stub _vscprintf_p_l @ cdecl _vscwprintf(wstr ptr) -# stub _vscwprintf_l -# stub _vscwprintf_p_l @ cdecl _vsnprintf(ptr long str ptr) @ cdecl _vsnprintf_c(ptr long str ptr) _vsnprintf -# @ cdecl _vsnprintf_c_l(ptr long str ptr ptr) _vsnprintf_l -# @ cdecl _vsnprintf_l(ptr long str ptr ptr) @ cdecl _vsnprintf_s(ptr long long str ptr) -# @ cdecl _vsnprintf_s_l(ptr long long str ptr ptr) @ cdecl _vsnwprintf(ptr long wstr ptr) -# @ cdecl _vsnwprintf_l(ptr long wstr ptr ptr) @ cdecl _vsnwprintf_s(ptr long long wstr ptr) -# @ cdecl _vsnwprintf_s_l(ptr long long wstr ptr ptr) -# stub _vsprintf_l @ cdecl _vsprintf_p(ptr long str ptr) -# stub _vsprintf_p_l -# stub _vsprintf_s_l -# @ cdecl _vswprintf(ptr wstr ptr) @ cdecl _vswprintf_c(ptr long wstr ptr) _vsnwprintf -# @ cdecl _vswprintf_c_l(ptr long wstr ptr ptr) _vsnwprintf_l -# @ cdecl _vswprintf_l(ptr wstr ptr ptr) -# @ cdecl _vswprintf_p_l(ptr long wstr ptr ptr) _vsnwprintf_l -# @ cdecl _vswprintf_s_l(ptr long wstr ptr ptr) -# stub _vwprintf_l -# stub _vwprintf_p -# stub _vwprintf_p_l -# stub _vwprintf_s_l @ cdecl _waccess(wstr long) @ cdecl _waccess_s(wstr long) @ cdecl _wasctime(ptr) -# stub _wasctime_s -# stub _wassert @ cdecl _wchdir(wstr) @ cdecl _wchmod(wstr long) @ extern _wcmdln @ cdecl _wcreat(wstr long) -# stub _wcscoll_l @ cdecl _wcsdup(wstr) -# stub _wcsdup_dbg @ cdecl _wcserror(long) @ cdecl _wcserror_s(ptr long long) -# stub _wcsftime_l @ cdecl _wcsicmp(wstr wstr) -# stub _wcsicmp_l @ cdecl _wcsicoll(wstr wstr) -# stub _wcsicoll_l @ cdecl _wcslwr(wstr) -# stub _wcslwr_l @ cdecl _wcslwr_s(wstr long) -# stub _wcslwr_s_l @ cdecl _wcsncoll(wstr wstr long) -# stub _wcsncoll_l @ cdecl _wcsnicmp(wstr wstr long) -# stub _wcsnicmp_l @ cdecl _wcsnicoll(wstr wstr long) -# stub _wcsnicoll_l @ cdecl _wcsnset(wstr long long) -# stub _wcsnset_s @ cdecl _wcsrev(wstr) @ cdecl _wcsset(wstr long) -# stub _wcsset_s @ cdecl _wcstoi64(wstr ptr long) -# @ cdecl _wcstoi64_l(wstr ptr long ptr) -# stub _wcstol_l @ cdecl _wcstombs_l(ptr ptr long ptr) -# @ cdecl _wcstombs_s_l(ptr ptr long wstr long ptr) @ cdecl _wcstoui64(wstr ptr long) -# @ cdecl _wcstoui64_l(wstr ptr long ptr) -# stub _wcstoul_l @ cdecl _wcsupr(wstr) -# stub _wcsupr_l @ cdecl _wcsupr_s(wstr long) -# stub _wcsupr_s_l -# stub _wcsxfrm_l @ cdecl _wctime(ptr) @ cdecl _wctime32(ptr) -# stub _wctime32_s @ cdecl _wctime64(ptr) -# stub _wctime64_s -# stub _wctomb_l -# stub _wctomb_s_l # stub _wctype @ extern _wenviron @ varargs _wexecl(wstr wstr) @@ -924,42 +710,28 @@ @ cdecl _wfopen(wstr wstr) @ cdecl _wfopen_s(ptr wstr wstr) @ cdecl _wfreopen(wstr wstr ptr) -# stub _wfreopen_s @ cdecl _wfsopen(wstr wstr long) @ cdecl _wfullpath(ptr wstr long) -# stub _wfullpath_dbg @ cdecl _wgetcwd(wstr long) @ cdecl _wgetdcwd(long wstr long) @ cdecl _wgetenv(wstr) -# stub _wgetenv_s @ extern _winmajor @ extern _winminor -# stub _winput_s @ extern _winver @ cdecl _wmakepath(ptr wstr wstr wstr wstr) @ cdecl _wmakepath_s(ptr long wstr wstr wstr wstr) @ cdecl _wmkdir(wstr) @ cdecl _wmktemp(wstr) -# stub _wmktemp_s @ varargs _wopen(wstr long) -# stub _woutput_s @ cdecl _wperror(wstr) @ extern _wpgmptr @ cdecl _wpopen(wstr wstr) -# stub _wprintf_l -# stub _wprintf_p -# stub _wprintf_p_l -# stub _wprintf_s_l @ cdecl _wputenv(wstr) -# stub _wputenv_s @ cdecl _wremove(wstr) @ cdecl _wrename(wstr wstr) @ cdecl _write(long ptr long) @ cdecl _wrmdir(wstr) -# @ varargs _wscanf_l(wstr ptr) -# @ varargs _wscanf_s_l(wstr ptr) @ cdecl _wsearchenv(wstr wstr ptr) -# stub _wsearchenv_s @ cdecl _wsetlocale(long wstr) @ varargs _wsopen(wstr long long) @ cdecl _wsopen_s(ptr wstr long long long) @@ -977,22 +749,14 @@ @ cdecl _wstati64(wstr ptr) @ cdecl _wstat64(wstr ptr) @ cdecl _wstrdate(ptr) -# stub _wstrdate_s @ cdecl _wstrtime(ptr) -# stub _wstrtime_s @ cdecl _wsystem(wstr) @ cdecl _wtempnam(wstr wstr) -# stub _wtempnam_dbg @ cdecl _wtmpnam(ptr) -# stub _wtmpnam_s # @ cdecl _wtof(wstr) -# @ cdecl _wtof_l(wstr ptr) @ cdecl _wtoi(wstr) @ cdecl _wtoi64(wstr) -# stub _wtoi64_l -# stub _wtoi_l @ cdecl _wtol(wstr) -# stub _wtol_l @ cdecl _wunlink(wstr) @ cdecl _wutime(wstr ptr) @ cdecl _wutime32(wstr ptr) @@ -1004,7 +768,6 @@ @ cdecl abs(long) @ cdecl acos(double) @ cdecl asctime(ptr) -# stub asctime_s @ cdecl asin(double) @ cdecl atan(double) @ cdecl atan2(double double) @@ -1013,13 +776,10 @@ @ cdecl atoi(str) @ cdecl atol(str) @ cdecl bsearch(ptr ptr long long ptr) -# stub bsearch_s -# @ cdecl btowc(long) @ cdecl calloc(long long) @ cdecl ceil(double) @ cdecl -arch=x86_64 ceilf(double) @ cdecl clearerr(ptr) -# stub clearerr_s @ cdecl clock() @ cdecl cos(double) @ cdecl -arch=x86_64 cosf(double) @@ -1054,10 +814,8 @@ @ cdecl fread(ptr long long ptr) @ cdecl free(ptr) @ cdecl freopen(str str ptr) -# stub freopen_s @ cdecl frexp(double ptr) @ varargs fscanf(ptr str) -# @ varargs fscanf_s(ptr str) @ cdecl fseek(ptr long long) @ cdecl fsetpos(ptr ptr) @ cdecl ftell(ptr) @@ -1065,11 +823,9 @@ @ varargs fwprintf_s(ptr wstr) @ cdecl fwrite(ptr long long ptr) @ varargs fwscanf(ptr wstr) -# @ varargs fwscanf_s(ptr wstr) @ cdecl getc(ptr) @ cdecl getchar() @ cdecl getenv(str) -# stub getenv_s @ cdecl gets(str) @ cdecl getwc(ptr) @ cdecl getwchar() @@ -1112,10 +868,6 @@ @ cdecl malloc(long) @ cdecl mblen(ptr long) @ cdecl mbrlen(ptr long ptr) -# stub mbrtowc -# stub mbsdup_dbg -# stub mbsrtowcs -# stub mbsrtowcs_s @ cdecl mbstowcs(ptr str long) @ cdecl mbtowc(wstr str long) @ cdecl memchr(ptr long long) @@ -1138,7 +890,6 @@ @ cdecl putwc(long ptr) fputwc @ cdecl putwchar(long) _fputwchar @ cdecl qsort(ptr long long ptr) -# stub qsort_s @ cdecl raise(long) @ cdecl rand() @ cdecl rand_s(ptr) @@ -1147,7 +898,6 @@ @ cdecl rename(str str) @ cdecl rewind(ptr) @ varargs scanf(str) -# @ varargs scanf_s(str) @ cdecl setbuf(ptr ptr) @ cdecl -arch=x86_64 -norelay -private setjmp(ptr ptr) _setjmp @ cdecl setlocale(long str) From b7ad4ef800b8b6ff8f0ec5eff844f242bd8af464 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sun, 25 May 2014 19:04:21 +0000 Subject: [PATCH 054/232] [CMAKE] * Include the dummy source file for the PSEH ARM build too. svn path=/trunk/; revision=63448 --- reactos/lib/pseh/CMakeLists.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/reactos/lib/pseh/CMakeLists.txt b/reactos/lib/pseh/CMakeLists.txt index 1c26807e8d1..84ea2a2758f 100644 --- a/reactos/lib/pseh/CMakeLists.txt +++ b/reactos/lib/pseh/CMakeLists.txt @@ -29,14 +29,13 @@ else() list(APPEND ASM_SOURCE i386/seh.s i386/seh_prolog.s) - list(APPEND SOURCE dummy.c) elseif(ARCH STREQUAL "amd64") list(APPEND ASM_SOURCE amd64/seh.s amd64/seh_prolog.s) - list(APPEND SOURCE dummy.c) endif() + list(APPEND SOURCE dummy.c) add_asm_files(pseh_asm ${ASM_SOURCE}) add_library(pseh ${SOURCE} ${pseh_asm}) add_dependencies(pseh asm) From 158661ce3190e28b8816ea27ff0907d743d777bb Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sun, 25 May 2014 19:13:32 +0000 Subject: [PATCH 055/232] [NTOSKRNL] Implement prototype PTE support in MiGetPageProtection. Should hopefully fix crashes with OllyDbg. svn path=/trunk/; revision=63449 --- reactos/ntoskrnl/mm/ARM3/virtual.c | 146 +++++++++++++++++++++-------- 1 file changed, 109 insertions(+), 37 deletions(-) diff --git a/reactos/ntoskrnl/mm/ARM3/virtual.c b/reactos/ntoskrnl/mm/ARM3/virtual.c index f82aedb9c9f..69017e7919d 100644 --- a/reactos/ntoskrnl/mm/ARM3/virtual.c +++ b/reactos/ntoskrnl/mm/ARM3/virtual.c @@ -1261,6 +1261,11 @@ MiGetPageProtection(IN PMMPTE PointerPte) { MMPTE TempPte; PMMPFN Pfn; + PEPROCESS CurrentProcess; + PETHREAD CurrentThread; + BOOLEAN WsSafe, WsShared; + ULONG Protect; + KIRQL OldIrql; PAGED_CODE(); /* Copy this PTE's contents */ @@ -1270,12 +1275,79 @@ MiGetPageProtection(IN PMMPTE PointerPte) ASSERT(TempPte.u.Long); /* Check for a special prototype format */ - if (TempPte.u.Soft.Valid == 0 && - TempPte.u.Soft.Prototype == 1) + if ((TempPte.u.Soft.Valid == 0) && + (TempPte.u.Soft.Prototype == 1)) { - /* Unsupported now */ - UNIMPLEMENTED; - ASSERT(FALSE); + /* Check if the prototype PTE is not yet pointing to a PTE */ + if (TempPte.u.Soft.PageFileHigh == MI_PTE_LOOKUP_NEEDED) + { + /* The prototype PTE contains the protection */ + return MmProtectToValue[TempPte.u.Soft.Protection]; + } + + /* Get a pointer to the underlying shared PTE */ + PointerPte = MiProtoPteToPte(&TempPte); + + /* Since the PTE we want to read can be paged out at any time, we need + to release the working set lock first, so that it can be paged in */ + CurrentThread = PsGetCurrentThread(); + CurrentProcess = PsGetCurrentProcess(); + MiUnlockProcessWorkingSetForFault(CurrentProcess, + CurrentThread, + &WsSafe, + &WsShared); + + /* Now read the PTE value */ + TempPte = *PointerPte; + + /* Check if that one is invalid */ + if (!TempPte.u.Hard.Valid) + { + /* We get the protection directly from this PTE */ + Protect = MmProtectToValue[TempPte.u.Soft.Protection]; + } + else + { + /* The PTE is valid, so we might need to get the protection from + the PFN. Lock the PFN database */ + OldIrql = KeAcquireQueuedSpinLock(LockQueuePfnLock); + + /* Check if the PDE is still valid */ + if (MiAddressToPte(PointerPte)->u.Hard.Valid == 0) + { + /* It's not, make it valid */ + MiMakeSystemAddressValidPfn(PointerPte, OldIrql); + } + + /* Now it's safe to read the PTE value again */ + TempPte = *PointerPte; + ASSERT(TempPte.u.Long != 0); + + /* Check again if the PTE is invalid */ + if (!TempPte.u.Hard.Valid) + { + /* The PTE is not valid, so we can use it's protection field */ + Protect = MmProtectToValue[TempPte.u.Soft.Protection]; + } + else + { + /* The PTE is valid, so we can find the protection in the + OriginalPte field of the PFN */ + Pfn = MI_PFN_ELEMENT(TempPte.u.Hard.PageFrameNumber); + Protect = MmProtectToValue[Pfn->OriginalPte.u.Soft.Protection]; + } + + /* Release the PFN database */ + KeReleaseQueuedSpinLock(LockQueuePfnLock, OldIrql); + } + + /* Lock the working set again */ + MiLockProcessWorkingSetForFault(CurrentProcess, + CurrentThread, + WsSafe, + WsShared); + + return Protect; } /* In the easy case of transition or demand zero PTE just return its protection */ @@ -4500,44 +4572,44 @@ NtAllocateVirtualMemory(IN HANDLE ProcessHandle, { Status = STATUS_NO_MEMORY; goto FailPath; - } } - else + } + else + { + /* Make sure it doesn't conflict with an existing allocation */ + Result = MiCheckForConflictingNode(StartingAddress >> PAGE_SHIFT, + EndingAddress >> PAGE_SHIFT, + &Process->VadRoot, + &Parent); + if (Result == TableFoundNode) { - /* Make sure it doesn't conflict with an existing allocation */ - Result = MiCheckForConflictingNode(StartingAddress >> PAGE_SHIFT, - EndingAddress >> PAGE_SHIFT, - &Process->VadRoot, - &Parent); - if (Result == TableFoundNode) - { - // - // The address specified is in conflict! - // - Status = STATUS_CONFLICTING_ADDRESSES; - goto FailPath; - } + // + // The address specified is in conflict! + // + Status = STATUS_CONFLICTING_ADDRESSES; + goto FailPath; } + } - // - // Write out the VAD fields for this allocation - // - Vad->StartingVpn = StartingAddress >> PAGE_SHIFT; - Vad->EndingVpn = EndingAddress >> PAGE_SHIFT; + // + // Write out the VAD fields for this allocation + // + Vad->StartingVpn = StartingAddress >> PAGE_SHIFT; + Vad->EndingVpn = EndingAddress >> PAGE_SHIFT; - // - // FIXME: Should setup VAD bitmap - // - Status = STATUS_SUCCESS; + // + // FIXME: Should setup VAD bitmap + // + Status = STATUS_SUCCESS; - // - // Lock the working set and insert the VAD into the process VAD tree - // - MiLockProcessWorkingSetUnsafe(Process, CurrentThread); - Vad->ControlArea = NULL; // For Memory-Area hack - Process->VadRoot.NodeHint = Vad; - MiInsertNode(&Process->VadRoot, (PVOID)Vad, Parent, Result); - MiUnlockProcessWorkingSetUnsafe(Process, CurrentThread); + // + // Lock the working set and insert the VAD into the process VAD tree + // + MiLockProcessWorkingSetUnsafe(Process, CurrentThread); + Vad->ControlArea = NULL; // For Memory-Area hack + Process->VadRoot.NodeHint = Vad; + MiInsertNode(&Process->VadRoot, (PVOID)Vad, Parent, Result); + MiUnlockProcessWorkingSetUnsafe(Process, CurrentThread); // // Make sure the actual region size is at least as big as the From c53ac2a20b503adf3b636aac3059a8c236601c1a Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sun, 25 May 2014 19:28:14 +0000 Subject: [PATCH 056/232] [PSDK] * Fix an ARM ifdef. svn path=/trunk/; revision=63450 --- reactos/include/psdk/winnt.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/include/psdk/winnt.h b/reactos/include/psdk/winnt.h index d2e277b09b7..ce49726c784 100644 --- a/reactos/include/psdk/winnt.h +++ b/reactos/include/psdk/winnt.h @@ -3310,7 +3310,7 @@ typedef struct _CONTEXT { DWORD Fill[2]; } CONTEXT; -#elif defined(ARM) +#elif defined(_ARM_) #ifndef PAGE_SIZE #define PAGE_SIZE 0x1000 // FIXME: This should probably go elsewhere From dd982c4a66870b36785ea8c85a1a069e5e16f4f0 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sun, 25 May 2014 20:10:31 +0000 Subject: [PATCH 057/232] [NTOSKRNL] Revert unwanted white space changes svn path=/trunk/; revision=63451 --- reactos/ntoskrnl/mm/ARM3/virtual.c | 64 +++++++++++++++--------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/reactos/ntoskrnl/mm/ARM3/virtual.c b/reactos/ntoskrnl/mm/ARM3/virtual.c index 69017e7919d..fa3e2fcc72b 100644 --- a/reactos/ntoskrnl/mm/ARM3/virtual.c +++ b/reactos/ntoskrnl/mm/ARM3/virtual.c @@ -4572,44 +4572,44 @@ NtAllocateVirtualMemory(IN HANDLE ProcessHandle, { Status = STATUS_NO_MEMORY; goto FailPath; + } } - } - else - { - /* Make sure it doesn't conflict with an existing allocation */ - Result = MiCheckForConflictingNode(StartingAddress >> PAGE_SHIFT, - EndingAddress >> PAGE_SHIFT, - &Process->VadRoot, - &Parent); - if (Result == TableFoundNode) + else { - // - // The address specified is in conflict! - // - Status = STATUS_CONFLICTING_ADDRESSES; - goto FailPath; + /* Make sure it doesn't conflict with an existing allocation */ + Result = MiCheckForConflictingNode(StartingAddress >> PAGE_SHIFT, + EndingAddress >> PAGE_SHIFT, + &Process->VadRoot, + &Parent); + if (Result == TableFoundNode) + { + // + // The address specified is in conflict! + // + Status = STATUS_CONFLICTING_ADDRESSES; + goto FailPath; + } } - } - // - // Write out the VAD fields for this allocation - // - Vad->StartingVpn = StartingAddress >> PAGE_SHIFT; - Vad->EndingVpn = EndingAddress >> PAGE_SHIFT; + // + // Write out the VAD fields for this allocation + // + Vad->StartingVpn = StartingAddress >> PAGE_SHIFT; + Vad->EndingVpn = EndingAddress >> PAGE_SHIFT; - // - // FIXME: Should setup VAD bitmap - // - Status = STATUS_SUCCESS; + // + // FIXME: Should setup VAD bitmap + // + Status = STATUS_SUCCESS; - // - // Lock the working set and insert the VAD into the process VAD tree - // - MiLockProcessWorkingSetUnsafe(Process, CurrentThread); - Vad->ControlArea = NULL; // For Memory-Area hack - Process->VadRoot.NodeHint = Vad; - MiInsertNode(&Process->VadRoot, (PVOID)Vad, Parent, Result); - MiUnlockProcessWorkingSetUnsafe(Process, CurrentThread); + // + // Lock the working set and insert the VAD into the process VAD tree + // + MiLockProcessWorkingSetUnsafe(Process, CurrentThread); + Vad->ControlArea = NULL; // For Memory-Area hack + Process->VadRoot.NodeHint = Vad; + MiInsertNode(&Process->VadRoot, (PVOID)Vad, Parent, Result); + MiUnlockProcessWorkingSetUnsafe(Process, CurrentThread); // // Make sure the actual region size is at least as big as the From c51c0ec1b461b5bf62a104ed44cba54ce00f8100 Mon Sep 17 00:00:00 2001 From: Christoph von Wittich Date: Sun, 25 May 2014 20:17:25 +0000 Subject: [PATCH 058/232] [bootdata] convert hivecls.inf and hivedef.inf to UTF16LE fixes CORE-7614 svn path=/trunk/; revision=63452 --- reactos/boot/bootdata/hivecls.inf | Bin 25668 -> 52838 bytes reactos/boot/bootdata/hivedef.inf | Bin 191671 -> 379852 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/reactos/boot/bootdata/hivecls.inf b/reactos/boot/bootdata/hivecls.inf index e83c7182462a4ad65e9ef6e07cbd854920c28cb7..4def49638048d1273b615bb4a382214f309f4c54 100644 GIT binary patch literal 52838 zcmds=X>T0Ic82?Nfc%GnaE&;DNQ>0!5Er-<7mK#Gh?0FB^TMFGOI&0w)?(yu=VOxh zsl#G-S66q{kVR=?5JL{9d#c_#b@n<{{lEY7OZ8*5RUKC+)n0W}9ajIS{<-?6YE}R3 z=)d*qv^vw(t?IAUjp{Ge3%y&fHuUK;-SZcH#@)PrsphLq{cy+5c`J{qAF9XIlj^4K zTh%v~tC!VJy6;7`RIODD)xO#~(a)A%H+0v{>Q?nZuli?3?|lz*)u>w3z1#ZMnZA3f z|KIBWkM0ioT2RaM^>41V8}4`5B5iYzA#Z+bRV|&U)vfA4NcYskmau~FNF&~Jv@jYO z+MM>m4(?^Ou`lWvrTMhkbMq>67;d?JxAoB1+FC%d6^(>hPWSSaW~`>i3w`TIwE0T& zcGCF#b~Woh+11GQ^~3+u8Yk~>R#VlT2%VewY0ZCkO+CC*J09Ib@!e7NUUxvXWwp32 z&NAB9vkHgsGvnx1f9^lMbp-@V;>LIC_sB`W?ldIw=Gdr`6Dnk<4=Fv7qO3u+Ynkke0_Dp#l zvM4UxtA2O$`Oe7((sC@R{HPgz=cHq+qYD?Lfmf>)>4CNCkLs@E=&or0t$r^_YLHO= zTh==y>7L$CN$bt(>a5<~svhWdOYa{_wr{!Dw`%LZGmou(w6lT{!(zeLr9<{K+8tTsBWH{D z-7JPWllf+D=N(VMUkCd3q5j&qJU_lrYa42NB&&{8V2{1sJn8V^v@o2?cBg4-_id|n zEO3{WzNMyI9_r5b8Euc>+M?)osu#FxO3muM{XnTdBwL1h#z{t~O~MhSBqv7MMa|iU z{GRq)H0^$@mu2DFbF+s{{-~My=xpp$jfj?pM)fyYjC>#9y|a>=j%POI1HcjJGxW+G z(JJN%v=NWvtF-Aq4$ip5f-`23LWK3VLvN)`NzWZ7NzWY3@oR=Tqsh^A`#Cn|^7M$$ z+vwa|0I!$#AH_+~<4nA>FImSI|J~^TJd9e~6HA2SoR&U)AnTHr{@=wno6-~g(rstNZ7C>F0S~x_-}joy0<$n%e~z0}=DIQ_}|usoKQrvkN(R+cMOQp6QwVQd6SZSuynG zfzz9-k}mwOcN)R4Z@l5Yk(M#LuV2Q(>nR!QB0mxmpK%z;|EovPmAP1NlOl65o!Z7b zsWKO$Z1OPnc+zBU2=DdDoVN}{saR8DQS6z|&~`mgGM@*M+>}h%eM2%vJN5Ncd&5X$ zQq^sLGNkIB;X zsoLgJyXLiNiX*}q{8b+RbIs&at-h@&2lOa8r$fEx_)nMjQI8dCvf5FvCRrwFBuVir zMeQiIEoZ-K4UiTV#k-FsX~aJ_8$MgpTO6Xe;b498|I>I`uY9E!8SL)ZkqcHMQ}H}` z#^WqY$$hn6>B?RE`mo-)(ZUsz;%;k`qIF`qL!+Xn&Ny19ZD(Q;{6}#(8C<-ck@%dv z!rSwAuQey@dXe{ySrwD5ln%LZE`uI_cRsA0`g&@17nOTXqy8At-?5%1W#(i4MjP)q zGkkMMemKf>%q9C4RdV*N}CuiTC3zc${GSFi!OH9ax!IBdPv zB;&0?wXIfP&aCNw4fT8#|Lbafg9;iGx4o0EOw@)($ES+%cw1-x;nukp-0%BZQ}i_! z^X^?(WAPwSV}XQtolTVv@np=VZ)b9V-PbRH;q{aRdQ5e8vny?}HYY{eSdk31P#bS3 zZ7T!P*5-sVtI}9+uM9bvT zPfXjkt&H8*&)4Dg6km7Ib@fB6%}L>p*h*s?@0XUk*=X)7#CTaBd zI|+HXDS52q?`EzkaNl$zJ_&WXwbZ<$1h2+hon&qe5nl(t?rPS&j-slsE8|@h*Ugbl zOd-#avm>X6b$y}??i1y5NBYld`9|U@Dsx5})2==}knS9vd#&|nqw2L#NcWv~yd>XOj*d1={aU)+me1!}%_%r-ob*&zV7Bc5 z6#`VCese*A?wtBw_M={WyFE|GG-lu0b)gQCl(O#@BUv5!j<|M=35+_<|n()W9`m!cs->@J*HGk<7lEbH+3_( z-@Emg??j^&(VcxQ@m%d2(R(L@U%8KcSN&9(uKYb|3i~_zTkGDDqH=7+U5bb8jzjay z+kSLA6^}deVDVlpe;c<9U4&&UgXKG{=g|MiufpydNzG+cvErlus_ZDc==P=IsqsPE zA4X;Nq0|3xDPDWsQcQ+li;C|u_|@*~=dbX3io5zSb~&uw^5pSXi0{wNUC*^Doz{cz z#G5&K(C+K!tMGb?ue#{E9Mx`f@;EBQ_h;v*@1&!albUKrS}kWclHJ$OQQ`FzM|IJ4 zIjY^}x%y z#Cn^Qj6tlbw~hDnNlSdkJNf$9DqD#1vNF?-Ec&YBn=4>l{W64wh>+`fb^Up0zHy#o z7n9Ek8&95{`s({Iag68qM(G`d*J;_BC$C+h3Gg{ECT-_;!Y+5q-R zo=B$1v2s=nb4zY@Pj@t12J^pOtm(6>`>^^Kp%^LaK&#}}*4;NPquHzx9~wi*71QUK z)7hT(*t#0ax75r$k{!P6etYY$uQleY-hos~@AdO0dhngbvR8eQHnfW1n~F&ppRcQA zRgerxlh>N-Kp_RYda!LLjX!G+?9x2e;$-+>_oM42F}%>w&eHJmNdA~pB$~FYO_@AO ztVm9}H0*EnqmXcJP$(m9)SO7=&q_&4%^%KMax#jYZ!qI3d2BSCo8sRsT)gw2HUHkx zo_NkuNg=B>6Iy}Xyy>-cbyD3MT=`{D=hswC5^9U4{0h?(@zSB}Mw{~N5-3aClnxo6 zXTmdhkRYbKg<2_v#}N1V4C7f8 zKW}}lJ(YCB`OD&cJAtTaS=tdzmn%ZrrsTMvce`zS4uL)7sHgdeW<@St@Q?=QbeW}-bn_l7&-Y=1L`Mc^!*ddprGe5{D-_Otqc3;2F z46mo8qYq=3XQ!o$Ym8Tu4c}7em9^1Nf?UM%AR)?0lnZaUpU9725f6HfiP`G|`R+Mc zbZcu`o(d<_zSVE@PQqDy;@S)E8)r7#*4^;ofe`!G6)?H|Hs|M=>^J`9^=4|~h)1fP z+S6Qg^R!JZ)@# zGkxl%lKEqek5N+@R%hgvL<>Ia+gnPOB*(Y5``W!Xxh%Y%vJ<(8yLKbi(x9whv=hO4}`mT<^2|=@G;|^RV?M7h9f< zG3V$t^E>TsPAiC=Uz^+8_*^nNDU&euPY=U3

    r6V6ra9<)!HHHf~}ORYn6+i&Kk#>-~3?FLavvtr*{^O)sm z&Q1)`c&j6vD|^q?!raqe&XQly{(;+iv4TINtOGlvAL#FW{n&~LYbAFy%L_UYl~d;L z>Au+NNDN)g*H>L3DUIAqUbBjO>VlW!_LwJcq$R_i#4%)#X{WxPw#W4oKkAB`uI6g{ zIEHgleCAk2q)n&Ld+=*%F?#3v%+>>ILiOe|c$eCj6n}8qRnAjz*de)ip2&_)Pes8~WYF*=~DMc`Za)+u_OMw0Y4RPCF9)7sMl>-XLz+ zlom?!1>c?@;IZ&}iZ8f-q!w#@oUmbe>@H`tTc1?U2vJTpXYeG8+UJScC#+M>I>fx5 zsK*Wzzj_>US$I9g8|>I4vNf)yB7?YVxYbGEiP))U?Xgd;U20m>cHGmf1u(y4Mpl^F z;N_q7$8LPQqV67naNg?HsUVsW-`tTdAX1{zZc6Woo`{evYNF2Up)>_?l0{9NEJegL zqi-$gey-*`pNm`-R+<`Ed^xj8MC%s0<6WKTDo3ZtZ67;neOLqYJj7elw=?cV-ikcdru408;7wg2Z}nRD@fo<*_1cgI z=J|;a6mM@!ZgMp6qO@7F;-4qzQjhNSv7N(ynI|Nc8$}ME;xE@TczKzO&u2;|Kkrye z%cS=j{MZj<>3Bv|d0xK#S$UafOj0|+Isv{#DPF$HD82+Qx94*_UcT+k>%^h;RaSz_w@-ikG76R<}m*mw)0NY+Uml6=LO%>Z!$jKN4AxPC4KVnTtoYn zg+=El^EBJpEDdcV_(t&@V+dDwo0Tz7H5Te*w%tgc$v(W1pUQ5w)SQ`c~JFUyzn(u2g@;Zv6Tef4sDw|34;J1%3M&U!Yva9aG>&y&;Q z?$0?tKRQY9&r)K23fZt)THdiuyH2loUDxEMpM>O4l@Tw; zMrKhDvCgJ?0@*EL;ra1RWb4AVAq~gXS$E$9{r|0yf$FYM`!#*gkugICSS_M{q_(Nu z9BkixYZ_1NDUp}YFM7LZa}sa8Z#Qs1O6snyE*gIHwHT#P##E z;cYXvjVvF}ou;Cn_@1)_-f7O!oBw`c(VJY(x)kT6qSczwsm-j<*~Y#>)(tL%kFlz@ z!||$ZtZ9XRTl`I4fr^+CxMFSIkks9gj9CwLRPH(2JiT>cnUmaYi-LP@uLLxX`466s zU8?l=j%U-(3AB4Z(aI;i?>h<;CDMD>UX0&2{a|^zv&9wkE4G%tSzUYWG|tug^*g{* z{Z2`5ehPZ0(hf?%+04bdYUQqu=(c7chZ5M4-3X$G!m;aUgsmunh&75lMC>4F&k!_P z(x;pQd|C(%UVEBTrZgkQt2MuXX2sFww<1_(vnlgN8m~*4@0}hbb694kZcBgU(dMmc zcDi_ekanh)hulvI&SB*x4-fjJi|4T<3r&s{FGC^AQRi?EXTZb|?FrFGVJbl%%Z}%u z;Y6)28ZvccVm9=1R0NS_fO8PB0@+3MOrMtGW_US|dwz>j=Rfo*z5q4MSJ%tf<~%ef zQ8ZMoTa5@_v)4&w_-NK;GIC~(YRB%ZvC3M`g5g8tQR-Au-9__Kbi%VB?kYo{+u8J4 zm&WNLdL@s4Uauv+O7IfvPk9vL{F^SGpY`d1US)J5oK0SJ$OqcJ;2Z0=oZm;^i-Ub{ zi67>K50BpJ?#f6rvHH-MdFlfFQVD_fZM#gHY&jWwaNsXxN_{^|=jU zU;dfwb_ovxUd+K0B6%uwr$R->!Za&8I?5nIzjDfRzkbD%%}H}&&&U~5S6qT8@Hf*v zPl+$^B-;HmKU8n~6BEEyM$ej8o`dVP%PnJ8ab_=7{Zqxa-x${@tj<{(6O#^}~YNYyv~2VPn!d=FH!F>G(h zx-O|l)|1J(uzGh?#O4sU4tqaXTI-!YORkl$O2qR*`z`IZdYlt=$YsNoUsxn7afvVI@&(s0km7k(dmskhYsb$WhyJ2{BVhKGnsTX2ht z(s6h;wbxz(8FR;a;}CaaQ|9!XFEokOd6e?lc_Mbd2BY=|j~yNQog2BWEVTXgQog!z zaT-w9aC92a6%{&>>}Abk`$g=27L~ zGARpjU9XgZZiw5FEog;?+)~!9gp9#O!Zj=De^=biXK!>RGM%0sj!ZK24d8uBw{#Ayst9>=431JFsR5c z+4Ha!VpldjBNON(dM?}l@Jt`LnO?4b)_Tn|N#PSAKr5MMD2aqK!-n{sy4N|^KN^vJ zL|-@lGYwVF&mCSTIdHQAEtsE@@iKAA5EZCynp0Ib67XI1Rt@NPSVvH^$chdtX!K6a@|os`vwv6{ zwizOd{Ulr^XDE%UA5jx2++0e6sDB>f<74sZoOBA$RwMUyB-*{uZ;RW?`8rh14dXzb znmw1&?RXdIzNa+e7y{F7b`r;tY)+Z{wygvX``gs6KoK&vCH+3=k?y&sN3;LyqQ-(S z4Qu)nC(oSXbu8Jgb?w4=6`VagX`_(bK%>jyG2f(A+-`g_oI^#Y&&dboIZNd6~kpUjGID-|6XcMnzgw!wPJY4%|Rtj=CwLK z@^ny)nYGxX1m!GGp2mpR_903+o}ux<$!VEACwH_0l|!{D(Sy8k*HS(`*BZ>E?KUkz zDchZsLn*9L4A*mg&K$z|B@o%(z&u3k^XO6vL^YMlWL>S!Ee{pz4KY;k{aFzj-4!q8 zaTBN5#L*Dn6YFzsr`gFeoNlX(X-dUV*{QOumiT8nmDdfnPbQ6TN^=$GuUBp!O$JMG zSMGfBl$;plIAMZZ`X`~bwU-jI$Xw!0497L5L8%2k)1Bcd6XWlaCTBIgrssVGGKp|Y zsTy12*mTcRs@^jl-Rz%ehEsK^kVYexs-c4#!x?5W>~lIVgPhb}p&7WXUWaC#Ggs;J zMEb*48q3T)r;7~ti>E`s?BT`klHX+Rtxa8=;qr^xs!w)4ss7=v*y)kW>g};~^a`@=JaPX+saINqtFJ!Q)mM&s^ZJx;hohdB1o3mfcl^yWt;xo)zt#L-tOe^z sJiFZX*`A*3m7MYOG!C97?$4GR?q^i}w`}#cD2#X1rpA)!yX;2ye^``;eEDS54Z^P@;+mT12h(?{gJ^fKn|1QsaFl!*vkE?{A}2p1ye-Eve`A&7R|Vd)9(|-*r}N(EX30nwr_rcv7$j?u0=A1M?h>k-qp(7mVHI>dN{@kU#d1?4(2I-j16Z~xez?3>5? zr+Rl_9#6W4esJ6!nx|%0Khkycq_6k&00yEev0eb~l?esCGJ~I~4hnKW)d*%bp zp3?B1hJ90Mu%vRkfxlUXlsK-xxCk8TRSj^sCSkmyehdS*v}@O1YB%&T)|e>@6YGWX zT#*v*<|rd1WMwjA@#%w7__%!4JN}z`@0*)3Gv{l?_HZ__LKY7UjOJo8OQrar!wexZYm?H z$Rk+Wxae(B=~aVRVcgh1OnW=@-4%(cqm7a<3W|Ob-&Oj6cjbPHN4XCYq>#QS{wnEL z#Pxgj8uN{z_m3sedi_gh-96?C(~0-%R68LtOu1skGZHHu#k+Dx#iQKOaRpI`RFr;I zKc!JRl3?q5x>d&|#J-G}*&21+_=U#f2QlSdAvK=N)$smjZZ8c3R9HST*)*lS|7+%E zv!F^FtsHG?hwfVPxAsakE4(X@lz5a!ipOi(C<_NTyda{ewTltUb(6#HaKr@Sjz_Et z%L2ESBgPD1xL$j%okgbHEB6p}DK>?7m676)@<>UL`4HvBcQ8Z;x&-^yA<9jPck<=B zKMMRf3_R_M_|(%7YGi>_9&5nysf@0@3Zwi{X0!^e#ArZHQT95!U^Wk5IqX}RHTLsR zLm+0#k0-vuP@@Cw!Ht)&^%AA|fM>ns1H?g8ZQtro!vygYTm7)LL)p3V7XNjf_~Y|) zxWql?*)p$Kl^zfz`u}Nm7=6QfOEivnMw-~|Bvdsi2`ie!9~DhXLxj9Xd8u6}P96b5 zJ|;`O;z%?4#wRP+*3Mo34nJlgL2R3w48}<5DBhJjDjwyIj#c1|=yp+O7v0W12Zyci z_EvQ)YhX9E7q;rF4PKq_UZo_wuTa7t6-vs0ITv~1U2u_GI>dZl1zyfY-3$fORhYoL zG85uaW`SmhH(a|ePm_CIF2oDxpv+5E>u&c_rQofmGJU)qBRTLH z$rq27JPseeKaLJYM+b){%Q_78JnL{IWgS@DK7k+4je1_wb-XK&n|PGRjp3xBzo4}! zxQo#`kYL4VRkLa@(O!(d2&m$kR0H0XyDc8&Zr_9nWo!ME$4dWsjkgP$cfF8d7mQ+o znkkkLG@JSBH1t87NUYzwJWvpy*mA*ovn}|&xQE0UMNERSkpyWiXMB>SSqh23tO}*L>5KsWv)}v(teM- zTHHUR`#rhl=XfogM`g|QTtc{LBW3G5JodjPiRVRjNU1MI^Tdr;WGxXoTdBSq@5+3N zN13QHo}h}C-4#;;?$0Ia>QYv_wXZ4^-j!Jrk1|U+n4pLk+!aLv?$4#@)7eB)q=l<) z>fl|OBJn6wl!FP1c)?v!B;fvBir~!W?ji}(3|}>1a%=Vo@UG02c$B%SqE2ZXVLkF9%@>r>Q?fMnH7LW2+DagezrS)&sK@tZPwofWdVzPGAS*44jC0aA! z+Jgz(G0O)NDg%`vzHy++AZLCQlbRfpc+Vp;&MFUZ_#fYt`s1|iajeg1VM^_E$OU1U zXqwSC#jH791`is77C%aZ%V-&dv7N*S9sMkasj&r8qE zRXZwC2wATm+^2L)@sd8U9O7ph(v+{vE`@Z8J#g-X*hM+j5Xv$=v$vkAq&Q1s9OmIw z0eeXi>9YYu^1d3Vt0J65D3}gywd4jzk@!$>;M??chB799z|)x6;y1d?{-1?p-jz{76ht`@p7-f1+MI8Ug7aU%oMt<>QWtY2$ zXGI(2GIn!`wHk@bD9c8aWeXIbw(u5GsY|RUChUYxb{37h3o&j&P93vuvC4X zUq-_>y7{V+CrT5gxs?c%Y~Xix+^7m$dnVw5hJ}HsAyfM9X+$BzajuISbqs_`+L@(iycVixs<493C=V z$mg!2uGX_$RF|yPs@%Mk7Wo22?o%e^voKt;K4naBs+WXwISEZ^| zg&P{h_43qjD{*1?UgyVYdQdIxfX3GynU~f+(B7h_b<$>budG(N)bZ!foQ!j9y zSy1dB9_$+j2WEG4+CS|Y##rwjjSmm8v>54w$>{iad{7*1F3?hzo0b$UvEh!hdkkGh zZ(+0>^)dx=-W8+ekBZTzS0O6p&G!6t(biA$(s5N9#WeI zFyx%^2cn)pNlRQ)JJ)(vgFVZf7kF~fw~}L;`C$to%~q?}O8bhXL&`g%h~`|!m6%w$ z>S@-CvvJw{dni*A^i>OqIx<;!e}<&s&xHDR?ofE)9nvKbGpAnfLte_(Fmc>K8;ymp zv>jZB5Gh6Okw@cUnJV$97Sl4cn-FobP#a!)hcpPpozigcR&%)IUe$)-_p>q&;!)<| zyX#O;>bYyd0WbM>4)U`E0&#a7WD^XZR`MHihM64;3bkpG?d7_{ZyXtu!T7X)sCUN) z<{_JMjPA*BFu{~F)JMn0>FM}nsNQKB1*>&}EoGPu2{B(^(+D^9B7U__5ck3+&I6lx z?h|#USOKv8x0j{_`}%%yE9@nWzjbJhe(n@s)a-K?xwg82RB5s-=xc~pZ;!RS-c?eu z+do>V&26f6*)2i1rD2S5ok4A?*BkXmQ#WvfPERj=viOxaYqrzDv+YPYW=FiMiaRj% zL*vjeyN3tP0E+7v-J_W~fZ`I}KGqM8=JUR)xMQAzA39{s^mlZ1{_JJERxPM>R`s@i z2fx%yX$)W4Xv;A~sKJ_E1%7LS`>!MTBJkZ9XLDK*yuF3j6U=*APw-0{ZBOt7y}lV; zon5hHbsX5ZtAN8e&)q2<9_tAD4=3G&$ryJ^(~$pka>7IY@v&i^n5r5B|05a@3)O5F z^D>Ct`9}LX`++?!sn@NVd6sG(N#FpHJzqRB)!7aFHd0T5c$tRbj8Es$amgZ8+Nu{A z9_*hS!4Y)(CzDg0kTv?<ivJ2>PkJKUbCQHOp1I&J(Y# zeHeNR8oK0{Ci(lL8l2fO$2lR(5SrA8gRGP)4_)Lqr;E)xZbmt(L2*H7%8B;jEF?c0 zLCiW)egrwlueg>^ntRl*WBBeNhxw8`5VyHY{hBfEdb1qnoI+QEW^wTS50zkVQ{cF> zP4jRgxK>eCBuBXj@HGiLXy&+1nqZaVe8u6CMvy@r$j?HU|AX0wjVOBEI7J1@lpryp zr5e=Ck6Fi0RIohVv@t59P6J~Lzf1!P0Kc>U$M)iUJQsJUS0XIdShae`PjZm<76)Jux zpl*o!(8B*s(NQ+s4gd;8Nn>}CPXq=#pmDJ!Rk%Bjk@hPAd#xgjXNX8Oa zr#K}X5nR|(=8`a>zrUgz*lZMY$#K|!x7(u&*d#St6|L;aHytTxR1U6d}T4RW%&iC9(C1;x>iP zU3d!z4t5os93%tVH1-24Vg;n@xjD|ci@BL?AH=l9dKL`Vpd|%b`@w==QlT(df~A)Y zmM&Q`^{h|0=$G%(K9?{6$5I5oq}FFT3-O7)#()K%4y*W{rEB2=1-986YwF1Al*9gI zVtq~!=(P->C6DPw)|s8ooh_6T8Q^N$u5Tf=7$Amj>kD}zcg->9z>pR}cY*Z8vMvxLZL|;R zKW*0VaIexLV-+(Hgbd9qxq%@qbo{`&48jK-l4V+W65Oqb*XS9chFf7SH$J{$c-M?G zFr*k{?O9hrt7v~!c7wLXgK57?)o!SX;g66dLpsu6QeF@0Zro_8%1%_x=m1+?eV4o7K zVKJ99lQuZ2fm-?n6w-nYF21)|5ZBOOz+`7*)6)$2tT0Tdd8-A1w%W_pV}W@=A8{w3 zQO5=~f^~hjz`2A@gajLzjZjDhsUodO0fkRjB8St6gKfGRoJ|=g6{tBTMY600iI$LP zm^8|>U#C#(k{Mnl_;7l_?68?{EKL-V3VCn_6}Mt=HNUMI^y_+iIb*D0W+DjY-2v)0T+Q>mlcWpQu;D1O^ znf{YI>)RdM18=orFr{HmLhD=Tv>0YnGJ$*7!l!&%P(c3riG6OM3%KWK5-nvpaRrItn!>~7#;A=vEhAqa43H#Y$!dptu$2R1H4 za1lT@n{D~GI!56S{vt;>^i^T|oV+iYRax7uS6e|i@WHWh?T)<~HO$%>uzgNjovXI=vyLzl_gspyhph{=`VT2N{p>{U&*DKBa5vQN>-VrD%WuN6^I~q}@aRccFy? zqXTO9F~0fw()2GRInHCGUz+imm@!dTGZRgB|f$VYo(E#_;CFKsQYr$g&_qdUahzHP>cm=_(29Vxae zYnZ>?p{T6o+Zcl%3|ig-F*}%*hxj^3jmSFi+`k+avG<{&dYP6xw*fn_oUf91(16UM zgQ<=0)7QARcA)c@m=DKOOIM7DF7Z&^_D*si68!*)u3_FX5@3AgW@(p*sFLJcAoC^A z$dNfIk!7hvbnc*+&(PQB7>D{9x|+~hbvHNc9Jp&dA+_B<4vN~e?{O}E3;V!$){VWL zdyI*@?E5Q39#7!yhqsN4f&^#TcwR=JIM&qX5szTcXj5FI zxTczREl3}BFpG9!+c~22%8&8aTeSKnxoWV+xJx4Hz9euGWqnLpdrfDxyTA0<{e2&n zopHyBvG7N*CcJk(v$MKx8q2$u>RYA-FK@ZIHSyctGDzDqvuM+xnzl@*@mb@uplopf&&Ayh;X9)^>Z%yVh@F488~6jxpO@6kgWyiiu>J z*-_V)k2u#hJ?8=X|FjZuD-A8UrsbRHJ6CF+PQ6BX&)fC780*9IySVM9J#XSe{G3Zh z{%crmLHRCbyZ;&f_W=Lj$DE{v=ZYGyv#TaQB#iCTU(H6uZ%<_M-*s7_YrCm+_wQNU zQr6B%FPDwAr>2`|n=+rka#Cxrjn23}!5EnKL-Q%Y{~d zu>+Z8&E(ot9}%Tb1g5F179_S82IEOaDT=bDe8;G!^$T z-vV1b!l=H0cGENGVneH`ZEqXxG0$;5TkfPKu9lzR-p7dcB+`A3RW{m$^vcU>!pOco zTDH&**GR9M2=mBb#^rFXZ%u7Lkrr)R^_F)LGw^)U)ZbOLSvD7(J?*MR)+Csp$a<)= zOW7(3HJi6QOQzpljO$H|=Sz(11}q{o35ji-)f0OwQDhhGaW$J(hbtpH&;adj+6Fr$ z_0`&O@-^lSqse{rowB$#yFhPI53OF^8h{{o&G_l|v(x7D%mlx|7#`uPdPFB5B7|;Q zXN#{fo?K}>HX3!P&CZ?n?OjJNId67g!)f0c4|66xnYPOr+Qmqgw{sVLe1@J<3R+yL zXco`a;wYiL_biw0KGwN74#UgC+4Kauq5YtDkkxnQ==8dLuURa$+&adfmVBvh;XP*1 zc2+uT=P+9w`_Pvjz~8iw@opFd9VC2Zy@cyFjK>%UrR!qdSV1>W#5yqoIx_eWbkZ7e zmZpEUjjSKQ%F-6x!?#~|J~7n*`aEKkGEm>?)-RYWrmYMd>35KTKPgLpp2lyhBqnFM~uGL#I=lmXxMwW?UZeu>#4ht#AQrkr7k9YBhgAAD;%^|`^HC|G>~Wk zI%6)uOd`+jd}QjNZY`yLo@Q-@&8avpE*G%*D_30}LreVm*!$^6&li$M#@goJ*Sxa_ z%}@f4Ox@=xRoQ1&k*nDMt|7*Dzptl$XJ6zFYnUln$9yw|8+yut6XPR*Ss z+;5UadiCl>*#H4Zwg-1CDDEAc#`L-tF|pY5=6&ks7R#7)t$ z2OB<)?YKCnp2f*MFX(U*H$}&Ip5-DUk9qVgPVV_Zht>2vp~Koc*;&#wDrIasM%;1H z)P5N+%?~=PrkkR}RyMP-Y5$S5@SWS(4x(ezi>Zf|dp^*S)^t;JtRxpli90B>wRiJm zJJNE`4?3)-o1c>UM3ACA$D7I?qdM zzFJp&Kl&NwPwiLd%I|+Zk$nu5-{0$D*XgK>^N@qQ=}Y*nslTdf{aI>HhdtrO@?E=c zi95B9!S3Q7bncNzv!;odu6ri!k&(XNYCi^7SgWjUeW9$GkeTBUc@4W% z9(3L}?jW+~ii$0#|LqnJ^!n^meyn&ZF261Sk+-K`3m@Kj4?o7QuH}*aTC7avCAyt_ zhW0<3w%mQ&JOzroH_5!>ep5HT-RnJXp+E0TmyfUy^l<7m&jXn*I%SXiIFivF`)55X z@x}O7{FIytabm2JJ2|#lWShMcW#HF&?^NamjClIgv1Z81w;{W^xL@K0zG+oCw#Tp* zetc_p=L&Z?8)cIr_U3B;+wY!v`=1CmwB1XSWV&e#R z-UBL*Dq1^l{wM9T1}_n^!%n(3T+PfbXSqoAKAT|`?cEiGmj7&eAKKEQyYW8d()x1R zJ5=4xex~f&^!sJ^sbaL3OFPTmili-Ty;$dqX7_c`ec02yv~~rwtQGE#DY{$P=Qm0| zpVo8w_p)B_{&{JwBxS9q?>zMH<52xKKU57?k@K8U4uv31jFw}@*TV;vy5x_Z4v)(=8K#Z;v*gv+F4&N*@4IX zy!;f`mJec{nM3y;8oWUcuR>BGfjWUG8qx$eZoI6KIz`EVc;TXUP*M(lUrm zaXaO*?Uub?JX^BYy3bsNM3l#Rf`H-ExGH-{Nz3bC?>qj4TvsY%RU(-xq3Q~Ax!TR%p`<)( zvp4OR>Sk~Fk#n(KNY8mU8yPvv=R=siJVj}i*}K~F?6q>Wo4rFxIX|&c*5HP>Rs)s zojj%1o=+^hbnTsaMyRby`c*YyJ4-*fE-mZ3-+;+~7i-AhnYG@VSo58AWm-=0Cf`ZU z3AVLRzY3XM)g4bNGN#@E9q9_`__94hCPcZiPg9k#WYw7`^vTok$mdC)&gWLjvpQ|c znkpK{rc&`_=sef6ST4?vZS;vJ{mCI{H}6Cz9vuilXHC2*=U(w zuRvNm*WTjlPa!8yPrQ(P0t>m0mHTFuo!R8R1AIL9y@$gQ`^kWh6*z&W@DT8tzP(ETy-+x|yAHNq()>OJjv{VKoqB(=d z$AZi1tLAR?+#0_Z<04wBWn&_`$*EUW;~Z_YApNW(n(;p^gU|ULF6xMguC}>N|9jRE zEmf6>=oocW`M+kfYTT$pDh(0Q5z+IEXzu*96@dI|N735MKGr7>5S#D`fy2+hth|0M zTO{u;_Rp?irE?i8ony=EXDUVVu0hTTbh{XUynY;7B=0&Twclgw*N-xa+wb-eb9__>h$@)F{MdQ^lp^EAFLteL0rc46UI+>u!#+O**^Bx1gdoo*LtxMjUyr^exP8yZG6sWiRH>+oxcXx$Uo;TJJd=hsr($B!7NU zGwnuJpy2T|bEq^n+FxTB9?_8%*o|eh7WS+o+Fyf;i0&3&!{6Z+aq2sxRWZg78 z*RZlW4bL^KI8(!OodgwE@cF6wnHNGX%DtcU5{EVOG(K+_Mx)M4(>v7Z*v-5!P*Lym zgb#la_}L2}C!MH#-bF~dhfk6lKXw*9nLf?AdOxGxKNCV8t>d|lA8oehxn9FbrB9}3 ztnzOCVMVgK^El&pzSyo-?yk9&&7UIFjO{u(HEh?io^(AT!?9h)^mYavs*V+1IE0=$NgD( zHEdU&{KGH4jxDdBsT8pr`Q$@Z4pw`ubCgA)S^fHPXpy`j;lYnGLYLR~A$fTxAI>Q1 zm+h*mWbJmNy*kj}8wSw(Br#ZJoTFU-i}ekSv;p?HZa-uJ>}R z_z!UwxE2)}KNpf;4vFom)v?Ccg*Edu-YzUu)cd;$7_s5Rmm0RKV^@U`QRvvNA?aAl zcI9rhzS&heTM-i5RV%T^=Y?e5bZl38X@2o_?ATbxb`2@ooTzqq48wNS;&|SC9{pKe zL{I!K8?Gx~$H%cI%Oh)h4;FbJKgX9?ljnux^R#T&u~#zNvt4iCRM$g%y~GKxckz6# zXUX^Yt3Sj@rqn&>^`e=_{mb1o!*V(K81|=6xr-TH-Exi@BT8gDd{4R_k>NP6%O!l| zkU6jAGDps9WC(W4b4}lEc)JoguaWcGHFG;0MEmOvlBd&)UqHoh)%<+y{p4rTJ-7h> z#d(>3U-M4nylS+h|4f^)(6>_c$#HG8UxT5f{ECS7XKmFOX6N^~pFHb`_SqK?kTC9OC-`@yPH|QdV9K=am)IW#j>T9a~;M zQ^|827qK&Q1t)4;MBZ{~bb0+av`F4z*h^(=by+<4QAUxxyU;7oP1)`Bgjb!sz7NUE zI~3rJp+pCnJgc;!l1`hE+&u6N2xTld`8RY=_@ zht$g5HPdpXXYT7t3BPjwxUXeB>3T$lxDMI z8ID)AhnSAqop|g+O43B@t60UcpXW1s-0$nD-^qHEJIC{0n`&75`Ee2LueDQZehr7{ z$bHo!#m>d*&!1)%ipEC!wHU#3M07Q3LjLbrN3_pMiHHsvts2?RI->n`?TBa%YC`_Z zSwwV}JE&m>S)B8A__#kSub;~naR)<^*Uwb)@-CY5J*~`R>(`G%%j6}$Ed)IHQAUxx zR<|L@>-&(ryhELKR+g1y=bMHNGz`~KCvQC$NamZBdF=V7sfrS}p~$PLiCS6tI<|f} zzv{TJVOd}e_toJc1e>;mb=^80hh^2cH>OTv@f!C0yYX?X@pNI$ym|9=OR6V553}<} z=k1mhXWz-pBQnCU74;r(sNFwW9cz4^SPS_%wyn@{UoHENuj5Os$?HP0ZaVI3SQ2Y} zo|SrhRA_u&STnEQ=MBYu)mb+k_ti#0d>tPZ+8oa!V|qOX zi0DJ?(LBcYOECKn5vkt6&v(d9cJTL8{Qd&pCwO0jXn$QQBD!0A4S%<@ZlnEm%ZTXV zG1zU3XC2Z0x^_f#xA+?VZf6nES#DcBGiWH*N?DYYmDkT@$Kwv_5Brk7R^DP|is}8@Kx+rnbKNmK> zJJE3{{!Vl5tJt-0B-Z#m>p?=WZXEGCpEto8wPWFpZI5;5zJ{gadY?BGhg)YWLOS81G|PwJZItgq-)OQTF)$4O1^{Bet(?u2_(Af zdIT6XE*Z{ye_ph#CtZ)oa4gue9)-+;Etfg6U?U5*oOMWF-{!x=+m-9nlhGHFzcQzb zQ~Do1#4HlKL>6qjQEh{WcGsTf>b=HB`zsJO79S4LkpN z5(`$V<9YLSA+cb!I z=kal@@p)F-5Of?83$|+J^~-|&7N;*gOWuGj*&l)=;_RA(xem+8wcY;Z?wWCVv1bnK z#Z$w9E$d0wBQhKZwyZ}Xb70G5jvUy?fz7hA7?X7MPM?;&c$Yxrz;g7~l7kOpxCS44 z0se$z(dF27g^?!r8NV0fBHCYnkPJ9JGk$(?eby1}*JL81=NHQ&`B_J_zkV4J9TDAD z1LH;=eoZ$by6t#2iFx~I>nz&nEJssQEghyVR<<^il~==o4M|=d*aFb9IQ&abSmGFli;O_i~}>SmWo?GjD9W77_!_u+F=Y`~@bsX5RbUbg_T}T{Q z?aZ6E3{S^_4GYKhKF^(9%j{`<4>E5)Psf2BKQnF5fxQKmtDN`RA4&wT^T%_wa(B(D zT<@9Zx_)YSu4O&xdPIifxt8@PWS(oe%#r6BS%LjkUHkM%k>^U}uBZ5{k5j)#o@;k( z?ezQ@7t#J2gUxExlN(C?leW!Cil? zoOML|b=!#O{;)R8ozEhov%E$P3+MpPLE1%zwcG0%0%cKBR$dLy)y_-44xguF<@Ga_ zJg;#v*~1RZ73g*q8Xj9-KMpODcNkWf4iA2mQ6z6j`1O5AUf!X2t~&jOQw7z@ThIGR zTZi%OgQfzSmUwLYps9ZjQ%%(2f%B`L=NgiQ(D7WulDOW>O@i`rONqwMh2)n*;<;*P zp2pXOg=3Ak3kwzX{w}ncSMTwL;<;*ZJa0Zv$8$ZzlaUXQa~vSE8#}59iRY?A#U#=A zypXJ0NIX}qjy2g`NYQ3UJXfub=gsHoc&_`1H`l=!-2*pZeCt;4^A=%;xe~NuI+o~xC+YgXl@o_Vg9P7TkstS4QM$Z$N@ zvL1!Zb1j!S@?0a&wLex(e{qWj(SB{vuA2|X3fx0ZP3=xvGM82n2ij4R^I6%K$aA$i z5p4|db6iCGYYf99`jWw&oFLmq-x1NGz0=G%(b#Ce?h+B*W>$r8?O8{(zeX7m9Re!b z$Z*yX?bmH1qT8S;glo?tqO&|q9Si6pR#o>=HJJ2RGboFavhw=5Y!Oe;&P%=ypQmKy z^)r>cyiVGFPZQMX*N;PsImk-X$*vzmVxfV{pB$;&$w&sC>i zO%>E3c>MWR&-+PBJHEV{3TRs5vF(|r{y7ZuK!;z>uX>(qNESlJa}7)4dN0T46Nlq9 zbUfFvB-VJkkSxWL;`z=Kvv(>K->f^&H7r!r`@7I)UcJW~is!2JAR3={fG2H-k|XJO zu3p7y8t4(e zE+n5|9iPk<&hat&()G9u$9W|JipM8p)@zm2k@p&Tul=zH$FMHf6NhO(tF-H5k@-5W zX9%9=ioMQG`|A$FV>)tQsq^lvX2i75I*6F=7GcBREn?bVyNs9~9);bu7%}ayZbwXa zi?HGEb~Z7cB8hqW3u|JmHjS@i-=E|qo=lm$q0Br@ zwbWvmujA{uo*|T$Hw1|_)zY-gng#6?SpgzIfxXfoG(L09h&BhnB?fy+Rc zkBFa6=Ox3i-?Vd3%a!Hsu~1^rkWPiw>$%_s%lZ^Hd$wF^$29a;)2!c* zOv5gjQq*d9ysPTFo$ku02Gf3(F=DzJG2#C=V%lGY7#`D+J=^U(iJ1183K7%YB5e4( zMNIpvm=V*%qp;f+Bc}aoZ^U%B2pj%xXA{#|)}g=h!3qk$vNd0_Tlg%uep!cQS#4Hg zKd&v4cm>k3_Q2PE*NKbwlV>INvz8)>*B~jS?VF3L)3G0u7D>Dc{Zi__t2R1`{fMJT zV&-m_AoXq#IQIQXk;FVvCY+g9Uo#ckVSkQ4^Xi#HR#tf(U*dY+P-qfss-;7*XLYuM zGp&wMMoSTrwa~CweE;%4Q@jI%-O_rmfu;=CgLfs zk8uXkE`Ih~bt+q_$x5u_(8>u_D_FH0BfiT@>}M@SY{?0)7`vd5MV$_cgx6^_A1%&V|#VA|wv2PGU{f)J7hB z9Um1M?vO+A;{YV)OsnH)u@)SXwa{>A!;`t*^Mw~(Xndco|MPYH85q_Hv^qPd;n0SM zXN?C8E0WW2XeWr0LyA5%9NN$#4ebfEA!Sk;4sB@mS;L_X4I7+a^A>ODPM{6T59&Cy zVa1|hoj|Me-4j&U>+u|xPtkE`$)F{_nkR0LAJ^$lpk+l`IN@Q)tjPz%vKv|s?fCg% zdk*b3RvDiqFO&DlLb8S5-}j1h$))CzM{6bTny<+{ntk(VmroIowyZB*kIRre+Oj@{ z&7&=sI`U{E=deFsPM>j@2Gf4M(XPG^$2r_Xd`JCGKCl62tExxNq3G>&*Znn^_SYkZ z$8_Y;&Nhe3u8NrU>oyV7WmuV)_aml#R!hY6ykNIX&WLHB_Y^T*hLw4F|7>D9%kk7O ziVnaj;!6EKc8`sb)n+C3^V%Z*p`Dw29baNUYspK@6I~BbonofjFVn0n%gXB5k4cLp zW-Y{ikFR4t;wX}M5BR-=uXU_tk1w(BPx2BE$D`GuLQ_2rYvzT-qt)p+Bp$6!Volw2 zDDHwzV$QUB9za;uLdT;GP3C&fN3K9fenfW`ZCKtqEFP_P4r=^gXn59mz|gQ!?*qv( z3Mu*wi$|-)v&IjGl}YJ%w4up7kNKa*4~AvybUfOyqW!RVv^u*H7LQgd^ZfZi9gmi0 zZtr0YhB4{*D+D?ot;oC&xxwb5P>}L&LMi2Zko|{CPp`*|ZMR=oT&(Yj~Pu3}#H z%bvB8cg@mdw$nFzcJ&moXUqE1^|%blo-ONB*zDPIsUv$fvS+*FfiY4{->uI`MuTa8 zwbe$lkv*For}UVG{rl;z_G>Whuf`9L>Bye-?OeM#6EW>G6(Xj)McD9niR6rOc|DEa3(LZ3*t0w- zEF{mTW6y>rv&Q>{HU~BSFEl)BJYZ4&B1yv7+R#EW6$y=KKnhsAJnjCCy;m_ z-|Jx9TnxZ>YuK})VMD{74K3aXi#@B0_QN`nRx5M89~_QZt(AHH{Gk3sT0VJ+_AUhb zT<-@LAuGRE%xefTYx2RcVk8}VHiTHTJ$rTs>vb=Il|GRo)?psmvsUu1S(-~&+wGe@ zyLO7$vt@nhdR&HN&zAKmZ1!xq)R8?K*|Y7qUsV;~e*IJNDLvN{hiQMc)vmcm_H1O& z&Z>d2G40o(hsShe&sN#I=GOFdGgvgShtE`qnC=!~!{04p+OOtCOb?I3Zd;6)_E)(h zrn^Ph@OL|#n9i~eH9VpNthOGSvt0W<$+aw6%1Z3#wMDGMHB>*=A@wd!zZ)ZG$x7^J zEqRIE6RkN5#+TTSNsA;7OUHi1Q6%vmc;HeSTMaRFQohBgQ5{oruyS*@NmelV;UNynbu#fs4$){S`n?D%mV zcY)XWL0LH>gZ2=g4nby3J{T4@wCvgO?Q<9G+2_goWFh%w@@?`AJlbC;_mWSNBmDjx z2>QET5hRi5JhE!7r2<;G9;_EtWROHYRjc|3`BpG&1P(o zfjBGwt~tMoI`8hP(_JyuVA`)fMof2$u;K3(G40ofh-sg}5HZ~?!iK+F z#I(P<88JOP3cGDFV%lH*j+pKiVZ-0;Y+^dg`1Dsk@?0I(bjVPZlP~&Qw=c_Tvl9Dx zZIQ&6OkLyd?HN#_xqDv&Qq; z3OirNN3)JqyANNz2EVrqZgU7S&!6|>GfwO0pqzzy3HAQ{AoQ&9fR_*z?IQl%4Mb** z4-8G_`SXHWRxQtV<@tgAGN5!3sD@R$h$!EEjc@BTtXiINzJl+^$W219&l*-OS#cA5 zQ`ce0tjPhxibQp1(jG#;7SSQ#S>p%y;4STU2r_H@Amcgv6@ttfKS*3$g07cgp+k^a z;|C9cj6FzwDG-@8`CwS_vyN38LM++^tM&+y=^J>OKJhKMok#wxmAq@7CU=VU&7WOA zMf};azH~hnWw3kh9$A4UTXOYd>voMoN0C3y$QTsNY+AkDs5;oYdqfy zctiF(1Z-%0Us&EctW#-qmRZA}4Q~!=JYZ4jhX#8MU@rI5+8$xc?1%LJpo?LyLyyz9*f`NJD&sxd5=4o<& zRp0#COQ(oGTh^DZ$7M+VY+0Ye=FgT(9r?47Kih=A*sMC-XZ)qXv|nemtM0>b4S5Pa z^*i~%W^JZHJ2pI*$Ns*C%BcH2@@KQ0ZL68t^jv?{*qHX$ZlqzMX7H-|-I zr~P_O#B{d^8~$z)(>|LeVtRNKcH3gaw7vE|T?uVX*rD3aJR7y7P3>U8Y; zlf1;k@n>}sYpSMU&AfWN;X7#4q4i;a3e=x{;%F@D59!O2zi@pEX{sP}`5 z;Lb9p+sA(Ke)+RnY}EU~#SdrQ^UV7Yu%YpTVPQkdpLO$aEIqg9&)&xw2)oHqk4Ujm z#r&~no#b7!GU+@-$cbb#~fcjUOJh)aj`G#Wd z>1A%>`@*mpA)P*}*R#g|g*FE@9?(W|VZ=pCI9Imb)`cc>y%!|T+}HSiTNnjg?fzjZ zSKg;A;_P*P@8P@8Q`oh0ke{o^Mp(W(B=)Rc&l*1%maWsVXWa}8A$AUlJ*&q?y&rTj z9WgS#t<$q-=~ws_g3R@Pa1ksqa%ZXKFl4UxgJk?t=5;XI`ee`Q@vO-QZM+eNov0=@jv2%lgvwxD3gkE$dU*{MmA; z9oNv$BgE^IXMF*g&Z_yzr^7Rsus`{kEIX)8JuaTqnb&8VciN0an|9r`{rackod%IV z%Q?A*IM~iiIjwelG+22YKAOKXelNzxw7(8PZSre4J01D6Z4jKlHe%YZ*9f8`rt?^t zmv@8upMNS$>YMV@=I8EQvK0)37Ag)Juor;OKD7nO4sm3d>sP__LwO zT<`hFc?rpn=uV&I3=GFxhsB@O&Owd;3k}a24;UJr>wRE&bFkhEl4s(+#*Z|#{8{G- z$CsHptoMUqWq)DuXLYttclvBtwk|CGtX9vOEYQusemU$~nKgcJC~mb@W{n>VD@K|q z_K|SU^*Yuw$XD){i>lRgy&se~lpI=qhu~8*`CwSs(D7$Ou+Q!Ivp17(lFj4+xH0GP zD(tsoydL4ay?Z#7^d;8CjtmF$6;2&}iFGnY2j`QkX6^U2`HN4IK95sO4{@StvlB>n z&{F!Y*Ra#*4erBsxF+ZR&pTf*&#cb2!Tj$vem}YdUP9l z|8*nnE_JBgZP>-E28SD2%{X!d&V!FkR4?NvcQSE|`P&lwKl3?`jGaSwaq2WJ>;kO9 zGoa=vemlWCZ}9aD??1s`^&`0nq;Y=nO0mrj8xCQ4`f3I3YkGZ*oj`7UnHuT;_I%@UXOqyHju5Bs!ZlGHg3~#l5m~A!{|8^hfdt8~xC- zJ%(Q1!X_{SI{D!1>La>(54M2kl-vjUs$!2vCaQdi_Fo~Aq)qMD|IaSd`IJ}9YTVE0 zcd)iW?D5$v+vw9P{QfcYaOg!kpPG006c=i{3ys(5y5F4Kj-`!h>!jHR?wXCaY>oHg-1D~YC_~SK@PxQU-8Gm*1Jb(<$3tWC)Js-M2jm(MacG^a>nt3Qa8qe3txDhrS|788tAj;vAvu zBHh?hZDHK^;ZgX!Gh$Ql7>;Zwm??JNIIX>e)MIOou@_@wC)L;ziOpk1$`wPIy-vCi zbauzY%ts%rpOfwmw8<*i*gDKw!t`w5+68SRvoEmSGj1cM{XiZl@lb8OOfTp5Dc%T!V!4 z53r!vx6t!3dLS$AMB6+`FYC>F&^%Wt=RtajZ{`axBJ=zqMdY4WjM%jp zt~iO^ub-Q=thB1dwJTa+v075k+QXe$Nq>XvG+%pjmNy%#Enuy3bwCR&eIX}=_Lh>% znNIW$kFXZW=hiY`;9uXuf7~(h(H5LHQTp$UUCvjg%I%!38_Mg--1L<=p%0q9uN!mH z*QHY4*rgMe!L??!bQ>+WlF($jk;5_&U@f?fdM5>IQl|Z-*;$M?q{+1wy*6h!@8;44Yyv?rl<2_893q#SYIN0fPUJp z@CdJSAKBbOu<-e#TaM+||tOKX$Zr?vVYim9aZ75GtM|hxYs16`F>q_ge05lQn~E zf7^KiJ}+Q7=sYOf+tca`ijdruH<+jKoi~5*Yk2ICeF5b=D}Er|*Y-YO$of~4s8KA1 z>uWpvPo{5vziWS7iZ(qx-L~J2XjgWBUJ%@^&9`->Ev)Ze#eR?*$>&(L@z?gUyb9Lt zDaC)qE9*`#v4;H&HGS?Ea{H<3?ff=YjdpPdR@!$^<8gc@vB5j23cbg=IC3G0rP zMshaTi`UR6>q%U-%Z?NGLvy#RW6TN`ggd(fJ>EyoeaqC~Zs2;Z^1Xt_k8wwi4Qq2x zas3;#@j2=SpP_ok9oWbCzsRDn+IBr*{!e|%{&@br51o^PP8L-b7w4yy=WAHyO|#|Fvr%L!+Vd`c zEPX9^$)#J9epmJJQ)3_8-UA;QMH2e0*!-~x^R!-ech^VIGObuzN{&xezp}QcU9Za8 zC-P4)n=JF-4sgLyu9E8tKJfxqaXx&Cv7*hmfPFrzh=8~v+O?#`vUi2Asxiv9%y+VT zP>S%G^*;UUBQNI|QptR{0WWkND3X0Zlw+8YDr!B9(JGUy-X8RgBktdHJi1}V$+a2A z=w#&yVNA&ECTE{#5F8=)X5=i9+I#p~vSg28e}|h{n`loXQ7Gf7mv;QorUbS+&b8~8 zCI)8aGu-%=%MiwhR?8RG7)m@Pxi7Ps@kX*plJLf}OvZ&)iRdU0)s zHC|b{LKrJnFvhWj*_J~Yr@U0-kCHuuayUO_TMT1V($b7S8txne@eHgbuo^jJ98oSq z7$a6K-}qz5Iu*|tlDaX^&UgnqINbayZa<8%E0-;_aeFXmY?0Lq+YWKOtX$)dRhoUU zVP+c{8m!$mImfA8#hNv9$AR#r2xI)}Bn)dLEpLc5cgK$!&T^);RV+(*qgpO!cw@_| z*?6PL*25e>D_K}0c60Dmk@Wntt%o;aY01JGF`kdbN;z4k=@a|MnR8{*gg2s9l7=FII z#@LlfHq40Gohx1M;Boh*mh1as_g@v;MgRI)Y)w`o=5qF|&}tjaPx8!9yRVCyV*45y z+zu_CzR9x}k8r1Us4u=}GcC*h&a74!QjD?L`&K4L*FI;0)5df*s!U%+`%9`kw&*N- zrZ-RUcIR2Q(OS7Q-D{2~w6&4d?ft0Nm-{SFH%~tqqFWid*OGQeUKzf$`#&@~%J z=?|}28M{U*pXb=l4^(Go^_q3p^O+jld1UiUT3N|7+u+pQKYMq3?>b<$F++=-CpxYz43e?=QC=I_=I`j%Vksfbyw(Ux3ipWZ-ri178> zX{}tE?lIOjtFb!<9Lu|j-d@9(SiXE0I`gIIUSDl<8J@iBv(Kv|oBS2+G*#4o_j+oZ z&Cqr*=1A`_NL|@Rf7!ccrRf@jE3NZ}thAOJ-%M|E zRd+gbQgpAcwi!X1$>=k~>t}8LiZ)uSm!*6CwapaLGP5em3UQtlUX8!9>$=iq+5P*- zy;jWASGttkaBi%$H}b+UAi#J2HqT2{;at)IbujeuuHay>79PG|9H zjAiS$<=TR1>>_p3} zZG*!)sk+x=+jy~9VqwG0rp2}^2-OmGuR$9za@;TD^xSq|^tboTv()e4r1l-eFYWF} zsrda{|2W-gj8h*}(ePHT<@idW44T@`;Jy zo=#<0z$>37e=u!Z;u5>I&Q)SLU6ZZ6L3?B*Ea2y{k(jFoJolVyFg$Di3BIH~>V%&= z!k1jh9+DBro_{)B(aQJH>1xU7ifhZqxQ@Ikw)Pn;!!BA&$4~jYI8Di2sx>8jCufmd zF>34aR4a$bHrRjG7vw*CXx*JSx&WED!-{>g*Kl<`Epf3fxvJ;%LdMK4+R*4_GSv%5 zfKPenN%g|DbSs5b8j)R?|WSF7O&JV z@4{8}1v3MAmb`!81*0>L-dpraK6i|3?Gp(!`d=~nca;y$UY?}SGb_k|lU4qg=rw0K z=P|KYKRR;XcB3PhlS&^ENDJUj6CzS%d@L$y8J|E~#3W^x_oY@S&r~Rr+u?C_st?w4 z{VI3a)ee(#by=@v+{M0dCR3Y77;|EZR#ay933?%;ZToeC|C7HY7^SU|v9aST?SBJ* zcNZh~o$(hp;WyI$XB%y$V=aj+Y2#?u`8;jCW(|hrph5Bp6@?10hqrc#2 zTKrVECiDA-(F##VyFklJ-Dp}C1m46If(fotvu!?kMf{=VQdG+!V_J0|8~at?XU!n1 z>ONPEezcmsSbM*3F&88n(CBO3-0v2y;3(~@bbRT}#hrk$l}M8xW$#8JBOT*4YQ zBdL3kkI%c;wPigguXqj2au(^X6#Q*NN?yZRx`p50E3X#x`Lm9kS)z|~T&LkBtoyOo z+dwZph)#CF+78-sEQxA#E+vAe9q35gM?uVv>64sLRc{ZL@LWjthxUiwQ8$h}_n%kY zH&*OOrG?29FPsImeLAbNgQqC{CKb0cK7Wj><>?KK5bUX*?CX7FWodJ_aNV|%@niV< z9lXB{q;A7zUB`cJ;qQ;JACK%NImMp&31bAiU*-h=W$%bm8Drj`-+cDWEo2kSW4=R` z{sI2FfxowLU%tybJ;3|!Gk4J11Ke#J|Gzc8ho8563XSq>GRX8X zE^~-EmUjK*tmIh3=S5p47y25xP`hknEoK`r+d#e=D?0f)Q_MDEwh^<9eAPWxbaZR0 zv7%EQNyls>W*fyd+$B6kT&gCqqH`Wht87JQmTcoWYC7Z=Euf0R8W}6XtbDS<%sM;y z1GDI47HzsgS4-vb)!7nMy!tGkdeD5j2&_) zc2JR`KFO019vL|&kIg;FMB!)22Rg)W)RL?d**#y5OOus~d=2ua$RHtSgIo%ca=~bq zcN6XvTeGbkpijp}9*zK|;@GftVS4b6yces7!nqNq&5wAGynthHbjax8=g1gfwT^$; zI#pgbj`?A$%dW~mcE)VnGmVBhe&qa66YPbYI7McM)a=P8wDEtyC!(L1s? zcpfyhY)6d!=at8XB|?rO`6a{(b;_%s;Qtzp*ma%b>2j zrv1#%AkGupa(PcKKrWtHM~w-WK#(Kz%w8`eE?TAj?ielnIAsn!$2;sH8AoIyJT)UA ztRg#iXd%gs`_x>`dCsRLq(5D8;D*A*!qoCP8!oycFYuMIrQ{KC zygA=!CCGS8v+9Tl-AqZdA~DQNwXgXIe$9xwL1n7Opzx z7G8V`Ri9Xs#9OW4Uo;5&j#-R&%9g z$O$?)@4f*Z+HmBm?$nGWS9K?eSj2|>sOqWBtg7z%t(hDDLv=r4K3#`*p(T_!N277! zK5dv8d8`~I%a^-r?631k)rfLzxyO)_mVll?BjXY{LCiJ2G4a}-u@}1Q1c{tWw9gVP z@FZYOR#(iI`^LyFd^z#xy1Na_nIorDJhzUSwuBQiB%7n>C4#t{;8>|C$Dd=Y+>}4Z z7@RCfo>f~vE|x=g1M(fgHtpeRV#(T?sW}FrQNUN zz?J1)>*~BK?%}aMH6IPTh$^2)G3S^qk1AVj7A8IIE;GEihi3tEI_}|#dwAr$v$%(c z-j(|c;vODb6H8;!&8^P#fr~&$VA0nby4wY zx9?^LyLq_Vrai-KL!EDI!h?~QoIW#v8Po1GcgsiNf+<(&xn{B})^&vW&1|06@8k7f z@f%mvWFIYKX^9(TwT;(s-GH?h?s^lJwER!je);nV@AGg4)*tq@b}D@V@OzBrct zsRR5kcW$#!&!+uyT4N2A|E0cOqt_5LpE5SlTOHNg!?$NDdG8?F^mCl--J%)glb z5K+=QJ3FXNR=5OXTw|)oue3PK2y#cUjC;BU^P}m9!#LN(*t6mj4LDL@*1t$ z+Rg8g9ZBuR)|jm&sn?U-qh3!UwN&pppTuInfIXD9X{UCltKqEYXGc(M1FIplZ?z^Pk5>*0trIRjw>y)M5~lMJf*PIu5_*0FTGl-f@99VIKHFVWpI zdlrHQE4H#j_KLMM)uU_cI_dGfZO}Q=6E{Jj;gjONT96K_(pfA>pj6EkIjVYcj!`NJRz1Y0__&gEe#-M4XM{EtxIb-WtpY2XT(A9Z( zg2J6na<8lE+$+|4tiR32`?1!;%4wBeit{LD5{!;zCg!gff5Gfst}m;8#aa(NB-u;C zgL{JrlIOdS`NW@G>EVh(Jg?1qk9x$3H*SJB`UYmojsZ+;GoELZon@AhIVkH)93OkG z8MzPfyf(i=Q=GxHVWctk(4H!0S8#Y9T|BRi=eAmmN<@=BKQ7jKVy(xYz45#@o_TEZ zko&Ov%rBed9&Kwq_t4@q)Ed|>`I%e`rPtY*{`MCCllQdQ2U%u!uzJ$&WP#0?d%&lV z8OrE@5gcO$j*&Yzmk}~!mY91;EXBx{t8`oosEAb*IbnK?F_t->_ng>4{9jnAiv&!>s?4%v&#vsPRkC!U>5 zjz)Yw4WCozo;zgs+?Ur+xY8S+Ps6=x_fSQpZHdpPDc?CXEB9*No=?-1Y30~d+yy_& zGiAQUvtRh682$5Pit`O->)PjGy1gwAzz2}$VUitF&s325xO=*Ao~8aHtP0m%=%fA@ zzWEeAsVuPGz;}h0Z28yZjkp4aJSl?Hms%~Ux>!?9zSNTjd*|{P!T@XI|^Ea;=O{XmdH6*zQf2-Gm)Mm6=5O%igy5X2` zH0(@v?b`h*GDft0v}E)f?RKXKVrSi(Lak6T>P0*aNJTCCK88=Z+@vnoV}7Xztgf0>hmsvMeN*+>M~^hj>WYy&>_T@LSz3MA|4_p9JyS_&hD?8|;GIF?!}GiDe@e zboZKl$IA{{<2ha&PhDHH=3TeY0%viP@e?H8hmIK2h_}?qX&Gl}%u&yb3AA_c_rAFC zXquCKZRF=}D8?ezdo%Lk>>@v%{$0mE`!C4N^mEwAAovz~Rvd8N(I;{F#+zG17( z%o{n<5*fy`&LRgba?m8lVrFHZn!|INcd^EK2%G#GcFaE;Kr`ba2aQjGc02GQ2d(O~ zDXy(Y4qD`(UBhXB+?OEnlE0w(`NM3F``)s!llPD&IjJY#V2SUc;W3_WZMzm~)`s7Wdf4{VwD< z#hk;QpODQBV$R`bSVbqwvHBhNyTtu2cJ178Vfdse@+9qP#JY8KsoYh?_)VBzRriTG zN33sT_aZGN#q2AdHtg6}n#ehx?=|-MUfk~@r+dlTAfGWUtZH%>S)XJ4dkl6JPpUaE zbw09l_&fKa$td##SAJiH9lHgF75ChKXU=rxKA4?WXMGVP+SCw_ssIOg z_op9OnK*i~mMfnj-1_+$-rX*Mooi5qml-`>IHr+?Dq#`KOPFt9M2+ zvffY7EB4|~KRSTC?8g)HF0&4Kz5q2Oec^xo{*m2C%`w8VBlg~0$)^J_HhYG9Tb-qK zDCcNXvm9OSNMi4Q3OVH2?9`o%nZ<$A3*Tp})G%8SY11QO$GdD)*b_c?{UxL$1C|)$ zUMJmicha0Nk(L#aee-M@nUnd^mb!8JMC77TVo!*3VO!d9^7r7p%b-ut>EqOm3P(a_ zi)d2D=Z)#H)m?UE*e98b9D9z4MYD`C=Om@Ky>7D0=Qp_5JA*rpoZpjr?MdurErzSE zup%Xhcmjz9SAq`CaEpy1Td|u$u+x=1p@o$hJ1^v}WPfwkyvO^zo5kQO*pw5rLzeej zW1-l)_jvbhfd;9+A8|G3$6@mCKGO5W$N?hrOy;7SGj4=9GIlq|Pd}>HsKgUh8s$jQ z!m_pZkeTDo_7`AJh!5H-nX9aF@i&p?M_323#92#|##36_XJ#ZUO2y7|PRfoDo^|;i zcjU?-d-yxNPYu&f{SNQYYVv718eKZB8Slz0x>!P+4^+)(xtGPO8QC!iN0vZ-hSwNHA_Xj?mgW90M~OgS;M3* z7qEhvX7vkts_!P=YZKQ!0sgfNb>XuS$-IU*dZ}9PmHGc0qct+nWfn^Q_6~Q`wJ(_8 znvQ{>JH2Ct^P2l-o8)ozcWaW(ZDQm(i?`rCIRm&Cm3Sc%hzu*OVBX@idZgTb9eH|D zSNBct)ZvI~P$T@cZ!k;P7tIxRFV1aTaSYt@gaO@kg3#YgV;^ddSl3-EzJ3dzmv~Nh zm7sJBBWNQmJHNItuAK2(Q_EaEVm8~Op6GXIFBq%LI#ca#n}0PkPS+P4w*GX_j5Mt{ zPpG#NG~I2(J-}j*i4j4Z?6i?Qk$z9N*M=Tz8{D@C$OiShZ7wHe=OL_3^T5lvC)d$f zz1u>5xt-9Ge~fmxqh}lMZ=+>C=jImv{ut7JYQALji*r?8aXXP`lJaMpeL?H$e09T& z(@FA^k0fVhHu!dm(kg#1-ji3;Q!*oD#>hQ&w9OK0+pL7S1)sU-p5}3c>)x8#%srv9 zlaMx$-iBEeM_8T_O25x|n_hrX5C21}Z_j#Qt3Uq(%D{bL@7jTta-#TY#x#_NyUe8j+-J^6 zlmC_H$NBrp*`i!6XERW1oI|{a>{2V&yR^n0+gXltZvyr8BvBVI>sI$bkzbh+G5KBC6{ z?n4Zjm*1^eh=1Gk@LDBTy-wtwdY$A)m3wU2ORkOyhG;=$O#QwSN%n~^f>0u57kVZ( z#`C*)-(D&9;0YTBgv2s16E&Wqy^Al)E zG)UZ1GRDH(eM-$1&3qZnG`1PrQs?}%jEGp0^hpk!FPfPyQPT$QL}{cIvD}iG$`e2} zdb4-3zJoR=?KAkkQ0-D}@yu4S2XVlC4rXgfbgpV=hWth-mUOw(nP;-j;2-2py`LS0`a z>aUZJb7@aC0_oh+t_f@PE;;4~WdHdeaK36r++~@(g7ZUnm5rn1*$UPcR3p-!^1#Z; z_s|G!+`h6sK_;^m`Z0PBiIEu3>LeCaZckgar#RR;A|puMeeC*|#3zi=xcWui=@7G& zNQQX_SJ2MAR<>)AM(d@Mbedb@^R#G^hwH8sBwa_3Sbw9>)M?q~nD@<5xv$QBac=S4&2wL# zTR(T{+-J#G=eF?M2LApAe=j6o;=dc`uHti-&)u57E4t0ct}+u@e-Ur=39ehjJvPo= zJGW}uSxA0`JFVbv{#?iZ7m^j+`7U0UrfuBB`(K(iC+6xEyzgYZhEJ~JJ1r;Q%gf1k zKR4I@3XR3R+mfofpqtG(T_P zZ~o;p`zs?m_00dQ8*NYU9>+x9N%#L7T=^@!&;MJgzdE-JiHr2fc0^N4Xp`FGbsV7y zzBzW(+cMtM=uF~=UzmGbH0|?_*Nx2eT9T`av_#$WP7{MQj^RS`1>~YO1O=4$bNu(t zxf|#H9`AFczA!xybWR}6ijhe4N1d)hfxD_`=K!_T_U(bi?R{WBVokvikdbyt`rW!;z&j&qF?%4i9W;+5n+G4&?JXz za^EKT+|SJTr{xp5={v487&D2l%kH*hbgLbIiM;>Pj6W^UEtUQy>i!up z8FX+3^MfO;MW|r(FQ*vMA;e~I=Yf&WjiuK~Dfs*oNV$gDB&d{_R{Xe5KejsP=WvV_ zh)voDdXi>(5X-ax*)A&QiOt{`Pl{F6X+aS7=eUZ|t?n8@(l61oEnIg+d6gjPm#|sH zh4pcD)<>+MSP`ODygl#nNy3=(GQ1BXOC7>&M)wP3G~#`)f6#B!yzUk7%^`!J2 z)aULd4^egd1{uff=kQ%s=X3EKKI?nyGc$5?;yHZj)4?PbkoAoGjxezudA-UEPqQwc znpGxNU&vDap|M!P5V3g%e%<&&ma zQ%qOH;@KG1qE>tI;%sIIx)jZFrT;*+Dl0K!JcrM(7&XaHs`k6ZvoYe?82+gcai3ZU z`_$TI8$1_-d_nDgv~nimR*y`?``9hF0Vy>ZQMrWnS+#v|CBFtgatoQ;9q6-tJ&rl4 zc7I>Y-)yvz&olhWTFl?Bn_Z|*FEM|M=cqH&CL1!IZ5Yosd}lZ*)}qGzt>`>7sXtZa zOHJxcRriVcTRdkZo-<;1Zd6+%yW5QGM_i?Up;|d|OhB?c=k0962dENlo6P7=YYyNf znW%FPR!A+s?xEoT{sroO4^d?#TZMdwKR1=mt9VZs8hp3D8Xzlze`DAjSq9)k)MFh3 z@D^Hd96)K~CS)QL;-UFpT0XM+gsJCvEKaU8=kIS5%lUhVsxdi#cTqp)9a(c_J@_VG z`I%d2iwwkH;lC^RjIh9@en^G~`B|*GQqmhn7uKiNXDPoxPsrmSH;%jr(dlQ<=`0Mu zB5hv5eao1COVcsC3CYP;5Vp@{wEZpKAp=J^kL;rz19Gc;iOcnx<@sGidm7zHra}%- zmP7aOL!CFTS-;Md*994s?Bf@x8Q({bgyHuP@3KdfbOQOlzzCDABkV2LZ^!Waa*Bq$ zbWIq3{|RG0G28<|P_}Jbi?8aZFc|9lNw&-v;QTnm%c!{VeQ5Ac>{ALd`ly>VXo0+2 z>P--k=Jd(jC!>!nQR-sNjP646NBA_`q^>zjS+jTCzUzi9W@o%G`#AHy#^)B2O?;EB zw}DrV0xb{6iby1*LO5CEUvfrTOgafx(UxVS3L}m3ub95bRT}(R4j*+vL|6_V_3<;) z+fB4XCX~qWA0eA#0Sn_$_j3-T+e$x9#f zW3@Li<3uK(%zM$>3O-L>vsfi-Z#CKz_R60@KR!Q>yvj5W*s?aNG$VJ*YleLxkBl5J zdZ9(I>xe=!ZfHlpGB~q+gAs^gC0D%M{@OT+@Xx|WltW72Tn z_TNB?WrJ*msV_U!YxTt0^0g^O|_!J$`2Nn&!GOHlWvRwx5btLwDCEnNnUl z%KW#GS$KFFotLxl7Lq^2%%WY=+(&p*e~5W?(P&R|jpN^O%rsZ{{JUG~(Y4Q*nvH+= z#|HhhwilIhItCtXKdlhw@t^t%m=|jl9Bhqzx6H9X*$oL9YTjsOwO4&X2 z3t-`_aPPz$e+~@`2U(-1BKDp20K>EIcrqhvO%FOb^(=o)%9gT9!8`JHgXu zUz0N=tRj1&IL|%d*%~$q$;U&nij&ug%lO2TwBvcnu3_#d7e*n^hLER7$+?E^{1|c& z_Y7yzomD~RA^BmCu^Pp5Q02;ewMEXZ;HTpgs>*qv+@+hIF?PO079LMU;aNtO^~y8N zxU<+=j#=`T$ii!usl+NyQKd{WmD|8)d>Za1;!69ZgR&gOp7Ox+7Mh*&unp@-52A^= w?Y^KLj0+jex@#ok-2o?Gdq$(=wmYb*q|Yp?wnnGFio^5ZubH#>c?>g`VR#rLTrEvoxU9>YO^~s29wcyl}T?ch0OY_3Xik^W{|KgnS)1!wauJ z1nR=Zc;p>87mhvJa(ecaZ#SCJ0N{Z=^6g$J0C(3LqgfB#fP(yXsp{Qzj=h0HUUxCF zmAin}dXeg8Z|#TPc<7)h;3F|#S#6|ZJpS-Q`z`l;eBQcnoUUrOW;%A_7)0!$$B>rN zQqns0E?a1#F4ZPe)TpOg4pIo5E=EK;9;Tjd9XfA~wvUgU4k9ph;7)=(ar<5Gau`FY zr)rYc$nBh6u?AhKr)v#rfk)%X#F37J=t;j7pV+QnduqLuA$RDVob+;gA)GDdcAIave2X~FF)Lvd^pif^wV43xZQI$d+;*B@Z{X8pKo2-7wTu9uZ)bV zClRJYcjP`rKc3Ne_4ottsWTuSoqTvX(MPrE(bG@d?&x&t@r3B)4?l3wqarlo4Zb|* z=@{!d%8osqRJa@=x{F4T?DRpo-P51!^t*1y9(e;aAVtbsO%>&d9O~zQq<@U{@Cmio zcg7xyx|byi64~r6XLvU9F7Vh!2Y%u_>30tYXVl~#r8Y%8b+b!R8`S0^VPvum9D8^c zR5`)usPIjD;EdwUHC1MPUYVPo*K1w6qYiwHMh5ds3?JC^dgJrHZ|Pcw=MK>4sKS=! zKQtZ;y#XcNvuJF!l+?{cv}_IRlY8S{FX-V?R*jxw&RbhtNQ#`v^5U(a95u~@`?lN1 zI8^ykFeQmOPd#}+9+mxI+&|g4xCmVjt%wvkpQBc1;5hx3{S>1^@?by6<~B+6*kEVa zaypnerKC4{l5ABY0Fb+y!c^+#553pjUT>Y>vg z)66F7Fq6kBQA0dAb)25x4!dsONt@MUk8PgXLH9ntGdOg6PArtuQD~1w&cN3;zO?7{ zm2NQ8NsjzJRBId-?pVucoSy`rESJj8BP4)A!`nS92gZr1JL3D!8{rPOmGr|TL zC@sa*Sn2qM9WxAF2Md#IlHHS^%;47tFNxpTmXn#WOrG$##GWi`2?Gq;*#WVaD zE>O^ge{WMn*t4b}c{alZNe1|8H%if2qIQ0W&$T>baT)VO3v;>gFa^UfW45V(KyFM6 zqdWbJ@yNoM`qb+V<>7bymZJyW$bvG5;ddyX(Hg6?GATZHqy(56lxC#`S`WRhd+cJ# zHyEMNdI9E*jm1uo^m1Y!(o*Ee+IhG=2^^);oWNgk2cxmwBN8T%8-7ER3LXK>{95M87!D==FR@looDBcrNzx+*d@^68=Vv^%WFmGm=i1oyrWSg z>{95M6)el`B6O4&ER7mrmqN#^U|Eg_i$9_xT~#e@V3=}-v074(6T2_faBkxM1*|dH zJ-zCoMs-*dTdu7qh;BRm$;Vx_(m@+;NOw*B(0DM|a!=fmuV^QUbG$G-hdp_IX-Vr+ z?5QoiYb^Z}Ic(egnltdS(eTi*hx3;ASZ(&4lTFYtb2X7YM2i&}pNQ&{mbPKNzOt@L z*?5@J6NZhY;F0~*kHkIhF?KXKU5n<8SRF|fAqzvIFZ3eXiYiZgCLMhkdeJMXpKvdWb(3{cwdp zX>qWwH5i3J4`1oNlI7{cQ|w-}`~H5z)V7BX{ikWHJi6~7G#B>bE5$*s^LL=UYQZV6 z6Ji)_j!j6m!A(fBiwnV4W-Hh_mS9Hs1eUpI*R6#ef&LNG`Eu;c#_V zkN0%fo^(%q4Pq%-$(g)u8r&cM#qXJ6ZSrjqZ2a+< zJccs?TaRF=toY;cN3#Ds(PY^lk5@eWxxN~=HfaM_=xvdo!M%=XT)$@rz0phikDhEF zY~H*7#@@!m?Kf&KB}CB-EUcP!2CiDZRoO3s+}dt!=7O9b3d)-zYLl8P?sO@*Z){S_ zhpd!do2MSXE~d2t1+f6Mfrx-(<* z(vUx?dFvUQm$2qEZyv}}nm54(X0$`lylC6(&D%ud=&Ur|yl7HA)ATO|4Q`})X$q6n zyp4>_OIUN7HxK0VY~FY*`E4>Cy=Wx_m<~m{KmKz<^u}TRpF`OACEmOU-9pj3G^2T! zGBz(^&1v2|kfk(l_I8Mp^Hh_jXx?~InDUx<^VVXKOrNXd>}Tej$$5E3^Dbv>Uc#Ew zym=u1qndXriv;ofsAh-B(@qE$nB8N?7~SkoCG}KI?a^Lb zcnRa(*AE}`DtKjk~9_7F$rpP6{?;wtXC~Pt%s!4@8V5hc@i$;tI5rlJG{Vaul^`0ZtI_o zNB|hSce=ga;>*ou(%#M)*t^b&-4UR3w0)eHquLQs>rc*7+K**}B#k(!0k9D-r#(spOmRu6Hqo+Z}eoX6+Fr5vt3~tGcr7(!*`l}B5Dgb7kb^rTxPiKbjc}Va`didqoiZX^GyLiZiExkApQ84z29X!xs^!hXJgk+3+bjte+YeL*ig+-? zFKu+50yg6ibslksfO*K735`0BIWw_b=Rs$v@p#l3;+Th>A&z<683HaV@E``16Ce#9 zd1kz#!6R=O8{d-NsZXH@1bt|ON1hpXYw*Z3ljR#c@|-%cT(nzi@W^Yg(BHzqQsfaC zg@JkG9oIUxy;>NUM_#8!e+vWi$TO3VaSV*{kjB|;>PW+>zEr#MtJYl{3UHQ*5`^(W zO3kvllC(oLA-V}WtyGz~6(I>bCUK>-KfC5yj}?-(BDplzctK`0*9qiGbIqjhW(%a4 zuT+|As%d=K7zK&eBL>QYxmFP>%{5rkoLJW4sY8#TDxwplR#P6WN0b%OB@?Yj*cH*G z5uK#DHo6U`<|G_3mtxeHsJT*GE+@Q>pB`6tDv=gOxEZz4cnS^d)j2f6U9C6Qo7r|s z2)H_BM7Z`!`?yn>2OS|1ZVmxKu$N6i)jpDpQ&0hy&p@f&isSMLs2N;7|1=aAeEw<1 zAq36U5HJrpLsXO%b7nMG!HMfU>I`wr!_G|lsk69i7y>RU@C41(jJt8o)lgT*HCID9 zlWVRGGwzn4xfbt51y-de5Q z>@;&v*R{mY`#f5oDc(m5nrmS{o~yZTpPXRFYJZf86?Ao_$*zQ*R;^5YMJQpQ+=!`M zrOB@GLef?wm+TrZ$gJ!-fn3S1p)QiSv1xO@(32A5Ak&G5^& zx;D%>8kb#70ke>6hKWL9~dK(3V6G=gh*Pqsjc`AVg{&XWH^ ze#0LM60OG#G!?3p*ICpTBwDKm712g@DxRbDxUwR;WTN#9w<5YUq7#+Z?vk_A&8ED@ zBPCIJZPb^J8`(C}3b?vc2^GiM>hk*9%6je;8rZ9IXoQzQ*E>x++lE&G zS4T*Qn@4#SaQQ@(VlbmZD&X>Ys2N;74K;(yXQ4SH1c3)hc{Sn?lJaT>n1x)!P>SF& zXC{`-D6dlE@u)Ks&G1}t0s9v02womR9=JX||LeO-=;U8Sk7@j}v8B$xUcFUYL= zI)PlNuc6?V=7&rZEl#vPkcax4T%uqbU!oU&ok@bI_J?=!C?{Hv+H(_K9XB8yH^7P3 zvzUr#qgoXwT1zPv(IpeDXSo&8r4gN|z7ppd)wXz~B&n}?Cg%dK?o>k6v37iH!d{(2 zwm#XY#rLe7w@3Hx4Y@0|gQdC(bZyt1NBP+xN_{s>_w95+DmVSr;6czKq8 zB#U|EnaP-f`kG_wq+qe2zM642L47p@%zHaCSyND74K*H%JawvR#&b=j#^W7cjxE3v zu+-xb8AW@h28%pHiM}C4o{4-csIP^+BBT16ZM7TDR+{=s*l9(}#P7aKP+wP`hx!^X zByB}enF!3sGTxxE}6ShUnTXGd$b-) zRYWrv4wHueLqU($v$~4tl8M%1?TYBqh&HLd##53>^;N*tol2-W=9zj3xH^Z%amo8~ zXAG0-t6;B=kkH;dl9+(YC!;wg`~ohYi{?;)1YAB9HG?b7L{0dEsJ>>F!vrEk_0@>Q za>!*A&LxY>ia9fTUnPsniaImut7I{YJLCx??p9Xd35UI!$v|e*SAkZ=6IA}^1^ zEdle$qfAk}w-eP@YQCb~sF}U55*56|%b~tXz%23%jZ{SS)kx#!O?$LSxL0P<#U}sTZ(4+N$sv_E`V8uPUl3-_faXf1m^k_ZRtvtFkk2Wd6 z#v{d~1S{a`P9>Bc)t0%8N7f0rI)_HMIX2@7xH@ITamlN52S~uLj*t*Hj|3~&%V(rH z1P}pNo{(mon+v#H2{L1^G#$;XB?$I%307%h#fjh&EPyj_Uy>|lA!o?dgblDc)DOvG z9&~1$f`8wZDJpo_<=6l#QNiL)xm)r4Q)hvfM;??cE-UiPNU(y%W+Ye%m`9!&KNgN3 zFa*pak2<^J?q)`Ul{l6nFY_6=5-^KALn9SIf;E%qg$=M~^065Sc9P?a66}*xca-e_ zSTtX05-ee-6)x8@DzIzMLxGJKlC~nbHo?XVGONH&AXf@(eDXf`=S-6qPIR>iwiFqK z6RpP&)B{%v>@3m?dbCy#Dx!_*RotWX__89pWTLgcR1sYo(TNIdj=5MoQW6zdGq}1_ z36)235&X%WLIZns4vlcl*sD{9X(pDsw<{B@^tmZm_ zTxqUzb=LR|*#ar%kkzi&S;AkOV*lrYMC%a)bv2ddI*a;(MC-XrMYK_cisxuOqO6E6 znP@$?t%xp-=tRx6yKXn_Y&!(vk&>vnQd?%!Mg?5msf5Z>tzBPsR_xpXZ@LYldGPAt7!a%~i11$P`q-W!jJL4%xI(0hdoeec+=0z~`Sirip^Rg63+*A%tD8 zhJabfHOz#ZulroI^_av}+E;DG3rSm%T$*dVAhVk51ahUh za=mZHCz+BKCtB|Zps{%_DX{vgE$IwWPP85|@^+HmF7B2(2i%4f~iA~C@YUP zDh2Y?q35<0(WMccthuf^o#Sj@O%QKDlbWl5t2>oYYa|!JJAAn#J5h68UbR;{*=9(B zy*gz?_S#Oj=@iD*5fb9&(Od<4`4m(UT$o>`{rIqjahddE2$#=4bI5iAzk=p!#vugF z)etZXxrUk05Hwdqz&z;8II(cjfFX`~*cqaN#ht0fV}X}PbCm*wM_$)Rk0fZWhJf{q zGRnnf+)enZEi>+BMspP!PdMz=Oxom{Ya_>&U&-RKB2UmL4reb(U;ZlxaO`&&_nDzDnw=;M0}-I?IpaDW#}S z>v>(}(?(@M!KbynR54v1)5!`f2J@Y4TPP-)FiC=~Ew3#*jchM}Nx-^m3Fo`&47H5= zX(eEtNn^mx_1bcADs|X6 z$ET$}a$%0SAe2K>kSrFoSVL|hh_R-Sh2UFmc9+|QX%^&II%v><%b7WMKx{!Cf2Mfm z0oXK?i|Q-_8>Wz128u$*<}qj}KMVS7aetmG(C+uf=h-?fh)1dA z+12%IUy(&UcIsWR^?Fu$w*Fk?*?1}C%Cqs349l|<(3LzJ*H7mDoH3qaPFbBtkXFR< z8=)xEdI&-NSuP>Gl4nJEmS+zwDpX9Hm9jX~dWcyuT{hEt+FLPQ9@9zkEY!VjE#sS- z^?0x(%d@pcb2+0BCjjfNCDbHqtF`6KDyjgiGie08(p;@&o!SV%I&nn6>$UZ!opH`2 z0P8r3fDJVso0(E1;!plzLEsfk9P)9C12b*N6fmEb=8z`01f3LF3;9XA(s|{bsmF;B8AJdrn)~a&zed| zeA}!kuM_0i6@=hY@fZ{~&UPRhc2^2Vw;_2}$j=QPgN6ngf;`)9HkWM!Jo6Y_YZ@79 z2)k$L)FuP@S&(OoNB4Yrc6@$u=JvDsA9}yk3hhcgqe4sIX;sa7BdbE&h>2mPom^0l zmy)(F`8LqTOERp`PC!=*?OathenZB1iaBMa(3Yvta-Y^Cc^Z~f3hgZJi~6+I6)L99 zs#)Bp^-Ql~x@@Mk@>DTh9@9w*ZKHGS*vA>CPVrz#R%o%IYB}542opoT09bb|ku2Fb zwpY4q`4edXtTSl@Y-84xb>1XUp%X_0yx#4uI2rd63&1)~Lf|~-7)Ttm$!V^=aDv5V z6j}k8PfaO#WSu|?z+4^5qtFV#T%m0katp4|8bfBmXDnUt=%e|6#HHbxI$~npSeP7iVd#Nnu=~gp*0kPfb55_no&v%Zv7qg{&0VdZJG@lw*(C7(tcFUhb*I{{s3v~dY`?#~(HDdv=w zMmtL<dNwQVT*Mp4HZu)MD({XuudEiaJ#;~-drjStm7mE&ZW@` z9CL|?LNTl2DFB<%Xa!&<5cvidZ#+IX&7&>|77H4!A-51TT2sh+To-wqp%@W%(HaVC zLmI8rf;|3A@yr9z6dNo88>Wz12%5_Hf<|kolM*yqQ^@*2y(m)rj8r)33mUB>C3qcj5Gv|7Ra4;@orGqMQex+L8C41&+|1}$L@?C zwXDsaJsi3jm&@VJsg>GhE#q!l0#B=M)|ay?waYP4tURSQUP{`!GGIPQfhOZ<`xf@B&D`yudF&tcK$v*QK_YE9a&XG!D5|B!?|@XrB(pei6a8e zb7GzVtm7mC&NKfNfSFLF7&gE$(}_$0GnvQ~uoGV9)G5I<^gDmXC8s3kV^|eL8&#wGgoSBhB7GMO=~J4ai!K& z-Y}%p3Xvl0rgiGXbm8bWq|{0_OEG99BZ*3FbGcqT*9l5(dxicM=b86|riNYk8m`(~ zAU5h#ibwZ+rPdo}{I)P8`_%Gm=EDvMJguZzU&$)Zt~?icHeO2Fy5y5*<0ToEXD6U5 zd3J^v%P(b1GMs5WY^5Yy$+PCRcXFonFg`cal{_oTvz%!?t*MwcD`jz}waQX4T{hEt z+FLPQ9@9zkY@@wqA9pg&o8rNeB+oYT$N&Pc?pmVJ{2C6VT`z92&ZH4=p2H3Vi*@3N zfDLi1<0J&mwUJh^n9WRc?THhBxi~~Io>hbsfX!$_0x+MJ<`HlNU@p%Z3q3u~jr_up z!*O}GVJP^djkIRM+K@aewIGi_Q#|tkG{rNEKw~Y)LeNyw5aijlF8$3vAJj{IOd4u* zJNO=}j3?&^zQN^LQ*3Z~)>PgwB+p80@Gj6$7BwW#N;a1kgQ7f(BMCB|PcPZbVz7qq z7Ff=D*nx!1`$0n)N!mzTcnCUIo^9FvjOhdJP@X(X;Athz`f65rcJ;Z)v++{W)+L`j z8!ySQJUanh$+KL8o$*Pw?wB*JhpjXrsN`95@+@as&!KZOUCFbeJjHB%1dI8+)JM)gWDNY6 zPfPO%3xdUxJZr`+q;n1oA+z9X7>W@=o~7j+11@Jso|RgV$Dg6VuJZsi#WRaQV=c%+ zFqa@H@myLA^4+ryL*1Vtc~)RUl4s3Cw;_2}vYB^*hO($3c~-KS$DpB%B*?S2-R?Fs ze&?cOGmAmw&~DAiDEvyuJO&N1A<46a{dvATdv;}g>51F_>i)|;_sscnws8WIXn9gC zfv1%>>uXu1+O_8*)y7LnTbF!NZM-DIQtbqECDqOlX8EOz@f35)>PXsI!mN3w^^l(C zOSwexN~#s5TAn?$z)&%5R@UN7>)~d_blFVnDR9Mfc}yoswf;9-XPh;}gC$9-t*tkg zovhM}0Ia)~P@k+hODoF;fORH~fV;=*t7{omYr$fjI3nOY^Hc#?$BA)ZHcO>Q#Gm{F zu)r&rP~_tl2j+8BAGxr_e2QwQ@wilLEcEo2gvc*CP1;dam<+y?HrHVwf-4JBZD(cG zUdnhjwuD?-_|3@%wsUmtNju( zkHO>P^_8WJTRSCW9)nK1y}oV$nfHT+^0Oe-7SE#drP`i7%6QTNxGhhgCGfPGX1$qJ zpKZpZu<{O~jhB+PF8TD?cu9u!*$L=MpXJivj8C$SFFDh?&!k=_mugrYL@TO>oM}CY z&dqeC&!%KrkEtrA&1zZPr}aFqV!CXm^_aV2x;&6{Rx+No77y>hVx37N;5=tD2*5gVM8KV9_DPcftm7mE&b5_R0A^FuT)W}~ zU_LXY7|$yF3c!3~Y6zImOY`Wng2h~)Z5VP3VJodEWFCCW4f zk3Um9^8hr(28+OkDP$IcrjmxB&*nL*QfNW0&zkD~3~i;AY-TZNDsLFtN-NpSyFf!( z)X-L1$>!2xP}oY_ZMK`uj2m7hn^_EE&9B|DGp>J1$h;pkls5!@ws;nuug{LW!Fje` z3k;N}&k}fAO|!n9Ri9mdF8XY|l(copr_aVqGOW)|Kv(+g3^kTt${0^Er>yqRmbrhH z`?MZI&?G6B5?<-EqCU%+)~Z6qv{@~SGp)y%71L!it>?WJ)8#RpsL$q^`o@DLNuSL% zTNi+J*Aj}7>W%2E--j#!>r5I4CWSWts3V|4Cyof%5XU-BLf~BbtUv{yno=lcl~Dy? zrVjbI#X05^Qy;l-S<+_>A+zAib-uL3h7^4@6VYc#pOtLp z@nWtiXn#&l-wuL;9>_Gmk+-UMJ|Yv}4pj4=C)P zHN`WF!CYUPCh^QWK~rq77_7Bx&CXIreO9uW#bAwg-P;C`c|T}~4N0FZ+*{4nXAd2_ zm#L$rR8g8dtH9GrnvGgUdA3oDDPg5;pPeWrZC!H7vlAtmm1ifRD|wb{urof%7*8>$ ztmN4e#QNR>Q0i~FKJt*12=(?+E%!Kby#QZZdN(|X8VFhXQQ?z-b=MMVl9)fzOd)?F4J_7~bP_n@$9!4>)^QR7=aFY6U_LXY zP&B|XpO_i~=JQfRzJiZ=83 zGsQCxz#Q_dXfumIV=c%+FpoSd+APFi?YMoM?Yki*WHa)th|FWqP(tFz8#D}gogmMe zvYB^*hO(%c?XzMF$}wmlBZ=E*I~^0qECy@sW~aHHO`a9m;4x@w*u}oAFOR@JW%FEl z_Q|PZkFpIJ5z*!8vjm=2(`?kU>a+Ej6jq)-8!shoUGnL(@sbSdvlGyjK08B=<(D$X zQ_LwVeRh^cXr5_3iKhO&(r0IJU(~1dyryE>td_;|v>sztOqb2Hp7&Nvm&bIXK8r7w zz@PkSDM_Dg)VtaB*?1HNz`AP*#V2?PO%)1TtTSl@yj*X0+S!hLYzP+X#1R48wXV}G z&asY@5IC1UD_G2@rWA@b4?t5qvj{ZSf-D4c>9Z2grNyA2&l>9f%xs^PdJ{pP zHRN@M^jV<=&1|0)+2AplN3E7@<}qj}BMJKKal?suV*-gTUdg~i6=!j&^zka^R$Zof5h z`WVTn--oe>^kduor|!V(pF920!s24>Eq_c>4^IP{xV~_>{cwN5ze}ag#f6vXqc^s8 z4kAHz>XDgGXfs-m?j1haIM^0#&=-&Py`I}~QEAE2@UDk$XW$LJ-%(iin598M54XN5n;V|zHq+dLP5J3`Ht;&u78h3T z)RyivR%^98je4^NPo@@nbm8=^C+_If8aktq+dmnyN^bV-;c%W81UDURTwK6u>=9af z+Ha`1&GBFW-?zp?XJ8FaonFs6_Ih3VC8_v`V|m1wT-pJ29EYYz{W9=PIWei(CIlBr(XXmBY)G)@VM{#{rMD5sy3Z^W*(Wm?Fs`NZ8=Zf&b&S~jX&-= zqf2jaR@|cff!iNBgMEz8vSxQq(9!C zo^`OZZyopSlOaZ=1MAZ5FE!2z8gL8?&M!uf`rCtnhasby@9Eh~imq>_!-n8b>;baj z^yJ7GJjTs!Z-_=VZ9Vc$NxT5LG*W&OjjBaw(*zC%JLtkK?)pmRC=qj8( zDd!EcnzbGt@tr9tqLfVqj-5^?!=qjM3RC8zCp&xV(AE|n+HZP;a56RF6v2Ev{8l@Y zrMmq&rEcU3*4cHvJ9c~Bz43XQx-eeVrMs&o6uOTuLP82U-$9<{WkRmV;|a}I9&Q`9 z71H8=fHSC4=Q_hInM6kiAKWK91C=_*8JZhq5L|{c>>XOmR?8XC5ENQx=gcyhC-x4P zTl>#HQAEW)SLX=NSc2Wz&Q~IrS|o4!*i?wt2pa)vFXk z1j8}lmpV5B@=cHuBS4ip$Nx7P;kv7tp|L9TIeWh%oD9u|v{b-x*nYc`B$=OAE7L0qSh)!QsQ* z#fAG$=gfON=s`4GI30~H{`8eshTeG4aqe8=w$rcQ@dhWa(2pl{?w^dM?SM=DuKG?O7^vtJo}n5d zPoeiMSjh;)SUuyAhN^nccBzlmz1EDrW-533%+uq>s^^0huGp@3SvW4IFbq_YAr`JD z1|L0t-(QaA(+?Y{Sp;REN^iO6?llGnxvJzpY@|vWs(6*Kkq0Xk=Qi!r%u}oAc@q_j zqZz5&zIQRc$Xzq_w4r(hSjB7Q_6s;+@UV$Gg;0g7L^~*RwGlmNpejC0;cBQo2DI$g zb4K}c!~}wYicR4auHk_*#8=okTi#{9_KH1kpmq~zrt0=MU$zKrd3<56UW8S+R=#|& zfsJqjcPQ_1nm1#cgfLLQX+T4jByGq(S9(;gWa66@Lors>2~1!FP(>^}VRl5lU1NEE2Gg-rY4jMCP#u#)$zdv`nu6+~; z({F&>NBujO_S4iV?qrck6qqPdFM>oeF|8S3%WGhKxJok5_83rVd3`x8=+QQ|hF%>w zovTjIxl3yu>1VLouxX6^u9}RP)KaPIxo1ChPcX8fEvh-H7(H&Fc5$#A6{E$Kv+ZAhCsrPq$^KPKFO_72O3iNc zLP->nadv$x02i)iOtpPrX6%kMmd0-P5C2R>=z1zb{q+dhOuFWDt&x|B*8njssd%%0 zHV3RroHABjw}L*?qE0g_UTRb8bD*cz9GI8ldZw7-c&SZo%rW($t(E^NI>QUISqyJW z?~zMO^K6R5az-7!pG&VdC|!S!X%jH18JpMDkOhJGK1~_fcA<3n`Ic#j)OOA5Ww8A< zkk6;h(ii3!rEkm7lJmM5y+p;DanHHL`+siFiqFsIxkb3{mby1tn%A2|V?Ji0zqv@? zfXV)B`t*%7l1*>lyq?5gK$vP!`Y`3dA$UHulg;ZaCUkd3nYxNjB3LMxP1rP4S{s+= zbrdo6oLLxLvy{+3+rCMd)Yi@G8$vxj(KZP6sVpNwKeeYV&+7;#wQFWvD74QujiIFG zZC{$M=jCAyPAWFD&>dlfqIQs`G*O|XwryTM_HFZp=qcOu zxZP^uyp2@G1u&_No0p4y<0d+UX#)LQvUD0EXlj$^rDq>qORucG!wYGGCcHUAP|r)( zzI}m`JJsNR|CYrYHBMUkR_0~unCwSl?3968kqfli*&I$orM7WiUW@@lhMQsHyaB=# zP-+7yF=7k(%X9u%t;2(zz56X|&V2;-=dBS=bT}FQ#fvZOKYFr#uzBzP8+#iMx8JC} zw(!6^cV2mPjP)GHqSJR!dU(&)c59RFIXrcT)==%Bw&>l+p@)*msLu+)37wmBsh}CnB@uq!md~$;4+`fgww{X$1M((+DCtjkms{Yynz58#s zd(JDn_JyCHCXK=^Q%0e5_oNSadSl-S&R(N8{AuH;)pL&>b%o9xBjA{oIE##I8Q?Gk zZc78U44fghiu>!a)9m1S+>kSz4@dQOtaGpLVvB(Vbh4=Hp#d<6i=c+Qu%*`)HhP!# z)zErG-ZfceT$D?~?C65{wg%%qz5EXq&}SZ@C*t+t@u-EE)Xj}WKV+HqGm-d-6zQAXLE}ihg?O%RvLCs2Vg2KLc35)zA zKj{1mRvp|sr#fH`OQ4pA!#!xP+R#FMh{{v<81r5&U#I*1_zk~*6Fbu=qb_Um=^owtE7p{O8^+iJblK;InuZ1H0khXfh_<}w!^0kGR z9=Em+_75K2+u7ZI>1fx(7JIw|?w|R0bm*MZfKc^9*6zmM{WtDD-o3wZu(PpewI1J9 zpX_ZvK0MgiML(tcmOHeph7RV{q*CtOp#X}ZZhmch^8rVU1Flp(7IIJ3V^N1%^;q#S zSk+_2dcLa1(gTwE?@EuA)Jx3mi?%lQc3N|~jn%5#sJe}6qVq;I(TPvis)^3;{zNCa z+c>i!>g-_m)5z`hFlToL!bIl&_Q6AG789RytVx~6*T$zd&MAN8?z2w^bnND&G=n+X z7S6_pM4`?LupyE`s=%#Q*M$<~;8)D!X`M{zGy$09(OKv2xurm@6UQL|Yowm(;s}P* z6Xz7)AYh$C_vkw35b7b`;D&2DLcfiTUcemUL<_Ee(2QBl8l2t?0gan%kB=<}lW@x! zTsoNC4@OQPqPRG#x9#+YU3(0hRn^9H&cvmIGcv)<39g@vxFt$Hd-lI)>SvR7^l&%W zqsraIfqPIL-NCtE;{G6pgzGT%#K8@AZ{!GNLjc%0KZm(?pS2jSB^DdDldGPdC}okv zwJy%U2SsQ)g+3mt=GjBbKqWfEm4V}SPDd7gqiUSl{r(+mZ#=rjFD*C(oFej-Mcmf! zTRW$aNgo8tn$=g&Kl>DC4N_@Vh>aFHaV~Kb$0T~Zeo8`(lsGtL8Z9mt8y1{U`8qky zsfS70F8TTxikYw4!GpL@pjT46NGM?aU1Kh(6O$o@n)SkuY~Mc=jo|*HrN&&Vi4C_4*ujZt|uCd2aG1 zR!*qm&^_LHAqn#r`|xQ6Nz+>t{oLkQ`N0g#=(KP zIO>=q)rmA*sj3Z-bl>T<+XEYCr_Yk(RA07Dr<&tSF%V67Hg-c=i)a24~EG zB#TGSeu4q|(0TSVyKDP~)365PlL6HL6SJUlQ~{ed7&wDx|Bi}}u^fmua2)HYYrko8 zo77auU;bC@#Er(VXY&o*zzxC*H!4X}vR=5Qz`>$-zw4qj#p|iv!9Y`QE$HAqRY%@i zfVsyxZo_VXk^7W4Ax2^|%12%OjRxQ!jj3%2D5B=N7&~B$zHW-P8^AuWT%XiVwStX&KDapHzh9q@FBJqwf?`BmDt z;B#f4jHT;f>JU_@8YHQD*xKSB&FaUvS{o8(Licv|=C29emHM=5E>z8hs<}`#7pmq$ zJcIwvZzb5bT?lDCjO9nx2L2hJ;UB5{IN08sw-If#>OHC*1=Ws%YDdAu_U~#(!SC~q zf;pR_A3WYm+7un%POx3|997Rz^&C~tQS}^e)F%WiTFw{V68fE=cg)?wymPp*E51w< z>o@8(sozj*FpueFO_%h+NogC3n|h}>T!gu%r2y;MzgZsM>^Z0HHc*sF$UetgZmz!& z19`dYob+4^JJYbzVBsZCY;l4f-|>3b(uJ2EtRm01qSZ|@~aN#|+;-aWv zjNt~!s&LH(b=I$Osy8UH;1XMDAxxK-3LUozzLmVHzsfeHV$PWswkv?8Xuwl%>gg>MT5x%Bi>V2HDDO85|g*O*Vk&r5QNWs&okIS zMm~*na!yL~B->b7kxYQ3jm5KbkVuWJo~30K)JUzWxN{a&=B%jzpWf>VC=liw$=tn4{hQlhNkzepOwa?`O&aMz{f zlytZIODxh_2-XhnyYN`}GB&l6N4vJPoD(g%oFgZ2gVe^e!T3aClGa-$3K@3BVi}+u zOB_fc*eR+O6vcNmV|^FSB%!`bTB7lHq6zKhzcJcwyVA8;t1r9uQ(LYdEx;htP?U3K zVhb>xug_e8nYjeBgOm?^mFuuzk2#SmNNE3Q1KSF=TiY|Yqt)wDmsTyoR7)_`5=^xO zQ!T;p9RB-1720}yIA`glzEt%Zm4H?WXqA9g322po=ATEi_vqls_WijM+H%!%R6R%4 zb5uP?)pPv8^c?EdNw<$zC&Oa^9=hEgUPN}gF1=wIJAiEe(eAvXWa{DxWLw_(D|cOA zOq^7ku?BO9x4iK!AIH#@F9z4nHC~3f_HYc{o6za3E;RbH;2eNwA6(*?#dGiSs&i`f z#%-%jko4Q4bvAnT0oFiQKki@6cm*bA?fBgL;?tgc2~FG^UU#lP|6v!!oOpOC0|y&=mng^yi*(Kx zAsAB)ue$b|u+;thhh(2`C*I1qvhaSycyRssx4JOHwNXc+!#9YkNNBMN5ee}sS=Y{G z|MMS?2G@P(Byn*EfFrx}Ch4DH{ju#{y-X9U+J$#bDkfD;FX&uqCc$mUu&R@4D8FJO z5D-=B+CjTs+Fc0u0K%IzLFw`$(AVtC;k9E$JEvWsrU!o~F!c&3NE_V9~$#wTMm#^qIe99jt%MC&-8f158=LDIfEu+Pw_ zemkjp`RgB_e~X!myC=dQMnBQ z;)GU7&W2Z5o9sJp!fdz_IY>ufl-{Djy>})cX+>bN-Emv2-TjrSo_kHKT#vu_^r{1< zLNm@_9u_s@1zSV3Jlt+9zf`mD;eZkQ5>aXe#|yxM>GwRaLgSo#@s1?QgK+x{m%vt^ zKM9BU8cy2q(4u&w=JHHHKqG8XJwSbM>}P+Fu>8aClb3%subsgc-?Xs&MZo6)GPQ!R z;G$N5@Ge@qyMuRZgwsT^cJVqY$~mAFpNHOHc;*V%@Y2W^KO$z(0K#P~_-tJvHib)| zcFUoxMoqVM?K)q4Q@9K4(lG;9oogiQp(E6}4)XR~r!B1; zfvGRPF}@HV16OyENrlpAkw=kbTjV%mrRdm!ePkk>DMAQI@7g?8`H?a;mU+;N_8noJ zXaCW`;p6+_LQni4&^jH!mi{2ngGV@&XYOoHJj`IDV-G)n7oG9I8>4cQxd7yBbR6`X z1Lp+C?4bXpY>uO_pQ@9Qdz~?kWA(7E*u!23tbWqVrF08kyR-Y~SZJ%n!1?Wu9ea!y z9(%ZqV|+h`y_FRHsmf!|u$tWLHn^7;Y(|eo#+orCAZ5sBZ_5LBD*ayIkLs0AoU6oovo#Y5tCoIEa{%?P*jsWTm z?EbiCJ^Q~H&IFA7_Q#*Ui$!vDSU5BJOJfYNwB@ zi^4h&V3z-`C~bYvCZI>g9u_d``uif#qjs@7#BV_CiGa24wT;T*GMr+Bs(2Upb&S50 zD%o={hG+n=MG&unR?nh;!QlL2Sjb)^)XG%`K5(V-@E*hlO zv~GTbXMT=f@h<@1vG9Mty8V0W=4U<@O8gjjg#A9<{&RdB8glzB>*ixCZVP?FY@rW7 zQP2J6_B*$K2dEEk-^TCnFRIVU?Ay0dj}I+;{2rA|R?>}x{f>3}w>Q6nxu4v=Lyw`- zAL9DQJlnyiZ~jGLe+VP!M#au6>X&!%%+GG$z4?UkLXQc&psWv3UDW30BUPtw<9GZP zGV~i&3DBiJ|CmU7Up@4x|3R!aw|_%KQ>{bGQ2!5ZK9h(+2~=zF@Sfs<9s^e@q*f6ppRck&8@FM0;ejP@srEj09Js4=_(2E7dn(2Bo8 zvwZvZyZD&6{WK)weU$lgRXarlaq}T~iy3nBOKvlg$<04dgMy2n6SWgXFvIEgRE9He zi?xOFtiOg=f4XR?3V&juMyMiazxg$BuXwoqF5K-K)TnTI`Ut-B8(ry-Z$3g01%7DV z{15z0aYV8A5$^jX;NZ-EOAm#?cKa^e{X^XOD-|=!&ELk&6j2B*A{r0j|L~6rO5zhV z{sN!Vb=4vvKR(rTFRLqfyoIm&EfAP_`yEa`^7PF=QFId*C_rTn7z4{uRXnbIAu8xM z$`b-ZZ$4$MLwGq`XR_Txmcv}4jET`e{(|;W(fI!D-+{X0;Hdp|>sJ_2Tt z(@=$=ZmJyxDlh_4u|p4_8Hsah!r-y@;04NpATvqv$=D!B&W0Zsv$6`c#3!iGWSjhw zk|4D-@){cJW4I7LfUm%=59n8F-l>ii8~M2$J3dP4EVO6NTvy6nm5>h&@FrwcjT<@A3P|asENKqJO`ts>=6%zoybT ze*ez@d;1^d-LF{?Z`u691#C@-}#sTr1#&`F9q!EZ9T$^B=ba(M)fL5)xT9=Ww}{x?W(qR{lRSQf`~rr zODZ3~ez37KcNw`s-%%OL;A+*5W_2{N4OHyg?~|PV&$r*a{XV9vN?o@wr&O{7uKB_d zBzMdYLmW&L)fXk-{3|I#aWNfF#KiR5?}Ym3&wMOQ3Vkv0`$|`gj3A9%N#Bv?6&4=T z&;LZr=YWHJ4x#pwTR>syHYNHL*~$AoJ3oHHcH|V$*d3}VI4k2MY%Mn zCa_9iAR!)NJDyO~yaH-IgU~ihOXsA#4FFj~4{3oEi&?lY@%;)#{D2g<&uC&##fLOP z7*+aJ%%~)GCKU6JZokiKDJtf016eVjsuq!;EdCTfeJ{|;@o=b>zYp?11^E!^6nBzV z{%g|4m{yJl6SVRlpq<~pAxTCx;$#sdflRt6X*hGt4%Fk&uZXpX`P=Wq$KYR75TtQh z5BLRX&R9s%%@Whb(R^5n`iSoH)#qP;b?fFI@HvVhvfy;!2XLWA{+G~fbp(+@t~~m$ zA?`vsSAxqoC?M2Y6|qbnLCT}Apwc3Q66n>6Rah!+C+$~B#J(I%3qL<6(}9IYxGRtZ z`A<|y{4dhNQPUq$Rq(X0(5vG9J1huSqX0@y>#qUfa)K_Ny%iMalm0_3@fqBO;_*`$ zilqkPm(SU^+8YB5y^36kUf3H(kg&{&#@Ek_9vLJv+? z61G9{MZ3R8e(~PT2l$Z|K>Td-8L9Pw$)FPklg5U6kWipo?DCz4DScEGDEaO@IOMo_H*bbsGM2};)YKv*ec+2E7-d`hYudl-}2WGzlyIqFrqpzqB=05 ZIxwO-FoLJ)-`fKtUbVI#-Fxwc{|`tO3o8Hs From 0339d4e1a558218cd9819aec96d209392bf1a67a Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sun, 25 May 2014 20:21:02 +0000 Subject: [PATCH 059/232] [ROSTESTS] disable some tests on x64, since they don't build. Disable some exports from dllexport_test on non-x86 build, since decorations are x86 specific. svn path=/trunk/; revision=63453 --- rostests/apitests/CMakeLists.txt | 2 ++ rostests/apitests/crt/CMakeLists.txt | 4 ++- rostests/tests/dllexport/dllexport_test.c | 10 +++++-- .../tests/dllexport/dllexport_test_dll1.spec | 26 +++++++++---------- .../tests/dllexport/dllexport_test_dll2.spec | 2 +- rostests/winetests/CMakeLists.txt | 2 ++ 6 files changed, 29 insertions(+), 17 deletions(-) diff --git a/rostests/apitests/CMakeLists.txt b/rostests/apitests/CMakeLists.txt index b5837c2f2fd..45f4c60282a 100644 --- a/rostests/apitests/CMakeLists.txt +++ b/rostests/apitests/CMakeLists.txt @@ -9,7 +9,9 @@ add_subdirectory(com) add_subdirectory(crt) add_subdirectory(dciman32) add_subdirectory(gdi32) +if(NOT ARCH STREQUAL "amd64") add_subdirectory(kernel32) +endif() add_subdirectory(msvcrt) add_subdirectory(ntdll) add_subdirectory(powrprof) diff --git a/rostests/apitests/crt/CMakeLists.txt b/rostests/apitests/crt/CMakeLists.txt index 1f8f82662ad..1e77201d9a0 100644 --- a/rostests/apitests/crt/CMakeLists.txt +++ b/rostests/apitests/crt/CMakeLists.txt @@ -1,4 +1,6 @@ include(ntdll_crt_apitest.cmake) -include(crtdll_crt_apitest.cmake) include(msvcrt_crt_apitest.cmake) +if(NOT ARCH STREQUAL "amd64") + include(crtdll_crt_apitest.cmake) +endif() diff --git a/rostests/tests/dllexport/dllexport_test.c b/rostests/tests/dllexport/dllexport_test.c index 4f8922aaae3..84f03fc55a2 100644 --- a/rostests/tests/dllexport/dllexport_test.c +++ b/rostests/tests/dllexport/dllexport_test.c @@ -58,27 +58,33 @@ int main(int argc, char *argv[]) ok_int(StdcallFunc1(str), 0x11); ok_int(StdcallFunc2(str), 0x11); ok_int(StdcallFunc3(str), 0x10011); +#ifdef _M_IX86 ok_int(StdcallFunc4(str), 0x21); +#endif ok_int(StdcallFunc5(str), 0x10021); +#ifdef _M_IX86 ok_int(DecoratedStdcallFunc1(str), 0x21); ok_int(DecoratedStdcallFunc2(str), 0x11); //ok_int(DecoratedStdcallFunc3(str), 11); ok_int(DecoratedStdcallFunc4(str), 0x21); ok_int(DecoratedStdcallFunc5(str), 0x10021); - +#endif ok_int(FastcallFunc0(), 0x30); ok_int(FastcallFunc1(str), 0x31); ok_int(FastcallFunc2(str), 0x31); ok_int(FastcallFunc3(str), 0x10031); +#ifdef _M_IX86 ok_int(FastcallFunc4(str), 0x42); ok_int(FastcallFunc5(str), 0x10041); +#endif +#ifdef _M_IX86 ok_int(DecoratedFastcallFunc1(str), 0x42); ok_int(DecoratedFastcallFunc2(str), 0x31); //ok_int(DecoratedFastcallFunc3(str), 11); ok_int(DecoratedFastcallFunc4(str), 0x42); ok_int(DecoratedFastcallFunc5(str), 0x10041); - +#endif ok_int(DataItem1, 0x51); ok_int(DataItem2, 0x51); ok_int(DataItem3, 0x10051); diff --git a/rostests/tests/dllexport/dllexport_test_dll1.spec b/rostests/tests/dllexport/dllexport_test_dll1.spec index a6f4860d52e..2a8d06cd340 100644 --- a/rostests/tests/dllexport/dllexport_test_dll1.spec +++ b/rostests/tests/dllexport/dllexport_test_dll1.spec @@ -13,35 +13,35 @@ # Decorated export of a stdcall function @ stdcall _StdcallFunc1@4(ptr) - @ stdcall _DecoratedStdcallFunc1@4(ptr) + @ stdcall -arch=i386 _DecoratedStdcallFunc1@4(ptr) # Redirected stdcall function @ stdcall StdcallFunc2(ptr) StdcallFunc1 @ stdcall StdcallFunc3(ptr) dllexport_test_dll2.StdcallFunc1 - @ stdcall StdcallFunc4(ptr) _DecoratedStdcallFunc1@4 + @ stdcall -arch=i386 StdcallFunc4(ptr) _DecoratedStdcallFunc1@4 @ stdcall StdcallFunc5(ptr) dllexport_test_dll2._DecoratedStdcallFunc1@4 - @ stdcall _DecoratedStdcallFunc2@4(ptr) StdcallFunc1 -; @ stdcall _DecoratedStdcallFunc3@4(ptr) dllexport_test_dll2.StdcallFunc1 # This doesn't work with MSVC! - @ stdcall _DecoratedStdcallFunc4@4(ptr) _DecoratedStdcallFunc1@4 - @ stdcall _DecoratedStdcallFunc5@4(ptr) dllexport_test_dll2._DecoratedStdcallFunc1@4 + @ stdcall -arch=i386 _DecoratedStdcallFunc2@4(ptr) StdcallFunc1 +; @ stdcall -arch=i386 _DecoratedStdcallFunc3@4(ptr) dllexport_test_dll2.StdcallFunc1 # This doesn't work with MSVC! + @ stdcall -arch=i386 _DecoratedStdcallFunc4@4(ptr) _DecoratedStdcallFunc1@4 + @ stdcall -arch=i386 _DecoratedStdcallFunc5@4(ptr) dllexport_test_dll2._DecoratedStdcallFunc1@4 # Normal export of a fastcall function @ fastcall FastcallFunc0() @ fastcall FastcallFunc1(ptr) # Decorated export of a fastcall function - @ fastcall @DecoratedFastcallFunc1@4(ptr) + @ fastcall -arch=i386 @DecoratedFastcallFunc1@4(ptr) # Redirected fastcall function @ fastcall FastcallFunc2(ptr) FastcallFunc1 @ fastcall FastcallFunc3(ptr) dllexport_test_dll2.FastcallFunc1 - @ fastcall FastcallFunc4(ptr) @DecoratedFastcallFunc1@4 - @ fastcall FastcallFunc5(ptr) dllexport_test_dll2.@DecoratedFastcallFunc1@4 + @ fastcall -arch=i386 FastcallFunc4(ptr) @DecoratedFastcallFunc1@4 + @ fastcall -arch=i386 FastcallFunc5(ptr) dllexport_test_dll2.@DecoratedFastcallFunc1@4 - @ fastcall @DecoratedFastcallFunc2@4(ptr) FastcallFunc1 -; @ fastcall @DecoratedFastcallFunc3@4(ptr) dllexport_test_dll2.FastcallFunc1 # This doesn't work with MSVC! - @ fastcall @DecoratedFastcallFunc4@4(ptr) @DecoratedFastcallFunc1@4 - @ fastcall @DecoratedFastcallFunc5@4(ptr) dllexport_test_dll2.@DecoratedFastcallFunc1@4 + @ fastcall -arch=i386 @DecoratedFastcallFunc2@4(ptr) FastcallFunc1 +; @ fastcall -arch=i386 @DecoratedFastcallFunc3@4(ptr) dllexport_test_dll2.FastcallFunc1 # This doesn't work with MSVC! + @ fastcall -arch=i386 @DecoratedFastcallFunc4@4(ptr) @DecoratedFastcallFunc1@4 + @ fastcall -arch=i386 @DecoratedFastcallFunc5@4(ptr) dllexport_test_dll2.@DecoratedFastcallFunc1@4 # Normal export of data @ extern DataItem1 diff --git a/rostests/tests/dllexport/dllexport_test_dll2.spec b/rostests/tests/dllexport/dllexport_test_dll2.spec index 28e147ac278..944c7bbdbfc 100644 --- a/rostests/tests/dllexport/dllexport_test_dll2.spec +++ b/rostests/tests/dllexport/dllexport_test_dll2.spec @@ -15,7 +15,7 @@ @ fastcall FastcallFunc1(ptr) # Decorated export of a fastcall function - @ fastcall @DecoratedFastcallFunc1@4(ptr) + @ fastcall -arch=i386 @DecoratedFastcallFunc1@4(ptr) # Normal export of data @ extern DataItem1 diff --git a/rostests/winetests/CMakeLists.txt b/rostests/winetests/CMakeLists.txt index f6ad83289a8..90fa6faa4e8 100644 --- a/rostests/winetests/CMakeLists.txt +++ b/rostests/winetests/CMakeLists.txt @@ -77,7 +77,9 @@ add_subdirectory(rasapi32) add_subdirectory(regedit) add_subdirectory(riched20) add_subdirectory(riched32) +if(NOT ARCH STREQUAL "amd64") add_subdirectory(rpcrt4) +endif() add_subdirectory(rsaenh) add_subdirectory(schannel) add_subdirectory(scrrun) From 8c89bad6d0f2eb00b6c0bfcdeda9a769acd3da82 Mon Sep 17 00:00:00 2001 From: James Tabor Date: Sun, 25 May 2014 21:30:52 +0000 Subject: [PATCH 060/232] [Win32k] - Code cleanup. svn path=/trunk/; revision=63454 --- reactos/win32ss/user/ntuser/winpos.c | 63 ++++++++-------------------- 1 file changed, 18 insertions(+), 45 deletions(-) diff --git a/reactos/win32ss/user/ntuser/winpos.c b/reactos/win32ss/user/ntuser/winpos.c index f11f57c6553..a628f563958 100644 --- a/reactos/win32ss/user/ntuser/winpos.c +++ b/reactos/win32ss/user/ntuser/winpos.c @@ -198,7 +198,7 @@ PWND FASTCALL IntGetLastTopMostWindow(VOID) } // -// This helps with bug 6751 forcing modal dialog active when another app is minimized or closed. +// This helps with CORE-6129 forcing modal dialog active when another app is minimized or closed. // BOOL FASTCALL ActivateOtherWindowMin(PWND Wnd) { @@ -1212,12 +1212,9 @@ co_WinPosDoNCCALCSize(PWND Window, PWINDOWPOS WinPos, RECTL* WindowRect, RECTL* Parent = Window->spwndParent; if (0 != (Window->style & WS_CHILD) && Parent) { - RECTL_vOffsetRect(&(params.rgrc[0]), - Parent->rcClient.left, - - Parent->rcClient.top); - RECTL_vOffsetRect(&(params.rgrc[1]), - Parent->rcClient.left, - - Parent->rcClient.top); - RECTL_vOffsetRect(&(params.rgrc[2]), - Parent->rcClient.left, - - Parent->rcClient.top); + RECTL_vOffsetRect(&(params.rgrc[0]), - Parent->rcClient.left, - Parent->rcClient.top); + RECTL_vOffsetRect(&(params.rgrc[1]), - Parent->rcClient.left, - Parent->rcClient.top); + RECTL_vOffsetRect(&(params.rgrc[2]), - Parent->rcClient.left, - Parent->rcClient.top); } params.lppos = &winposCopy; @@ -1232,8 +1229,7 @@ co_WinPosDoNCCALCSize(PWND Window, PWINDOWPOS WinPos, RECTL* WindowRect, RECTL* *ClientRect = params.rgrc[0]; // First rectangle contains the coordinates of the new client rectangle resulting from the move or resize if ((Window->style & WS_CHILD) && Parent) { - RECTL_vOffsetRect(ClientRect, Parent->rcClient.left, - Parent->rcClient.top); + RECTL_vOffsetRect(ClientRect, Parent->rcClient.left, Parent->rcClient.top); } FixClientRect(ClientRect, WindowRect); } @@ -1244,16 +1240,14 @@ co_WinPosDoNCCALCSize(PWND Window, PWINDOWPOS WinPos, RECTL* WindowRect, RECTL* WinPos->flags &= ~SWP_NOCLIENTMOVE; } - if (ClientRect->right - ClientRect->left != - Window->rcClient.right - Window->rcClient.left) + if (ClientRect->right - ClientRect->left != Window->rcClient.right - Window->rcClient.left) { WinPos->flags &= ~SWP_NOCLIENTSIZE; } else wvrFlags &= ~WVR_HREDRAW; - if (ClientRect->bottom - ClientRect->top != - Window->rcClient.bottom - Window->rcClient.top) + if (ClientRect->bottom - ClientRect->top != Window->rcClient.bottom - Window->rcClient.top) { WinPos->flags &= ~SWP_NOCLIENTSIZE; } @@ -1317,44 +1311,24 @@ co_WinPosDoWinPosChanging(PWND Window, WindowRect->bottom = WindowRect->top + WinPos->cy; } } -#if 0 - if (!(WinPos->flags & SWP_NOMOVE)) - { - WindowRect->left = WinPos->x; - WindowRect->top = WinPos->y; - WindowRect->right += WinPos->x - Window->rcWindow.left; - WindowRect->bottom += WinPos->y - Window->rcWindow.top; - RECTL_vOffsetRect(ClientRect, - WinPos->x - Window->rcWindow.left, - WinPos->y - Window->rcWindow.top); - } - - *WindowRect = Window->rcWindow; - *ClientRect = Window->rcClient; - - if (!(WinPos->flags & SWP_NOSIZE)) - { - WindowRect->right = WindowRect->left + WinPos->cx; - WindowRect->bottom = WindowRect->top + WinPos->cy; - } -#endif if (!(WinPos->flags & SWP_NOMOVE)) { INT X, Y; PWND Parent; X = WinPos->x; Y = WinPos->y; - //ERR("Not SWP_NOMOVE\n"); + Parent = Window->spwndParent; + if (((Window->style & WS_CHILD) != 0) && Parent && Parent != Window->head.rpdesk->pDeskInfo->spwnd) { - //ERR("Not SWP_NOMOVE 1 Parent client offset X %d Y %d\n",X,Y); + TRACE("Not SWP_NOMOVE 1 Parent client offset X %d Y %d\n",X,Y); X += Parent->rcClient.left; Y += Parent->rcClient.top; - //ERR("Not SWP_NOMOVE 2 Parent client offset X %d Y %d\n",X,Y); + TRACE("Not SWP_NOMOVE 2 Parent client offset X %d Y %d\n",X,Y); } WindowRect->left = X; @@ -1365,12 +1339,13 @@ co_WinPosDoWinPosChanging(PWND Window, RECTL_vOffsetRect(ClientRect, X - Window->rcWindow.left, Y - Window->rcWindow.top); } - WinPos->flags |= SWP_NOCLIENTMOVE | SWP_NOCLIENTSIZE; TRACE( "hwnd %p, after %p, swp %d,%d %dx%d flags %08x\n", WinPos->hwnd, WinPos->hwndInsertAfter, WinPos->x, WinPos->y, WinPos->cx, WinPos->cy, WinPos->flags ); + TRACE("WindowRect: %d %d %d %d\n", WindowRect->left,WindowRect->top,WindowRect->right,WindowRect->bottom); + TRACE("ClientRect: %d %d %d %d\n", ClientRect->left,ClientRect->top,ClientRect->right,ClientRect->bottom); return TRUE; } @@ -1533,6 +1508,7 @@ WinPosInternalMoveWindow(PWND Window, INT MoveX, INT MoveY) PWND Child; ASSERT(Window != Window->spwndChild); + TRACE("InternalMoveWin X %d Y %d\n", MoveX, MoveY); Window->rcWindow.left += MoveX; Window->rcWindow.right += MoveX; @@ -1591,7 +1567,7 @@ WinPosFixupFlags(WINDOWPOS *WinPos, PWND Wnd) pt.x = WinPos->x; pt.y = WinPos->y; IntClientToScreen( Parent, &pt ); - //ERR("WPFU C2S wpx %d wpy %d ptx %d pty %d\n",WinPos->x,WinPos->y,pt.x,pt.y); + TRACE("WPFU C2S wpx %d wpy %d ptx %d pty %d\n",WinPos->x,WinPos->y,pt.x,pt.y); /* Check for right position */ if (Wnd->rcWindow.left == pt.x && Wnd->rcWindow.top == pt.y) { @@ -1846,12 +1822,11 @@ co_WinPosSetWindowPos( OldWindowRect = Window->rcWindow; OldClientRect = Window->rcClient; - //ERR("SetWindowPos OldWindowRect: %d %d %d %d\n", OldWindowRect.left,OldWindowRect.top,OldWindowRect.right,OldWindowRect.bottom); - //ERR("SetWindowPos OldClientRect: %d %d %d %d\n", OldClientRect.left,OldClientRect.top,OldClientRect.right,OldClientRect.bottom); if (NewClientRect.left != OldClientRect.left || NewClientRect.top != OldClientRect.top) { + // Move child window if their parent is moved. Keep Child window relative to Parent... WinPosInternalMoveWindow(Window, NewClientRect.left - OldClientRect.left, NewClientRect.top - OldClientRect.top); @@ -1860,9 +1835,6 @@ co_WinPosSetWindowPos( Window->rcWindow = NewWindowRect; Window->rcClient = NewClientRect; - //ERR("SetWindowPos NewWindowRect: %d %d %d %d\n", NewWindowRect.left,NewWindowRect.top,NewWindowRect.right,NewWindowRect.bottom); - //ERR("SetWindowPos NewClientRect: %d %d %d %d\n", NewClientRect.left,NewClientRect.top,NewClientRect.right,NewClientRect.bottom); - /* erase parent when hiding or resizing child */ if (WinPos.flags & SWP_HIDEWINDOW) { @@ -2374,7 +2346,8 @@ co_WinPosShowWindow(PWND Wnd, INT Cmd) Swp |= SWP_NOACTIVATE | SWP_NOZORDER; } -#if 0 // Explorer issues with common controls. Someone does not know how CS_SAVEBITS works. +#if 0 // Explorer issues with common controls? Someone does not know how CS_SAVEBITS works. + // Breaks startup and shutdown active window... if ((Wnd->style & (WS_POPUP|WS_CHILD)) != WS_CHILD && Wnd->pcls->style & CS_SAVEBITS && ((Cmd == SW_SHOW) || (Cmd == SW_NORMAL))) From db241f482b8a7b496c8b7868f22654e402ff0180 Mon Sep 17 00:00:00 2001 From: James Tabor Date: Mon, 26 May 2014 01:26:45 +0000 Subject: [PATCH 061/232] [Win32k] - Fix G/SetSystemMenu. Move code into menu.c. - Add loading for MDI system menu. svn path=/trunk/; revision=63455 --- reactos/win32ss/include/ntuser.h | 2 + reactos/win32ss/user/ntuser/menu.c | 284 +++++++++++++++++++- reactos/win32ss/user/ntuser/menu.h | 2 +- reactos/win32ss/user/ntuser/window.c | 289 +-------------------- reactos/win32ss/user/user32/windows/menu.c | 100 +++++-- 5 files changed, 365 insertions(+), 312 deletions(-) diff --git a/reactos/win32ss/include/ntuser.h b/reactos/win32ss/include/ntuser.h index fb39f5ab11d..20813bbfe1c 100644 --- a/reactos/win32ss/include/ntuser.h +++ b/reactos/win32ss/include/ntuser.h @@ -345,6 +345,8 @@ typedef struct tagMENULIST #define MNF_DESKTOPMN 0x0040 #define MNF_SYSDESKMN 0x0080 #define MNF_SYSSUBMENU 0x0100 +// Hack +#define MNF_SYSMENU 0x0200 typedef struct tagMENU { diff --git a/reactos/win32ss/user/ntuser/menu.c b/reactos/win32ss/user/ntuser/menu.c index a155c9ff1e5..c802832f306 100644 --- a/reactos/win32ss/user/ntuser/menu.c +++ b/reactos/win32ss/user/ntuser/menu.c @@ -915,7 +915,7 @@ IntSetMenuItemInfo(PMENU MenuObject, PITEM MenuItem, PROSMENUITEMINFO lpmii, PUN } } - if( !(MenuObject->fFlags & MNF_SYSDESKMN) && + if( !(MenuObject->fFlags & MNF_SYSMENU) && !MenuItem->Xlpstr && !lpmii->dwTypeData && !(MenuItem->fType & MFT_OWNERDRAW) && @@ -1430,7 +1430,7 @@ HMENU FASTCALL UserCreateMenu(BOOL PopupMenu) return (HMENU)0; } Menu = IntCreateMenu(&Handle, !PopupMenu); - if (Menu->head.rpdesk->rpwinstaParent != WinStaObject) + if (Menu && Menu->head.rpdesk->rpwinstaParent != WinStaObject) { ERR("Desktop Window Station does not match Process one!\n"); } @@ -1658,6 +1658,183 @@ IntGetMenuItemRect( return TRUE; } +PMENU FASTCALL MENU_GetSystemMenu(PWND Window, PMENU Popup) +{ + PMENU Menu, NewMenu = NULL, SysMenu = NULL; + HMENU hSysMenu, hNewMenu = NULL; + ROSMENUITEMINFO ItemInfoSet = {0}; + ROSMENUITEMINFO ItemInfo = {0}; + UNICODE_STRING MenuName; + + hSysMenu = UserCreateMenu(FALSE); + if (NULL == hSysMenu) + { + return NULL; + } + SysMenu = IntGetMenuObject(hSysMenu); + if (NULL == SysMenu) + { + UserDestroyMenu(hSysMenu); + return NULL; + } + + SysMenu->fFlags |= MNF_SYSMENU; + SysMenu->hWnd = Window->head.h; + + if (!Popup) + { + //hNewMenu = co_IntLoadSysMenuTemplate(); + //if ( Window->ExStyle & WS_EX_MDICHILD ) + //{ + // RtlInitUnicodeString( &MenuName, L"SYSMENUMDI"); + // hNewMenu = co_IntCallLoadMenu( hModClient, &MenuName); + //} + //else + { + RtlInitUnicodeString( &MenuName, L"SYSMENU"); + hNewMenu = co_IntCallLoadMenu( hModClient, &MenuName); + //ERR("%wZ\n",&MenuName); + } + if (!hNewMenu) + { + ERR("No Menu!!\n"); + IntReleaseMenuObject(SysMenu); + UserDestroyMenu(hSysMenu); + return NULL; + } + Menu = IntGetMenuObject(hNewMenu); + if (!Menu) + { + IntReleaseMenuObject(SysMenu); + UserDestroyMenu(hSysMenu); + return NULL; + } + + // Do the rest in here. + + Menu->fFlags |= MNS_CHECKORBMP | MNF_SYSMENU | MNF_POPUP; + + ItemInfoSet.cbSize = sizeof( MENUITEMINFOW); + ItemInfoSet.fMask = MIIM_BITMAP; + ItemInfoSet.hbmpItem = HBMMENU_POPUP_CLOSE; + IntMenuItemInfo(Menu, SC_CLOSE, FALSE, &ItemInfoSet, TRUE, NULL); + ItemInfoSet.hbmpItem = HBMMENU_POPUP_RESTORE; + IntMenuItemInfo(Menu, SC_RESTORE, FALSE, &ItemInfoSet, TRUE, NULL); + ItemInfoSet.hbmpItem = HBMMENU_POPUP_MAXIMIZE; + IntMenuItemInfo(Menu, SC_MAXIMIZE, FALSE, &ItemInfoSet, TRUE, NULL); + ItemInfoSet.hbmpItem = HBMMENU_POPUP_MINIMIZE; + IntMenuItemInfo(Menu, SC_MINIMIZE, FALSE, &ItemInfoSet, TRUE, NULL); + + NewMenu = IntCloneMenu(Menu); + + IntReleaseMenuObject(NewMenu); + UserSetMenuDefaultItem(NewMenu, SC_CLOSE, FALSE); + + IntDestroyMenuObject(Menu, FALSE, TRUE); + } + else + { + NewMenu = Popup; + } + if (NewMenu) + { + NewMenu->fFlags |= MNF_SYSMENU | MNF_POPUP; + + if (Window->pcls->style & CS_NOCLOSE) + IntRemoveMenuItem(NewMenu, SC_CLOSE, MF_BYCOMMAND, TRUE); + + ItemInfo.cbSize = sizeof(MENUITEMINFOW); + ItemInfo.fMask = MIIM_FTYPE | MIIM_STRING | MIIM_STATE | MIIM_SUBMENU; + ItemInfo.fType = 0; + ItemInfo.fState = MFS_ENABLED; + ItemInfo.dwTypeData = NULL; + ItemInfo.cch = 0; + ItemInfo.hSubMenu = UserHMGetHandle(NewMenu); + IntInsertMenuItem(SysMenu, (UINT) -1, TRUE, &ItemInfo, NULL); + + return SysMenu; + } + ERR("failed to load system menu!\n"); + return NULL; +} + +PMENU FASTCALL +IntGetSystemMenu(PWND Window, BOOL bRevert) +{ + PMENU Menu; + + if (bRevert) + { + if (Window->SystemMenu) + { + Menu = UserGetMenuObject(Window->SystemMenu); + if (Menu && !(Menu->fFlags & MNF_SYSDESKMN)) + { + IntDestroyMenuObject(Menu, TRUE, TRUE); + Window->SystemMenu = NULL; + } + } + } + else + { + Menu = Window->SystemMenu ? UserGetMenuObject(Window->SystemMenu) : NULL; + if ((!Window->SystemMenu || Menu->fFlags & MNF_SYSDESKMN) && Window->style & WS_SYSMENU) + { + Menu = MENU_GetSystemMenu(Window, NULL); + Window->SystemMenu = Menu ? UserHMGetHandle(Menu) : NULL; + } + } + + if (Window->SystemMenu) + { + HMENU hMenu = IntGetSubMenu( Window->SystemMenu, 0); + /* Store the dummy sysmenu handle to facilitate the refresh */ + /* of the close button if the SC_CLOSE item change */ + Menu = UserGetMenuObject(hMenu); + if (Menu) + { + Menu->spwndNotify = Window; + Menu->fFlags |= MNF_SYSSUBMENU; + } + return Menu; + } + return NULL; +} + +BOOL FASTCALL +IntSetSystemMenu(PWND Window, PMENU Menu) +{ + PMENU OldMenu; + + if (!(Window->style & WS_SYSMENU)) return FALSE; + + if (Window->SystemMenu) + { + OldMenu = UserGetMenuObject(Window->SystemMenu); + if (OldMenu) + { + OldMenu->fFlags &= ~MNF_SYSMENU; + IntDestroyMenuObject(OldMenu, TRUE, TRUE); + } + } + + OldMenu = MENU_GetSystemMenu(Window, Menu); + if (OldMenu) + { // Use spmenuSys too! + Window->SystemMenu = UserHMGetHandle(OldMenu); + } + else + Window->SystemMenu = NULL; + + if (Menu && Window != Menu->spwndNotify) + { + Menu->spwndNotify = Window; + } + + return TRUE; +} + + /* FUNCTIONS *****************************************************************/ /* @@ -1716,6 +1893,107 @@ CLEANUP: END_CLEANUP; } +/* + * NtUserGetSystemMenu + * + * The NtUserGetSystemMenu function allows the application to access the + * window menu (also known as the system menu or the control menu) for + * copying and modifying. + * + * Parameters + * hWnd + * Handle to the window that will own a copy of the window menu. + * bRevert + * Specifies the action to be taken. If this parameter is FALSE, + * NtUserGetSystemMenu returns a handle to the copy of the window menu + * currently in use. The copy is initially identical to the window menu + * but it can be modified. + * If this parameter is TRUE, GetSystemMenu resets the window menu back + * to the default state. The previous window menu, if any, is destroyed. + * + * Return Value + * If the bRevert parameter is FALSE, the return value is a handle to a + * copy of the window menu. If the bRevert parameter is TRUE, the return + * value is NULL. + * + * Status + * @implemented + */ + +HMENU APIENTRY +NtUserGetSystemMenu(HWND hWnd, BOOL bRevert) +{ + PWND Window; + PMENU Menu; + DECLARE_RETURN(HMENU); + + TRACE("Enter NtUserGetSystemMenu\n"); + UserEnterShared(); + + if (!(Window = UserGetWindowObject(hWnd))) + { + RETURN(NULL); + } + + if (!(Menu = IntGetSystemMenu(Window, bRevert))) + { + RETURN(NULL); + } + + RETURN(Menu->head.h); + +CLEANUP: + TRACE("Leave NtUserGetSystemMenu, ret=%p\n", _ret_); + UserLeave(); + END_CLEANUP; +} + +/* + * NtUserSetSystemMenu + * + * Status + * @implemented + */ + +BOOL APIENTRY +NtUserSetSystemMenu(HWND hWnd, HMENU hMenu) +{ + BOOL Result = FALSE; + PWND Window; + PMENU Menu; + DECLARE_RETURN(BOOL); + + TRACE("Enter NtUserSetSystemMenu\n"); + UserEnterExclusive(); + + if (!(Window = UserGetWindowObject(hWnd))) + { + RETURN( FALSE); + } + + if (hMenu) + { + /* + * Assign new menu handle and Up the Lock Count. + */ + if (!(Menu = IntGetMenuObject(hMenu))) + { + RETURN( FALSE); + } + + Result = IntSetSystemMenu(Window, Menu); + } + else + EngSetLastError(ERROR_INVALID_MENU_HANDLE); + + RETURN( Result); + +CLEANUP: + TRACE("Leave NtUserSetSystemMenu, ret=%i\n",_ret_); + UserLeave(); + END_CLEANUP; +} + /* * @implemented */ @@ -1908,7 +2186,7 @@ NtUserGetMenuBarInfo( break; case OBJID_SYSMENU: if (!(pWnd->style & WS_SYSMENU)) RETURN(FALSE); - Menu = IntGetSystemMenu(pWnd, FALSE, FALSE); + Menu = IntGetSystemMenu(pWnd, FALSE); hMenu = Menu->head.h; break; default: diff --git a/reactos/win32ss/user/ntuser/menu.h b/reactos/win32ss/user/ntuser/menu.h index 0a63e49f562..dffc55a2a45 100644 --- a/reactos/win32ss/user/ntuser/menu.h +++ b/reactos/win32ss/user/ntuser/menu.h @@ -41,7 +41,7 @@ BOOL FASTCALL IntInsertMenuItem(_In_ PMENU MenuObject, UINT uItem, BOOL fByPosition, PROSMENUITEMINFO ItemInfo, PUNICODE_STRING lpstr); PMENU FASTCALL -IntGetSystemMenu(PWND Window, BOOL bRevert, BOOL RetMenu); +IntGetSystemMenu(PWND Window, BOOL bRevert); UINT FASTCALL IntFindSubMenu(HMENU *hMenu, HMENU hSubTarget ); UINT FASTCALL IntGetMenuState( HMENU hMenu, UINT uId, UINT uFlags); diff --git a/reactos/win32ss/user/ntuser/window.c b/reactos/win32ss/user/ntuser/window.c index b5386d76102..de3b4bd0c34 100644 --- a/reactos/win32ss/user/ntuser/window.c +++ b/reactos/win32ss/user/ntuser/window.c @@ -895,148 +895,6 @@ co_DestroyThreadWindows(struct _ETHREAD *Thread) } } -PMENU FASTCALL -IntGetSystemMenu(PWND Window, BOOL bRevert, BOOL RetMenu) -{ - PMENU Menu, NewMenu = NULL, SysMenu = NULL, ret = NULL; - PTHREADINFO W32Thread; - HMENU hNewMenu, hSysMenu; - ROSMENUITEMINFO ItemInfoSet = {0}; - ROSMENUITEMINFO ItemInfo = {0}; - UNICODE_STRING MenuName; - - if(bRevert) - { - W32Thread = PsGetCurrentThreadWin32Thread(); - - if(!W32Thread->rpdesk) - return NULL; - - if(Window->SystemMenu) - { - Menu = UserGetMenuObject(Window->SystemMenu); - if(Menu) - { - IntDestroyMenuObject(Menu, TRUE, TRUE); - Window->SystemMenu = (HMENU)0; - } - } - - if(W32Thread->rpdesk->rpwinstaParent->SystemMenuTemplate) - { - /* Clone system menu */ - Menu = UserGetMenuObject(W32Thread->rpdesk->rpwinstaParent->SystemMenuTemplate); - if(!Menu) - return NULL; - - NewMenu = IntCloneMenu(Menu); - if(NewMenu) - { // Use spmenuSys - Window->SystemMenu = NewMenu->head.h; - NewMenu->fFlags |= MNF_SYSDESKMN; - NewMenu->hWnd = Window->head.h; - ret = NewMenu; - //IntReleaseMenuObject(NewMenu); - } - } - else - { - hSysMenu = UserCreateMenu(FALSE); - if (NULL == hSysMenu) - { - return NULL; - } - SysMenu = IntGetMenuObject(hSysMenu); - if (NULL == SysMenu) - { - UserDestroyMenu(hSysMenu); - return NULL; - } - SysMenu->fFlags |= MNF_SYSDESKMN; - SysMenu->hWnd = Window->head.h; - //hNewMenu = co_IntLoadSysMenuTemplate(); - //if ( Window->ExStyle & WS_EX_MDICHILD ) - //{ - // RtlInitUnicodeString( &MenuName, L"SYSMENUMDI"); - // hNewMenu = co_IntCallLoadMenu( hModClient, &MenuName); - //} - //else - { - RtlInitUnicodeString( &MenuName, L"SYSMENU"); - hNewMenu = co_IntCallLoadMenu( hModClient, &MenuName); - //ERR("%wZ\n",&MenuName); - } - if(!hNewMenu) - { - ERR("No Menu!!\n"); - IntReleaseMenuObject(SysMenu); - UserDestroyMenu(hSysMenu); - return NULL; - } - Menu = IntGetMenuObject(hNewMenu); - if(!Menu) - { - IntReleaseMenuObject(SysMenu); - UserDestroyMenu(hSysMenu); - return NULL; - } - - // Do the rest in here. - - Menu->fFlags |= MNS_CHECKORBMP | MNF_SYSDESKMN | MNF_POPUP; - - ItemInfoSet.cbSize = sizeof( MENUITEMINFOW); - ItemInfoSet.fMask = MIIM_BITMAP; - ItemInfoSet.hbmpItem = HBMMENU_POPUP_CLOSE; - IntMenuItemInfo(Menu, SC_CLOSE, FALSE, &ItemInfoSet, TRUE, NULL); - ItemInfoSet.hbmpItem = HBMMENU_POPUP_RESTORE; - IntMenuItemInfo(Menu, SC_RESTORE, FALSE, &ItemInfoSet, TRUE, NULL); - ItemInfoSet.hbmpItem = HBMMENU_POPUP_MAXIMIZE; - IntMenuItemInfo(Menu, SC_MAXIMIZE, FALSE, &ItemInfoSet, TRUE, NULL); - ItemInfoSet.hbmpItem = HBMMENU_POPUP_MINIMIZE; - IntMenuItemInfo(Menu, SC_MINIMIZE, FALSE, &ItemInfoSet, TRUE, NULL); - - NewMenu = IntCloneMenu(Menu); - if(NewMenu) - { - NewMenu->fFlags |= MNF_SYSDESKMN | MNF_POPUP; - // Do not set MNS_CHECKORBMP it breaks menus, also original code destroyed the style anyway. - IntReleaseMenuObject(NewMenu); - UserSetMenuDefaultItem(NewMenu, SC_CLOSE, FALSE); - - if (Window->pcls->style & CS_NOCLOSE) - IntRemoveMenuItem(NewMenu, SC_CLOSE, MF_BYCOMMAND, TRUE); - - ItemInfo.cbSize = sizeof(MENUITEMINFOW); - ItemInfo.fMask = MIIM_FTYPE | MIIM_STRING | MIIM_STATE | MIIM_SUBMENU; - ItemInfo.fType = 0; - ItemInfo.fState = MFS_ENABLED; - ItemInfo.dwTypeData = NULL; - ItemInfo.cch = 0; - ItemInfo.hSubMenu = NewMenu->head.h; - IntInsertMenuItem(SysMenu, (UINT) -1, TRUE, &ItemInfo, NULL); - - Window->SystemMenu = SysMenu->head.h; - - ret = SysMenu; - } - IntDestroyMenuObject(Menu, FALSE, TRUE); - } - if(RetMenu) - return ret; - else - return NULL; - } - else - { - if(Window->SystemMenu) - return IntGetMenuObject((HMENU)Window->SystemMenu); - else - return NULL; - } -} - - BOOL FASTCALL IntIsChildWindow(PWND Parent, PWND BaseWindow) { @@ -1450,32 +1308,6 @@ co_UserSetParent(HWND hWndChild, HWND hWndNewParent) return( hWndOldParent); } -BOOL FASTCALL -IntSetSystemMenu(PWND Window, PMENU Menu) -{ - PMENU OldMenu; - if(Window->SystemMenu) - { - OldMenu = IntGetMenuObject(Window->SystemMenu); - if(OldMenu) - { - OldMenu->fFlags &= ~ MNF_SYSDESKMN; - IntReleaseMenuObject(OldMenu); - } - } - - if(Menu) - { - /* FIXME: Check window style, propably return FALSE? */ - Window->SystemMenu = Menu->head.h; - Menu->fFlags |= MNF_SYSDESKMN; - } - else // Use spmenuSys too! - Window->SystemMenu = (HMENU)0; - - return TRUE; -} - /* Unlink the window from siblings. children and parent are kept in place. */ VOID FASTCALL IntUnlinkWindow(PWND Wnd) @@ -1784,7 +1616,6 @@ PWND FASTCALL IntCreateWindow(CREATESTRUCTW* Cs, PWND pWnd = NULL; HWND hWnd; PTHREADINFO pti = NULL; - PMENU SystemMenu; BOOL MenuChanged; BOOL bUnicodeWindow; @@ -2012,22 +1843,13 @@ PWND FASTCALL IntCreateWindow(CREATESTRUCTW* Cs, if (!(pWnd->style & (WS_CHILD | WS_POPUP))) pWnd->state |= WNDS_SENDSIZEMOVEMSGS; - /* Create system menu */ - if ((Cs->style & WS_SYSMENU)) // && (dwStyle & WS_CAPTION) == WS_CAPTION) - { - SystemMenu = IntGetSystemMenu(pWnd, TRUE, TRUE); - if(SystemMenu) - { // spmenuSys - pWnd->SystemMenu = SystemMenu->head.h; - IntReleaseMenuObject(SystemMenu); - } - } - /* Set the window menu */ if ((Cs->style & (WS_CHILD | WS_POPUP)) != WS_CHILD) { - if (Cs->hMenu) + if (Cs->hMenu) + { IntSetMenu(pWnd, Cs->hMenu, &MenuChanged); + } else if (pWnd->pcls->lpszMenuName) // Take it from the parent. { UNICODE_STRING MenuName; @@ -2338,15 +2160,15 @@ co_UserCreateWindowEx(CREATESTRUCTW* Cs, Window->rcWindow.top = Cs->y; Window->rcWindow.right = Cs->x + Size.cx; Window->rcWindow.bottom = Cs->y + Size.cy; -/* + /* if (0 != (Window->style & WS_CHILD) && ParentWindow) { -// ERR("co_UserCreateWindowEx(): Offset rcWindow\n"); + ERR("co_UserCreateWindowEx(): Offset rcWindow\n"); RECTL_vOffsetRect(&Window->rcWindow, ParentWindow->rcClient.left, ParentWindow->rcClient.top); } -*/ + */ /* correct child window coordinates if mirroring on parent is enabled */ if (ParentWindow != NULL) { @@ -3679,105 +3501,6 @@ CLEANUP: END_CLEANUP; } -/* - * NtUserGetSystemMenu - * - * The NtUserGetSystemMenu function allows the application to access the - * window menu (also known as the system menu or the control menu) for - * copying and modifying. - * - * Parameters - * hWnd - * Handle to the window that will own a copy of the window menu. - * bRevert - * Specifies the action to be taken. If this parameter is FALSE, - * NtUserGetSystemMenu returns a handle to the copy of the window menu - * currently in use. The copy is initially identical to the window menu - * but it can be modified. - * If this parameter is TRUE, GetSystemMenu resets the window menu back - * to the default state. The previous window menu, if any, is destroyed. - * - * Return Value - * If the bRevert parameter is FALSE, the return value is a handle to a - * copy of the window menu. If the bRevert parameter is TRUE, the return - * value is NULL. - * - * Status - * @implemented - */ - -HMENU APIENTRY -NtUserGetSystemMenu(HWND hWnd, BOOL bRevert) -{ - PWND Window; - PMENU Menu; - DECLARE_RETURN(HMENU); - - TRACE("Enter NtUserGetSystemMenu\n"); - UserEnterShared(); - - if (!(Window = UserGetWindowObject(hWnd))) - { - RETURN(NULL); - } - - if (!(Menu = IntGetSystemMenu(Window, bRevert, FALSE))) - { - RETURN(NULL); - } - - RETURN(Menu->head.h); - -CLEANUP: - TRACE("Leave NtUserGetSystemMenu, ret=%p\n", _ret_); - UserLeave(); - END_CLEANUP; -} - -/* - * NtUserSetSystemMenu - * - * Status - * @implemented - */ - -BOOL APIENTRY -NtUserSetSystemMenu(HWND hWnd, HMENU hMenu) -{ - BOOL Result = FALSE; - PWND Window; - PMENU Menu; - DECLARE_RETURN(BOOL); - - TRACE("Enter NtUserSetSystemMenu\n"); - UserEnterExclusive(); - - if (!(Window = UserGetWindowObject(hWnd))) - { - RETURN( FALSE); - } - - if (hMenu) - { - /* - * Assign new menu handle. - */ - if (!(Menu = UserGetMenuObject(hMenu))) - { - RETURN( FALSE); - } - - Result = IntSetSystemMenu(Window, Menu); - } - - RETURN( Result); - -CLEANUP: - TRACE("Leave NtUserSetSystemMenu, ret=%i\n",_ret_); - UserLeave(); - END_CLEANUP; -} - // Fixes wine Win test_window_styles and todo tests... static BOOL FASTCALL IntCheckFrameEdge(ULONG Style, ULONG ExStyle) diff --git a/reactos/win32ss/user/user32/windows/menu.c b/reactos/win32ss/user/user32/windows/menu.c index 5298c6c90ac..37f241c59ef 100644 --- a/reactos/win32ss/user/user32/windows/menu.c +++ b/reactos/win32ss/user/user32/windows/menu.c @@ -70,10 +70,10 @@ WINE_DEFAULT_DEBUG_CHANNEL(menu); #define IS_MAGIC_BITMAP(id) ((id) && ((INT_PTR)(id) < 12) && ((INT_PTR)(id) >= -1)) #define IS_SYSTEM_MENU(MenuInfo) \ - (0 == ((MenuInfo)->fFlags & MNF_POPUP) && 0 != ((MenuInfo)->fFlags & MNF_SYSDESKMN)) + (0 == ((MenuInfo)->fFlags & MNF_POPUP) && 0 != ((MenuInfo)->fFlags & MNF_SYSMENU)) #define IS_SYSTEM_POPUP(MenuInfo) \ - (0 != ((MenuInfo)->fFlags & MNF_POPUP) && 0 != ((MenuInfo)->fFlags & MNF_SYSDESKMN)) + (0 != ((MenuInfo)->fFlags & MNF_POPUP) && 0 != ((MenuInfo)->fFlags & MNF_SYSMENU)) #define IS_BITMAP_ITEM(flags) (MF_BITMAP == MENU_ITEM_TYPE(flags)) @@ -902,7 +902,7 @@ static UINT FASTCALL MENU_FindItemByKey(HWND WndOwner, HMENU hmenu, } Flags |= menu->fFlags & MNF_POPUP ? MF_POPUP : 0; - Flags |= menu->fFlags & MNF_SYSDESKMN ? MF_SYSMENU : 0; + Flags |= menu->fFlags & MNF_SYSMENU ? MF_SYSMENU : 0; MenuChar = SendMessageW( WndOwner, WM_MENUCHAR, MAKEWPARAM(Key, Flags), (LPARAM) hmenu); @@ -1257,7 +1257,11 @@ static UINT MENU_GetMaxPopupHeight(PROSMENUINFO lppop) { if (lppop->cyMax) + { + //ERR("MGMaxPH cyMax %d\n",lppop->cyMax); return lppop->cyMax; + } + //ERR("MGMaxPH SyMax %d\n",GetSystemMetrics(SM_CYSCREEN) - GetSystemMetrics(SM_CYBORDER)); return GetSystemMetrics(SM_CYSCREEN) - GetSystemMetrics(SM_CYBORDER); } @@ -1844,13 +1848,14 @@ static void FASTCALL MenuDrawMenuItem(HWND hWnd, PROSMENUINFO MenuInfo, HWND Wnd /* process text if present */ if (lpitem->lpstr) { - register int i = 0; + int i = 0; HFONT hfontOld = 0; + UINT uFormat = menuBar ? DT_CENTER | DT_VCENTER | DT_SINGLELINE : DT_LEFT | DT_VCENTER | DT_SINGLELINE; - if((MenuInfo->dwStyle & MNS_CHECKORBMP)) + if ((MenuInfo->dwStyle & MNS_CHECKORBMP)) rect.left += max(0, (int)(MenuInfo->cxTextAlign - GetSystemMetrics(SM_CXMENUCHECK))); else rect.left += MenuInfo->cxTextAlign; @@ -1861,8 +1866,13 @@ static void FASTCALL MenuDrawMenuItem(HWND hWnd, PROSMENUINFO MenuInfo, HWND Wnd } if (menuBar) { - rect.left += MENU_BAR_ITEMS_SPACE / 2; - rect.right -= MENU_BAR_ITEMS_SPACE / 2; + if( lpitem->hbmpItem) + rect.left += lpitem->maxBmpSize.cx; + if( !(lpitem->hbmpItem == HBMMENU_CALLBACK)) + rect.left += MenuCharSize.cx; + rect.right -= MenuCharSize.cx; + //rect.left += MENU_BAR_ITEMS_SPACE / 2; + //rect.right -= MENU_BAR_ITEMS_SPACE / 2; } Text = lpitem->lpstr; @@ -1911,8 +1921,8 @@ static void FASTCALL MenuDrawMenuItem(HWND hWnd, PROSMENUINFO MenuInfo, HWND Wnd --rect.left; --rect.top; --rect.right; --rect.bottom; } SetTextColor(hdc, RGB(0x80, 0x80, 0x80)); - } - DrawTextW( hdc, Text + i + 1, -1, &rect, uFormat ); + } + DrawTextW( hdc, Text + i + 1, -1, &rect, uFormat ); } if (hfontOld) @@ -1961,6 +1971,7 @@ static void FASTCALL MenuDrawPopupMenu(HWND hwnd, HDC hdc, HMENU hmenu ) UINT u; MenuInitRosMenuItemInfo(&ItemInfo); + //for (u = MenuInfo.cItems; u > 0; u--, item++) for (u = 0; u < MenuInfo.cItems; u++) { if (MenuGetRosMenuItemInfo(MenuInfo.Self, u, &ItemInfo)) @@ -1972,7 +1983,9 @@ static void FASTCALL MenuDrawPopupMenu(HWND hwnd, HDC hdc, HMENU hmenu ) } /* draw scroll arrows */ if (MenuInfo.dwArrowsOn) + { MENU_DrawScrollArrows(&MenuInfo, hdc); + } MenuSetRosMenuInfo(&MenuInfo); MenuCleanupRosMenuItemInfo(&ItemInfo); @@ -2013,7 +2026,7 @@ UINT MenuDrawMenuBar( HDC hDC, LPRECT lprect, HWND hwnd, if (hfontOld) SelectObject( hDC, hfontOld); return lppop.cyMenu; } - else + else return DrawMenuBarTemp(hwnd, hDC, lprect, hMenu, NULL); } @@ -2185,6 +2198,7 @@ MENU_EnsureMenuItemVisible(PROSMENUINFO lppop, PROSMENUITEMINFO item, HDC hdc) ScrollWindow(lppop->Wnd, 0, nOldPos - lppop->iTop, &rc, &rc); MENU_DrawScrollArrows(lppop, hdc); } + MenuSetRosMenuInfo(lppop); } } @@ -2248,7 +2262,7 @@ static void FASTCALL MenuSelectItem(HWND hwndOwner, PROSMENUINFO hmenu, UINT wIn WPARAM wParam = MAKEWPARAM( ItemInfo.hSubMenu ? wIndex : ItemInfo.wID, ItemInfo.fType | ItemInfo.fState | (ItemInfo.hSubMenu ? MF_POPUP : 0) | - (hmenu->fFlags & MNF_SYSDESKMN ? MF_SYSMENU : 0 ) ); + (hmenu->fFlags & MNF_SYSMENU ? MF_SYSMENU : 0 ) ); SendMessageW(hwndOwner, WM_MENUSELECT, wParam, (LPARAM) hmenu->Self); } @@ -2267,7 +2281,7 @@ static void FASTCALL MenuSelectItem(HWND hwndOwner, PROSMENUINFO hmenu, UINT wIn { WPARAM wParam = MAKEWPARAM( Pos, ItemInfo.fType | ItemInfo.fState | (ItemInfo.hSubMenu ? MF_POPUP : 0) | - (TopMenuInfo.fFlags & MNF_SYSDESKMN ? MF_SYSMENU : 0 ) ); + (TopMenuInfo.fFlags & MNF_SYSMENU ? MF_SYSMENU : 0 ) ); SendMessageW(hwndOwner, WM_MENUSELECT, wParam, (LPARAM) topmenu); } @@ -3065,7 +3079,7 @@ MenuExecFocusedItem(MTRACKER *Mt, PROSMENUINFO MenuInfo, UINT Flags) do not send a message to the owner */ if (0 == (Flags & TPM_RETURNCMD)) { - if (0 != (MenuInfo->fFlags & MNF_SYSDESKMN)) + if (0 != (MenuInfo->fFlags & MNF_SYSMENU)) { PostMessageW(Mt->OwnerWnd, WM_SYSCOMMAND, ItemInfo.wID, MAKELPARAM((SHORT) Mt->Pt.x, (SHORT) Mt->Pt.y)); @@ -3250,7 +3264,7 @@ MENU_PtMenu(HMENU hMenu, POINT pt) if (ht != HTNOWHERE && ht != HTERROR) ret = hMenu; } else if (ht == HTSYSMENU) - ret = NtUserGetSystemMenu(menu->hWnd, FALSE); + ret = get_win_sys_menu(menu->hWnd); else if (ht == HTMENU) ret = GetMenu( menu->hWnd ); } @@ -3398,7 +3412,7 @@ MenuDoNextMenu(MTRACKER* Mt, UINT Vk, UINT wFlags) else if (0 != (Style & WS_SYSMENU)) { /* switch to the system menu */ - NewMenu = NtUserGetSystemMenu(NewWnd, FALSE); + NewMenu = get_win_sys_menu(NewWnd); } else { @@ -3415,10 +3429,10 @@ MenuDoNextMenu(MTRACKER* Mt, UINT Vk, UINT wFlags) DWORD Style = GetWindowLongPtrW(NewWnd, GWL_STYLE); if (0 != (Style & WS_SYSMENU) - && GetSystemMenu(NewWnd, FALSE) == NewMenu) + && get_win_sys_menu(NewWnd) == NewMenu) { /* get the real system menu */ - NewMenu = NtUserGetSystemMenu(NewWnd, FALSE); + NewMenu = get_win_sys_menu(NewWnd); } else if (0 != (Style & WS_CHILD) || GetMenu(NewWnd) != NewMenu) { @@ -4081,7 +4095,7 @@ static BOOL FASTCALL MenuInitTracking(HWND hWnd, HMENU hMenu, BOOL bPopup, UINT IntNotifyWinEvent( EVENT_SYSTEM_MENUSTART, hWnd, - MenuInfo.fFlags & MNF_SYSDESKMN ? OBJID_SYSMENU : OBJID_MENU, + MenuInfo.fFlags & MNF_SYSMENU ? OBJID_SYSMENU : OBJID_MENU, CHILDID_SELF, 0); return TRUE; } @@ -4108,7 +4122,7 @@ static BOOL FASTCALL MenuExitTracking(HWND hWnd, BOOL bPopup) */ VOID MenuTrackMouseMenuBar( HWND hWnd, ULONG ht, POINT pt) { - HMENU hMenu = (ht == HTSYSMENU) ? NtUserGetSystemMenu( hWnd, FALSE) : GetMenu(hWnd); + HMENU hMenu = (ht == HTSYSMENU) ? get_win_sys_menu( hWnd ) : GetMenu(hWnd); UINT wFlags = TPM_BUTTONDOWN | TPM_LEFTALIGN | TPM_LEFTBUTTON; TRACE("wnd=%p ht=0x%04x (%ld,%ld)\n", hWnd, ht, pt.x, pt.y); @@ -4124,6 +4138,8 @@ VOID MenuTrackMouseMenuBar( HWND hWnd, ULONG ht, POINT pt) } MenuInitTracking(hWnd, hMenu, FALSE, wFlags); + /* fetch the window menu again, it may have changed */ + hMenu = (ht == HTSYSMENU) ? get_win_sys_menu( hWnd ) : GetMenu( hWnd ); MenuTrackMenu(hMenu, wFlags, pt.x, pt.y, hWnd, NULL); MenuExitTracking(hWnd, FALSE); } @@ -4155,7 +4171,7 @@ VOID MenuTrackKbdMenuBar(HWND hwnd, UINT wParam, WCHAR wChar) if (!hTrackMenu || IsIconic(hwnd) || wChar == ' ' ) { if (!(GetWindowLongPtrW( hwnd, GWL_STYLE ) & WS_SYSMENU)) return; - hTrackMenu = NtUserGetSystemMenu(hwnd, FALSE); + hTrackMenu = get_win_sys_menu(hwnd); uItem = 0; wParam |= HTSYSMENU; /* prevent item lookup */ } @@ -4432,6 +4448,44 @@ MenuCleanup(VOID) } } +HMENU FASTCALL MENU_LoadSystemMenu(BOOL mdi) +{ + HMENU hmenu = LoadMenuW(User32Instance, L"SYSMENU"); + + if (hmenu) + { + MENUINFO menuinfo = {0}; + MENUITEMINFOW info = {0}; + //WCHAR buf[128]; + + // removing space for checkboxes from menu + menuinfo.cbSize = sizeof(menuinfo); + menuinfo.fMask = MIM_STYLE; + GetMenuInfo(hmenu, &menuinfo); + menuinfo.dwStyle |= MNS_CHECKORBMP; + SetMenuInfo(hmenu, &menuinfo); + + // adding bitmaps to menu items + info.cbSize = sizeof(info); + info.fMask |= MIIM_BITMAP; + info.hbmpItem = HBMMENU_POPUP_MINIMIZE; + SetMenuItemInfoW(hmenu, SC_MINIMIZE, FALSE, &info); + info.hbmpItem = HBMMENU_POPUP_RESTORE; + SetMenuItemInfoW(hmenu, SC_RESTORE, FALSE, &info); + info.hbmpItem = HBMMENU_POPUP_MAXIMIZE; + SetMenuItemInfoW(hmenu, SC_MAXIMIZE, FALSE, &info); + info.hbmpItem = HBMMENU_POPUP_CLOSE; + SetMenuItemInfoW(hmenu, SC_CLOSE, FALSE, &info); + if (mdi) + { + AppendMenuW(hmenu, MF_SEPARATOR, 0, NULL); + //LoadStringW(User32Instance, IDS_MDI_NEXT, buf, sizeof(buf)/sizeof(WCHAR)); + //AppendMenuW(hmenu, MF_STRING, SC_NEXTWINDOW, buf); + } + } + return hmenu; +} + NTSTATUS WINAPI User32LoadSysMenuTemplateForKernel(PVOID Arguments, ULONG ArgumentLength) { @@ -5023,11 +5077,7 @@ GetSystemMenu( HWND hWnd, BOOL bRevert) { - HMENU TopMenu; - - TopMenu = NtUserGetSystemMenu(hWnd, bRevert); - - return NULL == TopMenu ? NULL : GetSubMenu(TopMenu, 0); + return NtUserGetSystemMenu(hWnd, bRevert); } /* From 1498265bfcd95b848e5bdddc467f6ff47d12e0c2 Mon Sep 17 00:00:00 2001 From: James Tabor Date: Mon, 26 May 2014 03:08:06 +0000 Subject: [PATCH 062/232] [Win32k] - Use desktop system menu. svn path=/trunk/; revision=63456 --- reactos/win32ss/user/ntuser/desktop.h | 5 +++++ reactos/win32ss/user/ntuser/winsta.c | 1 - reactos/win32ss/user/ntuser/winsta.h | 1 - 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/reactos/win32ss/user/ntuser/desktop.h b/reactos/win32ss/user/ntuser/desktop.h index 2dbcaa385fa..cdf160fc0ab 100644 --- a/reactos/win32ss/user/ntuser/desktop.h +++ b/reactos/win32ss/user/ntuser/desktop.h @@ -10,6 +10,11 @@ typedef struct _DESKTOP /* Pointer to the associated window station. */ struct _WINSTATION_OBJECT *rpwinstaParent; DWORD dwDTFlags; + DWORD_PTR dwDesktopId; + PMENU spmenuSys; + PMENU spmenuDialogSys; + PMENU spmenuHScroll; + PMENU spmenuVScroll; PWND spwndForeground; PWND spwndTray; PWND spwndMessage; diff --git a/reactos/win32ss/user/ntuser/winsta.c b/reactos/win32ss/user/ntuser/winsta.c index 908da59be63..9045f6ffab4 100644 --- a/reactos/win32ss/user/ntuser/winsta.c +++ b/reactos/win32ss/user/ntuser/winsta.c @@ -454,7 +454,6 @@ NtUserCreateWindowStation( KeInitializeSpinLock(&WindowStationObject->Lock); InitializeListHead(&WindowStationObject->DesktopListHead); Status = RtlCreateAtomTable(37, &WindowStationObject->AtomTable); - WindowStationObject->SystemMenuTemplate = (HANDLE)0; WindowStationObject->Name = WindowStationName; WindowStationObject->dwSessionId = NtCurrentPeb()->SessionId; diff --git a/reactos/win32ss/user/ntuser/winsta.h b/reactos/win32ss/user/ntuser/winsta.h index 799db1efe9c..2cc12caae14 100644 --- a/reactos/win32ss/user/ntuser/winsta.h +++ b/reactos/win32ss/user/ntuser/winsta.h @@ -15,7 +15,6 @@ typedef struct _WINSTATION_OBJECT UNICODE_STRING Name; LIST_ENTRY DesktopListHead; PRTL_ATOM_TABLE AtomTable; - HANDLE SystemMenuTemplate; HANDLE ShellWindow; HANDLE ShellListView; From 6215b105d600cc120f38ecac21c71243bc034b7a Mon Sep 17 00:00:00 2001 From: James Tabor Date: Mon, 26 May 2014 04:36:58 +0000 Subject: [PATCH 063/232] [Win32k] - Make minimizing windows in MDI application usable, more fixing is needed. ReactOS suffers from wine poisoning. Need more Vodka! See wine Bug 1719. svn path=/trunk/; revision=63457 --- reactos/win32ss/user/ntuser/winpos.c | 258 +++++++++++++-------------- 1 file changed, 120 insertions(+), 138 deletions(-) diff --git a/reactos/win32ss/user/ntuser/winpos.c b/reactos/win32ss/user/ntuser/winpos.c index a628f563958..a3fc9eaf8dc 100644 --- a/reactos/win32ss/user/ntuser/winpos.c +++ b/reactos/win32ss/user/ntuser/winpos.c @@ -362,134 +362,6 @@ done: if (WndTo) UserDerefObjectCo(WndTo); } -UINT -FASTCALL -co_WinPosArrangeIconicWindows(PWND parent) -{ - RECTL rectParent; - INT i, x, y, xspacing, yspacing, sx, sy; - HWND *List = IntWinListChildren(parent); - - ASSERT_REFS_CO(parent); - - /* Check if we found any children */ - if(List == NULL) - { - return 0; - } - - IntGetClientRect( parent, &rectParent ); - // FIXME: Support gspv.mm.iArrange. - x = rectParent.left; - y = rectParent.bottom; - - xspacing = (UserGetSystemMetrics(SM_CXMINSPACING)/2)+UserGetSystemMetrics(SM_CXBORDER); - yspacing = (UserGetSystemMetrics(SM_CYMINSPACING)/2)+UserGetSystemMetrics(SM_CYBORDER); - - //ERR("X:%d Y:%d XS:%d YS:%d\n",x,y,xspacing,yspacing); - - for(i = 0; List[i]; i++) - { - PWND Child; - - if (!(Child = ValidateHwndNoErr(List[i]))) - continue; - - if((Child->style & WS_MINIMIZE) != 0 ) - { - USER_REFERENCE_ENTRY Ref; - UserRefObjectCo(Child, &Ref); - - sx = x + UserGetSystemMetrics(SM_CXBORDER); - sy = y - yspacing - UserGetSystemMetrics(SM_CYBORDER); - - co_WinPosSetWindowPos( Child, 0, sx, sy, 0, 0, - SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE ); - - Child->InternalPos.IconPos.x = sx; - Child->InternalPos.IconPos.y = sy; - Child->InternalPos.flags |= WPF_MININIT; - Child->InternalPos.flags &= ~WPF_SETMINPOSITION; - - UserDerefObjectCo(Child); - - if (x <= (rectParent.right - UserGetSystemMetrics(SM_CXMINSPACING))) - x += xspacing; - else - { - x = rectParent.left; - y -= yspacing; - } - //ERR("X:%d Y:%d\n",x,y); - } - } - ExFreePoolWithTag(List, USERTAG_WINDOWLIST); - return yspacing; -} - -static VOID FASTCALL -WinPosFindIconPos(PWND Window, POINT *Pos) -{ - RECT rectParent; - PWND pwndChild, pwndParent; - int x, y, xspacing, yspacing; - - pwndParent = Window->spwndParent; - if (pwndParent == UserGetDesktopWindow()) - { - //ERR("Parent is Desktop, Min off screen!\n"); - /* ReactOS doesn't support iconic minimize to desktop */ - Pos->x = Pos->y = -32000; - Window->InternalPos.flags |= WPF_MININIT; - Window->InternalPos.IconPos.x = Pos->x; - Window->InternalPos.IconPos.y = Pos->y; - return; - } - - IntGetClientRect( pwndParent, &rectParent ); - // FIXME: Support gspv.mm.iArrange. - x = rectParent.left; - y = rectParent.bottom; - - xspacing = (UserGetSystemMetrics(SM_CXMINSPACING)/2)+UserGetSystemMetrics(SM_CXBORDER); - yspacing = (UserGetSystemMetrics(SM_CYMINSPACING)/2)+UserGetSystemMetrics(SM_CYBORDER); - - //ERR("X:%d Y:%d XS:%d YS:%d\n",Pos->x,Pos->y,xspacing,yspacing); - - // Set to default position when minimized. - Pos->x = x + UserGetSystemMetrics(SM_CXBORDER); - Pos->y = y - yspacing - UserGetSystemMetrics(SM_CYBORDER); - - for (pwndChild = pwndParent->spwndChild; pwndChild; pwndChild = pwndChild->spwndNext) - { - if (pwndChild == Window) continue; - - if (pwndChild->style & WS_VISIBLE) - { - //ERR("Loop!\n"); - continue; - } - //ERR("Pos Child X %d Y %d!\n", pwndChild->InternalPos.IconPos.x, pwndChild->InternalPos.IconPos.y); - if ( pwndChild->InternalPos.IconPos.x == Pos->x && - pwndChild->InternalPos.IconPos.y == Pos->y ) - { - if (x <= rectParent.right - UserGetSystemMetrics(SM_CXMINSPACING)) - x += xspacing; - else - { - x = rectParent.left; - y -= yspacing; - } - Pos->x = x + UserGetSystemMetrics(SM_CXBORDER); - Pos->y = y - yspacing - UserGetSystemMetrics(SM_CYBORDER); - } - } - Window->InternalPos.IconPos.x = Pos->x; - Window->InternalPos.IconPos.y = Pos->y; - Window->InternalPos.flags |= WPF_MININIT; - //ERR("Position is set! X:%d Y:%d\n",Pos->x,Pos->y); - return; -} VOID FASTCALL WinPosInitInternalPos(PWND Wnd, RECTL *RestoreRect) @@ -740,6 +612,118 @@ IntSetWindowPlacement(PWND Wnd, WINDOWPLACEMENT *wpl, UINT Flags) return TRUE; } +UINT +FASTCALL +co_WinPosArrangeIconicWindows(PWND parent) +{ + RECTL rectParent; + PWND Child; + INT x, y, xspacing, yspacing, sx, sy; + + ASSERT_REFS_CO(parent); + + IntGetClientRect( parent, &rectParent ); + // FIXME: Support gspv.mm.iArrange. + x = rectParent.left; + y = rectParent.bottom; + + xspacing = (UserGetSystemMetrics(SM_CXMINSPACING)/2)+UserGetSystemMetrics(SM_CXBORDER); + yspacing = (UserGetSystemMetrics(SM_CYMINSPACING)/2)+UserGetSystemMetrics(SM_CYBORDER); + + Child = parent->spwndChild; + while(Child) + { + if((Child->style & WS_MINIMIZE) != 0 ) + { + USER_REFERENCE_ENTRY Ref; + UserRefObjectCo(Child, &Ref); + + sx = x + UserGetSystemMetrics(SM_CXBORDER); + sy = y - yspacing - UserGetSystemMetrics(SM_CYBORDER); + + Child->InternalPos.IconPos.x = sx; + Child->InternalPos.IconPos.y = sy; + Child->InternalPos.flags |= WPF_MININIT; + + co_WinPosSetWindowPos( Child, 0, sx, sy, 0, 0, SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOCOPYBITS | SWP_ASYNCWINDOWPOS); + + UserDerefObjectCo(Child); + + if (x <= rectParent.right - xspacing) + x += xspacing; + else + { + x = rectParent.left; + y -= yspacing; + } + } + Child = Child->spwndNext; + } + return yspacing; +} + +static VOID FASTCALL +WinPosFindIconPos(PWND Window, POINT *Pos) +{ + RECT rectParent; + PWND pwndChild, pwndParent; + int x, y, xspacing, yspacing; + + pwndParent = Window->spwndParent; + if (pwndParent == UserGetDesktopWindow()) + { + //ERR("Parent is Desktop, Min off screen!\n"); + /* ReactOS doesn't support iconic minimize to desktop */ + Pos->x = Pos->y = -32000; + Window->InternalPos.flags |= WPF_MININIT; + Window->InternalPos.IconPos.x = Pos->x; + Window->InternalPos.IconPos.y = Pos->y; + return; + } + + IntGetClientRect( pwndParent, &rectParent ); + // FIXME: Support gspv.mm.iArrange. + x = rectParent.left; + y = rectParent.bottom; + + xspacing = (UserGetSystemMetrics(SM_CXMINSPACING)/2)+UserGetSystemMetrics(SM_CXBORDER); + yspacing = (UserGetSystemMetrics(SM_CYMINSPACING)/2)+UserGetSystemMetrics(SM_CYBORDER); + + // Set to default position when minimized. + Pos->x = x + UserGetSystemMetrics(SM_CXBORDER); + Pos->y = y - yspacing - UserGetSystemMetrics(SM_CYBORDER); + + for (pwndChild = pwndParent->spwndChild; pwndChild; pwndChild = pwndChild->spwndNext) + { + if (pwndChild == Window) continue; + + if ((pwndChild->style & (WS_VISIBLE|WS_MINIMIZE)) != (WS_VISIBLE|WS_MINIMIZE) ) + { + continue; + } + + if ( pwndChild->InternalPos.IconPos.x != Pos->x && pwndChild->InternalPos.IconPos.y != Pos->y ) + { + break; + } + if (x <= rectParent.right - xspacing) + x += xspacing; + else + { + x = rectParent.left; + y -= yspacing; + } + Pos->x = x + UserGetSystemMetrics(SM_CXBORDER); + Pos->y = y - yspacing - UserGetSystemMetrics(SM_CYBORDER); + } + + Window->InternalPos.IconPos.x = Pos->x; + Window->InternalPos.IconPos.y = Pos->y; + Window->InternalPos.flags |= WPF_MININIT; + TRACE("Position is set! X:%d Y:%d\n",Pos->x,Pos->y); + return; +} + UINT FASTCALL co_WinPosMinMaximize(PWND Wnd, UINT ShowFlag, RECT* NewPos) { @@ -793,8 +777,7 @@ co_WinPosMinMaximize(PWND Wnd, UINT ShowFlag, RECT* NewPos) old_style = IntSetStyle( Wnd, WS_MINIMIZE, WS_MAXIMIZE ); - co_UserRedrawWindow(Wnd, NULL, 0, RDW_VALIDATE | RDW_NOERASE | - RDW_NOINTERNALPAINT); + co_UserRedrawWindow(Wnd, NULL, 0, RDW_VALIDATE | RDW_NOERASE | RDW_NOINTERNALPAINT); if (!(Wnd->InternalPos.flags & WPF_SETMINPOSITION)) Wnd->InternalPos.flags &= ~WPF_MININIT; @@ -808,10 +791,8 @@ co_WinPosMinMaximize(PWND Wnd, UINT ShowFlag, RECT* NewPos) UserGetSystemMetrics(SM_CYMINIMIZED)); */ RECTL_vSetRect(NewPos, wpl.ptMinPosition.x, wpl.ptMinPosition.y, -// wpl.ptMinPosition.x + UserGetSystemMetrics(SM_CXMINIMIZED), -// wpl.ptMinPosition.y + UserGetSystemMetrics(SM_CYMINIMIZED)); - UserGetSystemMetrics(SM_CXMINIMIZED), - UserGetSystemMetrics(SM_CYMINIMIZED)); + wpl.ptMinPosition.x + UserGetSystemMetrics(SM_CXMINIMIZED), + wpl.ptMinPosition.y + UserGetSystemMetrics(SM_CYMINIMIZED)); SwpFlags |= SWP_NOCOPYBITS; break; } @@ -849,6 +830,7 @@ co_WinPosMinMaximize(PWND Wnd, UINT ShowFlag, RECT* NewPos) old_style = IntSetStyle( Wnd, 0, WS_MINIMIZE | WS_MAXIMIZE ); if (old_style & WS_MINIMIZE) { + if (Wnd->InternalPos.flags & WPF_RESTORETOMAXIMIZED) { co_WinPosGetMinMaxInfo(Wnd, &Size, &wpl.ptMaxPosition, NULL, NULL); @@ -1302,8 +1284,8 @@ co_WinPosDoWinPosChanging(PWND Window, { if (Window->style & WS_MINIMIZE) { - WindowRect->right = WindowRect->left + UserGetSystemMetrics(SM_CXICON); - WindowRect->bottom = WindowRect->top + UserGetSystemMetrics(SM_CYICON); + WindowRect->right = WindowRect->left + (UserGetSystemMetrics(SM_CXMINSPACING)/2)+UserGetSystemMetrics(SM_CXBORDER); + WindowRect->bottom = WindowRect->top + (UserGetSystemMetrics(SM_CYMINSPACING)/2)+UserGetSystemMetrics(SM_CYBORDER); } else { @@ -2181,10 +2163,10 @@ co_WinPosShowWindow(PWND Wnd, INT Cmd) LONG style; PWND Parent; PTHREADINFO pti; - // HRGN VisibleRgn; - //ERR("co_WinPosShowWindow START\n"); + //HRGN VisibleRgn; BOOL ShowOwned = FALSE; ASSERT_REFS_CO(Wnd); + //ERR("co_WinPosShowWindow START\n"); pti = PsGetCurrentThreadWin32Thread(); WasVisible = (Wnd->style & WS_VISIBLE) != 0; From 0841e6c36daa58f685c7df3679add036c0dee37a Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Mon, 26 May 2014 09:53:49 +0000 Subject: [PATCH 064/232] [SERVMAN] * Use StringCchCopy instead of {_t,w}cscpy_s as these shouldn't be exported. CORE-8174 svn path=/trunk/; revision=63458 --- reactos/base/applications/mscutils/servman/precomp.h | 1 + .../mscutils/servman/propsheet_depends.c | 2 +- reactos/base/applications/mscutils/servman/query.c | 6 +++--- .../mscutils/servman/stop_dependencies.c | 12 ++++++------ 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/reactos/base/applications/mscutils/servman/precomp.h b/reactos/base/applications/mscutils/servman/precomp.h index 4a63984bdfa..73ec61583b1 100644 --- a/reactos/base/applications/mscutils/servman/precomp.h +++ b/reactos/base/applications/mscutils/servman/precomp.h @@ -14,6 +14,7 @@ #include #include #include +#include #include "resource.h" diff --git a/reactos/base/applications/mscutils/servman/propsheet_depends.c b/reactos/base/applications/mscutils/servman/propsheet_depends.c index 01ebd0dca05..52afc515330 100644 --- a/reactos/base/applications/mscutils/servman/propsheet_depends.c +++ b/reactos/base/applications/mscutils/servman/propsheet_depends.c @@ -60,7 +60,7 @@ AddItemToTreeView(HWND hTreeView, dwSize * sizeof(TCHAR)); if (lpName) { - _tcscpy_s(lpName, dwSize, lpServiceName); + StringCchCopy(lpName, dwSize, lpServiceName); tvi.lParam = (LPARAM)lpName; } } diff --git a/reactos/base/applications/mscutils/servman/query.c b/reactos/base/applications/mscutils/servman/query.c index 69f0343ca0e..14a68e5a938 100644 --- a/reactos/base/applications/mscutils/servman/query.c +++ b/reactos/base/applications/mscutils/servman/query.c @@ -183,9 +183,9 @@ GetServiceDescription(LPTSTR lpServiceName) dwSize * sizeof(TCHAR)); if (lpDescription) { - _tcscpy_s(lpDescription, - dwSize, - pServiceDescription->lpDescription); + StringCchCopy(lpDescription, + dwSize, + pServiceDescription->lpDescription); } } } diff --git a/reactos/base/applications/mscutils/servman/stop_dependencies.c b/reactos/base/applications/mscutils/servman/stop_dependencies.c index 5ef227663f6..559002c6073 100644 --- a/reactos/base/applications/mscutils/servman/stop_dependencies.c +++ b/reactos/base/applications/mscutils/servman/stop_dependencies.c @@ -32,9 +32,9 @@ AddServiceToList(LPWSTR *lpServiceList, if (lpNewList) { /* Copy the service name */ - wcscpy_s(lpNewList, - dwToAddSize, - lpServiceToAdd); + StringCchCopy(lpNewList, + dwToAddSize, + lpServiceToAdd); /* Add the double null char */ lpNewList[dwToAddSize - 1] = L'\0'; @@ -68,9 +68,9 @@ AddServiceToList(LPWSTR *lpServiceList, if (lpNewList) { /* Copy the service name */ - wcscpy_s(&lpNewList[dwCurSize - 1], - dwToAddSize, - lpServiceToAdd); + StringCchCopy(&lpNewList[dwCurSize - 1], + dwToAddSize, + lpServiceToAdd); /* Add the double null char */ lpNewList[dwCurSize + dwToAddSize - 1] = L'\0'; From ad3d77394ac20a938fbd250a6a6a152038afe673 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Mon, 26 May 2014 09:55:29 +0000 Subject: [PATCH 065/232] [INCLUDE/CRT] * Do not define __STDC_SECURE_LIB__ and co, our msvcrt won't provide the related exports. CORE-8174 svn path=/trunk/; revision=63459 --- reactos/include/crt/crtdefs.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/reactos/include/crt/crtdefs.h b/reactos/include/crt/crtdefs.h index be4d08ee539..5e42ef01496 100644 --- a/reactos/include/crt/crtdefs.h +++ b/reactos/include/crt/crtdefs.h @@ -237,9 +237,11 @@ #define _TRUNCATE ((size_t)-1) #endif +#ifndef __REACTOS__ #define __STDC_SECURE_LIB__ 200411L #define __GOT_SECURE_LIB__ __STDC_SECURE_LIB__ #define _SECURECRT_FILL_BUFFER_PATTERN 0xFD +#endif /** Type definitions *********************************************************/ From 6f47e1f36f57e1ab2f73f1b7d274cc51239ef2dd Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Mon, 26 May 2014 09:57:36 +0000 Subject: [PATCH 066/232] [MSVCRT] * Zap some exports that do not exist in native. * Group the ones that we're forced to keep (only temporarily right now) for Gecko. CORE-8174 svn path=/trunk/; revision=63460 --- reactos/dll/win32/msvcrt/msvcrt.spec | 70 ++++------------------------ 1 file changed, 10 insertions(+), 60 deletions(-) diff --git a/reactos/dll/win32/msvcrt/msvcrt.spec b/reactos/dll/win32/msvcrt/msvcrt.spec index 0d8a599a858..15047b12791 100644 --- a/reactos/dll/win32/msvcrt/msvcrt.spec +++ b/reactos/dll/win32/msvcrt/msvcrt.spec @@ -212,13 +212,11 @@ @ extern __unguarded_readlc_active @ extern __wargv __wargv @ cdecl __wcserror(wstr) -@ cdecl __wcserror_s(ptr long wstr) @ cdecl __wgetmainargs(ptr ptr ptr long ptr) @ extern __winitenv @ cdecl _abnormal_termination() # stub _abs64 @ cdecl _access(str long) -@ cdecl _access_s(str long) @ extern _acmdln @ stdcall -arch=i386 _adj_fdiv_m16i(long) @ stdcall -arch=i386 _adj_fdiv_m32(long) @@ -266,7 +264,6 @@ @ extern _commode @ cdecl _control87(long long) @ cdecl _controlfp(long long) -@ cdecl _controlfp_s(ptr long long) @ cdecl _copysign( double double ) @ varargs _cprintf(str) @ cdecl _cputs(str) @@ -274,9 +271,7 @@ @ cdecl _creat(str long) @ varargs _cscanf(str) @ cdecl _ctime32(ptr) -@ cdecl _ctime32_s(str long ptr) @ cdecl _ctime64(ptr) -@ cdecl _ctime64_s(str long ptr) @ extern _ctype @ cdecl _cwait(ptr long long) @ varargs _cwprintf(wstr) @@ -379,9 +374,7 @@ @ cdecl _getws(ptr) @ cdecl -i386 _global_unwind2(ptr) @ cdecl _gmtime32(ptr) -@ cdecl _gmtime32_s(ptr ptr) @ cdecl _gmtime64(ptr) -@ cdecl _gmtime64_s(ptr ptr) @ cdecl _heapadd(ptr long) @ cdecl _heapchk() @ cdecl _heapmin() @@ -390,9 +383,7 @@ @ cdecl _heapwalk(ptr) @ cdecl _hypot(double double) @ cdecl _i64toa(long long ptr long) -@ cdecl _i64toa_s(long long ptr long long) @ cdecl _i64tow(long long ptr long) -@ cdecl _i64tow_s(long long ptr long long) @ cdecl _initterm(ptr ptr) @ cdecl _initterm_e(ptr ptr) @ cdecl -arch=i386 _inp(long) MSVCRT__inp @@ -434,9 +425,7 @@ @ cdecl _ismbstrail(ptr ptr) @ cdecl _isnan(double) @ cdecl _itoa(long ptr long) -@ cdecl _itoa_s(long ptr long long) @ cdecl _itow(long ptr long) -@ cdecl _itow_s(long ptr long long) @ cdecl _j0(double) @ cdecl _j1(double) @ cdecl _jn(long double) @@ -446,9 +435,7 @@ @ cdecl -i386 _local_unwind2(ptr long) @ cdecl -i386 _local_unwind4(ptr ptr long) @ cdecl _localtime32(ptr) -@ cdecl _localtime32_s(ptr ptr) @ cdecl _localtime64(ptr) -@ cdecl _localtime64_s(ptr ptr) @ cdecl _lock(long) @ cdecl _locking(long long long) @ cdecl _logb(double) @@ -459,11 +446,8 @@ @ cdecl _lseek(long long long) @ cdecl -ret64 _lseeki64(long double long) @ cdecl _ltoa(long ptr long) -@ cdecl _ltoa_s(long ptr long long) @ cdecl _ltow(long ptr long) -@ cdecl _ltow_s(long ptr long long) @ cdecl _makepath(ptr str str str str) -@ cdecl _makepath_s(ptr long str str str str) @ cdecl _mbbtombc(long) @ cdecl _mbbtype(long long) @ extern _mbcasemap @@ -496,7 +480,6 @@ @ cdecl _mbsnbcnt(ptr long) @ cdecl _mbsnbcoll(str str long) @ cdecl _mbsnbcpy(ptr str long) -@ cdecl _mbsnbcpy_s(ptr long str long) @ cdecl _mbsnbicmp(str str long) @ cdecl _mbsnbicoll(str str long) @ cdecl _mbsnbset(str long long) @@ -567,7 +550,6 @@ # stub _scprintf # stub _scwprintf @ cdecl _searchenv(str str ptr) -@ cdecl _searchenv_s(str str ptr long) @ stdcall -i386 _seh_longjmp_unwind4(ptr) @ stdcall -i386 _seh_longjmp_unwind(ptr) # stub _set_SSE2_enable @@ -585,13 +567,10 @@ @ cdecl _setsystime(ptr long) @ cdecl _sleep(long) @ varargs _snprintf(ptr long str) -@ varargs _snprintf_s(ptr long long ptr) # stub _snscanf @ varargs _snwprintf(ptr long wstr) -@ varargs _snwprintf_s(ptr long long ptr) # stub _snwscanf @ varargs _sopen(str long long) -@ cdecl _sopen_s(ptr str long long long) @ varargs _spawnl(long str str) @ varargs _spawnle(long str str) @ varargs _spawnlp(long str str) @@ -601,7 +580,6 @@ @ cdecl _spawnvp(long str ptr) @ cdecl _spawnvpe(long str ptr ptr) @ cdecl _splitpath(str ptr ptr ptr ptr) -@ cdecl _splitpath_s(str ptr long ptr long ptr long ptr long) @ cdecl _stat(str ptr) @ cdecl _stat64(str ptr) @ cdecl _stati64(str ptr) @@ -638,9 +616,7 @@ @ extern _tzname @ cdecl _tzset() @ cdecl _ui64toa(long long ptr long) -@ cdecl _ui64toa_s(long long ptr long long) @ cdecl _ui64tow(long long ptr long) -@ cdecl _ui64tow_s(long long ptr long long) @ cdecl _ultoa(long ptr long) @ cdecl _ultow(long ptr long) @ cdecl _umask(long) @@ -657,13 +633,10 @@ @ cdecl _vscwprintf(wstr ptr) @ cdecl _vsnprintf(ptr long str ptr) @ cdecl _vsnprintf_c(ptr long str ptr) _vsnprintf -@ cdecl _vsnprintf_s(ptr long long str ptr) @ cdecl _vsnwprintf(ptr long wstr ptr) -@ cdecl _vsnwprintf_s(ptr long long wstr ptr) @ cdecl _vsprintf_p(ptr long str ptr) @ cdecl _vswprintf_c(ptr long wstr ptr) _vsnwprintf @ cdecl _waccess(wstr long) -@ cdecl _waccess_s(wstr long) @ cdecl _wasctime(ptr) @ cdecl _wchdir(wstr) @ cdecl _wchmod(wstr long) @@ -671,11 +644,9 @@ @ cdecl _wcreat(wstr long) @ cdecl _wcsdup(wstr) @ cdecl _wcserror(long) -@ cdecl _wcserror_s(ptr long long) @ cdecl _wcsicmp(wstr wstr) @ cdecl _wcsicoll(wstr wstr) @ cdecl _wcslwr(wstr) -@ cdecl _wcslwr_s(wstr long) @ cdecl _wcsncoll(wstr wstr long) @ cdecl _wcsnicmp(wstr wstr long) @ cdecl _wcsnicoll(wstr wstr long) @@ -686,7 +657,6 @@ @ cdecl _wcstombs_l(ptr ptr long ptr) @ cdecl _wcstoui64(wstr ptr long) @ cdecl _wcsupr(wstr) -@ cdecl _wcsupr_s(wstr long) @ cdecl _wctime(ptr) @ cdecl _wctime32(ptr) @ cdecl _wctime64(ptr) @@ -708,7 +678,6 @@ # stub _wfindnext64 @ cdecl _wfindnexti64(long ptr) @ cdecl _wfopen(wstr wstr) -@ cdecl _wfopen_s(ptr wstr wstr) @ cdecl _wfreopen(wstr wstr ptr) @ cdecl _wfsopen(wstr wstr long) @ cdecl _wfullpath(ptr wstr long) @@ -719,7 +688,6 @@ @ extern _winminor @ extern _winver @ cdecl _wmakepath(ptr wstr wstr wstr wstr) -@ cdecl _wmakepath_s(ptr long wstr wstr wstr wstr) @ cdecl _wmkdir(wstr) @ cdecl _wmktemp(wstr) @ varargs _wopen(wstr long) @@ -734,7 +702,6 @@ @ cdecl _wsearchenv(wstr wstr ptr) @ cdecl _wsetlocale(long wstr) @ varargs _wsopen(wstr long long) -@ cdecl _wsopen_s(ptr wstr long long long) @ varargs _wspawnl(long wstr wstr) @ varargs _wspawnle(long wstr wstr) @ varargs _wspawnlp(long wstr wstr) @@ -744,7 +711,6 @@ @ cdecl _wspawnvp(long wstr ptr) @ cdecl _wspawnvpe(long wstr ptr ptr) @ cdecl _wsplitpath(wstr ptr ptr ptr ptr) -@ cdecl _wsplitpath_s(wstr ptr long ptr long ptr long ptr long) @ cdecl _wstat(wstr ptr) @ cdecl _wstati64(wstr ptr) @ cdecl _wstat64(wstr ptr) @@ -804,9 +770,7 @@ @ cdecl fmod(double double) @ cdecl -arch=x86_64 fmodf(long) @ cdecl fopen(str str) -@ cdecl fopen_s(ptr str str) @ varargs fprintf(ptr str) -@ varargs fprintf_s(ptr str) @ cdecl fputc(long ptr) @ cdecl fputs(str ptr) @ cdecl fputwc(long ptr) @@ -820,7 +784,6 @@ @ cdecl fsetpos(ptr ptr) @ cdecl ftell(ptr) @ varargs fwprintf(ptr wstr) -@ varargs fwprintf_s(ptr wstr) @ cdecl fwrite(ptr long long ptr) @ varargs fwscanf(ptr wstr) @ cdecl getc(ptr) @@ -873,9 +836,7 @@ @ cdecl memchr(ptr long long) @ cdecl memcmp(ptr ptr long) @ cdecl memcpy(ptr ptr long) -@ cdecl memcpy_s(ptr long ptr long) memmove_s @ cdecl memmove(ptr ptr long) -@ cdecl memmove_s(ptr long ptr long) @ cdecl memset(ptr long long) @ cdecl mktime(ptr) @ cdecl modf(double ptr) @@ -883,7 +844,6 @@ @ cdecl pow(double double) @ cdecl -arch=x86_64 powf(long) @ varargs printf(str) -@ varargs printf_s(str) @ cdecl putc(long ptr) @ cdecl putchar(long) @ cdecl puts(str) @@ -892,7 +852,6 @@ @ cdecl qsort(ptr long long ptr) @ cdecl raise(long) @ cdecl rand() -@ cdecl rand_s(ptr) @ cdecl realloc(ptr long) @ cdecl remove(str) @ cdecl rename(str str) @@ -907,27 +866,22 @@ @ cdecl -arch=x86_64 sinf(long) @ cdecl sinh(double) @ varargs sprintf(ptr str) -@ varargs sprintf_s(ptr long str) @ cdecl sqrt(double) @ cdecl -arch=x86_64 sqrtf(long) @ cdecl srand(long) @ varargs sscanf(str str) @ cdecl strcat(str str) -@ cdecl strcat_s(str long str) @ cdecl strchr(str long) @ cdecl strcmp(str str) @ cdecl strcoll(str str) @ cdecl strcpy(ptr str) -@ cdecl strcpy_s(ptr long str) @ cdecl strcspn(str str) @ cdecl strerror(long) -@ cdecl strerror_s(ptr long long) @ cdecl strftime(str long str ptr) @ cdecl strlen(str) @ cdecl strncat(str str long) @ cdecl strncmp(str str long) @ cdecl strncpy(ptr str long) -@ cdecl strncpy_s(ptr long str long) @ cdecl strnlen(str long) @ cdecl strpbrk(str str) @ cdecl strrchr(str long) @@ -935,12 +889,10 @@ @ cdecl strstr(str str) @ cdecl strtod(str ptr) @ cdecl strtok(str str) -@ cdecl strtok_s(ptr str ptr) @ cdecl strtol(str ptr long) @ cdecl strtoul(str ptr long) @ cdecl strxfrm(ptr str long) @ varargs swprintf(ptr wstr) -@ varargs swprintf_s(ptr long wstr) @ varargs swscanf(wstr wstr) @ cdecl system(str) @ cdecl tan(double) @@ -955,32 +907,22 @@ @ cdecl ungetc(long ptr) @ cdecl ungetwc(long ptr) @ cdecl vfprintf(ptr str ptr) -@ cdecl vfprintf_s(ptr str ptr) @ cdecl vfwprintf(ptr wstr ptr) -@ cdecl vfwprintf_s(ptr wstr ptr) @ cdecl vprintf(str ptr) -@ cdecl vprintf_s(str ptr) @ cdecl vsprintf(ptr str ptr) -@ cdecl vsprintf_s(ptr long str ptr) @ cdecl vswprintf(ptr wstr ptr) -@ cdecl vswprintf_s(ptr long wstr ptr) @ cdecl vwprintf(wstr ptr) -@ cdecl vwprintf_s(wstr ptr) @ cdecl wcscat(wstr wstr) -@ cdecl wcscat_s(wstr long wstr) @ cdecl wcschr(wstr long) @ cdecl wcscmp(wstr wstr) @ cdecl wcscoll(wstr wstr) @ cdecl wcscpy(ptr wstr) -@ cdecl wcscpy_s(ptr long wstr) @ cdecl wcscspn(wstr wstr) @ cdecl wcsftime(ptr long wstr ptr) @ cdecl wcslen(wstr) @ cdecl wcsncat(wstr wstr long) -@ cdecl wcsncat_s(wstr long wstr long) @ cdecl wcsncmp(wstr wstr long) @ cdecl wcsncpy(ptr wstr long) -@ cdecl wcsncpy_s(ptr long wstr long) @ cdecl wcsnlen(wstr long) @ cdecl wcspbrk(wstr wstr) @ cdecl wcsrchr(wstr long) @@ -988,16 +930,24 @@ @ cdecl wcsstr(wstr wstr) @ cdecl wcstod(wstr ptr) @ cdecl wcstok(wstr wstr) -@ cdecl wcstok_s(ptr wstr ptr) @ cdecl wcstol(wstr ptr long) @ cdecl wcstombs(ptr ptr long) @ cdecl wcstoul(wstr ptr long) @ cdecl wcsxfrm(ptr wstr long) @ cdecl wctomb(ptr long) @ varargs wprintf(wstr) -@ varargs wprintf_s(wstr) @ varargs wscanf(wstr) # Functions not exported in native dll: @ cdecl _get_invalid_parameter_handler() @ cdecl _set_invalid_parameter_handler(ptr) +# Gecko +@ cdecl _controlfp_s(ptr long long) +@ varargs _snwprintf_s(ptr long long ptr) +@ cdecl _vsnprintf_s(ptr long long str ptr) +@ cdecl _vsnwprintf_s(ptr long long wstr ptr) +@ cdecl _wcslwr_s(wstr long) +@ cdecl _wfopen_s(ptr wstr wstr) +@ cdecl fopen_s(ptr str str) +@ cdecl strtok_s(ptr str ptr) +@ varargs swprintf_s(ptr long wstr) From 29fe434f7dcbabe79a9502c9b68565a1b1467d09 Mon Sep 17 00:00:00 2001 From: Christoph von Wittich Date: Mon, 26 May 2014 13:23:48 +0000 Subject: [PATCH 067/232] [hivecls.inf] French translation by Pierre Schweitzer svn path=/trunk/; revision=63462 --- reactos/boot/bootdata/hivecls.inf | Bin 52838 -> 53134 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/reactos/boot/bootdata/hivecls.inf b/reactos/boot/bootdata/hivecls.inf index 4def49638048d1273b615bb4a382214f309f4c54..ca55b5d400f395a0d6182a8e35acf71e098640d5 100644 GIT binary patch delta 159 zcmaDhhq-S)^M;snll{(eal0`DF}O1LF*q}LOin&)%ji6L;Tg%vMO8w&3JfU>r3?xT z0St)@c|e#7q(S@?AWH$LJ|8Gn!cfHUg&~I_b@KBwx{jp`Wk7x=5Gw%HmI2iz16e>> LAW57lzUL$Xi)bhK delta 20 bcmeC1&-`o-^M;snT&@iM3~mg(3|tHVPuc~G From 61651b63ee05ab34e9cf255ef87104bf7482fbc4 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Mon, 26 May 2014 13:48:49 +0000 Subject: [PATCH 068/232] [HELP][SHUTDOWN] * Use vfwprintf instead of _vcwprintf which shouldn't be exported. CORE-8174 svn path=/trunk/; revision=63463 --- reactos/base/applications/cmdutils/help/help.c | 2 +- reactos/base/applications/shutdown/shutdown.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/reactos/base/applications/cmdutils/help/help.c b/reactos/base/applications/cmdutils/help/help.c index 2a2b67cb5ba..668e930a113 100644 --- a/reactos/base/applications/cmdutils/help/help.c +++ b/reactos/base/applications/cmdutils/help/help.c @@ -56,7 +56,7 @@ VOID PrintResourceString(INT resID, ...) // FIXME: Optimize by using Win32 console functions. if (IsConsoleHandle(OutputHandle)) { - _vcwprintf(tmpBuffer, arg_ptr); + vfwprintf(stdout, tmpBuffer, arg_ptr); } else { diff --git a/reactos/base/applications/shutdown/shutdown.c b/reactos/base/applications/shutdown/shutdown.c index 37942e55113..b162d7a78ea 100644 --- a/reactos/base/applications/shutdown/shutdown.c +++ b/reactos/base/applications/shutdown/shutdown.c @@ -22,7 +22,7 @@ VOID PrintResourceString(INT resID, ...) va_start(arg_ptr, resID); LoadStringW(GetModuleHandle(NULL), resID, tmpBuffer, MAX_BUFFER_SIZE); - _vcwprintf(tmpBuffer, arg_ptr); + vfwprintf(stdout, tmpBuffer, arg_ptr); va_end(arg_ptr); } From 9cee13244a692625df9d0e7dc428276ac2833fd2 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Mon, 26 May 2014 14:03:24 +0000 Subject: [PATCH 069/232] [TCPSVCS] * Use swprintf instead of _swprintf which shouldn't be exported. CORE-8174 svn path=/trunk/; revision=63464 --- reactos/base/services/tcpsvcs/discard.c | 2 +- reactos/base/services/tcpsvcs/echo.c | 4 +-- reactos/base/services/tcpsvcs/skelserver.c | 32 ++++++++++------------ reactos/base/services/tcpsvcs/tcpsvcs.c | 6 ++-- reactos/base/services/tcpsvcs/tcpsvcs.h | 4 --- 5 files changed, 21 insertions(+), 27 deletions(-) diff --git a/reactos/base/services/tcpsvcs/discard.c b/reactos/base/services/tcpsvcs/discard.c index 8ac3d667ac9..a900b71b644 100644 --- a/reactos/base/services/tcpsvcs/discard.c +++ b/reactos/base/services/tcpsvcs/discard.c @@ -24,7 +24,7 @@ ReceiveIncomingPackets(SOCKET sock) { TCHAR logBuf[256]; - _swprintf(logBuf, L"Discard: Received %d bytes from client", readBytes); + swprintf(logBuf, L"Discard: Received %d bytes from client", readBytes); LogEvent(logBuf, 0, 0, LOG_FILE); } else if (readBytes == SOCKET_ERROR) diff --git a/reactos/base/services/tcpsvcs/echo.c b/reactos/base/services/tcpsvcs/echo.c index 95aed129bfd..e92732c899f 100644 --- a/reactos/base/services/tcpsvcs/echo.c +++ b/reactos/base/services/tcpsvcs/echo.c @@ -25,7 +25,7 @@ EchoIncomingPackets(SOCKET sock) readBytes = recv(sock, readBuffer, RECV_BUF, 0); if (readBytes > 0) { - _swprintf(logBuf, L"Received %d bytes from client", readBytes); + swprintf(logBuf, L"Received %d bytes from client", readBytes); LogEvent(logBuf, 0, 0, LOG_FILE); totalSentBytes = 0; @@ -34,7 +34,7 @@ EchoIncomingPackets(SOCKET sock) retVal = send(sock, readBuffer + totalSentBytes, readBytes - totalSentBytes, 0); if (retVal > 0) { - _swprintf(logBuf, L"Sent %d bytes back to client", retVal); + swprintf(logBuf, L"Sent %d bytes back to client", retVal); LogEvent(logBuf, 0, 0, LOG_FILE); totalSentBytes += retVal; } diff --git a/reactos/base/services/tcpsvcs/skelserver.c b/reactos/base/services/tcpsvcs/skelserver.c index 20bf8e374be..1b5e6d61584 100644 --- a/reactos/base/services/tcpsvcs/skelserver.c +++ b/reactos/base/services/tcpsvcs/skelserver.c @@ -84,14 +84,14 @@ AcceptConnections(SOCKET listeningSocket, sock = accept(listeningSocket, (SOCKADDR*)&client, &addrSize); if (sock != INVALID_SOCKET) { - _swprintf(logBuf, - L"Accepted connection to %s server from %S:%d", - lpName, - inet_ntoa(client.sin_addr), - ntohs(client.sin_port)); + swprintf(logBuf, + L"Accepted connection to %s server from %S:%d", + lpName, + inet_ntoa(client.sin_addr), + ntohs(client.sin_port)); LogEvent(logBuf, 0, 0, LOG_FILE); - _swprintf(logBuf, L"Creating worker thread for %s", lpName); + swprintf(logBuf, L"Creating worker thread for %s", lpName); LogEvent(logBuf, 0, 0, LOG_FILE); if (!bShutdown) @@ -103,8 +103,8 @@ AcceptConnections(SOCKET listeningSocket, } else { - _swprintf(logBuf, L"Failed to start worker thread for the %s server", - lpName); + swprintf(logBuf, L"Failed to start worker thread for the %s server", + lpName); LogEvent(logBuf, 0, 0, LOG_FILE); } } @@ -149,7 +149,7 @@ ShutdownConnection(SOCKET sock, ret = recv(sock, readBuffer, BUF, 0); if (ret >= 0) { - _swprintf(logBuf, L"FYI, received %d unexpected bytes during shutdown", ret); + swprintf(logBuf, L"FYI, received %d unexpected bytes during shutdown", ret); LogEvent(logBuf, 0, 0, LOG_FILE); } } while (ret > 0); @@ -170,7 +170,7 @@ StartServer(LPVOID lpParam) pServices = (PSERVICES)lpParam; - _swprintf(logBuf, L"Starting %s server", pServices->lpName); + swprintf(logBuf, L"Starting %s server", pServices->lpName); LogEvent(logBuf, 0, 0, LOG_FILE); if (!bShutdown) @@ -178,10 +178,10 @@ StartServer(LPVOID lpParam) listeningSocket = SetUpListener(htons(pServices->Port)); if (!bShutdown && listeningSocket != INVALID_SOCKET) { - _swprintf(logBuf, - L"%s is waiting for connections on port %d", - pServices->lpName, - pServices->Port); + swprintf(logBuf, + L"%s is waiting for connections on port %d", + pServices->lpName, + pServices->Port); LogEvent(logBuf, 0, 0, LOG_FILE); AcceptConnections(listeningSocket, pServices->lpService, pServices->lpName); @@ -192,9 +192,7 @@ StartServer(LPVOID lpParam) } } - _swprintf(logBuf, - L"Exiting %s thread", - pServices->lpName); + swprintf(logBuf, L"Exiting %s thread", pServices->lpName); LogEvent(logBuf, 0, 0, LOG_FILE); ExitThread(0); } diff --git a/reactos/base/services/tcpsvcs/tcpsvcs.c b/reactos/base/services/tcpsvcs/tcpsvcs.c index 345a19f5daf..f025b6746c2 100644 --- a/reactos/base/services/tcpsvcs/tcpsvcs.c +++ b/reactos/base/services/tcpsvcs/tcpsvcs.c @@ -72,7 +72,7 @@ CreateServers(PSERVICEINFO pServInfo) if ((RetVal = WSAStartup(MAKEWORD(2, 2), &wsaData)) != 0) { - _swprintf(buf, L"WSAStartup() failed : %lu\n", RetVal); + swprintf(buf, L"WSAStartup() failed : %lu\n", RetVal); LogEvent(buf, 0, 100, LOG_ALL); return FALSE; } @@ -84,7 +84,7 @@ CreateServers(PSERVICEINFO pServInfo) /* Create worker threads. */ for (i = 0; i < NUM_SERVICES; i++) { - _swprintf(buf, L"Creating thread for %s server", Services[i].lpName); + swprintf(buf, L"Creating thread for %s server", Services[i].lpName); LogEvent(buf, 0, 0, LOG_FILE); hThread[i] = CreateThread(NULL, @@ -96,7 +96,7 @@ CreateServers(PSERVICEINFO pServInfo) if (hThread[i] == NULL) { - _swprintf(buf, L"\nError creating %s server thread\n", Services[i].lpName); + swprintf(buf, L"\nError creating %s server thread\n", Services[i].lpName); LogEvent(buf, GetLastError(), 0, LOG_ALL); return FALSE; } diff --git a/reactos/base/services/tcpsvcs/tcpsvcs.h b/reactos/base/services/tcpsvcs/tcpsvcs.h index 87f27eb34c5..b024e7c2513 100644 --- a/reactos/base/services/tcpsvcs/tcpsvcs.h +++ b/reactos/base/services/tcpsvcs/tcpsvcs.h @@ -10,10 +10,6 @@ #include #include -#ifndef _MSC_VER -#define _swprintf swprintf -#endif - #define LOG_FILE 1 #define LOG_EVENTLOG 2 #define LOG_ERROR 4 From e8a5e5820ed67d13fb38903b26b5e448a8fdb69e Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Mon, 26 May 2014 14:24:06 +0000 Subject: [PATCH 070/232] [APPWIZ] * Don't use _swprintf in the MSVC build, it shouldn't be exported. CORE-8174 svn path=/trunk/; revision=63465 --- reactos/dll/cpl/appwiz/createlink.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/reactos/dll/cpl/appwiz/createlink.c b/reactos/dll/cpl/appwiz/createlink.c index a5ac3c44890..361ca156c9e 100644 --- a/reactos/dll/cpl/appwiz/createlink.c +++ b/reactos/dll/cpl/appwiz/createlink.c @@ -226,11 +226,7 @@ WelcomeDlgProc(HWND hwndDlg, LoadStringW(hApplet, IDS_ERROR_NOT_FOUND, szPath, MAX_PATH) < MAX_PATH) { WCHAR szError[MAX_PATH + 100]; -#ifdef _MSC_VER - _swprintf(szError, szPath, pContext->szTarget); -#else swprintf(szError, szPath, pContext->szTarget); -#endif MessageBoxW(hwndDlg, szError, szDesc, MB_ICONERROR); } SendDlgItemMessage(hwndDlg, IDC_SHORTCUT_LOCATION, EM_SETSEL, 0, -1); From 9d2d8d8d7d42a8812c65460c227c4fcee36e31e6 Mon Sep 17 00:00:00 2001 From: Christoph von Wittich Date: Mon, 26 May 2014 14:33:26 +0000 Subject: [PATCH 072/232] [bootdata] Polish translation by Olaf Siejka svn path=/trunk/; revision=63467 --- reactos/boot/bootdata/hivecls.inf | Bin 53134 -> 53406 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/reactos/boot/bootdata/hivecls.inf b/reactos/boot/bootdata/hivecls.inf index ca55b5d400f395a0d6182a8e35acf71e098640d5..6241eaade9c500bc6d3c08ec97ea3ec1b18e1b5c 100644 GIT binary patch delta 156 zcmeC1&pdA-^M Date: Mon, 26 May 2014 15:28:12 +0000 Subject: [PATCH 073/232] [CMAKE/ARM] * Add armasm assembler support. Inspired by Yuntian Zhang's patch. CORE-7439 svn path=/trunk/; revision=63468 --- reactos/cmake/msvc.cmake | 47 ++++++++++++++++++++++++++++++------ reactos/toolchain-msvc.cmake | 2 ++ 2 files changed, 42 insertions(+), 7 deletions(-) diff --git a/reactos/cmake/msvc.cmake b/reactos/cmake/msvc.cmake index 7d3cedd4522..c05850f43ea 100644 --- a/reactos/cmake/msvc.cmake +++ b/reactos/cmake/msvc.cmake @@ -103,9 +103,15 @@ else() set(rc_nologo_flag) endif() set(CMAKE_RC_COMPILE_OBJECT " ${rc_nologo_flag} ${I18N_DEFS} /fo ") - set(CMAKE_ASM_COMPILE_OBJECT - "cl ${cl_includes_flag} /nologo /X /I${REACTOS_SOURCE_DIR}/include/asm /I${REACTOS_BINARY_DIR}/include/asm /D__ASM__ /D_USE_ML /EP /c > .tmp" - " /nologo /Cp /Fo /c /Ta .tmp") + if(ARCH STREQUAL "arm") + set(CMAKE_ASM_COMPILE_OBJECT + "cl ${cl_includes_flag} /nologo /X /I${REACTOS_SOURCE_DIR}/include/asm /I${REACTOS_BINARY_DIR}/include/asm /D__ASM__ /D_USE_ML /EP /c > .tmp" + " -nologo -o .tmp") + else() + set(CMAKE_ASM_COMPILE_OBJECT + "cl ${cl_includes_flag} /nologo /X /I${REACTOS_SOURCE_DIR}/include/asm /I${REACTOS_BINARY_DIR}/include/asm /D__ASM__ /D_USE_ML /EP /c > .tmp" + " /nologo /Cp /Fo /c /Ta .tmp") + endif() endif() if(_VS_ANALYZE_) @@ -222,7 +228,13 @@ endfunction() # Define those for having real libraries set(CMAKE_IMPLIB_CREATE_STATIC_LIBRARY "LINK /LIB /NOLOGO /OUT: ") -set(CMAKE_STUB_ASM_COMPILE_OBJECT " /nologo /Cp /Fo /c /Ta ") + +if(ARCH STREQUAL "arm") + set(CMAKE_STUB_ASM_COMPILE_OBJECT " -nologo -o ") +else() + set(CMAKE_STUB_ASM_COMPILE_OBJECT " /nologo /Cp /Fo /c /Ta ") +endif() + function(add_delay_importlibs _module) get_target_property(_module_type ${_module} TYPE) if(_module_type STREQUAL "STATIC_LIBRARY") @@ -248,9 +260,14 @@ function(generate_import_lib _libname _dllname _spec_file) if(MSVC_IDE) # Compile the generated asm stub file + if(ARCH STREQUAL "arm") + set(_asm_stub_command ${CMAKE_ASM_COMPILER} -nologo -o ${_asm_stubs_file}.obj ${_asm_stubs_file}) + else() + set(_asm_stub_command ${CMAKE_ASM_COMPILER} /Cp /Fo${_asm_stubs_file}.obj /c /Ta ${_asm_stubs_file}) + endif() add_custom_command( OUTPUT ${_asm_stubs_file}.obj - COMMAND ${CMAKE_ASM_COMPILER} /Cp /Fo${_asm_stubs_file}.obj /c /Ta ${_asm_stubs_file} + COMMAND ${_asm_stub_command} DEPENDS ${_asm_stubs_file}) else() # Be clear about the "language" @@ -276,6 +293,9 @@ endfunction() if(ARCH STREQUAL "amd64") add_definitions(/D__x86_64) set(SPEC2DEF_ARCH x86_64) +elseif(ARCH STREQUAL "arm") + add_definitions(/D__arm__) + set(SPEC2DEF_ARCH arm) else() set(SPEC2DEF_ARCH i386) endif() @@ -320,6 +340,8 @@ set(PSEH_LIB "pseh") # both the x86 and x64 versions of ml are available. if((ARCH STREQUAL "amd64") AND (DEFINED ENV{VCINSTALLDIR})) set(CMAKE_ASM16_COMPILER $ENV{VCINSTALLDIR}/bin/ml.exe) +elseif(ARCH STREQUAL "arm") + set(CMAKE_ASM16_COMPILER armasm.exe) else() set(CMAKE_ASM16_COMPILER ml.exe) endif() @@ -333,9 +355,15 @@ function(CreateBootSectorTarget _target_name _asm_file _binary_file _base_addres COMMAND ${CMAKE_C_COMPILER} /nologo /X /I${REACTOS_SOURCE_DIR}/include/asm /I${REACTOS_BINARY_DIR}/include/asm /D__ASM__ /D_USE_ML /EP /c ${_asm_file} > ${_temp_file} DEPENDS ${_asm_file}) + if(ARCH STREQUAL "arm") + set(_asm16_command ${CMAKE_ASM16_COMPILER} -nologo -o ${_object_file} ${_temp_file}) + else() + set(_asm16_command ${CMAKE_ASM16_COMPILER} /nologo /Cp /Fo${_object_file} /c /Ta ${_temp_file}) + endif() + add_custom_command( OUTPUT ${_object_file} - COMMAND ${CMAKE_ASM16_COMPILER} /nologo /Cp /Fo${_object_file} /c /Ta ${_temp_file} + COMMAND ${_asm16_command} DEPENDS ${_temp_file}) add_custom_command( @@ -368,9 +396,14 @@ macro(add_asm_files _target) list(APPEND _source_file_defines -D${_define}) endif() endforeach() + if(ARCH STREQUAL "arm") + set(_pp_asm_compile_command ${CMAKE_ASM_COMPILER} -nologo -o ${_object_file} ${_preprocessed_asm_file}) + else() + set(_pp_asm_compile_command ${CMAKE_ASM_COMPILER} /nologo /Cp /Fo${_object_file} /c /Ta ${_preprocessed_asm_file}) + endif() add_custom_command( OUTPUT ${_preprocessed_asm_file} ${_object_file} - COMMAND cl /nologo /X /I${REACTOS_SOURCE_DIR}/include/asm /I${REACTOS_BINARY_DIR}/include/asm ${_directory_includes} ${_source_file_defines} ${_directory_defines} /D__ASM__ /D_USE_ML /EP /c ${_source_file_full_path} > ${_preprocessed_asm_file} && ${CMAKE_ASM_COMPILER} /nologo /Cp /Fo${_object_file} /c /Ta ${_preprocessed_asm_file} + COMMAND cl /nologo /X /I${REACTOS_SOURCE_DIR}/include/asm /I${REACTOS_BINARY_DIR}/include/asm ${_directory_includes} ${_source_file_defines} ${_directory_defines} /D__ASM__ /D_USE_ML /EP /c ${_source_file_full_path} > ${_preprocessed_asm_file} && ${_pp_asm_compile_command} DEPENDS ${_source_file_full_path}) set_source_files_properties(${_object_file} PROPERTIES EXTERNAL_OBJECT 1) list(APPEND ${_target} ${_object_file}) diff --git a/reactos/toolchain-msvc.cmake b/reactos/toolchain-msvc.cmake index 52d4f4336fb..cf675a5a975 100644 --- a/reactos/toolchain-msvc.cmake +++ b/reactos/toolchain-msvc.cmake @@ -21,6 +21,8 @@ set(CMAKE_MC_COMPILER mc) set(CMAKE_RC_COMPILER rc) if(ARCH STREQUAL "amd64") set(CMAKE_ASM_COMPILER ml64) +elseif(ARCH STREQUAL "arm") + set(CMAKE_ASM_COMPILER armasm) else() set(CMAKE_ASM_COMPILER ml) endif() From f7e65fe136f05d34ba0914d4b621dfa7ae2fa319 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Mon, 26 May 2014 15:31:07 +0000 Subject: [PATCH 074/232] [CMAKE/ARM] * Do not handle hotpatchable images in MSVC ARM builds (the flag is unknown to the compiler). svn path=/trunk/; revision=63469 --- reactos/cmake/CMakeMacros.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/cmake/CMakeMacros.cmake b/reactos/cmake/CMakeMacros.cmake index f22723bbbef..fcb11dbdc09 100644 --- a/reactos/cmake/CMakeMacros.cmake +++ b/reactos/cmake/CMakeMacros.cmake @@ -459,7 +459,7 @@ function(set_module_type MODULE TYPE) # Handle hotpatchable images. # GCC has this as a function attribute so we're handling it using DECLSPEC_HOTPATCH - if(__module_HOTPATCHABLE AND MSVC) + if(__module_HOTPATCHABLE AND MSVC AND (NOT ARCH STREQUAL "arm")) set_property(TARGET ${MODULE} APPEND_STRING PROPERTY COMPILE_FLAGS " /hotpatch") if(ARCH STREQUAL "i386") set_property(TARGET ${MODULE} APPEND_STRING PROPERTY LINK_FLAGS " /FUNCTIONPADMIN:5") From 643b00912f896a6b25d3d98f9d107cd31f6dc9be Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Mon, 26 May 2014 15:32:48 +0000 Subject: [PATCH 075/232] [CMAKE] * Fix what seems to be a typo in the definition. svn path=/trunk/; revision=63470 --- reactos/cmake/msvc.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/cmake/msvc.cmake b/reactos/cmake/msvc.cmake index c05850f43ea..d0ca86e3ef4 100644 --- a/reactos/cmake/msvc.cmake +++ b/reactos/cmake/msvc.cmake @@ -291,7 +291,7 @@ function(generate_import_lib _libname _dllname _spec_file) endfunction() if(ARCH STREQUAL "amd64") - add_definitions(/D__x86_64) + add_definitions(/D__x86_64__) set(SPEC2DEF_ARCH x86_64) elseif(ARCH STREQUAL "arm") add_definitions(/D__arm__) From eebbc5e6b499fc4df54356bdf74f7fdb04e97be2 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Mon, 26 May 2014 15:39:58 +0000 Subject: [PATCH 076/232] [MSTSC] * Don't use _swprintf in the MSVC build, it shouldn't be exported. CORE-8174 svn path=/trunk/; revision=63471 --- .../base/applications/mstsc/connectdialog.c | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/reactos/base/applications/mstsc/connectdialog.c b/reactos/base/applications/mstsc/connectdialog.c index c67ecd9a9e6..f01e145d0dc 100644 --- a/reactos/base/applications/mstsc/connectdialog.c +++ b/reactos/base/applications/mstsc/connectdialog.c @@ -647,19 +647,11 @@ OnResolutionChanged(PINFO pInfo, INT position) Pixel, sizeof(Pixel) / sizeof(WCHAR))) { -#ifdef _MSC_VER - _swprintf(Buffer, - Pixel, - pInfo->DisplayDeviceList->Resolutions[position].dmPelsWidth, - pInfo->DisplayDeviceList->Resolutions[position].dmPelsHeight, - Pixel); -#else - swprintf(Buffer, - Pixel, - pInfo->DisplayDeviceList->Resolutions[position].dmPelsWidth, - pInfo->DisplayDeviceList->Resolutions[position].dmPelsHeight, - Pixel); -#endif + swprintf(Buffer, + Pixel, + pInfo->DisplayDeviceList->Resolutions[position].dmPelsWidth, + pInfo->DisplayDeviceList->Resolutions[position].dmPelsHeight, + Pixel); } } From ca9594dadfd3d632e92f2bc93e861fd826803ca0 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Mon, 26 May 2014 16:10:49 +0000 Subject: [PATCH 077/232] [MSVCRT] * Zap some exports that do not exist in native. * Reorder some exports. CORE-8174 svn path=/trunk/; revision=63472 --- reactos/dll/win32/msvcrt/msvcrt.spec | 35 ++-------------------------- 1 file changed, 2 insertions(+), 33 deletions(-) diff --git a/reactos/dll/win32/msvcrt/msvcrt.spec b/reactos/dll/win32/msvcrt/msvcrt.spec index 15047b12791..1c98236930b 100644 --- a/reactos/dll/win32/msvcrt/msvcrt.spec +++ b/reactos/dll/win32/msvcrt/msvcrt.spec @@ -270,14 +270,12 @@ # stub _cputws @ cdecl _creat(str long) @ varargs _cscanf(str) -@ cdecl _ctime32(ptr) @ cdecl _ctime64(ptr) @ extern _ctype @ cdecl _cwait(ptr long long) @ varargs _cwprintf(wstr) # @ varargs _cwscanf(wstr) @ extern _daylight -@ cdecl _difftime32(long long) @ cdecl _difftime64(long long) @ extern _dstbias @ cdecl _dup(long) @@ -334,28 +332,17 @@ @ cdecl _fstati64(long ptr) @ cdecl -ret64 _ftelli64(ptr) @ cdecl _ftime(ptr) -@ cdecl _ftime32(ptr) @ cdecl _ftime64(ptr) @ cdecl -arch=i386 -ret64 _ftol() @ cdecl -arch=i386 -ret64 _ftol2() _ftol @ cdecl -arch=i386 -ret64 _ftol2_sse() _ftol #FIXME: SSE variant should be implemented @ cdecl _fullpath(ptr str long) @ cdecl _futime(long ptr) -@ cdecl _futime32(long ptr) @ cdecl _futime64(long ptr) @ cdecl _gcvt(double long str) -@ cdecl _get_doserrno(ptr) -@ cdecl _get_errno(ptr) # @ cdecl _get_heap_handle() @ cdecl _get_osfhandle(long) -@ cdecl _get_osplatform(ptr) -@ cdecl _get_output_format() -@ cdecl _get_pgmptr(ptr) @ cdecl _get_sbh_threshold() -@ cdecl _get_wpgmptr(ptr) -@ cdecl _get_terminate() -@ cdecl _get_tzname(ptr str long long) -@ cdecl _get_unexpected() @ cdecl _getch() @ cdecl _getche() @ cdecl _getcwd(str long) @@ -373,7 +360,6 @@ # stub _getwche @ cdecl _getws(ptr) @ cdecl -i386 _global_unwind2(ptr) -@ cdecl _gmtime32(ptr) @ cdecl _gmtime64(ptr) @ cdecl _heapadd(ptr long) @ cdecl _heapchk() @@ -389,11 +375,9 @@ @ cdecl -arch=i386 _inp(long) MSVCRT__inp @ cdecl -arch=i386 _inpd(long) MSVCRT__inpd @ cdecl -arch=i386 _inpw(long) MSVCRT__inpw -@ cdecl _invalid_parameter(wstr wstr wstr long long) @ extern _iob @ cdecl _isatty(long) @ cdecl _isctype(long long) -@ cdecl _isctype_l(long long ptr) @ cdecl _ismbbalnum(long) @ cdecl _ismbbalpha(long) @ cdecl _ismbbgraph(long) @@ -434,7 +418,6 @@ @ cdecl _loaddll(str) @ cdecl -i386 _local_unwind2(ptr long) @ cdecl -i386 _local_unwind4(ptr ptr long) -@ cdecl _localtime32(ptr) @ cdecl _localtime64(ptr) @ cdecl _lock(long) @ cdecl _locking(long long long) @@ -507,10 +490,8 @@ @ cdecl _memicmp(str str long) @ cdecl _mkdir(str) @ cdecl _mkgmtime(ptr) -@ cdecl _mkgmtime32(ptr) @ cdecl _mkgmtime64(ptr) @ cdecl _mktemp(str) -@ cdecl _mktime32(ptr) @ cdecl _mktime64(ptr) @ cdecl _msize(ptr) @ cdecl _nextafter(double double) @@ -553,8 +534,6 @@ @ stdcall -i386 _seh_longjmp_unwind4(ptr) @ stdcall -i386 _seh_longjmp_unwind(ptr) # stub _set_SSE2_enable -@ cdecl _set_doserrno(long) -@ cdecl _set_errno(long) @ cdecl _set_error_mode(long) @ cdecl _set_sbh_threshold(long) @ cdecl _seterrormode(long) @@ -602,13 +581,11 @@ @ cdecl _strtoui64(str ptr long) strtoull @ cdecl _strupr(str) @ cdecl _swab(str str long) -@ varargs _swprintf(ptr str) swprintf @ extern _sys_errlist @ extern _sys_nerr @ cdecl _tell(long) @ cdecl -ret64 _telli64(long) @ cdecl _tempnam(str str) -@ cdecl _time32(ptr) @ cdecl _time64(ptr) @ extern _timezone @ cdecl _tolower(long) @@ -625,17 +602,12 @@ @ cdecl _unlink(str) @ cdecl _unloaddll(long) @ cdecl _unlock(long) -@ cdecl _utime32(str ptr) -@ cdecl _utime64(str ptr) -@ cdecl _vcwprintf(wstr ptr) @ cdecl _utime(str ptr) +@ cdecl _utime64(str ptr) @ cdecl _vscprintf(str ptr) @ cdecl _vscwprintf(wstr ptr) @ cdecl _vsnprintf(ptr long str ptr) -@ cdecl _vsnprintf_c(ptr long str ptr) _vsnprintf @ cdecl _vsnwprintf(ptr long wstr ptr) -@ cdecl _vsprintf_p(ptr long str ptr) -@ cdecl _vswprintf_c(ptr long wstr ptr) _vsnwprintf @ cdecl _waccess(wstr long) @ cdecl _wasctime(ptr) @ cdecl _wchdir(wstr) @@ -654,11 +626,9 @@ @ cdecl _wcsrev(wstr) @ cdecl _wcsset(wstr long) @ cdecl _wcstoi64(wstr ptr long) -@ cdecl _wcstombs_l(ptr ptr long ptr) @ cdecl _wcstoui64(wstr ptr long) @ cdecl _wcsupr(wstr) @ cdecl _wctime(ptr) -@ cdecl _wctime32(ptr) @ cdecl _wctime64(ptr) # stub _wctype @ extern _wenviron @@ -712,8 +682,8 @@ @ cdecl _wspawnvpe(long wstr ptr ptr) @ cdecl _wsplitpath(wstr ptr ptr ptr ptr) @ cdecl _wstat(wstr ptr) -@ cdecl _wstati64(wstr ptr) @ cdecl _wstat64(wstr ptr) +@ cdecl _wstati64(wstr ptr) @ cdecl _wstrdate(ptr) @ cdecl _wstrtime(ptr) @ cdecl _wsystem(wstr) @@ -725,7 +695,6 @@ @ cdecl _wtol(wstr) @ cdecl _wunlink(wstr) @ cdecl _wutime(wstr ptr) -@ cdecl _wutime32(wstr ptr) @ cdecl _wutime64(wstr ptr) @ cdecl _y0(double) @ cdecl _y1(double) From b1cf7ccf19be2b4086affe06b2772bfd6f059d71 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Mon, 26 May 2014 18:04:49 +0000 Subject: [PATCH 078/232] [STLPORT] * Don't use _fseeki64 which shouldn't be exported. CORE-8174 svn path=/trunk/; revision=63473 --- reactos/lib/3rdparty/stlport/src/stdio_streambuf.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/lib/3rdparty/stlport/src/stdio_streambuf.cpp b/reactos/lib/3rdparty/stlport/src/stdio_streambuf.cpp index 45aad790a6c..d49e10ad287 100644 --- a/reactos/lib/3rdparty/stlport/src/stdio_streambuf.cpp +++ b/reactos/lib/3rdparty/stlport/src/stdio_streambuf.cpp @@ -34,7 +34,7 @@ _STLP_MOVE_TO_PRIV_NAMESPACE #if defined (_STLP_USE_DEFAULT_FILE_OFFSET) || \ (!defined(_LARGEFILE_SOURCE) && !defined(_LARGEFILE64_SOURCE)) -# if !defined (_STLP_MSVC) || (_STLP_MSVC < 1400) || defined(_STLP_WCE) +# if !defined (_STLP_MSVC) || (_STLP_MSVC < 1400) || defined(_STLP_WCE) || defined(__REACTOS__) # define FSEEK fseek # else # define FSEEK _fseeki64 From 87a2f6205378e4d2a3723377615038ad73b6fda0 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Mon, 26 May 2014 18:18:51 +0000 Subject: [PATCH 079/232] [MSVCRT] * Zap some exports that do not exist in native. * Reorder some exports. CORE-8174 svn path=/trunk/; revision=63474 --- reactos/dll/win32/msvcrt/msvcrt.spec | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/reactos/dll/win32/msvcrt/msvcrt.spec b/reactos/dll/win32/msvcrt/msvcrt.spec index 1c98236930b..3d2a545996c 100644 --- a/reactos/dll/win32/msvcrt/msvcrt.spec +++ b/reactos/dll/win32/msvcrt/msvcrt.spec @@ -1,6 +1,5 @@ # msvcrt.dll - MS VC++ Run Time Library -@ cdecl $I10_OUTPUT() MSVCRT_I10_OUTPUT @ cdecl -i386 -norelay ??0__non_rtti_object@@QAE@ABV0@@Z(ptr) __thiscall_MSVCRT___non_rtti_object_copy_ctor @ cdecl -arch=win64 -norelay ??0__non_rtti_object@@QEAA@AEBV0@@Z(ptr) MSVCRT___non_rtti_object_copy_ctor @ cdecl -i386 -norelay ??0__non_rtti_object@@QAE@PBD@Z(ptr) __thiscall_MSVCRT___non_rtti_object_ctor @@ -95,6 +94,7 @@ @ cdecl ?unexpected@@YAXXZ() MSVCRT_unexpected @ cdecl -i386 -norelay ?what@exception@@UBEPBDXZ() __thiscall_MSVCRT_what_exception @ cdecl -arch=x86_64 -stub -norelay ?what@exception@@UEBAPEBDXZ() __thiscall_MSVCRT_what_exception +@ cdecl $I10_OUTPUT() MSVCRT_I10_OUTPUT @ cdecl -arch=i386 _CIacos() @ cdecl -arch=i386 _CIasin() @ cdecl -arch=i386 _CIatan() @@ -127,7 +127,6 @@ # stub __CxxExceptionFilter @ cdecl -arch=i386,x86_64 -norelay __CxxFrameHandler(ptr ptr ptr ptr) @ cdecl -arch=i386 -norelay __CxxFrameHandler2(ptr ptr ptr ptr) __CxxFrameHandler -@ cdecl -arch=i386 -norelay __CxxFrameHandler3(ptr ptr ptr ptr) __CxxFrameHandler @ stdcall -i386 __CxxLongjmpUnwind(ptr) @ cdecl -i386 __CxxQueryExceptionSize() # stub -i386 __CxxRegisterExceptionObject @@ -152,11 +151,9 @@ @ cdecl __crtGetStringTypeW(long long wstr long ptr) @ cdecl __crtLCMapStringA(long long str long str long long long) @ cdecl __crtLCMapStringW(long long wstr long wstr long long long) -@ cdecl __daylight() __p__daylight @ cdecl __dllonexit(ptr ptr ptr) @ cdecl __doserrno() @ cdecl __fpecode() -@ cdecl __get_app_type() @ cdecl __getmainargs(ptr ptr ptr long ptr) @ extern __initenv @ cdecl __iob_func() @@ -276,7 +273,6 @@ @ varargs _cwprintf(wstr) # @ varargs _cwscanf(wstr) @ extern _daylight -@ cdecl _difftime64(long long) @ extern _dstbias @ cdecl _dup(long) @ cdecl _dup2(long long) @@ -288,7 +284,6 @@ @ cdecl _errno() @ cdecl -i386 _except_handler2(ptr ptr ptr ptr) @ cdecl -i386 _except_handler3(ptr ptr ptr ptr) -@ cdecl -i386 _except_handler4_common(ptr ptr ptr ptr ptr ptr) @ varargs _execl(str str) @ varargs _execle(str str) @ varargs _execlp(str str) @@ -325,17 +320,13 @@ @ cdecl _fpreset() @ cdecl _fputchar(long) @ cdecl _fputwchar(long) -@ cdecl _fseeki64(ptr long long long) @ cdecl _fsopen(str str long) @ cdecl _fstat(long ptr) @ cdecl _fstat64(long ptr) @ cdecl _fstati64(long ptr) -@ cdecl -ret64 _ftelli64(ptr) @ cdecl _ftime(ptr) @ cdecl _ftime64(ptr) @ cdecl -arch=i386 -ret64 _ftol() -@ cdecl -arch=i386 -ret64 _ftol2() _ftol -@ cdecl -arch=i386 -ret64 _ftol2_sse() _ftol #FIXME: SSE variant should be implemented @ cdecl _fullpath(ptr str long) @ cdecl _futime(long ptr) @ cdecl _futime64(long ptr) @@ -371,7 +362,6 @@ @ cdecl _i64toa(long long ptr long) @ cdecl _i64tow(long long ptr long) @ cdecl _initterm(ptr ptr) -@ cdecl _initterm_e(ptr ptr) @ cdecl -arch=i386 _inp(long) MSVCRT__inp @ cdecl -arch=i386 _inpd(long) MSVCRT__inpd @ cdecl -arch=i386 _inpw(long) MSVCRT__inpw @@ -417,7 +407,6 @@ @ cdecl _lfind(ptr ptr ptr long ptr) @ cdecl _loaddll(str) @ cdecl -i386 _local_unwind2(ptr long) -@ cdecl -i386 _local_unwind4(ptr ptr long) @ cdecl _localtime64(ptr) @ cdecl _lock(long) @ cdecl _locking(long long long) @@ -531,7 +520,6 @@ # stub _scprintf # stub _scwprintf @ cdecl _searchenv(str str ptr) -@ stdcall -i386 _seh_longjmp_unwind4(ptr) @ stdcall -i386 _seh_longjmp_unwind(ptr) # stub _set_SSE2_enable @ cdecl _set_error_mode(long) @@ -799,7 +787,6 @@ @ cdecl -i386 longjmp(ptr long) @ cdecl malloc(long) @ cdecl mblen(ptr long) -@ cdecl mbrlen(ptr long ptr) @ cdecl mbstowcs(ptr str long) @ cdecl mbtowc(wstr str long) @ cdecl memchr(ptr long long) @@ -851,7 +838,6 @@ @ cdecl strncat(str str long) @ cdecl strncmp(str str long) @ cdecl strncpy(ptr str long) -@ cdecl strnlen(str long) @ cdecl strpbrk(str str) @ cdecl strrchr(str long) @ cdecl strspn(str str) @@ -892,7 +878,6 @@ @ cdecl wcsncat(wstr wstr long) @ cdecl wcsncmp(wstr wstr long) @ cdecl wcsncpy(ptr wstr long) -@ cdecl wcsnlen(wstr long) @ cdecl wcspbrk(wstr wstr) @ cdecl wcsrchr(wstr long) @ cdecl wcsspn(wstr wstr) @@ -908,8 +893,7 @@ @ varargs wscanf(wstr) # Functions not exported in native dll: -@ cdecl _get_invalid_parameter_handler() -@ cdecl _set_invalid_parameter_handler(ptr) +@ cdecl -arch=i386 -norelay __CxxFrameHandler3(ptr ptr ptr ptr) __CxxFrameHandler # Gecko @ cdecl _controlfp_s(ptr long long) @ varargs _snwprintf_s(ptr long long ptr) From 49da4d9dc4157825dbe670493ef8e616db356c0d Mon Sep 17 00:00:00 2001 From: Kamil Hornicek Date: Mon, 26 May 2014 18:59:56 +0000 Subject: [PATCH 080/232] [GDI32] - return the correct flags in DdGetDriverInfo CORE-7070 svn path=/trunk/; revision=63475 --- reactos/win32ss/gdi/gdi32/misc/gdientry.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/win32ss/gdi/gdi32/misc/gdientry.c b/reactos/win32ss/gdi/gdi32/misc/gdientry.c index ac6545a28eb..8f37312bd37 100644 --- a/reactos/win32ss/gdi/gdi32/misc/gdientry.c +++ b/reactos/win32ss/gdi/gdi32/misc/gdientry.c @@ -1029,7 +1029,7 @@ DdGetDriverInfo(LPDDHAL_GETDRIVERINFODATA pData) pData->dwFlags = pDrvInfoData.dwFlags; pUserColorControl->dwSize = DDCOLORCONTROLCALLBACKSSIZE; - pUserColorControl->dwFlags = pUserColorControl->dwFlags; + pUserColorControl->dwFlags = pColorControl.dwFlags; if (pColorControl.ColorControl != NULL) { From 21d9569e72935bd226fca1ec0eda411196e4bd2b Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Mon, 26 May 2014 19:17:48 +0000 Subject: [PATCH 081/232] [NTDLL] * Zap some exports that do not exist in native. * Reorder some exports. * Add the missing ones. They are commented out and will be added on-demand. CORE-8174 svn path=/trunk/; revision=63476 --- reactos/dll/ntdll/def/ntdll.spec | 134 +++++++++++++++++-------------- 1 file changed, 74 insertions(+), 60 deletions(-) diff --git a/reactos/dll/ntdll/def/ntdll.spec b/reactos/dll/ntdll/def/ntdll.spec index c649d574d51..06be9877f52 100644 --- a/reactos/dll/ntdll/def/ntdll.spec +++ b/reactos/dll/ntdll/def/ntdll.spec @@ -1,4 +1,15 @@ - +;@ stdcall PropertyLengthAsVariant(ptr long long long) +;@ stdcall RtlConvertPropertyToVariant(ptr long ptr ptr) +;@ stdcall RtlConvertVariantToProperty(ptr long ptr ptr ptr long ptr) +@ fastcall RtlActivateActivationContextUnsafeFast(ptr ptr) +@ fastcall RtlDeactivateActivationContextUnsafeFast(ptr) +@ stdcall RtlInterlockedPushListSList(ptr ptr ptr long) +@ fastcall -arch=i386 RtlUlongByteSwap(long) +@ fastcall -ret64 RtlUlonglongByteSwap(double) +@ fastcall -arch=i386 RtlUshortByteSwap(long) +@ stdcall -arch=i386,x86_64 ExpInterlockedPopEntrySListEnd() +@ stdcall -arch=i386,x86_64 ExpInterlockedPopEntrySListFault() +@ stdcall -arch=i386,x86_64 ExpInterlockedPopEntrySListResume() @ stdcall CsrAllocateCaptureBuffer(long long) @ stdcall CsrAllocateMessagePointer(ptr long ptr) @ stdcall CsrCaptureMessageBuffer(ptr ptr long ptr) @@ -32,12 +43,42 @@ @ stdcall DbgUiStopDebugging(ptr) @ stdcall DbgUiWaitStateChange(ptr ptr) @ stdcall DbgUserBreakPoint() +# EtwControlTraceA +# EtwControlTraceW +# EtwCreateTraceInstanceId +# EtwEnableTrace +# EtwEnumerateTraceGuids +# EtwFlushTraceA +# EtwFlushTraceW +# EtwGetTraceEnableFlags +# EtwGetTraceEnableLevel +# EtwGetTraceLoggerHandle +# EtwNotificationRegistrationA +# EtwNotificationRegistrationW +# EtwQueryAllTracesA +# EtwQueryAllTracesW +# EtwQueryTraceA +# EtwQueryTraceW +# EtwReceiveNotificationsA +# EtwReceiveNotificationsW +# EtwRegisterTraceGuidsA +# EtwRegisterTraceGuidsW +# EtwStartTraceA +# EtwStartTraceW +# EtwStopTraceA +# EtwStopTraceW +# EtwTraceEvent +# EtwTraceEventInstance +# EtwTraceMessage +# EtwTraceMessageVa +# EtwUnregisterTraceGuids +# EtwUpdateTraceA +# EtwUpdateTraceW +# EtwpGetTraceBuffer +# EtwpSetHWConfigFunction @ stdcall -arch=i386 KiFastSystemCall() @ stdcall -arch=i386 KiFastSystemCallRet() @ stdcall -arch=i386 KiIntSystemCall() -@ stdcall -arch=i386,x86_64 ExpInterlockedPopEntrySListEnd() -@ stdcall -arch=i386,x86_64 ExpInterlockedPopEntrySListFault() -@ stdcall -arch=i386,x86_64 ExpInterlockedPopEntrySListResume() @ stdcall KiRaiseUserExceptionDispatcher() @ stdcall KiUserApcDispatcher(ptr ptr ptr ptr) @ stdcall KiUserCallbackDispatcher(ptr ptr long) ; CHECKME @@ -69,6 +110,7 @@ @ stdcall LdrOpenImageFileOptionsKey(ptr long ptr) ; 5.2 SP1 and higher @ stdcall LdrProcessRelocationBlock(ptr long ptr long) @ stdcall LdrQueryImageFileExecutionOptions(ptr str long ptr long ptr) +;@ stdcall LdrQueryImageFileExecutionOptionsEx(ptr ptr long ptr long ptr long) @ stdcall LdrQueryImageFileKeyOption(ptr ptr long ptr long ptr) @ stdcall LdrQueryProcessModuleInformation(ptr long ptr) ;@ stdcall LdrSetAppCompatDllRedirectionCallback @@ -148,6 +190,7 @@ @ stdcall NtDelayExecution(long ptr) @ stdcall NtDeleteAtom(long) @ stdcall NtDeleteBootEntry(long) +# NtDeleteDriverEntry @ stdcall NtDeleteFile(ptr) @ stdcall NtDeleteKey(long) @ stdcall NtDeleteObjectAuditAlarm(ptr ptr long) @@ -157,6 +200,7 @@ @ stdcall NtDuplicateObject(long long long ptr long long long) @ stdcall NtDuplicateToken(long long long long long long) @ stdcall NtEnumerateBootEntries(ptr ptr) +;@ stdcall NtEnumerateDriverEntries(ptr ptr) @ stdcall NtEnumerateKey (long long long long long long) @ stdcall NtEnumerateSystemEnvironmentValuesEx(long ptr long) @ stdcall NtEnumerateValueKey(long long long long long long) @@ -188,6 +232,7 @@ @ stdcall NtLoadDriver(ptr) @ stdcall NtLoadKey2(ptr ptr long) @ stdcall NtLoadKey(ptr ptr) +;@ stdcall NtLoadKeyEx(ptr ptr long ptr) @ stdcall NtLockFile(long long ptr ptr ptr ptr ptr ptr long long) @ stdcall NtLockProductActivationKeys(ptr ptr) @ stdcall NtLockRegistryKey(ptr) @@ -198,6 +243,7 @@ @ stdcall NtMapUserPhysicalPagesScatter(ptr ptr ptr) @ stdcall NtMapViewOfSection(long long ptr long long ptr ptr long long long) @ stdcall NtModifyBootEntry(ptr) +# NtModifyDriverEntry @ stdcall NtNotifyChangeDirectoryFile(long long ptr ptr ptr ptr long long long) @ stdcall NtNotifyChangeKey(long long ptr ptr ptr long long ptr long long) @ stdcall NtNotifyChangeMultipleKeys(ptr long ptr ptr ptr ptr ptr long long ptr long long) @@ -236,6 +282,7 @@ @ stdcall NtQueryDefaultUILanguage(ptr) @ stdcall NtQueryDirectoryFile(long long ptr ptr ptr ptr long long long ptr long) @ stdcall NtQueryDirectoryObject(long ptr long long long ptr ptr) +;@ stdcall NtQueryDriverEntryOrder(ptr ptr) @ stdcall NtQueryEaFile(long ptr ptr long long ptr long ptr long) @ stdcall NtQueryEvent(long long ptr long ptr) @ stdcall NtQueryFullAttributesFile(ptr ptr) @@ -254,6 +301,7 @@ @ stdcall NtQueryMutant(long long ptr long ptr) @ stdcall NtQueryObject(long long long long long) @ stdcall NtQueryOpenSubKeys(ptr ptr) +;@ stdcall NtQueryOpenSubKeysEx(ptr long ptr ptr) @ stdcall NtQueryPerformanceCounter(ptr ptr) @ stdcall NtQueryPortInformationProcess() @ stdcall NtQueryQuotaInformationFile(ptr ptr ptr long long ptr long ptr long) @@ -309,6 +357,7 @@ @ stdcall NtSetDefaultHardErrorPort(ptr) @ stdcall NtSetDefaultLocale(long long) @ stdcall NtSetDefaultUILanguage(long) +;@ stdcall NtSetDriverEntryOrder(ptr ptr) @ stdcall NtSetEaFile(long ptr ptr long) @ stdcall NtSetEvent(long long) @ stdcall NtSetEventBoostPriority(ptr) @@ -354,6 +403,7 @@ @ stdcall NtTraceEvent(long long long ptr) @ stdcall NtTranslateFilePath(ptr long ptr long) @ stdcall NtUnloadDriver(ptr) +;@ stdcall NtUnloadKey2(ptr long) @ stdcall NtUnloadKey(long) @ stdcall NtUnloadKeyEx(ptr ptr) @ stdcall NtUnlockFile(long ptr ptr ptr ptr) @@ -362,6 +412,7 @@ @ stdcall NtVdmControl(long ptr) @ stdcall NtWaitForDebugEvent(ptr long ptr ptr) @ stdcall NtWaitForKeyedEvent(ptr ptr long ptr) +;@ stdcall NtWaitForMultipleObjects32(long ptr long long ptr) @ stdcall NtWaitForMultipleObjects(long ptr long long ptr) @ stdcall NtWaitForSingleObject(long long long) @ stdcall NtWaitHighEventPair(ptr) @@ -375,18 +426,14 @@ ;@ stdcall PfxInitialize ;@ stdcall PfxInsertPrefix ;@ stdcall PfxRemovePrefix -;@ stdcall PropertyLengthAsVariant @ stdcall RtlAbortRXact(ptr) @ stdcall RtlAbsoluteToSelfRelativeSD(ptr ptr ptr) @ stdcall RtlAcquirePebLock() @ stdcall RtlAcquirePrivilege(ptr long long ptr) @ stdcall RtlAcquireResourceExclusive(ptr long) @ stdcall RtlAcquireResourceShared(ptr long) -@ stdcall RtlAcquireSRWLockExclusive(ptr) -@ stdcall RtlAcquireSRWLockShared(ptr) @ stdcall RtlActivateActivationContext(long ptr ptr) @ stdcall RtlActivateActivationContextEx(long ptr ptr ptr) -@ fastcall RtlActivateActivationContextUnsafeFast(ptr ptr) @ stdcall RtlAddAccessAllowedAce(ptr long long ptr) @ stdcall RtlAddAccessAllowedAceEx(ptr long long long ptr) @ stdcall RtlAddAccessAllowedObjectAce(ptr long long long ptr ptr ptr) @@ -401,9 +448,7 @@ @ stdcall RtlAddAuditAccessAceEx(ptr long long long ptr long long) @ stdcall RtlAddAuditAccessObjectAce(ptr long long long ptr ptr ptr long long) ;@ stdcall RtlAddCompoundAce -;@ stdcall RtlAddRange ; 5.0 and 5.1 only @ stdcall -arch=x86_64 RtlAddFunctionTable(ptr long long) -;@ stdcall RtlAddMandatoryAce(ptr long long long long ptr) @ stdcall RtlAddRefActivationContext(ptr) @ stdcall RtlAddRefMemoryStream(ptr) @ stdcall RtlAddVectoredContinueHandler(long ptr) @@ -454,19 +499,16 @@ @ stdcall RtlConsoleMultiByteToUnicodeN(ptr long ptr ptr long ptr) @ stdcall RtlConvertExclusiveToShared(ptr) @ stdcall -arch=win32 -ret64 RtlConvertLongToLargeInteger(long) -;@ stdcall RtlConvertPropertyToVariant @ stdcall RtlConvertSharedToExclusive(ptr) @ stdcall RtlConvertSidToUnicodeString(ptr ptr long) @ stdcall RtlConvertToAutoInheritSecurityObject(ptr ptr ptr ptr long ptr) ;@ stdcall RtlConvertUiListToApiList @ stdcall -arch=win32 -ret64 RtlConvertUlongToLargeInteger(long) -;@ stdcall RtlConvertVariantToProperty @ stdcall RtlCopyLuid(ptr ptr) @ stdcall RtlCopyLuidAndAttributesArray(long ptr ptr) ;@ stdcall RtlCopyMappedMemory @ stdcall RtlCopyMemoryStreamTo(ptr ptr int64 ptr ptr) @ stdcall RtlCopyOutOfProcessMemoryStreamTo(ptr ptr int64 ptr ptr) RtlCopyMemoryStreamTo -;@ stdcall RtlCopyRangeList ; 5.0 and 5.1 only @ stdcall RtlCopySecurityDescriptor(ptr ptr) @ stdcall RtlCopySid(long ptr ptr) @ stdcall RtlCopySidAndAttributesArray(long ptr long ptr ptr ptr ptr) @@ -496,7 +538,7 @@ @ stdcall RtlCutoverTimeToSystemTime(ptr ptr ptr long) @ stdcall RtlDeNormalizeProcessParams(ptr) @ stdcall RtlDeactivateActivationContext(long long) -@ fastcall RtlDeactivateActivationContextUnsafeFast(ptr) +# RtlDebugPrintTimes @ stdcall RtlDecodePointer(ptr) @ stdcall RtlDecodeSystemPointer(ptr) RtlEncodeSystemPointer @ stdcall RtlDecompressBuffer(long ptr long ptr long ptr) @@ -510,8 +552,6 @@ @ stdcall RtlDeleteElementGenericTableAvl(ptr ptr) @ cdecl -arch=x86_64 RtlDeleteFunctionTable(ptr) @ stdcall RtlDeleteNoSplay(ptr ptr) -@ stdcall RtlDeleteOwnersRanges(ptr ptr) -@ stdcall RtlDeleteRange(ptr long long long long ptr) @ stdcall RtlDeleteRegistryValue(long ptr ptr) @ stdcall RtlDeleteResource(ptr) @ stdcall RtlDeleteSecurityObject(ptr) @@ -579,18 +619,13 @@ @ stdcall RtlFindClearBitsAndSet(ptr long long) @ stdcall RtlFindClearRuns(ptr ptr long long) @ stdcall RtlFindLastBackwardRunClear(ptr long ptr) -;@ stdcall RtlFindLastBackwardRunSet(ptr long ptr) @ stdcall RtlFindLeastSignificantBit(double) @ stdcall RtlFindLongestRunClear(ptr long) -@ stdcall RtlFindLongestRunSet(ptr long) @ stdcall RtlFindMessage(long long long long ptr) @ stdcall RtlFindMostSignificantBit(double) @ stdcall RtlFindNextForwardRunClear(ptr long ptr) -;@ stdcall RtlFindNextForwardRunSet(ptr long ptr) -@ stdcall RtlFindRange(ptr long long long long long long long long ptr ptr ptr) @ stdcall RtlFindSetBits(ptr long long) @ stdcall RtlFindSetBitsAndClear(ptr long long) -;@ stdcall RtlFindSetRuns(ptr ptr long long) @ stdcall RtlFirstEntrySList(ptr) @ stdcall RtlFirstFreeAce(ptr ptr) @ stdcall RtlFlushSecureMemoryCache(ptr ptr) @@ -602,7 +637,6 @@ @ stdcall RtlFreeHandle(ptr ptr) @ stdcall RtlFreeHeap(long long long) @ stdcall RtlFreeOemString(ptr) -@ stdcall RtlFreeRangeList(ptr) @ stdcall RtlFreeSid(long) @ stdcall RtlFreeThreadActivationContextStack() @ stdcall RtlFreeUnicodeString(ptr) @@ -621,7 +655,6 @@ @ stdcall RtlGetDaclSecurityDescriptor(ptr ptr ptr ptr) @ stdcall RtlGetElementGenericTable(ptr long) @ stdcall RtlGetElementGenericTableAvl(ptr long) -@ stdcall RtlGetFirstRange(ptr ptr ptr) ;@ stdcall RtlGetFrame @ stdcall RtlGetFullPathName_U(wstr long ptr ptr) @ stdcall RtlGetFullPathName_UstrEx(ptr ptr ptr ptr ptr ptr ptr ptr) @@ -633,12 +666,10 @@ @ stdcall RtlGetLengthWithoutTrailingPathSeperators(long ptr ptr) RtlGetLengthWithoutTrailingPathSeparators @ stdcall RtlGetLongestNtPathLength() @ stdcall RtlGetNativeSystemInformation(long long long long) NtQuerySystemInformation -@ stdcall RtlGetNextRange(ptr ptr long) @ stdcall RtlGetNtGlobalFlags() @ stdcall RtlGetNtProductType(ptr) @ stdcall RtlGetNtVersionNumbers(ptr ptr ptr) @ stdcall RtlGetOwnerSecurityDescriptor(ptr ptr ptr) -;@ stdcall RtlGetProductInfo(long long long long ptr) @ stdcall RtlGetProcessHeaps(long ptr) @ stdcall RtlGetSaclSecurityDescriptor(ptr ptr ptr ptr) @ stdcall RtlGetSecurityDescriptorRMControl(ptr ptr) @@ -669,19 +700,17 @@ @ stdcall RtlInitializeContext(ptr ptr ptr ptr ptr) @ stdcall RtlInitializeCriticalSection(ptr) @ stdcall RtlInitializeCriticalSectionAndSpinCount(ptr long) -;@ stdcall RtlInitializeCriticalSectionEx(ptr long long) @ stdcall RtlInitializeGenericTable(ptr ptr ptr ptr ptr) @ stdcall RtlInitializeGenericTableAvl(ptr ptr ptr ptr ptr) @ stdcall RtlInitializeHandleTable(long long ptr) @ stdcall RtlInitializeRXact(ptr long ptr) -@ stdcall RtlInitializeRangeList(ptr) @ stdcall RtlInitializeResource(ptr) @ stdcall RtlInitializeSListHead(ptr) @ stdcall RtlInitializeSid(ptr ptr long) -@ stdcall RtlInitializeSRWLock(ptr) -;@ stdcall RtlInitializeStackTraceDataBase ; 5.1 SP2 and SP3, and 5.2 only @ stdcall RtlInsertElementGenericTable(ptr ptr long ptr) @ stdcall RtlInsertElementGenericTableAvl(ptr ptr long ptr) +# RtlInsertElementGenericTableFull +;@ stdcall RtlInsertElementGenericTableFullAvl(ptr ptr long ptr ptr long) @ stdcall -arch=x86_64 RtlInstallFunctionTableCallback(double double long ptr ptr ptr) @ stdcall RtlInt64ToUnicodeString(double long ptr) @ stdcall RtlIntegerToChar(long long long ptr) @@ -690,8 +719,6 @@ @ stdcall -arch=i386,x86_64 RtlInterlockedFlushSList(ptr) @ stdcall -arch=i386,x86_64 RtlInterlockedPopEntrySList(ptr) @ stdcall -arch=i386,x86_64 RtlInterlockedPushEntrySList(ptr ptr) -@ stdcall RtlInterlockedPushListSList(ptr ptr ptr long) -@ stdcall RtlInvertRangeList(ptr ptr) @ stdcall RtlIpv4AddressToStringA(ptr ptr) @ stdcall RtlIpv4AddressToStringExA(ptr long ptr ptr) @ stdcall RtlIpv4AddressToStringExW(ptr long ptr ptr) @@ -715,7 +742,6 @@ @ stdcall RtlIsGenericTableEmpty(ptr) @ stdcall RtlIsGenericTableEmptyAvl(ptr) @ stdcall RtlIsNameLegalDOS8Dot3(ptr ptr ptr) -@ stdcall RtlIsRangeAvailable(ptr long long long long long long ptr ptr ptr) @ stdcall RtlIsTextUnicode(ptr long ptr) @ stdcall RtlIsThreadWithinLoaderCallout() @ stdcall RtlIsValidHandle(ptr ptr) @@ -740,15 +766,18 @@ @ stdcall RtlLookupAtomInAtomTable(ptr wstr ptr) @ stdcall RtlLookupElementGenericTable(ptr ptr) @ stdcall RtlLookupElementGenericTableAvl(ptr ptr) +# RtlLookupElementGenericTableFull +# RtlLookupElementGenericTableFullAvl @ stdcall -arch=x86_64 RtlLookupFunctionEntry(long ptr ptr) @ stdcall RtlMakeSelfRelativeSD(ptr ptr ptr) @ stdcall RtlMapGenericMask(long ptr) ;@ stdcall RtlMapSecurityErrorToNtStatus -@ stdcall RtlMergeRangeLists(ptr ptr ptr long) @ stdcall RtlMoveMemory(ptr ptr long) @ stdcall RtlMultiAppendUnicodeStringBuffer(ptr long ptr) @ stdcall RtlMultiByteToUnicodeN(ptr long ptr ptr long) @ stdcall RtlMultiByteToUnicodeSize(ptr str long) +# RtlMultipleAllocateHeap +# RtlMultipleFreeHeap @ stdcall RtlNewInstanceSecurityObject(long long ptr ptr ptr ptr ptr long ptr ptr) @ stdcall RtlNewSecurityGrantedAccess(long ptr ptr ptr ptr ptr) @ stdcall RtlNewSecurityObject(ptr ptr ptr long ptr ptr) @@ -771,7 +800,6 @@ ;@ stdcall RtlPopFrame @ stdcall RtlPrefixString(ptr ptr long) @ stdcall RtlPrefixUnicodeString(ptr ptr long) -;@ stdcall RtlPropertySetNameToGuid ; 4.0 only @ stdcall RtlProtectHeap(ptr long) ;@ stdcall RtlPushFrame @ stdcall RtlQueryAtomInAtomTable(ptr long ptr ptr ptr ptr) @@ -786,9 +814,6 @@ @ stdcall RtlQueryProcessDebugInformation(long long ptr) ;@ stdcall RtlQueryProcessHeapInformation ;@ stdcall RtlQueryProcessLockInformation -;@ stdcall RtlQueryProperties ; 4.0 only -;@ stdcall RtlQueryPropertyNames ; 4.0 only -;@ stdcall RtlQueryPropertySet ; 4.0 only @ stdcall RtlQueryRegistryValues(long ptr ptr ptr ptr) @ stdcall RtlQuerySecurityObject(ptr long ptr long ptr) @ stdcall RtlQueryTagHeap(ptr long long long ptr) @@ -812,8 +837,6 @@ @ stdcall RtlReleasePrivilege(ptr) @ stdcall RtlReleaseRelativeName(ptr) @ stdcall RtlReleaseResource(ptr) -@ stdcall RtlReleaseSRWLockExclusive(ptr) -@ stdcall RtlReleaseSRWLockShared(ptr) @ stdcall RtlRemoteCall(ptr ptr ptr long ptr long long) @ stdcall RtlRemoveVectoredContinueHandler(ptr) @ stdcall RtlRemoveVectoredExceptionHandler(ptr) @@ -847,10 +870,6 @@ @ stdcall RtlSetMemoryStreamSize(ptr int64) @ stdcall RtlSetOwnerSecurityDescriptor(ptr ptr long) @ cdecl RtlSetProcessIsCritical(long ptr long) -;@ stdcall RtlSetProperties ; RtlSetProperties -;@ stdcall RtlSetPropertyClassId ; 4.0 only -;@ stdcall RtlSetPropertyNames ; 4.0 only -;@ stdcall RtlSetPropertySetClassId ; 4.0 only @ stdcall RtlSetSaclSecurityDescriptor(ptr long ptr long) @ stdcall RtlSetSecurityDescriptorRMControl(ptr ptr) @ stdcall RtlSetSecurityObject(long ptr ptr ptr ptr) @@ -865,8 +884,6 @@ @ stdcall RtlSetUserFlagsHeap(ptr long ptr long long) @ stdcall RtlSetUserValueHeap(ptr long ptr ptr) @ stdcall RtlSizeHeap(long long ptr) -@ stdcall RtlSleepConditionVariableCS(ptr ptr ptr) -@ stdcall RtlSleepConditionVariableSRW(ptr ptr ptr long) @ stdcall RtlSplay(ptr) @ stdcall RtlStartRXact(ptr) @ stdcall RtlStatMemoryStream(ptr ptr long) @@ -890,8 +907,6 @@ ;@ stdcall RtlTraceDatabaseUnlock ;@ stdcall RtlTraceDatabaseValidate @ stdcall RtlTryEnterCriticalSection(ptr) -@ fastcall -arch=i386 RtlUlongByteSwap(long) -@ fastcall -ret64 RtlUlonglongByteSwap(double) ;@ stdcall RtlUnhandledExceptionFilter2 @ stdcall RtlUnhandledExceptionFilter(ptr) ;@ stdcall RtlUnicodeStringToAnsiSize(ptr) @@ -922,7 +937,6 @@ @ stdcall RtlUpperChar(long) @ stdcall RtlUpperString(ptr ptr) @ stdcall RtlUsageHeap(ptr long ptr) -@ fastcall -arch=i386 RtlUshortByteSwap(long) @ stdcall RtlValidAcl(ptr) @ stdcall RtlValidRelativeSecurityDescriptor(ptr long long) @ stdcall RtlValidSecurityDescriptor(ptr) @@ -936,8 +950,6 @@ @ stdcall RtlWalkHeap(long ptr) @ stdcall RtlWow64EnableFsRedirection(long) @ stdcall RtlWow64EnableFsRedirectionEx(long ptr) -@ stdcall RtlWakeAllConditionVariable(ptr) -@ stdcall RtlWakeConditionVariable(ptr) @ stdcall RtlWriteMemoryStream(ptr ptr long ptr) @ stdcall RtlWriteRegistryValue(long ptr ptr long ptr long) @ stdcall RtlZeroHeap(ptr long) @@ -969,6 +981,7 @@ @ stdcall ZwAccessCheckByTypeResultListAndAuditAlarmByHandle(ptr ptr ptr ptr ptr ptr ptr long long long ptr long ptr long ptr ptr ptr) NtAccessCheckByTypeResultListAndAuditAlarmByHandle @ stdcall ZwAddAtom(ptr long ptr) NtAddAtom @ stdcall ZwAddBootEntry(ptr long) +# ZwAddDriverEntry @ stdcall ZwAdjustGroupsToken(long long long long long long) NtAdjustGroupsToken @ stdcall ZwAdjustPrivilegesToken(long long long long long long) NtAdjustPrivilegesToken @ stdcall ZwAlertResumeThread(long ptr) NtAlertResumeThread @@ -977,12 +990,12 @@ @ stdcall ZwAllocateUserPhysicalPages(ptr ptr ptr) @ stdcall ZwAllocateUuids(ptr ptr ptr ptr) NtAllocateUuids @ stdcall ZwAllocateVirtualMemory(long ptr ptr ptr long long) NtAllocateVirtualMemory +# ZwApphelpCacheControl @ stdcall ZwAreMappedFilesTheSame(ptr ptr) NtAreMappedFilesTheSame @ stdcall ZwAssignProcessToJobObject(long long) NtAssignProcessToJobObject @ stdcall ZwCallbackReturn(ptr long long) @ stdcall ZwCancelDeviceWakeupRequest(ptr) @ stdcall ZwCancelIoFile(long ptr) NtCancelIoFile -;@ stdcall ZwCancelIoFileEx(long ptr ptr) NtCancelIoFileEx @ stdcall ZwCancelTimer(long ptr) NtCancelTimer @ stdcall ZwClearEvent(long) NtClearEvent @ stdcall ZwClose(long) NtClose @@ -1023,6 +1036,7 @@ @ stdcall ZwDelayExecution(long ptr) NtDelayExecution @ stdcall ZwDeleteAtom(long) NtDeleteAtom @ stdcall ZwDeleteBootEntry(long) NtDeleteBootEntry +# ZwDeleteDriverEntry @ stdcall ZwDeleteFile(ptr) NtDeleteFile @ stdcall ZwDeleteKey(long) NtDeleteKey @ stdcall ZwDeleteObjectAuditAlarm(ptr ptr long) @@ -1032,7 +1046,7 @@ @ stdcall ZwDuplicateObject(long long long ptr long long long) NtDuplicateObject @ stdcall ZwDuplicateToken(long long long long long long) NtDuplicateToken @ stdcall ZwEnumerateBootEntries(ptr ptr) -;@ stdcall ZwEnumerateBus ; 3.51 only +# ZwEnumerateDriverEntries @ stdcall ZwEnumerateKey(long long long ptr long ptr) NtEnumerateKey @ stdcall ZwEnumerateSystemEnvironmentValuesEx(long ptr long) NtEnumerateSystemEnvironmentValuesEx @ stdcall ZwEnumerateValueKey(long long long ptr long ptr) NtEnumerateValueKey @@ -1051,7 +1065,6 @@ @ stdcall ZwGetCurrentProcessorNumber() @ stdcall ZwGetDevicePowerState(ptr ptr) @ stdcall ZwGetPlugPlayEvent(long long ptr long) -@ stdcall ZwGetTickCount() RtlGetTickCount @ stdcall ZwGetWriteWatch(long long ptr long ptr ptr ptr) NtGetWriteWatch @ stdcall ZwImpersonateAnonymousToken(ptr) @ stdcall ZwImpersonateClientOfPort(ptr ptr) NtImpersonateClientOfPort @@ -1064,6 +1077,7 @@ @ stdcall ZwLoadDriver(ptr) NtLoadDriver @ stdcall ZwLoadKey2(ptr ptr long) NtLoadKey2 @ stdcall ZwLoadKey(ptr ptr) NtLoadKey +# ZwLoadKeyEx @ stdcall ZwLockFile(long long ptr ptr ptr ptr ptr ptr long long) NtLockFile @ stdcall ZwLockProductActivationKeys(ptr ptr) NtLockProductActivationKeys @ stdcall ZwLockRegistryKey(ptr) NtLockRegistryKey @@ -1074,6 +1088,7 @@ @ stdcall ZwMapUserPhysicalPagesScatter(ptr ptr ptr) @ stdcall ZwMapViewOfSection(long long ptr long long ptr ptr long long long) NtMapViewOfSection @ stdcall ZwModifyBootEntry(ptr) NtModifyBootEntry +# ZwModifyDriverEntry @ stdcall ZwNotifyChangeDirectoryFile(long long ptr ptr ptr ptr long long long) NtNotifyChangeDirectoryFile @ stdcall ZwNotifyChangeKey(long long ptr ptr ptr long long ptr long long) NtNotifyChangeKey @ stdcall ZwNotifyChangeMultipleKeys(ptr long ptr ptr ptr ptr ptr long long ptr long long) NtNotifyChangeMultipleKeys @@ -1112,6 +1127,7 @@ @ stdcall ZwQueryDefaultUILanguage(ptr) NtQueryDefaultUILanguage @ stdcall ZwQueryDirectoryFile(long long ptr ptr ptr ptr long long long ptr long) NtQueryDirectoryFile @ stdcall ZwQueryDirectoryObject(long ptr long long long ptr ptr) NtQueryDirectoryObject +# ZwQueryDriverEntryOrder @ stdcall ZwQueryEaFile(long ptr ptr long long ptr long ptr long) NtQueryEaFile @ stdcall ZwQueryEvent(long long ptr long ptr) NtQueryEvent @ stdcall ZwQueryFullAttributesFile(ptr ptr) NtQueryFullAttributesFile @@ -1130,6 +1146,7 @@ @ stdcall ZwQueryMutant(long long ptr long ptr) NtQueryMutant @ stdcall ZwQueryObject(long long long long long) NtQueryObject @ stdcall ZwQueryOpenSubKeys(ptr ptr) NtQueryOpenSubKeys +# ZwQueryOpenSubKeysEx @ stdcall ZwQueryPerformanceCounter (long long) NtQueryPerformanceCounter @ stdcall ZwQueryPortInformationProcess() NtQueryPortInformationProcess @ stdcall ZwQueryQuotaInformationFile(ptr ptr ptr long long ptr long ptr long) NtQueryQuotaInformationFile @@ -1153,11 +1170,9 @@ @ stdcall ZwReadFileScatter(long long ptr ptr ptr ptr long ptr ptr) NtReadFileScatter @ stdcall ZwReadRequestData(ptr ptr long ptr long ptr) NtReadRequestData @ stdcall ZwReadVirtualMemory(long ptr ptr long ptr) NtReadVirtualMemory -;@ stdcall ZwRegisterNewDevice ; 3.51 only @ stdcall ZwRegisterThreadTerminatePort(ptr) NtRegisterThreadTerminatePort @ stdcall ZwReleaseKeyedEvent(ptr ptr long ptr) NtReleaseKeyedEvent @ stdcall ZwReleaseMutant(long ptr) NtReleaseMutant -;@ stdcall ZwReleaseProcessMutant ; 3.51 only @ stdcall ZwReleaseSemaphore(long long ptr) NtReleaseSemaphore @ stdcall ZwRemoveIoCompletion(ptr ptr ptr ptr ptr) NtRemoveIoCompletion @ stdcall ZwRemoveProcessDebug(ptr ptr) NtRemoveProcessDebug @@ -1187,12 +1202,12 @@ @ stdcall ZwSetDefaultHardErrorPort(ptr) @ stdcall ZwSetDefaultLocale(long long) @ stdcall ZwSetDefaultUILanguage(long) +# ZwSetDriverEntryOrder @ stdcall ZwSetEaFile(long ptr ptr long) @ stdcall ZwSetEvent(long long) @ stdcall ZwSetEventBoostPriority(ptr) @ stdcall ZwSetHighEventPair(ptr) @ stdcall ZwSetHighWaitLowEventPair(ptr) -;@ stdcall ZwSetHighWaitLowThread ; 3.51 and 4.0 only @ stdcall ZwSetInformationDebugObject(ptr long ptr long ptr) @ stdcall ZwSetInformationFile(long long long long long) @ stdcall ZwSetInformationJobObject(long long ptr long) @@ -1206,7 +1221,6 @@ @ stdcall ZwSetLdtEntries(long double long double) ; CHECKME @ stdcall ZwSetLowEventPair(ptr) @ stdcall ZwSetLowWaitHighEventPair(ptr) -;@ stdcall ZwSetLowWaitHighThread ; 3.51 and 4.0 only @ stdcall ZwSetQuotaInformationFile(ptr ptr ptr long) @ stdcall ZwSetSecurityObject(long long ptr) @ stdcall ZwSetSystemEnvironmentValue(ptr ptr) @@ -1234,17 +1248,17 @@ @ stdcall ZwTraceEvent(long long long ptr) @ stdcall ZwTranslateFilePath(ptr long ptr long) @ stdcall ZwUnloadDriver(ptr) +# ZwUnloadKey2 @ stdcall ZwUnloadKey(long) @ stdcall ZwUnloadKeyEx(ptr ptr) @ stdcall ZwUnlockFile(long ptr ptr ptr ptr) @ stdcall ZwUnlockVirtualMemory(long ptr ptr long) @ stdcall ZwUnmapViewOfSection(long ptr) @ stdcall ZwVdmControl(long ptr) -;@ stdcall ZwW32Call(long ptr long ptr ptr) @ stdcall ZwWaitForDebugEvent(ptr long ptr ptr) @ stdcall ZwWaitForKeyedEvent(ptr ptr long ptr) +# ZwWaitForMultipleObjects32 @ stdcall ZwWaitForMultipleObjects(long ptr long long ptr) -;@ stdcall ZwWaitForProcessMutant ; 3.51 only @ stdcall ZwWaitForSingleObject(long long long) @ stdcall ZwWaitHighEventPair(ptr) @ stdcall ZwWaitLowEventPair(ptr) @@ -1310,6 +1324,7 @@ @ cdecl _wcsicmp(wstr wstr) @ cdecl _wcslwr(wstr) @ cdecl _wcsnicmp(wstr wstr long) +# _wcstoui64 @ cdecl _wcsupr(wstr) @ cdecl _wtoi(wstr) @ cdecl _wtoi64(wstr) @@ -1392,7 +1407,6 @@ @ cdecl wcsrchr(wstr long) @ cdecl wcsspn(wstr wstr) @ cdecl wcsstr(wstr wstr) -;@ cdecl wcstok(wstr wstr) @ cdecl wcstol(wstr ptr long) @ cdecl wcstombs(ptr ptr long) @ cdecl wcstoul(wstr ptr long) From 10a9a8e0a372608fa7fea42067f95fc0da816643 Mon Sep 17 00:00:00 2001 From: James Tabor Date: Mon, 26 May 2014 19:53:25 +0000 Subject: [PATCH 082/232] [Win32k] - More tweaks for MDI drawing. Tested our explorer, winefile and Vide2 from http://vgui.sourceforge.net/. Help is needed to fix MDI icon system menu loading, updating and moving. svn path=/trunk/; revision=63477 --- reactos/win32ss/user/ntuser/winpos.c | 40 +++++++++------------------- 1 file changed, 13 insertions(+), 27 deletions(-) diff --git a/reactos/win32ss/user/ntuser/winpos.c b/reactos/win32ss/user/ntuser/winpos.c index a3fc9eaf8dc..87c6806bd4a 100644 --- a/reactos/win32ss/user/ntuser/winpos.c +++ b/reactos/win32ss/user/ntuser/winpos.c @@ -362,7 +362,6 @@ done: if (WndTo) UserDerefObjectCo(WndTo); } - VOID FASTCALL WinPosInitInternalPos(PWND Wnd, RECTL *RestoreRect) { @@ -623,12 +622,13 @@ co_WinPosArrangeIconicWindows(PWND parent) ASSERT_REFS_CO(parent); IntGetClientRect( parent, &rectParent ); - // FIXME: Support gspv.mm.iArrange. + // FIXME: Support Minimize Metrics gspv.mm.iArrange. + // Default: ARW_BOTTOMLEFT x = rectParent.left; y = rectParent.bottom; - xspacing = (UserGetSystemMetrics(SM_CXMINSPACING)/2)+UserGetSystemMetrics(SM_CXBORDER); - yspacing = (UserGetSystemMetrics(SM_CYMINSPACING)/2)+UserGetSystemMetrics(SM_CYBORDER); + xspacing = UserGetSystemMetrics(SM_CXMINIMIZED); + yspacing = UserGetSystemMetrics(SM_CYMINIMIZED); Child = parent->spwndChild; while(Child) @@ -645,7 +645,7 @@ co_WinPosArrangeIconicWindows(PWND parent) Child->InternalPos.IconPos.y = sy; Child->InternalPos.flags |= WPF_MININIT; - co_WinPosSetWindowPos( Child, 0, sx, sy, 0, 0, SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOCOPYBITS | SWP_ASYNCWINDOWPOS); + co_WinPosSetWindowPos( Child, 0, sx, sy, xspacing, yspacing, SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOCOPYBITS | SWP_ASYNCWINDOWPOS); UserDerefObjectCo(Child); @@ -682,12 +682,13 @@ WinPosFindIconPos(PWND Window, POINT *Pos) } IntGetClientRect( pwndParent, &rectParent ); - // FIXME: Support gspv.mm.iArrange. + // FIXME: Support Minimize Metrics gspv.mm.iArrange. + // Default: ARW_BOTTOMLEFT x = rectParent.left; y = rectParent.bottom; - xspacing = (UserGetSystemMetrics(SM_CXMINSPACING)/2)+UserGetSystemMetrics(SM_CXBORDER); - yspacing = (UserGetSystemMetrics(SM_CYMINSPACING)/2)+UserGetSystemMetrics(SM_CYBORDER); + xspacing = UserGetSystemMetrics(SM_CXMINIMIZED); + yspacing = UserGetSystemMetrics(SM_CYMINIMIZED); // Set to default position when minimized. Pos->x = x + UserGetSystemMetrics(SM_CXBORDER); @@ -786,10 +787,6 @@ co_WinPosMinMaximize(PWND Wnd, UINT ShowFlag, RECT* NewPos) if (!(old_style & WS_MINIMIZE)) SwpFlags |= SWP_STATECHANGED; - /*ERR("Minimize: %d,%d %dx%d\n", - wpl.ptMinPosition.x, wpl.ptMinPosition.y, UserGetSystemMetrics(SM_CXMINIMIZED), - UserGetSystemMetrics(SM_CYMINIMIZED)); - */ RECTL_vSetRect(NewPos, wpl.ptMinPosition.x, wpl.ptMinPosition.y, wpl.ptMinPosition.x + UserGetSystemMetrics(SM_CXMINIMIZED), wpl.ptMinPosition.y + UserGetSystemMetrics(SM_CYMINIMIZED)); @@ -814,7 +811,7 @@ co_WinPosMinMaximize(PWND Wnd, UINT ShowFlag, RECT* NewPos) if (!(old_style & WS_MAXIMIZE)) SwpFlags |= SWP_STATECHANGED; RECTL_vSetRect(NewPos, wpl.ptMaxPosition.x, wpl.ptMaxPosition.y, -// wpl.ptMaxPosition.x + Size.x, wpl.ptMaxPosition.y + Size.y); + //wpl.ptMaxPosition.x + Size.x, wpl.ptMaxPosition.y + Size.y); Size.x, Size.y); break; } @@ -830,26 +827,18 @@ co_WinPosMinMaximize(PWND Wnd, UINT ShowFlag, RECT* NewPos) old_style = IntSetStyle( Wnd, 0, WS_MINIMIZE | WS_MAXIMIZE ); if (old_style & WS_MINIMIZE) { - if (Wnd->InternalPos.flags & WPF_RESTORETOMAXIMIZED) { co_WinPosGetMinMaxInfo(Wnd, &Size, &wpl.ptMaxPosition, NULL, NULL); IntSetStyle( Wnd, WS_MAXIMIZE, 0 ); SwpFlags |= SWP_STATECHANGED; - /*ERR("Restore to Max: %d,%d %dx%d\n", - wpl.ptMaxPosition.x, wpl.ptMaxPosition.y, Size.x, Size.y); - */ RECTL_vSetRect(NewPos, wpl.ptMaxPosition.x, wpl.ptMaxPosition.y, -// wpl.ptMaxPosition.x + Size.x, wpl.ptMaxPosition.y + Size.y); - Size.x, Size.y); + wpl.ptMaxPosition.x + Size.x, wpl.ptMaxPosition.y + Size.y); break; } else { *NewPos = wpl.rcNormalPosition; - /*ERR("Restore Max: %d,%d %dx%d\n", - NewPos->left, NewPos->top, NewPos->right - NewPos->left, NewPos->bottom - NewPos->top); - */ NewPos->right -= NewPos->left; NewPos->bottom -= NewPos->top; break; @@ -864,9 +853,6 @@ co_WinPosMinMaximize(PWND Wnd, UINT ShowFlag, RECT* NewPos) SwpFlags |= SWP_STATECHANGED; Wnd->InternalPos.flags &= ~WPF_RESTORETOMAXIMIZED; *NewPos = wpl.rcNormalPosition; - /*ERR("Restore Min: %d,%d %dx%d\n", - NewPos->left, NewPos->top, NewPos->right - NewPos->left, NewPos->bottom - NewPos->top); - */ NewPos->right -= NewPos->left; NewPos->bottom -= NewPos->top; break; @@ -1284,8 +1270,8 @@ co_WinPosDoWinPosChanging(PWND Window, { if (Window->style & WS_MINIMIZE) { - WindowRect->right = WindowRect->left + (UserGetSystemMetrics(SM_CXMINSPACING)/2)+UserGetSystemMetrics(SM_CXBORDER); - WindowRect->bottom = WindowRect->top + (UserGetSystemMetrics(SM_CYMINSPACING)/2)+UserGetSystemMetrics(SM_CYBORDER); + WindowRect->right = WindowRect->left + UserGetSystemMetrics(SM_CXMINIMIZED); + WindowRect->bottom = WindowRect->top + UserGetSystemMetrics(SM_CYMINIMIZED); } else { From 86b416b410352d21f39d551214984f5882d45961 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Tue, 27 May 2014 11:49:14 +0000 Subject: [PATCH 083/232] [SETUP] Formatting. No code changes! svn path=/trunk/; revision=63478 --- reactos/base/setup/setup/setup.c | 132 +++++++++++++++++-------------- 1 file changed, 71 insertions(+), 61 deletions(-) diff --git a/reactos/base/setup/setup/setup.c b/reactos/base/setup/setup/setup.c index c250eae2631..6bea7a3631a 100644 --- a/reactos/base/setup/setup/setup.c +++ b/reactos/base/setup/setup/setup.c @@ -36,112 +36,122 @@ typedef DWORD (WINAPI *PINSTALL_REACTOS)(HINSTANCE hInstance); /* FUNCTIONS ****************************************************************/ -LPTSTR lstrchr(LPCTSTR s, TCHAR c) +LPTSTR +lstrchr( + LPCTSTR s, + TCHAR c) { - while (*s) + while (*s) { - if (*s == c) + if (*s == c) + return (LPTSTR)s; + s++; + } + + if (c == (TCHAR)0) return (LPTSTR)s; - s++; - } - if (c == (TCHAR)0) - return (LPTSTR)s; - - return (LPTSTR)NULL; + return (LPTSTR)NULL; } -static VOID -RunNewSetup (HINSTANCE hInstance) + +static +VOID +RunNewSetup( + HINSTANCE hInstance) { - HMODULE hDll; - PINSTALL_REACTOS InstallReactOS; + HMODULE hDll; + PINSTALL_REACTOS InstallReactOS; - hDll = LoadLibrary (TEXT("syssetup")); - if (hDll == NULL) + hDll = LoadLibrary(TEXT("syssetup")); + if (hDll == NULL) { - DPRINT("Failed to load 'syssetup'!\n"); - return; + DPRINT("Failed to load 'syssetup'!\n"); + return; } - DPRINT("Loaded 'syssetup'!\n"); - InstallReactOS = (PINSTALL_REACTOS)GetProcAddress (hDll, "InstallReactOS"); - - if (InstallReactOS == NULL) + DPRINT("Loaded 'syssetup'!\n"); + InstallReactOS = (PINSTALL_REACTOS)GetProcAddress(hDll, "InstallReactOS"); + if (InstallReactOS == NULL) { - DPRINT("Failed to get address for 'InstallReactOS()'!\n"); - FreeLibrary (hDll); - return; + DPRINT("Failed to get address for 'InstallReactOS()'!\n"); + FreeLibrary(hDll); + return; } - InstallReactOS (hInstance); + InstallReactOS(hInstance); - FreeLibrary (hDll); + FreeLibrary(hDll); } -static VOID -RunLiveCD (HINSTANCE hInstance) + +static +VOID +RunLiveCD( + HINSTANCE hInstance) { - HMODULE hDll; - PINSTALL_REACTOS InstallLiveCD; + HMODULE hDll; + PINSTALL_REACTOS InstallLiveCD; - hDll = LoadLibrary (TEXT("syssetup")); - if (hDll == NULL) + hDll = LoadLibrary(TEXT("syssetup")); + if (hDll == NULL) { - DPRINT("Failed to load 'syssetup'!\n"); - return; + DPRINT("Failed to load 'syssetup'!\n"); + return; } - DPRINT("Loaded 'syssetup'!\n"); - InstallLiveCD = (PINSTALL_REACTOS)GetProcAddress (hDll, "InstallLiveCD"); - - if (InstallLiveCD == NULL) + DPRINT("Loaded 'syssetup'!\n"); + InstallLiveCD = (PINSTALL_REACTOS)GetProcAddress(hDll, "InstallLiveCD"); + if (InstallLiveCD == NULL) { - DPRINT("Failed to get address for 'InstallReactOS()'!\n"); - FreeLibrary (hDll); - return; + DPRINT("Failed to get address for 'InstallReactOS()'!\n"); + FreeLibrary(hDll); + return; } - InstallLiveCD (hInstance); + InstallLiveCD(hInstance); - FreeLibrary (hDll); + FreeLibrary(hDll); } -int WINAPI -_tWinMain (HINSTANCE hInstance, - HINSTANCE hPrevInstance, - LPTSTR lpCmdLine, - int nShowCmd) + +int +WINAPI +_tWinMain( + HINSTANCE hInstance, + HINSTANCE hPrevInstance, + LPTSTR lpCmdLine, + int nShowCmd) { - LPTSTR CmdLine; - LPTSTR p; + LPTSTR CmdLine; + LPTSTR p; - CmdLine = GetCommandLine (); + CmdLine = GetCommandLine(); - DPRINT("CmdLine: <%s>\n",CmdLine); + DPRINT("CmdLine: <%s>\n",CmdLine); - p = lstrchr (CmdLine, TEXT('-')); - if (p == NULL) - return 0; + p = lstrchr(CmdLine, TEXT('-')); + if (p == NULL) + return 0; - if (!lstrcmpi (p, TEXT("-newsetup"))) + if (!lstrcmpi(p, TEXT("-newsetup"))) { - RunNewSetup (hInstance); + RunNewSetup(hInstance); } - else if (!lstrcmpi (p, TEXT("-mini"))) + else if (!lstrcmpi(p, TEXT("-mini"))) { - RunLiveCD (hInstance); + RunLiveCD(hInstance); } #if 0 /* Add new setup types here */ - else if (...) + else if (...) { } #endif - return 0; + return 0; } /* EOF */ From a3b5088597589e181f358841048e22fc1b472e35 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Tue, 27 May 2014 19:42:15 +0000 Subject: [PATCH 084/232] [CMAKE] * Convert the hives from UTF-8 to UTF16 as part of the build process. CORE-7703 CORE-8221 svn path=/trunk/; revision=63480 --- reactos/boot/bootdata/CMakeLists.txt | 32 +- reactos/boot/bootdata/hivecls.inf | Bin 53406 -> 26219 bytes reactos/boot/bootdata/hivedef.inf | Bin 379852 -> 189000 bytes reactos/boot/bootdata/hivesft.inf | 5048 +++++++++++++------------- reactos/boot/bootdata/hivesys.inf | 2 +- reactos/cmake/CMakeMacros.cmake | 6 +- 6 files changed, 2550 insertions(+), 2538 deletions(-) diff --git a/reactos/boot/bootdata/CMakeLists.txt b/reactos/boot/bootdata/CMakeLists.txt index 10a10d4a593..a6842d2802c 100644 --- a/reactos/boot/bootdata/CMakeLists.txt +++ b/reactos/boot/bootdata/CMakeLists.txt @@ -2,18 +2,30 @@ add_subdirectory(packages) #common hives -add_cd_file(FILE ${CMAKE_CURRENT_SOURCE_DIR}/txtsetup.sif DESTINATION reactos NO_CAB FOR bootcd regtest) -add_cd_file(FILE ${CMAKE_CURRENT_SOURCE_DIR}/hivecls.inf DESTINATION reactos NO_CAB FOR bootcd regtest) -add_cd_file(FILE ${CMAKE_CURRENT_SOURCE_DIR}/hivedef.inf DESTINATION reactos NO_CAB FOR bootcd regtest) -add_cd_file(FILE ${CMAKE_CURRENT_SOURCE_DIR}/hivesft.inf DESTINATION reactos NO_CAB FOR bootcd regtest) -add_cd_file(FILE ${CMAKE_CURRENT_SOURCE_DIR}/hivesys.inf DESTINATION reactos NO_CAB FOR bootcd regtest) -# livecd hives -list(APPEND CD_HIVES +add_cd_file(FILE ${CMAKE_CURRENT_SOURCE_DIR}/txtsetup.sif DESTINATION reactos NO_CAB FOR bootcd regtest) + +list(APPEND _common_hives ${CMAKE_CURRENT_SOURCE_DIR}/hivecls.inf ${CMAKE_CURRENT_SOURCE_DIR}/hivedef.inf ${CMAKE_CURRENT_SOURCE_DIR}/hivesft.inf - ${CMAKE_CURRENT_SOURCE_DIR}/hivesys.inf + ${CMAKE_CURRENT_SOURCE_DIR}/hivesys.inf) + +foreach(_hive ${_common_hives}) + get_filename_component(_hive_name ${_hive} NAME) + set(_converted_hive ${CMAKE_CURRENT_BINARY_DIR}/${_hive_name}) + add_custom_command(OUTPUT ${_converted_hive} + COMMAND native-utf16le ${_hive} ${_converted_hive} + DEPENDS native-utf16le ${_hive}) + list(APPEND _converted_common_hives ${_converted_hive}) + add_cd_file(FILE ${_converted_hive} DESTINATION reactos NO_CAB FOR bootcd regtest) +endforeach() + +add_custom_target(converted_hives DEPENDS ${_converted_common_hives}) + +# livecd hives +list(APPEND _livecd_hives + ${_converted_common_hives} ${CMAKE_CURRENT_SOURCE_DIR}/livecd.inf ${CMAKE_CURRENT_SOURCE_DIR}/hiveinst.inf) @@ -23,8 +35,8 @@ add_custom_command( ${CMAKE_CURRENT_BINARY_DIR}/security ${CMAKE_CURRENT_BINARY_DIR}/software ${CMAKE_CURRENT_BINARY_DIR}/system - COMMAND native-mkhive ${CMAKE_CURRENT_BINARY_DIR} ${CD_HIVES} - DEPENDS native-mkhive ${CD_HIVES}) + COMMAND native-mkhive ${CMAKE_CURRENT_BINARY_DIR} ${_livecd_hives} + DEPENDS native-mkhive ${_livecd_hives} ${_converted_common_hives}) add_custom_target(livecd_hives DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/sam diff --git a/reactos/boot/bootdata/hivecls.inf b/reactos/boot/bootdata/hivecls.inf index 6241eaade9c500bc6d3c08ec97ea3ec1b18e1b5c..058a16578a8827f7863dec74d8d6bdadaf105d35 100644 GIT binary patch literal 26219 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 literal 53406 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 F{{RL7g}VR% literal 379852 zcmeHwX>%P(c3riG6OM3%KWK5-nvpaRrItn!>~7#;A=vEhAqa43H#Y$!dptu$2R1H4 za1lT@n{D~GI!56S{vt;>^i^T|oV+iYRax7uS6e|i@WHWh?T)<~HO$%>uzgNjovXI=vyLzl_gspyhph{=`VT2N{p>{U&*DKBa5vQN>-VrD%WuN6^I~q}@aRccFy? zqXTO9F~0fw()2GRInHCGUz+imm@!dTGZRgB|f$VYo(E#_;CFKsQYr$g&_qdUahzHP>cm=_(29Vxae zYnZ>?p{T6o+Zcl%3|ig-F*}%*hxj^3jmSFi+`k+avG<{&dYP6xw*fn_oUf91(16UM zgQ<=0)7QARcA)c@m=DKOOIM7DF7Z&^_D*si68!*)u3_FX5@3AgW@(p*sFLJcAoC^A z$dNfIk!7hvbnc*+&(PQB7>D{9x|+~hbvHNc9Jp&dA+_B<4vN~e?{O}E3;V!$){VWL zdyI*@?E5Q39#7!yhqsN4f&^#TcwR=JIM&qX5szTcXj5FI zxTczREl3}BFpG9!+c~22%8&8aTeSKnxoWV+xJx4Hz9euGWqnLpdrfDxyTA0<{e2&n zopHyBvG7N*CcJk(v$MKx8q2$u>RYA-FK@ZIHSyctGDzDqvuM+xnzl@*@mb@uplopf&&Ayh;X9)^>Z%yVh@F488~6jxpO@6kgWyiiu>J z*-_V)k2u#hJ?8=X|FjZuD-A8UrsbRHJ6CF+PQ6BX&)fC780*9IySVM9J#XSe{G3Zh z{%crmLHRCbyZ;&f_W=Lj$DE{v=ZYGyv#TaQB#iCTU(H6uZ%<_M-*s7_YrCm+_wQNU zQr6B%FPDwAr>2`|n=+rka#Cxrjn23}!5EnKL-Q%Y{~d zu>+Z8&E(ot9}%Tb1g5F179_S82IEOaDT=bDe8;G!^$T z-vV1b!l=H0cGENGVneH`ZEqXxG0$;5TkfPKu9lzR-p7dcB+`A3RW{m$^vcU>!pOco zTDH&**GR9M2=mBb#^rFXZ%u7Lkrr)R^_F)LGw^)U)ZbOLSvD7(J?*MR)+Csp$a<)= zOW7(3HJi6QOQzpljO$H|=Sz(11}q{o35ji-)f0OwQDhhGaW$J(hbtpH&;adj+6Fr$ z_0`&O@-^lSqse{rowB$#yFhPI53OF^8h{{o&G_l|v(x7D%mlx|7#`uPdPFB5B7|;Q zXN#{fo?K}>HX3!P&CZ?n?OjJNId67g!)f0c4|66xnYPOr+Qmqgw{sVLe1@J<3R+yL zXco`a;wYiL_biw0KGwN74#UgC+4Kauq5YtDkkxnQ==8dLuURa$+&adfmVBvh;XP*1 zc2+uT=P+9w`_Pvjz~8iw@opFd9VC2Zy@cyFjK>%UrR!qdSV1>W#5yqoIx_eWbkZ7e zmZpEUjjSKQ%F-6x!?#~|J~7n*`aEKkGEm>?)-RYWrmYMd>35KTKPgLpp2lyhBqnFM~uGL#I=lmXxMwW?UZeu>#4ht#AQrkr7k9YBhgAAD;%^|`^HC|G>~Wk zI%6)uOd`+jd}QjNZY`yLo@Q-@&8avpE*G%*D_30}LreVm*!$^6&li$M#@goJ*Sxa_ z%}@f4Ox@=xRoQ1&k*nDMt|7*Dzptl$XJ6zFYnUln$9yw|8+yut6XPR*Ss z+;5UadiCl>*#H4Zwg-1CDDEAc#`L-tF|pY5=6&ks7R#7)t$ z2OB<)?YKCnp2f*MFX(U*H$}&Ip5-DUk9qVgPVV_Zht>2vp~Koc*;&#wDrIasM%;1H z)P5N+%?~=PrkkR}RyMP-Y5$S5@SWS(4x(ezi>Zf|dp^*S)^t;JtRxpli90B>wRiJm zJJNE`4?3)-o1c>UM3ACA$D7I?qdM zzFJp&Kl&NwPwiLd%I|+Zk$nu5-{0$D*XgK>^N@qQ=}Y*nslTdf{aI>HhdtrO@?E=c zi95B9!S3Q7bncNzv!;odu6ri!k&(XNYCi^7SgWjUeW9$GkeTBUc@4W% z9(3L}?jW+~ii$0#|LqnJ^!n^meyn&ZF261Sk+-K`3m@Kj4?o7QuH}*aTC7avCAyt_ zhW0<3w%mQ&JOzroH_5!>ep5HT-RnJXp+E0TmyfUy^l<7m&jXn*I%SXiIFivF`)55X z@x}O7{FIytabm2JJ2|#lWShMcW#HF&?^NamjClIgv1Z81w;{W^xL@K0zG+oCw#Tp* zetc_p=L&Z?8)cIr_U3B;+wY!v`=1CmwB1XSWV&e#R z-UBL*Dq1^l{wM9T1}_n^!%n(3T+PfbXSqoAKAT|`?cEiGmj7&eAKKEQyYW8d()x1R zJ5=4xex~f&^!sJ^sbaL3OFPTmili-Ty;$dqX7_c`ec02yv~~rwtQGE#DY{$P=Qm0| zpVo8w_p)B_{&{JwBxS9q?>zMH<52xKKU57?k@K8U4uv31jFw}@*TV;vy5x_Z4v)(=8K#Z;v*gv+F4&N*@4IX zy!;f`mJec{nM3y;8oWUcuR>BGfjWUG8qx$eZoI6KIz`EVc;TXUP*M(lUrm zaXaO*?Uub?JX^BYy3bsNM3l#Rf`H-ExGH-{Nz3bC?>qj4TvsY%RU(-xq3Q~Ax!TR%p`<)( zvp4OR>Sk~Fk#n(KNY8mU8yPvv=R=siJVj}i*}K~F?6q>Wo4rFxIX|&c*5HP>Rs)s zojj%1o=+^hbnTsaMyRby`c*YyJ4-*fE-mZ3-+;+~7i-AhnYG@VSo58AWm-=0Cf`ZU z3AVLRzY3XM)g4bNGN#@E9q9_`__94hCPcZiPg9k#WYw7`^vTok$mdC)&gWLjvpQ|c znkpK{rc&`_=sef6ST4?vZS;vJ{mCI{H}6Cz9vuilXHC2*=U(w zuRvNm*WTjlPa!8yPrQ(P0t>m0mHTFuo!R8R1AIL9y@$gQ`^kWh6*z&W@DT8tzP(ETy-+x|yAHNq()>OJjv{VKoqB(=d z$AZi1tLAR?+#0_Z<04wBWn&_`$*EUW;~Z_YApNW(n(;p^gU|ULF6xMguC}>N|9jRE zEmf6>=oocW`M+kfYTT$pDh(0Q5z+IEXzu*96@dI|N735MKGr7>5S#D`fy2+hth|0M zTO{u;_Rp?irE?i8ony=EXDUVVu0hTTbh{XUynY;7B=0&Twclgw*N-xa+wb-eb9__>h$@)F{MdQ^lp^EAFLteL0rc46UI+>u!#+O**^Bx1gdoo*LtxMjUyr^exP8yZG6sWiRH>+oxcXx$Uo;TJJd=hsr($B!7NU zGwnuJpy2T|bEq^n+FxTB9?_8%*o|eh7WS+o+Fyf;i0&3&!{6Z+aq2sxRWZg78 z*RZlW4bL^KI8(!OodgwE@cF6wnHNGX%DtcU5{EVOG(K+_Mx)M4(>v7Z*v-5!P*Lym zgb#la_}L2}C!MH#-bF~dhfk6lKXw*9nLf?AdOxGxKNCV8t>d|lA8oehxn9FbrB9}3 ztnzOCVMVgK^El&pzSyo-?yk9&&7UIFjO{u(HEh?io^(AT!?9h)^mYavs*V+1IE0=$NgD( zHEdU&{KGH4jxDdBsT8pr`Q$@Z4pw`ubCgA)S^fHPXpy`j;lYnGLYLR~A$fTxAI>Q1 zm+h*mWbJmNy*kj}8wSw(Br#ZJoTFU-i}ekSv;p?HZa-uJ>}R z_z!UwxE2)}KNpf;4vFom)v?Ccg*Edu-YzUu)cd;$7_s5Rmm0RKV^@U`QRvvNA?aAl zcI9rhzS&heTM-i5RV%T^=Y?e5bZl38X@2o_?ATbxb`2@ooTzqq48wNS;&|SC9{pKe zL{I!K8?Gx~$H%cI%Oh)h4;FbJKgX9?ljnux^R#T&u~#zNvt4iCRM$g%y~GKxckz6# zXUX^Yt3Sj@rqn&>^`e=_{mb1o!*V(K81|=6xr-TH-Exi@BT8gDd{4R_k>NP6%O!l| zkU6jAGDps9WC(W4b4}lEc)JoguaWcGHFG;0MEmOvlBd&)UqHoh)%<+y{p4rTJ-7h> z#d(>3U-M4nylS+h|4f^)(6>_c$#HG8UxT5f{ECS7XKmFOX6N^~pFHb`_SqK?kTC9OC-`@yPH|QdV9K=am)IW#j>T9a~;M zQ^|827qK&Q1t)4;MBZ{~bb0+av`F4z*h^(=by+<4QAUxxyU;7oP1)`Bgjb!sz7NUE zI~3rJp+pCnJgc;!l1`hE+&u6N2xTld`8RY=_@ zht$g5HPdpXXYT7t3BPjwxUXeB>3T$lxDMI z8ID)AhnSAqop|g+O43B@t60UcpXW1s-0$nD-^qHEJIC{0n`&75`Ee2LueDQZehr7{ z$bHo!#m>d*&!1)%ipEC!wHU#3M07Q3LjLbrN3_pMiHHsvts2?RI->n`?TBa%YC`_Z zSwwV}JE&m>S)B8A__#kSub;~naR)<^*Uwb)@-CY5J*~`R>(`G%%j6}$Ed)IHQAUxx zR<|L@>-&(ryhELKR+g1y=bMHNGz`~KCvQC$NamZBdF=V7sfrS}p~$PLiCS6tI<|f} zzv{TJVOd}e_toJc1e>;mb=^80hh^2cH>OTv@f!C0yYX?X@pNI$ym|9=OR6V553}<} z=k1mhXWz-pBQnCU74;r(sNFwW9cz4^SPS_%wyn@{UoHENuj5Os$?HP0ZaVI3SQ2Y} zo|SrhRA_u&STnEQ=MBYu)mb+k_ti#0d>tPZ+8oa!V|qOX zi0DJ?(LBcYOECKn5vkt6&v(d9cJTL8{Qd&pCwO0jXn$QQBD!0A4S%<@ZlnEm%ZTXV zG1zU3XC2Z0x^_f#xA+?VZf6nES#DcBGiWH*N?DYYmDkT@$Kwv_5Brk7R^DP|is}8@Kx+rnbKNmK> zJJE3{{!Vl5tJt-0B-Z#m>p?=WZXEGCpEto8wPWFpZI5;5zJ{gadY?BGhg)YWLOS81G|PwJZItgq-)OQTF)$4O1^{Bet(?u2_(Af zdIT6XE*Z{ye_ph#CtZ)oa4gue9)-+;Etfg6U?U5*oOMWF-{!x=+m-9nlhGHFzcQzb zQ~Do1#4HlKL>6qjQEh{WcGsTf>b=HB`zsJO79S4LkpN z5(`$V<9YLSA+cb!I z=kal@@p)F-5Of?83$|+J^~-|&7N;*gOWuGj*&l)=;_RA(xem+8wcY;Z?wWCVv1bnK z#Z$w9E$d0wBQhKZwyZ}Xb70G5jvUy?fz7hA7?X7MPM?;&c$Yxrz;g7~l7kOpxCS44 z0se$z(dF27g^?!r8NV0fBHCYnkPJ9JGk$(?eby1}*JL81=NHQ&`B_J_zkV4J9TDAD z1LH;=eoZ$by6t#2iFx~I>nz&nEJssQEghyVR<<^il~==o4M|=d*aFb9IQ&abSmGFli;O_i~}>SmWo?GjD9W77_!_u+F=Y`~@bsX5RbUbg_T}T{Q z?aZ6E3{S^_4GYKhKF^(9%j{`<4>E5)Psf2BKQnF5fxQKmtDN`RA4&wT^T%_wa(B(D zT<@9Zx_)YSu4O&xdPIifxt8@PWS(oe%#r6BS%LjkUHkM%k>^U}uBZ5{k5j)#o@;k( z?ezQ@7t#J2gUxExlN(C?leW!Cil? zoOML|b=!#O{;)R8ozEhov%E$P3+MpPLE1%zwcG0%0%cKBR$dLy)y_-44xguF<@Ga_ zJg;#v*~1RZ73g*q8Xj9-KMpODcNkWf4iA2mQ6z6j`1O5AUf!X2t~&jOQw7z@ThIGR zTZi%OgQfzSmUwLYps9ZjQ%%(2f%B`L=NgiQ(D7WulDOW>O@i`rONqwMh2)n*;<;*P zp2pXOg=3Ak3kwzX{w}ncSMTwL;<;*ZJa0Zv$8$ZzlaUXQa~vSE8#}59iRY?A#U#=A zypXJ0NIX}qjy2g`NYQ3UJXfub=gsHoc&_`1H`l=!-2*pZeCt;4^A=%;xe~NuI+o~xC+YgXl@o_Vg9P7TkstS4QM$Z$N@ zvL1!Zb1j!S@?0a&wLex(e{qWj(SB{vuA2|X3fx0ZP3=xvGM82n2ij4R^I6%K$aA$i z5p4|db6iCGYYf99`jWw&oFLmq-x1NGz0=G%(b#Ce?h+B*W>$r8?O8{(zeX7m9Re!b z$Z*yX?bmH1qT8S;glo?tqO&|q9Si6pR#o>=HJJ2RGboFavhw=5Y!Oe;&P%=ypQmKy z^)r>cyiVGFPZQMX*N;PsImk-X$*vzmVxfV{pB$;&$w&sC>i zO%>E3c>MWR&-+PBJHEV{3TRs5vF(|r{y7ZuK!;z>uX>(qNESlJa}7)4dN0T46Nlq9 zbUfFvB-VJkkSxWL;`z=Kvv(>K->f^&H7r!r`@7I)UcJW~is!2JAR3={fG2H-k|XJO zu3p7y8t4(e zE+n5|9iPk<&hat&()G9u$9W|JipM8p)@zm2k@p&Tul=zH$FMHf6NhO(tF-H5k@-5W zX9%9=ioMQG`|A$FV>)tQsq^lvX2i75I*6F=7GcBREn?bVyNs9~9);bu7%}ayZbwXa zi?HGEb~Z7cB8hqW3u|JmHjS@i-=E|qo=lm$q0Br@ zwbWvmujA{uo*|T$Hw1|_)zY-gng#6?SpgzIfxXfoG(L09h&BhnB?fy+Rc zkBFa6=Ox3i-?Vd3%a!Hsu~1^rkWPiw>$%_s%lZ^Hd$wF^$29a;)2!c* zOv5gjQq*d9ysPTFo$ku02Gf3(F=DzJG2#C=V%lGY7#`D+J=^U(iJ1183K7%YB5e4( zMNIpvm=V*%qp;f+Bc}aoZ^U%B2pj%xXA{#|)}g=h!3qk$vNd0_Tlg%uep!cQS#4Hg zKd&v4cm>k3_Q2PE*NKbwlV>INvz8)>*B~jS?VF3L)3G0u7D>Dc{Zi__t2R1`{fMJT zV&-m_AoXq#IQIQXk;FVvCY+g9Uo#ckVSkQ4^Xi#HR#tf(U*dY+P-qfss-;7*XLYuM zGp&wMMoSTrwa~CweE;%4Q@jI%-O_rmfu;=CgLfs zk8uXkE`Ih~bt+q_$x5u_(8>u_D_FH0BfiT@>}M@SY{?0)7`vd5MV$_cgx6^_A1%&V|#VA|wv2PGU{f)J7hB z9Um1M?vO+A;{YV)OsnH)u@)SXwa{>A!;`t*^Mw~(Xndco|MPYH85q_Hv^qPd;n0SM zXN?C8E0WW2XeWr0LyA5%9NN$#4ebfEA!Sk;4sB@mS;L_X4I7+a^A>ODPM{6T59&Cy zVa1|hoj|Me-4j&U>+u|xPtkE`$)F{_nkR0LAJ^$lpk+l`IN@Q)tjPz%vKv|s?fCg% zdk*b3RvDiqFO&DlLb8S5-}j1h$))CzM{6bTny<+{ntk(VmroIowyZB*kIRre+Oj@{ z&7&=sI`U{E=deFsPM>j@2Gf4M(XPG^$2r_Xd`JCGKCl62tExxNq3G>&*Znn^_SYkZ z$8_Y;&Nhe3u8NrU>oyV7WmuV)_aml#R!hY6ykNIX&WLHB_Y^T*hLw4F|7>D9%kk7O ziVnaj;!6EKc8`sb)n+C3^V%Z*p`Dw29baNUYspK@6I~BbonofjFVn0n%gXB5k4cLp zW-Y{ikFR4t;wX}M5BR-=uXU_tk1w(BPx2BE$D`GuLQ_2rYvzT-qt)p+Bp$6!Volw2 zDDHwzV$QUB9za;uLdT;GP3C&fN3K9fenfW`ZCKtqEFP_P4r=^gXn59mz|gQ!?*qv( z3Mu*wi$|-)v&IjGl}YJ%w4up7kNKa*4~AvybUfOyqW!RVv^u*H7LQgd^ZfZi9gmi0 zZtr0YhB4{*D+D?ot;oC&xxwb5P>}L&LMi2Zko|{CPp`*|ZMR=oT&(Yj~Pu3}#H z%bvB8cg@mdw$nFzcJ&moXUqE1^|%blo-ONB*zDPIsUv$fvS+*FfiY4{->uI`MuTa8 zwbe$lkv*For}UVG{rl;z_G>Whuf`9L>Bye-?OeM#6EW>G6(Xj)McD9niR6rOc|DEa3(LZ3*t0w- zEF{mTW6y>rv&Q>{HU~BSFEl)BJYZ4&B1yv7+R#EW6$y=KKnhsAJnjCCy;m_ z-|Jx9TnxZ>YuK})VMD{74K3aXi#@B0_QN`nRx5M89~_QZt(AHH{Gk3sT0VJ+_AUhb zT<-@LAuGRE%xefTYx2RcVk8}VHiTHTJ$rTs>vb=Il|GRo)?psmvsUu1S(-~&+wGe@ zyLO7$vt@nhdR&HN&zAKmZ1!xq)R8?K*|Y7qUsV;~e*IJNDLvN{hiQMc)vmcm_H1O& z&Z>d2G40o(hsShe&sN#I=GOFdGgvgShtE`qnC=!~!{04p+OOtCOb?I3Zd;6)_E)(h zrn^Ph@OL|#n9i~eH9VpNthOGSvt0W<$+aw6%1Z3#wMDGMHB>*=A@wd!zZ)ZG$x7^J zEqRIE6RkN5#+TTSNsA;7OUHi1Q6%vmc;HeSTMaRFQohBgQ5{oruyS*@NmelV;UNynbu#fs4$){S`n?D%mV zcY)XWL0LH>gZ2=g4nby3J{T4@wCvgO?Q<9G+2_goWFh%w@@?`AJlbC;_mWSNBmDjx z2>QET5hRi5JhE!7r2<;G9;_EtWROHYRjc|3`BpG&1P(o zfjBGwt~tMoI`8hP(_JyuVA`)fMof2$u;K3(G40ofh-sg}5HZ~?!iK+F z#I(P<88JOP3cGDFV%lH*j+pKiVZ-0;Y+^dg`1Dsk@?0I(bjVPZlP~&Qw=c_Tvl9Dx zZIQ&6OkLyd?HN#_xqDv&Qq; z3OirNN3)JqyANNz2EVrqZgU7S&!6|>GfwO0pqzzy3HAQ{AoQ&9fR_*z?IQl%4Mb** z4-8G_`SXHWRxQtV<@tgAGN5!3sD@R$h$!EEjc@BTtXiINzJl+^$W219&l*-OS#cA5 zQ`ce0tjPhxibQp1(jG#;7SSQ#S>p%y;4STU2r_H@Amcgv6@ttfKS*3$g07cgp+k^a z;|C9cj6FzwDG-@8`CwS_vyN38LM++^tM&+y=^J>OKJhKMok#wxmAq@7CU=VU&7WOA zMf};azH~hnWw3kh9$A4UTXOYd>voMoN0C3y$QTsNY+AkDs5;oYdqfy zctiF(1Z-%0Us&EctW#-qmRZA}4Q~!=JYZ4jhX#8MU@rI5+8$xc?1%LJpo?LyLyyz9*f`NJD&sxd5=4o<& zRp0#COQ(oGTh^DZ$7M+VY+0Ye=FgT(9r?47Kih=A*sMC-XZ)qXv|nemtM0>b4S5Pa z^*i~%W^JZHJ2pI*$Ns*C%BcH2@@KQ0ZL68t^jv?{*qHX$ZlqzMX7H-|-I zr~P_O#B{d^8~$z)(>|LeVtRNKcH3gaw7vE|T?uVX*rD3aJR7y7P3>U8Y; zlf1;k@n>}sYpSMU&AfWN;X7#4q4i;a3e=x{;%F@D59!O2zi@pEX{sP}`5 z;Lb9p+sA(Ke)+RnY}EU~#SdrQ^UV7Yu%YpTVPQkdpLO$aEIqg9&)&xw2)oHqk4Ujm z#r&~no#b7!GU+@-$cbb#~fcjUOJh)aj`G#Wd z>1A%>`@*mpA)P*}*R#g|g*FE@9?(W|VZ=pCI9Imb)`cc>y%!|T+}HSiTNnjg?fzjZ zSKg;A;_P*P@8P@8Q`oh0ke{o^Mp(W(B=)Rc&l*1%maWsVXWa}8A$AUlJ*&q?y&rTj z9WgS#t<$q-=~ws_g3R@Pa1ksqa%ZXKFl4UxgJk?t=5;XI`ee`Q@vO-QZM+eNov0=@jv2%lgvwxD3gkE$dU*{MmA; z9oNv$BgE^IXMF*g&Z_yzr^7Rsus`{kEIX)8JuaTqnb&8VciN0an|9r`{rackod%IV z%Q?A*IM~iiIjwelG+22YKAOKXelNzxw7(8PZSre4J01D6Z4jKlHe%YZ*9f8`rt?^t zmv@8upMNS$>YMV@=I8EQvK0)37Ag)Juor;OKD7nO4sm3d>sP__LwO zT<`hFc?rpn=uV&I3=GFxhsB@O&Owd;3k}a24;UJr>wRE&bFkhEl4s(+#*Z|#{8{G- z$CsHptoMUqWq)DuXLYttclvBtwk|CGtX9vOEYQusemU$~nKgcJC~mb@W{n>VD@K|q z_K|SU^*Yuw$XD){i>lRgy&se~lpI=qhu~8*`CwSs(D7$Ou+Q!Ivp17(lFj4+xH0GP zD(tsoydL4ay?Z#7^d;8CjtmF$6;2&}iFGnY2j`QkX6^U2`HN4IK95sO4{@StvlB>n z&{F!Y*Ra#*4erBsxF+ZR&pTf*&#cb2!Tj$vem}YdUP9l z|8*nnE_JBgZP>-E28SD2%{X!d&V!FkR4?NvcQSE|`P&lwKl3?`jGaSwaq2WJ>;kO9 zGoa=vemlWCZ}9aD??1s`^&`0nq;Y=nO0mrj8xCQ4`f3I3YkGZ*oj`7UnHuT;_I%@UXOqyHju5Bs!ZlGHg3~#l5m~A!{|8^hfdt8~xC- zJ%(Q1!X_{SI{D!1>La>(54M2kl-vjUs$!2vCaQdi_Fo~Aq)qMD|IaSd`IJ}9YTVE0 zcd)iW?D5$v+vw9P{QfcYaOg!kpPG006c=i{3ys(5y5F4Kj-`!h>!jHR?wXCaY>oHg-1D~YC_~SK@PxQU-8Gm*1Jb(<$3tWC)Js-M2jm(MacG^a>nt3Qa8qe3txDhrS|788tAj;vAvu zBHh?hZDHK^;ZgX!Gh$Ql7>;Zwm??JNIIX>e)MIOou@_@wC)L;ziOpk1$`wPIy-vCi zbauzY%ts%rpOfwmw8<*i*gDKw!t`w5+68SRvoEmSGj1cM{XiZl@lb8OOfTp5Dc%T!V!4 z53r!vx6t!3dLS$AMB6+`FYC>F&^%Wt=RtajZ{`axBJ=zqMdY4WjM%jp zt~iO^ub-Q=thB1dwJTa+v075k+QXe$Nq>XvG+%pjmNy%#Enuy3bwCR&eIX}=_Lh>% znNIW$kFXZW=hiY`;9uXuf7~(h(H5LHQTp$UUCvjg%I%!38_Mg--1L<=p%0q9uN!mH z*QHY4*rgMe!L??!bQ>+WlF($jk;5_&U@f?fdM5>IQl|Z-*;$M?q{+1wy*6h!@8;44Yyv?rl<2_893q#SYIN0fPUJp z@CdJSAKBbOu<-e#TaM+||tOKX$Zr?vVYim9aZ75GtM|hxYs16`F>q_ge05lQn~E zf7^KiJ}+Q7=sYOf+tca`ijdruH<+jKoi~5*Yk2ICeF5b=D}Er|*Y-YO$of~4s8KA1 z>uWpvPo{5vziWS7iZ(qx-L~J2XjgWBUJ%@^&9`->Ev)Ze#eR?*$>&(L@z?gUyb9Lt zDaC)qE9*`#v4;H&HGS?Ea{H<3?ff=YjdpPdR@!$^<8gc@vB5j23cbg=IC3G0rP zMshaTi`UR6>q%U-%Z?NGLvy#RW6TN`ggd(fJ>EyoeaqC~Zs2;Z^1Xt_k8wwi4Qq2x zas3;#@j2=SpP_ok9oWbCzsRDn+IBr*{!e|%{&@br51o^PP8L-b7w4yy=WAHyO|#|Fvr%L!+Vd`c zEPX9^$)#J9epmJJQ)3_8-UA;QMH2e0*!-~x^R!-ech^VIGObuzN{&xezp}QcU9Za8 zC-P4)n=JF-4sgLyu9E8tKJfxqaXx&Cv7*hmfPFrzh=8~v+O?#`vUi2Asxiv9%y+VT zP>S%G^*;UUBQNI|QptR{0WWkND3X0Zlw+8YDr!B9(JGUy-X8RgBktdHJi1}V$+a2A z=w#&yVNA&ECTE{#5F8=)X5=i9+I#p~vSg28e}|h{n`loXQ7Gf7mv;QorUbS+&b8~8 zCI)8aGu-%=%MiwhR?8RG7)m@Pxi7Ps@kX*plJLf}OvZ&)iRdU0)s zHC|b{LKrJnFvhWj*_J~Yr@U0-kCHuuayUO_TMT1V($b7S8txne@eHgbuo^jJ98oSq z7$a6K-}qz5Iu*|tlDaX^&UgnqINbayZa<8%E0-;_aeFXmY?0Lq+YWKOtX$)dRhoUU zVP+c{8m!$mImfA8#hNv9$AR#r2xI)}Bn)dLEpLc5cgK$!&T^);RV+(*qgpO!cw@_| z*?6PL*25e>D_K}0c60Dmk@Wntt%o;aY01JGF`kdbN;z4k=@a|MnR8{*gg2s9l7=FII z#@LlfHq40Gohx1M;Boh*mh1as_g@v;MgRI)Y)w`o=5qF|&}tjaPx8!9yRVCyV*45y z+zu_CzR9x}k8r1Us4u=}GcC*h&a74!QjD?L`&K4L*FI;0)5df*s!U%+`%9`kw&*N- zrZ-RUcIR2Q(OS7Q-D{2~w6&4d?ft0Nm-{SFH%~tqqFWid*OGQeUKzf$`#&@~%J z=?|}28M{U*pXb=l4^(Go^_q3p^O+jld1UiUT3N|7+u+pQKYMq3?>b<$F++=-CpxYz43e?=QC=I_=I`j%Vksfbyw(Ux3ipWZ-ri178> zX{}tE?lIOjtFb!<9Lu|j-d@9(SiXE0I`gIIUSDl<8J@iBv(Kv|oBS2+G*#4o_j+oZ z&Cqr*=1A`_NL|@Rf7!ccrRf@jE3NZ}thAOJ-%M|E zRd+gbQgpAcwi!X1$>=k~>t}8LiZ)uSm!*6CwapaLGP5em3UQtlUX8!9>$=iq+5P*- zy;jWASGttkaBi%$H}b+UAi#J2HqT2{;at)IbujeuuHay>79PG|9H zjAiS$<=TR1>>_p3} zZG*!)sk+x=+jy~9VqwG0rp2}^2-OmGuR$9za@;TD^xSq|^tboTv()e4r1l-eFYWF} zsrda{|2W-gj8h*}(ePHT<@idW44T@`;Jy zo=#<0z$>37e=u!Z;u5>I&Q)SLU6ZZ6L3?B*Ea2y{k(jFoJolVyFg$Di3BIH~>V%&= z!k1jh9+DBro_{)B(aQJH>1xU7ifhZqxQ@Ikw)Pn;!!BA&$4~jYI8Di2sx>8jCufmd zF>34aR4a$bHrRjG7vw*CXx*JSx&WED!-{>g*Kl<`Epf3fxvJ;%LdMK4+R*4_GSv%5 zfKPenN%g|DbSs5b8j)R?|WSF7O&JV z@4{8}1v3MAmb`!81*0>L-dpraK6i|3?Gp(!`d=~nca;y$UY?}SGb_k|lU4qg=rw0K z=P|KYKRR;XcB3PhlS&^ENDJUj6CzS%d@L$y8J|E~#3W^x_oY@S&r~Rr+u?C_st?w4 z{VI3a)ee(#by=@v+{M0dCR3Y77;|EZR#ay933?%;ZToeC|C7HY7^SU|v9aST?SBJ* zcNZh~o$(hp;WyI$XB%y$V=aj+Y2#?u`8;jCW(|hrph5Bp6@?10hqrc#2 zTKrVECiDA-(F##VyFklJ-Dp}C1m46If(fotvu!?kMf{=VQdG+!V_J0|8~at?XU!n1 z>ONPEezcmsSbM*3F&88n(CBO3-0v2y;3(~@bbRT}#hrk$l}M8xW$#8JBOT*4YQ zBdL3kkI%c;wPigguXqj2au(^X6#Q*NN?yZRx`p50E3X#x`Lm9kS)z|~T&LkBtoyOo z+dwZph)#CF+78-sEQxA#E+vAe9q35gM?uVv>64sLRc{ZL@LWjthxUiwQ8$h}_n%kY zH&*OOrG?29FPsImeLAbNgQqC{CKb0cK7Wj><>?KK5bUX*?CX7FWodJ_aNV|%@niV< z9lXB{q;A7zUB`cJ;qQ;JACK%NImMp&31bAiU*-h=W$%bm8Drj`-+cDWEo2kSW4=R` z{sI2FfxowLU%tybJ;3|!Gk4J11Ke#J|Gzc8ho8563XSq>GRX8X zE^~-EmUjK*tmIh3=S5p47y25xP`hknEoK`r+d#e=D?0f)Q_MDEwh^<9eAPWxbaZR0 zv7%EQNyls>W*fyd+$B6kT&gCqqH`Wht87JQmTcoWYC7Z=Euf0R8W}6XtbDS<%sM;y z1GDI47HzsgS4-vb)!7nMy!tGkdeD5j2&_) zc2JR`KFO019vL|&kIg;FMB!)22Rg)W)RL?d**#y5OOus~d=2ua$RHtSgIo%ca=~bq zcN6XvTeGbkpijp}9*zK|;@GftVS4b6yces7!nqNq&5wAGynthHbjax8=g1gfwT^$; zI#pgbj`?A$%dW~mcE)VnGmVBhe&qa66YPbYI7McM)a=P8wDEtyC!(L1s? zcpfyhY)6d!=at8XB|?rO`6a{(b;_%s;Qtzp*ma%b>2j zrv1#%AkGupa(PcKKrWtHM~w-WK#(Kz%w8`eE?TAj?ielnIAsn!$2;sH8AoIyJT)UA ztRg#iXd%gs`_x>`dCsRLq(5D8;D*A*!qoCP8!oycFYuMIrQ{KC zygA=!CCGS8v+9Tl-AqZdA~DQNwXgXIe$9xwL1n7Opzx z7G8V`Ri9Xs#9OW4Uo;5&j#-R&%9g z$O$?)@4f*Z+HmBm?$nGWS9K?eSj2|>sOqWBtg7z%t(hDDLv=r4K3#`*p(T_!N277! zK5dv8d8`~I%a^-r?631k)rfLzxyO)_mVll?BjXY{LCiJ2G4a}-u@}1Q1c{tWw9gVP z@FZYOR#(iI`^LyFd^z#xy1Na_nIorDJhzUSwuBQiB%7n>C4#t{;8>|C$Dd=Y+>}4Z z7@RCfo>f~vE|x=g1M(fgHtpeRV#(T?sW}FrQNUN zz?J1)>*~BK?%}aMH6IPTh$^2)G3S^qk1AVj7A8IIE;GEihi3tEI_}|#dwAr$v$%(c z-j(|c;vODb6H8;!&8^P#fr~&$VA0nby4wY zx9?^LyLq_Vrai-KL!EDI!h?~QoIW#v8Po1GcgsiNf+<(&xn{B})^&vW&1|06@8k7f z@f%mvWFIYKX^9(TwT;(s-GH?h?s^lJwER!je);nV@AGg4)*tq@b}D@V@OzBrct zsRR5kcW$#!&!+uyT4N2A|E0cOqt_5LpE5SlTOHNg!?$NDdG8?F^mCl--J%)glb z5K+=QJ3FXNR=5OXTw|)oue3PK2y#cUjC;BU^P}m9!#LN(*t6mj4LDL@*1t$ z+Rg8g9ZBuR)|jm&sn?U-qh3!UwN&pppTuInfIXD9X{UCltKqEYXGc(M1FIplZ?z^Pk5>*0trIRjw>y)M5~lMJf*PIu5_*0FTGl-f@99VIKHFVWpI zdlrHQE4H#j_KLMM)uU_cI_dGfZO}Q=6E{Jj;gjONT96K_(pfA>pj6EkIjVYcj!`NJRz1Y0__&gEe#-M4XM{EtxIb-WtpY2XT(A9Z( zg2J6na<8lE+$+|4tiR32`?1!;%4wBeit{LD5{!;zCg!gff5Gfst}m;8#aa(NB-u;C zgL{JrlIOdS`NW@G>EVh(Jg?1qk9x$3H*SJB`UYmojsZ+;GoELZon@AhIVkH)93OkG z8MzPfyf(i=Q=GxHVWctk(4H!0S8#Y9T|BRi=eAmmN<@=BKQ7jKVy(xYz45#@o_TEZ zko&Ov%rBed9&Kwq_t4@q)Ed|>`I%e`rPtY*{`MCCllQdQ2U%u!uzJ$&WP#0?d%&lV z8OrE@5gcO$j*&Yzmk}~!mY91;EXBx{t8`oosEAb*IbnK?F_t->_ng>4{9jnAiv&!>s?4%v&#vsPRkC!U>5 zjz)Yw4WCozo;zgs+?Ur+xY8S+Ps6=x_fSQpZHdpPDc?CXEB9*No=?-1Y30~d+yy_& zGiAQUvtRh682$5Pit`O->)PjGy1gwAzz2}$VUitF&s325xO=*Ao~8aHtP0m%=%fA@ zzWEeAsVuPGz;}h0Z28yZjkp4aJSl?Hms%~Ux>!?9zSNTjd*|{P!T@XI|^Ea;=O{XmdH6*zQf2-Gm)Mm6=5O%igy5X2` zH0(@v?b`h*GDft0v}E)f?RKXKVrSi(Lak6T>P0*aNJTCCK88=Z+@vnoV}7Xztgf0>hmsvMeN*+>M~^hj>WYy&>_T@LSz3MA|4_p9JyS_&hD?8|;GIF?!}GiDe@e zboZKl$IA{{<2ha&PhDHH=3TeY0%viP@e?H8hmIK2h_}?qX&Gl}%u&yb3AA_c_rAFC zXquCKZRF=}D8?ezdo%Lk>>@v%{$0mE`!C4N^mEwAAovz~Rvd8N(I;{F#+zG17( z%o{n<5*fy`&LRgba?m8lVrFHZn!|INcd^EK2%G#GcFaE;Kr`ba2aQjGc02GQ2d(O~ zDXy(Y4qD`(UBhXB+?OEnlE0w(`NM3F``)s!llPD&IjJY#V2SUc;W3_WZMzm~)`s7Wdf4{VwD< z#hk;QpODQBV$R`bSVbqwvHBhNyTtu2cJ178Vfdse@+9qP#JY8KsoYh?_)VBzRriTG zN33sT_aZGN#q2AdHtg6}n#ehx?=|-MUfk~@r+dlTAfGWUtZH%>S)XJ4dkl6JPpUaE zbw09l_&fKa$td##SAJiH9lHgF75ChKXU=rxKA4?WXMGVP+SCw_ssIOg z_op9OnK*i~mMfnj-1_+$-rX*Mooi5qml-`>IHr+?Dq#`KOPFt9M2+ zvffY7EB4|~KRSTC?8g)HF0&4Kz5q2Oec^xo{*m2C%`w8VBlg~0$)^J_HhYG9Tb-qK zDCcNXvm9OSNMi4Q3OVH2?9`o%nZ<$A3*Tp})G%8SY11QO$GdD)*b_c?{UxL$1C|)$ zUMJmicha0Nk(L#aee-M@nUnd^mb!8JMC77TVo!*3VO!d9^7r7p%b-ut>EqOm3P(a_ zi)d2D=Z)#H)m?UE*e98b9D9z4MYD`C=Om@Ky>7D0=Qp_5JA*rpoZpjr?MdurErzSE zup%Xhcmjz9SAq`CaEpy1Td|u$u+x=1p@o$hJ1^v}WPfwkyvO^zo5kQO*pw5rLzeej zW1-l)_jvbhfd;9+A8|G3$6@mCKGO5W$N?hrOy;7SGj4=9GIlq|Pd}>HsKgUh8s$jQ z!m_pZkeTDo_7`AJh!5H-nX9aF@i&p?M_323#92#|##36_XJ#ZUO2y7|PRfoDo^|;i zcjU?-d-yxNPYu&f{SNQYYVv718eKZB8Slz0x>!P+4^+)(xtGPO8QC!iN0vZ-hSwNHA_Xj?mgW90M~OgS;M3* z7qEhvX7vkts_!P=YZKQ!0sgfNb>XuS$-IU*dZ}9PmHGc0qct+nWfn^Q_6~Q`wJ(_8 znvQ{>JH2Ct^P2l-o8)ozcWaW(ZDQm(i?`rCIRm&Cm3Sc%hzu*OVBX@idZgTb9eH|D zSNBct)ZvI~P$T@cZ!k;P7tIxRFV1aTaSYt@gaO@kg3#YgV;^ddSl3-EzJ3dzmv~Nh zm7sJBBWNQmJHNItuAK2(Q_EaEVm8~Op6GXIFBq%LI#ca#n}0PkPS+P4w*GX_j5Mt{ zPpG#NG~I2(J-}j*i4j4Z?6i?Qk$z9N*M=Tz8{D@C$OiShZ7wHe=OL_3^T5lvC)d$f zz1u>5xt-9Ge~fmxqh}lMZ=+>C=jImv{ut7JYQALji*r?8aXXP`lJaMpeL?H$e09T& z(@FA^k0fVhHu!dm(kg#1-ji3;Q!*oD#>hQ&w9OK0+pL7S1)sU-p5}3c>)x8#%srv9 zlaMx$-iBEeM_8T_O25x|n_hrX5C21}Z_j#Qt3Uq(%D{bL@7jTta-#TY#x#_NyUe8j+-J^6 zlmC_H$NBrp*`i!6XERW1oI|{a>{2V&yR^n0+gXltZvyr8BvBVI>sI$bkzbh+G5KBC6{ z?n4Zjm*1^eh=1Gk@LDBTy-wtwdY$A)m3wU2ORkOyhG;=$O#QwSN%n~^f>0u57kVZ( z#`C*)-(D&9;0YTBgv2s16E&Wqy^Al)E zG)UZ1GRDH(eM-$1&3qZnG`1PrQs?}%jEGp0^hpk!FPfPyQPT$QL}{cIvD}iG$`e2} zdb4-3zJoR=?KAkkQ0-D}@yu4S2XVlC4rXgfbgpV=hWth-mUOw(nP;-j;2-2py`LS0`a z>aUZJb7@aC0_oh+t_f@PE;;4~WdHdeaK36r++~@(g7ZUnm5rn1*$UPcR3p-!^1#Z; z_s|G!+`h6sK_;^m`Z0PBiIEu3>LeCaZckgar#RR;A|puMeeC*|#3zi=xcWui=@7G& zNQQX_SJ2MAR<>)AM(d@Mbedb@^R#G^hwH8sBwa_3Sbw9>)M?q~nD@<5xv$QBac=S4&2wL# zTR(T{+-J#G=eF?M2LApAe=j6o;=dc`uHti-&)u57E4t0ct}+u@e-Ur=39ehjJvPo= zJGW}uSxA0`JFVbv{#?iZ7m^j+`7U0UrfuBB`(K(iC+6xEyzgYZhEJ~JJ1r;Q%gf1k zKR4I@3XR3R+mfofpqtG(T_P zZ~o;p`zs?m_00dQ8*NYU9>+x9N%#L7T=^@!&;MJgzdE-JiHr2fc0^N4Xp`FGbsV7y zzBzW(+cMtM=uF~=UzmGbH0|?_*Nx2eT9T`av_#$WP7{MQj^RS`1>~YO1O=4$bNu(t zxf|#H9`AFczA!xybWR}6ijhe4N1d)hfxD_`=K!_T_U(bi?R{WBVokvikdbyt`rW!;z&j&qF?%4i9W;+5n+G4&?JXz za^EKT+|SJTr{xp5={v487&D2l%kH*hbgLbIiM;>Pj6W^UEtUQy>i!up z8FX+3^MfO;MW|r(FQ*vMA;e~I=Yf&WjiuK~Dfs*oNV$gDB&d{_R{Xe5KejsP=WvV_ zh)voDdXi>(5X-ax*)A&QiOt{`Pl{F6X+aS7=eUZ|t?n8@(l61oEnIg+d6gjPm#|sH zh4pcD)<>+MSP`ODygl#nNy3=(GQ1BXOC7>&M)wP3G~#`)f6#B!yzUk7%^`!J2 z)aULd4^egd1{uff=kQ%s=X3EKKI?nyGc$5?;yHZj)4?PbkoAoGjxezudA-UEPqQwc znpGxNU&vDap|M!P5V3g%e%<&&ma zQ%qOH;@KG1qE>tI;%sIIx)jZFrT;*+Dl0K!JcrM(7&XaHs`k6ZvoYe?82+gcai3ZU z`_$TI8$1_-d_nDgv~nimR*y`?``9hF0Vy>ZQMrWnS+#v|CBFtgatoQ;9q6-tJ&rl4 zc7I>Y-)yvz&olhWTFl?Bn_Z|*FEM|M=cqH&CL1!IZ5Yosd}lZ*)}qGzt>`>7sXtZa zOHJxcRriVcTRdkZo-<;1Zd6+%yW5QGM_i?Up;|d|OhB?c=k0962dENlo6P7=YYyNf znW%FPR!A+s?xEoT{sroO4^d?#TZMdwKR1=mt9VZs8hp3D8Xzlze`DAjSq9)k)MFh3 z@D^Hd96)K~CS)QL;-UFpT0XM+gsJCvEKaU8=kIS5%lUhVsxdi#cTqp)9a(c_J@_VG z`I%d2iwwkH;lC^RjIh9@en^G~`B|*GQqmhn7uKiNXDPoxPsrmSH;%jr(dlQ<=`0Mu zB5hv5eao1COVcsC3CYP;5Vp@{wEZpKAp=J^kL;rz19Gc;iOcnx<@sGidm7zHra}%- zmP7aOL!CFTS-;Md*994s?Bf@x8Q({bgyHuP@3KdfbOQOlzzCDABkV2LZ^!Waa*Bq$ zbWIq3{|RG0G28<|P_}Jbi?8aZFc|9lNw&-v;QTnm%c!{VeQ5Ac>{ALd`ly>VXo0+2 z>P--k=Jd(jC!>!nQR-sNjP646NBA_`q^>zjS+jTCzUzi9W@o%G`#AHy#^)B2O?;EB zw}DrV0xb{6iby1*LO5CEUvfrTOgafx(UxVS3L}m3ub95bRT}(R4j*+vL|6_V_3<;) z+fB4XCX~qWA0eA#0Sn_$_j3-T+e$x9#f zW3@Li<3uK(%zM$>3O-L>vsfi-Z#CKz_R60@KR!Q>yvj5W*s?aNG$VJ*YleLxkBl5J zdZ9(I>xe=!ZfHlpGB~q+gAs^gC0D%M{@OT+@Xx|WltW72Tn z_TNB?WrJ*msV_U!YxTt0^0g^O|_!J$`2Nn&!GOHlWvRwx5btLwDCEnNnUl z%KW#GS$KFFotLxl7Lq^2%%WY=+(&p*e~5W?(P&R|jpN^O%rsZ{{JUG~(Y4Q*nvH+= z#|HhhwilIhItCtXKdlhw@t^t%m=|jl9Bhqzx6H9X*$oL9YTjsOwO4&X2 z3t-`_aPPz$e+~@`2U(-1BKDp20K>EIcrqhvO%FOb^(=o)%9gT9!8`JHgXu zUz0N=tRj1&IL|%d*%~$q$;U&nij&ug%lO2TwBvcnu3_#d7e*n^hLER7$+?E^{1|c& z_Y7yzomD~RA^BmCu^Pp5Q02;ewMEXZ;HTpgs>*qv+@+hIF?PO079LMU;aNtO^~y8N zxU<+=j#=`T$ii!usl+NyQKd{WmD|8)d>Za1;!69ZgR&gOp7Ox+7Mh*&unp@-52A^= w?Y^KLj0+jex@#ok-2o?Gdq$(=wmYb*q|Yp?wnnGFio^5ZubH#>c Date: Tue, 27 May 2014 20:33:21 +0000 Subject: [PATCH 085/232] [setupapi] sync setupapi\dirid.c with wine patch by Samuel Serapion CORE-7663 svn path=/trunk/; revision=63481 --- reactos/dll/win32/setupapi/CMakeLists.txt | 2 +- reactos/dll/win32/setupapi/dirid.c | 9 ++++++++- reactos/dll/win32/setupapi/setupapi_private.h | 2 ++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/reactos/dll/win32/setupapi/CMakeLists.txt b/reactos/dll/win32/setupapi/CMakeLists.txt index 5f0c7365c4a..e4c3f4b8ff4 100644 --- a/reactos/dll/win32/setupapi/CMakeLists.txt +++ b/reactos/dll/win32/setupapi/CMakeLists.txt @@ -40,7 +40,7 @@ add_library(setupapi SHARED set_module_type(setupapi win32dll UNICODE) target_link_libraries(setupapi uuid wine ${PSEH_LIB}) -add_delay_importlibs(setupapi shell32 wintrust) +add_delay_importlibs(setupapi shell32 winspool wintrust) add_importlibs(setupapi msvcrt diff --git a/reactos/dll/win32/setupapi/dirid.c b/reactos/dll/win32/setupapi/dirid.c index e57a28cadba..f82eceb02cd 100644 --- a/reactos/dll/win32/setupapi/dirid.c +++ b/reactos/dll/win32/setupapi/dirid.c @@ -70,6 +70,7 @@ static const WCHAR *create_system_dirid( int dirid ) WCHAR buffer[MAX_PATH+32], *str; int len; + DWORD needed; switch(dirid) { @@ -122,8 +123,14 @@ static const WCHAR *create_system_dirid( int dirid ) return get_csidl_dir(CSIDL_PROFILE); case DIRID_LOADER: return C_Root; /* FIXME */ + case DIRID_PRINTPROCESSOR: + if (!GetPrintProcessorDirectoryW(NULL, NULL, 1, (LPBYTE)buffer, sizeof(buffer), &needed)) + { + WARN( "cannot retrieve print processor directory\n" ); + return get_unknown_dirid(); + } + break; case DIRID_COLOR: /* FIXME */ - case DIRID_PRINTPROCESSOR: /* FIXME */ default: FIXME( "unknown dirid %d\n", dirid ); return get_unknown_dirid(); diff --git a/reactos/dll/win32/setupapi/setupapi_private.h b/reactos/dll/win32/setupapi/setupapi_private.h index 80a818a66bf..21ff8b621cb 100644 --- a/reactos/dll/win32/setupapi/setupapi_private.h +++ b/reactos/dll/win32/setupapi/setupapi_private.h @@ -31,6 +31,8 @@ #include #include #include +#include +#include #include #include #include From af35d7f04690439645c56e972ba4abbb7fe751a1 Mon Sep 17 00:00:00 2001 From: Aleksandar Andrejevic Date: Tue, 27 May 2014 21:10:45 +0000 Subject: [PATCH 086/232] [FAST486][NTVDM] Several fixes in fast486 and ntvdm: DosCopyEnvironmentBlock - prepend the program name tag (0x0001) to the program name. Fast486OpcodePushByteImm, Fast486OpcodePushImm - sign-extend instead of zero-extending. Fast486InterruptInternal - The parameter is supposed to be the type of the gate, not a boolean. GET_SEGMENT_RPL will not work on real-mode selectors, use a special field for the RPL. Loading a data segment with the NULL selector should never generate an exception. Mask out the highest-order byte of the physical address when loading a descriptor table in 16-bit mode. Fast486InterruptInternal - The interrupt gate type determines the size. CORE-8257 #resolve #comment Fixed in revision r63482. svn path=/trunk/; revision=63482 --- .../include/reactos/libs/fast486/fast486.h | 1 + reactos/lib/fast486/common.c | 22 ++++++++--- reactos/lib/fast486/common.h | 2 +- reactos/lib/fast486/common.inl | 37 ++++++++++++------- reactos/lib/fast486/opcodes.c | 8 ++-- reactos/lib/fast486/opgroups.c | 11 +++++- reactos/subsystems/ntvdm/dos/dos32krnl/dos.c | 4 ++ reactos/subsystems/ntvdm/dos/dos32krnl/dos.h | 1 + 8 files changed, 61 insertions(+), 25 deletions(-) diff --git a/reactos/include/reactos/libs/fast486/fast486.h b/reactos/include/reactos/libs/fast486/fast486.h index 5fa729159fb..434f06cee03 100644 --- a/reactos/include/reactos/libs/fast486/fast486.h +++ b/reactos/include/reactos/libs/fast486/fast486.h @@ -251,6 +251,7 @@ typedef struct _FAST486_SEG_REG ULONG DirConf : 1; ULONG Executable : 1; ULONG SystemType : 1; + ULONG Rpl : 2; ULONG Dpl : 2; ULONG Present : 1; ULONG Size : 1; diff --git a/reactos/lib/fast486/common.c b/reactos/lib/fast486/common.c index 36f026ec331..4babb2d366b 100644 --- a/reactos/lib/fast486/common.c +++ b/reactos/lib/fast486/common.c @@ -65,7 +65,7 @@ Fast486ReadMemory(PFAST486_STATE State, return FALSE; } - if ((!InstFetch && (GET_SEGMENT_RPL(CachedDescriptor->Selector) > CachedDescriptor->Dpl)) + if ((!InstFetch && (CachedDescriptor->Rpl > CachedDescriptor->Dpl)) || (Fast486GetCurrentPrivLevel(State) > CachedDescriptor->Dpl)) { Fast486Exception(State, FAST486_EXCEPTION_GP); @@ -132,7 +132,7 @@ Fast486WriteMemory(PFAST486_STATE State, return FALSE; } - if ((GET_SEGMENT_RPL(CachedDescriptor->Selector) > CachedDescriptor->Dpl) + if ((CachedDescriptor->Rpl > CachedDescriptor->Dpl) || (Fast486GetCurrentPrivLevel(State) > CachedDescriptor->Dpl)) { Fast486Exception(State, FAST486_EXCEPTION_GP); @@ -164,14 +164,26 @@ BOOLEAN Fast486InterruptInternal(PFAST486_STATE State, USHORT SegmentSelector, ULONG Offset, - BOOLEAN InterruptGate) + ULONG GateType) { + BOOLEAN GateSize = (GateType == FAST486_IDT_INT_GATE_32) + || (GateType == FAST486_IDT_TRAP_GATE_32); + /* Check for protected mode */ if (State->ControlRegisters[FAST486_REG_CR0] & FAST486_CR0_PE) { FAST486_TSS Tss; USHORT OldSs = State->SegmentRegs[FAST486_REG_SS].Selector; ULONG OldEsp = State->GeneralRegs[FAST486_REG_ESP].Long; + + if (GateSize != (State->SegmentRegs[FAST486_REG_CS].Size)) + { + /* + * The gate size doesn't match the current operand size, so toggle + * the OPSIZE flag. + */ + State->PrefixFlags ^= FAST486_PREFIX_OPSIZE; + } /* Check if the interrupt handler is more privileged */ if (Fast486GetCurrentPrivLevel(State) > GET_SEGMENT_RPL(SegmentSelector)) @@ -257,7 +269,7 @@ Fast486InterruptInternal(PFAST486_STATE State, /* Push the instruction pointer */ if (!Fast486StackPush(State, State->InstPtr.Long)) return FALSE; - if (InterruptGate) + if ((GateType == FAST486_IDT_INT_GATE) || (GateType == FAST486_IDT_INT_GATE_32)) { /* Disable interrupts after a jump to an interrupt gate handler */ State->Flags.If = FALSE; @@ -270,7 +282,7 @@ Fast486InterruptInternal(PFAST486_STATE State, return FALSE; } - if (State->SegmentRegs[FAST486_REG_CS].Size) + if (GateSize) { /* 32-bit code segment, use EIP */ State->InstPtr.Long = Offset; diff --git a/reactos/lib/fast486/common.h b/reactos/lib/fast486/common.h index 1bfdb311ef2..677bd19b378 100644 --- a/reactos/lib/fast486/common.h +++ b/reactos/lib/fast486/common.h @@ -159,7 +159,7 @@ Fast486InterruptInternal PFAST486_STATE State, USHORT SegmentSelector, ULONG Offset, - BOOLEAN InterruptGate + ULONG GateType ); VOID diff --git a/reactos/lib/fast486/common.inl b/reactos/lib/fast486/common.inl index fff8fc01474..a558ed461e9 100644 --- a/reactos/lib/fast486/common.inl +++ b/reactos/lib/fast486/common.inl @@ -542,24 +542,32 @@ Fast486LoadSegment(PFAST486_STATE State, { /* Loading a data segment */ - if (!GdtEntry.SystemType) + if (GET_SEGMENT_INDEX(Selector) != 0) { - /* This is a special descriptor */ - Fast486ExceptionWithErrorCode(State, FAST486_EXCEPTION_GP, Selector); - return FALSE; - } + if (!GdtEntry.SystemType) + { + /* This is a special descriptor */ + Fast486ExceptionWithErrorCode(State, FAST486_EXCEPTION_GP, Selector); + return FALSE; + } - if ((GET_SEGMENT_RPL(Selector) > GdtEntry.Dpl) - || (Fast486GetCurrentPrivLevel(State) > GdtEntry.Dpl)) - { - Fast486ExceptionWithErrorCode(State, FAST486_EXCEPTION_GP, Selector); - return FALSE; - } + if ((GET_SEGMENT_RPL(Selector) > GdtEntry.Dpl) + || (Fast486GetCurrentPrivLevel(State) > GdtEntry.Dpl)) + { + Fast486ExceptionWithErrorCode(State, FAST486_EXCEPTION_GP, Selector); + return FALSE; + } - if (!GdtEntry.Present) + if (!GdtEntry.Present) + { + Fast486ExceptionWithErrorCode(State, FAST486_EXCEPTION_NP, Selector); + return FALSE; + } + } + else { - Fast486ExceptionWithErrorCode(State, FAST486_EXCEPTION_NP, Selector); - return FALSE; + /* This is a NULL selector */ + RtlZeroMemory(&GdtEntry, sizeof(GdtEntry)); } } @@ -572,6 +580,7 @@ Fast486LoadSegment(PFAST486_STATE State, CachedDescriptor->DirConf = GdtEntry.DirConf; CachedDescriptor->Executable = GdtEntry.Executable; CachedDescriptor->SystemType = GdtEntry.SystemType; + CachedDescriptor->Rpl = GET_SEGMENT_RPL(Selector); CachedDescriptor->Dpl = GdtEntry.Dpl; CachedDescriptor->Present = GdtEntry.Present; CachedDescriptor->Size = GdtEntry.Size; diff --git a/reactos/lib/fast486/opcodes.c b/reactos/lib/fast486/opcodes.c index 1a8f1260484..e6f91a94d98 100644 --- a/reactos/lib/fast486/opcodes.c +++ b/reactos/lib/fast486/opcodes.c @@ -3702,9 +3702,9 @@ FAST486_OPCODE_HANDLER(Fast486OpcodePushImm) } else { - USHORT Data; + SHORT Data; - if (!Fast486FetchWord(State, &Data)) + if (!Fast486FetchWord(State, (PUSHORT)&Data)) { /* Exception occurred */ return FALSE; @@ -3837,12 +3837,12 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeImulModrmImm) FAST486_OPCODE_HANDLER(Fast486OpcodePushByteImm) { - UCHAR Data; + CHAR Data; /* Make sure this is the right instruction */ ASSERT(Opcode == 0x6A); - if (!Fast486FetchByte(State, &Data)) + if (!Fast486FetchByte(State, (PUCHAR)&Data)) { /* Exception occurred */ return FALSE; diff --git a/reactos/lib/fast486/opgroups.c b/reactos/lib/fast486/opgroups.c index 264fa66ba2c..efcaa1641ae 100644 --- a/reactos/lib/fast486/opgroups.c +++ b/reactos/lib/fast486/opgroups.c @@ -2018,10 +2018,13 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroup0F01) { UCHAR TableReg[6]; FAST486_MOD_REG_RM ModRegRm; - BOOLEAN AddressSize = State->SegmentRegs[FAST486_REG_CS].Size; + BOOLEAN OperandSize, AddressSize; FAST486_SEG_REGS Segment = FAST486_REG_DS; + OperandSize = AddressSize = State->SegmentRegs[FAST486_REG_CS].Size; + NO_LOCK_PREFIX(); + TOGGLE_OPSIZE(OperandSize); TOGGLE_ADSIZE(AddressSize); if (!Fast486ParseModRegRm(State, AddressSize, &ModRegRm)) @@ -2117,6 +2120,9 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroup0F01) State->Gdtr.Size = *((PUSHORT)TableReg); State->Gdtr.Address = *((PULONG)&TableReg[sizeof(USHORT)]); + /* In 16-bit mode the highest byte is masked out */ + if (!OperandSize) State->Gdtr.Address &= 0x00FFFFFF; + return TRUE; } @@ -2153,6 +2159,9 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeGroup0F01) State->Idtr.Size = *((PUSHORT)TableReg); State->Idtr.Address = *((PULONG)&TableReg[sizeof(USHORT)]); + /* In 16-bit mode the highest byte is masked out */ + if (!OperandSize) State->Idtr.Address &= 0x00FFFFFF; + return TRUE; } diff --git a/reactos/subsystems/ntvdm/dos/dos32krnl/dos.c b/reactos/subsystems/ntvdm/dos/dos32krnl/dos.c index 353fa6d3c22..ad218f1a10b 100644 --- a/reactos/subsystems/ntvdm/dos/dos32krnl/dos.c +++ b/reactos/subsystems/ntvdm/dos/dos32krnl/dos.c @@ -442,6 +442,10 @@ static WORD DosCopyEnvironmentBlock(LPCVOID Environment, LPCSTR ProgramName) /* Set the final zero */ *(DestBuffer++) = 0; + /* Store the special program name tag */ + *(DestBuffer++) = LOWORD(DOS_PROGRAM_NAME_TAG); + *(DestBuffer++) = HIWORD(DOS_PROGRAM_NAME_TAG); + /* Copy the program name after the environment block */ strcpy(DestBuffer, ProgramName); diff --git a/reactos/subsystems/ntvdm/dos/dos32krnl/dos.h b/reactos/subsystems/ntvdm/dos/dos32krnl/dos.h index e2f0cef368c..abbef7e142d 100644 --- a/reactos/subsystems/ntvdm/dos/dos32krnl/dos.h +++ b/reactos/subsystems/ntvdm/dos/dos32krnl/dos.h @@ -47,6 +47,7 @@ #define DOS_DIR_LENGTH 64 #define NUM_DRIVES ('Z' - 'A' + 1) #define DOS_CHAR_ATTRIBUTE 0x07 +#define DOS_PROGRAM_NAME_TAG 0x0001 enum DOS_ALLOC_STRATEGY { From dad0af61d41eaf015e2ea332f82d6475c5a4c891 Mon Sep 17 00:00:00 2001 From: Christoph von Wittich Date: Tue, 27 May 2014 21:20:39 +0000 Subject: [PATCH 087/232] [atl] atl: memory leak on failure path (copy pasta?) spotted by Samuel Serapion CORE-8212 svn path=/trunk/; revision=63483 --- reactos/lib/atl/statreg.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/lib/atl/statreg.h b/reactos/lib/atl/statreg.h index 33f219a4779..44bbe0d8908 100644 --- a/reactos/lib/atl/statreg.h +++ b/reactos/lib/atl/statreg.h @@ -272,7 +272,7 @@ private: { len = MultiByteToWideChar(CP_ACP, 0, regstra, filelen, NULL, 0) + 1; regstrw = reinterpret_cast(HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, len * sizeof(WCHAR))); - if (regstra == NULL) + if (regstrw == NULL) { HeapFree(GetProcessHeap(), 0, regstra); return E_OUTOFMEMORY; From 0f0db19784f058a78013f3506fdb9b3081d97a51 Mon Sep 17 00:00:00 2001 From: Aleksandar Andrejevic Date: Tue, 27 May 2014 21:29:36 +0000 Subject: [PATCH 088/232] [NTVDM] Fix the previous fix. Use LOBYTE/HIBYTE not LOWORD/HIWORD. svn path=/trunk/; revision=63484 --- reactos/subsystems/ntvdm/dos/dos32krnl/dos.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reactos/subsystems/ntvdm/dos/dos32krnl/dos.c b/reactos/subsystems/ntvdm/dos/dos32krnl/dos.c index ad218f1a10b..b4c565f9f1a 100644 --- a/reactos/subsystems/ntvdm/dos/dos32krnl/dos.c +++ b/reactos/subsystems/ntvdm/dos/dos32krnl/dos.c @@ -443,8 +443,8 @@ static WORD DosCopyEnvironmentBlock(LPCVOID Environment, LPCSTR ProgramName) *(DestBuffer++) = 0; /* Store the special program name tag */ - *(DestBuffer++) = LOWORD(DOS_PROGRAM_NAME_TAG); - *(DestBuffer++) = HIWORD(DOS_PROGRAM_NAME_TAG); + *(DestBuffer++) = LOBYTE(DOS_PROGRAM_NAME_TAG); + *(DestBuffer++) = HIBYTE(DOS_PROGRAM_NAME_TAG); /* Copy the program name after the environment block */ strcpy(DestBuffer, ProgramName); From c0931f28b6d4258a6b5ecd68c6131e815917baf5 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Tue, 27 May 2014 21:32:42 +0000 Subject: [PATCH 089/232] [CMAKE] Revert r63470 and add a comment, that this is not a typo. svn path=/trunk/; revision=63485 --- reactos/cmake/msvc.cmake | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/reactos/cmake/msvc.cmake b/reactos/cmake/msvc.cmake index d0ca86e3ef4..fe2ec991c8c 100644 --- a/reactos/cmake/msvc.cmake +++ b/reactos/cmake/msvc.cmake @@ -291,7 +291,9 @@ function(generate_import_lib _libname _dllname _spec_file) endfunction() if(ARCH STREQUAL "amd64") - add_definitions(/D__x86_64__) + # This is NOT a typo. + # See https://software.intel.com/en-us/forums/topic/404643 + add_definitions(/D__x86_64) set(SPEC2DEF_ARCH x86_64) elseif(ARCH STREQUAL "arm") add_definitions(/D__arm__) From 9bb3ac5d2e42e8dc839e69a72d1651e7a39869d8 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Tue, 27 May 2014 22:01:55 +0000 Subject: [PATCH 090/232] [CRT] Add many missing intrinsics to the MSVC intrin.h, including x86, x64 and ARM svn path=/trunk/; revision=63486 --- reactos/include/crt/msc/intrin.h | 508 +++++++++++++++++++++++++++---- 1 file changed, 446 insertions(+), 62 deletions(-) diff --git a/reactos/include/crt/msc/intrin.h b/reactos/include/crt/msc/intrin.h index c85463f6db2..387197d0187 100644 --- a/reactos/include/crt/msc/intrin.h +++ b/reactos/include/crt/msc/intrin.h @@ -29,52 +29,84 @@ void _mm_lfence(void); #pragma intrinsic(_mm_lfence) void _mm_sfence(void); #pragma intrinsic(_mm_sfence) +void __nvreg_restore_fence(void); +void __nvreg_save_fence(void); #endif -#ifdef _M_AMD64 +#if defined(_M_AMD64) void __faststorefence(void); #pragma intrinsic(__faststorefence) +#elif defined(_M_ARM) +__int16 __iso_volatile_load16(const volatile __int16 *); +#pragma intrinsic(__iso_volatile_load16) +__int32 __iso_volatile_load32(const volatile __int32 *); +#pragma intrinsic(__iso_volatile_load32) +__int64 __iso_volatile_load64(const volatile __int64 *); +#pragma intrinsic(__iso_volatile_load64) +__int8 __iso_volatile_load8(const volatile __int8 *); +#pragma intrinsic(__iso_volatile_load8) +void __iso_volatile_store16(volatile __int16 *, __int16); +#pragma intrinsic(__iso_volatile_store16) +void __iso_volatile_store32(volatile __int32 *, __int32); +#pragma intrinsic(__iso_volatile_store32) +void __iso_volatile_store64(volatile __int64 *, __int64); +#pragma intrinsic(__iso_volatile_store64) +void __iso_volatile_store8(volatile __int8 *, __int8); +#pragma intrinsic(__iso_volatile_store8) #endif /*** Atomic operations ***/ -long _InterlockedCompareExchange(volatile long * Destination, long Exchange, long Comperand); +long _InterlockedCompareExchange(_Interlocked_operand_ volatile long * Destination, long Exchange, long Comperand); #pragma intrinsic(_InterlockedCompareExchange) -long _InterlockedExchange(volatile long * Target, long Value); +char _InterlockedCompareExchange8(_Interlocked_operand_ char volatile * Destination, char Exchange, char Comparand); +#pragma intrinsic(_InterlockedCompareExchange8) +short _InterlockedCompareExchange16(_Interlocked_operand_ short volatile * Destination, short Exchange, short Comparand); +#pragma intrinsic(_InterlockedCompareExchange16) +__int64 _InterlockedCompareExchange64(_Interlocked_operand_ volatile __int64 * Destination, __int64 Exchange, __int64 Comperand); +#pragma intrinsic(_InterlockedCompareExchange64) +long _InterlockedExchange(_Interlocked_operand_ volatile long * Target, long Value); #pragma intrinsic(_InterlockedExchange) -long _InterlockedExchangeAdd(volatile long * Addend, long Value); +char _InterlockedExchange8(_Interlocked_operand_ char volatile * Target, char Value); +#pragma intrinsic(_InterlockedExchange8) +short _InterlockedExchange16(_Interlocked_operand_ short volatile * Target, short Value); +#pragma intrinsic(_InterlockedExchange16) +long _InterlockedExchangeAdd(_Interlocked_operand_ volatile long * Addend, long Value); #pragma intrinsic(_InterlockedExchangeAdd) -char _InterlockedAnd8(volatile char * value, char mask); +char _InterlockedExchangeAdd8(_Interlocked_operand_ char volatile * Addend, char Value); +#pragma intrinsic(_InterlockedExchangeAdd8) +short _InterlockedExchangeAdd16(_Interlocked_operand_ short volatile * Addend, short Value); +#pragma intrinsic(_InterlockedExchangeAdd16) +char _InterlockedAnd8(_Interlocked_operand_ volatile char * value, char mask); #pragma intrinsic(_InterlockedAnd8) -short _InterlockedAnd16(volatile short * value, short mask); +short _InterlockedAnd16(_Interlocked_operand_ volatile short * value, short mask); #pragma intrinsic(_InterlockedAnd16) -long _InterlockedAnd(volatile long * value, long mask); +long _InterlockedAnd(_Interlocked_operand_ volatile long * value, long mask); #pragma intrinsic(_InterlockedAnd) -char _InterlockedOr8(volatile char * value, char mask); +char _InterlockedOr8(_Interlocked_operand_ volatile char * value, char mask); #pragma intrinsic(_InterlockedOr8) -short _InterlockedOr16(volatile short * value, short mask); +short _InterlockedOr16(_Interlocked_operand_ volatile short * value, short mask); #pragma intrinsic(_InterlockedOr16) -long _InterlockedOr(volatile long * value, long mask); +long _InterlockedOr(_Interlocked_operand_ volatile long * value, long mask); #pragma intrinsic(_InterlockedOr) -char _InterlockedXor8(volatile char * value, char mask); +char _InterlockedXor8(_Interlocked_operand_ volatile char * value, char mask); #pragma intrinsic(_InterlockedXor8) -short _InterlockedXor16(volatile short * value, short mask); +short _InterlockedXor16(_Interlocked_operand_ volatile short * value, short mask); #pragma intrinsic(_InterlockedXor16) -long _InterlockedXor(volatile long * value, long mask); +long _InterlockedXor(_Interlocked_operand_ volatile long * value, long mask); #pragma intrinsic(_InterlockedXor) -long _InterlockedDecrement(volatile long * lpAddend); +long _InterlockedDecrement(_Interlocked_operand_ volatile long * lpAddend); #pragma intrinsic(_InterlockedDecrement) -long _InterlockedIncrement(volatile long * lpAddend); +long _InterlockedIncrement(_Interlocked_operand_ volatile long * lpAddend); #pragma intrinsic(_InterlockedIncrement) -short _InterlockedDecrement16(volatile short * lpAddend); +short _InterlockedDecrement16(_Interlocked_operand_ volatile short * lpAddend); #pragma intrinsic(_InterlockedDecrement16) -short _InterlockedIncrement16(volatile short * lpAddend); +short _InterlockedIncrement16(_Interlocked_operand_ volatile short * lpAddend); #pragma intrinsic(_InterlockedIncrement16) unsigned char _interlockedbittestandreset(volatile long * a, long b); #pragma intrinsic(_interlockedbittestandreset) unsigned char _interlockedbittestandset(volatile long * a, long b); #pragma intrinsic(_interlockedbittestandset) - #if defined(_M_IX86) -long _InterlockedAddLargeStatistic(volatile __int64 * Addend, long Value); +long _InterlockedAddLargeStatistic(_Interlocked_operand_ volatile __int64 * Addend, long Value); #pragma intrinsic(_InterlockedAddLargeStatistic) #elif defined(_M_AMD64) __int64 _InterlockedExchange64(volatile __int64 * Target, __int64 Value); @@ -85,12 +117,12 @@ void * _InterlockedCompareExchangePointer(void * volatile * Destination, void * #pragma intrinsic(_InterlockedCompareExchangePointer) void * _InterlockedExchangePointer(void * volatile * Target, void * Value); #pragma intrinsic(_InterlockedExchangePointer) +unsigned char _InterlockedCompareExchange128(_Interlocked_operand_ volatile __int64 * Destination, __int64 ExchangeHigh, __int64 ExchangeLow, __int64 * ComparandResult); +#pragma intrinsic(_InterlockedCompareExchange128) __int64 _InterlockedAnd64(volatile __int64 * value, __int64 mask); #pragma intrinsic(_InterlockedAnd64) __int64 _InterlockedOr64(volatile __int64 * value, __int64 mask); #pragma intrinsic(_InterlockedOr64) -__int64 _InterlockedCompareExchange64(volatile __int64 * Destination, __int64 Exchange, __int64 Comperand); -#pragma intrinsic(_InterlockedCompareExchange64) __int64 _InterlockedDecrement64(volatile __int64 * lpAddend); #pragma intrinsic(_InterlockedDecrement64) __int64 _InterlockedIncrement64(volatile __int64 * lpAddend); @@ -99,10 +131,161 @@ unsigned char _interlockedbittestandreset64(volatile __int64 * a, __int64 b); #pragma intrinsic(_interlockedbittestandreset64) unsigned char _interlockedbittestandset64(volatile __int64 * a, __int64 b); #pragma intrinsic(_interlockedbittestandset64) +long _InterlockedAnd_np(volatile long * Value, long Mask); +#pragma intrinsic(_InterlockedAnd_np) +char _InterlockedAnd8_np(volatile char * Value, char Mask); +#pragma intrinsic(_InterlockedAnd8_np) +short _InterlockedAnd16_np(volatile short * Value, short Mask); +#pragma intrinsic(_InterlockedAnd16_np) +__int64 _InterlockedAnd64_np(volatile __int64 * Value, __int64 Mask); +#pragma intrinsic(_InterlockedAnd64_np) +short _InterlockedCompareExchange16_np(volatile short * Destination, short Exchange, short Comparand); +#pragma intrinsic(_InterlockedCompareExchange16_np) +__int64 _InterlockedCompareExchange64_np(volatile __int64 * Destination, __int64 Exchange, __int64 Comparand); +#pragma intrinsic(_InterlockedCompareExchange64_np) +unsigned char _InterlockedCompareExchange128_np(volatile __int64 * Destination, __int64 ExchangeHigh, __int64 ExchangeLow, __int64 * ComparandResult); +#pragma intrinsic(_InterlockedCompareExchange128_np) +void * _InterlockedCompareExchangePointer_np(void * volatile * Destination, void * Exchange, void * Comparand); +#pragma intrinsic(_InterlockedCompareExchangePointer_np) +long _InterlockedCompareExchange_np(volatile long * Destination, long Exchange, long Comparand); +#pragma intrinsic(_InterlockedCompareExchange_np) +short _InterlockedOr16_np(volatile short * Value, short Mask); +#pragma intrinsic(_InterlockedOr16_np) +char _InterlockedOr8_np(volatile char * Value, char Mask); +#pragma intrinsic(_InterlockedOr8_np) +long _InterlockedOr_np(volatile long * Value, long Mask); +#pragma intrinsic(_InterlockedOr_np) +short _InterlockedXor16_np(volatile short * Value, short Mask); +#pragma intrinsic(_InterlockedXor16_np) +__int64 _InterlockedXor64_np(volatile __int64 * Value, __int64 Mask); +#pragma intrinsic(_InterlockedXor64_np) +char _InterlockedXor8_np(volatile char * Value, char Mask); +#pragma intrinsic(_InterlockedXor8_np) +long _InterlockedXor_np(volatile long * Value, long Mask); +#pragma intrinsic(_InterlockedXor_np) +__int64 _InterlockedOr64_np(volatile __int64 * Value, __int64 Mask); +#pragma intrinsic(_InterlockedOr64_np) +#elif defined(_M_ARM) +long _InterlockedAdd(_Interlocked_operand_ long volatile * Addend, long Value); +__int64 _InterlockedAdd64(_Interlocked_operand_ __int64 volatile * Addend, __int64 Value); +__int64 _InterlockedAdd64_acq(__int64 volatile * Addend, __int64 Value); +__int64 _InterlockedAdd64_nf(__int64 volatile * Addend, __int64 Value); +__int64 _InterlockedAdd64_rel(__int64 volatile * Addend, __int64 Value); +long _InterlockedAdd_acq(long volatile * Addend, long Value); +long _InterlockedAdd_nf(long volatile * Addend, long Value); +long _InterlockedAdd_rel(long volatile * Addend, long Value); +short _InterlockedAnd16_acq(short volatile * Value, short Mask); +short _InterlockedAnd16_nf(short volatile * Value, short Mask); +short _InterlockedAnd16_rel(short volatile * Value, short Mask); +__int64 _InterlockedAnd64_acq(__int64 volatile * Value, __int64 Mask); +__int64 _InterlockedAnd64_nf(__int64 volatile * Value, __int64 Mask); +__int64 _InterlockedAnd64_rel(__int64 volatile * Value, __int64 Mask); +char _InterlockedAnd8_acq(char volatile * Value, char Mask); +char _InterlockedAnd8_nf(char volatile * Value, char Mask); +char _InterlockedAnd8_rel(char volatile * Value, char Mask); +long _InterlockedAnd_acq(long volatile * Value, long Mask); +long _InterlockedAnd_nf(long volatile * Value, long Mask); +long _InterlockedAnd_rel(long volatile * Value, long Mask); +short _InterlockedCompareExchange16_acq(short volatile * Destination, short Exchange, short Comparand); +short _InterlockedCompareExchange16_nf(short volatile * Destination, short Exchange, short Comparand); +short _InterlockedCompareExchange16_rel(short volatile * Destination, short Exchange, short Comparand); +__int64 _InterlockedCompareExchange64_acq(__int64 volatile * Destination, __int64 Exchange, __int64 Comparand); +__int64 _InterlockedCompareExchange64_nf(__int64 volatile * Destination, __int64 Exchange, __int64 Comparand); +__int64 _InterlockedCompareExchange64_rel(__int64 volatile * Destination, __int64 Exchange, __int64 Comparand); +char _InterlockedCompareExchange8_acq(char volatile * Destination, char Exchange, char Comparand); +char _InterlockedCompareExchange8_nf(char volatile * Destination, char Exchange, char Comparand); +char _InterlockedCompareExchange8_rel(char volatile * Destination, char Exchange, char Comparand); +void * _InterlockedCompareExchangePointer_acq(void * volatile * Destination, void * Exchange, void * Comparand); +void * _InterlockedCompareExchangePointer_nf(void * volatile * Destination, void * Exchange, void * Comparand); +void * _InterlockedCompareExchangePointer_rel(void * volatile * Destination, void * Exchange, void * Comparand); +long _InterlockedCompareExchange_acq(long volatile * Destination, long Exchange, long Comparand); +long _InterlockedCompareExchange_nf(long volatile * Destination, long Exchange, long Comparand); +long _InterlockedCompareExchange_rel(long volatile * Destination, long Exchange, long Comparand); +short _InterlockedDecrement16_acq(short volatile * Addend); +short _InterlockedDecrement16_nf(short volatile * Addend); +short _InterlockedDecrement16_rel(short volatile * Addend); +__int64 _InterlockedDecrement64_acq(__int64 volatile * Addend); +__int64 _InterlockedDecrement64_nf(__int64 volatile * Addend); +__int64 _InterlockedDecrement64_rel(__int64 volatile * Addend); +long _InterlockedDecrement_acq(long volatile * Addend); +long _InterlockedDecrement_nf(long volatile * Addend); +long _InterlockedDecrement_rel(long volatile * Addend); +short _InterlockedExchange16_acq(short volatile * Target, short Value); +short _InterlockedExchange16_nf(short volatile * Target, short Value); +__int64 _InterlockedExchange64_acq(__int64 volatile * Target, __int64 Value); +__int64 _InterlockedExchange64_nf(__int64 volatile * Target, __int64 Value); +char _InterlockedExchange8_acq(char volatile * Target, char Value); +char _InterlockedExchange8_nf(char volatile * Target, char Value); +short _InterlockedExchangeAdd16_acq(short volatile * Addend, short Value); +short _InterlockedExchangeAdd16_nf(short volatile * Addend, short Value); +short _InterlockedExchangeAdd16_rel(short volatile * Addend, short Value); +__int64 _InterlockedExchangeAdd64_acq(__int64 volatile * Addend, __int64 Value); +__int64 _InterlockedExchangeAdd64_nf(__int64 volatile * Addend, __int64 Value); +__int64 _InterlockedExchangeAdd64_rel(__int64 volatile * Addend, __int64 Value); +char _InterlockedExchangeAdd8_acq(char volatile * Addend, char Value); +char _InterlockedExchangeAdd8_nf(char volatile * Addend, char Value); +char _InterlockedExchangeAdd8_rel(char volatile * Addend, char Value); +long _InterlockedExchangeAdd_acq(long volatile * Addend, long Value); +long _InterlockedExchangeAdd_nf(long volatile * Addend, long Value); +long _InterlockedExchangeAdd_rel(long volatile * Addend, long Value); +void * _InterlockedExchangePointer_acq(void * volatile * Target, void * Value); +void * _InterlockedExchangePointer_nf(void * volatile * Target, void * Value); +long _InterlockedExchange_acq(long volatile * Target, long Value); +long _InterlockedExchange_nf(long volatile * Target, long Value); +short _InterlockedIncrement16_acq(short volatile * Addend); +short _InterlockedIncrement16_nf(short volatile * Addend); +short _InterlockedIncrement16_rel(short volatile * Addend); +__int64 _InterlockedIncrement64_acq(__int64 volatile * Addend); +__int64 _InterlockedIncrement64_nf(__int64 volatile * Addend); +__int64 _InterlockedIncrement64_rel(__int64 volatile * Addend); +long _InterlockedIncrement_acq(long volatile * Addend); +long _InterlockedIncrement_nf(long volatile * Addend); +long _InterlockedIncrement_rel(long volatile * Addend); +short _InterlockedOr16_acq(short volatile * Value, short Mask); +short _InterlockedOr16_nf(short volatile * Value, short Mask); +short _InterlockedOr16_rel(short volatile * Value, short Mask); +__int64 _InterlockedOr64_acq(__int64 volatile * Value, __int64 Mask); +__int64 _InterlockedOr64_nf(__int64 volatile * Value, __int64 Mask); +__int64 _InterlockedOr64_rel(__int64 volatile * Value, __int64 Mask); +char _InterlockedOr8_acq(char volatile * Value, char Mask); +char _InterlockedOr8_nf(char volatile * Value, char Mask); +char _InterlockedOr8_rel(char volatile * Value, char Mask); +long _InterlockedOr_acq(long volatile * Value, long Mask); +long _InterlockedOr_nf(long volatile * Value, long Mask); +long _InterlockedOr_rel(long volatile * Value, long Mask); +short _InterlockedXor16_acq(short volatile * Value, short Mask); +short _InterlockedXor16_nf(short volatile * Value, short Mask); +short _InterlockedXor16_rel(short volatile * Value, short Mask); +__int64 _InterlockedXor64_acq(__int64 volatile * Value, __int64 Mask); +__int64 _InterlockedXor64_nf(__int64 volatile * Value, __int64 Mask); +__int64 _InterlockedXor64_rel(_Interlocked_operand_ __int64 volatile * Value, __int64 Mask); +char _InterlockedXor8_acq(char volatile * Value, char Mask); +char _InterlockedXor8_nf(char volatile * Value, char Mask); +char _InterlockedXor8_rel(char volatile * Value, char Mask); +long _InterlockedXor_acq(long volatile * Value, long Mask); +long _InterlockedXor_nf(long volatile * Value, long Mask); +long _InterlockedXor_rel(long volatile * Value, long Mask); +unsigned char _interlockedbittestandreset_acq(long volatile *, long); +unsigned char _interlockedbittestandreset_nf(long volatile *, long); +unsigned char _interlockedbittestandreset_rel(long volatile *, long); +unsigned char _interlockedbittestandset_acq(long volatile *, long); +unsigned char _interlockedbittestandset_nf(long volatile *, long); +unsigned char _interlockedbittestandset_rel(long volatile *, long); +#endif +#if defined(_M_AMD64) || defined(_M_ARM) +__int64 _InterlockedAnd64(_Interlocked_operand_ __int64 volatile * Value, __int64 Mask); +void * _InterlockedCompareExchangePointer(_Interlocked_operand_ void * volatile * Destination, void * Exchange, void * Comparand); +__int64 _InterlockedDecrement64(_Interlocked_operand_ __int64 volatile * Addend); +__int64 _InterlockedExchange64(_Interlocked_operand_ __int64 volatile * Target, __int64 Value); +__int64 _InterlockedExchangeAdd64(_Interlocked_operand_ __int64 volatile * Addend, __int64 Value); +void * _InterlockedExchangePointer(_Interlocked_operand_ void * volatile * Target, void * Value); +__int64 _InterlockedIncrement64(_Interlocked_operand_ __int64 volatile * Addend); +__int64 _InterlockedOr64(_Interlocked_operand_ __int64 volatile * Value, __int64 Mask); +__int64 _InterlockedXor64(_Interlocked_operand_ __int64 volatile * Value, __int64 Mask); #endif -#if defined(_M_IX86) || defined(_M_AMD64) /*** String operations ***/ +#if defined(_M_IX86) || defined(_M_AMD64) void __stosb(unsigned char * Dest, unsigned char Data, size_t Count); #pragma intrinsic(__stosb) void __stosw(unsigned short * Dest, unsigned short Data, size_t Count); @@ -123,8 +306,8 @@ void __movsq(unsigned __int64 * Destination, unsigned __int64 const * Source, si #pragma intrinsic(__movsq) #endif -#if defined(_M_AMD64) /*** GS segment addressing ***/ +#if defined(_M_AMD64) void __writegsbyte(unsigned long Offset, unsigned char Data); #pragma intrinsic(__writegsbyte) void __writegsword(unsigned long Offset, unsigned short Data); @@ -147,30 +330,36 @@ void __incgsword(unsigned long Offset); #pragma intrinsic(__incgsword) void __incgsdword(unsigned long Offset); #pragma intrinsic(__incgsdword) +void __incgsqword(unsigned long); +#pragma intrinsic(__incgsqword) void __addgsbyte(unsigned long Offset, unsigned char Data); #pragma intrinsic(__addgsbyte) void __addgsword(unsigned long Offset, unsigned short Data); #pragma intrinsic(__addgsword) -void __addgsdword(unsigned long Offset, unsigned int Data); +void __addgsdword(unsigned long Offset, unsigned long Data); #pragma intrinsic(__addgsdword) void __addgsqword(unsigned long Offset, unsigned __int64 Data); #pragma intrinsic(__addgsqword) #endif -#if defined(_M_IX86) /*** FS segment addressing ***/ +#if defined(_M_IX86) void __writefsbyte(unsigned long Offset, unsigned char Data); #pragma intrinsic(__writefsbyte) void __writefsword(unsigned long Offset, unsigned short Data); #pragma intrinsic(__writefsword) void __writefsdword(unsigned long Offset, unsigned long Data); #pragma intrinsic(__writefsdword) +void __writefsqword(unsigned long Offset, unsigned __int64 Data); +#pragma intrinsic(__writefsdword) unsigned char __readfsbyte(unsigned long Offset); #pragma intrinsic(__readfsbyte) unsigned short __readfsword(unsigned long Offset); #pragma intrinsic(__readfsword) unsigned long __readfsdword(unsigned long Offset); #pragma intrinsic(__readfsdword) +unsigned __int64 __readfsqword(unsigned long); +#pragma intrinsic(__readfsqword) void __incfsbyte(unsigned long Offset); #pragma intrinsic(__incfsbyte) void __incfsword(unsigned long Offset); @@ -181,11 +370,10 @@ void __addfsbyte(unsigned long Offset, unsigned char Data); #pragma intrinsic(__addfsbyte) void __addfsword(unsigned long Offset, unsigned short Data); #pragma intrinsic(__addfsword) -void __addfsdword(unsigned long Offset, unsigned int Data); +void __addfsdword(unsigned long Offset, unsigned long Data); #pragma intrinsic(__addfsdword) #endif - /*** Bit manipulation ***/ unsigned char _BitScanForward(unsigned long * Index, unsigned long Mask); #pragma intrinsic(_BitScanForward) @@ -209,14 +397,22 @@ unsigned char _rotl8(unsigned char value, unsigned char shift); #pragma intrinsic(_rotl8) unsigned short _rotl16(unsigned short value, unsigned char shift); #pragma intrinsic(_rotl16) -unsigned int _rotl(unsigned int value, int shift); +_Check_return_ unsigned int _rotl(unsigned int value, int shift); #pragma intrinsic(_rotl) -unsigned int _rotr(unsigned int value, int shift); -#pragma intrinsic(_rotr) +_Check_return_ unsigned __int64 __cdecl _rotl64(_In_ unsigned __int64 Value, _In_ int Shift); +#pragma intrinsic(_rotl64) +_Check_return_ unsigned long __cdecl _lrotl(_In_ unsigned long, _In_ int); +#pragma intrinsic(_lrotl) unsigned char _rotr8(unsigned char value, unsigned char shift); #pragma intrinsic(_rotr8) unsigned short _rotr16(unsigned short value, unsigned char shift); #pragma intrinsic(_rotr16) +_Check_return_ unsigned int _rotr(unsigned int value, int shift); +#pragma intrinsic(_rotr) +_Check_return_ unsigned __int64 __cdecl _rotr64(_In_ unsigned __int64 Value, _In_ int Shift); +#pragma intrinsic(_rotr64) +_Check_return_ unsigned long __cdecl _lrotr(_In_ unsigned long, _In_ int); +#pragma intrinsic(_lrotr) unsigned short _byteswap_ushort(unsigned short value); #pragma intrinsic(_byteswap_ushort) unsigned long _byteswap_ulong(unsigned long value); @@ -230,26 +426,86 @@ __int64 __ll_rshift(__int64 Mask, int Bit); #pragma intrinsic(__ll_rshift) unsigned __int64 __ull_rshift(unsigned __int64 Mask, int Bit); #pragma intrinsic(__ull_rshift) +unsigned int __lzcnt(unsigned int Value); +#pragma intrinsic(__lzcnt) +unsigned short __lzcnt16(unsigned short Value); +#pragma intrinsic(__lzcnt16) +unsigned int __popcnt(unsigned int Value); +#pragma intrinsic(__popcnt) +unsigned short __popcnt16(unsigned short Value); +#pragma intrinsic(__popcnt16) #endif #ifdef _M_AMD64 +unsigned __int64 __shiftleft128(unsigned __int64 LowPart, unsigned __int64 HighPart, unsigned char Shift); +#pragma intrinsic(__shiftleft128) +unsigned __int64 __shiftright128(unsigned __int64 LowPart, unsigned __int64 HighPart, unsigned char Shift); +#pragma intrinsic(__shiftright128) unsigned char _bittest64(__int64 const *a, __int64 b); #pragma intrinsic(_bittest64) +unsigned char _bittestandcomplement64(__int64 *a, __int64 b); +#pragma intrinsic(_bittestandcomplement64) +unsigned char _bittestandreset64(__int64 *a, __int64 b); +#pragma intrinsic(_bittestandreset64) +unsigned char _bittestandset64(__int64 *a, __int64 b); +#pragma intrinsic(_bittestandset64) +unsigned __int64 __lzcnt64(unsigned __int64 Value); +#pragma intrinsic(__lzcnt64) +unsigned __int64 __popcnt64(unsigned __int64 Value); +#pragma intrinsic(__popcnt64) +#elif defined(_M_ARM) +unsigned int _CountLeadingOnes(unsigned long Value); +unsigned int _CountLeadingOnes64(unsigned __int64 Value); +unsigned int _CountLeadingSigns(long Value); +unsigned int _CountLeadingSigns64(__int64 Value); +unsigned int _CountLeadingZeros(unsigned long Value); +unsigned int _CountLeadingZeros64(unsigned __int64 Value); +unsigned int _CountOneBits(unsigned long Value); +unsigned int _CountOneBits64(unsigned __int64 Value); #endif +/*** 64/128-bit math ***/ +__int64 __cdecl _abs64(__int64); +#pragma intrinsic(_abs64) #if defined(_M_IX86) || defined(_M_AMD64) -/*** 64-bit math ***/ __int64 __emul(int a, int b); #pragma intrinsic(__emul) unsigned __int64 __emulu(unsigned int a, unsigned int b); #pragma intrinsic(__emulu) #endif #ifdef _M_AMD64 +__int64 __mulh(__int64 a, __int64 b); +#pragma intrinsic(__mulh) unsigned __int64 __umulh(unsigned __int64 a, unsigned __int64 b); #pragma intrinsic(__umulh) +__int64 _mul128(__int64 Multiplier, __int64 Multiplicand, __int64 * HighProduct); +#pragma intrinsic(_mul128) +unsigned __int64 _umul128(unsigned __int64 Multiplier, unsigned __int64 Multiplicand, unsigned __int64 * HighProduct); +#pragma intrinsic(_umul128) +#elif defined(_M_ARM) +long _MulHigh(long Multiplier, long Multiplicand); +#pragma intrinsic(_MulHigh) +unsigned long _MulUnsignedHigh(unsigned long Multiplier, unsigned long Multiplicand); +#pragma intrinsic(_MulUnsignedHigh) +#endif + +/** Floating point stuff **/ +#if defined(_M_ARM) +int _isunordered(double arg1, double arg2); +#pragma intrinsic(_isunordered) +int _isunorderedf(float arg1, float arg2); +#pragma intrinsic(_isunorderedf) +double _CopyDoubleFromInt64(__int64); +#pragma intrinsic(_CopyDoubleFromInt64) +float _CopyFloatFromInt32(__int32); +#pragma intrinsic(_CopyFloatFromInt32) +__int32 _CopyInt32FromFloat(float); +#pragma intrinsic(_CopyInt32FromFloat) +__int64 _CopyInt64FromDouble(double); +#pragma intrinsic(_CopyInt64FromDouble) #endif -#if defined(_M_IX86) || defined(_M_AMD64) /*** Port I/O ***/ +#if defined(_M_IX86) || defined(_M_AMD64) unsigned char __inbyte(unsigned short Port); #pragma intrinsic(__inbyte) unsigned short __inword(unsigned short Port); @@ -274,21 +530,49 @@ void __outwordstring(unsigned short Port, unsigned short * Buffer, unsigned long #pragma intrinsic(__outwordstring) void __outdwordstring(unsigned short Port, unsigned long * Buffer, unsigned long Count); #pragma intrinsic(__outdwordstring) +int __cdecl _inp(unsigned short Port); +#pragma intrinsic(_inp) +unsigned long __cdecl _inpd(unsigned short Port); +#pragma intrinsic(_inpd) +unsigned short __cdecl _inpw(unsigned short Port); +#pragma intrinsic(_inpw) +int __cdecl inp(unsigned short Port); +#pragma intrinsic(inp) +unsigned long __cdecl inpd(unsigned short Port); +#pragma intrinsic(inpd) +unsigned short __cdecl inpw(unsigned short Port); +#pragma intrinsic(inpw) +int __cdecl _outp(unsigned short Port, int Value); +#pragma intrinsic(_outp) +unsigned long __cdecl _outpd(unsigned short Port, unsigned long Value); +#pragma intrinsic(_outpd) +unsigned short __cdecl _outpw(unsigned short Port, unsigned short Value); +#pragma intrinsic(_outpw) +int __cdecl outp(unsigned short Port, int Value); +#pragma intrinsic(outp) +unsigned long __cdecl outpd(unsigned short Port, unsigned long Value); +#pragma intrinsic(outpd) +unsigned short __cdecl outpw(unsigned short Port, unsigned short Value); +#pragma intrinsic(outpw) #endif -#if defined(_M_IX86) || defined(_M_AMD64) /*** System information ***/ -void __cpuid(int CPUInfo[], int InfoType); +#if defined(_M_IX86) || defined(_M_AMD64) +void __cpuid(int CPUInfo[4], int InfoType); #pragma intrinsic(__cpuid) +void __cpuidex(int CPUInfo[4], int InfoType, int ECXValue); +#pragma intrinsic(__cpuidex) unsigned __int64 __rdtsc(void); #pragma intrinsic(__rdtsc) +unsigned __int64 __rdtscp(unsigned int *); +#pragma intrinsic(__rdtscp) void __writeeflags(uintptr_t Value); #pragma intrinsic(__writeeflags) uintptr_t __readeflags(void); #pragma intrinsic(__readeflags) #endif -/*** Interrupts ***/ +/*** Interrupts and traps ***/ void __debugbreak(void); #pragma intrinsic(__debugbreak) void _disable(void); @@ -300,49 +584,44 @@ void __int2c(void); #pragma intrinsic(__int2c) void __halt(void); #pragma intrinsic(__halt) +void __ud2(void); +#pragma intrinsic(__ud2) +__declspec(noreturn) void __fastfail(unsigned int Code); +#pragma intrinsic(__fastfail) +#endif +#if defined(_M_ARM) +int __trap(int Arg1, ...); #endif /*** Protected memory management ***/ #if defined(_M_IX86) || defined(_M_AMD64) -void __writecr0(unsigned __int64 Data); +void __writecr0(uintptr_t Data); #pragma intrinsic(__writecr0) -void __writecr3(unsigned __int64 Data); +void __writecr3(uintptr_t Data); #pragma intrinsic(__writecr3) -void __writecr4(unsigned __int64 Data); +void __writecr4(uintptr_t Data); #pragma intrinsic(__writecr4) -#endif -#ifdef _M_AMD64 -void __writecr8(unsigned __int64 Data); +void __writecr8(uintptr_t Data); #pragma intrinsic(__writecr8) -unsigned __int64 __readcr0(void); -#pragma intrinsic(__readcr0) -unsigned __int64 __readcr2(void); -#pragma intrinsic(__readcr2) -unsigned __int64 __readcr3(void); -#pragma intrinsic(__readcr3) -unsigned __int64 __readcr4(void); -#pragma intrinsic(__readcr4) -unsigned __int64 __readcr8(void); -#pragma intrinsic(__readcr8) -unsigned __int64 __readdr(unsigned int reg); -#pragma intrinsic(__readdr) -void __writedr(unsigned reg, unsigned __int64 value); -#pragma intrinsic(__writedr) -#elif defined(_M_IX86) +#endif +#if defined(_M_IX86) unsigned long __readcr0(void); +#pragma intrinsic(__readcr0) unsigned long __readcr2(void); +#pragma intrinsic(__readcr2) unsigned long __readcr3(void); +#pragma intrinsic(__readcr3) //unsigned long __readcr4(void); //#pragma intrinsic(__readcr4) // HACK: MSVC is broken unsigned long ___readcr4(void); #define __readcr4 ___readcr4 - +unsigned long __readcr8(void); +#pragma intrinsic(__readcr8) unsigned int __readdr(unsigned int reg); +#pragma intrinsic(__readdr) void __writedr(unsigned reg, unsigned int value); -#endif - -#ifdef _M_IX86 +#pragma intrinsic(__writedr) // This intrinsic is broken and generates wrong opcodes, // when optimization is enabled! #pragma warning(push) @@ -362,15 +641,33 @@ void __forceinline __invlpg_fixed(void * Address) #elif defined(_M_AMD64) void __invlpg(void * Address); #pragma intrinsic(__invlpg) +#elif defined(_M_AMD64) +unsigned __int64 __readcr0(void); +#pragma intrinsic(__readcr0) +unsigned __int64 __readcr2(void); +#pragma intrinsic(__readcr2) +unsigned __int64 __readcr3(void); +#pragma intrinsic(__readcr3) +unsigned __int64 __readcr4(void); +#pragma intrinsic(__readcr4) +unsigned __int64 __readcr8(void); +#pragma intrinsic(__readcr8) +unsigned __int64 __readdr(unsigned int reg); +#pragma intrinsic(__readdr) +void __writedr(unsigned reg, unsigned __int64 value); +#pragma intrinsic(__writedr) +#elif defined(_M_ARM) +void __cdecl __prefetch(const void *); +#pragma intrinsic(__prefetch) #endif /*** System operations ***/ #if defined(_M_IX86) || defined(_M_AMD64) -unsigned __int64 __readmsr(int reg); +unsigned __int64 __readmsr(unsigned long reg); #pragma intrinsic(__readmsr) void __writemsr(unsigned long Register, unsigned __int64 Value); #pragma intrinsic(__writemsr) -unsigned __int64 __readpmc(int counter); +unsigned __int64 __readpmc(unsigned long counter); #pragma intrinsic(__readpmc) unsigned long __segmentlimit(unsigned long a); #pragma intrinsic(__segmentlimit) @@ -383,6 +680,93 @@ void __sidt(void *Destination); void _mm_pause(void); #pragma intrinsic(_mm_pause) #endif +#if defined(_M_ARM) +unsigned int _MoveFromCoprocessor(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int); +#pragma intrinsic(_MoveFromCoprocessor) +unsigned int _MoveFromCoprocessor2(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int); +#pragma intrinsic(_MoveFromCoprocessor2) +unsigned __int64 _MoveFromCoprocessor64(unsigned int, unsigned int, unsigned int); +#pragma intrinsic(_MoveFromCoprocessor64) +void _MoveToCoprocessor(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int); +#pragma intrinsic(_MoveToCoprocessor) +void _MoveToCoprocessor2(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int); +#pragma intrinsic(_MoveToCoprocessor2) +void _MoveToCoprocessor64(unsigned __int64, unsigned int, unsigned int, unsigned int); +#pragma intrinsic(_MoveToCoprocessor64) +int _ReadStatusReg(int); +#pragma intrinsic(_ReadStatusReg) +void _WriteStatusReg(int, int, int); +#pragma intrinsic(_WriteStatusReg) +void __yield(void); +#pragma intrinsic(__yield) +void __wfe(void); +#pragma intrinsic(__wfe) +void __wfi(void); +#pragma intrinsic(__wfi) +unsigned int __swi(unsigned int, ...); +#pragma intrinsic(__swi) +unsigned int __hvc(unsigned int, ...); +#pragma intrinsic(__hvc) +__int64 __ldrexd(__int64 volatile *); +#pragma intrinsic(__ldrexd) +unsigned __int64 __rdpmccntr64(void); +#pragma intrinsic(__rdpmccntr64) +void __sev(void); +#pragma intrinsic(__sev) +#endif + +/** Secure virtual machine **/ +#if defined(_M_IX86) || defined(_M_AMD64) +void __svm_clgi(void); +#pragma intrinsic(__svm_clgi) +void __svm_invlpga(void * Va, int Asid); +#pragma intrinsic(__svm_invlpga) +void __svm_skinit(int Slb); +#pragma intrinsic(__svm_skinit) +void __svm_stgi(void); +#pragma intrinsic(__svm_stgi) +void __svm_vmload(uintptr_t VmcbPhysicalAddress); +#pragma intrinsic(__svm_vmload) +void __svm_vmrun(uintptr_t VmcbPhysicalAddress); +#pragma intrinsic(__svm_vmrun) +void __svm_vmsave(uintptr_t VmcbPhysicalAddress); +#pragma intrinsic(__svm_vmsave) +#endif + +/** Virtual machine extension **/ +#if defined(_M_IX86) || defined(_M_AMD64) +void __vmx_off(void); +void __vmx_vmptrst(unsigned __int64 * VmcsPhysicalAddress ); +#endif +#if defined(_M_AMD64) +unsigned char __vmx_on(unsigned __int64 * VmsSupportPhysicalAddress); +unsigned char __vmx_vmclear(unsigned __int64 * VmcsPhysicalAddress); +unsigned char __vmx_vmlaunch(void); +unsigned char __vmx_vmptrld(unsigned __int64 *VmcsPhysicalAddress ); +unsigned char __vmx_vmread(size_t Field, size_t *FieldValue); +unsigned char __vmx_vmresume(void); +unsigned char __vmx_vmwrite(size_t Field, size_t FieldValue); +#endif + +/** Misc **/ +void __nop(void); +#pragma intrinsic(__nop) +void __code_seg(const char *); +#pragma intrinsic(__code_seg) +#ifdef _M_ARM +int _AddSatInt(int, int); +#pragma intrinsic(_AddSatInt) +int _DAddSatInt(int, int); +#pragma intrinsic(_DAddSatInt) +int _DSubSatInt(int, int); +#pragma intrinsic(_DSubSatInt) +int _SubSatInt(int, int); +#pragma intrinsic(_SubSatInt) +void __emit(unsigned __int32); +#pragma intrinsic(__emit) +void __static_assert(int, const char *); +#pragma intrinsic(__static_assert) +#endif #ifdef __cplusplus } From 2d1042daa5045cf44d61802e4fce7de5cd34555f Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Tue, 27 May 2014 22:07:29 +0000 Subject: [PATCH 091/232] [CRT] remove __readfsqword, it does not exist. svn path=/trunk/; revision=63487 --- reactos/include/crt/msc/intrin.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/reactos/include/crt/msc/intrin.h b/reactos/include/crt/msc/intrin.h index 387197d0187..66c642faa64 100644 --- a/reactos/include/crt/msc/intrin.h +++ b/reactos/include/crt/msc/intrin.h @@ -358,8 +358,6 @@ unsigned short __readfsword(unsigned long Offset); #pragma intrinsic(__readfsword) unsigned long __readfsdword(unsigned long Offset); #pragma intrinsic(__readfsdword) -unsigned __int64 __readfsqword(unsigned long); -#pragma intrinsic(__readfsqword) void __incfsbyte(unsigned long Offset); #pragma intrinsic(__incfsbyte) void __incfsword(unsigned long Offset); From 6f249c3833fe69e4fd2d4a05e8f165cdae494a86 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Tue, 27 May 2014 22:12:15 +0000 Subject: [PATCH 092/232] [CRT] Hopefully fix build, by specifying minimum MSC versions for some intrinsics svn path=/trunk/; revision=63488 --- reactos/include/crt/msc/intrin.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/reactos/include/crt/msc/intrin.h b/reactos/include/crt/msc/intrin.h index 66c642faa64..f991c356df1 100644 --- a/reactos/include/crt/msc/intrin.h +++ b/reactos/include/crt/msc/intrin.h @@ -584,9 +584,11 @@ void __halt(void); #pragma intrinsic(__halt) void __ud2(void); #pragma intrinsic(__ud2) +#if (_MSC_VER >= 1700) __declspec(noreturn) void __fastfail(unsigned int Code); #pragma intrinsic(__fastfail) #endif +#endif #if defined(_M_ARM) int __trap(int Arg1, ...); #endif @@ -749,8 +751,10 @@ unsigned char __vmx_vmwrite(size_t Field, size_t FieldValue); /** Misc **/ void __nop(void); #pragma intrinsic(__nop) +#if (_MSC_VER >= 1700) void __code_seg(const char *); #pragma intrinsic(__code_seg) +#endif #ifdef _M_ARM int _AddSatInt(int, int); #pragma intrinsic(_AddSatInt) From 68fcd6e10b17856c6ab5bdf4727496569416e2f9 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Tue, 27 May 2014 22:58:53 +0000 Subject: [PATCH 093/232] [CRT] Do not mark inp* and outp* as dllimport. svn path=/trunk/; revision=63489 --- reactos/include/crt/conio.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/reactos/include/crt/conio.h b/reactos/include/crt/conio.h index 74dcf45ae00..e260cf1969a 100644 --- a/reactos/include/crt/conio.h +++ b/reactos/include/crt/conio.h @@ -416,10 +416,10 @@ extern "C" { int _Ch); #if (defined(_X86_) && !defined(__x86_64)) - _CRT_NONSTDC_DEPRECATE(_inp) _CRTIMP int __cdecl inp(unsigned short); - _CRT_NONSTDC_DEPRECATE(_inpw) _CRTIMP unsigned short __cdecl inpw(unsigned short); - _CRT_NONSTDC_DEPRECATE(_outp) _CRTIMP int __cdecl outp(unsigned short,int); - _CRT_NONSTDC_DEPRECATE(_outpw) _CRTIMP unsigned short __cdecl outpw(unsigned short,unsigned short); + _CRT_NONSTDC_DEPRECATE(_inp) int __cdecl inp(unsigned short); + _CRT_NONSTDC_DEPRECATE(_inpw) unsigned short __cdecl inpw(unsigned short); + _CRT_NONSTDC_DEPRECATE(_outp) int __cdecl outp(unsigned short,int); + _CRT_NONSTDC_DEPRECATE(_outpw) unsigned short __cdecl outpw(unsigned short,unsigned short); #endif #endif /* !NO_OLDNAMES */ From 0184d61735f700679f64fdf18f41d1cdcd49b54d Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Wed, 28 May 2014 08:06:10 +0000 Subject: [PATCH 094/232] [NET] Implement NET ACCOUNTS command. svn path=/trunk/; revision=63490 --- .../applications/network/net/CMakeLists.txt | 3 +- .../applications/network/net/cmdAccounts.c | 192 ++++++++++++++++++ reactos/base/applications/network/net/main.c | 2 +- reactos/base/applications/network/net/net.h | 7 + 4 files changed, 202 insertions(+), 2 deletions(-) create mode 100644 reactos/base/applications/network/net/cmdAccounts.c diff --git a/reactos/base/applications/network/net/CMakeLists.txt b/reactos/base/applications/network/net/CMakeLists.txt index 6af429e80b6..377065ebadf 100644 --- a/reactos/base/applications/network/net/CMakeLists.txt +++ b/reactos/base/applications/network/net/CMakeLists.txt @@ -3,6 +3,7 @@ add_definitions(-D__USE_W32_SOCKETS) list(APPEND SOURCE main.c + cmdAccounts.c cmdStart.c cmdStop.c cmdHelpMsg.c @@ -13,6 +14,6 @@ list(APPEND SOURCE add_executable(net ${SOURCE}) set_module_type(net win32cui UNICODE) -add_importlibs(net advapi32 msvcrt kernel32) +add_importlibs(net advapi32 netapi32 msvcrt kernel32 ntdll) add_pch(net net.h SOURCE) add_cd_file(TARGET net DESTINATION reactos/system32 FOR all) diff --git a/reactos/base/applications/network/net/cmdAccounts.c b/reactos/base/applications/network/net/cmdAccounts.c new file mode 100644 index 00000000000..eb91c85550e --- /dev/null +++ b/reactos/base/applications/network/net/cmdAccounts.c @@ -0,0 +1,192 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS net command + * FILE: + * PURPOSE: + * + * PROGRAMMERS: Eric Kohl + */ + +#include "net.h" + +INT +cmdAccounts( + INT argc, + WCHAR **argv) +{ + PUSER_MODALS_INFO_0 Info0 = NULL; + PUSER_MODALS_INFO_1 Info1 = NULL; + PUSER_MODALS_INFO_3 Info3 = NULL; + NT_PRODUCT_TYPE ProductType; + LPWSTR p, perr; + DWORD ParamErr; + ULONG value; + INT i; + BOOL Modified = FALSE; +// BOOL Domain = FALSE; + NET_API_STATUS Status; + + for (i = 3; i < argc; i++) + { + if (wcsicmp(argv[i], L"help") == 0) + { + /* Print short syntax help */ + puts("NET ACCOUNTS [/FORCELOGOFF:{Minutes|NO}] [/MINPWLEN:Length]"); + puts(" [/MAXPWAGE:{Days|UNLIMITED}] [/MINPWAGE:Days]"); + puts(" [/UNIQUEPW:Count] [/DOMAIN]"); + return 0; + } + + if (wcsicmp(argv[i], L"/help") == 0) + { + /* FIXME: Print long help text*/ + return 0; + } + +/* + if (wcsicmp(argv[i], L"/domain") == 0) + { + Domain = TRUE; + } +*/ + } + + Status = NetUserModalsGet(NULL, 0, (LPBYTE*)&Info0); + if (Status != NERR_Success) + goto done; + + for (i = 3; i < argc; i++) + { + if (_wcsnicmp(argv[i], L"/forcelogoff:", 13) == 0) + { + p = &argv[i][13]; + if (wcsicmp(p, L"no")) + { + Info0->usrmod0_force_logoff = TIMEQ_FOREVER; + Modified = TRUE; + } + else + { + value = wcstoul(p, &perr, 10); + + Info0->usrmod0_force_logoff = value * 60; + Modified = TRUE; + } + } + else if (_wcsnicmp(argv[i], L"/minpwlen:", 10) == 0) + { + p = &argv[i][10]; + value = wcstoul(p, &perr, 10); + Info0->usrmod0_min_passwd_len = value; + Modified = TRUE; + } + else if (_wcsnicmp(argv[i], L"/maxpwage:", 10) == 0) + { + p = &argv[i][10]; + + if (wcsicmp(p, L"unlimited")) + { + Info0->usrmod0_max_passwd_age = ULONG_MAX; + Modified = TRUE; + } + else + { + value = wcstoul(p, &perr, 10); + + Info0->usrmod0_max_passwd_age = value * 86400; + Modified = TRUE; + } + } + else if (_wcsnicmp(argv[i], L"/minpwage:", 10) == 0) + { + p = &argv[i][10]; + value = wcstoul(p, &perr, 10); + + Info0->usrmod0_min_passwd_age = value * 86400; + Modified = TRUE; + } + else if (_wcsnicmp(argv[i], L"/uniquepw:", 10) == 0) + { + p = &argv[i][10]; + value = wcstoul(p, &perr, 10); + + Info0->usrmod0_password_hist_len = value; + Modified = TRUE; + } + } + + if (Modified == TRUE) + { + Status = NetUserModalsSet(NULL, 0, (LPBYTE)Info0, &ParamErr); + if (Status != NERR_Success) + goto done; + } + else + { + Status = NetUserModalsGet(NULL, 1, (LPBYTE*)&Info1); + if (Status != NERR_Success) + goto done; + + Status = NetUserModalsGet(NULL, 3, (LPBYTE*)&Info3); + if (Status != NERR_Success) + goto done; + + RtlGetNtProductType(&ProductType); + + printf("Force logoff after: "); + if (Info0->usrmod0_force_logoff == TIMEQ_FOREVER) + printf("Never\n"); + else + printf("%lu seconds\n", Info0->usrmod0_force_logoff); + + printf("Minimum password age (in days): %lu\n", Info0->usrmod0_min_passwd_age / 86400); + printf("Maximum password age (in days): %lu\n", Info0->usrmod0_max_passwd_age / 86400); + printf("Minimum password length: %lu\n", Info0->usrmod0_min_passwd_len); + + printf("Password history length: "); + if (Info0->usrmod0_password_hist_len == 0) + printf("None\n"); + else + printf("%lu\n", Info0->usrmod0_password_hist_len); + + printf("Lockout threshold: %lu\n", Info3->usrmod3_lockout_threshold); + printf("Lockout duration (in minutes): %lu\n", Info3->usrmod3_lockout_duration / 60); + printf("Lockout observation window (in minutes): %lu\n", Info3->usrmod3_lockout_observation_window / 60); + + printf("Computer role: "); + + if (Info1->usrmod1_role == UAS_ROLE_PRIMARY) + { + if (ProductType == NtProductLanManNt) + { + printf("Primary server\n"); + } + else if (ProductType == NtProductServer) + { + printf("Standalone server\n"); + } + else + { + printf("Workstation\n"); + } + } + else + { + printf("Backup server\n"); + } + } + +done: + if (Info3 != NULL) + NetApiBufferFree(Info3); + + if (Info1 != NULL) + NetApiBufferFree(Info1); + + if (Info0 != NULL) + NetApiBufferFree(Info0); + + return 0; +} + +/* EOF */ diff --git a/reactos/base/applications/network/net/main.c b/reactos/base/applications/network/net/main.c index 8f226967d2c..ad702517e39 100644 --- a/reactos/base/applications/network/net/main.c +++ b/reactos/base/applications/network/net/main.c @@ -18,7 +18,7 @@ typedef struct _COMMAND COMMAND cmds[] = { - {L"accounts", unimplemented}, + {L"accounts", cmdAccounts}, {L"computer", unimplemented}, {L"config", unimplemented}, {L"continue", cmdContinue}, diff --git a/reactos/base/applications/network/net/net.h b/reactos/base/applications/network/net/net.h index 4df059b8428..91af9d06a96 100644 --- a/reactos/base/applications/network/net/net.h +++ b/reactos/base/applications/network/net/net.h @@ -7,16 +7,23 @@ #ifndef _NET_PCH_ #define _NET_PCH_ +#define WIN32_NO_STATUS + #include #include #include #include #include +#include +#include +#include +#include VOID help(VOID); INT unimplemented(INT argc, WCHAR **argv); +INT cmdAccounts(INT argc, WCHAR **argv); INT cmdContinue(INT argc, WCHAR **argv); INT cmdHelp(INT argc, WCHAR **argv); INT cmdHelpMsg(INT argc, WCHAR **argv); From 6e7d12ef45a5d7e67199128704ebde4bfac14386 Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Wed, 28 May 2014 18:39:51 +0000 Subject: [PATCH 095/232] [KERNEL32] - Directly call CopyFileExW() from CopyFileA() - ReactOSify CopyFileW() svn path=/trunk/; revision=63491 --- reactos/dll/win32/kernel32/client/file/copy.c | 57 ++++++++++++------- 1 file changed, 35 insertions(+), 22 deletions(-) diff --git a/reactos/dll/win32/kernel32/client/file/copy.c b/reactos/dll/win32/kernel32/client/file/copy.c index 9601e108267..99b96c19c64 100644 --- a/reactos/dll/win32/kernel32/client/file/copy.c +++ b/reactos/dll/win32/kernel32/client/file/copy.c @@ -351,18 +351,33 @@ CopyFileExA(IN LPCSTR lpExistingFileName, */ BOOL WINAPI -CopyFileA ( - LPCSTR lpExistingFileName, - LPCSTR lpNewFileName, - BOOL bFailIfExists -) +CopyFileA(IN LPCSTR lpExistingFileName, + IN LPCSTR lpNewFileName, + IN BOOL bFailIfExists) { - return CopyFileExA (lpExistingFileName, - lpNewFileName, - NULL, - NULL, - NULL, - bFailIfExists); + BOOL Result = FALSE; + UNICODE_STRING lpNewFileNameW; + PUNICODE_STRING lpExistingFileNameW; + + lpExistingFileNameW = Basep8BitStringToStaticUnicodeString(lpExistingFileName); + if (!lpExistingFileNameW) + { + return FALSE; + } + + if (Basep8BitStringToDynamicUnicodeString(&lpNewFileNameW, lpNewFileName)) + { + Result = CopyFileExW(lpExistingFileNameW->Buffer, + lpNewFileNameW.Buffer, + NULL, + NULL, + NULL, + (bFailIfExists ? COPY_FILE_FAIL_IF_EXISTS : 0)); + + RtlFreeUnicodeString(&lpNewFileNameW); + } + + return Result; } @@ -371,18 +386,16 @@ CopyFileA ( */ BOOL WINAPI -CopyFileW ( - LPCWSTR lpExistingFileName, - LPCWSTR lpNewFileName, - BOOL bFailIfExists -) +CopyFileW(IN LPCWSTR lpExistingFileName, + IN LPCWSTR lpNewFileName, + IN BOOL bFailIfExists) { - return CopyFileExW (lpExistingFileName, - lpNewFileName, - NULL, - NULL, - NULL, - bFailIfExists); + return CopyFileExW(lpExistingFileName, + lpNewFileName, + NULL, + NULL, + NULL, + (bFailIfExists ? COPY_FILE_FAIL_IF_EXISTS : 0)); } From 86da1bfa04cbe9f5043be543a856b5e56bb2fe2b Mon Sep 17 00:00:00 2001 From: James Tabor Date: Wed, 28 May 2014 22:48:50 +0000 Subject: [PATCH 096/232] [User32] - Add MDI system menu. If this is inaccurate please open a Jira report. svn path=/trunk/; revision=63492 --- reactos/win32ss/user/user32/lang/bg-BG.rc | 15 ++++++++++++++- reactos/win32ss/user/user32/lang/cs-CZ.rc | 15 ++++++++++++++- reactos/win32ss/user/user32/lang/da-DK.rc | 15 ++++++++++++++- reactos/win32ss/user/user32/lang/de-DE.rc | 13 +++++++++++++ reactos/win32ss/user/user32/lang/el-GR.rc | 15 ++++++++++++++- reactos/win32ss/user/user32/lang/en-US.rc | 13 +++++++++++++ reactos/win32ss/user/user32/lang/es-ES.rc | 15 ++++++++++++++- reactos/win32ss/user/user32/lang/fr-FR.rc | 15 ++++++++++++++- reactos/win32ss/user/user32/lang/he-IL.rc | 15 ++++++++++++++- reactos/win32ss/user/user32/lang/hu-HU.rc | 15 ++++++++++++++- reactos/win32ss/user/user32/lang/id-ID.rc | 15 ++++++++++++++- reactos/win32ss/user/user32/lang/it-IT.rc | 15 ++++++++++++++- reactos/win32ss/user/user32/lang/ja-JP.rc | 15 ++++++++++++++- reactos/win32ss/user/user32/lang/lt-LT.rc | 15 ++++++++++++++- reactos/win32ss/user/user32/lang/nl-NL.rc | 15 ++++++++++++++- reactos/win32ss/user/user32/lang/no-NO.rc | 15 ++++++++++++++- reactos/win32ss/user/user32/lang/pl-PL.rc | 15 ++++++++++++++- reactos/win32ss/user/user32/lang/pt-BR.rc | 15 ++++++++++++++- reactos/win32ss/user/user32/lang/ro-RO.rc | 15 ++++++++++++++- reactos/win32ss/user/user32/lang/ru-RU.rc | 15 ++++++++++++++- reactos/win32ss/user/user32/lang/sk-SK.rc | 15 ++++++++++++++- reactos/win32ss/user/user32/lang/sv-SE.rc | 15 ++++++++++++++- reactos/win32ss/user/user32/lang/tr-TR.rc | 15 ++++++++++++++- reactos/win32ss/user/user32/lang/uk-UA.rc | 15 ++++++++++++++- reactos/win32ss/user/user32/lang/zh-CN.rc | 13 +++++++++++++ 25 files changed, 347 insertions(+), 22 deletions(-) diff --git a/reactos/win32ss/user/user32/lang/bg-BG.rc b/reactos/win32ss/user/user32/lang/bg-BG.rc index dc2d0686511..8c63abc8f3d 100644 --- a/reactos/win32ss/user/user32/lang/bg-BG.rc +++ b/reactos/win32ss/user/user32/lang/bg-BG.rc @@ -37,7 +37,20 @@ BEGIN MENUITEM "С&малÑване", SC_MINIMIZE MENUITEM "У&големÑване", SC_MAXIMIZE MENUITEM SEPARATOR - MENUITEM "&ЗатварÑне\tAlt-F4", SC_CLOSE + MENUITEM "&ЗатварÑне\tAlt+F4", SC_CLOSE +END + +SYSMENUMDI MENU +BEGIN + MENUITEM "&ВъзÑтановÑване", SC_RESTORE + MENUITEM "&ПремеÑтване", SC_MOVE + MENUITEM "&Размер", SC_SIZE + MENUITEM "С&малÑване", SC_MINIMIZE + MENUITEM "У&големÑване", SC_MAXIMIZE + MENUITEM SEPARATOR + MENUITEM "&ЗатварÑне\tCtrl+F4", SC_CLOSE + MENUITEM SEPARATOR + MENUITEM "Ðа&пред\tCtrl+F6", SC_NEXTWINDOW END /* Strings */ diff --git a/reactos/win32ss/user/user32/lang/cs-CZ.rc b/reactos/win32ss/user/user32/lang/cs-CZ.rc index 99676bc4c8c..874b557f90a 100644 --- a/reactos/win32ss/user/user32/lang/cs-CZ.rc +++ b/reactos/win32ss/user/user32/lang/cs-CZ.rc @@ -42,7 +42,20 @@ BEGIN MENUITEM "Mi&nimalizovat", SC_MINIMIZE MENUITEM "Ma&ximalizovat", SC_MAXIMIZE MENUITEM SEPARATOR - MENUITEM "&Zavřít\tAlt-F4", SC_CLOSE + MENUITEM "&Zavřít\tAlt+F4", SC_CLOSE +END + +SYSMENUMDI MENU +BEGIN + MENUITEM "&Obnovit", SC_RESTORE + MENUITEM "&PÅ™esunout", SC_MOVE + MENUITEM "&Velikost", SC_SIZE + MENUITEM "Mi&nimalizovat", SC_MINIMIZE + MENUITEM "Ma&ximalizovat", SC_MAXIMIZE + MENUITEM SEPARATOR + MENUITEM "&Zavřít\tCtrl+F4", SC_CLOSE + MENUITEM SEPARATOR + MENUITEM "Následující\tCtrl+F6", SC_NEXTWINDOW END /* Strings */ diff --git a/reactos/win32ss/user/user32/lang/da-DK.rc b/reactos/win32ss/user/user32/lang/da-DK.rc index 72e4dbced50..9a09cc4e804 100644 --- a/reactos/win32ss/user/user32/lang/da-DK.rc +++ b/reactos/win32ss/user/user32/lang/da-DK.rc @@ -37,7 +37,20 @@ BEGIN MENUITEM "M&inimere", SC_MINIMIZE MENUITEM "Ma&ksimere", SC_MAXIMIZE MENUITEM SEPARATOR - MENUITEM "&Luk\tAlt-F4", SC_CLOSE + MENUITEM "&Luk\tAlt+F4", SC_CLOSE +END + +SYSMENUMDI MENU +BEGIN + MENUITEM "&Gendan", SC_RESTORE + MENUITEM "&Flyt", SC_MOVE + MENUITEM "&Størrelse", SC_SIZE + MENUITEM "M&inimere", SC_MINIMIZE + MENUITEM "Ma&ksimere", SC_MAXIMIZE + MENUITEM SEPARATOR + MENUITEM "&Luk\tCtrl+F4", SC_CLOSE + MENUITEM SEPARATOR + MENUITEM "Næs&te\tCtrl+F6", SC_NEXTWINDOW END /* Strings */ diff --git a/reactos/win32ss/user/user32/lang/de-DE.rc b/reactos/win32ss/user/user32/lang/de-DE.rc index a451e73bde5..6857d7a0d52 100644 --- a/reactos/win32ss/user/user32/lang/de-DE.rc +++ b/reactos/win32ss/user/user32/lang/de-DE.rc @@ -42,6 +42,19 @@ BEGIN MENUITEM "S&chließen\tAlt+F4", SC_CLOSE END +SYSMENUMDI MENU +BEGIN + MENUITEM "&Wiederherstellen", SC_RESTORE + MENUITEM "&Verschieben", SC_MOVE + MENUITEM "&Größe", SC_SIZE + MENUITEM "Mi&nimieren", SC_MINIMIZE + MENUITEM "Ma&ximieren", SC_MAXIMIZE + MENUITEM SEPARATOR + MENUITEM "S&chließen\tStrg+F4", SC_CLOSE + MENUITEM SEPARATOR + MENUITEM "Nächs&ter\tStrg+F6", SC_NEXTWINDOW +END + /* Strings */ STRINGTABLE diff --git a/reactos/win32ss/user/user32/lang/el-GR.rc b/reactos/win32ss/user/user32/lang/el-GR.rc index cdc241a4db2..3443d8ba87d 100644 --- a/reactos/win32ss/user/user32/lang/el-GR.rc +++ b/reactos/win32ss/user/user32/lang/el-GR.rc @@ -37,7 +37,20 @@ BEGIN MENUITEM "Ε&λαχιστοποίηση", SC_MINIMIZE MENUITEM "Με&γιστοποίηση", SC_MAXIMIZE MENUITEM SEPARATOR - MENUITEM "&Κλείσημο\tAlt-F4", SC_CLOSE + MENUITEM "&Κλείσημο\tAlt+F4", SC_CLOSE +END + +SYSMENUMDI MENU +BEGIN + MENUITEM "&ΕπαναφοÏά", SC_RESTORE + MENUITEM "&Μετακίνηση", SC_MOVE + MENUITEM "Μέ&γεθος", SC_SIZE + MENUITEM "Ε&λαχιστοποίηση", SC_MINIMIZE + MENUITEM "Με&γιστοποίηση", SC_MAXIMIZE + MENUITEM SEPARATOR + MENUITEM "&Κλείσημο\tCtrl+F4", SC_CLOSE + MENUITEM SEPARATOR + MENUITEM "&Επόμενο\tCtrl+F6", SC_NEXTWINDOW END /* Strings */ diff --git a/reactos/win32ss/user/user32/lang/en-US.rc b/reactos/win32ss/user/user32/lang/en-US.rc index fbf23071e05..79e64259f0c 100644 --- a/reactos/win32ss/user/user32/lang/en-US.rc +++ b/reactos/win32ss/user/user32/lang/en-US.rc @@ -40,6 +40,19 @@ BEGIN MENUITEM "&Close\tAlt+F4", SC_CLOSE END +SYSMENUMDI MENU +{ + MENUITEM "&Restore", SC_RESTORE + MENUITEM "&Move", SC_MOVE + MENUITEM "&Size", SC_SIZE + MENUITEM "Mi&nimize", SC_MINIMIZE + MENUITEM "Ma&ximize", SC_MAXIMIZE + MENUITEM SEPARATOR + MENUITEM "&Close\tCtrl+F4", SC_CLOSE + MENUITEM SEPARATOR + MENUITEM "Nex&t\tCtrl+F6", SC_NEXTWINDOW +} + /* Strings */ STRINGTABLE diff --git a/reactos/win32ss/user/user32/lang/es-ES.rc b/reactos/win32ss/user/user32/lang/es-ES.rc index 0f22e7a1ef0..bba5362264b 100644 --- a/reactos/win32ss/user/user32/lang/es-ES.rc +++ b/reactos/win32ss/user/user32/lang/es-ES.rc @@ -37,7 +37,20 @@ BEGIN MENUITEM "Mi&nimizar", SC_MINIMIZE MENUITEM "Ma&ximizar", SC_MAXIMIZE MENUITEM SEPARATOR - MENUITEM "&Cerrar\tAlt-F4", SC_CLOSE + MENUITEM "&Cerrar\tAlt+F4", SC_CLOSE +END + +SYSMENUMDI MENU +BEGIN + MENUITEM "&Restaurar", SC_RESTORE + MENUITEM "&Mover", SC_MOVE + MENUITEM "Tamaño", SC_SIZE + MENUITEM "Mi&nimizar", SC_MINIMIZE + MENUITEM "Ma&ximizar", SC_MAXIMIZE + MENUITEM SEPARATOR + MENUITEM "&Cerrar\tCtrl+F4", SC_CLOSE + MENUITEM SEPARATOR + MENUITEM "Siguien&te\t\tCtrl+F6", SC_NEXTWINDOW END /* Strings */ diff --git a/reactos/win32ss/user/user32/lang/fr-FR.rc b/reactos/win32ss/user/user32/lang/fr-FR.rc index 34b0d3fa549..6be621c4372 100644 --- a/reactos/win32ss/user/user32/lang/fr-FR.rc +++ b/reactos/win32ss/user/user32/lang/fr-FR.rc @@ -39,7 +39,20 @@ BEGIN MENUITEM "Réd&uire", SC_MINIMIZE MENUITEM "Agra&ndir", SC_MAXIMIZE MENUITEM SEPARATOR - MENUITEM "&Fermer\tAlt-F4", SC_CLOSE + MENUITEM "&Fermer\tAlt+F4", SC_CLOSE +END + +SYSMENUMDI MENU +BEGIN + MENUITEM "&Restaurer", SC_RESTORE + MENUITEM "Dép&lacer", SC_MOVE + MENUITEM "&Taille", SC_SIZE + MENUITEM "Réd&uire", SC_MINIMIZE + MENUITEM "Agra&ndir", SC_MAXIMIZE + MENUITEM SEPARATOR + MENUITEM "&Fermer\tCtrl+F4", SC_CLOSE + MENUITEM SEPARATOR + MENUITEM "Sui&vant\tCtrl+F6", SC_NEXTWINDOW END /* Strings */ diff --git a/reactos/win32ss/user/user32/lang/he-IL.rc b/reactos/win32ss/user/user32/lang/he-IL.rc index 4cb31f059b8..dba178e8576 100644 --- a/reactos/win32ss/user/user32/lang/he-IL.rc +++ b/reactos/win32ss/user/user32/lang/he-IL.rc @@ -37,7 +37,20 @@ BEGIN MENUITEM "&מזער", SC_MINIMIZE MENUITEM "&הגדל", SC_MAXIMIZE MENUITEM SEPARATOR - MENUITEM "&סגור\tAlt-F4", SC_CLOSE + MENUITEM "&סגור\tAlt+F4", SC_CLOSE +END + +SYSMENUMDI MENU +BEGIN + MENUITEM "&שחזר", SC_RESTORE + MENUITEM "&×”×–×–", SC_MOVE + MENUITEM "&שנה גודל", SC_SIZE + MENUITEM "&מזער", SC_MINIMIZE + MENUITEM "&הגדל", SC_MAXIMIZE + MENUITEM SEPARATOR + MENUITEM "&סגור\tCtrl+F4", SC_CLOSE + MENUITEM SEPARATOR + MENUITEM "×”&ב×\tCtrl+F6", SC_NEXTWINDOW END /* Strings */ diff --git a/reactos/win32ss/user/user32/lang/hu-HU.rc b/reactos/win32ss/user/user32/lang/hu-HU.rc index 3fa5279917e..e2818592999 100644 --- a/reactos/win32ss/user/user32/lang/hu-HU.rc +++ b/reactos/win32ss/user/user32/lang/hu-HU.rc @@ -39,7 +39,20 @@ BEGIN MENUITEM "&Kis méret", SC_MINIMIZE MENUITEM "&Nagy méret", SC_MAXIMIZE MENUITEM SEPARATOR - MENUITEM "&Bezár\tAlt-F4", SC_CLOSE + MENUITEM "&Bezár\tAlt+F4", SC_CLOSE +END + +SYSMENUMDI MENU +BEGIN + MENUITEM "&Vissza állít", SC_RESTORE + MENUITEM "Ãt &helyez", SC_MOVE + MENUITEM "&Méret", SC_SIZE + MENUITEM "&Kis méret", SC_MINIMIZE + MENUITEM "&Nagy méret", SC_MAXIMIZE + MENUITEM SEPARATOR + MENUITEM "&Bezár\tCtrl+F4", SC_CLOSE + MENUITEM SEPARATOR + MENUITEM "&ElÅ‘re\tCtrl+F6", SC_NEXTWINDOW END /* Strings */ diff --git a/reactos/win32ss/user/user32/lang/id-ID.rc b/reactos/win32ss/user/user32/lang/id-ID.rc index d8c92159e23..5ef794e2b4a 100644 --- a/reactos/win32ss/user/user32/lang/id-ID.rc +++ b/reactos/win32ss/user/user32/lang/id-ID.rc @@ -37,7 +37,20 @@ BEGIN MENUITEM "Ke&cilkan", SC_MINIMIZE MENUITEM "Maksi&malkan", SC_MAXIMIZE MENUITEM SEPARATOR - MENUITEM "&Tutup\tAlt-F4", SC_CLOSE + MENUITEM "&Tutup\tAlt+F4", SC_CLOSE +END + +SYSMENUMDI MENU +BEGIN + MENUITEM "&Kembalikan", SC_RESTORE + MENUITEM "&Pindahkan", SC_MOVE + MENUITEM "&Ukuran", SC_SIZE + MENUITEM "Ke&cilkan", SC_MINIMIZE + MENUITEM "Maksi&malkan", SC_MAXIMIZE + MENUITEM SEPARATOR + MENUITEM "&Tutup\tCrtl+F4", SC_CLOSE + MENUITEM SEPARATOR + MENUITEM "&Berikutnya\tCtrl+F6", SC_NEXTWINDOW END /* Strings */ diff --git a/reactos/win32ss/user/user32/lang/it-IT.rc b/reactos/win32ss/user/user32/lang/it-IT.rc index 184b4efbc08..8710f168243 100644 --- a/reactos/win32ss/user/user32/lang/it-IT.rc +++ b/reactos/win32ss/user/user32/lang/it-IT.rc @@ -37,7 +37,20 @@ BEGIN MENUITEM "Mi&nimizza", SC_MINIMIZE MENUITEM "Ma&ssimizza", SC_MAXIMIZE MENUITEM SEPARATOR - MENUITEM "&Chiudi\tAlt-F4", SC_CLOSE + MENUITEM "&Chiudi\tAlt+F4", SC_CLOSE +END + +SYSMENUMDI MENU +BEGIN + MENUITEM "&Ripristina", SC_RESTORE + MENUITEM "&Muove", SC_MOVE + MENUITEM "&Dimensione", SC_SIZE + MENUITEM "Mi&nimizza", SC_MINIMIZE + MENUITEM "Ma&ssimizza", SC_MAXIMIZE + MENUITEM SEPARATOR + MENUITEM "&Chiudi\tCtrl+F4", SC_CLOSE + MENUITEM SEPARATOR + MENUITEM "&Prossimo\tCtrl+F6", SC_NEXTWINDOW END /* Strings */ diff --git a/reactos/win32ss/user/user32/lang/ja-JP.rc b/reactos/win32ss/user/user32/lang/ja-JP.rc index 8f7848fd805..def7aaac8d6 100644 --- a/reactos/win32ss/user/user32/lang/ja-JP.rc +++ b/reactos/win32ss/user/user32/lang/ja-JP.rc @@ -37,7 +37,20 @@ BEGIN MENUITEM "最å°åŒ–(&N)", SC_MINIMIZE MENUITEM "最大化(&X)", SC_MAXIMIZE MENUITEM SEPARATOR - MENUITEM "é–‰ã˜ã‚‹(&C)\tAlt-F4", SC_CLOSE + MENUITEM "é–‰ã˜ã‚‹(&C)\tAlt+F4", SC_CLOSE +END + +SYSMENUMDI MENU +BEGIN + MENUITEM "å…ƒã®ã‚µã‚¤ã‚ºã«æˆ»ã™(&R)", SC_RESTORE + MENUITEM "移動(&M)", SC_MOVE + MENUITEM "サイズ変更(&S)", SC_SIZE + MENUITEM "最å°åŒ–(&N)", SC_MINIMIZE + MENUITEM "最大化(&X)", SC_MAXIMIZE + MENUITEM SEPARATOR + MENUITEM "é–‰ã˜ã‚‹(&C)\tCtrl+F4", SC_CLOSE + MENUITEM SEPARATOR + MENUITEM "次ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦(&T)\tCtrl+F6", SC_NEXTWINDOW END /* Strings */ diff --git a/reactos/win32ss/user/user32/lang/lt-LT.rc b/reactos/win32ss/user/user32/lang/lt-LT.rc index 556a16928cf..5cec6b176cd 100644 --- a/reactos/win32ss/user/user32/lang/lt-LT.rc +++ b/reactos/win32ss/user/user32/lang/lt-LT.rc @@ -39,7 +39,20 @@ BEGIN MENUITEM "Su&skleisti", SC_MINIMIZE MENUITEM "Pa&didint", SC_MAXIMIZE MENUITEM SEPARATOR - MENUITEM "&Uþverti\tAlt-F4", SC_CLOSE + MENUITEM "&Uþverti\tAlt+F4", SC_CLOSE +END + +SYSMENUMDI MENU +BEGIN + MENUITEM "A&tkurti", SC_RESTORE + MENUITEM "Pe&rkelti", SC_MOVE + MENUITEM "D&ydis", SC_SIZE + MENUITEM "Su&skleisti", SC_MINIMIZE + MENUITEM "Pa&didint", SC_MAXIMIZE + MENUITEM SEPARATOR + MENUITEM "&Uþverti\tVald-F4", SC_CLOSE + MENUITEM SEPARATOR + MENUITEM "Ki&tas\tVald+F6", SC_NEXTWINDOW END /* Strings */ diff --git a/reactos/win32ss/user/user32/lang/nl-NL.rc b/reactos/win32ss/user/user32/lang/nl-NL.rc index 6c2db93e320..27fbae95e92 100644 --- a/reactos/win32ss/user/user32/lang/nl-NL.rc +++ b/reactos/win32ss/user/user32/lang/nl-NL.rc @@ -37,7 +37,20 @@ BEGIN MENUITEM "Mi&nimaliseren", SC_MINIMIZE MENUITEM "Ma&ximaliseren", SC_MAXIMIZE MENUITEM SEPARATOR - MENUITEM "&Afsluiten\tAlt-F4", SC_CLOSE + MENUITEM "&Afsluiten\tAlt+F4", SC_CLOSE +END + +SYSMENUMDI MENU +BEGIN + MENUITEM "&Herstellen", SC_RESTORE + MENUITEM "&Verplaatsen", SC_MOVE + MENUITEM "&Grootte", SC_SIZE + MENUITEM "Mi&nimaliseren", SC_MINIMIZE + MENUITEM "Ma&ximaliseren", SC_MAXIMIZE + MENUITEM SEPARATOR + MENUITEM "&Afsluiten\tCtrl+F4", SC_CLOSE + MENUITEM SEPARATOR + MENUITEM "Volgende\tCtrl+F6", SC_NEXTWINDOW END /* Strings */ diff --git a/reactos/win32ss/user/user32/lang/no-NO.rc b/reactos/win32ss/user/user32/lang/no-NO.rc index 480c3cf588d..2b7215102e5 100644 --- a/reactos/win32ss/user/user32/lang/no-NO.rc +++ b/reactos/win32ss/user/user32/lang/no-NO.rc @@ -37,7 +37,20 @@ BEGIN MENUITEM "Mi&nimer", SC_MINIMIZE MENUITEM "&Maksimer", SC_MAXIMIZE MENUITEM SEPARATOR - MENUITEM "&Lukk\tAlt-F4", SC_CLOSE + MENUITEM "&Lukk\tAlt+F4", SC_CLOSE +END + +SYSMENUMDI MENU +BEGIN + MENUITEM "&Gjenopprett", SC_RESTORE + MENUITEM "&Flytt", SC_MOVE + MENUITEM "&Størrelse", SC_SIZE + MENUITEM "Mi&nimer", SC_MINIMIZE + MENUITEM "&Maksimer", SC_MAXIMIZE + MENUITEM SEPARATOR + MENUITEM "&Lukk\tCtrl+F4", SC_CLOSE + MENUITEM SEPARATOR + MENUITEM "Nes&e\tCtrl + F6", SC_NEXTWINDOW END /* Strings */ diff --git a/reactos/win32ss/user/user32/lang/pl-PL.rc b/reactos/win32ss/user/user32/lang/pl-PL.rc index 8dd2e9f20a3..2d35da0354c 100644 --- a/reactos/win32ss/user/user32/lang/pl-PL.rc +++ b/reactos/win32ss/user/user32/lang/pl-PL.rc @@ -42,7 +42,20 @@ BEGIN MENUITEM "&Minimalizuj", SC_MINIMIZE MENUITEM "Mak&symalizuj", SC_MAXIMIZE MENUITEM SEPARATOR - MENUITEM "Zam&knij\tAlt-F4", SC_CLOSE + MENUITEM "Zam&knij\tAlt+F4", SC_CLOSE +END + +SYSMENUMDI MENU +BEGIN + MENUITEM "&Przywróć", SC_RESTORE + MENUITEM "Prz&enieÅ›", SC_MOVE + MENUITEM "&Rozmiar", SC_SIZE + MENUITEM "&Minimalizuj", SC_MINIMIZE + MENUITEM "Mak&symalizuj", SC_MAXIMIZE + MENUITEM SEPARATOR + MENUITEM "Zam&knij\tCtrl+F4", SC_CLOSE + MENUITEM SEPARATOR + MENUITEM "Nas&tÄ™pny\tCtrl+F6", SC_NEXTWINDOW END /* Strings */ diff --git a/reactos/win32ss/user/user32/lang/pt-BR.rc b/reactos/win32ss/user/user32/lang/pt-BR.rc index 3d504e9a07c..e33dbc0828f 100644 --- a/reactos/win32ss/user/user32/lang/pt-BR.rc +++ b/reactos/win32ss/user/user32/lang/pt-BR.rc @@ -39,7 +39,20 @@ BEGIN MENUITEM "Mi&nimizar", SC_MINIMIZE MENUITEM "Ma&ximizar", SC_MAXIMIZE MENUITEM SEPARATOR - MENUITEM "&Fechar\tAlt-F4", SC_CLOSE + MENUITEM "&Fechar\tAlt+F4", SC_CLOSE +END + +SYSMENUMDI MENU +BEGIN + MENUITEM "&Restaurar", SC_RESTORE + MENUITEM "&Mover", SC_MOVE + MENUITEM "&Tamanho", SC_SIZE + MENUITEM "Mi&nimizar", SC_MINIMIZE + MENUITEM "Ma&ximizar", SC_MAXIMIZE + MENUITEM SEPARATOR + MENUITEM "&Fechar\tCtrl+F4", SC_CLOSE + MENUITEM SEPARATOR + MENUITEM "&Próximo\tCtrl+F6", SC_NEXTWINDOW END /* Strings */ diff --git a/reactos/win32ss/user/user32/lang/ro-RO.rc b/reactos/win32ss/user/user32/lang/ro-RO.rc index 41619ad8334..6f3645cf3bb 100644 --- a/reactos/win32ss/user/user32/lang/ro-RO.rc +++ b/reactos/win32ss/user/user32/lang/ro-RO.rc @@ -39,7 +39,20 @@ BEGIN MENUITEM "Mi&nimizează", SC_MINIMIZE MENUITEM "Ma&ximizează", SC_MAXIMIZE MENUITEM SEPARATOR - MENUITEM "ÃŽnchid&e\tAlt-F4", SC_CLOSE + MENUITEM "ÃŽnchid&e\tAlt+F4", SC_CLOSE +END + +SYSMENUMDI MENU +BEGIN + MENUITEM "&RestabileÈ™te", SC_RESTORE + MENUITEM "&Mută", SC_MOVE + MENUITEM "Re&dimensionează", SC_SIZE + MENUITEM "Mi&nimizează", SC_MINIMIZE + MENUITEM "Ma&ximizează", SC_MAXIMIZE + MENUITEM SEPARATOR + MENUITEM "ÃŽnchid&e\tCtrl+F4", SC_CLOSE + MENUITEM SEPARATOR + MENUITEM "ÃŽnain&te\tCtrl+F6", SC_NEXTWINDOW END /* Strings */ diff --git a/reactos/win32ss/user/user32/lang/ru-RU.rc b/reactos/win32ss/user/user32/lang/ru-RU.rc index 24b4d628fd2..642f33187af 100644 --- a/reactos/win32ss/user/user32/lang/ru-RU.rc +++ b/reactos/win32ss/user/user32/lang/ru-RU.rc @@ -37,7 +37,20 @@ BEGIN MENUITEM "&Свернуть", SC_MINIMIZE MENUITEM "&Развернуть", SC_MAXIMIZE MENUITEM SEPARATOR - MENUITEM "&Закрыть\tAlt-F4", SC_CLOSE + MENUITEM "&Закрыть\tAlt+F4", SC_CLOSE +END + +SYSMENUMDI MENU +BEGIN + MENUITEM "&ВоÑтановить", SC_RESTORE + MENUITEM "&ПеремеÑтить", SC_MOVE + MENUITEM "Р&азмер", SC_SIZE + MENUITEM "&Свернуть", SC_MINIMIZE + MENUITEM "&Развернуть", SC_MAXIMIZE + MENUITEM SEPARATOR + MENUITEM "&Закрыть\tCtrl+F4", SC_CLOSE + MENUITEM SEPARATOR + MENUITEM "С&ледующее\tCtrl+F6", SC_NEXTWINDOW END /* Strings */ diff --git a/reactos/win32ss/user/user32/lang/sk-SK.rc b/reactos/win32ss/user/user32/lang/sk-SK.rc index f7ca522ebb5..6d9c8e39f44 100644 --- a/reactos/win32ss/user/user32/lang/sk-SK.rc +++ b/reactos/win32ss/user/user32/lang/sk-SK.rc @@ -39,7 +39,20 @@ BEGIN MENUITEM "&MinimalizovaÅ¥", SC_MINIMIZE MENUITEM "M&aximalizovaÅ¥", SC_MAXIMIZE MENUITEM SEPARATOR - MENUITEM "&ZavrieÅ¥\tAlt-F4", SC_CLOSE + MENUITEM "&ZavrieÅ¥\tAlt+F4", SC_CLOSE +END + +SYSMENUMDI MENU +BEGIN + MENUITEM "&ObnoviÅ¥", SC_RESTORE + MENUITEM "&PremiestniÅ¥", SC_MOVE + MENUITEM "&VeľkosÅ¥", SC_SIZE + MENUITEM "&MinimalizovaÅ¥", SC_MINIMIZE + MENUITEM "M&aximalizovaÅ¥", SC_MAXIMIZE + MENUITEM SEPARATOR + MENUITEM "&ZavrieÅ¥\tCtrl+F4", SC_CLOSE + MENUITEM SEPARATOR + MENUITEM "&ÄŽalej\tCtrl+F6", SC_NEXTWINDOW END /* Strings */ diff --git a/reactos/win32ss/user/user32/lang/sv-SE.rc b/reactos/win32ss/user/user32/lang/sv-SE.rc index 06af11fd40e..61f4a64de64 100644 --- a/reactos/win32ss/user/user32/lang/sv-SE.rc +++ b/reactos/win32ss/user/user32/lang/sv-SE.rc @@ -39,7 +39,20 @@ BEGIN MENUITEM "&Minimera", SC_MINIMIZE MENUITEM "Ma&ximera", SC_MAXIMIZE MENUITEM SEPARATOR - MENUITEM "&Stäng\tAlt-F4", SC_CLOSE + MENUITEM "&Stäng\tAlt+F4", SC_CLOSE +END + +SYSMENUMDI MENU +BEGIN + MENUITEM "&Ã…terställ", SC_RESTORE + MENUITEM "&Flytta", SC_MOVE + MENUITEM "S&torlek", SC_SIZE + MENUITEM "&Minimera", SC_MINIMIZE + MENUITEM "Ma&ximera", SC_MAXIMIZE + MENUITEM SEPARATOR + MENUITEM "&Stäng\tCtrl+F4", SC_CLOSE + MENUITEM SEPARATOR + MENUITEM "&Nästa\tCtrl+F6", SC_NEXTWINDOW END /* Strings */ diff --git a/reactos/win32ss/user/user32/lang/tr-TR.rc b/reactos/win32ss/user/user32/lang/tr-TR.rc index a45051b2b99..0be1bfb8c8a 100644 --- a/reactos/win32ss/user/user32/lang/tr-TR.rc +++ b/reactos/win32ss/user/user32/lang/tr-TR.rc @@ -39,7 +39,20 @@ BEGIN MENUITEM "&Simge Durumuna Küçült", SC_MINIMIZE MENUITEM "&Ekranı Kapla", SC_MAXIMIZE MENUITEM SEPARATOR - MENUITEM "&Kapat\tAlt-F4", SC_CLOSE + MENUITEM "&Kapat\tAlt+F4", SC_CLOSE +END + +SYSMENUMDI MENU +BEGIN + MENUITEM "Ö&nceki Boyut", SC_RESTORE + MENUITEM "&Taşı", SC_MOVE + MENUITEM "&Boyut", SC_SIZE + MENUITEM "&Simge Durumuna Küçült", SC_MINIMIZE + MENUITEM "&Ekranı Kapla", SC_MAXIMIZE + MENUITEM SEPARATOR + MENUITEM "&Kapat\tCtrl+F4", SC_CLOSE + MENUITEM SEPARATOR + MENUITEM "İle&ri\tCtrl+F6", SC_NEXTWINDOW END /* Strings */ diff --git a/reactos/win32ss/user/user32/lang/uk-UA.rc b/reactos/win32ss/user/user32/lang/uk-UA.rc index 2986e1d03e7..278a20957c6 100644 --- a/reactos/win32ss/user/user32/lang/uk-UA.rc +++ b/reactos/win32ss/user/user32/lang/uk-UA.rc @@ -37,7 +37,20 @@ BEGIN MENUITEM "З&горнути", SC_MINIMIZE MENUITEM "&Розгорнути", SC_MAXIMIZE MENUITEM SEPARATOR - MENUITEM "&Закрити\tAlt-F4", SC_CLOSE + MENUITEM "&Закрити\tAlt+F4", SC_CLOSE +END + +SYSMENUMDI MENU +BEGIN + MENUITEM "&Відновити", SC_RESTORE + MENUITEM "П&ереміÑтити", SC_MOVE + MENUITEM "Роз&мір", SC_SIZE + MENUITEM "З&горнути", SC_MINIMIZE + MENUITEM "&Розгорнути", SC_MAXIMIZE + MENUITEM SEPARATOR + MENUITEM "&Закрити\tCtrl+F4", SC_CLOSE + MENUITEM SEPARATOR + MENUITEM "ÐаÑ&тупний\tCtrl+F6", SC_NEXTWINDOW END /* Strings */ diff --git a/reactos/win32ss/user/user32/lang/zh-CN.rc b/reactos/win32ss/user/user32/lang/zh-CN.rc index 8e625eb5f86..e59cbc0cb60 100644 --- a/reactos/win32ss/user/user32/lang/zh-CN.rc +++ b/reactos/win32ss/user/user32/lang/zh-CN.rc @@ -40,6 +40,19 @@ BEGIN MENUITEM "关闭(&C)\tAlt+F4", SC_CLOSE END +SYSMENUMDI MENU +BEGIN + MENUITEM "还原(&R)", SC_RESTORE + MENUITEM "移动(&M)", SC_MOVE + MENUITEM "大å°(&S)", SC_SIZE + MENUITEM "最å°åŒ–(&n)", SC_MINIMIZE + MENUITEM "最大化(&x)", SC_MAXIMIZE + MENUITEM SEPARATOR + MENUITEM "关闭(&C)\tCtrl+F4", SC_CLOSE + MENUITEM SEPARATOR + MENUITEM "下一步(&T)\tCtrl+F6", SC_NEXTWINDOW +END + /* Strings */ STRINGTABLE From d3a1610c4bd622c55db61b4e568855f5031236b6 Mon Sep 17 00:00:00 2001 From: James Tabor Date: Wed, 28 May 2014 22:52:38 +0000 Subject: [PATCH 097/232] [Win32k] - Turn on MDI system menus. svn path=/trunk/; revision=63493 --- reactos/win32ss/user/ntuser/menu.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/reactos/win32ss/user/ntuser/menu.c b/reactos/win32ss/user/ntuser/menu.c index c802832f306..223c337ce08 100644 --- a/reactos/win32ss/user/ntuser/menu.c +++ b/reactos/win32ss/user/ntuser/menu.c @@ -1684,12 +1684,12 @@ PMENU FASTCALL MENU_GetSystemMenu(PWND Window, PMENU Popup) if (!Popup) { //hNewMenu = co_IntLoadSysMenuTemplate(); - //if ( Window->ExStyle & WS_EX_MDICHILD ) - //{ - // RtlInitUnicodeString( &MenuName, L"SYSMENUMDI"); - // hNewMenu = co_IntCallLoadMenu( hModClient, &MenuName); - //} - //else + if ( Window->ExStyle & WS_EX_MDICHILD ) + { + RtlInitUnicodeString( &MenuName, L"SYSMENUMDI"); + hNewMenu = co_IntCallLoadMenu( hModClient, &MenuName); + } + else { RtlInitUnicodeString( &MenuName, L"SYSMENU"); hNewMenu = co_IntCallLoadMenu( hModClient, &MenuName); From 836f7cd6d37c0d2d06890d574f83a9e08524664a Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Thu, 29 May 2014 15:19:30 +0000 Subject: [PATCH 098/232] [ADVAPI32][MSGINA] Fix overflow of TokenSource.SourceName. CORE-8272 #resolve svn path=/trunk/; revision=63494 --- reactos/dll/win32/advapi32/misc/logon.c | 2 +- reactos/dll/win32/msgina/lsa.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/reactos/dll/win32/advapi32/misc/logon.c b/reactos/dll/win32/advapi32/misc/logon.c index ff06b428bf7..a333ac14d87 100644 --- a/reactos/dll/win32/advapi32/misc/logon.c +++ b/reactos/dll/win32/advapi32/misc/logon.c @@ -463,7 +463,7 @@ LogonUserW(LPWSTR lpszUsername, SE_GROUP_ENABLED_BY_DEFAULT; /* Set the token source */ - strcpy(TokenSource.SourceName, "LogonUser"); + strncpy(TokenSource.SourceName, "Advapi ", sizeof(TokenSource.SourceName)); AllocateLocallyUniqueId(&TokenSource.SourceIdentifier); Status = LsaLogonUser(LsaHandle, diff --git a/reactos/dll/win32/msgina/lsa.c b/reactos/dll/win32/msgina/lsa.c index 174378f0fcd..16eaf68fdd3 100644 --- a/reactos/dll/win32/msgina/lsa.c +++ b/reactos/dll/win32/msgina/lsa.c @@ -192,7 +192,7 @@ MyLogonUser( SE_GROUP_ENABLED_BY_DEFAULT; /* Set the token source */ - strcpy(TokenSource.SourceName, "LogonUser"); + strncpy(TokenSource.SourceName, "User32 ", sizeof(TokenSource.SourceName)); AllocateLocallyUniqueId(&TokenSource.SourceIdentifier); Status = LsaLogonUser(LsaHandle, From 0d6c552a9dc4a1b546f564cb994a164ff2a49ee9 Mon Sep 17 00:00:00 2001 From: Aleksandar Andrejevic Date: Thu, 29 May 2014 19:44:36 +0000 Subject: [PATCH 099/232] [NTOSKRNL] Implement NtSaveKey/NtSaveKeyEx and its backend CmSaveKey. CORE-8259 #resolve #comment Committed in revision r63495. svn path=/trunk/; revision=63495 --- reactos/ntoskrnl/config/cmapi.c | 225 +++++++++++++++++++++++++ reactos/ntoskrnl/config/cminit.c | 22 +++ reactos/ntoskrnl/config/cmvalue.c | 59 +++++++ reactos/ntoskrnl/config/ntapi.c | 43 ++++- reactos/ntoskrnl/include/internal/cm.h | 43 +++++ 5 files changed, 388 insertions(+), 4 deletions(-) diff --git a/reactos/ntoskrnl/config/cmapi.c b/reactos/ntoskrnl/config/cmapi.c index ed2eda03410..e52f572b0ed 100644 --- a/reactos/ntoskrnl/config/cmapi.c +++ b/reactos/ntoskrnl/config/cmapi.c @@ -5,6 +5,7 @@ * PURPOSE: Configuration Manager - Internal Registry APIs * PROGRAMMERS: Alex Ionescu (alex.ionescu@reactos.org) * Eric Kohl + * Aleksandar Andrejevic */ /* INCLUDES ******************************************************************/ @@ -2120,3 +2121,227 @@ CmCountOpenSubKeys(IN PCM_KEY_CONTROL_BLOCK RootKcb, return SubKeys; } + +HCELL_INDEX +NTAPI +CmpCopyCell(IN PHHIVE SourceHive, + IN HCELL_INDEX SourceCell, + IN PHHIVE DestinationHive, + IN HSTORAGE_TYPE StorageType) +{ + PCELL_DATA SourceData; + PCELL_DATA DestinationData = NULL; + HCELL_INDEX DestinationCell = HCELL_NIL; + LONG DataSize; + PAGED_CODE(); + + /* Get the data and the size of the source cell */ + SourceData = HvGetCell(SourceHive, SourceCell); + DataSize = HvGetCellSize(SourceHive, SourceData); + + /* Allocate a new cell in the destination hive */ + DestinationCell = HvAllocateCell(DestinationHive, + DataSize, + StorageType, + HCELL_NIL); + if (DestinationCell == HCELL_NIL) goto Cleanup; + + /* Get the data of the destination cell */ + DestinationData = HvGetCell(DestinationHive, DestinationCell); + + /* Copy the data from the source cell to the destination cell */ + RtlMoveMemory(DestinationData, SourceData, DataSize); + +Cleanup: + + /* Release the cells */ + if (SourceData) HvReleaseCell(SourceHive, SourceCell); + if (DestinationData) HvReleaseCell(DestinationHive, DestinationCell); + + /* Return the destination cell index */ + return DestinationCell; +} + +static +NTSTATUS +NTAPI +CmpDeepCopyKeyInternal(IN PHHIVE SourceHive, + IN HCELL_INDEX SrcKeyCell, + IN PHHIVE DestinationHive, + IN HCELL_INDEX Parent, + IN HSTORAGE_TYPE StorageType, + OUT PHCELL_INDEX DestKeyCell OPTIONAL) +{ + NTSTATUS Status; + PCM_KEY_NODE SrcNode, DestNode; + HCELL_INDEX NewKeyCell, SubKey, NewSubKey; + ULONG Index, SubKeyCount; + PAGED_CODE(); + + DPRINT("CmpDeepCopyKeyInternal(0x%08X, 0x%08X, 0x%08X, 0x%08X, 0x%08X, 0x%08X)\n", + SourceHive, + SrcKeyCell, + DestinationHive, + Parent, + StorageType, + DestKeyCell); + + /* Get the source cell node */ + SrcNode = HvGetCell(SourceHive, SrcKeyCell); + + /* Sanity check */ + ASSERT(SrcNode->Signature == CM_KEY_NODE_SIGNATURE); + + /* Create a simple copy of the source key */ + NewKeyCell = CmpCopyCell(SourceHive, + SrcKeyCell, + DestinationHive, + StorageType); + if (NewKeyCell == HCELL_NIL) + { + /* Not enough storage space */ + Status = STATUS_INSUFFICIENT_RESOURCES; + goto Cleanup; + } + + /* Get the destination cell node */ + DestNode = HvGetCell(DestinationHive, NewKeyCell); + + /* Set the parent */ + DestNode->Parent = Parent; + + // TODO: These should also be copied! + DestNode->Security = DestNode->Class = HCELL_NIL; + + /* Copy the value list */ + Status = CmpCopyKeyValueList(SourceHive, + &SrcNode->ValueList, + DestinationHive, + &DestNode->ValueList, + StorageType); + if (!NT_SUCCESS(Status)) goto Cleanup; + + /* Clear the invalid subkey index */ + DestNode->SubKeyCounts[Stable] = DestNode->SubKeyCounts[Volatile] = 0; + DestNode->SubKeyLists[Stable] = DestNode->SubKeyLists[Volatile] = HCELL_NIL; + + /* Calculate the total number of subkeys */ + SubKeyCount = SrcNode->SubKeyCounts[Stable] + SrcNode->SubKeyCounts[Volatile]; + + /* Loop through all the subkeys */ + for (Index = 0; Index < SubKeyCount; Index++) + { + /* Get the subkey */ + SubKey = CmpFindSubKeyByNumber(SourceHive, SrcNode, Index); + ASSERT(SubKey != HCELL_NIL); + + /* Call the function recursively for the subkey */ + Status = CmpDeepCopyKeyInternal(SourceHive, + SubKey, + DestinationHive, + NewKeyCell, + StorageType, + &NewSubKey); + if (!NT_SUCCESS(Status)) goto Cleanup; + + /* Add the copy of the subkey to the new key */ + if (!CmpAddSubKey(DestinationHive, + NewKeyCell, + NewSubKey)) + { + Status = STATUS_INSUFFICIENT_RESOURCES; + goto Cleanup; + } + } + + /* Set the cell index if requested and return success */ + if (DestKeyCell) *DestKeyCell = NewKeyCell; + Status = STATUS_SUCCESS; + +Cleanup: + + /* Release the cells */ + if (SrcNode) HvReleaseCell(SourceHive, SrcKeyCell); + if (DestNode) HvReleaseCell(DestinationHive, NewKeyCell); + + return Status; +} + +NTSTATUS +NTAPI +CmpDeepCopyKey(IN PHHIVE SourceHive, + IN HCELL_INDEX SrcKeyCell, + IN PHHIVE DestinationHive, + IN HSTORAGE_TYPE StorageType, + OUT PHCELL_INDEX DestKeyCell OPTIONAL) +{ + /* Call the internal function */ + return CmpDeepCopyKeyInternal(SourceHive, + SrcKeyCell, + DestinationHive, + HCELL_NIL, + StorageType, + DestKeyCell); +} + +NTSTATUS +NTAPI +CmSaveKey(IN PCM_KEY_CONTROL_BLOCK Kcb, + IN HANDLE FileHandle, + IN ULONG Flags) +{ + NTSTATUS Status = STATUS_SUCCESS; + PCMHIVE KeyHive = NULL; + PAGED_CODE(); + + DPRINT("CmSaveKey(0x%08X, 0x%08X, %lu)\n", Kcb, FileHandle, Flags); + + /* Lock the registry and KCB */ + CmpLockRegistry(); + CmpAcquireKcbLockShared(Kcb); + + if (Kcb->Delete) + { + /* The source key has been deleted, do nothing */ + Status = STATUS_KEY_DELETED; + goto Cleanup; + } + + /* Create a new hive that will hold the key */ + Status = CmpInitializeHive(&KeyHive, + HINIT_CREATE, + HIVE_VOLATILE, + HFILE_TYPE_PRIMARY, + NULL, + NULL, + NULL, + NULL, + NULL, + 0); + if (!NT_SUCCESS(Status)) goto Cleanup; + + /* Copy the key recursively into the new hive */ + Status = CmpDeepCopyKey(Kcb->KeyHive, + Kcb->KeyCell, + &KeyHive->Hive, + Stable, + &KeyHive->Hive.BaseBlock->RootCell); + if (!NT_SUCCESS(Status)) goto Cleanup; + + /* Set the primary handle of the hive */ + KeyHive->FileHandles[HFILE_TYPE_PRIMARY] = FileHandle; + + /* Dump the hive into the file */ + HvWriteHive(&KeyHive->Hive); + +Cleanup: + + /* Free the hive */ + if (KeyHive) CmpDestroyHive(KeyHive); + + /* Release the locks */ + CmpReleaseKcbLock(Kcb); + CmpUnlockRegistry(); + + return Status; +} diff --git a/reactos/ntoskrnl/config/cminit.c b/reactos/ntoskrnl/config/cminit.c index 897e58460ce..8689e8eab5d 100644 --- a/reactos/ntoskrnl/config/cminit.c +++ b/reactos/ntoskrnl/config/cminit.c @@ -238,6 +238,28 @@ CmpInitializeHive(OUT PCMHIVE *RegistryHive, return STATUS_SUCCESS; } +NTSTATUS +NTAPI +CmpDestroyHive(IN PCMHIVE CmHive) +{ + /* Remove the hive from the list */ + ExAcquirePushLockExclusive(&CmpHiveListHeadLock); + RemoveEntryList(&CmHive->HiveList); + ExReleasePushLock(&CmpHiveListHeadLock); + + /* Delete the flusher lock */ + ExDeleteResourceLite(CmHive->FlusherLock); + ExFreePoolWithTag(CmHive->FlusherLock, TAG_CM); + + /* Delete the view lock */ + ExFreePoolWithTag(CmHive->ViewLock, TAG_CM); + + /* Free the hive */ + HvFree(&CmHive->Hive); + + return STATUS_SUCCESS; +} + NTSTATUS NTAPI CmpOpenHiveFiles(IN PCUNICODE_STRING BaseName, diff --git a/reactos/ntoskrnl/config/cmvalue.c b/reactos/ntoskrnl/config/cmvalue.c index 0c401e67863..30fd6229127 100644 --- a/reactos/ntoskrnl/config/cmvalue.c +++ b/reactos/ntoskrnl/config/cmvalue.c @@ -361,3 +361,62 @@ CmpRemoveValueFromList(IN PHHIVE Hive, ChildList->Count = Count; return STATUS_SUCCESS; } + +NTSTATUS +NTAPI +CmpCopyKeyValueList(IN PHHIVE SourceHive, + IN PCHILD_LIST SrcValueList, + IN PHHIVE DestinationHive, + IN OUT PCHILD_LIST DestValueList, + IN HSTORAGE_TYPE StorageType) + +{ + NTSTATUS Status = STATUS_SUCCESS; + HCELL_INDEX CellIndex = HCELL_NIL; + ULONG Index; + PCELL_DATA SrcListData = NULL; + PCELL_DATA DestListData = NULL; + + PAGED_CODE(); + + /* Set the count */ + DestValueList->Count = SrcValueList->Count; + + /* Check if the list is empty */ + if (!DestValueList->Count) + { + DestValueList->List = HCELL_NIL; + return STATUS_SUCCESS; + } + + /* Create a simple copy of the list */ + CellIndex = CmpCopyCell(SourceHive, + SrcValueList->List, + DestinationHive, + StorageType); + if (CellIndex == HCELL_NIL) return STATUS_INSUFFICIENT_RESOURCES; + + /* Get the source and the destination value list */ + SrcListData = HvGetCell(SourceHive, SrcValueList->List); + DestListData = HvGetCell(DestinationHive, CellIndex); + + /* Copy the actual values */ + for (Index = 0; Index < SrcValueList->Count; Index++) + { + DestListData->u.KeyList[Index] = CmpCopyCell(SourceHive, + SrcListData->u.KeyList[Index], + DestinationHive, + StorageType); + if (DestListData->u.KeyList[Index] == HCELL_NIL) + { + Status = STATUS_INSUFFICIENT_RESOURCES; + break; + } + } + + /* Release the cells */ + if (SrcListData) HvReleaseCell(SourceHive, SrcValueList->List); + if (DestListData) HvReleaseCell(DestinationHive, CellIndex); + + return Status; +} diff --git a/reactos/ntoskrnl/config/ntapi.c b/reactos/ntoskrnl/config/ntapi.c index fe72872388b..b3bf0ece98d 100644 --- a/reactos/ntoskrnl/config/ntapi.c +++ b/reactos/ntoskrnl/config/ntapi.c @@ -1148,8 +1148,8 @@ NTAPI NtSaveKey(IN HANDLE KeyHandle, IN HANDLE FileHandle) { - UNIMPLEMENTED; - return STATUS_NOT_IMPLEMENTED; + /* Call the extended API */ + return NtSaveKeyEx(KeyHandle, FileHandle, REG_STANDARD_FORMAT); } NTSTATUS @@ -1158,8 +1158,43 @@ NtSaveKeyEx(IN HANDLE KeyHandle, IN HANDLE FileHandle, IN ULONG Flags) { - UNIMPLEMENTED; - return STATUS_NOT_IMPLEMENTED; + NTSTATUS Status; + PCM_KEY_BODY KeyObject; + KPROCESSOR_MODE PreviousMode = ExGetPreviousMode(); + + PAGED_CODE(); + + DPRINT("NtSaveKeyEx(0x%08X, 0x%08X, %lu)\n", KeyHandle, FileHandle, Flags); + + /* Verify the flags */ + if ((Flags != REG_STANDARD_FORMAT) + && (Flags != REG_LATEST_FORMAT) + && (Flags != REG_NO_COMPRESSION)) + { + /* Only one of these values can be specified */ + return STATUS_INVALID_PARAMETER; + } + + /* Check for the SeBackupPrivilege */ + if (!SeSinglePrivilegeCheck(SeBackupPrivilege, PreviousMode)) + { + return STATUS_PRIVILEGE_NOT_HELD; + } + + /* Verify that the handle is valid and is a registry key */ + Status = ObReferenceObjectByHandle(KeyHandle, + KEY_READ, + CmpKeyObjectType, + PreviousMode, + (PVOID*)&KeyObject, + NULL); + if (!NT_SUCCESS(Status)) return Status; + + /* Call the internal API */ + Status = CmSaveKey(KeyObject->KeyControlBlock, FileHandle, Flags); + + ObDereferenceObject(KeyObject); + return Status; } NTSTATUS diff --git a/reactos/ntoskrnl/include/internal/cm.h b/reactos/ntoskrnl/include/internal/cm.h index d34f5b32bb2..d4d7c9e5156 100644 --- a/reactos/ntoskrnl/include/internal/cm.h +++ b/reactos/ntoskrnl/include/internal/cm.h @@ -786,6 +786,12 @@ CmpInitializeHive( IN ULONG CheckFlags ); +NTSTATUS +NTAPI +CmpDestroyHive( + IN PCMHIVE CmHive +); + PSECURITY_DESCRIPTOR NTAPI CmpHiveRootSecurityDescriptor( @@ -1322,6 +1328,16 @@ CmpGetValueData( OUT PHCELL_INDEX CellToRelease ); +NTSTATUS +NTAPI +CmpCopyKeyValueList( + IN PHHIVE SourceHive, + IN PCHILD_LIST SrcValueList, + IN PHHIVE DestinationHive, + IN OUT PCHILD_LIST DestValueList, + IN HSTORAGE_TYPE StorageType +); + // // Boot Routines // @@ -1527,6 +1543,33 @@ CmCountOpenSubKeys( IN BOOLEAN RemoveEmptyCacheEntries ); +HCELL_INDEX +NTAPI +CmpCopyCell( + IN PHHIVE SourceHive, + IN HCELL_INDEX SourceCell, + IN PHHIVE DestinationHive, + IN HSTORAGE_TYPE StorageType +); + +NTSTATUS +NTAPI +CmpDeepCopyKey( + IN PHHIVE SourceHive, + IN HCELL_INDEX SrcKeyCell, + IN PHHIVE DestinationHive, + IN HSTORAGE_TYPE StorageType, + OUT PHCELL_INDEX DestKeyCell OPTIONAL +); + +NTSTATUS +NTAPI +CmSaveKey( + IN PCM_KEY_CONTROL_BLOCK Kcb, + IN HANDLE FileHandle, + IN ULONG Flags +); + // // Startup and Shutdown // From cb2c49a1eaf9672344d75fcd21f7f308d66231a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Thu, 29 May 2014 21:34:35 +0000 Subject: [PATCH 100/232] [LSASRV] - Just run again the loop if LsarOpenAccount call failed (that also avoids a call to LsarClose on a NULL handle, that is trapped by the kdbg if one enabled "set condition * first always"). - Free the memory and the opened handles before returning in case of failure of LsapAddPrivilegeToTokenPrivileges. Maybe this cleaning step can be done more elegantly. Eric, can you please review that? It should be good I think. svn path=/trunk/; revision=63496 --- reactos/dll/win32/lsasrv/authpackage.c | 29 ++++++++++++++++---------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/reactos/dll/win32/lsasrv/authpackage.c b/reactos/dll/win32/lsasrv/authpackage.c index a9f57ab76c6..f07e1fd3935 100644 --- a/reactos/dll/win32/lsasrv/authpackage.c +++ b/reactos/dll/win32/lsasrv/authpackage.c @@ -1308,23 +1308,30 @@ LsapSetPrivileges( TokenInfo1->Groups->Groups[i].Sid, ACCOUNT_VIEW, &AccountHandle); + if (!NT_SUCCESS(Status)) + continue; + + Status = LsarEnumeratePrivilegesAccount(AccountHandle, + &Privileges); if (NT_SUCCESS(Status)) { - Status = LsarEnumeratePrivilegesAccount(AccountHandle, - &Privileges); - if (NT_SUCCESS(Status)) + for (j = 0; j < Privileges->PrivilegeCount; j++) { - for (j = 0; j < Privileges->PrivilegeCount; j++) + Status = LsapAddPrivilegeToTokenPrivileges(&TokenInfo1->Privileges, + &(Privileges->Privilege[j])); + if (!NT_SUCCESS(Status)) { - Status = LsapAddPrivilegeToTokenPrivileges(&TokenInfo1->Privileges, - &(Privileges->Privilege[j])); - if (!NT_SUCCESS(Status)) - return Status; - } + /* We failed, clean everything and return */ + LsaIFree_LSAPR_PRIVILEGE_SET(Privileges); + LsarClose(&AccountHandle); + LsarClose(&PolicyHandle); - LsaIFree_LSAPR_PRIVILEGE_SET(Privileges); - Privileges = NULL; + return Status; + } } + + LsaIFree_LSAPR_PRIVILEGE_SET(Privileges); + Privileges = NULL; } LsarClose(&AccountHandle); From 63f0cf2a3a2f536f9e12adc132574a37fc1e06ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Thu, 29 May 2014 22:37:43 +0000 Subject: [PATCH 101/232] [PSDK] - Fix the CMYK macro which was totally broken. - Code formatting around RGB macro. svn path=/trunk/; revision=63497 --- reactos/include/psdk/wingdi.h | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/reactos/include/psdk/wingdi.h b/reactos/include/psdk/wingdi.h index 762d3f9ceb5..f04e784be39 100644 --- a/reactos/include/psdk/wingdi.h +++ b/reactos/include/psdk/wingdi.h @@ -2894,11 +2894,17 @@ typedef UINT (CALLBACK *LPFNDEVMODE)(HWND,HMODULE,LPDEVMODEA,LPSTR,LPSTR,LPDEVMO typedef DWORD (CALLBACK *LPFNDEVCAPS)(LPSTR,LPSTR,UINT,LPSTR,LPDEVMODEA); -#define RGB(r,g,b) ((DWORD)(((BYTE)(r)|((WORD)(g)<<8))|(((DWORD)(BYTE)(b))<<16))) +#define GetRValue(rgb) ((BYTE)(rgb)) +#define GetGValue(rgb) ((BYTE)(((WORD)(rgb)) >> 8)) +#define GetBValue(rgb) ((BYTE)((rgb)>>16)) + +#define RGB(r,g,b) ((COLORREF)(((BYTE)(r)|((WORD)((BYTE)(g))<<8))|(((DWORD)(BYTE)(b))<<16))) +#define PALETTERGB(r,g,b) (0x02000000 | RGB(r,g,b)) +#define PALETTEINDEX(i) ((COLORREF)(0x01000000 | (DWORD)(WORD)(i))) + #define MAKEPOINTS(l) (*((POINTS*)&(l))) -#define MAKEROP4(f,b) (DWORD)((((b)<<8)&0xFF000000)|(f)) -#define PALETTEINDEX(i) ((0x01000000|(COLORREF)(WORD)(i))) -#define PALETTERGB(r,g,b) (0x02000000|RGB(r,g,b)) +#define MAKEROP4(f,b) (DWORD)((((b)<<8)&0xFF000000)|(f)) + int WINAPI AbortDoc(_In_ HDC); BOOL WINAPI AbortPath(_In_ HDC); int WINAPI AddFontResourceA(LPCSTR); @@ -3197,14 +3203,13 @@ GdiGradientFill( BOOL WINAPI GdiTransparentBlt(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int, _In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT); BOOL WINAPI GdiIsMetaFileDC(HDC); -#define GetCValue(cmyk) ((BYTE)(cmyk)) -#define GetMValue(cmyk) ((BYTE)((cmyk)>> 8)) -#define GetYValue(cmyk) ((BYTE)((cmyk)>>16)) -#define GetKValue(cmyk) ((BYTE)((cmyk)>>24)) -#define CMYK(c,m,y,k) ((COLORREF)((((BYTE)(c)|((WORD)((BYTE)(m))<<8))|(((DWORD)(BYTE)(y))<<16))|(((DWORD)(BYTE)(k))<<24))) -#define GetRValue(c) ((BYTE)(c)) -#define GetGValue(c) ((BYTE)(((WORD)(c))>>8)) -#define GetBValue(c) ((BYTE)((c)>>16)) + +#define GetKValue(cmyk) ((BYTE)(cmyk)) +#define GetYValue(cmyk) ((BYTE)((cmyk)>> 8)) +#define GetMValue(cmyk) ((BYTE)((cmyk)>>16)) +#define GetCValue(cmyk) ((BYTE)((cmyk)>>24)) +#define CMYK(c,m,y,k) ((COLORREF)((((BYTE)(k)|((WORD)((BYTE)(y))<<8))|(((DWORD)(BYTE)(m))<<16))|(((DWORD)(BYTE)(c))<<24))) + int WINAPI GetArcDirection(_In_ HDC); BOOL WINAPI GetAspectRatioFilterEx(_In_ HDC, _Out_ LPSIZE); From 87026354cb4e7fd637e29486e87e80f36c3800af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Thu, 29 May 2014 23:20:31 +0000 Subject: [PATCH 102/232] [USERINIT] - Remove two unuseful imports. - Rewrite StrToColorref to not use shell functions, and increase a bit the size of the szColor buffer in SetUserSysColors to match the capabilities of windows. svn path=/trunk/; revision=63498 --- reactos/base/system/userinit/CMakeLists.txt | 2 +- reactos/base/system/userinit/userinit.c | 12 +++++------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/reactos/base/system/userinit/CMakeLists.txt b/reactos/base/system/userinit/CMakeLists.txt index e66a520136c..52354f37f79 100644 --- a/reactos/base/system/userinit/CMakeLists.txt +++ b/reactos/base/system/userinit/CMakeLists.txt @@ -2,5 +2,5 @@ add_executable(userinit userinit.c userinit.rc) target_link_libraries(userinit wine) set_module_type(userinit win32gui UNICODE) -add_importlibs(userinit user32 gdi32 advapi32 shell32 shlwapi msvcrt kernel32 ntdll) +add_importlibs(userinit user32 advapi32 shell32 msvcrt kernel32 ntdll) add_cd_file(TARGET userinit DESTINATION reactos/system32 FOR all) diff --git a/reactos/base/system/userinit/userinit.c b/reactos/base/system/userinit/userinit.c index 7362a10733c..717b81843e6 100644 --- a/reactos/base/system/userinit/userinit.c +++ b/reactos/base/system/userinit/userinit.c @@ -227,7 +227,7 @@ StartAutoApplications( { if (!(findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) && (findData.nFileSizeHigh || findData.nFileSizeLow)) { - memset(&ExecInfo, 0x0, sizeof(SHELLEXECUTEINFOW)); + ZeroMemory(&ExecInfo, sizeof(SHELLEXECUTEINFOW)); ExecInfo.cbSize = sizeof(ExecInfo); wcscpy(&szPath[len+1], findData.cFileName); ExecInfo.lpVerb = L"open"; @@ -430,11 +430,9 @@ COLORREF StrToColorref( TRACE("(%s)\n", debugstr_w(lpszCol)); - rgb[0] = StrToIntW(lpszCol); - lpszCol = StrChrW(lpszCol, L' ') + 1; - rgb[1] = StrToIntW(lpszCol); - lpszCol = StrChrW(lpszCol, L' ') + 1; - rgb[2] = StrToIntW(lpszCol); + rgb[0] = (BYTE)wcstoul(lpszCol, &lpszCol, 10); + rgb[1] = (BYTE)wcstoul(lpszCol, &lpszCol, 10); + rgb[2] = (BYTE)wcstoul(lpszCol, &lpszCol, 10); return RGB(rgb[0], rgb[1], rgb[2]); } @@ -443,7 +441,7 @@ VOID SetUserSysColors(VOID) { HKEY hKey; INT i; - WCHAR szColor[20]; + WCHAR szColor[25]; DWORD Type, Size; COLORREF crColor; LONG rc; From aaff11172a0cf7f385591e62a535e64f5848c296 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Thu, 29 May 2014 23:43:19 +0000 Subject: [PATCH 103/232] [INCLUDE] - rewrite msvctarget.h to define all native MSVC architecture macros and do not define x86 sub-architecture numbers, they are deprecated - basetsd.h: Fix header guard, include msvctarget.h instead of adding some custom defines, add missing FIRMWARE_PTR definition, fix POINTER_64 definition svn path=/trunk/; revision=63499 --- reactos/include/psdk/basetsd.h | 42 ++++++---------- reactos/include/psdk/ras.h | 4 +- reactos/include/psdk/winnls.h | 2 +- reactos/include/reactos/idl/ms-dtyp.idl | 12 ++--- reactos/include/reactos/msvctarget.h | 65 +++++++++++++++++++------ 5 files changed, 72 insertions(+), 53 deletions(-) diff --git a/reactos/include/psdk/basetsd.h b/reactos/include/psdk/basetsd.h index 9bafa25e4e3..1dd0c7f5fc5 100644 --- a/reactos/include/psdk/basetsd.h +++ b/reactos/include/psdk/basetsd.h @@ -1,5 +1,8 @@ -#ifndef _BASETSD_H -#define _BASETSD_H +#ifndef _BASETSD_H_ +#define _BASETSD_H_ +#pragma once + +#include #ifndef _M_AMD64 #if !defined(__ROS_LONG64__) @@ -23,30 +26,7 @@ #error Not supported. #endif -#if !defined(_X86_) && !defined(_AMD64_) && !defined(_IA64_) && !defined(_ALPHA_) && \ - !defined(_ARM_) && !defined(_PPC_) && !defined(_MIPS_) && !defined(_68K_) - -#if defined(_M_AMD64) || defined(__x86_64__) -#define _AMD64_ -#elif defined(_M_IX86) || defined(__i386__) -#define _X86_ -#elif defined(_M_IA64) || defined(__ia64__) -#define _IA64_ -#elif defined(_M_ALPHA) || defined(__alpha__) -#define _ALPHA_ -#elif defined(_M_ARM) || defined(__arm__) -#define _ARM_ -#elif defined(_M_PPC) || defined(__powerpc__) -#define _PPC_ -#elif defined(_M_MRX000) || defined(__mips__) -#define _MIPS_ -#elif defined(_M_M68K) || defined(__68k__) -#define _68K_ -#endif - -#endif - -#if !defined(MIDL_PASS) && !defined(RC_INVOKED) +#if defined(_MSC_VER) && !defined(MIDL_PASS) && !defined(RC_INVOKED) #define POINTER_64 __ptr64 #if defined(_WIN64) #define POINTER_32 __ptr32 @@ -56,7 +36,7 @@ #else #define POINTER_64 #define POINTER_32 -#endif /* !defined(MIDL_PASS) && !defined(RC_INVOKED) */ +#endif /* defined(_MSC_VER) && !defined(MIDL_PASS) && !defined(RC_INVOKED) */ #if defined(_M_MRX000) || defined(_M_AMD64) || defined(_M_IA64) typedef unsigned __int64 POINTER_64_INT; @@ -64,6 +44,12 @@ typedef unsigned long POINTER_64_INT; #endif +#if defined(_IA64_) || defined(_AMD64_) + #define FIRMWARE_PTR +#else + #define FIRMWARE_PTR POINTER_32 +#endif + #if 0 /* Not supported yet */ #define POINTER_SIGNED __sptr #define POINTER_UNSIGNED __uptr @@ -214,4 +200,4 @@ typedef KAFFINITY *PKAFFINITY; #endif #endif /* !RC_INVOKED */ -#endif /* _BASETSD_H */ +#endif /* _BASETSD_H_ */ diff --git a/reactos/include/psdk/ras.h b/reactos/include/psdk/ras.h index a0bc80d63e8..aa070afb5da 100644 --- a/reactos/include/psdk/ras.h +++ b/reactos/include/psdk/ras.h @@ -13,7 +13,7 @@ extern "C" /* TODO include from winnt.h so that this typedef is not necessary */ -#ifndef _BASETSD_H +#ifndef _BASETSD_H_ typedef unsigned long ULONG_PTR, *PULONG_PTR; #endif @@ -787,7 +787,7 @@ typedef struct tagRASCOMMSETTINGS typedef DWORD (WINAPI *PFNRASSETCOMMSETTINGS) (HANDLE hPort,RASCOMMSETTINGS *pRasCommSettings,PVOID pvReserved); typedef struct tagRASCUSTOMSCRIPTEXTENSIONS { - DWORD dwSize; + DWORD dwSize; PFNRASSETCOMMSETTINGS pfnRasSetCommSettings; } RASCUSTOMSCRIPTEXTENSIONS; #endif /*(WINVER >= 0x501)*/ diff --git a/reactos/include/psdk/winnls.h b/reactos/include/psdk/winnls.h index 7a9eb2b13a7..8e561b1be24 100644 --- a/reactos/include/psdk/winnls.h +++ b/reactos/include/psdk/winnls.h @@ -473,7 +473,7 @@ static const WCHAR LOCALE_NAME_SYSTEM_DEFAULT[] = {'!','s','y','s','-','d','e',' #define VS_ALLOW_LATIN 0x1 #define GSS_ALLOW_INHERITED_COMMON 0x1 #endif -#ifndef _BASETSD_H +#ifndef _BASETSD_H_ typedef long LONG_PTR; #endif diff --git a/reactos/include/reactos/idl/ms-dtyp.idl b/reactos/include/reactos/idl/ms-dtyp.idl index 592d9dabb48..301da1a4e2f 100644 --- a/reactos/include/reactos/idl/ms-dtyp.idl +++ b/reactos/include/reactos/idl/ms-dtyp.idl @@ -7,7 +7,7 @@ typedef int BOOL, *PBOOL, *LPBOOL; typedef unsigned char BYTE, *PBYTE, *LPBYTE; typedef unsigned long DWORD, *PDWORD, *LPDWORD; cpp_quote("#endif") -cpp_quote("#ifndef _BASETSD_H") +cpp_quote("#ifndef _BASETSD_H_") typedef unsigned int DWORD32; typedef unsigned __int64 DWORD64; cpp_quote("#endif") @@ -15,13 +15,13 @@ cpp_quote("#endif") cpp_quote("#ifndef _WINDEF_H") typedef int INT, *LPINT; cpp_quote("#endif") -cpp_quote("#ifndef _BASETSD_H") +cpp_quote("#ifndef _BASETSD_H_") typedef signed char INT8; typedef signed short INT16; typedef signed int INT32; typedef signed __int64 INT64; cpp_quote("#endif") -cpp_quote("#ifndef _BASETSD_H") +cpp_quote("#ifndef _BASETSD_H_") typedef signed int LONG32; typedef signed __int64 LONG64; cpp_quote("#endif") @@ -37,7 +37,7 @@ cpp_quote("#endif") cpp_quote("#ifndef _WINDEF_H") typedef unsigned int UINT; cpp_quote("#endif") -cpp_quote("#ifndef _BASETSD_H") +cpp_quote("#ifndef _BASETSD_H_") typedef unsigned char UINT8; typedef unsigned short UINT16; typedef unsigned int UINT32; @@ -46,7 +46,7 @@ cpp_quote("#endif") cpp_quote("#ifndef _WINNT_") typedef unsigned long ULONG, *PULONG; cpp_quote("#endif") -cpp_quote("#ifndef _BASETSD_H") +cpp_quote("#ifndef _BASETSD_H_") typedef unsigned int ULONG32; typedef unsigned __int64 ULONG64; cpp_quote("#endif") @@ -77,7 +77,7 @@ cpp_quote("#endif") cpp_quote("#ifndef _WINNT_") typedef BYTE BOOLEAN, *PBOOLEAN; cpp_quote("#endif") -cpp_quote("#ifndef _BASETSD_H") +cpp_quote("#ifndef _BASETSD_H_") #ifdef _WIN64 typedef __int64 LONG_PTR; typedef unsigned __int64 ULONG_PTR; diff --git a/reactos/include/reactos/msvctarget.h b/reactos/include/reactos/msvctarget.h index 9514d907455..6b2241f3016 100644 --- a/reactos/include/reactos/msvctarget.h +++ b/reactos/include/reactos/msvctarget.h @@ -1,19 +1,52 @@ -#ifndef _MSC_VER -#ifndef __GNUC__ -#error Unsupported compiler -#endif + +#pragma once /* translate GCC target defines to MS equivalents. */ -#if defined(__i686__) && !defined(_M_IX86) -#define _M_IX86 600 -#undef __i686__ -#elif defined(__i586__) && !defined(_M_IX86) -#define _M_IX86 500 -#undef __i586__ -#elif defined(__i486__) && !defined(_M_IX86) -#define _M_IX86 400 -#undef __i486__ -#elif defined(__i386__) && !defined(_M_IX86) -#define _M_IX86 300 -#endif +#if defined(__i386__) + #if !defined(_X86_) + #define _X86_ 1 + #endif + #if !defined(_M_IX86) + #define _M_IX86 1 + #endif +#elif defined(__x86_64__) || defined(__x86_64) + #if !defined(_AMD64_) + #define _AMD64_ 1 + #endif + #if !defined(_M_AMD64) + #define _M_AMD64 1 + #endif + #if !defined(_M_X64) + #define _M_X64 1 + #endif +#elif defined(__arm__) + #if !defined(_ARM_) + #define _ARM_ 1 + #endif + #if !defined(_M_ARM) + #define _M_ARM 1 + #endif +#elif defined(__ia64__) + #if !defined(_IA64_) + #define _IA64_ 1 + #endif + #if !defined(_M_IA64) + #define _M_IA64 1 + #endif +#elif defined(__alpha__) + #if !defined(_ALPHA_) + #define _ALPHA_ 1 + #endif + #if !defined(_M_ALPHA) + #define _M_ALPHA 1 + #endif +#elif defined(__powerpc__) + #if !defined(_PPC_) + #define _PPC_ 1 + #endif + #if !defined(_M_PPC) + #define _M_PPC 1 + #endif +#else +#error Unknown architecture #endif From 717f8cb0e9c32c7871744dac278205b803cbb50d Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Fri, 30 May 2014 00:09:55 +0000 Subject: [PATCH 104/232] [INCLUDE] - ntdef.h: Add #pragma once, include guiddef.h and kernelspecs.h, slightly cleanup the nameless struct/union stuff, fix PVOID64 definition, fix definition of UNALIGNED on ARM, stop checking for too outdated MSVC versions (< 1300), start using ULONG32 instead of ULONG at some places (this is to be able to share the code with winnt.h later), add missing PROBE_ALIGNMENT32, DECLSPEC_NOTHROW, DECLSPEC_UUID, DECLSPEC_NOVTABLE, DECLSPEC_DEPRECATED, DECLSPEC_DEPRECATED_DDK, simpify HANDLE definition. svn path=/trunk/; revision=63500 --- reactos/include/psdk/ntdef.h | 166 +++++++++++++++++++++++------------ 1 file changed, 108 insertions(+), 58 deletions(-) diff --git a/reactos/include/psdk/ntdef.h b/reactos/include/psdk/ntdef.h index 4b419969be3..9cd018b6cda 100644 --- a/reactos/include/psdk/ntdef.h +++ b/reactos/include/psdk/ntdef.h @@ -20,25 +20,23 @@ #ifndef _NTDEF_ #define _NTDEF_ +#pragma once /* Dependencies */ #include #include +#include #include #include #include +#include // FIXME: Shouldn't be included! #include #include -/* Helper macro to enable gcc's extension. */ -#ifndef __GNU_EXTENSION -#ifdef __GNUC__ -#define __GNU_EXTENSION __extension__ -#else -#define __GNU_EXTENSION -#endif +#ifdef __cplusplus +extern "C" { #endif /* Pseudo Modifiers for Input Parameters */ @@ -63,16 +61,11 @@ #define CRITICAL #endif +// FIXME: deprecated #ifndef FAR #define FAR #endif - -/* Defines the "size" of an any-size array */ -#ifndef ANYSIZE_ARRAY -#define ANYSIZE_ARRAY 1 -#endif - /* Constant modifier */ #ifndef CONST #define CONST const @@ -93,26 +86,22 @@ #endif #endif /* NULL */ +/* Defines the "size" of an any-size array */ +#ifndef ANYSIZE_ARRAY +#define ANYSIZE_ARRAY 1 +#endif -// -// FIXME -// We should use the -fms-extensions compiler flag for gcc, -// and clean up the mess. -// -#ifndef __ANONYMOUS_DEFINED -#define __ANONYMOUS_DEFINED - -#ifndef NONAMELESSUNION +/* Helper macro to enable gcc's extension. */ +#ifndef __GNU_EXTENSION #ifdef __GNUC__ -#define _ANONYMOUS_UNION __GNU_EXTENSION -#define _ANONYMOUS_STRUCT __GNU_EXTENSION -#elif defined(__WATCOMC__) || defined(_MSC_VER) -#define _ANONYMOUS_UNION -#define _ANONYMOUS_STRUCT -#endif /* __GNUC__/__WATCOMC__ */ -#endif /* NONAMELESSUNION */ +#define __GNU_EXTENSION __extension__ +#else +#define __GNU_EXTENSION +#endif +#endif -#ifndef _ANONYMOUS_UNION +#ifndef DUMMYUNIONNAME +#if defined(NONAMELESSUNION)// || !defined(_MSC_EXTENSIONS) #define _ANONYMOUS_UNION #define _UNION_NAME(x) x #define DUMMYUNIONNAME u @@ -124,7 +113,9 @@ #define DUMMYUNIONNAME6 u6 #define DUMMYUNIONNAME7 u7 #define DUMMYUNIONNAME8 u8 +#define DUMMYUNIONNAME9 u9 #else +#define _ANONYMOUS_UNION __GNU_EXTENSION #define _UNION_NAME(x) #define DUMMYUNIONNAME #define DUMMYUNIONNAME1 @@ -135,9 +126,12 @@ #define DUMMYUNIONNAME6 #define DUMMYUNIONNAME7 #define DUMMYUNIONNAME8 -#endif +#define DUMMYUNIONNAME9 +#endif /* NONAMELESSUNION */ +#endif /* !DUMMYUNIONNAME */ -#ifndef _ANONYMOUS_STRUCT +#ifndef DUMMYSTRUCTNAME +#if defined(NONAMELESSUNION)// || !defined(_MSC_EXTENSIONS) #define _ANONYMOUS_STRUCT #define _STRUCT_NAME(x) x #define DUMMYSTRUCTNAME s @@ -147,6 +141,7 @@ #define DUMMYSTRUCTNAME4 s4 #define DUMMYSTRUCTNAME5 s5 #else +#define _ANONYMOUS_STRUCT __GNU_EXTENSION #define _STRUCT_NAME(x) #define DUMMYSTRUCTNAME #define DUMMYSTRUCTNAME1 @@ -154,11 +149,14 @@ #define DUMMYSTRUCTNAME3 #define DUMMYSTRUCTNAME4 #define DUMMYSTRUCTNAME5 +#endif /* NONAMELESSUNION */ +#endif /* DUMMYSTRUCTNAME */ + +#if defined(STRICT_GS_ENABLED) +#pragma strict_gs_check(push, on) #endif -#endif /* __ANONYMOUS_DEFINED */ - -#if defined(_M_MRX000) || defined(_M_ALPHA) || defined(_M_PPC) || defined(_M_IA64) || defined(_M_AMD64) +#if defined(_M_MRX000) || defined(_M_ALPHA) || defined(_M_PPC) || defined(_M_IA64) || defined(_M_AMD64) || defined(_M_ARM) #define ALIGNMENT_MACHINE #define UNALIGNED __unaligned #if defined(_WIN64) @@ -203,7 +201,7 @@ #endif /* Returns the type's alignment */ -#if defined(_MSC_VER) && (_MSC_VER >= 1300) +#if defined(_MSC_VER) #define TYPE_ALIGNMENT(t) __alignof(t) #else #define TYPE_ALIGNMENT(t) FIELD_OFFSET(struct { char x; t test; }, test) @@ -217,8 +215,14 @@ #error "unknown architecture" #endif +#if defined(_WIN64) +#define PROBE_ALIGNMENT32(_s) TYPE_ALIGNMENT(ULONG) +#endif + /* Calling Conventions */ -#if defined(_M_IX86) +#if defined(_MANAGED) +#define FASTCALL __stdcall +#elif defined(_M_IX86) #define FASTCALL __fastcall #else #define FASTCALL @@ -234,15 +238,23 @@ #define DECLSPEC_NORETURN __declspec(noreturn) #ifndef DECLSPEC_ADDRSAFE -#if (_MSC_VER >= 1200) && (defined(_M_ALPHA) || defined(_M_AXP64)) +#if defined(_MSC_VER) && (defined(_M_ALPHA) || defined(_M_AXP64)) #define DECLSPEC_ADDRSAFE __declspec(address_safe) #else #define DECLSPEC_ADDRSAFE #endif #endif /* DECLSPEC_ADDRSAFE */ +#ifndef DECLSPEC_NOTHROW +#if !defined(MIDL_PASS) +#define DECLSPEC_NOTHROW __declspec(nothrow) +#else +#define DECLSPEC_NOTHROW +#endif +#endif + #ifndef NOP_FUNCTION -#if (_MSC_VER >= 1210) +#if defined(_MSC_VER) #define NOP_FUNCTION __noop #else #define NOP_FUNCTION (void)0 @@ -263,16 +275,12 @@ /* Inlines */ #ifndef FORCEINLINE -#if defined(_MSC_VER) && (_MSC_VER >= 1200) +#if defined(_MSC_VER) #define FORCEINLINE __forceinline -#elif defined(_MSC_VER) -#define FORCEINLINE __inline -#else /* __GNUC__ */ -# if ( __MINGW_GNUC_PREREQ(4, 3) && __STDC_VERSION__ >= 199901L) -# define FORCEINLINE extern inline __attribute__((__always_inline__,__gnu_inline__)) -# else -# define FORCEINLINE extern __inline__ __attribute__((__always_inline__)) -# endif +#elif ( __MINGW_GNUC_PREREQ(4, 3) && __STDC_VERSION__ >= 199901L) +# define FORCEINLINE extern inline __attribute__((__always_inline__,__gnu_inline__)) +#else +# define FORCEINLINE extern __inline__ __attribute__((__always_inline__)) #endif #endif /* FORCEINLINE */ @@ -294,10 +302,10 @@ /* Use to specify structure alignment */ #ifndef DECLSPEC_ALIGN -#if defined(_MSC_VER) && (_MSC_VER >= 1300) && !defined(MIDL_PASS) +#if defined(_MSC_VER) && !defined(MIDL_PASS) #define DECLSPEC_ALIGN(x) __declspec(align(x)) #elif defined(__GNUC__) -#define DECLSPEC_ALIGN(x) __attribute__ ((__aligned__ (x))) +#define DECLSPEC_ALIGN(x) __attribute__ ((__aligned__(x))) #else #define DECLSPEC_ALIGN(x) #endif @@ -315,14 +323,55 @@ #define DECLSPEC_CACHEALIGN DECLSPEC_ALIGN(SYSTEM_CACHE_ALIGNMENT_SIZE) #endif +#ifndef DECLSPEC_UUID +#if defined(_MSC_VER) && defined(__cplusplus) +#define DECLSPEC_UUID(x) __declspec(uuid(x)) +#else +#define DECLSPEC_UUID(x) +#endif +#endif + +#ifndef DECLSPEC_NOVTABLE +#if defined(_MSC_VER) && defined(__cplusplus) +#define DECLSPEC_NOVTABLE __declspec(novtable) +#else +#define DECLSPEC_NOVTABLE +#endif +#endif + #ifndef DECLSPEC_SELECTANY -#if (_MSC_VER >= 1100) || defined(__GNUC__) -#define DECLSPEC_SELECTANY __declspec(selectany) +#if defined(_MSC_VER) || defined(__GNUC__) +#define DECLSPEC_SELECTANY __declspec(selectany) #else #define DECLSPEC_SELECTANY #endif #endif +#ifndef DECLSPEC_DEPRECATED +#if (defined(_MSC_VER) || defined(__GNUC__)) && !defined(MIDL_PASS) +#define DECLSPEC_DEPRECATED __declspec(deprecated) +#define DEPRECATE_SUPPORTED +#else +#define DECLSPEC_DEPRECATED +#undef DEPRECATE_SUPPORTED +#endif +#endif + +#ifdef DEPRECATE_DDK_FUNCTIONS +#ifdef _NTDDK_ +#define DECLSPEC_DEPRECATED_DDK DECLSPEC_DEPRECATED +#ifdef DEPRECATE_SUPPORTED +#define PRAGMA_DEPRECATED_DDK 1 +#endif +#else +#define DECLSPEC_DEPRECATED_DDK +#define PRAGMA_DEPRECATED_DDK 1 +#endif +#else +#define DECLSPEC_DEPRECATED_DDK +#define PRAGMA_DEPRECATED_DDK 0 +#endif + /* Use to silence unused variable warnings when it is intentional */ #define UNREFERENCED_PARAMETER(P) {(P)=(P);} #define UNREFERENCED_LOCAL_VARIABLE(L) ((void)(L)) @@ -347,18 +396,15 @@ /* Void Pointers */ typedef void *PVOID; -//typedef void * POINTER_64 PVOID64; -typedef PVOID PVOID64; // FIXME! +typedef void * POINTER_64 PVOID64; /* Handle Type */ +typedef void *HANDLE, **PHANDLE;; #ifdef STRICT -typedef void *HANDLE; -#define DECLARE_HANDLE(n) typedef struct n##__{int i;}*n +#define DECLARE_HANDLE(n) typedef struct n##__{int unused;} *n #else -typedef PVOID HANDLE; #define DECLARE_HANDLE(n) typedef HANDLE n #endif -typedef HANDLE *PHANDLE; /* Upper-Case Versions of Some Standard C Types */ #ifndef VOID @@ -891,4 +937,8 @@ typedef struct _GROUP_AFFINITY { #define LANG_YORUBA 0x6a #define LANG_ZULU 0x35 +#ifdef __cplusplus +} // extern "C" +#endif + #endif /* _NTDEF_ */ From 137dc25b64fdc788d1c9b5515c2740baf29f6f11 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Fri, 30 May 2014 00:30:38 +0000 Subject: [PATCH 105/232] [ASM] - Fix geninc and spec2def to support the MS ARM assembler - Add an MSVC compatible version of kxarm.h - autogenerate ksarm.h with geninc.c - Move some ARM definitions to NDK svn path=/trunk/; revision=63501 --- reactos/include/asm/CMakeLists.txt | 12 +- reactos/include/asm/genincdata.c | 5 +- reactos/include/asm/ksarm.template.h | 105 ++++++++++++ .../internal/arm => include/asm}/kxarm.h | 157 ++++++++++++------ reactos/include/ndk/arm/ketypes.h | 23 +++ reactos/include/reactos/arm/armddk.h | 2 + reactos/ntoskrnl/include/internal/arm/ksarm.h | 146 ---------------- reactos/tools/geninc/geninc.c | 9 +- reactos/tools/spec2def/spec2def.c | 6 + 9 files changed, 261 insertions(+), 204 deletions(-) create mode 100644 reactos/include/asm/ksarm.template.h rename reactos/{ntoskrnl/include/internal/arm => include/asm}/kxarm.h (68%) delete mode 100644 reactos/ntoskrnl/include/internal/arm/ksarm.h diff --git a/reactos/include/asm/CMakeLists.txt b/reactos/include/asm/CMakeLists.txt index e111190e574..2c07cc38184 100644 --- a/reactos/include/asm/CMakeLists.txt +++ b/reactos/include/asm/CMakeLists.txt @@ -11,17 +11,19 @@ else() endif() if(ARCH STREQUAL "i386") - set(_filename ks386) + set(_filename ks386.inc) elseif(ARCH STREQUAL "amd64") - set(_filename ksamd64) + set(_filename ksamd64.inc) +elseif(ARCH STREQUAL "arm") + set(_filename ksarm.h) endif() get_target_property(genincdata_dll genincdata LOCATION) add_custom_command( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${_filename}.inc - COMMAND native-geninc ${genincdata_dll} ${CMAKE_CURRENT_BINARY_DIR}/${_filename}.inc ${OPT_MS} + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${_filename} + COMMAND native-geninc ${genincdata_dll} ${CMAKE_CURRENT_BINARY_DIR}/${_filename} ${OPT_MS} DEPENDS genincdata native-geninc) add_custom_target(asm - DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${_filename}.inc) + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${_filename}) diff --git a/reactos/include/asm/genincdata.c b/reactos/include/asm/genincdata.c index bfd99090104..0824b620869 100644 --- a/reactos/include/asm/genincdata.c +++ b/reactos/include/asm/genincdata.c @@ -74,15 +74,18 @@ __attribute__ ((section(".asmdef"))) ASMGENDATA Table[] = { - +#if defined (_M_IX86) || defined (M_AMD64) /* PORTABLE CONSTANTS ********************************************************/ #include "ksx.template.h" +#endif /* ARCHITECTURE SPECIFIC CONTSTANTS ******************************************/ #ifdef _M_IX86 #include "ks386.template.h" #elif defined(_M_AMD64) #include "ksamd64.template.h" +#elif defined(_M_ARM) +#include "ksarm.template.h" #endif /* End of list */ diff --git a/reactos/include/asm/ksarm.template.h b/reactos/include/asm/ksarm.template.h new file mode 100644 index 00000000000..28533f6e1c7 --- /dev/null +++ b/reactos/include/asm/ksarm.template.h @@ -0,0 +1,105 @@ + +RAW(""), +RAW("#include "), +RAW(""), + +HEADER("CPSR Values"), +CONSTANT(CPSR_THUMB_ENABLE), +CONSTANT(CPSR_FIQ_DISABLE), +CONSTANT(CPSR_IRQ_DISABLE), +CONSTANT(CPSR_USER_MODE), +CONSTANT(CPSR_FIQ_MODE), +CONSTANT(CPSR_IRQ_MODE), +CONSTANT(CPSR_SVC_MODE), +CONSTANT(CPSR_ABORT_MODE), +CONSTANT(CPSR_UND_MODE), +CONSTANT(CPSR_MODES), + +HEADER("C1 Register Values"), +CONSTANT(C1_MMU_CONTROL), +CONSTANT(C1_ALIGNMENT_CONTROL), +CONSTANT(C1_DCACHE_CONTROL), +CONSTANT(C1_ICACHE_CONTROL), +CONSTANT(C1_VECTOR_CONTROL), + +HEADER("Loader Parameter Block Offsets"), +OFFSET(LpbKernelStack, LOADER_PARAMETER_BLOCK, KernelStack), +OFFSET(LpbPanicStack, LOADER_PARAMETER_BLOCK, u.Arm.PanicStack), +OFFSET(LpbInterruptStack, LOADER_PARAMETER_BLOCK, u.Arm.InterruptStack), + +HEADER("Trap Frame offsets"), +OFFSET(TrDbgArgMark, KTRAP_FRAME, DbgArgMark), +OFFSET(TrR0, KTRAP_FRAME, R0), +OFFSET(TrR1, KTRAP_FRAME, R1), +OFFSET(TrR2, KTRAP_FRAME, R2), +OFFSET(TrR3, KTRAP_FRAME, R3), +OFFSET(TrR4, KTRAP_FRAME, R4), +OFFSET(TrR5, KTRAP_FRAME, R5), +OFFSET(TrR6, KTRAP_FRAME, R6), +OFFSET(TrR7, KTRAP_FRAME, R7), +OFFSET(TrR8, KTRAP_FRAME, R8), +OFFSET(TrR9, KTRAP_FRAME, R9), +OFFSET(TrR10, KTRAP_FRAME, R10), +OFFSET(TrR11, KTRAP_FRAME, R11), +OFFSET(TrR12, KTRAP_FRAME, R12), +OFFSET(TrUserSp, KTRAP_FRAME, UserSp), +OFFSET(TrUserLr, KTRAP_FRAME, UserLr), +OFFSET(TrSvcSp, KTRAP_FRAME, SvcSp), +OFFSET(TrSvcLr, KTRAP_FRAME, SvcLr), +OFFSET(TrPc, KTRAP_FRAME, Pc), +OFFSET(TrSpsr, KTRAP_FRAME, Spsr), +SIZE(TrapFrameLength, KTRAP_FRAME), + +HEADER("Exception Frame offsets"), +OFFSET(ExR4, KEXCEPTION_FRAME, R4), +OFFSET(ExR5, KEXCEPTION_FRAME, R5), +OFFSET(ExR6, KEXCEPTION_FRAME, R6), +OFFSET(ExR7, KEXCEPTION_FRAME, R7), +OFFSET(ExR8, KEXCEPTION_FRAME, R8), +OFFSET(ExR9, KEXCEPTION_FRAME, R9), +OFFSET(ExR10, KEXCEPTION_FRAME, R10), +OFFSET(ExR11, KEXCEPTION_FRAME, R11), +OFFSET(ExLr, KEXCEPTION_FRAME, Lr), +OFFSET(ExSpsr, KEXCEPTION_FRAME, Psr), // name? +SIZE(ExceptionFrameLength, KEXCEPTION_FRAME), + +HEADER("PCR"), +CONSTANTX(KiPcr, 0xFFFFF000), + +HEADER("PCR Offsets"), +//OFFSET(PcCurrentIrql, KPCR, CurrentIrql), + +HEADER("KTHREAD Offsets"), +OFFSET(ThKernelStack, KTHREAD, KernelStack), + +HEADER("CONTEXT Offsets"), +OFFSET(CsContextFlags, CONTEXT, ContextFlags), +OFFSET(CsR0, CONTEXT, R0), +OFFSET(CsR1, CONTEXT, R1), +OFFSET(CsR2, CONTEXT, R2), +OFFSET(CsR3, CONTEXT, R3), +OFFSET(CsR4, CONTEXT, R4), +OFFSET(CsR5, CONTEXT, R5), +OFFSET(CsR6, CONTEXT, R6), +OFFSET(CsR7, CONTEXT, R7), +OFFSET(CsR8, CONTEXT, R8), +OFFSET(CsR9, CONTEXT, R9), +OFFSET(CsR10, CONTEXT, R10), +OFFSET(CsR11, CONTEXT, R11), +OFFSET(CsR12, CONTEXT, R12), +OFFSET(CsSp, CONTEXT, Sp), +OFFSET(CsLr, CONTEXT, Lr), +OFFSET(CsPc, CONTEXT, Pc), +OFFSET(CsPsr, CONTEXT, Psr), + +CONSTANT(CONTEXT_FULL), + +HEADER("DebugService Control Types"), +CONSTANT(BREAKPOINT_BREAK), +CONSTANT(BREAKPOINT_PRINT), +CONSTANT(BREAKPOINT_PROMPT), +CONSTANT(BREAKPOINT_LOAD_SYMBOLS), +CONSTANT(BREAKPOINT_UNLOAD_SYMBOLS), +CONSTANT(BREAKPOINT_COMMAND_STRING), + + diff --git a/reactos/ntoskrnl/include/internal/arm/kxarm.h b/reactos/include/asm/kxarm.h similarity index 68% rename from reactos/ntoskrnl/include/internal/arm/kxarm.h rename to reactos/include/asm/kxarm.h index cede87c6763..50928e75815 100644 --- a/reactos/ntoskrnl/include/internal/arm/kxarm.h +++ b/reactos/include/asm/kxarm.h @@ -1,22 +1,103 @@ + +#ifdef _MSC_VER + + /* Globals */ + GBLS AreaName + GBLS FuncName + GBLS PrologName + GBLS FuncEndName +AreaName SETS "|.text|" + + MACRO + TEXTAREA + AREA |.text|,ALIGN=2,CODE,READONLY +AreaName SETS "|.text|" + MEND + + MACRO + NESTED_ENTRY $Name +FuncName SETS "$Name" +PrologName SETS "$Name":CC:"_Prolog" +FuncEndName SETS "$Name":CC:"_end" + AREA |.pdata|,ALIGN=2,PDATA + ALIGN 2 + EXPORT $FuncName [FUNC] +$FuncName + ROUT + MEND + + MACRO + PROLOG_END +$PrologName + MEND + + MACRO + ENTRY_END $Name +$FuncEndName + MEND + + MACRO + LEAF_ENTRY $Name +FuncName SETS "$Name" +PrologName SETS "Invalid Prolog" +FuncEndName SETS "$Name":CC:"_end" + ALIGN 2 + EXPORT $FuncName [FUNC] +$FuncName + ROUT + MEND + + MACRO + LEAF_END $Name +$FuncEndName + MEND + + MACRO + TRAP_PROLOG $Abort + fixme + MEND + + MACRO + SYSCALL_PROLOG $Abort + fixme + MEND + + MACRO + TRAP_EPILOG $SystemCall + fixme + MEND + +#else + +/* Compatibility define */ +#define EQU .equ + +.macro IMPORT Name + /* Ignore */ +.endm + .macro TEXTAREA .section .text, "rx" .align 2 .endm .macro NESTED_ENTRY Name - .global &Name +FuncName .equ &Name +PrologName .equ &Name&_Prolog +FuncEndName .equ &Name&_end + .global &FuncName .align 2 - .func &Name - &Name: + .func &FuncName + &FuncName: .endm -.macro PROLOG_END Name - prolog_&Name: +.macro PROLOG_END + \PrologName: .endm .macro ENTRY_END Name - end_&Name: + &FuncEndName: .endfunc .endm @@ -30,57 +111,39 @@ sub lr, lr, #4 .endif - // // Save the bottom 4 registers - // stmdb sp, {r0-r3} - - // + // Save the abort lr, sp, spsr, cpsr - // mov r0, lr mov r1, sp mrs r2, cpsr mrs r3, spsr - - // + // Switch to SVC mode - // bic r2, r2, #CPSR_MODES orr r2, r2, #CPSR_SVC_MODE msr cpsr_c, r2 - - // + // Save the SVC sp before we modify it - // mov r2, sp - - // + // Make space for the trap frame - // sub sp, sp, #TrapFrameLength - - // + // Save abt32 state - // str r0, [sp, #TrPc] str lr, [sp, #TrSvcLr] - str r2, [sp, #TrSvcSp] - - // + str r2, [sp, #TrSvcSp] + // Restore the saved SPSR - // msr spsr_all, r3 - - // + // Restore our 4 registers - // ldmdb r1, {r0-r3} - - // + // Build trap frame // FIXME: Change to stmdb later - // str r0, [sp, #TrR0] str r1, [sp, #TrR1] str r2, [sp, #TrR2] @@ -102,17 +165,13 @@ ldr r0, =0xBADB0D00 str r0, [sp, #TrDbgArgMark] .endm - + .macro SYSCALL_PROLOG - // // Make space for the trap frame - // sub sp, sp, #TrapFrameLength - - // + // Build trap frame // FIXME: Change to stmdb later - // str r0, [sp, #TrR0] str r1, [sp, #TrR1] str r2, [sp, #TrR2] @@ -136,26 +195,20 @@ ldr r0, =0xBADB0D00 str r0, [sp, #TrDbgArgMark] .endm - + .macro TRAP_EPILOG SystemCall - // // ASSERT(TrapFrame->DbgArgMark == 0xBADB0D00) - // ldr r0, [sp, #TrDbgArgMark] ldr r1, =0xBADB0D00 cmp r0, r1 bne 1f - - // + // Get the SPSR and restore it - // ldr r0, [sp, #TrSpsr] msr spsr_all, r0 - - // + // Restore the registers // FIXME: Use LDMIA later - // mov r0, sp add r0, r0, #TrUserSp ldm r0, {sp, lr}^ @@ -172,10 +225,8 @@ ldr r10, [sp, #TrR10] ldr r11, [sp, #TrR11] ldr r12, [sp, #TrR12] - - // + // Restore program execution state - // .if \SystemCall ldr lr, [sp, #TrPc] add sp, sp, #TrapFrameLength @@ -187,3 +238,7 @@ 1: b . .endm + +#endif + + diff --git a/reactos/include/ndk/arm/ketypes.h b/reactos/include/ndk/arm/ketypes.h index 04b0ebc045e..9ecdd43fd92 100644 --- a/reactos/include/ndk/arm/ketypes.h +++ b/reactos/include/ndk/arm/ketypes.h @@ -27,6 +27,29 @@ extern "C" { // Dependencies // +// +// CPSR Values +// +#define CPSR_THUMB_ENABLE 0x20 +#define CPSR_FIQ_DISABLE 0x40 +#define CPSR_IRQ_DISABLE 0x80 +#define CPSR_USER_MODE 0x10 +#define CPSR_FIQ_MODE 0x11 +#define CPSR_IRQ_MODE 0x12 +#define CPSR_SVC_MODE 0x13 +#define CPSR_ABORT_MODE 0x17 +#define CPSR_UND_MODE 0x1B +#define CPSR_MODES 0x1F + +// +// C1 Register Values +// +#define C1_MMU_CONTROL 0x01 +#define C1_ALIGNMENT_CONTROL 0x02 +#define C1_DCACHE_CONTROL 0x04 +#define C1_ICACHE_CONTROL 0x1000 +#define C1_VECTOR_CONTROL 0x2000 + // // IPI Types // diff --git a/reactos/include/reactos/arm/armddk.h b/reactos/include/reactos/arm/armddk.h index 8def891f857..814f64b82af 100644 --- a/reactos/include/reactos/arm/armddk.h +++ b/reactos/include/reactos/arm/armddk.h @@ -228,6 +228,7 @@ extern volatile struct _KSYSTEM_TIME KeTickCount; #define RESULT_NEGATIVE 1 #define RESULT_POSITIVE 2 +#if 0 DECLSPEC_IMPORT VOID __fastcall @@ -240,6 +241,7 @@ KIRQL __fastcall KfAcquireSpinLock( IN OUT ULONG_PTR* SpinLock); +#endif #ifndef _WINNT_ // diff --git a/reactos/ntoskrnl/include/internal/arm/ksarm.h b/reactos/ntoskrnl/include/internal/arm/ksarm.h deleted file mode 100644 index 91adf08672e..00000000000 --- a/reactos/ntoskrnl/include/internal/arm/ksarm.h +++ /dev/null @@ -1,146 +0,0 @@ -/* - * PROJECT: ReactOS Kernel - * LICENSE: BSD - See COPYING.ARM in the top level directory - * FILE: ntoskrnl/include/internal/arm/ksarm.h - * PURPOSE: Definitions and offsets for ARM Assembly and C code - * PROGRAMMERS: ReactOS Portable Systems Group - */ - -#ifdef _ASM_ - -/* - * CPSR Values - */ -.equ CPSR_THUMB_ENABLE, 0x20 -.equ CPSR_FIQ_DISABLE, 0x40 -.equ CPSR_IRQ_DISABLE, 0x80 -.equ CPSR_USER_MODE, 0x10 -.equ CPSR_FIQ_MODE, 0x11 -.equ CPSR_IRQ_MODE, 0x12 -.equ CPSR_SVC_MODE, 0x13 -.equ CPSR_ABORT_MODE, 0x17 -.equ CPSR_UND_MODE, 0x1B -.equ CPSR_MODES, 0x1F - - -/* - * C1 Register Values - */ -.equ C1_MMU_CONTROL, 0x01 -.equ C1_ALIGNMENT_CONTROL, 0x02 -.equ C1_DCACHE_CONTROL, 0x04 -.equ C1_ICACHE_CONTROL, 0x1000 -.equ C1_VECTOR_CONTROL, 0x2000 - -/* - * Loader Parameter Block Offsets - */ -.equ LpbKernelStack, 0x18 -.equ LpbPanicStack, 0x74 -.equ LpbInterruptStack, 0x5C - -/* - * Trap Frame offsets - */ -.equ TrDbgArgMark, 0x00 -.equ TrR0, 0x04 -.equ TrR1, 0x08 -.equ TrR2, 0x0C -.equ TrR3, 0x10 -.equ TrR4, 0x14 -.equ TrR5, 0x18 -.equ TrR6, 0x1C -.equ TrR7, 0x20 -.equ TrR8, 0x24 -.equ TrR9, 0x28 -.equ TrR10, 0x2C -.equ TrR11, 0x30 -.equ TrR12, 0x34 -.equ TrUserSp, 0x38 -.equ TrUserLr, 0x3C -.equ TrSvcSp, 0x40 -.equ TrSvcLr, 0x44 -.equ TrPc, 0x48 -.equ TrSpsr, 0x4C -.equ TrapFrameLength, (23 * 0x04) - -/* - * Exception Frame offsets - */ -.equ ExR4, 0x00 -.equ ExR5, 0x04 -.equ ExR6, 0x08 -.equ ExR7, 0x0C -.equ ExR8, 0x10 -.equ ExR9, 0x14 -.equ ExR10, 0x18 -.equ ExR11, 0x1C -.equ ExLr, 0x20 -.equ ExSpsr, 0x24 -.equ ExceptionFrameLength, (10 * 0x04) - -/* - * PCR - */ -.equ KiPcr, 0xFFFFF000 - -/* - * PCR Offsets - */ -.equ PcCurrentIrql, 0x14C - -/* - * KTHREAD Offsets - */ -.equ ThKernelStack, 0x20 - -/* - * CONTEXT Offsets - */ -.equ CONTEXT_FULL, 0x43 -.equ CsContextFlags, 0x00 -.equ CsR0, 0x04 -.equ CsR1, 0x08 -.equ CsR2, 0x0C -.equ CsR3, 0x10 -.equ CsR4, 0x14 -.equ CsR5, 0x18 -.equ CsR6, 0x1C -.equ CsR7, 0x20 -.equ CsR8, 0x24 -.equ CsR9, 0x28 -.equ CsR10, 0x2C -.equ CsR11, 0x30 -.equ CsR12, 0x34 -.equ CsSp, 0x38 -.equ CsLr, 0x3C -.equ CsPc, 0x40 -.equ CsPsr, 0x44 - -/* - * DebugService Control Types - */ -.equ BREAKPOINT_BREAK, 0 -.equ BREAKPOINT_PRINT, 1 -.equ BREAKPOINT_PROMPT, 2 -.equ BREAKPOINT_LOAD_SYMBOLS, 3 -.equ BREAKPOINT_UNLOAD_SYMBOLS, 4 -.equ BREAKPOINT_COMMAND_STRING, 5 - -#else - -/* - * CPSR Values - */ -#define CPSR_THUMB_ENABLE 0x20 -#define CPSR_FIQ_DISABLE 0x40 -#define CPSR_IRQ_DISABLE 0x80 -#define CPSR_USER_MODE 0x10 -#define CPSR_FIQ_MODE 0x11 -#define CPSR_IRQ_MODE 0x12 -#define CPSR_SVC_MODE 0x13 -#define CPSR_ABORT_MODE 0x17 -#define CPSR_UND_MODE 0x1B -#define CPSR_MODES 0x1F - -#endif diff --git a/reactos/tools/geninc/geninc.c b/reactos/tools/geninc/geninc.c index fccc7a58fb0..6133b5cc408 100644 --- a/reactos/tools/geninc/geninc.c +++ b/reactos/tools/geninc/geninc.c @@ -188,7 +188,14 @@ int main(int argc, char* argv[]) case TYPE_CONSTANT: if (ms_format) { - fprintf(output, "%s equ 0%"PRIx64"h\n", data.Name, data.Value); + if (Machine == IMAGE_FILE_MACHINE_ARMNT) + { + fprintf(output, "%s equ 0x%"PRIx64"\n", data.Name, data.Value); + } + else + { + fprintf(output, "%s equ 0%"PRIx64"h\n", data.Name, data.Value); + } } else { diff --git a/reactos/tools/spec2def/spec2def.c b/reactos/tools/spec2def/spec2def.c index c7e907ccc57..1d11a97df41 100644 --- a/reactos/tools/spec2def/spec2def.c +++ b/reactos/tools/spec2def/spec2def.c @@ -258,7 +258,13 @@ OutputHeader_asmstub(FILE *file, char *libname) fprintf(file, "; File generated automatically, do not edit! \n\n"); if (giArch == ARCH_X86) + { fprintf(file, ".586\n.model flat\n"); + } + else if (giArch == ARCH_ARM) + { + fprintf(file, "#include \n TEXTAREA\n"); + } fprintf(file, ".code\n"); } From 4dc4711006e2e407968bbae3e6c2b83ad4b44c51 Mon Sep 17 00:00:00 2001 From: James Tabor Date: Fri, 30 May 2014 12:38:04 +0000 Subject: [PATCH 106/232] [Win32k] - Fix removing menus and submenus. Dedicated to David Quintana and the New Explorer and Shell team. svn path=/trunk/; revision=63502 --- reactos/win32ss/include/ntuser.h | 3 ++ reactos/win32ss/user/ntuser/menu.c | 63 ++++++++++++++++++------------ 2 files changed, 42 insertions(+), 24 deletions(-) diff --git a/reactos/win32ss/include/ntuser.h b/reactos/win32ss/include/ntuser.h index 20813bbfe1c..e0f8bdee00b 100644 --- a/reactos/win32ss/include/ntuser.h +++ b/reactos/win32ss/include/ntuser.h @@ -306,6 +306,9 @@ C_ASSERT(sizeof(CLIENTINFO) <= sizeof(((PTEB)0)->Win32ClientInfo)); /* Menu Item fType. */ #define MFT_RTOL 0x6000 +/* Menu Item fState. */ +#define MFS_HBMMENUBMP 0x20000000 + typedef struct tagITEM { UINT fType; diff --git a/reactos/win32ss/user/ntuser/menu.c b/reactos/win32ss/user/ntuser/menu.c index 223c337ce08..61f7d455898 100644 --- a/reactos/win32ss/user/ntuser/menu.c +++ b/reactos/win32ss/user/ntuser/menu.c @@ -178,15 +178,7 @@ PMENU FASTCALL VerifyMenu(PMENU pMenu) BOOL IntDestroyMenu( PMENU pMenu, BOOL bRecurse, BOOL RemoveFromProcess) { - /* DestroyMenu should not destroy system menu popup owner */ - if ((pMenu->fFlags & (MNF_POPUP | MNF_SYSSUBMENU)) == MNF_POPUP && pMenu->hWnd) - { - //PWND pWnd = ValidateHwndNoErr(pMenu->hWnd); - ERR("FIXME Pop up menu window thing'ie\n"); - - //co_UserDestroyWindow( pWnd ); - //pMenu->hWnd = 0; - } + PMENU SubMenu; if (pMenu->rgItems) /* recursively destroy submenus */ { @@ -194,33 +186,46 @@ BOOL IntDestroyMenu( PMENU pMenu, BOOL bRecurse, BOOL RemoveFromProcess) ITEM *item = pMenu->rgItems; for (i = pMenu->cItems; i > 0; i--, item++) { - pMenu->cItems--; //// I hate recursion logic! (jt) 4/2014. See r63028 comment for IntDeleteMenuItems. + SubMenu = item->spSubMenu; + item->spSubMenu = NULL; + + /* Remove Item Text */ FreeMenuText(pMenu,item); - if (bRecurse && item->spSubMenu)//VerifyMenu(item->spSubMenu)) + + /* Remove Item Bitmap and set it for this process */ + if (item->hbmp && !(item->fState & MFS_HBMMENUBMP)) { - IntDestroyMenu(item->spSubMenu, bRecurse, RemoveFromProcess); - item->spSubMenu = NULL; + GreSetObjectOwner(item->hbmp, GDI_OBJ_HMGR_POWNED); + item->hbmp = NULL; + } + + /* Remove Item submenu */ + if (bRecurse && SubMenu)//VerifyMenu(SubMenu)) + { + /* Release submenu since it was referenced when inserted */ + IntReleaseMenuObject(SubMenu); + IntDestroyMenuObject(SubMenu, bRecurse, RemoveFromProcess); } } + /* Free the Item */ DesktopHeapFree(pMenu->head.rpdesk, pMenu->rgItems ); pMenu->rgItems = NULL; - pMenu->cItems = 0; //// What ever~! + pMenu->cItems = 0; } return TRUE; } BOOL FASTCALL -IntDestroyMenuObject(PMENU Menu, - BOOL bRecurse, BOOL RemoveFromProcess) +IntDestroyMenuObject(PMENU Menu, BOOL bRecurse, BOOL RemoveFromProcess) { if(Menu) { PWND Window; - + /* Remove all menu items */ IntDestroyMenu( Menu, bRecurse, RemoveFromProcess); - if(RemoveFromProcess) + if (RemoveFromProcess) { RemoveEntryList(&Menu->ListEntry); } @@ -234,9 +239,17 @@ IntDestroyMenuObject(PMENU Menu, if (Window) { Window->IDMenu = 0; + + /* DestroyMenu should not destroy system menu popup owner */ + if ((Menu->fFlags & (MNF_POPUP | MNF_SYSSUBMENU)) == MNF_POPUP) + { + // Should we check it to see if it has Class? + ERR("FIXME Pop up menu window thing'ie\n"); + //co_UserDestroyWindow( Window ); + //Menu->hWnd = 0; + } } } - //UserDereferenceObject(Menu); ret = UserDeleteObject(Menu->head.h, TYPE_MENU); if (!ret) { // Make sure it is really dead or just marked for deletion. @@ -338,7 +351,7 @@ PITEM FASTCALL MENU_FindItem( PMENU *pmenu, UINT *nPos, UINT wFlags ) BOOL FASTCALL IntRemoveMenuItem( PMENU pMenu, UINT nPos, UINT wFlags, BOOL bRecurse ) { - PITEM item, NewItems; + PITEM item; TRACE("(menu=%p pos=%04x flags=%04x)\n",pMenu, nPos, wFlags); if (!(item = MENU_FindItem( &pMenu, &nPos, wFlags ))) return FALSE; @@ -364,10 +377,7 @@ IntRemoveMenuItem( PMENU pMenu, UINT nPos, UINT wFlags, BOOL bRecurse ) item++; nPos++; } - NewItems = DesktopHeapAlloc(pMenu->head.rpdesk, pMenu->cItems * sizeof(ITEM)); - RtlCopyMemory(NewItems, pMenu->rgItems, pMenu->cItems * sizeof(ITEM)); - DesktopHeapFree(pMenu->head.rpdesk, pMenu->rgItems); - pMenu->rgItems = NewItems; + pMenu->rgItems = DesktopHeapReAlloc(pMenu->head.rpdesk, pMenu->rgItems, pMenu->cItems * sizeof(ITEM)); } return TRUE; } @@ -819,6 +829,10 @@ IntSetMenuItemInfo(PMENU MenuObject, PITEM MenuItem, PROSMENUITEMINFO lpmii, PUN if(lpmii->fMask & MIIM_BITMAP) { MenuItem->hbmp = lpmii->hbmpItem; + if (MenuItem->hbmp <= HBMMENU_POPUP_MINIMIZE && MenuItem->hbmp >= HBMMENU_CALLBACK) + MenuItem->fState |= MFS_HBMMENUBMP; + else + MenuItem->fState &= ~MFS_HBMMENUBMP; } if(lpmii->fMask & MIIM_CHECKMARKS) { @@ -858,6 +872,7 @@ IntSetMenuItemInfo(PMENU MenuObject, PITEM MenuItem, PROSMENUITEMINFO lpmii, PUN ERR("Pop Up Menu Double Trouble!\n"); SubMenuObject = IntCreateMenu(&hMenu, FALSE); // It will be marked. if (!SubMenuObject) return FALSE; + IntReleaseMenuObject(SubMenuObject); // This will be referenced again after insertion. circref = TRUE; } if ( MENU_depth( SubMenuObject, 0) > MAXMENUDEPTH ) From 64fcc42ee57bbf8a21f13d4611460c636bcfe06d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Fri, 30 May 2014 20:40:02 +0000 Subject: [PATCH 107/232] [NTOS:CM] - Add a DPRINT1 in CmCheckRegistry because it is unimplemented, and give the CheckFlags value to CmCheckRegistry, when it is called in CmpInitializeHive. - Give the CheckFlags value to CmpInitializeHive, when it is called in CmpInitHiveFromFile. - Really mention that the CmCreateRootNode call is a HACK for ROS. svn path=/trunk/; revision=63505 --- reactos/ntoskrnl/config/cmcheck.c | 1 + reactos/ntoskrnl/config/cminit.c | 3 ++- reactos/ntoskrnl/config/cmsysini.c | 4 ++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/reactos/ntoskrnl/config/cmcheck.c b/reactos/ntoskrnl/config/cmcheck.c index d166ff48d60..4172dddc332 100644 --- a/reactos/ntoskrnl/config/cmcheck.c +++ b/reactos/ntoskrnl/config/cmcheck.c @@ -22,5 +22,6 @@ CmCheckRegistry(IN PCMHIVE RegistryHive, IN ULONG Flags) { /* FIXME: HACK! */ + DPRINT1("CmCheckRegistry(0x%p, %lu) is UNIMPLEMENTED!\n", RegistryHive, Flags); return 0; } diff --git a/reactos/ntoskrnl/config/cminit.c b/reactos/ntoskrnl/config/cminit.c index 8689e8eab5d..147ba73d993 100644 --- a/reactos/ntoskrnl/config/cminit.c +++ b/reactos/ntoskrnl/config/cminit.c @@ -214,7 +214,8 @@ CmpInitializeHive(OUT PCMHIVE *RegistryHive, (OperationType == HINIT_MAPFILE)) { /* Verify integrity */ - if (CmCheckRegistry((PCMHIVE)Hive, TRUE)) + ULONG CheckStatus = CmCheckRegistry(Hive, CheckFlags); + if (CheckStatus != 0) { /* Cleanup allocations and fail */ ExFreePoolWithTag(Hive->FlusherLock, TAG_CM); diff --git a/reactos/ntoskrnl/config/cmsysini.c b/reactos/ntoskrnl/config/cmsysini.c index 45242d28388..f0a7d7e5a0f 100644 --- a/reactos/ntoskrnl/config/cmsysini.c +++ b/reactos/ntoskrnl/config/cmsysini.c @@ -358,7 +358,7 @@ CmpInitHiveFromFile(IN PCUNICODE_STRING HiveName, LogHandle, NULL, HiveName, - 0); + CheckFlags); if (!NT_SUCCESS(Status)) { /* Fail */ @@ -370,7 +370,7 @@ CmpInitHiveFromFile(IN PCUNICODE_STRING HiveName, /* Success, return hive */ *Hive = NewHive; - /* ROS: Init root key cell and prepare the hive */ + /* HACK: ROS: Init root key cell and prepare the hive */ if (Operation == HINIT_CREATE) CmCreateRootNode(&NewHive->Hive, L""); /* Duplicate the hive name */ From a5a69f46e6709eff413bebdb303556d862ffce9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Fri, 30 May 2014 21:47:22 +0000 Subject: [PATCH 108/232] [NTOS:CM] Replace a hardcoded value with something more readable. svn path=/trunk/; revision=63506 --- reactos/ntoskrnl/config/cmkcbncb.c | 2 +- reactos/ntoskrnl/config/cmparse.c | 4 ++-- reactos/ntoskrnl/config/cmsysini.c | 6 +++--- reactos/ntoskrnl/include/internal/cm.h | 5 +++++ 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/reactos/ntoskrnl/config/cmkcbncb.c b/reactos/ntoskrnl/config/cmkcbncb.c index 77e4e83312b..199102264a0 100644 --- a/reactos/ntoskrnl/config/cmkcbncb.c +++ b/reactos/ntoskrnl/config/cmkcbncb.c @@ -1164,7 +1164,7 @@ CmpFlushNotifiesOnKeyBodyList(IN PCM_KEY_CONTROL_BLOCK Kcb, { /* Get the key body */ KeyBody = CONTAINING_RECORD(NextEntry, CM_KEY_BODY, KeyBodyList); - ASSERT(KeyBody->Type == '20yk'); + ASSERT(KeyBody->Type == CM_KEY_BODY_TYPE); /* Check for notifications */ if (KeyBody->NotifyBlock) diff --git a/reactos/ntoskrnl/config/cmparse.c b/reactos/ntoskrnl/config/cmparse.c index acf5e2416fe..67e2f3b2408 100644 --- a/reactos/ntoskrnl/config/cmparse.c +++ b/reactos/ntoskrnl/config/cmparse.c @@ -286,7 +286,7 @@ CmpDoCreateChild(IN PHHIVE Hive, /* Setup the key body */ KeyBody = (PCM_KEY_BODY)(*Object); - KeyBody->Type = '20yk'; + KeyBody->Type = CM_KEY_BODY_TYPE; KeyBody->KeyControlBlock = NULL; /* Check if we had a class */ @@ -691,7 +691,7 @@ CmpDoOpen(IN PHHIVE Hive, /* Get the key body and fill it out */ KeyBody = (PCM_KEY_BODY)(*Object); KeyBody->KeyControlBlock = Kcb; - KeyBody->Type = '20yk'; + KeyBody->Type = CM_KEY_BODY_TYPE; KeyBody->ProcessID = PsGetCurrentProcessId(); KeyBody->NotifyBlock = NULL; diff --git a/reactos/ntoskrnl/config/cmsysini.c b/reactos/ntoskrnl/config/cmsysini.c index f0a7d7e5a0f..4201fd2f6a7 100644 --- a/reactos/ntoskrnl/config/cmsysini.c +++ b/reactos/ntoskrnl/config/cmsysini.c @@ -129,7 +129,7 @@ CmpDeleteKeyObject(PVOID DeletedObject) CmpLockRegistry(); /* Make sure this is a valid key body */ - if (KeyBody->Type == '20yk') + if (KeyBody->Type == CM_KEY_BODY_TYPE) { /* Get the KCB */ Kcb = KeyBody->KeyControlBlock; @@ -166,7 +166,7 @@ CmpCloseKeyObject(IN PEPROCESS Process OPTIONAL, if (SystemHandleCount > 1) return; /* Make sure we're a valid key body */ - if (KeyBody->Type == '20yk') + if (KeyBody->Type == CM_KEY_BODY_TYPE) { /* Don't do anything if we don't have a notify block */ if (!KeyBody->NotifyBlock) return; @@ -1056,7 +1056,7 @@ CmpCreateRegistryRoot(VOID) /* Initialize the object */ RootKey->KeyControlBlock = Kcb; - RootKey->Type = '20yk'; + RootKey->Type = CM_KEY_BODY_TYPE; RootKey->NotifyBlock = NULL; RootKey->ProcessID = PsGetCurrentProcessId(); diff --git a/reactos/ntoskrnl/include/internal/cm.h b/reactos/ntoskrnl/include/internal/cm.h index d4d7c9e5156..90c6fd15ac5 100644 --- a/reactos/ntoskrnl/include/internal/cm.h +++ b/reactos/ntoskrnl/include/internal/cm.h @@ -60,6 +60,11 @@ #define CM_KCB_INVALID_CACHED_INFO 0x40 #define CM_KCB_READ_ONLY_KEY 0x80 +// +// CM_KEY_BODY Types +// +#define CM_KEY_BODY_TYPE 0x6B793032 + // // CM_KEY_VALUE Types // From 2996e28ecd6bcdd09285ee05a872eaa7443a8cef Mon Sep 17 00:00:00 2001 From: Aleksandar Andrejevic Date: Sat, 31 May 2014 01:14:02 +0000 Subject: [PATCH 109/232] [NTDLL_APITESTS] Add tests for NtSaveKey. svn path=/trunk/; revision=63507 --- rostests/apitests/ntdll/CMakeLists.txt | 1 + rostests/apitests/ntdll/NtSaveKey.c | 131 +++++++++++++++++++++++++ rostests/apitests/ntdll/testlist.c | 2 + 3 files changed, 134 insertions(+) create mode 100644 rostests/apitests/ntdll/NtSaveKey.c diff --git a/rostests/apitests/ntdll/CMakeLists.txt b/rostests/apitests/ntdll/CMakeLists.txt index b0a13e45b4a..8891df5f712 100644 --- a/rostests/apitests/ntdll/CMakeLists.txt +++ b/rostests/apitests/ntdll/CMakeLists.txt @@ -11,6 +11,7 @@ list(APPEND SOURCE NtProtectVirtualMemory.c NtQuerySystemEnvironmentValue.c NtQueryVolumeInformationFile.c + NtSaveKey.c RtlBitmap.c RtlDetermineDosPathNameType.c RtlDoesFileExists.c diff --git a/rostests/apitests/ntdll/NtSaveKey.c b/rostests/apitests/ntdll/NtSaveKey.c new file mode 100644 index 00000000000..cea42251423 --- /dev/null +++ b/rostests/apitests/ntdll/NtSaveKey.c @@ -0,0 +1,131 @@ +/* + * PROJECT: ReactOS API Tests + * LICENSE: GPLv2+ - See COPYING in the top level directory + * PURPOSE: Test for NtSaveKey + * PROGRAMMERS: Aleksandar Andrejevic + */ + +#include + +#define WIN32_NO_STATUS +#include +#include +#include +#include + +static +NTSTATUS +OpenRegistryKeyHandle(PHANDLE KeyHandle, + ACCESS_MASK AccessMask, + PWCHAR RegistryPath) +{ + UNICODE_STRING KeyName; + OBJECT_ATTRIBUTES Attributes; + + RtlInitUnicodeString(&KeyName, RegistryPath); + InitializeObjectAttributes(&Attributes, + &KeyName, + OBJ_CASE_INSENSITIVE, + NULL, + NULL); + + return NtOpenKey(KeyHandle, AccessMask, &Attributes); +} + +START_TEST(NtSaveKey) +{ + NTSTATUS Status; + HANDLE KeyHandle; + HANDLE FileHandle; + BOOLEAN OldPrivilegeStatus; + + /* Open the file */ + FileHandle = CreateFileW(L"saved_key.dat", + GENERIC_READ | GENERIC_WRITE, + 0, + NULL, + CREATE_ALWAYS, + FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, + NULL); + if (FileHandle == INVALID_HANDLE_VALUE) + { + skip("CreateFileW failed with error: %lu\n", GetLastError()); + return; + } + + /* Try saving HKEY_LOCAL_MACHINE\Hardware */ + Status = OpenRegistryKeyHandle(&KeyHandle, KEY_READ, L"\\Registry\\Machine\\Hardware"); + if (!NT_SUCCESS(Status)) + { + skip("NtOpenKey failed with status: 0x%08lX\n", Status); + NtClose(FileHandle); + return; + } + + Status = NtSaveKey(KeyHandle, FileHandle); + ok_ntstatus(Status, STATUS_PRIVILEGE_NOT_HELD); + + NtClose(KeyHandle); + + /* Set the SeBackupPrivilege */ + Status = RtlAdjustPrivilege(SE_BACKUP_PRIVILEGE, + TRUE, + FALSE, + &OldPrivilegeStatus); + if (!NT_SUCCESS(Status)) + { + skip("RtlAdjustPrivilege failed with status: 0x%08lX\n", (ULONG)Status); + NtClose(FileHandle); + return; + } + + /* Try saving HKEY_LOCAL_MACHINE\Hardware again */ + Status = OpenRegistryKeyHandle(&KeyHandle, KEY_READ, L"\\Registry\\Machine\\Hardware"); + if (!NT_SUCCESS(Status)) + { + skip("NtOpenKey failed with status: 0x%08lX\n", Status); + goto Cleanup; + } + + Status = NtSaveKey(KeyHandle, FileHandle); + ok_ntstatus(Status, STATUS_SUCCESS); + + NtClose(KeyHandle); + + /* Try saving HKEY_LOCAL_MACHINE */ + Status = OpenRegistryKeyHandle(&KeyHandle, KEY_READ, L"\\Registry\\Machine"); + if (!NT_SUCCESS(Status)) + { + skip("NtOpenKey failed with status: 0x%08lX\n", Status); + goto Cleanup; + } + + Status = NtSaveKey(KeyHandle, FileHandle); + ok_ntstatus(Status, STATUS_ACCESS_DENIED); + + NtClose(KeyHandle); + + /* Try saving HKEY_USERS */ + Status = OpenRegistryKeyHandle(&KeyHandle, KEY_READ, L"\\Registry\\User"); + if (!NT_SUCCESS(Status)) + { + skip("NtOpenKey failed with status: 0x%08lX\n", Status); + goto Cleanup; + } + + Status = NtSaveKey(KeyHandle, FileHandle); + ok_ntstatus(Status, STATUS_ACCESS_DENIED); + + NtClose(KeyHandle); + +Cleanup: + + /* Restore the SeBackupPrivilege */ + RtlAdjustPrivilege(SE_BACKUP_PRIVILEGE, + OldPrivilegeStatus, + FALSE, + &OldPrivilegeStatus); + + /* Close the file handle */ + NtClose(FileHandle); +} diff --git a/rostests/apitests/ntdll/testlist.c b/rostests/apitests/ntdll/testlist.c index 40bec87cde6..0a4a8466089 100644 --- a/rostests/apitests/ntdll/testlist.c +++ b/rostests/apitests/ntdll/testlist.c @@ -14,6 +14,7 @@ extern void func_NtMutant(void); extern void func_NtProtectVirtualMemory(void); extern void func_NtQuerySystemEnvironmentValue(void); extern void func_NtQueryVolumeInformationFile(void); +extern void func_NtSaveKey(void); extern void func_NtSystemInformation(void); extern void func_RtlBitmap(void); extern void func_RtlDetermineDosPathNameType(void); @@ -43,6 +44,7 @@ const struct test winetest_testlist[] = { "NtProtectVirtualMemory", func_NtProtectVirtualMemory }, { "NtQuerySystemEnvironmentValue", func_NtQuerySystemEnvironmentValue }, { "NtQueryVolumeInformationFile", func_NtQueryVolumeInformationFile }, + { "NtSaveKey", func_NtSaveKey}, { "NtSystemInformation", func_NtSystemInformation }, { "RtlBitmapApi", func_RtlBitmap }, { "RtlDetermineDosPathNameType", func_RtlDetermineDosPathNameType }, From a31b680c53e160be9e32a733928cfeb601017dc5 Mon Sep 17 00:00:00 2001 From: Aleksandar Andrejevic Date: Sat, 31 May 2014 01:17:00 +0000 Subject: [PATCH 110/232] [NTOSKRNL] Don't allow saving keys which are located directly in the master hive. svn path=/trunk/; revision=63508 --- reactos/ntoskrnl/config/cmapi.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/reactos/ntoskrnl/config/cmapi.c b/reactos/ntoskrnl/config/cmapi.c index e52f572b0ed..a75f0286e18 100644 --- a/reactos/ntoskrnl/config/cmapi.c +++ b/reactos/ntoskrnl/config/cmapi.c @@ -2307,6 +2307,13 @@ CmSaveKey(IN PCM_KEY_CONTROL_BLOCK Kcb, goto Cleanup; } + if (Kcb->KeyHive == &CmiVolatileHive->Hive) + { + /* Keys that are directly in the master hive can't be saved */ + Status = STATUS_ACCESS_DENIED; + goto Cleanup; + } + /* Create a new hive that will hold the key */ Status = CmpInitializeHive(&KeyHive, HINIT_CREATE, From 6f830f27bb58b9abd5e8f0ce622e3fe37e1f1248 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Sat, 31 May 2014 08:32:54 +0000 Subject: [PATCH 111/232] [NET] - Fix an off-by-one bug in the ACCOUNTS command. - Improve input validation for the ACCOUNTS command. - Add the /help option to the CONTINUE command. - Add version resource and start to move texts into resources. svn path=/trunk/; revision=63509 --- .../applications/network/net/CMakeLists.txt | 4 +- .../applications/network/net/cmdAccounts.c | 71 ++++++++++++++----- .../applications/network/net/cmdContinue.c | 12 +++- reactos/base/applications/network/net/help.c | 6 +- .../applications/network/net/lang/en-US.rc | 11 +++ reactos/base/applications/network/net/main.c | 18 +++++ reactos/base/applications/network/net/net.h | 8 +++ reactos/base/applications/network/net/net.rc | 17 +++++ .../base/applications/network/net/resource.h | 6 ++ 9 files changed, 129 insertions(+), 24 deletions(-) create mode 100644 reactos/base/applications/network/net/lang/en-US.rc create mode 100644 reactos/base/applications/network/net/net.rc create mode 100644 reactos/base/applications/network/net/resource.h diff --git a/reactos/base/applications/network/net/CMakeLists.txt b/reactos/base/applications/network/net/CMakeLists.txt index 377065ebadf..a740d3a06de 100644 --- a/reactos/base/applications/network/net/CMakeLists.txt +++ b/reactos/base/applications/network/net/CMakeLists.txt @@ -12,8 +12,8 @@ list(APPEND SOURCE help.c net.h) -add_executable(net ${SOURCE}) +add_executable(net ${SOURCE} net.rc) set_module_type(net win32cui UNICODE) -add_importlibs(net advapi32 netapi32 msvcrt kernel32 ntdll) +add_importlibs(net advapi32 netapi32 msvcrt kernel32 user32 ntdll) add_pch(net net.h SOURCE) add_cd_file(TARGET net DESTINATION reactos/system32 FOR all) diff --git a/reactos/base/applications/network/net/cmdAccounts.c b/reactos/base/applications/network/net/cmdAccounts.c index eb91c85550e..456ac4c791e 100644 --- a/reactos/base/applications/network/net/cmdAccounts.c +++ b/reactos/base/applications/network/net/cmdAccounts.c @@ -18,33 +18,34 @@ cmdAccounts( PUSER_MODALS_INFO_1 Info1 = NULL; PUSER_MODALS_INFO_3 Info3 = NULL; NT_PRODUCT_TYPE ProductType; - LPWSTR p, perr; + LPWSTR p; + LPWSTR endptr; DWORD ParamErr; ULONG value; INT i; BOOL Modified = FALSE; // BOOL Domain = FALSE; NET_API_STATUS Status; + INT result = 0; - for (i = 3; i < argc; i++) + for (i = 2; i < argc; i++) { - if (wcsicmp(argv[i], L"help") == 0) + if (_wcsicmp(argv[i], L"help") == 0) { /* Print short syntax help */ - puts("NET ACCOUNTS [/FORCELOGOFF:{Minutes|NO}] [/MINPWLEN:Length]"); - puts(" [/MAXPWAGE:{Days|UNLIMITED}] [/MINPWAGE:Days]"); - puts(" [/UNIQUEPW:Count] [/DOMAIN]"); + PrintResourceString(IDS_ACCOUNTS_SYNTAX); return 0; } - if (wcsicmp(argv[i], L"/help") == 0) + if (_wcsicmp(argv[i], L"/help") == 0) { - /* FIXME: Print long help text*/ + /* Print full help text*/ + PrintResourceString(IDS_ACCOUNTS_HELP); return 0; } /* - if (wcsicmp(argv[i], L"/domain") == 0) + if (_wcsicmp(argv[i], L"/domain") == 0) { Domain = TRUE; } @@ -55,7 +56,7 @@ cmdAccounts( if (Status != NERR_Success) goto done; - for (i = 3; i < argc; i++) + for (i = 2; i < argc; i++) { if (_wcsnicmp(argv[i], L"/forcelogoff:", 13) == 0) { @@ -67,7 +68,13 @@ cmdAccounts( } else { - value = wcstoul(p, &perr, 10); + value = wcstoul(p, &endptr, 10); + if (*endptr != 0) + { + printf("You entered an invalid value for the /FORCELOGOFF option.\n"); + result = 1; + goto done; + } Info0->usrmod0_force_logoff = value * 60; Modified = TRUE; @@ -76,7 +83,14 @@ cmdAccounts( else if (_wcsnicmp(argv[i], L"/minpwlen:", 10) == 0) { p = &argv[i][10]; - value = wcstoul(p, &perr, 10); + value = wcstoul(p, &endptr, 10); + if (*endptr != 0) + { + printf("You entered an invalid value for the /MINPWLEN option.\n"); + result = 1; + goto done; + } + Info0->usrmod0_min_passwd_len = value; Modified = TRUE; } @@ -91,7 +105,13 @@ cmdAccounts( } else { - value = wcstoul(p, &perr, 10); + value = wcstoul(p, &endptr, 10); + if (*endptr != 0) + { + printf("You entered an invalid value for the /MAXPWAGE option.\n"); + result = 1; + goto done; + } Info0->usrmod0_max_passwd_age = value * 86400; Modified = TRUE; @@ -100,7 +120,13 @@ cmdAccounts( else if (_wcsnicmp(argv[i], L"/minpwage:", 10) == 0) { p = &argv[i][10]; - value = wcstoul(p, &perr, 10); + value = wcstoul(p, &endptr, 10); + if (*endptr != 0) + { + printf("You entered an invalid value for the /MINPWAGE option.\n"); + result = 1; + goto done; + } Info0->usrmod0_min_passwd_age = value * 86400; Modified = TRUE; @@ -108,7 +134,13 @@ cmdAccounts( else if (_wcsnicmp(argv[i], L"/uniquepw:", 10) == 0) { p = &argv[i][10]; - value = wcstoul(p, &perr, 10); + value = wcstoul(p, &endptr, 10); + if (*endptr != 0) + { + printf("You entered an invalid value for the /UNIQUEPW option.\n"); + result = 1; + goto done; + } Info0->usrmod0_password_hist_len = value; Modified = TRUE; @@ -149,7 +181,12 @@ cmdAccounts( else printf("%lu\n", Info0->usrmod0_password_hist_len); - printf("Lockout threshold: %lu\n", Info3->usrmod3_lockout_threshold); + printf("Lockout threshold: "); + if (Info3->usrmod3_lockout_threshold == 0) + printf("Never\n"); + else + printf("%lu\n", Info3->usrmod3_lockout_threshold); + printf("Lockout duration (in minutes): %lu\n", Info3->usrmod3_lockout_duration / 60); printf("Lockout observation window (in minutes): %lu\n", Info3->usrmod3_lockout_observation_window / 60); @@ -186,7 +223,7 @@ done: if (Info0 != NULL) NetApiBufferFree(Info0); - return 0; + return result; } /* EOF */ diff --git a/reactos/base/applications/network/net/cmdContinue.c b/reactos/base/applications/network/net/cmdContinue.c index 7f23fa5777a..f36111af2c9 100644 --- a/reactos/base/applications/network/net/cmdContinue.c +++ b/reactos/base/applications/network/net/cmdContinue.c @@ -15,13 +15,23 @@ INT cmdContinue(INT argc, WCHAR **argv) SC_HANDLE hService = NULL; SERVICE_STATUS status; INT nError = 0; + INT i; if (argc != 3) { - puts("Usage: NET CONTINUE "); + PrintResourceString(IDS_CONTINUE_SYNTAX); return 1; } + for (i = 2; i < argc; i++) + { + if (_wcsicmp(argv[i], L"/help") == 0) + { + PrintResourceString(IDS_CONTINUE_HELP); + return 1; + } + } + hManager = OpenSCManager(NULL, SERVICES_ACTIVE_DATABASE, SC_MANAGER_ENUMERATE_SERVICE); if (hManager == NULL) { diff --git a/reactos/base/applications/network/net/help.c b/reactos/base/applications/network/net/help.c index 089f4a64f20..46061566801 100644 --- a/reactos/base/applications/network/net/help.c +++ b/reactos/base/applications/network/net/help.c @@ -18,8 +18,7 @@ INT cmdHelp(INT argc, WCHAR **argv) if (_wcsicmp(argv[2],L"ACCOUNTS")==0) { - puts("ACCOUNTS"); - puts("help text"); + PrintResourceString(IDS_ACCOUNTS_HELP); return 0; } @@ -39,8 +38,7 @@ INT cmdHelp(INT argc, WCHAR **argv) if (_wcsicmp(argv[2],L"CONTINUE")==0) { - puts("CONTINUE"); - puts("help text"); + PrintResourceString(IDS_CONTINUE_HELP); return 0; } diff --git a/reactos/base/applications/network/net/lang/en-US.rc b/reactos/base/applications/network/net/lang/en-US.rc new file mode 100644 index 00000000000..99cd546c185 --- /dev/null +++ b/reactos/base/applications/network/net/lang/en-US.rc @@ -0,0 +1,11 @@ +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +STRINGTABLE +BEGIN + IDS_ACCOUNTS_SYNTAX "Usage:\nNET ACCOUNTS [/FORCELOGOFF:{Minutes|NO}] [/MINPWLEN:Length]\n\ + [/MAXPWAGE:{Days|UNLIMITED}] [/MINPWAGE:Days]\n\ + [/UNIQUEPW:Count] [/DOMAIN]\n" + IDS_ACCOUNTS_HELP "ACCOUNTS\nhelp text" + IDS_CONTINUE_SYNTAX "Usage:\nNET CONTINUE " + IDS_CONTINUE_HELP "CONTINUE\nhelp text" +END diff --git a/reactos/base/applications/network/net/main.c b/reactos/base/applications/network/net/main.c index ad702517e39..b0ae7a9c897 100644 --- a/reactos/base/applications/network/net/main.c +++ b/reactos/base/applications/network/net/main.c @@ -9,6 +9,8 @@ #include "net.h" +#define MAX_BUFFER_SIZE 4096 + typedef struct _COMMAND { WCHAR *name; @@ -43,6 +45,22 @@ COMMAND cmds[] = {NULL, NULL} }; + +VOID +PrintResourceString( + INT resID, + ...) +{ + WCHAR szMsgBuf[MAX_BUFFER_SIZE]; + va_list arg_ptr; + + va_start(arg_ptr, resID); + LoadStringW(GetModuleHandle(NULL), resID, szMsgBuf, MAX_BUFFER_SIZE); + vwprintf(szMsgBuf, arg_ptr); + va_end(arg_ptr); +} + + int wmain(int argc, WCHAR **argv) { PCOMMAND cmdptr; diff --git a/reactos/base/applications/network/net/net.h b/reactos/base/applications/network/net/net.h index 91af9d06a96..93cf15d81c1 100644 --- a/reactos/base/applications/network/net/net.h +++ b/reactos/base/applications/network/net/net.h @@ -13,6 +13,7 @@ #include #include +#include #include #include #include @@ -20,6 +21,13 @@ #include #include +#include "resource.h" + +VOID +PrintResourceString( + INT resID, + ...); + VOID help(VOID); INT unimplemented(INT argc, WCHAR **argv); diff --git a/reactos/base/applications/network/net/net.rc b/reactos/base/applications/network/net/net.rc new file mode 100644 index 00000000000..ef6ba03f034 --- /dev/null +++ b/reactos/base/applications/network/net/net.rc @@ -0,0 +1,17 @@ +#include + +#include "resource.h" + +LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL + +#define REACTOS_STR_FILE_DESCRIPTION "ReactOS Net Command" +#define REACTOS_STR_INTERNAL_NAME "net" +#define REACTOS_STR_ORIGINAL_FILENAME "net.exe" +#include + +/* UTF-8 */ +#pragma code_page(65001) + +#ifdef LANGUAGE_EN_US + #include "lang/en-US.rc" +#endif diff --git a/reactos/base/applications/network/net/resource.h b/reactos/base/applications/network/net/resource.h new file mode 100644 index 00000000000..54d5913ddcf --- /dev/null +++ b/reactos/base/applications/network/net/resource.h @@ -0,0 +1,6 @@ +#pragma once + +#define IDS_ACCOUNTS_SYNTAX 100 +#define IDS_ACCOUNTS_HELP 101 +#define IDS_CONTINUE_SYNTAX 102 +#define IDS_CONTINUE_HELP 103 \ No newline at end of file From bf476c3c1af6b429593349ecfd8e41555798329b Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sat, 31 May 2014 14:24:26 +0000 Subject: [PATCH 112/232] [NET] * Fix MSVC build. svn path=/trunk/; revision=63510 --- reactos/base/applications/network/net/resource.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/base/applications/network/net/resource.h b/reactos/base/applications/network/net/resource.h index 54d5913ddcf..e19726bc195 100644 --- a/reactos/base/applications/network/net/resource.h +++ b/reactos/base/applications/network/net/resource.h @@ -3,4 +3,4 @@ #define IDS_ACCOUNTS_SYNTAX 100 #define IDS_ACCOUNTS_HELP 101 #define IDS_CONTINUE_SYNTAX 102 -#define IDS_CONTINUE_HELP 103 \ No newline at end of file +#define IDS_CONTINUE_HELP 103 From 96f0120d3afb5c1f12a19f1a0339c63502e17077 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sat, 31 May 2014 14:51:36 +0000 Subject: [PATCH 113/232] [GECKO] * Introduce a faster and smaller build without dependency on exports that do not exist in native. [MSVCRT] * Get rid of some exports that do not exist in native. CORE-8174 svn path=/trunk/; revision=63511 --- reactos/dll/cpl/appwiz/addons.c | 2 +- reactos/dll/win32/msvcrt/msvcrt.spec | 10 ---------- 2 files changed, 1 insertion(+), 11 deletions(-) diff --git a/reactos/dll/cpl/appwiz/addons.c b/reactos/dll/cpl/appwiz/addons.c index 12b847298ea..e103bc5e7df 100644 --- a/reactos/dll/cpl/appwiz/addons.c +++ b/reactos/dll/cpl/appwiz/addons.c @@ -30,7 +30,7 @@ #ifdef __i386__ #define ARCH_STRING "x86" -#define GECKO_SHA "b4923c0565e6cbd20075a0d4119ce3b48424f962" +#define GECKO_SHA "f6984567b24fef7b0be79837e04d3a913af1a88c" #else #define ARCH_STRING "" #define GECKO_SHA "???" diff --git a/reactos/dll/win32/msvcrt/msvcrt.spec b/reactos/dll/win32/msvcrt/msvcrt.spec index 3d2a545996c..ab80f4284f6 100644 --- a/reactos/dll/win32/msvcrt/msvcrt.spec +++ b/reactos/dll/win32/msvcrt/msvcrt.spec @@ -894,13 +894,3 @@ # Functions not exported in native dll: @ cdecl -arch=i386 -norelay __CxxFrameHandler3(ptr ptr ptr ptr) __CxxFrameHandler -# Gecko -@ cdecl _controlfp_s(ptr long long) -@ varargs _snwprintf_s(ptr long long ptr) -@ cdecl _vsnprintf_s(ptr long long str ptr) -@ cdecl _vsnwprintf_s(ptr long long wstr ptr) -@ cdecl _wcslwr_s(wstr long) -@ cdecl _wfopen_s(ptr wstr wstr) -@ cdecl fopen_s(ptr str str) -@ cdecl strtok_s(ptr str ptr) -@ varargs swprintf_s(ptr long wstr) From 4289bcee6407f7fcf290229a2c465a7cc3a646a2 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sat, 31 May 2014 15:29:10 +0000 Subject: [PATCH 114/232] [HOST] Try to fix some host warnings. svn path=/trunk/; revision=63512 --- reactos/lib/cmlib/hivewrt.c | 4 ++-- reactos/tools/geninc/geninc.c | 9 +++------ reactos/tools/log2lines/cmd.c | 16 ++++++++-------- reactos/tools/log2lines/match.c | 8 ++++---- reactos/tools/obj2bin/obj2bin.c | 12 ++++++------ 5 files changed, 23 insertions(+), 26 deletions(-) diff --git a/reactos/lib/cmlib/hivewrt.c b/reactos/lib/cmlib/hivewrt.c index 330ff81f0ff..a0e529f6ea0 100644 --- a/reactos/lib/cmlib/hivewrt.c +++ b/reactos/lib/cmlib/hivewrt.c @@ -14,8 +14,8 @@ HvpWriteLog( PHHIVE RegistryHive) { ULONG FileOffset; - ULONG BufferSize; - ULONG BitmapSize; + UINT BufferSize; + UINT BitmapSize; PUCHAR Buffer; PUCHAR Ptr; ULONG BlockIndex; diff --git a/reactos/tools/geninc/geninc.c b/reactos/tools/geninc/geninc.c index 6133b5cc408..295f2cfe8b8 100644 --- a/reactos/tools/geninc/geninc.c +++ b/reactos/tools/geninc/geninc.c @@ -5,19 +5,16 @@ #include #include #include +#include #define IMAGE_FILE_MACHINE_I386 0x014c #define IMAGE_FILE_MACHINE_AMD64 0x8664 #define IMAGE_FILE_MACHINE_ARMNT 0x01c4 -#ifdef _WIN32 +#ifdef _MSC_VER #define PRIx64 "I64x" -typedef unsigned __int16 uint16_t; -typedef unsigned __int32 uint32_t; -typedef unsigned __int64 uint64_t; #else -#include -#define PRIx64 "llx" +#include #define _stricmp strcasecmp #endif diff --git a/reactos/tools/log2lines/cmd.c b/reactos/tools/log2lines/cmd.c index ca7afaa8749..8fd80bd859b 100644 --- a/reactos/tools/log2lines/cmd.c +++ b/reactos/tools/log2lines/cmd.c @@ -20,7 +20,7 @@ * is inserted, so the string looks right on the console but still * contains the original string, plus other garbage: */ -static char +static char *backSpaceEdit(char *s) { char c; @@ -58,7 +58,7 @@ handle_switch(FILE *outFile, int *sw, char *arg, char *desc) *sw = x; changed = 1; } - } + } if (desc) { esclog(outFile, "%s is %d (%s)\n", desc, *sw, changed ? "changed":"unchanged"); @@ -90,14 +90,14 @@ handle_switch_str(FILE *outFile, char *sw, char *arg, char *desc) changed = 1; } } - } + } if (desc) { esclog(outFile, "%s is \"%s\" (%s)\n", desc, sw, changed ? "changed":"unchanged"); if (!arg) esclog(outFile, "(readonly)\n"); } - + return changed; } @@ -132,14 +132,14 @@ handle_switch_pstr(FILE *outFile, char **psw, char *arg, char *desc) } } } - } + } if (desc) { esclog(outFile, "%s is \"%s\" (%s)\n", desc, *psw, changed ? "changed":"unchanged"); if (!arg) esclog(outFile, "(readonly)\n"); } - + return changed; } @@ -155,7 +155,7 @@ handle_address_cmd(FILE *outFile, char *arg) if(( s = strchr(arg, ':') )) { *s = ' '; - if ( (cnt = sscanf(arg,"%20s %lx", Image, &Offset)) == 2) + if ( (cnt = sscanf(arg,"%20s %x", Image, &Offset)) == 2) { if (( plm = entry_lookup(&cache, Image) )) { @@ -292,7 +292,7 @@ handle_escape_cmd(FILE *outFile, char *Line, char *path, char *LineOut) { memset(&summ, 0, sizeof(SUMM)); esclog(outFile, "Statistics cleared\n"); - } + } else stat_print(outFile, &summ); break; diff --git a/reactos/tools/log2lines/match.c b/reactos/tools/log2lines/match.c index 256a8b71902..c0bc98bcf41 100644 --- a/reactos/tools/log2lines/match.c +++ b/reactos/tools/log2lines/match.c @@ -32,8 +32,8 @@ static int match_mod(FILE *outFile, char *Line, int processed) { static int state = 0; char Image[NAMESIZE]; - DWORD Base; - DWORD Size; + UINT Base; + UINT Size; PLIST_MEMBER plm; int cnt; @@ -48,13 +48,13 @@ static int match_mod(FILE *outFile, char *Line, int processed) switch (state) { case 1: - if ( (cnt = sscanf(Line,"%lx %lx %20s", &Base, &Size, Image)) == 3 ) + if ( (cnt = sscanf(Line,"%x %x %20s", &Base, &Size, Image)) == 3 ) { if (( plm = entry_lookup(&cache, Image) )) { plm->RelBase = Base; plm->Size = Size; - l2l_dbg(1, "Relocated: %s %08x -> %08x\n", Image, plm->ImageBase, plm->RelBase); + l2l_dbg(1, "Relocated: %s %p -> %p\n", Image, (void*)plm->ImageBase, (void*)plm->RelBase); } return 0; } diff --git a/reactos/tools/obj2bin/obj2bin.c b/reactos/tools/obj2bin/obj2bin.c index 88c6e95d724..34e596f48fb 100644 --- a/reactos/tools/obj2bin/obj2bin.c +++ b/reactos/tools/obj2bin/obj2bin.c @@ -52,8 +52,8 @@ RelocateSection( break; default: - printf("Unknown relocatation type %d, address 0x%lx\n", - pReloc->Type, pReloc->VirtualAddress); + printf("Unknown relocatation type %u, address 0x%x\n", + pReloc->Type, (unsigned)pReloc->VirtualAddress); } pReloc++; @@ -99,7 +99,7 @@ int main(int argc, char *argv[]) if (!pData) { fclose(pSourceFile); - fprintf(stderr, "Failed to allocate %ld bytes\n", nFileSize); + fprintf(stderr, "Failed to allocate %lu bytes\n", nFileSize); return -3; } @@ -108,7 +108,7 @@ int main(int argc, char *argv[]) { free(pData); fclose(pSourceFile); - fprintf(stderr, "Failed to read %ld bytes from source file\n", nFileSize); + fprintf(stderr, "Failed to read %lu bytes from source file\n", nFileSize); return -4; } @@ -147,8 +147,8 @@ int main(int argc, char *argv[]) { free(pData); fclose(pDestFile); - fprintf(stderr, "Failed to write %ld bytes to destination file\n", - pSectionHeader->SizeOfRawData); + fprintf(stderr, "Failed to write %u bytes to destination file\n", + (unsigned int)pSectionHeader->SizeOfRawData); return -6; } From 4a7d9e2a5c1a7e7baf4d20232cfa72c81fa093f4 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sat, 31 May 2014 15:34:21 +0000 Subject: [PATCH 115/232] [CMLIB] Fix build (and warnings) svn path=/trunk/; revision=63513 --- reactos/lib/cmlib/hivewrt.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/reactos/lib/cmlib/hivewrt.c b/reactos/lib/cmlib/hivewrt.c index a0e529f6ea0..61108065a38 100644 --- a/reactos/lib/cmlib/hivewrt.c +++ b/reactos/lib/cmlib/hivewrt.c @@ -14,8 +14,8 @@ HvpWriteLog( PHHIVE RegistryHive) { ULONG FileOffset; - UINT BufferSize; - UINT BitmapSize; + UINT32 BufferSize; + UINT32 BitmapSize; PUCHAR Buffer; PUCHAR Ptr; ULONG BlockIndex; @@ -42,7 +42,7 @@ HvpWriteLog( BufferSize = HV_LOG_HEADER_SIZE + sizeof(ULONG) + BitmapSize; BufferSize = ROUND_UP(BufferSize, HV_BLOCK_SIZE); - DPRINT("Bitmap size %lu buffer size: %lu\n", BitmapSize, BufferSize); + DPRINT("Bitmap size %u buffer size: %u\n", BitmapSize, BufferSize); Buffer = RegistryHive->Allocate(BufferSize, TRUE, TAG_CM); if (Buffer == NULL) From 461f47c1d1fbeae5c4f4262c62145ee423603a8b Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sat, 31 May 2014 15:44:45 +0000 Subject: [PATCH 116/232] [WINE] Try to fix some warnings in wine tests svn path=/trunk/; revision=63514 --- reactos/include/reactos/wine/exception.h | 12 +++++++++--- reactos/include/reactos/wine/test.h | 4 ++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/reactos/include/reactos/wine/exception.h b/reactos/include/reactos/wine/exception.h index 611316b50e0..5a5e7f7e9dd 100644 --- a/reactos/include/reactos/wine/exception.h +++ b/reactos/include/reactos/wine/exception.h @@ -25,10 +25,16 @@ extern "C" { #define EXCEPTION_VM86_PICRETURN 0x80000112 #ifndef _RTLTYPES_H -typedef EXCEPTION_DISPOSITION (*PEXCEPTION_HANDLER) - (struct _EXCEPTION_RECORD*, void*, struct _CONTEXT*, void*); - struct _EXCEPTION_REGISTRATION_RECORD; + +typedef +DWORD +(*PEXCEPTION_HANDLER)( + struct _EXCEPTION_RECORD*, + struct _EXCEPTION_REGISTRATION_RECORD *, + struct _CONTEXT*, + struct _EXCEPTION_REGISTRATION_RECORD**); + typedef struct _EXCEPTION_REGISTRATION_RECORD EXCEPTION_REGISTRATION_RECORD, *PEXCEPTION_REGISTRATION_RECORD; struct _EXCEPTION_REGISTRATION_RECORD diff --git a/reactos/include/reactos/wine/test.h b/reactos/include/reactos/wine/test.h index fae1487bbd1..e0253f7ced3 100644 --- a/reactos/include/reactos/wine/test.h +++ b/reactos/include/reactos/wine/test.h @@ -68,7 +68,7 @@ extern LONG winetest_get_failures(void); extern void winetest_add_failures( LONG new_failures ); extern void winetest_wait_child_process( HANDLE process ); -extern const char *wine_dbgstr_wn( const WCHAR *str, int n ); +extern const char *wine_dbgstr_wn( const WCHAR *str, intptr_t n ); extern const char *wine_dbgstr_guid( const GUID *guid ); static inline const char *wine_dbgstr_w( const WCHAR *s ) { return wine_dbgstr_wn( s, -1 ); } @@ -486,7 +486,7 @@ void winetest_wait_child_process( HANDLE process ) } } -const char *wine_dbgstr_wn( const WCHAR *str, int n ) +const char *wine_dbgstr_wn( const WCHAR *str, intptr_t n ) { char *dst, *res; size_t size; From 10a264845d1b4b1a1c8de38523abbb86be7ce097 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sat, 31 May 2014 16:00:05 +0000 Subject: [PATCH 117/232] [ROSTESTS] Silence some warnings, fix compilation of w32kdll with MSVC, give dllexport_test dlls a base address. svn path=/trunk/; revision=63515 --- rostests/apitests/CMakeLists.txt | 2 +- rostests/apitests/w32kdll/CMakeLists.txt | 4 +- .../w32kdll/w32kdll_2k3sp2/CMakeLists.txt | 4 +- .../w32kdll/w32kdll_2k3sp2/sys-stubs.S | 12 + .../w32kdll/w32kdll_2k3sp2/w32ksvc-2k3sp2.h | 669 +++++++++++++++++ .../w32kdll/w32kdll_ros/CMakeLists.txt | 5 +- .../apitests/w32kdll/w32kdll_ros/sys-stubs.S | 12 + .../w32kdll/w32kdll_ros/w32kdll_ros.spec | 21 +- .../w32kdll/w32kdll_ros/win32ksvc-ros.h | 698 ++++++++++++++++++ rostests/tests/dllexport/CMakeLists.txt | 3 +- rostests/winetests/winmm/CMakeLists.txt | 2 +- 11 files changed, 1412 insertions(+), 20 deletions(-) create mode 100644 rostests/apitests/w32kdll/w32kdll_2k3sp2/sys-stubs.S create mode 100644 rostests/apitests/w32kdll/w32kdll_2k3sp2/w32ksvc-2k3sp2.h create mode 100644 rostests/apitests/w32kdll/w32kdll_ros/sys-stubs.S create mode 100644 rostests/apitests/w32kdll/w32kdll_ros/win32ksvc-ros.h diff --git a/rostests/apitests/CMakeLists.txt b/rostests/apitests/CMakeLists.txt index 45f4c60282a..99a8bf97620 100644 --- a/rostests/apitests/CMakeLists.txt +++ b/rostests/apitests/CMakeLists.txt @@ -19,7 +19,7 @@ add_subdirectory(setupapi) add_subdirectory(shell32) add_subdirectory(psapi) add_subdirectory(user32) -if((NOT MSVC) AND (ARCH STREQUAL "i386")) +if(NOT ARCH STREQUAL "amd64") add_subdirectory(w32kdll) add_subdirectory(w32knapi) endif() diff --git a/rostests/apitests/w32kdll/CMakeLists.txt b/rostests/apitests/w32kdll/CMakeLists.txt index a2c1b14f249..0d4f458d018 100644 --- a/rostests/apitests/w32kdll/CMakeLists.txt +++ b/rostests/apitests/w32kdll/CMakeLists.txt @@ -1,6 +1,6 @@ add_subdirectory(w32kdll_ros) add_subdirectory(w32kdll_xpsp2) -add_subdirectory(w32kdll_2ksp4) +#add_subdirectory(w32kdll_2ksp4) add_subdirectory(w32kdll_2k3sp2) -add_subdirectory(w32kdll_vista) +#add_subdirectory(w32kdll_vista) diff --git a/rostests/apitests/w32kdll/w32kdll_2k3sp2/CMakeLists.txt b/rostests/apitests/w32kdll/w32kdll_2k3sp2/CMakeLists.txt index aca0aa3a598..84cc5342073 100644 --- a/rostests/apitests/w32kdll/w32kdll_2k3sp2/CMakeLists.txt +++ b/rostests/apitests/w32kdll/w32kdll_2k3sp2/CMakeLists.txt @@ -3,9 +3,9 @@ spec2def(w32kdll_2k3sp2.dll w32kdll_2k3sp2.spec ADD_IMPORTLIB) add_library(w32kdll_2k3sp2 SHARED main.c - w32kdll_2k3sp2.S + sys-stubs.S ${CMAKE_CURRENT_BINARY_DIR}/w32kdll_2k3sp2.def) set_entrypoint(w32kdll_2k3sp2 0) -add_dependencies(w32kdll_2k3sp2 psdk ) +add_dependencies(w32kdll_2k3sp2 psdk) diff --git a/rostests/apitests/w32kdll/w32kdll_2k3sp2/sys-stubs.S b/rostests/apitests/w32kdll/w32kdll_2k3sp2/sys-stubs.S new file mode 100644 index 00000000000..8913700a2f9 --- /dev/null +++ b/rostests/apitests/w32kdll/w32kdll_2k3sp2/sys-stubs.S @@ -0,0 +1,12 @@ + +#include +#include + +.code + +SyscallId = HEX(1000) +#define SVC_(name, argcount) STUB_U name, argcount + +#include "w32ksvc-2k3sp2.h" + +END diff --git a/rostests/apitests/w32kdll/w32kdll_2k3sp2/w32ksvc-2k3sp2.h b/rostests/apitests/w32kdll/w32kdll_2k3sp2/w32ksvc-2k3sp2.h new file mode 100644 index 00000000000..1e3f1ca85ed --- /dev/null +++ b/rostests/apitests/w32kdll/w32kdll_2k3sp2/w32ksvc-2k3sp2.h @@ -0,0 +1,669 @@ +// SVC_(, ) +// +// Funcs, order, should, match, Windows, XP, 5.1.2600, SP2) +// +SVC_(GdiAbortDoc, 1) +SVC_(GdiAbortPath, 1) +SVC_(GdiAddFontResourceW, 6) +SVC_(GdiAddRemoteFontToDC, 4) +SVC_(GdiAddFontMemResourceEx, 5) +SVC_(GdiRemoveMergeFont, 2) +SVC_(GdiAddRemoteMMInstanceToDC, 3) +SVC_(GdiAlphaBlend, 12) +SVC_(GdiAngleArc, 6) +SVC_(GdiAnyLinkedFonts, 0) +SVC_(GdiFontIsLinked, 1) +SVC_(GdiArcInternal, 10) +SVC_(GdiBeginPath, 1) +SVC_(GdiBitBlt, 11) +SVC_(GdiCancelDC, 1) +SVC_(GdiCheckBitmapBits, 8) +SVC_(GdiCloseFigure, 1) +SVC_(GdiClearBitmapAttributes, 2) +SVC_(GdiClearBrushAttributes, 2) +SVC_(GdiColorCorrectPalette, 6) +SVC_(GdiCombineRgn, 4) +SVC_(GdiCombineTransform, 3) +SVC_(GdiComputeXformCoefficients, 1) +SVC_(GdiConsoleTextOut, 4) +SVC_(GdiConvertMetafileRect, 2) +SVC_(GdiCreateBitmap, 5) +SVC_(GdiCreateClientObj, 1) +SVC_(GdiCreateColorSpace, 1) +SVC_(GdiCreateColorTransform, 8) +SVC_(GdiCreateCompatibleBitmap, 3) +SVC_(GdiCreateCompatibleDC, 1) +SVC_(GdiCreateDIBBrush, 6) +SVC_(GdiCreateDIBitmapInternal, 11) +SVC_(GdiCreateDIBSection, 9) +SVC_(GdiCreateEllipticRgn, 4) +SVC_(GdiCreateHalftonePalette, 1) +SVC_(GdiCreateHatchBrushInternal, 3) +SVC_(GdiCreateMetafileDC, 1) +SVC_(GdiCreatePaletteInternal, 2) +SVC_(GdiCreatePatternBrushInternal, 3) +SVC_(GdiCreatePen, 4) +SVC_(GdiCreateRectRgn, 4) +SVC_(GdiCreateRoundRectRgn, 6) +SVC_(GdiCreateServerMetaFile, 6) +SVC_(GdiCreateSolidBrush, 2) +SVC_(GdiD3dContextCreate, 4) +SVC_(GdiD3dContextDestroy, 1) +SVC_(GdiD3dContextDestroyAll, 1) +SVC_(GdiD3dValidateTextureStageState, 1) +SVC_(GdiD3dDrawPrimitives2, 7) +SVC_(GdiDdGetDriverState, 1) +SVC_(GdiDdAddAttachedSurface, 3) +SVC_(GdiDdAlphaBlt, 3) +SVC_(GdiDdAttachSurface, 2) +SVC_(GdiDdBeginMoCompFrame, 2) +SVC_(GdiDdBlt, 3) +SVC_(GdiDdCanCreateSurface, 2) +SVC_(GdiDdCanCreateD3DBuffer, 2) +SVC_(GdiDdColorControl, 2) +SVC_(GdiDdCreateDirectDrawObject, 1) +SVC_(GdiDdCreateSurface, 8) +SVC_(GdiDdCreateD3DBuffer, 8) +SVC_(GdiDdCreateMoComp, 2) +SVC_(GdiDdCreateSurfaceObject, 6) +SVC_(GdiDdDeleteDirectDrawObject, 1) +SVC_(GdiDdDeleteSurfaceObject, 1) +SVC_(GdiDdDestroyMoComp, 2) +SVC_(GdiDdDestroySurface, 2) +SVC_(GdiDdDestroyD3DBuffer, 1) +SVC_(GdiDdEndMoCompFrame, 2) +SVC_(GdiDdFlip, 5) +SVC_(GdiDdFlipToGDISurface, 2) +SVC_(GdiDdGetAvailDriverMemory, 2) +SVC_(GdiDdGetBltStatus, 2) +SVC_(GdiDdGetDC, 2) +SVC_(GdiDdGetDriverInfo, 2) +SVC_(GdiDdGetDxHandle, 3) +SVC_(GdiDdGetFlipStatus, 2) +SVC_(GdiDdGetInternalMoCompInfo, 2) +SVC_(GdiDdGetMoCompBuffInfo, 2) +SVC_(GdiDdGetMoCompGuids, 2) +SVC_(GdiDdGetMoCompFormats, 2) +SVC_(GdiDdGetScanLine, 2) +SVC_(GdiDdLock, 3) +SVC_(GdiDdLockD3D, 2) +SVC_(GdiDdQueryDirectDrawObject, 11) +SVC_(GdiDdQueryMoCompStatus, 2) +SVC_(GdiDdReenableDirectDrawObject, 2) +SVC_(GdiDdReleaseDC, 1) +SVC_(GdiDdRenderMoComp, 2) +SVC_(GdiDdResetVisrgn, 2) +SVC_(GdiDdSetColorKey, 2) +SVC_(GdiDdSetExclusiveMode, 2) +SVC_(GdiDdSetGammaRamp, 3) +SVC_(GdiDdCreateSurfaceEx, 3) +SVC_(GdiDdSetOverlayPosition, 3) +SVC_(GdiDdUnattachSurface, 2) +SVC_(GdiDdUnlock, 2) +SVC_(GdiDdUnlockD3D, 2) +SVC_(GdiDdUpdateOverlay, 3) +SVC_(GdiDdWaitForVerticalBlank, 2) +SVC_(GdiDvpCanCreateVideoPort, 2) +SVC_(GdiDvpColorControl, 2) +SVC_(GdiDvpCreateVideoPort, 2) +SVC_(GdiDvpDestroyVideoPort, 2) +SVC_(GdiDvpFlipVideoPort, 4) +SVC_(GdiDvpGetVideoPortBandwidth, 2) +SVC_(GdiDvpGetVideoPortField, 2) +SVC_(GdiDvpGetVideoPortFlipStatus, 2) +SVC_(GdiDvpGetVideoPortInputFormats, 2) +SVC_(GdiDvpGetVideoPortLine, 2) +SVC_(GdiDvpGetVideoPortOutputFormats, 2) +SVC_(GdiDvpGetVideoPortConnectInfo, 2) +SVC_(GdiDvpGetVideoSignalStatus, 2) +SVC_(GdiDvpUpdateVideoPort, 4) +SVC_(GdiDvpWaitForVideoPortSync, 2) +SVC_(GdiDvpAcquireNotification, 3) +SVC_(GdiDvpReleaseNotification, 2) +SVC_(GdiDxgGenericThunk, 6) +SVC_(GdiDeleteClientObj, 1) +SVC_(GdiDeleteColorSpace, 1) +SVC_(GdiDeleteColorTransform, 2) +SVC_(GdiDeleteObjectApp, 1) +SVC_(GdiDescribePixelFormat, 4) +SVC_(GdiGetPerBandInfo, 2) +SVC_(GdiDoBanding, 4) +SVC_(GdiDoPalette, 6) +SVC_(GdiDrawEscape, 4) +SVC_(GdiEllipse, 5) +SVC_(GdiEnableEudc, 1) +SVC_(GdiEndDoc, 1) +SVC_(GdiEndPage, 1) +SVC_(GdiEndPath, 1) +SVC_(GdiEnumFontChunk, 5) +SVC_(GdiEnumFontClose, 1) +SVC_(GdiEnumFontOpen, 7) +SVC_(GdiEnumObjects, 4) +SVC_(GdiEqualRgn, 2) +SVC_(GdiEudcLoadUnloadLink, 7) +SVC_(GdiExcludeClipRect, 5) +SVC_(GdiExtCreatePen, 11) +SVC_(GdiExtCreateRegion, 3) +SVC_(GdiExtEscape, 8) +SVC_(GdiExtFloodFill, 5) +SVC_(GdiExtGetObjectW, 3) +SVC_(GdiExtSelectClipRgn, 3) +SVC_(GdiExtTextOutW, 9) +SVC_(GdiFillPath, 1) +SVC_(GdiFillRgn, 3) +SVC_(GdiFlattenPath, 1) +SVC_(GdiFlush, 0) +SVC_(GdiForceUFIMapping, 2) +SVC_(GdiFrameRgn, 5) +SVC_(GdiFullscreenControl, 5) +SVC_(GdiGetAndSetDCDword, 4) +SVC_(GdiGetAppClipBox, 2) +SVC_(GdiGetBitmapBits, 3) +SVC_(GdiGetBitmapDimension, 2) +SVC_(GdiGetBoundsRect, 3) +SVC_(GdiGetCharABCWidthsW, 6) +SVC_(GdiGetCharacterPlacementW, 6) +SVC_(GdiGetCharSet, 1) +SVC_(GdiGetCharWidthW, 6) +SVC_(GdiGetCharWidthInfo, 2) +SVC_(GdiGetColorAdjustment, 2) +SVC_(GdiGetColorSpaceforBitmap, 1) +SVC_(GdiGetDCDword, 3) +SVC_(GdiGetDCforBitmap, 1) +SVC_(GdiGetDCObject, 2) +SVC_(GdiGetDCPoint, 3) +SVC_(GdiGetDeviceCaps, 2) +SVC_(GdiGetDeviceGammaRamp, 2) +SVC_(GdiGetDeviceCapsAll, 2) +SVC_(GdiGetDIBitsInternal, 9) +SVC_(GdiGetETM, 2) +SVC_(GdiGetEudcTimeStampEx, 3) +SVC_(GdiGetFontData, 5) +SVC_(GdiGetFontResourceInfoInternalW, 7) +SVC_(GdiGetGlyphIndicesW, 5) +SVC_(GdiGetGlyphIndicesWInternal, 6) +SVC_(GdiGetGlyphOutline, 8) +SVC_(GdiGetKerningPairs, 3) +SVC_(GdiGetLinkedUFIs, 3) +SVC_(GdiGetMiterLimit, 2) +SVC_(GdiGetMonitorID, 3) +SVC_(GdiGetNearestColor, 2) +SVC_(GdiGetNearestPaletteIndex, 2) +SVC_(GdiGetObjectBitmapHandle, 2) +SVC_(GdiGetOutlineTextMetricsInternalW, 4) +SVC_(GdiGetPath, 4) +SVC_(GdiGetPixel, 3) +SVC_(GdiGetRandomRgn, 3) +SVC_(GdiGetRasterizerCaps, 2) +SVC_(GdiGetRealizationInfo, 3) +SVC_(GdiGetRegionData, 3) +SVC_(GdiGetRgnBox, 2) +SVC_(GdiGetServerMetaFileBits, 7) +SVC_(GdiGetSpoolMessage, 4) +SVC_(GdiGetStats, 5) +SVC_(GdiGetStockObject, 1) +SVC_(GdiGetStringBitmapW, 5) +SVC_(GdiGetSystemPaletteUse, 1) +SVC_(GdiGetTextCharsetInfo, 3) +SVC_(GdiGetTextExtent, 5) +SVC_(GdiGetTextExtentExW, 8) +SVC_(GdiGetTextFaceW, 4) +SVC_(GdiGetTextMetricsW, 3) +SVC_(GdiGetTransform, 3) +SVC_(GdiGetUFI, 6) +SVC_(GdiGetEmbUFI, 7) +SVC_(GdiGetUFIPathname, 10) +SVC_(GdiGetEmbedFonts, 0) +SVC_(GdiChangeGhostFont, 2) +SVC_(GdiAddEmbFontToDC, 2) +SVC_(GdiGetFontUnicodeRanges, 2) +SVC_(GdiGetWidthTable, 7) +SVC_(GdiGradientFill, 6) +SVC_(GdiHfontCreate, 5) +SVC_(GdiIcmBrushInfo, 8) +SVC_(GdiInit, 0) +SVC_(GdiInitSpool, 0) +SVC_(GdiIntersectClipRect, 5) +SVC_(GdiInvertRgn, 2) +SVC_(GdiLineTo, 3) +SVC_(GdiMakeFontDir, 5) +SVC_(GdiMakeInfoDC, 2) +SVC_(GdiMaskBlt, 13) +SVC_(GdiModifyWorldTransform, 3) +SVC_(GdiMonoBitmap, 1) +SVC_(GdiMoveTo, 4) +SVC_(GdiOffsetClipRgn, 3) +SVC_(GdiOffsetRgn, 3) +SVC_(GdiOpenDCW, 7) +SVC_(GdiPatBlt, 6) +SVC_(GdiPolyPatBlt, 5) +SVC_(GdiPathToRegion, 1) +SVC_(GdiPlgBlt, 11) +SVC_(GdiPolyDraw, 4) +SVC_(GdiPolyPolyDraw, 5) +SVC_(GdiPolyTextOutW, 4) +SVC_(GdiPtInRegion, 3) +SVC_(GdiPtVisible, 3) +SVC_(GdiQueryFonts, 3) +SVC_(GdiQueryFontAssocInfo, 1) +SVC_(GdiRectangle, 5) +SVC_(GdiRectInRegion, 2) +SVC_(GdiRectVisible, 2) +SVC_(GdiRemoveFontResourceW, 6) +SVC_(GdiRemoveFontMemResourceEx, 1) +SVC_(GdiResetDC, 5) +SVC_(GdiResizePalette, 2) +SVC_(GdiRestoreDC, 2) +SVC_(GdiRoundRect, 7) +SVC_(GdiSaveDC, 1) +SVC_(GdiScaleViewportExtEx, 6) +SVC_(GdiScaleWindowExtEx, 6) +SVC_(GdiSelectBitmap, 2) +SVC_(GdiSelectBrush, 2) +SVC_(GdiSelectClipPath, 2) +SVC_(GdiSelectFont, 2) +SVC_(GdiSelectPen, 2) +SVC_(GdiSetBitmapAttributes, 2) +SVC_(GdiSetBitmapBits, 3) +SVC_(GdiSetBitmapDimension, 4) +SVC_(GdiSetBoundsRect, 3) +SVC_(GdiSetBrushAttributes, 2) +SVC_(GdiSetBrushOrg, 4) +SVC_(GdiSetColorAdjustment, 2) +SVC_(GdiSetColorSpace, 2) +SVC_(GdiSetDeviceGammaRamp, 2) +SVC_(GdiSetDIBitsToDeviceInternal, 16) +SVC_(GdiSetFontEnumeration, 1) +SVC_(GdiSetFontXform, 3) +SVC_(GdiSetIcmMode, 3) +SVC_(GdiSetLinkedUFIs, 3) +SVC_(GdiSetMagicColors, 3) +SVC_(GdiSetMetaRgn, 1) +SVC_(GdiSetMiterLimit, 3) +SVC_(GdiGetDeviceWidth, 1) +SVC_(GdiMirrorWindowOrg, 1) +SVC_(GdiSetLayout, 3) +SVC_(GdiSetPixel, 4) +SVC_(GdiSetPixelFormat, 2) +SVC_(GdiSetRectRgn, 5) +SVC_(GdiSetSystemPaletteUse, 2) +SVC_(GdiSetTextJustification, 3) +SVC_(GdiSetupPublicCFONT, 3) +SVC_(GdiSetVirtualResolution, 5) +SVC_(GdiSetSizeDevice, 3) +SVC_(GdiStartDoc, 4) +SVC_(GdiStartPage, 1) +SVC_(GdiStretchBlt, 12) +SVC_(GdiStretchDIBitsInternal, 16) +SVC_(GdiStrokeAndFillPath, 1) +SVC_(GdiStrokePath, 1) +SVC_(GdiSwapBuffers, 1) +SVC_(GdiTransformPoints, 5) +SVC_(GdiTransparentBlt, 11) +SVC_(GdiUnloadPrinterDriver, 2) +SVC_(GdiUnmapMemFont, 1) +SVC_(GdiUnrealizeObject, 1) +SVC_(GdiUpdateColors, 1) +SVC_(GdiWidenPath, 1) +SVC_(UserActivateKeyboardLayout, 2) +SVC_(UserAlterWindowStyle, 3) +SVC_(UserAssociateInputContext, 3) +SVC_(UserAttachThreadInput, 3) +SVC_(UserBeginPaint, 2) +SVC_(UserBitBltSysBmp, 8) +SVC_(UserBlockInput, 1) +SVC_(UserBuildHimcList, 4) +SVC_(UserBuildHwndList, 7) +SVC_(UserBuildNameList, 4) +SVC_(UserBuildPropList, 4) +SVC_(UserCallHwnd, 2) +SVC_(UserCallHwndLock, 2) +SVC_(UserCallHwndOpt, 2) +SVC_(UserCallHwndParam, 3) +SVC_(UserCallHwndParamLock, 3) +SVC_(UserCallMsgFilter, 2) +SVC_(UserCallNextHookEx, 4) +SVC_(UserCallNoParam, 1) +SVC_(UserCallOneParam, 2) +SVC_(UserCallTwoParam, 3) +SVC_(UserChangeClipboardChain, 2) +SVC_(UserChangeDisplaySettings, 4) +SVC_(UserCheckImeHotKey, 2) +SVC_(UserCheckMenuItem, 3) +SVC_(UserChildWindowFromPointEx, 4) +SVC_(UserClipCursor, 1) +SVC_(UserCloseClipboard, 0) +SVC_(UserCloseDesktop, 1) +SVC_(UserCloseWindowStation, 1) +SVC_(UserConsoleControl, 3) +SVC_(UserConvertMemHandle, 2) +SVC_(UserCopyAcceleratorTable, 3) +SVC_(UserCountClipboardFormats, 0) +SVC_(UserCreateAcceleratorTable, 2) +SVC_(UserCreateCaret, 4) +SVC_(UserCreateDesktop, 5) +SVC_(UserCreateInputContext, 1) +SVC_(UserCreateLocalMemHandle, 4) +SVC_(UserCreateWindowEx, 15) +SVC_(UserCreateWindowStation, 7) +SVC_(UserDdeGetQualityOfService, 3) +SVC_(UserDdeInitialize, 5) +SVC_(UserDdeSetQualityOfService, 3) +SVC_(UserDeferWindowPos, 8) +SVC_(UserDefSetText, 2) +SVC_(UserDeleteMenu, 3) +SVC_(UserDestroyAcceleratorTable, 1) +SVC_(UserDestroyCursor, 2) +SVC_(UserDestroyInputContext, 1) +SVC_(UserDestroyMenu, 1) +SVC_(UserDestroyWindow, 1) +SVC_(UserDisableThreadIme, 1) +SVC_(UserDispatchMessage, 1) +SVC_(UserDragDetect, 3) +SVC_(UserDragObject, 5) +SVC_(UserDrawAnimatedRects, 4) +SVC_(UserDrawCaption, 4) +SVC_(UserDrawCaptionTemp, 7) +SVC_(UserDrawIconEx, 11) +SVC_(UserDrawMenuBarTemp, 5) +SVC_(UserEmptyClipboard, 0) +SVC_(UserEnableMenuItem, 3) +SVC_(UserEnableScrollBar, 3) +SVC_(UserEndDeferWindowPosEx, 2) +SVC_(UserEndMenu, 0) +SVC_(UserEndPaint, 2) +SVC_(UserEnumDisplayDevices, 4) +SVC_(UserEnumDisplayMonitors, 4) +SVC_(UserEnumDisplaySettings, 4) +SVC_(UserEvent, 1) +SVC_(UserExcludeUpdateRgn, 2) +SVC_(UserFillWindow, 4) +SVC_(UserFindExistingCursorIcon, 3) +SVC_(UserFindWindowEx, 5) +SVC_(UserFlashWindowEx, 1) +SVC_(UserGetAltTabInfo, 6) +SVC_(UserGetAncestor, 2) +SVC_(UserGetAppImeLevel, 1) +SVC_(UserGetAsyncKeyState, 1) +SVC_(UserGetAtomName, 2) +SVC_(UserGetCaretBlinkTime, 0) +SVC_(UserGetCaretPos, 1) +SVC_(UserGetClassInfoEx, 5) +SVC_(UserGetClassName, 3) +SVC_(UserGetClipboardData, 2) +SVC_(UserGetClipboardFormatName, 3) +SVC_(UserGetClipboardOwner, 0) +SVC_(UserGetClipboardSequenceNumber, 0) +SVC_(UserGetClipboardViewer, 0) +SVC_(UserGetClipCursor, 1) +SVC_(UserGetComboBoxInfo, 2) +SVC_(UserGetControlBrush, 3) +SVC_(UserGetControlColor, 4) +SVC_(UserGetCPD, 3) +SVC_(UserGetCursorFrameInfo, 4) +SVC_(UserGetCursorInfo, 1) +SVC_(UserGetDC, 1) +SVC_(UserGetDCEx, 3) +SVC_(UserGetDoubleClickTime, 0) +SVC_(UserGetForegroundWindow, 0) +SVC_(UserGetGuiResources, 2) +SVC_(UserGetGUIThreadInfo, 2) +SVC_(UserGetIconInfo, 6) +SVC_(UserGetIconSize, 4) +SVC_(UserGetImeHotKey, 4) +SVC_(UserGetImeInfoEx, 2) +SVC_(UserGetInternalWindowPos, 3) +SVC_(UserGetKeyboardLayoutList, 2) +SVC_(UserGetKeyboardLayoutName, 1) +SVC_(UserGetKeyboardState, 1) +SVC_(UserGetKeyNameText, 3) +SVC_(UserGetKeyState, 1) +SVC_(UserGetListBoxInfo, 1) +SVC_(UserGetMenuBarInfo, 4) +SVC_(UserGetMenuIndex, 2) +SVC_(UserGetMenuItemRect, 4) +SVC_(UserGetMessage, 4) +SVC_(UserGetMouseMovePointsEx, 5) +SVC_(UserGetObjectInformation, 5) +SVC_(UserGetOpenClipboardWindow, 0) +SVC_(UserGetPriorityClipboardFormat, 2) +SVC_(UserGetProcessWindowStation, 0) +SVC_(UserGetRawInputBuffer, 3) +SVC_(UserGetRawInputData, 5) +SVC_(UserGetRawInputDeviceInfo, 4) +SVC_(UserGetRawInputDeviceList, 3) +SVC_(UserGetRegisteredRawInputDevices, 3) +SVC_(UserGetScrollBarInfo, 3) +SVC_(UserGetSystemMenu, 2) +SVC_(UserGetThreadDesktop, 2) +SVC_(UserGetThreadState, 1) +SVC_(UserGetTitleBarInfo, 2) +SVC_(UserGetUpdateRect, 3) +SVC_(UserGetUpdateRgn, 3) +SVC_(UserGetWindowDC, 1) +SVC_(UserGetWindowPlacement, 2) +SVC_(UserGetWOWClass, 2) +SVC_(UserHardErrorControl, 3) +SVC_(UserHideCaret, 1) +SVC_(UserHiliteMenuItem, 4) +SVC_(UserImpersonateDdeClientWindow, 2) +SVC_(UserInitialize, 3) +SVC_(UserInitializeClientPfnArrays, 4) +SVC_(UserInitTask, 12) +SVC_(UserInternalGetWindowText, 3) +SVC_(UserInvalidateRect, 3) +SVC_(UserInvalidateRgn, 3) +SVC_(UserIsClipboardFormatAvailable, 1) +SVC_(UserKillTimer, 2) +SVC_(UserLoadKeyboardLayoutEx, 7) +SVC_(UserLockWindowStation, 1) +SVC_(UserLockWindowUpdate, 1) +SVC_(UserLockWorkStation, 0) +SVC_(UserMapVirtualKeyEx, 4) +SVC_(UserMenuItemFromPoint, 4) +SVC_(UserMessageCall, 7) +SVC_(UserMinMaximize, 3) +SVC_(UserMNDragLeave, 0) +SVC_(UserMNDragOver, 2) +SVC_(UserModifyUserStartupInfoFlags, 2) +SVC_(UserMoveWindow, 6) +SVC_(UserNotifyIMEStatus, 3) +SVC_(UserNotifyProcessCreate, 4) +SVC_(UserNotifyWinEvent, 4) +SVC_(UserOpenClipboard, 2) +SVC_(UserOpenDesktop, 3) +SVC_(UserOpenInputDesktop, 3) +SVC_(UserOpenWindowStation, 2) +SVC_(UserPaintDesktop, 1) +SVC_(UserPeekMessage, 5) +SVC_(UserPostMessage, 4) +SVC_(UserPostThreadMessage, 4) +SVC_(UserPrintWindow, 3) +SVC_(UserProcessConnect, 3) +SVC_(UserQueryInformationThread, 4) +SVC_(UserQueryInputContext, 2) +SVC_(UserQuerySendMessage, 1) +SVC_(UserQueryWindow, 2) +SVC_(UserRealChildWindowFromPoint, 3) +SVC_(UserRealInternalGetMessage, 6) +SVC_(UserRealWaitMessageEx, 2) +SVC_(UserRedrawWindow, 4) +SVC_(UserRegisterClassExWOW, 7) +SVC_(UserRegisterUserApiHook, 4) +SVC_(UserRegisterHotKey, 4) +SVC_(UserRegisterRawInputDevices, 3) +SVC_(UserRegisterTasklist, 1) +SVC_(UserRegisterWindowMessage, 1) +SVC_(UserRemoveMenu, 3) +SVC_(UserRemoveProp, 2) +SVC_(UserResolveDesktop, 4) +SVC_(UserResolveDesktopForWOW, 1) +SVC_(UserSBGetParms, 4) +SVC_(UserScrollDC, 7) +SVC_(UserScrollWindowEx, 8) +SVC_(UserSelectPalette, 3) +SVC_(UserSendInput, 3) +SVC_(UserSetActiveWindow, 1) +SVC_(UserSetAppImeLevel, 2) +SVC_(UserSetCapture, 1) +SVC_(UserSetClassLong, 4) +SVC_(UserSetClassWord, 3) +SVC_(UserSetClipboardData, 3) +SVC_(UserSetClipboardViewer, 1) +SVC_(UserSetConsoleReserveKeys, 2) +SVC_(UserSetCursor, 1) +SVC_(UserSetCursorContents, 2) +SVC_(UserSetCursorIconData, 4) +SVC_(UserSetFocus, 1) +SVC_(UserSetImeHotKey, 5) +SVC_(UserSetImeInfoEx, 1) +SVC_(UserSetImeOwnerWindow, 2) +SVC_(UserSetInformationProcess, 4) +SVC_(UserSetInformationThread, 4) +SVC_(UserSetInternalWindowPos, 4) +SVC_(UserSetKeyboardState, 1) +SVC_(UserSetLogonNotifyWindow, 1) +SVC_(UserSetMenu, 3) +SVC_(UserSetMenuContextHelpId, 2) +SVC_(UserSetMenuDefaultItem, 3) +SVC_(UserSetMenuFlagRtoL, 1) +SVC_(UserSetObjectInformation, 4) +SVC_(UserSetParent, 2) +SVC_(UserSetProcessWindowStation, 1) +SVC_(UserSetProp, 3) +SVC_(UserSetScrollInfo, 4) +SVC_(UserSetShellWindowEx, 2) +SVC_(UserSetSysColors, 4) +SVC_(UserSetSystemCursor, 2) +SVC_(UserSetSystemMenu, 2) +SVC_(UserSetSystemTimer, 4) +SVC_(UserSetThreadDesktop, 1) +SVC_(UserSetThreadLayoutHandles, 2) +SVC_(UserSetThreadState, 2) +SVC_(UserSetTimer, 4) +SVC_(UserSetWindowFNID, 2) +SVC_(UserSetWindowLong, 4) +SVC_(UserSetWindowPlacement, 2) +SVC_(UserSetWindowPos, 7) +SVC_(UserSetWindowRgn, 3) +SVC_(UserSetWindowsHookAW, 3) +SVC_(UserSetWindowsHookEx, 6) +SVC_(UserSetWindowStationUser, 4) +SVC_(UserSetWindowWord, 3) +SVC_(UserSetWinEventHook, 8) +SVC_(UserShowCaret, 1) +SVC_(UserShowScrollBar, 3) +SVC_(UserShowWindow, 2) +SVC_(UserShowWindowAsync, 2) +SVC_(UserSoundSentry, 0) +SVC_(UserSwitchDesktop, 1) +SVC_(UserSystemParametersInfo, 4) +SVC_(UserTestForInteractiveUser, 1) +SVC_(UserThunkedMenuInfo, 2) +SVC_(UserThunkedMenuItemInfo, 6) +SVC_(UserToUnicodeEx, 7) +SVC_(UserTrackMouseEvent, 1) +SVC_(UserTrackPopupMenuEx, 6) +SVC_(UserCalcMenuBar, 5) +SVC_(UserPaintMenuBar, 6) +SVC_(UserTranslateAccelerator, 3) +SVC_(UserTranslateMessage, 2) +SVC_(UserUnhookWindowsHookEx, 1) +SVC_(UserUnhookWinEvent, 1) +SVC_(UserUnloadKeyboardLayout, 1) +SVC_(UserUnlockWindowStation, 1) +SVC_(UserUnregisterClass, 3) +SVC_(UserUnregisterUserApiHook, 0) +SVC_(UserUnregisterHotKey, 2) +SVC_(UserUpdateInputContext, 3) +SVC_(UserUpdateInstance, 3) +SVC_(UserUpdateLayeredWindow, 10) +SVC_(UserGetLayeredWindowAttributes, 4) +SVC_(UserSetLayeredWindowAttributes, 4) +SVC_(UserUpdatePerUserSystemParameters, 2) +SVC_(UserUserHandleGrantAccess, 3) +SVC_(UserValidateHandleSecure, 1) +SVC_(UserValidateRect, 2) +SVC_(UserValidateTimerCallback, 1) +SVC_(UserVkKeyScanEx, 3) +SVC_(UserWaitForInputIdle, 3) +SVC_(UserWaitForMsgAndEvent, 1) +SVC_(UserWaitMessage, 0) +SVC_(UserWin32PoolAllocationStats, 6) +SVC_(UserWindowFromPoint, 2) +SVC_(UserYieldTask, 0) +SVC_(UserRemoteConnect, 3) +SVC_(UserRemoteRedrawRectangle, 4) +SVC_(UserRemoteRedrawScreen, 0) +SVC_(UserRemoteStopScreenUpdates, 0) +SVC_(UserCtxDisplayIOCtl, 3) +SVC_(GdiEngAssociateSurface, 3) +SVC_(GdiEngCreateBitmap, 6) +SVC_(GdiEngCreateDeviceSurface, 4) +SVC_(GdiEngCreateDeviceBitmap, 4) +SVC_(GdiEngCreatePalette, 6) +SVC_(GdiEngComputeGlyphSet, 3) +SVC_(GdiEngCopyBits, 6) +SVC_(GdiEngDeletePalette, 1) +SVC_(GdiEngDeleteSurface, 1) +SVC_(GdiEngEraseSurface, 3) +SVC_(GdiEngUnlockSurface, 1) +SVC_(GdiEngLockSurface, 1) +SVC_(GdiEngBitBlt, 11) +SVC_(GdiEngStretchBlt, 11) +SVC_(GdiEngPlgBlt, 11) +SVC_(GdiEngMarkBandingSurface, 1) +SVC_(GdiEngStrokePath, 8) +SVC_(GdiEngFillPath, 7) +SVC_(GdiEngStrokeAndFillPath, 10) +SVC_(GdiEngPaint, 5) +SVC_(GdiEngLineTo, 9) +SVC_(GdiEngAlphaBlend, 7) +SVC_(GdiEngGradientFill, 10) +SVC_(GdiEngTransparentBlt, 8) +SVC_(GdiEngTextOut, 10) +SVC_(GdiEngStretchBltROP, 13) +SVC_(GdiXLATEOBJ_cGetPalette, 4) +SVC_(GdiXLATEOBJ_iXlate, 2) +SVC_(GdiXLATEOBJ_hGetColorTransform, 1) +SVC_(GdiCLIPOBJ_bEnum, 3) +SVC_(GdiCLIPOBJ_cEnumStart, 5) +SVC_(GdiCLIPOBJ_ppoGetPath, 1) +SVC_(GdiEngDeletePath, 1) +SVC_(GdiEngCreateClip, 0) +SVC_(GdiEngDeleteClip, 1) +SVC_(GdiBRUSHOBJ_ulGetBrushColor, 1) +SVC_(GdiBRUSHOBJ_pvAllocRbrush, 2) +SVC_(GdiBRUSHOBJ_pvGetRbrush, 1) +SVC_(GdiBRUSHOBJ_hGetColorTransform, 1) +SVC_(GdiXFORMOBJ_bApplyXform, 5) +SVC_(GdiXFORMOBJ_iGetXform, 2) +SVC_(GdiFONTOBJ_vGetInfo, 3) +SVC_(GdiFONTOBJ_pxoGetXform, 1) +SVC_(GdiFONTOBJ_cGetGlyphs, 5) +SVC_(GdiFONTOBJ_pifi, 1) +SVC_(GdiFONTOBJ_pfdg, 1) +SVC_(GdiFONTOBJ_pQueryGlyphAttrs, 2) +SVC_(GdiFONTOBJ_pvTrueTypeFontFile, 2) +SVC_(GdiFONTOBJ_cGetAllGlyphHandles, 2) +SVC_(GdiSTROBJ_bEnum, 3) +SVC_(GdiSTROBJ_bEnumPositionsOnly, 3) +SVC_(GdiSTROBJ_bGetAdvanceWidths, 4) +SVC_(GdiSTROBJ_vEnumStart, 1) +SVC_(GdiSTROBJ_dwGetCodePage, 1) +SVC_(GdiPATHOBJ_vGetBounds, 2) +SVC_(GdiPATHOBJ_bEnum, 2) +SVC_(GdiPATHOBJ_vEnumStart, 1) +SVC_(GdiPATHOBJ_vEnumStartClipLines, 4) +SVC_(GdiPATHOBJ_bEnumClipLines, 3) +SVC_(GdiGetDhpdev, 1) +SVC_(GdiEngCheckAbort, 1) +SVC_(GdiHT_Get8BPPFormatPalette, 4) +SVC_(GdiHT_Get8BPPMaskPalette, 6) +SVC_(GdiUpdateTransform, 1) +SVC_(GdiSetPUMPDOBJ, 4) +SVC_(GdiBRUSHOBJ_DeleteRbrush, 2) +SVC_(GdiUMPDEngFreeUserMem, 1) +SVC_(GdiDrawStream, 3) +SVC_(GdiMakeObjectXferable, 2) +SVC_(GdiMakeObjectUnXferable, 1) diff --git a/rostests/apitests/w32kdll/w32kdll_ros/CMakeLists.txt b/rostests/apitests/w32kdll/w32kdll_ros/CMakeLists.txt index a7dc46d3398..67b490242d9 100644 --- a/rostests/apitests/w32kdll/w32kdll_ros/CMakeLists.txt +++ b/rostests/apitests/w32kdll/w32kdll_ros/CMakeLists.txt @@ -1,12 +1,11 @@ spec2def(w32kdll_ros.dll w32kdll_ros.spec ADD_IMPORTLIB) -add_library(w32kdll_ros SHARED +add_library(w32kdll_ros SHARED main.c + sys-stubs.S ${CMAKE_CURRENT_BINARY_DIR}/w32kdll_ros.def) set_entrypoint(w32kdll_ros 0) -target_link_libraries(w32kdll_ros win32ksys) - add_dependencies(w32kdll_ros psdk) diff --git a/rostests/apitests/w32kdll/w32kdll_ros/sys-stubs.S b/rostests/apitests/w32kdll/w32kdll_ros/sys-stubs.S new file mode 100644 index 00000000000..97c39b07fe8 --- /dev/null +++ b/rostests/apitests/w32kdll/w32kdll_ros/sys-stubs.S @@ -0,0 +1,12 @@ + +#include +#include + +.code + +SyscallId = HEX(1000) +#define SVC_(name, argcount) STUB_U name, argcount + +#include "win32ksvc-ros.h" + +END diff --git a/rostests/apitests/w32kdll/w32kdll_ros/w32kdll_ros.spec b/rostests/apitests/w32kdll/w32kdll_ros/w32kdll_ros.spec index 81d3b8540e7..20f67f548f2 100644 --- a/rostests/apitests/w32kdll/w32kdll_ros/w32kdll_ros.spec +++ b/rostests/apitests/w32kdll/w32kdll_ros/w32kdll_ros.spec @@ -238,7 +238,7 @@ @ stdcall NtGdiMoveTo(ptr long long ptr) @ stdcall NtGdiOffsetClipRgn(ptr long long) @ stdcall NtGdiOffsetRgn(ptr long long) -@ stdcall NtGdiOpenDCW(ptr ptr ptr long ptr long ptr ptr) +@ stdcall NtGdiOpenDCW(ptr ptr ptr long ptr long ptr ptr) # FIXME: 7 params on XP @ stdcall NtGdiPatBlt(ptr long long long long long) @ stdcall NtGdiPolyPatBlt(ptr long ptr long long) @ stdcall NtGdiPathToRegion(ptr) @@ -377,22 +377,22 @@ @ stdcall NtUserEndMenu() @ stdcall NtUserEndPaint(ptr ptr) @ stdcall NtUserEnumDisplayDevices(ptr long ptr long) -; @ stdcall NtUserEnumDisplayMonitors(ptr ptr ptr ptr) +@ stdcall NtUserEnumDisplayMonitors(ptr ptr ptr ptr) # FIXME: 4 on XP @ stdcall NtUserEnumDisplaySettings(ptr long ptr long) @ stdcall NtUserEvent(long) @ stdcall NtUserExcludeUpdateRgn(ptr ptr) @ stdcall NtUserFillWindow(ptr ptr ptr ptr) -; @ stdcall NtUserFindExistingCursorIcon(ptr ptr ptr) +@ stdcall NtUserFindExistingCursorIcon(ptr ptr ptr ptr) # FIXME: 3 on XP @ stdcall NtUserFindWindowEx(ptr ptr ptr ptr long) @ stdcall NtUserFlashWindowEx(ptr) @ stdcall NtUserGetAltTabInfo(ptr long ptr wstr long long) @ stdcall NtUserGetAncestor(ptr long) -; @ stdcall NtUserGetAppImeLevel(long) +@ stdcall NtUserGetAppImeLevel(long) @ stdcall NtUserGetAsyncKeyState(long) @ stdcall NtUserGetAtomName(long ptr) @ stdcall NtUserGetCaretBlinkTime() @ stdcall NtUserGetCaretPos(ptr) -; @ stdcall NtUserGetClassInfo(ptr ptr ptr ptr long) +@ stdcall NtUserGetClassInfo(ptr ptr ptr ptr long) @ stdcall NtUserGetClassName(ptr long ptr) @ stdcall NtUserGetClipboardData(long ptr) @ stdcall NtUserGetClipboardFormatName(long wstr ptr) @@ -494,7 +494,7 @@ @ stdcall NtUserRealWaitMessageEx(long long) @ stdcall NtUserRedrawWindow(ptr ptr ptr long) @ stdcall NtUserRegisterClassExWOW(ptr ptr ptr ptr long long ptr) -@ stdcall NtUserRegisterUserApiHook(ptr ptr long long) +@ stdcall NtUserRegisterUserApiHook(ptr ptr long long) # FIXME: 2 params on XP @ stdcall NtUserRegisterHotKey(ptr long long long) @ stdcall NtUserRegisterRawInputDevices(ptr long long) @ stdcall NtUserRegisterTasklist(long) @@ -518,7 +518,7 @@ @ stdcall NtUserSetConsoleReserveKeys(long long) @ stdcall NtUserSetCursor(ptr) @ stdcall NtUserSetCursorContents(ptr ptr) -; @ stdcall NtUserSetCursorIconData(ptr ptr ptr ptr) +; @ stdcall NtUserSetCursorIconData(ptr ptr ptr ptr) # FIXME 4 with new iconcursor / XP @ stdcall NtUserSetDbgTag(long long) @ stdcall NtUserSetFocus(ptr) @ stdcall NtUserSetImeHotKey(long long long long long) @@ -579,12 +579,12 @@ @ stdcall NtUserUnhookWinEvent(ptr) @ stdcall NtUserUnloadKeyboardLayout(ptr) @ stdcall NtUserUnlockWindowStation(ptr) -; @ stdcall NtUserUnregisterClass(ptr ptr ptr) +@ stdcall NtUserUnregisterClass(ptr ptr ptr) @ stdcall NtUserUnregisterUserApiHook() @ stdcall NtUserUnregisterHotKey(ptr long) @ stdcall NtUserUpdateInputContext(long long long) @ stdcall NtUserUpdateInstance(long long long) -@ stdcall NtUserUpdateLayeredWindow(ptr ptr ptr ptr ptr ptr long ptr long ptr) +@ stdcall NtUserUpdateLayeredWindow(ptr ptr ptr ptr ptr ptr long ptr long ptr) # FIXME: 9 params on XP @ stdcall NtUserGetLayeredWindowAttributes(ptr ptr ptr ptr) @ stdcall NtUserSetLayeredWindowAttributes(ptr long long long) @ stdcall NtUserUpdatePerUserSystemParameters(long long) @@ -597,6 +597,7 @@ @ stdcall NtUserWaitForMsgAndEvent(long) @ stdcall NtUserWaitMessage() @ stdcall NtUserWin32PoolAllocationStats(long long long long long long) +@ stdcall NtUserWindowFromPhysicalPoint(ptr ptr) # Vista @ stdcall NtUserWindowFromPoint(long long) @ stdcall NtUserYieldTask() @ stdcall NtUserRemoteConnect(long long long) @@ -671,5 +672,5 @@ @ stdcall NtGdiSetPUMPDOBJ(ptr long ptr ptr) @ stdcall NtGdiBRUSHOBJ_DeleteRbrush(ptr ptr) @ stdcall NtGdiUMPDEngFreeUserMem(ptr) -@ stdcall NtGdiUnmapMemFont(ptr) @ stdcall NtGdiDrawStream(ptr long ptr) + diff --git a/rostests/apitests/w32kdll/w32kdll_ros/win32ksvc-ros.h b/rostests/apitests/w32kdll/w32kdll_ros/win32ksvc-ros.h new file mode 100644 index 00000000000..1dac35fa701 --- /dev/null +++ b/rostests/apitests/w32kdll/w32kdll_ros/win32ksvc-ros.h @@ -0,0 +1,698 @@ +// SVC_(, ) +// +// Funcs order, should, match, Windows, XP, 5.1.2600, SP2) +// +SVC_(GdiAbortDoc, 1) +SVC_(GdiAbortPath, 1) +SVC_(GdiAddFontResourceW, 6) +SVC_(GdiAddRemoteFontToDC, 4) +SVC_(GdiAddFontMemResourceEx, 5) +SVC_(GdiRemoveMergeFont, 2) +SVC_(GdiAddRemoteMMInstanceToDC, 3) +SVC_(GdiAlphaBlend, 12) +SVC_(GdiAngleArc, 6) +SVC_(GdiAnyLinkedFonts, 0) +SVC_(GdiFontIsLinked, 1) +SVC_(GdiArcInternal, 10) +SVC_(GdiBeginPath, 1) +SVC_(GdiBitBlt, 11) +SVC_(GdiCancelDC, 1) +SVC_(GdiCheckBitmapBits, 8) +SVC_(GdiCloseFigure, 1) +SVC_(GdiClearBitmapAttributes, 2) +SVC_(GdiClearBrushAttributes, 2) +SVC_(GdiColorCorrectPalette, 6) +SVC_(GdiCombineRgn, 4) +SVC_(GdiCombineTransform, 3) +SVC_(GdiComputeXformCoefficients, 1) +SVC_(GdiConsoleTextOut, 4) +SVC_(GdiConvertMetafileRect, 2) +SVC_(GdiCreateBitmap, 5) +SVC_(GdiCreateClientObj, 1) +SVC_(GdiCreateColorSpace, 1) +SVC_(GdiCreateColorTransform, 8) +SVC_(GdiCreateCompatibleBitmap, 3) +SVC_(GdiCreateCompatibleDC, 1) +SVC_(GdiCreateDIBBrush, 6) +SVC_(GdiCreateDIBitmapInternal, 11) +SVC_(GdiCreateDIBSection, 9) +SVC_(GdiCreateEllipticRgn, 4) +SVC_(GdiCreateHalftonePalette, 1) +SVC_(GdiCreateHatchBrushInternal, 3) +SVC_(GdiCreateMetafileDC, 1) +SVC_(GdiCreatePaletteInternal, 2) +SVC_(GdiCreatePatternBrushInternal, 3) +SVC_(GdiCreatePen, 4) +SVC_(GdiCreateRectRgn, 4) +SVC_(GdiCreateRoundRectRgn, 6) +SVC_(GdiCreateServerMetaFile, 6) +SVC_(GdiCreateSolidBrush, 2) +SVC_(GdiD3dContextCreate, 4) +SVC_(GdiD3dContextDestroy, 1) +SVC_(GdiD3dContextDestroyAll, 1) +SVC_(GdiD3dValidateTextureStageState, 1) +SVC_(GdiD3dDrawPrimitives2, 7) +SVC_(GdiDdGetDriverState, 1) +SVC_(GdiDdAddAttachedSurface, 3) +SVC_(GdiDdAlphaBlt, 3) +SVC_(GdiDdAttachSurface, 2) +SVC_(GdiDdBeginMoCompFrame, 2) +SVC_(GdiDdBlt, 3) +SVC_(GdiDdCanCreateSurface, 2) +SVC_(GdiDdCanCreateD3DBuffer, 2) +SVC_(GdiDdColorControl, 2) +SVC_(GdiDdCreateDirectDrawObject, 1) +SVC_(GdiDdCreateSurface, 8) +SVC_(GdiDdCreateD3DBuffer, 8) +SVC_(GdiDdCreateMoComp, 2) +SVC_(GdiDdCreateSurfaceObject, 6) +SVC_(GdiDdDeleteDirectDrawObject, 1) +SVC_(GdiDdDeleteSurfaceObject, 1) +SVC_(GdiDdDestroyMoComp, 2) +SVC_(GdiDdDestroySurface, 2) +SVC_(GdiDdDestroyD3DBuffer, 1) +SVC_(GdiDdEndMoCompFrame, 2) +SVC_(GdiDdFlip, 5) +SVC_(GdiDdFlipToGDISurface, 2) +SVC_(GdiDdGetAvailDriverMemory, 2) +SVC_(GdiDdGetBltStatus, 2) +SVC_(GdiDdGetDC, 2) +SVC_(GdiDdGetDriverInfo, 2) +SVC_(GdiDdGetDxHandle, 3) +SVC_(GdiDdGetFlipStatus, 2) +SVC_(GdiDdGetInternalMoCompInfo, 2) +SVC_(GdiDdGetMoCompBuffInfo, 2) +SVC_(GdiDdGetMoCompGuids, 2) +SVC_(GdiDdGetMoCompFormats, 2) +SVC_(GdiDdGetScanLine, 2) +SVC_(GdiDdLock, 3) +SVC_(GdiDdLockD3D, 2) +SVC_(GdiDdQueryDirectDrawObject, 11) +SVC_(GdiDdQueryMoCompStatus, 2) +SVC_(GdiDdReenableDirectDrawObject, 2) +SVC_(GdiDdReleaseDC, 1) +SVC_(GdiDdRenderMoComp, 2) +SVC_(GdiDdResetVisrgn, 2) +SVC_(GdiDdSetColorKey, 2) +SVC_(GdiDdSetExclusiveMode, 2) +SVC_(GdiDdSetGammaRamp, 3) +SVC_(GdiDdCreateSurfaceEx, 3) +SVC_(GdiDdSetOverlayPosition, 3) +SVC_(GdiDdUnattachSurface, 2) +SVC_(GdiDdUnlock, 2) +SVC_(GdiDdUnlockD3D, 2) +SVC_(GdiDdUpdateOverlay, 3) +SVC_(GdiDdWaitForVerticalBlank, 2) +SVC_(GdiDvpCanCreateVideoPort, 2) +SVC_(GdiDvpColorControl, 2) +SVC_(GdiDvpCreateVideoPort, 2) +SVC_(GdiDvpDestroyVideoPort, 2) +SVC_(GdiDvpFlipVideoPort, 4) +SVC_(GdiDvpGetVideoPortBandwidth, 2) +SVC_(GdiDvpGetVideoPortField, 2) +SVC_(GdiDvpGetVideoPortFlipStatus, 2) +SVC_(GdiDvpGetVideoPortInputFormats, 2) +SVC_(GdiDvpGetVideoPortLine, 2) +SVC_(GdiDvpGetVideoPortOutputFormats, 2) +SVC_(GdiDvpGetVideoPortConnectInfo, 2) +SVC_(GdiDvpGetVideoSignalStatus, 2) +SVC_(GdiDvpUpdateVideoPort, 4) +SVC_(GdiDvpWaitForVideoPortSync, 2) +SVC_(GdiDvpAcquireNotification, 3) +SVC_(GdiDvpReleaseNotification, 2) +SVC_(GdiDxgGenericThunk, 6) +SVC_(GdiDeleteClientObj, 1) +SVC_(GdiDeleteColorSpace, 1) +SVC_(GdiDeleteColorTransform, 2) +SVC_(GdiDeleteObjectApp, 1) +SVC_(GdiDescribePixelFormat, 4) +SVC_(GdiGetPerBandInfo, 2) +SVC_(GdiDoBanding, 4) +SVC_(GdiDoPalette, 6) +SVC_(GdiDrawEscape, 4) +SVC_(GdiEllipse, 5) +SVC_(GdiEnableEudc, 1) +SVC_(GdiEndDoc, 1) +SVC_(GdiEndPage, 1) +SVC_(GdiEndPath, 1) +SVC_(GdiEnumFontChunk, 5) +SVC_(GdiEnumFontClose, 1) +SVC_(GdiEnumFontOpen, 7) +SVC_(GdiEnumObjects, 4) +SVC_(GdiEqualRgn, 2) +SVC_(GdiEudcLoadUnloadLink, 7) +SVC_(GdiExcludeClipRect, 5) +SVC_(GdiExtCreatePen, 11) +SVC_(GdiExtCreateRegion, 3) +SVC_(GdiExtEscape, 8) +SVC_(GdiExtFloodFill, 5) +SVC_(GdiExtGetObjectW, 3) +SVC_(GdiExtSelectClipRgn, 3) +SVC_(GdiExtTextOutW, 9) +SVC_(GdiFillPath, 1) +SVC_(GdiFillRgn, 3) +SVC_(GdiFlattenPath, 1) +SVC_(GdiFlushUserBatch, 0) +SVC_(GdiFlush, 0) +SVC_(GdiForceUFIMapping, 2) +SVC_(GdiFrameRgn, 5) +SVC_(GdiFullscreenControl, 5) +SVC_(GdiGetAndSetDCDword, 4) +SVC_(GdiGetAppClipBox, 2) +SVC_(GdiGetBitmapBits, 3) +SVC_(GdiGetBitmapDimension, 2) +SVC_(GdiGetBoundsRect, 3) +SVC_(GdiGetCharABCWidthsW, 6) +SVC_(GdiGetCharacterPlacementW, 6) +SVC_(GdiGetCharSet, 1) +SVC_(GdiGetCharWidthW, 6) +SVC_(GdiGetCharWidthInfo, 2) +SVC_(GdiGetColorAdjustment, 2) +SVC_(GdiGetColorSpaceforBitmap, 1) +SVC_(GdiGetDCDword, 3) +SVC_(GdiGetDCforBitmap, 1) +SVC_(GdiGetDCObject, 2) +SVC_(GdiGetDCPoint, 3) +SVC_(GdiGetDeviceCaps, 2) +SVC_(GdiGetDeviceGammaRamp, 2) +SVC_(GdiGetDeviceCapsAll, 2) +SVC_(GdiGetDIBitsInternal, 9) +SVC_(GdiGetETM, 2) +SVC_(GdiGetEudcTimeStampEx, 3) +SVC_(GdiGetFontData, 5) +SVC_(GdiGetFontResourceInfoInternalW, 7) +SVC_(GdiGetGlyphIndicesW, 5) +SVC_(GdiGetGlyphIndicesWInternal, 6) +SVC_(GdiGetGlyphOutline, 8) +SVC_(GdiGetKerningPairs, 3) +SVC_(GdiGetLinkedUFIs, 3) +SVC_(GdiGetMiterLimit, 2) +SVC_(GdiGetMonitorID, 3) +SVC_(GdiGetNearestColor, 2) +SVC_(GdiGetNearestPaletteIndex, 2) +SVC_(GdiGetObjectBitmapHandle, 2) +SVC_(GdiGetOutlineTextMetricsInternalW, 4) +SVC_(GdiGetPath, 4) +SVC_(GdiGetPixel, 3) +SVC_(GdiGetRandomRgn, 3) +SVC_(GdiGetRasterizerCaps, 2) +SVC_(GdiGetRealizationInfo, 3) +SVC_(GdiGetRegionData, 3) +SVC_(GdiGetRgnBox, 2) +SVC_(GdiGetServerMetaFileBits, 7) +SVC_(GdiGetSpoolMessage, 4) +SVC_(GdiGetStats, 5) +SVC_(GdiGetStockObject, 1) +SVC_(GdiGetStringBitmapW, 5) +SVC_(GdiGetSystemPaletteUse, 1) +SVC_(GdiGetTextCharsetInfo, 3) +SVC_(GdiGetTextExtent, 5) +SVC_(GdiGetTextExtentExW, 8) +SVC_(GdiGetTextFaceW, 4) +SVC_(GdiGetTextMetricsW, 3) +SVC_(GdiGetTransform, 3) +SVC_(GdiGetUFI, 6) +SVC_(GdiGetEmbUFI, 7) +SVC_(GdiGetUFIPathname, 10) +SVC_(GdiGetEmbedFonts, 0) +SVC_(GdiChangeGhostFont, 2) +SVC_(GdiAddEmbFontToDC, 2) +SVC_(GdiGetFontUnicodeRanges, 2) +SVC_(GdiGetWidthTable, 7) +SVC_(GdiGradientFill, 6) +SVC_(GdiHfontCreate, 5) +SVC_(GdiIcmBrushInfo, 8) +SVC_(GdiInit, 0) +SVC_(GdiInitSpool, 0) +SVC_(GdiIntersectClipRect, 5) +SVC_(GdiInvertRgn, 2) +SVC_(GdiLineTo, 3) +SVC_(GdiMakeFontDir, 5) +SVC_(GdiMakeInfoDC, 2) +SVC_(GdiMaskBlt, 13) +SVC_(GdiModifyWorldTransform, 3) +SVC_(GdiMonoBitmap, 1) +SVC_(GdiMoveTo, 4) +SVC_(GdiOffsetClipRgn, 3) +SVC_(GdiOffsetRgn, 3) +SVC_(GdiOpenDCW, 8) /* FIXME: 7 params on XP */ +SVC_(GdiPatBlt, 6) +SVC_(GdiPolyPatBlt, 5) +SVC_(GdiPathToRegion, 1) +SVC_(GdiPlgBlt, 11) +SVC_(GdiPolyDraw, 4) +SVC_(GdiPolyPolyDraw, 5) +SVC_(GdiPolyTextOutW, 4) +SVC_(GdiPtInRegion, 3) +SVC_(GdiPtVisible, 3) +SVC_(GdiQueryFonts, 3) +SVC_(GdiQueryFontAssocInfo, 1) +SVC_(GdiRectangle, 5) +SVC_(GdiRectInRegion, 2) +SVC_(GdiRectVisible, 2) +SVC_(GdiRemoveFontResourceW, 6) +SVC_(GdiRemoveFontMemResourceEx, 1) +SVC_(GdiResetDC, 5) +SVC_(GdiResizePalette, 2) +SVC_(GdiRestoreDC, 2) +SVC_(GdiRoundRect, 7) +SVC_(GdiSaveDC, 1) +SVC_(GdiScaleViewportExtEx, 6) +SVC_(GdiScaleWindowExtEx, 6) +SVC_(GdiSelectBitmap, 2) +SVC_(GdiSelectBrush, 2) +SVC_(GdiSelectClipPath, 2) +SVC_(GdiSelectFont, 2) +SVC_(GdiSelectPen, 2) +SVC_(GdiSetBitmapAttributes, 2) +SVC_(GdiSetBitmapBits, 3) +SVC_(GdiSetBitmapDimension, 4) +SVC_(GdiSetBoundsRect, 3) +SVC_(GdiSetBrushAttributes, 2) +SVC_(GdiSetBrushOrg, 4) +SVC_(GdiSetColorAdjustment, 2) +SVC_(GdiSetColorSpace, 2) +SVC_(GdiSetDeviceGammaRamp, 2) +SVC_(GdiSetDIBitsToDeviceInternal, 16) +SVC_(GdiSetFontEnumeration, 1) +SVC_(GdiSetFontXform, 3) +SVC_(GdiSetIcmMode, 3) +SVC_(GdiSetLinkedUFIs, 3) +SVC_(GdiSetMagicColors, 3) +SVC_(GdiSetMetaRgn, 1) +SVC_(GdiSetMiterLimit, 3) +SVC_(GdiGetDeviceWidth, 1) +SVC_(GdiMirrorWindowOrg, 1) +SVC_(GdiSetLayout, 3) +SVC_(GdiSetPixel, 4) +SVC_(GdiSetPixelFormat, 2) +SVC_(GdiSetRectRgn, 5) +SVC_(GdiSetSystemPaletteUse, 2) +SVC_(GdiSetTextJustification, 3) +SVC_(GdiSetupPublicCFONT, 3) +SVC_(GdiSetVirtualResolution, 5) +SVC_(GdiSetSizeDevice, 3) +SVC_(GdiStartDoc, 4) +SVC_(GdiStartPage, 1) +SVC_(GdiStretchBlt, 12) +SVC_(GdiStretchDIBitsInternal, 16) +SVC_(GdiStrokeAndFillPath, 1) +SVC_(GdiStrokePath, 1) +SVC_(GdiSwapBuffers, 1) +SVC_(GdiTransformPoints, 5) +SVC_(GdiTransparentBlt, 11) +SVC_(GdiUnloadPrinterDriver, 2) +SVC_(GdiUnmapMemFont, 1) +SVC_(GdiUnrealizeObject, 1) +SVC_(GdiUpdateColors, 1) +SVC_(GdiWidenPath, 1) +SVC_(UserActivateKeyboardLayout, 2) +SVC_(UserAlterWindowStyle, 3) +SVC_(UserAssociateInputContext, 3) +SVC_(UserAttachThreadInput, 3) +SVC_(UserBeginPaint, 2) +SVC_(UserBitBltSysBmp, 8) +SVC_(UserBlockInput, 1) +SVC_(UserBuildHimcList, 4) +SVC_(UserBuildHwndList, 7) +SVC_(UserBuildNameList, 4) +SVC_(UserBuildPropList, 4) +SVC_(UserCallHwnd, 2) +SVC_(UserCallHwndLock, 2) +SVC_(UserCallHwndOpt, 2) +SVC_(UserCallHwndParam, 3) +SVC_(UserCallHwndParamLock, 3) +SVC_(UserCallMsgFilter, 2) +SVC_(UserCallNextHookEx, 4) +SVC_(UserCallNoParam, 1) +SVC_(UserCallOneParam, 2) +SVC_(UserCallTwoParam, 3) +SVC_(UserChangeClipboardChain, 2) +SVC_(UserChangeDisplaySettings, 5) +SVC_(UserCheckImeHotKey, 2) +SVC_(UserCheckMenuItem, 3) +SVC_(UserChildWindowFromPointEx, 4) +SVC_(UserClipCursor, 1) +SVC_(UserCloseClipboard, 0) +SVC_(UserCloseDesktop, 1) +SVC_(UserCloseWindowStation, 1) +SVC_(UserConsoleControl, 3) +SVC_(UserConvertMemHandle, 2) +SVC_(UserCopyAcceleratorTable, 3) +SVC_(UserCountClipboardFormats, 0) +SVC_(UserCreateAcceleratorTable, 2) +SVC_(UserCreateCaret, 4) +SVC_(UserCreateDesktop, 5) +SVC_(UserCreateInputContext, 1) +SVC_(UserCreateLocalMemHandle, 4) +SVC_(UserCreateWindowEx, 15) +SVC_(UserCreateWindowStation, 7) +SVC_(UserDdeGetQualityOfService, 3) +SVC_(UserDdeInitialize, 5) +SVC_(UserDdeSetQualityOfService, 3) +SVC_(UserDeferWindowPos, 8) +SVC_(UserDefSetText, 2) +SVC_(UserDeleteMenu, 3) +SVC_(UserDestroyAcceleratorTable, 1) +SVC_(UserDestroyCursor, 2) +SVC_(UserDestroyInputContext, 1) +SVC_(UserDestroyMenu, 1) +SVC_(UserDestroyWindow, 1) +SVC_(UserDisableThreadIme, 1) +SVC_(UserDispatchMessage, 1) +SVC_(UserDragDetect, 3) +SVC_(UserDragObject, 5) +SVC_(UserDrawAnimatedRects, 4) +SVC_(UserDrawCaption, 4) +SVC_(UserDrawCaptionTemp, 7) +SVC_(UserDrawIconEx, 11) +SVC_(UserDrawMenuBarTemp, 5) +SVC_(UserEmptyClipboard, 0) +SVC_(UserEnableMenuItem, 3) +SVC_(UserEnableScrollBar, 3) +SVC_(UserEndDeferWindowPosEx, 2) +SVC_(UserEndMenu, 0) +SVC_(UserEndPaint, 2) +SVC_(UserEnumDisplayDevices, 4) +SVC_(UserEnumDisplayMonitors, 5) /* FIXME: 4 on XP */ +SVC_(UserEnumDisplaySettings, 4) +SVC_(UserEvent, 1) +SVC_(UserExcludeUpdateRgn, 2) +SVC_(UserFillWindow, 4) +#ifdef NEW_CURSORICON +SVC_(UserFindExistingCursorIcon, 3) +#else +SVC_(UserFindExistingCursorIcon, 4) +#endif +SVC_(UserFindWindowEx, 5) +SVC_(UserFlashWindowEx, 1) +SVC_(UserGetAltTabInfo, 6) +SVC_(UserGetAncestor, 2) +SVC_(UserGetAppImeLevel, 1) +SVC_(UserGetAsyncKeyState, 1) +SVC_(UserGetAtomName, 2) +SVC_(UserGetCaretBlinkTime, 0) +SVC_(UserGetCaretPos, 1) +SVC_(UserGetClassInfo, 5) +SVC_(UserGetClassName, 3) +SVC_(UserGetClipboardData, 2) +SVC_(UserGetClipboardFormatName, 3) +SVC_(UserGetClipboardOwner, 0) +SVC_(UserGetClipboardSequenceNumber, 0) +SVC_(UserGetClipboardViewer, 0) +SVC_(UserGetClipCursor, 1) +SVC_(UserGetComboBoxInfo, 2) +SVC_(UserGetControlBrush, 3) +SVC_(UserGetControlColor, 4) +SVC_(UserGetCPD, 3) +SVC_(UserGetCursorFrameInfo, 4) +SVC_(UserGetCursorInfo, 1) +SVC_(UserGetDC, 1) +SVC_(UserGetDCEx, 3) +SVC_(UserGetDoubleClickTime, 0) +SVC_(UserGetForegroundWindow, 0) +SVC_(UserGetGuiResources, 2) +SVC_(UserGetGUIThreadInfo, 2) +SVC_(UserGetIconInfo, 6) +SVC_(UserGetIconSize, 4) +SVC_(UserGetImeHotKey, 4) +SVC_(UserGetImeInfoEx, 2) +SVC_(UserGetInternalWindowPos, 3) +SVC_(UserGetKeyboardLayoutList, 2) +SVC_(UserGetKeyboardLayoutName, 1) +SVC_(UserGetKeyboardState, 1) +SVC_(UserGetKeyNameText, 3) +SVC_(UserGetKeyState, 1) +SVC_(UserGetListBoxInfo, 1) +SVC_(UserGetMenuBarInfo, 4) +SVC_(UserGetMenuIndex, 2) +SVC_(UserGetMenuItemRect, 4) +SVC_(UserGetMessage, 4) +SVC_(UserGetMouseMovePointsEx, 5) +SVC_(UserGetObjectInformation, 5) +SVC_(UserGetOpenClipboardWindow, 0) +SVC_(UserGetPriorityClipboardFormat, 2) +SVC_(UserGetProcessWindowStation, 0) +SVC_(UserGetRawInputBuffer, 3) +SVC_(UserGetRawInputData, 5) +SVC_(UserGetRawInputDeviceInfo, 4) +SVC_(UserGetRawInputDeviceList, 3) +SVC_(UserGetRegisteredRawInputDevices, 3) +SVC_(UserGetScrollBarInfo, 3) +SVC_(UserGetSystemMenu, 2) +SVC_(UserGetThreadDesktop, 2) +SVC_(UserGetThreadState, 1) +SVC_(UserGetTitleBarInfo, 2) +SVC_(UserGetUpdateRect, 3) +SVC_(UserGetUpdateRgn, 3) +SVC_(UserGetWindowDC, 1) +SVC_(UserGetWindowPlacement, 2) +SVC_(UserGetWOWClass, 2) +SVC_(UserHardErrorControl, 3) +SVC_(UserHideCaret, 1) +SVC_(UserHiliteMenuItem, 4) +SVC_(UserImpersonateDdeClientWindow, 2) +SVC_(UserInitialize, 3) +SVC_(UserInitializeClientPfnArrays, 4) +SVC_(UserInitTask, 12) +SVC_(UserInternalGetWindowText, 3) +SVC_(UserInvalidateRect, 3) +SVC_(UserInvalidateRgn, 3) +SVC_(UserIsClipboardFormatAvailable, 1) +SVC_(UserKillTimer, 2) +SVC_(UserLoadKeyboardLayoutEx, 7) +SVC_(UserLockWindowStation, 1) +SVC_(UserLockWindowUpdate, 1) +SVC_(UserLockWorkStation, 0) +SVC_(UserMapVirtualKeyEx, 4) +SVC_(UserMenuItemFromPoint, 4) +SVC_(UserMessageCall, 7) +SVC_(UserMinMaximize, 3) +SVC_(UserMNDragLeave, 0) +SVC_(UserMNDragOver, 2) +SVC_(UserModifyUserStartupInfoFlags, 2) +SVC_(UserMoveWindow, 6) +SVC_(UserNotifyIMEStatus, 3) +SVC_(UserNotifyProcessCreate, 4) +SVC_(UserNotifyWinEvent, 4) +SVC_(UserOpenClipboard, 2) +SVC_(UserOpenDesktop, 3) +SVC_(UserOpenInputDesktop, 3) +SVC_(UserOpenWindowStation, 2) +SVC_(UserPaintDesktop, 1) +SVC_(UserPeekMessage, 5) +SVC_(UserPostMessage, 4) +SVC_(UserPostThreadMessage, 4) +SVC_(UserPrintWindow, 3) +SVC_(UserProcessConnect, 3) +SVC_(UserQueryInformationThread, 5) +SVC_(UserQueryInputContext, 2) +SVC_(UserQuerySendMessage, 1) +SVC_(UserQueryUserCounters, 5) +SVC_(UserQueryWindow, 2) +SVC_(UserRealChildWindowFromPoint, 3) +SVC_(UserRealInternalGetMessage, 6) +SVC_(UserRealWaitMessageEx, 2) +SVC_(UserRedrawWindow, 4) +SVC_(UserRegisterClassExWOW, 7) +SVC_(UserRegisterUserApiHook, 4) /* FIXME: 2 params on XP */ +SVC_(UserRegisterHotKey, 4) +SVC_(UserRegisterRawInputDevices, 3) +SVC_(UserRegisterTasklist, 1) +SVC_(UserRegisterWindowMessage, 1) +SVC_(UserRemoveMenu, 3) +SVC_(UserRemoveProp, 2) +SVC_(UserResolveDesktop, 4) +SVC_(UserResolveDesktopForWOW, 1) +SVC_(UserSBGetParms, 4) +SVC_(UserScrollDC, 7) +SVC_(UserScrollWindowEx, 8) +SVC_(UserSelectPalette, 3) +SVC_(UserSendInput, 3) +SVC_(UserSetActiveWindow, 1) +SVC_(UserSetAppImeLevel, 2) +SVC_(UserSetCapture, 1) +SVC_(UserSetClassLong, 4) +SVC_(UserSetClassWord, 3) +SVC_(UserSetClipboardData, 3) +SVC_(UserSetClipboardViewer, 1) +SVC_(UserSetConsoleReserveKeys, 2) +SVC_(UserSetCursor, 1) +SVC_(UserSetCursorContents, 2) +#ifdef NEW_CURSORICON +SVC_(UserSetCursorIconData, 4) +#else +SVC_(UserSetCursorIconData, 6) +#endif +SVC_(UserSetDbgTag, 2) +SVC_(UserSetFocus, 1) +SVC_(UserSetImeHotKey, 5) +SVC_(UserSetImeInfoEx, 1) +SVC_(UserSetImeOwnerWindow, 2) +SVC_(UserSetInformationProcess, 4) +SVC_(UserSetInformationThread, 4) +SVC_(UserSetInternalWindowPos, 4) +SVC_(UserSetKeyboardState, 1) +SVC_(UserSetLogonNotifyWindow, 1) +SVC_(UserSetMenu, 3) +SVC_(UserSetMenuContextHelpId, 2) +SVC_(UserSetMenuDefaultItem, 3) +SVC_(UserSetMenuFlagRtoL, 1) +SVC_(UserSetObjectInformation, 4) +SVC_(UserSetParent, 2) +SVC_(UserSetProcessWindowStation, 1) +SVC_(UserSetProp, 3) +SVC_(UserSetRipFlags, 2) +SVC_(UserSetScrollInfo, 4) +SVC_(UserSetShellWindowEx, 2) +SVC_(UserSetSysColors, 4) +SVC_(UserSetSystemCursor, 2) +SVC_(UserSetSystemMenu, 2) +SVC_(UserSetSystemTimer, 4) +SVC_(UserSetThreadDesktop, 1) +SVC_(UserSetThreadLayoutHandles, 2) +SVC_(UserSetThreadState, 2) +SVC_(UserSetTimer, 4) +SVC_(UserSetWindowFNID, 2) +SVC_(UserSetWindowLong, 4) +SVC_(UserSetWindowPlacement, 2) +SVC_(UserSetWindowPos, 7) +SVC_(UserSetWindowRgn, 3) +SVC_(UserSetWindowsHookAW, 3) +SVC_(UserSetWindowsHookEx, 6) +SVC_(UserSetWindowStationUser, 4) +SVC_(UserSetWindowWord, 3) +SVC_(UserSetWinEventHook, 8) +SVC_(UserShowCaret, 1) +SVC_(UserShowScrollBar, 3) +SVC_(UserShowWindow, 2) +SVC_(UserShowWindowAsync, 2) +SVC_(UserSoundSentry, 0) +SVC_(UserSwitchDesktop, 1) +SVC_(UserSystemParametersInfo, 4) +SVC_(UserTestForInteractiveUser, 1) +SVC_(UserThunkedMenuInfo, 2) +SVC_(UserThunkedMenuItemInfo, 6) +SVC_(UserToUnicodeEx, 7) +SVC_(UserTrackMouseEvent, 1) +SVC_(UserTrackPopupMenuEx, 6) +SVC_(UserCalcMenuBar, 5) +SVC_(UserPaintMenuBar, 6) +SVC_(UserTranslateAccelerator, 3) +SVC_(UserTranslateMessage, 2) +SVC_(UserUnhookWindowsHookEx, 1) +SVC_(UserUnhookWinEvent, 1) +SVC_(UserUnloadKeyboardLayout, 1) +SVC_(UserUnlockWindowStation, 1) +SVC_(UserUnregisterClass, 3) +SVC_(UserUnregisterUserApiHook, 0) +SVC_(UserUnregisterHotKey, 2) +SVC_(UserUpdateInputContext, 3) +SVC_(UserUpdateInstance, 3) +SVC_(UserUpdateLayeredWindow, 10) /* FIXME: 9 params on XP */ +SVC_(UserGetLayeredWindowAttributes, 4) +SVC_(UserSetLayeredWindowAttributes, 4) +SVC_(UserUpdatePerUserSystemParameters, 2) +SVC_(UserUserHandleGrantAccess, 3) +SVC_(UserValidateHandleSecure, 2) +SVC_(UserValidateRect, 2) +SVC_(UserValidateTimerCallback, 3) +SVC_(UserVkKeyScanEx, 3) +SVC_(UserWaitForInputIdle, 3) +SVC_(UserWaitForMsgAndEvent, 1) +SVC_(UserWaitMessage, 0) +SVC_(UserWin32PoolAllocationStats, 6) +SVC_(UserWindowFromPhysicalPoint, 2) // Vista +SVC_(UserWindowFromPoint, 2) +SVC_(UserYieldTask, 0) +SVC_(UserRemoteConnect, 3) +SVC_(UserRemoteRedrawRectangle, 4) +SVC_(UserRemoteRedrawScreen, 0) +SVC_(UserRemoteStopScreenUpdates, 0) +SVC_(UserCtxDisplayIOCtl, 3) +SVC_(GdiEngAssociateSurface, 3) +SVC_(GdiEngCreateBitmap, 6) +SVC_(GdiEngCreateDeviceSurface, 4) +SVC_(GdiEngCreateDeviceBitmap, 4) +SVC_(GdiEngCreatePalette, 6) +SVC_(GdiEngComputeGlyphSet, 3) +SVC_(GdiEngCopyBits, 6) +SVC_(GdiEngDeletePalette, 1) +SVC_(GdiEngDeleteSurface, 1) +SVC_(GdiEngEraseSurface, 3) +SVC_(GdiEngUnlockSurface, 1) +SVC_(GdiEngLockSurface, 1) +SVC_(GdiEngBitBlt, 11) +SVC_(GdiEngStretchBlt, 11) +SVC_(GdiEngPlgBlt, 11) +SVC_(GdiEngMarkBandingSurface, 1) +SVC_(GdiEngStrokePath, 8) +SVC_(GdiEngFillPath, 7) +SVC_(GdiEngStrokeAndFillPath, 10) +SVC_(GdiEngPaint, 5) +SVC_(GdiEngLineTo, 9) +SVC_(GdiEngAlphaBlend, 7) +SVC_(GdiEngGradientFill, 10) +SVC_(GdiEngTransparentBlt, 8) +SVC_(GdiEngTextOut, 10) +SVC_(GdiEngStretchBltROP, 13) +SVC_(GdiXLATEOBJ_cGetPalette, 4) +SVC_(GdiXLATEOBJ_iXlate, 2) +SVC_(GdiXLATEOBJ_hGetColorTransform, 1) +SVC_(GdiCLIPOBJ_bEnum, 3) +SVC_(GdiCLIPOBJ_cEnumStart, 5) +SVC_(GdiCLIPOBJ_ppoGetPath, 1) +SVC_(GdiEngDeletePath, 1) +SVC_(GdiEngCreateClip, 0) +SVC_(GdiEngDeleteClip, 1) +SVC_(GdiBRUSHOBJ_ulGetBrushColor, 1) +SVC_(GdiBRUSHOBJ_pvAllocRbrush, 2) +SVC_(GdiBRUSHOBJ_pvGetRbrush, 1) +SVC_(GdiBRUSHOBJ_hGetColorTransform, 1) +SVC_(GdiXFORMOBJ_bApplyXform, 5) +SVC_(GdiXFORMOBJ_iGetXform, 2) +SVC_(GdiFONTOBJ_vGetInfo, 3) +SVC_(GdiFONTOBJ_pxoGetXform, 1) +SVC_(GdiFONTOBJ_cGetGlyphs, 5) +SVC_(GdiFONTOBJ_pifi, 1) +SVC_(GdiFONTOBJ_pfdg, 1) +SVC_(GdiFONTOBJ_pQueryGlyphAttrs, 2) +SVC_(GdiFONTOBJ_pvTrueTypeFontFile, 2) +SVC_(GdiFONTOBJ_cGetAllGlyphHandles, 2) +SVC_(GdiSTROBJ_bEnum, 3) +SVC_(GdiSTROBJ_bEnumPositionsOnly, 3) +SVC_(GdiSTROBJ_bGetAdvanceWidths, 4) +SVC_(GdiSTROBJ_vEnumStart, 1) +SVC_(GdiSTROBJ_dwGetCodePage, 1) +SVC_(GdiPATHOBJ_vGetBounds, 2) +SVC_(GdiPATHOBJ_bEnum, 2) +SVC_(GdiPATHOBJ_vEnumStart, 1) +SVC_(GdiPATHOBJ_vEnumStartClipLines, 4) +SVC_(GdiPATHOBJ_bEnumClipLines, 3) +SVC_(GdiGetDhpdev, 1) +SVC_(GdiEngCheckAbort, 1) +SVC_(GdiHT_Get8BPPFormatPalette, 4) +SVC_(GdiHT_Get8BPPMaskPalette, 6) +SVC_(GdiUpdateTransform, 1) +SVC_(GdiSetPUMPDOBJ, 4) +SVC_(GdiBRUSHOBJ_DeleteRbrush, 2) +SVC_(GdiUMPDEngFreeUserMem, 1) +SVC_(GdiDrawStream, 3) + + +// ReactOS, specific, syscalls) +SVC_(GdiSetViewportOrgEx, 4) +SVC_(GdiSetWindowOrgEx, 4) +SVC_(GdiGetFontFamilyInfo, 4) +SVC_(GdiOffsetViewportOrgEx, 4) +SVC_(GdiOffsetWindowOrgEx, 4) + +SVC_(UserBuildMenuItemList, 4) +SVC_(UserGetMenuDefaultItem, 3) +SVC_(UserGetMonitorInfo, 2) +SVC_(UserMenuInfo, 3) +SVC_(UserMenuItemInfo, 5) +SVC_(UserMonitorFromPoint, 3) +SVC_(UserMonitorFromRect, 2) +SVC_(UserMonitorFromWindow, 2) +SVC_(UserSetScrollBarInfo, 3) diff --git a/rostests/tests/dllexport/CMakeLists.txt b/rostests/tests/dllexport/CMakeLists.txt index 6e82a4394ab..14a23c997b2 100644 --- a/rostests/tests/dllexport/CMakeLists.txt +++ b/rostests/tests/dllexport/CMakeLists.txt @@ -2,18 +2,19 @@ spec2def(dllexport_test_dll1.dll dllexport_test_dll1.spec ADD_IMPORTLIB) spec2def(dllexport_test_dll2.dll dllexport_test_dll2.spec ADD_IMPORTLIB) +set(baseaddress_dllexport_test_dll1 0x1000000) add_library(dllexport_test_dll1 SHARED dllexport_test_dll1.c ${CMAKE_CURRENT_BINARY_DIR}/dllexport_test_dll1.def) set_module_type(dllexport_test_dll1 win32dll ENTRYPOINT 0) add_importlibs(dllexport_test_dll1 dllexport_test_dll2) +set(baseaddress_dllexport_test_dll2 0x2000000) add_library(dllexport_test_dll2 SHARED dllexport_test_dll2.c ${CMAKE_CURRENT_BINARY_DIR}/dllexport_test_dll2.def) set_module_type(dllexport_test_dll2 win32dll ENTRYPOINT 0) - add_executable(dllexport_test dllexport_test.c) diff --git a/rostests/winetests/winmm/CMakeLists.txt b/rostests/winetests/winmm/CMakeLists.txt index 4f6743c0279..914ee71e4ae 100644 --- a/rostests/winetests/winmm/CMakeLists.txt +++ b/rostests/winetests/winmm/CMakeLists.txt @@ -17,5 +17,5 @@ add_importlibs(winmm_winetest winmm user32 msvcrt kernel32 ntdll) add_cd_file(TARGET winmm_winetest DESTINATION reactos/bin FOR all) if(NOT MSVC) - add_target_compile_flags(winmm_winetest "-Wno-error=format -Wno-error=unused-but-set-variable") + add_target_compile_flags(winmm_winetest "-Wno-format -Wno-unused-but-set-variable") endif() From 9c9a481d33b4b6cbf181a6b02ba80f0b9c6a4423 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sat, 31 May 2014 16:08:41 +0000 Subject: [PATCH 118/232] [CRT] * Update scanf.h. CORE-8080 svn path=/trunk/; revision=63516 --- reactos/lib/sdk/crt/string/scanf.h | 140 +++++++++++++++++++++++++---- reactos/media/doc/README.WINE | 2 +- 2 files changed, 125 insertions(+), 17 deletions(-) diff --git a/reactos/lib/sdk/crt/string/scanf.h b/reactos/lib/sdk/crt/string/scanf.h index cb37ed9fee1..4a28c921c20 100644 --- a/reactos/lib/sdk/crt/string/scanf.h +++ b/reactos/lib/sdk/crt/string/scanf.h @@ -37,8 +37,8 @@ #define _CHAR_ char #define _EOF_ EOF #define _EOF_RET EOF -#define _ISSPACE_(c) isspace((unsigned char)(c)) -#define _ISDIGIT_(c) isdigit((unsigned char)(c)) +#define _ISSPACE_(c) isspace(c) +#define _ISDIGIT_(c) isdigit(c) #define _WIDE2SUPPORTED_(c) c /* FIXME: convert wide char to char */ #define _CHAR2SUPPORTED_(c) c /* No conversion needed (char to char) */ #define _CHAR2DIGIT_(c, base) char2digit((c), (base)) @@ -48,17 +48,48 @@ #ifdef CONSOLE #define _GETC_(file) (consumed++, _getch()) #define _UNGETC_(nch, file) do { _ungetch(nch); consumed--; } while(0) +#define _LOCK_FILE_(file) _lock_file(stdin) +#define _UNLOCK_FILE_(file) _unlock_file(stdin) +#ifdef WIDE_SCANF +#ifdef SECURE +#define _FUNCTION_ static int vcwscanf_s_l(const char *format, _locale_t locale, __ms_va_list ap) +#else /* SECURE */ +#define _FUNCTION_ static int vcwscanf_l(const char *format, _locale_t locale, __ms_va_list ap) +#endif /* SECURE */ +#else /* WIDE_SCANF */ #ifdef SECURE #define _FUNCTION_ static int vcscanf_s_l(const char *format, _locale_t locale, __ms_va_list ap) #else /* SECURE */ #define _FUNCTION_ static int vcscanf_l(const char *format, _locale_t locale, __ms_va_list ap) #endif /* SECURE */ +#endif /* WIDE_SCANF */ #else #ifdef STRING #undef _EOF_ #define _EOF_ 0 +#ifdef STRING_LEN +#define _GETC_(file) (consumed==length ? '\0' : (consumed++, *file++)) +#define _UNGETC_(nch, file) do { file--; consumed--; } while(0) +#define _LOCK_FILE_(file) do {} while(0) +#define _UNLOCK_FILE_(file) do {} while(0) +#ifdef WIDE_SCANF +#ifdef SECURE +#define _FUNCTION_ static int vsnwscanf_s_l(const wchar_t *file, size_t length, const wchar_t *format, _locale_t locale, __ms_va_list ap) +#else /* SECURE */ +#define _FUNCTION_ static int vsnwscanf_l(const wchar_t *file, size_t length, const wchar_t *format, _locale_t locale, __ms_va_list ap) +#endif /* SECURE */ +#else /* WIDE_SCANF */ +#ifdef SECURE +#define _FUNCTION_ static int vsnscanf_s_l(const char *file, size_t length, const char *format, _locale_t locale, __ms_va_list ap) +#else /* SECURE */ +#define _FUNCTION_ static int vsnscanf_l(const char *file, size_t length, const char *format, _locale_t locale, __ms_va_list ap) +#endif /* SECURE */ +#endif /* WIDE_SCANF */ +#else /* STRING_LEN */ #define _GETC_(file) (consumed++, *file++) #define _UNGETC_(nch, file) do { file--; consumed--; } while(0) +#define _LOCK_FILE_(file) do {} while(0) +#define _UNLOCK_FILE_(file) do {} while(0) #ifdef WIDE_SCANF #ifdef SECURE #define _FUNCTION_ static int vswscanf_s_l(const wchar_t *file, const wchar_t *format, _locale_t locale, __ms_va_list ap) @@ -72,10 +103,13 @@ #define _FUNCTION_ static int vsscanf_l(const char *file, const char *format, _locale_t locale, __ms_va_list ap) #endif /* SECURE */ #endif /* WIDE_SCANF */ +#endif /* STRING_LEN */ #else /* STRING */ #ifdef WIDE_SCANF #define _GETC_(file) (consumed++, fgetwc(file)) #define _UNGETC_(nch, file) do { ungetwc(nch, file); consumed--; } while(0) +#define _LOCK_FILE_(file) _lock_file(file) +#define _UNLOCK_FILE_(file) _unlock_file(file) #ifdef SECURE #define _FUNCTION_ static int vfwscanf_s_l(FILE* file, const wchar_t *format, _locale_t locale, __ms_va_list ap) #else /* SECURE */ @@ -84,6 +118,8 @@ #else /* WIDE_SCANF */ #define _GETC_(file) (consumed++, fgetc(file)) #define _UNGETC_(nch, file) do { ungetc(nch, file); consumed--; } while(0) +#define _LOCK_FILE_(file) _lock_file(file) +#define _UNLOCK_FILE_(file) _unlock_file(file) #ifdef SECURE #define _FUNCTION_ static int vfscanf_s_l(FILE* file, const char *format, _locale_t locale, __ms_va_list ap) #else /* SECURE */ @@ -103,15 +139,17 @@ _FUNCTION_ { TRACE("(%s):\n", debugstr_a(format)); #else /* CONSOLE */ #ifdef STRING - TRACE("%s (%s)\n", file, debugstr_a(format)); + TRACE("%s (%s)\n", debugstr_a(file), debugstr_a(format)); #else /* STRING */ TRACE("%p (%s)\n", file, debugstr_a(format)); #endif /* STRING */ #endif /* CONSOLE */ #endif /* WIDE_SCANF */ + _LOCK_FILE_(file); nch = _GETC_(file); if (nch == _EOF_) { + _UNLOCK_FILE_(file); return _EOF_RET; } @@ -205,7 +243,7 @@ _FUNCTION_ { base = 0; number: { /* read an integer */ - __int64 cur = 0; + ULONGLONG cur = 0; int negative = 0; int seendigit=0; /* skip initial whitespace */ @@ -259,7 +297,7 @@ _FUNCTION_ { if (!seendigit) break; /* not a valid number */ st = 1; if (!suppress) { -#define _SET_NUMBER_(type) *va_arg(ap, type*) = (type)(negative ? -cur : cur) +#define _SET_NUMBER_(type) *va_arg(ap, type*) = negative ? -cur : cur if (I64_prefix) _SET_NUMBER_(LONGLONG); else if (l_prefix) _SET_NUMBER_(LONG); else if (h_prefix == 1) _SET_NUMBER_(short int); @@ -421,12 +459,26 @@ _FUNCTION_ { #endif /* WIDE_SCANF */ charstring: { /* read a word into a char */ char *sptr = suppress ? NULL : va_arg(ap, char*); + char *sptr_beg = sptr; +#ifdef SECURE + unsigned size = suppress ? UINT_MAX : va_arg(ap, unsigned); +#else + unsigned size = UINT_MAX; +#endif /* skip initial whitespace */ while ((nch!=_EOF_) && _ISSPACE_(nch)) nch = _GETC_(file); /* read until whitespace */ while (width!=0 && (nch!=_EOF_) && !_ISSPACE_(nch)) { - if (!suppress) *sptr++ = _CHAR2SUPPORTED_(nch); + if (!suppress) { + *sptr++ = _CHAR2SUPPORTED_(nch); + if(size>1) size--; + else { + _UNLOCK_FILE_(file); + *sptr_beg = 0; + return rd; + } + } st++; nch = _GETC_(file); if (width>0) width--; @@ -437,12 +489,26 @@ _FUNCTION_ { break; widecharstring: { /* read a word into a wchar_t* */ wchar_t *sptr = suppress ? NULL : va_arg(ap, wchar_t*); + wchar_t *sptr_beg = sptr; +#ifdef SECURE + unsigned size = suppress ? UINT_MAX : va_arg(ap, unsigned); +#else + unsigned size = UINT_MAX; +#endif /* skip initial whitespace */ while ((nch!=_EOF_) && _ISSPACE_(nch)) nch = _GETC_(file); /* read until whitespace */ while (width!=0 && (nch!=_EOF_) && !_ISSPACE_(nch)) { - if (!suppress) *sptr++ = _WIDE2SUPPORTED_(nch); + if (!suppress) { + *sptr++ = _WIDE2SUPPORTED_(nch); + if(size>1) size--; + else { + _UNLOCK_FILE_(file); + *sptr_beg = 0; + return rd; + } + } st++; nch = _GETC_(file); if (width>0) width--; @@ -471,10 +537,24 @@ _FUNCTION_ { #endif /* WIDE_SCANF */ character: { /* read single character into char */ char *str = suppress ? NULL : va_arg(ap, char*); + char *pstr = str; +#ifdef SECURE + unsigned size = suppress ? UINT_MAX : va_arg(ap, unsigned)/sizeof(char); +#else + unsigned size = UINT_MAX; +#endif if (width == -1) width = 1; - while ((width != 0) && (nch != _EOF_)) + while (width && (nch != _EOF_)) { - if (!suppress) *str++ = _CHAR2SUPPORTED_(nch); + if (!suppress) { + *str++ = _CHAR2SUPPORTED_(nch); + if(size) size--; + else { + _UNLOCK_FILE_(file); + *pstr = 0; + return rd; + } + } st++; width--; nch = _GETC_(file); @@ -483,10 +563,24 @@ _FUNCTION_ { break; widecharacter: { /* read single character into a wchar_t */ wchar_t *str = suppress ? NULL : va_arg(ap, wchar_t*); + wchar_t *pstr = str; +#ifdef SECURE + unsigned size = suppress ? UINT_MAX : va_arg(ap, unsigned)/sizeof(wchar_t); +#else + unsigned size = UINT_MAX; +#endif if (width == -1) width = 1; - while ((width != 0) && (nch != _EOF_)) + while (width && (nch != _EOF_)) { - if (!suppress) *str++ = _WIDE2SUPPORTED_(nch); + if (!suppress) { + *str++ = _WIDE2SUPPORTED_(nch); + if(size) size--; + else { + _UNLOCK_FILE_(file); + *pstr = 0; + return rd; + } + } st++; width--; nch = _GETC_(file); @@ -519,10 +613,15 @@ _FUNCTION_ { RTL_BITMAP bitMask; ULONG *Mask; int invert = 0; /* Set if we are NOT to find the chars */ +#ifdef SECURE + unsigned size = suppress ? UINT_MAX : va_arg(ap, unsigned)/sizeof(_CHAR_); +#else + unsigned size = UINT_MAX; +#endif - /* Init our bitmap */ - Mask = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, _BITMAPSIZE_/8); - RtlInitializeBitMap(&bitMask, Mask, _BITMAPSIZE_); + /* Init our bitmap */ + Mask = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, _BITMAPSIZE_/8); + RtlInitializeBitMap(&bitMask, Mask, _BITMAPSIZE_); /* Read the format */ format++; @@ -541,7 +640,7 @@ _FUNCTION_ { if ((*(format - 1)) < *(format + 1)) RtlSetBits(&bitMask, *(format - 1) +1 , *(format + 1) - *(format - 1)); else - RtlSetBits(&bitMask, *(format + 1) , *(format - 1) - *(format + 1)); + RtlSetBits(&bitMask, *(format + 1) , *(format - 1) - *(format + 1)); format++; } else RtlSetBits(&bitMask, *format, 1); @@ -563,10 +662,16 @@ _FUNCTION_ { st++; nch = _GETC_(file); if (width>0) width--; + if(size>1) size--; + else { + _UNLOCK_FILE_(file); + *str = 0; + return rd; + } } /* terminate */ if (!suppress) *sptr = 0; - HeapFree(GetProcessHeap(), 0, Mask); + HeapFree(GetProcessHeap(), 0, Mask); } break; default: @@ -604,6 +709,7 @@ _FUNCTION_ { } TRACE("returning %d\n", rd); + _UNLOCK_FILE_(file); return rd; } @@ -617,5 +723,7 @@ _FUNCTION_ { #undef _CHAR2DIGIT_ #undef _GETC_ #undef _UNGETC_ +#undef _LOCK_FILE_ +#undef _UNLOCK_FILE_ #undef _FUNCTION_ #undef _BITMAPSIZE_ diff --git a/reactos/media/doc/README.WINE b/reactos/media/doc/README.WINE index 781541477d4..fa5845e65e7 100644 --- a/reactos/media/doc/README.WINE +++ b/reactos/media/doc/README.WINE @@ -277,7 +277,7 @@ msvcrt - reactos/lib/sdk/crt/except/cpp.c # Synced at 20080528 reactos/lib/sdk/crt/except/cppexcept.c # Synced at 20071111 reactos/lib/sdk/crt/signal/xcptinfo.c # Synced to Wine-1.7.17 - reactos/lib/sdk/crt/string/scanf.c/h # Synced to Wine-1_1_27 + reactos/lib/sdk/crt/string/scanf.c/h # Synced to Wine-1.7.17 reactos/lib/sdk/crt/strings/wcs.c # Synced at 20080611 reactos/lib/sdk/crt/wine/heap.c # Synced at 20080529 reactos/lib/sdk/crt/wine/undname.c # Synced at 20081130 From 35767099ce7c7c6a58c19d780884da9f4920fa06 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sat, 31 May 2014 16:19:36 +0000 Subject: [PATCH 119/232] [BROWSEUI] Silence warnings about unused but set variables [MESA] Silence warnings about unused but set variables and type limits [GENINC] Remove obsolete file [OBJ2BIN] Fix a typo svn path=/trunk/; revision=63517 --- reactos/dll/opengl/mesa/main/CMakeLists.txt | 1 + reactos/dll/opengl/mesa/swrast/CMakeLists.txt | 4 + reactos/dll/win32/browseui/CMakeLists.txt | 4 + reactos/tools/geninc/data.c | 1567 ----------------- reactos/tools/obj2bin/obj2bin.c | 2 +- 5 files changed, 10 insertions(+), 1568 deletions(-) delete mode 100644 reactos/tools/geninc/data.c diff --git a/reactos/dll/opengl/mesa/main/CMakeLists.txt b/reactos/dll/opengl/mesa/main/CMakeLists.txt index 03a1029c31e..ecd653187f8 100644 --- a/reactos/dll/opengl/mesa/main/CMakeLists.txt +++ b/reactos/dll/opengl/mesa/main/CMakeLists.txt @@ -78,4 +78,5 @@ add_library(mesa_main STATIC ${SOURCE}) add_pch(mesa_main precomp.h SOURCE) if(NOT MSVC) allow_warnings(mesa_main) + add_target_compile_flags(mesa_main "-Wno-type-limits") endif() diff --git a/reactos/dll/opengl/mesa/swrast/CMakeLists.txt b/reactos/dll/opengl/mesa/swrast/CMakeLists.txt index f818adb5aad..bc78d599e76 100644 --- a/reactos/dll/opengl/mesa/swrast/CMakeLists.txt +++ b/reactos/dll/opengl/mesa/swrast/CMakeLists.txt @@ -32,3 +32,7 @@ add_pch(mesa_swrast precomp.h SOURCE) if(NOT MSVC) allow_warnings(mesa_swrast) endif() + +if(NOT MSVC) + add_target_compile_flags(mesa_swrast "-Wno-unused-variable") +endif() diff --git a/reactos/dll/win32/browseui/CMakeLists.txt b/reactos/dll/win32/browseui/CMakeLists.txt index b9966066e02..894ebda6413 100644 --- a/reactos/dll/win32/browseui/CMakeLists.txt +++ b/reactos/dll/win32/browseui/CMakeLists.txt @@ -58,3 +58,7 @@ add_importlibs(browseui add_pch(browseui precomp.h SOURCE) add_cd_file(TARGET browseui DESTINATION reactos/system32 FOR all) + +if(NOT MSVC) + add_target_compile_flags(browseui "-Wno-unused-but-set-variable") +endif() diff --git a/reactos/tools/geninc/data.c b/reactos/tools/geninc/data.c deleted file mode 100644 index b53807109d3..00000000000 --- a/reactos/tools/geninc/data.c +++ /dev/null @@ -1,1567 +0,0 @@ -#undef __MSVCRT__ -#include - -/* DDK/IFS/NDK Headers */ -#include -#include -#include -#include -#include -#include - -/* KD Support */ -#define NOEXTAPI -#include -#include -#include - -typedef struct -{ - UCHAR Type; - CHAR Name[60]; - ULONGLONG Value; -} ASMGENDATA; - -#define RAW(x) {0, #x, 0} -#define CONSTANT(name) {1, #name, name} -#define OFFSET(name, struct, member) {1, #name, FIELD_OFFSET(struct, member)} -#define RELOFFSET(name, struct, member, to) {1, #name, FIELD_OFFSET(struct, member) - FIELD_OFFSET(struct, to)} -#define SIZE(name, struct) {1, #name, sizeof(struct)} -#define HEADER(x) {2, x, 0} - -ASMGENDATA Table[] = -{ - -/* PORTABLE CONSTANTS ********************************************************/ - - HEADER("Pointer size"), - SIZE(SizeofPointer, PVOID), - - HEADER("Breakpoints"), - CONSTANT(BREAKPOINT_BREAK), - CONSTANT(BREAKPOINT_PRINT), - CONSTANT(BREAKPOINT_PROMPT), - CONSTANT(BREAKPOINT_LOAD_SYMBOLS), - CONSTANT(BREAKPOINT_UNLOAD_SYMBOLS), - CONSTANT(BREAKPOINT_COMMAND_STRING), - - HEADER("Context Frame Flags"), - CONSTANT(CONTEXT_FULL), - CONSTANT(CONTEXT_CONTROL), - CONSTANT(CONTEXT_INTEGER), - CONSTANT(CONTEXT_SEGMENTS), - CONSTANT(CONTEXT_FLOATING_POINT), - CONSTANT(CONTEXT_DEBUG_REGISTERS), - - HEADER("Exception flags"), - CONSTANT(EXCEPTION_NONCONTINUABLE), - CONSTANT(EXCEPTION_UNWINDING), - CONSTANT(EXCEPTION_EXIT_UNWIND), - CONSTANT(EXCEPTION_STACK_INVALID), - CONSTANT(EXCEPTION_NESTED_CALL), - CONSTANT(EXCEPTION_TARGET_UNWIND), - CONSTANT(EXCEPTION_COLLIDED_UNWIND), - CONSTANT(EXCEPTION_UNWIND), - CONSTANT(EXCEPTION_EXECUTE_HANDLER), - CONSTANT(EXCEPTION_CONTINUE_SEARCH), - CONSTANT(EXCEPTION_CONTINUE_EXECUTION), -#ifdef _X86_ - //CONSTANT(EXCEPTION_CHAIN_END), - //CONSTANT(FIXED_NTVDMSTATE_LINEAR), -#endif - - HEADER("Exception types"), - CONSTANT(ExceptionContinueExecution), - CONSTANT(ExceptionContinueSearch), - CONSTANT(ExceptionNestedException), - CONSTANT(ExceptionCollidedUnwind), - - HEADER("Lock Queue"), - CONSTANT(LOCK_QUEUE_WAIT), - CONSTANT(LOCK_QUEUE_OWNER), - CONSTANT(LockQueueDispatcherLock), - - HEADER("Performance Definitions"), -// CONSTANT(PERF_CONTEXTSWAP_OFFSET), -// CONSTANT(PERF_CONTEXTSWAP_FLAG), -// CONSTANT(PERF_INTERRUPT_OFFSET), -// CONSTANT(PERF_INTERRUPT_FLAG), -// CONSTANT(PERF_PROFILE_OFFSET), -// CONSTANT(PERF_PROFILE_FLAG), -// CONSTANT(PERF_SYSCALL_OFFSET), -// CONSTANT(PERF_SYSCALL_FLAG), -// CONSTANT(PERF_SPINLOCK_OFFSET), -// CONSTANT(PERF_SPINLOCK_FLAG), -// CONSTANT(NTOS_YIELD_MACRO), - - HEADER("Process states"), - CONSTANT(ProcessInMemory), - CONSTANT(ProcessOutOfMemory), - CONSTANT(ProcessInTransition), - - HEADER("Processor mode"), - CONSTANT(KernelMode), - CONSTANT(UserMode), - - HEADER("Status codes"), - CONSTANT(STATUS_ACCESS_VIOLATION), - CONSTANT(STATUS_ASSERTION_FAILURE), - CONSTANT(STATUS_ARRAY_BOUNDS_EXCEEDED), - CONSTANT(STATUS_BAD_COMPRESSION_BUFFER), - CONSTANT(STATUS_BREAKPOINT), - CONSTANT(STATUS_CALLBACK_POP_STACK), - CONSTANT(STATUS_DATATYPE_MISALIGNMENT), - CONSTANT(STATUS_FLOAT_DENORMAL_OPERAND), - CONSTANT(STATUS_FLOAT_DIVIDE_BY_ZERO), - CONSTANT(STATUS_FLOAT_INEXACT_RESULT), - CONSTANT(STATUS_FLOAT_INVALID_OPERATION), - CONSTANT(STATUS_FLOAT_OVERFLOW), - CONSTANT(STATUS_FLOAT_STACK_CHECK), - CONSTANT(STATUS_FLOAT_UNDERFLOW), - CONSTANT(STATUS_FLOAT_MULTIPLE_FAULTS), - CONSTANT(STATUS_FLOAT_MULTIPLE_TRAPS), - CONSTANT(STATUS_GUARD_PAGE_VIOLATION), - CONSTANT(STATUS_ILLEGAL_FLOAT_CONTEXT), - CONSTANT(STATUS_ILLEGAL_INSTRUCTION), - CONSTANT(STATUS_INSTRUCTION_MISALIGNMENT), - CONSTANT(STATUS_INVALID_HANDLE), - CONSTANT(STATUS_INVALID_LOCK_SEQUENCE), - CONSTANT(STATUS_INVALID_OWNER), - CONSTANT(STATUS_INVALID_PARAMETER), - CONSTANT(STATUS_INVALID_PARAMETER_1), - CONSTANT(STATUS_INVALID_SYSTEM_SERVICE), -// CONSTANT(STATUS_INVALID_THREAD), - CONSTANT(STATUS_INTEGER_DIVIDE_BY_ZERO), - CONSTANT(STATUS_INTEGER_OVERFLOW), - CONSTANT(STATUS_IN_PAGE_ERROR), - CONSTANT(STATUS_KERNEL_APC), - CONSTANT(STATUS_LONGJUMP), - CONSTANT(STATUS_NO_CALLBACK_ACTIVE), - CONSTANT(STATUS_NO_EVENT_PAIR), - CONSTANT(STATUS_PRIVILEGED_INSTRUCTION), - CONSTANT(STATUS_SINGLE_STEP), - CONSTANT(STATUS_STACK_BUFFER_OVERRUN), - CONSTANT(STATUS_STACK_OVERFLOW), - CONSTANT(STATUS_SUCCESS), - CONSTANT(STATUS_THREAD_IS_TERMINATING), - CONSTANT(STATUS_TIMEOUT), - CONSTANT(STATUS_UNWIND), - CONSTANT(STATUS_UNWIND_CONSOLIDATE), - CONSTANT(STATUS_USER_APC), - CONSTANT(STATUS_WAKE_SYSTEM_DEBUGGER), - - HEADER("TLS defines"), - CONSTANT(TLS_MINIMUM_AVAILABLE), - CONSTANT(TLS_EXPANSION_SLOTS), - - HEADER("Thread states"), - CONSTANT(Initialized), - CONSTANT(Ready), - CONSTANT(Running), - CONSTANT(Standby), - CONSTANT(Terminated), - CONSTANT(Waiting), - - HEADER("Wait type / reason"), - CONSTANT(WrExecutive), - CONSTANT(WrMutex), - CONSTANT(WrDispatchInt), - CONSTANT(WrQuantumEnd), - CONSTANT(WrEventPair), - CONSTANT(WaitAny), - CONSTANT(WaitAll), - - HEADER("Interrupt object types"), -// CONSTANT(InLevelSensitive), -// CONSTANT(InLatched), - - HEADER("Bug Check Codes"), - CONSTANT(APC_INDEX_MISMATCH), - CONSTANT(INVALID_AFFINITY_SET), - CONSTANT(INVALID_DATA_ACCESS_TRAP), - CONSTANT(IRQL_NOT_GREATER_OR_EQUAL), - CONSTANT(IRQL_NOT_LESS_OR_EQUAL), - CONSTANT(NO_USER_MODE_CONTEXT), - CONSTANT(SPIN_LOCK_ALREADY_OWNED), - CONSTANT(SPIN_LOCK_NOT_OWNED), - CONSTANT(THREAD_NOT_MUTEX_OWNER), - CONSTANT(TRAP_CAUSE_UNKNOWN), - CONSTANT(KMODE_EXCEPTION_NOT_HANDLED), - CONSTANT(KERNEL_APC_PENDING_DURING_EXIT), - CONSTANT(PANIC_STACK_SWITCH), - CONSTANT(DATA_BUS_ERROR), - CONSTANT(INSTRUCTION_BUS_ERROR), - CONSTANT(SYSTEM_EXIT_OWNED_MUTEX), -// CONSTANT(SYSTEM_UNWIND_PREVIOUS_USER), -// CONSTANT(SYSTEM_SERVICE_EXCEPTION), -// CONSTANT(INTERRUPT_UNWIND_ATTEMPTED), -// CONSTANT(INTERRUPT_EXCEPTION_NOT_HANDLED), - CONSTANT(PAGE_FAULT_WITH_INTERRUPTS_OFF), - CONSTANT(IRQL_GT_ZERO_AT_SYSTEM_SERVICE), - CONSTANT(DATA_COHERENCY_EXCEPTION), - CONSTANT(INSTRUCTION_COHERENCY_EXCEPTION), - CONSTANT(HAL1_INITIALIZATION_FAILED), - CONSTANT(UNEXPECTED_KERNEL_MODE_TRAP), - CONSTANT(NMI_HARDWARE_FAILURE), - CONSTANT(SPIN_LOCK_INIT_FAILURE), - CONSTANT(ATTEMPTED_SWITCH_FROM_DPC), -// CONSTANT(MUTEX_ALREADY_OWNED), -// CONSTANT(HARDWARE_INTERRUPT_STORM), -// CONSTANT(RECURSIVE_MACHINE_CHECK), -// CONSTANT(RECURSIVE_NMI), - - HEADER("IRQL"), - CONSTANT(PASSIVE_LEVEL), - CONSTANT(APC_LEVEL), - CONSTANT(DISPATCH_LEVEL), -#ifdef _M_AMD64 - CONSTANT(CLOCK_LEVEL), -#else - CONSTANT(CLOCK1_LEVEL), - CONSTANT(CLOCK2_LEVEL), -#endif - CONSTANT(IPI_LEVEL), - CONSTANT(POWER_LEVEL), - CONSTANT(PROFILE_LEVEL), - CONSTANT(HIGH_LEVEL), - RAW("#ifdef NT_UP"), - {1, "SYNCH_LEVEL", DISPATCH_LEVEL}, - RAW("#else"), - {1, "SYNCH_LEVEL", (IPI_LEVEL - 2)}, - RAW("#endif"), - - HEADER("Stack sizes"), - CONSTANT(KERNEL_STACK_SIZE), - CONSTANT(KERNEL_LARGE_STACK_SIZE), - CONSTANT(KERNEL_LARGE_STACK_COMMIT), -// CONSTANT(DOUBLE_FAULT_STACK_SIZE), -#ifdef _M_AMD64 - CONSTANT(KERNEL_MCA_EXCEPTION_STACK_SIZE), - CONSTANT(NMI_STACK_SIZE), -#endif - - HEADER("Thread flags"), -// CONSTANT(THREAD_FLAGS_CYCLE_PROFILING), -// CONSTANT(THREAD_FLAGS_CYCLE_PROFILING_LOCK_BIT), -// CONSTANT(THREAD_FLAGS_CYCLE_PROFILING_LOCK), -// CONSTANT(THREAD_FLAGS_COUNTER_PROFILING), -// CONSTANT(THREAD_FLAGS_COUNTER_PROFILING_LOCK_BIT), -// CONSTANT(THREAD_FLAGS_COUNTER_PROFILING_LOCK), -// CONSTANT(THREAD_FLAGS_CPU_THROTTLED), -// CONSTANT(THREAD_FLAGS_CPU_THROTTLED_BIT), -// CONSTANT(THREAD_FLAGS_ACCOUNTING_ANY), - - HEADER("Miscellaneous Definitions"), -// CONSTANT(BASE_PRIORITY_THRESHOLD), -// CONSTANT(EVENT_PAIR_INCREMENT), - CONSTANT(LOW_REALTIME_PRIORITY), - CONSTANT(CLOCK_QUANTUM_DECREMENT), -// CONSTANT(READY_SKIP_QUANTUM), -// CONSTANT(THREAD_QUANTUM), - CONSTANT(WAIT_QUANTUM_DECREMENT), -// CONSTANT(ROUND_TRIP_DECREMENT_COUNT), - CONSTANT(MAXIMUM_PROCESSORS), - CONSTANT(INITIAL_STALL_COUNT), - CONSTANT(EXCEPTION_EXECUTE_FAULT), -// CONSTANT(KCACHE_ERRATA_MONITOR_FLAGS), -// CONSTANT(KI_EXCEPTION_GP_FAULT), -// CONSTANT(KI_EXCEPTION_INVALID_OP), -// CONSTANT(KI_EXCEPTION_INTEGER_DIVIDE_BY_ZERO), - CONSTANT(KI_EXCEPTION_ACCESS_VIOLATION), -// CONSTANT(TARGET_FREEZE), -// CONSTANT(BlackHole), - CONSTANT(Executive), - CONSTANT(FALSE), - CONSTANT(TRUE), - CONSTANT(DBG_STATUS_CONTROL_C), - CONSTANT(USER_SHARED_DATA), -// CONSTANT(MM_SHARED_USER_DATA_VA), - CONSTANT(PAGE_SIZE), -// CONSTANT(KERNEL_STACK_CONTROL_LARGE_STACK), -// CONSTANT(KI_DPC_ALL_FLAGS), -// CONSTANT(DISPATCH_LENGTH), - CONSTANT(MAXIMUM_IDTVECTOR), -// CONSTANT(MAXIMUM_PRIMARY_VECTOR), - CONSTANT(PRIMARY_VECTOR_BASE), - CONSTANT(RPL_MASK), - CONSTANT(MODE_MASK), -// CONSTANT(KTHREAD_AUTO_ALIGNMENT_BIT), -// CONSTANT(KTHREAD_GUI_THREAD_MASK), -// CONSTANT(KI_SLIST_FAULT_COUNT_MAXIMUM), - CONSTANT(NUMBER_SERVICE_TABLES), - CONSTANT(SERVICE_NUMBER_MASK), - CONSTANT(SERVICE_TABLE_SHIFT), - CONSTANT(SERVICE_TABLE_MASK), - CONSTANT(SERVICE_TABLE_TEST), - -/* ARCHITECTURE SPECIFIC CONTSTANTS ******************************************/ - -#if defined(_M_AMD64) || defined(_M_IX86) - - HEADER("CR0 flags"), - CONSTANT(CR0_PE), - CONSTANT(CR0_MP), - CONSTANT(CR0_EM), - CONSTANT(CR0_TS), - CONSTANT(CR0_ET), - CONSTANT(CR0_NE), - CONSTANT(CR0_WP), - CONSTANT(CR0_AM), - CONSTANT(CR0_NW), - CONSTANT(CR0_CD), - CONSTANT(CR0_PG), - - HEADER("CR4 flags"), - CONSTANT(CR4_VME), - CONSTANT(CR4_PVI), - CONSTANT(CR4_TSD), - CONSTANT(CR4_DE), - CONSTANT(CR4_PSE), - CONSTANT(CR4_PAE), - CONSTANT(CR4_MCE), - CONSTANT(CR4_PGE), - CONSTANT(CR4_FXSR), - CONSTANT(CR4_XMMEXCPT), -#if defined(_M_IX86) -// CONSTANT(CR4_PGE_V), -// CONSTANT(CR4_XSAVE), -#elif defined(_M_AMD64) - CONSTANT(CR4_CHANNELS), -#endif - - HEADER("KeFeatureBits flags"), - CONSTANT(KF_RDTSC), - CONSTANT(KF_CR4), - CONSTANT(KF_GLOBAL_PAGE), - CONSTANT(KF_LARGE_PAGE), - CONSTANT(KF_CMPXCHG8B), - CONSTANT(KF_FAST_SYSCALL), -#ifdef _M_IX86 - CONSTANT(KF_V86_VIS), -// CONSTANT(KF_XSTATE), -#endif - - HEADER("Machine type definitions"), - CONSTANT(MACHINE_TYPE_ISA), - CONSTANT(MACHINE_TYPE_EISA), - CONSTANT(MACHINE_TYPE_MCA), - -#endif - -#ifdef _M_IX86 - - HEADER("EFLAGS"), - CONSTANT(EFLAGS_TF), - CONSTANT(EFLAGS_INTERRUPT_MASK), - CONSTANT(EFLAGS_V86_MASK), - CONSTANT(EFLAGS_ALIGN_CHECK), - CONSTANT(EFLAGS_VIF), - CONSTANT(EFLAGS_VIP), - CONSTANT(EFLAGS_USER_SANITIZE), - - HEADER("KDGT selectors"), - CONSTANT(KGDT_R3_DATA), - CONSTANT(KGDT_R3_CODE), - CONSTANT(KGDT_R0_CODE), - CONSTANT(KGDT_R0_DATA), - CONSTANT(KGDT_R0_PCR), -// CONSTANT(KGDT_STACK16), -// CONSTANT(KGDT_CODE16), - CONSTANT(KGDT_TSS), - CONSTANT(KGDT_R3_TEB), - CONSTANT(KGDT_DF_TSS), - CONSTANT(KGDT_NMI_TSS), - CONSTANT(KGDT_LDT), - - CONSTANT(NPX_STATE_NOT_LOADED), - CONSTANT(NPX_STATE_LOADED), -// CONSTANT(NPX_MASK_LAZY), - -/* - HEADER("VDM constants"), - CONSTANT(VDM_INDEX_Invalid), - CONSTANT(VDM_INDEX_0F), - CONSTANT(VDM_INDEX_ESPrefix), - CONSTANT(VDM_INDEX_CSPrefix), - CONSTANT(VDM_INDEX_SSPrefix), - CONSTANT(VDM_INDEX_DSPrefix), - CONSTANT(VDM_INDEX_FSPrefix), - CONSTANT(VDM_INDEX_GSPrefix), - CONSTANT(VDM_INDEX_OPER32Prefix), - CONSTANT(VDM_INDEX_ADDR32Prefix), - CONSTANT(VDM_INDEX_INSB), - CONSTANT(VDM_INDEX_INSW), - CONSTANT(VDM_INDEX_OUTSB), - CONSTANT(VDM_INDEX_OUTSW), - CONSTANT(VDM_INDEX_PUSHF), - CONSTANT(VDM_INDEX_POPF), - CONSTANT(VDM_INDEX_INTnn), - CONSTANT(VDM_INDEX_INTO), - CONSTANT(VDM_INDEX_IRET), - CONSTANT(VDM_INDEX_NPX), - CONSTANT(VDM_INDEX_INBimm), - CONSTANT(VDM_INDEX_INWimm), - CONSTANT(VDM_INDEX_OUTBimm), - CONSTANT(VDM_INDEX_OUTWimm), - CONSTANT(VDM_INDEX_INB), - CONSTANT(VDM_INDEX_INW), - CONSTANT(VDM_INDEX_OUTB), - CONSTANT(VDM_INDEX_OUTW), - CONSTANT(VDM_INDEX_LOCKPrefix), - CONSTANT(VDM_INDEX_REPNEPrefix), - CONSTANT(VDM_INDEX_REPPrefix), - CONSTANT(VDM_INDEX_CLI), - CONSTANT(VDM_INDEX_STI), - CONSTANT(VDM_INDEX_HLT), - CONSTANT(MAX_VDM_INDEX), -*/ - CONSTANT(PF_XMMI_INSTRUCTIONS_AVAILABLE), - CONSTANT(EFLAG_SELECT), -// CONSTANT(IPI_FREEZE), -// CONSTANT(XSAVE_PRESENT), - -#elif defined(_M_AMD64) - - HEADER("EFLAGS"), - CONSTANT(EFLAGS_TF_MASK), - CONSTANT(EFLAGS_TF_SHIFT), - CONSTANT(EFLAGS_IF_MASK), - CONSTANT(EFLAGS_IF_SHIFT), - CONSTANT(EFLAGS_ID_MASK), - - HEADER("Hypervisor Enlightenment Definitions"), - CONSTANT(HV_MMU_USE_HYPERCALL_FOR_ADDRESS_SWITCH), - CONSTANT(HV_MMU_USE_HYPERCALL_FOR_LOCAL_FLUSH), - CONSTANT(HV_MMU_USE_HYPERCALL_FOR_REMOTE_FLUSH), - CONSTANT(HV_X64_MSR_APIC_EOI), - CONSTANT(HV_APIC_ENLIGHTENED), - CONSTANT(HV_KE_USE_HYPERCALL_FOR_LONG_SPIN_WAIT), - CONSTANT(HV_VIRTUAL_APIC_NO_EOI_REQUIRED_V), - CONSTANT(HvApicFlags), - - HEADER("KDGT selectors"), - CONSTANT(KGDT64_NULL), - CONSTANT(KGDT64_R0_CODE), - CONSTANT(KGDT64_R0_DATA), - CONSTANT(KGDT64_R3_CMCODE), - CONSTANT(KGDT64_R3_DATA), - CONSTANT(KGDT64_R3_CODE), - CONSTANT(KGDT64_SYS_TSS), - CONSTANT(KGDT64_R3_CMTEB), - - HEADER("Machine Specific Register Numbers"), - CONSTANT(MSR_EFER), - CONSTANT(MSR_STAR), - CONSTANT(MSR_LSTAR), - CONSTANT(MSR_CSTAR), - CONSTANT(MSR_SYSCALL_MASK), - CONSTANT(MSR_FS_BASE), - CONSTANT(MSR_GS_BASE), - CONSTANT(MSR_GS_SWAP), - CONSTANT(MSR_MCG_STATUS), - CONSTANT(MSR_AMD_ACCESS), - - HEADER("Flags for MSR_EFER"), - CONSTANT(MSR_LMA), - CONSTANT(MSR_LME), - CONSTANT(MSR_SCE), - CONSTANT(MSR_NXE), - CONSTANT(MSR_PAT), - CONSTANT(MSR_DEGUG_CTL), - CONSTANT(MSR_LAST_BRANCH_FROM), - CONSTANT(MSR_LAST_BRANCH_TO), - CONSTANT(MSR_LAST_EXCEPTION_FROM), - CONSTANT(MSR_LAST_EXCEPTION_TO), - - HEADER("Flags for MSR_DEGUG_CTL"), - CONSTANT(MSR_DEBUG_CTL_LBR), - CONSTANT(MSR_DEBUG_CRL_BTF), - -#endif - -#if 0 - HEADER("Fatal exception codes"), - CONSTANT(EXCEPTION_DIVIDED_BY_ZERO), - CONSTANT(EXCEPTION_DEBUG), - CONSTANT(EXCEPTION_NMI), - CONSTANT(EXCEPTION_INT3), - CONSTANT(EXCEPTION_BOUND_CHECK), - CONSTANT(EXCEPTION_INVALID_OPCODE), - CONSTANT(EXCEPTION_NPX_NOT_AVAILABLE), - CONSTANT(EXCEPTION_DOUBLE_FAULT), - CONSTANT(EXCEPTION_NPX_OVERRUN), - CONSTANT(EXCEPTION_INVALID_TSS), - CONSTANT(EXCEPTION_SEGMENT_NOT_PRESENT), - CONSTANT(EXCEPTION_STACK_FAULT), - CONSTANT(EXCEPTION_GP_FAULT), - CONSTANT(EXCEPTION_RESERVED_TRAP), - CONSTANT(EXCEPTION_NPX_ERROR), - CONSTANT(EXCEPTION_ALIGNMENT_CHECK), -#endif - - -/* STRUCTURE OFFSETS *********************************************************/ - - HEADER("KAFFINITY_EX"), -// OFFSET(AfBitmap, KAFFINITY_EX, Bitmap), - - HEADER("Aligned Affinity"), -// OFFSET(AfsCpuSet, ???, CpuSet), - - HEADER("KAPC"), - OFFSET(ApType, KAPC, Type), - OFFSET(ApSize, KAPC, Size), - OFFSET(ApThread, KAPC, Thread), - OFFSET(ApApcListEntry, KAPC, ApcListEntry), - OFFSET(ApKernelRoutine, KAPC, KernelRoutine), - OFFSET(ApRundownRoutine, KAPC, RundownRoutine), - OFFSET(ApNormalRoutine, KAPC, NormalRoutine), - OFFSET(ApNormalContext, KAPC, NormalContext), - OFFSET(ApSystemArgument1, KAPC, SystemArgument1), - OFFSET(ApSystemArgument2, KAPC, SystemArgument2), - OFFSET(ApApcStateIndex, KAPC, ApcStateIndex), - OFFSET(ApApcMode, KAPC, ApcMode), - OFFSET(ApInserted, KAPC, Inserted), - SIZE(ApcObjectLength, KAPC), - - HEADER("KAPC_STATE"), - OFFSET(AsApcListHead, KAPC_STATE, ApcListHead), - OFFSET(AsProcess, KAPC_STATE, Process), - OFFSET(AsKernelApcInProgress, KAPC_STATE, KernelApcInProgress), - OFFSET(AsKernelApcPending, KAPC_STATE, KernelApcPending), - OFFSET(AsUserApcPending, KAPC_STATE, UserApcPending), - - HEADER("CLIENT_ID"), - OFFSET(CidUniqueProcess, CLIENT_ID, UniqueProcess), - OFFSET(CidUniqueThread, CLIENT_ID, UniqueThread), - - HEADER("RTL_CRITICAL_SECTION"), - OFFSET(CsDebugInfo, RTL_CRITICAL_SECTION, DebugInfo), - OFFSET(CsLockCount, RTL_CRITICAL_SECTION, LockCount), - OFFSET(CsRecursionCount, RTL_CRITICAL_SECTION, RecursionCount), - OFFSET(CsOwningThread, RTL_CRITICAL_SECTION, OwningThread), - OFFSET(CsLockSemaphore, RTL_CRITICAL_SECTION, LockSemaphore), - OFFSET(CsSpinCount, RTL_CRITICAL_SECTION, SpinCount), - - HEADER("RTL_CRITICAL_SECTION_DEBUG"), - OFFSET(CsType, RTL_CRITICAL_SECTION_DEBUG, Type), - OFFSET(CsCreatorBackTraceIndex, RTL_CRITICAL_SECTION_DEBUG, CreatorBackTraceIndex), - OFFSET(CsCriticalSection, RTL_CRITICAL_SECTION_DEBUG, CriticalSection), - OFFSET(CsProcessLocksList, RTL_CRITICAL_SECTION_DEBUG, ProcessLocksList), - OFFSET(CsEntryCount, RTL_CRITICAL_SECTION_DEBUG, EntryCount), - OFFSET(CsContentionCount, RTL_CRITICAL_SECTION_DEBUG, ContentionCount), - - HEADER("KDEVICE_QUEUE_ENTRY"), - OFFSET(DeDeviceListEntry, KDEVICE_QUEUE_ENTRY, DeviceListEntry), - OFFSET(DeSortKey, KDEVICE_QUEUE_ENTRY, SortKey), - OFFSET(DeInserted, KDEVICE_QUEUE_ENTRY, Inserted), - SIZE(DeviceQueueEntryLength, KDEVICE_QUEUE_ENTRY), - - HEADER("KDPC"), - OFFSET(DpType, KDPC, Type), - OFFSET(DpImportance, KDPC, Importance), - OFFSET(DpNumber, KDPC, Number), - OFFSET(DpDpcListEntry, KDPC, DpcListEntry), - OFFSET(DpDeferredRoutine, KDPC, DeferredRoutine), - OFFSET(DpDeferredContext, KDPC, DeferredContext), - OFFSET(DpSystemArgument1, KDPC, SystemArgument1), - OFFSET(DpSystemArgument2, KDPC, SystemArgument2), - OFFSET(DpDpcData, KDPC, DpcData), - SIZE(DpcObjectLength, KDPC), - - HEADER("KDEVICE_QUEUE"), - OFFSET(DvType, KDEVICE_QUEUE, Type), - OFFSET(DvSize, KDEVICE_QUEUE, Size), - OFFSET(DvDeviceListHead, KDEVICE_QUEUE, DeviceListHead), - OFFSET(DvSpinLock, KDEVICE_QUEUE, Lock), - OFFSET(DvBusy, KDEVICE_QUEUE, Busy), - SIZE(DeviceQueueObjectLength, KDEVICE_QUEUE), - - HEADER("EXCEPTION_RECORD"), - OFFSET(ErExceptionCode, EXCEPTION_RECORD, ExceptionCode), - OFFSET(ErExceptionFlags, EXCEPTION_RECORD, ExceptionFlags), - OFFSET(ErExceptionRecord, EXCEPTION_RECORD, ExceptionRecord), - OFFSET(ErExceptionAddress, EXCEPTION_RECORD, ExceptionAddress), - OFFSET(ErNumberParameters, EXCEPTION_RECORD, NumberParameters), - OFFSET(ErExceptionInformation, EXCEPTION_RECORD, ExceptionInformation), - SIZE(ExceptionRecordLength, EXCEPTION_RECORD), - SIZE(EXCEPTION_RECORD_LENGTH, EXCEPTION_RECORD), - - HEADER("EPROCESS"), - OFFSET(EpDebugPort, EPROCESS, DebugPort), - OFFSET(EpVdmObjects, EPROCESS, VdmObjects), - SIZE(ExecutiveProcessObjectLength, EPROCESS), - - HEADER("KEVENT"), - OFFSET(EvType, KEVENT, Header.Type), - OFFSET(EvSize, KEVENT, Header.Size), - OFFSET(EvSignalState, KEVENT, Header.SignalState), - OFFSET(EvWaitListHead, KEVENT, Header.WaitListHead), - SIZE(EventObjectLength, KEVENT), - - HEADER("FAST_MUTEX"), - OFFSET(FmCount, FAST_MUTEX, Count), - OFFSET(FmOwner, FAST_MUTEX, Owner), - OFFSET(FmContention, FAST_MUTEX, Contention), - OFFSET(FmGate, FAST_MUTEX, Gate), - OFFSET(FmOldIrql, FAST_MUTEX, OldIrql), - - HEADER("KINTERRUPT"), - OFFSET(InType, KINTERRUPT, Type), - OFFSET(InSize, KINTERRUPT, Size), - OFFSET(InInterruptListEntry, KINTERRUPT, InterruptListEntry), - OFFSET(InServiceRoutine, KINTERRUPT, ServiceRoutine), - OFFSET(InServiceContext, KINTERRUPT, ServiceContext), - OFFSET(InSpinLock, KINTERRUPT, SpinLock), - OFFSET(InTickCount, KINTERRUPT, TickCount), - OFFSET(InActualLock, KINTERRUPT, ActualLock), - OFFSET(InDispatchAddress, KINTERRUPT, DispatchAddress), - OFFSET(InVector, KINTERRUPT, Vector), - OFFSET(InIrql, KINTERRUPT, Irql), - OFFSET(InSynchronizeIrql, KINTERRUPT, SynchronizeIrql), - OFFSET(InFloatingSave, KINTERRUPT, FloatingSave), - OFFSET(InConnected, KINTERRUPT, Connected), - OFFSET(InNumber, KINTERRUPT, Number), - OFFSET(InShareVector, KINTERRUPT, ShareVector), - OFFSET(InMode, KINTERRUPT, Mode), - OFFSET(InServiceCount, KINTERRUPT, ServiceCount), - OFFSET(InDispatchCount, KINTERRUPT, DispatchCount), -// OFFSET(InTrapFrame, KINTERRUPT, TrapFrame), - OFFSET(InDispatchCode, KINTERRUPT, DispatchCode), - SIZE(InterruptObjectLength, KINTERRUPT), - - HEADER("IO_STATUS_BLOCK"), - OFFSET(IoStatus, IO_STATUS_BLOCK, Status), - OFFSET(IoPointer, IO_STATUS_BLOCK, Pointer), - OFFSET(IoInformation, IO_STATUS_BLOCK, Information), - -#ifdef _M_IX86 -// Kernel Stack Control Structure Offset (relative to initial stack pointer) Definitions -// RELOFFSET(KcPreviousBase, KERNEL_STACK_CONTROL, PreviousBase, ???), -// RELOFFSET(KcPreviousLimit, KERNEL_STACK_CONTROL, PreviousBase, ???), -// RELOFFSET(KcPreviousKernel, KERNEL_STACK_CONTROL, PreviousBase, ???), -// RELOFFSET(KcPreviousInitial, KERNEL_STACK_CONTROL, PreviousBase, ???), -#else - HEADER("KERNEL_STACK_CONTROL"), -// OFFSET(KcPreviousBase, KERNEL_STACK_CONTROL, PreviousBase), -// OFFSET(KcPreviousLimit, KERNEL_STACK_CONTROL, PreviousLimit), -// OFFSET(KcPreviousKernel, KERNEL_STACK_CONTROL, PreviousKernel), -// OFFSET(KcPreviousInitial, KERNEL_STACK_CONTROL, PreviousInitial), -// SIZE(KERNEL_STACK_CONTROL_LENGTH, KERNEL_STACK_CONTROL), -#endif - - HEADER("KNODE"), -// OFFSET(KnRight, KNODE, Right), -// OFFSET(KnLeft, KNODE, Left), - OFFSET(KnPfnDereferenceSListHead, KNODE, PfnDereferenceSListHead), - OFFSET(KnProcessorMask, KNODE, ProcessorMask), - OFFSET(KnColor, KNODE, Color), - OFFSET(KnSeed, KNODE, Seed), - OFFSET(KnNodeNumber, KNODE, NodeNumber), - OFFSET(KnFlags, KNODE, Flags), - OFFSET(knMmShiftedColor, KNODE, MmShiftedColor), - OFFSET(KnFreeCount, KNODE, FreeCount), - OFFSET(KnPfnDeferredList, KNODE, PfnDeferredList), - SIZE(KNODE_SIZE, KNODE), - - HEADER("KSPIN_LOCK_QUEUE"), - OFFSET(LqNext, KSPIN_LOCK_QUEUE, Next), - OFFSET(LqLock, KSPIN_LOCK_QUEUE, Lock), - - HEADER("KLOCK_QUEUE_HANDLE"), - OFFSET(LqhNext, KLOCK_QUEUE_HANDLE, LockQueue.Next), - OFFSET(LqhLock, KLOCK_QUEUE_HANDLE, LockQueue.Lock), - OFFSET(LqhOldIrql, KLOCK_QUEUE_HANDLE, OldIrql), - SIZE(LOCK_QUEUE_HEADER_SIZE, KLOCK_QUEUE_HANDLE), - - HEADER("LARGE_INTEGER"), - OFFSET(LiLowPart, LARGE_INTEGER, LowPart), - OFFSET(LiHighPart, LARGE_INTEGER, HighPart), -#if 0 - HEADER("LOADER_PARAMETER_BLOCK (rel. to LoadOrderListHead)"), - RELOFFSET(LpbLoadOrderListHead, LOADER_PARAMETER_BLOCK, LoadOrderListHead, LoadOrderListHead), - RELOFFSET(LpbMemoryDescriptorListHead, LOADER_PARAMETER_BLOCK, MemoryDescriptorListHead, LoadOrderListHead), - RELOFFSET(LpbKernelStack, LOADER_PARAMETER_BLOCK, KernelStack, LoadOrderListHead), - RELOFFSET(LpbPrcb, LOADER_PARAMETER_BLOCK, Prcb, LoadOrderListHead), - RELOFFSET(LpbProcess, LOADER_PARAMETER_BLOCK, Process, LoadOrderListHead), - RELOFFSET(LpbThread, LOADER_PARAMETER_BLOCK, Thread, LoadOrderListHead), - RELOFFSET(LpbI386, LOADER_PARAMETER_BLOCK, u.I386, LoadOrderListHead), - RELOFFSET(LpbRegistryLength, LOADER_PARAMETER_BLOCK, RegistryLength, LoadOrderListHead), - RELOFFSET(LpbRegistryBase, LOADER_PARAMETER_BLOCK, RegistryBase, LoadOrderListHead), - RELOFFSET(LpbConfigurationRoot, LOADER_PARAMETER_BLOCK, ConfigurationRoot, LoadOrderListHead), - RELOFFSET(LpbArcBootDeviceName, LOADER_PARAMETER_BLOCK, ArcBootDeviceName, LoadOrderListHead), - RELOFFSET(LpbArcHalDeviceName, LOADER_PARAMETER_BLOCK, ArcHalDeviceName, LoadOrderListHead), - RELOFFSET(LpbLoadOptions, LOADER_PARAMETER_BLOCK, LoadOptions, LoadOrderListHead), - RELOFFSET(LpbExtension, LOADER_PARAMETER_BLOCK, Extension, LoadOrderListHead), -#endif - - HEADER("LIST_ENTRY"), - OFFSET(LsFlink, LIST_ENTRY, Flink), - OFFSET(LsBlink, LIST_ENTRY, Blink), - - HEADER("PEB"), - OFFSET(PeKernelCallbackTable, PEB, KernelCallbackTable), - SIZE(ProcessEnvironmentBlockLength, PEB), - - HEADER("KPROFILE"), - OFFSET(PfType, KPROFILE, Type), - OFFSET(PfSize, KPROFILE, Size), - OFFSET(PfProfileListEntry, KPROFILE, ProfileListEntry), - OFFSET(PfProcess, KPROFILE, Process), - OFFSET(PfRangeBase, KPROFILE, RangeBase), - OFFSET(PfRangeLimit, KPROFILE, RangeLimit), - OFFSET(PfBucketShift, KPROFILE, BucketShift), - OFFSET(PfBuffer, KPROFILE, Buffer), - OFFSET(PfSegment, KPROFILE, Segment), - OFFSET(PfAffinity, KPROFILE, Affinity), - OFFSET(PfSource, KPROFILE, Source), - OFFSET(PfStarted, KPROFILE, Started), - SIZE(ProfileObjectLength, KPROFILE), - - HEADER("PORT_MESSAGE"), - OFFSET(PmLength, PORT_MESSAGE, u1.Length), - OFFSET(PmZeroInit, PORT_MESSAGE, u2.ZeroInit), - OFFSET(PmClientId, PORT_MESSAGE, ClientId), - OFFSET(PmProcess, PORT_MESSAGE, ClientId.UniqueProcess), - OFFSET(PmThread, PORT_MESSAGE, ClientId.UniqueThread), - OFFSET(PmMessageId, PORT_MESSAGE, MessageId), - OFFSET(PmClientViewSize, PORT_MESSAGE, ClientViewSize), - SIZE(PortMessageLength, PORT_MESSAGE), - - HEADER("KPROCESS"), - OFFSET(PrType, KPROCESS, Header.Type), - OFFSET(PrSize, KPROCESS, Header.Size), - OFFSET(PrSignalState, KPROCESS, Header.SignalState), - OFFSET(PrProfileListHead, KPROCESS, ProfileListHead), - OFFSET(PrDirectoryTableBase, KPROCESS, DirectoryTableBase), -#ifdef _M_IX86 - OFFSET(PrLdtDescriptor, KPROCESS, LdtDescriptor), -#endif - OFFSET(PrIopmOffset, KPROCESS, IopmOffset), -#ifdef _M_IX86 - OFFSET(PrInt21Descriptor, KPROCESS, Int21Descriptor), - OFFSET(PrVdmTrapcHandler, KPROCESS, VdmTrapcHandler), -// OFFSET(PrVdmObjects, KPROCESS, VdmObjects), - OFFSET(PrFlags, KPROCESS, Flags), -#endif -// OFFSET(PrInstrumentationCallback, KPROCESS, InstrumentationCallback), - OFFSET(PrActiveProcessors, KPROCESS, ActiveProcessors), - OFFSET(PrKernelTime, KPROCESS, KernelTime), - OFFSET(PrUserTime, KPROCESS, UserTime), - OFFSET(PrReadyListHead, KPROCESS, ReadyListHead), - OFFSET(PrSwapListEntry, KPROCESS, SwapListEntry), - OFFSET(PrThreadListHead, KPROCESS, ThreadListHead), - OFFSET(PrProcessLock, KPROCESS, ProcessLock), - OFFSET(PrAffinity, KPROCESS, Affinity), - OFFSET(PrProcessFlags, KPROCESS, ProcessFlags), - OFFSET(PrBasePriority, KPROCESS, BasePriority), - OFFSET(PrQuantumReset, KPROCESS, QuantumReset), - OFFSET(PrState, KPROCESS, State), - OFFSET(PrStackCount, KPROCESS, StackCount), -#if (NTDDI_VERSION >= NTDDI_LONGHORN) - OFFSET(PrCycleTime, KPROCESS, CycleTime), -#endif - SIZE(KernelProcessObjectLength, KPROCESS), - - HEADER("KQUEUE"), - OFFSET(QuType, KQUEUE, Header.Type), - OFFSET(QuSize, KQUEUE, Header.Size), - OFFSET(QuSignalState, KQUEUE, Header.SignalState), - OFFSET(QuEntryListHead, KQUEUE, EntryListHead), - OFFSET(QuCurrentCount, KQUEUE, CurrentCount), - OFFSET(QuMaximumCount, KQUEUE, MaximumCount), - OFFSET(QuThreadListHead, KQUEUE, ThreadListHead), - SIZE(QueueObjectLength, KQUEUE), - - HEADER("STRING"), - OFFSET(StrLength, STRING, Length), - OFFSET(StrMaximumLength, STRING, MaximumLength), - OFFSET(StrBuffer, STRING, Buffer), - - HEADER("TEB"), - OFFSET(TeCmTeb, TEB, Tib), -#ifdef _M_IX86 - OFFSET(TeExceptionList, TEB, Tib.ExceptionList), -#endif - OFFSET(TeStackBase, TEB, Tib.StackBase), - OFFSET(TeStackLimit, TEB, Tib.StackLimit), - OFFSET(TeFiberData, TEB, Tib.FiberData), - OFFSET(TeSelf, TEB, Tib.Self), - OFFSET(TeEnvironmentPointer, TEB, EnvironmentPointer), - OFFSET(TeClientId, TEB, ClientId), - OFFSET(TeActiveRpcHandle, TEB, ActiveRpcHandle), - OFFSET(TeThreadLocalStoragePointer, TEB, ThreadLocalStoragePointer), - OFFSET(TeCountOfOwnedCriticalSections, TEB, CountOfOwnedCriticalSections), - OFFSET(TePeb, TEB, ProcessEnvironmentBlock), - OFFSET(TeCsrClientThread, TEB, CsrClientThread), - OFFSET(TeWOW32Reserved, TEB, WOW32Reserved), -// OFFSET(TeSoftFpcr, TEB, SoftFpcr), - OFFSET(TeExceptionCode, TEB, ExceptionCode), - OFFSET(TeActivationContextStackPointer, TEB, ActivationContextStackPointer), - OFFSET(TeGdiClientPID, TEB, GdiClientPID), - OFFSET(TeGdiClientTID, TEB, GdiClientTID), - OFFSET(TeGdiThreadLocalInfo, TEB, GdiThreadLocalInfo), - OFFSET(TeglDispatchTable, TEB, glDispatchTable), - OFFSET(TeglReserved1, TEB, glReserved1), - OFFSET(TeglReserved2, TEB, glReserved2), - OFFSET(TeglSectionInfo, TEB, glSectionInfo), - OFFSET(TeglSection, TEB, glSection), - OFFSET(TeglTable, TEB, glTable), - OFFSET(TeglCurrentRC, TEB, glCurrentRC), - OFFSET(TeglContext, TEB, glContext), - OFFSET(TeDeallocationStack, TEB, DeallocationStack), - OFFSET(TeTlsSlots, TEB, TlsSlots), - OFFSET(TeTlsExpansionSlots, TEB, TlsExpansionSlots), - OFFSET(TeLastErrorValue, TEB, LastErrorValue), - OFFSET(TeVdm, TEB, Vdm), - OFFSET(TeInstrumentation, TEB, Instrumentation), - OFFSET(TeGdiBatchCount, TEB, GdiBatchCount), - OFFSET(TeGuaranteedStackBytes, TEB, GuaranteedStackBytes), - OFFSET(TeFlsData, TEB, FlsData), -// OFFSET(TeProcessRundown, TEB, ProcessRundown), - SIZE(ThreadEnvironmentBlockLength, TEB), - - HEADER("TIME_FIELDS"), - OFFSET(TfSecond, TIME_FIELDS, Second), - OFFSET(TfMinute, TIME_FIELDS, Minute), - OFFSET(TfHour, TIME_FIELDS, Hour), - OFFSET(TfWeekday, TIME_FIELDS, Weekday), - OFFSET(TfDay, TIME_FIELDS, Day), - OFFSET(TfMonth, TIME_FIELDS, Month), - OFFSET(TfYear, TIME_FIELDS, Year), - OFFSET(TfMilliseconds, TIME_FIELDS, Milliseconds), - - HEADER("KTHREAD"), - OFFSET(ThType, KTHREAD, DispatcherHeader.Type), -// OFFSET(ThNpxIrql, KTHREAD, NpxIrql), - OFFSET(ThSize, KTHREAD, DispatcherHeader.Size), - OFFSET(ThLock, KTHREAD, DispatcherHeader.Lock), - OFFSET(ThDebugActive, KTHREAD, DispatcherHeader.DebugActive), -// OFFSET(ThThreadControlFlags, KTHREAD, DispatcherHeader.ThreadControlFlags), - OFFSET(ThSignalState, KTHREAD, DispatcherHeader.SignalState), -#if (NTDDI_VERSION >= NTDDI_LONGHORN) - OFFSET(ThCycleTime, KTHREAD, CycleTime), - OFFSET(ThHighCycleTime, KTHREAD, HighCycleTime), -#endif - OFFSET(ThInitialStack, KTHREAD, InitialStack), - OFFSET(ThStackLimit, KTHREAD, StackLimit), - OFFSET(ThKernelStack, KTHREAD, KernelStack), - OFFSET(ThThreadLock, KTHREAD, ThreadLock), -// OFFSET(ThRunning, KTHREAD, Running), - OFFSET(ThAlerted, KTHREAD, Alerted), -// OFFSET(ThMiscFlags, KTHREAD, MiscFlags), - OFFSET(ThApcState, KTHREAD, ApcState), - OFFSET(ThPriority, KTHREAD, Priority), - OFFSET(ThSwapBusy, KTHREAD, SwapBusy), - OFFSET(ThNextProcessor, KTHREAD, NextProcessor), - OFFSET(ThDeferredProcessor, KTHREAD, DeferredProcessor), - OFFSET(ThApcQueueLock, KTHREAD, ApcQueueLock), - OFFSET(ThContextSwitches, KTHREAD, ContextSwitches), - OFFSET(ThState, KTHREAD, State), - OFFSET(ThNpxState, KTHREAD, NpxState), - OFFSET(ThWaitIrql, KTHREAD, WaitIrql), - OFFSET(ThWaitMode, KTHREAD, WaitMode), - OFFSET(ThWaitStatus, KTHREAD, WaitStatus), - OFFSET(ThWaitBlockList, KTHREAD, WaitBlockList), - OFFSET(ThGateObject, KTHREAD, GateObject), - OFFSET(ThWaitListEntry, KTHREAD, WaitListEntry), - OFFSET(ThSwapListEntry, KTHREAD, SwapListEntry), - OFFSET(ThQueue, KTHREAD, Queue), - OFFSET(ThWaitTime, KTHREAD, WaitTime), - OFFSET(ThCombinedApcDisable, KTHREAD, CombinedApcDisable), - OFFSET(ThKernelApcDisable, KTHREAD, KernelApcDisable), - OFFSET(ThSpecialApcDisable, KTHREAD, SpecialApcDisable), - OFFSET(ThTeb, KTHREAD, Teb), - OFFSET(ThTimer, KTHREAD, Timer), - OFFSET(ThThreadFlags, KTHREAD, ThreadFlags), - OFFSET(ThServiceTable, KTHREAD, ServiceTable), - OFFSET(ThWaitBlock, KTHREAD, WaitBlock), - OFFSET(ThResourceIndex, KTHREAD, ResourceIndex), - OFFSET(ThQueueListEntry, KTHREAD, QueueListEntry), - OFFSET(ThTrapFrame, KTHREAD, TrapFrame), -#if (NTDDI_VERSION >= NTDDI_LONGHORN) - OFFSET(ThFirstArgument, KTHREAD, FirstArgument), -#endif - OFFSET(ThCallbackStack, KTHREAD, CallbackStack), -// OFFSET(ThCallbackDepth, KTHREAD, CallbackDepth), - OFFSET(ThApcStateIndex, KTHREAD, ApcStateIndex), - OFFSET(ThIdealProcessor, KTHREAD, IdealProcessor), - OFFSET(ThBasePriority, KTHREAD, BasePriority), - OFFSET(ThPriorityDecrement, KTHREAD, PriorityDecrement), - OFFSET(ThAdjustReason, KTHREAD, AdjustReason), - OFFSET(ThAdjustIncrement, KTHREAD, AdjustIncrement), - OFFSET(ThPreviousMode, KTHREAD, PreviousMode), - OFFSET(ThSaturation, KTHREAD, Saturation), -#if (NTDDI_VERSION >= NTDDI_LONGHORN) - OFFSET(ThSystemCallNumber, KTHREAD, SystemCallNumber), -#endif - OFFSET(ThFreezeCount, KTHREAD, FreezeCount), - OFFSET(ThUserAffinity, KTHREAD, UserAffinity), - OFFSET(ThProcess, KTHREAD, Process), - OFFSET(ThAffinity, KTHREAD, Affinity), - OFFSET(ThUserIdealProcessor, KTHREAD, UserIdealProcessor), - OFFSET(ThApcStatePointer, KTHREAD, ApcStatePointer), - OFFSET(ThSavedApcState, KTHREAD, SavedApcState), - OFFSET(ThWaitReason, KTHREAD, WaitReason), - OFFSET(ThSuspendCount, KTHREAD, SuspendCount), -// OFFSET(ThCodePatchInProgress, KTHREAD, CodePatchInProgress), - OFFSET(ThWin32Thread, KTHREAD, Win32Thread), - OFFSET(ThStackBase, KTHREAD, StackBase), - OFFSET(ThSuspendApc, KTHREAD, SuspendApc), - OFFSET(ThPowerState, KTHREAD, PowerState), - OFFSET(ThKernelTime, KTHREAD, KernelTime), - OFFSET(ThLegoData, KTHREAD, LegoData), - OFFSET(ThLargeStack, KTHREAD, LargeStack), - OFFSET(ThUserTime, KTHREAD, UserTime), - OFFSET(ThSuspendSemaphore, KTHREAD, SuspendSemaphore), - OFFSET(ThSListFaultCount, KTHREAD, SListFaultCount), - OFFSET(ThThreadListEntry, KTHREAD, ThreadListEntry), - OFFSET(ThMutantListHead, KTHREAD, MutantListHead), - OFFSET(ThSListFaultAddress, KTHREAD, SListFaultAddress), - SIZE(KernelThreadObjectLength, KTHREAD), - SIZE(ExecutiveThreadObjectLength, ETHREAD), - - HEADER("KTIMER"), - OFFSET(TiType, KTIMER, Header.Type), - OFFSET(TiSize, KTIMER, Header.Size), - OFFSET(TiInserted, KTIMER, Header.Inserted), - OFFSET(TiSignalState, KTIMER, Header.SignalState), - OFFSET(TiDueTime, KTIMER, DueTime), - OFFSET(TiTimerListEntry, KTIMER, TimerListEntry), - OFFSET(TiDpc, KTIMER, Dpc), - OFFSET(TiPeriod, KTIMER, Period), - SIZE(TimerObjectLength, KTIMER), - - HEADER("TIME"), -// OFFSET(TmLowTime, TIME, LowTime), -// OFFSET(TmHighTime, TIME, HighTime), - -#if 0 - HEADER("SYSTEM_CONTEXT_SWITCH_INFORMATION (relative to FindAny)"), - RELOFFSET(TwFindAny, SYSTEM_CONTEXT_SWITCH_INFORMATION, FindAny, FindAny), - RELOFFSET(TwFindIdeal, SYSTEM_CONTEXT_SWITCH_INFORMATION, FindIdeal, FindAny), - RELOFFSET(TwFindLast, SYSTEM_CONTEXT_SWITCH_INFORMATION, FindLast, FindAny), - RELOFFSET(TwIdleAny, SYSTEM_CONTEXT_SWITCH_INFORMATION, IdleAny, FindAny), - RELOFFSET(TwIdleCurrent, SYSTEM_CONTEXT_SWITCH_INFORMATION, IdleCurrent, FindAny), - RELOFFSET(TwIdleIdeal, SYSTEM_CONTEXT_SWITCH_INFORMATION, IdleIdeal, FindAny), - RELOFFSET(TwIdleLast, SYSTEM_CONTEXT_SWITCH_INFORMATION, IdleLast, FindAny), - RELOFFSET(TwPreemptAny, SYSTEM_CONTEXT_SWITCH_INFORMATION, PreemptAny, FindAny), - RELOFFSET(TwPreemptCurrent, SYSTEM_CONTEXT_SWITCH_INFORMATION, PreemptCurrent, FindAny), - RELOFFSET(TwPreemptLast, SYSTEM_CONTEXT_SWITCH_INFORMATION, PreemptLast, FindAny), - RELOFFSET(TwSwitchToIdle, SYSTEM_CONTEXT_SWITCH_INFORMATION, SwitchToIdle, FindAny), -#endif - - HEADER("KUSER_SHARED_DATA"), - OFFSET(UsTickCountMultiplier, KUSER_SHARED_DATA, TickCountMultiplier), - OFFSET(UsInterruptTime, KUSER_SHARED_DATA, InterruptTime), - OFFSET(UsSystemTime, KUSER_SHARED_DATA, SystemTime), - OFFSET(UsTimeZoneBias, KUSER_SHARED_DATA, TimeZoneBias), - OFFSET(UsImageNumberLow, KUSER_SHARED_DATA, ImageNumberLow), - OFFSET(UsImageNumberHigh, KUSER_SHARED_DATA, ImageNumberHigh), - OFFSET(UsNtSystemRoot, KUSER_SHARED_DATA, NtSystemRoot), - OFFSET(UsMaxStackTraceDepth, KUSER_SHARED_DATA, MaxStackTraceDepth), - OFFSET(UsCryptoExponent, KUSER_SHARED_DATA, CryptoExponent), - OFFSET(UsTimeZoneId, KUSER_SHARED_DATA, TimeZoneId), - OFFSET(UsLargePageMinimum, KUSER_SHARED_DATA, LargePageMinimum), - OFFSET(UsReserved2, KUSER_SHARED_DATA, Reserved2), - OFFSET(UsNtProductType, KUSER_SHARED_DATA, NtProductType), - OFFSET(UsProductTypeIsValid, KUSER_SHARED_DATA, ProductTypeIsValid), - OFFSET(UsNtMajorVersion, KUSER_SHARED_DATA, NtMajorVersion), - OFFSET(UsNtMinorVersion, KUSER_SHARED_DATA, NtMinorVersion), - OFFSET(UsProcessorFeatures, KUSER_SHARED_DATA, ProcessorFeatures), - OFFSET(UsReserved1, KUSER_SHARED_DATA, Reserved1), - OFFSET(UsReserved3, KUSER_SHARED_DATA, Reserved3), - OFFSET(UsTimeSlip, KUSER_SHARED_DATA, TimeSlip), - OFFSET(UsAlternativeArchitecture, KUSER_SHARED_DATA, AlternativeArchitecture), - OFFSET(UsSystemExpirationDate, KUSER_SHARED_DATA, SystemExpirationDate), - OFFSET(UsSuiteMask, KUSER_SHARED_DATA, SuiteMask), - OFFSET(UsKdDebuggerEnabled, KUSER_SHARED_DATA, KdDebuggerEnabled), - OFFSET(UsActiveConsoleId, KUSER_SHARED_DATA, ActiveConsoleId), - OFFSET(UsDismountCount, KUSER_SHARED_DATA, DismountCount), - OFFSET(UsComPlusPackage, KUSER_SHARED_DATA, ComPlusPackage), - OFFSET(UsLastSystemRITEventTickCount, KUSER_SHARED_DATA, LastSystemRITEventTickCount), - OFFSET(UsNumberOfPhysicalPages, KUSER_SHARED_DATA, NumberOfPhysicalPages), - OFFSET(UsSafeBootMode, KUSER_SHARED_DATA, SafeBootMode), -// OFFSET(UsTscQpcData, KUSER_SHARED_DATA, TscQpcData), - OFFSET(UsTestRetInstruction, KUSER_SHARED_DATA, TestRetInstruction), - OFFSET(UsSystemCall, KUSER_SHARED_DATA, SystemCall), - OFFSET(UsSystemCallReturn, KUSER_SHARED_DATA, SystemCallReturn), - OFFSET(UsSystemCallPad, KUSER_SHARED_DATA, SystemCallPad), - OFFSET(UsTickCount, KUSER_SHARED_DATA, TickCount), - OFFSET(UsTickCountQuad, KUSER_SHARED_DATA, TickCountQuad), - OFFSET(UsWow64SharedInformation, KUSER_SHARED_DATA, Wow64SharedInformation), - - HEADER("KWAIT_BLOCK"), - OFFSET(WbWaitListEntry, KWAIT_BLOCK, WaitListEntry), - OFFSET(WbThread, KWAIT_BLOCK, Thread), - OFFSET(WbObject, KWAIT_BLOCK, Object), - OFFSET(WbNextWaitBlock, KWAIT_BLOCK, NextWaitBlock), - OFFSET(WbWaitKey, KWAIT_BLOCK, WaitKey), - OFFSET(WbWaitType, KWAIT_BLOCK, WaitType), - -#if defined(_M_IX86) - - HEADER("CONTEXT"), - OFFSET(CsContextFlags, CONTEXT, ContextFlags), - OFFSET(CsDr0, CONTEXT, Dr0), - OFFSET(CsDr1, CONTEXT, Dr1), - OFFSET(CsDr2, CONTEXT, Dr2), - OFFSET(CsDr3, CONTEXT, Dr3), - OFFSET(CsDr6, CONTEXT, Dr6), - OFFSET(CsDr7, CONTEXT, Dr7), - OFFSET(CsFloatSave, CONTEXT, FloatSave), - OFFSET(CsSegGs, CONTEXT, SegGs), - OFFSET(CsSegFs, CONTEXT, SegFs), - OFFSET(CsSegEs, CONTEXT, SegEs), - OFFSET(CsSegDs, CONTEXT, SegDs), - OFFSET(CsEdi, CONTEXT, Edi), - OFFSET(CsEsi, CONTEXT, Esi), - OFFSET(CsEbx, CONTEXT, Ebx), - OFFSET(CsEdx, CONTEXT, Edx), - OFFSET(CsEcx, CONTEXT, Ecx), - OFFSET(CsEax, CONTEXT, Eax), - OFFSET(CsEbp, CONTEXT, Ebp), - OFFSET(CsEip, CONTEXT, Eip), - OFFSET(CsSegCs, CONTEXT, SegCs), - OFFSET(CsEflags, CONTEXT, EFlags), - OFFSET(CsEsp, CONTEXT, Esp), - OFFSET(CsSegSs, CONTEXT, SegSs), - OFFSET(CsExtendedRegisters, CONTEXT, ExtendedRegisters), - SIZE(ContextFrameLength, CONTEXT), - SIZE(CONTEXT_LENGTH, CONTEXT), - - HEADER("KGDTENTRY"), - OFFSET(KgdtBaseLow, KGDTENTRY, BaseLow), - OFFSET(KgdtBaseMid, KGDTENTRY, HighWord.Bytes.BaseMid), - OFFSET(KgdtBaseHi, KGDTENTRY, HighWord.Bytes.BaseHi), - OFFSET(KgdtLimitHi, KGDTENTRY, HighWord.Bytes.Flags2), - OFFSET(KgdtLimitLow, KGDTENTRY, LimitLow), - - HEADER("KTRAP_FRAME"), - OFFSET(TsExceptionList, KTRAP_FRAME, ExceptionList), - OFFSET(TsPreviousPreviousMode, KTRAP_FRAME, PreviousPreviousMode), - OFFSET(TsSegGs, KTRAP_FRAME, SegGs), - OFFSET(TsSegFs, KTRAP_FRAME, SegFs), - OFFSET(TsSegEs, KTRAP_FRAME, SegEs), - OFFSET(TsSegDs, KTRAP_FRAME, SegDs), - OFFSET(TsEdi, KTRAP_FRAME, Edi), - OFFSET(TsEsi, KTRAP_FRAME, Esi), - OFFSET(TsEbp, KTRAP_FRAME, Ebp), - OFFSET(TsEbx, KTRAP_FRAME, Ebx), - OFFSET(TsEdx, KTRAP_FRAME, Edx), - OFFSET(TsEcx, KTRAP_FRAME, Ecx), - OFFSET(TsEax, KTRAP_FRAME, Eax), - OFFSET(TsErrCode, KTRAP_FRAME, ErrCode), - OFFSET(TsEip, KTRAP_FRAME, Eip), - OFFSET(TsSegCs, KTRAP_FRAME, SegCs), - OFFSET(TsEflags, KTRAP_FRAME, EFlags), - OFFSET(TsHardwareEsp, KTRAP_FRAME, HardwareEsp), - OFFSET(TsHardwareSegSs, KTRAP_FRAME, HardwareSegSs), - OFFSET(TsTempSegCs, KTRAP_FRAME, TempSegCs), -// OFFSET(TsLogging, KTRAP_FRAME, Logging), - OFFSET(TsTempEsp, KTRAP_FRAME, TempEsp), - OFFSET(TsDbgEbp, KTRAP_FRAME, DbgEbp), - OFFSET(TsDbgEip, KTRAP_FRAME, DbgEip), - OFFSET(TsDbgArgMark, KTRAP_FRAME, DbgArgMark), - OFFSET(TsDbgArgPointer, KTRAP_FRAME, DbgArgPointer), - OFFSET(TsDr0, KTRAP_FRAME, Dr0), - OFFSET(TsDr1, KTRAP_FRAME, Dr1), - OFFSET(TsDr2, KTRAP_FRAME, Dr2), - OFFSET(TsDr3, KTRAP_FRAME, Dr3), - OFFSET(TsDr6, KTRAP_FRAME, Dr6), - OFFSET(TsDr7, KTRAP_FRAME, Dr7), - OFFSET(TsV86Es, KTRAP_FRAME, V86Es), - OFFSET(TsV86Ds, KTRAP_FRAME, V86Ds), - OFFSET(TsV86Fs, KTRAP_FRAME, V86Fs), - OFFSET(TsV86Gs, KTRAP_FRAME, V86Gs), - SIZE(KTRAP_FRAME_LENGTH, KTRAP_FRAME), - CONSTANT(KTRAP_FRAME_ALIGN), - CONSTANT(FRAME_EDITED), - - HEADER("KTSS"), - OFFSET(TssEsp0, KTSS, Esp0), - OFFSET(TssCR3, KTSS, CR3), - OFFSET(TssEip, KTSS, Eip), - OFFSET(TssEFlags, KTSS, EFlags), - OFFSET(TssEax, KTSS, Eax), - OFFSET(TssEbx, KTSS, Ebx), - OFFSET(TssEcx, KTSS, Ecx), - OFFSET(TssEdx, KTSS, Edx), - OFFSET(TssEsp, KTSS, Esp), - OFFSET(TssEbp, KTSS, Ebp), - OFFSET(TssEsi, KTSS, Esi), - OFFSET(TssEdi, KTSS, Edi), - OFFSET(TssEs, KTSS, Es), - OFFSET(TssCs, KTSS, Cs), - OFFSET(TssSs, KTSS, Ss), - OFFSET(TssDs, KTSS, Ds), - OFFSET(TssFs, KTSS, Fs), - OFFSET(TssGs, KTSS, Gs), - OFFSET(TssLDT, KTSS, LDT), - OFFSET(TssIoMapBase, KTSS, IoMapBase), - OFFSET(TssIoMaps, KTSS, IoMaps), - SIZE(TssLength, KTSS), - -#elif defined(_M_AMD64) - - HEADER("Argument Home Address"), - OFFSET(P1Home, CONTEXT, P1Home), - OFFSET(P2Home, CONTEXT, P1Home), - OFFSET(P3Home, CONTEXT, P1Home), - OFFSET(P4Home, CONTEXT, P1Home), - - HEADER("CONTEXT"), - OFFSET(CxP1Home, CONTEXT, P1Home), - OFFSET(CxP2Home, CONTEXT, P2Home), - OFFSET(CxP3Home, CONTEXT, P3Home), - OFFSET(CxP4Home, CONTEXT, P4Home), - OFFSET(CxP5Home, CONTEXT, P5Home), - OFFSET(CxP6Home, CONTEXT, P6Home), - OFFSET(CxContextFlags, CONTEXT, ContextFlags), - OFFSET(CxMxCsr, CONTEXT, MxCsr), - OFFSET(CxSegCs, CONTEXT, SegCs), - OFFSET(CxSegDs, CONTEXT, SegDs), - OFFSET(CxSegEs, CONTEXT, SegEs), - OFFSET(CxSegFs, CONTEXT, SegFs), - OFFSET(CxSegGs, CONTEXT, SegGs), - OFFSET(CxSegSs, CONTEXT, SegSs), - OFFSET(CxEFlags, CONTEXT, EFlags), - OFFSET(CxDr0, CONTEXT, Dr0), - OFFSET(CxDr1, CONTEXT, Dr1), - OFFSET(CxDr2, CONTEXT, Dr2), - OFFSET(CxDr3, CONTEXT, Dr3), - OFFSET(CxDr6, CONTEXT, Dr6), - OFFSET(CxDr7, CONTEXT, Dr7), - OFFSET(CxRax, CONTEXT, Rax), - OFFSET(CxRcx, CONTEXT, Rcx), - OFFSET(CxRdx, CONTEXT, Rdx), - OFFSET(CxRbx, CONTEXT, Rbx), - OFFSET(CxRsp, CONTEXT, Rsp), - OFFSET(CxRbp, CONTEXT, Rbp), - OFFSET(CxRsi, CONTEXT, Rsi), - OFFSET(CxRdi, CONTEXT, Rdi), - OFFSET(CxR8, CONTEXT, R8), - OFFSET(CxR9, CONTEXT, R9), - OFFSET(CxR10, CONTEXT, R10), - OFFSET(CxR11, CONTEXT, R11), - OFFSET(CxR12, CONTEXT, R12), - OFFSET(CxR13, CONTEXT, R13), - OFFSET(CxR14, CONTEXT, R14), - OFFSET(CxR15, CONTEXT, R15), - OFFSET(CxRip, CONTEXT, Rip), - OFFSET(CxFltSave, CONTEXT, FltSave), - OFFSET(CxXmm0, CONTEXT, Xmm0), - OFFSET(CxXmm1, CONTEXT, Xmm1), - OFFSET(CxXmm2, CONTEXT, Xmm2), - OFFSET(CxXmm3, CONTEXT, Xmm3), - OFFSET(CxXmm4, CONTEXT, Xmm4), - OFFSET(CxXmm5, CONTEXT, Xmm5), - OFFSET(CxXmm6, CONTEXT, Xmm6), - OFFSET(CxXmm7, CONTEXT, Xmm7), - OFFSET(CxXmm8, CONTEXT, Xmm8), - OFFSET(CxXmm9, CONTEXT, Xmm9), - OFFSET(CxXmm10, CONTEXT, Xmm10), - OFFSET(CxXmm11, CONTEXT, Xmm11), - OFFSET(CxXmm12, CONTEXT, Xmm12), - OFFSET(CxXmm13, CONTEXT, Xmm13), - OFFSET(CxXmm14, CONTEXT, Xmm14), - OFFSET(CxXmm15, CONTEXT, Xmm15), - OFFSET(CxDebugControl, CONTEXT, DebugControl), - OFFSET(CxLastBranchToRip, CONTEXT, LastBranchToRip), - OFFSET(CxLastBranchFromRip, CONTEXT, LastBranchFromRip), - OFFSET(CxLastExceptionToRip, CONTEXT, LastExceptionToRip), - OFFSET(CxLastExceptionFromRip, CONTEXT, LastExceptionFromRip), - OFFSET(CxVectorControl, CONTEXT, VectorControl), - OFFSET(CxVectorRegister, CONTEXT, VectorRegister), - SIZE(CONTEXT_FRAME_LENGTH, CONTEXT), - - HEADER("DISPATCHER_CONTEXT"), - OFFSET(DcControlPc, TYPE, ControlPc), - OFFSET(DcImageBase, TYPE, ImageBase), - OFFSET(DcFunctionEntry, TYPE, FunctionEntry), - OFFSET(DcEstablisherFrame, TYPE, EstablisherFrame), - OFFSET(DcTargetIp, TYPE, TargetIp), - OFFSET(DcContextRecord, TYPE, ContextRecord), - OFFSET(DcLanguageHandler, TYPE, LanguageHandler), - OFFSET(DcHandlerData, TYPE, HandlerData), - OFFSET(DcHistoryTable, TYPE, HistoryTable), - OFFSET(DcScopeIndex, TYPE, ScopeIndex), - - HEADER("KEXCEPTION_FRAME"), - OFFSET(ExP1Home, KEXCEPTION_FRAME, P1Home), - OFFSET(ExP2Home, KEXCEPTION_FRAME, P2Home), - OFFSET(ExP3Home, KEXCEPTION_FRAME, P3Home), - OFFSET(ExP4Home, KEXCEPTION_FRAME, P4Home), - OFFSET(ExP5, KEXCEPTION_FRAME, P5), - OFFSET(ExXmm6, KEXCEPTION_FRAME, Xmm6), - OFFSET(ExXmm7, KEXCEPTION_FRAME, Xmm7), - OFFSET(ExXmm8, KEXCEPTION_FRAME, Xmm8), - OFFSET(ExXmm9, KEXCEPTION_FRAME, Xmm9), - OFFSET(ExXmm10, KEXCEPTION_FRAME, Xmm10), - OFFSET(ExXmm11, KEXCEPTION_FRAME, Xmm11), - OFFSET(ExXmm12, KEXCEPTION_FRAME, Xmm12), - OFFSET(ExXmm13, KEXCEPTION_FRAME, Xmm13), - OFFSET(ExXmm14, KEXCEPTION_FRAME, Xmm14), - OFFSET(ExXmm15, KEXCEPTION_FRAME, Xmm15), - OFFSET(ExMxCsr, KEXCEPTION_FRAME, MxCsr), - OFFSET(ExRbp, KEXCEPTION_FRAME, Rbp), - OFFSET(ExRbx, KEXCEPTION_FRAME, Rbx), - OFFSET(ExRdi, KEXCEPTION_FRAME, Rdi), - OFFSET(ExRsi, KEXCEPTION_FRAME, Rsi), - OFFSET(ExR12, KEXCEPTION_FRAME, R12), - OFFSET(ExR13, KEXCEPTION_FRAME, R13), - OFFSET(ExR14, KEXCEPTION_FRAME, R14), - OFFSET(ExR15, KEXCEPTION_FRAME, R15), - OFFSET(ExReturn, KEXCEPTION_FRAME, Return), - OFFSET(CuInitialStack, KEXCEPTION_FRAME, InitialStack), - OFFSET(CuTrapFrame, KEXCEPTION_FRAME, TrapFrame), - OFFSET(CuCallbackStack, KEXCEPTION_FRAME, CallbackStack), - OFFSET(CuOutputBuffer, KEXCEPTION_FRAME, OutputBuffer), - OFFSET(CuOutputLength, KEXCEPTION_FRAME, OutputLength), - SIZE(KEXCEPTION_FRAME_LENGTH, KEXCEPTION_FRAME), - - HEADER("JUMP_BUFFER"), - OFFSET(JbFrame, JUMP_BUFFER, Frame), - OFFSET(JbRbx, JUMP_BUFFER, Rbx), - OFFSET(JbRsp, JUMP_BUFFER, Rsp), - OFFSET(JbRbp, JUMP_BUFFER, Rbp), - OFFSET(JbRsi, JUMP_BUFFER, Rsi), - OFFSET(JbRdi, JUMP_BUFFER, Rdi), - OFFSET(JbR12, JUMP_BUFFER, R12), - OFFSET(JbR13, JUMP_BUFFER, R13), - OFFSET(JbR14, JUMP_BUFFER, R14), - OFFSET(JbR15, JUMP_BUFFER, R15), - OFFSET(JbRip, JUMP_BUFFER, Rip), - OFFSET(JbMxCsr, JUMP_BUFFER, MxCsr), - OFFSET(JbFpCsr, JUMP_BUFFER, FpCsr), - OFFSET(JbXmm6, JUMP_BUFFER, Xmm6), - OFFSET(JbXmm7, JUMP_BUFFER, Xmm7), - OFFSET(JbXmm8, JUMP_BUFFER, Xmm8), - OFFSET(JbXmm9, JUMP_BUFFER, Xmm9), - OFFSET(JbXmm10, JUMP_BUFFER, Xmm10), - OFFSET(JbXmm11, JUMP_BUFFER, Xmm11), - OFFSET(JbXmm12, JUMP_BUFFER, Xmm12), - OFFSET(JbXmm13, JUMP_BUFFER, Xmm13), - OFFSET(JbXmm14, JUMP_BUFFER, Xmm14), - OFFSET(JbXmm15, JUMP_BUFFER, Xmm15), - - HEADER("KGDT64"), - OFFSET(KgdtBaseLow, KGDT64, BaseLow), - OFFSET(KgdtBaseMiddle, KGDT64, BaseMiddle), - OFFSET(KgdtBaseHigh, KGDT64, BaseHigh), - OFFSET(KgdtBaseUpper, KGDT64, BaseUpper), - OFFSET(KgdtLimitHigh, KGDT64, LimitHigh), - OFFSET(KgdtLimitLow, KGDT64, LimitLow), - CONSTANT(KGDT_LIMIT_ENCODE_MASK), - - HEADER("KPRCB"), - OFFSET(PbMxCsr, KPRCB, MxCsr), - OFFSET(PbNumber, KPRCB, Number), - OFFSET(PbInterruptRequest, KPRCB, InterruptRequest), - OFFSET(PbIdleHalt, KPRCB, IdleHalt), - OFFSET(PbCurrentThread, KPRCB, CurrentThread), - OFFSET(PbNextThread, KPRCB, NextThread), - OFFSET(PbIdleThread, KPRCB, IdleThread), - OFFSET(PbNestingLevel, KPRCB, NestingLevel), - OFFSET(PbRspBase, KPRCB, RspBase), - OFFSET(PbPrcbLock, KPRCB, PrcbLock), - OFFSET(PbSetMember, KPRCB, SetMember), - OFFSET(PbProcessorState, KPRCB, ProcessorState), - OFFSET(PbCpuType, KPRCB, CpuType), - OFFSET(PbCpuID, KPRCB, CpuID), - OFFSET(PbCpuStep, KPRCB, CpuStep), - OFFSET(PbHalReserved, KPRCB, HalReserved), - OFFSET(PbMinorVersion, KPRCB, MinorVersion), - OFFSET(PbMajorVersion, KPRCB, MajorVersion), - OFFSET(PbBuildType, KPRCB, BuildType), - OFFSET(PbCpuVendor, KPRCB, CpuVendor), - OFFSET(PbCoresPerPhysicalProcessor, KPRCB, CoresPerPhysicalProcessor), - OFFSET(PbLogicalProcessorsPerCore, KPRCB, LogicalProcessorsPerCore), - OFFSET(PbApicMask, KPRCB, ApicMask), - OFFSET(PbCFlushSize, KPRCB, CFlushSize), - OFFSET(PbAcpiReserved, KPRCB, AcpiReserved), - OFFSET(PbInitialApicId, KPRCB, InitialApicId), - OFFSET(PbStride, KPRCB, Stride), - OFFSET(PbLockQueue, KPRCB, LockQueue), - OFFSET(PbPPLookasideList, KPRCB, PPLookasideList), - OFFSET(PbPPNPagedLookasideList, KPRCB, PPNPagedLookasideList), - OFFSET(PbPPPagedLookasideList, KPRCB, PPPagedLookasideList), - OFFSET(PbPacketBarrier, KPRCB, PacketBarrier), - OFFSET(PbDeferredReadyListHead, KPRCB, DeferredReadyListHead), - OFFSET(PbLookasideIrpFloat, KPRCB, LookasideIrpFloat), - OFFSET(PbSystemCalls, KPRCB, SystemCalls), - OFFSET(PbReadOperationCount, KPRCB, ReadOperationCount), - OFFSET(PbWriteOperationCount, KPRCB, WriteOperationCount), - OFFSET(PbOtherOperationCount, KPRCB, OtherOperationCount), - OFFSET(PbReadTransferCount, KPRCB, ReadTransferCount), - OFFSET(PbWriteTransferCount, KPRCB, WriteTransferCount), - OFFSET(PbOtherTransferCount, KPRCB, OtherTransferCount), - OFFSET(PbContextSwitches, KPRCB, ContextSwitches), - OFFSET(PbTargetSet, KPRCB, TargetSet), - OFFSET(PbIpiFrozen, KPRCB, IpiFrozen), - OFFSET(PbRequestMailbox, KPRCB, RequestMailbox), - OFFSET(PbSenderSummary, KPRCB, SenderSummary), - OFFSET(PbDpcListHead, KPRCB, DpcListHead), - OFFSET(PbDpcLock, KPRCB, DpcLock), - OFFSET(PbDpcQueueDepth, KPRCB, DpcQueueDepth), - OFFSET(PbDpcCount, KPRCB, DpcCount), - OFFSET(PbDpcStack, KPRCB, DpcStack), - OFFSET(PbMaximumDpcQueueDepth, KPRCB, MaximumDpcQueueDepth), - OFFSET(PbDpcRequestRate, KPRCB, DpcRequestRate), - OFFSET(PbMinimumDpcRate, KPRCB, MinimumDpcRate), - OFFSET(PbDpcInterruptRequested, KPRCB, DpcInterruptRequested), - OFFSET(PbDpcThreadRequested, KPRCB, DpcThreadRequested), - OFFSET(PbDpcRoutineActive, KPRCB, DpcRoutineActive), - OFFSET(PbDpcThreadActive, KPRCB, DpcThreadActive), - OFFSET(PbTimerHand, KPRCB, TimerHand), - OFFSET(PbTimerRequest, KPRCB, TimerRequest), - OFFSET(PbTickOffset, KPRCB, TickOffset), - OFFSET(PbMasterOffset, KPRCB, MasterOffset), - OFFSET(PbDpcLastCount, KPRCB, DpcLastCount), - OFFSET(PbQuantumEnd, KPRCB, QuantumEnd), - OFFSET(PbDpcSetEventRequest, KPRCB, DpcSetEventRequest), - OFFSET(PbIdleSchedule, KPRCB, IdleSchedule), - OFFSET(PbReadySummary, KPRCB, ReadySummary), - OFFSET(PbDispatcherReadyListHead, KPRCB, DispatcherReadyListHead), - OFFSET(PbInterruptCount, KPRCB, InterruptCount), - OFFSET(PbKernelTime, KPRCB, KernelTime), - OFFSET(PbUserTime, KPRCB, UserTime), - OFFSET(PbDpcTime, KPRCB, DpcTime), - OFFSET(PbInterruptTime, KPRCB, InterruptTime), - OFFSET(PbAdjustDpcThreshold, KPRCB, AdjustDpcThreshold), - OFFSET(PbSkipTick, KPRCB, SkipTick), - OFFSET(PbPollSlot, KPRCB, PollSlot), - OFFSET(PbParentNode, KPRCB, ParentNode), - OFFSET(PbMultiThreadProcessorSet, KPRCB, MultiThreadProcessorSet), - OFFSET(PbMultiThreadSetMaster, KPRCB, MultiThreadSetMaster), - OFFSET(PbStartCycles, KPRCB, StartCycles), - OFFSET(PbPageColor, KPRCB, PageColor), - OFFSET(PbNodeColor, KPRCB, NodeColor), - OFFSET(PbNodeShiftedColor, KPRCB,NodeShiftedColor), - OFFSET(PbSecondaryColorMask, KPRCB, SecondaryColorMask), - OFFSET(PbSleeping, KPRCB, Sleeping), - OFFSET(PbCycleTime, KPRCB, CycleTime), - OFFSET(PbFastReadNoWait, KPRCB, FastReadNoWait), - OFFSET(PbFastReadWait, KPRCB, FastReadWait), - OFFSET(PbFastReadNotPossible, KPRCB, FastReadNotPossible), - OFFSET(PbCopyReadNoWait, KPRCB, CopyReadNoWait), - OFFSET(PbCopyReadWait, KPRCB, CopyReadWait), - OFFSET(PbCopyReadNoWaitMiss, KPRCB, CopyReadNoWaitMiss), - OFFSET(PbAlignmentFixupCount, KPRCB, AlignmentFixupCount), - OFFSET(PbExceptionDispatchCount, KPRCB, ExceptionDispatchCount), - OFFSET(PbVendorString, KPRCB, VendorString), - OFFSET(PbPowerState, KPRCB, PowerState), - SIZE(ProcessorBlockLength, KPRCB), - - HEADER("KPCR"), - OFFSET(PcGdt, KPCR, Gdt), - OFFSET(PcTss, KPCR, Tss), - OFFSET(PcUserRsp, KPCR, UserRsp), - OFFSET(PcSelf, KPCR, Self), - OFFSET(PcCurrentPrcb, KPCR, CurrentPrcb), - OFFSET(PcLockArray, KPCR, LockArray), - OFFSET(PcTeb, KPCR, Teb), - OFFSET(PcIdt, KPCR, Idt), - OFFSET(PcIrql, KPCR, Irql), - OFFSET(PcStallScaleFactor, KPCR, StallScaleFactor), - OFFSET(PcHalReserved, KPCR, HalReserved), - OFFSET(PcPrcb, KPCR, Prcb), - OFFSET(PcMxCsr, KPCR, MxCsr), - OFFSET(PcNumber, KPCR, Number), - OFFSET(PcInterruptRequest, KPCR, InterruptRequest), - OFFSET(PcIdleHalt, KPCR, IdleHalt), - OFFSET(PcCurrentThread, KPCR, CurrentThread), - OFFSET(PcNextThread, KPCR, NextThread), - OFFSET(PcIdleThread, KPCR, IdleThread), - OFFSET(PcIpiFrozen, KPCR, IpiFrozen), - OFFSET(PcNestingLevel, KPCR, NestingLevel), - OFFSET(PcRspBase, KPCR, RspBase), - OFFSET(PcPrcbLock, KPCR, PrcbLock), - OFFSET(PcSetMember, KPCR, SetMember), - OFFSET(PcCr0, KPCR, Cr0), - OFFSET(PcCr2, KPCR, Cr2), - OFFSET(PcCr3, KPCR, Cr3), - OFFSET(PcCr4, KPCR, Cr4), - OFFSET(PcKernelDr0, KPCR, KernelDr0), - OFFSET(PcKernelDr1, KPCR, KernelDr1), - OFFSET(PcKernelDr2, KPCR, KernelDr2), - OFFSET(PcKernelDr3, KPCR, KernelDr3), - OFFSET(PcKernelDr7, KPCR, KernelDr7), - OFFSET(PcGdtrLimit, KPCR, GdtrLimit), - OFFSET(PcGdtrBase, KPCR, GdtrBase), - OFFSET(PcIdtrLimit, KPCR, IdtrLimit), - OFFSET(PcIdtrBase, KPCR, IdtrBase), - OFFSET(PcTr, KPCR, Tr), - OFFSET(PcLdtr, KPCR, Ldtr), - OFFSET(PcDebugControl, KPCR, DebugControl), - OFFSET(PcLastBranchToRip, KPCR, LastBranchToRip), - OFFSET(PcLastBranchFromRip, KPCR, LastBranchFromRip), - OFFSET(PcLastExceptionToRip, KPCR, LastExceptionToRip), - OFFSET(PcLastExceptionFromRip, KPCR, LastExceptionFromRip), - OFFSET(PcCr8, KPCR, Cr8), - OFFSET(PcCpuType, KPCR, CpuType), - OFFSET(PcCpuID, KPCR, CpuID), - OFFSET(PcCpuStep, KPCR, CpuStep), - OFFSET(PcCpuVendor, KPCR, CpuVendor), - OFFSET(PcVirtualApicAssist, KPCR, VirtualApicAssist), - OFFSET(PcCFlushSize, KPCR, CFlushSize), - OFFSET(PcDeferredReadyListHead, KPCR, DeferredReadyListHead), - OFFSET(PcSystemCalls, KPCR, SystemCalls), - OFFSET(PcDpcRoutineActive, KPCR, DpcRoutineActive), - OFFSET(PcInterruptCount, KPCR, InterruptCount), - OFFSET(PcDebuggerSavedIRQL, KPCR, DebuggerSavedIRQL), - OFFSET(PcTickOffset, KPCR, TickOffset), - OFFSET(PcMasterOffset, KPCR, MasterOffset), - OFFSET(PcSkipTick, KPCR, SkipTick), - OFFSET(PcStartCycles, KPCR, StartCycles), - SIZE(ProcessorControlRegisterLength, KPCR), - - HEADER("KPROCESSOR_STATE"), - OFFSET(PsSpecialRegisters, KPROCESSOR_STATE, SpecialRegisters), - OFFSET(PsCr0, KPROCESSOR_STATE, Cr0), - OFFSET(PsCr2, KPROCESSOR_STATE, Cr2), - OFFSET(PsCr3, KPROCESSOR_STATE, Cr3), - OFFSET(PsCr4, KPROCESSOR_STATE, Cr4), - OFFSET(PsKernelDr0, KPROCESSOR_STATE, KernelDr0), - OFFSET(PsKernelDr1, KPROCESSOR_STATE, KernelDr1), - OFFSET(PsKernelDr2, KPROCESSOR_STATE, KernelDr2), - OFFSET(PsKernelDr3, KPROCESSOR_STATE, KernelDr3), - OFFSET(PsKernelDr6, KPROCESSOR_STATE, KernelDr6), - OFFSET(PsKernelDr7, KPROCESSOR_STATE, KernelDr7), - OFFSET(PsGdtr, KPROCESSOR_STATE, Gdtr), - OFFSET(PsIdtr, KPROCESSOR_STATE, Idtr), - OFFSET(PsTr, KPROCESSOR_STATE, Tr), - OFFSET(PsLdtr, KPROCESSOR_STATE, Ldtr), - OFFSET(PsMxCsr, KPROCESSOR_STATE, MxCsr), - OFFSET(PsContextFrame, KPROCESSOR_STATE, ContextFrame), - OFFSET(PsDebugControl, KPROCESSOR_STATE, DebugControl), - OFFSET(PsLastBranchToRip, KPROCESSOR_STATE, LastBranchToRip), - OFFSET(PsLastBranchFromRip, KPROCESSOR_STATE, LastBranchFromRip), - OFFSET(PsLastExceptionToRip, KPROCESSOR_STATE, LastExceptionToRip), - OFFSET(PsLastExceptionFromRip, KPROCESSOR_STATE, LastExceptionFromRip), - OFFSET(PsCr8, KPROCESSOR_STATE, Cr8), - SIZE(ProcessorStateLength, KPROCESSOR_STATE), - - HEADER("KSTART_FRAME"), - OFFSET(SfP1Home, KSTART_FRAME, P1Home), - OFFSET(SfP2Home, KSTART_FRAME, P2Home), - OFFSET(SfP3Home, KSTART_FRAME, P3Home), - OFFSET(SfP4Home, KSTART_FRAME, P4Home), - OFFSET(SfReturn, KSTART_FRAME, Return), - SIZE(KSTART_FRAME_LENGTH, KSTART_FRAME), - - HEADER("KSPECIAL_REGISTERS"), - OFFSET(SrKernelDr0, KSPECIAL_REGISTERS, KernelDr0), - OFFSET(SrKernelDr1, KSPECIAL_REGISTERS, KernelDr1), - OFFSET(SrKernelDr2, KSPECIAL_REGISTERS, KernelDr2), - OFFSET(SrKernelDr3, KSPECIAL_REGISTERS, KernelDr3), - OFFSET(SrKernelDr6, KSPECIAL_REGISTERS, KernelDr6), - OFFSET(SrKernelDr7, KSPECIAL_REGISTERS, KernelDr7), - OFFSET(SrGdtr, KSPECIAL_REGISTERS, Gdtr), - OFFSET(SrIdtr, KSPECIAL_REGISTERS, Idtr), - OFFSET(SrTr, KSPECIAL_REGISTERS, Tr), - OFFSET(SrMxCsr, KSPECIAL_REGISTERS, MxCsr), - OFFSET(SrMsrGsBase, KSPECIAL_REGISTERS, MsrGsBase), - OFFSET(SrMsrGsSwap, KSPECIAL_REGISTERS, MsrGsSwap), - OFFSET(SrMsrStar, KSPECIAL_REGISTERS, MsrStar), - OFFSET(SrMsrLStar, KSPECIAL_REGISTERS, MsrLStar), - OFFSET(SrMsrCStar, KSPECIAL_REGISTERS, MsrCStar), - OFFSET(SrMsrSyscallMask, KSPECIAL_REGISTERS, MsrSyscallMask), - - HEADER("KSYSTEM_TIME"), - OFFSET(StLowTime, KSYSTEM_TIME, LowTime), - OFFSET(StHigh1Time, KSYSTEM_TIME, High1Time), - OFFSET(StHigh2Time, KSYSTEM_TIME, High2Time), - - HEADER("KSWITCH_FRAME"), - OFFSET(SwP5Home, KSWITCH_FRAME, P5Home), - OFFSET(SwApcBypass, KSWITCH_FRAME, ApcBypass), - OFFSET(SwRbp, KSWITCH_FRAME, Rbp), - OFFSET(SwReturn, KSWITCH_FRAME, Return), - SIZE(SwitchFrameLength, KSWITCH_FRAME), - SIZE(KSWITCH_FRAME_LENGTH, KSWITCH_FRAME), - - HEADER("KTRAP_FRAME"), - OFFSET(TrP1Home, KTRAP_FRAME, P1Home), - OFFSET(TrP2Home, KTRAP_FRAME, P2Home), - OFFSET(TrP3Home, KTRAP_FRAME, P3Home), - OFFSET(TrP4Home, KTRAP_FRAME, P4Home), - OFFSET(TrP5, KTRAP_FRAME, P5), - OFFSET(TrPreviousMode, KTRAP_FRAME, PreviousMode), - OFFSET(TrPreviousIrql, KTRAP_FRAME, PreviousIrql), - OFFSET(TrFaultIndicator, KTRAP_FRAME, FaultIndicator), - OFFSET(TrExceptionActive, KTRAP_FRAME, ExceptionActive), - OFFSET(TrMxCsr, KTRAP_FRAME, MxCsr), - OFFSET(TrRax, KTRAP_FRAME, Rax), - OFFSET(TrRcx, KTRAP_FRAME, Rcx), - OFFSET(TrRdx, KTRAP_FRAME, Rdx), - OFFSET(TrR8, KTRAP_FRAME, R8), - OFFSET(TrR9, KTRAP_FRAME, R9), - OFFSET(TrR10, KTRAP_FRAME, R10), - OFFSET(TrR11, KTRAP_FRAME, R11), - OFFSET(TrGsBase, KTRAP_FRAME, GsBase), - OFFSET(TrGsSwap, KTRAP_FRAME,GsSwap), - OFFSET(TrXmm0, KTRAP_FRAME, Xmm0), - OFFSET(TrXmm1, KTRAP_FRAME, Xmm1), - OFFSET(TrXmm2, KTRAP_FRAME, Xmm2), - OFFSET(TrXmm3, KTRAP_FRAME, Xmm3), - OFFSET(TrXmm4, KTRAP_FRAME, Xmm4), - OFFSET(TrXmm5, KTRAP_FRAME, Xmm5), - OFFSET(TrFaultAddress, KTRAP_FRAME, FaultAddress), - OFFSET(TrTimeStampCKCL, KTRAP_FRAME, TimeStampCKCL), - OFFSET(TrDr0, KTRAP_FRAME, Dr0), - OFFSET(TrDr1, KTRAP_FRAME, Dr1), - OFFSET(TrDr2, KTRAP_FRAME, Dr2), - OFFSET(TrDr3, KTRAP_FRAME, Dr3), - OFFSET(TrDr6, KTRAP_FRAME, Dr6), - OFFSET(TrDr7, KTRAP_FRAME, Dr7), - OFFSET(TrDebugControl, KTRAP_FRAME, DebugControl), - OFFSET(TrLastBranchToRip, KTRAP_FRAME, LastBranchToRip), - OFFSET(TrLastBranchFromRip, KTRAP_FRAME, LastBranchFromRip), - OFFSET(TrLastExceptionToRip, KTRAP_FRAME, LastExceptionToRip), - OFFSET(TrLastExceptionFromRip, KTRAP_FRAME, LastExceptionFromRip), - OFFSET(TrLastBranchControl, KTRAP_FRAME, LastBranchControl), - OFFSET(TrLastBranchMSR, KTRAP_FRAME, LastBranchMSR), - OFFSET(TrSegDs, KTRAP_FRAME, SegDs), - OFFSET(TrSegEs, KTRAP_FRAME, SegEs), - OFFSET(TrSegFs, KTRAP_FRAME, SegFs), - OFFSET(TrSegGs, KTRAP_FRAME, SegGs), - OFFSET(TrTrapFrame, KTRAP_FRAME, TrapFrame), - OFFSET(TrRbx, KTRAP_FRAME, Rbx), - OFFSET(TrRdi, KTRAP_FRAME, Rdi), - OFFSET(TrRsi, KTRAP_FRAME, Rsi), - OFFSET(TrRbp, KTRAP_FRAME, Rbp), - OFFSET(TrErrorCode, KTRAP_FRAME, ErrorCode), - OFFSET(TrTimeStampKlog, KTRAP_FRAME, TimeStampKlog), - OFFSET(TrRip, KTRAP_FRAME, Rip), - OFFSET(TrSegCs, KTRAP_FRAME, SegCs), - OFFSET(TrLogging, KTRAP_FRAME, Logging), - OFFSET(TrEFlags, KTRAP_FRAME, EFlags), - OFFSET(TrRsp, KTRAP_FRAME, Rsp), - OFFSET(TrSegSs, KTRAP_FRAME, SegSs), - OFFSET(TrCodePatchCycle, KTRAP_FRAME, CodePatchCycle), - SIZE(KTRAP_FRAME_LENGTH, KTRAP_FRAME), - - HEADER("KTIMER_TABLE"), - OFFSET(TtEntry, KTIMER_TABLE, TimerEntries), - OFFSET(TtTime, KTIMER_TABLE, Time), - SIZE(TIMER_ENTRY_SIZE, KTIMER_ENTRY), - SIZE(TIMER_TABLE_SIZE, KTIMER_TABLE), - SIZE(KTIMER_TABLE_SIZE, KTIMER_TABLE), - - HEADER("KTSS"), - OFFSET(TssRsp0, TYPE, Rsp0), - OFFSET(TssRsp1, TYPE, Rsp1), - OFFSET(TssRsp2, TYPE, Rsp2), - OFFSET(TssPanicStack, TYPE, PanicStack), - OFFSET(TssMcaStack, TYPE, McaStack), - OFFSET(TssNmiStack, TYPE, NmiStack), - OFFSET(TssIoMapBase, TYPE, IoMapBase), - SIZE(TssLength, TYPE), - -#endif - - /* End of list */ - {-1, "", 0} -}; - diff --git a/reactos/tools/obj2bin/obj2bin.c b/reactos/tools/obj2bin/obj2bin.c index 34e596f48fb..07b07670338 100644 --- a/reactos/tools/obj2bin/obj2bin.c +++ b/reactos/tools/obj2bin/obj2bin.c @@ -52,7 +52,7 @@ RelocateSection( break; default: - printf("Unknown relocatation type %u, address 0x%x\n", + printf("Unknown relocation type %u, address 0x%x\n", pReloc->Type, (unsigned)pReloc->VirtualAddress); } From 9bda7700ff7698f262f3da2154ec86b435b45b76 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sat, 31 May 2014 16:58:03 +0000 Subject: [PATCH 120/232] [SETUP16/EXPLORER/LIBTIFF/DESK/ADVAPI32/MCIWAVE/SAMSRV/SHELL32/WINMM/LIBMPG123] Fix / silence warnings svn path=/trunk/; revision=63518 --- reactos/base/applications/setup16/main.c | 28 ++++++++++--------- reactos/base/shell/explorer/shell/shellfs.cpp | 2 +- .../shell/explorer/taskbar/quicklaunch.cpp | 4 +-- reactos/dll/3rdparty/libtiff/CMakeLists.txt | 1 + reactos/dll/cpl/desk/screensaver.c | 2 ++ reactos/dll/win32/advapi32/misc/shutdown.c | 6 ++-- reactos/dll/win32/mciwave/mciwave.c | 6 ++-- reactos/dll/win32/samsrv/samrpc.c | 4 +++ reactos/dll/win32/shell32/desktop.cpp | 5 ++-- reactos/dll/win32/shell32/shlexec.cpp | 12 ++++---- reactos/dll/win32/winmm/CMakeLists.txt | 4 +++ reactos/lib/3rdparty/libmpg123/CMakeLists.txt | 4 +++ 12 files changed, 50 insertions(+), 28 deletions(-) diff --git a/reactos/base/applications/setup16/main.c b/reactos/base/applications/setup16/main.c index 8c0ffe29052..fa3581970e3 100644 --- a/reactos/base/applications/setup16/main.c +++ b/reactos/base/applications/setup16/main.c @@ -13,6 +13,8 @@ static UINT WINAPI ExtCabCallback(PVOID Context, UINT Notification, UINT_PTR Par FILE_IN_CABINET_INFO_W *pInfo; FILEPATHS_W *pFilePaths; + DBG_UNREFERENCED_LOCAL_VARIABLE(pFilePaths); + switch(Notification) { case SPFILENOTIFY_FILEINCABINET: @@ -31,7 +33,7 @@ BOOL DeleteDirectory(LPWSTR lpszDir) { SHFILEOPSTRUCT fileop; DWORD len = wcslen(lpszDir); - WCHAR *pszFrom = HeapAlloc(GetProcessHeap(), 0, (len + 2) * sizeof(WCHAR)); + WCHAR *pszFrom = HeapAlloc(GetProcessHeap(), 0, (len + 2) * sizeof(WCHAR)); int ret; wcscpy(pszFrom, lpszDir); @@ -80,26 +82,26 @@ int APIENTRY wWinMain(HINSTANCE hInstance, STARTUPINFO startupInfo; UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(nCmdShow); - + GetCurrentDirectory(MAX_PATH, szSetupPath); wcscat(szSetupPath, L"\\"); wcscpy(szFileName, szSetupPath); wcscat(szFileName, L"setup.lst"); - + if (GetFileAttributes(szFileName) == INVALID_FILE_ATTRIBUTES) { MessageBoxW(0, L"Cannot find Setup.lst file", L"Error", MB_OK | MB_ICONERROR); return 1; } - + /* read information from setup.lst */ GetPrivateProfileStringW(NT_PARAMS, L"CabinetFile", NULL, szCabFileName, MAX_PATH, szFileName); GetPrivateProfileStringW(NT_PARAMS, L"TmpDirName", NULL, szTempDirName, 50, szFileName); GetPrivateProfileStringW(NT_PARAMS, L"CmdLine", NULL, szCmdLine, MAX_PATH, szFileName); - + wcscpy(szCabFilePath, szSetupPath); wcscat(szCabFilePath, szCabFileName); - + /* ceate temp directory */ GetSystemDrive(szDrive); wcscpy(szTempPath, szDrive); @@ -107,16 +109,16 @@ int APIENTRY wWinMain(HINSTANCE hInstance, wcscpy(szFullTempPath, szTempPath); wcscat(szFullTempPath, szTempDirName); wcscat(szFullTempPath, L"\\"); - + if (SHCreateDirectoryEx(0, szFullTempPath, NULL) != ERROR_SUCCESS) { MessageBoxW(0, L"Could not create Temp Directory.", L"Error", MB_OK | MB_ICONERROR); return 1; - } + } dwAttrib = GetFileAttributes(szTempPath); SetFileAttributes(szTempPath, dwAttrib | FILE_ATTRIBUTE_HIDDEN); - + /* extract files */ if (!SetupIterateCabinetW(szCabFilePath, 0, ExtCabCallback, szFullTempPath)) { @@ -124,12 +126,12 @@ int APIENTRY wWinMain(HINSTANCE hInstance, DeleteDirectory(szTempPath); return 1; } - + /* prepare command line */ wsprintf(szTempCmdLine, szCmdLine, szFullTempPath, lpCmdLine); wcscpy(szCmdLine, szFullTempPath); wcscat(szCmdLine, szTempCmdLine); - + /* execute the 32-Bit installer */ ZeroMemory(&processInfo, sizeof(processInfo)); ZeroMemory(&startupInfo, sizeof(startupInfo)); @@ -148,10 +150,10 @@ int APIENTRY wWinMain(HINSTANCE hInstance, DeleteDirectory(szTempPath); return 1; } - + /* cleanup */ DeleteDirectory(szTempPath); - + return 0; } diff --git a/reactos/base/shell/explorer/shell/shellfs.cpp b/reactos/base/shell/explorer/shell/shellfs.cpp index d1115a2e27d..1243a0d0055 100644 --- a/reactos/base/shell/explorer/shell/shellfs.cpp +++ b/reactos/base/shell/explorer/shell/shellfs.cpp @@ -40,7 +40,7 @@ bool ShellDirectory::fill_w32fdata_shell(LPCITEMIDLIST pidl, SFGAOF attribs, WIN IDataObject* pDataObj; STGMEDIUM medium = {0, {0}, 0}; - FORMATETC fmt = {g_Globals._cfStrFName, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL}; + FORMATETC fmt = {(USHORT)g_Globals._cfStrFName, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL}; HRESULT hr = _folder->GetUIObjectOf(0, 1, &pidl, IID_IDataObject, 0, (LPVOID*)&pDataObj); diff --git a/reactos/base/shell/explorer/taskbar/quicklaunch.cpp b/reactos/base/shell/explorer/taskbar/quicklaunch.cpp index 015dbd5d43a..fb9984d7890 100644 --- a/reactos/base/shell/explorer/taskbar/quicklaunch.cpp +++ b/reactos/base/shell/explorer/taskbar/quicklaunch.cpp @@ -184,7 +184,7 @@ void QuickLaunchBar::AddButton(int id, HBITMAP hbmp, LPCTSTR name, Entry* entry, _entries[id] = qle; - TBBUTTON btn = {0, 0, flags, BTNS_BUTTON|BTNS_NOPREFIX, {0, 0}, 0, 0}; + TBBUTTON btn = {0, 0, (BYTE)flags, BTNS_BUTTON|BTNS_NOPREFIX, {0, 0}, 0, 0}; btn.idCommand = id; btn.iBitmap = bmp_idx; @@ -195,7 +195,7 @@ void QuickLaunchBar::AddButton(int id, HBITMAP hbmp, LPCTSTR name, Entry* entry, void QuickLaunchBar::UpdateDesktopButtons(int desktop_idx) { for(int i=0; inUseCount++; - wmw->wInput = wmw->wOutput = WAVE_MAPPER; + wmw->wInput = wmw->wOutput = (WORD)WAVE_MAPPER; wmw->fInput = FALSE; wmw->hWave = 0; wmw->dwStatus = MCI_MODE_NOT_READY; @@ -1371,13 +1371,13 @@ static DWORD WAVE_mciSet(MCIDEVICEID wDevID, DWORD dwFlags, LPMCI_WAVE_SET_PARMS TRACE("MCI_WAVE_SET_ANYINPUT\n"); if (wmw->wInput != (WORD)lpParms->wInput) WAVE_mciStop(wDevID, MCI_WAIT, NULL); - wmw->wInput = WAVE_MAPPER; + wmw->wInput = (WORD)WAVE_MAPPER; } if (dwFlags & MCI_WAVE_SET_ANYOUTPUT) { TRACE("MCI_WAVE_SET_ANYOUTPUT\n"); if (wmw->wOutput != (WORD)lpParms->wOutput) WAVE_mciStop(wDevID, MCI_WAIT, NULL); - wmw->wOutput = WAVE_MAPPER; + wmw->wOutput = (WORD)WAVE_MAPPER; } /* Set wave format parameters is refused after Open or Record.*/ if (dwFlags & MCI_WAVE_SET_FORMATTAG) { diff --git a/reactos/dll/win32/samsrv/samrpc.c b/reactos/dll/win32/samsrv/samrpc.c index 9bf30752883..6c0335bc930 100644 --- a/reactos/dll/win32/samsrv/samrpc.c +++ b/reactos/dll/win32/samsrv/samrpc.c @@ -8062,6 +8062,10 @@ SamrChangePasswordUser(IN SAMPR_HANDLE UserHandle, LARGE_INTEGER SystemTime; NTSTATUS Status; + DBG_UNREFERENCED_LOCAL_VARIABLE(StoredLmPresent); + DBG_UNREFERENCED_LOCAL_VARIABLE(StoredNtPresent); + DBG_UNREFERENCED_LOCAL_VARIABLE(StoredLmEmpty); + TRACE("(%p %u %p %p %u %p %p %u %p %u %p)\n", UserHandle, LmPresent, OldLmEncryptedWithNewLm, NewLmEncryptedWithOldLm, NtPresent, OldNtEncryptedWithNewNt, NewNtEncryptedWithOldNt, NtCrossEncryptionPresent, diff --git a/reactos/dll/win32/shell32/desktop.cpp b/reactos/dll/win32/shell32/desktop.cpp index cc0b8d8808d..a4afb60f03f 100644 --- a/reactos/dll/win32/shell32/desktop.cpp +++ b/reactos/dll/win32/shell32/desktop.cpp @@ -261,8 +261,8 @@ HRESULT STDMETHODCALLTYPE CDesktopBrowser::TranslateAcceleratorSB(LPMSG lpmsg, W HRESULT STDMETHODCALLTYPE CDesktopBrowser::BrowseObject(LPCITEMIDLIST pidl, UINT wFlags) { - /* - * We should use IShellWindows interface here in order to attempt to + /* + * We should use IShellWindows interface here in order to attempt to * find an open shell window that shows the requested pidl and activate it */ @@ -422,6 +422,7 @@ LRESULT CALLBACK CDesktopBrowser::ProgmanWindowProc(IN HWND hwnd, IN UINT uMsg, rcDesktop.bottom = GetSystemMetrics(SM_CYVIRTUALSCREEN); /* FIXME: Update work area */ + DBG_UNREFERENCED_LOCAL_VARIABLE(rcDesktop); } break; diff --git a/reactos/dll/win32/shell32/shlexec.cpp b/reactos/dll/win32/shell32/shlexec.cpp index 76929844d6a..41bae156ee3 100644 --- a/reactos/dll/win32/shell32/shlexec.cpp +++ b/reactos/dll/win32/shell32/shlexec.cpp @@ -460,7 +460,7 @@ static UINT_PTR SHELL_ExecuteW(const WCHAR *lpCmd, WCHAR *env, BOOL shWait, startup.wShowWindow = psei->nShow; dwCreationFlags = CREATE_UNICODE_ENVIRONMENT; if (!(psei->fMask & SEE_MASK_NO_CONSOLE)) - dwCreationFlags |= CREATE_NEW_CONSOLE; + dwCreationFlags |= CREATE_NEW_CONSOLE; startup.lpTitle = (LPWSTR)(psei->fMask & (SEE_MASK_HASLINKNAME | SEE_MASK_HASTITLE) ? psei->lpClass : NULL); if (psei->fMask & SEE_MASK_HASLINKNAME) @@ -733,7 +733,7 @@ static UINT SHELL_FindExecutable(LPCWSTR lpPath, LPCWSTR lpFile, LPCWSTR lpVerb, lpFile = xlpFile; /* The file was found in one of the directories in the system-wide search path */ } - + attribs = GetFileAttributesW(lpFile); if (attribs != INVALID_FILE_ATTRIBUTES && (attribs & FILE_ATTRIBUTE_DIRECTORY)) { @@ -994,7 +994,7 @@ static unsigned dde_connect(const WCHAR* key, const WCHAR* start, WCHAR* ddeexec assert(ptr); *ptr = 0; } - + static const WCHAR wTopic[] = L"\\topic"; if (strlenW(wTopic) + 1 > endkeyLen) { @@ -1491,7 +1491,7 @@ static UINT_PTR SHELL_execute_class(LPCWSTR wszApplicationName, LPSHELLEXECUTEIN DWORD resultLen; BOOL done; UINT_PTR rslt; - + /* FIXME: remove following block when SHELL_quote_and_execute supports hkeyClass parameter */ if (cmask != SEE_MASK_CLASSNAME) { @@ -1522,7 +1522,7 @@ static UINT_PTR SHELL_execute_class(LPCWSTR wszApplicationName, LPSHELLEXECUTEIN ERR("Argify buffer not large enough... truncating\n"); return execfunc(wcmd, NULL, FALSE, psei, psei_out); } - + strcpyW(classname, psei->lpClass); rslt = SHELL_FindExecutableByVerb(psei->lpVerb, NULL, classname, execCmd, sizeof(execCmd)); @@ -1835,6 +1835,7 @@ static BOOL SHELL_execute(LPSHELLEXECUTEINFOW sei, SHELL_ExecuteW32 execfunc) Info.oaifInFlags = OAIF_ALLOW_REGISTRATION | OAIF_EXEC; //if (SHOpenWithDialog(sei_tmp.hwnd, &Info) != S_OK) + DBG_UNREFERENCED_LOCAL_VARIABLE(Info); do_error_dialog(retval, sei_tmp.hwnd, wszApplicationName); } HeapFree(GetProcessHeap(), 0, wszApplicationName); @@ -2070,6 +2071,7 @@ static BOOL SHELL_execute(LPSHELLEXECUTEINFOW sei, SHELL_ExecuteW32 execfunc) Info.oaifInFlags = OAIF_ALLOW_REGISTRATION | OAIF_EXEC; //if (SHOpenWithDialog(sei_tmp.hwnd, &Info) != S_OK) + DBG_UNREFERENCED_LOCAL_VARIABLE(Info); do_error_dialog(retval, sei_tmp.hwnd, wszApplicationName); } diff --git a/reactos/dll/win32/winmm/CMakeLists.txt b/reactos/dll/win32/winmm/CMakeLists.txt index 507427c6829..6123003f1ca 100644 --- a/reactos/dll/win32/winmm/CMakeLists.txt +++ b/reactos/dll/win32/winmm/CMakeLists.txt @@ -28,3 +28,7 @@ add_importlibs(winmm advapi32 user32 msvcrt kernel32 ntdll) add_pch(winmm winemm.h SOURCE) add_subdirectory(midimap) add_cd_file(TARGET winmm DESTINATION reactos/system32 FOR all) + +if(NOT MSVC) + add_target_compile_flags(winmm "-Wno-unused-but-set-variable") +endif() diff --git a/reactos/lib/3rdparty/libmpg123/CMakeLists.txt b/reactos/lib/3rdparty/libmpg123/CMakeLists.txt index 9a9b11a90fe..3731927f62e 100644 --- a/reactos/lib/3rdparty/libmpg123/CMakeLists.txt +++ b/reactos/lib/3rdparty/libmpg123/CMakeLists.txt @@ -44,3 +44,7 @@ list(APPEND SOURCE add_library(libmpg123 ${SOURCE}) add_dependencies(libmpg123 psdk) add_pch(libmpg123 precomp.h SOURCE) + +if(NOT MSVC) + add_target_compile_flags(libmpg123 "-Wno-unused-but-set-variable") +endif() From 6cfa5d2e250f5fe2105dcfd3d65c404172d30608 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sat, 31 May 2014 20:43:41 +0000 Subject: [PATCH 121/232] [W32KDLL] Update ros syscall list from trunk, remove obsolete files svn path=/trunk/; revision=63519 --- .../w32kdll/w32kdll_2k3sp2/w32k_2k3sp2-x86.db | 668 --- .../w32kdll/w32kdll_2k3sp2/w32kdll_2k3sp2.S | 4665 ----------------- .../w32kdll/w32kdll_2k3sp2/w32kdll_2k3sp2.def | 673 --- .../w32kdll/w32kdll_ros/w32kdll_ros.def | 678 --- .../w32kdll/w32kdll_ros/w32kdll_ros.spec | 5 +- .../w32kdll/w32kdll_ros/win32ksvc-ros.h | 15 +- 6 files changed, 7 insertions(+), 6697 deletions(-) delete mode 100644 rostests/apitests/w32kdll/w32kdll_2k3sp2/w32k_2k3sp2-x86.db delete mode 100644 rostests/apitests/w32kdll/w32kdll_2k3sp2/w32kdll_2k3sp2.S delete mode 100644 rostests/apitests/w32kdll/w32kdll_2k3sp2/w32kdll_2k3sp2.def delete mode 100644 rostests/apitests/w32kdll/w32kdll_ros/w32kdll_ros.def diff --git a/rostests/apitests/w32kdll/w32kdll_2k3sp2/w32k_2k3sp2-x86.db b/rostests/apitests/w32kdll/w32kdll_2k3sp2/w32k_2k3sp2-x86.db deleted file mode 100644 index 8808dec397f..00000000000 --- a/rostests/apitests/w32kdll/w32kdll_2k3sp2/w32k_2k3sp2-x86.db +++ /dev/null @@ -1,668 +0,0 @@ -# -# win32k systemcalls taken from Windows 2003 SP2 x86 -# -NtGdiAbortDoc 1 -NtGdiAbortPath 1 -NtGdiAddFontResourceW 6 -NtGdiAddRemoteFontToDC 4 -NtGdiAddFontMemResourceEx 5 -NtGdiRemoveMergeFont 2 -NtGdiAddRemoteMMInstanceToDC 3 -NtGdiAlphaBlend 12 -NtGdiAngleArc 6 -NtGdiAnyLinkedFonts 0 -NtGdiFontIsLinked 1 -NtGdiArcInternal 10 -NtGdiBeginPath 1 -NtGdiBitBlt 11 -NtGdiCancelDC 1 -NtGdiCheckBitmapBits 8 -NtGdiCloseFigure 1 -NtGdiClearBitmapAttributes 2 -NtGdiClearBrushAttributes 2 -NtGdiColorCorrectPalette 6 -NtGdiCombineRgn 4 -NtGdiCombineTransform 3 -NtGdiComputeXformCoefficients 1 -NtGdiConsoleTextOut 4 -NtGdiConvertMetafileRect 2 -NtGdiCreateBitmap 5 -NtGdiCreateClientObj 1 -NtGdiCreateColorSpace 1 -NtGdiCreateColorTransform 8 -NtGdiCreateCompatibleBitmap 3 -NtGdiCreateCompatibleDC 1 -NtGdiCreateDIBBrush 6 -NtGdiCreateDIBitmapInternal 11 -NtGdiCreateDIBSection 9 -NtGdiCreateEllipticRgn 4 -NtGdiCreateHalftonePalette 1 -NtGdiCreateHatchBrushInternal 3 -NtGdiCreateMetafileDC 1 -NtGdiCreatePaletteInternal 2 -NtGdiCreatePatternBrushInternal 3 -NtGdiCreatePen 4 -NtGdiCreateRectRgn 4 -NtGdiCreateRoundRectRgn 6 -NtGdiCreateServerMetaFile 6 -NtGdiCreateSolidBrush 2 -NtGdiD3dContextCreate 4 -NtGdiD3dContextDestroy 1 -NtGdiD3dContextDestroyAll 1 -NtGdiD3dValidateTextureStageState 1 -NtGdiD3dDrawPrimitives2 7 -NtGdiDdGetDriverState 1 -NtGdiDdAddAttachedSurface 3 -NtGdiDdAlphaBlt 3 -NtGdiDdAttachSurface 2 -NtGdiDdBeginMoCompFrame 2 -NtGdiDdBlt 3 -NtGdiDdCanCreateSurface 2 -NtGdiDdCanCreateD3DBuffer 2 -NtGdiDdColorControl 2 -NtGdiDdCreateDirectDrawObject 1 -NtGdiDdCreateSurface 8 -NtGdiDdCreateD3DBuffer 8 -NtGdiDdCreateMoComp 2 -NtGdiDdCreateSurfaceObject 6 -NtGdiDdDeleteDirectDrawObject 1 -NtGdiDdDeleteSurfaceObject 1 -NtGdiDdDestroyMoComp 2 -NtGdiDdDestroySurface 2 -NtGdiDdDestroyD3DBuffer 1 -NtGdiDdEndMoCompFrame 2 -NtGdiDdFlip 5 -NtGdiDdFlipToGDISurface 2 -NtGdiDdGetAvailDriverMemory 2 -NtGdiDdGetBltStatus 2 -NtGdiDdGetDC 2 -NtGdiDdGetDriverInfo 2 -NtGdiDdGetDxHandle 3 -NtGdiDdGetFlipStatus 2 -NtGdiDdGetInternalMoCompInfo 2 -NtGdiDdGetMoCompBuffInfo 2 -NtGdiDdGetMoCompGuids 2 -NtGdiDdGetMoCompFormats 2 -NtGdiDdGetScanLine 2 -NtGdiDdLock 3 -NtGdiDdLockD3D 2 -NtGdiDdQueryDirectDrawObject 11 -NtGdiDdQueryMoCompStatus 2 -NtGdiDdReenableDirectDrawObject 2 -NtGdiDdReleaseDC 1 -NtGdiDdRenderMoComp 2 -NtGdiDdResetVisrgn 2 -NtGdiDdSetColorKey 2 -NtGdiDdSetExclusiveMode 2 -NtGdiDdSetGammaRamp 3 -NtGdiDdCreateSurfaceEx 3 -NtGdiDdSetOverlayPosition 3 -NtGdiDdUnattachSurface 2 -NtGdiDdUnlock 2 -NtGdiDdUnlockD3D 2 -NtGdiDdUpdateOverlay 3 -NtGdiDdWaitForVerticalBlank 2 -NtGdiDvpCanCreateVideoPort 2 -NtGdiDvpColorControl 2 -NtGdiDvpCreateVideoPort 2 -NtGdiDvpDestroyVideoPort 2 -NtGdiDvpFlipVideoPort 4 -NtGdiDvpGetVideoPortBandwidth 2 -NtGdiDvpGetVideoPortField 2 -NtGdiDvpGetVideoPortFlipStatus 2 -NtGdiDvpGetVideoPortInputFormats 2 -NtGdiDvpGetVideoPortLine 2 -NtGdiDvpGetVideoPortOutputFormats 2 -NtGdiDvpGetVideoPortConnectInfo 2 -NtGdiDvpGetVideoSignalStatus 2 -NtGdiDvpUpdateVideoPort 4 -NtGdiDvpWaitForVideoPortSync 2 -NtGdiDvpAcquireNotification 3 -NtGdiDvpReleaseNotification 2 -NtGdiDxgGenericThunk 6 -NtGdiDeleteClientObj 1 -NtGdiDeleteColorSpace 1 -NtGdiDeleteColorTransform 2 -NtGdiDeleteObjectApp 1 -NtGdiDescribePixelFormat 4 -NtGdiGetPerBandInfo 2 -NtGdiDoBanding 4 -NtGdiDoPalette 6 -NtGdiDrawEscape 4 -NtGdiEllipse 5 -NtGdiEnableEudc 1 -NtGdiEndDoc 1 -NtGdiEndPage 1 -NtGdiEndPath 1 -NtGdiEnumFontChunk 5 -NtGdiEnumFontClose 1 -NtGdiEnumFontOpen 7 -NtGdiEnumObjects 4 -NtGdiEqualRgn 2 -NtGdiEudcLoadUnloadLink 7 -NtGdiExcludeClipRect 5 -NtGdiExtCreatePen 11 -NtGdiExtCreateRegion 3 -NtGdiExtEscape 8 -NtGdiExtFloodFill 5 -NtGdiExtGetObjectW 3 -NtGdiExtSelectClipRgn 3 -NtGdiExtTextOutW 9 -NtGdiFillPath 1 -NtGdiFillRgn 3 -NtGdiFlattenPath 1 -NtGdiFlush 0 -NtGdiForceUFIMapping 2 -NtGdiFrameRgn 5 -NtGdiFullscreenControl 5 -NtGdiGetAndSetDCDword 4 -NtGdiGetAppClipBox 2 -NtGdiGetBitmapBits 3 -NtGdiGetBitmapDimension 2 -NtGdiGetBoundsRect 3 -NtGdiGetCharABCWidthsW 6 -NtGdiGetCharacterPlacementW 6 -NtGdiGetCharSet 1 -NtGdiGetCharWidthW 6 -NtGdiGetCharWidthInfo 2 -NtGdiGetColorAdjustment 2 -NtGdiGetColorSpaceforBitmap 1 -NtGdiGetDCDword 3 -NtGdiGetDCforBitmap 1 -NtGdiGetDCObject 2 -NtGdiGetDCPoint 3 -NtGdiGetDeviceCaps 2 -NtGdiGetDeviceGammaRamp 2 -NtGdiGetDeviceCapsAll 2 -NtGdiGetDIBitsInternal 9 -NtGdiGetETM 2 -NtGdiGetEudcTimeStampEx 3 -NtGdiGetFontData 5 -NtGdiGetFontResourceInfoInternalW 7 -NtGdiGetGlyphIndicesW 5 -NtGdiGetGlyphIndicesWInternal 6 -NtGdiGetGlyphOutline 8 -NtGdiGetKerningPairs 3 -NtGdiGetLinkedUFIs 3 -NtGdiGetMiterLimit 2 -NtGdiGetMonitorID 3 -NtGdiGetNearestColor 2 -NtGdiGetNearestPaletteIndex 2 -NtGdiGetObjectBitmapHandle 2 -NtGdiGetOutlineTextMetricsInternalW 4 -NtGdiGetPath 4 -NtGdiGetPixel 3 -NtGdiGetRandomRgn 3 -NtGdiGetRasterizerCaps 2 -NtGdiGetRealizationInfo 3 -NtGdiGetRegionData 3 -NtGdiGetRgnBox 2 -NtGdiGetServerMetaFileBits 7 -NtGdiGetSpoolMessage 4 -NtGdiGetStats 5 -NtGdiGetStockObject 1 -NtGdiGetStringBitmapW 5 -NtGdiGetSystemPaletteUse 1 -NtGdiGetTextCharsetInfo 3 -NtGdiGetTextExtent 5 -NtGdiGetTextExtentExW 8 -NtGdiGetTextFaceW 4 -NtGdiGetTextMetricsW 3 -NtGdiGetTransform 3 -NtGdiGetUFI 6 -NtGdiGetEmbUFI 7 -NtGdiGetUFIPathname 10 -NtGdiGetEmbedFonts 0 -NtGdiChangeGhostFont 2 -NtGdiAddEmbFontToDC 2 -NtGdiGetFontUnicodeRanges 2 -NtGdiGetWidthTable 7 -NtGdiGradientFill 6 -NtGdiHfontCreate 5 -NtGdiIcmBrushInfo 8 -NtGdiInit 0 -NtGdiInitSpool 0 -NtGdiIntersectClipRect 5 -NtGdiInvertRgn 2 -NtGdiLineTo 3 -NtGdiMakeFontDir 5 -NtGdiMakeInfoDC 2 -NtGdiMaskBlt 13 -NtGdiModifyWorldTransform 3 -NtGdiMonoBitmap 1 -NtGdiMoveTo 4 -NtGdiOffsetClipRgn 3 -NtGdiOffsetRgn 3 -NtGdiOpenDCW 7 -NtGdiPatBlt 6 -NtGdiPolyPatBlt 5 -NtGdiPathToRegion 1 -NtGdiPlgBlt 11 -NtGdiPolyDraw 4 -NtGdiPolyPolyDraw 5 -NtGdiPolyTextOutW 4 -NtGdiPtInRegion 3 -NtGdiPtVisible 3 -NtGdiQueryFonts 3 -NtGdiQueryFontAssocInfo 1 -NtGdiRectangle 5 -NtGdiRectInRegion 2 -NtGdiRectVisible 2 -NtGdiRemoveFontResourceW 6 -NtGdiRemoveFontMemResourceEx 1 -NtGdiResetDC 5 -NtGdiResizePalette 2 -NtGdiRestoreDC 2 -NtGdiRoundRect 7 -NtGdiSaveDC 1 -NtGdiScaleViewportExtEx 6 -NtGdiScaleWindowExtEx 6 -GreSelectBitmap 2 -NtGdiSelectBrush 2 -NtGdiSelectClipPath 2 -NtGdiSelectFont 2 -NtGdiSelectPen 2 -NtGdiSetBitmapAttributes 2 -NtGdiSetBitmapBits 3 -NtGdiSetBitmapDimension 4 -NtGdiSetBoundsRect 3 -NtGdiSetBrushAttributes 2 -NtGdiSetBrushOrg 4 -NtGdiSetColorAdjustment 2 -NtGdiSetColorSpace 2 -NtGdiSetDeviceGammaRamp 2 -NtGdiSetDIBitsToDeviceInternal 16 -NtGdiSetFontEnumeration 1 -NtGdiSetFontXform 3 -NtGdiSetIcmMode 3 -NtGdiSetLinkedUFIs 3 -NtGdiSetMagicColors 3 -NtGdiSetMetaRgn 1 -NtGdiSetMiterLimit 3 -NtGdiGetDeviceWidth 1 -NtGdiMirrorWindowOrg 1 -NtGdiSetLayout 3 -NtGdiSetPixel 4 -NtGdiSetPixelFormat 2 -NtGdiSetRectRgn 5 -NtGdiSetSystemPaletteUse 2 -NtGdiSetTextJustification 3 -NtGdiSetupPublicCFONT 3 -NtGdiSetVirtualResolution 5 -NtGdiSetSizeDevice 3 -NtGdiStartDoc 4 -NtGdiStartPage 1 -NtGdiStretchBlt 12 -NtGdiStretchDIBitsInternal 16 -NtGdiStrokeAndFillPath 1 -NtGdiStrokePath 1 -NtGdiSwapBuffers 1 -NtGdiTransformPoints 5 -NtGdiTransparentBlt 11 -NtGdiUnloadPrinterDriver 2 -NtGdiUnmapMemFont 1 -NtGdiUnrealizeObject 1 -NtGdiUpdateColors 1 -NtGdiWidenPath 1 -NtUserActivateKeyboardLayout 2 -NtUserAlterWindowStyle 3 -NtUserAssociateInputContext 3 -NtUserAttachThreadInput 3 -NtUserBeginPaint 2 -NtUserBitBltSysBmp 8 -NtUserBlockInput 1 -NtUserBuildHimcList 4 -NtUserBuildHwndList 7 -NtUserBuildNameList 4 -NtUserBuildPropList 4 -NtUserCallHwnd 2 -NtUserCallHwndLock 2 -NtUserCallHwndOpt 2 -NtUserCallHwndParam 3 -NtUserCallHwndParamLock 3 -NtUserCallMsgFilter 2 -NtUserCallNextHookEx 4 -NtUserCallNoParam 1 -NtUserCallOneParam 2 -NtUserCallTwoParam 3 -NtUserChangeClipboardChain 2 -NtUserChangeDisplaySettings 4 -NtUserCheckImeHotKey 2 -NtUserCheckMenuItem 3 -NtUserChildWindowFromPointEx 4 -NtUserClipCursor 1 -NtUserCloseClipboard 0 -NtUserCloseDesktop 1 -NtUserCloseWindowStation 1 -NtUserConsoleControl 3 -NtUserConvertMemHandle 2 -NtUserCopyAcceleratorTable 3 -NtUserCountClipboardFormats 0 -NtUserCreateAcceleratorTable 2 -NtUserCreateCaret 4 -NtUserCreateDesktop 5 -NtUserCreateInputContext 1 -NtUserCreateLocalMemHandle 4 -NtUserCreateWindowEx 15 -NtUserCreateWindowStation 7 -NtUserDdeGetQualityOfService 3 -NtUserDdeInitialize 5 -NtUserDdeSetQualityOfService 3 -NtUserDeferWindowPos 8 -NtUserDefSetText 2 -NtUserDeleteMenu 3 -NtUserDestroyAcceleratorTable 1 -NtUserDestroyCursor 2 -NtUserDestroyInputContext 1 -NtUserDestroyMenu 1 -NtUserDestroyWindow 1 -NtUserDisableThreadIme 1 -NtUserDispatchMessage 1 -NtUserDragDetect 3 -NtUserDragObject 5 -NtUserDrawAnimatedRects 4 -NtUserDrawCaption 4 -NtUserDrawCaptionTemp 7 -NtUserDrawIconEx 11 -NtUserDrawMenuBarTemp 5 -NtUserEmptyClipboard 0 -NtUserEnableMenuItem 3 -NtUserEnableScrollBar 3 -NtUserEndDeferWindowPosEx 2 -NtUserEndMenu 0 -NtUserEndPaint 2 -NtUserEnumDisplayDevices 4 -NtUserEnumDisplayMonitors 4 -NtUserEnumDisplaySettings 4 -NtUserEvent 1 -NtUserExcludeUpdateRgn 2 -NtUserFillWindow 4 -NtUserFindExistingCursorIcon 3 -NtUserFindWindowEx 5 -NtUserFlashWindowEx 1 -NtUserGetAltTabInfo 6 -NtUserGetAncestor 2 -NtUserGetAppImeLevel 1 -NtUserGetAsyncKeyState 1 -NtUserGetAtomName 2 -NtUserGetCaretBlinkTime 0 -NtUserGetCaretPos 1 -NtUserGetClassInfoEx 5 -NtUserGetClassName 3 -NtUserGetClipboardData 2 -NtUserGetClipboardFormatName 3 -NtUserGetClipboardOwner 0 -NtUserGetClipboardSequenceNumber 0 -NtUserGetClipboardViewer 0 -NtUserGetClipCursor 1 -NtUserGetComboBoxInfo 2 -NtUserGetControlBrush 3 -NtUserGetControlColor 4 -NtUserGetCPD 3 -NtUserGetCursorFrameInfo 4 -NtUserGetCursorInfo 1 -NtUserGetDC 1 -NtUserGetDCEx 3 -NtUserGetDoubleClickTime 0 -NtUserGetForegroundWindow 0 -NtUserGetGuiResources 2 -NtUserGetGUIThreadInfo 2 -NtUserGetIconInfo 6 -NtUserGetIconSize 4 -NtUserGetImeHotKey 4 -NtUserGetImeInfoEx 2 -NtUserGetInternalWindowPos 3 -NtUserGetKeyboardLayoutList 2 -NtUserGetKeyboardLayoutName 1 -NtUserGetKeyboardState 1 -NtUserGetKeyNameText 3 -NtUserGetKeyState 1 -NtUserGetListBoxInfo 1 -NtUserGetMenuBarInfo 4 -NtUserGetMenuIndex 2 -NtUserGetMenuItemRect 4 -NtUserGetMessage 4 -NtUserGetMouseMovePointsEx 5 -NtUserGetObjectInformation 5 -NtUserGetOpenClipboardWindow 0 -NtUserGetPriorityClipboardFormat 2 -NtUserGetProcessWindowStation 0 -NtUserGetRawInputBuffer 3 -NtUserGetRawInputData 5 -NtUserGetRawInputDeviceInfo 4 -NtUserGetRawInputDeviceList 3 -NtUserGetRegisteredRawInputDevices 3 -NtUserGetScrollBarInfo 3 -NtUserGetSystemMenu 2 -NtUserGetThreadDesktop 2 -NtUserGetThreadState 1 -NtUserGetTitleBarInfo 2 -NtUserGetUpdateRect 3 -NtUserGetUpdateRgn 3 -NtUserGetWindowDC 1 -NtUserGetWindowPlacement 2 -NtUserGetWOWClass 2 -NtUserHardErrorControl 3 -NtUserHideCaret 1 -NtUserHiliteMenuItem 4 -NtUserImpersonateDdeClientWindow 2 -NtUserInitialize 3 -NtUserInitializeClientPfnArrays 4 -NtUserInitTask 12 -NtUserInternalGetWindowText 3 -NtUserInvalidateRect 3 -NtUserInvalidateRgn 3 -NtUserIsClipboardFormatAvailable 1 -NtUserKillTimer 2 -NtUserLoadKeyboardLayoutEx 7 -NtUserLockWindowStation 1 -NtUserLockWindowUpdate 1 -NtUserLockWorkStation 0 -NtUserMapVirtualKeyEx 4 -NtUserMenuItemFromPoint 4 -NtUserMessageCall 7 -NtUserMinMaximize 3 -NtUserMNDragLeave 0 -NtUserMNDragOver 2 -NtUserModifyUserStartupInfoFlags 2 -NtUserMoveWindow 6 -NtUserNotifyIMEStatus 3 -NtUserNotifyProcessCreate 4 -NtUserNotifyWinEvent 4 -NtUserOpenClipboard 2 -NtUserOpenDesktop 3 -NtUserOpenInputDesktop 3 -NtUserOpenWindowStation 2 -NtUserPaintDesktop 1 -NtUserPeekMessage 5 -NtUserPostMessage 4 -NtUserPostThreadMessage 4 -NtUserPrintWindow 3 -NtUserProcessConnect 3 -NtUserQueryInformationThread 4 -NtUserQueryInputContext 2 -NtUserQuerySendMessage 1 -NtUserQueryWindow 2 -NtUserRealChildWindowFromPoint 3 -NtUserRealInternalGetMessage 6 -NtUserRealWaitMessageEx 2 -NtUserRedrawWindow 4 -NtUserRegisterClassExWOW 7 -NtUserRegisterUserApiHook 4 -NtUserRegisterHotKey 4 -NtUserRegisterRawInputDevices 3 -NtUserRegisterTasklist 1 -NtUserRegisterWindowMessage 1 -NtUserRemoveMenu 3 -NtUserRemoveProp 2 -NtUserResolveDesktop 4 -NtUserResolveDesktopForWOW 1 -NtUserSBGetParms 4 -NtUserScrollDC 7 -NtUserScrollWindowEx 8 -NtUserSelectPalette 3 -NtUserSendInput 3 -NtUserSetActiveWindow 1 -NtUserSetAppImeLevel 2 -NtUserSetCapture 1 -NtUserSetClassLong 4 -NtUserSetClassWord 3 -NtUserSetClipboardData 3 -NtUserSetClipboardViewer 1 -NtUserSetConsoleReserveKeys 2 -NtUserSetCursor 1 -NtUserSetCursorContents 2 -NtUserSetCursorIconData 4 -NtUserSetFocus 1 -NtUserSetImeHotKey 5 -NtUserSetImeInfoEx 1 -NtUserSetImeOwnerWindow 2 -NtUserSetInformationProcess 4 -NtUserSetInformationThread 4 -NtUserSetInternalWindowPos 4 -NtUserSetKeyboardState 1 -NtUserSetLogonNotifyWindow 1 -NtUserSetMenu 3 -NtUserSetMenuContextHelpId 2 -NtUserSetMenuDefaultItem 3 -NtUserSetMenuFlagRtoL 1 -NtUserSetObjectInformation 4 -NtUserSetParent 2 -NtUserSetProcessWindowStation 1 -NtUserSetProp 3 -NtUserSetScrollInfo 4 -NtUserSetShellWindowEx 2 -NtUserSetSysColors 4 -NtUserSetSystemCursor 2 -NtUserSetSystemMenu 2 -NtUserSetSystemTimer 4 -NtUserSetThreadDesktop 1 -NtUserSetThreadLayoutHandles 2 -NtUserSetThreadState 2 -NtUserSetTimer 4 -NtUserSetWindowFNID 2 -NtUserSetWindowLong 4 -NtUserSetWindowPlacement 2 -NtUserSetWindowPos 7 -NtUserSetWindowRgn 3 -NtUserSetWindowsHookAW 3 -NtUserSetWindowsHookEx 6 -NtUserSetWindowStationUser 4 -NtUserSetWindowWord 3 -NtUserSetWinEventHook 8 -NtUserShowCaret 1 -NtUserShowScrollBar 3 -NtUserShowWindow 2 -NtUserShowWindowAsync 2 -NtUserSoundSentry 0 -NtUserSwitchDesktop 1 -NtUserSystemParametersInfo 4 -NtUserTestForInteractiveUser 1 -NtUserThunkedMenuInfo 2 -NtUserThunkedMenuItemInfo 6 -NtUserToUnicodeEx 7 -NtUserTrackMouseEvent 1 -NtUserTrackPopupMenuEx 6 -NtUserCalcMenuBar 5 -NtUserPaintMenuBar 6 -NtUserTranslateAccelerator 3 -NtUserTranslateMessage 2 -NtUserUnhookWindowsHookEx 1 -NtUserUnhookWinEvent 1 -NtUserUnloadKeyboardLayout 1 -NtUserUnlockWindowStation 1 -NtUserUnregisterClass 3 -NtUserUnregisterUserApiHook 0 -NtUserUnregisterHotKey 2 -NtUserUpdateInputContext 3 -NtUserUpdateInstance 3 -NtUserUpdateLayeredWindow 10 -NtUserGetLayeredWindowAttributes 4 -NtUserSetLayeredWindowAttributes 4 -NtUserUpdatePerUserSystemParameters 2 -NtUserUserHandleGrantAccess 3 -NtUserValidateHandleSecure 1 -NtUserValidateRect 2 -NtUserValidateTimerCallback 1 -NtUserVkKeyScanEx 3 -NtUserWaitForInputIdle 3 -NtUserWaitForMsgAndEvent 1 -NtUserWaitMessage 0 -NtUserWin32PoolAllocationStats 6 -NtUserWindowFromPoint 2 -NtUserYieldTask 0 -NtUserRemoteConnect 3 -NtUserRemoteRedrawRectangle 4 -NtUserRemoteRedrawScreen 0 -NtUserRemoteStopScreenUpdates 0 -NtUserCtxDisplayIOCtl 3 -NtGdiEngAssociateSurface 3 -NtGdiEngCreateBitmap 6 -NtGdiEngCreateDeviceSurface 4 -NtGdiEngCreateDeviceBitmap 4 -NtGdiEngCreatePalette 6 -NtGdiEngComputeGlyphSet 3 -NtGdiEngCopyBits 6 -NtGdiEngDeletePalette 1 -NtGdiEngDeleteSurface 1 -NtGdiEngEraseSurface 3 -NtGdiEngUnlockSurface 1 -NtGdiEngLockSurface 1 -NtGdiEngBitBlt 11 -NtGdiEngStretchBlt 11 -NtGdiEngPlgBlt 11 -NtGdiEngMarkBandingSurface 1 -NtGdiEngStrokePath 8 -NtGdiEngFillPath 7 -NtGdiEngStrokeAndFillPath 10 -NtGdiEngPaint 5 -NtGdiEngLineTo 9 -NtGdiEngAlphaBlend 7 -NtGdiEngGradientFill 10 -NtGdiEngTransparentBlt 8 -NtGdiEngTextOut 10 -NtGdiEngStretchBltROP 13 -NtGdiXLATEOBJ_cGetPalette 4 -NtGdiXLATEOBJ_iXlate 2 -NtGdiXLATEOBJ_hGetColorTransform 1 -NtGdiCLIPOBJ_bEnum 3 -NtGdiCLIPOBJ_cEnumStart 5 -NtGdiCLIPOBJ_ppoGetPath 1 -NtGdiEngDeletePath 1 -NtGdiEngCreateClip 0 -NtGdiEngDeleteClip 1 -NtGdiBRUSHOBJ_ulGetBrushColor 1 -NtGdiBRUSHOBJ_pvAllocRbrush 2 -NtGdiBRUSHOBJ_pvGetRbrush 1 -NtGdiBRUSHOBJ_hGetColorTransform 1 -NtGdiXFORMOBJ_bApplyXform 5 -NtGdiXFORMOBJ_iGetXform 2 -NtGdiFONTOBJ_vGetInfo 3 -NtGdiFONTOBJ_pxoGetXform 1 -NtGdiFONTOBJ_cGetGlyphs 5 -NtGdiFONTOBJ_pifi 1 -NtGdiFONTOBJ_pfdg 1 -NtGdiFONTOBJ_pQueryGlyphAttrs 2 -NtGdiFONTOBJ_pvTrueTypeFontFile 2 -NtGdiFONTOBJ_cGetAllGlyphHandles 2 -NtGdiSTROBJ_bEnum 3 -NtGdiSTROBJ_bEnumPositionsOnly 3 -NtGdiSTROBJ_bGetAdvanceWidths 4 -NtGdiSTROBJ_vEnumStart 1 -NtGdiSTROBJ_dwGetCodePage 1 -NtGdiPATHOBJ_vGetBounds 2 -NtGdiPATHOBJ_bEnum 2 -NtGdiPATHOBJ_vEnumStart 1 -NtGdiPATHOBJ_vEnumStartClipLines 4 -NtGdiPATHOBJ_bEnumClipLines 3 -NtGdiGetDhpdev 1 -NtGdiEngCheckAbort 1 -NtGdiHT_Get8BPPFormatPalette 4 -NtGdiHT_Get8BPPMaskPalette 6 -NtGdiUpdateTransform 1 -NtGdiSetPUMPDOBJ 4 -NtGdiBRUSHOBJ_DeleteRbrush 2 -NtGdiUnmapMemFont 1 -NtGdiDrawStream 3 -NtGdiMakeObjectXferable 2 -NtGdiMakeObjectUnXferable 1 diff --git a/rostests/apitests/w32kdll/w32kdll_2k3sp2/w32kdll_2k3sp2.S b/rostests/apitests/w32kdll/w32kdll_2k3sp2/w32kdll_2k3sp2.S deleted file mode 100644 index 0206219b29c..00000000000 --- a/rostests/apitests/w32kdll/w32kdll_2k3sp2/w32kdll_2k3sp2.S +++ /dev/null @@ -1,4665 +0,0 @@ -/* FILE: System Call Stubs for Native API - * COPYRIGHT: See COPYING in the top level directory - * PURPOSE: obj-i386\lib\win32ksys\win32k.S - * PROGRAMMER: Computer Generated File. See tools/nci/ncitool.c - * REMARK: DO NOT EDIT OR COMMIT MODIFICATIONS TO THIS FILE - */ - - -#include - -.global _NtGdiAbortDoc@4 -_NtGdiAbortDoc@4: - movl $0x1000, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiAbortPath@4 -_NtGdiAbortPath@4: - movl $0x1001, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiAddFontResourceW@24 -_NtGdiAddFontResourceW@24: - movl $0x1002, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x18 - -.global _NtGdiAddRemoteFontToDC@16 -_NtGdiAddRemoteFontToDC@16: - movl $0x1003, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtGdiAddFontMemResourceEx@20 -_NtGdiAddFontMemResourceEx@20: - movl $0x1004, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x14 - -.global _NtGdiRemoveMergeFont@8 -_NtGdiRemoveMergeFont@8: - movl $0x1005, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiAddRemoteMMInstanceToDC@12 -_NtGdiAddRemoteMMInstanceToDC@12: - movl $0x1006, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiAlphaBlend@48 -_NtGdiAlphaBlend@48: - movl $0x1007, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x30 - -.global _NtGdiAngleArc@24 -_NtGdiAngleArc@24: - movl $0x1008, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x18 - -.global _NtGdiAnyLinkedFonts@0 -_NtGdiAnyLinkedFonts@0: - movl $0x1009, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x0 - -.global _NtGdiFontIsLinked@4 -_NtGdiFontIsLinked@4: - movl $0x100a, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiArcInternal@40 -_NtGdiArcInternal@40: - movl $0x100b, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x28 - -.global _NtGdiBeginPath@4 -_NtGdiBeginPath@4: - movl $0x100c, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiBitBlt@44 -_NtGdiBitBlt@44: - movl $0x100d, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x2c - -.global _NtGdiCancelDC@4 -_NtGdiCancelDC@4: - movl $0x100e, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiCheckBitmapBits@32 -_NtGdiCheckBitmapBits@32: - movl $0x100f, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x20 - -.global _NtGdiCloseFigure@4 -_NtGdiCloseFigure@4: - movl $0x1010, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiClearBitmapAttributes@8 -_NtGdiClearBitmapAttributes@8: - movl $0x1011, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiClearBrushAttributes@8 -_NtGdiClearBrushAttributes@8: - movl $0x1012, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiColorCorrectPalette@24 -_NtGdiColorCorrectPalette@24: - movl $0x1013, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x18 - -.global _NtGdiCombineRgn@16 -_NtGdiCombineRgn@16: - movl $0x1014, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtGdiCombineTransform@12 -_NtGdiCombineTransform@12: - movl $0x1015, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiComputeXformCoefficients@4 -_NtGdiComputeXformCoefficients@4: - movl $0x1016, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiConsoleTextOut@16 -_NtGdiConsoleTextOut@16: - movl $0x1017, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtGdiConvertMetafileRect@8 -_NtGdiConvertMetafileRect@8: - movl $0x1018, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiCreateBitmap@20 -_NtGdiCreateBitmap@20: - movl $0x1019, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x14 - -.global _NtGdiCreateClientObj@4 -_NtGdiCreateClientObj@4: - movl $0x101a, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiCreateColorSpace@4 -_NtGdiCreateColorSpace@4: - movl $0x101b, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiCreateColorTransform@32 -_NtGdiCreateColorTransform@32: - movl $0x101c, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x20 - -.global _NtGdiCreateCompatibleBitmap@12 -_NtGdiCreateCompatibleBitmap@12: - movl $0x101d, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiCreateCompatibleDC@4 -_NtGdiCreateCompatibleDC@4: - movl $0x101e, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiCreateDIBBrush@24 -_NtGdiCreateDIBBrush@24: - movl $0x101f, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x18 - -.global _NtGdiCreateDIBitmapInternal@44 -_NtGdiCreateDIBitmapInternal@44: - movl $0x1020, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x2c - -.global _NtGdiCreateDIBSection@36 -_NtGdiCreateDIBSection@36: - movl $0x1021, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x24 - -.global _NtGdiCreateEllipticRgn@16 -_NtGdiCreateEllipticRgn@16: - movl $0x1022, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtGdiCreateHalftonePalette@4 -_NtGdiCreateHalftonePalette@4: - movl $0x1023, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiCreateHatchBrushInternal@12 -_NtGdiCreateHatchBrushInternal@12: - movl $0x1024, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiCreateMetafileDC@4 -_NtGdiCreateMetafileDC@4: - movl $0x1025, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiCreatePaletteInternal@8 -_NtGdiCreatePaletteInternal@8: - movl $0x1026, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiCreatePatternBrushInternal@12 -_NtGdiCreatePatternBrushInternal@12: - movl $0x1027, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiCreatePen@16 -_NtGdiCreatePen@16: - movl $0x1028, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtGdiCreateRectRgn@16 -_NtGdiCreateRectRgn@16: - movl $0x1029, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtGdiCreateRoundRectRgn@24 -_NtGdiCreateRoundRectRgn@24: - movl $0x102a, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x18 - -.global _NtGdiCreateServerMetaFile@24 -_NtGdiCreateServerMetaFile@24: - movl $0x102b, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x18 - -.global _NtGdiCreateSolidBrush@8 -_NtGdiCreateSolidBrush@8: - movl $0x102c, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiD3dContextCreate@16 -_NtGdiD3dContextCreate@16: - movl $0x102d, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtGdiD3dContextDestroy@4 -_NtGdiD3dContextDestroy@4: - movl $0x102e, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiD3dContextDestroyAll@4 -_NtGdiD3dContextDestroyAll@4: - movl $0x102f, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiD3dValidateTextureStageState@4 -_NtGdiD3dValidateTextureStageState@4: - movl $0x1030, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiD3dDrawPrimitives2@28 -_NtGdiD3dDrawPrimitives2@28: - movl $0x1031, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x1c - -.global _NtGdiDdGetDriverState@4 -_NtGdiDdGetDriverState@4: - movl $0x1032, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiDdAddAttachedSurface@12 -_NtGdiDdAddAttachedSurface@12: - movl $0x1033, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiDdAlphaBlt@12 -_NtGdiDdAlphaBlt@12: - movl $0x1034, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiDdAttachSurface@8 -_NtGdiDdAttachSurface@8: - movl $0x1035, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDdBeginMoCompFrame@8 -_NtGdiDdBeginMoCompFrame@8: - movl $0x1036, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDdBlt@12 -_NtGdiDdBlt@12: - movl $0x1037, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiDdCanCreateSurface@8 -_NtGdiDdCanCreateSurface@8: - movl $0x1038, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDdCanCreateD3DBuffer@8 -_NtGdiDdCanCreateD3DBuffer@8: - movl $0x1039, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDdColorControl@8 -_NtGdiDdColorControl@8: - movl $0x103a, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDdCreateDirectDrawObject@4 -_NtGdiDdCreateDirectDrawObject@4: - movl $0x103b, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiDdCreateSurface@32 -_NtGdiDdCreateSurface@32: - movl $0x103c, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x20 - -.global _NtGdiDdCreateD3DBuffer@32 -_NtGdiDdCreateD3DBuffer@32: - movl $0x103d, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x20 - -.global _NtGdiDdCreateMoComp@8 -_NtGdiDdCreateMoComp@8: - movl $0x103e, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDdCreateSurfaceObject@24 -_NtGdiDdCreateSurfaceObject@24: - movl $0x103f, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x18 - -.global _NtGdiDdDeleteDirectDrawObject@4 -_NtGdiDdDeleteDirectDrawObject@4: - movl $0x1040, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiDdDeleteSurfaceObject@4 -_NtGdiDdDeleteSurfaceObject@4: - movl $0x1041, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiDdDestroyMoComp@8 -_NtGdiDdDestroyMoComp@8: - movl $0x1042, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDdDestroySurface@8 -_NtGdiDdDestroySurface@8: - movl $0x1043, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDdDestroyD3DBuffer@4 -_NtGdiDdDestroyD3DBuffer@4: - movl $0x1044, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiDdEndMoCompFrame@8 -_NtGdiDdEndMoCompFrame@8: - movl $0x1045, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDdFlip@20 -_NtGdiDdFlip@20: - movl $0x1046, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x14 - -.global _NtGdiDdFlipToGDISurface@8 -_NtGdiDdFlipToGDISurface@8: - movl $0x1047, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDdGetAvailDriverMemory@8 -_NtGdiDdGetAvailDriverMemory@8: - movl $0x1048, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDdGetBltStatus@8 -_NtGdiDdGetBltStatus@8: - movl $0x1049, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDdGetDC@8 -_NtGdiDdGetDC@8: - movl $0x104a, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDdGetDriverInfo@8 -_NtGdiDdGetDriverInfo@8: - movl $0x104b, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDdGetDxHandle@12 -_NtGdiDdGetDxHandle@12: - movl $0x104c, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiDdGetFlipStatus@8 -_NtGdiDdGetFlipStatus@8: - movl $0x104d, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDdGetInternalMoCompInfo@8 -_NtGdiDdGetInternalMoCompInfo@8: - movl $0x104e, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDdGetMoCompBuffInfo@8 -_NtGdiDdGetMoCompBuffInfo@8: - movl $0x104f, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDdGetMoCompGuids@8 -_NtGdiDdGetMoCompGuids@8: - movl $0x1050, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDdGetMoCompFormats@8 -_NtGdiDdGetMoCompFormats@8: - movl $0x1051, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDdGetScanLine@8 -_NtGdiDdGetScanLine@8: - movl $0x1052, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDdLock@12 -_NtGdiDdLock@12: - movl $0x1053, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiDdLockD3D@8 -_NtGdiDdLockD3D@8: - movl $0x1054, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDdQueryDirectDrawObject@44 -_NtGdiDdQueryDirectDrawObject@44: - movl $0x1055, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x2c - -.global _NtGdiDdQueryMoCompStatus@8 -_NtGdiDdQueryMoCompStatus@8: - movl $0x1056, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDdReenableDirectDrawObject@8 -_NtGdiDdReenableDirectDrawObject@8: - movl $0x1057, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDdReleaseDC@4 -_NtGdiDdReleaseDC@4: - movl $0x1058, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiDdRenderMoComp@8 -_NtGdiDdRenderMoComp@8: - movl $0x1059, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDdResetVisrgn@8 -_NtGdiDdResetVisrgn@8: - movl $0x105a, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDdSetColorKey@8 -_NtGdiDdSetColorKey@8: - movl $0x105b, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDdSetExclusiveMode@8 -_NtGdiDdSetExclusiveMode@8: - movl $0x105c, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDdSetGammaRamp@12 -_NtGdiDdSetGammaRamp@12: - movl $0x105d, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiDdCreateSurfaceEx@12 -_NtGdiDdCreateSurfaceEx@12: - movl $0x105e, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiDdSetOverlayPosition@12 -_NtGdiDdSetOverlayPosition@12: - movl $0x105f, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiDdUnattachSurface@8 -_NtGdiDdUnattachSurface@8: - movl $0x1060, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDdUnlock@8 -_NtGdiDdUnlock@8: - movl $0x1061, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDdUnlockD3D@8 -_NtGdiDdUnlockD3D@8: - movl $0x1062, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDdUpdateOverlay@12 -_NtGdiDdUpdateOverlay@12: - movl $0x1063, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiDdWaitForVerticalBlank@8 -_NtGdiDdWaitForVerticalBlank@8: - movl $0x1064, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDvpCanCreateVideoPort@8 -_NtGdiDvpCanCreateVideoPort@8: - movl $0x1065, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDvpColorControl@8 -_NtGdiDvpColorControl@8: - movl $0x1066, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDvpCreateVideoPort@8 -_NtGdiDvpCreateVideoPort@8: - movl $0x1067, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDvpDestroyVideoPort@8 -_NtGdiDvpDestroyVideoPort@8: - movl $0x1068, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDvpFlipVideoPort@16 -_NtGdiDvpFlipVideoPort@16: - movl $0x1069, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtGdiDvpGetVideoPortBandwidth@8 -_NtGdiDvpGetVideoPortBandwidth@8: - movl $0x106a, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDvpGetVideoPortField@8 -_NtGdiDvpGetVideoPortField@8: - movl $0x106b, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDvpGetVideoPortFlipStatus@8 -_NtGdiDvpGetVideoPortFlipStatus@8: - movl $0x106c, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDvpGetVideoPortInputFormats@8 -_NtGdiDvpGetVideoPortInputFormats@8: - movl $0x106d, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDvpGetVideoPortLine@8 -_NtGdiDvpGetVideoPortLine@8: - movl $0x106e, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDvpGetVideoPortOutputFormats@8 -_NtGdiDvpGetVideoPortOutputFormats@8: - movl $0x106f, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDvpGetVideoPortConnectInfo@8 -_NtGdiDvpGetVideoPortConnectInfo@8: - movl $0x1070, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDvpGetVideoSignalStatus@8 -_NtGdiDvpGetVideoSignalStatus@8: - movl $0x1071, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDvpUpdateVideoPort@16 -_NtGdiDvpUpdateVideoPort@16: - movl $0x1072, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtGdiDvpWaitForVideoPortSync@8 -_NtGdiDvpWaitForVideoPortSync@8: - movl $0x1073, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDvpAcquireNotification@12 -_NtGdiDvpAcquireNotification@12: - movl $0x1074, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiDvpReleaseNotification@8 -_NtGdiDvpReleaseNotification@8: - movl $0x1075, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDxgGenericThunk@24 -_NtGdiDxgGenericThunk@24: - movl $0x1076, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x18 - -.global _NtGdiDeleteClientObj@4 -_NtGdiDeleteClientObj@4: - movl $0x1077, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiDeleteColorSpace@4 -_NtGdiDeleteColorSpace@4: - movl $0x1078, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiDeleteColorTransform@8 -_NtGdiDeleteColorTransform@8: - movl $0x1079, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDeleteObjectApp@4 -_NtGdiDeleteObjectApp@4: - movl $0x107a, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiDescribePixelFormat@16 -_NtGdiDescribePixelFormat@16: - movl $0x107b, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtGdiGetPerBandInfo@8 -_NtGdiGetPerBandInfo@8: - movl $0x107c, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiDoBanding@16 -_NtGdiDoBanding@16: - movl $0x107d, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtGdiDoPalette@24 -_NtGdiDoPalette@24: - movl $0x107e, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x18 - -.global _NtGdiDrawEscape@16 -_NtGdiDrawEscape@16: - movl $0x107f, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtGdiEllipse@20 -_NtGdiEllipse@20: - movl $0x1080, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x14 - -.global _NtGdiEnableEudc@4 -_NtGdiEnableEudc@4: - movl $0x1081, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiEndDoc@4 -_NtGdiEndDoc@4: - movl $0x1082, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiEndPage@4 -_NtGdiEndPage@4: - movl $0x1083, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiEndPath@4 -_NtGdiEndPath@4: - movl $0x1084, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiEnumFontChunk@20 -_NtGdiEnumFontChunk@20: - movl $0x1085, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x14 - -.global _NtGdiEnumFontClose@4 -_NtGdiEnumFontClose@4: - movl $0x1086, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiEnumFontOpen@28 -_NtGdiEnumFontOpen@28: - movl $0x1087, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x1c - -.global _NtGdiEnumObjects@16 -_NtGdiEnumObjects@16: - movl $0x1088, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtGdiEqualRgn@8 -_NtGdiEqualRgn@8: - movl $0x1089, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiEudcLoadUnloadLink@28 -_NtGdiEudcLoadUnloadLink@28: - movl $0x108a, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x1c - -.global _NtGdiExcludeClipRect@20 -_NtGdiExcludeClipRect@20: - movl $0x108b, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x14 - -.global _NtGdiExtCreatePen@44 -_NtGdiExtCreatePen@44: - movl $0x108c, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x2c - -.global _NtGdiExtCreateRegion@12 -_NtGdiExtCreateRegion@12: - movl $0x108d, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiExtEscape@32 -_NtGdiExtEscape@32: - movl $0x108e, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x20 - -.global _NtGdiExtFloodFill@20 -_NtGdiExtFloodFill@20: - movl $0x108f, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x14 - -.global _NtGdiExtGetObjectW@12 -_NtGdiExtGetObjectW@12: - movl $0x1090, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiExtSelectClipRgn@12 -_NtGdiExtSelectClipRgn@12: - movl $0x1091, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiExtTextOutW@36 -_NtGdiExtTextOutW@36: - movl $0x1092, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x24 - -.global _NtGdiFillPath@4 -_NtGdiFillPath@4: - movl $0x1093, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiFillRgn@12 -_NtGdiFillRgn@12: - movl $0x1094, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiFlattenPath@4 -_NtGdiFlattenPath@4: - movl $0x1095, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiFlush@0 -_NtGdiFlush@0: - movl $0x1096, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x0 - -.global _NtGdiForceUFIMapping@8 -_NtGdiForceUFIMapping@8: - movl $0x1097, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiFrameRgn@20 -_NtGdiFrameRgn@20: - movl $0x1098, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x14 - -.global _NtGdiFullscreenControl@20 -_NtGdiFullscreenControl@20: - movl $0x1099, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x14 - -.global _NtGdiGetAndSetDCDword@16 -_NtGdiGetAndSetDCDword@16: - movl $0x109a, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtGdiGetAppClipBox@8 -_NtGdiGetAppClipBox@8: - movl $0x109b, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiGetBitmapBits@12 -_NtGdiGetBitmapBits@12: - movl $0x109c, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiGetBitmapDimension@8 -_NtGdiGetBitmapDimension@8: - movl $0x109d, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiGetBoundsRect@12 -_NtGdiGetBoundsRect@12: - movl $0x109e, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiGetCharABCWidthsW@24 -_NtGdiGetCharABCWidthsW@24: - movl $0x109f, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x18 - -.global _NtGdiGetCharacterPlacementW@24 -_NtGdiGetCharacterPlacementW@24: - movl $0x10a0, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x18 - -.global _NtGdiGetCharSet@4 -_NtGdiGetCharSet@4: - movl $0x10a1, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiGetCharWidthW@24 -_NtGdiGetCharWidthW@24: - movl $0x10a2, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x18 - -.global _NtGdiGetCharWidthInfo@8 -_NtGdiGetCharWidthInfo@8: - movl $0x10a3, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiGetColorAdjustment@8 -_NtGdiGetColorAdjustment@8: - movl $0x10a4, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiGetColorSpaceforBitmap@4 -_NtGdiGetColorSpaceforBitmap@4: - movl $0x10a5, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiGetDCDword@12 -_NtGdiGetDCDword@12: - movl $0x10a6, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiGetDCforBitmap@4 -_NtGdiGetDCforBitmap@4: - movl $0x10a7, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiGetDCObject@8 -_NtGdiGetDCObject@8: - movl $0x10a8, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiGetDCPoint@12 -_NtGdiGetDCPoint@12: - movl $0x10a9, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiGetDeviceCaps@8 -_NtGdiGetDeviceCaps@8: - movl $0x10aa, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiGetDeviceGammaRamp@8 -_NtGdiGetDeviceGammaRamp@8: - movl $0x10ab, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiGetDeviceCapsAll@8 -_NtGdiGetDeviceCapsAll@8: - movl $0x10ac, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiGetDIBitsInternal@36 -_NtGdiGetDIBitsInternal@36: - movl $0x10ad, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x24 - -.global _NtGdiGetETM@8 -_NtGdiGetETM@8: - movl $0x10ae, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiGetEudcTimeStampEx@12 -_NtGdiGetEudcTimeStampEx@12: - movl $0x10af, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiGetFontData@20 -_NtGdiGetFontData@20: - movl $0x10b0, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x14 - -.global _NtGdiGetFontResourceInfoInternalW@28 -_NtGdiGetFontResourceInfoInternalW@28: - movl $0x10b1, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x1c - -.global _NtGdiGetGlyphIndicesW@20 -_NtGdiGetGlyphIndicesW@20: - movl $0x10b2, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x14 - -.global _NtGdiGetGlyphIndicesWInternal@24 -_NtGdiGetGlyphIndicesWInternal@24: - movl $0x10b3, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x18 - -.global _NtGdiGetGlyphOutline@32 -_NtGdiGetGlyphOutline@32: - movl $0x10b4, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x20 - -.global _NtGdiGetKerningPairs@12 -_NtGdiGetKerningPairs@12: - movl $0x10b5, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiGetLinkedUFIs@12 -_NtGdiGetLinkedUFIs@12: - movl $0x10b6, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiGetMiterLimit@8 -_NtGdiGetMiterLimit@8: - movl $0x10b7, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiGetMonitorID@12 -_NtGdiGetMonitorID@12: - movl $0x10b8, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiGetNearestColor@8 -_NtGdiGetNearestColor@8: - movl $0x10b9, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiGetNearestPaletteIndex@8 -_NtGdiGetNearestPaletteIndex@8: - movl $0x10ba, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiGetObjectBitmapHandle@8 -_NtGdiGetObjectBitmapHandle@8: - movl $0x10bb, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiGetOutlineTextMetricsInternalW@16 -_NtGdiGetOutlineTextMetricsInternalW@16: - movl $0x10bc, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtGdiGetPath@16 -_NtGdiGetPath@16: - movl $0x10bd, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtGdiGetPixel@12 -_NtGdiGetPixel@12: - movl $0x10be, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiGetRandomRgn@12 -_NtGdiGetRandomRgn@12: - movl $0x10bf, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiGetRasterizerCaps@8 -_NtGdiGetRasterizerCaps@8: - movl $0x10c0, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiGetRealizationInfo@12 -_NtGdiGetRealizationInfo@12: - movl $0x10c1, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiGetRegionData@12 -_NtGdiGetRegionData@12: - movl $0x10c2, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiGetRgnBox@8 -_NtGdiGetRgnBox@8: - movl $0x10c3, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiGetServerMetaFileBits@28 -_NtGdiGetServerMetaFileBits@28: - movl $0x10c4, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x1c - -.global _NtGdiGetSpoolMessage@16 -_NtGdiGetSpoolMessage@16: - movl $0x10c5, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtGdiGetStats@20 -_NtGdiGetStats@20: - movl $0x10c6, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x14 - -.global _NtGdiGetStockObject@4 -_NtGdiGetStockObject@4: - movl $0x10c7, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiGetStringBitmapW@20 -_NtGdiGetStringBitmapW@20: - movl $0x10c8, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x14 - -.global _NtGdiGetSystemPaletteUse@4 -_NtGdiGetSystemPaletteUse@4: - movl $0x10c9, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiGetTextCharsetInfo@12 -_NtGdiGetTextCharsetInfo@12: - movl $0x10ca, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiGetTextExtent@20 -_NtGdiGetTextExtent@20: - movl $0x10cb, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x14 - -.global _NtGdiGetTextExtentExW@32 -_NtGdiGetTextExtentExW@32: - movl $0x10cc, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x20 - -.global _NtGdiGetTextFaceW@16 -_NtGdiGetTextFaceW@16: - movl $0x10cd, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtGdiGetTextMetricsW@12 -_NtGdiGetTextMetricsW@12: - movl $0x10ce, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiGetTransform@12 -_NtGdiGetTransform@12: - movl $0x10cf, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiGetUFI@24 -_NtGdiGetUFI@24: - movl $0x10d0, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x18 - -.global _NtGdiGetEmbUFI@28 -_NtGdiGetEmbUFI@28: - movl $0x10d1, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x1c - -.global _NtGdiGetUFIPathname@40 -_NtGdiGetUFIPathname@40: - movl $0x10d2, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x28 - -.global _NtGdiGetEmbedFonts@0 -_NtGdiGetEmbedFonts@0: - movl $0x10d3, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x0 - -.global _NtGdiChangeGhostFont@8 -_NtGdiChangeGhostFont@8: - movl $0x10d4, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiAddEmbFontToDC@8 -_NtGdiAddEmbFontToDC@8: - movl $0x10d5, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiGetFontUnicodeRanges@8 -_NtGdiGetFontUnicodeRanges@8: - movl $0x10d6, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiGetWidthTable@28 -_NtGdiGetWidthTable@28: - movl $0x10d7, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x1c - -.global _NtGdiGradientFill@24 -_NtGdiGradientFill@24: - movl $0x10d8, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x18 - -.global _NtGdiHfontCreate@20 -_NtGdiHfontCreate@20: - movl $0x10d9, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x14 - -.global _NtGdiIcmBrushInfo@32 -_NtGdiIcmBrushInfo@32: - movl $0x10da, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x20 - -.global _NtGdiInit@0 -_NtGdiInit@0: - movl $0x10db, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x0 - -.global _NtGdiInitSpool@0 -_NtGdiInitSpool@0: - movl $0x10dc, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x0 - -.global _NtGdiIntersectClipRect@20 -_NtGdiIntersectClipRect@20: - movl $0x10dd, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x14 - -.global _NtGdiInvertRgn@8 -_NtGdiInvertRgn@8: - movl $0x10de, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiLineTo@12 -_NtGdiLineTo@12: - movl $0x10df, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiMakeFontDir@20 -_NtGdiMakeFontDir@20: - movl $0x10e0, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x14 - -.global _NtGdiMakeInfoDC@8 -_NtGdiMakeInfoDC@8: - movl $0x10e1, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiMaskBlt@52 -_NtGdiMaskBlt@52: - movl $0x10e2, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x34 - -.global _NtGdiModifyWorldTransform@12 -_NtGdiModifyWorldTransform@12: - movl $0x10e3, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiMonoBitmap@4 -_NtGdiMonoBitmap@4: - movl $0x10e4, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiMoveTo@16 -_NtGdiMoveTo@16: - movl $0x10e5, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtGdiOffsetClipRgn@12 -_NtGdiOffsetClipRgn@12: - movl $0x10e6, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiOffsetRgn@12 -_NtGdiOffsetRgn@12: - movl $0x10e7, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiOpenDCW@28 -_NtGdiOpenDCW@28: - movl $0x10e8, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x1c - -.global _NtGdiPatBlt@24 -_NtGdiPatBlt@24: - movl $0x10e9, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x18 - -.global _NtGdiPolyPatBlt@20 -_NtGdiPolyPatBlt@20: - movl $0x10ea, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x14 - -.global _NtGdiPathToRegion@4 -_NtGdiPathToRegion@4: - movl $0x10eb, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiPlgBlt@44 -_NtGdiPlgBlt@44: - movl $0x10ec, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x2c - -.global _NtGdiPolyDraw@16 -_NtGdiPolyDraw@16: - movl $0x10ed, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtGdiPolyPolyDraw@20 -_NtGdiPolyPolyDraw@20: - movl $0x10ee, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x14 - -.global _NtGdiPolyTextOutW@16 -_NtGdiPolyTextOutW@16: - movl $0x10ef, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtGdiPtInRegion@12 -_NtGdiPtInRegion@12: - movl $0x10f0, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiPtVisible@12 -_NtGdiPtVisible@12: - movl $0x10f1, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiQueryFonts@12 -_NtGdiQueryFonts@12: - movl $0x10f2, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiQueryFontAssocInfo@4 -_NtGdiQueryFontAssocInfo@4: - movl $0x10f3, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiRectangle@20 -_NtGdiRectangle@20: - movl $0x10f4, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x14 - -.global _NtGdiRectInRegion@8 -_NtGdiRectInRegion@8: - movl $0x10f5, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiRectVisible@8 -_NtGdiRectVisible@8: - movl $0x10f6, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiRemoveFontResourceW@24 -_NtGdiRemoveFontResourceW@24: - movl $0x10f7, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x18 - -.global _NtGdiRemoveFontMemResourceEx@4 -_NtGdiRemoveFontMemResourceEx@4: - movl $0x10f8, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiResetDC@20 -_NtGdiResetDC@20: - movl $0x10f9, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x14 - -.global _NtGdiResizePalette@8 -_NtGdiResizePalette@8: - movl $0x10fa, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiRestoreDC@8 -_NtGdiRestoreDC@8: - movl $0x10fb, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiRoundRect@28 -_NtGdiRoundRect@28: - movl $0x10fc, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x1c - -.global _NtGdiSaveDC@4 -_NtGdiSaveDC@4: - movl $0x10fd, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiScaleViewportExtEx@24 -_NtGdiScaleViewportExtEx@24: - movl $0x10fe, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x18 - -.global _NtGdiScaleWindowExtEx@24 -_NtGdiScaleWindowExtEx@24: - movl $0x10ff, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x18 - -.global _NtGdiSelectBitmap@8 -_NtGdiSelectBitmap@8: - movl $0x1100, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiSelectBrush@8 -_NtGdiSelectBrush@8: - movl $0x1101, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiSelectClipPath@8 -_NtGdiSelectClipPath@8: - movl $0x1102, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiSelectFont@8 -_NtGdiSelectFont@8: - movl $0x1103, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiSelectPen@8 -_NtGdiSelectPen@8: - movl $0x1104, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiSetBitmapAttributes@8 -_NtGdiSetBitmapAttributes@8: - movl $0x1105, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiSetBitmapBits@12 -_NtGdiSetBitmapBits@12: - movl $0x1106, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiSetBitmapDimension@16 -_NtGdiSetBitmapDimension@16: - movl $0x1107, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtGdiSetBoundsRect@12 -_NtGdiSetBoundsRect@12: - movl $0x1108, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiSetBrushAttributes@8 -_NtGdiSetBrushAttributes@8: - movl $0x1109, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiSetBrushOrg@16 -_NtGdiSetBrushOrg@16: - movl $0x110a, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtGdiSetColorAdjustment@8 -_NtGdiSetColorAdjustment@8: - movl $0x110b, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiSetColorSpace@8 -_NtGdiSetColorSpace@8: - movl $0x110c, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiSetDeviceGammaRamp@8 -_NtGdiSetDeviceGammaRamp@8: - movl $0x110d, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiSetDIBitsToDeviceInternal@64 -_NtGdiSetDIBitsToDeviceInternal@64: - movl $0x110e, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x40 - -.global _NtGdiSetFontEnumeration@4 -_NtGdiSetFontEnumeration@4: - movl $0x110f, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiSetFontXform@12 -_NtGdiSetFontXform@12: - movl $0x1110, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiSetIcmMode@12 -_NtGdiSetIcmMode@12: - movl $0x1111, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiSetLinkedUFIs@12 -_NtGdiSetLinkedUFIs@12: - movl $0x1112, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiSetMagicColors@12 -_NtGdiSetMagicColors@12: - movl $0x1113, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiSetMetaRgn@4 -_NtGdiSetMetaRgn@4: - movl $0x1114, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiSetMiterLimit@12 -_NtGdiSetMiterLimit@12: - movl $0x1115, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiGetDeviceWidth@4 -_NtGdiGetDeviceWidth@4: - movl $0x1116, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiMirrorWindowOrg@4 -_NtGdiMirrorWindowOrg@4: - movl $0x1117, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiSetLayout@12 -_NtGdiSetLayout@12: - movl $0x1118, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiSetPixel@16 -_NtGdiSetPixel@16: - movl $0x1119, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtGdiSetPixelFormat@8 -_NtGdiSetPixelFormat@8: - movl $0x111a, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiSetRectRgn@20 -_NtGdiSetRectRgn@20: - movl $0x111b, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x14 - -.global _NtGdiSetSystemPaletteUse@8 -_NtGdiSetSystemPaletteUse@8: - movl $0x111c, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiSetTextJustification@12 -_NtGdiSetTextJustification@12: - movl $0x111d, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiSetupPublicCFONT@12 -_NtGdiSetupPublicCFONT@12: - movl $0x111e, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiSetVirtualResolution@20 -_NtGdiSetVirtualResolution@20: - movl $0x111f, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x14 - -.global _NtGdiSetSizeDevice@12 -_NtGdiSetSizeDevice@12: - movl $0x1120, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiStartDoc@16 -_NtGdiStartDoc@16: - movl $0x1121, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtGdiStartPage@4 -_NtGdiStartPage@4: - movl $0x1122, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiStretchBlt@48 -_NtGdiStretchBlt@48: - movl $0x1123, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x30 - -.global _NtGdiStretchDIBitsInternal@64 -_NtGdiStretchDIBitsInternal@64: - movl $0x1124, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x40 - -.global _NtGdiStrokeAndFillPath@4 -_NtGdiStrokeAndFillPath@4: - movl $0x1125, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiStrokePath@4 -_NtGdiStrokePath@4: - movl $0x1126, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiSwapBuffers@4 -_NtGdiSwapBuffers@4: - movl $0x1127, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiTransformPoints@20 -_NtGdiTransformPoints@20: - movl $0x1128, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x14 - -.global _NtGdiTransparentBlt@44 -_NtGdiTransparentBlt@44: - movl $0x1129, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x2c - -.global _NtGdiUnloadPrinterDriver@8 -_NtGdiUnloadPrinterDriver@8: - movl $0x112a, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiUnmapMemFont@4 -_NtGdiUnmapMemFont@4: - movl $0x112b, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiUnrealizeObject@4 -_NtGdiUnrealizeObject@4: - movl $0x112c, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiUpdateColors@4 -_NtGdiUpdateColors@4: - movl $0x112d, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiWidenPath@4 -_NtGdiWidenPath@4: - movl $0x112e, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserActivateKeyboardLayout@8 -_NtUserActivateKeyboardLayout@8: - movl $0x112f, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserAlterWindowStyle@12 -_NtUserAlterWindowStyle@12: - movl $0x1130, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserAssociateInputContext@12 -_NtUserAssociateInputContext@12: - movl $0x1131, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserAttachThreadInput@12 -_NtUserAttachThreadInput@12: - movl $0x1132, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserBeginPaint@8 -_NtUserBeginPaint@8: - movl $0x1133, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserBitBltSysBmp@32 -_NtUserBitBltSysBmp@32: - movl $0x1134, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x20 - -.global _NtUserBlockInput@4 -_NtUserBlockInput@4: - movl $0x1135, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserBuildHimcList@16 -_NtUserBuildHimcList@16: - movl $0x1136, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserBuildHwndList@28 -_NtUserBuildHwndList@28: - movl $0x1137, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x1c - -.global _NtUserBuildNameList@16 -_NtUserBuildNameList@16: - movl $0x1138, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserBuildPropList@16 -_NtUserBuildPropList@16: - movl $0x1139, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserCallHwnd@8 -_NtUserCallHwnd@8: - movl $0x113a, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserCallHwndLock@8 -_NtUserCallHwndLock@8: - movl $0x113b, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserCallHwndOpt@8 -_NtUserCallHwndOpt@8: - movl $0x113c, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserCallHwndParam@12 -_NtUserCallHwndParam@12: - movl $0x113d, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserCallHwndParamLock@12 -_NtUserCallHwndParamLock@12: - movl $0x113e, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserCallMsgFilter@8 -_NtUserCallMsgFilter@8: - movl $0x113f, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserCallNextHookEx@16 -_NtUserCallNextHookEx@16: - movl $0x1140, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserCallNoParam@4 -_NtUserCallNoParam@4: - movl $0x1141, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserCallOneParam@8 -_NtUserCallOneParam@8: - movl $0x1142, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserCallTwoParam@12 -_NtUserCallTwoParam@12: - movl $0x1143, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserChangeClipboardChain@8 -_NtUserChangeClipboardChain@8: - movl $0x1144, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserChangeDisplaySettings@16 -_NtUserChangeDisplaySettings@16: - movl $0x1145, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserCheckImeHotKey@8 -_NtUserCheckImeHotKey@8: - movl $0x1146, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserCheckMenuItem@12 -_NtUserCheckMenuItem@12: - movl $0x1147, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserChildWindowFromPointEx@16 -_NtUserChildWindowFromPointEx@16: - movl $0x1148, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserClipCursor@4 -_NtUserClipCursor@4: - movl $0x1149, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserCloseClipboard@0 -_NtUserCloseClipboard@0: - movl $0x114a, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x0 - -.global _NtUserCloseDesktop@4 -_NtUserCloseDesktop@4: - movl $0x114b, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserCloseWindowStation@4 -_NtUserCloseWindowStation@4: - movl $0x114c, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserConsoleControl@12 -_NtUserConsoleControl@12: - movl $0x114d, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserConvertMemHandle@8 -_NtUserConvertMemHandle@8: - movl $0x114e, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserCopyAcceleratorTable@12 -_NtUserCopyAcceleratorTable@12: - movl $0x114f, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserCountClipboardFormats@0 -_NtUserCountClipboardFormats@0: - movl $0x1150, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x0 - -.global _NtUserCreateAcceleratorTable@8 -_NtUserCreateAcceleratorTable@8: - movl $0x1151, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserCreateCaret@16 -_NtUserCreateCaret@16: - movl $0x1152, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserCreateDesktop@20 -_NtUserCreateDesktop@20: - movl $0x1153, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x14 - -.global _NtUserCreateInputContext@4 -_NtUserCreateInputContext@4: - movl $0x1154, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserCreateLocalMemHandle@16 -_NtUserCreateLocalMemHandle@16: - movl $0x1155, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserCreateWindowEx@60 -_NtUserCreateWindowEx@60: - movl $0x1156, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x3c - -.global _NtUserCreateWindowStation@28 -_NtUserCreateWindowStation@28: - movl $0x1157, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x1c - -.global _NtUserDdeGetQualityOfService@12 -_NtUserDdeGetQualityOfService@12: - movl $0x1158, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserDdeInitialize@20 -_NtUserDdeInitialize@20: - movl $0x1159, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x14 - -.global _NtUserDdeSetQualityOfService@12 -_NtUserDdeSetQualityOfService@12: - movl $0x115a, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserDeferWindowPos@32 -_NtUserDeferWindowPos@32: - movl $0x115b, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x20 - -.global _NtUserDefSetText@8 -_NtUserDefSetText@8: - movl $0x115c, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserDeleteMenu@12 -_NtUserDeleteMenu@12: - movl $0x115d, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserDestroyAcceleratorTable@4 -_NtUserDestroyAcceleratorTable@4: - movl $0x115e, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserDestroyCursor@8 -_NtUserDestroyCursor@8: - movl $0x115f, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserDestroyInputContext@4 -_NtUserDestroyInputContext@4: - movl $0x1160, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserDestroyMenu@4 -_NtUserDestroyMenu@4: - movl $0x1161, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserDestroyWindow@4 -_NtUserDestroyWindow@4: - movl $0x1162, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserDisableThreadIme@4 -_NtUserDisableThreadIme@4: - movl $0x1163, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserDispatchMessage@4 -_NtUserDispatchMessage@4: - movl $0x1164, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserDragDetect@12 -_NtUserDragDetect@12: - movl $0x1165, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserDragObject@20 -_NtUserDragObject@20: - movl $0x1166, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x14 - -.global _NtUserDrawAnimatedRects@16 -_NtUserDrawAnimatedRects@16: - movl $0x1167, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserDrawCaption@16 -_NtUserDrawCaption@16: - movl $0x1168, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserDrawCaptionTemp@28 -_NtUserDrawCaptionTemp@28: - movl $0x1169, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x1c - -.global _NtUserDrawIconEx@44 -_NtUserDrawIconEx@44: - movl $0x116a, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x2c - -.global _NtUserDrawMenuBarTemp@20 -_NtUserDrawMenuBarTemp@20: - movl $0x116b, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x14 - -.global _NtUserEmptyClipboard@0 -_NtUserEmptyClipboard@0: - movl $0x116c, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x0 - -.global _NtUserEnableMenuItem@12 -_NtUserEnableMenuItem@12: - movl $0x116d, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserEnableScrollBar@12 -_NtUserEnableScrollBar@12: - movl $0x116e, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserEndDeferWindowPosEx@8 -_NtUserEndDeferWindowPosEx@8: - movl $0x116f, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserEndMenu@0 -_NtUserEndMenu@0: - movl $0x1170, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x0 - -.global _NtUserEndPaint@8 -_NtUserEndPaint@8: - movl $0x1171, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserEnumDisplayDevices@16 -_NtUserEnumDisplayDevices@16: - movl $0x1172, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserEnumDisplayMonitors@16 -_NtUserEnumDisplayMonitors@16: - movl $0x1173, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserEnumDisplaySettings@16 -_NtUserEnumDisplaySettings@16: - movl $0x1174, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserEvent@4 -_NtUserEvent@4: - movl $0x1175, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserExcludeUpdateRgn@8 -_NtUserExcludeUpdateRgn@8: - movl $0x1176, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserFillWindow@16 -_NtUserFillWindow@16: - movl $0x1177, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserFindExistingCursorIcon@12 -_NtUserFindExistingCursorIcon@12: - movl $0x1178, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserFindWindowEx@20 -_NtUserFindWindowEx@20: - movl $0x1179, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x14 - -.global _NtUserFlashWindowEx@4 -_NtUserFlashWindowEx@4: - movl $0x117a, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserGetAltTabInfo@24 -_NtUserGetAltTabInfo@24: - movl $0x117b, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x18 - -.global _NtUserGetAncestor@8 -_NtUserGetAncestor@8: - movl $0x117c, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserGetAppImeLevel@4 -_NtUserGetAppImeLevel@4: - movl $0x117d, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserGetAsyncKeyState@4 -_NtUserGetAsyncKeyState@4: - movl $0x117e, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserGetAtomName@8 -_NtUserGetAtomName@8: - movl $0x117f, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserGetCaretBlinkTime@0 -_NtUserGetCaretBlinkTime@0: - movl $0x1180, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x0 - -.global _NtUserGetCaretPos@4 -_NtUserGetCaretPos@4: - movl $0x1181, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserGetClassInfoEx@20 -_NtUserGetClassInfoEx@20: - movl $0x1182, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x14 - -.global _NtUserGetClassName@12 -_NtUserGetClassName@12: - movl $0x1183, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserGetClipboardData@8 -_NtUserGetClipboardData@8: - movl $0x1184, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserGetClipboardFormatName@12 -_NtUserGetClipboardFormatName@12: - movl $0x1185, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserGetClipboardOwner@0 -_NtUserGetClipboardOwner@0: - movl $0x1186, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x0 - -.global _NtUserGetClipboardSequenceNumber@0 -_NtUserGetClipboardSequenceNumber@0: - movl $0x1187, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x0 - -.global _NtUserGetClipboardViewer@0 -_NtUserGetClipboardViewer@0: - movl $0x1188, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x0 - -.global _NtUserGetClipCursor@4 -_NtUserGetClipCursor@4: - movl $0x1189, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserGetComboBoxInfo@8 -_NtUserGetComboBoxInfo@8: - movl $0x118a, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserGetControlBrush@12 -_NtUserGetControlBrush@12: - movl $0x118b, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserGetControlColor@16 -_NtUserGetControlColor@16: - movl $0x118c, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserGetCPD@12 -_NtUserGetCPD@12: - movl $0x118d, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserGetCursorFrameInfo@16 -_NtUserGetCursorFrameInfo@16: - movl $0x118e, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserGetCursorInfo@4 -_NtUserGetCursorInfo@4: - movl $0x118f, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserGetDC@4 -_NtUserGetDC@4: - movl $0x1190, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserGetDCEx@12 -_NtUserGetDCEx@12: - movl $0x1191, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserGetDoubleClickTime@0 -_NtUserGetDoubleClickTime@0: - movl $0x1192, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x0 - -.global _NtUserGetForegroundWindow@0 -_NtUserGetForegroundWindow@0: - movl $0x1193, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x0 - -.global _NtUserGetGuiResources@8 -_NtUserGetGuiResources@8: - movl $0x1194, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserGetGUIThreadInfo@8 -_NtUserGetGUIThreadInfo@8: - movl $0x1195, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserGetIconInfo@24 -_NtUserGetIconInfo@24: - movl $0x1196, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x18 - -.global _NtUserGetIconSize@16 -_NtUserGetIconSize@16: - movl $0x1197, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserGetImeHotKey@16 -_NtUserGetImeHotKey@16: - movl $0x1198, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserGetImeInfoEx@8 -_NtUserGetImeInfoEx@8: - movl $0x1199, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserGetInternalWindowPos@12 -_NtUserGetInternalWindowPos@12: - movl $0x119a, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserGetKeyboardLayoutList@8 -_NtUserGetKeyboardLayoutList@8: - movl $0x119b, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserGetKeyboardLayoutName@4 -_NtUserGetKeyboardLayoutName@4: - movl $0x119c, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserGetKeyboardState@4 -_NtUserGetKeyboardState@4: - movl $0x119d, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserGetKeyNameText@12 -_NtUserGetKeyNameText@12: - movl $0x119e, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserGetKeyState@4 -_NtUserGetKeyState@4: - movl $0x119f, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserGetListBoxInfo@4 -_NtUserGetListBoxInfo@4: - movl $0x11a0, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserGetMenuBarInfo@16 -_NtUserGetMenuBarInfo@16: - movl $0x11a1, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserGetMenuIndex@8 -_NtUserGetMenuIndex@8: - movl $0x11a2, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserGetMenuItemRect@16 -_NtUserGetMenuItemRect@16: - movl $0x11a3, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserGetMessage@16 -_NtUserGetMessage@16: - movl $0x11a4, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserGetMouseMovePointsEx@20 -_NtUserGetMouseMovePointsEx@20: - movl $0x11a5, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x14 - -.global _NtUserGetObjectInformation@20 -_NtUserGetObjectInformation@20: - movl $0x11a6, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x14 - -.global _NtUserGetOpenClipboardWindow@0 -_NtUserGetOpenClipboardWindow@0: - movl $0x11a7, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x0 - -.global _NtUserGetPriorityClipboardFormat@8 -_NtUserGetPriorityClipboardFormat@8: - movl $0x11a8, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserGetProcessWindowStation@0 -_NtUserGetProcessWindowStation@0: - movl $0x11a9, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x0 - -.global _NtUserGetRawInputBuffer@12 -_NtUserGetRawInputBuffer@12: - movl $0x11aa, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserGetRawInputData@20 -_NtUserGetRawInputData@20: - movl $0x11ab, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x14 - -.global _NtUserGetRawInputDeviceInfo@16 -_NtUserGetRawInputDeviceInfo@16: - movl $0x11ac, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserGetRawInputDeviceList@12 -_NtUserGetRawInputDeviceList@12: - movl $0x11ad, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserGetRegisteredRawInputDevices@12 -_NtUserGetRegisteredRawInputDevices@12: - movl $0x11ae, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserGetScrollBarInfo@12 -_NtUserGetScrollBarInfo@12: - movl $0x11af, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserGetSystemMenu@8 -_NtUserGetSystemMenu@8: - movl $0x11b0, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserGetThreadDesktop@8 -_NtUserGetThreadDesktop@8: - movl $0x11b1, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserGetThreadState@4 -_NtUserGetThreadState@4: - movl $0x11b2, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserGetTitleBarInfo@8 -_NtUserGetTitleBarInfo@8: - movl $0x11b3, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserGetUpdateRect@12 -_NtUserGetUpdateRect@12: - movl $0x11b4, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserGetUpdateRgn@12 -_NtUserGetUpdateRgn@12: - movl $0x11b5, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserGetWindowDC@4 -_NtUserGetWindowDC@4: - movl $0x11b6, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserGetWindowPlacement@8 -_NtUserGetWindowPlacement@8: - movl $0x11b7, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserGetWOWClass@8 -_NtUserGetWOWClass@8: - movl $0x11b8, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserHardErrorControl@12 -_NtUserHardErrorControl@12: - movl $0x11b9, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserHideCaret@4 -_NtUserHideCaret@4: - movl $0x11ba, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserHiliteMenuItem@16 -_NtUserHiliteMenuItem@16: - movl $0x11bb, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserImpersonateDdeClientWindow@8 -_NtUserImpersonateDdeClientWindow@8: - movl $0x11bc, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserInitialize@12 -_NtUserInitialize@12: - movl $0x11bd, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserInitializeClientPfnArrays@16 -_NtUserInitializeClientPfnArrays@16: - movl $0x11be, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserInitTask@48 -_NtUserInitTask@48: - movl $0x11bf, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x30 - -.global _NtUserInternalGetWindowText@12 -_NtUserInternalGetWindowText@12: - movl $0x11c0, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserInvalidateRect@12 -_NtUserInvalidateRect@12: - movl $0x11c1, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserInvalidateRgn@12 -_NtUserInvalidateRgn@12: - movl $0x11c2, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserIsClipboardFormatAvailable@4 -_NtUserIsClipboardFormatAvailable@4: - movl $0x11c3, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserKillTimer@8 -_NtUserKillTimer@8: - movl $0x11c4, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserLoadKeyboardLayoutEx@28 -_NtUserLoadKeyboardLayoutEx@28: - movl $0x11c5, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x1c - -.global _NtUserLockWindowStation@4 -_NtUserLockWindowStation@4: - movl $0x11c6, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserLockWindowUpdate@4 -_NtUserLockWindowUpdate@4: - movl $0x11c7, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserLockWorkStation@0 -_NtUserLockWorkStation@0: - movl $0x11c8, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x0 - -.global _NtUserMapVirtualKeyEx@16 -_NtUserMapVirtualKeyEx@16: - movl $0x11c9, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserMenuItemFromPoint@16 -_NtUserMenuItemFromPoint@16: - movl $0x11ca, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserMessageCall@28 -_NtUserMessageCall@28: - movl $0x11cb, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x1c - -.global _NtUserMinMaximize@12 -_NtUserMinMaximize@12: - movl $0x11cc, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserMNDragLeave@0 -_NtUserMNDragLeave@0: - movl $0x11cd, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x0 - -.global _NtUserMNDragOver@8 -_NtUserMNDragOver@8: - movl $0x11ce, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserModifyUserStartupInfoFlags@8 -_NtUserModifyUserStartupInfoFlags@8: - movl $0x11cf, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserMoveWindow@24 -_NtUserMoveWindow@24: - movl $0x11d0, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x18 - -.global _NtUserNotifyIMEStatus@12 -_NtUserNotifyIMEStatus@12: - movl $0x11d1, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserNotifyProcessCreate@16 -_NtUserNotifyProcessCreate@16: - movl $0x11d2, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserNotifyWinEvent@16 -_NtUserNotifyWinEvent@16: - movl $0x11d3, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserOpenClipboard@8 -_NtUserOpenClipboard@8: - movl $0x11d4, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserOpenDesktop@12 -_NtUserOpenDesktop@12: - movl $0x11d5, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserOpenInputDesktop@12 -_NtUserOpenInputDesktop@12: - movl $0x11d6, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserOpenWindowStation@8 -_NtUserOpenWindowStation@8: - movl $0x11d7, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserPaintDesktop@4 -_NtUserPaintDesktop@4: - movl $0x11d8, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserPeekMessage@20 -_NtUserPeekMessage@20: - movl $0x11d9, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x14 - -.global _NtUserPostMessage@16 -_NtUserPostMessage@16: - movl $0x11da, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserPostThreadMessage@16 -_NtUserPostThreadMessage@16: - movl $0x11db, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserPrintWindow@12 -_NtUserPrintWindow@12: - movl $0x11dc, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserProcessConnect@12 -_NtUserProcessConnect@12: - movl $0x11dd, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserQueryInformationThread@16 -_NtUserQueryInformationThread@16: - movl $0x11de, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserQueryInputContext@8 -_NtUserQueryInputContext@8: - movl $0x11df, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserQuerySendMessage@4 -_NtUserQuerySendMessage@4: - movl $0x11e0, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserQueryWindow@8 -_NtUserQueryWindow@8: - movl $0x11e1, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserRealChildWindowFromPoint@12 -_NtUserRealChildWindowFromPoint@12: - movl $0x11e2, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserRealInternalGetMessage@24 -_NtUserRealInternalGetMessage@24: - movl $0x11e3, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x18 - -.global _NtUserRealWaitMessageEx@8 -_NtUserRealWaitMessageEx@8: - movl $0x11e4, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserRedrawWindow@16 -_NtUserRedrawWindow@16: - movl $0x11e5, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserRegisterClassExWOW@28 -_NtUserRegisterClassExWOW@28: - movl $0x11e6, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x1c - -.global _NtUserRegisterUserApiHook@16 -_NtUserRegisterUserApiHook@16: - movl $0x11e7, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserRegisterHotKey@16 -_NtUserRegisterHotKey@16: - movl $0x11e8, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserRegisterRawInputDevices@12 -_NtUserRegisterRawInputDevices@12: - movl $0x11e9, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserRegisterTasklist@4 -_NtUserRegisterTasklist@4: - movl $0x11ea, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserRegisterWindowMessage@4 -_NtUserRegisterWindowMessage@4: - movl $0x11eb, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserRemoveMenu@12 -_NtUserRemoveMenu@12: - movl $0x11ec, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserRemoveProp@8 -_NtUserRemoveProp@8: - movl $0x11ed, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserResolveDesktop@16 -_NtUserResolveDesktop@16: - movl $0x11ee, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserResolveDesktopForWOW@4 -_NtUserResolveDesktopForWOW@4: - movl $0x11ef, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserSBGetParms@16 -_NtUserSBGetParms@16: - movl $0x11f0, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserScrollDC@28 -_NtUserScrollDC@28: - movl $0x11f1, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x1c - -.global _NtUserScrollWindowEx@32 -_NtUserScrollWindowEx@32: - movl $0x11f2, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x20 - -.global _NtUserSelectPalette@12 -_NtUserSelectPalette@12: - movl $0x11f3, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserSendInput@12 -_NtUserSendInput@12: - movl $0x11f4, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserSetActiveWindow@4 -_NtUserSetActiveWindow@4: - movl $0x11f5, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserSetAppImeLevel@8 -_NtUserSetAppImeLevel@8: - movl $0x11f6, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserSetCapture@4 -_NtUserSetCapture@4: - movl $0x11f7, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserSetClassLong@16 -_NtUserSetClassLong@16: - movl $0x11f8, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserSetClassWord@12 -_NtUserSetClassWord@12: - movl $0x11f9, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserSetClipboardData@12 -_NtUserSetClipboardData@12: - movl $0x11fa, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserSetClipboardViewer@4 -_NtUserSetClipboardViewer@4: - movl $0x11fb, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserSetConsoleReserveKeys@8 -_NtUserSetConsoleReserveKeys@8: - movl $0x11fc, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserSetCursor@4 -_NtUserSetCursor@4: - movl $0x11fd, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserSetCursorContents@8 -_NtUserSetCursorContents@8: - movl $0x11fe, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserSetCursorIconData@16 -_NtUserSetCursorIconData@16: - movl $0x11ff, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserSetFocus@4 -_NtUserSetFocus@4: - movl $0x1200, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserSetImeHotKey@20 -_NtUserSetImeHotKey@20: - movl $0x1201, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x14 - -.global _NtUserSetImeInfoEx@4 -_NtUserSetImeInfoEx@4: - movl $0x1202, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserSetImeOwnerWindow@8 -_NtUserSetImeOwnerWindow@8: - movl $0x1203, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserSetInformationProcess@16 -_NtUserSetInformationProcess@16: - movl $0x1204, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserSetInformationThread@16 -_NtUserSetInformationThread@16: - movl $0x1205, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserSetInternalWindowPos@16 -_NtUserSetInternalWindowPos@16: - movl $0x1206, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserSetKeyboardState@4 -_NtUserSetKeyboardState@4: - movl $0x1207, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserSetLogonNotifyWindow@4 -_NtUserSetLogonNotifyWindow@4: - movl $0x1208, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserSetMenu@12 -_NtUserSetMenu@12: - movl $0x1209, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserSetMenuContextHelpId@8 -_NtUserSetMenuContextHelpId@8: - movl $0x120a, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserSetMenuDefaultItem@12 -_NtUserSetMenuDefaultItem@12: - movl $0x120b, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserSetMenuFlagRtoL@4 -_NtUserSetMenuFlagRtoL@4: - movl $0x120c, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserSetObjectInformation@16 -_NtUserSetObjectInformation@16: - movl $0x120d, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserSetParent@8 -_NtUserSetParent@8: - movl $0x120e, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserSetProcessWindowStation@4 -_NtUserSetProcessWindowStation@4: - movl $0x120f, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserSetProp@12 -_NtUserSetProp@12: - movl $0x1210, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserSetScrollInfo@16 -_NtUserSetScrollInfo@16: - movl $0x1211, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserSetShellWindowEx@8 -_NtUserSetShellWindowEx@8: - movl $0x1212, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserSetSysColors@16 -_NtUserSetSysColors@16: - movl $0x1213, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserSetSystemCursor@8 -_NtUserSetSystemCursor@8: - movl $0x1214, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserSetSystemMenu@8 -_NtUserSetSystemMenu@8: - movl $0x1215, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserSetSystemTimer@16 -_NtUserSetSystemTimer@16: - movl $0x1216, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserSetThreadDesktop@4 -_NtUserSetThreadDesktop@4: - movl $0x1217, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserSetThreadLayoutHandles@8 -_NtUserSetThreadLayoutHandles@8: - movl $0x1218, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserSetThreadState@8 -_NtUserSetThreadState@8: - movl $0x1219, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserSetTimer@16 -_NtUserSetTimer@16: - movl $0x121a, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserSetWindowFNID@8 -_NtUserSetWindowFNID@8: - movl $0x121b, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserSetWindowLong@16 -_NtUserSetWindowLong@16: - movl $0x121c, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserSetWindowPlacement@8 -_NtUserSetWindowPlacement@8: - movl $0x121d, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserSetWindowPos@28 -_NtUserSetWindowPos@28: - movl $0x121e, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x1c - -.global _NtUserSetWindowRgn@12 -_NtUserSetWindowRgn@12: - movl $0x121f, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserSetWindowsHookAW@12 -_NtUserSetWindowsHookAW@12: - movl $0x1220, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserSetWindowsHookEx@24 -_NtUserSetWindowsHookEx@24: - movl $0x1221, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x18 - -.global _NtUserSetWindowStationUser@16 -_NtUserSetWindowStationUser@16: - movl $0x1222, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserSetWindowWord@12 -_NtUserSetWindowWord@12: - movl $0x1223, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserSetWinEventHook@32 -_NtUserSetWinEventHook@32: - movl $0x1224, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x20 - -.global _NtUserShowCaret@4 -_NtUserShowCaret@4: - movl $0x1225, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserShowScrollBar@12 -_NtUserShowScrollBar@12: - movl $0x1226, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserShowWindow@8 -_NtUserShowWindow@8: - movl $0x1227, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserShowWindowAsync@8 -_NtUserShowWindowAsync@8: - movl $0x1228, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserSoundSentry@0 -_NtUserSoundSentry@0: - movl $0x1229, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x0 - -.global _NtUserSwitchDesktop@4 -_NtUserSwitchDesktop@4: - movl $0x122a, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserSystemParametersInfo@16 -_NtUserSystemParametersInfo@16: - movl $0x122b, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserTestForInteractiveUser@4 -_NtUserTestForInteractiveUser@4: - movl $0x122c, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserThunkedMenuInfo@8 -_NtUserThunkedMenuInfo@8: - movl $0x122d, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserThunkedMenuItemInfo@24 -_NtUserThunkedMenuItemInfo@24: - movl $0x122e, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x18 - -.global _NtUserToUnicodeEx@28 -_NtUserToUnicodeEx@28: - movl $0x122f, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x1c - -.global _NtUserTrackMouseEvent@4 -_NtUserTrackMouseEvent@4: - movl $0x1230, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserTrackPopupMenuEx@24 -_NtUserTrackPopupMenuEx@24: - movl $0x1231, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x18 - -.global _NtUserCalcMenuBar@20 -_NtUserCalcMenuBar@20: - movl $0x1232, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x14 - -.global _NtUserPaintMenuBar@24 -_NtUserPaintMenuBar@24: - movl $0x1233, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x18 - -.global _NtUserTranslateAccelerator@12 -_NtUserTranslateAccelerator@12: - movl $0x1234, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserTranslateMessage@8 -_NtUserTranslateMessage@8: - movl $0x1235, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserUnhookWindowsHookEx@4 -_NtUserUnhookWindowsHookEx@4: - movl $0x1236, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserUnhookWinEvent@4 -_NtUserUnhookWinEvent@4: - movl $0x1237, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserUnloadKeyboardLayout@4 -_NtUserUnloadKeyboardLayout@4: - movl $0x1238, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserUnlockWindowStation@4 -_NtUserUnlockWindowStation@4: - movl $0x1239, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserUnregisterClass@12 -_NtUserUnregisterClass@12: - movl $0x123a, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserUnregisterUserApiHook@0 -_NtUserUnregisterUserApiHook@0: - movl $0x123b, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x0 - -.global _NtUserUnregisterHotKey@8 -_NtUserUnregisterHotKey@8: - movl $0x123c, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserUpdateInputContext@12 -_NtUserUpdateInputContext@12: - movl $0x123d, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserUpdateInstance@12 -_NtUserUpdateInstance@12: - movl $0x123e, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserUpdateLayeredWindow@40 -_NtUserUpdateLayeredWindow@40: - movl $0x123f, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x28 - -.global _NtUserGetLayeredWindowAttributes@16 -_NtUserGetLayeredWindowAttributes@16: - movl $0x1240, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserSetLayeredWindowAttributes@16 -_NtUserSetLayeredWindowAttributes@16: - movl $0x1241, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserUpdatePerUserSystemParameters@8 -_NtUserUpdatePerUserSystemParameters@8: - movl $0x1242, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserUserHandleGrantAccess@12 -_NtUserUserHandleGrantAccess@12: - movl $0x1243, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserValidateHandleSecure@4 -_NtUserValidateHandleSecure@4: - movl $0x1244, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserValidateRect@8 -_NtUserValidateRect@8: - movl $0x1245, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserValidateTimerCallback@4 -_NtUserValidateTimerCallback@4: - movl $0x1246, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserVkKeyScanEx@12 -_NtUserVkKeyScanEx@12: - movl $0x1247, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserWaitForInputIdle@12 -_NtUserWaitForInputIdle@12: - movl $0x1248, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserWaitForMsgAndEvent@4 -_NtUserWaitForMsgAndEvent@4: - movl $0x1249, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtUserWaitMessage@0 -_NtUserWaitMessage@0: - movl $0x124a, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x0 - -.global _NtUserWin32PoolAllocationStats@24 -_NtUserWin32PoolAllocationStats@24: - movl $0x124b, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x18 - -.global _NtUserWindowFromPoint@8 -_NtUserWindowFromPoint@8: - movl $0x124c, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtUserYieldTask@0 -_NtUserYieldTask@0: - movl $0x124d, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x0 - -.global _NtUserRemoteConnect@12 -_NtUserRemoteConnect@12: - movl $0x124e, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtUserRemoteRedrawRectangle@16 -_NtUserRemoteRedrawRectangle@16: - movl $0x124f, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtUserRemoteRedrawScreen@0 -_NtUserRemoteRedrawScreen@0: - movl $0x1250, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x0 - -.global _NtUserRemoteStopScreenUpdates@0 -_NtUserRemoteStopScreenUpdates@0: - movl $0x1251, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x0 - -.global _NtUserCtxDisplayIOCtl@12 -_NtUserCtxDisplayIOCtl@12: - movl $0x1252, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiEngAssociateSurface@12 -_NtGdiEngAssociateSurface@12: - movl $0x1253, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiEngCreateBitmap@24 -_NtGdiEngCreateBitmap@24: - movl $0x1254, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x18 - -.global _NtGdiEngCreateDeviceSurface@16 -_NtGdiEngCreateDeviceSurface@16: - movl $0x1255, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtGdiEngCreateDeviceBitmap@16 -_NtGdiEngCreateDeviceBitmap@16: - movl $0x1256, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtGdiEngCreatePalette@24 -_NtGdiEngCreatePalette@24: - movl $0x1257, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x18 - -.global _NtGdiEngComputeGlyphSet@12 -_NtGdiEngComputeGlyphSet@12: - movl $0x1258, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiEngCopyBits@24 -_NtGdiEngCopyBits@24: - movl $0x1259, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x18 - -.global _NtGdiEngDeletePalette@4 -_NtGdiEngDeletePalette@4: - movl $0x125a, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiEngDeleteSurface@4 -_NtGdiEngDeleteSurface@4: - movl $0x125b, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiEngEraseSurface@12 -_NtGdiEngEraseSurface@12: - movl $0x125c, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiEngUnlockSurface@4 -_NtGdiEngUnlockSurface@4: - movl $0x125d, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiEngLockSurface@4 -_NtGdiEngLockSurface@4: - movl $0x125e, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiEngBitBlt@44 -_NtGdiEngBitBlt@44: - movl $0x125f, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x2c - -.global _NtGdiEngStretchBlt@44 -_NtGdiEngStretchBlt@44: - movl $0x1260, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x2c - -.global _NtGdiEngPlgBlt@44 -_NtGdiEngPlgBlt@44: - movl $0x1261, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x2c - -.global _NtGdiEngMarkBandingSurface@4 -_NtGdiEngMarkBandingSurface@4: - movl $0x1262, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiEngStrokePath@32 -_NtGdiEngStrokePath@32: - movl $0x1263, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x20 - -.global _NtGdiEngFillPath@28 -_NtGdiEngFillPath@28: - movl $0x1264, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x1c - -.global _NtGdiEngStrokeAndFillPath@40 -_NtGdiEngStrokeAndFillPath@40: - movl $0x1265, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x28 - -.global _NtGdiEngPaint@20 -_NtGdiEngPaint@20: - movl $0x1266, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x14 - -.global _NtGdiEngLineTo@36 -_NtGdiEngLineTo@36: - movl $0x1267, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x24 - -.global _NtGdiEngAlphaBlend@28 -_NtGdiEngAlphaBlend@28: - movl $0x1268, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x1c - -.global _NtGdiEngGradientFill@40 -_NtGdiEngGradientFill@40: - movl $0x1269, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x28 - -.global _NtGdiEngTransparentBlt@32 -_NtGdiEngTransparentBlt@32: - movl $0x126a, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x20 - -.global _NtGdiEngTextOut@40 -_NtGdiEngTextOut@40: - movl $0x126b, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x28 - -.global _NtGdiEngStretchBltROP@52 -_NtGdiEngStretchBltROP@52: - movl $0x126c, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x34 - -.global _NtGdiXLATEOBJ_cGetPalette@16 -_NtGdiXLATEOBJ_cGetPalette@16: - movl $0x126d, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtGdiXLATEOBJ_iXlate@8 -_NtGdiXLATEOBJ_iXlate@8: - movl $0x126e, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiXLATEOBJ_hGetColorTransform@4 -_NtGdiXLATEOBJ_hGetColorTransform@4: - movl $0x126f, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiCLIPOBJ_bEnum@12 -_NtGdiCLIPOBJ_bEnum@12: - movl $0x1270, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiCLIPOBJ_cEnumStart@20 -_NtGdiCLIPOBJ_cEnumStart@20: - movl $0x1271, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x14 - -.global _NtGdiCLIPOBJ_ppoGetPath@4 -_NtGdiCLIPOBJ_ppoGetPath@4: - movl $0x1272, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiEngDeletePath@4 -_NtGdiEngDeletePath@4: - movl $0x1273, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiEngCreateClip@0 -_NtGdiEngCreateClip@0: - movl $0x1274, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x0 - -.global _NtGdiEngDeleteClip@4 -_NtGdiEngDeleteClip@4: - movl $0x1275, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiBRUSHOBJ_ulGetBrushColor@4 -_NtGdiBRUSHOBJ_ulGetBrushColor@4: - movl $0x1276, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiBRUSHOBJ_pvAllocRbrush@8 -_NtGdiBRUSHOBJ_pvAllocRbrush@8: - movl $0x1277, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiBRUSHOBJ_pvGetRbrush@4 -_NtGdiBRUSHOBJ_pvGetRbrush@4: - movl $0x1278, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiBRUSHOBJ_hGetColorTransform@4 -_NtGdiBRUSHOBJ_hGetColorTransform@4: - movl $0x1279, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiXFORMOBJ_bApplyXform@20 -_NtGdiXFORMOBJ_bApplyXform@20: - movl $0x127a, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x14 - -.global _NtGdiXFORMOBJ_iGetXform@8 -_NtGdiXFORMOBJ_iGetXform@8: - movl $0x127b, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiFONTOBJ_vGetInfo@12 -_NtGdiFONTOBJ_vGetInfo@12: - movl $0x127c, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiFONTOBJ_pxoGetXform@4 -_NtGdiFONTOBJ_pxoGetXform@4: - movl $0x127d, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiFONTOBJ_cGetGlyphs@20 -_NtGdiFONTOBJ_cGetGlyphs@20: - movl $0x127e, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x14 - -.global _NtGdiFONTOBJ_pifi@4 -_NtGdiFONTOBJ_pifi@4: - movl $0x127f, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiFONTOBJ_pfdg@4 -_NtGdiFONTOBJ_pfdg@4: - movl $0x1280, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiFONTOBJ_pQueryGlyphAttrs@8 -_NtGdiFONTOBJ_pQueryGlyphAttrs@8: - movl $0x1281, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiFONTOBJ_pvTrueTypeFontFile@8 -_NtGdiFONTOBJ_pvTrueTypeFontFile@8: - movl $0x1282, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiFONTOBJ_cGetAllGlyphHandles@8 -_NtGdiFONTOBJ_cGetAllGlyphHandles@8: - movl $0x1283, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiSTROBJ_bEnum@12 -_NtGdiSTROBJ_bEnum@12: - movl $0x1284, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiSTROBJ_bEnumPositionsOnly@12 -_NtGdiSTROBJ_bEnumPositionsOnly@12: - movl $0x1285, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiSTROBJ_bGetAdvanceWidths@16 -_NtGdiSTROBJ_bGetAdvanceWidths@16: - movl $0x1286, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtGdiSTROBJ_vEnumStart@4 -_NtGdiSTROBJ_vEnumStart@4: - movl $0x1287, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiSTROBJ_dwGetCodePage@4 -_NtGdiSTROBJ_dwGetCodePage@4: - movl $0x1288, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiPATHOBJ_vGetBounds@8 -_NtGdiPATHOBJ_vGetBounds@8: - movl $0x1289, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiPATHOBJ_bEnum@8 -_NtGdiPATHOBJ_bEnum@8: - movl $0x128a, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiPATHOBJ_vEnumStart@4 -_NtGdiPATHOBJ_vEnumStart@4: - movl $0x128b, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiPATHOBJ_vEnumStartClipLines@16 -_NtGdiPATHOBJ_vEnumStartClipLines@16: - movl $0x128c, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtGdiPATHOBJ_bEnumClipLines@12 -_NtGdiPATHOBJ_bEnumClipLines@12: - movl $0x128d, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiGetDhpdev@4 -_NtGdiGetDhpdev@4: - movl $0x128e, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiEngCheckAbort@4 -_NtGdiEngCheckAbort@4: - movl $0x128f, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiHT_Get8BPPFormatPalette@16 -_NtGdiHT_Get8BPPFormatPalette@16: - movl $0x1290, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtGdiHT_Get8BPPMaskPalette@24 -_NtGdiHT_Get8BPPMaskPalette@24: - movl $0x1291, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x18 - -.global _NtGdiUpdateTransform@4 -_NtGdiUpdateTransform@4: - movl $0x1292, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiSetPUMPDOBJ@16 -_NtGdiSetPUMPDOBJ@16: - movl $0x1293, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x10 - -.global _NtGdiBRUSHOBJ_DeleteRbrush@8 -_NtGdiBRUSHOBJ_DeleteRbrush@8: - movl $0x1294, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiUMPDEngFreeUserMem@4 -_NtGdiUMPDEngFreeUserMem@4: - movl $0x1295, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - -.global _NtGdiDrawStream@12 -_NtGdiDrawStream@12: - movl $0x1296, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0xc - -.global _NtGdiMakeObjectXferable@8 -_NtGdiMakeObjectXferable@8: - movl $0x1297, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x8 - -.global _NtGdiMakeObjectUnXferable@4 -_NtGdiMakeObjectUnXferable@4: - movl $0x1298, %eax - movl $KUSER_SHARED_SYSCALL, %ecx - call *(%ecx) - ret $0x4 - diff --git a/rostests/apitests/w32kdll/w32kdll_2k3sp2/w32kdll_2k3sp2.def b/rostests/apitests/w32kdll/w32kdll_2k3sp2/w32kdll_2k3sp2.def deleted file mode 100644 index 2d49073abc2..00000000000 --- a/rostests/apitests/w32kdll/w32kdll_2k3sp2/w32kdll_2k3sp2.def +++ /dev/null @@ -1,673 +0,0 @@ -; -; ReactOS Operating System -; -; This file contains all win32k native api functions from win 2k3 sp 2 -; -LIBRARY w32kdll.dll - -EXPORTS -NtGdiAbortDoc@4 -NtGdiAbortPath@4 -NtGdiAddFontResourceW@24 -NtGdiAddRemoteFontToDC@16 -NtGdiAddFontMemResourceEx@20 -NtGdiRemoveMergeFont@8 -NtGdiAddRemoteMMInstanceToDC@12 -NtGdiAlphaBlend@48 -NtGdiAngleArc@24 -NtGdiAnyLinkedFonts@0 -NtGdiFontIsLinked@4 -NtGdiArcInternal@40 -NtGdiBeginPath@4 -NtGdiBitBlt@44 -NtGdiCancelDC@4 -NtGdiCheckBitmapBits@32 -NtGdiCloseFigure@4 -NtGdiClearBitmapAttributes@8 -NtGdiClearBrushAttributes@8 -NtGdiColorCorrectPalette@24 -NtGdiCombineRgn@16 -NtGdiCombineTransform@12 -NtGdiComputeXformCoefficients@4 -NtGdiConsoleTextOut@16 -NtGdiConvertMetafileRect@8 -NtGdiCreateBitmap@20 -NtGdiCreateClientObj@4 -NtGdiCreateColorSpace@4 -NtGdiCreateColorTransform@32 -NtGdiCreateCompatibleBitmap@12 -NtGdiCreateCompatibleDC@4 -NtGdiCreateDIBBrush@24 -NtGdiCreateDIBitmapInternal@44 -NtGdiCreateDIBSection@36 -NtGdiCreateEllipticRgn@16 -NtGdiCreateHalftonePalette@4 -NtGdiCreateHatchBrushInternal@12 -NtGdiCreateMetafileDC@4 -NtGdiCreatePaletteInternal@8 -NtGdiCreatePatternBrushInternal@12 -NtGdiCreatePen@16 -NtGdiCreateRectRgn@16 -NtGdiCreateRoundRectRgn@24 -NtGdiCreateServerMetaFile@24 -NtGdiCreateSolidBrush@8 -NtGdiD3dContextCreate@16 -NtGdiD3dContextDestroy@4 -NtGdiD3dContextDestroyAll@4 -NtGdiD3dValidateTextureStageState@4 -NtGdiD3dDrawPrimitives2@28 -NtGdiDdGetDriverState@4 -NtGdiDdAddAttachedSurface@12 -NtGdiDdAlphaBlt@12 -NtGdiDdAttachSurface@8 -NtGdiDdBeginMoCompFrame@8 -NtGdiDdBlt@12 -NtGdiDdCanCreateSurface@8 -NtGdiDdCanCreateD3DBuffer@8 -NtGdiDdColorControl@8 -NtGdiDdCreateDirectDrawObject@4 -NtGdiDdCreateSurface@32 -NtGdiDdCreateD3DBuffer@32 -NtGdiDdCreateMoComp@8 -NtGdiDdCreateSurfaceObject@24 -NtGdiDdDeleteDirectDrawObject@4 -NtGdiDdDeleteSurfaceObject@4 -NtGdiDdDestroyMoComp@8 -NtGdiDdDestroySurface@8 -NtGdiDdDestroyD3DBuffer@4 -NtGdiDdEndMoCompFrame@8 -NtGdiDdFlip@20 -NtGdiDdFlipToGDISurface@8 -NtGdiDdGetAvailDriverMemory@8 -NtGdiDdGetBltStatus@8 -NtGdiDdGetDC@8 -NtGdiDdGetDriverInfo@8 -NtGdiDdGetDxHandle@12 -NtGdiDdGetFlipStatus@8 -NtGdiDdGetInternalMoCompInfo@8 -NtGdiDdGetMoCompBuffInfo@8 -NtGdiDdGetMoCompGuids@8 -NtGdiDdGetMoCompFormats@8 -NtGdiDdGetScanLine@8 -NtGdiDdLock@12 -NtGdiDdLockD3D@8 -NtGdiDdQueryDirectDrawObject@44 -NtGdiDdQueryMoCompStatus@8 -NtGdiDdReenableDirectDrawObject@8 -NtGdiDdReleaseDC@4 -NtGdiDdRenderMoComp@8 -NtGdiDdResetVisrgn@8 -NtGdiDdSetColorKey@8 -NtGdiDdSetExclusiveMode@8 -NtGdiDdSetGammaRamp@12 -NtGdiDdCreateSurfaceEx@12 -NtGdiDdSetOverlayPosition@12 -NtGdiDdUnattachSurface@8 -NtGdiDdUnlock@8 -NtGdiDdUnlockD3D@8 -NtGdiDdUpdateOverlay@12 -NtGdiDdWaitForVerticalBlank@8 -NtGdiDvpCanCreateVideoPort@8 -NtGdiDvpColorControl@8 -NtGdiDvpCreateVideoPort@8 -NtGdiDvpDestroyVideoPort@8 -NtGdiDvpFlipVideoPort@16 -NtGdiDvpGetVideoPortBandwidth@8 -NtGdiDvpGetVideoPortField@8 -NtGdiDvpGetVideoPortFlipStatus@8 -NtGdiDvpGetVideoPortInputFormats@8 -NtGdiDvpGetVideoPortLine@8 -NtGdiDvpGetVideoPortOutputFormats@8 -NtGdiDvpGetVideoPortConnectInfo@8 -NtGdiDvpGetVideoSignalStatus@8 -NtGdiDvpUpdateVideoPort@16 -NtGdiDvpWaitForVideoPortSync@8 -NtGdiDvpAcquireNotification@12 -NtGdiDvpReleaseNotification@8 -NtGdiDxgGenericThunk@24 -NtGdiDeleteClientObj@4 -NtGdiDeleteColorSpace@4 -NtGdiDeleteColorTransform@8 -NtGdiDeleteObjectApp@4 -NtGdiDescribePixelFormat@16 -NtGdiGetPerBandInfo@8 -NtGdiDoBanding@16 -NtGdiDoPalette@24 -NtGdiDrawEscape@16 -NtGdiEllipse@20 -NtGdiEnableEudc@4 -NtGdiEndDoc@4 -NtGdiEndPage@4 -NtGdiEndPath@4 -NtGdiEnumFontChunk@20 -NtGdiEnumFontClose@4 -NtGdiEnumFontOpen@28 -NtGdiEnumObjects@16 -NtGdiEqualRgn@8 -NtGdiEudcLoadUnloadLink@28 -NtGdiExcludeClipRect@20 -NtGdiExtCreatePen@44 -NtGdiExtCreateRegion@12 -NtGdiExtEscape@32 -NtGdiExtFloodFill@20 -NtGdiExtGetObjectW@12 -NtGdiExtSelectClipRgn@12 -NtGdiExtTextOutW@36 -NtGdiFillPath@4 -NtGdiFillRgn@12 -NtGdiFlattenPath@4 -NtGdiFlush@0 -NtGdiForceUFIMapping@8 -NtGdiFrameRgn@20 -NtGdiFullscreenControl@20 -NtGdiGetAndSetDCDword@16 -NtGdiGetAppClipBox@8 -NtGdiGetBitmapBits@12 -NtGdiGetBitmapDimension@8 -NtGdiGetBoundsRect@12 -NtGdiGetCharABCWidthsW@24 -NtGdiGetCharacterPlacementW@24 -NtGdiGetCharSet@4 -NtGdiGetCharWidthW@24 -NtGdiGetCharWidthInfo@8 -NtGdiGetColorAdjustment@8 -NtGdiGetColorSpaceforBitmap@4 -NtGdiGetDCDword@12 -NtGdiGetDCforBitmap@4 -NtGdiGetDCObject@8 -NtGdiGetDCPoint@12 -NtGdiGetDeviceCaps@8 -NtGdiGetDeviceGammaRamp@8 -NtGdiGetDeviceCapsAll@8 -NtGdiGetDIBitsInternal@36 -NtGdiGetETM@8 -NtGdiGetEudcTimeStampEx@12 -NtGdiGetFontData@20 -NtGdiGetFontResourceInfoInternalW@28 -NtGdiGetGlyphIndicesW@20 -NtGdiGetGlyphIndicesWInternal@24 -NtGdiGetGlyphOutline@32 -NtGdiGetKerningPairs@12 -NtGdiGetLinkedUFIs@12 -NtGdiGetMiterLimit@8 -NtGdiGetMonitorID@12 -NtGdiGetNearestColor@8 -NtGdiGetNearestPaletteIndex@8 -NtGdiGetObjectBitmapHandle@8 -NtGdiGetOutlineTextMetricsInternalW@16 -NtGdiGetPath@16 -NtGdiGetPixel@12 -NtGdiGetRandomRgn@12 -NtGdiGetRasterizerCaps@8 -NtGdiGetRealizationInfo@12 -NtGdiGetRegionData@12 -NtGdiGetRgnBox@8 -NtGdiGetServerMetaFileBits@28 -NtGdiGetSpoolMessage@16 -NtGdiGetStats@20 -NtGdiGetStockObject@4 -NtGdiGetStringBitmapW@20 -NtGdiGetSystemPaletteUse@4 -NtGdiGetTextCharsetInfo@12 -NtGdiGetTextExtent@20 -NtGdiGetTextExtentExW@32 -NtGdiGetTextFaceW@16 -NtGdiGetTextMetricsW@12 -NtGdiGetTransform@12 -NtGdiGetUFI@24 -NtGdiGetEmbUFI@28 -NtGdiGetUFIPathname@40 -NtGdiGetEmbedFonts@0 -NtGdiChangeGhostFont@8 -NtGdiAddEmbFontToDC@8 -NtGdiGetFontUnicodeRanges@8 -NtGdiGetWidthTable@28 -NtGdiGradientFill@24 -NtGdiHfontCreate@20 -NtGdiIcmBrushInfo@32 -NtGdiInit@0 -NtGdiInitSpool@0 -NtGdiIntersectClipRect@20 -NtGdiInvertRgn@8 -NtGdiLineTo@12 -NtGdiMakeFontDir@20 -NtGdiMakeInfoDC@8 -NtGdiMaskBlt@52 -NtGdiModifyWorldTransform@12 -NtGdiMonoBitmap@4 -NtGdiMoveTo@16 -NtGdiOffsetClipRgn@12 -NtGdiOffsetRgn@12 -NtGdiOpenDCW@28 -NtGdiPatBlt@24 -NtGdiPolyPatBlt@20 -NtGdiPathToRegion@4 -NtGdiPlgBlt@44 -NtGdiPolyDraw@16 -NtGdiPolyPolyDraw@20 -NtGdiPolyTextOutW@16 -NtGdiPtInRegion@12 -NtGdiPtVisible@12 -NtGdiQueryFonts@12 -NtGdiQueryFontAssocInfo@4 -NtGdiRectangle@20 -NtGdiRectInRegion@8 -NtGdiRectVisible@8 -NtGdiRemoveFontResourceW@24 -NtGdiRemoveFontMemResourceEx@4 -NtGdiResetDC@20 -NtGdiResizePalette@8 -NtGdiRestoreDC@8 -NtGdiRoundRect@28 -NtGdiSaveDC@4 -NtGdiScaleViewportExtEx@24 -NtGdiScaleWindowExtEx@24 -NtGdiSelectBitmap@8 -NtGdiSelectBrush@8 -NtGdiSelectClipPath@8 -NtGdiSelectFont@8 -NtGdiSelectPen@8 -NtGdiSetBitmapAttributes@8 -NtGdiSetBitmapBits@12 -NtGdiSetBitmapDimension@16 -NtGdiSetBoundsRect@12 -NtGdiSetBrushAttributes@8 -NtGdiSetBrushOrg@16 -NtGdiSetColorAdjustment@8 -NtGdiSetColorSpace@8 -NtGdiSetDeviceGammaRamp@8 -NtGdiSetDIBitsToDeviceInternal@64 -NtGdiSetFontEnumeration@4 -NtGdiSetFontXform@12 -NtGdiSetIcmMode@12 -NtGdiSetLinkedUFIs@12 -NtGdiSetMagicColors@12 -NtGdiSetMetaRgn@4 -NtGdiSetMiterLimit@12 -NtGdiGetDeviceWidth@4 -NtGdiMirrorWindowOrg@4 -NtGdiSetLayout@12 -NtGdiSetPixel@16 -NtGdiSetPixelFormat@8 -NtGdiSetRectRgn@20 -NtGdiSetSystemPaletteUse@8 -NtGdiSetTextJustification@12 -NtGdiSetupPublicCFONT@12 -NtGdiSetVirtualResolution@20 -NtGdiSetSizeDevice@12 -NtGdiStartDoc@16 -NtGdiStartPage@4 -NtGdiStretchBlt@48 -NtGdiStretchDIBitsInternal@64 -NtGdiStrokeAndFillPath@4 -NtGdiStrokePath@4 -NtGdiSwapBuffers@4 -NtGdiTransformPoints@20 -NtGdiTransparentBlt@44 -NtGdiUnloadPrinterDriver@8 -NtGdiUnmapMemFont@4 -NtGdiUnrealizeObject@4 -NtGdiUpdateColors@4 -NtGdiWidenPath@4 -NtUserActivateKeyboardLayout@8 -NtUserAlterWindowStyle@12 -NtUserAssociateInputContext@12 -NtUserAttachThreadInput@12 -NtUserBeginPaint@8 -NtUserBitBltSysBmp@32 -NtUserBlockInput@4 -NtUserBuildHimcList@16 -NtUserBuildHwndList@28 -NtUserBuildNameList@16 -NtUserBuildPropList@16 -NtUserCallHwnd@8 -NtUserCallHwndLock@8 -NtUserCallHwndOpt@8 -NtUserCallHwndParam@12 -NtUserCallHwndParamLock@12 -NtUserCallMsgFilter@8 -NtUserCallNextHookEx@16 -NtUserCallNoParam@4 -NtUserCallOneParam@8 -NtUserCallTwoParam@12 -NtUserChangeClipboardChain@8 -NtUserChangeDisplaySettings@16 -NtUserCheckImeHotKey@8 -NtUserCheckMenuItem@12 -NtUserChildWindowFromPointEx@16 -NtUserClipCursor@4 -NtUserCloseClipboard@0 -NtUserCloseDesktop@4 -NtUserCloseWindowStation@4 -NtUserConsoleControl@12 -NtUserConvertMemHandle@8 -NtUserCopyAcceleratorTable@12 -NtUserCountClipboardFormats@0 -NtUserCreateAcceleratorTable@8 -NtUserCreateCaret@16 -NtUserCreateDesktop@20 -NtUserCreateInputContext@4 -NtUserCreateLocalMemHandle@16 -NtUserCreateWindowEx@60 -NtUserCreateWindowStation@28 -NtUserDdeGetQualityOfService@12 -NtUserDdeInitialize@20 -NtUserDdeSetQualityOfService@12 -NtUserDeferWindowPos@32 -NtUserDefSetText@8 -NtUserDeleteMenu@12 -NtUserDestroyAcceleratorTable@4 -NtUserDestroyCursor@8 -NtUserDestroyInputContext@4 -NtUserDestroyMenu@4 -NtUserDestroyWindow@4 -NtUserDisableThreadIme@4 -NtUserDispatchMessage@4 -NtUserDragDetect@12 -NtUserDragObject@20 -NtUserDrawAnimatedRects@16 -NtUserDrawCaption@16 -NtUserDrawCaptionTemp@28 -NtUserDrawIconEx@44 -NtUserDrawMenuBarTemp@20 -NtUserEmptyClipboard@0 -NtUserEnableMenuItem@12 -NtUserEnableScrollBar@12 -NtUserEndDeferWindowPosEx@8 -NtUserEndMenu@0 -NtUserEndPaint@8 -NtUserEnumDisplayDevices@16 -NtUserEnumDisplayMonitors@16 -NtUserEnumDisplaySettings@16 -NtUserEvent@4 -NtUserExcludeUpdateRgn@8 -NtUserFillWindow@16 -NtUserFindExistingCursorIcon@12 -NtUserFindWindowEx@20 -NtUserFlashWindowEx@4 -NtUserGetAltTabInfo@24 -NtUserGetAncestor@8 -NtUserGetAppImeLevel@4 -NtUserGetAsyncKeyState@4 -NtUserGetAtomName@8 -NtUserGetCaretBlinkTime@0 -NtUserGetCaretPos@4 -NtUserGetClassInfoEx@20 -NtUserGetClassName@12 -NtUserGetClipboardData@8 -NtUserGetClipboardFormatName@12 -NtUserGetClipboardOwner@0 -NtUserGetClipboardSequenceNumber@0 -NtUserGetClipboardViewer@0 -NtUserGetClipCursor@4 -NtUserGetComboBoxInfo@8 -NtUserGetControlBrush@12 -NtUserGetControlColor@16 -NtUserGetCPD@12 -NtUserGetCursorFrameInfo@16 -NtUserGetCursorInfo@4 -NtUserGetDC@4 -NtUserGetDCEx@12 -NtUserGetDoubleClickTime@0 -NtUserGetForegroundWindow@0 -NtUserGetGuiResources@8 -NtUserGetGUIThreadInfo@8 -NtUserGetIconInfo@24 -NtUserGetIconSize@16 -NtUserGetImeHotKey@16 -NtUserGetImeInfoEx@8 -NtUserGetInternalWindowPos@12 -NtUserGetKeyboardLayoutList@8 -NtUserGetKeyboardLayoutName@4 -NtUserGetKeyboardState@4 -NtUserGetKeyNameText@12 -NtUserGetKeyState@4 -NtUserGetListBoxInfo@4 -NtUserGetMenuBarInfo@16 -NtUserGetMenuIndex@8 -NtUserGetMenuItemRect@16 -NtUserGetMessage@16 -NtUserGetMouseMovePointsEx@20 -NtUserGetObjectInformation@20 -NtUserGetOpenClipboardWindow@0 -NtUserGetPriorityClipboardFormat@8 -NtUserGetProcessWindowStation@0 -NtUserGetRawInputBuffer@12 -NtUserGetRawInputData@20 -NtUserGetRawInputDeviceInfo@16 -NtUserGetRawInputDeviceList@12 -NtUserGetRegisteredRawInputDevices@12 -NtUserGetScrollBarInfo@12 -NtUserGetSystemMenu@8 -NtUserGetThreadDesktop@8 -NtUserGetThreadState@4 -NtUserGetTitleBarInfo@8 -NtUserGetUpdateRect@12 -NtUserGetUpdateRgn@12 -NtUserGetWindowDC@4 -NtUserGetWindowPlacement@8 -NtUserGetWOWClass@8 -NtUserHardErrorControl@12 -NtUserHideCaret@4 -NtUserHiliteMenuItem@16 -NtUserImpersonateDdeClientWindow@8 -NtUserInitialize@12 -NtUserInitializeClientPfnArrays@16 -NtUserInitTask@48 -NtUserInternalGetWindowText@12 -NtUserInvalidateRect@12 -NtUserInvalidateRgn@12 -NtUserIsClipboardFormatAvailable@4 -NtUserKillTimer@8 -NtUserLoadKeyboardLayoutEx@28 -NtUserLockWindowStation@4 -NtUserLockWindowUpdate@4 -NtUserLockWorkStation@0 -NtUserMapVirtualKeyEx@16 -NtUserMenuItemFromPoint@16 -NtUserMessageCall@28 -NtUserMinMaximize@12 -NtUserMNDragLeave@0 -NtUserMNDragOver@8 -NtUserModifyUserStartupInfoFlags@8 -NtUserMoveWindow@24 -NtUserNotifyIMEStatus@12 -NtUserNotifyProcessCreate@16 -NtUserNotifyWinEvent@16 -NtUserOpenClipboard@8 -NtUserOpenDesktop@12 -NtUserOpenInputDesktop@12 -NtUserOpenWindowStation@8 -NtUserPaintDesktop@4 -NtUserPeekMessage@20 -NtUserPostMessage@16 -NtUserPostThreadMessage@16 -NtUserPrintWindow@12 -NtUserProcessConnect@12 -NtUserQueryInformationThread@16 -NtUserQueryInputContext@8 -NtUserQuerySendMessage@4 -NtUserQueryWindow@8 -NtUserRealChildWindowFromPoint@12 -NtUserRealInternalGetMessage@24 -NtUserRealWaitMessageEx@8 -NtUserRedrawWindow@16 -NtUserRegisterClassExWOW@28 -NtUserRegisterUserApiHook@16 -NtUserRegisterHotKey@16 -NtUserRegisterRawInputDevices@12 -NtUserRegisterTasklist@4 -NtUserRegisterWindowMessage@4 -NtUserRemoveMenu@12 -NtUserRemoveProp@8 -NtUserResolveDesktop@16 -NtUserResolveDesktopForWOW@4 -NtUserSBGetParms@16 -NtUserScrollDC@28 -NtUserScrollWindowEx@32 -NtUserSelectPalette@12 -NtUserSendInput@12 -NtUserSetActiveWindow@4 -NtUserSetAppImeLevel@8 -NtUserSetCapture@4 -NtUserSetClassLong@16 -NtUserSetClassWord@12 -NtUserSetClipboardData@12 -NtUserSetClipboardViewer@4 -NtUserSetConsoleReserveKeys@8 -NtUserSetCursor@4 -NtUserSetCursorContents@8 -NtUserSetCursorIconData@16 -NtUserSetFocus@4 -NtUserSetImeHotKey@20 -NtUserSetImeInfoEx@4 -NtUserSetImeOwnerWindow@8 -NtUserSetInformationProcess@16 -NtUserSetInformationThread@16 -NtUserSetInternalWindowPos@16 -NtUserSetKeyboardState@4 -NtUserSetLogonNotifyWindow@4 -NtUserSetMenu@12 -NtUserSetMenuContextHelpId@8 -NtUserSetMenuDefaultItem@12 -NtUserSetMenuFlagRtoL@4 -NtUserSetObjectInformation@16 -NtUserSetParent@8 -NtUserSetProcessWindowStation@4 -NtUserSetProp@12 -NtUserSetScrollInfo@16 -NtUserSetShellWindowEx@8 -NtUserSetSysColors@16 -NtUserSetSystemCursor@8 -NtUserSetSystemMenu@8 -NtUserSetSystemTimer@16 -NtUserSetThreadDesktop@4 -NtUserSetThreadLayoutHandles@8 -NtUserSetThreadState@8 -NtUserSetTimer@16 -NtUserSetWindowFNID@8 -NtUserSetWindowLong@16 -NtUserSetWindowPlacement@8 -NtUserSetWindowPos@28 -NtUserSetWindowRgn@12 -NtUserSetWindowsHookAW@12 -NtUserSetWindowsHookEx@24 -NtUserSetWindowStationUser@16 -NtUserSetWindowWord@12 -NtUserSetWinEventHook@32 -NtUserShowCaret@4 -NtUserShowScrollBar@12 -NtUserShowWindow@8 -NtUserShowWindowAsync@8 -NtUserSoundSentry@0 -NtUserSwitchDesktop@4 -NtUserSystemParametersInfo@16 -NtUserTestForInteractiveUser@4 -NtUserThunkedMenuInfo@8 -NtUserThunkedMenuItemInfo@24 -NtUserToUnicodeEx@28 -NtUserTrackMouseEvent@4 -NtUserTrackPopupMenuEx@24 -NtUserCalcMenuBar@20 -NtUserPaintMenuBar@24 -NtUserTranslateAccelerator@12 -NtUserTranslateMessage@8 -NtUserUnhookWindowsHookEx@4 -NtUserUnhookWinEvent@4 -NtUserUnloadKeyboardLayout@4 -NtUserUnlockWindowStation@4 -NtUserUnregisterClass@12 -NtUserUnregisterUserApiHook@0 -NtUserUnregisterHotKey@8 -NtUserUpdateInputContext@12 -NtUserUpdateInstance@12 -NtUserUpdateLayeredWindow@40 -NtUserGetLayeredWindowAttributes@16 -NtUserSetLayeredWindowAttributes@16 -NtUserUpdatePerUserSystemParameters@8 -NtUserUserHandleGrantAccess@12 -NtUserValidateHandleSecure@4 -NtUserValidateRect@8 -NtUserValidateTimerCallback@4 -NtUserVkKeyScanEx@12 -NtUserWaitForInputIdle@12 -NtUserWaitForMsgAndEvent@4 -NtUserWaitMessage@0 -NtUserWin32PoolAllocationStats@24 -NtUserWindowFromPoint@8 -NtUserYieldTask@0 -NtUserRemoteConnect@12 -NtUserRemoteRedrawRectangle@16 -NtUserRemoteRedrawScreen@0 -NtUserRemoteStopScreenUpdates@0 -NtUserCtxDisplayIOCtl@12 -NtGdiEngAssociateSurface@12 -NtGdiEngCreateBitmap@24 -NtGdiEngCreateDeviceSurface@16 -NtGdiEngCreateDeviceBitmap@16 -NtGdiEngCreatePalette@24 -NtGdiEngComputeGlyphSet@12 -NtGdiEngCopyBits@24 -NtGdiEngDeletePalette@4 -NtGdiEngDeleteSurface@4 -NtGdiEngEraseSurface@12 -NtGdiEngUnlockSurface@4 -NtGdiEngLockSurface@4 -NtGdiEngBitBlt@44 -NtGdiEngStretchBlt@44 -NtGdiEngPlgBlt@44 -NtGdiEngMarkBandingSurface@4 -NtGdiEngStrokePath@32 -NtGdiEngFillPath@28 -NtGdiEngStrokeAndFillPath@40 -NtGdiEngPaint@20 -NtGdiEngLineTo@36 -NtGdiEngAlphaBlend@28 -NtGdiEngGradientFill@40 -NtGdiEngTransparentBlt@32 -NtGdiEngTextOut@40 -NtGdiEngStretchBltROP@52 -NtGdiXLATEOBJ_cGetPalette@16 -NtGdiXLATEOBJ_iXlate@8 -NtGdiXLATEOBJ_hGetColorTransform@4 -NtGdiCLIPOBJ_bEnum@12 -NtGdiCLIPOBJ_cEnumStart@20 -NtGdiCLIPOBJ_ppoGetPath@4 -NtGdiEngDeletePath@4 -NtGdiEngCreateClip@0 -NtGdiEngDeleteClip@4 -NtGdiBRUSHOBJ_ulGetBrushColor@4 -NtGdiBRUSHOBJ_pvAllocRbrush@8 -NtGdiBRUSHOBJ_pvGetRbrush@4 -NtGdiBRUSHOBJ_hGetColorTransform@4 -NtGdiXFORMOBJ_bApplyXform@20 -NtGdiXFORMOBJ_iGetXform@8 -NtGdiFONTOBJ_vGetInfo@12 -NtGdiFONTOBJ_pxoGetXform@4 -NtGdiFONTOBJ_cGetGlyphs@20 -NtGdiFONTOBJ_pifi@4 -NtGdiFONTOBJ_pfdg@4 -NtGdiFONTOBJ_pQueryGlyphAttrs@8 -NtGdiFONTOBJ_pvTrueTypeFontFile@8 -NtGdiFONTOBJ_cGetAllGlyphHandles@8 -NtGdiSTROBJ_bEnum@12 -NtGdiSTROBJ_bEnumPositionsOnly@12 -NtGdiSTROBJ_bGetAdvanceWidths@16 -NtGdiSTROBJ_vEnumStart@4 -NtGdiSTROBJ_dwGetCodePage@4 -NtGdiPATHOBJ_vGetBounds@8 -NtGdiPATHOBJ_bEnum@8 -NtGdiPATHOBJ_vEnumStart@4 -NtGdiPATHOBJ_vEnumStartClipLines@16 -NtGdiPATHOBJ_bEnumClipLines@12 -NtGdiGetDhpdev@4 -NtGdiEngCheckAbort@4 -NtGdiHT_Get8BPPFormatPalette@16 -NtGdiHT_Get8BPPMaskPalette@24 -NtGdiUpdateTransform@4 -NtGdiSetPUMPDOBJ@16 -NtGdiBRUSHOBJ_DeleteRbrush@8 -NtGdiUMPDEngFreeUserMem@4 -NtGdiDrawStream@12 -NtGdiMakeObjectXferable@8 -NtGdiMakeObjectUnXferable@4 diff --git a/rostests/apitests/w32kdll/w32kdll_ros/w32kdll_ros.def b/rostests/apitests/w32kdll/w32kdll_ros/w32kdll_ros.def deleted file mode 100644 index c506d71ea98..00000000000 --- a/rostests/apitests/w32kdll/w32kdll_ros/w32kdll_ros.def +++ /dev/null @@ -1,678 +0,0 @@ -; -; ReactOS Operating System -; -; This file contains all win32k native api functions from win xp -; unsupported functions are commented out. -; -LIBRARY w32kdll.dll - -EXPORTS -NtGdiAbortDoc@4 -NtGdiAbortPath@4 -NtGdiAddFontResourceW@24 -NtGdiAddRemoteFontToDC@16 -NtGdiAddFontMemResourceEx@20 -NtGdiRemoveMergeFont@8 -NtGdiAddRemoteMMInstanceToDC@12 -NtGdiAlphaBlend@48 -NtGdiAngleArc@24 -NtGdiAnyLinkedFonts@0 -NtGdiFontIsLinked@4 -NtGdiArcInternal@40 -NtGdiBeginPath@4 -NtGdiBitBlt@44 -NtGdiCancelDC@4 -NtGdiCheckBitmapBits@32 -NtGdiCloseFigure@4 -NtGdiClearBitmapAttributes@8 -NtGdiClearBrushAttributes@8 -NtGdiColorCorrectPalette@24 -NtGdiCombineRgn@16 -NtGdiCombineTransform@12 -NtGdiComputeXformCoefficients@4 -NtGdiConsoleTextOut@16 -NtGdiConvertMetafileRect@8 -NtGdiCreateBitmap@20 -NtGdiCreateClientObj@4 -NtGdiCreateColorSpace@4 -NtGdiCreateColorTransform@32 -NtGdiCreateCompatibleBitmap@12 -NtGdiCreateCompatibleDC@4 -NtGdiCreateDIBBrush@24 -NtGdiCreateDIBitmapInternal@44 -NtGdiCreateDIBSection@36 -NtGdiCreateEllipticRgn@16 -NtGdiCreateHalftonePalette@4 -NtGdiCreateHatchBrushInternal@12 -NtGdiCreateMetafileDC@4 -NtGdiCreatePaletteInternal@8 -NtGdiCreatePatternBrushInternal@12 -NtGdiCreatePen@16 -NtGdiCreateRectRgn@16 -NtGdiCreateRoundRectRgn@24 -NtGdiCreateServerMetaFile@24 -NtGdiCreateSolidBrush@8 -NtGdiD3dContextCreate@16 -NtGdiD3dContextDestroy@4 -NtGdiD3dContextDestroyAll@4 -NtGdiD3dValidateTextureStageState@4 -NtGdiD3dDrawPrimitives2@28 -NtGdiDdGetDriverState@4 -NtGdiDdAddAttachedSurface@12 -NtGdiDdAlphaBlt@12 -NtGdiDdAttachSurface@8 -NtGdiDdBeginMoCompFrame@8 -NtGdiDdBlt@12 -NtGdiDdCanCreateSurface@8 -NtGdiDdCanCreateD3DBuffer@8 -NtGdiDdColorControl@8 -NtGdiDdCreateDirectDrawObject@4 -NtGdiDdCreateSurface@32 -NtGdiDdCreateD3DBuffer@32 -NtGdiDdCreateMoComp@8 -NtGdiDdCreateSurfaceObject@24 -NtGdiDdDeleteDirectDrawObject@4 -NtGdiDdDeleteSurfaceObject@4 -NtGdiDdDestroyMoComp@8 -NtGdiDdDestroySurface@8 -NtGdiDdDestroyD3DBuffer@4 -NtGdiDdEndMoCompFrame@8 -NtGdiDdFlip@20 -NtGdiDdFlipToGDISurface@8 -NtGdiDdGetAvailDriverMemory@8 -NtGdiDdGetBltStatus@8 -NtGdiDdGetDC@8 -NtGdiDdGetDriverInfo@8 -NtGdiDdGetDxHandle@12 -NtGdiDdGetFlipStatus@8 -NtGdiDdGetInternalMoCompInfo@8 -NtGdiDdGetMoCompBuffInfo@8 -NtGdiDdGetMoCompGuids@8 -NtGdiDdGetMoCompFormats@8 -NtGdiDdGetScanLine@8 -NtGdiDdLock@12 -NtGdiDdLockD3D@8 -NtGdiDdQueryDirectDrawObject@44 -NtGdiDdQueryMoCompStatus@8 -NtGdiDdReenableDirectDrawObject@8 -NtGdiDdReleaseDC@4 -NtGdiDdRenderMoComp@8 -NtGdiDdResetVisrgn@8 -NtGdiDdSetColorKey@8 -NtGdiDdSetExclusiveMode@8 -NtGdiDdSetGammaRamp@12 -NtGdiDdCreateSurfaceEx@12 -NtGdiDdSetOverlayPosition@12 -NtGdiDdUnattachSurface@8 -NtGdiDdUnlock@8 -NtGdiDdUnlockD3D@8 -NtGdiDdUpdateOverlay@12 -NtGdiDdWaitForVerticalBlank@8 -NtGdiDvpCanCreateVideoPort@8 -NtGdiDvpColorControl@8 -NtGdiDvpCreateVideoPort@8 -NtGdiDvpDestroyVideoPort@8 -NtGdiDvpFlipVideoPort@16 -NtGdiDvpGetVideoPortBandwidth@8 -NtGdiDvpGetVideoPortField@8 -NtGdiDvpGetVideoPortFlipStatus@8 -NtGdiDvpGetVideoPortInputFormats@8 -NtGdiDvpGetVideoPortLine@8 -NtGdiDvpGetVideoPortOutputFormats@8 -NtGdiDvpGetVideoPortConnectInfo@8 -NtGdiDvpGetVideoSignalStatus@8 -NtGdiDvpUpdateVideoPort@16 -NtGdiDvpWaitForVideoPortSync@8 -NtGdiDvpAcquireNotification@12 -NtGdiDvpReleaseNotification@8 -NtGdiDxgGenericThunk@24 -NtGdiDeleteClientObj@4 -NtGdiDeleteColorSpace@4 -NtGdiDeleteColorTransform@8 -NtGdiDeleteObjectApp@4 -NtGdiDescribePixelFormat@16 -NtGdiGetPerBandInfo@8 -NtGdiDoBanding@16 -NtGdiDoPalette@24 -NtGdiDrawEscape@16 -NtGdiEllipse@20 -NtGdiEnableEudc@4 -NtGdiEndDoc@4 -NtGdiEndPage@4 -NtGdiEndPath@4 -NtGdiEnumFontChunk@20 -NtGdiEnumFontClose@4 -NtGdiEnumFontOpen@28 -NtGdiEnumObjects@16 -NtGdiEqualRgn@8 -NtGdiEudcLoadUnloadLink@28 -NtGdiExcludeClipRect@20 -NtGdiExtCreatePen@44 -NtGdiExtCreateRegion@12 -NtGdiExtEscape@32 -NtGdiExtFloodFill@20 -NtGdiExtGetObjectW@12 -NtGdiExtSelectClipRgn@12 -NtGdiExtTextOutW@36 -NtGdiFillPath@4 -NtGdiFillRgn@12 -NtGdiFlattenPath@4 -NtGdiFlushUserBatch@0 -NtGdiFlush@0 -NtGdiForceUFIMapping@8 -NtGdiFrameRgn@20 -NtGdiFullscreenControl@20 -NtGdiGetAndSetDCDword@16 -NtGdiGetAppClipBox@8 -NtGdiGetBitmapBits@12 -NtGdiGetBitmapDimension@8 -NtGdiGetBoundsRect@12 -NtGdiGetCharABCWidthsW@24 -NtGdiGetCharacterPlacementW@24 -NtGdiGetCharSet@4 -NtGdiGetCharWidthW@24 -NtGdiGetCharWidthInfo@8 -NtGdiGetColorAdjustment@8 -NtGdiGetColorSpaceforBitmap@4 -NtGdiGetDCDword@12 -NtGdiGetDCforBitmap@4 -NtGdiGetDCObject@8 -NtGdiGetDCPoint@12 -NtGdiGetDeviceCaps@8 -NtGdiGetDeviceGammaRamp@8 -NtGdiGetDeviceCapsAll@8 -NtGdiGetDIBitsInternal@36 -NtGdiGetETM@8 -NtGdiGetEudcTimeStampEx@12 -NtGdiGetFontData@20 -NtGdiGetFontResourceInfoInternalW@28 -NtGdiGetGlyphIndicesW@20 -NtGdiGetGlyphIndicesWInternal@24 -NtGdiGetGlyphOutline@32 -NtGdiGetKerningPairs@12 -NtGdiGetLinkedUFIs@12 -NtGdiGetMiterLimit@8 -NtGdiGetMonitorID@12 -NtGdiGetNearestColor@8 -NtGdiGetNearestPaletteIndex@8 -NtGdiGetObjectBitmapHandle@8 -NtGdiGetOutlineTextMetricsInternalW@16 -NtGdiGetPath@16 -NtGdiGetPixel@12 -NtGdiGetRandomRgn@12 -NtGdiGetRasterizerCaps@8 -NtGdiGetRealizationInfo@12 -NtGdiGetRegionData@12 -NtGdiGetRgnBox@8 -NtGdiGetServerMetaFileBits@28 -NtGdiGetSpoolMessage@16 -NtGdiGetStats@20 -NtGdiGetStockObject@4 -NtGdiGetStringBitmapW@20 -NtGdiGetSystemPaletteUse@4 -NtGdiGetTextCharsetInfo@12 -NtGdiGetTextExtent@20 -NtGdiGetTextExtentExW@32 -NtGdiGetTextFaceW@16 -NtGdiGetTextMetricsW@12 -NtGdiGetTransform@12 -NtGdiGetUFI@24 -NtGdiGetEmbUFI@28 -NtGdiGetUFIPathname@40 -NtGdiGetEmbedFonts@0 -NtGdiChangeGhostFont@8 -NtGdiAddEmbFontToDC@8 -NtGdiGetFontUnicodeRanges@8 -NtGdiGetWidthTable@28 -NtGdiGradientFill@24 -NtGdiHfontCreate@20 -NtGdiIcmBrushInfo@32 -NtGdiInit@0 -NtGdiInitSpool@0 -NtGdiIntersectClipRect@20 -NtGdiInvertRgn@8 -NtGdiLineTo@12 -NtGdiMakeFontDir@20 -NtGdiMakeInfoDC@8 -NtGdiMaskBlt@52 -NtGdiModifyWorldTransform@12 -NtGdiMonoBitmap@4 -NtGdiMoveTo@16 -NtGdiOffsetClipRgn@12 -NtGdiOffsetRgn@12 -NtGdiOpenDCW@32 -NtGdiPatBlt@24 -NtGdiPolyPatBlt@20 -NtGdiPathToRegion@4 -NtGdiPlgBlt@44 -NtGdiPolyDraw@16 -NtGdiPolyPolyDraw@20 -NtGdiPolyTextOutW@16 -NtGdiPtInRegion@12 -NtGdiPtVisible@12 -NtGdiQueryFonts@12 -NtGdiQueryFontAssocInfo@4 -NtGdiRectangle@20 -NtGdiRectInRegion@8 -NtGdiRectVisible@8 -NtGdiRemoveFontResourceW@24 -NtGdiRemoveFontMemResourceEx@4 -NtGdiResetDC@20 -NtGdiResizePalette@8 -NtGdiRestoreDC@8 -NtGdiRoundRect@28 -NtGdiSaveDC@4 -NtGdiScaleViewportExtEx@24 -NtGdiScaleWindowExtEx@24 -NtGdiSelectBitmap@8 -NtGdiSelectBrush@8 -NtGdiSelectClipPath@8 -NtGdiSelectFont@8 -NtGdiSelectPen@8 -NtGdiSetBitmapAttributes@8 -NtGdiSetBitmapBits@12 -NtGdiSetBitmapDimension@16 -NtGdiSetBoundsRect@12 -NtGdiSetBrushAttributes@8 -NtGdiSetBrushOrg@16 -NtGdiSetColorAdjustment@8 -NtGdiSetColorSpace@8 -NtGdiSetDeviceGammaRamp@8 -NtGdiSetDIBitsToDeviceInternal@64 -NtGdiSetFontEnumeration@4 -NtGdiSetFontXform@12 -NtGdiSetIcmMode@12 -NtGdiSetLinkedUFIs@12 -NtGdiSetMagicColors@12 -NtGdiSetMetaRgn@4 -NtGdiSetMiterLimit@12 -NtGdiGetDeviceWidth@4 -NtGdiMirrorWindowOrg@4 -NtGdiSetLayout@12 -NtGdiSetPixel@16 -NtGdiSetPixelFormat@8 -NtGdiSetRectRgn@20 -NtGdiSetSystemPaletteUse@8 -NtGdiSetTextJustification@12 -NtGdiSetupPublicCFONT@12 -NtGdiSetVirtualResolution@20 -NtGdiSetSizeDevice@12 -NtGdiStartDoc@16 -NtGdiStartPage@4 -NtGdiStretchBlt@48 -NtGdiStretchDIBitsInternal@64 -NtGdiStrokeAndFillPath@4 -NtGdiStrokePath@4 -NtGdiSwapBuffers@4 -NtGdiTransformPoints@20 -NtGdiTransparentBlt@44 -NtGdiUnloadPrinterDriver@8 -NtGdiUnmapMemFont@4 -NtGdiUnrealizeObject@4 -NtGdiUpdateColors@4 -NtGdiWidenPath@4 -NtUserActivateKeyboardLayout@8 -NtUserAlterWindowStyle@12 -NtUserAssociateInputContext@12 -NtUserAttachThreadInput@12 -NtUserBeginPaint@8 -NtUserBitBltSysBmp@32 -NtUserBlockInput@4 -NtUserBuildHimcList@16 -NtUserBuildHwndList@28 -NtUserBuildNameList@16 -NtUserBuildPropList@16 -NtUserCallHwnd@8 -NtUserCallHwndLock@8 -NtUserCallHwndOpt@8 -NtUserCallHwndParam@12 -NtUserCallHwndParamLock@12 -NtUserCallMsgFilter@8 -NtUserCallNextHookEx@16 -NtUserCallNoParam@4 -NtUserCallOneParam@8 -NtUserCallTwoParam@12 -NtUserChangeClipboardChain@8 -NtUserChangeDisplaySettings@20 -NtUserCheckImeHotKey@8 -NtUserCheckMenuItem@12 -NtUserChildWindowFromPointEx@16 -NtUserClipCursor@4 -NtUserCloseClipboard@0 -NtUserCloseDesktop@4 -NtUserCloseWindowStation@4 -NtUserConsoleControl@12 -NtUserConvertMemHandle@8 -NtUserCopyAcceleratorTable@12 -NtUserCountClipboardFormats@0 -NtUserCreateAcceleratorTable@8 -NtUserCreateCaret@16 -NtUserCreateDesktop@20 -NtUserCreateInputContext@4 -NtUserCreateLocalMemHandle@16 -NtUserCreateWindowEx@60 -NtUserCreateWindowStation@28 -NtUserDdeGetQualityOfService@12 -NtUserDdeInitialize@20 -NtUserDdeSetQualityOfService@12 -NtUserDeferWindowPos@32 -NtUserDefSetText@8 -NtUserDeleteMenu@12 -NtUserDestroyAcceleratorTable@4 -NtUserDestroyCursor@8 -NtUserDestroyInputContext@4 -NtUserDestroyMenu@4 -NtUserDestroyWindow@4 -NtUserDisableThreadIme@4 -NtUserDispatchMessage@4 -NtUserDragDetect@12 -NtUserDragObject@20 -NtUserDrawAnimatedRects@16 -NtUserDrawCaption@16 -NtUserDrawCaptionTemp@28 -NtUserDrawIconEx@44 -NtUserDrawMenuBarTemp@20 -NtUserEmptyClipboard@0 -NtUserEnableMenuItem@12 -NtUserEnableScrollBar@12 -NtUserEndDeferWindowPosEx@8 -NtUserEndMenu@0 -NtUserEndPaint@8 -NtUserEnumDisplayDevices@16 -;NtUserEnumDisplayMonitors@16 -NtUserEnumDisplaySettings@16 -NtUserEvent@4 -NtUserExcludeUpdateRgn@8 -NtUserFillWindow@16 -;NtUserFindExistingCursorIcon@12 -NtUserFindWindowEx@20 -NtUserFlashWindowEx@4 -NtUserGetAltTabInfo@24 -NtUserGetAncestor@8 -;NtUserGetAppImeLevel@4 -NtUserGetAsyncKeyState@4 -NtUserGetAtomName@8 -NtUserGetCaretBlinkTime@0 -NtUserGetCaretPos@4 -;NtUserGetClassInfo@20 -NtUserGetClassName@12 -NtUserGetClipboardData@8 -NtUserGetClipboardFormatName@12 -NtUserGetClipboardOwner@0 -NtUserGetClipboardSequenceNumber@0 -NtUserGetClipboardViewer@0 -NtUserGetClipCursor@4 -NtUserGetComboBoxInfo@8 -NtUserGetControlBrush@12 -NtUserGetControlColor@16 -NtUserGetCPD@12 -NtUserGetCursorFrameInfo@16 -NtUserGetCursorInfo@4 -NtUserGetDC@4 -NtUserGetDCEx@12 -NtUserGetDoubleClickTime@0 -NtUserGetForegroundWindow@0 -NtUserGetGuiResources@8 -NtUserGetGUIThreadInfo@8 -NtUserGetIconInfo@24 -NtUserGetIconSize@16 -NtUserGetImeHotKey@16 -NtUserGetImeInfoEx@8 -NtUserGetInternalWindowPos@12 -NtUserGetKeyboardLayoutList@8 -NtUserGetKeyboardLayoutName@4 -NtUserGetKeyboardState@4 -NtUserGetKeyNameText@12 -NtUserGetKeyState@4 -NtUserGetListBoxInfo@4 -NtUserGetMenuBarInfo@16 -NtUserGetMenuIndex@8 -NtUserGetMenuItemRect@16 -NtUserGetMessage@16 -NtUserGetMouseMovePointsEx@20 -NtUserGetObjectInformation@20 -NtUserGetOpenClipboardWindow@0 -NtUserGetPriorityClipboardFormat@8 -NtUserGetProcessWindowStation@0 -NtUserGetRawInputBuffer@12 -NtUserGetRawInputData@20 -NtUserGetRawInputDeviceInfo@16 -NtUserGetRawInputDeviceList@12 -NtUserGetRegisteredRawInputDevices@12 -NtUserGetScrollBarInfo@12 -NtUserGetSystemMenu@8 -NtUserGetThreadDesktop@8 -NtUserGetThreadState@4 -NtUserGetTitleBarInfo@8 -NtUserGetUpdateRect@12 -NtUserGetUpdateRgn@12 -NtUserGetWindowDC@4 -NtUserGetWindowPlacement@8 -NtUserGetWOWClass@8 -NtUserHardErrorControl@12 -NtUserHideCaret@4 -NtUserHiliteMenuItem@16 -NtUserImpersonateDdeClientWindow@8 -NtUserInitialize@12 -NtUserInitializeClientPfnArrays@16 -;NtUserInitTask@48 -NtUserInternalGetWindowText@12 -NtUserInvalidateRect@12 -NtUserInvalidateRgn@12 -NtUserIsClipboardFormatAvailable@4 -NtUserKillTimer@8 -NtUserLoadKeyboardLayoutEx@28 -NtUserLockWindowStation@4 -NtUserLockWindowUpdate@4 -NtUserLockWorkStation@0 -NtUserMapVirtualKeyEx@16 -NtUserMenuItemFromPoint@16 -NtUserMessageCall@28 -NtUserMinMaximize@12 -NtUserMNDragLeave@0 -NtUserMNDragOver@8 -NtUserModifyUserStartupInfoFlags@8 -NtUserMoveWindow@24 -NtUserNotifyIMEStatus@12 -NtUserNotifyProcessCreate@16 -NtUserNotifyWinEvent@16 -NtUserOpenClipboard@8 -NtUserOpenDesktop@12 -NtUserOpenInputDesktop@12 -NtUserOpenWindowStation@8 -NtUserPaintDesktop@4 -NtUserPeekMessage@20 -NtUserPostMessage@16 -NtUserPostThreadMessage@16 -NtUserPrintWindow@12 -NtUserProcessConnect@12 -NtUserQueryInformationThread@20 -NtUserQueryInputContext@8 -NtUserQuerySendMessage@4 -NtUserQueryUserCounters@20 -NtUserQueryWindow@8 -NtUserRealChildWindowFromPoint@12 -NtUserRealInternalGetMessage@24 -NtUserRealWaitMessageEx@8 -NtUserRedrawWindow@16 -NtUserRegisterClassExWOW@28 -NtUserRegisterUserApiHook@16 -NtUserRegisterHotKey@16 -NtUserRegisterRawInputDevices@12 -NtUserRegisterTasklist@4 -NtUserRegisterWindowMessage@4 -NtUserRemoveMenu@12 -NtUserRemoveProp@8 -NtUserResolveDesktop@16 -NtUserResolveDesktopForWOW@4 -NtUserSBGetParms@16 -NtUserScrollDC@28 -NtUserScrollWindowEx@32 -NtUserSelectPalette@12 -NtUserSendInput@12 -NtUserSetActiveWindow@4 -NtUserSetAppImeLevel@8 -NtUserSetCapture@4 -NtUserSetClassLong@16 -NtUserSetClassWord@12 -NtUserSetClipboardData@12 -NtUserSetClipboardViewer@4 -NtUserSetConsoleReserveKeys@8 -NtUserSetCursor@4 -NtUserSetCursorContents@8 -;NtUserSetCursorIconData@16 -NtUserSetDbgTag@8 -NtUserSetFocus@4 -NtUserSetImeHotKey@20 -NtUserSetImeInfoEx@4 -NtUserSetImeOwnerWindow@8 -NtUserSetInformationProcess@16 -NtUserSetInformationThread@16 -NtUserSetInternalWindowPos@16 -NtUserSetKeyboardState@4 -NtUserSetLogonNotifyWindow@4 -NtUserSetMenu@12 -NtUserSetMenuContextHelpId@8 -NtUserSetMenuDefaultItem@12 -NtUserSetMenuFlagRtoL@4 -NtUserSetObjectInformation@16 -NtUserSetParent@8 -NtUserSetProcessWindowStation@4 -NtUserSetProp@12 -NtUserSetRipFlags@8 -NtUserSetScrollInfo@16 -NtUserSetShellWindowEx@8 -NtUserSetSysColors@16 -NtUserSetSystemCursor@8 -NtUserSetSystemMenu@8 -NtUserSetSystemTimer@16 -NtUserSetThreadDesktop@4 -NtUserSetThreadLayoutHandles@8 -NtUserSetThreadState@8 -NtUserSetTimer@16 -NtUserSetWindowFNID@8 -NtUserSetWindowLong@16 -NtUserSetWindowPlacement@8 -NtUserSetWindowPos@28 -NtUserSetWindowRgn@12 -NtUserSetWindowsHookAW@12 -NtUserSetWindowsHookEx@24 -NtUserSetWindowStationUser@16 -NtUserSetWindowWord@12 -NtUserSetWinEventHook@32 -NtUserShowCaret@4 -NtUserShowScrollBar@12 -NtUserShowWindow@8 -NtUserShowWindowAsync@8 -NtUserSoundSentry@0 -NtUserSwitchDesktop@4 -NtUserSystemParametersInfo@16 -NtUserTestForInteractiveUser@4 -NtUserThunkedMenuInfo@8 -NtUserThunkedMenuItemInfo@24 -NtUserToUnicodeEx@28 -NtUserTrackMouseEvent@4 -NtUserTrackPopupMenuEx@24 -NtUserCalcMenuBar@20 -NtUserPaintMenuBar@24 -NtUserTranslateAccelerator@12 -NtUserTranslateMessage@8 -NtUserUnhookWindowsHookEx@4 -NtUserUnhookWinEvent@4 -NtUserUnloadKeyboardLayout@4 -NtUserUnlockWindowStation@4 -;NtUserUnregisterClass@12 -NtUserUnregisterUserApiHook@0 -NtUserUnregisterHotKey@8 -NtUserUpdateInputContext@12 -NtUserUpdateInstance@12 -NtUserUpdateLayeredWindow@40 -NtUserGetLayeredWindowAttributes@16 -NtUserSetLayeredWindowAttributes@16 -NtUserUpdatePerUserSystemParameters@8 -NtUserUserHandleGrantAccess@12 -NtUserValidateHandleSecure@8 -NtUserValidateRect@8 -NtUserValidateTimerCallback@12 -NtUserVkKeyScanEx@12 -NtUserWaitForInputIdle@12 -NtUserWaitForMsgAndEvent@4 -NtUserWaitMessage@0 -NtUserWin32PoolAllocationStats@24 -NtUserWindowFromPoint@8 -NtUserYieldTask@0 -NtUserRemoteConnect@12 -NtUserRemoteRedrawRectangle@16 -NtUserRemoteRedrawScreen@0 -NtUserRemoteStopScreenUpdates@0 -NtUserCtxDisplayIOCtl@12 -NtGdiEngAssociateSurface@12 -NtGdiEngCreateBitmap@24 -NtGdiEngCreateDeviceSurface@16 -NtGdiEngCreateDeviceBitmap@16 -NtGdiEngCreatePalette@24 -NtGdiEngComputeGlyphSet@12 -NtGdiEngCopyBits@24 -NtGdiEngDeletePalette@4 -NtGdiEngDeleteSurface@4 -NtGdiEngEraseSurface@12 -NtGdiEngUnlockSurface@4 -NtGdiEngLockSurface@4 -NtGdiEngBitBlt@44 -NtGdiEngStretchBlt@44 -NtGdiEngPlgBlt@44 -NtGdiEngMarkBandingSurface@4 -NtGdiEngStrokePath@32 -NtGdiEngFillPath@28 -NtGdiEngStrokeAndFillPath@40 -NtGdiEngPaint@20 -NtGdiEngLineTo@36 -NtGdiEngAlphaBlend@28 -NtGdiEngGradientFill@40 -NtGdiEngTransparentBlt@32 -NtGdiEngTextOut@40 -NtGdiEngStretchBltROP@52 -NtGdiXLATEOBJ_cGetPalette@16 -NtGdiXLATEOBJ_iXlate@8 -NtGdiXLATEOBJ_hGetColorTransform@4 -NtGdiCLIPOBJ_bEnum@12 -NtGdiCLIPOBJ_cEnumStart@20 -NtGdiCLIPOBJ_ppoGetPath@4 -NtGdiEngDeletePath@4 -NtGdiEngCreateClip@0 -NtGdiEngDeleteClip@4 -NtGdiBRUSHOBJ_ulGetBrushColor@4 -NtGdiBRUSHOBJ_pvAllocRbrush@8 -NtGdiBRUSHOBJ_pvGetRbrush@4 -NtGdiBRUSHOBJ_hGetColorTransform@4 -NtGdiXFORMOBJ_bApplyXform@20 -NtGdiXFORMOBJ_iGetXform@8 -NtGdiFONTOBJ_vGetInfo@12 -NtGdiFONTOBJ_pxoGetXform@4 -NtGdiFONTOBJ_cGetGlyphs@20 -NtGdiFONTOBJ_pifi@4 -NtGdiFONTOBJ_pfdg@4 -NtGdiFONTOBJ_pQueryGlyphAttrs@8 -NtGdiFONTOBJ_pvTrueTypeFontFile@8 -NtGdiFONTOBJ_cGetAllGlyphHandles@8 -NtGdiSTROBJ_bEnum@12 -NtGdiSTROBJ_bEnumPositionsOnly@12 -NtGdiSTROBJ_bGetAdvanceWidths@16 -NtGdiSTROBJ_vEnumStart@4 -NtGdiSTROBJ_dwGetCodePage@4 -NtGdiPATHOBJ_vGetBounds@8 -NtGdiPATHOBJ_bEnum@8 -NtGdiPATHOBJ_vEnumStart@4 -NtGdiPATHOBJ_vEnumStartClipLines@16 -NtGdiPATHOBJ_bEnumClipLines@12 -NtGdiGetDhpdev@4 -NtGdiEngCheckAbort@4 -NtGdiHT_Get8BPPFormatPalette@16 -NtGdiHT_Get8BPPMaskPalette@24 -NtGdiUpdateTransform@4 -NtGdiSetPUMPDOBJ@16 -NtGdiBRUSHOBJ_DeleteRbrush@8 -NtGdiUMPDEngFreeUserMem@4 -NtGdiUnmapMemFont@4 -NtGdiDrawStream@12 - diff --git a/rostests/apitests/w32kdll/w32kdll_ros/w32kdll_ros.spec b/rostests/apitests/w32kdll/w32kdll_ros/w32kdll_ros.spec index 20f67f548f2..c75d365322e 100644 --- a/rostests/apitests/w32kdll/w32kdll_ros/w32kdll_ros.spec +++ b/rostests/apitests/w32kdll/w32kdll_ros/w32kdll_ros.spec @@ -1,7 +1,7 @@ ; ; ReactOS Operating System ; -; This file contains all win32k native api functions from win 2003 sp2 +; This file contains all win32k native api functions from ReactOS ; Unsupported functions are commented out ; @@ -377,7 +377,7 @@ @ stdcall NtUserEndMenu() @ stdcall NtUserEndPaint(ptr ptr) @ stdcall NtUserEnumDisplayDevices(ptr long ptr long) -@ stdcall NtUserEnumDisplayMonitors(ptr ptr ptr ptr) # FIXME: 4 on XP +; @ stdcall NtUserEnumDisplayMonitors(ptr ptr ptr ptr) # FIXME: 4 on XP @ stdcall NtUserEnumDisplaySettings(ptr long ptr long) @ stdcall NtUserEvent(long) @ stdcall NtUserExcludeUpdateRgn(ptr ptr) @@ -597,7 +597,6 @@ @ stdcall NtUserWaitForMsgAndEvent(long) @ stdcall NtUserWaitMessage() @ stdcall NtUserWin32PoolAllocationStats(long long long long long long) -@ stdcall NtUserWindowFromPhysicalPoint(ptr ptr) # Vista @ stdcall NtUserWindowFromPoint(long long) @ stdcall NtUserYieldTask() @ stdcall NtUserRemoteConnect(long long long) diff --git a/rostests/apitests/w32kdll/w32kdll_ros/win32ksvc-ros.h b/rostests/apitests/w32kdll/w32kdll_ros/win32ksvc-ros.h index 1dac35fa701..3b6db971587 100644 --- a/rostests/apitests/w32kdll/w32kdll_ros/win32ksvc-ros.h +++ b/rostests/apitests/w32kdll/w32kdll_ros/win32ksvc-ros.h @@ -1,6 +1,6 @@ // SVC_(, ) // -// Funcs order, should, match, Windows, XP, 5.1.2600, SP2) +// Funcs order should match Windows XP 5.1.2600 SP2 // SVC_(GdiAbortDoc, 1) SVC_(GdiAbortPath, 1) @@ -235,7 +235,7 @@ SVC_(GdiMonoBitmap, 1) SVC_(GdiMoveTo, 4) SVC_(GdiOffsetClipRgn, 3) SVC_(GdiOffsetRgn, 3) -SVC_(GdiOpenDCW, 8) /* FIXME: 7 params on XP */ +SVC_(GdiOpenDCW, 8) /* FIXME: 7 params on XP/2k3 */ SVC_(GdiPatBlt, 6) SVC_(GdiPolyPatBlt, 5) SVC_(GdiPathToRegion, 1) @@ -374,7 +374,7 @@ SVC_(UserEndDeferWindowPosEx, 2) SVC_(UserEndMenu, 0) SVC_(UserEndPaint, 2) SVC_(UserEnumDisplayDevices, 4) -SVC_(UserEnumDisplayMonitors, 5) /* FIXME: 4 on XP */ +SVC_(UserEnumDisplayMonitors, 5) /* FIXME: 4 on XP/2k3 */ SVC_(UserEnumDisplaySettings, 4) SVC_(UserEvent, 1) SVC_(UserExcludeUpdateRgn, 2) @@ -495,7 +495,7 @@ SVC_(UserRealInternalGetMessage, 6) SVC_(UserRealWaitMessageEx, 2) SVC_(UserRedrawWindow, 4) SVC_(UserRegisterClassExWOW, 7) -SVC_(UserRegisterUserApiHook, 4) /* FIXME: 2 params on XP */ +SVC_(UserRegisterUserApiHook, 4) /* Note: 2 params on XP, 4 on 2k3 */ SVC_(UserRegisterHotKey, 4) SVC_(UserRegisterRawInputDevices, 3) SVC_(UserRegisterTasklist, 1) @@ -589,7 +589,7 @@ SVC_(UserUnregisterUserApiHook, 0) SVC_(UserUnregisterHotKey, 2) SVC_(UserUpdateInputContext, 3) SVC_(UserUpdateInstance, 3) -SVC_(UserUpdateLayeredWindow, 10) /* FIXME: 9 params on XP */ +SVC_(UserUpdateLayeredWindow, 10) /* Note: 9 params on XP, 10 on 2k3 */ SVC_(UserGetLayeredWindowAttributes, 4) SVC_(UserSetLayeredWindowAttributes, 4) SVC_(UserUpdatePerUserSystemParameters, 2) @@ -602,7 +602,6 @@ SVC_(UserWaitForInputIdle, 3) SVC_(UserWaitForMsgAndEvent, 1) SVC_(UserWaitMessage, 0) SVC_(UserWin32PoolAllocationStats, 6) -SVC_(UserWindowFromPhysicalPoint, 2) // Vista SVC_(UserWindowFromPoint, 2) SVC_(UserYieldTask, 0) SVC_(UserRemoteConnect, 3) @@ -687,11 +686,7 @@ SVC_(GdiGetFontFamilyInfo, 4) SVC_(GdiOffsetViewportOrgEx, 4) SVC_(GdiOffsetWindowOrgEx, 4) -SVC_(UserBuildMenuItemList, 4) -SVC_(UserGetMenuDefaultItem, 3) SVC_(UserGetMonitorInfo, 2) -SVC_(UserMenuInfo, 3) -SVC_(UserMenuItemInfo, 5) SVC_(UserMonitorFromPoint, 3) SVC_(UserMonitorFromRect, 2) SVC_(UserMonitorFromWindow, 2) From a5cffd254245f82ec9aaaedb6deaa891b0305cfd Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sat, 31 May 2014 21:26:26 +0000 Subject: [PATCH 122/232] [MCISEQ] Silence a warning [CMAKE] Get rid of -Wtype-limits, it's noisy, it doesn't provide any reasonable benefit and it's almost impossible to "fix" these warnings without huge haxxory. svn path=/trunk/; revision=63520 --- reactos/cmake/gcc.cmake | 2 +- reactos/dll/win32/mciseq/CMakeLists.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/reactos/cmake/gcc.cmake b/reactos/cmake/gcc.cmake index 9b534c5a516..d3b6a062ed8 100644 --- a/reactos/cmake/gcc.cmake +++ b/reactos/cmake/gcc.cmake @@ -88,7 +88,7 @@ if(NOT CMAKE_C_COMPILER_ID STREQUAL "Clang") add_compile_flags("-Wno-error=unused-but-set-variable") endif() -add_compile_flags("-Wtype-limits -Wno-error=type-limits") +add_compile_flags("-Wno-error=type-limits") if(ARCH STREQUAL "amd64") add_compile_flags("-Wno-format") diff --git a/reactos/dll/win32/mciseq/CMakeLists.txt b/reactos/dll/win32/mciseq/CMakeLists.txt index ee5a095d385..c9cf715b6d6 100644 --- a/reactos/dll/win32/mciseq/CMakeLists.txt +++ b/reactos/dll/win32/mciseq/CMakeLists.txt @@ -15,5 +15,5 @@ add_importlibs(mciseq winmm user32 msvcrt kernel32 ntdll) add_cd_file(TARGET mciseq DESTINATION reactos/system32 FOR all) if(NOT MSVC) - add_target_compile_flags(mciseq "-Wno-error=overflow") + add_target_compile_flags(mciseq "-Wno-overflow") endif() From 629a0fd9c0db1cca07d42b5d3f873fc8cdb14379 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sat, 31 May 2014 21:39:36 +0000 Subject: [PATCH 123/232] {CRT] - Treat ARM like x64 in excpt.h - Give Clang the right __CRT_INLINE definition svn path=/trunk/; revision=63521 --- reactos/include/crt/_mingw.h | 2 +- reactos/include/crt/excpt.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/reactos/include/crt/_mingw.h b/reactos/include/crt/_mingw.h index 40b8b11ed39..4ee69fcb46b 100644 --- a/reactos/include/crt/_mingw.h +++ b/reactos/include/crt/_mingw.h @@ -56,7 +56,7 @@ #elif defined(_MSC_VER) # define __CRT_INLINE __inline #elif defined(__GNUC__) -# if ( __MINGW_GNUC_PREREQ(4, 3) && __STDC_VERSION__ >= 199901L) +# if defined(__clang__) || ( __MINGW_GNUC_PREREQ(4, 3) && __STDC_VERSION__ >= 199901L) # define __CRT_INLINE extern inline __attribute__((__always_inline__,__gnu_inline__)) # else # define __CRT_INLINE extern __inline__ __attribute__((__always_inline__)) diff --git a/reactos/include/crt/excpt.h b/reactos/include/crt/excpt.h index 355a077b738..23a4477527f 100644 --- a/reactos/include/crt/excpt.h +++ b/reactos/include/crt/excpt.h @@ -53,7 +53,7 @@ typedef enum _EXCEPTION_DISPOSITION _Inout_ struct _DISPATCHER_CONTEXT *_DispatcherContext, _In_ unsigned __int64 _GlobalPointer); -#elif defined(__x86_64) +#elif defined(__x86_64) || defined(_M_ARM) struct _EXCEPTION_RECORD; struct _CONTEXT; From b6cc5b5b5953fc0a88cc6d1943f2f67532be717c Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sat, 31 May 2014 21:52:30 +0000 Subject: [PATCH 124/232] [PSDK] Add annotation to HRESULT typedef, add a number of missing typedefs and defines, make RTL_CONSTANT_STRING and RTL_NUMBER_OF_V2 more secure by adding compiler checks for common errors, make use of intrinsics for some 64 bit shift macros. svn path=/trunk/; revision=63522 --- reactos/include/psdk/ntdef.h | 263 +++++++++++++++++++++++++++++------ 1 file changed, 217 insertions(+), 46 deletions(-) diff --git a/reactos/include/psdk/ntdef.h b/reactos/include/psdk/ntdef.h index 9cd018b6cda..3eb52df66a2 100644 --- a/reactos/include/psdk/ntdef.h +++ b/reactos/include/psdk/ntdef.h @@ -295,7 +295,7 @@ extern "C" { #endif /* DECLSPEC_NOINLINE */ #if !defined(_M_CEE_PURE) -#define NTAPI_INLINE NTAPI +#define NTAPI_INLINE NTAPI #else #define NTAPI_INLINE #endif @@ -416,52 +416,62 @@ typedef long LONG; typedef int INT; #endif #endif -typedef double DOUBLE; + +/* Avoid redefinition in windef.h */ +#define BASETYPES /* Unsigned Types */ typedef unsigned char UCHAR, *PUCHAR; typedef unsigned short USHORT, *PUSHORT; typedef unsigned long ULONG, *PULONG; + typedef CONST UCHAR *PCUCHAR; typedef CONST USHORT *PCUSHORT; typedef CONST ULONG *PCULONG; -typedef UCHAR FCHAR; -typedef USHORT FSHORT; -typedef ULONG FLONG; -typedef UCHAR BOOLEAN, *PBOOLEAN; -typedef ULONG LOGICAL; -typedef ULONG *PLOGICAL; + +typedef double DOUBLE; /* Signed Types */ typedef SHORT *PSHORT; typedef LONG *PLONG; -typedef _Return_type_success_(return >= 0) LONG NTSTATUS; -typedef NTSTATUS *PNTSTATUS; -typedef signed char SCHAR; -typedef SCHAR *PSCHAR; + +/* Flag types */ +typedef unsigned char FCHAR; +typedef unsigned short FSHORT; +typedef unsigned long FLONG; + +typedef unsigned char BOOLEAN, *PBOOLEAN; +typedef ULONG LOGICAL, *PLOGICAL; +typedef _Return_type_success_(return >= 0) LONG NTSTATUS, *PNTSTATUS;; +typedef signed char SCHAR, *PSCHAR; #ifndef _HRESULT_DEFINED #define _HRESULT_DEFINED -typedef LONG HRESULT; +typedef _Return_type_success_(return >= 0) LONG HRESULT; #endif /* 64-bit types */ +#define _ULONGLONG_ __GNU_EXTENSION typedef __int64 LONGLONG, *PLONGLONG; __GNU_EXTENSION typedef unsigned __int64 ULONGLONG, *PULONGLONG; +#define _DWORDLONG_ typedef ULONGLONG DWORDLONG, *PDWORDLONG; /* Update Sequence Number */ typedef LONGLONG USN; /* ANSI (Multi-byte Character) types */ -typedef CHAR *PCHAR, *LPCH, *PCH; -typedef CONST CHAR *LPCCH, *PCCH; +typedef CHAR *PCHAR, *LPCH, *PCH, *PNZCH; +typedef CONST CHAR *LPCCH, *PCCH, *PCNZCH; typedef _Null_terminated_ CHAR *NPSTR, *LPSTR, *PSTR; typedef _Null_terminated_ PSTR *PZPSTR; typedef _Null_terminated_ CONST PSTR *PCZPSTR; typedef _Null_terminated_ CONST CHAR *LPCSTR, *PCSTR; typedef _Null_terminated_ PCSTR *PZPCSTR; +typedef _NullNull_terminated_ CHAR *PZZSTR; +typedef _NullNull_terminated_ CONST CHAR *PCZZSTR; + /* Pointer to an Asciiz string */ typedef _Null_terminated_ CHAR *PSZ; typedef _Null_terminated_ CONST char *PCSZ; @@ -477,22 +487,93 @@ typedef _Null_terminated_ WCHAR UNALIGNED *LPUWSTR, *PUWSTR; typedef _Null_terminated_ CONST WCHAR *LPCWSTR, *PCWSTR; typedef _Null_terminated_ PCWSTR *PZPCWSTR; typedef _Null_terminated_ CONST WCHAR UNALIGNED *LPCUWSTR, *PCUWSTR; + typedef _NullNull_terminated_ WCHAR *PZZWSTR; +typedef _NullNull_terminated_ CONST WCHAR *PCZZWSTR; +typedef _NullNull_terminated_ WCHAR UNALIGNED *PUZZWSTR; +typedef _NullNull_terminated_ CONST WCHAR UNALIGNED *PCUZZWSTR; + +typedef WCHAR *PNZWCH; +typedef CONST WCHAR *PCNZWCH; +typedef WCHAR UNALIGNED *PUNZWCH; +typedef CONST WCHAR UNALIGNED *PCUNZWCH; + +#if (_WIN32_WINNT >= 0x0600) || (defined(__cplusplus) && defined(WINDOWS_ENABLE_CPLUSPLUS)) +typedef CONST WCHAR *LPCWCHAR, *PCWCHAR; +typedef CONST WCHAR UNALIGNED *LPCUWCHAR, *PCUWCHAR; +typedef unsigned long UCSCHAR, *PUCSCHAR, *PUCSSTR; +typedef const UCSCHAR *PCUCSCHAR, *PCUCSSTR; +typedef UCSCHAR UNALIGNED *PUUCSCHAR, *PUUCSSTR; +typedef const UCSCHAR UNALIGNED *PCUUCSCHAR, *PCUUCSSTR; +#define UCSCHAR_INVALID_CHARACTER (0xffffffff) +#define MIN_UCSCHAR (0) +#define MAX_UCSCHAR (0x0010FFFF) +#endif /* _WIN32_WINNT >= 0x0600 */ + +#ifdef UNICODE + +#ifndef _TCHAR_DEFINED +typedef WCHAR TCHAR, *PTCHAR; +typedef WCHAR TUCHAR, *PTUCHAR; +#define _TCHAR_DEFINED +#endif /* !_TCHAR_DEFINED */ +typedef LPWCH LPTCH, PTCH; +typedef LPCWCH LPCTCH, PCTCH; +typedef LPWSTR PTSTR, LPTSTR; +typedef LPCWSTR PCTSTR, LPCTSTR; +typedef LPUWSTR PUTSTR, LPUTSTR; +typedef LPCUWSTR PCUTSTR, LPCUTSTR; +typedef LPWSTR LP; +typedef PZZWSTR PZZTSTR; +typedef PCZZWSTR PCZZTSTR; +typedef PUZZWSTR PUZZTSTR; +typedef PCUZZWSTR PCUZZTSTR; +typedef PZPWSTR PZPTSTR; +typedef PNZWCH PNZTCH; +typedef PCNZWCH PCNZTCH; +typedef PUNZWCH PUNZTCH; +typedef PCUNZWCH PCUNZTCH; +#define __TEXT(quote) L##quote + +#else /* UNICODE */ + +#ifndef _TCHAR_DEFINED +typedef char TCHAR, *PTCHAR; +typedef unsigned char TUCHAR, *PTUCHAR; +#define _TCHAR_DEFINED +#endif /* !_TCHAR_DEFINED */ +typedef LPCH LPTCH, PTCH; +typedef LPCCH LPCTCH, PCTCH; +typedef LPSTR PTSTR, LPTSTR, PUTSTR, LPUTSTR; +typedef LPCSTR PCTSTR, LPCTSTR, PCUTSTR, LPCUTSTR; +typedef PZZSTR PZZTSTR, PUZZTSTR; +typedef PCZZSTR PCZZTSTR, PCUZZTSTR; +typedef PZPSTR PZPTSTR; +typedef PNZCH PNZTCH, PUNZTCH; +typedef PCNZCH PCNZTCH, PCUNZTCH; +#define __TEXT(quote) quote // r_winnt + +#endif /* UNICODE */ // r_winnt +#define TEXT(quote) __TEXT(quote) // r_winnt /* Cardinal Data Types */ -typedef char CCHAR, *PCCHAR; +typedef char CCHAR; +typedef CCHAR *PCCHAR; typedef short CSHORT, *PCSHORT; typedef ULONG CLONG, *PCLONG; /* NLS basics (Locale and Language Ids) */ -typedef ULONG LCID; -typedef PULONG PLCID; -typedef USHORT LANGID; +typedef unsigned long LCID, *PLCID; +typedef unsigned short LANGID; -typedef enum { - UNSPECIFIED_COMPARTMENT_ID = 0, - DEFAULT_COMPARTMENT_ID +#ifndef __COMPARTMENT_ID_DEFINED__ +#define __COMPARTMENT_ID_DEFINED__ +typedef enum +{ + UNSPECIFIED_COMPARTMENT_ID = 0, + DEFAULT_COMPARTMENT_ID } COMPARTMENT_ID, *PCOMPARTMENT_ID; +#endif /* __COMPARTMENT_ID_DEFINED__ */ #ifdef _MSC_VER #pragma warning(push) @@ -568,9 +649,14 @@ typedef struct _LUID { typedef struct _UNICODE_STRING { USHORT Length; USHORT MaximumLength; - PWSTR Buffer; +#ifdef MIDL_PASS + [size_is(MaximumLength / 2), length_is((Length) / 2)] PUSHORT Buffer; +#else + _Field_size_bytes_part_(MaximumLength, Length) PWCH Buffer; +#endif } UNICODE_STRING, *PUNICODE_STRING; typedef const UNICODE_STRING* PCUNICODE_STRING; + #define UNICODE_NULL ((WCHAR)0) #define UNICODE_STRING_MAX_BYTES ((USHORT) 65534) #define UNICODE_STRING_MAX_CHARS (32767) @@ -631,6 +717,7 @@ typedef struct _STRING64 { #define SORTIDFROMLCID(lcid) ((USHORT)((((ULONG)(lcid)) >> 16) & 0xf)) #define SORTVERSIONFROMLCID(lcid) ((USHORT)((((ULONG)(lcid)) >> 20) & 0xf)) +#define LOCALE_NAME_MAX_LENGTH 85 /* Object Attributes */ typedef struct _OBJECT_ATTRIBUTES { @@ -643,27 +730,59 @@ typedef struct _OBJECT_ATTRIBUTES { } OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES; typedef CONST OBJECT_ATTRIBUTES *PCOBJECT_ATTRIBUTES; +typedef struct _OBJECT_ATTRIBUTES32 { + ULONG Length; + ULONG RootDirectory; + ULONG ObjectName; + ULONG Attributes; + ULONG SecurityDescriptor; + ULONG SecurityQualityOfService; +} OBJECT_ATTRIBUTES32, *POBJECT_ATTRIBUTES32; +typedef CONST OBJECT_ATTRIBUTES32 *PCOBJECT_ATTRIBUTES32; + +typedef struct _OBJECT_ATTRIBUTES64 { + ULONG Length; + ULONG64 RootDirectory; + ULONG64 ObjectName; + ULONG Attributes; + ULONG64 SecurityDescriptor; + ULONG64 SecurityQualityOfService; +} OBJECT_ATTRIBUTES64, *POBJECT_ATTRIBUTES64; +typedef CONST OBJECT_ATTRIBUTES64 *PCOBJECT_ATTRIBUTES64; + /* Values for the Attributes member */ -#define OBJ_INHERIT 0x00000002 -#define OBJ_PERMANENT 0x00000010 -#define OBJ_EXCLUSIVE 0x00000020 -#define OBJ_CASE_INSENSITIVE 0x00000040 -#define OBJ_OPENIF 0x00000080 -#define OBJ_OPENLINK 0x00000100 -#define OBJ_KERNEL_HANDLE 0x00000200 -#define OBJ_FORCE_ACCESS_CHECK 0x00000400 -#define OBJ_VALID_ATTRIBUTES 0x000007F2 +#define OBJ_INHERIT 0x00000002L +#define OBJ_PERMANENT 0x00000010L +#define OBJ_EXCLUSIVE 0x00000020L +#define OBJ_CASE_INSENSITIVE 0x00000040L +#define OBJ_OPENIF 0x00000080L +#define OBJ_OPENLINK 0x00000100L +#define OBJ_KERNEL_HANDLE 0x00000200L +#define OBJ_FORCE_ACCESS_CHECK 0x00000400L +#define OBJ_VALID_ATTRIBUTES 0x000007F2L /* Helper Macro */ #define InitializeObjectAttributes(p,n,a,r,s) { \ (p)->Length = sizeof(OBJECT_ATTRIBUTES); \ (p)->RootDirectory = (r); \ - (p)->Attributes = (a); \ (p)->ObjectName = (n); \ + (p)->Attributes = (a); \ (p)->SecurityDescriptor = (s); \ (p)->SecurityQualityOfService = NULL; \ } +#define RTL_CONSTANT_OBJECT_ATTRIBUTES(n,a) { \ + sizeof(OBJECT_ATTRIBUTES), \ + NULL, \ + RTL_CONST_CAST(PUNICODE_STRING)(n), \ + a, \ + NULL, \ + NULL \ +} + +#define RTL_INIT_OBJECT_ATTRIBUTES(n, a) \ + RTL_CONSTANT_OBJECT_ATTRIBUTES(n, a) + /* Product Types */ typedef enum _NT_PRODUCT_TYPE { NtProductWinNt = 1, @@ -707,24 +826,29 @@ typedef struct _SINGLE_LIST_ENTRY { struct _SINGLE_LIST_ENTRY *Next; } SINGLE_LIST_ENTRY, *PSINGLE_LIST_ENTRY; +typedef struct _SINGLE_LIST_ENTRY32 { + ULONG Next; +} SINGLE_LIST_ENTRY32, *PSINGLE_LIST_ENTRY32; + typedef struct _PROCESSOR_NUMBER { USHORT Group; UCHAR Number; UCHAR Reserved; } PROCESSOR_NUMBER, *PPROCESSOR_NUMBER; -struct _CONTEXT; -struct _EXCEPTION_RECORD; - _IRQL_requires_same_ _Function_class_(EXCEPTION_ROUTINE) -typedef EXCEPTION_DISPOSITION -(NTAPI *PEXCEPTION_ROUTINE)( +typedef +EXCEPTION_DISPOSITION +NTAPI +EXCEPTION_ROUTINE( _Inout_ struct _EXCEPTION_RECORD *ExceptionRecord, _In_ PVOID EstablisherFrame, _Inout_ struct _CONTEXT *ContextRecord, _In_ PVOID DispatcherContext); +typedef EXCEPTION_ROUTINE *PEXCEPTION_ROUTINE; + typedef struct _GROUP_AFFINITY { KAFFINITY Mask; USHORT Group; @@ -737,7 +861,22 @@ typedef struct _GROUP_AFFINITY { #define RTL_BITS_OF(sizeOfArg) (sizeof(sizeOfArg) * 8) #define RTL_BITS_OF_FIELD(type, field) (RTL_BITS_OF(RTL_FIELD_TYPE(type, field))) -#define RTL_CONSTANT_STRING(s) { sizeof(s)-sizeof((s)[0]), sizeof(s), s } +#ifdef __cplusplus +extern "C++" template struct _RTL_remove_const_template; +extern "C++" template struct _RTL_remove_const_template { typedef _Type type; }; +#define _RTL_CONSTANT_STRING_remove_const_macro(s) \ + (const_cast<_RTL_remove_const_template::type*>(s)) +extern "C++" template struct _RTL_CONSTANT_STRING_type_check_template; +extern "C++" template struct _RTL_CONSTANT_STRING_type_check_template { typedef char type; }; +#define _RTL_CONSTANT_STRING_type_check(s) _RTL_CONSTANT_STRING_type_check_template::type +#else +#define _RTL_CONSTANT_STRING_remove_const_macro(s) (s) +char _RTL_CONSTANT_STRING_type_check(const void *s); +#endif +#define RTL_CONSTANT_STRING(s) { \ + sizeof(s)-sizeof((s)[0]), \ + sizeof(s) / sizeof(_RTL_CONSTANT_STRING_type_check(s)), \ + _RTL_CONSTANT_STRING_remove_const_macro(s) } #define RTL_FIELD_SIZE(type, field) (sizeof(((type *)0)->field)) @@ -748,13 +887,23 @@ typedef struct _GROUP_AFFINITY { ( (((PCHAR)(&(Struct)->Field)) + sizeof((Struct)->Field)) <= (((PCHAR)(Struct))+(Size)) ) #define RTL_NUMBER_OF_V1(A) (sizeof(A)/sizeof((A)[0])) + +#ifdef __GNUC__ +#define RTL_NUMBER_OF_V2(A) \ + (({ int _check_array_type[__builtin_types_compatible_p(typeof(A), typeof(&A[0])) ? -1 : 1]; (void)_check_array_type; }), \ + RTL_NUMBER_OF_V1(A)) +#else +/// \todo implement security checks for cplusplus / MSVC #define RTL_NUMBER_OF_V2(A) RTL_NUMBER_OF_V1(A) +#endif + #ifdef ENABLE_RTL_NUMBER_OF_V2 #define RTL_NUMBER_OF(A) RTL_NUMBER_OF_V2(A) #else #define RTL_NUMBER_OF(A) RTL_NUMBER_OF_V1(A) #endif #define ARRAYSIZE(A) RTL_NUMBER_OF_V2(A) +#define _ARRAYSIZE(A) RTL_NUMBER_OF_V1(A) /* Type Limits */ #define MINCHAR 0x80 @@ -768,18 +917,28 @@ typedef struct _GROUP_AFFINITY { #define MAXULONG 0xffffffff #define MAXLONGLONG (0x7fffffffffffffffLL) -/* Multiplication and Shift Operations */ -#define Int32x32To64(a,b) ((LONGLONG)(a)*(LONGLONG)(b)) -#define UInt32x32To64(a,b) ((DWORDLONG)(a)*(DWORDLONG)(b)) -#define Int64ShllMod32(a,b) ((DWORDLONG)(a)<<(b)) -#define Int64ShraMod32(a,b) ((LONGLONG)(a)>>(b)) -#define Int64ShrlMod32(a,b) ((DWORDLONG)(a)>>(b)) +/* Multiplication and Shift Operations. Note: we don't use inline + asm functions, the compiler can optimize this better. */ +#define Int32x32To64(a,b) (((__int64)(long)(a))*((__int64)(long)(b))) +#define UInt32x32To64(a,b) ((unsigned __int64)(unsigned int)(a)*(unsigned __int64)(unsigned int)(b)) + +#if defined(MIDL_PASS)|| defined(RC_INVOKED) || defined(_M_CEE_PURE) +/* Use native math */ +#define Int64ShllMod32(a,b) ((unsigned __int64)(a)<<(b)) +#define Int64ShraMod32(a,b) (((__int64)(a))>>(b)) +#define Int64ShrlMod32(a,b) (((unsigned __int64)(a))>>(b)) +#else +/* Use intrinsics */ +#define Int64ShllMod32(a,b) __ll_lshift(a,b) +#define Int64ShraMod32(a,b) __ll_rshift(a,b) +#define Int64ShrlMod32(a,b) __ull_rshift(a,b) +#endif /* C_ASSERT Definition */ #define C_ASSERT(expr) extern char (*c_assert(void)) [(expr) ? 1 : -1] /* Eliminate Microsoft C/C++ compiler warning 4715 */ -#if defined(_MSC_VER) && (_MSC_VER > 1200) +#if defined(_MSC_VER) # define DEFAULT_UNREACHABLE default: __assume(0) #elif defined(__clang__) || (defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)))) # define DEFAULT_UNREACHABLE default: __builtin_unreachable() @@ -818,6 +977,8 @@ typedef struct _GROUP_AFFINITY { #define LANG_ARMENIAN 0x2b #define LANG_ASSAMESE 0x4d #define LANG_AZERI 0x2c +#define LANG_AZERBAIJANI 0x2c +#define LANG_BANGLA 0x45 #define LANG_BASHKIR 0x6d #define LANG_BASQUE 0x2d #define LANG_BELARUSIAN 0x23 @@ -827,6 +988,8 @@ typedef struct _GROUP_AFFINITY { #define LANG_BOSNIAN_NEUTRAL 0x781a #define LANG_BULGARIAN 0x02 #define LANG_CATALAN 0x03 +#define LANG_CENTRAL_KURDISH 0x92 +#define LANG_CHEROKEE 0x5c #define LANG_CHINESE 0x04 #define LANG_CHINESE_SIMPLIFIED 0x04 #define LANG_CHINESE_TRADITIONAL 0x7c04 @@ -845,6 +1008,7 @@ typedef struct _GROUP_AFFINITY { #define LANG_FINNISH 0x0b #define LANG_FRENCH 0x0c #define LANG_FRISIAN 0x62 +#define LANG_FULAH 0x67 #define LANG_GALICIAN 0x56 #define LANG_GEORGIAN 0x37 #define LANG_GERMAN 0x07 @@ -852,6 +1016,7 @@ typedef struct _GROUP_AFFINITY { #define LANG_GREENLANDIC 0x6f #define LANG_GUJARATI 0x47 #define LANG_HAUSA 0x68 +#define LANG_HAWAIIAN 0x75 #define LANG_HEBREW 0x0d #define LANG_HINDI 0x39 #define LANG_HUNGARIAN 0x0e @@ -889,18 +1054,22 @@ typedef struct _GROUP_AFFINITY { #define LANG_NEPALI 0x61 #define LANG_NORWEGIAN 0x14 #define LANG_OCCITAN 0x82 +#define LANG_ODIA 0x48 #define LANG_ORIYA 0x48 #define LANG_PASHTO 0x63 #define LANG_PERSIAN 0x29 #define LANG_POLISH 0x15 #define LANG_PORTUGUESE 0x16 +#define LANG_PULAR 0x67 #define LANG_PUNJABI 0x46 #define LANG_QUECHUA 0x6b #define LANG_ROMANIAN 0x18 #define LANG_ROMANSH 0x17 #define LANG_RUSSIAN 0x19 +#define LANG_SAKHA 0x85 #define LANG_SAMI 0x3b #define LANG_SANSKRIT 0x4f +#define LANG_SCOTTISH_GAELIC 0x91 #define LANG_SERBIAN 0x1a #define LANG_SERBIAN_NEUTRAL 0x7c1a #define LANG_SINDHI 0x59 @@ -920,6 +1089,7 @@ typedef struct _GROUP_AFFINITY { #define LANG_THAI 0x1e #define LANG_TIBETAN 0x51 #define LANG_TIGRIGNA 0x73 +#define LANG_TIGRINYA 0x73 #define LANG_TSWANA 0x32 #define LANG_TURKISH 0x1f #define LANG_TURKMEN 0x42 @@ -928,6 +1098,7 @@ typedef struct _GROUP_AFFINITY { #define LANG_UPPER_SORBIAN 0x2e #define LANG_URDU 0x20 #define LANG_UZBEK 0x43 +#define LANG_VALENCIAN 0x03 #define LANG_VIETNAMESE 0x2a #define LANG_WELSH 0x52 #define LANG_WOLOF 0x88 From dad73c35fe2af5ebdde481f74ee4aa6494d6837c Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Sat, 31 May 2014 22:03:41 +0000 Subject: [PATCH 125/232] [RPCTR4] Skip the optional leading backslashes in server names for the ncacn_np protocol. This will fix at least one failure in the advapi32 registry winetest. svn path=/trunk/; revision=63523 --- reactos/dll/win32/rpcrt4/rpc_transport.c | 13 +++++++---- reactos/dll/win32/rpcrt4/rpcrt4_ros.diff | 29 ++++++++++++++---------- 2 files changed, 26 insertions(+), 16 deletions(-) diff --git a/reactos/dll/win32/rpcrt4/rpc_transport.c b/reactos/dll/win32/rpcrt4/rpc_transport.c index 6608d8aedf2..771c3957376 100644 --- a/reactos/dll/win32/rpcrt4/rpc_transport.c +++ b/reactos/dll/win32/rpcrt4/rpc_transport.c @@ -313,6 +313,7 @@ static RPC_STATUS rpcrt4_ncacn_np_open(RpcConnection* Connection) DWORD bufLen = sizeof(ComputerName)/sizeof(ComputerName[0]); RPC_STATUS r; LPSTR pname; + LPSTR NetworkAddr; INT size; /* already connected? */ @@ -329,9 +330,13 @@ static RPC_STATUS rpcrt4_ncacn_np_open(RpcConnection* Connection) } else { + NetworkAddr = Connection->NetworkAddr; + if (NetworkAddr[0] == '\\' && NetworkAddr[1] == '\\') + NetworkAddr += 2; + if (GetComputerNameA(ComputerName, &bufLen)) { - if (stricmp(ComputerName, Connection->NetworkAddr) == 0) + if (stricmp(ComputerName, NetworkAddr) == 0) { bUseLocalName = TRUE; size += strlen(local); @@ -339,13 +344,13 @@ static RPC_STATUS rpcrt4_ncacn_np_open(RpcConnection* Connection) else { bUseLocalName = FALSE; - size += strlen(Connection->NetworkAddr); + size += strlen(NetworkAddr); } } else { bUseLocalName = FALSE; - size += strlen(Connection->NetworkAddr); + size += strlen(NetworkAddr); } } @@ -356,7 +361,7 @@ static RPC_STATUS rpcrt4_ncacn_np_open(RpcConnection* Connection) if (bUseLocalName) strcat(pname, local); else - strcat(pname, Connection->NetworkAddr); + strcat(pname, NetworkAddr); strcat(pname, Connection->Endpoint); r = rpcrt4_conn_open_pipe(Connection, pname, TRUE); I_RpcFree(pname); diff --git a/reactos/dll/win32/rpcrt4/rpcrt4_ros.diff b/reactos/dll/win32/rpcrt4/rpcrt4_ros.diff index 098606b3610..0ebbfaff537 100644 --- a/reactos/dll/win32/rpcrt4/rpcrt4_ros.diff +++ b/reactos/dll/win32/rpcrt4/rpcrt4_ros.diff @@ -141,7 +141,7 @@ diff -prudN .\wine\dlls\rpcrt4/rpc_transport.c .\reactos\dll\win32\rpcrt4/rpc_tr npc->pipe = pipe; return RPC_S_OK; -@@ -308,18 +306,59 @@ static RPC_STATUS rpcrt4_protseq_ncalrpc +@@ -308,18 +306,64 @@ static RPC_STATUS rpcrt4_protseq_ncalrpc static RPC_STATUS rpcrt4_ncacn_np_open(RpcConnection* Connection) { RpcConnection_np *npc = (RpcConnection_np *) Connection; @@ -153,6 +153,7 @@ diff -prudN .\wine\dlls\rpcrt4/rpc_transport.c .\reactos\dll\win32\rpcrt4/rpc_tr + DWORD bufLen = sizeof(ComputerName)/sizeof(ComputerName[0]); RPC_STATUS r; LPSTR pname; ++ LPSTR NetworkAddr; + INT size; /* already connected? */ @@ -172,9 +173,13 @@ diff -prudN .\wine\dlls\rpcrt4/rpc_transport.c .\reactos\dll\win32\rpcrt4/rpc_tr + } + else + { ++ NetworkAddr = Connection->NetworkAddr; ++ if (NetworkAddr[0] == '\\' && NetworkAddr[1] == '\\') ++ NetworkAddr += 2; ++ + if (GetComputerNameA(ComputerName, &bufLen)) + { -+ if (stricmp(ComputerName, Connection->NetworkAddr) == 0) ++ if (stricmp(ComputerName, NetworkAddr) == 0) + { + bUseLocalName = TRUE; + size += strlen(local); @@ -182,13 +187,13 @@ diff -prudN .\wine\dlls\rpcrt4/rpc_transport.c .\reactos\dll\win32\rpcrt4/rpc_tr + else + { + bUseLocalName = FALSE; -+ size += strlen(Connection->NetworkAddr); ++ size += strlen(NetworkAddr); + } + } + else + { + bUseLocalName = FALSE; -+ size += strlen(Connection->NetworkAddr); ++ size += strlen(NetworkAddr); + } + } + @@ -199,13 +204,13 @@ diff -prudN .\wine\dlls\rpcrt4/rpc_transport.c .\reactos\dll\win32\rpcrt4/rpc_tr + if (bUseLocalName) + strcat(pname, local); + else -+ strcat(pname, Connection->NetworkAddr); ++ strcat(pname, NetworkAddr); + strcat(pname, Connection->Endpoint); + r = rpcrt4_conn_open_pipe(Connection, pname, TRUE); I_RpcFree(pname); return r; -@@ -368,9 +407,9 @@ static void rpcrt4_conn_np_handoff(RpcCo +@@ -368,9 +412,9 @@ static void rpcrt4_conn_np_handoff(RpcCo * to the child, then reopen the server binding to continue listening */ new_npc->pipe = old_npc->pipe; @@ -217,7 +222,7 @@ diff -prudN .\wine\dlls\rpcrt4/rpc_transport.c .\reactos\dll\win32\rpcrt4/rpc_tr old_npc->listening = FALSE; } -@@ -415,11 +454,17 @@ static int rpcrt4_conn_np_read(RpcConnec +@@ -415,11 +459,17 @@ static int rpcrt4_conn_np_read(RpcConnec char *buf = buffer; BOOL ret = TRUE; unsigned int bytes_left = count; @@ -244,7 +249,7 @@ diff -prudN .\wine\dlls\rpcrt4/rpc_transport.c .\reactos\dll\win32\rpcrt4/rpc_tr return ret ? count : -1; } -@@ -437,16 +483,23 @@ static int rpcrt4_conn_np_write(RpcConne +@@ -437,16 +488,23 @@ static int rpcrt4_conn_np_write(RpcConne const char *buf = buffer; BOOL ret = TRUE; unsigned int bytes_left = count; @@ -269,7 +274,7 @@ diff -prudN .\wine\dlls\rpcrt4/rpc_transport.c .\reactos\dll\win32\rpcrt4/rpc_tr return ret ? count : -1; } -@@ -458,9 +511,9 @@ static int rpcrt4_conn_np_close(RpcConne +@@ -458,9 +516,9 @@ static int rpcrt4_conn_np_close(RpcConne CloseHandle(npc->pipe); npc->pipe = 0; } @@ -282,7 +287,7 @@ diff -prudN .\wine\dlls\rpcrt4/rpc_transport.c .\reactos\dll\win32\rpcrt4/rpc_tr } return 0; } -@@ -664,7 +717,7 @@ static void *rpcrt4_protseq_np_get_wait_ +@@ -664,7 +722,7 @@ static void *rpcrt4_protseq_np_get_wait_ conn = CONTAINING_RECORD(protseq->conn, RpcConnection_np, common); while (conn) { rpcrt4_conn_listen_pipe(conn); @@ -291,7 +296,7 @@ diff -prudN .\wine\dlls\rpcrt4/rpc_transport.c .\reactos\dll\win32\rpcrt4/rpc_tr (*count)++; conn = CONTAINING_RECORD(conn->common.Next, RpcConnection_np, common); } -@@ -685,7 +738,7 @@ static void *rpcrt4_protseq_np_get_wait_ +@@ -685,7 +743,7 @@ static void *rpcrt4_protseq_np_get_wait_ *count = 1; conn = CONTAINING_RECORD(protseq->conn, RpcConnection_np, common); while (conn) { @@ -300,7 +305,7 @@ diff -prudN .\wine\dlls\rpcrt4/rpc_transport.c .\reactos\dll\win32\rpcrt4/rpc_tr (*count)++; conn = CONTAINING_RECORD(conn->common.Next, RpcConnection_np, common); } -@@ -732,18 +785,12 @@ static int rpcrt4_protseq_np_wait_for_ne +@@ -732,18 +790,12 @@ static int rpcrt4_protseq_np_wait_for_ne EnterCriticalSection(&protseq->cs); conn = CONTAINING_RECORD(protseq->conn, RpcConnection_np, common); while (conn) { From 2d2cae039d19a57db164f863dc2d33119f95e3ba Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sun, 1 Jun 2014 10:15:07 +0000 Subject: [PATCH 126/232] [INCLUDE] - ntdef.h: add missing RTL_NUMBER_OF_FIELD, RTL_PADDING_BETWEEN_FIELDS, RotateLeft*, PRODUCT_*, SUBLANG_*, SORT_*, LANG_SYSTEM_DEFAULT, LANG_USER_DEFAULT, a few LOCALE_* - winnt.h: add missing LOCALE_SYSTEM_DEFAULT, LOCALE_USER_DEFAULT - winnls.h: remove definitions that don't belong there, add some missing ones, remove wineisms - intrin.h Implement _rotl64 for GCC - basetyps.h: add #pragma once, move include to the top svn path=/trunk/; revision=63524 --- reactos/include/crt/mingw32/intrin_x86.h | 16 + reactos/include/psdk/basetyps.h | 6 +- reactos/include/psdk/ntdef.h | 447 ++++++++++++++++++++++- reactos/include/psdk/winnls.h | 62 ++-- reactos/include/psdk/winnt.h | 2 + 5 files changed, 487 insertions(+), 46 deletions(-) diff --git a/reactos/include/crt/mingw32/intrin_x86.h b/reactos/include/crt/mingw32/intrin_x86.h index c7a71455442..aac86b20b36 100644 --- a/reactos/include/crt/mingw32/intrin_x86.h +++ b/reactos/include/crt/mingw32/intrin_x86.h @@ -1003,6 +1003,7 @@ __INTRIN_INLINE unsigned char _bittestandset(long * const a, const long b); __INTRIN_INLINE unsigned char _rotl8(unsigned char value, unsigned char shift); __INTRIN_INLINE unsigned short _rotl16(unsigned short value, unsigned char shift); __INTRIN_INLINE unsigned int _rotl(unsigned int value, int shift); +__INTRIN_INLINE unsigned __int64 _rotl64(unsigned __int64 value, int shift); __INTRIN_INLINE unsigned int _rotr(unsigned int value, int shift); __INTRIN_INLINE unsigned char _rotr8(unsigned char value, unsigned char shift); __INTRIN_INLINE unsigned short _rotr16(unsigned short value, unsigned char shift); @@ -1114,6 +1115,21 @@ __INTRIN_INLINE unsigned int _rotl(unsigned int value, int shift) return retval; } +#ifdef _M_AMD64 +__INTRIN_INLINE unsigned __int64 _rotl64(unsigned __int64 value, int shift) +{ + unsigned __int64 retval; + __asm__("rolq %b[shift], %k[retval]" : [retval] "=rm" (retval) : "[retval]" (value), [shift] "Nc" (shift)); + return retval; +} +#else +__INTRIN_INLINE unsigned __int64 _rotl64(unsigned __int64 value, int shift) +{ + /* FIXME: this is probably not optimal */ + return (value << shift) | (value >> (64 - shift)); +} +#endif + __INTRIN_INLINE unsigned int _rotr(unsigned int value, int shift) { unsigned long retval; diff --git a/reactos/include/psdk/basetyps.h b/reactos/include/psdk/basetyps.h index a8dc59ed430..a9f1cc5d97e 100644 --- a/reactos/include/psdk/basetyps.h +++ b/reactos/include/psdk/basetyps.h @@ -1,5 +1,9 @@ + #ifndef _BASETYPS_H #define _BASETYPS_H +#pragma once + +#include #ifndef __OBJC__ # ifdef __cplusplus @@ -72,8 +76,6 @@ # define DECLARE_INTERFACE_(i,b) DECLARE_INTERFACE(i) #endif -#include - #ifndef _ERROR_STATUS_T_DEFINED #define _ERROR_STATUS_T_DEFINED typedef unsigned long error_status_t; diff --git a/reactos/include/psdk/ntdef.h b/reactos/include/psdk/ntdef.h index 3eb52df66a2..8b7b3e03c85 100644 --- a/reactos/include/psdk/ntdef.h +++ b/reactos/include/psdk/ntdef.h @@ -39,6 +39,13 @@ extern "C" { #endif +/* Default to strict */ +#ifndef NO_STRICT +#ifndef STRICT +//#define STRICT 1 // FIXME: disabled for now +#endif +#endif + /* Pseudo Modifiers for Input Parameters */ #ifndef IN @@ -91,6 +98,12 @@ extern "C" { #define ANYSIZE_ARRAY 1 #endif +#ifdef __cplusplus +#define EXTERN_C extern "C" +#else +#define EXTERN_C extern +#endif + /* Helper macro to enable gcc's extension. */ #ifndef __GNU_EXTENSION #ifdef __GNUC__ @@ -579,6 +592,7 @@ typedef enum #pragma warning(push) #pragma warning(disable:4201) #endif + /* Used to store a non-float 8 byte aligned structure */ typedef struct _QUAD { @@ -701,24 +715,6 @@ typedef struct _STRING64 { UNICODE_STRING64, *PUNICODE_STRING64, ANSI_STRING64, *PANSI_STRING64; -/* LangID and NLS */ -#define MAKELANGID(p, s) ((((USHORT)(s)) << 10) | (USHORT)(p)) -#define PRIMARYLANGID(lgid) ((USHORT)(lgid) & 0x3ff) -#define SUBLANGID(lgid) ((USHORT)(lgid) >> 10) - -#define NLS_VALID_LOCALE_MASK 0x000fffff - -#define MAKELCID(lgid, srtid) ((ULONG)((((ULONG)((USHORT)(srtid))) << 16) | \ - ((ULONG)((USHORT)(lgid))))) -#define MAKESORTLCID(lgid, srtid, ver) \ - ((ULONG)((MAKELCID(lgid, srtid)) | \ - (((ULONG)((USHORT)(ver))) << 20))) -#define LANGIDFROMLCID(lcid) ((USHORT)(lcid)) -#define SORTIDFROMLCID(lcid) ((USHORT)((((ULONG)(lcid)) >> 16) & 0xf)) -#define SORTVERSIONFROMLCID(lcid) ((USHORT)((((ULONG)(lcid)) >> 20) & 0xf)) - -#define LOCALE_NAME_MAX_LENGTH 85 - /* Object Attributes */ typedef struct _OBJECT_ATTRIBUTES { ULONG Length; @@ -836,6 +832,8 @@ typedef struct _PROCESSOR_NUMBER { UCHAR Reserved; } PROCESSOR_NUMBER, *PPROCESSOR_NUMBER; +#define ALL_PROCESSOR_GROUPS 0xffff + _IRQL_requires_same_ _Function_class_(EXCEPTION_ROUTINE) typedef @@ -905,6 +903,20 @@ char _RTL_CONSTANT_STRING_type_check(const void *s); #define ARRAYSIZE(A) RTL_NUMBER_OF_V2(A) #define _ARRAYSIZE(A) RTL_NUMBER_OF_V1(A) +#define RTL_NUMBER_OF_FIELD(type, field) \ + (RTL_NUMBER_OF(RTL_FIELD_TYPE(type, field))) + +#define RTL_PADDING_BETWEEN_FIELDS(type, field1, field2) \ + ((FIELD_OFFSET(type, field2) > FIELD_OFFSET(type, field1)) \ + ? (FIELD_OFFSET(type, field2) - FIELD_OFFSET(type, field1) - RTL_FIELD_SIZE(type, field1)) \ + : (FIELD_OFFSET(type, field1) - FIELD_OFFSET(type, field2) - RTL_FIELD_SIZE(type, field2))) + +#if defined(__cplusplus) +#define RTL_CONST_CAST(type) const_cast +#else +#define RTL_CONST_CAST(type) (type) +#endif + /* Type Limits */ #define MINCHAR 0x80 #define MAXCHAR 0x7f @@ -934,6 +946,18 @@ char _RTL_CONSTANT_STRING_type_check(const void *s); #define Int64ShrlMod32(a,b) __ull_rshift(a,b) #endif +#define RotateLeft32 _rotl +#define RotateLeft64 _rotl64 +#define RotateRight32 _rotr +#define RotateRight64 _rotr64 + +#if defined(_M_AMD64) +#define RotateLeft8 _rotl8 +#define RotateLeft16 _rotl16 +#define RotateRight8 _rotr8 +#define RotateRight16 _rotr16 +#endif /* _M_AMD64 */ + /* C_ASSERT Definition */ #define C_ASSERT(expr) extern char (*c_assert(void)) [(expr) ? 1 : -1] @@ -965,10 +989,120 @@ char _RTL_CONSTANT_STRING_type_check(const void *s); #define VER_SUITE_COMPUTE_SERVER 0x00004000 #define VER_SUITE_WH_SERVER 0x00008000 +#define PRODUCT_UNDEFINED 0x00000000 +#define PRODUCT_ULTIMATE 0x00000001 +#define PRODUCT_HOME_BASIC 0x00000002 +#define PRODUCT_HOME_PREMIUM 0x00000003 +#define PRODUCT_ENTERPRISE 0x00000004 +#define PRODUCT_HOME_BASIC_N 0x00000005 +#define PRODUCT_BUSINESS 0x00000006 +#define PRODUCT_STANDARD_SERVER 0x00000007 +#define PRODUCT_DATACENTER_SERVER 0x00000008 +#define PRODUCT_SMALLBUSINESS_SERVER 0x00000009 +#define PRODUCT_ENTERPRISE_SERVER 0x0000000A +#define PRODUCT_STARTER 0x0000000B +#define PRODUCT_DATACENTER_SERVER_CORE 0x0000000C +#define PRODUCT_STANDARD_SERVER_CORE 0x0000000D +#define PRODUCT_ENTERPRISE_SERVER_CORE 0x0000000E +#define PRODUCT_ENTERPRISE_SERVER_IA64 0x0000000F +#define PRODUCT_BUSINESS_N 0x00000010 +#define PRODUCT_WEB_SERVER 0x00000011 +#define PRODUCT_CLUSTER_SERVER 0x00000012 +#define PRODUCT_HOME_SERVER 0x00000013 +#define PRODUCT_STORAGE_EXPRESS_SERVER 0x00000014 +#define PRODUCT_STORAGE_STANDARD_SERVER 0x00000015 +#define PRODUCT_STORAGE_WORKGROUP_SERVER 0x00000016 +#define PRODUCT_STORAGE_ENTERPRISE_SERVER 0x00000017 +#define PRODUCT_SERVER_FOR_SMALLBUSINESS 0x00000018 +#define PRODUCT_SMALLBUSINESS_SERVER_PREMIUM 0x00000019 +#define PRODUCT_HOME_PREMIUM_N 0x0000001A +#define PRODUCT_ENTERPRISE_N 0x0000001B +#define PRODUCT_ULTIMATE_N 0x0000001C +#define PRODUCT_WEB_SERVER_CORE 0x0000001D +#define PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT 0x0000001E +#define PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY 0x0000001F +#define PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING 0x00000020 +#define PRODUCT_SERVER_FOUNDATION 0x00000021 +#define PRODUCT_HOME_PREMIUM_SERVER 0x00000022 +#define PRODUCT_SERVER_FOR_SMALLBUSINESS_V 0x00000023 +#define PRODUCT_STANDARD_SERVER_V 0x00000024 +#define PRODUCT_DATACENTER_SERVER_V 0x00000025 +#define PRODUCT_ENTERPRISE_SERVER_V 0x00000026 +#define PRODUCT_DATACENTER_SERVER_CORE_V 0x00000027 +#define PRODUCT_STANDARD_SERVER_CORE_V 0x00000028 +#define PRODUCT_ENTERPRISE_SERVER_CORE_V 0x00000029 +#define PRODUCT_HYPERV 0x0000002A +#define PRODUCT_STORAGE_EXPRESS_SERVER_CORE 0x0000002B +#define PRODUCT_STORAGE_STANDARD_SERVER_CORE 0x0000002C +#define PRODUCT_STORAGE_WORKGROUP_SERVER_CORE 0x0000002D +#define PRODUCT_STORAGE_ENTERPRISE_SERVER_CORE 0x0000002E +#define PRODUCT_STARTER_N 0x0000002F +#define PRODUCT_PROFESSIONAL 0x00000030 +#define PRODUCT_PROFESSIONAL_N 0x00000031 +#define PRODUCT_SB_SOLUTION_SERVER 0x00000032 +#define PRODUCT_SERVER_FOR_SB_SOLUTIONS 0x00000033 +#define PRODUCT_STANDARD_SERVER_SOLUTIONS 0x00000034 +#define PRODUCT_STANDARD_SERVER_SOLUTIONS_CORE 0x00000035 +#define PRODUCT_SB_SOLUTION_SERVER_EM 0x00000036 +#define PRODUCT_SERVER_FOR_SB_SOLUTIONS_EM 0x00000037 +#define PRODUCT_SOLUTION_EMBEDDEDSERVER 0x00000038 +#define PRODUCT_SOLUTION_EMBEDDEDSERVER_CORE 0x00000039 +#define PRODUCT_ESSENTIALBUSINESS_SERVER_MGMT 0x0000003B +#define PRODUCT_ESSENTIALBUSINESS_SERVER_ADDL 0x0000003C +#define PRODUCT_ESSENTIALBUSINESS_SERVER_MGMTSVC 0x0000003D +#define PRODUCT_ESSENTIALBUSINESS_SERVER_ADDLSVC 0x0000003E +#define PRODUCT_SMALLBUSINESS_SERVER_PREMIUM_CORE 0x0000003F +#define PRODUCT_CLUSTER_SERVER_V 0x00000040 +#define PRODUCT_EMBEDDED 0x00000041 +#define PRODUCT_STARTER_E 0x00000042 +#define PRODUCT_HOME_BASIC_E 0x00000043 +#define PRODUCT_HOME_PREMIUM_E 0x00000044 +#define PRODUCT_PROFESSIONAL_E 0x00000045 +#define PRODUCT_ENTERPRISE_E 0x00000046 +#define PRODUCT_ULTIMATE_E 0x00000047 +#define PRODUCT_ENTERPRISE_EVALUATION 0x00000048 +#define PRODUCT_MULTIPOINT_STANDARD_SERVER 0x0000004C +#define PRODUCT_MULTIPOINT_PREMIUM_SERVER 0x0000004D +#define PRODUCT_STANDARD_EVALUATION_SERVER 0x0000004F +#define PRODUCT_DATACENTER_EVALUATION_SERVER 0x00000050 +#define PRODUCT_ENTERPRISE_N_EVALUATION 0x00000054 +#define PRODUCT_EMBEDDED_AUTOMOTIVE 0x00000055 +#define PRODUCT_EMBEDDED_INDUSTRY_A 0x00000056 +#define PRODUCT_THINPC 0x00000057 +#define PRODUCT_EMBEDDED_A 0x00000058 +#define PRODUCT_EMBEDDED_INDUSTRY 0x00000059 +#define PRODUCT_EMBEDDED_E 0x0000005A +#define PRODUCT_EMBEDDED_INDUSTRY_E 0x0000005B +#define PRODUCT_EMBEDDED_INDUSTRY_A_E 0x0000005C +#define PRODUCT_STORAGE_WORKGROUP_EVALUATION_SERVER 0x0000005F +#define PRODUCT_STORAGE_STANDARD_EVALUATION_SERVER 0x00000060 +#define PRODUCT_CORE_ARM 0x00000061 +#define PRODUCT_CORE_N 0x00000062 +#define PRODUCT_CORE_COUNTRYSPECIFIC 0x00000063 +#define PRODUCT_CORE_SINGLELANGUAGE 0x00000064 +#define PRODUCT_CORE 0x00000065 +#define PRODUCT_PROFESSIONAL_WMC 0x00000067 +#define PRODUCT_UNLICENSED 0xABCDABCD + +/* LangID and NLS */ +#define MAKELANGID(p, s) ((((USHORT)(s)) << 10) | (USHORT)(p)) +#define PRIMARYLANGID(lgid) ((USHORT)(lgid) & 0x3ff) +#define SUBLANGID(lgid) ((USHORT)(lgid) >> 10) +#define MAKELCID(lgid, srtid) ((ULONG)((((ULONG)((USHORT)(srtid))) << 16) | \ + ((ULONG)((USHORT)(lgid))))) +#define MAKESORTLCID(lgid, srtid, ver) \ + ((ULONG)((MAKELCID(lgid, srtid)) | \ + (((ULONG)((USHORT)(ver))) << 20))) +#define LANGIDFROMLCID(lcid) ((USHORT)(lcid)) +#define SORTIDFROMLCID(lcid) ((USHORT)((((ULONG)(lcid)) >> 16) & 0xf)) +#define SORTVERSIONFROMLCID(lcid) ((USHORT)((((ULONG)(lcid)) >> 20) & 0xf)) + +#define NLS_VALID_LOCALE_MASK 0x000fffff +#define LOCALE_NAME_MAX_LENGTH 85 + /* Primary language IDs. */ #define LANG_NEUTRAL 0x00 #define LANG_INVARIANT 0x7f - #define LANG_AFRIKAANS 0x36 #define LANG_ALBANIAN 0x1c #define LANG_ALSATIAN 0x84 @@ -1108,6 +1242,281 @@ char _RTL_CONSTANT_STRING_type_check(const void *s); #define LANG_YORUBA 0x6a #define LANG_ZULU 0x35 +#define SUBLANG_NEUTRAL 0x00 +#define SUBLANG_DEFAULT 0x01 +#define SUBLANG_SYS_DEFAULT 0x02 +#define SUBLANG_CUSTOM_DEFAULT 0x03 +#define SUBLANG_CUSTOM_UNSPECIFIED 0x04 +#define SUBLANG_UI_CUSTOM_DEFAULT 0x05 +#define SUBLANG_AFRIKAANS_SOUTH_AFRICA 0x01 +#define SUBLANG_ALBANIAN_ALBANIA 0x01 +#define SUBLANG_ALSATIAN_FRANCE 0x01 +#define SUBLANG_AMHARIC_ETHIOPIA 0x01 +#define SUBLANG_ARABIC_SAUDI_ARABIA 0x01 +#define SUBLANG_ARABIC_IRAQ 0x02 +#define SUBLANG_ARABIC_EGYPT 0x03 +#define SUBLANG_ARABIC_LIBYA 0x04 +#define SUBLANG_ARABIC_ALGERIA 0x05 +#define SUBLANG_ARABIC_MOROCCO 0x06 +#define SUBLANG_ARABIC_TUNISIA 0x07 +#define SUBLANG_ARABIC_OMAN 0x08 +#define SUBLANG_ARABIC_YEMEN 0x09 +#define SUBLANG_ARABIC_SYRIA 0x0a +#define SUBLANG_ARABIC_JORDAN 0x0b +#define SUBLANG_ARABIC_LEBANON 0x0c +#define SUBLANG_ARABIC_KUWAIT 0x0d +#define SUBLANG_ARABIC_UAE 0x0e +#define SUBLANG_ARABIC_BAHRAIN 0x0f +#define SUBLANG_ARABIC_QATAR 0x10 +#define SUBLANG_ARMENIAN_ARMENIA 0x01 +#define SUBLANG_ASSAMESE_INDIA 0x01 +#define SUBLANG_AZERI_LATIN 0x01 +#define SUBLANG_AZERI_CYRILLIC 0x02 +#define SUBLANG_AZERBAIJANI_AZERBAIJAN_LATIN 0x01 +#define SUBLANG_AZERBAIJANI_AZERBAIJAN_CYRILLIC 0x02 +#define SUBLANG_BANGLA_INDIA 0x01 +#define SUBLANG_BANGLA_BANGLADESH 0x02 +#define SUBLANG_BASHKIR_RUSSIA 0x01 +#define SUBLANG_BASQUE_BASQUE 0x01 +#define SUBLANG_BELARUSIAN_BELARUS 0x01 +#define SUBLANG_BENGALI_INDIA 0x01 +#define SUBLANG_BENGALI_BANGLADESH 0x02 +#define SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_LATIN 0x05 +#define SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_CYRILLIC 0x08 +#define SUBLANG_BRETON_FRANCE 0x01 +#define SUBLANG_BULGARIAN_BULGARIA 0x01 +#define SUBLANG_CATALAN_CATALAN 0x01 +#define SUBLANG_CENTRAL_KURDISH_IRAQ 0x01 +#define SUBLANG_CHEROKEE_CHEROKEE 0x01 +#define SUBLANG_CHINESE_TRADITIONAL 0x01 +#define SUBLANG_CHINESE_SIMPLIFIED 0x02 +#define SUBLANG_CHINESE_HONGKONG 0x03 +#define SUBLANG_CHINESE_SINGAPORE 0x04 +#define SUBLANG_CHINESE_MACAU 0x05 +#define SUBLANG_CORSICAN_FRANCE 0x01 +#define SUBLANG_CZECH_CZECH_REPUBLIC 0x01 +#define SUBLANG_CROATIAN_CROATIA 0x01 +#define SUBLANG_CROATIAN_BOSNIA_HERZEGOVINA_LATIN 0x04 +#define SUBLANG_DANISH_DENMARK 0x01 +#define SUBLANG_DARI_AFGHANISTAN 0x01 +#define SUBLANG_DIVEHI_MALDIVES 0x01 +#define SUBLANG_DUTCH 0x01 +#define SUBLANG_DUTCH_BELGIAN 0x02 +#define SUBLANG_ENGLISH_US 0x01 +#define SUBLANG_ENGLISH_UK 0x02 +#define SUBLANG_ENGLISH_AUS 0x03 +#define SUBLANG_ENGLISH_CAN 0x04 +#define SUBLANG_ENGLISH_NZ 0x05 +#define SUBLANG_ENGLISH_EIRE 0x06 +#define SUBLANG_ENGLISH_SOUTH_AFRICA 0x07 +#define SUBLANG_ENGLISH_JAMAICA 0x08 +#define SUBLANG_ENGLISH_CARIBBEAN 0x09 +#define SUBLANG_ENGLISH_BELIZE 0x0a +#define SUBLANG_ENGLISH_TRINIDAD 0x0b +#define SUBLANG_ENGLISH_ZIMBABWE 0x0c +#define SUBLANG_ENGLISH_PHILIPPINES 0x0d +#define SUBLANG_ENGLISH_INDIA 0x10 +#define SUBLANG_ENGLISH_MALAYSIA 0x11 +#define SUBLANG_ENGLISH_SINGAPORE 0x12 +#define SUBLANG_ESTONIAN_ESTONIA 0x01 +#define SUBLANG_FAEROESE_FAROE_ISLANDS 0x01 +#define SUBLANG_FILIPINO_PHILIPPINES 0x01 +#define SUBLANG_FINNISH_FINLAND 0x01 +#define SUBLANG_FRENCH 0x01 +#define SUBLANG_FRENCH_BELGIAN 0x02 +#define SUBLANG_FRENCH_CANADIAN 0x03 +#define SUBLANG_FRENCH_SWISS 0x04 +#define SUBLANG_FRENCH_LUXEMBOURG 0x05 +#define SUBLANG_FRENCH_MONACO 0x06 +#define SUBLANG_FRISIAN_NETHERLANDS 0x01 +#define SUBLANG_FULAH_SENEGAL 0x02 +#define SUBLANG_GALICIAN_GALICIAN 0x01 +#define SUBLANG_GEORGIAN_GEORGIA 0x01 +#define SUBLANG_GERMAN 0x01 +#define SUBLANG_GERMAN_SWISS 0x02 +#define SUBLANG_GERMAN_AUSTRIAN 0x03 +#define SUBLANG_GERMAN_LUXEMBOURG 0x04 +#define SUBLANG_GERMAN_LIECHTENSTEIN 0x05 +#define SUBLANG_GREEK_GREECE 0x01 +#define SUBLANG_GREENLANDIC_GREENLAND 0x01 +#define SUBLANG_GUJARATI_INDIA 0x01 +#define SUBLANG_HAUSA_NIGERIA_LATIN 0x01 +#define SUBLANG_HAWAIIAN_US 0x01 +#define SUBLANG_HEBREW_ISRAEL 0x01 +#define SUBLANG_HINDI_INDIA 0x01 +#define SUBLANG_HUNGARIAN_HUNGARY 0x01 +#define SUBLANG_ICELANDIC_ICELAND 0x01 +#define SUBLANG_IGBO_NIGERIA 0x01 +#define SUBLANG_INDONESIAN_INDONESIA 0x01 +#define SUBLANG_INUKTITUT_CANADA 0x01 +#define SUBLANG_INUKTITUT_CANADA_LATIN 0x02 +#define SUBLANG_IRISH_IRELAND 0x02 +#define SUBLANG_ITALIAN 0x01 +#define SUBLANG_ITALIAN_SWISS 0x02 +#define SUBLANG_JAPANESE_JAPAN 0x01 +#define SUBLANG_KANNADA_INDIA 0x01 +#define SUBLANG_KASHMIRI_SASIA 0x02 +#define SUBLANG_KASHMIRI_INDIA 0x02 +#define SUBLANG_KAZAK_KAZAKHSTAN 0x01 +#define SUBLANG_KHMER_CAMBODIA 0x01 +#define SUBLANG_KICHE_GUATEMALA 0x01 +#define SUBLANG_KINYARWANDA_RWANDA 0x01 +#define SUBLANG_KONKANI_INDIA 0x01 +#define SUBLANG_KOREAN 0x01 +#define SUBLANG_KYRGYZ_KYRGYZSTAN 0x01 +#define SUBLANG_LAO_LAO 0x01 +#define SUBLANG_LATVIAN_LATVIA 0x01 +#define SUBLANG_LITHUANIAN 0x01 +#define SUBLANG_LOWER_SORBIAN_GERMANY 0x02 +#define SUBLANG_LUXEMBOURGISH_LUXEMBOURG 0x01 +#define SUBLANG_MACEDONIAN_MACEDONIA 0x01 +#define SUBLANG_MALAY_MALAYSIA 0x01 +#define SUBLANG_MALAY_BRUNEI_DARUSSALAM 0x02 +#define SUBLANG_MALAYALAM_INDIA 0x01 +#define SUBLANG_MALTESE_MALTA 0x01 +#define SUBLANG_MAORI_NEW_ZEALAND 0x01 +#define SUBLANG_MAPUDUNGUN_CHILE 0x01 +#define SUBLANG_MARATHI_INDIA 0x01 +#define SUBLANG_MOHAWK_MOHAWK 0x01 +#define SUBLANG_MONGOLIAN_CYRILLIC_MONGOLIA 0x01 +#define SUBLANG_MONGOLIAN_PRC 0x02 +#define SUBLANG_NEPALI_INDIA 0x02 +#define SUBLANG_NEPALI_NEPAL 0x01 +#define SUBLANG_NORWEGIAN_BOKMAL 0x01 +#define SUBLANG_NORWEGIAN_NYNORSK 0x02 +#define SUBLANG_OCCITAN_FRANCE 0x01 +#define SUBLANG_ODIA_INDIA 0x01 +#define SUBLANG_ORIYA_INDIA 0x01 +#define SUBLANG_PASHTO_AFGHANISTAN 0x01 +#define SUBLANG_PERSIAN_IRAN 0x01 +#define SUBLANG_POLISH_POLAND 0x01 +#define SUBLANG_PORTUGUESE 0x02 +#define SUBLANG_PORTUGUESE_BRAZILIAN 0x01 +#define SUBLANG_PULAR_SENEGAL 0x02 +#define SUBLANG_PUNJABI_INDIA 0x01 +#define SUBLANG_PUNJABI_PAKISTAN 0x02 +#define SUBLANG_QUECHUA_BOLIVIA 0x01 +#define SUBLANG_QUECHUA_ECUADOR 0x02 +#define SUBLANG_QUECHUA_PERU 0x03 +#define SUBLANG_ROMANIAN_ROMANIA 0x01 +#define SUBLANG_ROMANSH_SWITZERLAND 0x01 +#define SUBLANG_RUSSIAN_RUSSIA 0x01 +#define SUBLANG_SAKHA_RUSSIA 0x01 +#define SUBLANG_SAMI_NORTHERN_NORWAY 0x01 +#define SUBLANG_SAMI_NORTHERN_SWEDEN 0x02 +#define SUBLANG_SAMI_NORTHERN_FINLAND 0x03 +#define SUBLANG_SAMI_LULE_NORWAY 0x04 +#define SUBLANG_SAMI_LULE_SWEDEN 0x05 +#define SUBLANG_SAMI_SOUTHERN_NORWAY 0x06 +#define SUBLANG_SAMI_SOUTHERN_SWEDEN 0x07 +#define SUBLANG_SAMI_SKOLT_FINLAND 0x08 +#define SUBLANG_SAMI_INARI_FINLAND 0x09 +#define SUBLANG_SANSKRIT_INDIA 0x01 +#define SUBLANG_SCOTTISH_GAELIC 0x01 +#define SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_LATIN 0x06 +#define SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_CYRILLIC 0x07 +#define SUBLANG_SERBIAN_MONTENEGRO_LATIN 0x0b +#define SUBLANG_SERBIAN_MONTENEGRO_CYRILLIC 0x0c +#define SUBLANG_SERBIAN_SERBIA_LATIN 0x09 +#define SUBLANG_SERBIAN_SERBIA_CYRILLIC 0x0a +#define SUBLANG_SERBIAN_CROATIA 0x01 +#define SUBLANG_SERBIAN_LATIN 0x02 +#define SUBLANG_SERBIAN_CYRILLIC 0x03 +#define SUBLANG_SINDHI_INDIA 0x01 +#define SUBLANG_SINDHI_PAKISTAN 0x02 +#define SUBLANG_SINDHI_AFGHANISTAN 0x02 +#define SUBLANG_SINHALESE_SRI_LANKA 0x01 +#define SUBLANG_SOTHO_NORTHERN_SOUTH_AFRICA 0x01 +#define SUBLANG_SLOVAK_SLOVAKIA 0x01 +#define SUBLANG_SLOVENIAN_SLOVENIA 0x01 +#define SUBLANG_SPANISH 0x01 +#define SUBLANG_SPANISH_MEXICAN 0x02 +#define SUBLANG_SPANISH_MODERN 0x03 +#define SUBLANG_SPANISH_GUATEMALA 0x04 +#define SUBLANG_SPANISH_COSTA_RICA 0x05 +#define SUBLANG_SPANISH_PANAMA 0x06 +#define SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x07 +#define SUBLANG_SPANISH_VENEZUELA 0x08 +#define SUBLANG_SPANISH_COLOMBIA 0x09 +#define SUBLANG_SPANISH_PERU 0x0a +#define SUBLANG_SPANISH_ARGENTINA 0x0b +#define SUBLANG_SPANISH_ECUADOR 0x0c +#define SUBLANG_SPANISH_CHILE 0x0d +#define SUBLANG_SPANISH_URUGUAY 0x0e +#define SUBLANG_SPANISH_PARAGUAY 0x0f +#define SUBLANG_SPANISH_BOLIVIA 0x10 +#define SUBLANG_SPANISH_EL_SALVADOR 0x11 +#define SUBLANG_SPANISH_HONDURAS 0x12 +#define SUBLANG_SPANISH_NICARAGUA 0x13 +#define SUBLANG_SPANISH_PUERTO_RICO 0x14 +#define SUBLANG_SPANISH_US 0x15 +#define SUBLANG_SWAHILI_KENYA 0x01 +#define SUBLANG_SWEDISH 0x01 +#define SUBLANG_SWEDISH_FINLAND 0x02 +#define SUBLANG_SYRIAC_SYRIA 0x01 +#define SUBLANG_TAJIK_TAJIKISTAN 0x01 +#define SUBLANG_TAMAZIGHT_ALGERIA_LATIN 0x02 +#define SUBLANG_TAMAZIGHT_MOROCCO_TIFINAGH 0x04 +#define SUBLANG_TAMIL_INDIA 0x01 +#define SUBLANG_TAMIL_SRI_LANKA 0x02 +#define SUBLANG_TATAR_RUSSIA 0x01 +#define SUBLANG_TELUGU_INDIA 0x01 +#define SUBLANG_THAI_THAILAND 0x01 +#define SUBLANG_TIBETAN_PRC 0x01 +#define SUBLANG_TIGRIGNA_ERITREA 0x02 +#define SUBLANG_TIGRINYA_ERITREA 0x02 +#define SUBLANG_TIGRINYA_ETHIOPIA 0x01 +#define SUBLANG_TSWANA_BOTSWANA 0x02 +#define SUBLANG_TSWANA_SOUTH_AFRICA 0x01 +#define SUBLANG_TURKISH_TURKEY 0x01 +#define SUBLANG_TURKMEN_TURKMENISTAN 0x01 +#define SUBLANG_UIGHUR_PRC 0x01 +#define SUBLANG_UKRAINIAN_UKRAINE 0x01 +#define SUBLANG_UPPER_SORBIAN_GERMANY 0x01 +#define SUBLANG_URDU_PAKISTAN 0x01 +#define SUBLANG_URDU_INDIA 0x02 +#define SUBLANG_UZBEK_LATIN 0x01 +#define SUBLANG_UZBEK_CYRILLIC 0x02 +#define SUBLANG_VALENCIAN_VALENCIA 0x02 +#define SUBLANG_VIETNAMESE_VIETNAM 0x01 +#define SUBLANG_WELSH_UNITED_KINGDOM 0x01 +#define SUBLANG_WOLOF_SENEGAL 0x01 +#define SUBLANG_XHOSA_SOUTH_AFRICA 0x01 +#define SUBLANG_YAKUT_RUSSIA 0x01 +#define SUBLANG_YI_PRC 0x01 +#define SUBLANG_YORUBA_NIGERIA 0x01 +#define SUBLANG_ZULU_SOUTH_AFRICA 0x01 + +#define SORT_DEFAULT 0x0 +#define SORT_INVARIANT_MATH 0x1 +#define SORT_JAPANESE_XJIS 0x0 +#define SORT_JAPANESE_UNICODE 0x1 +#define SORT_JAPANESE_RADICALSTROKE 0x4 +#define SORT_CHINESE_BIG5 0x0 +#define SORT_CHINESE_PRCP 0x0 +#define SORT_CHINESE_UNICODE 0x1 +#define SORT_CHINESE_PRC 0x2 +#define SORT_CHINESE_BOPOMOFO 0x3 +#define SORT_CHINESE_RADICALSTROKE 0x4 +#define SORT_KOREAN_KSC 0x0 +#define SORT_KOREAN_UNICODE 0x1 +#define SORT_GERMAN_PHONE_BOOK 0x1 +#define SORT_HUNGARIAN_DEFAULT 0x0 +#define SORT_HUNGARIAN_TECHNICAL 0x1 +#define SORT_GEORGIAN_TRADITIONAL 0x0 +#define SORT_GEORGIAN_MODERN 0x1 + +#define LANG_SYSTEM_DEFAULT MAKELANGID(LANG_NEUTRAL, SUBLANG_SYS_DEFAULT)) +#define LANG_USER_DEFAULT MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT)) + +#define LOCALE_SYSTEM_DEFAULT MAKELCID(LANG_SYSTEM_DEFAULT, SORT_DEFAULT) +#define LOCALE_USER_DEFAULT MAKELCID(LANG_USER_DEFAULT, SORT_DEFAULT) +#define LOCALE_CUSTOM_DEFAULT MAKELCID(MAKELANGID(LANG_NEUTRAL, SUBLANG_CUSTOM_DEFAULT), SORT_DEFAULT) +#define LOCALE_CUSTOM_UNSPECIFIED MAKELCID(MAKELANGID(LANG_NEUTRAL, SUBLANG_CUSTOM_UNSPECIFIED), SORT_DEFAULT) +#define LOCALE_CUSTOM_UI_DEFAULT MAKELCID(MAKELANGID(LANG_NEUTRAL, SUBLANG_UI_CUSTOM_DEFAULT), SORT_DEFAULT) +#define LOCALE_NEUTRAL MAKELCID(MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), SORT_DEFAULT) +#define LOCALE_INVARIANT MAKELCID(MAKELANGID(LANG_INVARIANT, SUBLANG_NEUTRAL), SORT_DEFAULT) + #ifdef __cplusplus } // extern "C" #endif diff --git a/reactos/include/psdk/winnls.h b/reactos/include/psdk/winnls.h index 8e561b1be24..4a1e55d07be 100644 --- a/reactos/include/psdk/winnls.h +++ b/reactos/include/psdk/winnls.h @@ -116,45 +116,57 @@ extern "C" { #define LOCALE_SABBREVMONTHNAME13 0x100F #define LOCALE_SPOSITIVESIGN 80 #define LOCALE_SNEGATIVESIGN 81 -#define LOCALE_SSCRIPTS 108 +#define LOCALE_SSCRIPTS 108 // FIXME #define LOCALE_IPOSSIGNPOSN 82 #define LOCALE_INEGSIGNPOSN 83 #define LOCALE_IPOSSYMPRECEDES 84 #define LOCALE_IPOSSEPBYSPACE 85 #define LOCALE_INEGSYMPRECEDES 86 #define LOCALE_INEGSEPBYSPACE 87 -#if (WINVER >= 0x0400) #define LOCALE_FONTSIGNATURE 88 #define LOCALE_SISO639LANGNAME 89 #define LOCALE_SISO3166CTRYNAME 90 -#define LOCALE_SNAME 92 -#endif -#if (WINVER >= 0x0600) -#define LOCALE_SSCRIPTS 108 -#endif -#define LOCALE_SYSTEM_DEFAULT 0x800 -#define LOCALE_USER_DEFAULT 0x400 +#define LOCALE_SNAME 92 // FIXME +#if (WINVER >= 0x0600) +#define LOCALE_SNAME 92 +#define LOCALE_SDURATION 93 +#define LOCALE_SKEYBOARDSTOINSTALL 94 +#define LOCALE_SSHORTESTDAYNAME1 96 +#define LOCALE_SSHORTESTDAYNAME2 97 +#define LOCALE_SSHORTESTDAYNAME3 98 +#define LOCALE_SSHORTESTDAYNAME4 99 +#define LOCALE_SSHORTESTDAYNAME5 100 +#define LOCALE_SSHORTESTDAYNAME6 101 +#define LOCALE_SSHORTESTDAYNAME7 102 +#define LOCALE_SISO639LANGNAME2 103 +#define LOCALE_SISO3166CTRYNAME2 104 +#define LOCALE_SNAN 105 +#define LOCALE_SPOSINFINITY 106 +#define LOCALE_SNEGINFINITY 107 +#define LOCALE_SSCRIPTS 108 +#define LOCALE_SPARENT 109 +#define LOCALE_SCONSOLEFALLBACKNAME 110 +#endif /* (WINVER >= 0x0600) */ + +//#if (WINVER >= _WIN32_WINNT_WIN7) #define LOCALE_IREADINGLAYOUT 0x0070 #define LOCALE_INEUTRAL 0x0071 +#define LOCALE_INEGATIVEPERCENT 0x0074 +#define LOCALE_IPOSITIVEPERCENT 0x0075 +#define LOCALE_SPERCENT 0x0076 +#define LOCALE_SPERMILLE 0x0077 +#define LOCALE_SMONTHDAY 0x0078 +#define LOCALE_SSHORTTIME 0x0079 +#define LOCALE_SOPENTYPELANGUAGETAG 0x007a +#define LOCALE_SSORTLOCALE 0x007b +//#endif /* (WINVER >= _WIN32_WINNT_WIN7) */ -#if defined(__GNUC__) -# define LOCALE_NAME_INVARIANT (const WCHAR []){ 0 } -#elif defined(_MSC_VER) -# define LOCALE_NAME_INVARIANT L"" -#else -static const WCHAR LOCALE_NAME_INVARIANT[] = { 0 }; -#endif - -#if defined(__GNUC__) -# define LOCALE_NAME_SYSTEM_DEFAULT (const WCHAR []){'!','s','y','s','-','d','e','f','a','u','l','t','-','l','o','c','a','l','e',0} -#elif defined(_MSC_VER) -# define LOCALE_NAME_SYSTEM_DEFAULT L"!sys-default-locale" -#else -static const WCHAR LOCALE_NAME_SYSTEM_DEFAULT[] = {'!','s','y','s','-','d','e','f','a','u','l','t','-','l','o','c','a','l','e',0}; -#endif - +#if (WINVER >= 0x0600) #define LOCALE_NAME_USER_DEFAULT NULL +#define LOCALE_NAME_INVARIANT L"" +#define LOCALE_NAME_SYSTEM_DEFAULT L"!sys-default-locale" +#endif #define LOCALE_IDEFAULTUNIXCODEPAGE 0x1030 /* Wine extension */ diff --git a/reactos/include/psdk/winnt.h b/reactos/include/psdk/winnt.h index ce49726c784..ed716378f5f 100644 --- a/reactos/include/psdk/winnt.h +++ b/reactos/include/psdk/winnt.h @@ -1460,6 +1460,8 @@ typedef enum { #define LANGIDFROMLCID(l) ((WORD)(l)) #define LANG_SYSTEM_DEFAULT MAKELANGID(LANG_NEUTRAL,SUBLANG_SYS_DEFAULT) #define LANG_USER_DEFAULT MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT) +#define LOCALE_SYSTEM_DEFAULT MAKELCID(LANG_SYSTEM_DEFAULT, SORT_DEFAULT) +#define LOCALE_USER_DEFAULT MAKELCID(LANG_USER_DEFAULT, SORT_DEFAULT) #define LOCALE_NEUTRAL MAKELCID(MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL),SORT_DEFAULT) #define LOCALE_INVARIANT MAKELCID(MAKELANGID(LANG_INVARIANT, SUBLANG_NEUTRAL), SORT_DEFAULT) #define LOCALE_NAME_MAX_LENGTH 85 From 50850105319a9c7e27ffcd7e838a42a81d9cf986 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sun, 1 Jun 2014 11:00:09 +0000 Subject: [PATCH 127/232] [EVENTEVWR] * when displaying message boxes, set the parent to the main window/details dialog instead of using NULL. *add a function for showing the last Win32 error and replace two message boxes with a call to it. *add the ability to save event logs to a file. *add the ability to clear event logs. *In QueryEventMessages(), assign lpSourceLogName and lpComputerName after the call to OpenEventLog, not before. Patch by Ricardo Hanke CORE-7863 #comment Comitted in r63525, thanks svn path=/trunk/; revision=63525 --- .../mscutils/eventvwr/CMakeLists.txt | 2 +- .../applications/mscutils/eventvwr/eventvwr.c | 174 ++++++++++++++++-- .../mscutils/eventvwr/lang/bg-BG.rc | 6 + .../mscutils/eventvwr/lang/de-DE.rc | 6 + .../mscutils/eventvwr/lang/el-GR.rc | 6 + .../mscutils/eventvwr/lang/en-US.rc | 6 + .../mscutils/eventvwr/lang/es-ES.rc | 6 + .../mscutils/eventvwr/lang/fr-FR.rc | 6 + .../mscutils/eventvwr/lang/he-IL.rc | 6 + .../mscutils/eventvwr/lang/it-IT.rc | 6 + .../mscutils/eventvwr/lang/ja-JP.rc | 6 + .../mscutils/eventvwr/lang/ko-KR.rc | 6 + .../mscutils/eventvwr/lang/no-NO.rc | 6 + .../mscutils/eventvwr/lang/pl-PL.rc | 6 + .../mscutils/eventvwr/lang/pt-BR.rc | 6 + .../mscutils/eventvwr/lang/ro-RO.rc | 6 + .../mscutils/eventvwr/lang/ru-RU.rc | 6 + .../mscutils/eventvwr/lang/sk-SK.rc | 6 + .../mscutils/eventvwr/lang/sq-AL.rc | 6 + .../mscutils/eventvwr/lang/sv-SE.rc | 6 + .../mscutils/eventvwr/lang/tr-TR.rc | 6 + .../mscutils/eventvwr/lang/uk-UA.rc | 6 + .../mscutils/eventvwr/lang/zh-CN.rc | 6 + .../applications/mscutils/eventvwr/resource.h | 4 + 24 files changed, 291 insertions(+), 15 deletions(-) diff --git a/reactos/base/applications/mscutils/eventvwr/CMakeLists.txt b/reactos/base/applications/mscutils/eventvwr/CMakeLists.txt index a15680efcd4..fff7e3a7048 100644 --- a/reactos/base/applications/mscutils/eventvwr/CMakeLists.txt +++ b/reactos/base/applications/mscutils/eventvwr/CMakeLists.txt @@ -1,7 +1,7 @@ add_executable(eventvwr eventvwr.c eventvwr.rc) set_module_type(eventvwr win32gui UNICODE) -add_importlibs(eventvwr user32 comctl32 advapi32 msvcrt kernel32) +add_importlibs(eventvwr user32 comctl32 comdlg32 advapi32 msvcrt kernel32) if(MSVC) add_importlibs(eventvwr ntdll) endif() diff --git a/reactos/base/applications/mscutils/eventvwr/eventvwr.c b/reactos/base/applications/mscutils/eventvwr/eventvwr.c index 8d0a019d950..86b7666aa8d 100644 --- a/reactos/base/applications/mscutils/eventvwr/eventvwr.c +++ b/reactos/base/applications/mscutils/eventvwr/eventvwr.c @@ -28,9 +28,11 @@ #include #include #include +#include #include #include #include +#include #include "resource.h" @@ -42,7 +44,7 @@ static const LPWSTR EVENT_SOURCE_APPLICATION = L"Application"; static const LPWSTR EVENT_SOURCE_SECURITY = L"Security"; static const LPWSTR EVENT_SOURCE_SYSTEM = L"System"; -static const WCHAR szWindowClass[] = L"EVENTVWR"; /* the main window class name*/ +static const WCHAR szWindowClass[] = L"EVENTVWR"; /* the main window class name*/ //MessageFile message buffer size #define EVENT_MESSAGE_EVENTTEXT_BUFFER 1024*10 @@ -58,12 +60,15 @@ static const WCHAR szWindowClass[] = L"EVENTVWR"; /* the main window cl HINSTANCE hInst; /* current instance */ WCHAR szTitle[MAX_LOADSTRING]; /* The title bar text */ WCHAR szTitleTemplate[MAX_LOADSTRING]; /* The logged-on title bar text */ +WCHAR szSaveFilter[MAX_LOADSTRING]; /* Filter Mask for the save Dialog */ HWND hwndMainWindow; /* Main window */ HWND hwndListView; /* ListView control */ HWND hwndStatus; /* Status bar */ +HMENU hMainMenu; /* The application's main menu */ WCHAR szStatusBarTemplate[MAX_LOADSTRING]; /* The status bar text */ PEVENTLOGRECORD *g_RecordPtrs = NULL; DWORD g_TotalRecords = 0; +OPENFILENAMEW sfn; LPWSTR lpSourceLogName = NULL; LPWSTR lpComputerName = NULL; @@ -137,6 +142,25 @@ static void FreeRecords(void) g_RecordPtrs = NULL; } +VOID +ShowLastWin32Error(VOID) +{ + DWORD dwError; + LPWSTR lpMessageBuffer; + + dwError = GetLastError(); + FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, + NULL, + dwError, + 0, + (LPWSTR)&lpMessageBuffer, + 0, + NULL); + + MessageBoxW(hwndMainWindow, lpMessageBuffer, szTitle, MB_OK | MB_ICONERROR); + LocalFree(lpMessageBuffer); +} + VOID EventTimeToSystemTime(DWORD EventTime, SYSTEMTIME *pSystemTime) @@ -219,10 +243,7 @@ GetEventMessageFileDLL(IN LPCWSTR lpLogName, } else { - MessageBoxW(NULL, - L"Registry access failed!", - L"Event Log", - MB_OK | MB_ICONINFORMATION); + ShowLastWin32Error(); } if (hSourceKey != NULL) @@ -524,21 +545,18 @@ QueryEventMessages(LPWSTR lpMachineName, dwFlags = EVENTLOG_FORWARDS_READ | EVENTLOG_SEQUENTIAL_READ; - lpSourceLogName = lpLogName; - lpComputerName = lpMachineName; - /* Open the event log. */ hEventLog = OpenEventLogW(lpMachineName, lpLogName); if (hEventLog == NULL) { - MessageBoxW(NULL, - L"Could not open the event log.", - L"Event Log", - MB_OK | MB_ICONINFORMATION); + ShowLastWin32Error(); return FALSE; } + lpSourceLogName = lpLogName; + lpComputerName = lpMachineName; + /* Disable listview redraw */ SendMessage(hwndListView, WM_SETREDRAW, FALSE, 0); @@ -552,6 +570,17 @@ QueryEventMessages(LPWSTR lpMachineName, GetNumberOfEventLogRecords (hEventLog , &dwTotalRecords); g_TotalRecords = dwTotalRecords; + if (dwTotalRecords > 0) + { + EnableMenuItem(hMainMenu, ID_CLEAR_EVENTS, MF_BYCOMMAND | MF_ENABLED); + EnableMenuItem(hMainMenu, ID_SAVE_PROTOCOL, MF_BYCOMMAND | MF_ENABLED); + } + else + { + EnableMenuItem(hMainMenu, ID_CLEAR_EVENTS, MF_BYCOMMAND | MF_GRAYED); + EnableMenuItem(hMainMenu, ID_SAVE_PROTOCOL, MF_BYCOMMAND | MF_GRAYED); + } + g_RecordPtrs = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwTotalRecords * sizeof(PVOID)); /* If we have at least 1000 records show the waiting dialog */ @@ -710,6 +739,97 @@ QueryEventMessages(LPWSTR lpMachineName, } +VOID +SaveProtocol(VOID) +{ + HANDLE hEventLog; + WCHAR szFileName[MAX_PATH]; + + ZeroMemory(szFileName, sizeof(szFileName)); + + sfn.lpstrFile = szFileName; + sfn.nMaxFile = MAX_PATH; + + if (!GetSaveFileNameW(&sfn)) + { + return; + } + + hEventLog = OpenEventLogW(lpComputerName, lpSourceLogName); + if (!hEventLog) + { + ShowLastWin32Error(); + return; + } + + if (!BackupEventLogW(hEventLog, szFileName)) + { + ShowLastWin32Error(); + } + + CloseEventLog(hEventLog); +} + + +BOOL +ClearEvents(VOID) +{ + HANDLE hEventLog; + WCHAR szFileName[MAX_PATH]; + WCHAR szMessage[MAX_LOADSTRING]; + + ZeroMemory(szFileName, sizeof(szFileName)); + ZeroMemory(szMessage, sizeof(szMessage)); + + LoadStringW(hInst, IDS_CLEAREVENTS_MSG, szMessage, MAX_LOADSTRING); + + sfn.lpstrFile = szFileName; + sfn.nMaxFile = MAX_PATH; + + switch (MessageBoxW(hwndMainWindow, szMessage, szTitle, MB_YESNOCANCEL | MB_ICONINFORMATION)) + { + case IDCANCEL: + { + return FALSE; + break; + } + + case IDNO: + { + sfn.lpstrFile = NULL; + break; + } + + case IDYES: + { + if (!GetSaveFileNameW(&sfn)) + { + return FALSE; + } + break; + } + } + + hEventLog = OpenEventLogW(lpComputerName, lpSourceLogName); + if (!hEventLog) + { + ShowLastWin32Error(); + return FALSE; + } + + if (!ClearEventLogW(hEventLog, sfn.lpstrFile)) + { + ShowLastWin32Error(); + CloseEventLog(hEventLog); + return FALSE; + } + + CloseEventLog(hEventLog); + + return TRUE; +} + + VOID Refresh(VOID) { @@ -905,6 +1025,20 @@ InitInstance(HINSTANCE hInstance, lvc.pszText = szTemp; (void)ListView_InsertColumn(hwndListView, 8, &lvc); + // Initialize the save Dialog + ZeroMemory(&sfn, sizeof(sfn)); + ZeroMemory(szSaveFilter, sizeof(szSaveFilter)); + + LoadStringW(hInst, IDS_SAVE_FILTER, szSaveFilter, MAX_LOADSTRING); + + sfn.lStructSize = sizeof(sfn); + sfn.hwndOwner = hwndMainWindow; + sfn.hInstance = hInstance; + sfn.lpstrFilter = szSaveFilter; + sfn.lpstrInitialDir = NULL; + sfn.Flags = OFN_HIDEREADONLY | OFN_SHAREAWARE; + sfn.lpstrDefExt = NULL; + ShowWindow(hwndMainWindow, nCmdShow); UpdateWindow(hwndMainWindow); @@ -934,6 +1068,7 @@ WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) switch (message) { case WM_CREATE: + hMainMenu = GetMenu(hWnd); CheckMenuRadioItem(GetMenu(hWnd), ID_LOG_APPLICATION, ID_LOG_SYSTEM, @@ -1002,6 +1137,17 @@ WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) } break; + case ID_SAVE_PROTOCOL: + SaveProtocol(); + break; + + case ID_CLEAR_EVENTS: + if (ClearEvents()) + { + Refresh(); + } + break; + case IDM_REFRESH: Refresh(); break; @@ -1011,7 +1157,7 @@ WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) break; case IDM_HELP: - MessageBoxW(NULL, + MessageBoxW(hwndMainWindow, L"Help not implemented yet!", L"Event Log", MB_OK | MB_ICONINFORMATION); @@ -1221,7 +1367,7 @@ EventDetails(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) return (INT_PTR)TRUE; case IDHELP: - MessageBoxW(NULL, + MessageBoxW(hDlg, L"Help not implemented yet!", L"Event Log", MB_OK | MB_ICONINFORMATION); diff --git a/reactos/base/applications/mscutils/eventvwr/lang/bg-BG.rc b/reactos/base/applications/mscutils/eventvwr/lang/bg-BG.rc index 6476b51cc86..360802294a2 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/bg-BG.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/bg-BG.rc @@ -8,6 +8,10 @@ BEGIN MENUITEM "&СигурноÑÑ‚", ID_LOG_SECURITY MENUITEM "&Уредба", ID_LOG_SYSTEM MENUITEM SEPARATOR + MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM SEPARATOR + MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED + MENUITEM SEPARATOR MENUITEM "Из&ход", IDM_EXIT END POPUP "Из&глед" @@ -95,6 +99,8 @@ BEGIN IDS_EVENTLOG_AUDIT_FAILURE "Audit Failure" IDS_EVENTLOG_SUCCESS "Success" IDS_EVENTLOG_UNKNOWN_TYPE "Unknown Event" + IDS_CLEAREVENTS_MSG "Do you want to save this event log before clearing it?" + IDS_SAVE_FILTER "Event Log (*.evt)\0*.evt\0" END STRINGTABLE diff --git a/reactos/base/applications/mscutils/eventvwr/lang/de-DE.rc b/reactos/base/applications/mscutils/eventvwr/lang/de-DE.rc index e7e87e97711..e9c0234f69d 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/de-DE.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/de-DE.rc @@ -10,6 +10,10 @@ BEGIN MENUITEM "&Sicherheit", ID_LOG_SECURITY MENUITEM "&System", ID_LOG_SYSTEM MENUITEM SEPARATOR + MENUITEM "Protokoll s&peichern...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM SEPARATOR + MENUITEM "Alle E&reignisse löschen", ID_CLEAR_EVENTS, GRAYED + MENUITEM SEPARATOR MENUITEM "B&eenden", IDM_EXIT END POPUP "&Ansicht" @@ -97,6 +101,8 @@ BEGIN IDS_EVENTLOG_AUDIT_FAILURE "Audit Fehlgeschlagen" IDS_EVENTLOG_SUCCESS "Erfolgreich" IDS_EVENTLOG_UNKNOWN_TYPE "Unbekanntes Ereignis" + IDS_CLEAREVENTS_MSG "Möchten Sie dieses Protokoll vor dem Löschen speichern?" + IDS_SAVE_FILTER "Ereignisprotokoll (*.evt)\0*.evt\0" END STRINGTABLE diff --git a/reactos/base/applications/mscutils/eventvwr/lang/el-GR.rc b/reactos/base/applications/mscutils/eventvwr/lang/el-GR.rc index 56dd3abafc3..e4e757bdcb5 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/el-GR.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/el-GR.rc @@ -10,6 +10,10 @@ BEGIN MENUITEM "&Ασφάλεια", ID_LOG_SECURITY MENUITEM "&ΣÏστημα", ID_LOG_SYSTEM MENUITEM SEPARATOR + MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM SEPARATOR + MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED + MENUITEM SEPARATOR MENUITEM "Έ&ξοδος", IDM_EXIT END POPUP "&Εμφάνιση" @@ -97,6 +101,8 @@ BEGIN IDS_EVENTLOG_AUDIT_FAILURE "Audit Failure" IDS_EVENTLOG_SUCCESS "Επιτυχία" IDS_EVENTLOG_UNKNOWN_TYPE "Άγνωστο συμβάν" + IDS_CLEAREVENTS_MSG "Do you want to save this event log before clearing it?" + IDS_SAVE_FILTER "Event Log (*.evt)\0*.evt\0" END STRINGTABLE diff --git a/reactos/base/applications/mscutils/eventvwr/lang/en-US.rc b/reactos/base/applications/mscutils/eventvwr/lang/en-US.rc index 3ab08cbe328..a02247904ac 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/en-US.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/en-US.rc @@ -16,6 +16,10 @@ BEGIN MENUITEM "&Security", ID_LOG_SECURITY MENUITEM "&System", ID_LOG_SYSTEM MENUITEM SEPARATOR + MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM SEPARATOR + MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED + MENUITEM SEPARATOR MENUITEM "E&xit", IDM_EXIT END POPUP "&View" @@ -103,6 +107,8 @@ BEGIN IDS_EVENTLOG_AUDIT_FAILURE "Audit Failure" IDS_EVENTLOG_SUCCESS "Success" IDS_EVENTLOG_UNKNOWN_TYPE "Unknown Event" + IDS_CLEAREVENTS_MSG "Do you want to save this event log before clearing it?" + IDS_SAVE_FILTER "Event Log (*.evt)\0*.evt\0" END STRINGTABLE diff --git a/reactos/base/applications/mscutils/eventvwr/lang/es-ES.rc b/reactos/base/applications/mscutils/eventvwr/lang/es-ES.rc index 5195415d4ee..d7dfb8bde9b 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/es-ES.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/es-ES.rc @@ -10,6 +10,10 @@ BEGIN MENUITEM "&Seguridad", ID_LOG_SECURITY MENUITEM "&Sistema", ID_LOG_SYSTEM MENUITEM SEPARATOR + MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM SEPARATOR + MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED + MENUITEM SEPARATOR MENUITEM "S&alir", IDM_EXIT END POPUP "&Ver" @@ -97,6 +101,8 @@ BEGIN IDS_EVENTLOG_AUDIT_FAILURE "Auditoria Fallida" IDS_EVENTLOG_SUCCESS "Acierto" IDS_EVENTLOG_UNKNOWN_TYPE "Evento Desconocido" + IDS_CLEAREVENTS_MSG "Do you want to save this event log before clearing it?" + IDS_SAVE_FILTER "Event Log (*.evt)\0*.evt\0" END STRINGTABLE diff --git a/reactos/base/applications/mscutils/eventvwr/lang/fr-FR.rc b/reactos/base/applications/mscutils/eventvwr/lang/fr-FR.rc index 42732e33cad..f123ba5deb6 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/fr-FR.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/fr-FR.rc @@ -10,6 +10,10 @@ BEGIN MENUITEM "&Sécurité", ID_LOG_SECURITY MENUITEM "&Système", ID_LOG_SYSTEM MENUITEM SEPARATOR + MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM SEPARATOR + MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED + MENUITEM SEPARATOR MENUITEM "Quitter", IDM_EXIT END POPUP "Affichage" @@ -97,6 +101,8 @@ BEGIN IDS_EVENTLOG_AUDIT_FAILURE "Échec de l'audit" IDS_EVENTLOG_SUCCESS "Succès" IDS_EVENTLOG_UNKNOWN_TYPE "Événement Inconnu" + IDS_CLEAREVENTS_MSG "Do you want to save this event log before clearing it?" + IDS_SAVE_FILTER "Event Log (*.evt)\0*.evt\0" END STRINGTABLE diff --git a/reactos/base/applications/mscutils/eventvwr/lang/he-IL.rc b/reactos/base/applications/mscutils/eventvwr/lang/he-IL.rc index 0dffb05f056..aafdb5bbf15 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/he-IL.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/he-IL.rc @@ -10,6 +10,10 @@ BEGIN MENUITEM "×בטחה", ID_LOG_SECURITY MENUITEM "מערכת", ID_LOG_SYSTEM MENUITEM SEPARATOR + MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM SEPARATOR + MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED + MENUITEM SEPARATOR MENUITEM "יצי××”", IDM_EXIT END POPUP "תצוגה" @@ -97,6 +101,8 @@ BEGIN IDS_EVENTLOG_AUDIT_FAILURE "Audit Failure" IDS_EVENTLOG_SUCCESS "הצלחה" IDS_EVENTLOG_UNKNOWN_TYPE "×ירוע ×œ× ×™×“×•×¢" + IDS_CLEAREVENTS_MSG "Do you want to save this event log before clearing it?" + IDS_SAVE_FILTER "Event Log (*.evt)\0*.evt\0" END STRINGTABLE diff --git a/reactos/base/applications/mscutils/eventvwr/lang/it-IT.rc b/reactos/base/applications/mscutils/eventvwr/lang/it-IT.rc index 24a758707f8..d1543a1626c 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/it-IT.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/it-IT.rc @@ -10,6 +10,10 @@ BEGIN MENUITEM "&Sicurezza", ID_LOG_SECURITY MENUITEM "&Sistema", ID_LOG_SYSTEM MENUITEM SEPARATOR + MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM SEPARATOR + MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED + MENUITEM SEPARATOR MENUITEM "E&sci", IDM_EXIT END POPUP "&Vista" @@ -97,6 +101,8 @@ BEGIN IDS_EVENTLOG_AUDIT_FAILURE "Audit fallita" IDS_EVENTLOG_SUCCESS "Successo" IDS_EVENTLOG_UNKNOWN_TYPE "Evento sconosciuto" + IDS_CLEAREVENTS_MSG "Do you want to save this event log before clearing it?" + IDS_SAVE_FILTER "Event Log (*.evt)\0*.evt\0" END STRINGTABLE diff --git a/reactos/base/applications/mscutils/eventvwr/lang/ja-JP.rc b/reactos/base/applications/mscutils/eventvwr/lang/ja-JP.rc index 07af81219b4..5fb5194e80d 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/ja-JP.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/ja-JP.rc @@ -10,6 +10,10 @@ BEGIN MENUITEM "セキュリティ(&S)", ID_LOG_SECURITY MENUITEM "システム(&S)", ID_LOG_SYSTEM MENUITEM SEPARATOR + MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM SEPARATOR + MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED + MENUITEM SEPARATOR MENUITEM "終了(&X)", IDM_EXIT END POPUP "表示(&V)" @@ -97,6 +101,8 @@ BEGIN IDS_EVENTLOG_AUDIT_FAILURE "失敗ã®ç›£æŸ»" IDS_EVENTLOG_SUCCESS "æˆåŠŸ" IDS_EVENTLOG_UNKNOWN_TYPE "䏿˜Žãªã‚¤ãƒ™ãƒ³ãƒˆ" + IDS_CLEAREVENTS_MSG "Do you want to save this event log before clearing it?" + IDS_SAVE_FILTER "Event Log (*.evt)\0*.evt\0" END STRINGTABLE diff --git a/reactos/base/applications/mscutils/eventvwr/lang/ko-KR.rc b/reactos/base/applications/mscutils/eventvwr/lang/ko-KR.rc index a8ed9d67c5e..5d02fc087ba 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/ko-KR.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/ko-KR.rc @@ -10,6 +10,10 @@ BEGIN MENUITEM "보안(&S)", ID_LOG_SECURITY MENUITEM "시스템(&S)", ID_LOG_SYSTEM MENUITEM SEPARATOR + MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM SEPARATOR + MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED + MENUITEM SEPARATOR MENUITEM "종료(&X)", IDM_EXIT END POPUP "보기(&V)" @@ -97,6 +101,8 @@ BEGIN IDS_EVENTLOG_AUDIT_FAILURE "ê°ì‚¬ 실패" IDS_EVENTLOG_SUCCESS "성공" IDS_EVENTLOG_UNKNOWN_TYPE "알려지지 ì•Šì€ ì´ë²¤íЏ" + IDS_CLEAREVENTS_MSG "Do you want to save this event log before clearing it?" + IDS_SAVE_FILTER "Event Log (*.evt)\0*.evt\0" END STRINGTABLE diff --git a/reactos/base/applications/mscutils/eventvwr/lang/no-NO.rc b/reactos/base/applications/mscutils/eventvwr/lang/no-NO.rc index 79e28b4353a..f66eca5bc68 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/no-NO.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/no-NO.rc @@ -8,6 +8,10 @@ BEGIN MENUITEM "&Sikkerhet", ID_LOG_SECURITY MENUITEM "&System", ID_LOG_SYSTEM MENUITEM SEPARATOR + MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM SEPARATOR + MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED + MENUITEM SEPARATOR MENUITEM "A&vslutt", IDM_EXIT END POPUP "&Vis" @@ -95,6 +99,8 @@ BEGIN IDS_EVENTLOG_AUDIT_FAILURE "Revisjon misslykkes" IDS_EVENTLOG_SUCCESS "Suksess" IDS_EVENTLOG_UNKNOWN_TYPE "Ukjent hendelse" + IDS_CLEAREVENTS_MSG "Do you want to save this event log before clearing it?" + IDS_SAVE_FILTER "Event Log (*.evt)\0*.evt\0" END STRINGTABLE diff --git a/reactos/base/applications/mscutils/eventvwr/lang/pl-PL.rc b/reactos/base/applications/mscutils/eventvwr/lang/pl-PL.rc index 1c6732b64bf..549269c523a 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/pl-PL.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/pl-PL.rc @@ -10,6 +10,10 @@ BEGIN MENUITEM "&Zabezpieczenia", ID_LOG_SECURITY MENUITEM "&System", ID_LOG_SYSTEM MENUITEM SEPARATOR + MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM SEPARATOR + MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED + MENUITEM SEPARATOR MENUITEM "&WyjÅ›cie", IDM_EXIT END POPUP "&PodglÄ…d" @@ -97,6 +101,8 @@ BEGIN IDS_EVENTLOG_AUDIT_FAILURE "Nieudany Audyt" IDS_EVENTLOG_SUCCESS "Sukces" IDS_EVENTLOG_UNKNOWN_TYPE "Zdarzenie nieznane" + IDS_CLEAREVENTS_MSG "Do you want to save this event log before clearing it?" + IDS_SAVE_FILTER "Event Log (*.evt)\0*.evt\0" END STRINGTABLE diff --git a/reactos/base/applications/mscutils/eventvwr/lang/pt-BR.rc b/reactos/base/applications/mscutils/eventvwr/lang/pt-BR.rc index a8bd572175f..47f33b21bc9 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/pt-BR.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/pt-BR.rc @@ -10,6 +10,10 @@ BEGIN MENUITEM "S&egurança", ID_LOG_SECURITY MENUITEM "&Sistema", ID_LOG_SYSTEM MENUITEM SEPARATOR + MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM SEPARATOR + MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED + MENUITEM SEPARATOR MENUITEM "&Sair", IDM_EXIT END POPUP "&Visualizar" @@ -97,6 +101,8 @@ BEGIN IDS_EVENTLOG_AUDIT_FAILURE "Falha na Auditoria" IDS_EVENTLOG_SUCCESS "Sucesso" IDS_EVENTLOG_UNKNOWN_TYPE "Evento Desconhecido" + IDS_CLEAREVENTS_MSG "Do you want to save this event log before clearing it?" + IDS_SAVE_FILTER "Event Log (*.evt)\0*.evt\0" END STRINGTABLE diff --git a/reactos/base/applications/mscutils/eventvwr/lang/ro-RO.rc b/reactos/base/applications/mscutils/eventvwr/lang/ro-RO.rc index 62683009ecc..473f8755e5c 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/ro-RO.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/ro-RO.rc @@ -10,6 +10,10 @@ BEGIN MENUITEM "Se&curitate", ID_LOG_SECURITY MENUITEM "&Sistem", ID_LOG_SYSTEM MENUITEM SEPARATOR + MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM SEPARATOR + MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED + MENUITEM SEPARATOR MENUITEM "I&eÈ™ire", IDM_EXIT END POPUP "&AfiÈ™are" @@ -97,6 +101,8 @@ BEGIN IDS_EVENTLOG_AUDIT_FAILURE "EÈ™ec audit" IDS_EVENTLOG_SUCCESS "Succes" IDS_EVENTLOG_UNKNOWN_TYPE "Eveniment necunoscut" + IDS_CLEAREVENTS_MSG "Do you want to save this event log before clearing it?" + IDS_SAVE_FILTER "Event Log (*.evt)\0*.evt\0" END STRINGTABLE diff --git a/reactos/base/applications/mscutils/eventvwr/lang/ru-RU.rc b/reactos/base/applications/mscutils/eventvwr/lang/ru-RU.rc index 4da2d57fcc9..8a1a767751f 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/ru-RU.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/ru-RU.rc @@ -10,6 +10,10 @@ BEGIN MENUITEM "&БезопаÑноÑти", ID_LOG_SECURITY MENUITEM "&СиÑтемы", ID_LOG_SYSTEM MENUITEM SEPARATOR + MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM SEPARATOR + MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED + MENUITEM SEPARATOR MENUITEM "Ð’&ыход", IDM_EXIT END POPUP "&Вид" @@ -97,6 +101,8 @@ BEGIN IDS_EVENTLOG_AUDIT_FAILURE "Ðудит отказов" IDS_EVENTLOG_SUCCESS "УÑпех" IDS_EVENTLOG_UNKNOWN_TYPE "ÐеизвеÑтное Ñобытие" + IDS_CLEAREVENTS_MSG "Do you want to save this event log before clearing it?" + IDS_SAVE_FILTER "Event Log (*.evt)\0*.evt\0" END STRINGTABLE diff --git a/reactos/base/applications/mscutils/eventvwr/lang/sk-SK.rc b/reactos/base/applications/mscutils/eventvwr/lang/sk-SK.rc index eb3a99f1f95..a751ec062bc 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/sk-SK.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/sk-SK.rc @@ -13,6 +13,10 @@ BEGIN MENUITEM "&Security", ID_LOG_SECURITY MENUITEM "&System", ID_LOG_SYSTEM MENUITEM SEPARATOR + MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM SEPARATOR + MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED + MENUITEM SEPARATOR MENUITEM "&SkonÄiÅ¥", IDM_EXIT END POPUP "&ZobraziÅ¥" @@ -100,6 +104,8 @@ BEGIN IDS_EVENTLOG_AUDIT_FAILURE "Kontrola zlyhala" IDS_EVENTLOG_SUCCESS "Úspech" //Success IDS_EVENTLOG_UNKNOWN_TYPE "Neznáma udalosÅ¥" + IDS_CLEAREVENTS_MSG "Do you want to save this event log before clearing it?" + IDS_SAVE_FILTER "Event Log (*.evt)\0*.evt\0" END STRINGTABLE diff --git a/reactos/base/applications/mscutils/eventvwr/lang/sq-AL.rc b/reactos/base/applications/mscutils/eventvwr/lang/sq-AL.rc index 65e869f3b37..bb0be3429f3 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/sq-AL.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/sq-AL.rc @@ -16,6 +16,10 @@ BEGIN MENUITEM "&Siguri", ID_LOG_SECURITY MENUITEM "&Sistemi", ID_LOG_SYSTEM MENUITEM SEPARATOR + MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM SEPARATOR + MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED + MENUITEM SEPARATOR MENUITEM "Dil", IDM_EXIT END POPUP "&Vëzhgo" @@ -103,6 +107,8 @@ BEGIN IDS_EVENTLOG_AUDIT_FAILURE "Audit dështoj" IDS_EVENTLOG_SUCCESS "Sukses" IDS_EVENTLOG_UNKNOWN_TYPE "Ngjraje e panjohur" + IDS_CLEAREVENTS_MSG "Do you want to save this event log before clearing it?" + IDS_SAVE_FILTER "Event Log (*.evt)\0*.evt\0" END STRINGTABLE diff --git a/reactos/base/applications/mscutils/eventvwr/lang/sv-SE.rc b/reactos/base/applications/mscutils/eventvwr/lang/sv-SE.rc index b9241cb28c6..f9eb385f189 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/sv-SE.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/sv-SE.rc @@ -10,6 +10,10 @@ BEGIN MENUITEM "&Säkerhet", ID_LOG_SECURITY MENUITEM "&System", ID_LOG_SYSTEM MENUITEM SEPARATOR + MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM SEPARATOR + MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED + MENUITEM SEPARATOR MENUITEM "A&vsluta", IDM_EXIT END POPUP "&Visa" @@ -97,6 +101,8 @@ BEGIN IDS_EVENTLOG_AUDIT_FAILURE "Revision misslyckades" IDS_EVENTLOG_SUCCESS "Uppgift lyckades" IDS_EVENTLOG_UNKNOWN_TYPE "Okänd händelse" + IDS_CLEAREVENTS_MSG "Do you want to save this event log before clearing it?" + IDS_SAVE_FILTER "Event Log (*.evt)\0*.evt\0" END STRINGTABLE diff --git a/reactos/base/applications/mscutils/eventvwr/lang/tr-TR.rc b/reactos/base/applications/mscutils/eventvwr/lang/tr-TR.rc index 50cc321270c..e60c19c3f34 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/tr-TR.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/tr-TR.rc @@ -16,6 +16,10 @@ BEGIN MENUITEM "&Güvenlik", ID_LOG_SECURITY MENUITEM "&Dizge", ID_LOG_SYSTEM MENUITEM SEPARATOR + MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM SEPARATOR + MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED + MENUITEM SEPARATOR MENUITEM "&Çıkış", IDM_EXIT END POPUP "&Görünüm" @@ -103,6 +107,8 @@ BEGIN IDS_EVENTLOG_AUDIT_FAILURE "BaÅŸarısızlık Denetimi" IDS_EVENTLOG_SUCCESS "BaÅŸarı" IDS_EVENTLOG_UNKNOWN_TYPE "Bilinmeyen Olay" + IDS_CLEAREVENTS_MSG "Do you want to save this event log before clearing it?" + IDS_SAVE_FILTER "Event Log (*.evt)\0*.evt\0" END STRINGTABLE diff --git a/reactos/base/applications/mscutils/eventvwr/lang/uk-UA.rc b/reactos/base/applications/mscutils/eventvwr/lang/uk-UA.rc index 501a705b7f3..82c61cab7a1 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/uk-UA.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/uk-UA.rc @@ -10,6 +10,10 @@ BEGIN MENUITEM "&ЗахиÑÑ‚", ID_LOG_SECURITY MENUITEM "&СиÑтема", ID_LOG_SYSTEM MENUITEM SEPARATOR + MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM SEPARATOR + MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED + MENUITEM SEPARATOR MENUITEM "Ð’&ихід", IDM_EXIT END POPUP "&ВиглÑд" @@ -97,6 +101,8 @@ BEGIN IDS_EVENTLOG_AUDIT_FAILURE "Ðудит відмов" IDS_EVENTLOG_SUCCESS "УÑпіх" IDS_EVENTLOG_UNKNOWN_TYPE "Ðевідома подіÑ" + IDS_CLEAREVENTS_MSG "Do you want to save this event log before clearing it?" + IDS_SAVE_FILTER "Event Log (*.evt)\0*.evt\0" END STRINGTABLE diff --git a/reactos/base/applications/mscutils/eventvwr/lang/zh-CN.rc b/reactos/base/applications/mscutils/eventvwr/lang/zh-CN.rc index aee2a57aee3..524cf3dd552 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/zh-CN.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/zh-CN.rc @@ -10,6 +10,10 @@ BEGIN MENUITEM "安全日志(&S)", ID_LOG_SECURITY MENUITEM "系统日志(&Y)", ID_LOG_SYSTEM MENUITEM SEPARATOR + MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM SEPARATOR + MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED + MENUITEM SEPARATOR MENUITEM "退出(&X)", IDM_EXIT END POPUP "查看(&V)" @@ -97,6 +101,8 @@ BEGIN IDS_EVENTLOG_AUDIT_FAILURE "审核失败" IDS_EVENTLOG_SUCCESS "æˆåŠŸ" IDS_EVENTLOG_UNKNOWN_TYPE "未知事件" + IDS_CLEAREVENTS_MSG "Do you want to save this event log before clearing it?" + IDS_SAVE_FILTER "Event Log (*.evt)\0*.evt\0" END STRINGTABLE diff --git a/reactos/base/applications/mscutils/eventvwr/resource.h b/reactos/base/applications/mscutils/eventvwr/resource.h index 66e3032a9d7..b98a189c02e 100644 --- a/reactos/base/applications/mscutils/eventvwr/resource.h +++ b/reactos/base/applications/mscutils/eventvwr/resource.h @@ -46,6 +46,8 @@ #define ID_VIEW_REFRESH 32780 #define ID_REFRESH 32781 #define IDM_REFRESH 32782 +#define ID_CLEAR_EVENTS 32783 +#define ID_SAVE_PROTOCOL 32784 /* String IDs */ #define IDS_APP_TITLE 103 @@ -59,6 +61,8 @@ #define IDS_EVENTLOG_AUDIT_FAILURE 255 #define IDS_EVENTLOG_SUCCESS 256 #define IDS_EVENTLOG_UNKNOWN_TYPE 257 +#define IDS_CLEAREVENTS_MSG 258 +#define IDS_SAVE_FILTER 259 #define IDS_COLUMNTYPE 300 #define IDS_COLUMNDATE 301 From 94f5ab6df4546d0e0bda551d8f9d45498f92b7a6 Mon Sep 17 00:00:00 2001 From: Kamil Hornicek Date: Sun, 1 Jun 2014 11:11:07 +0000 Subject: [PATCH 128/232] [EVENTVWR] - sync and translate the czech resources svn path=/trunk/; revision=63526 --- reactos/base/applications/mscutils/eventvwr/lang/cs-CZ.rc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/reactos/base/applications/mscutils/eventvwr/lang/cs-CZ.rc b/reactos/base/applications/mscutils/eventvwr/lang/cs-CZ.rc index 873bb14f6e1..a939a0724e8 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/cs-CZ.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/cs-CZ.rc @@ -8,6 +8,10 @@ BEGIN MENUITEM "&ZabezpeÄení", ID_LOG_SECURITY MENUITEM "&Systém", ID_LOG_SYSTEM MENUITEM SEPARATOR + MENUITEM "Uložit &Protokol...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM SEPARATOR + MENUITEM "&Odstranit události", ID_CLEAR_EVENTS, GRAYED + MENUITEM SEPARATOR MENUITEM "&Konec", IDM_EXIT END POPUP "&Zobrazit" @@ -95,6 +99,8 @@ BEGIN IDS_EVENTLOG_AUDIT_FAILURE "Audit selhal" IDS_EVENTLOG_SUCCESS "ÚspÄ›ch" IDS_EVENTLOG_UNKNOWN_TYPE "Neznámá událost" + IDS_CLEAREVENTS_MSG "Chcete tento protokol pÅ™ed odstranÄ›ním uložit?" + IDS_SAVE_FILTER "Protokol událostí (*.evt)\0*.evt\0" END STRINGTABLE From a1545a1c310a9920365f22132bb4f5cb27393b2f Mon Sep 17 00:00:00 2001 From: Daniel Reimer Date: Sun, 1 Jun 2014 11:58:21 +0000 Subject: [PATCH 129/232] [RAPPS] - Database update and some missed sourceforge mirror fixes by me and myself. - rapps: (for database) Many Improvements and Many Fixes by Erdem Ersoy CORE-7710 #resolve #comment Committed, thx for your help. svn path=/trunk/; revision=63527 --- .../base/applications/rapps/rapps/abyss.txt | 4 +- .../base/applications/rapps/rapps/bochs.txt | 6 +- .../base/applications/rapps/rapps/boswars.txt | 2 +- .../applications/rapps/rapps/codeblocks.txt | 2 +- .../rapps/rapps/codeblocks_gcc.txt | 2 +- .../rapps/rapps/codeblocks_gcc_2.txt | 2 +- .../rapps/rapps/devcpp_mingw32.txt | 6 +- .../rapps/rapps/devcpp_tdm_gcc_x64.txt | 6 +- .../rapps/rapps/doublecommander.txt | 6 +- .../base/applications/rapps/rapps/dplus.txt | 2 +- .../applications/rapps/rapps/dvdwritenow.txt | 2 +- reactos/base/applications/rapps/rapps/fap.txt | 14 ++--- .../base/applications/rapps/rapps/fira.txt | 10 ++-- .../base/applications/rapps/rapps/firefox.txt | 58 +++++++++---------- .../applications/rapps/rapps/lazaruside.txt | 10 ++-- .../applications/rapps/rapps/libreoffice.txt | 14 ++--- .../base/applications/rapps/rapps/mcwin32.txt | 2 +- .../applications/rapps/rapps/mirandaim.txt | 14 ++--- reactos/base/applications/rapps/rapps/mpc.txt | 6 +- reactos/base/applications/rapps/rapps/npp.txt | 6 +- .../applications/rapps/rapps/openoffice.txt | 24 ++++---- .../base/applications/rapps/rapps/opera.txt | 14 ++--- .../base/applications/rapps/rapps/peazip.txt | 6 +- .../base/applications/rapps/rapps/putty.txt | 2 +- .../base/applications/rapps/rapps/python.txt | 14 ++--- .../base/applications/rapps/rapps/qmmp.txt | 12 ++-- .../base/applications/rapps/rapps/rosbe.txt | 2 +- .../base/applications/rapps/rapps/scite.txt | 14 ++--- .../applications/rapps/rapps/sdl_runtime.txt | 2 +- .../applications/rapps/rapps/seamonkey.txt | 24 ++++---- .../applications/rapps/rapps/sumatrapdf.txt | 6 +- .../applications/rapps/rapps/thunderbird.txt | 28 ++++----- .../rapps/rapps/totalcommander.txt | 12 ++-- .../applications/rapps/rapps/utorrent.txt | 4 +- .../base/applications/rapps/rapps/vb5run.txt | 4 +- .../base/applications/rapps/rapps/vb6run.txt | 4 +- .../applications/rapps/rapps/vc2005sp1run.txt | 2 +- .../applications/rapps/rapps/vc2008sp1run.txt | 2 +- .../applications/rapps/rapps/vc2010run.txt | 2 +- .../base/applications/rapps/rapps/vc6run.txt | 2 +- .../applications/rapps/rapps/winboard.txt | 7 ++- reactos/base/applications/rapps/rapps/zaz.txt | 4 +- reactos/cmake/config.cmake | 2 +- 43 files changed, 184 insertions(+), 183 deletions(-) diff --git a/reactos/base/applications/rapps/rapps/abyss.txt b/reactos/base/applications/rapps/rapps/abyss.txt index 5ad87798927..9e0e0f6349b 100644 --- a/reactos/base/applications/rapps/rapps/abyss.txt +++ b/reactos/base/applications/rapps/rapps/abyss.txt @@ -1,9 +1,9 @@ -; UTF-8 +; UTF-8 ; Turkish translation by Erdem Ersoy (eersoy93) (erdemersoy@live.com) [Section] Name = Abyss Web server X1 -Version = 2.9.0.1 +Version = 2.9.3.2 Licence = Freeware Description = Abyss Web Server enables you to host your Web sites on your computer. It supports secure SSL/TLS connections (HTTPS) as well as a wide range of Web technologies. It can also run advanced PHP, Perl, Python, ASP, ASP.NET, and Ruby on Rails Web applications, which can be backed by databases such as MySQL, SQLite, MS SQL Server, MS Access, or Oracle. Size = 2.1 MB diff --git a/reactos/base/applications/rapps/rapps/bochs.txt b/reactos/base/applications/rapps/rapps/bochs.txt index 3709d9ca419..445e35730ca 100644 --- a/reactos/base/applications/rapps/rapps/bochs.txt +++ b/reactos/base/applications/rapps/rapps/bochs.txt @@ -1,16 +1,16 @@ -; UTF-8 +; UTF-8 ; Polish translation by wojo664 ; Turkish translation by Erdem Ersoy (eersoy93) (erdemersoy@live.com) [Section] Name = Bochs -Version = 2.6.2 +Version = 2.6.5 Licence = LGPL v2 Description = Bochs is a highly portable open source IA-32 (x86) PC emulator written in C++, that runs on most popular platforms. Size = 4.7 MB Category = 15 URLSite = http://bochs.sourceforge.net/ -URLDownload = http://download.sourceforge.net/project/bochs/bochs/2.6.2/Bochs-2.6.2.exe +URLDownload = http://download.sourceforge.net/project/bochs/bochs/2.6.5/Bochs-2.6.5.exe CDPath = none [Section.0407] diff --git a/reactos/base/applications/rapps/rapps/boswars.txt b/reactos/base/applications/rapps/rapps/boswars.txt index 4d66d757fcb..bc586dafcbb 100644 --- a/reactos/base/applications/rapps/rapps/boswars.txt +++ b/reactos/base/applications/rapps/rapps/boswars.txt @@ -27,5 +27,5 @@ Description = Bos Wars e o strategie în timp real, futuristă. Pentru a porni j Size = 62,3 Mo [Section.041f] -Description = Bos Wars, gelecekçi ve gerçek zamanlı bir izlem oyunudur. Oyunu baÅŸlatmak için Microsoft Visual C++ 2008 Yürütücüsü'nü kurunuz. +Description = Bos Wars, gelecekçi ve gerçek zamanlı bir izlem oyunudur. Oyunu baÅŸlatmak için Microsoft Visual C++ 2008 Yürütücü'yü kurunuz. Size = 62,3 MB diff --git a/reactos/base/applications/rapps/rapps/codeblocks.txt b/reactos/base/applications/rapps/rapps/codeblocks.txt index 82257b02454..25ce4191c34 100644 --- a/reactos/base/applications/rapps/rapps/codeblocks.txt +++ b/reactos/base/applications/rapps/rapps/codeblocks.txt @@ -9,7 +9,7 @@ Description = A open source, cross-platform, powerful IDE. It doesn't contain a Size = 29.2 MB Category = 7 URLSite = http://www.codeblocks.org/ -URLDownload = http://sourceforge.net/projects/codeblocks/files/Binaries/13.12/Windows/codeblocks-13.12-setup.exe +URLDownload = http://download.sourceforge.net/project/codeblocks/Binaries/13.12/Windows/codeblocks-13.12-setup.exe CDPath = none [Section.0407] diff --git a/reactos/base/applications/rapps/rapps/codeblocks_gcc.txt b/reactos/base/applications/rapps/rapps/codeblocks_gcc.txt index 70dc894a960..de4d727bda7 100644 --- a/reactos/base/applications/rapps/rapps/codeblocks_gcc.txt +++ b/reactos/base/applications/rapps/rapps/codeblocks_gcc.txt @@ -9,7 +9,7 @@ Description = A open source, cross-platform, powerful IDE. It contains TDM-GCC ( Size = 97.8 MB Category = 7 URLSite = http://www.codeblocks.org/ -URLDownload = http://sourceforge.net/projects/codeblocks/files/Binaries/13.12/Windows/codeblocks-13.12mingw-setup.exe +URLDownload = http://download.sourceforge.net/project/codeblocks/Binaries/13.12/Windows/codeblocks-13.12mingw-setup.exe CDPath = none [Section.0407] diff --git a/reactos/base/applications/rapps/rapps/codeblocks_gcc_2.txt b/reactos/base/applications/rapps/rapps/codeblocks_gcc_2.txt index e7678186859..8b287d335ca 100644 --- a/reactos/base/applications/rapps/rapps/codeblocks_gcc_2.txt +++ b/reactos/base/applications/rapps/rapps/codeblocks_gcc_2.txt @@ -9,7 +9,7 @@ Description = A open source, cross-platform, powerful IDE. It contains TDM-GCC ( Size = 100 MB Category = 7 URLSite = http://www.codeblocks.org/ -URLDownload = http://sourceforge.net/projects/codeblocks/files/Binaries/13.12/Windows/codeblocks-13.12mingw-setup-TDM-GCC-481.exe +URLDownload = http://download.sourceforge.net/project/codeblocks/Binaries/13.12/Windows/codeblocks-13.12mingw-setup-TDM-GCC-481.exe CDPath = none [Section.0407] diff --git a/reactos/base/applications/rapps/rapps/devcpp_mingw32.txt b/reactos/base/applications/rapps/rapps/devcpp_mingw32.txt index eeab44f6c2a..55463540924 100644 --- a/reactos/base/applications/rapps/rapps/devcpp_mingw32.txt +++ b/reactos/base/applications/rapps/rapps/devcpp_mingw32.txt @@ -1,15 +1,15 @@ -; UTF-8 +; UTF-8 ; Turkish translation by Erdem Ersoy (eersoy93) (erdemersoy@live.com) [Section] Name = Orwell Dev-C++ MinGW32 -Version = 5.6.2 +Version = 5.6.3 Licence = GPLv2 Description = A maintained version of Dev-C++. It contains MinGW32 compiler. Size = 60.2 MB Category = 7 URLSite = http://orwelldevcpp.blogspot.com/ -URLDownload = http://sourceforge.net/projects/orwelldevcpp/files/Setup%20Releases/Dev-Cpp%205.6.2%20MinGW%204.8.1%20Setup.exe +URLDownload = http://download.sourceforge.net/project/orwelldevcpp/Setup%20Releases/Dev-Cpp%205.6.3%20MinGW%204.8.1%20Setup.exe CDPath = none [Section.0407] diff --git a/reactos/base/applications/rapps/rapps/devcpp_tdm_gcc_x64.txt b/reactos/base/applications/rapps/rapps/devcpp_tdm_gcc_x64.txt index ed2f12c3687..1264f0aab44 100644 --- a/reactos/base/applications/rapps/rapps/devcpp_tdm_gcc_x64.txt +++ b/reactos/base/applications/rapps/rapps/devcpp_tdm_gcc_x64.txt @@ -1,15 +1,15 @@ -; UTF-8 +; UTF-8 ; Turkish translation by Erdem Ersoy (eersoy93) (erdemersoy@live.com) [Section] Name = Orwell Dev-C++ TDM GCC x64 -Version = 5.6.2 +Version = 5.6.3 Licence = GPLv2 Description = A maintained version of Dev-C++. It contains 64 bit TDM-GCC compiler. Size = 44.8 MB Category = 7 URLSite = http://orwelldevcpp.blogspot.com/ -URLDownload = http://sourceforge.net/projects/orwelldevcpp/files/Setup%20Releases/Dev-Cpp%205.6.2%20TDM-GCC%20x64%204.8.1%20Setup.exe +URLDownload = http://download.sourceforge.net/project/orwelldevcpp/Setup%20Releases/Dev-Cpp%205.6.3%20TDM-GCC%20x64%204.8.1%20Setup.exe CDPath = none [Section.0407] diff --git a/reactos/base/applications/rapps/rapps/doublecommander.txt b/reactos/base/applications/rapps/rapps/doublecommander.txt index e2c80a5c1b9..2541aeef471 100644 --- a/reactos/base/applications/rapps/rapps/doublecommander.txt +++ b/reactos/base/applications/rapps/rapps/doublecommander.txt @@ -1,15 +1,15 @@ -; UTF-8 +; UTF-8 ; Turkish translation by Erdem Ersoy (eersoy93) (erdemersoy@live.com) [Section] Name = Double Commander -Version = 0.5.9 Beta +Version = 0.5.10 Beta Licence = GPL Description = Double Commander is an open source file manager with two panels side by side. You need 7-Zip or a similar Utility to extract it. Size = 7.6 MB Category = 12 URLSite = http://doublecmd.sourceforge.net/ -URLDownload = http://download.sourceforge.net/project/doublecmd/DC%20for%20Windows%2032%20bit/Double%20Commander%200.5.9%20beta/doublecmd-0.5.9.i386-win32.exe +URLDownload = http://download.sourceforge.net/project/doublecmd/DC%20for%20Windows%2032%20bit/Double%20Commander%200.5.10%20beta/doublecmd-0.5.10.i386-win32.exe CDPath = none [Section.0407] diff --git a/reactos/base/applications/rapps/rapps/dplus.txt b/reactos/base/applications/rapps/rapps/dplus.txt index a5c94d616a4..ce6f72e46fb 100644 --- a/reactos/base/applications/rapps/rapps/dplus.txt +++ b/reactos/base/applications/rapps/rapps/dplus.txt @@ -9,7 +9,7 @@ Description = DPlus is a graphical web browser with an emphasis on security, per Size = 1.36 MB Category = 5 URLSite = http://dplus-browser.sourceforge.net/ -URLDownload = http://heanet.dl.sourceforge.net/project/dplus-browser/Releases/dplus-0.5b/dplus-0.5b-setup.exe +URLDownload = http://download.sourceforge.net/project/dplus-browser/Releases/dplus-0.5b/dplus-0.5b-setup.exe CDPath = none [Section.0410] diff --git a/reactos/base/applications/rapps/rapps/dvdwritenow.txt b/reactos/base/applications/rapps/rapps/dvdwritenow.txt index 2795a805b1b..daf15f10e4a 100644 --- a/reactos/base/applications/rapps/rapps/dvdwritenow.txt +++ b/reactos/base/applications/rapps/rapps/dvdwritenow.txt @@ -33,5 +33,5 @@ URLSite = http://dwn.alter.org.ua/ru/ [Section.041f] Licence = Ücretsiz -Description = Ücretsiz bir doÄŸrudan CD/DVD kaydedici yazılımı. Kurulduktan sonra CD/DVD RW'lerinizi USB Flash veyâ çıkarılabilir sâbit disk sürücüleri olarak kullanabilirsiniz. Bununla birlikte UDF kütük dizgesiyle kaydedilmiÅŸ CD/DVD RW'lere yazabilirsiniz. Ayrıca Microsoft DVD−ROM'ları, Ahead InCD ile kaydedilmiÅŸ RW diskleri gibi baÅŸka yazılımlarla oluÅŸturulmuÅŸ UDF diskleri okuyabilirsiniz. Kurmak için bir ZIP çıkarma izlencesi gerekir. +Description = Ücretsiz bir doÄŸrudan CD/DVD kaydedici yazılımı. Kurulduktan sonra CD/DVD RW'lerinizi, USB Flash veyâ çıkarılabilir sâbit disk sürücüleri olarak kullanabilirsiniz. Bununla birlikte UDF kütük dizgesiyle kaydedilmiÅŸ CD/DVD RW'lere yazabilirsiniz. Ayrıca Microsoft DVD−ROM'ları, Ahead InCD ile kaydedilmiÅŸ RW diskleri gibi baÅŸka yazılımlarla oluÅŸturulmuÅŸ UDF diskleri okuyabilirsiniz. Kurmak için bir ZIP çıkarma izlencesi gerekir. Size = 1,2 MB diff --git a/reactos/base/applications/rapps/rapps/fap.txt b/reactos/base/applications/rapps/rapps/fap.txt index 730dcdd65f4..4307548e526 100644 --- a/reactos/base/applications/rapps/rapps/fap.txt +++ b/reactos/base/applications/rapps/rapps/fap.txt @@ -1,15 +1,15 @@ -; UTF-8 +; UTF-8 ; Turkish translation by Erdem Ersoy (eersoy93) (erdemersoy@live.com) [Section] Name = Fox Audio Player -Version = 0.10.0 +Version = 0.10.2 Licence = GPL Description = Simple and lightweight audio player. -Size = 1.89 MB +Size = 1.9 MB Category = 1 URLSite = http://foxaudioplayer.sourceforge.net/ -URLDownload = http://svn.reactos.org/packages/fap-0.10.0-win32-bin.exe +URLDownload = http://svn.reactos.org/packages/fap-0.10.2-win32.exe CDPath = none [Section.0407] @@ -20,7 +20,7 @@ Description = Reproductor de audio simple y ligero. [Section.040c] Description = Lecteur audio simple et léger. -Size = 1,89 Mo +Size = 1,9 Mo [Section.0410] Description = Un semplice e leggero lettore audio. @@ -33,12 +33,12 @@ Description = Prosty i lekki odtwarzacz audio. [Section.0418] Description = Un lector audio simplu È™i uÈ™or. -Size = 1,89 Mo +Size = 1,9 Mo [Section.041f] Name = Fox Ses Oynatıcısı Description = Bayağı ve yeÄŸni ses oynatıcısı. -Size = 1,89 MB +Size = 1,9 MB [Section.0422] Description = ПроÑтий та маленький програвач аудіо файлів. diff --git a/reactos/base/applications/rapps/rapps/fira.txt b/reactos/base/applications/rapps/rapps/fira.txt index beee410b87d..4dde9d6beb2 100644 --- a/reactos/base/applications/rapps/rapps/fira.txt +++ b/reactos/base/applications/rapps/rapps/fira.txt @@ -1,13 +1,13 @@ -; UTF-8 +; UTF-8 ; Polish translation by wojo664 ; Turkish translation by Erdem Ersoy (eersoy93) (erdemersoy@live.com) [Section] Name = Mozilla Fira Font -Version = 1.0 +Version = 3.1 Licence = Unknown Description = Mozilla Fira Font Pack, Includes Mono and Sans fonts. Unzip in the ReactOS's folder. -Size = 543 kB +Size = 1.1 MB Category = 14 URLSite = https://github.com/mozilla/Fira URLDownload = http://svn.reactos.org/packages/Fira.exe @@ -28,10 +28,10 @@ Description = Pakiet czcionek Mozilla Fira Font, zawiera czcionki Mono i Sans. W [Section.0418] Licence = Nespecificată Description = Pachetul Mozilla Fira Font, include fonturile Mono È™i Sans. DezarhivaÈ›i în dosarul „ReactOSâ€. (FIXME) -Size = 543 ko +Size = 1,1 Mo [Section.041f] Name = Mozilla Fira Yazı Tipi Licence = Bilinmiyor Description = Mozilla Fira Yazı Tipi Paketi, Mono ve Sans yazı tiplerini kapsar. ReactOS'un dizinine çıkartınız. -Size = 543 KB +Size = 1,1 MB diff --git a/reactos/base/applications/rapps/rapps/firefox.txt b/reactos/base/applications/rapps/rapps/firefox.txt index fee9955b3c5..425b7a5d192 100644 --- a/reactos/base/applications/rapps/rapps/firefox.txt +++ b/reactos/base/applications/rapps/rapps/firefox.txt @@ -1,84 +1,84 @@ -; UTF-8 +; UTF-8 ; Turkish translation by Erdem Ersoy (eersoy93) (erdemersoy@live.com) [Section] -Name = Mozilla Firefox 28 -Version = 28.0 +Name = Mozilla Firefox 29 +Version = 29.0.1 Licence = MPL/GPL/LGPL Description = The most popular and one of the best free Web Browsers out there. -Size = 22.9 MB +Size = 27.7 MB Category = 5 URLSite = http://www.mozilla.org/en-US/ -URLDownload = http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/28.0/win32/en-US/Firefox%20Setup%2028.0.exe +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/29.0.1/win32/en-US/Firefox%20Setup%2029.0.1.exe CDPath = none [Section.0407] Description = Der populärste und einer der besten freien Webbrowser. -Size = 22.8 MB +Size = 27.5 MB URLSite = http://www.mozilla.org/de/ -URLDownload = http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/28.0/win32/de/Firefox%20Setup%2028.0.exe +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/29.0.1/win32/de/Firefox%20Setup%2029.0.1.exe [Section.040a] Description = El más popular y uno de los mejores navegadores web gratuitos que hay. -Size = 22.7 MB +Size = 27.5 MB URLSite = http://www.mozilla.org/es-ES/ -URLDownload = http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/28.0/win32/es-ES/Firefox%20Setup%2028.0.exe +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/29.0.1/win32/es-ES/Firefox%20Setup%2029.0.1.exe [Section.040c] Description = Le navigateur web gratuit le plus populaire et l'un des meilleurs. -Size = 23,0 Mo +Size = 27,8 Mo URLSite = http://www.mozilla.org/fr/ -URLDownload = http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/28.0/win32/fr/Firefox%20Setup%2028.0.exe +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/29.0.1/win32/fr/Firefox%20Setup%2029.0.1.exe [Section.0410] Description = Il più popolare e uno dei migliori web browser gratuiti. -Size = 22.7 MB +Size = 27.5 MB URLSite = http://www.mozilla.org/it/ -URLDownload = http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/28.0/win32/it/Firefox%20Setup%2028.0.exe +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/29.0.1/win32/it/Firefox%20Setup%2029.0.1.exe [Section.0413] Description = De meest populaire en een van de beste gratis Web browsers. -Size = 23.4 MB +Size = 28.2 MB URLSite = http://www.mozilla.org/nl/ -URLDownload = http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/28.0/win32/nl/Firefox%20Setup%2028.0.exe +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/29.0.1/win32/nl/Firefox%20Setup%2029.0.1.exe [Section.0414] Description = Mest populære og best ogsÃ¥ gratis nettleserene der ute. -Size = 22.8 MB -URLDownload = http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/28.0/win32/nb-NO/Firefox%20Setup%2028.0.exe +Size = 27.5 MB +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/29.0.1/win32/nb-NO/Firefox%20Setup%2029.0.1.exe [Section.0415] Description = Najpopularniejsza i jedna z najlepszych darmowych przeglÄ…darek internetowych. -Size = 23.7 MB +Size = 28.4 MB URLSite = http://www.mozilla.org/pl/ -URLDownload = http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/28.0/win32/pl/Firefox%20Setup%2028.0.exe +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/29.0.1/win32/pl/Firefox%20Setup%2029.0.1.exe [Section.0418] Description = Cel mai popular È™i unul dintre cele mai bune navigatoare web gratuite existente. -Size = 23,3 Mo +Size = 28,0 Mo URLSite = http://www.mozilla.org/ro/ -URLDownload = http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/28.0/win32/ro/Firefox%20Setup%2028.0.exe +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/29.0.1/win32/ro/Firefox%20Setup%2029.0.1.exe [Section.0419] Description = Один из Ñамых популÑрных и лучших беÑплатных браузеров. -Size = 23,2 MB +Size = 27.9 MB URLSite = http://www.mozilla.org/ru/ -URLDownload = http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/28.0/win32/ru/Firefox%20Setup%2028.0.exe +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/29.0.1/win32/ru/Firefox%20Setup%2029.0.1.exe [Section.041b] Description = Najpopulárnejší a jeden z najlepších slobodný webových prehliadaÄov. -Size = 23,4 MB +Size = 28.2 MB URLSite = http://www.mozilla.org/sk/ -URLDownload = http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/28.0/win32/sk/Firefox%20Setup%2028.0.exe +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/29.0.1/win32/sk/Firefox%20Setup%2029.0.1.exe [Section.041f] Description = Özgür Umûmî AÄŸ tarayıcıları arasında en tutulanı ve en iyilerinden biri. -Size = 22,8 MB +Size = 27,5 MB URLSite = http://www.mozilla.org/tr/ -URLDownload = http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/28.0/win32/tr/Firefox%20Setup%2028.0.exe +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/29.0.1/win32/tr/Firefox%20Setup%2029.0.1.exe [Section.0422] Description = ÐайпопулÑрніший та один з кращих безплатних веб-браузерів. -Size = 23,2 MB +Size = 27.9 MB URLSite = http://www.mozilla.org/uk/ -URLDownload = http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/28.0/win32/uk/Firefox%20Setup%2028.0.exe +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/29.0.1/win32/uk/Firefox%20Setup%2029.0.1.exe diff --git a/reactos/base/applications/rapps/rapps/lazaruside.txt b/reactos/base/applications/rapps/rapps/lazaruside.txt index a0ef0845afe..53381f3cc44 100644 --- a/reactos/base/applications/rapps/rapps/lazaruside.txt +++ b/reactos/base/applications/rapps/rapps/lazaruside.txt @@ -1,16 +1,16 @@ -; UTF-8 +; UTF-8 ; Polish translation by wojo664 ; Turkish translation by Erdem Ersoy (eersoy93) (erdemersoy@live.com) [Section] Name = Lazarus -Version = 1.2 +Version = 1.2.2 Licence = modified LGPL, GPL Description = A cross-platform integrated development environment (IDE) that lets you create visual (GUI) and non-visual Object Pascal programs, and uses the Free Pascal compiler to generate your executable. -Size = 112 MB +Size = 114 MB Category = 7 URLSite = http://www.lazarus.freepascal.org/ -URLDownload = http://download.sourceforge.net/project/lazarus/Lazarus%20Windows%2032%20bits/Lazarus%201.2/lazarus-1.2.0-fpc-2.6.2-win32.exe +URLDownload = http://download.sourceforge.net/project/lazarus/Lazarus%20Windows%2032%20bits/Lazarus%201.2.2/lazarus-1.2.2-fpc-2.6.4-win32.exe CDPath = none [Section.0407] @@ -25,7 +25,7 @@ Description = Un ambiente di sviluppo integrato (IDE) cross-platform che consent [Section.0418] Licence = GPL, LGPL modificată Description = Un mediu integrat de dezvoltare (IDE) multi-platformă care vă permite crearea de programe Object Pascal, atât vizuale (GUI) cât È™i ne-vizuale, È™i utilizează compilatorul Free Pascal pentru a genera executabile. -Size = 112 Mo +Size = 114 Mo [Section.041f] Licence = DeÄŸiÅŸtirilmiÅŸ LGPL, GPL diff --git a/reactos/base/applications/rapps/rapps/libreoffice.txt b/reactos/base/applications/rapps/rapps/libreoffice.txt index 31ff17d102b..4ca07becdda 100644 --- a/reactos/base/applications/rapps/rapps/libreoffice.txt +++ b/reactos/base/applications/rapps/rapps/libreoffice.txt @@ -1,15 +1,15 @@ -; UTF-8 +; UTF-8 ; Turkish translation by Erdem Ersoy (eersoy93) (erdemersoy@live.com) [Section] Name = LibreOffice -Version = 4.2.3 +Version = 4.2.4 Licence = LGPL Description = A powerful and open source office suite. It has been forked from OpenOffice. -Size = 211.0 MB +Size = 209.3 MB Category = 6 URLSite = http://www.documentfoundation.org/ -URLDownload = http://download.documentfoundation.org/libreoffice/stable/4.2.3/win/x86/LibreOffice_4.2.3_Win_x86.msi +URLDownload = http://download.documentfoundation.org/libreoffice/stable/4.2.4/win/x86/LibreOffice_4.2.4_Win_x86.msi CDPath = none [Section.0407] @@ -20,7 +20,7 @@ Description = La suite de ofimática de código abierto. (FIXME) [Section.040c] Description = Précédemment appelé OpenOffice. Suite bureautique open source. (FIXME) -Size = 211,0 Mo +Size = 209,3 Mo [Section.0410] Description = Precedentemente chiamato OpenOffice. Open Source Office Suite. (FIXME) @@ -33,11 +33,11 @@ Description = Otwarty pakiet biurowy. (FIXME) [Section.0418] Description = Fostul OpenOffice. Suita de aplicaÈ›ii de birotică open-source. (FIXME) -Size = 211,0 Mo +Size = 209,3 Mo [Section.041f] Description = Güçlü ve açık kaynak bir büro takımı. OpenOffice'ten çatallanılmıştır. -Size = 211,0 MB +Size = 209,3 MB [Section.0422] Description = Відкритий офіÑний пакет. (FIXME) diff --git a/reactos/base/applications/rapps/rapps/mcwin32.txt b/reactos/base/applications/rapps/rapps/mcwin32.txt index 086cc7618b1..da08dec77c6 100644 --- a/reactos/base/applications/rapps/rapps/mcwin32.txt +++ b/reactos/base/applications/rapps/rapps/mcwin32.txt @@ -9,7 +9,7 @@ Description = 32-bit Windows port of GNU Midnight Commander. Size = 2.35 MB Category = 12 URLSite = http://sourceforge.net/projects/mcwin32/ -URLDownload = http://optimate.dl.sourceforge.net/project/mcwin32/mcwin32-build183-setup.exe +URLDownload = http://download.sourceforge.net/project/mcwin32/mcwin32-build183-setup.exe CDPath = none [Section.0410] diff --git a/reactos/base/applications/rapps/rapps/mirandaim.txt b/reactos/base/applications/rapps/rapps/mirandaim.txt index 145d7d66582..afe7ebbcb97 100644 --- a/reactos/base/applications/rapps/rapps/mirandaim.txt +++ b/reactos/base/applications/rapps/rapps/mirandaim.txt @@ -1,15 +1,15 @@ -; UTF-8 +; UTF-8 ; Turkish translation by Erdem Ersoy (eersoy93) (erdemersoy@live.com) [Section] Name = Miranda IM -Version = 0.10.22 +Version = 0.10.23 Licence = GPL Description = Open source multiprotocol instant messaging application - May not work completely. -Size = 2.8 MB +Size = 3.8 MB Category = 5 URLSite = http://www.miranda-im.org/ -URLDownload = http://files.miranda-im.org/stable/0.10.22.0/miranda-im-v0.10.22-unicode.exe +URLDownload = http://files.miranda-im.org/stable/0.10.23.0/miranda-im-v0.10.23-unicode.exe CDPath = none [Section.0407] @@ -20,7 +20,7 @@ Description = Aplicación de mensajería instantánea multiprotocolo de código [Section.040c] Description = Application de messagerie instantannée multi-protocoles open source - pourrait ne pas fonctionner complètement. -Size = 2,8 Mo +Size = 3,8 Mo [Section.0410] Description = Multi-protocollo open source per applicazioni di messaggistica istantanea - potrebbe non funzionare del tutto. @@ -33,11 +33,11 @@ Description = Otwarty komunikator internetowy, obsÅ‚ugujÄ…cy wiele różnych pro [Section.0418] Description = AplicaÈ›ie de mesagerie instant multiprotocol (open-source) - posibil cu limitări în funcÈ›ionalitate. -Size = 2,8 Mo +Size = 3,8 Mo [Section.041f] Description = Açık kaynak, çoklu iletiÅŸim kâideli, evgin iletileÅŸme uygulaması. Eksiksiz olarak çalışmayabilir. -Size = 2,8 MB +Size = 3,8 MB [Section.0422] Description = Відкрита мультипротокольна програма миттєвих повідомлень - може не працювати повніÑтю. diff --git a/reactos/base/applications/rapps/rapps/mpc.txt b/reactos/base/applications/rapps/rapps/mpc.txt index 1f1f1d6f519..d02be1dc9e4 100644 --- a/reactos/base/applications/rapps/rapps/mpc.txt +++ b/reactos/base/applications/rapps/rapps/mpc.txt @@ -1,15 +1,15 @@ -; UTF-8 +; UTF-8 ; Turkish translation by Erdem Ersoy (eersoy93) (erdemersoy@live.com) [Section] Name = Media Player Classic Home Cinema -Version = 1.7.4 +Version = 1.7.5 Licence = GPL Description = A media player. Size = 10.1 MB Category = 2 URLSite = http://mpc-hc.org/ -URLDownload = http://download.sourceforge.net/project/mpc-hc/MPC%20HomeCinema%20-%20Win32/MPC-HC_v1.7.4_x86/MPC-HC.1.7.4.x86.exe +URLDownload = http://download.sourceforge.net/project/mpc-hc/MPC%20HomeCinema%20-%20Win32/MPC-HC_v1.7.5_x86/MPC-HC.1.7.5.x86.exe CDPath = none [Section.0407] diff --git a/reactos/base/applications/rapps/rapps/npp.txt b/reactos/base/applications/rapps/rapps/npp.txt index eb9e917d3e8..1789aee6f58 100644 --- a/reactos/base/applications/rapps/rapps/npp.txt +++ b/reactos/base/applications/rapps/rapps/npp.txt @@ -1,15 +1,15 @@ -; UTF-8 +; UTF-8 ; Turkish translation by Erdem Ersoy (eersoy93) (erdemersoy@live.com) [Section] Name = Notepad++ -Version = 6.5.5 +Version = 6.6.3 Licence = GPL Description = A text editor. Size = 7.3 MB Category = 6 URLSite = http://notepad-plus-plus.org/ -URLDownload = http://download.tuxfamily.org/notepadplus/6.5.5/npp.6.5.5.Installer.exe +URLDownload = http://download.tuxfamily.org/notepadplus/6.6.3/npp.6.6.3.Installer.exe CDPath = none [Section.0407] diff --git a/reactos/base/applications/rapps/rapps/openoffice.txt b/reactos/base/applications/rapps/rapps/openoffice.txt index 3e18dc4de54..b7f0daef081 100644 --- a/reactos/base/applications/rapps/rapps/openoffice.txt +++ b/reactos/base/applications/rapps/rapps/openoffice.txt @@ -1,52 +1,52 @@ -; UTF-8 +; UTF-8 ; Turkish translation by Erdem Ersoy (eersoy93) (erdemersoy@live.com) [Section] -Name = OpenOffice 4.0 -Version = 4.0.1 +Name = OpenOffice 4.1 +Version = 4.1.0 Licence = LGPL Description = The open source office suite. Size = 136.79 MB Category = 6 URLSite = http://www.openoffice.org/ -URLDownload = http://download.sourceforge.net/project/openofficeorg.mirror/4.0.1/binaries/en-US/Apache_OpenOffice_4.0.1_Win_x86_install_en-US.exe +URLDownload = http://download.sourceforge.net/project/openofficeorg.mirror/4.1.0/binaries/en-US/Apache_OpenOffice_4.1.0_Win_x86_install_en-US.exe CDPath = none [Section.0407] Description = DIE Open Source Office Suite. (FIXME) Size = 154.88 MB URLSite = http://www.openoffice.org/de/ -URLDownload = http://download.sourceforge.net/project/openofficeorg.mirror/4.0.1/binaries/de/Apache_OpenOffice_4.0.1_Win_x86_install_de.exe +URLDownload = http://download.sourceforge.net/project/openofficeorg.mirror/4.1.0/binaries/de/Apache_OpenOffice_4.1.0_Win_x86_install_de.exe [Section.040a] Description = La suite de ofimática de código abierto. Size = 126.29 MB URLSite = http://www.openoffice.org/es/ -URLDownload = http://download.sourceforge.net/project/openofficeorg.mirror/4.0.1/binaries/es/Apache_OpenOffice_4.0.1_Win_x86_install_es.exe +URLDownload = http://download.sourceforge.net/project/openofficeorg.mirror/4.1.0/binaries/es/Apache_OpenOffice_4.1.0_Win_x86_install_es.exe [Section.040c] Description = LA suite bureautique open source. Size = 127,22 Mo URLSite = http://www.openoffice.org/fr/ -URLDownload = http://download.sourceforge.net/project/openofficeorg.mirror/4.0.1/binaries/fr/Apache_OpenOffice_4.0.1_Win_x86_install_fr.exe +URLDownload = http://download.sourceforge.net/project/openofficeorg.mirror/4.1.0/binaries/fr/Apache_OpenOffice_4.1.0_Win_x86_install_fr.exe [Section.0410] Description = La suite di office Open Source. Size = 132.39 MB URLSite = http://www.openoffice.org/it/ -URLDownload = http://download.sourceforge.net/project/openofficeorg.mirror/4.0.1/binaries/it/Apache_OpenOffice_4.0.1_Win_x86_install_it.exe +URLDownload = http://download.sourceforge.net/project/openofficeorg.mirror/4.1.0/binaries/it/Apache_OpenOffice_4.1.0_Win_x86_install_it.exe [Section.0413] Description = Open-bron Office Pakket. (FIXME) Size = 132.11 MB URLSite = http://www.openoffice.org/nl/ -URLDownload = http://download.sourceforge.net/project/openofficeorg.mirror/4.0.1/binaries/nl/Apache_OpenOffice_4.0.1_Win_x86_install_nl.exe +URLDownload = http://download.sourceforge.net/project/openofficeorg.mirror/4.1.0/binaries/nl/Apache_OpenOffice_4.1.0_Win_x86_install_nl.exe [Section.0415] Description = Otwarty pakiet biurowy. Size = 127.47 MB URLSite = http://www.openoffice.org/pl/ -URLDownload = http://download.sourceforge.net/project/openofficeorg.mirror/4.0.1/binaries/pl/Apache_OpenOffice_4.0.1_Win_x86_install_pl.exe +URLDownload = http://download.sourceforge.net/project/openofficeorg.mirror/4.1.0/binaries/pl/Apache_OpenOffice_4.1.0_Win_x86_install_pl.exe [Section.0418] Description = Suita de aplicaÈ›ii de birotică open-source. @@ -57,7 +57,7 @@ URLSite = http://www.openoffice.org/ro/ Description = Bir açık kaynak büro takımı. Size = 124,36 MB URLSite = http://www.openoffice.org/tr/ -URLDownload = http://download.sourceforge.net/project/openofficeorg.mirror/4.0.1/binaries/tr/Apache_OpenOffice_4.0.1_Win_x86_install_tr.exe +URLDownload = http://download.sourceforge.net/project/openofficeorg.mirror/4.1.0/binaries/tr/Apache_OpenOffice_4.1.0_Win_x86_install_tr.exe [Section.0422] Description = Відкритий офіÑний пакет. @@ -68,4 +68,4 @@ URLSite = http://www.openoffice.org/ua/ Description = Open-bron Office Pakket. (FIXME) Size = 132.11 MB URLSite = http://www.openoffice.org/nl/ -URLDownload = http://download.sourceforge.net/project/openofficeorg.mirror/4.0.1/binaries/nl/Apache_OpenOffice_4.0.1_Win_x86_install_nl.exe +URLDownload = http://download.sourceforge.net/project/openofficeorg.mirror/4.1.0/binaries/nl/Apache_OpenOffice_4.1.0_Win_x86_install_nl.exe diff --git a/reactos/base/applications/rapps/rapps/opera.txt b/reactos/base/applications/rapps/rapps/opera.txt index 4e86e6748e3..38fcabbd6ab 100644 --- a/reactos/base/applications/rapps/rapps/opera.txt +++ b/reactos/base/applications/rapps/rapps/opera.txt @@ -1,15 +1,15 @@ -; UTF-8 +; UTF-8 ; Turkish translation by Erdem Ersoy (eersoy93) (erdemersoy@live.com) [Section] Name = Opera -Version = 12.16 +Version = 12.17 Licence = Freeware Description = The popular Opera Browser with many advanced features and including a Mail and BitTorrent client. -Size = 12.56 MB +Size = 12.57 MB Category = 5 URLSite = http://www.opera.com/ -URLDownload = http://ftp.opera.com/pub/opera/win/1216/int/Opera_1216_int_Setup.exe +URLDownload = http://ftp.opera.com/pub/opera/win/1217/int/Opera_1217_int_Setup.exe CDPath = none [Section.0405] @@ -23,7 +23,7 @@ Description = Popular navegador web con muchas características avanzadas e incl [Section.040c] Description = Le populaire navigateur Opera avec beaucoup de fonctionnalités avancées, incluant un client mail et BitTorrent. -Size = 12,56 Mo +Size = 12,57 Mo [Section.0410] Description = Il famoso browser Opera con funzionalità avanzate come un client BitTorrent integrato e la gestione delle Mail. @@ -37,7 +37,7 @@ Description = Popularna przeglÄ…darka internetowa z wieloma zaawansowanymi funkc [Section.0418] Licence = Gratuită Description = Navigatorul popular Opera cu multe funcÈ›ionalități avansate incluzând poÈ™tă electronică È™i un client de BitTorrent. -Size = 12,56 Mo +Size = 12,57 Mo [Section.0419] Description = ПопулÑрный браузер Ñо многими дополнительными возможноÑÑ‚Ñми, включающий клиентов почты и BitTorrent. @@ -45,7 +45,7 @@ Description = ПопулÑрный браузер Ñо многими допол [Section.041f] Licence = Ücretsiz Description = Bir posta ve BitTorrent istemcisini kapsayan birçok geliÅŸmiÅŸ husûsiyetle, tutulan Opera Tarayıcı. -Size = 12,56 MB +Size = 12,57 MB [Section.0422] Description = ПопулÑрний браузер з багатьма додатковими можливоÑÑ‚Ñми, Ñкий включає в Ñебе поштовий та BitTorrent клієнти. diff --git a/reactos/base/applications/rapps/rapps/peazip.txt b/reactos/base/applications/rapps/rapps/peazip.txt index 73b6dbb03db..5ab4aa06a87 100644 --- a/reactos/base/applications/rapps/rapps/peazip.txt +++ b/reactos/base/applications/rapps/rapps/peazip.txt @@ -1,15 +1,15 @@ -; UTF-8 +; UTF-8 ; Turkish translation by Erdem Ersoy (eersoy93) (erdemersoy@live.com) [Section] Name = PeaZip -Version = 5.3.0 +Version = 5.3.1 Licence = LGPL v3, OpenCandy EULA Description = PeaZip is a free, cross-platform, open source file and archive manager. It supports over 150 archive formats. Size = 5.8 MB Category = 12 URLSite = http://peazip.sourceforge.net/ -URLDownload = http://sourceforge.net/projects/peazip/files/5.3.0/peazip-5.3.0.WINDOWS.exe +URLDownload = http://download.sourceforge.net/project/peazip/5.3.1/peazip-5.3.1.WINDOWS.exe CDPath = none [Section.0407] diff --git a/reactos/base/applications/rapps/rapps/putty.txt b/reactos/base/applications/rapps/rapps/putty.txt index fe722146a1a..84c56761457 100644 --- a/reactos/base/applications/rapps/rapps/putty.txt +++ b/reactos/base/applications/rapps/rapps/putty.txt @@ -36,7 +36,7 @@ Description = Un client gratuit de SSH, Telnet, rlogin, and TCP brut. Size = 1,78 Mo [Section.041f] -Description = Özgür bir SSH, Telnet, rlogin ve iÅŸlenmemiÅŸ TCP istemcisi. +Description = Ücretsiz bir SSH, Telnet, rlogin ve iÅŸlenmemiÅŸ TCP istemcisi. Size = 1,78 MB [Section.0422] diff --git a/reactos/base/applications/rapps/rapps/python.txt b/reactos/base/applications/rapps/rapps/python.txt index b89b1f3dffb..c05adef8109 100644 --- a/reactos/base/applications/rapps/rapps/python.txt +++ b/reactos/base/applications/rapps/rapps/python.txt @@ -1,15 +1,15 @@ -; UTF-8 +; UTF-8 ; Turkish translation by Erdem Ersoy (eersoy93) (erdemersoy@live.com) [Section] Name = Python 3 -Version = 3.4.0 +Version = 3.4.1 Licence = GPL/LGPL Description = A remarkably powerful dynamic programming language. -Size = 23.4 MB +Size = 23.3 MB Category = 7 URLSite = http://www.python.org/ -URLDownload = http://www.python.org/ftp/python/3.4.0/python-3.4.0.msi +URLDownload = http://www.python.org/ftp/python/3.4.1/python-3.4.1.msi CDPath = none [Section.0407] @@ -20,7 +20,7 @@ Description = Un lenguaje de programación dinámico sumamente potente. [Section.040c] Description = Un langage de programmation dynamique remarquablement puissant. -Size = 23,4 Mo +Size = 23,3 Mo [Section.0410] Description = Un Linguaggio di programmazione dinamico e potente. @@ -33,11 +33,11 @@ Description = Potęży i dynamiczny jÄ™zyk programowania. [Section.0418] Description = Un limbaj de programare dinamic È™i puternic. -Size = 23,4 Mo +Size = 23,3 Mo [Section.041f] Description = Dikkat çekici, güçlü ve devingen bir izlenceleme dili. -Size = 23,4 MB +Size = 23,3 MB [Section.0422] Description = Дуже потужна динамічна мова програмуваннÑ. diff --git a/reactos/base/applications/rapps/rapps/qmmp.txt b/reactos/base/applications/rapps/rapps/qmmp.txt index 574e6fc1f95..ef7cb476bee 100644 --- a/reactos/base/applications/rapps/rapps/qmmp.txt +++ b/reactos/base/applications/rapps/rapps/qmmp.txt @@ -1,16 +1,16 @@ -; UTF-8 +; UTF-8 ; Polish translation by wojo664 ; Turkish translation by Erdem Ersoy (eersoy93) (erdemersoy@live.com) [Section] Name = Qmmp (Qt-based Multimedia Player) -Version = 0.7.3 +Version = 0.7.7 Licence = GPL Description = Qmmp is an audio-player, written with the help of the Qt library. The user interface is similar to WinAMP or XMMS. Alternative user interfaces also are available. -Size = 16.0 MB +Size = 10.5 MB Category = 1 URLSite = http://qmmp.ylsoftware.com/index.php -URLDownload = http://qmmp.ylsoftware.com/files/windows/qmmp-0.7.3-win32.exe +URLDownload = http://qmmp.ylsoftware.com/files/windows/qmmp-0.7.7-win32.exe CDPath = none [Section.0407] @@ -24,7 +24,7 @@ Description = Gmmp to odtwarzacz audio, napisany z pomocÄ… biblioteki Qt. Interf [Section.0418] Description = Qmmp este un lector audio, ce utilizează biblioteca QT. InterfaÈ›a de utilizare e asemănătoare cu cea din WinAMP sau XMMS. De asemenea sunt disponibile interfeÈ›e de utilizare alternative. -Size = 16,0 Mo +Size = 10,5 Mo [Section.0419] Description = Ðудиоплеер Qmmp (Qt-based Multimedia Player). @@ -32,4 +32,4 @@ Description = Ðудиоплеер Qmmp (Qt-based Multimedia Player). [Section.041f] Name = Qmmp (Qt Tabanlı Çoklu Ortam Oynatıcısı) Description = Qmmp, Qt kitaplığının yardımıyla yazılmış bir ses oynatıcısıdır. Kullanıcı arayüzü WinAMP'a ve XMMS'ye benzer. BaÅŸka kullanıcı arayüzleri de vardır. -Size = 16,0 MB +Size = 10,5 MB diff --git a/reactos/base/applications/rapps/rapps/rosbe.txt b/reactos/base/applications/rapps/rapps/rosbe.txt index 962526d96b5..acb5093f961 100644 --- a/reactos/base/applications/rapps/rapps/rosbe.txt +++ b/reactos/base/applications/rapps/rapps/rosbe.txt @@ -9,7 +9,7 @@ Description = Allows you to build the ReactOS Source. For more instructions see Size = 28.3 MB Category = 7 URLSite = http://reactos.org/wiki/Build_Environment -URLDownload = http://downloads.sourceforge.net/reactos/RosBE-2.1.1.exe +URLDownload = http://download.sourceforge.net/reactos/RosBE-2.1.1.exe CDPath = none [Section.0405] diff --git a/reactos/base/applications/rapps/rapps/scite.txt b/reactos/base/applications/rapps/rapps/scite.txt index e51ffc902c9..09b89c5c45a 100644 --- a/reactos/base/applications/rapps/rapps/scite.txt +++ b/reactos/base/applications/rapps/rapps/scite.txt @@ -1,15 +1,15 @@ -; UTF-8 +; UTF-8 ; Turkish translation by Erdem Ersoy (eersoy93) (erdemersoy@live.com) [Section] Name = SciTE -Version = 3.4.1 +Version = 3.4.3 Licence = Freeware Description = SciTE is a SCIntilla based text editor. Originally built to demonstrate Scintilla, it has grown to be a generally useful editor with facilities for building and running programs. -Size = 730 kB +Size = 737 kB Category = 7 URLSite = http://www.scintilla.org/ -URLDownload = http://download.sourceforge.net/project/scintilla/SciTE/3.4.1/Sc341.exe +URLDownload = http://download.sourceforge.net/project/scintilla/SciTE/3.4.3/Sc343.exe CDPath = none [Section.0407] @@ -20,7 +20,7 @@ Description = Editor de texto basado en SCIntilla. Originalmente creado para dem [Section.040c] Description = SciTE est un éditeur de texte basé sur SCIntilla. Originelement réalisé pour montrer Scintilla, il a évolué pour devenir un éditeur généralement utile avec des options pour compiler et lancer des programmes. -Size = 730 ko +Size = 737 ko [Section.0410] Description = SciTE è un editor di testo basato su scintilla. Originariamente costruito per dimostrare Scintilla, è cresciuto fino a essere un editor generalmente utile con strutture per la creazione e l'esecuzione di programmi. @@ -34,12 +34,12 @@ Description = SciTE to edytor tekstu bazowany na SCIntilla. Oryginalnie stworzon [Section.0418] Licence = Gratuită Description = SciTE este un editor de text bazat pe SCIntilla. Construit iniÈ›ial pentru a demonstra Scintilla, a crescut ulterior într-un editor de uz general cu funcÈ›ionalități de compilare È™i execuÈ›ie a programelor. -Size = 730 ko +Size = 737 ko [Section.041f] Licence = Ücretsiz Description = SciTE, bir Scintilla tabanlı metin düzenleyicisidir. İlk baÅŸta Scintilla'yı göstermek için yapıldı, izlenceleri yapmak ve çalıştırmak yetenekleriyle bir umûmiyetle kullanışlı düzenleyici olmak için geliÅŸti. -Size = 730 KB +Size = 737 KB [Section.0422] Description = ТекÑтовий редактор на оÑнові SCIntilla. Був зібраний Ñк Ð¿Ñ€ÐµÐ·ÐµÐ½Ñ‚Ð°Ñ†Ñ–Ñ Scintilla, але Ð²Ð¸Ñ€Ñ–Ñ Ð´Ð¾ редактора загального кориÑÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð· заÑобами Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ Ñ‚Ð° запуÑку програм. diff --git a/reactos/base/applications/rapps/rapps/sdl_runtime.txt b/reactos/base/applications/rapps/rapps/sdl_runtime.txt index 3e16033d841..89849bec9d7 100644 --- a/reactos/base/applications/rapps/rapps/sdl_runtime.txt +++ b/reactos/base/applications/rapps/rapps/sdl_runtime.txt @@ -40,7 +40,7 @@ Description = Necesar pentru execuÈ›ia multor jocuri (open-source). DezarhivaÈ›i Size = 136,67 ko [Section.041f] -Name = SDL (Bayağı DoÄŸrudan Ortam Katmanı) Yürütücüsü +Name = SDL (Bayağı DoÄŸrudan Ortam Katmanı) Yürütücü Description = Birçok açık kaynak oyunu çalıştırmak için gereklidir. Çıkartmak için 7-Zip ya da benzeri bir yazılım kullanmanız gerekir. Size = 136,67 KB diff --git a/reactos/base/applications/rapps/rapps/seamonkey.txt b/reactos/base/applications/rapps/rapps/seamonkey.txt index 706345b6968..16621853755 100644 --- a/reactos/base/applications/rapps/rapps/seamonkey.txt +++ b/reactos/base/applications/rapps/rapps/seamonkey.txt @@ -1,46 +1,46 @@ -; UTF-8 +; UTF-8 ; Turkish translation by Erdem Ersoy (eersoy93) (erdemersoy@live.com) [Section] Name = Mozilla SeaMonkey -Version = 2.25 +Version = 2.26 Licence = MPL/GPL/LGPL Description = Mozilla Suite is alive. This is the one and only Browser, Mail, Chat, and Composer bundle you will ever need. Size = 23.90 MB Category = 5 URLSite = http://www.seamonkey-project.org/ -URLDownload = http://ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/2.25/win32/en-US/SeaMonkey%20Setup%202.25.exe +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/2.26/win32/en-US/SeaMonkey%20Setup%202.26.exe CDPath = none [Section.0407] Description = Mozilla Suite lebt. Dies ist das einzige Browser-, Mail-, Chat- and Composerwerkzeug-Bundle welches Sie benötigen. Size = 23.80 MB -URLDownload = http://ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/2.25/win32/de/SeaMonkey%20Setup%202.25.exe +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/2.26/win32/de/SeaMonkey%20Setup%202.26.exe [Section.040a] Description = La suite de Mozilla está viva. Es el primero y único navegador web, gestor de correo, lector de noticias, Chat y editor HTML que necesitarás. Size = 23.79 MB -URLDownload = http://ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/2.25/win32/es-ES/SeaMonkey%20Setup%202.25.exe +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/2.26/win32/es-ES/SeaMonkey%20Setup%202.26.exe [Section.040c] Description = La suite Mozilla est en vie. Ceci est le seul et l'unique package navigateur, client mail, client chat et composer dont vous aurez besoin. Size = 24,06 Mo -URLDownload = http://ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/2.25/win32/fr/SeaMonkey%20Setup%202.25.exe +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/2.26/win32/fr/SeaMonkey%20Setup%202.26.exe [Section.0410] Description = Mozilla Suite è vivo. Questo è l'unico pachetto che include Browser, Mail, Chat, e Composer di cui avrete mai bisogno... Size = 23.71 MB -URLDownload = http://ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/2.25/win32/it/SeaMonkey%20Setup%202.25.exe +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/2.26/win32/it/SeaMonkey%20Setup%202.26.exe [Section.0413] Description = Mozilla Suite bundelt alle applicaties voor het Web: Browser, Mail, Chat, Composer. Size = 24.40 MB -URLDownload = http://ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/2.25/win32/nl/SeaMonkey%20Setup%202.25.exe +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/2.26/win32/nl/SeaMonkey%20Setup%202.26.exe [Section.0415] Description = Pakiet Mozilla żyje. W zestawie: przeglÄ…darka, klient poczty, IRC oraz Edytor HTML - wszystko, czego potrzebujesz. Size = 24.72 MB -URLDownload = http://ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/2.25/win32/pl/SeaMonkey%20Setup%202.25.exe +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/2.26/win32/pl/SeaMonkey%20Setup%202.26.exe [Section.0418] Description = Suita Mozilla. Acest pachet ce încorporează navigator, poÈ™tă electronică, client IRC È™i editor HTML, acoperind astfel o arie largă de necesități. @@ -49,14 +49,14 @@ Size = 23,90 Mo [Section.0419] Description = Продолжение Mozilla Suite. Включает браузер, почтовый клиент, IRC-клиент и HTML-редактор. Size = 24.27 MB -URLDownload = http://ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/2.25/win32/ru/SeaMonkey%20Setup%202.25.exe +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/2.26/win32/ru/SeaMonkey%20Setup%202.26.exe [Section.041f] Description = Mozilla Bohçası saÄŸ. Bu, hiç gereksinim duymayacağınız, yalnızca Tarayıcı, Posta, SöyleÅŸi ve Yazar bohçasıdır. Size = 23,83 MB -URLDownload = http://ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/2.25/win32/tr/SeaMonkey%20Setup%202.25.exe +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/2.26/win32/tr/SeaMonkey%20Setup%202.26.exe [Section.0422] Description = ÐŸÑ€Ð¾Ð´Ð¾Ð²Ð¶ÐµÐ½Ð½Ñ Mozilla Suite. Включає в Ñебе браузер, поштовий клієнт, IRC-клієнт та HTML-редактор. Size = 24.27 MB -URLDownload = http://ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/2.25/win32/ru/SeaMonkey%20Setup%202.25.exe +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/2.26/win32/ru/SeaMonkey%20Setup%202.26.exe diff --git a/reactos/base/applications/rapps/rapps/sumatrapdf.txt b/reactos/base/applications/rapps/rapps/sumatrapdf.txt index d48bad627fd..9c508a32000 100644 --- a/reactos/base/applications/rapps/rapps/sumatrapdf.txt +++ b/reactos/base/applications/rapps/rapps/sumatrapdf.txt @@ -1,15 +1,15 @@ -; UTF-8 +; UTF-8 ; Turkish translation by Erdem Ersoy (eersoy93) (erdemersoy@live.com) [Section] Name = SumatraPDF -Version = 2.4 +Version = 2.5.2 Licence = GPLv3 Description = Sumatra PDF is a slim, free, open-source PDF reader. Portable out of the box. Size = 4.0 MB Category = 6 URLSite = http://blog.kowalczyk.info/software/sumatrapdf/free-pdf-reader.html -URLDownload = https://kjkpub.s3.amazonaws.com/sumatrapdf/rel/SumatraPDF-2.4-install.exe +URLDownload = https://kjkpub.s3.amazonaws.com/sumatrapdf/rel/SumatraPDF-2.5.2-install.exe CDPath = none [Section.0407] diff --git a/reactos/base/applications/rapps/rapps/thunderbird.txt b/reactos/base/applications/rapps/rapps/thunderbird.txt index bb86e892602..61cadb98e24 100644 --- a/reactos/base/applications/rapps/rapps/thunderbird.txt +++ b/reactos/base/applications/rapps/rapps/thunderbird.txt @@ -1,79 +1,79 @@ -; UTF-8 +; UTF-8 ; Turkish translation by Erdem Ersoy (eersoy93) (erdemersoy@live.com) [Section] Name = Mozilla Thunderbird 24 -Version = 24.4.0 +Version = 24.5.0 Licence = MPL/GPL/LGPL Description = The most popular and one of the best free Mail Clients out there. Size = 21.12 MB Category = 5 URLSite = https://www.mozilla.org/en-US/thunderbird/ -URLDownload = http://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/24.4.0/win32/en-US/Thunderbird%20Setup%2024.4.0.exe +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/24.5.0/win32/en-US/Thunderbird%20Setup%2024.5.0.exe CDPath = none [Section.0407] Description = Der populärste und einer der besten freien Mail-Clients. Size = 20.96 MB URLSite = https://www.mozilla.org/de/thunderbird/ -URLDownload = http://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/24.4.0/win32/de/Thunderbird%20Setup%2024.4.0.exe +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/24.5.0/win32/de/Thunderbird%20Setup%2024.5.0.exe [Section.040a] Description = El más popular y uno de los mejores clientes mail que hay. Size = 20.92 MB URLSite = https://www.mozilla.org/es-ES/thunderbird/ -URLDownload = http://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/24.4.0/win32/es-ES/Thunderbird%20Setup%2024.4.0.exe +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/24.5.0/win32/es-ES/Thunderbird%20Setup%2024.5.0.exe [Section.040c] Description = Le plus populaire et l'un des meilleurs clients mail gratuits disponible. Size = 21,27 Mo URLSite = https://www.mozilla.org/fr/thunderbird/ -URLDownload = http://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/24.4.0/win32/fr/Thunderbird%20Setup%2024.4.0.exe +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/24.5.0/win32/fr/Thunderbird%20Setup%2024.5.0.exe [Section.0410] Description = Il più popolare e il migliore Client mail gratuito. Size = 20.91 MB URLSite = https://www.mozilla.org/it/thunderbird/ -URLDownload = http://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/24.4.0/win32/it/Thunderbird%20Setup%2024.4.0.exe +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/24.5.0/win32/it/Thunderbird%20Setup%2024.5.0.exe [Section.0413] Description = De meest populaire en een van de beste gratis e-mail-programma's. Size = 21.61 MB URLSite = https://www.mozilla.org/nl/thunderbird/ -URLDownload = http://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/24.4.0/win32/nl/Thunderbird%20Setup%2024.4.0.exe +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/24.5.0/win32/nl/Thunderbird%20Setup%2024.5.0.exe [Section.0415] Description = Najpopularniejszy i jeden z najlepszych darmowych klientów poczty. Size = 21.80 MB URLSite = https://www.mozilla.org/pl/thunderbird/ -URLDownload = http://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/24.4.0/win32/pl/Thunderbird%20Setup%2024.4.0.exe +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/24.5.0/win32/pl/Thunderbird%20Setup%2024.5.0.exe [Section.0418] Description = Cel mai popular È™i unul dintre cele mai bune clientele gratuite de poÈ™tă electronică. Size = 21,48 Mo URLSite = https://www.mozilla.org/ro/thunderbird/ -URLDownload = http://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/24.4.0/win32/ro/Thunderbird%20Setup%2024.4.0.exe +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/24.5.0/win32/ro/Thunderbird%20Setup%2024.5.0.exe [Section.0419] Description = Один из Ñамых популÑрных и лучших беÑплатных почтовых клиентов. Size = 21.38 MB URLSite = https://www.mozilla.org/ru/thunderbird/ -URLDownload = http://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/24.4.0/win32/ru/Thunderbird%20Setup%2024.4.0.exe +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/24.5.0/win32/ru/Thunderbird%20Setup%2024.5.0.exe [Section.041f] Description = Özgür posta istemcileri arasında en tutulanı ve en iyilerinden biri. Size = 20,99 MB URLSite = https://www.mozilla.org/tr/thunderbird/ -URLDownload = http://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/24.4.0/win32/tr/Thunderbird%20Setup%2024.4.0.exe +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/24.5.0/win32/tr/Thunderbird%20Setup%2024.5.0.exe [Section.0422] Description = ÐайпопулÑрніший та один з кращих поштових клієнтів. Size = 21.41 MB URLSite = https://www.mozilla.org/uk/thunderbird/ -URLDownload = http://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/24.4.0/win32/uk/Thunderbird%20Setup%2024.4.0.exe +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/24.5.0/win32/uk/Thunderbird%20Setup%2024.5.0.exe [Section.0813] Description = De meest populaire en een van de beste gratis e-mail-programma's. Size = 9.71 MB URLSite = https://www.mozilla.org/nl/thunderbird/ -URLDownload = http://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/24.4.0/win32/nl/Thunderbird%20Setup%2024.4.0.exe +URLDownload = http://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/24.5.0/win32/nl/Thunderbird%20Setup%2024.5.0.exe diff --git a/reactos/base/applications/rapps/rapps/totalcommander.txt b/reactos/base/applications/rapps/rapps/totalcommander.txt index 07446c9e1ad..e7980801ee6 100644 --- a/reactos/base/applications/rapps/rapps/totalcommander.txt +++ b/reactos/base/applications/rapps/rapps/totalcommander.txt @@ -1,15 +1,15 @@ -; UTF-8 +; UTF-8 ; Turkish translation by Erdem Ersoy (eersoy93) (erdemersoy@live.com) [Section] Name = Total Commander -Version = 8.50 +Version = 8.51a Licence = Shareware Description = Total Commander is a file manager with two panels side by side. -Size = 3.5 MB +Size = 3.55 MB Category = 12 URLSite = http://www.ghisler.com/ -URLDownload = http://www.slo.ru/download/total_commander/tcm850x32.exe +URLDownload = http://www.slo.ru/download/total_commander/tcm851ax32.exe CDPath = none [Section.0407] @@ -28,12 +28,12 @@ Description = Total Commander to popularny menedżer plików z dwoma panelami, u [Section.0418] Licence = Versiune de evaluare Description = Total Commander este un gestionar de fiÈ™iere după modelul «două paneluri alăturate». -Size = 3,5 Mo +Size = 3,55 Mo [Section.041f] Licence = Paylaşımlı Description = Total Commander, yan yana iki bölmeli bir kütük yöneticisidir. -Size = 3,5 MB +Size = 3,55 MB [Section.0813] Description = Total Commander is een bestandsbeheerder met twee panelen zij aan zij. diff --git a/reactos/base/applications/rapps/rapps/utorrent.txt b/reactos/base/applications/rapps/rapps/utorrent.txt index 0fb3c5aae9c..b5206838136 100644 --- a/reactos/base/applications/rapps/rapps/utorrent.txt +++ b/reactos/base/applications/rapps/rapps/utorrent.txt @@ -1,9 +1,9 @@ -; UTF-8 +; UTF-8 ; Turkish translation by Erdem Ersoy (eersoy93) (erdemersoy@live.com) [Section] Name = µTorrent -Version = 3.4.1 +Version = 3.4.2 Licence = Freeware for non-commercial uses Description = Small and fast BitTorrent Client. Size = 1.6 MB diff --git a/reactos/base/applications/rapps/rapps/vb5run.txt b/reactos/base/applications/rapps/rapps/vb5run.txt index 26e78bc3215..a588264dbc1 100644 --- a/reactos/base/applications/rapps/rapps/vb5run.txt +++ b/reactos/base/applications/rapps/rapps/vb5run.txt @@ -43,9 +43,9 @@ Description = Microsoft Visual Basic 5 Runtime. ConÈ›ine: advpack.dll, asycfilt. Size = 969,59 ko [Section.041f] -Name = Microsoft Visual Basic 5 Yürütücüsü +Name = Microsoft Visual Basic 5 Yürütücü Licence = Bilinmiyor -Description = Microsoft Visual Basic 5 Yürütücüsü. Åžunları içerir: advpack.dll, asycfilt.dll, comcat.dll, msvbvm50.dll, oleaut32.dll, olepro32.dll. +Description = Microsoft Visual Basic 5 Yürütücü. Åžunları içerir: advpack.dll, asycfilt.dll, comcat.dll, msvbvm50.dll, oleaut32.dll, olepro32.dll. Size = 969,59 KB [Section.0422] diff --git a/reactos/base/applications/rapps/rapps/vb6run.txt b/reactos/base/applications/rapps/rapps/vb6run.txt index b6a0291cbb5..ac1efdf9a65 100644 --- a/reactos/base/applications/rapps/rapps/vb6run.txt +++ b/reactos/base/applications/rapps/rapps/vb6run.txt @@ -43,9 +43,9 @@ Description = Microsoft Visual Basic 6 Runtime. ConÈ›ine: advpack.dll, asycfilt. Size = 1,02 Mo [Section.041f] -Name = Microsoft Visual Basic 6 Yürütücüsü +Name = Microsoft Visual Basic 6 Yürütücü Licence = Bilinmiyor -Description = Microsoft Visual Basic 6 Yürütücüsü. Åžunları içerir: advpack.dll, asycfilt.dll, comcat.dll, msvbvm60.dll, oleaut32.dll, olepro32.dll. +Description = Microsoft Visual Basic 6 Yürütücü. Åžunları içerir: advpack.dll, asycfilt.dll, comcat.dll, msvbvm60.dll, oleaut32.dll, olepro32.dll. Size = 1,02 MB [Section.0422] diff --git a/reactos/base/applications/rapps/rapps/vc2005sp1run.txt b/reactos/base/applications/rapps/rapps/vc2005sp1run.txt index b5aac6a4e5c..278fd96e011 100644 --- a/reactos/base/applications/rapps/rapps/vc2005sp1run.txt +++ b/reactos/base/applications/rapps/rapps/vc2005sp1run.txt @@ -45,7 +45,7 @@ Size = 2,6 Mo [Section.041f] Name = Microsoft Visual C++ 2005 SP1 Yeniden Dağıtılabilir Paket Licence = Bilinmiyor -Description = Microsoft Visual Studio 2005 Yürütücüsü SP1. Åžunları içerir: atl80.dll, mfc80.dll, mfcm80.dll, mfcm80u.dll, msdia80.dll, msvcm80.dll, msvcp80.dll, msvcr80.dll, vcomp.dll. +Description = Microsoft Visual Studio 2005 Yürütücü SP1. Åžunları içerir: atl80.dll, mfc80.dll, mfcm80.dll, mfcm80u.dll, msdia80.dll, msvcm80.dll, msvcp80.dll, msvcr80.dll, vcomp.dll. Size = 2,6 MB [Section.0422] diff --git a/reactos/base/applications/rapps/rapps/vc2008sp1run.txt b/reactos/base/applications/rapps/rapps/vc2008sp1run.txt index dd2527f40ac..48f9ef730ed 100644 --- a/reactos/base/applications/rapps/rapps/vc2008sp1run.txt +++ b/reactos/base/applications/rapps/rapps/vc2008sp1run.txt @@ -45,7 +45,7 @@ Size = 4,02 Mo [Section.041f] Name = Microsoft Visual C++ 2008 SP1 Yeniden Dağıtılabilir Paket Licence = Bilinmiyor -Description = Microsoft Visual Studio 2008 SP1 Yürütücüsü. Åžunları içerir: atl90.dll, mfc90.dll, mfc90u.dll, mfcm90.dll, mfcm90u.dll, msdia90.dll, msvcm90.dll, msvcp90.dll, msvcr90.dll, vcomp90.dll. +Description = Microsoft Visual Studio 2008 SP1 Yürütücü. Åžunları içerir: atl90.dll, mfc90.dll, mfc90u.dll, mfcm90.dll, mfcm90u.dll, msdia90.dll, msvcm90.dll, msvcp90.dll, msvcr90.dll, vcomp90.dll. Size = 4,02 MB [Section.0422] diff --git a/reactos/base/applications/rapps/rapps/vc2010run.txt b/reactos/base/applications/rapps/rapps/vc2010run.txt index c579426f2ef..180fc739e1f 100644 --- a/reactos/base/applications/rapps/rapps/vc2010run.txt +++ b/reactos/base/applications/rapps/rapps/vc2010run.txt @@ -45,7 +45,7 @@ Size = 4,8 Mo [Section.041f] Name = Microsoft Visual C++ 2010 Yeniden Dağıtılabilir Paket Licence = Bilinmiyor -Description = Microsoft Visual Studio 2010 Yürütücüsü. Åžunları içerir: atl100.dll, mfc100.dll, mfc100u.dll, mfcm100.dll, mfcm100u.dll, msdia100.dll, msvcm100.dll, msvcp100.dll, msvcr100.dll, vcomp100.dll. +Description = Microsoft Visual Studio 2010 Yürütücü. Åžunları içerir: atl100.dll, mfc100.dll, mfc100u.dll, mfcm100.dll, mfcm100u.dll, msdia100.dll, msvcm100.dll, msvcp100.dll, msvcr100.dll, vcomp100.dll. Size = 4,8 MB [Section.0422] diff --git a/reactos/base/applications/rapps/rapps/vc6run.txt b/reactos/base/applications/rapps/rapps/vc6run.txt index 203c5227cc8..831205b60bd 100644 --- a/reactos/base/applications/rapps/rapps/vc6run.txt +++ b/reactos/base/applications/rapps/rapps/vc6run.txt @@ -45,7 +45,7 @@ Size = 1,75 Mo [Section.041f] Name = Microsoft Visual C++ 6 Yeniden Dağıtılabilir Paket Licence = Bilinmiyor -Description = Microsoft Visual Studio 6 Yürütücüsü. Åžunları içerir: advpack.dll, asycfilt.dll, atla.dll, atlu.dll, comcat.dll, mfc42.dll, mfc42u.dll, msvcirt.dll, msvcp60.dll, msvcrt.dll, oleaut32.dll, olepro32.dll. +Description = Microsoft Visual Studio 6 Yürütücü. Åžunları içerir: advpack.dll, asycfilt.dll, atla.dll, atlu.dll, comcat.dll, mfc42.dll, mfc42u.dll, msvcirt.dll, msvcp60.dll, msvcrt.dll, oleaut32.dll, olepro32.dll. Size = 1,75 MB [Section.0422] diff --git a/reactos/base/applications/rapps/rapps/winboard.txt b/reactos/base/applications/rapps/rapps/winboard.txt index adbc371bf2e..001c3b05908 100644 --- a/reactos/base/applications/rapps/rapps/winboard.txt +++ b/reactos/base/applications/rapps/rapps/winboard.txt @@ -4,8 +4,8 @@ [Section] Name = WinBoard Version = 4.2.7b -Licence = GPL 3 -Description = WinBoard is a graphical chessboard for the Windows/ReactOS that can serve as a user interface for GNU Chess, Crafty, and other chess engines, for the Internet Chess Servers, and for electronic mail correspondence chess. +Licence = GPLv3 +Description = WinBoard is a graphical chessboard for the Windows/ReactOS that can serve as a user interface for GNU Chess, Crafty, and other chess engines, for the Internet chess servers, and for electronic mail correspondence chess. Size = 5.93 MB Category = 4 URLSite = http://www.gnu.org/software/xboard/ @@ -36,7 +36,8 @@ Description = WinBoard este o tablă de È™ah grafică pentru Windows/ReactOS ce Size = 5,93 Mo [Section.041f] -Description = WinBoard; GNU Chess, Crafty ve diÄŸer satranç motorlarını Umûmî AÄŸ satranç sunucuları ve postayla yazışmalı satranç için bir arayüz olarak sunan, Windows/ReactOS için bir çizgelik satranç tahtasıdır. +Licence = GPL 3. sürüm +Description = WinBoard, Umûmî AÄŸ satranç sunucularına ve postayla yazışmalı satranca GNU Chess, Crafty ve baÅŸka satranç motorlarını bir kullanıcı arayüzü olarak sunabilen, Windows/ReactOS için bir çizgelik satranç tahtasıdır. Size = 5,93 MB [Section.0422] diff --git a/reactos/base/applications/rapps/rapps/zaz.txt b/reactos/base/applications/rapps/rapps/zaz.txt index 9ecd11079d3..ab8ebf375fe 100644 --- a/reactos/base/applications/rapps/rapps/zaz.txt +++ b/reactos/base/applications/rapps/rapps/zaz.txt @@ -6,7 +6,7 @@ Name = Zaz Version = 1.0.0 Licence = GPL -Description = Zaz is a free software arcade action puzzle computer game, a little bit like Frozen Bubble. +Description = Zaz is a free arcade action puzzle computer game, a little bit like Frozen Bubble. Size = 21.0 MB Category = 4 URLSite = http://zaz.sourceforge.net @@ -27,5 +27,5 @@ Description = Zaz este un joc de acÈ›iune de tip enigmă/arcadă, asemănător c Size = 21,0 Mo [Section.041f] -Description = Zaz, atari salonu oyunu türünde, geliÅŸimli bir bulmaca oyunudur. Bir nebze DonmuÅŸ Kabarcıklar'a benzemektedir. +Description = Zaz; ücretsiz, atari salonu oyunu türünde, devingen bir bulmaca oyunudur, birazcık Frozen Bubble'a benzer. Size = 21,0 MB diff --git a/reactos/cmake/config.cmake b/reactos/cmake/config.cmake index 4b04be8fa0c..a5b44e81cb8 100644 --- a/reactos/cmake/config.cmake +++ b/reactos/cmake/config.cmake @@ -58,7 +58,7 @@ set(_ELF_ FALSE CACHE BOOL "Whether to compile support for ELF files. Do not enable unless you know what you're doing.") -set(NSWPAT FALSE CACHE BOOL +set(NSWPAT TRUE CACHE BOOL "Whether to build apps/libs with features covered by software patents. If you live in a country where software patents are valid/apply, don't enable this (except they/you purchased a license from the patent owner). From f927f702e67e3e7cd61ff1a7d50333d15bee8a50 Mon Sep 17 00:00:00 2001 From: Daniel Reimer Date: Sun, 1 Jun 2014 12:00:32 +0000 Subject: [PATCH 130/232] Revert that... sorry svn path=/trunk/; revision=63528 --- reactos/cmake/config.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/cmake/config.cmake b/reactos/cmake/config.cmake index a5b44e81cb8..4b04be8fa0c 100644 --- a/reactos/cmake/config.cmake +++ b/reactos/cmake/config.cmake @@ -58,7 +58,7 @@ set(_ELF_ FALSE CACHE BOOL "Whether to compile support for ELF files. Do not enable unless you know what you're doing.") -set(NSWPAT TRUE CACHE BOOL +set(NSWPAT FALSE CACHE BOOL "Whether to build apps/libs with features covered by software patents. If you live in a country where software patents are valid/apply, don't enable this (except they/you purchased a license from the patent owner). From 1591c797438f97e193c80680ae35d4d90b305958 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sun, 1 Jun 2014 17:07:09 +0000 Subject: [PATCH 131/232] [KS] Fix to compile with STRICT enabled [CMAKE] Enable rostests in x64 build svn path=/trunk/; revision=63529 --- reactos/drivers/ksfilter/ks/filterfactory.c | 4 ++-- reactos/modules/CMakeLists.txt | 4 ---- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/reactos/drivers/ksfilter/ks/filterfactory.c b/reactos/drivers/ksfilter/ks/filterfactory.c index 5ad12916f46..d5bc6fd3361 100644 --- a/reactos/drivers/ksfilter/ks/filterfactory.c +++ b/reactos/drivers/ksfilter/ks/filterfactory.c @@ -542,7 +542,7 @@ KsFilterFactoryUpdateCacheData( PLIST_ENTRY Entry; PSYMBOLIC_LINK_ENTRY SymEntry; BOOLEAN Found; - HKEY hKey; + HANDLE hKey; NTSTATUS Status = STATUS_SUCCESS; IKsFilterFactoryImpl * Factory = (IKsFilterFactoryImpl*)CONTAINING_RECORD(FilterFactory, IKsFilterFactoryImpl, FilterFactory); @@ -742,5 +742,5 @@ KsFilterFactoryUpdateCacheData( /* done */ return Status; -} +} diff --git a/reactos/modules/CMakeLists.txt b/reactos/modules/CMakeLists.txt index 2eda3458e1b..22e0cfc6886 100644 --- a/reactos/modules/CMakeLists.txt +++ b/reactos/modules/CMakeLists.txt @@ -1,6 +1,4 @@ -if(NOT ARCH STREQUAL "amd64") - if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/rostests/) add_subdirectory(rostests) endif() @@ -12,5 +10,3 @@ endif() if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/wallpaper/) add_subdirectory(wallpaper) endif() - -endif() From ac7d530c44531e849b708f85bad9b548b493dd42 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sun, 1 Jun 2014 21:47:51 +0000 Subject: [PATCH 132/232] [INCLUDE] - Move definition of va_list to crtdefs.h - Remove useless definitions from vadefs.h - Cleanup the mess in stdarg.h - Add memmove prototype to intrin_x86.h, since it's used there - basetyps.h: guard STDMETHODCALLTYPE & friends from redefinition - guiddef.h: define FAR, include string.h - ntdef.h: don't include stdarg.h and string anymore, enable STRICT, remove FAR, add STDMETHODCALLTYPE & friends svn path=/trunk/; revision=63530 --- reactos/include/crt/crtdefs.h | 24 ++++- reactos/include/crt/mingw32/intrin_x86.h | 1 + reactos/include/crt/stdarg.h | 118 ++--------------------- reactos/include/crt/vadefs.h | 33 ------- reactos/include/psdk/basetyps.h | 2 + reactos/include/psdk/guiddef.h | 8 ++ reactos/include/psdk/ntdef.h | 47 ++++++--- 7 files changed, 68 insertions(+), 165 deletions(-) diff --git a/reactos/include/crt/crtdefs.h b/reactos/include/crt/crtdefs.h index 5e42ef01496..b76dbf5682b 100644 --- a/reactos/include/crt/crtdefs.h +++ b/reactos/include/crt/crtdefs.h @@ -20,6 +20,10 @@ #endif #endif +#undef _CRT_PACKING +#define _CRT_PACKING 8 +#pragma pack(push,_CRT_PACKING) + /* Disable non-ANSI C definitions if compiling with __STDC__ */ //HACK: Disabled //#if __STDC__ @@ -29,10 +33,6 @@ /** Properties ***************************************************************/ -#undef _CRT_PACKING -#define _CRT_PACKING 8 -#pragma pack(push,_CRT_PACKING) - #ifndef _CRT_STRINGIZE #define __CRT_STRINGIZE(_Value) #_Value #define _CRT_STRINGIZE(_Value) __CRT_STRINGIZE(_Value) @@ -327,6 +327,22 @@ extern "C" { typedef unsigned short wctype_t; #endif +#ifdef __GNUC__ +#ifndef __GNUC_VA_LIST +#define __GNUC_VA_LIST + typedef __builtin_va_list __gnuc_va_list; +#endif +#endif + +#ifndef _VA_LIST_DEFINED +#define _VA_LIST_DEFINED +#if defined(__GNUC__) + typedef __gnuc_va_list va_list; +#elif defined(_MSC_VER) + typedef _Writable_bytes_(_Inexpressible_("length varies")) char * va_list; +#endif +#endif + #ifndef _ERRCODE_DEFINED #define _ERRCODE_DEFINED typedef int errcode; diff --git a/reactos/include/crt/mingw32/intrin_x86.h b/reactos/include/crt/mingw32/intrin_x86.h index aac86b20b36..f8f77b0f968 100644 --- a/reactos/include/crt/mingw32/intrin_x86.h +++ b/reactos/include/crt/mingw32/intrin_x86.h @@ -70,6 +70,7 @@ extern "C" { #endif /*** memcopy must be memmove ***/ +void* memmove(void*, const void*, size_t); __INTRIN_INLINE void* memcpy(void* dest, const void* source, size_t num) { return memmove(dest, source, num); diff --git a/reactos/include/crt/stdarg.h b/reactos/include/crt/stdarg.h index 046d0605d8d..fe1bdb9035a 100644 --- a/reactos/include/crt/stdarg.h +++ b/reactos/include/crt/stdarg.h @@ -28,124 +28,18 @@ Boston, MA 02110-1301, USA. */ * ISO C Standard: 7.15 Variable arguments */ +#pragma once + #ifndef _INC_STDARG #define _INC_STDARG + +#include +#include + #ifndef _WIN32 #error Only Win32 target is supported! #endif -#ifndef _STDARG_H -#ifndef _ANSI_STDARG_H_ -#ifndef __need___va_list -#define _STDARG_H -#define _ANSI_STDARG_H_ -#endif /* not __need___va_list */ -#undef __need___va_list - -/* Define __gnuc_va_list. */ - -#ifdef __GNUC__ -#ifndef __GNUC_VA_LIST -#define __GNUC_VA_LIST -typedef __builtin_va_list __gnuc_va_list; -#endif -#endif - -/* Define the standard macros for the user, - if this invocation was from the user program. */ -#ifdef _STDARG_H - -#ifdef __GNUC__ -#define va_start(v,l) __builtin_va_start(v,l) -#define va_end(v) __builtin_va_end(v) -#define va_arg(v,l) __builtin_va_arg(v,l) -#if !defined(__STRICT_ANSI__) || __STDC_VERSION__ + 0 >= 199900L -#define va_copy(d,s) __builtin_va_copy(d,s) -#endif -#define __va_copy(d,s) __builtin_va_copy(d,s) -#endif - -/* Define va_list, if desired, from __gnuc_va_list. */ -/* We deliberately do not define va_list when called from - stdio.h, because ANSI C says that stdio.h is not supposed to define - va_list. stdio.h needs to have access to that data type, - but must not use that name. It should use the name __gnuc_va_list, - which is safe because it is reserved for the implementation. */ - -#ifdef _HIDDEN_VA_LIST /* On OSF1, this means varargs.h is "half-loaded". */ -#undef _VA_LIST -#endif - -#ifdef _BSD_VA_LIST -#undef _BSD_VA_LIST -#endif - -#ifdef __GNUC__ -#if defined(__svr4__) || (defined(_SCO_DS) && !defined(__VA_LIST)) -/* SVR4.2 uses _VA_LIST for an internal alias for va_list, - so we must avoid testing it and setting it here. - SVR4 uses _VA_LIST as a flag in stdarg.h, but we should - have no conflict with that. */ -#ifndef _VA_LIST_ -#define _VA_LIST_ -#ifdef __i860__ -#ifndef _VA_LIST -#define _VA_LIST va_list -#endif -#endif /* __i860__ */ -typedef __gnuc_va_list va_list; -#ifdef _SCO_DS -#define __VA_LIST -#endif -#endif /* _VA_LIST_ */ -#else /* not __svr4__ || _SCO_DS */ - -/* The macro _VA_LIST_ is the same thing used by this file in Ultrix. - But on BSD NET2 we must not test or define or undef it. - (Note that the comments in NET 2's ansi.h - are incorrect for _VA_LIST_--see stdio.h!) */ -#if !defined (_VA_LIST_) || defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__) || defined (__sequent__) || defined (__FreeBSD__) || defined(WINNT) -/* The macro _VA_LIST_DEFINED is used in Windows NT 3.5 */ -#ifndef _VA_LIST_DEFINED -/* The macro _VA_LIST is used in SCO Unix 3.2. */ -#ifndef _VA_LIST -/* The macro _VA_LIST_T_H is used in the Bull dpx2 */ -#ifndef _VA_LIST_T_H -/* The macro __va_list__ is used by BeOS. */ -#ifndef __va_list__ -typedef __gnuc_va_list va_list; -#endif /* not __va_list__ */ -#endif /* not _VA_LIST_T_H */ -#endif /* not _VA_LIST */ -#endif /* not _VA_LIST_DEFINED */ -#if !(defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__) || defined (__sequent__) || defined (__FreeBSD__)) -#define _VA_LIST_ -#endif -#ifndef _VA_LIST -#define _VA_LIST -#endif -#ifndef _VA_LIST_DEFINED -#define _VA_LIST_DEFINED -#endif -#ifndef _VA_LIST_T_H -#define _VA_LIST_T_H -#endif -#ifndef __va_list__ -#define __va_list__ -#endif - -#endif /* not _VA_LIST_, except on certain systems */ - -#endif /* not __svr4__ */ - -#endif /* __GNUC__ */ -#endif /* _STDARG_H */ - -#endif /* not _ANSI_STDARG_H_ */ -#endif /* not _STDARG_H */ - -#include - #ifndef va_start #define va_start _crt_va_start #endif diff --git a/reactos/include/crt/vadefs.h b/reactos/include/crt/vadefs.h index 5cd9553cfc7..190e7e6a802 100644 --- a/reactos/include/crt/vadefs.h +++ b/reactos/include/crt/vadefs.h @@ -20,39 +20,6 @@ extern "C" { #endif -#ifndef _UINTPTR_T_DEFINED -#define _UINTPTR_T_DEFINED -#ifndef __uintptr_t_defined -#define __uintptr_t_defined -#undef uintptr_t -#ifdef _WIN64 -#if defined(__GNUC__) && defined(__STRICT_ANSI__) - typedef unsigned int uintptr_t __attribute__ ((mode (DI))); -#else - __MINGW_EXTENSION typedef unsigned __int64 uintptr_t; -#endif -#else - typedef unsigned long uintptr_t; -#endif -#endif -#endif - -#ifdef __GNUC__ -#ifndef __GNUC_VA_LIST -#define __GNUC_VA_LIST - typedef __builtin_va_list __gnuc_va_list; -#endif -#endif - -#ifndef _VA_LIST_DEFINED -#define _VA_LIST_DEFINED -#if defined(__GNUC__) - typedef __gnuc_va_list va_list; -#elif defined(_MSC_VER) - typedef char * va_list; -#endif -#endif - #ifdef __cplusplus #define _ADDRESSOF(v) (&reinterpret_cast(v)) #else diff --git a/reactos/include/psdk/basetyps.h b/reactos/include/psdk/basetyps.h index a9f1cc5d97e..94739736cbc 100644 --- a/reactos/include/psdk/basetyps.h +++ b/reactos/include/psdk/basetyps.h @@ -33,6 +33,7 @@ # endif #endif +#ifndef STDMETHODCALLTYPE #define STDMETHODCALLTYPE __stdcall #define STDMETHODVCALLTYPE __cdecl #define STDAPICALLTYPE __stdcall @@ -45,6 +46,7 @@ #define STDAPIV_(t) EXTERN_C t STDAPIVCALLTYPE #define STDMETHODIMPV HRESULT STDMETHODVCALLTYPE #define STDMETHODIMPV_(t) t STDMETHODVCALLTYPE +#endif /* !STDMETHODCALLTYPE */ #if defined(__cplusplus) && !defined(CINTERFACE) # define interface struct diff --git a/reactos/include/psdk/guiddef.h b/reactos/include/psdk/guiddef.h index be843cc085f..22e532b7cf5 100644 --- a/reactos/include/psdk/guiddef.h +++ b/reactos/include/psdk/guiddef.h @@ -18,6 +18,7 @@ #ifndef GUID_DEFINED #define GUID_DEFINED + typedef struct _GUID { #ifdef _MSC_VER @@ -31,6 +32,10 @@ typedef struct _GUID } GUID; #endif +#ifndef FAR +#define FAR +#endif + #ifndef DECLSPEC_SELECTANY #define DECLSPEC_SELECTANY __declspec(selectany) #endif @@ -109,6 +114,8 @@ typedef GUID FMTID,*LPFMTID; #define REFFMTID const FMTID* __MIDL_CONST #endif /* !defined(__cplusplus) && !defined(CINTERFACE) */ +#if !defined(__midl) && !defined(__WIDL__) +#include #if defined(__cplusplus) && !defined(CINTERFACE) __inline int InlineIsEqualGUID(REFGUID rguid1, REFGUID rguid2) @@ -131,6 +138,7 @@ __inline int InlineIsEqualGUID(REFGUID rguid1, REFGUID rguid2) #define IsEqualGUID(rguid1, rguid2) (!memcmp(rguid1, rguid2, sizeof(GUID))) #endif /* defined(__cplusplus) && !defined(CINTERFACE) */ +#endif /* __midl && __WIDL__ */ #if defined(__cplusplus) && !defined(CINTERFACE) #include diff --git a/reactos/include/psdk/ntdef.h b/reactos/include/psdk/ntdef.h index 8b7b3e03c85..d713c81b6fe 100644 --- a/reactos/include/psdk/ntdef.h +++ b/reactos/include/psdk/ntdef.h @@ -31,10 +31,6 @@ #include #include -// FIXME: Shouldn't be included! -#include -#include - #ifdef __cplusplus extern "C" { #endif @@ -42,7 +38,7 @@ extern "C" { /* Default to strict */ #ifndef NO_STRICT #ifndef STRICT -//#define STRICT 1 // FIXME: disabled for now +#define STRICT 1 #endif #endif @@ -68,11 +64,6 @@ extern "C" { #define CRITICAL #endif -// FIXME: deprecated -#ifndef FAR -#define FAR -#endif - /* Constant modifier */ #ifndef CONST #define CONST const @@ -98,12 +89,6 @@ extern "C" { #define ANYSIZE_ARRAY 1 #endif -#ifdef __cplusplus -#define EXTERN_C extern "C" -#else -#define EXTERN_C extern -#endif - /* Helper macro to enable gcc's extension. */ #ifndef __GNU_EXTENSION #ifdef __GNUC__ @@ -232,6 +217,12 @@ extern "C" { #define PROBE_ALIGNMENT32(_s) TYPE_ALIGNMENT(ULONG) #endif +#ifdef __cplusplus +#define EXTERN_C extern "C" +#else +#define EXTERN_C extern +#endif + /* Calling Conventions */ #if defined(_MANAGED) #define FASTCALL __stdcall @@ -243,6 +234,30 @@ extern "C" { #define NTAPI __stdcall +#ifndef STDMETHODCALLTYPE +#define STDMETHODCALLTYPE __stdcall +#define STDMETHODVCALLTYPE __cdecl +#define STDAPICALLTYPE __stdcall +#define STDAPIVCALLTYPE __cdecl +#define STDAPI EXTERN_C HRESULT STDAPICALLTYPE +#define STDAPI_(t) EXTERN_C t STDAPICALLTYPE +#define STDMETHODIMP HRESULT STDMETHODCALLTYPE +#define STDMETHODIMP_(t) t STDMETHODCALLTYPE +#define STDAPIV EXTERN_C HRESULT STDAPIVCALLTYPE +#define STDAPIV_(t) EXTERN_C t STDAPIVCALLTYPE +#define STDMETHODIMPV HRESULT STDMETHODVCALLTYPE +#define STDMETHODIMPV_(t) t STDMETHODVCALLTYPE +#endif /* !STDMETHODCALLTYPE */ + +#define STDOVERRIDEMETHODIMP __override STDMETHODIMP +#define STDOVERRIDEMETHODIMP_(t) __override STDMETHODIMP_(t) +#define IFACEMETHODIMP __override STDMETHODIMP +#define IFACEMETHODIMP_(t) __override STDMETHODIMP_(t) +#define STDOVERRIDEMETHODIMPV __override STDMETHODIMPV +#define STDOVERRIDEMETHODIMPV_(t) __override STDMETHODIMPV_(t) +#define IFACEMETHODIMPV __override STDMETHODIMPV +#define IFACEMETHODIMPV_(t) __override STDMETHODIMPV_(t) + /* Import and Export Specifiers */ From 958cc230888f74577ae15b861c699729d18fc51a Mon Sep 17 00:00:00 2001 From: James Tabor Date: Sun, 1 Jun 2014 22:32:24 +0000 Subject: [PATCH 133/232] =?UTF-8?q?[User32]=20-=20Fix=20recursive=20loops?= =?UTF-8?q?=20during=20Alt+Esc=20and=20Tab.=20Dedicated=20to=20Herm=C3=A8s?= =?UTF-8?q?=20B=C3=A9lusca-Ma=C3=AFto.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit svn path=/trunk/; revision=63531 --- .../win32ss/user/user32/controls/appswitch.c | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/reactos/win32ss/user/user32/controls/appswitch.c b/reactos/win32ss/user/user32/controls/appswitch.c index 4b2800b0a0d..5e1f7ce1f4d 100644 --- a/reactos/win32ss/user/user32/controls/appswitch.c +++ b/reactos/win32ss/user/user32/controls/appswitch.c @@ -17,7 +17,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(user32); #define MAX_WINDOWS 120 // Global variables -HWND switchdialog; +HWND switchdialog = NULL; HFONT dialogFont; int selectedWindow = 0; BOOL isOpen = FALSE; @@ -334,19 +334,26 @@ void ProcessHotKey() LRESULT WINAPI DoAppSwitch( WPARAM wParam, LPARAM lParam ) { - HWND hwnd; + HWND hwnd, hwndActive; MSG msg; BOOL Esc = FALSE; INT Count = 0; WCHAR Text[1024]; - switchdialog = NULL; + // Already in the loop. + if (switchdialog) return 0; + + hwndActive = GetActiveWindow(); + // Nothing is active so exit. + if (!hwndActive) return 0; + // Capture current active window. + SetCapture( hwndActive ); switch (lParam) { case VK_TAB: - if( !CreateSwitcherWindow(User32Instance) ) return 0; - if( !GetDialogFont() ) return 0; + if( !CreateSwitcherWindow(User32Instance) ) goto Exit; + if( !GetDialogFont() ) goto Exit; ProcessHotKey(); break; @@ -354,7 +361,7 @@ LRESULT WINAPI DoAppSwitch( WPARAM wParam, LPARAM lParam ) windowCount = 0; Count = 0; EnumWindowsZOrder(EnumerateCallback, 0); - if (windowCount < 2) return 0; + if (windowCount < 2) goto Exit; if (wParam == SC_NEXTWINDOW) Count = 1; else @@ -373,7 +380,7 @@ LRESULT WINAPI DoAppSwitch( WPARAM wParam, LPARAM lParam ) break; default: - return 0; + goto Exit; } // Main message loop: while (1) @@ -471,6 +478,7 @@ LRESULT WINAPI DoAppSwitch( WPARAM wParam, LPARAM lParam ) } } Exit: + ReleaseCapture(); if (switchdialog) DestroyWindow(switchdialog); switchdialog = NULL; selectedWindow = 0; From ec72c98352d1f09782e3d6ea69b453851b6f6643 Mon Sep 17 00:00:00 2001 From: Kamil Hornicek Date: Mon, 2 Jun 2014 10:41:52 +0000 Subject: [PATCH 134/232] [KBDCZ][KBDCZ1] - add support for VK_OEM_102 and Shift+AltGr combinations in kbdcz1 - fix left arrow in kbdcz - reduce diff between the layouts - misc cleanup - Patch by Radek Liska CORE-8283 svn path=/trunk/; revision=63532 --- reactos/dll/keyboard/kbdcz/kbdcz.c | 117 ++++++++------- reactos/dll/keyboard/kbdcz1/kbdcz1.c | 210 +++++++++++++++------------ 2 files changed, 178 insertions(+), 149 deletions(-) diff --git a/reactos/dll/keyboard/kbdcz/kbdcz.c b/reactos/dll/keyboard/kbdcz/kbdcz.c index 8675452dcc9..b05d4f72776 100644 --- a/reactos/dll/keyboard/kbdcz/kbdcz.c +++ b/reactos/dll/keyboard/kbdcz/kbdcz.c @@ -78,7 +78,7 @@ ROSDATA USHORT scancode_to_vk[] = { VK_SNAPSHOT, /* - 55 - */ /* Oddities, and the remaining standard F-Keys */ - VK_EMPTY, VK_OEM_102, VK_F11, VK_F12, + VK_EMPTY, VK_OEM_102, VK_F11, VK_F12, /* - 59 - */ VK_CLEAR, VK_EMPTY, VK_EMPTY, VK_EMPTY, VK_EMPTY, /* EREOF */ VK_EMPTY, VK_EMPTY, VK_EMPTY, VK_EMPTY, VK_EMPTY, /* ZOOM */ @@ -159,20 +159,45 @@ ROSDATA VK_TO_BIT modifier_keys[] = { ROSDATA MODIFIERS modifier_bits = { modifier_keys, - 7, - { 0, 1, 2, 0, 0, 0, 3, 0 } - /* Modifier bit order: NONE, SHIFT, CTRL, SHIFT-CTRL, ALT (not used), SHIFT-ALT (not used), CTRL-ALT, SHIFT-CTRL-ALT */ + 7, /* Modifier bit order */ + { + 0, /* NONE */ + 1, /* SHIFT */ + 2, /* CTRL */ + 0, /* SHIFT-CTRL (not used) */ + 0, /* ALT (not used) */ + 0, /* SHIFT-ALT (not used) */ + 3, /* CTRL-ALT */ + 0, /* SHIFT-CTRL-ALT (not used) */ + } +}; +/* ^ This table shows which column in any VK_TO_WCHARS* structure will be used on which modifier */ + +ROSDATA VK_TO_WCHARS1 keypad_numbers[] = { + { VK_NUMPAD0, 0, {'0'} }, + { VK_NUMPAD1, 0, {'1'} }, + { VK_NUMPAD2, 0, {'2'} }, + { VK_NUMPAD3, 0, {'3'} }, + { VK_NUMPAD4, 0, {'4'} }, + { VK_NUMPAD5, 0, {'5'} }, + { VK_NUMPAD6, 0, {'6'} }, + { VK_NUMPAD7, 0, {'7'} }, + { VK_NUMPAD8, 0, {'8'} }, + { VK_NUMPAD9, 0, {'9'} }, + { VK_DECIMAL, 0, {','} }, + { VK_BACK, 0, {'\010'} }, + { 0, 0 } }; ROSDATA VK_TO_WCHARS2 key_to_chars_2mod[] = { /* Keys that do not have shift states */ - { VK_TAB, 0, {'\t', '\t' } }, - { VK_ADD, 0, {'+', '+' } }, - { VK_SUBTRACT, 0, {'-', '-' } }, - { VK_MULTIPLY, 0, {'*', '*' } }, - { VK_DIVIDE, 0, {'/', '/' } }, - { VK_ESCAPE, 0, {0x1b, 0x1b} }, - { VK_SPACE, 0, {' ', ' ' } }, + { VK_TAB, 0, { '\t', '\t' } }, + { VK_ADD, 0, { '+', '+' } }, + { VK_SUBTRACT, 0, { '-', '-' } }, + { VK_MULTIPLY, 0, { '*', '*' } }, + { VK_DIVIDE, 0, { '/', '/' } }, + { VK_ESCAPE, 0, { 0x1b, 0x1b } }, + { VK_SPACE, 0, { ' ', ' ' } }, { 0, 0 } }; @@ -207,7 +232,7 @@ ROSDATA VK_TO_WCHARS4 key_to_chars_4mod[] = { { VK_EMPTY, 0, { WCH_NONE, WCH_NONE, WCH_NONE, 0x00b4 } }, // 9 dead letter { '0', 0, { 0x00e9, '0', WCH_NONE, WCH_DEAD } }, // e with acute { VK_EMPTY, 0, { WCH_NONE, WCH_NONE, WCH_NONE, 0x02dd } }, // 0 dead letter - + /* The misc */ { VK_OEM_MINUS, 0, { '=', '%', WCH_NONE, WCH_DEAD } }, // diaeresis { VK_EMPTY, 0, { WCH_NONE, WCH_NONE, WCH_NONE, 0x00a8 } }, // VK_OEM_MINUS dead letter @@ -224,61 +249,45 @@ ROSDATA VK_TO_WCHARS4 key_to_chars_4mod[] = { { VK_OEM_COMMA, 0, { ',', '?', WCH_NONE, '<' } }, { VK_OEM_PERIOD, 0, { '.', ':', WCH_NONE, '>' } }, { VK_OEM_2, 0, { '-', '_', WCH_NONE, '*' } }, - + /* The alphabet */ { 'A', CAPLOK, {'a', 'A', 0x01, WCH_NONE } }, - { 'B', CAPLOK, {'b', 'B', 0x02, '{' } }, - { 'C', CAPLOK, {'c', 'C', 0x03, '&' } }, - { 'D', CAPLOK, {'d', 'D', 0x04, 0x0110 } }, - { 'E', CAPLOK, {'e', 'E', 0x05, 0x20AC } }, - { 'F', CAPLOK, {'f', 'F', 0x06, '[' } }, - { 'G', CAPLOK, {'g', 'G', 0x07, ']' } }, + { 'B', CAPLOK, {'b', 'B', 0x02, '{' } }, + { 'C', CAPLOK, {'c', 'C', 0x03, '&' } }, + { 'D', CAPLOK, {'d', 'D', 0x04, 0x0110 } }, + { 'E', CAPLOK, {'e', 'E', 0x05, 0x20AC } }, + { 'F', CAPLOK, {'f', 'F', 0x06, '[' } }, + { 'G', CAPLOK, {'g', 'G', 0x07, ']' } }, { 'H', CAPLOK, {'h', 'H', 0x08, WCH_NONE } }, { 'I', CAPLOK, {'i', 'I', 0x09, WCH_NONE } }, { 'J', CAPLOK, {'j', 'J', 0x0a, WCH_NONE } }, - { 'K', CAPLOK, {'k', 'K', 0x0b, 0x0142 } }, - { 'L', CAPLOK, {'l', 'L', 0x0c, 0x0141 } }, + { 'K', CAPLOK, {'k', 'K', 0x0b, 0x0142 } }, + { 'L', CAPLOK, {'l', 'L', 0x0c, 0x0141 } }, { 'M', CAPLOK, {'m', 'M', 0x0d, WCH_NONE } }, - { 'N', CAPLOK, {'n', 'N', 0x0e, '}' } }, + { 'N', CAPLOK, {'n', 'N', 0x0e, '}' } }, { 'O', CAPLOK, {'o', 'O', 0x0f, WCH_NONE } }, { 'P', CAPLOK, {'p', 'P', 0x10, WCH_NONE } }, - { 'Q', CAPLOK, {'q', 'Q', 0x11, '\\' } }, + { 'Q', CAPLOK, {'q', 'Q', 0x11, '\\' } }, { 'R', CAPLOK, {'r', 'R', 0x12, WCH_NONE } }, - { 'S', CAPLOK, {'s', 'S', 0x13, WCH_NONE } }, + { 'S', CAPLOK, {'s', 'S', 0x13, 0x0111 } }, { 'T', CAPLOK, {'t', 'T', 0x14, WCH_NONE } }, { 'U', CAPLOK, {'u', 'U', 0x15, WCH_NONE } }, - { 'V', CAPLOK, {'v', 'V', 0x16, '@' } }, - { 'W', CAPLOK, {'w', 'W', 0x17, '|' } }, - { 'X', CAPLOK, {'x', 'X', 0x18, '#' } }, + { 'V', CAPLOK, {'v', 'V', 0x16, '@' } }, + { 'W', CAPLOK, {'w', 'W', 0x17, '|' } }, + { 'X', CAPLOK, {'x', 'X', 0x18, '#' } }, { 'Y', CAPLOK, {'y', 'Y', 0x19, WCH_NONE } }, { 'Z', CAPLOK, {'z', 'Z', 0x1a, WCH_NONE } }, { 0, 0 } }; -ROSDATA VK_TO_WCHARS1 keypad_numbers[] = { - { VK_NUMPAD0, 0, {'0'} }, - { VK_NUMPAD1, 0, {'1'} }, - { VK_NUMPAD2, 0, {'2'} }, - { VK_NUMPAD3, 0, {'3'} }, - { VK_NUMPAD4, 0, {'4'} }, - { VK_NUMPAD5, 0, {'5'} }, - { VK_NUMPAD6, 0, {'6'} }, - { VK_NUMPAD7, 0, {'7'} }, - { VK_NUMPAD8, 0, {'8'} }, - { VK_NUMPAD9, 0, {'9'} }, - { VK_DECIMAL, 0, {','} }, - { VK_BACK, 0, {'\010'} }, - { 0, 0 } -}; - -#define vk_master(n,x) { (PVK_TO_WCHARS1)x, n, sizeof(x[0]) } +#define vk_master(n, x) { (PVK_TO_WCHARS1)x, n, sizeof(x[0]) } ROSDATA VK_TO_WCHAR_TABLE vk_to_wchar_master_table[] = { - vk_master(1,keypad_numbers), - vk_master(2,key_to_chars_2mod), - vk_master(3,key_to_chars_3mod), - vk_master(4,key_to_chars_4mod), - { 0,0,0 } + vk_master(1, keypad_numbers), + vk_master(2, key_to_chars_2mod), + vk_master(3, key_to_chars_3mod), + vk_master(4, key_to_chars_4mod), + { 0, 0, 0 } }; ROSDATA VSC_LPWSTR key_names[] = { @@ -348,7 +357,9 @@ ROSDATA VSC_LPWSTR extended_key_names[] = { { 0x47, L"Home" }, { 0x48, L"Up" }, { 0x49, L"Page Up" }, - { 0x4a, L"Left" }, + /* { 0x4a, L"Left" },*/ + { 0x4a, L"-" }, + { 0x4b, L"Left" }, { 0x4c, L"Center" }, { 0x4d, L"Right" }, { 0x4f, L"End" }, @@ -423,9 +434,9 @@ ROSDATA DEADKEY dead_key[] = { }; ROSDATA DEADKEY_LPWSTR dead_key_names[] = { - L"\x00a1" L"hacek", // caron - L"\x00b4" L"carka", // acute - L"\x005e" L"krouzek", // ring + L"\x00a1" L"hacek", // caron + L"\x00b4" L"carka", // acute + L"\x005e" L"krouzek", // ring NULL }; diff --git a/reactos/dll/keyboard/kbdcz1/kbdcz1.c b/reactos/dll/keyboard/kbdcz1/kbdcz1.c index e4b6e923af2..e71f2f9fcad 100644 --- a/reactos/dll/keyboard/kbdcz1/kbdcz1.c +++ b/reactos/dll/keyboard/kbdcz1/kbdcz1.c @@ -78,7 +78,7 @@ ROSDATA USHORT scancode_to_vk[] = { VK_SNAPSHOT, /* - 55 - */ /* Oddities, and the remaining standard F-Keys */ - VK_EMPTY, VK_EMPTY, VK_F11, VK_F12, + VK_EMPTY, VK_OEM_102, VK_F11, VK_F12, /* - 59 - */ VK_CLEAR, VK_EMPTY, VK_EMPTY, VK_EMPTY, VK_EMPTY, /* EREOF */ VK_EMPTY, VK_EMPTY, VK_EMPTY, VK_EMPTY, VK_EMPTY, /* ZOOM */ @@ -159,89 +159,21 @@ ROSDATA VK_TO_BIT modifier_keys[] = { ROSDATA MODIFIERS modifier_bits = { modifier_keys, - 7, - { 0, 1, 2, 0, 0, 0, 3, 0 } - /* Modifier bit order: NONE, SHIFT, CTRL, SHIFT-CTRL, ALT (not used), SHIFT-ALT (not used), CTRL-ALT, SHIFT-CTRL-ALT */ -}; - -ROSDATA VK_TO_WCHARS2 key_to_chars_2mod[] = { - /* Keys that do not have shift states */ - { VK_TAB, 0, {'\t','\t'} }, - { VK_ADD, 0, {'+', '+'} }, - { VK_SUBTRACT, 0, {'-', '-'} }, - { VK_MULTIPLY, 0, {'*', '*'} }, - { VK_DIVIDE, 0, {'/', '/'} }, - { VK_OEM_2 ,0, {'-', '_'} }, - { VK_ESCAPE, 0, {0x1b,0x1b} }, - { VK_SPACE, 0, {' ', ' '} }, - { 0, 0 } -}; - -ROSDATA VK_TO_WCHARS3 key_to_chars_3mod[] = { - /* normal - shift - ctrl */ - /* The alphabet */ - { 'A', CAPLOK, {'a', 'A', 0x01} }, - { 'B', CAPLOK, {'b', 'B', 0x02} }, - { 'C', CAPLOK, {'c', 'C', 0x03} }, - { 'D', CAPLOK, {'d', 'D', 0x04} }, - { 'F', CAPLOK, {'f', 'F', 0x06} }, - { 'G', CAPLOK, {'g', 'G', 0x07} }, - { 'H', CAPLOK, {'h', 'H', 0x08} }, - { 'I', CAPLOK, {'i', 'I', 0x09} }, - { 'J', CAPLOK, {'j', 'J', 0x0a} }, - { 'K', CAPLOK, {'k', 'K', 0x0b} }, - { 'L', CAPLOK, {'l', 'L', 0x0c} }, - { 'M', CAPLOK, {'m', 'M', 0x0d} }, - { 'N', CAPLOK, {'n', 'N', 0x0e} }, - { 'O', CAPLOK, {'o', 'O', 0x0f} }, - { 'P', CAPLOK, {'p', 'P', 0x10} }, - { 'Q', CAPLOK, {'q', 'Q', 0x11} }, - { 'R', CAPLOK, {'r', 'R', 0x12} }, - { 'S', CAPLOK, {'s', 'S', 0x13} }, - { 'T', CAPLOK, {'t', 'T', 0x14} }, - { 'U', CAPLOK, {'u', 'U', 0x15} }, - { 'V', CAPLOK, {'v', 'V', 0x16} }, - { 'W', CAPLOK, {'w', 'W', 0x17} }, - { 'X', CAPLOK, {'x', 'X', 0x18} }, - { 'Y', CAPLOK, {'y', 'Y', 0x19} }, - { 'Z', CAPLOK, {'z', 'Z', 0x1a} }, - - /* Legacy (telnet-style) ascii escapes */ - { VK_RETURN, 0, {'\r', '\r', '\n'} }, - { 0,0 } -}; - -ROSDATA VK_TO_WCHARS4 key_to_chars_4mod[] = { -/* Normal, shifted, control, Alt+Gr */ - { '1', 0, {'+', '1', WCH_NONE, '!' } }, - { '2', 0, {0x011b, '2', 0, '@' } }, // e with caron - { '3', 0, {0x0161, '3', WCH_NONE, '#' } }, // s with caron - { '4', 0, {0x010d, '4', WCH_NONE, '$' } }, // c with caron - { '5', 0, {0x0159, '5', WCH_NONE, '%' } }, // r with caron - { '6', 0, {0x017e, '6', 0x1e, '^' } }, // z with caron - { '7', 0, {0x00fd, '7', WCH_NONE, '&' } }, // y with acute - { '8', 0, {0x00e1, '8', WCH_NONE, '*' } }, // a with acute - { '9', 0, {0x00ed, '9', WCH_NONE, '(' } }, // i with acute - { '0', 0, {0x00e9, '0', WCH_NONE, ')' } }, // e with acute - { VK_OEM_PLUS, 0, {WCH_DEAD, WCH_DEAD, WCH_NONE, '=' } }, // dead letters - acute, caron - { VK_EMPTY, 0, {0x00b4, 0x02c7, WCH_NONE, WCH_NONE } }, // VK_OEM_PLUS death - { VK_OEM_MINUS, 0, {'=', '%', 0x1f, '-' } }, - { VK_OEM_1, 0, {0x016f, '\"', WCH_NONE, ';' } }, // u with ring - { VK_OEM_7, 0, {0x00a7, '!', WCH_NONE, 0x00a4 } }, // section sign - { VK_OEM_4, 0, {0x00fa, '/', WCH_NONE, '[' } }, // u with acute - { VK_OEM_5, 0, {WCH_DEAD, 0x2018, WCH_NONE, '\\' } }, // diaeresis, left single quotation mark - { VK_EMPTY, 0, {0x00a8, WCH_NONE, WCH_NONE, WCH_NONE } }, // VK_OEM_5 death - { VK_OEM_6, 0, {')', '(', WCH_NONE, ']' } }, - { VK_OEM_3, 0, {';', WCH_DEAD, WCH_NONE, '`' } }, // ring - { VK_EMPTY, 0, {WCH_NONE, 0x00b0, WCH_NONE, WCH_NONE } }, // VK_OEM_3 death - { VK_OEM_COMMA, 0, {',', '?', WCH_NONE, '<' } }, - { VK_OEM_PERIOD, 0, {'.', ':', WCH_NONE, '>' } }, - { 'E', CAPLOK, {'e', 'E', 0x05, 0x20AC } }, // symbol for euro (currency) - { 0, 0 } + 7, /* Modifier bit order */ + { + 0, /* NONE */ + 1, /* SHIFT */ + 2, /* CTRL */ + 0, /* SHIFT-CTRL (not used) */ + 0, /* ALT (not used) */ + 0, /* SHIFT-ALT (not used) */ + 3, /* CTRL-ALT */ + 4, /* SHIFT-CTRL-ALT */ + } }; +/* ^ This table shows which column in any VK_TO_WCHARS* structure will be used on which modifier */ ROSDATA VK_TO_WCHARS1 keypad_numbers[] = { - { VK_DECIMAL, 0, {','} }, { VK_NUMPAD0, 0, {'0'} }, { VK_NUMPAD1, 0, {'1'} }, { VK_NUMPAD2, 0, {'2'} }, @@ -252,18 +184,103 @@ ROSDATA VK_TO_WCHARS1 keypad_numbers[] = { { VK_NUMPAD7, 0, {'7'} }, { VK_NUMPAD8, 0, {'8'} }, { VK_NUMPAD9, 0, {'9'} }, + { VK_DECIMAL, 0, {','} }, { VK_BACK, 0, {'\010'} }, { 0, 0 } }; -#define vk_master(n,x) { (PVK_TO_WCHARS1)x, n, sizeof(x[0]) } +ROSDATA VK_TO_WCHARS2 key_to_chars_2mod[] = { + /* Keys that do not have shift states */ + { VK_TAB, 0, { '\t', '\t' } }, + { VK_ADD, 0, { '+', '+' } }, + { VK_SUBTRACT, 0, { '-', '-' } }, + { VK_MULTIPLY, 0, { '*', '*' } }, + { VK_DIVIDE, 0, { '/', '/' } }, + { VK_ESCAPE, 0, { 0x1b, 0x1b } }, + { VK_SPACE, 0, { ' ', ' ' } }, + { 0, 0 } +}; + +ROSDATA VK_TO_WCHARS3 key_to_chars_3mod[] = { + /* normal - shift - ctrl */ + + /* Legacy (telnet-style) ascii escapes */ + { VK_RETURN, 0, {'\r', '\r', '\n' } }, + { 0,0 } +}; + +ROSDATA VK_TO_WCHARS5 key_to_chars_5mod[] = { +/* Normal, shifted, control, Alt+Gr, Sh+Alt+Gr */ + + /* The numbers */ + { '1', 0, { '+', '1', WCH_NONE, '!', WCH_NONE } }, + { '2', 0, { 0x011b, '2', 0, '@', WCH_NONE } }, // e with caron + { '3', 0, { 0x0161, '3', WCH_NONE, '#', WCH_NONE } }, // s with caron + { '4', 0, { 0x010d, '4', WCH_NONE, '$', WCH_NONE } }, // c with caron + { '5', 0, { 0x0159, '5', WCH_NONE, '%', WCH_NONE } }, // r with caron + { '6', 0, { 0x017e, '6', 0x1e, '^', WCH_NONE } }, // z with caron + { '7', 0, { 0x00fd, '7', WCH_NONE, '&', WCH_NONE } }, // y with acute + { '8', 0, { 0x00e1, '8', WCH_NONE, '*', WCH_NONE } }, // a with acute + { '9', 0, { 0x00ed, '9', WCH_NONE, '(', WCH_NONE } }, // i with acute + { '0', 0, { 0x00e9, '0', WCH_NONE, ')', WCH_NONE } }, // e with acute + + /* The misc */ + { VK_OEM_PLUS, 0, { WCH_DEAD, WCH_DEAD, WCH_NONE, '=', '+' } }, // dead letters - acute, caron + { VK_EMPTY, 0, { 0x00b4, 0x02c7, WCH_NONE, WCH_NONE, WCH_NONE } }, // VK_OEM_PLUS dead letter + { VK_OEM_MINUS, 0, { '=', '%', 0x1f, '-', '_' } }, + { VK_OEM_1, 0, { 0x016f, '\"', WCH_NONE, ';', ':' } }, // u with ring + { VK_OEM_7, 0, { 0x00a7, '!', WCH_NONE, 0x00a4, WCH_DEAD } }, // section sign, currency sign + { VK_EMPTY, 0, { WCH_NONE, WCH_NONE, WCH_NONE, WCH_NONE, '^' } }, // VK_OEM_7 dead letter + { VK_OEM_4, 0, { 0x00fa, '/', WCH_NONE, '[', '{' } }, // u with acute + { VK_OEM_5, 0, { WCH_DEAD, 0x2018, WCH_NONE, '\\', '|' } }, // diaeresis, left single quotation mark + { VK_EMPTY, 0, { 0x00a8, WCH_NONE, WCH_NONE, WCH_NONE, WCH_NONE } }, // VK_OEM_5 dead letter + { VK_OEM_6, 0, { ')', '(', WCH_NONE, ']', '}' } }, + { VK_OEM_3, 0, { ';', WCH_DEAD, WCH_NONE, '`', '~' } }, // ring + { VK_EMPTY, 0, { WCH_NONE, 0x00b0, WCH_NONE, WCH_NONE, WCH_NONE } }, // VK_OEM_3 dead letter + { VK_OEM_COMMA, 0, { ',', '?', WCH_NONE, '<', 0x00d7 } }, // multiplication sign + { VK_OEM_PERIOD, 0, { '.', ':', WCH_NONE, '>', 0x00f7 } }, // division sign + { VK_OEM_2, 0, { '-', '_', WCH_NONE, '/', '?' } }, + { VK_OEM_102, 0, { '\\', '|', 0x1c/*FS*/, 0x00df, WCH_DEAD } }, // sharp s, double acute accent + { VK_EMPTY, 0, { WCH_NONE, WCH_NONE, WCH_NONE, WCH_NONE, 0x02dd } }, // VK_OEM_102 dead letter + + /* The alphabet */ + { 'A', CAPLOK, { 'a', 'A', 0x01, WCH_NONE, WCH_NONE } }, + { 'B', CAPLOK, { 'b', 'B', 0x02, WCH_NONE, WCH_NONE } }, + { 'C', CAPLOK, { 'c', 'C', 0x03, WCH_NONE, WCH_NONE } }, + { 'D', CAPLOK, { 'd', 'D', 0x04, WCH_NONE, WCH_NONE } }, + { 'E', CAPLOK, { 'e', 'E', 0x05, 0x20AC, WCH_NONE } }, // symbol for euro (currency) + { 'F', CAPLOK, { 'f', 'F', 0x06, WCH_NONE, WCH_NONE } }, + { 'G', CAPLOK, { 'g', 'G', 0x07, WCH_NONE, WCH_NONE } }, + { 'H', CAPLOK, { 'h', 'H', 0x08, WCH_NONE, WCH_NONE } }, + { 'I', CAPLOK, { 'i', 'I', 0x09, WCH_NONE, WCH_NONE } }, + { 'J', CAPLOK, { 'j', 'J', 0x0a, WCH_NONE, WCH_NONE } }, + { 'K', CAPLOK, { 'k', 'K', 0x0b, WCH_NONE, WCH_NONE } }, + { 'L', CAPLOK, { 'l', 'L', 0x0c, WCH_NONE, WCH_NONE } }, + { 'M', CAPLOK, { 'm', 'M', 0x0d, WCH_NONE, WCH_NONE } }, + { 'N', CAPLOK, { 'n', 'N', 0x0e, WCH_NONE, WCH_NONE } }, + { 'O', CAPLOK, { 'o', 'O', 0x0f, WCH_NONE, WCH_NONE } }, + { 'P', CAPLOK, { 'p', 'P', 0x10, WCH_NONE, WCH_NONE } }, + { 'Q', CAPLOK, { 'q', 'Q', 0x11, WCH_NONE, WCH_NONE } }, + { 'R', CAPLOK, { 'r', 'R', 0x12, WCH_NONE, WCH_NONE } }, + { 'S', CAPLOK, { 's', 'S', 0x13, WCH_NONE, WCH_NONE } }, + { 'T', CAPLOK, { 't', 'T', 0x14, WCH_NONE, WCH_NONE } }, + { 'U', CAPLOK, { 'u', 'U', 0x15, WCH_NONE, WCH_NONE } }, + { 'V', CAPLOK, { 'v', 'V', 0x16, WCH_NONE, WCH_NONE } }, + { 'W', CAPLOK, { 'w', 'W', 0x17, WCH_NONE, WCH_NONE } }, + { 'X', CAPLOK, { 'x', 'X', 0x18, WCH_NONE, WCH_NONE } }, + { 'Y', CAPLOK, { 'y', 'Y', 0x19, WCH_NONE, WCH_NONE } }, + { 'Z', CAPLOK, { 'z', 'Z', 0x1a, WCH_NONE, WCH_NONE } }, + { 0, 0 } +}; + +#define vk_master(n, x) { (PVK_TO_WCHARS1)x, n, sizeof(x[0]) } ROSDATA VK_TO_WCHAR_TABLE vk_to_wchar_master_table[] = { - vk_master(1,keypad_numbers), - vk_master(2,key_to_chars_2mod), - vk_master(3,key_to_chars_3mod), - vk_master(4,key_to_chars_4mod), - { 0,0,0 } + vk_master(1, keypad_numbers), + vk_master(2, key_to_chars_2mod), + vk_master(3, key_to_chars_3mod), + vk_master(5, key_to_chars_5mod), + { 0, 0, 0 } }; ROSDATA VSC_LPWSTR key_names[] = { @@ -333,7 +350,9 @@ ROSDATA VSC_LPWSTR extended_key_names[] = { { 0x47, L"Home" }, { 0x48, L"Up" }, { 0x49, L"Page Up" }, - { 0x4a, L"Left" }, + /* { 0x4a, L"Left" },*/ + { 0x4a, L"-" }, + { 0x4b, L"Left" }, { 0x4c, L"Center" }, { 0x4d, L"Right" }, { 0x4f, L"End" }, @@ -401,16 +420,16 @@ ROSDATA DEADKEY dead_key[] = { { DEADTRANS(0x0075, 0x00a8, 0x00fc, 0x0000) }, // u with diaeresis { DEADTRANS(0x0020, 0x00a8, 0x00a8, 0x0000) }, // space > diaeresis - { DEADTRANS(0x0055, 0x00b0, 0x016e, 0x0000) }, // U with round - { DEADTRANS(0x0075, 0x00b0, 0x016f, 0x0000) }, // u with round - { DEADTRANS(0x0020, 0x00b0, 0x00b0, 0x0000) }, // space > round + { DEADTRANS(0x0055, 0x00b0, 0x016e, 0x0000) }, // U with ring + { DEADTRANS(0x0075, 0x00b0, 0x016f, 0x0000) }, // u with ring + { DEADTRANS(0x0020, 0x00b0, 0x00b0, 0x0000) }, // space > ring { 0, 0, 0 }, }; ROSDATA DEADKEY_LPWSTR dead_key_names[] = { - L"\x00a1" L"hacek", // caron - L"\x00b4" L"carka", // acute - L"\x005e" L"krouzek", // round + L"\x00a1" L"hacek", // caron + L"\x00b4" L"carka", // acute + L"\x005e" L"krouzek", // ring NULL }; @@ -422,7 +441,7 @@ ROSDATA KBDTABLES keyboard_layout_table = { /* character from vk tables */ vk_to_wchar_master_table, - /* diacritical marks -- */ + /* diacritical marks */ dead_key, /* Key names */ @@ -447,4 +466,3 @@ ROSDATA KBDTABLES keyboard_layout_table = { PKBDTABLES WINAPI KbdLayerDescriptor(VOID) { return &keyboard_layout_table; } - From a579b9e6b6e674860fce454bf169d4f9cd199894 Mon Sep 17 00:00:00 2001 From: Aleksandar Andrejevic Date: Mon, 2 Jun 2014 18:24:58 +0000 Subject: [PATCH 135/232] [NTVDM] Initialize the VGA-related BDA data fields. svn path=/trunk/; revision=63534 --- reactos/subsystems/ntvdm/bios/bios.h | 3 ++- reactos/subsystems/ntvdm/bios/vidbios.c | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/reactos/subsystems/ntvdm/bios/bios.h b/reactos/subsystems/ntvdm/bios/bios.h index 9b47f163a0d..21eee31eea9 100644 --- a/reactos/subsystems/ntvdm/bios/bios.h +++ b/reactos/subsystems/ntvdm/bios/bios.h @@ -76,7 +76,8 @@ typedef struct WORD KeybdBufferEnd; // 0x82 BYTE ScreenRows; // 0x84 WORD CharacterHeight; // 0x85 - BYTE EGAFlags[2]; // 0x87 + BYTE VGAOptions; // 0x87 + BYTE VGASwitches; // 0x88 BYTE VGAFlags[2]; // 0x89 DWORD Reserved3; // 0x8b BYTE Reserved4; // 0x8f diff --git a/reactos/subsystems/ntvdm/bios/vidbios.c b/reactos/subsystems/ntvdm/bios/vidbios.c index c5d94e061c2..8f50d32f97e 100644 --- a/reactos/subsystems/ntvdm/bios/vidbios.c +++ b/reactos/subsystems/ntvdm/bios/vidbios.c @@ -1572,6 +1572,10 @@ BOOLEAN VidBiosInitialize(VOID) ((PULONG)BaseAddress)[0x43] = (ULONG)NULL; ((PULONG)BaseAddress)[0x44] = (ULONG)NULL; + /* Initialize the VGA BDA data */ + Bda->VGAOptions = 0x30; /* 256 KB Video RAM */ + Bda->VGASwitches = 0x09; /* High-resolution */ + // // FIXME: At the moment we always set a VGA mode. In the future, // we should set this mode **only** when: From 36d73c2c626869ad9bfc6aa972739b0e17f0436d Mon Sep 17 00:00:00 2001 From: Aleksandar Andrejevic Date: Tue, 3 Jun 2014 22:34:49 +0000 Subject: [PATCH 136/232] [NTVDM] Fix the command line NULL-termination. svn path=/trunk/; revision=63538 --- reactos/subsystems/ntvdm/dos/dos32krnl/dos.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/reactos/subsystems/ntvdm/dos/dos32krnl/dos.c b/reactos/subsystems/ntvdm/dos/dos32krnl/dos.c index b4c565f9f1a..a9aa39d6e52 100644 --- a/reactos/subsystems/ntvdm/dos/dos32krnl/dos.c +++ b/reactos/subsystems/ntvdm/dos/dos32krnl/dos.c @@ -915,6 +915,7 @@ DWORD DosLoadExecutable(IN DOS_EXEC_TYPE LoadType, PIMAGE_DOS_HEADER Header; PDWORD RelocationTable; PWORD RelocWord; + LPSTR CmdLinePtr = (LPSTR)CommandLine; DPRINT1("DosLoadExecutable(%d, %s, %s, %s, 0x%08X, 0x%08X)\n", LoadType, @@ -931,8 +932,8 @@ DWORD DosLoadExecutable(IN DOS_EXEC_TYPE LoadType, } /* NULL-terminate the command line by removing the return carriage character */ - while (*CommandLine && *CommandLine != '\r') CommandLine++; - *(LPSTR)CommandLine = '\0'; + while (*CmdLinePtr && *CmdLinePtr != '\r') CmdLinePtr++; + *CmdLinePtr = '\0'; /* Open a handle to the executable */ FileHandle = CreateFileA(ExecutablePath, From 5ed72773b902affd01b2d48451f903d8776f4ec3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Gardou?= Date: Wed, 4 Jun 2014 17:12:09 +0000 Subject: [PATCH 137/232] [NTOS/PS] - ULONG --> ULONG_PTR svn path=/trunk/; revision=63540 --- reactos/ntoskrnl/ps/query.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/ntoskrnl/ps/query.c b/reactos/ntoskrnl/ps/query.c index 4cc554f19cc..b3701915096 100644 --- a/reactos/ntoskrnl/ps/query.c +++ b/reactos/ntoskrnl/ps/query.c @@ -151,7 +151,7 @@ NtQueryInformationProcess(IN HANDLE ProcessHandle, ProcessBasicInfo->UniqueProcessId = (ULONG_PTR)Process-> UniqueProcessId; ProcessBasicInfo->InheritedFromUniqueProcessId = - (ULONG)Process->InheritedFromUniqueProcessId; + (ULONG_PTR)Process->InheritedFromUniqueProcessId; ProcessBasicInfo->BasePriority = Process->Pcb.BasePriority; } From 40d538d6b1a552439b285c4bdb83fbedeb772ed2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Thu, 5 Jun 2014 19:38:44 +0000 Subject: [PATCH 138/232] [RAPPS][USETUP][SYSDM] "Licence" --> "License" in USA english. Patch by middings contributor. CORE-8288 #resolve #comment Thanks :) svn path=/trunk/; revision=63542 --- reactos/base/applications/rapps/lang/en-US.rc | 2 +- reactos/base/setup/usetup/lang/en-US.h | 2 +- reactos/dll/cpl/sysdm/lang/en-US.rc | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reactos/base/applications/rapps/lang/en-US.rc b/reactos/base/applications/rapps/lang/en-US.rc index 55f375bbb7b..3333836ed8c 100644 --- a/reactos/base/applications/rapps/lang/en-US.rc +++ b/reactos/base/applications/rapps/lang/en-US.rc @@ -147,7 +147,7 @@ BEGIN IDS_AINFO_DESCRIPTION "\nDescription: " IDS_AINFO_SIZE "\nSize: " IDS_AINFO_URLSITE "\nHome Page: " - IDS_AINFO_LICENCE "\nLicence: " + IDS_AINFO_LICENCE "\nLicense: " END STRINGTABLE diff --git a/reactos/base/setup/usetup/lang/en-US.h b/reactos/base/setup/usetup/lang/en-US.h index 23cdcebee74..e9d907d926c 100644 --- a/reactos/base/setup/usetup/lang/en-US.h +++ b/reactos/base/setup/usetup/lang/en-US.h @@ -117,7 +117,7 @@ static MUI_ENTRY enUSWelcomePageEntries[] = { 0, 0, - "ENTER = Continue R = Repair L = Licence F3 = Quit", + "ENTER = Continue R = Repair L = License F3 = Quit", TEXT_TYPE_STATUS | TEXT_PADDING_BIG }, { diff --git a/reactos/dll/cpl/sysdm/lang/en-US.rc b/reactos/dll/cpl/sysdm/lang/en-US.rc index 4a5f28edf78..d42b16e3eb1 100644 --- a/reactos/dll/cpl/sysdm/lang/en-US.rc +++ b/reactos/dll/cpl/sysdm/lang/en-US.rc @@ -18,7 +18,7 @@ BEGIN LTEXT "", IDC_MACHINELINE4, 130, 171, 118, 9 LTEXT "", IDC_MACHINELINE5, 130, 180, 118, 9 CONTROL "Visit the ReactOS Homepage", IDC_ROSHOMEPAGE_LINK, "SysLink", WS_CHILD | WS_VISIBLE | WS_TABSTOP, 20, 200, 140, 10 - PUSHBUTTON "View &licence...", IDC_LICENCE, 170, 199, 78, 13 + PUSHBUTTON "View &license...", IDC_LICENCE, 170, 199, 78, 13 END IDD_PROPPAGEHARDWARE DIALOGEX 0, 0, 256, 218 @@ -243,7 +243,7 @@ BEGIN END IDD_LICENCE DIALOGEX 6, 5, 267, 159 -CAPTION "Licence" +CAPTION "License" FONT 8, "MS Shell Dlg", 0, 0, 0x0 STYLE DS_SHELLFONT | WS_BORDER | WS_THICKFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU BEGIN From 3f570d5173b4b7369026314f9aa1994d7b283102 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Fri, 6 Jun 2014 13:49:47 +0000 Subject: [PATCH 139/232] [NEWDEV] * Fix a nasty stack corruption that was caused by a mismatching prototype. * Brought to you by MSVC Run-Time Error Checks (/RTC1) * Fixed by Christoph von Wittich. svn path=/trunk/; revision=63543 --- reactos/dll/win32/newdev/newdev.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/reactos/dll/win32/newdev/newdev.c b/reactos/dll/win32/newdev/newdev.c index 72f5bccaac8..16891769fb9 100644 --- a/reactos/dll/win32/newdev/newdev.c +++ b/reactos/dll/win32/newdev/newdev.c @@ -810,8 +810,9 @@ cleanup: BOOL WINAPI ClientSideInstallW( IN HWND hWndOwner, - IN DWORD dwUnknownFlags, - IN LPWSTR lpNamedPipeName) + IN HINSTANCE hInstance, + IN LPWSTR lpNamedPipeName, + IN INT Show) { BOOL ReturnValue = FALSE; BOOL ShowWizard; From 0c2a513314ddf5f7e909d0997763337a0da8e57f Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Fri, 6 Jun 2014 13:54:42 +0000 Subject: [PATCH 140/232] * Forgot this file. svn path=/trunk/; revision=63544 --- reactos/dll/win32/newdev/newdev.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/dll/win32/newdev/newdev.spec b/reactos/dll/win32/newdev/newdev.spec index 204f9a087b1..3dd235755b9 100644 --- a/reactos/dll/win32/newdev/newdev.spec +++ b/reactos/dll/win32/newdev/newdev.spec @@ -1,4 +1,4 @@ -@ stdcall ClientSideInstallW(ptr long wstr) +@ stdcall ClientSideInstallW(ptr ptr wstr long) @ stdcall DevInstallW(ptr ptr wstr long) @ stub InstallDevInst @ stub InstallDevInstEx From a06ec7042e001a146bc966492a701844794c5a1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Fri, 6 Jun 2014 21:05:59 +0000 Subject: [PATCH 141/232] [CONSRV] - Rename a macro to something meaningful. - Localize selection type strings. svn path=/trunk/; revision=63545 --- .../user/winsrv/consrv/frontends/gui/conwnd.c | 59 +++++++++++-------- .../winsrv/consrv/frontends/gui/lang/bg-BG.rc | 6 ++ .../winsrv/consrv/frontends/gui/lang/cs-CZ.rc | 6 ++ .../winsrv/consrv/frontends/gui/lang/de-DE.rc | 6 ++ .../winsrv/consrv/frontends/gui/lang/el-GR.rc | 6 ++ .../winsrv/consrv/frontends/gui/lang/en-US.rc | 6 ++ .../winsrv/consrv/frontends/gui/lang/es-ES.rc | 6 ++ .../winsrv/consrv/frontends/gui/lang/fr-FR.rc | 6 ++ .../winsrv/consrv/frontends/gui/lang/he-IL.rc | 6 ++ .../winsrv/consrv/frontends/gui/lang/id-ID.rc | 6 ++ .../winsrv/consrv/frontends/gui/lang/it-IT.rc | 6 ++ .../winsrv/consrv/frontends/gui/lang/ja-JP.rc | 6 ++ .../winsrv/consrv/frontends/gui/lang/no-NO.rc | 6 ++ .../winsrv/consrv/frontends/gui/lang/pl-PL.rc | 6 ++ .../winsrv/consrv/frontends/gui/lang/pt-BR.rc | 6 ++ .../winsrv/consrv/frontends/gui/lang/ro-RO.rc | 6 ++ .../winsrv/consrv/frontends/gui/lang/ru-RU.rc | 6 ++ .../winsrv/consrv/frontends/gui/lang/sk-SK.rc | 6 ++ .../winsrv/consrv/frontends/gui/lang/sv-SE.rc | 6 ++ .../winsrv/consrv/frontends/gui/lang/tr-TR.rc | 6 ++ .../winsrv/consrv/frontends/gui/lang/uk-UA.rc | 6 ++ .../winsrv/consrv/frontends/gui/lang/zh-CN.rc | 6 ++ .../winsrv/consrv/frontends/gui/lang/zh-TW.rc | 6 ++ .../winsrv/consrv/frontends/gui/resource.h | 21 +++---- .../user/winsrv/consrv/frontends/gui/text.c | 3 - 25 files changed, 178 insertions(+), 37 deletions(-) diff --git a/reactos/win32ss/user/winsrv/consrv/frontends/gui/conwnd.c b/reactos/win32ss/user/winsrv/consrv/frontends/gui/conwnd.c index f660e3414fe..adbbb08c313 100644 --- a/reactos/win32ss/user/winsrv/consrv/frontends/gui/conwnd.c +++ b/reactos/win32ss/user/winsrv/consrv/frontends/gui/conwnd.c @@ -731,8 +731,8 @@ UpdateSelection(PGUI_CONSOLE_DATA GuiData, PCOORD coord) if ((GuiData->Selection.dwFlags & CONSOLE_SELECTION_IN_PROGRESS) == 0) { - LPWSTR SelectionType, WindowTitle = NULL; - SIZE_T Length = 0; + LPWSTR SelTypeStr = NULL , WindowTitle = NULL; + SIZE_T SelTypeStrLength = 0, Length = 0; /* Clear the old selection */ if (GuiData->Selection.dwFlags & CONSOLE_SELECTION_NOT_EMPTY) @@ -740,21 +740,34 @@ UpdateSelection(PGUI_CONSOLE_DATA GuiData, PCOORD coord) InvalidateRect(GuiData->hWindow, &oldRect, FALSE); } - if (GuiData->Selection.dwFlags & CONSOLE_MOUSE_SELECTION) - { - SelectionType = L"Selection - "; - } - else - { - SelectionType = L"Mark - "; - } + /* + * When passing a zero-length buffer size, LoadString(...) returns + * a read-only pointer buffer to the program's resource string. + */ + SelTypeStrLength = + LoadStringW(ConSrvDllInstance, + (GuiData->Selection.dwFlags & CONSOLE_MOUSE_SELECTION) + ? IDS_SELECT_TITLE : IDS_MARK_TITLE, + (LPWSTR)&SelTypeStr, 0); - Length = Console->Title.Length + wcslen(SelectionType) + 1; - WindowTitle = ConsoleAllocHeap(0, Length * sizeof(WCHAR)); - wcscpy(WindowTitle, SelectionType); - wcscat(WindowTitle, Console->Title.Buffer); - SetWindowText(GuiData->hWindow, WindowTitle); - ConsoleFreeHeap(WindowTitle); + /* + * Prepend the selection type string to the current console title + * if we succeeded in retrieving a valid localized string. + */ + if (SelTypeStr) + { + // 3 for " - " and 1 for NULL + Length = Console->Title.Length + (SelTypeStrLength + 3 + 1) * sizeof(WCHAR); + WindowTitle = ConsoleAllocHeap(0, Length); + + wcsncpy(WindowTitle, SelTypeStr, SelTypeStrLength); + WindowTitle[SelTypeStrLength] = L'\0'; + wcscat(WindowTitle, L" - "); + wcscat(WindowTitle, Console->Title.Buffer); + + SetWindowText(GuiData->hWindow, WindowTitle); + ConsoleFreeHeap(WindowTitle); + } GuiData->Selection.dwFlags |= CONSOLE_SELECTION_IN_PROGRESS; ConioPause(Console, PAUSED_FROM_SELECTION); @@ -771,6 +784,7 @@ UpdateSelection(PGUI_CONSOLE_DATA GuiData, PCOORD coord) GuiData->Selection.dwFlags = CONSOLE_NO_SELECTION; ConioUnpause(Console, PAUSED_FROM_SELECTION); + /* Restore the console title */ SetWindowText(GuiData->hWindow, Console->Title.Buffer); } } @@ -1305,10 +1319,7 @@ OnMouse(PGUI_CONSOLE_DATA GuiData, UINT msg, WPARAM wParam, LPARAM lParam) if (GetType(Buffer) == TEXTMODE_BUFFER) { -#ifdef IS_WHITESPACE -#undef IS_WHITESPACE -#endif -#define IS_WHITESPACE(c) \ +#define IS_WORD_SEP(c) \ ((c) == L'\0' || (c) == L' ' || (c) == L'\t' || (c) == L'\r' || (c) == L'\n') PTEXTMODE_SCREEN_BUFFER TextBuffer = (PTEXTMODE_SCREEN_BUFFER)Buffer; @@ -1320,15 +1331,15 @@ OnMouse(PGUI_CONSOLE_DATA GuiData, UINT msg, WPARAM wParam, LPARAM lParam) ptrL = ptrR = ConioCoordToPointer(TextBuffer, cL.X, cL.Y); /* Enlarge the selection by checking for whitespace */ - while ((0 < cL.X) && !IS_WHITESPACE(ptrL->Char.UnicodeChar) - && !IS_WHITESPACE((ptrL-1)->Char.UnicodeChar)) + while ((0 < cL.X) && !IS_WORD_SEP(ptrL->Char.UnicodeChar) + && !IS_WORD_SEP((ptrL-1)->Char.UnicodeChar)) { --cL.X; --ptrL; } while ((cR.X < TextBuffer->ScreenBufferSize.X - 1) && - !IS_WHITESPACE(ptrR->Char.UnicodeChar) && - !IS_WHITESPACE((ptrR+1)->Char.UnicodeChar)) + !IS_WORD_SEP(ptrR->Char.UnicodeChar) && + !IS_WORD_SEP((ptrR+1)->Char.UnicodeChar)) { ++cR.X; ++ptrR; diff --git a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/bg-BG.rc b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/bg-BG.rc index fd09239166f..6f56be272fa 100644 --- a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/bg-BG.rc +++ b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/bg-BG.rc @@ -22,3 +22,9 @@ BEGIN */ IDS_TERMINAL_TITLE "ReactOS Console" END + +STRINGTABLE +BEGIN + IDS_MARK_TITLE "Mark" + IDS_SELECT_TITLE "Select" +END diff --git a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/cs-CZ.rc b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/cs-CZ.rc index b40524ac78d..6cf5faf594d 100644 --- a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/cs-CZ.rc +++ b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/cs-CZ.rc @@ -24,3 +24,9 @@ BEGIN */ IDS_TERMINAL_TITLE "ReactOS Console" END + +STRINGTABLE +BEGIN + IDS_MARK_TITLE "Mark" + IDS_SELECT_TITLE "Select" +END diff --git a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/de-DE.rc b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/de-DE.rc index fcac4773c35..31ee03f3cd8 100644 --- a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/de-DE.rc +++ b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/de-DE.rc @@ -22,3 +22,9 @@ BEGIN */ IDS_TERMINAL_TITLE "ReactOS Eingabeaufforderung" END + +STRINGTABLE +BEGIN + IDS_MARK_TITLE "Mark" + IDS_SELECT_TITLE "Select" +END diff --git a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/el-GR.rc b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/el-GR.rc index 696823bef64..4ed65aa232c 100644 --- a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/el-GR.rc +++ b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/el-GR.rc @@ -22,3 +22,9 @@ BEGIN */ IDS_TERMINAL_TITLE "ReactOS Console" END + +STRINGTABLE +BEGIN + IDS_MARK_TITLE "Mark" + IDS_SELECT_TITLE "Select" +END diff --git a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/en-US.rc b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/en-US.rc index d1d81746519..1a32b4882e7 100644 --- a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/en-US.rc +++ b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/en-US.rc @@ -22,3 +22,9 @@ BEGIN */ IDS_TERMINAL_TITLE "ReactOS Console" END + +STRINGTABLE +BEGIN + IDS_MARK_TITLE "Mark" + IDS_SELECT_TITLE "Select" +END diff --git a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/es-ES.rc b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/es-ES.rc index ca10531bbdb..60d1bdcbe88 100644 --- a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/es-ES.rc +++ b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/es-ES.rc @@ -24,3 +24,9 @@ BEGIN */ IDS_TERMINAL_TITLE "ReactOS Console" END + +STRINGTABLE +BEGIN + IDS_MARK_TITLE "Mark" + IDS_SELECT_TITLE "Select" +END diff --git a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/fr-FR.rc b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/fr-FR.rc index 7b6f76aa1c7..0dde5099530 100644 --- a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/fr-FR.rc +++ b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/fr-FR.rc @@ -24,3 +24,9 @@ BEGIN */ IDS_TERMINAL_TITLE "ReactOS Console" END + +STRINGTABLE +BEGIN + IDS_MARK_TITLE "Marquage" + IDS_SELECT_TITLE "Sélection" +END diff --git a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/he-IL.rc b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/he-IL.rc index 513298c53cd..26e9a424118 100644 --- a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/he-IL.rc +++ b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/he-IL.rc @@ -22,3 +22,9 @@ BEGIN */ IDS_TERMINAL_TITLE "ReactOS Console" END + +STRINGTABLE +BEGIN + IDS_MARK_TITLE "Mark" + IDS_SELECT_TITLE "Select" +END diff --git a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/id-ID.rc b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/id-ID.rc index 97904b68e7f..6020733fd58 100644 --- a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/id-ID.rc +++ b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/id-ID.rc @@ -22,3 +22,9 @@ BEGIN */ IDS_TERMINAL_TITLE "ReactOS Console" END + +STRINGTABLE +BEGIN + IDS_MARK_TITLE "Mark" + IDS_SELECT_TITLE "Select" +END diff --git a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/it-IT.rc b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/it-IT.rc index 5c2e0ce20e8..e5da7b6d9c9 100644 --- a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/it-IT.rc +++ b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/it-IT.rc @@ -24,3 +24,9 @@ BEGIN */ IDS_TERMINAL_TITLE "ReactOS Console" END + +STRINGTABLE +BEGIN + IDS_MARK_TITLE "Mark" + IDS_SELECT_TITLE "Select" +END diff --git a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/ja-JP.rc b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/ja-JP.rc index b94590d7b1e..701e292e90b 100644 --- a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/ja-JP.rc +++ b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/ja-JP.rc @@ -22,3 +22,9 @@ BEGIN */ IDS_TERMINAL_TITLE "ReactOS Console" END + +STRINGTABLE +BEGIN + IDS_MARK_TITLE "Mark" + IDS_SELECT_TITLE "Select" +END diff --git a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/no-NO.rc b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/no-NO.rc index 776e90965bd..b73c535f2eb 100644 --- a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/no-NO.rc +++ b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/no-NO.rc @@ -22,3 +22,9 @@ BEGIN */ IDS_TERMINAL_TITLE "ReactOS Console" END + +STRINGTABLE +BEGIN + IDS_MARK_TITLE "Mark" + IDS_SELECT_TITLE "Select" +END diff --git a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/pl-PL.rc b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/pl-PL.rc index b20c766a3f7..04023569048 100644 --- a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/pl-PL.rc +++ b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/pl-PL.rc @@ -30,3 +30,9 @@ BEGIN */ IDS_TERMINAL_TITLE "Konsola ReactOS" END + +STRINGTABLE +BEGIN + IDS_MARK_TITLE "Mark" + IDS_SELECT_TITLE "Select" +END diff --git a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/pt-BR.rc b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/pt-BR.rc index f4b90ecaaa1..c58d17576f8 100644 --- a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/pt-BR.rc +++ b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/pt-BR.rc @@ -24,3 +24,9 @@ BEGIN */ IDS_TERMINAL_TITLE "ReactOS Console" END + +STRINGTABLE +BEGIN + IDS_MARK_TITLE "Mark" + IDS_SELECT_TITLE "Select" +END diff --git a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/ro-RO.rc b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/ro-RO.rc index 46c2de95ad8..2de14516e74 100644 --- a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/ro-RO.rc +++ b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/ro-RO.rc @@ -24,3 +24,9 @@ BEGIN */ IDS_TERMINAL_TITLE "Consola ReactOS" END + +STRINGTABLE +BEGIN + IDS_MARK_TITLE "Mark" + IDS_SELECT_TITLE "Select" +END diff --git a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/ru-RU.rc b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/ru-RU.rc index dcdc2b30060..826cefb4d69 100644 --- a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/ru-RU.rc +++ b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/ru-RU.rc @@ -22,3 +22,9 @@ BEGIN */ IDS_TERMINAL_TITLE "ReactOS Console" END + +STRINGTABLE +BEGIN + IDS_MARK_TITLE "Mark" + IDS_SELECT_TITLE "Select" +END diff --git a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/sk-SK.rc b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/sk-SK.rc index a586c3907bc..22890783534 100644 --- a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/sk-SK.rc +++ b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/sk-SK.rc @@ -27,3 +27,9 @@ BEGIN */ IDS_TERMINAL_TITLE "ReactOS Console" END + +STRINGTABLE +BEGIN + IDS_MARK_TITLE "Mark" + IDS_SELECT_TITLE "Select" +END diff --git a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/sv-SE.rc b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/sv-SE.rc index 35255a8dece..466ea208629 100644 --- a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/sv-SE.rc +++ b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/sv-SE.rc @@ -24,3 +24,9 @@ BEGIN */ IDS_TERMINAL_TITLE "ReactOS Console" END + +STRINGTABLE +BEGIN + IDS_MARK_TITLE "Mark" + IDS_SELECT_TITLE "Select" +END diff --git a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/tr-TR.rc b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/tr-TR.rc index aba643bdbba..9632005db14 100644 --- a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/tr-TR.rc +++ b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/tr-TR.rc @@ -24,3 +24,9 @@ BEGIN */ IDS_TERMINAL_TITLE "ReactOS Console" END + +STRINGTABLE +BEGIN + IDS_MARK_TITLE "Mark" + IDS_SELECT_TITLE "Select" +END diff --git a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/uk-UA.rc b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/uk-UA.rc index bafa79d530c..b0ecb8ee6a5 100644 --- a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/uk-UA.rc +++ b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/uk-UA.rc @@ -24,3 +24,9 @@ BEGIN */ IDS_TERMINAL_TITLE "ReactOS Console" END + +STRINGTABLE +BEGIN + IDS_MARK_TITLE "Mark" + IDS_SELECT_TITLE "Select" +END diff --git a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/zh-CN.rc b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/zh-CN.rc index 57ac95b01a8..c0d14a2cd94 100644 --- a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/zh-CN.rc +++ b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/zh-CN.rc @@ -22,3 +22,9 @@ BEGIN */ IDS_TERMINAL_TITLE "ReactOS Console" END + +STRINGTABLE +BEGIN + IDS_MARK_TITLE "Mark" + IDS_SELECT_TITLE "Select" +END diff --git a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/zh-TW.rc b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/zh-TW.rc index 2b62adb4810..5848be04f47 100644 --- a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/zh-TW.rc +++ b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/zh-TW.rc @@ -22,3 +22,9 @@ BEGIN */ IDS_TERMINAL_TITLE "ReactOS Console" END + +STRINGTABLE +BEGIN + IDS_MARK_TITLE "Mark" + IDS_SELECT_TITLE "Select" +END diff --git a/reactos/win32ss/user/winsrv/consrv/frontends/gui/resource.h b/reactos/win32ss/user/winsrv/consrv/frontends/gui/resource.h index 1b79e6e8ac1..2762cd9eee9 100644 --- a/reactos/win32ss/user/winsrv/consrv/frontends/gui/resource.h +++ b/reactos/win32ss/user/winsrv/consrv/frontends/gui/resource.h @@ -18,17 +18,18 @@ #define ID_SYSTEM_DEFAULTS 0xFFF6 #define ID_SYSTEM_PROPERTIES 0xFFF7 -#define NCPOPUP_MENU 103 +#define IDS_EDIT 204 +#define IDS_MARK 205 +#define IDS_COPY 206 +#define IDS_PASTE 207 +#define IDS_SELECTALL 208 +#define IDS_SCROLL 209 +#define IDS_FIND 210 +#define IDS_DEFAULTS 211 +#define IDS_PROPERTIES 212 -#define IDS_EDIT 204 -#define IDS_MARK 205 -#define IDS_COPY 206 -#define IDS_PASTE 207 -#define IDS_SELECTALL 208 -#define IDS_SCROLL 209 -#define IDS_FIND 210 -#define IDS_DEFAULTS 211 -#define IDS_PROPERTIES 212 +#define IDS_MARK_TITLE 220 +#define IDS_SELECT_TITLE 221 // Scrollbar resource ids. Unused. /* diff --git a/reactos/win32ss/user/winsrv/consrv/frontends/gui/text.c b/reactos/win32ss/user/winsrv/consrv/frontends/gui/text.c index 84d0101d8af..2de3b11ffd8 100644 --- a/reactos/win32ss/user/winsrv/consrv/frontends/gui/text.c +++ b/reactos/win32ss/user/winsrv/consrv/frontends/gui/text.c @@ -59,9 +59,6 @@ GuiCopyFromTextModeBuffer(PTEXTMODE_SCREEN_BUFFER Buffer, GuiData->Selection.srSelection.Right, GuiData->Selection.srSelection.Bottom); -#ifdef IS_WHITESPACE -#undef IS_WHITESPACE -#endif #define IS_WHITESPACE(c) ((c) == L'\0' || (c) == L' ' || (c) == L'\t') /* Basic size for one line... */ From 39465487a968df3f0dcfc39ef35a4074ac54302f Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Sat, 7 Jun 2014 20:02:26 +0000 Subject: [PATCH 142/232] [USETUP] Implement scolling through the list of logical partitions. Multiple disks are not supported yet. svn path=/trunk/; revision=63547 --- reactos/base/setup/usetup/interface/usetup.c | 6 +- reactos/base/setup/usetup/partlist.c | 144 ++++++++++++++++--- reactos/base/setup/usetup/partlist.h | 4 +- 3 files changed, 129 insertions(+), 25 deletions(-) diff --git a/reactos/base/setup/usetup/interface/usetup.c b/reactos/base/setup/usetup/interface/usetup.c index e2c394cf5ec..7bc25646673 100644 --- a/reactos/base/setup/usetup/interface/usetup.c +++ b/reactos/base/setup/usetup/interface/usetup.c @@ -1581,12 +1581,14 @@ SelectPartitionPage(PINPUT_RECORD Ir) else if ((Ir->Event.KeyEvent.uChar.AsciiChar == 0x00) && (Ir->Event.KeyEvent.wVirtualKeyCode == VK_DOWN)) /* DOWN */ { - ScrollDownPartitionList(PartitionList); + if (ScrollDownPartitionList(PartitionList)) + DrawPartitionList(PartitionList); } else if ((Ir->Event.KeyEvent.uChar.AsciiChar == 0x00) && (Ir->Event.KeyEvent.wVirtualKeyCode == VK_UP)) /* UP */ { - ScrollUpPartitionList(PartitionList); + if (ScrollUpPartitionList(PartitionList)) + DrawPartitionList(PartitionList); } else if (Ir->Event.KeyEvent.wVirtualKeyCode == VK_RETURN) /* ENTER */ { diff --git a/reactos/base/setup/usetup/partlist.c b/reactos/base/setup/usetup/partlist.c index 61b93a2582f..b8aad4ad9ae 100644 --- a/reactos/base/setup/usetup/partlist.c +++ b/reactos/base/setup/usetup/partlist.c @@ -1174,6 +1174,29 @@ AddDiskToList( DumpPartitionTable(DiskEntry); #endif + if (DiskEntry->LayoutBuffer->PartitionEntry[0].StartingOffset.QuadPart != 0 && + DiskEntry->LayoutBuffer->PartitionEntry[0].PartitionLength.QuadPart != 0 && + DiskEntry->LayoutBuffer->PartitionEntry[0].PartitionType != 0) + { + if ((DiskEntry->LayoutBuffer->PartitionEntry[0].StartingOffset.QuadPart / DiskEntry->BytesPerSector) % DiskEntry->SectorsPerTrack == 0) + { + DPRINT1("Use %lu Sector alignment!\n", DiskEntry->SectorsPerTrack); + } + else if (DiskEntry->LayoutBuffer->PartitionEntry[0].StartingOffset.QuadPart % 1048756 == 0) + { + DPRINT1("Use megabyte (%lu Sectors) alignment!\n", 1048756 / DiskEntry->BytesPerSector); + } + else + { + DPRINT1("No matching aligment found! Partiton 1 starts at %I64u\n", DiskEntry->LayoutBuffer->PartitionEntry[0].StartingOffset.QuadPart); + } + } + else + { + DPRINT1("No valid partiton table found! Use megabyte (%lu Sectors) alignment!\n", 1048756 / DiskEntry->BytesPerSector); + } + + if (DiskEntry->LayoutBuffer->PartitionCount == 0) { DiskEntry->NewDisk = TRUE; @@ -1986,33 +2009,80 @@ SelectPartition( } -VOID +BOOL ScrollDownPartitionList( PPARTLIST List) { // PDISKENTRY DiskEntry; PPARTENTRY PartEntry; -// PLIST_ENTRY Entry1; - PLIST_ENTRY Entry2; + PLIST_ENTRY Entry; /* Check for empty disks */ if (IsListEmpty(&List->DiskListHead)) - return; + return FALSE; + /* Check for next usable entry on current disk */ if (List->CurrentPartition != NULL) { - Entry2 = List->CurrentPartition->ListEntry.Flink; - if (Entry2 != &List->CurrentDisk->PrimaryPartListHead) + if (List->CurrentPartition->LogicalPartition) { - PartEntry = CONTAINING_RECORD(Entry2, PARTENTRY, ListEntry); + /* Logical partition */ - List->CurrentPartition = PartEntry; - DrawPartitionList(List); - return; + Entry = List->CurrentPartition->ListEntry.Flink; + if (Entry != &List->CurrentDisk->LogicalPartListHead) + { + /* Next logical partition */ + PartEntry = CONTAINING_RECORD(Entry, PARTENTRY, ListEntry); + + List->CurrentPartition = PartEntry; + return TRUE; + } + else + { + Entry = List->CurrentDisk->ExtendedPartition->ListEntry.Flink; + if (Entry != &List->CurrentDisk->PrimaryPartListHead) + { + PartEntry = CONTAINING_RECORD(Entry, PARTENTRY, ListEntry); + + List->CurrentPartition = PartEntry; + return TRUE; + } + } + } + else + { + /* Primary or extended partition */ + + if (IsContainerPartition(List->CurrentPartition->PartitionType)) + { + /* First logical partition */ + Entry = List->CurrentDisk->LogicalPartListHead.Flink; + if (Entry != &List->CurrentDisk->LogicalPartListHead) + { + PartEntry = CONTAINING_RECORD(Entry, PARTENTRY, ListEntry); + + List->CurrentPartition = PartEntry; + return TRUE; + } + } + else + { + /* Next primary partition */ + Entry = List->CurrentPartition->ListEntry.Flink; + if (Entry != &List->CurrentDisk->PrimaryPartListHead) + { + PartEntry = CONTAINING_RECORD(Entry, PARTENTRY, ListEntry); + + List->CurrentPartition = PartEntry; + return TRUE; + } + } } } + DPRINT1("TODO: Check the next drive!\n"); + #if 0 /* Check for first usable entry on next disk */ if (List->CurrentDisk != NULL) @@ -2037,38 +2107,68 @@ ScrollDownPartitionList( } } #endif + + return FALSE; } -VOID +BOOL ScrollUpPartitionList( PPARTLIST List) { // PDISKENTRY DiskEntry; PPARTENTRY PartEntry; -// PLIST_ENTRY Entry1; - PLIST_ENTRY Entry2; + PLIST_ENTRY Entry; /* Check for empty disks */ if (IsListEmpty(&List->DiskListHead)) - return; + return FALSE; - /* check for previous usable entry on current disk */ + /* Check for previous usable entry on current disk */ if (List->CurrentPartition != NULL) { - Entry2 = List->CurrentPartition->ListEntry.Blink; - if (Entry2 != &List->CurrentDisk->PrimaryPartListHead) + if (List->CurrentPartition->LogicalPartition) { - PartEntry = CONTAINING_RECORD(Entry2, PARTENTRY, ListEntry); + /* Logical partition */ + Entry = List->CurrentPartition->ListEntry.Blink; + if (Entry != &List->CurrentDisk->LogicalPartListHead) + { + /* Previous logical partition */ + PartEntry = CONTAINING_RECORD(Entry, PARTENTRY, ListEntry); + } + else + { + /* Extended partition*/ + PartEntry = List->CurrentDisk->ExtendedPartition; + } List->CurrentPartition = PartEntry; + return TRUE; + } + else + { + /* Primary or extended partition */ + + Entry = List->CurrentPartition->ListEntry.Blink; + if (Entry != &List->CurrentDisk->PrimaryPartListHead) + { + PartEntry = CONTAINING_RECORD(Entry, PARTENTRY, ListEntry); + + if (IsContainerPartition(PartEntry->PartitionType)) + { + Entry = List->CurrentDisk->LogicalPartListHead.Blink; + PartEntry = CONTAINING_RECORD(Entry, PARTENTRY, ListEntry); + } + + List->CurrentPartition = PartEntry; + return TRUE; + } - /* Draw partition list and return */ - DrawPartitionList(List); - return; } } + DPRINT1("TODO: Check the previous drive!\n"); + #if 0 /* check for last usable entry on previous disk */ if (List->CurrentDisk != NULL) @@ -2095,6 +2195,8 @@ ScrollUpPartitionList( } } #endif + + return FALSE; } diff --git a/reactos/base/setup/usetup/partlist.h b/reactos/base/setup/usetup/partlist.h index b276ef3ec81..3423fe65120 100644 --- a/reactos/base/setup/usetup/partlist.h +++ b/reactos/base/setup/usetup/partlist.h @@ -211,11 +211,11 @@ BOOL SetMountedDeviceValues( PPARTLIST List); -VOID +BOOL ScrollDownPartitionList( PPARTLIST List); -VOID +BOOL ScrollUpPartitionList( PPARTLIST List); From d742698726ea5c0393b5b47567242442e8452b63 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sun, 8 Jun 2014 11:56:30 +0000 Subject: [PATCH 143/232] [REG] * Do not rely on RegDeleteTreeW which shouldn't be exported. * We no longer need to define _WIN32_WINNT as 0x600. CORE-8174 svn path=/trunk/; revision=63549 --- reactos/base/applications/cmdutils/reg/CMakeLists.txt | 5 +---- reactos/base/applications/cmdutils/reg/reg.c | 3 ++- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/reactos/base/applications/cmdutils/reg/CMakeLists.txt b/reactos/base/applications/cmdutils/reg/CMakeLists.txt index a6833f9a77c..4efbd6bd5eb 100644 --- a/reactos/base/applications/cmdutils/reg/CMakeLists.txt +++ b/reactos/base/applications/cmdutils/reg/CMakeLists.txt @@ -1,8 +1,5 @@ -remove_definitions(-D_WIN32_WINNT=0x502) -add_definitions(-D_WIN32_WINNT=0x600) - add_executable(reg reg.c reg.rc) set_module_type(reg win32cui UNICODE) -add_importlibs(reg advapi32 user32 msvcrt kernel32) +add_importlibs(reg advapi32 user32 shlwapi msvcrt kernel32) add_cd_file(TARGET reg DESTINATION reactos/system32 FOR all) diff --git a/reactos/base/applications/cmdutils/reg/reg.c b/reactos/base/applications/cmdutils/reg/reg.c index b7144eae51c..19e383a5d96 100644 --- a/reactos/base/applications/cmdutils/reg/reg.c +++ b/reactos/base/applications/cmdutils/reg/reg.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include "reg.h" @@ -293,7 +294,7 @@ static int reg_delete(WCHAR *key_name, WCHAR *value_name, BOOL value_empty, /* Delete subtree only if no /v* option is given */ if (!value_name && !value_empty && !value_all) { - if (RegDeleteTreeW(root,p)!=ERROR_SUCCESS) + if (SHDeleteKey(root, p) != ERROR_SUCCESS) { reg_message(STRING_CANNOT_FIND); return 1; From ee29688b8d8d2ac82b3b368fa3420bf9f820c755 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sun, 8 Jun 2014 12:02:59 +0000 Subject: [PATCH 144/232] [DEVENUM] * Do not rely on RegDeleteTreeW which shouldn't be exported. * We no longer need to define _WIN32_WINNT as 0x600. CORE-8174 svn path=/trunk/; revision=63550 --- reactos/dll/directx/wine/devenum/CMakeLists.txt | 5 +---- reactos/dll/directx/wine/devenum/createdevenum.c | 11 ++++++----- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/reactos/dll/directx/wine/devenum/CMakeLists.txt b/reactos/dll/directx/wine/devenum/CMakeLists.txt index 5768de217ba..8af2acf7b4d 100644 --- a/reactos/dll/directx/wine/devenum/CMakeLists.txt +++ b/reactos/dll/directx/wine/devenum/CMakeLists.txt @@ -1,7 +1,4 @@ -remove_definitions(-D_WIN32_WINNT=0x502) -add_definitions(-D_WIN32_WINNT=0x600) - add_definitions(-D__WINESRC__) include_directories(${REACTOS_SOURCE_DIR}/include/reactos/wine) spec2def(devenum.dll devenum.spec) @@ -22,7 +19,7 @@ add_library(devenum SHARED set_source_files_properties(devenum.rc PROPERTIES OBJECT_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/devenum_classes.rgs) set_module_type(devenum win32dll UNICODE) target_link_libraries(devenum strmiids uuid wine) -add_importlibs(devenum advapi32 ole32 oleaut32 winmm user32 avicap32 msvcrt kernel32 ntdll) +add_importlibs(devenum advapi32 ole32 oleaut32 winmm user32 avicap32 shlwapi msvcrt kernel32 ntdll) add_delay_importlibs(devenum msvfw32) add_pch(devenum devenum_private.h SOURCE) add_cd_file(TARGET devenum DESTINATION reactos/system32 FOR all) diff --git a/reactos/dll/directx/wine/devenum/createdevenum.c b/reactos/dll/directx/wine/devenum/createdevenum.c index 29ba0e8ca33..77808b2bc94 100644 --- a/reactos/dll/directx/wine/devenum/createdevenum.c +++ b/reactos/dll/directx/wine/devenum/createdevenum.c @@ -27,6 +27,7 @@ #include #include +#include #include "resource.h" @@ -675,15 +676,15 @@ static HRESULT DEVENUM_CreateSpecialCategories(void) * or switched from pulseaudio to alsa, delete all old devices first */ if (SUCCEEDED(DEVENUM_GetCategoryKey(&CLSID_AudioRendererCategory, &basekey, path, MAX_PATH))) - RegDeleteTreeW(basekey, path); + SHDeleteKeyW(basekey, path); if (SUCCEEDED(DEVENUM_GetCategoryKey(&CLSID_AudioInputDeviceCategory, &basekey, path, MAX_PATH))) - RegDeleteTreeW(basekey, path); + SHDeleteKeyW(basekey, path); if (SUCCEEDED(DEVENUM_GetCategoryKey(&CLSID_VideoInputDeviceCategory, &basekey, path, MAX_PATH))) - RegDeleteTreeW(basekey, path); + SHDeleteKeyW(basekey, path); if (SUCCEEDED(DEVENUM_GetCategoryKey(&CLSID_MidiRendererCategory, &basekey, path, MAX_PATH))) - RegDeleteTreeW(basekey, path); + SHDeleteKeyW(basekey, path); if (SUCCEEDED(DEVENUM_GetCategoryKey(&CLSID_VideoCompressorCategory, &basekey, path, MAX_PATH))) - RegDeleteTreeW(basekey, path); + SHDeleteKeyW(basekey, path); rf2.dwVersion = 2; rf2.dwMerit = MERIT_PREFERRED; From 60de098b286b97519f51f1d48e298fa89b53f023 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sun, 8 Jun 2014 12:08:16 +0000 Subject: [PATCH 145/232] * Use SHDeleteKeyW explicitly here. svn path=/trunk/; revision=63551 --- reactos/base/applications/cmdutils/reg/reg.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/base/applications/cmdutils/reg/reg.c b/reactos/base/applications/cmdutils/reg/reg.c index 19e383a5d96..7a667b6cff4 100644 --- a/reactos/base/applications/cmdutils/reg/reg.c +++ b/reactos/base/applications/cmdutils/reg/reg.c @@ -294,7 +294,7 @@ static int reg_delete(WCHAR *key_name, WCHAR *value_name, BOOL value_empty, /* Delete subtree only if no /v* option is given */ if (!value_name && !value_empty && !value_all) { - if (SHDeleteKey(root, p) != ERROR_SUCCESS) + if (SHDeleteKeyW(root, p) != ERROR_SUCCESS) { reg_message(STRING_CANNOT_FIND); return 1; From bf89f9e6bb1efeb476409226a473ed09b385a7c3 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sun, 8 Jun 2014 12:14:06 +0000 Subject: [PATCH 146/232] [QUARTZ] * Do not rely on RegDeleteTree{A,W} which shouldn't be exported. * Move shlwapi.h inclusion to the PCH. * We no longer need to define _WIN32_WINNT as 0x600. CORE-8174 svn path=/trunk/; revision=63552 --- reactos/dll/directx/wine/quartz/CMakeLists.txt | 3 --- reactos/dll/directx/wine/quartz/filesource.c | 2 -- reactos/dll/directx/wine/quartz/filtermapper.c | 4 ++-- reactos/dll/directx/wine/quartz/quartz_private.h | 1 + reactos/dll/directx/wine/quartz/regsvr.c | 12 ++++++------ 5 files changed, 9 insertions(+), 13 deletions(-) diff --git a/reactos/dll/directx/wine/quartz/CMakeLists.txt b/reactos/dll/directx/wine/quartz/CMakeLists.txt index 490448bd0f7..50040af12c9 100644 --- a/reactos/dll/directx/wine/quartz/CMakeLists.txt +++ b/reactos/dll/directx/wine/quartz/CMakeLists.txt @@ -1,7 +1,4 @@ -remove_definitions(-D_WIN32_WINNT=0x502) -add_definitions(-D_WIN32_WINNT=0x600) - add_definitions( -D__WINESRC__ -DENTRY_PREFIX=QUARTZ_ diff --git a/reactos/dll/directx/wine/quartz/filesource.c b/reactos/dll/directx/wine/quartz/filesource.c index 4a26313ba2c..e63a5f42cdc 100644 --- a/reactos/dll/directx/wine/quartz/filesource.c +++ b/reactos/dll/directx/wine/quartz/filesource.c @@ -20,8 +20,6 @@ #include "quartz_private.h" -#include - static const WCHAR wszOutputPinName[] = { 'O','u','t','p','u','t',0 }; typedef struct AsyncReader diff --git a/reactos/dll/directx/wine/quartz/filtermapper.c b/reactos/dll/directx/wine/quartz/filtermapper.c index 97129e26d4a..704ea5a0aed 100644 --- a/reactos/dll/directx/wine/quartz/filtermapper.c +++ b/reactos/dll/directx/wine/quartz/filtermapper.c @@ -1513,7 +1513,7 @@ static HRESULT WINAPI FilterMapper_UnregisterFilter(IFilterMapper * iface, CLSID if (lRet != ERROR_SUCCESS) hr = HRESULT_FROM_WIN32(lRet); - lRet = RegDeleteTreeW(hKey, wszPins); + lRet = SHDeleteKeyW(hKey, wszPins); if (lRet != ERROR_SUCCESS) hr = HRESULT_FROM_WIN32(lRet); @@ -1572,7 +1572,7 @@ static HRESULT WINAPI FilterMapper_UnregisterPin(IFilterMapper * iface, CLSID Fi strcatW(wszPinNameKey, wszSlash); strcatW(wszPinNameKey, Name); - lRet = RegDeleteTreeW(hKey, wszPinNameKey); + lRet = SHDeleteKeyW(hKey, wszPinNameKey); hr = HRESULT_FROM_WIN32(lRet); CoTaskMemFree(wszPinNameKey); } diff --git a/reactos/dll/directx/wine/quartz/quartz_private.h b/reactos/dll/directx/wine/quartz/quartz_private.h index ae3a276fda1..c85a03326db 100644 --- a/reactos/dll/directx/wine/quartz/quartz_private.h +++ b/reactos/dll/directx/wine/quartz/quartz_private.h @@ -41,6 +41,7 @@ #include #include #include +#include #include #include diff --git a/reactos/dll/directx/wine/quartz/regsvr.c b/reactos/dll/directx/wine/quartz/regsvr.c index bbf519c8877..686257daa87 100644 --- a/reactos/dll/directx/wine/quartz/regsvr.c +++ b/reactos/dll/directx/wine/quartz/regsvr.c @@ -240,7 +240,7 @@ static HRESULT unregister_interfaces(struct regsvr_interface const *list) WCHAR buf[39]; StringFromGUID2(list->iid, buf, 39); - res = RegDeleteTreeW(interface_key, buf); + res = SHDeleteKeyW(interface_key, buf); if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS; } @@ -346,18 +346,18 @@ static HRESULT unregister_coclasses(struct regsvr_coclass const *list) WCHAR buf[39]; StringFromGUID2(list->clsid, buf, 39); - res = RegDeleteTreeW(coclass_key, buf); + res = SHDeleteKeyW(coclass_key, buf); if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS; if (res != ERROR_SUCCESS) goto error_close_coclass_key; if (list->progid) { - res = RegDeleteTreeA(HKEY_CLASSES_ROOT, list->progid); + res = SHDeleteKeyA(HKEY_CLASSES_ROOT, list->progid); if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS; if (res != ERROR_SUCCESS) goto error_close_coclass_key; } if (list->viprogid) { - res = RegDeleteTreeA(HKEY_CLASSES_ROOT, list->viprogid); + res = SHDeleteKeyA(HKEY_CLASSES_ROOT, list->viprogid); if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS; if (res != ERROR_SUCCESS) goto error_close_coclass_key; } @@ -500,7 +500,7 @@ static HRESULT unregister_mediatypes_parsing(struct regsvr_mediatype_parsing con if (res != ERROR_SUCCESS) break; StringFromGUID2(list->subtype, buf, 39); - res = RegDeleteTreeW(majortype_key, buf); + res = SHDeleteKeyW(majortype_key, buf); if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS; /* Removed majortype key if there is no more subtype key */ @@ -535,7 +535,7 @@ static HRESULT unregister_mediatypes_extension(struct regsvr_mediatype_extension res = ERROR_SUCCESS; else if (res == ERROR_SUCCESS) for (; res == ERROR_SUCCESS && list->majortype; ++list) { - res = RegDeleteTreeA(extensions_root_key, list->extension); + res = SHDeleteKeyA(extensions_root_key, list->extension); if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS; } From 74e0de1a68444b5e8258302dfddabd52d4363bb8 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sun, 8 Jun 2014 12:45:39 +0000 Subject: [PATCH 147/232] [CRYPT32] * Do not rely on RegDeleteTreeW which shouldn't be exported. * We no longer need to define _WIN32_WINNT as 0x600. CORE-8174 svn path=/trunk/; revision=63553 --- reactos/dll/win32/crypt32/CMakeLists.txt | 5 +---- reactos/dll/win32/crypt32/regstore.c | 8 +++++--- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/reactos/dll/win32/crypt32/CMakeLists.txt b/reactos/dll/win32/crypt32/CMakeLists.txt index a4eedfafdcb..b10d63891ab 100644 --- a/reactos/dll/win32/crypt32/CMakeLists.txt +++ b/reactos/dll/win32/crypt32/CMakeLists.txt @@ -4,9 +4,6 @@ add_definitions( -D_WINE -D_CRYPT32_) -remove_definitions(-D_WIN32_WINNT=0x502) -add_definitions(-D_WIN32_WINNT=0x600) - include_directories(${REACTOS_SOURCE_DIR}/include/reactos/wine) spec2def(crypt32.dll crypt32.spec ADD_IMPORTLIB) @@ -45,7 +42,7 @@ add_library(crypt32 SHARED set_module_type(crypt32 win32dll) target_link_libraries(crypt32 wine ${PSEH_LIB} oldnames) -add_importlibs(crypt32 user32 advapi32 msvcrt kernel32 ntdll) +add_importlibs(crypt32 user32 advapi32 shlwapi msvcrt kernel32 ntdll) add_delay_importlibs(crypt32 cryptnet) add_pch(crypt32 crypt32_private.h SOURCE) add_cd_file(TARGET crypt32 DESTINATION reactos/system32 FOR all) diff --git a/reactos/dll/win32/crypt32/regstore.c b/reactos/dll/win32/crypt32/regstore.c index f90103da8f9..364ad0d4a67 100644 --- a/reactos/dll/win32/crypt32/regstore.c +++ b/reactos/dll/win32/crypt32/regstore.c @@ -18,6 +18,8 @@ #include "crypt32_private.h" +#include + WINE_DEFAULT_DEBUG_CHANNEL(crypt); typedef struct _WINE_HASH_TO_DELETE @@ -507,12 +509,12 @@ WINECRYPT_CERTSTORE *CRYPT_RegOpenStore(HCRYPTPROV hCryptProv, DWORD dwFlags, if (dwFlags & CERT_STORE_DELETE_FLAG) { - DWORD rc = RegDeleteTreeW((HKEY)pvPara, CertsW); + DWORD rc = SHDeleteKeyW((HKEY)pvPara, CertsW); if (rc == ERROR_SUCCESS || rc == ERROR_NO_MORE_ITEMS) - rc = RegDeleteTreeW((HKEY)pvPara, CRLsW); + rc = SHDeleteKeyW((HKEY)pvPara, CRLsW); if (rc == ERROR_SUCCESS || rc == ERROR_NO_MORE_ITEMS) - rc = RegDeleteTreeW((HKEY)pvPara, CTLsW); + rc = SHDeleteKeyW((HKEY)pvPara, CTLsW); if (rc == ERROR_NO_MORE_ITEMS) rc = ERROR_SUCCESS; SetLastError(rc); From 5814ee76b399623a5881a89cdc528984cc7c85a0 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sun, 8 Jun 2014 14:51:07 +0000 Subject: [PATCH 148/232] [LOCALSPL] * Do not rely on RegDeleteTreeW which shouldn't be exported. * We no longer need to define _WIN32_WINNT as 0x600. CORE-8174 svn path=/trunk/; revision=63554 --- reactos/dll/win32/localspl/CMakeLists.txt | 5 +---- reactos/dll/win32/localspl/provider.c | 3 ++- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/reactos/dll/win32/localspl/CMakeLists.txt b/reactos/dll/win32/localspl/CMakeLists.txt index 17d814e6a53..92e88073716 100644 --- a/reactos/dll/win32/localspl/CMakeLists.txt +++ b/reactos/dll/win32/localspl/CMakeLists.txt @@ -1,7 +1,4 @@ -remove_definitions(-D_WIN32_WINNT=0x502) -add_definitions(-D_WIN32_WINNT=0x600) - add_definitions(-D__WINESRC__) include_directories(${REACTOS_SOURCE_DIR}/include/reactos/wine) spec2def(localspl.dll localspl.spec) @@ -20,6 +17,6 @@ add_library(localspl SHARED set_module_type(localspl win32dll) target_link_libraries(localspl wine) -add_importlibs(localspl spoolss user32 advapi32 msvcrt kernel32 ntdll) +add_importlibs(localspl spoolss user32 advapi32 shlwapi msvcrt kernel32 ntdll) add_pch(localspl localspl_private.h SOURCE) add_cd_file(TARGET localspl DESTINATION reactos/system32 FOR all) diff --git a/reactos/dll/win32/localspl/provider.c b/reactos/dll/win32/localspl/provider.c index fb4686101e0..fbdb2e67337 100644 --- a/reactos/dll/win32/localspl/provider.c +++ b/reactos/dll/win32/localspl/provider.c @@ -20,6 +20,7 @@ #include "localspl_private.h" +#include #include /* ############################### */ @@ -1846,7 +1847,7 @@ static BOOL WINAPI fpDeleteMonitor(LPWSTR pName, LPWSTR pEnvironment, LPWSTR pMo return FALSE; } - if(RegDeleteTreeW(hroot, pMonitorName) == ERROR_SUCCESS) { + if(SHDeleteKeyW(hroot, pMonitorName) == ERROR_SUCCESS) { TRACE("%s deleted\n", debugstr_w(pMonitorName)); RegCloseKey(hroot); return TRUE; From f55a509638ba9c843c7b059f055f7f78cf7e5d0f Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sun, 8 Jun 2014 15:00:51 +0000 Subject: [PATCH 149/232] [MSCTF] * Do not rely on RegDeleteTreeW which shouldn't be exported. * We no longer need to define _WIN32_WINNT as 0x600. CORE-8174 svn path=/trunk/; revision=63555 --- reactos/dll/win32/msctf/CMakeLists.txt | 5 +---- reactos/dll/win32/msctf/categorymgr.c | 4 ++-- reactos/dll/win32/msctf/inputprocessor.c | 4 ++-- reactos/dll/win32/msctf/msctf_internal.h | 1 + 4 files changed, 6 insertions(+), 8 deletions(-) diff --git a/reactos/dll/win32/msctf/CMakeLists.txt b/reactos/dll/win32/msctf/CMakeLists.txt index 63be882bff0..fae9512e042 100644 --- a/reactos/dll/win32/msctf/CMakeLists.txt +++ b/reactos/dll/win32/msctf/CMakeLists.txt @@ -1,7 +1,4 @@ -remove_definitions(-D_WIN32_WINNT=0x502) -add_definitions(-D_WIN32_WINNT=0x600) - add_definitions(-D__WINESRC__) include_directories(${REACTOS_SOURCE_DIR}/include/reactos/wine) spec2def(msctf.dll msctf.spec) @@ -27,6 +24,6 @@ add_library(msctf SHARED set_module_type(msctf win32dll) target_link_libraries(msctf uuid wine) -add_importlibs(msctf ole32 oleaut32 user32 advapi32 msvcrt kernel32 ntdll) +add_importlibs(msctf ole32 oleaut32 user32 advapi32 shlwapi msvcrt kernel32 ntdll) add_pch(msctf msctf_internal.h SOURCE) add_cd_file(TARGET msctf DESTINATION reactos/system32 FOR all) diff --git a/reactos/dll/win32/msctf/categorymgr.c b/reactos/dll/win32/msctf/categorymgr.c index 509494fd0ed..8d7241377be 100644 --- a/reactos/dll/win32/msctf/categorymgr.c +++ b/reactos/dll/win32/msctf/categorymgr.c @@ -154,9 +154,9 @@ static HRESULT WINAPI CategoryMgr_UnregisterCategory ( ITfCategoryMgr *iface, sprintfW(fullkey,fmt2,ctg,ctg,buf,buf2); sprintfW(fullkey,fmt2,ctg,itm,buf2,buf); - RegDeleteTreeW(tipkey, fullkey); + SHDeleteKeyW(tipkey, fullkey); sprintfW(fullkey,fmt2,ctg,itm,buf2,buf); - RegDeleteTreeW(tipkey, fullkey); + SHDeleteKeyW(tipkey, fullkey); RegCloseKey(tipkey); return S_OK; diff --git a/reactos/dll/win32/msctf/inputprocessor.c b/reactos/dll/win32/msctf/inputprocessor.c index 7d22540f046..f7561a959bc 100644 --- a/reactos/dll/win32/msctf/inputprocessor.c +++ b/reactos/dll/win32/msctf/inputprocessor.c @@ -227,8 +227,8 @@ static HRESULT WINAPI InputProcessorProfiles_Unregister( StringFromGUID2(rclsid, buf, 39); sprintfW(fullkey,szwTipfmt,szwSystemTIPKey,buf); - RegDeleteTreeW(HKEY_LOCAL_MACHINE, fullkey); - RegDeleteTreeW(HKEY_CURRENT_USER, fullkey); + SHDeleteKeyW(HKEY_LOCAL_MACHINE, fullkey); + SHDeleteKeyW(HKEY_CURRENT_USER, fullkey); return S_OK; } diff --git a/reactos/dll/win32/msctf/msctf_internal.h b/reactos/dll/win32/msctf/msctf_internal.h index e59765daf50..c6b26436f66 100644 --- a/reactos/dll/win32/msctf/msctf_internal.h +++ b/reactos/dll/win32/msctf/msctf_internal.h @@ -37,6 +37,7 @@ #include #include #include +#include #include #include From 8db88e614554428c824dc728fe2589941c79a065 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sun, 8 Jun 2014 17:01:26 +0000 Subject: [PATCH 150/232] [NTMARTA] * {Set,Query}SecurityAccessMask should not be exported. * We no longer need to define _WIN32_WINNT as 0x600. CORE-8174 svn path=/trunk/; revision=63556 --- reactos/dll/win32/ntmarta/CMakeLists.txt | 4 --- reactos/dll/win32/ntmarta/ntmarta.c | 37 ++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 4 deletions(-) diff --git a/reactos/dll/win32/ntmarta/CMakeLists.txt b/reactos/dll/win32/ntmarta/CMakeLists.txt index 1cfea80cb4b..1890871ab5d 100644 --- a/reactos/dll/win32/ntmarta/CMakeLists.txt +++ b/reactos/dll/win32/ntmarta/CMakeLists.txt @@ -1,10 +1,6 @@ - add_definitions(-D__WINESRC__) -remove_definitions(-D_WIN32_WINNT=0x502) -add_definitions(-D_WIN32_WINNT=0x600) - spec2def(ntmarta.dll ntmarta.spec) list(APPEND SOURCE diff --git a/reactos/dll/win32/ntmarta/ntmarta.c b/reactos/dll/win32/ntmarta/ntmarta.c index fa164250039..5549949a63e 100644 --- a/reactos/dll/win32/ntmarta/ntmarta.c +++ b/reactos/dll/win32/ntmarta/ntmarta.c @@ -25,6 +25,7 @@ * UPDATE HISTORY: * 07/26/2005 Created */ + #include "ntmarta.h" #define NDEBUG @@ -32,6 +33,42 @@ HINSTANCE hDllInstance; +/* FIXME: Vista+ API */ +VOID +WINAPI +SetSecurityAccessMask(IN SECURITY_INFORMATION SecurityInformation, + OUT LPDWORD DesiredAccess) +{ + *DesiredAccess = 0; + + if (SecurityInformation & (OWNER_SECURITY_INFORMATION | GROUP_SECURITY_INFORMATION)) + *DesiredAccess |= WRITE_OWNER; + + if (SecurityInformation & DACL_SECURITY_INFORMATION) + *DesiredAccess |= WRITE_DAC; + + if (SecurityInformation & SACL_SECURITY_INFORMATION) + *DesiredAccess |= ACCESS_SYSTEM_SECURITY; +} + +/* FIXME: Vista+ API */ +VOID +WINAPI +QuerySecurityAccessMask(IN SECURITY_INFORMATION SecurityInformation, + OUT LPDWORD DesiredAccess) +{ + *DesiredAccess = 0; + + if (SecurityInformation & (OWNER_SECURITY_INFORMATION | + GROUP_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION)) + { + *DesiredAccess |= READ_CONTROL; + } + + if (SecurityInformation & SACL_SECURITY_INFORMATION) + *DesiredAccess |= ACCESS_SYSTEM_SECURITY; +} + static ACCESS_MODE AccpGetAceAccessMode(IN PACE_HEADER AceHeader) { From ce53530645100c39badc023ee8b4802067e59470 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sun, 8 Jun 2014 17:05:26 +0000 Subject: [PATCH 151/232] [MSI] * Do not rely on RegDeleteTreeW which shouldn't be exported. CORE-8174 svn path=/trunk/; revision=63557 --- reactos/dll/win32/msi/action.c | 2 +- reactos/dll/win32/msi/classes.c | 10 +++++----- reactos/dll/win32/msi/registry.c | 22 +++++++++++----------- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/reactos/dll/win32/msi/action.c b/reactos/dll/win32/msi/action.c index b5c2412baf6..b88d2d03e05 100644 --- a/reactos/dll/win32/msi/action.c +++ b/reactos/dll/win32/msi/action.c @@ -2989,7 +2989,7 @@ static void delete_tree( HKEY root, const WCHAR *path ) HKEY hkey; if (!(hkey = open_key( root, path, FALSE ))) return; - res = RegDeleteTreeW( hkey, NULL ); + res = SHDeleteKeyW( hkey, NULL ); if (res) TRACE("failed to delete subtree of %s (%d)\n", debugstr_w(path), res); delete_key( root, path ); RegCloseKey( hkey ); diff --git a/reactos/dll/win32/msi/classes.c b/reactos/dll/win32/msi/classes.c index eb159798132..513f6c91827 100644 --- a/reactos/dll/win32/msi/classes.c +++ b/reactos/dll/win32/msi/classes.c @@ -953,7 +953,7 @@ UINT ACTION_UnregisterClassInfo( MSIPACKAGE *package ) cls->action = INSTALLSTATE_ABSENT; - res = RegDeleteTreeW( hkey, cls->clsid ); + res = SHDeleteKeyW( hkey, cls->clsid ); if (res != ERROR_SUCCESS) WARN("Failed to delete class key %d\n", res); @@ -975,7 +975,7 @@ UINT ACTION_UnregisterClassInfo( MSIPACKAGE *package ) { strcpyW( filetype, szFileType ); strcatW( filetype, cls->clsid ); - res = RegDeleteTreeW( HKEY_CLASSES_ROOT, filetype ); + res = SHDeleteKeyW( HKEY_CLASSES_ROOT, filetype ); msi_free( filetype ); if (res != ERROR_SUCCESS) @@ -1148,7 +1148,7 @@ UINT ACTION_UnregisterProgIdInfo( MSIPACKAGE *package ) } TRACE("Unregistering progid %s\n", debugstr_w(progid->ProgID)); - res = RegDeleteTreeW( HKEY_CLASSES_ROOT, progid->ProgID ); + res = SHDeleteKeyW( HKEY_CLASSES_ROOT, progid->ProgID ); if (res != ERROR_SUCCESS) TRACE("Failed to delete progid key %d\n", res); @@ -1392,7 +1392,7 @@ UINT ACTION_UnregisterExtensionInfo( MSIPACKAGE *package ) { extension[0] = '.'; strcpyW( extension + 1, ext->Extension ); - res = RegDeleteTreeW( HKEY_CLASSES_ROOT, extension ); + res = SHDeleteKeyW( HKEY_CLASSES_ROOT, extension ); msi_free( extension ); if (res != ERROR_SUCCESS) WARN("Failed to delete extension key %d\n", res); @@ -1414,7 +1414,7 @@ UINT ACTION_UnregisterExtensionInfo( MSIPACKAGE *package ) { strcpyW( progid_shell, progid ); strcatW( progid_shell, shellW ); - res = RegDeleteTreeW( HKEY_CLASSES_ROOT, progid_shell ); + res = SHDeleteKeyW( HKEY_CLASSES_ROOT, progid_shell ); msi_free( progid_shell ); if (res != ERROR_SUCCESS) WARN("Failed to delete shell key %d\n", res); diff --git a/reactos/dll/win32/msi/registry.c b/reactos/dll/win32/msi/registry.c index afa2dfc41ec..2429fa1ee7b 100644 --- a/reactos/dll/win32/msi/registry.c +++ b/reactos/dll/win32/msi/registry.c @@ -477,7 +477,7 @@ UINT MSIREG_DeleteUninstallKey(const WCHAR *product, enum platform platform) strcpyW(keypath, szUninstall); strcatW(keypath, product); } - return RegDeleteTreeW(HKEY_LOCAL_MACHINE, keypath); + return SHDeleteKeyW(HKEY_LOCAL_MACHINE, keypath); } UINT MSIREG_OpenProductKey(LPCWSTR szProduct, LPCWSTR szUserSid, MSIINSTALLCONTEXT context, HKEY *key, BOOL create) @@ -528,7 +528,7 @@ UINT MSIREG_DeleteUserProductKey(LPCWSTR szProduct) strcpyW(keypath, szUserProducts); strcatW(keypath, squished_pc); - return RegDeleteTreeW(HKEY_CURRENT_USER, keypath); + return SHDeleteKeyW(HKEY_CURRENT_USER, keypath); } UINT MSIREG_OpenUserPatchesKey(LPCWSTR szPatch, HKEY *key, BOOL create) @@ -593,7 +593,7 @@ UINT MSIREG_DeleteUserFeaturesKey(LPCWSTR szProduct) strcpyW(keypath, szUserFeatures); strcatW(keypath, squished_pc); - return RegDeleteTreeW(HKEY_CURRENT_USER, keypath); + return SHDeleteKeyW(HKEY_CURRENT_USER, keypath); } static UINT MSIREG_OpenInstallerFeaturesKey(LPCWSTR szProduct, HKEY *key, BOOL create) @@ -707,7 +707,7 @@ UINT MSIREG_DeleteUserDataComponentKey(LPCWSTR szComponent, LPCWSTR szUserSid) sprintfW(keypath, szUserDataComponents_fmt, szUserSid); if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, keypath, 0, access, &hkey)) return ERROR_SUCCESS; - r = RegDeleteTreeW(hkey, comp); + r = SHDeleteKeyW(hkey, comp); RegCloseKey(hkey); return r; } @@ -788,7 +788,7 @@ UINT MSIREG_DeleteUserDataPatchKey(LPCWSTR patch, MSIINSTALLCONTEXT context) LocalFree(usersid); } if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, keypath, 0, access, &hkey)) return ERROR_SUCCESS; - r = RegDeleteTreeW(hkey, squished_patch); + r = SHDeleteKeyW(hkey, squished_patch); RegCloseKey(hkey); return r; } @@ -865,7 +865,7 @@ UINT MSIREG_DeleteUserDataProductKey(LPCWSTR szProduct) LocalFree(usersid); if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, keypath, 0, access, &hkey)) return ERROR_SUCCESS; - r = RegDeleteTreeW(hkey, squished_pc); + r = SHDeleteKeyW(hkey, squished_pc); RegCloseKey(hkey); return r; } @@ -881,7 +881,7 @@ UINT MSIREG_DeleteProductKey(LPCWSTR szProduct) TRACE("%s squished %s\n", debugstr_w(szProduct), debugstr_w(squished_pc)); if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, szInstaller_Products, 0, access, &hkey)) return ERROR_SUCCESS; - r = RegDeleteTreeW(hkey, squished_pc); + r = SHDeleteKeyW(hkey, squished_pc); RegCloseKey(hkey); return r; } @@ -938,7 +938,7 @@ UINT MSIREG_DeleteUserUpgradeCodesKey(LPCWSTR szUpgradeCode) strcpyW(keypath, szInstaller_UserUpgradeCodes); strcatW(keypath, squished_pc); - return RegDeleteTreeW(HKEY_CURRENT_USER, keypath); + return SHDeleteKeyW(HKEY_CURRENT_USER, keypath); } UINT MSIREG_DeleteLocalClassesProductKey(LPCWSTR szProductCode) @@ -952,7 +952,7 @@ UINT MSIREG_DeleteLocalClassesProductKey(LPCWSTR szProductCode) TRACE("%s squished %s\n", debugstr_w(szProductCode), debugstr_w(squished_pc)); if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, szInstaller_LocalClassesProducts, 0, access, &hkey)) return ERROR_SUCCESS; - r = RegDeleteTreeW(hkey, squished_pc); + r = SHDeleteKeyW(hkey, squished_pc); RegCloseKey(hkey); return r; } @@ -968,7 +968,7 @@ UINT MSIREG_DeleteLocalClassesFeaturesKey(LPCWSTR szProductCode) TRACE("%s squished %s\n", debugstr_w(szProductCode), debugstr_w(squished_pc)); if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, szInstaller_LocalClassesFeatures, 0, access, &hkey)) return ERROR_SUCCESS; - r = RegDeleteTreeW(hkey, squished_pc); + r = SHDeleteKeyW(hkey, squished_pc); RegCloseKey(hkey); return r; } @@ -999,7 +999,7 @@ UINT MSIREG_DeleteClassesUpgradeCodesKey(LPCWSTR szUpgradeCode) TRACE("%s squished %s\n", debugstr_w(szUpgradeCode), debugstr_w(squished_pc)); if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, szInstaller_ClassesUpgradeCodes, 0, access, &hkey)) return ERROR_SUCCESS; - r = RegDeleteTreeW(hkey, squished_pc); + r = SHDeleteKeyW(hkey, squished_pc); RegCloseKey(hkey); return r; } From b3282a34405c340a69add02698dfcee1a73001ef Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sun, 8 Jun 2014 17:11:47 +0000 Subject: [PATCH 152/232] [RPCRT4] * Do not rely on RegDeleteTreeW which shouldn't be exported. CORE-8174 svn path=/trunk/; revision=63558 --- reactos/dll/win32/rpcrt4/CMakeLists.txt | 2 +- reactos/dll/win32/rpcrt4/cpsf.c | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/reactos/dll/win32/rpcrt4/CMakeLists.txt b/reactos/dll/win32/rpcrt4/CMakeLists.txt index fa024a5ee24..85207ed0121 100644 --- a/reactos/dll/win32/rpcrt4/CMakeLists.txt +++ b/reactos/dll/win32/rpcrt4/CMakeLists.txt @@ -52,6 +52,6 @@ set_module_type(rpcrt4 win32dll) target_link_libraries(rpcrt4 wine uuid ${PSEH_LIB}) add_delay_importlibs(rpcrt4 iphlpapi wininet secur32 user32) -add_importlibs(rpcrt4 msvcrt advapi32 ws2_32 kernel32 ntdll) +add_importlibs(rpcrt4 advapi32 ws2_32 shlwapi msvcrt kernel32 ntdll) add_pch(rpcrt4 precomp.h SOURCE) add_cd_file(TARGET rpcrt4 DESTINATION reactos/system32 FOR all) diff --git a/reactos/dll/win32/rpcrt4/cpsf.c b/reactos/dll/win32/rpcrt4/cpsf.c index 72029a66889..888b057c73d 100644 --- a/reactos/dll/win32/rpcrt4/cpsf.c +++ b/reactos/dll/win32/rpcrt4/cpsf.c @@ -22,6 +22,12 @@ #include +#define NO_SHLWAPI_PATH +#define NO_SHLWAPI_STRFCNS +#define NO_SHLWAPI_GDI +#define NO_SHLWAPI_STREAM +#include + WINE_DEFAULT_DEBUG_CHANNEL(ole); static void format_clsid( WCHAR *buffer, const CLSID *clsid ) @@ -308,7 +314,7 @@ HRESULT WINAPI NdrDllUnregisterProxy(HMODULE hDll, strcpyW( keyname, interfaceW ); format_clsid( keyname + strlenW(keyname), proxy->header.piid ); - RegDeleteTreeW(HKEY_CLASSES_ROOT, keyname); + SHDeleteKeyW(HKEY_CLASSES_ROOT, keyname); } pProxyFileList++; } @@ -316,7 +322,7 @@ HRESULT WINAPI NdrDllUnregisterProxy(HMODULE hDll, /* unregister clsid */ strcpyW( keyname, clsidW ); strcatW( keyname, clsid ); - RegDeleteTreeW(HKEY_CLASSES_ROOT, keyname); + SHDeleteKeyW(HKEY_CLASSES_ROOT, keyname); return S_OK; } From 1476e535cf9ab7efd00bffb5c2bb17baae54218c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Sun, 8 Jun 2014 17:26:07 +0000 Subject: [PATCH 153/232] [CONSRV] Have you ever dreamt of doing per-line text selection in a windows-like console, instead of only being able to select rectangular blocks of text? Even if it is still not possible on Windows (unless you use one of those hackish hooking libraries on the Internet to do that), it now becomes possible on ReactOS!! Just press Ctrl while you're selecting text, and enjoy! Also, you need to keep Ctrl key pressed while you release the mouse (if you select text via the mouse), to be (afterwards) able to copy the text in line-mode, otherwise it will switch back to block-mode selection. Enjoy! svn path=/trunk/; revision=63559 --- .../user/winsrv/consrv/frontends/gui/conwnd.c | 263 +++++++++++++----- .../user/winsrv/consrv/frontends/gui/conwnd.h | 1 + .../user/winsrv/consrv/frontends/gui/text.c | 172 ++++++++++-- 3 files changed, 352 insertions(+), 84 deletions(-) diff --git a/reactos/win32ss/user/winsrv/consrv/frontends/gui/conwnd.c b/reactos/win32ss/user/winsrv/consrv/frontends/gui/conwnd.c index adbbb08c313..9c1a248757f 100644 --- a/reactos/win32ss/user/winsrv/consrv/frontends/gui/conwnd.c +++ b/reactos/win32ss/user/winsrv/consrv/frontends/gui/conwnd.c @@ -301,7 +301,9 @@ Copy(PGUI_CONSOLE_DATA GuiData); static VOID Paste(PGUI_CONSOLE_DATA GuiData); static VOID -UpdateSelection(PGUI_CONSOLE_DATA GuiData, PCOORD coord); +UpdateSelection(PGUI_CONSOLE_DATA GuiData, + PCOORD SelectionAnchor OPTIONAL, + PCOORD coord); static VOID Mark(PGUI_CONSOLE_DATA GuiData) @@ -309,30 +311,28 @@ Mark(PGUI_CONSOLE_DATA GuiData) PCONSOLE_SCREEN_BUFFER ActiveBuffer = GuiData->ActiveBuffer; /* Clear the old selection */ - // UpdateSelection(GuiData, NULL); GuiData->Selection.dwFlags = CONSOLE_NO_SELECTION; /* Restart a new selection */ - GuiData->dwSelectionCursor.X = ActiveBuffer->ViewOrigin.X; - GuiData->dwSelectionCursor.Y = ActiveBuffer->ViewOrigin.Y; - GuiData->Selection.dwSelectionAnchor = GuiData->dwSelectionCursor; - UpdateSelection(GuiData, &GuiData->Selection.dwSelectionAnchor); + GuiData->dwSelectionCursor = ActiveBuffer->ViewOrigin; + UpdateSelection(GuiData, + &GuiData->dwSelectionCursor, + &GuiData->dwSelectionCursor); } static VOID SelectAll(PGUI_CONSOLE_DATA GuiData) { PCONSOLE_SCREEN_BUFFER ActiveBuffer = GuiData->ActiveBuffer; + COORD SelectionAnchor; /* Clear the old selection */ - // UpdateSelection(GuiData, NULL); GuiData->Selection.dwFlags = CONSOLE_NO_SELECTION; /* * The selection area extends to the whole screen buffer's width. */ - GuiData->Selection.dwSelectionAnchor.X = 0; - GuiData->Selection.dwSelectionAnchor.Y = 0; + SelectionAnchor.X = SelectionAnchor.Y = 0; GuiData->dwSelectionCursor.X = ActiveBuffer->ScreenBufferSize.X - 1; /* @@ -358,7 +358,7 @@ SelectAll(PGUI_CONSOLE_DATA GuiData) /* Restart a new selection */ GuiData->Selection.dwFlags |= CONSOLE_MOUSE_SELECTION; - UpdateSelection(GuiData, &GuiData->dwSelectionCursor); + UpdateSelection(GuiData, &SelectionAnchor, &GuiData->dwSelectionCursor); } static LRESULT @@ -678,18 +678,171 @@ SmallRectToRect(PGUI_CONSOLE_DATA GuiData, PRECT Rect, PSMALL_RECT SmallRect) Rect->bottom = (SmallRect->Bottom + 1 - Buffer->ViewOrigin.Y) * HeightUnit; } +VOID +GetSelectionBeginEnd(PCOORD Begin, PCOORD End, + PCOORD SelectionAnchor, + PSMALL_RECT SmallRect) +{ + if (Begin == NULL || End == NULL) return; + + *Begin = *SelectionAnchor; + End->X = (SelectionAnchor->X == SmallRect->Left) ? SmallRect->Right + /* Case X != Left, must be == Right */ : SmallRect->Left; + End->Y = (SelectionAnchor->Y == SmallRect->Top ) ? SmallRect->Bottom + /* Case Y != Top, must be == Bottom */ : SmallRect->Top; + + /* Exchange Begin / End if Begin > End lexicographically */ + if (Begin->Y > End->Y || (Begin->Y == End->Y && Begin->X > End->X)) + { + SHORT tmp; + + // End->X = InterlockedExchange16(&Begin->X, End->X); + tmp = Begin->X; + Begin->X = End->X; + End->X = tmp; + + // End->Y = InterlockedExchange16(&Begin->Y, End->Y); + tmp = Begin->Y; + Begin->Y = End->Y; + End->Y = tmp; + } +} + +static HRGN +CreateSelectionRgn(PGUI_CONSOLE_DATA GuiData, + BOOL LineSelection, + PCOORD SelectionAnchor, + PSMALL_RECT SmallRect) +{ + if (!LineSelection) + { + RECT rect; + SmallRectToRect(GuiData, &rect, SmallRect); + return CreateRectRgnIndirect(&rect); + } + else + { + HRGN SelRgn; + COORD Begin, End; + + GetSelectionBeginEnd(&Begin, &End, SelectionAnchor, SmallRect); + + if (Begin.Y == End.Y) + { + SMALL_RECT sr; + RECT r ; + + sr.Left = Begin.X; + sr.Top = Begin.Y; + sr.Right = End.X; + sr.Bottom = End.Y; + + // Debug thingie to see whether I can put this corner case + // together with the previous one. + if (SmallRect->Left != sr.Left || + SmallRect->Top != sr.Top || + SmallRect->Right != sr.Right || + SmallRect->Bottom != sr.Bottom) + { + DPRINT1("\n" + "SmallRect = (%d, %d, %d, %d)\n" + "sr = (%d, %d, %d, %d)\n" + "\n", + SmallRect->Left, SmallRect->Top, SmallRect->Right, SmallRect->Bottom, + sr.Left, sr.Top, sr.Right, sr.Bottom); + } + + SmallRectToRect(GuiData, &r, &sr); + SelRgn = CreateRectRgnIndirect(&r); + } + else + { + PCONSOLE_SCREEN_BUFFER ActiveBuffer = GuiData->ActiveBuffer; + + HRGN rg1, rg2, rg3; + SMALL_RECT sr1, sr2, sr3; + RECT r1 , r2 , r3 ; + + sr1.Left = Begin.X; + sr1.Top = Begin.Y; + sr1.Right = ActiveBuffer->ScreenBufferSize.X - 1; + sr1.Bottom = Begin.Y; + + sr2.Left = 0; + sr2.Top = Begin.Y + 1; + sr2.Right = ActiveBuffer->ScreenBufferSize.X - 1; + sr2.Bottom = End.Y - 1; + + sr3.Left = 0; + sr3.Top = End.Y; + sr3.Right = End.X; + sr3.Bottom = End.Y; + + SmallRectToRect(GuiData, &r1, &sr1); + SmallRectToRect(GuiData, &r2, &sr2); + SmallRectToRect(GuiData, &r3, &sr3); + + rg1 = CreateRectRgnIndirect(&r1); + rg2 = CreateRectRgnIndirect(&r2); + rg3 = CreateRectRgnIndirect(&r3); + + CombineRgn(rg1, rg1, rg2, RGN_XOR); + CombineRgn(rg1, rg1, rg3, RGN_XOR); + DeleteObject(rg3); + DeleteObject(rg2); + + SelRgn = rg1; + } + + return SelRgn; + } +} + static VOID -UpdateSelection(PGUI_CONSOLE_DATA GuiData, PCOORD coord) +PaintSelectionRect(PGUI_CONSOLE_DATA GuiData, PPAINTSTRUCT pps) +{ + HRGN rgnPaint = CreateRectRgnIndirect(&pps->rcPaint); + HRGN rgnSel = CreateSelectionRgn(GuiData, GuiData->LineSelection, + &GuiData->Selection.dwSelectionAnchor, + &GuiData->Selection.srSelection); + + /* Invert the selection */ + + int ErrorCode = CombineRgn(rgnPaint, rgnPaint, rgnSel, RGN_AND); + if (ErrorCode != ERROR && ErrorCode != NULLREGION) + { + InvertRgn(pps->hdc, rgnPaint); + } + + DeleteObject(rgnSel); + DeleteObject(rgnPaint); +} + +static VOID +UpdateSelection(PGUI_CONSOLE_DATA GuiData, + PCOORD SelectionAnchor OPTIONAL, + PCOORD coord) { PCONSOLE Console = GuiData->Console; - RECT oldRect; + HRGN oldRgn = CreateSelectionRgn(GuiData, GuiData->LineSelection, + &GuiData->Selection.dwSelectionAnchor, + &GuiData->Selection.srSelection); - SmallRectToRect(GuiData, &oldRect, &GuiData->Selection.srSelection); + /* Update the anchor if needed (use the old one if NULL) */ + if (SelectionAnchor) + GuiData->Selection.dwSelectionAnchor = *SelectionAnchor; if (coord != NULL) { - RECT newRect; SMALL_RECT rc; + HRGN newRgn; + + /* + * Pressing the Control key while selecting text, allows us to enter + * into line-selection mode, the selection mode of *nix terminals. + */ + BOOL OldLineSel = GuiData->LineSelection; + GuiData->LineSelection = !!(GetKeyState(VK_CONTROL) & 0x8000); /* Exchange left/top with right/bottom if required */ rc.Left = min(GuiData->Selection.dwSelectionAnchor.X, coord->X); @@ -697,34 +850,29 @@ UpdateSelection(PGUI_CONSOLE_DATA GuiData, PCOORD coord) rc.Right = max(GuiData->Selection.dwSelectionAnchor.X, coord->X); rc.Bottom = max(GuiData->Selection.dwSelectionAnchor.Y, coord->Y); - SmallRectToRect(GuiData, &newRect, &rc); + newRgn = CreateSelectionRgn(GuiData, GuiData->LineSelection, + &GuiData->Selection.dwSelectionAnchor, + &rc); if (GuiData->Selection.dwFlags & CONSOLE_SELECTION_NOT_EMPTY) { - if (memcmp(&rc, &GuiData->Selection.srSelection, sizeof(SMALL_RECT)) != 0) + if (OldLineSel != GuiData->LineSelection || + memcmp(&rc, &GuiData->Selection.srSelection, sizeof(SMALL_RECT)) != 0) { - HRGN rgn1, rgn2; - /* Calculate the region that needs to be updated */ - if ((rgn1 = CreateRectRgnIndirect(&oldRect))) + if (oldRgn && newRgn && CombineRgn(newRgn, newRgn, oldRgn, RGN_XOR) != ERROR) { - if ((rgn2 = CreateRectRgnIndirect(&newRect))) - { - if (CombineRgn(rgn1, rgn2, rgn1, RGN_XOR) != ERROR) - { - InvalidateRgn(GuiData->hWindow, rgn1, FALSE); - } - DeleteObject(rgn2); - } - DeleteObject(rgn1); + InvalidateRgn(GuiData->hWindow, newRgn, FALSE); } } } else { - InvalidateRect(GuiData->hWindow, &newRect, FALSE); + InvalidateRgn(GuiData->hWindow, newRgn, FALSE); } + DeleteObject(newRgn); + GuiData->Selection.dwFlags |= CONSOLE_SELECTION_NOT_EMPTY; GuiData->Selection.srSelection = rc; GuiData->dwSelectionCursor = *coord; @@ -737,7 +885,7 @@ UpdateSelection(PGUI_CONSOLE_DATA GuiData, PCOORD coord) /* Clear the old selection */ if (GuiData->Selection.dwFlags & CONSOLE_SELECTION_NOT_EMPTY) { - InvalidateRect(GuiData->hWindow, &oldRect, FALSE); + InvalidateRgn(GuiData->hWindow, oldRgn, FALSE); } /* @@ -778,7 +926,7 @@ UpdateSelection(PGUI_CONSOLE_DATA GuiData, PCOORD coord) /* Clear the selection */ if (GuiData->Selection.dwFlags & CONSOLE_SELECTION_NOT_EMPTY) { - InvalidateRect(GuiData->hWindow, &oldRect, FALSE); + InvalidateRgn(GuiData->hWindow, oldRgn, FALSE); } GuiData->Selection.dwFlags = CONSOLE_NO_SELECTION; @@ -787,6 +935,8 @@ UpdateSelection(PGUI_CONSOLE_DATA GuiData, PCOORD coord) /* Restore the console title */ SetWindowText(GuiData->hWindow, Console->Title.Buffer); } + + DeleteObject(oldRgn); } @@ -840,15 +990,10 @@ OnPaint(PGUI_CONSOLE_DATA GuiData) rcPaint.top, SRCCOPY); + /* Draw the selection region if needed */ if (GuiData->Selection.dwFlags & CONSOLE_SELECTION_NOT_EMPTY) { - SmallRectToRect(GuiData, &rcPaint, &GuiData->Selection.srSelection); - - /* Invert the selection */ - if (IntersectRect(&rcPaint, &ps.rcPaint, &rcPaint)) - { - InvertRect(ps.hdc, &rcPaint); - } + PaintSelectionRect(GuiData, &ps); } LeaveCriticalSection(&GuiData->Lock); @@ -925,10 +1070,10 @@ OnKey(PGUI_CONSOLE_DATA GuiData, UINT msg, WPARAM wParam, LPARAM lParam) goto Quit; } else if ( VirtualKeyCode == VK_ESCAPE || - (VirtualKeyCode == 'C' && GetKeyState(VK_CONTROL) & 0x8000) ) + (VirtualKeyCode == 'C' && (GetKeyState(VK_CONTROL) & 0x8000)) ) { /* Cancel selection if ESC or Ctrl-C are pressed */ - UpdateSelection(GuiData, NULL); + UpdateSelection(GuiData, NULL, NULL); goto Quit; } @@ -936,7 +1081,7 @@ OnKey(PGUI_CONSOLE_DATA GuiData, UINT msg, WPARAM wParam, LPARAM lParam) { /* Keyboard selection mode */ BOOL Interpreted = FALSE; - BOOL MajPressed = (GetKeyState(VK_SHIFT) & 0x8000); + BOOL MajPressed = !!(GetKeyState(VK_SHIFT) & 0x8000); switch (VirtualKeyCode) { @@ -1017,10 +1162,9 @@ OnKey(PGUI_CONSOLE_DATA GuiData, UINT msg, WPARAM wParam, LPARAM lParam) if (Interpreted) { - if (!MajPressed) - GuiData->Selection.dwSelectionAnchor = GuiData->dwSelectionCursor; - - UpdateSelection(GuiData, &GuiData->dwSelectionCursor); + UpdateSelection(GuiData, + !MajPressed ? &GuiData->dwSelectionCursor : NULL, + &GuiData->dwSelectionCursor); } else if (!IsSystemKey(VirtualKeyCode)) { @@ -1037,7 +1181,7 @@ OnKey(PGUI_CONSOLE_DATA GuiData, UINT msg, WPARAM wParam, LPARAM lParam) if (!IsSystemKey(VirtualKeyCode)) { /* Clear the selection and send the key into the input buffer */ - UpdateSelection(GuiData, NULL); + UpdateSelection(GuiData, NULL, NULL); } else { @@ -1287,27 +1431,26 @@ OnMouse(PGUI_CONSOLE_DATA GuiData, UINT msg, WPARAM wParam, LPARAM lParam) case WM_LBUTTONDOWN: { /* Clear the old selection */ - // UpdateSelection(GuiData, NULL); GuiData->Selection.dwFlags = CONSOLE_NO_SELECTION; /* Restart a new selection */ - GuiData->Selection.dwSelectionAnchor = PointToCoord(GuiData, lParam); + GuiData->dwSelectionCursor = PointToCoord(GuiData, lParam); SetCapture(GuiData->hWindow); GuiData->Selection.dwFlags |= CONSOLE_MOUSE_SELECTION | CONSOLE_MOUSE_DOWN; - UpdateSelection(GuiData, &GuiData->Selection.dwSelectionAnchor); + UpdateSelection(GuiData, + &GuiData->dwSelectionCursor, + &GuiData->dwSelectionCursor); break; } case WM_LBUTTONUP: { - // COORD c; - if (!(GuiData->Selection.dwFlags & CONSOLE_MOUSE_DOWN)) break; - // c = PointToCoord(GuiData, lParam); + // GuiData->dwSelectionCursor = PointToCoord(GuiData, lParam); GuiData->Selection.dwFlags &= ~CONSOLE_MOUSE_DOWN; - // UpdateSelection(GuiData, &c); + // UpdateSelection(GuiData, NULL, &GuiData->dwSelectionCursor); ReleaseCapture(); break; @@ -1349,11 +1492,8 @@ OnMouse(PGUI_CONSOLE_DATA GuiData, UINT msg, WPARAM wParam, LPARAM lParam) * Update the selection started with the single * left-click that preceded this double-click. */ - GuiData->Selection.dwSelectionAnchor = cL; - GuiData->dwSelectionCursor = cR; - GuiData->Selection.dwFlags |= CONSOLE_MOUSE_SELECTION | CONSOLE_MOUSE_DOWN; - UpdateSelection(GuiData, &GuiData->dwSelectionCursor); + UpdateSelection(GuiData, &cL, &cR); /* Ignore the next mouse move signal */ GuiData->IgnoreNextMouseSignal = TRUE; @@ -1381,13 +1521,12 @@ OnMouse(PGUI_CONSOLE_DATA GuiData, UINT msg, WPARAM wParam, LPARAM lParam) case WM_MOUSEMOVE: { - COORD c; - if (!(wParam & MK_LBUTTON)) break; if (!(GuiData->Selection.dwFlags & CONSOLE_MOUSE_DOWN)) break; - c = PointToCoord(GuiData, lParam); /* TODO: Scroll buffer to bring c into view */ - UpdateSelection(GuiData, &c); + // TODO: Scroll buffer to bring SelectionCursor into view + GuiData->dwSelectionCursor = PointToCoord(GuiData, lParam); + UpdateSelection(GuiData, NULL, &GuiData->dwSelectionCursor); break; } @@ -1557,7 +1696,7 @@ Copy(PGUI_CONSOLE_DATA GuiData) } /* Clear the selection */ - UpdateSelection(GuiData, NULL); + UpdateSelection(GuiData, NULL, NULL); } VOID diff --git a/reactos/win32ss/user/winsrv/consrv/frontends/gui/conwnd.h b/reactos/win32ss/user/winsrv/consrv/frontends/gui/conwnd.h index a6be0cf1146..f6caa6d57f5 100644 --- a/reactos/win32ss/user/winsrv/consrv/frontends/gui/conwnd.h +++ b/reactos/win32ss/user/winsrv/consrv/frontends/gui/conwnd.h @@ -65,6 +65,7 @@ typedef struct _GUI_CONSOLE_DATA PCONSOLE_SCREEN_BUFFER ActiveBuffer; /* Pointer to the active screen buffer (then maybe the previous Console member is redundant?? Or not...) */ CONSOLE_SELECTION_INFO Selection; /* Contains information about the selection */ COORD dwSelectionCursor; /* Selection cursor position, most of the time different from Selection.dwSelectionAnchor */ + BOOL LineSelection; /* TRUE if line-oriented selection (a la *nix terminals), FALSE if block-oriented selection (default on Windows) */ GUI_CONSOLE_INFO GuiInfo; /* GUI terminal settings */ } GUI_CONSOLE_DATA, *PGUI_CONSOLE_DATA; diff --git a/reactos/win32ss/user/winsrv/consrv/frontends/gui/text.c b/reactos/win32ss/user/winsrv/consrv/frontends/gui/text.c index 2de3b11ffd8..feb128bd19e 100644 --- a/reactos/win32ss/user/winsrv/consrv/frontends/gui/text.c +++ b/reactos/win32ss/user/winsrv/consrv/frontends/gui/text.c @@ -18,6 +18,10 @@ #include "guiterm.h" +/* GLOBALS ********************************************************************/ + +#define IS_WHITESPACE(c) ((c) == L'\0' || (c) == L' ' || (c) == L'\t') + /* FUNCTIONS ******************************************************************/ COLORREF PaletteRGBFromAttrib(PCONSOLE Console, WORD Attribute) @@ -31,35 +35,33 @@ COLORREF PaletteRGBFromAttrib(PCONSOLE Console, WORD Attribute) return PALETTERGB(pe.peRed, pe.peGreen, pe.peBlue); } -VOID -GuiCopyFromTextModeBuffer(PTEXTMODE_SCREEN_BUFFER Buffer, - PGUI_CONSOLE_DATA GuiData) +static VOID +CopyBlock(PTEXTMODE_SCREEN_BUFFER Buffer, + PSMALL_RECT Selection) { - /* - * This function supposes that the system clipboard was opened. - */ - /* * Pressing the Shift key while copying text, allows us to copy * text without newline characters (inline-text copy mode). */ - BOOL InlineCopyMode = (GetKeyState(VK_SHIFT) & 0x8000); + BOOL InlineCopyMode = !!(GetKeyState(VK_SHIFT) & 0x8000); HANDLE hData; PCHAR_INFO ptr; LPWSTR data, dstPos; ULONG selWidth, selHeight; - ULONG xPos, yPos, size; + ULONG xPos, yPos; + ULONG size; - selWidth = GuiData->Selection.srSelection.Right - GuiData->Selection.srSelection.Left + 1; - selHeight = GuiData->Selection.srSelection.Bottom - GuiData->Selection.srSelection.Top + 1; - DPRINT("Selection is (%d|%d) to (%d|%d)\n", - GuiData->Selection.srSelection.Left, - GuiData->Selection.srSelection.Top, - GuiData->Selection.srSelection.Right, - GuiData->Selection.srSelection.Bottom); + DPRINT("CopyBlock(%u, %u, %u, %u)\n", + Selection->Left, Selection->Top, Selection->Right, Selection->Bottom); -#define IS_WHITESPACE(c) ((c) == L'\0' || (c) == L' ' || (c) == L'\t') + /* Prevent against empty blocks */ + if (Selection == NULL) return; + if (Selection->Left > Selection->Right || Selection->Top > Selection->Bottom) + return; + + selWidth = Selection->Right - Selection->Left + 1; + selHeight = Selection->Bottom - Selection->Top + 1; /* Basic size for one line... */ size = selWidth; @@ -72,6 +74,11 @@ GuiCopyFromTextModeBuffer(PTEXTMODE_SCREEN_BUFFER Buffer, */ size += (selWidth + (!InlineCopyMode ? 2 : 0)) * (selHeight - 1); } + else + { + DPRINT1("This case must never happen, because selHeight is at least == 1\n"); + } + size += 1; /* Null-termination */ size *= sizeof(WCHAR); @@ -94,8 +101,8 @@ GuiCopyFromTextModeBuffer(PTEXTMODE_SCREEN_BUFFER Buffer, ULONG length = selWidth; ptr = ConioCoordToPointer(Buffer, - GuiData->Selection.srSelection.Left, - GuiData->Selection.srSelection.Top + yPos); + Selection->Left, + Selection->Top + yPos); /* Trim whitespace from the right */ while (length > 0) @@ -113,16 +120,15 @@ GuiCopyFromTextModeBuffer(PTEXTMODE_SCREEN_BUFFER Buffer, * Sometimes, applications can put NULL chars into the screen-buffer * (this behaviour is allowed). Detect this and replace by a space. */ - dstPos[xPos] = (ptr[xPos].Char.UnicodeChar ? ptr[xPos].Char.UnicodeChar : L' '); + *dstPos++ = (ptr[xPos].Char.UnicodeChar ? ptr[xPos].Char.UnicodeChar : L' '); } - dstPos += length; /* Add newline characters if we are not in inline-text copy mode */ if (!InlineCopyMode) { if (yPos != (selHeight - 1)) { - wcscat(data, L"\r\n"); + wcscat(dstPos, L"\r\n"); dstPos += 2; } } @@ -135,6 +141,128 @@ GuiCopyFromTextModeBuffer(PTEXTMODE_SCREEN_BUFFER Buffer, SetClipboardData(CF_UNICODETEXT, hData); } +static VOID +CopyLines(PTEXTMODE_SCREEN_BUFFER Buffer, + PCOORD Begin, + PCOORD End) +{ + HANDLE hData; + PCHAR_INFO ptr; + LPWSTR data, dstPos; + ULONG NumChars, size; + ULONG xPos, yPos, xBeg, xEnd; + + DPRINT("CopyLines((%u, %u) ; (%u, %u))\n", + Begin->X, Begin->Y, End->X, End->Y); + + /* Prevent against empty blocks... */ + if (Begin == NULL || End == NULL) return; + /* ... or malformed blocks */ + if (Begin->Y > End->Y || (Begin->Y == End->Y && Begin->X > End->X)) return; + + /* Compute the number of characters to copy */ + if (End->Y == Begin->Y) // top == bottom + { + NumChars = End->X - Begin->X + 1; + } + else // if (End->Y > Begin->Y) + { + NumChars = (Buffer->ScreenBufferSize.X - 1) - (Begin->X) + 1; + + if (Begin->Y + 1 <= End->Y - 1) + { + NumChars += ( (Buffer->ScreenBufferSize.X - 1) + 1 ) * + ( (End->Y - 1) - (Begin->Y + 1) + 1); + } + + NumChars += End->X + 1; + } + + size = (NumChars + 1) * sizeof(WCHAR); /* Null-terminated */ + + /* Allocate some memory area to be given to the clipboard, so it will not be freed here */ + hData = GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, size); + if (hData == NULL) return; + + data = GlobalLock(hData); + if (data == NULL) + { + GlobalFree(hData); + return; + } + + DPRINT("Copying %d characters\n", NumChars); + dstPos = data; + + /* + * We need to walk per-lines, and not just looping in the big screen-buffer + * array, because of the way things are stored inside it. The downside is + * that it makes the code more complicated. + */ + for (yPos = Begin->Y; (yPos <= End->Y) && (NumChars > 0); yPos++) + { + xBeg = (yPos == Begin->Y ? Begin->X : 0); + xEnd = (yPos == End->Y ? End->X : Buffer->ScreenBufferSize.X - 1); + + ptr = ConioCoordToPointer(Buffer, xBeg, yPos); + + /* Copy only the characters, leave attributes alone */ + for (xPos = xBeg; (xPos <= xEnd) && (NumChars-- > 0); xPos++) + { + /* + * Sometimes, applications can put NULL chars into the screen-buffer + * (this behaviour is allowed). Detect this and replace by a space. + */ + *dstPos++ = (ptr[xPos].Char.UnicodeChar ? ptr[xPos].Char.UnicodeChar : L' '); + } + } + + DPRINT("Setting data <%S> to clipboard\n", data); + GlobalUnlock(hData); + + EmptyClipboard(); + SetClipboardData(CF_UNICODETEXT, hData); +} + + +VOID +GetSelectionBeginEnd(PCOORD Begin, PCOORD End, + PCOORD SelectionAnchor, + PSMALL_RECT SmallRect); + +VOID +GuiCopyFromTextModeBuffer(PTEXTMODE_SCREEN_BUFFER Buffer, + PGUI_CONSOLE_DATA GuiData) +{ + /* + * This function supposes that the system clipboard was opened. + */ + + BOOL LineSelection = GuiData->LineSelection; + + DPRINT("Selection is (%d|%d) to (%d|%d) in %s mode\n", + GuiData->Selection.srSelection.Left, + GuiData->Selection.srSelection.Top, + GuiData->Selection.srSelection.Right, + GuiData->Selection.srSelection.Bottom, + (LineSelection ? "line" : "block")); + + if (!LineSelection) + { + CopyBlock(Buffer, &GuiData->Selection.srSelection); + } + else + { + COORD Begin, End; + + GetSelectionBeginEnd(&Begin, &End, + &GuiData->Selection.dwSelectionAnchor, + &GuiData->Selection.srSelection); + + CopyLines(Buffer, &Begin, &End); + } +} + VOID GuiPasteToTextModeBuffer(PTEXTMODE_SCREEN_BUFFER Buffer, PGUI_CONSOLE_DATA GuiData) From cd934cf648baded42d292b6f0719280f6c29f229 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Sun, 8 Jun 2014 17:36:12 +0000 Subject: [PATCH 154/232] Simplify the math. svn path=/trunk/; revision=63560 --- reactos/win32ss/user/winsrv/consrv/frontends/gui/text.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/reactos/win32ss/user/winsrv/consrv/frontends/gui/text.c b/reactos/win32ss/user/winsrv/consrv/frontends/gui/text.c index feb128bd19e..b3caf59ef89 100644 --- a/reactos/win32ss/user/winsrv/consrv/frontends/gui/text.c +++ b/reactos/win32ss/user/winsrv/consrv/frontends/gui/text.c @@ -167,12 +167,11 @@ CopyLines(PTEXTMODE_SCREEN_BUFFER Buffer, } else // if (End->Y > Begin->Y) { - NumChars = (Buffer->ScreenBufferSize.X - 1) - (Begin->X) + 1; + NumChars = Buffer->ScreenBufferSize.X - Begin->X; - if (Begin->Y + 1 <= End->Y - 1) + if (End->Y >= Begin->Y + 2) { - NumChars += ( (Buffer->ScreenBufferSize.X - 1) + 1 ) * - ( (End->Y - 1) - (Begin->Y + 1) + 1); + NumChars += (End->Y - Begin->Y - 1) * Buffer->ScreenBufferSize.X; } NumChars += End->X + 1; From 3004134b74d8062fb3732036274f5fe4ef1e94f3 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sun, 8 Jun 2014 17:51:38 +0000 Subject: [PATCH 155/232] [SHELL32] * Introduce vista.c to copy RegLoadMUIString related functions. If you think you're having a deja-vu, you are (r58809). * Use SHCopyKeyW instead of RegCopyTreeW and mark that it doesn't copy the security attributes of the keys. CORE-8174 svn path=/trunk/; revision=63561 --- reactos/dll/win32/shell32/CMakeLists.txt | 1 + reactos/dll/win32/shell32/openwithmenu.cpp | 5 +- reactos/dll/win32/shell32/vista.c | 220 +++++++++++++++++++++ 3 files changed, 224 insertions(+), 2 deletions(-) create mode 100644 reactos/dll/win32/shell32/vista.c diff --git a/reactos/dll/win32/shell32/CMakeLists.txt b/reactos/dll/win32/shell32/CMakeLists.txt index b59b679eb28..21a7b06bb92 100644 --- a/reactos/dll/win32/shell32/CMakeLists.txt +++ b/reactos/dll/win32/shell32/CMakeLists.txt @@ -77,6 +77,7 @@ list(APPEND SOURCE add_library(shell32 SHARED ${SOURCE} + vista.c shell32.rc ${CMAKE_CURRENT_BINARY_DIR}/shell32_stubs.c ${CMAKE_CURRENT_BINARY_DIR}/shell32.def) diff --git a/reactos/dll/win32/shell32/openwithmenu.cpp b/reactos/dll/win32/shell32/openwithmenu.cpp index 02e5b9fd8c4..a2033f819c6 100644 --- a/reactos/dll/win32/shell32/openwithmenu.cpp +++ b/reactos/dll/win32/shell32/openwithmenu.cpp @@ -754,14 +754,15 @@ BOOL COpenWithList::SetDefaultHandler(SApp *pApp, LPCWSTR pwszFilename) } /* Copy static verbs from Classes\Applications key */ - LONG Result = RegCopyTreeW(hSrcKey, NULL, hDestKey); + /* FIXME: SHCopyKey does not copy the security attributes of the keys */ + LSTATUS Result = SHCopyKeyW(hSrcKey, NULL, hDestKey, 0); RegCloseKey(hDestKey); RegCloseKey(hSrcKey); RegCloseKey(hKey); if (Result != ERROR_SUCCESS) { - ERR("RegCopyTreeW failed\n"); + ERR("SHCopyKeyW failed\n"); return FALSE; } diff --git a/reactos/dll/win32/shell32/vista.c b/reactos/dll/win32/shell32/vista.c new file mode 100644 index 00000000000..93ec06c07b4 --- /dev/null +++ b/reactos/dll/win32/shell32/vista.c @@ -0,0 +1,220 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS system libraries + * FILE: Copied from advapi32/reg/reg.c + * PURPOSE: Registry functions + * PROGRAMMER: Ariadne ( ariadne@xs4all.nl) + * Thomas Weidenmueller + * UPDATE HISTORY: + * Created 01/11/98 + * 19990309 EA Stubs + * 20050502 Fireball imported some stuff from WINE + */ + +/* FIXME: This file should go away once we properly handle Vista+ APIs */ + +#include + +#define WIN32_NO_STATUS +#define _INC_WINDOWS +#define COM_NO_WINDOWS_H + +#include +#include +#include +#include +#define NTOS_MODE_USER +#include + +#include +#include + +WINE_DEFAULT_DEBUG_CHANNEL(shell); + +/****************************************************************************** + * load_string [Internal] + * + * This is basically a copy of user32/resource.c's LoadStringW. Necessary to + * avoid importing user32, which is higher level than advapi32. Helper for + * RegLoadMUIString. + */ +static int load_string(HINSTANCE hModule, UINT resId, LPWSTR pwszBuffer, INT cMaxChars) +{ + HGLOBAL hMemory; + HRSRC hResource; + WCHAR *pString; + int idxString; + + /* Negative values have to be inverted. */ + if (HIWORD(resId) == 0xffff) + resId = (UINT)(-((INT)resId)); + + /* Load the resource into memory and get a pointer to it. */ + hResource = FindResourceW(hModule, MAKEINTRESOURCEW(LOWORD(resId >> 4) + 1), (LPWSTR)RT_STRING); + if (!hResource) return 0; + hMemory = LoadResource(hModule, hResource); + if (!hMemory) return 0; + pString = LockResource(hMemory); + + /* Strings are length-prefixed. Lowest nibble of resId is an index. */ + idxString = resId & 0xf; + while (idxString--) pString += *pString + 1; + + /* If no buffer is given, return length of the string. */ + if (!pwszBuffer) return *pString; + + /* Else copy over the string, respecting the buffer size. */ + cMaxChars = (*pString < cMaxChars) ? *pString : (cMaxChars - 1); + if (cMaxChars >= 0) + { + memcpy(pwszBuffer, pString+1, cMaxChars * sizeof(WCHAR)); + pwszBuffer[cMaxChars] = L'\0'; + } + + return cMaxChars; +} + +/************************************************************************ + * RegLoadMUIStringW + * + * @implemented + */ +LONG WINAPI +RegLoadMUIStringW(IN HKEY hKey, + IN LPCWSTR pszValue OPTIONAL, + OUT LPWSTR pszOutBuf, + IN DWORD cbOutBuf, + OUT LPDWORD pcbData OPTIONAL, + IN DWORD Flags, + IN LPCWSTR pszDirectory OPTIONAL) +{ + DWORD dwValueType, cbData; + LPWSTR pwszTempBuffer = NULL, pwszExpandedBuffer = NULL; + LONG result; + + /* Parameter sanity checks. */ + if (!hKey || !pszOutBuf) + return ERROR_INVALID_PARAMETER; + + if (pszDirectory && *pszDirectory) + { + FIXME("BaseDir parameter not yet supported!\n"); + return ERROR_INVALID_PARAMETER; + } + + /* Check for value existence and correctness of it's type, allocate a buffer and load it. */ + result = RegQueryValueExW(hKey, pszValue, NULL, &dwValueType, NULL, &cbData); + if (result != ERROR_SUCCESS) goto cleanup; + if (!(dwValueType == REG_SZ || dwValueType == REG_EXPAND_SZ) || !cbData) + { + result = ERROR_FILE_NOT_FOUND; + goto cleanup; + } + pwszTempBuffer = HeapAlloc(GetProcessHeap(), 0, cbData); + if (!pwszTempBuffer) + { + result = ERROR_NOT_ENOUGH_MEMORY; + goto cleanup; + } + result = RegQueryValueExW(hKey, pszValue, NULL, &dwValueType, (LPBYTE)pwszTempBuffer, &cbData); + if (result != ERROR_SUCCESS) goto cleanup; + + /* Expand environment variables, if appropriate, or copy the original string over. */ + if (dwValueType == REG_EXPAND_SZ) + { + cbData = ExpandEnvironmentStringsW(pwszTempBuffer, NULL, 0) * sizeof(WCHAR); + if (!cbData) goto cleanup; + pwszExpandedBuffer = HeapAlloc(GetProcessHeap(), 0, cbData); + if (!pwszExpandedBuffer) + { + result = ERROR_NOT_ENOUGH_MEMORY; + goto cleanup; + } + ExpandEnvironmentStringsW(pwszTempBuffer, pwszExpandedBuffer, cbData); + } + else + { + pwszExpandedBuffer = HeapAlloc(GetProcessHeap(), 0, cbData); + memcpy(pwszExpandedBuffer, pwszTempBuffer, cbData); + } + + /* If the value references a resource based string, parse the value and load the string. + * Else just copy over the original value. */ + result = ERROR_SUCCESS; + if (*pwszExpandedBuffer != L'@') /* '@' is the prefix for resource based string entries. */ + { + lstrcpynW(pszOutBuf, pwszExpandedBuffer, cbOutBuf / sizeof(WCHAR)); + } + else + { + WCHAR *pComma = wcsrchr(pwszExpandedBuffer, L','); + UINT uiStringId; + HMODULE hModule; + + /* Format of the expanded value is 'path_to_dll,-resId' */ + if (!pComma || pComma[1] != L'-') + { + result = ERROR_BADKEY; + goto cleanup; + } + + uiStringId = _wtoi(pComma+2); + *pComma = L'\0'; + + hModule = LoadLibraryExW(pwszExpandedBuffer + 1, NULL, LOAD_LIBRARY_AS_DATAFILE); + if (!hModule || !load_string(hModule, uiStringId, pszOutBuf, cbOutBuf / sizeof(WCHAR))) + result = ERROR_BADKEY; + FreeLibrary(hModule); + } + +cleanup: + HeapFree(GetProcessHeap(), 0, pwszTempBuffer); + HeapFree(GetProcessHeap(), 0, pwszExpandedBuffer); + return result; +} + +/************************************************************************ + * RegLoadMUIStringA + * + * @implemented + */ +LONG WINAPI +RegLoadMUIStringA(IN HKEY hKey, + IN LPCSTR pszValue OPTIONAL, + OUT LPSTR pszOutBuf, + IN DWORD cbOutBuf, + OUT LPDWORD pcbData OPTIONAL, + IN DWORD Flags, + IN LPCSTR pszDirectory OPTIONAL) +{ + UNICODE_STRING valueW, baseDirW; + WCHAR *pwszBuffer; + DWORD cbData = cbOutBuf * sizeof(WCHAR); + LONG result; + + valueW.Buffer = baseDirW.Buffer = pwszBuffer = NULL; + if (!RtlCreateUnicodeStringFromAsciiz(&valueW, pszValue) || + !RtlCreateUnicodeStringFromAsciiz(&baseDirW, pszDirectory) || + !(pwszBuffer = HeapAlloc(GetProcessHeap(), 0, cbData))) + { + result = ERROR_NOT_ENOUGH_MEMORY; + goto cleanup; + } + + result = RegLoadMUIStringW(hKey, valueW.Buffer, pwszBuffer, cbData, NULL, Flags, + baseDirW.Buffer); + + if (result == ERROR_SUCCESS) + { + cbData = WideCharToMultiByte(CP_ACP, 0, pwszBuffer, -1, pszOutBuf, cbOutBuf, NULL, NULL); + if (pcbData) + *pcbData = cbData; + } + +cleanup: + HeapFree(GetProcessHeap(), 0, pwszBuffer); + RtlFreeUnicodeString(&baseDirW); + RtlFreeUnicodeString(&valueW); + + return result; +} From fa8ca9750f55d3f70256260b32be880c722753e3 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sun, 8 Jun 2014 17:56:18 +0000 Subject: [PATCH 156/232] [WINDOWSCODECS] * Do not rely on RegDeleteTreeW which shouldn't be exported. CORE-8174 svn path=/trunk/; revision=63562 --- reactos/dll/win32/windowscodecs/regsvr.c | 26 +++++++++++++----------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/reactos/dll/win32/windowscodecs/regsvr.c b/reactos/dll/win32/windowscodecs/regsvr.c index 3a6bc60b0b7..0ca18c0be31 100644 --- a/reactos/dll/win32/windowscodecs/regsvr.c +++ b/reactos/dll/win32/windowscodecs/regsvr.c @@ -18,6 +18,8 @@ #include "wincodecs_private.h" +#include + /*********************************************************************** * interface for self-registering */ @@ -374,11 +376,11 @@ static HRESULT unregister_decoders(struct regsvr_decoder const *list) for (; res == ERROR_SUCCESS && list->clsid; ++list) { StringFromGUID2(list->clsid, buf, 39); - res = RegDeleteTreeW(coclass_key, buf); + res = SHDeleteKeyW(coclass_key, buf); if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS; if (res != ERROR_SUCCESS) goto error_close_coclass_key; - res = RegDeleteTreeW(instance_key, buf); + res = SHDeleteKeyW(instance_key, buf); if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS; if (res != ERROR_SUCCESS) goto error_close_coclass_key; } @@ -552,11 +554,11 @@ static HRESULT unregister_encoders(struct regsvr_encoder const *list) for (; res == ERROR_SUCCESS && list->clsid; ++list) { StringFromGUID2(list->clsid, buf, 39); - res = RegDeleteTreeW(coclass_key, buf); + res = SHDeleteKeyW(coclass_key, buf); if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS; if (res != ERROR_SUCCESS) goto error_close_coclass_key; - res = RegDeleteTreeW(instance_key, buf); + res = SHDeleteKeyW(instance_key, buf); if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS; if (res != ERROR_SUCCESS) goto error_close_coclass_key; } @@ -709,11 +711,11 @@ static HRESULT unregister_converters(struct regsvr_converter const *list) for (; res == ERROR_SUCCESS && list->clsid; ++list) { StringFromGUID2(list->clsid, buf, 39); - res = RegDeleteTreeW(coclass_key, buf); + res = SHDeleteKeyW(coclass_key, buf); if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS; if (res != ERROR_SUCCESS) goto error_close_coclass_key; - res = RegDeleteTreeW(instance_key, buf); + res = SHDeleteKeyW(instance_key, buf); if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS; if (res != ERROR_SUCCESS) goto error_close_coclass_key; } @@ -919,11 +921,11 @@ static HRESULT unregister_metadatareaders(struct regsvr_metadatareader const *li for (; res == ERROR_SUCCESS && list->clsid; ++list) { StringFromGUID2(list->clsid, buf, 39); - res = RegDeleteTreeW(coclass_key, buf); + res = SHDeleteKeyW(coclass_key, buf); if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS; if (res != ERROR_SUCCESS) goto error_close_coclass_key; - res = RegDeleteTreeW(instance_key, buf); + res = SHDeleteKeyW(instance_key, buf); if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS; if (res != ERROR_SUCCESS) goto error_close_coclass_key; } @@ -1094,11 +1096,11 @@ static HRESULT unregister_pixelformats(struct regsvr_pixelformat const *list) for (; res == ERROR_SUCCESS && list->clsid; ++list) { StringFromGUID2(list->clsid, buf, 39); - res = RegDeleteTreeW(coclass_key, buf); + res = SHDeleteKeyW(coclass_key, buf); if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS; if (res != ERROR_SUCCESS) goto error_close_coclass_key; - res = RegDeleteTreeW(instance_key, buf); + res = SHDeleteKeyW(instance_key, buf); if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS; if (res != ERROR_SUCCESS) goto error_close_coclass_key; } @@ -2009,14 +2011,14 @@ static HRESULT unregister_categories(const struct regsvr_category *list) for (; res == ERROR_SUCCESS && list->clsid; list++) { StringFromGUID2(list->clsid, buf, 39); - res = RegDeleteTreeW(instance_key, buf); + res = SHDeleteKeyW(instance_key, buf); } RegCloseKey(instance_key); RegCloseKey(categories_key); StringFromGUID2(&CLSID_WICImagingCategories, buf, 39); - res = RegDeleteTreeW(coclass_key, buf); + res = SHDeleteKeyW(coclass_key, buf); RegCloseKey(coclass_key); From a40b302a0351ca30ca5a6c82637e98ba1f519ff1 Mon Sep 17 00:00:00 2001 From: James Tabor Date: Sun, 8 Jun 2014 17:56:28 +0000 Subject: [PATCH 157/232] [Win32k] - Fix functions. Old patch from 2009. svn path=/trunk/; revision=63563 --- reactos/win32ss/user/ntuser/painting.c | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/reactos/win32ss/user/ntuser/painting.c b/reactos/win32ss/user/ntuser/painting.c index 72e6287c092..4259a0b3385 100644 --- a/reactos/win32ss/user/ntuser/painting.c +++ b/reactos/win32ss/user/ntuser/painting.c @@ -2141,7 +2141,13 @@ NtUserInvalidateRect( CONST RECT *lpUnsafeRect, BOOL bErase) { - return NtUserRedrawWindow(hWnd, lpUnsafeRect, NULL, RDW_INVALIDATE | (bErase? RDW_ERASE : 0)); + UINT flags = RDW_INVALIDATE | (bErase ? RDW_ERASE : 0); + if (!hWnd) + { + flags = RDW_ALLCHILDREN | RDW_INVALIDATE | RDW_FRAME | RDW_ERASE | RDW_ERASENOW; + lpUnsafeRect = NULL; + } + return NtUserRedrawWindow(hWnd, lpUnsafeRect, NULL, flags); } BOOL @@ -2151,6 +2157,11 @@ NtUserInvalidateRgn( HRGN hRgn, BOOL bErase) { + if (!hWnd) + { + EngSetLastError( ERROR_INVALID_WINDOW_HANDLE ); + return FALSE; + } return NtUserRedrawWindow(hWnd, NULL, hRgn, RDW_INVALIDATE | (bErase? RDW_ERASE : 0)); } @@ -2197,11 +2208,13 @@ NtUserValidateRect( HWND hWnd, const RECT *lpRect) { - if (hWnd) + UINT flags = RDW_VALIDATE; + if (!hWnd) { - return NtUserRedrawWindow(hWnd, lpRect, NULL, RDW_VALIDATE ); + flags = RDW_ALLCHILDREN | RDW_INVALIDATE | RDW_FRAME | RDW_ERASE | RDW_ERASENOW; + lpRect = NULL; } - return NtUserRedrawWindow(hWnd, lpRect, NULL, RDW_INVALIDATE|RDW_ERASE|RDW_ERASENOW|RDW_ALLCHILDREN); + return NtUserRedrawWindow(hWnd, lpRect, NULL, flags); } /* EOF */ From 53581dcf0bb1c631e1c4dfaf47b3be29baaa8252 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Sun, 8 Jun 2014 18:06:14 +0000 Subject: [PATCH 158/232] [CONSRV] - Silence a DPRINT. - Properly initialize the selection. svn path=/trunk/; revision=63564 --- reactos/win32ss/user/winsrv/consrv/frontends/gui/graphics.c | 2 +- reactos/win32ss/user/winsrv/consrv/frontends/gui/guiterm.c | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/reactos/win32ss/user/winsrv/consrv/frontends/gui/graphics.c b/reactos/win32ss/user/winsrv/consrv/frontends/gui/graphics.c index 730ed130cb6..37111b3f415 100644 --- a/reactos/win32ss/user/winsrv/consrv/frontends/gui/graphics.c +++ b/reactos/win32ss/user/winsrv/consrv/frontends/gui/graphics.c @@ -34,7 +34,7 @@ GuiCopyFromGraphicsBuffer(PGRAPHICS_SCREEN_BUFFER Buffer, selWidth = GuiData->Selection.srSelection.Right - GuiData->Selection.srSelection.Left + 1; selHeight = GuiData->Selection.srSelection.Bottom - GuiData->Selection.srSelection.Top + 1; - DPRINT1("Selection is (%d|%d) to (%d|%d)\n", + DPRINT("Selection is (%d|%d) to (%d|%d)\n", GuiData->Selection.srSelection.Left, GuiData->Selection.srSelection.Top, GuiData->Selection.srSelection.Right, diff --git a/reactos/win32ss/user/winsrv/consrv/frontends/gui/guiterm.c b/reactos/win32ss/user/winsrv/consrv/frontends/gui/guiterm.c index e56e4c5e25a..023456c179a 100644 --- a/reactos/win32ss/user/winsrv/consrv/frontends/gui/guiterm.c +++ b/reactos/win32ss/user/winsrv/consrv/frontends/gui/guiterm.c @@ -533,8 +533,11 @@ GuiInitFrontEnd(IN OUT PFRONTEND This, GuiData->CmdIdLow = GuiData->CmdIdHigh = 0; /* Initialize the selection */ - RtlZeroMemory(&GuiData->Selection, sizeof(CONSOLE_SELECTION_INFO)); + RtlZeroMemory(&GuiData->Selection, sizeof(GuiData->Selection)); GuiData->Selection.dwFlags = CONSOLE_NO_SELECTION; + RtlZeroMemory(&GuiData->dwSelectionCursor, sizeof(GuiData->dwSelectionCursor)); + GuiData->LineSelection = FALSE; // Default to block selection + // TODO: Retrieve the selection mode via the registry. /* * We need to wait until the GUI has been fully initialized From 70c282c0a9c2a9f170471335c800d358430ddaf0 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sun, 8 Jun 2014 18:08:50 +0000 Subject: [PATCH 159/232] [REACTOS/IDL] * Unfortunately widl seems to generate declarations for functions even when they're wrapped with version related cpp quotes, so hand this block to SVN for now. CORE-8174 svn path=/trunk/; revision=63565 --- reactos/include/reactos/idl/pnp.idl | 67 ----------------------------- 1 file changed, 67 deletions(-) diff --git a/reactos/include/reactos/idl/pnp.idl b/reactos/include/reactos/idl/pnp.idl index 62473d6dadb..49e4943883a 100644 --- a/reactos/include/reactos/idl/pnp.idl +++ b/reactos/include/reactos/idl/pnp.idl @@ -792,73 +792,6 @@ cpp_quote("#if _WIN32_WINNT >= 0x0501") [out] DWORD *pulSSDIFlags, [in] DWORD ulFlags); -cpp_quote("#if _WIN32_WINNT >= 0x0600") - - /* Function 65 */ - DWORD PNP_GetObjectPropKeys( - [in] handle_t hBinding, - [in, string, ref] LPWSTR ObjectName, - [in] DWORD ObjectType, - [in, string, unique] LPWSTR PropertyCultureName, - [in, out] PNP_PROP_COUNT *PropertyCount, - [out] PNP_PROP_COUNT *TransferLen, - [out, size_is(*PropertyCount), length_is(*TransferLen)] DEVPROPKEY *PropertyKeys, - [in] DWORD Flags); - - /* Function 66 */ - DWORD PNP_GetObjectProp( - [in] handle_t hBinding, - [in, string, ref] LPWSTR ObjectName, - [in] DWORD ObjectType, - [in, string, unique] LPWSTR PropertyCultureName, - [in] const DEVPROPKEY *PropertyKey, - [out] DEVPROPTYPE *PropertyType, - [in, out] PNP_PROP_SIZE *PropertySize, - [out] PNP_PROP_SIZE *TransferLen, - [out, size_is(*PropertySize), length_is(*TransferLen)] BYTE *PropertyBuffer, - [in] DWORD Flags); - - /* Function 67 */ - DWORD PNP_SetObjectProp( - [in] handle_t hBinding, - [in, string, ref] LPWSTR ObjectName, - [in] DWORD ObjectType, - [in, string, unique] LPWSTR PropertyCultureName, - [in] const DEVPROPKEY *PropertyKey, - [in] DEVPROPTYPE PropertyType, - [in] PNP_PROP_SIZE PropertySize, - [in, unique, size_is(PropertySize)] BYTE *PropertyBuffer, - [in] DWORD Flags); - - /* Function 68 */ - DWORD PNP_InstallDevInst( - [in] handle_t hBinding); /* FIXME */ - - /* Function 69 */ - DWORD PNP_ApplyPowerSettings( - [in] handle_t hBinding); /* FIXME */ - - /* Function 70 */ - DWORD PNP_DriverStoreAddDriverPackage( - [in] handle_t hBinding); /* FIXME */ - - /* Function 71 */ - DWORD PNP_DriverStoreDeleteDriverPackage( - [in] handle_t hBinding); /* FIXME */ - - /* Function 72 */ - DWORD PNP_RegisterServiceNotification( - [in] handle_t hBinding); /* FIXME */ - - /* Function 73 */ - DWORD PNP_SetActiveService( - [in] handle_t hBinding); /* FIXME */ - - /* Function 74 */ - DWORD PNP_DeleteServiceDevices( - [in] handle_t hBinding); /* FIXME */ - -cpp_quote("#endif /* WIN32_WINNT >= 0x0600 */") cpp_quote("#endif /* WIN32_WINNT >= 0x0501 */") } From d443d916e60dbbea6674b0be335c7fd4791d5bd5 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sun, 8 Jun 2014 18:10:04 +0000 Subject: [PATCH 160/232] [UMPNPMGR] * Do not rely on RegDeleteTreeW which shouldn't be exported. * We no longer need to define _WIN32_WINNT as 0x600. CORE-8174 svn path=/trunk/; revision=63566 --- reactos/base/services/umpnpmgr/CMakeLists.txt | 5 +---- reactos/base/services/umpnpmgr/umpnpmgr.c | 3 ++- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/reactos/base/services/umpnpmgr/CMakeLists.txt b/reactos/base/services/umpnpmgr/CMakeLists.txt index 958fad22c1b..9667d98d88f 100644 --- a/reactos/base/services/umpnpmgr/CMakeLists.txt +++ b/reactos/base/services/umpnpmgr/CMakeLists.txt @@ -1,9 +1,6 @@ include_directories(${REACTOS_SOURCE_DIR}/include/reactos/idl) -remove_definitions(-D_WIN32_WINNT=0x502) -add_definitions(-D_WIN32_WINNT=0x600) - add_rpc_files(server ${REACTOS_SOURCE_DIR}/include/reactos/idl/pnp.idl) @@ -17,5 +14,5 @@ target_link_libraries(umpnpmgr ${PSEH_LIB}) set_module_type(umpnpmgr win32cui UNICODE) -add_importlibs(umpnpmgr advapi32 rpcrt4 userenv msvcrt kernel32 ntdll) +add_importlibs(umpnpmgr advapi32 rpcrt4 userenv shlwapi msvcrt kernel32 ntdll) add_cd_file(TARGET umpnpmgr DESTINATION reactos/system32 FOR all) diff --git a/reactos/base/services/umpnpmgr/umpnpmgr.c b/reactos/base/services/umpnpmgr/umpnpmgr.c index f683e9f5b40..d8fbfa7a5a0 100644 --- a/reactos/base/services/umpnpmgr/umpnpmgr.c +++ b/reactos/base/services/umpnpmgr/umpnpmgr.c @@ -44,6 +44,7 @@ #include #include #include +#include #include #define NDEBUG @@ -1142,7 +1143,7 @@ DWORD PNP_DeleteClassKey( if (ulFlags & CM_DELETE_CLASS_SUBKEYS) { - if (RegDeleteTreeW(hClassKey, pszClassGuid) != ERROR_SUCCESS) + if (SHDeleteKeyW(hClassKey, pszClassGuid) != ERROR_SUCCESS) ret = CR_REGISTRY_ERROR; } else From 983a3ff5cae9ff69f5b4827821939b186ca59d11 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sun, 8 Jun 2014 18:13:10 +0000 Subject: [PATCH 161/232] [ADVAPI32] * Reorder some exports, remove some commented out ones, add some missing ones and remove the ones that do not exist in native. CORE-8174 svn path=/trunk/; revision=63567 --- reactos/dll/win32/advapi32/advapi32.spec | 38 +++++------------------- 1 file changed, 8 insertions(+), 30 deletions(-) diff --git a/reactos/dll/win32/advapi32/advapi32.spec b/reactos/dll/win32/advapi32/advapi32.spec index e3abe3b3c2e..36f658c3b94 100644 --- a/reactos/dll/win32/advapi32/advapi32.spec +++ b/reactos/dll/win32/advapi32/advapi32.spec @@ -1,3 +1,4 @@ +@ stub I_ScGetCurrentGroupStateW @ stdcall A_SHAFinal(ptr ptr) @ stdcall A_SHAInit(ptr) @ stdcall A_SHAUpdate(ptr ptr long) @@ -24,7 +25,6 @@ @ stdcall AddAuditAccessAce(ptr long long ptr long long) @ stdcall AddAuditAccessAceEx(ptr long long long ptr long long) @ stdcall AddAuditAccessObjectAce(ptr long long long ptr ptr ptr long long) -;@ stdcall AddMandatoryAce(ptr long long long ptr) @ stdcall AddUsersToEncryptedFile(wstr ptr) @ stdcall AdjustTokenGroups(long long ptr long ptr ptr) @ stdcall AdjustTokenPrivileges(long long ptr long ptr ptr) @@ -66,7 +66,6 @@ @ stdcall CommandLineFromMsiDescriptor(wstr ptr ptr) @ stub ComputeAccessTokenFromCodeAuthzLevel @ stdcall ControlService(long long ptr) -@ stdcall ControlServiceEx(ptr long long ptr) @ stdcall ControlTraceA(double str ptr long) @ stdcall ControlTraceW(double wstr ptr long) @ stub ConvertAccessToSecurityDescriptorA @@ -96,7 +95,6 @@ @ stdcall CreatePrivateObjectSecurityEx(ptr ptr ptr ptr long long ptr ptr) @ stdcall CreatePrivateObjectSecurityWithMultipleInheritance(ptr ptr ptr ptr long long long ptr ptr) @ stdcall CreateProcessAsUserA(long str str ptr ptr long long ptr str ptr ptr) -# @ stub CreateProcessAsUserSecure @ stdcall CreateProcessAsUserW(long str str ptr ptr long long ptr str ptr ptr) @ stdcall CreateProcessWithLogonW(wstr wstr wstr long wstr wstr long ptr wstr ptr ptr) @ stdcall CreateProcessWithTokenW(ptr long wstr wstr long ptr wstr ptr ptr) @@ -189,7 +187,6 @@ @ stub ElfClearEventLogFileW @ stub ElfCloseEventLog @ stub ElfDeregisterEventSource -@ stub ElfDeregisterEventSourceW @ stub ElfFlushEventLog @ stub ElfNumberOfRecords @ stub ElfOldestRecord @@ -202,6 +199,7 @@ @ stub ElfRegisterEventSourceA @ stub ElfRegisterEventSourceW @ stub ElfReportEventA +# ElfReportEventAndSourceW @ stub ElfReportEventW @ stdcall EnableTrace(long long long ptr double) @ stdcall EncryptFileA(str) @@ -210,7 +208,6 @@ @ stdcall EncryptionDisable(wstr long) @ stdcall EnumDependentServicesA(long long ptr long ptr ptr) @ stdcall EnumDependentServicesW(long long ptr long ptr ptr) -@ stub EnumServiceGroupA @ stdcall EnumServiceGroupW(ptr long long ptr long ptr ptr ptr wstr) @ stdcall EnumServicesStatusA(long long long ptr long ptr ptr ptr) @ stdcall EnumServicesStatusExA(long long long long ptr long ptr ptr ptr str) @@ -254,7 +251,6 @@ @ stub GetLocalManagedApplications @ stub GetManagedApplicationCategories @ stub GetManagedApplications -@ stub GetMangledSiteSid @ stdcall GetMultipleTrusteeA(ptr) @ stdcall GetMultipleTrusteeOperationA(ptr) @ stdcall GetMultipleTrusteeOperationW(ptr) @@ -285,7 +281,6 @@ @ stdcall GetSidLengthRequired(long) @ stdcall GetSidSubAuthority(ptr long) @ stdcall GetSidSubAuthorityCount(ptr) -@ stdcall GetSiteSidFromToken(ptr) @ stdcall GetTokenInformation(long long ptr long ptr) @ stdcall GetTraceEnableFlags(double) @ stdcall GetTraceEnableLevel(double) @@ -299,11 +294,10 @@ @ stdcall GetUserNameA(ptr ptr) @ stdcall GetUserNameW(ptr ptr) @ stdcall GetWindowsAccountDomainSid(ptr ptr ptr) -@ stub I_ScGetCurrentGroupStateW +# I_QueryTagInformation @ stub I_ScIsSecurityProcess @ stub I_ScPnPGetServiceName @ stub I_ScSendTSMessage -@ stub I_ScSetServiceBit @ stdcall I_ScSetServiceBitsA(ptr long long long str) @ stdcall I_ScSetServiceBitsW(ptr long long long wstr) @ stub IdentifyCodeAuthzLevelW @@ -319,7 +313,6 @@ @ stdcall InitiateSystemShutdownExW(wstr wstr long long long long) @ stdcall InitiateSystemShutdownW(str str long long long) @ stub InstallApplication -@ stub IsProcessRestricted @ stdcall IsTextUnicode(ptr long ptr) ntdll.RtlIsTextUnicode @ stdcall IsTokenRestricted(long) @ stub IsTokenUntrusted @@ -370,8 +363,8 @@ @ stub LsaICLookupNamesWithCreds @ stub LsaICLookupSids @ stub LsaICLookupSidsWithCreds -@ stdcall LsaLookupNames(ptr long ptr ptr ptr) @ stdcall LsaLookupNames2(ptr long long ptr ptr ptr) +@ stdcall LsaLookupNames(ptr long ptr ptr ptr) @ stdcall LsaLookupPrivilegeDisplayName(ptr ptr ptr ptr) @ stdcall LsaLookupPrivilegeName(ptr ptr ptr) @ stdcall LsaLookupPrivilegeValue(ptr ptr ptr) @@ -411,10 +404,10 @@ @ stdcall MD5Final(ptr) @ stdcall MD5Init(ptr) @ stdcall MD5Update(ptr ptr long) -@ stub MSChapSrvChangePassword @ stub MSChapSrvChangePassword2 -@ stdcall MakeAbsoluteSD(ptr ptr ptr ptr ptr ptr ptr ptr ptr ptr ptr) +@ stub MSChapSrvChangePassword @ stdcall MakeAbsoluteSD2(ptr ptr) +@ stdcall MakeAbsoluteSD(ptr ptr ptr ptr ptr ptr ptr ptr ptr ptr ptr) @ stdcall MakeSelfRelativeSD(ptr ptr ptr) @ stdcall MapGenericMask(ptr ptr) ntdll.RtlMapGenericMask @ stdcall NotifyBootConfigStatus(long) @@ -446,11 +439,9 @@ @ stdcall PrivilegedServiceAuditAlarmW(wstr wstr long ptr long) @ stub ProcessIdleTasks @ stub ProcessTrace -@ stub ProvAccessRightsToNTAccessMask # ? @ stdcall QueryAllTracesA(ptr long ptr) @ stdcall QueryAllTracesW(ptr long ptr) @ stdcall QueryRecoveryAgentsOnEncryptedFile(wstr ptr) -@ stdcall QuerySecurityAccessMask(long ptr) @ stdcall QueryServiceConfig2A(long long ptr long ptr) @ stdcall QueryServiceConfig2W(long long ptr long ptr) @ stdcall QueryServiceConfigA(long ptr long ptr) @@ -463,15 +454,14 @@ @ stub QueryTraceA @ stub QueryTraceW @ stdcall QueryUsersOnEncryptedFile(wstr ptr) -@ stdcall QueryWindows31FilesMigration(long) @ stub ReadEncryptedFileRaw @ stdcall ReadEventLogA(long long long ptr long ptr ptr) @ stdcall ReadEventLogW(long long long ptr long ptr ptr) @ stdcall RegCloseKey(long) @ stdcall RegConnectRegistryA(str long ptr) +# RegConnectRegistryExA +# RegConnectRegistryExW @ stdcall RegConnectRegistryW(wstr long ptr) -@ stdcall RegCopyTreeA(ptr str ptr) -@ stdcall RegCopyTreeW(ptr wstr ptr) @ stdcall RegCreateKeyA(long str ptr) @ stdcall RegCreateKeyExA(long str long ptr long long ptr ptr ptr) @ stdcall RegCreateKeyExW(long wstr long ptr long long ptr ptr ptr) @@ -480,14 +470,9 @@ @ stdcall RegDeleteKeyExA(long str long long) @ stdcall RegDeleteKeyExW(long wstr long long) @ stdcall RegDeleteKeyW(long wstr) -@ stdcall RegDeleteKeyValueA(ptr str str) -@ stdcall RegDeleteKeyValueW(ptr wstr wstr) -@ stdcall RegDeleteTreeA(long str) -@ stdcall RegDeleteTreeW(long wstr) @ stdcall RegDeleteValueA(long str) @ stdcall RegDeleteValueW(long wstr) @ stdcall RegDisablePredefinedCache() -@ stdcall RegDisablePredefinedCacheEx() @ stdcall RegDisableReflectionKey(ptr) @ stdcall RegEnableReflectionKey(ptr) @ stdcall RegEnumKeyA(long long ptr long) @@ -502,8 +487,6 @@ @ stdcall RegGetValueW(long wstr wstr long ptr ptr ptr) @ stdcall RegLoadKeyA(long str str) @ stdcall RegLoadKeyW(long wstr wstr) -@ stdcall RegLoadMUIStringA(long str str long ptr long str) -@ stdcall RegLoadMUIStringW(long wstr wstr long ptr long wstr) @ stdcall RegNotifyChangeKeyValue(long long long long long) @ stdcall RegOpenCurrentUser(long ptr) @ stdcall RegOpenKeyA(long str ptr) @@ -521,7 +504,6 @@ @ stdcall RegQueryValueExA(long str ptr ptr ptr ptr) @ stdcall RegQueryValueExW(long wstr ptr ptr ptr ptr) @ stdcall RegQueryValueW(long wstr ptr ptr) -@ stub RegRemapPreDefKey @ stdcall RegReplaceKeyA(long str str str) @ stdcall RegReplaceKeyW(long wstr wstr wstr) @ stdcall RegRestoreKeyA(long str long) @@ -531,8 +513,6 @@ @ stdcall RegSaveKeyExW(long str ptr long) @ stdcall RegSaveKeyW(long ptr ptr) @ stdcall RegSetKeySecurity(long long ptr) -@ stdcall RegSetKeyValueA(long str str long ptr long) -@ stdcall RegSetKeyValueW(long wstr wstr long ptr long) @ stdcall RegSetValueA(long str long ptr long) @ stdcall RegSetValueExA(long str long long ptr long) @ stdcall RegSetValueExW(long wstr long long ptr long) @@ -587,7 +567,6 @@ @ stdcall SetNamedSecurityInfoW(wstr long ptr ptr ptr ptr ptr) @ stdcall SetPrivateObjectSecurity(long ptr ptr ptr long) @ stub SetPrivateObjectSecurityEx -@ stdcall SetSecurityAccessMask(long ptr) @ stdcall SetSecurityDescriptorControl(ptr long long) @ stdcall SetSecurityDescriptorDacl(ptr long ptr long) @ stdcall SetSecurityDescriptorGroup(ptr ptr long) @@ -612,7 +591,6 @@ @ stdcall StartTraceW(ptr wstr ptr) @ stub StopTraceA @ stub StopTraceW -@ stdcall SynchronizeWindows31FilesAndWindowsNTRegistry(long long long long) @ stdcall SystemFunction001(ptr ptr ptr) @ stdcall SystemFunction002(ptr ptr ptr) @ stdcall SystemFunction003(ptr ptr) From 6efa325a8e5fa484b8de9c39e2f78155b9ab3724 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sun, 8 Jun 2014 18:27:21 +0000 Subject: [PATCH 162/232] [ATL][ATL80][ATL100] * Do not rely on RegDeleteTreeW which is no longer exported. * We no longer need to define _WIN32_WINNT as 0x600. CORE-8174 svn path=/trunk/; revision=63568 --- reactos/dll/win32/atl/CMakeLists.txt | 5 +---- reactos/dll/win32/atl/registrar.c | 10 ++++++++-- reactos/dll/win32/atl100/CMakeLists.txt | 5 +---- reactos/dll/win32/atl80/CMakeLists.txt | 5 +---- 4 files changed, 11 insertions(+), 14 deletions(-) diff --git a/reactos/dll/win32/atl/CMakeLists.txt b/reactos/dll/win32/atl/CMakeLists.txt index 580e31c495b..fbc3632c45a 100644 --- a/reactos/dll/win32/atl/CMakeLists.txt +++ b/reactos/dll/win32/atl/CMakeLists.txt @@ -3,9 +3,6 @@ add_definitions( -D__WINESRC__ -D_ATL_VER=_ATL_VER_30) -remove_definitions(-D_WIN32_WINNT=0x502) -add_definitions(-D_WIN32_WINNT=0x600) - include_directories(${REACTOS_SOURCE_DIR}/include/reactos/wine) spec2def(atl.dll atl.spec ADD_IMPORTLIB) @@ -22,6 +19,6 @@ list(APPEND SOURCE add_library(atl SHARED ${SOURCE} rsrc.rc) set_module_type(atl win32dll) target_link_libraries(atl uuid wine) -add_importlibs(atl oleaut32 ole32 user32 gdi32 advapi32 msvcrt kernel32 ntdll) +add_importlibs(atl oleaut32 ole32 user32 gdi32 advapi32 shlwapi msvcrt kernel32 ntdll) add_pch(atl precomp.h SOURCE) add_cd_file(TARGET atl DESTINATION reactos/system32 FOR all) diff --git a/reactos/dll/win32/atl/registrar.c b/reactos/dll/win32/atl/registrar.c index 1c2207d56d7..830328c84e5 100644 --- a/reactos/dll/win32/atl/registrar.c +++ b/reactos/dll/win32/atl/registrar.c @@ -18,6 +18,12 @@ #include +#define NO_SHLWAPI_PATH +#define NO_SHLWAPI_STRFCNS +#define NO_SHLWAPI_GDI +#define NO_SHLWAPI_STREAM +#include + /************************************************************** * ATLRegistrar implementation */ @@ -226,10 +232,10 @@ static HRESULT do_process_key(LPCOLESTR *pstr, HKEY parent_key, strbuf *buf, BOO strbuf_write(buf->str, &name, -1); }else if(key_type == DO_DELETE) { TRACE("Deleting %s\n", debugstr_w(buf->str)); - RegDeleteTreeW(parent_key, buf->str); + SHDeleteKeyW(parent_key, buf->str); }else { if(key_type == FORCE_REMOVE) - RegDeleteTreeW(parent_key, buf->str); + SHDeleteKeyW(parent_key, buf->str); lres = RegCreateKeyW(parent_key, buf->str, &hkey); if(lres != ERROR_SUCCESS) { WARN("Could not create(open) key: %08x\n", lres); diff --git a/reactos/dll/win32/atl100/CMakeLists.txt b/reactos/dll/win32/atl100/CMakeLists.txt index 710e11786fb..67dfb1db52f 100644 --- a/reactos/dll/win32/atl100/CMakeLists.txt +++ b/reactos/dll/win32/atl100/CMakeLists.txt @@ -3,9 +3,6 @@ add_definitions( -D__WINESRC__ -D_ATL_VER=_ATL_VER_100) -remove_definitions(-D_WIN32_WINNT=0x502) -add_definitions(-D_WIN32_WINNT=0x600) - include_directories(${REACTOS_SOURCE_DIR}/include/reactos/wine) spec2def(atl100.dll atl100.spec ADD_IMPORTLIB) @@ -23,6 +20,6 @@ add_library(atl100 SHARED set_module_type(atl100 win32dll) target_link_libraries(atl100 uuid wine) -add_importlibs(atl100 ole32 oleaut32 user32 gdi32 advapi32 msvcrt kernel32 ntdll) +add_importlibs(atl100 ole32 oleaut32 user32 gdi32 advapi32 shlwapi msvcrt kernel32 ntdll) add_pch(atl100 precomp.h SOURCE) add_cd_file(TARGET atl100 DESTINATION reactos/system32 FOR all) diff --git a/reactos/dll/win32/atl80/CMakeLists.txt b/reactos/dll/win32/atl80/CMakeLists.txt index c27604e573b..fe1f3a992e9 100644 --- a/reactos/dll/win32/atl80/CMakeLists.txt +++ b/reactos/dll/win32/atl80/CMakeLists.txt @@ -3,9 +3,6 @@ add_definitions( -D__WINESRC__ -D_ATL_VER=_ATL_VER_80) -remove_definitions(-D_WIN32_WINNT=0x502) -add_definitions(-D_WIN32_WINNT=0x600) - spec2def(atl80.dll atl80.spec ADD_IMPORTLIB) list(APPEND SOURCE @@ -20,6 +17,6 @@ list(APPEND SOURCE add_library(atl80 SHARED ${SOURCE}) set_module_type(atl80 win32dll) target_link_libraries(atl80 uuid wine) -add_importlibs(atl80 oleaut32 user32 ole32 gdi32 advapi32 msvcrt kernel32 ntdll) +add_importlibs(atl80 oleaut32 user32 ole32 gdi32 advapi32 shlwapi msvcrt kernel32 ntdll) add_pch(atl80 precomp.h SOURCE) add_cd_file(TARGET atl80 DESTINATION reactos/system32 FOR all) From 870ba0361948954c3e7e75b779c32ad086b6fa12 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sun, 8 Jun 2014 18:46:01 +0000 Subject: [PATCH 163/232] [RPCRT4] * Reorder some exports, remove some commented out ones, add some missing ones and remove the ones that do not exist in native. CORE-8174 svn path=/trunk/; revision=63569 --- reactos/dll/win32/rpcrt4/rpcrt4.spec | 42 ++++++++++++---------------- 1 file changed, 18 insertions(+), 24 deletions(-) diff --git a/reactos/dll/win32/rpcrt4/rpcrt4.spec b/reactos/dll/win32/rpcrt4/rpcrt4.spec index 474523b218d..96570f2ef8f 100644 --- a/reactos/dll/win32/rpcrt4/rpcrt4.spec +++ b/reactos/dll/win32/rpcrt4/rpcrt4.spec @@ -1,5 +1,6 @@ @ stdcall CreateProxyFromTypeInfo(ptr ptr ptr ptr ptr) @ stdcall CreateStubFromTypeInfo(ptr ptr ptr ptr) +# I_RpcServerTurnOnOffKeepalives @ stdcall CStdStubBuffer_AddRef(ptr) @ stdcall CStdStubBuffer_Connect(ptr ptr) @ stdcall CStdStubBuffer_CountRefs(ptr) @@ -9,9 +10,10 @@ @ stdcall CStdStubBuffer_Invoke(ptr ptr ptr) @ stdcall CStdStubBuffer_IsIIDSupported(ptr ptr) @ stdcall CStdStubBuffer_QueryInterface(ptr ptr ptr) -@ stub CreateServerInterfaceFromStub # wxp @ stdcall DceErrorInqTextA (long ptr) @ stdcall DceErrorInqTextW (long ptr) +# DllGetClassObject +# DllInstall @ stdcall -private DllRegisterServer() @ stub GlobalMutexClearExternal @ stub GlobalMutexRequestExternal @@ -25,17 +27,17 @@ @ stub I_RpcBCacheAllocate @ stub I_RpcBCacheFree @ stub I_RpcBindingCopy +# I_RpcBindingHandleToAsyncHandle @ stub I_RpcBindingInqConnId @ stub I_RpcBindingInqDynamicEndPoint @ stub I_RpcBindingInqDynamicEndPointA @ stub I_RpcBindingInqDynamicEndPointW @ stub I_RpcBindingInqLocalClientPID # wxp +# I_RpcBindingInqMarshalledTargetInfo @ stub I_RpcBindingInqSecurityContext @ stdcall I_RpcBindingInqTransportType(ptr ptr) @ stub I_RpcBindingInqWireIdForSnego @ stub I_RpcBindingIsClientLocal -# 9x version of I_RpcBindingSetAsync has 3 arguments, not 2 -@ stdcall I_RpcBindingSetAsync(ptr ptr) @ stub I_RpcBindingToStaticStringBindingW @ stub I_RpcClearMutex @ stub I_RpcConnectionInqSockBuffSize @@ -53,6 +55,8 @@ @ stub I_RpcIfInqTransferSyntaxes @ stub I_RpcLogEvent @ stdcall I_RpcMapWin32Status(long) +# I_RpcNDRCGetWireRepresentation +# I_RpcNDRSContextEmergencyCleanup @ stdcall I_RpcNegotiateTransferSyntax(ptr) @ stub I_RpcNsBindingSetEntryName @ stub I_RpcNsBindingSetEntryNameA @@ -64,21 +68,25 @@ @ stub I_RpcProxyNewConnection # wxp @ stub I_RpcReallocPipeBuffer @ stdcall I_RpcReceive(ptr) +# I_RpcRecordCalloutFailure +# I_RpcReplyToClientWithStatus @ stub I_RpcRequestMutex +# I_RpcSNCHOption @ stdcall I_RpcSend(ptr) @ stdcall I_RpcSendReceive(ptr) @ stub I_RpcServerAllocateIpPort +# I_RpcServerCheckClientRestriction @ stub I_RpcServerInqAddressChangeFn @ stub I_RpcServerInqLocalConnAddress # wxp @ stub I_RpcServerInqTransportType +# I_RpcServerIsClientDisconnected @ stub I_RpcServerRegisterForwardFunction @ stub I_RpcServerSetAddressChangeFn -@ stdcall I_RpcServerStartListening(ptr) # win9x -@ stdcall I_RpcServerStopListening() # win9x @ stub I_RpcServerUseProtseq2A @ stub I_RpcServerUseProtseq2W @ stub I_RpcServerUseProtseqEp2A @ stub I_RpcServerUseProtseqEp2W +# I_RpcSessionStrictContextHandle @ stub I_RpcSetAsyncHandle @ stub I_RpcSsDontSerializeContext @ stub I_RpcSystemFunction001 # wxp (oh, brother!) @@ -92,7 +100,6 @@ @ stub I_RpcTransIoCancelled @ stub I_RpcTransServerNewConnection @ stub I_RpcTurnOnEEInfoPropagation # wxp -@ stdcall I_RpcWindowProc(ptr long long long) # win9x @ stub I_UuidCreate @ stub MIDL_wchar_strcpy @ stub MIDL_wchar_strlen @@ -118,7 +125,6 @@ @ stdcall NdrAllocate(ptr long) @ varargs NdrAsyncClientCall(ptr ptr) @ stub NdrAsyncServerCall -@ stdcall NdrAsyncStubCall(ptr ptr ptr ptr) @ stdcall NdrByteCountPointerBufferSize(ptr ptr ptr) @ stdcall NdrByteCountPointerFree(ptr ptr ptr) @ stdcall NdrByteCountPointerMarshall(ptr ptr ptr) @@ -126,8 +132,8 @@ @ stdcall NdrCStdStubBuffer2_Release(ptr ptr) @ stdcall NdrCStdStubBuffer_Release(ptr ptr) @ stdcall NdrClearOutParameters(ptr ptr ptr) -@ varargs NdrClientCall2(ptr ptr) @ varargs -arch=i386 NdrClientCall(ptr ptr) NdrClientCall2 +@ varargs NdrClientCall2(ptr ptr) @ stdcall NdrClientContextMarshall(ptr ptr long) @ stdcall NdrClientContextUnmarshall(ptr ptr ptr) @ stub NdrClientInitialize @@ -173,6 +179,7 @@ @ stdcall NdrCorrelationFree(ptr) @ stdcall NdrCorrelationInitialize(ptr ptr long long) @ stdcall NdrCorrelationPass(ptr) +# NdrCreateServerInterfaceFromStub @ stub NdrDcomAsyncClientCall @ stub NdrDcomAsyncStubCall @ stdcall NdrDllCanUnloadNow(ptr) @@ -198,28 +205,19 @@ @ stdcall NdrFullPointerXlatInit(long long) @ stdcall NdrGetBuffer(ptr long ptr) @ stub NdrGetDcomProtocolVersion -@ stub NdrGetPartialBuffer -@ stub NdrGetPipeBuffer @ stub NdrGetSimpleTypeBufferAlignment # wxp @ stub NdrGetSimpleTypeBufferSize # wxp @ stub NdrGetSimpleTypeMemorySize # wxp @ stub NdrGetTypeFlags # wxp @ stdcall NdrGetUserMarshalInfo(ptr long ptr) -@ stub NdrHardStructBufferSize #(ptr ptr ptr) -@ stub NdrHardStructFree #(ptr ptr ptr) -@ stub NdrHardStructMarshall #(ptr ptr ptr) -@ stub NdrHardStructMemorySize #(ptr ptr) -@ stub NdrHardStructUnmarshall #(ptr ptr ptr long) @ stdcall NdrInterfacePointerBufferSize(ptr ptr ptr) @ stdcall NdrInterfacePointerFree(ptr ptr ptr) @ stdcall NdrInterfacePointerMarshall(ptr ptr ptr) @ stdcall NdrInterfacePointerMemorySize(ptr ptr) @ stdcall NdrInterfacePointerUnmarshall(ptr ptr ptr long) -@ stub NdrIsAppDoneWithPipes @ stdcall NdrMapCommAndFaultStatus(ptr ptr ptr long) -@ stub NdrMarkNextActivePipe -@ stub NdrMesProcEncodeDecode2 @ varargs NdrMesProcEncodeDecode(ptr ptr ptr) +@ stub NdrMesProcEncodeDecode2 @ stub NdrMesSimpleTypeAlignSize @ stub NdrMesSimpleTypeDecode @ stub NdrMesSimpleTypeEncode @@ -248,11 +246,6 @@ @ stub NdrPartialIgnoreClientMarshall # wxp @ stub NdrPartialIgnoreServerInitialize # wxp @ stub NdrPartialIgnoreServerUnmarshall # wxp -@ stub NdrPipePull -@ stub NdrPipePush -@ stub NdrPipeSendReceive -@ stub NdrPipesDone -@ stub NdrPipesInitialize @ stdcall NdrPointerBufferSize(ptr ptr ptr) @ stdcall NdrPointerFree(ptr ptr ptr) @ stdcall NdrPointerMarshall(ptr ptr ptr) @@ -378,13 +371,14 @@ @ stub RpcErrorClearInformation # wxp @ stdcall RpcErrorEndEnumeration(ptr) @ stdcall RpcErrorGetNextRecord(ptr long ptr) +# RpcErrorGetNumberOfRecords @ stdcall RpcErrorLoadErrorInfo(ptr long ptr) -@ stub RpcErrorNumberOfRecords # wxp @ stub RpcErrorResetEnumeration # wxp @ stdcall RpcErrorSaveErrorInfo(ptr ptr ptr) @ stdcall RpcErrorStartEnumeration(ptr) @ stub RpcFreeAuthorizationContext # wxp @ stdcall RpcGetAsyncCallStatus(ptr) RpcAsyncGetCallStatus +# RpcGetAuthorizationContextForClient @ stub RpcIfIdVectorFree @ stub RpcIfInqId @ stdcall RpcImpersonateClient(ptr) From 5d627ea750bf67302434391c68dc228314c34002 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Sun, 8 Jun 2014 19:05:03 +0000 Subject: [PATCH 164/232] [USETUP] - Add status text for logical partition entries in the partition list. - Add logical partition creation page dummy. svn path=/trunk/; revision=63570 --- reactos/base/setup/usetup/interface/usetup.c | 86 ++++++++++++++++---- reactos/base/setup/usetup/lang/bg-BG.h | 2 + reactos/base/setup/usetup/lang/cs-CZ.h | 2 + reactos/base/setup/usetup/lang/de-DE.h | 2 + reactos/base/setup/usetup/lang/el-GR.h | 2 + reactos/base/setup/usetup/lang/en-US.h | 2 + reactos/base/setup/usetup/lang/es-ES.h | 2 + reactos/base/setup/usetup/lang/et-EE.h | 2 + reactos/base/setup/usetup/lang/fr-FR.h | 2 + reactos/base/setup/usetup/lang/he-IL.h | 2 + reactos/base/setup/usetup/lang/it-IT.h | 2 + reactos/base/setup/usetup/lang/ja-JP.h | 2 + reactos/base/setup/usetup/lang/lt-LT.h | 2 + reactos/base/setup/usetup/lang/nl-NL.h | 2 + reactos/base/setup/usetup/lang/pl-PL.h | 2 + reactos/base/setup/usetup/lang/pt-BR.h | 2 + reactos/base/setup/usetup/lang/ro-RO.h | 2 + reactos/base/setup/usetup/lang/ru-RU.h | 2 + reactos/base/setup/usetup/lang/sk-SK.h | 2 + reactos/base/setup/usetup/lang/sq-AL.h | 2 + reactos/base/setup/usetup/lang/sv-SE.h | 2 + reactos/base/setup/usetup/lang/tr-TR.h | 2 + reactos/base/setup/usetup/lang/uk-UA.h | 2 + reactos/base/setup/usetup/mui.h | 1 + reactos/base/setup/usetup/partlist.c | 18 ++++ reactos/base/setup/usetup/partlist.h | 4 + reactos/base/setup/usetup/usetup.h | 1 + 27 files changed, 137 insertions(+), 17 deletions(-) diff --git a/reactos/base/setup/usetup/interface/usetup.c b/reactos/base/setup/usetup/interface/usetup.c index 7bc25646673..800046acdc2 100644 --- a/reactos/base/setup/usetup/interface/usetup.c +++ b/reactos/base/setup/usetup/interface/usetup.c @@ -1550,18 +1550,38 @@ SelectPartitionPage(PINPUT_RECORD Ir) while (TRUE) { /* Update status text */ - if (PartitionList->CurrentPartition == NULL || - PartitionList->CurrentPartition->IsPartitioned == FALSE) + if (PartitionList->CurrentPartition == NULL) { CONSOLE_SetStatusText(MUIGetString(STRING_INSTALLCREATEPARTITION)); } - else if (IsContainerPartition(PartitionList->CurrentPartition->PartitionType)) + else if (PartitionList->CurrentPartition->LogicalPartition) { - CONSOLE_SetStatusText(MUIGetString(STRING_DELETEPARTITION)); + if (PartitionList->CurrentPartition->IsPartitioned) + { + CONSOLE_SetStatusText(MUIGetString(STRING_DELETEPARTITION)); + } + else + { + CONSOLE_SetStatusText(MUIGetString(STRING_INSTALLCREATELOGICAL)); + } } else { - CONSOLE_SetStatusText(MUIGetString(STRING_INSTALLDELETEPARTITION)); + if (PartitionList->CurrentPartition->IsPartitioned) + { + if (IsContainerPartition(PartitionList->CurrentPartition->PartitionType)) + { + CONSOLE_SetStatusText(MUIGetString(STRING_DELETEPARTITION)); + } + else + { + CONSOLE_SetStatusText(MUIGetString(STRING_INSTALLDELETEPARTITION)); + } + } + else + { + CONSOLE_SetStatusText(MUIGetString(STRING_INSTALLCREATEPARTITION)); + } } CONSOLE_ConInKey(Ir); @@ -1616,25 +1636,45 @@ SelectPartitionPage(PINPUT_RECORD Ir) } else if (Ir->Event.KeyEvent.wVirtualKeyCode == 'P') /* P */ { - Error = PrimaryPartitionCreationChecks(PartitionList); - if (Error != NOT_AN_ERROR) + if (PartitionList->CurrentPartition->LogicalPartition == FALSE) { - MUIDisplayError(Error, Ir, POPUP_WAIT_ANY_KEY); - return SELECT_PARTITION_PAGE; - } + Error = PrimaryPartitionCreationChecks(PartitionList); + if (Error != NOT_AN_ERROR) + { + MUIDisplayError(Error, Ir, POPUP_WAIT_ANY_KEY); + return SELECT_PARTITION_PAGE; + } - return CREATE_PRIMARY_PARTITION_PAGE; + return CREATE_PRIMARY_PARTITION_PAGE; + } } else if (Ir->Event.KeyEvent.wVirtualKeyCode == 'E') /* E */ { - Error = ExtendedPartitionCreationChecks(PartitionList); - if (Error != NOT_AN_ERROR) + if (PartitionList->CurrentPartition->LogicalPartition == FALSE) { - MUIDisplayError(Error, Ir, POPUP_WAIT_ANY_KEY); - return SELECT_PARTITION_PAGE; - } + Error = ExtendedPartitionCreationChecks(PartitionList); + if (Error != NOT_AN_ERROR) + { + MUIDisplayError(Error, Ir, POPUP_WAIT_ANY_KEY); + return SELECT_PARTITION_PAGE; + } - return CREATE_EXTENDED_PARTITION_PAGE; + return CREATE_EXTENDED_PARTITION_PAGE; + } + } + else if (Ir->Event.KeyEvent.wVirtualKeyCode == 'L') /* L */ + { + if (PartitionList->CurrentPartition->LogicalPartition == TRUE) + { + Error = LogicalPartitionCreationChecks(PartitionList); + if (Error != NOT_AN_ERROR) + { + MUIDisplayError(Error, Ir, POPUP_WAIT_ANY_KEY); + return SELECT_PARTITION_PAGE; + } + + return CREATE_LOGICAL_PARTITION_PAGE; + } } else if (Ir->Event.KeyEvent.wVirtualKeyCode == 'D') /* D */ { @@ -2088,6 +2128,14 @@ CreateExtendedPartitionPage(PINPUT_RECORD Ir) } +static PAGE_NUMBER +CreateLogicalPartitionPage(PINPUT_RECORD Ir) +{ + + return SELECT_PARTITION_PAGE; +} + + static PAGE_NUMBER DeletePartitionPage(PINPUT_RECORD Ir) { @@ -4029,6 +4077,10 @@ RunUSetup(VOID) Page = CreateExtendedPartitionPage(&Ir); break; + case CREATE_LOGICAL_PARTITION_PAGE: + Page = CreateLogicalPartitionPage(&Ir); + break; + case DELETE_PARTITION_PAGE: Page = DeletePartitionPage(&Ir); break; diff --git a/reactos/base/setup/usetup/lang/bg-BG.h b/reactos/base/setup/usetup/lang/bg-BG.h index 8e5e61f3730..d68f602a6a1 100644 --- a/reactos/base/setup/usetup/lang/bg-BG.h +++ b/reactos/base/setup/usetup/lang/bg-BG.h @@ -1651,6 +1651,8 @@ MUI_STRING bgBGStrings[] = {STRING_INSTALLCREATEPARTITION, " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, // " ENTER = ‘« £ ­¥ C = ‘ꧤ ¢ ­¥ ­  ¤ï« F3 = ˆ§å®¤"}, + {STRING_INSTALLCREATELOGICAL, + " ENTER = Install L = Create Logical Partition F3 = Quit"}, {STRING_INSTALLDELETEPARTITION, " ENTER = ‘« £ ­¥ D = ˆ§âਢ ­¥ ­  ¤ï« F3 = ˆ§å®¤"}, {STRING_DELETEPARTITION, diff --git a/reactos/base/setup/usetup/lang/cs-CZ.h b/reactos/base/setup/usetup/lang/cs-CZ.h index 319c8e026b1..8440fc22811 100644 --- a/reactos/base/setup/usetup/lang/cs-CZ.h +++ b/reactos/base/setup/usetup/lang/cs-CZ.h @@ -1647,6 +1647,8 @@ MUI_STRING csCZStrings[] = {STRING_INSTALLCREATEPARTITION, " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, // " ENTER = Instalovat C = Vytvoýit odd¡l F3 = UkonŸit"}, + {STRING_INSTALLCREATELOGICAL, + " ENTER = Install L = Create Logical Partition F3 = Quit"}, {STRING_INSTALLDELETEPARTITION, " ENTER = Instalovat D = Odstranit odd¡l F3 = UkonŸit"}, {STRING_DELETEPARTITION, diff --git a/reactos/base/setup/usetup/lang/de-DE.h b/reactos/base/setup/usetup/lang/de-DE.h index c0a2703fb27..e85dfb95f6d 100644 --- a/reactos/base/setup/usetup/lang/de-DE.h +++ b/reactos/base/setup/usetup/lang/de-DE.h @@ -1642,6 +1642,8 @@ MUI_STRING deDEStrings[] = " Bitte warten..."}, {STRING_INSTALLCREATEPARTITION, " EINGABETASTE = Installieren P = Prim„re E = Erweiterte F3 = Installation abbr."}, + {STRING_INSTALLCREATELOGICAL, + " EINGABETASTE = Installieren L = Logisches Laufwerk F3 = Installation abbr."}, {STRING_INSTALLDELETEPARTITION, " EINGABETASTE = Installieren D = Partition l”schen F3 = Installation abbr."}, {STRING_DELETEPARTITION, diff --git a/reactos/base/setup/usetup/lang/el-GR.h b/reactos/base/setup/usetup/lang/el-GR.h index 790b375e606..d12bb6918ed 100644 --- a/reactos/base/setup/usetup/lang/el-GR.h +++ b/reactos/base/setup/usetup/lang/el-GR.h @@ -1663,6 +1663,8 @@ MUI_STRING elGRStrings[] = {STRING_INSTALLCREATEPARTITION, " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, // " ENTER = „š¡˜«á©«˜©ž C = ƒž£ ¦¬¨šå˜ Partition F3 = €§¦®é¨ž©ž"}, + {STRING_INSTALLCREATELOGICAL, + " ENTER = Install L = Create Logical Partition F3 = Quit"}, {STRING_INSTALLDELETEPARTITION, " ENTER = „š¡˜«á©«˜©ž D = ƒ ˜š¨˜­ã Partition F3 = €§¦®é¨ž©ž"}, {STRING_DELETEPARTITION, diff --git a/reactos/base/setup/usetup/lang/en-US.h b/reactos/base/setup/usetup/lang/en-US.h index e9d907d926c..6b20c0889ca 100644 --- a/reactos/base/setup/usetup/lang/en-US.h +++ b/reactos/base/setup/usetup/lang/en-US.h @@ -1636,6 +1636,8 @@ MUI_STRING enUSStrings[] = " Please wait..."}, {STRING_INSTALLCREATEPARTITION, " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, + {STRING_INSTALLCREATELOGICAL, + " ENTER = Install L = Create Logical Partition F3 = Quit"}, {STRING_INSTALLDELETEPARTITION, " ENTER = Install D = Delete Partition F3 = Quit"}, {STRING_DELETEPARTITION, diff --git a/reactos/base/setup/usetup/lang/es-ES.h b/reactos/base/setup/usetup/lang/es-ES.h index 8d6dd1d6aa6..04a53da0268 100644 --- a/reactos/base/setup/usetup/lang/es-ES.h +++ b/reactos/base/setup/usetup/lang/es-ES.h @@ -1645,6 +1645,8 @@ MUI_STRING esESStrings[] = {STRING_INSTALLCREATEPARTITION, " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, // " ENTER = Instalar C = Crear Partici¢n F3 = Salir"}, + {STRING_INSTALLCREATELOGICAL, + " ENTER = Install L = Create Logical Partition F3 = Quit"}, {STRING_DELETEPARTITION, " D = Borrar Partici¢n F3 = Salir"}, {STRING_INSTALLDELETEPARTITION, diff --git a/reactos/base/setup/usetup/lang/et-EE.h b/reactos/base/setup/usetup/lang/et-EE.h index 08666686476..71fdeceb0c5 100644 --- a/reactos/base/setup/usetup/lang/et-EE.h +++ b/reactos/base/setup/usetup/lang/et-EE.h @@ -1636,6 +1636,8 @@ MUI_STRING etEEStrings[] = {STRING_INSTALLCREATEPARTITION, " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, // " ENTER = Paigalda C = Loo partitsioon F3 = V„lju"}, + {STRING_INSTALLCREATELOGICAL, + " ENTER = Install L = Create Logical Partition F3 = Quit"}, {STRING_INSTALLDELETEPARTITION, " ENTER = Paigalda D = Kustuta partitsioon F3 = V„lju"}, {STRING_DELETEPARTITION, diff --git a/reactos/base/setup/usetup/lang/fr-FR.h b/reactos/base/setup/usetup/lang/fr-FR.h index 379815f3750..84ce39ae830 100644 --- a/reactos/base/setup/usetup/lang/fr-FR.h +++ b/reactos/base/setup/usetup/lang/fr-FR.h @@ -1650,6 +1650,8 @@ MUI_STRING frFRStrings[] = " Veuillez patienter..."}, {STRING_INSTALLCREATEPARTITION, " ENTRE = Installer P/E = Cr‚er Partition Primaire/tendue F3 = Quitter"}, + {STRING_INSTALLCREATELOGICAL, + " ENTER = Install L = Create Logical Partition F3 = Quit"}, {STRING_INSTALLDELETEPARTITION, " ENTRE = Installer D = Supprimer Partition F3 = Quitter"}, {STRING_DELETEPARTITION, diff --git a/reactos/base/setup/usetup/lang/he-IL.h b/reactos/base/setup/usetup/lang/he-IL.h index 5279790ae76..5b415a68d5d 100644 --- a/reactos/base/setup/usetup/lang/he-IL.h +++ b/reactos/base/setup/usetup/lang/he-IL.h @@ -1638,6 +1638,8 @@ MUI_STRING heILStrings[] = {STRING_INSTALLCREATEPARTITION, " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, // " ENTER = „š— C = –…˜ އ‰–„ F3 = ˆŒ „š—„"}, + {STRING_INSTALLCREATELOGICAL, + " ENTER = Install L = Create Logical Partition F3 = Quit"}, {STRING_INSTALLDELETEPARTITION, " ENTER = „š— D = އ— އ‰–„ F3 = ˆŒ „š—„"}, {STRING_DELETEPARTITION, diff --git a/reactos/base/setup/usetup/lang/it-IT.h b/reactos/base/setup/usetup/lang/it-IT.h index bb27717aac1..936f3b479d7 100644 --- a/reactos/base/setup/usetup/lang/it-IT.h +++ b/reactos/base/setup/usetup/lang/it-IT.h @@ -1640,6 +1640,8 @@ MUI_STRING itITStrings[] = {STRING_INSTALLCREATEPARTITION, " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, // " INVIO = Installa C = Crea Partizione F3 = Esci"}, + {STRING_INSTALLCREATELOGICAL, + " ENTER = Install L = Create Logical Partition F3 = Quit"}, {STRING_INSTALLDELETEPARTITION, " INVIO = Installa D = Rimuovi Partizione F3 = Esci"}, {STRING_DELETEPARTITION, diff --git a/reactos/base/setup/usetup/lang/ja-JP.h b/reactos/base/setup/usetup/lang/ja-JP.h index d0842ba028e..b70ecc999ee 100644 --- a/reactos/base/setup/usetup/lang/ja-JP.h +++ b/reactos/base/setup/usetup/lang/ja-JP.h @@ -1639,6 +1639,8 @@ MUI_STRING jaJPStrings[] = {STRING_INSTALLCREATEPARTITION, " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, // " ENTER = ²Ý½Ä°Ù C = Ê߰è¼®Ý »¸¾² F3 = Á­³¼"}, + {STRING_INSTALLCREATELOGICAL, + " ENTER = Install L = Create Logical Partition F3 = Quit"}, {STRING_INSTALLDELETEPARTITION, " ENTER = ²Ý½Ä°Ù D = Ê߰è¼®Ý »¸¼Þ® F3 = Á­³¼"}, {STRING_DELETEPARTITION, diff --git a/reactos/base/setup/usetup/lang/lt-LT.h b/reactos/base/setup/usetup/lang/lt-LT.h index b2bbf911100..fbb759ea6d8 100644 --- a/reactos/base/setup/usetup/lang/lt-LT.h +++ b/reactos/base/setup/usetup/lang/lt-LT.h @@ -1647,6 +1647,8 @@ MUI_STRING ltLTStrings[] = " Please wait..."}, {STRING_INSTALLCREATEPARTITION, " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, + {STRING_INSTALLCREATELOGICAL, + " ENTER = Install L = Create Logical Partition F3 = Quit"}, {STRING_INSTALLDELETEPARTITION, " ENTER = Install D = Delete Partition F3 = Quit"}, {STRING_DELETEPARTITION, diff --git a/reactos/base/setup/usetup/lang/nl-NL.h b/reactos/base/setup/usetup/lang/nl-NL.h index 47ac10dd4da..dac2f565e52 100644 --- a/reactos/base/setup/usetup/lang/nl-NL.h +++ b/reactos/base/setup/usetup/lang/nl-NL.h @@ -1684,6 +1684,8 @@ MUI_STRING nlNLStrings[] = {STRING_INSTALLCREATEPARTITION, " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, // " ENTER = Installeren C = Partitie aanmaken F3 = Afsluiten"}, + {STRING_INSTALLCREATELOGICAL, + " ENTER = Install L = Create Logical Partition F3 = Quit"}, {STRING_INSTALLDELETEPARTITION, " ENTER = Installeren D = Partitie verwijderen F3 = Afsluiten"}, {STRING_DELETEPARTITION, diff --git a/reactos/base/setup/usetup/lang/pl-PL.h b/reactos/base/setup/usetup/lang/pl-PL.h index f03915b3bc2..a9e8c72065b 100644 --- a/reactos/base/setup/usetup/lang/pl-PL.h +++ b/reactos/base/setup/usetup/lang/pl-PL.h @@ -1648,6 +1648,8 @@ MUI_STRING plPLStrings[] = {STRING_INSTALLCREATEPARTITION, " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, // " ENTER = Instalacja C = Utworzenie Partycji F3 = Wyj˜cie"}, + {STRING_INSTALLCREATELOGICAL, + " ENTER = Install L = Create Logical Partition F3 = Quit"}, {STRING_INSTALLDELETEPARTITION, " ENTER = Instalacja D = Skasowanie Partycji F3 = Wyj˜cie"}, {STRING_DELETEPARTITION, diff --git a/reactos/base/setup/usetup/lang/pt-BR.h b/reactos/base/setup/usetup/lang/pt-BR.h index e4839862082..fc8ef341d0d 100644 --- a/reactos/base/setup/usetup/lang/pt-BR.h +++ b/reactos/base/setup/usetup/lang/pt-BR.h @@ -1675,6 +1675,8 @@ MUI_STRING ptBRStrings[] = {STRING_INSTALLCREATEPARTITION, " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, // " ENTER=Instalar C=Criar parti‡Æo F3=Sair"}, + {STRING_INSTALLCREATELOGICAL, + " ENTER = Install L = Create Logical Partition F3 = Quit"}, {STRING_INSTALLDELETEPARTITION, " ENTER=Instalar D=Apagar parti‡Æo F3=Sair"}, {STRING_DELETEPARTITION, diff --git a/reactos/base/setup/usetup/lang/ro-RO.h b/reactos/base/setup/usetup/lang/ro-RO.h index ac0a0f50ccf..d6b94251485 100644 --- a/reactos/base/setup/usetup/lang/ro-RO.h +++ b/reactos/base/setup/usetup/lang/ro-RO.h @@ -1716,6 +1716,8 @@ MUI_STRING roROStrings[] = {STRING_INSTALLCREATEPARTITION, " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, // " ENTER = Instalare C = Creare partiîie F3 = Ie­ire"}, + {STRING_INSTALLCREATELOGICAL, + " ENTER = Install L = Create Logical Partition F3 = Quit"}, {STRING_INSTALLDELETEPARTITION, " ENTER = Instalare D = ¸tergere partiîie F3 = Ie­ire"}, {STRING_DELETEPARTITION, diff --git a/reactos/base/setup/usetup/lang/ru-RU.h b/reactos/base/setup/usetup/lang/ru-RU.h index 4a0c38a4b50..852c2638977 100644 --- a/reactos/base/setup/usetup/lang/ru-RU.h +++ b/reactos/base/setup/usetup/lang/ru-RU.h @@ -1640,6 +1640,8 @@ MUI_STRING ruRUStrings[] = {STRING_INSTALLCREATEPARTITION, " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, // " ENTER = “áâ ­®¢¨âì C = ‘®§¤ âì à §¤¥« F3 = ‚ë室"}, + {STRING_INSTALLCREATELOGICAL, + " ENTER = Install L = Create Logical Partition F3 = Quit"}, {STRING_INSTALLDELETEPARTITION, " ENTER = “áâ ­®¢¨âì D = “¤ «¨âì à §¤¥« F3 = ‚ë室"}, {STRING_DELETEPARTITION, diff --git a/reactos/base/setup/usetup/lang/sk-SK.h b/reactos/base/setup/usetup/lang/sk-SK.h index 4572b00ae41..74e2ee3f9af 100644 --- a/reactos/base/setup/usetup/lang/sk-SK.h +++ b/reactos/base/setup/usetup/lang/sk-SK.h @@ -1650,6 +1650,8 @@ MUI_STRING skSKStrings[] = {STRING_INSTALLCREATEPARTITION, " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, // " ENTER = Inçtalovaœ C = Vytvoriœ oblasœ F3 = SkonŸiœ"}, + {STRING_INSTALLCREATELOGICAL, + " ENTER = Install L = Create Logical Partition F3 = Quit"}, {STRING_INSTALLDELETEPARTITION, " ENTER = Inçtalovaœ D = Odstr niœ oblasœ F3 = SkonŸiœ"}, {STRING_DELETEPARTITION, diff --git a/reactos/base/setup/usetup/lang/sq-AL.h b/reactos/base/setup/usetup/lang/sq-AL.h index e746fb25a97..f23fc7c35ca 100644 --- a/reactos/base/setup/usetup/lang/sq-AL.h +++ b/reactos/base/setup/usetup/lang/sq-AL.h @@ -1642,6 +1642,8 @@ MUI_STRING sqALStrings[] = {STRING_INSTALLCREATEPARTITION, " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, // " ENTER = Instalo C = Krijo Particion F3 = Dil"}, + {STRING_INSTALLCREATELOGICAL, + " ENTER = Install L = Create Logical Partition F3 = Quit"}, {STRING_INSTALLDELETEPARTITION, " ENTER = Instalo D = Fshi Particion F3 = Dil"}, {STRING_DELETEPARTITION, diff --git a/reactos/base/setup/usetup/lang/sv-SE.h b/reactos/base/setup/usetup/lang/sv-SE.h index 7559e6c4cdd..3ee1326128d 100644 --- a/reactos/base/setup/usetup/lang/sv-SE.h +++ b/reactos/base/setup/usetup/lang/sv-SE.h @@ -1645,6 +1645,8 @@ MUI_STRING svSEStrings[] = {STRING_INSTALLCREATEPARTITION, " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, // " ENTER = Installera C = Skapa Partition F3 = Avsluta"}, + {STRING_INSTALLCREATELOGICAL, + " ENTER = Install L = Create Logical Partition F3 = Quit"}, {STRING_INSTALLDELETEPARTITION, " ENTER = Installera D = Ta bort Partition F3 = Avsluta"}, {STRING_DELETEPARTITION, diff --git a/reactos/base/setup/usetup/lang/tr-TR.h b/reactos/base/setup/usetup/lang/tr-TR.h index bb86584510d..d8058795bba 100644 --- a/reactos/base/setup/usetup/lang/tr-TR.h +++ b/reactos/base/setup/usetup/lang/tr-TR.h @@ -1613,6 +1613,8 @@ MUI_STRING trTRStrings[] = {STRING_INSTALLCREATEPARTITION, " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, // " GiriŸ = Kur C = B”lm OluŸtur F3 = €kŸ"}, + {STRING_INSTALLCREATELOGICAL, + " ENTER = Install L = Create Logical Partition F3 = Quit"}, {STRING_INSTALLDELETEPARTITION, " GiriŸ = Kur D = B”lm Sil F3 = €kŸ"}, {STRING_DELETEPARTITION, diff --git a/reactos/base/setup/usetup/lang/uk-UA.h b/reactos/base/setup/usetup/lang/uk-UA.h index 93c68772985..2d538b7a36c 100644 --- a/reactos/base/setup/usetup/lang/uk-UA.h +++ b/reactos/base/setup/usetup/lang/uk-UA.h @@ -1645,6 +1645,8 @@ MUI_STRING ukUAStrings[] = {STRING_INSTALLCREATEPARTITION, " ENTER = Install P = Create Primary E = Create Extended F3 = Quit"}, // " ENTER = ‚áâ ­®¢¨â¨ C = ‘⢮à¨â¨ ®§¤i« F3 = ‚¨©â¨"}, + {STRING_INSTALLCREATELOGICAL, + " ENTER = Install L = Create Logical Partition F3 = Quit"}, {STRING_INSTALLDELETEPARTITION, " ENTER = ‚áâ ­®¢¨â¨ D = ‚¨¤ «¨â¨ ®§¤i« F3 = ‚¨©â¨"}, {STRING_DELETEPARTITION, diff --git a/reactos/base/setup/usetup/mui.h b/reactos/base/setup/usetup/mui.h index 48092c81ce4..f36317c0f44 100644 --- a/reactos/base/setup/usetup/mui.h +++ b/reactos/base/setup/usetup/mui.h @@ -99,6 +99,7 @@ MUIGetString( #define STRING_PLEASEWAIT 1 #define STRING_INSTALLCREATEPARTITION 2 +#define STRING_INSTALLCREATELOGICAL 60 #define STRING_INSTALLDELETEPARTITION 3 #define STRING_DELETEPARTITION 59 #define STRING_PARTITIONSIZE 4 diff --git a/reactos/base/setup/usetup/partlist.c b/reactos/base/setup/usetup/partlist.c index b8aad4ad9ae..d48a1bf2109 100644 --- a/reactos/base/setup/usetup/partlist.c +++ b/reactos/base/setup/usetup/partlist.c @@ -3088,4 +3088,22 @@ ExtendedPartitionCreationChecks( return ERROR_SUCCESS; } + +ULONG +LogicalPartitionCreationChecks( + IN PPARTLIST List) +{ +// PDISKENTRY DiskEntry; + PPARTENTRY PartEntry; + +// DiskEntry = List->CurrentDisk; + PartEntry = List->CurrentPartition; + + /* Fail if partition is already in use */ + if (PartEntry->IsPartitioned == TRUE) + return ERROR_NEW_PARTITION; + + return ERROR_SUCCESS; +} + /* EOF */ diff --git a/reactos/base/setup/usetup/partlist.h b/reactos/base/setup/usetup/partlist.h index 3423fe65120..ad4765a5669 100644 --- a/reactos/base/setup/usetup/partlist.h +++ b/reactos/base/setup/usetup/partlist.h @@ -254,4 +254,8 @@ ULONG ExtendedPartitionCreationChecks( IN PPARTLIST List); +ULONG +LogicalPartitionCreationChecks( + IN PPARTLIST List); + /* EOF */ diff --git a/reactos/base/setup/usetup/usetup.h b/reactos/base/setup/usetup/usetup.h index 0d4f587c965..48914d16bad 100644 --- a/reactos/base/setup/usetup/usetup.h +++ b/reactos/base/setup/usetup/usetup.h @@ -130,6 +130,7 @@ typedef enum _PAGE_NUMBER SELECT_PARTITION_PAGE, CREATE_PRIMARY_PARTITION_PAGE, CREATE_EXTENDED_PARTITION_PAGE, + CREATE_LOGICAL_PARTITION_PAGE, DELETE_PARTITION_PAGE, SELECT_FILE_SYSTEM_PAGE, From 7c0657fdac265538e07a67ba271d63a88e0e6a88 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sun, 8 Jun 2014 19:25:14 +0000 Subject: [PATCH 165/232] [OLE32] * Reorder some exports, add some missing ones and remove the ones that do not exist in native. CORE-8174 svn path=/trunk/; revision=63571 --- reactos/dll/win32/ole32/ole32.spec | 44 +++++++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 4 deletions(-) diff --git a/reactos/dll/win32/ole32/ole32.spec b/reactos/dll/win32/ole32/ole32.spec index a12c2c4a19f..ce554435edb 100644 --- a/reactos/dll/win32/ole32/ole32.spec +++ b/reactos/dll/win32/ole32/ole32.spec @@ -1,51 +1,72 @@ +# CoVrfCheckThreadState +# CoVrfGetThreadState +# CoVrfReleaseThreadState +# PropVariantChangeType @ stdcall BindMoniker(ptr long ptr ptr) @ stdcall CLIPFORMAT_UserFree(ptr ptr) @ stdcall CLIPFORMAT_UserMarshal(ptr ptr ptr) @ stdcall CLIPFORMAT_UserSize(ptr long ptr) @ stdcall CLIPFORMAT_UserUnmarshal(ptr ptr ptr) +# CLSIDFromOle1Class @ stdcall CLSIDFromProgID(wstr ptr) @ stdcall CLSIDFromProgIDEx(wstr ptr) @ stdcall CLSIDFromString(wstr ptr) @ stdcall CoAddRefServerProcess() @ stdcall CoAllowSetForegroundWindow(ptr ptr) @ stdcall CoBuildVersion() +# CoCancelCall @ stdcall CoCopyProxy(ptr ptr) @ stdcall CoCreateFreeThreadedMarshaler(ptr ptr) @ stdcall CoCreateGuid(ptr) @ stdcall CoCreateInstance(ptr ptr long ptr ptr) @ stdcall CoCreateInstanceEx(ptr ptr long ptr long ptr) +# CoCreateObjectInContext +# CoDeactivateObject +# CoDisableCallCancellation @ stdcall CoDisconnectObject(ptr long) @ stdcall CoDosDateTimeToFileTime(long long ptr) kernel32.DosDateTimeToFileTime +# CoEnableCallCancellation @ stdcall CoFileTimeNow(ptr) @ stdcall CoFileTimeToDosDateTime(ptr ptr ptr) kernel32.FileTimeToDosDateTime @ stdcall CoFreeAllLibraries() @ stdcall CoFreeLibrary(long) @ stdcall CoFreeUnusedLibraries() @ stdcall CoFreeUnusedLibrariesEx(long long) +# CoGetApartmentID @ stdcall CoGetCallContext(ptr ptr) @ stdcall CoGetCallerTID(ptr) +# CoGetCancelObject @ stdcall CoGetClassObject(ptr long ptr ptr ptr) +# CoGetClassVersion +# CoGetComCatalog @ stdcall CoGetContextToken(ptr) @ stdcall CoGetCurrentLogicalThreadId(ptr) @ stdcall CoGetCurrentProcess() @ stdcall CoGetDefaultContext(long ptr ptr) @ stdcall CoGetInstanceFromFile(ptr ptr ptr long long wstr long ptr) @ stdcall CoGetInstanceFromIStorage(ptr ptr ptr long ptr long ptr) +# CoGetInterceptor +# CoGetInterceptorFromTypeInfo @ stdcall CoGetInterfaceAndReleaseStream(ptr ptr ptr) @ stdcall CoGetMalloc(long ptr) @ stdcall CoGetMarshalSizeMax(ptr ptr ptr long ptr long) +# CoGetModuleType @ stdcall CoGetObject(wstr ptr ptr ptr) @ stdcall CoGetObjectContext(ptr ptr) @ stdcall CoGetPSClsid(ptr ptr) +# CoGetProcessIdentifier @ stdcall CoGetStandardMarshal(ptr ptr long ptr long ptr) @ stdcall CoGetState(ptr) -@ stub CoGetTIDFromIPID +# CoGetStdMarshalEx +# CoGetSystemSecurityPermissions @ stdcall CoGetTreatAsClass(ptr ptr) @ stdcall CoImpersonateClient() @ stdcall CoInitialize(ptr) @ stdcall CoInitializeEx(ptr long) @ stdcall CoInitializeSecurity(ptr long ptr ptr long long ptr long ptr) @ stdcall CoInitializeWOW(long long) +# CoInstall +# CoInvalidateRemoteMachineBindings @ stdcall CoIsHandlerConnected(ptr) @ stdcall CoIsOle1Class (ptr) @ stdcall CoLoadLibrary(wstr long) @@ -53,10 +74,13 @@ @ stdcall CoMarshalHresult(ptr long) @ stdcall CoMarshalInterThreadInterfaceInStream(ptr ptr ptr) @ stdcall CoMarshalInterface(ptr ptr ptr long ptr long) +# CoPopServiceDomain +# CoPushServiceDomain @ stub CoQueryAuthenticationServices @ stdcall CoQueryClientBlanket(ptr ptr ptr ptr ptr ptr ptr) @ stdcall CoQueryProxyBlanket(ptr ptr ptr ptr ptr ptr ptr ptr) @ stub CoQueryReleaseObject +# CoReactivateObject @ stdcall CoRegisterChannelHook(ptr ptr) @ stdcall CoRegisterClassObject(ptr ptr long long ptr) @ stdcall CoRegisterInitializeSpy(ptr ptr) @@ -68,10 +92,12 @@ @ stdcall CoReleaseMarshalData(ptr) @ stdcall CoReleaseServerProcess() @ stdcall CoResumeClassObjects() +# CoRetireServer @ stdcall CoRevertToSelf() @ stdcall CoRevokeClassObject(long) @ stdcall CoRevokeInitializeSpy(int64) @ stdcall CoRevokeMallocSpy() +# CoSetCancelObject @ stdcall CoSetProxyBlanket(ptr long long ptr long long ptr long) @ stdcall CoSetState(ptr) @ stdcall CoSuspendClassObjects() @@ -79,12 +105,17 @@ @ stdcall CoTaskMemAlloc(long) @ stdcall CoTaskMemFree(ptr) @ stdcall CoTaskMemRealloc(ptr long) +# CoTestCancel @ stdcall CoTreatAsClass(ptr ptr) @ stdcall CoUninitialize() @ stub CoUnloadingWOW @ stdcall CoUnmarshalHresult(ptr ptr) @ stdcall CoUnmarshalInterface(ptr ptr ptr) @ stdcall CoWaitForMultipleHandles(long long long ptr ptr) +# ComPs_NdrDllCanUnloadNow +# ComPs_NdrDllGetClassObject +# ComPs_NdrDllRegisterProxy +# ComPs_NdrDllUnregisterProxy @ stdcall CreateAntiMoniker(ptr) @ stdcall CreateBindCtx(long ptr) @ stdcall CreateClassMoniker(ptr ptr) @@ -98,12 +129,13 @@ @ stub CreateObjrefMoniker @ stdcall CreateOleAdviseHolder(ptr) @ stdcall CreatePointerMoniker(ptr ptr) +# CreateStdProgressIndicator @ stdcall CreateStreamOnHGlobal(ptr long ptr) +# DcomChannelSetHResult @ stdcall DllDebugObjectRPCHook(long ptr) -@ stdcall DllGetClassObject (ptr ptr ptr) +@ stdcall DllGetClassObject(ptr ptr ptr) @ stub DllGetClassObjectWOW @ stdcall -private DllRegisterServer() -@ stdcall -private DllUnregisterServer() @ stdcall DoDragDrop(ptr ptr long ptr) @ stub EnableHookObject @ stdcall FmtIdToPropStgName(ptr wstr) @@ -164,8 +196,8 @@ @ stdcall HWND_UserMarshal(ptr ptr ptr) @ stdcall HWND_UserSize(ptr long ptr) @ stdcall HWND_UserUnmarshal(ptr ptr ptr) +# HkOleRegisterObject @ stdcall IIDFromString(wstr ptr) -@ stub I_RemoteMain @ stdcall IsAccelerator(long long ptr long) @ stdcall IsEqualGUID(ptr ptr) @ stub IsValidIid @@ -260,15 +292,19 @@ @ stdcall StgCreateDocfile(wstr long long ptr) @ stdcall StgCreateDocfileOnILockBytes(ptr long long ptr) @ stdcall StgCreatePropSetStg(ptr long ptr) +# StgCreatePropStg @ stdcall StgCreateStorageEx(wstr long long long ptr ptr ptr ptr) @ stub StgGetIFillLockBytesOnFile @ stub StgGetIFillLockBytesOnILockBytes @ stdcall StgIsStorageFile(wstr) @ stdcall StgIsStorageILockBytes(ptr) @ stub StgOpenAsyncDocfileOnIFillLockBytes +# StgOpenPropStg @ stdcall StgOpenStorage(wstr ptr long ptr long ptr) @ stdcall StgOpenStorageEx(wstr long long long ptr ptr ptr ptr) +# StgOpenStorageOnHandle @ stdcall StgOpenStorageOnILockBytes(ptr ptr long long long ptr) +# StgPropertyLengthAsVariant @ stdcall StgSetTimes(wstr ptr ptr ptr ) @ stdcall StringFromCLSID(ptr ptr) @ stdcall StringFromGUID2(ptr ptr long) From 5ed8d5d62e038e78bc61c66dc778ee5d39004ba1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Sun, 8 Jun 2014 22:28:35 +0000 Subject: [PATCH 166/232] [CRT/INTRIN_X86] Add InterlockedExchange8/16 for GCC. Reviewed by Timo. svn path=/trunk/; revision=63572 --- reactos/include/crt/mingw32/intrin_x86.h | 34 +++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/reactos/include/crt/mingw32/intrin_x86.h b/reactos/include/crt/mingw32/intrin_x86.h index f8f77b0f968..d9dcced3002 100644 --- a/reactos/include/crt/mingw32/intrin_x86.h +++ b/reactos/include/crt/mingw32/intrin_x86.h @@ -150,6 +150,8 @@ __INTRIN_INLINE char _InterlockedCompareExchange8(volatile char * const Destinat __INTRIN_INLINE short _InterlockedCompareExchange16(volatile short * const Destination, const short Exchange, const short Comperand); __INTRIN_INLINE long _InterlockedCompareExchange(volatile long * const Destination, const long Exchange, const long Comperand); __INTRIN_INLINE void * _InterlockedCompareExchangePointer(void * volatile * const Destination, void * const Exchange, void * const Comperand); +__INTRIN_INLINE char _InterlockedExchange8(volatile char * const Target, const char Value); +__INTRIN_INLINE short _InterlockedExchange16(volatile short * const Target, const short Value); __INTRIN_INLINE long _InterlockedExchange(volatile long * const Target, const long Value); __INTRIN_INLINE void * _InterlockedExchangePointer(void * volatile * const Target, void * const Value); __INTRIN_INLINE long _InterlockedExchangeAdd16(volatile short * const Addend, const short Value); @@ -199,6 +201,20 @@ __INTRIN_INLINE void * _InterlockedCompareExchangePointer(void * volatile * cons return (void *)__sync_val_compare_and_swap(Destination, Comperand, Exchange); } +__INTRIN_INLINE char _InterlockedExchange8(volatile char * const Target, const char Value) +{ + /* NOTE: __sync_lock_test_and_set would be an acquire barrier, so we force a full barrier */ + __sync_synchronize(); + return __sync_lock_test_and_set(Target, Value); +} + +__INTRIN_INLINE short _InterlockedExchange16(volatile short * const Target, const short Value) +{ + /* NOTE: __sync_lock_test_and_set would be an acquire barrier, so we force a full barrier */ + __sync_synchronize(); + return __sync_lock_test_and_set(Target, Value); +} + __INTRIN_INLINE long _InterlockedExchange(volatile long * const Target, const long Value) { /* NOTE: __sync_lock_test_and_set would be an acquire barrier, so we force a full barrier */ @@ -217,7 +233,7 @@ __INTRIN_INLINE long long _InterlockedExchange64(volatile long long * const Targ __INTRIN_INLINE void * _InterlockedExchangePointer(void * volatile * const Target, void * const Value) { - /* NOTE: ditto */ + /* NOTE: __sync_lock_test_and_set would be an acquire barrier, so we force a full barrier */ __sync_synchronize(); return (void *)__sync_lock_test_and_set(Target, Value); } @@ -347,6 +363,8 @@ __INTRIN_INLINE char _InterlockedCompareExchange8(volatile char * const Destinat __INTRIN_INLINE short _InterlockedCompareExchange16(volatile short * const Destination, const short Exchange, const short Comperand); __INTRIN_INLINE long _InterlockedCompareExchange(volatile long * const Destination, const long Exchange, const long Comperand); __INTRIN_INLINE void * _InterlockedCompareExchangePointer(void * volatile * const Destination, void * const Exchange, void * const Comperand); +__INTRIN_INLINE char _InterlockedExchange8(volatile char * const Target, const char Value); +__INTRIN_INLINE short _InterlockedExchange16(volatile short * const Target, const short Value); __INTRIN_INLINE long _InterlockedExchange(volatile long * const Target, const long Value); __INTRIN_INLINE void * _InterlockedExchangePointer(void * volatile * const Target, void * const Value); __INTRIN_INLINE long _InterlockedExchangeAdd16(volatile short * const Addend, const short Value); @@ -397,6 +415,20 @@ __INTRIN_INLINE void * _InterlockedCompareExchangePointer(void * volatile * cons return retval; } +__INTRIN_INLINE char _InterlockedExchange8(volatile char * const Target, const char Value) +{ + char retval = Value; + __asm__("xchgb %[retval], %[Target]" : [retval] "+r" (retval) : [Target] "m" (*Target) : "memory"); + return retval; +} + +__INTRIN_INLINE short _InterlockedExchange16(volatile short * const Target, const short Value) +{ + short retval = Value; + __asm__("xchgw %[retval], %[Target]" : [retval] "+r" (retval) : [Target] "m" (*Target) : "memory"); + return retval; +} + __INTRIN_INLINE long _InterlockedExchange(volatile long * const Target, const long Value) { long retval = Value; From 55c189531fd56852e866d40d48f14529345c8a1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Sun, 8 Jun 2014 23:02:40 +0000 Subject: [PATCH 167/232] [CONSRV]: Use InterlockedExchange16 to exchange Begin and End COORD structure members. svn path=/trunk/; revision=63573 --- .../user/winsrv/consrv/frontends/gui/conwnd.c | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/reactos/win32ss/user/winsrv/consrv/frontends/gui/conwnd.c b/reactos/win32ss/user/winsrv/consrv/frontends/gui/conwnd.c index 9c1a248757f..acc83a41ee6 100644 --- a/reactos/win32ss/user/winsrv/consrv/frontends/gui/conwnd.c +++ b/reactos/win32ss/user/winsrv/consrv/frontends/gui/conwnd.c @@ -12,7 +12,7 @@ /* INCLUDES *******************************************************************/ #include - +#include #include #define NDEBUG @@ -694,17 +694,8 @@ GetSelectionBeginEnd(PCOORD Begin, PCOORD End, /* Exchange Begin / End if Begin > End lexicographically */ if (Begin->Y > End->Y || (Begin->Y == End->Y && Begin->X > End->X)) { - SHORT tmp; - - // End->X = InterlockedExchange16(&Begin->X, End->X); - tmp = Begin->X; - Begin->X = End->X; - End->X = tmp; - - // End->Y = InterlockedExchange16(&Begin->Y, End->Y); - tmp = Begin->Y; - Begin->Y = End->Y; - End->Y = tmp; + End->X = _InterlockedExchange16(&Begin->X, End->X); + End->Y = _InterlockedExchange16(&Begin->Y, End->Y); } } From 4e31cd6e0cc1ada803fd9db23c5b61d66714c66b Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Mon, 9 Jun 2014 01:49:24 +0000 Subject: [PATCH 168/232] [USETUP] Add the create logical partition page. svn path=/trunk/; revision=63574 --- reactos/base/setup/usetup/interface/usetup.c | 140 ++++++++++++++++++- reactos/base/setup/usetup/lang/bg-BG.h | 2 + reactos/base/setup/usetup/lang/cs-CZ.h | 2 + reactos/base/setup/usetup/lang/de-DE.h | 10 +- reactos/base/setup/usetup/lang/el-GR.h | 2 + reactos/base/setup/usetup/lang/en-US.h | 2 + reactos/base/setup/usetup/lang/es-ES.h | 2 + reactos/base/setup/usetup/lang/et-EE.h | 2 + reactos/base/setup/usetup/lang/fr-FR.h | 2 + reactos/base/setup/usetup/lang/he-IL.h | 2 + reactos/base/setup/usetup/lang/it-IT.h | 2 + reactos/base/setup/usetup/lang/ja-JP.h | 2 + reactos/base/setup/usetup/lang/lt-LT.h | 2 + reactos/base/setup/usetup/lang/nl-NL.h | 2 + reactos/base/setup/usetup/lang/pl-PL.h | 2 + reactos/base/setup/usetup/lang/pt-BR.h | 2 + reactos/base/setup/usetup/lang/ro-RO.h | 2 + reactos/base/setup/usetup/lang/ru-RU.h | 2 + reactos/base/setup/usetup/lang/sk-SK.h | 2 + reactos/base/setup/usetup/lang/sq-AL.h | 2 + reactos/base/setup/usetup/lang/sv-SE.h | 2 + reactos/base/setup/usetup/lang/tr-TR.h | 2 + reactos/base/setup/usetup/lang/uk-UA.h | 2 + reactos/base/setup/usetup/mui.h | 1 + reactos/base/setup/usetup/partlist.c | 26 ++++ reactos/base/setup/usetup/partlist.h | 5 + 26 files changed, 219 insertions(+), 5 deletions(-) diff --git a/reactos/base/setup/usetup/interface/usetup.c b/reactos/base/setup/usetup/interface/usetup.c index 800046acdc2..502e6cf286c 100644 --- a/reactos/base/setup/usetup/interface/usetup.c +++ b/reactos/base/setup/usetup/interface/usetup.c @@ -2131,8 +2131,146 @@ CreateExtendedPartitionPage(PINPUT_RECORD Ir) static PAGE_NUMBER CreateLogicalPartitionPage(PINPUT_RECORD Ir) { + PDISKENTRY DiskEntry; + PPARTENTRY PartEntry; + BOOLEAN Quit; + BOOLEAN Cancel; + CHAR InputBuffer[50]; + ULONG MaxSize; + ULONGLONG PartSize; + ULONGLONG DiskSize; + ULONGLONG SectorCount; + PCHAR Unit; - return SELECT_PARTITION_PAGE; + if (PartitionList == NULL || + PartitionList->CurrentDisk == NULL || + PartitionList->CurrentPartition == NULL) + { + /* FIXME: show an error dialog */ + return QUIT_PAGE; + } + + DiskEntry = PartitionList->CurrentDisk; + PartEntry = PartitionList->CurrentPartition; + + CONSOLE_SetStatusText(MUIGetString(STRING_PLEASEWAIT)); + + CONSOLE_SetTextXY(6, 8, MUIGetString(STRING_CHOOSE_NEW_LOGICAL_PARTITION)); + + DiskSize = DiskEntry->SectorCount.QuadPart * DiskEntry->BytesPerSector; +#if 0 + if (DiskSize >= 10737418240) /* 10 GB */ + { + DiskSize = DiskSize / 1073741824; + Unit = MUIGetString(STRING_GB); + } + else +#endif + { + DiskSize = DiskSize / 1048576; + if (DiskSize == 0) + DiskSize = 1; + + Unit = MUIGetString(STRING_MB); + } + + if (DiskEntry->DriverName.Length > 0) + { + CONSOLE_PrintTextXY(6, 10, + MUIGetString(STRING_HDINFOPARTCREATE), + DiskSize, + Unit, + DiskEntry->DiskNumber, + DiskEntry->Port, + DiskEntry->Bus, + DiskEntry->Id, + &DiskEntry->DriverName); + } + else + { + CONSOLE_PrintTextXY(6, 10, + MUIGetString(STRING_HDDINFOUNK1), + DiskSize, + Unit, + DiskEntry->DiskNumber, + DiskEntry->Port, + DiskEntry->Bus, + DiskEntry->Id); + } + + CONSOLE_SetTextXY(6, 12, MUIGetString(STRING_HDDSIZE)); + +#if 0 + CONSOLE_PrintTextXY(8, 10, "Maximum size of the new partition is %I64u MB", + PartitionList->CurrentPartition->SectorCount * DiskEntry->BytesPerSector / 1048576); +#endif + + CONSOLE_SetStatusText(MUIGetString(STRING_CREATEPARTITION)); + + PartEntry = PartitionList->CurrentPartition; + while (TRUE) + { + MaxSize = (PartEntry->SectorCount.QuadPart * DiskEntry->BytesPerSector) / 1048576; /* in MBytes (rounded) */ + + if (MaxSize > PARTITION_MAXSIZE) + MaxSize = PARTITION_MAXSIZE; + + ShowPartitionSizeInputBox(12, 14, xScreen - 12, 17, /* left, top, right, bottom */ + MaxSize, InputBuffer, &Quit, &Cancel); + + if (Quit == TRUE) + { + if (ConfirmQuit (Ir) == TRUE) + { + return QUIT_PAGE; + } + } + else if (Cancel == TRUE) + { + return SELECT_PARTITION_PAGE; + } + else + { + PartSize = atoi(InputBuffer); + + if (PartSize < 1) + { + /* Too small */ + continue; + } + + if (PartSize > MaxSize) + { + /* Too large */ + continue; + } + + /* Convert to bytes */ + if (PartSize == MaxSize) + { + /* Use all of the unpartitioned disk space */ + SectorCount = PartEntry->SectorCount.QuadPart; + } + else + { + /* Calculate the sector count from the size in MB */ + SectorCount = PartSize * 1048576 / DiskEntry->BytesPerSector; + + /* But never get larger than the unpartitioned disk space */ + if (SectorCount > PartEntry->SectorCount.QuadPart) + SectorCount = PartEntry->SectorCount.QuadPart; + } + + DPRINT("Partition size: %I64u bytes\n", PartSize); + + CreateLogicalPartition(PartitionList, + SectorCount); + + return SELECT_PARTITION_PAGE; + } + } + + return CREATE_LOGICAL_PARTITION_PAGE; } diff --git a/reactos/base/setup/usetup/lang/bg-BG.h b/reactos/base/setup/usetup/lang/bg-BG.h index d68f602a6a1..80aaaa867d1 100644 --- a/reactos/base/setup/usetup/lang/bg-BG.h +++ b/reactos/base/setup/usetup/lang/bg-BG.h @@ -1664,6 +1664,8 @@ MUI_STRING bgBGStrings[] = // "ˆ§¡à «¨ á⥠¤  áꧤ ¤¥â¥ ­®¢ ¤ï« ­ "}, {STRING_CHOOSE_NEW_EXTENDED_PARTITION, "You have chosen to create an extended partition on"}, + {STRING_CHOOSE_NEW_LOGICAL_PARTITION, + "You have chosen to create a logical partition on"}, {STRING_HDDSIZE, "‚ꢥ¤¥â¥ à §¬¥à  ­  ­®¢¨ï ¤ï« (¢ ¬¥£ ¡ ©â¨)."}, {STRING_CREATEPARTITION, diff --git a/reactos/base/setup/usetup/lang/cs-CZ.h b/reactos/base/setup/usetup/lang/cs-CZ.h index 8440fc22811..9e8071e465c 100644 --- a/reactos/base/setup/usetup/lang/cs-CZ.h +++ b/reactos/base/setup/usetup/lang/cs-CZ.h @@ -1660,6 +1660,8 @@ MUI_STRING csCZStrings[] = // "Zvolili jste vytvoýen¡ nov‚ho odd¡lu na"}, {STRING_CHOOSE_NEW_EXTENDED_PARTITION, "You have chosen to create an extended partition on"}, + {STRING_CHOOSE_NEW_LOGICAL_PARTITION, + "You have chosen to create a logical partition on"}, {STRING_HDDSIZE, "Zadejte velikost nov‚ho odd¡lu v megabajtech."}, {STRING_CREATEPARTITION, diff --git a/reactos/base/setup/usetup/lang/de-DE.h b/reactos/base/setup/usetup/lang/de-DE.h index e85dfb95f6d..ab58aae6ab7 100644 --- a/reactos/base/setup/usetup/lang/de-DE.h +++ b/reactos/base/setup/usetup/lang/de-DE.h @@ -466,7 +466,7 @@ static MUI_ENTRY deDERepairPageEntries[] = "nutzbaren Setups.", TEXT_STYLE_NORMAL }, - { + { 6, 14, "Die Reparaturfunktionen sind noch nicht implementiert.", @@ -915,7 +915,7 @@ static MUI_ENTRY deDEInstallDirectoryEntries[] = "Benutzen Sie die Entf-TASTE, um Zeichen zu l”schen.", TEXT_STYLE_NORMAL }, - { + { 6, 17, "Best„tigen Sie die Eingabe mit der EINGABETASTE.", @@ -1398,7 +1398,7 @@ MUI_ERROR deDEErrorEntries[] = { //ERROR_UPDATE_DISPLAY_SETTINGS, "Die Registrierungseintr„ge der Anzeigeeinstellungen\n" - "konnten nicht aktualisiert werden.", + "konnten nicht aktualisiert werden.", "EINGABETASTER = Computer neu starten" }, { @@ -1439,7 +1439,7 @@ MUI_ERROR deDEErrorEntries[] = { //ERROR_COPY_QUEUE, "Die Liste mit den zu kopierenden Dateien\n" - "konnte nicht gefunden werden.\n", + "konnte nicht gefunden werden.\n", "EINGABETASTE = Computer neu starten" }, { @@ -1654,6 +1654,8 @@ MUI_STRING deDEStrings[] = "Eine prim„re Partition soll hier erstellt werden:"}, {STRING_CHOOSE_NEW_EXTENDED_PARTITION, "Eine erweiterte Partition soll hier erstellt werden:"}, + {STRING_CHOOSE_NEW_LOGICAL_PARTITION, + "Ein logisches Laufwerk soll hier erstellt werden:"}, {STRING_HDDSIZE, "Bitte geben Sie die Gr”áe der neuen Partition in Megabyte ein."}, {STRING_CREATEPARTITION, diff --git a/reactos/base/setup/usetup/lang/el-GR.h b/reactos/base/setup/usetup/lang/el-GR.h index d12bb6918ed..82d83d4dd4c 100644 --- a/reactos/base/setup/usetup/lang/el-GR.h +++ b/reactos/base/setup/usetup/lang/el-GR.h @@ -1676,6 +1676,8 @@ MUI_STRING elGRStrings[] = // "„§ ¢â¥˜«œ ¤˜ ›ž£ ¦¬¨šã©œ«œ ⤘ ¤â¦ partition on"}, {STRING_CHOOSE_NEW_EXTENDED_PARTITION, "You have chosen to create an extended partition on"}, + {STRING_CHOOSE_NEW_LOGICAL_PARTITION, + "You have chosen to create a logical partition on"}, {STRING_HDDSIZE, "˜¨˜¡˜¢é ›é©«œ «¦ £âšœŸ¦ª «¦¬ partition ©œ megabytes."}, {STRING_CREATEPARTITION, diff --git a/reactos/base/setup/usetup/lang/en-US.h b/reactos/base/setup/usetup/lang/en-US.h index 6b20c0889ca..7f752f39a8f 100644 --- a/reactos/base/setup/usetup/lang/en-US.h +++ b/reactos/base/setup/usetup/lang/en-US.h @@ -1648,6 +1648,8 @@ MUI_STRING enUSStrings[] = "You have chosen to create a primary partition on"}, {STRING_CHOOSE_NEW_EXTENDED_PARTITION, "You have chosen to create an extended partition on"}, + {STRING_CHOOSE_NEW_LOGICAL_PARTITION, + "You have chosen to create a logical partition on"}, {STRING_HDDSIZE, "Please enter the size of the new partition in megabytes."}, {STRING_CREATEPARTITION, diff --git a/reactos/base/setup/usetup/lang/es-ES.h b/reactos/base/setup/usetup/lang/es-ES.h index 04a53da0268..d8bad41c343 100644 --- a/reactos/base/setup/usetup/lang/es-ES.h +++ b/reactos/base/setup/usetup/lang/es-ES.h @@ -1658,6 +1658,8 @@ MUI_STRING esESStrings[] = // "Ha elegido crear una nueva partici¢n en"}, {STRING_CHOOSE_NEW_EXTENDED_PARTITION, "You have chosen to create an extended partition on"}, + {STRING_CHOOSE_NEW_LOGICAL_PARTITION, + "You have chosen to create a logical partition on"}, {STRING_HDDSIZE, "Por favor, introduzca el tama¤o de la nueva partici¢n en megabytes."}, {STRING_CREATEPARTITION, diff --git a/reactos/base/setup/usetup/lang/et-EE.h b/reactos/base/setup/usetup/lang/et-EE.h index 71fdeceb0c5..e90023d4651 100644 --- a/reactos/base/setup/usetup/lang/et-EE.h +++ b/reactos/base/setup/usetup/lang/et-EE.h @@ -1649,6 +1649,8 @@ MUI_STRING etEEStrings[] = // "Oled valinud kettale uue partitsiooni loomise"}, {STRING_CHOOSE_NEW_EXTENDED_PARTITION, "You have chosen to create an extended partition on"}, + {STRING_CHOOSE_NEW_LOGICAL_PARTITION, + "You have chosen to create a logical partition on"}, {STRING_HDDSIZE, "Sisesta uue partitsiooni suurus megabaitides."}, {STRING_CREATEPARTITION, diff --git a/reactos/base/setup/usetup/lang/fr-FR.h b/reactos/base/setup/usetup/lang/fr-FR.h index 84ce39ae830..c4dac549943 100644 --- a/reactos/base/setup/usetup/lang/fr-FR.h +++ b/reactos/base/setup/usetup/lang/fr-FR.h @@ -1662,6 +1662,8 @@ MUI_STRING frFRStrings[] = "Vous avez choisi de cr‚er une partition primaire sur"}, {STRING_CHOOSE_NEW_EXTENDED_PARTITION, "Vous avez choisi de cr‚er une partition ‚tendue sur"}, + {STRING_CHOOSE_NEW_LOGICAL_PARTITION, + "You have chosen to create a logical partition on"}, {STRING_HDDSIZE, "Veuillez entrer la taille de la nouvelle partition en m‚gaoctets."}, {STRING_CREATEPARTITION, diff --git a/reactos/base/setup/usetup/lang/he-IL.h b/reactos/base/setup/usetup/lang/he-IL.h index 5b415a68d5d..b4a3945f232 100644 --- a/reactos/base/setup/usetup/lang/he-IL.h +++ b/reactos/base/setup/usetup/lang/he-IL.h @@ -1650,6 +1650,8 @@ MUI_STRING heILStrings[] = "You have chosen to create a primary partition on"}, {STRING_CHOOSE_NEW_EXTENDED_PARTITION, "You have chosen to create an extended partition on"}, + {STRING_CHOOSE_NEW_LOGICAL_PARTITION, + "You have chosen to create a logical partition on"}, {STRING_HDDSIZE, "Please enter the size of the new partition in megabytes."}, {STRING_CREATEPARTITION, diff --git a/reactos/base/setup/usetup/lang/it-IT.h b/reactos/base/setup/usetup/lang/it-IT.h index 936f3b479d7..e911a748ed1 100644 --- a/reactos/base/setup/usetup/lang/it-IT.h +++ b/reactos/base/setup/usetup/lang/it-IT.h @@ -1653,6 +1653,8 @@ MUI_STRING itITStrings[] = // "Avete scelto di creare una nuova partizione su"}, {STRING_CHOOSE_NEW_EXTENDED_PARTITION, "You have chosen to create an extended partition on"}, + {STRING_CHOOSE_NEW_LOGICAL_PARTITION, + "You have chosen to create a logical partition on"}, {STRING_HDDSIZE, "Indicare la dimensione della nuova partizione in megabyte."}, {STRING_CREATEPARTITION, diff --git a/reactos/base/setup/usetup/lang/ja-JP.h b/reactos/base/setup/usetup/lang/ja-JP.h index b70ecc999ee..691406625fe 100644 --- a/reactos/base/setup/usetup/lang/ja-JP.h +++ b/reactos/base/setup/usetup/lang/ja-JP.h @@ -1652,6 +1652,8 @@ MUI_STRING jaJPStrings[] = // "±À×¼² Ê߰輮ݦ Â·ÞÆ »¸¾²½Ù ºÄ¶Þ ¾ÝÀ¸ »ÚϼÀ:"}, {STRING_CHOOSE_NEW_EXTENDED_PARTITION, "You have chosen to create an extended partition on"}, + {STRING_CHOOSE_NEW_LOGICAL_PARTITION, + "You have chosen to create a logical partition on"}, {STRING_HDDSIZE, "±À×¼² Ê߰è¼®ÝÉ »²½Þ¦ Ò¶ÞÊÞ²Ä ÀݲÃÞ Æ­³Ø®¸ ¼Ã¸ÀÞ»²¡"}, {STRING_CREATEPARTITION, diff --git a/reactos/base/setup/usetup/lang/lt-LT.h b/reactos/base/setup/usetup/lang/lt-LT.h index fbb759ea6d8..7a7b4f746a5 100644 --- a/reactos/base/setup/usetup/lang/lt-LT.h +++ b/reactos/base/setup/usetup/lang/lt-LT.h @@ -1659,6 +1659,8 @@ MUI_STRING ltLTStrings[] = "You have chosen to create a primary partition on"}, {STRING_CHOOSE_NEW_EXTENDED_PARTITION, "You have chosen to create an extended partition on"}, + {STRING_CHOOSE_NEW_LOGICAL_PARTITION, + "You have chosen to create a logical partition on"}, {STRING_HDDSIZE, "Please enter the size of the new partition in megabytes."}, {STRING_CREATEPARTITION, diff --git a/reactos/base/setup/usetup/lang/nl-NL.h b/reactos/base/setup/usetup/lang/nl-NL.h index dac2f565e52..167e1095b0d 100644 --- a/reactos/base/setup/usetup/lang/nl-NL.h +++ b/reactos/base/setup/usetup/lang/nl-NL.h @@ -1697,6 +1697,8 @@ MUI_STRING nlNLStrings[] = // "U wilt een nieuwe partitie aanmaken op"}, {STRING_CHOOSE_NEW_EXTENDED_PARTITION, "You have chosen to create an extended partition on"}, + {STRING_CHOOSE_NEW_LOGICAL_PARTITION, + "You have chosen to create a logical partition on"}, {STRING_HDDSIZE, "Voert u de grootte van de nieuwe partitie in in megabytes."}, {STRING_CREATEPARTITION, diff --git a/reactos/base/setup/usetup/lang/pl-PL.h b/reactos/base/setup/usetup/lang/pl-PL.h index a9e8c72065b..3d700c44004 100644 --- a/reactos/base/setup/usetup/lang/pl-PL.h +++ b/reactos/base/setup/usetup/lang/pl-PL.h @@ -1661,6 +1661,8 @@ MUI_STRING plPLStrings[] = // "Wybrane: utworzenie nowej partycji na"}, {STRING_CHOOSE_NEW_EXTENDED_PARTITION, "You have chosen to create an extended partition on"}, + {STRING_CHOOSE_NEW_LOGICAL_PARTITION, + "You have chosen to create a logical partition on"}, {STRING_HDDSIZE, "Prosz© wprowadzi† rozmiar nowej partycji w megabajtach."}, {STRING_CREATEPARTITION, diff --git a/reactos/base/setup/usetup/lang/pt-BR.h b/reactos/base/setup/usetup/lang/pt-BR.h index fc8ef341d0d..19ad6719180 100644 --- a/reactos/base/setup/usetup/lang/pt-BR.h +++ b/reactos/base/setup/usetup/lang/pt-BR.h @@ -1688,6 +1688,8 @@ MUI_STRING ptBRStrings[] = // "Vocˆ solicitou a cria‡Æo de uma nova parti‡Æo em"}, {STRING_CHOOSE_NEW_EXTENDED_PARTITION, "You have chosen to create an extended partition on"}, + {STRING_CHOOSE_NEW_LOGICAL_PARTITION, + "You have chosen to create a logical partition on"}, {STRING_HDDSIZE, "Por favor, insira o tamanho da nova parti‡Æo em megabytes (MB)."}, {STRING_CREATEPARTITION, diff --git a/reactos/base/setup/usetup/lang/ro-RO.h b/reactos/base/setup/usetup/lang/ro-RO.h index d6b94251485..fce9d70af8e 100644 --- a/reactos/base/setup/usetup/lang/ro-RO.h +++ b/reactos/base/setup/usetup/lang/ro-RO.h @@ -1729,6 +1729,8 @@ MUI_STRING roROStrings[] = // "Aîi ales crearea unei noi partiîii pe"}, {STRING_CHOOSE_NEW_EXTENDED_PARTITION, "You have chosen to create an extended partition on"}, + {STRING_CHOOSE_NEW_LOGICAL_PARTITION, + "You have chosen to create a logical partition on"}, {STRING_HDDSIZE, "Introduceîi mÇrimea noii partiîii Œn megaocteîi."}, {STRING_CREATEPARTITION, diff --git a/reactos/base/setup/usetup/lang/ru-RU.h b/reactos/base/setup/usetup/lang/ru-RU.h index 852c2638977..d8385038bd2 100644 --- a/reactos/base/setup/usetup/lang/ru-RU.h +++ b/reactos/base/setup/usetup/lang/ru-RU.h @@ -1653,6 +1653,8 @@ MUI_STRING ruRUStrings[] = // "‚ë å®â¨â¥ á®§¤ âì ­®¢ë© à §¤¥« ­ "}, {STRING_CHOOSE_NEW_EXTENDED_PARTITION, "You have chosen to create an extended partition on"}, + {STRING_CHOOSE_NEW_LOGICAL_PARTITION, + "You have chosen to create a logical partition on"}, {STRING_HDDSIZE, "®¦ «ã©áâ , ¢¢¥¤¨â¥ à §¬¥à ­®¢®£® à §¤¥«  ¢ ¬¥£ ¡ ©â å."}, {STRING_CREATEPARTITION, diff --git a/reactos/base/setup/usetup/lang/sk-SK.h b/reactos/base/setup/usetup/lang/sk-SK.h index 74e2ee3f9af..1373b270101 100644 --- a/reactos/base/setup/usetup/lang/sk-SK.h +++ b/reactos/base/setup/usetup/lang/sk-SK.h @@ -1663,6 +1663,8 @@ MUI_STRING skSKStrings[] = // "Zvolili ste vytvorenie novej oblasti na"}, {STRING_CHOOSE_NEW_EXTENDED_PARTITION, "You have chosen to create an extended partition on"}, + {STRING_CHOOSE_NEW_LOGICAL_PARTITION, + "You have chosen to create a logical partition on"}, {STRING_HDDSIZE, "Zadajte, pros¡m, ve–kosœ novej oblasti v megabajtoch."}, {STRING_CREATEPARTITION, diff --git a/reactos/base/setup/usetup/lang/sq-AL.h b/reactos/base/setup/usetup/lang/sq-AL.h index f23fc7c35ca..906fd89e5f7 100644 --- a/reactos/base/setup/usetup/lang/sq-AL.h +++ b/reactos/base/setup/usetup/lang/sq-AL.h @@ -1655,6 +1655,8 @@ MUI_STRING sqALStrings[] = "Ju keni zgjedhur p‰r t‰ krijuar nj‰ ndarje t‰ re n‰"}, {STRING_CHOOSE_NEW_EXTENDED_PARTITION, "You have chosen to create an extended partition on"}, + {STRING_CHOOSE_NEW_LOGICAL_PARTITION, + "You have chosen to create a logical partition on"}, {STRING_HDDSIZE, "Ju lutem, jepini madh‰sin‰ e particionit t‰ ri n‰ megabajt."}, {STRING_CREATEPARTITION, diff --git a/reactos/base/setup/usetup/lang/sv-SE.h b/reactos/base/setup/usetup/lang/sv-SE.h index 3ee1326128d..c9101b628a8 100644 --- a/reactos/base/setup/usetup/lang/sv-SE.h +++ b/reactos/base/setup/usetup/lang/sv-SE.h @@ -1658,6 +1658,8 @@ MUI_STRING svSEStrings[] = // "Du har valt att skapa en ny partiton p†"}, {STRING_CHOOSE_NEW_EXTENDED_PARTITION, "You have chosen to create an extended partition on"}, + {STRING_CHOOSE_NEW_LOGICAL_PARTITION, + "You have chosen to create a logical partition on"}, {STRING_HDDSIZE, "V„nligen skriv in storleken av den nya partitionen i megabytes."}, {STRING_CREATEPARTITION, diff --git a/reactos/base/setup/usetup/lang/tr-TR.h b/reactos/base/setup/usetup/lang/tr-TR.h index d8058795bba..47b4d812869 100644 --- a/reactos/base/setup/usetup/lang/tr-TR.h +++ b/reactos/base/setup/usetup/lang/tr-TR.h @@ -1626,6 +1626,8 @@ MUI_STRING trTRStrings[] = // "Yeni bir b”lm oluŸturmay se‡tiniz."}, {STRING_CHOOSE_NEW_EXTENDED_PARTITION, "You have chosen to create an extended partition on"}, + {STRING_CHOOSE_NEW_LOGICAL_PARTITION, + "You have chosen to create a logical partition on"}, {STRING_HDDSIZE, "OluŸturulacak b”lmn bykl§n mega‡oklu olarak giriniz."}, {STRING_CREATEPARTITION, diff --git a/reactos/base/setup/usetup/lang/uk-UA.h b/reactos/base/setup/usetup/lang/uk-UA.h index 2d538b7a36c..aa723b0308b 100644 --- a/reactos/base/setup/usetup/lang/uk-UA.h +++ b/reactos/base/setup/usetup/lang/uk-UA.h @@ -1658,6 +1658,8 @@ MUI_STRING ukUAStrings[] = // "‚¨ å®ç¥â¥ á⢮à¨â¨ ­®¢¨© à®§¤i« ­ "}, {STRING_CHOOSE_NEW_EXTENDED_PARTITION, "You have chosen to create an extended partition on"}, + {STRING_CHOOSE_NEW_LOGICAL_PARTITION, + "You have chosen to create a logical partition on"}, {STRING_HDDSIZE, "ã¤ì-« áª , ¢¢¥¤iâì à®§¬ià ­®¢®£® à®§¤i«ã ¢ ¬¥£ ¡ ©â å."}, {STRING_CREATEPARTITION, diff --git a/reactos/base/setup/usetup/mui.h b/reactos/base/setup/usetup/mui.h index f36317c0f44..d8b0f1bf289 100644 --- a/reactos/base/setup/usetup/mui.h +++ b/reactos/base/setup/usetup/mui.h @@ -105,6 +105,7 @@ MUIGetString( #define STRING_PARTITIONSIZE 4 #define STRING_CHOOSENEWPARTITION 5 #define STRING_CHOOSE_NEW_EXTENDED_PARTITION 57 +#define STRING_CHOOSE_NEW_LOGICAL_PARTITION 61 #define STRING_HDDSIZE 6 #define STRING_CREATEPARTITION 7 #define STRING_PARTFORMAT 8 diff --git a/reactos/base/setup/usetup/partlist.c b/reactos/base/setup/usetup/partlist.c index d48a1bf2109..fd6c6137477 100644 --- a/reactos/base/setup/usetup/partlist.c +++ b/reactos/base/setup/usetup/partlist.c @@ -2577,6 +2577,32 @@ DPRINT1("Total Sectors: %I64u\n", NewPartEntry->SectorCount.QuadPart); } +VOID +CreateLogicalPartition( + PPARTLIST List, + ULONGLONG SectorCount) +{ +// PDISKENTRY DiskEntry; + PPARTENTRY PartEntry; +// PPARTENTRY NewPartEntry; + + DPRINT1("CreateLogicalPartition(%I64u)\n", SectorCount); + + if (List == NULL || + List->CurrentDisk == NULL || + List->CurrentPartition == NULL || + List->CurrentPartition->IsPartitioned == TRUE) + { + return; + } + +// DiskEntry = List->CurrentDisk; + PartEntry = List->CurrentPartition; + + DPRINT1("Current partition sector count: %I64u\n", PartEntry->SectorCount.QuadPart); +} + + VOID DeleteCurrentPartition( PPARTLIST List) diff --git a/reactos/base/setup/usetup/partlist.h b/reactos/base/setup/usetup/partlist.h index ad4765a5669..a4e5871edcd 100644 --- a/reactos/base/setup/usetup/partlist.h +++ b/reactos/base/setup/usetup/partlist.h @@ -230,6 +230,11 @@ CreateExtendedPartition( PPARTLIST List, ULONGLONG PartitionSize); +VOID +CreateLogicalPartition( + PPARTLIST List, + ULONGLONG PartitionSize); + VOID DeleteCurrentPartition( PPARTLIST List); From 87b791fd9e34c8666a7de289385bbf7d4e090d61 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Mon, 9 Jun 2014 12:56:05 +0000 Subject: [PATCH 169/232] [NET] Convert help and usage texts to string resources. svn path=/trunk/; revision=63575 --- .../applications/network/net/cmdHelpMsg.c | 4 +- .../base/applications/network/net/cmdPause.c | 2 +- .../base/applications/network/net/cmdStop.c | 3 +- reactos/base/applications/network/net/help.c | 146 +++++++----------- .../applications/network/net/lang/en-US.rc | 56 ++++++- reactos/base/applications/network/net/main.c | 6 +- .../base/applications/network/net/resource.h | 48 +++++- 7 files changed, 161 insertions(+), 104 deletions(-) diff --git a/reactos/base/applications/network/net/cmdHelpMsg.c b/reactos/base/applications/network/net/cmdHelpMsg.c index d7766c0a1cf..02259a09c8e 100644 --- a/reactos/base/applications/network/net/cmdHelpMsg.c +++ b/reactos/base/applications/network/net/cmdHelpMsg.c @@ -19,14 +19,14 @@ INT cmdHelpMsg(INT argc, WCHAR **argv) if (argc < 3) { - puts("Usage: NET HELPMSG "); + PrintResourceString(IDS_HELPMSG_SYNTAX); return 1; } errNum = wcstol(argv[2], &endptr, 10); if (*endptr != 0) { - puts("Usage: NET HELPMSG "); + PrintResourceString(IDS_HELPMSG_SYNTAX); return 1; } diff --git a/reactos/base/applications/network/net/cmdPause.c b/reactos/base/applications/network/net/cmdPause.c index 02278939c98..4ade493b76e 100644 --- a/reactos/base/applications/network/net/cmdPause.c +++ b/reactos/base/applications/network/net/cmdPause.c @@ -18,7 +18,7 @@ INT cmdPause(INT argc, WCHAR **argv) if (argc != 3) { - puts("Usage: NET PAUSE "); + PrintResourceString(IDS_PAUSE_SYNTAX); return 1; } diff --git a/reactos/base/applications/network/net/cmdStop.c b/reactos/base/applications/network/net/cmdStop.c index 3f395219424..7938c28eb00 100644 --- a/reactos/base/applications/network/net/cmdStop.c +++ b/reactos/base/applications/network/net/cmdStop.c @@ -19,8 +19,7 @@ INT cmdStop(INT argc, WCHAR **argv) if (argc != 3) { - /* FIXME: Print usage message! */ - printf("Usage: NET STOP \n"); + PrintResourceString(IDS_STOP_SYNTAX); return 1; } diff --git a/reactos/base/applications/network/net/help.c b/reactos/base/applications/network/net/help.c index 46061566801..cce77a68418 100644 --- a/reactos/base/applications/network/net/help.c +++ b/reactos/base/applications/network/net/help.c @@ -13,184 +13,150 @@ INT cmdHelp(INT argc, WCHAR **argv) { if (argc != 3) { - return 0; + PrintResourceString(IDS_HELP_SYNTAX); + return 0; } - if (_wcsicmp(argv[2],L"ACCOUNTS")==0) + if (_wcsicmp(argv[2],L"ACCOUNTS") == 0) { PrintResourceString(IDS_ACCOUNTS_HELP); return 0; } - if (_wcsicmp(argv[2],L"COMPUTER")==0) + if (_wcsicmp(argv[2],L"COMPUTER") == 0) { - puts("COMPUTER"); - puts("help text"); + PrintResourceString(IDS_COMPUTER_HELP); return 0; } - if (_wcsicmp(argv[2],L"CONFIG")==0) + if (_wcsicmp(argv[2],L"CONFIG") == 0) { - puts("CONFIG"); - puts("help text"); + PrintResourceString(IDS_CONFIG_HELP); return 0; } - if (_wcsicmp(argv[2],L"CONTINUE")==0) + if (_wcsicmp(argv[2],L"CONTINUE") == 0) { PrintResourceString(IDS_CONTINUE_HELP); return 0; } - if (_wcsicmp(argv[2],L"FILE")==0) + if (_wcsicmp(argv[2],L"FILE") == 0) { - puts("FILE"); - puts("help text"); + PrintResourceString(IDS_FILE_HELP); return 0; } - if (_wcsicmp(argv[2],L"GROUP")==0) + if (_wcsicmp(argv[2],L"GROUP") == 0) { - puts("GROUP"); - puts("help text"); + PrintResourceString(IDS_GROUP_HELP); return 0; } - if (_wcsicmp(argv[2],L"HELP")==0) + if (_wcsicmp(argv[2],L"HELPMSG") == 0) { - puts("HELP"); - puts("help text"); + PrintResourceString(IDS_HELPMSG_HELP); return 0; } - if (_wcsicmp(argv[2],L"HELPMSG")==0) + if (_wcsicmp(argv[2],L"LOCALGROUP") == 0) { - puts("HELPMSG"); - puts("help text"); + PrintResourceString(IDS_LOCALGROUP_HELP); return 0; } - if (_wcsicmp(argv[2],L"LOCALGROUP")==0) + if (_wcsicmp(argv[2],L"NAME") == 0) { - puts("LOCALGROUP"); - puts("help text"); + PrintResourceString(IDS_NAME_HELP); return 0; } - if (_wcsicmp(argv[2],L"NAME")==0) + if (_wcsicmp(argv[2],L"PAUSE") == 0) { - puts("NAME"); - puts("help text"); + PrintResourceString(IDS_PAUSE_HELP); return 0; } - if (_wcsicmp(argv[2],L"PRINT")==0) + if (_wcsicmp(argv[2],L"PRINT") == 0) { - puts("PRINT"); - puts("help text"); + PrintResourceString(IDS_PRINT_HELP); return 0; } - if (_wcsicmp(argv[2],L"SEND")==0) + if (_wcsicmp(argv[2],L"SEND") == 0) { - puts("SEND"); - puts("help text"); + PrintResourceString(IDS_SEND_HELP); return 0; } - if (_wcsicmp(argv[2],L"SESSION")==0) + if (_wcsicmp(argv[2],L"SESSION") == 0) { - puts("SESSION"); - puts("help text"); + PrintResourceString(IDS_SESSION_HELP); return 0; } - if (_wcsicmp(argv[2],L"SHARE")==0) + if (_wcsicmp(argv[2],L"SHARE") == 0) { - puts("SHARE"); - puts("help text"); + PrintResourceString(IDS_SHARE_HELP); return 0; } - if (_wcsicmp(argv[2],L"START")==0) + if (_wcsicmp(argv[2],L"START") == 0) { - puts("START"); - puts("help text"); + PrintResourceString(IDS_START_HELP); return 0; } - if (_wcsicmp(argv[2],L"STATISTICS")==0) + if (_wcsicmp(argv[2],L"STATISTICS") == 0) { - puts("STATISTICS"); - puts("help text"); + PrintResourceString(IDS_STATISTICS_HELP); return 0; } - if (_wcsicmp(argv[2],L"STOP")==0) + if (_wcsicmp(argv[2],L"STOP") == 0) { - puts("STOP"); - puts("help text"); + PrintResourceString(IDS_STOP_HELP); return 0; } - if (_wcsicmp(argv[2],L"TIME")==0) + if (_wcsicmp(argv[2],L"TIME") == 0) { - puts("TIME"); - puts("help text"); + PrintResourceString(IDS_TIME_HELP); return 0; } - if (_wcsicmp(argv[2],L"USE")==0) + if (_wcsicmp(argv[2],L"USE") == 0) { - puts("USE"); - puts("help text"); + PrintResourceString(IDS_USE_HELP); return 0; } - if (_wcsicmp(argv[2],L"USER")==0) + if (_wcsicmp(argv[2],L"USER") == 0) { - puts("USER"); - puts("help text"); + PrintResourceString(IDS_USER_HELP); return 0; } - if (_wcsicmp(argv[2],L"VIEW")==0) + if (_wcsicmp(argv[2],L"VIEW") == 0) { - puts("VIEW"); - puts("help text"); + PrintResourceString(IDS_VIEW_HELP); return 0; } - help(); +#if 0 + if (_wcsicmp(argv[2],L"SERVICES") == 0) + { + return 0; + } + + if (_wcsicmp(argv[2],L"SYNTAX") == 0) + { + return 0; + } +#endif + + PrintResourceString(IDS_HELP_SYNTAX); + return 0; } -VOID help(VOID) -{ - puts("NET ACCOUNTS"); - puts("NET COMPUTER"); - puts("NET CONFIG"); - puts("NET CONFIG SERVER"); - puts("NET CONFIG WORKSTATION"); - puts("NET CONTINUE"); - puts("NET FILE"); - puts("NET GROUP"); - - puts("NET HELP"); - puts("NET HELPMSG"); - puts("NET LOCALGROUP"); - puts("NET NAME"); - puts("NET PAUSE"); - puts("NET PRINT"); - puts("NET SEND"); - puts("NET SESSION"); - - puts("NET SHARE"); - puts("NET START"); - puts("NET STATISTICS"); - puts("NET STOP"); - puts("NET TIME"); - puts("NET USE"); - puts("NET USER"); - puts("NET VIEW"); -} diff --git a/reactos/base/applications/network/net/lang/en-US.rc b/reactos/base/applications/network/net/lang/en-US.rc index 99cd546c185..3571f66f186 100644 --- a/reactos/base/applications/network/net/lang/en-US.rc +++ b/reactos/base/applications/network/net/lang/en-US.rc @@ -5,7 +5,59 @@ BEGIN IDS_ACCOUNTS_SYNTAX "Usage:\nNET ACCOUNTS [/FORCELOGOFF:{Minutes|NO}] [/MINPWLEN:Length]\n\ [/MAXPWAGE:{Days|UNLIMITED}] [/MINPWAGE:Days]\n\ [/UNIQUEPW:Count] [/DOMAIN]\n" - IDS_ACCOUNTS_HELP "ACCOUNTS\nhelp text" + IDS_ACCOUNTS_HELP "ACCOUNTS\n..." + IDS_COMPUTER_SYNTAX "Usage:\nNET COMPUTER ..." + IDS_COMPUTER_HELP "COMPUTER\n..." + IDS_CONFIG_SYNTAX "Usage:\nNET CONFIG ..." + IDS_CONFIG_HELP "CONFIG\n..." IDS_CONTINUE_SYNTAX "Usage:\nNET CONTINUE " - IDS_CONTINUE_HELP "CONTINUE\nhelp text" + IDS_CONTINUE_HELP "CONTINUE\n..." + IDS_FILE_SYNTAX "Usage:\nNET FILE ..." + IDS_FILE_HELP "FILE\n..." + IDS_GROUP_SYNTAX "Usage:\nNET GROUP ..." + IDS_GROUP_HELP "GROUP\n..." + IDS_HELPMSG_SYNTAX "Usage:\nNET HELPMSG " + IDS_HELPMSG_HELP "HELPMSG\n..." + IDS_LOCALGROUP_SYNTAX "Usage:\nNET LOCALGROUP ..." + IDS_LOCALGROUP_HELP "LOCALGROUP\n..." + IDS_NAME_SYNTAX "Usage:\nNET NAME ..." + IDS_NAME_HELP "NAME\n..." + IDS_PRINT_SYNTAX "Usage:\nNET PRINT ..." + IDS_PRINT_HELP "PRINT\n..." + IDS_PAUSE_SYNTAX "Usage:\nNET PAUSE " + IDS_PAUSE_HELP "PAUSE\n..." + IDS_SEND_SYNTAX "Usage:\nNET SEND ..." + IDS_SEND_HELP "SEND\n..." + IDS_SESSION_SYNTAX "Usage:\nNET SESSION ..." + IDS_SESSION_HELP "SESSION\n..." + IDS_SHARE_SYNTAX "Usage:\nNET SHARE ..." + IDS_SHARE_HELP "SHARE\n..." + IDS_START_SYNTAX "Usage:\nNET START ..." + IDS_START_HELP "START\n..." + IDS_STATISTICS_SYNTAX "Usage:\nNET STATISTICS ..." + IDS_STATISTICS_HELP "STATISTICS\n..." + IDS_STOP_SYNTAX "Usage:\nNET STOP " + IDS_STOP_HELP "STOP\n..." + IDS_TIME_SYNTAX "Usage:\nNET TIME ..." + IDS_TIME_HELP "TIME\n..." + IDS_USE_SYNTAX "Usage:\nNET USE ..." + IDS_USE_HELP "USE\n..." + IDS_USER_SYNTAX "Usage:\nNET USER ..." + IDS_USER_HELP "USER\n..." + IDS_VIEW_SYNTAX "Usage:\nNET VIEW ..." + IDS_VIEW_HELP "VIEW\n..." + IDS_HELP_SYNTAX "Usage:\nNET HELP \n - or -\nNET /HELP\n\n\ + The following commands are available:\n\n\ + NET ACCOUNTS NET HELP NET SHARE\n\ + NET COMPUTER NET HELPMSG NET START\n\ + NET CONFIG NET LOCALGROUP NET STATISTICS\n\ + NET CONFIG SERVER NET NAME NET STOP\n\ + NET CONFIG WORKSTATION NET PAUSE NET TIME\n\ + NET CONTINUE NET PRINT NET USE\n\ + NET FILE NET SEND NET USER\n\ + NET GROUP NET SESSION NET VIEW\n\n\ + ..." + IDS_NET_SYNTAX "Usage:\nNET [ ACCOUNTS | COMPUTER | CONFIG | CONTINUE | FILE | GROUP | HELP |\n\ + HELPMSG | LOCALGROUP | NAME | PAUSE | PRINT | SEND | SESSION |\n\ + SHARE | START | STATISTICS | STOP | TIME | USE | NET USER | VIEW ]\n" END diff --git a/reactos/base/applications/network/net/main.c b/reactos/base/applications/network/net/main.c index b0ae7a9c897..f1560dd06f3 100644 --- a/reactos/base/applications/network/net/main.c +++ b/reactos/base/applications/network/net/main.c @@ -30,8 +30,8 @@ COMMAND cmds[] = {L"helpmsg", cmdHelpMsg}, {L"localgroup", unimplemented}, {L"name", unimplemented}, - {L"print", unimplemented}, {L"pause", cmdPause}, + {L"print", unimplemented}, {L"send", unimplemented}, {L"session", unimplemented}, {L"share", unimplemented}, @@ -67,7 +67,7 @@ int wmain(int argc, WCHAR **argv) if (argc < 2) { - help(); + PrintResourceString(IDS_NET_SYNTAX); return 1; } @@ -80,7 +80,7 @@ int wmain(int argc, WCHAR **argv) } } - help(); + PrintResourceString(IDS_NET_SYNTAX); return 1; } diff --git a/reactos/base/applications/network/net/resource.h b/reactos/base/applications/network/net/resource.h index e19726bc195..f13e3e1d881 100644 --- a/reactos/base/applications/network/net/resource.h +++ b/reactos/base/applications/network/net/resource.h @@ -1,6 +1,46 @@ #pragma once -#define IDS_ACCOUNTS_SYNTAX 100 -#define IDS_ACCOUNTS_HELP 101 -#define IDS_CONTINUE_SYNTAX 102 -#define IDS_CONTINUE_HELP 103 +#define IDS_ACCOUNTS_SYNTAX 100 +#define IDS_ACCOUNTS_HELP 101 +#define IDS_COMPUTER_SYNTAX 102 +#define IDS_COMPUTER_HELP 103 +#define IDS_CONFIG_SYNTAX 104 +#define IDS_CONFIG_HELP 105 +#define IDS_CONTINUE_SYNTAX 106 +#define IDS_CONTINUE_HELP 107 +#define IDS_FILE_SYNTAX 108 +#define IDS_FILE_HELP 109 +#define IDS_GROUP_SYNTAX 110 +#define IDS_GROUP_HELP 111 +#define IDS_HELPMSG_SYNTAX 112 +#define IDS_HELPMSG_HELP 113 +#define IDS_LOCALGROUP_SYNTAX 114 +#define IDS_LOCALGROUP_HELP 115 +#define IDS_NAME_SYNTAX 116 +#define IDS_NAME_HELP 117 +#define IDS_PAUSE_SYNTAX 118 +#define IDS_PAUSE_HELP 119 +#define IDS_PRINT_SYNTAX 120 +#define IDS_PRINT_HELP 121 +#define IDS_SEND_SYNTAX 122 +#define IDS_SEND_HELP 123 +#define IDS_SESSION_SYNTAX 124 +#define IDS_SESSION_HELP 125 +#define IDS_SHARE_SYNTAX 126 +#define IDS_SHARE_HELP 127 +#define IDS_START_SYNTAX 128 +#define IDS_START_HELP 129 +#define IDS_STATISTICS_SYNTAX 130 +#define IDS_STATISTICS_HELP 131 +#define IDS_STOP_SYNTAX 132 +#define IDS_STOP_HELP 133 +#define IDS_TIME_SYNTAX 134 +#define IDS_TIME_HELP 135 +#define IDS_USE_SYNTAX 136 +#define IDS_USE_HELP 137 +#define IDS_USER_SYNTAX 138 +#define IDS_USER_HELP 139 +#define IDS_VIEW_SYNTAX 140 +#define IDS_VIEW_HELP 141 +#define IDS_HELP_SYNTAX 142 +#define IDS_NET_SYNTAX 143 From 3629ad50aa3aaf2aa4cff74429655afbdc89317d Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Mon, 9 Jun 2014 13:31:38 +0000 Subject: [PATCH 170/232] [WIN32K/FREETYPE] * Consider current WorldTransform in ExtTextOutW. * Brought to you by Manuel "Tarnyko" Bachmann. Fix improved by Timo Kreuzer and me. CORE-8306 #resolve #comment Fixed in r63576. Thanks! svn path=/trunk/; revision=63576 --- reactos/win32ss/gdi/ntgdi/freetype.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/reactos/win32ss/gdi/ntgdi/freetype.c b/reactos/win32ss/gdi/ntgdi/freetype.c index c30b46b038d..5ac3b60af37 100644 --- a/reactos/win32ss/gdi/ntgdi/freetype.c +++ b/reactos/win32ss/gdi/ntgdi/freetype.c @@ -19,6 +19,8 @@ #include #include +#include + #define NDEBUG #include @@ -3228,6 +3230,7 @@ GreExtTextOutW( USHORT DxShift; PMATRIX pmxWorldToDevice; LONG fixAscender, fixDescender; + FLOATOBJ Scale; // TODO: Write test-cases to exactly match real Windows in different // bad parameters (e.g. does Windows check the DC or the RECT first?). @@ -3671,8 +3674,13 @@ GreExtTextOutW( } else { - TextLeft += Dx[i<mxWorldToDevice.efM11; + if (_FLOATOBJ_Equal0(&Scale)) + FLOATOBJ_Set1(&Scale); + + FLOATOBJ_MulLong(&Scale, Dx[i< Date: Mon, 9 Jun 2014 13:36:20 +0000 Subject: [PATCH 171/232] [WIN32K] * Improve FLOATOBJ_Set{0,1}. By Timo. svn path=/trunk/; revision=63577 --- reactos/win32ss/gdi/eng/floatobj.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reactos/win32ss/gdi/eng/floatobj.h b/reactos/win32ss/gdi/eng/floatobj.h index 91fe93e399b..8101c5fdb33 100644 --- a/reactos/win32ss/gdi/eng/floatobj.h +++ b/reactos/win32ss/gdi/eng/floatobj.h @@ -63,8 +63,8 @@ extern const FLOATOBJ gef16; #define FLOATOBJ_16 {0x40000000, 0x00000006} #define FLOATOBJ_1_16 {0x40000000, 0xfffffffe} -#define FLOATOBJ_Set0(fo) (fo)->ul1 = 0; (fo)->ul2 = 0; -#define FLOATOBJ_Set1(fo) (fo)->ul1 = 0x40000000; (fo)->ul2 = 2; +#define FLOATOBJ_Set0(fo) do { (fo)->ul1 = 0; (fo)->ul2 = 0; } while (0) +#define FLOATOBJ_Set1(fo) do { (fo)->ul1 = 0x40000000; (fo)->ul2 = 2; } while (0) #else From b1847abb7709fc3f7c24a396d8f387ebf5d04706 Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Mon, 9 Jun 2014 16:48:59 +0000 Subject: [PATCH 172/232] [KERNEL32] - Add defines for internal flags for BasepCopyFileExW(). - Add prototype for BasepCopyFileExW(). Based on documentation by Alex. svn path=/trunk/; revision=63578 --- reactos/dll/win32/kernel32/include/kernel32.h | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/reactos/dll/win32/kernel32/include/kernel32.h b/reactos/dll/win32/kernel32/include/kernel32.h index dad3f12904f..383a1061222 100644 --- a/reactos/dll/win32/kernel32/include/kernel32.h +++ b/reactos/dll/win32/kernel32/include/kernel32.h @@ -131,6 +131,17 @@ DWORD extern WaitForInputIdleType UserWaitForInputIdleRoutine; +/* Flags for PrivCopyFileExW && BasepCopyFileExW */ +#define BASEP_COPY_METADATA 0x10 +#define BASEP_COPY_SACL 0x20 +#define BASEP_COPY_OWNER_AND_GROUP 0x40 +#define BASEP_COPY_DIRECTORY 0x80 +#define BASEP_COPY_BACKUP_SEMANTICS 0x100 +#define BASEP_COPY_REPLACE 0x200 +#define BASEP_COPY_SKIP_DACL 0x400 +#define BASEP_COPY_PUBLIC_MASK 0xF +#define BASEP_COPY_BASEP_MASK 0xFFFFFFF0 + /* GLOBAL VARIABLES **********************************************************/ extern BOOL bIsFileApiAnsi; @@ -422,6 +433,18 @@ BaseMarkFileForDelete( IN ULONG FileAttributes ); +BOOL +BasepCopyFileExW( + IN LPCWSTR lpExistingFileName, + IN LPCWSTR lpNewFileName, + IN LPPROGRESS_ROUTINE lpProgressRoutine OPTIONAL, + IN LPVOID lpData OPTIONAL, + IN LPBOOL pbCancel OPTIONAL, + IN DWORD dwCopyFlags, + IN DWORD dwBasepFlags, + OUT LPHANDLE lpExistingHandle, + OUT LPHANDLE lpNewHandle +); /* FIXME: This is EXPORTED! It should go in an external kernel32.h header */ VOID From 9bf52b7156e3a54da7f097f793ca1437cc7283e6 Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Mon, 9 Jun 2014 16:53:39 +0000 Subject: [PATCH 173/232] [KERNEL32] - Move CopyFileExW() implementation to BasepCopyFileExW() - Call BasepCopyFileExW() from CopyFileExW() - Implement PrivCopyFileExW() using BasepCopyFileExW() TODO: Fix BasepCopyFileExW() implementation svn path=/trunk/; revision=63579 --- reactos/dll/win32/kernel32/client/file/copy.c | 125 ++++++++++++++---- 1 file changed, 102 insertions(+), 23 deletions(-) diff --git a/reactos/dll/win32/kernel32/client/file/copy.c b/reactos/dll/win32/kernel32/client/file/copy.c index 99b96c19c64..3eb763d86a2 100644 --- a/reactos/dll/win32/kernel32/client/file/copy.c +++ b/reactos/dll/win32/kernel32/client/file/copy.c @@ -191,20 +191,16 @@ SetLastWriteTime( return errCode; } - -/* - * @implemented - */ BOOL -WINAPI -CopyFileExW ( - LPCWSTR lpExistingFileName, - LPCWSTR lpNewFileName, - LPPROGRESS_ROUTINE lpProgressRoutine, - LPVOID lpData, - BOOL *pbCancel, - DWORD dwCopyFlags -) +BasepCopyFileExW(IN LPCWSTR lpExistingFileName, + IN LPCWSTR lpNewFileName, + IN LPPROGRESS_ROUTINE lpProgressRoutine OPTIONAL, + IN LPVOID lpData OPTIONAL, + IN LPBOOL pbCancel OPTIONAL, + IN DWORD dwCopyFlags, + IN DWORD dwBasepFlags, + OUT LPHANDLE lpExistingHandle, + OUT LPHANDLE lpNewHandle) { NTSTATUS errCode; HANDLE FileHandleSource, FileHandleDest; @@ -307,6 +303,53 @@ CopyFileExW ( return RC; } +/* + * @implemented + */ +BOOL +WINAPI +CopyFileExW(IN LPCWSTR lpExistingFileName, + IN LPCWSTR lpNewFileName, + IN LPPROGRESS_ROUTINE lpProgressRoutine OPTIONAL, + IN LPVOID lpData OPTIONAL, + IN LPBOOL pbCancel OPTIONAL, + IN DWORD dwCopyFlags) +{ + BOOL Ret; + HANDLE ExistingHandle, NewHandle; + + ExistingHandle = INVALID_HANDLE_VALUE; + NewHandle = INVALID_HANDLE_VALUE; + + _SEH2_TRY + { + Ret = BasepCopyFileExW(lpExistingFileName, + lpNewFileName, + lpProgressRoutine, + lpData, + pbCancel, + dwCopyFlags, + 0, + &ExistingHandle, + &NewHandle); + } + _SEH2_FINALLY + { + if (ExistingHandle != INVALID_HANDLE_VALUE) + { + CloseHandle(ExistingHandle); + } + + if (NewHandle != INVALID_HANDLE_VALUE) + { + CloseHandle(NewHandle); + } + } + _SEH2_END; + + return Ret; +} + /* * @implemented @@ -404,17 +447,53 @@ CopyFileW(IN LPCWSTR lpExistingFileName, */ BOOL WINAPI -PrivCopyFileExW ( - LPCWSTR lpExistingFileName, - LPCWSTR lpNewFileName, - LPPROGRESS_ROUTINE lpProgressRoutine, - LPVOID lpData, - BOOL *pbCancel, - DWORD dwCopyFlags -) +PrivCopyFileExW(IN LPCWSTR lpExistingFileName, + IN LPCWSTR lpNewFileName, + IN LPPROGRESS_ROUTINE lpProgressRoutine, + IN LPVOID lpData, + IN LPBOOL pbCancel, + IN DWORD dwCopyFlags) { - UNIMPLEMENTED; - return FALSE; + BOOL Ret; + HANDLE ExistingHandle, NewHandle; + + ExistingHandle = INVALID_HANDLE_VALUE; + NewHandle = INVALID_HANDLE_VALUE; + + /* Check for incompatible flags */ + if (dwCopyFlags & COPY_FILE_FAIL_IF_EXISTS && dwCopyFlags & BASEP_COPY_REPLACE) + { + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; + } + + _SEH2_TRY + { + Ret = BasepCopyFileExW(lpExistingFileName, + lpNewFileName, + lpProgressRoutine, + lpData, + pbCancel, + dwCopyFlags & BASEP_COPY_PUBLIC_MASK, + dwCopyFlags & BASEP_COPY_BASEP_MASK, + &ExistingHandle, + &NewHandle); + } + _SEH2_FINALLY + { + if (ExistingHandle != INVALID_HANDLE_VALUE) + { + CloseHandle(ExistingHandle); + } + + if (NewHandle != INVALID_HANDLE_VALUE) + { + CloseHandle(NewHandle); + } + } + _SEH2_END; + + return Ret; } /* EOF */ From ed3c1868ad9aaab043750244a61ec3446ab91bb5 Mon Sep 17 00:00:00 2001 From: Aleksandar Andrejevic Date: Mon, 9 Jun 2014 18:21:03 +0000 Subject: [PATCH 174/232] [NTOS:MM] MmUnmapViewOfCacheSegment expects DeleteInProgress to be FALSE and the address space to be unlocked. Allow unmapping memory areas which belong to the cache. svn path=/trunk/; revision=63580 --- reactos/ntoskrnl/mm/section.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/reactos/ntoskrnl/mm/section.c b/reactos/ntoskrnl/mm/section.c index af8719277e5..e30cc2a0f86 100644 --- a/reactos/ntoskrnl/mm/section.c +++ b/reactos/ntoskrnl/mm/section.c @@ -4090,15 +4090,22 @@ MmUnmapViewOfSegment(PMMSUPPORT AddressSpace, return(STATUS_UNSUCCESSFUL); } - MemoryArea->DeleteInProgress = TRUE; Section = MemoryArea->Data.SectionData.Section; Segment = MemoryArea->Data.SectionData.Segment; #ifdef NEWCC - if (Segment->Flags & MM_DATAFILE_SEGMENT) - return MmUnmapViewOfCacheSegment(AddressSpace, BaseAddress); + if (Segment->Flags & MM_DATAFILE_SEGMENT) + { + MmUnlockAddressSpace(AddressSpace); + Status = MmUnmapViewOfCacheSegment(AddressSpace, BaseAddress); + MmLockAddressSpace(AddressSpace); + + return Status; + } #endif + MemoryArea->DeleteInProgress = TRUE; + MmLockSectionSegment(Segment); RegionListHead = &MemoryArea->Data.SectionData.RegionListHead; @@ -4151,7 +4158,8 @@ MiRosUnmapViewOfSection(IN PEPROCESS Process, MemoryArea = MmLocateMemoryAreaByAddress(AddressSpace, BaseAddress); if (MemoryArea == NULL || - MemoryArea->Type != MEMORY_AREA_SECTION_VIEW || + ((MemoryArea->Type != MEMORY_AREA_SECTION_VIEW) && + (MemoryArea->Type != MEMORY_AREA_CACHE)) || MemoryArea->DeleteInProgress) { if (MemoryArea) NT_ASSERT(MemoryArea->Type != MEMORY_AREA_OWNED_BY_ARM3); @@ -4159,11 +4167,9 @@ MiRosUnmapViewOfSection(IN PEPROCESS Process, return STATUS_NOT_MAPPED_VIEW; } - MemoryArea->DeleteInProgress = TRUE; - Section = MemoryArea->Data.SectionData.Section; - if (Section->AllocationAttributes & SEC_IMAGE) + if ((Section != NULL) && (Section->AllocationAttributes & SEC_IMAGE)) { ULONG i; ULONG NrSegments; @@ -4176,6 +4182,8 @@ MiRosUnmapViewOfSection(IN PEPROCESS Process, SectionSegments = ImageSectionObject->Segments; NrSegments = ImageSectionObject->NrSegments; + MemoryArea->DeleteInProgress = TRUE; + /* Search for the current segment within the section segments * and calculate the image base address */ for (i = 0; i < NrSegments; i++) From 1cf26dd5ff87f30c186a16b669124888ab281b85 Mon Sep 17 00:00:00 2001 From: Ziliang Guo Date: Mon, 9 Jun 2014 21:33:59 +0000 Subject: [PATCH 175/232] [TRANSLATIONS] Add polish translations for various applications, control panel applets, and modules. CORE-8218 #resolve #comment svn path=/trunk/; revision=63581 --- reactos/base/applications/cacls/lang/pl-PL.rc | 6 +- .../base/applications/mplay32/lang/pl-PL.rc | 13 +- .../mscutils/eventvwr/lang/pl-PL.rc | 16 +- .../base/applications/shutdown/lang/pl-PL.rc | 155 ++++++++++-------- .../base/applications/sndrec32/lang/pl-PL.rc | 41 ++--- reactos/dll/cpl/appwiz/lang/pl-PL.rc | 15 +- reactos/dll/cpl/desk/lang/pl-PL.rc | 2 +- reactos/dll/cpl/wined3dcfg/lang/pl-PL.rc | 25 +-- reactos/dll/win32/msgina/lang/pl-PL.rc | 3 +- reactos/subsystems/ntvdm/lang/pl-PL.rc | 2 +- .../winsrv/consrv/frontends/gui/lang/pl-PL.rc | 5 +- 11 files changed, 152 insertions(+), 131 deletions(-) diff --git a/reactos/base/applications/cacls/lang/pl-PL.rc b/reactos/base/applications/cacls/lang/pl-PL.rc index 44c50aab083..1df18a59503 100644 --- a/reactos/base/applications/cacls/lang/pl-PL.rc +++ b/reactos/base/applications/cacls/lang/pl-PL.rc @@ -2,7 +2,7 @@ * Translated by TestamenT * testament@users.sourceforge.net * https://sourceforge.net/projects/reactospl - * Updated by Saibamen - Adam Stachowicz (saibamenppl@gmail.com) (Apr, 2011) + * Updated by Saibamen - Adam Stachowicz (saibamenppl@gmail.com) (May, 2014) * UTF-8 conversion by Caemyr (May, 2011) */ @@ -51,8 +51,8 @@ Skróty:\n\ IDS_ABBR_CHANGE "C" IDS_ABBR_NONE "N" IDS_ALLOW "" - IDS_DENY "(DENY)" - IDS_SPECIAL_ACCESS "(special access:)" + IDS_DENY "(ODMÓW)" + IDS_SPECIAL_ACCESS "(dostÄ™p specjalny:)" IDS_GENERIC_READ "GENERIC_READ" IDS_GENERIC_WRITE "GENERIC_WRITE" IDS_GENERIC_EXECUTE "GENERIC_EXECUTE" diff --git a/reactos/base/applications/mplay32/lang/pl-PL.rc b/reactos/base/applications/mplay32/lang/pl-PL.rc index 5c21137ef55..fdcb893c289 100644 --- a/reactos/base/applications/mplay32/lang/pl-PL.rc +++ b/reactos/base/applications/mplay32/lang/pl-PL.rc @@ -3,6 +3,7 @@ * http://www.reactos.org * IRC: irc.freenode.net #reactos-pl * UTF-8 conversion by Caemyr (May, 2011) + * Updated by Saibamen - Adam Stachowicz (saibamenppl@gmail.com) (May, 2014) */ LANGUAGE LANG_POLISH, SUBLANG_DEFAULT @@ -16,11 +17,11 @@ BEGIN MENUITEM SEPARATOR MENUITEM "&Wyjdź", IDM_EXIT END - POPUP "&Device" + POPUP "&UrzÄ…dzenie" BEGIN - MENUITEM "&Properties", IDM_DEVPROPS + MENUITEM "&WÅ‚aÅ›ciwoÅ›ci", IDM_DEVPROPS MENUITEM SEPARATOR - MENUITEM "&Volume Control", IDM_VOLUMECTL + MENUITEM "&Regulacja gÅ‚oÅ›noÅ›ci", IDM_VOLUMECTL END POPUP "&Pomoc" BEGIN @@ -38,8 +39,8 @@ BEGIN IDS_TOOLTIP_SEEKBACK "PrzewiÅ„ do tyÅ‚u" IDS_TOOLTIP_SEEKFORW "PrzewiÅ„ do przodu" IDS_TOOLTIP_FORWARD "Przeskocz do przodu" - IDS_APPTITLE "ReactOS Multimedia Player" + IDS_APPTITLE "Odtwarzacz multimedialny ReactOS" IDS_PLAY "Odtwórz" - IDS_DEFAULTMCIERRMSG "No description is available for this error" - IDS_UNKNOWNFILEEXT "Cannot determine the device type from the given filename extension." + IDS_DEFAULTMCIERRMSG "Brak dostÄ™pnego opisu dla tego błędu" + IDS_UNKNOWNFILEEXT "Nie można okreÅ›lić typu urzÄ…dzenia z podanego rozszerzenia pliku." END diff --git a/reactos/base/applications/mscutils/eventvwr/lang/pl-PL.rc b/reactos/base/applications/mscutils/eventvwr/lang/pl-PL.rc index 549269c523a..7432a6686ab 100644 --- a/reactos/base/applications/mscutils/eventvwr/lang/pl-PL.rc +++ b/reactos/base/applications/mscutils/eventvwr/lang/pl-PL.rc @@ -1,4 +1,6 @@ -/* Polish translation by Caemyr - Olaf Siejka */ +/* Polish translation by Caemyr - Olaf Siejka + * PL update by wojo664 (June 2014) + */ LANGUAGE LANG_POLISH, SUBLANG_DEFAULT @@ -10,9 +12,9 @@ BEGIN MENUITEM "&Zabezpieczenia", ID_LOG_SECURITY MENUITEM "&System", ID_LOG_SYSTEM MENUITEM SEPARATOR - MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED + MENUITEM "Zapisz &protokół...", ID_SAVE_PROTOCOL, GRAYED MENUITEM SEPARATOR - MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED + MENUITEM "W&yczyść wszystkie zdarzenia", ID_CLEAR_EVENTS, GRAYED MENUITEM SEPARATOR MENUITEM "&WyjÅ›cie", IDM_EXIT END @@ -91,8 +93,8 @@ END STRINGTABLE BEGIN IDS_APP_TITLE "PodglÄ…d zdarzeÅ„" - IDS_APP_TITLE_EX "%s - %s Log on \\\\" - IDS_STATUS_MSG "%s has %lu event(s)" + IDS_APP_TITLE_EX "%s - %s Log na \\\\" + IDS_STATUS_MSG "%s posiada %lu zdarzeÅ„" IDS_EVENTSTRINGIDNOTFOUND "Opis zdarzenia dla danego numeru ID: ( %lu ) nie zostaÅ‚ odnaleziony w źródle: ( %s ). Ten komputer może nie miec wystarczajÄ…cych informacji w rejestrze, albo bibliotek DLL, aby wyÅ›wietlić wiadomoÅ›ci z komputera zdalnego." IDS_EVENTLOG_ERROR_TYPE "Błąd" IDS_EVENTLOG_WARNING_TYPE "Ostrzeżenie" @@ -101,8 +103,8 @@ BEGIN IDS_EVENTLOG_AUDIT_FAILURE "Nieudany Audyt" IDS_EVENTLOG_SUCCESS "Sukces" IDS_EVENTLOG_UNKNOWN_TYPE "Zdarzenie nieznane" - IDS_CLEAREVENTS_MSG "Do you want to save this event log before clearing it?" - IDS_SAVE_FILTER "Event Log (*.evt)\0*.evt\0" + IDS_CLEAREVENTS_MSG "Czy chcesz zapisać dziennik zdarzeÅ„ przed czyszczeniem?" + IDS_SAVE_FILTER "Dziennik zdarzeÅ„ (*.evt)\0*.evt\0" END STRINGTABLE diff --git a/reactos/base/applications/shutdown/lang/pl-PL.rc b/reactos/base/applications/shutdown/lang/pl-PL.rc index 9471ac00c9a..b9342a67eb2 100644 --- a/reactos/base/applications/shutdown/lang/pl-PL.rc +++ b/reactos/base/applications/shutdown/lang/pl-PL.rc @@ -1,103 +1,116 @@ +/* + * Translated by Saibamen - Adam Stachowicz (saibamenppl@gmail.com) (May, 2014) + */ + LANGUAGE LANG_POLISH, SUBLANG_DEFAULT /* Dialog */ IDD_GUI DIALOGEX 0, 0, 240, 255 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Remote Shutdown" +CAPTION "Zdalne zamkniÄ™cie systemu" FONT 8, "MS Shell Dlg" BEGIN DEFPUSHBUTTON "&OK", IDC_OK, 125, 232, 50, 14 - PUSHBUTTON "&Cancel", IDC_CANCEL, 178, 232, 50, 14 - LTEXT "Co&mputers:", IDC_STATIC, 9, 9, 35, 36 + PUSHBUTTON "&Anuluj", IDC_CANCEL, 178, 232, 50, 14 + LTEXT "Ko&mputery:", IDC_STATIC, 9, 9, 35, 36 LISTBOX IDC_COMPUTER_LIST, 8, 19, 162, 55 - PUSHBUTTON "&Add...", IDC_ADD_SYSTEM, 179, 19, 50, 14 - PUSHBUTTON "&Remove", IDC_REMOVE_SYSTEM, 179, 36, 50, 14, WS_DISABLED - PUSHBUTTON "&Browse...", IDC_BROWSE_SYSTEM, 179, 53, 50, 14 - LTEXT "Action", IDC_ACTION, 11, 81, 20, 14 + PUSHBUTTON "&Dodaj...", IDC_ADD_SYSTEM, 179, 19, 50, 14 + PUSHBUTTON "&UsuÅ„", IDC_REMOVE_SYSTEM, 179, 36, 50, 14, WS_DISABLED + PUSHBUTTON "&PrzeglÄ…daj...", IDC_BROWSE_SYSTEM, 179, 53, 50, 14 + LTEXT "Akcja", IDC_ACTION, 11, 81, 20, 14 COMBOBOX IDC_ACTION_TYPE, 37, 79, 129, 14, WS_TABSTOP | CBS_DROPDOWN - CHECKBOX "Warn users", IDC_WARN_USERS, 175, 79, 55, 14, BS_AUTOCHECKBOX | WS_TABSTOP - LTEXT "Display warning for", IDC_SHOW_WARN_ONE, 11, 99, 65, 14 + CHECKBOX "Ostrzeż użytkowników", IDC_WARN_USERS, 175, 79, 55, 14, BS_AUTOCHECKBOX | WS_TABSTOP + LTEXT "WyÅ›wietlaj ostrzeżenie przez", IDC_SHOW_WARN_ONE, 11, 99, 65, 14 EDITTEXT IDC_SHOW_WARN, 78, 97, 41, 14 - LTEXT "second(s)", IDC_SHOW_WARN_TWO, 124, 99, 32, 10 - GROUPBOX "Shutdown Event Tracker", IDC_STATIC, 5, 114, 224, 114 - LTEXT "Reason:", IDC_STATIC, 16, 130, 27, 8 - CHECKBOX "Planned", IDC_PLANNED, 175, 130, 40, 12, BS_AUTOCHECKBOX | WS_TABSTOP + LTEXT "sekund(y)", IDC_SHOW_WARN_TWO, 124, 99, 32, 10 + GROUPBOX "Åšledzenie zdarzeÅ„ zamkniÄ™cia systemu", IDC_STATIC, 5, 114, 224, 114 + LTEXT "Powód:", IDC_STATIC, 16, 130, 27, 8 + CHECKBOX "Planowane", IDC_PLANNED, 175, 130, 40, 12, BS_AUTOCHECKBOX | WS_TABSTOP COMBOBOX IDC_REASON_CODE, 17, 142, 198, 13, WS_TABSTOP | CBS_DROPDOWN - LTEXT "Comm&ent:", IDC_COMMENT_CAPTION, 16, 159, 38, 8 + LTEXT "Ko&mentarz:", IDC_COMMENT_CAPTION, 16, 159, 38, 8 EDITTEXT IDC_COMMENT_TEXT, 17, 171, 198, 50, WS_VSCROLL END /* Information and error messages */ STRINGTABLE BEGIN - IDS_USAGE "ReactOS Shutdown Utility\n\ + IDS_USAGE "NarzÄ™dzie Zamykania ReactOS\n\ \n\ -Usage: shutdown [/?] [/i | /l | /s | /r | /g | /a | /p | /h | /e] [/f]\n\ - [/m \\\\computer][/t xxx][/d [p|u:]xx:yy [/c ""comment""]]\n\ +Sposób użycia: shutdown [/?] [/i | /l | /s | /r | /g | /a | /p | /h | /e] [/f]\n\ + [/m \\\\komputer][/t xxx][/d [p|u:]xx:yy [/c ""komentarz""]]\n\ \n\ - No arguments or /? Display this help.\n\ - /i Show the graphical user interface (GUI). This option must be the\n\ - first one.\n\ - /l Log off on the local system only. Cannot be used with /m or /d.\n\ - /s Shutdown the computer.\n\ - /r Restart the computer.\n\ - /g Restart the computer and restart all the registered applications.\n\ - /a Cancel a delayed shutdown. Can only be used during the delay\n\ - period.\n\ - /p Shutdown the local computer without any timeout or warning. Can be\n\ - used with /d or /f.\n\ - /h Hibernate the local computer. Usable with /f.\n\ - /e Document the reason for the unexpected computer shutdown.\n\ - /m \\\\computer Specify the target computer (UNC/IP address).\n\ - /t xxx Set the timeout period to xxx seconds before shutting down.\n\ - The valid range starts from 0 to 315360000 (10 years),\n\ - 30 being the default value.\n\ - /c ""comment"" Comment on the reason for shutdown or restart.\n\ - 512 characters maximum allowed.\n\ - /f Force running applications to close without warning users. If you\n\ - do not specify any other parameter, this option will also log off.\n\ - /d [p|u:]xx:yy Give the reason code for the shutdown or the restart.\n\ - p indicates that the shutdown or the restart is planned.\n\ - u indicates that the reason is defined by the user.\n\ - If neither p nor u are specified, the shutdown or the restart are\n\ - not planned.\n\ - xx is the major reason code (positive integer smaller than 256).\n\ - yy is the minor reason code (positive integer smaller than 65536).\n" + Bez argumentów lub /? WyÅ›wietla Pomoc.\n\ + /i WyÅ›wietla graficzny interfejs użytkownika (GUI).\n\ + To musi być pierwsza opcja.\n\ + /l Wylogowuje. Ten parametr nie może być używany z opcjami /m\n\ + oraz /d.\n\ + /s Zamyka komputer.\n\ + /r Zamyka i ponownie uruchamia komputer.\n\ + /g Zamyka i ponownie uruchamia komputer. Po ponownym rozruchu\n\ + systemu, uruchamia ponownie wszystkie zarejestrowane\n\ + aplikacje.\n\ + /a Przerywa zamykanie systemu.\n\ + Do użytku tylko podczas limitu czasu.\n\ + /p Wyłącza lokalny komputer bez limitu czasu i ostrzeżenia.\n\ + Do użytku tylko z opcjÄ… /d i /f.\n\ + /h Przełącza komputer lokalny w stan hibernacji.\n\ + Do użytku tylko z opcjÄ… /f.\n\ + /e Dokumentuje przyczynÄ™ nieoczekiwanego zamkniÄ™cia systemu.\n\ + /m \\\\komputer OkreÅ›la komputer docelowy (adres UNC/IP).\n\ + /t xxx Ustawia limit czasu zamkniÄ™cia systemu na xxx sekund.\n\ + PrawidÅ‚owy zakres to 0-315360000 (10 lat), domyÅ›lna wartość to 30.\n\ + /c ""komentarz"" Wstawia komentarz dotyczÄ…cy przyczyny ponownego\n\ + uruchomienia lub zamkniÄ™cia.\n\ + Maksymalna dozwolona liczba znaków wynosi 512.\n\ + /f Wymusza zamkniÄ™cie uruchomionych aplikacji bez uprzedniego\n\ + powiadamiania użytkowników. If you do not specify any other parameter, this option will also log off.\n\ + /d [p|u:]xx:yy Podaje przyczynÄ™ ponownego uruchomienia lub\n\ + zamkniÄ™cia systemu\n\ + Opcja p okreÅ›la, że zaplanowano zamkniÄ™cie lub\n\ + ponowne uruchomienie.\n\ + Opcja u okreÅ›la, że przyczyna jest zdefiniowana przez\n\ + użytkownika.\n\ + JeÅ›li nie okreÅ›lono opcji p i u, ponowne uruchomienie\n\ + lub zamkniÄ™cie nie jest zaplanowane.\n\ + xx to numer przyczyny głównej (dodatnia liczba caÅ‚kowita\n\ + mniejsza niż 256).\n\ + yy to numer przyczyny dodatkowej (dodatnia liczba caÅ‚kowita\n\ + mniejsza niż 65 536).\n" - IDS_ERROR_SHUTDOWN_REBOOT "ERROR: Unable to shutdown and restart at the same time.\n" - IDS_ERROR_TIMEOUT "ERROR: Timeout value of %u is out of bounds (0-315360000).\n" - IDS_ERROR_ABORT "ERROR: Unable to abort the shutdown of the system.\n" - IDS_ERROR_LOGOFF "ERROR: Unable to logoff the system.\n" - IDS_ERROR_SHUTDOWN "ERROR: Unable to shutdown the system.\n" - IDS_ERROR_RESTART "ERROR: Unable to restart the system.\n" - IDS_ERROR_MAX_COMMENT_LENGTH "ERROR: Comment length exceeds maximum character limit set by the system.\n" - IDS_ERROR_HIBERNATE "ERROR: Unable to send system into hibernation mode.\n" - IDS_ERROR_HIBERNATE_LOCAL "ERROR: Hibernation mode cannot be started remotely.\n" - IDS_ERROR_HIBERNATE_ENABLED "ERROR: Hibernation mode is not enabled.\n" - IDS_ERROR_DIALOG_CAPTION "Remote Shutdown" - IDS_ERROR_DIALOG_INIT "Unable to display the graphical user interface." + IDS_ERROR_SHUTDOWN_REBOOT "BÅÄ„D: Nie można zamknąć i ponownie uruchomić w tym samym czasie.\n" + IDS_ERROR_TIMEOUT "BÅÄ„D: Limit czasu %u jest poza zakresem (0-315360000).\n" + IDS_ERROR_ABORT "BÅÄ„D: Nie można przerważ zamykania systemu.\n" + IDS_ERROR_LOGOFF "BÅÄ„D: Nie można wylogować z systemu.\n" + IDS_ERROR_SHUTDOWN "BÅÄ„D: Nie można zamknąć systemu.\n" + IDS_ERROR_RESTART "BÅÄ„D: Nie można ponownie uruchomić systemu.\n" + IDS_ERROR_MAX_COMMENT_LENGTH "BÅÄ„D: DÅ‚ugość komentarza przekrasza maksymalny limit znaków ustawiony przez system.\n" + IDS_ERROR_HIBERNATE "BÅÄ„D: Nie można ustawić systemu w trybie hibernacji.\n" + IDS_ERROR_HIBERNATE_LOCAL "BÅÄ„D: Tryb hibernacji nie może być uruchomiony zdalnie.\n" + IDS_ERROR_HIBERNATE_ENABLED "BÅÄ„D: Tryb hibernacji jest wyłączony.\n" + IDS_ERROR_DIALOG_CAPTION "Zdalne Zamykanie" + IDS_ERROR_DIALOG_INIT "Nie można wyÅ›wietlić graficznego interfejsu użytkownika." END /* Remote shutdown action strings */ STRINGTABLE BEGIN - IDS_ACTION_SHUTDOWN "Shutdown the system" - IDS_ACTION_RESTART "Restart the system" - IDS_ACTION_UNEXPECTED_SHUTDOWN "Annotate the unexpected shutdown" + IDS_ACTION_SHUTDOWN "ZamkniÄ™cie" + IDS_ACTION_RESTART "Uruchom ponownie" + IDS_ACTION_UNEXPECTED_SHUTDOWN "Adnotuj nieoczekiwane zamkniÄ™cie" END /* Remote shutdown reason strings */ STRINGTABLE BEGIN - IDS_REASON_OTHER "Other" - IDS_REASON_HARDWARE_MAINTENANCE "Hardware: Maintenance" - IDS_REASON_HARDWARE_INSTALL "Hardware: Installation" - IDS_REASON_OS_RECOVER "Operating System: Recovery" - IDS_REASON_OS_RECONFIGURE "Operating System: Reconfigure" - IDS_REASON_APP_MAINTENANCE "Application: Maintenance" - IDS_REASON_APP_INSTALL "Application: Installation" - IDS_REASON_APP_UNRESPONSIVE "Application: Unresponsive" - IDS_REASON_APP_UNSTABLE "Application: Unstable" - IDS_REASON_SECURITY "Security Issue" - IDS_REASON_NETWORK "Loss of network connectivity" + IDS_REASON_OTHER "Inne zadania" + IDS_REASON_HARDWARE_MAINTENANCE "SprzÄ™t: konserwacja" + IDS_REASON_HARDWARE_INSTALL "SprzÄ™t: instalacja" + IDS_REASON_OS_RECOVER "System Operacyjny: odzyskiwanie" + IDS_REASON_OS_RECONFIGURE "System Operacyjny: ponowna konfiguracja" + IDS_REASON_APP_MAINTENANCE "Aplikacja: konserwacja" + IDS_REASON_APP_INSTALL "Aplikacja: instalacja" + IDS_REASON_APP_UNRESPONSIVE "Aplikacja: nie odpowiada" + IDS_REASON_APP_UNSTABLE "Aplikacja: niestabilna" + IDS_REASON_SECURITY "Problem zabezpieczeÅ„" + IDS_REASON_NETWORK "Utrata połączenia sieciowego" END diff --git a/reactos/base/applications/sndrec32/lang/pl-PL.rc b/reactos/base/applications/sndrec32/lang/pl-PL.rc index c86f1fd2a4a..6eea26523b1 100644 --- a/reactos/base/applications/sndrec32/lang/pl-PL.rc +++ b/reactos/base/applications/sndrec32/lang/pl-PL.rc @@ -3,7 +3,8 @@ * Use ReactOS forum PM, IRC or saibamenppl at gmail.com to contact me * http://www.reactos.org * IRC: irc.freenode.net #reactos-pl; - * UTF-8 conversion by Caemyr (May, 2011) + * UTF-8 conversion by Caemyr (May, 2011) + * Update by wojo664 and Saibamen (May 2014) */ LANGUAGE LANG_POLISH, SUBLANG_DEFAULT @@ -21,7 +22,7 @@ FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN ICON IDI_SNDREC32, -1, 19, 14, 21, 20 LTEXT "Rejestrator dźwiÄ™ku ReactOS, wersja 1.0", IDC_STATIC, 56, 16, 114, 8, SS_NOPREFIX - LTEXT "Copyright (C) 2009", IDC_STATIC, 56, 25, 114, 8 + LTEXT "Prawa autorskie (C) 2009", IDC_STATIC, 56, 25, 114, 8 DEFPUSHBUTTON "OK", IDOK, 139, 54, 50, 14, WS_GROUP END @@ -33,35 +34,35 @@ BEGIN MENUITEM "Otwórz...", ID_FILE_OPEN MENUITEM "Zapisz", ID_FILE_SAVE, GRAYED MENUITEM "Zapisz jako...", ID_FILE_SAVEAS, GRAYED - MENUITEM "Restore...", ID_FILE_RESTORE, GRAYED - MENUITEM "Properties", ID_FILE_PROPERTIES + MENUITEM "Przywróć...", ID_FILE_RESTORE, GRAYED + MENUITEM "WÅ‚aÅ›ciwoÅ›ci", ID_FILE_PROPERTIES MENUITEM SEPARATOR MENUITEM "WyjÅ›cie", ID_FILE_EXIT END - POPUP "&Edit" + POPUP "&Edycja" BEGIN - MENUITEM "&Copy", ID_EDIT_COPY - MENUITEM "&Paste Insert", ID_EDIT_PASTE, GRAYED - MENUITEM "Paste Mi&x", ID_EDIT_PASTEMIX, GRAYED + MENUITEM "&Kopiuj", ID_EDIT_COPY + MENUITEM "&Wklej wstawkÄ™", ID_EDIT_PASTE, GRAYED + MENUITEM "Wklej Mi&ks", ID_EDIT_PASTEMIX, GRAYED MENUITEM SEPARATOR - MENUITEM "&Insert File...", ID_EDIT_INSERTFILE - MENUITEM "&Mix with File...", ID_EDIT_MIXFILE + MENUITEM "&Wstaw plik...", ID_EDIT_INSERTFILE + MENUITEM "&Miksuj z plikiem...", ID_EDIT_MIXFILE MENUITEM SEPARATOR - MENUITEM "Delete &Before Current Position",ID_EDIT_DELETEBEFORE, GRAYED - MENUITEM "Delete &After Current Position",ID_EDIT_DELETEAFTER, GRAYED + MENUITEM "Kasuj &przed obecnÄ… pozycjÄ…",ID_EDIT_DELETEBEFORE, GRAYED + MENUITEM "Kasuj &za obecnÄ… pozycjÄ…",ID_EDIT_DELETEAFTER, GRAYED MENUITEM SEPARATOR - MENUITEM "A&udio Properties", ID_EDIT_AUDIOPROPS + MENUITEM "WÅ‚aÅ›ciwoÅ›ci a&udio", ID_EDIT_AUDIOPROPS END - POPUP "Effect&s" + POPUP "Efekt&y" BEGIN - MENUITEM "&Increase Volume (by 25%)", ID_EFFECTS_INCVOL - MENUITEM "&Decrease Volume", ID_EFFECTS_DECVOL + MENUITEM "&ZgÅ‚oÅ›nij (o 25%)", ID_EFFECTS_INCVOL + MENUITEM "&Åšcisz", ID_EFFECTS_DECVOL MENUITEM SEPARATOR - MENUITEM "&Increase Speed (by 100%)", ID_EFFECTS_INCSPD - MENUITEM "&Decrease Speed", ID_EFFECTS_DECSPD + MENUITEM "&PrzyÅ›piesz (o 100%)", ID_EFFECTS_INCSPD + MENUITEM "&Zwolnij", ID_EFFECTS_DECSPD MENUITEM SEPARATOR - MENUITEM "&Add Echo", ID_EFFECTS_ECHO - MENUITEM "&Reverse", ID_EFFECTS_REVERSE + MENUITEM "&Dodaj echo", ID_EFFECTS_ECHO + MENUITEM "&Odwróć", ID_EFFECTS_REVERSE END POPUP "?" BEGIN diff --git a/reactos/dll/cpl/appwiz/lang/pl-PL.rc b/reactos/dll/cpl/appwiz/lang/pl-PL.rc index b46b76189b7..9da524973e6 100644 --- a/reactos/dll/cpl/appwiz/lang/pl-PL.rc +++ b/reactos/dll/cpl/appwiz/lang/pl-PL.rc @@ -4,6 +4,7 @@ * http://www.reactos.org * IRC: irc.freenode.net #reactos-pl; * UTF-8 conversion by Caemyr (May, 2011) + * Updated by Saibamen - Adam Stachowicz (saibamenppl@gmail.com) (April, 2014) */ LANGUAGE LANG_POLISH, SUBLANG_DEFAULT @@ -59,19 +60,19 @@ END STRINGTABLE BEGIN - IDS_DOWNLOADING "Downloading..." - IDS_INSTALLING "Installing..." - IDS_INVALID_SHA "Unexpected checksum of downloaded file. Aborting installation of corrupted file." + IDS_DOWNLOADING "ÅšciÄ…ganie..." + IDS_INSTALLING "Instalowanie..." + IDS_INVALID_SHA "Nieoczekiwana suma kontrolna Å›ciÄ…gniÄ™tego pliku. Przerwanie instalacji uszkodzonego pliku." END ID_DWL_GECKO_DIALOG DIALOG 0, 0, 260, 95 STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Wine Gecko Installer" +CAPTION "Instalator Wine Gecko" FONT 8, "MS Shell Dlg" BEGIN - CONTROL "ReactOS could not find a Wine Gecko package which is needed for applications embedding HTML to work correctly. ReactOS can automatically download and install it for you.", + CONTROL "ReactOS nie mógÅ‚ znaleźć pakietu Wine Gecko, który jest potrzebny dla aplikacji osadzajÄ…cych kod HTML, aby mogÅ‚y pracować w peÅ‚ni. ReactOS może go automatycznie pobrać i zainstalować dla Ciebie.", ID_DWL_STATUS, "SysLink", 0, 10, 10, 240, 65 CONTROL "", ID_DWL_PROGRESS, PROGRESS_CLASSA, WS_BORDER | PBS_SMOOTH, 10, 40, 240, 12 - DEFPUSHBUTTON "&Install", ID_DWL_INSTALL, 200, 76, 50, 14, WS_GROUP | WS_TABSTOP - PUSHBUTTON "Cancel", IDCANCEL, 144, 76, 50, 14, WS_GROUP | WS_TABSTOP + DEFPUSHBUTTON "&Instaluj", ID_DWL_INSTALL, 200, 76, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Anuluj", IDCANCEL, 144, 76, 50, 14, WS_GROUP | WS_TABSTOP END diff --git a/reactos/dll/cpl/desk/lang/pl-PL.rc b/reactos/dll/cpl/desk/lang/pl-PL.rc index 3c0f108c7d7..514c7ef9556 100644 --- a/reactos/dll/cpl/desk/lang/pl-PL.rc +++ b/reactos/dll/cpl/desk/lang/pl-PL.rc @@ -68,7 +68,7 @@ END IDD_ADVAPPEARANCE DIALOGEX 0, 0, 250, 239 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_DLGMODALFRAME | WS_EX_WINDOWEDGE -CAPTION "Ustawienia zaawnsowane" +CAPTION "Ustawienia zaawansowane" FONT 8, "MS Shell Dlg" BEGIN CONTROL "", IDC_APPEARANCE_PREVIEW, "PreviewWndClass", WS_VISIBLE | WS_BORDER, 7, 7, 232, 120 diff --git a/reactos/dll/cpl/wined3dcfg/lang/pl-PL.rc b/reactos/dll/cpl/wined3dcfg/lang/pl-PL.rc index c99c1e78e30..385de573c96 100644 --- a/reactos/dll/cpl/wined3dcfg/lang/pl-PL.rc +++ b/reactos/dll/cpl/wined3dcfg/lang/pl-PL.rc @@ -2,6 +2,7 @@ * Translated by Caemyr - Olaf Siejka (Mar 2012) * http://www.reactos.org * IRC: irc.freenode.net #reactos-pl; + * Updated by Saibamen and wojo664 (May 2014) */ LANGUAGE LANG_POLISH, SUBLANG_DEFAULT @@ -12,27 +13,27 @@ CAPTION "Ogólne" FONT 8, "MS Shell Dlg" BEGIN ICON IDI_CPLICON, IDI_CPLICON, 8, 0, 21, 20 - GROUPBOX "Shaders", -1, 5, 25, 230, 80 - LTEXT "Enable GLSL:", -1, 15, 42, 80, 10 + GROUPBOX "Cieniowanie", -1, 5, 25, 230, 80 + LTEXT "Włącz GLSL:", -1, 15, 42, 80, 10 COMBOBOX IDC_GLSL, 95, 40, 90, 10, WS_TABSTOP | WS_VSCROLL | CBS_DROPDOWNLIST - LTEXT "Maximum GS Level:", -1, 15, 57, 80, 10 + LTEXT "Maksymalny poziom GS:", -1, 15, 57, 80, 10 COMBOBOX IDC_GSLEVEL, 95, 55, 90, 10, WS_TABSTOP | WS_VSCROLL | CBS_DROPDOWNLIST - LTEXT "Maximum PS Level:", -1, 15, 72, 80, 10 + LTEXT "Maksymalny poziom PS:", -1, 15, 72, 80, 10 COMBOBOX IDC_PSLEVEL, 95, 70, 90, 10, WS_TABSTOP | WS_VSCROLL | CBS_DROPDOWNLIST - LTEXT "Maximum VS Level:", -1, 15, 87, 80, 10 + LTEXT "Maksymalny poziom VS:", -1, 15, 87, 80, 10 COMBOBOX IDC_VSLEVEL, 95, 85, 90, 10, WS_TABSTOP | WS_VSCROLL | CBS_DROPDOWNLIST - GROUPBOX "Rendering", -1, 5, 110, 230, 110 - LTEXT "Multisampling:", -1, 15, 127, 80, 10 + GROUPBOX "Renderowanie", -1, 5, 110, 230, 110 + LTEXT "Multipróbkowanie:", -1, 15, 127, 80, 10 COMBOBOX IDC_MULTISAMPLING, 95, 125, 90, 10, WS_TABSTOP | WS_VSCROLL | CBS_DROPDOWNLIST - LTEXT "Strict draw ordering:", -1, 15, 142, 80, 10 + LTEXT "ÅšcisÅ‚a kolejność rysowania:", -1, 15, 142, 80, 10 COMBOBOX IDC_STRICTDRAWORDERING, 95, 140, 90, 10, WS_TABSTOP | WS_VSCROLL | CBS_DROPDOWNLIST - LTEXT "Offscreen rendering:", -1, 15, 157, 80, 10 + LTEXT "Renderowanie pozaekranowe:", -1, 15, 157, 80, 10 COMBOBOX IDC_OFFSCREEN, 95, 155, 90, 10, WS_TABSTOP | WS_VSCROLL | CBS_DROPDOWNLIST - LTEXT "Always offscreen:", -1, 15, 172, 72, 10, SS_LEFT + LTEXT "Zawsze pozaekranowo:", -1, 15, 172, 72, 10, SS_LEFT COMBOBOX IDC_ALWAYSOFFSCREEN, 95, 170, 90, 10, WS_TABSTOP | WS_VSCROLL | CBS_DROPDOWNLIST - LTEXT "Video memory size:", -1, 15, 187, 72, 10, SS_LEFT + LTEXT "Rozmiar pamiÄ™ci video:", -1, 15, 187, 72, 10, SS_LEFT COMBOBOX IDC_VIDMEMSIZE, 95, 185, 90, 10, WS_TABSTOP | WS_VSCROLL | CBS_DROPDOWNLIST - LTEXT "DirectDraw Renderer:", -1, 15, 202, 72, 10, SS_LEFT + LTEXT "UrzÄ…dzenie renderujÄ…ce DirectDraw:", -1, 15, 202, 72, 10, SS_LEFT COMBOBOX IDC_DDRENDERER, 95, 200, 90, 10, WS_TABSTOP | WS_VSCROLL | CBS_DROPDOWNLIST END diff --git a/reactos/dll/win32/msgina/lang/pl-PL.rc b/reactos/dll/win32/msgina/lang/pl-PL.rc index 86520561671..986522e6d97 100644 --- a/reactos/dll/win32/msgina/lang/pl-PL.rc +++ b/reactos/dll/win32/msgina/lang/pl-PL.rc @@ -162,7 +162,8 @@ BEGIN IDS_PASSWORDEXPIRED "Twoje hasÅ‚o wygasÅ‚o i musi zostać zmienione." END -/* Shutdown Dialog Strings */STRINGTABLE +/* Shutdown Dialog Strings */ +STRINGTABLE BEGIN IDS_SHUTDOWN_LOGOFF "Wyloguj ""%s""" IDS_SHUTDOWN_SHUTDOWN "Wyłącz" diff --git a/reactos/subsystems/ntvdm/lang/pl-PL.rc b/reactos/subsystems/ntvdm/lang/pl-PL.rc index 84701cf04ee..ab931ef77bc 100644 --- a/reactos/subsystems/ntvdm/lang/pl-PL.rc +++ b/reactos/subsystems/ntvdm/lang/pl-PL.rc @@ -11,6 +11,6 @@ END STRINGTABLE BEGIN - IDS_VDM_DUMPMEM, "Dump &Memory" + IDS_VDM_DUMPMEM, "Zrzut &PamiÄ™ci" IDS_VDM_QUIT , "&Wyjdź z ReactOS VDM" END diff --git a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/pl-PL.rc b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/pl-PL.rc index 04023569048..4a6594b48d7 100644 --- a/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/pl-PL.rc +++ b/reactos/win32ss/user/winsrv/consrv/frontends/gui/lang/pl-PL.rc @@ -4,6 +4,7 @@ * https://sourceforge.net/projects/reactospl * Translation update by Olaf Siejka (Caemyr), Apr 2011 * UTF-8 conversion by Caemyr (May, 2011) + * Update by wojo664 (June 2014) */ LANGUAGE LANG_POLISH, SUBLANG_DEFAULT @@ -33,6 +34,6 @@ END STRINGTABLE BEGIN - IDS_MARK_TITLE "Mark" - IDS_SELECT_TITLE "Select" + IDS_MARK_TITLE "Zaznacz" + IDS_SELECT_TITLE "Wybierz" END From 492bfe5967ed79aa3ade6488704ae9319a4a0453 Mon Sep 17 00:00:00 2001 From: Daniel Reimer Date: Mon, 9 Jun 2014 21:37:52 +0000 Subject: [PATCH 176/232] [TRANSLATION] Polish translation of a few INF files by Adam Stachowicz CORE-8218 #comment INF files committed. Thx for help. svn path=/trunk/; revision=63582 --- reactos/media/inf/NET_NIC.inf | Bin 3320 -> 3490 bytes reactos/media/inf/bth.inf | Bin 3532 -> 3858 bytes reactos/media/inf/c_image.inf | Bin 1330 -> 1472 bytes reactos/media/inf/flpydisk.inf | Bin 3616 -> 4040 bytes reactos/media/inf/keyboard.inf | Bin 9864 -> 9948 bytes reactos/media/inf/monitor.inf | Bin 3728 -> 4164 bytes reactos/media/inf/unknown.inf | Bin 1814 -> 1814 bytes 7 files changed, 0 insertions(+), 0 deletions(-) diff --git a/reactos/media/inf/NET_NIC.inf b/reactos/media/inf/NET_NIC.inf index 0b21b8320693c128784d87630bff6a50a34d158b..614c28e44af8e31bdacffec8c5bc187a21ae3c34 100644 GIT binary patch delta 27 jcmew%xk!4$5BAAUoEej~IJlTo8Hy%vjJxOlEJsw8W$@h6gxfK{}859_l7+e{$C;#PfvVJo*c-lY7SA82b4`@C<2oC4CP?e#RT-Sa~oS?)0+si385Fn S!?2e@X)-^Thzd&ZgH15f1TxyHIa5HXB;Y(oz099HCO8@`> diff --git a/reactos/media/inf/keyboard.inf b/reactos/media/inf/keyboard.inf index 8fe2e0b3f894bf3beb375acb1cfcd6ce9c58c70a..afc54cc2ff8b34afbec63e25ed039170d5ac82e8 100644 GIT binary patch delta 26 hcmeD1z2mzfNp`ZCsM%y6Sw62x|ZU delta 12 TcmccP+u^$*Np|x#Sv5`oC65H- diff --git a/reactos/media/inf/monitor.inf b/reactos/media/inf/monitor.inf index 4415a116376f80b7cc3f93d1360c8bf716b4c8d8..d7997607c4524f206f915fd87b15e3a9058805fc 100644 GIT binary patch delta 133 zcmbOrdqiOYFQe&XMqYW@Y=%sR0)|8e1%@DoR3M$qP{QEP5X_*&z{|ijc`ldpMa4%MGT)A$|vvUbryC3@^XRl(Tq7jS+Kgv7kPvy X%WxS@j^gBFRG93`CB69`&n89yr5+ym delta 11 ScmX@2FhO Date: Mon, 9 Jun 2014 23:35:16 +0000 Subject: [PATCH 177/232] [NTOS:NEWCC] In _MiMapViewOfSegment, if no base address was specified, the granularity should be 64K. svn path=/trunk/; revision=63583 --- reactos/ntoskrnl/cache/section/data.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/reactos/ntoskrnl/cache/section/data.c b/reactos/ntoskrnl/cache/section/data.c index 0156ec69306..63219199558 100644 --- a/reactos/ntoskrnl/cache/section/data.c +++ b/reactos/ntoskrnl/cache/section/data.c @@ -636,7 +636,8 @@ _MiMapViewOfSegment(PMMSUPPORT AddressSpace, &MArea, FALSE, AllocationType, - PAGE_SIZE); + *BaseAddress ? + PAGE_SIZE : MM_ALLOCATION_GRANULARITY); if (!NT_SUCCESS(Status)) { From b8480056d05a1c782a985bf0744a8c8e1724ed39 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Tue, 10 Jun 2014 16:14:12 +0000 Subject: [PATCH 178/232] [SETUPAPI] * Remove exports that do not exist in native. CORE-8174 svn path=/trunk/; revision=63584 --- reactos/dll/win32/setupapi/setupapi.spec | 28 ------------------------ 1 file changed, 28 deletions(-) diff --git a/reactos/dll/win32/setupapi/setupapi.spec b/reactos/dll/win32/setupapi/setupapi.spec index 2a6ad8d47e0..9ca79d212ed 100644 --- a/reactos/dll/win32/setupapi/setupapi.spec +++ b/reactos/dll/win32/setupapi/setupapi.spec @@ -604,31 +604,3 @@ @ stub pSetupVerifyQueuedCatalogs @ stub pSetupWriteLogEntry @ stub pSetupWriteLogError - -# Unknown functions, they are not present in Win2003 SP1 -@ stdcall AssertFail(str long str) -@ stub CM_Remove_Unmarked_Children -@ stub CM_Remove_Unmarked_Children_Ex -@ stub CM_Reset_Children_Marks -@ stub CM_Reset_Children_Marks_Ex -@ stdcall CaptureStringArg(wstr ptr) -@ stdcall DelayedMove(wstr wstr) -@ stub DelimStringToMultiSz -@ stub DestroyTextFileReadBuffer -@ stdcall FileExists(wstr ptr) -@ stub GetNewInfName -@ stdcall GetSetFileTimestamp(wstr ptr ptr ptr long) -@ stub LookUpStringInTable -@ stub MemoryInitialize -@ stub MultiSzFromSearchControl -@ stdcall QueryRegistryValue(long wstr ptr ptr ptr) -@ stub ReadAsciiOrUnicodeTextFile -# Yes, Microsoft really misspelled this one! -@ stdcall RetreiveFileSecurity(wstr ptr) -@ stub SearchForInfFile -@ stdcall StampFileSecurity(wstr ptr) -@ stdcall TakeOwnershipOfFile(wstr) -@ stub pSetupDirectoryIdToPath -@ stub pSetupGetOsLoaderDriveAndPath -@ stub pSetupGetVersionDatum -@ stub pSetupSetSystemSourceFlags From 01a82ca2fc814d69aa5e732ea7a335af23fa672e Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Tue, 10 Jun 2014 16:36:51 +0000 Subject: [PATCH 179/232] [OLEAUT32] * Reorder some exports and remove the ones that do not exist in native. CORE-8174 svn path=/trunk/; revision=63585 --- reactos/dll/win32/oleaut32/oleaut32.spec | 31 ++++-------------------- 1 file changed, 5 insertions(+), 26 deletions(-) diff --git a/reactos/dll/win32/oleaut32/oleaut32.spec b/reactos/dll/win32/oleaut32/oleaut32.spec index a68eb0c4eaf..53ea392e7f6 100644 --- a/reactos/dll/win32/oleaut32/oleaut32.spec +++ b/reactos/dll/win32/oleaut32/oleaut32.spec @@ -140,12 +140,14 @@ 141 stdcall VarAdd(ptr ptr ptr) 142 stdcall VarAnd(ptr ptr ptr) 143 stdcall VarDiv(ptr ptr ptr) -144 stub OACreateTypeLib2 +@ stdcall -private DllCanUnloadNow() +@ stdcall -private DllGetClassObject(ptr ptr ptr) 146 stdcall DispCallFunc(ptr long long long long ptr ptr ptr) 147 stdcall VariantChangeTypeEx(ptr ptr long long long) 148 stdcall SafeArrayPtrOfIndex(ptr ptr ptr) 149 stdcall SysStringByteLen(ptr) 150 stdcall SysAllocStringByteLen(ptr long) +@ stdcall -private DllRegisterServer() 152 stdcall VarEqv(ptr ptr ptr) 153 stdcall VarIdiv(ptr ptr ptr) 154 stdcall VarImp(ptr ptr ptr) @@ -294,6 +296,8 @@ 297 stub LPSAFEARRAY_Unmarshal 298 stdcall VarDecCmpR8(ptr double) 299 stdcall VarCyAdd(int64 int64 ptr) +@ stdcall -private DllUnregisterServer() +301 stub OACreateTypeLib2 303 stdcall VarCyMul(int64 int64 ptr) 304 stdcall VarCyMulI4(int64 long ptr) 305 stdcall VarCySub(int64 int64 ptr) @@ -357,26 +361,6 @@ 377 stdcall VarI1FromUI8(int64 ptr) 378 stdcall VarUI2FromI8(int64 ptr) 379 stdcall VarUI2FromUI8(int64 ptr) -380 stub UserHWND_from_local -381 stub UserHWND_to_local -382 stub UserHWND_free_inst -383 stub UserHWND_free_local -384 stub UserBSTR_from_local -385 stub UserBSTR_to_local -386 stub UserBSTR_free_inst -387 stub UserBSTR_free_local -388 stub UserVARIANT_from_local -389 stub UserVARIANT_to_local -390 stub UserVARIANT_free_inst -391 stub UserVARIANT_free_local -392 stub UserEXCEPINFO_from_local -393 stub UserEXCEPINFO_to_local -394 stub UserEXCEPINFO_free_inst -395 stub UserEXCEPINFO_free_local -396 stub UserMSG_from_local -397 stub UserMSG_to_local -398 stub UserMSG_free_inst -399 stub UserMSG_free_local 401 stdcall OleLoadPictureEx(ptr long long long long long long ptr) 402 stub OleLoadPictureFileEx 411 stdcall SafeArrayCreateVector(long long long) @@ -412,8 +396,3 @@ 441 stdcall VarUI8FromDec(long ptr) 442 stdcall RegisterTypeLibForUser(ptr wstr wstr) 443 stdcall UnRegisterTypeLibForUser(ptr long long long long) - -@ stdcall -private DllCanUnloadNow() -@ stdcall -private DllGetClassObject(ptr ptr ptr) -@ stdcall -private DllRegisterServer() -@ stdcall -private DllUnregisterServer() From 9d7a2a09db9258d4f80191e7e4dfe656af675468 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Tue, 10 Jun 2014 19:49:22 +0000 Subject: [PATCH 180/232] [CONSRV]: Fix erroneous X-offset when copying text lines. svn path=/trunk/; revision=63586 --- reactos/win32ss/user/winsrv/consrv/frontends/gui/text.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/win32ss/user/winsrv/consrv/frontends/gui/text.c b/reactos/win32ss/user/winsrv/consrv/frontends/gui/text.c index b3caf59ef89..078cb40fe03 100644 --- a/reactos/win32ss/user/winsrv/consrv/frontends/gui/text.c +++ b/reactos/win32ss/user/winsrv/consrv/frontends/gui/text.c @@ -203,7 +203,7 @@ CopyLines(PTEXTMODE_SCREEN_BUFFER Buffer, xBeg = (yPos == Begin->Y ? Begin->X : 0); xEnd = (yPos == End->Y ? End->X : Buffer->ScreenBufferSize.X - 1); - ptr = ConioCoordToPointer(Buffer, xBeg, yPos); + ptr = ConioCoordToPointer(Buffer, 0, yPos); /* Copy only the characters, leave attributes alone */ for (xPos = xBeg; (xPos <= xEnd) && (NumChars-- > 0); xPos++) From 12fae91ffcff673dab63bce804c5bc074c77e931 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Tue, 10 Jun 2014 21:35:39 +0000 Subject: [PATCH 181/232] [NET] Implement the /help option for the pause, start and stop commands. svn path=/trunk/; revision=63587 --- .../base/applications/network/net/cmdPause.c | 10 ++++++++++ .../base/applications/network/net/cmdStart.c | 19 ++++++++++++------- .../base/applications/network/net/cmdStop.c | 10 ++++++++++ 3 files changed, 32 insertions(+), 7 deletions(-) diff --git a/reactos/base/applications/network/net/cmdPause.c b/reactos/base/applications/network/net/cmdPause.c index 4ade493b76e..32f87756509 100644 --- a/reactos/base/applications/network/net/cmdPause.c +++ b/reactos/base/applications/network/net/cmdPause.c @@ -15,6 +15,7 @@ INT cmdPause(INT argc, WCHAR **argv) SC_HANDLE hService = NULL; SERVICE_STATUS status; INT nError = 0; + INT i; if (argc != 3) { @@ -22,6 +23,15 @@ INT cmdPause(INT argc, WCHAR **argv) return 1; } + for (i = 2; i < argc; i++) + { + if (_wcsicmp(argv[i], L"/help") == 0) + { + PrintResourceString(IDS_PAUSE_HELP); + return 1; + } + } + hManager = OpenSCManager(NULL, SERVICES_ACTIVE_DATABASE, SC_MANAGER_ENUMERATE_SERVICE); if (hManager == NULL) { diff --git a/reactos/base/applications/network/net/cmdStart.c b/reactos/base/applications/network/net/cmdStart.c index c2da1ce7161..34070584f72 100644 --- a/reactos/base/applications/network/net/cmdStart.c +++ b/reactos/base/applications/network/net/cmdStart.c @@ -162,16 +162,21 @@ done: INT cmdStart(INT argc, WCHAR **argv) { - INT nError = 0; + INT i; if (argc == 2) { - nError = EnumerateRunningServices(); - } - else - { - nError = StartOneService(argc, argv); + return EnumerateRunningServices(); } - return nError; + for (i = 2; i < argc; i++) + { + if (_wcsicmp(argv[i], L"/help") == 0) + { + PrintResourceString(IDS_START_HELP); + return 1; + } + } + + return StartOneService(argc, argv); } diff --git a/reactos/base/applications/network/net/cmdStop.c b/reactos/base/applications/network/net/cmdStop.c index 7938c28eb00..ef30aae270d 100644 --- a/reactos/base/applications/network/net/cmdStop.c +++ b/reactos/base/applications/network/net/cmdStop.c @@ -16,6 +16,7 @@ INT cmdStop(INT argc, WCHAR **argv) SERVICE_STATUS ServiceStatus; DWORD dwError = ERROR_SUCCESS; INT nError = 0; + INT i; if (argc != 3) { @@ -23,6 +24,15 @@ INT cmdStop(INT argc, WCHAR **argv) return 1; } + for (i = 2; i < argc; i++) + { + if (_wcsicmp(argv[i], L"/help") == 0) + { + PrintResourceString(IDS_STOP_HELP); + return 1; + } + } + hManager = OpenSCManagerW(NULL, SERVICES_ACTIVE_DATABASE, SC_MANAGER_ENUMERATE_SERVICE); From afd824501a0c04ca77adb95b3ecfc853117bd37b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Gardou?= Date: Tue, 10 Jun 2014 22:15:57 +0000 Subject: [PATCH 182/232] [CMAKE/RPC] - Disable -Oif flags for generating client/server stubs with widl, except for advapi32 which needs it See CORE-8200 for details svn path=/trunk/; revision=63588 --- reactos/base/services/eventlog/CMakeLists.txt | 3 +++ reactos/base/system/services/CMakeLists.txt | 3 +++ reactos/cmake/widl-support.cmake | 4 ++-- reactos/dll/win32/advapi32/CMakeLists.txt | 3 +++ reactos/dll/win32/lsasrv/CMakeLists.txt | 3 +++ 5 files changed, 14 insertions(+), 2 deletions(-) diff --git a/reactos/base/services/eventlog/CMakeLists.txt b/reactos/base/services/eventlog/CMakeLists.txt index 1f799c78f82..50f0574d2bc 100644 --- a/reactos/base/services/eventlog/CMakeLists.txt +++ b/reactos/base/services/eventlog/CMakeLists.txt @@ -3,6 +3,9 @@ include_directories( ${REACTOS_SOURCE_DIR}/include/reactos/idl ${CMAKE_CURRENT_BINARY_DIR}) +# FIXME: See CORE-8200 +set(IDL_FLAGS ${IDL_FLAGS} -Oif) + add_rpc_files(server ${REACTOS_SOURCE_DIR}/include/reactos/idl/eventlogrpc.idl) list(APPEND SOURCE diff --git a/reactos/base/system/services/CMakeLists.txt b/reactos/base/system/services/CMakeLists.txt index c3ea514db36..6d89fb29441 100644 --- a/reactos/base/system/services/CMakeLists.txt +++ b/reactos/base/system/services/CMakeLists.txt @@ -4,6 +4,9 @@ include_directories( ${REACTOS_SOURCE_DIR}/include/reactos/idl ${CMAKE_CURRENT_BINARY_DIR}) +# FIXME: See CORE-8200 +set(IDL_FLAGS ${IDL_FLAGS} -Oif) + add_rpc_files(server ${REACTOS_SOURCE_DIR}/include/reactos/idl/svcctl.idl) diff --git a/reactos/cmake/widl-support.cmake b/reactos/cmake/widl-support.cmake index 4a93155c45f..71a74b19118 100644 --- a/reactos/cmake/widl-support.cmake +++ b/reactos/cmake/widl-support.cmake @@ -61,10 +61,10 @@ function(add_rpc_files __type) get_defines(DEFINES) # Is it a client or server module? if(__type STREQUAL "server") - set(__server_client -Oif -s -o) + set(__server_client -s -o) set(__suffix _s) elseif(__type STREQUAL "client") - set(__server_client -Oif -c -o) + set(__server_client -c -o) set(__suffix _c) else() message(FATAL_ERROR "Please pass either server or client as argument to add_rpc_files") diff --git a/reactos/dll/win32/advapi32/CMakeLists.txt b/reactos/dll/win32/advapi32/CMakeLists.txt index 20cbef3e218..3dbfacbfb37 100644 --- a/reactos/dll/win32/advapi32/CMakeLists.txt +++ b/reactos/dll/win32/advapi32/CMakeLists.txt @@ -11,6 +11,9 @@ include_directories( ${REACTOS_SOURCE_DIR}/lib/cryptlib ${CMAKE_CURRENT_BINARY_DIR}) +# FIXME: See CORE-8200 +set(IDL_FLAGS ${IDL_FLAGS} -Oif) + add_rpc_files(client ${REACTOS_SOURCE_DIR}/include/reactos/idl/eventlogrpc.idl ${REACTOS_SOURCE_DIR}/include/reactos/idl/lsa.idl diff --git a/reactos/dll/win32/lsasrv/CMakeLists.txt b/reactos/dll/win32/lsasrv/CMakeLists.txt index 523841c7253..02d990dd250 100644 --- a/reactos/dll/win32/lsasrv/CMakeLists.txt +++ b/reactos/dll/win32/lsasrv/CMakeLists.txt @@ -4,6 +4,9 @@ include_directories( ${REACTOS_SOURCE_DIR}/include/reactos/idl ${REACTOS_SOURCE_DIR}/include/reactos/subsys/lsass) +# FIXME: See CORE-8200 +set(IDL_FLAGS ${IDL_FLAGS} -Oif) + add_rpc_files(server ${REACTOS_SOURCE_DIR}/include/reactos/idl/lsa.idl) spec2def(lsasrv.dll lsasrv.spec ADD_IMPORTLIB) From e1149127bf4e0560000cd0c8649d5296c1cec3db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Gardou?= Date: Tue, 10 Jun 2014 22:17:47 +0000 Subject: [PATCH 183/232] Revert "[CMAKE/RPC]" This reverts commit a8356056cb870090a1fb39921e469b8410d36962. svn path=/trunk/; revision=63589 --- reactos/base/services/eventlog/CMakeLists.txt | 3 --- reactos/base/system/services/CMakeLists.txt | 3 --- reactos/cmake/widl-support.cmake | 4 ++-- reactos/dll/win32/advapi32/CMakeLists.txt | 3 --- reactos/dll/win32/lsasrv/CMakeLists.txt | 3 --- 5 files changed, 2 insertions(+), 14 deletions(-) diff --git a/reactos/base/services/eventlog/CMakeLists.txt b/reactos/base/services/eventlog/CMakeLists.txt index 50f0574d2bc..1f799c78f82 100644 --- a/reactos/base/services/eventlog/CMakeLists.txt +++ b/reactos/base/services/eventlog/CMakeLists.txt @@ -3,9 +3,6 @@ include_directories( ${REACTOS_SOURCE_DIR}/include/reactos/idl ${CMAKE_CURRENT_BINARY_DIR}) -# FIXME: See CORE-8200 -set(IDL_FLAGS ${IDL_FLAGS} -Oif) - add_rpc_files(server ${REACTOS_SOURCE_DIR}/include/reactos/idl/eventlogrpc.idl) list(APPEND SOURCE diff --git a/reactos/base/system/services/CMakeLists.txt b/reactos/base/system/services/CMakeLists.txt index 6d89fb29441..c3ea514db36 100644 --- a/reactos/base/system/services/CMakeLists.txt +++ b/reactos/base/system/services/CMakeLists.txt @@ -4,9 +4,6 @@ include_directories( ${REACTOS_SOURCE_DIR}/include/reactos/idl ${CMAKE_CURRENT_BINARY_DIR}) -# FIXME: See CORE-8200 -set(IDL_FLAGS ${IDL_FLAGS} -Oif) - add_rpc_files(server ${REACTOS_SOURCE_DIR}/include/reactos/idl/svcctl.idl) diff --git a/reactos/cmake/widl-support.cmake b/reactos/cmake/widl-support.cmake index 71a74b19118..4a93155c45f 100644 --- a/reactos/cmake/widl-support.cmake +++ b/reactos/cmake/widl-support.cmake @@ -61,10 +61,10 @@ function(add_rpc_files __type) get_defines(DEFINES) # Is it a client or server module? if(__type STREQUAL "server") - set(__server_client -s -o) + set(__server_client -Oif -s -o) set(__suffix _s) elseif(__type STREQUAL "client") - set(__server_client -c -o) + set(__server_client -Oif -c -o) set(__suffix _c) else() message(FATAL_ERROR "Please pass either server or client as argument to add_rpc_files") diff --git a/reactos/dll/win32/advapi32/CMakeLists.txt b/reactos/dll/win32/advapi32/CMakeLists.txt index 3dbfacbfb37..20cbef3e218 100644 --- a/reactos/dll/win32/advapi32/CMakeLists.txt +++ b/reactos/dll/win32/advapi32/CMakeLists.txt @@ -11,9 +11,6 @@ include_directories( ${REACTOS_SOURCE_DIR}/lib/cryptlib ${CMAKE_CURRENT_BINARY_DIR}) -# FIXME: See CORE-8200 -set(IDL_FLAGS ${IDL_FLAGS} -Oif) - add_rpc_files(client ${REACTOS_SOURCE_DIR}/include/reactos/idl/eventlogrpc.idl ${REACTOS_SOURCE_DIR}/include/reactos/idl/lsa.idl diff --git a/reactos/dll/win32/lsasrv/CMakeLists.txt b/reactos/dll/win32/lsasrv/CMakeLists.txt index 02d990dd250..523841c7253 100644 --- a/reactos/dll/win32/lsasrv/CMakeLists.txt +++ b/reactos/dll/win32/lsasrv/CMakeLists.txt @@ -4,9 +4,6 @@ include_directories( ${REACTOS_SOURCE_DIR}/include/reactos/idl ${REACTOS_SOURCE_DIR}/include/reactos/subsys/lsass) -# FIXME: See CORE-8200 -set(IDL_FLAGS ${IDL_FLAGS} -Oif) - add_rpc_files(server ${REACTOS_SOURCE_DIR}/include/reactos/idl/lsa.idl) spec2def(lsasrv.dll lsasrv.spec ADD_IMPORTLIB) From bd4dce67d10631214d26824fcdebfec06e86308b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Gardou?= Date: Tue, 10 Jun 2014 22:17:58 +0000 Subject: [PATCH 184/232] [HIDPARSE] - Use cdecl for variadic function prototype See CORE-6447 svn path=/trunk/; revision=63590 --- reactos/drivers/hid/hidparse/hidparse.c | 2 +- reactos/lib/drivers/hidparser/hidparser.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/reactos/drivers/hid/hidparse/hidparse.c b/reactos/drivers/hid/hidparse/hidparse.c index 0fc78430fb5..6daed49bb56 100644 --- a/reactos/drivers/hid/hidparse/hidparse.c +++ b/reactos/drivers/hid/hidparse/hidparse.c @@ -70,7 +70,7 @@ CopyFunction( } VOID -NTAPI +__cdecl DebugFunction( IN LPCSTR FormatStr, ...) { diff --git a/reactos/lib/drivers/hidparser/hidparser.h b/reactos/lib/drivers/hidparser/hidparser.h index 636fd66c326..581193a319f 100644 --- a/reactos/lib/drivers/hidparser/hidparser.h +++ b/reactos/lib/drivers/hidparser/hidparser.h @@ -17,7 +17,7 @@ typedef PVOID (NTAPI *PHIDPARSER_ALLOC_FUNCTION)(ULONG Size); typedef VOID (NTAPI *PHIDPARSER_FREE_FUNCTION)(PVOID Item); typedef VOID (NTAPI *PHIDPARSER_ZERO_FUNCTION)(PVOID Item, ULONG Size); typedef VOID (NTAPI *PHIDPARSER_COPY_FUNCTION)(PVOID Target, PVOID Source, ULONG Size); -typedef VOID (NTAPI *PHIDPARSER_DEBUG_FUNCTION)(LPCSTR Src, ...); +typedef VOID (__cdecl *PHIDPARSER_DEBUG_FUNCTION)(LPCSTR Src, ...); // // status code From 9a92cc636a2643dc04f537de97eb828ccb71f8ab Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Tue, 10 Jun 2014 22:36:31 +0000 Subject: [PATCH 185/232] [NET] Add the /help option to the helpmsg command too. svn path=/trunk/; revision=63591 --- reactos/base/applications/network/net/cmdHelpMsg.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/reactos/base/applications/network/net/cmdHelpMsg.c b/reactos/base/applications/network/net/cmdHelpMsg.c index 02259a09c8e..8247836b354 100644 --- a/reactos/base/applications/network/net/cmdHelpMsg.c +++ b/reactos/base/applications/network/net/cmdHelpMsg.c @@ -16,6 +16,7 @@ INT cmdHelpMsg(INT argc, WCHAR **argv) LPWSTR endptr; LPWSTR lpBuffer; LONG errNum; + INT i; if (argc < 3) { @@ -23,6 +24,15 @@ INT cmdHelpMsg(INT argc, WCHAR **argv) return 1; } + for (i = 2; i < argc; i++) + { + if (_wcsicmp(argv[i], L"/help") == 0) + { + PrintResourceString(IDS_HELPMSG_HELP); + return 1; + } + } + errNum = wcstol(argv[2], &endptr, 10); if (*endptr != 0) { From fa15740904ee68eabf194ffda379a20966225104 Mon Sep 17 00:00:00 2001 From: James Tabor Date: Wed, 11 Jun 2014 19:48:43 +0000 Subject: [PATCH 186/232] [Win32k] - Apply patch from r63350. Modified so the WM_ACTIVATEAPP before the WM_NC/ACTIVATE call not after. svn path=/trunk/; revision=63592 --- reactos/win32ss/user/ntuser/focus.c | 96 ++++++++++++++++------------- 1 file changed, 52 insertions(+), 44 deletions(-) diff --git a/reactos/win32ss/user/ntuser/focus.c b/reactos/win32ss/user/ntuser/focus.c index bf1a32d259d..c2d39a2340d 100644 --- a/reactos/win32ss/user/ntuser/focus.c +++ b/reactos/win32ss/user/ntuser/focus.c @@ -102,10 +102,12 @@ co_IntSendActivateMessages(PWND WindowPrev, PWND Window, BOOL MouseActivate, BOO PTHREADINFO pti, ptiOld, ptiNew; BOOL InAAPM = FALSE; + //ERR("SendActivateMessages\n"); + + pti = PsGetCurrentThreadWin32Thread(); + if (Window) { - pti = PsGetCurrentThreadWin32Thread(); - UserRefObjectCo(Window, &Ref); if (WindowPrev) UserRefObjectCo(WindowPrev, &RefPrev); @@ -163,56 +165,62 @@ co_IntSendActivateMessages(PWND WindowPrev, PWND Window, BOOL MouseActivate, BOO ExFreePool(phwndTopLevel); } } - //// - OldTID = WindowPrev ? IntGetWndThreadId(WindowPrev) : NULL; - NewTID = IntGetWndThreadId(Window); - ptiOld = WindowPrev ? WindowPrev->head.pti : NULL; - ptiNew = Window->head.pti; + } + //// + OldTID = WindowPrev ? IntGetWndThreadId(WindowPrev) : NULL; + NewTID = Window ? IntGetWndThreadId(Window) : NULL; + ptiOld = WindowPrev ? WindowPrev->head.pti : NULL; + ptiNew = Window ? Window->head.pti : NULL; - //ERR("SendActivateMessage Old -> %x, New -> %x\n", OldTID, NewTID); + //ERR("SendActivateMessage Old -> %x, New -> %x\n", OldTID, NewTID); - if (!(pti->TIF_flags & TIF_INACTIVATEAPPMSG) && - (!WindowPrev || OldTID != NewTID) ) + if (!(pti->TIF_flags & TIF_INACTIVATEAPPMSG) && + (!WindowPrev || OldTID != NewTID) ) + { + PWND cWindow; + HWND *List, *phWnd; + + List = IntWinListChildren(UserGetDesktopWindow()); + if ( List ) { - PWND cWindow; - HWND *List, *phWnd; - - List = IntWinListChildren(UserGetDesktopWindow()); - if ( List ) + if ( OldTID ) { - if ( OldTID ) + ptiOld->TIF_flags |= TIF_INACTIVATEAPPMSG; + // Note: Do not set pci flags, this does crash! + for (phWnd = List; *phWnd; ++phWnd) { - ptiOld->TIF_flags |= TIF_INACTIVATEAPPMSG; - // Note: Do not set pci flags, this does crash! - for (phWnd = List; *phWnd; ++phWnd) - { - cWindow = ValidateHwndNoErr(*phWnd); - if (cWindow && cWindow->head.pti == ptiOld) - { // FALSE if the window is being deactivated, - // ThreadId that owns the window being activated. - co_IntSendMessageNoWait(*phWnd, WM_ACTIVATEAPP, FALSE, (LPARAM)NewTID); - } - } - ptiOld->TIF_flags &= ~TIF_INACTIVATEAPPMSG; - } - if ( NewTID ) - { //// Prevents a resource crash due to reentrance! - InAAPM = TRUE; - pti->TIF_flags |= TIF_INACTIVATEAPPMSG; - //// - for (phWnd = List; *phWnd; ++phWnd) - { - cWindow = ValidateHwndNoErr(*phWnd); - if (cWindow && cWindow->head.pti == ptiNew) - { // TRUE if the window is being activated, - // ThreadId that owns the window being deactivated. - co_IntSendMessageNoWait(*phWnd, WM_ACTIVATEAPP, TRUE, (LPARAM)OldTID); - } + cWindow = ValidateHwndNoErr(*phWnd); + if (cWindow && cWindow->head.pti == ptiOld) + { // FALSE if the window is being deactivated, + // ThreadId that owns the window being activated. + //ERR("SendActivateMessage Old\n"); + co_IntSendMessageNoWait(*phWnd, WM_ACTIVATEAPP, FALSE, (LPARAM)NewTID); } } - ExFreePoolWithTag(List, USERTAG_WINDOWLIST); + ptiOld->TIF_flags &= ~TIF_INACTIVATEAPPMSG; } + if ( NewTID ) + { //// Prevents a resource crash due to reentrance! + InAAPM = TRUE; + pti->TIF_flags |= TIF_INACTIVATEAPPMSG; + //// + for (phWnd = List; *phWnd; ++phWnd) + { + cWindow = ValidateHwndNoErr(*phWnd); + if (cWindow && cWindow->head.pti == ptiNew) + { // TRUE if the window is being activated, + // ThreadId that owns the window being deactivated. + //ERR("SendActivateMessage New\n"); + co_IntSendMessageNoWait(*phWnd, WM_ACTIVATEAPP, TRUE, (LPARAM)OldTID); + } + } + } + ExFreePoolWithTag(List, USERTAG_WINDOWLIST); } + } + + if (Window) + { if (WindowPrev) UserDerefObjectCo(WindowPrev); // Now allow the previous window to die. @@ -533,7 +541,7 @@ IntFindChildWindowToOwner(PWND Root, PWND Owner) for(Child = Root->spwndChild; Child; Child = Child->spwndNext) { - OwnerWnd = Child->spwndOwner; + OwnerWnd = Child->spwndOwner; if(!OwnerWnd) continue; From 6798413bf55ef293cc86e3c1b91c45b205e9eb10 Mon Sep 17 00:00:00 2001 From: James Tabor Date: Fri, 13 Jun 2014 01:40:59 +0000 Subject: [PATCH 187/232] [Win32k] - Test for disabled windows, fix CORE-8089 and see CORE-6651. svn path=/trunk/; revision=63593 --- reactos/win32ss/user/ntuser/msgqueue.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/win32ss/user/ntuser/msgqueue.c b/reactos/win32ss/user/ntuser/msgqueue.c index e6f31cb62b4..26f0cf41ee0 100644 --- a/reactos/win32ss/user/ntuser/msgqueue.c +++ b/reactos/win32ss/user/ntuser/msgqueue.c @@ -1369,7 +1369,7 @@ BOOL co_IntProcessMouseMessage(MSG* msg, BOOL* RemoveMessages, UINT first, UINT } else { - pwndMsg = co_WinPosWindowFromPoint(NULL, &msg->pt, &hittest, TRUE); + pwndMsg = co_WinPosWindowFromPoint(NULL, &msg->pt, &hittest, FASLE);//TRUE); } TRACE("Got mouse message for %p, hittest: 0x%x\n", msg->hwnd, hittest); From a9746d12cb1b11f02beec892bd9cdb2c91c59332 Mon Sep 17 00:00:00 2001 From: James Tabor Date: Fri, 13 Jun 2014 01:45:44 +0000 Subject: [PATCH 188/232] - fix the fix. svn path=/trunk/; revision=63594 --- reactos/win32ss/user/ntuser/msgqueue.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/win32ss/user/ntuser/msgqueue.c b/reactos/win32ss/user/ntuser/msgqueue.c index 26f0cf41ee0..94b2b39639b 100644 --- a/reactos/win32ss/user/ntuser/msgqueue.c +++ b/reactos/win32ss/user/ntuser/msgqueue.c @@ -1369,7 +1369,7 @@ BOOL co_IntProcessMouseMessage(MSG* msg, BOOL* RemoveMessages, UINT first, UINT } else { - pwndMsg = co_WinPosWindowFromPoint(NULL, &msg->pt, &hittest, FASLE);//TRUE); + pwndMsg = co_WinPosWindowFromPoint(NULL, &msg->pt, &hittest, FALSE);//TRUE); } TRACE("Got mouse message for %p, hittest: 0x%x\n", msg->hwnd, hittest); From 50e8eb2f876e9269fcfebda27df1af8477d35519 Mon Sep 17 00:00:00 2001 From: James Tabor Date: Fri, 13 Jun 2014 01:49:29 +0000 Subject: [PATCH 189/232] [ConSrv] - Move CreateSysMenu after creating the main window. This is a hax fix for CORE-8129. svn path=/trunk/; revision=63595 --- reactos/win32ss/user/winsrv/consrv/frontends/gui/conwnd.c | 5 +++-- reactos/win32ss/user/winsrv/consrv/frontends/gui/guiterm.c | 5 ++++- reactos/win32ss/user/winsrv/init.c | 1 + 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/reactos/win32ss/user/winsrv/consrv/frontends/gui/conwnd.c b/reactos/win32ss/user/winsrv/consrv/frontends/gui/conwnd.c index acc83a41ee6..71aa6d76325 100644 --- a/reactos/win32ss/user/winsrv/consrv/frontends/gui/conwnd.c +++ b/reactos/win32ss/user/winsrv/consrv/frontends/gui/conwnd.c @@ -250,7 +250,8 @@ AppendMenuItems(HMENU hMenu, } while (!(Items[i].uID == 0 && Items[i].SubMenu == NULL && Items[i].wCmdID == 0)); } -static VOID +//static +VOID CreateSysMenu(HWND hWnd) { MENUITEMINFOW mii; @@ -587,7 +588,7 @@ OnNcCreate(HWND hWnd, LPCREATESTRUCTW Create) SetWindowLongPtrW(GuiData->hWindow, GWLP_USERDATA, (DWORD_PTR)GuiData); SetTimer(GuiData->hWindow, CONGUI_UPDATE_TIMER, CONGUI_UPDATE_TIME, NULL); - CreateSysMenu(GuiData->hWindow); + //CreateSysMenu(GuiData->hWindow); DPRINT("OnNcCreate - setting start event\n"); SetEvent(GuiData->hGuiInitEvent); diff --git a/reactos/win32ss/user/winsrv/consrv/frontends/gui/guiterm.c b/reactos/win32ss/user/winsrv/consrv/frontends/gui/guiterm.c index 023456c179a..a73b5223a9b 100644 --- a/reactos/win32ss/user/winsrv/consrv/frontends/gui/guiterm.c +++ b/reactos/win32ss/user/winsrv/consrv/frontends/gui/guiterm.c @@ -140,7 +140,8 @@ InvalidateCell(PGUI_CONSOLE_DATA GuiData, VOID SwitchFullScreen(PGUI_CONSOLE_DATA GuiData, BOOL FullScreen); - +VOID +CreateSysMenu(HWND hWnd); static LRESULT CALLBACK GuiConsoleNotifyWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { @@ -199,6 +200,8 @@ GuiConsoleNotifyWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) GuiConsoleMoveWindow(GuiData); // FIXME: This MUST be done via the CreateWindowExW call. SendMessageW(GuiData->hWindow, PM_RESIZE_TERMINAL, 0, 0); + CreateSysMenu(GuiData->hWindow); + /* Switch to full-screen mode if necessary */ // FIXME: Move elsewhere, it cause misdrawings of the window. if (GuiData->GuiInfo.FullScreen) SwitchFullScreen(GuiData, TRUE); diff --git a/reactos/win32ss/user/winsrv/init.c b/reactos/win32ss/user/winsrv/init.c index 877cdc3f8d2..4b3ec92d635 100644 --- a/reactos/win32ss/user/winsrv/init.c +++ b/reactos/win32ss/user/winsrv/init.c @@ -32,6 +32,7 @@ KeyboardHookProc(int nCode, WPARAM wParam, LPARAM lParam) { + DPRINT1("KeyboardHookProc Processing!\n"); return CallNextHookEx(hhk, nCode, wParam, lParam); } /*** END - HACK from win32csr... ***/ From 5e52a82ae06b9b518b10afd2c0013ff1052f2a14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Fri, 13 Jun 2014 23:36:29 +0000 Subject: [PATCH 190/232] [EXPLORER]: Remove some painting hack from revision 36668 . svn path=/trunk/; revision=63596 --- reactos/base/shell/explorer/shell/mainframe.cpp | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/reactos/base/shell/explorer/shell/mainframe.cpp b/reactos/base/shell/explorer/shell/mainframe.cpp index 748be6b8239..dd8618a7561 100644 --- a/reactos/base/shell/explorer/shell/mainframe.cpp +++ b/reactos/base/shell/explorer/shell/mainframe.cpp @@ -332,15 +332,8 @@ bool MainFrameBase::ProcessMessage(UINT nmsg, WPARAM wparam, LPARAM lparam, LRES break; case WM_SIZE: { -#ifdef __REACTOS__ ///@todo Work around to display rebar in ROS (with flickering) as long as the control isn't fixed - int height = SendMessage(_hwndrebar, RB_GETBARHEIGHT, 0, 0); - MoveWindow(_hwndrebar, 0, 0, LOWORD(lparam), height, TRUE); -#else - resize_frame(LOWORD(lparam), HIWORD(lparam)); - SendMessage(_hwndrebar, WM_SIZE, 0, 0); -#endif - - + resize_frame(LOWORD(lparam), HIWORD(lparam)); + SendMessage(_hwndrebar, WM_SIZE, 0, 0); break;} // do not pass message to DefFrameProc case WM_GETMINMAXINFO: { @@ -769,13 +762,12 @@ MDIMainFrame::MDIMainFrame(HWND hwnd) extraBtns.iBitmap = 8; SendMessage(_hextrabar, TB_INSERTBUTTON, INT_MAX, (LPARAM)&extraBtns); } -#ifndef __REACTOS__ // don't insert reg button for ROS. Regedit should be used. + // insert Registry button extraBtns.iString = SendMessage(_hextrabar, TB_ADDSTRING, 0, (LPARAM)TEXT("Reg.\0")); extraBtns.idCommand = ID_DRIVE_REGISTRY; extraBtns.iBitmap = 9; SendMessage(_hextrabar, TB_INSERTBUTTON, INT_MAX, (LPARAM)&extraBtns); -#endif #ifdef _DEBUG // insert FAT direct file system access button From 9955f52225619f270dacd56d597bd52355a88b25 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Sun, 15 Jun 2014 12:02:08 +0000 Subject: [PATCH 191/232] [USETUP] Re-enable scrolling through multiple disks and support logical partitions. svn path=/trunk/; revision=63597 --- reactos/base/setup/usetup/partlist.c | 130 +++++++++++++-------------- 1 file changed, 64 insertions(+), 66 deletions(-) diff --git a/reactos/base/setup/usetup/partlist.c b/reactos/base/setup/usetup/partlist.c index fd6c6137477..0e28213e995 100644 --- a/reactos/base/setup/usetup/partlist.c +++ b/reactos/base/setup/usetup/partlist.c @@ -2013,15 +2013,15 @@ BOOL ScrollDownPartitionList( PPARTLIST List) { -// PDISKENTRY DiskEntry; + PLIST_ENTRY DiskListEntry; + PLIST_ENTRY PartListEntry; + PDISKENTRY DiskEntry; PPARTENTRY PartEntry; - PLIST_ENTRY Entry; - /* Check for empty disks */ + /* Fail, if no disks are available */ if (IsListEmpty(&List->DiskListHead)) return FALSE; - /* Check for next usable entry on current disk */ if (List->CurrentPartition != NULL) { @@ -2029,21 +2029,21 @@ ScrollDownPartitionList( { /* Logical partition */ - Entry = List->CurrentPartition->ListEntry.Flink; - if (Entry != &List->CurrentDisk->LogicalPartListHead) + PartListEntry = List->CurrentPartition->ListEntry.Flink; + if (PartListEntry != &List->CurrentDisk->LogicalPartListHead) { /* Next logical partition */ - PartEntry = CONTAINING_RECORD(Entry, PARTENTRY, ListEntry); + PartEntry = CONTAINING_RECORD(PartListEntry, PARTENTRY, ListEntry); List->CurrentPartition = PartEntry; return TRUE; } else { - Entry = List->CurrentDisk->ExtendedPartition->ListEntry.Flink; - if (Entry != &List->CurrentDisk->PrimaryPartListHead) + PartListEntry = List->CurrentDisk->ExtendedPartition->ListEntry.Flink; + if (PartListEntry != &List->CurrentDisk->PrimaryPartListHead) { - PartEntry = CONTAINING_RECORD(Entry, PARTENTRY, ListEntry); + PartEntry = CONTAINING_RECORD(PartListEntry, PARTENTRY, ListEntry); List->CurrentPartition = PartEntry; return TRUE; @@ -2057,10 +2057,10 @@ ScrollDownPartitionList( if (IsContainerPartition(List->CurrentPartition->PartitionType)) { /* First logical partition */ - Entry = List->CurrentDisk->LogicalPartListHead.Flink; - if (Entry != &List->CurrentDisk->LogicalPartListHead) + PartListEntry = List->CurrentDisk->LogicalPartListHead.Flink; + if (PartListEntry != &List->CurrentDisk->LogicalPartListHead) { - PartEntry = CONTAINING_RECORD(Entry, PARTENTRY, ListEntry); + PartEntry = CONTAINING_RECORD(PartListEntry, PARTENTRY, ListEntry); List->CurrentPartition = PartEntry; return TRUE; @@ -2069,10 +2069,10 @@ ScrollDownPartitionList( else { /* Next primary partition */ - Entry = List->CurrentPartition->ListEntry.Flink; - if (Entry != &List->CurrentDisk->PrimaryPartListHead) + PartListEntry = List->CurrentPartition->ListEntry.Flink; + if (PartListEntry != &List->CurrentDisk->PrimaryPartListHead) { - PartEntry = CONTAINING_RECORD(Entry, PARTENTRY, ListEntry); + PartEntry = CONTAINING_RECORD(PartListEntry, PARTENTRY, ListEntry); List->CurrentPartition = PartEntry; return TRUE; @@ -2081,32 +2081,24 @@ ScrollDownPartitionList( } } - DPRINT1("TODO: Check the next drive!\n"); - -#if 0 - /* Check for first usable entry on next disk */ - if (List->CurrentDisk != NULL) + /* Search for the first partition entry on the next disk */ + DiskListEntry = List->CurrentDisk->ListEntry.Flink; + while (DiskListEntry != &List->DiskListHead) { - Entry1 = List->CurrentDisk->ListEntry.Flink; - while (Entry1 != &List->DiskListHead) + DiskEntry = CONTAINING_RECORD(DiskListEntry, DISKENTRY, ListEntry); + + PartListEntry = DiskEntry->PrimaryPartListHead.Flink; + if (PartListEntry != &DiskEntry->PrimaryPartListHead) { - DiskEntry = CONTAINING_RECORD(Entry1, DISKENTRY, ListEntry); + PartEntry = CONTAINING_RECORD(PartListEntry, PARTENTRY, ListEntry); - Entry2 = DiskEntry->PartListHead.Flink; - if (Entry2 != &DiskEntry->PartListHead) - { - PartEntry = CONTAINING_RECORD(Entry2, PARTENTRY, ListEntry); - - List->CurrentDisk = DiskEntry; - List->CurrentPartition = PartEntry; - DrawPartitionList(List); - return; - } - - Entry1 = Entry1->Flink; + List->CurrentDisk = DiskEntry; + List->CurrentPartition = PartEntry; + return TRUE; } + + DiskListEntry = DiskListEntry->Flink; } -#endif return FALSE; } @@ -2116,11 +2108,12 @@ BOOL ScrollUpPartitionList( PPARTLIST List) { -// PDISKENTRY DiskEntry; + PLIST_ENTRY DiskListEntry; + PLIST_ENTRY PartListEntry; + PDISKENTRY DiskEntry; PPARTENTRY PartEntry; - PLIST_ENTRY Entry; - /* Check for empty disks */ + /* Fail, if no disks are available */ if (IsListEmpty(&List->DiskListHead)) return FALSE; @@ -2130,11 +2123,11 @@ ScrollUpPartitionList( if (List->CurrentPartition->LogicalPartition) { /* Logical partition */ - Entry = List->CurrentPartition->ListEntry.Blink; - if (Entry != &List->CurrentDisk->LogicalPartListHead) + PartListEntry = List->CurrentPartition->ListEntry.Blink; + if (PartListEntry != &List->CurrentDisk->LogicalPartListHead) { /* Previous logical partition */ - PartEntry = CONTAINING_RECORD(Entry, PARTENTRY, ListEntry); + PartEntry = CONTAINING_RECORD(PartListEntry, PARTENTRY, ListEntry); } else { @@ -2149,15 +2142,15 @@ ScrollUpPartitionList( { /* Primary or extended partition */ - Entry = List->CurrentPartition->ListEntry.Blink; - if (Entry != &List->CurrentDisk->PrimaryPartListHead) + PartListEntry = List->CurrentPartition->ListEntry.Blink; + if (PartListEntry != &List->CurrentDisk->PrimaryPartListHead) { - PartEntry = CONTAINING_RECORD(Entry, PARTENTRY, ListEntry); + PartEntry = CONTAINING_RECORD(PartListEntry, PARTENTRY, ListEntry); if (IsContainerPartition(PartEntry->PartitionType)) { - Entry = List->CurrentDisk->LogicalPartListHead.Blink; - PartEntry = CONTAINING_RECORD(Entry, PARTENTRY, ListEntry); + PartListEntry = List->CurrentDisk->LogicalPartListHead.Blink; + PartEntry = CONTAINING_RECORD(PartListEntry, PARTENTRY, ListEntry); } List->CurrentPartition = PartEntry; @@ -2167,34 +2160,39 @@ ScrollUpPartitionList( } } - DPRINT1("TODO: Check the previous drive!\n"); - -#if 0 - /* check for last usable entry on previous disk */ - if (List->CurrentDisk != NULL) + /* Search for the last partition entry on the previous disk */ + DiskListEntry = List->CurrentDisk->ListEntry.Blink; + while (DiskListEntry != &List->DiskListHead) { - Entry1 = List->CurrentDisk->ListEntry.Blink; - while (Entry1 != &List->DiskListHead) + DiskEntry = CONTAINING_RECORD(DiskListEntry, DISKENTRY, ListEntry); + + PartListEntry = DiskEntry->PrimaryPartListHead.Blink; + if (PartListEntry != &DiskEntry->PrimaryPartListHead) { - DiskEntry = CONTAINING_RECORD(Entry1, DISKENTRY, ListEntry); + PartEntry = CONTAINING_RECORD(PartListEntry, PARTENTRY, ListEntry); - Entry2 = DiskEntry->PrimaryPartListHead.Blink; - if (Entry2 != &DiskEntry->PrimaryPartListHead) + if (IsContainerPartition(PartEntry->PartitionType)) { - PartEntry = CONTAINING_RECORD(Entry2, PARTENTRY, ListEntry); + PartListEntry = DiskEntry->LogicalPartListHead.Blink; + if (PartListEntry != &DiskEntry->LogicalPartListHead) + { + PartEntry = CONTAINING_RECORD(PartListEntry, PARTENTRY, ListEntry); + List->CurrentDisk = DiskEntry; + List->CurrentPartition = PartEntry; + return TRUE; + } + } + else + { List->CurrentDisk = DiskEntry; List->CurrentPartition = PartEntry; - - /* Draw partition list and return */ - DrawPartitionList(List); - return; + return TRUE; } - - Entry1 = Entry1->Blink; } + + DiskListEntry = DiskListEntry->Blink; } -#endif return FALSE; } From 422d0d9ca3e94c858cb38d489496edb76bbdca6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Sun, 15 Jun 2014 14:59:26 +0000 Subject: [PATCH 192/232] [CONSRV]: Add information info for the changes of r63595. svn path=/trunk/; revision=63598 --- reactos/win32ss/user/winsrv/consrv/frontends/gui/conwnd.c | 1 + reactos/win32ss/user/winsrv/consrv/frontends/gui/guiterm.c | 1 + 2 files changed, 2 insertions(+) diff --git a/reactos/win32ss/user/winsrv/consrv/frontends/gui/conwnd.c b/reactos/win32ss/user/winsrv/consrv/frontends/gui/conwnd.c index 71aa6d76325..5e04d1e3d7b 100644 --- a/reactos/win32ss/user/winsrv/consrv/frontends/gui/conwnd.c +++ b/reactos/win32ss/user/winsrv/consrv/frontends/gui/conwnd.c @@ -588,6 +588,7 @@ OnNcCreate(HWND hWnd, LPCREATESTRUCTW Create) SetWindowLongPtrW(GuiData->hWindow, GWLP_USERDATA, (DWORD_PTR)GuiData); SetTimer(GuiData->hWindow, CONGUI_UPDATE_TIMER, CONGUI_UPDATE_TIME, NULL); + // FIXME: HACK: Potential HACK for CORE-8129; see revision 63595. //CreateSysMenu(GuiData->hWindow); DPRINT("OnNcCreate - setting start event\n"); diff --git a/reactos/win32ss/user/winsrv/consrv/frontends/gui/guiterm.c b/reactos/win32ss/user/winsrv/consrv/frontends/gui/guiterm.c index a73b5223a9b..9479917c4ea 100644 --- a/reactos/win32ss/user/winsrv/consrv/frontends/gui/guiterm.c +++ b/reactos/win32ss/user/winsrv/consrv/frontends/gui/guiterm.c @@ -200,6 +200,7 @@ GuiConsoleNotifyWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) GuiConsoleMoveWindow(GuiData); // FIXME: This MUST be done via the CreateWindowExW call. SendMessageW(GuiData->hWindow, PM_RESIZE_TERMINAL, 0, 0); + // FIXME: HACK: Potential HACK for CORE-8129; see revision 63595. CreateSysMenu(GuiData->hWindow); /* Switch to full-screen mode if necessary */ From 6d276265c1f5b7b0ebde14fc16a43b157d3e4d25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Sun, 15 Jun 2014 17:47:40 +0000 Subject: [PATCH 193/232] [TASKMGR]: Use the EndTask API to kill tasks. svn path=/trunk/; revision=63599 --- reactos/base/applications/taskmgr/applpage.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/reactos/base/applications/taskmgr/applpage.c b/reactos/base/applications/taskmgr/applpage.c index f9c2949603e..5eabd19eeb6 100644 --- a/reactos/base/applications/taskmgr/applpage.c +++ b/reactos/base/applications/taskmgr/applpage.c @@ -869,6 +869,9 @@ void ApplicationPage_OnEndTask(void) LV_ITEM item; int i; + /* Trick: on Windows, pressing the CTRL key forces the task to be ended */ + BOOL ForceEndTask = !!(GetKeyState(VK_CONTROL) & 0x8000); + for (i=0; ihWnd, WM_CLOSE, 0, 0); + EndTask(pAPLI->hWnd, 0, ForceEndTask); } } } From 8c1cde9a6ac503fe73b35767fdd3b0c8850b862e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Sun, 15 Jun 2014 19:28:41 +0000 Subject: [PATCH 194/232] [CSRSRV] - Cleanup CSRSRV from the very last remnants of CsrEnumProcesses i.e. the old & buggy way of shutdowning process (lots of work must be done in winsrv side). - Fixup FindProcessForShutdown (reenable commented code in it, and set a proper status error code if CsrImpersonateClient call fails). svn path=/trunk/; revision=63600 --- reactos/subsystems/win32/csrsrv/api.h | 2 - reactos/subsystems/win32/csrsrv/csrsrv.spec | 1 - reactos/subsystems/win32/csrsrv/procsup.c | 305 +++++++------------- 3 files changed, 106 insertions(+), 202 deletions(-) diff --git a/reactos/subsystems/win32/csrsrv/api.h b/reactos/subsystems/win32/csrsrv/api.h index bf83165c90a..81b979a2315 100644 --- a/reactos/subsystems/win32/csrsrv/api.h +++ b/reactos/subsystems/win32/csrsrv/api.h @@ -153,8 +153,6 @@ NTSTATUS NTAPI CsrInitializeProcessStructure(VOID); -// NTSTATUS WINAPI CsrEnumProcesses(CSRSS_ENUM_PROCESS_PROC EnumProc, -// PVOID Context); PCSR_THREAD NTAPI CsrLocateThreadInProcess(IN PCSR_PROCESS CsrProcess OPTIONAL, diff --git a/reactos/subsystems/win32/csrsrv/csrsrv.spec b/reactos/subsystems/win32/csrsrv/csrsrv.spec index 2f968e6ebad..218703d1023 100644 --- a/reactos/subsystems/win32/csrsrv/csrsrv.spec +++ b/reactos/subsystems/win32/csrsrv/csrsrv.spec @@ -12,7 +12,6 @@ @ stdcall CsrDereferenceWait(ptr) @ stdcall CsrDestroyProcess(ptr long) @ stdcall CsrDestroyThread(ptr) -;@ stdcall CsrEnumProcesses(ptr ptr) ;;;;;;; Temporary hack used in win32csr, to be removed @ stdcall CsrExecServerThread(ptr long) @ stdcall CsrGetProcessLuid(ptr ptr) @ stdcall CsrImpersonateClient(ptr) diff --git a/reactos/subsystems/win32/csrsrv/procsup.c b/reactos/subsystems/win32/csrsrv/procsup.c index 451f2697d45..af89f6e97d9 100644 --- a/reactos/subsystems/win32/csrsrv/procsup.c +++ b/reactos/subsystems/win32/csrsrv/procsup.c @@ -96,109 +96,6 @@ CsrSetToShutdownPriority(VOID) } } -/*++ - * @name FindProcessForShutdown - * - * The FindProcessForShutdown routine returns a CSR Process which is ready - * to be shutdown, and sets the appropriate shutdown flags for it. - * - * @param CallerLuid - * Pointer to the LUID of the CSR Process calling this routine. - * - * @return Pointer to a CSR Process which is ready to be shutdown. - * - * @remarks None. - * - *--*/ -PCSR_PROCESS -NTAPI -FindProcessForShutdown(IN PLUID CallerLuid) -{ - PCSR_PROCESS CsrProcess, ReturnCsrProcess = NULL; - // PCSR_THREAD CsrThread; - NTSTATUS Status; - ULONG Level = 0; - LUID ProcessLuid; - LUID SystemLuid = SYSTEM_LUID; - // BOOLEAN IsSystemLuid = FALSE, IsOurLuid = FALSE; - PLIST_ENTRY NextEntry; - - /* Set the List Pointers */ - NextEntry = CsrRootProcess->ListLink.Flink; - while (NextEntry != &CsrRootProcess->ListLink) - { - /* Get the process */ - CsrProcess = CONTAINING_RECORD(NextEntry, CSR_PROCESS, ListLink); - - /* Move to the next entry */ - NextEntry = NextEntry->Flink; - - /* Skip this process if it's already been processed */ - if (CsrProcess->Flags & CsrProcessSkipShutdown) continue; - - /* Get the LUID of this Process */ - Status = CsrGetProcessLuid(CsrProcess->ProcessHandle, &ProcessLuid); - - /* Check if we didn't get access to the LUID */ - if (Status == STATUS_ACCESS_DENIED) - { - /* FIXME: Check if we have any threads */ -/* - /\* Check if we have any threads *\/ - if (CsrProcess->ThreadCount) - { - /\* Impersonate one of the threads and retry *\/ - CsrThread = CONTAINING_RECORD(CsrProcess->ThreadList.Flink, - CSR_THREAD, - Link); - CsrImpersonateClient(CsrThread); - Status = CsrGetProcessLuid(NULL, &ProcessLuid); - CsrRevertToSelf(); - } -*/ - } - - if (!NT_SUCCESS(Status)) - { - /* We didn't have access, so skip it */ - CsrProcess->Flags |= CsrProcessSkipShutdown; - continue; - } - - /* Check if this is the System LUID */ - if ((/*IsSystemLuid =*/ RtlEqualLuid(&ProcessLuid, &SystemLuid))) - { - /* Mark this process */ - CsrProcess->ShutdownFlags |= CsrShutdownSystem; - } - else if (!(/*IsOurLuid =*/ RtlEqualLuid(&ProcessLuid, CallerLuid))) - { - /* Our LUID doesn't match with the caller's */ - CsrProcess->ShutdownFlags |= CsrShutdownOther; - } - - /* Check if we're past the previous level */ - // FIXME: if ((CsrProcess->ShutdownLevel > Level) || !(ReturnCsrProcess)) - if (CsrProcess->ShutdownLevel > Level /* || !ReturnCsrProcess */) - { - /* Update the level */ - Level = CsrProcess->ShutdownLevel; - - /* Set the final process */ - ReturnCsrProcess = CsrProcess; - } - } - - /* Check if we found a process */ - if (ReturnCsrProcess) - { - /* Skip this one next time */ - ReturnCsrProcess->Flags |= CsrProcessSkipShutdown; - } - - return ReturnCsrProcess; -} - /*++ * @name CsrProcessRefcountZero * @@ -1243,6 +1140,110 @@ CsrSetForegroundPriority(IN PCSR_PROCESS CsrProcess) sizeof(PriorityClass)); } +/*++ + * @name FindProcessForShutdown + * + * The FindProcessForShutdown routine returns a CSR Process which is ready + * to be shutdown, and sets the appropriate shutdown flags for it. + * + * @param CallerLuid + * Pointer to the LUID of the CSR Process calling this routine. + * + * @return Pointer to a CSR Process which is ready to be shutdown. + * + * @remarks None. + * + *--*/ +PCSR_PROCESS +NTAPI +FindProcessForShutdown(IN PLUID CallerLuid) +{ + PCSR_PROCESS CsrProcess, ReturnCsrProcess = NULL; + PCSR_THREAD CsrThread; + NTSTATUS Status; + ULONG Level = 0; + LUID ProcessLuid; + LUID SystemLuid = SYSTEM_LUID; + PLIST_ENTRY NextEntry; + + /* Set the List Pointers */ + NextEntry = CsrRootProcess->ListLink.Flink; + while (NextEntry != &CsrRootProcess->ListLink) + { + /* Get the process */ + CsrProcess = CONTAINING_RECORD(NextEntry, CSR_PROCESS, ListLink); + + /* Move to the next entry */ + NextEntry = NextEntry->Flink; + + /* Skip this process if it's already been processed */ + if (CsrProcess->Flags & CsrProcessSkipShutdown) continue; + + /* Get the LUID of this process */ + Status = CsrGetProcessLuid(CsrProcess->ProcessHandle, &ProcessLuid); + + /* Check if we didn't get access to the LUID */ + if (Status == STATUS_ACCESS_DENIED) + { + /* Check if we have any threads */ + if (CsrProcess->ThreadCount) + { + /* Impersonate one of the threads and retry */ + CsrThread = CONTAINING_RECORD(CsrProcess->ThreadList.Flink, + CSR_THREAD, + Link); + if (CsrImpersonateClient(CsrThread)) + { + Status = CsrGetProcessLuid(NULL, &ProcessLuid); + CsrRevertToSelf(); + } + else + { + Status = STATUS_BAD_IMPERSONATION_LEVEL; + } + } + } + + if (!NT_SUCCESS(Status)) + { + /* We didn't have access, so skip it */ + CsrProcess->Flags |= CsrProcessSkipShutdown; + continue; + } + + /* Check if this is the System LUID */ + if (RtlEqualLuid(&ProcessLuid, &SystemLuid)) + { + /* Mark this process */ + CsrProcess->ShutdownFlags |= CsrShutdownSystem; + } + else if (!RtlEqualLuid(&ProcessLuid, CallerLuid)) + { + /* Our LUID doesn't match with the caller's */ + CsrProcess->ShutdownFlags |= CsrShutdownOther; + } + + /* Check if we're past the previous level */ + if ((CsrProcess->ShutdownLevel > Level) || !ReturnCsrProcess) + { + /* Update the level */ + Level = CsrProcess->ShutdownLevel; + + /* Set the final process */ + ReturnCsrProcess = CsrProcess; + } + } + + /* Check if we found a process */ + if (ReturnCsrProcess) + { + /* Skip this one next time */ + ReturnCsrProcess->Flags |= CsrProcessSkipShutdown; + } + + return ReturnCsrProcess; +} + /*++ * @name CsrShutdownProcesses * @implemented NT4 @@ -1273,7 +1274,7 @@ CsrShutdownProcesses(IN PLUID CallerLuid, BOOLEAN FirstTry; ULONG i; PCSR_SERVER_DLL ServerDll; - ULONG Result = 0; /* Intentionally invalid enumeratee to silence compiler warning */ + ULONG Result = 0; /* Acquire process lock */ CsrAcquireProcessLock(); @@ -1353,7 +1354,7 @@ CsrShutdownProcesses(IN PLUID CallerLuid, } /* No matches during the first try, so loop again */ - if ((FirstTry) && (Result == CsrShutdownNonCsrProcess)) + if (FirstTry && (Result == CsrShutdownNonCsrProcess)) { FirstTry = FALSE; continue; @@ -1378,100 +1379,6 @@ Quickie: return Status; } -/* HACK: Temporary hack. This is really "CsrShutdownProcesses", mostly. Used by winsrv */ -#if 0 -NTSTATUS -WINAPI -CsrEnumProcesses(IN CSRSS_ENUM_PROCESS_PROC EnumProc, - IN PVOID Context) -{ - PVOID* RealContext = (PVOID*)Context; - PLUID CallerLuid = RealContext[0]; - PCSR_PROCESS CsrProcess = NULL; - NTSTATUS Status = STATUS_UNSUCCESSFUL; - BOOLEAN FirstTry; - PLIST_ENTRY NextEntry; - ULONG Result = 0; - - /* Acquire process lock */ - CsrAcquireProcessLock(); - - /* Get the list pointers */ - NextEntry = CsrRootProcess->ListLink.Flink; - while (NextEntry != &CsrRootProcess->ListLink) - { - /* Get the Process */ - CsrProcess = CONTAINING_RECORD(NextEntry, CSR_PROCESS, ListLink); - - /* Move to the next entry */ - NextEntry = NextEntry->Flink; - - /* Remove the skip flag, set shutdown flags to 0 */ - CsrProcess->Flags &= ~CsrProcessSkipShutdown; - CsrProcess->ShutdownFlags = 0; - } - - /* Set shudown Priority */ - CsrSetToShutdownPriority(); - - /* Loop all processes */ - //DPRINT1("Enumerating for LUID: %lx %lx\n", CallerLuid->HighPart, CallerLuid->LowPart); - - /* Start looping */ - while (TRUE) - { - /* Find the next process to shutdown */ - FirstTry = TRUE; - if (!(CsrProcess = FindProcessForShutdown(CallerLuid))) - { - /* Done, quit */ - CsrReleaseProcessLock(); - Status = STATUS_SUCCESS; - goto Quickie; - } - -LoopAgain: - /* Release the lock, make the callback, and acquire it back */ - //DPRINT1("Found process: %lx\n", CsrProcess->ClientId.UniqueProcess); - CsrReleaseProcessLock(); - Result = (ULONG)EnumProc(CsrProcess, (PVOID)((ULONG_PTR)Context | FirstTry)); - CsrAcquireProcessLock(); - - /* Check the result */ - //DPRINT1("Result: %d\n", Result); - if (Result == CsrShutdownCsrProcess) - { - /* The callback unlocked the process */ - break; - } - else if (Result == CsrShutdownNonCsrProcess) - { - /* A non-CSR process, the callback didn't touch it */ - //continue; - } - else if (Result == CsrShutdownCancelled) - { - /* Shutdown was cancelled, unlock and exit */ - CsrReleaseProcessLock(); - Status = STATUS_CANCELLED; - goto Quickie; - } - - /* No matches during the first try, so loop again */ - if (FirstTry && Result == CsrShutdownNonCsrProcess) - { - FirstTry = FALSE; - goto LoopAgain; - } - } - -Quickie: - /* Return to normal priority */ - CsrSetToNormalPriority(); - return Status; -} -#endif - /*++ * @name CsrUnlockProcess * @implemented NT4 From 09fe96f36188caf9697b6e1bb8dd27b09bb7fc94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Sun, 15 Jun 2014 20:02:26 +0000 Subject: [PATCH 195/232] [EXPLORER][EXPLORER_NEW] [TASKMGR] Set a proper shutdown level (with SetProcessShutdownParameters) so that explorer and taskmgr are terminated the very last when one shutdowns ReactOS. See Windows Internals 4th page 286 (section "Shutdown") which gives the values (that I've cross-checked on Windows 2k3 too). svn path=/trunk/; revision=63601 --- reactos/base/applications/taskmgr/taskmgr.c | 6 ++++++ reactos/base/shell/explorer/explorer.cpp | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/reactos/base/applications/taskmgr/taskmgr.c b/reactos/base/applications/taskmgr/taskmgr.c index 5fec61407b2..cf94146762c 100644 --- a/reactos/base/applications/taskmgr/taskmgr.c +++ b/reactos/base/applications/taskmgr/taskmgr.c @@ -172,6 +172,12 @@ int APIENTRY wWinMain(HINSTANCE hInstance, return -1; } + /* + * Set our shutdown parameters: we want to shutdown the very last, + * without displaying any end task dialog if needed. + */ + SetProcessShutdownParameters(1, SHUTDOWN_NORETRY); + DialogBoxW(hInst, (LPCWSTR)IDD_TASKMGR_DIALOG, NULL, TaskManagerWndProc); /* Save our settings to the registry */ diff --git a/reactos/base/shell/explorer/explorer.cpp b/reactos/base/shell/explorer/explorer.cpp index db931cb8f05..ffe9d23fe2a 100644 --- a/reactos/base/shell/explorer/explorer.cpp +++ b/reactos/base/shell/explorer/explorer.cpp @@ -1203,6 +1203,12 @@ int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdL "ROS Explorer - command line options", MB_OK); } + /* + * Set our shutdown parameters: we want to shutdown the very last, + * but before any TaskMgr instance (which has a shutdown level of 1). + */ + SetProcessShutdownParameters(2, 0); + Thread* pSSOThread = NULL; if (startup_desktop) { From d81aed45c9fcac72bb652648b331e12eecb5965d Mon Sep 17 00:00:00 2001 From: James Tabor Date: Sun, 15 Jun 2014 21:53:23 +0000 Subject: [PATCH 196/232] [User32] - Patch by Henri Verbeet : Ensure at least one character is used in TEXT_WordBreak(). svn path=/trunk/; revision=63602 --- reactos/win32ss/user/user32/windows/font.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/reactos/win32ss/user/user32/windows/font.c b/reactos/win32ss/user/user32/windows/font.c index 7b5e1431f0d..dc4c9a14dd8 100644 --- a/reactos/win32ss/user/user32/windows/font.c +++ b/reactos/win32ss/user/user32/windows/font.c @@ -636,8 +636,9 @@ static void TEXT_WordBreak (HDC hdc, WCHAR *str, unsigned int max_str, DT_EDITCONTROL) { /* break the word after the last character that fits (there must be - * at least one; none is caught earlier). - */ + * at least one). */ + if (!chars_fit) + ++chars_fit; *len_str = chars_fit; *chars_used = chars_fit; From fc8ed44177b8538d7c45747b9bfb8367a8c6bc59 Mon Sep 17 00:00:00 2001 From: James Tabor Date: Sun, 15 Jun 2014 21:54:12 +0000 Subject: [PATCH 197/232] - Update wine test to 1.7.20. svn path=/trunk/; revision=63603 --- rostests/winetests/user32/text.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/rostests/winetests/user32/text.c b/rostests/winetests/user32/text.c index 19bcd72abbe..06705a7fe46 100755 --- a/rostests/winetests/user32/text.c +++ b/rostests/winetests/user32/text.c @@ -564,6 +564,10 @@ static void test_DrawTextCalcRect(void) textheight = DrawTextA(hdc, wordbreak_text, -1, &rect, DT_CALCRECT | DT_WORDBREAK); ok(textheight == heightcheck * 2, "Got unexpected textheight %d, expected %d.\n", textheight, heightcheck * 2); + SetRect(&rect, 0, 0, 1, 1); + textheight = DrawTextA(hdc, wordbreak_text, -1, &rect, DT_CALCRECT | DT_WORDBREAK | DT_EDITCONTROL); + ok(textheight >= heightcheck * 6, "Got unexpected textheight %d, expected at least %d.\n", + textheight, heightcheck * 6); SetRect(&rect, 0, 0, 1, 1); heightcheck = DrawTextW(hdc, wordbreak_textW, -1, &rect, DT_CALCRECT); @@ -571,6 +575,10 @@ static void test_DrawTextCalcRect(void) textheight = DrawTextW(hdc, wordbreak_textW, -1, &rect, DT_CALCRECT | DT_WORDBREAK); ok(textheight == heightcheck * 2, "Got unexpected textheight %d, expected %d.\n", textheight, heightcheck * 2); + SetRect(&rect, 0, 0, 1, 1); + textheight = DrawTextW(hdc, wordbreak_textW, -1, &rect, DT_CALCRECT | DT_WORDBREAK | DT_EDITCONTROL); + ok(textheight >= heightcheck * 6, "Got unexpected textheight %d, expected at least %d.\n", + textheight, heightcheck * 6); SelectObject(hdc, hOldFont); ret = DeleteObject(hFont); From f5d1d7e5b172cc32b5693295d8b7df1e3aee9ca4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Mon, 16 Jun 2014 00:49:28 +0000 Subject: [PATCH 198/232] [SERVICES] The SCM also sets a shutdown level, lower than the default value for programs (this was cross-checked with Windows 2k3, the value chosen is for compatibility purposes). svn path=/trunk/; revision=63604 --- reactos/base/system/services/services.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/reactos/base/system/services/services.c b/reactos/base/system/services/services.c index 4163a3c7a01..a288baf5226 100644 --- a/reactos/base/system/services/services.c +++ b/reactos/base/system/services/services.c @@ -402,6 +402,12 @@ wWinMain(HINSTANCE hInstance, /* Register event handler (used for system shutdown) */ SetConsoleCtrlHandler(ShutdownHandlerRoutine, TRUE); + /* + * Set our shutdown parameters: we want to shutdown after the maintained + * services (that inherit the default shutdown level of 640). + */ + SetProcessShutdownParameters(480, SHUTDOWN_NORETRY); + /* Start auto-start services */ ScmAutoStartServices(); From c1b41411c248f181c7ff5e97966ca550bf46732c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Gardou?= Date: Mon, 16 Jun 2014 16:31:06 +0000 Subject: [PATCH 199/232] [RPCRT4] - Free parameters allocated by application before anything else. See CORE-8200 #comment committed in r63605, waiting for wine to accept it before closing. svn path=/trunk/; revision=63605 --- reactos/dll/win32/rpcrt4/ndr_stubless.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/reactos/dll/win32/rpcrt4/ndr_stubless.c b/reactos/dll/win32/rpcrt4/ndr_stubless.c index e43ddde805b..72a853701d8 100644 --- a/reactos/dll/win32/rpcrt4/ndr_stubless.c +++ b/reactos/dll/win32/rpcrt4/ndr_stubless.c @@ -1079,6 +1079,19 @@ static LONG_PTR *stub_do_args(MIDL_STUB_MESSAGE *pStubMsg, unsigned int i; LONG_PTR *retval_ptr = NULL; + if (phase == STUBLESS_FREE) + { + /* Process the params allocated by the application first */ + for (i = 0; i < number_of_params; i++) + { + unsigned char *pArg = pStubMsg->StackTop + params[i].stack_offset; + if (params[i].attr.MustFree) + { + call_freer(pStubMsg, pArg, ¶ms[i]); + } + } + } + for (i = 0; i < number_of_params; i++) { unsigned char *pArg = pStubMsg->StackTop + params[i].stack_offset; @@ -1096,11 +1109,7 @@ static LONG_PTR *stub_do_args(MIDL_STUB_MESSAGE *pStubMsg, call_marshaller(pStubMsg, pArg, ¶ms[i]); break; case STUBLESS_FREE: - if (params[i].attr.MustFree) - { - call_freer(pStubMsg, pArg, ¶ms[i]); - } - else if (params[i].attr.ServerAllocSize) + if (params[i].attr.ServerAllocSize) { HeapFree(GetProcessHeap(), 0, *(void **)pArg); } From 00f730ca44699ca6aecea03f7ddc21e6a147471c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Gardou?= Date: Mon, 16 Jun 2014 18:18:40 +0000 Subject: [PATCH 200/232] [OPENGL32/MESA] - Get rid of support for ARB_texture_float, ARB_half_float_vertex and ARB_half_float_pixel svn path=/trunk/; revision=63606 --- reactos/dll/opengl/mesa/main/extensions.c | 6 - reactos/dll/opengl/mesa/main/format_pack.c | 221 ------------------ reactos/dll/opengl/mesa/main/format_unpack.c | 169 -------------- reactos/dll/opengl/mesa/main/formats.c | 176 -------------- reactos/dll/opengl/mesa/main/formats.h | 18 -- reactos/dll/opengl/mesa/main/image.c | 21 -- reactos/dll/opengl/mesa/main/imports.c | 140 ----------- reactos/dll/opengl/mesa/main/imports.h | 6 - reactos/dll/opengl/mesa/main/mtypes.h | 3 - reactos/dll/opengl/mesa/main/pack.c | 167 ------------- reactos/dll/opengl/mesa/main/texformat.c | 75 ------ reactos/dll/opengl/mesa/main/texgetimage.c | 1 - reactos/dll/opengl/mesa/main/teximage.c | 25 -- reactos/dll/opengl/mesa/main/texparam.c | 32 +-- reactos/dll/opengl/mesa/main/texstore.c | 159 ------------- reactos/dll/opengl/mesa/main/varray.c | 5 - reactos/dll/opengl/mesa/main/version.c | 3 - reactos/dll/opengl/mesa/swrast/s_texfetch.c | 73 ------ .../dll/opengl/mesa/swrast/s_texfetch_tmp.h | 213 ----------------- reactos/dll/opengl/mesa/tnl/t_draw.c | 21 -- 20 files changed, 4 insertions(+), 1530 deletions(-) diff --git a/reactos/dll/opengl/mesa/main/extensions.c b/reactos/dll/opengl/mesa/main/extensions.c index a90e7f426b9..02c8dbf1c1b 100644 --- a/reactos/dll/opengl/mesa/main/extensions.c +++ b/reactos/dll/opengl/mesa/main/extensions.c @@ -61,8 +61,6 @@ struct extension { */ static const struct extension extension_table[] = { /* ARB Extensions */ - { "GL_ARB_half_float_pixel", o(ARB_half_float_pixel), 2003 }, - { "GL_ARB_half_float_vertex", o(ARB_half_float_vertex), 2008 }, { "GL_ARB_map_buffer_range", o(ARB_map_buffer_range), 2008 }, { "GL_ARB_multisample", o(dummy_true), 1994 }, { "GL_ARB_point_parameters", o(EXT_point_parameters), 1997 }, @@ -72,7 +70,6 @@ static const struct extension extension_table[] = { { "GL_ARB_texture_env_combine", o(ARB_texture_env_combine), 2001 }, { "GL_ARB_texture_env_crossbar", o(ARB_texture_env_crossbar), 2001 }, { "GL_ARB_texture_env_dot3", o(ARB_texture_env_dot3), 2001 }, - { "GL_ARB_texture_float", o(ARB_texture_float), 2004 }, { "GL_ARB_texture_mirrored_repeat", o(dummy_true), 2001 }, { "GL_ARB_texture_non_power_of_two", o(ARB_texture_non_power_of_two), 2003 }, { "GL_ARB_texture_storage", o(ARB_texture_storage), 2011 }, @@ -121,7 +118,6 @@ static const struct extension extension_table[] = { { "GL_APPLE_vertex_array_object", o(APPLE_vertex_array_object), 2002 }, { "GL_ATI_blend_equation_separate", o(EXT_blend_equation_separate), 2003 }, { "GL_ATI_texture_env_combine3", o(ATI_texture_env_combine3), 2002 }, - { "GL_ATI_texture_float", o(ARB_texture_float), 2002 }, { "GL_IBM_multimode_draw_arrays", o(IBM_multimode_draw_arrays), 1998 }, { "GL_IBM_rasterpos_clip", o(IBM_rasterpos_clip), 1996 }, { "GL_IBM_texture_mirrored_repeat", o(dummy_true), 1998 }, @@ -203,8 +199,6 @@ static const size_t default_extensions[] = { void _mesa_enable_sw_extensions(struct gl_context *ctx) { - ctx->Extensions.ARB_half_float_pixel = GL_TRUE; - ctx->Extensions.ARB_half_float_vertex = GL_TRUE; ctx->Extensions.ARB_map_buffer_range = GL_TRUE; ctx->Extensions.ARB_point_sprite = GL_TRUE; ctx->Extensions.ARB_texture_cube_map = GL_TRUE; diff --git a/reactos/dll/opengl/mesa/main/format_pack.c b/reactos/dll/opengl/mesa/main/format_pack.c index 31b247650a2..3842289068b 100644 --- a/reactos/dll/opengl/mesa/main/format_pack.c +++ b/reactos/dll/opengl/mesa/main/format_pack.c @@ -810,200 +810,6 @@ pack_float_YCBCR_REV(const GLfloat src[4], void *dst) } -/* MESA_FORMAT_RGBA_FLOAT32 */ - -static void -pack_ubyte_RGBA_FLOAT32(const GLubyte src[4], void *dst) -{ - GLfloat *d = ((GLfloat *) dst); - d[0] = UBYTE_TO_FLOAT(src[0]); - d[1] = UBYTE_TO_FLOAT(src[1]); - d[2] = UBYTE_TO_FLOAT(src[2]); - d[3] = UBYTE_TO_FLOAT(src[3]); -} - -static void -pack_float_RGBA_FLOAT32(const GLfloat src[4], void *dst) -{ - GLfloat *d = ((GLfloat *) dst); - d[0] = src[0]; - d[1] = src[1]; - d[2] = src[2]; - d[3] = src[3]; -} - - -/* MESA_FORMAT_RGBA_FLOAT16 */ - -static void -pack_ubyte_RGBA_FLOAT16(const GLubyte src[4], void *dst) -{ - GLhalfARB *d = ((GLhalfARB *) dst); - d[0] = _mesa_float_to_half(UBYTE_TO_FLOAT(src[0])); - d[1] = _mesa_float_to_half(UBYTE_TO_FLOAT(src[1])); - d[2] = _mesa_float_to_half(UBYTE_TO_FLOAT(src[2])); - d[3] = _mesa_float_to_half(UBYTE_TO_FLOAT(src[3])); -} - -static void -pack_float_RGBA_FLOAT16(const GLfloat src[4], void *dst) -{ - GLhalfARB *d = ((GLhalfARB *) dst); - d[0] = _mesa_float_to_half(src[0]); - d[1] = _mesa_float_to_half(src[1]); - d[2] = _mesa_float_to_half(src[2]); - d[3] = _mesa_float_to_half(src[3]); -} - - -/* MESA_FORMAT_RGB_FLOAT32 */ - -static void -pack_ubyte_RGB_FLOAT32(const GLubyte src[4], void *dst) -{ - GLfloat *d = ((GLfloat *) dst); - d[0] = UBYTE_TO_FLOAT(src[0]); - d[1] = UBYTE_TO_FLOAT(src[1]); - d[2] = UBYTE_TO_FLOAT(src[2]); -} - -static void -pack_float_RGB_FLOAT32(const GLfloat src[4], void *dst) -{ - GLfloat *d = ((GLfloat *) dst); - d[0] = src[0]; - d[1] = src[1]; - d[2] = src[2]; -} - - -/* MESA_FORMAT_RGB_FLOAT16 */ - -static void -pack_ubyte_RGB_FLOAT16(const GLubyte src[4], void *dst) -{ - GLhalfARB *d = ((GLhalfARB *) dst); - d[0] = _mesa_float_to_half(UBYTE_TO_FLOAT(src[0])); - d[1] = _mesa_float_to_half(UBYTE_TO_FLOAT(src[1])); - d[2] = _mesa_float_to_half(UBYTE_TO_FLOAT(src[2])); -} - -static void -pack_float_RGB_FLOAT16(const GLfloat src[4], void *dst) -{ - GLhalfARB *d = ((GLhalfARB *) dst); - d[0] = _mesa_float_to_half(src[0]); - d[1] = _mesa_float_to_half(src[1]); - d[2] = _mesa_float_to_half(src[2]); -} - - -/* MESA_FORMAT_ALPHA_FLOAT32 */ - -static void -pack_ubyte_ALPHA_FLOAT32(const GLubyte src[4], void *dst) -{ - GLfloat *d = ((GLfloat *) dst); - d[0] = UBYTE_TO_FLOAT(src[ACOMP]); -} - -static void -pack_float_ALPHA_FLOAT32(const GLfloat src[4], void *dst) -{ - GLfloat *d = ((GLfloat *) dst); - d[0] = src[ACOMP]; -} - - -/* MESA_FORMAT_ALPHA_FLOAT16 */ - -static void -pack_ubyte_ALPHA_FLOAT16(const GLubyte src[4], void *dst) -{ - GLhalfARB *d = ((GLhalfARB *) dst); - d[0] = _mesa_float_to_half(UBYTE_TO_FLOAT(src[ACOMP])); -} - -static void -pack_float_ALPHA_FLOAT16(const GLfloat src[4], void *dst) -{ - GLhalfARB *d = ((GLhalfARB *) dst); - d[0] = _mesa_float_to_half(src[ACOMP]); -} - - -/* MESA_FORMAT_LUMINANCE_FLOAT32 (and INTENSITY_FLOAT32, R_FLOAT32) */ - -static void -pack_ubyte_LUMINANCE_FLOAT32(const GLubyte src[4], void *dst) -{ - GLfloat *d = ((GLfloat *) dst); - d[0] = UBYTE_TO_FLOAT(src[RCOMP]); -} - -static void -pack_float_LUMINANCE_FLOAT32(const GLfloat src[4], void *dst) -{ - GLfloat *d = ((GLfloat *) dst); - d[0] = src[RCOMP]; -} - - -/* MESA_FORMAT_LUMINANCE_FLOAT16 (and INTENSITY_FLOAT16, R_FLOAT32) */ - -static void -pack_ubyte_LUMINANCE_FLOAT16(const GLubyte src[4], void *dst) -{ - GLhalfARB *d = ((GLhalfARB *) dst); - d[0] = _mesa_float_to_half(UBYTE_TO_FLOAT(src[RCOMP])); -} - -static void -pack_float_LUMINANCE_FLOAT16(const GLfloat src[4], void *dst) -{ - GLhalfARB *d = ((GLhalfARB *) dst); - d[0] = _mesa_float_to_half(src[RCOMP]); -} - - -/* MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32 */ - -static void -pack_ubyte_LUMINANCE_ALPHA_FLOAT32(const GLubyte src[4], void *dst) -{ - GLfloat *d = ((GLfloat *) dst); - d[0] = UBYTE_TO_FLOAT(src[RCOMP]); - d[1] = UBYTE_TO_FLOAT(src[ACOMP]); -} - -static void -pack_float_LUMINANCE_ALPHA_FLOAT32(const GLfloat src[4], void *dst) -{ - GLfloat *d = ((GLfloat *) dst); - d[0] = src[RCOMP]; - d[1] = src[ACOMP]; -} - - -/* MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16 */ - -static void -pack_ubyte_LUMINANCE_ALPHA_FLOAT16(const GLubyte src[4], void *dst) -{ - GLhalfARB *d = ((GLhalfARB *) dst); - d[0] = _mesa_float_to_half(UBYTE_TO_FLOAT(src[RCOMP])); - d[1] = _mesa_float_to_half(UBYTE_TO_FLOAT(src[ACOMP])); -} - -static void -pack_float_LUMINANCE_ALPHA_FLOAT16(const GLfloat src[4], void *dst) -{ - GLhalfARB *d = ((GLhalfARB *) dst); - d[0] = _mesa_float_to_half(src[RCOMP]); - d[1] = _mesa_float_to_half(src[ACOMP]); -} - - /* MESA_FORMAT_RGBA_16 */ static void @@ -1095,19 +901,6 @@ _mesa_get_pack_ubyte_rgba_function(gl_format format) table[MESA_FORMAT_Z32] = NULL; table[MESA_FORMAT_S8] = NULL; - table[MESA_FORMAT_RGBA_FLOAT32] = pack_ubyte_RGBA_FLOAT32; - table[MESA_FORMAT_RGBA_FLOAT16] = pack_ubyte_RGBA_FLOAT16; - table[MESA_FORMAT_RGB_FLOAT32] = pack_ubyte_RGB_FLOAT32; - table[MESA_FORMAT_RGB_FLOAT16] = pack_ubyte_RGB_FLOAT16; - table[MESA_FORMAT_ALPHA_FLOAT32] = pack_ubyte_ALPHA_FLOAT32; - table[MESA_FORMAT_ALPHA_FLOAT16] = pack_ubyte_ALPHA_FLOAT16; - table[MESA_FORMAT_LUMINANCE_FLOAT32] = pack_ubyte_LUMINANCE_FLOAT32; - table[MESA_FORMAT_LUMINANCE_FLOAT16] = pack_ubyte_LUMINANCE_FLOAT16; - table[MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32] = pack_ubyte_LUMINANCE_ALPHA_FLOAT32; - table[MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16] = pack_ubyte_LUMINANCE_ALPHA_FLOAT16; - table[MESA_FORMAT_INTENSITY_FLOAT32] = pack_ubyte_LUMINANCE_FLOAT32; - table[MESA_FORMAT_INTENSITY_FLOAT16] = pack_ubyte_LUMINANCE_FLOAT16; - /* n/a */ table[MESA_FORMAT_RGBA_INT8] = NULL; /* pack_ubyte_RGBA_INT8 */ table[MESA_FORMAT_RGBA_INT16] = NULL; /* pack_ubyte_RGBA_INT16 */ @@ -1185,20 +978,6 @@ _mesa_get_pack_float_rgba_function(gl_format format) table[MESA_FORMAT_Z32] = NULL; table[MESA_FORMAT_S8] = NULL; - table[MESA_FORMAT_RGBA_FLOAT32] = pack_float_RGBA_FLOAT32; - table[MESA_FORMAT_RGBA_FLOAT16] = pack_float_RGBA_FLOAT16; - table[MESA_FORMAT_RGB_FLOAT32] = pack_float_RGB_FLOAT32; - table[MESA_FORMAT_RGB_FLOAT16] = pack_float_RGB_FLOAT16; - table[MESA_FORMAT_ALPHA_FLOAT32] = pack_float_ALPHA_FLOAT32; - table[MESA_FORMAT_ALPHA_FLOAT16] = pack_float_ALPHA_FLOAT16; - table[MESA_FORMAT_LUMINANCE_FLOAT32] = pack_float_LUMINANCE_FLOAT32; - table[MESA_FORMAT_LUMINANCE_FLOAT16] = pack_float_LUMINANCE_FLOAT16; - table[MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32] = pack_float_LUMINANCE_ALPHA_FLOAT32; - table[MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16] = pack_float_LUMINANCE_ALPHA_FLOAT16; - - table[MESA_FORMAT_INTENSITY_FLOAT32] = pack_float_LUMINANCE_FLOAT32; - table[MESA_FORMAT_INTENSITY_FLOAT16] = pack_float_LUMINANCE_FLOAT16; - /* n/a */ table[MESA_FORMAT_RGBA_INT8] = NULL; table[MESA_FORMAT_RGBA_INT16] = NULL; diff --git a/reactos/dll/opengl/mesa/main/format_unpack.c b/reactos/dll/opengl/mesa/main/format_unpack.c index 057ceab4533..bca514d9c10 100644 --- a/reactos/dll/opengl/mesa/main/format_unpack.c +++ b/reactos/dll/opengl/mesa/main/format_unpack.c @@ -590,162 +590,6 @@ unpack_S8(const void *src, GLfloat dst[][4], GLuint n) } } -static void -unpack_RGBA_FLOAT32(const void *src, GLfloat dst[][4], GLuint n) -{ - const GLfloat *s = (const GLfloat *) src; - GLuint i; - for (i = 0; i < n; i++) { - dst[i][RCOMP] = s[i*4+0]; - dst[i][GCOMP] = s[i*4+1]; - dst[i][BCOMP] = s[i*4+2]; - dst[i][ACOMP] = s[i*4+3]; - } -} - -static void -unpack_RGBA_FLOAT16(const void *src, GLfloat dst[][4], GLuint n) -{ - const GLhalfARB *s = (const GLhalfARB *) src; - GLuint i; - for (i = 0; i < n; i++) { - dst[i][RCOMP] = _mesa_half_to_float(s[i*4+0]); - dst[i][GCOMP] = _mesa_half_to_float(s[i*4+1]); - dst[i][BCOMP] = _mesa_half_to_float(s[i*4+2]); - dst[i][ACOMP] = _mesa_half_to_float(s[i*4+3]); - } -} - -static void -unpack_RGB_FLOAT32(const void *src, GLfloat dst[][4], GLuint n) -{ - const GLfloat *s = (const GLfloat *) src; - GLuint i; - for (i = 0; i < n; i++) { - dst[i][RCOMP] = s[i*3+0]; - dst[i][GCOMP] = s[i*3+1]; - dst[i][BCOMP] = s[i*3+2]; - dst[i][ACOMP] = 1.0F; - } -} - -static void -unpack_RGB_FLOAT16(const void *src, GLfloat dst[][4], GLuint n) -{ - const GLhalfARB *s = (const GLhalfARB *) src; - GLuint i; - for (i = 0; i < n; i++) { - dst[i][RCOMP] = _mesa_half_to_float(s[i*3+0]); - dst[i][GCOMP] = _mesa_half_to_float(s[i*3+1]); - dst[i][BCOMP] = _mesa_half_to_float(s[i*3+2]); - dst[i][ACOMP] = 1.0F; - } -} - -static void -unpack_ALPHA_FLOAT32(const void *src, GLfloat dst[][4], GLuint n) -{ - const GLfloat *s = (const GLfloat *) src; - GLuint i; - for (i = 0; i < n; i++) { - dst[i][RCOMP] = - dst[i][GCOMP] = - dst[i][BCOMP] = 0.0F; - dst[i][ACOMP] = s[i]; - } -} - -static void -unpack_ALPHA_FLOAT16(const void *src, GLfloat dst[][4], GLuint n) -{ - const GLhalfARB *s = (const GLhalfARB *) src; - GLuint i; - for (i = 0; i < n; i++) { - dst[i][RCOMP] = - dst[i][GCOMP] = - dst[i][BCOMP] = 0.0F; - dst[i][ACOMP] = _mesa_half_to_float(s[i]); - } -} - -static void -unpack_LUMINANCE_FLOAT32(const void *src, GLfloat dst[][4], GLuint n) -{ - const GLfloat *s = (const GLfloat *) src; - GLuint i; - for (i = 0; i < n; i++) { - dst[i][RCOMP] = - dst[i][GCOMP] = - dst[i][BCOMP] = s[i]; - dst[i][ACOMP] = 1.0F; - } -} - -static void -unpack_LUMINANCE_FLOAT16(const void *src, GLfloat dst[][4], GLuint n) -{ - const GLhalfARB *s = (const GLhalfARB *) src; - GLuint i; - for (i = 0; i < n; i++) { - dst[i][RCOMP] = - dst[i][GCOMP] = - dst[i][BCOMP] = _mesa_half_to_float(s[i]); - dst[i][ACOMP] = 1.0F; - } -} - -static void -unpack_LUMINANCE_ALPHA_FLOAT32(const void *src, GLfloat dst[][4], GLuint n) -{ - const GLfloat *s = (const GLfloat *) src; - GLuint i; - for (i = 0; i < n; i++) { - dst[i][RCOMP] = - dst[i][GCOMP] = - dst[i][BCOMP] = s[i*2+0]; - dst[i][ACOMP] = s[i*2+1]; - } -} - -static void -unpack_LUMINANCE_ALPHA_FLOAT16(const void *src, GLfloat dst[][4], GLuint n) -{ - const GLhalfARB *s = (const GLhalfARB *) src; - GLuint i; - for (i = 0; i < n; i++) { - dst[i][RCOMP] = - dst[i][GCOMP] = - dst[i][BCOMP] = _mesa_half_to_float(s[i*2+0]); - dst[i][ACOMP] = _mesa_half_to_float(s[i*2+1]); - } -} - -static void -unpack_INTENSITY_FLOAT32(const void *src, GLfloat dst[][4], GLuint n) -{ - const GLfloat *s = (const GLfloat *) src; - GLuint i; - for (i = 0; i < n; i++) { - dst[i][RCOMP] = - dst[i][GCOMP] = - dst[i][BCOMP] = - dst[i][ACOMP] = s[i]; - } -} - -static void -unpack_INTENSITY_FLOAT16(const void *src, GLfloat dst[][4], GLuint n) -{ - const GLhalfARB *s = (const GLhalfARB *) src; - GLuint i; - for (i = 0; i < n; i++) { - dst[i][RCOMP] = - dst[i][GCOMP] = - dst[i][BCOMP] = - dst[i][ACOMP] = _mesa_half_to_float(s[i]); - } -} - static void unpack_RGBA_INT8(const void *src, GLfloat dst[][4], GLuint n) { @@ -900,19 +744,6 @@ get_unpack_rgba_function(gl_format format) table[MESA_FORMAT_Z32] = unpack_Z32; table[MESA_FORMAT_S8] = unpack_S8; - table[MESA_FORMAT_RGBA_FLOAT32] = unpack_RGBA_FLOAT32; - table[MESA_FORMAT_RGBA_FLOAT16] = unpack_RGBA_FLOAT16; - table[MESA_FORMAT_RGB_FLOAT32] = unpack_RGB_FLOAT32; - table[MESA_FORMAT_RGB_FLOAT16] = unpack_RGB_FLOAT16; - table[MESA_FORMAT_ALPHA_FLOAT32] = unpack_ALPHA_FLOAT32; - table[MESA_FORMAT_ALPHA_FLOAT16] = unpack_ALPHA_FLOAT16; - table[MESA_FORMAT_LUMINANCE_FLOAT32] = unpack_LUMINANCE_FLOAT32; - table[MESA_FORMAT_LUMINANCE_FLOAT16] = unpack_LUMINANCE_FLOAT16; - table[MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32] = unpack_LUMINANCE_ALPHA_FLOAT32; - table[MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16] = unpack_LUMINANCE_ALPHA_FLOAT16; - table[MESA_FORMAT_INTENSITY_FLOAT32] = unpack_INTENSITY_FLOAT32; - table[MESA_FORMAT_INTENSITY_FLOAT16] = unpack_INTENSITY_FLOAT16; - table[MESA_FORMAT_RGBA_INT8] = unpack_RGBA_INT8; table[MESA_FORMAT_RGBA_INT16] = unpack_RGBA_INT16; table[MESA_FORMAT_RGBA_INT32] = unpack_RGBA_INT32; diff --git a/reactos/dll/opengl/mesa/main/formats.c b/reactos/dll/opengl/mesa/main/formats.c index e1e636f4389..1d46fa3e18d 100644 --- a/reactos/dll/opengl/mesa/main/formats.c +++ b/reactos/dll/opengl/mesa/main/formats.c @@ -406,116 +406,7 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] = 0, 0, 0, 0, 8, /* Lum/Int/Index/Depth/StencilBits */ 1, 1, 1 /* BlockWidth/Height,Bytes */ }, - { - MESA_FORMAT_RGBA_FLOAT32, - "MESA_FORMAT_RGBA_FLOAT32", - GL_RGBA, - GL_FLOAT, - 32, 32, 32, 32, - 0, 0, 0, 0, 0, - 1, 1, 16 - }, - { - MESA_FORMAT_RGBA_FLOAT16, - "MESA_FORMAT_RGBA_FLOAT16", - GL_RGBA, - GL_FLOAT, - 16, 16, 16, 16, - 0, 0, 0, 0, 0, - 1, 1, 8 - }, - { - MESA_FORMAT_RGB_FLOAT32, - "MESA_FORMAT_RGB_FLOAT32", - GL_RGB, - GL_FLOAT, - 32, 32, 32, 0, - 0, 0, 0, 0, 0, - 1, 1, 12 - }, - { - MESA_FORMAT_RGB_FLOAT16, - "MESA_FORMAT_RGB_FLOAT16", - GL_RGB, - GL_FLOAT, - 16, 16, 16, 0, - 0, 0, 0, 0, 0, - 1, 1, 6 - }, - { - MESA_FORMAT_ALPHA_FLOAT32, - "MESA_FORMAT_ALPHA_FLOAT32", - GL_ALPHA, - GL_FLOAT, - 0, 0, 0, 32, - 0, 0, 0, 0, 0, - 1, 1, 4 - }, - { - MESA_FORMAT_ALPHA_FLOAT16, - "MESA_FORMAT_ALPHA_FLOAT16", - GL_ALPHA, - GL_FLOAT, - 0, 0, 0, 16, - 0, 0, 0, 0, 0, - 1, 1, 2 - }, - { - MESA_FORMAT_LUMINANCE_FLOAT32, - "MESA_FORMAT_LUMINANCE_FLOAT32", - GL_LUMINANCE, - GL_FLOAT, - 0, 0, 0, 0, - 32, 0, 0, 0, 0, - 1, 1, 4 - }, - { - MESA_FORMAT_LUMINANCE_FLOAT16, - "MESA_FORMAT_LUMINANCE_FLOAT16", - GL_LUMINANCE, - GL_FLOAT, - 0, 0, 0, 0, - 16, 0, 0, 0, 0, - 1, 1, 2 - }, - { - MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32, - "MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32", - GL_LUMINANCE_ALPHA, - GL_FLOAT, - 0, 0, 0, 32, - 32, 0, 0, 0, 0, - 1, 1, 8 - }, - { - MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16, - "MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16", - GL_LUMINANCE_ALPHA, - GL_FLOAT, - 0, 0, 0, 16, - 16, 0, 0, 0, 0, - 1, 1, 4 - }, - { - MESA_FORMAT_INTENSITY_FLOAT32, - "MESA_FORMAT_INTENSITY_FLOAT32", - GL_INTENSITY, - GL_FLOAT, - 0, 0, 0, 0, - 0, 32, 0, 0, 0, - 1, 1, 4 - }, - { - MESA_FORMAT_INTENSITY_FLOAT16, - "MESA_FORMAT_INTENSITY_FLOAT16", - GL_INTENSITY, - GL_FLOAT, - 0, 0, 0, 0, - 0, 16, 0, 0, 0, - 1, 1, 2 - }, - /* unnormalized signed int formats */ /* unnormalized unsigned int formats */ { MESA_FORMAT_ALPHA_UINT8, @@ -1355,43 +1246,6 @@ _mesa_format_to_type_and_comps(gl_format format, *comps = 4; return; - case MESA_FORMAT_RGBA_FLOAT32: - *datatype = GL_FLOAT; - *comps = 4; - return; - case MESA_FORMAT_RGBA_FLOAT16: - *datatype = GL_HALF_FLOAT_ARB; - *comps = 4; - return; - case MESA_FORMAT_RGB_FLOAT32: - *datatype = GL_FLOAT; - *comps = 3; - return; - case MESA_FORMAT_RGB_FLOAT16: - *datatype = GL_HALF_FLOAT_ARB; - *comps = 3; - return; - case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32: - *datatype = GL_FLOAT; - *comps = 2; - return; - case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16: - *datatype = GL_HALF_FLOAT_ARB; - *comps = 2; - return; - case MESA_FORMAT_ALPHA_FLOAT32: - case MESA_FORMAT_LUMINANCE_FLOAT32: - case MESA_FORMAT_INTENSITY_FLOAT32: - *datatype = GL_FLOAT; - *comps = 1; - return; - case MESA_FORMAT_ALPHA_FLOAT16: - case MESA_FORMAT_LUMINANCE_FLOAT16: - case MESA_FORMAT_INTENSITY_FLOAT16: - *datatype = GL_HALF_FLOAT_ARB; - *comps = 1; - return; - case MESA_FORMAT_ALPHA_UINT8: case MESA_FORMAT_LUMINANCE_UINT8: case MESA_FORMAT_INTENSITY_UINT8: @@ -1654,36 +1508,6 @@ _mesa_format_matches_format_and_type(gl_format gl_format, case MESA_FORMAT_S8: return GL_FALSE; - case MESA_FORMAT_RGBA_FLOAT32: - return format == GL_RGBA && type == GL_FLOAT; - case MESA_FORMAT_RGBA_FLOAT16: - return format == GL_RGBA && type == GL_HALF_FLOAT; - - case MESA_FORMAT_RGB_FLOAT32: - return format == GL_RGB && type == GL_FLOAT; - case MESA_FORMAT_RGB_FLOAT16: - return format == GL_RGB && type == GL_HALF_FLOAT; - - case MESA_FORMAT_ALPHA_FLOAT32: - return format == GL_ALPHA && type == GL_FLOAT; - case MESA_FORMAT_ALPHA_FLOAT16: - return format == GL_ALPHA && type == GL_HALF_FLOAT; - - case MESA_FORMAT_LUMINANCE_FLOAT32: - return format == GL_LUMINANCE && type == GL_FLOAT; - case MESA_FORMAT_LUMINANCE_FLOAT16: - return format == GL_LUMINANCE && type == GL_HALF_FLOAT; - - case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32: - return format == GL_LUMINANCE_ALPHA && type == GL_FLOAT; - case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16: - return format == GL_LUMINANCE_ALPHA && type == GL_HALF_FLOAT; - - case MESA_FORMAT_INTENSITY_FLOAT32: - return format == GL_INTENSITY && type == GL_FLOAT; - case MESA_FORMAT_INTENSITY_FLOAT16: - return format == GL_INTENSITY && type == GL_HALF_FLOAT; - /* FINISHME: What do we want to do for GL_EXT_texture_integer? */ case MESA_FORMAT_ALPHA_UINT8: case MESA_FORMAT_ALPHA_UINT16: diff --git a/reactos/dll/opengl/mesa/main/formats.h b/reactos/dll/opengl/mesa/main/formats.h index 2ff4af1fa59..5a93a5c5a8e 100644 --- a/reactos/dll/opengl/mesa/main/formats.h +++ b/reactos/dll/opengl/mesa/main/formats.h @@ -105,24 +105,6 @@ typedef enum MESA_FORMAT_S8, /* SSSS SSSS */ /*@}*/ - /** - * \name Floating point texture formats. - */ - /*@{*/ - MESA_FORMAT_RGBA_FLOAT32, - MESA_FORMAT_RGBA_FLOAT16, - MESA_FORMAT_RGB_FLOAT32, - MESA_FORMAT_RGB_FLOAT16, - MESA_FORMAT_ALPHA_FLOAT32, - MESA_FORMAT_ALPHA_FLOAT16, - MESA_FORMAT_LUMINANCE_FLOAT32, - MESA_FORMAT_LUMINANCE_FLOAT16, - MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32, - MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16, - MESA_FORMAT_INTENSITY_FLOAT32, - MESA_FORMAT_INTENSITY_FLOAT16, - /*@}*/ - /** * \name Non-normalized signed integer formats. * XXX Note: these are just stand-ins for some better hardware diff --git a/reactos/dll/opengl/mesa/main/image.c b/reactos/dll/opengl/mesa/main/image.c index 676ebf7ff8c..820323b4dd3 100644 --- a/reactos/dll/opengl/mesa/main/image.c +++ b/reactos/dll/opengl/mesa/main/image.c @@ -125,8 +125,6 @@ _mesa_sizeof_type( GLenum type ) return sizeof(GLfloat); case GL_DOUBLE: return sizeof(GLdouble); - case GL_HALF_FLOAT_ARB: - return sizeof(GLhalfARB); case GL_FIXED: return sizeof(GLfixed); default: @@ -157,8 +155,6 @@ _mesa_sizeof_packed_type( GLenum type ) return sizeof(GLuint); case GL_INT: return sizeof(GLint); - case GL_HALF_FLOAT_ARB: - return sizeof(GLhalfARB); case GL_FLOAT: return sizeof(GLfloat); case GL_UNSIGNED_BYTE_3_3_2: @@ -267,8 +263,6 @@ _mesa_bytes_per_pixel( GLenum format, GLenum type ) return comps * sizeof(GLint); case GL_FLOAT: return comps * sizeof(GLfloat); - case GL_HALF_FLOAT_ARB: - return comps * sizeof(GLhalfARB); case GL_UNSIGNED_BYTE_3_3_2: case GL_UNSIGNED_BYTE_2_3_3_REV: if (format == GL_RGB || format == GL_BGR || @@ -384,9 +378,6 @@ _mesa_error_check_format_and_type(const struct gl_context *ctx, case GL_UNSIGNED_INT: case GL_FLOAT: return GL_NO_ERROR; - case GL_HALF_FLOAT: - return ctx->Extensions.ARB_half_float_pixel - ? GL_NO_ERROR : GL_INVALID_ENUM; default: return GL_INVALID_ENUM; } @@ -410,9 +401,6 @@ _mesa_error_check_format_and_type(const struct gl_context *ctx, case GL_UNSIGNED_INT: case GL_FLOAT: return GL_NO_ERROR; - case GL_HALF_FLOAT: - return ctx->Extensions.ARB_half_float_pixel - ? GL_NO_ERROR : GL_INVALID_ENUM; default: return GL_INVALID_ENUM; } @@ -431,9 +419,6 @@ _mesa_error_check_format_and_type(const struct gl_context *ctx, case GL_UNSIGNED_SHORT_5_6_5: case GL_UNSIGNED_SHORT_5_6_5_REV: return GL_NO_ERROR; - case GL_HALF_FLOAT: - return ctx->Extensions.ARB_half_float_pixel - ? GL_NO_ERROR : GL_INVALID_ENUM; default: return GL_INVALID_ENUM; } @@ -451,9 +436,6 @@ _mesa_error_check_format_and_type(const struct gl_context *ctx, case GL_UNSIGNED_INT: case GL_FLOAT: return GL_NO_ERROR; - case GL_HALF_FLOAT: - return ctx->Extensions.ARB_half_float_pixel - ? GL_NO_ERROR : GL_INVALID_ENUM; default: return GL_INVALID_ENUM; } @@ -476,9 +458,6 @@ _mesa_error_check_format_and_type(const struct gl_context *ctx, case GL_UNSIGNED_INT_8_8_8_8: case GL_UNSIGNED_INT_8_8_8_8_REV: return GL_NO_ERROR; - case GL_HALF_FLOAT: - return ctx->Extensions.ARB_half_float_pixel - ? GL_NO_ERROR : GL_INVALID_ENUM; default: return GL_INVALID_ENUM; } diff --git a/reactos/dll/opengl/mesa/main/imports.c b/reactos/dll/opengl/mesa/main/imports.c index 9652e39d07d..e9d9209f2a1 100644 --- a/reactos/dll/opengl/mesa/main/imports.c +++ b/reactos/dll/opengl/mesa/main/imports.c @@ -537,146 +537,6 @@ _mesa_bitcount_64(uint64_t n) } #endif - -/** - * Convert a 4-byte float to a 2-byte half float. - * Based on code from: - * http://www.opengl.org/discussion_boards/ubb/Forum3/HTML/008786.html - */ -GLhalfARB -_mesa_float_to_half(float val) -{ - const fi_type fi = {val}; - const int flt_m = fi.i & 0x7fffff; - const int flt_e = (fi.i >> 23) & 0xff; - const int flt_s = (fi.i >> 31) & 0x1; - int s, e, m = 0; - GLhalfARB result; - - /* sign bit */ - s = flt_s; - - /* handle special cases */ - if ((flt_e == 0) && (flt_m == 0)) { - /* zero */ - /* m = 0; - already set */ - e = 0; - } - else if ((flt_e == 0) && (flt_m != 0)) { - /* denorm -- denorm float maps to 0 half */ - /* m = 0; - already set */ - e = 0; - } - else if ((flt_e == 0xff) && (flt_m == 0)) { - /* infinity */ - /* m = 0; - already set */ - e = 31; - } - else if ((flt_e == 0xff) && (flt_m != 0)) { - /* NaN */ - m = 1; - e = 31; - } - else { - /* regular number */ - const int new_exp = flt_e - 127; - if (new_exp < -24) { - /* this maps to 0 */ - /* m = 0; - already set */ - e = 0; - } - else if (new_exp < -14) { - /* this maps to a denorm */ - unsigned int exp_val = (unsigned int) (-14 - new_exp); /* 2^-exp_val*/ - e = 0; - switch (exp_val) { - case 0: - _mesa_warning(NULL, - "float_to_half: logical error in denorm creation!\n"); - /* m = 0; - already set */ - break; - case 1: m = 512 + (flt_m >> 14); break; - case 2: m = 256 + (flt_m >> 15); break; - case 3: m = 128 + (flt_m >> 16); break; - case 4: m = 64 + (flt_m >> 17); break; - case 5: m = 32 + (flt_m >> 18); break; - case 6: m = 16 + (flt_m >> 19); break; - case 7: m = 8 + (flt_m >> 20); break; - case 8: m = 4 + (flt_m >> 21); break; - case 9: m = 2 + (flt_m >> 22); break; - case 10: m = 1; break; - } - } - else if (new_exp > 15) { - /* map this value to infinity */ - /* m = 0; - already set */ - e = 31; - } - else { - /* regular */ - e = new_exp + 15; - m = flt_m >> 13; - } - } - - result = (s << 15) | (e << 10) | m; - return result; -} - - -/** - * Convert a 2-byte half float to a 4-byte float. - * Based on code from: - * http://www.opengl.org/discussion_boards/ubb/Forum3/HTML/008786.html - */ -float -_mesa_half_to_float(GLhalfARB val) -{ - /* XXX could also use a 64K-entry lookup table */ - const int m = val & 0x3ff; - const int e = (val >> 10) & 0x1f; - const int s = (val >> 15) & 0x1; - int flt_m, flt_e, flt_s; - fi_type fi; - float result; - - /* sign bit */ - flt_s = s; - - /* handle special cases */ - if ((e == 0) && (m == 0)) { - /* zero */ - flt_m = 0; - flt_e = 0; - } - else if ((e == 0) && (m != 0)) { - /* denorm -- denorm half will fit in non-denorm single */ - const float half_denorm = 1.0f / 16384.0f; /* 2^-14 */ - float mantissa = ((float) (m)) / 1024.0f; - float sign = s ? -1.0f : 1.0f; - return sign * mantissa * half_denorm; - } - else if ((e == 31) && (m == 0)) { - /* infinity */ - flt_e = 0xff; - flt_m = 0; - } - else if ((e == 31) && (m != 0)) { - /* NaN */ - flt_e = 0xff; - flt_m = 1; - } - else { - /* regular */ - flt_e = e + 112; - flt_m = m << 13; - } - - fi.i = (flt_s << 31) | (flt_e << 23) | flt_m; - result = fi.f; - return result; -} - /*@}*/ diff --git a/reactos/dll/opengl/mesa/main/imports.h b/reactos/dll/opengl/mesa/main/imports.h index b7e87439f4c..d2ba34db888 100644 --- a/reactos/dll/opengl/mesa/main/imports.h +++ b/reactos/dll/opengl/mesa/main/imports.h @@ -597,12 +597,6 @@ extern unsigned int _mesa_bitcount(unsigned int n); #endif -extern GLhalfARB -_mesa_float_to_half(float f); - -extern float -_mesa_half_to_float(GLhalfARB h); - extern void * _mesa_bsearch( const void *key, const void *base, size_t nmemb, size_t size, diff --git a/reactos/dll/opengl/mesa/main/mtypes.h b/reactos/dll/opengl/mesa/main/mtypes.h index 7cc01fef843..2dc4ce80524 100644 --- a/reactos/dll/opengl/mesa/main/mtypes.h +++ b/reactos/dll/opengl/mesa/main/mtypes.h @@ -1577,15 +1577,12 @@ struct gl_extensions GLboolean dummy; /* don't remove this! */ GLboolean dummy_true; /* Set true by _mesa_init_extensions(). */ GLboolean dummy_false; /* Set false by _mesa_init_extensions(). */ - GLboolean ARB_half_float_pixel; - GLboolean ARB_half_float_vertex; GLboolean ARB_map_buffer_range; GLboolean ARB_point_sprite; GLboolean ARB_texture_cube_map; GLboolean ARB_texture_env_combine; GLboolean ARB_texture_env_crossbar; GLboolean ARB_texture_env_dot3; - GLboolean ARB_texture_float; GLboolean ARB_texture_non_power_of_two; GLboolean ARB_texture_storage; GLboolean ARB_transpose_matrix; diff --git a/reactos/dll/opengl/mesa/main/pack.c b/reactos/dll/opengl/mesa/main/pack.c index 5a8f3a4c942..6217e2f3d8c 100644 --- a/reactos/dll/opengl/mesa/main/pack.c +++ b/reactos/dll/opengl/mesa/main/pack.c @@ -1568,85 +1568,6 @@ _mesa_pack_rgba_span_float(struct gl_context *ctx, GLuint n, GLfloat rgba[][4], } } break; - case GL_HALF_FLOAT_ARB: - { - GLhalfARB *dst = (GLhalfARB *) dstAddr; - switch (dstFormat) { - case GL_RED: - for (i=0;iSwapBytes) { - for (i = 0; i < n; i++) { - GLhalfARB value = s[i]; - SWAP2BYTE(value); - indexes[i] = (GLuint) _mesa_half_to_float(value); - } - } - else { - for (i = 0; i < n; i++) - indexes[i] = (GLuint) _mesa_half_to_float(s[i]); - } - } - break; default: _mesa_problem(NULL, "bad srcType in extract_uint_indexes"); @@ -2378,12 +2282,6 @@ extract_float_rgba(GLuint n, GLfloat rgba[][4], PROCESS(bSrc, BCOMP, 0.0F, 0.0F, GLfloat, (GLfloat)); PROCESS(aSrc, ACOMP, 1.0F, 1.0F, GLfloat, (GLfloat)); break; - case GL_HALF_FLOAT_ARB: - PROCESS(rSrc, RCOMP, 0.0F, 0.0F, GLhalfARB, _mesa_half_to_float); - PROCESS(gSrc, GCOMP, 0.0F, 0.0F, GLhalfARB, _mesa_half_to_float); - PROCESS(bSrc, BCOMP, 0.0F, 0.0F, GLhalfARB, _mesa_half_to_float); - PROCESS(aSrc, ACOMP, 1.0F, 1.0F, GLhalfARB, _mesa_half_to_float); - break; case GL_UNSIGNED_BYTE_3_3_2: { const GLubyte *ubsrc = (const GLubyte *) src; @@ -2698,15 +2596,6 @@ clamp_float_to_uint(GLfloat f) return f < 0.0F ? 0 : IROUND(f); } - -static inline GLuint -clamp_half_to_uint(GLhalfARB h) -{ - GLfloat f = _mesa_half_to_float(h); - return f < 0.0F ? 0 : IROUND(f); -} - - /** * \sa extract_float_rgba() */ @@ -2845,12 +2734,6 @@ extract_uint_rgba(GLuint n, GLuint rgba[][4], PROCESS(bSrc, BCOMP, 0, GLfloat, clamp_float_to_uint); PROCESS(aSrc, ACOMP, 1, GLfloat, clamp_float_to_uint); break; - case GL_HALF_FLOAT_ARB: - PROCESS(rSrc, RCOMP, 0, GLhalfARB, clamp_half_to_uint); - PROCESS(gSrc, GCOMP, 0, GLhalfARB, clamp_half_to_uint); - PROCESS(bSrc, BCOMP, 0, GLhalfARB, clamp_half_to_uint); - PROCESS(aSrc, ACOMP, 1, GLhalfARB, clamp_half_to_uint); - break; case GL_UNSIGNED_BYTE_3_3_2: { const GLubyte *ubsrc = (const GLubyte *) src; @@ -3891,18 +3774,6 @@ _mesa_pack_index_span( struct gl_context *ctx, GLuint n, } } break; - case GL_HALF_FLOAT_ARB: - { - GLhalfARB *dst = (GLhalfARB *) dest; - GLuint i; - for (i = 0; i < n; i++) { - dst[i] = _mesa_float_to_half((GLfloat) source[i]); - } - if (dstPacking->SwapBytes) { - _mesa_swap2( (GLushort *) dst, n ); - } - } - break; default: _mesa_problem(ctx, "bad type in _mesa_pack_index_span"); } @@ -4118,18 +3989,6 @@ _mesa_pack_stencil_span( struct gl_context *ctx, GLuint n, } } break; - case GL_HALF_FLOAT_ARB: - { - GLhalfARB *dst = (GLhalfARB *) dest; - GLuint i; - for (i=0;iSwapBytes) { - _mesa_swap2( (GLushort *) dst, n ); - } - } - break; case GL_BITMAP: if (dstPacking->LsbFirst) { GLubyte *dst = (GLubyte *) dest; @@ -4279,20 +4138,6 @@ _mesa_unpack_depth_span( struct gl_context *ctx, GLuint n, DEPTH_VALUES(GLfloat, 1*); needClamp = GL_TRUE; break; - case GL_HALF_FLOAT_ARB: - { - GLuint i; - const GLhalfARB *src = (const GLhalfARB *) source; - for (i = 0; i < n; i++) { - GLhalfARB value = src[i]; - if (srcPacking->SwapBytes) { - SWAP2BYTE(value); - } - depthValues[i] = _mesa_half_to_float(value); - } - needClamp = GL_TRUE; - } - break; default: _mesa_problem(NULL, "bad type in _mesa_unpack_depth_span()"); free(depthTemp); @@ -4461,18 +4306,6 @@ _mesa_pack_depth_span( struct gl_context *ctx, GLuint n, GLvoid *dest, } } break; - case GL_HALF_FLOAT_ARB: - { - GLhalfARB *dst = (GLhalfARB *) dest; - GLuint i; - for (i = 0; i < n; i++) { - dst[i] = _mesa_float_to_half(depthSpan[i]); - } - if (dstPacking->SwapBytes) { - _mesa_swap2( (GLushort *) dst, n ); - } - } - break; default: _mesa_problem(ctx, "bad type in _mesa_pack_depth_span"); } diff --git a/reactos/dll/opengl/mesa/main/texformat.c b/reactos/dll/opengl/mesa/main/texformat.c index 971ec030fd3..052dfc1691f 100644 --- a/reactos/dll/opengl/mesa/main/texformat.c +++ b/reactos/dll/opengl/mesa/main/texformat.c @@ -206,81 +206,6 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat, } } - if (ctx->Extensions.ARB_texture_float) { - switch (internalFormat) { - case GL_ALPHA16F_ARB: - RETURN_IF_SUPPORTED(MESA_FORMAT_ALPHA_FLOAT16); - RETURN_IF_SUPPORTED(MESA_FORMAT_ALPHA_FLOAT32); - RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT16); - RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); - break; - case GL_ALPHA32F_ARB: - RETURN_IF_SUPPORTED(MESA_FORMAT_ALPHA_FLOAT32); - RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); - RETURN_IF_SUPPORTED(MESA_FORMAT_ALPHA_FLOAT16); - RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT16); - break; - case GL_LUMINANCE16F_ARB: - RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_FLOAT16); - RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_FLOAT32); - RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT16); - RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); - break; - case GL_LUMINANCE32F_ARB: - RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_FLOAT32); - RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); - RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_FLOAT16); - RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT16); - break; - case GL_LUMINANCE_ALPHA16F_ARB: - RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16); - RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32); - RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT16); - RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); - break; - case GL_LUMINANCE_ALPHA32F_ARB: - RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32); - RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); - RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16); - RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT16); - break; - case GL_INTENSITY16F_ARB: - RETURN_IF_SUPPORTED(MESA_FORMAT_INTENSITY_FLOAT16); - RETURN_IF_SUPPORTED(MESA_FORMAT_INTENSITY_FLOAT32); - RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT16); - RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); - break; - case GL_INTENSITY32F_ARB: - RETURN_IF_SUPPORTED(MESA_FORMAT_INTENSITY_FLOAT32); - RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); - RETURN_IF_SUPPORTED(MESA_FORMAT_INTENSITY_FLOAT16); - RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT16); - break; - case GL_RGB16F_ARB: - RETURN_IF_SUPPORTED(MESA_FORMAT_RGB_FLOAT16); - RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT16); - RETURN_IF_SUPPORTED(MESA_FORMAT_RGB_FLOAT32); - RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); - break; - case GL_RGB32F_ARB: - RETURN_IF_SUPPORTED(MESA_FORMAT_RGB_FLOAT32); - RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); - RETURN_IF_SUPPORTED(MESA_FORMAT_RGB_FLOAT16); - RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT16); - break; - case GL_RGBA16F_ARB: - RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT16); - RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); - break; - case GL_RGBA32F_ARB: - RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); - RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT16); - break; - default: - ; /* fallthrough */ - } - } - if (ctx->Extensions.EXT_texture_integer) { switch (internalFormat) { case GL_ALPHA8UI_EXT: diff --git a/reactos/dll/opengl/mesa/main/texgetimage.c b/reactos/dll/opengl/mesa/main/texgetimage.c index 450b7984c1e..29590ce5348 100644 --- a/reactos/dll/opengl/mesa/main/texgetimage.c +++ b/reactos/dll/opengl/mesa/main/texgetimage.c @@ -40,7 +40,6 @@ type_needs_clamping(GLenum type) case GL_SHORT: case GL_INT: case GL_FLOAT: - case GL_HALF_FLOAT_ARB: case GL_UNSIGNED_INT_10F_11F_11F_REV: case GL_UNSIGNED_INT_5_9_9_9_REV: return GL_FALSE; diff --git a/reactos/dll/opengl/mesa/main/teximage.c b/reactos/dll/opengl/mesa/main/teximage.c index ccf9d8111bb..cd7b1c96ab1 100644 --- a/reactos/dll/opengl/mesa/main/teximage.c +++ b/reactos/dll/opengl/mesa/main/teximage.c @@ -115,31 +115,6 @@ _mesa_base_tex_format( struct gl_context *ctx, GLint internalFormat ) return GL_YCBCR_MESA; } - if (ctx->Extensions.ARB_texture_float) { - switch (internalFormat) { - case GL_ALPHA16F_ARB: - case GL_ALPHA32F_ARB: - return GL_ALPHA; - case GL_RGBA16F_ARB: - case GL_RGBA32F_ARB: - return GL_RGBA; - case GL_RGB16F_ARB: - case GL_RGB32F_ARB: - return GL_RGB; - case GL_INTENSITY16F_ARB: - case GL_INTENSITY32F_ARB: - return GL_INTENSITY; - case GL_LUMINANCE16F_ARB: - case GL_LUMINANCE32F_ARB: - return GL_LUMINANCE; - case GL_LUMINANCE_ALPHA16F_ARB: - case GL_LUMINANCE_ALPHA32F_ARB: - return GL_LUMINANCE_ALPHA; - default: - ; /* fallthrough */ - } - } - if (ctx->VersionMajor >= 3 || ctx->Extensions.EXT_texture_integer) { switch (internalFormat) { diff --git a/reactos/dll/opengl/mesa/main/texparam.c b/reactos/dll/opengl/mesa/main/texparam.c index 539bc189d57..13cf0b793b3 100644 --- a/reactos/dll/opengl/mesa/main/texparam.c +++ b/reactos/dll/opengl/mesa/main/texparam.c @@ -247,18 +247,10 @@ set_tex_parameterf(struct gl_context *ctx, case GL_TEXTURE_BORDER_COLOR: flush(ctx); - /* ARB_texture_float disables clamping */ - if (ctx->Extensions.ARB_texture_float) { - texObj->Sampler.BorderColor.f[RCOMP] = params[0]; - texObj->Sampler.BorderColor.f[GCOMP] = params[1]; - texObj->Sampler.BorderColor.f[BCOMP] = params[2]; - texObj->Sampler.BorderColor.f[ACOMP] = params[3]; - } else { - texObj->Sampler.BorderColor.f[RCOMP] = CLAMP(params[0], 0.0F, 1.0F); - texObj->Sampler.BorderColor.f[GCOMP] = CLAMP(params[1], 0.0F, 1.0F); - texObj->Sampler.BorderColor.f[BCOMP] = CLAMP(params[2], 0.0F, 1.0F); - texObj->Sampler.BorderColor.f[ACOMP] = CLAMP(params[3], 0.0F, 1.0F); - } + texObj->Sampler.BorderColor.f[RCOMP] = CLAMP(params[0], 0.0F, 1.0F); + texObj->Sampler.BorderColor.f[GCOMP] = CLAMP(params[1], 0.0F, 1.0F); + texObj->Sampler.BorderColor.f[BCOMP] = CLAMP(params[2], 0.0F, 1.0F); + texObj->Sampler.BorderColor.f[ACOMP] = CLAMP(params[3], 0.0F, 1.0F); return GL_TRUE; default: @@ -634,22 +626,6 @@ _mesa_GetTexLevelParameteriv( GLenum target, GLint level, } break; - /* GL_ARB_texture_float */ - case GL_TEXTURE_RED_TYPE_ARB: - case GL_TEXTURE_GREEN_TYPE_ARB: - case GL_TEXTURE_BLUE_TYPE_ARB: - case GL_TEXTURE_ALPHA_TYPE_ARB: - case GL_TEXTURE_LUMINANCE_TYPE_ARB: - case GL_TEXTURE_INTENSITY_TYPE_ARB: - case GL_TEXTURE_DEPTH_TYPE_ARB: - if (!ctx->Extensions.ARB_texture_float) - goto invalid_pname; - if (_mesa_base_format_has_channel(img->_BaseFormat, pname)) - *params = _mesa_get_format_datatype(texFormat); - else - *params = GL_NONE; - break; - default: goto invalid_pname; } diff --git a/reactos/dll/opengl/mesa/main/texstore.c b/reactos/dll/opengl/mesa/main/texstore.c index 397c69775d5..43b5b45ef18 100644 --- a/reactos/dll/opengl/mesa/main/texstore.c +++ b/reactos/dll/opengl/mesa/main/texstore.c @@ -2563,153 +2563,6 @@ _mesa_texstore_s8(TEXSTORE_PARAMS) } -/** - * Store an image in any of the formats: - * _mesa_texformat_rgba_float32 - * _mesa_texformat_rgb_float32 - * _mesa_texformat_alpha_float32 - * _mesa_texformat_luminance_float32 - * _mesa_texformat_luminance_alpha_float32 - * _mesa_texformat_intensity_float32 - */ -static GLboolean -_mesa_texstore_rgba_float32(TEXSTORE_PARAMS) -{ - const GLenum baseFormat = _mesa_get_format_base_format(dstFormat); - const GLint components = _mesa_components_in_format(baseFormat); - - ASSERT(dstFormat == MESA_FORMAT_RGBA_FLOAT32 || - dstFormat == MESA_FORMAT_RGB_FLOAT32 || - dstFormat == MESA_FORMAT_ALPHA_FLOAT32 || - dstFormat == MESA_FORMAT_LUMINANCE_FLOAT32 || - dstFormat == MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32 || - dstFormat == MESA_FORMAT_INTENSITY_FLOAT32 || - dstFormat == MESA_FORMAT_R_FLOAT32 || - dstFormat == MESA_FORMAT_RG_FLOAT32); - ASSERT(baseInternalFormat == GL_RGBA || - baseInternalFormat == GL_RGB || - baseInternalFormat == GL_ALPHA || - baseInternalFormat == GL_LUMINANCE || - baseInternalFormat == GL_LUMINANCE_ALPHA || - baseInternalFormat == GL_INTENSITY || - baseInternalFormat == GL_RED || - baseInternalFormat == GL_RG); - ASSERT(_mesa_get_format_bytes(dstFormat) == components * sizeof(GLfloat)); - - if (!ctx->_ImageTransferState && - !srcPacking->SwapBytes && - baseInternalFormat == srcFormat && - baseInternalFormat == baseFormat && - srcType == GL_FLOAT) { - /* simple memcpy path */ - memcpy_texture(ctx, dims, - dstFormat, - dstRowStride, dstSlices, - srcWidth, srcHeight, srcDepth, srcFormat, srcType, - srcAddr, srcPacking); - } - else { - /* general path */ - const GLfloat *tempImage = _mesa_make_temp_float_image(ctx, dims, - baseInternalFormat, - baseFormat, - srcWidth, srcHeight, srcDepth, - srcFormat, srcType, srcAddr, - srcPacking, - ctx->_ImageTransferState); - const GLfloat *srcRow = tempImage; - GLint bytesPerRow; - GLint img, row; - if (!tempImage) - return GL_FALSE; - bytesPerRow = srcWidth * components * sizeof(GLfloat); - for (img = 0; img < srcDepth; img++) { - GLubyte *dstRow = dstSlices[img]; - for (row = 0; row < srcHeight; row++) { - memcpy(dstRow, srcRow, bytesPerRow); - dstRow += dstRowStride; - srcRow += srcWidth * components; - } - } - - free((void *) tempImage); - } - return GL_TRUE; -} - - - -/** - * As above, but store 16-bit floats. - */ -static GLboolean -_mesa_texstore_rgba_float16(TEXSTORE_PARAMS) -{ - const GLenum baseFormat = _mesa_get_format_base_format(dstFormat); - const GLint components = _mesa_components_in_format(baseFormat); - - ASSERT(dstFormat == MESA_FORMAT_RGBA_FLOAT16 || - dstFormat == MESA_FORMAT_RGB_FLOAT16 || - dstFormat == MESA_FORMAT_ALPHA_FLOAT16 || - dstFormat == MESA_FORMAT_LUMINANCE_FLOAT16 || - dstFormat == MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16 || - dstFormat == MESA_FORMAT_INTENSITY_FLOAT16 || - dstFormat == MESA_FORMAT_R_FLOAT16 || - dstFormat == MESA_FORMAT_RG_FLOAT16); - ASSERT(baseInternalFormat == GL_RGBA || - baseInternalFormat == GL_RGB || - baseInternalFormat == GL_ALPHA || - baseInternalFormat == GL_LUMINANCE || - baseInternalFormat == GL_LUMINANCE_ALPHA || - baseInternalFormat == GL_INTENSITY || - baseInternalFormat == GL_RED || - baseInternalFormat == GL_RG); - ASSERT(_mesa_get_format_bytes(dstFormat) == components * sizeof(GLhalfARB)); - - if (!ctx->_ImageTransferState && - !srcPacking->SwapBytes && - baseInternalFormat == srcFormat && - baseInternalFormat == baseFormat && - srcType == GL_HALF_FLOAT_ARB) { - /* simple memcpy path */ - memcpy_texture(ctx, dims, - dstFormat, - dstRowStride, dstSlices, - srcWidth, srcHeight, srcDepth, srcFormat, srcType, - srcAddr, srcPacking); - } - else { - /* general path */ - const GLfloat *tempImage = _mesa_make_temp_float_image(ctx, dims, - baseInternalFormat, - baseFormat, - srcWidth, srcHeight, srcDepth, - srcFormat, srcType, srcAddr, - srcPacking, - ctx->_ImageTransferState); - const GLfloat *src = tempImage; - GLint img, row; - if (!tempImage) - return GL_FALSE; - for (img = 0; img < srcDepth; img++) { - GLubyte *dstRow = dstSlices[img]; - for (row = 0; row < srcHeight; row++) { - GLhalfARB *dstTexel = (GLhalfARB *) dstRow; - GLint i; - for (i = 0; i < srcWidth * components; i++) { - dstTexel[i] = _mesa_float_to_half(src[i]); - } - dstRow += dstRowStride; - src += srcWidth * components; - } - } - - free((void *) tempImage); - } - return GL_TRUE; -} - - /* non-normalized, signed int8 */ static GLboolean _mesa_texstore_rgba_int8(TEXSTORE_PARAMS) @@ -3186,18 +3039,6 @@ _mesa_get_texstore_func(gl_format format) table[MESA_FORMAT_Z24_X8] = _mesa_texstore_z24_x8; table[MESA_FORMAT_Z32] = _mesa_texstore_z32; table[MESA_FORMAT_S8] = _mesa_texstore_s8; - table[MESA_FORMAT_RGBA_FLOAT32] = _mesa_texstore_rgba_float32; - table[MESA_FORMAT_RGBA_FLOAT16] = _mesa_texstore_rgba_float16; - table[MESA_FORMAT_RGB_FLOAT32] = _mesa_texstore_rgba_float32; - table[MESA_FORMAT_RGB_FLOAT16] = _mesa_texstore_rgba_float16; - table[MESA_FORMAT_ALPHA_FLOAT32] = _mesa_texstore_rgba_float32; - table[MESA_FORMAT_ALPHA_FLOAT16] = _mesa_texstore_rgba_float16; - table[MESA_FORMAT_LUMINANCE_FLOAT32] = _mesa_texstore_rgba_float32; - table[MESA_FORMAT_LUMINANCE_FLOAT16] = _mesa_texstore_rgba_float16; - table[MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32] = _mesa_texstore_rgba_float32; - table[MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16] = _mesa_texstore_rgba_float16; - table[MESA_FORMAT_INTENSITY_FLOAT32] = _mesa_texstore_rgba_float32; - table[MESA_FORMAT_INTENSITY_FLOAT16] = _mesa_texstore_rgba_float16; table[MESA_FORMAT_SIGNED_RGBA_16] = _mesa_texstore_signed_rgba_16; table[MESA_FORMAT_RGBA_16] = _mesa_texstore_rgba_16; diff --git a/reactos/dll/opengl/mesa/main/varray.c b/reactos/dll/opengl/mesa/main/varray.c index a8b2b395c17..71b3eab96ba 100644 --- a/reactos/dll/opengl/mesa/main/varray.c +++ b/reactos/dll/opengl/mesa/main/varray.c @@ -59,11 +59,6 @@ type_to_bit(const struct gl_context *ctx, GLenum type) return INT_BIT; case GL_UNSIGNED_INT: return UNSIGNED_INT_BIT; - case GL_HALF_FLOAT: - if (ctx->Extensions.ARB_half_float_vertex) - return HALF_BIT; - else - return 0x0; case GL_FLOAT: return FLOAT_BIT; case GL_DOUBLE: diff --git a/reactos/dll/opengl/mesa/main/version.c b/reactos/dll/opengl/mesa/main/version.c index 55d3769c94c..7520274ba7d 100644 --- a/reactos/dll/opengl/mesa/main/version.c +++ b/reactos/dll/opengl/mesa/main/version.c @@ -79,10 +79,7 @@ compute_version(struct gl_context *ctx) ctx->Extensions.EXT_blend_equation_separate); const GLboolean ver_2_1 = (ver_2_0); const GLboolean ver_3_0 = (ver_2_1 && - ctx->Extensions.ARB_half_float_pixel && - ctx->Extensions.ARB_half_float_vertex && ctx->Extensions.ARB_map_buffer_range && - ctx->Extensions.ARB_texture_float && ctx->Extensions.APPLE_vertex_array_object); diff --git a/reactos/dll/opengl/mesa/swrast/s_texfetch.c b/reactos/dll/opengl/mesa/swrast/s_texfetch.c index d3207425d53..e8025fa869d 100644 --- a/reactos/dll/opengl/mesa/swrast/s_texfetch.c +++ b/reactos/dll/opengl/mesa/swrast/s_texfetch.c @@ -325,79 +325,6 @@ texfetch_funcs[MESA_FORMAT_COUNT] = NULL, NULL }, - { - MESA_FORMAT_RGBA_FLOAT32, - fetch_texel_1d_f_rgba_f32, - fetch_texel_2d_f_rgba_f32, - fetch_texel_3d_f_rgba_f32 - }, - { - MESA_FORMAT_RGBA_FLOAT16, - fetch_texel_1d_f_rgba_f16, - fetch_texel_2d_f_rgba_f16, - fetch_texel_3d_f_rgba_f16 - }, - { - MESA_FORMAT_RGB_FLOAT32, - fetch_texel_1d_f_rgb_f32, - fetch_texel_2d_f_rgb_f32, - fetch_texel_3d_f_rgb_f32 - }, - { - MESA_FORMAT_RGB_FLOAT16, - fetch_texel_1d_f_rgb_f16, - fetch_texel_2d_f_rgb_f16, - fetch_texel_3d_f_rgb_f16 - }, - { - MESA_FORMAT_ALPHA_FLOAT32, - fetch_texel_1d_f_alpha_f32, - fetch_texel_2d_f_alpha_f32, - fetch_texel_3d_f_alpha_f32 - }, - { - MESA_FORMAT_ALPHA_FLOAT16, - fetch_texel_1d_f_alpha_f16, - fetch_texel_2d_f_alpha_f16, - fetch_texel_3d_f_alpha_f16 - }, - { - MESA_FORMAT_LUMINANCE_FLOAT32, - fetch_texel_1d_f_luminance_f32, - fetch_texel_2d_f_luminance_f32, - fetch_texel_3d_f_luminance_f32 - }, - { - MESA_FORMAT_LUMINANCE_FLOAT16, - fetch_texel_1d_f_luminance_f16, - fetch_texel_2d_f_luminance_f16, - fetch_texel_3d_f_luminance_f16 - }, - { - MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32, - fetch_texel_1d_f_luminance_alpha_f32, - fetch_texel_2d_f_luminance_alpha_f32, - fetch_texel_3d_f_luminance_alpha_f32 - }, - { - MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16, - fetch_texel_1d_f_luminance_alpha_f16, - fetch_texel_2d_f_luminance_alpha_f16, - fetch_texel_3d_f_luminance_alpha_f16 - }, - { - MESA_FORMAT_INTENSITY_FLOAT32, - fetch_texel_1d_f_intensity_f32, - fetch_texel_2d_f_intensity_f32, - fetch_texel_3d_f_intensity_f32 - }, - { - MESA_FORMAT_INTENSITY_FLOAT16, - fetch_texel_1d_f_intensity_f16, - fetch_texel_2d_f_intensity_f16, - fetch_texel_3d_f_intensity_f16 - }, - { MESA_FORMAT_ALPHA_UINT8, NULL, diff --git a/reactos/dll/opengl/mesa/swrast/s_texfetch_tmp.h b/reactos/dll/opengl/mesa/swrast/s_texfetch_tmp.h index da996b8a100..88ebec98c9e 100644 --- a/reactos/dll/opengl/mesa/swrast/s_texfetch_tmp.h +++ b/reactos/dll/opengl/mesa/swrast/s_texfetch_tmp.h @@ -97,219 +97,6 @@ static void FETCH(f_z16)(const struct swrast_texture_image *texImage, -/* MESA_FORMAT_RGBA_F32 ******************************************************/ - -/* Fetch texel from 1D, 2D or 3D RGBA_FLOAT32 texture, returning 4 GLfloats. - */ -static void FETCH(f_rgba_f32)( const struct swrast_texture_image *texImage, - GLint i, GLint j, GLint k, GLfloat *texel ) -{ - const GLfloat *src = TEXEL_ADDR(GLfloat, texImage, i, j, k, 4); - texel[RCOMP] = src[0]; - texel[GCOMP] = src[1]; - texel[BCOMP] = src[2]; - texel[ACOMP] = src[3]; -} - - - - -/* MESA_FORMAT_RGBA_F16 ******************************************************/ - -/* Fetch texel from 1D, 2D or 3D RGBA_FLOAT16 texture, - * returning 4 GLfloats. - */ -static void FETCH(f_rgba_f16)( const struct swrast_texture_image *texImage, - GLint i, GLint j, GLint k, GLfloat *texel ) -{ - const GLhalfARB *src = TEXEL_ADDR(GLhalfARB, texImage, i, j, k, 4); - texel[RCOMP] = _mesa_half_to_float(src[0]); - texel[GCOMP] = _mesa_half_to_float(src[1]); - texel[BCOMP] = _mesa_half_to_float(src[2]); - texel[ACOMP] = _mesa_half_to_float(src[3]); -} - - - -/* MESA_FORMAT_RGB_F32 *******************************************************/ - -/* Fetch texel from 1D, 2D or 3D RGB_FLOAT32 texture, - * returning 4 GLfloats. - */ -static void FETCH(f_rgb_f32)( const struct swrast_texture_image *texImage, - GLint i, GLint j, GLint k, GLfloat *texel ) -{ - const GLfloat *src = TEXEL_ADDR(GLfloat, texImage, i, j, k, 3); - texel[RCOMP] = src[0]; - texel[GCOMP] = src[1]; - texel[BCOMP] = src[2]; - texel[ACOMP] = 1.0F; -} - - - - -/* MESA_FORMAT_RGB_F16 *******************************************************/ - -/* Fetch texel from 1D, 2D or 3D RGB_FLOAT16 texture, - * returning 4 GLfloats. - */ -static void FETCH(f_rgb_f16)( const struct swrast_texture_image *texImage, - GLint i, GLint j, GLint k, GLfloat *texel ) -{ - const GLhalfARB *src = TEXEL_ADDR(GLhalfARB, texImage, i, j, k, 3); - texel[RCOMP] = _mesa_half_to_float(src[0]); - texel[GCOMP] = _mesa_half_to_float(src[1]); - texel[BCOMP] = _mesa_half_to_float(src[2]); - texel[ACOMP] = 1.0F; -} - - - - -/* MESA_FORMAT_ALPHA_F32 *****************************************************/ - -/* Fetch texel from 1D, 2D or 3D ALPHA_FLOAT32 texture, - * returning 4 GLfloats. - */ -static void FETCH(f_alpha_f32)( const struct swrast_texture_image *texImage, - GLint i, GLint j, GLint k, GLfloat *texel ) -{ - const GLfloat *src = TEXEL_ADDR(GLfloat, texImage, i, j, k, 1); - texel[RCOMP] = - texel[GCOMP] = - texel[BCOMP] = 0.0F; - texel[ACOMP] = src[0]; -} - - - - -/* MESA_FORMAT_ALPHA_F32 *****************************************************/ - -/* Fetch texel from 1D, 2D or 3D ALPHA_FLOAT16 texture, - * returning 4 GLfloats. - */ -static void FETCH(f_alpha_f16)( const struct swrast_texture_image *texImage, - GLint i, GLint j, GLint k, GLfloat *texel ) -{ - const GLhalfARB *src = TEXEL_ADDR(GLhalfARB, texImage, i, j, k, 1); - texel[RCOMP] = - texel[GCOMP] = - texel[BCOMP] = 0.0F; - texel[ACOMP] = _mesa_half_to_float(src[0]); -} - - - - -/* MESA_FORMAT_LUMINANCE_F32 *************************************************/ - -/* Fetch texel from 1D, 2D or 3D LUMINANCE_FLOAT32 texture, - * returning 4 GLfloats. - */ -static void FETCH(f_luminance_f32)( const struct swrast_texture_image *texImage, - GLint i, GLint j, GLint k, GLfloat *texel ) -{ - const GLfloat *src = TEXEL_ADDR(GLfloat, texImage, i, j, k, 1); - texel[RCOMP] = - texel[GCOMP] = - texel[BCOMP] = src[0]; - texel[ACOMP] = 1.0F; -} - - - - -/* MESA_FORMAT_LUMINANCE_F16 *************************************************/ - -/* Fetch texel from 1D, 2D or 3D LUMINANCE_FLOAT16 texture, - * returning 4 GLfloats. - */ -static void FETCH(f_luminance_f16)( const struct swrast_texture_image *texImage, - GLint i, GLint j, GLint k, GLfloat *texel ) -{ - const GLhalfARB *src = TEXEL_ADDR(GLhalfARB, texImage, i, j, k, 1); - texel[RCOMP] = - texel[GCOMP] = - texel[BCOMP] = _mesa_half_to_float(src[0]); - texel[ACOMP] = 1.0F; -} - - - - -/* MESA_FORMAT_LUMINANCE_ALPHA_F32 *******************************************/ - -/* Fetch texel from 1D, 2D or 3D LUMINANCE_ALPHA_FLOAT32 texture, - * returning 4 GLfloats. - */ -static void FETCH(f_luminance_alpha_f32)( const struct swrast_texture_image *texImage, - GLint i, GLint j, GLint k, GLfloat *texel ) -{ - const GLfloat *src = TEXEL_ADDR(GLfloat, texImage, i, j, k, 2); - texel[RCOMP] = - texel[GCOMP] = - texel[BCOMP] = src[0]; - texel[ACOMP] = src[1]; -} - - - - -/* MESA_FORMAT_LUMINANCE_ALPHA_F16 *******************************************/ - -/* Fetch texel from 1D, 2D or 3D LUMINANCE_ALPHA_FLOAT16 texture, - * returning 4 GLfloats. - */ -static void FETCH(f_luminance_alpha_f16)( const struct swrast_texture_image *texImage, - GLint i, GLint j, GLint k, GLfloat *texel ) -{ - const GLhalfARB *src = TEXEL_ADDR(GLhalfARB, texImage, i, j, k, 2); - texel[RCOMP] = - texel[GCOMP] = - texel[BCOMP] = _mesa_half_to_float(src[0]); - texel[ACOMP] = _mesa_half_to_float(src[1]); -} - - - - -/* MESA_FORMAT_INTENSITY_F32 *************************************************/ - -/* Fetch texel from 1D, 2D or 3D INTENSITY_FLOAT32 texture, - * returning 4 GLfloats. - */ -static void FETCH(f_intensity_f32)( const struct swrast_texture_image *texImage, - GLint i, GLint j, GLint k, GLfloat *texel ) -{ - const GLfloat *src = TEXEL_ADDR(GLfloat, texImage, i, j, k, 1); - texel[RCOMP] = - texel[GCOMP] = - texel[BCOMP] = - texel[ACOMP] = src[0]; -} - - - - -/* MESA_FORMAT_INTENSITY_F16 *************************************************/ - -/* Fetch texel from 1D, 2D or 3D INTENSITY_FLOAT16 texture, - * returning 4 GLfloats. - */ -static void FETCH(f_intensity_f16)( const struct swrast_texture_image *texImage, - GLint i, GLint j, GLint k, GLfloat *texel ) -{ - const GLhalfARB *src = TEXEL_ADDR(GLhalfARB, texImage, i, j, k, 1); - texel[RCOMP] = - texel[GCOMP] = - texel[BCOMP] = - texel[ACOMP] = _mesa_half_to_float(src[0]); -} - - - /* * Begin Hardware formats */ diff --git a/reactos/dll/opengl/mesa/tnl/t_draw.c b/reactos/dll/opengl/mesa/tnl/t_draw.c index afcebc9d434..5314b86037b 100644 --- a/reactos/dll/opengl/mesa/tnl/t_draw.c +++ b/reactos/dll/opengl/mesa/tnl/t_draw.c @@ -73,24 +73,6 @@ static void free_space(struct gl_context *ctx) } \ } while (0) - -static void -convert_half_to_float(const struct gl_client_array *input, - const GLubyte *ptr, GLfloat *fptr, - GLuint count, GLuint sz) -{ - GLuint i, j; - - for (i = 0; i < count; i++) { - GLhalfARB *in = (GLhalfARB *)ptr; - - for (j = 0; j < sz; j++) { - *fptr++ = _mesa_half_to_float(in[j]); - } - ptr += input->StrideB; - } -} - /** * \brief Convert fixed-point to floating-point. * @@ -168,9 +150,6 @@ static void _tnl_import_array( struct gl_context *ctx, case GL_DOUBLE: CONVERT(GLdouble, (GLfloat)); break; - case GL_HALF_FLOAT: - convert_half_to_float(input, ptr, fptr, count, sz); - break; case GL_FIXED: convert_fixed_to_float(input, ptr, fptr, count); break; From f2e556cc0ab982b3af31ed90b96a43e890316037 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Gardou?= Date: Mon, 16 Jun 2014 19:16:37 +0000 Subject: [PATCH 201/232] [OPENGL32/MESA] - Get rid of non-power-of-two and 3D textures - Some cleanup of previous work CORE-7499 svn path=/trunk/; revision=63607 --- .../opengl/mesa/drivers/common/driverfuncs.c | 3 - reactos/dll/opengl/mesa/drivers/common/meta.c | 304 ---------------- reactos/dll/opengl/mesa/drivers/common/meta.h | 8 - reactos/dll/opengl/mesa/main/api_exec.c | 14 - reactos/dll/opengl/mesa/main/attrib.c | 2 - reactos/dll/opengl/mesa/main/config.h | 4 - reactos/dll/opengl/mesa/main/context.c | 1 - reactos/dll/opengl/mesa/main/dd.h | 57 --- reactos/dll/opengl/mesa/main/dispatch.h | 36 -- reactos/dll/opengl/mesa/main/dlist.c | 159 --------- reactos/dll/opengl/mesa/main/enable.c | 7 - reactos/dll/opengl/mesa/main/extensions.c | 6 - reactos/dll/opengl/mesa/main/get.c | 11 - reactos/dll/opengl/mesa/main/glheader.h | 5 - reactos/dll/opengl/mesa/main/mfeatures.h | 4 - reactos/dll/opengl/mesa/main/mtypes.h | 6 +- reactos/dll/opengl/mesa/main/shared.c | 1 - reactos/dll/opengl/mesa/main/texformat.c | 1 - reactos/dll/opengl/mesa/main/texgetimage.c | 3 - reactos/dll/opengl/mesa/main/teximage.c | 165 +-------- reactos/dll/opengl/mesa/main/teximage.h | 26 -- reactos/dll/opengl/mesa/main/texobj.c | 52 --- reactos/dll/opengl/mesa/main/texparam.c | 2 - reactos/dll/opengl/mesa/main/texstate.c | 1 - reactos/dll/opengl/mesa/main/texstorage.c | 8 - reactos/dll/opengl/mesa/main/texstore.c | 56 --- reactos/dll/opengl/mesa/main/texstore.h | 18 - reactos/dll/opengl/mesa/main/version.c | 1 - reactos/dll/opengl/mesa/swrast/s_texfilter.c | 330 ------------------ reactos/dll/opengl/mesa/swrast/s_texture.c | 9 - 30 files changed, 9 insertions(+), 1291 deletions(-) diff --git a/reactos/dll/opengl/mesa/drivers/common/driverfuncs.c b/reactos/dll/opengl/mesa/drivers/common/driverfuncs.c index 25261d24ac9..286aa9fe7a3 100644 --- a/reactos/dll/opengl/mesa/drivers/common/driverfuncs.c +++ b/reactos/dll/opengl/mesa/drivers/common/driverfuncs.c @@ -84,14 +84,11 @@ _mesa_init_driver_functions(struct dd_function_table *driver) driver->ChooseTextureFormat = _mesa_choose_tex_format; driver->TexImage1D = _mesa_store_teximage1d; driver->TexImage2D = _mesa_store_teximage2d; - driver->TexImage3D = _mesa_store_teximage3d; driver->TexSubImage1D = _mesa_store_texsubimage1d; driver->TexSubImage2D = _mesa_store_texsubimage2d; - driver->TexSubImage3D = _mesa_store_texsubimage3d; driver->GetTexImage = _mesa_get_teximage; driver->CopyTexSubImage1D = _mesa_meta_CopyTexSubImage1D; driver->CopyTexSubImage2D = _mesa_meta_CopyTexSubImage2D; - driver->CopyTexSubImage3D = _mesa_meta_CopyTexSubImage3D; driver->TestProxyTexImage = _mesa_test_proxy_teximage; driver->BindTexture = NULL; driver->NewTextureObject = _mesa_new_texture_object; diff --git a/reactos/dll/opengl/mesa/drivers/common/meta.c b/reactos/dll/opengl/mesa/drivers/common/meta.c index 19bf52a825e..d7d79dcf6a2 100644 --- a/reactos/dll/opengl/mesa/drivers/common/meta.c +++ b/reactos/dll/opengl/mesa/drivers/common/meta.c @@ -152,23 +152,6 @@ struct save_state GLboolean RasterDiscard; }; -/** - * Temporary texture used for glBlitFramebuffer, glDrawPixels, etc. - * This is currently shared by all the meta ops. But we could create a - * separate one for each of glDrawPixel, glBlitFramebuffer, glCopyPixels, etc. - */ -struct temp_texture -{ - GLuint TexObj; - GLenum Target; /**< GL_TEXTURE_2D */ - GLsizei MinSize; /**< Min texture size to allocate */ - GLsizei MaxSize; /**< Max possible texture size */ - GLboolean NPOT; /**< Non-power of two size OK? */ - GLsizei Width, Height; /**< Current texture size */ - GLenum IntFormat; - GLfloat Sright, Ttop; /**< right, top texcoords */ -}; - /** * State for glBlitFramebufer() @@ -216,13 +199,9 @@ struct gl_meta_state /** Save stack depth */ GLuint SaveStackDepth; - struct temp_texture TempTex; - struct copypix_state CopyPix; /**< For _mesa_meta_CopyPixels() */ }; -static void cleanup_temp_texture(struct gl_context *ctx, struct temp_texture *tex); - /** * Initialize meta-ops for a context. * To be called once during context creation. @@ -245,7 +224,6 @@ _mesa_meta_free(struct gl_context *ctx) { GET_CURRENT_CONTEXT(old_context); _mesa_make_current(ctx, NULL, NULL); - cleanup_temp_texture(ctx, &ctx->Meta->TempTex); if (old_context) _mesa_make_current(old_context, old_context->WinSysDrawBuffer, old_context->WinSysReadBuffer); else @@ -382,7 +360,6 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state) ctx->Texture.Unit.TexGenEnabled) { _mesa_set_enable(ctx, GL_TEXTURE_1D, GL_FALSE); _mesa_set_enable(ctx, GL_TEXTURE_2D, GL_FALSE); - _mesa_set_enable(ctx, GL_TEXTURE_3D, GL_FALSE); if (ctx->Extensions.ARB_texture_cube_map) _mesa_set_enable(ctx, GL_TEXTURE_CUBE_MAP, GL_FALSE); _mesa_set_enable(ctx, GL_TEXTURE_GEN_S, GL_FALSE); @@ -662,270 +639,6 @@ _mesa_meta_in_progress(struct gl_context *ctx) } -/** - * Convert Z from a normalized value in the range [0, 1] to an object-space - * Z coordinate in [-1, +1] so that drawing at the new Z position with the - * default/identity ortho projection results in the original Z value. - * Used by the meta-Clear, Draw/CopyPixels and Bitmap functions where the Z - * value comes from the clear value or raster position. - */ -static INLINE GLfloat -invert_z(GLfloat normZ) -{ - GLfloat objZ = 1.0f - 2.0f * normZ; - return objZ; -} - - -/** - * One-time init for a temp_texture object. - * Choose tex target, compute max tex size, etc. - */ -static void -init_temp_texture(struct gl_context *ctx, struct temp_texture *tex) -{ - /* use 2D texture, NPOT if possible */ - tex->Target = GL_TEXTURE_2D; - tex->MaxSize = 1 << (ctx->Const.MaxTextureLevels - 1); - tex->NPOT = ctx->Extensions.ARB_texture_non_power_of_two; - tex->MinSize = 16; /* 16 x 16 at least */ - assert(tex->MaxSize > 0); - - _mesa_GenTextures(1, &tex->TexObj); -} - -static void -cleanup_temp_texture(struct gl_context *ctx, struct temp_texture *tex) -{ - if (!tex->TexObj) - return; - _mesa_DeleteTextures(1, &tex->TexObj); - tex->TexObj = 0; -} - - -/** - * Return pointer to temp_texture info for non-bitmap ops. - * This does some one-time init if needed. - */ -static struct temp_texture * -get_temp_texture(struct gl_context *ctx) -{ - struct temp_texture *tex = &ctx->Meta->TempTex; - - if (!tex->TexObj) { - init_temp_texture(ctx, tex); - } - - return tex; -} - - -/** - * Compute the width/height of texture needed to draw an image of the - * given size. Return a flag indicating whether the current texture - * can be re-used (glTexSubImage2D) or if a new texture needs to be - * allocated (glTexImage2D). - * Also, compute s/t texcoords for drawing. - * - * \return GL_TRUE if new texture is needed, GL_FALSE otherwise - */ -static GLboolean -alloc_texture(struct temp_texture *tex, - GLsizei width, GLsizei height, GLenum intFormat) -{ - GLboolean newTex = GL_FALSE; - - ASSERT(width <= tex->MaxSize); - ASSERT(height <= tex->MaxSize); - - if (width > tex->Width || - height > tex->Height || - intFormat != tex->IntFormat) { - /* alloc new texture (larger or different format) */ - - if (tex->NPOT) { - /* use non-power of two size */ - tex->Width = MAX2(tex->MinSize, width); - tex->Height = MAX2(tex->MinSize, height); - } - else { - /* find power of two size */ - GLsizei w, h; - w = h = tex->MinSize; - while (w < width) - w *= 2; - while (h < height) - h *= 2; - tex->Width = w; - tex->Height = h; - } - - tex->IntFormat = intFormat; - - newTex = GL_TRUE; - } - - /* compute texcoords */ - tex->Sright = (GLfloat) width / tex->Width; - tex->Ttop = (GLfloat) height / tex->Height; - - return newTex; -} - - -/** - * Setup/load texture for glCopyPixels or glBlitFramebuffer. - */ -static void -setup_copypix_texture(struct temp_texture *tex, - GLboolean newTex, - GLint srcX, GLint srcY, - GLsizei width, GLsizei height, GLenum intFormat, - GLenum filter) -{ - _mesa_BindTexture(tex->Target, tex->TexObj); - _mesa_TexParameteri(tex->Target, GL_TEXTURE_MIN_FILTER, filter); - _mesa_TexParameteri(tex->Target, GL_TEXTURE_MAG_FILTER, filter); - _mesa_TexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - - /* copy framebuffer image to texture */ - if (newTex) { - /* create new tex image */ - if (tex->Width == width && tex->Height == height) { - /* create new tex with framebuffer data */ - _mesa_CopyTexImage2D(tex->Target, 0, tex->IntFormat, - srcX, srcY, width, height, 0); - } - else { - /* create empty texture */ - _mesa_TexImage2D(tex->Target, 0, tex->IntFormat, - tex->Width, tex->Height, 0, - intFormat, GL_UNSIGNED_BYTE, NULL); - /* load image */ - _mesa_CopyTexSubImage2D(tex->Target, 0, - 0, 0, srcX, srcY, width, height); - } - } - else { - /* replace existing tex image */ - _mesa_CopyTexSubImage2D(tex->Target, 0, - 0, 0, srcX, srcY, width, height); - } -} - -/** - * Meta implementation of ctx->Driver.CopyPixels() in terms - * of texture mapping and polygon rendering and GLSL shaders. - */ -void -_mesa_meta_CopyPixels(struct gl_context *ctx, GLint srcX, GLint srcY, - GLsizei width, GLsizei height, - GLint dstX, GLint dstY, GLenum type) -{ - struct copypix_state *copypix = &ctx->Meta->CopyPix; - struct temp_texture *tex = get_temp_texture(ctx); - struct vertex { - GLfloat x, y, z, s, t; - }; - struct vertex verts[4]; - GLboolean newTex; - GLenum intFormat = GL_RGBA; - - if (type != GL_COLOR || - ctx->_ImageTransferState || - ctx->Fog.Enabled || - width > tex->MaxSize || - height > tex->MaxSize) { - /* XXX avoid this fallback */ - _swrast_CopyPixels(ctx, srcX, srcY, width, height, dstX, dstY, type); - return; - } - - /* Most GL state applies to glCopyPixels, but a there's a few things - * we need to override: - */ - _mesa_meta_begin(ctx, (MESA_META_RASTERIZATION | - MESA_META_TEXTURE | - MESA_META_TRANSFORM | - MESA_META_CLIP | - MESA_META_VERTEX | - MESA_META_VIEWPORT)); - - if (copypix->ArrayObj == 0) { - /* one-time setup */ - - /* create vertex array object */ - _mesa_GenVertexArrays(1, ©pix->ArrayObj); - _mesa_BindVertexArray(copypix->ArrayObj); - - /* create vertex array buffer */ - _mesa_GenBuffersARB(1, ©pix->VBO); - _mesa_BindBufferARB(GL_ARRAY_BUFFER_ARB, copypix->VBO); - _mesa_BufferDataARB(GL_ARRAY_BUFFER_ARB, sizeof(verts), - NULL, GL_DYNAMIC_DRAW_ARB); - - /* setup vertex arrays */ - _mesa_VertexPointer(3, GL_FLOAT, sizeof(struct vertex), OFFSET(x)); - _mesa_TexCoordPointer(2, GL_FLOAT, sizeof(struct vertex), OFFSET(s)); - _mesa_EnableClientState(GL_VERTEX_ARRAY); - _mesa_EnableClientState(GL_TEXTURE_COORD_ARRAY); - } - else { - _mesa_BindVertexArray(copypix->ArrayObj); - _mesa_BindBufferARB(GL_ARRAY_BUFFER_ARB, copypix->VBO); - } - - newTex = alloc_texture(tex, width, height, intFormat); - - /* vertex positions, texcoords (after texture allocation!) */ - { - const GLfloat dstX0 = (GLfloat) dstX; - const GLfloat dstY0 = (GLfloat) dstY; - const GLfloat dstX1 = dstX + width * ctx->Pixel.ZoomX; - const GLfloat dstY1 = dstY + height * ctx->Pixel.ZoomY; - const GLfloat z = invert_z(ctx->Current.RasterPos[2]); - - verts[0].x = dstX0; - verts[0].y = dstY0; - verts[0].z = z; - verts[0].s = 0.0F; - verts[0].t = 0.0F; - verts[1].x = dstX1; - verts[1].y = dstY0; - verts[1].z = z; - verts[1].s = tex->Sright; - verts[1].t = 0.0F; - verts[2].x = dstX1; - verts[2].y = dstY1; - verts[2].z = z; - verts[2].s = tex->Sright; - verts[2].t = tex->Ttop; - verts[3].x = dstX0; - verts[3].y = dstY1; - verts[3].z = z; - verts[3].s = 0.0F; - verts[3].t = tex->Ttop; - - /* upload new vertex data */ - _mesa_BufferSubDataARB(GL_ARRAY_BUFFER_ARB, 0, sizeof(verts), verts); - } - - /* Alloc/setup texture */ - setup_copypix_texture(tex, newTex, srcX, srcY, width, height, - GL_RGBA, GL_NEAREST); - - _mesa_set_enable(ctx, tex->Target, GL_TRUE); - - /* draw textured quad */ - _mesa_DrawArrays(GL_TRIANGLE_FAN, 0, 4); - - _mesa_set_enable(ctx, tex->Target, GL_FALSE); - - _mesa_meta_end(ctx); -} - - /** * Determine the GL data type to use for the temporary image read with * ReadPixels() and passed to Tex[Sub]Image(). @@ -1031,11 +744,6 @@ copy_tex_sub_image(struct gl_context *ctx, xoffset, width, format, type, buf, &ctx->Unpack); } - else if (target == GL_TEXTURE_3D) { - ctx->Driver.TexSubImage3D(ctx, texImage, - xoffset, yoffset, zoffset, width, height, 1, - format, type, buf, &ctx->Unpack); - } else { ctx->Driver.TexSubImage2D(ctx, texImage, xoffset, yoffset, width, height, @@ -1073,15 +781,3 @@ _mesa_meta_CopyTexSubImage2D(struct gl_context *ctx, rb, x, y, width, height); } - -void -_mesa_meta_CopyTexSubImage3D(struct gl_context *ctx, - struct gl_texture_image *texImage, - GLint xoffset, GLint yoffset, GLint zoffset, - struct gl_renderbuffer *rb, - GLint x, GLint y, - GLsizei width, GLsizei height) -{ - copy_tex_sub_image(ctx, 3, texImage, xoffset, yoffset, zoffset, - rb, x, y, width, height); -} diff --git a/reactos/dll/opengl/mesa/drivers/common/meta.h b/reactos/dll/opengl/mesa/drivers/common/meta.h index 1e2656af014..388f6aeb2ab 100644 --- a/reactos/dll/opengl/mesa/drivers/common/meta.h +++ b/reactos/dll/opengl/mesa/drivers/common/meta.h @@ -88,12 +88,4 @@ _mesa_meta_CopyTexSubImage2D(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height); -extern void -_mesa_meta_CopyTexSubImage3D(struct gl_context *ctx, - struct gl_texture_image *texImage, - GLint xoffset, GLint yoffset, GLint zoffset, - struct gl_renderbuffer *rb, - GLint x, GLint y, - GLsizei width, GLsizei height); - #endif /* META_H */ diff --git a/reactos/dll/opengl/mesa/main/api_exec.c b/reactos/dll/opengl/mesa/main/api_exec.c index 2e8f24cdb3c..245597cd294 100644 --- a/reactos/dll/opengl/mesa/main/api_exec.c +++ b/reactos/dll/opengl/mesa/main/api_exec.c @@ -208,13 +208,6 @@ _mesa_create_exec_table(void) SET_VertexPointer(exec, _mesa_VertexPointer); #endif - /* 1.2 */ -#if _HAVE_FULL_GL - SET_CopyTexSubImage3D(exec, _mesa_CopyTexSubImage3D); - SET_TexImage3D(exec, _mesa_TexImage3D); - SET_TexSubImage3D(exec, _mesa_TexSubImage3D); -#endif - /* OpenGL 1.2 GL_ARB_imaging */ SET_BlendColor(exec, _mesa_BlendColor); SET_BlendEquation(exec, _mesa_BlendEquation); @@ -234,13 +227,6 @@ _mesa_create_exec_table(void) SET_PolygonOffsetEXT(exec, _mesa_PolygonOffsetEXT); #endif - /* 6. GL_EXT_texture3d */ -#if 0 -/* SET_CopyTexSubImage3DEXT(exec, _mesa_CopyTexSubImage3D); */ -/* SET_TexImage3DEXT(exec, _mesa_TexImage3DEXT); */ -/* SET_TexSubImage3DEXT(exec, _mesa_TexSubImage3D); */ -#endif - /* 11. GL_EXT_histogram */ #if 0 SET_GetHistogramEXT(exec, _mesa_GetHistogram); diff --git a/reactos/dll/opengl/mesa/main/attrib.c b/reactos/dll/opengl/mesa/main/attrib.c index 1a1dce79675..761831ec0da 100644 --- a/reactos/dll/opengl/mesa/main/attrib.c +++ b/reactos/dll/opengl/mesa/main/attrib.c @@ -529,7 +529,6 @@ pop_enable_group(struct gl_context *ctx, const struct gl_enable_attrib *enable) if (ctx->Texture.Unit.Enabled != enabled) { _mesa_set_enable(ctx, GL_TEXTURE_1D, !!(enabled & TEXTURE_1D_BIT)); _mesa_set_enable(ctx, GL_TEXTURE_2D, !!(enabled & TEXTURE_2D_BIT)); - _mesa_set_enable(ctx, GL_TEXTURE_3D, !!(enabled & TEXTURE_3D_BIT)); if (ctx->Extensions.ARB_texture_cube_map) { _mesa_set_enable(ctx, GL_TEXTURE_CUBE_MAP, !!(enabled & TEXTURE_CUBE_BIT)); @@ -561,7 +560,6 @@ pop_texture_group(struct gl_context *ctx, struct texture_state *texstate) _mesa_set_enable(ctx, GL_TEXTURE_1D, !!(unit->Enabled & TEXTURE_1D_BIT)); _mesa_set_enable(ctx, GL_TEXTURE_2D, !!(unit->Enabled & TEXTURE_2D_BIT)); - _mesa_set_enable(ctx, GL_TEXTURE_3D, !!(unit->Enabled & TEXTURE_3D_BIT)); _mesa_TexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, unit->EnvMode); _mesa_TexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, unit->EnvColor); diff --git a/reactos/dll/opengl/mesa/main/config.h b/reactos/dll/opengl/mesa/main/config.h index c88dfc941ed..6a87467b0b6 100644 --- a/reactos/dll/opengl/mesa/main/config.h +++ b/reactos/dll/opengl/mesa/main/config.h @@ -135,7 +135,6 @@ #undef MAX_WIDTH #undef MAX_HEIGHT #define MAX_TEXTURE_LEVELS 13 -#define MAX_3D_TEXTURE_LEVELS 9 #define MAX_CUBE_TEXTURE_LEVELS 13 #define MAX_WIDTH 4096 #define MAX_HEIGHT 4096 @@ -155,9 +154,6 @@ /** Max convolution filter height */ #define MAX_CONVOLUTION_HEIGHT 9 -/** For GL_ARB_texture_compression */ -#define MAX_COMPRESSED_TEXTURE_FORMATS 25 - /** For GL_EXT_texture_filter_anisotropic */ #define MAX_TEXTURE_MAX_ANISOTROPY 16.0 diff --git a/reactos/dll/opengl/mesa/main/context.c b/reactos/dll/opengl/mesa/main/context.c index ac1e0c5b0c6..14e64c555f3 100644 --- a/reactos/dll/opengl/mesa/main/context.c +++ b/reactos/dll/opengl/mesa/main/context.c @@ -392,7 +392,6 @@ _mesa_init_constants(struct gl_context *ctx) /* Constants, may be overriden (usually only reduced) by device drivers */ ctx->Const.MaxTextureMbytes = MAX_TEXTURE_MBYTES; ctx->Const.MaxTextureLevels = MAX_TEXTURE_LEVELS; - ctx->Const.Max3DTextureLevels = MAX_3D_TEXTURE_LEVELS; ctx->Const.MaxCubeTextureLevels = MAX_CUBE_TEXTURE_LEVELS; ctx->Const.MaxTextureMaxAnisotropy = MAX_TEXTURE_MAX_ANISOTROPY; ctx->Const.MaxArrayLockSize = MAX_ARRAY_LOCK_SIZE; diff --git a/reactos/dll/opengl/mesa/main/dd.h b/reactos/dll/opengl/mesa/main/dd.h index 1af1c0ffad7..05c89781dd3 100644 --- a/reactos/dll/opengl/mesa/main/dd.h +++ b/reactos/dll/opengl/mesa/main/dd.h @@ -220,18 +220,6 @@ struct dd_function_table { GLint width, GLint height, GLint border, GLenum format, GLenum type, const GLvoid *pixels, const struct gl_pixelstore_attrib *packing); - - /** - * Called by glTexImage3D(). - * - * \sa dd_function_table::TexImage1D. - */ - void (*TexImage3D)(struct gl_context *ctx, - struct gl_texture_image *texImage, - GLint internalFormat, - GLint width, GLint height, GLint depth, GLint border, - GLenum format, GLenum type, const GLvoid *pixels, - const struct gl_pixelstore_attrib *packing); /** * Called by glTexSubImage1D(). Replace a subset of the target texture @@ -257,19 +245,6 @@ struct dd_function_table { GLenum format, GLenum type, const GLvoid *pixels, const struct gl_pixelstore_attrib *packing); - - /** - * Called by glTexSubImage3D(). - * - * \sa dd_function_table::TexSubImage1D. - */ - void (*TexSubImage3D)(struct gl_context *ctx, - struct gl_texture_image *texImage, - GLint xoffset, GLint yoffset, GLint zoffset, - GLsizei width, GLsizei height, GLint depth, - GLenum format, GLenum type, - const GLvoid *pixels, - const struct gl_pixelstore_attrib *packing); /** @@ -298,16 +273,6 @@ struct dd_function_table { GLint x, GLint y, GLsizei width, GLsizei height); - /** - * Called by glCopyTexSubImage3D() and glCopyTexImage3D(). - */ - void (*CopyTexSubImage3D)(struct gl_context *ctx, - struct gl_texture_image *texImage, - GLint xoffset, GLint yoffset, GLint zoffset, - struct gl_renderbuffer *rb, - GLint x, GLint y, - GLsizei width, GLsizei height); - /** * Called by glTexImage[123]D when user specifies a proxy texture * target. @@ -348,18 +313,6 @@ struct dd_function_table { GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); - /** - * Called by glCompressedTexImage3D(). - * - * \sa dd_function_table::CompressedTexImage3D. - */ - void (*CompressedTexImage3D)(struct gl_context *ctx, - struct gl_texture_image *texImage, - GLint internalFormat, - GLsizei width, GLsizei height, GLsizei depth, - GLint border, - GLsizei imageSize, const GLvoid *data); - /** * Called by glCompressedTexSubImage1D(). */ @@ -378,16 +331,6 @@ struct dd_function_table { GLsizei width, GLint height, GLenum format, GLsizei imageSize, const GLvoid *data); - - /** - * Called by glCompressedTexSubImage3D(). - */ - void (*CompressedTexSubImage3D)(struct gl_context *ctx, - struct gl_texture_image *texImage, - GLint xoffset, GLint yoffset, GLint zoffset, - GLsizei width, GLint height, GLint depth, - GLenum format, - GLsizei imageSize, const GLvoid *data); /*@}*/ /** diff --git a/reactos/dll/opengl/mesa/main/dispatch.h b/reactos/dll/opengl/mesa/main/dispatch.h index f9ecac92781..41c30e2eec7 100644 --- a/reactos/dll/opengl/mesa/main/dispatch.h +++ b/reactos/dll/opengl/mesa/main/dispatch.h @@ -438,9 +438,6 @@ typedef PROC _glapi_proc; #define _gloffset_Minmax 368 #define _gloffset_ResetHistogram 369 #define _gloffset_ResetMinmax 370 -#define _gloffset_TexImage3D 371 -#define _gloffset_TexSubImage3D 372 -#define _gloffset_CopyTexSubImage3D 373 #if !FEATURE_remap_table @@ -5173,39 +5170,6 @@ static inline void SET_ResetMinmax(struct _glapi_table *disp, void (GLAPIENTRYP SET_by_offset(disp, _gloffset_ResetMinmax, fn); } -typedef void (GLAPIENTRYP _glptr_TexImage3D)(GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *); -#define CALL_TexImage3D(disp, parameters) \ - (* GET_TexImage3D(disp)) parameters -static inline _glptr_TexImage3D GET_TexImage3D(struct _glapi_table *disp) { - return (_glptr_TexImage3D) (GET_by_offset(disp, _gloffset_TexImage3D)); -} - -static inline void SET_TexImage3D(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *)) { - SET_by_offset(disp, _gloffset_TexImage3D, fn); -} - -typedef void (GLAPIENTRYP _glptr_TexSubImage3D)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); -#define CALL_TexSubImage3D(disp, parameters) \ - (* GET_TexSubImage3D(disp)) parameters -static inline _glptr_TexSubImage3D GET_TexSubImage3D(struct _glapi_table *disp) { - return (_glptr_TexSubImage3D) (GET_by_offset(disp, _gloffset_TexSubImage3D)); -} - -static inline void SET_TexSubImage3D(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *)) { - SET_by_offset(disp, _gloffset_TexSubImage3D, fn); -} - -typedef void (GLAPIENTRYP _glptr_CopyTexSubImage3D)(GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); -#define CALL_CopyTexSubImage3D(disp, parameters) \ - (* GET_CopyTexSubImage3D(disp)) parameters -static inline _glptr_CopyTexSubImage3D GET_CopyTexSubImage3D(struct _glapi_table *disp) { - return (_glptr_CopyTexSubImage3D) (GET_by_offset(disp, _gloffset_CopyTexSubImage3D)); -} - -static inline void SET_CopyTexSubImage3D(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei)) { - SET_by_offset(disp, _gloffset_CopyTexSubImage3D, fn); -} - typedef const GLubyte * (GLAPIENTRYP _glptr_GetStringi)(GLenum, GLuint); #define CALL_GetStringi(disp, parameters) \ (* GET_GetStringi(disp)) parameters diff --git a/reactos/dll/opengl/mesa/main/dlist.c b/reactos/dll/opengl/mesa/main/dlist.c index b3d8f355057..2abbea7a32e 100644 --- a/reactos/dll/opengl/mesa/main/dlist.c +++ b/reactos/dll/opengl/mesa/main/dlist.c @@ -179,7 +179,6 @@ typedef enum OPCODE_COPY_TEX_IMAGE2D, OPCODE_COPY_TEX_SUB_IMAGE1D, OPCODE_COPY_TEX_SUB_IMAGE2D, - OPCODE_COPY_TEX_SUB_IMAGE3D, OPCODE_CULL_FACE, OPCODE_DEPTH_FUNC, OPCODE_DEPTH_MASK, @@ -248,10 +247,8 @@ typedef enum OPCODE_TEXPARAMETER, OPCODE_TEX_IMAGE1D, OPCODE_TEX_IMAGE2D, - OPCODE_TEX_IMAGE3D, OPCODE_TEX_SUB_IMAGE1D, OPCODE_TEX_SUB_IMAGE2D, - OPCODE_TEX_SUB_IMAGE3D, OPCODE_TRANSLATE, OPCODE_VIEWPORT, OPCODE_WINDOW_POS, @@ -502,10 +499,6 @@ _mesa_delete_list(struct gl_context *ctx, struct gl_display_list *dlist) free(n[9].data); n += InstSize[n[0].opcode]; break; - case OPCODE_TEX_IMAGE3D: - free(n[10].data); - n += InstSize[n[0].opcode]; - break; case OPCODE_TEX_SUB_IMAGE1D: free(n[7].data); n += InstSize[n[0].opcode]; @@ -514,10 +507,6 @@ _mesa_delete_list(struct gl_context *ctx, struct gl_display_list *dlist) free(n[9].data); n += InstSize[n[0].opcode]; break; - case OPCODE_TEX_SUB_IMAGE3D: - free(n[11].data); - n += InstSize[n[0].opcode]; - break; case OPCODE_CONTINUE: n = (Node *) n[1].next; free(block); @@ -1607,34 +1596,6 @@ save_CopyTexSubImage2D(GLenum target, GLint level, } -static void GLAPIENTRY -save_CopyTexSubImage3D(GLenum target, GLint level, - GLint xoffset, GLint yoffset, GLint zoffset, - GLint x, GLint y, GLsizei width, GLint height) -{ - GET_CURRENT_CONTEXT(ctx); - Node *n; - ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); - n = alloc_instruction(ctx, OPCODE_COPY_TEX_SUB_IMAGE3D, 9); - if (n) { - n[1].e = target; - n[2].i = level; - n[3].i = xoffset; - n[4].i = yoffset; - n[5].i = zoffset; - n[6].i = x; - n[7].i = y; - n[8].i = width; - n[9].i = height; - } - if (ctx->ExecuteFlag) { - CALL_CopyTexSubImage3D(ctx->Exec, (target, level, - xoffset, yoffset, zoffset, - x, y, width, height)); - } -} - - static void GLAPIENTRY save_CullFace(GLenum mode) { @@ -3519,46 +3480,6 @@ save_TexImage2D(GLenum target, } -static void GLAPIENTRY -save_TexImage3D(GLenum target, - GLint level, GLint internalFormat, - GLsizei width, GLsizei height, GLsizei depth, - GLint border, - GLenum format, GLenum type, const GLvoid * pixels) -{ - GET_CURRENT_CONTEXT(ctx); - if (target == GL_PROXY_TEXTURE_3D) { - /* don't compile, execute immediately */ - CALL_TexImage3D(ctx->Exec, (target, level, internalFormat, width, - height, depth, border, format, type, - pixels)); - } - else { - Node *n; - ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); - n = alloc_instruction(ctx, OPCODE_TEX_IMAGE3D, 10); - if (n) { - n[1].e = target; - n[2].i = level; - n[3].i = (GLint) internalFormat; - n[4].i = (GLint) width; - n[5].i = (GLint) height; - n[6].i = (GLint) depth; - n[7].i = border; - n[8].e = format; - n[9].e = type; - n[10].data = unpack_image(ctx, 3, width, height, depth, format, type, - pixels, &ctx->Unpack); - } - if (ctx->ExecuteFlag) { - CALL_TexImage3D(ctx->Exec, (target, level, internalFormat, width, - height, depth, border, format, type, - pixels)); - } - } -} - - static void GLAPIENTRY save_TexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, @@ -3618,41 +3539,6 @@ save_TexSubImage2D(GLenum target, GLint level, } -static void GLAPIENTRY -save_TexSubImage3D(GLenum target, GLint level, - GLint xoffset, GLint yoffset, GLint zoffset, - GLsizei width, GLsizei height, GLsizei depth, - GLenum format, GLenum type, const GLvoid * pixels) -{ - GET_CURRENT_CONTEXT(ctx); - Node *n; - - ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); - - n = alloc_instruction(ctx, OPCODE_TEX_SUB_IMAGE3D, 11); - if (n) { - n[1].e = target; - n[2].i = level; - n[3].i = xoffset; - n[4].i = yoffset; - n[5].i = zoffset; - n[6].i = (GLint) width; - n[7].i = (GLint) height; - n[8].i = (GLint) depth; - n[9].e = format; - n[10].e = type; - n[11].data = unpack_image(ctx, 3, width, height, depth, format, type, - pixels, &ctx->Unpack); - } - if (ctx->ExecuteFlag) { - CALL_TexSubImage3D(ctx->Exec, (target, level, - xoffset, yoffset, zoffset, - width, height, depth, format, type, - pixels)); - } -} - - static void GLAPIENTRY save_Translatef(GLfloat x, GLfloat y, GLfloat z) { @@ -4980,11 +4866,6 @@ execute_list(struct gl_context *ctx, GLuint list) n[4].i, n[5].i, n[6].i, n[7].i, n[8].i)); break; - case OPCODE_COPY_TEX_SUB_IMAGE3D: - CALL_CopyTexSubImage3D(ctx->Exec, (n[1].e, n[2].i, n[3].i, - n[4].i, n[5].i, n[6].i, n[7].i, - n[8].i, n[9].i)); - break; case OPCODE_CULL_FACE: CALL_CullFace(ctx->Exec, (n[1].e)); break; @@ -5314,23 +5195,6 @@ execute_list(struct gl_context *ctx, GLuint list) ctx->Unpack = save; /* restore */ } break; - case OPCODE_TEX_IMAGE3D: - { - const struct gl_pixelstore_attrib save = ctx->Unpack; - ctx->Unpack = ctx->DefaultPacking; - CALL_TexImage3D(ctx->Exec, (n[1].e, /* target */ - n[2].i, /* level */ - n[3].i, /* components */ - n[4].i, /* width */ - n[5].i, /* height */ - n[6].i, /* depth */ - n[7].e, /* border */ - n[8].e, /* format */ - n[9].e, /* type */ - n[10].data)); - ctx->Unpack = save; /* restore */ - } - break; case OPCODE_TEX_SUB_IMAGE1D: { const struct gl_pixelstore_attrib save = ctx->Unpack; @@ -5352,17 +5216,6 @@ execute_list(struct gl_context *ctx, GLuint list) ctx->Unpack = save; /* restore */ } break; - case OPCODE_TEX_SUB_IMAGE3D: - { - const struct gl_pixelstore_attrib save = ctx->Unpack; - ctx->Unpack = ctx->DefaultPacking; - CALL_TexSubImage3D(ctx->Exec, (n[1].e, n[2].i, n[3].i, - n[4].i, n[5].i, n[6].i, n[7].i, - n[8].i, n[9].e, n[10].e, - n[11].data)); - ctx->Unpack = save; /* restore */ - } - break; case OPCODE_TRANSLATE: CALL_Translatef(ctx->Exec, (n[1].f, n[2].f, n[3].f)); break; @@ -6729,11 +6582,6 @@ _mesa_create_save_table(void) SET_TexSubImage2D(table, save_TexSubImage2D); SET_VertexPointer(table, exec_VertexPointer); - /* GL 1.2 */ - SET_CopyTexSubImage3D(table, save_CopyTexSubImage3D); - SET_TexImage3D(table, save_TexImage3D); - SET_TexSubImage3D(table, save_TexSubImage3D); - /* GL_ARB_imaging */ /* Not all are supported */ SET_BlendColor(table, save_BlendColor); @@ -6779,13 +6627,6 @@ _mesa_create_save_table(void) /* 3. GL_EXT_polygon_offset */ SET_PolygonOffsetEXT(table, save_PolygonOffsetEXT); - /* 6. GL_EXT_texture3d */ -#if 0 - SET_CopyTexSubImage3DEXT(table, save_CopyTexSubImage3D); - SET_TexImage3DEXT(table, save_TexImage3DEXT); - SET_TexSubImage3DEXT(table, save_TexSubImage3D); -#endif - /* 14. GL_SGI_color_table */ #if 0 SET_ColorTableSGI(table, save_ColorTable); diff --git a/reactos/dll/opengl/mesa/main/enable.c b/reactos/dll/opengl/mesa/main/enable.c index c42c40261d8..a70bc5928f9 100644 --- a/reactos/dll/opengl/mesa/main/enable.c +++ b/reactos/dll/opengl/mesa/main/enable.c @@ -568,11 +568,6 @@ _mesa_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state) return; } break; - case GL_TEXTURE_3D: - if (!enable_texture(ctx, state, TEXTURE_3D_BIT)) { - return; - } - break; case GL_TEXTURE_GEN_S: case GL_TEXTURE_GEN_T: case GL_TEXTURE_GEN_R: @@ -886,8 +881,6 @@ _mesa_IsEnabled( GLenum cap ) return is_texture_enabled(ctx, TEXTURE_1D_BIT); case GL_TEXTURE_2D: return is_texture_enabled(ctx, TEXTURE_2D_BIT); - case GL_TEXTURE_3D: - return is_texture_enabled(ctx, TEXTURE_3D_BIT); case GL_TEXTURE_GEN_S: case GL_TEXTURE_GEN_T: case GL_TEXTURE_GEN_R: diff --git a/reactos/dll/opengl/mesa/main/extensions.c b/reactos/dll/opengl/mesa/main/extensions.c index 02c8dbf1c1b..ec01949c09a 100644 --- a/reactos/dll/opengl/mesa/main/extensions.c +++ b/reactos/dll/opengl/mesa/main/extensions.c @@ -71,7 +71,6 @@ static const struct extension extension_table[] = { { "GL_ARB_texture_env_crossbar", o(ARB_texture_env_crossbar), 2001 }, { "GL_ARB_texture_env_dot3", o(ARB_texture_env_dot3), 2001 }, { "GL_ARB_texture_mirrored_repeat", o(dummy_true), 2001 }, - { "GL_ARB_texture_non_power_of_two", o(ARB_texture_non_power_of_two), 2003 }, { "GL_ARB_texture_storage", o(ARB_texture_storage), 2011 }, { "GL_ARB_transpose_matrix", o(ARB_transpose_matrix), 1999 }, { "GL_ARB_vertex_array_object", o(ARB_vertex_array_object), 2006 }, @@ -206,7 +205,6 @@ _mesa_enable_sw_extensions(struct gl_context *ctx) ctx->Extensions.ARB_texture_env_crossbar = GL_TRUE; ctx->Extensions.ARB_texture_env_dot3 = GL_TRUE; /*ctx->Extensions.ARB_texture_float = GL_TRUE;*/ - ctx->Extensions.ARB_texture_non_power_of_two = GL_TRUE; ctx->Extensions.ARB_texture_storage = GL_TRUE; ctx->Extensions.ARB_vertex_array_object = GL_TRUE; ctx->Extensions.APPLE_vertex_array_object = GL_TRUE; @@ -234,9 +232,6 @@ _mesa_enable_sw_extensions(struct gl_context *ctx) ctx->Extensions.NV_point_sprite = GL_TRUE; ctx->Extensions.NV_texture_env_combine4 = GL_TRUE; /*ctx->Extensions.NV_texgen_reflection = GL_TRUE;*/ -#if FEATURE_texture_fxt1 - _mesa_enable_extension(ctx, "GL_3DFX_texture_compression_FXT1"); -#endif } @@ -293,7 +288,6 @@ _mesa_enable_2_0_extensions(struct gl_context *ctx) { ctx->Extensions.ARB_point_sprite = GL_TRUE; ctx->Extensions.EXT_blend_equation_separate = GL_TRUE; - ctx->Extensions.ARB_texture_non_power_of_two = GL_TRUE; } diff --git a/reactos/dll/opengl/mesa/main/get.c b/reactos/dll/opengl/mesa/main/get.c index 3dcc7e800fb..43f90ac339a 100644 --- a/reactos/dll/opengl/mesa/main/get.c +++ b/reactos/dll/opengl/mesa/main/get.c @@ -357,10 +357,6 @@ static const struct value_desc values[] = { { GL_BLEND_EQUATION, CONTEXT_ENUM(Color.EquationRGB), NO_EXTRA }, { GL_BLEND_EQUATION_ALPHA_EXT, CONTEXT_ENUM(Color.EquationA), NO_EXTRA }, - /* GL_ARB_texture_compression */ - { GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB, LOC_CUSTOM, TYPE_INT, 0, NO_EXTRA }, - { GL_COMPRESSED_TEXTURE_FORMATS_ARB, LOC_CUSTOM, TYPE_INT_N, 0, NO_EXTRA }, - /* GL_ARB_multisample */ { GL_SAMPLE_ALPHA_TO_COVERAGE_ARB, CONTEXT_BOOL(Multisample.SampleAlphaToCoverage), NO_EXTRA }, @@ -512,11 +508,6 @@ static const struct value_desc values[] = { { GL_BLEND_COLOR_EXT, LOC_CUSTOM, TYPE_FLOATN_4, 0, NO_EXTRA }, - /* OES_texture_3D */ - { GL_TEXTURE_BINDING_3D, LOC_CUSTOM, TYPE_INT, TEXTURE_3D_INDEX, NO_EXTRA }, - { GL_MAX_3D_TEXTURE_SIZE, LOC_CUSTOM, TYPE_INT, - offsetof(struct gl_context, Const.Max3DTextureLevels), NO_EXTRA }, - { GL_ACCUM_RED_BITS, BUFFER_INT(Visual.accumRedBits), NO_EXTRA }, { GL_ACCUM_GREEN_BITS, BUFFER_INT(Visual.accumGreenBits), NO_EXTRA }, { GL_ACCUM_BLUE_BITS, BUFFER_INT(Visual.accumBlueBits), NO_EXTRA }, @@ -638,7 +629,6 @@ static const struct value_desc values[] = { { GL_STEREO, BUFFER_INT(Visual.stereoMode), NO_EXTRA }, { GL_TEXTURE_1D, LOC_CUSTOM, TYPE_BOOLEAN, NO_OFFSET, NO_EXTRA }, - { GL_TEXTURE_3D, LOC_CUSTOM, TYPE_BOOLEAN, NO_OFFSET, NO_EXTRA }, { GL_TEXTURE_BINDING_1D, LOC_CUSTOM, TYPE_INT, TEXTURE_1D_INDEX, NO_EXTRA }, @@ -882,7 +872,6 @@ find_custom_value(struct gl_context *ctx, const struct value_desc *d, union valu switch (d->pname) { case GL_TEXTURE_1D: case GL_TEXTURE_2D: - case GL_TEXTURE_3D: case GL_TEXTURE_CUBE_MAP_ARB: v->value_bool = _mesa_IsEnabled(d->pname); break; diff --git a/reactos/dll/opengl/mesa/main/glheader.h b/reactos/dll/opengl/mesa/main/glheader.h index 9bf3970f0db..56d5ab17c5f 100644 --- a/reactos/dll/opengl/mesa/main/glheader.h +++ b/reactos/dll/opengl/mesa/main/glheader.h @@ -153,11 +153,6 @@ typedef void *GLeglImageOES; #define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD #endif -#ifndef GL_ATI_texture_compression_3dc -#define GL_ATI_texture_compression_3dc 1 -#define GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI 0x8837 -#endif - /** * Internal token to represent a GLSL shader program (a collection of diff --git a/reactos/dll/opengl/mesa/main/mfeatures.h b/reactos/dll/opengl/mesa/main/mfeatures.h index 940151abbe7..d432175bbcd 100644 --- a/reactos/dll/opengl/mesa/main/mfeatures.h +++ b/reactos/dll/opengl/mesa/main/mfeatures.h @@ -103,14 +103,10 @@ #define FEATURE_pixel_transfer FEATURE_GL #define FEATURE_queryobj FEATURE_GL #define FEATURE_rastpos FEATURE_GL -#define FEATURE_texture_fxt1 FEATURE_GL -#define FEATURE_texture_s3tc FEATURE_GL #define FEATURE_extra_context_init FEATURE_ES #define FEATURE_point_size_array FEATURE_ES -#define FEATURE_es2_glsl FEATURE_ES2 - #define FEATURE_ARB_fragment_program 1 #define FEATURE_ARB_vertex_program 1 #define FEATURE_ARB_vertex_shader 1 diff --git a/reactos/dll/opengl/mesa/main/mtypes.h b/reactos/dll/opengl/mesa/main/mtypes.h index 2dc4ce80524..41031579658 100644 --- a/reactos/dll/opengl/mesa/main/mtypes.h +++ b/reactos/dll/opengl/mesa/main/mtypes.h @@ -833,7 +833,6 @@ struct gl_stencil_attrib typedef enum { TEXTURE_CUBE_INDEX, - TEXTURE_3D_INDEX, TEXTURE_2D_INDEX, TEXTURE_1D_INDEX, NUM_TEXTURE_TARGETS @@ -846,7 +845,6 @@ typedef enum */ /*@{*/ #define TEXTURE_CUBE_BIT (1 << TEXTURE_CUBE_INDEX) -#define TEXTURE_3D_BIT (1 << TEXTURE_3D_INDEX) #define TEXTURE_2D_BIT (1 << TEXTURE_2D_INDEX) #define TEXTURE_1D_BIT (1 << TEXTURE_1D_INDEX) /*@}*/ @@ -1512,8 +1510,7 @@ struct gl_precision struct gl_constants { GLint MaxTextureMbytes; /**< Max memory per image, in MB */ - GLint MaxTextureLevels; /**< Max mipmap levels. */ - GLint Max3DTextureLevels; /**< Max mipmap levels for 3D textures */ + GLint MaxTextureLevels; /**< Max mipmap levels. */ GLint MaxCubeTextureLevels; /**< Max mipmap levels for cube textures */ GLfloat MaxTextureMaxAnisotropy; /**< GL_EXT_texture_filter_anisotropic */ @@ -1583,7 +1580,6 @@ struct gl_extensions GLboolean ARB_texture_env_combine; GLboolean ARB_texture_env_crossbar; GLboolean ARB_texture_env_dot3; - GLboolean ARB_texture_non_power_of_two; GLboolean ARB_texture_storage; GLboolean ARB_transpose_matrix; GLboolean ARB_vertex_array_object; diff --git a/reactos/dll/opengl/mesa/main/shared.c b/reactos/dll/opengl/mesa/main/shared.c index bc5807bb553..cc9ae8ba38c 100644 --- a/reactos/dll/opengl/mesa/main/shared.c +++ b/reactos/dll/opengl/mesa/main/shared.c @@ -63,7 +63,6 @@ _mesa_alloc_shared_state(struct gl_context *ctx) /* NOTE: the order of these enums matches the TEXTURE_x_INDEX values */ static const GLenum targets[NUM_TEXTURE_TARGETS] = { GL_TEXTURE_CUBE_MAP, - GL_TEXTURE_3D, GL_TEXTURE_2D, GL_TEXTURE_1D }; diff --git a/reactos/dll/opengl/mesa/main/texformat.c b/reactos/dll/opengl/mesa/main/texformat.c index 052dfc1691f..2d6efe2be25 100644 --- a/reactos/dll/opengl/mesa/main/texformat.c +++ b/reactos/dll/opengl/mesa/main/texformat.c @@ -95,7 +95,6 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat, break; case GL_RGBA12: case GL_RGBA16: - RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_16); RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_16); RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA8888); RETURN_IF_SUPPORTED(MESA_FORMAT_ARGB8888); diff --git a/reactos/dll/opengl/mesa/main/texgetimage.c b/reactos/dll/opengl/mesa/main/texgetimage.c index 29590ce5348..f77d38331ef 100644 --- a/reactos/dll/opengl/mesa/main/texgetimage.c +++ b/reactos/dll/opengl/mesa/main/texgetimage.c @@ -397,9 +397,6 @@ _mesa_get_teximage(struct gl_context *ctx, case GL_TEXTURE_1D: dimensions = 1; break; - case GL_TEXTURE_3D: - dimensions = 3; - break; default: dimensions = 2; } diff --git a/reactos/dll/opengl/mesa/main/teximage.c b/reactos/dll/opengl/mesa/main/teximage.c index cd7b1c96ab1..f6352726fee 100644 --- a/reactos/dll/opengl/mesa/main/teximage.c +++ b/reactos/dll/opengl/mesa/main/teximage.c @@ -279,7 +279,6 @@ _mesa_is_proxy_texture(GLenum target) return (target == GL_PROXY_TEXTURE_1D || target == GL_PROXY_TEXTURE_2D || - target == GL_PROXY_TEXTURE_3D || target == GL_PROXY_TEXTURE_CUBE_MAP_ARB); } @@ -297,9 +296,6 @@ get_proxy_target(GLenum target) case GL_TEXTURE_2D: case GL_PROXY_TEXTURE_2D: return GL_PROXY_TEXTURE_2D; - case GL_TEXTURE_3D: - case GL_PROXY_TEXTURE_3D: - return GL_PROXY_TEXTURE_3D; case GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB: case GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB: case GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB: @@ -339,10 +335,6 @@ _mesa_select_tex_object(struct gl_context *ctx, return ctx->Texture.Unit.CurrentTex[TEXTURE_2D_INDEX]; case GL_PROXY_TEXTURE_2D: return ctx->Texture.ProxyTex[TEXTURE_2D_INDEX]; - case GL_TEXTURE_3D: - return ctx->Texture.Unit.CurrentTex[TEXTURE_3D_INDEX]; - case GL_PROXY_TEXTURE_3D: - return ctx->Texture.ProxyTex[TEXTURE_3D_INDEX]; default: _mesa_problem(NULL, "bad target in _mesa_select_tex_object()"); return NULL; @@ -432,11 +424,6 @@ _mesa_get_proxy_tex_image(struct gl_context *ctx, GLenum target, GLint level) return NULL; texIndex = TEXTURE_2D_INDEX; break; - case GL_PROXY_TEXTURE_3D: - if (level >= ctx->Const.Max3DTextureLevels) - return NULL; - texIndex = TEXTURE_3D_INDEX; - break; case GL_PROXY_TEXTURE_CUBE_MAP: if (level >= ctx->Const.MaxCubeTextureLevels) return NULL; @@ -481,9 +468,6 @@ _mesa_max_texture_levels(struct gl_context *ctx, GLenum target) case GL_TEXTURE_2D: case GL_PROXY_TEXTURE_2D: return ctx->Const.MaxTextureLevels; - case GL_TEXTURE_3D: - case GL_PROXY_TEXTURE_3D: - return ctx->Const.Max3DTextureLevels; case GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB: case GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB: case GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB: @@ -520,9 +504,6 @@ _mesa_get_texture_dimensions(GLenum target) case GL_TEXTURE_CUBE_MAP_POSITIVE_Z: case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: return 2; - case GL_TEXTURE_3D: - case GL_PROXY_TEXTURE_3D: - return 3; default: _mesa_problem(NULL, "invalid target 0x%x in get_texture_dimensions()", target); @@ -683,13 +664,6 @@ _mesa_init_teximage_fields(struct gl_context *ctx, img->Depth2 = 1; img->DepthLog2 = 0; break; - case GL_TEXTURE_3D: - case GL_PROXY_TEXTURE_3D: - img->Height2 = height - 2 * border; /* == 1 << img->HeightLog2; */ - img->HeightLog2 = _mesa_logbase2(img->Height2); - img->Depth2 = depth - 2 * border; /* == 1 << img->DepthLog2; */ - img->DepthLog2 = _mesa_logbase2(img->Depth2); - break; default: _mesa_problem(NULL, "invalid target 0x%x in _mesa_init_teximage_fields()", target); @@ -760,10 +734,8 @@ _mesa_test_proxy_teximage(struct gl_context *ctx, GLenum target, GLint level, return GL_FALSE; if (level >= ctx->Const.MaxTextureLevels) return GL_FALSE; - if (!ctx->Extensions.ARB_texture_non_power_of_two) { - if (width > 0 && !_mesa_is_pow_two(width - 2 * border)) - return GL_FALSE; - } + if (width > 0 && !_mesa_is_pow_two(width - 2 * border)) + return GL_FALSE; return GL_TRUE; case GL_PROXY_TEXTURE_2D: @@ -774,32 +746,10 @@ _mesa_test_proxy_teximage(struct gl_context *ctx, GLenum target, GLint level, return GL_FALSE; if (level >= ctx->Const.MaxTextureLevels) return GL_FALSE; - if (!ctx->Extensions.ARB_texture_non_power_of_two) { - if (width > 0 && !_mesa_is_pow_two(width - 2 * border)) - return GL_FALSE; - if (height > 0 && !_mesa_is_pow_two(height - 2 * border)) - return GL_FALSE; - } - return GL_TRUE; - - case GL_PROXY_TEXTURE_3D: - maxSize = 1 << (ctx->Const.Max3DTextureLevels - 1); - if (width < 2 * border || width > 2 * border + maxSize) + if (width > 0 && !_mesa_is_pow_two(width - 2 * border)) return GL_FALSE; - if (height < 2 * border || height > 2 * border + maxSize) + if (height > 0 && !_mesa_is_pow_two(height - 2 * border)) return GL_FALSE; - if (depth < 2 * border || depth > 2 * border + maxSize) - return GL_FALSE; - if (level >= ctx->Const.Max3DTextureLevels) - return GL_FALSE; - if (!ctx->Extensions.ARB_texture_non_power_of_two) { - if (width > 0 && !_mesa_is_pow_two(width - 2 * border)) - return GL_FALSE; - if (height > 0 && !_mesa_is_pow_two(height - 2 * border)) - return GL_FALSE; - if (depth > 0 && !_mesa_is_pow_two(depth - 2 * border)) - return GL_FALSE; - } return GL_TRUE; case GL_PROXY_TEXTURE_CUBE_MAP_ARB: @@ -810,12 +760,10 @@ _mesa_test_proxy_teximage(struct gl_context *ctx, GLenum target, GLint level, return GL_FALSE; if (level >= ctx->Const.MaxCubeTextureLevels) return GL_FALSE; - if (!ctx->Extensions.ARB_texture_non_power_of_two) { - if (width > 0 && !_mesa_is_pow_two(width - 2 * border)) - return GL_FALSE; - if (height > 0 && !_mesa_is_pow_two(height - 2 * border)) - return GL_FALSE; - } + if (width > 0 && !_mesa_is_pow_two(width - 2 * border)) + return GL_FALSE; + if (height > 0 && !_mesa_is_pow_two(height - 2 * border)) + return GL_FALSE; return GL_TRUE; default: @@ -873,14 +821,6 @@ legal_teximage_target(struct gl_context *ctx, GLuint dims, GLenum target) default: return GL_FALSE; } - case 3: - switch (target) { - case GL_TEXTURE_3D: - case GL_PROXY_TEXTURE_3D: - return GL_TRUE; - default: - return GL_FALSE; - } default: _mesa_problem(ctx, "invalid dims=%u in legal_teximage_target()", dims); return GL_FALSE; @@ -914,13 +854,6 @@ legal_texsubimage_target(struct gl_context *ctx, GLuint dims, GLenum target) default: return GL_FALSE; } - case 3: - switch (target) { - case GL_TEXTURE_3D: - return GL_TRUE; - default: - return GL_FALSE; - } default: _mesa_problem(ctx, "invalid dims=%u in legal_texsubimage_target()", dims); @@ -1243,16 +1176,6 @@ subtexture_error_check2( struct gl_context *ctx, GLuint dimensions, return GL_TRUE; } } - if (dimensions > 2) { - if (zoffset < -((GLint)destTex->Border)) { - _mesa_error(ctx, GL_INVALID_VALUE, "glTexSubImage3D(zoffset)"); - return GL_TRUE; - } - if (zoffset + depth > (GLint) (destTex->Depth + destTex->Border)) { - _mesa_error(ctx, GL_INVALID_VALUE, "glTexSubImage3D(zoffset+depth)"); - return GL_TRUE; - } - } if (ctx->VersionMajor >= 3 || ctx->Extensions.EXT_texture_integer) { /* both source and dest must be integer-valued, or neither */ @@ -1761,7 +1684,6 @@ teximage(struct gl_context *ctx, GLuint dims, border, internalFormat, texFormat); /* Give the texture to the driver. may be null. */ - ASSERT(ctx->Driver.TexImage3D); switch (dims) { case 1: ctx->Driver.TexImage1D(ctx, texImage, internalFormat, @@ -1773,11 +1695,6 @@ teximage(struct gl_context *ctx, GLuint dims, width, height, border, format, type, pixels, unpack); break; - case 3: - ctx->Driver.TexImage3D(ctx, texImage, internalFormat, - width, height, depth, border, format, - type, pixels, unpack); - break; default: _mesa_problem(ctx, "invalid dims=%u in teximage()", dims); } @@ -1822,33 +1739,6 @@ _mesa_TexImage2D( GLenum target, GLint level, GLint internalFormat, } -/* - * Called by the API or display list executor. - * Note that width and height include the border. - */ -void GLAPIENTRY -_mesa_TexImage3D( GLenum target, GLint level, GLint internalFormat, - GLsizei width, GLsizei height, GLsizei depth, - GLint border, GLenum format, GLenum type, - const GLvoid *pixels ) -{ - GET_CURRENT_CONTEXT(ctx); - teximage(ctx, 3, target, level, internalFormat, width, height, depth, - border, format, type, pixels); -} - - -void GLAPIENTRY -_mesa_TexImage3DEXT( GLenum target, GLint level, GLenum internalFormat, - GLsizei width, GLsizei height, GLsizei depth, - GLint border, GLenum format, GLenum type, - const GLvoid *pixels ) -{ - _mesa_TexImage3D(target, level, (GLint) internalFormat, width, height, - depth, border, format, type, pixels); -} - - /** * Implement all the glTexSubImage1/2/3D() functions. */ @@ -1922,12 +1812,6 @@ texsubimage(struct gl_context *ctx, GLuint dims, GLenum target, GLint level, xoffset, yoffset, width, height, format, type, pixels, &ctx->Unpack); break; - case 3: - ctx->Driver.TexSubImage3D(ctx, texImage, - xoffset, yoffset, zoffset, - width, height, depth, - format, type, pixels, &ctx->Unpack); - break; default: _mesa_problem(ctx, "unexpected dims in subteximage()"); } @@ -1969,22 +1853,6 @@ _mesa_TexSubImage2D( GLenum target, GLint level, -void GLAPIENTRY -_mesa_TexSubImage3D( GLenum target, GLint level, - GLint xoffset, GLint yoffset, GLint zoffset, - GLsizei width, GLsizei height, GLsizei depth, - GLenum format, GLenum type, - const GLvoid *pixels ) -{ - GET_CURRENT_CONTEXT(ctx); - texsubimage(ctx, 3, target, level, - xoffset, yoffset, zoffset, - width, height, depth, - format, type, pixels); -} - - - /** * For glCopyTexSubImage, return the source renderbuffer to copy texel data * from. This depends on whether the texture contains color or depth values. @@ -2193,11 +2061,6 @@ copytexsubimage(struct gl_context *ctx, GLuint dims, GLenum target, GLint level, ctx->Driver.CopyTexSubImage2D(ctx, texImage, xoffset, yoffset, srcRb, x, y, width, height); break; - case 3: - ctx->Driver.CopyTexSubImage3D(ctx, texImage, - xoffset, yoffset, zoffset, - srcRb, x, y, width, height); - break; default: _mesa_problem(ctx, "bad dims in copytexsubimage()"); } @@ -2229,15 +2092,3 @@ _mesa_CopyTexSubImage2D( GLenum target, GLint level, copytexsubimage(ctx, 2, target, level, xoffset, yoffset, 0, x, y, width, height); } - - - -void GLAPIENTRY -_mesa_CopyTexSubImage3D( GLenum target, GLint level, - GLint xoffset, GLint yoffset, GLint zoffset, - GLint x, GLint y, GLsizei width, GLsizei height ) -{ - GET_CURRENT_CONTEXT(ctx); - copytexsubimage(ctx, 3, target, level, xoffset, yoffset, zoffset, - x, y, width, height); -} diff --git a/reactos/dll/opengl/mesa/main/teximage.h b/reactos/dll/opengl/mesa/main/teximage.h index 776e3b80478..c22171297dc 100644 --- a/reactos/dll/opengl/mesa/main/teximage.h +++ b/reactos/dll/opengl/mesa/main/teximage.h @@ -164,18 +164,6 @@ _mesa_TexImage2D( GLenum target, GLint level, GLint internalformat, GLenum format, GLenum type, const GLvoid *pixels ); -extern void GLAPIENTRY -_mesa_TexImage3D( GLenum target, GLint level, GLint internalformat, - GLsizei width, GLsizei height, GLsizei depth, GLint border, - GLenum format, GLenum type, const GLvoid *pixels ); - - -extern void GLAPIENTRY -_mesa_TexImage3DEXT( GLenum target, GLint level, GLenum internalformat, - GLsizei width, GLsizei height, GLsizei depth, - GLint border, GLenum format, GLenum type, - const GLvoid *pixels ); - extern void GLAPIENTRY _mesa_TexSubImage1D( GLenum target, GLint level, GLint xoffset, GLsizei width, @@ -191,14 +179,6 @@ _mesa_TexSubImage2D( GLenum target, GLint level, const GLvoid *pixels ); -extern void GLAPIENTRY -_mesa_TexSubImage3D( GLenum target, GLint level, - GLint xoffset, GLint yoffset, GLint zoffset, - GLsizei width, GLsizei height, GLsizei depth, - GLenum format, GLenum type, - const GLvoid *pixels ); - - extern void GLAPIENTRY _mesa_CopyTexImage1D( GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border ); @@ -220,12 +200,6 @@ _mesa_CopyTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height ); - -extern void GLAPIENTRY -_mesa_CopyTexSubImage3D( GLenum target, GLint level, - GLint xoffset, GLint yoffset, GLint zoffset, - GLint x, GLint y, GLsizei width, GLsizei height ); - /*@}*/ #endif diff --git a/reactos/dll/opengl/mesa/main/texobj.c b/reactos/dll/opengl/mesa/main/texobj.c index b2a062d3faf..a0c7c97f869 100644 --- a/reactos/dll/opengl/mesa/main/texobj.c +++ b/reactos/dll/opengl/mesa/main/texobj.c @@ -216,7 +216,6 @@ valid_texture_object(const struct gl_texture_object *tex) case 0: case GL_TEXTURE_1D: case GL_TEXTURE_2D: - case GL_TEXTURE_3D: case GL_TEXTURE_CUBE_MAP_ARB: return GL_TRUE; case 0x99: @@ -365,12 +364,6 @@ _mesa_test_texobj_completeness( const struct gl_context *ctx, t->Image[0][baseLevel]->HeightLog2); maxLevels = ctx->Const.MaxTextureLevels; } - else if (t->Target == GL_TEXTURE_3D) { - GLint max = MAX2(t->Image[0][baseLevel]->WidthLog2, - t->Image[0][baseLevel]->HeightLog2); - maxLog2 = MAX2(max, (GLint)(t->Image[0][baseLevel]->DepthLog2)); - maxLevels = ctx->Const.Max3DTextureLevels; - } else if (t->Target == GL_TEXTURE_CUBE_MAP_ARB) { maxLog2 = MAX2(t->Image[0][baseLevel]->WidthLog2, t->Image[0][baseLevel]->HeightLog2); @@ -503,49 +496,6 @@ _mesa_test_texobj_completeness( const struct gl_context *ctx, } } } - else if (t->Target == GL_TEXTURE_3D) { - /* Test 3-D mipmaps */ - GLuint width = t->Image[0][baseLevel]->Width2; - GLuint height = t->Image[0][baseLevel]->Height2; - GLuint depth = t->Image[0][baseLevel]->Depth2; - for (i = baseLevel + 1; i < maxLevels; i++) { - if (width > 1) { - width /= 2; - } - if (height > 1) { - height /= 2; - } - if (depth > 1) { - depth /= 2; - } - if (i >= minLevel && i <= maxLevel) { - const struct gl_texture_image *img = t->Image[0][i]; - if (!img) { - incomplete(t, "3D Image[%d] is missing", i); - return; - } - if (img->_BaseFormat == GL_DEPTH_COMPONENT) { - incomplete(t, "GL_DEPTH_COMPONENT only works with 1/2D tex"); - return; - } - if (img->Width2 != width) { - incomplete(t, "3D Image[%d] bad width %u", i, img->Width2); - return; - } - if (img->Height2 != height) { - incomplete(t, "3D Image[%d] bad height %u", i, img->Height2); - return; - } - if (img->Depth2 != depth) { - incomplete(t, "3D Image[%d] bad depth %u", i, img->Depth2); - return; - } - } - if (width == 1 && height == 1 && depth == 1) { - return; /* found smallest needed mipmap, all done! */ - } - } - } else if (t->Target == GL_TEXTURE_CUBE_MAP_ARB) { /* make sure 6 cube faces are consistant */ GLuint width = t->Image[0][baseLevel]->Width2; @@ -863,8 +813,6 @@ target_enum_to_index(GLenum target) return TEXTURE_1D_INDEX; case GL_TEXTURE_2D: return TEXTURE_2D_INDEX; - case GL_TEXTURE_3D: - return TEXTURE_3D_INDEX; case GL_TEXTURE_CUBE_MAP_ARB: return TEXTURE_CUBE_INDEX; default: diff --git a/reactos/dll/opengl/mesa/main/texparam.c b/reactos/dll/opengl/mesa/main/texparam.c index 13cf0b793b3..8109e553f4e 100644 --- a/reactos/dll/opengl/mesa/main/texparam.c +++ b/reactos/dll/opengl/mesa/main/texparam.c @@ -71,8 +71,6 @@ get_texobj(struct gl_context *ctx, GLenum target, GLboolean get) return texUnit->CurrentTex[TEXTURE_1D_INDEX]; case GL_TEXTURE_2D: return texUnit->CurrentTex[TEXTURE_2D_INDEX]; - case GL_TEXTURE_3D: - return texUnit->CurrentTex[TEXTURE_3D_INDEX]; case GL_TEXTURE_CUBE_MAP: if (ctx->Extensions.ARB_texture_cube_map) { return texUnit->CurrentTex[TEXTURE_CUBE_INDEX]; diff --git a/reactos/dll/opengl/mesa/main/texstate.c b/reactos/dll/opengl/mesa/main/texstate.c index 48d32b82bc6..ffe8ec13feb 100644 --- a/reactos/dll/opengl/mesa/main/texstate.c +++ b/reactos/dll/opengl/mesa/main/texstate.c @@ -502,7 +502,6 @@ alloc_proxy_textures( struct gl_context *ctx ) */ static const GLenum targets[] = { GL_TEXTURE_CUBE_MAP_ARB, - GL_TEXTURE_3D, GL_TEXTURE_2D, GL_TEXTURE_1D, }; diff --git a/reactos/dll/opengl/mesa/main/texstorage.c b/reactos/dll/opengl/mesa/main/texstorage.c index 1de2f71fa73..0af95d076ca 100644 --- a/reactos/dll/opengl/mesa/main/texstorage.c +++ b/reactos/dll/opengl/mesa/main/texstorage.c @@ -58,14 +58,6 @@ legal_texobj_target(struct gl_context *ctx, GLuint dims, GLenum target) default: return GL_FALSE; } - case 3: - switch (target) { - case GL_TEXTURE_3D: - case GL_PROXY_TEXTURE_3D: - return GL_TRUE; - default: - return GL_FALSE; - } default: _mesa_problem(ctx, "invalid dims=%u in legal_texobj_target()", dims); return GL_FALSE; diff --git a/reactos/dll/opengl/mesa/main/texstore.c b/reactos/dll/opengl/mesa/main/texstore.c index 43b5b45ef18..77747dc3586 100644 --- a/reactos/dll/opengl/mesa/main/texstore.c +++ b/reactos/dll/opengl/mesa/main/texstore.c @@ -39,7 +39,6 @@ * code: * ctx->Driver.TexImage1D = _mesa_store_teximage1d; * ctx->Driver.TexImage2D = _mesa_store_teximage2d; - * ctx->Driver.TexImage3D = _mesa_store_teximage3d; * etc... * * Texture image processing is actually kind of complicated. We have to do: @@ -3159,9 +3158,6 @@ store_texsubimage(struct gl_context *ctx, case GL_TEXTURE_1D: dims = 1; break; - case GL_TEXTURE_3D: - dims = 3; - break; default: dims = 2; } @@ -3183,13 +3179,6 @@ store_texsubimage(struct gl_context *ctx, assert(yoffset == 0); assert(zoffset == 0); break; - case GL_TEXTURE_3D: - /* we'll store 3D images as a series of slices */ - numSlices = depth; - sliceOffset = zoffset; - srcImageStride = _mesa_image_image_stride(packing, width, height, - format, type); - break; default: _mesa_warning(ctx, "Unexpected target 0x%x in store_texsubimage()", target); return; @@ -3287,34 +3276,6 @@ _mesa_store_teximage2d(struct gl_context *ctx, -/** - * This is the fallback for Driver.TexImage3D(). - */ -void -_mesa_store_teximage3d(struct gl_context *ctx, - struct gl_texture_image *texImage, - GLint internalFormat, - GLint width, GLint height, GLint depth, GLint border, - GLenum format, GLenum type, const void *pixels, - const struct gl_pixelstore_attrib *packing) -{ - if (width == 0 || height == 0 || depth == 0) - return; - - /* allocate storage for texture data */ - if (!ctx->Driver.AllocTextureImageBuffer(ctx, texImage, texImage->TexFormat, - width, height, depth)) { - _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage3D"); - return; - } - - store_texsubimage(ctx, texImage, - 0, 0, 0, width, height, depth, - format, type, pixels, packing, "glTexImage3D"); -} - - - /* * This is the fallback for Driver.TexSubImage1D(). @@ -3348,20 +3309,3 @@ _mesa_store_texsubimage2d(struct gl_context *ctx, xoffset, yoffset, 0, width, height, 1, format, type, pixels, packing, "glTexSubImage2D"); } - - -/* - * This is the fallback for Driver.TexSubImage3D(). - */ -void -_mesa_store_texsubimage3d(struct gl_context *ctx, - struct gl_texture_image *texImage, - GLint xoffset, GLint yoffset, GLint zoffset, - GLint width, GLint height, GLint depth, - GLenum format, GLenum type, const void *pixels, - const struct gl_pixelstore_attrib *packing) -{ - store_texsubimage(ctx, texImage, - xoffset, yoffset, zoffset, width, height, depth, - format, type, pixels, packing, "glTexSubImage3D"); -} diff --git a/reactos/dll/opengl/mesa/main/texstore.h b/reactos/dll/opengl/mesa/main/texstore.h index 42067ddcc25..07f20165b67 100644 --- a/reactos/dll/opengl/mesa/main/texstore.h +++ b/reactos/dll/opengl/mesa/main/texstore.h @@ -107,15 +107,6 @@ _mesa_store_teximage2d(struct gl_context *ctx, const struct gl_pixelstore_attrib *packing); -extern void -_mesa_store_teximage3d(struct gl_context *ctx, - struct gl_texture_image *texImage, - GLint internalFormat, - GLint width, GLint height, GLint depth, GLint border, - GLenum format, GLenum type, const GLvoid *pixels, - const struct gl_pixelstore_attrib *packing); - - extern void _mesa_store_texsubimage1d(struct gl_context *ctx, struct gl_texture_image *texImage, @@ -133,13 +124,4 @@ _mesa_store_texsubimage2d(struct gl_context *ctx, const struct gl_pixelstore_attrib *packing); -extern void -_mesa_store_texsubimage3d(struct gl_context *ctx, - struct gl_texture_image *texImage, - GLint xoffset, GLint yoffset, GLint zoffset, - GLint width, GLint height, GLint depth, - GLenum format, GLenum type, const GLvoid *pixels, - const struct gl_pixelstore_attrib *packing); - - #endif diff --git a/reactos/dll/opengl/mesa/main/version.c b/reactos/dll/opengl/mesa/main/version.c index 7520274ba7d..19b10712ca1 100644 --- a/reactos/dll/opengl/mesa/main/version.c +++ b/reactos/dll/opengl/mesa/main/version.c @@ -75,7 +75,6 @@ compute_version(struct gl_context *ctx) ctx->Extensions.EXT_shadow_funcs); const GLboolean ver_2_0 = (ver_1_5 && ctx->Extensions.ARB_point_sprite && - ctx->Extensions.ARB_texture_non_power_of_two && ctx->Extensions.EXT_blend_equation_separate); const GLboolean ver_2_1 = (ver_2_0); const GLboolean ver_3_0 = (ver_2_1 && diff --git a/reactos/dll/opengl/mesa/swrast/s_texfilter.c b/reactos/dll/opengl/mesa/swrast/s_texfilter.c index 191fe4d98bc..f84396b53ca 100644 --- a/reactos/dll/opengl/mesa/swrast/s_texfilter.c +++ b/reactos/dll/opengl/mesa/swrast/s_texfilter.c @@ -1665,325 +1665,6 @@ sample_lambda_2d_aniso(struct gl_context *ctx, } - -/**********************************************************************/ -/* 3-D Texture Sampling Functions */ -/**********************************************************************/ - -/** - * Return the texture sample for coordinate (s,t,r) using GL_NEAREST filter. - */ -static inline void -sample_3d_nearest(struct gl_context *ctx, - const struct gl_texture_object *tObj, - const struct gl_texture_image *img, - const GLfloat texcoord[4], - GLfloat rgba[4]) -{ - const struct swrast_texture_image *swImg = swrast_texture_image_const(img); - const GLint width = img->Width2; /* without border, power of two */ - const GLint height = img->Height2; /* without border, power of two */ - const GLint depth = img->Depth2; /* without border, power of two */ - GLint i, j, k; - (void) ctx; - - i = nearest_texel_location(tObj->Sampler.WrapS, img, width, texcoord[0]); - j = nearest_texel_location(tObj->Sampler.WrapT, img, height, texcoord[1]); - k = nearest_texel_location(tObj->Sampler.WrapR, img, depth, texcoord[2]); - - if (i < 0 || i >= (GLint) img->Width || - j < 0 || j >= (GLint) img->Height || - k < 0 || k >= (GLint) img->Depth) { - /* Need this test for GL_CLAMP_TO_BORDER mode */ - get_border_color(tObj, img, rgba); - } - else { - swImg->FetchTexel(swImg, i, j, k, rgba); - } -} - - -/** - * Return the texture sample for coordinate (s,t,r) using GL_LINEAR filter. - */ -static void -sample_3d_linear(struct gl_context *ctx, - const struct gl_texture_object *tObj, - const struct gl_texture_image *img, - const GLfloat texcoord[4], - GLfloat rgba[4]) -{ - const struct swrast_texture_image *swImg = swrast_texture_image_const(img); - const GLint width = img->Width2; - const GLint height = img->Height2; - const GLint depth = img->Depth2; - GLint i0, j0, k0, i1, j1, k1; - GLbitfield useBorderColor = 0x0; - GLfloat a, b, c; - GLfloat t000[4], t010[4], t001[4], t011[4]; - GLfloat t100[4], t110[4], t101[4], t111[4]; - - linear_texel_locations(tObj->Sampler.WrapS, img, width, texcoord[0], &i0, &i1, &a); - linear_texel_locations(tObj->Sampler.WrapT, img, height, texcoord[1], &j0, &j1, &b); - linear_texel_locations(tObj->Sampler.WrapR, img, depth, texcoord[2], &k0, &k1, &c); - - if (img->Border) { - i0 += img->Border; - i1 += img->Border; - j0 += img->Border; - j1 += img->Border; - k0 += img->Border; - k1 += img->Border; - } - else { - /* check if sampling texture border color */ - if (i0 < 0 || i0 >= width) useBorderColor |= I0BIT; - if (i1 < 0 || i1 >= width) useBorderColor |= I1BIT; - if (j0 < 0 || j0 >= height) useBorderColor |= J0BIT; - if (j1 < 0 || j1 >= height) useBorderColor |= J1BIT; - if (k0 < 0 || k0 >= depth) useBorderColor |= K0BIT; - if (k1 < 0 || k1 >= depth) useBorderColor |= K1BIT; - } - - /* Fetch texels */ - if (useBorderColor & (I0BIT | J0BIT | K0BIT)) { - get_border_color(tObj, img, t000); - } - else { - swImg->FetchTexel(swImg, i0, j0, k0, t000); - } - if (useBorderColor & (I1BIT | J0BIT | K0BIT)) { - get_border_color(tObj, img, t100); - } - else { - swImg->FetchTexel(swImg, i1, j0, k0, t100); - } - if (useBorderColor & (I0BIT | J1BIT | K0BIT)) { - get_border_color(tObj, img, t010); - } - else { - swImg->FetchTexel(swImg, i0, j1, k0, t010); - } - if (useBorderColor & (I1BIT | J1BIT | K0BIT)) { - get_border_color(tObj, img, t110); - } - else { - swImg->FetchTexel(swImg, i1, j1, k0, t110); - } - - if (useBorderColor & (I0BIT | J0BIT | K1BIT)) { - get_border_color(tObj, img, t001); - } - else { - swImg->FetchTexel(swImg, i0, j0, k1, t001); - } - if (useBorderColor & (I1BIT | J0BIT | K1BIT)) { - get_border_color(tObj, img, t101); - } - else { - swImg->FetchTexel(swImg, i1, j0, k1, t101); - } - if (useBorderColor & (I0BIT | J1BIT | K1BIT)) { - get_border_color(tObj, img, t011); - } - else { - swImg->FetchTexel(swImg, i0, j1, k1, t011); - } - if (useBorderColor & (I1BIT | J1BIT | K1BIT)) { - get_border_color(tObj, img, t111); - } - else { - swImg->FetchTexel(swImg, i1, j1, k1, t111); - } - - /* trilinear interpolation of samples */ - lerp_rgba_3d(rgba, a, b, c, t000, t100, t010, t110, t001, t101, t011, t111); -} - - -static void -sample_3d_nearest_mipmap_nearest(struct gl_context *ctx, - const struct gl_texture_object *tObj, - GLuint n, const GLfloat texcoord[][4], - const GLfloat lambda[], GLfloat rgba[][4] ) -{ - GLuint i; - for (i = 0; i < n; i++) { - GLint level = nearest_mipmap_level(tObj, lambda[i]); - sample_3d_nearest(ctx, tObj, tObj->Image[0][level], texcoord[i], rgba[i]); - } -} - - -static void -sample_3d_linear_mipmap_nearest(struct gl_context *ctx, - const struct gl_texture_object *tObj, - GLuint n, const GLfloat texcoord[][4], - const GLfloat lambda[], GLfloat rgba[][4]) -{ - GLuint i; - ASSERT(lambda != NULL); - for (i = 0; i < n; i++) { - GLint level = nearest_mipmap_level(tObj, lambda[i]); - sample_3d_linear(ctx, tObj, tObj->Image[0][level], texcoord[i], rgba[i]); - } -} - - -static void -sample_3d_nearest_mipmap_linear(struct gl_context *ctx, - const struct gl_texture_object *tObj, - GLuint n, const GLfloat texcoord[][4], - const GLfloat lambda[], GLfloat rgba[][4]) -{ - GLuint i; - ASSERT(lambda != NULL); - for (i = 0; i < n; i++) { - GLint level = linear_mipmap_level(tObj, lambda[i]); - if (level >= tObj->_MaxLevel) { - sample_3d_nearest(ctx, tObj, tObj->Image[0][tObj->_MaxLevel], - texcoord[i], rgba[i]); - } - else { - GLfloat t0[4], t1[4]; /* texels */ - const GLfloat f = FRAC(lambda[i]); - sample_3d_nearest(ctx, tObj, tObj->Image[0][level ], texcoord[i], t0); - sample_3d_nearest(ctx, tObj, tObj->Image[0][level+1], texcoord[i], t1); - lerp_rgba(rgba[i], f, t0, t1); - } - } -} - - -static void -sample_3d_linear_mipmap_linear(struct gl_context *ctx, - const struct gl_texture_object *tObj, - GLuint n, const GLfloat texcoord[][4], - const GLfloat lambda[], GLfloat rgba[][4]) -{ - GLuint i; - ASSERT(lambda != NULL); - for (i = 0; i < n; i++) { - GLint level = linear_mipmap_level(tObj, lambda[i]); - if (level >= tObj->_MaxLevel) { - sample_3d_linear(ctx, tObj, tObj->Image[0][tObj->_MaxLevel], - texcoord[i], rgba[i]); - } - else { - GLfloat t0[4], t1[4]; /* texels */ - const GLfloat f = FRAC(lambda[i]); - sample_3d_linear(ctx, tObj, tObj->Image[0][level ], texcoord[i], t0); - sample_3d_linear(ctx, tObj, tObj->Image[0][level+1], texcoord[i], t1); - lerp_rgba(rgba[i], f, t0, t1); - } - } -} - - -/** Sample 3D texture, nearest filtering for both min/magnification */ -static void -sample_nearest_3d(struct gl_context *ctx, - const struct gl_texture_object *tObj, GLuint n, - const GLfloat texcoords[][4], const GLfloat lambda[], - GLfloat rgba[][4]) -{ - GLuint i; - struct gl_texture_image *image = tObj->Image[0][tObj->BaseLevel]; - (void) lambda; - for (i = 0; i < n; i++) { - sample_3d_nearest(ctx, tObj, image, texcoords[i], rgba[i]); - } -} - - -/** Sample 3D texture, linear filtering for both min/magnification */ -static void -sample_linear_3d(struct gl_context *ctx, - const struct gl_texture_object *tObj, GLuint n, - const GLfloat texcoords[][4], - const GLfloat lambda[], GLfloat rgba[][4]) -{ - GLuint i; - struct gl_texture_image *image = tObj->Image[0][tObj->BaseLevel]; - (void) lambda; - for (i = 0; i < n; i++) { - sample_3d_linear(ctx, tObj, image, texcoords[i], rgba[i]); - } -} - - -/** Sample 3D texture, using lambda to choose between min/magnification */ -static void -sample_lambda_3d(struct gl_context *ctx, - const struct gl_texture_object *tObj, GLuint n, - const GLfloat texcoords[][4], const GLfloat lambda[], - GLfloat rgba[][4]) -{ - GLuint minStart, minEnd; /* texels with minification */ - GLuint magStart, magEnd; /* texels with magnification */ - GLuint i; - - ASSERT(lambda != NULL); - compute_min_mag_ranges(tObj, n, lambda, - &minStart, &minEnd, &magStart, &magEnd); - - if (minStart < minEnd) { - /* do the minified texels */ - GLuint m = minEnd - minStart; - switch (tObj->Sampler.MinFilter) { - case GL_NEAREST: - for (i = minStart; i < minEnd; i++) - sample_3d_nearest(ctx, tObj, tObj->Image[0][tObj->BaseLevel], - texcoords[i], rgba[i]); - break; - case GL_LINEAR: - for (i = minStart; i < minEnd; i++) - sample_3d_linear(ctx, tObj, tObj->Image[0][tObj->BaseLevel], - texcoords[i], rgba[i]); - break; - case GL_NEAREST_MIPMAP_NEAREST: - sample_3d_nearest_mipmap_nearest(ctx, tObj, m, texcoords + minStart, - lambda + minStart, rgba + minStart); - break; - case GL_LINEAR_MIPMAP_NEAREST: - sample_3d_linear_mipmap_nearest(ctx, tObj, m, texcoords + minStart, - lambda + minStart, rgba + minStart); - break; - case GL_NEAREST_MIPMAP_LINEAR: - sample_3d_nearest_mipmap_linear(ctx, tObj, m, texcoords + minStart, - lambda + minStart, rgba + minStart); - break; - case GL_LINEAR_MIPMAP_LINEAR: - sample_3d_linear_mipmap_linear(ctx, tObj, m, texcoords + minStart, - lambda + minStart, rgba + minStart); - break; - default: - _mesa_problem(ctx, "Bad min filter in sample_3d_texture"); - return; - } - } - - if (magStart < magEnd) { - /* do the magnified texels */ - switch (tObj->Sampler.MagFilter) { - case GL_NEAREST: - for (i = magStart; i < magEnd; i++) - sample_3d_nearest(ctx, tObj, tObj->Image[0][tObj->BaseLevel], - texcoords[i], rgba[i]); - break; - case GL_LINEAR: - for (i = magStart; i < magEnd; i++) - sample_3d_linear(ctx, tObj, tObj->Image[0][tObj->BaseLevel], - texcoords[i], rgba[i]); - break; - default: - _mesa_problem(ctx, "Bad mag filter in sample_3d_texture"); - return; - } - } -} - - /**********************************************************************/ /* Texture Cube Map Sampling Functions */ /**********************************************************************/ @@ -2461,17 +2142,6 @@ _swrast_choose_texture_sample_func( struct gl_context *ctx, return func; } - case GL_TEXTURE_3D: - if (needLambda) { - return &sample_lambda_3d; - } - else if (t->Sampler.MinFilter == GL_LINEAR) { - return &sample_linear_3d; - } - else { - ASSERT(t->Sampler.MinFilter == GL_NEAREST); - return &sample_nearest_3d; - } case GL_TEXTURE_CUBE_MAP: if (needLambda) { return &sample_lambda_cube; diff --git a/reactos/dll/opengl/mesa/swrast/s_texture.c b/reactos/dll/opengl/mesa/swrast/s_texture.c index dae83419f95..81acbe6bb90 100644 --- a/reactos/dll/opengl/mesa/swrast/s_texture.c +++ b/reactos/dll/opengl/mesa/swrast/s_texture.c @@ -203,15 +203,6 @@ _swrast_map_teximage(struct gl_context *ctx, map = swImage->Buffer; - if (texImage->TexObject->Target == GL_TEXTURE_3D) { - GLuint sliceSize = _mesa_format_image_size(texImage->TexFormat, - texImage->Width, - texImage->Height, - 1); - assert(slice < texImage->Depth); - map += slice * sliceSize; - } - /* apply x/y offset to map address */ map += stride * (y / bh) + texelSize * (x / bw); From 07b02cbbe9a383dfe8314d7f2d798b2200117adc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Gardou?= Date: Tue, 17 Jun 2014 09:02:19 +0000 Subject: [PATCH 202/232] [OPENGL32/MESA] - Get rid of APPLE_vertex_array_object, ARB_vertex_array_object and APPLE_object_purgeable CORE-7499 svn path=/trunk/; revision=63608 --- .../opengl/mesa/drivers/common/driverfuncs.c | 6 - reactos/dll/opengl/mesa/drivers/common/meta.c | 24 - reactos/dll/opengl/mesa/drivers/common/meta.h | 1 - reactos/dll/opengl/mesa/main/CMakeLists.txt | 1 - reactos/dll/opengl/mesa/main/api_arrayelt.c | 33 +- reactos/dll/opengl/mesa/main/api_exec.c | 16 - reactos/dll/opengl/mesa/main/api_validate.c | 18 +- reactos/dll/opengl/mesa/main/arrayobj.c | 533 ------------------ reactos/dll/opengl/mesa/main/arrayobj.h | 85 --- reactos/dll/opengl/mesa/main/attrib.c | 100 +--- reactos/dll/opengl/mesa/main/bufferobj.c | 292 +--------- reactos/dll/opengl/mesa/main/context.c | 6 +- reactos/dll/opengl/mesa/main/dd.h | 25 - reactos/dll/opengl/mesa/main/dispatch.h | 117 ---- reactos/dll/opengl/mesa/main/dlist.c | 17 - reactos/dll/opengl/mesa/main/enable.c | 66 +-- reactos/dll/opengl/mesa/main/extensions.c | 8 - reactos/dll/opengl/mesa/main/get.c | 16 +- reactos/dll/opengl/mesa/main/getstring.c | 16 +- reactos/dll/opengl/mesa/main/mtypes.h | 48 +- reactos/dll/opengl/mesa/main/precomp.h | 1 - reactos/dll/opengl/mesa/main/state.c | 35 +- reactos/dll/opengl/mesa/main/varray.c | 119 ++-- reactos/dll/opengl/mesa/main/varray.h | 8 +- reactos/dll/opengl/mesa/main/version.c | 3 +- reactos/dll/opengl/mesa/vbo/vbo_exec_array.c | 32 +- reactos/dll/opengl/mesa/vbo/vbo_save_api.c | 5 +- 27 files changed, 198 insertions(+), 1433 deletions(-) delete mode 100644 reactos/dll/opengl/mesa/main/arrayobj.c delete mode 100644 reactos/dll/opengl/mesa/main/arrayobj.h diff --git a/reactos/dll/opengl/mesa/drivers/common/driverfuncs.c b/reactos/dll/opengl/mesa/drivers/common/driverfuncs.c index 286aa9fe7a3..ac85009c581 100644 --- a/reactos/dll/opengl/mesa/drivers/common/driverfuncs.c +++ b/reactos/dll/opengl/mesa/drivers/common/driverfuncs.c @@ -26,7 +26,6 @@ #include "main/glheader.h" #include "main/imports.h" #include "main/accum.h" -#include "main/arrayobj.h" #include "main/context.h" #include "main/framebuffer.h" #include "main/readpix.h" @@ -147,11 +146,6 @@ _mesa_init_driver_functions(struct dd_function_table *driver) _mesa_init_texture_barrier_functions(driver); - /* APPLE_vertex_array_object */ - driver->NewArrayObject = _mesa_new_array_object; - driver->DeleteArrayObject = _mesa_delete_array_object; - driver->BindArrayObject = NULL; - /* T&L stuff */ driver->CurrentExecPrimitive = 0; driver->CurrentSavePrimitive = 0; diff --git a/reactos/dll/opengl/mesa/drivers/common/meta.c b/reactos/dll/opengl/mesa/drivers/common/meta.c index d7d79dcf6a2..ac4a8ac6146 100644 --- a/reactos/dll/opengl/mesa/drivers/common/meta.c +++ b/reactos/dll/opengl/mesa/drivers/common/meta.c @@ -34,7 +34,6 @@ #include "main/glheader.h" #include "main/mtypes.h" #include "main/imports.h" -#include "main/arrayobj.h" #include "main/blend.h" #include "main/bufferobj.h" #include "main/buffers.h" @@ -134,10 +133,6 @@ struct save_state GLbitfield TexGenEnabled; GLuint EnvMode; /* unit[0] only */ - /** MESA_META_VERTEX */ - struct gl_array_object *ArrayObj; - struct gl_buffer_object *ArrayBufferObj; - /** MESA_META_VIEWPORT */ GLint ViewportX, ViewportY, ViewportW, ViewportH; GLclampd DepthNear, DepthFar; @@ -406,15 +401,6 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state) } } - if (state & MESA_META_VERTEX) { - /* save vertex array object state */ - _mesa_reference_array_object(ctx, &save->ArrayObj, - ctx->Array.ArrayObj); - _mesa_reference_buffer_object(ctx, &save->ArrayBufferObj, - ctx->Array.ArrayBufferObj); - /* set some default state? */ - } - if (state & MESA_META_VIEWPORT) { /* save viewport state */ save->ViewportX = ctx->Viewport.X; @@ -598,16 +584,6 @@ _mesa_meta_end(struct gl_context *ctx) } } - if (state & MESA_META_VERTEX) { - /* restore vertex buffer object */ - _mesa_BindBufferARB(GL_ARRAY_BUFFER_ARB, save->ArrayBufferObj->Name); - _mesa_reference_buffer_object(ctx, &save->ArrayBufferObj, NULL); - - /* restore vertex array object */ - _mesa_BindVertexArray(save->ArrayObj->Name); - _mesa_reference_array_object(ctx, &save->ArrayObj, NULL); - } - if (state & MESA_META_VIEWPORT) { if (save->ViewportX != ctx->Viewport.X || save->ViewportY != ctx->Viewport.Y || diff --git a/reactos/dll/opengl/mesa/drivers/common/meta.h b/reactos/dll/opengl/mesa/drivers/common/meta.h index 388f6aeb2ab..677ed05d3ff 100644 --- a/reactos/dll/opengl/mesa/drivers/common/meta.h +++ b/reactos/dll/opengl/mesa/drivers/common/meta.h @@ -47,7 +47,6 @@ #define MESA_META_STENCIL_TEST 0x400 #define MESA_META_TRANSFORM 0x800 /**< modelview/projection matrix state */ #define MESA_META_TEXTURE 0x1000 -#define MESA_META_VERTEX 0x2000 #define MESA_META_VIEWPORT 0x4000 #define MESA_META_CLIP 0x8000 #define MESA_META_SELECT_FEEDBACK 0x10000 diff --git a/reactos/dll/opengl/mesa/main/CMakeLists.txt b/reactos/dll/opengl/mesa/main/CMakeLists.txt index ecd653187f8..15e8651fba8 100644 --- a/reactos/dll/opengl/mesa/main/CMakeLists.txt +++ b/reactos/dll/opengl/mesa/main/CMakeLists.txt @@ -6,7 +6,6 @@ list(APPEND SOURCE api_validate.c accum.c attrib.c - arrayobj.c blend.c bufferobj.c buffers.c diff --git a/reactos/dll/opengl/mesa/main/api_arrayelt.c b/reactos/dll/opengl/mesa/main/api_arrayelt.c index 6cb6bd83a47..87b98439731 100644 --- a/reactos/dll/opengl/mesa/main/api_arrayelt.c +++ b/reactos/dll/opengl/mesa/main/api_arrayelt.c @@ -734,49 +734,48 @@ static void _ae_update_state( struct gl_context *ctx ) AEcontext *actx = AE_CONTEXT(ctx); AEarray *aa = actx->arrays; AEattrib *at = actx->attribs; - struct gl_array_object *arrayObj = ctx->Array.ArrayObj; actx->nr_vbos = 0; /* conventional vertex arrays */ - if (arrayObj->VertexAttrib[VERT_ATTRIB_COLOR_INDEX].Enabled) { - aa->array = &arrayObj->VertexAttrib[VERT_ATTRIB_COLOR_INDEX]; + if (ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR_INDEX].Enabled) { + aa->array = &ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR_INDEX]; aa->offset = IndexFuncs[TYPE_IDX(aa->array->Type)]; check_vbo(actx, aa->array->BufferObj); aa++; } - if (arrayObj->VertexAttrib[VERT_ATTRIB_EDGEFLAG].Enabled) { - aa->array = &arrayObj->VertexAttrib[VERT_ATTRIB_EDGEFLAG]; + if (ctx->Array.VertexAttrib[VERT_ATTRIB_EDGEFLAG].Enabled) { + aa->array = &ctx->Array.VertexAttrib[VERT_ATTRIB_EDGEFLAG]; aa->offset = _gloffset_EdgeFlagv; check_vbo(actx, aa->array->BufferObj); aa++; } - if (arrayObj->VertexAttrib[VERT_ATTRIB_NORMAL].Enabled) { - aa->array = &arrayObj->VertexAttrib[VERT_ATTRIB_NORMAL]; + if (ctx->Array.VertexAttrib[VERT_ATTRIB_NORMAL].Enabled) { + aa->array = &ctx->Array.VertexAttrib[VERT_ATTRIB_NORMAL]; aa->offset = NormalFuncs[TYPE_IDX(aa->array->Type)]; check_vbo(actx, aa->array->BufferObj); aa++; } - if (arrayObj->VertexAttrib[VERT_ATTRIB_COLOR0].Enabled) { - aa->array = &arrayObj->VertexAttrib[VERT_ATTRIB_COLOR0]; + if (ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR0].Enabled) { + aa->array = &ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR0]; aa->offset = ColorFuncs[aa->array->Size-3][TYPE_IDX(aa->array->Type)]; check_vbo(actx, aa->array->BufferObj); aa++; } - if (arrayObj->VertexAttrib[VERT_ATTRIB_COLOR1].Enabled) { - aa->array = &arrayObj->VertexAttrib[VERT_ATTRIB_COLOR1]; + if (ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR1].Enabled) { + aa->array = &ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR1]; aa->offset = SecondaryColorFuncs[TYPE_IDX(aa->array->Type)]; check_vbo(actx, aa->array->BufferObj); aa++; } - if (arrayObj->VertexAttrib[VERT_ATTRIB_FOG].Enabled) { - aa->array = &arrayObj->VertexAttrib[VERT_ATTRIB_FOG]; + if (ctx->Array.VertexAttrib[VERT_ATTRIB_FOG].Enabled) { + aa->array = &ctx->Array.VertexAttrib[VERT_ATTRIB_FOG]; aa->offset = FogCoordFuncs[TYPE_IDX(aa->array->Type)]; check_vbo(actx, aa->array->BufferObj); aa++; } { - struct gl_client_array *attribArray = &arrayObj->VertexAttrib[VERT_ATTRIB_TEX]; + struct gl_client_array *attribArray = &ctx->Array.VertexAttrib[VERT_ATTRIB_TEX]; if (attribArray->Enabled) { /* NOTE: we use generic glVertexAttribNV functions here. * If we ever remove GL_NV_vertex_program this will have to change. @@ -793,14 +792,14 @@ static void _ae_update_state( struct gl_context *ctx ) } /* finally, vertex position */ - if (arrayObj->VertexAttrib[VERT_ATTRIB_POS].Enabled) { - aa->array = &arrayObj->VertexAttrib[VERT_ATTRIB_POS]; + if (ctx->Array.VertexAttrib[VERT_ATTRIB_POS].Enabled) { + aa->array = &ctx->Array.VertexAttrib[VERT_ATTRIB_POS]; aa->offset = VertexFuncs[aa->array->Size-2][TYPE_IDX(aa->array->Type)]; check_vbo(actx, aa->array->BufferObj); aa++; } - check_vbo(actx, arrayObj->ElementArrayBufferObj); + check_vbo(actx, ctx->Array.ElementArrayBufferObj); ASSERT(at - actx->attribs <= VERT_ATTRIB_MAX); ASSERT(aa - actx->arrays < 32); diff --git a/reactos/dll/opengl/mesa/main/api_exec.c b/reactos/dll/opengl/mesa/main/api_exec.c index 245597cd294..d4d328d2f8c 100644 --- a/reactos/dll/opengl/mesa/main/api_exec.c +++ b/reactos/dll/opengl/mesa/main/api_exec.c @@ -308,12 +308,6 @@ _mesa_create_exec_table(void) /* glVertexAttrib*NV functions handled in api_loopback.c */ #endif - /* 273. GL_APPLE_vertex_array_object */ - SET_BindVertexArrayAPPLE(exec, _mesa_BindVertexArrayAPPLE); - SET_DeleteVertexArraysAPPLE(exec, _mesa_DeleteVertexArraysAPPLE); - SET_GenVertexArraysAPPLE(exec, _mesa_GenVertexArraysAPPLE); - SET_IsVertexArrayAPPLE(exec, _mesa_IsVertexArrayAPPLE); - /* 282. GL_NV_fragment_program */ #if FEATURE_NV_fragment_program SET_ProgramNamedParameter4fNV(exec, _mesa_ProgramNamedParameter4fNV); @@ -367,16 +361,6 @@ _mesa_create_exec_table(void) SET_FlushMappedBufferRange(exec, _mesa_FlushMappedBufferRange); #endif - /* GL_ARB_vertex_array_object */ - SET_BindVertexArray(exec, _mesa_BindVertexArray); - SET_GenVertexArrays(exec, _mesa_GenVertexArrays); - -#if FEATURE_APPLE_object_purgeable - SET_ObjectPurgeableAPPLE(exec, _mesa_ObjectPurgeableAPPLE); - SET_ObjectUnpurgeableAPPLE(exec, _mesa_ObjectUnpurgeableAPPLE); - SET_GetObjectParameterivAPPLE(exec, _mesa_GetObjectParameterivAPPLE); -#endif - /* GL_EXT_texture_integer */ SET_ClearColorIiEXT(exec, _mesa_ClearColorIiEXT); SET_ClearColorIuiEXT(exec, _mesa_ClearColorIuiEXT); diff --git a/reactos/dll/opengl/mesa/main/api_validate.c b/reactos/dll/opengl/mesa/main/api_validate.c index 03f99f6ee5f..2e57c524c39 100644 --- a/reactos/dll/opengl/mesa/main/api_validate.c +++ b/reactos/dll/opengl/mesa/main/api_validate.c @@ -101,7 +101,7 @@ check_valid_to_render(struct gl_context *ctx, const char *function) /* Draw if we have vertex positions (GL_VERTEX_ARRAY or generic * array [0]). */ - return ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_POS].Enabled; + return ctx->Array.VertexAttrib[VERT_ATTRIB_POS].Enabled; } @@ -130,14 +130,14 @@ check_index_bounds(struct gl_context *ctx, GLsizei count, GLenum type, memset(&ib, 0, sizeof(ib)); ib.type = type; ib.ptr = indices; - ib.obj = ctx->Array.ArrayObj->ElementArrayBufferObj; + ib.obj = ctx->Array.ElementArrayBufferObj; vbo_get_minmax_index(ctx, &prim, &ib, &min, &max); - if (max >= ctx->Array.ArrayObj->_MaxElement) { + if (max >= ctx->Array._MaxElement) { /* the max element is out of bounds of one or more enabled arrays */ _mesa_warning(ctx, "glDrawElements() index=%u is out of bounds (max=%u)", - max, ctx->Array.ArrayObj->_MaxElement); + max, ctx->Array._MaxElement); return GL_FALSE; } @@ -197,10 +197,10 @@ _mesa_validate_DrawElements(struct gl_context *ctx, return GL_FALSE; /* Vertex buffer object tests */ - if (_mesa_is_bufferobj(ctx->Array.ArrayObj->ElementArrayBufferObj)) { + if (_mesa_is_bufferobj(ctx->Array.ElementArrayBufferObj)) { /* use indices in the buffer object */ /* make sure count doesn't go outside buffer bounds */ - if (index_bytes(type, count) > ctx->Array.ArrayObj->ElementArrayBufferObj->Size) { + if (index_bytes(type, count) > ctx->Array.ElementArrayBufferObj->Size) { _mesa_warning(ctx, "glDrawElements index out of buffer bounds"); return GL_FALSE; } @@ -258,10 +258,10 @@ _mesa_validate_DrawRangeElements(struct gl_context *ctx, GLenum mode, return GL_FALSE; /* Vertex buffer object tests */ - if (_mesa_is_bufferobj(ctx->Array.ArrayObj->ElementArrayBufferObj)) { + if (_mesa_is_bufferobj(ctx->Array.ElementArrayBufferObj)) { /* use indices in the buffer object */ /* make sure count doesn't go outside buffer bounds */ - if (index_bytes(type, count) > ctx->Array.ArrayObj->ElementArrayBufferObj->Size) { + if (index_bytes(type, count) > ctx->Array.ElementArrayBufferObj->Size) { _mesa_warning(ctx, "glDrawRangeElements index out of buffer bounds"); return GL_FALSE; } @@ -305,7 +305,7 @@ _mesa_validate_DrawArrays(struct gl_context *ctx, return GL_FALSE; if (ctx->Const.CheckArrayBounds) { - if (start + count > (GLint) ctx->Array.ArrayObj->_MaxElement) + if (start + count > (GLint) ctx->Array._MaxElement) return GL_FALSE; } diff --git a/reactos/dll/opengl/mesa/main/arrayobj.c b/reactos/dll/opengl/mesa/main/arrayobj.c deleted file mode 100644 index 258d58eae31..00000000000 --- a/reactos/dll/opengl/mesa/main/arrayobj.c +++ /dev/null @@ -1,533 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 7.6 - * - * Copyright (C) 1999-2008 Brian Paul All Rights Reserved. - * (C) Copyright IBM Corporation 2006 - * Copyright (C) 2009 VMware, Inc. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL OR IBM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF - * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - - -/** - * \file arrayobj.c - * Functions for the GL_APPLE_vertex_array_object extension. - * - * \todo - * The code in this file borrows a lot from bufferobj.c. There's a certain - * amount of cruft left over from that origin that may be unnecessary. - * - * \author Ian Romanick - * \author Brian Paul - */ - -#include - -/** - * Look up the array object for the given ID. - * - * \returns - * Either a pointer to the array object with the specified ID or \c NULL for - * a non-existent ID. The spec defines ID 0 as being technically - * non-existent. - */ - -static inline struct gl_array_object * -lookup_arrayobj(struct gl_context *ctx, GLuint id) -{ - if (id == 0) - return NULL; - else - return (struct gl_array_object *) - _mesa_HashLookup(ctx->Array.Objects, id); -} - - -/** - * For all the vertex arrays in the array object, unbind any pointers - * to any buffer objects (VBOs). - * This is done just prior to array object destruction. - */ -static void -unbind_array_object_vbos(struct gl_context *ctx, struct gl_array_object *obj) -{ - GLuint i; - - for (i = 0; i < Elements(obj->VertexAttrib); i++) - _mesa_reference_buffer_object(ctx, &obj->VertexAttrib[i].BufferObj, NULL); -} - - -/** - * Allocate and initialize a new vertex array object. - * - * This function is intended to be called via - * \c dd_function_table::NewArrayObject. - */ -struct gl_array_object * -_mesa_new_array_object( struct gl_context *ctx, GLuint name ) -{ - struct gl_array_object *obj = CALLOC_STRUCT(gl_array_object); - if (obj) - _mesa_initialize_array_object(ctx, obj, name); - return obj; -} - - -/** - * Delete an array object. - * - * This function is intended to be called via - * \c dd_function_table::DeleteArrayObject. - */ -void -_mesa_delete_array_object( struct gl_context *ctx, struct gl_array_object *obj ) -{ - (void) ctx; - unbind_array_object_vbos(ctx, obj); - _mesa_reference_buffer_object(ctx, &obj->ElementArrayBufferObj, NULL); - _glthread_DESTROY_MUTEX(obj->Mutex); - free(obj); -} - - -/** - * Set ptr to arrayObj w/ reference counting. - */ -void -_mesa_reference_array_object(struct gl_context *ctx, - struct gl_array_object **ptr, - struct gl_array_object *arrayObj) -{ - if (*ptr == arrayObj) - return; - - if (*ptr) { - /* Unreference the old array object */ - GLboolean deleteFlag = GL_FALSE; - struct gl_array_object *oldObj = *ptr; - - _glthread_LOCK_MUTEX(oldObj->Mutex); - ASSERT(oldObj->RefCount > 0); - oldObj->RefCount--; -#if 0 - printf("ArrayObj %p %d DECR to %d\n", - (void *) oldObj, oldObj->Name, oldObj->RefCount); -#endif - deleteFlag = (oldObj->RefCount == 0); - _glthread_UNLOCK_MUTEX(oldObj->Mutex); - - if (deleteFlag) { - ASSERT(ctx->Driver.DeleteArrayObject); - ctx->Driver.DeleteArrayObject(ctx, oldObj); - } - - *ptr = NULL; - } - ASSERT(!*ptr); - - if (arrayObj) { - /* reference new array object */ - _glthread_LOCK_MUTEX(arrayObj->Mutex); - if (arrayObj->RefCount == 0) { - /* this array's being deleted (look just above) */ - /* Not sure this can every really happen. Warn if it does. */ - _mesa_problem(NULL, "referencing deleted array object"); - *ptr = NULL; - } - else { - arrayObj->RefCount++; -#if 0 - printf("ArrayObj %p %d INCR to %d\n", - (void *) arrayObj, arrayObj->Name, arrayObj->RefCount); -#endif - *ptr = arrayObj; - } - _glthread_UNLOCK_MUTEX(arrayObj->Mutex); - } -} - - - -static void -init_array(struct gl_context *ctx, - struct gl_client_array *array, GLint size, GLint type) -{ - array->Size = size; - array->Type = type; - array->Stride = 0; - array->StrideB = 0; - array->Ptr = NULL; - array->Enabled = GL_FALSE; - array->Normalized = GL_FALSE; - array->Integer = GL_FALSE; - array->_ElementSize = size * _mesa_sizeof_type(type); - /* Vertex array buffers */ - _mesa_reference_buffer_object(ctx, &array->BufferObj, - ctx->Shared->NullBufferObj); -} - - -/** - * Initialize a gl_array_object's arrays. - */ -void -_mesa_initialize_array_object( struct gl_context *ctx, - struct gl_array_object *obj, - GLuint name ) -{ - GLuint i; - - obj->Name = name; - - _glthread_INIT_MUTEX(obj->Mutex); - obj->RefCount = 1; - - /* Init the individual arrays */ - for (i = 0; i < Elements(obj->VertexAttrib); i++) { - switch (i) { - case VERT_ATTRIB_WEIGHT: - init_array(ctx, &obj->VertexAttrib[VERT_ATTRIB_WEIGHT], 1, GL_FLOAT); - break; - case VERT_ATTRIB_NORMAL: - init_array(ctx, &obj->VertexAttrib[VERT_ATTRIB_NORMAL], 3, GL_FLOAT); - break; - case VERT_ATTRIB_COLOR1: - init_array(ctx, &obj->VertexAttrib[VERT_ATTRIB_COLOR1], 3, GL_FLOAT); - break; - case VERT_ATTRIB_FOG: - init_array(ctx, &obj->VertexAttrib[VERT_ATTRIB_FOG], 1, GL_FLOAT); - break; - case VERT_ATTRIB_COLOR_INDEX: - init_array(ctx, &obj->VertexAttrib[VERT_ATTRIB_COLOR_INDEX], 1, GL_FLOAT); - break; - case VERT_ATTRIB_EDGEFLAG: - init_array(ctx, &obj->VertexAttrib[VERT_ATTRIB_EDGEFLAG], 1, GL_BOOL); - break; -#if FEATURE_point_size_array - case VERT_ATTRIB_POINT_SIZE: - init_array(ctx, &obj->VertexAttrib[VERT_ATTRIB_POINT_SIZE], 1, GL_FLOAT); - break; -#endif - default: - init_array(ctx, &obj->VertexAttrib[i], 4, GL_FLOAT); - break; - } - } - - _mesa_reference_buffer_object(ctx, &obj->ElementArrayBufferObj, - ctx->Shared->NullBufferObj); -} - - -/** - * Add the given array object to the array object pool. - */ -static void -save_array_object( struct gl_context *ctx, struct gl_array_object *obj ) -{ - if (obj->Name > 0) { - /* insert into hash table */ - _mesa_HashInsert(ctx->Array.Objects, obj->Name, obj); - } -} - - -/** - * Remove the given array object from the array object pool. - * Do not deallocate the array object though. - */ -static void -remove_array_object( struct gl_context *ctx, struct gl_array_object *obj ) -{ - if (obj->Name > 0) { - /* remove from hash table */ - _mesa_HashRemove(ctx->Array.Objects, obj->Name); - } -} - - - -/** - * Helper for update_arrays(). - * \return min(current min, array->_MaxElement). - */ -static GLuint -update_min(GLuint min, struct gl_client_array *array) -{ - assert(array->Enabled); - _mesa_update_array_max_element(array); - return MIN2(min, array->_MaxElement); -} - - -/** - * Examine vertex arrays to update the gl_array_object::_MaxElement field. - */ -void -_mesa_update_array_object_max_element(struct gl_context *ctx, - struct gl_array_object *arrayObj) -{ - GLbitfield64 enabled = arrayObj->_Enabled; - GLuint min = ~0u; - - while (enabled) { - GLint attrib = _mesa_ffsll(enabled) - 1; - enabled &= ~BITFIELD64_BIT(attrib); - min = update_min(min, &arrayObj->VertexAttrib[attrib]); - } - - /* _MaxElement is one past the last legal array element */ - arrayObj->_MaxElement = min; -} - - -/**********************************************************************/ -/* API Functions */ -/**********************************************************************/ - - -/** - * Helper for _mesa_BindVertexArray() and _mesa_BindVertexArrayAPPLE(). - * \param genRequired specifies behavour when id was not generated with - * glGenVertexArrays(). - */ -static void -bind_vertex_array(struct gl_context *ctx, GLuint id, GLboolean genRequired) -{ - struct gl_array_object * const oldObj = ctx->Array.ArrayObj; - struct gl_array_object *newObj = NULL; - ASSERT_OUTSIDE_BEGIN_END(ctx); - - ASSERT(oldObj != NULL); - - if ( oldObj->Name == id ) - return; /* rebinding the same array object- no change */ - - /* - * Get pointer to new array object (newObj) - */ - if (id == 0) { - /* The spec says there is no array object named 0, but we use - * one internally because it simplifies things. - */ - newObj = ctx->Array.DefaultArrayObj; - } - else { - /* non-default array object */ - newObj = lookup_arrayobj(ctx, id); - if (!newObj) { - if (genRequired) { - _mesa_error(ctx, GL_INVALID_OPERATION, "glBindVertexArray(id)"); - return; - } - - /* For APPLE version, generate a new array object now */ - newObj = (*ctx->Driver.NewArrayObject)(ctx, id); - if (!newObj) { - _mesa_error(ctx, GL_OUT_OF_MEMORY, "glBindVertexArrayAPPLE"); - return; - } - - save_array_object(ctx, newObj); - } - - if (!newObj->_Used) { - /* The "Interactions with APPLE_vertex_array_object" section of the - * GL_ARB_vertex_array_object spec says: - * - * "The first bind call, either BindVertexArray or - * BindVertexArrayAPPLE, determines the semantic of the object." - */ - newObj->ARBsemantics = genRequired; - newObj->_Used = GL_TRUE; - } - } - - ctx->NewState |= _NEW_ARRAY; - ctx->Array.NewState |= VERT_BIT_ALL; - _mesa_reference_array_object(ctx, &ctx->Array.ArrayObj, newObj); - - /* Pass BindVertexArray call to device driver */ - if (ctx->Driver.BindArrayObject && newObj) - ctx->Driver.BindArrayObject(ctx, newObj); -} - - -/** - * ARB version of glBindVertexArray() - * This function behaves differently from glBindVertexArrayAPPLE() in - * that this function requires all ids to have been previously generated - * by glGenVertexArrays[APPLE](). - */ -void GLAPIENTRY -_mesa_BindVertexArray( GLuint id ) -{ - GET_CURRENT_CONTEXT(ctx); - bind_vertex_array(ctx, id, GL_TRUE); -} - - -/** - * Bind a new array. - * - * \todo - * The binding could be done more efficiently by comparing the non-NULL - * pointers in the old and new objects. The only arrays that are "dirty" are - * the ones that are non-NULL in either object. - */ -void GLAPIENTRY -_mesa_BindVertexArrayAPPLE( GLuint id ) -{ - GET_CURRENT_CONTEXT(ctx); - bind_vertex_array(ctx, id, GL_FALSE); -} - - -/** - * Delete a set of array objects. - * - * \param n Number of array objects to delete. - * \param ids Array of \c n array object IDs. - */ -void GLAPIENTRY -_mesa_DeleteVertexArraysAPPLE(GLsizei n, const GLuint *ids) -{ - GET_CURRENT_CONTEXT(ctx); - GLsizei i; - ASSERT_OUTSIDE_BEGIN_END(ctx); - - if (n < 0) { - _mesa_error(ctx, GL_INVALID_VALUE, "glDeleteVertexArrayAPPLE(n)"); - return; - } - - for (i = 0; i < n; i++) { - struct gl_array_object *obj = lookup_arrayobj(ctx, ids[i]); - - if ( obj != NULL ) { - ASSERT( obj->Name == ids[i] ); - - /* If the array object is currently bound, the spec says "the binding - * for that object reverts to zero and the default vertex array - * becomes current." - */ - if ( obj == ctx->Array.ArrayObj ) { - CALL_BindVertexArrayAPPLE( ctx->Exec, (0) ); - } - - /* The ID is immediately freed for re-use */ - remove_array_object(ctx, obj); - - /* Unreference the array object. - * If refcount hits zero, the object will be deleted. - */ - _mesa_reference_array_object(ctx, &obj, NULL); - } - } -} - - -/** - * Generate a set of unique array object IDs and store them in \c arrays. - * Helper for _mesa_GenVertexArrays[APPLE]() functions below. - * \param n Number of IDs to generate. - * \param arrays Array of \c n locations to store the IDs. - * \param vboOnly Will arrays have to reside in VBOs? - */ -static void -gen_vertex_arrays(struct gl_context *ctx, GLsizei n, GLuint *arrays) -{ - GLuint first; - GLint i; - ASSERT_OUTSIDE_BEGIN_END(ctx); - - if (n < 0) { - _mesa_error(ctx, GL_INVALID_VALUE, "glGenVertexArraysAPPLE"); - return; - } - - if (!arrays) { - return; - } - - first = _mesa_HashFindFreeKeyBlock(ctx->Array.Objects, n); - - /* Allocate new, empty array objects and return identifiers */ - for (i = 0; i < n; i++) { - struct gl_array_object *obj; - GLuint name = first + i; - - obj = (*ctx->Driver.NewArrayObject)( ctx, name ); - if (!obj) { - _mesa_error(ctx, GL_OUT_OF_MEMORY, "glGenVertexArraysAPPLE"); - return; - } - save_array_object(ctx, obj); - arrays[i] = first + i; - } -} - - -/** - * ARB version of glGenVertexArrays() - * All arrays will be required to live in VBOs. - */ -void GLAPIENTRY -_mesa_GenVertexArrays(GLsizei n, GLuint *arrays) -{ - GET_CURRENT_CONTEXT(ctx); - gen_vertex_arrays(ctx, n, arrays); -} - - -/** - * APPLE version of glGenVertexArraysAPPLE() - * Arrays may live in VBOs or ordinary memory. - */ -void GLAPIENTRY -_mesa_GenVertexArraysAPPLE(GLsizei n, GLuint *arrays) -{ - GET_CURRENT_CONTEXT(ctx); - gen_vertex_arrays(ctx, n, arrays); -} - - -/** - * Determine if ID is the name of an array object. - * - * \param id ID of the potential array object. - * \return \c GL_TRUE if \c id is the name of a array object, - * \c GL_FALSE otherwise. - */ -GLboolean GLAPIENTRY -_mesa_IsVertexArrayAPPLE( GLuint id ) -{ - struct gl_array_object * obj; - GET_CURRENT_CONTEXT(ctx); - ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, GL_FALSE); - - if (id == 0) - return GL_FALSE; - - obj = lookup_arrayobj(ctx, id); - - return (obj != NULL) ? GL_TRUE : GL_FALSE; -} diff --git a/reactos/dll/opengl/mesa/main/arrayobj.h b/reactos/dll/opengl/mesa/main/arrayobj.h deleted file mode 100644 index 0b5a0130370..00000000000 --- a/reactos/dll/opengl/mesa/main/arrayobj.h +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 7.6 - * - * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. - * (C) Copyright IBM Corporation 2006 - * Copyright (C) 2009 VMware, Inc. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL OR IBM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF - * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#ifndef ARRAYOBJ_H -#define ARRAYOBJ_H - -#include "glheader.h" - -struct gl_context; - -/** - * \file arrayobj.h - * Functions for the GL_APPLE_vertex_array_object extension. - * - * \author Ian Romanick - * \author Brian Paul - */ - -/* - * Internal functions - */ - -extern struct gl_array_object * -_mesa_new_array_object( struct gl_context *ctx, GLuint name ); - -extern void -_mesa_delete_array_object( struct gl_context *ctx, struct gl_array_object *obj ); - -extern void -_mesa_reference_array_object(struct gl_context *ctx, - struct gl_array_object **ptr, - struct gl_array_object *arrayObj); - -extern void -_mesa_initialize_array_object( struct gl_context *ctx, - struct gl_array_object *obj, GLuint name ); - - -extern void -_mesa_update_array_object_max_element(struct gl_context *ctx, - struct gl_array_object *arrayObj); - - -/* - * API functions - */ - - -void GLAPIENTRY _mesa_BindVertexArray( GLuint id ); - -void GLAPIENTRY _mesa_BindVertexArrayAPPLE( GLuint id ); - -void GLAPIENTRY _mesa_DeleteVertexArraysAPPLE(GLsizei n, const GLuint *ids); - -void GLAPIENTRY _mesa_GenVertexArrays(GLsizei n, GLuint *arrays); - -void GLAPIENTRY _mesa_GenVertexArraysAPPLE(GLsizei n, GLuint *buffer); - -GLboolean GLAPIENTRY _mesa_IsVertexArrayAPPLE( GLuint id ); - -#endif /* ARRAYOBJ_H */ diff --git a/reactos/dll/opengl/mesa/main/attrib.c b/reactos/dll/opengl/mesa/main/attrib.c index 761831ec0da..e3881373290 100644 --- a/reactos/dll/opengl/mesa/main/attrib.c +++ b/reactos/dll/opengl/mesa/main/attrib.c @@ -1056,31 +1056,6 @@ copy_pixelstore(struct gl_context *ctx, #define GL_CLIENT_PACK_BIT (1<<20) #define GL_CLIENT_UNPACK_BIT (1<<21) -/** - * Copy gl_array_object from src to dest. - * 'dest' must be in an initialized state. - */ -static void -copy_array_object(struct gl_context *ctx, - struct gl_array_object *dest, - struct gl_array_object *src) -{ - GLuint i; - - /* skip Name */ - /* skip RefCount */ - - /* In theory must be the same anyway, but on recreate make sure it matches */ - dest->ARBsemantics = src->ARBsemantics; - - for (i = 0; i < Elements(src->VertexAttrib); i++) - _mesa_copy_client_array(ctx, &dest->VertexAttrib[i], &src->VertexAttrib[i]); - - /* _Enabled must be the same than on push */ - dest->_Enabled = src->_Enabled; - dest->_MaxElement = src->_MaxElement; -} - /** * Copy gl_array_attrib from src to dest. * 'dest' must be in an initialized state. @@ -1098,8 +1073,20 @@ copy_array_attrib(struct gl_context *ctx, /* skip NewState */ /* skip RebindArrays */ - if (!vbo_deleted) - copy_array_object(ctx, dest->ArrayObj, src->ArrayObj); + if (!vbo_deleted) + { + GLuint i; + + /* skip Name */ + /* skip RefCount */ + + for (i = 0; i < Elements(src->VertexAttrib); i++) + _mesa_copy_client_array(ctx, &dest->VertexAttrib[i], &src->VertexAttrib[i]); + + /* _Enabled must be the same than on push */ + dest->_Enabled = src->_Enabled; + dest->_MaxElement = src->_MaxElement; + } /* skip ArrayBufferObj */ /* skip ElementArrayBufferObj */ @@ -1113,17 +1100,14 @@ save_array_attrib(struct gl_context *ctx, struct gl_array_attrib *dest, struct gl_array_attrib *src) { - /* Set the Name, needed for restore, but do never overwrite. - * Needs to match value in the object hash. */ - dest->ArrayObj->Name = src->ArrayObj->Name; /* And copy all of the rest. */ copy_array_attrib(ctx, dest, src, GL_FALSE); /* Just reference them here */ _mesa_reference_buffer_object(ctx, &dest->ArrayBufferObj, src->ArrayBufferObj); - _mesa_reference_buffer_object(ctx, &dest->ArrayObj->ElementArrayBufferObj, - src->ArrayObj->ElementArrayBufferObj); + _mesa_reference_buffer_object(ctx, &dest->ElementArrayBufferObj, + src->ElementArrayBufferObj); } /** @@ -1134,29 +1118,8 @@ restore_array_attrib(struct gl_context *ctx, struct gl_array_attrib *dest, struct gl_array_attrib *src) { - /* The ARB_vertex_array_object spec says: - * - * "BindVertexArray fails and an INVALID_OPERATION error is generated - * if array is not a name returned from a previous call to - * GenVertexArrays, or if such a name has since been deleted with - * DeleteVertexArrays." - * - * Therefore popping a deleted VAO cannot magically recreate it. - * - * The semantics of objects created using APPLE_vertex_array_objects behave - * differently. These objects expect to be recreated by pop. Alas. - */ - const GLboolean arb_vao = (src->ArrayObj->Name != 0 - && src->ArrayObj->ARBsemantics); - - if (arb_vao && !_mesa_IsVertexArrayAPPLE(src->ArrayObj->Name)) - return; - - _mesa_BindVertexArrayAPPLE(src->ArrayObj->Name); - /* Restore or recreate the buffer objects by the names ... */ - if (!arb_vao - || src->ArrayBufferObj->Name == 0 + if (!src->ArrayBufferObj->Name == 0 || _mesa_IsBufferARB(src->ArrayBufferObj->Name)) { /* ... and restore its content */ copy_array_attrib(ctx, dest, src, GL_FALSE); @@ -1167,11 +1130,10 @@ restore_array_attrib(struct gl_context *ctx, copy_array_attrib(ctx, dest, src, GL_TRUE); } - if (!arb_vao - || src->ArrayObj->ElementArrayBufferObj->Name == 0 - || _mesa_IsBufferARB(src->ArrayObj->ElementArrayBufferObj->Name)) + if (src->ElementArrayBufferObj->Name == 0 + || _mesa_IsBufferARB(src->ElementArrayBufferObj->Name)) _mesa_BindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, - src->ArrayObj->ElementArrayBufferObj->Name); + src->ElementArrayBufferObj->Name); /* Better safe than sorry?! */ dest->RebindArrays = GL_TRUE; @@ -1181,20 +1143,7 @@ restore_array_attrib(struct gl_context *ctx, * FIXME: of the old ArrayObj->_Enabled and the new _Enabled. * ... just do it. */ - dest->NewState |= src->ArrayObj->_Enabled | dest->ArrayObj->_Enabled; -} - -/** - * init/alloc the fields of 'attrib'. - * Needs to the init part matching free_array_attrib_data below. - */ -static void -init_array_attrib_data(struct gl_context *ctx, - struct gl_array_attrib *attrib) -{ - /* Get a non driver gl_array_object. */ - attrib->ArrayObj = CALLOC_STRUCT( gl_array_object ); - _mesa_initialize_array_object(ctx, attrib->ArrayObj, 0); + dest->NewState |= src->_Enabled | dest->_Enabled; } /** @@ -1206,11 +1155,8 @@ static void free_array_attrib_data(struct gl_context *ctx, struct gl_array_attrib *attrib) { - /* We use a non driver array object, so don't just unref since we would - * end up using the drivers DeleteArrayObject function for deletion. */ - _mesa_delete_array_object(ctx, attrib->ArrayObj); - attrib->ArrayObj = 0; _mesa_reference_buffer_object(ctx, &attrib->ArrayBufferObj, NULL); + _mesa_free_varray_data(ctx, attrib); } @@ -1247,7 +1193,7 @@ _mesa_PushClientAttrib(GLbitfield mask) if (mask & GL_CLIENT_VERTEX_ARRAY_BIT) { struct gl_array_attrib *attr; attr = CALLOC_STRUCT( gl_array_attrib ); - init_array_attrib_data(ctx, attr); + _mesa_init_varray(ctx, attr); save_array_attrib(ctx, attr, &ctx->Array); save_attrib_data(&head, GL_CLIENT_VERTEX_ARRAY_BIT, attr); } diff --git a/reactos/dll/opengl/mesa/main/bufferobj.c b/reactos/dll/opengl/mesa/main/bufferobj.c index b237fa6a114..f4251036d23 100644 --- a/reactos/dll/opengl/mesa/main/bufferobj.c +++ b/reactos/dll/opengl/mesa/main/bufferobj.c @@ -58,7 +58,7 @@ get_buffer_target(struct gl_context *ctx, GLenum target) case GL_ARRAY_BUFFER_ARB: return &ctx->Array.ArrayBufferObj; case GL_ELEMENT_ARRAY_BUFFER_ARB: - return &ctx->Array.ArrayObj->ElementArrayBufferObj; + return &ctx->Array.ElementArrayBufferObj; default: return NULL; } @@ -658,7 +658,6 @@ _mesa_DeleteBuffersARB(GLsizei n, const GLuint *ids) for (i = 0; i < n; i++) { struct gl_buffer_object *bufObj = _mesa_lookup_bufferobj(ctx, ids[i]); if (bufObj) { - struct gl_array_object *arrayObj = ctx->Array.ArrayObj; GLuint j; ASSERT(bufObj->Name == ids[i] || bufObj == &DummyBufferObject); @@ -671,14 +670,14 @@ _mesa_DeleteBuffersARB(GLsizei n, const GLuint *ids) } /* unbind any vertex pointers bound to this buffer */ - for (j = 0; j < Elements(arrayObj->VertexAttrib); j++) { - unbind(ctx, &arrayObj->VertexAttrib[j].BufferObj, bufObj); + for (j = 0; j < Elements(ctx->Array.VertexAttrib); j++) { + unbind(ctx, &ctx->Array.VertexAttrib[j].BufferObj, bufObj); } if (ctx->Array.ArrayBufferObj == bufObj) { _mesa_BindBufferARB( GL_ARRAY_BUFFER_ARB, 0 ); } - if (arrayObj->ElementArrayBufferObj == bufObj) { + if (ctx->Array.ElementArrayBufferObj == bufObj) { _mesa_BindBufferARB( GL_ELEMENT_ARRAY_BUFFER_ARB, 0 ); } @@ -1326,286 +1325,3 @@ _mesa_FlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) ctx->Driver.FlushMappedBufferRange(ctx, offset, length, bufObj); } - -#if FEATURE_APPLE_object_purgeable -static GLenum -buffer_object_purgeable(struct gl_context *ctx, GLuint name, GLenum option) -{ - struct gl_buffer_object *bufObj; - GLenum retval; - - bufObj = _mesa_lookup_bufferobj(ctx, name); - if (!bufObj) { - _mesa_error(ctx, GL_INVALID_VALUE, - "glObjectPurgeable(name = 0x%x)", name); - return 0; - } - if (!_mesa_is_bufferobj(bufObj)) { - _mesa_error(ctx, GL_INVALID_OPERATION, "glObjectPurgeable(buffer 0)" ); - return 0; - } - - if (bufObj->Purgeable) { - _mesa_error(ctx, GL_INVALID_OPERATION, - "glObjectPurgeable(name = 0x%x) is already purgeable", name); - return GL_VOLATILE_APPLE; - } - - bufObj->Purgeable = GL_TRUE; - - retval = GL_VOLATILE_APPLE; - if (ctx->Driver.BufferObjectPurgeable) - retval = ctx->Driver.BufferObjectPurgeable(ctx, bufObj, option); - - return retval; -} - -static GLenum -texture_object_purgeable(struct gl_context *ctx, GLuint name, GLenum option) -{ - struct gl_texture_object *bufObj; - GLenum retval; - - bufObj = _mesa_lookup_texture(ctx, name); - if (!bufObj) { - _mesa_error(ctx, GL_INVALID_VALUE, - "glObjectPurgeable(name = 0x%x)", name); - return 0; - } - - if (bufObj->Purgeable) { - _mesa_error(ctx, GL_INVALID_OPERATION, - "glObjectPurgeable(name = 0x%x) is already purgeable", name); - return GL_VOLATILE_APPLE; - } - - bufObj->Purgeable = GL_TRUE; - - retval = GL_VOLATILE_APPLE; - if (ctx->Driver.TextureObjectPurgeable) - retval = ctx->Driver.TextureObjectPurgeable(ctx, bufObj, option); - - return retval; -} - - -GLenum GLAPIENTRY -_mesa_ObjectPurgeableAPPLE(GLenum objectType, GLuint name, GLenum option) -{ - GLenum retval; - - GET_CURRENT_CONTEXT(ctx); - ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, 0); - - if (name == 0) { - _mesa_error(ctx, GL_INVALID_VALUE, - "glObjectPurgeable(name = 0x%x)", name); - return 0; - } - - switch (option) { - case GL_VOLATILE_APPLE: - case GL_RELEASED_APPLE: - /* legal */ - break; - default: - _mesa_error(ctx, GL_INVALID_ENUM, - "glObjectPurgeable(name = 0x%x) invalid option: %d", - name, option); - return 0; - } - - switch (objectType) { - case GL_TEXTURE: - retval = texture_object_purgeable(ctx, name, option); - break; - case GL_BUFFER_OBJECT_APPLE: - retval = buffer_object_purgeable(ctx, name, option); - break; - default: - _mesa_error(ctx, GL_INVALID_ENUM, - "glObjectPurgeable(name = 0x%x) invalid type: %d", - name, objectType); - return 0; - } - - /* In strict conformance to the spec, we must only return VOLATILE when - * when passed the VOLATILE option. Madness. - * - * XXX First fix the spec, then fix me. - */ - return option == GL_VOLATILE_APPLE ? GL_VOLATILE_APPLE : retval; -} - - -static GLenum -buffer_object_unpurgeable(struct gl_context *ctx, GLuint name, GLenum option) -{ - struct gl_buffer_object *bufObj; - GLenum retval; - - bufObj = _mesa_lookup_bufferobj(ctx, name); - if (!bufObj) { - _mesa_error(ctx, GL_INVALID_VALUE, - "glObjectUnpurgeable(name = 0x%x)", name); - return 0; - } - - if (! bufObj->Purgeable) { - _mesa_error(ctx, GL_INVALID_OPERATION, - "glObjectUnpurgeable(name = 0x%x) object is " - " already \"unpurged\"", name); - return 0; - } - - bufObj->Purgeable = GL_FALSE; - - retval = option; - if (ctx->Driver.BufferObjectUnpurgeable) - retval = ctx->Driver.BufferObjectUnpurgeable(ctx, bufObj, option); - - return retval; -} - -static GLenum -texture_object_unpurgeable(struct gl_context *ctx, GLuint name, GLenum option) -{ - struct gl_texture_object *bufObj; - GLenum retval; - - bufObj = _mesa_lookup_texture(ctx, name); - if (!bufObj) { - _mesa_error(ctx, GL_INVALID_VALUE, - "glObjectUnpurgeable(name = 0x%x)", name); - return 0; - } - - if (! bufObj->Purgeable) { - _mesa_error(ctx, GL_INVALID_OPERATION, - "glObjectUnpurgeable(name = 0x%x) object is" - " already \"unpurged\"", name); - return 0; - } - - bufObj->Purgeable = GL_FALSE; - - retval = option; - if (ctx->Driver.TextureObjectUnpurgeable) - retval = ctx->Driver.TextureObjectUnpurgeable(ctx, bufObj, option); - - return retval; -} - - -GLenum GLAPIENTRY -_mesa_ObjectUnpurgeableAPPLE(GLenum objectType, GLuint name, GLenum option) -{ - GET_CURRENT_CONTEXT(ctx); - ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, 0); - - if (name == 0) { - _mesa_error(ctx, GL_INVALID_VALUE, - "glObjectUnpurgeable(name = 0x%x)", name); - return 0; - } - - switch (option) { - case GL_RETAINED_APPLE: - case GL_UNDEFINED_APPLE: - /* legal */ - break; - default: - _mesa_error(ctx, GL_INVALID_ENUM, - "glObjectUnpurgeable(name = 0x%x) invalid option: %d", - name, option); - return 0; - } - - switch (objectType) { - case GL_BUFFER_OBJECT_APPLE: - return buffer_object_unpurgeable(ctx, name, option); - case GL_TEXTURE: - return texture_object_unpurgeable(ctx, name, option); - default: - _mesa_error(ctx, GL_INVALID_ENUM, - "glObjectUnpurgeable(name = 0x%x) invalid type: %d", - name, objectType); - return 0; - } -} - - -static void -get_buffer_object_parameteriv(struct gl_context *ctx, GLuint name, - GLenum pname, GLint *params) -{ - struct gl_buffer_object *bufObj = _mesa_lookup_bufferobj(ctx, name); - if (!bufObj) { - _mesa_error(ctx, GL_INVALID_VALUE, - "glGetObjectParameteriv(name = 0x%x) invalid object", name); - return; - } - - switch (pname) { - case GL_PURGEABLE_APPLE: - *params = bufObj->Purgeable; - break; - default: - _mesa_error(ctx, GL_INVALID_ENUM, - "glGetObjectParameteriv(name = 0x%x) invalid enum: %d", - name, pname); - break; - } -} - -static void -get_texture_object_parameteriv(struct gl_context *ctx, GLuint name, - GLenum pname, GLint *params) -{ - struct gl_texture_object *texObj = _mesa_lookup_texture(ctx, name); - if (!texObj) { - _mesa_error(ctx, GL_INVALID_VALUE, - "glObjectUnpurgeable(name = 0x%x)", name); - return; - } - - switch (pname) { - case GL_PURGEABLE_APPLE: - *params = texObj->Purgeable; - break; - default: - _mesa_error(ctx, GL_INVALID_ENUM, - "glGetObjectParameteriv(name = 0x%x) invalid enum: %d", - name, pname); - break; - } -} - - -void GLAPIENTRY -_mesa_GetObjectParameterivAPPLE(GLenum objectType, GLuint name, GLenum pname, - GLint *params) -{ - GET_CURRENT_CONTEXT(ctx); - - if (name == 0) { - _mesa_error(ctx, GL_INVALID_VALUE, - "glGetObjectParameteriv(name = 0x%x)", name); - return; - } - - switch (objectType) { - case GL_TEXTURE: - get_texture_object_parameteriv(ctx, name, pname, params); - break; - case GL_BUFFER_OBJECT_APPLE: - get_buffer_object_parameteriv(ctx, name, pname, params); - break; - default: - _mesa_error(ctx, GL_INVALID_ENUM, - "glGetObjectParameteriv(name = 0x%x) invalid type: %d", - name, objectType); - } -} - -#endif /* FEATURE_APPLE_object_purgeable */ diff --git a/reactos/dll/opengl/mesa/main/context.c b/reactos/dll/opengl/mesa/main/context.c index 14e64c555f3..597567b6049 100644 --- a/reactos/dll/opengl/mesa/main/context.c +++ b/reactos/dll/opengl/mesa/main/context.c @@ -494,7 +494,7 @@ init_attrib_groups(struct gl_context *ctx) _mesa_init_scissor( ctx ); _mesa_init_stencil( ctx ); _mesa_init_transform( ctx ); - _mesa_init_varray( ctx ); + _mesa_init_varray(ctx, &ctx->Array); _mesa_init_viewport( ctx ); if (!_mesa_init_texture( ctx )) @@ -748,9 +748,7 @@ _mesa_free_context_data( struct gl_context *ctx ) _mesa_free_texture_data( ctx ); _mesa_free_matrix_data( ctx ); _mesa_free_viewport_data( ctx ); - _mesa_free_varray_data(ctx); - - _mesa_delete_array_object(ctx, ctx->Array.DefaultArrayObj); + _mesa_free_varray_data(ctx, &ctx->Array); _mesa_reference_buffer_object(ctx, &ctx->Array.ArrayBufferObj, NULL); diff --git a/reactos/dll/opengl/mesa/main/dd.h b/reactos/dll/opengl/mesa/main/dd.h index 05c89781dd3..03a1a87f27c 100644 --- a/reactos/dll/opengl/mesa/main/dd.h +++ b/reactos/dll/opengl/mesa/main/dd.h @@ -563,31 +563,6 @@ struct dd_function_table { struct gl_buffer_object *obj ); /*@}*/ - /** - * \name Functions for GL_APPLE_object_purgeable - */ - /*@{*/ - /* variations on ObjectPurgeable */ - GLenum (*BufferObjectPurgeable)( struct gl_context *ctx, struct gl_buffer_object *obj, GLenum option ); - GLenum (*RenderObjectPurgeable)( struct gl_context *ctx, struct gl_renderbuffer *obj, GLenum option ); - GLenum (*TextureObjectPurgeable)( struct gl_context *ctx, struct gl_texture_object *obj, GLenum option ); - - /* variations on ObjectUnpurgeable */ - GLenum (*BufferObjectUnpurgeable)( struct gl_context *ctx, struct gl_buffer_object *obj, GLenum option ); - GLenum (*RenderObjectUnpurgeable)( struct gl_context *ctx, struct gl_renderbuffer *obj, GLenum option ); - GLenum (*TextureObjectUnpurgeable)( struct gl_context *ctx, struct gl_texture_object *obj, GLenum option ); - /*@}*/ - - - /** - * \name Vertex Array objects - */ - /*@{*/ - struct gl_array_object * (*NewArrayObject)(struct gl_context *ctx, GLuint id); - void (*DeleteArrayObject)(struct gl_context *ctx, struct gl_array_object *obj); - void (*BindArrayObject)(struct gl_context *ctx, struct gl_array_object *obj); - /*@}*/ - /** * \name Support for multiple T&L engines diff --git a/reactos/dll/opengl/mesa/main/dispatch.h b/reactos/dll/opengl/mesa/main/dispatch.h index 41c30e2eec7..3df758825af 100644 --- a/reactos/dll/opengl/mesa/main/dispatch.h +++ b/reactos/dll/opengl/mesa/main/dispatch.h @@ -478,8 +478,6 @@ typedef PROC _glapi_proc; #define _gloffset_GetActiveAttribARB 569 #define _gloffset_FlushMappedBufferRange 580 #define _gloffset_MapBufferRange 581 -#define _gloffset_BindVertexArray 583 -#define _gloffset_GenVertexArrays 584 #define _gloffset_TexStorage1D 685 #define _gloffset_TexStorage2D 686 #define _gloffset_TexStorage3D 687 @@ -623,10 +621,6 @@ typedef PROC _glapi_proc; #define _gloffset_PointParameteriNV 863 #define _gloffset_PointParameterivNV 864 #define _gloffset_ActiveStencilFaceEXT 865 -#define _gloffset_BindVertexArrayAPPLE 866 -#define _gloffset_DeleteVertexArraysAPPLE 867 -#define _gloffset_GenVertexArraysAPPLE 868 -#define _gloffset_IsVertexArrayAPPLE 869 #define _gloffset_GetProgramNamedParameterdvNV 870 #define _gloffset_GetProgramNamedParameterfvNV 871 #define _gloffset_ProgramNamedParameter4dNV 872 @@ -698,8 +692,6 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ]; #define VertexAttribDivisorARB_remap_index 171 #define FlushMappedBufferRange_remap_index 172 #define MapBufferRange_remap_index 173 -#define BindVertexArray_remap_index 175 -#define GenVertexArrays_remap_index 176 #define TexStorage1D_remap_index 277 #define TexStorage2D_remap_index 278 #define TexStorage3D_remap_index 279 @@ -844,10 +836,6 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ]; #define PointParameteriNV_remap_index 455 #define PointParameterivNV_remap_index 456 #define ActiveStencilFaceEXT_remap_index 457 -#define BindVertexArrayAPPLE_remap_index 458 -#define DeleteVertexArraysAPPLE_remap_index 459 -#define GenVertexArraysAPPLE_remap_index 460 -#define IsVertexArrayAPPLE_remap_index 461 #define GetProgramNamedParameterdvNV_remap_index 462 #define GetProgramNamedParameterfvNV_remap_index 463 #define ProgramNamedParameter4dNV_remap_index 464 @@ -912,8 +900,6 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ]; #define _gloffset_GetAttribLocationARB driDispatchRemapTable[GetAttribLocationARB_remap_index] #define _gloffset_FlushMappedBufferRange driDispatchRemapTable[FlushMappedBufferRange_remap_index] #define _gloffset_MapBufferRange driDispatchRemapTable[MapBufferRange_remap_index] -#define _gloffset_BindVertexArray driDispatchRemapTable[BindVertexArray_remap_index] -#define _gloffset_GenVertexArrays driDispatchRemapTable[GenVertexArrays_remap_index] #define _gloffset_TexStorage1D driDispatchRemapTable[TexStorage1D_remap_index] #define _gloffset_TexStorage2D driDispatchRemapTable[TexStorage2D_remap_index] #define _gloffset_TexStorage3D driDispatchRemapTable[TexStorage3D_remap_index] @@ -1057,10 +1043,6 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ]; #define _gloffset_PointParameteriNV driDispatchRemapTable[PointParameteriNV_remap_index] #define _gloffset_PointParameterivNV driDispatchRemapTable[PointParameterivNV_remap_index] #define _gloffset_ActiveStencilFaceEXT driDispatchRemapTable[ActiveStencilFaceEXT_remap_index] -#define _gloffset_BindVertexArrayAPPLE driDispatchRemapTable[BindVertexArrayAPPLE_remap_index] -#define _gloffset_DeleteVertexArraysAPPLE driDispatchRemapTable[DeleteVertexArraysAPPLE_remap_index] -#define _gloffset_GenVertexArraysAPPLE driDispatchRemapTable[GenVertexArraysAPPLE_remap_index] -#define _gloffset_IsVertexArrayAPPLE driDispatchRemapTable[IsVertexArrayAPPLE_remap_index] #define _gloffset_GetProgramNamedParameterdvNV driDispatchRemapTable[GetProgramNamedParameterdvNV_remap_index] #define _gloffset_GetProgramNamedParameterfvNV driDispatchRemapTable[GetProgramNamedParameterfvNV_remap_index] #define _gloffset_ProgramNamedParameter4dNV driDispatchRemapTable[ProgramNamedParameter4dNV_remap_index] @@ -5577,28 +5559,6 @@ static inline void SET_MapBufferRange(struct _glapi_table *disp, GLvoid * (GLAPI SET_by_offset(disp, _gloffset_MapBufferRange, fn); } -typedef void (GLAPIENTRYP _glptr_BindVertexArray)(GLuint); -#define CALL_BindVertexArray(disp, parameters) \ - (* GET_BindVertexArray(disp)) parameters -static inline _glptr_BindVertexArray GET_BindVertexArray(struct _glapi_table *disp) { - return (_glptr_BindVertexArray) (GET_by_offset(disp, _gloffset_BindVertexArray)); -} - -static inline void SET_BindVertexArray(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint)) { - SET_by_offset(disp, _gloffset_BindVertexArray, fn); -} - -typedef void (GLAPIENTRYP _glptr_GenVertexArrays)(GLsizei, GLuint *); -#define CALL_GenVertexArrays(disp, parameters) \ - (* GET_GenVertexArrays(disp)) parameters -static inline _glptr_GenVertexArrays GET_GenVertexArrays(struct _glapi_table *disp) { - return (_glptr_GenVertexArrays) (GET_by_offset(disp, _gloffset_GenVertexArrays)); -} - -static inline void SET_GenVertexArrays(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLsizei, GLuint *)) { - SET_by_offset(disp, _gloffset_GenVertexArrays, fn); -} - typedef void (GLAPIENTRYP _glptr_TexStorage1D)(GLenum, GLsizei, GLenum, GLsizei); #define CALL_TexStorage1D(disp, parameters) \ (* GET_TexStorage1D(disp)) parameters @@ -7172,50 +7132,6 @@ static inline void SET_ActiveStencilFaceEXT(struct _glapi_table *disp, void (GLA SET_by_offset(disp, _gloffset_ActiveStencilFaceEXT, fn); } -typedef void (GLAPIENTRYP _glptr_BindVertexArrayAPPLE)(GLuint); -#define CALL_BindVertexArrayAPPLE(disp, parameters) \ - (* GET_BindVertexArrayAPPLE(disp)) parameters -static inline _glptr_BindVertexArrayAPPLE GET_BindVertexArrayAPPLE(struct _glapi_table *disp) { - return (_glptr_BindVertexArrayAPPLE) (GET_by_offset(disp, _gloffset_BindVertexArrayAPPLE)); -} - -static inline void SET_BindVertexArrayAPPLE(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint)) { - SET_by_offset(disp, _gloffset_BindVertexArrayAPPLE, fn); -} - -typedef void (GLAPIENTRYP _glptr_DeleteVertexArraysAPPLE)(GLsizei, const GLuint *); -#define CALL_DeleteVertexArraysAPPLE(disp, parameters) \ - (* GET_DeleteVertexArraysAPPLE(disp)) parameters -static inline _glptr_DeleteVertexArraysAPPLE GET_DeleteVertexArraysAPPLE(struct _glapi_table *disp) { - return (_glptr_DeleteVertexArraysAPPLE) (GET_by_offset(disp, _gloffset_DeleteVertexArraysAPPLE)); -} - -static inline void SET_DeleteVertexArraysAPPLE(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLsizei, const GLuint *)) { - SET_by_offset(disp, _gloffset_DeleteVertexArraysAPPLE, fn); -} - -typedef void (GLAPIENTRYP _glptr_GenVertexArraysAPPLE)(GLsizei, GLuint *); -#define CALL_GenVertexArraysAPPLE(disp, parameters) \ - (* GET_GenVertexArraysAPPLE(disp)) parameters -static inline _glptr_GenVertexArraysAPPLE GET_GenVertexArraysAPPLE(struct _glapi_table *disp) { - return (_glptr_GenVertexArraysAPPLE) (GET_by_offset(disp, _gloffset_GenVertexArraysAPPLE)); -} - -static inline void SET_GenVertexArraysAPPLE(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLsizei, GLuint *)) { - SET_by_offset(disp, _gloffset_GenVertexArraysAPPLE, fn); -} - -typedef GLboolean (GLAPIENTRYP _glptr_IsVertexArrayAPPLE)(GLuint); -#define CALL_IsVertexArrayAPPLE(disp, parameters) \ - (* GET_IsVertexArrayAPPLE(disp)) parameters -static inline _glptr_IsVertexArrayAPPLE GET_IsVertexArrayAPPLE(struct _glapi_table *disp) { - return (_glptr_IsVertexArrayAPPLE) (GET_by_offset(disp, _gloffset_IsVertexArrayAPPLE)); -} - -static inline void SET_IsVertexArrayAPPLE(struct _glapi_table *disp, GLboolean (GLAPIENTRYP fn)(GLuint)) { - SET_by_offset(disp, _gloffset_IsVertexArrayAPPLE, fn); -} - typedef void (GLAPIENTRYP _glptr_GetProgramNamedParameterdvNV)(GLuint, GLsizei, const GLubyte *, GLdouble *); #define CALL_GetProgramNamedParameterdvNV(disp, parameters) \ (* GET_GetProgramNamedParameterdvNV(disp)) parameters @@ -7436,39 +7352,6 @@ static inline void SET_TextureRangeAPPLE(struct _glapi_table *disp, void (GLAPIE SET_by_offset(disp, _gloffset_TextureRangeAPPLE, fn); } -typedef void (GLAPIENTRYP _glptr_GetObjectParameterivAPPLE)(GLenum, GLuint, GLenum, GLint *); -#define CALL_GetObjectParameterivAPPLE(disp, parameters) \ - (* GET_GetObjectParameterivAPPLE(disp)) parameters -static inline _glptr_GetObjectParameterivAPPLE GET_GetObjectParameterivAPPLE(struct _glapi_table *disp) { - return (_glptr_GetObjectParameterivAPPLE) (GET_by_offset(disp, _gloffset_GetObjectParameterivAPPLE)); -} - -static inline void SET_GetObjectParameterivAPPLE(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLuint, GLenum, GLint *)) { - SET_by_offset(disp, _gloffset_GetObjectParameterivAPPLE, fn); -} - -typedef GLenum (GLAPIENTRYP _glptr_ObjectPurgeableAPPLE)(GLenum, GLuint, GLenum); -#define CALL_ObjectPurgeableAPPLE(disp, parameters) \ - (* GET_ObjectPurgeableAPPLE(disp)) parameters -static inline _glptr_ObjectPurgeableAPPLE GET_ObjectPurgeableAPPLE(struct _glapi_table *disp) { - return (_glptr_ObjectPurgeableAPPLE) (GET_by_offset(disp, _gloffset_ObjectPurgeableAPPLE)); -} - -static inline void SET_ObjectPurgeableAPPLE(struct _glapi_table *disp, GLenum (GLAPIENTRYP fn)(GLenum, GLuint, GLenum)) { - SET_by_offset(disp, _gloffset_ObjectPurgeableAPPLE, fn); -} - -typedef GLenum (GLAPIENTRYP _glptr_ObjectUnpurgeableAPPLE)(GLenum, GLuint, GLenum); -#define CALL_ObjectUnpurgeableAPPLE(disp, parameters) \ - (* GET_ObjectUnpurgeableAPPLE(disp)) parameters -static inline _glptr_ObjectUnpurgeableAPPLE GET_ObjectUnpurgeableAPPLE(struct _glapi_table *disp) { - return (_glptr_ObjectUnpurgeableAPPLE) (GET_by_offset(disp, _gloffset_ObjectUnpurgeableAPPLE)); -} - -static inline void SET_ObjectUnpurgeableAPPLE(struct _glapi_table *disp, GLenum (GLAPIENTRYP fn)(GLenum, GLuint, GLenum)) { - SET_by_offset(disp, _gloffset_ObjectUnpurgeableAPPLE, fn); -} - typedef GLuint (GLAPIENTRYP _glptr_CreateShaderProgramEXT)(GLenum, const GLchar *); #define CALL_CreateShaderProgramEXT(disp, parameters) \ (* GET_CreateShaderProgramEXT(disp)) parameters diff --git a/reactos/dll/opengl/mesa/main/dlist.c b/reactos/dll/opengl/mesa/main/dlist.c index 2abbea7a32e..ea359e05c70 100644 --- a/reactos/dll/opengl/mesa/main/dlist.c +++ b/reactos/dll/opengl/mesa/main/dlist.c @@ -6730,16 +6730,6 @@ _mesa_create_save_table(void) SET_PointParameteriNV(table, save_PointParameteriNV); SET_PointParameterivNV(table, save_PointParameterivNV); - /* 273. GL_APPLE_vertex_array_object */ - SET_BindVertexArrayAPPLE(table, _mesa_BindVertexArrayAPPLE); - SET_DeleteVertexArraysAPPLE(table, _mesa_DeleteVertexArraysAPPLE); - SET_GenVertexArraysAPPLE(table, _mesa_GenVertexArraysAPPLE); - SET_IsVertexArrayAPPLE(table, _mesa_IsVertexArrayAPPLE); - - /* GL_ARB_vertex_array_object */ - SET_BindVertexArray(table, _mesa_BindVertexArray); - SET_GenVertexArrays(table, _mesa_GenVertexArrays); - /* ???. GL_EXT_depth_bounds_test */ SET_DepthBoundsEXT(table, save_DepthBoundsEXT); @@ -6775,13 +6765,6 @@ _mesa_create_save_table(void) SET_FlushMappedBufferRange(table, _mesa_FlushMappedBufferRange); /* no dl */ #endif - /* 371. GL_APPLE_object_purgeable */ -#if FEATURE_APPLE_object_purgeable - SET_ObjectPurgeableAPPLE(table, _mesa_ObjectPurgeableAPPLE); - SET_ObjectUnpurgeableAPPLE(table, _mesa_ObjectUnpurgeableAPPLE); - SET_GetObjectParameterivAPPLE(table, _mesa_GetObjectParameterivAPPLE); -#endif - /* GL_EXT_texture_integer */ SET_ClearColorIiEXT(table, save_ClearColorIi); SET_ClearColorIuiEXT(table, save_ClearColorIui); diff --git a/reactos/dll/opengl/mesa/main/enable.c b/reactos/dll/opengl/mesa/main/enable.c index a70bc5928f9..9b9d52fab5f 100644 --- a/reactos/dll/opengl/mesa/main/enable.c +++ b/reactos/dll/opengl/mesa/main/enable.c @@ -41,78 +41,50 @@ static void client_state(struct gl_context *ctx, GLenum cap, GLboolean state) { - struct gl_array_object *arrayObj = ctx->Array.ArrayObj; GLbitfield64 flag; GLboolean *var; switch (cap) { case GL_VERTEX_ARRAY: - var = &arrayObj->VertexAttrib[VERT_ATTRIB_POS].Enabled; + var = &ctx->Array.VertexAttrib[VERT_ATTRIB_POS].Enabled; flag = VERT_BIT_POS; break; case GL_NORMAL_ARRAY: - var = &arrayObj->VertexAttrib[VERT_ATTRIB_NORMAL].Enabled; + var = &ctx->Array.VertexAttrib[VERT_ATTRIB_NORMAL].Enabled; flag = VERT_BIT_NORMAL; break; case GL_COLOR_ARRAY: - var = &arrayObj->VertexAttrib[VERT_ATTRIB_COLOR0].Enabled; + var = &ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR0].Enabled; flag = VERT_BIT_COLOR0; break; case GL_INDEX_ARRAY: - var = &arrayObj->VertexAttrib[VERT_ATTRIB_COLOR_INDEX].Enabled; + var = &ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR_INDEX].Enabled; flag = VERT_BIT_COLOR_INDEX; break; case GL_TEXTURE_COORD_ARRAY: - var = &arrayObj->VertexAttrib[VERT_ATTRIB_TEX].Enabled; + var = &ctx->Array.VertexAttrib[VERT_ATTRIB_TEX].Enabled; flag = VERT_BIT_TEX; break; case GL_EDGE_FLAG_ARRAY: - var = &arrayObj->VertexAttrib[VERT_ATTRIB_EDGEFLAG].Enabled; + var = &ctx->Array.VertexAttrib[VERT_ATTRIB_EDGEFLAG].Enabled; flag = VERT_BIT_EDGEFLAG; break; case GL_FOG_COORDINATE_ARRAY_EXT: - var = &arrayObj->VertexAttrib[VERT_ATTRIB_FOG].Enabled; + var = &ctx->Array.VertexAttrib[VERT_ATTRIB_FOG].Enabled; flag = VERT_BIT_FOG; break; case GL_SECONDARY_COLOR_ARRAY_EXT: - var = &arrayObj->VertexAttrib[VERT_ATTRIB_COLOR1].Enabled; + var = &ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR1].Enabled; flag = VERT_BIT_COLOR1; break; #if FEATURE_point_size_array case GL_POINT_SIZE_ARRAY_OES: - var = &arrayObj->VertexAttrib[VERT_ATTRIB_POINT_SIZE].Enabled; + var = &ctx->Array.VertexAttrib[VERT_ATTRIB_POINT_SIZE].Enabled; flag = VERT_BIT_POINT_SIZE; break; #endif -#if FEATURE_NV_vertex_program - case GL_VERTEX_ATTRIB_ARRAY0_NV: - case GL_VERTEX_ATTRIB_ARRAY1_NV: - case GL_VERTEX_ATTRIB_ARRAY2_NV: - case GL_VERTEX_ATTRIB_ARRAY3_NV: - case GL_VERTEX_ATTRIB_ARRAY4_NV: - case GL_VERTEX_ATTRIB_ARRAY5_NV: - case GL_VERTEX_ATTRIB_ARRAY6_NV: - case GL_VERTEX_ATTRIB_ARRAY7_NV: - case GL_VERTEX_ATTRIB_ARRAY8_NV: - case GL_VERTEX_ATTRIB_ARRAY9_NV: - case GL_VERTEX_ATTRIB_ARRAY10_NV: - case GL_VERTEX_ATTRIB_ARRAY11_NV: - case GL_VERTEX_ATTRIB_ARRAY12_NV: - case GL_VERTEX_ATTRIB_ARRAY13_NV: - case GL_VERTEX_ATTRIB_ARRAY14_NV: - case GL_VERTEX_ATTRIB_ARRAY15_NV: - CHECK_EXTENSION(NV_vertex_program, cap); - { - GLint n = (GLint) cap - GL_VERTEX_ATTRIB_ARRAY0_NV; - ASSERT(VERT_ATTRIB_GENERIC(n) < Elements(ctx->Array.ArrayObj->VertexAttrib)); - var = &arrayObj->VertexAttrib[VERT_ATTRIB_GENERIC(n)].Enabled; - flag = VERT_BIT_GENERIC(n); - } - break; -#endif /* FEATURE_NV_vertex_program */ - default: goto invalid_enum_error; } @@ -128,9 +100,9 @@ client_state(struct gl_context *ctx, GLenum cap, GLboolean state) *var = state; if (state) - ctx->Array.ArrayObj->_Enabled |= flag; + ctx->Array._Enabled |= flag; else - ctx->Array.ArrayObj->_Enabled &= ~flag; + ctx->Array._Enabled &= ~flag; if (ctx->Driver.Enable) { ctx->Driver.Enable( ctx, cap, state ); @@ -906,24 +878,24 @@ _mesa_IsEnabled( GLenum cap ) /* client-side state */ case GL_VERTEX_ARRAY: - return (ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_POS].Enabled != 0); + return (ctx->Array.VertexAttrib[VERT_ATTRIB_POS].Enabled != 0); case GL_NORMAL_ARRAY: - return (ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_NORMAL].Enabled != 0); + return (ctx->Array.VertexAttrib[VERT_ATTRIB_NORMAL].Enabled != 0); case GL_COLOR_ARRAY: - return (ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_COLOR0].Enabled != 0); + return (ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR0].Enabled != 0); case GL_INDEX_ARRAY: - return (ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_COLOR_INDEX].Enabled != 0); + return (ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR_INDEX].Enabled != 0); case GL_TEXTURE_COORD_ARRAY: - return (ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_TEX] + return (ctx->Array.VertexAttrib[VERT_ATTRIB_TEX] .Enabled != 0); case GL_EDGE_FLAG_ARRAY: - return (ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_EDGEFLAG].Enabled != 0); + return (ctx->Array.VertexAttrib[VERT_ATTRIB_EDGEFLAG].Enabled != 0); case GL_FOG_COORDINATE_ARRAY_EXT: CHECK_EXTENSION(EXT_fog_coord); - return (ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_FOG].Enabled != 0); + return (ctx->Array.VertexAttrib[VERT_ATTRIB_FOG].Enabled != 0); case GL_SECONDARY_COLOR_ARRAY_EXT: CHECK_EXTENSION(EXT_secondary_color); - return (ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_COLOR1].Enabled != 0); + return (ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR1].Enabled != 0); #if FEATURE_point_size_array case GL_POINT_SIZE_ARRAY_OES: return (ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_POINT_SIZE].Enabled != 0); diff --git a/reactos/dll/opengl/mesa/main/extensions.c b/reactos/dll/opengl/mesa/main/extensions.c index ec01949c09a..8062a59bbe6 100644 --- a/reactos/dll/opengl/mesa/main/extensions.c +++ b/reactos/dll/opengl/mesa/main/extensions.c @@ -73,7 +73,6 @@ static const struct extension extension_table[] = { { "GL_ARB_texture_mirrored_repeat", o(dummy_true), 2001 }, { "GL_ARB_texture_storage", o(ARB_texture_storage), 2011 }, { "GL_ARB_transpose_matrix", o(ARB_transpose_matrix), 1999 }, - { "GL_ARB_vertex_array_object", o(ARB_vertex_array_object), 2006 }, { "GL_ARB_vertex_buffer_object", o(dummy_true), 2003 }, { "GL_ARB_window_pos", o(ARB_window_pos), 2001 }, /* EXT extensions */ @@ -112,9 +111,7 @@ static const struct extension extension_table[] = { { "GL_EXT_vertex_array", o(dummy_true), 1995 }, /* Vendor extensions */ - { "GL_APPLE_object_purgeable", o(APPLE_object_purgeable), 2006 }, { "GL_APPLE_packed_pixels", o(APPLE_packed_pixels), 2002 }, - { "GL_APPLE_vertex_array_object", o(APPLE_vertex_array_object), 2002 }, { "GL_ATI_blend_equation_separate", o(EXT_blend_equation_separate), 2003 }, { "GL_ATI_texture_env_combine3", o(ATI_texture_env_combine3), 2002 }, { "GL_IBM_multimode_draw_arrays", o(IBM_multimode_draw_arrays), 1998 }, @@ -206,11 +203,6 @@ _mesa_enable_sw_extensions(struct gl_context *ctx) ctx->Extensions.ARB_texture_env_dot3 = GL_TRUE; /*ctx->Extensions.ARB_texture_float = GL_TRUE;*/ ctx->Extensions.ARB_texture_storage = GL_TRUE; - ctx->Extensions.ARB_vertex_array_object = GL_TRUE; - ctx->Extensions.APPLE_vertex_array_object = GL_TRUE; -#if FEATURE_APPLE_object_purgeable - ctx->Extensions.APPLE_object_purgeable = GL_TRUE; -#endif ctx->Extensions.ATI_texture_env_combine3 = GL_TRUE; ctx->Extensions.EXT_blend_color = GL_TRUE; ctx->Extensions.EXT_blend_equation_separate = GL_TRUE; diff --git a/reactos/dll/opengl/mesa/main/get.c b/reactos/dll/opengl/mesa/main/get.c index 43f90ac339a..bdd2ace5052 100644 --- a/reactos/dll/opengl/mesa/main/get.c +++ b/reactos/dll/opengl/mesa/main/get.c @@ -262,12 +262,10 @@ EXTRA_EXT(IBM_rasterpos_clip); EXTRA_EXT(NV_point_sprite); EXTRA_EXT(NV_light_max_exponent); EXTRA_EXT(EXT_depth_bounds_test); -EXTRA_EXT(APPLE_vertex_array_object); EXTRA_EXT(EXT_compiled_vertex_array); EXTRA_EXT2(NV_point_sprite, ARB_point_sprite); static const int extra_version_30[] = { EXTRA_VERSION_30, EXTRA_END }; -static const int extra_version_31[] = { EXTRA_VERSION_31, EXTRA_END }; static const int extra_version_32[] = { EXTRA_VERSION_32, EXTRA_END }; #define API_OPENGL_BIT (1 << API_OPENGL) @@ -739,10 +737,6 @@ static const struct value_desc values[] = { { GL_DEPTH_BOUNDS_EXT, CONTEXT_FLOAT2(Depth.BoundsMin), extra_EXT_depth_bounds_test }, - /* GL_APPLE_vertex_array_object */ - { GL_VERTEX_ARRAY_BINDING_APPLE, ARRAY_INT(Name), - extra_APPLE_vertex_array_object }, - /* GL_EXT_texture_integer */ { GL_RGBA_INTEGER_MODE_EXT, BUFFER_BOOL(_IntegerColor), extra_EXT_texture_integer }, @@ -929,7 +923,7 @@ find_custom_value(struct gl_context *ctx, const struct value_desc *d, union valu case GL_TEXTURE_COORD_ARRAY_SIZE: case GL_TEXTURE_COORD_ARRAY_TYPE: case GL_TEXTURE_COORD_ARRAY_STRIDE: - array = &ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_TEX]; + array = &ctx->Array.VertexAttrib[VERT_ATTRIB_TEX]; v->value_int = *(GLuint *) ((char *) array + d->offset); break; @@ -1032,7 +1026,7 @@ find_custom_value(struct gl_context *ctx, const struct value_desc *d, union valu case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB: case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB: buffer_obj = (struct gl_buffer_object **) - ((char *) ctx->Array.ArrayObj + d->offset); + ((char *) &ctx->Array + d->offset); v->value_int = (*buffer_obj)->Name; break; case GL_ARRAY_BUFFER_BINDING_ARB: @@ -1040,10 +1034,10 @@ find_custom_value(struct gl_context *ctx, const struct value_desc *d, union valu break; case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB: v->value_int = - ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_TEX].BufferObj->Name; + ctx->Array.VertexAttrib[VERT_ATTRIB_TEX].BufferObj->Name; break; case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB: - v->value_int = ctx->Array.ArrayObj->ElementArrayBufferObj->Name; + v->value_int = ctx->Array.ElementArrayBufferObj->Name; break; case GL_FOG_COLOR: @@ -1195,7 +1189,7 @@ find_value(const char *func, GLenum pname, void **p, union value *v) *p = ((char *) ctx + d->offset); return d; case LOC_ARRAY: - *p = ((char *) ctx->Array.ArrayObj + d->offset); + *p = ((char *)&ctx->Array + d->offset); return d; case LOC_TEXUNIT: unit = &ctx->Texture.Unit; diff --git a/reactos/dll/opengl/mesa/main/getstring.c b/reactos/dll/opengl/mesa/main/getstring.c index 5697d7b8f4b..ae511d1e9b9 100644 --- a/reactos/dll/opengl/mesa/main/getstring.c +++ b/reactos/dll/opengl/mesa/main/getstring.c @@ -125,28 +125,28 @@ _mesa_GetPointerv( GLenum pname, GLvoid **params ) switch (pname) { case GL_VERTEX_ARRAY_POINTER: - *params = (GLvoid *) ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_POS].Ptr; + *params = (GLvoid *) ctx->Array.VertexAttrib[VERT_ATTRIB_POS].Ptr; break; case GL_NORMAL_ARRAY_POINTER: - *params = (GLvoid *) ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_NORMAL].Ptr; + *params = (GLvoid *) ctx->Array.VertexAttrib[VERT_ATTRIB_NORMAL].Ptr; break; case GL_COLOR_ARRAY_POINTER: - *params = (GLvoid *) ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_COLOR0].Ptr; + *params = (GLvoid *) ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR0].Ptr; break; case GL_SECONDARY_COLOR_ARRAY_POINTER_EXT: - *params = (GLvoid *) ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_COLOR1].Ptr; + *params = (GLvoid *) ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR1].Ptr; break; case GL_FOG_COORDINATE_ARRAY_POINTER_EXT: - *params = (GLvoid *) ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_FOG].Ptr; + *params = (GLvoid *) ctx->Array.VertexAttrib[VERT_ATTRIB_FOG].Ptr; break; case GL_INDEX_ARRAY_POINTER: - *params = (GLvoid *) ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_COLOR_INDEX].Ptr; + *params = (GLvoid *) ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR_INDEX].Ptr; break; case GL_TEXTURE_COORD_ARRAY_POINTER: - *params = (GLvoid *) ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_TEX].Ptr; + *params = (GLvoid *) ctx->Array.VertexAttrib[VERT_ATTRIB_TEX].Ptr; break; case GL_EDGE_FLAG_ARRAY_POINTER: - *params = (GLvoid *) ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_EDGEFLAG].Ptr; + *params = (GLvoid *) ctx->Array.VertexAttrib[VERT_ATTRIB_EDGEFLAG].Ptr; break; case GL_FEEDBACK_BUFFER_POINTER: *params = ctx->Feedback.Buffer; diff --git a/reactos/dll/opengl/mesa/main/mtypes.h b/reactos/dll/opengl/mesa/main/mtypes.h index 41031579658..da69c74e7d4 100644 --- a/reactos/dll/opengl/mesa/main/mtypes.h +++ b/reactos/dll/opengl/mesa/main/mtypes.h @@ -1202,22 +1202,6 @@ struct gl_array_object GLint RefCount; _glthread_Mutex Mutex; - /** - * Does the VAO use ARB semantics or Apple semantics? - * - * There are several ways in which ARB_vertex_array_object and - * APPLE_vertex_array_object VAOs have differing semantics. At the very - * least, - * - * - ARB VAOs require that all array data be sourced from vertex buffer - * objects, but Apple VAOs do not. - * - * - ARB VAOs require that names come from GenVertexArrays. - * - * This flag notes which behavior governs this VAO. - */ - GLboolean ARBsemantics; - /** * Has this array object been bound? */ @@ -1244,23 +1228,28 @@ struct gl_array_object */ struct gl_array_attrib { - /** Currently bound array object. See _mesa_BindVertexArrayAPPLE() */ - struct gl_array_object *ArrayObj; + /** Vertex attribute arrays */ + struct gl_client_array VertexAttrib[VERT_ATTRIB_MAX]; - /** The default vertex array object */ - struct gl_array_object *DefaultArrayObj; + /** Mask of VERT_BIT_* values indicating which arrays are enabled */ + GLbitfield64 _Enabled; - /** Array objects (GL_ARB/APPLE_vertex_array_object) */ - struct _mesa_HashTable *Objects; + /** + * Min of all enabled arrays' _MaxElement. When arrays reside inside VBOs + * we can determine the max legal (in bounds) glDrawElements array index. + */ + GLuint _MaxElement; - GLuint LockFirst; /**< GL_EXT_compiled_vertex_array */ - GLuint LockCount; /**< GL_EXT_compiled_vertex_array */ + struct gl_buffer_object *ElementArrayBufferObj; - GLbitfield64 NewState; /**< mask of VERT_BIT_* values */ - GLboolean RebindArrays; /**< whether the VBO module should rebind arrays */ + GLuint LockFirst; /**< GL_EXT_compiled_vertex_array */ + GLuint LockCount; /**< GL_EXT_compiled_vertex_array */ - /* GL_ARB_vertex_buffer_object */ - struct gl_buffer_object *ArrayBufferObj; + GLbitfield64 NewState; /**< mask of VERT_BIT_* values */ + GLboolean RebindArrays; /**< whether the VBO module should rebind arrays */ + + /* GL_ARB_vertex_buffer_object */ + struct gl_buffer_object *ArrayBufferObj; }; @@ -1582,7 +1571,6 @@ struct gl_extensions GLboolean ARB_texture_env_dot3; GLboolean ARB_texture_storage; GLboolean ARB_transpose_matrix; - GLboolean ARB_vertex_array_object; GLboolean ARB_window_pos; GLboolean EXT_blend_color; GLboolean EXT_blend_equation_separate; @@ -1606,8 +1594,6 @@ struct gl_extensions GLboolean EXT_texture_integer; /* vendor extensions */ GLboolean APPLE_packed_pixels; - GLboolean APPLE_vertex_array_object; - GLboolean APPLE_object_purgeable; GLboolean ATI_texture_env_combine3; GLboolean IBM_rasterpos_clip; GLboolean IBM_multimode_draw_arrays; diff --git a/reactos/dll/opengl/mesa/main/precomp.h b/reactos/dll/opengl/mesa/main/precomp.h index e670fa37c6e..1dfbe5aa282 100644 --- a/reactos/dll/opengl/mesa/main/precomp.h +++ b/reactos/dll/opengl/mesa/main/precomp.h @@ -6,7 +6,6 @@ #include "api_exec.h" #include "api_loopback.h" #include "api_validate.h" -#include "arrayobj.h" #include "attrib.h" #include "blend.h" #include "bufferobj.h" diff --git a/reactos/dll/opengl/mesa/main/state.c b/reactos/dll/opengl/mesa/main/state.c index 94689bdd383..62221e34a73 100644 --- a/reactos/dll/opengl/mesa/main/state.c +++ b/reactos/dll/opengl/mesa/main/state.c @@ -61,7 +61,6 @@ update_min(GLuint min, struct gl_client_array *array) static void update_arrays( struct gl_context *ctx ) { - struct gl_array_object *arrayObj = ctx->Array.ArrayObj; GLuint min = ~0; /* find min of _MaxElement values for all enabled arrays. @@ -70,46 +69,46 @@ update_arrays( struct gl_context *ctx ) */ /* 0 */ - if (arrayObj->VertexAttrib[VERT_ATTRIB_POS].Enabled) { - min = update_min(min, &arrayObj->VertexAttrib[VERT_ATTRIB_POS]); + if (ctx->Array.VertexAttrib[VERT_ATTRIB_POS].Enabled) { + min = update_min(min, &ctx->Array.VertexAttrib[VERT_ATTRIB_POS]); } /* 2 */ - if (arrayObj->VertexAttrib[VERT_ATTRIB_NORMAL].Enabled) { - min = update_min(min, &arrayObj->VertexAttrib[VERT_ATTRIB_NORMAL]); + if (ctx->Array.VertexAttrib[VERT_ATTRIB_NORMAL].Enabled) { + min = update_min(min, &ctx->Array.VertexAttrib[VERT_ATTRIB_NORMAL]); } /* 3 */ - if (arrayObj->VertexAttrib[VERT_ATTRIB_COLOR0].Enabled) { - min = update_min(min, &arrayObj->VertexAttrib[VERT_ATTRIB_COLOR0]); + if (ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR0].Enabled) { + min = update_min(min, &ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR0]); } /* 4 */ - if (arrayObj->VertexAttrib[VERT_ATTRIB_COLOR1].Enabled) { - min = update_min(min, &arrayObj->VertexAttrib[VERT_ATTRIB_COLOR1]); + if (ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR1].Enabled) { + min = update_min(min, &ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR1]); } /* 5 */ - if (arrayObj->VertexAttrib[VERT_ATTRIB_FOG].Enabled) { - min = update_min(min, &arrayObj->VertexAttrib[VERT_ATTRIB_FOG]); + if (ctx->Array.VertexAttrib[VERT_ATTRIB_FOG].Enabled) { + min = update_min(min, &ctx->Array.VertexAttrib[VERT_ATTRIB_FOG]); } /* 6 */ - if (arrayObj->VertexAttrib[VERT_ATTRIB_COLOR_INDEX].Enabled) { - min = update_min(min, &arrayObj->VertexAttrib[VERT_ATTRIB_COLOR_INDEX]); + if (ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR_INDEX].Enabled) { + min = update_min(min, &ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR_INDEX]); } /* 8 */ - if (arrayObj->VertexAttrib[VERT_ATTRIB_TEX].Enabled) { - min = update_min(min, &arrayObj->VertexAttrib[VERT_ATTRIB_TEX]); + if (ctx->Array.VertexAttrib[VERT_ATTRIB_TEX].Enabled) { + min = update_min(min, &ctx->Array.VertexAttrib[VERT_ATTRIB_TEX]); } - if (arrayObj->VertexAttrib[VERT_ATTRIB_EDGEFLAG].Enabled) { - min = update_min(min, &arrayObj->VertexAttrib[VERT_ATTRIB_EDGEFLAG]); + if (ctx->Array.VertexAttrib[VERT_ATTRIB_EDGEFLAG].Enabled) { + min = update_min(min, &ctx->Array.VertexAttrib[VERT_ATTRIB_EDGEFLAG]); } /* _MaxElement is one past the last legal array element */ - arrayObj->_MaxElement = min; + ctx->Array._MaxElement = min; } static void diff --git a/reactos/dll/opengl/mesa/main/varray.c b/reactos/dll/opengl/mesa/main/varray.c index 71b3eab96ba..d570e865ef5 100644 --- a/reactos/dll/opengl/mesa/main/varray.c +++ b/reactos/dll/opengl/mesa/main/varray.c @@ -118,8 +118,7 @@ update_array(struct gl_context *ctx, return; } - if (ctx->Array.ArrayObj->ARBsemantics && - !_mesa_is_bufferobj(ctx->Array.ArrayBufferObj)) { + if (!_mesa_is_bufferobj(ctx->Array.ArrayBufferObj)) { /* GL_ARB_vertex_array_object requires that all arrays reside in VBOs. * Generate GL_INVALID_OPERATION if that's not true. */ @@ -129,7 +128,7 @@ update_array(struct gl_context *ctx, elementSize = _mesa_sizeof_type(type) * size; - array = &ctx->Array.ArrayObj->VertexAttrib[attrib]; + array = &ctx->Array.VertexAttrib[attrib]; array->Size = size; array->Type = type; array->Stride = stride; @@ -609,46 +608,22 @@ _mesa_copy_client_array(struct gl_context *ctx, dst->_MaxElement = src->_MaxElement; } - - -/** - * Print vertex array's fields. - */ static void -print_array(const char *name, GLint index, const struct gl_client_array *array) +init_array(struct gl_context *ctx, + struct gl_client_array *array, GLint size, GLint type) { - if (index >= 0) - printf(" %s[%d]: ", name, index); - else - printf(" %s: ", name); - printf("Ptr=%p, Type=0x%x, Size=%d, ElemSize=%u, Stride=%d, Buffer=%u(Size %lu), MaxElem=%u\n", - array->Ptr, array->Type, array->Size, - array->_ElementSize, array->StrideB, - array->BufferObj->Name, (unsigned long) array->BufferObj->Size, - array->_MaxElement); -} - - -/** - * Print current vertex object/array info. For debug. - */ -void -_mesa_print_arrays(struct gl_context *ctx) -{ - struct gl_array_object *arrayObj = ctx->Array.ArrayObj; - - _mesa_update_array_object_max_element(ctx, arrayObj); - - printf("Array Object %u\n", arrayObj->Name); - if (arrayObj->VertexAttrib[VERT_ATTRIB_POS].Enabled) - print_array("Vertex", -1, &arrayObj->VertexAttrib[VERT_ATTRIB_POS]); - if (arrayObj->VertexAttrib[VERT_ATTRIB_NORMAL].Enabled) - print_array("Normal", -1, &arrayObj->VertexAttrib[VERT_ATTRIB_NORMAL]); - if (arrayObj->VertexAttrib[VERT_ATTRIB_COLOR0].Enabled) - print_array("Color", -1, &arrayObj->VertexAttrib[VERT_ATTRIB_COLOR0]); - if (arrayObj->VertexAttrib[VERT_ATTRIB_TEX].Enabled) - print_array("TexCoord", -1, &arrayObj->VertexAttrib[VERT_ATTRIB_TEX]); - printf(" _MaxElement = %u\n", arrayObj->_MaxElement); + array->Size = size; + array->Type = type; + array->Stride = 0; + array->StrideB = 0; + array->Ptr = NULL; + array->Enabled = GL_FALSE; + array->Normalized = GL_FALSE; + array->Integer = GL_FALSE; + array->_ElementSize = size * _mesa_sizeof_type(type); + /* Vertex array buffers */ + _mesa_reference_buffer_object(ctx, &array->BufferObj, + ctx->Shared->NullBufferObj); } @@ -656,25 +631,41 @@ _mesa_print_arrays(struct gl_context *ctx) * Initialize vertex array state for given context. */ void -_mesa_init_varray(struct gl_context *ctx) +_mesa_init_varray(struct gl_context *ctx, struct gl_array_attrib *array) { - ctx->Array.DefaultArrayObj = _mesa_new_array_object(ctx, 0); - _mesa_reference_array_object(ctx, &ctx->Array.ArrayObj, - ctx->Array.DefaultArrayObj); + GLuint i; - ctx->Array.Objects = _mesa_NewHashTable(); -} - - -/** - * Callback for deleting an array object. Called by _mesa_HashDeleteAll(). - */ -static void -delete_arrayobj_cb(GLuint id, void *data, void *userData) -{ - struct gl_array_object *arrayObj = (struct gl_array_object *) data; - struct gl_context *ctx = (struct gl_context *) userData; - _mesa_delete_array_object(ctx, arrayObj); + /* Init the individual arrays */ + for (i = 0; i < Elements(array->VertexAttrib); i++) { + switch (i) { + case VERT_ATTRIB_WEIGHT: + init_array(ctx, &array->VertexAttrib[VERT_ATTRIB_WEIGHT], 1, GL_FLOAT); + break; + case VERT_ATTRIB_NORMAL: + init_array(ctx, &array->VertexAttrib[VERT_ATTRIB_NORMAL], 3, GL_FLOAT); + break; + case VERT_ATTRIB_COLOR1: + init_array(ctx, &array->VertexAttrib[VERT_ATTRIB_COLOR1], 3, GL_FLOAT); + break; + case VERT_ATTRIB_FOG: + init_array(ctx, &array->VertexAttrib[VERT_ATTRIB_FOG], 1, GL_FLOAT); + break; + case VERT_ATTRIB_COLOR_INDEX: + init_array(ctx, &array->VertexAttrib[VERT_ATTRIB_COLOR_INDEX], 1, GL_FLOAT); + break; + case VERT_ATTRIB_EDGEFLAG: + init_array(ctx, &array->VertexAttrib[VERT_ATTRIB_EDGEFLAG], 1, GL_BOOL); + break; + #if FEATURE_point_size_array + case VERT_ATTRIB_POINT_SIZE: + init_array(ctx, &array->VertexAttrib[VERT_ATTRIB_POINT_SIZE], 1, GL_FLOAT); + break; + #endif + default: + init_array(ctx, &array->VertexAttrib[i], 4, GL_FLOAT); + break; + } + } } @@ -682,8 +673,14 @@ delete_arrayobj_cb(GLuint id, void *data, void *userData) * Free vertex array state for given context. */ void -_mesa_free_varray_data(struct gl_context *ctx) +_mesa_free_varray_data(struct gl_context *ctx, struct gl_array_attrib* array) { - _mesa_HashDeleteAll(ctx->Array.Objects, delete_arrayobj_cb, ctx); - _mesa_DeleteHashTable(ctx->Array.Objects); + GLuint i; + + /* Uninit the individual arrays */ + for (i = 0; i < Elements(array->VertexAttrib); i++) + { + _mesa_reference_buffer_object(ctx, &array->VertexAttrib[i].BufferObj, NULL); + memset(&array->VertexAttrib[i], 0, sizeof(struct gl_client_array)); + } } diff --git a/reactos/dll/opengl/mesa/main/varray.h b/reactos/dll/opengl/mesa/main/varray.h index 9b3b1c50604..8d0898261b7 100644 --- a/reactos/dll/opengl/mesa/main/varray.h +++ b/reactos/dll/opengl/mesa/main/varray.h @@ -175,15 +175,11 @@ _mesa_copy_client_array(struct gl_context *ctx, struct gl_client_array *dst, struct gl_client_array *src); - extern void -_mesa_print_arrays(struct gl_context *ctx); - -extern void -_mesa_init_varray( struct gl_context * ctx ); +_mesa_init_varray( struct gl_context * ctx, struct gl_array_attrib *array); extern void -_mesa_free_varray_data(struct gl_context *ctx); +_mesa_free_varray_data(struct gl_context *ctx, struct gl_array_attrib *array); #else diff --git a/reactos/dll/opengl/mesa/main/version.c b/reactos/dll/opengl/mesa/main/version.c index 19b10712ca1..63fe5b79300 100644 --- a/reactos/dll/opengl/mesa/main/version.c +++ b/reactos/dll/opengl/mesa/main/version.c @@ -78,8 +78,7 @@ compute_version(struct gl_context *ctx) ctx->Extensions.EXT_blend_equation_separate); const GLboolean ver_2_1 = (ver_2_0); const GLboolean ver_3_0 = (ver_2_1 && - ctx->Extensions.ARB_map_buffer_range && - ctx->Extensions.APPLE_vertex_array_object); + ctx->Extensions.ARB_map_buffer_range); if (ver_3_0) { diff --git a/reactos/dll/opengl/mesa/vbo/vbo_exec_array.c b/reactos/dll/opengl/mesa/vbo/vbo_exec_array.c index 29f97208e69..f03430fce39 100644 --- a/reactos/dll/opengl/mesa/vbo/vbo_exec_array.c +++ b/reactos/dll/opengl/mesa/vbo/vbo_exec_array.c @@ -224,15 +224,14 @@ static void check_draw_elements_data(struct gl_context *ctx, GLsizei count, GLenum elemType, const void *elements, GLint basevertex) { - struct gl_array_object *arrayObj = ctx->Array.ArrayObj; const void *elemMap; GLint i, k; - if (_mesa_is_bufferobj(ctx->Array.ArrayObj->ElementArrayBufferObj)) { + if (_mesa_is_bufferobj(ctx->Array.ElementArrayBufferObj)) { elemMap = ctx->Driver.MapBufferRange(ctx, 0, - ctx->Array.ArrayObj->ElementArrayBufferObj->Size, + ctx->Array.ElementArrayBufferObj->Size, GL_MAP_READ_BIT, - ctx->Array.ArrayObj->ElementArrayBufferObj); + ctx->Array.ElementArrayBufferObj); elements = ADD_POINTERS(elements, elemMap); } @@ -255,17 +254,17 @@ check_draw_elements_data(struct gl_context *ctx, GLsizei count, GLenum elemType, } /* check element j of each enabled array */ - for (k = 0; k < Elements(arrayObj->VertexAttrib); k++) { - check_array_data(ctx, &arrayObj->VertexAttrib[k], k, j); + for (k = 0; k < Elements(ctx->Array.VertexAttrib); k++) { + check_array_data(ctx, &ctx->Array.VertexAttrib[k], k, j); } } - if (_mesa_is_bufferobj(arrayObj->ElementArrayBufferObj)) { - ctx->Driver.UnmapBuffer(ctx, ctx->Array.ArrayObj->ElementArrayBufferObj); + if (_mesa_is_bufferobj(ctx->Array.ElementArrayBufferObj)) { + ctx->Driver.UnmapBuffer(ctx, ctx->Array.ElementArrayBufferObj); } - for (k = 0; k < Elements(arrayObj->VertexAttrib); k++) { - unmap_array_buffer(ctx, &arrayObj->VertexAttrib[k]); + for (k = 0; k < Elements(ctx->Array.VertexAttrib); k++) { + unmap_array_buffer(ctx, &ctx->Array.VertexAttrib[k]); } } @@ -289,7 +288,6 @@ print_draw_arrays(struct gl_context *ctx, { struct vbo_context *vbo = vbo_context(ctx); struct vbo_exec_context *exec = &vbo->exec; - struct gl_array_object *arrayObj = ctx->Array.ArrayObj; int i; printf("vbo_exec_DrawArrays(mode 0x%x, start %d, count %d):\n", @@ -305,7 +303,7 @@ print_draw_arrays(struct gl_context *ctx, exec->array.inputs[i]->Size, stride, /*exec->array.inputs[i]->Enabled,*/ - arrayObj->VertexAttrib[VERT_ATTRIB(i)].Enabled, + ctx->Array.VertexAttrib[VERT_ATTRIB(i)].Enabled, exec->array.inputs[i]->Ptr, bufName); @@ -342,7 +340,7 @@ recalculate_input_bindings(struct gl_context *ctx) { struct vbo_context *vbo = vbo_context(ctx); struct vbo_exec_context *exec = &vbo->exec; - struct gl_client_array *vertexAttrib = ctx->Array.ArrayObj->VertexAttrib; + struct gl_client_array *vertexAttrib = ctx->Array.VertexAttrib; const struct gl_client_array **inputs = &exec->array.inputs[0]; GLbitfield64 const_inputs = 0x0; GLuint i; @@ -546,7 +544,7 @@ vbo_validated_drawrangeelements(struct gl_context *ctx, GLenum mode, ib.count = count; ib.type = type; - ib.obj = ctx->Array.ArrayObj->ElementArrayBufferObj; + ib.obj = ctx->Array.ElementArrayBufferObj; ib.ptr = indices; prim[0].begin = 1; @@ -619,7 +617,7 @@ vbo_exec_DrawRangeElements(GLenum mode, return; if (end < start || - end >= ctx->Array.ArrayObj->_MaxElement) { + end >= ctx->Array._MaxElement) { /* The application requested we draw using a range of indices that's * outside the bounds of the current VBO. This is invalid and appears * to give undefined results. The safest thing to do is to simply @@ -633,7 +631,7 @@ vbo_exec_DrawRangeElements(GLenum mode, "\trange is outside VBO bounds (max=%u); ignoring.\n" "\tThis should be fixed in the application.", start, end, count, type, indices, - ctx->Array.ArrayObj->_MaxElement - 1); + ctx->Array._MaxElement - 1); } index_bounds_valid = GL_FALSE; } @@ -658,7 +656,7 @@ vbo_exec_DrawRangeElements(GLenum mode, printf("glDraw[Range]Elements" "(start %u, end %u, type 0x%x, count %d) ElemBuf %u\n", start, end, type, count, - ctx->Array.ArrayObj->ElementArrayBufferObj->Name); + ctx->Array.ElementArrayBufferObj->Name); } #if 0 diff --git a/reactos/dll/opengl/mesa/vbo/vbo_save_api.c b/reactos/dll/opengl/mesa/vbo/vbo_save_api.c index 280b73cf412..f0585ee4641 100644 --- a/reactos/dll/opengl/mesa/vbo/vbo_save_api.c +++ b/reactos/dll/opengl/mesa/vbo/vbo_save_api.c @@ -1084,9 +1084,8 @@ _save_OBE_DrawElements(GLenum mode, GLsizei count, GLenum type, _ae_map_vbos(ctx); - if (_mesa_is_bufferobj(ctx->Array.ArrayObj->ElementArrayBufferObj)) - indices = - ADD_POINTERS(ctx->Array.ArrayObj->ElementArrayBufferObj->Pointer, indices); + if (_mesa_is_bufferobj(ctx->Array.ElementArrayBufferObj)) + indices = ADD_POINTERS(ctx->Array.ElementArrayBufferObj->Pointer, indices); vbo_save_NotifyBegin(ctx, (mode | VBO_SAVE_PRIM_WEAK | VBO_SAVE_PRIM_NO_CURRENT_UPDATE)); From 55f8bd0cd2a77aecef7c99f336760288302ca58b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Gardou?= Date: Tue, 17 Jun 2014 14:48:39 +0000 Subject: [PATCH 203/232] [OPENGL32/MESA] - Some more cleanup from previous commits CORE-7499 svn path=/trunk/; revision=63609 --- .../opengl/mesa/drivers/common/driverfuncs.c | 3 - reactos/dll/opengl/mesa/drivers/common/meta.c | 2 - reactos/dll/opengl/mesa/main/CMakeLists.txt | 2 - reactos/dll/opengl/mesa/main/api_exec.c | 47 - reactos/dll/opengl/mesa/main/api_loopback.c | 120 -- reactos/dll/opengl/mesa/main/dd.h | 5 - reactos/dll/opengl/mesa/main/dispatch.h | 1007 +---------------- reactos/dll/opengl/mesa/main/dlist.c | 296 ----- reactos/dll/opengl/mesa/main/extensions.c | 3 - reactos/dll/opengl/mesa/main/get.c | 16 +- reactos/dll/opengl/mesa/main/histogram.c | 147 --- reactos/dll/opengl/mesa/main/histogram.h | 58 - reactos/dll/opengl/mesa/main/mfeatures.h | 6 - reactos/dll/opengl/mesa/main/mtypes.h | 49 +- reactos/dll/opengl/mesa/main/precomp.h | 1 - reactos/dll/opengl/mesa/main/texturebarrier.c | 52 - reactos/dll/opengl/mesa/main/texturebarrier.h | 44 - 17 files changed, 10 insertions(+), 1848 deletions(-) delete mode 100644 reactos/dll/opengl/mesa/main/histogram.c delete mode 100644 reactos/dll/opengl/mesa/main/histogram.h delete mode 100644 reactos/dll/opengl/mesa/main/texturebarrier.c delete mode 100644 reactos/dll/opengl/mesa/main/texturebarrier.h diff --git a/reactos/dll/opengl/mesa/drivers/common/driverfuncs.c b/reactos/dll/opengl/mesa/drivers/common/driverfuncs.c index ac85009c581..8cfb26a4ad3 100644 --- a/reactos/dll/opengl/mesa/drivers/common/driverfuncs.c +++ b/reactos/dll/opengl/mesa/drivers/common/driverfuncs.c @@ -36,7 +36,6 @@ #include "main/texobj.h" #include "main/texstore.h" #include "main/bufferobj.h" -#include "main/texturebarrier.h" #include "tnl/tnl.h" #include "swrast/swrast.h" @@ -144,8 +143,6 @@ _mesa_init_driver_functions(struct dd_function_table *driver) driver->MapRenderbuffer = _swrast_map_soft_renderbuffer; driver->UnmapRenderbuffer = _swrast_unmap_soft_renderbuffer; - _mesa_init_texture_barrier_functions(driver); - /* T&L stuff */ driver->CurrentExecPrimitive = 0; driver->CurrentSavePrimitive = 0; diff --git a/reactos/dll/opengl/mesa/drivers/common/meta.c b/reactos/dll/opengl/mesa/drivers/common/meta.c index ac4a8ac6146..e0957feb1fb 100644 --- a/reactos/dll/opengl/mesa/drivers/common/meta.c +++ b/reactos/dll/opengl/mesa/drivers/common/meta.c @@ -166,10 +166,8 @@ struct clear_state { GLuint ArrayObj; GLuint VBO; - GLuint ShaderProg; GLint ColorLocation; - GLuint IntegerShaderProg; GLint IntegerColorLocation; }; diff --git a/reactos/dll/opengl/mesa/main/CMakeLists.txt b/reactos/dll/opengl/mesa/main/CMakeLists.txt index 15e8651fba8..15da07c8f97 100644 --- a/reactos/dll/opengl/mesa/main/CMakeLists.txt +++ b/reactos/dll/opengl/mesa/main/CMakeLists.txt @@ -34,7 +34,6 @@ list(APPEND SOURCE getstring.c hash.c hint.c - #histogram.c image.c imports.c light.c @@ -66,7 +65,6 @@ list(APPEND SOURCE texstate.c texstorage.c texstore.c - texturebarrier.c varray.c version.c viewport.c diff --git a/reactos/dll/opengl/mesa/main/api_exec.c b/reactos/dll/opengl/mesa/main/api_exec.c index d4d328d2f8c..a10d6c07c95 100644 --- a/reactos/dll/opengl/mesa/main/api_exec.c +++ b/reactos/dll/opengl/mesa/main/api_exec.c @@ -30,8 +30,6 @@ #include -#include "histogram.h" - #if FEATURE_GL @@ -215,7 +213,6 @@ _mesa_create_exec_table(void) _mesa_init_colortable_dispatch(exec); _mesa_init_convolve_dispatch(exec); - _mesa_init_histogram_dispatch(exec); /* 2. GL_EXT_blend_color */ #if 0 @@ -227,16 +224,6 @@ _mesa_create_exec_table(void) SET_PolygonOffsetEXT(exec, _mesa_PolygonOffsetEXT); #endif - /* 11. GL_EXT_histogram */ -#if 0 - SET_GetHistogramEXT(exec, _mesa_GetHistogram); - SET_GetHistogramParameterfvEXT(exec, _mesa_GetHistogramParameterfv); - SET_GetHistogramParameterivEXT(exec, _mesa_GetHistogramParameteriv); - SET_GetMinmaxEXT(exec, _mesa_GetMinmax); - SET_GetMinmaxParameterfvEXT(exec, _mesa_GetMinmaxParameterfv); - SET_GetMinmaxParameterivEXT(exec, _mesa_GetMinmaxParameteriv); -#endif - /* 14. SGI_color_table */ #if 0 SET_ColorTableSGI(exec, _mesa_ColorTable); @@ -287,37 +274,6 @@ _mesa_create_exec_table(void) SET_MultiModeDrawElementsIBM(exec, _mesa_MultiModeDrawElementsIBM); #endif - /* 233. GL_NV_vertex_program */ -#if FEATURE_NV_vertex_program - SET_ExecuteProgramNV(exec, _mesa_ExecuteProgramNV); - SET_GenProgramsNV(exec, _mesa_GenPrograms); - SET_AreProgramsResidentNV(exec, _mesa_AreProgramsResidentNV); - SET_RequestResidentProgramsNV(exec, _mesa_RequestResidentProgramsNV); - SET_GetProgramParameterfvNV(exec, _mesa_GetProgramParameterfvNV); - SET_GetProgramParameterdvNV(exec, _mesa_GetProgramParameterdvNV); - SET_GetProgramivNV(exec, _mesa_GetProgramivNV); - SET_GetTrackMatrixivNV(exec, _mesa_GetTrackMatrixivNV); - SET_LoadProgramNV(exec, _mesa_LoadProgramNV); - SET_ProgramEnvParameter4dARB(exec, _mesa_ProgramEnvParameter4dARB); /* alias to ProgramParameter4dNV */ - SET_ProgramEnvParameter4dvARB(exec, _mesa_ProgramEnvParameter4dvARB); /* alias to ProgramParameter4dvNV */ - SET_ProgramEnvParameter4fARB(exec, _mesa_ProgramEnvParameter4fARB); /* alias to ProgramParameter4fNV */ - SET_ProgramEnvParameter4fvARB(exec, _mesa_ProgramEnvParameter4fvARB); /* alias to ProgramParameter4fvNV */ - SET_ProgramParameters4dvNV(exec, _mesa_ProgramParameters4dvNV); - SET_ProgramParameters4fvNV(exec, _mesa_ProgramParameters4fvNV); - SET_TrackMatrixNV(exec, _mesa_TrackMatrixNV); - /* glVertexAttrib*NV functions handled in api_loopback.c */ -#endif - - /* 282. GL_NV_fragment_program */ -#if FEATURE_NV_fragment_program - SET_ProgramNamedParameter4fNV(exec, _mesa_ProgramNamedParameter4fNV); - SET_ProgramNamedParameter4dNV(exec, _mesa_ProgramNamedParameter4dNV); - SET_ProgramNamedParameter4fvNV(exec, _mesa_ProgramNamedParameter4fvNV); - SET_ProgramNamedParameter4dvNV(exec, _mesa_ProgramNamedParameter4dvNV); - SET_GetProgramNamedParameterfvNV(exec, _mesa_GetProgramNamedParameterfvNV); - SET_GetProgramNamedParameterdvNV(exec, _mesa_GetProgramNamedParameterdvNV); -#endif - /* 262. GL_NV_point_sprite */ #if _HAVE_FULL_GL SET_PointParameteriNV(exec, _mesa_PointParameteri); @@ -372,9 +328,6 @@ _mesa_create_exec_table(void) /* GL 3.0 (functions not covered by other extensions) */ SET_GetStringi(exec, _mesa_GetStringi); - /* GL_NV_texture_barrier */ - SET_TextureBarrierNV(exec, _mesa_TextureBarrierNV); - /* GL_ARB_texture_storage */ SET_TexStorage1D(exec, _mesa_TexStorage1D); SET_TexStorage2D(exec, _mesa_TexStorage2D); diff --git a/reactos/dll/opengl/mesa/main/api_loopback.c b/reactos/dll/opengl/mesa/main/api_loopback.c index a429f906947..d2dca88822f 100644 --- a/reactos/dll/opengl/mesa/main/api_loopback.c +++ b/reactos/dll/opengl/mesa/main/api_loopback.c @@ -991,113 +991,6 @@ loopback_VertexAttrib4ubvNV(GLuint index, const GLubyte *v) } -static void GLAPIENTRY -loopback_VertexAttribs1svNV(GLuint index, GLsizei n, const GLshort *v) -{ - GLint i; - for (i = n - 1; i >= 0; i--) - loopback_VertexAttrib1svNV(index + i, v + i); -} - -static void GLAPIENTRY -loopback_VertexAttribs1fvNV(GLuint index, GLsizei n, const GLfloat *v) -{ - GLint i; - for (i = n - 1; i >= 0; i--) - ATTRIB1NV(index + i, v[i]); -} - -static void GLAPIENTRY -loopback_VertexAttribs1dvNV(GLuint index, GLsizei n, const GLdouble *v) -{ - GLint i; - for (i = n - 1; i >= 0; i--) - loopback_VertexAttrib1dvNV(index + i, v + i); -} - -static void GLAPIENTRY -loopback_VertexAttribs2svNV(GLuint index, GLsizei n, const GLshort *v) -{ - GLint i; - for (i = n - 1; i >= 0; i--) - loopback_VertexAttrib2svNV(index + i, v + 2 * i); -} - -static void GLAPIENTRY -loopback_VertexAttribs2fvNV(GLuint index, GLsizei n, const GLfloat *v) -{ - GLint i; - for (i = n - 1; i >= 0; i--) - ATTRIB2NV(index + i, v[2 * i], v[2 * i + 1]); -} - -static void GLAPIENTRY -loopback_VertexAttribs2dvNV(GLuint index, GLsizei n, const GLdouble *v) -{ - GLint i; - for (i = n - 1; i >= 0; i--) - loopback_VertexAttrib2dvNV(index + i, v + 2 * i); -} - -static void GLAPIENTRY -loopback_VertexAttribs3svNV(GLuint index, GLsizei n, const GLshort *v) -{ - GLint i; - for (i = n - 1; i >= 0; i--) - loopback_VertexAttrib3svNV(index + i, v + 3 * i); -} - -static void GLAPIENTRY -loopback_VertexAttribs3fvNV(GLuint index, GLsizei n, const GLfloat *v) -{ - GLint i; - for (i = n - 1; i >= 0; i--) - ATTRIB3NV(index + i, v[3 * i], v[3 * i + 1], v[3 * i + 2]); -} - -static void GLAPIENTRY -loopback_VertexAttribs3dvNV(GLuint index, GLsizei n, const GLdouble *v) -{ - GLint i; - for (i = n - 1; i >= 0; i--) - loopback_VertexAttrib3dvNV(index + i, v + 3 * i); -} - -static void GLAPIENTRY -loopback_VertexAttribs4svNV(GLuint index, GLsizei n, const GLshort *v) -{ - GLint i; - for (i = n - 1; i >= 0; i--) - loopback_VertexAttrib4svNV(index + i, v + 4 * i); -} - -static void GLAPIENTRY -loopback_VertexAttribs4fvNV(GLuint index, GLsizei n, const GLfloat *v) -{ - GLint i; - for (i = n - 1; i >= 0; i--) - ATTRIB4NV(index + i, v[4 * i], v[4 * i + 1], v[4 * i + 2], v[4 * i + 3]); -} - -static void GLAPIENTRY -loopback_VertexAttribs4dvNV(GLuint index, GLsizei n, const GLdouble *v) -{ - GLint i; - for (i = n - 1; i >= 0; i--) - loopback_VertexAttrib4dvNV(index + i, v + 4 * i); -} - -static void GLAPIENTRY -loopback_VertexAttribs4ubvNV(GLuint index, GLsizei n, const GLubyte *v) -{ - GLint i; - for (i = n - 1; i >= 0; i--) - loopback_VertexAttrib4ubvNV(index + i, v + 4 * i); -} - - - - /* * This code never registers handlers for any of the entry points * listed in vtxfmt.h. @@ -1246,19 +1139,6 @@ _mesa_loopback_init_api_table( struct _glapi_table *dest ) SET_VertexAttrib4svNV(dest, loopback_VertexAttrib4svNV); SET_VertexAttrib4dvNV(dest, loopback_VertexAttrib4dvNV); SET_VertexAttrib4ubvNV(dest, loopback_VertexAttrib4ubvNV); - SET_VertexAttribs1svNV(dest, loopback_VertexAttribs1svNV); - SET_VertexAttribs1fvNV(dest, loopback_VertexAttribs1fvNV); - SET_VertexAttribs1dvNV(dest, loopback_VertexAttribs1dvNV); - SET_VertexAttribs2svNV(dest, loopback_VertexAttribs2svNV); - SET_VertexAttribs2fvNV(dest, loopback_VertexAttribs2fvNV); - SET_VertexAttribs2dvNV(dest, loopback_VertexAttribs2dvNV); - SET_VertexAttribs3svNV(dest, loopback_VertexAttribs3svNV); - SET_VertexAttribs3fvNV(dest, loopback_VertexAttribs3fvNV); - SET_VertexAttribs3dvNV(dest, loopback_VertexAttribs3dvNV); - SET_VertexAttribs4svNV(dest, loopback_VertexAttribs4svNV); - SET_VertexAttribs4fvNV(dest, loopback_VertexAttribs4fvNV); - SET_VertexAttribs4dvNV(dest, loopback_VertexAttribs4dvNV); - SET_VertexAttribs4ubvNV(dest, loopback_VertexAttribs4ubvNV); } diff --git a/reactos/dll/opengl/mesa/main/dd.h b/reactos/dll/opengl/mesa/main/dd.h index 03a1a87f27c..47ca70755e1 100644 --- a/reactos/dll/opengl/mesa/main/dd.h +++ b/reactos/dll/opengl/mesa/main/dd.h @@ -666,11 +666,6 @@ struct dd_function_table { void (*EndCallList)( struct gl_context *ctx ); /**@}*/ - - /** - * \name GL_NV_texture_barrier interface - */ - void (*TextureBarrier)(struct gl_context *ctx); }; diff --git a/reactos/dll/opengl/mesa/main/dispatch.h b/reactos/dll/opengl/mesa/main/dispatch.h index 3df758825af..aac79306548 100644 --- a/reactos/dll/opengl/mesa/main/dispatch.h +++ b/reactos/dll/opengl/mesa/main/dispatch.h @@ -403,6 +403,7 @@ typedef PROC _glapi_proc; #define _gloffset_TexSubImage2D 333 #define _gloffset_PopClientAttrib 334 #define _gloffset_PushClientAttrib 335 + #define _gloffset_BlendColor 336 #define _gloffset_BlendEquation 337 #define _gloffset_DrawRangeElements 338 @@ -428,19 +429,6 @@ typedef PROC _glapi_proc; #define _gloffset_GetConvolutionParameteriv 358 #define _gloffset_GetSeparableFilter 359 #define _gloffset_SeparableFilter2D 360 -#define _gloffset_GetHistogram 361 -#define _gloffset_GetHistogramParameterfv 362 -#define _gloffset_GetHistogramParameteriv 363 -#define _gloffset_GetMinmax 364 -#define _gloffset_GetMinmaxParameterfv 365 -#define _gloffset_GetMinmaxParameteriv 366 -#define _gloffset_Histogram 367 -#define _gloffset_Minmax 368 -#define _gloffset_ResetHistogram 369 -#define _gloffset_ResetMinmax 370 - -#if !FEATURE_remap_table - #define _gloffset_GetStringi 435 #define _gloffset_GetBufferParameteri64v 438 #define _gloffset_GetInteger64i_v 439 @@ -461,9 +449,6 @@ typedef PROC _glapi_proc; #define _gloffset_MapBufferARB 519 #define _gloffset_UnmapBufferARB 520 #define _gloffset_AttachObjectARB 529 -#define _gloffset_CompileShaderARB 530 -#define _gloffset_CreateProgramObjectARB 531 -#define _gloffset_CreateShaderObjectARB 532 #define _gloffset_DeleteObjectARB 533 #define _gloffset_DetachObjectARB 534 #define _gloffset_GetAttachedObjectsARB 536 @@ -471,10 +456,6 @@ typedef PROC _glapi_proc; #define _gloffset_GetInfoLogARB 538 #define _gloffset_GetObjectParameterfvARB 539 #define _gloffset_GetObjectParameterivARB 540 -#define _gloffset_GetShaderSourceARB 541 -#define _gloffset_LinkProgramARB 545 -#define _gloffset_ShaderSourceARB 546 -#define _gloffset_ValidateProgramARB 567 #define _gloffset_GetActiveAttribARB 569 #define _gloffset_FlushMappedBufferRange 580 #define _gloffset_MapBufferRange 581 @@ -569,16 +550,6 @@ typedef PROC _glapi_proc; #define _gloffset_IsFenceNV 782 #define _gloffset_SetFenceNV 783 #define _gloffset_TestFenceNV 784 -#define _gloffset_AreProgramsResidentNV 785 -#define _gloffset_ExecuteProgramNV 788 -#define _gloffset_GetProgramParameterdvNV 790 -#define _gloffset_GetProgramParameterfvNV 791 -#define _gloffset_GetTrackMatrixivNV 794 -#define _gloffset_LoadProgramNV 800 -#define _gloffset_ProgramParameters4dvNV 801 -#define _gloffset_ProgramParameters4fvNV 802 -#define _gloffset_RequestResidentProgramsNV 803 -#define _gloffset_TrackMatrixNV 804 #define _gloffset_VertexAttrib1dNV 805 #define _gloffset_VertexAttrib1dvNV 806 #define _gloffset_VertexAttrib1fNV 807 @@ -605,28 +576,9 @@ typedef PROC _glapi_proc; #define _gloffset_VertexAttrib4svNV 828 #define _gloffset_VertexAttrib4ubNV 829 #define _gloffset_VertexAttrib4ubvNV 830 -#define _gloffset_VertexAttribs1dvNV 832 -#define _gloffset_VertexAttribs1fvNV 833 -#define _gloffset_VertexAttribs1svNV 834 -#define _gloffset_VertexAttribs2dvNV 835 -#define _gloffset_VertexAttribs2fvNV 836 -#define _gloffset_VertexAttribs2svNV 837 -#define _gloffset_VertexAttribs3dvNV 838 -#define _gloffset_VertexAttribs3fvNV 839 -#define _gloffset_VertexAttribs3svNV 840 -#define _gloffset_VertexAttribs4dvNV 841 -#define _gloffset_VertexAttribs4fvNV 842 -#define _gloffset_VertexAttribs4svNV 843 -#define _gloffset_VertexAttribs4ubvNV 844 #define _gloffset_PointParameteriNV 863 #define _gloffset_PointParameterivNV 864 #define _gloffset_ActiveStencilFaceEXT 865 -#define _gloffset_GetProgramNamedParameterdvNV 870 -#define _gloffset_GetProgramNamedParameterfvNV 871 -#define _gloffset_ProgramNamedParameter4dNV 872 -#define _gloffset_ProgramNamedParameter4dvNV 873 -#define _gloffset_ProgramNamedParameter4fNV 874 -#define _gloffset_ProgramNamedParameter4fvNV 875 #define _gloffset_DepthBoundsEXT 878 #define _gloffset_BlendEquationSeparateEXT 879 #define _gloffset_BufferParameteriAPPLE 898 @@ -641,435 +593,6 @@ typedef PROC _glapi_proc; #define _gloffset_TexParameterIuivEXT 946 #define _gloffset_GetTexParameterPointervAPPLE 957 #define _gloffset_TextureRangeAPPLE 958 -#define _gloffset_GetObjectParameterivAPPLE 959 -#define _gloffset_ObjectPurgeableAPPLE 960 -#define _gloffset_ObjectUnpurgeableAPPLE 961 -#define _gloffset_CreateShaderProgramEXT 963 -#define _gloffset_TextureBarrierNV 965 - -#else /* !FEATURE_remap_table */ - -#define driDispatchRemapTable_size 565 -extern int driDispatchRemapTable[ driDispatchRemapTable_size ]; - -#define GetStringi_remap_index 27 -#define TexBuffer_remap_index 28 -#define GetBufferParameteri64v_remap_index 30 -#define GetInteger64i_v_remap_index 31 -#define VertexAttribDivisor_remap_index 32 -#define LoadTransposeMatrixdARB_remap_index 33 -#define LoadTransposeMatrixfARB_remap_index 34 -#define MultTransposeMatrixdARB_remap_index 35 -#define MultTransposeMatrixfARB_remap_index 36 -#define SampleCoverageARB_remap_index 37 -#define BindBufferARB_remap_index 102 -#define BufferDataARB_remap_index 103 -#define BufferSubDataARB_remap_index 104 -#define DeleteBuffersARB_remap_index 105 -#define GenBuffersARB_remap_index 106 -#define GetBufferParameterivARB_remap_index 107 -#define GetBufferPointervARB_remap_index 108 -#define GetBufferSubDataARB_remap_index 109 -#define IsBufferARB_remap_index 110 -#define MapBufferARB_remap_index 111 -#define UnmapBufferARB_remap_index 112 -#define AttachObjectARB_remap_index 121 -#define CompileShaderARB_remap_index 122 -#define CreateProgramObjectARB_remap_index 123 -#define CreateShaderObjectARB_remap_index 124 -#define DeleteObjectARB_remap_index 125 -#define DetachObjectARB_remap_index 126 -#define GetAttachedObjectsARB_remap_index 128 -#define GetHandleARB_remap_index 129 -#define GetInfoLogARB_remap_index 130 -#define GetObjectParameterfvARB_remap_index 131 -#define GetObjectParameterivARB_remap_index 132 -#define GetShaderSourceARB_remap_index 133 -#define LinkProgramARB_remap_index 137 -#define ShaderSourceARB_remap_index 138 -#define ValidateProgramARB_remap_index 159 -#define GetActiveAttribARB_remap_index 161 -#define VertexAttribDivisorARB_remap_index 171 -#define FlushMappedBufferRange_remap_index 172 -#define MapBufferRange_remap_index 173 -#define TexStorage1D_remap_index 277 -#define TexStorage2D_remap_index 278 -#define TexStorage3D_remap_index 279 -#define TextureStorage1DEXT_remap_index 280 -#define TextureStorage2DEXT_remap_index 281 -#define TextureStorage3DEXT_remap_index 282 -#define PolygonOffsetEXT_remap_index 283 -#define SampleMaskSGIS_remap_index 290 -#define SamplePatternSGIS_remap_index 291 -#define ColorPointerEXT_remap_index 292 -#define EdgeFlagPointerEXT_remap_index 293 -#define IndexPointerEXT_remap_index 294 -#define NormalPointerEXT_remap_index 295 -#define TexCoordPointerEXT_remap_index 296 -#define VertexPointerEXT_remap_index 297 -#define PointParameterfEXT_remap_index 298 -#define PointParameterfvEXT_remap_index 299 -#define LockArraysEXT_remap_index 300 -#define UnlockArraysEXT_remap_index 301 -#define SecondaryColor3bEXT_remap_index 302 -#define SecondaryColor3bvEXT_remap_index 303 -#define SecondaryColor3dEXT_remap_index 304 -#define SecondaryColor3dvEXT_remap_index 305 -#define SecondaryColor3fEXT_remap_index 306 -#define SecondaryColor3fvEXT_remap_index 307 -#define SecondaryColor3iEXT_remap_index 308 -#define SecondaryColor3ivEXT_remap_index 309 -#define SecondaryColor3sEXT_remap_index 310 -#define SecondaryColor3svEXT_remap_index 311 -#define SecondaryColor3ubEXT_remap_index 312 -#define SecondaryColor3ubvEXT_remap_index 313 -#define SecondaryColor3uiEXT_remap_index 314 -#define SecondaryColor3uivEXT_remap_index 315 -#define SecondaryColor3usEXT_remap_index 316 -#define SecondaryColor3usvEXT_remap_index 317 -#define SecondaryColorPointerEXT_remap_index 318 -#define MultiDrawArraysEXT_remap_index 319 -#define FogCoordPointerEXT_remap_index 321 -#define FogCoorddEXT_remap_index 322 -#define FogCoorddvEXT_remap_index 323 -#define FogCoordfEXT_remap_index 324 -#define FogCoordfvEXT_remap_index 325 -#define PixelTexGenSGIX_remap_index 326 -#define BlendFuncSeparateEXT_remap_index 327 -#define FlushVertexArrayRangeNV_remap_index 328 -#define VertexArrayRangeNV_remap_index 329 -#define CombinerInputNV_remap_index 330 -#define CombinerOutputNV_remap_index 331 -#define CombinerParameterfNV_remap_index 332 -#define CombinerParameterfvNV_remap_index 333 -#define CombinerParameteriNV_remap_index 334 -#define CombinerParameterivNV_remap_index 335 -#define FinalCombinerInputNV_remap_index 336 -#define GetCombinerInputParameterfvNV_remap_index 337 -#define GetCombinerInputParameterivNV_remap_index 338 -#define GetCombinerOutputParameterfvNV_remap_index 339 -#define GetCombinerOutputParameterivNV_remap_index 340 -#define GetFinalCombinerInputParameterfvNV_remap_index 341 -#define GetFinalCombinerInputParameterivNV_remap_index 342 -#define WindowPos2dMESA_remap_index 344 -#define WindowPos2dvMESA_remap_index 345 -#define WindowPos2fMESA_remap_index 346 -#define WindowPos2fvMESA_remap_index 347 -#define WindowPos2iMESA_remap_index 348 -#define WindowPos2ivMESA_remap_index 349 -#define WindowPos2sMESA_remap_index 350 -#define WindowPos2svMESA_remap_index 351 -#define WindowPos3dMESA_remap_index 352 -#define WindowPos3dvMESA_remap_index 353 -#define WindowPos3fMESA_remap_index 354 -#define WindowPos3fvMESA_remap_index 355 -#define WindowPos3iMESA_remap_index 356 -#define WindowPos3ivMESA_remap_index 357 -#define WindowPos3sMESA_remap_index 358 -#define WindowPos3svMESA_remap_index 359 -#define WindowPos4dMESA_remap_index 360 -#define WindowPos4dvMESA_remap_index 361 -#define WindowPos4fMESA_remap_index 362 -#define WindowPos4fvMESA_remap_index 363 -#define WindowPos4iMESA_remap_index 364 -#define WindowPos4ivMESA_remap_index 365 -#define WindowPos4sMESA_remap_index 366 -#define WindowPos4svMESA_remap_index 367 -#define MultiModeDrawArraysIBM_remap_index 368 -#define MultiModeDrawElementsIBM_remap_index 369 -#define DeleteFencesNV_remap_index 370 -#define FinishFenceNV_remap_index 371 -#define GenFencesNV_remap_index 372 -#define GetFenceivNV_remap_index 373 -#define IsFenceNV_remap_index 374 -#define SetFenceNV_remap_index 375 -#define TestFenceNV_remap_index 376 -#define AreProgramsResidentNV_remap_index 377 -#define ExecuteProgramNV_remap_index 380 -#define GetProgramParameterdvNV_remap_index 382 -#define GetProgramParameterfvNV_remap_index 383 -#define GetTrackMatrixivNV_remap_index 386 -#define LoadProgramNV_remap_index 392 -#define ProgramParameters4dvNV_remap_index 393 -#define ProgramParameters4fvNV_remap_index 394 -#define RequestResidentProgramsNV_remap_index 395 -#define TrackMatrixNV_remap_index 396 -#define VertexAttrib1dNV_remap_index 397 -#define VertexAttrib1dvNV_remap_index 398 -#define VertexAttrib1fNV_remap_index 399 -#define VertexAttrib1fvNV_remap_index 400 -#define VertexAttrib1sNV_remap_index 401 -#define VertexAttrib1svNV_remap_index 402 -#define VertexAttrib2dNV_remap_index 403 -#define VertexAttrib2dvNV_remap_index 404 -#define VertexAttrib2fNV_remap_index 405 -#define VertexAttrib2fvNV_remap_index 406 -#define VertexAttrib2sNV_remap_index 407 -#define VertexAttrib2svNV_remap_index 408 -#define VertexAttrib3dNV_remap_index 409 -#define VertexAttrib3dvNV_remap_index 410 -#define VertexAttrib3fNV_remap_index 411 -#define VertexAttrib3fvNV_remap_index 412 -#define VertexAttrib3sNV_remap_index 413 -#define VertexAttrib3svNV_remap_index 414 -#define VertexAttrib4dNV_remap_index 415 -#define VertexAttrib4dvNV_remap_index 416 -#define VertexAttrib4fNV_remap_index 417 -#define VertexAttrib4fvNV_remap_index 418 -#define VertexAttrib4sNV_remap_index 419 -#define VertexAttrib4svNV_remap_index 420 -#define VertexAttrib4ubNV_remap_index 421 -#define VertexAttrib4ubvNV_remap_index 422 -#define VertexAttribs1dvNV_remap_index 424 -#define VertexAttribs1fvNV_remap_index 425 -#define VertexAttribs1svNV_remap_index 426 -#define VertexAttribs2dvNV_remap_index 427 -#define VertexAttribs2fvNV_remap_index 428 -#define VertexAttribs2svNV_remap_index 429 -#define VertexAttribs3dvNV_remap_index 430 -#define VertexAttribs3fvNV_remap_index 431 -#define VertexAttribs3svNV_remap_index 432 -#define VertexAttribs4dvNV_remap_index 433 -#define VertexAttribs4fvNV_remap_index 434 -#define VertexAttribs4svNV_remap_index 435 -#define VertexAttribs4ubvNV_remap_index 436 -#define PointParameteriNV_remap_index 455 -#define PointParameterivNV_remap_index 456 -#define ActiveStencilFaceEXT_remap_index 457 -#define GetProgramNamedParameterdvNV_remap_index 462 -#define GetProgramNamedParameterfvNV_remap_index 463 -#define ProgramNamedParameter4dNV_remap_index 464 -#define ProgramNamedParameter4dvNV_remap_index 465 -#define ProgramNamedParameter4fNV_remap_index 466 -#define ProgramNamedParameter4fvNV_remap_index 467 -#define DepthBoundsEXT_remap_index 470 -#define BlendEquationSeparateEXT_remap_index 471 -#define BufferParameteriAPPLE_remap_index 490 -#define FlushMappedBufferRangeAPPLE_remap_index 491 -#define BindFragDataLocationEXT_remap_index 492 -#define GetFragDataLocationEXT_remap_index 493 -#define ClearColorIiEXT_remap_index 533 -#define ClearColorIuiEXT_remap_index 534 -#define GetTexParameterIivEXT_remap_index 535 -#define GetTexParameterIuivEXT_remap_index 536 -#define TexParameterIivEXT_remap_index 537 -#define TexParameterIuivEXT_remap_index 538 -#define GetTexParameterPointervAPPLE_remap_index 549 -#define TextureRangeAPPLE_remap_index 550 -#define GetObjectParameterivAPPLE_remap_index 551 -#define ObjectPurgeableAPPLE_remap_index 552 -#define ObjectUnpurgeableAPPLE_remap_index 553 -#define CreateShaderProgramEXT_remap_index 555 -#define TextureBarrierNV_remap_index 557 - -#define _gloffset_GetStringi driDispatchRemapTable[GetStringi_remap_index] -#define _gloffset_GetBufferParameteri64v driDispatchRemapTable[GetBufferParameteri64v_remap_index] -#define _gloffset_GetInteger64i_v driDispatchRemapTable[GetInteger64i_v_remap_index] -#define _gloffset_LoadTransposeMatrixdARB driDispatchRemapTable[LoadTransposeMatrixdARB_remap_index] -#define _gloffset_LoadTransposeMatrixfARB driDispatchRemapTable[LoadTransposeMatrixfARB_remap_index] -#define _gloffset_MultTransposeMatrixdARB driDispatchRemapTable[MultTransposeMatrixdARB_remap_index] -#define _gloffset_MultTransposeMatrixfARB driDispatchRemapTable[MultTransposeMatrixfARB_remap_index] -#define _gloffset_SampleCoverageARB driDispatchRemapTable[SampleCoverageARB_remap_index] -#define _gloffset_BindBufferARB driDispatchRemapTable[BindBufferARB_remap_index] -#define _gloffset_BufferDataARB driDispatchRemapTable[BufferDataARB_remap_index] -#define _gloffset_BufferSubDataARB driDispatchRemapTable[BufferSubDataARB_remap_index] -#define _gloffset_DeleteBuffersARB driDispatchRemapTable[DeleteBuffersARB_remap_index] -#define _gloffset_GenBuffersARB driDispatchRemapTable[GenBuffersARB_remap_index] -#define _gloffset_GetBufferParameterivARB driDispatchRemapTable[GetBufferParameterivARB_remap_index] -#define _gloffset_GetBufferPointervARB driDispatchRemapTable[GetBufferPointervARB_remap_index] -#define _gloffset_GetBufferSubDataARB driDispatchRemapTable[GetBufferSubDataARB_remap_index] -#define _gloffset_IsBufferARB driDispatchRemapTable[IsBufferARB_remap_index] -#define _gloffset_MapBufferARB driDispatchRemapTable[MapBufferARB_remap_index] -#define _gloffset_UnmapBufferARB driDispatchRemapTable[UnmapBufferARB_remap_index] -#define _gloffset_AttachObjectARB driDispatchRemapTable[AttachObjectARB_remap_index] -#define _gloffset_CompileShaderARB driDispatchRemapTable[CompileShaderARB_remap_index] -#define _gloffset_CreateProgramObjectARB driDispatchRemapTable[CreateProgramObjectARB_remap_index] -#define _gloffset_CreateShaderObjectARB driDispatchRemapTable[CreateShaderObjectARB_remap_index] -#define _gloffset_DeleteObjectARB driDispatchRemapTable[DeleteObjectARB_remap_index] -#define _gloffset_DetachObjectARB driDispatchRemapTable[DetachObjectARB_remap_index] -#define _gloffset_GetAttachedObjectsARB driDispatchRemapTable[GetAttachedObjectsARB_remap_index] -#define _gloffset_GetHandleARB driDispatchRemapTable[GetHandleARB_remap_index] -#define _gloffset_GetInfoLogARB driDispatchRemapTable[GetInfoLogARB_remap_index] -#define _gloffset_GetObjectParameterfvARB driDispatchRemapTable[GetObjectParameterfvARB_remap_index] -#define _gloffset_GetObjectParameterivARB driDispatchRemapTable[GetObjectParameterivARB_remap_index] -#define _gloffset_GetShaderSourceARB driDispatchRemapTable[GetShaderSourceARB_remap_index] -#define _gloffset_LinkProgramARB driDispatchRemapTable[LinkProgramARB_remap_index] -#define _gloffset_ShaderSourceARB driDispatchRemapTable[ShaderSourceARB_remap_index] -#define _gloffset_ValidateProgramARB driDispatchRemapTable[ValidateProgramARB_remap_index] -#define _gloffset_GetActiveAttribARB driDispatchRemapTable[GetActiveAttribARB_remap_index] -#define _gloffset_GetAttribLocationARB driDispatchRemapTable[GetAttribLocationARB_remap_index] -#define _gloffset_FlushMappedBufferRange driDispatchRemapTable[FlushMappedBufferRange_remap_index] -#define _gloffset_MapBufferRange driDispatchRemapTable[MapBufferRange_remap_index] -#define _gloffset_TexStorage1D driDispatchRemapTable[TexStorage1D_remap_index] -#define _gloffset_TexStorage2D driDispatchRemapTable[TexStorage2D_remap_index] -#define _gloffset_TexStorage3D driDispatchRemapTable[TexStorage3D_remap_index] -#define _gloffset_TextureStorage1DEXT driDispatchRemapTable[TextureStorage1DEXT_remap_index] -#define _gloffset_TextureStorage2DEXT driDispatchRemapTable[TextureStorage2DEXT_remap_index] -#define _gloffset_TextureStorage3DEXT driDispatchRemapTable[TextureStorage3DEXT_remap_index] -#define _gloffset_PolygonOffsetEXT driDispatchRemapTable[PolygonOffsetEXT_remap_index] -#define _gloffset_SampleMaskSGIS driDispatchRemapTable[SampleMaskSGIS_remap_index] -#define _gloffset_SamplePatternSGIS driDispatchRemapTable[SamplePatternSGIS_remap_index] -#define _gloffset_ColorPointerEXT driDispatchRemapTable[ColorPointerEXT_remap_index] -#define _gloffset_EdgeFlagPointerEXT driDispatchRemapTable[EdgeFlagPointerEXT_remap_index] -#define _gloffset_IndexPointerEXT driDispatchRemapTable[IndexPointerEXT_remap_index] -#define _gloffset_NormalPointerEXT driDispatchRemapTable[NormalPointerEXT_remap_index] -#define _gloffset_TexCoordPointerEXT driDispatchRemapTable[TexCoordPointerEXT_remap_index] -#define _gloffset_VertexPointerEXT driDispatchRemapTable[VertexPointerEXT_remap_index] -#define _gloffset_PointParameterfEXT driDispatchRemapTable[PointParameterfEXT_remap_index] -#define _gloffset_PointParameterfvEXT driDispatchRemapTable[PointParameterfvEXT_remap_index] -#define _gloffset_LockArraysEXT driDispatchRemapTable[LockArraysEXT_remap_index] -#define _gloffset_UnlockArraysEXT driDispatchRemapTable[UnlockArraysEXT_remap_index] -#define _gloffset_SecondaryColor3bEXT driDispatchRemapTable[SecondaryColor3bEXT_remap_index] -#define _gloffset_SecondaryColor3bvEXT driDispatchRemapTable[SecondaryColor3bvEXT_remap_index] -#define _gloffset_SecondaryColor3dEXT driDispatchRemapTable[SecondaryColor3dEXT_remap_index] -#define _gloffset_SecondaryColor3dvEXT driDispatchRemapTable[SecondaryColor3dvEXT_remap_index] -#define _gloffset_SecondaryColor3fEXT driDispatchRemapTable[SecondaryColor3fEXT_remap_index] -#define _gloffset_SecondaryColor3fvEXT driDispatchRemapTable[SecondaryColor3fvEXT_remap_index] -#define _gloffset_SecondaryColor3iEXT driDispatchRemapTable[SecondaryColor3iEXT_remap_index] -#define _gloffset_SecondaryColor3ivEXT driDispatchRemapTable[SecondaryColor3ivEXT_remap_index] -#define _gloffset_SecondaryColor3sEXT driDispatchRemapTable[SecondaryColor3sEXT_remap_index] -#define _gloffset_SecondaryColor3svEXT driDispatchRemapTable[SecondaryColor3svEXT_remap_index] -#define _gloffset_SecondaryColor3ubEXT driDispatchRemapTable[SecondaryColor3ubEXT_remap_index] -#define _gloffset_SecondaryColor3ubvEXT driDispatchRemapTable[SecondaryColor3ubvEXT_remap_index] -#define _gloffset_SecondaryColor3uiEXT driDispatchRemapTable[SecondaryColor3uiEXT_remap_index] -#define _gloffset_SecondaryColor3uivEXT driDispatchRemapTable[SecondaryColor3uivEXT_remap_index] -#define _gloffset_SecondaryColor3usEXT driDispatchRemapTable[SecondaryColor3usEXT_remap_index] -#define _gloffset_SecondaryColor3usvEXT driDispatchRemapTable[SecondaryColor3usvEXT_remap_index] -#define _gloffset_SecondaryColorPointerEXT driDispatchRemapTable[SecondaryColorPointerEXT_remap_index] -#define _gloffset_FogCoordPointerEXT driDispatchRemapTable[FogCoordPointerEXT_remap_index] -#define _gloffset_FogCoorddEXT driDispatchRemapTable[FogCoorddEXT_remap_index] -#define _gloffset_FogCoorddvEXT driDispatchRemapTable[FogCoorddvEXT_remap_index] -#define _gloffset_FogCoordfEXT driDispatchRemapTable[FogCoordfEXT_remap_index] -#define _gloffset_FogCoordfvEXT driDispatchRemapTable[FogCoordfvEXT_remap_index] -#define _gloffset_PixelTexGenSGIX driDispatchRemapTable[PixelTexGenSGIX_remap_index] -#define _gloffset_BlendFuncSeparateEXT driDispatchRemapTable[BlendFuncSeparateEXT_remap_index] -#define _gloffset_FlushVertexArrayRangeNV driDispatchRemapTable[FlushVertexArrayRangeNV_remap_index] -#define _gloffset_VertexArrayRangeNV driDispatchRemapTable[VertexArrayRangeNV_remap_index] -#define _gloffset_CombinerInputNV driDispatchRemapTable[CombinerInputNV_remap_index] -#define _gloffset_CombinerOutputNV driDispatchRemapTable[CombinerOutputNV_remap_index] -#define _gloffset_CombinerParameterfNV driDispatchRemapTable[CombinerParameterfNV_remap_index] -#define _gloffset_CombinerParameterfvNV driDispatchRemapTable[CombinerParameterfvNV_remap_index] -#define _gloffset_CombinerParameteriNV driDispatchRemapTable[CombinerParameteriNV_remap_index] -#define _gloffset_CombinerParameterivNV driDispatchRemapTable[CombinerParameterivNV_remap_index] -#define _gloffset_FinalCombinerInputNV driDispatchRemapTable[FinalCombinerInputNV_remap_index] -#define _gloffset_GetCombinerInputParameterfvNV driDispatchRemapTable[GetCombinerInputParameterfvNV_remap_index] -#define _gloffset_GetCombinerInputParameterivNV driDispatchRemapTable[GetCombinerInputParameterivNV_remap_index] -#define _gloffset_GetCombinerOutputParameterfvNV driDispatchRemapTable[GetCombinerOutputParameterfvNV_remap_index] -#define _gloffset_GetCombinerOutputParameterivNV driDispatchRemapTable[GetCombinerOutputParameterivNV_remap_index] -#define _gloffset_GetFinalCombinerInputParameterfvNV driDispatchRemapTable[GetFinalCombinerInputParameterfvNV_remap_index] -#define _gloffset_GetFinalCombinerInputParameterivNV driDispatchRemapTable[GetFinalCombinerInputParameterivNV_remap_index] -#define _gloffset_WindowPos2dMESA driDispatchRemapTable[WindowPos2dMESA_remap_index] -#define _gloffset_WindowPos2dvMESA driDispatchRemapTable[WindowPos2dvMESA_remap_index] -#define _gloffset_WindowPos2fMESA driDispatchRemapTable[WindowPos2fMESA_remap_index] -#define _gloffset_WindowPos2fvMESA driDispatchRemapTable[WindowPos2fvMESA_remap_index] -#define _gloffset_WindowPos2iMESA driDispatchRemapTable[WindowPos2iMESA_remap_index] -#define _gloffset_WindowPos2ivMESA driDispatchRemapTable[WindowPos2ivMESA_remap_index] -#define _gloffset_WindowPos2sMESA driDispatchRemapTable[WindowPos2sMESA_remap_index] -#define _gloffset_WindowPos2svMESA driDispatchRemapTable[WindowPos2svMESA_remap_index] -#define _gloffset_WindowPos3dMESA driDispatchRemapTable[WindowPos3dMESA_remap_index] -#define _gloffset_WindowPos3dvMESA driDispatchRemapTable[WindowPos3dvMESA_remap_index] -#define _gloffset_WindowPos3fMESA driDispatchRemapTable[WindowPos3fMESA_remap_index] -#define _gloffset_WindowPos3fvMESA driDispatchRemapTable[WindowPos3fvMESA_remap_index] -#define _gloffset_WindowPos3iMESA driDispatchRemapTable[WindowPos3iMESA_remap_index] -#define _gloffset_WindowPos3ivMESA driDispatchRemapTable[WindowPos3ivMESA_remap_index] -#define _gloffset_WindowPos3sMESA driDispatchRemapTable[WindowPos3sMESA_remap_index] -#define _gloffset_WindowPos3svMESA driDispatchRemapTable[WindowPos3svMESA_remap_index] -#define _gloffset_WindowPos4dMESA driDispatchRemapTable[WindowPos4dMESA_remap_index] -#define _gloffset_WindowPos4dvMESA driDispatchRemapTable[WindowPos4dvMESA_remap_index] -#define _gloffset_WindowPos4fMESA driDispatchRemapTable[WindowPos4fMESA_remap_index] -#define _gloffset_WindowPos4fvMESA driDispatchRemapTable[WindowPos4fvMESA_remap_index] -#define _gloffset_WindowPos4iMESA driDispatchRemapTable[WindowPos4iMESA_remap_index] -#define _gloffset_WindowPos4ivMESA driDispatchRemapTable[WindowPos4ivMESA_remap_index] -#define _gloffset_WindowPos4sMESA driDispatchRemapTable[WindowPos4sMESA_remap_index] -#define _gloffset_WindowPos4svMESA driDispatchRemapTable[WindowPos4svMESA_remap_index] -#define _gloffset_MultiModeDrawArraysIBM driDispatchRemapTable[MultiModeDrawArraysIBM_remap_index] -#define _gloffset_MultiModeDrawElementsIBM driDispatchRemapTable[MultiModeDrawElementsIBM_remap_index] -#define _gloffset_DeleteFencesNV driDispatchRemapTable[DeleteFencesNV_remap_index] -#define _gloffset_FinishFenceNV driDispatchRemapTable[FinishFenceNV_remap_index] -#define _gloffset_GenFencesNV driDispatchRemapTable[GenFencesNV_remap_index] -#define _gloffset_GetFenceivNV driDispatchRemapTable[GetFenceivNV_remap_index] -#define _gloffset_IsFenceNV driDispatchRemapTable[IsFenceNV_remap_index] -#define _gloffset_SetFenceNV driDispatchRemapTable[SetFenceNV_remap_index] -#define _gloffset_TestFenceNV driDispatchRemapTable[TestFenceNV_remap_index] -#define _gloffset_AreProgramsResidentNV driDispatchRemapTable[AreProgramsResidentNV_remap_index] -#define _gloffset_ExecuteProgramNV driDispatchRemapTable[ExecuteProgramNV_remap_index] -#define _gloffset_GetProgramParameterdvNV driDispatchRemapTable[GetProgramParameterdvNV_remap_index] -#define _gloffset_GetProgramParameterfvNV driDispatchRemapTable[GetProgramParameterfvNV_remap_index] -#define _gloffset_GetTrackMatrixivNV driDispatchRemapTable[GetTrackMatrixivNV_remap_index] -#define _gloffset_LoadProgramNV driDispatchRemapTable[LoadProgramNV_remap_index] -#define _gloffset_ProgramParameters4dvNV driDispatchRemapTable[ProgramParameters4dvNV_remap_index] -#define _gloffset_ProgramParameters4fvNV driDispatchRemapTable[ProgramParameters4fvNV_remap_index] -#define _gloffset_RequestResidentProgramsNV driDispatchRemapTable[RequestResidentProgramsNV_remap_index] -#define _gloffset_TrackMatrixNV driDispatchRemapTable[TrackMatrixNV_remap_index] -#define _gloffset_VertexAttrib1dNV driDispatchRemapTable[VertexAttrib1dNV_remap_index] -#define _gloffset_VertexAttrib1dvNV driDispatchRemapTable[VertexAttrib1dvNV_remap_index] -#define _gloffset_VertexAttrib1fNV driDispatchRemapTable[VertexAttrib1fNV_remap_index] -#define _gloffset_VertexAttrib1fvNV driDispatchRemapTable[VertexAttrib1fvNV_remap_index] -#define _gloffset_VertexAttrib1sNV driDispatchRemapTable[VertexAttrib1sNV_remap_index] -#define _gloffset_VertexAttrib1svNV driDispatchRemapTable[VertexAttrib1svNV_remap_index] -#define _gloffset_VertexAttrib2dNV driDispatchRemapTable[VertexAttrib2dNV_remap_index] -#define _gloffset_VertexAttrib2dvNV driDispatchRemapTable[VertexAttrib2dvNV_remap_index] -#define _gloffset_VertexAttrib2fNV driDispatchRemapTable[VertexAttrib2fNV_remap_index] -#define _gloffset_VertexAttrib2fvNV driDispatchRemapTable[VertexAttrib2fvNV_remap_index] -#define _gloffset_VertexAttrib2sNV driDispatchRemapTable[VertexAttrib2sNV_remap_index] -#define _gloffset_VertexAttrib2svNV driDispatchRemapTable[VertexAttrib2svNV_remap_index] -#define _gloffset_VertexAttrib3dNV driDispatchRemapTable[VertexAttrib3dNV_remap_index] -#define _gloffset_VertexAttrib3dvNV driDispatchRemapTable[VertexAttrib3dvNV_remap_index] -#define _gloffset_VertexAttrib3fNV driDispatchRemapTable[VertexAttrib3fNV_remap_index] -#define _gloffset_VertexAttrib3fvNV driDispatchRemapTable[VertexAttrib3fvNV_remap_index] -#define _gloffset_VertexAttrib3sNV driDispatchRemapTable[VertexAttrib3sNV_remap_index] -#define _gloffset_VertexAttrib3svNV driDispatchRemapTable[VertexAttrib3svNV_remap_index] -#define _gloffset_VertexAttrib4dNV driDispatchRemapTable[VertexAttrib4dNV_remap_index] -#define _gloffset_VertexAttrib4dvNV driDispatchRemapTable[VertexAttrib4dvNV_remap_index] -#define _gloffset_VertexAttrib4fNV driDispatchRemapTable[VertexAttrib4fNV_remap_index] -#define _gloffset_VertexAttrib4fvNV driDispatchRemapTable[VertexAttrib4fvNV_remap_index] -#define _gloffset_VertexAttrib4sNV driDispatchRemapTable[VertexAttrib4sNV_remap_index] -#define _gloffset_VertexAttrib4svNV driDispatchRemapTable[VertexAttrib4svNV_remap_index] -#define _gloffset_VertexAttrib4ubNV driDispatchRemapTable[VertexAttrib4ubNV_remap_index] -#define _gloffset_VertexAttrib4ubvNV driDispatchRemapTable[VertexAttrib4ubvNV_remap_index] -#define _gloffset_VertexAttribs1dvNV driDispatchRemapTable[VertexAttribs1dvNV_remap_index] -#define _gloffset_VertexAttribs1fvNV driDispatchRemapTable[VertexAttribs1fvNV_remap_index] -#define _gloffset_VertexAttribs1svNV driDispatchRemapTable[VertexAttribs1svNV_remap_index] -#define _gloffset_VertexAttribs2dvNV driDispatchRemapTable[VertexAttribs2dvNV_remap_index] -#define _gloffset_VertexAttribs2fvNV driDispatchRemapTable[VertexAttribs2fvNV_remap_index] -#define _gloffset_VertexAttribs2svNV driDispatchRemapTable[VertexAttribs2svNV_remap_index] -#define _gloffset_VertexAttribs3dvNV driDispatchRemapTable[VertexAttribs3dvNV_remap_index] -#define _gloffset_VertexAttribs3fvNV driDispatchRemapTable[VertexAttribs3fvNV_remap_index] -#define _gloffset_VertexAttribs3svNV driDispatchRemapTable[VertexAttribs3svNV_remap_index] -#define _gloffset_VertexAttribs4dvNV driDispatchRemapTable[VertexAttribs4dvNV_remap_index] -#define _gloffset_VertexAttribs4fvNV driDispatchRemapTable[VertexAttribs4fvNV_remap_index] -#define _gloffset_VertexAttribs4svNV driDispatchRemapTable[VertexAttribs4svNV_remap_index] -#define _gloffset_VertexAttribs4ubvNV driDispatchRemapTable[VertexAttribs4ubvNV_remap_index] -#define _gloffset_PointParameteriNV driDispatchRemapTable[PointParameteriNV_remap_index] -#define _gloffset_PointParameterivNV driDispatchRemapTable[PointParameterivNV_remap_index] -#define _gloffset_ActiveStencilFaceEXT driDispatchRemapTable[ActiveStencilFaceEXT_remap_index] -#define _gloffset_GetProgramNamedParameterdvNV driDispatchRemapTable[GetProgramNamedParameterdvNV_remap_index] -#define _gloffset_GetProgramNamedParameterfvNV driDispatchRemapTable[GetProgramNamedParameterfvNV_remap_index] -#define _gloffset_ProgramNamedParameter4dNV driDispatchRemapTable[ProgramNamedParameter4dNV_remap_index] -#define _gloffset_ProgramNamedParameter4dvNV driDispatchRemapTable[ProgramNamedParameter4dvNV_remap_index] -#define _gloffset_ProgramNamedParameter4fNV driDispatchRemapTable[ProgramNamedParameter4fNV_remap_index] -#define _gloffset_ProgramNamedParameter4fvNV driDispatchRemapTable[ProgramNamedParameter4fvNV_remap_index] -#define _gloffset_DepthBoundsEXT driDispatchRemapTable[DepthBoundsEXT_remap_index] -#define _gloffset_BlendEquationSeparateEXT driDispatchRemapTable[BlendEquationSeparateEXT_remap_index] -#define _gloffset_BufferParameteriAPPLE driDispatchRemapTable[BufferParameteriAPPLE_remap_index] -#define _gloffset_FlushMappedBufferRangeAPPLE driDispatchRemapTable[FlushMappedBufferRangeAPPLE_remap_index] -#define _gloffset_BindFragDataLocationEXT driDispatchRemapTable[BindFragDataLocationEXT_remap_index] -#define _gloffset_GetFragDataLocationEXT driDispatchRemapTable[GetFragDataLocationEXT_remap_index] -#define _gloffset_ClearColorIiEXT driDispatchRemapTable[ClearColorIiEXT_remap_index] -#define _gloffset_ClearColorIuiEXT driDispatchRemapTable[ClearColorIuiEXT_remap_index] -#define _gloffset_GetTexParameterIivEXT driDispatchRemapTable[GetTexParameterIivEXT_remap_index] -#define _gloffset_GetTexParameterIuivEXT driDispatchRemapTable[GetTexParameterIuivEXT_remap_index] -#define _gloffset_TexParameterIivEXT driDispatchRemapTable[TexParameterIivEXT_remap_index] -#define _gloffset_TexParameterIuivEXT driDispatchRemapTable[TexParameterIuivEXT_remap_index] -#define _gloffset_GetTexParameterPointervAPPLE driDispatchRemapTable[GetTexParameterPointervAPPLE_remap_index] -#define _gloffset_TextureRangeAPPLE driDispatchRemapTable[TextureRangeAPPLE_remap_index] -#define _gloffset_GetObjectParameterivAPPLE driDispatchRemapTable[GetObjectParameterivAPPLE_remap_index] -#define _gloffset_ObjectPurgeableAPPLE driDispatchRemapTable[ObjectPurgeableAPPLE_remap_index] -#define _gloffset_ObjectUnpurgeableAPPLE driDispatchRemapTable[ObjectUnpurgeableAPPLE_remap_index] -#define _gloffset_CreateShaderProgramEXT driDispatchRemapTable[CreateShaderProgramEXT_remap_index] -#define _gloffset_TextureBarrierNV driDispatchRemapTable[TextureBarrierNV_remap_index] - -#endif /* !FEATURE_remap_table */ typedef void (GLAPIENTRYP _glptr_NewList)(GLuint, GLenum); #define CALL_NewList(disp, parameters) \ @@ -5042,116 +4565,6 @@ static inline void SET_SeparableFilter2D(struct _glapi_table *disp, void (GLAPIE SET_by_offset(disp, _gloffset_SeparableFilter2D, fn); } -typedef void (GLAPIENTRYP _glptr_GetHistogram)(GLenum, GLboolean, GLenum, GLenum, GLvoid *); -#define CALL_GetHistogram(disp, parameters) \ - (* GET_GetHistogram(disp)) parameters -static inline _glptr_GetHistogram GET_GetHistogram(struct _glapi_table *disp) { - return (_glptr_GetHistogram) (GET_by_offset(disp, _gloffset_GetHistogram)); -} - -static inline void SET_GetHistogram(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLboolean, GLenum, GLenum, GLvoid *)) { - SET_by_offset(disp, _gloffset_GetHistogram, fn); -} - -typedef void (GLAPIENTRYP _glptr_GetHistogramParameterfv)(GLenum, GLenum, GLfloat *); -#define CALL_GetHistogramParameterfv(disp, parameters) \ - (* GET_GetHistogramParameterfv(disp)) parameters -static inline _glptr_GetHistogramParameterfv GET_GetHistogramParameterfv(struct _glapi_table *disp) { - return (_glptr_GetHistogramParameterfv) (GET_by_offset(disp, _gloffset_GetHistogramParameterfv)); -} - -static inline void SET_GetHistogramParameterfv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLenum, GLfloat *)) { - SET_by_offset(disp, _gloffset_GetHistogramParameterfv, fn); -} - -typedef void (GLAPIENTRYP _glptr_GetHistogramParameteriv)(GLenum, GLenum, GLint *); -#define CALL_GetHistogramParameteriv(disp, parameters) \ - (* GET_GetHistogramParameteriv(disp)) parameters -static inline _glptr_GetHistogramParameteriv GET_GetHistogramParameteriv(struct _glapi_table *disp) { - return (_glptr_GetHistogramParameteriv) (GET_by_offset(disp, _gloffset_GetHistogramParameteriv)); -} - -static inline void SET_GetHistogramParameteriv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLenum, GLint *)) { - SET_by_offset(disp, _gloffset_GetHistogramParameteriv, fn); -} - -typedef void (GLAPIENTRYP _glptr_GetMinmax)(GLenum, GLboolean, GLenum, GLenum, GLvoid *); -#define CALL_GetMinmax(disp, parameters) \ - (* GET_GetMinmax(disp)) parameters -static inline _glptr_GetMinmax GET_GetMinmax(struct _glapi_table *disp) { - return (_glptr_GetMinmax) (GET_by_offset(disp, _gloffset_GetMinmax)); -} - -static inline void SET_GetMinmax(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLboolean, GLenum, GLenum, GLvoid *)) { - SET_by_offset(disp, _gloffset_GetMinmax, fn); -} - -typedef void (GLAPIENTRYP _glptr_GetMinmaxParameterfv)(GLenum, GLenum, GLfloat *); -#define CALL_GetMinmaxParameterfv(disp, parameters) \ - (* GET_GetMinmaxParameterfv(disp)) parameters -static inline _glptr_GetMinmaxParameterfv GET_GetMinmaxParameterfv(struct _glapi_table *disp) { - return (_glptr_GetMinmaxParameterfv) (GET_by_offset(disp, _gloffset_GetMinmaxParameterfv)); -} - -static inline void SET_GetMinmaxParameterfv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLenum, GLfloat *)) { - SET_by_offset(disp, _gloffset_GetMinmaxParameterfv, fn); -} - -typedef void (GLAPIENTRYP _glptr_GetMinmaxParameteriv)(GLenum, GLenum, GLint *); -#define CALL_GetMinmaxParameteriv(disp, parameters) \ - (* GET_GetMinmaxParameteriv(disp)) parameters -static inline _glptr_GetMinmaxParameteriv GET_GetMinmaxParameteriv(struct _glapi_table *disp) { - return (_glptr_GetMinmaxParameteriv) (GET_by_offset(disp, _gloffset_GetMinmaxParameteriv)); -} - -static inline void SET_GetMinmaxParameteriv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLenum, GLint *)) { - SET_by_offset(disp, _gloffset_GetMinmaxParameteriv, fn); -} - -typedef void (GLAPIENTRYP _glptr_Histogram)(GLenum, GLsizei, GLenum, GLboolean); -#define CALL_Histogram(disp, parameters) \ - (* GET_Histogram(disp)) parameters -static inline _glptr_Histogram GET_Histogram(struct _glapi_table *disp) { - return (_glptr_Histogram) (GET_by_offset(disp, _gloffset_Histogram)); -} - -static inline void SET_Histogram(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLsizei, GLenum, GLboolean)) { - SET_by_offset(disp, _gloffset_Histogram, fn); -} - -typedef void (GLAPIENTRYP _glptr_Minmax)(GLenum, GLenum, GLboolean); -#define CALL_Minmax(disp, parameters) \ - (* GET_Minmax(disp)) parameters -static inline _glptr_Minmax GET_Minmax(struct _glapi_table *disp) { - return (_glptr_Minmax) (GET_by_offset(disp, _gloffset_Minmax)); -} - -static inline void SET_Minmax(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLenum, GLboolean)) { - SET_by_offset(disp, _gloffset_Minmax, fn); -} - -typedef void (GLAPIENTRYP _glptr_ResetHistogram)(GLenum); -#define CALL_ResetHistogram(disp, parameters) \ - (* GET_ResetHistogram(disp)) parameters -static inline _glptr_ResetHistogram GET_ResetHistogram(struct _glapi_table *disp) { - return (_glptr_ResetHistogram) (GET_by_offset(disp, _gloffset_ResetHistogram)); -} - -static inline void SET_ResetHistogram(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum)) { - SET_by_offset(disp, _gloffset_ResetHistogram, fn); -} - -typedef void (GLAPIENTRYP _glptr_ResetMinmax)(GLenum); -#define CALL_ResetMinmax(disp, parameters) \ - (* GET_ResetMinmax(disp)) parameters -static inline _glptr_ResetMinmax GET_ResetMinmax(struct _glapi_table *disp) { - return (_glptr_ResetMinmax) (GET_by_offset(disp, _gloffset_ResetMinmax)); -} - -static inline void SET_ResetMinmax(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum)) { - SET_by_offset(disp, _gloffset_ResetMinmax, fn); -} - typedef const GLubyte * (GLAPIENTRYP _glptr_GetStringi)(GLenum, GLuint); #define CALL_GetStringi(disp, parameters) \ (* GET_GetStringi(disp)) parameters @@ -5372,39 +4785,6 @@ static inline void SET_AttachObjectARB(struct _glapi_table *disp, void (GLAPIENT SET_by_offset(disp, _gloffset_AttachObjectARB, fn); } -typedef void (GLAPIENTRYP _glptr_CompileShaderARB)(GLhandleARB); -#define CALL_CompileShaderARB(disp, parameters) \ - (* GET_CompileShaderARB(disp)) parameters -static inline _glptr_CompileShaderARB GET_CompileShaderARB(struct _glapi_table *disp) { - return (_glptr_CompileShaderARB) (GET_by_offset(disp, _gloffset_CompileShaderARB)); -} - -static inline void SET_CompileShaderARB(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLhandleARB)) { - SET_by_offset(disp, _gloffset_CompileShaderARB, fn); -} - -typedef GLhandleARB (GLAPIENTRYP _glptr_CreateProgramObjectARB)(void); -#define CALL_CreateProgramObjectARB(disp, parameters) \ - (* GET_CreateProgramObjectARB(disp)) parameters -static inline _glptr_CreateProgramObjectARB GET_CreateProgramObjectARB(struct _glapi_table *disp) { - return (_glptr_CreateProgramObjectARB) (GET_by_offset(disp, _gloffset_CreateProgramObjectARB)); -} - -static inline void SET_CreateProgramObjectARB(struct _glapi_table *disp, GLhandleARB (GLAPIENTRYP fn)(void)) { - SET_by_offset(disp, _gloffset_CreateProgramObjectARB, fn); -} - -typedef GLhandleARB (GLAPIENTRYP _glptr_CreateShaderObjectARB)(GLenum); -#define CALL_CreateShaderObjectARB(disp, parameters) \ - (* GET_CreateShaderObjectARB(disp)) parameters -static inline _glptr_CreateShaderObjectARB GET_CreateShaderObjectARB(struct _glapi_table *disp) { - return (_glptr_CreateShaderObjectARB) (GET_by_offset(disp, _gloffset_CreateShaderObjectARB)); -} - -static inline void SET_CreateShaderObjectARB(struct _glapi_table *disp, GLhandleARB (GLAPIENTRYP fn)(GLenum)) { - SET_by_offset(disp, _gloffset_CreateShaderObjectARB, fn); -} - typedef void (GLAPIENTRYP _glptr_DeleteObjectARB)(GLhandleARB); #define CALL_DeleteObjectARB(disp, parameters) \ (* GET_DeleteObjectARB(disp)) parameters @@ -5482,50 +4862,6 @@ static inline void SET_GetObjectParameterivARB(struct _glapi_table *disp, void ( SET_by_offset(disp, _gloffset_GetObjectParameterivARB, fn); } -typedef void (GLAPIENTRYP _glptr_GetShaderSourceARB)(GLhandleARB, GLsizei, GLsizei *, GLcharARB *); -#define CALL_GetShaderSourceARB(disp, parameters) \ - (* GET_GetShaderSourceARB(disp)) parameters -static inline _glptr_GetShaderSourceARB GET_GetShaderSourceARB(struct _glapi_table *disp) { - return (_glptr_GetShaderSourceARB) (GET_by_offset(disp, _gloffset_GetShaderSourceARB)); -} - -static inline void SET_GetShaderSourceARB(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLhandleARB, GLsizei, GLsizei *, GLcharARB *)) { - SET_by_offset(disp, _gloffset_GetShaderSourceARB, fn); -} - -typedef void (GLAPIENTRYP _glptr_LinkProgramARB)(GLhandleARB); -#define CALL_LinkProgramARB(disp, parameters) \ - (* GET_LinkProgramARB(disp)) parameters -static inline _glptr_LinkProgramARB GET_LinkProgramARB(struct _glapi_table *disp) { - return (_glptr_LinkProgramARB) (GET_by_offset(disp, _gloffset_LinkProgramARB)); -} - -static inline void SET_LinkProgramARB(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLhandleARB)) { - SET_by_offset(disp, _gloffset_LinkProgramARB, fn); -} - -typedef void (GLAPIENTRYP _glptr_ShaderSourceARB)(GLhandleARB, GLsizei, const GLcharARB **, const GLint *); -#define CALL_ShaderSourceARB(disp, parameters) \ - (* GET_ShaderSourceARB(disp)) parameters -static inline _glptr_ShaderSourceARB GET_ShaderSourceARB(struct _glapi_table *disp) { - return (_glptr_ShaderSourceARB) (GET_by_offset(disp, _gloffset_ShaderSourceARB)); -} - -static inline void SET_ShaderSourceARB(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLhandleARB, GLsizei, const GLcharARB **, const GLint *)) { - SET_by_offset(disp, _gloffset_ShaderSourceARB, fn); -} - -typedef void (GLAPIENTRYP _glptr_ValidateProgramARB)(GLhandleARB); -#define CALL_ValidateProgramARB(disp, parameters) \ - (* GET_ValidateProgramARB(disp)) parameters -static inline _glptr_ValidateProgramARB GET_ValidateProgramARB(struct _glapi_table *disp) { - return (_glptr_ValidateProgramARB) (GET_by_offset(disp, _gloffset_ValidateProgramARB)); -} - -static inline void SET_ValidateProgramARB(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLhandleARB)) { - SET_by_offset(disp, _gloffset_ValidateProgramARB, fn); -} - typedef void (GLAPIENTRYP _glptr_GetActiveAttribARB)(GLhandleARB, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLcharARB *); #define CALL_GetActiveAttribARB(disp, parameters) \ (* GET_GetActiveAttribARB(disp)) parameters @@ -6560,116 +5896,6 @@ static inline void SET_TestFenceNV(struct _glapi_table *disp, GLboolean (GLAPIEN SET_by_offset(disp, _gloffset_TestFenceNV, fn); } -typedef GLboolean (GLAPIENTRYP _glptr_AreProgramsResidentNV)(GLsizei, const GLuint *, GLboolean *); -#define CALL_AreProgramsResidentNV(disp, parameters) \ - (* GET_AreProgramsResidentNV(disp)) parameters -static inline _glptr_AreProgramsResidentNV GET_AreProgramsResidentNV(struct _glapi_table *disp) { - return (_glptr_AreProgramsResidentNV) (GET_by_offset(disp, _gloffset_AreProgramsResidentNV)); -} - -static inline void SET_AreProgramsResidentNV(struct _glapi_table *disp, GLboolean (GLAPIENTRYP fn)(GLsizei, const GLuint *, GLboolean *)) { - SET_by_offset(disp, _gloffset_AreProgramsResidentNV, fn); -} - -typedef void (GLAPIENTRYP _glptr_ExecuteProgramNV)(GLenum, GLuint, const GLfloat *); -#define CALL_ExecuteProgramNV(disp, parameters) \ - (* GET_ExecuteProgramNV(disp)) parameters -static inline _glptr_ExecuteProgramNV GET_ExecuteProgramNV(struct _glapi_table *disp) { - return (_glptr_ExecuteProgramNV) (GET_by_offset(disp, _gloffset_ExecuteProgramNV)); -} - -static inline void SET_ExecuteProgramNV(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLuint, const GLfloat *)) { - SET_by_offset(disp, _gloffset_ExecuteProgramNV, fn); -} - -typedef void (GLAPIENTRYP _glptr_GetProgramParameterdvNV)(GLenum, GLuint, GLenum, GLdouble *); -#define CALL_GetProgramParameterdvNV(disp, parameters) \ - (* GET_GetProgramParameterdvNV(disp)) parameters -static inline _glptr_GetProgramParameterdvNV GET_GetProgramParameterdvNV(struct _glapi_table *disp) { - return (_glptr_GetProgramParameterdvNV) (GET_by_offset(disp, _gloffset_GetProgramParameterdvNV)); -} - -static inline void SET_GetProgramParameterdvNV(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLuint, GLenum, GLdouble *)) { - SET_by_offset(disp, _gloffset_GetProgramParameterdvNV, fn); -} - -typedef void (GLAPIENTRYP _glptr_GetProgramParameterfvNV)(GLenum, GLuint, GLenum, GLfloat *); -#define CALL_GetProgramParameterfvNV(disp, parameters) \ - (* GET_GetProgramParameterfvNV(disp)) parameters -static inline _glptr_GetProgramParameterfvNV GET_GetProgramParameterfvNV(struct _glapi_table *disp) { - return (_glptr_GetProgramParameterfvNV) (GET_by_offset(disp, _gloffset_GetProgramParameterfvNV)); -} - -static inline void SET_GetProgramParameterfvNV(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLuint, GLenum, GLfloat *)) { - SET_by_offset(disp, _gloffset_GetProgramParameterfvNV, fn); -} - -typedef void (GLAPIENTRYP _glptr_GetTrackMatrixivNV)(GLenum, GLuint, GLenum, GLint *); -#define CALL_GetTrackMatrixivNV(disp, parameters) \ - (* GET_GetTrackMatrixivNV(disp)) parameters -static inline _glptr_GetTrackMatrixivNV GET_GetTrackMatrixivNV(struct _glapi_table *disp) { - return (_glptr_GetTrackMatrixivNV) (GET_by_offset(disp, _gloffset_GetTrackMatrixivNV)); -} - -static inline void SET_GetTrackMatrixivNV(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLuint, GLenum, GLint *)) { - SET_by_offset(disp, _gloffset_GetTrackMatrixivNV, fn); -} - -typedef void (GLAPIENTRYP _glptr_LoadProgramNV)(GLenum, GLuint, GLsizei, const GLubyte *); -#define CALL_LoadProgramNV(disp, parameters) \ - (* GET_LoadProgramNV(disp)) parameters -static inline _glptr_LoadProgramNV GET_LoadProgramNV(struct _glapi_table *disp) { - return (_glptr_LoadProgramNV) (GET_by_offset(disp, _gloffset_LoadProgramNV)); -} - -static inline void SET_LoadProgramNV(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLuint, GLsizei, const GLubyte *)) { - SET_by_offset(disp, _gloffset_LoadProgramNV, fn); -} - -typedef void (GLAPIENTRYP _glptr_ProgramParameters4dvNV)(GLenum, GLuint, GLsizei, const GLdouble *); -#define CALL_ProgramParameters4dvNV(disp, parameters) \ - (* GET_ProgramParameters4dvNV(disp)) parameters -static inline _glptr_ProgramParameters4dvNV GET_ProgramParameters4dvNV(struct _glapi_table *disp) { - return (_glptr_ProgramParameters4dvNV) (GET_by_offset(disp, _gloffset_ProgramParameters4dvNV)); -} - -static inline void SET_ProgramParameters4dvNV(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLuint, GLsizei, const GLdouble *)) { - SET_by_offset(disp, _gloffset_ProgramParameters4dvNV, fn); -} - -typedef void (GLAPIENTRYP _glptr_ProgramParameters4fvNV)(GLenum, GLuint, GLsizei, const GLfloat *); -#define CALL_ProgramParameters4fvNV(disp, parameters) \ - (* GET_ProgramParameters4fvNV(disp)) parameters -static inline _glptr_ProgramParameters4fvNV GET_ProgramParameters4fvNV(struct _glapi_table *disp) { - return (_glptr_ProgramParameters4fvNV) (GET_by_offset(disp, _gloffset_ProgramParameters4fvNV)); -} - -static inline void SET_ProgramParameters4fvNV(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLuint, GLsizei, const GLfloat *)) { - SET_by_offset(disp, _gloffset_ProgramParameters4fvNV, fn); -} - -typedef void (GLAPIENTRYP _glptr_RequestResidentProgramsNV)(GLsizei, const GLuint *); -#define CALL_RequestResidentProgramsNV(disp, parameters) \ - (* GET_RequestResidentProgramsNV(disp)) parameters -static inline _glptr_RequestResidentProgramsNV GET_RequestResidentProgramsNV(struct _glapi_table *disp) { - return (_glptr_RequestResidentProgramsNV) (GET_by_offset(disp, _gloffset_RequestResidentProgramsNV)); -} - -static inline void SET_RequestResidentProgramsNV(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLsizei, const GLuint *)) { - SET_by_offset(disp, _gloffset_RequestResidentProgramsNV, fn); -} - -typedef void (GLAPIENTRYP _glptr_TrackMatrixNV)(GLenum, GLuint, GLenum, GLenum); -#define CALL_TrackMatrixNV(disp, parameters) \ - (* GET_TrackMatrixNV(disp)) parameters -static inline _glptr_TrackMatrixNV GET_TrackMatrixNV(struct _glapi_table *disp) { - return (_glptr_TrackMatrixNV) (GET_by_offset(disp, _gloffset_TrackMatrixNV)); -} - -static inline void SET_TrackMatrixNV(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLuint, GLenum, GLenum)) { - SET_by_offset(disp, _gloffset_TrackMatrixNV, fn); -} - typedef void (GLAPIENTRYP _glptr_VertexAttrib1dNV)(GLuint, GLdouble); #define CALL_VertexAttrib1dNV(disp, parameters) \ (* GET_VertexAttrib1dNV(disp)) parameters @@ -6956,149 +6182,6 @@ static inline void SET_VertexAttrib4ubvNV(struct _glapi_table *disp, void (GLAPI SET_by_offset(disp, _gloffset_VertexAttrib4ubvNV, fn); } -typedef void (GLAPIENTRYP _glptr_VertexAttribs1dvNV)(GLuint, GLsizei, const GLdouble *); -#define CALL_VertexAttribs1dvNV(disp, parameters) \ - (* GET_VertexAttribs1dvNV(disp)) parameters -static inline _glptr_VertexAttribs1dvNV GET_VertexAttribs1dvNV(struct _glapi_table *disp) { - return (_glptr_VertexAttribs1dvNV) (GET_by_offset(disp, _gloffset_VertexAttribs1dvNV)); -} - -static inline void SET_VertexAttribs1dvNV(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLsizei, const GLdouble *)) { - SET_by_offset(disp, _gloffset_VertexAttribs1dvNV, fn); -} - -typedef void (GLAPIENTRYP _glptr_VertexAttribs1fvNV)(GLuint, GLsizei, const GLfloat *); -#define CALL_VertexAttribs1fvNV(disp, parameters) \ - (* GET_VertexAttribs1fvNV(disp)) parameters -static inline _glptr_VertexAttribs1fvNV GET_VertexAttribs1fvNV(struct _glapi_table *disp) { - return (_glptr_VertexAttribs1fvNV) (GET_by_offset(disp, _gloffset_VertexAttribs1fvNV)); -} - -static inline void SET_VertexAttribs1fvNV(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLsizei, const GLfloat *)) { - SET_by_offset(disp, _gloffset_VertexAttribs1fvNV, fn); -} - -typedef void (GLAPIENTRYP _glptr_VertexAttribs1svNV)(GLuint, GLsizei, const GLshort *); -#define CALL_VertexAttribs1svNV(disp, parameters) \ - (* GET_VertexAttribs1svNV(disp)) parameters -static inline _glptr_VertexAttribs1svNV GET_VertexAttribs1svNV(struct _glapi_table *disp) { - return (_glptr_VertexAttribs1svNV) (GET_by_offset(disp, _gloffset_VertexAttribs1svNV)); -} - -static inline void SET_VertexAttribs1svNV(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLsizei, const GLshort *)) { - SET_by_offset(disp, _gloffset_VertexAttribs1svNV, fn); -} - -typedef void (GLAPIENTRYP _glptr_VertexAttribs2dvNV)(GLuint, GLsizei, const GLdouble *); -#define CALL_VertexAttribs2dvNV(disp, parameters) \ - (* GET_VertexAttribs2dvNV(disp)) parameters -static inline _glptr_VertexAttribs2dvNV GET_VertexAttribs2dvNV(struct _glapi_table *disp) { - return (_glptr_VertexAttribs2dvNV) (GET_by_offset(disp, _gloffset_VertexAttribs2dvNV)); -} - -static inline void SET_VertexAttribs2dvNV(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLsizei, const GLdouble *)) { - SET_by_offset(disp, _gloffset_VertexAttribs2dvNV, fn); -} - -typedef void (GLAPIENTRYP _glptr_VertexAttribs2fvNV)(GLuint, GLsizei, const GLfloat *); -#define CALL_VertexAttribs2fvNV(disp, parameters) \ - (* GET_VertexAttribs2fvNV(disp)) parameters -static inline _glptr_VertexAttribs2fvNV GET_VertexAttribs2fvNV(struct _glapi_table *disp) { - return (_glptr_VertexAttribs2fvNV) (GET_by_offset(disp, _gloffset_VertexAttribs2fvNV)); -} - -static inline void SET_VertexAttribs2fvNV(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLsizei, const GLfloat *)) { - SET_by_offset(disp, _gloffset_VertexAttribs2fvNV, fn); -} - -typedef void (GLAPIENTRYP _glptr_VertexAttribs2svNV)(GLuint, GLsizei, const GLshort *); -#define CALL_VertexAttribs2svNV(disp, parameters) \ - (* GET_VertexAttribs2svNV(disp)) parameters -static inline _glptr_VertexAttribs2svNV GET_VertexAttribs2svNV(struct _glapi_table *disp) { - return (_glptr_VertexAttribs2svNV) (GET_by_offset(disp, _gloffset_VertexAttribs2svNV)); -} - -static inline void SET_VertexAttribs2svNV(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLsizei, const GLshort *)) { - SET_by_offset(disp, _gloffset_VertexAttribs2svNV, fn); -} - -typedef void (GLAPIENTRYP _glptr_VertexAttribs3dvNV)(GLuint, GLsizei, const GLdouble *); -#define CALL_VertexAttribs3dvNV(disp, parameters) \ - (* GET_VertexAttribs3dvNV(disp)) parameters -static inline _glptr_VertexAttribs3dvNV GET_VertexAttribs3dvNV(struct _glapi_table *disp) { - return (_glptr_VertexAttribs3dvNV) (GET_by_offset(disp, _gloffset_VertexAttribs3dvNV)); -} - -static inline void SET_VertexAttribs3dvNV(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLsizei, const GLdouble *)) { - SET_by_offset(disp, _gloffset_VertexAttribs3dvNV, fn); -} - -typedef void (GLAPIENTRYP _glptr_VertexAttribs3fvNV)(GLuint, GLsizei, const GLfloat *); -#define CALL_VertexAttribs3fvNV(disp, parameters) \ - (* GET_VertexAttribs3fvNV(disp)) parameters -static inline _glptr_VertexAttribs3fvNV GET_VertexAttribs3fvNV(struct _glapi_table *disp) { - return (_glptr_VertexAttribs3fvNV) (GET_by_offset(disp, _gloffset_VertexAttribs3fvNV)); -} - -static inline void SET_VertexAttribs3fvNV(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLsizei, const GLfloat *)) { - SET_by_offset(disp, _gloffset_VertexAttribs3fvNV, fn); -} - -typedef void (GLAPIENTRYP _glptr_VertexAttribs3svNV)(GLuint, GLsizei, const GLshort *); -#define CALL_VertexAttribs3svNV(disp, parameters) \ - (* GET_VertexAttribs3svNV(disp)) parameters -static inline _glptr_VertexAttribs3svNV GET_VertexAttribs3svNV(struct _glapi_table *disp) { - return (_glptr_VertexAttribs3svNV) (GET_by_offset(disp, _gloffset_VertexAttribs3svNV)); -} - -static inline void SET_VertexAttribs3svNV(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLsizei, const GLshort *)) { - SET_by_offset(disp, _gloffset_VertexAttribs3svNV, fn); -} - -typedef void (GLAPIENTRYP _glptr_VertexAttribs4dvNV)(GLuint, GLsizei, const GLdouble *); -#define CALL_VertexAttribs4dvNV(disp, parameters) \ - (* GET_VertexAttribs4dvNV(disp)) parameters -static inline _glptr_VertexAttribs4dvNV GET_VertexAttribs4dvNV(struct _glapi_table *disp) { - return (_glptr_VertexAttribs4dvNV) (GET_by_offset(disp, _gloffset_VertexAttribs4dvNV)); -} - -static inline void SET_VertexAttribs4dvNV(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLsizei, const GLdouble *)) { - SET_by_offset(disp, _gloffset_VertexAttribs4dvNV, fn); -} - -typedef void (GLAPIENTRYP _glptr_VertexAttribs4fvNV)(GLuint, GLsizei, const GLfloat *); -#define CALL_VertexAttribs4fvNV(disp, parameters) \ - (* GET_VertexAttribs4fvNV(disp)) parameters -static inline _glptr_VertexAttribs4fvNV GET_VertexAttribs4fvNV(struct _glapi_table *disp) { - return (_glptr_VertexAttribs4fvNV) (GET_by_offset(disp, _gloffset_VertexAttribs4fvNV)); -} - -static inline void SET_VertexAttribs4fvNV(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLsizei, const GLfloat *)) { - SET_by_offset(disp, _gloffset_VertexAttribs4fvNV, fn); -} - -typedef void (GLAPIENTRYP _glptr_VertexAttribs4svNV)(GLuint, GLsizei, const GLshort *); -#define CALL_VertexAttribs4svNV(disp, parameters) \ - (* GET_VertexAttribs4svNV(disp)) parameters -static inline _glptr_VertexAttribs4svNV GET_VertexAttribs4svNV(struct _glapi_table *disp) { - return (_glptr_VertexAttribs4svNV) (GET_by_offset(disp, _gloffset_VertexAttribs4svNV)); -} - -static inline void SET_VertexAttribs4svNV(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLsizei, const GLshort *)) { - SET_by_offset(disp, _gloffset_VertexAttribs4svNV, fn); -} - -typedef void (GLAPIENTRYP _glptr_VertexAttribs4ubvNV)(GLuint, GLsizei, const GLubyte *); -#define CALL_VertexAttribs4ubvNV(disp, parameters) \ - (* GET_VertexAttribs4ubvNV(disp)) parameters -static inline _glptr_VertexAttribs4ubvNV GET_VertexAttribs4ubvNV(struct _glapi_table *disp) { - return (_glptr_VertexAttribs4ubvNV) (GET_by_offset(disp, _gloffset_VertexAttribs4ubvNV)); -} - -static inline void SET_VertexAttribs4ubvNV(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLsizei, const GLubyte *)) { - SET_by_offset(disp, _gloffset_VertexAttribs4ubvNV, fn); -} - typedef void (GLAPIENTRYP _glptr_PointParameteriNV)(GLenum, GLint); #define CALL_PointParameteriNV(disp, parameters) \ (* GET_PointParameteriNV(disp)) parameters @@ -7132,72 +6215,6 @@ static inline void SET_ActiveStencilFaceEXT(struct _glapi_table *disp, void (GLA SET_by_offset(disp, _gloffset_ActiveStencilFaceEXT, fn); } -typedef void (GLAPIENTRYP _glptr_GetProgramNamedParameterdvNV)(GLuint, GLsizei, const GLubyte *, GLdouble *); -#define CALL_GetProgramNamedParameterdvNV(disp, parameters) \ - (* GET_GetProgramNamedParameterdvNV(disp)) parameters -static inline _glptr_GetProgramNamedParameterdvNV GET_GetProgramNamedParameterdvNV(struct _glapi_table *disp) { - return (_glptr_GetProgramNamedParameterdvNV) (GET_by_offset(disp, _gloffset_GetProgramNamedParameterdvNV)); -} - -static inline void SET_GetProgramNamedParameterdvNV(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLsizei, const GLubyte *, GLdouble *)) { - SET_by_offset(disp, _gloffset_GetProgramNamedParameterdvNV, fn); -} - -typedef void (GLAPIENTRYP _glptr_GetProgramNamedParameterfvNV)(GLuint, GLsizei, const GLubyte *, GLfloat *); -#define CALL_GetProgramNamedParameterfvNV(disp, parameters) \ - (* GET_GetProgramNamedParameterfvNV(disp)) parameters -static inline _glptr_GetProgramNamedParameterfvNV GET_GetProgramNamedParameterfvNV(struct _glapi_table *disp) { - return (_glptr_GetProgramNamedParameterfvNV) (GET_by_offset(disp, _gloffset_GetProgramNamedParameterfvNV)); -} - -static inline void SET_GetProgramNamedParameterfvNV(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLsizei, const GLubyte *, GLfloat *)) { - SET_by_offset(disp, _gloffset_GetProgramNamedParameterfvNV, fn); -} - -typedef void (GLAPIENTRYP _glptr_ProgramNamedParameter4dNV)(GLuint, GLsizei, const GLubyte *, GLdouble, GLdouble, GLdouble, GLdouble); -#define CALL_ProgramNamedParameter4dNV(disp, parameters) \ - (* GET_ProgramNamedParameter4dNV(disp)) parameters -static inline _glptr_ProgramNamedParameter4dNV GET_ProgramNamedParameter4dNV(struct _glapi_table *disp) { - return (_glptr_ProgramNamedParameter4dNV) (GET_by_offset(disp, _gloffset_ProgramNamedParameter4dNV)); -} - -static inline void SET_ProgramNamedParameter4dNV(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLsizei, const GLubyte *, GLdouble, GLdouble, GLdouble, GLdouble)) { - SET_by_offset(disp, _gloffset_ProgramNamedParameter4dNV, fn); -} - -typedef void (GLAPIENTRYP _glptr_ProgramNamedParameter4dvNV)(GLuint, GLsizei, const GLubyte *, const GLdouble *); -#define CALL_ProgramNamedParameter4dvNV(disp, parameters) \ - (* GET_ProgramNamedParameter4dvNV(disp)) parameters -static inline _glptr_ProgramNamedParameter4dvNV GET_ProgramNamedParameter4dvNV(struct _glapi_table *disp) { - return (_glptr_ProgramNamedParameter4dvNV) (GET_by_offset(disp, _gloffset_ProgramNamedParameter4dvNV)); -} - -static inline void SET_ProgramNamedParameter4dvNV(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLsizei, const GLubyte *, const GLdouble *)) { - SET_by_offset(disp, _gloffset_ProgramNamedParameter4dvNV, fn); -} - -typedef void (GLAPIENTRYP _glptr_ProgramNamedParameter4fNV)(GLuint, GLsizei, const GLubyte *, GLfloat, GLfloat, GLfloat, GLfloat); -#define CALL_ProgramNamedParameter4fNV(disp, parameters) \ - (* GET_ProgramNamedParameter4fNV(disp)) parameters -static inline _glptr_ProgramNamedParameter4fNV GET_ProgramNamedParameter4fNV(struct _glapi_table *disp) { - return (_glptr_ProgramNamedParameter4fNV) (GET_by_offset(disp, _gloffset_ProgramNamedParameter4fNV)); -} - -static inline void SET_ProgramNamedParameter4fNV(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLsizei, const GLubyte *, GLfloat, GLfloat, GLfloat, GLfloat)) { - SET_by_offset(disp, _gloffset_ProgramNamedParameter4fNV, fn); -} - -typedef void (GLAPIENTRYP _glptr_ProgramNamedParameter4fvNV)(GLuint, GLsizei, const GLubyte *, const GLfloat *); -#define CALL_ProgramNamedParameter4fvNV(disp, parameters) \ - (* GET_ProgramNamedParameter4fvNV(disp)) parameters -static inline _glptr_ProgramNamedParameter4fvNV GET_ProgramNamedParameter4fvNV(struct _glapi_table *disp) { - return (_glptr_ProgramNamedParameter4fvNV) (GET_by_offset(disp, _gloffset_ProgramNamedParameter4fvNV)); -} - -static inline void SET_ProgramNamedParameter4fvNV(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLsizei, const GLubyte *, const GLfloat *)) { - SET_by_offset(disp, _gloffset_ProgramNamedParameter4fvNV, fn); -} - typedef void (GLAPIENTRYP _glptr_DepthBoundsEXT)(GLclampd, GLclampd); #define CALL_DepthBoundsEXT(disp, parameters) \ (* GET_DepthBoundsEXT(disp)) parameters @@ -7352,27 +6369,5 @@ static inline void SET_TextureRangeAPPLE(struct _glapi_table *disp, void (GLAPIE SET_by_offset(disp, _gloffset_TextureRangeAPPLE, fn); } -typedef GLuint (GLAPIENTRYP _glptr_CreateShaderProgramEXT)(GLenum, const GLchar *); -#define CALL_CreateShaderProgramEXT(disp, parameters) \ - (* GET_CreateShaderProgramEXT(disp)) parameters -static inline _glptr_CreateShaderProgramEXT GET_CreateShaderProgramEXT(struct _glapi_table *disp) { - return (_glptr_CreateShaderProgramEXT) (GET_by_offset(disp, _gloffset_CreateShaderProgramEXT)); -} - -static inline void SET_CreateShaderProgramEXT(struct _glapi_table *disp, GLuint (GLAPIENTRYP fn)(GLenum, const GLchar *)) { - SET_by_offset(disp, _gloffset_CreateShaderProgramEXT, fn); -} - -typedef void (GLAPIENTRYP _glptr_TextureBarrierNV)(void); -#define CALL_TextureBarrierNV(disp, parameters) \ - (* GET_TextureBarrierNV(disp)) parameters -static inline _glptr_TextureBarrierNV GET_TextureBarrierNV(struct _glapi_table *disp) { - return (_glptr_TextureBarrierNV) (GET_by_offset(disp, _gloffset_TextureBarrierNV)); -} - -static inline void SET_TextureBarrierNV(struct _glapi_table *disp, void (GLAPIENTRYP fn)(void)) { - SET_by_offset(disp, _gloffset_TextureBarrierNV, fn); -} - #endif /* !defined( _DISPATCH_H_ ) */ diff --git a/reactos/dll/opengl/mesa/main/dlist.c b/reactos/dll/opengl/mesa/main/dlist.c index ea359e05c70..ee0179cfdfa 100644 --- a/reactos/dll/opengl/mesa/main/dlist.c +++ b/reactos/dll/opengl/mesa/main/dlist.c @@ -193,7 +193,6 @@ typedef enum OPCODE_FRONT_FACE, OPCODE_FRUSTUM, OPCODE_HINT, - OPCODE_HISTOGRAM, OPCODE_INDEX_MASK, OPCODE_INIT_NAMES, OPCODE_LIGHT, @@ -210,7 +209,6 @@ typedef enum OPCODE_MAPGRID1, OPCODE_MAPGRID2, OPCODE_MATRIX_MODE, - OPCODE_MIN_MAX, OPCODE_MULT_MATRIX, OPCODE_ORTHO, OPCODE_PASSTHROUGH, @@ -231,8 +229,6 @@ typedef enum OPCODE_PUSH_NAME, OPCODE_RASTER_POS, OPCODE_READ_BUFFER, - OPCODE_RESET_HISTOGRAM, - OPCODE_RESET_MIN_MAX, OPCODE_ROTATE, OPCODE_SCALE, OPCODE_SCISSOR, @@ -281,9 +277,6 @@ typedef enum OPCODE_TEXPARAMETER_I, OPCODE_TEXPARAMETER_UI, - /* GL_NV_texture_barrier */ - OPCODE_TEXTURE_BARRIER_NV, - /* The following three are meta instructions */ OPCODE_ERROR, /* raise compiled-in error */ OPCODE_CONTINUE, @@ -1899,27 +1892,6 @@ save_Hint(GLenum target, GLenum mode) } -static void GLAPIENTRY -save_Histogram(GLenum target, GLsizei width, GLenum internalFormat, - GLboolean sink) -{ - GET_CURRENT_CONTEXT(ctx); - Node *n; - - ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); - n = alloc_instruction(ctx, OPCODE_HISTOGRAM, 4); - if (n) { - n[1].e = target; - n[2].i = width; - n[3].e = internalFormat; - n[4].b = sink; - } - if (ctx->ExecuteFlag) { - CALL_Histogram(ctx->Exec, (target, width, internalFormat, sink)); - } -} - - static void GLAPIENTRY save_IndexMask(GLuint mask) { @@ -2436,25 +2408,6 @@ save_MatrixMode(GLenum mode) } -static void GLAPIENTRY -save_Minmax(GLenum target, GLenum internalFormat, GLboolean sink) -{ - GET_CURRENT_CONTEXT(ctx); - Node *n; - - ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); - n = alloc_instruction(ctx, OPCODE_MIN_MAX, 3); - if (n) { - n[1].e = target; - n[2].e = internalFormat; - n[3].b = sink; - } - if (ctx->ExecuteFlag) { - CALL_Minmax(ctx->Exec, (target, internalFormat, sink)); - } -} - - static void GLAPIENTRY save_MultMatrixf(const GLfloat * m) { @@ -3036,38 +2989,6 @@ save_ReadBuffer(GLenum mode) } -static void GLAPIENTRY -save_ResetHistogram(GLenum target) -{ - GET_CURRENT_CONTEXT(ctx); - Node *n; - ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); - n = alloc_instruction(ctx, OPCODE_RESET_HISTOGRAM, 1); - if (n) { - n[1].e = target; - } - if (ctx->ExecuteFlag) { - CALL_ResetHistogram(ctx->Exec, (target)); - } -} - - -static void GLAPIENTRY -save_ResetMinmax(GLenum target) -{ - GET_CURRENT_CONTEXT(ctx); - Node *n; - ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); - n = alloc_instruction(ctx, OPCODE_RESET_MIN_MAX, 1); - if (n) { - n[1].e = target; - } - if (ctx->ExecuteFlag) { - CALL_ResetMinmax(ctx->Exec, (target)); - } -} - - static void GLAPIENTRY save_Rotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) { @@ -3799,69 +3720,6 @@ save_SampleCoverageARB(GLclampf value, GLboolean invert) } -/* - * GL_NV_vertex_program - */ - -#if FEATURE_NV_fragment_program -static void GLAPIENTRY -save_ProgramNamedParameter4fNV(GLuint id, GLsizei len, const GLubyte * name, - GLfloat x, GLfloat y, GLfloat z, GLfloat w) -{ - GET_CURRENT_CONTEXT(ctx); - Node *n; - - ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); - - n = alloc_instruction(ctx, OPCODE_PROGRAM_NAMED_PARAMETER_NV, 6); - if (n) { - GLubyte *nameCopy = (GLubyte *) malloc(len); - if (!nameCopy) { - _mesa_error(ctx, GL_OUT_OF_MEMORY, "glProgramNamedParameter4fNV"); - return; - } - memcpy(nameCopy, name, len); - n[1].ui = id; - n[2].i = len; - n[3].data = nameCopy; - n[4].f = x; - n[5].f = y; - n[6].f = z; - n[7].f = w; - } - if (ctx->ExecuteFlag) { - CALL_ProgramNamedParameter4fNV(ctx->Exec, (id, len, name, x, y, z, w)); - } -} - -static void GLAPIENTRY -save_ProgramNamedParameter4fvNV(GLuint id, GLsizei len, const GLubyte * name, - const float v[]) -{ - save_ProgramNamedParameter4fNV(id, len, name, v[0], v[1], v[2], v[3]); -} - - -static void GLAPIENTRY -save_ProgramNamedParameter4dNV(GLuint id, GLsizei len, const GLubyte * name, - GLdouble x, GLdouble y, GLdouble z, GLdouble w) -{ - save_ProgramNamedParameter4fNV(id, len, name, (GLfloat) x, (GLfloat) y, - (GLfloat) z, (GLfloat) w); -} - - -static void GLAPIENTRY -save_ProgramNamedParameter4dvNV(GLuint id, GLsizei len, const GLubyte * name, - const double v[]) -{ - save_ProgramNamedParameter4fNV(id, len, name, (GLfloat) v[0], - (GLfloat) v[1], (GLfloat) v[2], - (GLfloat) v[3]); -} -#endif - - /* GL_EXT_depth_bounds_test */ static void GLAPIENTRY save_DepthBoundsEXT(GLclampd zmin, GLclampd zmax) @@ -4555,19 +4413,6 @@ exec_GetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params) CALL_GetTexParameterIuivEXT(ctx->Exec, (target, pname, params)); } - -/* GL_NV_texture_barrier */ -static void GLAPIENTRY -save_TextureBarrierNV(void) -{ - GET_CURRENT_CONTEXT(ctx); - ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); - alloc_instruction(ctx, OPCODE_TEXTURE_BARRIER_NV, 0); - if (ctx->ExecuteFlag) { - CALL_TextureBarrierNV(ctx->Exec, ()); - } -} - /** * Save an error-generating command into display list. * @@ -4924,9 +4769,6 @@ execute_list(struct gl_context *ctx, GLuint list) case OPCODE_HINT: CALL_Hint(ctx->Exec, (n[1].e, n[2].e)); break; - case OPCODE_HISTOGRAM: - CALL_Histogram(ctx->Exec, (n[1].e, n[2].i, n[3].e, n[4].b)); - break; case OPCODE_INDEX_MASK: CALL_IndexMask(ctx->Exec, (n[1].ui)); break; @@ -5021,9 +4863,6 @@ execute_list(struct gl_context *ctx, GLuint list) case OPCODE_MATRIX_MODE: CALL_MatrixMode(ctx->Exec, (n[1].e)); break; - case OPCODE_MIN_MAX: - CALL_Minmax(ctx->Exec, (n[1].e, n[2].e, n[3].b)); - break; case OPCODE_MULT_MATRIX: if (sizeof(Node) == sizeof(GLfloat)) { CALL_MultMatrixf(ctx->Exec, (&n[1].f)); @@ -5107,12 +4946,6 @@ execute_list(struct gl_context *ctx, GLuint list) case OPCODE_READ_BUFFER: CALL_ReadBuffer(ctx->Exec, (n[1].e)); break; - case OPCODE_RESET_HISTOGRAM: - CALL_ResetHistogram(ctx->Exec, (n[1].e)); - break; - case OPCODE_RESET_MIN_MAX: - CALL_ResetMinmax(ctx->Exec, (n[1].e)); - break; case OPCODE_ROTATE: CALL_Rotatef(ctx->Exec, (n[1].f, n[2].f, n[3].f, n[4].f)); break; @@ -5232,38 +5065,6 @@ execute_list(struct gl_context *ctx, GLuint list) case OPCODE_WINDOW_POS_ARB: /* GL_ARB_window_pos */ CALL_WindowPos3fMESA(ctx->Exec, (n[1].f, n[2].f, n[3].f)); break; -#if FEATURE_NV_vertex_program - case OPCODE_EXECUTE_PROGRAM_NV: - { - GLfloat v[4]; - v[0] = n[3].f; - v[1] = n[4].f; - v[2] = n[5].f; - v[3] = n[6].f; - CALL_ExecuteProgramNV(ctx->Exec, (n[1].e, n[2].ui, v)); - } - break; - case OPCODE_REQUEST_RESIDENT_PROGRAMS_NV: - CALL_RequestResidentProgramsNV(ctx->Exec, (n[1].ui, - (GLuint *) n[2].data)); - break; - case OPCODE_LOAD_PROGRAM_NV: - CALL_LoadProgramNV(ctx->Exec, (n[1].e, n[2].ui, n[3].i, - (const GLubyte *) n[4].data)); - break; - case OPCODE_TRACK_MATRIX_NV: - CALL_TrackMatrixNV(ctx->Exec, (n[1].e, n[2].ui, n[3].e, n[4].e)); - break; -#endif - -#if FEATURE_NV_fragment_program - case OPCODE_PROGRAM_NAMED_PARAMETER_NV: - CALL_ProgramNamedParameter4fNV(ctx->Exec, (n[1].ui, n[2].i, - (const GLubyte *) n[3]. - data, n[4].f, n[5].f, - n[6].f, n[7].f)); - break; -#endif case OPCODE_DEPTH_BOUNDS_EXT: CALL_DepthBoundsEXT(ctx->Exec, (n[1].f, n[2].f)); @@ -5359,10 +5160,6 @@ execute_list(struct gl_context *ctx, GLuint list) } break; - case OPCODE_TEXTURE_BARRIER_NV: - CALL_TextureBarrierNV(ctx->Exec, ()); - break; - case OPCODE_CONTINUE: n = (Node *) n[1].next; break; @@ -6175,56 +5972,6 @@ exec_GetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params) CALL_GetConvolutionParameteriv(ctx->Exec, (target, pname, params)); } -static void GLAPIENTRY -exec_GetHistogram(GLenum target, GLboolean reset, GLenum format, - GLenum type, GLvoid *values) -{ - GET_CURRENT_CONTEXT(ctx); - FLUSH_VERTICES(ctx, 0); - CALL_GetHistogram(ctx->Exec, (target, reset, format, type, values)); -} - -static void GLAPIENTRY -exec_GetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params) -{ - GET_CURRENT_CONTEXT(ctx); - FLUSH_VERTICES(ctx, 0); - CALL_GetHistogramParameterfv(ctx->Exec, (target, pname, params)); -} - -static void GLAPIENTRY -exec_GetHistogramParameteriv(GLenum target, GLenum pname, GLint *params) -{ - GET_CURRENT_CONTEXT(ctx); - FLUSH_VERTICES(ctx, 0); - CALL_GetHistogramParameteriv(ctx->Exec, (target, pname, params)); -} - -static void GLAPIENTRY -exec_GetMinmax(GLenum target, GLboolean reset, GLenum format, - GLenum type, GLvoid *values) -{ - GET_CURRENT_CONTEXT(ctx); - FLUSH_VERTICES(ctx, 0); - CALL_GetMinmax(ctx->Exec, (target, reset, format, type, values)); -} - -static void GLAPIENTRY -exec_GetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params) -{ - GET_CURRENT_CONTEXT(ctx); - FLUSH_VERTICES(ctx, 0); - CALL_GetMinmaxParameterfv(ctx->Exec, (target, pname, params)); -} - -static void GLAPIENTRY -exec_GetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params) -{ - GET_CURRENT_CONTEXT(ctx); - FLUSH_VERTICES(ctx, 0); - CALL_GetMinmaxParameteriv(ctx->Exec, (target, pname, params)); -} - static void GLAPIENTRY exec_GetSeparableFilter(GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span) @@ -6606,17 +6353,7 @@ _mesa_create_save_table(void) SET_GetConvolutionFilter(table, exec_GetConvolutionFilter); SET_GetConvolutionParameterfv(table, exec_GetConvolutionParameterfv); SET_GetConvolutionParameteriv(table, exec_GetConvolutionParameteriv); - SET_GetHistogram(table, exec_GetHistogram); - SET_GetHistogramParameterfv(table, exec_GetHistogramParameterfv); - SET_GetHistogramParameteriv(table, exec_GetHistogramParameteriv); - SET_GetMinmax(table, exec_GetMinmax); - SET_GetMinmaxParameterfv(table, exec_GetMinmaxParameterfv); - SET_GetMinmaxParameteriv(table, exec_GetMinmaxParameteriv); SET_GetSeparableFilter(table, exec_GetSeparableFilter); - SET_Histogram(table, save_Histogram); - SET_Minmax(table, save_Minmax); - SET_ResetHistogram(table, save_ResetHistogram); - SET_ResetMinmax(table, save_ResetMinmax); SET_SeparableFilter2D(table, exec_SeparableFilter2D); /* 2. GL_EXT_blend_color */ @@ -6696,36 +6433,6 @@ _mesa_create_save_table(void) SET_MultiModeDrawArraysIBM(table, exec_MultiModeDrawArraysIBM); SET_MultiModeDrawElementsIBM(table, exec_MultiModeDrawElementsIBM); -#if FEATURE_NV_vertex_program - /* 233. GL_NV_vertex_program */ - /* The following commands DO NOT go into display lists: - * AreProgramsResidentNV, IsProgramNV, GenProgramsNV, DeleteProgramsNV, - * VertexAttribPointerNV, GetProgram*, GetVertexAttrib* - */ - SET_ExecuteProgramNV(table, save_ExecuteProgramNV); - SET_AreProgramsResidentNV(table, _mesa_AreProgramsResidentNV); - SET_RequestResidentProgramsNV(table, save_RequestResidentProgramsNV); - SET_GetProgramParameterfvNV(table, _mesa_GetProgramParameterfvNV); - SET_GetProgramParameterdvNV(table, _mesa_GetProgramParameterdvNV); - SET_GetTrackMatrixivNV(table, _mesa_GetTrackMatrixivNV); - SET_LoadProgramNV(table, save_LoadProgramNV); - SET_ProgramParameters4dvNV(table, save_ProgramParameters4dvNV); - SET_ProgramParameters4fvNV(table, save_ProgramParameters4fvNV); - SET_TrackMatrixNV(table, save_TrackMatrixNV); -#endif - - /* 282. GL_NV_fragment_program */ -#if FEATURE_NV_fragment_program - SET_ProgramNamedParameter4fNV(table, save_ProgramNamedParameter4fNV); - SET_ProgramNamedParameter4dNV(table, save_ProgramNamedParameter4dNV); - SET_ProgramNamedParameter4fvNV(table, save_ProgramNamedParameter4fvNV); - SET_ProgramNamedParameter4dvNV(table, save_ProgramNamedParameter4dvNV); - SET_GetProgramNamedParameterfvNV(table, - _mesa_GetProgramNamedParameterfvNV); - SET_GetProgramNamedParameterdvNV(table, - _mesa_GetProgramNamedParameterdvNV); -#endif - /* 262. GL_NV_point_sprite */ SET_PointParameteriNV(table, save_PointParameteriNV); SET_PointParameterivNV(table, save_PointParameterivNV); @@ -6773,9 +6480,6 @@ _mesa_create_save_table(void) SET_GetTexParameterIivEXT(table, exec_GetTexParameterIiv); SET_GetTexParameterIuivEXT(table, exec_GetTexParameterIuiv); - /* GL_NV_texture_barrier */ - SET_TextureBarrierNV(table, save_TextureBarrierNV); - /* GL_ARB_texture_storage (no dlist support) */ SET_TexStorage1D(table, _mesa_TexStorage1D); SET_TexStorage2D(table, _mesa_TexStorage2D); diff --git a/reactos/dll/opengl/mesa/main/extensions.c b/reactos/dll/opengl/mesa/main/extensions.c index 8062a59bbe6..9a933cd816f 100644 --- a/reactos/dll/opengl/mesa/main/extensions.c +++ b/reactos/dll/opengl/mesa/main/extensions.c @@ -99,7 +99,6 @@ static const struct extension extension_table[] = { { "GL_EXT_shadow_funcs", o(EXT_shadow_funcs), 2002 }, { "GL_EXT_stencil_wrap", o(dummy_true), 2002 }, { "GL_EXT_subtexture", o(dummy_true), 1995 }, - { "GL_EXT_texture3D", o(EXT_texture3D), 1996 }, { "GL_EXT_texture_cube_map", o(ARB_texture_cube_map), 2001 }, { "GL_EXT_texture_env_add", o(dummy_true), 1999 }, { "GL_EXT_texture_env_combine", o(dummy_true), 2000 }, @@ -127,7 +126,6 @@ static const struct extension extension_table[] = { { "GL_NV_light_max_exponent", o(NV_light_max_exponent), 1999 }, { "GL_NV_point_sprite", o(NV_point_sprite), 2001 }, { "GL_NV_texgen_reflection", o(NV_texgen_reflection), 1999 }, - { "GL_NV_texture_barrier", o(NV_texture_barrier), 2009 }, { "GL_NV_texture_env_combine4", o(NV_texture_env_combine4), 1999 }, { 0, 0, 0}, @@ -175,7 +173,6 @@ static const size_t default_extensions[] = { o(EXT_packed_pixels), o(EXT_rescale_normal), o(EXT_separate_specular_color), - o(EXT_texture3D), /* Vendor Extensions */ o(APPLE_packed_pixels), diff --git a/reactos/dll/opengl/mesa/main/get.c b/reactos/dll/opengl/mesa/main/get.c index bdd2ace5052..a1657394bf4 100644 --- a/reactos/dll/opengl/mesa/main/get.c +++ b/reactos/dll/opengl/mesa/main/get.c @@ -157,7 +157,7 @@ union value { #define CONTEXT_FIELD(field, type) \ LOC_CONTEXT, type, offsetof(struct gl_context, field) #define ARRAY_FIELD(field, type) \ - LOC_ARRAY, type, offsetof(struct gl_array_object, field) + LOC_ARRAY, type, offsetof(struct gl_array_attrib, field) #define CONST(value) \ LOC_CONTEXT, TYPE_CONST, value @@ -487,11 +487,11 @@ static const struct value_desc values[] = { /* GL_ARB_vertex_buffer_object */ { GL_VERTEX_ARRAY_BUFFER_BINDING_ARB, LOC_CUSTOM, TYPE_INT, - offsetof(struct gl_array_object, VertexAttrib[VERT_ATTRIB_POS].BufferObj), NO_EXTRA }, + offsetof(struct gl_array_attrib, VertexAttrib[VERT_ATTRIB_POS].BufferObj), NO_EXTRA }, { GL_NORMAL_ARRAY_BUFFER_BINDING_ARB, LOC_CUSTOM, TYPE_INT, - offsetof(struct gl_array_object, VertexAttrib[VERT_ATTRIB_NORMAL].BufferObj), NO_EXTRA }, + offsetof(struct gl_array_attrib, VertexAttrib[VERT_ATTRIB_NORMAL].BufferObj), NO_EXTRA }, { GL_COLOR_ARRAY_BUFFER_BINDING_ARB, LOC_CUSTOM, TYPE_INT, - offsetof(struct gl_array_object, VertexAttrib[VERT_ATTRIB_COLOR0].BufferObj), NO_EXTRA }, + offsetof(struct gl_array_attrib, VertexAttrib[VERT_ATTRIB_COLOR0].BufferObj), NO_EXTRA }, { GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB, LOC_CUSTOM, TYPE_INT, NO_OFFSET, NO_EXTRA }, /* GL_OES_point_sprite */ @@ -723,13 +723,13 @@ static const struct value_desc values[] = { /* GL_ARB_vertex_buffer_object */ { GL_INDEX_ARRAY_BUFFER_BINDING_ARB, LOC_CUSTOM, TYPE_INT, - offsetof(struct gl_array_object, VertexAttrib[VERT_ATTRIB_COLOR_INDEX].BufferObj), NO_EXTRA }, + offsetof(struct gl_array_attrib, VertexAttrib[VERT_ATTRIB_COLOR_INDEX].BufferObj), NO_EXTRA }, { GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB, LOC_CUSTOM, TYPE_INT, - offsetof(struct gl_array_object, VertexAttrib[VERT_ATTRIB_EDGEFLAG].BufferObj), NO_EXTRA }, + offsetof(struct gl_array_attrib, VertexAttrib[VERT_ATTRIB_EDGEFLAG].BufferObj), NO_EXTRA }, { GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB, LOC_CUSTOM, TYPE_INT, - offsetof(struct gl_array_object, VertexAttrib[VERT_ATTRIB_COLOR1].BufferObj), NO_EXTRA }, + offsetof(struct gl_array_attrib, VertexAttrib[VERT_ATTRIB_COLOR1].BufferObj), NO_EXTRA }, { GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB, LOC_CUSTOM, TYPE_INT, - offsetof(struct gl_array_object, VertexAttrib[VERT_ATTRIB_FOG].BufferObj), NO_EXTRA }, + offsetof(struct gl_array_attrib, VertexAttrib[VERT_ATTRIB_FOG].BufferObj), NO_EXTRA }, /* GL_EXT_depth_bounds_test */ { GL_DEPTH_BOUNDS_TEST_EXT, CONTEXT_BOOL(Depth.BoundsTest), diff --git a/reactos/dll/opengl/mesa/main/histogram.c b/reactos/dll/opengl/mesa/main/histogram.c deleted file mode 100644 index 52cdc7e31fd..00000000000 --- a/reactos/dll/opengl/mesa/main/histogram.c +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 6.3 - * - * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#include - -#include "histogram.h" - -#if FEATURE_histogram - -/********************************************************************** - * API functions - */ - - -/* this is defined below */ -static void GLAPIENTRY _mesa_ResetMinmax(GLenum target); - - -static void GLAPIENTRY -_mesa_GetMinmax(GLenum target, GLboolean reset, GLenum format, - GLenum type, GLvoid *values) -{ - GET_CURRENT_CONTEXT(ctx); - - _mesa_error(ctx, GL_INVALID_OPERATION, "glGetMinmax"); -} - - -static void GLAPIENTRY -_mesa_GetHistogram(GLenum target, GLboolean reset, GLenum format, - GLenum type, GLvoid *values) -{ - GET_CURRENT_CONTEXT(ctx); - - _mesa_error(ctx, GL_INVALID_OPERATION, "glGetHistogram"); -} - - -static void GLAPIENTRY -_mesa_GetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params) -{ - GET_CURRENT_CONTEXT(ctx); - - _mesa_error(ctx, GL_INVALID_OPERATION, "glGetHistogramParameterfv"); -} - - -static void GLAPIENTRY -_mesa_GetHistogramParameteriv(GLenum target, GLenum pname, GLint *params) -{ - GET_CURRENT_CONTEXT(ctx); - - _mesa_error(ctx, GL_INVALID_OPERATION, "glGetHistogramParameteriv"); -} - - -static void GLAPIENTRY -_mesa_GetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params) -{ - GET_CURRENT_CONTEXT(ctx); - - _mesa_error(ctx, GL_INVALID_OPERATION, "glGetMinmaxParameterfv"); -} - - -static void GLAPIENTRY -_mesa_GetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params) -{ - GET_CURRENT_CONTEXT(ctx); - - _mesa_error(ctx, GL_INVALID_OPERATION, "glGetMinmaxParameteriv"); -} - - -static void GLAPIENTRY -_mesa_Histogram(GLenum target, GLsizei width, GLenum internalFormat, GLboolean sink) -{ - GET_CURRENT_CONTEXT(ctx); - - _mesa_error(ctx, GL_INVALID_OPERATION, "glHistogram"); -} - - -static void GLAPIENTRY -_mesa_Minmax(GLenum target, GLenum internalFormat, GLboolean sink) -{ - GET_CURRENT_CONTEXT(ctx); - - _mesa_error(ctx, GL_INVALID_OPERATION, "glMinmax"); -} - - -static void GLAPIENTRY -_mesa_ResetHistogram(GLenum target) -{ - GET_CURRENT_CONTEXT(ctx); - - _mesa_error(ctx, GL_INVALID_OPERATION, "glResetHistogram"); -} - - -static void GLAPIENTRY -_mesa_ResetMinmax(GLenum target) -{ - GET_CURRENT_CONTEXT(ctx); - - _mesa_error(ctx, GL_INVALID_OPERATION, "glResetMinmax"); -} - - -void -_mesa_init_histogram_dispatch(struct _glapi_table *disp) -{ - SET_GetHistogram(disp, _mesa_GetHistogram); - SET_GetHistogramParameterfv(disp, _mesa_GetHistogramParameterfv); - SET_GetHistogramParameteriv(disp, _mesa_GetHistogramParameteriv); - SET_GetMinmax(disp, _mesa_GetMinmax); - SET_GetMinmaxParameterfv(disp, _mesa_GetMinmaxParameterfv); - SET_GetMinmaxParameteriv(disp, _mesa_GetMinmaxParameteriv); - SET_Histogram(disp, _mesa_Histogram); - SET_Minmax(disp, _mesa_Minmax); - SET_ResetHistogram(disp, _mesa_ResetHistogram); - SET_ResetMinmax(disp, _mesa_ResetMinmax); -} - -#endif /* FEATURE_histogram */ diff --git a/reactos/dll/opengl/mesa/main/histogram.h b/reactos/dll/opengl/mesa/main/histogram.h deleted file mode 100644 index d97e74abbad..00000000000 --- a/reactos/dll/opengl/mesa/main/histogram.h +++ /dev/null @@ -1,58 +0,0 @@ -/** - * \file histogram.h - * Histogram. - * - * \if subset - * (No-op) - * - * \endif - */ - -/* - * Mesa 3-D graphics library - * Version: 5.1 - * - * Copyright (C) 1999-2003 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - -#ifndef HISTOGRAM_H -#define HISTOGRAM_H - -#include "compiler.h" -#include "mfeatures.h" - -struct _glapi_table; - -#if FEATURE_histogram - -extern void -_mesa_init_histogram_dispatch(struct _glapi_table *disp); - -#else /* FEATURE_histogram */ - -static inline void -_mesa_init_histogram_dispatch(struct _glapi_table *disp) -{ -} - -#endif /* FEATURE_histogram */ - -#endif /* HISTOGRAM_H */ diff --git a/reactos/dll/opengl/mesa/main/mfeatures.h b/reactos/dll/opengl/mesa/main/mfeatures.h index d432175bbcd..41d3bda35ed 100644 --- a/reactos/dll/opengl/mesa/main/mfeatures.h +++ b/reactos/dll/opengl/mesa/main/mfeatures.h @@ -78,12 +78,6 @@ #define FEATURE_GL !FEATURE_ES #endif -#if defined(IN_DRI_DRIVER) || (FEATURE_GL + FEATURE_ES1 + FEATURE_ES2 > 1) -#define FEATURE_remap_table 1 -#else -#define FEATURE_remap_table 0 -#endif - #define FEATURE_dispatch 1 #define FEATURE_texgen 1 #define FEATURE_userclip 1 diff --git a/reactos/dll/opengl/mesa/main/mtypes.h b/reactos/dll/opengl/mesa/main/mtypes.h index da69c74e7d4..97e8fe240ee 100644 --- a/reactos/dll/opengl/mesa/main/mtypes.h +++ b/reactos/dll/opengl/mesa/main/mtypes.h @@ -1190,39 +1190,6 @@ struct gl_client_array }; -/** - * Collection of vertex arrays. Defined by the GL_APPLE_vertex_array_object - * extension, but a nice encapsulation in any case. - */ -struct gl_array_object -{ - /** Name of the array object as received from glGenVertexArrayAPPLE. */ - GLuint Name; - - GLint RefCount; - _glthread_Mutex Mutex; - - /** - * Has this array object been bound? - */ - GLboolean _Used; - - /** Vertex attribute arrays */ - struct gl_client_array VertexAttrib[VERT_ATTRIB_MAX]; - - /** Mask of VERT_BIT_* values indicating which arrays are enabled */ - GLbitfield64 _Enabled; - - /** - * Min of all enabled arrays' _MaxElement. When arrays reside inside VBOs - * we can determine the max legal (in bounds) glDrawElements array index. - */ - GLuint _MaxElement; - - struct gl_buffer_object *ElementArrayBufferObj; -}; - - /** * Vertex array state */ @@ -1481,17 +1448,6 @@ struct gl_framebuffer void (*Delete)(struct gl_framebuffer *fb); }; - -/** - * Precision info for shader datatypes. See glGetShaderPrecisionFormat(). - */ -struct gl_precision -{ - GLushort RangeMin; /**< min value exponent */ - GLushort RangeMax; /**< max value exponent */ - GLushort Precision; /**< number of mantissa bits */ -}; - /** * Constants which may be overridden by device driver during context creation * but are never changed after that. @@ -1588,7 +1544,6 @@ struct gl_extensions GLboolean EXT_secondary_color; GLboolean EXT_separate_shader_objects; GLboolean EXT_separate_specular_color; - GLboolean EXT_texture3D; GLboolean EXT_texture_env_dot3; GLboolean EXT_texture_filter_anisotropic; GLboolean EXT_texture_integer; @@ -1604,7 +1559,6 @@ struct gl_extensions GLboolean NV_fog_distance; GLboolean NV_light_max_exponent; GLboolean NV_point_sprite; - GLboolean NV_texture_barrier; GLboolean NV_texgen_reflection; GLboolean NV_texture_env_combine4; GLboolean extension_sentinel; @@ -1673,8 +1627,7 @@ struct gl_matrix_stack #define _NEW_BUFFERS (1 << 22) /**< gl_context::Visual, DrawBuffer, */ #define _NEW_CURRENT_ATTRIB (1 << 23) /**< gl_context::Current */ #define _NEW_MULTISAMPLE (1 << 24) /**< gl_context::Multisample */ -#define _NEW_TRACK_MATRIX (1 << 25) /**< gl_context::VertexProgram */ -#define _NEW_BUFFER_OBJECT (1 << 26) +#define _NEW_BUFFER_OBJECT (1 << 25) #define _NEW_ALL ~0 /** diff --git a/reactos/dll/opengl/mesa/main/precomp.h b/reactos/dll/opengl/mesa/main/precomp.h index 1dfbe5aa282..3a3c19054d5 100644 --- a/reactos/dll/opengl/mesa/main/precomp.h +++ b/reactos/dll/opengl/mesa/main/precomp.h @@ -70,7 +70,6 @@ #include "texstate.h" #include "texstorage.h" #include "texstore.h" -#include "texturebarrier.h" #include "varray.h" #include "version.h" #include "viewport.h" diff --git a/reactos/dll/opengl/mesa/main/texturebarrier.c b/reactos/dll/opengl/mesa/main/texturebarrier.c deleted file mode 100644 index c9b77c3f465..00000000000 --- a/reactos/dll/opengl/mesa/main/texturebarrier.c +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright © 2011 Marek Olšák - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ - -/** - * \file texturebarrier.c - * Implementation of glTextureBarrierNV. - * - * \author Marek Olšák - */ - -#include - -static void -_mesa_texture_barrier(struct gl_context *ctx) -{ - /* no-op */ -} - -void -_mesa_init_texture_barrier_functions(struct dd_function_table *driver) -{ - driver->TextureBarrier = _mesa_texture_barrier; -} - -void GLAPIENTRY -_mesa_TextureBarrierNV(void) -{ - GET_CURRENT_CONTEXT(ctx); - ASSERT_OUTSIDE_BEGIN_END(ctx); - - ctx->Driver.TextureBarrier(ctx); -} diff --git a/reactos/dll/opengl/mesa/main/texturebarrier.h b/reactos/dll/opengl/mesa/main/texturebarrier.h deleted file mode 100644 index a84a85b2176..00000000000 --- a/reactos/dll/opengl/mesa/main/texturebarrier.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright © 2011 Marek Olšák - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ - -/** - * \file texturebarrier.h - * GL_NV_texture_barrier - * - * \author Marek Olšák - */ - -#ifndef TEXTUREBARRIER_H -#define TEXTUREBARRIER_H - -#include "glheader.h" - -struct dd_function_table; - -extern void -_mesa_init_texture_barrier_functions(struct dd_function_table *driver); - -extern void GLAPIENTRY -_mesa_TextureBarrierNV(void); - -#endif /* TEXTUREBARRIER_H */ From 340e8ae45f8c0d94033a87a4175d00a4fbd59b39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Tue, 17 Jun 2014 20:01:23 +0000 Subject: [PATCH 204/232] [WIN32K] There is a bug in win32k (who would have thought that?) that consists in holding a winstation spinlock while running PAGED_CODE MmCopyToCaller function, when building the list of desktops of a given window station (the bug is easily triggerable when calling EnumDesktopsW). Since this lock is never used in anyplace but in this function, which, by the way, is just a reader function that fills user buffer, I consider that it is safe to remove this lock. However I want approval from win32k specialists. Hence I just disable the code with a define USE_WINSTA_LOCK. If this lock is really needed, please rewrite the BuildDesktopNameList function !! Otherwise remove this lock and the associated code !! This is a blocker for the shutdown code. svn path=/trunk/; revision=63610 --- reactos/win32ss/user/ntuser/winsta.c | 18 ++++++++++++++++++ reactos/win32ss/user/ntuser/winsta.h | 5 +++++ 2 files changed, 23 insertions(+) diff --git a/reactos/win32ss/user/ntuser/winsta.c b/reactos/win32ss/user/ntuser/winsta.c index 9045f6ffab4..e85a69a87f0 100644 --- a/reactos/win32ss/user/ntuser/winsta.c +++ b/reactos/win32ss/user/ntuser/winsta.c @@ -451,7 +451,9 @@ NtUserCreateWindowStation( /* Initialize the window station */ RtlZeroMemory(WindowStationObject, sizeof(WINSTATION_OBJECT)); +#ifdef USE_WINSTA_LOCK KeInitializeSpinLock(&WindowStationObject->Lock); +#endif InitializeListHead(&WindowStationObject->DesktopListHead); Status = RtlCreateAtomTable(37, &WindowStationObject->AtomTable); WindowStationObject->Name = WindowStationName; @@ -1203,7 +1205,9 @@ BuildDesktopNameList( { NTSTATUS Status; PWINSTATION_OBJECT WindowStation; +#ifdef USE_WINSTA_LOCK KIRQL OldLevel; +#endif PLIST_ENTRY DesktopEntry; PDESKTOP DesktopObject; DWORD EntryCount; @@ -1220,7 +1224,9 @@ BuildDesktopNameList( return Status; } +#ifdef USE_WINSTA_LOCK KeAcquireSpinLock(&WindowStation->Lock, &OldLevel); +#endif /* * Count the required size of buffer. @@ -1242,7 +1248,9 @@ BuildDesktopNameList( Status = MmCopyToCaller(pRequiredSize, &ReturnLength, sizeof(ULONG)); if (! NT_SUCCESS(Status)) { +#ifdef USE_WINSTA_LOCK KeReleaseSpinLock(&WindowStation->Lock, OldLevel); +#endif ObDereferenceObject(WindowStation); return STATUS_BUFFER_TOO_SMALL; } @@ -1253,7 +1261,9 @@ BuildDesktopNameList( */ if (dwSize < ReturnLength) { +#ifdef USE_WINSTA_LOCK KeReleaseSpinLock(&WindowStation->Lock, OldLevel); +#endif ObDereferenceObject(WindowStation); return STATUS_BUFFER_TOO_SMALL; } @@ -1264,7 +1274,9 @@ BuildDesktopNameList( Status = MmCopyToCaller(lpBuffer, &EntryCount, sizeof(DWORD)); if (! NT_SUCCESS(Status)) { +#ifdef USE_WINSTA_LOCK KeReleaseSpinLock(&WindowStation->Lock, OldLevel); +#endif ObDereferenceObject(WindowStation); return Status; } @@ -1280,7 +1292,9 @@ BuildDesktopNameList( Status = MmCopyToCaller(lpBuffer, DesktopName.Buffer, DesktopName.Length); if (! NT_SUCCESS(Status)) { +#ifdef USE_WINSTA_LOCK KeReleaseSpinLock(&WindowStation->Lock, OldLevel); +#endif ObDereferenceObject(WindowStation); return Status; } @@ -1288,7 +1302,9 @@ BuildDesktopNameList( Status = MmCopyToCaller(lpBuffer, &NullWchar, sizeof(WCHAR)); if (! NT_SUCCESS(Status)) { +#ifdef USE_WINSTA_LOCK KeReleaseSpinLock(&WindowStation->Lock, OldLevel); +#endif ObDereferenceObject(WindowStation); return Status; } @@ -1298,7 +1314,9 @@ BuildDesktopNameList( /* * Clean up */ +#ifdef USE_WINSTA_LOCK KeReleaseSpinLock(&WindowStation->Lock, OldLevel); +#endif ObDereferenceObject(WindowStation); return STATUS_SUCCESS; diff --git a/reactos/win32ss/user/ntuser/winsta.h b/reactos/win32ss/user/ntuser/winsta.h index 2cc12caae14..3ece25179f1 100644 --- a/reactos/win32ss/user/ntuser/winsta.h +++ b/reactos/win32ss/user/ntuser/winsta.h @@ -7,11 +7,16 @@ #define WSS_LOCKED (1) #define WSS_NOINTERACTIVE (2) +// Uncomment for using WinSta spinlock +// #define USE_WINSTA_LOCK + typedef struct _WINSTATION_OBJECT { DWORD dwSessionId; +#ifdef USE_WINSTA_LOCK KSPIN_LOCK Lock; +#endif UNICODE_STRING Name; LIST_ENTRY DesktopListHead; PRTL_ATOM_TABLE AtomTable; From df0cd9c93db472b1bb0bc127930af31c6316700e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Tue, 17 Jun 2014 20:47:55 +0000 Subject: [PATCH 205/232] [WIN32K]: TWOPARAM_ROUTINE_SETCARETPOS does exist in windows, and we also have it in our SimpleCallRoutines enumeration. svn path=/trunk/; revision=63611 --- reactos/win32ss/include/ntuser.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/reactos/win32ss/include/ntuser.h b/reactos/win32ss/include/ntuser.h index e0f8bdee00b..3a80945126a 100644 --- a/reactos/win32ss/include/ntuser.h +++ b/reactos/win32ss/include/ntuser.h @@ -70,7 +70,6 @@ typedef enum _USERTHREADINFOCLASS UserThreadWOWInformation, UserThreadHungStatus, UserThreadInitiateShutdown, - UserThreadEndShutdown, UserThreadUseActiveDesktop, UserThreadUseDesktop, @@ -3385,7 +3384,6 @@ typedef struct tagKMDDELPARAM #define MSQ_STATE_MENUOWNER 0x4 #define MSQ_STATE_MOVESIZE 0x5 #define MSQ_STATE_CARET 0x6 -#define TWOPARAM_ROUTINE_SETCARETPOS 0xfffd0060 #define TWOPARAM_ROUTINE_ROS_UPDATEUISTATE 0x1004 #define HWNDPARAM_ROUTINE_ROS_NOTIFYWINEVENT 0x1005 From ecf5e374effd942d57863008263e265d9c4a8ad6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Tue, 17 Jun 2014 20:51:04 +0000 Subject: [PATCH 206/232] [WIN32K] The winstation spinlock is a leftover of some old code. It can be removed. <+smiley1_> hbelusca: yeah the spinlock should be removed <@hbelusca> smiley1_ - was it from old code? <+smiley1_> hbelusca: go on svn path=/trunk/; revision=63612 --- reactos/win32ss/user/ntuser/winsta.c | 31 +--------------------------- reactos/win32ss/user/ntuser/winsta.h | 6 ------ 2 files changed, 1 insertion(+), 36 deletions(-) diff --git a/reactos/win32ss/user/ntuser/winsta.c b/reactos/win32ss/user/ntuser/winsta.c index e85a69a87f0..8fcc7b7a9a2 100644 --- a/reactos/win32ss/user/ntuser/winsta.c +++ b/reactos/win32ss/user/ntuser/winsta.c @@ -451,9 +451,6 @@ NtUserCreateWindowStation( /* Initialize the window station */ RtlZeroMemory(WindowStationObject, sizeof(WINSTATION_OBJECT)); -#ifdef USE_WINSTA_LOCK - KeInitializeSpinLock(&WindowStationObject->Lock); -#endif InitializeListHead(&WindowStationObject->DesktopListHead); Status = RtlCreateAtomTable(37, &WindowStationObject->AtomTable); WindowStationObject->Name = WindowStationName; @@ -1205,9 +1202,6 @@ BuildDesktopNameList( { NTSTATUS Status; PWINSTATION_OBJECT WindowStation; -#ifdef USE_WINSTA_LOCK - KIRQL OldLevel; -#endif PLIST_ENTRY DesktopEntry; PDESKTOP DesktopObject; DWORD EntryCount; @@ -1224,10 +1218,6 @@ BuildDesktopNameList( return Status; } -#ifdef USE_WINSTA_LOCK - KeAcquireSpinLock(&WindowStation->Lock, &OldLevel); -#endif - /* * Count the required size of buffer. */ @@ -1248,9 +1238,6 @@ BuildDesktopNameList( Status = MmCopyToCaller(pRequiredSize, &ReturnLength, sizeof(ULONG)); if (! NT_SUCCESS(Status)) { -#ifdef USE_WINSTA_LOCK - KeReleaseSpinLock(&WindowStation->Lock, OldLevel); -#endif ObDereferenceObject(WindowStation); return STATUS_BUFFER_TOO_SMALL; } @@ -1261,9 +1248,6 @@ BuildDesktopNameList( */ if (dwSize < ReturnLength) { -#ifdef USE_WINSTA_LOCK - KeReleaseSpinLock(&WindowStation->Lock, OldLevel); -#endif ObDereferenceObject(WindowStation); return STATUS_BUFFER_TOO_SMALL; } @@ -1274,9 +1258,6 @@ BuildDesktopNameList( Status = MmCopyToCaller(lpBuffer, &EntryCount, sizeof(DWORD)); if (! NT_SUCCESS(Status)) { -#ifdef USE_WINSTA_LOCK - KeReleaseSpinLock(&WindowStation->Lock, OldLevel); -#endif ObDereferenceObject(WindowStation); return Status; } @@ -1292,9 +1273,6 @@ BuildDesktopNameList( Status = MmCopyToCaller(lpBuffer, DesktopName.Buffer, DesktopName.Length); if (! NT_SUCCESS(Status)) { -#ifdef USE_WINSTA_LOCK - KeReleaseSpinLock(&WindowStation->Lock, OldLevel); -#endif ObDereferenceObject(WindowStation); return Status; } @@ -1302,9 +1280,6 @@ BuildDesktopNameList( Status = MmCopyToCaller(lpBuffer, &NullWchar, sizeof(WCHAR)); if (! NT_SUCCESS(Status)) { -#ifdef USE_WINSTA_LOCK - KeReleaseSpinLock(&WindowStation->Lock, OldLevel); -#endif ObDereferenceObject(WindowStation); return Status; } @@ -1312,13 +1287,9 @@ BuildDesktopNameList( } /* - * Clean up + * Clean up and return */ -#ifdef USE_WINSTA_LOCK - KeReleaseSpinLock(&WindowStation->Lock, OldLevel); -#endif ObDereferenceObject(WindowStation); - return STATUS_SUCCESS; } diff --git a/reactos/win32ss/user/ntuser/winsta.h b/reactos/win32ss/user/ntuser/winsta.h index 3ece25179f1..04fd0078001 100644 --- a/reactos/win32ss/user/ntuser/winsta.h +++ b/reactos/win32ss/user/ntuser/winsta.h @@ -7,16 +7,10 @@ #define WSS_LOCKED (1) #define WSS_NOINTERACTIVE (2) -// Uncomment for using WinSta spinlock -// #define USE_WINSTA_LOCK - typedef struct _WINSTATION_OBJECT { DWORD dwSessionId; -#ifdef USE_WINSTA_LOCK - KSPIN_LOCK Lock; -#endif UNICODE_STRING Name; LIST_ENTRY DesktopListHead; PRTL_ATOM_TABLE AtomTable; From dfb4d747d44b263d63f548a2026868588ba27102 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Gardou?= Date: Wed, 18 Jun 2014 15:58:59 +0000 Subject: [PATCH 207/232] [OPENGL32/MESA] - Get rid of EXT_secondary_color, ARB_imaging and a few others support CORE-7499 svn path=/trunk/; revision=63613 --- .../opengl/mesa/drivers/common/driverfuncs.c | 3 - reactos/dll/opengl/mesa/drivers/common/meta.c | 1 - reactos/dll/opengl/mesa/main/CMakeLists.txt | 2 - reactos/dll/opengl/mesa/main/api_arrayelt.c | 21 +- reactos/dll/opengl/mesa/main/api_exec.c | 36 - reactos/dll/opengl/mesa/main/api_loopback.c | 123 --- reactos/dll/opengl/mesa/main/api_validate.c | 61 -- reactos/dll/opengl/mesa/main/api_validate.h | 6 - reactos/dll/opengl/mesa/main/attrib.c | 92 +-- reactos/dll/opengl/mesa/main/blend.c | 210 +----- reactos/dll/opengl/mesa/main/blend.h | 18 - reactos/dll/opengl/mesa/main/bufferobj.c | 15 - reactos/dll/opengl/mesa/main/colortab.c | 140 ---- reactos/dll/opengl/mesa/main/colortab.h | 76 -- reactos/dll/opengl/mesa/main/config.h | 3 - reactos/dll/opengl/mesa/main/context.c | 7 +- reactos/dll/opengl/mesa/main/convolve.c | 173 ----- reactos/dll/opengl/mesa/main/convolve.h | 51 -- reactos/dll/opengl/mesa/main/dd.h | 18 - reactos/dll/opengl/mesa/main/dispatch.h | 540 ------------- reactos/dll/opengl/mesa/main/dlist.c | 712 +----------------- reactos/dll/opengl/mesa/main/enable.c | 22 +- reactos/dll/opengl/mesa/main/fog.c | 1 - reactos/dll/opengl/mesa/main/get.c | 51 +- reactos/dll/opengl/mesa/main/get.h | 3 - reactos/dll/opengl/mesa/main/getstring.c | 37 +- reactos/dll/opengl/mesa/main/imports.c | 4 +- reactos/dll/opengl/mesa/main/light.c | 20 +- reactos/dll/opengl/mesa/main/mtypes.h | 77 +- reactos/dll/opengl/mesa/main/precomp.h | 2 - reactos/dll/opengl/mesa/main/rastpos.c | 17 +- reactos/dll/opengl/mesa/main/state.c | 21 +- reactos/dll/opengl/mesa/main/state.h | 17 - reactos/dll/opengl/mesa/main/varray.c | 38 +- reactos/dll/opengl/mesa/main/varray.h | 9 - reactos/dll/opengl/mesa/main/vtxfmt.c | 3 - reactos/dll/opengl/mesa/swrast/s_aaline.c | 3 - reactos/dll/opengl/mesa/swrast/s_aatriangle.c | 3 +- reactos/dll/opengl/mesa/swrast/s_alpha.c | 2 +- reactos/dll/opengl/mesa/swrast/s_blend.c | 402 +--------- reactos/dll/opengl/mesa/swrast/s_context.c | 52 +- reactos/dll/opengl/mesa/swrast/s_context.h | 1 - reactos/dll/opengl/mesa/swrast/s_copypix.c | 4 +- reactos/dll/opengl/mesa/swrast/s_drawpix.c | 4 +- reactos/dll/opengl/mesa/swrast/s_feedback.c | 2 +- reactos/dll/opengl/mesa/swrast/s_fog.c | 8 +- reactos/dll/opengl/mesa/swrast/s_lines.c | 41 +- reactos/dll/opengl/mesa/swrast/s_linetemp.h | 12 - reactos/dll/opengl/mesa/swrast/s_logic.c | 2 +- reactos/dll/opengl/mesa/swrast/s_masking.c | 2 +- reactos/dll/opengl/mesa/swrast/s_points.c | 27 - reactos/dll/opengl/mesa/swrast/s_span.c | 92 +-- reactos/dll/opengl/mesa/swrast/s_triangle.c | 52 -- reactos/dll/opengl/mesa/swrast/s_tritemp.h | 64 +- reactos/dll/opengl/mesa/swrast/s_zoom.c | 14 +- reactos/dll/opengl/mesa/swrast/swrast.h | 4 +- .../dll/opengl/mesa/swrast_setup/ss_context.c | 10 +- .../opengl/mesa/swrast_setup/ss_triangle.c | 8 - .../dll/opengl/mesa/swrast_setup/ss_tritmp.h | 50 +- reactos/dll/opengl/mesa/tnl/t_context.c | 5 +- reactos/dll/opengl/mesa/tnl/t_context.h | 63 +- reactos/dll/opengl/mesa/tnl/t_draw.c | 1 - reactos/dll/opengl/mesa/tnl/t_rasterpos.c | 22 +- reactos/dll/opengl/mesa/tnl/t_vb_light.c | 12 +- reactos/dll/opengl/mesa/tnl/t_vb_lighttmp.h | 22 +- .../dll/opengl/mesa/tnl/t_vertex_generic.c | 17 +- reactos/dll/opengl/mesa/vbo/vbo_attrib.h | 39 +- reactos/dll/opengl/mesa/vbo/vbo_attrib_tmp.h | 24 +- reactos/dll/opengl/mesa/vbo/vbo_exec_api.c | 10 +- reactos/dll/opengl/mesa/vbo/vbo_exec_array.c | 200 ----- reactos/dll/opengl/mesa/vbo/vbo_exec_eval.c | 4 +- reactos/dll/opengl/mesa/vbo/vbo_noop.c | 22 - reactos/dll/opengl/mesa/vbo/vbo_save_api.c | 38 - reactos/dll/opengl/mesa/vbo/vbo_save_draw.c | 2 +- reactos/dll/opengl/mesa/x86/gen_matypes.c | 1 - reactos/dll/opengl/mesa/x86/mmx.h | 10 - reactos/dll/opengl/mesa/x86/mmx_blend.S | 64 -- 77 files changed, 292 insertions(+), 3753 deletions(-) delete mode 100644 reactos/dll/opengl/mesa/main/colortab.c delete mode 100644 reactos/dll/opengl/mesa/main/colortab.h delete mode 100644 reactos/dll/opengl/mesa/main/convolve.c delete mode 100644 reactos/dll/opengl/mesa/main/convolve.h diff --git a/reactos/dll/opengl/mesa/drivers/common/driverfuncs.c b/reactos/dll/opengl/mesa/drivers/common/driverfuncs.c index 8cfb26a4ad3..361f7403bc8 100644 --- a/reactos/dll/opengl/mesa/drivers/common/driverfuncs.c +++ b/reactos/dll/opengl/mesa/drivers/common/driverfuncs.c @@ -100,9 +100,6 @@ _mesa_init_driver_functions(struct dd_function_table *driver) /* simple state commands */ driver->AlphaFunc = NULL; - driver->BlendColor = NULL; - driver->BlendEquationSeparate = NULL; - driver->BlendFuncSeparate = NULL; driver->ClearColor = NULL; driver->ClearDepth = NULL; driver->ClearStencil = NULL; diff --git a/reactos/dll/opengl/mesa/drivers/common/meta.c b/reactos/dll/opengl/mesa/drivers/common/meta.c index e0957feb1fb..e9b44f0914e 100644 --- a/reactos/dll/opengl/mesa/drivers/common/meta.c +++ b/reactos/dll/opengl/mesa/drivers/common/meta.c @@ -37,7 +37,6 @@ #include "main/blend.h" #include "main/bufferobj.h" #include "main/buffers.h" -#include "main/colortab.h" #include "main/context.h" #include "main/depth.h" #include "main/enable.h" diff --git a/reactos/dll/opengl/mesa/main/CMakeLists.txt b/reactos/dll/opengl/mesa/main/CMakeLists.txt index 15da07c8f97..b5218e47ada 100644 --- a/reactos/dll/opengl/mesa/main/CMakeLists.txt +++ b/reactos/dll/opengl/mesa/main/CMakeLists.txt @@ -11,9 +11,7 @@ list(APPEND SOURCE buffers.c clear.c clip.c - colortab.c context.c - convolve.c cpuinfo.c depth.c dlist.c diff --git a/reactos/dll/opengl/mesa/main/api_arrayelt.c b/reactos/dll/opengl/mesa/main/api_arrayelt.c index 87b98439731..1fa1d41b67d 100644 --- a/reactos/dll/opengl/mesa/main/api_arrayelt.c +++ b/reactos/dll/opengl/mesa/main/api_arrayelt.c @@ -157,7 +157,6 @@ static const int NormalFuncs[NUM_TYPES] = { }; /* Note: _gloffset_* for these may not be a compile-time constant. */ -static int SecondaryColorFuncs[NUM_TYPES]; static int FogCoordFuncs[NUM_TYPES]; @@ -673,16 +672,6 @@ GLboolean _ae_create_context( struct gl_context *ctx ) if (ctx->aelt_context) return GL_TRUE; - /* These _gloffset_* values may not be compile-time constants */ - SecondaryColorFuncs[0] = _gloffset_SecondaryColor3bvEXT; - SecondaryColorFuncs[1] = _gloffset_SecondaryColor3ubvEXT; - SecondaryColorFuncs[2] = _gloffset_SecondaryColor3svEXT; - SecondaryColorFuncs[3] = _gloffset_SecondaryColor3usvEXT; - SecondaryColorFuncs[4] = _gloffset_SecondaryColor3ivEXT; - SecondaryColorFuncs[5] = _gloffset_SecondaryColor3uivEXT; - SecondaryColorFuncs[6] = _gloffset_SecondaryColor3fvEXT; - SecondaryColorFuncs[7] = _gloffset_SecondaryColor3dvEXT; - FogCoordFuncs[0] = -1; FogCoordFuncs[1] = -1; FogCoordFuncs[2] = -1; @@ -756,18 +745,12 @@ static void _ae_update_state( struct gl_context *ctx ) check_vbo(actx, aa->array->BufferObj); aa++; } - if (ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR0].Enabled) { - aa->array = &ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR0]; + if (ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR].Enabled) { + aa->array = &ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR]; aa->offset = ColorFuncs[aa->array->Size-3][TYPE_IDX(aa->array->Type)]; check_vbo(actx, aa->array->BufferObj); aa++; } - if (ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR1].Enabled) { - aa->array = &ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR1]; - aa->offset = SecondaryColorFuncs[TYPE_IDX(aa->array->Type)]; - check_vbo(actx, aa->array->BufferObj); - aa++; - } if (ctx->Array.VertexAttrib[VERT_ATTRIB_FOG].Enabled) { aa->array = &ctx->Array.VertexAttrib[VERT_ATTRIB_FOG]; aa->offset = FogCoordFuncs[TYPE_IDX(aa->array->Type)]; diff --git a/reactos/dll/opengl/mesa/main/api_exec.c b/reactos/dll/opengl/mesa/main/api_exec.c index a10d6c07c95..3e597024e94 100644 --- a/reactos/dll/opengl/mesa/main/api_exec.c +++ b/reactos/dll/opengl/mesa/main/api_exec.c @@ -168,7 +168,6 @@ _mesa_create_exec_table(void) SET_ReadPixels(exec, _mesa_ReadPixels); SET_Rotated(exec, _mesa_Rotated); SET_Scaled(exec, _mesa_Scaled); - SET_SecondaryColorPointerEXT(exec, _mesa_SecondaryColorPointerEXT); SET_TexEnvf(exec, _mesa_TexEnvf); SET_TexEnviv(exec, _mesa_TexEnviv); @@ -206,33 +205,11 @@ _mesa_create_exec_table(void) SET_VertexPointer(exec, _mesa_VertexPointer); #endif - /* OpenGL 1.2 GL_ARB_imaging */ - SET_BlendColor(exec, _mesa_BlendColor); - SET_BlendEquation(exec, _mesa_BlendEquation); - SET_BlendEquationSeparateEXT(exec, _mesa_BlendEquationSeparateEXT); - - _mesa_init_colortable_dispatch(exec); - _mesa_init_convolve_dispatch(exec); - - /* 2. GL_EXT_blend_color */ -#if 0 -/* SET_BlendColorEXT(exec, _mesa_BlendColorEXT); */ -#endif - /* 3. GL_EXT_polygon_offset */ #if _HAVE_FULL_GL SET_PolygonOffsetEXT(exec, _mesa_PolygonOffsetEXT); #endif - /* 14. SGI_color_table */ -#if 0 - SET_ColorTableSGI(exec, _mesa_ColorTable); - SET_ColorSubTableSGI(exec, _mesa_ColorSubTable); - SET_GetColorTableSGI(exec, _mesa_GetColorTable); - SET_GetColorTableParameterfvSGI(exec, _mesa_GetColorTableParameterfv); - SET_GetColorTableParameterivSGI(exec, _mesa_GetColorTableParameteriv); -#endif - /* 30. GL_EXT_vertex_array */ #if _HAVE_FULL_GL SET_ColorPointerEXT(exec, _mesa_ColorPointerEXT); @@ -243,11 +220,6 @@ _mesa_create_exec_table(void) SET_VertexPointerEXT(exec, _mesa_VertexPointerEXT); #endif - /* 37. GL_EXT_blend_minmax */ -#if 0 - SET_BlendEquationEXT(exec, _mesa_BlendEquationEXT); -#endif - /* 54. GL_EXT_point_parameters */ #if _HAVE_FULL_GL SET_PointParameterfEXT(exec, _mesa_PointParameterf); @@ -260,11 +232,6 @@ _mesa_create_exec_table(void) SET_UnlockArraysEXT(exec, _mesa_UnlockArraysEXT); #endif - /* 173. GL_INGR_blend_func_separate */ -#if _HAVE_FULL_GL - SET_BlendFuncSeparateEXT(exec, _mesa_BlendFuncSeparateEXT); -#endif - /* 197. GL_MESA_window_pos */ /* part of _mesa_init_rastpos_dispatch(exec); */ @@ -325,9 +292,6 @@ _mesa_create_exec_table(void) SET_TexParameterIivEXT(exec, _mesa_TexParameterIiv); SET_TexParameterIuivEXT(exec, _mesa_TexParameterIuiv); - /* GL 3.0 (functions not covered by other extensions) */ - SET_GetStringi(exec, _mesa_GetStringi); - /* GL_ARB_texture_storage */ SET_TexStorage1D(exec, _mesa_TexStorage1D); SET_TexStorage2D(exec, _mesa_TexStorage2D); diff --git a/reactos/dll/opengl/mesa/main/api_loopback.c b/reactos/dll/opengl/mesa/main/api_loopback.c index d2dca88822f..35e289356c6 100644 --- a/reactos/dll/opengl/mesa/main/api_loopback.c +++ b/reactos/dll/opengl/mesa/main/api_loopback.c @@ -55,7 +55,6 @@ #define RECTF(a,b,c,d) CALL_Rectf(GET_DISPATCH(), (a,b,c,d)) #define FOGCOORDF(x) CALL_FogCoordfEXT(GET_DISPATCH(), (x)) -#define SECONDARYCOLORF(a,b,c) CALL_SecondaryColor3fEXT(GET_DISPATCH(), (a,b,c)) #define ATTRIB1NV(index,x) CALL_VertexAttrib1fNV(GET_DISPATCH(), (index,x)) #define ATTRIB2NV(index,x,y) CALL_VertexAttrib2fNV(GET_DISPATCH(), (index,x,y)) @@ -765,113 +764,6 @@ loopback_Rectsv(const GLshort *v1, const GLshort *v2) RECTF((GLfloat) v1[0], (GLfloat) v1[1], (GLfloat) v2[0], (GLfloat) v2[1]); } -static void GLAPIENTRY -loopback_SecondaryColor3bEXT_f( GLbyte red, GLbyte green, GLbyte blue ) -{ - SECONDARYCOLORF( BYTE_TO_FLOAT(red), - BYTE_TO_FLOAT(green), - BYTE_TO_FLOAT(blue) ); -} - -static void GLAPIENTRY -loopback_SecondaryColor3dEXT_f( GLdouble red, GLdouble green, GLdouble blue ) -{ - SECONDARYCOLORF( (GLfloat) red, (GLfloat) green, (GLfloat) blue ); -} - -static void GLAPIENTRY -loopback_SecondaryColor3iEXT_f( GLint red, GLint green, GLint blue ) -{ - SECONDARYCOLORF( INT_TO_FLOAT(red), - INT_TO_FLOAT(green), - INT_TO_FLOAT(blue)); -} - -static void GLAPIENTRY -loopback_SecondaryColor3sEXT_f( GLshort red, GLshort green, GLshort blue ) -{ - SECONDARYCOLORF(SHORT_TO_FLOAT(red), - SHORT_TO_FLOAT(green), - SHORT_TO_FLOAT(blue)); -} - -static void GLAPIENTRY -loopback_SecondaryColor3uiEXT_f( GLuint red, GLuint green, GLuint blue ) -{ - SECONDARYCOLORF(UINT_TO_FLOAT(red), - UINT_TO_FLOAT(green), - UINT_TO_FLOAT(blue)); -} - -static void GLAPIENTRY -loopback_SecondaryColor3usEXT_f( GLushort red, GLushort green, GLushort blue ) -{ - SECONDARYCOLORF(USHORT_TO_FLOAT(red), - USHORT_TO_FLOAT(green), - USHORT_TO_FLOAT(blue)); -} - -static void GLAPIENTRY -loopback_SecondaryColor3ubEXT_f( GLubyte red, GLubyte green, GLubyte blue ) -{ - SECONDARYCOLORF(UBYTE_TO_FLOAT(red), - UBYTE_TO_FLOAT(green), - UBYTE_TO_FLOAT(blue)); -} - -static void GLAPIENTRY -loopback_SecondaryColor3bvEXT_f( const GLbyte *v ) -{ - SECONDARYCOLORF(BYTE_TO_FLOAT(v[0]), - BYTE_TO_FLOAT(v[1]), - BYTE_TO_FLOAT(v[2])); -} - -static void GLAPIENTRY -loopback_SecondaryColor3dvEXT_f( const GLdouble *v ) -{ - SECONDARYCOLORF( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] ); -} -static void GLAPIENTRY -loopback_SecondaryColor3ivEXT_f( const GLint *v ) -{ - SECONDARYCOLORF(INT_TO_FLOAT(v[0]), - INT_TO_FLOAT(v[1]), - INT_TO_FLOAT(v[2])); -} - -static void GLAPIENTRY -loopback_SecondaryColor3svEXT_f( const GLshort *v ) -{ - SECONDARYCOLORF(SHORT_TO_FLOAT(v[0]), - SHORT_TO_FLOAT(v[1]), - SHORT_TO_FLOAT(v[2])); -} - -static void GLAPIENTRY -loopback_SecondaryColor3uivEXT_f( const GLuint *v ) -{ - SECONDARYCOLORF(UINT_TO_FLOAT(v[0]), - UINT_TO_FLOAT(v[1]), - UINT_TO_FLOAT(v[2])); -} - -static void GLAPIENTRY -loopback_SecondaryColor3usvEXT_f( const GLushort *v ) -{ - SECONDARYCOLORF(USHORT_TO_FLOAT(v[0]), - USHORT_TO_FLOAT(v[1]), - USHORT_TO_FLOAT(v[2])); -} - -static void GLAPIENTRY -loopback_SecondaryColor3ubvEXT_f( const GLubyte *v ) -{ - SECONDARYCOLORF(UBYTE_TO_FLOAT(v[0]), - UBYTE_TO_FLOAT(v[1]), - UBYTE_TO_FLOAT(v[2])); -} - /* * GL_NV_vertex_program: @@ -1026,21 +918,6 @@ _mesa_loopback_init_api_table( struct _glapi_table *dest ) SET_Color4uiv(dest, loopback_Color4uiv_f); SET_Color4usv(dest, loopback_Color4usv_f); SET_Color4ubv(dest, loopback_Color4ubv_f); - - SET_SecondaryColor3bEXT(dest, loopback_SecondaryColor3bEXT_f); - SET_SecondaryColor3dEXT(dest, loopback_SecondaryColor3dEXT_f); - SET_SecondaryColor3iEXT(dest, loopback_SecondaryColor3iEXT_f); - SET_SecondaryColor3sEXT(dest, loopback_SecondaryColor3sEXT_f); - SET_SecondaryColor3uiEXT(dest, loopback_SecondaryColor3uiEXT_f); - SET_SecondaryColor3usEXT(dest, loopback_SecondaryColor3usEXT_f); - SET_SecondaryColor3ubEXT(dest, loopback_SecondaryColor3ubEXT_f); - SET_SecondaryColor3bvEXT(dest, loopback_SecondaryColor3bvEXT_f); - SET_SecondaryColor3dvEXT(dest, loopback_SecondaryColor3dvEXT_f); - SET_SecondaryColor3ivEXT(dest, loopback_SecondaryColor3ivEXT_f); - SET_SecondaryColor3svEXT(dest, loopback_SecondaryColor3svEXT_f); - SET_SecondaryColor3uivEXT(dest, loopback_SecondaryColor3uivEXT_f); - SET_SecondaryColor3usvEXT(dest, loopback_SecondaryColor3usvEXT_f); - SET_SecondaryColor3ubvEXT(dest, loopback_SecondaryColor3ubvEXT_f); SET_EdgeFlagv(dest, loopback_EdgeFlagv); diff --git a/reactos/dll/opengl/mesa/main/api_validate.c b/reactos/dll/opengl/mesa/main/api_validate.c index 2e57c524c39..88345803435 100644 --- a/reactos/dll/opengl/mesa/main/api_validate.c +++ b/reactos/dll/opengl/mesa/main/api_validate.c @@ -218,67 +218,6 @@ _mesa_validate_DrawElements(struct gl_context *ctx, } -/** - * Error checking for glDrawRangeElements(). Includes parameter checking - * and VBO bounds checking. - * \return GL_TRUE if OK to render, GL_FALSE if error found - */ -GLboolean -_mesa_validate_DrawRangeElements(struct gl_context *ctx, GLenum mode, - GLuint start, GLuint end, - GLsizei count, GLenum type, - const GLvoid *indices) -{ - ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, GL_FALSE); - - if (count <= 0) { - if (count < 0) - _mesa_error(ctx, GL_INVALID_VALUE, "glDrawRangeElements(count)" ); - return GL_FALSE; - } - - if (!_mesa_valid_prim_mode(ctx, mode)) { - _mesa_error(ctx, GL_INVALID_ENUM, "glDrawRangeElements(mode)" ); - return GL_FALSE; - } - - if (end < start) { - _mesa_error(ctx, GL_INVALID_VALUE, "glDrawRangeElements(endArray.ElementArrayBufferObj)) { - /* use indices in the buffer object */ - /* make sure count doesn't go outside buffer bounds */ - if (index_bytes(type, count) > ctx->Array.ElementArrayBufferObj->Size) { - _mesa_warning(ctx, "glDrawRangeElements index out of buffer bounds"); - return GL_FALSE; - } - } - else { - /* not using a VBO */ - if (!indices) - return GL_FALSE; - } - - if (!check_index_bounds(ctx, count, type, indices)) - return GL_FALSE; - - return GL_TRUE; -} - - /** * Called from the tnl module to error check the function parameters and * verify that we really can draw something. diff --git a/reactos/dll/opengl/mesa/main/api_validate.h b/reactos/dll/opengl/mesa/main/api_validate.h index ea7cc25d61c..69be15625e7 100644 --- a/reactos/dll/opengl/mesa/main/api_validate.h +++ b/reactos/dll/opengl/mesa/main/api_validate.h @@ -55,10 +55,4 @@ _mesa_validate_DrawElements(struct gl_context *ctx, GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); -extern GLboolean -_mesa_validate_DrawRangeElements(struct gl_context *ctx, GLenum mode, - GLuint start, GLuint end, - GLsizei count, GLenum type, - const GLvoid *indices); - #endif diff --git a/reactos/dll/opengl/mesa/main/attrib.c b/reactos/dll/opengl/mesa/main/attrib.c index e3881373290..d5df1dc7b75 100644 --- a/reactos/dll/opengl/mesa/main/attrib.c +++ b/reactos/dll/opengl/mesa/main/attrib.c @@ -723,25 +723,7 @@ _mesa_PopAttrib(void) _mesa_set_enable(ctx, GL_BLEND, (color->BlendEnabled & 1)); } /* set same blend modes for all buffers */ - _mesa_BlendFuncSeparateEXT(color->SrcRGB, - color->DstRGB, - color->SrcA, - color->DstA); - /* This special case is because glBlendEquationSeparateEXT - * cannot take GL_LOGIC_OP as a parameter. - */ - if (color->EquationRGB == color->EquationA) { - _mesa_BlendEquation(color->EquationRGB); - } - else { - _mesa_BlendEquationSeparateEXT( - color->EquationRGB, - color->EquationA); - } - _mesa_BlendColor(color->BlendColor[0], - color->BlendColor[1], - color->BlendColor[2], - color->BlendColor[3]); + _mesa_BlendFunc(color->SrcFactor, color->DstFactor); _mesa_LogicOp(color->LogicOp); _mesa_set_enable(ctx, GL_COLOR_LOGIC_OP, color->ColorLogicOpEnabled); @@ -856,8 +838,6 @@ _mesa_PopAttrib(void) (GLfloat) light->Model.LocalViewer); _mesa_LightModelf(GL_LIGHT_MODEL_TWO_SIDE, (GLfloat) light->Model.TwoSide); - _mesa_LightModelf(GL_LIGHT_MODEL_COLOR_CONTROL, - (GLfloat) light->Model.ColorControl); /* shade model */ _mesa_ShadeModel(light->ShadeModel); /* color material */ @@ -1063,33 +1043,30 @@ copy_pixelstore(struct gl_context *ctx, static void copy_array_attrib(struct gl_context *ctx, struct gl_array_attrib *dest, - struct gl_array_attrib *src, - GLboolean vbo_deleted) + struct gl_array_attrib *src) { - /* skip ArrayObj */ - /* skip DefaultArrayObj, Objects */ - dest->LockFirst = src->LockFirst; - dest->LockCount = src->LockCount; - /* skip NewState */ - /* skip RebindArrays */ + GLuint i; - if (!vbo_deleted) - { - GLuint i; + /* skip ArrayObj */ + /* skip DefaultArrayObj, Objects */ + dest->LockFirst = src->LockFirst; + dest->LockCount = src->LockCount; + /* skip NewState */ + /* skip RebindArrays */ - /* skip Name */ - /* skip RefCount */ - for (i = 0; i < Elements(src->VertexAttrib); i++) - _mesa_copy_client_array(ctx, &dest->VertexAttrib[i], &src->VertexAttrib[i]); + /* skip Name */ + /* skip RefCount */ - /* _Enabled must be the same than on push */ - dest->_Enabled = src->_Enabled; - dest->_MaxElement = src->_MaxElement; - } + for (i = 0; i < Elements(src->VertexAttrib); i++) + _mesa_copy_client_array(ctx, &dest->VertexAttrib[i], &src->VertexAttrib[i]); - /* skip ArrayBufferObj */ - /* skip ElementArrayBufferObj */ + /* _Enabled must be the same than on push */ + dest->_Enabled = src->_Enabled; + dest->_MaxElement = src->_MaxElement; + + /* skip ArrayBufferObj */ + /* skip ElementArrayBufferObj */ } /** @@ -1101,11 +1078,9 @@ save_array_attrib(struct gl_context *ctx, struct gl_array_attrib *src) { /* And copy all of the rest. */ - copy_array_attrib(ctx, dest, src, GL_FALSE); + copy_array_attrib(ctx, dest, src); /* Just reference them here */ - _mesa_reference_buffer_object(ctx, &dest->ArrayBufferObj, - src->ArrayBufferObj); _mesa_reference_buffer_object(ctx, &dest->ElementArrayBufferObj, src->ElementArrayBufferObj); } @@ -1118,17 +1093,7 @@ restore_array_attrib(struct gl_context *ctx, struct gl_array_attrib *dest, struct gl_array_attrib *src) { - /* Restore or recreate the buffer objects by the names ... */ - if (!src->ArrayBufferObj->Name == 0 - || _mesa_IsBufferARB(src->ArrayBufferObj->Name)) { - /* ... and restore its content */ - copy_array_attrib(ctx, dest, src, GL_FALSE); - - _mesa_BindBufferARB(GL_ARRAY_BUFFER_ARB, - src->ArrayBufferObj->Name); - } else { - copy_array_attrib(ctx, dest, src, GL_TRUE); - } + copy_array_attrib(ctx, dest, src); if (src->ElementArrayBufferObj->Name == 0 || _mesa_IsBufferARB(src->ElementArrayBufferObj->Name)) @@ -1146,19 +1111,6 @@ restore_array_attrib(struct gl_context *ctx, dest->NewState |= src->_Enabled | dest->_Enabled; } -/** - * Free/unreference the fields of 'attrib' but don't delete it (that's - * done later in the calling code). - * Needs to the cleanup part matching init_array_attrib_data above. - */ -static void -free_array_attrib_data(struct gl_context *ctx, - struct gl_array_attrib *attrib) -{ - _mesa_reference_buffer_object(ctx, &attrib->ArrayBufferObj, NULL); - _mesa_free_varray_data(ctx, attrib); -} - void GLAPIENTRY _mesa_PushClientAttrib(GLbitfield mask) @@ -1243,7 +1195,7 @@ _mesa_PopClientAttrib(void) struct gl_array_attrib * attr = (struct gl_array_attrib *) node->data; restore_array_attrib(ctx, &ctx->Array, attr); - free_array_attrib_data(ctx, attr); + _mesa_free_varray_data(ctx, attr); ctx->NewState |= _NEW_ARRAY; break; } diff --git a/reactos/dll/opengl/mesa/main/blend.c b/reactos/dll/opengl/mesa/main/blend.c index 93145d00c13..4094518d8f8 100644 --- a/reactos/dll/opengl/mesa/main/blend.c +++ b/reactos/dll/opengl/mesa/main/blend.c @@ -97,34 +97,19 @@ legal_dst_factor(const struct gl_context *ctx, GLenum factor) */ static GLboolean validate_blend_factors(struct gl_context *ctx, const char *func, - GLenum sfactorRGB, GLenum dfactorRGB, - GLenum sfactorA, GLenum dfactorA) + GLenum srcfactor, GLenum dstfactor) { - if (!legal_src_factor(ctx, sfactorRGB)) { + if (!legal_src_factor(ctx, srcfactor)) { _mesa_error(ctx, GL_INVALID_ENUM, "%s(sfactorRGB = %s)", func, - _mesa_lookup_enum_by_nr(sfactorRGB)); + _mesa_lookup_enum_by_nr(srcfactor)); return GL_FALSE; } - if (!legal_dst_factor(ctx, dfactorRGB)) { + if (!legal_dst_factor(ctx, dstfactor)) { _mesa_error(ctx, GL_INVALID_ENUM, "%s(dfactorRGB = %s)", func, - _mesa_lookup_enum_by_nr(dfactorRGB)); - return GL_FALSE; - } - - if (sfactorA != sfactorRGB && !legal_src_factor(ctx, sfactorA)) { - _mesa_error(ctx, GL_INVALID_ENUM, - "%s(sfactorA = %s)", func, - _mesa_lookup_enum_by_nr(sfactorA)); - return GL_FALSE; - } - - if (dfactorA != dfactorRGB && !legal_dst_factor(ctx, dfactorA)) { - _mesa_error(ctx, GL_INVALID_ENUM, - "%s(dfactorA = %s)", func, - _mesa_lookup_enum_by_nr(dfactorA)); + _mesa_lookup_enum_by_nr(dstfactor)); return GL_FALSE; } @@ -138,190 +123,32 @@ validate_blend_factors(struct gl_context *ctx, const char *func, * \param sfactor source factor operator. * \param dfactor destination factor operator. * - * \sa glBlendFunc, glBlendFuncSeparateEXT + * \sa glBlendFunc */ void GLAPIENTRY _mesa_BlendFunc( GLenum sfactor, GLenum dfactor ) -{ - _mesa_BlendFuncSeparateEXT(sfactor, dfactor, sfactor, dfactor); -} - - -/** - * Set the separate blend source/dest factors for all draw buffers. - * - * \param sfactorRGB RGB source factor operator. - * \param dfactorRGB RGB destination factor operator. - * \param sfactorA alpha source factor operator. - * \param dfactorA alpha destination factor operator. - */ -void GLAPIENTRY -_mesa_BlendFuncSeparateEXT( GLenum sfactorRGB, GLenum dfactorRGB, - GLenum sfactorA, GLenum dfactorA ) { GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END(ctx); if (MESA_VERBOSE & VERBOSE_API) - _mesa_debug(ctx, "glBlendFuncSeparate %s %s %s %s\n", - _mesa_lookup_enum_by_nr(sfactorRGB), - _mesa_lookup_enum_by_nr(dfactorRGB), - _mesa_lookup_enum_by_nr(sfactorA), - _mesa_lookup_enum_by_nr(dfactorA)); + _mesa_debug(ctx, "glBlendFunc %s %s\n", + _mesa_lookup_enum_by_nr(sfactor), + _mesa_lookup_enum_by_nr(dfactor)); - if (!validate_blend_factors(ctx, "glBlendFuncSeparate", - sfactorRGB, dfactorRGB, - sfactorA, dfactorA)) { + if (!validate_blend_factors(ctx, "glBlendFunc", sfactor, dfactor)) { return; } - if (ctx->Color.SrcRGB == sfactorRGB && - ctx->Color.DstRGB == dfactorRGB && - ctx->Color.SrcA == sfactorA && - ctx->Color.DstA == dfactorA) { + if (ctx->Color.SrcFactor == sfactor && + ctx->Color.DstFactor == dfactor) { return; } FLUSH_VERTICES(ctx, _NEW_COLOR); - ctx->Color.SrcRGB = sfactorRGB; - ctx->Color.DstRGB = dfactorRGB; - ctx->Color.SrcA = sfactorA; - ctx->Color.DstA = dfactorA; - if (ctx->Driver.BlendFuncSeparate) { - ctx->Driver.BlendFuncSeparate(ctx, sfactorRGB, dfactorRGB, - sfactorA, dfactorA); - } -} - - -#if _HAVE_FULL_GL -/** - * Check if given blend equation is legal. - * \return GL_TRUE if legal, GL_FALSE otherwise. - */ -static GLboolean -legal_blend_equation(const struct gl_context *ctx, GLenum mode) -{ - switch (mode) { - case GL_FUNC_ADD: - case GL_FUNC_SUBTRACT: - case GL_FUNC_REVERSE_SUBTRACT: - return GL_TRUE; - case GL_MIN: - case GL_MAX: - return ctx->Extensions.EXT_blend_minmax; - default: - return GL_FALSE; - } -} - - -/* This is really an extension function! */ -void GLAPIENTRY -_mesa_BlendEquation( GLenum mode ) -{ - GET_CURRENT_CONTEXT(ctx); - ASSERT_OUTSIDE_BEGIN_END(ctx); - - if (MESA_VERBOSE & VERBOSE_API) - _mesa_debug(ctx, "glBlendEquation(%s)\n", - _mesa_lookup_enum_by_nr(mode)); - - if (!legal_blend_equation(ctx, mode)) { - _mesa_error(ctx, GL_INVALID_ENUM, "glBlendEquation"); - return; - } - - if (ctx->Color.EquationRGB == mode && ctx->Color.EquationA == mode) { - return; - } - - FLUSH_VERTICES(ctx, _NEW_COLOR); - ctx->Color.EquationRGB = mode; - ctx->Color.EquationA = mode; - - if (ctx->Driver.BlendEquationSeparate) - (*ctx->Driver.BlendEquationSeparate)( ctx, mode, mode ); -} - -void GLAPIENTRY -_mesa_BlendEquationSeparateEXT( GLenum modeRGB, GLenum modeA ) -{ - GET_CURRENT_CONTEXT(ctx); - ASSERT_OUTSIDE_BEGIN_END(ctx); - - if (MESA_VERBOSE & VERBOSE_API) - _mesa_debug(ctx, "glBlendEquationSeparateEXT(%s %s)\n", - _mesa_lookup_enum_by_nr(modeRGB), - _mesa_lookup_enum_by_nr(modeA)); - - if ( (modeRGB != modeA) && !ctx->Extensions.EXT_blend_equation_separate ) { - _mesa_error(ctx, GL_INVALID_OPERATION, - "glBlendEquationSeparateEXT not supported by driver"); - return; - } - - if (!legal_blend_equation(ctx, modeRGB)) { - _mesa_error(ctx, GL_INVALID_ENUM, "glBlendEquationSeparateEXT(modeRGB)"); - return; - } - - if (!legal_blend_equation(ctx, modeA)) { - _mesa_error(ctx, GL_INVALID_ENUM, "glBlendEquationSeparateEXT(modeA)"); - return; - } - - if (ctx->Color.EquationRGB == modeRGB && ctx->Color.EquationA == modeA) { - return; - } - - FLUSH_VERTICES(ctx, _NEW_COLOR); - ctx->Color.EquationRGB = modeRGB; - ctx->Color.EquationA = modeA; - - if (ctx->Driver.BlendEquationSeparate) - ctx->Driver.BlendEquationSeparate(ctx, modeRGB, modeA); -} - - -#endif /* _HAVE_FULL_GL */ - - -/** - * Set the blending color. - * - * \param red red color component. - * \param green green color component. - * \param blue blue color component. - * \param alpha alpha color component. - * - * \sa glBlendColor(). - * - * Clamps the parameters and updates gl_colorbuffer_attrib::BlendColor. On a - * change, flushes the vertices and notifies the driver via - * dd_function_table::BlendColor callback. - */ -void GLAPIENTRY -_mesa_BlendColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) -{ - GLfloat tmp[4]; - GET_CURRENT_CONTEXT(ctx); - ASSERT_OUTSIDE_BEGIN_END(ctx); - - tmp[0] = red; - tmp[1] = green; - tmp[2] = blue; - tmp[3] = alpha; - - if (TEST_EQ_4V(tmp, ctx->Color.BlendColor)) - return; - - FLUSH_VERTICES(ctx, _NEW_COLOR); - COPY_4FV( ctx->Color.BlendColor, tmp ); - - if (ctx->Driver.BlendColor) - (*ctx->Driver.BlendColor)(ctx, ctx->Color.BlendColor); + ctx->Color.SrcFactor = sfactor; + ctx->Color.DstFactor = dfactor; } @@ -507,13 +334,8 @@ void _mesa_init_color( struct gl_context * ctx ) ctx->Color.AlphaFunc = GL_ALWAYS; ctx->Color.AlphaRef = 0; ctx->Color.BlendEnabled = 0x0; - ctx->Color.SrcRGB = GL_ONE; - ctx->Color.DstRGB = GL_ZERO; - ctx->Color.SrcA = GL_ONE; - ctx->Color.DstA = GL_ZERO; - ctx->Color.EquationRGB = GL_FUNC_ADD; - ctx->Color.EquationA = GL_FUNC_ADD; - ASSIGN_4V( ctx->Color.BlendColor, 0.0, 0.0, 0.0, 0.0 ); + ctx->Color.SrcFactor = GL_ONE; + ctx->Color.DstFactor = GL_ZERO; ctx->Color.IndexLogicOpEnabled = GL_FALSE; ctx->Color.ColorLogicOpEnabled = GL_FALSE; ctx->Color.LogicOp = GL_COPY; diff --git a/reactos/dll/opengl/mesa/main/blend.h b/reactos/dll/opengl/mesa/main/blend.h index 3124702520b..66452957165 100644 --- a/reactos/dll/opengl/mesa/main/blend.h +++ b/reactos/dll/opengl/mesa/main/blend.h @@ -42,24 +42,6 @@ extern void GLAPIENTRY _mesa_BlendFunc( GLenum sfactor, GLenum dfactor ); -extern void GLAPIENTRY -_mesa_BlendFuncSeparateEXT( GLenum sfactorRGB, GLenum dfactorRGB, - GLenum sfactorA, GLenum dfactorA ); - - -extern void GLAPIENTRY -_mesa_BlendEquation( GLenum mode ); - - - -extern void GLAPIENTRY -_mesa_BlendEquationSeparateEXT( GLenum modeRGB, GLenum modeA ); - - -extern void GLAPIENTRY -_mesa_BlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); - - extern void GLAPIENTRY _mesa_AlphaFunc( GLenum func, GLclampf ref ); diff --git a/reactos/dll/opengl/mesa/main/bufferobj.c b/reactos/dll/opengl/mesa/main/bufferobj.c index f4251036d23..883aee9af8a 100644 --- a/reactos/dll/opengl/mesa/main/bufferobj.c +++ b/reactos/dll/opengl/mesa/main/bufferobj.c @@ -55,8 +55,6 @@ static inline struct gl_buffer_object ** get_buffer_target(struct gl_context *ctx, GLenum target) { switch (target) { - case GL_ARRAY_BUFFER_ARB: - return &ctx->Array.ArrayBufferObj; case GL_ELEMENT_ARRAY_BUFFER_ARB: return &ctx->Array.ElementArrayBufferObj; default: @@ -474,16 +472,6 @@ _mesa_init_buffer_objects( struct gl_context *ctx ) memset(&DummyBufferObject, 0, sizeof(DummyBufferObject)); _glthread_INIT_MUTEX(DummyBufferObject.Mutex); DummyBufferObject.RefCount = 1000*1000*1000; /* never delete */ - - _mesa_reference_buffer_object(ctx, &ctx->Array.ArrayBufferObj, - ctx->Shared->NullBufferObj); -} - - -void -_mesa_free_buffer_objects( struct gl_context *ctx ) -{ - _mesa_reference_buffer_object(ctx, &ctx->Array.ArrayBufferObj, NULL); } @@ -674,9 +662,6 @@ _mesa_DeleteBuffersARB(GLsizei n, const GLuint *ids) unbind(ctx, &ctx->Array.VertexAttrib[j].BufferObj, bufObj); } - if (ctx->Array.ArrayBufferObj == bufObj) { - _mesa_BindBufferARB( GL_ARRAY_BUFFER_ARB, 0 ); - } if (ctx->Array.ElementArrayBufferObj == bufObj) { _mesa_BindBufferARB( GL_ELEMENT_ARRAY_BUFFER_ARB, 0 ); } diff --git a/reactos/dll/opengl/mesa/main/colortab.c b/reactos/dll/opengl/mesa/main/colortab.c deleted file mode 100644 index 17cc8b7325c..00000000000 --- a/reactos/dll/opengl/mesa/main/colortab.c +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 7.1 - * - * Copyright (C) 1999-2007 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#include - -#if FEATURE_colortable - -void GLAPIENTRY -_mesa_ColorTable( GLenum target, GLenum internalFormat, - GLsizei width, GLenum format, GLenum type, - const GLvoid *data ) -{ - GET_CURRENT_CONTEXT(ctx); - ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); - _mesa_error(ctx, GL_INVALID_ENUM, "glColorTable(target)"); -} - - - -void GLAPIENTRY -_mesa_ColorSubTable( GLenum target, GLsizei start, - GLsizei count, GLenum format, GLenum type, - const GLvoid *data ) -{ - GET_CURRENT_CONTEXT(ctx); - ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); - _mesa_error(ctx, GL_INVALID_ENUM, "glColorSubTable(target)"); -} - - - -static void GLAPIENTRY -_mesa_CopyColorTable(GLenum target, GLenum internalformat, - GLint x, GLint y, GLsizei width) -{ - GET_CURRENT_CONTEXT(ctx); - ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); - _mesa_error(ctx, GL_INVALID_ENUM, "glCopyColorTable(target)"); -} - - - -static void GLAPIENTRY -_mesa_CopyColorSubTable(GLenum target, GLsizei start, - GLint x, GLint y, GLsizei width) -{ - GET_CURRENT_CONTEXT(ctx); - ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); - _mesa_error(ctx, GL_INVALID_ENUM, "glCopyColorSubTable(target)"); -} - - -static void GLAPIENTRY -_mesa_GetColorTable( GLenum target, GLenum format, - GLenum type, GLvoid *data ) -{ - GET_CURRENT_CONTEXT(ctx); - ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); - _mesa_error(ctx, GL_INVALID_ENUM, "glGetColorTable(target)"); -} - - -static void GLAPIENTRY -_mesa_ColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params) -{ - /* no extensions use this function */ - GET_CURRENT_CONTEXT(ctx); - ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); - _mesa_error(ctx, GL_INVALID_ENUM, "glColorTableParameterfv(target)"); -} - - - -static void GLAPIENTRY -_mesa_ColorTableParameteriv(GLenum target, GLenum pname, const GLint *params) -{ - /* no extensions use this function */ - GET_CURRENT_CONTEXT(ctx); - ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); - _mesa_error(ctx, GL_INVALID_ENUM, "glColorTableParameteriv(target)"); -} - - - -static void GLAPIENTRY -_mesa_GetColorTableParameterfv( GLenum target, GLenum pname, GLfloat *params ) -{ - GET_CURRENT_CONTEXT(ctx); - ASSERT_OUTSIDE_BEGIN_END(ctx); - _mesa_error(ctx, GL_INVALID_ENUM, "glGetColorTableParameterfv(target)"); -} - - - -static void GLAPIENTRY -_mesa_GetColorTableParameteriv( GLenum target, GLenum pname, GLint *params ) -{ - GET_CURRENT_CONTEXT(ctx); - ASSERT_OUTSIDE_BEGIN_END(ctx); - _mesa_error(ctx, GL_INVALID_ENUM, "glGetColorTableParameteriv(target)"); -} - - -void -_mesa_init_colortable_dispatch(struct _glapi_table *disp) -{ - SET_ColorSubTable(disp, _mesa_ColorSubTable); - SET_ColorTable(disp, _mesa_ColorTable); - SET_ColorTableParameterfv(disp, _mesa_ColorTableParameterfv); - SET_ColorTableParameteriv(disp, _mesa_ColorTableParameteriv); - SET_CopyColorSubTable(disp, _mesa_CopyColorSubTable); - SET_CopyColorTable(disp, _mesa_CopyColorTable); - SET_GetColorTable(disp, _mesa_GetColorTable); - SET_GetColorTableParameterfv(disp, _mesa_GetColorTableParameterfv); - SET_GetColorTableParameteriv(disp, _mesa_GetColorTableParameteriv); -} - - -#endif /* FEATURE_colortable */ diff --git a/reactos/dll/opengl/mesa/main/colortab.h b/reactos/dll/opengl/mesa/main/colortab.h deleted file mode 100644 index 4e225ffc951..00000000000 --- a/reactos/dll/opengl/mesa/main/colortab.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 6.5.2 - * - * Copyright (C) 1999-2006 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - -#ifndef COLORTAB_H -#define COLORTAB_H - - -#include "compiler.h" -#include "glheader.h" -#include "mfeatures.h" - -struct _glapi_table; - -#if FEATURE_colortable - -extern void GLAPIENTRY -_mesa_ColorTable( GLenum target, GLenum internalformat, - GLsizei width, GLenum format, GLenum type, - const GLvoid *table ); - -extern void GLAPIENTRY -_mesa_ColorSubTable( GLenum target, GLsizei start, - GLsizei count, GLenum format, GLenum type, - const GLvoid *table ); - -extern void -_mesa_init_colortable_dispatch(struct _glapi_table *disp); - -#else /* FEATURE_colortable */ - -static inline void GLAPIENTRY -_mesa_ColorTable( GLenum target, GLenum internalformat, - GLsizei width, GLenum format, GLenum type, - const GLvoid *table ) -{ - ASSERT_NO_FEATURE(); -} - -static inline void GLAPIENTRY -_mesa_ColorSubTable( GLenum target, GLsizei start, - GLsizei count, GLenum format, GLenum type, - const GLvoid *table ) -{ - ASSERT_NO_FEATURE(); -} - -static inline void -_mesa_init_colortable_dispatch(struct _glapi_table *disp) -{ -} - -#endif /* FEATURE_colortable */ - -#endif /* COLORTAB_H */ diff --git a/reactos/dll/opengl/mesa/main/config.h b/reactos/dll/opengl/mesa/main/config.h index 6a87467b0b6..4f5f18ecf39 100644 --- a/reactos/dll/opengl/mesa/main/config.h +++ b/reactos/dll/opengl/mesa/main/config.h @@ -97,9 +97,6 @@ /** Line width granularity */ #define LINE_WIDTH_GRANULARITY 0.1 -/** Max texture palette / color table size */ -#define MAX_COLOR_TABLE_SIZE 256 - /** Max memory to allow for a single texture image (in megabytes) */ #define MAX_TEXTURE_MBYTES 1024 diff --git a/reactos/dll/opengl/mesa/main/context.c b/reactos/dll/opengl/mesa/main/context.c index 597567b6049..8c4056fcc74 100644 --- a/reactos/dll/opengl/mesa/main/context.c +++ b/reactos/dll/opengl/mesa/main/context.c @@ -373,8 +373,7 @@ _mesa_init_current(struct gl_context *ctx) /* redo special cases: */ ASSIGN_4V( ctx->Current.Attrib[VERT_ATTRIB_WEIGHT], 1.0, 0.0, 0.0, 0.0 ); ASSIGN_4V( ctx->Current.Attrib[VERT_ATTRIB_NORMAL], 0.0, 0.0, 1.0, 1.0 ); - ASSIGN_4V( ctx->Current.Attrib[VERT_ATTRIB_COLOR0], 1.0, 1.0, 1.0, 1.0 ); - ASSIGN_4V( ctx->Current.Attrib[VERT_ATTRIB_COLOR1], 0.0, 0.0, 0.0, 1.0 ); + ASSIGN_4V( ctx->Current.Attrib[VERT_ATTRIB_COLOR], 1.0, 1.0, 1.0, 1.0 ); ASSIGN_4V( ctx->Current.Attrib[VERT_ATTRIB_COLOR_INDEX], 1.0, 0.0, 0.0, 1.0 ); ASSIGN_4V( ctx->Current.Attrib[VERT_ATTRIB_EDGEFLAG], 1.0, 0.0, 0.0, 1.0 ); } @@ -406,7 +405,6 @@ _mesa_init_constants(struct gl_context *ctx) ctx->Const.MinLineWidthAA = MIN_LINE_WIDTH; ctx->Const.MaxLineWidthAA = MAX_LINE_WIDTH; ctx->Const.LineWidthGranularity = (GLfloat) LINE_WIDTH_GRANULARITY; - ctx->Const.MaxColorTableSize = MAX_COLOR_TABLE_SIZE; ctx->Const.MaxClipPlanes = 6; ctx->Const.MaxLights = MAX_LIGHTS; ctx->Const.MaxShininess = 128.0; @@ -742,7 +740,6 @@ _mesa_free_context_data( struct gl_context *ctx ) _mesa_reference_framebuffer(&ctx->ReadBuffer, NULL); _mesa_free_attrib_data(ctx); - _mesa_free_buffer_objects(ctx); _mesa_free_lighting_data( ctx ); _mesa_free_eval_data( ctx ); _mesa_free_texture_data( ctx ); @@ -750,8 +747,6 @@ _mesa_free_context_data( struct gl_context *ctx ) _mesa_free_viewport_data( ctx ); _mesa_free_varray_data(ctx, &ctx->Array); - _mesa_reference_buffer_object(ctx, &ctx->Array.ArrayBufferObj, NULL); - /* free dispatch tables */ free(ctx->Exec); free(ctx->Save); diff --git a/reactos/dll/opengl/mesa/main/convolve.c b/reactos/dll/opengl/mesa/main/convolve.c deleted file mode 100644 index a20d411b22f..00000000000 --- a/reactos/dll/opengl/mesa/main/convolve.c +++ /dev/null @@ -1,173 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 6.5.2 - * - * Copyright (C) 1999-2006 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/* - * Image convolution functions. - * - * Notes: filter kernel elements are indexed by and as in - * the GL spec. - */ - -#include - -#if FEATURE_convolve - -static void GLAPIENTRY -_mesa_ConvolutionFilter1D(GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const GLvoid *image) -{ - GET_CURRENT_CONTEXT(ctx); - - _mesa_error(ctx, GL_INVALID_ENUM, "glConvolutionFilter1D"); -} - -static void GLAPIENTRY -_mesa_ConvolutionFilter2D(GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image) -{ - GET_CURRENT_CONTEXT(ctx); - - _mesa_error(ctx, GL_INVALID_ENUM, "glConvolutionFilter2D"); -} - - -static void GLAPIENTRY -_mesa_ConvolutionParameterf(GLenum target, GLenum pname, GLfloat param) -{ - GET_CURRENT_CONTEXT(ctx); - - _mesa_error(ctx, GL_INVALID_ENUM, "glConvolutionParameterf"); -} - - -static void GLAPIENTRY -_mesa_ConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params) -{ - GET_CURRENT_CONTEXT(ctx); - - _mesa_error(ctx, GL_INVALID_ENUM, "glConvolutionParameterfv"); -} - - -static void GLAPIENTRY -_mesa_ConvolutionParameteri(GLenum target, GLenum pname, GLint param) -{ - GET_CURRENT_CONTEXT(ctx); - - _mesa_error(ctx, GL_INVALID_ENUM, "glConvolutionParameteri"); -} - - -static void GLAPIENTRY -_mesa_ConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params) -{ - GET_CURRENT_CONTEXT(ctx); - - _mesa_error(ctx, GL_INVALID_ENUM, "glConvolutionParameteriv"); -} - - -static void GLAPIENTRY -_mesa_CopyConvolutionFilter1D(GLenum target, GLenum internalFormat, GLint x, GLint y, GLsizei width) -{ - GET_CURRENT_CONTEXT(ctx); - - _mesa_error(ctx, GL_INVALID_ENUM, "glCopyConvolutionFilter1D"); -} - - -static void GLAPIENTRY -_mesa_CopyConvolutionFilter2D(GLenum target, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height) -{ - GET_CURRENT_CONTEXT(ctx); - - _mesa_error(ctx, GL_INVALID_ENUM, "glCopyConvolutionFilter2D"); -} - - -static void GLAPIENTRY -_mesa_GetConvolutionFilter(GLenum target, GLenum format, GLenum type, - GLvoid *image) -{ - GET_CURRENT_CONTEXT(ctx); - - _mesa_error(ctx, GL_INVALID_OPERATION, "glGetConvolutionFilter"); -} - - -static void GLAPIENTRY -_mesa_GetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params) -{ - GET_CURRENT_CONTEXT(ctx); - - _mesa_error(ctx, GL_INVALID_ENUM, "glGetConvolutionParameterfv"); -} - - -static void GLAPIENTRY -_mesa_GetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params) -{ - GET_CURRENT_CONTEXT(ctx); - - _mesa_error(ctx, GL_INVALID_ENUM, "glGetConvolutionParameteriv"); -} - - -static void GLAPIENTRY -_mesa_GetSeparableFilter(GLenum target, GLenum format, GLenum type, - GLvoid *row, GLvoid *column, - GLvoid *span) -{ - GET_CURRENT_CONTEXT(ctx); - - _mesa_error(ctx, GL_INVALID_ENUM, "glGetSeparableFilter"); -} - - -static void GLAPIENTRY -_mesa_SeparableFilter2D(GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column) -{ - GET_CURRENT_CONTEXT(ctx); - - _mesa_error(ctx, GL_INVALID_ENUM, "glSeparableFilter2D"); -} - -void -_mesa_init_convolve_dispatch(struct _glapi_table *disp) -{ - SET_ConvolutionFilter1D(disp, _mesa_ConvolutionFilter1D); - SET_ConvolutionFilter2D(disp, _mesa_ConvolutionFilter2D); - SET_ConvolutionParameterf(disp, _mesa_ConvolutionParameterf); - SET_ConvolutionParameterfv(disp, _mesa_ConvolutionParameterfv); - SET_ConvolutionParameteri(disp, _mesa_ConvolutionParameteri); - SET_ConvolutionParameteriv(disp, _mesa_ConvolutionParameteriv); - SET_CopyConvolutionFilter1D(disp, _mesa_CopyConvolutionFilter1D); - SET_CopyConvolutionFilter2D(disp, _mesa_CopyConvolutionFilter2D); - SET_GetConvolutionFilter(disp, _mesa_GetConvolutionFilter); - SET_GetConvolutionParameterfv(disp, _mesa_GetConvolutionParameterfv); - SET_GetConvolutionParameteriv(disp, _mesa_GetConvolutionParameteriv); - SET_SeparableFilter2D(disp, _mesa_SeparableFilter2D); - SET_GetSeparableFilter(disp, _mesa_GetSeparableFilter); -} - - -#endif /* FEATURE_convolve */ diff --git a/reactos/dll/opengl/mesa/main/convolve.h b/reactos/dll/opengl/mesa/main/convolve.h deleted file mode 100644 index 952285643b5..00000000000 --- a/reactos/dll/opengl/mesa/main/convolve.h +++ /dev/null @@ -1,51 +0,0 @@ - -/* - * Mesa 3-D graphics library - * Version: 3.5 - * - * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - -#ifndef CONVOLVE_H -#define CONVOLVE_H - - -#include "compiler.h" -#include "mfeatures.h" - -struct _glapi_table; - - -#if FEATURE_convolve - -extern void -_mesa_init_convolve_dispatch(struct _glapi_table *disp); - -#else /* FEATURE_convolve */ - -static inline void -_mesa_init_convolve_dispatch(struct _glapi_table *disp) -{ -} - -#endif /* FEATURE_convolve */ - -#endif /* CONVOLVE_H */ diff --git a/reactos/dll/opengl/mesa/main/dd.h b/reactos/dll/opengl/mesa/main/dd.h index 47ca70755e1..ba4403eb205 100644 --- a/reactos/dll/opengl/mesa/main/dd.h +++ b/reactos/dll/opengl/mesa/main/dd.h @@ -433,19 +433,6 @@ struct dd_function_table { /*@{*/ /** Specify the alpha test function */ void (*AlphaFunc)(struct gl_context *ctx, GLenum func, GLfloat ref); - /** Set the blend color */ - void (*BlendColor)(struct gl_context *ctx, const GLfloat color[4]); - /** Set the blend equation */ - void (*BlendEquationSeparate)(struct gl_context *ctx, GLenum modeRGB, GLenum modeA); - void (*BlendEquationSeparatei)(struct gl_context *ctx, GLuint buffer, - GLenum modeRGB, GLenum modeA); - /** Specify pixel arithmetic */ - void (*BlendFuncSeparate)(struct gl_context *ctx, - GLenum sfactorRGB, GLenum dfactorRGB, - GLenum sfactorA, GLenum dfactorA); - void (*BlendFuncSeparatei)(struct gl_context *ctx, GLuint buffer, - GLenum sfactorRGB, GLenum dfactorRGB, - GLenum sfactorA, GLenum dfactorA); /** Specify clear values for the color buffers */ void (*ClearColor)(struct gl_context *ctx, const union gl_color_union color); @@ -719,8 +706,6 @@ typedef struct { void (GLAPIENTRYP MultiTexCoord4fvARB)( GLenum, const GLfloat * ); void (GLAPIENTRYP Normal3f)( GLfloat, GLfloat, GLfloat ); void (GLAPIENTRYP Normal3fv)( const GLfloat * ); - void (GLAPIENTRYP SecondaryColor3fEXT)( GLfloat, GLfloat, GLfloat ); - void (GLAPIENTRYP SecondaryColor3fvEXT)( const GLfloat * ); void (GLAPIENTRYP TexCoord1f)( GLfloat ); void (GLAPIENTRYP TexCoord1fv)( const GLfloat * ); void (GLAPIENTRYP TexCoord2f)( GLfloat, GLfloat ); @@ -760,9 +745,6 @@ typedef struct { void (GLAPIENTRYP DrawArrays)( GLenum mode, GLint start, GLsizei count ); void (GLAPIENTRYP DrawElements)( GLenum mode, GLsizei count, GLenum type, const GLvoid *indices ); - void (GLAPIENTRYP DrawRangeElements)( GLenum mode, GLuint start, - GLuint end, GLsizei count, - GLenum type, const GLvoid *indices ); /*@}*/ /** diff --git a/reactos/dll/opengl/mesa/main/dispatch.h b/reactos/dll/opengl/mesa/main/dispatch.h index aac79306548..049585ba5ae 100644 --- a/reactos/dll/opengl/mesa/main/dispatch.h +++ b/reactos/dll/opengl/mesa/main/dispatch.h @@ -404,32 +404,6 @@ typedef PROC _glapi_proc; #define _gloffset_PopClientAttrib 334 #define _gloffset_PushClientAttrib 335 -#define _gloffset_BlendColor 336 -#define _gloffset_BlendEquation 337 -#define _gloffset_DrawRangeElements 338 -#define _gloffset_ColorTable 339 -#define _gloffset_ColorTableParameterfv 340 -#define _gloffset_ColorTableParameteriv 341 -#define _gloffset_CopyColorTable 342 -#define _gloffset_GetColorTable 343 -#define _gloffset_GetColorTableParameterfv 344 -#define _gloffset_GetColorTableParameteriv 345 -#define _gloffset_ColorSubTable 346 -#define _gloffset_CopyColorSubTable 347 -#define _gloffset_ConvolutionFilter1D 348 -#define _gloffset_ConvolutionFilter2D 349 -#define _gloffset_ConvolutionParameterf 350 -#define _gloffset_ConvolutionParameterfv 351 -#define _gloffset_ConvolutionParameteri 352 -#define _gloffset_ConvolutionParameteriv 353 -#define _gloffset_CopyConvolutionFilter1D 354 -#define _gloffset_CopyConvolutionFilter2D 355 -#define _gloffset_GetConvolutionFilter 356 -#define _gloffset_GetConvolutionParameterfv 357 -#define _gloffset_GetConvolutionParameteriv 358 -#define _gloffset_GetSeparableFilter 359 -#define _gloffset_SeparableFilter2D 360 -#define _gloffset_GetStringi 435 #define _gloffset_GetBufferParameteri64v 438 #define _gloffset_GetInteger64i_v 439 #define _gloffset_LoadTransposeMatrixdARB 441 @@ -478,30 +452,12 @@ typedef PROC _glapi_proc; #define _gloffset_PointParameterfvEXT 707 #define _gloffset_LockArraysEXT 708 #define _gloffset_UnlockArraysEXT 709 -#define _gloffset_SecondaryColor3bEXT 710 -#define _gloffset_SecondaryColor3bvEXT 711 -#define _gloffset_SecondaryColor3dEXT 712 -#define _gloffset_SecondaryColor3dvEXT 713 -#define _gloffset_SecondaryColor3fEXT 714 -#define _gloffset_SecondaryColor3fvEXT 715 -#define _gloffset_SecondaryColor3iEXT 716 -#define _gloffset_SecondaryColor3ivEXT 717 -#define _gloffset_SecondaryColor3sEXT 718 -#define _gloffset_SecondaryColor3svEXT 719 -#define _gloffset_SecondaryColor3ubEXT 720 -#define _gloffset_SecondaryColor3ubvEXT 721 -#define _gloffset_SecondaryColor3uiEXT 722 -#define _gloffset_SecondaryColor3uivEXT 723 -#define _gloffset_SecondaryColor3usEXT 724 -#define _gloffset_SecondaryColor3usvEXT 725 -#define _gloffset_SecondaryColorPointerEXT 726 #define _gloffset_FogCoordPointerEXT 729 #define _gloffset_FogCoorddEXT 730 #define _gloffset_FogCoorddvEXT 731 #define _gloffset_FogCoordfEXT 732 #define _gloffset_FogCoordfvEXT 733 #define _gloffset_PixelTexGenSGIX 734 -#define _gloffset_BlendFuncSeparateEXT 735 #define _gloffset_FlushVertexArrayRangeNV 736 #define _gloffset_VertexArrayRangeNV 737 #define _gloffset_CombinerInputNV 738 @@ -580,7 +536,6 @@ typedef PROC _glapi_proc; #define _gloffset_PointParameterivNV 864 #define _gloffset_ActiveStencilFaceEXT 865 #define _gloffset_DepthBoundsEXT 878 -#define _gloffset_BlendEquationSeparateEXT 879 #define _gloffset_BufferParameteriAPPLE 898 #define _gloffset_FlushMappedBufferRangeAPPLE 899 #define _gloffset_BindFragDataLocationEXT 900 @@ -4290,292 +4245,6 @@ static inline void SET_PushClientAttrib(struct _glapi_table *disp, void (GLAPIEN SET_by_offset(disp, _gloffset_PushClientAttrib, fn); } -typedef void (GLAPIENTRYP _glptr_BlendColor)(GLclampf, GLclampf, GLclampf, GLclampf); -#define CALL_BlendColor(disp, parameters) \ - (* GET_BlendColor(disp)) parameters -static inline _glptr_BlendColor GET_BlendColor(struct _glapi_table *disp) { - return (_glptr_BlendColor) (GET_by_offset(disp, _gloffset_BlendColor)); -} - -static inline void SET_BlendColor(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLclampf, GLclampf, GLclampf, GLclampf)) { - SET_by_offset(disp, _gloffset_BlendColor, fn); -} - -typedef void (GLAPIENTRYP _glptr_BlendEquation)(GLenum); -#define CALL_BlendEquation(disp, parameters) \ - (* GET_BlendEquation(disp)) parameters -static inline _glptr_BlendEquation GET_BlendEquation(struct _glapi_table *disp) { - return (_glptr_BlendEquation) (GET_by_offset(disp, _gloffset_BlendEquation)); -} - -static inline void SET_BlendEquation(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum)) { - SET_by_offset(disp, _gloffset_BlendEquation, fn); -} - -typedef void (GLAPIENTRYP _glptr_DrawRangeElements)(GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *); -#define CALL_DrawRangeElements(disp, parameters) \ - (* GET_DrawRangeElements(disp)) parameters -static inline _glptr_DrawRangeElements GET_DrawRangeElements(struct _glapi_table *disp) { - return (_glptr_DrawRangeElements) (GET_by_offset(disp, _gloffset_DrawRangeElements)); -} - -static inline void SET_DrawRangeElements(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *)) { - SET_by_offset(disp, _gloffset_DrawRangeElements, fn); -} - -typedef void (GLAPIENTRYP _glptr_ColorTable)(GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); -#define CALL_ColorTable(disp, parameters) \ - (* GET_ColorTable(disp)) parameters -static inline _glptr_ColorTable GET_ColorTable(struct _glapi_table *disp) { - return (_glptr_ColorTable) (GET_by_offset(disp, _gloffset_ColorTable)); -} - -static inline void SET_ColorTable(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *)) { - SET_by_offset(disp, _gloffset_ColorTable, fn); -} - -typedef void (GLAPIENTRYP _glptr_ColorTableParameterfv)(GLenum, GLenum, const GLfloat *); -#define CALL_ColorTableParameterfv(disp, parameters) \ - (* GET_ColorTableParameterfv(disp)) parameters -static inline _glptr_ColorTableParameterfv GET_ColorTableParameterfv(struct _glapi_table *disp) { - return (_glptr_ColorTableParameterfv) (GET_by_offset(disp, _gloffset_ColorTableParameterfv)); -} - -static inline void SET_ColorTableParameterfv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLenum, const GLfloat *)) { - SET_by_offset(disp, _gloffset_ColorTableParameterfv, fn); -} - -typedef void (GLAPIENTRYP _glptr_ColorTableParameteriv)(GLenum, GLenum, const GLint *); -#define CALL_ColorTableParameteriv(disp, parameters) \ - (* GET_ColorTableParameteriv(disp)) parameters -static inline _glptr_ColorTableParameteriv GET_ColorTableParameteriv(struct _glapi_table *disp) { - return (_glptr_ColorTableParameteriv) (GET_by_offset(disp, _gloffset_ColorTableParameteriv)); -} - -static inline void SET_ColorTableParameteriv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLenum, const GLint *)) { - SET_by_offset(disp, _gloffset_ColorTableParameteriv, fn); -} - -typedef void (GLAPIENTRYP _glptr_CopyColorTable)(GLenum, GLenum, GLint, GLint, GLsizei); -#define CALL_CopyColorTable(disp, parameters) \ - (* GET_CopyColorTable(disp)) parameters -static inline _glptr_CopyColorTable GET_CopyColorTable(struct _glapi_table *disp) { - return (_glptr_CopyColorTable) (GET_by_offset(disp, _gloffset_CopyColorTable)); -} - -static inline void SET_CopyColorTable(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLenum, GLint, GLint, GLsizei)) { - SET_by_offset(disp, _gloffset_CopyColorTable, fn); -} - -typedef void (GLAPIENTRYP _glptr_GetColorTable)(GLenum, GLenum, GLenum, GLvoid *); -#define CALL_GetColorTable(disp, parameters) \ - (* GET_GetColorTable(disp)) parameters -static inline _glptr_GetColorTable GET_GetColorTable(struct _glapi_table *disp) { - return (_glptr_GetColorTable) (GET_by_offset(disp, _gloffset_GetColorTable)); -} - -static inline void SET_GetColorTable(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLenum, GLenum, GLvoid *)) { - SET_by_offset(disp, _gloffset_GetColorTable, fn); -} - -typedef void (GLAPIENTRYP _glptr_GetColorTableParameterfv)(GLenum, GLenum, GLfloat *); -#define CALL_GetColorTableParameterfv(disp, parameters) \ - (* GET_GetColorTableParameterfv(disp)) parameters -static inline _glptr_GetColorTableParameterfv GET_GetColorTableParameterfv(struct _glapi_table *disp) { - return (_glptr_GetColorTableParameterfv) (GET_by_offset(disp, _gloffset_GetColorTableParameterfv)); -} - -static inline void SET_GetColorTableParameterfv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLenum, GLfloat *)) { - SET_by_offset(disp, _gloffset_GetColorTableParameterfv, fn); -} - -typedef void (GLAPIENTRYP _glptr_GetColorTableParameteriv)(GLenum, GLenum, GLint *); -#define CALL_GetColorTableParameteriv(disp, parameters) \ - (* GET_GetColorTableParameteriv(disp)) parameters -static inline _glptr_GetColorTableParameteriv GET_GetColorTableParameteriv(struct _glapi_table *disp) { - return (_glptr_GetColorTableParameteriv) (GET_by_offset(disp, _gloffset_GetColorTableParameteriv)); -} - -static inline void SET_GetColorTableParameteriv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLenum, GLint *)) { - SET_by_offset(disp, _gloffset_GetColorTableParameteriv, fn); -} - -typedef void (GLAPIENTRYP _glptr_ColorSubTable)(GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); -#define CALL_ColorSubTable(disp, parameters) \ - (* GET_ColorSubTable(disp)) parameters -static inline _glptr_ColorSubTable GET_ColorSubTable(struct _glapi_table *disp) { - return (_glptr_ColorSubTable) (GET_by_offset(disp, _gloffset_ColorSubTable)); -} - -static inline void SET_ColorSubTable(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *)) { - SET_by_offset(disp, _gloffset_ColorSubTable, fn); -} - -typedef void (GLAPIENTRYP _glptr_CopyColorSubTable)(GLenum, GLsizei, GLint, GLint, GLsizei); -#define CALL_CopyColorSubTable(disp, parameters) \ - (* GET_CopyColorSubTable(disp)) parameters -static inline _glptr_CopyColorSubTable GET_CopyColorSubTable(struct _glapi_table *disp) { - return (_glptr_CopyColorSubTable) (GET_by_offset(disp, _gloffset_CopyColorSubTable)); -} - -static inline void SET_CopyColorSubTable(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLsizei, GLint, GLint, GLsizei)) { - SET_by_offset(disp, _gloffset_CopyColorSubTable, fn); -} - -typedef void (GLAPIENTRYP _glptr_ConvolutionFilter1D)(GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); -#define CALL_ConvolutionFilter1D(disp, parameters) \ - (* GET_ConvolutionFilter1D(disp)) parameters -static inline _glptr_ConvolutionFilter1D GET_ConvolutionFilter1D(struct _glapi_table *disp) { - return (_glptr_ConvolutionFilter1D) (GET_by_offset(disp, _gloffset_ConvolutionFilter1D)); -} - -static inline void SET_ConvolutionFilter1D(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *)) { - SET_by_offset(disp, _gloffset_ConvolutionFilter1D, fn); -} - -typedef void (GLAPIENTRYP _glptr_ConvolutionFilter2D)(GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); -#define CALL_ConvolutionFilter2D(disp, parameters) \ - (* GET_ConvolutionFilter2D(disp)) parameters -static inline _glptr_ConvolutionFilter2D GET_ConvolutionFilter2D(struct _glapi_table *disp) { - return (_glptr_ConvolutionFilter2D) (GET_by_offset(disp, _gloffset_ConvolutionFilter2D)); -} - -static inline void SET_ConvolutionFilter2D(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *)) { - SET_by_offset(disp, _gloffset_ConvolutionFilter2D, fn); -} - -typedef void (GLAPIENTRYP _glptr_ConvolutionParameterf)(GLenum, GLenum, GLfloat); -#define CALL_ConvolutionParameterf(disp, parameters) \ - (* GET_ConvolutionParameterf(disp)) parameters -static inline _glptr_ConvolutionParameterf GET_ConvolutionParameterf(struct _glapi_table *disp) { - return (_glptr_ConvolutionParameterf) (GET_by_offset(disp, _gloffset_ConvolutionParameterf)); -} - -static inline void SET_ConvolutionParameterf(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLenum, GLfloat)) { - SET_by_offset(disp, _gloffset_ConvolutionParameterf, fn); -} - -typedef void (GLAPIENTRYP _glptr_ConvolutionParameterfv)(GLenum, GLenum, const GLfloat *); -#define CALL_ConvolutionParameterfv(disp, parameters) \ - (* GET_ConvolutionParameterfv(disp)) parameters -static inline _glptr_ConvolutionParameterfv GET_ConvolutionParameterfv(struct _glapi_table *disp) { - return (_glptr_ConvolutionParameterfv) (GET_by_offset(disp, _gloffset_ConvolutionParameterfv)); -} - -static inline void SET_ConvolutionParameterfv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLenum, const GLfloat *)) { - SET_by_offset(disp, _gloffset_ConvolutionParameterfv, fn); -} - -typedef void (GLAPIENTRYP _glptr_ConvolutionParameteri)(GLenum, GLenum, GLint); -#define CALL_ConvolutionParameteri(disp, parameters) \ - (* GET_ConvolutionParameteri(disp)) parameters -static inline _glptr_ConvolutionParameteri GET_ConvolutionParameteri(struct _glapi_table *disp) { - return (_glptr_ConvolutionParameteri) (GET_by_offset(disp, _gloffset_ConvolutionParameteri)); -} - -static inline void SET_ConvolutionParameteri(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLenum, GLint)) { - SET_by_offset(disp, _gloffset_ConvolutionParameteri, fn); -} - -typedef void (GLAPIENTRYP _glptr_ConvolutionParameteriv)(GLenum, GLenum, const GLint *); -#define CALL_ConvolutionParameteriv(disp, parameters) \ - (* GET_ConvolutionParameteriv(disp)) parameters -static inline _glptr_ConvolutionParameteriv GET_ConvolutionParameteriv(struct _glapi_table *disp) { - return (_glptr_ConvolutionParameteriv) (GET_by_offset(disp, _gloffset_ConvolutionParameteriv)); -} - -static inline void SET_ConvolutionParameteriv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLenum, const GLint *)) { - SET_by_offset(disp, _gloffset_ConvolutionParameteriv, fn); -} - -typedef void (GLAPIENTRYP _glptr_CopyConvolutionFilter1D)(GLenum, GLenum, GLint, GLint, GLsizei); -#define CALL_CopyConvolutionFilter1D(disp, parameters) \ - (* GET_CopyConvolutionFilter1D(disp)) parameters -static inline _glptr_CopyConvolutionFilter1D GET_CopyConvolutionFilter1D(struct _glapi_table *disp) { - return (_glptr_CopyConvolutionFilter1D) (GET_by_offset(disp, _gloffset_CopyConvolutionFilter1D)); -} - -static inline void SET_CopyConvolutionFilter1D(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLenum, GLint, GLint, GLsizei)) { - SET_by_offset(disp, _gloffset_CopyConvolutionFilter1D, fn); -} - -typedef void (GLAPIENTRYP _glptr_CopyConvolutionFilter2D)(GLenum, GLenum, GLint, GLint, GLsizei, GLsizei); -#define CALL_CopyConvolutionFilter2D(disp, parameters) \ - (* GET_CopyConvolutionFilter2D(disp)) parameters -static inline _glptr_CopyConvolutionFilter2D GET_CopyConvolutionFilter2D(struct _glapi_table *disp) { - return (_glptr_CopyConvolutionFilter2D) (GET_by_offset(disp, _gloffset_CopyConvolutionFilter2D)); -} - -static inline void SET_CopyConvolutionFilter2D(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLenum, GLint, GLint, GLsizei, GLsizei)) { - SET_by_offset(disp, _gloffset_CopyConvolutionFilter2D, fn); -} - -typedef void (GLAPIENTRYP _glptr_GetConvolutionFilter)(GLenum, GLenum, GLenum, GLvoid *); -#define CALL_GetConvolutionFilter(disp, parameters) \ - (* GET_GetConvolutionFilter(disp)) parameters -static inline _glptr_GetConvolutionFilter GET_GetConvolutionFilter(struct _glapi_table *disp) { - return (_glptr_GetConvolutionFilter) (GET_by_offset(disp, _gloffset_GetConvolutionFilter)); -} - -static inline void SET_GetConvolutionFilter(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLenum, GLenum, GLvoid *)) { - SET_by_offset(disp, _gloffset_GetConvolutionFilter, fn); -} - -typedef void (GLAPIENTRYP _glptr_GetConvolutionParameterfv)(GLenum, GLenum, GLfloat *); -#define CALL_GetConvolutionParameterfv(disp, parameters) \ - (* GET_GetConvolutionParameterfv(disp)) parameters -static inline _glptr_GetConvolutionParameterfv GET_GetConvolutionParameterfv(struct _glapi_table *disp) { - return (_glptr_GetConvolutionParameterfv) (GET_by_offset(disp, _gloffset_GetConvolutionParameterfv)); -} - -static inline void SET_GetConvolutionParameterfv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLenum, GLfloat *)) { - SET_by_offset(disp, _gloffset_GetConvolutionParameterfv, fn); -} - -typedef void (GLAPIENTRYP _glptr_GetConvolutionParameteriv)(GLenum, GLenum, GLint *); -#define CALL_GetConvolutionParameteriv(disp, parameters) \ - (* GET_GetConvolutionParameteriv(disp)) parameters -static inline _glptr_GetConvolutionParameteriv GET_GetConvolutionParameteriv(struct _glapi_table *disp) { - return (_glptr_GetConvolutionParameteriv) (GET_by_offset(disp, _gloffset_GetConvolutionParameteriv)); -} - -static inline void SET_GetConvolutionParameteriv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLenum, GLint *)) { - SET_by_offset(disp, _gloffset_GetConvolutionParameteriv, fn); -} - -typedef void (GLAPIENTRYP _glptr_GetSeparableFilter)(GLenum, GLenum, GLenum, GLvoid *, GLvoid *, GLvoid *); -#define CALL_GetSeparableFilter(disp, parameters) \ - (* GET_GetSeparableFilter(disp)) parameters -static inline _glptr_GetSeparableFilter GET_GetSeparableFilter(struct _glapi_table *disp) { - return (_glptr_GetSeparableFilter) (GET_by_offset(disp, _gloffset_GetSeparableFilter)); -} - -static inline void SET_GetSeparableFilter(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLenum, GLenum, GLvoid *, GLvoid *, GLvoid *)) { - SET_by_offset(disp, _gloffset_GetSeparableFilter, fn); -} - -typedef void (GLAPIENTRYP _glptr_SeparableFilter2D)(GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *, const GLvoid *); -#define CALL_SeparableFilter2D(disp, parameters) \ - (* GET_SeparableFilter2D(disp)) parameters -static inline _glptr_SeparableFilter2D GET_SeparableFilter2D(struct _glapi_table *disp) { - return (_glptr_SeparableFilter2D) (GET_by_offset(disp, _gloffset_SeparableFilter2D)); -} - -static inline void SET_SeparableFilter2D(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *, const GLvoid *)) { - SET_by_offset(disp, _gloffset_SeparableFilter2D, fn); -} - -typedef const GLubyte * (GLAPIENTRYP _glptr_GetStringi)(GLenum, GLuint); -#define CALL_GetStringi(disp, parameters) \ - (* GET_GetStringi(disp)) parameters -static inline _glptr_GetStringi GET_GetStringi(struct _glapi_table *disp) { - return (_glptr_GetStringi) (GET_by_offset(disp, _gloffset_GetStringi)); -} - -static inline void SET_GetStringi(struct _glapi_table *disp, const GLubyte * (GLAPIENTRYP fn)(GLenum, GLuint)) { - SET_by_offset(disp, _gloffset_GetStringi, fn); -} - typedef void (GLAPIENTRYP _glptr_GetBufferParameteri64v)(GLenum, GLenum, GLint64 *); #define CALL_GetBufferParameteri64v(disp, parameters) \ (* GET_GetBufferParameteri64v(disp)) parameters @@ -5104,193 +4773,6 @@ static inline void SET_UnlockArraysEXT(struct _glapi_table *disp, void (GLAPIENT SET_by_offset(disp, _gloffset_UnlockArraysEXT, fn); } -typedef void (GLAPIENTRYP _glptr_SecondaryColor3bEXT)(GLbyte, GLbyte, GLbyte); -#define CALL_SecondaryColor3bEXT(disp, parameters) \ - (* GET_SecondaryColor3bEXT(disp)) parameters -static inline _glptr_SecondaryColor3bEXT GET_SecondaryColor3bEXT(struct _glapi_table *disp) { - return (_glptr_SecondaryColor3bEXT) (GET_by_offset(disp, _gloffset_SecondaryColor3bEXT)); -} - -static inline void SET_SecondaryColor3bEXT(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLbyte, GLbyte, GLbyte)) { - SET_by_offset(disp, _gloffset_SecondaryColor3bEXT, fn); -} - -typedef void (GLAPIENTRYP _glptr_SecondaryColor3bvEXT)(const GLbyte *); -#define CALL_SecondaryColor3bvEXT(disp, parameters) \ - (* GET_SecondaryColor3bvEXT(disp)) parameters -static inline _glptr_SecondaryColor3bvEXT GET_SecondaryColor3bvEXT(struct _glapi_table *disp) { - return (_glptr_SecondaryColor3bvEXT) (GET_by_offset(disp, _gloffset_SecondaryColor3bvEXT)); -} - -static inline void SET_SecondaryColor3bvEXT(struct _glapi_table *disp, void (GLAPIENTRYP fn)(const GLbyte *)) { - SET_by_offset(disp, _gloffset_SecondaryColor3bvEXT, fn); -} - -typedef void (GLAPIENTRYP _glptr_SecondaryColor3dEXT)(GLdouble, GLdouble, GLdouble); -#define CALL_SecondaryColor3dEXT(disp, parameters) \ - (* GET_SecondaryColor3dEXT(disp)) parameters -static inline _glptr_SecondaryColor3dEXT GET_SecondaryColor3dEXT(struct _glapi_table *disp) { - return (_glptr_SecondaryColor3dEXT) (GET_by_offset(disp, _gloffset_SecondaryColor3dEXT)); -} - -static inline void SET_SecondaryColor3dEXT(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLdouble, GLdouble, GLdouble)) { - SET_by_offset(disp, _gloffset_SecondaryColor3dEXT, fn); -} - -typedef void (GLAPIENTRYP _glptr_SecondaryColor3dvEXT)(const GLdouble *); -#define CALL_SecondaryColor3dvEXT(disp, parameters) \ - (* GET_SecondaryColor3dvEXT(disp)) parameters -static inline _glptr_SecondaryColor3dvEXT GET_SecondaryColor3dvEXT(struct _glapi_table *disp) { - return (_glptr_SecondaryColor3dvEXT) (GET_by_offset(disp, _gloffset_SecondaryColor3dvEXT)); -} - -static inline void SET_SecondaryColor3dvEXT(struct _glapi_table *disp, void (GLAPIENTRYP fn)(const GLdouble *)) { - SET_by_offset(disp, _gloffset_SecondaryColor3dvEXT, fn); -} - -typedef void (GLAPIENTRYP _glptr_SecondaryColor3fEXT)(GLfloat, GLfloat, GLfloat); -#define CALL_SecondaryColor3fEXT(disp, parameters) \ - (* GET_SecondaryColor3fEXT(disp)) parameters -static inline _glptr_SecondaryColor3fEXT GET_SecondaryColor3fEXT(struct _glapi_table *disp) { - return (_glptr_SecondaryColor3fEXT) (GET_by_offset(disp, _gloffset_SecondaryColor3fEXT)); -} - -static inline void SET_SecondaryColor3fEXT(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLfloat, GLfloat, GLfloat)) { - SET_by_offset(disp, _gloffset_SecondaryColor3fEXT, fn); -} - -typedef void (GLAPIENTRYP _glptr_SecondaryColor3fvEXT)(const GLfloat *); -#define CALL_SecondaryColor3fvEXT(disp, parameters) \ - (* GET_SecondaryColor3fvEXT(disp)) parameters -static inline _glptr_SecondaryColor3fvEXT GET_SecondaryColor3fvEXT(struct _glapi_table *disp) { - return (_glptr_SecondaryColor3fvEXT) (GET_by_offset(disp, _gloffset_SecondaryColor3fvEXT)); -} - -static inline void SET_SecondaryColor3fvEXT(struct _glapi_table *disp, void (GLAPIENTRYP fn)(const GLfloat *)) { - SET_by_offset(disp, _gloffset_SecondaryColor3fvEXT, fn); -} - -typedef void (GLAPIENTRYP _glptr_SecondaryColor3iEXT)(GLint, GLint, GLint); -#define CALL_SecondaryColor3iEXT(disp, parameters) \ - (* GET_SecondaryColor3iEXT(disp)) parameters -static inline _glptr_SecondaryColor3iEXT GET_SecondaryColor3iEXT(struct _glapi_table *disp) { - return (_glptr_SecondaryColor3iEXT) (GET_by_offset(disp, _gloffset_SecondaryColor3iEXT)); -} - -static inline void SET_SecondaryColor3iEXT(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLint, GLint, GLint)) { - SET_by_offset(disp, _gloffset_SecondaryColor3iEXT, fn); -} - -typedef void (GLAPIENTRYP _glptr_SecondaryColor3ivEXT)(const GLint *); -#define CALL_SecondaryColor3ivEXT(disp, parameters) \ - (* GET_SecondaryColor3ivEXT(disp)) parameters -static inline _glptr_SecondaryColor3ivEXT GET_SecondaryColor3ivEXT(struct _glapi_table *disp) { - return (_glptr_SecondaryColor3ivEXT) (GET_by_offset(disp, _gloffset_SecondaryColor3ivEXT)); -} - -static inline void SET_SecondaryColor3ivEXT(struct _glapi_table *disp, void (GLAPIENTRYP fn)(const GLint *)) { - SET_by_offset(disp, _gloffset_SecondaryColor3ivEXT, fn); -} - -typedef void (GLAPIENTRYP _glptr_SecondaryColor3sEXT)(GLshort, GLshort, GLshort); -#define CALL_SecondaryColor3sEXT(disp, parameters) \ - (* GET_SecondaryColor3sEXT(disp)) parameters -static inline _glptr_SecondaryColor3sEXT GET_SecondaryColor3sEXT(struct _glapi_table *disp) { - return (_glptr_SecondaryColor3sEXT) (GET_by_offset(disp, _gloffset_SecondaryColor3sEXT)); -} - -static inline void SET_SecondaryColor3sEXT(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLshort, GLshort, GLshort)) { - SET_by_offset(disp, _gloffset_SecondaryColor3sEXT, fn); -} - -typedef void (GLAPIENTRYP _glptr_SecondaryColor3svEXT)(const GLshort *); -#define CALL_SecondaryColor3svEXT(disp, parameters) \ - (* GET_SecondaryColor3svEXT(disp)) parameters -static inline _glptr_SecondaryColor3svEXT GET_SecondaryColor3svEXT(struct _glapi_table *disp) { - return (_glptr_SecondaryColor3svEXT) (GET_by_offset(disp, _gloffset_SecondaryColor3svEXT)); -} - -static inline void SET_SecondaryColor3svEXT(struct _glapi_table *disp, void (GLAPIENTRYP fn)(const GLshort *)) { - SET_by_offset(disp, _gloffset_SecondaryColor3svEXT, fn); -} - -typedef void (GLAPIENTRYP _glptr_SecondaryColor3ubEXT)(GLubyte, GLubyte, GLubyte); -#define CALL_SecondaryColor3ubEXT(disp, parameters) \ - (* GET_SecondaryColor3ubEXT(disp)) parameters -static inline _glptr_SecondaryColor3ubEXT GET_SecondaryColor3ubEXT(struct _glapi_table *disp) { - return (_glptr_SecondaryColor3ubEXT) (GET_by_offset(disp, _gloffset_SecondaryColor3ubEXT)); -} - -static inline void SET_SecondaryColor3ubEXT(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLubyte, GLubyte, GLubyte)) { - SET_by_offset(disp, _gloffset_SecondaryColor3ubEXT, fn); -} - -typedef void (GLAPIENTRYP _glptr_SecondaryColor3ubvEXT)(const GLubyte *); -#define CALL_SecondaryColor3ubvEXT(disp, parameters) \ - (* GET_SecondaryColor3ubvEXT(disp)) parameters -static inline _glptr_SecondaryColor3ubvEXT GET_SecondaryColor3ubvEXT(struct _glapi_table *disp) { - return (_glptr_SecondaryColor3ubvEXT) (GET_by_offset(disp, _gloffset_SecondaryColor3ubvEXT)); -} - -static inline void SET_SecondaryColor3ubvEXT(struct _glapi_table *disp, void (GLAPIENTRYP fn)(const GLubyte *)) { - SET_by_offset(disp, _gloffset_SecondaryColor3ubvEXT, fn); -} - -typedef void (GLAPIENTRYP _glptr_SecondaryColor3uiEXT)(GLuint, GLuint, GLuint); -#define CALL_SecondaryColor3uiEXT(disp, parameters) \ - (* GET_SecondaryColor3uiEXT(disp)) parameters -static inline _glptr_SecondaryColor3uiEXT GET_SecondaryColor3uiEXT(struct _glapi_table *disp) { - return (_glptr_SecondaryColor3uiEXT) (GET_by_offset(disp, _gloffset_SecondaryColor3uiEXT)); -} - -static inline void SET_SecondaryColor3uiEXT(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLuint, GLuint)) { - SET_by_offset(disp, _gloffset_SecondaryColor3uiEXT, fn); -} - -typedef void (GLAPIENTRYP _glptr_SecondaryColor3uivEXT)(const GLuint *); -#define CALL_SecondaryColor3uivEXT(disp, parameters) \ - (* GET_SecondaryColor3uivEXT(disp)) parameters -static inline _glptr_SecondaryColor3uivEXT GET_SecondaryColor3uivEXT(struct _glapi_table *disp) { - return (_glptr_SecondaryColor3uivEXT) (GET_by_offset(disp, _gloffset_SecondaryColor3uivEXT)); -} - -static inline void SET_SecondaryColor3uivEXT(struct _glapi_table *disp, void (GLAPIENTRYP fn)(const GLuint *)) { - SET_by_offset(disp, _gloffset_SecondaryColor3uivEXT, fn); -} - -typedef void (GLAPIENTRYP _glptr_SecondaryColor3usEXT)(GLushort, GLushort, GLushort); -#define CALL_SecondaryColor3usEXT(disp, parameters) \ - (* GET_SecondaryColor3usEXT(disp)) parameters -static inline _glptr_SecondaryColor3usEXT GET_SecondaryColor3usEXT(struct _glapi_table *disp) { - return (_glptr_SecondaryColor3usEXT) (GET_by_offset(disp, _gloffset_SecondaryColor3usEXT)); -} - -static inline void SET_SecondaryColor3usEXT(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLushort, GLushort, GLushort)) { - SET_by_offset(disp, _gloffset_SecondaryColor3usEXT, fn); -} - -typedef void (GLAPIENTRYP _glptr_SecondaryColor3usvEXT)(const GLushort *); -#define CALL_SecondaryColor3usvEXT(disp, parameters) \ - (* GET_SecondaryColor3usvEXT(disp)) parameters -static inline _glptr_SecondaryColor3usvEXT GET_SecondaryColor3usvEXT(struct _glapi_table *disp) { - return (_glptr_SecondaryColor3usvEXT) (GET_by_offset(disp, _gloffset_SecondaryColor3usvEXT)); -} - -static inline void SET_SecondaryColor3usvEXT(struct _glapi_table *disp, void (GLAPIENTRYP fn)(const GLushort *)) { - SET_by_offset(disp, _gloffset_SecondaryColor3usvEXT, fn); -} - -typedef void (GLAPIENTRYP _glptr_SecondaryColorPointerEXT)(GLint, GLenum, GLsizei, const GLvoid *); -#define CALL_SecondaryColorPointerEXT(disp, parameters) \ - (* GET_SecondaryColorPointerEXT(disp)) parameters -static inline _glptr_SecondaryColorPointerEXT GET_SecondaryColorPointerEXT(struct _glapi_table *disp) { - return (_glptr_SecondaryColorPointerEXT) (GET_by_offset(disp, _gloffset_SecondaryColorPointerEXT)); -} - -static inline void SET_SecondaryColorPointerEXT(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLint, GLenum, GLsizei, const GLvoid *)) { - SET_by_offset(disp, _gloffset_SecondaryColorPointerEXT, fn); -} - typedef void (GLAPIENTRYP _glptr_FogCoordPointerEXT)(GLenum, GLsizei, const GLvoid *); #define CALL_FogCoordPointerEXT(disp, parameters) \ (* GET_FogCoordPointerEXT(disp)) parameters @@ -5357,17 +4839,6 @@ static inline void SET_PixelTexGenSGIX(struct _glapi_table *disp, void (GLAPIENT SET_by_offset(disp, _gloffset_PixelTexGenSGIX, fn); } -typedef void (GLAPIENTRYP _glptr_BlendFuncSeparateEXT)(GLenum, GLenum, GLenum, GLenum); -#define CALL_BlendFuncSeparateEXT(disp, parameters) \ - (* GET_BlendFuncSeparateEXT(disp)) parameters -static inline _glptr_BlendFuncSeparateEXT GET_BlendFuncSeparateEXT(struct _glapi_table *disp) { - return (_glptr_BlendFuncSeparateEXT) (GET_by_offset(disp, _gloffset_BlendFuncSeparateEXT)); -} - -static inline void SET_BlendFuncSeparateEXT(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLenum, GLenum, GLenum)) { - SET_by_offset(disp, _gloffset_BlendFuncSeparateEXT, fn); -} - typedef void (GLAPIENTRYP _glptr_FlushVertexArrayRangeNV)(void); #define CALL_FlushVertexArrayRangeNV(disp, parameters) \ (* GET_FlushVertexArrayRangeNV(disp)) parameters @@ -6226,17 +5697,6 @@ static inline void SET_DepthBoundsEXT(struct _glapi_table *disp, void (GLAPIENTR SET_by_offset(disp, _gloffset_DepthBoundsEXT, fn); } -typedef void (GLAPIENTRYP _glptr_BlendEquationSeparateEXT)(GLenum, GLenum); -#define CALL_BlendEquationSeparateEXT(disp, parameters) \ - (* GET_BlendEquationSeparateEXT(disp)) parameters -static inline _glptr_BlendEquationSeparateEXT GET_BlendEquationSeparateEXT(struct _glapi_table *disp) { - return (_glptr_BlendEquationSeparateEXT) (GET_by_offset(disp, _gloffset_BlendEquationSeparateEXT)); -} - -static inline void SET_BlendEquationSeparateEXT(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLenum)) { - SET_by_offset(disp, _gloffset_BlendEquationSeparateEXT, fn); -} - typedef void (GLAPIENTRYP _glptr_BufferParameteriAPPLE)(GLenum, GLenum, GLint); #define CALL_BufferParameteriAPPLE(disp, parameters) \ (* GET_BufferParameteriAPPLE(disp)) parameters diff --git a/reactos/dll/opengl/mesa/main/dlist.c b/reactos/dll/opengl/mesa/main/dlist.c index ee0179cfdfa..ee3a7ade5cc 100644 --- a/reactos/dll/opengl/mesa/main/dlist.c +++ b/reactos/dll/opengl/mesa/main/dlist.c @@ -146,10 +146,7 @@ typedef enum OPCODE_ALPHA_FUNC, OPCODE_BIND_TEXTURE, OPCODE_BITMAP, - OPCODE_BLEND_COLOR, - OPCODE_BLEND_EQUATION, - OPCODE_BLEND_EQUATION_SEPARATE, - OPCODE_BLEND_FUNC_SEPARATE, + OPCODE_BLEND_FUNC, OPCODE_CALL_LIST, OPCODE_CALL_LIST_OFFSET, @@ -162,18 +159,6 @@ typedef enum OPCODE_CLIP_PLANE, OPCODE_COLOR_MASK, OPCODE_COLOR_MATERIAL, - OPCODE_COLOR_TABLE, - OPCODE_COLOR_TABLE_PARAMETER_FV, - OPCODE_COLOR_TABLE_PARAMETER_IV, - OPCODE_COLOR_SUB_TABLE, - OPCODE_CONVOLUTION_FILTER_1D, - OPCODE_CONVOLUTION_FILTER_2D, - OPCODE_CONVOLUTION_PARAMETER_I, - OPCODE_CONVOLUTION_PARAMETER_IV, - OPCODE_CONVOLUTION_PARAMETER_F, - OPCODE_CONVOLUTION_PARAMETER_FV, - OPCODE_COPY_COLOR_SUB_TABLE, - OPCODE_COPY_COLOR_TABLE, OPCODE_COPY_PIXELS, OPCODE_COPY_TEX_IMAGE1D, OPCODE_COPY_TEX_IMAGE2D, @@ -464,22 +449,6 @@ _mesa_delete_list(struct gl_context *ctx, struct gl_display_list *dlist) free(n[7].data); n += InstSize[n[0].opcode]; break; - case OPCODE_COLOR_TABLE: - free(n[6].data); - n += InstSize[n[0].opcode]; - break; - case OPCODE_COLOR_SUB_TABLE: - free(n[6].data); - n += InstSize[n[0].opcode]; - break; - case OPCODE_CONVOLUTION_FILTER_1D: - free(n[6].data); - n += InstSize[n[0].opcode]; - break; - case OPCODE_CONVOLUTION_FILTER_2D: - free(n[7].data); - n += InstSize[n[0].opcode]; - break; case OPCODE_POLYGON_STIPPLE: free(n[1].data); n += InstSize[n[0].opcode]; @@ -836,85 +805,23 @@ save_Bitmap(GLsizei width, GLsizei height, } -static void GLAPIENTRY -save_BlendEquation(GLenum mode) -{ - GET_CURRENT_CONTEXT(ctx); - Node *n; - ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); - n = alloc_instruction(ctx, OPCODE_BLEND_EQUATION, 1); - if (n) { - n[1].e = mode; - } - if (ctx->ExecuteFlag) { - CALL_BlendEquation(ctx->Exec, (mode)); - } -} - - -static void GLAPIENTRY -save_BlendEquationSeparateEXT(GLenum modeRGB, GLenum modeA) -{ - GET_CURRENT_CONTEXT(ctx); - Node *n; - ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); - n = alloc_instruction(ctx, OPCODE_BLEND_EQUATION_SEPARATE, 2); - if (n) { - n[1].e = modeRGB; - n[2].e = modeA; - } - if (ctx->ExecuteFlag) { - CALL_BlendEquationSeparateEXT(ctx->Exec, (modeRGB, modeA)); - } -} - - -static void GLAPIENTRY -save_BlendFuncSeparateEXT(GLenum sfactorRGB, GLenum dfactorRGB, - GLenum sfactorA, GLenum dfactorA) -{ - GET_CURRENT_CONTEXT(ctx); - Node *n; - ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); - n = alloc_instruction(ctx, OPCODE_BLEND_FUNC_SEPARATE, 4); - if (n) { - n[1].e = sfactorRGB; - n[2].e = dfactorRGB; - n[3].e = sfactorA; - n[4].e = dfactorA; - } - if (ctx->ExecuteFlag) { - CALL_BlendFuncSeparateEXT(ctx->Exec, - (sfactorRGB, dfactorRGB, sfactorA, dfactorA)); - } -} - - static void GLAPIENTRY save_BlendFunc(GLenum srcfactor, GLenum dstfactor) -{ - save_BlendFuncSeparateEXT(srcfactor, dstfactor, srcfactor, dstfactor); -} - - -static void GLAPIENTRY -save_BlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) { GET_CURRENT_CONTEXT(ctx); Node *n; ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); - n = alloc_instruction(ctx, OPCODE_BLEND_COLOR, 4); + n = alloc_instruction(ctx, OPCODE_BLEND_FUNC, 2); if (n) { - n[1].f = red; - n[2].f = green; - n[3].f = blue; - n[4].f = alpha; + n[1].e = srcfactor; + n[2].e = dstfactor; } if (ctx->ExecuteFlag) { - CALL_BlendColor(ctx->Exec, (red, green, blue, alpha)); + CALL_BlendFunc(ctx->Exec, (srcfactor, dstfactor)); } } + static void invalidate_saved_current_state( struct gl_context *ctx ) { GLint i; @@ -1160,313 +1067,6 @@ save_ColorMaterial(GLenum face, GLenum mode) } -static void GLAPIENTRY -save_ColorTable(GLenum target, GLenum internalFormat, - GLsizei width, GLenum format, GLenum type, - const GLvoid * table) -{ - GET_CURRENT_CONTEXT(ctx); - if (_mesa_is_proxy_texture(target)) { - /* execute immediately */ - CALL_ColorTable(ctx->Exec, (target, internalFormat, width, - format, type, table)); - } - else { - Node *n; - ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); - n = alloc_instruction(ctx, OPCODE_COLOR_TABLE, 6); - if (n) { - n[1].e = target; - n[2].e = internalFormat; - n[3].i = width; - n[4].e = format; - n[5].e = type; - n[6].data = unpack_image(ctx, 1, width, 1, 1, format, type, table, - &ctx->Unpack); - } - if (ctx->ExecuteFlag) { - CALL_ColorTable(ctx->Exec, (target, internalFormat, width, - format, type, table)); - } - } -} - - - -static void GLAPIENTRY -save_ColorTableParameterfv(GLenum target, GLenum pname, - const GLfloat *params) -{ - GET_CURRENT_CONTEXT(ctx); - Node *n; - - ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); - - n = alloc_instruction(ctx, OPCODE_COLOR_TABLE_PARAMETER_FV, 6); - if (n) { - n[1].e = target; - n[2].e = pname; - n[3].f = params[0]; - if (pname == GL_COLOR_TABLE_SGI || - pname == GL_POST_CONVOLUTION_COLOR_TABLE_SGI || - pname == GL_TEXTURE_COLOR_TABLE_SGI) { - n[4].f = params[1]; - n[5].f = params[2]; - n[6].f = params[3]; - } - } - - if (ctx->ExecuteFlag) { - CALL_ColorTableParameterfv(ctx->Exec, (target, pname, params)); - } -} - - -static void GLAPIENTRY -save_ColorTableParameteriv(GLenum target, GLenum pname, const GLint *params) -{ - GET_CURRENT_CONTEXT(ctx); - Node *n; - - ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); - - n = alloc_instruction(ctx, OPCODE_COLOR_TABLE_PARAMETER_IV, 6); - if (n) { - n[1].e = target; - n[2].e = pname; - n[3].i = params[0]; - if (pname == GL_COLOR_TABLE_SGI || - pname == GL_POST_CONVOLUTION_COLOR_TABLE_SGI || - pname == GL_TEXTURE_COLOR_TABLE_SGI) { - n[4].i = params[1]; - n[5].i = params[2]; - n[6].i = params[3]; - } - } - - if (ctx->ExecuteFlag) { - CALL_ColorTableParameteriv(ctx->Exec, (target, pname, params)); - } -} - - - -static void GLAPIENTRY -save_ColorSubTable(GLenum target, GLsizei start, GLsizei count, - GLenum format, GLenum type, const GLvoid * table) -{ - GET_CURRENT_CONTEXT(ctx); - Node *n; - ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); - n = alloc_instruction(ctx, OPCODE_COLOR_SUB_TABLE, 6); - if (n) { - n[1].e = target; - n[2].i = start; - n[3].i = count; - n[4].e = format; - n[5].e = type; - n[6].data = unpack_image(ctx, 1, count, 1, 1, format, type, table, - &ctx->Unpack); - } - if (ctx->ExecuteFlag) { - CALL_ColorSubTable(ctx->Exec, - (target, start, count, format, type, table)); - } -} - - -static void GLAPIENTRY -save_CopyColorSubTable(GLenum target, GLsizei start, - GLint x, GLint y, GLsizei width) -{ - GET_CURRENT_CONTEXT(ctx); - Node *n; - - ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); - n = alloc_instruction(ctx, OPCODE_COPY_COLOR_SUB_TABLE, 5); - if (n) { - n[1].e = target; - n[2].i = start; - n[3].i = x; - n[4].i = y; - n[5].i = width; - } - if (ctx->ExecuteFlag) { - CALL_CopyColorSubTable(ctx->Exec, (target, start, x, y, width)); - } -} - - -static void GLAPIENTRY -save_CopyColorTable(GLenum target, GLenum internalformat, - GLint x, GLint y, GLsizei width) -{ - GET_CURRENT_CONTEXT(ctx); - Node *n; - - ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); - n = alloc_instruction(ctx, OPCODE_COPY_COLOR_TABLE, 5); - if (n) { - n[1].e = target; - n[2].e = internalformat; - n[3].i = x; - n[4].i = y; - n[5].i = width; - } - if (ctx->ExecuteFlag) { - CALL_CopyColorTable(ctx->Exec, (target, internalformat, x, y, width)); - } -} - - -static void GLAPIENTRY -save_ConvolutionFilter1D(GLenum target, GLenum internalFormat, GLsizei width, - GLenum format, GLenum type, const GLvoid * filter) -{ - GET_CURRENT_CONTEXT(ctx); - Node *n; - - ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); - - n = alloc_instruction(ctx, OPCODE_CONVOLUTION_FILTER_1D, 6); - if (n) { - n[1].e = target; - n[2].e = internalFormat; - n[3].i = width; - n[4].e = format; - n[5].e = type; - n[6].data = unpack_image(ctx, 1, width, 1, 1, format, type, filter, - &ctx->Unpack); - } - if (ctx->ExecuteFlag) { - CALL_ConvolutionFilter1D(ctx->Exec, (target, internalFormat, width, - format, type, filter)); - } -} - - -static void GLAPIENTRY -save_ConvolutionFilter2D(GLenum target, GLenum internalFormat, - GLsizei width, GLsizei height, GLenum format, - GLenum type, const GLvoid * filter) -{ - GET_CURRENT_CONTEXT(ctx); - Node *n; - - ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); - - n = alloc_instruction(ctx, OPCODE_CONVOLUTION_FILTER_2D, 7); - if (n) { - n[1].e = target; - n[2].e = internalFormat; - n[3].i = width; - n[4].i = height; - n[5].e = format; - n[6].e = type; - n[7].data = unpack_image(ctx, 2, width, height, 1, format, type, filter, - &ctx->Unpack); - } - if (ctx->ExecuteFlag) { - CALL_ConvolutionFilter2D(ctx->Exec, - (target, internalFormat, width, height, format, - type, filter)); - } -} - - -static void GLAPIENTRY -save_ConvolutionParameteri(GLenum target, GLenum pname, GLint param) -{ - GET_CURRENT_CONTEXT(ctx); - Node *n; - ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); - n = alloc_instruction(ctx, OPCODE_CONVOLUTION_PARAMETER_I, 3); - if (n) { - n[1].e = target; - n[2].e = pname; - n[3].i = param; - } - if (ctx->ExecuteFlag) { - CALL_ConvolutionParameteri(ctx->Exec, (target, pname, param)); - } -} - - -static void GLAPIENTRY -save_ConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params) -{ - GET_CURRENT_CONTEXT(ctx); - Node *n; - ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); - n = alloc_instruction(ctx, OPCODE_CONVOLUTION_PARAMETER_IV, 6); - if (n) { - n[1].e = target; - n[2].e = pname; - n[3].i = params[0]; - if (pname == GL_CONVOLUTION_BORDER_COLOR || - pname == GL_CONVOLUTION_FILTER_SCALE || - pname == GL_CONVOLUTION_FILTER_BIAS) { - n[4].i = params[1]; - n[5].i = params[2]; - n[6].i = params[3]; - } - else { - n[4].i = n[5].i = n[6].i = 0; - } - } - if (ctx->ExecuteFlag) { - CALL_ConvolutionParameteriv(ctx->Exec, (target, pname, params)); - } -} - - -static void GLAPIENTRY -save_ConvolutionParameterf(GLenum target, GLenum pname, GLfloat param) -{ - GET_CURRENT_CONTEXT(ctx); - Node *n; - ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); - n = alloc_instruction(ctx, OPCODE_CONVOLUTION_PARAMETER_F, 3); - if (n) { - n[1].e = target; - n[2].e = pname; - n[3].f = param; - } - if (ctx->ExecuteFlag) { - CALL_ConvolutionParameterf(ctx->Exec, (target, pname, param)); - } -} - - -static void GLAPIENTRY -save_ConvolutionParameterfv(GLenum target, GLenum pname, - const GLfloat *params) -{ - GET_CURRENT_CONTEXT(ctx); - Node *n; - ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); - n = alloc_instruction(ctx, OPCODE_CONVOLUTION_PARAMETER_FV, 6); - if (n) { - n[1].e = target; - n[2].e = pname; - n[3].f = params[0]; - if (pname == GL_CONVOLUTION_BORDER_COLOR || - pname == GL_CONVOLUTION_FILTER_SCALE || - pname == GL_CONVOLUTION_FILTER_BIAS) { - n[4].f = params[1]; - n[5].f = params[2]; - n[6].f = params[3]; - } - else { - n[4].f = n[5].f = n[6].f = 0.0F; - } - } - if (ctx->ExecuteFlag) { - CALL_ConvolutionParameterfv(ctx->Exec, (target, pname, params)); - } -} - - static void GLAPIENTRY save_CopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type) { @@ -4191,37 +3791,25 @@ save_FogCoordfvEXT(const GLfloat * v) static void GLAPIENTRY save_Color3f(GLfloat x, GLfloat y, GLfloat z) { - save_Attr3fNV(VERT_ATTRIB_COLOR0, x, y, z); + save_Attr3fNV(VERT_ATTRIB_COLOR, x, y, z); } static void GLAPIENTRY save_Color3fv(const GLfloat * v) { - save_Attr3fNV(VERT_ATTRIB_COLOR0, v[0], v[1], v[2]); + save_Attr3fNV(VERT_ATTRIB_COLOR, v[0], v[1], v[2]); } static void GLAPIENTRY save_Color4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) { - save_Attr4fNV(VERT_ATTRIB_COLOR0, x, y, z, w); + save_Attr4fNV(VERT_ATTRIB_COLOR, x, y, z, w); } static void GLAPIENTRY save_Color4fv(const GLfloat * v) { - save_Attr4fNV(VERT_ATTRIB_COLOR0, v[0], v[1], v[2], v[3]); -} - -static void GLAPIENTRY -save_SecondaryColor3fEXT(GLfloat x, GLfloat y, GLfloat z) -{ - save_Attr3fNV(VERT_ATTRIB_COLOR1, x, y, z); -} - -static void GLAPIENTRY -save_SecondaryColor3fvEXT(const GLfloat * v) -{ - save_Attr3fNV(VERT_ATTRIB_COLOR1, v[0], v[1], v[2]); + save_Attr4fNV(VERT_ATTRIB_COLOR, v[0], v[1], v[2], v[3]); } @@ -4528,20 +4116,9 @@ execute_list(struct gl_context *ctx, GLuint list) ctx->Unpack = save; /* restore */ } break; - case OPCODE_BLEND_COLOR: - CALL_BlendColor(ctx->Exec, (n[1].f, n[2].f, n[3].f, n[4].f)); + case OPCODE_BLEND_FUNC: + CALL_BlendFunc(ctx->Exec, (n[1].e, n[2].e)); break; - case OPCODE_BLEND_EQUATION: - CALL_BlendEquation(ctx->Exec, (n[1].e)); - break; - case OPCODE_BLEND_EQUATION_SEPARATE: - CALL_BlendEquationSeparateEXT(ctx->Exec, (n[1].e, n[2].e)); - break; - case OPCODE_BLEND_FUNC_SEPARATE: - CALL_BlendFuncSeparateEXT(ctx->Exec, - (n[1].e, n[2].e, n[3].e, n[4].e)); - break; - case OPCODE_CALL_LIST: /* Generated by glCallList(), don't add ListBase */ if (ctx->ListState.CallDepth < MAX_LIST_NESTING) { @@ -4593,102 +4170,6 @@ execute_list(struct gl_context *ctx, GLuint list) case OPCODE_COLOR_MATERIAL: CALL_ColorMaterial(ctx->Exec, (n[1].e, n[2].e)); break; - case OPCODE_COLOR_TABLE: - { - const struct gl_pixelstore_attrib save = ctx->Unpack; - ctx->Unpack = ctx->DefaultPacking; - CALL_ColorTable(ctx->Exec, (n[1].e, n[2].e, n[3].i, n[4].e, - n[5].e, n[6].data)); - ctx->Unpack = save; /* restore */ - } - break; - case OPCODE_COLOR_TABLE_PARAMETER_FV: - { - GLfloat params[4]; - params[0] = n[3].f; - params[1] = n[4].f; - params[2] = n[5].f; - params[3] = n[6].f; - CALL_ColorTableParameterfv(ctx->Exec, - (n[1].e, n[2].e, params)); - } - break; - case OPCODE_COLOR_TABLE_PARAMETER_IV: - { - GLint params[4]; - params[0] = n[3].i; - params[1] = n[4].i; - params[2] = n[5].i; - params[3] = n[6].i; - CALL_ColorTableParameteriv(ctx->Exec, - (n[1].e, n[2].e, params)); - } - break; - case OPCODE_COLOR_SUB_TABLE: - { - const struct gl_pixelstore_attrib save = ctx->Unpack; - ctx->Unpack = ctx->DefaultPacking; - CALL_ColorSubTable(ctx->Exec, (n[1].e, n[2].i, n[3].i, - n[4].e, n[5].e, n[6].data)); - ctx->Unpack = save; /* restore */ - } - break; - case OPCODE_CONVOLUTION_FILTER_1D: - { - const struct gl_pixelstore_attrib save = ctx->Unpack; - ctx->Unpack = ctx->DefaultPacking; - CALL_ConvolutionFilter1D(ctx->Exec, (n[1].e, n[2].i, n[3].i, - n[4].e, n[5].e, - n[6].data)); - ctx->Unpack = save; /* restore */ - } - break; - case OPCODE_CONVOLUTION_FILTER_2D: - { - const struct gl_pixelstore_attrib save = ctx->Unpack; - ctx->Unpack = ctx->DefaultPacking; - CALL_ConvolutionFilter2D(ctx->Exec, (n[1].e, n[2].i, n[3].i, - n[4].i, n[5].e, n[6].e, - n[7].data)); - ctx->Unpack = save; /* restore */ - } - break; - case OPCODE_CONVOLUTION_PARAMETER_I: - CALL_ConvolutionParameteri(ctx->Exec, (n[1].e, n[2].e, n[3].i)); - break; - case OPCODE_CONVOLUTION_PARAMETER_IV: - { - GLint params[4]; - params[0] = n[3].i; - params[1] = n[4].i; - params[2] = n[5].i; - params[3] = n[6].i; - CALL_ConvolutionParameteriv(ctx->Exec, - (n[1].e, n[2].e, params)); - } - break; - case OPCODE_CONVOLUTION_PARAMETER_F: - CALL_ConvolutionParameterf(ctx->Exec, (n[1].e, n[2].e, n[3].f)); - break; - case OPCODE_CONVOLUTION_PARAMETER_FV: - { - GLfloat params[4]; - params[0] = n[3].f; - params[1] = n[4].f; - params[2] = n[5].f; - params[3] = n[6].f; - CALL_ConvolutionParameterfv(ctx->Exec, - (n[1].e, n[2].e, params)); - } - break; - case OPCODE_COPY_COLOR_SUB_TABLE: - CALL_CopyColorSubTable(ctx->Exec, (n[1].e, n[2].i, - n[3].i, n[4].i, n[5].i)); - break; - case OPCODE_COPY_COLOR_TABLE: - CALL_CopyColorSubTable(ctx->Exec, (n[1].e, n[2].i, - n[3].i, n[4].i, n[5].i)); - break; case OPCODE_COPY_PIXELS: CALL_CopyPixels(ctx->Exec, (n[1].i, n[2].i, (GLsizei) n[3].i, (GLsizei) n[4].i, @@ -5902,98 +5383,6 @@ exec_VertexPointer(GLint size, GLenum type, GLsizei stride, CALL_VertexPointer(ctx->Exec, (size, type, stride, ptr)); } -static void GLAPIENTRY -exec_CopyConvolutionFilter1D(GLenum target, GLenum internalFormat, - GLint x, GLint y, GLsizei width) -{ - GET_CURRENT_CONTEXT(ctx); - FLUSH_VERTICES(ctx, 0); - CALL_CopyConvolutionFilter1D(ctx->Exec, - (target, internalFormat, x, y, width)); -} - -static void GLAPIENTRY -exec_CopyConvolutionFilter2D(GLenum target, GLenum internalFormat, - GLint x, GLint y, GLsizei width, GLsizei height) -{ - GET_CURRENT_CONTEXT(ctx); - FLUSH_VERTICES(ctx, 0); - CALL_CopyConvolutionFilter2D(ctx->Exec, - (target, internalFormat, x, y, width, - height)); -} - -static void GLAPIENTRY -exec_GetColorTable(GLenum target, GLenum format, GLenum type, GLvoid * data) -{ - GET_CURRENT_CONTEXT(ctx); - FLUSH_VERTICES(ctx, 0); - CALL_GetColorTable(ctx->Exec, (target, format, type, data)); -} - -static void GLAPIENTRY -exec_GetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params) -{ - GET_CURRENT_CONTEXT(ctx); - FLUSH_VERTICES(ctx, 0); - CALL_GetColorTableParameterfv(ctx->Exec, (target, pname, params)); -} - -static void GLAPIENTRY -exec_GetColorTableParameteriv(GLenum target, GLenum pname, GLint *params) -{ - GET_CURRENT_CONTEXT(ctx); - FLUSH_VERTICES(ctx, 0); - CALL_GetColorTableParameteriv(ctx->Exec, (target, pname, params)); -} - -static void GLAPIENTRY -exec_GetConvolutionFilter(GLenum target, GLenum format, GLenum type, - GLvoid * image) -{ - GET_CURRENT_CONTEXT(ctx); - FLUSH_VERTICES(ctx, 0); - CALL_GetConvolutionFilter(ctx->Exec, (target, format, type, image)); -} - -static void GLAPIENTRY -exec_GetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params) -{ - GET_CURRENT_CONTEXT(ctx); - FLUSH_VERTICES(ctx, 0); - CALL_GetConvolutionParameterfv(ctx->Exec, (target, pname, params)); -} - -static void GLAPIENTRY -exec_GetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params) -{ - GET_CURRENT_CONTEXT(ctx); - FLUSH_VERTICES(ctx, 0); - CALL_GetConvolutionParameteriv(ctx->Exec, (target, pname, params)); -} - -static void GLAPIENTRY -exec_GetSeparableFilter(GLenum target, GLenum format, GLenum type, - GLvoid *row, GLvoid *column, GLvoid *span) -{ - GET_CURRENT_CONTEXT(ctx); - FLUSH_VERTICES(ctx, 0); - CALL_GetSeparableFilter(ctx->Exec, - (target, format, type, row, column, span)); -} - -static void GLAPIENTRY -exec_SeparableFilter2D(GLenum target, GLenum internalFormat, - GLsizei width, GLsizei height, GLenum format, - GLenum type, const GLvoid *row, const GLvoid *column) -{ - GET_CURRENT_CONTEXT(ctx); - FLUSH_VERTICES(ctx, 0); - CALL_SeparableFilter2D(ctx->Exec, - (target, internalFormat, width, height, format, - type, row, column)); -} - static void GLAPIENTRY exec_ColorPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *ptr) @@ -6063,15 +5452,6 @@ exec_UnlockArraysEXT(void) CALL_UnlockArraysEXT(ctx->Exec, ()); } -static void GLAPIENTRY -exec_SecondaryColorPointerEXT(GLint size, GLenum type, - GLsizei stride, const GLvoid *ptr) -{ - GET_CURRENT_CONTEXT(ctx); - FLUSH_VERTICES(ctx, 0); - CALL_SecondaryColorPointerEXT(ctx->Exec, (size, type, stride, ptr)); -} - static void GLAPIENTRY exec_FogCoordPointerEXT(GLenum type, GLsizei stride, const GLvoid *ptr) { @@ -6329,50 +5709,9 @@ _mesa_create_save_table(void) SET_TexSubImage2D(table, save_TexSubImage2D); SET_VertexPointer(table, exec_VertexPointer); - /* GL_ARB_imaging */ - /* Not all are supported */ - SET_BlendColor(table, save_BlendColor); - SET_BlendEquation(table, save_BlendEquation); - SET_ColorSubTable(table, save_ColorSubTable); - SET_ColorTable(table, save_ColorTable); - SET_ColorTableParameterfv(table, save_ColorTableParameterfv); - SET_ColorTableParameteriv(table, save_ColorTableParameteriv); - SET_ConvolutionFilter1D(table, save_ConvolutionFilter1D); - SET_ConvolutionFilter2D(table, save_ConvolutionFilter2D); - SET_ConvolutionParameterf(table, save_ConvolutionParameterf); - SET_ConvolutionParameterfv(table, save_ConvolutionParameterfv); - SET_ConvolutionParameteri(table, save_ConvolutionParameteri); - SET_ConvolutionParameteriv(table, save_ConvolutionParameteriv); - SET_CopyColorSubTable(table, save_CopyColorSubTable); - SET_CopyColorTable(table, save_CopyColorTable); - SET_CopyConvolutionFilter1D(table, exec_CopyConvolutionFilter1D); - SET_CopyConvolutionFilter2D(table, exec_CopyConvolutionFilter2D); - SET_GetColorTable(table, exec_GetColorTable); - SET_GetColorTableParameterfv(table, exec_GetColorTableParameterfv); - SET_GetColorTableParameteriv(table, exec_GetColorTableParameteriv); - SET_GetConvolutionFilter(table, exec_GetConvolutionFilter); - SET_GetConvolutionParameterfv(table, exec_GetConvolutionParameterfv); - SET_GetConvolutionParameteriv(table, exec_GetConvolutionParameteriv); - SET_GetSeparableFilter(table, exec_GetSeparableFilter); - SET_SeparableFilter2D(table, exec_SeparableFilter2D); - - /* 2. GL_EXT_blend_color */ -#if 0 - SET_BlendColorEXT(table, save_BlendColorEXT); -#endif - /* 3. GL_EXT_polygon_offset */ SET_PolygonOffsetEXT(table, save_PolygonOffsetEXT); - /* 14. GL_SGI_color_table */ -#if 0 - SET_ColorTableSGI(table, save_ColorTable); - SET_ColorSubTableSGI(table, save_ColorSubTable); - SET_GetColorTableSGI(table, exec_GetColorTable); - SET_GetColorTableParameterfvSGI(table, exec_GetColorTableParameterfv); - SET_GetColorTableParameterivSGI(table, exec_GetColorTableParameteriv); -#endif - /* 30. GL_EXT_vertex_array */ SET_ColorPointerEXT(table, exec_ColorPointerEXT); SET_EdgeFlagPointerEXT(table, exec_EdgeFlagPointerEXT); @@ -6381,11 +5720,6 @@ _mesa_create_save_table(void) SET_TexCoordPointerEXT(table, exec_TexCoordPointerEXT); SET_VertexPointerEXT(table, exec_VertexPointerEXT); - /* 37. GL_EXT_blend_minmax */ -#if 0 - SET_BlendEquationEXT(table, save_BlendEquationEXT); -#endif - /* 54. GL_EXT_point_parameters */ SET_PointParameterfEXT(table, save_PointParameterfEXT); SET_PointParameterfvEXT(table, save_PointParameterfvEXT); @@ -6394,15 +5728,9 @@ _mesa_create_save_table(void) SET_LockArraysEXT(table, exec_LockArraysEXT); SET_UnlockArraysEXT(table, exec_UnlockArraysEXT); - /* 145. GL_EXT_secondary_color */ - SET_SecondaryColorPointerEXT(table, exec_SecondaryColorPointerEXT); - /* 149. GL_EXT_fog_coord */ SET_FogCoordPointerEXT(table, exec_FogCoordPointerEXT); - /* 173. GL_EXT_blend_func_separate */ - SET_BlendFuncSeparateEXT(table, save_BlendFuncSeparateEXT); - /* 197. GL_MESA_window_pos */ SET_WindowPos2dMESA(table, save_WindowPos2dMESA); SET_WindowPos2dvMESA(table, save_WindowPos2dvMESA); @@ -6463,9 +5791,6 @@ _mesa_create_save_table(void) SET_MapBufferARB(table, _mesa_MapBufferARB); SET_UnmapBufferARB(table, _mesa_UnmapBufferARB); - /* 299. GL_EXT_blend_equation_separate */ - SET_BlendEquationSeparateEXT(table, save_BlendEquationSeparateEXT); - /* ARB 50. GL_ARB_map_buffer_range */ #if FEATURE_ARB_map_buffer_range SET_MapBufferRange(table, _mesa_MapBufferRange); /* no dlist save */ @@ -6547,16 +5872,6 @@ print_list(struct gl_context *ctx, GLuint list) printf("CallList %d + offset %u = %u\n", (int) n[1].ui, ctx->List.ListBase, ctx->List.ListBase + n[1].ui); break; - case OPCODE_COLOR_TABLE_PARAMETER_FV: - printf("ColorTableParameterfv %s %s %f %f %f %f\n", - enum_string(n[1].e), enum_string(n[2].e), - n[3].f, n[4].f, n[5].f, n[6].f); - break; - case OPCODE_COLOR_TABLE_PARAMETER_IV: - printf("ColorTableParameteriv %s %s %d %d %d %d\n", - enum_string(n[1].e), enum_string(n[2].e), - n[3].i, n[4].i, n[5].i, n[6].i); - break; case OPCODE_DISABLE: printf("Disable %s\n", enum_string(n[1].e)); break; @@ -6786,8 +6101,6 @@ _mesa_save_vtxfmt_init(GLvertexformat * vfmt) vfmt->Materialfv = save_Materialfv; vfmt->Normal3f = save_Normal3f; vfmt->Normal3fv = save_Normal3fv; - vfmt->SecondaryColor3fEXT = save_SecondaryColor3fEXT; - vfmt->SecondaryColor3fvEXT = save_SecondaryColor3fvEXT; vfmt->TexCoord1f = save_TexCoord1f; vfmt->TexCoord1fv = save_TexCoord1fv; vfmt->TexCoord2f = save_TexCoord2f; @@ -6822,7 +6135,6 @@ _mesa_save_vtxfmt_init(GLvertexformat * vfmt) #if 0 vfmt->DrawArrays = 0; vfmt->DrawElements = 0; - vfmt->DrawRangeElements = 0; #endif } diff --git a/reactos/dll/opengl/mesa/main/enable.c b/reactos/dll/opengl/mesa/main/enable.c index 9b9d52fab5f..8ba5a5e732d 100644 --- a/reactos/dll/opengl/mesa/main/enable.c +++ b/reactos/dll/opengl/mesa/main/enable.c @@ -54,8 +54,8 @@ client_state(struct gl_context *ctx, GLenum cap, GLboolean state) flag = VERT_BIT_NORMAL; break; case GL_COLOR_ARRAY: - var = &ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR0].Enabled; - flag = VERT_BIT_COLOR0; + var = &ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR].Enabled; + flag = VERT_BIT_COLOR; break; case GL_INDEX_ARRAY: var = &ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR_INDEX].Enabled; @@ -73,17 +73,6 @@ client_state(struct gl_context *ctx, GLenum cap, GLboolean state) var = &ctx->Array.VertexAttrib[VERT_ATTRIB_FOG].Enabled; flag = VERT_BIT_FOG; break; - case GL_SECONDARY_COLOR_ARRAY_EXT: - var = &ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR1].Enabled; - flag = VERT_BIT_COLOR1; - break; - -#if FEATURE_point_size_array - case GL_POINT_SIZE_ARRAY_OES: - var = &ctx->Array.VertexAttrib[VERT_ATTRIB_POINT_SIZE].Enabled; - flag = VERT_BIT_POINT_SIZE; - break; -#endif default: goto invalid_enum_error; @@ -276,7 +265,7 @@ _mesa_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state) ctx->Light.ColorMaterialEnabled = state; if (state) { _mesa_update_color_material( ctx, - ctx->Current.Attrib[VERT_ATTRIB_COLOR0] ); + ctx->Current.Attrib[VERT_ATTRIB_COLOR] ); } break; case GL_CULL_FACE: @@ -882,7 +871,7 @@ _mesa_IsEnabled( GLenum cap ) case GL_NORMAL_ARRAY: return (ctx->Array.VertexAttrib[VERT_ATTRIB_NORMAL].Enabled != 0); case GL_COLOR_ARRAY: - return (ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR0].Enabled != 0); + return (ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR].Enabled != 0); case GL_INDEX_ARRAY: return (ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR_INDEX].Enabled != 0); case GL_TEXTURE_COORD_ARRAY: @@ -893,9 +882,6 @@ _mesa_IsEnabled( GLenum cap ) case GL_FOG_COORDINATE_ARRAY_EXT: CHECK_EXTENSION(EXT_fog_coord); return (ctx->Array.VertexAttrib[VERT_ATTRIB_FOG].Enabled != 0); - case GL_SECONDARY_COLOR_ARRAY_EXT: - CHECK_EXTENSION(EXT_secondary_color); - return (ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR1].Enabled != 0); #if FEATURE_point_size_array case GL_POINT_SIZE_ARRAY_OES: return (ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_POINT_SIZE].Enabled != 0); diff --git a/reactos/dll/opengl/mesa/main/fog.c b/reactos/dll/opengl/mesa/main/fog.c index 4d80ff93b64..b2e141b60af 100644 --- a/reactos/dll/opengl/mesa/main/fog.c +++ b/reactos/dll/opengl/mesa/main/fog.c @@ -198,7 +198,6 @@ void _mesa_init_fog( struct gl_context * ctx ) ctx->Fog.Density = 1.0; ctx->Fog.Start = 0.0; ctx->Fog.End = 1.0; - ctx->Fog.ColorSumEnabled = GL_FALSE; ctx->Fog.FogCoordinateSource = GL_FRAGMENT_DEPTH_EXT; ctx->Fog._Scale = 1.0f; ctx->Fog.FogDistanceMode = GL_EYE_PLANE_ABSOLUTE_NV; diff --git a/reactos/dll/opengl/mesa/main/get.c b/reactos/dll/opengl/mesa/main/get.c index a1657394bf4..08d25ccfdc8 100644 --- a/reactos/dll/opengl/mesa/main/get.c +++ b/reactos/dll/opengl/mesa/main/get.c @@ -283,7 +283,7 @@ static const int extra_version_32[] = { EXTRA_VERSION_32, EXTRA_END }; static const struct value_desc values[] = { { GL_ALPHA_BITS, BUFFER_INT(Visual.alphaBits), extra_new_buffers }, { GL_BLEND, CONTEXT_BIT0(Color.BlendEnabled), NO_EXTRA }, - { GL_BLEND_SRC, CONTEXT_ENUM(Color.SrcRGB), NO_EXTRA }, + { GL_BLEND_SRC, CONTEXT_ENUM(Color.SrcFactor), NO_EXTRA }, { GL_BLUE_BITS, BUFFER_INT(Visual.blueBits), extra_new_buffers }, { GL_COLOR_CLEAR_VALUE, LOC_CUSTOM, TYPE_FLOATN_4, 0, NO_EXTRA }, { GL_COLOR_WRITEMASK, LOC_CUSTOM, TYPE_INT_4, 0, NO_EXTRA }, @@ -345,15 +345,8 @@ static const struct value_desc values[] = { extra_ARB_texture_cube_map }, /* XXX: OES_texture_cube_map */ /* XXX: OES_blend_subtract */ - { GL_BLEND_SRC_RGB_EXT, CONTEXT_ENUM(Color.SrcRGB), NO_EXTRA }, - { GL_BLEND_DST_RGB_EXT, CONTEXT_ENUM(Color.DstRGB), NO_EXTRA }, - { GL_BLEND_SRC_ALPHA_EXT, CONTEXT_ENUM(Color.SrcA), NO_EXTRA }, - { GL_BLEND_DST_ALPHA_EXT, CONTEXT_ENUM(Color.DstA), NO_EXTRA }, - - /* GL_BLEND_EQUATION_RGB, which is what we're really after, is - * defined identically to GL_BLEND_EQUATION. */ - { GL_BLEND_EQUATION, CONTEXT_ENUM(Color.EquationRGB), NO_EXTRA }, - { GL_BLEND_EQUATION_ALPHA_EXT, CONTEXT_ENUM(Color.EquationA), NO_EXTRA }, + { GL_BLEND_SRC_RGB_EXT, CONTEXT_ENUM(Color.SrcFactor), NO_EXTRA }, + { GL_BLEND_DST_RGB_EXT, CONTEXT_ENUM(Color.DstFactor), NO_EXTRA }, /* GL_ARB_multisample */ { GL_SAMPLE_ALPHA_TO_COVERAGE_ARB, @@ -397,7 +390,7 @@ static const struct value_desc values[] = { { GL_ALPHA_TEST, CONTEXT_BOOL(Color.AlphaEnabled), NO_EXTRA }, { GL_ALPHA_TEST_FUNC, CONTEXT_ENUM(Color.AlphaFunc), NO_EXTRA }, { GL_ALPHA_TEST_REF, LOC_CUSTOM, TYPE_FLOATN, 0, NO_EXTRA }, - { GL_BLEND_DST, CONTEXT_ENUM(Color.DstRGB), NO_EXTRA }, + { GL_BLEND_DST, CONTEXT_ENUM(Color.DstFactor), NO_EXTRA }, { GL_CLIP_DISTANCE0, CONTEXT_BIT0(Transform.ClipPlanesEnabled), extra_valid_clip_distance }, { GL_CLIP_DISTANCE1, CONTEXT_BIT1(Transform.ClipPlanesEnabled), extra_valid_clip_distance }, { GL_CLIP_DISTANCE2, CONTEXT_BIT2(Transform.ClipPlanesEnabled), extra_valid_clip_distance }, @@ -408,7 +401,7 @@ static const struct value_desc values[] = { { GL_CLIP_DISTANCE7, CONTEXT_BIT7(Transform.ClipPlanesEnabled), extra_valid_clip_distance }, { GL_COLOR_MATERIAL, CONTEXT_BOOL(Light.ColorMaterialEnabled), NO_EXTRA }, { GL_CURRENT_COLOR, - CONTEXT_FIELD(Current.Attrib[VERT_ATTRIB_COLOR0][0], TYPE_FLOATN_4), + CONTEXT_FIELD(Current.Attrib[VERT_ATTRIB_COLOR][0], TYPE_FLOATN_4), extra_flush_current }, { GL_CURRENT_NORMAL, CONTEXT_FIELD(Current.Attrib[VERT_ATTRIB_NORMAL][0], TYPE_FLOATN_3), @@ -462,10 +455,10 @@ static const struct value_desc values[] = { { GL_NORMAL_ARRAY, ARRAY_BOOL(VertexAttrib[VERT_ATTRIB_NORMAL].Enabled), NO_EXTRA }, { GL_NORMAL_ARRAY_TYPE, ARRAY_ENUM(VertexAttrib[VERT_ATTRIB_NORMAL].Type), NO_EXTRA }, { GL_NORMAL_ARRAY_STRIDE, ARRAY_INT(VertexAttrib[VERT_ATTRIB_NORMAL].Stride), NO_EXTRA }, - { GL_COLOR_ARRAY, ARRAY_BOOL(VertexAttrib[VERT_ATTRIB_COLOR0].Enabled), NO_EXTRA }, - { GL_COLOR_ARRAY_SIZE, ARRAY_INT(VertexAttrib[VERT_ATTRIB_COLOR0].Size), NO_EXTRA }, - { GL_COLOR_ARRAY_TYPE, ARRAY_ENUM(VertexAttrib[VERT_ATTRIB_COLOR0].Type), NO_EXTRA }, - { GL_COLOR_ARRAY_STRIDE, ARRAY_INT(VertexAttrib[VERT_ATTRIB_COLOR0].Stride), NO_EXTRA }, + { GL_COLOR_ARRAY, ARRAY_BOOL(VertexAttrib[VERT_ATTRIB_COLOR].Enabled), NO_EXTRA }, + { GL_COLOR_ARRAY_SIZE, ARRAY_INT(VertexAttrib[VERT_ATTRIB_COLOR].Size), NO_EXTRA }, + { GL_COLOR_ARRAY_TYPE, ARRAY_ENUM(VertexAttrib[VERT_ATTRIB_COLOR].Type), NO_EXTRA }, + { GL_COLOR_ARRAY_STRIDE, ARRAY_INT(VertexAttrib[VERT_ATTRIB_COLOR].Stride), NO_EXTRA }, { GL_TEXTURE_COORD_ARRAY, LOC_CUSTOM, TYPE_BOOLEAN, offsetof(struct gl_client_array, Enabled), NO_EXTRA }, { GL_TEXTURE_COORD_ARRAY_SIZE, @@ -491,7 +484,7 @@ static const struct value_desc values[] = { { GL_NORMAL_ARRAY_BUFFER_BINDING_ARB, LOC_CUSTOM, TYPE_INT, offsetof(struct gl_array_attrib, VertexAttrib[VERT_ATTRIB_NORMAL].BufferObj), NO_EXTRA }, { GL_COLOR_ARRAY_BUFFER_BINDING_ARB, LOC_CUSTOM, TYPE_INT, - offsetof(struct gl_array_attrib, VertexAttrib[VERT_ATTRIB_COLOR0].BufferObj), NO_EXTRA }, + offsetof(struct gl_array_attrib, VertexAttrib[VERT_ATTRIB_COLOR].BufferObj), NO_EXTRA }, { GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB, LOC_CUSTOM, TYPE_INT, NO_OFFSET, NO_EXTRA }, /* GL_OES_point_sprite */ @@ -529,8 +522,6 @@ static const struct value_desc values[] = { { GL_CURRENT_RASTER_DISTANCE, CONTEXT_FLOAT(Current.RasterDistance), NO_EXTRA }, { GL_CURRENT_RASTER_INDEX, CONST(1), NO_EXTRA }, { GL_CURRENT_RASTER_POSITION, CONTEXT_FLOAT4(Current.RasterPos[0]), NO_EXTRA }, - { GL_CURRENT_RASTER_SECONDARY_COLOR, - CONTEXT_FIELD(Current.RasterSecondaryColor[0], TYPE_FLOATN_4), NO_EXTRA }, { GL_CURRENT_RASTER_TEXTURE_COORDS, LOC_CUSTOM, TYPE_FLOAT_4, 0, extra_valid_texture_unit }, { GL_CURRENT_RASTER_POSITION_VALID, CONTEXT_BOOL(Current.RasterPosValid), NO_EXTRA }, @@ -550,7 +541,6 @@ static const struct value_desc values[] = { { GL_INDEX_OFFSET, CONTEXT_INT(Pixel.IndexOffset), NO_EXTRA }, { GL_INDEX_SHIFT, CONTEXT_INT(Pixel.IndexShift), NO_EXTRA }, { GL_INDEX_WRITEMASK, CONTEXT_INT(Color.IndexMask), NO_EXTRA }, - { GL_LIGHT_MODEL_COLOR_CONTROL, CONTEXT_ENUM(Light.Model.ColorControl), NO_EXTRA }, { GL_LIGHT_MODEL_LOCAL_VIEWER, CONTEXT_BOOL(Light.Model.LocalViewer), NO_EXTRA }, { GL_LINE_STIPPLE, CONTEXT_BOOL(Line.StippleFlag), NO_EXTRA }, { GL_LINE_STIPPLE_PATTERN, LOC_CUSTOM, TYPE_INT, 0, NO_EXTRA }, @@ -674,19 +664,6 @@ static const struct value_desc values[] = { CONTEXT_MATRIX_T(ProjectionMatrixStack.Top), NO_EXTRA }, { GL_TRANSPOSE_TEXTURE_MATRIX_ARB, CONTEXT_MATRIX_T(TextureMatrixStack), NO_EXTRA }, - /* GL_EXT_secondary_color */ - { GL_CURRENT_SECONDARY_COLOR_EXT, - CONTEXT_FIELD(Current.Attrib[VERT_ATTRIB_COLOR1][0], TYPE_FLOATN_4), - extra_EXT_secondary_color_flush_current }, - { GL_SECONDARY_COLOR_ARRAY_EXT, ARRAY_BOOL(VertexAttrib[VERT_ATTRIB_COLOR1].Enabled), - extra_EXT_secondary_color }, - { GL_SECONDARY_COLOR_ARRAY_TYPE_EXT, ARRAY_ENUM(VertexAttrib[VERT_ATTRIB_COLOR1].Type), - extra_EXT_secondary_color }, - { GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT, ARRAY_INT(VertexAttrib[VERT_ATTRIB_COLOR1].Stride), - extra_EXT_secondary_color }, - { GL_SECONDARY_COLOR_ARRAY_SIZE_EXT, ARRAY_INT(VertexAttrib[VERT_ATTRIB_COLOR1].Size), - extra_EXT_secondary_color }, - /* GL_EXT_fog_coord */ { GL_CURRENT_FOG_COORDINATE_EXT, CONTEXT_FLOAT(Current.Attrib[VERT_ATTRIB_FOG][0]), @@ -726,8 +703,6 @@ static const struct value_desc values[] = { offsetof(struct gl_array_attrib, VertexAttrib[VERT_ATTRIB_COLOR_INDEX].BufferObj), NO_EXTRA }, { GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB, LOC_CUSTOM, TYPE_INT, offsetof(struct gl_array_attrib, VertexAttrib[VERT_ATTRIB_EDGEFLAG].BufferObj), NO_EXTRA }, - { GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB, LOC_CUSTOM, TYPE_INT, - offsetof(struct gl_array_attrib, VertexAttrib[VERT_ATTRIB_COLOR1].BufferObj), NO_EXTRA }, { GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB, LOC_CUSTOM, TYPE_INT, offsetof(struct gl_array_attrib, VertexAttrib[VERT_ATTRIB_FOG].BufferObj), NO_EXTRA }, @@ -1029,9 +1004,6 @@ find_custom_value(struct gl_context *ctx, const struct value_desc *d, union valu ((char *) &ctx->Array + d->offset); v->value_int = (*buffer_obj)->Name; break; - case GL_ARRAY_BUFFER_BINDING_ARB: - v->value_int = ctx->Array.ArrayBufferObj->Name; - break; case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB: v->value_int = ctx->Array.VertexAttrib[VERT_ATTRIB_TEX].BufferObj->Name; @@ -1049,9 +1021,6 @@ find_custom_value(struct gl_context *ctx, const struct value_desc *d, union valu v->value_float_4[2] = ctx->Color.ClearColor.f[2], 0.0F, 1.0F; v->value_float_4[3] = ctx->Color.ClearColor.f[3], 0.0F, 1.0F; break; - case GL_BLEND_COLOR_EXT: - COPY_4FV(v->value_float_4, ctx->Color.BlendColor); - break; case GL_ALPHA_TEST_REF: v->value_float = ctx->Color.AlphaRef; break; diff --git a/reactos/dll/opengl/mesa/main/get.h b/reactos/dll/opengl/mesa/main/get.h index 5e7a59c224c..accaf19e5bc 100644 --- a/reactos/dll/opengl/mesa/main/get.h +++ b/reactos/dll/opengl/mesa/main/get.h @@ -62,9 +62,6 @@ _mesa_GetPointerv( GLenum pname, GLvoid **params ); extern const GLubyte * GLAPIENTRY _mesa_GetString( GLenum name ); -extern const GLubyte * GLAPIENTRY -_mesa_GetStringi(GLenum name, GLuint index); - extern GLenum GLAPIENTRY _mesa_GetError( void ); diff --git a/reactos/dll/opengl/mesa/main/getstring.c b/reactos/dll/opengl/mesa/main/getstring.c index ae511d1e9b9..ef5c272fcad 100644 --- a/reactos/dll/opengl/mesa/main/getstring.c +++ b/reactos/dll/opengl/mesa/main/getstring.c @@ -72,33 +72,6 @@ _mesa_GetString( GLenum name ) } -/** - * GL3 - */ -const GLubyte * GLAPIENTRY -_mesa_GetStringi(GLenum name, GLuint index) -{ - GET_CURRENT_CONTEXT(ctx); - - if (!ctx) - return NULL; - - ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, NULL); - - switch (name) { - case GL_EXTENSIONS: - if (index >= _mesa_get_extension_count(ctx)) { - _mesa_error(ctx, GL_INVALID_VALUE, "glGetStringi(index=%u)", index); - return (const GLubyte *) 0; - } - return _mesa_get_enabled_extension(ctx, index); - default: - _mesa_error( ctx, GL_INVALID_ENUM, "glGetString" ); - return (const GLubyte *) 0; - } -} - - /** * Return pointer-valued state, such as a vertex array pointer. @@ -131,10 +104,7 @@ _mesa_GetPointerv( GLenum pname, GLvoid **params ) *params = (GLvoid *) ctx->Array.VertexAttrib[VERT_ATTRIB_NORMAL].Ptr; break; case GL_COLOR_ARRAY_POINTER: - *params = (GLvoid *) ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR0].Ptr; - break; - case GL_SECONDARY_COLOR_ARRAY_POINTER_EXT: - *params = (GLvoid *) ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR1].Ptr; + *params = (GLvoid *) ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR].Ptr; break; case GL_FOG_COORDINATE_ARRAY_POINTER_EXT: *params = (GLvoid *) ctx->Array.VertexAttrib[VERT_ATTRIB_FOG].Ptr; @@ -154,11 +124,6 @@ _mesa_GetPointerv( GLenum pname, GLvoid **params ) case GL_SELECTION_BUFFER_POINTER: *params = ctx->Select.Buffer; break; -#if FEATURE_point_size_array - case GL_POINT_SIZE_ARRAY_POINTER_OES: - *params = (GLvoid *) ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_POINT_SIZE].Ptr; - break; -#endif default: _mesa_error( ctx, GL_INVALID_ENUM, "glGetPointerv" ); return; diff --git a/reactos/dll/opengl/mesa/main/imports.c b/reactos/dll/opengl/mesa/main/imports.c index e9d9209f2a1..e4f5b59f209 100644 --- a/reactos/dll/opengl/mesa/main/imports.c +++ b/reactos/dll/opengl/mesa/main/imports.c @@ -888,14 +888,14 @@ _mesa_error( struct gl_context *ctx, GLenum error, const char *fmtString, ... ) void _mesa_debug( const struct gl_context *ctx, const char *fmtString, ... ) { -#ifdef DEBUG +//#ifdef DEBUG char s[MAXSTRING]; va_list args; va_start(args, fmtString); vsnprintf(s, MAXSTRING, fmtString, args); va_end(args); output_if_debug("Mesa", s, GL_FALSE); -#endif /* DEBUG */ +//#endif /* DEBUG */ (void) ctx; (void) fmtString; } diff --git a/reactos/dll/opengl/mesa/main/light.c b/reactos/dll/opengl/mesa/main/light.c index 26a9d5296a6..beaa8aa9979 100644 --- a/reactos/dll/opengl/mesa/main/light.c +++ b/reactos/dll/opengl/mesa/main/light.c @@ -418,7 +418,6 @@ _mesa_GetLightiv( GLenum light, GLenum pname, GLint *params ) void GLAPIENTRY _mesa_LightModelfv( GLenum pname, const GLfloat *params ) { - GLenum newenum; GLboolean newbool; GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END(ctx); @@ -448,21 +447,6 @@ _mesa_LightModelfv( GLenum pname, const GLfloat *params ) else ctx->_TriangleCaps &= ~DD_TRI_LIGHT_TWOSIDE; break; - case GL_LIGHT_MODEL_COLOR_CONTROL: - if (params[0] == (GLfloat) GL_SINGLE_COLOR) - newenum = GL_SINGLE_COLOR; - else if (params[0] == (GLfloat) GL_SEPARATE_SPECULAR_COLOR) - newenum = GL_SEPARATE_SPECULAR_COLOR; - else { - _mesa_error( ctx, GL_INVALID_ENUM, "glLightModel(param=0x0%x)", - (GLint) params[0] ); - return; - } - if (ctx->Light.Model.ColorControl == newenum) - return; - FLUSH_VERTICES(ctx, _NEW_LIGHT); - ctx->Light.Model.ColorControl = newenum; - break; default: _mesa_error( ctx, GL_INVALID_ENUM, "glLightModel(pname=0x%x)", pname ); break; @@ -716,7 +700,7 @@ _mesa_ColorMaterial( GLenum face, GLenum mode ) if (ctx->Light.ColorMaterialEnabled) { FLUSH_CURRENT( ctx, 0 ); - _mesa_update_color_material(ctx,ctx->Current.Attrib[VERT_ATTRIB_COLOR0]); + _mesa_update_color_material(ctx,ctx->Current.Attrib[VERT_ATTRIB_COLOR]); } if (ctx->Driver.ColorMaterial) @@ -1019,7 +1003,6 @@ _mesa_update_lighting( struct gl_context *ctx ) ctx->Light._NeedVertices = ((ctx->Light._Flags & (LIGHT_POSITIONAL|LIGHT_SPOT)) || - ctx->Light.Model.ColorControl == GL_SEPARATE_SPECULAR_COLOR || ctx->Light.Model.LocalViewer); ctx->Light._NeedEyeCoords = ((ctx->Light._Flags & LIGHT_POSITIONAL) || @@ -1285,7 +1268,6 @@ init_lightmodel( struct gl_lightmodel *lm ) ASSIGN_4V( lm->Ambient, 0.2F, 0.2F, 0.2F, 1.0F ); lm->LocalViewer = GL_FALSE; lm->TwoSide = GL_FALSE; - lm->ColorControl = GL_SINGLE_COLOR; } diff --git a/reactos/dll/opengl/mesa/main/mtypes.h b/reactos/dll/opengl/mesa/main/mtypes.h index 97e8fe240ee..c306a0cddd7 100644 --- a/reactos/dll/opengl/mesa/main/mtypes.h +++ b/reactos/dll/opengl/mesa/main/mtypes.h @@ -96,14 +96,13 @@ typedef enum VERT_ATTRIB_POS = 0, VERT_ATTRIB_WEIGHT = 1, VERT_ATTRIB_NORMAL = 2, - VERT_ATTRIB_COLOR0 = 3, - VERT_ATTRIB_COLOR1 = 4, - VERT_ATTRIB_FOG = 5, - VERT_ATTRIB_COLOR_INDEX = 6, - VERT_ATTRIB_EDGEFLAG = 7, - VERT_ATTRIB_TEX = 8, - VERT_ATTRIB_POINT_SIZE = 9, - VERT_ATTRIB_MAX = 10 + VERT_ATTRIB_COLOR = 3, + VERT_ATTRIB_FOG = 4, + VERT_ATTRIB_COLOR_INDEX = 5, + VERT_ATTRIB_EDGEFLAG = 6, + VERT_ATTRIB_TEX = 7, + VERT_ATTRIB_POINT_SIZE = 8, + VERT_ATTRIB_MAX = 9 } gl_vert_attrib; /** @@ -121,8 +120,7 @@ typedef enum #define VERT_BIT_POS BITFIELD64_BIT(VERT_ATTRIB_POS) #define VERT_BIT_WEIGHT BITFIELD64_BIT(VERT_ATTRIB_WEIGHT) #define VERT_BIT_NORMAL BITFIELD64_BIT(VERT_ATTRIB_NORMAL) -#define VERT_BIT_COLOR0 BITFIELD64_BIT(VERT_ATTRIB_COLOR0) -#define VERT_BIT_COLOR1 BITFIELD64_BIT(VERT_ATTRIB_COLOR1) +#define VERT_BIT_COLOR BITFIELD64_BIT(VERT_ATTRIB_COLOR) #define VERT_BIT_FOG BITFIELD64_BIT(VERT_ATTRIB_FOG) #define VERT_BIT_COLOR_INDEX BITFIELD64_BIT(VERT_ATTRIB_COLOR_INDEX) #define VERT_BIT_EDGEFLAG BITFIELD64_BIT(VERT_ATTRIB_EDGEFLAG) @@ -143,20 +141,18 @@ typedef enum typedef enum { FRAG_ATTRIB_WPOS = 0, - FRAG_ATTRIB_COL0 = 1, - FRAG_ATTRIB_COL1 = 2, - FRAG_ATTRIB_FOGC = 3, - FRAG_ATTRIB_TEX = 4, - FRAG_ATTRIB_FACE = 5, /**< front/back face */ - FRAG_ATTRIB_PNTC = 6, /**< sprite/point coord */ - FRAG_ATTRIB_CLIP_DIST0 = 7, - FRAG_ATTRIB_CLIP_DIST1 = 8, - FRAG_ATTRIB_MAX = 9 + FRAG_ATTRIB_COL = 1, + FRAG_ATTRIB_FOGC = 2, + FRAG_ATTRIB_TEX = 3, + FRAG_ATTRIB_FACE = 4, /**< front/back face */ + FRAG_ATTRIB_PNTC = 5, /**< sprite/point coord */ + FRAG_ATTRIB_CLIP_DIST0 = 6, + FRAG_ATTRIB_CLIP_DIST1 = 7, + FRAG_ATTRIB_MAX = 8 } gl_frag_attrib; -#define FRAG_BIT_COL0 (1 << FRAG_ATTRIB_COL0) -#define FRAG_BIT_COL1 (1 << FRAG_ATTRIB_COL1) +#define FRAG_BIT_COL (1 << FRAG_ATTRIB_COL) #define FRAG_BIT_FOGC (1 << FRAG_ATTRIB_FOGC) #define FRAG_BIT_TEX (1 << FRAG_ATTRIB_TEX) @@ -386,8 +382,6 @@ struct gl_lightmodel GLfloat Ambient[4]; /**< ambient color */ GLboolean LocalViewer; /**< Local (or infinite) view point? */ GLboolean TwoSide; /**< Two (or one) sided lighting? */ - GLenum ColorControl; /**< either GL_SINGLE_COLOR - * or GL_SEPARATE_SPECULAR_COLOR */ }; @@ -452,14 +446,9 @@ struct gl_colorbuffer_attrib * control, only on the fixed-pointness of the render target. * The query does however depend on fragment color clamping. */ - GLfloat BlendColor[4]; /**< Blending color */ - GLenum SrcRGB; /**< RGB blend source term */ - GLenum DstRGB; /**< RGB blend dest term */ - GLenum SrcA; /**< Alpha blend source term */ - GLenum DstA; /**< Alpha blend dest term */ - GLenum EquationRGB; /**< GL_ADD, GL_SUBTRACT, etc. */ - GLenum EquationA; /**< GL_ADD, GL_SUBTRACT, etc. */ + GLenum SrcFactor; /**< RGB blend source term */ + GLenum DstFactor; /**< RGB blend dest term */ /*@}*/ /** @@ -496,7 +485,6 @@ struct gl_current_attrib GLfloat RasterPos[4]; GLfloat RasterDistance; GLfloat RasterColor[4]; - GLfloat RasterSecondaryColor[4]; GLfloat RasterTexCoords[4]; GLboolean RasterPosValid; /*@}*/ @@ -572,7 +560,6 @@ struct gl_fog_attrib GLfloat End; /**< End distance in eye coords */ GLfloat Index; /**< Fog index */ GLenum Mode; /**< Fog mode */ - GLboolean ColorSumEnabled; GLenum FogCoordinateSource; /**< GL_EXT_fog_coord */ GLfloat _Scale; /**< (End == Start) ? 1.0 : 1.0 / (End - Start) */ GLenum FogDistanceMode; /**< GL_NV_fog_distance */ @@ -1214,9 +1201,6 @@ struct gl_array_attrib GLbitfield64 NewState; /**< mask of VERT_BIT_* values */ GLboolean RebindArrays; /**< whether the VBO module should rebind arrays */ - - /* GL_ARB_vertex_buffer_object */ - struct gl_buffer_object *ArrayBufferObj; }; @@ -1470,8 +1454,6 @@ struct gl_constants GLfloat MinLineWidthAA, MaxLineWidthAA; /**< antialiased */ GLfloat LineWidthGranularity; - GLuint MaxColorTableSize; - GLuint MaxClipPlanes; GLuint MaxLights; GLfloat MaxShininess; /**< GL_NV_light_max_exponent */ @@ -1645,17 +1627,16 @@ struct gl_matrix_stack */ /*@{*/ #define DD_FLATSHADE 0x1 -#define DD_SEPARATE_SPECULAR 0x2 -#define DD_TRI_CULL_FRONT_BACK 0x4 /* special case on some hw */ -#define DD_TRI_LIGHT_TWOSIDE 0x8 -#define DD_TRI_UNFILLED 0x10 -#define DD_TRI_SMOOTH 0x20 -#define DD_TRI_STIPPLE 0x40 -#define DD_TRI_OFFSET 0x80 -#define DD_LINE_SMOOTH 0x100 -#define DD_LINE_STIPPLE 0x200 -#define DD_POINT_SMOOTH 0x400 -#define DD_POINT_ATTEN 0x800 +#define DD_TRI_CULL_FRONT_BACK 0x2 /* special case on some hw */ +#define DD_TRI_LIGHT_TWOSIDE 0x4 +#define DD_TRI_UNFILLED 0x8 +#define DD_TRI_SMOOTH 0x10 +#define DD_TRI_STIPPLE 0x20 +#define DD_TRI_OFFSET 0x40 +#define DD_LINE_SMOOTH 0x80 +#define DD_LINE_STIPPLE 0x100 +#define DD_POINT_SMOOTH 0x200 +#define DD_POINT_ATTEN 0x400 /*@}*/ diff --git a/reactos/dll/opengl/mesa/main/precomp.h b/reactos/dll/opengl/mesa/main/precomp.h index 3a3c19054d5..168125d7c02 100644 --- a/reactos/dll/opengl/mesa/main/precomp.h +++ b/reactos/dll/opengl/mesa/main/precomp.h @@ -13,10 +13,8 @@ #include "clear.h" #include "clip.h" #include "colormac.h" -#include "colortab.h" #include "compiler.h" #include "context.h" -#include "convolve.h" #include "cpuinfo.h" #include "depth.h" #include "dispatch.h" diff --git a/reactos/dll/opengl/mesa/main/rastpos.c b/reactos/dll/opengl/mesa/main/rastpos.c index 3d47a6a45a6..a54c0b5622e 100644 --- a/reactos/dll/opengl/mesa/main/rastpos.c +++ b/reactos/dll/opengl/mesa/main/rastpos.c @@ -240,21 +240,13 @@ window_pos3f(GLfloat x, GLfloat y, GLfloat z) /* raster color = current color or index */ ctx->Current.RasterColor[0] - = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0], 0.0F, 1.0F); + = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR][0], 0.0F, 1.0F); ctx->Current.RasterColor[1] - = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1], 0.0F, 1.0F); + = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR][1], 0.0F, 1.0F); ctx->Current.RasterColor[2] - = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2], 0.0F, 1.0F); + = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR][2], 0.0F, 1.0F); ctx->Current.RasterColor[3] - = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3], 0.0F, 1.0F); - ctx->Current.RasterSecondaryColor[0] - = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0], 0.0F, 1.0F); - ctx->Current.RasterSecondaryColor[1] - = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1], 0.0F, 1.0F); - ctx->Current.RasterSecondaryColor[2] - = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2], 0.0F, 1.0F); - ctx->Current.RasterSecondaryColor[3] - = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3], 0.0F, 1.0F); + = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR][3], 0.0F, 1.0F); /* raster texcoord = current texcoord */ COPY_4FV( ctx->Current.RasterTexCoords, ctx->Current.Attrib[VERT_ATTRIB_TEX] ); @@ -539,7 +531,6 @@ void _mesa_init_rastpos( struct gl_context * ctx ) ASSIGN_4V( ctx->Current.RasterPos, 0.0, 0.0, 0.0, 1.0 ); ctx->Current.RasterDistance = 0.0; ASSIGN_4V( ctx->Current.RasterColor, 1.0, 1.0, 1.0, 1.0 ); - ASSIGN_4V( ctx->Current.RasterSecondaryColor, 0.0, 0.0, 0.0, 1.0 ); ASSIGN_4V( ctx->Current.RasterTexCoords, 0.0, 0.0, 0.0, 1.0 ); ctx->Current.RasterPosValid = GL_TRUE; } diff --git a/reactos/dll/opengl/mesa/main/state.c b/reactos/dll/opengl/mesa/main/state.c index 62221e34a73..428c8dafaaf 100644 --- a/reactos/dll/opengl/mesa/main/state.c +++ b/reactos/dll/opengl/mesa/main/state.c @@ -32,15 +32,6 @@ #include -static void -update_separate_specular(struct gl_context *ctx) -{ - if (_mesa_need_secondary_color(ctx)) - ctx->_TriangleCaps |= DD_SEPARATE_SPECULAR; - else - ctx->_TriangleCaps &= ~DD_SEPARATE_SPECULAR; -} - /** * Helper for update_arrays(). @@ -79,13 +70,8 @@ update_arrays( struct gl_context *ctx ) } /* 3 */ - if (ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR0].Enabled) { - min = update_min(min, &ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR0]); - } - - /* 4 */ - if (ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR1].Enabled) { - min = update_min(min, &ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR1]); + if (ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR].Enabled) { + min = update_min(min, &ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR]); } /* 5 */ @@ -262,9 +248,6 @@ _mesa_update_state_locked( struct gl_context *ctx ) if (new_state & _NEW_PIXEL) _mesa_update_pixel( ctx, new_state ); - if (new_state & _DD_NEW_SEPARATE_SPECULAR) - update_separate_specular( ctx ); - if (new_state & (_NEW_BUFFERS | _NEW_VIEWPORT)) update_viewport_matrix(ctx); diff --git a/reactos/dll/opengl/mesa/main/state.h b/reactos/dll/opengl/mesa/main/state.h index 5268effb31a..3793cab12f2 100644 --- a/reactos/dll/opengl/mesa/main/state.h +++ b/reactos/dll/opengl/mesa/main/state.h @@ -37,21 +37,4 @@ _mesa_update_state(struct gl_context *ctx); extern void _mesa_update_state_locked(struct gl_context *ctx); - -/** - * Is the secondary color needed? - */ -static inline GLboolean -_mesa_need_secondary_color(const struct gl_context *ctx) -{ - if (ctx->Light.Enabled && - ctx->Light.Model.ColorControl == GL_SEPARATE_SPECULAR_COLOR) - return GL_TRUE; - - if (ctx->Fog.ColorSumEnabled) - return GL_TRUE; - - return GL_FALSE; -} - #endif diff --git a/reactos/dll/opengl/mesa/main/varray.c b/reactos/dll/opengl/mesa/main/varray.c index d570e865ef5..ab2a870f61d 100644 --- a/reactos/dll/opengl/mesa/main/varray.c +++ b/reactos/dll/opengl/mesa/main/varray.c @@ -118,14 +118,6 @@ update_array(struct gl_context *ctx, return; } - if (!_mesa_is_bufferobj(ctx->Array.ArrayBufferObj)) { - /* GL_ARB_vertex_array_object requires that all arrays reside in VBOs. - * Generate GL_INVALID_OPERATION if that's not true. - */ - _mesa_error(ctx, GL_INVALID_OPERATION, "%s(non-VBO array)", func); - return; - } - elementSize = _mesa_sizeof_type(type) * size; array = &ctx->Array.VertexAttrib[attrib]; @@ -138,9 +130,6 @@ update_array(struct gl_context *ctx, array->Ptr = (const GLubyte *) ptr; array->_ElementSize = elementSize; - _mesa_reference_buffer_object(ctx, &array->BufferObj, - ctx->Array.ArrayBufferObj); - ctx->NewState |= _NEW_ARRAY; ctx->Array.NewState |= VERT_BIT(attrib); } @@ -184,7 +173,7 @@ _mesa_ColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *ptr) GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); - update_array(ctx, "glColorPointer", VERT_ATTRIB_COLOR0, + update_array(ctx, "glColorPointer", VERT_ATTRIB_COLOR, legalTypes, 3, 4, size, type, stride, GL_TRUE, GL_FALSE, ptr); } @@ -217,23 +206,6 @@ _mesa_IndexPointer(GLenum type, GLsizei stride, const GLvoid *ptr) } -void GLAPIENTRY -_mesa_SecondaryColorPointerEXT(GLint size, GLenum type, - GLsizei stride, const GLvoid *ptr) -{ - const GLbitfield legalTypes = (BYTE_BIT | UNSIGNED_BYTE_BIT | - SHORT_BIT | UNSIGNED_SHORT_BIT | - INT_BIT | UNSIGNED_INT_BIT | - HALF_BIT | FLOAT_BIT | DOUBLE_BIT); - GET_CURRENT_CONTEXT(ctx); - ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); - - update_array(ctx, "glSecondaryColorPointer", VERT_ATTRIB_COLOR1, - legalTypes, 3, 4, - size, type, stride, GL_TRUE, GL_FALSE, ptr); -} - - void GLAPIENTRY _mesa_TexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *ptr) @@ -644,9 +616,6 @@ _mesa_init_varray(struct gl_context *ctx, struct gl_array_attrib *array) case VERT_ATTRIB_NORMAL: init_array(ctx, &array->VertexAttrib[VERT_ATTRIB_NORMAL], 3, GL_FLOAT); break; - case VERT_ATTRIB_COLOR1: - init_array(ctx, &array->VertexAttrib[VERT_ATTRIB_COLOR1], 3, GL_FLOAT); - break; case VERT_ATTRIB_FOG: init_array(ctx, &array->VertexAttrib[VERT_ATTRIB_FOG], 1, GL_FLOAT); break; @@ -656,11 +625,6 @@ _mesa_init_varray(struct gl_context *ctx, struct gl_array_attrib *array) case VERT_ATTRIB_EDGEFLAG: init_array(ctx, &array->VertexAttrib[VERT_ATTRIB_EDGEFLAG], 1, GL_BOOL); break; - #if FEATURE_point_size_array - case VERT_ATTRIB_POINT_SIZE: - init_array(ctx, &array->VertexAttrib[VERT_ATTRIB_POINT_SIZE], 1, GL_FLOAT); - break; - #endif default: init_array(ctx, &array->VertexAttrib[i], 4, GL_FLOAT); break; diff --git a/reactos/dll/opengl/mesa/main/varray.h b/reactos/dll/opengl/mesa/main/varray.h index 8d0898261b7..0a984bcec88 100644 --- a/reactos/dll/opengl/mesa/main/varray.h +++ b/reactos/dll/opengl/mesa/main/varray.h @@ -132,11 +132,6 @@ extern void GLAPIENTRY _mesa_FogCoordPointerEXT(GLenum type, GLsizei stride, const GLvoid *ptr); -extern void GLAPIENTRY -_mesa_SecondaryColorPointerEXT(GLint size, GLenum type, - GLsizei stride, const GLvoid *ptr); - - extern void GLAPIENTRY _mesa_InterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer); @@ -165,10 +160,6 @@ extern void GLAPIENTRY _mesa_DrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); -extern void GLAPIENTRY -_mesa_DrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, - GLenum type, const GLvoid *indices); - extern void _mesa_copy_client_array(struct gl_context *ctx, diff --git a/reactos/dll/opengl/mesa/main/vtxfmt.c b/reactos/dll/opengl/mesa/main/vtxfmt.c index 8839c6a4071..877a4714f6e 100644 --- a/reactos/dll/opengl/mesa/main/vtxfmt.c +++ b/reactos/dll/opengl/mesa/main/vtxfmt.c @@ -54,8 +54,6 @@ install_vtxfmt( struct _glapi_table *tab, const GLvertexformat *vfmt ) SET_Materialfv(tab, vfmt->Materialfv); SET_Normal3f(tab, vfmt->Normal3f); SET_Normal3fv(tab, vfmt->Normal3fv); - SET_SecondaryColor3fEXT(tab, vfmt->SecondaryColor3fEXT); - SET_SecondaryColor3fvEXT(tab, vfmt->SecondaryColor3fvEXT); SET_TexCoord1f(tab, vfmt->TexCoord1f); SET_TexCoord1fv(tab, vfmt->TexCoord1fv); SET_TexCoord2f(tab, vfmt->TexCoord2f); @@ -80,7 +78,6 @@ install_vtxfmt( struct _glapi_table *tab, const GLvertexformat *vfmt ) SET_DrawArrays(tab, vfmt->DrawArrays); SET_DrawElements(tab, vfmt->DrawElements); - SET_DrawRangeElements(tab, vfmt->DrawRangeElements); /* GL_NV_vertex_program */ SET_VertexAttrib1fNV(tab, vfmt->VertexAttrib1fNV); diff --git a/reactos/dll/opengl/mesa/swrast/s_aaline.c b/reactos/dll/opengl/mesa/swrast/s_aaline.c index 233fa78af29..05085adccbb 100644 --- a/reactos/dll/opengl/mesa/swrast/s_aaline.c +++ b/reactos/dll/opengl/mesa/swrast/s_aaline.c @@ -470,9 +470,6 @@ _swrast_choose_aa_line_function(struct gl_context *ctx) ASSERT(ctx->Line.SmoothFlag); if (ctx->Texture._EnabledCoord - || (ctx->Light.Enabled && - ctx->Light.Model.ColorControl == GL_SEPARATE_SPECULAR_COLOR) - || ctx->Fog.ColorSumEnabled || swrast->_FogEnabled) { swrast->Line = aa_general_rgba_line; } diff --git a/reactos/dll/opengl/mesa/swrast/s_aatriangle.c b/reactos/dll/opengl/mesa/swrast/s_aatriangle.c index 269531ac4e9..ad27fa62c79 100644 --- a/reactos/dll/opengl/mesa/swrast/s_aatriangle.c +++ b/reactos/dll/opengl/mesa/swrast/s_aatriangle.c @@ -289,8 +289,7 @@ _swrast_set_aa_triangle_function(struct gl_context *ctx) ASSERT(ctx->Polygon.SmoothFlag); if (ctx->Texture._EnabledCoord - || swrast->_FogEnabled - || _mesa_need_secondary_color(ctx)) { + || swrast->_FogEnabled) { SWRAST_CONTEXT(ctx)->Triangle = general_aa_tri; } else { diff --git a/reactos/dll/opengl/mesa/swrast/s_alpha.c b/reactos/dll/opengl/mesa/swrast/s_alpha.c index f3f882e92b5..32f66b9cdd6 100644 --- a/reactos/dll/opengl/mesa/swrast/s_alpha.c +++ b/reactos/dll/opengl/mesa/swrast/s_alpha.c @@ -116,7 +116,7 @@ _swrast_alpha_test(const struct gl_context *ctx, SWspan *span) ALPHA_TEST(rgba[i][ACOMP], ;); } else { - GLfloat (*rgba)[4] = span->array->attribs[FRAG_ATTRIB_COL0]; + GLfloat (*rgba)[4] = span->array->attribs[FRAG_ATTRIB_COL]; const GLfloat ref = ctx->Color.AlphaRef; ALPHA_TEST(rgba[i][ACOMP], ;); } diff --git a/reactos/dll/opengl/mesa/swrast/s_blend.c b/reactos/dll/opengl/mesa/swrast/s_blend.c index 2f5e319cb71..fa73e28e568 100644 --- a/reactos/dll/opengl/mesa/swrast/s_blend.c +++ b/reactos/dll/opengl/mesa/swrast/s_blend.c @@ -292,113 +292,6 @@ blend_add(struct gl_context *ctx, GLuint n, const GLubyte mask[], -/** - * Blend min function. - * Any chanType ok. - */ -static void _BLENDAPI -blend_min(struct gl_context *ctx, GLuint n, const GLubyte mask[], - GLvoid *src, const GLvoid *dst, GLenum chanType) -{ - GLuint i; - ASSERT(ctx->Color.EquationRGB == GL_MIN); - ASSERT(ctx->Color.EquationA == GL_MIN); - (void) ctx; - - if (chanType == GL_UNSIGNED_BYTE) { - GLubyte (*rgba)[4] = (GLubyte (*)[4]) src; - const GLubyte (*dest)[4] = (const GLubyte (*)[4]) dst; - for (i=0;iColor.EquationRGB == GL_MAX); - ASSERT(ctx->Color.EquationA == GL_MAX); - (void) ctx; - - if (chanType == GL_UNSIGNED_BYTE) { - GLubyte (*rgba)[4] = (GLubyte (*)[4]) src; - const GLubyte (*dest)[4] = (const GLubyte (*)[4]) dst; - for (i=0;iColor.SrcRGB) { + switch (ctx->Color.SrcFactor) { case GL_ZERO: - sR = sG = sB = 0.0F; + sR = sG = sB = sA = 0.0F; break; case GL_ONE: - sR = sG = sB = 1.0F; + sR = sG = sB = sA = 1.0F; break; case GL_DST_COLOR: sR = Rd; sG = Gd; sB = Bd; + sA = Ad; break; case GL_ONE_MINUS_DST_COLOR: sR = 1.0F - Rd; sG = 1.0F - Gd; sB = 1.0F - Bd; + sA = 1.0f - Ad; break; case GL_SRC_ALPHA: - sR = sG = sB = As; + sR = sG = sB = sA = As; break; case GL_ONE_MINUS_SRC_ALPHA: - sR = sG = sB = 1.0F - As; + sR = sG = sB = sA = 1.0F - As; break; case GL_DST_ALPHA: - sR = sG = sB = Ad; + sR = sG = sB = sA = Ad; break; case GL_ONE_MINUS_DST_ALPHA: - sR = sG = sB = 1.0F - Ad; + sR = sG = sB = sA = 1.0F - Ad; break; case GL_SRC_ALPHA_SATURATE: if (As < 1.0F - Ad) { - sR = sG = sB = As; + sR = sG = sB = sA = As; } else { - sR = sG = sB = 1.0F - Ad; + sR = sG = sB = sA = 1.0F - Ad; } break; - case GL_CONSTANT_COLOR: - sR = ctx->Color.BlendColor[0]; - sG = ctx->Color.BlendColor[1]; - sB = ctx->Color.BlendColor[2]; - break; - case GL_ONE_MINUS_CONSTANT_COLOR: - sR = 1.0F - ctx->Color.BlendColor[0]; - sG = 1.0F - ctx->Color.BlendColor[1]; - sB = 1.0F - ctx->Color.BlendColor[2]; - break; - case GL_CONSTANT_ALPHA: - sR = sG = sB = ctx->Color.BlendColor[3]; - break; - case GL_ONE_MINUS_CONSTANT_ALPHA: - sR = sG = sB = 1.0F - ctx->Color.BlendColor[3]; - break; case GL_SRC_COLOR: sR = Rs; sG = Gs; sB = Bs; + sA = As; break; case GL_ONE_MINUS_SRC_COLOR: sR = 1.0F - Rs; sG = 1.0F - Gs; sB = 1.0F - Bs; + sA = 1.0F - As; break; default: /* this should never happen */ @@ -557,234 +438,62 @@ blend_general_float(struct gl_context *ctx, GLuint n, const GLubyte mask[], return; } - /* Source Alpha factor */ - switch (ctx->Color.SrcA) { + /* Dest factor */ + switch (ctx->Color.DstFactor) { case GL_ZERO: - sA = 0.0F; + dR = dG = dB = dA = 0.0F; break; case GL_ONE: - sA = 1.0F; - break; - case GL_DST_COLOR: - sA = Ad; - break; - case GL_ONE_MINUS_DST_COLOR: - sA = 1.0F - Ad; - break; - case GL_SRC_ALPHA: - sA = As; - break; - case GL_ONE_MINUS_SRC_ALPHA: - sA = 1.0F - As; - break; - case GL_DST_ALPHA: - sA = Ad; - break; - case GL_ONE_MINUS_DST_ALPHA: - sA = 1.0F - Ad; - break; - case GL_SRC_ALPHA_SATURATE: - sA = 1.0; - break; - case GL_CONSTANT_COLOR: - sA = ctx->Color.BlendColor[3]; - break; - case GL_ONE_MINUS_CONSTANT_COLOR: - sA = 1.0F - ctx->Color.BlendColor[3]; - break; - case GL_CONSTANT_ALPHA: - sA = ctx->Color.BlendColor[3]; - break; - case GL_ONE_MINUS_CONSTANT_ALPHA: - sA = 1.0F - ctx->Color.BlendColor[3]; - break; - case GL_SRC_COLOR: - sA = As; - break; - case GL_ONE_MINUS_SRC_COLOR: - sA = 1.0F - As; - break; - default: - /* this should never happen */ - sA = 0.0F; - _mesa_problem(ctx, "Bad blend source A factor in blend_general_float"); - return; - } - - /* Dest RGB factor */ - switch (ctx->Color.DstRGB) { - case GL_ZERO: - dR = dG = dB = 0.0F; - break; - case GL_ONE: - dR = dG = dB = 1.0F; + dR = dG = dB = dA = 1.0F; break; case GL_SRC_COLOR: dR = Rs; dG = Gs; dB = Bs; + dA = As; break; case GL_ONE_MINUS_SRC_COLOR: dR = 1.0F - Rs; dG = 1.0F - Gs; dB = 1.0F - Bs; + dA = 1.0F - As; break; case GL_SRC_ALPHA: - dR = dG = dB = As; + dR = dG = dB = dA = As; break; case GL_ONE_MINUS_SRC_ALPHA: - dR = dG = dB = 1.0F - As; + dR = dG = dB = dA = 1.0F - As; break; case GL_DST_ALPHA: - dR = dG = dB = Ad; + dR = dG = dB = dA = Ad; break; case GL_ONE_MINUS_DST_ALPHA: - dR = dG = dB = 1.0F - Ad; - break; - case GL_CONSTANT_COLOR: - dR = ctx->Color.BlendColor[0]; - dG = ctx->Color.BlendColor[1]; - dB = ctx->Color.BlendColor[2]; - break; - case GL_ONE_MINUS_CONSTANT_COLOR: - dR = 1.0F - ctx->Color.BlendColor[0]; - dG = 1.0F - ctx->Color.BlendColor[1]; - dB = 1.0F - ctx->Color.BlendColor[2]; - break; - case GL_CONSTANT_ALPHA: - dR = dG = dB = ctx->Color.BlendColor[3]; - break; - case GL_ONE_MINUS_CONSTANT_ALPHA: - dR = dG = dB = 1.0F - ctx->Color.BlendColor[3]; + dR = dG = dB = dA = 1.0F - Ad; break; case GL_DST_COLOR: dR = Rd; dG = Gd; dB = Bd; + dA = Ad; break; case GL_ONE_MINUS_DST_COLOR: dR = 1.0F - Rd; dG = 1.0F - Gd; dB = 1.0F - Bd; - break; - default: - /* this should never happen */ - dR = dG = dB = 0.0F; - _mesa_problem(ctx, "Bad blend dest RGB factor in blend_general_float"); - return; - } - - /* Dest Alpha factor */ - switch (ctx->Color.DstA) { - case GL_ZERO: - dA = 0.0F; - break; - case GL_ONE: - dA = 1.0F; - break; - case GL_SRC_COLOR: - dA = As; - break; - case GL_ONE_MINUS_SRC_COLOR: - dA = 1.0F - As; - break; - case GL_SRC_ALPHA: - dA = As; - break; - case GL_ONE_MINUS_SRC_ALPHA: - dA = 1.0F - As; - break; - case GL_DST_ALPHA: - dA = Ad; - break; - case GL_ONE_MINUS_DST_ALPHA: - dA = 1.0F - Ad; - break; - case GL_CONSTANT_COLOR: - dA = ctx->Color.BlendColor[3]; - break; - case GL_ONE_MINUS_CONSTANT_COLOR: - dA = 1.0F - ctx->Color.BlendColor[3]; - break; - case GL_CONSTANT_ALPHA: - dA = ctx->Color.BlendColor[3]; - break; - case GL_ONE_MINUS_CONSTANT_ALPHA: - dA = 1.0F - ctx->Color.BlendColor[3]; - break; - case GL_DST_COLOR: - dA = Ad; - break; - case GL_ONE_MINUS_DST_COLOR: dA = 1.0F - Ad; break; default: /* this should never happen */ - dA = 0.0F; - _mesa_problem(ctx, "Bad blend dest A factor in blend_general_float"); + dR = dG = dB = dA = 0.0F; + _mesa_problem(ctx, "Bad blend dest factor in blend_general_float"); return; } - /* compute the blended RGB */ - switch (ctx->Color.EquationRGB) { - case GL_FUNC_ADD: - r = Rs * sR + Rd * dR; - g = Gs * sG + Gd * dG; - b = Bs * sB + Bd * dB; - a = As * sA + Ad * dA; - break; - case GL_FUNC_SUBTRACT: - r = Rs * sR - Rd * dR; - g = Gs * sG - Gd * dG; - b = Bs * sB - Bd * dB; - a = As * sA - Ad * dA; - break; - case GL_FUNC_REVERSE_SUBTRACT: - r = Rd * dR - Rs * sR; - g = Gd * dG - Gs * sG; - b = Bd * dB - Bs * sB; - a = Ad * dA - As * sA; - break; - case GL_MIN: - r = MIN2( Rd, Rs ); - g = MIN2( Gd, Gs ); - b = MIN2( Bd, Bs ); - break; - case GL_MAX: - r = MAX2( Rd, Rs ); - g = MAX2( Gd, Gs ); - b = MAX2( Bd, Bs ); - break; - default: - /* should never get here */ - r = g = b = 0.0F; /* silence uninitialized var warning */ - _mesa_problem(ctx, "unexpected BlendEquation in blend_general()"); - return; - } - - /* compute the blended alpha */ - switch (ctx->Color.EquationA) { - case GL_FUNC_ADD: - a = As * sA + Ad * dA; - break; - case GL_FUNC_SUBTRACT: - a = As * sA - Ad * dA; - break; - case GL_FUNC_REVERSE_SUBTRACT: - a = Ad * dA - As * sA; - break; - case GL_MIN: - a = MIN2( Ad, As ); - break; - case GL_MAX: - a = MAX2( Ad, As ); - break; - default: - /* should never get here */ - a = 0.0F; /* silence uninitialized var warning */ - _mesa_problem(ctx, "unexpected BlendEquation in blend_general()"); - return; - } + /* compute the blended RGBA */ + r = Rs * sR + Rd * dR; + g = Gs * sG + Gd * dG; + b = Bs * sB + Bd * dB; + a = As * sA + Ad * dA; /* final clamping */ #if 0 @@ -891,40 +600,10 @@ void _swrast_choose_blend_func(struct gl_context *ctx, GLenum chanType) { SWcontext *swrast = SWRAST_CONTEXT(ctx); - const GLenum eq = ctx->Color.EquationRGB; - const GLenum srcRGB = ctx->Color.SrcRGB; - const GLenum dstRGB = ctx->Color.DstRGB; - const GLenum srcA = ctx->Color.SrcA; - const GLenum dstA = ctx->Color.DstA; + const GLenum srcFactor = ctx->Color.SrcFactor; + const GLenum dstFactor = ctx->Color.DstFactor; - if (ctx->Color.EquationRGB != ctx->Color.EquationA) { - swrast->BlendFunc = blend_general; - } - else if (eq == GL_MIN) { - /* Note: GL_MIN ignores the blending weight factors */ -#if defined(USE_MMX_ASM) - if (cpu_has_mmx && chanType == GL_UNSIGNED_BYTE) { - swrast->BlendFunc = _mesa_mmx_blend_min; - } - else -#endif - swrast->BlendFunc = blend_min; - } - else if (eq == GL_MAX) { - /* Note: GL_MAX ignores the blending weight factors */ -#if defined(USE_MMX_ASM) - if (cpu_has_mmx && chanType == GL_UNSIGNED_BYTE) { - swrast->BlendFunc = _mesa_mmx_blend_max; - } - else -#endif - swrast->BlendFunc = blend_max; - } - else if (srcRGB != srcA || dstRGB != dstA) { - swrast->BlendFunc = blend_general; - } - else if (eq == GL_FUNC_ADD && srcRGB == GL_SRC_ALPHA - && dstRGB == GL_ONE_MINUS_SRC_ALPHA) { + if (srcFactor == GL_SRC_ALPHA && dstFactor == GL_ONE_MINUS_SRC_ALPHA) { #if defined(USE_MMX_ASM) if (cpu_has_mmx && chanType == GL_UNSIGNED_BYTE) { swrast->BlendFunc = _mesa_mmx_blend_transparency; @@ -940,7 +619,7 @@ _swrast_choose_blend_func(struct gl_context *ctx, GLenum chanType) swrast->BlendFunc = blend_transparency_float; } } - else if (eq == GL_FUNC_ADD && srcRGB == GL_ONE && dstRGB == GL_ONE) { + else if (srcFactor == GL_ONE && dstFactor == GL_ONE) { #if defined(USE_MMX_ASM) if (cpu_has_mmx && chanType == GL_UNSIGNED_BYTE) { swrast->BlendFunc = _mesa_mmx_blend_add; @@ -949,11 +628,8 @@ _swrast_choose_blend_func(struct gl_context *ctx, GLenum chanType) #endif swrast->BlendFunc = blend_add; } - else if (((eq == GL_FUNC_ADD || eq == GL_FUNC_REVERSE_SUBTRACT) - && (srcRGB == GL_ZERO && dstRGB == GL_SRC_COLOR)) - || - ((eq == GL_FUNC_ADD || eq == GL_FUNC_SUBTRACT) - && (srcRGB == GL_DST_COLOR && dstRGB == GL_ZERO))) { + else if ((srcFactor == GL_ZERO && dstFactor == GL_SRC_COLOR) + || (srcFactor == GL_DST_COLOR && dstFactor == GL_ZERO)) { #if defined(USE_MMX_ASM) if (cpu_has_mmx && chanType == GL_UNSIGNED_BYTE) { swrast->BlendFunc = _mesa_mmx_blend_modulate; @@ -962,10 +638,10 @@ _swrast_choose_blend_func(struct gl_context *ctx, GLenum chanType) #endif swrast->BlendFunc = blend_modulate; } - else if (eq == GL_FUNC_ADD && srcRGB == GL_ZERO && dstRGB == GL_ONE) { + else if (srcFactor == GL_ZERO && dstFactor == GL_ONE) { swrast->BlendFunc = blend_noop; } - else if (eq == GL_FUNC_ADD && srcRGB == GL_ONE && dstRGB == GL_ZERO) { + else if (srcFactor == GL_ONE && dstFactor == GL_ZERO) { swrast->BlendFunc = blend_replace; } else { diff --git a/reactos/dll/opengl/mesa/swrast/s_context.c b/reactos/dll/opengl/mesa/swrast/s_context.c index 93fe5b18966..179014b6ca9 100644 --- a/reactos/dll/opengl/mesa/swrast/s_context.c +++ b/reactos/dll/opengl/mesa/swrast/s_context.c @@ -190,22 +190,6 @@ _swrast_update_fog_state( struct gl_context *ctx ) } -/** - * See if we can do early diffuse+specular (primary+secondary) color - * add per vertex instead of per-fragment. - */ -static void -_swrast_update_specular_vertex_add(struct gl_context *ctx) -{ - SWcontext *swrast = SWRAST_CONTEXT(ctx); - GLboolean separateSpecular = ctx->Fog.ColorSumEnabled || - (ctx->Light.Enabled && - ctx->Light.Model.ColorControl == GL_SEPARATE_SPECULAR_COLOR); - - swrast->SpecularVertexAdd = (separateSpecular && !ctx->Texture._Enabled); -} - - #define _SWRAST_NEW_DERIVED (_SWRAST_NEW_RASTERMASK | \ _NEW_TEXTURE | \ _NEW_HINT | \ @@ -266,12 +250,6 @@ _swrast_validate_triangle( struct gl_context *ctx, swrast->choose_triangle( ctx ); ASSERT(swrast->Triangle); - if (swrast->SpecularVertexAdd) { - /* separate specular color, but no texture */ - swrast->SpecTriangle = swrast->Triangle; - swrast->Triangle = _swrast_add_spec_terms_triangle; - } - swrast->Triangle( ctx, v0, v1, v2 ); } @@ -288,11 +266,6 @@ _swrast_validate_line( struct gl_context *ctx, const SWvertex *v0, const SWverte swrast->choose_line( ctx ); ASSERT(swrast->Line); - if (swrast->SpecularVertexAdd) { - swrast->SpecLine = swrast->Line; - swrast->Line = _swrast_add_spec_terms_line; - } - swrast->Line( ctx, v0, v1 ); } @@ -308,11 +281,6 @@ _swrast_validate_point( struct gl_context *ctx, const SWvertex *v0 ) _swrast_validate_derived( ctx ); swrast->choose_point( ctx ); - if (swrast->SpecularVertexAdd) { - swrast->SpecPoint = swrast->Point; - swrast->Point = _swrast_add_spec_terms_point; - } - swrast->Point( ctx, v0 ); } @@ -411,15 +379,9 @@ _swrast_update_active_attribs(struct gl_context *ctx) attribsMask = 0x0; #if CHAN_TYPE == GL_FLOAT - attribsMask |= FRAG_BIT_COL0; + attribsMask |= FRAG_BIT_COL; #endif - if (ctx->Fog.ColorSumEnabled || - (ctx->Light.Enabled && - ctx->Light.Model.ColorControl == GL_SEPARATE_SPECULAR_COLOR)) { - attribsMask |= FRAG_BIT_COL1; - } - if (swrast->_FogEnabled) attribsMask |= FRAG_BIT_FOGC; @@ -434,7 +396,7 @@ _swrast_update_active_attribs(struct gl_context *ctx) if (attribsMask & BITFIELD64_BIT(i)) { swrast->_ActiveAttribs[num++] = i; /* how should this attribute be interpolated? */ - if (i == FRAG_ATTRIB_COL0 || i == FRAG_ATTRIB_COL1) + if (i == FRAG_ATTRIB_COL) swrast->_InterpMode[i] = ctx->Light.ShadeModel; else swrast->_InterpMode[i] = GL_SMOOTH; @@ -479,11 +441,6 @@ _swrast_validate_derived( struct gl_context *ctx ) _NEW_TEXTURE)) _swrast_update_active_attribs(ctx); - if (swrast->NewState & (_NEW_FOG | - _NEW_LIGHT | - _NEW_TEXTURE)) - _swrast_update_specular_vertex_add(ctx); - swrast->NewState = 0; swrast->StateChanges = 0; swrast->InvalidateState = _swrast_invalidate_state; @@ -770,11 +727,6 @@ _swrast_print_vertex( struct gl_context *ctx, const SWvertex *v ) _mesa_debug(ctx, "color %d %d %d %d\n", v->color[0], v->color[1], v->color[2], v->color[3]); #endif - _mesa_debug(ctx, "spec %g %g %g %g\n", - v->attrib[FRAG_ATTRIB_COL1][0], - v->attrib[FRAG_ATTRIB_COL1][1], - v->attrib[FRAG_ATTRIB_COL1][2], - v->attrib[FRAG_ATTRIB_COL1][3]); _mesa_debug(ctx, "fog %f\n", v->attrib[FRAG_ATTRIB_FOGC][0]); _mesa_debug(ctx, "index %f\n", v->attrib[FRAG_ATTRIB_CI][0]); _mesa_debug(ctx, "pointsize %f\n", v->pointSize); diff --git a/reactos/dll/opengl/mesa/swrast/s_context.h b/reactos/dll/opengl/mesa/swrast/s_context.h index 612956eb47a..190667e2c11 100644 --- a/reactos/dll/opengl/mesa/swrast/s_context.h +++ b/reactos/dll/opengl/mesa/swrast/s_context.h @@ -227,7 +227,6 @@ typedef struct GLbitfield NewState; GLuint StateChanges; GLenum Primitive; /* current primitive being drawn (ala glBegin) */ - GLboolean SpecularVertexAdd; /**< Add specular/secondary color per vertex */ void (*InvalidateState)( struct gl_context *ctx, GLbitfield new_state ); diff --git a/reactos/dll/opengl/mesa/swrast/s_copypix.c b/reactos/dll/opengl/mesa/swrast/s_copypix.c index e63e10245ac..a63976fe483 100644 --- a/reactos/dll/opengl/mesa/swrast/s_copypix.c +++ b/reactos/dll/opengl/mesa/swrast/s_copypix.c @@ -121,7 +121,7 @@ copy_rgba_pixels(struct gl_context *ctx, GLint srcx, GLint srcy, INIT_SPAN(span, GL_BITMAP); _swrast_span_default_attribs(ctx, &span); span.arrayMask = SPAN_RGBA; - span.arrayAttribs = FRAG_BIT_COL0; /* we'll fill in COL0 attrib values */ + span.arrayAttribs = FRAG_BIT_COL; /* we'll fill in COL0 attrib values */ if (overlapping) { tmpImage = (GLfloat *) malloc(width * height * sizeof(GLfloat) * 4); @@ -146,7 +146,7 @@ copy_rgba_pixels(struct gl_context *ctx, GLint srcx, GLint srcy, ASSERT(width < MAX_WIDTH); for (row = 0; row < height; row++, sy += stepy, dy += stepy) { - GLvoid *rgba = span.array->attribs[FRAG_ATTRIB_COL0]; + GLvoid *rgba = span.array->attribs[FRAG_ATTRIB_COL]; /* Get row/span of source pixels */ if (overlapping) { diff --git a/reactos/dll/opengl/mesa/swrast/s_drawpix.c b/reactos/dll/opengl/mesa/swrast/s_drawpix.c index 6c313b60391..06d9c94bfa4 100644 --- a/reactos/dll/opengl/mesa/swrast/s_drawpix.c +++ b/reactos/dll/opengl/mesa/swrast/s_drawpix.c @@ -409,7 +409,7 @@ draw_rgba_pixels( struct gl_context *ctx, GLint x, GLint y, INIT_SPAN(span, GL_BITMAP); _swrast_span_default_attribs(ctx, &span); span.arrayMask = SPAN_RGBA; - span.arrayAttribs = FRAG_BIT_COL0; /* we're fill in COL0 attrib values */ + span.arrayAttribs = FRAG_BIT_COL; /* we're fill in COL0 attrib values */ if (_mesa_get_format_datatype(ctx->DrawBuffer->_ColorDrawBuffer->Format) != GL_FLOAT) { /* need to clamp colors before applying fragment ops */ @@ -426,7 +426,7 @@ draw_rgba_pixels( struct gl_context *ctx, GLint x, GLint y, = _mesa_image_row_stride(unpack, width, format, type); GLint skipPixels = 0; /* use span array for temp color storage */ - GLfloat *rgba = (GLfloat *) span.array->attribs[FRAG_ATTRIB_COL0]; + GLfloat *rgba = (GLfloat *) span.array->attribs[FRAG_ATTRIB_COL]; /* if the span is wider than MAX_WIDTH we have to do it in chunks */ while (skipPixels < width) { diff --git a/reactos/dll/opengl/mesa/swrast/s_feedback.c b/reactos/dll/opengl/mesa/swrast/s_feedback.c index df322e99142..2916fac9363 100644 --- a/reactos/dll/opengl/mesa/swrast/s_feedback.c +++ b/reactos/dll/opengl/mesa/swrast/s_feedback.c @@ -31,7 +31,7 @@ feedback_vertex(struct gl_context * ctx, const SWvertex * v, const SWvertex * pv { GLfloat win[4]; const GLfloat *vtc = v->attrib[FRAG_ATTRIB_TEX]; - const GLfloat *color = v->attrib[FRAG_ATTRIB_COL0]; + const GLfloat *color = v->attrib[FRAG_ATTRIB_COL]; win[0] = v->attrib[FRAG_ATTRIB_WPOS][0]; win[1] = v->attrib[FRAG_ATTRIB_WPOS][1]; diff --git a/reactos/dll/opengl/mesa/swrast/s_fog.c b/reactos/dll/opengl/mesa/swrast/s_fog.c index 8aa52824057..29a56e0ba93 100644 --- a/reactos/dll/opengl/mesa/swrast/s_fog.c +++ b/reactos/dll/opengl/mesa/swrast/s_fog.c @@ -166,7 +166,7 @@ _swrast_fog_rgba_span( const struct gl_context *ctx, SWspan *span ) FOG_LOOP(GLushort, LINEAR_FOG); } else { - GLfloat (*rgba)[4] = span->array->attribs[FRAG_ATTRIB_COL0]; + GLfloat (*rgba)[4] = span->array->attribs[FRAG_ATTRIB_COL]; ASSERT(span->array->ChanType == GL_FLOAT); FOG_LOOP(GLfloat, LINEAR_FOG); } @@ -185,7 +185,7 @@ _swrast_fog_rgba_span( const struct gl_context *ctx, SWspan *span ) FOG_LOOP(GLushort, EXP_FOG); } else { - GLfloat (*rgba)[4] = span->array->attribs[FRAG_ATTRIB_COL0]; + GLfloat (*rgba)[4] = span->array->attribs[FRAG_ATTRIB_COL]; ASSERT(span->array->ChanType == GL_FLOAT); FOG_LOOP(GLfloat, EXP_FOG); } @@ -204,7 +204,7 @@ _swrast_fog_rgba_span( const struct gl_context *ctx, SWspan *span ) FOG_LOOP(GLushort, EXP2_FOG); } else { - GLfloat (*rgba)[4] = span->array->attribs[FRAG_ATTRIB_COL0]; + GLfloat (*rgba)[4] = span->array->attribs[FRAG_ATTRIB_COL]; ASSERT(span->array->ChanType == GL_FLOAT); FOG_LOOP(GLfloat, EXP2_FOG); } @@ -229,7 +229,7 @@ _swrast_fog_rgba_span( const struct gl_context *ctx, SWspan *span ) FOG_LOOP(GLushort, BLEND_FOG); } else { - GLfloat (*rgba)[4] = span->array->attribs[FRAG_ATTRIB_COL0]; + GLfloat (*rgba)[4] = span->array->attribs[FRAG_ATTRIB_COL]; ASSERT(span->array->ChanType == GL_FLOAT); FOG_LOOP(GLfloat, BLEND_FOG); } diff --git a/reactos/dll/opengl/mesa/swrast/s_lines.c b/reactos/dll/opengl/mesa/swrast/s_lines.c index b98ad3fde81..7694cd61e4a 100644 --- a/reactos/dll/opengl/mesa/swrast/s_lines.c +++ b/reactos/dll/opengl/mesa/swrast/s_lines.c @@ -149,41 +149,6 @@ draw_wide_line( struct gl_context *ctx, SWspan *span, GLboolean xMajor ) -void -_swrast_add_spec_terms_line(struct gl_context *ctx, - const SWvertex *v0, const SWvertex *v1) -{ - SWvertex *ncv0 = (SWvertex *)v0; - SWvertex *ncv1 = (SWvertex *)v1; - GLfloat rSum, gSum, bSum; - GLchan cSave[2][4]; - - /* save original colors */ - COPY_CHAN4(cSave[0], ncv0->color); - COPY_CHAN4(cSave[1], ncv1->color); - /* sum v0 */ - rSum = CHAN_TO_FLOAT(ncv0->color[0]) + ncv0->attrib[FRAG_ATTRIB_COL1][0]; - gSum = CHAN_TO_FLOAT(ncv0->color[1]) + ncv0->attrib[FRAG_ATTRIB_COL1][1]; - bSum = CHAN_TO_FLOAT(ncv0->color[2]) + ncv0->attrib[FRAG_ATTRIB_COL1][2]; - UNCLAMPED_FLOAT_TO_CHAN(ncv0->color[0], rSum); - UNCLAMPED_FLOAT_TO_CHAN(ncv0->color[1], gSum); - UNCLAMPED_FLOAT_TO_CHAN(ncv0->color[2], bSum); - /* sum v1 */ - rSum = CHAN_TO_FLOAT(ncv1->color[0]) + ncv1->attrib[FRAG_ATTRIB_COL1][0]; - gSum = CHAN_TO_FLOAT(ncv1->color[1]) + ncv1->attrib[FRAG_ATTRIB_COL1][1]; - bSum = CHAN_TO_FLOAT(ncv1->color[2]) + ncv1->attrib[FRAG_ATTRIB_COL1][2]; - UNCLAMPED_FLOAT_TO_CHAN(ncv1->color[0], rSum); - UNCLAMPED_FLOAT_TO_CHAN(ncv1->color[1], gSum); - UNCLAMPED_FLOAT_TO_CHAN(ncv1->color[2], bSum); - /* draw */ - SWRAST_CONTEXT(ctx)->SpecLine( ctx, ncv0, ncv1 ); - /* restore original colors */ - COPY_CHAN4( ncv0->attrib[FRAG_ATTRIB_COL0], cSave[0] ); - COPY_CHAN4( ncv1->attrib[FRAG_ATTRIB_COL0], cSave[1] ); -} - - - #ifdef DEBUG /* record the current line function name */ @@ -215,9 +180,6 @@ void _swrast_choose_line( struct gl_context *ctx ) { SWcontext *swrast = SWRAST_CONTEXT(ctx); - GLboolean specular = (ctx->Fog.ColorSumEnabled || - (ctx->Light.Enabled && - ctx->Light.Model.ColorControl == GL_SEPARATE_SPECULAR_COLOR)); if (ctx->RenderMode == GL_RENDER) { if (ctx->Line.SmoothFlag) { @@ -226,8 +188,7 @@ _swrast_choose_line( struct gl_context *ctx ) ASSERT(swrast->Line); } else if (ctx->Texture._EnabledCoord - || swrast->_FogEnabled - || specular) { + || swrast->_FogEnabled) { USE(general_line); } else if (ctx->Depth.Test diff --git a/reactos/dll/opengl/mesa/swrast/s_linetemp.h b/reactos/dll/opengl/mesa/swrast/s_linetemp.h index c58a39a2714..6f369eea3a5 100644 --- a/reactos/dll/opengl/mesa/swrast/s_linetemp.h +++ b/reactos/dll/opengl/mesa/swrast/s_linetemp.h @@ -153,18 +153,6 @@ NAME( struct gl_context *ctx, const SWvertex *vert0, const SWvertex *vert1 ) if (dx == 0 && dy == 0) return; - /* - printf("%s %d,%d %g %g %g %g %g %g %g %g\n", __FUNCTION__, dx, dy, - vert0->attrib[FRAG_ATTRIB_COL1][0], - vert0->attrib[FRAG_ATTRIB_COL1][1], - vert0->attrib[FRAG_ATTRIB_COL1][2], - vert0->attrib[FRAG_ATTRIB_COL1][3], - vert1->attrib[FRAG_ATTRIB_COL1][0], - vert1->attrib[FRAG_ATTRIB_COL1][1], - vert1->attrib[FRAG_ATTRIB_COL1][2], - vert1->attrib[FRAG_ATTRIB_COL1][3]); - */ - #ifdef DEPTH_TYPE zPtr = (DEPTH_TYPE *) _swrast_pixel_address(zrb, x0, y0); #endif diff --git a/reactos/dll/opengl/mesa/swrast/s_logic.c b/reactos/dll/opengl/mesa/swrast/s_logic.c index 959a92b3abb..ffc4a6fb8c6 100644 --- a/reactos/dll/opengl/mesa/swrast/s_logic.c +++ b/reactos/dll/opengl/mesa/swrast/s_logic.c @@ -203,7 +203,7 @@ _swrast_logicop_rgba_span(struct gl_context *ctx, struct gl_renderbuffer *rb, } else { logicop_uint4(ctx, 4 * span->end, - (GLuint *) span->array->attribs[FRAG_ATTRIB_COL0], + (GLuint *) span->array->attribs[FRAG_ATTRIB_COL], (const GLuint *) rbPixels, span->array->mask); } } diff --git a/reactos/dll/opengl/mesa/swrast/s_masking.c b/reactos/dll/opengl/mesa/swrast/s_masking.c index 6e848cca269..aa457a7b186 100644 --- a/reactos/dll/opengl/mesa/swrast/s_masking.c +++ b/reactos/dll/opengl/mesa/swrast/s_masking.c @@ -82,7 +82,7 @@ _swrast_mask_rgba_span(struct gl_context *ctx, struct gl_renderbuffer *rb, const GLuint bMask = ctx->Color.ColorMask[BCOMP] ? ~0x0 : 0x0; const GLuint aMask = ctx->Color.ColorMask[ACOMP] ? ~0x0 : 0x0; const GLuint (*dst)[4] = (const GLuint (*)[4]) rbPixels; - GLuint (*src)[4] = (GLuint (*)[4]) span->array->attribs[FRAG_ATTRIB_COL0]; + GLuint (*src)[4] = (GLuint (*)[4]) span->array->attribs[FRAG_ATTRIB_COL]; GLuint i; for (i = 0; i < n; i++) { src[i][RCOMP] = (src[i][RCOMP] & rMask) | (dst[i][RCOMP] & ~rMask); diff --git a/reactos/dll/opengl/mesa/swrast/s_points.c b/reactos/dll/opengl/mesa/swrast/s_points.c index 53932eb7d14..93a3415cbdb 100644 --- a/reactos/dll/opengl/mesa/swrast/s_points.c +++ b/reactos/dll/opengl/mesa/swrast/s_points.c @@ -486,33 +486,6 @@ pixel_point(struct gl_context *ctx, const SWvertex *vert) } -/** - * Add specular color to primary color, draw point, restore original - * primary color. - */ -void -_swrast_add_spec_terms_point(struct gl_context *ctx, const SWvertex *v0) -{ - SWvertex *ncv0 = (SWvertex *) v0; /* cast away const */ - GLfloat rSum, gSum, bSum; - GLchan cSave[4]; - - /* save */ - COPY_CHAN4(cSave, ncv0->color); - /* sum */ - rSum = CHAN_TO_FLOAT(ncv0->color[0]) + ncv0->attrib[FRAG_ATTRIB_COL1][0]; - gSum = CHAN_TO_FLOAT(ncv0->color[1]) + ncv0->attrib[FRAG_ATTRIB_COL1][1]; - bSum = CHAN_TO_FLOAT(ncv0->color[2]) + ncv0->attrib[FRAG_ATTRIB_COL1][2]; - UNCLAMPED_FLOAT_TO_CHAN(ncv0->color[0], rSum); - UNCLAMPED_FLOAT_TO_CHAN(ncv0->color[1], gSum); - UNCLAMPED_FLOAT_TO_CHAN(ncv0->color[2], bSum); - /* draw */ - SWRAST_CONTEXT(ctx)->SpecPoint(ctx, ncv0); - /* restore */ - COPY_CHAN4(ncv0->color, cSave); -} - - /** * Examine current state to determine which point drawing function to use. */ diff --git a/reactos/dll/opengl/mesa/swrast/s_span.c b/reactos/dll/opengl/mesa/swrast/s_span.c index c1973d868b4..ce296074ad1 100644 --- a/reactos/dll/opengl/mesa/swrast/s_span.c +++ b/reactos/dll/opengl/mesa/swrast/s_span.c @@ -82,17 +82,9 @@ _swrast_span_default_attribs(struct gl_context *ctx, SWspan *span) span->alphaStep = 0; span->interpMask |= SPAN_RGBA; - COPY_4V(span->attrStart[FRAG_ATTRIB_COL0], ctx->Current.RasterColor); - ASSIGN_4V(span->attrStepX[FRAG_ATTRIB_COL0], 0.0, 0.0, 0.0, 0.0); - ASSIGN_4V(span->attrStepY[FRAG_ATTRIB_COL0], 0.0, 0.0, 0.0, 0.0); - - /* Secondary color */ - if (ctx->Light.Enabled || ctx->Fog.ColorSumEnabled) - { - COPY_4V(span->attrStart[FRAG_ATTRIB_COL1], ctx->Current.RasterSecondaryColor); - ASSIGN_4V(span->attrStepX[FRAG_ATTRIB_COL1], 0.0, 0.0, 0.0, 0.0); - ASSIGN_4V(span->attrStepY[FRAG_ATTRIB_COL1], 0.0, 0.0, 0.0, 0.0); - } + COPY_4V(span->attrStart[FRAG_ATTRIB_COL], ctx->Current.RasterColor); + ASSIGN_4V(span->attrStepX[FRAG_ATTRIB_COL], 0.0, 0.0, 0.0, 0.0); + ASSIGN_4V(span->attrStepY[FRAG_ATTRIB_COL], 0.0, 0.0, 0.0, 0.0); /* fog */ { @@ -272,7 +264,7 @@ interpolate_int_colors(struct gl_context *ctx, SWspan *span) break; #endif case GL_FLOAT: - interpolate_active_attribs(ctx, span, FRAG_BIT_COL0); + interpolate_active_attribs(ctx, span, FRAG_BIT_COL); break; default: _mesa_problem(ctx, "bad datatype 0x%x in interpolate_int_colors", @@ -283,12 +275,12 @@ interpolate_int_colors(struct gl_context *ctx, SWspan *span) /** - * Populate the FRAG_ATTRIB_COL0 array. + * Populate the FRAG_ATTRIB_COL array. */ static inline void interpolate_float_colors(SWspan *span) { - GLfloat (*col0)[4] = span->array->attribs[FRAG_ATTRIB_COL0]; + GLfloat (*col0)[4] = span->array->attribs[FRAG_ATTRIB_COL]; const GLuint n = span->end; GLuint i; @@ -337,7 +329,7 @@ interpolate_float_colors(SWspan *span) } } - span->arrayAttribs |= FRAG_BIT_COL0; + span->arrayAttribs |= FRAG_BIT_COL; span->array->ChanType = GL_FLOAT; } @@ -739,57 +731,6 @@ clip_span( struct gl_context *ctx, SWspan *span ) } -/** - * Add specular colors to primary colors. - * Only called during fixed-function operation. - * Result is float color array (FRAG_ATTRIB_COL0). - */ -static inline void -add_specular(struct gl_context *ctx, SWspan *span) -{ - const SWcontext *swrast = SWRAST_CONTEXT(ctx); - const GLubyte *mask = span->array->mask; - GLfloat (*col0)[4] = span->array->attribs[FRAG_ATTRIB_COL0]; - GLfloat (*col1)[4] = span->array->attribs[FRAG_ATTRIB_COL1]; - GLuint i; - - ASSERT(!_swrast_use_fragment_program(ctx)); - ASSERT(span->arrayMask & SPAN_RGBA); - ASSERT(swrast->_ActiveAttribMask & FRAG_BIT_COL1); - (void) swrast; /* silence warning */ - - if (span->array->ChanType == GL_FLOAT) { - if ((span->arrayAttribs & FRAG_BIT_COL0) == 0) { - interpolate_active_attribs(ctx, span, FRAG_BIT_COL0); - } - } - else { - /* need float colors */ - if ((span->arrayAttribs & FRAG_BIT_COL0) == 0) { - interpolate_float_colors(span); - } - } - - if ((span->arrayAttribs & FRAG_BIT_COL1) == 0) { - /* XXX could avoid this and interpolate COL1 in the loop below */ - interpolate_active_attribs(ctx, span, FRAG_BIT_COL1); - } - - ASSERT(span->arrayAttribs & FRAG_BIT_COL0); - ASSERT(span->arrayAttribs & FRAG_BIT_COL1); - - for (i = 0; i < span->end; i++) { - if (mask[i]) { - col0[i][0] += col1[i][0]; - col0[i][1] += col1[i][1]; - col0[i][2] += col1[i][2]; - } - } - - span->array->ChanType = GL_FLOAT; -} - - /** * Apply antialiasing coverage value to alpha values. */ @@ -815,7 +756,7 @@ apply_aa_coverage(SWspan *span) } } else { - GLfloat (*rgba)[4] = span->array->attribs[FRAG_ATTRIB_COL0]; + GLfloat (*rgba)[4] = span->array->attribs[FRAG_ATTRIB_COL]; for (i = 0; i < span->end; i++) { rgba[i][ACOMP] = rgba[i][ACOMP] * coverage[i]; /* clamp later */ @@ -830,7 +771,7 @@ apply_aa_coverage(SWspan *span) static inline void clamp_colors(SWspan *span) { - GLfloat (*rgba)[4] = span->array->attribs[FRAG_ATTRIB_COL0]; + GLfloat (*rgba)[4] = span->array->attribs[FRAG_ATTRIB_COL]; GLuint i; ASSERT(span->array->ChanType == GL_FLOAT); for (i = 0; i < span->end; i++) { @@ -854,7 +795,7 @@ convert_color_type(SWspan *span, GLenum newType, GLuint output) GLvoid *src, *dst; if (output > 0 || span->array->ChanType == GL_FLOAT) { - src = span->array->attribs[FRAG_ATTRIB_COL0 + output]; + src = span->array->attribs[FRAG_ATTRIB_COL + output]; span->array->ChanType = GL_FLOAT; } else if (span->array->ChanType == GL_UNSIGNED_BYTE) { @@ -872,7 +813,7 @@ convert_color_type(SWspan *span, GLenum newType, GLuint output) dst = span->array->rgba16; } else { - dst = span->array->attribs[FRAG_ATTRIB_COL0]; + dst = span->array->attribs[FRAG_ATTRIB_COL]; } _mesa_convert_colors(span->array->ChanType, src, @@ -1140,15 +1081,6 @@ _swrast_write_rgba_span( struct gl_context *ctx, SWspan *span) ASSERT(span->arrayMask & SPAN_RGBA); - if (span->primitive == GL_BITMAP || !swrast->SpecularVertexAdd) { - /* Add primary and specular (diffuse + specular) colors */ - if (ctx->Fog.ColorSumEnabled || - (ctx->Light.Enabled && - ctx->Light.Model.ColorControl == GL_SEPARATE_SPECULAR_COLOR)) { - add_specular(ctx, span); - } - } - /* Fog */ if (swrast->_FogEnabled) { _swrast_fog_rgba_span(ctx, span); @@ -1187,7 +1119,7 @@ _swrast_write_rgba_span( struct gl_context *ctx, SWspan *span) span->array->rgba = span->array->rgba8; } else { - span->array->rgba = (void *)span->array->attribs[FRAG_ATTRIB_COL0]; + span->array->rgba = (void *)span->array->attribs[FRAG_ATTRIB_COL]; } } diff --git a/reactos/dll/opengl/mesa/swrast/s_triangle.c b/reactos/dll/opengl/mesa/swrast/s_triangle.c index e967e9b4290..0a78a3b9848 100644 --- a/reactos/dll/opengl/mesa/swrast/s_triangle.c +++ b/reactos/dll/opengl/mesa/swrast/s_triangle.c @@ -867,56 +867,6 @@ nodraw_triangle( struct gl_context *ctx, } -/* - * This is used when separate specular color is enabled, but not - * texturing. We add the specular color to the primary color, - * draw the triangle, then restore the original primary color. - * Inefficient, but seldom needed. - */ -void -_swrast_add_spec_terms_triangle(struct gl_context *ctx, const SWvertex *v0, - const SWvertex *v1, const SWvertex *v2) -{ - SWvertex *ncv0 = (SWvertex *)v0; /* drop const qualifier */ - SWvertex *ncv1 = (SWvertex *)v1; - SWvertex *ncv2 = (SWvertex *)v2; - GLfloat rSum, gSum, bSum; - GLchan cSave[3][4]; - - /* save original colors */ - COPY_CHAN4( cSave[0], ncv0->color ); - COPY_CHAN4( cSave[1], ncv1->color ); - COPY_CHAN4( cSave[2], ncv2->color ); - /* sum v0 */ - rSum = CHAN_TO_FLOAT(ncv0->color[0]) + ncv0->attrib[FRAG_ATTRIB_COL1][0]; - gSum = CHAN_TO_FLOAT(ncv0->color[1]) + ncv0->attrib[FRAG_ATTRIB_COL1][1]; - bSum = CHAN_TO_FLOAT(ncv0->color[2]) + ncv0->attrib[FRAG_ATTRIB_COL1][2]; - UNCLAMPED_FLOAT_TO_CHAN(ncv0->color[0], rSum); - UNCLAMPED_FLOAT_TO_CHAN(ncv0->color[1], gSum); - UNCLAMPED_FLOAT_TO_CHAN(ncv0->color[2], bSum); - /* sum v1 */ - rSum = CHAN_TO_FLOAT(ncv1->color[0]) + ncv1->attrib[FRAG_ATTRIB_COL1][0]; - gSum = CHAN_TO_FLOAT(ncv1->color[1]) + ncv1->attrib[FRAG_ATTRIB_COL1][1]; - bSum = CHAN_TO_FLOAT(ncv1->color[2]) + ncv1->attrib[FRAG_ATTRIB_COL1][2]; - UNCLAMPED_FLOAT_TO_CHAN(ncv1->color[0], rSum); - UNCLAMPED_FLOAT_TO_CHAN(ncv1->color[1], gSum); - UNCLAMPED_FLOAT_TO_CHAN(ncv1->color[2], bSum); - /* sum v2 */ - rSum = CHAN_TO_FLOAT(ncv2->color[0]) + ncv2->attrib[FRAG_ATTRIB_COL1][0]; - gSum = CHAN_TO_FLOAT(ncv2->color[1]) + ncv2->attrib[FRAG_ATTRIB_COL1][1]; - bSum = CHAN_TO_FLOAT(ncv2->color[2]) + ncv2->attrib[FRAG_ATTRIB_COL1][2]; - UNCLAMPED_FLOAT_TO_CHAN(ncv2->color[0], rSum); - UNCLAMPED_FLOAT_TO_CHAN(ncv2->color[1], gSum); - UNCLAMPED_FLOAT_TO_CHAN(ncv2->color[2], bSum); - /* draw */ - SWRAST_CONTEXT(ctx)->SpecTriangle( ctx, ncv0, ncv1, ncv2 ); - /* restore original colors */ - COPY_CHAN4( ncv0->color, cSave[0] ); - COPY_CHAN4( ncv1->color, cSave[1] ); - COPY_CHAN4( ncv2->color, cSave[2] ); -} - - #ifdef DEBUG @@ -970,7 +920,6 @@ _swrast_choose_triangle( struct gl_context *ctx ) * needs to be interpolated. */ if (ctx->Texture._EnabledCoord || - _mesa_need_secondary_color(ctx) || swrast->_FogEnabled) { /* Ugh, we do a _lot_ of tests to pick the best textured tri func */ const struct gl_texture_object *texObj2D; @@ -999,7 +948,6 @@ _swrast_choose_triangle( struct gl_context *ctx ) && texImg->Width == swImg->RowStride && (format == MESA_FORMAT_RGB888 || format == MESA_FORMAT_RGBA8888) && minFilter == magFilter - && ctx->Light.Model.ColorControl == GL_SINGLE_COLOR && !swrast->_FogEnabled && ctx->Texture.Unit.EnvMode != GL_COMBINE_EXT && ctx->Texture.Unit.EnvMode != GL_COMBINE4_NV) { diff --git a/reactos/dll/opengl/mesa/swrast/s_tritemp.h b/reactos/dll/opengl/mesa/swrast/s_tritemp.h index 8f1723617a1..c6ae5fc3586 100644 --- a/reactos/dll/opengl/mesa/swrast/s_tritemp.h +++ b/reactos/dll/opengl/mesa/swrast/s_tritemp.h @@ -361,32 +361,32 @@ static void NAME(struct gl_context *ctx, const SWvertex *v0, GLfloat eMaj_da = (GLfloat) (vMax->color[ACOMP] - vMin->color[ACOMP]); GLfloat eBot_da = (GLfloat) (vMid->color[ACOMP] - vMin->color[ACOMP]); # endif - span.attrStepX[FRAG_ATTRIB_COL0][0] = oneOverArea * (eMaj_dr * eBot.dy - eMaj.dy * eBot_dr); - span.attrStepY[FRAG_ATTRIB_COL0][0] = oneOverArea * (eMaj.dx * eBot_dr - eMaj_dr * eBot.dx); - span.attrStepX[FRAG_ATTRIB_COL0][1] = oneOverArea * (eMaj_dg * eBot.dy - eMaj.dy * eBot_dg); - span.attrStepY[FRAG_ATTRIB_COL0][1] = oneOverArea * (eMaj.dx * eBot_dg - eMaj_dg * eBot.dx); - span.attrStepX[FRAG_ATTRIB_COL0][2] = oneOverArea * (eMaj_db * eBot.dy - eMaj.dy * eBot_db); - span.attrStepY[FRAG_ATTRIB_COL0][2] = oneOverArea * (eMaj.dx * eBot_db - eMaj_db * eBot.dx); - span.redStep = SignedFloatToFixed(span.attrStepX[FRAG_ATTRIB_COL0][0]); - span.greenStep = SignedFloatToFixed(span.attrStepX[FRAG_ATTRIB_COL0][1]); - span.blueStep = SignedFloatToFixed(span.attrStepX[FRAG_ATTRIB_COL0][2]); + span.attrStepX[FRAG_ATTRIB_COL][0] = oneOverArea * (eMaj_dr * eBot.dy - eMaj.dy * eBot_dr); + span.attrStepY[FRAG_ATTRIB_COL][0] = oneOverArea * (eMaj.dx * eBot_dr - eMaj_dr * eBot.dx); + span.attrStepX[FRAG_ATTRIB_COL][1] = oneOverArea * (eMaj_dg * eBot.dy - eMaj.dy * eBot_dg); + span.attrStepY[FRAG_ATTRIB_COL][1] = oneOverArea * (eMaj.dx * eBot_dg - eMaj_dg * eBot.dx); + span.attrStepX[FRAG_ATTRIB_COL][2] = oneOverArea * (eMaj_db * eBot.dy - eMaj.dy * eBot_db); + span.attrStepY[FRAG_ATTRIB_COL][2] = oneOverArea * (eMaj.dx * eBot_db - eMaj_db * eBot.dx); + span.redStep = SignedFloatToFixed(span.attrStepX[FRAG_ATTRIB_COL][0]); + span.greenStep = SignedFloatToFixed(span.attrStepX[FRAG_ATTRIB_COL][1]); + span.blueStep = SignedFloatToFixed(span.attrStepX[FRAG_ATTRIB_COL][2]); # ifdef INTERP_ALPHA - span.attrStepX[FRAG_ATTRIB_COL0][3] = oneOverArea * (eMaj_da * eBot.dy - eMaj.dy * eBot_da); - span.attrStepY[FRAG_ATTRIB_COL0][3] = oneOverArea * (eMaj.dx * eBot_da - eMaj_da * eBot.dx); - span.alphaStep = SignedFloatToFixed(span.attrStepX[FRAG_ATTRIB_COL0][3]); + span.attrStepX[FRAG_ATTRIB_COL][3] = oneOverArea * (eMaj_da * eBot.dy - eMaj.dy * eBot_da); + span.attrStepY[FRAG_ATTRIB_COL][3] = oneOverArea * (eMaj.dx * eBot_da - eMaj_da * eBot.dx); + span.alphaStep = SignedFloatToFixed(span.attrStepX[FRAG_ATTRIB_COL][3]); # endif /* INTERP_ALPHA */ } else { ASSERT(ctx->Light.ShadeModel == GL_FLAT); span.interpMask |= SPAN_FLAT; - span.attrStepX[FRAG_ATTRIB_COL0][0] = span.attrStepY[FRAG_ATTRIB_COL0][0] = 0.0F; - span.attrStepX[FRAG_ATTRIB_COL0][1] = span.attrStepY[FRAG_ATTRIB_COL0][1] = 0.0F; - span.attrStepX[FRAG_ATTRIB_COL0][2] = span.attrStepY[FRAG_ATTRIB_COL0][2] = 0.0F; + span.attrStepX[FRAG_ATTRIB_COL][0] = span.attrStepY[FRAG_ATTRIB_COL][0] = 0.0F; + span.attrStepX[FRAG_ATTRIB_COL][1] = span.attrStepY[FRAG_ATTRIB_COL][1] = 0.0F; + span.attrStepX[FRAG_ATTRIB_COL][2] = span.attrStepY[FRAG_ATTRIB_COL][2] = 0.0F; span.redStep = 0; span.greenStep = 0; span.blueStep = 0; # ifdef INTERP_ALPHA - span.attrStepX[FRAG_ATTRIB_COL0][3] = span.attrStepY[FRAG_ATTRIB_COL0][3] = 0.0F; + span.attrStepX[FRAG_ATTRIB_COL][3] = span.attrStepY[FRAG_ATTRIB_COL][3] = 0.0F; span.alphaStep = 0; # endif } @@ -636,26 +636,26 @@ static void NAME(struct gl_context *ctx, const SWvertex *v0, #ifdef INTERP_RGB if (ctx->Light.ShadeModel == GL_SMOOTH) { rLeft = (GLint)(ChanToFixed(vLower->color[RCOMP]) - + span.attrStepX[FRAG_ATTRIB_COL0][0] * adjx - + span.attrStepY[FRAG_ATTRIB_COL0][0] * adjy) + FIXED_HALF; + + span.attrStepX[FRAG_ATTRIB_COL][0] * adjx + + span.attrStepY[FRAG_ATTRIB_COL][0] * adjy) + FIXED_HALF; gLeft = (GLint)(ChanToFixed(vLower->color[GCOMP]) - + span.attrStepX[FRAG_ATTRIB_COL0][1] * adjx - + span.attrStepY[FRAG_ATTRIB_COL0][1] * adjy) + FIXED_HALF; + + span.attrStepX[FRAG_ATTRIB_COL][1] * adjx + + span.attrStepY[FRAG_ATTRIB_COL][1] * adjy) + FIXED_HALF; bLeft = (GLint)(ChanToFixed(vLower->color[BCOMP]) - + span.attrStepX[FRAG_ATTRIB_COL0][2] * adjx - + span.attrStepY[FRAG_ATTRIB_COL0][2] * adjy) + FIXED_HALF; - fdrOuter = SignedFloatToFixed(span.attrStepY[FRAG_ATTRIB_COL0][0] - + dxOuter * span.attrStepX[FRAG_ATTRIB_COL0][0]); - fdgOuter = SignedFloatToFixed(span.attrStepY[FRAG_ATTRIB_COL0][1] - + dxOuter * span.attrStepX[FRAG_ATTRIB_COL0][1]); - fdbOuter = SignedFloatToFixed(span.attrStepY[FRAG_ATTRIB_COL0][2] - + dxOuter * span.attrStepX[FRAG_ATTRIB_COL0][2]); + + span.attrStepX[FRAG_ATTRIB_COL][2] * adjx + + span.attrStepY[FRAG_ATTRIB_COL][2] * adjy) + FIXED_HALF; + fdrOuter = SignedFloatToFixed(span.attrStepY[FRAG_ATTRIB_COL][0] + + dxOuter * span.attrStepX[FRAG_ATTRIB_COL][0]); + fdgOuter = SignedFloatToFixed(span.attrStepY[FRAG_ATTRIB_COL][1] + + dxOuter * span.attrStepX[FRAG_ATTRIB_COL][1]); + fdbOuter = SignedFloatToFixed(span.attrStepY[FRAG_ATTRIB_COL][2] + + dxOuter * span.attrStepX[FRAG_ATTRIB_COL][2]); # ifdef INTERP_ALPHA aLeft = (GLint)(ChanToFixed(vLower->color[ACOMP]) - + span.attrStepX[FRAG_ATTRIB_COL0][3] * adjx - + span.attrStepY[FRAG_ATTRIB_COL0][3] * adjy) + FIXED_HALF; - fdaOuter = SignedFloatToFixed(span.attrStepY[FRAG_ATTRIB_COL0][3] - + dxOuter * span.attrStepX[FRAG_ATTRIB_COL0][3]); + + span.attrStepX[FRAG_ATTRIB_COL][3] * adjx + + span.attrStepY[FRAG_ATTRIB_COL][3] * adjy) + FIXED_HALF; + fdaOuter = SignedFloatToFixed(span.attrStepY[FRAG_ATTRIB_COL][3] + + dxOuter * span.attrStepX[FRAG_ATTRIB_COL][3]); # endif } else { diff --git a/reactos/dll/opengl/mesa/swrast/s_zoom.c b/reactos/dll/opengl/mesa/swrast/s_zoom.c index b02a344c6b2..240cd1f0aec 100644 --- a/reactos/dll/opengl/mesa/swrast/s_zoom.c +++ b/reactos/dll/opengl/mesa/swrast/s_zoom.c @@ -156,7 +156,7 @@ zoom_span( struct gl_context *ctx, GLint imgX, GLint imgY, const SWspan *span, else if (zoomed.array->ChanType == GL_UNSIGNED_SHORT) zoomed.array->rgba = (GLchan (*)[4]) zoomed.array->rgba16; else - zoomed.array->rgba = (GLchan (*)[4]) zoomed.array->attribs[FRAG_ATTRIB_COL0]; + zoomed.array->rgba = (GLchan (*)[4]) zoomed.array->attribs[FRAG_ATTRIB_COL]; COPY_4V(zoomed.attrStart[FRAG_ATTRIB_WPOS], span->attrStart[FRAG_ATTRIB_WPOS]); COPY_4V(zoomed.attrStepX[FRAG_ATTRIB_WPOS], span->attrStepX[FRAG_ATTRIB_WPOS]); @@ -173,7 +173,7 @@ zoom_span( struct gl_context *ctx, GLint imgX, GLint imgY, const SWspan *span, /* we'll generate an array of colorss */ zoomed.interpMask = span->interpMask & ~SPAN_RGBA; zoomed.arrayMask |= SPAN_RGBA; - zoomed.arrayAttribs |= FRAG_BIT_COL0; /* we'll produce these values */ + zoomed.arrayAttribs |= FRAG_BIT_COL; /* we'll produce these values */ ASSERT(span->arrayMask & SPAN_RGBA); } else if (format == GL_DEPTH_COMPONENT) { @@ -225,7 +225,7 @@ zoom_span( struct gl_context *ctx, GLint imgX, GLint imgY, const SWspan *span, GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - span->x; ASSERT(j >= 0); ASSERT(j < span->end); - COPY_4V(zoomed.array->attribs[FRAG_ATTRIB_COL0][i], rgba[j]); + COPY_4V(zoomed.array->attribs[FRAG_ATTRIB_COL][i], rgba[j]); } } } @@ -263,10 +263,10 @@ zoom_span( struct gl_context *ctx, GLint imgX, GLint imgY, const SWspan *span, GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - span->x; ASSERT(j >= 0); ASSERT(j < span->end); - zoomed.array->attribs[FRAG_ATTRIB_COL0][i][0] = rgb[j][0]; - zoomed.array->attribs[FRAG_ATTRIB_COL0][i][1] = rgb[j][1]; - zoomed.array->attribs[FRAG_ATTRIB_COL0][i][2] = rgb[j][2]; - zoomed.array->attribs[FRAG_ATTRIB_COL0][i][3] = 1.0F; + zoomed.array->attribs[FRAG_ATTRIB_COL][i][0] = rgb[j][0]; + zoomed.array->attribs[FRAG_ATTRIB_COL][i][1] = rgb[j][1]; + zoomed.array->attribs[FRAG_ATTRIB_COL][i][2] = rgb[j][2]; + zoomed.array->attribs[FRAG_ATTRIB_COL][i][3] = 1.0F; } } } diff --git a/reactos/dll/opengl/mesa/swrast/swrast.h b/reactos/dll/opengl/mesa/swrast/swrast.h index cff5ed874bd..e3f2d942fa1 100644 --- a/reactos/dll/opengl/mesa/swrast/swrast.h +++ b/reactos/dll/opengl/mesa/swrast/swrast.h @@ -70,13 +70,13 @@ * primitives unaccelerated), hook in swrast_setup instead. */ typedef struct { - GLfloat attrib[32][4]; + GLfloat attrib[FRAG_ATTRIB_MAX][4]; GLchan color[4]; /** integer color */ GLfloat pointSize; } SWvertex; -#define FRAG_ATTRIB_CI FRAG_ATTRIB_COL0 +#define FRAG_ATTRIB_CI FRAG_ATTRIB_COL struct swrast_device_driver; diff --git a/reactos/dll/opengl/mesa/swrast_setup/ss_context.c b/reactos/dll/opengl/mesa/swrast_setup/ss_context.c index 7965f8eda8a..ca2d37603dc 100644 --- a/reactos/dll/opengl/mesa/swrast_setup/ss_context.c +++ b/reactos/dll/opengl/mesa/swrast_setup/ss_context.c @@ -125,15 +125,11 @@ setup_vertex_format(struct gl_context *ctx) EMIT_ATTR( _TNL_ATTRIB_POS, EMIT_4F_VIEWPORT, attrib[FRAG_ATTRIB_WPOS] ); - if (index_bitset & BITFIELD64_BIT(_TNL_ATTRIB_COLOR0)) { + if (index_bitset & BITFIELD64_BIT(_TNL_ATTRIB_COLOR)) { if (swsetup->intColors) - EMIT_ATTR( _TNL_ATTRIB_COLOR0, EMIT_4CHAN_4F_RGBA, color ); + EMIT_ATTR( _TNL_ATTRIB_COLOR, EMIT_4CHAN_4F_RGBA, color ); else - EMIT_ATTR( _TNL_ATTRIB_COLOR0, EMIT_4F, attrib[FRAG_ATTRIB_COL0]); - } - - if (index_bitset & BITFIELD64_BIT(_TNL_ATTRIB_COLOR1)) { - EMIT_ATTR( _TNL_ATTRIB_COLOR1, EMIT_4F, attrib[FRAG_ATTRIB_COL1]); + EMIT_ATTR( _TNL_ATTRIB_COLOR, EMIT_4F, attrib[FRAG_ATTRIB_COL]); } if (index_bitset & BITFIELD64_BIT(_TNL_ATTRIB_FOG)) { diff --git a/reactos/dll/opengl/mesa/swrast_setup/ss_triangle.c b/reactos/dll/opengl/mesa/swrast_setup/ss_triangle.c index 58918b8d510..7684f722735 100644 --- a/reactos/dll/opengl/mesa/swrast_setup/ss_triangle.c +++ b/reactos/dll/opengl/mesa/swrast_setup/ss_triangle.c @@ -130,26 +130,18 @@ static void _swsetup_render_tri(struct gl_context *ctx, if (ctx->Light.ShadeModel == GL_FLAT) { GLchan c[2][4]; - GLfloat s[2][4]; /* save colors/indexes for v0, v1 vertices */ COPY_CHAN4(c[0], v0->color); COPY_CHAN4(c[1], v1->color); - COPY_4V(s[0], v0->attrib[FRAG_ATTRIB_COL1]); - COPY_4V(s[1], v1->attrib[FRAG_ATTRIB_COL1]); /* copy v2 color/indexes to v0, v1 indexes */ COPY_CHAN4(v0->color, v2->color); COPY_CHAN4(v1->color, v2->color); - COPY_4V(v0->attrib[FRAG_ATTRIB_COL1], v2->attrib[FRAG_ATTRIB_COL1]); - COPY_4V(v1->attrib[FRAG_ATTRIB_COL1], v2->attrib[FRAG_ATTRIB_COL1]); - render(ctx, ef, e0, e1, e2, v0, v1, v2); COPY_CHAN4(v0->color, c[0]); COPY_CHAN4(v1->color, c[1]); - COPY_4V(v0->attrib[FRAG_ATTRIB_COL1], s[0]); - COPY_4V(v1->attrib[FRAG_ATTRIB_COL1], s[1]); } else { render(ctx, ef, e0, e1, e2, v0, v1, v2); diff --git a/reactos/dll/opengl/mesa/swrast_setup/ss_tritmp.h b/reactos/dll/opengl/mesa/swrast_setup/ss_tritmp.h index 89ed0418dbd..d4a53076bac 100644 --- a/reactos/dll/opengl/mesa/swrast_setup/ss_tritmp.h +++ b/reactos/dll/opengl/mesa/swrast_setup/ss_tritmp.h @@ -37,7 +37,6 @@ static void TAG(triangle)(struct gl_context *ctx, GLuint e0, GLuint e1, GLuint e SScontext *swsetup = SWSETUP_CONTEXT(ctx); GLchan saved_color[3][4] = { { 0 } }; GLfloat saved_col0[3][4] = { { 0 } }; - GLfloat saved_spec[3][4] = { { 0 } }; #endif SWvertex *verts = SWSETUP_CONTEXT(ctx)->verts; SWvertex *v[3]; @@ -79,9 +78,9 @@ static void TAG(triangle)(struct gl_context *ctx, GLuint e0, GLuint e1, GLuint e COPY_CHAN4(saved_color[2], v[2]->color); } else { - COPY_4V(saved_col0[0], v[0]->attrib[FRAG_ATTRIB_COL0]); - COPY_4V(saved_col0[1], v[1]->attrib[FRAG_ATTRIB_COL0]); - COPY_4V(saved_col0[2], v[2]->attrib[FRAG_ATTRIB_COL0]); + COPY_4V(saved_col0[0], v[0]->attrib[FRAG_ATTRIB_COL]); + COPY_4V(saved_col0[1], v[1]->attrib[FRAG_ATTRIB_COL]); + COPY_4V(saved_col0[2], v[2]->attrib[FRAG_ATTRIB_COL]); } if (VB->BackfaceColorPtr->stride) { @@ -91,9 +90,9 @@ static void TAG(triangle)(struct gl_context *ctx, GLuint e0, GLuint e1, GLuint e SS_COLOR(v[2]->color, vbcolor[e2]); } else { - COPY_4V(v[0]->attrib[FRAG_ATTRIB_COL0], vbcolor[e0]); - COPY_4V(v[1]->attrib[FRAG_ATTRIB_COL0], vbcolor[e1]); - COPY_4V(v[2]->attrib[FRAG_ATTRIB_COL0], vbcolor[e2]); + COPY_4V(v[0]->attrib[FRAG_ATTRIB_COL], vbcolor[e0]); + COPY_4V(v[1]->attrib[FRAG_ATTRIB_COL], vbcolor[e1]); + COPY_4V(v[2]->attrib[FRAG_ATTRIB_COL], vbcolor[e2]); } } else { @@ -104,31 +103,12 @@ static void TAG(triangle)(struct gl_context *ctx, GLuint e0, GLuint e1, GLuint e SS_COLOR(v[2]->color, vbcolor[0]); } else { - COPY_4V(v[0]->attrib[FRAG_ATTRIB_COL0], vbcolor[0]); - COPY_4V(v[1]->attrib[FRAG_ATTRIB_COL0], vbcolor[0]); - COPY_4V(v[2]->attrib[FRAG_ATTRIB_COL0], vbcolor[0]); + COPY_4V(v[0]->attrib[FRAG_ATTRIB_COL], vbcolor[0]); + COPY_4V(v[1]->attrib[FRAG_ATTRIB_COL], vbcolor[0]); + COPY_4V(v[2]->attrib[FRAG_ATTRIB_COL], vbcolor[0]); } } } - - if (VB->BackfaceSecondaryColorPtr) { - GLfloat (*vbspec)[4] = VB->BackfaceSecondaryColorPtr->data; - - COPY_4V(saved_spec[0], v[0]->attrib[FRAG_ATTRIB_COL1]); - COPY_4V(saved_spec[1], v[1]->attrib[FRAG_ATTRIB_COL1]); - COPY_4V(saved_spec[2], v[2]->attrib[FRAG_ATTRIB_COL1]); - - if (VB->BackfaceSecondaryColorPtr->stride) { - SS_SPEC(v[0]->attrib[FRAG_ATTRIB_COL1], vbspec[e0]); - SS_SPEC(v[1]->attrib[FRAG_ATTRIB_COL1], vbspec[e1]); - SS_SPEC(v[2]->attrib[FRAG_ATTRIB_COL1], vbspec[e2]); - } - else { - SS_SPEC(v[0]->attrib[FRAG_ATTRIB_COL1], vbspec[0]); - SS_SPEC(v[1]->attrib[FRAG_ATTRIB_COL1], vbspec[0]); - SS_SPEC(v[2]->attrib[FRAG_ATTRIB_COL1], vbspec[0]); - } - } } #endif } @@ -210,17 +190,11 @@ static void TAG(triangle)(struct gl_context *ctx, GLuint e0, GLuint e1, GLuint e COPY_CHAN4(v[2]->color, saved_color[2]); } else { - COPY_4V(v[0]->attrib[FRAG_ATTRIB_COL0], saved_col0[0]); - COPY_4V(v[1]->attrib[FRAG_ATTRIB_COL0], saved_col0[1]); - COPY_4V(v[2]->attrib[FRAG_ATTRIB_COL0], saved_col0[2]); + COPY_4V(v[0]->attrib[FRAG_ATTRIB_COL], saved_col0[0]); + COPY_4V(v[1]->attrib[FRAG_ATTRIB_COL], saved_col0[1]); + COPY_4V(v[2]->attrib[FRAG_ATTRIB_COL], saved_col0[2]); } } - - if (VB->BackfaceSecondaryColorPtr) { - COPY_4V(v[0]->attrib[FRAG_ATTRIB_COL1], saved_spec[0]); - COPY_4V(v[1]->attrib[FRAG_ATTRIB_COL1], saved_spec[1]); - COPY_4V(v[2]->attrib[FRAG_ATTRIB_COL1], saved_spec[2]); - } } } #endif diff --git a/reactos/dll/opengl/mesa/tnl/t_context.c b/reactos/dll/opengl/mesa/tnl/t_context.c index e4bc08b08c5..e74f3e385a7 100644 --- a/reactos/dll/opengl/mesa/tnl/t_context.c +++ b/reactos/dll/opengl/mesa/tnl/t_context.c @@ -101,10 +101,7 @@ _tnl_InvalidateState( struct gl_context *ctx, GLuint new_state ) */ tnl->render_inputs_bitset = BITFIELD64_BIT(_TNL_ATTRIB_POS); - tnl->render_inputs_bitset |= BITFIELD64_BIT(_TNL_ATTRIB_COLOR0); - - if (_mesa_need_secondary_color(ctx)) - tnl->render_inputs_bitset |= BITFIELD64_BIT(_TNL_ATTRIB_COLOR1); + tnl->render_inputs_bitset |= BITFIELD64_BIT(_TNL_ATTRIB_COLOR); if (ctx->Texture._EnabledCoord) { tnl->render_inputs_bitset |= BITFIELD64_BIT(_TNL_ATTRIB_TEX); diff --git a/reactos/dll/opengl/mesa/tnl/t_context.h b/reactos/dll/opengl/mesa/tnl/t_context.h index de8aa1323b3..81dcf17f46c 100644 --- a/reactos/dll/opengl/mesa/tnl/t_context.h +++ b/reactos/dll/opengl/mesa/tnl/t_context.h @@ -79,12 +79,15 @@ enum { _TNL_ATTRIB_POS = 0, _TNL_ATTRIB_WEIGHT = 1, _TNL_ATTRIB_NORMAL = 2, - _TNL_ATTRIB_COLOR0 = 3, - _TNL_ATTRIB_COLOR1 = 4, - _TNL_ATTRIB_FOG = 5, - _TNL_ATTRIB_COLOR_INDEX = 6, - _TNL_ATTRIB_EDGEFLAG = 7, - _TNL_ATTRIB_TEX = 8, + _TNL_ATTRIB_COLOR = 3, + _TNL_ATTRIB_FOG = 4, + _TNL_ATTRIB_COLOR_INDEX = 5, + _TNL_ATTRIB_EDGEFLAG = 6, + _TNL_ATTRIB_TEX = 7, + /* This is really a VERT_RESULT, not an attrib. Need to fix + * tnl to understand the difference. + */ + _TNL_ATTRIB_POINTSIZE = 8, /* These alias with the generics, but they are not active * concurrently, so it's not a problem. The TNL module @@ -96,50 +99,29 @@ enum { * generic attribute in order to pick up per-vertex material * data. */ - _TNL_ATTRIB_MAT_FRONT_AMBIENT = 10, - _TNL_ATTRIB_MAT_BACK_AMBIENT = 11, - _TNL_ATTRIB_MAT_FRONT_DIFFUSE = 12, - _TNL_ATTRIB_MAT_BACK_DIFFUSE = 13, - _TNL_ATTRIB_MAT_FRONT_SPECULAR = 14, - _TNL_ATTRIB_MAT_BACK_SPECULAR = 15, - _TNL_ATTRIB_MAT_FRONT_EMISSION = 16, - _TNL_ATTRIB_MAT_BACK_EMISSION = 17, - _TNL_ATTRIB_MAT_FRONT_SHININESS = 18, - _TNL_ATTRIB_MAT_BACK_SHININESS = 19, - _TNL_ATTRIB_MAT_FRONT_INDEXES = 20, - _TNL_ATTRIB_MAT_BACK_INDEXES = 21, + _TNL_ATTRIB_MAT_FRONT_AMBIENT = 9, + _TNL_ATTRIB_MAT_BACK_AMBIENT = 10, + _TNL_ATTRIB_MAT_FRONT_DIFFUSE = 11, + _TNL_ATTRIB_MAT_BACK_DIFFUSE = 12, + _TNL_ATTRIB_MAT_FRONT_SPECULAR = 13, + _TNL_ATTRIB_MAT_BACK_SPECULAR = 14, + _TNL_ATTRIB_MAT_FRONT_EMISSION = 15, + _TNL_ATTRIB_MAT_BACK_EMISSION = 16, + _TNL_ATTRIB_MAT_FRONT_SHININESS = 17, + _TNL_ATTRIB_MAT_BACK_SHININESS = 18, + _TNL_ATTRIB_MAT_FRONT_INDEXES = 29, + _TNL_ATTRIB_MAT_BACK_INDEXES = 20, - /* This is really a VERT_RESULT, not an attrib. Need to fix - * tnl to understand the difference. - */ - _TNL_ATTRIB_POINTSIZE = 9, - - _TNL_ATTRIB_MAX = 22 + _TNL_ATTRIB_MAX = 21 } ; -#define _TNL_ATTRIB_GENERIC(n) (_TNL_ATTRIB_GENERIC0 + (n)) - -/* special index used for handing invalid glVertexAttribute() indices */ -#define _TNL_ATTRIB_ERROR (_TNL_ATTRIB_GENERIC15 + 1) - /** * Handy attribute ranges: */ -#define _TNL_FIRST_PROG _TNL_ATTRIB_WEIGHT -#define _TNL_LAST_PROG _TNL_ATTRIB_TEX #define _TNL_FIRST_MAT _TNL_ATTRIB_MAT_FRONT_AMBIENT #define _TNL_LAST_MAT _TNL_ATTRIB_MAT_BACK_INDEXES -/* Number of available texture attributes */ -#define _TNL_NUM_TEX 8 - -/* Number of available generic attributes */ -#define _TNL_NUM_GENERIC 16 - -/* Number of attributes used for evaluators */ -#define _TNL_NUM_EVAL 16 - #define PRIM_BEGIN 0x10 #define PRIM_END 0x20 @@ -184,7 +166,6 @@ struct vertex_buffer GLboolean *EdgeFlag; /* _TNL_BIT_EDGEFLAG */ GLvector4f *BackfaceIndexPtr; GLvector4f *BackfaceColorPtr; - GLvector4f *BackfaceSecondaryColorPtr; const struct _mesa_prim *Primitive; GLuint PrimitiveCount; diff --git a/reactos/dll/opengl/mesa/tnl/t_draw.c b/reactos/dll/opengl/mesa/tnl/t_draw.c index 5314b86037b..c8916e7e8ed 100644 --- a/reactos/dll/opengl/mesa/tnl/t_draw.c +++ b/reactos/dll/opengl/mesa/tnl/t_draw.c @@ -250,7 +250,6 @@ static void bind_inputs( struct gl_context *ctx, /* These should perhaps be part of _TNL_ATTRIB_* */ VB->BackfaceColorPtr = NULL; VB->BackfaceIndexPtr = NULL; - VB->BackfaceSecondaryColorPtr = NULL; /* Clipping and drawing code still requires this to be a packed * array of ubytes which can be written into. TODO: Fix and diff --git a/reactos/dll/opengl/mesa/tnl/t_rasterpos.c b/reactos/dll/opengl/mesa/tnl/t_rasterpos.c index ada9117144a..9d5794c5e3c 100644 --- a/reactos/dll/opengl/mesa/tnl/t_rasterpos.c +++ b/reactos/dll/opengl/mesa/tnl/t_rasterpos.c @@ -104,8 +104,7 @@ static void shade_rastpos(struct gl_context *ctx, const GLfloat vertex[4], const GLfloat normal[3], - GLfloat Rcolor[4], - GLfloat Rspec[4]) + GLfloat Rcolor[4]) { /*const*/ GLfloat (*base)[3] = ctx->Light._BaseColor; const struct gl_light *light; @@ -209,14 +208,8 @@ shade_rastpos(struct gl_context *ctx, GET_SHINE_TAB_ENTRY( ctx->_ShineTable[0], n_dot_h, spec_coef ); if (spec_coef > 1.0e-10) { - if (ctx->Light.Model.ColorControl==GL_SEPARATE_SPECULAR_COLOR) { - ACC_SCALE_SCALAR_3V( specularContrib, spec_coef, + ACC_SCALE_SCALAR_3V( diffuseContrib, spec_coef, light->_MatSpecular[0]); - } - else { - ACC_SCALE_SCALAR_3V( diffuseContrib, spec_coef, - light->_MatSpecular[0]); - } } } } @@ -229,10 +222,6 @@ shade_rastpos(struct gl_context *ctx, Rcolor[1] = CLAMP(diffuseColor[1], 0.0F, 1.0F); Rcolor[2] = CLAMP(diffuseColor[2], 0.0F, 1.0F); Rcolor[3] = CLAMP(diffuseColor[3], 0.0F, 1.0F); - Rspec[0] = CLAMP(specularColor[0], 0.0F, 1.0F); - Rspec[1] = CLAMP(specularColor[1], 0.0F, 1.0F); - Rspec[2] = CLAMP(specularColor[2], 0.0F, 1.0F); - Rspec[3] = CLAMP(specularColor[3], 0.0F, 1.0F); } @@ -421,15 +410,12 @@ _tnl_RasterPos(struct gl_context *ctx, const GLfloat vObj[4]) if (ctx->Light.Enabled) { /* lighting */ shade_rastpos( ctx, vObj, norm, - ctx->Current.RasterColor, - ctx->Current.RasterSecondaryColor ); + ctx->Current.RasterColor ); } else { /* use current color */ COPY_4FV(ctx->Current.RasterColor, - ctx->Current.Attrib[VERT_ATTRIB_COLOR0]); - COPY_4FV(ctx->Current.RasterSecondaryColor, - ctx->Current.Attrib[VERT_ATTRIB_COLOR1]); + ctx->Current.Attrib[VERT_ATTRIB_COLOR]); } /* texture coords */ diff --git a/reactos/dll/opengl/mesa/tnl/t_vb_light.c b/reactos/dll/opengl/mesa/tnl/t_vb_light.c index 19ba0f40332..355e85f6fd3 100644 --- a/reactos/dll/opengl/mesa/tnl/t_vb_light.c +++ b/reactos/dll/opengl/mesa/tnl/t_vb_light.c @@ -50,7 +50,6 @@ struct material_cursor { struct light_stage_data { GLvector4f Input; GLvector4f LitColor[2]; - GLvector4f LitSecondary[2]; light_func *light_func_tab; struct material_cursor mat[MAT_ATTRIB_MAX]; @@ -113,7 +112,7 @@ prepare_materials(struct gl_context *ctx, const GLuint bitmask = ctx->Light.ColorMaterialBitmask; for (i = 0 ; i < MAT_ATTRIB_MAX ; i++) if (bitmask & (1<AttribPtr[_TNL_ATTRIB_MAT_FRONT_AMBIENT + i] = VB->AttribPtr[_TNL_ATTRIB_COLOR0]; + VB->AttribPtr[_TNL_ATTRIB_MAT_FRONT_AMBIENT + i] = VB->AttribPtr[_TNL_ATTRIB_COLOR]; } /* Now, for each material attribute that's tracking vertex color, save @@ -246,9 +245,6 @@ static void validate_lighting( struct gl_context *ctx, return; if (ctx->Light._NeedVertices) { - if (ctx->Light.Model.ColorControl == GL_SEPARATE_SPECULAR_COLOR) - tab = _tnl_light_spec_tab; - else tab = _tnl_light_tab; } else { @@ -290,13 +286,9 @@ static GLboolean init_lighting( struct gl_context *ctx, _mesa_vector4f_alloc( &store->Input, 0, size, 32 ); _mesa_vector4f_alloc( &store->LitColor[0], 0, size, 32 ); _mesa_vector4f_alloc( &store->LitColor[1], 0, size, 32 ); - _mesa_vector4f_alloc( &store->LitSecondary[0], 0, size, 32 ); - _mesa_vector4f_alloc( &store->LitSecondary[1], 0, size, 32 ); store->LitColor[0].size = 4; store->LitColor[1].size = 4; - store->LitSecondary[0].size = 3; - store->LitSecondary[1].size = 3; return GL_TRUE; } @@ -312,8 +304,6 @@ static void dtr( struct tnl_pipeline_stage *stage ) _mesa_vector4f_free( &store->Input ); _mesa_vector4f_free( &store->LitColor[0] ); _mesa_vector4f_free( &store->LitColor[1] ); - _mesa_vector4f_free( &store->LitSecondary[0] ); - _mesa_vector4f_free( &store->LitSecondary[1] ); FREE( store ); stage->privatePtr = NULL; } diff --git a/reactos/dll/opengl/mesa/tnl/t_vb_lighttmp.h b/reactos/dll/opengl/mesa/tnl/t_vb_lighttmp.h index aae1d18ff7f..f9a21149b92 100644 --- a/reactos/dll/opengl/mesa/tnl/t_vb_lighttmp.h +++ b/reactos/dll/opengl/mesa/tnl/t_vb_lighttmp.h @@ -28,13 +28,6 @@ */ -#if IDX & LIGHT_TWOSIDE -# define NR_SIDES 2 -#else -# define NR_SIDES 1 -#endif - - /* define TRACE to trace lighting code */ /* #define TRACE 1 */ @@ -60,10 +53,8 @@ static void TAG(light_rgba_spec)( struct gl_context *ctx, const GLfloat *normal = (GLfloat *)VB->AttribPtr[_TNL_ATTRIB_NORMAL]->data; GLfloat (*Fcolor)[4] = (GLfloat (*)[4]) store->LitColor[0].data; - GLfloat (*Fspec)[4] = (GLfloat (*)[4]) store->LitSecondary[0].data; #if IDX & LIGHT_TWOSIDE GLfloat (*Bcolor)[4] = (GLfloat (*)[4]) store->LitColor[1].data; - GLfloat (*Bspec)[4] = (GLfloat (*)[4]) store->LitSecondary[1].data; #endif const GLuint nr = VB->Count; @@ -72,13 +63,11 @@ static void TAG(light_rgba_spec)( struct gl_context *ctx, fprintf(stderr, "%s\n", __FUNCTION__ ); #endif - VB->AttribPtr[_TNL_ATTRIB_COLOR0] = &store->LitColor[0]; - VB->AttribPtr[_TNL_ATTRIB_COLOR1] = &store->LitSecondary[0]; + VB->AttribPtr[_TNL_ATTRIB_COLOR] = &store->LitColor[0]; sumA[0] = ctx->Light.Material.Attrib[MAT_ATTRIB_FRONT_DIFFUSE][3]; #if IDX & LIGHT_TWOSIDE VB->BackfaceColorPtr = &store->LitColor[1]; - VB->BackfaceSecondaryColorPtr = &store->LitSecondary[1]; sumA[1] = ctx->Light.Material.Attrib[MAT_ATTRIB_BACK_DIFFUSE][3]; #endif @@ -220,12 +209,10 @@ static void TAG(light_rgba_spec)( struct gl_context *ctx, } /*loop over lights*/ COPY_3V( Fcolor[j], sum[0] ); - COPY_3V( Fspec[j], spec[0] ); Fcolor[j][3] = sumA[0]; #if IDX & LIGHT_TWOSIDE COPY_3V( Bcolor[j], sum[1] ); - COPY_3V( Bspec[j], spec[1] ); Bcolor[j][3] = sumA[1]; #endif } @@ -259,7 +246,7 @@ static void TAG(light_rgba)( struct gl_context *ctx, fprintf(stderr, "%s\n", __FUNCTION__ ); #endif - VB->AttribPtr[_TNL_ATTRIB_COLOR0] = &store->LitColor[0]; + VB->AttribPtr[_TNL_ATTRIB_COLOR] = &store->LitColor[0]; sumA[0] = ctx->Light.Material.Attrib[MAT_ATTRIB_FRONT_DIFFUSE][3]; #if IDX & LIGHT_TWOSIDE @@ -449,7 +436,7 @@ static void TAG(light_fast_rgba_single)( struct gl_context *ctx, (void) input; /* doesn't refer to Eye or Obj */ - VB->AttribPtr[_TNL_ATTRIB_COLOR0] = &store->LitColor[0]; + VB->AttribPtr[_TNL_ATTRIB_COLOR] = &store->LitColor[0]; #if IDX & LIGHT_TWOSIDE VB->BackfaceColorPtr = &store->LitColor[1]; #endif @@ -559,7 +546,7 @@ static void TAG(light_fast_rgba)( struct gl_context *ctx, sumA[0] = ctx->Light.Material.Attrib[MAT_ATTRIB_FRONT_DIFFUSE][3]; sumA[1] = ctx->Light.Material.Attrib[MAT_ATTRIB_BACK_DIFFUSE][3]; - VB->AttribPtr[_TNL_ATTRIB_COLOR0] = &store->LitColor[0]; + VB->AttribPtr[_TNL_ATTRIB_COLOR] = &store->LitColor[0]; #if IDX & LIGHT_TWOSIDE VB->BackfaceColorPtr = &store->LitColor[1]; #endif @@ -648,4 +635,3 @@ static void TAG(init_light_tab)( void ) #undef TAG #undef IDX -#undef NR_SIDES diff --git a/reactos/dll/opengl/mesa/tnl/t_vertex_generic.c b/reactos/dll/opengl/mesa/tnl/t_vertex_generic.c index f9a3129fa14..b8ef1f7d474 100644 --- a/reactos/dll/opengl/mesa/tnl/t_vertex_generic.c +++ b/reactos/dll/opengl/mesa/tnl/t_vertex_generic.c @@ -1065,8 +1065,7 @@ void _tnl_generic_copy_pv( struct gl_context *ctx, GLuint edst, GLuint esrc ) GLuint j; for (j = 0; j < attr_count; j++) { - if (a[j].attrib == VERT_ATTRIB_COLOR0 || - a[j].attrib == VERT_ATTRIB_COLOR1) { + if (a[j].attrib == VERT_ATTRIB_COLOR) { memcpy( vdst + a[j].vertoffset, vsrc + a[j].vertoffset, @@ -1099,15 +1098,6 @@ void _tnl_generic_interp_extras( struct gl_context *ctx, VB->BackfaceColorPtr->data[out], VB->BackfaceColorPtr->data[in] ); } - - if (VB->BackfaceSecondaryColorPtr) { - assert(VB->BackfaceSecondaryColorPtr->stride == 4 * sizeof(GLfloat)); - - INTERP_3F( t, - VB->BackfaceSecondaryColorPtr->data[dst], - VB->BackfaceSecondaryColorPtr->data[out], - VB->BackfaceSecondaryColorPtr->data[in] ); - } if (VB->BackfaceIndexPtr) { VB->BackfaceIndexPtr->data[dst][0] = LINTERP( t, @@ -1134,11 +1124,6 @@ void _tnl_generic_copy_pv_extras( struct gl_context *ctx, VB->BackfaceColorPtr->data[src] ); } - if (VB->BackfaceSecondaryColorPtr) { - COPY_4FV( VB->BackfaceSecondaryColorPtr->data[dst], - VB->BackfaceSecondaryColorPtr->data[src] ); - } - if (VB->BackfaceIndexPtr) { VB->BackfaceIndexPtr->data[dst][0] = VB->BackfaceIndexPtr->data[src][0]; } diff --git a/reactos/dll/opengl/mesa/vbo/vbo_attrib.h b/reactos/dll/opengl/mesa/vbo/vbo_attrib.h index e0ec4df4ee2..550bd2719fa 100644 --- a/reactos/dll/opengl/mesa/vbo/vbo_attrib.h +++ b/reactos/dll/opengl/mesa/vbo/vbo_attrib.h @@ -47,28 +47,27 @@ enum { VBO_ATTRIB_POS = 0, VBO_ATTRIB_WEIGHT = 1, VBO_ATTRIB_NORMAL = 2, - VBO_ATTRIB_COLOR0 = 3, - VBO_ATTRIB_COLOR1 = 4, - VBO_ATTRIB_FOG = 5, - VBO_ATTRIB_INDEX = 6, - VBO_ATTRIB_EDGEFLAG = 7, - VBO_ATTRIB_TEX = 8, - VBO_ATTRIB_POINT_SIZE = 9, + VBO_ATTRIB_COLOR = 3, + VBO_ATTRIB_FOG = 4, + VBO_ATTRIB_INDEX = 5, + VBO_ATTRIB_EDGEFLAG = 6, + VBO_ATTRIB_TEX = 7, + VBO_ATTRIB_POINT_SIZE = 8, - VBO_ATTRIB_MAT_FRONT_AMBIENT = 10, - VBO_ATTRIB_MAT_BACK_AMBIENT = 11, - VBO_ATTRIB_MAT_FRONT_DIFFUSE = 12, - VBO_ATTRIB_MAT_BACK_DIFFUSE = 13, - VBO_ATTRIB_MAT_FRONT_SPECULAR = 14, - VBO_ATTRIB_MAT_BACK_SPECULAR = 15, - VBO_ATTRIB_MAT_FRONT_EMISSION = 16, - VBO_ATTRIB_MAT_BACK_EMISSION = 17, - VBO_ATTRIB_MAT_FRONT_SHININESS = 18, - VBO_ATTRIB_MAT_BACK_SHININESS = 19, - VBO_ATTRIB_MAT_FRONT_INDEXES = 20, - VBO_ATTRIB_MAT_BACK_INDEXES = 21, + VBO_ATTRIB_MAT_FRONT_AMBIENT = 9, + VBO_ATTRIB_MAT_BACK_AMBIENT = 10, + VBO_ATTRIB_MAT_FRONT_DIFFUSE = 11, + VBO_ATTRIB_MAT_BACK_DIFFUSE = 12, + VBO_ATTRIB_MAT_FRONT_SPECULAR = 13, + VBO_ATTRIB_MAT_BACK_SPECULAR = 14, + VBO_ATTRIB_MAT_FRONT_EMISSION = 15, + VBO_ATTRIB_MAT_BACK_EMISSION = 16, + VBO_ATTRIB_MAT_FRONT_SHININESS = 17, + VBO_ATTRIB_MAT_BACK_SHININESS = 18, + VBO_ATTRIB_MAT_FRONT_INDEXES = 19, + VBO_ATTRIB_MAT_BACK_INDEXES = 20, - VBO_ATTRIB_MAX = 22 + VBO_ATTRIB_MAX = 21 }; #define VBO_ATTRIB_FIRST_MATERIAL VBO_ATTRIB_MAT_FRONT_AMBIENT diff --git a/reactos/dll/opengl/mesa/vbo/vbo_attrib_tmp.h b/reactos/dll/opengl/mesa/vbo/vbo_attrib_tmp.h index 2570030b9d5..20800a41568 100644 --- a/reactos/dll/opengl/mesa/vbo/vbo_attrib_tmp.h +++ b/reactos/dll/opengl/mesa/vbo/vbo_attrib_tmp.h @@ -197,44 +197,28 @@ static void GLAPIENTRY TAG(Color3f)(GLfloat x, GLfloat y, GLfloat z) { GET_CURRENT_CONTEXT(ctx); - ATTR3F(VBO_ATTRIB_COLOR0, x, y, z); + ATTR3F(VBO_ATTRIB_COLOR, x, y, z); } static void GLAPIENTRY TAG(Color3fv)(const GLfloat * v) { GET_CURRENT_CONTEXT(ctx); - ATTR3FV(VBO_ATTRIB_COLOR0, v); + ATTR3FV(VBO_ATTRIB_COLOR, v); } static void GLAPIENTRY TAG(Color4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w) { GET_CURRENT_CONTEXT(ctx); - ATTR4F(VBO_ATTRIB_COLOR0, x, y, z, w); + ATTR4F(VBO_ATTRIB_COLOR, x, y, z, w); } static void GLAPIENTRY TAG(Color4fv)(const GLfloat * v) { GET_CURRENT_CONTEXT(ctx); - ATTR4FV(VBO_ATTRIB_COLOR0, v); -} - - - -static void GLAPIENTRY -TAG(SecondaryColor3fEXT)(GLfloat x, GLfloat y, GLfloat z) -{ - GET_CURRENT_CONTEXT(ctx); - ATTR3F(VBO_ATTRIB_COLOR1, x, y, z); -} - -static void GLAPIENTRY -TAG(SecondaryColor3fvEXT)(const GLfloat * v) -{ - GET_CURRENT_CONTEXT(ctx); - ATTR3FV(VBO_ATTRIB_COLOR1, v); + ATTR4FV(VBO_ATTRIB_COLOR, v); } diff --git a/reactos/dll/opengl/mesa/vbo/vbo_exec_api.c b/reactos/dll/opengl/mesa/vbo/vbo_exec_api.c index fc443f76a7e..56e3fea559b 100644 --- a/reactos/dll/opengl/mesa/vbo/vbo_exec_api.c +++ b/reactos/dll/opengl/mesa/vbo/vbo_exec_api.c @@ -171,9 +171,9 @@ static void vbo_exec_copy_to_current( struct vbo_exec_context *exec ) /* Colormaterial -- this kindof sucks. */ if (ctx->Light.ColorMaterialEnabled && - exec->vtx.attrsz[VBO_ATTRIB_COLOR0]) { + exec->vtx.attrsz[VBO_ATTRIB_COLOR]) { _mesa_update_color_material(ctx, - ctx->Current.Attrib[VBO_ATTRIB_COLOR0]); + ctx->Current.Attrib[VBO_ATTRIB_COLOR]); } } @@ -871,8 +871,6 @@ static void vbo_exec_vtxfmt_init( struct vbo_exec_context *exec ) vfmt->FogCoordfvEXT = vbo_FogCoordfvEXT; vfmt->Normal3f = vbo_Normal3f; vfmt->Normal3fv = vbo_Normal3fv; - vfmt->SecondaryColor3fEXT = vbo_SecondaryColor3fEXT; - vfmt->SecondaryColor3fvEXT = vbo_SecondaryColor3fvEXT; vfmt->TexCoord1f = vbo_TexCoord1f; vfmt->TexCoord1fv = vbo_TexCoord1fv; vfmt->TexCoord2f = vbo_TexCoord2f; @@ -927,8 +925,6 @@ static void vbo_exec_vtxfmt_init( struct vbo_exec_context *exec ) (void) vbo_MultiTexCoord4fv; (void) vbo_Normal3f; (void) vbo_Normal3fv; - (void) vbo_SecondaryColor3fEXT; - (void) vbo_SecondaryColor3fvEXT; (void) vbo_TexCoord1f; (void) vbo_TexCoord1fv; (void) vbo_TexCoord2f; @@ -1168,4 +1164,4 @@ static void reset_attrfv( struct vbo_exec_context *exec ) } exec->vtx.vertex_size = 0; -} \ No newline at end of file +} diff --git a/reactos/dll/opengl/mesa/vbo/vbo_exec_array.c b/reactos/dll/opengl/mesa/vbo/vbo_exec_array.c index f03430fce39..1858771658f 100644 --- a/reactos/dll/opengl/mesa/vbo/vbo_exec_array.c +++ b/reactos/dll/opengl/mesa/vbo/vbo_exec_array.c @@ -154,121 +154,6 @@ vbo_get_minmax_index(struct gl_context *ctx, } -/** - * Check that element 'j' of the array has reasonable data. - * Map VBO if needed. - * For debugging purposes; not normally used. - */ -static void -check_array_data(struct gl_context *ctx, struct gl_client_array *array, - GLuint attrib, GLuint j) -{ - if (array->Enabled) { - const void *data = array->Ptr; - if (_mesa_is_bufferobj(array->BufferObj)) { - if (!array->BufferObj->Pointer) { - /* need to map now */ - array->BufferObj->Pointer = - ctx->Driver.MapBufferRange(ctx, 0, array->BufferObj->Size, - GL_MAP_READ_BIT, array->BufferObj); - } - data = ADD_POINTERS(data, array->BufferObj->Pointer); - } - switch (array->Type) { - case GL_FLOAT: - { - GLfloat *f = (GLfloat *) ((GLubyte *) data + array->StrideB * j); - GLint k; - for (k = 0; k < array->Size; k++) { - if (IS_INF_OR_NAN(f[k]) || - f[k] >= 1.0e20 || f[k] <= -1.0e10) { - printf("Bad array data:\n"); - printf(" Element[%u].%u = %f\n", j, k, f[k]); - printf(" Array %u at %p\n", attrib, (void* ) array); - printf(" Type 0x%x, Size %d, Stride %d\n", - array->Type, array->Size, array->Stride); - printf(" Address/offset %p in Buffer Object %u\n", - array->Ptr, array->BufferObj->Name); - f[k] = 1.0; /* XXX replace the bad value! */ - } - /*assert(!IS_INF_OR_NAN(f[k]));*/ - } - } - break; - default: - ; - } - } -} - - -/** - * Unmap the buffer object referenced by given array, if mapped. - */ -static void -unmap_array_buffer(struct gl_context *ctx, struct gl_client_array *array) -{ - if (array->Enabled && - _mesa_is_bufferobj(array->BufferObj) && - _mesa_bufferobj_mapped(array->BufferObj)) { - ctx->Driver.UnmapBuffer(ctx, array->BufferObj); - } -} - - -/** - * Examine the array's data for NaNs, etc. - * For debug purposes; not normally used. - */ -static void -check_draw_elements_data(struct gl_context *ctx, GLsizei count, GLenum elemType, - const void *elements, GLint basevertex) -{ - const void *elemMap; - GLint i, k; - - if (_mesa_is_bufferobj(ctx->Array.ElementArrayBufferObj)) { - elemMap = ctx->Driver.MapBufferRange(ctx, 0, - ctx->Array.ElementArrayBufferObj->Size, - GL_MAP_READ_BIT, - ctx->Array.ElementArrayBufferObj); - elements = ADD_POINTERS(elements, elemMap); - } - - for (i = 0; i < count; i++) { - GLuint j; - - /* j = element[i] */ - switch (elemType) { - case GL_UNSIGNED_BYTE: - j = ((const GLubyte *) elements)[i]; - break; - case GL_UNSIGNED_SHORT: - j = ((const GLushort *) elements)[i]; - break; - case GL_UNSIGNED_INT: - j = ((const GLuint *) elements)[i]; - break; - default: - assert(0); - } - - /* check element j of each enabled array */ - for (k = 0; k < Elements(ctx->Array.VertexAttrib); k++) { - check_array_data(ctx, &ctx->Array.VertexAttrib[k], k, j); - } - } - - if (_mesa_is_bufferobj(ctx->Array.ElementArrayBufferObj)) { - ctx->Driver.UnmapBuffer(ctx, ctx->Array.ElementArrayBufferObj); - } - - for (k = 0; k < Elements(ctx->Array.VertexAttrib); k++) { - unmap_array_buffer(ctx, &ctx->Array.VertexAttrib[k]); - } -} - - /** * Check array data, looking for NaNs, etc. */ @@ -593,82 +478,6 @@ vbo_validated_drawrangeelements(struct gl_context *ctx, GLenum mode, index_bounds_valid, start, end ); } -/** - * Called by glDrawRangeElements() in immediate mode. - */ -static void GLAPIENTRY -vbo_exec_DrawRangeElements(GLenum mode, - GLuint start, GLuint end, - GLsizei count, GLenum type, - const GLvoid *indices) -{ - static GLuint warnCount = 0; - GLboolean index_bounds_valid = GL_TRUE; - GET_CURRENT_CONTEXT(ctx); - - if (MESA_VERBOSE & VERBOSE_DRAW) - _mesa_debug(ctx, - "glDrawRangeElements(%s, %u, %u, %d, %s, %p)\n", - _mesa_lookup_enum_by_nr(mode), start, end, count, - _mesa_lookup_enum_by_nr(type), indices); - - if (!_mesa_validate_DrawRangeElements( ctx, mode, start, end, count, - type, indices )) - return; - - if (end < start || - end >= ctx->Array._MaxElement) { - /* The application requested we draw using a range of indices that's - * outside the bounds of the current VBO. This is invalid and appears - * to give undefined results. The safest thing to do is to simply - * ignore the range, in case the application botched their range tracking - * but did provide valid indices. Also issue a warning indicating that - * the application is broken. - */ - if (warnCount++ < 10) { - _mesa_warning(ctx, "glDrawRangeElements(start %u, end %u, " - "count %d, type 0x%x, indices=%p):\n" - "\trange is outside VBO bounds (max=%u); ignoring.\n" - "\tThis should be fixed in the application.", - start, end, count, type, indices, - ctx->Array._MaxElement - 1); - } - index_bounds_valid = GL_FALSE; - } - - /* NOTE: It's important that 'end' is a reasonable value. - * in _tnl_draw_prims(), we use end to determine how many vertices - * to transform. If it's too large, we can unnecessarily split prims - * or we can read/write out of memory in several different places! - */ - - /* Catch/fix some potential user errors */ - if (type == GL_UNSIGNED_BYTE) { - start = MIN2(start, 0xff); - end = MIN2(end, 0xff); - } - else if (type == GL_UNSIGNED_SHORT) { - start = MIN2(start, 0xffff); - end = MIN2(end, 0xffff); - } - - if (0) { - printf("glDraw[Range]Elements" - "(start %u, end %u, type 0x%x, count %d) ElemBuf %u\n", - start, end, type, count, - ctx->Array.ElementArrayBufferObj->Name); - } - -#if 0 - check_draw_elements_data(ctx, count, type, indices); -#else - (void) check_draw_elements_data; -#endif - - vbo_validated_drawrangeelements(ctx, mode, index_bounds_valid, start, end, - count, type, indices, 1); -} - /** * Called by glDrawElements() in immediate mode. @@ -701,7 +510,6 @@ vbo_exec_array_init( struct vbo_exec_context *exec ) { exec->vtxfmt.DrawArrays = vbo_exec_DrawArrays; exec->vtxfmt.DrawElements = vbo_exec_DrawElements; - exec->vtxfmt.DrawRangeElements = vbo_exec_DrawRangeElements; } @@ -733,11 +541,3 @@ _mesa_DrawElements(GLenum mode, GLsizei count, GLenum type, vbo_exec_DrawElements(mode, count, type, indices); } - -void GLAPIENTRY -_mesa_DrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, - GLenum type, const GLvoid *indices) -{ - vbo_exec_DrawRangeElements(mode, start, end, count, type, indices); -} - diff --git a/reactos/dll/opengl/mesa/vbo/vbo_exec_eval.c b/reactos/dll/opengl/mesa/vbo/vbo_exec_eval.c index fd1f6792674..0c0aa386c60 100644 --- a/reactos/dll/opengl/mesa/vbo/vbo_exec_eval.c +++ b/reactos/dll/opengl/mesa/vbo/vbo_exec_eval.c @@ -72,10 +72,10 @@ void vbo_exec_eval_update( struct vbo_exec_context *exec ) } if (ctx->Eval.Map1Color4) - set_active_eval1( exec, VBO_ATTRIB_COLOR0, 4, &ctx->EvalMap.Map1Color4 ); + set_active_eval1( exec, VBO_ATTRIB_COLOR, 4, &ctx->EvalMap.Map1Color4 ); if (ctx->Eval.Map2Color4) - set_active_eval2( exec, VBO_ATTRIB_COLOR0, 4, &ctx->EvalMap.Map2Color4 ); + set_active_eval2( exec, VBO_ATTRIB_COLOR, 4, &ctx->EvalMap.Map2Color4 ); if (ctx->Eval.Map1TextureCoord4) set_active_eval1( exec, VBO_ATTRIB_TEX, 4, &ctx->EvalMap.Map1Texture4 ); diff --git a/reactos/dll/opengl/mesa/vbo/vbo_noop.c b/reactos/dll/opengl/mesa/vbo/vbo_noop.c index edef84e327e..dffed25676d 100644 --- a/reactos/dll/opengl/mesa/vbo/vbo_noop.c +++ b/reactos/dll/opengl/mesa/vbo/vbo_noop.c @@ -87,16 +87,6 @@ _mesa_noop_Color3fv(const GLfloat * v) { } -static void GLAPIENTRY -_mesa_noop_SecondaryColor3fEXT(GLfloat a, GLfloat b, GLfloat c) -{ -} - -static void GLAPIENTRY -_mesa_noop_SecondaryColor3fvEXT(const GLfloat * v) -{ -} - static void GLAPIENTRY _mesa_noop_TexCoord1f(GLfloat a) { @@ -275,15 +265,6 @@ _mesa_noop_DrawElements(GLenum mode, GLsizei count, GLenum type, { } - -static void GLAPIENTRY -_mesa_noop_DrawRangeElements(GLenum mode, - GLuint start, GLuint end, - GLsizei count, GLenum type, - const GLvoid * indices) -{ -} - static void GLAPIENTRY _mesa_noop_EvalMesh1(GLenum mode, GLint i1, GLint i2) { @@ -325,8 +306,6 @@ _mesa_noop_vtxfmt_init(GLvertexformat * vfmt) vfmt->Materialfv = _mesa_noop_Materialfv; vfmt->Normal3f = _mesa_noop_Normal3f; vfmt->Normal3fv = _mesa_noop_Normal3fv; - vfmt->SecondaryColor3fEXT = _mesa_noop_SecondaryColor3fEXT; - vfmt->SecondaryColor3fvEXT = _mesa_noop_SecondaryColor3fvEXT; vfmt->TexCoord1f = _mesa_noop_TexCoord1f; vfmt->TexCoord1fv = _mesa_noop_TexCoord1fv; vfmt->TexCoord2f = _mesa_noop_TexCoord2f; @@ -354,7 +333,6 @@ _mesa_noop_vtxfmt_init(GLvertexformat * vfmt) vfmt->DrawArrays = _mesa_noop_DrawArrays; vfmt->DrawElements = _mesa_noop_DrawElements; - vfmt->DrawRangeElements = _mesa_noop_DrawRangeElements; } diff --git a/reactos/dll/opengl/mesa/vbo/vbo_save_api.c b/reactos/dll/opengl/mesa/vbo/vbo_save_api.c index f0585ee4641..69bdbe4df8d 100644 --- a/reactos/dll/opengl/mesa/vbo/vbo_save_api.c +++ b/reactos/dll/opengl/mesa/vbo/vbo_save_api.c @@ -950,21 +950,6 @@ _save_DrawElements(GLenum mode, GLsizei count, GLenum type, } -static void GLAPIENTRY -_save_DrawRangeElements(GLenum mode, GLuint start, GLuint end, - GLsizei count, GLenum type, const GLvoid * indices) -{ - GET_CURRENT_CONTEXT(ctx); - (void) mode; - (void) start; - (void) end; - (void) count; - (void) type; - (void) indices; - _mesa_compile_error(ctx, GL_INVALID_OPERATION, "glDrawRangeElements"); -} - - static void GLAPIENTRY _save_DrawArrays(GLenum mode, GLint start, GLsizei count) { @@ -1114,25 +1099,6 @@ _save_OBE_DrawElements(GLenum mode, GLsizei count, GLenum type, } -static void GLAPIENTRY -_save_OBE_DrawRangeElements(GLenum mode, GLuint start, GLuint end, - GLsizei count, GLenum type, - const GLvoid * indices) -{ - GET_CURRENT_CONTEXT(ctx); - struct vbo_save_context *save = &vbo_context(ctx)->save; - - if (!_mesa_validate_DrawRangeElements(ctx, mode, - start, end, count, type, indices)) - return; - - if (save->out_of_memory) - return; - - _save_OBE_DrawElements(mode, count, type, indices); -} - - static void _save_vtxfmt_init(struct gl_context *ctx) { @@ -1155,8 +1121,6 @@ _save_vtxfmt_init(struct gl_context *ctx) vfmt->Materialfv = _save_Materialfv; vfmt->Normal3f = _save_Normal3f; vfmt->Normal3fv = _save_Normal3fv; - vfmt->SecondaryColor3fEXT = _save_SecondaryColor3fEXT; - vfmt->SecondaryColor3fvEXT = _save_SecondaryColor3fvEXT; vfmt->TexCoord1f = _save_TexCoord1f; vfmt->TexCoord1fv = _save_TexCoord1fv; vfmt->TexCoord2f = _save_TexCoord2f; @@ -1194,7 +1158,6 @@ _save_vtxfmt_init(struct gl_context *ctx) vfmt->Rectf = _save_Rectf; vfmt->DrawArrays = _save_DrawArrays; vfmt->DrawElements = _save_DrawElements; - vfmt->DrawRangeElements = _save_DrawRangeElements; } @@ -1395,7 +1358,6 @@ vbo_save_api_init(struct vbo_save_context *save) ctx->ListState.ListVtxfmt.Rectf = _save_OBE_Rectf; ctx->ListState.ListVtxfmt.DrawArrays = _save_OBE_DrawArrays; ctx->ListState.ListVtxfmt.DrawElements = _save_OBE_DrawElements; - ctx->ListState.ListVtxfmt.DrawRangeElements = _save_OBE_DrawRangeElements; _mesa_install_save_vtxfmt(ctx, &ctx->ListState.ListVtxfmt); } diff --git a/reactos/dll/opengl/mesa/vbo/vbo_save_draw.c b/reactos/dll/opengl/mesa/vbo/vbo_save_draw.c index 71f66bbd0f4..364d8bf3cf8 100644 --- a/reactos/dll/opengl/mesa/vbo/vbo_save_draw.c +++ b/reactos/dll/opengl/mesa/vbo/vbo_save_draw.c @@ -96,7 +96,7 @@ _playback_copy_to_current(struct gl_context *ctx, /* Colormaterial -- this kindof sucks. */ if (ctx->Light.ColorMaterialEnabled) { - _mesa_update_color_material(ctx, ctx->Current.Attrib[VBO_ATTRIB_COLOR0]); + _mesa_update_color_material(ctx, ctx->Current.Attrib[VBO_ATTRIB_COLOR]); } /* CurrentExecPrimitive diff --git a/reactos/dll/opengl/mesa/x86/gen_matypes.c b/reactos/dll/opengl/mesa/x86/gen_matypes.c index 2eaea8841a8..9d8a0e8cdb7 100644 --- a/reactos/dll/opengl/mesa/x86/gen_matypes.c +++ b/reactos/dll/opengl/mesa/x86/gen_matypes.c @@ -229,7 +229,6 @@ int main( int argc, char **argv ) OFFSET( "LIGHT_MODEL_AMBIENT ", struct gl_lightmodel, Ambient ); OFFSET( "LIGHT_MODEL_LOCAL_VIEWER ", struct gl_lightmodel, LocalViewer ); OFFSET( "LIGHT_MODEL_TWO_SIDE ", struct gl_lightmodel, TwoSide ); - OFFSET( "LIGHT_MODEL_COLOR_CONTROL ", struct gl_lightmodel, ColorControl ); printf( "\n" ); diff --git a/reactos/dll/opengl/mesa/x86/mmx.h b/reactos/dll/opengl/mesa/x86/mmx.h index 74e9979d312..53a63f321c9 100644 --- a/reactos/dll/opengl/mesa/x86/mmx.h +++ b/reactos/dll/opengl/mesa/x86/mmx.h @@ -41,16 +41,6 @@ _mesa_mmx_blend_add( struct gl_context *ctx, GLuint n, const GLubyte mask[], GLvoid *rgba, const GLvoid *dest, GLenum chanType ); -extern void _ASMAPI -_mesa_mmx_blend_min( struct gl_context *ctx, GLuint n, const GLubyte mask[], - GLvoid *rgba, const GLvoid *dest, - GLenum chanType ); - -extern void _ASMAPI -_mesa_mmx_blend_max( struct gl_context *ctx, GLuint n, const GLubyte mask[], - GLvoid *rgba, const GLvoid *dest, - GLenum chanType ); - extern void _ASMAPI _mesa_mmx_blend_modulate( struct gl_context *ctx, GLuint n, const GLubyte mask[], GLvoid *rgba, const GLvoid *dest, diff --git a/reactos/dll/opengl/mesa/x86/mmx_blend.S b/reactos/dll/opengl/mesa/x86/mmx_blend.S index eeaf43ea937..1831f220107 100644 --- a/reactos/dll/opengl/mesa/x86/mmx_blend.S +++ b/reactos/dll/opengl/mesa/x86/mmx_blend.S @@ -304,70 +304,6 @@ TWO(MOVQ ( MM1, REGIND(rgba) )) #include "mmx_blendtmp.h" -/* Blend min function - */ - -#define TAG(x) CONCAT(x,_min) -#define LLTAG(x) LLBL2(x,_min) - -/* Kevin F. Quinn 2nd July 2006 - * Replace data segment constants with text-segment instructions -#define INIT \ - MOVQ ( CONTENT(const_80), MM7 ) - */ -#define INIT \ - PUSH_L ( CONST(const_80_h) ) /* 0x80| 0x80| 0x80| 0x80| 0x80| 0x80| 0x80| 0x80*/ ;\ - PUSH_L ( CONST(const_80_l) ) ;\ - MOVQ ( REGIND(ESP), MM7 ) ;\ - ADD_L ( CONST(8), ESP) - -#define MAIN( rgba, dest ) \ - GMB_LOAD( rgba, dest, MM1, MM2 ) ;\ - MOVQ ( MM1, MM3 ) ;\ - MOVQ ( MM2, MM4 ) ;\ - PXOR ( MM7, MM3 ) /* unsigned -> signed */ ;\ - PXOR ( MM7, MM4 ) /* unsigned -> signed */ ;\ - PCMPGTB ( MM3, MM4 ) /* q > p ? 0xff : 0x00 */ ;\ - PAND ( MM4, MM1 ) /* q > p ? p : 0 */ ;\ - PANDN ( MM2, MM4 ) /* q > p ? 0 : q */ ;\ - POR ( MM1, MM4 ) /* q > p ? p : q */ ;\ - GMB_STORE( rgba, MM4 ) - -#include "mmx_blendtmp.h" - - -/* Blend max function - */ - -#define TAG(x) CONCAT(x,_max) -#define LLTAG(x) LLBL2(x,_max) - -/* Kevin F. Quinn 2nd July 2006 - * Replace data segment constants with text-segment instructions -#define INIT \ - MOVQ ( CONTENT(const_80), MM7 ) - */ -#define INIT \ - PUSH_L ( CONST(const_80_l) ) /* 0x80| 0x80| 0x80| 0x80| 0x80| 0x80| 0x80| 0x80*/ ;\ - PUSH_L ( CONST(const_80_h) ) ;\ - MOVQ ( REGIND(ESP), MM7 ) ;\ - ADD_L ( CONST(8), ESP) - -#define MAIN( rgba, dest ) \ - GMB_LOAD( rgba, dest, MM1, MM2 ) ;\ - MOVQ ( MM1, MM3 ) ;\ - MOVQ ( MM2, MM4 ) ;\ - PXOR ( MM7, MM3 ) /* unsigned -> signed */ ;\ - PXOR ( MM7, MM4 ) /* unsigned -> signed */ ;\ - PCMPGTB ( MM3, MM4 ) /* q > p ? 0xff : 0x00 */ ;\ - PAND ( MM4, MM2 ) /* q > p ? q : 0 */ ;\ - PANDN ( MM1, MM4 ) /* q > p ? 0 : p */ ;\ - POR ( MM2, MM4 ) /* q > p ? p : q */ ;\ - GMB_STORE( rgba, MM4 ) - -#include "mmx_blendtmp.h" - - /* Blend modulate function */ From b6f7dca618b502a76422b634ff38288f4e8c53e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Gardou?= Date: Wed, 18 Jun 2014 17:24:18 +0000 Subject: [PATCH 208/232] [OPENGL32] - Fix bitfields for 16-bits pixel format svn path=/trunk/; revision=63614 --- reactos/dll/opengl/opengl32/swimpl.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/reactos/dll/opengl/opengl32/swimpl.c b/reactos/dll/opengl/opengl32/swimpl.c index 3fb164f85dd..a0e75c24bf9 100644 --- a/reactos/dll/opengl/opengl32/swimpl.c +++ b/reactos/dll/opengl/opengl32/swimpl.c @@ -51,7 +51,7 @@ static const struct { MESA_FORMAT_RGB888, 24, 8, 0, 0x00000000, 8, 8, 0x00000000, 8, 16, 0x00000000, 0, 0, 0x00000000, 16, 16, 8, BI_RGB }, // { MESA_FORMAT_BGR888, 24, 8, 16, 8, 8, 8, 0, 0, 0, 16, 32, 8 }, // { MESA_FORMAT_BGR888, 24, 8, 16, 8, 8, 8, 0, 0, 0, 16, 16, 8 }, - { MESA_FORMAT_RGB565, 16, 5, 0, 0x00000000, 6, 5, 0x00000000, 5, 11, 0x00000000, 0, 0, 0x00000000, 16, 32, 8, BI_BITFIELDS }, + { MESA_FORMAT_RGB565, 16, 5, 0, 0x0000F800, 6, 5, 0x000007E0, 5, 11, 0x0000001F, 0, 0, 0x00000000, 16, 32, 8, BI_BITFIELDS }, { MESA_FORMAT_RGB565, 16, 5, 0, 0x0000F800, 6, 5, 0x000007E0, 5, 11, 0x0000001F, 0, 0, 0x00000000, 16, 16, 8, BI_BITFIELDS }, }; @@ -361,15 +361,15 @@ INT sw_DescribePixelFormat(HDC hdc, INT format, UINT size, PIXELFORMATDESCRIPTOR INT nb_win_compat = 0, start_win_compat = 0; INT ret = sizeof(pixel_formats)/sizeof(pixel_formats[0]); - if(GetObjectType(hdc) == OBJ_DC) + if (GetObjectType(hdc) == OBJ_DC) { /* Find the window compatible formats */ INT bpp = GetDeviceCaps(hdc, BITSPIXEL); - for(index = 0; indexformat_index = index_from_format(dc_data, format, &doubleBuffered); + TRACE("Using format %u - double buffered: %x.\n", fb->format_index, doubleBuffered); fb->flags = doubleBuffered ? SW_FB_DOUBLEBUFFERED : 0; /* Set the bitmap info describing the framebuffer */ fb->bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); @@ -663,6 +667,9 @@ sw_call_window_proc( * of the client area via GetClientRect. */ RECT client_rect; UINT width, height; + + TRACE("Got WM_WINDOWPOSCHANGED\n"); + GetClientRect(pParams->hwnd, &client_rect); width = client_rect.right - client_rect.left; height = client_rect.bottom - client_rect.top; From aa7c4d673d9b467b681bf8cd44fad5a4a7c14afc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Gardou?= Date: Wed, 18 Jun 2014 17:28:14 +0000 Subject: [PATCH 209/232] [OPENGL32] - fix an off-by-one error svn path=/trunk/; revision=63615 --- reactos/dll/opengl/opengl32/swimpl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/dll/opengl/opengl32/swimpl.c b/reactos/dll/opengl/opengl32/swimpl.c index a0e75c24bf9..d2957c33460 100644 --- a/reactos/dll/opengl/opengl32/swimpl.c +++ b/reactos/dll/opengl/opengl32/swimpl.c @@ -439,7 +439,7 @@ BOOL sw_SetPixelFormat(HDC hdc, struct wgl_dc_data* dc_data, INT format) TRACE("OpenGL software implementation START!\n"); /* allocate our structure */ - fb = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, FIELD_OFFSET(struct sw_framebuffer, bmi.bmiColors[2])); + fb = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, FIELD_OFFSET(struct sw_framebuffer, bmi.bmiColors[3])); if(!fb) { ERR("HeapAlloc FAILED!\n"); From c75e046831f743f8ad8b6f8e98d7121f42f63558 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Gardou?= Date: Wed, 18 Jun 2014 18:32:46 +0000 Subject: [PATCH 210/232] [NTOS/MM] - When freeing virtual memory, correctly set the ending address of the shrunk memory area. CORE-7467 svn path=/trunk/; revision=63616 --- reactos/ntoskrnl/mm/ARM3/virtual.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/ntoskrnl/mm/ARM3/virtual.c b/reactos/ntoskrnl/mm/ARM3/virtual.c index fa3e2fcc72b..44dc2ed155e 100644 --- a/reactos/ntoskrnl/mm/ARM3/virtual.c +++ b/reactos/ntoskrnl/mm/ARM3/virtual.c @@ -5336,7 +5336,7 @@ NtFreeVirtualMemory(IN HANDLE ProcessHandle, ASSERT(Vad->StartingVpn << PAGE_SHIFT == (ULONG_PTR)MemoryArea->StartingAddress); ASSERT((Vad->EndingVpn + 1) << PAGE_SHIFT == (ULONG_PTR)MemoryArea->EndingAddress); Vad->EndingVpn = ((ULONG_PTR)StartingAddress - 1) >> PAGE_SHIFT; - MemoryArea->EndingAddress = (PVOID)(((Vad->EndingVpn + 1) << PAGE_SHIFT) - 1); + MemoryArea->EndingAddress = (PVOID)(StartingAddress); } else { From 36de38c3a606d933042019f086117643337f53cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Gardou?= Date: Thu, 19 Jun 2014 08:18:25 +0000 Subject: [PATCH 211/232] [OPENGL32/MESA] - Report OpenGL version 1.1 svn path=/trunk/; revision=63617 --- reactos/dll/opengl/mesa/main/version.c | 77 ++++---------------------- 1 file changed, 12 insertions(+), 65 deletions(-) diff --git a/reactos/dll/opengl/mesa/main/version.c b/reactos/dll/opengl/mesa/main/version.c index 63fe5b79300..89c912cbd1b 100644 --- a/reactos/dll/opengl/mesa/main/version.c +++ b/reactos/dll/opengl/mesa/main/version.c @@ -56,75 +56,22 @@ override_version(struct gl_context *ctx, GLuint *major, GLuint *minor) static void compute_version(struct gl_context *ctx) { - GLuint major, minor; - static const int max = 100; + /* report openGL 1.1 */ + ctx->VersionMajor = 1; + ctx->VersionMinor = 1; - const GLboolean ver_1_3 = (ctx->Extensions.ARB_texture_cube_map && - ctx->Extensions.ARB_texture_env_combine && - ctx->Extensions.ARB_texture_env_dot3); - const GLboolean ver_1_4 = (ver_1_3 && - ctx->Extensions.ARB_texture_env_crossbar && - ctx->Extensions.ARB_window_pos && - ctx->Extensions.EXT_blend_color && - ctx->Extensions.EXT_blend_func_separate && - ctx->Extensions.EXT_blend_minmax && - ctx->Extensions.EXT_fog_coord && - ctx->Extensions.EXT_point_parameters && - ctx->Extensions.EXT_secondary_color); - const GLboolean ver_1_5 = (ver_1_4 && - ctx->Extensions.EXT_shadow_funcs); - const GLboolean ver_2_0 = (ver_1_5 && - ctx->Extensions.ARB_point_sprite && - ctx->Extensions.EXT_blend_equation_separate); - const GLboolean ver_2_1 = (ver_2_0); - const GLboolean ver_3_0 = (ver_2_1 && - ctx->Extensions.ARB_map_buffer_range); + override_version(ctx, &ctx->VersionMajor, &ctx->VersionMinor); - - if (ver_3_0) { - major = 3; - minor = 0; - } - else if (ver_2_1) { - major = 2; - minor = 1; - } - else if (ver_2_0) { - major = 2; - minor = 0; - } - else if (ver_1_5) { - major = 1; - minor = 5; - } - else if (ver_1_4) { - major = 1; - minor = 4; - } - else if (ver_1_3) { - major = 1; - minor = 3; - } - else { - major = 1; - minor = 2; - } - - ctx->VersionMajor = major; - ctx->VersionMinor = minor; - - override_version(ctx, &ctx->VersionMajor, &ctx->VersionMinor); - - ctx->VersionString = (char *) malloc(max); - if (ctx->VersionString) { - _mesa_snprintf(ctx->VersionString, max, - "%u.%u Mesa " MESA_VERSION_STRING + ctx->VersionString = (char *) malloc(20); + if (ctx->VersionString) { + _mesa_snprintf(ctx->VersionString, 20, + "%u.%u Mesa " MESA_VERSION_STRING #ifdef MESA_GIT_SHA1 - " (" MESA_GIT_SHA1 ")" + " (" MESA_GIT_SHA1 ")" #endif - , - ctx->VersionMajor, ctx->VersionMinor); - } + , + ctx->VersionMajor, ctx->VersionMinor); + } } /** From 7fade28911658c90b086e78dc2f474b2f9592af4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Gardou?= Date: Thu, 19 Jun 2014 10:50:47 +0000 Subject: [PATCH 212/232] [NTOS/MM] - Do not mark VAD as private memory when creating a MEMORY_AREA, as this is never the case (only used for sections) - Add a few DPRINTS. CORE-8140 #resolve fixed with r63618 svn path=/trunk/; revision=63618 --- reactos/ntoskrnl/mm/ARM3/virtual.c | 7 +++++++ reactos/ntoskrnl/mm/marea.c | 1 - 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/reactos/ntoskrnl/mm/ARM3/virtual.c b/reactos/ntoskrnl/mm/ARM3/virtual.c index 44dc2ed155e..fc8762971a4 100644 --- a/reactos/ntoskrnl/mm/ARM3/virtual.c +++ b/reactos/ntoskrnl/mm/ARM3/virtual.c @@ -4398,6 +4398,9 @@ NtAllocateVirtualMemory(IN HANDLE ProcessHandle, } } + DPRINT("NtAllocateVirtualMemory: Process 0x%p, Address 0x%p, Zerobits %lu , RegionSize 0x%x, Allocation type 0x%x, Protect 0x%x.\n", + Process, PBaseAddress, ZeroBits, PRegionSize, AllocationType, Protect); + // // Check for large page allocations and make sure that the required privilege // is being held, before attempting to handle them. @@ -4656,6 +4659,7 @@ NtAllocateVirtualMemory(IN HANDLE ProcessHandle, // } _SEH2_END; + DPRINT("Reserved %x bytes at %p.\n", PRegionSize, StartingAddress); return STATUS_SUCCESS; } @@ -5153,6 +5157,9 @@ NtFreeVirtualMemory(IN HANDLE ProcessHandle, } } + DPRINT("NtFreeVirtualMemory: Process 0x%p, Adress 0x%p, size 0x%x, FreeType %x.\n", + Process, PBaseAddress, PRegionSize, FreeType); + // // Lock the address space // diff --git a/reactos/ntoskrnl/mm/marea.c b/reactos/ntoskrnl/mm/marea.c index 6ea4db48075..12a7afae3ac 100644 --- a/reactos/ntoskrnl/mm/marea.c +++ b/reactos/ntoskrnl/mm/marea.c @@ -399,7 +399,6 @@ MmInsertMemoryArea( Vad->EndingVpn = Vad->StartingVpn; } Vad->u.VadFlags.Spare = 1; - Vad->u.VadFlags.PrivateMemory = 1; Vad->u.VadFlags.Protection = MiMakeProtectionMask(marea->Protect); /* Insert the VAD */ From 988dbfce59403f003988d344a1f23520bc34d4f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Gardou?= Date: Thu, 19 Jun 2014 11:24:48 +0000 Subject: [PATCH 213/232] [KSECDD] - Really export symbols - Properly stub InitSecurityInterfaceW - Install the driver svn path=/trunk/; revision=63619 --- reactos/boot/bootdata/txtsetup.sif | 1 + reactos/drivers/crypto/ksecdd/CMakeLists.txt | 4 ++-- reactos/drivers/crypto/ksecdd/stubs.c | 9 +++++++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/reactos/boot/bootdata/txtsetup.sif b/reactos/boot/bootdata/txtsetup.sif index a721eea20ad..9379f5e82f6 100644 --- a/reactos/boot/bootdata/txtsetup.sif +++ b/reactos/boot/bootdata/txtsetup.sif @@ -60,6 +60,7 @@ pcmcia.sys=,,,,,,,,,,,,4 swenum.sys=,,,,,,,,,,,,4 ntdll.dll=,,,,,,,,,,,,2 wmilib.sys=,,,,,,,,,,,,4 +ksecdd.sys=,,,,,,,,,,,,4 [HardwareIdsDatabase] ;*PNP0A00 = isapnp diff --git a/reactos/drivers/crypto/ksecdd/CMakeLists.txt b/reactos/drivers/crypto/ksecdd/CMakeLists.txt index 1ffccb4c892..790ca1cf705 100644 --- a/reactos/drivers/crypto/ksecdd/CMakeLists.txt +++ b/reactos/drivers/crypto/ksecdd/CMakeLists.txt @@ -1,7 +1,6 @@ spec2def(ksecdd.sys ksecdd.spec) - include_directories( ${REACTOS_SOURCE_DIR}/include/reactos/drivers/ksecdd ${REACTOS_SOURCE_DIR}/lib/cryptlib) @@ -11,7 +10,8 @@ list(APPEND SOURCE dispatch.c random.c stubs.c - ksecdd.rc) + ksecdd.rc + ${CMAKE_CURRENT_BINARY_DIR}/ksecdd.def) add_library(ksecdd SHARED ${SOURCE}) target_link_libraries(ksecdd cryptlib pseh) diff --git a/reactos/drivers/crypto/ksecdd/stubs.c b/reactos/drivers/crypto/ksecdd/stubs.c index 1a031e2f1ca..176b4acb9f9 100644 --- a/reactos/drivers/crypto/ksecdd/stubs.c +++ b/reactos/drivers/crypto/ksecdd/stubs.c @@ -208,6 +208,15 @@ InitializeSecurityContextW( return 0; } +PSecurityFunctionTableW +SEC_ENTRY +InitSecurityInterfaceW(void) +{ + + UNIMPLEMENTED_DBGBREAK(); + return NULL; +} + VOID SEC_ENTRY KSecRegisterSecurityProvider(VOID) From 73f4d1ff005b25341c46b9b75b3146b84a6bd174 Mon Sep 17 00:00:00 2001 From: Thomas Faber Date: Sat, 21 Jun 2014 11:07:51 +0000 Subject: [PATCH 214/232] [WIN32K] - Pass a boolean argument to RtlEqualUnicodeString svn path=/trunk/; revision=63624 --- reactos/win32ss/gdi/eng/ldevobj.c | 2 +- reactos/win32ss/user/ntuser/desktop.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/reactos/win32ss/gdi/eng/ldevobj.c b/reactos/win32ss/gdi/eng/ldevobj.c index ff1927d4ebc..2dcac3fb704 100644 --- a/reactos/win32ss/gdi/eng/ldevobj.c +++ b/reactos/win32ss/gdi/eng/ldevobj.c @@ -382,7 +382,7 @@ EngLoadImageEx( if (pldev->pGdiDriverInfo) { /* Check for match (case insensative) */ - if (RtlEqualUnicodeString(&pldev->pGdiDriverInfo->DriverName, &strDriverName, 1)) + if (RtlEqualUnicodeString(&pldev->pGdiDriverInfo->DriverName, &strDriverName, TRUE)) { /* Image found in LDEV list */ break; diff --git a/reactos/win32ss/user/ntuser/desktop.c b/reactos/win32ss/user/ntuser/desktop.c index ff2e1de5837..835af417c11 100644 --- a/reactos/win32ss/user/ntuser/desktop.c +++ b/reactos/win32ss/user/ntuser/desktop.c @@ -72,7 +72,7 @@ IntDesktopObjectParse(IN PVOID ParseObject, /* Compare the name */ if (RtlEqualUnicodeString(RemainingName, &DesktopName, - (Attributes & OBJ_CASE_INSENSITIVE))) + (Attributes & OBJ_CASE_INSENSITIVE) != 0)) { /* We found a match. Did this come from a create? */ if (Context) From adc64f21ca17d13e24d0e723481b52bf33d0e306 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Sun, 22 Jun 2014 09:33:46 +0000 Subject: [PATCH 215/232] =?UTF-8?q?[ODBCCP32]=20The=20control=20panel=20au?= =?UTF-8?q?tomatically=20runs=20this=20applet=20without=20clicking=20on=20?= =?UTF-8?q?it,=20fix=20this=20wrong=20behaviour.=20Patch=20by=20Lee=20Schr?= =?UTF-8?q?=C3=B6der=20CORE-8323=20#resolve=20#comment=20Thanks=20:)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit svn path=/trunk/; revision=63625 --- reactos/dll/cpl/odbccp32/odbccp32.c | 65 +++++++++++++++++------------ 1 file changed, 38 insertions(+), 27 deletions(-) diff --git a/reactos/dll/cpl/odbccp32/odbccp32.c b/reactos/dll/cpl/odbccp32/odbccp32.c index ce77120626b..194ea052467 100644 --- a/reactos/dll/cpl/odbccp32/odbccp32.c +++ b/reactos/dll/cpl/odbccp32/odbccp32.c @@ -19,36 +19,47 @@ CPlApplet(HWND hwndCpl, LPARAM lParam1, LPARAM lParam2) { - if (ODBCProc == NULL) - { - TCHAR szBuffer[MAX_PATH]; + switch (uMsg) + { + case CPL_INIT: + return TRUE; - if (ExpandEnvironmentStrings(_T("%systemroot%\\system32\\odbccp32.dll"), - szBuffer, - sizeof(szBuffer) / sizeof(TCHAR)) > 0) - { - hLibrary = LoadLibrary(szBuffer); - if (hLibrary) - { - ODBCProc = (APPLET_PROC)GetProcAddress(hLibrary, "ODBCCPlApplet"); - } - } - } + case CPL_DBLCLK: + { + if (ODBCProc == NULL) + { + TCHAR szBuffer[MAX_PATH]; - if (ODBCProc) - { - return ODBCProc(hwndCpl, uMsg, lParam1, lParam2); - } - else - { - if(hLibrary) - { - FreeLibrary(hLibrary); - } + if (ExpandEnvironmentStrings(_T("%systemroot%\\system32\\odbccp32.dll"), + szBuffer, + sizeof(szBuffer) / sizeof(TCHAR)) > 0) + { + hLibrary = LoadLibrary(szBuffer); + if (hLibrary) + { + ODBCProc = (APPLET_PROC)GetProcAddress(hLibrary, "ODBCCPlApplet"); + } + } + } - TerminateProcess(GetCurrentProcess(), -1); - return (LONG)-1; - } + if (ODBCProc) + { + return ODBCProc(hwndCpl, uMsg, lParam1, lParam2); + } + else + { + if (hLibrary) + { + FreeLibrary(hLibrary); + } + + TerminateProcess(GetCurrentProcess(), -1); + return (LONG)-1; + } + } + } + + return FALSE; } From ecdfc31590a9dc5198adc41d407985470c8c56fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Sun, 22 Jun 2014 09:37:55 +0000 Subject: [PATCH 216/232] [ODBCCP32]: Whitespace fixes only. svn path=/trunk/; revision=63626 --- reactos/dll/cpl/odbccp32/odbccp32.c | 39 +++++++++++++++-------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/reactos/dll/cpl/odbccp32/odbccp32.c b/reactos/dll/cpl/odbccp32/odbccp32.c index 194ea052467..57f150ad4cb 100644 --- a/reactos/dll/cpl/odbccp32/odbccp32.c +++ b/reactos/dll/cpl/odbccp32/odbccp32.c @@ -15,9 +15,9 @@ HMODULE hLibrary = NULL; LONG CALLBACK CPlApplet(HWND hwndCpl, - UINT uMsg, - LPARAM lParam1, - LPARAM lParam2) + UINT uMsg, + LPARAM lParam1, + LPARAM lParam2) { switch (uMsg) { @@ -66,24 +66,25 @@ CPlApplet(HWND hwndCpl, BOOL WINAPI DllMain(HINSTANCE hinstDLL, - DWORD dwReason, - LPVOID lpReserved) + DWORD dwReason, + LPVOID lpReserved) { - INITCOMMONCONTROLSEX InitControls; - UNREFERENCED_PARAMETER(lpReserved); + INITCOMMONCONTROLSEX InitControls; + UNREFERENCED_PARAMETER(lpReserved); - switch(dwReason) - { - case DLL_PROCESS_ATTACH: - case DLL_THREAD_ATTACH: + switch(dwReason) + { + case DLL_PROCESS_ATTACH: + case DLL_THREAD_ATTACH: + { + InitControls.dwSize = sizeof(INITCOMMONCONTROLSEX); + InitControls.dwICC = ICC_LISTVIEW_CLASSES | ICC_UPDOWN_CLASS | ICC_BAR_CLASSES; + InitCommonControlsEx(&InitControls); - InitControls.dwSize = sizeof(INITCOMMONCONTROLSEX); - InitControls.dwICC = ICC_LISTVIEW_CLASSES | ICC_UPDOWN_CLASS | ICC_BAR_CLASSES; - InitCommonControlsEx(&InitControls); + hApplet = hinstDLL; + break; + } + } - hApplet = hinstDLL; - break; - } - - return TRUE; + return TRUE; } From f48241c5b8fa7f3b13338d6ec8a4e218aed2c751 Mon Sep 17 00:00:00 2001 From: Thomas Faber Date: Sun, 22 Jun 2014 18:33:18 +0000 Subject: [PATCH 217/232] [APPLICATIONS][NEWDEV] - Remove broken function pointer casts svn path=/trunk/; revision=63627 --- reactos/base/applications/calc/winmain.c | 4 ++-- reactos/base/applications/magnify/magnifier.c | 6 +++--- reactos/base/applications/mspaint/dialogs.c | 12 ++++++------ reactos/dll/win32/newdev/wizard.c | 16 ++++++++-------- 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/reactos/base/applications/calc/winmain.c b/reactos/base/applications/calc/winmain.c index 8944790482b..589a453a6ae 100644 --- a/reactos/base/applications/calc/winmain.c +++ b/reactos/base/applications/calc/winmain.c @@ -1626,7 +1626,7 @@ static INT_PTR CALLBACK DlgMainProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) if (IsWindow(calc.hStatWnd)) break; calc.hStatWnd = CreateDialog(calc.hInstance, - MAKEINTRESOURCE(IDD_DIALOG_STAT), hWnd, (DLGPROC)DlgStatProc); + MAKEINTRESOURCE(IDD_DIALOG_STAT), hWnd, DlgStatProc); if (calc.hStatWnd != NULL) { enable_allowed_controls(hWnd, calc.base); SendMessage(calc.hStatWnd, WM_SETFOCUS, 0, 0); @@ -1722,7 +1722,7 @@ int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdL dwLayout = IDD_DIALOG_STANDARD; /* This call will always fail if UNICODE for Win9x */ - if (NULL == CreateDialog(hInstance, MAKEINTRESOURCE(dwLayout), NULL, (DLGPROC)DlgMainProc)) + if (NULL == CreateDialog(hInstance, MAKEINTRESOURCE(dwLayout), NULL, DlgMainProc)) break; while (GetMessage(&msg, NULL, 0, 0)) { diff --git a/reactos/base/applications/magnify/magnifier.c b/reactos/base/applications/magnify/magnifier.c index 8d8bec5b35c..3af6236d46f 100644 --- a/reactos/base/applications/magnify/magnifier.c +++ b/reactos/base/applications/magnify/magnifier.c @@ -166,7 +166,7 @@ BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) if (bShowWarning) { - DialogBox (hInstance, MAKEINTRESOURCE(IDD_WARNINGDIALOG), hMainWnd, (DLGPROC)WarningProc); + DialogBox (hInstance, MAKEINTRESOURCE(IDD_WARNINGDIALOG), hMainWnd, WarningProc); } return TRUE; @@ -375,10 +375,10 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) switch (wmId) { case IDM_OPTIONS: - DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOGOPTIONS), hWnd, (DLGPROC)OptionsProc); + DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOGOPTIONS), hWnd, OptionsProc); break; case IDM_ABOUT: - DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, (DLGPROC)AboutProc); + DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, AboutProc); break; case IDM_EXIT: DestroyWindow(hWnd); diff --git a/reactos/base/applications/mspaint/dialogs.c b/reactos/base/applications/mspaint/dialogs.c index 7a7b4df093b..c0844dd8d9e 100644 --- a/reactos/base/applications/mspaint/dialogs.c +++ b/reactos/base/applications/mspaint/dialogs.c @@ -14,7 +14,7 @@ /* FUNCTIONS ********************************************************/ -LRESULT CALLBACK +INT_PTR CALLBACK MRDlgWinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) @@ -66,10 +66,10 @@ MRDlgWinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) int mirrorRotateDlg() { - return DialogBox(hProgInstance, MAKEINTRESOURCE(IDD_MIRRORROTATE), hMainWnd, (DLGPROC) MRDlgWinProc); + return DialogBox(hProgInstance, MAKEINTRESOURCE(IDD_MIRRORROTATE), hMainWnd, MRDlgWinProc); } -LRESULT CALLBACK +INT_PTR CALLBACK ATTDlgWinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) @@ -203,10 +203,10 @@ ATTDlgWinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) int attributesDlg() { - return DialogBox(hProgInstance, MAKEINTRESOURCE(IDD_ATTRIBUTES), hMainWnd, (DLGPROC) ATTDlgWinProc); + return DialogBox(hProgInstance, MAKEINTRESOURCE(IDD_ATTRIBUTES), hMainWnd, ATTDlgWinProc); } -LRESULT CALLBACK +INT_PTR CALLBACK CHSIZEDlgWinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) @@ -266,5 +266,5 @@ CHSIZEDlgWinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) int changeSizeDlg() { - return DialogBox(hProgInstance, MAKEINTRESOURCE(IDD_STRETCHSKEW), hMainWnd, (DLGPROC) CHSIZEDlgWinProc); + return DialogBox(hProgInstance, MAKEINTRESOURCE(IDD_STRETCHSKEW), hMainWnd, CHSIZEDlgWinProc); } diff --git a/reactos/dll/win32/newdev/wizard.c b/reactos/dll/win32/newdev/wizard.c index 12be7e0dedc..d94d49cd647 100644 --- a/reactos/dll/win32/newdev/wizard.c +++ b/reactos/dll/win32/newdev/wizard.c @@ -1255,49 +1255,49 @@ DisplayWizard( psp.dwFlags = PSP_DEFAULT | PSP_HIDEHEADER; psp.hInstance = hDllInstance; psp.lParam = (LPARAM)DevInstData; - psp.pfnDlgProc = (DLGPROC) WelcomeDlgProc; + psp.pfnDlgProc = WelcomeDlgProc; psp.pszTemplate = MAKEINTRESOURCE(IDD_WELCOMEPAGE); ahpsp[IDD_WELCOMEPAGE] = CreatePropertySheetPage(&psp); /* Create the Select Source page */ psp.dwFlags = PSP_DEFAULT | PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE; - psp.pfnDlgProc = (DLGPROC) CHSourceDlgProc; + psp.pfnDlgProc = CHSourceDlgProc; psp.pszTemplate = MAKEINTRESOURCE(IDD_CHSOURCE); ahpsp[IDD_CHSOURCE] = CreatePropertySheetPage(&psp); /* Create the Search driver page */ psp.dwFlags = PSP_DEFAULT | PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE; - psp.pfnDlgProc = (DLGPROC) SearchDrvDlgProc; + psp.pfnDlgProc = SearchDrvDlgProc; psp.pszTemplate = MAKEINTRESOURCE(IDD_SEARCHDRV); ahpsp[IDD_SEARCHDRV] = CreatePropertySheetPage(&psp); /* Create the Install driver page */ psp.dwFlags = PSP_DEFAULT | PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE; - psp.pfnDlgProc = (DLGPROC) InstallDrvDlgProc; + psp.pfnDlgProc = InstallDrvDlgProc; psp.pszTemplate = MAKEINTRESOURCE(IDD_INSTALLDRV); ahpsp[IDD_INSTALLDRV] = CreatePropertySheetPage(&psp); /* Create the No driver page */ psp.dwFlags = PSP_DEFAULT | PSP_HIDEHEADER; - psp.pfnDlgProc = (DLGPROC) NoDriverDlgProc; + psp.pfnDlgProc = NoDriverDlgProc; psp.pszTemplate = MAKEINTRESOURCE(IDD_NODRIVER); ahpsp[IDD_NODRIVER] = CreatePropertySheetPage(&psp); /* Create the Install failed page */ psp.dwFlags = PSP_DEFAULT | PSP_HIDEHEADER; - psp.pfnDlgProc = (DLGPROC) InstallFailedDlgProc; + psp.pfnDlgProc = InstallFailedDlgProc; psp.pszTemplate = MAKEINTRESOURCE(IDD_INSTALLFAILED); ahpsp[IDD_INSTALLFAILED] = CreatePropertySheetPage(&psp); /* Create the Need reboot page */ psp.dwFlags = PSP_DEFAULT | PSP_HIDEHEADER; - psp.pfnDlgProc = (DLGPROC) NeedRebootDlgProc; + psp.pfnDlgProc = NeedRebootDlgProc; psp.pszTemplate = MAKEINTRESOURCE(IDD_NEEDREBOOT); ahpsp[IDD_NEEDREBOOT] = CreatePropertySheetPage(&psp); /* Create the Finish page */ psp.dwFlags = PSP_DEFAULT | PSP_HIDEHEADER; - psp.pfnDlgProc = (DLGPROC) FinishDlgProc; + psp.pfnDlgProc = FinishDlgProc; psp.pszTemplate = MAKEINTRESOURCE(IDD_FINISHPAGE); ahpsp[IDD_FINISHPAGE] = CreatePropertySheetPage(&psp); From faa29d8704a37a92f06767ea007408a8378b4c38 Mon Sep 17 00:00:00 2001 From: Thomas Faber Date: Sun, 22 Jun 2014 18:35:17 +0000 Subject: [PATCH 218/232] [CMAKE] - Correctly include the license for CMakeParseArguments.cmake svn path=/trunk/; revision=63628 --- reactos/cmake/CMakeParseArguments.cmake | 33 +++++++++++++++++++------ 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/reactos/cmake/CMakeParseArguments.cmake b/reactos/cmake/CMakeParseArguments.cmake index 7ce4c49ae5b..47b73f820e7 100644 --- a/reactos/cmake/CMakeParseArguments.cmake +++ b/reactos/cmake/CMakeParseArguments.cmake @@ -63,15 +63,34 @@ #============================================================================= # Copyright 2010 Alexander Neundorf # -# Distributed under the OSI-approved BSD License (the "License"); -# see accompanying file Copyright.txt for details. +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: # -# This software is distributed WITHOUT ANY WARRANTY; without even the -# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the License for more information. +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# * Neither the names of Kitware, Inc., the Insight Software Consortium, +# nor the names of their contributors may be used to endorse or promote +# products derived from this software without specific prior written +# permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #============================================================================= -# (To distribute this file outside of CMake, substitute the full -# License text for the above reference.) if(__CMAKE_PARSE_ARGUMENTS_INCLUDED) From ce303598e973ef03d3a5c070f077f8c8253fbdd5 Mon Sep 17 00:00:00 2001 From: Thomas Faber Date: Sun, 22 Jun 2014 18:40:21 +0000 Subject: [PATCH 219/232] [NTDLL:LDR] - Fix buffer size calculation in LdrpSearchPath svn path=/trunk/; revision=63629 --- reactos/dll/ntdll/ldr/ldrutils.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/dll/ntdll/ldr/ldrutils.c b/reactos/dll/ntdll/ldr/ldrutils.c index 3cc7608417e..2efeafd009f 100644 --- a/reactos/dll/ntdll/ldr/ldrutils.c +++ b/reactos/dll/ntdll/ldr/ldrutils.c @@ -1820,7 +1820,7 @@ LdrpSearchPath(IN PWCHAR *SearchPath, /* FIXME: Handle relative case semicolon-lookup here */ /* Calculate length */ - Length += (ULONG)wcslen(DllName) + sizeof(UNICODE_NULL); + Length += (ULONG)wcslen(DllName) + 1; if (Length > UNICODE_STRING_MAX_CHARS) { /* Too long, fail */ From 1da67b8fcd3ac3cf34d6abdc73ba91095701e475 Mon Sep 17 00:00:00 2001 From: Thomas Faber Date: Sun, 22 Jun 2014 18:44:21 +0000 Subject: [PATCH 220/232] [RTL] - Apply Wine commit 5b0fcb06 (ntdll: Avoid crashing on an empty resource directory.) by Alexandre Julliard svn path=/trunk/; revision=63630 --- reactos/dll/ntdll/rtl/libsupp.c | 1 + reactos/ntoskrnl/rtl/libsupp.c | 1 + 2 files changed, 2 insertions(+) diff --git a/reactos/dll/ntdll/rtl/libsupp.c b/reactos/dll/ntdll/rtl/libsupp.c index 69d58f36f89..22c6811b91b 100644 --- a/reactos/dll/ntdll/rtl/libsupp.c +++ b/reactos/dll/ntdll/rtl/libsupp.c @@ -430,6 +430,7 @@ NTSTATUS find_entry( PVOID BaseAddress, LDR_RESOURCE_INFO *info, root = RtlImageDirectoryEntryToData( BaseAddress, TRUE, IMAGE_DIRECTORY_ENTRY_RESOURCE, &size ); if (!root) return STATUS_RESOURCE_DATA_NOT_FOUND; + if (size < sizeof(*resdirptr)) return STATUS_RESOURCE_DATA_NOT_FOUND; resdirptr = root; if (!level--) goto done; diff --git a/reactos/ntoskrnl/rtl/libsupp.c b/reactos/ntoskrnl/rtl/libsupp.c index b83519ed289..b5099a5f2de 100644 --- a/reactos/ntoskrnl/rtl/libsupp.c +++ b/reactos/ntoskrnl/rtl/libsupp.c @@ -695,6 +695,7 @@ NTSTATUS find_entry( PVOID BaseAddress, LDR_RESOURCE_INFO *info, root = RtlImageDirectoryEntryToData( BaseAddress, TRUE, IMAGE_DIRECTORY_ENTRY_RESOURCE, &size ); if (!root) return STATUS_RESOURCE_DATA_NOT_FOUND; + if (size < sizeof(*resdirptr)) return STATUS_RESOURCE_DATA_NOT_FOUND; resdirptr = root; if (!level--) goto done; From 6582b51c46a7b78ce49a067ac4cc3dc45a9266bc Mon Sep 17 00:00:00 2001 From: Thomas Faber Date: Sun, 22 Jun 2014 18:48:15 +0000 Subject: [PATCH 221/232] [UNIATA] - Fix page length calculation in IdeSendCommand/SCSIOP_MODE_SENSE case. Should be pushed upstream(TM). - Remove outdated file svn path=/trunk/; revision=63631 --- reactos/drivers/storage/ide/uniata/id_ata.cpp | 2 +- .../storage/ide/uniata/warningfixes.diff | 589 ------------------ 2 files changed, 1 insertion(+), 590 deletions(-) delete mode 100644 reactos/drivers/storage/ide/uniata/warningfixes.diff diff --git a/reactos/drivers/storage/ide/uniata/id_ata.cpp b/reactos/drivers/storage/ide/uniata/id_ata.cpp index 122431b1447..fc3edfe180b 100644 --- a/reactos/drivers/storage/ide/uniata/id_ata.cpp +++ b/reactos/drivers/storage/ide/uniata/id_ata.cpp @@ -7820,7 +7820,7 @@ default_no_prep: } else { RtlZeroMemory(modeData, sizeof(MODE_POWER_CONDITION_PAGE)); modeData->PageCode = MODE_PAGE_POWER_CONDITION; - modeData->PageLength = sizeof(MODE_PAGE_POWER_CONDITION)-sizeof(MODE_PARAMETER_HEADER); + modeData->PageLength = sizeof(MODE_POWER_CONDITION_PAGE)-sizeof(MODE_PARAMETER_HEADER); modeData->Byte3.Fields.Idle = LunExt->PowerState <= StartStop_Power_Idle; modeData->Byte3.Fields.Standby = LunExt->PowerState == StartStop_Power_Standby; Srb->DataTransferLength = sizeof(MODE_POWER_CONDITION_PAGE); diff --git a/reactos/drivers/storage/ide/uniata/warningfixes.diff b/reactos/drivers/storage/ide/uniata/warningfixes.diff deleted file mode 100644 index db828d8b556..00000000000 --- a/reactos/drivers/storage/ide/uniata/warningfixes.diff +++ /dev/null @@ -1,589 +0,0 @@ -Index: atapi.h -=================================================================== ---- atapi.h (revision 38451) -+++ atapi.h (working copy) -@@ -138,6 +138,10 @@ - - #else // _DEBUG - -+#ifdef KdPrint -+#undef KdPrint -+#endif -+ - #define PRINT_PREFIX "UniATA: " - - //#define KdPrint3(_x_) {if(LOG_ON_RAISED_IRQL_W2K || MajorVersion < 0x05 || KeGetCurrentIrql() <= 2){/*DbgPrint("%x: ", PsGetCurrentThread()) ;*/ DbgPrint _x_ ; if(g_LogToDisplay){ PrintNtConsole _x_ ;} }} -@@ -1063,8 +1067,8 @@ - - ULONG - AtapiParseArgumentString( -- IN PCHAR String, -- IN PCHAR KeyWord -+ IN PCCH String, -+ IN PCCH KeyWord - ); - - BOOLEAN -@@ -1202,15 +1206,15 @@ - IN PVOID HwDeviceExtension, - IN ULONG chan, - IN ULONG dev, -- IN PWSTR Name, -+ IN PCWSTR Name, - IN ULONG Default - ); - - extern ULONG - AtapiRegCheckParameterValue( - IN PVOID HwDeviceExtension, -- IN PWSTR PathSuffix, -- IN PWSTR Name, -+ IN PCWSTR PathSuffix, -+ IN PCWSTR Name, - IN ULONG Default - ); - -@@ -1220,7 +1224,7 @@ - VOID - _cdecl - _PrintNtConsole( -- PCHAR DebugMessage, -+ PCCH DebugMessage, - ... - ); - -Index: id_sata.cpp -=================================================================== ---- id_sata.cpp (revision 38451) -+++ id_sata.cpp (working copy) -@@ -7,7 +7,7 @@ - ) - { - PHW_DEVICE_EXTENSION deviceExtension = (PHW_DEVICE_EXTENSION)HwDeviceExtension; -- ULONG Channel = deviceExtension->Channel + lChannel; -+ //ULONG Channel = deviceExtension->Channel + lChannel; - PHW_CHANNEL chan = &deviceExtension->chan[lChannel]; - SATA_SSTATUS_REG SStatus; - ULONG i; -@@ -126,7 +126,7 @@ - { - PHW_DEVICE_EXTENSION deviceExtension = (PHW_DEVICE_EXTENSION)HwDeviceExtension; - PHW_CHANNEL chan = &deviceExtension->chan[lChannel]; -- ULONG ChipFlags = deviceExtension->HwFlags & CHIPFLAG_MASK; -+ //ULONG ChipFlags = deviceExtension->HwFlags & CHIPFLAG_MASK; - SATA_SSTATUS_REG SStatus; - SATA_SERROR_REG SError; - -Index: ntddk_ex.h -=================================================================== ---- ntddk_ex.h (revision 38451) -+++ ntddk_ex.h (working copy) -@@ -1,15 +1,12 @@ - #ifndef __NTDDK_EX__H__ - #define __NTDDK_EX__H__ - --#ifndef __REACTOS__ -+#ifdef ASSERT - #undef ASSERT --#define ASSERT --#else --#undef ASSERT --#define ASSERT //(x) if (!(x)) {RtlAssert("#x",__FILE__,__LINE__, ""); } --#endif //__REACTOS__ -+#define ASSERT(x) ((void)0) -+// #define ASSERT(x) if (!(x)) { RtlAssert("#x",__FILE__,__LINE__, ""); } -+#endif - -- - #ifndef FILE_CHARACTERISTIC_PNP_DEVICE // DDK 2003 - - #define FILE_CHARACTERISTIC_PNP_DEVICE 0x00000800 -Index: id_dma.cpp -=================================================================== ---- id_dma.cpp (revision 38451) -+++ id_dma.cpp (working copy) -@@ -219,7 +219,7 @@ - PHW_CHANNEL chan = &(deviceExtension->chan[lChannel]); - PATA_REQ AtaReq = (PATA_REQ)(Srb->SrbExtension); - BOOLEAN use_DB_IO = FALSE; -- BOOLEAN use_AHCI = FALSE; -+ //BOOLEAN use_AHCI = FALSE; - ULONG orig_count = count; - ULONG max_entries = (deviceExtension->HwFlags & UNIATA_AHCI) ? ATA_AHCI_DMA_ENTRIES : ATA_DMA_ENTRIES; - -@@ -281,7 +281,7 @@ - if(!dma_count || ((LONG)(dma_base) == -1)) { - KdPrint2((PRINT_PREFIX "AtapiDmaSetup: No 1st block\n" )); - //AtaReq->dma_base = NULL; -- AtaReq->ahci_base64 = NULL; -+ AtaReq->ahci_base64 = 0; - return FALSE; - } - -@@ -303,7 +303,7 @@ - if (i >= max_entries) { - KdPrint2((PRINT_PREFIX "too many segments in DMA table\n" )); - //AtaReq->dma_base = NULL; -- AtaReq->ahci_base64 = NULL; -+ AtaReq->ahci_base64 = 0; - return FALSE; - } - KdPrint2((PRINT_PREFIX " get Phys(data[n]=%x)\n", data )); -@@ -321,7 +321,7 @@ - } else - if(!dma_count || !dma_base || ((LONG)(dma_base) == -1)) { - //AtaReq->dma_base = NULL; -- AtaReq->ahci_base64 = NULL; -+ AtaReq->ahci_base64 = 0; - KdPrint2((PRINT_PREFIX "AtapiDmaSetup: No NEXT block\n" )); - return FALSE; - } -@@ -596,7 +596,7 @@ - ) - { - PHW_LU_EXTENSION LunExt = &(deviceExtension->lun[ldev]); -- CHAR apiomode; -+ SCHAR apiomode; - - apiomode = (CHAR)AtaPioMode(&(LunExt->IdentifyData)); - -@@ -612,7 +612,7 @@ - } - - if((deviceExtension->HbaCtrlFlags & HBAFLAGS_DMA_DISABLED_LBA48) && -- (AtaReq->lba >= ATA_MAX_LBA28) && -+ (AtaReq->lba >= (LONGLONG)ATA_MAX_LBA28) && - (LunExt->TransferMode > ATA_PIO5) ) { - KdPrint2((PRINT_PREFIX - "AtapiDmaReinit: FORCE_DOWNRATE on Device %d for LBA48\n", ldev & 1)); -@@ -623,7 +623,7 @@ - if(AtaReq->Flags & REQ_FLAG_FORCE_DOWNRATE) { - KdPrint2((PRINT_PREFIX - "AtapiDmaReinit: FORCE_DOWNRATE on Device %d\n", ldev & 1)); -- if(AtaReq->lba >= ATA_MAX_LBA28) { -+ if(AtaReq->lba >= (LONGLONG)ATA_MAX_LBA28) { - limit_lba48: - LunExt->DeviceFlags |= REQ_FLAG_FORCE_DOWNRATE_LBA48; - limit_pio: -@@ -754,9 +754,9 @@ - IN ULONG DeviceNumber, - IN ULONG lChannel, // logical channel, - // is always 0 except simplex-only controllers -- IN CHAR apiomode, -- IN CHAR wdmamode, -- IN CHAR udmamode -+ IN SCHAR apiomode, -+ IN SCHAR wdmamode, -+ IN SCHAR udmamode - ) - { - PHW_DEVICE_EXTENSION deviceExtension = (PHW_DEVICE_EXTENSION)HwDeviceExtension; -@@ -1488,7 +1488,7 @@ - AtaSetTransferMode(deviceExtension, DeviceNumber, lChannel, LunExt, ATA_PIO0 + apiomode); - - SetPciConfig1(mreg, mode | (mask & 0x11)); -- SetPciConfig2(ureg - 0x8, sil_pio_modes[i]); -+ SetPciConfig2(ureg - 0x8, sil_pio_modes[apiomode]); - return; - - } else { -@@ -1538,7 +1538,7 @@ - /*******/ - /* SiS */ - /*******/ -- PULONG sis_modes; -+ PULONG sis_modes = NULL; - static const ULONG sis_modes_new133[] = - { 0x28269008, 0x0c266008, 0x04263008, 0x0c0a3008, 0x05093008, - 0x22196008, 0x0c0a3008, 0x05093008, 0x050939fc, 0x050936ac, -@@ -1553,9 +1553,9 @@ - { 0x00cb, 0x0067, 0x0044, 0x0033, 0x0031, 0x0044, 0x0033, 0x0031, - 0x8b31, 0x8731, 0x8531, 0x8431, 0x8231, 0x8131 }; - -- ULONG reg; -+ ULONG reg = 0; - UCHAR reg57; -- ULONG reg_size; -+ ULONG reg_size = 0; - ULONG offs; - - switch(ChipType) { -@@ -1731,8 +1731,8 @@ - AtaSetTransferMode(deviceExtension, DeviceNumber, lChannel, LunExt, ATA_PIO0 + apiomode); - ChangePciConfig1(0x50, a | (1 << (dev + 3)) ); - GetPciConfig1(0x54 + offset, reg54); -- if(reg54 < chtiming[i]) { -- SetPciConfig1(0x54 + offset, chtiming[i]); -+ if(reg54 < chtiming[apiomode]) { -+ SetPciConfig1(0x54 + offset, chtiming[apiomode]); - } - return; - } -@@ -1901,7 +1901,7 @@ - ULONG ChipType = deviceExtension->HwFlags & CHIPTYPE_MASK; - //ULONG ChipFlags = deviceExtension->HwFlags & CHIPFLAG_MASK; - -- ULONG timing; -+ ULONG timing = 0; - - if(mode == ATA_PIO5) - mode = ATA_PIO4; -Index: id_badblock.cpp -=================================================================== ---- id_badblock.cpp (revision 38451) -+++ id_badblock.cpp (working copy) -@@ -159,7 +159,11 @@ - L"UniATA\\Parameters\\BadBlocks", - QueryTable, 0, 0); - -+#ifdef _DEBUG - KdPrint(( "InitBadBlocks returned: %#x\n", status)); -+#else -+ UNREFERENCED_PARAMETER(status); -+#endif - } else { - - KdPrint(( "InitBadBlocks local\n")); -Index: id_init.cpp -=================================================================== ---- id_init.cpp (revision 38451) -+++ id_init.cpp (working copy) -@@ -52,11 +52,11 @@ - ) - { - PHW_DEVICE_EXTENSION deviceExtension = (PHW_DEVICE_EXTENSION)HwDeviceExtension; -- ULONG slotNumber = deviceExtension->slotNumber; -- ULONG SystemIoBusNumber = deviceExtension->SystemIoBusNumber; -+ //ULONG slotNumber = deviceExtension->slotNumber; -+ //ULONG SystemIoBusNumber = deviceExtension->SystemIoBusNumber; - ULONG VendorID = deviceExtension->DevID & 0xffff; -- ULONG DeviceID = (deviceExtension->DevID >> 16) & 0xffff; -- ULONG RevID = deviceExtension->RevID; -+ //ULONG DeviceID = (deviceExtension->DevID >> 16) & 0xffff; -+ //ULONG RevID = deviceExtension->RevID; - ULONG ChipType = deviceExtension->HwFlags & CHIPTYPE_MASK; - ULONG ChipFlags= deviceExtension->HwFlags & CHIPFLAG_MASK; - -@@ -216,7 +216,7 @@ - PCI_DEV_HW_SPEC_BM( 0730, 1039, 0x00, ATA_UDMA5, "SiS 730" , SIS100OLD ), - - PCI_DEV_HW_SPEC_BM( 0646, 1039, 0x00, ATA_UDMA6, "SiS 645DX", SIS133NEW ), --/* PCI_DEV_HW_SPEC_BM( 0645, 1039, 0x00, ATA_UDMA6, "SiS 645" , SIS133NEW ), -+/* PCI_DEV_HW_SPEC_BM( 0645, 1039, 0x00, ATA_UDMA6, "SiS 645" , SIS133NEW ),*/ - /* PCI_DEV_HW_SPEC_BM( 0640, 1039, 0x00, ATA_UDMA4, "SiS 640" , SIS_SOUTH ),*/ - PCI_DEV_HW_SPEC_BM( 0635, 1039, 0x00, ATA_UDMA5, "SiS 635" , SIS100NEW ), - PCI_DEV_HW_SPEC_BM( 0633, 1039, 0x00, ATA_UDMA5, "SiS 633" , SIS100NEW ), -@@ -419,7 +419,7 @@ - BaseIoAddressBM = AtapiGetIoRange(HwDeviceExtension, ConfigInfo, pciData, SystemIoBusNumber, - 4, 0, deviceExtension->NumberChannels*sizeof(IDE_BUSMASTER_REGISTERS)); - for(c=0; cNumberChannels; c++) { -- ULONG unit01 = (c & 1); -+ //ULONG unit01 = (c & 1); - ULONG unit10 = (c & 2); - chan = &deviceExtension->chan[c]; - -@@ -987,7 +987,7 @@ - IN ULONG slotNumber - ) - { -- PHW_DEVICE_EXTENSION deviceExtension = (PHW_DEVICE_EXTENSION)HwDeviceExtension; -+ //PHW_DEVICE_EXTENSION deviceExtension = (PHW_DEVICE_EXTENSION)HwDeviceExtension; - PCI_COMMON_CONFIG pciData; - ULONG funcNumber; - ULONG busDataRead; -@@ -1039,7 +1039,7 @@ - IN ULONG c - ) - { -- PHW_DEVICE_EXTENSION deviceExtension = (PHW_DEVICE_EXTENSION)HwDeviceExtension; -+ //PHW_DEVICE_EXTENSION deviceExtension = (PHW_DEVICE_EXTENSION)HwDeviceExtension; - PCI_COMMON_CONFIG pciData; - ULONG funcNumber; - ULONG busDataRead; -@@ -1174,7 +1174,7 @@ - ULONG slotNumber = deviceExtension->slotNumber; - ULONG SystemIoBusNumber = deviceExtension->SystemIoBusNumber; - -- ULONG ChipType = deviceExtension->HwFlags & CHIPTYPE_MASK; -+ //ULONG ChipType = deviceExtension->HwFlags & CHIPTYPE_MASK; - PHW_CHANNEL chan; - ULONG c; // logical channel (for Compatible Mode controllers) - UCHAR tmp8; -@@ -1332,7 +1332,9 @@ - ULONG slotNumber = deviceExtension->slotNumber; - ULONG SystemIoBusNumber = deviceExtension->SystemIoBusNumber; - ULONG VendorID = deviceExtension->DevID & 0xffff; -+#ifdef _DEBUG - ULONG DeviceID = (deviceExtension->DevID >> 16) & 0xffff; -+#endif - ULONG RevID = deviceExtension->RevID; - // ULONG i; - // BUSMASTER_CONTROLLER_INFORMATION* DevTypeInfo; -Index: id_ata.cpp -=================================================================== ---- id_ata.cpp (revision 38451) -+++ id_ata.cpp (working copy) -@@ -1864,7 +1864,9 @@ - ULONG slotNumber = deviceExtension->slotNumber; - ULONG SystemIoBusNumber = deviceExtension->SystemIoBusNumber; - ULONG VendorID = deviceExtension->DevID & 0xffff; -+#ifdef _DEBUG - ULONG DeviceID = (deviceExtension->DevID >> 16) & 0xffff; -+#endif - //ULONG RevID = deviceExtension->RevID; - ULONG ChipFlags = deviceExtension->HwFlags & CHIPFLAG_MASK; - UCHAR tmp8; -@@ -2859,12 +2861,12 @@ - --*/ - ULONG - AtapiParseArgumentString( -- IN PCHAR String, -- IN PCHAR KeyWord -+ IN PCCH String, -+ IN PCCH KeyWord - ) - { -- PCHAR cptr; -- PCHAR kptr; -+ PCCH cptr; -+ PCCH kptr; - ULONG value; - ULONG stringLength = 0; - ULONG keyWordLength = 0; -@@ -2877,24 +2879,15 @@ - return 0; - } - -- // Calculate the string length and lower case all characters. -+ // Calculate the string length. - cptr = String; -- while (*cptr) { -- if (*cptr >= 'A' && *cptr <= 'Z') { -- *cptr = *cptr + ('a' - 'A'); -- } -- cptr++; -+ while (*cptr++) { - stringLength++; - } - -- // Calculate the keyword length and lower case all characters. -- cptr = KeyWord; -- while (*cptr) { -- -- if (*cptr >= 'A' && *cptr <= 'Z') { -- *cptr = *cptr + ('a' - 'A'); -- } -- cptr++; -+ // Calculate the keyword length. -+ kptr = KeyWord; -+ while (*kptr++) { - keyWordLength++; - } - -@@ -2920,18 +2913,21 @@ - } - - kptr = KeyWord; -- while (*cptr++ == *kptr++) { -+ while ((*cptr == *kptr) || -+ (*cptr <= 'Z' && *cptr + ('a' - 'A') == *kptr) || -+ (*cptr >= 'a' && *cptr - ('a' - 'A') == *kptr)) { -+ cptr++; -+ kptr++; - -- if (*(cptr - 1) == '\0') { -+ if (*cptr == '\0') { - // end of string - return 0; - } - } - -- if (*(kptr - 1) == '\0') { -+ if (*kptr == '\0') { - - // May have a match backup and check for blank or equals. -- cptr--; - while (*cptr == ' ' || *cptr == '\t') { - cptr++; - } -@@ -2967,7 +2963,7 @@ - } - - value = 0; -- if ((*cptr == '0') && (*(cptr + 1) == 'x')) { -+ if ((*cptr == '0') && ((*(cptr + 1) == 'x') || (*(cptr + 1) == 'X'))) { - // Value is in Hex. Skip the "0x" - cptr += 2; - for (index = 0; *(cptr + index); index++) { -@@ -2983,6 +2979,8 @@ - } else { - if ((*(cptr + index) >= 'a') && (*(cptr + index) <= 'f')) { - value = (16 * value) + (*(cptr + index) - 'a' + 10); -+ } else if ((*(cptr + index) >= 'A') && (*(cptr + index) <= 'F')) { -+ value = (16 * value) + (*(cptr + index) - 'A' + 10); - } else { - // Syntax error, return not found. - return 0; -@@ -8752,10 +8750,10 @@ - ULONG - AtapiRegCheckDevLunValue( - IN PVOID HwDeviceExtension, -- IN PWCHAR NamePrefix, -+ IN PCWCH NamePrefix, - IN ULONG chan, - IN ULONG dev, -- IN PWSTR Name, -+ IN PCWSTR Name, - IN ULONG Default - ) - { -@@ -8822,7 +8820,7 @@ - IN PVOID HwDeviceExtension, - IN ULONG chan, - IN ULONG dev, -- IN PWSTR Name, -+ IN PCWSTR Name, - IN ULONG Default - ) - { -@@ -8940,8 +8938,8 @@ - ULONG - AtapiRegCheckParameterValue( - IN PVOID HwDeviceExtension, -- IN PWSTR PathSuffix, -- IN PWSTR Name, -+ IN PCWSTR PathSuffix, -+ IN PCWSTR Name, - IN ULONG Default - ) - { -@@ -9108,7 +9106,7 @@ - VOID - _cdecl - _PrintNtConsole( -- PCHAR DebugMessage, -+ PCCH DebugMessage, - ... - ) - { -Index: id_probe.cpp -=================================================================== ---- id_probe.cpp (revision 38451) -+++ id_probe.cpp (working copy) -@@ -76,7 +76,6 @@ - VOID - AtapiDoNothing(VOID) - { -- ULONG i = 0; - return; - } // end AtapiDoNothing() - -@@ -504,8 +503,8 @@ - /* if(known) { - RtlCopyMemory(newBMListPtr, (PVOID)&(BusMasterAdapters[i]), sizeof(BUSMASTER_CONTROLLER_INFORMATION)); - } else {*/ -- sprintf((PCHAR)vendorStrPtr, "%4.4x", VendorID); -- sprintf((PCHAR)deviceStrPtr, "%4.4x", DeviceID); -+ sprintf((PCHAR)vendorStrPtr, "%4.4lx", VendorID); -+ sprintf((PCHAR)deviceStrPtr, "%4.4lx", DeviceID); - - RtlCopyMemory(&(newBMListPtr->VendorIdStr), (PCHAR)vendorStrPtr, 4); - RtlCopyMemory(&(newBMListPtr->DeviceIdStr), (PCHAR)deviceStrPtr, 4); -@@ -874,7 +873,11 @@ - BOOLEAN found = FALSE; - BOOLEAN MasterDev; - BOOLEAN simplexOnly = FALSE; -+#ifndef UNIATA_CORE -+#ifdef UNIATA_INIT_ON_PROBE - BOOLEAN skip_find_dev = FALSE; -+#endif -+#endif - BOOLEAN AltInit = FALSE; - - SCSI_PHYSICAL_ADDRESS IoBasePort1; -@@ -1712,7 +1715,7 @@ - ) - { - PHW_DEVICE_EXTENSION deviceExtension = (PHW_DEVICE_EXTENSION)HwDeviceExtension; -- PHW_CHANNEL chan = NULL; -+ //PHW_CHANNEL chan = NULL; - // this buffer must be global for UNIATA_CORE build - PCI_COMMON_CONFIG pciData; - -@@ -1743,8 +1746,8 @@ - BOOLEAN found = FALSE; - BOOLEAN MasterDev; - BOOLEAN simplexOnly = FALSE; -- BOOLEAN skip_find_dev = FALSE; -- BOOLEAN AltInit = FALSE; -+ //BOOLEAN skip_find_dev = FALSE; -+ //BOOLEAN AltInit = FALSE; - - PIDE_BUSMASTER_REGISTERS BaseIoAddressBM_0 = NULL; - -@@ -1797,7 +1800,7 @@ - &pciData, - PCI_COMMON_HDR_LENGTH); - -- if (busDataRead < PCI_COMMON_HDR_LENGTH) { -+ if (busDataRead < (ULONG)PCI_COMMON_HDR_LENGTH) { - KdPrint2((PRINT_PREFIX "busDataRead < PCI_COMMON_HDR_LENGTH => SP_RETURN_ERROR\n")); - goto exit_error; - } -@@ -2207,7 +2210,7 @@ - PHW_DEVICE_EXTENSION deviceExtension = (PHW_DEVICE_EXTENSION)HwDeviceExtension; - PHW_CHANNEL chan; - PULONG adapterCount = (PULONG)Context; -- PUCHAR ioSpace; -+ PUCHAR ioSpace = NULL; - ULONG i; - ULONG irq=0; - ULONG portBase; -@@ -2217,7 +2220,7 @@ - BOOLEAN preConfig = FALSE; - // - PIDE_REGISTERS_1 BaseIoAddress1; -- PIDE_REGISTERS_2 BaseIoAddress2; -+ PIDE_REGISTERS_2 BaseIoAddress2 = NULL; - - // The following table specifies the ports to be checked when searching for - // an IDE controller. A zero entry terminates the search. -Index: bm_devs.h -=================================================================== ---- bm_devs.h (revision 38451) -+++ bm_devs.h (working copy) -@@ -482,7 +482,7 @@ - { #idlo, 4, 0x##idlo, #idhi, 4, 0x##idhi, rev, mode, name, flags} - #else - #define PCI_DEV_HW_SPEC_BM(idhi, idlo, rev, mode, name, flags) \ -- { #idlo, 4, 0x##idlo, #idhi, 4, 0x##idhi, rev, mode, NULL, flags} -+ { (PCHAR) #idlo, 4, 0x##idlo, (PCHAR) #idhi, 4, 0x##idhi, rev, mode, NULL, flags} - #endif - - #define BMLIST_TERMINATOR (0xffffffffL) -Index: bsmaster.h -=================================================================== ---- bsmaster.h (revision 38451) -+++ bsmaster.h (working copy) -@@ -987,7 +987,7 @@ - BOOLEAN opt_AtapiDmaRawRead; // default TRUE - BOOLEAN opt_AtapiDmaReadWrite; // default TRUE - -- PCHAR FullDevName; -+ PCCH FullDevName; - - } HW_DEVICE_EXTENSION, *PHW_DEVICE_EXTENSION; - -@@ -1172,9 +1172,9 @@ - IN ULONG DeviceNumber, - IN ULONG lChannel, // logical channel, - // is always 0 except simplex-only controllers -- IN CHAR apiomode, -- IN CHAR wdmamode, -- IN CHAR udmamode -+ IN SCHAR apiomode, -+ IN SCHAR wdmamode, -+ IN SCHAR udmamode - ); - - extern BOOLEAN NTAPI From 1fd39b3a08d345185ebfe892ff174332c6b30e7a Mon Sep 17 00:00:00 2001 From: Thomas Faber Date: Sun, 22 Jun 2014 18:51:11 +0000 Subject: [PATCH 222/232] [WS2_32] - Correctly handle port 0 in getaddrinfo - Stub numeric port case of getnameinfo svn path=/trunk/; revision=63632 --- reactos/dll/win32/ws2_32/misc/ns.c | 5 +++-- reactos/dll/win32/ws2_32/misc/stubs.c | 11 +++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/reactos/dll/win32/ws2_32/misc/ns.c b/reactos/dll/win32/ws2_32/misc/ns.c index 9c37bbcf9ff..1ac0bc83811 100644 --- a/reactos/dll/win32/ws2_32/misc/ns.c +++ b/reactos/dll/win32/ws2_32/misc/ns.c @@ -1596,6 +1596,7 @@ getaddrinfo(const char FAR * nodename, struct addrinfo *ret = NULL, *ai; ULONG addr; USHORT port; + PCHAR pc; struct servent *se; char *proto; LPPROTOENT pent; @@ -1624,9 +1625,9 @@ getaddrinfo(const char FAR * nodename, if (servname) { /* converting port number */ - port = strtoul(servname, NULL, 10); + port = strtoul(servname, &pc, 10); /* service name was specified? */ - if (port == 0) + if (*pc != ANSI_NULL) { /* protocol was specified? */ if (hints && hints->ai_protocol) diff --git a/reactos/dll/win32/ws2_32/misc/stubs.c b/reactos/dll/win32/ws2_32/misc/stubs.c index de16a1c2125..edcfe005095 100644 --- a/reactos/dll/win32/ws2_32/misc/stubs.c +++ b/reactos/dll/win32/ws2_32/misc/stubs.c @@ -11,6 +11,7 @@ #include "ws2_32.h" #include +#include /* * @implemented @@ -895,6 +896,16 @@ getnameinfo(const struct sockaddr FAR * sa, DWORD servlen, INT flags) { + if (!host && serv && flags & NI_NUMERICSERV) + { + const struct sockaddr_in *sa_in = (const struct sockaddr_in *)sa; + if (salen >= sizeof(*sa_in) && sa->sa_family == AF_INET) + { + StringCbPrintfA(serv, servlen, "%u", sa_in->sin_port); + return 0; + } + } + UNIMPLEMENTED WSASetLastError(WSASYSCALLFAILURE); From 9e0c44c18da3f7e308a6953d5788d440e38c7b3b Mon Sep 17 00:00:00 2001 From: Thomas Faber Date: Mon, 23 Jun 2014 15:21:13 +0000 Subject: [PATCH 223/232] [ADVAPI32] - Do not use the upper byte of RtlRandom's result in RtlGenRandom, since the function only generates 31 bits. Should fix UuidCreate test in rpcrt4:rpc. svn path=/trunk/; revision=63633 --- reactos/dll/win32/advapi32/misc/sysfunc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reactos/dll/win32/advapi32/misc/sysfunc.c b/reactos/dll/win32/advapi32/misc/sysfunc.c index b8fc700b076..12713ddc945 100644 --- a/reactos/dll/win32/advapi32/misc/sysfunc.c +++ b/reactos/dll/win32/advapi32/misc/sysfunc.c @@ -607,9 +607,9 @@ SystemFunction036(PVOID pbBuffer, ULONG dwLen) do { /* Get each byte from the pseudo random number and store it in the buffer */ - *pBuffer = (BYTE)(uPseudoRandom >> 8 * (dwLen % 4) & 0xFF); + *pBuffer = (BYTE)(uPseudoRandom >> 8 * (dwLen % 3) & 0xFF); ++pBuffer; - } while(--dwLen % 4); + } while(--dwLen % 3); } while(dwLen); return TRUE; From 63861e09a4ca21d122337ab4bf1ce6b3893772cc Mon Sep 17 00:00:00 2001 From: Thomas Faber Date: Mon, 23 Jun 2014 20:30:54 +0000 Subject: [PATCH 224/232] [NTDLL:LDR] - Actually use DPFLTR_LDR_ID in debug prints instead of a magic value and a comment - Use RtlInitEmptyUnicodeString where appropriate svn path=/trunk/; revision=63635 --- reactos/dll/ntdll/include/ntdll.h | 2 +- reactos/dll/ntdll/ldr/ldrapi.c | 14 ++++++------ reactos/dll/ntdll/ldr/ldrutils.c | 36 +++++++++++++++---------------- 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/reactos/dll/ntdll/include/ntdll.h b/reactos/dll/ntdll/include/ntdll.h index a0e8f312e09..d4fe4969bb8 100644 --- a/reactos/dll/ntdll/include/ntdll.h +++ b/reactos/dll/ntdll/include/ntdll.h @@ -27,11 +27,11 @@ #include #include #include +#include #define NTOS_MODE_USER #include #include #include -#include #include #include #include diff --git a/reactos/dll/ntdll/ldr/ldrapi.c b/reactos/dll/ntdll/ldr/ldrapi.c index 3e094630916..ec1ee9d10b4 100644 --- a/reactos/dll/ntdll/ldr/ldrapi.c +++ b/reactos/dll/ntdll/ldr/ldrapi.c @@ -322,10 +322,8 @@ LdrLoadDll(IN PWSTR SearchPath OPTIONAL, PTEB Teb = NtCurrentTeb(); /* Initialize the strings */ + RtlInitEmptyUnicodeString(&DllString1, StringBuffer, sizeof(StringBuffer)); RtlInitEmptyUnicodeString(&DllString2, NULL, 0); - DllString1.Buffer = StringBuffer; - DllString1.Length = 0; - DllString1.MaximumLength = sizeof(StringBuffer); /* Check if the SxS Assemblies specify another file */ Status = RtlDosApplyFileIsolationRedirection_Ustr(TRUE, @@ -410,8 +408,7 @@ LdrLoadDll(IN PWSTR SearchPath OPTIONAL, (Status != STATUS_OBJECT_NAME_NOT_FOUND) && (Status != STATUS_DLL_INIT_FAILED)) { - // 85 == DPFLTR_LDR_ID; - DbgPrintEx(85, + DbgPrintEx(DPFLTR_LDR_ID, DPFLTR_WARNING_LEVEL, "LDR: %s - failing because LdrpLoadDll(%wZ) returned status %x\n", __FUNCTION__, @@ -503,8 +500,11 @@ LdrFindEntryForAddress(PVOID Address, } /* Nothing found */ - // 85 == DPFLTR_LDR_ID; - DbgPrintEx(85, DPFLTR_WARNING_LEVEL, "LDR: %s() exiting 0x%08lx\n", __FUNCTION__, STATUS_NO_MORE_ENTRIES); + DbgPrintEx(DPFLTR_LDR_ID, + DPFLTR_WARNING_LEVEL, + "LDR: %s() exiting 0x%08lx\n", + __FUNCTION__, + STATUS_NO_MORE_ENTRIES); return STATUS_NO_MORE_ENTRIES; } diff --git a/reactos/dll/ntdll/ldr/ldrutils.c b/reactos/dll/ntdll/ldr/ldrutils.c index 2efeafd009f..201a48dc11f 100644 --- a/reactos/dll/ntdll/ldr/ldrutils.c +++ b/reactos/dll/ntdll/ldr/ldrutils.c @@ -1072,8 +1072,8 @@ LdrpMapDll(IN PWSTR SearchPath OPTIONAL, if (!NT_SUCCESS(Status) && (Status != STATUS_DLL_NOT_FOUND)) { /* Failure */ - DbgPrintEx(81, //DPFLTR_LDR_ID, - 0, + DbgPrintEx(DPFLTR_LDR_ID, + DPFLTR_ERROR_LEVEL, "LDR: %s - call to LdrpCheckForKnownDll(\"%ws\", ...) failed with status %x\n", __FUNCTION__, DllName, @@ -1660,8 +1660,8 @@ LdrpResolveFullName(IN PUNICODE_STRING OriginalName, /* Display debug output if snaps are on */ if (ShowSnaps) { - DbgPrintEx(81, //DPFLTR_LDR_ID, - 0, + DbgPrintEx(DPFLTR_LDR_ID, + DPFLTR_ERROR_LEVEL, "LDR: %s - Expanding full name of %wZ\n", __FUNCTION__, OriginalName); @@ -1737,16 +1737,16 @@ Quickie: /* Check which output to use -- failure or success */ if (NT_SUCCESS(Status)) { - DbgPrintEx(81, //DPFLTR_LDR_ID, - 0, + DbgPrintEx(DPFLTR_LDR_ID, + DPFLTR_ERROR_LEVEL, "LDR: %s - Expanded to %wZ\n", __FUNCTION__, *ExpandedName); } else { - DbgPrintEx(81, //DPFLTR_LDR_ID, - 0, + DbgPrintEx(DPFLTR_LDR_ID, + DPFLTR_ERROR_LEVEL, "LDR: %s - Failed to expand %wZ; 0x%08x\n", __FUNCTION__, OriginalName, @@ -1784,8 +1784,8 @@ LdrpSearchPath(IN PWCHAR *SearchPath, /* Display debug output if snaps are on */ if (ShowSnaps) { - DbgPrintEx(81, //DPFLTR_LDR_ID, - 0, + DbgPrintEx(DPFLTR_LDR_ID, + DPFLTR_ERROR_LEVEL, "LDR: %s - Looking for %ws in %ws\n", __FUNCTION__, DllName, @@ -1852,8 +1852,8 @@ LdrpSearchPath(IN PWCHAR *SearchPath, /* Display debug output if snaps are on */ if (ShowSnaps) { - DbgPrintEx(81, //DPFLTR_LDR_ID, - 0, + DbgPrintEx(DPFLTR_LDR_ID, + DPFLTR_ERROR_LEVEL, "LDR: %s - Looking for %ws\n", __FUNCTION__, Buffer); @@ -1932,16 +1932,16 @@ Quickie: /* Check which output to use -- failure or success */ if (NT_SUCCESS(Status)) { - DbgPrintEx(81, //DPFLTR_LDR_ID, - 0, + DbgPrintEx(DPFLTR_LDR_ID, + DPFLTR_ERROR_LEVEL, "LDR: %s - Returning %wZ\n", __FUNCTION__, *ExpandedName); } else { - DbgPrintEx(81, //DPFLTR_LDR_ID, - 0, + DbgPrintEx(DPFLTR_LDR_ID, + DPFLTR_ERROR_LEVEL, "LDR: %s - Unable to locate %ws in %ws: 0x%08x\n", __FUNCTION__, DllName, @@ -2455,8 +2455,8 @@ LdrpLoadDll(IN BOOLEAN Redirected, sizeof(NameBuffer)) { /* No space to add the extension */ - DbgPrintEx(81, //DPFLTR_LDR_ID, - 0, + DbgPrintEx(DPFLTR_LDR_ID, + DPFLTR_ERROR_LEVEL, "LDR: %s - Dll name missing extension; with extension " "added the name is too long\n" " DllName: (@ %p) \"%wZ\"\n" From f5c9dd0ad67f918513537f836c3741d21f9a5006 Mon Sep 17 00:00:00 2001 From: Thomas Faber Date: Mon, 23 Jun 2014 20:39:49 +0000 Subject: [PATCH 225/232] [RPCRT4][CRT] - Do not omit the last argument to VirtualProtect, it will cause the function to fail svn path=/trunk/; revision=63636 --- reactos/dll/win32/rpcrt4/cproxy.c | 3 ++- reactos/dll/win32/rpcrt4/cstub.c | 3 ++- reactos/lib/sdk/crt/except/stack.c | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/reactos/dll/win32/rpcrt4/cproxy.c b/reactos/dll/win32/rpcrt4/cproxy.c index bc5fcf008cf..bf8a5910d81 100644 --- a/reactos/dll/win32/rpcrt4/cproxy.c +++ b/reactos/dll/win32/rpcrt4/cproxy.c @@ -175,13 +175,14 @@ static const struct thunk *allocate_block( unsigned int num ) { unsigned int i; struct thunk *prev, *block; + DWORD oldprot; block = VirtualAlloc( NULL, BLOCK_SIZE * sizeof(*block), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE ); if (!block) return NULL; for (i = 0; i < BLOCK_SIZE; i++) init_thunk( &block[i], BLOCK_SIZE * num + i + 3 ); - VirtualProtect( block, BLOCK_SIZE * sizeof(*block), PAGE_EXECUTE_READ, NULL ); + VirtualProtect( block, BLOCK_SIZE * sizeof(*block), PAGE_EXECUTE_READ, &oldprot ); prev = InterlockedCompareExchangePointer( (void **)&method_blocks[num], block, NULL ); if (prev) /* someone beat us to it */ { diff --git a/reactos/dll/win32/rpcrt4/cstub.c b/reactos/dll/win32/rpcrt4/cstub.c index d3a26d73c93..5beeec173f7 100644 --- a/reactos/dll/win32/rpcrt4/cstub.c +++ b/reactos/dll/win32/rpcrt4/cstub.c @@ -176,6 +176,7 @@ static const vtbl_method_t *allocate_block( unsigned int num ) { unsigned int i; vtbl_method_t *prev, *block; + DWORD oldprot; block = VirtualAlloc( NULL, BLOCK_SIZE * sizeof(*block), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE ); @@ -186,7 +187,7 @@ static const vtbl_method_t *allocate_block( unsigned int num ) memcpy( &block[i], opcodes, sizeof(opcodes) ); block[i].offset = (BLOCK_SIZE * num + i + 3) * sizeof(void *); } - VirtualProtect( block, BLOCK_SIZE * sizeof(*block), PAGE_EXECUTE_READ, NULL ); + VirtualProtect( block, BLOCK_SIZE * sizeof(*block), PAGE_EXECUTE_READ, &oldprot ); prev = InterlockedCompareExchangePointer( (void **)&method_blocks[num], block, NULL ); if (prev) /* someone beat us to it */ { diff --git a/reactos/lib/sdk/crt/except/stack.c b/reactos/lib/sdk/crt/except/stack.c index 0fc725c6e50..61416121ff6 100644 --- a/reactos/lib/sdk/crt/except/stack.c +++ b/reactos/lib/sdk/crt/except/stack.c @@ -38,7 +38,8 @@ void _chkesp_failed(void) int CDECL _resetstkoflw(void) { int stack_addr; + DWORD oldprot; /* causes stack fault that updates NtCurrentTeb()->Tib.StackLimit */ - return VirtualProtect( &stack_addr, 1, PAGE_GUARD|PAGE_READWRITE, NULL ); + return VirtualProtect(&stack_addr, 1, PAGE_GUARD|PAGE_READWRITE, &oldprot); } From 6e592c35e9aee2d270a13e9e90ba56b360504f3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Mon, 23 Jun 2014 22:07:33 +0000 Subject: [PATCH 226/232] [NTDLL]: Addendum to r63635. svn path=/trunk/; revision=63637 --- reactos/dll/ntdll/ldr/ldrpe.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/dll/ntdll/ldr/ldrpe.c b/reactos/dll/ntdll/ldr/ldrpe.c index a127e5798a1..bd0600544d7 100644 --- a/reactos/dll/ntdll/ldr/ldrpe.c +++ b/reactos/dll/ntdll/ldr/ldrpe.c @@ -711,7 +711,7 @@ LdrpWalkImportDescriptor(IN LPWSTR DllPath OPTIONAL, if (!NT_SUCCESS(Status)) { /* Exit */ - DbgPrintEx(51, // DPFLTR_SXS_ID + DbgPrintEx(DPFLTR_SXS_ID, DPFLTR_WARNING_LEVEL, "LDR: RtlGetActiveActivationContext() failed; ntstatus = " "0x%08lx\n", From c19093060ff7a8459b429ab15f67b708205a88b3 Mon Sep 17 00:00:00 2001 From: Sylvain Petreolle Date: Tue, 24 Jun 2014 19:36:22 +0000 Subject: [PATCH 227/232] [KERNEL32] Use actual codepage numbers for ANSI and OEM codepages. CORE-7568 #resolve #comment Committed. svn path=/trunk/; revision=63641 --- reactos/dll/win32/kernel32/winnls/string/nls.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/reactos/dll/win32/kernel32/winnls/string/nls.c b/reactos/dll/win32/kernel32/winnls/string/nls.c index e1aba208431..02a5681309e 100644 --- a/reactos/dll/win32/kernel32/winnls/string/nls.c +++ b/reactos/dll/win32/kernel32/winnls/string/nls.c @@ -89,21 +89,22 @@ NlsInit(VOID) } /* Setup ANSI code page. */ - AnsiCodePage.CodePage = CP_ACP; AnsiCodePage.SectionHandle = NULL; AnsiCodePage.SectionMapping = NtCurrentTeb()->ProcessEnvironmentBlock->AnsiCodePageData; RtlInitCodePageTable((PUSHORT)AnsiCodePage.SectionMapping, &AnsiCodePage.CodePageTable); + AnsiCodePage.CodePage = AnsiCodePage.CodePageTable.CodePage; + InsertTailList(&CodePageListHead, &AnsiCodePage.Entry); /* Setup OEM code page. */ - OemCodePage.CodePage = CP_OEMCP; OemCodePage.SectionHandle = NULL; OemCodePage.SectionMapping = NtCurrentTeb()->ProcessEnvironmentBlock->OemCodePageData; RtlInitCodePageTable((PUSHORT)OemCodePage.SectionMapping, &OemCodePage.CodePageTable); + OemCodePage.CodePage = OemCodePage.CodePageTable.CodePage; InsertTailList(&CodePageListHead, &OemCodePage.Entry); return TRUE; @@ -199,8 +200,15 @@ IntGetCodePageEntry(UINT CodePage) WCHAR FileName[MAX_PATH + 1]; UINT FileNamePos; PCODEPAGE_ENTRY CodePageEntry; - - if (CodePage == CP_THREAD_ACP) + if (CodePage == CP_ACP) + { + return &AnsiCodePage; + } + else if (CodePage == CP_OEMCP) + { + return &OemCodePage; + } + else if (CodePage == CP_THREAD_ACP) { if (!GetLocaleInfoW(GetThreadLocale(), LOCALE_IDEFAULTANSICODEPAGE | LOCALE_RETURN_NUMBER, @@ -1816,7 +1824,7 @@ GetCPInfoExW(UINT CodePage, lpCPInfoEx->CodePage = CodePageEntry->CodePageTable.CodePage; lpCPInfoEx->UnicodeDefaultChar = CodePageEntry->CodePageTable.UniDefaultChar; - return GetLocalisedText((DWORD)CodePage, lpCPInfoEx->CodePageName); + return GetLocalisedText(CodePageEntry->CodePageTable.CodePage, lpCPInfoEx->CodePageName); } break; } From 58edad6809ce31ee34dcf2f2edf44166b68301ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Gardou?= Date: Tue, 24 Jun 2014 22:18:49 +0000 Subject: [PATCH 228/232] [SETUPAPI_APITEST] - Add a test that shows that SetupDiGetClassDevsExW doesn't fail on non-existing GUID svn path=/trunk/; revision=63642 --- rostests/apitests/setupapi/devclass.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/rostests/apitests/setupapi/devclass.c b/rostests/apitests/setupapi/devclass.c index 87095a28886..17491f6c3ed 100644 --- a/rostests/apitests/setupapi/devclass.c +++ b/rostests/apitests/setupapi/devclass.c @@ -1,7 +1,7 @@ /* * SetupAPI device class-related functions tests * - * Copyright 2006 Hervé Poussineau + * Copyright 2006 Herv� Poussineau * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Licence as @@ -269,6 +269,25 @@ static void test_SetupDiGetClassDevsA(void) "Error reported %lx\n", GetLastError() ); } +static void test_SetupDiGetClassDevsExW(void) +{ + const GUID not_existing_guid = { 0xdeadbeef, 0xdead, 0xbeef, { 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff } }; + HDEVINFO dev_info; + BOOL ret; + SP_DEVINFO_DATA info; + + dev_info = SetupDiGetClassDevsExW(¬_existing_guid, NULL, NULL, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE, NULL, NULL, NULL); + ok(dev_info != INVALID_HANDLE_VALUE, "Expected success\n"); + + ZeroMemory(&info, sizeof(info)); + info.cbSize = sizeof(info); + ret = SetupDiEnumDeviceInfo(dev_info, 0, &info); + ok (!ret, "Expected failure.\n"); + ok_lasterr(ERROR_NO_MORE_ITEMS); + + SetupDiDestroyDeviceInfoList(dev_info); +} + static void test_SetupDiOpenClassRegKeyExA(void) { HKEY hkey; @@ -328,4 +347,5 @@ START_TEST(devclass) test_SetupDiGetClassDescriptionA(); test_SetupDiGetClassDevsA(); test_SetupDiOpenClassRegKeyExA(); + test_SetupDiGetClassDevsExW(); } From d11edd7453a53ae289f9b3e78b20e1fc9f55a475 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Gardou?= Date: Tue, 24 Jun 2014 22:19:20 +0000 Subject: [PATCH 229/232] [SETUPAPI] - Do not fail on non-existing GUIDs in SetupDiGetClassDevsExW WinCDemu portable now goes a bit further and permits to load CD images, but no new drive letters are affected. svn path=/trunk/; revision=63643 --- reactos/dll/win32/setupapi/interface.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/reactos/dll/win32/setupapi/interface.c b/reactos/dll/win32/setupapi/interface.c index 32c8aa0b0a8..deaadd9a8cb 100644 --- a/reactos/dll/win32/setupapi/interface.c +++ b/reactos/dll/win32/setupapi/interface.c @@ -2,7 +2,7 @@ * SetupAPI interface-related functions * * Copyright 2000 Andreas Mohr for CodeWeavers - * 2005-2006 Hervé Poussineau (hpoussin@reactos.org) + * 2005-2006 Herv� Poussineau (hpoussin@reactos.org) * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -97,7 +97,8 @@ SETUP_CreateInterfaceList( hInterfaceKey = SetupDiOpenClassRegKeyExW(InterfaceGuid, KEY_ENUMERATE_SUB_KEYS, DIOCR_INTERFACE, MachineName, NULL); if (hInterfaceKey == INVALID_HANDLE_VALUE) { - rc = GetLastError(); + /* Key doesn't exist. Let's keep it empty */ + rc = ERROR_SUCCESS; goto cleanup; } From 9685ee29f2ab4efe7d08deced39161662c36ad30 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Thu, 26 Jun 2014 18:27:43 +0000 Subject: [PATCH 230/232] [KERNEL32] * Apply Wine commit bdc0099e (kernel32: Add DECLSPEC_HOTPATCH to SetFilePointer.) by Austin English. CORE-7959 svn path=/trunk/; revision=63645 --- reactos/dll/win32/kernel32/client/file/fileinfo.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/reactos/dll/win32/kernel32/client/file/fileinfo.c b/reactos/dll/win32/kernel32/client/file/fileinfo.c index 99f1f39186f..4974bd182b6 100644 --- a/reactos/dll/win32/kernel32/client/file/fileinfo.c +++ b/reactos/dll/win32/kernel32/client/file/fileinfo.c @@ -198,7 +198,9 @@ FlushFileBuffers(IN HANDLE hFile) /* * @implemented */ -DWORD WINAPI +DWORD +WINAPI +DECLSPEC_HOTPATCH SetFilePointer(HANDLE hFile, LONG lDistanceToMove, PLONG lpDistanceToMoveHigh, From 2925773710fb60e788b007b9d49de4bdd454485a Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Thu, 26 Jun 2014 19:15:51 +0000 Subject: [PATCH 231/232] [DESK] * Plug a leak. CID 1206913. svn path=/trunk/; revision=63646 --- reactos/dll/cpl/desk/devsett.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/reactos/dll/cpl/desk/devsett.c b/reactos/dll/cpl/desk/devsett.c index ec7e986e51c..8006153aa4d 100644 --- a/reactos/dll/cpl/desk/devsett.c +++ b/reactos/dll/cpl/desk/devsett.c @@ -667,7 +667,10 @@ CDevSettings_GetData(IDataObject* iface, { hr = StringCbCopy(pszBuf, (wcslen(pszRet) + 1) * sizeof(WCHAR), pszRet); if (FAILED(hr)) + { + GlobalFree(pszBuf); return hr; + } pmedium->tymed = TYMED_HGLOBAL; pmedium->hGlobal = pszBuf; From 2c9a27ae40e4d2117a800a98cbdcdb4a47877649 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Thu, 26 Jun 2014 19:35:48 +0000 Subject: [PATCH 232/232] [NTOS:CM] * Plug some leaks. Inspired by CID 1206912 and fixed by Timo. CORE-7975 svn path=/trunk/; revision=63647 --- reactos/ntoskrnl/config/cmsysini.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/reactos/ntoskrnl/config/cmsysini.c b/reactos/ntoskrnl/config/cmsysini.c index 4201fd2f6a7..f41d27b042c 100644 --- a/reactos/ntoskrnl/config/cmsysini.c +++ b/reactos/ntoskrnl/config/cmsysini.c @@ -1052,7 +1052,11 @@ CmpCreateRegistryRoot(VOID) NULL, 0, &KeyName); - if (!Kcb) return FALSE; + if (!Kcb) + { + ObDereferenceObject(RootKey); + return FALSE; + } /* Initialize the object */ RootKey->KeyControlBlock = Kcb; @@ -1070,7 +1074,11 @@ CmpCreateRegistryRoot(VOID) 0, NULL, &CmpRegistryRootHandle); - if (!NT_SUCCESS(Status)) return FALSE; + if (!NT_SUCCESS(Status)) + { + ObDereferenceObject(RootKey); + return FALSE; + } /* Reference the key again so that we never lose it */ Status = ObReferenceObjectByHandle(CmpRegistryRootHandle, @@ -1079,7 +1087,11 @@ CmpCreateRegistryRoot(VOID) KernelMode, (PVOID*)&RootKey, NULL); - if (!NT_SUCCESS(Status)) return FALSE; + if (!NT_SUCCESS(Status)) + { + ObDereferenceObject(RootKey); + return FALSE; + } /* Completely sucessful */ return TRUE;

r{ZX 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 literal 0 HcmV?d00001 diff --git a/reactos/media/fonts/OpenSans-CondBold.ttf b/reactos/media/fonts/OpenSans-CondBold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..83966f21381f35a1ee69f30bd8d7a0ef954fe17b GIT binary patch literal 264372 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%0A%+X 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 k7j>sqZ~0%-bRgA6c5xW;*l6N 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 literal 0 HcmV?d00001 diff --git a/reactos/media/fonts/OpenSans-CondLightItalic.ttf b/reactos/media/fonts/OpenSans-CondLightItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..0b45898db8e479691b3908cf4634e6ca9293830e GIT binary patch literal 210804 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