diff --git a/ANNOUNCE.md b/ANNOUNCE.md
index 133d5726ebc2..7e3fe0f9702d 100644
--- a/ANNOUNCE.md
+++ b/ANNOUNCE.md
@@ -1,12 +1,13 @@
-The Wine development release 11.6 is now available.
+The Wine development release 11.7 is now available.
 
 What's new in this release:
-  - Beginnings of a revival of the Android driver.
-  - DLL load order heuristics to better support game mods.
-  - More VBScript compatibility fixes.
+  - Beginnings of MSXML reimplementation without libxml2.
+  - VBScript compatibility fixes and optimizations.
+  - SRGB filter support in D3DX.
+  - 7.1 speaker configuration in DirectSound.
   - Various bug fixes.
 
-The source is available at <https://dl.winehq.org/wine/source/11.x/wine-11.6.tar.xz>
+The source is available at <https://dl.winehq.org/wine/source/11.x/wine-11.7.tar.xz>
 
 Binary packages for various distributions will be available
 from the respective [download sites][1].
@@ -18,389 +19,438 @@ See the file [AUTHORS][3] for the complete list.
 
 [1]: https://gitlab.winehq.org/wine/wine/-/wikis/Download
 [2]: https://gitlab.winehq.org/wine/wine/-/wikis/Documentation
-[3]: https://gitlab.winehq.org/wine/wine/-/raw/wine-11.6/AUTHORS
+[3]: https://gitlab.winehq.org/wine/wine/-/raw/wine-11.7/AUTHORS
 
 ----------------------------------------------------------------
 
-### Bugs fixed in 11.6 (total 28):
-
- - #7961   Bug in findfirst/findnext
- - #26389  Win3.1 Notepad crashes when opening a large file
- - #38874  Homesite+ (v5.5): Radiobutton in Find dialog not set properly when using keyboard shortcut (Alt+U)
- - #42517  StarOffice51 Crash on File open
- - #45289  Wine Crashes Some Programs If Compiled with AVX Support
- - #49776  .NET application settings are never saved
- - #51577  Google Earth Installer renders mostly black
- - #52019  DigiCertUtil wrong window size
- - #52741  Missing chakra.dll to run Minecraft Windows 10 Edition
- - #55933  NSFW game 'Creature reaction inside the ship! 1.5' videos stop after looping a few times
- - #56296  PDFSam Installer shows an empty language list
- - #58043  Multiple applications won't run on Wine 10.3 because they think that there is a debugger running when there isn't (DVDFab, DCS World updater)
- - #58146  HWiNFO 8.24 (latest): doesn't work unless winecfg is set to Windows 7
- - #58690  fw_manager_IsPortAllowed is not implemented
- - #59486  Treeview TVS_CHECKBOXES cycle all state images with non-zero index
- - #59498  pdf-xchange editor v10.8.4.409 crashes at start.
- - #59536  Missing WINHTTP_OPTION_SERVER_CERT_CHAIN_CONTEXT
- - #59546  Commit 20b34866 breaks the list of on-line multiplayer servers for the game Mount & Blade: Warband
- - #59548  Neko Project emulator no longer works with 96 kHz sampling rate (Gentoo Linux)
- - #59551  Buhl Tax 2026 shows blank preview - crash on geometry creation
- - #59553  ICU dlls cause some games to crash (Cyberpunk 2077)
- - #59554  DOAXVV (DMM version) fails to start with network error
- - #59559  Missing D3D11 Interop Functions needed for Gecko based browsers
- - #59561  VICE: GTK version of x64sc.exe crashes at startup.
- - #59563  printf does not support %Z
- - #59573  Regression introduced by decompression support in winhttp
- - #59576  EIZO ColorNavigator 6 crashes on unimplemented function mscms.dll.WcsGetCalibrationManagementState
- - #59600  Regression on 11.5 - Diablo IV in game-menu shop no more reachable
-
-### Changes since 11.5:
+### Bugs fixed in 11.7 (total 35):
+
+ - #26226  msxml4 emits too much xmlns attributes
+ - #33118  Adding bin.base64 attribute causes duplicate datatype attribute
+ - #38350  FTDI Vinculum II IDE V2.0.2-SP2 gets OLE Error 80020006 and exits, native msxml3 is workaround
+ - #49029  ABBYY FineReader 12 Professional crashes in trial mode
+ - #52607  build on Cygwin fails, error: undefined references to _alldiv, _allmul, _allrem, _aulldiv, _aullrem (etc.) in dlls/ntdll
+ - #54236  Default to Windows 10 when creating a prefix
+ - #54291  vbscript stuck in endless for loop when UBound on Empty and On Error Resume Next
+ - #54344  simtower (setup.exe) says could not open the file name "h:\wine64....."
+ - #55031  experimental wow64 mode: crashes in some 3d graphics code
+ - #55093  vbscript: if boolean condition should work without braces
+ - #55196  vbscript: Trailing End If
+ - #56480  vbscript: underscore line continue issues
+ - #56931  vbscript: Const used before declaration fails (explicit)
+ - #58026  vbscript: Script running error when Dictionary contains array
+ - #58051  vbscript: Dictionary direct Keys/Items access causes parse error
+ - #58056  vbscript: Directly indexing a Split returns Empty
+ - #58392  Can't display background and characters in MapleStory World.
+ - #58398  vbscript: For each function with Split a empty string
+ - #58673  Kinco Dtools fails to start: err:msxml:doparse Unsupported encoding: gb2312
+ - #58802  Inserting XML document fragment adds the fragment instead of its content.
+ - #59415  In Falsus demo cannot be interacted with
+ - #59446  Latest VOCALOID6 version (6.11) crashes after VOCALOID:AI track
+ - #59512  HID devices report wrong DeviceType causing GetFileType() to return FILE_TYPE_DISK
+ - #59516  Songbookpro crashes with RoFailFastWithErrorContext()
+ - #59517  IWICFormatConverter does not support BlackWhite as destination pixel format
+ - #59528  Fade In Pro: Crashes immediately after splash screen
+ - #59534  Cabinet.dll missing Compressor interfaces
+ - #59558  HTTP 200 response body empty since Wine 11.5 regression (worked in 11.4)
+ - #59572  Stratego (1997) shows a black screen on startup
+ - #59578  Act of War: Direct Action crashes while loading the main menu
+ - #59613  case 64 is missing in key_asymmetric_verify function
+ - #59627  Kakaowork crashes at start.
+ - #59632  VC_redist fails to start (regression)
+ - #59643  SHCreateStreamOnFileW (IStream::Seek) truncates 64-bit offsets to 32-bit, breaking >4GB file reads
+ - #59658  Xara Designer Pro + crashes:  Call from 00006FFFFFFA4E45 to unimplemented function icuuc.dll.udata_setCommonData_70, aborting
+
+### Changes since 11.6:
 ```
-Adam Markowski (3):
-      po: Update Polish translation.
+Adam Markowski (2):
       po: Update Polish translation.
       po: Update Polish translation.
 
 Akihiro Sagawa (5):
-      winegstreamer: Flush wg_transform buffers on seek in quartz_transform.c.
-      quartz/tests: Add more video format tests for MPEG-1 Splitter.
-      winegstreamer: Pass MPEG-1 video codec data to the GStreamer decoder.
-      winegstreamer: Increase the buffer count in the MPEG video output.
-      quartz/tests: Remove todo_wine from tests that succeed now.
-
-Alexandre Julliard (27):
-      configure: Warn when the C++ compiler is missing or not working.
-      gdi32: Also redirect path in RemoveFontResourceEx.
-      server: Add a helper function to trace a Unicode string.
-      server: Share more code between 32- and 64-bit PE data directory handling.
-      ntdll: Add a structure to return information about a PE mapping.
-      server: Return version resource in get_mapping_info for native dlls.
-      ntdll: Add heuristics to prefer native dll based on the version resource.
-      wtsapi32/tests: Skip processes that no longer exist.
-      ldap: Correctly grow the buffer on incomplete message.
-      configure: Require a PE compiler on 64-bit macOS.
-      configure: Stop using libunwind.
-      configure: Check for gradle on Android.
-      configure: Pass ANDROID_HOME when building the Android APK.
-      ntdll: Fix a printf format warning.
-      ntoskrnl: Update the security cookie once relocation are applied.
-      kernelbase: Update timezone data to version 2026a.
-      zlib: Import upstream release 1.3.2.
-      png: Import upstream release 1.6.56.
-      lcms2: Import upstream release 2.18.
-      ntdll: Move the prefix bootstrap check out of is_builtin_path().
-      ntdll: Pass the full PE mapping info to get_load_order().
-      ntdll: Also consider wow64 system directory for module load order.
-      ntdll: Only set the version resource child when found in version_find_key.
-      winecrt0: Add LGPL license exception.
-      msvcrt: Add LGPL license exception.
-      vcruntime140: Add LGPL license exception.
-      libs: Add LGPL license exception to the uuid libraries.
-
-Alistair Leslie-Hughes (3):
-      winhttp: Support Query option WINHTTP_OPTION_SECURITY_INFO.
-      ntdll: Correct last parameter of NtFlushVirtualMemory.
-      comctl32/imagelist: Allow for larger initial image count.
-
-Anton Baskanov (1):
-      dsound: Make i signed in downsample.
-
-Aurimas Fišeras (1):
+      quartz/tests: Add IMediaEvent(Ex)::WaitForCompletion tests.
+      quartz: Reset the completion event on paused -> running transition.
+      quartz: Don't leak the completion event handle.
+      quartz/tests: Add more WaitForCompletion tests.
+      quartz: Fix WaitForCompletion behavior when default handling is canceled.
+
+Alex Henrie (1):
+      kernelbase: Ignore GENERIC_WRITE in CreateFile on CDs on Windows 9x.
+
+Alexandre Julliard (9):
+      configure: Stop using external libxml/libxslt.
+      shell32/tests: Remove todo from test that succeeds now.
+      ntdll: For the native heuristics, assume that dll without version is not from Microsoft.
+      opengl32: Link to pthread library for pthread_once.
+      mf/tests: Fix 64-bit printf formats.
+      shcore: Store the app user model id in the process parameters.
+      configure: Require the Mingw compiler on Cygwin.
+      tools: Remove Cygwin platform and treat it as Mingw.
+      Revert "msi/tests: Add regression tests for table stream padding and mismatched string refs."
+
+Andrey Gusev (2):
+      d3d11: Fix a memory leak in d3d_video_decoder_create().
+      d3dcompiler: Fix misplaced parentheses.
+
+Antoine Leresche (1):
+      kernelbase: Add message string for ERROR_NOT_A_REPARSE_POINT.
+
+Anton Baskanov (5):
+      dsound: Replace multiplications by fir_step and fir_width with bit shifts.
+      dsound: Use a 0.32 fixed point to represent the resampling ratio.
+      dsound: Make rem_num signed.
+      dsound: Calculate opos_num and ipos_num incrementally.
+      dsound: Calculate rem and rem_inv incrementally.
+
+Aurimas Fišeras (3):
+      po: Update Lithuanian translation.
+      po: Update Lithuanian translation.
       po: Update Lithuanian translation.
 
-Bartosz Kosiorek (5):
-      gdiplus: Fix GdipGetImageBounds result in case Graphics is deleted.
-      gdiplus: Return InvalidParameter in GdipGetImageHorizontalResolution in case HEMF is missing.
-      gdiplus: Return InvalidParameter in GdipGetImageVerticalResolution in case HEMF is missing.
-      gdiplus: Return InvalidParameter in GdipGetImageWidth in case HEMF is missing.
-      gdiplus: Return InvalidParameter in GdipGetImageHeight in case HEMF is missing.
-
-Benoît Legat (2):
-      crypt32: Implement CERT_NCRYPT_KEY_HANDLE_PROP_ID support.
-      crypt32: Implement PFXExportCertStoreEx support.
-
-Bernhard Übelacker (2):
-      mmdevapi: Avoid copying more memory than reserved in validate_fmt (ASan).
-      d2d1: Allow value NULL in d2d_effect_SetInput.
-
-Brendan McGrath (7):
-      wmvcore: Test we can open a rawvideo wmv file.
-      winegstreamer: Place 'videoconvert' prior to 'deinterlace' element.
-      iyuv_32: Add stub dll.
-      iyuv_32/tests: Add test stub.
-      iyuv_32/tests: Test which formats are supported.
-      iyuv_32/tests: Add a decompression test.
-      iyuv_32/tests: Add a compression test.
-
-Brendan Shanks (4):
-      ntdll/tests: In wow64, factor the SYSTEM_INFORMATION_CLASS out of test_query_architectures().
-      ntdll/tests: Add tests for NtQuerySystemInformation(SystemSupportedProcessorArchitectures2).
-      ntdll: Implement NtQuerySystemInformation(SystemSupportedProcessorArchitectures2).
-      server: Add x86_64 as a supported machine on ARM64.
-
-Chris Kadar (1):
-      cabinet: Add stubs for compressor/decompressor.
-
-Connor McAdams (8):
-      dinput/tests: Fix occasional GameInput test crash.
-      dinput/tests: Fix incorrect index when removing child device.
-      include: Fix HID_STRING_ID_* definitions.
-      dinput/tests: Add tests for HID device indexed strings.
-      dinput/tests: Check child device serial, if provided, on remove.
-      dinput/tests: Cleanup every device key with winetest vendor.
-      dinput/tests: Test that guidInstance is stable across hotplugs.
-      dinput/tests: Add tests for dinput joystick guidInstance values.
-
-Conor McCarthy (6):
-      mf: Trace additional topology details.
-      mf/topology_loader: Do not create a new branch list containing downstreamm nodes.
-      mf/topology_loader: Delete unused struct connect_context.
-      mf/topology_loader: Load the branch up connection method only for source nodes.
-      mf: Specify the multithreaded queue for presentation clock callbacks.
-      mf: Specify the multithreaded queue for sample grabber timer callbacks.
-
-Dmitry Timoshkov (6):
-      advapi32/tests: Add some tests for LockServiceDatabase().
-      services: Add proper handle management to LockServiceDatabase() and UnlockServiceDatabase().
-      advapi32: Implement LockServiceDatabase() and UnlockServiceDatabase().
-      winedump: Fix building with PSDK compiler.
-      crypt32/tests: Add some tests for CertOpenSystemStore() with real provider handle.
-      crypt32: Add CERT_STORE_NO_CRYPT_RELEASE_FLAG to CertOpenStore() flags when called from CertOpenSystemStore().
-
-Elizabeth Figura (7):
-      wined3d/vk: Handle stretching and format conversion when resolving as well.
-      wined3d: Do not force the source into RB_RESOLVED for a non-colour blit.
-      wined3d: Separate a raw_blitter_supported() helper.
-      wined3d: Require matching sample counts for the raw blitter.
-      wined3d: Move RB_RESOLVED logic from texture2d_blt() to texture2d_blt_fbo().
-      wined3d: Explicitly handle raw resolve in the FBO blitter.
-      wined3d: Explicitly pass the RAW flag for d3d10+ resolve.
-
-Eric Pouech (6):
-      mfplat: Add stub for MFSerializeAttributesToStream.
-      mf: Add stub for MFCreateDeviceSource().
-      include: Add missing extern "C" wrappers.
-      include: Don't use C++ keywords.
-      wevtapi: Add stub for EvtRender.
-      advapi32: Add stub for AddConditionalAce().
-
-Francis De Brabandere (24):
-      vbscript: Implement IActiveScriptError::GetSourceLineText.
-      vbscript: Invoke default property when calling object variable with empty parens.
-      vbscript: Pass VT_DISPATCH as-is to Property Let without extracting default value.
-      wscript: Implement IActiveScriptSite::OnScriptError.
-      vbscript: Allow hex literals with excess leading zeros.
-      vbscript: Fix dot member access after line continuation.
-      vbscript: Add error code tests for compile errors.
-      vbscript: Improve some error codes in the compiler.
-      vbscript: Improve some error codes in the lexer.
-      vbscript: Improve some error codes in the parser.
-      vbscript: Implement GetRef.
-      vbscript: Fix crash in ReDim on uninitialized dynamic arrays.
-      vbscript: Return "Object required" error (424) instead of E_FAIL/E_NOTIMPL.
-      vbscript: Return correct error for array dimension mismatch and NULL array access.
-      vbscript: Return type mismatch when calling non-dispatch variable as statement.
-      vbscript: Fix chained array indexing on call expression results.
-      vbscript: Allow Not operator as operand of comparison expressions.
-      vbscript: Implement AscW and ChrW functions.
-      vbscript: Report proper errors for invalid date literals and line continuations.
-      vbscript/tests: Enable Empty Mod test that now passes.
-      vbscript: Implement Escape and Unescape functions.
-      vbscript: Implement the Erase statement.
-      vbscript: Implement Eval, Execute, and ExecuteGlobal.
-      vbscript: Return error 92 for uninitialized For loops.
-
-Georg Lehmann (1):
-      winevulkan: Update to VK spec version 1.4.347.
-
-Gijs Vermeulen (1):
-      mscms: Add WcsGetCalibrationManagementState stub.
-
-Hans Leidekker (16):
-      winhttp: Fix querying available data for chunked transfers.
-      winhttp: Trace more option values.
-      winhttp: Accept WINHTTP_OPTION_ENABLE_HTTP_PROTOCOL on session handles.
-      include: Add missing WinHTTP defines.
-      winhttp: Print a fixme for unsupported flags in WinHttpOpen() and WinHttpOpenRequest().
-      winhttp: Introduce struct read_buffer.
-      winhttp: Always buffer response data.
-      winhttp: Fix a typo.
-      winhttp/tests: Get rid of workarounds for old Windows versions.
-      winhttp: Ignore unexpected content encodings.
-      winhttp: Don't trace content read / content length in read_data().
-      winhttp: Move web socket support to a separate file.
-      winhttp: Use public define for the web socket handle type.
-      winhttp: Move pending_sends and pending_receives to the socket structure.
-      crypt32: Also accept CERT_CHAIN_ENGINE_CONFIG without dwExclusiveFlags.
-      bcrypt: Handle SHA512 in key_asymmetric_verify().
-
-Jacek Caban (1):
-      configure: Build PE modules with build ID by default.
-
-José Luis Jiménez López (1):
-      quartz/tests/avisplit: Add tests for IMediaSeeking time formats.
-
-June Wilde (1):
-      include: Add windows.graphics.directx.direct3d11.interop.idl file.
-
-Kun Yang (2):
-      taskschd/tests: Add tests for ILogonTrigger.
-      taskschd: Add implementation of ILogonTrigger.
+Bartosz Kosiorek (1):
+      gdiplus/tests: Fix flaky rounding error in test_getblend.
+
+Brendan McGrath (21):
+      amstream/tests: Test when top-down image is not accepted.
+      amstream: Reject filter when top-down image is not accepted.
+      amstream: Always return S_OK on disconnect.
+      iyuv_32/tests: Fix a read overrun.
+      winegstreamer: Add winegstreamer_create_color_converter.
+      iyuv_32: Implement IYUV_GetInfo.
+      iyuv_32: Implement IYUV_DecompressQuery.
+      iyuv_32: Implement IYUV_DecompressGetFormat.
+      iyuv_32: Implement IYUV_Open.
+      iyuv_32: Implement IYUV_DecompressBegin.
+      iyuv_32: Implement IYUV_Decompress.
+      amstream/tests: Test QueryAccept when connected.
+      amstream/tests: Test negative heights in QueryAccept.
+      amstream: Reject negative heights in QueryAccept.
+      amstream: Accept additional subtypes in QueryAccept.
+      amstream/tests: Test AcceptQuery behavior after SetFormat.
+      amstream: Only accept format passed in SetFormat.
+      amstream/tests: Test media types when ddraw is passed to AddMediaStream.
+      amstream: Use DisplayMode to determine pixel format.
+      amstream/tests: Test media type is only on the first of each sample.
+      amstream: Only provide MediaType on first retrieval.
+
+Brendan Shanks (3):
+      kernelbase: In GetProcessInformation(ProcessMachineTypeInfo), use SystemSupportedProcessorArchitectures2.
+      kernelbase: Implement GetMachineTypeAttributes().
+      kernelbase/tests: Add tests for GetMachineTypeAttributes().
+
+Chris Denton (1):
+      bcryptprimitives: Ensure ProcessPrng fills the whole buffer.
+
+Connor McAdams (11):
+      d3dx10/tests: Add tests for decoding DXTn DDS files.
+      d3dx11/tests: Add tests for decoding DXTn DDS files.
+      d3dx9: Properly handle DXT textures with premultiplied alpha.
+      d3dx10/tests: Add a test for invalid image load filter flags.
+      d3dx11/tests: Add a test for invalid image load filter flags.
+      d3dx10: Only use passed in filter flags if image scaling is necessary.
+      d3dx11: Only use passed in filter flags if image scaling is necessary.
+      d3dx9/tests: Add tests for D3DX_FILTER_SRGB flags.
+      d3dx10/tests: Add tests for SRGB formats and filter flags.
+      d3dx11/tests: Add tests for SRGB formats and filter flags.
+      d3dx: Handle SRGB filter flags.
+
+Conor McCarthy (8):
+      mf/topology_loader: Return specific error on indirect connection failure.
+      mf/topology_loader: Load the down connection method in topology_branch_connect().
+      mf/topology_loader: Introduce a helper to clone a media type.
+      mf/topology_loader: Use the color converter for video conversion by default.
+      gdiplus: Refactor SOFTWARE_GdipFillRegion() to separate bitmap handling.
+      gdiplus: Implement software region fill for bitmap images.
+      gdiplus: Bypass span combination for intersected rects.
+      winegstreamer: Free the streams in unknown_inner_Release().
+
+Daniel Lehman (1):
+      msxml3/tests: Test encoding of special characters.
+
+Elizabeth Figura (2):
+      ntdll/tests: Test a symlink that unwinds past the directory it's in.
+      ntdll: Unwind the Unix path if necessary when processing relative symlinks.
+
+Eric Pouech (5):
+      winedbg: Don't proceed with some 'info' commands on non active targets.
+      winedbg: Introduce helpers to fetch thread name.
+      winedbg: Let 'backtrace' do something when attached to a minidump.
+      winedbg: Let 'info thread' work when debugging a minidump.
+      dbghelp/dwarf: Store btBool constant leaves as signed integer.
+
+Esme Povirk (7):
+      mscoree: Use coop-aware thread attach functions.
+      gdiplus/tests: Make the FromGdiDib tests more thorough.
+      gdiplus/tests: Test FromGdiDib with a top-down DIB.
+      gdiplus/tests: Check more structure types with FromGdiDib.
+      gdiplus/tests: Test more image formats with FromGdiDib.
+      gdiplus: Rewrite GdipCreateBitmapFromGdiDib.
+      gdiplus: Assume bitmaps are top-down in image-reading code.
+
+Francis De Brabandere (45):
+      vbscript: Fix error character positions for Exit and Dim statements.
+      vbscript: Return "Illegal assignment" error for Const and function assignment.
+      vbscript: Restrict identifier characters to ASCII-only.
+      vbscript: Handle vertical tab and form feed as whitespace in lexer.
+      vbscript: Use ASCII-only case folding in check_keyword.
+      vbscript: Add vbs_wcsicmp and use it in interpreter.
+      vbscript: Replace wcsicmp with vbs_wcsicmp in compiler, globals, and dispatch.
+      vbscript: Fast-path stack_pop_bool for VT_BOOL.
+      vbscript: Defer For loop control variable assignment until all expressions are evaluated.
+      vbscript: Return proper error for undefined variables with Option Explicit.
+      vbscript: Fix For loop getting stuck when expression evaluation fails with On Error Resume Next.
+      vbscript: Reject arguments on Class_Initialize and Class_Terminate.
+      vbscript: Add missing compiler error constants, messages, and tests.
+      vbscript: Return specific errors for mismatched End keywords in blocks.
+      vbscript: Return specific errors for unclosed parens, multiple defaults, and default on Property Let/Set.
+      vbscript: Support chained call syntax like dict.Keys()(i).
+      vbscript: Reject 'Set Me' with error 1037 instead of crashing.
+      vbscript: Return error 1054 for Property Let/Set without arguments.
+      vbscript: Return error 1005 for missing opening parenthesis in Sub/Function.
+      vbscript: Implement Filter function.
+      vbscript: Return specific error codes for integer constant and Property declarations.
+      vbscript: Return DISP_E_TYPEMISMATCH when indexing non-array variables.
+      vbscript: Return error 1048 for Property declaration outside a Class.
+      scrrun: Fix BSTR length off-by-one in create_folder.
+      scrrun: Implement IFolder::get_ParentFolder.
+      scrrun: Implement IFile::get_ParentFolder.
+      scrrun: Implement IFolder::get_IsRootFolder.
+      scrrun: Implement IFolder::get_Attributes and IFolder::put_Attributes.
+      scrrun: Implement IFolder and IFile date getters.
+      vbscript: Return correct error codes for missing statement separators.
+      vbscript: Silence FuncRef::QueryInterface(IID_IDispatchEx) warning.
+      vbscript: Fix crash when GetRef is called as a statement.
+      vbscript: Add missing runtime error constants and tests.
+      vbscript: Return proper error for New on undefined or non-class identifier.
+      vbscript: Reject identifiers longer than 255 characters.
+      vbscript: Support bracketed identifiers like [my var].
+      vbscript: Return error 1028 for invalid keyword after 'Do'.
+      vbscript: Return error 1047 for wrong 'End' keyword inside class.
+      vbscript: Return error 1051 for inconsistent property argument counts.
+      vbscript: Return proper error for wrong number of arguments.
+      wscript: Implement error messages, usage output, and //nologo banner.
+      vbscript: Add call depth limit to prevent stack overflow on infinite recursion.
+      vbscript: Return specific error codes for missing keywords in parser.
+      vbscript: Use indexed lookup for global functions.
+      vbscript: Use indexed lookup for global variables.
+
+Hans Leidekker (11):
+      winhttp/tests: Fix test failures on old Windows versions.
+      winhttp/tests: Fix a test failure.
+      winhttp: Rename request_state.
+      winhttp: Remove unused arguments from read_more_data().
+      winhttp: Start the first chunk right after receiving the headers.
+      winhttp/tests: Add a fully recursive asynchronous test.
+      winhttp: Increase recursion limit.
+      winhttp: Stub WinHttpSetOption(WINHTTP_OPTION_IPV6_FAST_FALLBACK).
+      winhttp: Stub WinHttpQueryOption(WINHTTP_OPTION_HTTP_VERSION).
+      winhttp: Stub WinHttpQueryOption(WINHTTP_OPTION_CONNECT_RETRIES).
+      winhttp: Read as much data as possible in WinHttpReadData().
+
+Jacek Caban (14):
+      widl: Do not override name prefix settings from pragmas in imported modules.
+      include: Don't use ns_prefix in windows.graphics.directx.direct3d11.interop.idl.
+      opengl32: Move GL_NUM_EXTENSIONS to client side.
+      opengl32: Remove unexposed extensions for functions registry.
+      opengl32: Rename ALL_GL_CLIENT_EXTS to ALL_GL_EXTS.
+      opengl32: Store extension_array as opengl_extension.
+      opengl32: Implement glGetStringi(GL_EXTENSIONS) on client side.
+      opengl32: Initialize enabled / disabled OpenGL extensions struct.
+      opengl32: Use parse_extensions in filter_extensions.
+      opengl32: Store core GL version separate from extensions in the function registry.
+      opengl32: Store extensions an an enum in functions registry.
+      opengl32: Introduce get_function_entry helper.
+      opengl32: Always check available extensions in wrap_wglGetProcAddress.
+      opengl32: Implement wglGetProcAddress on the client side.
+
+Jinoh Kang (2):
+      ntdll: Do not fail with STATUS_INVALID_INFO_CLASS for anonymous files.
+      Revert "kernelbase: Replace FileAllInformation with FileStatInformation in GetFileInformationByHandle().".
+
+Katharina Bogad (7):
+      makedep: Fix -Wdiscarded-qualifier warnings with recent glibc.
+      winebuild: Fix -Wdiscarded-qualifier warnings with recent glibc.
+      winegcc: Fix -Wdiscarded-qualifier warnings with recent glibc.
+      ntdll: Fix -Wdiscarded-qualifier warnings with recent glibc.
+      winebth.sys: Fix -Wdiscarded-qualifier warnings with recent glibc.
+      winex11.drv: Fix -Wdiscarded-qualifier warnings with recent glibc.
+      include: Fix warnings with C23 and GLIBC.
 
 Louis Lenders (1):
-      magnification: Add stub for MagInitialize.
-
-Maotong Zhang (3):
-      msi: Add ComboBox items, using value if text does not exist.
-      msi: The ComboBox defaults to displaying the value.
-      msi: ComboBox displays value on selection and falls back to text if missing.
-
-Mohamad Al-Jaf (4):
-      windows.devices.radios: Add stub dll.
-      windows.devices.radios: Add IRadioStatics stub.
-      windows.devices.radios: Implement IRadioStatics::GetRadiosAsync().
-      windows.devices.radios/tests: Add IRadioStatics::GetRadiosAsync() tests.
-
-Nikolay Sivov (24):
-      msxml3/tests: Add some more DOM tests.
-      msxml3/tests: Enable namespace:: axis test on Windows.
-      msxml3/tests: Remove alternative variants of saved output as acceptable test results.
-      msxml3/tests: Merge a test with existing get_xml() tests.
-      msxml3/tests: Add a test for immediate document children list.
-      d2d1/geometry: Check for null user transform when streaming.
-      msxml3/tests: Add ISupportErrorInfo tests for DOCTYPE nodes.
-      msxml3/tests: Add basic argument test for loadXML().
-      msxml3/tests: Add parentNode() test for attributes.
-      msxml3/tests: Add some cloneNode() tests for a document.
-      msxml3/tests: Use string comparison in more places.
-      msxml3/tests: Add another get_xml() test for namespace definitions.
-      msxml3/tests: Add some more appendChild() tests.
-      msxml3/tests: Remove some value testing macros.
-      msxml3/tests: Skip removeAttributeNode() tests on Wine.
-      msxml3/tests: Add another test for loadXML(NULL).
-      msxml3/tests: Move CDATA node tests to its own function.
-      msxml3/tests: Simplify setting string Variant values.
-      secur32/tests: Test required buffer size in case of SEC_E_INCOMPLETE_MESSAGE.
-      secur32/schannel: Fix returned required buffer size for incomplete messages in DecryptMessage().
-      secur32/tests: Use existing macro for a capability flag.
-      msxml3/tests: Add a test for reloading document with outstanding references.
-      odbc32: Map SQLColAttributes(SQL_COLUMN_UNSIGNED) to SQLColAttribute().
-      include: Fix SQLDriverConnectW() prototype.
-
-Olivia Ryan (11):
-      windows.web: Cleanup struct json_value.
-      windows.web: Use json_buffer struct & helper functions.
-      windows.web: Support escaped characters.
-      windows.web: Additional string parsing tests.
-      windows.web: Stub JsonArray runtime class.
-      windows.web: Support json array parsing.
-      windows.web: Add a IMap_HSTRING_IInspectable to json objects.
-      windows.web: Support json object parsing.
-      windows.web: Implement JsonArray element getters.
-      windows.web: Support boolean & number value creation.
-      windows.web: Implement JsonObject typed getters.
-
-Paul Gofman (6):
-      dwrite: Fix second chance fonts handling in fallback_map_characters().
-      dwrite: Move opentype_get_font_table() up.
-      dwrite: Fail loading unsupported COLRv1 fonts.
-      netprofm: Check adapter addresses instead of gateway to guess ipv6 internet connectivity.
-      ntdll: Do not keep next handler pointer outside of lock in call_vectored_handlers().
-      server: Do not return STATUS_ACCESS_DENIED from read_process_memory_vm() for zero read.
-
-Piotr Pawłowski (2):
-      comctl32/tests: Test cycling all state images from custom image list when toggling checkboxes.
-      comctl32/treeview: Cycle all state images from custom image list when toggling checkboxes.
-
-Reece Dunham (1):
-      mshtml: Doc typo fix.
-
-Rémi Bernon (20):
-      windows.web: Rename JsonObject class methods.
-      windows.web: Skip whitespace in json_buffer_take.
-      winex11: Update queue input time on WM_TAKE_FOCUS.
-      mf: Introduce a new topology_node_get_type helper.
-      winemac: Keep current user locale in the generated HKLs.
-      winewayland: Activate an IME HKL before sending IME updates.
-      winex11: Activate an IME HKL before sending IME updates.
-      imm32: Only notify the host IME for known IME HKLs.
-      include: Define _MAX_ENV in stdlib.h.
-      joy.cpl: Ignore unsupported DIPROP_AUTOCENTER.
-      dinput/tests: Move TLC count to the descriptor.
-      dinput/tests: Support starting multiple devices.
-      dinput/tests: Move fill_context call into hid_device_start.
-      cfgmgr32: Implement CM_Locate_DevNode(_Ex)(A|W) and CM_Get_Device_ID(_Size)(_Ex)(A|W).
-      cfgmgr32: Implement CM_Open_DevNode_Key(_Ex).
-      setupapi: Forward CM_Open_DevNode_Key(_Ex) to cfgmgr32.
-      cfgmgr32: Implement CM_Get_DevNode_Registry_Property(_Ex)(A|W).
-      setupapi: Forward CM_Get_DevNode_Registry_Property(_Ex)(A|W) to cfgmgr32.
-      winevulkan: Improve support for some recursive struct conversion.
-      winevulkan: Ignore VkPhysicalDeviceVulkan14Properties returnedonly.
-
-Stefan Dösinger (4):
-      ddraw/tests: Cap test_map_synchronisation to 64k vertices.
-      ddraw/tests: Fix nested designated initializers in test_caps().
-      d3d9/tests: Improve yuv_color_test() on Nvidia drivers.
-      ddraw/tests: Try harder to hide the window in test_window_style().
-
-Theodoros Chatzigiannakis (3):
-      msi: Handle padding bytes in table streams.
-      msi: Detect mismatched bytes_per_strref in table data.
-      msi/tests: Add regression tests for table stream padding and mismatched string refs.
-
-Trung Nguyen (2):
-      msvcrt: Add support for %Z printf specifier.
-      msvcrt/tests: Add tests for %Z printf specifier.
+      wine.inf: Add HKCU\Software\Classes key.
+
+Marc-Aurel Zent (7):
+      win32u: Introduce new ImeToAsciiEx user driver call.
+      win32u: Move IME processing to ImeToAsciiEx.
+      winemac: Implement and use macdrv_ImeToAsciiEx().
+      winemac: Move macdrv_ImeProcessKey logic to ImeProcessKey and macdrv_ImeToAsciiEx.
+      win32u: Remove builtin WINE_IME_PROCESS_KEY driver call.
+      winemac: Replace OSAtomic functions with builtin __atomic counterparts.
+      winemac: Relax builtin __atomic memory barriers.
+
+Matteo Bruni (1):
+      configure: Use alsa library search paths in the alsa library check.
+
+Mohamad Al-Jaf (2):
+      dsound: Support 7.1 speaker config.
+      winecfg: Support 7.1 speaker config.
+
+Nikolay Sivov (41):
+      odbc32: Add SQLGetStmtOption() -> SQLGetStmtAttr() fallback for a few options.
+      odbc32: Add SQLSetStmtOption() -> SQLSetStmtAttr() for a few options.
+      msxml3/tests: Add some more xml() tests.
+      msxml3/tests: Add more text() tests.
+      msxml3/tests: Add some more tests for whitespace handling.
+      msxml3/tests: Add some more tests for namespace handling.
+      msxml3/tests: Add some tests for doctype node.
+      msxml3/tests: Add more tests for the XmlDecl PI.
+      msxml3/tests: Add a couple of SAX parsing tests.
+      msxml3: Rework DOM API.
+      msxml3/tests: Add some more appendChild() tests with fragments.
+      msxml3/tests: Add some tests for attribute value normalization.
+      msxml3/tests: Add a setAttribute() test for setting namespace definition.
+      msxml3: Fix setAttribute() for elements with unspecified namespace uri.
+      msxml3/tests: Add some more tests for getNamedItem().
+      msxml3: Do not try to convert NULL strings when creating libxml2 document representation.
+      msxml3: Remove duplicated SafeArrayUnaccessData() in load().
+      msxml3/tests: Add another test for subtree serialization with default namespaces.
+      msxml3/tests: Add a simple test for loading with gb2312 specified encoding.
+      msxml3: Release temporary document.
+      shcore: Handle 64-bit position in file stream Seek().
+      msxml3: Remove unused field from a node structure.
+      msxml3: Implement parentNode() property for DTD nodes.
+      msxml3: Implement ownerDocument() property for DTD nodes.
+      msxml3: Implement nodeTypeString() for DTD nodes.
+      msxml3/tests: Add some tests for ProhibitDTD property.
+      msxml3: Handle ProhibitDTD property.
+      msxml3/tests: Add more splitText() tests.
+      msxml3: Unify splitText() implementation.
+      msxml3: Unify deleteData() implementation.
+      msxml3: Unify substringData() implementation.
+      msxml3: Unify length() property implementation for textual nodes.
+      msxml3: Unify insertData() implementation.
+      msxml3: Unify replaceData() implementation.
+      msxml3/tests: Run formatted output tests on the main thread.
+      msxml3: Remove redundant check in cloneNode().
+      msxml3/tests: Add more tests for setAttribute().
+      msxml3: Improve check for new attribute collision with element namespace.
+      msxml3: Make namespace definitions added with setAttribute() read-only.
+      msxml3/tests: Add another test for insertBefore().
+      msxml3/tests: Check for supported interfaces on a document object.
+
+Paul Gofman (5):
+      winmm/tests: Add tests for destination scaling with AVI window resize.
+      mciavi32: Update destination rect on window size change.
+      mciavi32: Use msvfw32 for presentation.
+      wmvcore/tests: Add test for COM initialization in async reader thread.
+      wmvcore: Initialize COM in async_reader_callback_thread().
+
+Piotr Caban (14):
+      msvcrt: Add _vwprintf_l implementation.
+      msvcrt: Add _wprintf_l implementation.
+      odbc32: Use SQLEndTran() in SQLTransact if needed.
+      odbc32: Add odbc v3 test driver and use it in SQLConnect tests.
+      odbc32: Use test driver in SQLDriverConnect tests.
+      odbc32: Use test driver in SQLBrowseConnect tests.
+      odbc32: Use test driver in SQLExecDirect tests.
+      odbc32: Fix SQLBrowseConnect tests.
+      odbc32: Use SQLFreeHandle in SQLFreeStmt if possible.
+      odbc32: Only set connection and login timeout if it was ever set.
+      odbc32: Don't call into driver in SQLGetEnvAttr.
+      odbc32: Don't call into driver in SQLSetEnvAttr.
+      odbc32: Implement sharing environment handle between connections.
+      odbc32: Don't leak connection object if it's reused in connect functions.
+
+Robert Gerigk (3):
+      include: Add identity string length constants to appmodel.h.
+      shcore: Implement Set/GetCurrentProcessExplicitAppUserModelID.
+      shcore/tests: Add tests for Set/GetCurrentProcessExplicitAppUserModelID.
+
+Rémi Bernon (44):
+      opengl32: Move some unsupported extensions to unexposed.
+      opengl32: Add support for some unregistered extensions.
+      opengl32: Don't expose unsupported or unknown extensions.
+      mf/topology_loader: Disconnect the node after indirect connection failed.
+      mf/topology_loader: Allocate indirect connection branches dynamically.
+      mf/topology_loader: Cache the media type handlers on the branches.
+      mf/topology_loader: Always try setting current up type when connecting directly.
+      mf/topology_loader: Avoid making redundant connection method attempts.
+      ntdll: Remove unused namepos variable.
+      ntdll: Fix unixlib extension position.
+      mf/topology_loader: Lookup best media type when connecting converter / decoders.
+      mf/topology_loader: Don't force MFTEnumEx output info either for converters.
+      mf/topology_loader: Move current type check into topology_branch_foreach_up_types.
+      mf/topology_loader: Enumerate and select downstream type in connect_direct.
+      mf/topology_loader: Only enumerate transform outputs if no current type is set.
+      mf/topology_loader: Update media types while enumerating up types.
+      winex11: Use unsigned long for monitor indices generation.
+      cfgmgr32: Implement CM_Get_DevNode_Property(_Ex)(A|W).
+      setupapi: Forward CM_Get_DevNode_Property(_Ex)(A|W) to cfgmgr32.
+      cfgmgr32: Implement CM_Get_DevNode_Property_Keys(_Ex).
+      cfgmgr32: Implement CM_Get_Device_ID_List(_Size)(_Ex)(A|W).
+      setupapi: Forward CM_Get_Device_ID_List(_Size)(_Ex)(A|W) to cfgmgr32.
+      cfgmgr32: Move remaining stubs from setupapi.
+      cfgmgr32: Fix querying unnamed properties.
+      opengl32: Check for GL_EXT_memory_object_fd before filtering extensions.
+      mfplat: Don't set frame size or stride if missing from VIDEOINFOHEADER2.
+      mfplat: Support FORMAT_MFVideoFormat in MFInitMediaTypeFromAMMediaType.
+      mf/tests: Check resampler IMFTransform / IMediaObject interop.
+      mf/tests: Check color converter IMFTransform / IMediaObject interop.
+      opengl32: Move major / minor version to the PE side context wrapper.
+      opengl32: Implement wglGetExtensionsString(ARB|EXT) on the PE side.
+      win32u: Query every OpenGL functions on initialization.
+      opengl32: Don't generate extra params in function pointers.
+      opengl32: Get rid of make_opengl $gen_trace variable.
+      opengl32: Simplify make_opengl GL_VERSION filtering.
+      opengl32: Support parsing multiple registry.py APIs.
+      opengl32: Simplify adding functions in make_opengl.
+      mfplat/tests: Test MFInitAMMediaTypeFromMFMediaType GUID conversions.
+      opengl32: Support more function suffixes for hide_default_fbo.
+      opengl32: Support more function suffixes for resolve_default_fbo.
+      opengl32: Support more function suffixes for map_default_fbo_thunks.
+      opengl32: Use a unique WOW64 wrapper for each group of functions.
+      opengl32: Remove now unnecessary wow64 buffer function lookup.
+      opengl32: Use a unique wrapper for each group of wrapped functions.
+
+Stephan Seitz (1):
+      shell32: Add stub for `SHEvaluateSystemCommandTemplate`.
+
+Steven Don (1):
+      taskmgr: Fix CPU and Memory usage history graphs.
+
+Tim Clem (8):
+      mountmgr.sys: Fall back to statfs if "important" free space is 0 on macOS.
+      ntdll: Fall back to statfs if "important" free space is 0 on macOS.
+      sechost: Catch invalid HDEVNOTIFY arguments to I_ScUnregisterDeviceNotification.
+      sechost: Don't attempt to unregister an HDEVNOTIFY with bad magic.
+      winemac.drv: Handle windows becoming invalid between WM_QUERYENDSESSION and WM_ENDSESSION.
+      wintab32: Make the internal window message-only.
+      wintab32: Use an HINSTANCE when registering the internal window class.
+      wintab32: Create the internal window on demand.
+
+Trent Waddington (2):
+      kernel32/tests: Add tests for GetModuleFileName string termination.
+      kernelbase: Fix string termination of GetModuleFileName.
 
 Twaik Yont (5):
-      wineandroid: Update Android project for modern Gradle plugin.
-      wineandroid: Use BOOL for is_desktop flag.
-      wineandroid: Fix APK output path for recent Gradle.
-      ntdll: Disable userfaultfd support on Android.
-      wineandroid: Switch to AHardwareBuffer and raise minSdkVersion to 26.
-
-Vibhav Pant (10):
-      winebth.sys: Store GATT characteristic value cached by the Unix Bluetooth service on the PE driver.
-      winebth.sys: Update the cached GATT characteristic value on receiving a PropertiesChanged signal for a GATT characteristic value from BlueZ.
-      winebth.sys: Implement IOCTL_WINEBTH_GATT_SERVICE_READ_CHARACTERISITIC_VALUE.
-      bluetoothapis: Implement BluetoothGATTGetCharacteristicValue.
-      bluetoothapis/tests: Add tests for BluetoothGATTGetCharacteristicValue.
-      winebth.sys: Remove unneeded call to IoInvalidateDeviceRelations on radio removal.
-      winebth.sys: Don't add Bluetooth devices/entries from Unix if they already exist.
-      winebth.sys: Only make calls to BlueZ if it is available.
-      winebth.sys: Initialize and remove devices on BlueZ startup and shutdown respectively.
-      mountmgr.sys: Initialize threading support for DBus before calling DBus functions.
-
-Wolfgang Hartl (1):
-      oleaut32: Handle reference tables when processing SLTG records.
-
-Yongjie Yao (2):
-      user32/tests: Test the thread safety of NtUserRegisterClassExWOW and NtUserUnregisterClass.
-      win32u: Fixed thread safety issues with NtUserRegistClassExWOW and NtUserUnregisterClass.
-
-Yuxuan Shui (4):
-      crypt32: Don't access CERT_CHAIN_ENGINE_CONFIG::dwExclusiveFlags without checking size.
-      mfsrcsnk: Test how pixel aspect ratio metadata in an mp4 file are handled.
-      winedmo: Call avformat_find_stream_info for H264 streams missing aspect ratio.
-      ntoskrnl.exe/tests: Fix stack use-after-free of OVERLAPPED.
-
-Zhao Yi (2):
-      win32u: Fix deadlock when setting hdc_src to the window's self DC.
-      win32u/tests: Add tests for hdc_src is window's self dc when calling UpdateLayeredWindow.
-
-Zhiyi Zhang (15):
-      ninput: Add ordinal 2502.
-      include: Add some ALPC definitions.
-      ntdll/tests: Add AlpcGetHeaderSize() tests.
-      ntdll: Implement AlpcGetHeaderSize().
-      ntdll/tests: Add AlpcInitializeMessageAttribute() tests.
-      ntdll: Implement AlpcInitializeMessageAttribute().
-      ntdll/tests: Add AlpcGetMessageAttribute() tests.
-      ntdll: Implement AlpcGetMessageAttribute().
-      iertutil: Move CreateIUriBuilder() from urlmon.
-      iertutil: Move CreateUri() from urlmon.
-      iertutil: Move CreateUriWithFragment() from urlmon.
-      iertutil: Add PrivateCoInternetCombineIUri().
-      iertutil: Add PrivateCoInternetParseIUri().
-      urlmon: Add a wine_get_canonicalized_uri() helper.
-      iertutil: Move CUri coclass from urlmon.
+      wineandroid: Remove redundant backend DPI scaling.
+      wineandroid: Fix 64-bit crash in setCursor JNI call.
+      wineandroid: Lower targetSdkVersion to avoid Android 10 W^X restrictions.
+      wineandroid: Fix loader path and library lookup for modern Wine/Android.
+      wineandroid: Move environment setup to Java and drop obsolete env vars.
+
+Vitaly Lipatov (2):
+      include: Fix _LIBCPP_DEFER_NEW_TO_VCRUNTIME not being set with old clang.
+      include: Avoid __builtin_wmemchr with clang < 13.
+
+Yuxuan Shui (1):
+      setupapi: Fix wrong buffer size in SetupDiGetClassDescriptionExA.
+
+Zhiyi Zhang (6):
+      iertutil: Fix parsing some partial IPv4 addresses.
+      iertutil: Fix parsing URIs without a port value.
+      iertutil: Do not encode user info if the scheme is unknown.
+      iertutil: Fix backslash processing in URIs.
+      iertutil: Add initial URI parsing support for IUriRuntimeClass.
+      iertutil/tests: Add URI parser tests.
 ```
diff --git a/AUTHORS b/AUTHORS
index 9a4eba101df6..53e0d0c92c60 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -171,6 +171,7 @@ Anish Mistry
 Anssi Hannula
 Anthony Fok
 Antoine Chavasse
+Antoine Leresche
 Anton Baskanov
 Antonio Codazzi
 Antonio Larrosa Jiménez
@@ -1027,6 +1028,7 @@ Karsten Elfenbein
 Kartavya Vashishtha
 Kasper Sandberg
 Katarzyna Caban
+Katharina Bogad
 K.B.Dharun Krishna
 Kees Cook
 Kees Schoenmakers
@@ -1772,6 +1774,7 @@ Stéphane Bacri
 Stéphane Loeuillet
 Stephane Lussier
 Stephan Rose
+Stephan Seitz
 Stephen Crowley
 Stephen Kitt
 Stephen Langasek
@@ -1780,6 +1783,7 @@ Stephen Simmons
 Steve Lhomme
 Steve Lustbader
 Steven Bell
+Steven Don
 Steven Edwards
 Steven Elliott
 Steven Flint
diff --git a/VERSION b/VERSION
index c7ed8d3e4af2..2a3c307ab510 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-Wine version 11.6
+Wine version 11.7
diff --git a/configure b/configure
index 0e23e5529691..792dcdb5a81c 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.72 for Wine 11.6.
+# Generated by GNU Autoconf 2.72 for Wine 11.7.
 #
 # Report bugs to <wine-devel@winehq.org>.
 #
@@ -603,8 +603,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='Wine'
 PACKAGE_TARNAME='wine'
-PACKAGE_VERSION='11.6'
-PACKAGE_STRING='Wine 11.6'
+PACKAGE_VERSION='11.7'
+PACKAGE_STRING='Wine 11.7'
 PACKAGE_BUGREPORT='wine-devel@winehq.org'
 PACKAGE_URL='https://www.winehq.org'
 
@@ -776,7 +776,6 @@ IOKIT_LIBS
 DISKARBITRATION_LIBS
 COREFOUNDATION_LIBS
 CORETEXT_LIBS
-DELAYLOADFLAG
 CONFIGURE_TARGETS
 DISABLED_SUBDIRS
 SUBDIRS
@@ -811,6 +810,7 @@ SED_CMD
 RUNTESTFLAGS
 wine64dir
 toolsdir
+toolsext
 x86_64_DISABLED_SUBDIRS
 x86_64_DELAYLOADFLAG
 x86_64_STRIP
@@ -872,7 +872,6 @@ aarch64_CFLAGS
 aarch64_CXX
 aarch64_CC
 HOST_ARCH
-toolsext
 TARGETFLAGS
 LD
 CPPBIN
@@ -2499,7 +2498,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-'configure' configures Wine 11.6 to adapt to many kinds of systems.
+'configure' configures Wine 11.7 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -2569,7 +2568,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of Wine 11.6:";;
+     short | recursive ) echo "Configuration of Wine 11.7:";;
    esac
   cat <<\_ACEOF
 
@@ -2911,7 +2910,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-Wine configure 11.6
+Wine configure 11.7
 generated by GNU Autoconf 2.72
 
 Copyright (C) 2023 Free Software Foundation, Inc.
@@ -3317,7 +3316,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by Wine $as_me 11.6, which was
+It was created by Wine $as_me 11.7, which was
 generated by GNU Autoconf 2.72.  Invocation command line was
 
   $ $0$ac_configure_args_raw
@@ -6598,13 +6597,6 @@ then
     fi
 fi
 
-case $build_os in
-  cygwin*|mingw32*) toolsext=".exe"
- ;;
-  *) toolsext=""
- ;;
-esac
-
 HOST_ARCH=unknown
 case "$host_cpu" in
   aarch64*)        HOST_ARCH=aarch64 ;;
@@ -6614,20 +6606,30 @@ case "$host_cpu" in
 esac
 
 
+
+case $build_os in
+  cygwin*|mingw32*) toolsext=".exe"
+ ;;
+  *) toolsext=""
+ ;;
+esac
+
 case $host_os in
-  darwin*)
-    with_fontconfig=${with_fontconfig:-no}
-    ;;
-  mingw32*|cygwin*)
+  mingw32*)
     enable_archs=${enable_archs:-$HOST_ARCH}
     eval "${HOST_ARCH}_CC=\$CC"
+    with_mingw=${with_mingw:-no}
+    ;;
+esac
+
+case $host_os in
+  mingw32*|cygwin*)
         enable_loader=${enable_loader:-no}
     enable_server=${enable_server:-no}
     enable_wine=${enable_wine:-no}
     enable_win16=${enable_win16:-no}
         with_x=${with_x:-no}
     with_pthread=${with_pthread:-no}
-    with_mingw=${with_mingw:-no}
     ;;
 esac
 
@@ -10528,8 +10530,8 @@ CXXFLAGS=$saved_CXXFLAGS
 LDFLAGS=$saved_LDFLAGS
 
 case $HOST_ARCH-$host_os in
-  x86_64-darwin*|arm-*|aarch64-*)
-    test "x$PE_ARCHS" != x || as_fn_error $? "PE cross-compilation is required for $host, please install clang/llvm-dlltool/lld, or llvm-mingw." "$LINENO" 5
+  x86_64-darwin*|arm-*|aarch64-*|*-cygwin*)
+    test "x$PE_ARCHS" != x || as_fn_error $? "PE cross-compilation is required for $host, please install mingw-w64, clang/llvm-dlltool/lld, or llvm-mingw." "$LINENO" 5
     DLLEXT="" ;;
   *)
     DLLEXT=".so"
@@ -12401,37 +12403,6 @@ case $host_os in
   cygwin*|mingw32*)
     LIBEXT="dll"
     DLLEXT=""
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -Wl,-delayload,autoconftest.dll" >&5
-printf %s "checking whether the compiler supports -Wl,-delayload,autoconftest.dll... " >&6; }
-if test ${ac_cv_cflags__Wl__delayload_autoconftest_dll+y}
-then :
-  printf %s "(cached) " >&6
-else case e in #(
-  e) ac_wine_try_cflags_saved=$CFLAGS
-CFLAGS="$CFLAGS -Wl,-delayload,autoconftest.dll"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-int main(int argc, char **argv) { return 0; }
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-  ac_cv_cflags__Wl__delayload_autoconftest_dll=yes
-else case e in #(
-  e) ac_cv_cflags__Wl__delayload_autoconftest_dll=no ;;
-esac
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
-    conftest$ac_exeext conftest.$ac_ext
-CFLAGS=$ac_wine_try_cflags_saved ;;
-esac
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cflags__Wl__delayload_autoconftest_dll" >&5
-printf "%s\n" "$ac_cv_cflags__Wl__delayload_autoconftest_dll" >&6; }
-if test "x$ac_cv_cflags__Wl__delayload_autoconftest_dll" = xyes
-then :
-  DELAYLOADFLAG="-Wl,-delayload,"
-
-fi
     ;;
 
   darwin*)
@@ -12439,6 +12410,7 @@ fi
     DLLFLAGS="$DLLFLAGS -fPIC"
     LDDLLFLAGS="-fPIC"
     enable_winemac_drv=${enable_winemac_drv:-yes}
+    with_fontconfig=${with_fontconfig:-no}
         CORETEXT_LIBS="-framework CoreText"
 
     COREFOUNDATION_LIBS="-framework CoreFoundation"
@@ -14269,384 +14241,6 @@ fi
         as_fn_append wine_notices "|libtiff ${notice_platform}MinGW development files not found; using bundled version."
     fi
 
-    if ${XML2_PE_CFLAGS:+false} :
-then :
-  if test ${MINGW_PKG_CONFIG+y}
-then :
-  XML2_PE_CFLAGS=`$MINGW_PKG_CONFIG --cflags libxml-2.0 2>/dev/null`
-fi
-fi
-if ${XML2_PE_LIBS:+false} :
-then :
-  if test ${MINGW_PKG_CONFIG+y}
-then :
-  XML2_PE_LIBS=`$MINGW_PKG_CONFIG --libs libxml-2.0 2>/dev/null`
-fi
-fi
-XML2_PE_LIBS=${XML2_PE_LIBS:-"-lxml2"}
-if test -n "$XML2_PE_CFLAGS$XML2_PE_LIBS"
-then :
-  ac_save_CPPFLAGS=$CPPFLAGS
-CPPFLAGS="$CPPFLAGS $XML2_PE_CFLAGS"
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for MinGW libxml/parser.h" >&5
-printf %s "checking for MinGW libxml/parser.h... " >&6; }
-if test ${ac_cv_mingw_header_libxml_parser_h+y}
-then :
-  printf %s "(cached) " >&6
-else case e in #(
-  e) ac_wine_check_headers_saved_cc=$CC
-ac_wine_check_headers_saved_exeext=$ac_exeext
-eval CC=\$${wine_arch}_CC
-ac_exeext=".exe"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <libxml/parser.h>
-int
-main (void)
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
-  ac_cv_mingw_header_libxml_parser_h=yes
-else case e in #(
-  e) ac_cv_mingw_header_libxml_parser_h=no ;;
-esac
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-CC=$ac_wine_check_headers_saved_cc
-ac_exeext=$ac_wine_check_headers_saved_exeext ;;
-esac
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_mingw_header_libxml_parser_h" >&5
-printf "%s\n" "$ac_cv_mingw_header_libxml_parser_h" >&6; }
-if test "x$ac_cv_mingw_header_libxml_parser_h" = xyes
-then :
-
-fi
-        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for MinGW libxml/xmlsave.h" >&5
-printf %s "checking for MinGW libxml/xmlsave.h... " >&6; }
-if test ${ac_cv_mingw_header_libxml_xmlsave_h+y}
-then :
-  printf %s "(cached) " >&6
-else case e in #(
-  e) ac_wine_check_headers_saved_cc=$CC
-ac_wine_check_headers_saved_exeext=$ac_exeext
-eval CC=\$${wine_arch}_CC
-ac_exeext=".exe"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <libxml/xmlsave.h>
-int
-main (void)
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
-  ac_cv_mingw_header_libxml_xmlsave_h=yes
-else case e in #(
-  e) ac_cv_mingw_header_libxml_xmlsave_h=no ;;
-esac
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-CC=$ac_wine_check_headers_saved_cc
-ac_exeext=$ac_wine_check_headers_saved_exeext ;;
-esac
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_mingw_header_libxml_xmlsave_h" >&5
-printf "%s\n" "$ac_cv_mingw_header_libxml_xmlsave_h" >&6; }
-if test "x$ac_cv_mingw_header_libxml_xmlsave_h" = xyes
-then :
-
-fi
-        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for MinGW libxml/SAX2.h" >&5
-printf %s "checking for MinGW libxml/SAX2.h... " >&6; }
-if test ${ac_cv_mingw_header_libxml_SAX2_h+y}
-then :
-  printf %s "(cached) " >&6
-else case e in #(
-  e) ac_wine_check_headers_saved_cc=$CC
-ac_wine_check_headers_saved_exeext=$ac_exeext
-eval CC=\$${wine_arch}_CC
-ac_exeext=".exe"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <libxml/SAX2.h>
-int
-main (void)
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
-  ac_cv_mingw_header_libxml_SAX2_h=yes
-else case e in #(
-  e) ac_cv_mingw_header_libxml_SAX2_h=no ;;
-esac
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-CC=$ac_wine_check_headers_saved_cc
-ac_exeext=$ac_wine_check_headers_saved_exeext ;;
-esac
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_mingw_header_libxml_SAX2_h" >&5
-printf "%s\n" "$ac_cv_mingw_header_libxml_SAX2_h" >&6; }
-if test "x$ac_cv_mingw_header_libxml_SAX2_h" = xyes
-then :
-
-fi
-        if test "$ac_cv_mingw_header_libxml_parser_h" = "yes" -a "$ac_cv_mingw_header_libxml_xmlsave_h" = "yes" -a "$ac_cv_mingw_header_libxml_SAX2_h" = "yes"
-        then
-            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for xmlFirstElementChild in MinGW -lxml2" >&5
-printf %s "checking for xmlFirstElementChild in MinGW -lxml2... " >&6; }
-if test ${ac_cv_mingw_lib_xml2+y}
-then :
-  printf %s "(cached) " >&6
-else case e in #(
-  e) ac_wine_check_headers_saved_cc=$CC
-ac_wine_check_headers_saved_exeext=$ac_exeext
-ac_wine_check_headers_saved_libs=$LIBS
-eval CC=\$${wine_arch}_CC
-ac_exeext=".exe"
-LIBS="-lxml2 $XML2_PE_LIBS $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.
-   The 'extern "C"' is for builds by C++ compilers;
-   although this is not generally supported in C code supporting it here
-   has little cost and some practical benefit (sr 110532).  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char xmlFirstElementChild (void);
-int
-main (void)
-{
-return xmlFirstElementChild ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-  ac_cv_mingw_lib_xml2=yes
-else case e in #(
-  e) ac_cv_mingw_lib_xml2=no ;;
-esac
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
-    conftest$ac_exeext conftest.$ac_ext
-CC=$ac_wine_check_headers_saved_cc
-ac_exeext=$ac_wine_check_headers_saved_exeext
-LIBS=$ac_wine_check_headers_saved_libs ;;
-esac
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_mingw_lib_xml2" >&5
-printf "%s\n" "$ac_cv_mingw_lib_xml2" >&6; }
-if test "x$ac_cv_mingw_lib_xml2" = xyes
-then :
-  :
-else case e in #(
-  e) XML2_PE_CFLAGS=""; XML2_PE_LIBS="" ;;
-esac
-fi
-        else
-            XML2_PE_CFLAGS=""
-            XML2_PE_LIBS=""
-        fi
-CPPFLAGS=$ac_save_CPPFLAGS
-fi
-
-    if test "x$XML2_PE_LIBS" = "x"
-    then
-        as_fn_append wine_notices "|libxml2 ${notice_platform}MinGW development files not found (or too old); using bundled version."
-    fi
-
-    if ${XSLT_PE_CFLAGS:+false} :
-then :
-  if test ${MINGW_PKG_CONFIG+y}
-then :
-  XSLT_PE_CFLAGS=`$MINGW_PKG_CONFIG --cflags libxslt 2>/dev/null`
-fi
-fi
-if ${XSLT_PE_LIBS:+false} :
-then :
-  if test ${MINGW_PKG_CONFIG+y}
-then :
-  XSLT_PE_LIBS=`$MINGW_PKG_CONFIG --libs libxslt 2>/dev/null`
-fi
-fi
-XSLT_PE_LIBS=${XSLT_PE_LIBS:-"-lxslt"}
-if test -n "$XSLT_PE_CFLAGS$XSLT_PE_LIBS"
-then :
-  ac_save_CPPFLAGS=$CPPFLAGS
-CPPFLAGS="$CPPFLAGS $XSLT_PE_CFLAGS"
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for MinGW libxslt/pattern.h" >&5
-printf %s "checking for MinGW libxslt/pattern.h... " >&6; }
-if test ${ac_cv_mingw_header_libxslt_pattern_h+y}
-then :
-  printf %s "(cached) " >&6
-else case e in #(
-  e) ac_wine_check_headers_saved_cc=$CC
-ac_wine_check_headers_saved_exeext=$ac_exeext
-eval CC=\$${wine_arch}_CC
-ac_exeext=".exe"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <libxslt/pattern.h>
-int
-main (void)
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
-  ac_cv_mingw_header_libxslt_pattern_h=yes
-else case e in #(
-  e) ac_cv_mingw_header_libxslt_pattern_h=no ;;
-esac
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-CC=$ac_wine_check_headers_saved_cc
-ac_exeext=$ac_wine_check_headers_saved_exeext ;;
-esac
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_mingw_header_libxslt_pattern_h" >&5
-printf "%s\n" "$ac_cv_mingw_header_libxslt_pattern_h" >&6; }
-if test "x$ac_cv_mingw_header_libxslt_pattern_h" = xyes
-then :
-
-fi
-        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for MinGW libxslt/transform.h" >&5
-printf %s "checking for MinGW libxslt/transform.h... " >&6; }
-if test ${ac_cv_mingw_header_libxslt_transform_h+y}
-then :
-  printf %s "(cached) " >&6
-else case e in #(
-  e) ac_wine_check_headers_saved_cc=$CC
-ac_wine_check_headers_saved_exeext=$ac_exeext
-eval CC=\$${wine_arch}_CC
-ac_exeext=".exe"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <libxslt/transform.h>
-int
-main (void)
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
-  ac_cv_mingw_header_libxslt_transform_h=yes
-else case e in #(
-  e) ac_cv_mingw_header_libxslt_transform_h=no ;;
-esac
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-CC=$ac_wine_check_headers_saved_cc
-ac_exeext=$ac_wine_check_headers_saved_exeext ;;
-esac
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_mingw_header_libxslt_transform_h" >&5
-printf "%s\n" "$ac_cv_mingw_header_libxslt_transform_h" >&6; }
-if test "x$ac_cv_mingw_header_libxslt_transform_h" = xyes
-then :
-
-fi
-        if test "$ac_cv_mingw_header_libxslt_pattern_h" = "yes" -a "$ac_cv_mingw_header_libxslt_transform_h" = "yes"
-        then
-            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for xsltCompilePattern in MinGW -lxslt" >&5
-printf %s "checking for xsltCompilePattern in MinGW -lxslt... " >&6; }
-if test ${ac_cv_mingw_lib_xslt+y}
-then :
-  printf %s "(cached) " >&6
-else case e in #(
-  e) ac_wine_check_headers_saved_cc=$CC
-ac_wine_check_headers_saved_exeext=$ac_exeext
-ac_wine_check_headers_saved_libs=$LIBS
-eval CC=\$${wine_arch}_CC
-ac_exeext=".exe"
-LIBS="-lxslt $XSLT_PE_LIBS $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.
-   The 'extern "C"' is for builds by C++ compilers;
-   although this is not generally supported in C code supporting it here
-   has little cost and some practical benefit (sr 110532).  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char xsltCompilePattern (void);
-int
-main (void)
-{
-return xsltCompilePattern ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-  ac_cv_mingw_lib_xslt=yes
-else case e in #(
-  e) ac_cv_mingw_lib_xslt=no ;;
-esac
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
-    conftest$ac_exeext conftest.$ac_ext
-CC=$ac_wine_check_headers_saved_cc
-ac_exeext=$ac_wine_check_headers_saved_exeext
-LIBS=$ac_wine_check_headers_saved_libs ;;
-esac
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_mingw_lib_xslt" >&5
-printf "%s\n" "$ac_cv_mingw_lib_xslt" >&6; }
-if test "x$ac_cv_mingw_lib_xslt" = xyes
-then :
-  :
-else case e in #(
-  e) XSLT_PE_CFLAGS=""; XSLT_PE_LIBS="" ;;
-esac
-fi
-        else
-            XSLT_PE_CFLAGS=""
-            XSLT_PE_LIBS=""
-        fi
-CPPFLAGS=$ac_save_CPPFLAGS
-fi
-
-    if test "x$XSLT_PE_LIBS" = "x"
-    then
-        as_fn_append wine_notices "|libxslt ${notice_platform}MinGW development files not found; using bundled version."
-    fi
-
     if ${VKD3D_PE_CFLAGS:+false} :
 then :
   if test ${MINGW_PKG_CONFIG+y}
@@ -19672,7 +19266,7 @@ then :
   printf %s "(cached) " >&6
 else case e in #(
   e) ac_check_lib_save_LIBS=$LIBS
-LIBS="-lasound  $LIBS"
+LIBS="-lasound $ALSA_LIBS $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -25132,7 +24726,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by Wine $as_me 11.6, which was
+This file was extended by Wine $as_me 11.7, which was
 generated by GNU Autoconf 2.72.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -25192,7 +24786,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config='$ac_cs_config_escaped'
 ac_cs_version="\\
-Wine config.status 11.6
+Wine config.status 11.7
 configured by $0, generated by GNU Autoconf 2.72,
   with options \\"\$ac_cs_config\\"
 
@@ -25386,7 +24980,6 @@ ac_ct_CXX = $ac_ct_CXX
 CPPBIN = $CPPBIN
 LD = $LD
 TARGETFLAGS = $TARGETFLAGS
-toolsext = $toolsext
 HOST_ARCH = $HOST_ARCH
 aarch64_CC = $aarch64_CC
 aarch64_CXX = $aarch64_CXX
@@ -25448,6 +25041,7 @@ x86_64_TARGET = $x86_64_TARGET
 x86_64_STRIP = $x86_64_STRIP
 x86_64_DELAYLOADFLAG = $x86_64_DELAYLOADFLAG
 x86_64_DISABLED_SUBDIRS = $x86_64_DISABLED_SUBDIRS
+toolsext = $toolsext
 toolsdir = $toolsdir
 wine64dir = $wine64dir
 RUNTESTFLAGS = $RUNTESTFLAGS
@@ -25482,7 +25076,6 @@ READELF = $READELF
 SUBDIRS = $SUBDIRS
 DISABLED_SUBDIRS = $DISABLED_SUBDIRS
 CONFIGURE_TARGETS = $CONFIGURE_TARGETS
-DELAYLOADFLAG = $DELAYLOADFLAG
 CORETEXT_LIBS = $CORETEXT_LIBS
 COREFOUNDATION_LIBS = $COREFOUNDATION_LIBS
 DISKARBITRATION_LIBS = $DISKARBITRATION_LIBS
diff --git a/configure.ac b/configure.ac
index a3893fc4703b..258b03a1c9e8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -160,11 +160,6 @@ then
     fi
 fi
 
-case $build_os in
-  cygwin*|mingw32*) AC_SUBST(toolsext,".exe") ;;
-  *) AC_SUBST(toolsext,"") ;;
-esac
-
 HOST_ARCH=unknown
 case "$host_cpu" in
   aarch64*)        HOST_ARCH=aarch64 ;;
@@ -175,13 +170,23 @@ esac
 m4_set_add_all([_AC_SUBST_VARS],[HOST_ARCH]m4_foreach([cpu],[aarch64,arm,arm64ec,i386,x86_64],
                                 [m4_foreach([var],[CC,CXX,CFLAGS,CXXFLAGS,EXTRACFLAGS,EXTRACXXFLAGS,LDFLAGS,DEBUG,TARGET,STRIP,DELAYLOADFLAG,DISABLED_SUBDIRS],[,cpu[_]var])]))
 
+dnl Some special cases for the Windows platform
+
+case $build_os in
+  cygwin*|mingw32*) AC_SUBST(toolsext,".exe") ;;
+  *) AC_SUBST(toolsext,"") ;;
+esac
+
 case $host_os in
-  darwin*)
-    with_fontconfig=${with_fontconfig:-no}
-    ;;
-  mingw32*|cygwin*)
+  mingw32*)
     enable_archs=${enable_archs:-$HOST_ARCH}
     AS_VAR_SET(${HOST_ARCH}_CC,$CC)
+    with_mingw=${with_mingw:-no}
+    ;;
+esac
+
+case $host_os in
+  mingw32*|cygwin*)
     dnl Disable modules that can't be used on Windows
     enable_loader=${enable_loader:-no}
     enable_server=${enable_server:-no}
@@ -190,7 +195,6 @@ case $host_os in
     dnl Disable dependencies that are not useful on Windows
     with_x=${with_x:-no}
     with_pthread=${with_pthread:-no}
-    with_mingw=${with_mingw:-no}
     ;;
 esac
 
@@ -695,8 +699,8 @@ CXXFLAGS=$saved_CXXFLAGS
 LDFLAGS=$saved_LDFLAGS
 
 case $HOST_ARCH-$host_os in
-  x86_64-darwin*|arm-*|aarch64-*)
-    test "x$PE_ARCHS" != x || AC_MSG_ERROR([PE cross-compilation is required for $host, please install clang/llvm-dlltool/lld, or llvm-mingw.])
+  x86_64-darwin*|arm-*|aarch64-*|*-cygwin*)
+    test "x$PE_ARCHS" != x || AC_MSG_ERROR([PE cross-compilation is required for $host, please install mingw-w64, clang/llvm-dlltool/lld, or llvm-mingw.])
     DLLEXT="" ;;
   *)
     AC_SUBST(DLLEXT,".so")
@@ -967,7 +971,6 @@ case $host_os in
   cygwin*|mingw32*)
     LIBEXT="dll"
     DLLEXT=""
-    WINE_TRY_CFLAGS([-Wl,-delayload,autoconftest.dll],[AC_SUBST(DELAYLOADFLAG,["-Wl,-delayload,"])])
     ;;
 
   darwin*)
@@ -975,6 +978,7 @@ case $host_os in
     DLLFLAGS="$DLLFLAGS -fPIC"
     LDDLLFLAGS="-fPIC"
     enable_winemac_drv=${enable_winemac_drv:-yes}
+    with_fontconfig=${with_fontconfig:-no}
     dnl declare needed frameworks
     AC_SUBST(CORETEXT_LIBS,"-framework CoreText")
     AC_SUBST(COREFOUNDATION_LIBS,"-framework CoreFoundation")
@@ -1195,37 +1199,6 @@ then
         WINE_NOTICE([libtiff ${notice_platform}MinGW development files not found; using bundled version.])
     fi
 
-    WINE_MINGW_PACKAGE_FLAGS(XML2,[libxml-2.0],[-lxml2],
-        [WINE_CHECK_MINGW_HEADER(libxml/parser.h)
-        WINE_CHECK_MINGW_HEADER(libxml/xmlsave.h)
-        WINE_CHECK_MINGW_HEADER(libxml/SAX2.h)
-        if test "$ac_cv_mingw_header_libxml_parser_h" = "yes" -a "$ac_cv_mingw_header_libxml_xmlsave_h" = "yes" -a "$ac_cv_mingw_header_libxml_SAX2_h" = "yes"
-        then
-            WINE_CHECK_MINGW_LIB(xml2,xmlFirstElementChild,[:],[XML2_PE_CFLAGS=""; XML2_PE_LIBS=""],[$XML2_PE_LIBS])
-        else
-            XML2_PE_CFLAGS=""
-            XML2_PE_LIBS=""
-        fi])
-    if test "x$XML2_PE_LIBS" = "x"
-    then
-        WINE_NOTICE([libxml2 ${notice_platform}MinGW development files not found (or too old); using bundled version.])
-    fi
-
-    WINE_MINGW_PACKAGE_FLAGS(XSLT,[libxslt],[-lxslt],
-        [WINE_CHECK_MINGW_HEADER(libxslt/pattern.h)
-        WINE_CHECK_MINGW_HEADER(libxslt/transform.h)
-        if test "$ac_cv_mingw_header_libxslt_pattern_h" = "yes" -a "$ac_cv_mingw_header_libxslt_transform_h" = "yes"
-        then
-            WINE_CHECK_MINGW_LIB(xslt,xsltCompilePattern,[:],[XSLT_PE_CFLAGS=""; XSLT_PE_LIBS=""],[$XSLT_PE_LIBS])
-        else
-            XSLT_PE_CFLAGS=""
-            XSLT_PE_LIBS=""
-        fi])
-    if test "x$XSLT_PE_LIBS" = "x"
-    then
-        WINE_NOTICE([libxslt ${notice_platform}MinGW development files not found; using bundled version.])
-    fi
-
     WINE_MINGW_PACKAGE_FLAGS(VKD3D,[libvkd3d-utils libvkd3d libvkd3d-shader],[-lvkd3d-utils -lvkd3d -lvkd3d-shader],
         [WINE_CHECK_MINGW_HEADER(vkd3d_utils.h)
         WINE_CHECK_MINGW_HEADER(vkd3d_shader.h)
@@ -1786,7 +1759,7 @@ AC_SUBST(ALSA_LIBS,"")
 if test "x$with_alsa" != "xno"
 then
     WINE_PACKAGE_FLAGS(ALSA,[alsa],[-lasound],,,
-        [AC_CHECK_LIB(asound,snd_pcm_hw_params_get_access_mask,[:],[ALSA_LIBS=""])])
+        [AC_CHECK_LIB(asound,snd_pcm_hw_params_get_access_mask,[:],[ALSA_LIBS=""],[$ALSA_LIBS])])
 fi
 WINE_NOTICE_WITH(alsa,[test -z "$ALSA_LIBS"],
                  [libasound ${notice_platform}development files not found, Alsa won't be supported.],
diff --git a/dlls/amstream/ddrawstream.c b/dlls/amstream/ddrawstream.c
index 29e17f545426..2f616dfc1e88 100644
--- a/dlls/amstream/ddrawstream.c
+++ b/dlls/amstream/ddrawstream.c
@@ -92,11 +92,14 @@ struct ddraw_sample
     struct list entry;
     HRESULT update_hr;
     bool pending;
+    bool needs_mt;
 };
 
 static HRESULT ddrawstreamsample_create(struct ddraw_stream *parent, IDirectDrawSurface *surface,
     const RECT *rect, IDirectDrawStreamSample **ddraw_stream_sample);
 
+static HRESULT WINAPI ddrawstream_check_pixel_format(const DDSURFACEDESC *format);
+
 static void remove_queued_update(struct ddraw_sample *sample)
 {
     sample->pending = false;
@@ -326,6 +329,7 @@ static HRESULT WINAPI ddraw_IAMMediaStream_Initialize(IAMMediaStream *iface, IUn
                                                     REFMSPID purpose_id, const STREAM_TYPE stream_type)
 {
     struct ddraw_stream *stream = impl_from_IAMMediaStream(iface);
+    DDSURFACEDESC desc = { .dwSize = sizeof(desc) };
     HRESULT hr;
 
     TRACE("stream %p, source_object %p, flags %lx, purpose_id %s, stream_type %u.\n", stream, source_object, flags,
@@ -348,6 +352,14 @@ static HRESULT WINAPI ddraw_IAMMediaStream_Initialize(IAMMediaStream *iface, IUn
             && FAILED(hr = IUnknown_QueryInterface(source_object, &IID_IDirectDraw, (void **)&stream->ddraw)))
         FIXME("Stream object doesn't implement IDirectDraw interface, hr %#lx.\n", hr);
 
+    if (stream->ddraw
+            && SUCCEEDED(IDirectDraw_GetDisplayMode(stream->ddraw, &desc))
+            && SUCCEEDED(ddrawstream_check_pixel_format(&desc)))
+    {
+        stream->format.flags |= DDSD_PIXELFORMAT;
+        stream->format.pf = desc.ddpfPixelFormat;
+    }
+
     if (!source_object)
     {
         if (FAILED(hr = DirectDrawCreate(NULL, &stream->ddraw, NULL)))
@@ -553,6 +565,22 @@ static unsigned int align(unsigned int n, unsigned int alignment)
     return (n + alignment - 1) & ~(alignment - 1);
 }
 
+static void subtype_from_pf(GUID *subtype, const DDPIXELFORMAT *pf)
+{
+    if (pf->dwRGBBitCount == 16 && pf->dwRBitMask == 0x7c00)
+        *subtype = MEDIASUBTYPE_RGB555;
+    else if (pf->dwRGBBitCount == 16 && pf->dwRBitMask == 0xf800)
+        *subtype = MEDIASUBTYPE_RGB565;
+    else if (pf->dwRGBBitCount == 24)
+        *subtype = MEDIASUBTYPE_RGB24;
+    else if (pf->dwRGBBitCount == 32)
+        *subtype = MEDIASUBTYPE_RGB32;
+    else if (pf->dwRGBBitCount == 8 && (pf->dwFlags & DDPF_PALETTEINDEXED8))
+        *subtype = MEDIASUBTYPE_RGB8;
+    else
+        FIXME("Unknown flags %#lx, bit count %lu.\n", pf->dwFlags, pf->dwRGBBitCount);
+}
+
 static void set_mt_from_desc(AM_MEDIA_TYPE *mt, const DDSURFACEDESC *format, unsigned int pitch)
 {
     VIDEOINFO *videoinfo = CoTaskMemAlloc(sizeof(VIDEOINFO));
@@ -577,53 +605,24 @@ static void set_mt_from_desc(AM_MEDIA_TYPE *mt, const DDSURFACEDESC *format, uns
     mt->lSampleSize = videoinfo->bmiHeader.biSizeImage;
     mt->bFixedSizeSamples = TRUE;
 
-    if (format->ddpfPixelFormat.dwRGBBitCount == 16 && format->ddpfPixelFormat.dwRBitMask == 0x7c00)
-    {
-        mt->subtype = MEDIASUBTYPE_RGB555;
-    }
-    else if (format->ddpfPixelFormat.dwRGBBitCount == 16 && format->ddpfPixelFormat.dwRBitMask == 0xf800)
+    subtype_from_pf(&mt->subtype, &format->ddpfPixelFormat);
+
+    if (format->ddpfPixelFormat.dwRGBBitCount == 16 && format->ddpfPixelFormat.dwRBitMask == 0xf800)
     {
-        mt->subtype = MEDIASUBTYPE_RGB565;
-        videoinfo = (VIDEOINFO *)mt->pbFormat;
         videoinfo->bmiHeader.biCompression = BI_BITFIELDS;
         videoinfo->dwBitMasks[iRED]   = 0xf800;
         videoinfo->dwBitMasks[iGREEN] = 0x07e0;
         videoinfo->dwBitMasks[iBLUE]  = 0x001f;
     }
-    else if (format->ddpfPixelFormat.dwRGBBitCount == 24)
-    {
-        mt->subtype = MEDIASUBTYPE_RGB24;
-    }
-    else if (format->ddpfPixelFormat.dwRGBBitCount == 32)
-    {
-        mt->subtype = MEDIASUBTYPE_RGB32;
-    }
     else if (format->ddpfPixelFormat.dwRGBBitCount == 8 && (format->ddpfPixelFormat.dwFlags & DDPF_PALETTEINDEXED8))
     {
-        mt->subtype = MEDIASUBTYPE_RGB8;
         videoinfo->bmiHeader.biClrUsed = 256;
         /* FIXME: Translate the palette. */
     }
-    else
-    {
-        FIXME("Unknown flags %#lx, bit count %lu.\n",
-                format->ddpfPixelFormat.dwFlags, format->ddpfPixelFormat.dwRGBBitCount);
-    }
 }
 
-static HRESULT WINAPI ddraw_IDirectDrawMediaStream_SetFormat(IDirectDrawMediaStream *iface,
-        const DDSURFACEDESC *format, IDirectDrawPalette *palette)
+static HRESULT WINAPI ddrawstream_check_pixel_format(const DDSURFACEDESC *format)
 {
-    struct ddraw_stream *stream = impl_from_IDirectDrawMediaStream(iface);
-    struct format old_format;
-    IPin *old_peer;
-    HRESULT hr;
-
-    TRACE("stream %p, format %p, palette %p.\n", stream, format, palette);
-
-    if (palette)
-        FIXME("Setting palette is not yet supported.\n");
-
     if (!format)
         return E_POINTER;
 
@@ -719,6 +718,25 @@ static HRESULT WINAPI ddraw_IDirectDrawMediaStream_SetFormat(IDirectDrawMediaStr
         }
     }
 
+    return S_OK;
+}
+
+static HRESULT WINAPI ddraw_IDirectDrawMediaStream_SetFormat(IDirectDrawMediaStream *iface,
+        const DDSURFACEDESC *format, IDirectDrawPalette *palette)
+{
+    struct ddraw_stream *stream = impl_from_IDirectDrawMediaStream(iface);
+    struct format old_format;
+    IPin *old_peer;
+    HRESULT hr;
+
+    TRACE("stream %p, format %p, palette %p.\n", stream, format, palette);
+
+    if (palette)
+        FIXME("Setting palette is not yet supported.\n");
+
+    if (FAILED(hr = ddrawstream_check_pixel_format(format)))
+        return hr;
+
     EnterCriticalSection(&stream->cs);
 
     old_format = stream->format;
@@ -1060,6 +1078,7 @@ static HRESULT WINAPI ddraw_sink_ReceiveConnection(IPin *iface, IPin *peer, cons
     DWORD width;
     DWORD height;
     DDPIXELFORMAT pf = {sizeof(DDPIXELFORMAT)};
+    HRESULT hr;
 
     TRACE("stream %p, peer %p, mt %p.\n", stream, peer, mt);
     strmbase_dump_media_type(mt);
@@ -1137,6 +1156,21 @@ static HRESULT WINAPI ddraw_sink_ReceiveConnection(IPin *iface, IPin *peer, cons
         return VFW_E_INVALID_DIRECTION;
     }
 
+    if (video_info->bmiHeader.biHeight > 0)
+    {
+        AM_MEDIA_TYPE top_down_mt;
+        CopyMediaType(&top_down_mt, mt);
+        ((VIDEOINFOHEADER*)top_down_mt.pbFormat)->bmiHeader.biHeight = -height;
+        hr = IPin_QueryAccept(peer, &top_down_mt);
+        FreeMediaType(&top_down_mt);
+        if (hr != S_OK)
+        {
+            TRACE("Rejecting filter that can't produce top-down images.\n");
+            LeaveCriticalSection(&stream->cs);
+            return VFW_E_TYPE_NOT_ACCEPTED;
+        }
+    }
+
     CopyMediaType(&stream->mt, mt);
     IPin_AddRef(stream->peer = peer);
 
@@ -1161,7 +1195,9 @@ static HRESULT WINAPI ddraw_sink_Disconnect(IPin *iface)
     if (!stream->peer)
     {
         LeaveCriticalSection(&stream->cs);
-        return S_FALSE;
+        /* The MS documentation for IPin::Disconnect says to return S_FALSE
+         * when not connected, but the MS implementation returns S_OK */
+        return S_OK;
     }
 
     IPin_Release(stream->peer);
@@ -1258,11 +1294,33 @@ static HRESULT WINAPI ddraw_sink_QueryId(IPin *iface, WCHAR **id)
 
 static HRESULT WINAPI ddraw_sink_QueryAccept(IPin *iface, const AM_MEDIA_TYPE *mt)
 {
+    struct ddraw_stream *stream = impl_from_IPin(iface);
+    GUID subtype;
+
     TRACE("iface %p, mt %p.\n", iface, mt);
 
-    if (IsEqualGUID(&mt->majortype, &MEDIATYPE_Video)
-            && IsEqualGUID(&mt->subtype, &MEDIASUBTYPE_RGB8)
-            && IsEqualGUID(&mt->formattype, &FORMAT_VideoInfo))
+    if (!IsEqualGUID(&mt->majortype, &MEDIATYPE_Video)
+            || !IsEqualGUID(&mt->formattype, &FORMAT_VideoInfo)
+            || ((VIDEOINFOHEADER *)mt->pbFormat)->bmiHeader.biHeight < 0)
+        return VFW_E_TYPE_NOT_ACCEPTED;
+
+    if (stream->format.flags & DDSD_PIXELFORMAT)
+    {
+        subtype_from_pf(&subtype, &stream->format.pf);
+
+        return IsEqualGUID(&mt->subtype, &subtype) ? S_OK : VFW_E_TYPE_NOT_ACCEPTED;
+    }
+
+    if (IsEqualGUID(&mt->subtype, &MEDIASUBTYPE_RGB8))
+        return S_OK;
+
+    if (!stream->peer)
+        return VFW_E_TYPE_NOT_ACCEPTED;
+
+    if (IsEqualGUID(&mt->subtype, &MEDIASUBTYPE_RGB555)
+            || IsEqualGUID(&mt->subtype, &MEDIASUBTYPE_RGB565)
+            || IsEqualGUID(&mt->subtype, &MEDIASUBTYPE_RGB24)
+            || IsEqualGUID(&mt->subtype, &MEDIASUBTYPE_RGB32))
         return S_OK;
 
     return VFW_E_TYPE_NOT_ACCEPTED;
@@ -2136,6 +2194,7 @@ static ULONG WINAPI media_sample_Release(IMediaSample *iface)
     if (!refcount)
     {
         IDirectDrawSurface_Unlock(sample->surface, NULL);
+        sample->needs_mt = false;
 
         WakeConditionVariable(&sample->update_cv);
 
@@ -2288,6 +2347,12 @@ static HRESULT WINAPI media_sample_GetMediaType(IMediaSample *iface, AM_MEDIA_TY
 
     TRACE("sample %p, ret_mt %p.\n", sample, ret_mt);
 
+    if (!sample->needs_mt)
+    {
+        *ret_mt = NULL;
+        return S_FALSE;
+    }
+
     /* Note that this usually matches the media type we pass to QueryAccept(),
      * but not if there's a sub-rect.
      * That's amstream just breaking the DirectShow rules.
@@ -2415,6 +2480,7 @@ static HRESULT ddrawstreamsample_create(struct ddraw_stream *parent, IDirectDraw
     object->ref = 1;
     object->parent = parent;
     object->mmstream = parent->parent;
+    object->needs_mt = true;
     InitializeConditionVariable(&object->update_cv);
     IAMMediaStream_AddRef(&parent->IAMMediaStream_iface);
     if (object->mmstream)
diff --git a/dlls/amstream/tests/amstream.c b/dlls/amstream/tests/amstream.c
index 8da987a6367a..7077c638c9f7 100644
--- a/dlls/amstream/tests/amstream.c
+++ b/dlls/amstream/tests/amstream.c
@@ -3020,11 +3020,19 @@ static void test_media_types(void)
         .cbSize = 0,
     };
     IAMMultiMediaStream *mmstream = create_ammultimediastream();
+    DDSURFACEDESC current = { .dwSize = sizeof(current) };
+    DDSURFACEDESC desired = { .dwSize = sizeof(desired) };
+    IDirectDrawMediaStream *ddraw_stream;
+    IDirectDrawPalette *palette;
+    struct testfilter source;
     IEnumMediaTypes *enummt;
+    AM_MEDIA_TYPE *pmt, mt;
+    VIDEOINFOHEADER *vih;
     IMediaStream *stream;
-    AM_MEDIA_TYPE *pmt;
+    IDirectDraw *ddraw;
+    unsigned int i, j;
     ULONG ref, count;
-    unsigned int i;
+    DWORD flags;
     HRESULT hr;
     IPin *pin;
 
@@ -3047,12 +3055,12 @@ static void test_media_types(void)
 
     static const GUID *rejected_subtypes[] =
     {
-        &MEDIASUBTYPE_RGB1,
-        &MEDIASUBTYPE_RGB4,
         &MEDIASUBTYPE_RGB565,
         &MEDIASUBTYPE_RGB555,
         &MEDIASUBTYPE_RGB24,
         &MEDIASUBTYPE_RGB32,
+        &MEDIASUBTYPE_RGB1,
+        &MEDIASUBTYPE_RGB4,
         &MEDIASUBTYPE_ARGB32,
         &MEDIASUBTYPE_ARGB1555,
         &MEDIASUBTYPE_ARGB4444,
@@ -3118,15 +3126,60 @@ static void test_media_types(void)
     ok(hr == VFW_E_TYPE_NOT_ACCEPTED, "Got hr %#lx.\n", hr);
     pmt->majortype = MEDIATYPE_Video;
 
+    testfilter_init(&source);
+
+    /* Make a copy of the media type so we can manipulate the VIDEOINFOHEADER */
+    CopyMediaType(&mt, pmt);
+    CoTaskMemFree(pmt);
+    vih = (VIDEOINFOHEADER *)mt.pbFormat;
+
+    vih->bmiHeader.biHeight = 1;
+    hr = IPin_QueryAccept(pin, &mt);
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+    /* A negative height is never accepted */
+    vih->bmiHeader.biHeight = -1;
+    hr = IPin_QueryAccept(pin, &mt);
+    ok(hr == VFW_E_TYPE_NOT_ACCEPTED, "Got hr %#lx.\n", hr);
+
     for (i = 0; i < ARRAY_SIZE(rejected_subtypes); ++i)
     {
-        pmt->subtype = *rejected_subtypes[i];
-        hr = IPin_QueryAccept(pin, pmt);
+        mt.subtype = *rejected_subtypes[i];
+        vih->bmiHeader.biHeight = 1;
+        hr = IPin_QueryAccept(pin, &mt);
         ok(hr == VFW_E_TYPE_NOT_ACCEPTED, "Got hr %#lx for subtype %s.\n",
             hr, wine_dbgstr_guid(rejected_subtypes[i]));
+        hr = IPin_ReceiveConnection(pin, &source.source.pin.IPin_iface, &mt);
+        ok(hr == (i < 4) ? S_OK : VFW_E_TYPE_NOT_ACCEPTED, "Got hr %#lx on ReceiveConnection for subtype %s.\n", hr,
+                wine_dbgstr_guid(rejected_subtypes[i]));
+
+        if (hr == S_OK)
+        {
+            for (j = 0; j < ARRAY_SIZE(rejected_subtypes); ++j)
+            {
+                mt.subtype = *rejected_subtypes[j];
+                hr = IPin_QueryAccept(pin, &mt);
+                ok(hr == (j < 4 ? S_OK : VFW_E_TYPE_NOT_ACCEPTED), "Got hr %#lx for subtype %s whilst connected.\n",
+                        hr, wine_dbgstr_guid(rejected_subtypes[j]));
+            }
+
+            /* A negative height is never accepted */
+            vih->bmiHeader.biHeight = -1;
+            for (j = 0; j < ARRAY_SIZE(rejected_subtypes); ++j)
+            {
+                mt.subtype = *rejected_subtypes[j];
+                hr = IPin_QueryAccept(pin, &mt);
+                ok(hr == VFW_E_TYPE_NOT_ACCEPTED, "Got hr %#lx for subtype %s using negative height.\n",
+                        hr, wine_dbgstr_guid(rejected_subtypes[j]));
+            }
+
+            hr = IPin_Disconnect(pin);
+            ok(hr == S_OK, "Got hr %#lx.\n", hr);
+        }
+
     }
 
-    CoTaskMemFree(pmt);
+    FreeMediaType(&mt);
 
     hr = IEnumMediaTypes_Next(enummt, 1, &pmt, &count);
     ok(hr == S_FALSE, "Got hr %#lx.\n", hr);
@@ -3177,6 +3230,72 @@ static void test_media_types(void)
 
     ref = IAMMultiMediaStream_Release(mmstream);
     ok(!ref, "Got outstanding refcount %ld.\n", ref);
+
+    ref = IBaseFilter_Release(&source.filter.IBaseFilter_iface);
+    ok(!ref, "Got outstanding refcount %ld.\n", ref);
+
+    /* Test media types when ddraw is passed to AddMediaStream */
+    mmstream = create_ammultimediastream();
+    hr = DirectDrawCreate(NULL, &ddraw, NULL);
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+    hr = IAMMultiMediaStream_AddMediaStream(mmstream, (IUnknown *)ddraw, &MSPID_PrimaryVideo, 0, &stream);
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+    hr = IMediaStream_QueryInterface(stream, &IID_IDirectDrawMediaStream, (void **)&ddraw_stream);
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+    hr = IMediaStream_QueryInterface(stream, &IID_IPin, (void **)&pin);
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+    hr = IDirectDrawMediaStream_GetFormat(ddraw_stream, &current, &palette, &desired, &flags);
+    ok(hr == MS_E_NOSTREAM, "Got hr %#lx.\n", hr);
+
+    memset(&mt, 0, sizeof(mt));
+    mt.majortype = MEDIATYPE_Video;
+    mt.subtype = MEDIASUBTYPE_RGB32;
+    mt.bFixedSizeSamples = TRUE;
+    mt.lSampleSize = 40000;
+    mt.formattype = FORMAT_VideoInfo;
+    mt.cbFormat = sizeof(req_vih);
+    mt.pbFormat = (BYTE*) &req_vih;
+
+    hr = IPin_QueryAccept(pin, &mt);
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+    mt.subtype = MEDIASUBTYPE_RGB8;
+    hr = IPin_QueryAccept(pin, &mt);
+    ok(hr == VFW_E_TYPE_NOT_ACCEPTED, "Got hr %#lx.\n", hr);
+
+    mt.subtype = MEDIASUBTYPE_RGB32;
+    hr = IPin_QueryAccept(pin, &mt);
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+    testfilter_init(&source);
+
+    hr = IPin_ReceiveConnection(pin, &source.source.pin.IPin_iface, &mt);
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+    hr = IPin_QueryAccept(pin, &mt);
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+    mt.subtype = MEDIASUBTYPE_RGB8;
+    hr = IPin_QueryAccept(pin, &mt);
+    ok(hr == VFW_E_TYPE_NOT_ACCEPTED, "Got hr %#lx.\n", hr);
+
+    hr = IPin_Disconnect(pin);
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+    hr = IPin_ReceiveConnection(pin, &source.source.pin.IPin_iface, &mt);
+    ok(hr == VFW_E_TYPE_NOT_ACCEPTED, "Got hr %#lx.\n", hr);
+
+    IPin_Release(pin);
+    IDirectDrawMediaStream_Release(ddraw_stream);
+    IMediaStream_Release(stream);
+    IDirectDraw_Release(ddraw);
+
+    ref = IAMMultiMediaStream_Release(mmstream);
+    ok(!ref, "Got outstanding refcount %ld.\n", ref);
+
+    ref = IBaseFilter_Release(&source.filter.IBaseFilter_iface);
+    ok(!ref, "Got outstanding refcount %ld.\n", ref);
 }
 
 static void test_get_end_of_stream_event_handle(void)
@@ -4083,11 +4202,28 @@ static void test_ddrawstream_receive_connection(void)
     hr = IDirectDrawMediaStream_SetFormat(ddraw_stream, &format, NULL);
     ok(hr == S_OK, "Got hr %#lx.\n", hr);
 
+    /* Return S_FALSE from QueryAccept */
+    source.query_accept_hr = S_FALSE;
     hr = IPin_ReceiveConnection(pin, &source.source.pin.IPin_iface, &rgb32_mt);
     ok(hr == S_OK, "Got hr %#lx.\n", hr);
     hr = IPin_Disconnect(pin);
     ok(hr == S_OK, "Got hr %#lx.\n", hr);
 
+    CopyMediaType(&mt, &rgb32_mt);
+    ((VIDEOINFO*)mt.pbFormat)->bmiHeader.biHeight = -rgb32_video_info.bmiHeader.biHeight;
+    hr = IPin_ReceiveConnection(pin, &source.source.pin.IPin_iface, &mt);
+    ok(hr == VFW_E_TYPE_NOT_ACCEPTED, "Got hr %#lx.\n", hr);
+    hr = IPin_Disconnect(pin);
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+    /* Return S_OK from QueryAccept */
+    source.query_accept_hr = S_OK;
+    hr = IPin_ReceiveConnection(pin, &source.source.pin.IPin_iface, &mt);
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+    hr = IPin_Disconnect(pin);
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+    FreeMediaType(&mt);
+
     format = rgb8_format;
     format.dwFlags = DDSD_HEIGHT;
     format.dwWidth = 333;
@@ -4140,11 +4276,24 @@ static void test_ddrawstream_receive_connection(void)
     hr = IDirectDrawMediaStream_SetFormat(ddraw_stream, &rgb555_format, NULL);
     ok(hr == S_OK, "Got hr %#lx.\n", hr);
 
+    /* After SetFormat is called, only this format is accepted by QueryAccept ... */
+    mt = rgb555_mt;
+    mt.pbFormat = (BYTE *)&video_info;
+    hr = IPin_QueryAccept(pin, &mt);
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+    mt = rgb8_mt;
+    mt.pbFormat = (BYTE *)&video_info;
+    hr = IPin_QueryAccept(pin, &mt);
+    ok(hr == VFW_E_TYPE_NOT_ACCEPTED, "Got hr %#lx.\n", hr);
     hr = IPin_ReceiveConnection(pin, &source.source.pin.IPin_iface, &rgb565_mt);
     ok(hr == VFW_E_TYPE_NOT_ACCEPTED, "Got hr %#lx.\n", hr);
 
     hr = IPin_ReceiveConnection(pin, &source.source.pin.IPin_iface, &rgb555_mt);
     ok(hr == S_OK, "Got hr %#lx.\n", hr);
+    /* .. even when connected (where all supported types were previously accepted) */
+    hr = IPin_QueryAccept(pin, &mt);
+    ok(hr == VFW_E_TYPE_NOT_ACCEPTED, "Got hr %#lx.\n", hr);
     hr = IPin_Disconnect(pin);
     ok(hr == S_OK, "Got hr %#lx.\n", hr);
 
@@ -8985,6 +9134,26 @@ static void test_ddrawstream_mem_allocator(void)
     /* GetBuffer() again blocks, even with AM_GBF_NOWAIT. */
 
     ok(media_sample1 != media_sample2, "Expected different samples.\n");
+    ok(media_sample2 != media_sample3, "Expected different samples.\n");
+    ok(media_sample1 != media_sample3, "Expected different samples.\n");
+
+    /* Release sample3 without ever calling GetMediaType */
+    ref = IMediaSample_Release(media_sample3);
+    ok(!ref, "Got refcount %ld.\n", ref);
+
+    hr = IMemAllocator_GetBuffer(mem_allocator, &media_sample3, NULL, NULL, AM_GBF_NOWAIT);
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+    /* Confirm that because sample3 has been released, we no longer get the media type */
+    sample_mt = (AM_MEDIA_TYPE*)0xc0ffee;
+    hr = IMediaSample_GetMediaType(media_sample3, &sample_mt);
+    ok(hr == S_FALSE, "Got hr %#lx.\n", hr);
+    ok(sample_mt == NULL, "Got sample_mt %p.\n", sample_mt);
+
+    /* Check that we still get MediaType on a second call to sample1 */
+    hr = IMediaSample_GetMediaType(media_sample1, &sample_mt);
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+    DeleteMediaType(sample_mt);
 
     check_interface(media_sample1, &IID_IDirectDrawStreamSample, FALSE);
     check_interface(media_sample1, &IID_IMediaSample2, FALSE);
@@ -9077,6 +9246,11 @@ static void test_ddrawstream_mem_allocator(void)
     hr = IMemAllocator_GetBuffer(mem_allocator, &media_sample1, NULL, NULL, 0);
     ok(hr == S_OK, "Got hr %#lx.\n", hr);
 
+    sample_mt = (AM_MEDIA_TYPE*)0xc0ffee;
+    hr = IMediaSample_GetMediaType(media_sample1, &sample_mt);
+    ok(hr == S_FALSE, "Got hr %#lx.\n", hr);
+    ok(sample_mt == NULL, "Got sample_mt %p.\n", sample_mt);
+
     start = end = 0xdeadbeef;
     hr = IMediaSample_GetTime(media_sample1, &start, &end);
     ok(hr == S_OK, "Got hr %#lx.\n", hr);
@@ -9463,7 +9637,7 @@ static void test_ddrawstream_set_format_dynamic(void)
     hr = IGraphBuilder_Disconnect(graph, &source.source.pin.IPin_iface);
     ok(hr == S_OK, "Got hr %#lx.\n", hr);
     hr = IGraphBuilder_Disconnect(graph, pin);
-    todo_wine ok(hr == S_OK, "Got hr %#lx.\n", hr);
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
 
     ref = IAMMultiMediaStream_Release(mmstream);
     ok(!ref, "Got outstanding refcount %ld.\n", ref);
diff --git a/dlls/bcryptprimitives/main.c b/dlls/bcryptprimitives/main.c
index 6562d672389e..689f213d1120 100644
--- a/dlls/bcryptprimitives/main.c
+++ b/dlls/bcryptprimitives/main.c
@@ -17,11 +17,26 @@
  */
 
 #include <stdarg.h>
+#include <limits.h>
+
 #include "windef.h"
 #include "winbase.h"
 #include "ntsecapi.h"
 
 BOOL WINAPI ProcessPrng(BYTE *data, SIZE_T size)
 {
-    return RtlGenRandom(data, size);
+    while (size)
+    {
+        SIZE_T len = min( size, (SIZE_T)ULONG_MAX );
+
+        if (!RtlGenRandom( data, len ))
+        {
+            /* This should be unreachable */
+            return FALSE;
+        }
+
+        data += len;
+        size -= len;
+    }
+    return TRUE;
 }
diff --git a/dlls/cfgmgr32/cfgmgr32.c b/dlls/cfgmgr32/cfgmgr32.c
index 280f10dd4db7..f69b39c86582 100644
--- a/dlls/cfgmgr32/cfgmgr32.c
+++ b/dlls/cfgmgr32/cfgmgr32.c
@@ -132,12 +132,12 @@ static LSTATUS open_device_classes_key( HKEY root, const WCHAR *key, REGSAM acce
     return open_key( root, path, access, open, hkey );
 }
 
-LSTATUS init_property( struct property *prop, const DEVPROPKEY *key, DEVPROPTYPE *type, void *buffer, DWORD *size )
+LSTATUS init_property( struct property *prop, const DEVPROPKEY *key, DEVPROPTYPE *type, void *buffer, DWORD *size, BOOL binary )
 {
     if (!key) return ERROR_INVALID_PARAMETER;
     if (!(prop->type = type) || !(prop->size = size)) return ERROR_INVALID_USER_BUFFER;
     if (!(prop->buffer = buffer) && (*prop->size)) return ERROR_INVALID_USER_BUFFER;
-    prop->ansi = FALSE;
+    prop->flags = binary ? PROP_FLAG_BINARY : 0;
     prop->key = *key;
     prop->reg_type = NULL;
     return ERROR_SUCCESS;
@@ -148,7 +148,7 @@ static LSTATUS init_registry_property( struct property *prop, const DEVPROPKEY *
     if (!(prop->size = size)) return ERROR_INVALID_USER_BUFFER;
     if (!(prop->buffer = buffer) && (*prop->size)) return ERROR_INVALID_USER_BUFFER;
     prop->type = NULL;
-    prop->ansi = ansi;
+    prop->flags = ansi ? PROP_FLAG_ANSI : 0;
     memcpy( &prop->key, base, sizeof(prop->key) );
     prop->key.pid = property + 1;
     prop->reg_type = type;
@@ -160,10 +160,14 @@ static LSTATUS query_property( HKEY root, const WCHAR *prefix, DEVPROPTYPE type,
     WCHAR path[MAX_PATH];
     ULONG reg_type;
     LSTATUS err;
+    HKEY hkey;
 
-    err = RegQueryValueExW( root, propkey_string( &prop->key, prefix, path, ARRAY_SIZE(path) ),
-                            NULL, &reg_type, prop->buffer, prop->size );
-    if (type == DEVPROP_TYPE_EMPTY) type = reg_type & 0xffff;
+    if (!(err = open_key( root, propkey_string( &prop->key, prefix, path, ARRAY_SIZE(path) ), KEY_QUERY_VALUE, TRUE, &hkey )))
+    {
+        err = RegQueryValueExW( hkey, NULL, NULL, &reg_type, prop->buffer, prop->size );
+        if (type == DEVPROP_TYPE_EMPTY) type = reg_type & 0xffff;
+        RegCloseKey( hkey );
+    }
 
     if (!err && !prop->buffer) err = ERROR_MORE_DATA;
     if ((!err || err == ERROR_MORE_DATA) && prop->type) *prop->type = type;
@@ -175,13 +179,25 @@ static LSTATUS query_named_property( HKEY hkey, const WCHAR *nameW, DEVPROPTYPE
 {
     LSTATUS err;
 
-    if (!prop->ansi) err = RegQueryValueExW( hkey, nameW, NULL, prop->reg_type, prop->buffer, prop->size );
-    else
+    if (prop->flags & PROP_FLAG_ANSI)
     {
         char nameA[MAX_PATH];
         if (nameW) WideCharToMultiByte( CP_ACP, 0, nameW, -1, nameA, sizeof(nameA), NULL, NULL );
         err = RegQueryValueExA( hkey, nameW ? nameA : NULL, NULL, prop->reg_type, prop->buffer, prop->size );
     }
+    else if (type == DEVPROP_TYPE_GUID && (prop->flags & PROP_FLAG_BINARY))
+    {
+        WCHAR buffer[39];
+        DWORD len = *prop->size >= sizeof(GUID) ? sizeof(buffer) : 0;
+
+        if (!(err = RegQueryValueExW( hkey, nameW, NULL, prop->reg_type, (BYTE *)buffer, &len )))
+            err = guid_from_string( buffer, prop->buffer );
+        *prop->size = sizeof(GUID);
+    }
+    else
+    {
+        err = RegQueryValueExW( hkey, nameW, NULL, prop->reg_type, prop->buffer, prop->size );
+    }
 
     if (!err && !prop->buffer) err = ERROR_MORE_DATA;
     if ((!err || err == ERROR_MORE_DATA) && prop->type) *prop->type = type;
@@ -203,6 +219,11 @@ static LSTATUS return_property_bool( struct property *prop, DEVPROP_BOOLEAN valu
     return return_property( prop, DEVPROP_TYPE_BOOLEAN, &value, sizeof(value) );
 }
 
+static LSTATUS return_property_string( struct property *prop, const WCHAR *value )
+{
+    return return_property( prop, DEVPROP_TYPE_STRING, value, (wcslen( value ) + 1) * sizeof(WCHAR) );
+}
+
 static LSTATUS enum_objects_size( HKEY hkey, const void *object, const WCHAR *path, UINT path_len, void *context )
 {
     UINT *total = context;
@@ -612,10 +633,85 @@ static const struct property_desc device_properties[] =
     { &DEVPKEY_Device_InstallState,                 DEVPROP_TYPE_UINT32,                        L"InstallState" },
     { &DEVPKEY_Device_LocationPaths,                DEVPROP_TYPE_STRING_LIST,                   L"LocationPaths" },
     { &DEVPKEY_Device_BaseContainerId,              DEVPROP_TYPE_GUID,                          L"BaseContainerId" },
+    /* unicode-only properties */
+    { &DEVPKEY_Device_InstanceId,                   DEVPROP_TYPE_STRING },
+    { &DEVPKEY_Device_DevNodeStatus,                DEVPROP_TYPE_UINT32 },
+    { &DEVPKEY_Device_ProblemCode,                  DEVPROP_TYPE_UINT32 },
+    { &DEVPKEY_Device_EjectionRelations,            DEVPROP_TYPE_STRING_LIST },
+    { &DEVPKEY_Device_RemovalRelations,             DEVPROP_TYPE_STRING_LIST },
+    { &DEVPKEY_Device_PowerRelations,               DEVPROP_TYPE_STRING_LIST },
+    { &DEVPKEY_Device_BusRelations,                 DEVPROP_TYPE_STRING_LIST },
+    { &DEVPKEY_Device_Parent,                       DEVPROP_TYPE_STRING },
+    { &DEVPKEY_Device_Children,                     DEVPROP_TYPE_STRING_LIST },
+    { &DEVPKEY_Device_Siblings,                     DEVPROP_TYPE_STRING_LIST },
+    { &DEVPKEY_Device_TransportRelations,           DEVPROP_TYPE_STRING_LIST },
+    { &DEVPKEY_Device_ProblemStatus,                DEVPROP_TYPE_NTSTATUS },
+    { &DEVPKEY_Device_Reported,                     DEVPROP_TYPE_BOOLEAN },
+    { &DEVPKEY_Device_Legacy,                       DEVPROP_TYPE_BOOLEAN },
+    { &DEVPKEY_Device_ContainerId,                  DEVPROP_TYPE_GUID,                          L"ContainerId" },
+    { &DEVPKEY_Device_InLocalMachineContainer,      DEVPROP_TYPE_BOOLEAN },
+    { &DEVPKEY_Device_Model,                        DEVPROP_TYPE_STRING },
+    { &DEVPKEY_Device_ModelId,                      DEVPROP_TYPE_GUID },
+    { &DEVPKEY_Device_FriendlyNameAttributes,       DEVPROP_TYPE_UINT32 },
+    { &DEVPKEY_Device_ManufacturerAttributes,       DEVPROP_TYPE_UINT32 },
+    { &DEVPKEY_Device_PresenceNotForDevice,         DEVPROP_TYPE_BOOLEAN },
+    { &DEVPKEY_Device_SignalStrength,               DEVPROP_TYPE_INT32 },
+    { &DEVPKEY_Device_IsAssociateableByUserAction,  DEVPROP_TYPE_BOOLEAN },
+    { &DEVPKEY_Device_ShowInUninstallUI,            DEVPROP_TYPE_BOOLEAN },
+    { &DEVPKEY_Device_Numa_Proximity_Domain,        DEVPROP_TYPE_UINT32 },
+    { &DEVPKEY_Device_DHP_Rebalance_Policy,         DEVPROP_TYPE_UINT32 },
+    { &DEVPKEY_Device_Numa_Node,                    DEVPROP_TYPE_UINT32 },
+    { &DEVPKEY_Device_BusReportedDeviceDesc,        DEVPROP_TYPE_STRING },
+    { &DEVPKEY_Device_IsPresent,                    DEVPROP_TYPE_BOOLEAN },
+    { &DEVPKEY_Device_HasProblem,                   DEVPROP_TYPE_BOOLEAN },
+    { &DEVPKEY_Device_ConfigurationId,              DEVPROP_TYPE_STRING },
+    { &DEVPKEY_Device_ReportedDeviceIdsHash,        DEVPROP_TYPE_UINT32 },
+    { &DEVPKEY_Device_PhysicalDeviceLocation,       DEVPROP_TYPE_BINARY },
+    { &DEVPKEY_Device_BiosDeviceName,               DEVPROP_TYPE_STRING },
+    { &DEVPKEY_Device_DriverProblemDesc,            DEVPROP_TYPE_STRING },
+    { &DEVPKEY_Device_DebuggerSafe,                 DEVPROP_TYPE_UINT32 },
+    { &DEVPKEY_Device_PostInstallInProgress,        DEVPROP_TYPE_BOOLEAN },
+    { &DEVPKEY_Device_Stack,                        DEVPROP_TYPE_STRING_LIST },
+    { &DEVPKEY_Device_ExtendedConfigurationIds,     DEVPROP_TYPE_STRING_LIST },
+    { &DEVPKEY_Device_IsRebootRequired,             DEVPROP_TYPE_BOOLEAN },
+    { &DEVPKEY_Device_FirmwareDate,                 DEVPROP_TYPE_FILETIME },
+    { &DEVPKEY_Device_FirmwareVersion,              DEVPROP_TYPE_STRING },
+    { &DEVPKEY_Device_FirmwareRevision,             DEVPROP_TYPE_STRING },
+    { &DEVPKEY_Device_DependencyProviders,          DEVPROP_TYPE_STRING_LIST },
+    { &DEVPKEY_Device_DependencyDependents,         DEVPROP_TYPE_STRING_LIST },
+    { &DEVPKEY_Device_SoftRestartSupported,         DEVPROP_TYPE_BOOLEAN },
+    { &DEVPKEY_Device_ExtendedAddress,              DEVPROP_TYPE_UINT64 },
+    { &DEVPKEY_Device_SessionId,                    DEVPROP_TYPE_UINT32 },
+    { &DEVPKEY_Device_InstallDate,                  DEVPROP_TYPE_FILETIME },
+    { &DEVPKEY_Device_FirstInstallDate,             DEVPROP_TYPE_FILETIME },
+    { &DEVPKEY_Device_LastArrivalDate,              DEVPROP_TYPE_FILETIME },
+    { &DEVPKEY_Device_LastRemovalDate,              DEVPROP_TYPE_FILETIME },
+    { &DEVPKEY_Device_DriverDate,                   DEVPROP_TYPE_FILETIME,                      L"DriverDateData" },
+    { &DEVPKEY_Device_DriverVersion,                DEVPROP_TYPE_STRING,                        L"DriverVersion" },
+    { &DEVPKEY_Device_DriverDesc,                   DEVPROP_TYPE_STRING,                        L"DriverDesc" },
+    { &DEVPKEY_Device_DriverInfPath,                DEVPROP_TYPE_STRING,                        L"InfPath" },
+    { &DEVPKEY_Device_DriverInfSection,             DEVPROP_TYPE_STRING,                        L"InfSection" },
+    { &DEVPKEY_Device_DriverInfSectionExt,          DEVPROP_TYPE_STRING,                        L"InfSectionExt" },
+    { &DEVPKEY_Device_MatchingDeviceId,             DEVPROP_TYPE_STRING,                        L"MatchingDeviceId" },
+    { &DEVPKEY_Device_DriverProvider,               DEVPROP_TYPE_STRING,                        L"ProviderName" },
+    { &DEVPKEY_Device_DriverPropPageProvider,       DEVPROP_TYPE_STRING,                        L"EnumPropPages32" },
+    { &DEVPKEY_Device_DriverCoInstallers,           DEVPROP_TYPE_STRING_LIST,                   L"CoInstallers32" },
+    { &DEVPKEY_Device_ResourcePickerTags,           DEVPROP_TYPE_STRING,                        L"ResourcePickerTags" },
+    { &DEVPKEY_Device_ResourcePickerExceptions,     DEVPROP_TYPE_STRING,                        L"ResourcePickerExceptions" },
+    { &DEVPKEY_Device_DriverRank,                   DEVPROP_TYPE_UINT32 },
+    { &DEVPKEY_Device_DriverLogoLevel,              DEVPROP_TYPE_UINT32 },
+    { &DEVPKEY_Device_NoConnectSound,               DEVPROP_TYPE_BOOLEAN },
+    { &DEVPKEY_Device_GenericDriverInstalled,       DEVPROP_TYPE_BOOLEAN },
+    { &DEVPKEY_Device_AdditionalSoftwareRequested,  DEVPROP_TYPE_BOOLEAN },
+    { &DEVPKEY_Device_SafeRemovalRequired,          DEVPROP_TYPE_BOOLEAN },
+    { &DEVPKEY_Device_SafeRemovalRequiredOverride,  DEVPROP_TYPE_BOOLEAN },
 };
 
-static LSTATUS query_device_property( HKEY hkey, struct property *prop )
+static LSTATUS query_device_property( HKEY hkey, const struct device *dev, struct property *prop )
 {
+    if (!memcmp( &DEVPKEY_Device_InstanceId, &prop->key, sizeof(prop->key) ))
+        return return_property_string( prop, dev->instance );
+
     for (UINT i = 0; i < ARRAY_SIZE(device_properties); i++)
     {
         const struct property_desc *desc = device_properties + i;
@@ -640,7 +736,7 @@ static LSTATUS get_device_property( HKEY root, const struct device *dev, struct
 
     if (!(err = open_device_key( root, dev, KEY_QUERY_VALUE, TRUE, &hkey )))
     {
-        err = query_device_property( hkey, prop );
+        err = query_device_property( hkey, dev, prop );
         RegCloseKey( hkey );
     }
 
@@ -648,6 +744,155 @@ static LSTATUS get_device_property( HKEY root, const struct device *dev, struct
     return err;
 }
 
+LSTATUS enum_device_property_keys( HKEY hkey, const struct device *dev, DEVPROPKEY *buffer, ULONG *size )
+{
+    ULONG capacity = *size, count = 0;
+    LSTATUS err = ERROR_SUCCESS;
+    HKEY props_key;
+
+    if (capacity < ++count || !buffer) err = ERROR_MORE_DATA;
+    else buffer[count - 1] = DEVPKEY_Device_InstanceId;
+
+    for (UINT i = 0; i < ARRAY_SIZE(device_properties); i++)
+    {
+        const struct property_desc *desc = device_properties + i;
+        if (desc->name && !RegQueryValueExW( hkey, desc->name, NULL, NULL, NULL, NULL ))
+        {
+            if (capacity < ++count || !buffer) err = ERROR_MORE_DATA;
+            else buffer[count - 1] = *desc->key;
+        }
+    }
+
+    if (!open_key( hkey, L"Properties", KEY_ENUMERATE_SUB_KEYS, TRUE, &props_key ))
+    {
+        WCHAR name[MAX_PATH];
+        for (ULONG i = 0, len = ARRAY_SIZE(name); !RegEnumValueW( props_key, i, name, &len, 0, NULL, NULL, NULL ); i++, len = ARRAY_SIZE(name))
+        {
+            if (capacity < ++count || !buffer) err = ERROR_MORE_DATA;
+            else err = propkey_from_string( name, buffer + count - 1 );
+        }
+        RegCloseKey( props_key );
+    }
+
+    *size = count;
+    return err;
+}
+
+static LSTATUS get_device_property_keys( HKEY root, const struct device *dev, DEVPROPKEY *buffer, ULONG *size )
+{
+    LSTATUS err;
+    HKEY hkey;
+
+    if ((err = open_device_key( root, dev, KEY_QUERY_VALUE, TRUE, &hkey ))) return err;
+    err = enum_device_property_keys( hkey, dev, buffer, size );
+    RegCloseKey( hkey );
+
+    return err;
+}
+
+static LSTATUS get_device_strings( const WCHAR *instance_id, const DEVPROPKEY *key, ULONG *size, WCHAR *buffer )
+{
+    const WCHAR *instance = instance_id && *instance_id ? instance_id : L"HTREE\\ROOT\\0";
+    struct property prop;
+    struct device dev;
+    DEVPROPTYPE type;
+    LSTATUS err;
+
+    if ((err = init_device( &dev, instance ))) return err;
+    if ((err = init_property( &prop, key, &type, buffer, size, TRUE ))) return err;
+
+    if (!(err = get_device_property( HKEY_LOCAL_MACHINE, &dev, &prop ))) *size *= 3; /* maximum ANSI conversion size */
+    return err;
+}
+
+static LSTATUS matches_device_property( HKEY hkey, struct device *dev, const DEVPROPKEY *key, const WCHAR *value )
+{
+    WCHAR buffer[MAX_PATH];
+    ULONG size = sizeof(buffer);
+    struct property prop;
+    DEVPROPTYPE type;
+    LSTATUS err;
+
+    if (!key) return ERROR_SUCCESS;
+    if ((err = init_property( &prop, key, &type, (BYTE *)buffer, &size, FALSE ))) return err;
+    if ((err = query_device_property( hkey, dev, &prop ))) return err == ERROR_FILE_NOT_FOUND ? ERROR_NO_MATCH : err;
+    return wcsicmp( buffer, value ) ? ERROR_NO_MATCH : ERROR_SUCCESS;
+}
+
+static LSTATUS enum_device_instances( HKEY root, struct device *dev, const DEVPROPKEY *key, const WCHAR *value,
+                                      BOOL all, enum_objects_cb callback, void *context )
+{
+    LSTATUS err = ERROR_SUCCESS;
+    HKEY hkey;
+    UINT len;
+
+    for (UINT i = 0; !err && !(err = RegEnumKeyW( root, i, dev->instance, ARRAY_SIZE(dev->instance) )); i++)
+    {
+        if ((err = open_key( root, dev->instance, KEY_ENUMERATE_SUB_KEYS | KEY_QUERY_VALUE, TRUE, &hkey ))) break;
+        if ((err = matches_device_property( hkey, dev, key, value )) == ERROR_NO_MATCH) err = ERROR_SUCCESS;
+        else if (!err)
+        {
+            WCHAR path[MAX_PATH];
+            len = swprintf( path, ARRAY_SIZE(path), L"%s\\%s\\%s", dev->enumerator, dev->device, dev->instance );
+            err = callback( hkey, dev, path, len + 1, context );
+        }
+        RegCloseKey( hkey );
+    }
+    if (err == ERROR_NO_MORE_ITEMS) err = ERROR_SUCCESS;
+
+    return err;
+}
+
+static LSTATUS enum_enumerator_devices( HKEY root, struct device *dev, const WCHAR *device, const DEVPROPKEY *key,
+                                        const WCHAR *prop, BOOL all, enum_objects_cb callback, void *context )
+{
+    LSTATUS err = ERROR_SUCCESS;
+    HKEY hkey;
+
+    for (UINT i = 0; !err && !(err = RegEnumKeyW( root, i, dev->device, ARRAY_SIZE(dev->device) )); i++)
+    {
+        if (device && wcsicmp( dev->device, device )) continue;
+        if ((err = open_key( root, dev->device, KEY_ENUMERATE_SUB_KEYS, TRUE, &hkey ))) break;
+        err = enum_device_instances( hkey, dev, key, prop, all, callback, context );
+        RegCloseKey( hkey );
+    }
+    if (err == ERROR_NO_MORE_ITEMS) err = ERROR_SUCCESS;
+
+    return err;
+}
+
+static LSTATUS enum_devices( const WCHAR *filter, const DEVPROPKEY *key, const WCHAR *value, BOOL all, enum_objects_cb callback, void *context )
+{
+    WCHAR enumerator[MAX_PATH], *device = NULL;
+    LSTATUS err = ERROR_SUCCESS;
+    struct device dev;
+    HKEY root, hkey;
+
+    if (key && !value) return ERROR_INVALID_USER_BUFFER;
+    if (filter)
+    {
+        if (!*filter) return ERROR_NO_MORE_ITEMS;
+        lstrcpynW( enumerator, filter, ARRAY_SIZE(enumerator) );
+        if ((device = wcschr( enumerator, '\\' ))) *device++ = 0;
+        if (device && wcschr( device, '\\' )) return ERROR_NO_MORE_ITEMS;
+    }
+
+    root = cache_root_key( HKEY_LOCAL_MACHINE, enum_rootW, NULL );
+    if (root == (HKEY)-1) return ERROR_FILE_NOT_FOUND;
+
+    for (UINT i = 0; !err && !(err = RegEnumKeyW( root, i, dev.enumerator, ARRAY_SIZE(dev.enumerator) )); i++)
+    {
+        if (filter && wcsicmp( dev.enumerator, enumerator )) continue;
+        if ((err = open_key( root, dev.enumerator, KEY_ENUMERATE_SUB_KEYS, TRUE, &hkey ))) break;
+        err = enum_enumerator_devices( hkey, &dev, device, key, value, all, callback, context );
+        RegCloseKey( hkey );
+    }
+    if (err == ERROR_NO_MORE_ITEMS) err = ERROR_SUCCESS;
+
+    if (!err) callback( NULL, NULL, L"", 1, context );
+    return err;
+}
+
 static CRITICAL_SECTION devnode_cs;
 static CRITICAL_SECTION_DEBUG devnode_cs_debug = {
     0, 0, &devnode_cs,
@@ -769,6 +1014,33 @@ DWORD WINAPI CM_MapCrToWin32Err( CONFIGRET code, DWORD default_error )
     return default_error;
 }
 
+/***********************************************************************
+ *      CM_Connect_MachineW  (cfgmgr32.@)
+ */
+CONFIGRET WINAPI CM_Connect_MachineW( const WCHAR *name, HMACHINE *machine )
+{
+    FIXME( "name %s, machine %p stub!\n", debugstr_w(name), machine );
+    return CR_ACCESS_DENIED;
+}
+
+/***********************************************************************
+ *              CM_Connect_MachineA  (cfgmgr32.@)
+ */
+CONFIGRET WINAPI CM_Connect_MachineA( const char *name, HMACHINE *machine )
+{
+    FIXME( "name %s, machine %p stub!\n", debugstr_a(name), machine );
+    return CR_ACCESS_DENIED;
+}
+
+/***********************************************************************
+ *      CM_Disconnect_Machine  (cfgmgr32.@)
+ */
+CONFIGRET WINAPI CM_Disconnect_Machine( HMACHINE machine )
+{
+    FIXME( "machine %p stub!\n", machine );
+    return CR_SUCCESS;
+}
+
 /***********************************************************************
  *           CM_Enumerate_Classes_Ex (cfgmgr32.@)
  */
@@ -996,6 +1268,28 @@ CONFIGRET WINAPI CM_Get_Class_Registry_PropertyA( GUID *class, ULONG property, U
     return map_error( get_class_property( class, &prop ) );
 }
 
+/***********************************************************************
+ *      CM_Set_Class_Registry_PropertyW (cfgmgr32.@)
+ */
+CONFIGRET WINAPI CM_Set_Class_Registry_PropertyW( GUID *class, ULONG property, const void *buffer,
+                                                  ULONG len, ULONG flags, HMACHINE machine )
+{
+    FIXME( "class %s, property %#lx, buffer %p, length %#lx, flags %#lx, machine %p stub!\n",
+           debugstr_guid( class ), property, buffer, len, flags, machine );
+    return CR_FAILURE;
+}
+
+/***********************************************************************
+ *      CM_Set_Class_Registry_PropertyA (cfgmgr32.@)
+ */
+CONFIGRET WINAPI CM_Set_Class_Registry_PropertyA( GUID *class, ULONG property, const void *buffer,
+                                                  ULONG len, ULONG flags, HMACHINE machine )
+{
+    FIXME( "class %s, property %#lx, buffer %p, length %#lx, flags %#lx, machine %p stub!\n",
+           debugstr_guid( class ), property, buffer, len, flags, machine );
+    return CR_FAILURE;
+}
+
 /***********************************************************************
  *           CM_Get_Class_Property_ExW (cfgmgr32.@)
  */
@@ -1009,7 +1303,7 @@ CONFIGRET WINAPI CM_Get_Class_Property_ExW( const GUID *class, const DEVPROPKEY
     if (flags) FIXME( "flags %#lx not implemented!\n", flags );
 
     if (!class) return CR_INVALID_POINTER;
-    if ((err = init_property( &prop, key, type, buffer, size ))) return map_error( err );
+    if ((err = init_property( &prop, key, type, buffer, size, TRUE ))) return map_error( err );
     return map_error( get_class_property( class, &prop ) );
 }
 
@@ -1222,7 +1516,7 @@ CONFIGRET WINAPI CM_Get_Device_Interface_Property_ExW( const WCHAR *name, const
 
     if (!name) return CR_INVALID_POINTER;
     if (init_device_interface( &iface, name )) return CR_NO_SUCH_DEVICE_INTERFACE;
-    if ((err = init_property( &prop, key, type, buffer, size ))) return map_error( err );
+    if ((err = init_property( &prop, key, type, buffer, size, TRUE ))) return map_error( err );
     if (flags) return CR_INVALID_FLAG;
 
     return map_error( get_device_interface_property( &iface, &prop ) );
@@ -1270,6 +1564,166 @@ CONFIGRET WINAPI CM_Get_Device_Interface_Property_KeysW( const WCHAR *iface, DEV
     return CM_Get_Device_Interface_Property_Keys_ExW( iface, keys, count, flags, NULL );
 }
 
+/***********************************************************************
+ *      CM_Get_Device_Interface_AliasW (cfgmgr32.@)
+ */
+CONFIGRET WINAPI CM_Get_Device_Interface_AliasW( const WCHAR *iface, GUID *class, WCHAR *name, ULONG *len, ULONG flags )
+{
+    FIXME( "iface %s, class %p, name %p, len %p, flags %#lx stub!\n", debugstr_w(iface), class, name, len, flags );
+    return CR_FAILURE;
+}
+
+/***********************************************************************
+ *      CM_Get_Device_Interface_AliasA (cfgmgr32.@)
+ */
+CONFIGRET WINAPI CM_Get_Device_Interface_AliasA( const char *iface, GUID *class, char *name, ULONG *len, ULONG flags )
+{
+    FIXME( "iface %s, class %p, name %p, len %p, flags %#lx stub!\n", debugstr_a(iface), class, name, len, flags );
+    return CR_FAILURE;
+}
+
+/***********************************************************************
+ *           CM_Get_Device_ID_List_Size_ExW (cfgmgr32.@)
+ */
+CONFIGRET WINAPI CM_Get_Device_ID_List_Size_ExW( ULONG *len, const WCHAR *filter, ULONG flags, HMACHINE machine )
+{
+    BOOL all = !(flags & CM_GETIDLIST_FILTER_PRESENT);
+    LSTATUS err;
+    GUID guid;
+
+    TRACE( "len %p, filter %s, flags %#lx, machine %p\n", len, debugstr_w(filter), flags, machine );
+    if (machine) FIXME( "machine %p not implemented!\n", machine );
+
+    if (!len) return CR_INVALID_POINTER;
+    if (flags & ~CM_GETIDLIST_FILTER_BITS) return CR_INVALID_FLAG;
+    if (flags & CM_GETIDLIST_DONOTGENERATE) FIXME( "CM_GETIDLIST_DONOTGENERATE not implemented!\n" );
+
+    *len = 0;
+    if (flags & CM_GETIDLIST_FILTER_CLASS && filter && guid_from_string( filter, &guid )) return CR_INVALID_DATA;
+    if ((flags & CM_GETIDLIST_FILTER_ENUMERATOR) && !filter) return CR_INVALID_POINTER;
+    if (!(flags &= ~(CM_GETIDLIST_DONOTGENERATE | CM_GETIDLIST_FILTER_PRESENT))) filter = NULL;
+
+    switch (flags)
+    {
+    case 0:                                      err = enum_devices( NULL, NULL, NULL, all, enum_objects_size, len ); break;
+    case CM_GETIDLIST_FILTER_ENUMERATOR:         err = enum_devices( filter, NULL, NULL, all, enum_objects_size, len ); break;
+    case CM_GETIDLIST_FILTER_CLASS:              err = enum_devices( NULL, &DEVPKEY_Device_ClassGuid, filter, all, enum_objects_size, len ); break;
+    case CM_GETIDLIST_FILTER_SERVICE:            err = enum_devices( NULL, &DEVPKEY_Device_Service, filter, all, enum_objects_size, len ); break;
+    case CM_GETIDLIST_FILTER_BUSRELATIONS:       err = get_device_strings( filter, &DEVPKEY_Device_BusRelations, len, NULL ); break;
+    case CM_GETIDLIST_FILTER_TRANSPORTRELATIONS: err = get_device_strings( filter, &DEVPKEY_Device_TransportRelations, len, NULL ); break;
+    case CM_GETIDLIST_FILTER_EJECTRELATIONS:     err = get_device_strings( filter, &DEVPKEY_Device_EjectionRelations, len, NULL ); break;
+    case CM_GETIDLIST_FILTER_POWERRELATIONS:     err = get_device_strings( filter, &DEVPKEY_Device_PowerRelations, len, NULL ); break;
+    case CM_GETIDLIST_FILTER_REMOVALRELATIONS:   err = get_device_strings( filter, &DEVPKEY_Device_RemovalRelations, len, NULL ); break;
+    default: FIXME( "Unsupported flags %#lx\n", flags ); return CR_INVALID_FLAG;
+    }
+
+    return map_error( err );
+}
+
+/***********************************************************************
+ *           CM_Get_Device_ID_List_Size_ExA (cfgmgr32.@)
+ */
+CONFIGRET WINAPI CM_Get_Device_ID_List_Size_ExA( ULONG *len, const char *filterA, ULONG flags, HMACHINE machine )
+{
+    WCHAR filterW[MAX_PATH];
+
+    if (filterA) MultiByteToWideChar( CP_ACP, 0, filterA, -1, filterW, ARRAY_SIZE(filterW) );
+    return CM_Get_Device_ID_List_Size_ExW( len, filterA ? filterW : NULL, flags, machine );
+}
+
+/***********************************************************************
+ *           CM_Get_Device_ID_List_SizeW (cfgmgr32.@)
+ */
+CONFIGRET WINAPI CM_Get_Device_ID_List_SizeW( ULONG *len, const WCHAR *filter, ULONG flags )
+{
+    return CM_Get_Device_ID_List_Size_ExW( len, filter, flags, NULL );
+}
+
+/***********************************************************************
+ *           CM_Get_Device_ID_List_SizeA (cfgmgr32.@)
+ */
+CONFIGRET WINAPI CM_Get_Device_ID_List_SizeA( ULONG *len, const char *filter, ULONG flags )
+{
+    return CM_Get_Device_ID_List_Size_ExA( len, filter, flags, NULL );
+}
+
+/***********************************************************************
+ *           CM_Get_Device_ID_List_ExW (cfgmgr32.@)
+ */
+CONFIGRET WINAPI CM_Get_Device_ID_List_ExW( const WCHAR *filter, WCHAR *buffer, ULONG len, ULONG flags, HMACHINE machine )
+{
+    struct enum_objects_append_params params = {.buffer = buffer, .len = len};
+    BOOL all = !(flags & CM_GETIDLIST_FILTER_PRESENT);
+    LSTATUS err;
+    GUID guid;
+
+    TRACE( "filter %s, buffer %p, len %lu, flags %#lx, machine %p\n", debugstr_w(filter), buffer, len, flags, machine );
+    if (machine) FIXME( "machine %p not implemented!\n", machine );
+
+    if (!buffer) return CR_INVALID_POINTER;
+    if (!len) return buffer ? CR_INVALID_POINTER : CR_BUFFER_SMALL;
+    if (flags & ~CM_GETIDLIST_FILTER_BITS) return CR_INVALID_FLAG;
+    if (flags & CM_GETIDLIST_DONOTGENERATE) FIXME( "CM_GETIDLIST_DONOTGENERATE not implemented!\n" );
+
+    *buffer = 0;
+    if (flags & CM_GETIDLIST_FILTER_CLASS && filter && guid_from_string( filter, &guid )) return CR_INVALID_DATA;
+    if ((flags & CM_GETIDLIST_FILTER_ENUMERATOR) && !filter) return CR_INVALID_POINTER;
+    if (!(flags &= ~(CM_GETIDLIST_DONOTGENERATE | CM_GETIDLIST_FILTER_PRESENT))) filter = NULL;
+
+    switch (flags)
+    {
+    case 0:                                      err = enum_devices( NULL, NULL, NULL, all, enum_objects_append, &params ); break;
+    case CM_GETIDLIST_FILTER_ENUMERATOR:         err = enum_devices( filter, NULL, NULL, all, enum_objects_append, &params ); break;
+    case CM_GETIDLIST_FILTER_CLASS:              err = enum_devices( NULL, &DEVPKEY_Device_ClassGuid, filter, all, enum_objects_append, &params ); break;
+    case CM_GETIDLIST_FILTER_SERVICE:            err = enum_devices( NULL, &DEVPKEY_Device_Service, filter, all, enum_objects_append, &params ); break;
+    case CM_GETIDLIST_FILTER_BUSRELATIONS:       err = get_device_strings( filter, &DEVPKEY_Device_BusRelations, &len, buffer ); break;
+    case CM_GETIDLIST_FILTER_TRANSPORTRELATIONS: err = get_device_strings( filter, &DEVPKEY_Device_TransportRelations, &len, buffer ); break;
+    case CM_GETIDLIST_FILTER_EJECTRELATIONS:     err = get_device_strings( filter, &DEVPKEY_Device_EjectionRelations, &len, buffer ); break;
+    case CM_GETIDLIST_FILTER_POWERRELATIONS:     err = get_device_strings( filter, &DEVPKEY_Device_PowerRelations, &len, buffer ); break;
+    case CM_GETIDLIST_FILTER_REMOVALRELATIONS:   err = get_device_strings( filter, &DEVPKEY_Device_RemovalRelations, &len, buffer ); break;
+    default: WARN( "Unsupported flags %#lx\n", flags ); return CR_INVALID_FLAG;
+    }
+
+    return map_error( err );
+}
+
+/***********************************************************************
+ *           CM_Get_Device_ID_List_ExA (cfgmgr32.@)
+ */
+CONFIGRET WINAPI CM_Get_Device_ID_List_ExA( const char *filterA, char *bufferA, ULONG len, ULONG flags, HMACHINE machine )
+{
+    WCHAR filterW[MAX_PATH], *bufferW;
+    CONFIGRET ret;
+
+    bufferW = bufferA ? malloc( len * sizeof(WCHAR) ) : NULL;
+    if (filterA) MultiByteToWideChar( CP_ACP, 0, filterA, -1, filterW, ARRAY_SIZE(filterW) );
+    ret = CM_Get_Device_ID_List_ExW( filterA ? filterW : NULL, bufferA ? bufferW : NULL, len, flags, machine );
+    if (!ret && bufferA && len && !WideCharToMultiByte( CP_ACP, 0, bufferW, len, bufferA, len, 0, 0 ))
+    {
+        if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) ret = CR_BUFFER_SMALL;
+        else ret = CR_FAILURE;
+    }
+    free( bufferW );
+
+    return ret;
+}
+
+/***********************************************************************
+ *           CM_Get_Device_ID_ListW (cfgmgr32.@)
+ */
+CONFIGRET WINAPI CM_Get_Device_ID_ListW( const WCHAR *filter, WCHAR *buffer, ULONG len, ULONG flags )
+{
+    return CM_Get_Device_ID_List_ExW( filter, buffer, len, flags, NULL );
+}
+
+/***********************************************************************
+ *           CM_Get_Device_ID_ListA (cfgmgr32.@)
+ */
+CONFIGRET WINAPI CM_Get_Device_ID_ListA( const char *filter, char *buffer, ULONG len, ULONG flags )
+{
+    return CM_Get_Device_ID_List_ExA( filter, buffer, len, flags, NULL );
+}
+
 /***********************************************************************
  *           CM_Locate_DevNode_ExW (cfgmgr32.@)
  */
@@ -1524,3 +1978,199 @@ CONFIGRET WINAPI CM_Get_DevNode_Registry_PropertyA( DEVINST node, ULONG property
 {
     return CM_Get_DevNode_Registry_Property_ExA( node, property, type, buffer, len, flags, NULL );
 }
+
+/***********************************************************************
+ *           CM_Get_DevNode_Property_ExW (cfgmgr32.@)
+ */
+CONFIGRET WINAPI CM_Get_DevNode_Property_ExW( DEVINST node, const DEVPROPKEY *key, DEVPROPTYPE *type, BYTE *buffer, ULONG *size, ULONG flags, HMACHINE machine )
+{
+    struct property prop;
+    struct device dev;
+    LSTATUS err;
+
+    TRACE( "node %#lx, key %s, type %p, buffer %p, size %p, flags %#lx, machine %p\n", node, debugstr_DEVPROPKEY(key), type, buffer, size, flags, machine );
+    if (machine) FIXME( "machine %p not implemented!\n", machine );
+    if (flags) FIXME( "flags %#lx not implemented!\n", flags );
+
+    if (devnode_get_device( node, &dev )) return CR_INVALID_DEVNODE;
+    if ((err = init_property( &prop, key, type, buffer, size, TRUE ))) return map_error( err );
+
+    return map_error( get_device_property( HKEY_LOCAL_MACHINE, &dev, &prop ) );
+}
+
+/***********************************************************************
+ *           CM_Get_DevNode_PropertyW (cfgmgr32.@)
+ */
+CONFIGRET WINAPI CM_Get_DevNode_PropertyW( DEVINST node, const DEVPROPKEY *key, DEVPROPTYPE *type, BYTE *buffer, ULONG *size, ULONG flags )
+{
+    return CM_Get_DevNode_Property_ExW( node, key, type, buffer, size, flags, NULL );
+}
+
+/***********************************************************************
+ *           CM_Get_DevNode_Property_Keys_Ex (cfgmgr32.@)
+ */
+CONFIGRET WINAPI CM_Get_DevNode_Property_Keys_Ex( DEVINST node, DEVPROPKEY *keys, ULONG *count, ULONG flags, HMACHINE machine )
+{
+    struct device dev;
+    LSTATUS err;
+
+    TRACE( "node %#lx, keys %p, count %p, flags %#lx, machine %p\n", node, keys, count, flags, machine );
+    if (machine) FIXME( "machine %p not implemented!\n", machine );
+    if (flags) FIXME( "flags %#lx not implemented!\n", flags );
+
+    if (!count) return CR_INVALID_POINTER;
+    if (*count && !keys) return CR_INVALID_POINTER;
+    if (devnode_get_device( node, &dev )) return CR_INVALID_DEVNODE;
+
+    err = get_device_property_keys( HKEY_LOCAL_MACHINE, &dev, keys, count );
+    if (err && err != ERROR_MORE_DATA) *count = 0;
+    if (err == ERROR_FILE_NOT_FOUND) return CR_NO_SUCH_DEVICE_INTERFACE;
+    return map_error( err );
+}
+
+/***********************************************************************
+ *           CM_Get_DevNode_Property_Keys (cfgmgr32.@)
+ */
+CONFIGRET WINAPI CM_Get_DevNode_Property_Keys( DEVINST node, DEVPROPKEY *keys, ULONG *count, ULONG flags )
+{
+    return CM_Get_DevNode_Property_Keys_Ex( node, keys, count, flags, NULL );
+}
+
+/***********************************************************************
+ *             CM_Get_Child_Ex  (cfgmgr32.@)
+ */
+CONFIGRET WINAPI CM_Get_Child_Ex( DEVINST *child, DEVINST node, ULONG flags, HMACHINE machine )
+{
+    FIXME( "child %p, node %#lx, flags %#lx, machine %p stub!\n", child, node, flags, machine );
+    return CR_SUCCESS;
+}
+
+/***********************************************************************
+ *             CM_Get_Child  (cfgmgr32.@)
+ */
+CONFIGRET WINAPI CM_Get_Child( DEVINST *child, DEVINST node, ULONG flags )
+{
+    return CM_Get_Child_Ex( child, node, flags, NULL );
+}
+
+/***********************************************************************
+ *              CM_Get_Parent (cfgmgr32.@)
+ */
+DWORD WINAPI CM_Get_Parent( DEVINST *parent, DEVINST child, ULONG flags )
+{
+    FIXME( "parent %p, child %#lx, flags %#lx stub!\n", parent, child, flags );
+    if (parent) *parent = 0;
+    return CR_NO_SUCH_DEVNODE;
+}
+
+/***********************************************************************
+ *              CM_Create_DevNodeW  (cfgmgr32.@)
+ */
+CONFIGRET WINAPI CM_Create_DevNodeW( DEVINST *node, DEVINSTID_W instance_id, DEVINST parent, ULONG flags )
+{
+    FIXME( "node %p, instance_id %s, parent %#lx, flags %#lx stub\n", node, debugstr_w(instance_id), parent, flags );
+    return CR_SUCCESS;
+}
+
+/***********************************************************************
+ *              CM_Create_DevNodeA  (cfgmgr32.@)
+ */
+CONFIGRET WINAPI CM_Create_DevNodeA( DEVINST *node, DEVINSTID_A instance_id, DEVINST parent, ULONG flags )
+{
+    FIXME( "node %p, instance_id %s, parent %#lx, flags %#lx stub\n", node, debugstr_a(instance_id), parent, flags );
+    return CR_SUCCESS;
+}
+
+/***********************************************************************
+ *      CM_Get_DevNode_Status_Ex (cfgmgr32.@)
+ */
+CONFIGRET WINAPI CM_Get_DevNode_Status_Ex( ULONG *status, ULONG *problem, DEVINST node, ULONG flags, HMACHINE machine )
+{
+    FIXME( "status %p, problem %p, node %#lx, flags %#lx, machine %p stub!\n", status, problem,
+           node, flags, machine );
+    return CR_SUCCESS;
+}
+
+/***********************************************************************
+ *      CM_Get_DevNode_Status (cfgmgr32.@)
+ */
+CONFIGRET WINAPI CM_Get_DevNode_Status( ULONG *status, ULONG *problem, DEVINST node, ULONG flags )
+{
+    return CM_Get_DevNode_Status_Ex( status, problem, node, flags, NULL );
+}
+
+/***********************************************************************
+ *             CM_Get_Sibling_Ex  (cfgmgr32.@)
+ */
+CONFIGRET WINAPI CM_Get_Sibling_Ex( DEVINST *sibling, DEVINST node, ULONG flags, HMACHINE machine )
+{
+    FIXME( "sibling %p, node %#lx, flags %#lx, machine %p stub!\n", sibling, node, flags, machine );
+    return CR_FAILURE;
+}
+
+/***********************************************************************
+ *             CM_Get_Sibling  (cfgmgr32.@)
+ */
+CONFIGRET WINAPI CM_Get_Sibling( DEVINST *sibling, DEVINST node, ULONG flags )
+{
+    return CM_Get_Sibling_Ex( sibling, node, flags, NULL );
+}
+
+/***********************************************************************
+ *              CM_Reenumerate_DevNode_Ex  (cfgmgr32.@)
+ */
+CONFIGRET WINAPI CM_Reenumerate_DevNode_Ex( DEVINST node, ULONG flags, HMACHINE machine )
+{
+    FIXME( "node %#lx, flags %#lx, machine %p stub!\n", node, flags, machine );
+    return CR_FAILURE;
+}
+
+/***********************************************************************
+ *              CM_Reenumerate_DevNode  (cfgmgr32.@)
+ */
+CONFIGRET WINAPI CM_Reenumerate_DevNode( DEVINST node, ULONG flags )
+{
+    return CM_Reenumerate_DevNode_Ex( node, flags, NULL );
+}
+
+/***********************************************************************
+ *              CM_Request_Device_EjectA  (cfgmgr32.@)
+ */
+CONFIGRET WINAPI CM_Request_Device_EjectA( DEVINST node, PNP_VETO_TYPE *type, char *name, ULONG length, ULONG flags )
+{
+    FIXME( "node %#lx, type %p, name %p, length %#lx, flags %#lx stub!\n", node, type, name, length, flags );
+    return CR_SUCCESS;
+}
+
+/***********************************************************************
+ *              CM_Request_Device_EjectW  (cfgmgr32.@)
+ */
+CONFIGRET WINAPI CM_Request_Device_EjectW( DEVINST node, PNP_VETO_TYPE *type, WCHAR *name, ULONG length, ULONG flags )
+{
+    FIXME( "node %#lx, type %p, name %p, length %#lx, flags %#lx stub!\n", node, type, name, length, flags );
+    return CR_SUCCESS;
+}
+
+/***********************************************************************
+ *      CMP_WaitNoPendingInstallEvents  (cfgmgr32.@)
+ */
+DWORD WINAPI CMP_WaitNoPendingInstallEvents( DWORD timeout )
+{
+    static BOOL warned = FALSE;
+
+    if (!warned)
+    {
+        FIXME( "%ld\n", timeout );
+        warned = TRUE;
+    }
+    return WAIT_OBJECT_0;
+}
+
+/***********************************************************************
+ *      CM_Get_Version (cfgmgr32.@)
+ */
+WORD WINAPI CM_Get_Version( void )
+{
+    TRACE( "\n" );
+    return 0x0400;
+}
diff --git a/dlls/cfgmgr32/cfgmgr32.spec b/dlls/cfgmgr32/cfgmgr32.spec
index 9f5ed24ebf06..df23120954c0 100644
--- a/dlls/cfgmgr32/cfgmgr32.spec
+++ b/dlls/cfgmgr32/cfgmgr32.spec
@@ -4,7 +4,7 @@
 @ stub CMP_RegisterServiceNotification
 @ stub CMP_Register_Notification
 @ stub CMP_Report_LogOn
-@ stdcall CMP_WaitNoPendingInstallEvents(long) setupapi.CMP_WaitNoPendingInstallEvents
+@ stdcall CMP_WaitNoPendingInstallEvents(long)
 @ stub CMP_WaitServicesAvailable
 @ stub CM_Add_Driver_PackageW
 @ stub CM_Add_Driver_Package_ExW
@@ -18,10 +18,10 @@
 @ stub CM_Add_Res_Des
 @ stub CM_Add_Res_Des_Ex
 @ stub CM_Apply_PowerScheme
-@ stdcall CM_Connect_MachineA(str ptr) setupapi.CM_Connect_MachineA
-@ stdcall CM_Connect_MachineW(wstr ptr) setupapi.CM_Connect_MachineW
-@ stdcall CM_Create_DevNodeA(ptr str long long) setupapi.CM_Create_DevNodeA
-@ stdcall CM_Create_DevNodeW(ptr wstr long long) setupapi.CM_Create_DevNodeW
+@ stdcall CM_Connect_MachineA(str ptr)
+@ stdcall CM_Connect_MachineW(wstr ptr)
+@ stdcall CM_Create_DevNodeA(ptr str long long)
+@ stdcall CM_Create_DevNodeW(ptr wstr long long)
 @ stub CM_Create_DevNode_ExA
 @ stub CM_Create_DevNode_ExW
 @ stub CM_Create_Range_List
@@ -41,7 +41,7 @@
 @ stub CM_Detect_Resource_Conflict_Ex
 @ stub CM_Disable_DevNode
 @ stub CM_Disable_DevNode_Ex
-@ stdcall CM_Disconnect_Machine(long) setupapi.CM_Disconnect_Machine
+@ stdcall CM_Disconnect_Machine(long)
 @ stub CM_Dup_Range_List
 @ stub CM_Duplicate_PowerScheme
 @ stub CM_Enable_DevNode
@@ -62,8 +62,8 @@
 @ stub CM_Free_Res_Des_Ex
 @ stub CM_Free_Res_Des_Handle
 @ stub CM_Free_Resource_Conflict_Handle
-@ stdcall CM_Get_Child(ptr long long) setupapi.CM_Get_Child
-@ stdcall CM_Get_Child_Ex(ptr long long ptr) setupapi.CM_Get_Child_Ex
+@ stdcall CM_Get_Child(ptr long long)
+@ stdcall CM_Get_Child_Ex(ptr long long ptr)
 @ stdcall CM_Get_Class_Key_NameA(ptr ptr ptr long)
 @ stdcall CM_Get_Class_Key_NameW(ptr ptr ptr long)
 @ stdcall CM_Get_Class_Key_Name_ExA(ptr ptr ptr long ptr)
@@ -84,32 +84,32 @@
 @ stub CM_Get_DevNode_Custom_PropertyW
 @ stub CM_Get_DevNode_Custom_Property_ExA
 @ stub CM_Get_DevNode_Custom_Property_ExW
-@ stdcall CM_Get_DevNode_PropertyW(long ptr ptr ptr ptr long) setupapi.CM_Get_DevNode_PropertyW
-@ stdcall CM_Get_DevNode_Property_ExW(long ptr ptr ptr ptr long ptr) setupapi.CM_Get_DevNode_Property_ExW
-@ stub CM_Get_DevNode_Property_Keys
-@ stub CM_Get_DevNode_Property_Keys_Ex
+@ stdcall CM_Get_DevNode_PropertyW(long ptr ptr ptr ptr long)
+@ stdcall CM_Get_DevNode_Property_ExW(long ptr ptr ptr ptr long ptr)
+@ stdcall CM_Get_DevNode_Property_Keys(long ptr ptr long)
+@ stdcall CM_Get_DevNode_Property_Keys_Ex(long ptr ptr long ptr)
 @ stdcall CM_Get_DevNode_Registry_PropertyA(long long ptr ptr ptr long)
 @ stdcall CM_Get_DevNode_Registry_PropertyW(long long ptr ptr ptr long)
 @ stdcall CM_Get_DevNode_Registry_Property_ExA(long long ptr ptr ptr long ptr)
 @ stdcall CM_Get_DevNode_Registry_Property_ExW(long long ptr ptr ptr long ptr)
-@ stdcall CM_Get_DevNode_Status(ptr ptr long long) setupapi.CM_Get_DevNode_Status
-@ stdcall CM_Get_DevNode_Status_Ex(ptr ptr long long ptr) setupapi.CM_Get_DevNode_Status_Ex
+@ stdcall CM_Get_DevNode_Status(ptr ptr long long)
+@ stdcall CM_Get_DevNode_Status_Ex(ptr ptr long long ptr)
 @ stdcall CM_Get_Device_IDA(ptr ptr long long)
 @ stdcall CM_Get_Device_IDW(ptr ptr long long)
 @ stdcall CM_Get_Device_ID_ExA(ptr ptr long long ptr)
 @ stdcall CM_Get_Device_ID_ExW(ptr ptr long long ptr)
-@ stdcall CM_Get_Device_ID_ListA(str ptr long long) setupapi.CM_Get_Device_ID_ListA
-@ stdcall CM_Get_Device_ID_ListW(wstr ptr long long) setupapi.CM_Get_Device_ID_ListW
-@ stdcall CM_Get_Device_ID_List_ExA(str ptr long long ptr) setupapi.CM_Get_Device_ID_List_ExA
-@ stdcall CM_Get_Device_ID_List_ExW(wstr ptr long long ptr) setupapi.CM_Get_Device_ID_List_ExW
-@ stdcall CM_Get_Device_ID_List_SizeA(ptr str long) setupapi.CM_Get_Device_ID_List_SizeA
-@ stdcall CM_Get_Device_ID_List_SizeW(ptr wstr long) setupapi.CM_Get_Device_ID_List_SizeW
-@ stdcall CM_Get_Device_ID_List_Size_ExA(ptr str long ptr) setupapi.CM_Get_Device_ID_List_Size_ExA
-@ stdcall CM_Get_Device_ID_List_Size_ExW(ptr wstr long ptr) setupapi.CM_Get_Device_ID_List_Size_ExW
+@ stdcall CM_Get_Device_ID_ListA(str ptr long long)
+@ stdcall CM_Get_Device_ID_ListW(wstr ptr long long)
+@ stdcall CM_Get_Device_ID_List_ExA(str ptr long long ptr)
+@ stdcall CM_Get_Device_ID_List_ExW(wstr ptr long long ptr)
+@ stdcall CM_Get_Device_ID_List_SizeA(ptr str long)
+@ stdcall CM_Get_Device_ID_List_SizeW(ptr wstr long)
+@ stdcall CM_Get_Device_ID_List_Size_ExA(ptr str long ptr)
+@ stdcall CM_Get_Device_ID_List_Size_ExW(ptr wstr long ptr)
 @ stdcall CM_Get_Device_ID_Size(ptr ptr long)
 @ stdcall CM_Get_Device_ID_Size_Ex(ptr ptr long ptr)
-@ stdcall CM_Get_Device_Interface_AliasA(str ptr ptr ptr long) setupapi.CM_Get_Device_Interface_AliasA
-@ stdcall CM_Get_Device_Interface_AliasW(wstr ptr ptr ptr long) setupapi.CM_Get_Device_Interface_AliasW
+@ stdcall CM_Get_Device_Interface_AliasA(str ptr ptr ptr long)
+@ stdcall CM_Get_Device_Interface_AliasW(wstr ptr ptr ptr long)
 @ stub CM_Get_Device_Interface_Alias_ExA
 @ stub CM_Get_Device_Interface_Alias_ExW
 @ stdcall CM_Get_Device_Interface_ListA(ptr ptr ptr long long)
@@ -142,7 +142,7 @@
 @ stub CM_Get_Next_Log_Conf_Ex
 @ stub CM_Get_Next_Res_Des
 @ stub CM_Get_Next_Res_Des_Ex
-@ stdcall CM_Get_Parent(ptr long long) setupapi.CM_Get_Parent
+@ stdcall CM_Get_Parent(ptr long long)
 @ stub CM_Get_Parent_Ex
 @ stub CM_Get_Res_Des_Data
 @ stub CM_Get_Res_Des_Data_Ex
@@ -151,9 +151,9 @@
 @ stub CM_Get_Resource_Conflict_Count
 @ stub CM_Get_Resource_Conflict_DetailsA
 @ stub CM_Get_Resource_Conflict_DetailsW
-@ stdcall CM_Get_Sibling(ptr long long) setupapi.CM_Get_Sibling
-@ stdcall CM_Get_Sibling_Ex(ptr long long ptr) setupapi.CM_Get_Sibling_Ex
-@ stdcall CM_Get_Version() setupapi.CM_Get_Version
+@ stdcall CM_Get_Sibling(ptr long long)
+@ stdcall CM_Get_Sibling_Ex(ptr long long ptr)
+@ stdcall CM_Get_Version()
 @ stub CM_Get_Version_Ex
 @ stub CM_Import_PowerScheme
 @ stub CM_Install_DevNodeW
@@ -197,8 +197,8 @@
 @ stub CM_Query_Remove_SubTree
 @ stub CM_Query_Remove_SubTree_Ex
 @ stub CM_Query_Resource_Conflict_List
-@ stdcall CM_Reenumerate_DevNode(ptr long) setupapi.CM_Reenumerate_DevNode
-@ stdcall CM_Reenumerate_DevNode_Ex(ptr long ptr) setupapi.CM_Reenumerate_DevNode_Ex
+@ stdcall CM_Reenumerate_DevNode(ptr long)
+@ stdcall CM_Reenumerate_DevNode_Ex(ptr long ptr)
 @ stub CM_Register_Device_Driver
 @ stub CM_Register_Device_Driver_Ex
 @ stub CM_Register_Device_InterfaceA
@@ -221,8 +221,8 @@
 @ stub CM_Set_ActiveScheme
 @ stub CM_Set_Class_PropertyW
 @ stub CM_Set_Class_Property_ExW
-@ stdcall CM_Set_Class_Registry_PropertyA(ptr long ptr long long ptr) setupapi.CM_Set_Class_Registry_PropertyA
-@ stdcall CM_Set_Class_Registry_PropertyW(ptr long ptr long long ptr) setupapi.CM_Set_Class_Registry_PropertyW
+@ stdcall CM_Set_Class_Registry_PropertyA(ptr long ptr long long ptr)
+@ stdcall CM_Set_Class_Registry_PropertyW(ptr long ptr long long ptr)
 @ stub CM_Set_DevNode_Problem
 @ stub CM_Set_DevNode_Problem_Ex
 @ stub CM_Set_DevNode_PropertyW
diff --git a/dlls/cfgmgr32/cfgmgr32_private.h b/dlls/cfgmgr32/cfgmgr32_private.h
index 81ebd413c126..9051897daa53 100644
--- a/dlls/cfgmgr32/cfgmgr32_private.h
+++ b/dlls/cfgmgr32/cfgmgr32_private.h
@@ -50,9 +50,12 @@ static inline const char *debugstr_DEVPROPCOMPKEY( const DEVPROPCOMPKEY *key )
                              debugstr_w( key->LocaleName ) );
 }
 
+#define PROP_FLAG_ANSI    1
+#define PROP_FLAG_BINARY  2
+
 struct property
 {
-    BOOL ansi;
+    UINT flags;
     DEVPROPKEY key;
     DEVPROPTYPE *type;
     DWORD *reg_type;
@@ -60,7 +63,7 @@ struct property
     DWORD *size;
 };
 
-extern LSTATUS init_property( struct property *prop, const DEVPROPKEY *key, DEVPROPTYPE *type, void *buffer, DWORD *size );
+extern LSTATUS init_property( struct property *prop, const DEVPROPKEY *key, DEVPROPTYPE *type, void *buffer, DWORD *size, BOOL binary );
 
 struct device_interface
 {
diff --git a/dlls/cfgmgr32/devobject.c b/dlls/cfgmgr32/devobject.c
index 2ee2c1f8387a..14591eef4ab6 100644
--- a/dlls/cfgmgr32/devobject.c
+++ b/dlls/cfgmgr32/devobject.c
@@ -317,7 +317,7 @@ static LSTATUS copy_device_interface_property( HKEY hkey, const struct device_in
     struct property prop;
     LSTATUS err;
 
-    init_property( &prop, &property->CompKey.Key, &property->Type, property->Buffer, &property->BufferSize );
+    init_property( &prop, &property->CompKey.Key, &property->Type, property->Buffer, &property->BufferSize, TRUE );
     if (!(err = query_device_interface_property( hkey, iface, &prop ))) return ERROR_SUCCESS;
     if (err && err != ERROR_MORE_DATA) return ERROR_SUCCESS;
 
diff --git a/dlls/cfgmgr32/tests/cfgmgr32.c b/dlls/cfgmgr32/tests/cfgmgr32.c
index 8fe2b9e72414..b5af953d229f 100644
--- a/dlls/cfgmgr32/tests/cfgmgr32.c
+++ b/dlls/cfgmgr32/tests/cfgmgr32.c
@@ -187,7 +187,7 @@ const DEVPROPERTY* (WINAPI *pDevFindProperty)(const DEVPROPKEY *, DEVPROPSTORE,
 
 DEFINE_DEVPROPKEY(DEVPROPKEY_GPU_LUID, 0x60b193cb, 0x5276, 0x4d0f, 0x96, 0xfc, 0xf1, 0x73, 0xab, 0xad, 0x3e, 0xc6, 2);
 
-static void test_CM_Get_Device_ID_List(void)
+static void test_CM_Get_Device_ID_List_setupapi(void)
 {
     struct
     {
@@ -3317,6 +3317,368 @@ static void test_CM_Get_DevNode_Registry_Property(void)
     todo_wine ok_u4( len, ==, 78 );
 }
 
+static void test_CM_Get_DevNode_Property(void)
+{
+    WCHAR iface[4096], instance_id[MAX_PATH], buffer[MAX_PATH];
+    DWORD size, type, len;
+    CONFIGRET ret;
+    DEVINST node;
+    GUID guid;
+
+
+    guid = GUID_DEVINTERFACE_HID;
+    ret = CM_Get_Device_Interface_ListW( &guid, NULL, iface, ARRAY_SIZE(iface), CM_GET_DEVICE_INTERFACE_LIST_PRESENT );
+    if (broken( !*iface ))
+    {
+        skip( "No HID device present, skipping tests\n" );
+        return;
+    }
+    ok_x4( ret, ==, CR_SUCCESS );
+    size = sizeof(instance_id);
+    ret = CM_Get_Device_Interface_PropertyW( iface, &DEVPKEY_Device_InstanceId, &type, (BYTE *)instance_id, &size, 0 );
+    ok_x4( ret, ==, CR_SUCCESS );
+    ok_x4( type, ==, DEVPROP_TYPE_STRING );
+
+    node = 0xdeadbeef;
+    ret = CM_Locate_DevNodeW( &node, instance_id, 0 );
+    ok_x4( ret, ==, CR_SUCCESS );
+    todo_wine ok_x4( node, ==, 2 );
+
+
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( 0, &DEVPKEY_Device_ClassGuid, &type, (BYTE *)buffer, &len, 0 );
+    ok_x4( ret, ==, CR_INVALID_DEVNODE );
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_ClassGuid, NULL, (BYTE *)NULL, NULL, 0 );
+    ok_x4( ret, ==, CR_INVALID_POINTER );
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_ClassGuid, &type, (BYTE *)buffer, NULL, 0 );
+    ok_x4( ret, ==, CR_INVALID_POINTER );
+    len = 1;
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_ClassGuid, &type, (BYTE *)NULL, &len, 0 );
+    ok_x4( ret, ==, CR_INVALID_POINTER );
+
+    len = 0;
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_ClassGuid, &type, (BYTE *)NULL, &len, 0 );
+    ok_x4( ret, ==, CR_BUFFER_SMALL );
+    ok_x4( len, ==, 16 );
+    len = 1;
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_ClassGuid, &type, (BYTE *)buffer, &len, 0 );
+    ok_x4( ret, ==, CR_BUFFER_SMALL );
+    ok_x4( len, ==, 16 );
+
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( 10, &DEVPKEY_Device_ClassGuid, &type, (BYTE *)buffer, &len, 0 );
+    ok_x4( ret, ==, CR_INVALID_DEVNODE );
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, 0, &type, (BYTE *)buffer, &len, 0 );
+    ok_x4( ret, ==, CR_FAILURE );
+
+    type = 0xdeadbeef;
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_DeviceDesc, &type, (BYTE *)buffer, &len, 0 );
+    ok_x4( ret, ==, CR_SUCCESS );
+    ok_u4( type, ==, DEVPROP_TYPE_STRING );
+    ok_u4( len, >, 1 );
+    type = 0xdeadbeef;
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_HardwareIds, &type, (BYTE *)buffer, &len, 0 );
+    ok_x4( ret, ==, CR_SUCCESS );
+    ok_u4( type, ==, DEVPROP_TYPE_STRING_LIST );
+    ok_u4( len, >, 1 );
+    type = 0xdeadbeef;
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_CompatibleIds, &type, (BYTE *)buffer, &len, 0 );
+    ok_x4( ret, ==, CR_SUCCESS );
+    ok_u4( type, ==, DEVPROP_TYPE_STRING_LIST );
+    ok_u4( len, >, 1 );
+    type = 0xdeadbeef;
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_Service, &type, (BYTE *)buffer, &len, 0 );
+    ok( ret == CR_NO_SUCH_VALUE || ret == CR_SUCCESS, "got ret == %#lx\n", ret );
+    ok( type == 0xdeadbeef || type == DEVPROP_TYPE_STRING, "got type == %#lx\n", type );
+    ok( len == 0 || len == 14, "got len == %#lx\n", len );
+    type = 0xdeadbeef;
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_Class, &type, (BYTE *)buffer, &len, 0 );
+    ok_x4( ret, ==, CR_SUCCESS );
+    ok_u4( type, ==, DEVPROP_TYPE_STRING );
+    ok_u4( len, >, 1 );
+    type = 0xdeadbeef;
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_ClassGuid, &type, (BYTE *)buffer, &len, 0 );
+    ok_x4( ret, ==, CR_SUCCESS );
+    ok_u4( type, ==, DEVPROP_TYPE_GUID );
+    ok_u4( len, ==, 0x10 );
+    type = 0xdeadbeef;
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_Driver, &type, (BYTE *)buffer, &len, 0 );
+    ok_x4( ret, ==, CR_SUCCESS );
+    ok_u4( type, ==, DEVPROP_TYPE_STRING );
+    ok_u4( len, >, 1 );
+    type = 0xdeadbeef;
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_ConfigFlags, &type, (BYTE *)buffer, &len, 0 );
+    ok_x4( ret, ==, CR_SUCCESS );
+    ok_u4( type, ==, DEVPROP_TYPE_UINT32 );
+    ok_u4( len, ==, 4 );
+    type = 0xdeadbeef;
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_Manufacturer, &type, (BYTE *)buffer, &len, 0 );
+    todo_wine ok_x4( ret, ==, CR_SUCCESS );
+    todo_wine ok_u4( type, ==, DEVPROP_TYPE_STRING );
+    todo_wine ok_u4( len, >, 1 );
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_FriendlyName, &type, (BYTE *)buffer, &len, 0 );
+    ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    type = 0xdeadbeef;
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_LocationInfo, &type, (BYTE *)buffer, &len, 0 );
+    ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    ok_u4( type, ==, 0xdeadbeef );
+    ok_u4( len, ==, 0 );
+    type = 0xdeadbeef;
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_PDOName, &type, (BYTE *)buffer, &len, 0 );
+    todo_wine ok_x4( ret, ==, CR_SUCCESS );
+    todo_wine ok_u4( type, ==, DEVPROP_TYPE_STRING );
+    todo_wine ok_u4( len, >, 1 );
+    type = 0xdeadbeef;
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_Capabilities, &type, (BYTE *)buffer, &len, 0 );
+    todo_wine ok_x4( ret, ==, CR_SUCCESS );
+    todo_wine ok_u4( type, ==, DEVPROP_TYPE_UINT32 );
+    todo_wine ok_u4( len, ==, 4 );
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_UINumber, &type, (BYTE *)buffer, &len, 0 );
+    ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_UpperFilters, &type, (BYTE *)buffer, &len, 0 );
+    ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_LowerFilters, &type, (BYTE *)buffer, &len, 0 );
+    ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    type = 0xdeadbeef;
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_BusTypeGuid, &type, (BYTE *)buffer, &len, 0 );
+    todo_wine ok_x4( ret, ==, CR_SUCCESS );
+    todo_wine ok_u4( type, ==, DEVPROP_TYPE_GUID );
+    todo_wine ok_u4( len, ==, 16 );
+    type = 0xdeadbeef;
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_LegacyBusType, &type, (BYTE *)buffer, &len, 0 );
+    todo_wine ok_x4( ret, ==, CR_SUCCESS );
+    todo_wine ok_u4( type, ==, DEVPROP_TYPE_UINT32 );
+    todo_wine ok_u4( len, ==, 4 );
+    type = 0xdeadbeef;
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_BusNumber, &type, (BYTE *)buffer, &len, 0 );
+    todo_wine ok_x4( ret, ==, CR_SUCCESS );
+    todo_wine ok_u4( type, ==, DEVPROP_TYPE_UINT32 );
+    todo_wine ok_u4( len, ==, 4 );
+    type = 0xdeadbeef;
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_EnumeratorName, &type, (BYTE *)buffer, &len, 0 );
+    todo_wine ok_x4( ret, ==, CR_SUCCESS );
+    todo_wine ok_u4( type, ==, DEVPROP_TYPE_STRING );
+    todo_wine ok_u4( len, >, 1 );
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_Security, &type, (BYTE *)buffer, &len, 0 );
+    ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_SecuritySDS, &type, (BYTE *)buffer, &len, 0 );
+    ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_DevType, &type, (BYTE *)buffer, &len, 0 );
+    ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_Exclusive, &type, (BYTE *)buffer, &len, 0 );
+    ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_Characteristics, &type, (BYTE *)buffer, &len, 0 );
+    ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    type = 0xdeadbeef;
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_Address, &type, (BYTE *)buffer, &len, 0 );
+    todo_wine ok_x4( ret, ==, CR_SUCCESS );
+    todo_wine ok_u4( type, ==, DEVPROP_TYPE_UINT32 );
+    todo_wine ok_u4( len, ==, 4 );
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_UINumberDescFormat, &type, (BYTE *)buffer, &len, 0 );
+    ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    type = 0xdeadbeef;
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_PowerData, &type, (BYTE *)buffer, &len, 0 );
+    todo_wine ok_x4( ret, ==, CR_SUCCESS );
+    todo_wine ok_u4( type, ==, DEVPROP_TYPE_BINARY );
+    todo_wine ok_u4( len, >, 1 );
+    type = 0xdeadbeef;
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_RemovalPolicy, &type, (BYTE *)buffer, &len, 0 );
+    todo_wine ok_x4( ret, ==, CR_SUCCESS );
+    todo_wine ok_u4( type, ==, DEVPROP_TYPE_UINT32 );
+    todo_wine ok_u4( len, ==, 4 );
+    type = 0xdeadbeef;
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_RemovalPolicyDefault, &type, (BYTE *)buffer, &len, 0 );
+    todo_wine ok_x4( ret, ==, CR_SUCCESS );
+    todo_wine ok_u4( type, ==, DEVPROP_TYPE_UINT32 );
+    todo_wine ok_u4( len, ==, 4 );
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_RemovalPolicyOverride, &type, (BYTE *)buffer, &len, 0 );
+    ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    type = 0xdeadbeef;
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_InstallState, &type, (BYTE *)buffer, &len, 0 );
+    todo_wine ok_x4( ret, ==, CR_SUCCESS );
+    todo_wine ok_u4( type, ==, DEVPROP_TYPE_UINT32 );
+    todo_wine ok_u4( len, ==, 4 );
+    type = 0xdeadbeef;
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_LocationPaths, &type, (BYTE *)buffer, &len, 0 );
+    ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    ok_u4( type, ==, 0xdeadbeef );
+    ok_u4( len, ==, 0 );
+
+    type = 0xdeadbeef;
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_BaseContainerId, &type, (BYTE *)buffer, &len, 0 );
+    todo_wine ok_x4( ret, ==, CR_SUCCESS );
+    todo_wine ok_u4( type, ==, DEVPROP_TYPE_GUID );
+    todo_wine ok_u4( len, ==, 0x10 );
+
+    type = 0xdeadbeef;
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_InstanceId, &type, (BYTE *)buffer, &len, 0 );
+    ok_x4( ret, ==, CR_SUCCESS );
+    ok_u4( type, ==, DEVPROP_TYPE_STRING );
+    ok_u4( len, >, 1 );
+
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_EjectionRelations, &type, (BYTE *)buffer, &len, 0 );
+    ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_RemovalRelations, &type, (BYTE *)buffer, &len, 0 );
+    ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_PowerRelations, &type, (BYTE *)buffer, &len, 0 );
+    ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_BusRelations, &type, (BYTE *)buffer, &len, 0 );
+    ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    type = 0xdeadbeef;
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_Parent, &type, (BYTE *)buffer, &len, 0 );
+    todo_wine ok_x4( ret, ==, CR_SUCCESS );
+    todo_wine ok_u4( type, ==, DEVPROP_TYPE_STRING );
+    todo_wine ok_u4( len, >, 1 );
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_Children, &type, (BYTE *)buffer, &len, 0 );
+    ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    type = 0xdeadbeef;
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_Siblings, &type, (BYTE *)buffer, &len, 0 );
+    ok( ret == CR_SUCCESS || ret == CR_NO_SUCH_VALUE, "got %#lx\n", ret );
+    if (ret == CR_SUCCESS)
+    {
+        ok_u4( type, ==, DEVPROP_TYPE_STRING_LIST );
+        ok_u4( len, >, 1 );
+    }
+
+    type = 0xdeadbeef;
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_ContainerId, &type, (BYTE *)buffer, &len, 0 );
+    ok_x4( ret, ==, CR_SUCCESS );
+    ok_u4( type, ==, DEVPROP_TYPE_GUID );
+    ok_u4( len, ==, 0x10 );
+
+    type = 0xdeadbeef;
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_DriverDate, &type, (BYTE *)buffer, &len, 0 );
+    todo_wine ok_x4( ret, ==, CR_SUCCESS );
+    todo_wine ok_u4( type, ==, DEVPROP_TYPE_FILETIME );
+    todo_wine ok_u4( len, ==, 8 );
+    type = 0xdeadbeef;
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_DriverVersion, &type, (BYTE *)buffer, &len, 0 );
+    todo_wine ok_x4( ret, ==, CR_SUCCESS );
+    todo_wine ok_u4( type, ==, DEVPROP_TYPE_STRING );
+    todo_wine ok_u4( len, >, 1 );
+    type = 0xdeadbeef;
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_DriverDesc, &type, (BYTE *)buffer, &len, 0 );
+    todo_wine ok_x4( ret, ==, CR_SUCCESS );
+    todo_wine ok_u4( type, ==, DEVPROP_TYPE_STRING );
+    todo_wine ok_u4( len, >, 1 );
+    type = 0xdeadbeef;
+    len = sizeof(buffer);
+    ret = CM_Get_DevNode_PropertyW( node, &DEVPKEY_Device_DriverInfPath, &type, (BYTE *)buffer, &len, 0 );
+    todo_wine ok_x4( ret, ==, CR_SUCCESS );
+    todo_wine ok_u4( type, ==, DEVPROP_TYPE_STRING );
+    todo_wine ok_u4( len, >, 1 );
+}
+
+static void test_CM_Get_DevNode_Property_Keys(void)
+{
+    WCHAR iface[4096], instance_id[MAX_PATH];
+    DEVPROPKEY buffer[128];
+    DWORD i, size, type;
+    CONFIGRET ret;
+    DEVINST node;
+    GUID guid;
+
+
+    guid = GUID_DEVINTERFACE_HID;
+    ret = CM_Get_Device_Interface_ListW( &guid, NULL, iface, ARRAY_SIZE(iface), CM_GET_DEVICE_INTERFACE_LIST_PRESENT );
+    if (broken( !*iface ))
+    {
+        skip( "No HID device present, skipping tests\n" );
+        return;
+    }
+    ok_x4( ret, ==, CR_SUCCESS );
+    size = sizeof(instance_id);
+    ret = CM_Get_Device_Interface_PropertyW( iface, &DEVPKEY_Device_InstanceId, &type, (BYTE *)instance_id, &size, 0 );
+    ok_x4( ret, ==, CR_SUCCESS );
+    ok_x4( type, ==, DEVPROP_TYPE_STRING );
+
+    node = 0xdeadbeef;
+    ret = CM_Locate_DevNodeW( &node, instance_id, 0 );
+    ok_x4( ret, ==, CR_SUCCESS );
+    todo_wine ok_x4( node, ==, 2 );
+
+    size = ARRAY_SIZE(buffer);
+    ret = CM_Get_DevNode_Property_Keys( 0, buffer, &size, 0 );
+    ok_x4( ret, ==, CR_INVALID_DEVNODE );
+    ok_u4( size, ==, ARRAY_SIZE(buffer) );
+    size = ARRAY_SIZE(buffer);
+    ret = CM_Get_DevNode_Property_Keys( 0xdeadbeef, buffer, &size, 0 );
+    ok_x4( ret, ==, CR_INVALID_DEVNODE );
+    ok_u4( size, ==, ARRAY_SIZE(buffer) );
+    size = ARRAY_SIZE(buffer);
+    ret = CM_Get_DevNode_Property_Keys( node, NULL, NULL, 0 );
+    ok_x4( ret, ==, CR_INVALID_POINTER );
+    size = ARRAY_SIZE(buffer);
+    ret = CM_Get_DevNode_Property_Keys( node, buffer, NULL, 0 );
+    ok_x4( ret, ==, CR_INVALID_POINTER );
+    size = ARRAY_SIZE(buffer);
+    ret = CM_Get_DevNode_Property_Keys( node, NULL, &size, 0 );
+    ok_x4( ret, ==, CR_INVALID_POINTER );
+    ok_u4( size, ==, ARRAY_SIZE(buffer) );
+    size = 0;
+    ret = CM_Get_DevNode_Property_Keys( node, NULL, &size, 0 );
+    ok_x4( ret, ==, CR_BUFFER_SMALL );
+    ok_u4( size, >, 3 );
+    size = ARRAY_SIZE(buffer);
+    memset( buffer, 0xcd, sizeof(buffer) );
+    ret = CM_Get_DevNode_Property_Keys( node, buffer, &size, 0 );
+    ok_x4( ret, ==, CR_SUCCESS );
+    ok_u4( size, >, 3 );
+    todo_wine ok( !memcmp( buffer + 0, &DEVPKEY_Device_DeviceDesc, sizeof(*buffer) ), "got {%s,%#lx}\n", debugstr_guid( &buffer[0].fmtid ), buffer[0].pid );
+    todo_wine ok( !memcmp( buffer + 1, &DEVPKEY_Device_HardwareIds, sizeof(*buffer) ), "got {%s,%#lx}\n", debugstr_guid( &buffer[1].fmtid ), buffer[1].pid );
+    todo_wine ok( !memcmp( buffer + 2, &DEVPKEY_Device_CompatibleIds, sizeof(*buffer) ), "got {%s,%#lx}\n", debugstr_guid( &buffer[2].fmtid ), buffer[2].pid );
+
+    for (i = 0; i < size; i++) if (!memcmp( buffer + i, &DEVPKEY_Device_Parent, sizeof(*buffer) )) break;
+    todo_wine ok( i < size, "DEVPKEY_Device_Parent not found\n" );
+}
+
 static void test_CM_Get_Class_Property_Keys(void)
 {
     GUID guid = GUID_DEVCLASS_HIDCLASS;
@@ -3363,6 +3725,354 @@ static void test_CM_Get_Class_Property_Keys(void)
     if (len == 9) todo_wine ok( !memcmp( buffer + 5, &DEVPKEY_NAME, sizeof(*buffer) ), "got %s\n", debugstr_DEVPROPKEY( buffer + 5 ) );
 }
 
+static void test_CM_Get_Device_ID_List_Size(void)
+{
+    WCHAR instance[MAX_PATH], *buffer, *tmp;
+    ULONG size_all, size_present, size;
+    GUID guid = GUID_DEVINTERFACE_HID;
+    CONFIGRET ret;
+
+    ret = CM_Get_Device_ID_List_SizeW( NULL, NULL, CM_GETIDLIST_FILTER_NONE );
+    ok_x4( ret, ==, CR_INVALID_POINTER );
+    for (UINT flag = 1; flag; flag <<= 1)
+    {
+        if (flag & CM_GETIDLIST_FILTER_BITS) continue;
+        winetest_push_context( "%#x", flag );
+        ret = CM_Get_Device_ID_List_SizeW( &size, NULL, flag );
+        ok_x4( ret, ==, CR_INVALID_FLAG );
+        winetest_pop_context();
+    }
+
+    size_present = 0;
+    ret = CM_Get_Device_ID_List_SizeW( &size_present, NULL, CM_GETIDLIST_FILTER_PRESENT );
+    ok_x4( ret, ==, CR_SUCCESS );
+    ok_u4( size_present, >, 0 );
+    size_all = 0;
+    ret = CM_Get_Device_ID_List_SizeW( &size_all, NULL, CM_GETIDLIST_FILTER_NONE );
+    ok_x4( ret, ==, CR_SUCCESS );
+    ok_u4( size_all, >, 0 );
+
+    size = 0;
+    ret = CM_Get_Device_ID_List_SizeA( &size, NULL, CM_GETIDLIST_FILTER_PRESENT );
+    ok_x4( ret, ==, CR_SUCCESS );
+    ok_u4( size, ==, size_present );
+    size = 0;
+    ret = CM_Get_Device_ID_List_SizeW( &size, (WCHAR *)L"", CM_GETIDLIST_FILTER_PRESENT );
+    ok_x4( ret, ==, CR_SUCCESS );
+    ok_u4( size, ==, size_present );
+    size = 0;
+    ret = CM_Get_Device_ID_List_SizeA( &size, NULL, CM_GETIDLIST_FILTER_NONE );
+    ok_x4( ret, ==, CR_SUCCESS );
+    ok_u4( size, ==, size_all );
+    size = 0;
+    ret = CM_Get_Device_ID_List_SizeW( &size, (WCHAR *)L"", CM_GETIDLIST_FILTER_NONE );
+    ok_x4( ret, ==, CR_SUCCESS );
+    ok_u4( size, ==, size_all );
+
+
+    ret = CM_Get_Device_ID_List_SizeW( &size, NULL, CM_GETIDLIST_FILTER_ENUMERATOR );
+    ok_x4( ret, ==, CR_INVALID_POINTER );
+    ret = CM_Get_Device_ID_List_SizeW( &size, L"", CM_GETIDLIST_FILTER_ENUMERATOR );
+    ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    size = 0xdeadbeef;
+    ret = CM_Get_Device_ID_List_SizeW( &size, L"INVALID", CM_GETIDLIST_FILTER_ENUMERATOR );
+    ok_x4( ret, ==, CR_SUCCESS );
+    ok_u4( size, ==, 1 );
+    size = 0;
+    ret = CM_Get_Device_ID_List_SizeW( &size, L"HID\\VID", CM_GETIDLIST_FILTER_ENUMERATOR );
+    ok_x4( ret, ==, CR_SUCCESS );
+    ok_u4( size, ==, 1 );
+    size = 0;
+    ret = CM_Get_Device_ID_List_SizeW( &size, L"HID", CM_GETIDLIST_FILTER_ENUMERATOR );
+    ok_x4( ret, ==, CR_SUCCESS );
+    ok_u4( size, >, 1 );
+
+
+    ret = CM_Get_Device_ID_List_SizeW( &size, NULL, CM_GETIDLIST_FILTER_CLASS );
+    ok_x4( ret, ==, CR_INVALID_POINTER );
+    ret = CM_Get_Device_ID_List_SizeW( &size, L"", CM_GETIDLIST_FILTER_CLASS );
+    ok_x4( ret, ==, CR_INVALID_DATA );
+    ret = CM_Get_Device_ID_List_SizeW( &size, L"INVALID", CM_GETIDLIST_FILTER_CLASS );
+    ok_x4( ret, ==, CR_INVALID_DATA );
+    size = 0;
+    ret = CM_Get_Device_ID_List_SizeW( &size, L"{4d1e55b2-f16f-11cf-88cb-001111000030}" /* GUID_DEVINTERFACE_HID */, CM_GETIDLIST_FILTER_CLASS );
+    ok_x4( ret, ==, CR_SUCCESS );
+    ok_u4( size, ==, 1 );
+    size = 0;
+    ret = CM_Get_Device_ID_List_SizeW( &size, L"{745a17a0-74d3-11d0-b6fe-00a0c90f57da}" /* GUID_DEVCLASS_HIDCLASS */, CM_GETIDLIST_FILTER_CLASS );
+    ok_x4( ret, ==, CR_SUCCESS );
+    ok_u4( size, >, 1 );
+
+
+    ret = CM_Get_Device_ID_List_SizeW( &size, NULL, CM_GETIDLIST_FILTER_SERVICE );
+    ok_x4( ret, ==, CR_INVALID_POINTER );
+    size = 0;
+    ret = CM_Get_Device_ID_List_SizeW( &size, L"INVALID", CM_GETIDLIST_FILTER_SERVICE );
+    todo_wine ok_x4( ret, ==, CR_SUCCESS );
+    todo_wine ok_u4( size, ==, 1 );
+    size = 0;
+    ret = CM_Get_Device_ID_List_SizeW( &size, L"", CM_GETIDLIST_FILTER_SERVICE );
+    todo_wine ok_x4( ret, ==, CR_SUCCESS );
+    todo_wine ok_u4( size, >, 1 );
+
+
+    ret = CM_Get_Device_ID_List_SizeW( &size, NULL, CM_GETIDLIST_FILTER_EJECTRELATIONS );
+    todo_wine ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    ret = CM_Get_Device_ID_List_SizeW( &size, L"", CM_GETIDLIST_FILTER_EJECTRELATIONS );
+    todo_wine ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    ret = CM_Get_Device_ID_List_SizeW( &size, L"INVALID", CM_GETIDLIST_FILTER_EJECTRELATIONS );
+    todo_wine ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    ret = CM_Get_Device_ID_List_SizeW( &size, NULL, CM_GETIDLIST_FILTER_REMOVALRELATIONS );
+    todo_wine ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    ret = CM_Get_Device_ID_List_SizeW( &size, L"", CM_GETIDLIST_FILTER_REMOVALRELATIONS );
+    todo_wine ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    ret = CM_Get_Device_ID_List_SizeW( &size, L"INVALID", CM_GETIDLIST_FILTER_REMOVALRELATIONS );
+    todo_wine ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    ret = CM_Get_Device_ID_List_SizeW( &size, NULL, CM_GETIDLIST_FILTER_POWERRELATIONS );
+    todo_wine ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    ret = CM_Get_Device_ID_List_SizeW( &size, L"", CM_GETIDLIST_FILTER_POWERRELATIONS );
+    todo_wine ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    ret = CM_Get_Device_ID_List_SizeW( &size, L"INVALID", CM_GETIDLIST_FILTER_POWERRELATIONS );
+    todo_wine ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    ret = CM_Get_Device_ID_List_SizeW( &size, NULL, CM_GETIDLIST_FILTER_BUSRELATIONS );
+    todo_wine ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    ret = CM_Get_Device_ID_List_SizeW( &size, L"", CM_GETIDLIST_FILTER_BUSRELATIONS );
+    todo_wine ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    ret = CM_Get_Device_ID_List_SizeW( &size, L"INVALID", CM_GETIDLIST_FILTER_BUSRELATIONS );
+    todo_wine ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    ret = CM_Get_Device_ID_List_SizeW( &size, NULL, CM_GETIDLIST_FILTER_TRANSPORTRELATIONS );
+    todo_wine ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    ret = CM_Get_Device_ID_List_SizeW( &size, L"", CM_GETIDLIST_FILTER_TRANSPORTRELATIONS );
+    todo_wine ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    ret = CM_Get_Device_ID_List_SizeW( &size, L"INVALID", CM_GETIDLIST_FILTER_TRANSPORTRELATIONS );
+    todo_wine ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+
+
+    size = 0;
+    ret = CM_Get_Device_Interface_List_SizeW( &size, &guid, NULL, CM_GET_DEVICE_INTERFACE_LIST_ALL_DEVICES );
+    ok_x4( ret, ==, CR_SUCCESS );
+    ok_u4( size, >, 0 );
+    buffer = malloc( size * sizeof(*buffer) );
+    ok_ptr( buffer, !=, NULL );
+    ret = CM_Get_Device_Interface_ListW( &guid, NULL, buffer, size, CM_GET_DEVICE_INTERFACE_LIST_PRESENT );
+    ok_x4( ret, ==, CR_SUCCESS );
+
+    wcscpy( instance, buffer + 4 );
+    *wcsrchr( instance, '#' ) = 0;
+    while ((tmp = wcschr( instance, '#' ))) *tmp = '\\';
+
+    ret = CM_Get_Device_ID_List_SizeW( &size, instance, CM_GETIDLIST_FILTER_EJECTRELATIONS );
+    ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    ret = CM_Get_Device_ID_List_SizeW( &size, instance, CM_GETIDLIST_FILTER_REMOVALRELATIONS );
+    ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    ret = CM_Get_Device_ID_List_SizeW( &size, instance, CM_GETIDLIST_FILTER_POWERRELATIONS );
+    ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    ret = CM_Get_Device_ID_List_SizeW( &size, instance, CM_GETIDLIST_FILTER_BUSRELATIONS );
+    ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    ret = CM_Get_Device_ID_List_SizeW( &size, instance, CM_GETIDLIST_FILTER_TRANSPORTRELATIONS );
+    ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+
+    size = 0xdeadbeef;
+    ret = CM_Get_Device_ID_List_SizeW( &size, instance, CM_GETIDLIST_FILTER_ENUMERATOR );
+    ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    ok_u4( size, ==, 0 );
+    *wcsrchr( instance, '\\' ) = 0;
+    size = 0;
+    ret = CM_Get_Device_ID_List_SizeW( &size, instance, CM_GETIDLIST_FILTER_ENUMERATOR );
+    ok_x4( ret, ==, CR_SUCCESS );
+    ok_u4( size, >, 1 );
+
+    free( buffer );
+}
+
+static void test_CM_Get_Device_ID_List(void)
+{
+    WCHAR *buffer, *bufferW, *instance, *tmp;
+    CONFIGRET ret;
+    char *bufferA;
+    ULONG size;
+
+    size = 0;
+    ret = CM_Get_Device_ID_List_SizeW( &size, NULL, CM_GETIDLIST_FILTER_NONE );
+    ok_x4( ret, ==, CR_SUCCESS );
+    ok_u4( size, >, 0 );
+
+    buffer = malloc( size * sizeof(*buffer) );
+    ok_ptr( buffer, !=, NULL );
+    bufferW = malloc( size * sizeof(*bufferW) );
+    ok_ptr( bufferW, !=, NULL );
+
+
+    ret = CM_Get_Device_ID_ListW( NULL, NULL, size, CM_GETIDLIST_FILTER_NONE );
+    ok_x4( ret, ==, CR_INVALID_POINTER );
+    for (UINT flag = 1; flag; flag <<= 1)
+    {
+        if (flag & CM_GETIDLIST_FILTER_BITS) continue;
+        winetest_push_context( "%#x", flag );
+        ret = CM_Get_Device_ID_ListW( NULL, buffer, size, flag );
+        ok_x4( ret, ==, CR_INVALID_FLAG );
+        winetest_pop_context();
+    }
+
+    ret = CM_Get_Device_ID_ListW( NULL, buffer, size, CM_GETIDLIST_FILTER_PRESENT );
+    ok_x4( ret, ==, CR_SUCCESS );
+    ret = CM_Get_Device_ID_ListW( NULL, buffer, size, CM_GETIDLIST_FILTER_NONE );
+    ok_x4( ret, ==, CR_SUCCESS );
+
+
+    bufferA = malloc( size * sizeof(*bufferA) );
+    ok_ptr( bufferA, !=, NULL );
+    ret = CM_Get_Device_ID_ListA( NULL, bufferA, size, CM_GETIDLIST_FILTER_NONE );
+    ok_x4( ret, ==, CR_SUCCESS );
+
+    memset( bufferW, 0xcc, size * sizeof(*bufferW) );
+    MultiByteToWideChar( CP_ACP, 0, bufferA, size, bufferW, size );
+    ok( !memcmp( bufferW, buffer, size * sizeof(*buffer) ), "got %s, %s.\n", debugstr_wn( bufferW, size ), debugstr_wn( buffer, size ) );
+    free( bufferA );
+
+    ret = CM_Get_Device_ID_ListW( L"", buffer, size, CM_GETIDLIST_FILTER_NONE );
+    ok_x4( ret, ==, CR_SUCCESS );
+    ok( !memcmp( bufferW, buffer, size * sizeof(*buffer) ), "got %s, %s.\n", debugstr_wn( bufferW, size ), debugstr_wn( buffer, size ) );
+
+
+    ret = CM_Get_Device_ID_ListW( NULL, buffer, size, CM_GETIDLIST_FILTER_ENUMERATOR );
+    ok_x4( ret, ==, CR_INVALID_POINTER );
+    ret = CM_Get_Device_ID_ListW( L"", buffer, size, CM_GETIDLIST_FILTER_ENUMERATOR );
+    ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    ret = CM_Get_Device_ID_ListW( L"INVALID", buffer, size, CM_GETIDLIST_FILTER_ENUMERATOR );
+    ok_x4( ret, ==, CR_SUCCESS );
+    ok_wcs( L"", buffer );
+    ret = CM_Get_Device_ID_ListW( L"HID\\VID", buffer, size, CM_GETIDLIST_FILTER_ENUMERATOR );
+    ok_x4( ret, ==, CR_SUCCESS );
+    ok_wcs( L"", buffer );
+    ret = CM_Get_Device_ID_ListW( L"HID", buffer, size, CM_GETIDLIST_FILTER_ENUMERATOR );
+    ok_x4( ret, ==, CR_SUCCESS );
+    for (tmp = buffer; *tmp; tmp = tmp + wcslen( tmp ) + 1)
+    {
+        WCHAR *sep, substr[MAX_PATH], upper[MAX_PATH];
+        ok( !wcsncmp( tmp, L"HID\\", 4 ), "got %s\n", debugstr_w( tmp ) );
+        if (broken(!wcsncmp( tmp, L"HID\\{", 5 ))) continue; /* HID\\{cfa8b69e-5b4a-4cc0-b98b-8ba1a1f3f95a} (Microsoft Hyper-V Input?) */
+        /* HID\\VID_XXXX&PID_XXXX upper case prefix */
+        wcscpy( substr, tmp );
+        if (!(sep = wcschr( substr + 4, '\\' ))) sep = substr + 4;
+        *sep = 0;
+        wcscpy( upper, substr );
+        wcsupr( upper );
+        ok_wcs( upper, substr );
+        *sep = '\\';
+        wcslwr( wcsrchr( substr, '\\' ) ); /* lowercase instance + refstring */
+        flaky_wine ok_wcs( substr, tmp );
+    }
+    ok( tmp > buffer, "got %s\n", debugstr_wn( buffer, size ) );
+
+
+    ret = CM_Get_Device_ID_ListW( NULL, buffer, size, CM_GETIDLIST_FILTER_CLASS );
+    ok_x4( ret, ==, CR_INVALID_POINTER );
+    ret = CM_Get_Device_ID_ListW( L"", buffer, size, CM_GETIDLIST_FILTER_CLASS );
+    ok_x4( ret, ==, CR_INVALID_DATA );
+    ret = CM_Get_Device_ID_ListW( L"INVALID", buffer, size, CM_GETIDLIST_FILTER_CLASS );
+    ok_x4( ret, ==, CR_INVALID_DATA );
+    ret = CM_Get_Device_ID_ListW( L"{4d1e55b2-f16f-11cf-88cb-001111000030}", buffer, size, CM_GETIDLIST_FILTER_CLASS );
+    ok_x4( ret, ==, CR_SUCCESS );
+    ok_wcs( L"", buffer );
+    ret = CM_Get_Device_ID_ListW( L"{745a17a0-74d3-11d0-b6fe-00a0c90f57da}", buffer, size, CM_GETIDLIST_FILTER_CLASS );
+    ok_x4( ret, ==, CR_SUCCESS );
+    for (tmp = buffer; *tmp; tmp = tmp + wcslen( tmp ) + 1)
+        ok( !!wcschr( tmp, '\\' ), "got %s\n", debugstr_w( tmp ) );
+    ok( tmp > buffer, "got %s\n", debugstr_wn( buffer, size ) );
+
+
+    ret = CM_Get_Device_ID_ListW( NULL, buffer, size, CM_GETIDLIST_FILTER_SERVICE );
+    ok_x4( ret, ==, CR_INVALID_POINTER );
+    ret = CM_Get_Device_ID_ListW( L"INVALID", buffer, size, CM_GETIDLIST_FILTER_SERVICE );
+    todo_wine ok_x4( ret, ==, CR_SUCCESS );
+    ok_wcs( L"", buffer );
+    ret = CM_Get_Device_ID_ListW( L"", buffer, size, CM_GETIDLIST_FILTER_SERVICE );
+    todo_wine ok_x4( ret, ==, CR_SUCCESS );
+    for (tmp = buffer; *tmp; tmp = tmp + wcslen( tmp ) + 1)
+        ok( !!wcschr( tmp, '\\' ), "got %s\n", debugstr_w( tmp ) );
+    todo_wine ok( tmp > buffer, "got %s\n", debugstr_wn( buffer, size ) );
+
+
+    ret = CM_Get_Device_ID_ListW( NULL, buffer, size, CM_GETIDLIST_FILTER_EJECTRELATIONS );
+    todo_wine ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    ret = CM_Get_Device_ID_ListW( L"", buffer, size, CM_GETIDLIST_FILTER_EJECTRELATIONS );
+    todo_wine ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    ret = CM_Get_Device_ID_ListW( L"INVALID", buffer, size, CM_GETIDLIST_FILTER_EJECTRELATIONS );
+    todo_wine ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    ret = CM_Get_Device_ID_ListW( NULL, buffer, size, CM_GETIDLIST_FILTER_REMOVALRELATIONS );
+    todo_wine ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    ret = CM_Get_Device_ID_ListW( L"", buffer, size, CM_GETIDLIST_FILTER_REMOVALRELATIONS );
+    todo_wine ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    ret = CM_Get_Device_ID_ListW( L"INVALID", buffer, size, CM_GETIDLIST_FILTER_REMOVALRELATIONS );
+    todo_wine ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    ret = CM_Get_Device_ID_ListW( NULL, buffer, size, CM_GETIDLIST_FILTER_POWERRELATIONS );
+    todo_wine ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    ret = CM_Get_Device_ID_ListW( L"", buffer, size, CM_GETIDLIST_FILTER_POWERRELATIONS );
+    todo_wine ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    ret = CM_Get_Device_ID_ListW( L"INVALID", buffer, size, CM_GETIDLIST_FILTER_POWERRELATIONS );
+    todo_wine ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    ret = CM_Get_Device_ID_ListW( NULL, buffer, size, CM_GETIDLIST_FILTER_BUSRELATIONS );
+    todo_wine ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    ret = CM_Get_Device_ID_ListW( L"", buffer, size, CM_GETIDLIST_FILTER_BUSRELATIONS );
+    todo_wine ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    ret = CM_Get_Device_ID_ListW( L"INVALID", buffer, size, CM_GETIDLIST_FILTER_BUSRELATIONS );
+    todo_wine ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    ret = CM_Get_Device_ID_ListW( NULL, buffer, size, CM_GETIDLIST_FILTER_TRANSPORTRELATIONS );
+    todo_wine ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    ret = CM_Get_Device_ID_ListW( L"", buffer, size, CM_GETIDLIST_FILTER_TRANSPORTRELATIONS );
+    todo_wine ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+    ret = CM_Get_Device_ID_ListW( L"INVALID", buffer, size, CM_GETIDLIST_FILTER_TRANSPORTRELATIONS );
+    todo_wine ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+
+
+    ret = CM_Get_Device_ID_ListW( L"HID", buffer, size, CM_GETIDLIST_FILTER_ENUMERATOR );
+    ok_x4( ret, ==, CR_SUCCESS );
+    for (tmp = buffer; *tmp; tmp = tmp + wcslen( tmp ) + 1)
+    {
+        WCHAR *sep, substr[MAX_PATH], upper[MAX_PATH];
+        ok( !wcsncmp( tmp, L"HID\\", 4 ), "got %s\n", debugstr_w( tmp ) );
+        if (broken(!wcsncmp( tmp, L"HID\\{", 5 ))) continue; /* HID\\{cfa8b69e-5b4a-4cc0-b98b-8ba1a1f3f95a} (Microsoft Hyper-V Input?) */
+        /* HID\\VID_XXXX&PID_XXXX upper case prefix */
+        wcscpy( substr, tmp );
+        if (!(sep = wcschr( substr + 4, '\\' ))) sep = substr + 4;
+        *sep = 0;
+        wcscpy( upper, substr );
+        wcsupr( upper );
+        ok_wcs( upper, substr );
+        *sep = '\\';
+        wcslwr( wcsrchr( substr, '\\' ) ); /* lowercase instance + refstring */
+        flaky_wine ok_wcs( substr, tmp );
+    }
+    ok( tmp > buffer, "got %s\n", debugstr_wn( buffer, size ) );
+    memcpy( bufferW, buffer, size * sizeof(WCHAR) );
+
+    for (instance = bufferW; *instance; instance += wcslen( instance ) + 1)
+    {
+        ret = CM_Get_Device_ID_ListW( instance, buffer, size, CM_GETIDLIST_FILTER_EJECTRELATIONS );
+        ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+        ret = CM_Get_Device_ID_ListW( instance, buffer, size, CM_GETIDLIST_FILTER_REMOVALRELATIONS );
+        ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+        ret = CM_Get_Device_ID_ListW( instance, buffer, size, CM_GETIDLIST_FILTER_POWERRELATIONS );
+        ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+        ret = CM_Get_Device_ID_ListW( instance, buffer, size, CM_GETIDLIST_FILTER_BUSRELATIONS );
+        ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+        ret = CM_Get_Device_ID_ListW( instance, buffer, size, CM_GETIDLIST_FILTER_TRANSPORTRELATIONS );
+        ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+
+        ret = CM_Get_Device_ID_ListW( instance, buffer, size, CM_GETIDLIST_FILTER_ENUMERATOR );
+        ok_x4( ret, ==, CR_NO_SUCH_VALUE );
+        if ((tmp = wcsrchr( instance, '\\' ))) *tmp = 0;
+        ret = CM_Get_Device_ID_ListW( instance, buffer, size, CM_GETIDLIST_FILTER_ENUMERATOR );
+        ok_x4( ret, ==, CR_SUCCESS );
+        ok( !wcsncmp( buffer, instance, tmp - instance ), "got %s\n", debugstr_w( buffer ) );
+        if (tmp) *tmp = '\\';
+    }
+
+    free( bufferW );
+    free( buffer );
+}
+
 START_TEST(cfgmgr32)
 {
     HMODULE mod = GetModuleHandleA("cfgmgr32.dll");
@@ -3389,10 +4099,14 @@ START_TEST(cfgmgr32)
     test_CM_Get_Device_Interface_Property_Keys();
     test_CM_Get_Device_Interface_PropertyW();
     test_CM_Get_Device_Interface_Property_setupapi();
+    test_CM_Get_Device_ID_List_Size();
     test_CM_Get_Device_ID_List();
+    test_CM_Get_Device_ID_List_setupapi();
     test_CM_Register_Notification();
     test_CM_Open_DevNode_Key();
     test_CM_Get_DevNode_Registry_Property();
+    test_CM_Get_DevNode_Property();
+    test_CM_Get_DevNode_Property_Keys();
     test_DevGetObjects();
     test_DevCreateObjectQuery();
     test_DevGetObjectProperties_invalid();
diff --git a/dlls/d3d11/decoder.c b/dlls/d3d11/decoder.c
index b3a198210092..cae0593f35a0 100644
--- a/dlls/d3d11/decoder.c
+++ b/dlls/d3d11/decoder.c
@@ -193,6 +193,7 @@ HRESULT d3d_video_decoder_create(struct d3d_device *device, const D3D11_VIDEO_DE
         else if (config->ConfigBitstreamRaw != 2)
         {
             FIXME("Unsupported ConfigBitstreamRaw value %u.\n", config->ConfigBitstreamRaw);
+            free(object);
             return E_NOTIMPL;
         }
     }
diff --git a/dlls/d3dcompiler_43/blob.c b/dlls/d3dcompiler_43/blob.c
index 0c29c36c70c2..eb175c88832e 100644
--- a/dlls/d3dcompiler_43/blob.c
+++ b/dlls/d3dcompiler_43/blob.c
@@ -299,7 +299,7 @@ static HRESULT d3dcompiler_get_blob_part(const void *data, SIZE_T data_size, UIN
     {
         dst_dxbc = sections[0].data;
     }
-    else if ((ret = vkd3d_shader_serialize_dxbc(section_count, sections, &dst_dxbc, NULL) < 0))
+    else if ((ret = vkd3d_shader_serialize_dxbc(section_count, sections, &dst_dxbc, NULL)) < 0)
     {
         WARN("Failed to serialise DXBC, ret %d.\n", ret);
         hr = E_FAIL;
@@ -390,7 +390,7 @@ static HRESULT d3dcompiler_strip_shader(const void *data, SIZE_T data_size, UINT
             sections[section_count++] = *src_section;
     }
 
-    if ((ret = vkd3d_shader_serialize_dxbc(section_count, sections, &dst_dxbc, NULL) < 0))
+    if ((ret = vkd3d_shader_serialize_dxbc(section_count, sections, &dst_dxbc, NULL)) < 0)
     {
         WARN("Failed to serialise DXBC, ret %d.\n", ret);
         hr = E_FAIL;
diff --git a/dlls/d3dx10_43/tests/d3dx10.c b/dlls/d3dx10_43/tests/d3dx10.c
index 3ea4499f20e9..252a64cddd23 100644
--- a/dlls/d3dx10_43/tests/d3dx10.c
+++ b/dlls/d3dx10_43/tests/d3dx10.c
@@ -25,6 +25,24 @@
 #include <stdint.h>
 #include <assert.h>
 
+static const char *debug_d3dx10_filter(uint32_t filter_flags)
+{
+    static const char *filter_types[] = { "", "D3DX10_FILTER_NONE", "D3DX10_FILTER_POINT", "D3DX10_FILTER_LINEAR",
+                                          "D3DX10_FILTER_TRIANGLE", "D3DX10_FILTER_BOX", "", "" };
+    static const char *srgb_types[] = { "", "|D3DX10_FILTER_SRGB_IN", "|D3DX10_FILTER_SRGB_OUT", "|D3DX10_FILTER_SRGB" };
+    static const char *dither_types[] = { "", "|D3DX10_FILTER_DITHER", "|D3DX10_FILTER_DITHER_DIFFUSION", ""};
+    static const char *mirror_types[] = { "", "|D3DX10_FILTER_MIRROR_U", "|D3DX10_FILTER_MIRROR_V",
+                                          "|D3DX10_FILTER_MIRROR_U|D3DX10_FILTER_MIRROR_V", "|D3DX10_FILTER_MIRROR_W",
+                                          "|D3DX10_FILTER_MIRROR_U|D3DX10_FILTER_MIRROR_W",
+                                          "|D3DX10_FILTER_MIRROR_V|D3DX10_FILTER_MIRROR_W", "|D3DX10_FILTER_MIRROR", };
+    const uint8_t mirror = ((filter_flags >> 16) & 0x7);
+    const uint8_t dither = ((filter_flags >> 19) & 0x3);
+    const uint8_t srgb = ((filter_flags >> 21) & 0x3);
+    const uint8_t filter = (filter_flags & 0x7);
+
+    return wine_dbg_sprintf("%s%s%s%s", filter_types[filter], mirror_types[mirror], dither_types[dither], srgb_types[srgb]);
+}
+
 static const D3DX10_IMAGE_LOAD_INFO d3dx10_default_load_info =
 {
     D3DX10_DEFAULT, D3DX10_DEFAULT, D3DX10_DEFAULT, D3DX10_DEFAULT, D3DX10_DEFAULT, D3DX10_DEFAULT, D3DX10_DEFAULT,
@@ -806,6 +824,25 @@ static const uint8_t dds_cube_map_4_4[] =
     0x00,0x80,0x80,0x00,0x00,0x80,0x80,0x00,0x00,0x80,0x80,0x00,0x00,0x80,0x80,0x00,
 };
 
+/* 4x4 DXT10 DDS file with a format of DXGI_FORMAT_R8G8B8A8_UNORM. */
+static const uint8_t dds_dxt10_4_4[] =
+{
+    0x44,0x44,0x53,0x20,0x7c,0x00,0x00,0x00,0x01,0x10,0x00,0x00,0x04,0x00,0x00,0x00,
+    0x04,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,
+    0x04,0x00,0x00,0x00,0x44,0x58,0x31,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+    0x1c,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x10,0x10,0x20,0x20,0x20,0x20,
+    0x30,0x30,0x30,0x30,0x40,0x40,0x40,0x40,0x50,0x50,0x50,0x50,0x60,0x60,0x60,0x60,
+    0x70,0x70,0x70,0x70,0x80,0x80,0x80,0x80,0x90,0x90,0x90,0x90,0xa0,0xa0,0xa0,0xa0,
+    0xb0,0xb0,0xb0,0xb0,0xc0,0xc0,0xc0,0xc0,0xd0,0xd0,0xd0,0xd0,0xe0,0xe0,0xe0,0xe0,
+    0xf0,0xf0,0xf0,0xf0,
+};
+
 /* 1x1 wmp image */
 static const uint8_t test_wmp[] =
 {
@@ -1826,6 +1863,24 @@ static const struct test_image_load_info
             }
         }
     },
+    /*
+     * Pass in invalid filter flags. Ignored if the dimensions and format of the
+     * destination texture match the source image.
+     */
+    {
+        dds_dxt10_4_4, sizeof(dds_dxt10_4_4),
+        {
+            D3DX10_DEFAULT, D3DX10_DEFAULT, D3DX10_DEFAULT, D3DX10_DEFAULT, 1, (D3D10_USAGE)D3DX10_DEFAULT,
+            D3DX10_DEFAULT, D3DX10_DEFAULT, D3DX10_DEFAULT, D3DX10_DEFAULT, 7, D3DX10_DEFAULT
+        },
+        S_OK, D3D10_RESOURCE_DIMENSION_TEXTURE2D,
+        {
+            .desc_2d =
+            {
+                4, 4, 1, 1, DXGI_FORMAT_R8G8B8A8_UNORM, { 1, 0 }, D3D10_USAGE_DEFAULT, D3D10_BIND_SHADER_RESOURCE, 0, 0
+            }
+        }
+    },
 };
 
 static const struct test_invalid_image_load_info
@@ -1949,6 +2004,24 @@ static BOOL is_block_compressed(DXGI_FORMAT format)
     return FALSE;
 }
 
+static BOOL is_srgb_format(DXGI_FORMAT format)
+{
+    switch (format)
+    {
+        case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB:
+        case DXGI_FORMAT_B8G8R8A8_UNORM_SRGB:
+        case DXGI_FORMAT_B8G8R8X8_UNORM_SRGB:
+        case DXGI_FORMAT_BC1_UNORM_SRGB:
+        case DXGI_FORMAT_BC2_UNORM_SRGB:
+        case DXGI_FORMAT_BC3_UNORM_SRGB:
+        case DXGI_FORMAT_BC7_UNORM_SRGB:
+            return TRUE;
+
+        default:
+            return FALSE;
+    }
+}
+
 static unsigned int get_bpp_from_format(DXGI_FORMAT format)
 {
     switch (format)
@@ -2667,15 +2740,28 @@ static inline BOOL check_readback_pixel_4bpp_rgba(const void *got, const void *e
             && compare_uint((c1 >> 24) & 0xff, (c2 >> 24) & 0xff, max_diff);
 }
 
+static inline BOOL check_readback_pixel_float4_rgba(const void *got, const void *expected, uint32_t max_diff)
+{
+    const float *a = got;
+    const float *b = expected;
+
+    return (compare_float(a[0], b[0], max_diff) && compare_float(a[1], b[1], max_diff)
+        && compare_float(a[2], b[2], max_diff) && compare_float(a[3], b[3], max_diff));
+}
+
 typedef BOOL (*check_readback_pixel_func)(const void *, const void *, uint32_t);
 static inline check_readback_pixel_func get_readback_pixel_func_for_dxgi_format(DXGI_FORMAT format)
 {
     switch (format)
     {
+        case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB:
         case DXGI_FORMAT_R8G8B8A8_UNORM:
         case DXGI_FORMAT_B8G8R8A8_UNORM:
             return check_readback_pixel_4bpp_rgba;
 
+        case DXGI_FORMAT_R32G32B32A32_FLOAT:
+            return check_readback_pixel_float4_rgba;
+
         default:
             assert(0 && "Need to add format to get_readback_pixel_func_for_dxgi_format().");
             return 0;
@@ -5601,6 +5687,279 @@ static void test_image_filters(void)
     ok(!ID3D10Device_Release(device), "Unexpected refcount.\n");
 }
 
+/*
+ * DXT2 and DXT4 are decoded without taking premultiplied alpha
+ * into account on d3dx10/d3dx11.
+ */
+static void test_dxt_formats(void)
+{
+    static const uint8_t expected_dst[] =
+    {
+        0x21,0x20,0x21,0x88,0x31,0x31,0x31,0x88,0x21,0x20,0x21,0x88,0x31,0x31,0x31,0x88,
+        0x21,0x20,0x21,0x88,0x31,0x31,0x31,0x88,0x21,0x20,0x21,0x88,0x31,0x31,0x31,0x88,
+        0x21,0x20,0x21,0x88,0x31,0x31,0x31,0x88,0x21,0x20,0x21,0x88,0x31,0x31,0x31,0x88,
+        0x21,0x20,0x21,0x88,0x31,0x31,0x31,0x88,0x21,0x20,0x21,0x88,0x31,0x31,0x31,0x88,
+    };
+    static const uint8_t test_dxt2_dxt3_data[] =
+    {
+        0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x86,0x31,0x04,0x21,0x11,0x11,0x11,0x11,
+    };
+    static const uint8_t test_dxt4_dxt5_data[] =
+    {
+        0x88,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x86,0x31,0x04,0x21,0x11,0x11,0x11,0x11,
+    };
+    static const struct
+    {
+        DWORD format;
+        const void *data;
+        unsigned int size;
+    } tests[] =
+    {
+        { MAKEFOURCC('D','X','T','2'), test_dxt2_dxt3_data, sizeof(test_dxt2_dxt3_data) },
+        { MAKEFOURCC('D','X','T','3'), test_dxt2_dxt3_data, sizeof(test_dxt2_dxt3_data) },
+        { MAKEFOURCC('D','X','T','4'), test_dxt4_dxt5_data, sizeof(test_dxt4_dxt5_data) },
+        { MAKEFOURCC('D','X','T','5'), test_dxt4_dxt5_data, sizeof(test_dxt4_dxt5_data) },
+    };
+    struct
+    {
+        DWORD magic;
+        struct dds_header header;
+        BYTE data[256];
+    } dds;
+    D3DX10_IMAGE_LOAD_INFO load_info;
+    struct resource_readback rb;
+    ID3D10Resource *resource;
+    ID3D10Device *device;
+    unsigned int i;
+    HRESULT hr;
+
+    device = create_device();
+    if (!device)
+    {
+        skip("Failed to create device, skipping tests.\n");
+        return;
+    }
+
+    CoInitialize(NULL);
+
+    dds.magic = MAKEFOURCC('D','D','S',' ');
+    fill_dds_header(&dds.header);
+    dds.header.pixel_format.flags = DDS_PF_FOURCC;
+    dds.header.pixel_format.bpp = 0;
+    dds.header.pixel_format.rmask = 0;
+    dds.header.pixel_format.gmask = 0;
+    dds.header.pixel_format.bmask = 0;
+    dds.header.pixel_format.amask = 0;
+
+    memset(dds.data, 0, sizeof(dds.data));
+    load_info = d3dx10_default_load_info;
+    load_info.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
+    load_info.Filter = load_info.MipFilter = D3DX10_FILTER_NONE;
+
+    for (i = 0; i < ARRAY_SIZE(tests); ++i)
+    {
+        winetest_push_context("Test %u (%s)", i, debugstr_fourcc(tests[i].format));
+        memcpy(dds.data, tests[i].data, tests[i].size);
+        dds.header.pixel_format.fourcc = tests[i].format;
+
+        hr = D3DX10CreateTextureFromMemory(device, &dds, sizeof(dds), &load_info, NULL, &resource, NULL);
+        ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+
+        get_resource_readback(resource, 0, &rb);
+        check_test_readback(&rb, expected_dst, 4, 4, 1, DXGI_FORMAT_R8G8B8A8_UNORM, 0);
+        release_resource_readback(&rb);
+        ID3D10Resource_Release(resource);
+        winetest_pop_context();
+    }
+
+    CoUninitialize();
+    ok(!ID3D10Device_Release(device), "Unexpected refcount.\n");
+}
+
+static void test_srgb_filter_flags(void)
+{
+    static const float test_float4_srgb_in[] =
+    {
+        0.09f, 0.1f,  0.2f, 1.0f,
+        0.30f, 0.4f,  0.5f, 2.0f,
+        0.60f, 0.7f,  0.8f, 3.0f,
+        0.90f, 1.5f, -1.0f, 4.0f,
+    };
+    static const float test_float4_srgb_in_expected[] =
+    {
+        5.00732847e-003,  6.27983455e-003, 2.89932229e-002, 1.00000000e+000,
+        7.07391128e-002,  1.33206353e-001, 2.17635408e-001, 2.00000000e+000,
+        3.25037479e-001,  4.56263810e-001, 6.12064898e-001, 3.00000000e+000,
+        7.93109715e-001, -2.24207754e-044, 1.00000000e+000, 4.00000000e+000,
+    };
+    static const float test_float4_srgb_in_expected_32[] =
+    {
+        5.00732893e-003, 6.27983361e-003, 2.89932191e-002, 1.00000000e+000,
+        7.07391202e-002, 1.33206338e-001, 2.17635408e-001, 2.00000000e+000,
+        3.25037509e-001, 4.56263840e-001, 6.12064838e-001, 3.00000000e+000,
+        /*
+         * On 32-bit d3dx10+, an input value of 1.5f being converted from SRGB
+         * to linear produces quite a few different values depending on the
+         * SDK version. Presumably it's reading beyond the end of a LUT,
+         * values above ~106.0f will cause a crash on all versions and
+         * bitnesses.
+         */
+#if D3DX10_SDK_VERSION < 35
+        7.93109715e-001, 3.48807693e-001, 1.00000000e+000, 4.00000000e+000
+#elif D3DX10_SDK_VERSION < 37
+        7.93109715e-001, 3.56686294e-001, 1.00000000e+000, 4.00000000e+000
+#elif D3DX10_SDK_VERSION < 40
+        7.93109715e-001, 3.64580810e-001, 1.00000000e+000, 4.00000000e+000
+#else
+        7.93109715e-001, 3.33099246e-001, 1.00000000e+000, 4.00000000e+000
+#endif
+    };
+    static const float test_float4_srgb_out[] =
+    {
+        0.001f, 0.1f, 0.2f, 1.0f,
+        0.300f, 0.4f, 0.5f, 2.0f,
+        0.600f, 0.7f, 0.8f, 3.0f,
+        0.900f, 1.5f, 1.0f, 4.0f,
+    };
+    /* 32-bit can handle a -1.0f input, 64-bit will crash. */
+    static const float test_float4_srgb_out_32[] =
+    {
+        0.001f, 0.1f,  0.2f, 1.0f,
+        0.300f, 0.4f,  0.5f, 2.0f,
+        0.600f, 0.7f,  0.8f, 3.0f,
+        0.900f, 1.5f, -1.0f, 4.0f,
+    };
+    static const float test_float4_srgb_out_expected[] =
+    {
+        4.32867892e-002, 3.51118684e-001, 4.81157422e-001, 1.00000000e+000,
+        5.78532457e-001, 6.59353793e-001, 7.29740620e-001, 2.00000000e+000,
+        7.92793036e-001, 8.50335538e-001, 9.03545380e-001, 3.00000000e+000,
+        9.53237593e-001, 1.86132386e-001, 1.00000000e+000, 4.00000000e+000,
+    };
+    static const float test_float4_srgb_out_expected_32[] =
+    {
+        4.32868190e-002, 3.51118833e-001, 4.81157631e-001, 1.00000000e+000,
+        5.78532815e-001, 6.59354091e-001, 7.29740679e-001, 2.00000000e+000,
+        7.92793512e-001, 8.50336075e-001, 9.03545797e-001, 3.00000000e+000,
+        9.53237832e-001, 1.86132386e-001, -INFINITY,       4.00000000e+000,
+    };
+    static const uint32_t test_a8r8g8b8[] = { 0x00102030, 0x40506070, 0x8090a0b0, 0xc0d0e0ff };
+    static const uint32_t test_a8r8g8b8_srgb_in_expected[] = { 0x00010306, 0x40141e2a, 0x80495b71, 0xc0a3c0ff };
+    static const uint32_t test_a8r8g8b8_srgb_out_expected[] = { 0x00486377, 0x4097a4af, 0x80c5ced7, 0xc0e8f0ff };
+    static const struct
+    {
+        unsigned int width;
+        unsigned int height;
+        const void *src_data;
+        const void *src_data_32;
+        DXGI_FORMAT src_format;
+        DWORD flags;
+
+        const void *expected_dst_data;
+        const void *expected_dst_data_32;
+        DXGI_FORMAT dst_format;
+        BOOL todo;
+    } tests[] =
+    {
+        /* Both IN and OUT flags, nothing changes. */
+        {
+            2, 2, test_a8r8g8b8, NULL, DXGI_FORMAT_R8G8B8A8_UNORM, D3DX10_FILTER_NONE | D3DX10_FILTER_SRGB,
+            test_a8r8g8b8, NULL, DXGI_FORMAT_R8G8B8A8_UNORM
+        },
+        {
+            2, 2, test_a8r8g8b8, NULL, DXGI_FORMAT_R8G8B8A8_UNORM, D3DX10_FILTER_NONE | D3DX10_FILTER_SRGB_IN,
+            test_a8r8g8b8_srgb_in_expected, NULL, DXGI_FORMAT_R8G8B8A8_UNORM
+        },
+        {
+            2, 2, test_a8r8g8b8, NULL, DXGI_FORMAT_R8G8B8A8_UNORM_SRGB, D3DX10_FILTER_NONE,
+            test_a8r8g8b8_srgb_in_expected, NULL, DXGI_FORMAT_R8G8B8A8_UNORM, .todo = TRUE
+        },
+        {
+            2, 2, test_a8r8g8b8, NULL, DXGI_FORMAT_R8G8B8A8_UNORM, D3DX10_FILTER_NONE | D3DX10_FILTER_SRGB_OUT,
+            test_a8r8g8b8_srgb_out_expected, NULL, DXGI_FORMAT_R8G8B8A8_UNORM
+        },
+        {
+            2, 2, test_a8r8g8b8, NULL, DXGI_FORMAT_R8G8B8A8_UNORM, D3DX10_FILTER_NONE,
+            test_a8r8g8b8_srgb_out_expected, NULL, DXGI_FORMAT_R8G8B8A8_UNORM_SRGB, .todo = TRUE
+        },
+        /* 5. */
+        {
+            2, 2, test_float4_srgb_in, NULL, DXGI_FORMAT_R32G32B32A32_FLOAT, D3DX10_FILTER_NONE | D3DX10_FILTER_SRGB_IN,
+            test_float4_srgb_in_expected, test_float4_srgb_in_expected_32, DXGI_FORMAT_R32G32B32A32_FLOAT, .todo = TRUE
+        },
+        {
+            2, 2, test_float4_srgb_out, test_float4_srgb_out_32, DXGI_FORMAT_R32G32B32A32_FLOAT,
+            D3DX10_FILTER_NONE | D3DX10_FILTER_SRGB_OUT, test_float4_srgb_out_expected, test_float4_srgb_out_expected_32,
+            DXGI_FORMAT_R32G32B32A32_FLOAT, .todo = TRUE
+        },
+    };
+    struct
+    {
+        DWORD magic;
+        struct dds_header header;
+        struct dds_header_dxt10 dxt10;
+        BYTE data[8192];
+    } dds;
+    const BOOL is_32 = (sizeof(void *) == 4);
+    D3DX10_IMAGE_LOAD_INFO load_info;
+    struct resource_readback rb;
+    ID3D10Resource *resource;
+    ID3D10Device *device;
+    unsigned int i;
+    HRESULT hr;
+
+    device = create_device();
+    if (!device)
+    {
+        skip("Failed to create device, skipping tests.\n");
+        return;
+    }
+
+    CoInitialize(NULL);
+
+    dds.magic = MAKEFOURCC('D','D','S',' ');
+    for (i = 0; i < ARRAY_SIZE(tests); ++i)
+    {
+        const unsigned int fmt_bpp = (get_bpp_from_format(tests[i].src_format) + 7) / 8;
+        unsigned int src_pitch = fmt_bpp * tests[i].width;
+        const uint8_t *src_data, *expected_dst;
+
+        winetest_push_context("Test %u (%s)", i, debug_d3dx10_filter(tests[i].flags));
+
+        load_info = d3dx10_default_load_info;
+        load_info.Height = tests[i].height;
+        load_info.Width = tests[i].width;
+        load_info.Filter = tests[i].flags;
+        load_info.Format = tests[i].dst_format;
+        load_info.MipLevels = 1;
+
+        expected_dst = (is_32 && tests[i].expected_dst_data_32) ? tests[i].expected_dst_data_32 : tests[i].expected_dst_data;
+        src_data = (is_32 && tests[i].src_data_32) ? tests[i].src_data_32 : tests[i].src_data;
+
+        /* Height + 1 to make sure filter flags aren't ignored. */
+        set_dxt10_dds_header(&dds.header, 0, tests[i].width, tests[i].height + 1, 0, 1, src_pitch, 0, 0);
+        set_dds_header_dxt10(&dds.dxt10, tests[i].src_format, D3D10_RESOURCE_DIMENSION_TEXTURE2D, 0, 1, 0);
+        memcpy(dds.data, src_data, src_pitch * tests[i].height);
+
+        hr = D3DX10CreateTextureFromMemory(device, &dds, sizeof(dds), &load_info, NULL, &resource, NULL);
+        todo_wine_if(is_srgb_format(tests[i].src_format) || is_srgb_format(tests[i].dst_format))
+                ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+        if (SUCCEEDED(hr))
+        {
+            get_resource_readback(resource, 0, &rb);
+            todo_wine_if(tests[i].todo) check_test_readback(&rb, expected_dst, tests[i].width, tests[i].height, 1,
+                    tests[i].dst_format, 0);
+            release_resource_readback(&rb);
+            ID3D10Resource_Release(resource);
+        }
+
+        winetest_pop_context();
+    }
+
+    CoUninitialize();
+    ok(!ID3D10Device_Release(device), "Unexpected refcount.\n");
+}
+
 #define check_rect(rect, left, top, right, bottom) _check_rect(__LINE__, rect, left, top, right, bottom)
 static inline void _check_rect(unsigned int line, const RECT *rect, int left, int top, int right, int bottom)
 {
@@ -7090,4 +7449,6 @@ START_TEST(d3dx10)
     test_legacy_dds_header_image_info();
     test_dxt10_dds_header_image_info();
     test_image_filters();
+    test_dxt_formats();
+    test_srgb_filter_flags();
 }
diff --git a/dlls/d3dx10_43/texture.c b/dlls/d3dx10_43/texture.c
index aa173e3f0046..bb312ae42ff3 100644
--- a/dlls/d3dx10_43/texture.c
+++ b/dlls/d3dx10_43/texture.c
@@ -649,14 +649,6 @@ HRESULT load_texture_data(const void *data, SIZE_T size, D3DX10_IMAGE_LOAD_INFO
         return E_FAIL;
 
     *resource_data = NULL;
-    if (!load_info->Filter || load_info->Filter == D3DX10_DEFAULT)
-        load_info->Filter = D3DX10_FILTER_LINEAR;
-    if (FAILED(hr = d3dx_validate_filter(load_info->Filter)))
-    {
-        WARN("Invalid filter argument %#x.\n", load_info->Filter);
-        return hr;
-    }
-
     hr = d3dx_image_init(data, size, &image, 0, D3DX_IMAGE_SUPPORT_DXT10);
     if (FAILED(hr))
         return E_FAIL;
@@ -710,6 +702,23 @@ HRESULT load_texture_data(const void *data, SIZE_T size, D3DX10_IMAGE_LOAD_INFO
         load_info->MipLevels = (load_info->MipLevels == D3DX10_FROM_FILE) ? img_info.MipLevels : max_mip_level_count;
     load_info->MipLevels = min(max_mip_level_count, load_info->MipLevels);
 
+    if ((load_info->Width != image.size.width) || (load_info->Height != image.size.height)
+            || (load_info->Depth != image.size.depth) || (load_info->MipLevels != image.mip_levels)
+            || (fmt_desc->format != image.format))
+    {
+        if (!load_info->Filter || load_info->Filter == D3DX10_DEFAULT)
+            load_info->Filter = D3DX10_FILTER_LINEAR;
+        if (FAILED(hr = d3dx_validate_filter(load_info->Filter)))
+        {
+            WARN("Invalid filter argument %#x.\n", load_info->Filter);
+            goto end;
+        }
+    }
+    else
+    {
+        load_info->Filter = D3DX10_FILTER_NONE;
+    }
+
     hr = d3dx_create_subresource_data_for_texture(load_info->Width, load_info->Height, load_info->Depth,
             load_info->MipLevels, img_info.ArraySize, fmt_desc, &sub_rsrcs);
     if (FAILED(hr))
diff --git a/dlls/d3dx11_42/tests/Makefile.in b/dlls/d3dx11_42/tests/Makefile.in
index 7eae4f26e0d0..bb2d006916a8 100644
--- a/dlls/d3dx11_42/tests/Makefile.in
+++ b/dlls/d3dx11_42/tests/Makefile.in
@@ -1,3 +1,4 @@
+EXTRADEFS = -DD3DX11_SDK_VERSION=42
 TESTDLL = d3dx11_42.dll
 IMPORTS = d3dx11_42 ole32
 PARENTSRC = ../../d3dx11_43/tests
diff --git a/dlls/d3dx11_43/tests/Makefile.in b/dlls/d3dx11_43/tests/Makefile.in
index fc9007fc878e..6c54e4d8ccd3 100644
--- a/dlls/d3dx11_43/tests/Makefile.in
+++ b/dlls/d3dx11_43/tests/Makefile.in
@@ -1,3 +1,4 @@
+EXTRADEFS = -DD3DX11_SDK_VERSION=43
 TESTDLL = d3dx11_43.dll
 IMPORTS = d3dx11 ole32
 
diff --git a/dlls/d3dx11_43/tests/d3dx11.c b/dlls/d3dx11_43/tests/d3dx11.c
index 4801506b039e..a56f415dced2 100644
--- a/dlls/d3dx11_43/tests/d3dx11.c
+++ b/dlls/d3dx11_43/tests/d3dx11.c
@@ -24,6 +24,25 @@
 #include "wine/test.h"
 #include <stdint.h>
 #include <assert.h>
+#include <math.h>
+
+static const char *debug_d3dx11_filter(uint32_t filter_flags)
+{
+    static const char *filter_types[] = { "", "D3DX11_FILTER_NONE", "D3DX11_FILTER_POINT", "D3DX11_FILTER_LINEAR",
+                                          "D3DX11_FILTER_TRIANGLE", "D3DX11_FILTER_BOX", "", "" };
+    static const char *srgb_types[] = { "", "|D3DX11_FILTER_SRGB_IN", "|D3DX11_FILTER_SRGB_OUT", "|D3DX11_FILTER_SRGB" };
+    static const char *dither_types[] = { "", "|D3DX11_FILTER_DITHER", "|D3DX11_FILTER_DITHER_DIFFUSION", ""};
+    static const char *mirror_types[] = { "", "|D3DX11_FILTER_MIRROR_U", "|D3DX11_FILTER_MIRROR_V",
+                                          "|D3DX11_FILTER_MIRROR_U|D3DX11_FILTER_MIRROR_V", "|D3DX11_FILTER_MIRROR_W",
+                                          "|D3DX11_FILTER_MIRROR_U|D3DX11_FILTER_MIRROR_W",
+                                          "|D3DX11_FILTER_MIRROR_V|D3DX11_FILTER_MIRROR_W", "|D3DX11_FILTER_MIRROR", };
+    const uint8_t mirror = ((filter_flags >> 16) & 0x7);
+    const uint8_t dither = ((filter_flags >> 19) & 0x3);
+    const uint8_t srgb = ((filter_flags >> 21) & 0x3);
+    const uint8_t filter = (filter_flags & 0x7);
+
+    return wine_dbg_sprintf("%s%s%s%s", filter_types[filter], mirror_types[mirror], dither_types[dither], srgb_types[srgb]);
+}
 
 static const D3DX11_IMAGE_LOAD_INFO d3dx11_default_load_info =
 {
@@ -806,6 +825,25 @@ static const uint8_t dds_cube_map_4_4[] =
     0x00,0x80,0x80,0x00,0x00,0x80,0x80,0x00,0x00,0x80,0x80,0x00,0x00,0x80,0x80,0x00,
 };
 
+/* 4x4 DXT10 DDS file with a format of DXGI_FORMAT_R8G8B8A8_UNORM. */
+static const uint8_t dds_dxt10_4_4[] =
+{
+    0x44,0x44,0x53,0x20,0x7c,0x00,0x00,0x00,0x01,0x10,0x00,0x00,0x04,0x00,0x00,0x00,
+    0x04,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,
+    0x04,0x00,0x00,0x00,0x44,0x58,0x31,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+    0x1c,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x10,0x10,0x20,0x20,0x20,0x20,
+    0x30,0x30,0x30,0x30,0x40,0x40,0x40,0x40,0x50,0x50,0x50,0x50,0x60,0x60,0x60,0x60,
+    0x70,0x70,0x70,0x70,0x80,0x80,0x80,0x80,0x90,0x90,0x90,0x90,0xa0,0xa0,0xa0,0xa0,
+    0xb0,0xb0,0xb0,0xb0,0xc0,0xc0,0xc0,0xc0,0xd0,0xd0,0xd0,0xd0,0xe0,0xe0,0xe0,0xe0,
+    0xf0,0xf0,0xf0,0xf0,
+};
+
 /* 1x1 wmp image */
 static const uint8_t test_wmp[] =
 {
@@ -1798,6 +1836,24 @@ static const struct test_image_load_info
             }
         }
     },
+    /*
+     * Pass in invalid filter flags. Ignored if the dimensions and format of the
+     * destination texture match the source image.
+     */
+    {
+        dds_dxt10_4_4, sizeof(dds_dxt10_4_4),
+        {
+            D3DX11_DEFAULT, D3DX11_DEFAULT, D3DX11_DEFAULT, D3DX11_DEFAULT, 1, (D3D11_USAGE)D3DX11_DEFAULT,
+            D3DX11_DEFAULT, D3DX11_DEFAULT, D3DX11_DEFAULT, D3DX11_DEFAULT, 7, D3DX11_DEFAULT
+        },
+        S_OK, D3D11_RESOURCE_DIMENSION_TEXTURE2D,
+        {
+            .desc_2d =
+            {
+                4, 4, 1, 1, DXGI_FORMAT_R8G8B8A8_UNORM, { 1, 0 }, D3D11_USAGE_DEFAULT, D3D11_BIND_SHADER_RESOURCE, 0, 0
+            }
+        }
+    },
 };
 
 static const struct test_invalid_image_load_info
@@ -1920,6 +1976,24 @@ static BOOL is_block_compressed(DXGI_FORMAT format)
     return FALSE;
 }
 
+static BOOL is_srgb_format(DXGI_FORMAT format)
+{
+    switch (format)
+    {
+        case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB:
+        case DXGI_FORMAT_B8G8R8A8_UNORM_SRGB:
+        case DXGI_FORMAT_B8G8R8X8_UNORM_SRGB:
+        case DXGI_FORMAT_BC1_UNORM_SRGB:
+        case DXGI_FORMAT_BC2_UNORM_SRGB:
+        case DXGI_FORMAT_BC3_UNORM_SRGB:
+        case DXGI_FORMAT_BC7_UNORM_SRGB:
+            return TRUE;
+
+        default:
+            return FALSE;
+    }
+}
+
 static unsigned int get_bpp_from_format(DXGI_FORMAT format)
 {
     switch (format)
@@ -2150,6 +2224,19 @@ static BOOL compare_uint(unsigned int x, unsigned int y, unsigned int max_diff)
     return diff <= max_diff;
 }
 
+static BOOL compare_float(float f, float g, unsigned int ulps)
+{
+    int x = *(int *)&f;
+    int y = *(int *)&g;
+
+    if (x < 0)
+        x = INT_MIN - x;
+    if (y < 0)
+        y = INT_MIN - y;
+
+    return compare_uint(x, y, ulps);
+}
+
 static char *get_str_a(const WCHAR *wstr)
 {
     static char buffer[MAX_PATH];
@@ -2612,15 +2699,28 @@ static inline BOOL check_readback_pixel_4bpp_rgba(const void *got, const void *e
             && compare_uint((c1 >> 24) & 0xff, (c2 >> 24) & 0xff, max_diff);
 }
 
+static inline BOOL check_readback_pixel_float4_rgba(const void *got, const void *expected, uint32_t max_diff)
+{
+    const float *a = got;
+    const float *b = expected;
+
+    return (compare_float(a[0], b[0], max_diff) && compare_float(a[1], b[1], max_diff)
+        && compare_float(a[2], b[2], max_diff) && compare_float(a[3], b[3], max_diff));
+}
+
 typedef BOOL (*check_readback_pixel_func)(const void *, const void *, uint32_t);
 static inline check_readback_pixel_func get_readback_pixel_func_for_dxgi_format(DXGI_FORMAT format)
 {
     switch (format)
     {
+        case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB:
         case DXGI_FORMAT_R8G8B8A8_UNORM:
         case DXGI_FORMAT_B8G8R8A8_UNORM:
             return check_readback_pixel_4bpp_rgba;
 
+        case DXGI_FORMAT_R32G32B32A32_FLOAT:
+            return check_readback_pixel_float4_rgba;
+
         default:
             assert(0 && "Need to add format to get_readback_pixel_func_for_dxgi_format().");
             return 0;
@@ -4419,6 +4519,275 @@ static void test_image_filters(void)
     ok(!ID3D11Device_Release(device), "Unexpected refcount.\n");
 }
 
+/*
+ * DXT2 and DXT4 are decoded without taking premultiplied alpha
+ * into account on d3dx10/d3dx11.
+ */
+static void test_dxt_formats(void)
+{
+    static const uint8_t expected_dst[] =
+    {
+        0x21,0x20,0x21,0x88,0x31,0x31,0x31,0x88,0x21,0x20,0x21,0x88,0x31,0x31,0x31,0x88,
+        0x21,0x20,0x21,0x88,0x31,0x31,0x31,0x88,0x21,0x20,0x21,0x88,0x31,0x31,0x31,0x88,
+        0x21,0x20,0x21,0x88,0x31,0x31,0x31,0x88,0x21,0x20,0x21,0x88,0x31,0x31,0x31,0x88,
+        0x21,0x20,0x21,0x88,0x31,0x31,0x31,0x88,0x21,0x20,0x21,0x88,0x31,0x31,0x31,0x88,
+    };
+    static const uint8_t test_dxt2_dxt3_data[] =
+    {
+        0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x86,0x31,0x04,0x21,0x11,0x11,0x11,0x11,
+    };
+    static const uint8_t test_dxt4_dxt5_data[] =
+    {
+        0x88,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x86,0x31,0x04,0x21,0x11,0x11,0x11,0x11,
+    };
+    static const struct
+    {
+        DWORD format;
+        const void *data;
+        unsigned int size;
+    } tests[] =
+    {
+        { MAKEFOURCC('D','X','T','2'), test_dxt2_dxt3_data, sizeof(test_dxt2_dxt3_data) },
+        { MAKEFOURCC('D','X','T','3'), test_dxt2_dxt3_data, sizeof(test_dxt2_dxt3_data) },
+        { MAKEFOURCC('D','X','T','4'), test_dxt4_dxt5_data, sizeof(test_dxt4_dxt5_data) },
+        { MAKEFOURCC('D','X','T','5'), test_dxt4_dxt5_data, sizeof(test_dxt4_dxt5_data) },
+    };
+    struct
+    {
+        DWORD magic;
+        struct dds_header header;
+        BYTE data[256];
+    } dds;
+    D3DX11_IMAGE_LOAD_INFO load_info;
+    struct resource_readback rb;
+    ID3D11Resource *resource;
+    ID3D11Device *device;
+    unsigned int i;
+    HRESULT hr;
+
+    device = create_device();
+    if (!device)
+    {
+        skip("Failed to create device, skipping tests.\n");
+        return;
+    }
+
+    CoInitialize(NULL);
+
+    dds.magic = MAKEFOURCC('D','D','S',' ');
+    fill_dds_header(&dds.header);
+    dds.header.pixel_format.flags = DDS_PF_FOURCC;
+    dds.header.pixel_format.bpp = 0;
+    dds.header.pixel_format.rmask = 0;
+    dds.header.pixel_format.gmask = 0;
+    dds.header.pixel_format.bmask = 0;
+    dds.header.pixel_format.amask = 0;
+
+    memset(dds.data, 0, sizeof(dds.data));
+    load_info = d3dx11_default_load_info;
+    load_info.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
+    load_info.Filter = load_info.MipFilter = D3DX11_FILTER_NONE;
+
+    for (i = 0; i < ARRAY_SIZE(tests); ++i)
+    {
+        winetest_push_context("Test %u (%s)", i, debugstr_fourcc(tests[i].format));
+        memcpy(dds.data, tests[i].data, tests[i].size);
+        dds.header.pixel_format.fourcc = tests[i].format;
+
+        hr = D3DX11CreateTextureFromMemory(device, &dds, sizeof(dds), &load_info, NULL, &resource, NULL);
+        ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+
+        get_resource_readback(resource, 0, &rb);
+        check_test_readback(&rb, expected_dst, 4, 4, 1, DXGI_FORMAT_R8G8B8A8_UNORM, 0);
+        release_resource_readback(&rb);
+        ID3D11Resource_Release(resource);
+        winetest_pop_context();
+    }
+
+    CoUninitialize();
+    ok(!ID3D11Device_Release(device), "Unexpected refcount.\n");
+}
+
+static void test_srgb_filter_flags(void)
+{
+    static const float test_float4_srgb_in[] =
+    {
+        0.09f, 0.1f,  0.2f, 1.0f,
+        0.30f, 0.4f,  0.5f, 2.0f,
+        0.60f, 0.7f,  0.8f, 3.0f,
+        0.90f, 1.5f, -1.0f, 4.0f,
+    };
+    static const float test_float4_srgb_in_expected[] =
+    {
+        5.00732847e-003,  6.27983455e-003, 2.89932229e-002, 1.00000000e+000,
+        7.07391128e-002,  1.33206353e-001, 2.17635408e-001, 2.00000000e+000,
+        3.25037479e-001,  4.56263810e-001, 6.12064898e-001, 3.00000000e+000,
+        7.93109715e-001,  0.00000000e-000, 1.00000000e+000, 4.00000000e+000,
+    };
+    static const float test_float4_srgb_in_expected_32[] =
+    {
+        5.00732893e-003, 6.27983361e-003, 2.89932191e-002, 1.00000000e+000,
+        7.07391202e-002, 1.33206338e-001, 2.17635408e-001, 2.00000000e+000,
+        3.25037509e-001, 4.56263840e-001, 6.12064838e-001, 3.00000000e+000,
+        /*
+         * On 32-bit d3dx10+, an input value of 1.5f being converted from SRGB
+         * to linear produces quite a few different values depending on the
+         * SDK version. Presumably it's reading beyond the end of a LUT,
+         * values above ~106.0f will cause a crash on all versions and
+         * bitnesses.
+         */
+#if D3DX11_SDK_VERSION == 42
+        7.93109715e-001, 6.54184470e+027, 1.00000000e+000, 4.00000000e+000
+#else
+        7.93109715e-001, 1.12405043e+032, 1.00000000e+000, 4.00000000e+000
+#endif
+    };
+    static const float test_float4_srgb_out[] =
+    {
+        0.001f, 0.1f, 0.2f, 1.0f,
+        0.300f, 0.4f, 0.5f, 2.0f,
+        0.600f, 0.7f, 0.8f, 3.0f,
+        0.900f, 1.5f, 1.0f, 4.0f,
+    };
+    /* 32-bit can handle a -1.0f input, 64-bit will crash. */
+    static const float test_float4_srgb_out_32[] =
+    {
+        0.001f, 0.1f,  0.2f, 1.0f,
+        0.300f, 0.4f,  0.5f, 2.0f,
+        0.600f, 0.7f,  0.8f, 3.0f,
+        0.900f, 1.5f, -1.0f, 4.0f,
+    };
+    static const float test_float4_srgb_out_expected[] =
+    {
+        4.32867892e-002, 3.51118684e-001, 4.81157422e-001, 1.00000000e+000,
+        5.78532457e-001, 6.59353793e-001, 7.29740620e-001, 2.00000000e+000,
+        7.92793036e-001, 8.50335538e-001, 9.03545380e-001, 3.00000000e+000,
+        9.53237593e-001, 1.86132386e-001, 1.00000000e+000, 4.00000000e+000,
+    };
+    static const float test_float4_srgb_out_expected_32[] =
+    {
+        4.32868190e-002, 3.51118833e-001, 4.81157631e-001, 1.00000000e+000,
+        5.78532815e-001, 6.59354091e-001, 7.29740679e-001, 2.00000000e+000,
+        7.92793512e-001, 8.50336075e-001, 9.03545797e-001, 3.00000000e+000,
+        9.53237832e-001, 1.86132386e-001, -INFINITY,       4.00000000e+000,
+    };
+    static const uint32_t test_a8r8g8b8[] = { 0x00102030, 0x40506070, 0x8090a0b0, 0xc0d0e0ff };
+    static const uint32_t test_a8r8g8b8_srgb_in_expected[] = { 0x00010306, 0x40141e2a, 0x80495b71, 0xc0a3c0ff };
+    static const uint32_t test_a8r8g8b8_srgb_out_expected[] = { 0x00486377, 0x4097a4af, 0x80c5ced7, 0xc0e8f0ff };
+    static const struct
+    {
+        unsigned int width;
+        unsigned int height;
+        const void *src_data;
+        const void *src_data_32;
+        DXGI_FORMAT src_format;
+        DWORD flags;
+
+        const void *expected_dst_data;
+        const void *expected_dst_data_32;
+        DXGI_FORMAT dst_format;
+        BOOL todo;
+    } tests[] =
+    {
+        /* Both IN and OUT flags, nothing changes. */
+        {
+            2, 2, test_a8r8g8b8, NULL, DXGI_FORMAT_R8G8B8A8_UNORM, D3DX11_FILTER_NONE | D3DX11_FILTER_SRGB,
+            test_a8r8g8b8, NULL, DXGI_FORMAT_R8G8B8A8_UNORM
+        },
+        {
+            2, 2, test_a8r8g8b8, NULL, DXGI_FORMAT_R8G8B8A8_UNORM, D3DX11_FILTER_NONE | D3DX11_FILTER_SRGB_IN,
+            test_a8r8g8b8_srgb_in_expected, NULL, DXGI_FORMAT_R8G8B8A8_UNORM
+        },
+        {
+            2, 2, test_a8r8g8b8, NULL, DXGI_FORMAT_R8G8B8A8_UNORM_SRGB, D3DX11_FILTER_NONE,
+            test_a8r8g8b8_srgb_in_expected, NULL, DXGI_FORMAT_R8G8B8A8_UNORM, .todo = TRUE
+        },
+        {
+            2, 2, test_a8r8g8b8, NULL, DXGI_FORMAT_R8G8B8A8_UNORM, D3DX11_FILTER_NONE | D3DX11_FILTER_SRGB_OUT,
+            test_a8r8g8b8_srgb_out_expected, NULL, DXGI_FORMAT_R8G8B8A8_UNORM
+        },
+        {
+            2, 2, test_a8r8g8b8, NULL, DXGI_FORMAT_R8G8B8A8_UNORM, D3DX11_FILTER_NONE,
+            test_a8r8g8b8_srgb_out_expected, NULL, DXGI_FORMAT_R8G8B8A8_UNORM_SRGB, .todo = TRUE
+        },
+        /* 5. */
+        {
+            2, 2, test_float4_srgb_in, NULL, DXGI_FORMAT_R32G32B32A32_FLOAT, D3DX11_FILTER_NONE | D3DX11_FILTER_SRGB_IN,
+            test_float4_srgb_in_expected, test_float4_srgb_in_expected_32, DXGI_FORMAT_R32G32B32A32_FLOAT, .todo = TRUE
+        },
+        {
+            2, 2, test_float4_srgb_out, test_float4_srgb_out_32, DXGI_FORMAT_R32G32B32A32_FLOAT,
+            D3DX11_FILTER_NONE | D3DX11_FILTER_SRGB_OUT, test_float4_srgb_out_expected, test_float4_srgb_out_expected_32,
+            DXGI_FORMAT_R32G32B32A32_FLOAT, .todo = TRUE
+        },
+    };
+    struct
+    {
+        DWORD magic;
+        struct dds_header header;
+        struct dds_header_dxt10 dxt10;
+        BYTE data[8192];
+    } dds;
+    const BOOL is_32 = (sizeof(void *) == 4);
+    D3DX11_IMAGE_LOAD_INFO load_info;
+    struct resource_readback rb;
+    ID3D11Resource *resource;
+    ID3D11Device *device;
+    unsigned int i;
+    HRESULT hr;
+
+    device = create_device();
+    if (!device)
+    {
+        skip("Failed to create device, skipping tests.\n");
+        return;
+    }
+
+    CoInitialize(NULL);
+
+    dds.magic = MAKEFOURCC('D','D','S',' ');
+    for (i = 0; i < ARRAY_SIZE(tests); ++i)
+    {
+        const unsigned int fmt_bpp = (get_bpp_from_format(tests[i].src_format) + 7) / 8;
+        unsigned int src_pitch = fmt_bpp * tests[i].width;
+        const uint8_t *src_data, *expected_dst;
+
+        winetest_push_context("Test %u (%s)", i, debug_d3dx11_filter(tests[i].flags));
+
+        load_info = d3dx11_default_load_info;
+        load_info.Height = tests[i].height;
+        load_info.Width = tests[i].width;
+        load_info.Filter = tests[i].flags;
+        load_info.Format = tests[i].dst_format;
+        load_info.MipLevels = 1;
+
+        expected_dst = (is_32 && tests[i].expected_dst_data_32) ? tests[i].expected_dst_data_32 : tests[i].expected_dst_data;
+        src_data = (is_32 && tests[i].src_data_32) ? tests[i].src_data_32 : tests[i].src_data;
+
+        /* Height + 1 to make sure filter flags aren't ignored. */
+        set_dxt10_dds_header(&dds.header, 0, tests[i].width, tests[i].height + 1, 0, 1, src_pitch, 0, 0);
+        set_dds_header_dxt10(&dds.dxt10, tests[i].src_format, D3D10_RESOURCE_DIMENSION_TEXTURE2D, 0, 1, 0);
+        memcpy(dds.data, src_data, src_pitch * tests[i].height);
+
+        hr = D3DX11CreateTextureFromMemory(device, &dds, sizeof(dds), &load_info, NULL, &resource, NULL);
+        todo_wine_if(is_srgb_format(tests[i].src_format) || is_srgb_format(tests[i].dst_format))
+                ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+        if (SUCCEEDED(hr))
+        {
+            get_resource_readback(resource, 0, &rb);
+            todo_wine_if(tests[i].todo) check_test_readback(&rb, expected_dst, tests[i].width, tests[i].height, 1,
+                    tests[i].dst_format, 0);
+            release_resource_readback(&rb);
+            ID3D11Resource_Release(resource);
+        }
+
+        winetest_pop_context();
+    }
+
+    CoUninitialize();
+    ok(!ID3D11Device_Release(device), "Unexpected refcount.\n");
+}
+
 static BOOL create_directory(const WCHAR *dir)
 {
     WCHAR path[MAX_PATH];
@@ -4591,4 +4960,6 @@ START_TEST(d3dx11)
     test_legacy_dds_header_image_info();
     test_dxt10_dds_header_image_info();
     test_image_filters();
+    test_dxt_formats();
+    test_srgb_filter_flags();
 }
diff --git a/dlls/d3dx11_43/texture.c b/dlls/d3dx11_43/texture.c
index e3218e3ec041..21f5b0089648 100644
--- a/dlls/d3dx11_43/texture.c
+++ b/dlls/d3dx11_43/texture.c
@@ -384,14 +384,6 @@ HRESULT load_texture_data(const void *data, SIZE_T size, D3DX11_IMAGE_LOAD_INFO
         return E_FAIL;
 
     *resource_data = NULL;
-    if (!load_info->Filter || load_info->Filter == D3DX11_DEFAULT)
-        load_info->Filter = D3DX11_FILTER_LINEAR;
-    if (FAILED(hr = d3dx_validate_filter(load_info->Filter)))
-    {
-        WARN("Invalid filter argument %#x.\n", load_info->Filter);
-        return hr;
-    }
-
     hr = d3dx_image_init(data, size, &image, 0, D3DX_IMAGE_SUPPORT_DXT10);
     if (FAILED(hr))
         return E_FAIL;
@@ -445,6 +437,23 @@ HRESULT load_texture_data(const void *data, SIZE_T size, D3DX11_IMAGE_LOAD_INFO
         load_info->MipLevels = (load_info->MipLevels == D3DX11_FROM_FILE) ? img_info.MipLevels : max_mip_level_count;
     load_info->MipLevels = min(max_mip_level_count, load_info->MipLevels);
 
+    if ((load_info->Width != image.size.width) || (load_info->Height != image.size.height)
+            || (load_info->Depth != image.size.depth) || (load_info->MipLevels != image.mip_levels)
+            || (fmt_desc->format != image.format))
+    {
+        if (!load_info->Filter || load_info->Filter == D3DX11_DEFAULT)
+            load_info->Filter = D3DX11_FILTER_LINEAR;
+        if (FAILED(hr = d3dx_validate_filter(load_info->Filter)))
+        {
+            WARN("Invalid filter argument %#x.\n", load_info->Filter);
+            goto end;
+        }
+    }
+    else
+    {
+        load_info->Filter = D3DX11_FILTER_NONE;
+    }
+
     hr = d3dx_create_subresource_data_for_texture(load_info->Width, load_info->Height, load_info->Depth,
             load_info->MipLevels, img_info.ArraySize, fmt_desc, &sub_rsrcs);
     if (FAILED(hr))
diff --git a/dlls/d3dx9_36/d3dx_helpers.c b/dlls/d3dx9_36/d3dx_helpers.c
index 4c0f49be1d40..bff7798006d3 100644
--- a/dlls/d3dx9_36/d3dx_helpers.c
+++ b/dlls/d3dx9_36/d3dx_helpers.c
@@ -53,6 +53,11 @@ WINE_DEFAULT_DEBUG_CHANNEL(d3dx);
 #define D3DX_FILTER_SRGB_OUT         0x00400000
 #define D3DX_FILTER_SRGB             0x00600000
 
+/* These are custom Wine only filter flags. */
+#define D3DX_FILTER_PMA_IN  0x00800000
+#define D3DX_FILTER_PMA_OUT 0x01000000
+#define D3DX_FILTER_PMA     0x01800000
+
 #define D3DX_FILTER_INVALID_BITS     0xff80fff8
 HRESULT d3dx_validate_filter(uint32_t filter)
 {
@@ -62,6 +67,18 @@ HRESULT d3dx_validate_filter(uint32_t filter)
     return D3D_OK;
 }
 
+static uint32_t d3dx_conv_flags_from_filter(uint32_t filter)
+{
+    uint32_t conv_flags = 0;
+
+    if ((filter & D3DX_FILTER_PMA) && ((filter & D3DX_FILTER_PMA) != D3DX_FILTER_PMA))
+        conv_flags |= (filter & D3DX_FILTER_PMA_IN) ? CONV_FLAG_PM_ALPHA_IN : CONV_FLAG_PM_ALPHA_OUT;
+    if ((filter & D3DX_FILTER_SRGB) && ((filter & D3DX_FILTER_SRGB) != D3DX_FILTER_SRGB))
+        conv_flags |= (filter & D3DX_FILTER_SRGB_IN) ? CONV_FLAG_SRGB_IN : CONV_FLAG_SRGB_OUT;
+
+    return conv_flags;
+}
+
 HRESULT WINAPI WICCreateImagingFactory_Proxy(UINT, IWICImagingFactory**);
 
 /************************************************************
@@ -100,9 +117,9 @@ static const struct pixel_format_desc formats[] =
     {D3DX_PIXEL_FORMAT_L8_UNORM,                 { 0,  8,  0,  0}, { 0,  0,  0,  0},  1, 1, 1,  1, CTYPE_EMPTY, CTYPE_LUMA,  0           },
     {D3DX_PIXEL_FORMAT_L16_UNORM,                { 0, 16,  0,  0}, { 0,  0,  0,  0},  2, 1, 1,  2, CTYPE_EMPTY, CTYPE_LUMA,  0           },
     {D3DX_PIXEL_FORMAT_DXT1_UNORM,               { 0,  0,  0,  0}, { 0,  0,  0,  0},  1, 4, 4,  8, CTYPE_UNORM, CTYPE_UNORM, FMT_FLAG_DXT},
-    {D3DX_PIXEL_FORMAT_DXT2_UNORM,               { 0,  0,  0,  0}, { 0,  0,  0,  0},  1, 4, 4, 16, CTYPE_UNORM, CTYPE_UNORM, FMT_FLAG_DXT},
+    {D3DX_PIXEL_FORMAT_DXT2_UNORM,               { 0,  0,  0,  0}, { 0,  0,  0,  0},  1, 4, 4, 16, CTYPE_UNORM, CTYPE_UNORM, FMT_FLAG_DXT|FMT_FLAG_PM_ALPHA},
     {D3DX_PIXEL_FORMAT_DXT3_UNORM,               { 0,  0,  0,  0}, { 0,  0,  0,  0},  1, 4, 4, 16, CTYPE_UNORM, CTYPE_UNORM, FMT_FLAG_DXT},
-    {D3DX_PIXEL_FORMAT_DXT4_UNORM,               { 0,  0,  0,  0}, { 0,  0,  0,  0},  1, 4, 4, 16, CTYPE_UNORM, CTYPE_UNORM, FMT_FLAG_DXT},
+    {D3DX_PIXEL_FORMAT_DXT4_UNORM,               { 0,  0,  0,  0}, { 0,  0,  0,  0},  1, 4, 4, 16, CTYPE_UNORM, CTYPE_UNORM, FMT_FLAG_DXT|FMT_FLAG_PM_ALPHA},
     {D3DX_PIXEL_FORMAT_DXT5_UNORM,               { 0,  0,  0,  0}, { 0,  0,  0,  0},  1, 4, 4, 16, CTYPE_UNORM, CTYPE_UNORM, FMT_FLAG_DXT},
     {D3DX_PIXEL_FORMAT_BC4_UNORM,                { 0,  0,  0,  0}, { 0,  0,  0,  0},  1, 4, 4,  8, CTYPE_EMPTY, CTYPE_UNORM, FMT_FLAG_DXT|FMT_FLAG_DXGI},
     {D3DX_PIXEL_FORMAT_BC4_SNORM,                { 0,  0,  0,  0}, { 0,  0,  0,  0},  1, 4, 4,  8, CTYPE_EMPTY, CTYPE_SNORM, FMT_FLAG_DXT|FMT_FLAG_DXGI},
@@ -1205,6 +1222,16 @@ static HRESULT d3dx_initialize_image_from_dds(const void *src_data, uint32_t src
 
         if ((image->format = d3dx_pixel_format_id_from_dds_pixel_format(&header->pixel_format)) == D3DX_PIXEL_FORMAT_COUNT)
             return D3DXERR_INVALIDDATA;
+        if (flags & D3DX_IMAGE_SUPPORT_DXT10 && (image->format == D3DX_PIXEL_FORMAT_DXT2_UNORM
+                    || image->format == D3DX_PIXEL_FORMAT_DXT4_UNORM))
+        {
+            TRACE("Loading a DXT%d texture on d3dx10+, ignoring premultiplied alpha.\n",
+                    image->format == D3DX_PIXEL_FORMAT_DXT2_UNORM ? 2 : 4);
+            if (image->format == D3DX_PIXEL_FORMAT_DXT2_UNORM)
+                image->format = D3DX_PIXEL_FORMAT_DXT3_UNORM;
+            else
+                image->format = D3DX_PIXEL_FORMAT_DXT5_UNORM;
+        }
 
         image->image_file_format = D3DX_IMAGE_FILE_FORMAT_DDS;
         image->layer_count = 1;
@@ -1632,7 +1659,7 @@ struct d3dx_color_key;
 static void convert_argb_pixels(const BYTE *src, UINT src_row_pitch, UINT src_slice_pitch, const struct volume *src_size,
         const struct pixel_format_desc *src_format, BYTE *dst, UINT dst_row_pitch, UINT dst_slice_pitch,
         const struct volume *dst_size, const struct pixel_format_desc *dst_format, const struct d3dx_color_key *color_key,
-        const PALETTEENTRY *palette);
+        const PALETTEENTRY *palette, uint32_t conv_flags);
 
 static HRESULT d3dx_image_tga_decode(const void *src_data, uint32_t src_data_size, uint32_t src_header_size,
         struct d3dx_image *image)
@@ -1678,7 +1705,7 @@ static HRESULT d3dx_image_tga_decode(const void *src_data, uint32_t src_data_siz
         dst_desc = get_d3dx_pixel_format_info(D3DX_PIXEL_FORMAT_R8G8B8A8_UNORM);
         d3dx_calculate_pixels_size(dst_desc->format, 256, 1, &dst_row_pitch, &dst_slice_pitch);
         convert_argb_pixels(src_palette, src_row_pitch, src_slice_pitch, &image_map_size, src_desc, (BYTE *)palette,
-                dst_row_pitch, dst_slice_pitch, &image_map_size, dst_desc, NULL, NULL);
+                dst_row_pitch, dst_slice_pitch, &image_map_size, dst_desc, NULL, NULL, 0);
 
         /* Initialize unused palette entries to 0xff. */
         if (header->color_map_length < 256)
@@ -2429,14 +2456,56 @@ static void copy_pixels(const BYTE *src, UINT src_row_pitch, UINT src_slice_pitc
     }
 }
 
+static void premultiplied_alpha_from_straight_alpha(struct vec4 *vec)
+{
+    vec->x *= vec->w;
+    vec->y *= vec->w;
+    vec->z *= vec->w;
+}
+
+static void straight_alpha_from_premultiplied_alpha(struct vec4 *vec)
+{
+    vec->x = (vec->w == 0.0f) ? 0.0f : vec->x / vec->w;
+    vec->y = (vec->w == 0.0f) ? 0.0f : vec->y / vec->w;
+    vec->z = (vec->w == 0.0f) ? 0.0f : vec->z / vec->w;
+}
+
+/*
+ * All versions of d3dx (9-11) treat sRGB as "simplified sRGB." Rather
+ * than using the sRGB transfer function defined in IEC 61966-2-1:1999, they
+ * use a plain gamma 2.2 transfer function which ignores the special handling
+ * of the linear section near 0.
+ *
+ * Native d3dx also seems to use a lookup table to do this conversion, which
+ * matches the output of earlier versions of DirectXTex (prior to commit
+ * 98699f90f9177cee0f1be5ff441d0c42c32d9b69). If it's determined later on that
+ * an application needs to more closely match native's conversion values for
+ * formats larger than 8bpc this should be considered, but for now these
+ * functions result in matching native's output for 8bpc formats.
+ */
+static void srgb_from_linear_rgb(struct vec4 *vec)
+{
+    vec->x = powf(vec->x, 1.0f / 2.2f);
+    vec->y = powf(vec->y, 1.0f / 2.2f);
+    vec->z = powf(vec->z, 1.0f / 2.2f);
+}
+
+static void linear_rgb_from_srgb(struct vec4 *vec)
+{
+    vec->x = powf(vec->x, 2.2f);
+    vec->y = powf(vec->y, 2.2f);
+    vec->z = powf(vec->z, 2.2f);
+}
+
 static void convert_argb_pixel(const uint8_t *src_ptr, const struct pixel_format_desc *src_fmt,
         uint8_t *dst_ptr, const struct pixel_format_desc *dst_fmt, const PALETTEENTRY *palette,
         struct argb_conversion_info *conv_info, const struct d3dx_color_key *color_key,
-        const struct pixel_format_desc *ck_format, struct argb_conversion_info *ck_conv_info)
+        const struct pixel_format_desc *ck_format, struct argb_conversion_info *ck_conv_info, uint32_t conv_flags)
 {
     unsigned int i;
 
-    if (format_types_match(src_fmt, dst_fmt) && src_fmt->bytes_per_pixel <= 4 && dst_fmt->bytes_per_pixel <= 4)
+    if (format_types_match(src_fmt, dst_fmt) && src_fmt->bytes_per_pixel <= 4 && dst_fmt->bytes_per_pixel <= 4
+            && !conv_flags)
     {
         DWORD channels[4];
         DWORD val;
@@ -2467,6 +2536,10 @@ static void convert_argb_pixel(const uint8_t *src_ptr, const struct pixel_format
         struct d3dx_color color, tmp;
 
         format_to_d3dx_color(src_fmt, src_ptr, palette, &color);
+        if (conv_flags & CONV_FLAG_PM_ALPHA_IN)
+            straight_alpha_from_premultiplied_alpha(&color.value);
+        if (conv_flags & CONV_FLAG_SRGB_IN)
+            linear_rgb_from_srgb(&color.value);
         tmp = color;
 
         if (color_key)
@@ -2486,6 +2559,10 @@ static void convert_argb_pixel(const uint8_t *src_ptr, const struct pixel_format
         }
 
         color = tmp;
+        if (conv_flags & CONV_FLAG_SRGB_OUT)
+            srgb_from_linear_rgb(&color.value);
+        if (conv_flags & CONV_FLAG_PM_ALPHA_OUT)
+            premultiplied_alpha_from_straight_alpha(&color.value);
         format_from_d3dx_color(dst_fmt, &color, dst_ptr);
     }
 }
@@ -2500,7 +2577,7 @@ static void convert_argb_pixel(const uint8_t *src_ptr, const struct pixel_format
 static void convert_argb_pixels(const BYTE *src, UINT src_row_pitch, UINT src_slice_pitch, const struct volume *src_size,
         const struct pixel_format_desc *src_format, BYTE *dst, UINT dst_row_pitch, UINT dst_slice_pitch,
         const struct volume *dst_size, const struct pixel_format_desc *dst_format, const struct d3dx_color_key *color_key,
-        const PALETTEENTRY *palette)
+        const PALETTEENTRY *palette, uint32_t conv_flags)
 {
     /* Color keys are always represented in D3DFMT_A8R8G8B8 format. */
     const struct pixel_format_desc *ck_format = color_key ? get_d3dx_pixel_format_info(D3DX_PIXEL_FORMAT_B8G8R8A8_UNORM) : NULL;
@@ -2532,7 +2609,7 @@ static void convert_argb_pixels(const BYTE *src, UINT src_row_pitch, UINT src_sl
 
             for (x = 0; x < min_width; x++) {
                 convert_argb_pixel(src_ptr, src_format, dst_ptr, dst_format, palette,
-                        &conv_info, color_key, ck_format, &ck_conv_info);
+                        &conv_info, color_key, ck_format, &ck_conv_info, conv_flags);
 
                 src_ptr += src_format->bytes_per_pixel;
                 dst_ptr += dst_format->bytes_per_pixel;
@@ -2559,7 +2636,7 @@ static void convert_argb_pixels(const BYTE *src, UINT src_row_pitch, UINT src_sl
 static void point_filter_argb_pixels(const BYTE *src, UINT src_row_pitch, UINT src_slice_pitch,
         const struct volume *src_size, const struct pixel_format_desc *src_format, BYTE *dst, UINT dst_row_pitch,
         UINT dst_slice_pitch, const struct volume *dst_size, const struct pixel_format_desc *dst_format,
-        const struct d3dx_color_key *color_key, const PALETTEENTRY *palette)
+        const struct d3dx_color_key *color_key, const PALETTEENTRY *palette, uint32_t conv_flags)
 {
     /* Color keys are always represented in D3DFMT_A8R8G8B8 format. */
     const struct pixel_format_desc *ck_format = color_key ? get_d3dx_pixel_format_info(D3DX_PIXEL_FORMAT_B8G8R8A8_UNORM) : NULL;
@@ -2591,7 +2668,7 @@ static void point_filter_argb_pixels(const BYTE *src, UINT src_row_pitch, UINT s
                 const BYTE *src_ptr = src_row_ptr + (x * src_size->width / dst_size->width) * src_format->bytes_per_pixel;
 
                 convert_argb_pixel(src_ptr, src_format, dst_ptr, dst_format, palette,
-                        &conv_info, color_key, ck_format, &ck_conv_info);
+                        &conv_info, color_key, ck_format, &ck_conv_info, conv_flags);
                 dst_ptr += dst_format->bytes_per_pixel;
             }
         }
@@ -2640,7 +2717,7 @@ static inline void vec4_scale(struct vec4 *out, const float scale)
 static void box_filter_argb_pixels(const BYTE *src, UINT src_row_pitch, UINT src_slice_pitch,
         const struct volume *src_size, const struct pixel_format_desc *src_format, BYTE *dst, UINT dst_row_pitch,
         UINT dst_slice_pitch, const struct volume *dst_size, const struct pixel_format_desc *dst_format,
-        const struct d3dx_color_key *color_key, const PALETTEENTRY *palette)
+        const struct d3dx_color_key *color_key, const PALETTEENTRY *palette, uint32_t conv_flags)
 {
     /* Color keys are always represented in D3DFMT_A8R8G8B8 format. */
     const struct pixel_format_desc *ck_format = color_key ? get_d3dx_pixel_format_info(D3DX_PIXEL_FORMAT_B8G8R8A8_UNORM) : NULL;
@@ -2681,28 +2758,48 @@ static void box_filter_argb_pixels(const BYTE *src, UINT src_row_pitch, UINT src
                     const BYTE *ptr = src_ptr + i * src_slice_pitch;
 
                     format_to_d3dx_color(src_format, ptr, palette, &tmp);
+                    if (conv_flags & CONV_FLAG_PM_ALPHA_IN)
+                        straight_alpha_from_premultiplied_alpha(&color.value);
+                    if (conv_flags & CONV_FLAG_SRGB_IN)
+                        linear_rgb_from_srgb(&color.value);
                     if (color_key)
                         check_color_key(&tmp, color_key, ck_format);
                     vec4_add(&color.value, &tmp.value);
 
                     format_to_d3dx_color(src_format, ptr + src_format->bytes_per_pixel, palette, &tmp);
+                    if (conv_flags & CONV_FLAG_PM_ALPHA_IN)
+                        straight_alpha_from_premultiplied_alpha(&color.value);
+                    if (conv_flags & CONV_FLAG_SRGB_IN)
+                        linear_rgb_from_srgb(&color.value);
                     if (color_key)
                         check_color_key(&tmp, color_key, ck_format);
                     vec4_add(&color.value, &tmp.value);
 
                     ptr += src_row_pitch;
                     format_to_d3dx_color(src_format, ptr, palette, &tmp);
+                    if (conv_flags & CONV_FLAG_PM_ALPHA_IN)
+                        straight_alpha_from_premultiplied_alpha(&color.value);
+                    if (conv_flags & CONV_FLAG_SRGB_IN)
+                        linear_rgb_from_srgb(&color.value);
                     if (color_key)
                         check_color_key(&tmp, color_key, ck_format);
                     vec4_add(&color.value, &tmp.value);
 
                     format_to_d3dx_color(src_format, ptr + src_format->bytes_per_pixel, palette, &tmp);
+                    if (conv_flags & CONV_FLAG_PM_ALPHA_IN)
+                        straight_alpha_from_premultiplied_alpha(&color.value);
+                    if (conv_flags & CONV_FLAG_SRGB_IN)
+                        linear_rgb_from_srgb(&color.value);
                     if (color_key)
                         check_color_key(&tmp, color_key, ck_format);
                     vec4_add(&color.value, &tmp.value);
                 }
 
                 vec4_scale(&color.value, src_size->depth > 1 ? 0.125f : 0.25f);
+                if (conv_flags & CONV_FLAG_SRGB_OUT)
+                    srgb_from_linear_rgb(&color.value);
+                if (conv_flags & CONV_FLAG_PM_ALPHA_OUT)
+                    premultiplied_alpha_from_straight_alpha(&color.value);
                 format_from_d3dx_color(dst_format, &color, dst_ptr);
                 dst_ptr += dst_format->bytes_per_pixel;
             }
@@ -3125,12 +3222,20 @@ HRESULT d3dx_load_pixels_from_pixels(struct d3dx_pixels *dst_pixels,
     struct volume src_size, dst_size, dst_size_aligned;
     const struct d3dx_color_key *d3dx_ck = NULL;
     struct d3dx_color_key d3dx_color_key;
+    uint32_t conv_flags;
     HRESULT hr = S_OK;
 
     TRACE("dst_pixels %s, dst_desc %p, src_pixels %s, src_desc %p, filter_flags %#x, color_key %#x.\n",
             debug_d3dx_pixels(dst_pixels), dst_desc, debug_d3dx_pixels(src_pixels), src_desc,
             filter_flags, color_key);
 
+    if (src_desc->flags & FMT_FLAG_PM_ALPHA)
+        filter_flags |= D3DX_FILTER_PMA_IN;
+
+    if (dst_desc->flags & FMT_FLAG_PM_ALPHA)
+        filter_flags |= D3DX_FILTER_PMA_OUT;
+
+    conv_flags = d3dx_conv_flags_from_filter(filter_flags);
     if (is_compressed_format(src_desc))
         set_volume_struct(&src_size, (src_pixels->unaligned_rect.right - src_pixels->unaligned_rect.left),
                 (src_pixels->unaligned_rect.bottom - src_pixels->unaligned_rect.top), src_pixels->size.depth);
@@ -3150,6 +3255,7 @@ HRESULT d3dx_load_pixels_from_pixels(struct d3dx_pixels *dst_pixels,
             && (dst_size.height == src_size.height && !(dst_size.height % dst_desc->block_height))
             && (dst_size.depth == src_size.depth)
             && color_key == 0
+            && !conv_flags
             && !(src_pixels->unaligned_rect.left & (src_desc->block_width - 1))
             && !(src_pixels->unaligned_rect.top & (src_desc->block_height - 1))
             && !(dst_pixels->unaligned_rect.left & (dst_desc->block_width - 1))
@@ -3280,13 +3386,13 @@ HRESULT d3dx_load_pixels_from_pixels(struct d3dx_pixels *dst_pixels,
     {
         convert_argb_pixels(src_pixels->data, src_pixels->row_pitch, src_pixels->slice_pitch, &src_size, src_desc,
                 (BYTE *)dst_pixels->data, dst_pixels->row_pitch, dst_pixels->slice_pitch, &dst_size, dst_desc,
-                d3dx_ck, src_pixels->palette);
+                d3dx_ck, src_pixels->palette, conv_flags);
     }
     else if ((filter_flags & 0xf) == D3DX_FILTER_BOX)
     {
         box_filter_argb_pixels(src_pixels->data, src_pixels->row_pitch, src_pixels->slice_pitch, &src_size,
                 src_desc, (BYTE *)dst_pixels->data, dst_pixels->row_pitch, dst_pixels->slice_pitch, &dst_size,
-                dst_desc, d3dx_ck, src_pixels->palette);
+                dst_desc, d3dx_ck, src_pixels->palette, conv_flags);
     }
     else /* if ((filter & 0xf) == D3DX_FILTER_POINT) */
     {
@@ -3297,7 +3403,7 @@ HRESULT d3dx_load_pixels_from_pixels(struct d3dx_pixels *dst_pixels,
          * D3DX_FILTER_TRIANGLE and D3DX_FILTER_BOX are implemented. */
         point_filter_argb_pixels(src_pixels->data, src_pixels->row_pitch, src_pixels->slice_pitch, &src_size,
                 src_desc, (BYTE *)dst_pixels->data, dst_pixels->row_pitch, dst_pixels->slice_pitch, &dst_size,
-                dst_desc, d3dx_ck, src_pixels->palette);
+                dst_desc, d3dx_ck, src_pixels->palette, conv_flags);
     }
 
 exit:
diff --git a/dlls/d3dx9_36/d3dx_helpers.h b/dlls/d3dx9_36/d3dx_helpers.h
index 9b85149cbaa9..10cbc1723ed0 100644
--- a/dlls/d3dx9_36/d3dx_helpers.h
+++ b/dlls/d3dx9_36/d3dx_helpers.h
@@ -242,6 +242,14 @@ enum d3dx_pixel_format_id
 #define D3DX_PIXEL_FORMAT_BC3_UNORM          D3DX_PIXEL_FORMAT_DXT5_UNORM
 
 /* for internal use */
+enum conversion_flag
+{
+    CONV_FLAG_PM_ALPHA_IN  = 0x01,
+    CONV_FLAG_PM_ALPHA_OUT = 0x02,
+    CONV_FLAG_SRGB_IN  = 0x04,
+    CONV_FLAG_SRGB_OUT = 0x08,
+};
+
 enum component_type
 {
     CTYPE_EMPTY,
@@ -264,6 +272,8 @@ enum format_flag
      * equivalent.
      */
     FMT_FLAG_DXGI     = 0x08,
+    /* Formats with premultiplied alpha, i.e DXT2/DXT4. */
+    FMT_FLAG_PM_ALPHA = 0x10,
 };
 
 struct pixel_format_desc {
diff --git a/dlls/d3dx9_36/tests/d3dx9_test_images.h b/dlls/d3dx9_36/tests/d3dx9_test_images.h
index 49fa4135ca6b..c6e59ef0efc1 100644
--- a/dlls/d3dx9_36/tests/d3dx9_test_images.h
+++ b/dlls/d3dx9_36/tests/d3dx9_test_images.h
@@ -95,6 +95,24 @@ test_filter_values[] =
     { 0xff800001,           D3DERR_INVALIDCALL },
 };
 
+static inline const char *debug_d3dx_filter(uint32_t filter_flags)
+{
+    static const char *filter_types[] = { "", "D3DX_FILTER_NONE", "D3DX_FILTER_POINT", "D3DX_FILTER_LINEAR",
+                                          "D3DX_FILTER_TRIANGLE", "D3DX_FILTER_BOX", "", "" };
+    static const char *srgb_types[] = { "", "|D3DX_FILTER_SRGB_IN", "|D3DX_FILTER_SRGB_OUT", "|D3DX_FILTER_SRGB" };
+    static const char *dither_types[] = { "", "|D3DX_FILTER_DITHER", "|D3DX_FILTER_DITHER_DIFFUSION", ""};
+    static const char *mirror_types[] = { "", "|D3DX_FILTER_MIRROR_U", "|D3DX_FILTER_MIRROR_V",
+                                          "|D3DX_FILTER_MIRROR_U|D3DX_FILTER_MIRROR_V", "|D3DX_FILTER_MIRROR_W",
+                                          "|D3DX_FILTER_MIRROR_U|D3DX_FILTER_MIRROR_W",
+                                          "|D3DX_FILTER_MIRROR_V|D3DX_FILTER_MIRROR_W", "|D3DX_FILTER_MIRROR", };
+    const uint8_t mirror = ((filter_flags >> 16) & 0x7);
+    const uint8_t dither = ((filter_flags >> 19) & 0x3);
+    const uint8_t srgb = ((filter_flags >> 21) & 0x3);
+    const uint8_t filter = (filter_flags & 0x7);
+
+    return wine_dbg_sprintf("%s%s%s%s", filter_types[filter], mirror_types[mirror], dither_types[dither], srgb_types[srgb]);
+}
+
 static const PALETTEENTRY test_palette[256] =
 {
     {0x00,0x00,0x00,0x00}, {0x00,0x00,0x80,0x01}, {0x00,0x80,0x00,0x02}, {0x00,0x80,0x80,0x03},
@@ -1972,6 +1990,19 @@ static inline BOOL compare_uint(uint32_t x, uint32_t y, uint32_t max_diff)
     return diff <= max_diff;
 }
 
+static inline BOOL compare_float(float f, float g, uint32_t ulps)
+{
+    int32_t x = *(int32_t *)&f;
+    int32_t y = *(int32_t *)&g;
+
+    if (x < 0)
+        x = INT_MIN - x;
+    if (y < 0)
+        y = INT_MIN - y;
+
+    return compare_uint(x, y, ulps);
+}
+
 static inline BOOL compare_color_4bpp(uint32_t c1, uint32_t c2, uint8_t max_diff)
 {
     return compare_uint(c1 & 0xff, c2 & 0xff, max_diff)
@@ -2008,6 +2039,15 @@ static inline BOOL check_readback_pixel_4bpp_rgba(const void *got, const void *e
     return compare_color_4bpp(*a, *b, max_diff);
 }
 
+static inline BOOL check_readback_pixel_float4_rgba(const void *got, const void *expected, uint32_t max_diff)
+{
+    const float *a = got;
+    const float *b = expected;
+
+    return (compare_float(a[0], b[0], max_diff) && compare_float(a[1], b[1], max_diff)
+        && compare_float(a[2], b[2], max_diff) && compare_float(a[3], b[3], max_diff));
+}
+
 typedef BOOL (*check_readback_pixel_func)(const void *, const void *, uint32_t);
 static inline check_readback_pixel_func get_readback_pixel_func_for_d3dformat(D3DFORMAT format)
 {
@@ -2017,6 +2057,9 @@ static inline check_readback_pixel_func get_readback_pixel_func_for_d3dformat(D3
         case D3DFMT_A8R8G8B8:
             return check_readback_pixel_4bpp_rgba;
 
+        case D3DFMT_A32B32G32R32F:
+            return check_readback_pixel_float4_rgba;
+
         default:
             assert(0 && "Need to add format to get_readback_pixel_func_for_d3dformat().");
             return 0;
diff --git a/dlls/d3dx9_36/tests/surface.c b/dlls/d3dx9_36/tests/surface.c
index c72c4a018774..ea01e3389a92 100644
--- a/dlls/d3dx9_36/tests/surface.c
+++ b/dlls/d3dx9_36/tests/surface.c
@@ -26,19 +26,6 @@
 #include <stdint.h>
 #include "d3dx9_test_images.h"
 
-static BOOL compare_float(float f, float g, uint32_t ulps)
-{
-    int32_t x = *(int32_t *)&f;
-    int32_t y = *(int32_t *)&g;
-
-    if (x < 0)
-        x = INT_MIN - x;
-    if (y < 0)
-        y = INT_MIN - y;
-
-    return compare_uint(x, y, ulps);
-}
-
 #define check_release(obj, exp) _check_release(__LINE__, obj, exp)
 static inline void _check_release(unsigned int line, IUnknown *obj, int exp)
 {
@@ -1252,6 +1239,28 @@ static void test_dxt_premultiplied_alpha(IDirect3DDevice9 *device)
     {
         0x22,0xcc,0x86,0xc6,0xe6,0x86,0xc6,0xe6,0x10,0x84,0x10,0x84,0x00,0x00,0x00,0x00,
     };
+    static const uint8_t dxt2_block_srgb[] =
+    {
+        0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x86,0x31,0x04,0x21,0x11,0x11,0x11,0x11,
+    };
+    static const uint8_t dxt4_block_srgb[] =
+    {
+        0x88,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x86,0x31,0x04,0x21,0x11,0x11,0x11,0x11,
+    };
+    static const uint8_t dxt_srgb_in_expected[] =
+    {
+        0x0b,0x0b,0x0b,0x88,0x1b,0x1a,0x1b,0x88,0x0b,0x0b,0x0b,0x88,0x1b,0x1a,0x1b,0x88,
+        0x0b,0x0b,0x0b,0x88,0x1b,0x1a,0x1b,0x88,0x0b,0x0b,0x0b,0x88,0x1b,0x1a,0x1b,0x88,
+        0x0b,0x0b,0x0b,0x88,0x1b,0x1a,0x1b,0x88,0x0b,0x0b,0x0b,0x88,0x1b,0x1a,0x1b,0x88,
+        0x0b,0x0b,0x0b,0x88,0x1b,0x1a,0x1b,0x88,0x0b,0x0b,0x0b,0x88,0x1b,0x1a,0x1b,0x88,
+    };
+    static const uint8_t dxt_srgb_out_expected[] =
+    {
+        0x21,0x20,0x21,0x88,0x31,0x31,0x31,0x88,0x21,0x20,0x21,0x88,0x31,0x31,0x31,0x88,
+        0x21,0x20,0x21,0x88,0x31,0x31,0x31,0x88,0x21,0x20,0x21,0x88,0x31,0x31,0x31,0x88,
+        0x21,0x20,0x21,0x88,0x31,0x31,0x31,0x88,0x21,0x20,0x21,0x88,0x31,0x31,0x31,0x88,
+        0x21,0x20,0x21,0x88,0x31,0x31,0x31,0x88,0x21,0x20,0x21,0x88,0x31,0x31,0x31,0x88,
+    };
     static const uint32_t test_compress_pixels[] =
     {
         0xffffffff, 0x00ffffff, 0xffffffff, 0x00ffffff, 0xffffffff, 0x00ffffff, 0xffffffff, 0x00ffffff,
@@ -1269,9 +1278,10 @@ static void test_dxt_premultiplied_alpha(IDirect3DDevice9 *device)
         { D3DFMT_DXT4, D3DFMT_DXT5, dxt5_block, "DXT4 / DXT5" },
     };
     static const RECT src_rect = { 0, 0, 4, 4 };
-    IDirect3DSurface9 *decomp_surf;
+    IDirect3DSurface9 *decomp_surf, *comp_surf;
     D3DLOCKED_RECT lock_rect;
     uint32_t i, x, y;
+    uint8_t tmp[16];
     HRESULT hr;
 
     hr = IDirect3DDevice9_CreateOffscreenPlainSurface(device, 4, 4, D3DFMT_A8R8G8B8, D3DPOOL_SYSTEMMEM, &decomp_surf, NULL);
@@ -1326,7 +1336,7 @@ static void test_dxt_premultiplied_alpha(IDirect3DDevice9 *device)
             {
                 const uint32_t expected_pixel = !(x & 0x01) ? 0xffffffff : 0x00000000;
 
-                check_readback_pixel_4bpp(&surface_rb, x, y, expected_pixel, !expected_pixel);
+                check_readback_pixel_4bpp(&surface_rb, x, y, expected_pixel, FALSE);
             }
         }
         release_surface_readback(&surface_rb);
@@ -1348,17 +1358,10 @@ static void test_dxt_premultiplied_alpha(IDirect3DDevice9 *device)
          */
         hr = D3DXLoadSurfaceFromMemory(decomp_surf, NULL, NULL, tests[i].dxt_block, tests[i].pma_fmt, 16, NULL, &src_rect, D3DX_FILTER_NONE, 0);
         ok(hr == D3D_OK, "Unexpected hr %#lx.\n", hr);
-        IDirect3DSurface9_LockRect(decomp_surf, &lock_rect, NULL, D3DLOCK_READONLY);
-        for (y = 0; y < 4; ++y)
-        {
-            for (x = 0; x < 4; ++x)
-            {
-                const uint32_t expected_pixel = dxt_pma_decompressed_expected[(y * 4) + x];
-                const BOOL todo = ((expected_pixel >> 24) & 0xff) != 0xff;
 
-                todo_wine_if(todo) check_pixel_4bpp(&lock_rect, x, y, expected_pixel);
-            }
-        }
+        IDirect3DSurface9_LockRect(decomp_surf, &lock_rect, NULL, D3DLOCK_READONLY);
+        check_test_readback(lock_rect.pBits, lock_rect.Pitch, lock_rect.Pitch * 4, dxt_pma_decompressed_expected, 4, 4,
+                1, D3DFMT_A8B8G8R8, 1);
         IDirect3DSurface9_UnlockRect(decomp_surf);
 
         /*
@@ -1381,6 +1384,71 @@ static void test_dxt_premultiplied_alpha(IDirect3DDevice9 *device)
         IDirect3DTexture9_Release(tex);
         winetest_pop_context();
     }
+
+    /*
+     * DXT2/DXT4 combined with SRGB filter flags. Premultiplied alpha is
+     * undone prior to undoing the SRGB conversion, and vice versa.
+     */
+    hr = D3DXLoadSurfaceFromMemory(decomp_surf, NULL, NULL, dxt2_block_srgb, D3DFMT_DXT2, 16, NULL, &src_rect,
+            D3DX_FILTER_NONE | D3DX_FILTER_SRGB_IN, 0);
+    ok(hr == D3D_OK, "Unexpected hr %#lx.\n", hr);
+
+    IDirect3DSurface9_LockRect(decomp_surf, &lock_rect, NULL, D3DLOCK_READONLY);
+    check_test_readback(lock_rect.pBits, lock_rect.Pitch, 0, dxt_srgb_in_expected, 4, 4, 1, D3DFMT_A8R8G8B8, 1);
+    IDirect3DSurface9_UnlockRect(decomp_surf);
+
+    /* DXT4, SRGB in. */
+    hr = D3DXLoadSurfaceFromMemory(decomp_surf, NULL, NULL, dxt4_block_srgb, D3DFMT_DXT4, 16, NULL, &src_rect,
+            D3DX_FILTER_NONE | D3DX_FILTER_SRGB_IN, 0);
+    ok(hr == D3D_OK, "Unexpected hr %#lx.\n", hr);
+
+    IDirect3DSurface9_LockRect(decomp_surf, &lock_rect, NULL, D3DLOCK_READONLY);
+    check_test_readback(lock_rect.pBits, lock_rect.Pitch, 0, dxt_srgb_in_expected, 4, 4, 1, D3DFMT_A8R8G8B8, 1);
+    IDirect3DSurface9_UnlockRect(decomp_surf);
+
+    /*
+     * DXT2, SRGB out. SRGB conversion is done first, and then premultiplied
+     * by alpha.
+     */
+    hr = IDirect3DDevice9_CreateOffscreenPlainSurface(device, 4, 4, D3DFMT_DXT2, D3DPOOL_SCRATCH, &comp_surf, NULL);
+    ok(hr == D3D_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = D3DXLoadSurfaceFromMemory(comp_surf, NULL, NULL, dxt_srgb_in_expected, D3DFMT_A8R8G8B8, 16, NULL, &src_rect,
+            D3DX_FILTER_NONE | D3DX_FILTER_SRGB_OUT, 0);
+    ok(hr == D3D_OK, "Unexpected hr %#lx.\n", hr);
+
+    IDirect3DSurface9_LockRect(comp_surf, &lock_rect, NULL, D3DLOCK_READONLY);
+    memcpy(tmp, lock_rect.pBits, 16);
+    IDirect3DSurface9_UnlockRect(comp_surf);
+    IDirect3DSurface9_Release(comp_surf);
+
+    hr = D3DXLoadSurfaceFromMemory(decomp_surf, NULL, NULL, tmp, D3DFMT_DXT3, 16, NULL, &src_rect, D3DX_FILTER_NONE, 0);
+    ok(hr == D3D_OK, "Unexpected hr %#lx.\n", hr);
+
+    IDirect3DSurface9_LockRect(decomp_surf, &lock_rect, NULL, D3DLOCK_READONLY);
+    check_test_readback(lock_rect.pBits, lock_rect.Pitch, 0, dxt_srgb_out_expected, 4, 4, 1, D3DFMT_A8R8G8B8, 0);
+    IDirect3DSurface9_UnlockRect(decomp_surf);
+
+    /* DXT4, SRGB out. */
+    hr = IDirect3DDevice9_CreateOffscreenPlainSurface(device, 4, 4, D3DFMT_DXT4, D3DPOOL_SCRATCH, &comp_surf, NULL);
+    ok(hr == D3D_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = D3DXLoadSurfaceFromMemory(comp_surf, NULL, NULL, dxt_srgb_in_expected, D3DFMT_A8R8G8B8, 16, NULL, &src_rect,
+            D3DX_FILTER_NONE | D3DX_FILTER_SRGB_OUT, 0);
+    ok(hr == D3D_OK, "Unexpected hr %#lx.\n", hr);
+
+    IDirect3DSurface9_LockRect(comp_surf, &lock_rect, NULL, D3DLOCK_READONLY);
+    memcpy(tmp, lock_rect.pBits, 16);
+    IDirect3DSurface9_UnlockRect(comp_surf);
+    IDirect3DSurface9_Release(comp_surf);
+
+    hr = D3DXLoadSurfaceFromMemory(decomp_surf, NULL, NULL, tmp, D3DFMT_DXT5, 16, NULL, &src_rect, D3DX_FILTER_NONE, 0);
+    ok(hr == D3D_OK, "Unexpected hr %#lx.\n", hr);
+
+    IDirect3DSurface9_LockRect(decomp_surf, &lock_rect, NULL, D3DLOCK_READONLY);
+    check_test_readback(lock_rect.pBits, lock_rect.Pitch, 0, dxt_srgb_out_expected, 4, 4, 1, D3DFMT_A8R8G8B8, 0);
+    IDirect3DSurface9_UnlockRect(decomp_surf);
+
     IDirect3DSurface9_Release(decomp_surf);
 }
 
@@ -5288,6 +5356,139 @@ static void test_image_filters(void)
     DestroyWindow(hwnd);
 }
 
+static void test_srgb_filter_flags(void)
+{
+    static const float test_float4_srgb_in[] =
+    {
+        0.0900000f, 0.1000000f,  0.2000000f, 1.0f,
+        0.3000000f, 0.4000000f,  0.5000000f, 2.0f,
+        0.6000000f, 0.7000000f,  0.8000000f, 3.0f,
+        0.9000000f, 1.5000000f, -1.0000000f, 4.0f,
+    };
+    static const float test_float4_srgb_in_expected[] =
+    {
+        5.00732847e-003, 6.32313965e-003, 2.89932229e-002, 1.00000000e+000,
+        7.07411841e-002, 1.33209527e-001, 2.17638373e-001, 2.00000000e+000,
+        3.25037479e-001, 4.56263810e-001, 6.12065971e-001, 3.00000000e+000,
+        7.93110251e-001, 1.54501167e-009, 1.00000000e+000, 4.00000000e+000,
+    };
+    static const float test_float4_srgb_in_expected_32[] =
+    {
+        5.00732800e-003, 6.32313825e-003, 2.89932154e-002, 1.00000000e+000,
+        7.07411841e-002, 1.33209497e-001, 2.17638358e-001, 2.00000000e+000,
+        3.25037479e-001, 4.56263781e-001, 6.12065852e-001, 3.00000000e+000,
+        /*
+         * On 32-bit d3dx9, an input value of 1.5f being converted from SRGB
+         * to linear produces quite a few different values depending on the
+         * SDK version. Presumably it's reading beyond the end of a LUT.
+         */
+#if D3DX_SDK_VERSION <= 36
+        7.93110192e-001, 7.85714269e-001, 1.00000000e+000, 4.00000000e+000,
+#else
+        7.93110192e-001, 4.68750000e-001, 1.00000000e+000, 4.00000000e+000,
+#endif
+    };
+    static const float test_float4_srgb_out[] =
+    {
+        0.0010000f, 0.1000000f,  0.2000000f, 1.0f,
+        0.3000000f, 0.4000000f,  0.5000000f, 2.0f,
+        0.6000000f, 0.7000000f,  0.8000000f, 3.0f,
+        0.9000000f, 1.5000000f, -1.0000000f, 4.0f,
+    };
+    static const float test_float4_srgb_out_expected[] =
+    {
+        4.32867892e-002, 3.51118684e-001, 4.81156141e-001, 1.00000000e+000,
+        5.78532457e-001, 6.59353077e-001, 7.29739845e-001, 2.00000000e+000,
+        7.92792618e-001, 8.50334764e-001, 9.03545380e-001, 3.00000000e+000,
+        9.53237534e-001, 1.86132386e-001, -NAN,            4.00000000e+000,
+    };
+    static const float test_float4_srgb_out_expected_32[] =
+    {
+        4.32868116e-002, 3.51118803e-001, 4.81156349e-001, 1.00000000e+000,
+        5.78532696e-001, 6.59353256e-001, 7.29739845e-001, 2.00000000e+000,
+        7.92793036e-001, 8.50335181e-001, 9.03545737e-001, 3.00000000e+000,
+        9.53237772e-001, 1.86132386e-001, -INFINITY,       4.00000000e+000,
+
+    };
+    static const uint32_t test_a8r8g8b8[] = { 0x00102030, 0x40506070, 0x8090a0b0, 0xc0d0e0ff };
+    static const uint32_t test_a8r8g8b8_srgb_in_expected[] = { 0x00010306, 0x40141e2a, 0x80495b71, 0xc0a3c0ff };
+    static const uint32_t test_a8r8g8b8_srgb_out_expected[] = { 0x00486377, 0x4097a4af, 0x80c5ced7, 0xc0e8f0ff };
+    static const struct
+    {
+        const RECT src_rect;
+        const void *src_data;
+        D3DFORMAT format;
+        DWORD flags;
+
+        const void *expected_dst_data;
+        const void *expected_dst_data_32;
+        BOOL todo;
+    } tests[] =
+    {
+        /* Both IN and OUT flags, nothing changes. */
+        {
+            { 0, 0, 2, 2 }, test_a8r8g8b8, D3DFMT_A8R8G8B8, D3DX_FILTER_NONE | D3DX_FILTER_SRGB_IN | D3DX_FILTER_SRGB_OUT,
+            test_a8r8g8b8
+        },
+        {
+            { 0, 0, 2, 2 }, test_a8r8g8b8, D3DFMT_A8R8G8B8, D3DX_FILTER_NONE | D3DX_FILTER_SRGB_IN,
+            test_a8r8g8b8_srgb_in_expected
+        },
+        {
+            { 0, 0, 2, 2 }, test_a8r8g8b8, D3DFMT_A8R8G8B8, D3DX_FILTER_NONE | D3DX_FILTER_SRGB_OUT,
+            test_a8r8g8b8_srgb_out_expected
+        },
+        {
+            { 0, 0, 2, 2 }, test_float4_srgb_in, D3DFMT_A32B32G32R32F, D3DX_FILTER_NONE | D3DX_FILTER_SRGB_IN,
+            test_float4_srgb_in_expected, test_float4_srgb_in_expected_32, .todo = TRUE
+        },
+        {
+            { 0, 0, 2, 2 }, test_float4_srgb_out, D3DFMT_A32B32G32R32F, D3DX_FILTER_NONE | D3DX_FILTER_SRGB_OUT,
+            test_float4_srgb_out_expected, test_float4_srgb_out_expected_32, .todo = TRUE
+        },
+    };
+    const BOOL is_32 = (sizeof(void *) == 4);
+    IDirect3DDevice9 *device;
+    D3DLOCKED_RECT lock_rect;
+    IDirect3DSurface9 *surf;
+    unsigned int i;
+    HRESULT hr;
+    HWND hwnd;
+
+    if (!(device = create_device(&hwnd)))
+        return;
+
+    for (i = 0; i < ARRAY_SIZE(tests); ++i)
+    {
+        const unsigned int fmt_bpp = get_bpp_for_d3dformat(tests[i].format);
+        unsigned int width = tests[i].src_rect.right - tests[i].src_rect.left;
+        unsigned int height = tests[i].src_rect.bottom- tests[i].src_rect.top;
+        unsigned int src_pitch = fmt_bpp * width;
+        const uint8_t *expected_dst;
+
+        winetest_push_context("Test %u (%s)", i, debug_d3dx_filter(tests[i].flags));
+
+        hr = IDirect3DDevice9_CreateOffscreenPlainSurface(device, width, height, tests[i].format, D3DPOOL_SCRATCH,
+                &surf, NULL);
+        ok(hr == D3D_OK, "Unexpected hr %#lx.\n", hr);
+
+        hr = D3DXLoadSurfaceFromMemory(surf, NULL, NULL, tests[i].src_data, tests[i].format,
+                src_pitch, NULL, &tests[i].src_rect, tests[i].flags, 0);
+        ok(hr == D3D_OK, "Unexpected hr %#lx.\n", hr);
+
+        expected_dst = (is_32 && tests[i].expected_dst_data_32) ? tests[i].expected_dst_data_32 : tests[i].expected_dst_data;
+        IDirect3DSurface9_LockRect(surf, &lock_rect, NULL, D3DLOCK_READONLY);
+        todo_wine_if(tests[i].todo) check_test_readback(lock_rect.pBits, lock_rect.Pitch, 0, expected_dst, width,
+                height, 1, tests[i].format, 0);
+        IDirect3DSurface9_UnlockRect(surf);
+
+        winetest_pop_context();
+    }
+
+    check_release((IUnknown *)surf, 0);
+    winetest_pop_context();
+}
+
 START_TEST(surface)
 {
     HWND wnd;
@@ -5331,4 +5532,5 @@ START_TEST(surface)
 
     test_color_key();
     test_image_filters();
+    test_srgb_filter_flags();
 }
diff --git a/dlls/dbghelp/dwarf.c b/dlls/dbghelp/dwarf.c
index 1dce6ba0df39..c7ccc062221b 100644
--- a/dlls/dbghelp/dwarf.c
+++ b/dlls/dbghelp/dwarf.c
@@ -792,7 +792,7 @@ static BOOL dwarf2_fill_in_variant(struct module *module, VARIANT *v, const stru
         return FALSE;
     }
     /* native always stores in the shortest format in variant */
-    if (bt == btChar || bt == btInt || bt == btLong)
+    if (bt == btChar || bt == btInt || bt == btLong || bt == btBool)
     {
         if (sinteger == (signed char)sinteger)
         {
diff --git a/dlls/dsound/dsound.c b/dlls/dsound/dsound.c
index fe8011d9b941..c21090d95e24 100644
--- a/dlls/dsound/dsound.c
+++ b/dlls/dsound/dsound.c
@@ -1151,6 +1151,48 @@ void DSOUND_ParseSpeakerConfig(DirectSoundDevice *device)
             device->lfe_channel = 3;
         break;
 
+        case DSSPEAKER_7POINT1_WIDE:
+            device->speaker_angles[0] = M_PI/180.0f * -135.0f;
+            device->speaker_angles[1] = M_PI/180.0f *  -45.0f;
+            device->speaker_angles[2] = M_PI/180.0f *    0.0f;
+            device->speaker_angles[3] = M_PI/180.0f *   45.0f;
+            device->speaker_angles[4] = M_PI/180.0f *  135.0f;
+            device->speaker_angles[5] = M_PI/180.0f *  -10.0f;
+            device->speaker_angles[6] = M_PI/180.0f *   10.0f;
+            device->speaker_angles[7] = 9999.0f;
+            device->speaker_num[0] = 4; /* Rear left */
+            device->speaker_num[1] = 0; /* Front left */
+            device->speaker_num[2] = 2; /* Front centre */
+            device->speaker_num[3] = 1; /* Front right */
+            device->speaker_num[4] = 5; /* Rear right */
+            device->speaker_num[5] = 6; /* Front left of center */
+            device->speaker_num[6] = 7; /* Front right of center */
+            device->speaker_num[7] = 3; /* LFE */
+            device->num_speakers = 8;
+            device->lfe_channel = 3;
+        break;
+
+        case DSSPEAKER_7POINT1_SURROUND:
+            device->speaker_angles[0] = M_PI/180.0f * -135.0f;
+            device->speaker_angles[1] = M_PI/180.0f *  -45.0f;
+            device->speaker_angles[2] = M_PI/180.0f *    0.0f;
+            device->speaker_angles[3] = M_PI/180.0f *   45.0f;
+            device->speaker_angles[4] = M_PI/180.0f *  135.0f;
+            device->speaker_angles[5] = M_PI/180.0f *  -90.0f;
+            device->speaker_angles[6] = M_PI/180.0f *   90.0f;
+            device->speaker_angles[7] = 9999.0f;
+            device->speaker_num[0] = 4; /* Rear left */
+            device->speaker_num[1] = 0; /* Front left */
+            device->speaker_num[2] = 2; /* Front centre */
+            device->speaker_num[3] = 1; /* Front right */
+            device->speaker_num[4] = 5; /* Rear right */
+            device->speaker_num[5] = 6; /* Side left */
+            device->speaker_num[6] = 7; /* Side right */
+            device->speaker_num[7] = 3; /* LFE */
+            device->num_speakers = 8;
+            device->lfe_channel = 3;
+        break;
+
         default:
             WARN("unknown speaker_config %lu\n", device->speaker_config);
     }
diff --git a/dlls/dsound/dsound_private.h b/dlls/dsound/dsound_private.h
index c7917304d80a..75279dacf87d 100644
--- a/dlls/dsound/dsound_private.h
+++ b/dlls/dsound/dsound_private.h
@@ -32,7 +32,7 @@
 
 #include "wine/list.h"
 
-#define DS_MAX_CHANNELS 6
+#define DS_MAX_CHANNELS 8
 
 extern int ds_hel_buflen;
 
diff --git a/dlls/dsound/fir.h b/dlls/dsound/fir.h
index c03d0b9f2370..45ad65d73981 100644
--- a/dlls/dsound/fir.h
+++ b/dlls/dsound/fir.h
@@ -86,7 +86,9 @@ int main()
     fprintf(stderr, "q %f\n", (double)output.q);
     fprintf(stderr, "status %s\n", get_pm_status_str(output.status));
 
+    printf("static const int fir_width_shift = %d;\n", fir_width_shift);
     printf("static const int fir_width = %d;\n", fir_width);
+    printf("static const int fir_step_shift = %d;\n", fir_step_shift);
     printf("static const int fir_step = %d;\n", fir_step);
     printf("static const float fir[] = {");
     // Print the FIR array with an additional row at the end. This simplifies
@@ -112,7 +114,9 @@ int main()
     printf("};\n");
 }
 */
+static const int fir_width_shift = 6;
 static const int fir_width = 64;
+static const int fir_step_shift = 7;
 static const int fir_step = 128;
 static const float fir[] = {
      0.0000000000e+00, -2.4830013102e-06,  1.9318705150e-06,  2.6614854151e-06,
diff --git a/dlls/dsound/mixer.c b/dlls/dsound/mixer.c
index b4032f5a6f03..45e37c5bcb1a 100644
--- a/dlls/dsound/mixer.c
+++ b/dlls/dsound/mixer.c
@@ -42,6 +42,9 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(dsound);
 
+#define FREQ_ADJUST_SHIFT 32
+#define FIXED_0_32_TO_FLOAT(x) ((int)((x) >> 1) * (1.0f / (1ll << 31)))
+
 void DSOUND_RecalcVolPan(PDSVOLUMEPAN volpan)
 {
 	double temp;
@@ -312,19 +315,41 @@ static UINT cp_fields_noresample(IDirectSoundBufferImpl *dsb, UINT count)
  * Note that this function will overwrite up to fir_width - 1 frames before and
  * after output[].
  */
-static void downsample(LONG64 freq_adjust_num, LONG64 freq_adjust_den, LONG64 freq_acc_start,
-        float firgain, UINT required_input, float *input, float *output)
+static void downsample(DWORD freq_adjust_den, DWORD freq_acc_start, float firgain,
+        UINT required_input, float *input, float *output)
 {
+    /* Both opos_num and rem are calculated in an incremental fashion,
+     * independently of each other. This improves performance a bit, presumably
+     * because it allows the CPU to do the calculation in parallel.
+     *
+     * However, the value of rem must still be kept in perfect sync with the
+     * lower part of opos_num. Otherwise, even a small divergence can cause them
+     * to wrap around on different iterations of the outer loop, which will
+     * produce artifacts.
+     *
+     * To prevent this, clear the lower bits of opos_num and opos_num_step so
+     * that rem can always represent the calculated value exactly. As rem is
+     * always less than 2, its exponent is less than or equal to zero. This
+     * means that in the worst case, rem has the same number of fractional bits
+     * as the significand, which is 23 for a single-precision floating point.
+     *
+     * Clearing the bits is safe as it has the same effect as rounding up the
+     * resampling ratio and the subsample position and doesn't affect the
+     * initial opos value. */
+    LONG64 opos_num_mask = ~0ull << (FREQ_ADJUST_SHIFT - 23 - fir_step_shift);
+    LONG64 opos_num = (freq_adjust_den - freq_acc_start + (1ll << FREQ_ADJUST_SHIFT) - 1) & opos_num_mask;
+    DWORD opos_num_step = freq_adjust_den & (DWORD)opos_num_mask;
+
+    /* Use XOR to invert the lower part of opos_num so that the lower bits
+     * remain cleared. */
+    float rem = FIXED_0_32_TO_FLOAT(((DWORD)opos_num ^ (DWORD)opos_num_mask) << fir_step_shift);
+    float rem_step = FIXED_0_32_TO_FLOAT(-opos_num_step << fir_step_shift);
     int j;
 
     for (j = 0; j < required_input; ++j) {
-        LONG64 opos_num = freq_adjust_den - freq_acc_start + j * freq_adjust_den + freq_adjust_num - 1;
         /* opos is in the range [-(fir_width - 1), count) */
-        int opos = opos_num / freq_adjust_num - fir_width;
-
-        UINT idx_num = (freq_adjust_num - 1 - opos_num % freq_adjust_num) * fir_step;
-        UINT idx = idx_num / freq_adjust_num * fir_width;
-        float rem = idx_num % freq_adjust_num / (float)freq_adjust_num;
+        int opos = (int)(opos_num >> FREQ_ADJUST_SHIFT) - fir_width;
+        UINT idx = ~(DWORD)opos_num >> (FREQ_ADJUST_SHIFT - fir_step_shift) << fir_width_shift;
 
         float input_value = input[j] * firgain;
         float input_value0 = (1.0f - rem) * input_value;
@@ -333,21 +358,46 @@ static void downsample(LONG64 freq_adjust_num, LONG64 freq_adjust_den, LONG64 fr
         int i;
         for (i = 0; i < fir_width; ++i)
             output[opos + i] += fir[idx + i] * input_value0 + fir[idx + fir_width + i] * input_value1;
+
+        rem += rem_step;
+        rem -= rem >= 1.0f ? 1.0f : 0.0f;
+
+        opos_num += opos_num_step;
     }
 }
 
-static void upsample(LONG64 freq_adjust_num, LONG64 freq_adjust_den, LONG64 freq_acc_start,
-        UINT count, float *input, float *output)
+static void upsample(DWORD freq_adjust_num, DWORD freq_acc_start, UINT count, float *input,
+        float *output)
 {
+    /* Both ipos_num and rem_inv are calculated in an incremental fashion,
+     * independently of each other. This improves performance a bit, presumably
+     * because it allows the CPU to do the calculation in parallel.
+     *
+     * However, the value of rem_inv must still be kept in perfect sync with the
+     * lower part of ipos_num. Otherwise, even a small divergence can cause them
+     * to wrap around on different iterations of the outer loop, which will
+     * produce artifacts.
+     *
+     * To prevent this, clear the lower bits of ipos_num and ipos_num_step so
+     * that rem_inv can always represent the calculated value exactly. As
+     * rem_inv is always less than 2, its exponent is less than or equal to
+     * zero. This means that in the worst case, rem_inv has the same number of
+     * fractional bits as the significand, which is 23 for a single-precision
+     * floating point.
+     *
+     * Clearing the bits is safe as it has the same effect as rounding down the
+     * resampling ratio and the subsample position. */
+    DWORD ipos_num_mask = ~0u << (FREQ_ADJUST_SHIFT - 23 - fir_step_shift);
+    LONG64 ipos_num = freq_acc_start & ipos_num_mask;
+    DWORD ipos_num_step = freq_adjust_num & ipos_num_mask;
+
+    float rem_inv = FIXED_0_32_TO_FLOAT((DWORD)ipos_num << fir_step_shift);
+    float rem_inv_step = FIXED_0_32_TO_FLOAT(ipos_num_step << fir_step_shift);
     UINT i;
 
     for(i = 0; i < count; ++i) {
-        LONG64 ipos_num = freq_acc_start + i * freq_adjust_num;
-        UINT ipos = ipos_num / freq_adjust_den;
-
-        UINT idx_num = ipos_num % freq_adjust_den * fir_step;
-        UINT idx = (fir_step - 1 - idx_num / freq_adjust_den) * fir_width;
-        float rem_inv = idx_num % freq_adjust_den / (float)freq_adjust_den;
+        UINT ipos = ipos_num >> FREQ_ADJUST_SHIFT;
+        UINT idx = ~(DWORD)ipos_num >> (FREQ_ADJUST_SHIFT - fir_step_shift) << fir_width_shift;
         float rem = 1.0f - rem_inv;
 
         int j;
@@ -357,6 +407,11 @@ static void upsample(LONG64 freq_adjust_num, LONG64 freq_adjust_den, LONG64 freq
         for (j = 0; j < fir_width; j++)
             sum += (fir[idx + j] * rem_inv + fir[idx + j + fir_width] * rem) * cache[j];
         output[i] = sum;
+
+        rem_inv += rem_inv_step;
+        rem_inv -= rem_inv >= 1.0f ? 1.0f : 0.0f;
+
+        ipos_num += ipos_num_step;
     }
 }
 
@@ -368,11 +423,26 @@ static void resample(LONG64 freq_adjust_num, LONG64 freq_adjust_den, LONG64 freq
         float firgain, UINT required_input, UINT count, float *input, float *output)
 {
     if (freq_adjust_num > freq_adjust_den) {
+        /* Take a reciprocal of the resampling ratio and convert it to a 0.32
+         * fixed point. Round down to prevent output buffer overflow. */
+        DWORD freq_adjust_fixed_den = (freq_adjust_den << FREQ_ADJUST_SHIFT) / freq_adjust_num;
+        /* Convert the subsample position to a 0.32 fixed point. Round up to
+         * prevent output buffer overflow. */
+        DWORD freq_acc_fixed_start = (freq_acc_start * freq_adjust_fixed_den + freq_adjust_den - 1)
+                / freq_adjust_den;
+
         memset(output, 0, count * sizeof(float));
-        downsample(freq_adjust_num, freq_adjust_den, freq_acc_start, firgain, required_input,
-                input, output);
+        downsample(freq_adjust_fixed_den, freq_acc_fixed_start, firgain, required_input, input,
+                output);
     } else {
-        upsample(freq_adjust_num, freq_adjust_den, freq_acc_start, count, input, output);
+        /* Convert the resampling ratio to a 0.32 fixed point. Round down to
+         * prevent input buffer overflow. */
+        DWORD freq_adjust_fixed_num = (freq_adjust_num << FREQ_ADJUST_SHIFT) / freq_adjust_den;
+        /* Convert the subsample position to a 0.32 fixed point. Round down to
+         * prevent input buffer overflow. */
+        DWORD freq_acc_fixed_start = (freq_acc_start << FREQ_ADJUST_SHIFT) / freq_adjust_den;
+
+        upsample(freq_adjust_fixed_num, freq_acc_fixed_start, count, input, output);
     }
 }
 
diff --git a/dlls/dsound/primary.c b/dlls/dsound/primary.c
index 7ed0dc755e3b..e180dbaeacd4 100644
--- a/dlls/dsound/primary.c
+++ b/dlls/dsound/primary.c
@@ -52,6 +52,12 @@ static DWORD speaker_config_to_channel_mask(DWORD speaker_config)
 
         case DSSPEAKER_5POINT1_BACK:
             return SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT;
+
+        case DSSPEAKER_7POINT1_SURROUND:
+            return KSAUDIO_SPEAKER_5POINT1 | SPEAKER_SIDE_LEFT | SPEAKER_SIDE_RIGHT;
+
+        case DSSPEAKER_7POINT1_WIDE:
+            return KSAUDIO_SPEAKER_5POINT1 | SPEAKER_FRONT_LEFT_OF_CENTER | SPEAKER_FRONT_RIGHT_OF_CENTER;
     }
 
     WARN("unknown speaker_config %lu\n", speaker_config);
@@ -93,7 +99,11 @@ static DWORD DSOUND_FindSpeakerConfig(IMMDevice *mmdevice, int channels)
     PropVariantClear(&pv);
     IPropertyStore_Release(store);
 
-    if ((channels >= 6 || channels == 0) && (phys_speakers & KSAUDIO_SPEAKER_5POINT1) == KSAUDIO_SPEAKER_5POINT1)
+    if ((channels >= 8 || channels == 0) && (phys_speakers & KSAUDIO_SPEAKER_7POINT1_SURROUND) == KSAUDIO_SPEAKER_7POINT1_SURROUND)
+        return DSSPEAKER_7POINT1_SURROUND;
+    else if ((channels >= 8 || channels == 0) && (phys_speakers & KSAUDIO_SPEAKER_7POINT1) == KSAUDIO_SPEAKER_7POINT1)
+        return DSSPEAKER_7POINT1_WIDE;
+    else if ((channels >= 6 || channels == 0) && (phys_speakers & KSAUDIO_SPEAKER_5POINT1) == KSAUDIO_SPEAKER_5POINT1)
         return DSSPEAKER_5POINT1_BACK;
     else if ((channels >= 6 || channels == 0) && (phys_speakers & KSAUDIO_SPEAKER_5POINT1_SURROUND) == KSAUDIO_SPEAKER_5POINT1_SURROUND)
         return DSSPEAKER_5POINT1_SURROUND;
diff --git a/dlls/gdiplus/gdiplus_private.h b/dlls/gdiplus/gdiplus_private.h
index 9d0a166fdebc..cc5f823214b5 100644
--- a/dlls/gdiplus/gdiplus_private.h
+++ b/dlls/gdiplus/gdiplus_private.h
@@ -52,6 +52,20 @@
 #define PIXELFORMATBPP(x) ((x) ? ((x) >> 8) & 255 : 24)
 
 
+struct span
+{
+    /* Represents a horizontal span between two scanline intersections */
+    int x[2];
+    int y;
+};
+
+struct span_list
+{
+    struct span *spans;
+    size_t capacity;
+    size_t length;
+};
+
 COLORREF ARGB2COLORREF(ARGB color);
 HBITMAP ARGB2BMP(ARGB color);
 extern INT arc2polybezier(GpPointF * points, REAL x1, REAL y1, REAL x2, REAL y2,
@@ -153,6 +167,8 @@ extern GpStatus get_region_hrgn(struct region_element *element, const RECT *boun
 
 extern GpStatus get_hatch_data(GpHatchStyle hatchstyle, const unsigned char **result);
 
+extern GpStatus region_element_to_spans(const struct region_element *element, const RECT *bounds, struct span_list *spans);
+
 static inline INT gdip_round(REAL x)
 {
     return (INT) floorf(x + 0.5);
diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c
index 2419eea94db2..b278bfd1d944 100644
--- a/dlls/gdiplus/graphics.c
+++ b/dlls/gdiplus/graphics.c
@@ -4544,6 +4544,35 @@ end:
     return retval;
 }
 
+static void bitmap_scanline_span_fill(GpBitmap *dst_bitmap, const DWORD *src_row, int row_x,
+    int start_x, int end_x, int y, CompositingMode comp_mode)
+{
+    int x;
+
+    for (x = start_x; x < end_x; x++)
+    {
+        ARGB dst_color, src_color;
+
+        src_color = src_row[x - row_x];
+
+        if (comp_mode == CompositingModeSourceCopy)
+        {
+            if (!(src_color & 0xff000000))
+                GdipBitmapSetPixel(dst_bitmap, x, y, 0);
+            else
+                GdipBitmapSetPixel(dst_bitmap, x, y, src_color);
+        }
+        else
+        {
+            if (!(src_color & 0xff000000))
+                continue;
+
+            GdipBitmapGetPixel(dst_bitmap, x, y, &dst_color);
+            GdipBitmapSetPixel(dst_bitmap, x, y, color_over(dst_color, src_color));
+        }
+    }
+}
+
 static GpStatus SOFTWARE_GdipFillPath(GpGraphics *graphics, GpBrush *brush, GpPath *path)
 {
     GpStatus stat;
@@ -4795,7 +4824,7 @@ GpStatus WINGDIPAPI GdipFillRectanglesI(GpGraphics *graphics, GpBrush *brush, GD
     return ret;
 }
 
-static GpStatus get_clipped_region_hrgn(GpGraphics* graphics, GpRegion* region, HRGN *hrgn)
+static GpStatus get_clipped_device_region(GpGraphics* graphics, GpRegion* region, GpRegion** clipped_region)
 {
     GpStatus status;
     GpRegion *tmp_region, *device_region;
@@ -4860,7 +4889,24 @@ static GpStatus get_clipped_region_hrgn(GpGraphics* graphics, GpRegion* region,
         }
 
         if (status == Ok)
-            status = GdipGetRegionHRgn(device_region, NULL, hrgn);
+            *clipped_region = device_region;
+        else
+            GdipDeleteRegion(device_region);
+    }
+
+    return status;
+}
+
+static GpStatus get_clipped_region_hrgn(GpGraphics* graphics, GpRegion* region, HRGN *hrgn)
+{
+    GpStatus status;
+    GpRegion *device_region;
+
+    status = get_clipped_device_region(graphics, region, &device_region);
+
+    if (status == Ok)
+    {
+        status = GdipGetRegionHRgn(device_region, NULL, hrgn);
 
         GdipDeleteRegion(device_region);
     }
@@ -4916,13 +4962,50 @@ end:
     return status;
 }
 
+static GpStatus alpha_blend_pixels_gpregion(GpGraphics *graphics, INT dst_x, INT dst_y,
+    const BYTE *src, INT src_width, INT src_height, INT src_stride, GpRegion* region)
+{
+    struct span_list spans = {0};
+    RECT bounds;
+    GpStatus stat;
+
+    bounds.left = dst_x;
+    bounds.top = dst_y;
+    bounds.right = dst_x + src_width;
+    bounds.bottom = dst_y + src_height;
+    stat = region_element_to_spans(&region->node, &bounds, &spans);
+
+    if (stat == Ok)
+    {
+        GpBitmap *dst_bitmap = (GpBitmap*)graphics->image;
+        CompositingMode comp_mode = graphics->compmode;
+        size_t i;
+
+        for (i = 0; i < spans.length; i++)
+        {
+            struct span *span = &spans.spans[i];
+            const BYTE *row;
+
+            assert(span->y >= dst_y);
+            assert(span->y - dst_y < src_height);
+
+            row = src + (span->y - dst_y) * src_stride;
+            bitmap_scanline_span_fill(dst_bitmap, (const DWORD *)row, dst_x, span->x[0], span->x[1], span->y, comp_mode);
+        }
+    }
+
+    free(spans.spans);
+
+    return stat;
+}
+
 static GpStatus SOFTWARE_GdipFillRegion(GpGraphics *graphics, GpBrush *brush,
     GpRegion* region)
 {
     GpStatus stat;
     DWORD *pixel_data;
-    HRGN hregion;
-    RECT bound_rect;
+    HRGN hregion = NULL;
+    GpRegion* device_region = NULL;
     GpRect gp_bound_rect;
 
     if (!brush_can_fill_pixels(brush))
@@ -4931,22 +5014,46 @@ static GpStatus SOFTWARE_GdipFillRegion(GpGraphics *graphics, GpBrush *brush,
     stat = gdi_transform_acquire(graphics);
 
     if (stat == Ok)
-        stat = get_clipped_region_hrgn(graphics, region, &hregion);
-
-    if (stat == Ok && GetRgnBox(hregion, &bound_rect) == NULLREGION)
     {
-        DeleteObject(hregion);
-        gdi_transform_release(graphics);
-        return Ok;
+        if (graphics->image && graphics->image->type == ImageTypeBitmap)
+        {
+            stat = get_clipped_device_region(graphics, region, &device_region);
+
+            if (stat == Ok)
+                stat = GdipGetRegionBoundsI(device_region, graphics, &gp_bound_rect);
+
+            if (stat == Ok && gp_bound_rect.Width == 0 && gp_bound_rect.Height == 0)
+            {
+                GdipDeleteRegion(device_region);
+                gdi_transform_release(graphics);
+                return Ok;
+            }
+        }
+        else
+        {
+            RECT bound_rect;
+
+            stat = get_clipped_region_hrgn(graphics, region, &hregion);
+
+            if (stat == Ok && GetRgnBox(hregion, &bound_rect) == NULLREGION)
+            {
+                DeleteObject(hregion);
+                gdi_transform_release(graphics);
+                return Ok;
+            }
+
+            if (stat == Ok)
+            {
+                gp_bound_rect.X = bound_rect.left;
+                gp_bound_rect.Y = bound_rect.top;
+                gp_bound_rect.Width = bound_rect.right - bound_rect.left;
+                gp_bound_rect.Height = bound_rect.bottom - bound_rect.top;
+            }
+        }
     }
 
     if (stat == Ok)
     {
-        gp_bound_rect.X = bound_rect.left;
-        gp_bound_rect.Y = bound_rect.top;
-        gp_bound_rect.Width = bound_rect.right - bound_rect.left;
-        gp_bound_rect.Height = bound_rect.bottom - bound_rect.top;
-
         pixel_data = calloc(gp_bound_rect.Width * gp_bound_rect.Height, sizeof(*pixel_data));
         if (!pixel_data)
             stat = OutOfMemory;
@@ -4957,10 +5064,17 @@ static GpStatus SOFTWARE_GdipFillRegion(GpGraphics *graphics, GpBrush *brush,
                 &gp_bound_rect, gp_bound_rect.Width);
 
             if (stat == Ok)
-                stat = alpha_blend_pixels_hrgn(graphics, gp_bound_rect.X,
-                    gp_bound_rect.Y, (BYTE*)pixel_data, gp_bound_rect.Width,
-                    gp_bound_rect.Height, gp_bound_rect.Width * 4, hregion,
-                    PixelFormat32bppARGB);
+            {
+                if (hregion)
+                    stat = alpha_blend_pixels_hrgn(graphics, gp_bound_rect.X,
+                        gp_bound_rect.Y, (BYTE*)pixel_data, gp_bound_rect.Width,
+                        gp_bound_rect.Height, gp_bound_rect.Width * 4, hregion,
+                        PixelFormat32bppARGB);
+                else
+                    stat = alpha_blend_pixels_gpregion(graphics, gp_bound_rect.X,
+                        gp_bound_rect.Y, (BYTE*)pixel_data, gp_bound_rect.Width,
+                        gp_bound_rect.Height, gp_bound_rect.Width * 4, device_region);
+            }
 
             free(pixel_data);
         }
@@ -4968,6 +5082,7 @@ static GpStatus SOFTWARE_GdipFillRegion(GpGraphics *graphics, GpBrush *brush,
         DeleteObject(hregion);
     }
 
+    GdipDeleteRegion(device_region);
     gdi_transform_release(graphics);
 
     return stat;
diff --git a/dlls/gdiplus/image.c b/dlls/gdiplus/image.c
index d8a63a1d39af..68eaa1771633 100644
--- a/dlls/gdiplus/image.c
+++ b/dlls/gdiplus/image.c
@@ -1468,29 +1468,73 @@ GpStatus WINGDIPAPI GdipCreateBitmapFromGdiDib(GDIPCONST BITMAPINFO* info,
                                                VOID *bits, GpBitmap **bitmap)
 {
     DWORD height, stride;
-    HBITMAP hbm;
-    void *bmbits;
-    GpStatus status;
+    PixelFormat format;
+    BYTE *scan0;
 
     TRACE("(%p, %p, %p)\n", info, bits, bitmap);
 
     if (!info || !bits || !bitmap)
         return InvalidParameter;
 
-    hbm = CreateDIBSection(0, info, DIB_RGB_COLORS, &bmbits, NULL, 0);
-    if (!hbm)
+    if (info->bmiHeader.biSize < sizeof(BITMAPINFOHEADER))
         return InvalidParameter;
 
     height = abs(info->bmiHeader.biHeight);
     stride = ((info->bmiHeader.biWidth * info->bmiHeader.biBitCount + 31) >> 3) & ~3;
-    TRACE("height %lu, stride %lu, image size %lu\n", height, stride, height * stride);
+    scan0 = bits;
 
-    memcpy(bmbits, bits, height * stride);
+    if (info->bmiHeader.biHeight > 0)
+    {
+        scan0 = scan0 + (height - 1) * stride;
+        stride = -stride;
+    }
 
-    status = GdipCreateBitmapFromHBITMAP(hbm, NULL, bitmap);
-    DeleteObject(hbm);
+    switch (info->bmiHeader.biBitCount)
+    {
+        case 1:
+            format = PixelFormat1bppIndexed;
+            break;
+        case 4:
+            format = PixelFormat4bppIndexed;
+            break;
+        case 8:
+            format = PixelFormat8bppIndexed;
+            break;
+        case 16:
+        {
+            if (info->bmiHeader.biCompression == BI_RGB)
+            {
+                format = PixelFormat16bppRGB555;
+                break;
+            }
+            if (info->bmiHeader.biCompression == BI_BITFIELDS && info->bmiHeader.biSize >= FIELD_OFFSET(BITMAPV4HEADER, bV4AlphaMask))
+            {
+                const BITMAPV4HEADER *header = (const BITMAPV4HEADER*)info;
+                if (header->bV4RedMask == 0x7c00 && header->bV4GreenMask == 0x3e0 && header->bV4BlueMask == 0x1f)
+                {
+                    format = PixelFormat16bppRGB555;
+                    break;
+                }
+                if (header->bV4RedMask == 0xf800 && header->bV4GreenMask == 0x7e0 && header->bV4BlueMask == 0x1f)
+                {
+                    format = PixelFormat16bppRGB565;
+                    break;
+                }
+            }
+            return InvalidParameter;
+        }
+        case 24:
+            format = PixelFormat24bppRGB;
+            break;
+        case 32:
+            format = PixelFormat32bppRGB;
+            break;
+        default:
+            FIXME("don't know how to handle %d bpp\n", info->bmiHeader.biBitCount);
+            return InvalidParameter;
+    }
 
-    return status;
+    return GdipCreateBitmapFromScan0(info->bmiHeader.biWidth, height, stride, format, scan0, bitmap);
 }
 
 /* FIXME: no icm */
@@ -3832,15 +3876,11 @@ static GpStatus decode_frame_wic(IWICBitmapDecoder *decoder, BOOL force_conversi
                 if (status == Ok) /* locked bitmap */
                 {
                     wrc.X = 0;
+                    wrc.Y = 0;
                     wrc.Width = width;
-                    wrc.Height = 1;
-                    for (i=0; i<height; i++)
-                    {
-                        wrc.Y = i;
-                        hr = IWICBitmapSource_CopyPixels(source, &wrc, abs(lockeddata.Stride),
-                            abs(lockeddata.Stride), (BYTE*)lockeddata.Scan0+lockeddata.Stride*i);
-                        if (FAILED(hr)) break;
-                    }
+                    wrc.Height = height;
+                    hr = IWICBitmapSource_CopyPixels(source, &wrc, lockeddata.Stride,
+                        lockeddata.Stride * height, (BYTE*)lockeddata.Scan0);
 
                     GdipBitmapUnlockBits(bitmap, &lockeddata);
                 }
diff --git a/dlls/gdiplus/region.c b/dlls/gdiplus/region.c
index c5b93e1ffa3e..e430308685b5 100644
--- a/dlls/gdiplus/region.c
+++ b/dlls/gdiplus/region.c
@@ -1003,6 +1003,16 @@ GpStatus WINGDIPAPI GdipGetRegionDataSize(GpRegion *region, UINT *needed)
     return Ok;
 }
 
+static size_t grow_capacity_geometric(size_t capacity, size_t max_capacity, size_t count)
+{
+    size_t new_capacity = max(4, capacity);
+    while (new_capacity < count && new_capacity <= max_capacity / 2)
+        new_capacity *= 2;
+    if (new_capacity < count)
+        return max_capacity;
+    return new_capacity;
+}
+
 static GpStatus edge_list_reserve(struct edge_list *edges, size_t count)
 {
     size_t new_capacity, max_capacity;
@@ -1015,11 +1025,7 @@ static GpStatus edge_list_reserve(struct edge_list *edges, size_t count)
     if (count > max_capacity)
         return OutOfMemory;
 
-    new_capacity = max(4, edges->capacity);
-    while (new_capacity < count && new_capacity <= max_capacity / 2)
-        new_capacity *= 2;
-    if (new_capacity < count)
-        new_capacity = max_capacity;
+    new_capacity = grow_capacity_geometric(edges->capacity, max_capacity, count);
 
     new_edges = realloc(edges->edges, new_capacity * sizeof(edges->edges[0]));
     if (!new_edges)
@@ -1038,6 +1044,14 @@ static inline INT rgn_round(REAL x)
     return (INT) ceilf(x - RGN_ROUND_OFS);
 }
 
+static inline void rect_round_from_gp_rect_f(RECT *rc, const GpRectF *rect)
+{
+    rc->left = rgn_round(rect->X);
+    rc->top = rgn_round(rect->Y);
+    rc->right = rgn_round(rect->X + rect->Width);
+    rc->bottom = rgn_round(rect->Y + rect->Height);
+}
+
 static GpStatus line_to_edge_list(GpPointF p1, GpPointF p2, const RECT *bounds, struct edge_list *edges)
 {
     GpStatus stat = Ok;
@@ -2206,3 +2220,293 @@ GpStatus WINGDIPAPI GdipGetRegionScans(GpRegion *region, GpRectF *scans, INT *co
 
     return Ok;
 }
+
+static GpStatus span_list_reserve(struct span_list *spans, size_t count)
+{
+    size_t new_capacity, max_capacity;
+    struct span *new_spans;
+
+    if (count <= spans->capacity)
+        return Ok;
+
+    max_capacity = ~(SIZE_T)0 / sizeof(spans->spans[0]);
+    if (count > max_capacity)
+        return OutOfMemory;
+
+    new_capacity = grow_capacity_geometric(spans->capacity, max_capacity, count);
+
+    new_spans = realloc(spans->spans, new_capacity * sizeof(spans->spans[0]));
+    if (!new_spans)
+        return OutOfMemory;
+
+    spans->spans = new_spans;
+    spans->capacity = new_capacity;
+
+    return Ok;
+}
+
+static GpStatus edge_list_to_spans_alternate(struct edge_list *edges, struct span_list *spans)
+{
+    GpStatus stat;
+    size_t i;
+
+    stat = span_list_reserve(spans, spans->length + edges->length / 2u);
+    if (stat != Ok)
+        return stat;
+
+    for (i = 0; i + 1 < edges->length; i += 2)
+    {
+        struct edge *edge = &edges->edges[i];
+        struct span *span;
+
+        assert(edge[0].y == edge[1].y);
+
+        span = &spans->spans[spans->length++];
+        span->x[0] = edge[0].x;
+        span->x[1] = edge[1].x;
+        span->y = edge[0].y;
+    }
+
+    return Ok;
+}
+
+static GpStatus edge_list_to_spans_winding(struct edge_list *edges, struct span_list *spans)
+{
+    int start_x = 0, winding_count = 0;
+    GpStatus stat = Ok;
+    size_t i;
+
+    for (i = 0; i < edges->length; i++)
+    {
+        struct edge *edge = &edges->edges[i];
+
+        if (winding_count && start_x < edge->x)
+        {
+            struct span *span;
+
+            stat = span_list_reserve(spans, spans->length + 1);
+            if (stat != Ok)
+                break;
+
+            span = &spans->spans[spans->length++];
+            span->x[0] = start_x;
+            span->x[1] = edge->x;
+            span->y = edge->y;
+        }
+
+        start_x = edge->x;
+        winding_count += edge->rising ? 1 : -1;
+    }
+
+    return stat;
+}
+
+static GpStatus rect_to_spans(const RECT *rc, struct span_list *spans)
+{
+    GpStatus stat;
+    LONG y;
+
+    stat = span_list_reserve(spans, spans->length + rc->bottom - rc->top);
+    if (stat != Ok)
+        return stat;
+
+    for (y = rc->top; y < rc->bottom; ++y)
+    {
+        struct span *span = &spans->spans[spans->length++];
+        span->x[0] = rc->left;
+        span->x[1] = rc->right;
+        span->y = y;
+    }
+
+    return Ok;
+}
+
+static BOOL bounds_intersect_region_element_rect(RECT *bounds, const struct region_element *element)
+{
+    switch (element->type)
+    {
+        case RegionDataInfiniteRect:
+            return TRUE;
+        case RegionDataRect:
+        {
+            RECT rc;
+            rect_round_from_gp_rect_f(&rc, &element->elementdata.rect);
+            IntersectRect(bounds, bounds, &rc);
+            return TRUE;
+        }
+        case CombineModeIntersect:
+            return bounds_intersect_region_element_rect(bounds, element->elementdata.combine.left)
+                && bounds_intersect_region_element_rect(bounds, element->elementdata.combine.right);
+        default:
+            break;
+    }
+
+    return FALSE;
+}
+
+static GpStatus combine_regions_to_spans(const struct region_element *left, const struct region_element *right,
+    DWORD type, const RECT *bound_rect, struct span_list *spans)
+{
+    RECT bounds = *bound_rect;
+    struct span_list spans_left = {0}, spans_right = {0};
+    size_t i_left = 0, i_right = 0;
+    const struct span *cur_left, *cur_right;
+    BOOL in_left, in_right, in_result;
+    int x, y, x1_left, x1_right, x1_min;
+    GpStatus stat;
+
+    if (type == CombineModeIntersect)
+    {
+        /* In intersect mode, where one side is a rect, it is sufficient to intersect
+         * it with the bounds and convert the other side to spans */
+        if (bounds_intersect_region_element_rect(&bounds, left))
+            return region_element_to_spans(right, &bounds, spans);
+        if (bounds_intersect_region_element_rect(&bounds, right))
+            return region_element_to_spans(left, &bounds, spans);
+    }
+
+    stat = region_element_to_spans(left, &bounds, &spans_left);
+
+    if (stat == Ok)
+        stat = region_element_to_spans(right, &bounds, &spans_right);
+
+    cur_left = spans_left.length ? &spans_left.spans[0] : NULL;
+    cur_right = spans_right.length ? &spans_right.spans[0] : NULL;
+
+    for (y = bounds.top; stat == Ok && y < bounds.bottom; ++y)
+    {
+        for (x = bounds.left; stat == Ok && x < bounds.right; )
+        {
+            /* Update the current left and right spans */
+
+            if (cur_left && ((x >= cur_left->x[1] && y == cur_left->y) || y > cur_left->y))
+                cur_left = (++i_left < spans_left.length) ? &spans_left.spans[i_left] : NULL;
+
+            if (cur_right && ((x >= cur_right->x[1] && y == cur_right->y) || y > cur_right->y))
+                cur_right = (++i_right < spans_right.length) ? &spans_right.spans[i_right] : NULL;
+
+            assert(!cur_left || cur_left->y >= y);
+            assert(!cur_right || cur_right->y >= y);
+
+            /* For both left and right, if x lies within a span, set the next x to its end,
+             * otherwise set the next x to the start of the next span, or the right boundary,
+             * to support combine modes Exclude and Complement. */
+
+            if (cur_left && y == cur_left->y)
+            {
+                in_left = x >= cur_left->x[0];
+                x1_left = cur_left->x[in_left];
+            }
+            else
+            {
+                in_left = FALSE;
+                x1_left = bounds.right;
+            }
+
+            if (cur_right && y == cur_right->y)
+            {
+                in_right = x >= cur_right->x[0];
+                x1_right = cur_right->x[in_right];
+            }
+            else
+            {
+                in_right = FALSE;
+                x1_right = bounds.right;
+            }
+
+            x1_min = min(x1_left, x1_right);
+
+            switch (type)
+            {
+                case CombineModeIntersect:  in_result = in_left & in_right; break;
+                case CombineModeUnion:      in_result = in_left | in_right; break;
+                case CombineModeXor:        in_result = in_left ^ in_right; break;
+                case CombineModeExclude:    in_result = in_left & !in_right; break;
+                case CombineModeComplement: in_result = (!in_left) & in_right; break;
+                default: FIXME("Unhandled mode %lu.\n", type); in_result = FALSE; break;
+            }
+
+            if (in_result)
+            {
+                struct span *result;
+
+                stat = span_list_reserve(spans, spans->length + 1);
+                if (stat == Ok)
+                {
+                    result = &spans->spans[spans->length++];
+                    result->x[0] = x;
+                    result->x[1] = x1_min;
+                    result->y = y;
+                }
+            }
+
+            assert(x1_min > x);
+            x = x1_min;
+        }
+    }
+
+    free(spans_left.spans);
+    free(spans_right.spans);
+
+    return stat;
+}
+
+/* Objects in the region element may be modified */
+GpStatus region_element_to_spans(const struct region_element *element, const RECT *bounds, struct span_list *spans)
+{
+    GpStatus stat = Ok;
+
+    switch (element->type)
+    {
+        case RegionDataRect:
+        {
+            const GpRectF *rect = &element->elementdata.rect;
+            RECT rc;
+
+            rect_round_from_gp_rect_f(&rc, rect);
+
+            if (IntersectRect(&rc, &rc, bounds))
+                stat = rect_to_spans(&rc, spans);
+
+            break;
+        }
+
+        case RegionDataPath:
+        {
+            GpPath *path = element->elementdata.path;
+            struct edge_list edge_list = { 0 };
+
+            stat = GdipFlattenPath(path, NULL, FlatnessDefault);
+
+            if (stat == Ok)
+                stat = flat_path_to_edge_list(path, bounds, &edge_list);
+
+            if (stat == Ok)
+            {
+                qsort(edge_list.edges, edge_list.length, sizeof(edge_list.edges[0]), cmp_edges);
+
+                if (path->fill == FillModeWinding)
+                    stat = edge_list_to_spans_winding(&edge_list, spans);
+                else
+                    stat = edge_list_to_spans_alternate(&edge_list, spans);
+            }
+
+            free(edge_list.edges);
+            break;
+        }
+
+        case RegionDataEmptyRect:
+            break;
+
+        case RegionDataInfiniteRect:
+            stat = rect_to_spans(bounds, spans);
+            break;
+
+        default:
+            stat = combine_regions_to_spans(element->elementdata.combine.left, element->elementdata.combine.right,
+                element->type, bounds, spans);
+            break;
+    }
+
+    return stat;
+}
diff --git a/dlls/gdiplus/tests/brush.c b/dlls/gdiplus/tests/brush.c
index ad2712fae348..50ebda6aaa8a 100644
--- a/dlls/gdiplus/tests/brush.c
+++ b/dlls/gdiplus/tests/brush.c
@@ -202,12 +202,14 @@ static void test_getblend(void)
     status = GdipGetPathGradientBlend(NULL, NULL,  NULL,  1);
     expect(InvalidParameter, status);
 
-    blends[0] = (REAL)0xdeadbeef;
-    pos[0]    = (REAL)0xdeadbeef;
+    /* 12345.0f fits perfectly within the 24-bit mantissa of an IEEE 754 32-bit float,
+       avoiding x87 vs SSE rounding discrepancies */
+    blends[0] = 12345.0f;
+    pos[0]    = 12345.0f;
     status = GdipGetPathGradientBlend(brush, blends, pos, 1);
     expect(Ok, status);
     expectf(1.0, blends[0]);
-    expectf((REAL)0xdeadbeef, pos[0]);
+    expectf(12345.0f, pos[0]);
 
     GdipDeleteBrush((GpBrush*) brush);
 }
diff --git a/dlls/gdiplus/tests/image.c b/dlls/gdiplus/tests/image.c
index 0c8f24bd7688..7346ba948808 100644
--- a/dlls/gdiplus/tests/image.c
+++ b/dlls/gdiplus/tests/image.c
@@ -272,14 +272,45 @@ static void test_Scan0(void)
     ok( !bm, "expected null bitmap\n" );
 }
 
+#define check_bitmap_bits(bitmap, width, height, stride, format, scan0, todo_scan0) \
+    check_bitmap_bits_(bitmap, width, height, stride, format, scan0, todo_scan0, __FILE__, __LINE__);
+
+static void check_bitmap_bits_(GpBitmap *bitmap, UINT width, UINT height, int stride,
+    PixelFormat format, void* scan0, BOOL todo_scan0, const char* file, int line)
+{
+    GpStatus stat;
+    PixelFormat actual_format;
+    BitmapData lock;
+
+    stat = GdipGetImagePixelFormat((GpImage*)bitmap, &actual_format);
+    ok_(file, line)(stat == Ok, "GdipGetImagePixelFormat failed, status=%i\n", stat);
+    ok_(file, line)(format == actual_format, "GdipGetImagePixelFormat returned format %x, expected %x\n", actual_format, format);
+
+    stat = GdipBitmapLockBits(bitmap, NULL, 0, actual_format, &lock);
+    ok_(file, line)(stat == Ok, "GdipBitmapLockBits failed, status=%i\n", stat);
+    ok_(file, line)(width == lock.Width, "BitmapData.Width == %d, expected %d\n", lock.Width, width);
+    ok_(file, line)(height == lock.Height, "BitmapData.Height == %d, expected %d\n", lock.Height, height);
+    ok_(file, line)(stride == lock.Stride, "BitmapData.Stride == %i, expected %i\n", lock.Stride, stride);
+    ok_(file, line)(format == lock.PixelFormat, "BitmapData.PixelFormat == %x, expected %x\n", lock.PixelFormat, format);
+    if (scan0)
+    {
+        ok_(file, line)(scan0 == lock.Scan0, "BitmapData.Scan0 == %p, expected %p\n", lock.Scan0, scan0);
+    }
+    ok_(file, line)(lock.Reserved == 0, "BitmapData.Reserved == %p, expected 0\n", (void*)lock.Reserved);
+
+    stat = GdipBitmapUnlockBits(bitmap, &lock);
+    ok_(file, line)(stat == Ok, "GdipBitmapUnlockBits failed, status=%i\n", stat);
+}
+
 static void test_FromGdiDib(void)
 {
     GpBitmap *bm;
     GpStatus stat;
-    BYTE buff[400];
-    BYTE rbmi[sizeof(BITMAPINFOHEADER)+256*sizeof(RGBQUAD)];
+    BYTE buff[600];
+    BYTE rbmi[sizeof(BITMAPV5HEADER)+256*sizeof(RGBQUAD)];
     BITMAPINFO *bmi = (BITMAPINFO*)rbmi;
-    PixelFormat format;
+    BITMAPV4HEADER *bm4h = (BITMAPV4HEADER*)rbmi;
+    BITMAPCOREINFO *bmci = (BITMAPCOREINFO*)rbmi;
 
     bm = NULL;
 
@@ -287,7 +318,7 @@ static void test_FromGdiDib(void)
 
     bmi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
     bmi->bmiHeader.biWidth = 10;
-    bmi->bmiHeader.biHeight = 10;
+    bmi->bmiHeader.biHeight = -10;
     bmi->bmiHeader.biPlanes = 1;
     bmi->bmiHeader.biBitCount = 32;
     bmi->bmiHeader.biCompression = BI_RGB;
@@ -306,22 +337,34 @@ static void test_FromGdiDib(void)
     ok(NULL != bm, "Expected bitmap to be initialized\n");
     if (stat == Ok)
     {
-        stat = GdipGetImagePixelFormat((GpImage*)bm, &format);
-        expect(Ok, stat);
-        expect(PixelFormat32bppRGB, format);
+        check_bitmap_bits(bm, 10, 10, 40, PixelFormat32bppRGB, buff, TRUE);
+
+        GdipDisposeImage((GpImage*)bm);
+    }
+
+    bmi->bmiHeader.biHeight = 10;
+
+    stat = GdipCreateBitmapFromGdiDib(bmi, buff, &bm);
+    expect(Ok, stat);
+    ok(NULL != bm, "Expected bitmap to be initialized\n");
+    if (stat == Ok)
+    {
+        check_bitmap_bits(bm, 10, 10, -40, PixelFormat32bppRGB, &buff[40*9], TRUE);
 
         GdipDisposeImage((GpImage*)bm);
     }
 
+    bmi->bmiHeader.biBitCount = 48;
+    stat = GdipCreateBitmapFromGdiDib(bmi, buff, &bm);
+    expect(InvalidParameter, stat);
+
     bmi->bmiHeader.biBitCount = 24;
     stat = GdipCreateBitmapFromGdiDib(bmi, buff, &bm);
     expect(Ok, stat);
     ok(NULL != bm, "Expected bitmap to be initialized\n");
     if (stat == Ok)
     {
-        stat = GdipGetImagePixelFormat((GpImage*)bm, &format);
-        expect(Ok, stat);
-        expect(PixelFormat24bppRGB, format);
+        check_bitmap_bits(bm, 10, 10, -32, PixelFormat24bppRGB, &buff[32*9], TRUE);
 
         GdipDisposeImage((GpImage*)bm);
     }
@@ -332,9 +375,7 @@ static void test_FromGdiDib(void)
     ok(NULL != bm, "Expected bitmap to be initialized\n");
     if (stat == Ok)
     {
-        stat = GdipGetImagePixelFormat((GpImage*)bm, &format);
-        expect(Ok, stat);
-        expect(PixelFormat16bppRGB555, format);
+        check_bitmap_bits(bm, 10, 10, -20, PixelFormat16bppRGB555, &buff[20*9], TRUE);
 
         GdipDisposeImage((GpImage*)bm);
     }
@@ -345,9 +386,7 @@ static void test_FromGdiDib(void)
     ok(NULL != bm, "Expected bitmap to be initialized\n");
     if (stat == Ok)
     {
-        stat = GdipGetImagePixelFormat((GpImage*)bm, &format);
-        expect(Ok, stat);
-        expect(PixelFormat8bppIndexed, format);
+        check_bitmap_bits(bm, 10, 10, -12, PixelFormat8bppIndexed, &buff[12*9], TRUE);
 
         GdipDisposeImage((GpImage*)bm);
     }
@@ -358,9 +397,7 @@ static void test_FromGdiDib(void)
     ok(NULL != bm, "Expected bitmap to be initialized\n");
     if (stat == Ok)
     {
-        stat = GdipGetImagePixelFormat((GpImage*)bm, &format);
-        expect(Ok, stat);
-        expect(PixelFormat4bppIndexed, format);
+        check_bitmap_bits(bm, 10, 10, -8, PixelFormat4bppIndexed, &buff[8*9], TRUE);
 
         GdipDisposeImage((GpImage*)bm);
     }
@@ -371,16 +408,81 @@ static void test_FromGdiDib(void)
     ok(NULL != bm, "Expected bitmap to be initialized\n");
     if (stat == Ok)
     {
-        stat = GdipGetImagePixelFormat((GpImage*)bm, &format);
-        expect(Ok, stat);
-        expect(PixelFormat1bppIndexed, format);
+        check_bitmap_bits(bm, 10, 10, -4, PixelFormat1bppIndexed, &buff[4*9], TRUE);
 
         GdipDisposeImage((GpImage*)bm);
     }
 
+    bmi->bmiHeader.biSize = sizeof(BITMAPV5HEADER);
+    stat = GdipCreateBitmapFromGdiDib(bmi, buff, &bm);
+    expect(Ok, stat);
+    ok(NULL != bm, "Expected bitmap to be initialized\n");
+    if (stat == Ok)
+    {
+        check_bitmap_bits(bm, 10, 10, -4, PixelFormat1bppIndexed, &buff[4*9], TRUE);
+
+        GdipDisposeImage((GpImage*)bm);
+    }
+
+    bmi->bmiHeader.biSize = sizeof(BITMAPV4HEADER);
+    stat = GdipCreateBitmapFromGdiDib(bmi, buff, &bm);
+    expect(Ok, stat);
+    ok(NULL != bm, "Expected bitmap to be initialized\n");
+    if (stat == Ok)
+    {
+        check_bitmap_bits(bm, 10, 10, -4, PixelFormat1bppIndexed, &buff[4*9], TRUE);
+
+        GdipDisposeImage((GpImage*)bm);
+    }
+
+#if 0
+    bmi->bmiHeader.biSize = sizeof(BITMAPV4HEADER)+4;
+    stat = GdipCreateBitmapFromGdiDib(bmi, buff, &bm);
+    expect(InvalidParameter, stat); // Native sometimes fails and sometimes succeeds
+    if (stat == Ok)
+        GdipDisposeImage((GpImage*)bm);
+#endif
+
+    bmi->bmiHeader.biSize = sizeof(BITMAPV4HEADER);
     bmi->bmiHeader.biBitCount = 0;
     stat = GdipCreateBitmapFromGdiDib(bmi, buff, &bm);
     expect(InvalidParameter, stat);
+
+    bm4h->bV4BitCount = 16;
+    bm4h->bV4V4Compression = BI_BITFIELDS;
+    bm4h->bV4RedMask = 0x7c00;
+    bm4h->bV4GreenMask = 0x3e0;
+    bm4h->bV4BlueMask = 0x1f;
+    stat = GdipCreateBitmapFromGdiDib(bmi, buff, &bm);
+    expect(Ok, stat);
+    ok(NULL != bm, "Expected bitmap to be initialized\n");
+    if (stat == Ok)
+    {
+        check_bitmap_bits(bm, 10, 10, -20, PixelFormat16bppRGB555, &buff[20*9], TRUE);
+
+        GdipDisposeImage((GpImage*)bm);
+    }
+
+    bm4h->bV4RedMask = 0xf800;
+    bm4h->bV4GreenMask = 0x7e0;
+    bm4h->bV4BlueMask = 0x1f;
+    stat = GdipCreateBitmapFromGdiDib(bmi, buff, &bm);
+    expect(Ok, stat);
+    ok(NULL != bm, "Expected bitmap to be initialized\n");
+    if (stat == Ok)
+    {
+        check_bitmap_bits(bm, 10, 10, -20, PixelFormat16bppRGB565, &buff[20*9], TRUE);
+
+        GdipDisposeImage((GpImage*)bm);
+    }
+
+    bmci->bmciHeader.bcSize = sizeof(BITMAPCOREHEADER);
+    bmci->bmciHeader.bcWidth = 10;
+    bmci->bmciHeader.bcHeight = 10;
+    bmci->bmciHeader.bcPlanes = 1;
+    bmci->bmciHeader.bcBitCount = 1;
+    stat = GdipCreateBitmapFromGdiDib(bmi, buff, &bm);
+    expect(InvalidParameter, stat);
 }
 
 static void test_GetImageDimension(void)
diff --git a/dlls/iertutil/main.c b/dlls/iertutil/main.c
index fd6dd3c93729..0ad7e38ddfb0 100644
--- a/dlls/iertutil/main.c
+++ b/dlls/iertutil/main.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2024 Zhiyi Zhang for CodeWeavers
+ * Copyright 2024-2026 Zhiyi Zhang for CodeWeavers
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -24,7 +24,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(iertutil);
 struct uri
 {
     IUriRuntimeClass IUriRuntimeClass_iface;
-    HSTRING raw_uri;
+    IUri *uri;
     LONG ref;
 };
 
@@ -68,7 +68,7 @@ static ULONG STDMETHODCALLTYPE uri_Release(IUriRuntimeClass *iface)
 
     if (!ref)
     {
-        WindowsDeleteString(impl->raw_uri);
+        IUri_Release(impl->uri);
         free(impl);
     }
 
@@ -95,60 +95,109 @@ static HRESULT STDMETHODCALLTYPE uri_GetTrustLevel(IUriRuntimeClass *iface, Trus
     return E_NOTIMPL;
 }
 
+static HRESULT uri_prop_to_hstring(IUri *uri, Uri_PROPERTY prop, HSTRING *out)
+{
+    BSTR bstr = NULL;
+    HRESULT hr;
+
+    hr = IUri_GetPropertyBSTR(uri, prop, &bstr, 0);
+    if (FAILED(hr))
+    {
+        *out = NULL;
+        return hr;
+    }
+
+    if (hr == S_FALSE || !SysStringLen(bstr))
+    {
+        SysFreeString(bstr);
+        *out = NULL;
+        return S_OK;
+    }
+
+    hr = WindowsCreateString(bstr, SysStringLen(bstr), out);
+    SysFreeString(bstr);
+    return hr;
+}
+
 static HRESULT STDMETHODCALLTYPE uri_AbsoluteUri(IUriRuntimeClass *iface, HSTRING *value)
 {
-    FIXME("iface %p, value %p semi-stub!\n", iface, value);
+    struct uri *impl = impl_from_IUriRuntimeClass(iface);
 
-    /* TODO: Parse the raw URI and reconstruct it from parts according to RFC 3986 or RFC 3987 */
-    return IUriRuntimeClass_get_RawUri(iface, value);
+    TRACE("iface %p, value %p.\n", iface, value);
+
+    return uri_prop_to_hstring(impl->uri, Uri_PROPERTY_ABSOLUTE_URI, value);
 }
 
 static HRESULT STDMETHODCALLTYPE uri_DisplayUri(IUriRuntimeClass *iface, HSTRING *value)
 {
-    FIXME("iface %p, value %p stub!\n", iface, value);
-    return E_NOTIMPL;
+    struct uri *impl = impl_from_IUriRuntimeClass(iface);
+
+    TRACE("iface %p, value %p.\n", iface, value);
+
+    return uri_prop_to_hstring(impl->uri, Uri_PROPERTY_DISPLAY_URI, value);
 }
 
 static HRESULT STDMETHODCALLTYPE uri_Domain(IUriRuntimeClass *iface, HSTRING *value)
 {
-    FIXME("iface %p, value %p stub!\n", iface, value);
-    return E_NOTIMPL;
+    struct uri *impl = impl_from_IUriRuntimeClass(iface);
+
+    TRACE("iface %p, value %p.\n", iface, value);
+
+    return uri_prop_to_hstring(impl->uri, Uri_PROPERTY_DOMAIN, value);
 }
 
 static HRESULT STDMETHODCALLTYPE uri_Extension(IUriRuntimeClass *iface, HSTRING *value)
 {
-    FIXME("iface %p, value %p stub!\n", iface, value);
-    return E_NOTIMPL;
+    struct uri *impl = impl_from_IUriRuntimeClass(iface);
+
+    TRACE("iface %p, value %p.\n", iface, value);
+
+    return uri_prop_to_hstring(impl->uri, Uri_PROPERTY_EXTENSION, value);
 }
 
 static HRESULT STDMETHODCALLTYPE uri_Fragment(IUriRuntimeClass *iface, HSTRING *value)
 {
-    FIXME("iface %p, value %p stub!\n", iface, value);
-    return E_NOTIMPL;
+    struct uri *impl = impl_from_IUriRuntimeClass(iface);
+
+    TRACE("iface %p, value %p.\n", iface, value);
+
+    return uri_prop_to_hstring(impl->uri, Uri_PROPERTY_FRAGMENT, value);
 }
 
 static HRESULT STDMETHODCALLTYPE uri_Host(IUriRuntimeClass *iface, HSTRING *value)
 {
-    FIXME("iface %p, value %p stub!\n", iface, value);
-    return E_NOTIMPL;
+    struct uri *impl = impl_from_IUriRuntimeClass(iface);
+
+    TRACE("iface %p, value %p.\n", iface, value);
+
+    return uri_prop_to_hstring(impl->uri, Uri_PROPERTY_HOST, value);
 }
 
 static HRESULT STDMETHODCALLTYPE uri_Password(IUriRuntimeClass *iface, HSTRING *value)
 {
-    FIXME("iface %p, value %p stub!\n", iface, value);
-    return E_NOTIMPL;
+    struct uri *impl = impl_from_IUriRuntimeClass(iface);
+
+    TRACE("iface %p, value %p.\n", iface, value);
+
+    return uri_prop_to_hstring(impl->uri, Uri_PROPERTY_PASSWORD, value);
 }
 
 static HRESULT STDMETHODCALLTYPE uri_Path(IUriRuntimeClass *iface, HSTRING *value)
 {
-    FIXME("iface %p, value %p stub!\n", iface, value);
-    return E_NOTIMPL;
+    struct uri *impl = impl_from_IUriRuntimeClass(iface);
+
+    TRACE("iface %p, value %p.\n", iface, value);
+
+    return uri_prop_to_hstring(impl->uri, Uri_PROPERTY_PATH, value);
 }
 
 static HRESULT STDMETHODCALLTYPE uri_Query(IUriRuntimeClass *iface, HSTRING *value)
 {
-    FIXME("iface %p, value %p stub!\n", iface, value);
-    return E_NOTIMPL;
+    struct uri *impl = impl_from_IUriRuntimeClass(iface);
+
+    TRACE("iface %p, value %p.\n", iface, value);
+
+    return uri_prop_to_hstring(impl->uri, Uri_PROPERTY_QUERY, value);
 }
 
 static HRESULT STDMETHODCALLTYPE uri_QueryParsed(IUriRuntimeClass *iface,
@@ -164,25 +213,43 @@ static HRESULT STDMETHODCALLTYPE uri_RawUri(IUriRuntimeClass *iface, HSTRING *va
 
     TRACE("iface %p, value %p.\n", iface, value);
 
-    return WindowsDuplicateString(impl->raw_uri, value);
+    return uri_prop_to_hstring(impl->uri, Uri_PROPERTY_RAW_URI, value);
 }
 
 static HRESULT STDMETHODCALLTYPE uri_SchemeName(IUriRuntimeClass *iface, HSTRING *value)
 {
-    FIXME("iface %p, value %p stub!\n", iface, value);
-    return E_NOTIMPL;
+    struct uri *impl = impl_from_IUriRuntimeClass(iface);
+
+    TRACE("iface %p, value %p.\n", iface, value);
+
+    return uri_prop_to_hstring(impl->uri, Uri_PROPERTY_SCHEME_NAME, value);
 }
 
 static HRESULT STDMETHODCALLTYPE uri_UserName(IUriRuntimeClass *iface, HSTRING *value)
 {
-    FIXME("iface %p, value %p stub!\n", iface, value);
-    return E_NOTIMPL;
+    struct uri *impl = impl_from_IUriRuntimeClass(iface);
+
+    TRACE("iface %p, value %p.\n", iface, value);
+
+    return uri_prop_to_hstring(impl->uri, Uri_PROPERTY_USER_NAME, value);
 }
 
 static HRESULT STDMETHODCALLTYPE uri_Port(IUriRuntimeClass *iface, INT32 *value)
 {
-    FIXME("iface %p, value %p stub!\n", iface, value);
-    return E_NOTIMPL;
+    struct uri *impl = impl_from_IUriRuntimeClass(iface);
+    DWORD port;
+    HRESULT hr;
+
+    TRACE("iface %p, value %p.\n", iface, value);
+
+    hr = IUri_GetPropertyDWORD(impl->uri, Uri_PROPERTY_PORT, &port, 0);
+    if (hr == S_OK)
+    {
+        *value = port;
+        return S_OK;
+    }
+
+    return S_FALSE;
 }
 
 static HRESULT STDMETHODCALLTYPE uri_Suspicious(IUriRuntimeClass *iface, boolean *value)
@@ -333,29 +400,39 @@ static const struct IActivationFactoryVtbl activation_factory_vtbl =
 
 DEFINE_IINSPECTABLE(uri_factory, IUriRuntimeClassFactory, struct iertutil, IActivationFactory_iface)
 
-static HRESULT STDMETHODCALLTYPE uri_factory_CreateUri(IUriRuntimeClassFactory *iface, HSTRING uri,
+static HRESULT STDMETHODCALLTYPE uri_factory_CreateUri(IUriRuntimeClassFactory *iface,
+                                                       HSTRING uri_string,
                                                        IUriRuntimeClass **instance)
 {
     const WCHAR *raw_buffer;
     struct uri *uri_impl;
+    HRESULT hr;
+    IUri *uri;
 
-    FIXME("iface %p, uri %s, instance %p semi-stub!\n", iface, debugstr_hstring(uri), instance);
+    TRACE("iface %p, uri_string %s, instance %p.\n", iface, debugstr_hstring(uri_string), instance);
 
-    if (!uri)
+    if (!uri_string)
         return E_POINTER;
 
+    raw_buffer = WindowsGetStringRawBuffer(uri_string, NULL);
+    hr = CreateUri(raw_buffer, Uri_CREATE_ALLOW_IMPLICIT_FILE_SCHEME | Uri_CREATE_NO_DECODE_EXTRA_INFO, 0, &uri);
+    if (FAILED(hr))
+    {
+        *instance = NULL;
+        return E_INVALIDARG;
+    }
+
     uri_impl = calloc(1, sizeof(*uri_impl));
     if (!uri_impl)
+    {
+        IUri_Release(uri);
         return E_OUTOFMEMORY;
+    }
 
     uri_impl->IUriRuntimeClass_iface.lpVtbl = &uri_vtbl;
+    uri_impl->uri = uri;
     uri_impl->ref = 1;
 
-    raw_buffer = WindowsGetStringRawBuffer(uri, NULL);
-    WindowsCreateString(raw_buffer, wcslen(raw_buffer), &uri_impl->raw_uri);
-
-    /* TODO: Parse the URI according to RFC 3986 and RFC 3987 */
-
     *instance = &uri_impl->IUriRuntimeClass_iface;
     return S_OK;
 }
diff --git a/dlls/iertutil/tests/iertutil.c b/dlls/iertutil/tests/iertutil.c
index 0f77b8a7f288..13d45654b421 100644
--- a/dlls/iertutil/tests/iertutil.c
+++ b/dlls/iertutil/tests/iertutil.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2024 Zhiyi Zhang for CodeWeavers
+ * Copyright 2024-2026 Zhiyi Zhang for CodeWeavers
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -96,15 +96,160 @@ static void test_IUriRuntimeClassFactory(void)
 
 static void test_IUriRuntimeClass(void)
 {
+    static const struct
+    {
+        const WCHAR *src;
+        const WCHAR *RawUri;
+        const WCHAR *AbsoluteUri;
+        const WCHAR *DisplayUri;
+        const WCHAR *Domain;
+        const WCHAR *Extension;
+        const WCHAR *Fragment;
+        const WCHAR *Host;
+        const WCHAR *Password;
+        const WCHAR *Path;
+        const WCHAR *Query;
+        const WCHAR *SchemeName;
+        const WCHAR *UserName;
+        INT32 Port;
+        BOOL invalid;
+    }
+    tests[] =
+    {
+        /* Invalid URIs */
+        {L"://example.com", .invalid = TRUE},
+        {L"//", .invalid = TRUE},
+        {L"//a", .invalid = TRUE},
+        {L"a", .invalid = TRUE},
+        {L"///a", .invalid = TRUE},
+        {L"http://www.host.com:port", .invalid = TRUE},
+        {L"http://example.com:+80/", .invalid = TRUE},
+        {L"http://example.com:-80/", .invalid = TRUE},
+        {L"http_s://example.com", .invalid = TRUE},
+        {L"/a/b/c/./../../g", .invalid = TRUE},
+        {L"mid/content=5/../6", .invalid = TRUE},
+        {L"#frag", .invalid = TRUE},
+        {L"http://example.com/a%2z", .invalid = TRUE},
+        {L"http://example.com/a%z", .invalid = TRUE},
+        {L"http://u:p?a@", .invalid = TRUE},
+        {L"http://[1]/", .invalid = TRUE},
+        {L"http://[fe80::1ff:fe23:4567:890a%eth0]/", .invalid = TRUE},
+        {L"http://[fe80::1ff:fe23:4567:890a%25eth0]/", .invalid = TRUE},
+        /* Valid URIs */
+        /* URI syntax tests */
+        {L"http:", L"http:", NULL, L"http:", NULL, NULL, NULL, NULL, NULL, NULL, NULL, L"http", NULL, 80},
+        {L"http:/", L"http:/", NULL, L"http:/", NULL, NULL, NULL, NULL, NULL, L"/", NULL, L"http", NULL, 80},
+        {L"http://u:p@", L"http://u:p@", L"http://u:p@/", L"http:///", NULL, NULL, NULL, NULL, L"p", L"/", NULL, L"http", L"u", 80},
+        {L"http://u:p;a@", L"http://u:p;a@", L"http://u:p;a@/", L"http:///", NULL, NULL, NULL, NULL, L"p;a", L"/", NULL, L"http", L"u", 80},
+        {L"http://u;a:p@", L"http://u;a:p@", L"http://u;a:p@/", L"http:///", NULL, NULL, NULL, NULL, L"p", L"/", NULL, L"http", L"u;a", 80},
+        {L"http://u:p:a@", L"http://u:p:a@", L"http://u:p:a@/", L"http:///", NULL, NULL, NULL, NULL, L"p:a", L"/", NULL, L"http", L"u", 80},
+        {L"http://example.com", L"http://example.com", L"http://example.com/", L"http://example.com/", L"example.com", NULL, NULL, L"example.com", NULL, L"/", NULL, L"http", NULL, 80},
+        {L"http://example.com/", L"http://example.com/", L"http://example.com/", L"http://example.com/", L"example.com", NULL, NULL, L"example.com", NULL, L"/", NULL, L"http", NULL, 80},
+        {L"http://example.com:/", L"http://example.com:/", L"http://example.com/", L"http://example.com/", L"example.com", NULL, NULL, L"example.com", NULL, L"/", NULL, L"http", NULL, 80},
+        {L"dummy://example.com:/", L"dummy://example.com:/", L"dummy://example.com:/", L"dummy://example.com:/", L"example.com:", NULL, NULL, L"example.com:", NULL, L"/", NULL, L"dummy", NULL, -1},
+        {L"http://example.com:80/", L"http://example.com:80/", L"http://example.com/", L"http://example.com/", L"example.com", NULL, NULL, L"example.com", NULL, L"/", NULL, L"http", NULL, 80},
+        {L"https://example.com:443/", L"https://example.com:443/", L"https://example.com/", L"https://example.com/", L"example.com", NULL, NULL, L"example.com", NULL, L"/", NULL, L"https", NULL, 443},
+        {L"http://example.com/data", L"http://example.com/data", L"http://example.com/data", L"http://example.com/data", L"example.com", NULL, NULL, L"example.com", NULL, L"/data", NULL, L"http", NULL, 80},
+        {L"http://example.com/data/", L"http://example.com/data/", L"http://example.com/data/", L"http://example.com/data/", L"example.com", NULL, NULL, L"example.com", NULL, L"/data/", NULL, L"http", NULL, 80},
+        {L"http://u:p@example.com/", L"http://u:p@example.com/", L"http://u:p@example.com/", L"http://example.com/", L"example.com", NULL, NULL, L"example.com", L"p", L"/", NULL, L"http", L"u", 80},
+        {L"http://u@example.com/", L"http://u@example.com/", L"http://u@example.com/", L"http://example.com/", L"example.com", NULL, NULL, L"example.com", NULL, L"/", NULL, L"http", L"u", 80},
+        {L"http://user:@example.com", L"http://user:@example.com", L"http://user:@example.com/", L"http://example.com/", L"example.com", NULL, NULL, L"example.com", NULL, L"/", NULL, L"http", L"user", 80},
+        {L"http://:pass@example.com", L"http://:pass@example.com", L"http://:pass@example.com/", L"http://example.com/", L"example.com", NULL, NULL, L"example.com", L"pass", L"/", NULL, L"http", NULL, 80},
+        {L"http://:@example.com", L"http://:@example.com", L"http://example.com/", L"http://example.com/", L"example.com", NULL, NULL, L"example.com", NULL, L"/", NULL, L"http", NULL, 80},
+        {L"1http://example.com", L"1http://example.com", L"1http://example.com/", L"1http://example.com/", L"example.com", NULL, NULL, L"example.com", NULL, L"/", NULL, L"1http", NULL, -1},
+        {L"ahttp://example.com", L"ahttp://example.com", L"ahttp://example.com/", L"ahttp://example.com/", L"example.com", NULL, NULL, L"example.com", NULL, L"/", NULL, L"ahttp", NULL, -1},
+        {L"http://example.com?q=a?b", L"http://example.com?q=a?b", L"http://example.com/?q=a?b", L"http://example.com/?q=a?b", L"example.com", NULL, NULL, L"example.com", NULL, L"/", L"?q=a?b", L"http", NULL, 80},
+        {L"http://example.com?q=a b", L"http://example.com?q=a b", L"http://example.com/?q=a b", L"http://example.com/?q=a b", L"example.com", NULL, NULL, L"example.com", NULL, L"/", L"?q=a b", L"http", NULL, 80},
+        {L"http://example.com#a b", L"http://example.com#a b", L"http://example.com/#a b", L"http://example.com/#a b", L"example.com", NULL, L"#a b", L"example.com", NULL, L"/", NULL, L"http", NULL, 80},
+        {L"http://a/b/c?d#e", L"http://a/b/c?d#e", L"http://a/b/c?d#e", L"http://a/b/c?d#e", NULL, NULL, L"#e", L"a", NULL, L"/b/c", L"?d", L"http", NULL, 80},
+        {L"mailto:John.Doe@example.com", L"mailto:John.Doe@example.com", L"mailto:John.Doe@example.com", L"mailto:John.Doe@example.com", NULL, L".com", NULL, NULL, NULL, L"John.Doe@example.com", NULL, L"mailto", NULL, -1},
+        {L"news:comp.infosystems.www.servers.unix", L"news:comp.infosystems.www.servers.unix", L"news:comp.infosystems.www.servers.unix", L"news:comp.infosystems.www.servers.unix", NULL, L".unix", NULL, NULL, NULL, L"comp.infosystems.www.servers.unix", NULL, L"news", NULL, -1},
+        {L"tel:+1-816-555-1212", L"tel:+1-816-555-1212", L"tel:+1-816-555-1212", L"tel:+1-816-555-1212", NULL, NULL, NULL, NULL, NULL, L"+1-816-555-1212", NULL, L"tel", NULL, -1},
+        {L"telnet://192.0.2.16:80/", L"telnet://192.0.2.16:80/", L"telnet://192.0.2.16:80/", L"telnet://192.0.2.16:80/", NULL, NULL, NULL, L"192.0.2.16", NULL, L"/", NULL, L"telnet", NULL, 80},
+        {L"urn:oasis:names:specification:docbook:dtd:xml:4.1.2", L"urn:oasis:names:specification:docbook:dtd:xml:4.1.2", L"urn:oasis:names:specification:docbook:dtd:xml:4.1.2", L"urn:oasis:names:specification:docbook:dtd:xml:4.1.2", NULL, L".2", NULL, NULL, NULL, L"oasis:names:specification:docbook:dtd:xml:4.1.2", NULL, L"urn", NULL, -1},
+        {L"urn:ietf:rfc:2648", L"urn:ietf:rfc:2648", L"urn:ietf:rfc:2648", L"urn:ietf:rfc:2648", NULL, NULL, NULL, NULL, NULL, L"ietf:rfc:2648", NULL, L"urn", NULL, -1},
+        /* IPv4 hosts */
+        {L"http://1/", L"http://1/", L"http://0.0.0.1/", L"http://0.0.0.1/", NULL, NULL, NULL, L"0.0.0.1", NULL, L"/", NULL, L"http", NULL, 80},
+        {L"http://1.2/", L"http://1.2/", L"http://1.0.0.2/", L"http://1.0.0.2/", NULL, NULL, NULL, L"1.0.0.2", NULL, L"/", NULL, L"http", NULL, 80},
+        {L"dummy://1.2/", L"dummy://1.2/", L"dummy://1.2/", L"dummy://1.2/", NULL, NULL, NULL, L"1.2", NULL, L"/", NULL, L"dummy", NULL, -1},
+        {L"http://1.2.3/", L"http://1.2.3/", L"http://1.2.0.3/", L"http://1.2.0.3/", NULL, NULL, NULL, L"1.2.0.3", NULL, L"/", NULL, L"http", NULL, 80},
+        {L"http://1.2.3.4/", L"http://1.2.3.4/", L"http://1.2.3.4/", L"http://1.2.3.4/", NULL, NULL, NULL, L"1.2.3.4", NULL, L"/", NULL, L"http", NULL, 80},
+        {L"http://4294967296/", L"http://4294967296/", L"http://4294967296/", L"http://4294967296/", NULL, NULL, NULL, L"4294967296", NULL, L"/", NULL, L"http", NULL, 80},
+        /* IPv6 hosts */
+        {L"http://[::1]/", L"http://[::1]/", L"http://[::1]/", L"http://[::1]/", NULL, NULL, NULL, L"::1", NULL, L"/", NULL, L"http", NULL, 80},
+        {L"http://[::1]:8080/", L"http://[::1]:8080/", L"http://[::1]:8080/", L"http://[::1]:8080/", NULL, NULL, NULL, L"::1", NULL, L"/", NULL, L"http", NULL, 8080},
+        {L"http://[::ffff:127.0.0.1]/", L"http://[::ffff:127.0.0.1]/", L"http://[::ffff:127.0.0.1]/", L"http://[::ffff:127.0.0.1]/", NULL, NULL, NULL, L"::ffff:127.0.0.1", NULL, L"/", NULL, L"http", NULL, 80},
+        {L"http://[2001:db8::7]/", L"http://[2001:db8::7]/", L"http://[2001:db8::7]/", L"http://[2001:db8::7]/", NULL, NULL, NULL, L"2001:db8::7", NULL, L"/", NULL, L"http", NULL, 80},
+        /* Domain. Domain is the registrable domain name, which is the effective top-level domain plus one */
+        {L"http://www.example.com", L"http://www.example.com", L"http://www.example.com/", L"http://www.example.com/", L"example.com", NULL, NULL, L"www.example.com", NULL, L"/", NULL, L"http", NULL, 80},
+        /* Default ports */
+        {L"ftp://", L"ftp://", L"ftp:///", L"ftp:///", NULL, NULL, NULL, NULL, NULL, L"/", NULL, L"ftp", NULL, 21},
+        {L"telnet://", L"telnet://", L"telnet:///", L"telnet:///", NULL, NULL, NULL, NULL, NULL, L"/", NULL, L"telnet", NULL, 23},
+        {L"http://", L"http://", L"http:///", L"http:///", NULL, NULL, NULL, NULL, NULL, L"/", NULL, L"http", NULL, 80},
+        {L"https://", L"https://", L"https:///", L"https:///", NULL, NULL, NULL, NULL, NULL, L"/", NULL, L"https", NULL, 443},
+        {L"https://example.com:0", L"https://example.com:0", L"https://example.com:0/", L"https://example.com:0/", L"example.com", NULL, NULL, L"example.com", NULL, L"/", NULL, L"https", NULL, 0},
+        {L"dummy://example.com:0", L"dummy://example.com:0", L"dummy://example.com:0/", L"dummy://example.com:0/", L"example.com", NULL, NULL, L"example.com", NULL, L"/", NULL, L"dummy", NULL, 0},
+        /* Extension */
+        {L"http://example.com/.txt", L"http://example.com/.txt", L"http://example.com/.txt", L"http://example.com/.txt", L"example.com", L".txt", NULL, L"example.com", NULL, L"/.txt", NULL, L"http", NULL, 80},
+        {L"http://example.com/1.txt", L"http://example.com/1.txt", L"http://example.com/1.txt", L"http://example.com/1.txt", L"example.com", L".txt", NULL, L"example.com", NULL, L"/1.txt", NULL, L"http", NULL, 80},
+        {L"http://example.com/1..txt", L"http://example.com/1..txt", L"http://example.com/1..txt", L"http://example.com/1..txt", L"example.com", L".txt", NULL, L"example.com", NULL, L"/1..txt", NULL, L"http", NULL, 80},
+        {L"http://example.com/1.2.txt", L"http://example.com/1.2.txt", L"http://example.com/1.2.txt", L"http://example.com/1.2.txt", L"example.com", L".txt", NULL, L"example.com", NULL, L"/1.2.txt", NULL, L"http", NULL, 80},
+        /* Backslash normalization */
+        {L"dummy://a\\b//c\\d?e\\f#g\\h", L"dummy://a\\b//c\\d?e\\f#g\\h", L"dummy://a\\b//c\\d?e\\f#g\\h", L"dummy://a\\b//c\\d?e\\f#g\\h", NULL, NULL, L"#g\\h", L"a\\b", NULL, L"//c\\d", L"?e\\f", L"dummy", NULL, -1},
+        {L"http://a\\b//c\\d?e\\f#g\\h", L"http://a\\b//c\\d?e\\f#g\\h", L"http://a/b//c/d?e\\f#g\\h", L"http://a/b//c/d?e\\f#g\\h", NULL, NULL, L"#g\\h", L"a", NULL, L"/b//c/d", L"?e\\f", L"http", NULL, 80},
+        {L"file://\\sample\\sample.bundle", L"file://\\sample\\sample.bundle", L"file:///sample/sample.bundle", L"file:///sample/sample.bundle", NULL, L".bundle", NULL, NULL, NULL, L"/sample/sample.bundle", NULL, L"file", NULL, -1},
+        /* Dot segments removal */
+        {L"http://example.com/.", L"http://example.com/.", L"http://example.com/", L"http://example.com/", L"example.com", NULL, NULL, L"example.com", NULL, L"/", NULL, L"http", NULL, 80},
+        {L"http://example.com/..", L"http://example.com/..", L"http://example.com/", L"http://example.com/", L"example.com", NULL, NULL, L"example.com", NULL, L"/", NULL, L"http", NULL, 80},
+        {L"http://example.com/...", L"http://example.com/...", L"http://example.com/...", L"http://example.com/...", L"example.com", L".", NULL, L"example.com", NULL, L"/...", NULL, L"http", NULL, 80},
+        {L"http://example.com/a/.", L"http://example.com/a/.", L"http://example.com/a/", L"http://example.com/a/", L"example.com", NULL, NULL, L"example.com", NULL, L"/a/", NULL, L"http", NULL, 80},
+        {L"http://example.com/a/..", L"http://example.com/a/..", L"http://example.com/", L"http://example.com/", L"example.com", NULL, NULL, L"example.com", NULL, L"/", NULL, L"http", NULL, 80},
+        {L"http://example.com/a/b/../../c", L"http://example.com/a/b/../../c", L"http://example.com/c", L"http://example.com/c", L"example.com", NULL, NULL, L"example.com", NULL, L"/c", NULL, L"http", NULL, 80},
+        {L"http://example.com/a/b/.././c", L"http://example.com/a/b/.././c", L"http://example.com/a/c", L"http://example.com/a/c", L"example.com", NULL, NULL, L"example.com", NULL, L"/a/c", NULL, L"http", NULL, 80},
+        {L"http://example.com/a/b/..", L"http://example.com/a/b/..", L"http://example.com/a/", L"http://example.com/a/", L"example.com", NULL, NULL, L"example.com", NULL, L"/a/", NULL, L"http", NULL, 80},
+        {L"http://example.com/a/b/.", L"http://example.com/a/b/.", L"http://example.com/a/b/", L"http://example.com/a/b/", L"example.com", NULL, NULL, L"example.com", NULL, L"/a/b/", NULL, L"http", NULL, 80},
+        /* Implicit file scheme */
+        {L"a:", L"a:", L"file:///a:", L"file:///a:", NULL, NULL, NULL, NULL, NULL, L"/a:", NULL, L"file", NULL, -1},
+        {L"A:", L"A:", L"file:///A:", L"file:///A:", NULL, NULL, NULL, NULL, NULL, L"/A:", NULL, L"file", NULL, -1},
+        {L"a:/", L"a:/", L"file:///a:/", L"file:///a:/", NULL, NULL, NULL, NULL, NULL, L"/a:/", NULL, L"file", NULL, -1},
+        {L"z:/", L"z:/", L"file:///z:/", L"file:///z:/", NULL, NULL, NULL, NULL, NULL, L"/z:/", NULL, L"file", NULL, -1},
+        {L"a://", L"a://", L"file:///a://", L"file:///a://", NULL, NULL, NULL, NULL, NULL, L"/a://", NULL, L"file", NULL, -1},
+        {L"a:b/c", L"a:b/c", L"file:///a:b/c", L"file:///a:b/c", NULL, NULL, NULL, NULL, NULL, L"/a:b/c", NULL, L"file", NULL, -1},
+        {L"ab:c/d", L"ab:c/d", L"ab:c/d", L"ab:c/d", NULL, NULL, NULL, NULL, NULL, L"c/d", NULL, L"ab", NULL, -1},
+        /* White spaces */
+        {L"http:// example.com/", L"http:// example.com/", L"http://%20example.com/", L"http://%20example.com/", L"%20example.com", NULL, NULL, L"%20example.com", NULL, L"/", NULL, L"http", NULL, 80},
+        {L"http://\texample.com/", L"http://example.com/", L"http://example.com/", L"http://example.com/", L"example.com", NULL, NULL, L"example.com", NULL, L"/", NULL, L"http", NULL, 80},
+        {L"http://\rexample.com/", L"http://example.com/", L"http://example.com/", L"http://example.com/", L"example.com", NULL, NULL, L"example.com", NULL, L"/", NULL, L"http", NULL, 80},
+        {L"http://\nexample.com/", L"http://example.com/", L"http://example.com/", L"http://example.com/", L"example.com", NULL, NULL, L"example.com", NULL, L"/", NULL, L"http", NULL, 80},
+        /* Percent encoding */
+        {L"http://example.com/a%20b", L"http://example.com/a%20b", L"http://example.com/a%20b", L"http://example.com/a%20b", L"example.com", NULL, NULL, L"example.com", NULL, L"/a%20b", NULL, L"http", NULL, 80},
+        {L"http://example.com/a%2f/b", L"http://example.com/a%2f/b", L"http://example.com/a%2f/b", L"http://example.com/a%2f/b", L"example.com", NULL, NULL, L"example.com", NULL, L"/a%2f/b", NULL, L"http", NULL, 80},
+        {L"http://example.com/a%2F/b", L"http://example.com/a%2F/b", L"http://example.com/a%2F/b", L"http://example.com/a%2F/b", L"example.com", NULL, NULL, L"example.com", NULL, L"/a%2F/b", NULL, L"http", NULL, 80},
+        {L"http://%FF%FF%FF.com", L"http://%FF%FF%FF.com", L"http://%ff%ff%ff.com/", L"http://%ff%ff%ff.com/", L"%ff%ff%ff.com", NULL, NULL, L"%ff%ff%ff.com", NULL, L"/", NULL, L"http", NULL, 80},
+        {L"dummy://us er:pass word@exam ple.com/pa th?qu ery=val ue#frag ment", L"dummy://us er:pass word@exam ple.com/pa th?qu ery=val ue#frag ment", L"dummy://us er:pass word@exam ple.com/pa th?qu ery=val ue#frag ment", L"dummy://us er:pass word@exam ple.com/pa th?qu ery=val ue#frag ment", L"exam ple.com", NULL, L"#frag ment", L"exam ple.com", L"pass word", L"/pa th", L"?qu ery=val ue", L"dummy", L"us er", -1},
+        {L"http://us er:pass word@exam ple.com/pa th?qu ery=val ue#frag ment", L"http://us er:pass word@exam ple.com/pa th?qu ery=val ue#frag ment", L"http://us%20er:pass%20word@exam%20ple.com/pa%20th?qu ery=val ue#frag ment", L"http://exam%20ple.com/pa%20th?qu ery=val ue#frag ment", L"exam%20ple.com", NULL, L"#frag ment", L"exam%20ple.com", L"pass%20word", L"/pa%20th", L"?qu ery=val ue", L"http", L"us%20er", 80},
+        {L"https://us er:pass word@exam ple.com/pa th?qu ery=val ue#frag ment", L"https://us er:pass word@exam ple.com/pa th?qu ery=val ue#frag ment", L"https://us%20er:pass%20word@exam%20ple.com/pa%20th?qu ery=val ue#frag ment", L"https://exam%20ple.com/pa%20th?qu ery=val ue#frag ment", L"exam%20ple.com", NULL, L"#frag ment", L"exam%20ple.com", L"pass%20word", L"/pa%20th", L"?qu ery=val ue", L"https", L"us%20er", 443},
+        {L"ftp://us er:pass word@exam ple.com/pa th?qu ery=val ue#frag ment", L"ftp://us er:pass word@exam ple.com/pa th?qu ery=val ue#frag ment", L"ftp://us%20er:pass%20word@exam%20ple.com/pa%20th?qu ery=val ue#frag ment", L"ftp://exam%20ple.com/pa%20th?qu ery=val ue#frag ment", L"exam%20ple.com", NULL, L"#frag ment", L"exam%20ple.com", L"pass%20word", L"/pa%20th", L"?qu ery=val ue", L"ftp", L"us%20er", 21},
+        {L"file://a b/c d", L"file://a b/c d", L"file://a%20b/c%20d", L"file://a%20b/c%20d", NULL, NULL, NULL, L"a%20b", NULL, L"/c%20d", NULL, L"file", NULL, -1},
+        {L"http://example.com/path/to /resource", L"http://example.com/path/to /resource", L"http://example.com/path/to%20/resource", L"http://example.com/path/to%20/resource", L"example.com", NULL, NULL, L"example.com", NULL, L"/path/to%20/resource", NULL, L"http", NULL, 80},
+        /* Unicode */
+        {L"http://example.com/\u00e4\u00f6\u00fc", L"http://example.com/\u00e4\u00f6\u00fc", L"http://example.com/\u00e4\u00f6\u00fc", L"http://example.com/\u00e4\u00f6\u00fc", L"example.com", NULL, NULL, L"example.com", NULL, L"/\u00e4\u00f6\u00fc", NULL, L"http", NULL, 80},
+        /* Miscellaneous tests */
+        {L"HTTP://EXAMPLE.COM/", L"HTTP://EXAMPLE.COM/", L"http://example.com/", L"http://example.com/", L"example.com", NULL, NULL, L"example.com", NULL, L"/", NULL, L"http", NULL, 80},
+        {L"dummy:", L"dummy:", L"dummy:", L"dummy:", NULL, NULL, NULL, NULL, NULL, NULL, NULL, L"dummy", NULL, -1},
+        {L"dummy://example.com", L"dummy://example.com", L"dummy://example.com/", L"dummy://example.com/", L"example.com", NULL, NULL, L"example.com", NULL, L"/", NULL, L"dummy", NULL, -1},
+    };
     static const WCHAR *class_name = L"Windows.Foundation.Uri";
     IActivationFactory *activation_factory = NULL;
     IUriRuntimeClassFactory *uri_factory = NULL;
     IUriRuntimeClass *uri_class = NULL;
     IInspectable *inspectable = NULL;
-    IPropertyValue *value;
+    IPropertyValue *prop_value;
+    const WCHAR *buffer;
+    INT32 int32_value;
     HSTRING str, uri;
+    unsigned int i;
     HRESULT hr;
-    INT32 res;
 
     hr = RoInitialize(RO_INIT_MULTITHREADED);
     ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
@@ -124,40 +269,94 @@ static void test_IUriRuntimeClass(void)
     hr = IActivationFactory_QueryInterface(activation_factory, &IID_IUriRuntimeClassFactory, (void **)&uri_factory);
     ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
 
-    hr = WindowsCreateString(L"https://www.winehq.org/", wcslen(L"https://www.winehq.org/"), &uri);
-    ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
-    hr = IUriRuntimeClassFactory_CreateUri(uri_factory, uri, &uri_class);
-    ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+    for (i = 0; i < ARRAY_SIZE(tests); i++)
+    {
+        winetest_push_context("%s", wine_dbgstr_w(tests[i].src));
 
-    hr = IUriRuntimeClass_QueryInterface(uri_class, &IID_IInspectable, (void **)&inspectable);
-    ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
-    ok(uri_class == (void *)inspectable, "QueryInterface IID_IInspectable returned %p, expected %p.\n",
-       inspectable, uri_factory);
-    IInspectable_Release(inspectable);
+        hr = WindowsCreateString(tests[i].src, wcslen(tests[i].src), &uri);
+        ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+        hr = IUriRuntimeClassFactory_CreateUri(uri_factory, uri, &uri_class);
+        if (tests[i].invalid)
+        {
+            ok(hr == E_INVALIDARG, "Got unexpected hr %#lx.\n", hr);
+            WindowsDeleteString(uri);
+            winetest_pop_context();
+            continue;
+        }
+        else
+        {
+            ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+        }
 
-    hr = IUriRuntimeClass_QueryInterface(uri_class, &IID_IPropertyValue, (void **)&value);
-    ok(hr == E_NOINTERFACE, "Got unexpected hr %#lx.\n", hr);
+        if (i == 0)
+        {
+            hr = IUriRuntimeClass_QueryInterface(uri_class, &IID_IInspectable, (void **)&inspectable);
+            ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+            ok(uri_class == (void *)inspectable, "QueryInterface IID_IInspectable returned %p, expected %p.\n",
+               inspectable, uri_factory);
+            IInspectable_Release(inspectable);
 
-    /* Test IUriRuntimeClass_get_RawUri() */
-    hr = IUriRuntimeClass_get_RawUri(uri_class, &str);
-    ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
-    ok(str != uri, "Expected a different pointer.\n");
-    hr = WindowsCompareStringOrdinal(uri, str, &res);
-    ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
-    ok(res == 0, "Expected %s, got %s.\n", debugstr_hstring(uri), debugstr_hstring(str));
-    WindowsDeleteString(str);
+            hr = IUriRuntimeClass_QueryInterface(uri_class, &IID_IPropertyValue, (void **)&prop_value);
+            ok(hr == E_NOINTERFACE, "Got unexpected hr %#lx.\n", hr);
+        }
 
-    /* Test IUriRuntimeClass_get_AbsoluteUri() */
-    hr = IUriRuntimeClass_get_AbsoluteUri(uri_class, &str);
-    ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
-    ok(str != uri, "Expected a different pointer.\n");
-    hr = WindowsCompareStringOrdinal(uri, str, &res);
-    ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
-    ok(res == 0, "Expected %s, got %s.\n", debugstr_hstring(uri), debugstr_hstring(str));
-    WindowsDeleteString(str);
+#define TEST_HSTRING(prop)                                                                         \
+    winetest_push_context(#prop);                                                                  \
+    str = NULL;                                                                                    \
+    hr = IUriRuntimeClass_get_##prop(uri_class, &str);                                             \
+    ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);                                               \
+    ok(str != uri, "Expected a different pointer.\n");                                             \
+    if (tests[i].prop)                                                                             \
+    {                                                                                              \
+        ok(!!str, "Expected a valid pointer.\n");                                                  \
+        buffer = WindowsGetStringRawBuffer(str, NULL);                                             \
+        ok(!wcscmp(buffer, tests[i].prop), "Expected %s, got %s.\n", wine_dbgstr_w(tests[i].prop), \
+           debugstr_hstring(str));                                                                 \
+        WindowsDeleteString(str);                                                                  \
+    }                                                                                              \
+    else                                                                                           \
+    {                                                                                              \
+        ok(!str, "Expected a NULL pointer.\n");                                                    \
+    }                                                                                              \
+    winetest_pop_context();
+
+#define TEST_INT32(prop)                                                                    \
+    winetest_push_context(#prop);                                                           \
+    hr = IUriRuntimeClass_get_##prop(uri_class, &int32_value);                              \
+    if (tests[i].prop == -1)                                                                \
+    {                                                                                       \
+        ok(hr == S_FALSE, "Got unexpected hr %#lx.\n", hr);                                 \
+    }                                                                                       \
+    else                                                                                    \
+    {                                                                                       \
+        ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);                                    \
+        ok(int32_value == tests[i].prop, "Expected " #prop " %d, got %d.\n", tests[i].prop, \
+           int32_value);                                                                    \
+    }                                                                                       \
+    winetest_pop_context();
+
+        TEST_HSTRING(AbsoluteUri)
+        TEST_HSTRING(DisplayUri)
+        TEST_HSTRING(Domain)
+        TEST_HSTRING(Extension)
+        TEST_HSTRING(Fragment)
+        TEST_HSTRING(Host)
+        TEST_HSTRING(Password)
+        TEST_HSTRING(Path)
+        TEST_HSTRING(Query)
+        TEST_HSTRING(RawUri)
+        TEST_HSTRING(SchemeName)
+        TEST_HSTRING(UserName)
+        TEST_INT32(Port)
+
+#undef TEST_INT32
+#undef TEST_HSTRING
+
+        IUriRuntimeClass_Release(uri_class);
+        WindowsDeleteString(uri);
+        winetest_pop_context();
+    }
 
-    WindowsDeleteString(uri);
-    IUriRuntimeClass_Release(uri_class);
     IUriRuntimeClassFactory_Release(uri_factory);
     IActivationFactory_Release(activation_factory);
     RoUninitialize();
diff --git a/dlls/iertutil/uri.c b/dlls/iertutil/uri.c
index bdf9f104e42d..38408c4baf50 100644
--- a/dlls/iertutil/uri.c
+++ b/dlls/iertutil/uri.c
@@ -1,6 +1,7 @@
 /*
  * Copyright 2010 Jacek Caban for CodeWeavers
  * Copyright 2010 Thomas Mullaly
+ * Copyright 2026 Zhiyi Zhang for CodeWeavers
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -149,8 +150,6 @@ typedef struct {
     BOOL            is_relative;
     BOOL            is_opaque;
     BOOL            has_implicit_scheme;
-    BOOL            has_implicit_ip;
-    UINT            implicit_ipv4;
     BOOL            must_have_path;
 
     const WCHAR     *scheme;
@@ -677,6 +676,21 @@ static INT find_file_extension(const WCHAR *path, DWORD path_len) {
     return -1;
 }
 
+static WCHAR *strdupwn(const WCHAR *str, DWORD length)
+{
+    WCHAR *ret;
+
+    if (!str)
+        return NULL;
+
+    if ((ret = malloc((length+1)*sizeof(WCHAR))))
+    {
+        memcpy(ret, str, length*sizeof(WCHAR));
+        ret[length] = '\0';
+    }
+    return ret;
+}
+
 /* Removes all the leading and trailing white spaces or
  * control characters from the URI and removes all control
  * characters inside of the URI string.
@@ -716,32 +730,6 @@ static BSTR pre_process_uri(LPCWSTR uri) {
     return ret;
 }
 
-/* Converts an IPv4 address in numerical form into its fully qualified
- * string form. This function returns the number of characters written
- * to 'dest'. If 'dest' is NULL this function will return the number of
- * characters that would have been written.
- *
- * It's up to the caller to ensure there's enough space in 'dest' for the
- * address.
- */
-static DWORD ui2ipv4(WCHAR *dest, UINT address) {
-    DWORD ret = 0;
-    UCHAR digits[4];
-
-    digits[0] = (address >> 24) & 0xff;
-    digits[1] = (address >> 16) & 0xff;
-    digits[2] = (address >> 8) & 0xff;
-    digits[3] = address & 0xff;
-
-    if(!dest) {
-        WCHAR tmp[16];
-        ret = swprintf(tmp, ARRAY_SIZE(tmp), L"%u.%u.%u.%u", digits[0], digits[1], digits[2], digits[3]);
-    } else
-        ret = swprintf(dest, 16, L"%u.%u.%u.%u", digits[0], digits[1], digits[2], digits[3]);
-
-    return ret;
-}
-
 static DWORD ui2str(WCHAR *dest, UINT value) {
     DWORD ret = 0;
 
@@ -828,10 +816,9 @@ static BOOL check_dec_octet(const WCHAR **ptr) {
  *  Ex:
  *      "234567" would be considered an implicit IPv4 address.
  */
-static BOOL check_implicit_ipv4(const WCHAR **ptr, UINT *val) {
+static BOOL check_implicit_ipv4(const WCHAR **ptr) {
     const WCHAR *start = *ptr;
     ULONGLONG ret = 0;
-    *val = 0;
 
     while(is_num(**ptr)) {
         ret = ret*10 + (**ptr - '0');
@@ -846,7 +833,6 @@ static BOOL check_implicit_ipv4(const WCHAR **ptr, UINT *val) {
     if(*ptr == start)
         return FALSE;
 
-    *val = ret;
     return TRUE;
 }
 
@@ -1187,9 +1173,9 @@ static BOOL parse_port(const WCHAR **ptr, parse_data *data) {
         ++(*ptr);
     }
 
-    data->has_port = TRUE;
     data->port_value = port;
     data->port_len = *ptr - data->port;
+    data->has_port = data->port_len > 0;
 
     TRACE("(%p %p): Found port %s len=%ld value=%lu\n", ptr, data,
         debugstr_wn(data->port, data->port_len), data->port_len, data->port_value);
@@ -1215,13 +1201,12 @@ static BOOL parse_ipv4address(const WCHAR **ptr, parse_data *data) {
     data->host = *ptr;
 
     if(!check_ipv4address(ptr, FALSE)) {
-        if(!check_implicit_ipv4(ptr, &data->implicit_ipv4)) {
+        if(!check_implicit_ipv4(ptr)) {
             TRACE("(%p %p): URI didn't contain anything looking like an IPv4 address.\n", ptr, data);
             *ptr = data->host;
             data->host = NULL;
             return FALSE;
-        } else
-            data->has_implicit_ip = TRUE;
+        }
     }
 
     data->host_len = *ptr - data->host;
@@ -1237,11 +1222,13 @@ static BOOL parse_ipv4address(const WCHAR **ptr, parse_data *data) {
             data->host = NULL;
             return FALSE;
         }
+        /* Include the ':' in the host for unknown schemes with no port value */
+        if(!data->has_port && is_unknown)
+            data->host_len++;
     } else if(!is_auth_delim(**ptr, !is_unknown)) {
         /* Found more data which belongs to the host, so this isn't an IPv4. */
         *ptr = data->host;
         data->host = NULL;
-        data->has_implicit_ip = FALSE;
         return FALSE;
     }
 
@@ -1325,6 +1312,9 @@ static BOOL parse_reg_name(const WCHAR **ptr, parse_data *data, DWORD extras) {
                         ignore_col = TRUE;
                 } else {
                     data->host_len = tmp - data->host;
+                    /* Include the ':' in the host for unknown schemes with no port value */
+                    if(!data->has_port && data->scheme_type == URL_SCHEME_UNKNOWN)
+                        data->host_len++;
                     break;
                 }
             }
@@ -1866,9 +1856,9 @@ static BOOL canonicalize_username(const parse_data *data, Uri *uri, DWORD flags,
             }
         } else if(is_ascii(*ptr) && !is_reserved(*ptr) && !is_unreserved(*ptr) && *ptr != '\\') {
             /* Only percent encode forbidden characters if the NO_ENCODE_FORBIDDEN_CHARACTERS flag
-             * is NOT set.
+             * is NOT set and the scheme is known.
              */
-            if(!(flags & Uri_CREATE_NO_ENCODE_FORBIDDEN_CHARACTERS)) {
+            if(!(flags & Uri_CREATE_NO_ENCODE_FORBIDDEN_CHARACTERS) && data->scheme_type != URL_SCHEME_UNKNOWN) {
                 if(!computeOnly)
                     pct_encode_val(*ptr, uri->canon_uri + uri->canon_len);
 
@@ -1924,9 +1914,9 @@ static BOOL canonicalize_password(const parse_data *data, Uri *uri, DWORD flags,
             }
         } else if(is_ascii(*ptr) && !is_reserved(*ptr) && !is_unreserved(*ptr) && *ptr != '\\') {
             /* Only percent encode forbidden characters if the NO_ENCODE_FORBIDDEN_CHARACTERS flag
-             * is NOT set.
+             * is NOT set and the scheme is known.
              */
-            if(!(flags & Uri_CREATE_NO_ENCODE_FORBIDDEN_CHARACTERS)) {
+            if(!(flags & Uri_CREATE_NO_ENCODE_FORBIDDEN_CHARACTERS) && data->scheme_type != URL_SCHEME_UNKNOWN) {
                 if(!computeOnly)
                     pct_encode_val(*ptr, uri->canon_uri + uri->canon_len);
 
@@ -2094,38 +2084,6 @@ static BOOL canonicalize_reg_name(const parse_data *data, Uri *uri,
     return TRUE;
 }
 
-/* Attempts to canonicalize an implicit IPv4 address. */
-static BOOL canonicalize_implicit_ipv4address(const parse_data *data, Uri *uri, DWORD flags, BOOL computeOnly) {
-    uri->host_start = uri->canon_len;
-
-    TRACE("%u\n", data->implicit_ipv4);
-    /* For unknown scheme types Windows doesn't convert
-     * the value into an IP address, but it still considers
-     * it an IPv4 address.
-     */
-    if(data->scheme_type == URL_SCHEME_UNKNOWN) {
-        if(!computeOnly)
-            memcpy(uri->canon_uri+uri->canon_len, data->host, data->host_len*sizeof(WCHAR));
-        uri->canon_len += data->host_len;
-    } else {
-        if(!computeOnly)
-            uri->canon_len += ui2ipv4(uri->canon_uri+uri->canon_len, data->implicit_ipv4);
-        else
-            uri->canon_len += ui2ipv4(NULL, data->implicit_ipv4);
-    }
-
-    uri->host_len = uri->canon_len - uri->host_start;
-    uri->host_type = Uri_HOST_IPV4;
-
-    if(!computeOnly)
-        TRACE("%p %p %lx %d): Canonicalized implicit IP address=%s len=%ld\n",
-            data, uri, flags, computeOnly,
-            debugstr_wn(uri->canon_uri+uri->host_start, uri->host_len),
-            uri->host_len);
-
-    return TRUE;
-}
-
 /* Attempts to canonicalize an IPv4 address.
  *
  * If the parse_data represents a URI that has an implicit IPv4 address
@@ -2145,76 +2103,39 @@ static BOOL canonicalize_implicit_ipv4address(const parse_data *data, Uri *uri,
  *  host type as HOST_IPV4.
  */
 static BOOL canonicalize_ipv4address(const parse_data *data, Uri *uri, DWORD flags, BOOL computeOnly) {
-    if(data->has_implicit_ip)
-        return canonicalize_implicit_ipv4address(data, uri, flags, computeOnly);
-    else {
-        uri->host_start = uri->canon_len;
-
-        /* Windows only normalizes for known scheme types. */
-        if(data->scheme_type != URL_SCHEME_UNKNOWN) {
-            /* parse_data contains a partial or full IPv4 address, so normalize it. */
-            DWORD i, octetDigitCount = 0, octetCount = 0;
-            BOOL octetHasDigit = FALSE;
-
-            for(i = 0; i < data->host_len; ++i) {
-                if(data->host[i] == '0' && !octetHasDigit) {
-                    /* Can ignore leading zeros if:
-                     *  1) It isn't the last digit of the octet.
-                     *  2) i+1 != data->host_len
-                     *  3) i+1 != '.'
-                     */
-                    if(octetDigitCount == 2 ||
-                       i+1 == data->host_len ||
-                       data->host[i+1] == '.') {
-                        if(!computeOnly)
-                            uri->canon_uri[uri->canon_len] = data->host[i];
-                        ++uri->canon_len;
-                        TRACE("Adding zero\n");
-                    }
-                } else if(data->host[i] == '.') {
-                    if(!computeOnly)
-                        uri->canon_uri[uri->canon_len] = data->host[i];
-                    ++uri->canon_len;
-
-                    octetDigitCount = 0;
-                    octetHasDigit = FALSE;
-                    ++octetCount;
-                } else {
-                    if(!computeOnly)
-                        uri->canon_uri[uri->canon_len] = data->host[i];
-                    ++uri->canon_len;
-
-                    ++octetDigitCount;
-                    octetHasDigit = TRUE;
-                }
-            }
-
-            /* Make sure the canonicalized IP address has 4 dec-octets.
-             * If doesn't add "0" ones until there is 4;
-             */
-            for( ; octetCount < 3; ++octetCount) {
-                if(!computeOnly) {
-                    uri->canon_uri[uri->canon_len] = '.';
-                    uri->canon_uri[uri->canon_len+1] = '0';
-                }
-
-                uri->canon_len += 2;
-            }
-        } else {
-            /* Windows doesn't normalize addresses in unknown schemes. */
-            if(!computeOnly)
-                memcpy(uri->canon_uri+uri->canon_len, data->host, data->host_len*sizeof(WCHAR));
-            uri->canon_len += data->host_len;
-        }
+    uri->host_start = uri->canon_len;
 
-        uri->host_len = uri->canon_len - uri->host_start;
-        if(!computeOnly)
-            TRACE("(%p %p %lx %d): Canonicalized IPv4 address, ip=%s len=%ld\n",
-                data, uri, flags, computeOnly,
-                debugstr_wn(uri->canon_uri+uri->host_start, uri->host_len),
-                uri->host_len);
+    if (data->scheme_type != URL_SCHEME_UNKNOWN)
+    {
+        WCHAR *host, full_ipv4[16];
+        const WCHAR *terminator;
+        IN_ADDR in_addr;
+        DWORD len;
+
+        /* IPv4 address may be partial, normalize fully */
+        host = strdupwn(data->host, data->host_len);
+        RtlIpv4StringToAddressW(host, FALSE, &terminator, &in_addr);
+        RtlIpv4AddressToStringW(&in_addr, full_ipv4);
+        free(host);
+
+        len = wcslen(full_ipv4);
+        if (!computeOnly)
+            memcpy(uri->canon_uri+uri->canon_len, full_ipv4, len*sizeof(WCHAR));
+        uri->canon_len += len;
+        uri->host_len = len;
+    }
+    else
+    {
+        /* Windows doesn't normalize addresses in unknown schemes. */
+        if (!computeOnly)
+            memcpy(uri->canon_uri+uri->canon_len, data->host, data->host_len*sizeof(WCHAR));
+        uri->canon_len += data->host_len;
+        uri->host_len = uri->canon_len-uri->host_start;
     }
 
+    if (!computeOnly)
+        TRACE("(%p %p %lx %d): Canonicalized IPv4 address, ip=%s len=%ld\n", data, uri, flags,
+              computeOnly, debugstr_wn(uri->canon_uri+uri->host_start, uri->host_len), uri->host_len);
     return TRUE;
 }
 
@@ -2506,7 +2427,7 @@ static DWORD canonicalize_path_hierarchical(const WCHAR *path, DWORD path_len, U
         }
     }
 
-    if(!is_file && *path && *path != '/') {
+    if(!is_file && *path && !is_slash(*path)) {
         /* Prepend a '/' to the path if it doesn't have one. */
         if(ret_path)
             ret_path[len] = '/';
@@ -2834,7 +2755,7 @@ static BOOL canonicalize_query(const parse_data *data, Uri *uri, DWORD flags, BO
                     continue;
                 }
             }
-        } else if(known_scheme && is_ascii(*ptr) && !is_unreserved(*ptr) && !is_reserved(*ptr)) {
+        } else if(known_scheme && is_ascii(*ptr) && !is_unreserved(*ptr) && !is_reserved(*ptr) && !is_slash(*ptr)) {
             if(!(flags & Uri_CREATE_NO_ENCODE_FORBIDDEN_CHARACTERS) &&
                !(flags & Uri_CREATE_NO_DECODE_EXTRA_INFO)) {
                 if(!computeOnly)
@@ -2884,7 +2805,7 @@ static BOOL canonicalize_fragment(const parse_data *data, Uri *uri, DWORD flags,
                     continue;
                 }
             }
-        } else if(known_scheme && is_ascii(*ptr) && !is_unreserved(*ptr) && !is_reserved(*ptr)) {
+        } else if(known_scheme && is_ascii(*ptr) && !is_unreserved(*ptr) && !is_reserved(*ptr) && !is_slash(*ptr)) {
             if(!(flags & Uri_CREATE_NO_ENCODE_FORBIDDEN_CHARACTERS) &&
                !(flags & Uri_CREATE_NO_DECODE_EXTRA_INFO)) {
                 if(!computeOnly)
diff --git a/dlls/imm32/ime.c b/dlls/imm32/ime.c
index 9e6c96537c86..c4d71856e687 100644
--- a/dlls/imm32/ime.c
+++ b/dlls/imm32/ime.c
@@ -540,7 +540,6 @@ BOOL WINAPI ImeSetActiveContext( HIMC himc, BOOL flag )
 
 BOOL WINAPI ImeProcessKey( HIMC himc, UINT vkey, LPARAM lparam, BYTE *state )
 {
-    struct ime_driver_call_params params = {.himc = himc, .state = state};
     INPUTCONTEXT *ctx;
     LRESULT ret;
 
@@ -549,8 +548,15 @@ BOOL WINAPI ImeProcessKey( HIMC himc, UINT vkey, LPARAM lparam, BYTE *state )
     if (!is_ime_hkl( GetKeyboardLayout( 0 ) )) return FALSE;
 
     if (!(ctx = ImmLockIMC( himc ))) return FALSE;
-    ret = NtUserMessageCall( ctx->hWnd, WINE_IME_PROCESS_KEY, vkey, lparam, &params,
-                             NtUserImeDriverCall, FALSE );
+    ret = TRUE; /* TODO: should be ctx->fOpen */
+    switch (LOWORD(vkey))
+    {
+        case VK_SHIFT:
+        case VK_CONTROL:
+        case VK_CAPITAL:
+        case VK_MENU:
+            ret = FALSE;
+    }
     ImmUnlockIMC( himc );
 
     return ret;
@@ -563,6 +569,7 @@ UINT WINAPI ImeToAsciiEx( UINT vkey, UINT vsc, BYTE *state, TRANSMSGLIST *msgs,
     INPUTCONTEXT *ctx;
     NTSTATUS status;
     BOOL key_consumed = TRUE;
+    struct ime_driver_call_params params = {.himc = himc, .state = state};
 
     TRACE( "vkey %#x, vsc %#x, state %p, msgs %p, flags %#x, himc %p\n",
            vkey, vsc, state, msgs, flags, himc );
@@ -575,7 +582,6 @@ UINT WINAPI ImeToAsciiEx( UINT vkey, UINT vsc, BYTE *state, TRANSMSGLIST *msgs,
 
     do
     {
-        struct ime_driver_call_params params = {.himc = himc, .state = state};
         HIMCC himcc;
 
         ImmUnlockIMCC( ctx->hCompStr );
@@ -587,9 +593,15 @@ UINT WINAPI ImeToAsciiEx( UINT vkey, UINT vsc, BYTE *state, TRANSMSGLIST *msgs,
         status = NtUserMessageCall( ctx->hWnd, WINE_IME_TO_ASCII_EX, vkey, vsc, &params,
                                     NtUserImeDriverCall, FALSE );
         size = compstr->dwSize;
+        params.state = NULL;
     } while (status == STATUS_BUFFER_TOO_SMALL);
 
-    if (status) WARN( "WINE_IME_TO_ASCII_EX returned status %#lx\n", status );
+    if (status == STATUS_NOT_IMPLEMENTED)
+    {
+        TRANSMSG msg = {.message = vsc & KF_UP ? WM_KEYUP : WM_KEYDOWN, .wParam = vkey, .lParam = vsc};
+        msgs->TransMsg[count++] = msg;
+    }
+    else if (status) WARN( "WINE_IME_TO_ASCII_EX returned unexpected status %#lx\n", status );
     else
     {
         if (compstr->dwCompStrOffset || compstr->dwResultStrLen)
diff --git a/dlls/iyuv_32/Makefile.in b/dlls/iyuv_32/Makefile.in
index 6b9b11569b1b..e5a261b973ff 100644
--- a/dlls/iyuv_32/Makefile.in
+++ b/dlls/iyuv_32/Makefile.in
@@ -1,5 +1,6 @@
 MODULE       = iyuv_32.dll
-IMPORTS      = user32 mfplat ole32
+IMPORTS      = user32 mfplat ole32 winegstreamer
 
 SOURCES = \
-	iyuv.c
+	iyuv.c \
+	iyuv_32.rc
diff --git a/dlls/iyuv_32/iyuv.c b/dlls/iyuv_32/iyuv.c
index e114fde50e02..f990a5bd6a1a 100644
--- a/dlls/iyuv_32/iyuv.c
+++ b/dlls/iyuv_32/iyuv.c
@@ -31,59 +31,262 @@
 #include "vfw.h"
 #include "wmcodecdsp.h"
 
+#include "iyuv_private.h"
 #include "wine/debug.h"
 
-#define COBJMACROS
-#include "mfapi.h"
 #include "mferror.h"
-#include "mfobjects.h"
-#include "mfidl.h"
-#include "mftransform.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(iyuv_32);
 
 static HINSTANCE IYUV_32_module;
 
+#define FOURCC_I420 mmioFOURCC('I', '4', '2', '0')
+#define FOURCC_IYUV mmioFOURCC('I', 'Y', 'U', 'V')
+
+#define compare_fourcc(fcc1, fcc2) (((fcc1) ^ (fcc2)) & ~0x20202020)
+
+static inline UINT64 make_uint64(UINT32 high, UINT32 low)
+{
+    return ((UINT64)high << 32) | low;
+}
+
 static LRESULT IYUV_Open(const ICINFO *icinfo)
 {
-    FIXME("DRV_OPEN %p\n", icinfo);
+    IMFTransform *transform;
+
+    TRACE("DRV_OPEN %p\n", icinfo);
+
+    if (icinfo && compare_fourcc(icinfo->fccType, ICTYPE_VIDEO))
+        return 0;
+
+    if (FAILED(winegstreamer_create_color_converter(&transform)))
+        transform = NULL;
 
-    return 0;
+    return (LRESULT)transform;
 }
 
 static LRESULT IYUV_DecompressQuery(const BITMAPINFOHEADER *in, const BITMAPINFOHEADER *out)
 {
-    FIXME("ICM_DECOMPRESS_QUERY %p %p\n", in, out);
+    TRACE("in->planes  = %d\n", in->biPlanes);
+    TRACE("in->bpp     = %d\n", in->biBitCount);
+    TRACE("in->height  = %ld\n", in->biHeight);
+    TRACE("in->width   = %ld\n", in->biWidth);
+    TRACE("in->compr   = %#lx\n", in->biCompression);
+
+    if (compare_fourcc(in->biCompression, FOURCC_I420) && compare_fourcc(in->biCompression, FOURCC_IYUV))
+    {
+        TRACE("can't do %#lx decompression\n", in->biCompression);
+        return ICERR_BADFORMAT;
+    }
+
+    if (!in->biHeight || !in->biWidth)
+        return ICERR_BADFORMAT;
+
+    /* output must be same dimensions as input */
+    if (out)
+    {
+        TRACE("out->planes = %d\n", out->biPlanes);
+        TRACE("out->bpp    = %d\n", out->biBitCount);
+        TRACE("out->height = %ld\n", out->biHeight);
+        TRACE("out->width  = %ld\n", out->biWidth);
+        TRACE("out->compr  = %#lx\n", out->biCompression);
+
+        if (out->biCompression != BI_RGB)
+            return ICERR_BADFORMAT;
 
-    return ICERR_UNSUPPORTED;
+        if (out->biBitCount != 24 && out->biBitCount != 16 && out->biBitCount != 8)
+            return ICERR_BADFORMAT;
+
+        if (in->biWidth != out->biWidth || in->biHeight != out->biHeight)
+            return ICERR_BADFORMAT;
+    }
+
+    return ICERR_OK;
 }
 
 static LRESULT IYUV_DecompressGetFormat(BITMAPINFOHEADER *in, BITMAPINFOHEADER *out)
 {
-    FIXME("ICM_DECOMPRESS_GETFORMAT %p %p\n", in, out);
+    TRACE("ICM_DECOMPRESS_GETFORMAT %p %p\n", in, out);
+
+    if (compare_fourcc(in->biCompression, FOURCC_I420) && compare_fourcc(in->biCompression, FOURCC_IYUV))
+        return ICERR_BADFORMAT;
+
+    if (out)
+    {
+        memset(out, 0, sizeof(*out));
+        out->biSize = sizeof(BITMAPINFOHEADER);
+        out->biWidth = in->biWidth;
+        out->biHeight = abs(in->biHeight);
+        out->biCompression = BI_RGB;
+        out->biPlanes = 1;
+        out->biBitCount = 24;
+        out->biSizeImage = out->biWidth * out->biHeight * 3;
+        return ICERR_OK;
+    }
 
-    return ICERR_UNSUPPORTED;
+    return sizeof(*out);
 }
 
 static LRESULT IYUV_DecompressBegin(IMFTransform *transform, const BITMAPINFOHEADER *in, const BITMAPINFOHEADER *out)
 {
-    FIXME("ICM_DECOMPRESS_BEGIN %p %p %p\n", transform, in, out);
+    IMFMediaType *input_type, *output_type;
+    LRESULT r = ICERR_INTERNAL;
+    const GUID *output_subtype;
+    LONG stride, depth;
+
+    TRACE("transform %p, in %p, out %p.\n", transform, in, out);
+
+    if (!transform)
+        return ICERR_BADPARAM;
+
+    if (out->biCompression != BI_RGB)
+        return ICERR_BADFORMAT;
+
+    if (out->biBitCount == 24)
+        output_subtype = &MFVideoFormat_RGB24;
+    else if (out->biBitCount == 16)
+        output_subtype = &MFVideoFormat_RGB555;
+    else if (out->biBitCount == 8)
+        output_subtype = &MFVideoFormat_RGB8;
+    else
+        return ICERR_BADFORMAT;
+
+    if (in->biWidth != out->biWidth || in->biHeight != out->biHeight)
+        return ICERR_BADFORMAT;
+
+    depth = out->biBitCount / 8;
+    stride = -((out->biWidth * depth + 3) & ~3);
+
+    if (FAILED(MFCreateMediaType(&input_type)))
+        return ICERR_INTERNAL;
 
-    return ICERR_UNSUPPORTED;
+    if (FAILED(MFCreateMediaType(&output_type)))
+    {
+        IMFMediaType_Release(input_type);
+        return ICERR_INTERNAL;
+    }
+
+    if (FAILED(IMFMediaType_SetGUID(input_type, &MF_MT_MAJOR_TYPE, &MFMediaType_Video)) ||
+        FAILED(IMFMediaType_SetGUID(input_type, &MF_MT_SUBTYPE, &MFVideoFormat_I420)))
+        goto done;
+    if (FAILED(IMFMediaType_SetUINT64(input_type, &MF_MT_FRAME_SIZE, make_uint64(in->biWidth, in->biHeight))))
+        goto done;
+
+    if (FAILED(IMFMediaType_SetGUID(output_type, &MF_MT_MAJOR_TYPE, &MFMediaType_Video)) ||
+        FAILED(IMFMediaType_SetGUID(output_type, &MF_MT_SUBTYPE, output_subtype)))
+        goto done;
+    if (FAILED(IMFMediaType_SetUINT64(output_type, &MF_MT_FRAME_SIZE, make_uint64(out->biWidth, out->biHeight))))
+        goto done;
+    if (FAILED(IMFMediaType_SetUINT32(output_type, &MF_MT_DEFAULT_STRIDE, stride)))
+        goto done;
+
+    if (FAILED(IMFTransform_SetInputType(transform, 0, input_type, 0)) ||
+        FAILED(IMFTransform_SetOutputType(transform, 0, output_type, 0)))
+        goto done;
+
+    r = ICERR_OK;
+
+done:
+    IMFMediaType_Release(input_type);
+    IMFMediaType_Release(output_type);
+    return r;
 }
 
 static LRESULT IYUV_Decompress(IMFTransform *transform, const ICDECOMPRESS *params)
 {
-    FIXME("ICM_DECOMPRESS %p %p\n", transform, params);
+    IMFSample *in_sample = NULL, *out_sample = NULL;
+    IMFMediaBuffer *in_buf = NULL, *out_buf = NULL;
+    MFT_OUTPUT_DATA_BUFFER mft_buf;
+    LRESULT r = ICERR_INTERNAL;
+    DWORD mft_status;
+    BYTE *data;
+
+    TRACE("transform %p, params %p.\n", transform, params);
+
+    if (FAILED(MFCreateSample(&in_sample)))
+        return ICERR_INTERNAL;
+
+    if (FAILED(MFCreateMemoryBuffer(params->lpbiInput->biSizeImage, &in_buf)))
+        goto done;
+
+    if (FAILED(IMFSample_AddBuffer(in_sample, in_buf)))
+        goto done;
+
+    if (FAILED(MFCreateSample(&out_sample)))
+        goto done;
+
+    if (FAILED(MFCreateMemoryBuffer(params->lpbiOutput->biSizeImage, &out_buf)))
+        goto done;
+
+    if (FAILED(IMFSample_AddBuffer(out_sample, out_buf)))
+        goto done;
+
+    if (FAILED(IMFMediaBuffer_Lock(in_buf, &data, NULL, NULL)))
+        goto done;
+
+    memcpy(data, params->lpInput, params->lpbiInput->biSizeImage);
+
+    if (FAILED(IMFMediaBuffer_Unlock(in_buf)))
+        goto done;
+
+    if (FAILED(IMFMediaBuffer_SetCurrentLength(in_buf, params->lpbiInput->biSizeImage)))
+        goto done;
 
-    return ICERR_UNSUPPORTED;
+    if (FAILED(IMFTransform_ProcessInput(transform, 0, in_sample, 0)))
+        goto done;
+
+    memset(&mft_buf, 0, sizeof(mft_buf));
+    mft_buf.pSample = out_sample;
+
+    if (SUCCEEDED(IMFTransform_ProcessOutput(transform, 0, 1, &mft_buf, &mft_status)))
+    {
+        LONG depth = params->lpbiOutput->biBitCount / 8;
+        LONG width = params->lpbiOutput->biWidth * depth;
+        LONG stride = (width + 3) & ~3;
+
+        if (FAILED(IMFMediaBuffer_Lock(out_buf, &data, NULL, NULL)))
+            goto done;
+
+        MFCopyImage(params->lpOutput, stride, data, stride, width, params->lpbiOutput->biHeight);
+
+        IMFMediaBuffer_Unlock(out_buf);
+        r = ICERR_OK;
+    }
+
+done:
+    if (in_buf)
+        IMFMediaBuffer_Release(in_buf);
+    if (in_sample)
+        IMFSample_Release(in_sample);
+    if (out_buf)
+        IMFMediaBuffer_Release(out_buf);
+    if (out_sample)
+        IMFSample_Release(out_sample);
+
+    return r;
 }
 
 static LRESULT IYUV_GetInfo(ICINFO *icinfo, DWORD size)
 {
-    FIXME("ICM_GETINFO %p %lu\n", icinfo, size);
+    TRACE("ICM_GETINFO %p %lu\n", icinfo, size);
+
+    if (!icinfo)
+        return sizeof(ICINFO);
+    if (size < sizeof(ICINFO))
+        return 0;
+
+    icinfo->dwSize = sizeof(ICINFO);
+    icinfo->fccType = ICTYPE_VIDEO;
+    icinfo->fccHandler = FOURCC_IYUV;
+    icinfo->dwFlags = 0;
+    icinfo->dwVersion = 0;
+    icinfo->dwVersionICM = ICVERSION;
+
+    LoadStringW(IYUV_32_module, IDS_NAME, icinfo->szName, ARRAY_SIZE(icinfo->szName));
+    LoadStringW(IYUV_32_module, IDS_DESCRIPTION, icinfo->szDescription, ARRAY_SIZE(icinfo->szDescription));
+    /* msvfw32 will fill icinfo->szDriver for us */
 
-    return ICERR_UNSUPPORTED;
+    return sizeof(ICINFO);
 }
 
 /***********************************************************************
diff --git a/dlls/iyuv_32/iyuv_32.rc b/dlls/iyuv_32/iyuv_32.rc
new file mode 100644
index 000000000000..0b231250d4f6
--- /dev/null
+++ b/dlls/iyuv_32/iyuv_32.rc
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2026 Brendan McGrath for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "iyuv_private.h"
+
+#pragma makedep po
+
+LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT
+
+STRINGTABLE
+{
+    IDS_NAME        "IYUV codec"
+    IDS_DESCRIPTION "Intel Indeo IYUV codec"
+}
diff --git a/dlls/iyuv_32/iyuv_private.h b/dlls/iyuv_32/iyuv_private.h
new file mode 100644
index 000000000000..694f89799d59
--- /dev/null
+++ b/dlls/iyuv_32/iyuv_private.h
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2026 Brendan McGrath for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __IYUV_PRIVATE_H
+#define __IYUV_PRIVATE_H
+
+#include "windef.h"
+
+#define COBJMACROS
+#include "mfapi.h"
+#include "mftransform.h"
+
+HRESULT WINAPI winegstreamer_create_color_converter(IMFTransform **out);
+
+#define IDS_NAME        100
+#define IDS_DESCRIPTION 101
+
+#endif /* __IYUV_PRIVATE_H */
diff --git a/dlls/iyuv_32/tests/iyuv_32.c b/dlls/iyuv_32/tests/iyuv_32.c
index 97572411e6e9..2f1c0aae31c9 100644
--- a/dlls/iyuv_32/tests/iyuv_32.c
+++ b/dlls/iyuv_32/tests/iyuv_32.c
@@ -269,7 +269,6 @@ static void test_formats(DWORD handler)
     out.biCompression = BI_RGB;
     out.biBitCount = 24;
     res = ICDecompressBegin(hic, &in, &out);
-    todo_wine
     ok(res == ICERR_OK, "Got %ld.\n", res);
 
     res = ICDecompressEnd(hic);
@@ -297,6 +296,7 @@ static void test_decompress(DWORD handler)
     DWORD res, diff;
     BYTE *i420_data;
     HRSRC resource;
+    DWORD bmp_len;
     HIC hic;
 
     BITMAPINFOHEADER i420_info =
@@ -322,21 +322,17 @@ static void test_decompress(DWORD handler)
 
     resource = FindResourceW(NULL, L"i420frame.bmp", (const WCHAR *)RT_RCDATA);
     i420_data = LockResource(LoadResource(GetModuleHandleW(NULL), resource));
-    i420_data += *(DWORD *)(i420_data + 2);
-    i420_info.biSizeImage = SizeofResource(GetModuleHandleW(NULL), resource);
+    bmp_len = *(DWORD *)(i420_data + 2);
+    i420_data += bmp_len;
+    i420_info.biSizeImage = SizeofResource(GetModuleHandleW(NULL), resource) - bmp_len;
 
     hic = ICOpen(ICTYPE_VIDEO, handler, ICMODE_DECOMPRESS);
     ok(!!hic, "Failed to open codec.\n");
 
     res = ICDecompressBegin(hic, &i420_info, &rgb_info);
-    todo_wine
     ok(res == ICERR_OK, "Got %ld.\n", res);
 
-    if (res != ICERR_OK)
-        goto skip_decompression_tests;
-
     res = ICDecompress(hic, 0, &i420_info, i420_data, &rgb_info, rgb_data);
-    todo_wine
     ok(res == ICERR_OK, "Got %ld.\n", res);
     res = ICDecompressEnd(hic);
     ok(res == ICERR_OK, "Got %ld.\n", res);
@@ -351,10 +347,8 @@ static void test_decompress(DWORD handler)
     for (unsigned int i = 0; i < rgb_info.biSizeImage; ++i)
         diff += abs((int)rgb_data[i] - (int)expect_rgb_data[i]);
     diff = diff * 100 / 256 / rgb_info.biSizeImage;
-    todo_wine
     ok(diff == 0, "Got %lu%% difference.\n", diff);
 
-skip_decompression_tests:
     res = ICClose(hic);
     ok(res == ICERR_OK, "Got %ld.\n", res);
 }
@@ -456,10 +450,7 @@ START_TEST(iyuv_32)
     int i;
 
     hic = ICLocate(ICTYPE_VIDEO, FOURCC_I420, &in, NULL, ICMODE_DECOMPRESS);
-    todo_wine
     ok(!!hic, "Failed to locate iyuv codec\n");
-    if (!hic)
-        return;
     ICClose(hic);
 
     for (i = 0; i < ARRAY_SIZE(handler); i++)
diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec
index 517a485ef41d..87eb83a225d1 100644
--- a/dlls/kernel32/kernel32.spec
+++ b/dlls/kernel32/kernel32.spec
@@ -732,6 +732,7 @@
 # @ stub GetLongPathNameTransactedA
 # @ stub GetLongPathNameTransactedW
 @ stdcall -import GetLongPathNameW(wstr ptr long)
+@ stdcall -import GetMachineTypeAttributes(long ptr)
 @ stdcall GetMailslotInfo(long ptr ptr ptr ptr)
 @ stdcall GetMaximumProcessorCount(long)
 @ stdcall GetMaximumProcessorGroupCount()
diff --git a/dlls/kernel32/tests/loader.c b/dlls/kernel32/tests/loader.c
index 529b9de870dc..3fa8bcef3ef5 100644
--- a/dlls/kernel32/tests/loader.c
+++ b/dlls/kernel32/tests/loader.c
@@ -1552,6 +1552,50 @@ static void test_filenames(void)
     DeleteFileA( long_path );
 }
 
+static void test_getmodulefilenamew_string_termination(void)
+{
+    WCHAR dll_name[MAX_PATH];
+    DWORD rv, err,  dll_name_len, dll_name_term;
+
+    SetLastError(0xdeadbeef);
+    dll_name_len = GetModuleFileNameW(NULL, dll_name, MAX_PATH);
+    ok(dll_name_len > 0, "can't get path for NULL module\n");
+    err = GetLastError();
+    ok(err == ERROR_SUCCESS, "error getting path for NULL module: %lu\n", err);
+
+    memset(dll_name, 0xcc, sizeof(dll_name));
+    SetLastError(0xdeadbeef);
+    rv = GetModuleFileNameW(NULL, dll_name, dll_name_len);
+    ok(rv == dll_name_len, "unexpected return value %lu != %lu\n", rv, dll_name_len);
+    err = GetLastError();
+    ok(err == ERROR_INSUFFICIENT_BUFFER, "didn't get expected error: %lu\n", err);
+    ok(dll_name[rv] == 0xcccc, "buffer overflow\n" );
+    dll_name_term = wcsnlen(dll_name, MAX_PATH);
+    ok(dll_name_term == dll_name_len - 1, "incorrect path termination. Expected %lu got %lu.\n", dll_name_len - 1, dll_name_term);
+}
+
+static void test_getmodulefilenamea_string_termination(void)
+{
+    char dll_name[MAX_PATH];
+    DWORD rv, err, dll_name_len, dll_name_term;
+
+    SetLastError(0xdeadbeef);
+    dll_name_len = GetModuleFileNameA(NULL, dll_name, MAX_PATH);
+    ok(dll_name_len > 0, "can't get path for NULL module\n");
+    err = GetLastError();
+    ok(err == ERROR_SUCCESS, "error getting path for NULL module: %lu\n", err);
+
+    memset(dll_name, '*', sizeof(dll_name));
+    SetLastError(0xdeadbeef);
+    rv = GetModuleFileNameA(NULL, dll_name, dll_name_len);
+    ok(rv == dll_name_len, "unexpected return value %lu != %lu\n", rv, dll_name_len);
+    err = GetLastError();
+    ok(err == ERROR_INSUFFICIENT_BUFFER, "didn't get expected error: %lu\n", err);
+    ok(dll_name[rv] == '*', "buffer overflow\n" );
+    dll_name_term = strnlen(dll_name, MAX_PATH);
+    ok(dll_name_term == dll_name_len - 1, "incorrect path termination. Expected %lu got %lu.\n", dll_name_len - 1, dll_name_term);
+}
+
 /* Verify linking style of import descriptors */
 static void test_ImportDescriptors(void)
 {
@@ -4859,6 +4903,8 @@ START_TEST(loader)
     }
 
     test_filenames();
+    test_getmodulefilenamew_string_termination();
+    test_getmodulefilenamea_string_termination();
     test_ResolveDelayLoadedAPI();
     test_ImportDescriptors();
     test_section_access();
diff --git a/dlls/kernel32/tests/process.c b/dlls/kernel32/tests/process.c
index f67189205d54..a9ff167972ab 100644
--- a/dlls/kernel32/tests/process.c
+++ b/dlls/kernel32/tests/process.c
@@ -5699,7 +5699,7 @@ static void test_GetProcessInformation(void)
     ok(ret, "Unexpected return value %d.\n", ret);
 
     process = GetCurrentProcess();
-    status = NtQuerySystemInformationEx( SystemSupportedProcessorArchitectures, &process, sizeof(process),
+    status = NtQuerySystemInformationEx( SystemSupportedProcessorArchitectures2, &process, sizeof(process),
             machines, sizeof(machines), NULL );
     ok(!status, "Failed to get architectures information.\n");
     for (i = 0; machines[i].Machine; i++)
diff --git a/dlls/kernelbase/file.c b/dlls/kernelbase/file.c
index 83977a2c40be..318844261439 100644
--- a/dlls/kernelbase/file.c
+++ b/dlls/kernelbase/file.c
@@ -873,6 +873,22 @@ HANDLE WINAPI DECLSPEC_HOTPATCH CreateFileW( LPCWSTR filename, DWORD access, DWO
                            NULL, attributes & FILE_ATTRIBUTE_VALID_FLAGS, sharing,
                            nt_disposition[creation - CREATE_NEW],
                            get_nt_file_options( attributes, creation ), NULL, 0 );
+
+    /* Before Windows NT, the write flag was ignored on CD drives */
+    if (status == STATUS_ACCESS_DENIED && (access & GENERIC_WRITE) && (GetVersion() & 0x80000000))
+    {
+        WCHAR volume[MAX_PATH];
+        if (GetVolumePathNameW( filename, volume, ARRAY_SIZE(volume) ) &&
+            GetDriveTypeW( volume ) == DRIVE_CDROM)
+        {
+            WARN( "Ignoring write flag on CD drive\n" );
+            status = NtCreateFile( &ret, (access & ~GENERIC_WRITE) | SYNCHRONIZE | FILE_READ_ATTRIBUTES,
+                                   &attr, &io, NULL, attributes & FILE_ATTRIBUTE_VALID_FLAGS, sharing,
+                                   nt_disposition[creation - CREATE_NEW],
+                                   get_nt_file_options( attributes, creation ), NULL, 0 );
+        }
+    }
+
     if (status)
     {
         if (vxd_name && vxd_name[0])
@@ -3106,26 +3122,27 @@ BOOL WINAPI DECLSPEC_HOTPATCH FlushFileBuffers( HANDLE file )
 BOOL WINAPI DECLSPEC_HOTPATCH GetFileInformationByHandle( HANDLE file, BY_HANDLE_FILE_INFORMATION *info )
 {
     FILE_FS_VOLUME_INFORMATION volume_info;
-    FILE_STAT_INFORMATION stat_info;
+    FILE_ALL_INFORMATION all_info;
     IO_STATUS_BLOCK io;
     NTSTATUS status;
 
-    status = NtQueryInformationFile( file, &io, &stat_info, sizeof(stat_info), FileStatInformation );
+    status = NtQueryInformationFile( file, &io, &all_info, sizeof(all_info), FileAllInformation );
+    if (status == STATUS_BUFFER_OVERFLOW) status = STATUS_SUCCESS;
     if (!set_ntstatus( status )) return FALSE;
 
-    info->dwFileAttributes                = stat_info.FileAttributes;
-    info->ftCreationTime.dwHighDateTime   = stat_info.CreationTime.u.HighPart;
-    info->ftCreationTime.dwLowDateTime    = stat_info.CreationTime.u.LowPart;
-    info->ftLastAccessTime.dwHighDateTime = stat_info.LastAccessTime.u.HighPart;
-    info->ftLastAccessTime.dwLowDateTime  = stat_info.LastAccessTime.u.LowPart;
-    info->ftLastWriteTime.dwHighDateTime  = stat_info.LastWriteTime.u.HighPart;
-    info->ftLastWriteTime.dwLowDateTime   = stat_info.LastWriteTime.u.LowPart;
+    info->dwFileAttributes                = all_info.BasicInformation.FileAttributes;
+    info->ftCreationTime.dwHighDateTime   = all_info.BasicInformation.CreationTime.u.HighPart;
+    info->ftCreationTime.dwLowDateTime    = all_info.BasicInformation.CreationTime.u.LowPart;
+    info->ftLastAccessTime.dwHighDateTime = all_info.BasicInformation.LastAccessTime.u.HighPart;
+    info->ftLastAccessTime.dwLowDateTime  = all_info.BasicInformation.LastAccessTime.u.LowPart;
+    info->ftLastWriteTime.dwHighDateTime  = all_info.BasicInformation.LastWriteTime.u.HighPart;
+    info->ftLastWriteTime.dwLowDateTime   = all_info.BasicInformation.LastWriteTime.u.LowPart;
     info->dwVolumeSerialNumber            = 0;
-    info->nFileSizeHigh                   = stat_info.EndOfFile.u.HighPart;
-    info->nFileSizeLow                    = stat_info.EndOfFile.u.LowPart;
-    info->nNumberOfLinks                  = stat_info.NumberOfLinks;
-    info->nFileIndexHigh                  = stat_info.FileId.u.HighPart;
-    info->nFileIndexLow                   = stat_info.FileId.u.LowPart;
+    info->nFileSizeHigh                   = all_info.StandardInformation.EndOfFile.u.HighPart;
+    info->nFileSizeLow                    = all_info.StandardInformation.EndOfFile.u.LowPart;
+    info->nNumberOfLinks                  = all_info.StandardInformation.NumberOfLinks;
+    info->nFileIndexHigh                  = all_info.InternalInformation.IndexNumber.u.HighPart;
+    info->nFileIndexLow                   = all_info.InternalInformation.IndexNumber.u.LowPart;
 
     status = NtQueryVolumeInformationFile( file, &io, &volume_info, sizeof(volume_info), FileFsVolumeInformation );
     if (status == STATUS_SUCCESS || status == STATUS_BUFFER_OVERFLOW)
diff --git a/dlls/kernelbase/kernelbase.spec b/dlls/kernelbase/kernelbase.spec
index 28c5376e4cd9..2c5906a29c22 100644
--- a/dlls/kernelbase/kernelbase.spec
+++ b/dlls/kernelbase/kernelbase.spec
@@ -587,6 +587,7 @@
 @ stdcall GetLogicalProcessorInformationEx(long ptr ptr)
 @ stdcall GetLongPathNameA(str ptr long)
 @ stdcall GetLongPathNameW(wstr ptr long)
+@ stdcall GetMachineTypeAttributes(long ptr)
 @ stdcall GetMappedFileNameA(long ptr ptr long)
 @ stdcall GetMappedFileNameW(long ptr ptr long)
 # @ stub GetMemoryErrorHandlingCapabilities
diff --git a/dlls/kernelbase/loader.c b/dlls/kernelbase/loader.c
index f4e1ca2e23ab..6c6f1f31881b 100644
--- a/dlls/kernelbase/loader.c
+++ b/dlls/kernelbase/loader.c
@@ -315,7 +315,14 @@ DWORD WINAPI DECLSPEC_HOTPATCH GetModuleFileNameW( HMODULE module, LPWSTR filena
     name.Buffer = filename;
     name.MaximumLength = min( size, UNICODE_STRING_MAX_CHARS ) * sizeof(WCHAR);
     status = LdrGetDllFullName( module, &name );
-    if (!status || status == STATUS_BUFFER_TOO_SMALL) len = name.Length / sizeof(WCHAR);
+    if (!status || status == STATUS_BUFFER_TOO_SMALL)
+    {
+        len = name.Length / sizeof(WCHAR);
+        /* LdrGetDllFullName calls RtlCopyUnicodeString which should terminate
+           if there's space, otherwise: */
+        if (status == STATUS_BUFFER_TOO_SMALL && size > 0)
+            filename[size - 1] = 0;
+    }
     SetLastError( RtlNtStatusToDosError( status ));
 done:
     TRACE( "%s\n", debugstr_wn(filename, len) );
diff --git a/dlls/kernelbase/process.c b/dlls/kernelbase/process.c
index ee1f2e7d010d..d16035fd68ba 100644
--- a/dlls/kernelbase/process.c
+++ b/dlls/kernelbase/process.c
@@ -826,6 +826,38 @@ BOOL WINAPI DECLSPEC_HOTPATCH GetHandleInformation( HANDLE handle, DWORD *flags
 }
 
 
+/***********************************************************************
+ *           GetMachineTypeAttributes   (kernelbase.@)
+ */
+HRESULT WINAPI GetMachineTypeAttributes( USHORT machine, MACHINE_ATTRIBUTES *attr )
+{
+    SYSTEM_SUPPORTED_PROCESSOR_ARCHITECTURES_INFORMATION machines[8];
+    HANDLE process = NULL;
+    NTSTATUS status;
+
+    status = NtQuerySystemInformationEx( SystemSupportedProcessorArchitectures2, &process, sizeof(process),
+                                         machines, sizeof(machines), NULL );
+    if (status) return HRESULT_FROM_NT(status);
+
+    *attr = 0;
+
+    for (unsigned int i = 0; machines[i].Machine; i++)
+    {
+        if (machines[i].Machine == machine)
+        {
+            if (machines[i].KernelMode)
+                *attr |= KernelEnabled;
+            if (machines[i].UserMode)
+                *attr |= UserEnabled;
+            if (machines[i].WoW64Container)
+                *attr |= Wow64Container;
+        }
+    }
+
+    return S_OK;
+}
+
+
 /***********************************************************************
  *           GetPriorityClass   (kernelbase.@)
  */
@@ -1058,7 +1090,7 @@ BOOL WINAPI GetProcessInformation( HANDLE process, PROCESS_INFORMATION_CLASS inf
                 return FALSE;
             }
 
-            status = NtQuerySystemInformationEx( SystemSupportedProcessorArchitectures, &process, sizeof(process),
+            status = NtQuerySystemInformationEx( SystemSupportedProcessorArchitectures2, &process, sizeof(process),
                     machines, sizeof(machines), NULL );
             if (status) return set_ntstatus( status );
 
diff --git a/dlls/kernelbase/tests/process.c b/dlls/kernelbase/tests/process.c
index 9217d07bc0c5..e662fc1ac621 100644
--- a/dlls/kernelbase/tests/process.c
+++ b/dlls/kernelbase/tests/process.c
@@ -43,6 +43,8 @@ static HANDLE (WINAPI *pOpenFileMappingFromApp)( ULONG, BOOL, LPCWSTR);
 static HANDLE (WINAPI *pCreateFileMappingFromApp)(HANDLE, PSECURITY_ATTRIBUTES, ULONG, ULONG64, PCWSTR);
 static LPVOID (WINAPI *pMapViewOfFileFromApp)(HANDLE, ULONG, ULONG64, SIZE_T);
 static BOOL (WINAPI *pUnmapViewOfFile2)(HANDLE, void *, ULONG);
+static HRESULT (WINAPI *pGetMachineTypeAttributes)(USHORT, MACHINE_ATTRIBUTES *);
+static BOOL (WINAPI *pIsWow64Process2)(HANDLE, USHORT *, USHORT *);
 
 static void test_CompareObjectHandles(void)
 {
@@ -627,6 +629,46 @@ static void test_QueryProcessCycleTime(void)
     ok( cycles2 > cycles1, "CPU cycles used by process should be increasing.\n" );
 }
 
+static void test_GetMachineTypeAttributes(void)
+{
+    HRESULT hr;
+    MACHINE_ATTRIBUTES attributes, expected;
+    USHORT process_machine, native_machine;
+    static const WORD machines[] = { 0, IMAGE_FILE_MACHINE_I386,
+                                     IMAGE_FILE_MACHINE_AMD64,
+                                     IMAGE_FILE_MACHINE_ARM64 };
+
+    if (!pGetMachineTypeAttributes)
+    {
+        win_skip("GetMachineTypeAttributes() is not supported.\n");
+        return;
+    }
+
+    pIsWow64Process2(GetCurrentProcess(), &process_machine, &native_machine);
+
+    if (0)  /* crashes on Windows */
+        hr = pGetMachineTypeAttributes(0, NULL);
+
+    for (unsigned int i = 0; i < ARRAY_SIZE(machines); i++)
+    {
+        winetest_push_context("%04x", machines[i]);
+        hr = pGetMachineTypeAttributes(machines[i], &attributes);
+        ok(hr == S_OK, "GetMachineTypeAttributes error 0x%08lx\n", hr);
+
+        expected = 0;
+        if (machines[i] == native_machine)
+            expected |= UserEnabled | KernelEnabled;
+        else if (machines[i] == IMAGE_FILE_MACHINE_I386)
+            expected |= UserEnabled | Wow64Container;
+        else if (machines[i] == IMAGE_FILE_MACHINE_AMD64 &&
+                 native_machine == IMAGE_FILE_MACHINE_ARM64)
+            expected |= UserEnabled;
+
+        ok(attributes == expected, "Got attributes 0x%08x, expected 0x%08x\n", attributes, expected);
+        winetest_pop_context();
+    }
+}
+
 static void init_funcs(void)
 {
     HMODULE hmod = GetModuleHandleA("kernelbase.dll");
@@ -634,6 +676,8 @@ static void init_funcs(void)
 #define X(f) { p##f = (void*)GetProcAddress(hmod, #f); }
     X(CompareObjectHandles);
     X(CreateFileMappingFromApp);
+    X(GetMachineTypeAttributes);
+    X(IsWow64Process2);
     X(MapViewOfFile3);
     X(MapViewOfFileFromApp);
     X(OpenFileMappingFromApp);
@@ -663,4 +707,5 @@ START_TEST(process)
     test_CreateFileMappingFromApp();
     test_MapViewOfFileFromApp();
     test_QueryProcessCycleTime();
+    test_GetMachineTypeAttributes();
 }
diff --git a/dlls/kernelbase/winerror.mc b/dlls/kernelbase/winerror.mc
index 4e3a3cf4372d..55354bf4f856 100644
--- a/dlls/kernelbase/winerror.mc
+++ b/dlls/kernelbase/winerror.mc
@@ -3742,6 +3742,11 @@ SymbolicName=ERROR_NOT_CONNECTED
 Language=ENU
 This network connection does not exist.
 .
+MessageId=4390
+SymbolicName=ERROR_NOT_A_REPARSE_POINT
+Language=ENU
+File or directory is not a reparse point.
+.
 MessageId=10004
 SymbolicName=WSAEINTR
 Language=ENU
diff --git a/dlls/krnl386.exe16/int21.c b/dlls/krnl386.exe16/int21.c
index e8f1361cc377..13f33966f8a2 100644
--- a/dlls/krnl386.exe16/int21.c
+++ b/dlls/krnl386.exe16/int21.c
@@ -920,13 +920,6 @@ static BOOL INT21_CreateFile( CONTEXT *context,
     MultiByteToWideChar(CP_OEMCP, 0, pathA, -1, pathW, MAX_PATH);
 
     winHandle = CreateFileW( pathW, winAccess, winSharing, NULL, winMode, winAttributes, 0 );
-    /* DOS allows opening files on a CDROM R/W */
-    if( winHandle == INVALID_HANDLE_VALUE &&
-        (GetLastError() == ERROR_WRITE_PROTECT ||
-         GetLastError() == ERROR_ACCESS_DENIED)) {
-        winHandle = CreateFileW( pathW, winAccess & ~GENERIC_WRITE,
-                                 winSharing, NULL, winMode, winAttributes, 0 );
-    }
 
     if (winHandle == INVALID_HANDLE_VALUE)
         return FALSE;
diff --git a/dlls/mciavi32/mciavi.c b/dlls/mciavi32/mciavi.c
index 5706b60472bd..cf0dbe54712f 100644
--- a/dlls/mciavi32/mciavi.c
+++ b/dlls/mciavi32/mciavi.c
@@ -175,6 +175,8 @@ static void MCIAVI_CleanUp(WINE_MCIAVI* wma)
         free(wma->lpFileName);
         wma->lpFileName = NULL;
 
+        DrawDibClose(wma->hdd);
+
         free(wma->lpVideoIndex);
         wma->lpVideoIndex = NULL;
         free(wma->lpAudioIndex);
diff --git a/dlls/mciavi32/mmoutput.c b/dlls/mciavi32/mmoutput.c
index 1a3945a60cda..b064d151b46f 100644
--- a/dlls/mciavi32/mmoutput.c
+++ b/dlls/mciavi32/mmoutput.c
@@ -472,6 +472,14 @@ BOOL    MCIAVI_OpenVideo(WINE_MCIAVI* wma)
     }
 
 paint_frame:
+    if (!(wma->hdd = DrawDibOpen()))
+    {
+	ERR("DrawDibOpen() failed.\n");
+	free(wma->outdata);
+	wma->outdata = NULL;
+	return FALSE;
+    }
+
     hDC = wma->hWndPaint ? GetDC(wma->hWndPaint) : 0;
     if (hDC)
     {
@@ -631,12 +639,9 @@ double MCIAVI_PaintFrame(WINE_MCIAVI* wma, HDC hDC)
         pBitmapInfo = (LPBITMAPINFO)wma->inbih;
     }
 
-    StretchDIBits(hDC,
-                  wma->dest.left, wma->dest.top,
-                  wma->dest.right - wma->dest.left, wma->dest.bottom - wma->dest.top,
-                  wma->source.left, wma->source.top,
-                  wma->source.right - wma->source.left, wma->source.bottom - wma->source.top,
-                  pBitmapData, pBitmapInfo, DIB_RGB_COLORS, SRCCOPY);
+    DrawDibDraw(wma->hdd, hDC, wma->dest.left, wma->dest.top, wma->dest.right - wma->dest.left, wma->dest.bottom - wma->dest.top,
+                &pBitmapInfo->bmiHeader, pBitmapData,
+                wma->source.left, wma->source.top, wma->source.right - wma->source.left, wma->source.bottom - wma->source.top, 0);
 
     return (wma->ash_video.dwScale / (double)wma->ash_video.dwRate) * 1000000;
 }
diff --git a/dlls/mciavi32/private_mciavi.h b/dlls/mciavi32/private_mciavi.h
index 806804714a58..32c6189cdcc8 100644
--- a/dlls/mciavi32/private_mciavi.h
+++ b/dlls/mciavi32/private_mciavi.h
@@ -84,6 +84,8 @@ typedef struct {
     /* data for the background mechanism */
     CRITICAL_SECTION	cs;
     HANDLE              hStopEvent;
+    /* data for presentation */
+    HDRAWDIB            hdd;
 } WINE_MCIAVI;
 
 extern HINSTANCE MCIAVI_hInstance;
diff --git a/dlls/mciavi32/wnd.c b/dlls/mciavi32/wnd.c
index 643478f018d1..bf3b23e393aa 100644
--- a/dlls/mciavi32/wnd.c
+++ b/dlls/mciavi32/wnd.c
@@ -78,6 +78,20 @@ static LRESULT WINAPI MCIAVI_WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPA
         }
        return 1;
 
+       case WM_SIZE:
+        {
+            WINE_MCIAVI *wma = (WINE_MCIAVI *)mciGetDriverData(GetWindowLongW(hWnd, 0));
+
+            if (!wma)
+                return DefWindowProcW(hWnd, uMsg, wParam, lParam);
+
+            EnterCriticalSection(&wma->cs);
+            wma->dest.right = LOWORD(lParam);
+            wma->dest.bottom = HIWORD(lParam);
+            LeaveCriticalSection(&wma->cs);
+            return DefWindowProcW(hWnd, uMsg, wParam, lParam);
+        }
+
     default:
         return DefWindowProcW(hWnd, uMsg, wParam, lParam);
     }
diff --git a/dlls/mf/tests/mf.c b/dlls/mf/tests/mf.c
index 7aca38c7fd27..122e56bb0732 100644
--- a/dlls/mf/tests/mf.c
+++ b/dlls/mf/tests/mf.c
@@ -9315,9 +9315,9 @@ static void test_h264_output_alignment(void)
 
     frame_size = get_current_media_type_frame_size(transform);
     todo_wine
-    ok(frame_size == (((UINT64)64 << 32) | 72), "Unexpected frame size %#llx\n", frame_size);
+    ok(frame_size == (((UINT64)64 << 32) | 72), "Unexpected frame size %#I64x\n", frame_size);
     frame_size = get_current_media_type_frame_size(handler);
-    ok(frame_size == (((UINT64)64 << 32) | 72), "Unexpected frame size %#llx\n", frame_size);
+    ok(frame_size == (((UINT64)64 << 32) | 72), "Unexpected frame size %#I64x\n", frame_size);
 
     propvar.vt = VT_EMPTY;
     hr = IMFMediaSession_Start(session, &GUID_NULL, &propvar);
@@ -9328,10 +9328,10 @@ static void test_h264_output_alignment(void)
     ok(ret == WAIT_OBJECT_0, "WaitForSingleObject returned %lu\n", ret);
     frame_size = get_current_media_type_frame_size(transform);
     todo_wine
-    ok(frame_size == (((UINT64)64 << 32) | 80), "Unexpected frame size %#llx\n", frame_size);
+    ok(frame_size == (((UINT64)64 << 32) | 80), "Unexpected frame size %#I64x\n", frame_size);
     frame_size = get_current_media_type_frame_size(handler);
     todo_wine
-    ok(frame_size == (((UINT64)64 << 32) | 80), "Unexpected frame size %#llx\n", frame_size);
+    ok(frame_size == (((UINT64)64 << 32) | 80), "Unexpected frame size %#I64x\n", frame_size);
 
     hr = IMFMediaSession_Stop(session);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
diff --git a/dlls/mf/tests/topology.c b/dlls/mf/tests/topology.c
index 63a8192aca34..6d433b3e1c2a 100644
--- a/dlls/mf/tests/topology.c
+++ b/dlls/mf/tests/topology.c
@@ -2249,7 +2249,6 @@ static IMFSampleGrabberSinkCallback *create_test_grabber_callback(void)
 enum loader_test_flags
 {
     LOADER_TODO = 0x1,
-    LOADER_TODO_OUT_TYPE = 0x2,
     LOADER_SET_XVP_FOR_PLAYBACK = 0x4,
     LOADER_NEEDS_VIDEO_PROCESSOR = 0x8,
     LOADER_SET_ENUMERATE_SOURCE_TYPES = 0x10,
@@ -2259,14 +2258,10 @@ enum loader_test_flags
     LOADER_ADD_RESAMPLER_MFT = 0x100,
     LOADER_SUPPORT_ANY = 0x200,
     LOADER_EXPECT_SINK_ENUMERATED = 0x400,
-    LOADER_EXPECT_SINK_ENUMERATED_TODO = 0x800,
     LOADER_ADD_TEST_MFT = 0x1000,
     LOADER_TEST_MFT_EXPECT_CONVERTER = 0x2000,
     LOADER_EXPECT_MFT_OUTPUT_ENUMERATED = 0x4000,
     LOADER_EXPECT_MFT_INPUT_ENUMERATED = 0x8000,
-    LOADER_EXPECT_MFT_INPUT_ENUMERATED_TODO = 0x10000,
-    LOADER_TODO_MFT_IN_TYPE = 0x20000,
-    LOADER_TODO_MFT_OUT_TYPE = 0x40000,
 };
 
 static void test_topology_loader(void)
@@ -2556,7 +2551,7 @@ static void test_topology_loader(void)
             /* PCM -> PCM, different enumerated bps, no current type, sink allow converter, no current output type */
             .input_types = {&audio_pcm_44100}, .output_types = {&audio_pcm_48000}, .sink_method = MF_CONNECT_ALLOW_CONVERTER, .source_method = MF_CONNECT_DIRECT,
             .expected_result = S_OK, .converter_class = CLSID_CResamplerMediaObject,
-            .flags = LOADER_NO_CURRENT_OUTPUT | LOADER_SET_MEDIA_TYPES | LOADER_EXPECT_SINK_ENUMERATED_TODO,
+            .flags = LOADER_NO_CURRENT_OUTPUT | LOADER_SET_MEDIA_TYPES | LOADER_EXPECT_SINK_ENUMERATED,
         },
         {
             /* PCM -> PCM, different enumerated bps, no current type, sink allow decoder */
@@ -2605,7 +2600,6 @@ static void test_topology_loader(void)
             .input_types = {&audio_mp3_44100}, .output_types = {&audio_pcm_44100}, .sink_method = MF_CONNECT_ALLOW_CONVERTER, .source_method = -1,
             .current_input = &audio_mp3_44100,
             .expected_result = MF_E_TRANSFORM_NOT_POSSIBLE_FOR_CURRENT_MEDIATYPE_COMBINATION,
-            .flags = LOADER_TODO,
         },
         {
             /* MP3 -> PCM */
@@ -2624,21 +2618,21 @@ static void test_topology_loader(void)
             .input_types = {&audio_mp3_44100}, .output_types = {&audio_float_48000}, .sink_method = MF_CONNECT_ALLOW_DECODER, .source_method = -1,
             .current_input = &audio_mp3_44100, .decoded_type = &audio_float_44100_no_ch,
             .expected_result = S_OK, .decoder_class = CLSID_CMP3DecMediaObject, .converter_class = CLSID_CResamplerMediaObject,
-            .flags = LOADER_NO_CURRENT_OUTPUT | LOADER_SET_MEDIA_TYPES | LOADER_EXPECT_SINK_ENUMERATED_TODO,
+            .flags = LOADER_NO_CURRENT_OUTPUT | LOADER_SET_MEDIA_TYPES | LOADER_EXPECT_SINK_ENUMERATED,
         },
         {
             /* MP3 -> {float, PCM}, need both decoder and converter, no current output type */
             .input_types = {&audio_mp3_44100}, .output_types = {&audio_float_48000, &audio_pcm_48000}, .sink_method = MF_CONNECT_ALLOW_DECODER, .source_method = -1,
             .current_input = &audio_mp3_44100, .decoded_type = &audio_float_44100_stereo,
             .expected_result = S_OK, .decoder_class = CLSID_CMP3DecMediaObject, .converter_class = CLSID_CResamplerMediaObject,
-            .flags = LOADER_NO_CURRENT_OUTPUT | LOADER_SET_MEDIA_TYPES | LOADER_EXPECT_SINK_ENUMERATED_TODO,
+            .flags = LOADER_NO_CURRENT_OUTPUT | LOADER_SET_MEDIA_TYPES | LOADER_EXPECT_SINK_ENUMERATED,
         },
         {
             /* MP3 -> {PCM, float}, need both decoder and converter, no current output type */
             .input_types = {&audio_mp3_44100}, .output_types = {&audio_pcm_48000, &audio_float_48000}, .sink_method = MF_CONNECT_ALLOW_DECODER, .source_method = -1,
             .current_input = &audio_mp3_44100, .decoded_type = &audio_float_44100_stereo, .expected_output_index = 1,
             .expected_result = S_OK, .decoder_class = CLSID_CMP3DecMediaObject, .converter_class = CLSID_CResamplerMediaObject,
-            .flags = LOADER_NO_CURRENT_OUTPUT | LOADER_SET_MEDIA_TYPES | LOADER_TODO_OUT_TYPE | LOADER_EXPECT_SINK_ENUMERATED_TODO,
+            .flags = LOADER_NO_CURRENT_OUTPUT | LOADER_SET_MEDIA_TYPES | LOADER_EXPECT_SINK_ENUMERATED,
         },
 
         {
@@ -2652,7 +2646,7 @@ static void test_topology_loader(void)
             .input_types = {&audio_mp3_44100, &audio_pcm_44100}, .output_types = {&audio_pcm_44100}, .sink_method = MF_CONNECT_ALLOW_DECODER,
             .source_method = MF_CONNECT_RESOLVE_INDEPENDENT_OUTPUTTYPES,
             .expected_result = S_OK, .decoder_class = CLSID_CMP3DecMediaObject,
-            .flags = LOADER_NO_CURRENT_OUTPUT | LOADER_SET_MEDIA_TYPES | LOADER_SET_ENUMERATE_SOURCE_TYPES | LOADER_EXPECT_SINK_ENUMERATED_TODO,
+            .flags = LOADER_NO_CURRENT_OUTPUT | LOADER_SET_MEDIA_TYPES | LOADER_SET_ENUMERATE_SOURCE_TYPES | LOADER_EXPECT_SINK_ENUMERATED,
         },
 
         {
@@ -2661,7 +2655,7 @@ static void test_topology_loader(void)
             .mft_output_types = {&audio_float_minimal, &audio_pcm_minimal, &audio_float_48000, &audio_pcm_48000},
             .mft_current_output = &audio_pcm_minimal,
             .expected_result = MF_E_INVALIDMEDIATYPE,
-            .flags = LOADER_ADD_TEST_MFT | LOADER_TODO_MFT_IN_TYPE | LOADER_TODO_MFT_OUT_TYPE | LOADER_TODO,
+            .flags = LOADER_ADD_TEST_MFT,
         },
         {
             /* PCM -> PCM, different enumerated bps, add test MFT */
@@ -2676,7 +2670,7 @@ static void test_topology_loader(void)
             .mft_output_types = {&audio_float_minimal, &audio_pcm_minimal, &audio_float_48000, &audio_pcm_48000_resampler},
             .mft_current_output = &audio_pcm_48000,
             .expected_result = S_OK,
-            .flags = LOADER_ADD_TEST_MFT | LOADER_TODO_MFT_IN_TYPE | LOADER_TODO_MFT_OUT_TYPE,
+            .flags = LOADER_ADD_TEST_MFT,
         },
         {
             /* PCM -> PCM, different enumerated bps, add test MFT, configure MFT, no output types */
@@ -2684,7 +2678,7 @@ static void test_topology_loader(void)
             .mft_output_types = {&audio_float_minimal, &audio_pcm_minimal, &audio_float_48000, &audio_pcm_48000_resampler},
             .mft_current_output = &audio_pcm_48000,
             .expected_result = S_OK,
-            .flags = LOADER_ADD_TEST_MFT | LOADER_NO_CURRENT_OUTPUT | LOADER_TODO_MFT_IN_TYPE | LOADER_TODO_MFT_OUT_TYPE,
+            .flags = LOADER_ADD_TEST_MFT | LOADER_NO_CURRENT_OUTPUT,
         },
         {
             /* MP3 -> PCM, different enumerated bps, add test MFT, configure MFT */
@@ -2692,14 +2686,14 @@ static void test_topology_loader(void)
             .mft_input_type = &audio_pcm_44100, .mft_output_types = {&audio_pcm_48000},
             .decoded_type = &audio_pcm_44100,
             .expected_result = S_OK, .decoder_class = CLSID_CMP3DecMediaObject,
-            .flags = LOADER_ADD_TEST_MFT | LOADER_EXPECT_MFT_INPUT_ENUMERATED_TODO | LOADER_TODO_MFT_OUT_TYPE,
+            .flags = LOADER_ADD_TEST_MFT | LOADER_EXPECT_MFT_INPUT_ENUMERATED,
         },
         {
             /* MP3 -> PCM, different enumerated bps, add incompatible test MFT, configure MFT */
             .input_types = {&audio_mp3_44100}, .output_types = {&audio_pcm_48000}, .sink_method = MF_CONNECT_DIRECT, .source_method = MF_CONNECT_DIRECT,
             .mft_input_type = &audio_aac_44100, .mft_output_types = {&audio_pcm_48000},
             .expected_result = MF_E_TOPO_CODEC_NOT_FOUND,
-            .flags = LOADER_ADD_TEST_MFT | LOADER_EXPECT_MFT_INPUT_ENUMERATED_TODO | LOADER_TODO,
+            .flags = LOADER_ADD_TEST_MFT | LOADER_EXPECT_MFT_INPUT_ENUMERATED,
         },
 
         {
@@ -2754,7 +2748,7 @@ static void test_topology_loader(void)
             /* RGB32 -> Any Video, no current output type, refuse input type */
             .input_types = {&video_i420_1280}, .output_types = {&video_video_processor_rgb32}, .sink_method = -1, .source_method = -1,
             .expected_result = S_OK, .converter_class = CLSID_CColorConvertDMO,
-            .flags = LOADER_NO_CURRENT_OUTPUT | LOADER_SET_INVALID_INPUT | LOADER_SET_MEDIA_TYPES | LOADER_EXPECT_SINK_ENUMERATED_TODO,
+            .flags = LOADER_NO_CURRENT_OUTPUT | LOADER_SET_INVALID_INPUT | LOADER_SET_MEDIA_TYPES | LOADER_EXPECT_SINK_ENUMERATED,
         },
 
         {
@@ -2762,7 +2756,7 @@ static void test_topology_loader(void)
             .input_types = {&video_h264_1280}, .output_types = {&video_color_convert_1280_rgb32, &video_video_processor_1280_rgb32}, .sink_method = -1, .source_method = -1,
             .decoded_type = &video_nv12_1280, .expected_output_index = 1,
             .expected_result = S_OK, .decoder_class = CLSID_CMSH264DecoderMFT, .converter_class = CLSID_CColorConvertDMO,
-            .flags = LOADER_NO_CURRENT_OUTPUT | LOADER_SET_MEDIA_TYPES | LOADER_EXPECT_SINK_ENUMERATED_TODO | LOADER_TODO,
+            .flags = LOADER_NO_CURRENT_OUTPUT | LOADER_SET_MEDIA_TYPES | LOADER_EXPECT_SINK_ENUMERATED,
         },
         {
             /* H264 -> {DMO_RGB32, MF_RGB32} */
@@ -2777,28 +2771,28 @@ static void test_topology_loader(void)
             .decoded_type = &video_generic_yuv_1280, .expected_output_index = 1,
             .decoded_subtypes = {&MFVideoFormat_NV12, &MFVideoFormat_YUY2},
             .expected_result = S_OK, .decoder_class = CLSID_CMSH264DecoderMFT, .converter_class = CLSID_CColorConvertDMO,
-            .flags = LOADER_NO_CURRENT_OUTPUT | LOADER_SET_MEDIA_TYPES | LOADER_TODO_OUT_TYPE | LOADER_EXPECT_SINK_ENUMERATED_TODO,
+            .flags = LOADER_NO_CURRENT_OUTPUT | LOADER_SET_MEDIA_TYPES | LOADER_EXPECT_SINK_ENUMERATED,
         },
         {
             /* H264 -> {RGB24, RGB32} */
             .input_types = {&video_h264_1280}, .output_types = {&video_video_processor_1280_rgb24, &video_video_processor_1280_rgb32}, .sink_method = -1, .source_method = -1,
             .decoded_type = &video_nv12_1280, .expected_output_index = 1,
             .expected_result = S_OK, .decoder_class = CLSID_CMSH264DecoderMFT, .converter_class = CLSID_CColorConvertDMO,
-            .flags = LOADER_NO_CURRENT_OUTPUT | LOADER_SET_MEDIA_TYPES | LOADER_TODO_OUT_TYPE | LOADER_EXPECT_SINK_ENUMERATED_TODO,
+            .flags = LOADER_NO_CURRENT_OUTPUT | LOADER_SET_MEDIA_TYPES | LOADER_EXPECT_SINK_ENUMERATED,
         },
         {
             /* H264 -> {RGB24, RGB555} */
             .input_types = {&video_h264_1280}, .output_types = {&video_video_processor_1280_rgb24, &video_video_processor_1280_rgb555}, .sink_method = -1, .source_method = -1,
             .decoded_type = &video_nv12_1280, .expected_output_index = 1,
             .expected_result = S_OK, .decoder_class = CLSID_CMSH264DecoderMFT, .converter_class = CLSID_CColorConvertDMO,
-            .flags = LOADER_NO_CURRENT_OUTPUT | LOADER_SET_MEDIA_TYPES | LOADER_TODO_OUT_TYPE | LOADER_EXPECT_SINK_ENUMERATED_TODO,
+            .flags = LOADER_NO_CURRENT_OUTPUT | LOADER_SET_MEDIA_TYPES | LOADER_EXPECT_SINK_ENUMERATED,
         },
         {
             /* H264 -> {RGB555, RGB24} */
             .input_types = {&video_h264_1280}, .output_types = {&video_video_processor_1280_rgb555, &video_video_processor_1280_rgb24}, .sink_method = -1, .source_method = -1,
             .decoded_type = &video_nv12_1280, .expected_output_index = 1,
             .expected_result = S_OK, .decoder_class = CLSID_CMSH264DecoderMFT, .converter_class = CLSID_CColorConvertDMO,
-            .flags = LOADER_NO_CURRENT_OUTPUT | LOADER_SET_MEDIA_TYPES | LOADER_TODO_OUT_TYPE | LOADER_EXPECT_SINK_ENUMERATED_TODO,
+            .flags = LOADER_NO_CURRENT_OUTPUT | LOADER_SET_MEDIA_TYPES | LOADER_EXPECT_SINK_ENUMERATED,
         },
 
         {
@@ -2806,7 +2800,7 @@ static void test_topology_loader(void)
             .input_types = {&video_h264_1280}, .output_types = {&video_color_convert_1280_rgb32}, .sink_method = -1, .source_method = -1,
             .decoded_type = &video_nv12_1280,
             .expected_result = MF_E_TOPO_CODEC_NOT_FOUND, .decoder_class = CLSID_CMSH264DecoderMFT, .converter_class = CLSID_CColorConvertDMO,
-            .flags = LOADER_NO_CURRENT_OUTPUT | LOADER_SET_MEDIA_TYPES | LOADER_EXPECT_SINK_ENUMERATED_TODO,
+            .flags = LOADER_NO_CURRENT_OUTPUT | LOADER_SET_MEDIA_TYPES | LOADER_EXPECT_SINK_ENUMERATED,
         },
 
         {
@@ -2815,7 +2809,7 @@ static void test_topology_loader(void)
             .decoded_type = &video_generic_yuv_1280, .expected_output_index = 1,
             .decoded_subtypes = {&MFVideoFormat_NV12, &MFVideoFormat_YUY2},
             .expected_result = S_OK, .decoder_class = CLSID_CMSH264DecoderMFT, .converter_class = CLSID_VideoProcessorMFT,
-            .flags = LOADER_NO_CURRENT_OUTPUT | LOADER_SET_MEDIA_TYPES | LOADER_SET_XVP_FOR_PLAYBACK | LOADER_EXPECT_SINK_ENUMERATED_TODO | LOADER_TODO,
+            .flags = LOADER_NO_CURRENT_OUTPUT | LOADER_SET_MEDIA_TYPES | LOADER_SET_XVP_FOR_PLAYBACK | LOADER_EXPECT_SINK_ENUMERATED,
         },
         {
             /* H264 -> RGB32, resize, set XVP */
@@ -2830,21 +2824,21 @@ static void test_topology_loader(void)
             .input_types = {&video_h264_1280}, .output_types = {&video_color_convert_1280_rgb32}, .sink_method = -1, .source_method = -1,
             .mft_input_type = &video_color_convert_1280_rgb32, .mft_output_types = {&video_color_convert_1280_rgb32},
             .expected_result = MF_E_TOPO_CODEC_NOT_FOUND, .decoder_class = CLSID_CMSH264DecoderMFT,
-            .flags = LOADER_ADD_TEST_MFT | LOADER_EXPECT_MFT_INPUT_ENUMERATED_TODO | LOADER_TODO,
+            .flags = LOADER_ADD_TEST_MFT | LOADER_EXPECT_MFT_INPUT_ENUMERATED,
         },
         {
             /* H264 -> RGB32, Video Processor media type, add test MFT */
             .input_types = {&video_h264_1280}, .output_types = {&video_video_processor_1280_rgb32}, .sink_method = -1, .source_method = -1,
             .mft_input_type = &video_video_processor_1280_rgb32, .mft_output_types = {&video_video_processor_1280_rgb32},
             .expected_result = S_OK, .decoder_class = CLSID_CMSH264DecoderMFT, .converter_class = CLSID_CColorConvertDMO,
-            .flags = LOADER_ADD_TEST_MFT | LOADER_TODO_MFT_OUT_TYPE | LOADER_TEST_MFT_EXPECT_CONVERTER | LOADER_EXPECT_MFT_INPUT_ENUMERATED_TODO,
+            .flags = LOADER_ADD_TEST_MFT | LOADER_TEST_MFT_EXPECT_CONVERTER | LOADER_EXPECT_MFT_INPUT_ENUMERATED,
         },
         {
             /* H264 -> NV12, add test MFT */
             .input_types = {&video_h264_1280}, .output_types = {&video_nv12_1280}, .sink_method = -1, .source_method = -1,
             .mft_input_type = &video_nv12_1280, .mft_output_types = {&video_nv12_1280},
             .expected_result = S_OK, .decoder_class = CLSID_CMSH264DecoderMFT,
-            .flags = LOADER_ADD_TEST_MFT | LOADER_TODO_MFT_OUT_TYPE | LOADER_EXPECT_MFT_INPUT_ENUMERATED_TODO,
+            .flags = LOADER_ADD_TEST_MFT | LOADER_EXPECT_MFT_INPUT_ENUMERATED,
         },
     };
 
@@ -3298,13 +3292,11 @@ todo_wine {
                 hr = IMFTopologyNode_GetGUID(mft_node, &MF_TOPONODE_TRANSFORM_OBJECTID, &class_id);
                 if (test->flags & LOADER_SET_XVP_FOR_PLAYBACK)
                 {
-                    todo_wine
                     ok(hr == MF_E_ATTRIBUTENOTFOUND, "Got attribute hr %#lx.\n", hr);
                 }
                 else
                 {
                     ok(hr == S_OK, "Failed to get attribute, hr %#lx.\n", hr);
-                    todo_wine_if(IsEqualGUID(&test->converter_class, &CLSID_CColorConvertDMO))
                     ok(IsEqualGUID(&class_id, &test->converter_class), "got MF_TOPONODE_TRANSFORM_OBJECTID %s.\n", debugstr_guid(&class_id));
                 }
 
@@ -3336,7 +3328,6 @@ todo_wine {
                 ok(hr == S_OK, "Failed to get transform output type, hr %#lx.\n", hr);
                 hr = IMFMediaType_Compare(output_types[test->expected_output_index], (IMFAttributes *)media_type, MF_ATTRIBUTES_MATCH_OUR_ITEMS, &ret);
                 ok(hr == S_OK, "Failed to compare media types, hr %#lx.\n", hr);
-                todo_wine_if(test->flags & LOADER_TODO_OUT_TYPE)
                 ok(ret, "Output type of last transform doesn't match sink node type.\n");
                 IMFMediaType_Release(media_type);
 
@@ -3372,22 +3363,18 @@ todo_wine {
         else
             ok(!handler.enum_count, "got %lu GetMediaTypeByIndex\n", handler.enum_count);
         ok(!handler.set_current_count, "got %lu SetCurrentMediaType\n", handler.set_current_count);
-        todo_wine_if(test->flags & LOADER_EXPECT_SINK_ENUMERATED_TODO)
-        ok(handler.enum_complete == !!(test->flags & (LOADER_EXPECT_SINK_ENUMERATED | LOADER_EXPECT_SINK_ENUMERATED_TODO)),
+        ok(handler.enum_complete == !!(test->flags & LOADER_EXPECT_SINK_ENUMERATED),
                 "Got enum_complete %u.\n", handler.enum_complete);
 
         if (test_transform)
         {
-            todo_wine_if(test->flags & LOADER_EXPECT_MFT_INPUT_ENUMERATED_TODO)
-            ok(test_transform->input_enum_complete == !!(test->flags & (LOADER_EXPECT_MFT_INPUT_ENUMERATED | LOADER_EXPECT_MFT_INPUT_ENUMERATED_TODO)),
+            ok(test_transform->input_enum_complete == !!(test->flags & LOADER_EXPECT_MFT_INPUT_ENUMERATED),
                     "got transform input_enum_complete %u\n", test_transform->input_enum_complete);
             todo_wine_if(test_transform->output_enum_complete && (test->flags & LOADER_TODO))
             ok(test_transform->output_enum_complete == !!(test->flags & LOADER_EXPECT_MFT_OUTPUT_ENUMERATED),
                     "got transform output_enum_complete %u\n", test_transform->output_enum_complete);
-            todo_wine_if(test->flags & LOADER_TODO_MFT_IN_TYPE)
             ok(test_transform->input_type_set == (test->expected_result != MF_E_TOPO_CODEC_NOT_FOUND),
                     "Got transform input_type_set %u.\n", test_transform->input_type_set);
-            todo_wine_if(test->flags & LOADER_TODO_MFT_OUT_TYPE)
             ok(test_transform->output_type_set == SUCCEEDED(test->expected_result),
                     "Got transform output_type_set %u.\n", test_transform->output_type_set);
             IMFTransform_Release(&test_transform->IMFTransform_iface);
@@ -3427,7 +3414,6 @@ todo_wine {
     ok(ref == 0, "Release returned %ld\n", ref);
 
     ref = IMFMediaType_Release(input_types[0]);
-    todo_wine
     ok(ref == 0, "Release returned %ld\n", ref);
     ref = IMFMediaType_Release(input_types[1]);
     ok(ref == 0, "Release returned %ld\n", ref);
diff --git a/dlls/mf/tests/transform.c b/dlls/mf/tests/transform.c
index 87d0e2750829..5b7420054cfd 100644
--- a/dlls/mf/tests/transform.c
+++ b/dlls/mf/tests/transform.c
@@ -57,7 +57,13 @@ DEFINE_GUID(DMOVideoFormat_RGB565,D3DFMT_R5G6B5,0x524f,0x11ce,0x9f,0x53,0x00,0x2
 DEFINE_GUID(DMOVideoFormat_RGB8,D3DFMT_P8,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);
 DEFINE_GUID(MFAudioFormat_RAW_AAC1,WAVE_FORMAT_RAW_AAC1,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
 DEFINE_GUID(MFVideoFormat_WMV_Unknown,0x7ce12ca9,0xbfbf,0x43d9,0x9d,0x00,0x82,0xb8,0xed,0x54,0x31,0x6b);
+DEFINE_MEDIATYPE_GUID(MFVideoFormat_RGB1, D3DFMT_A1);
+DEFINE_MEDIATYPE_GUID(MFVideoFormat_RGB4, MAKEFOURCC('4','P','x','x'));
 DEFINE_MEDIATYPE_GUID(MFVideoFormat_ABGR32,D3DFMT_A8B8G8R8);
+DEFINE_MEDIATYPE_GUID(MFVideoFormat_ARGB1555, D3DFMT_A1R5G5B5);
+DEFINE_MEDIATYPE_GUID(MFVideoFormat_ARGB4444, D3DFMT_A4R4G4B4);
+/* SDK MFVideoFormat_A2R10G10B10 uses D3DFMT_A2B10G10R10, let's name it the other way */
+DEFINE_MEDIATYPE_GUID(MFVideoFormat_A2B10G10R10, D3DFMT_A2R10G10B10);
 DEFINE_MEDIATYPE_GUID(MFVideoFormat_P208,MAKEFOURCC('P','2','0','8'));
 DEFINE_MEDIATYPE_GUID(MFVideoFormat_VC1S,MAKEFOURCC('V','C','1','S'));
 
@@ -65,6 +71,64 @@ DEFINE_GUID(mft_output_sample_incomplete,0xffffff,0xffff,0xffff,0xff,0xff,0xff,0
 
 static const GUID test_attr_guid = {0xdeadbeef};
 
+static BOOL is_dmo_subtype(const GUID *subtype)
+{
+    if (IsEqualGUID(subtype, &MFVideoFormat_RGB1))
+        return FALSE;
+    if (IsEqualGUID(subtype, &MFVideoFormat_RGB4))
+        return FALSE;
+    if (IsEqualGUID(subtype, &MFVideoFormat_RGB8))
+        return FALSE;
+    if (IsEqualGUID(subtype, &MFVideoFormat_RGB555))
+        return FALSE;
+    if (IsEqualGUID(subtype, &MFVideoFormat_RGB565))
+        return FALSE;
+    if (IsEqualGUID(subtype, &MFVideoFormat_RGB24))
+        return FALSE;
+    if (IsEqualGUID(subtype, &MFVideoFormat_RGB32))
+        return FALSE;
+    if (IsEqualGUID(subtype, &MFVideoFormat_ARGB1555))
+        return FALSE;
+    if (IsEqualGUID(subtype, &MFVideoFormat_ARGB4444))
+        return FALSE;
+    if (IsEqualGUID(subtype, &MFVideoFormat_ARGB32))
+        return FALSE;
+    if (IsEqualGUID(subtype, &MFVideoFormat_A2B10G10R10))
+        return FALSE;
+    if (IsEqualGUID(subtype, &MFVideoFormat_A2R10G10B10))
+        return FALSE;
+    return TRUE;
+}
+
+static const GUID * get_mf_subtype_for_am_subtype(const GUID *subtype)
+{
+    if (IsEqualGUID(subtype, &MEDIASUBTYPE_RGB1))
+        return &MFVideoFormat_RGB1;
+    if (IsEqualGUID(subtype, &MEDIASUBTYPE_RGB4))
+        return &MFVideoFormat_RGB4;
+    if (IsEqualGUID(subtype, &MEDIASUBTYPE_RGB8))
+        return &MFVideoFormat_RGB8;
+    if (IsEqualGUID(subtype, &MEDIASUBTYPE_RGB555))
+        return &MFVideoFormat_RGB555;
+    if (IsEqualGUID(subtype, &MEDIASUBTYPE_RGB565))
+        return &MFVideoFormat_RGB565;
+    if (IsEqualGUID(subtype, &MEDIASUBTYPE_RGB24))
+        return &MFVideoFormat_RGB24;
+    if (IsEqualGUID(subtype, &MEDIASUBTYPE_RGB32))
+        return &MFVideoFormat_RGB32;
+    if (IsEqualGUID(subtype, &MEDIASUBTYPE_ARGB1555))
+        return &MFVideoFormat_ARGB1555;
+    if (IsEqualGUID(subtype, &MEDIASUBTYPE_ARGB4444))
+        return &MFVideoFormat_ARGB4444;
+    if (IsEqualGUID(subtype, &MEDIASUBTYPE_ARGB32))
+        return &MFVideoFormat_ARGB32;
+    if (IsEqualGUID(subtype, &MEDIASUBTYPE_A2R10G10B10))
+        return &MFVideoFormat_A2B10G10R10;
+    if (IsEqualGUID(subtype, &MEDIASUBTYPE_A2B10G10R10))
+        return &MFVideoFormat_A2R10G10B10;
+    return subtype;
+}
+
 struct media_buffer
 {
     IMediaBuffer IMediaBuffer_iface;
@@ -5772,7 +5836,7 @@ static void test_h264_decoder_alignment(void)
     output_type = transform_find_available_output_type(transform, &MFVideoFormat_NV12);
     hr = IMFMediaType_GetUINT64(output_type, &MF_MT_FRAME_SIZE, &frame_size);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    ok(frame_size == (((UINT64)actual_width << 32) | actual_height), "Unexpected frame size %#llx\n", frame_size);
+    ok(frame_size == (((UINT64)actual_width << 32) | actual_height), "Unexpected frame size %#I64x\n", frame_size);
 
     hr = IMFTransform_SetOutputType(transform, 0, output_type, 0);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
@@ -5810,7 +5874,7 @@ static void test_h264_decoder_alignment(void)
             output_type = transform_find_available_output_type(transform, &MFVideoFormat_NV12);
             hr = IMFMediaType_GetUINT64(output_type, &MF_MT_FRAME_SIZE, &frame_size);
             ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-            ok(frame_size == (((UINT64)aligned_width << 32) | aligned_height), "Unexpected frame size %#llx\n", frame_size);
+            ok(frame_size == (((UINT64)aligned_width << 32) | aligned_height), "Unexpected frame size %#I64x\n", frame_size);
 
             hr = IMFTransform_SetOutputType(transform, 0, output_type, 0);
             ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
@@ -6211,7 +6275,9 @@ static void test_audio_convert(void)
     IMFMediaType *media_type;
     IMFTransform *transform;
     const BYTE *audio_data;
+    DMO_MEDIA_TYPE dmo_mt;
     ULONG audio_data_len;
+    IMediaObject *dmo;
     ULONG i, ret, ref;
     HRESULT hr;
 
@@ -6274,6 +6340,32 @@ static void test_audio_convert(void)
     check_mft_set_input_type(transform, input_type_desc, S_OK);
     check_mft_get_input_current_type_(__LINE__, transform, expect_input_type_desc, FALSE, TRUE);
 
+
+    hr = IMFTransform_QueryInterface(transform, &IID_IMediaObject, (void **)&dmo);
+    ok(hr == S_OK, "QueryInterface returned %#lx\n", hr);
+
+    memset(&dmo_mt, 0, sizeof(dmo_mt));
+    hr = IMediaObject_GetInputCurrentType(dmo, 0, &dmo_mt);
+    todo_wine ok(hr == S_OK, "GetInputCurrentType returned %#lx\n", hr);
+    todo_wine ok(IsEqualGUID(&dmo_mt.formattype, &FORMAT_WaveFormatEx), "got format %s\n", debugstr_guid(&dmo_mt.formattype));
+    todo_wine ok(dmo_mt.cbFormat >= sizeof(WAVEFORMATEX), "got cbFormat %#lx\n", dmo_mt.cbFormat);
+
+    hr = MFCreateMediaTypeFromRepresentation(AM_MEDIA_TYPE_REPRESENTATION, &dmo_mt, &media_type);
+    todo_wine ok(hr == S_OK, "MFCreateMediaTypeFromRepresentation returned %#lx\n", hr);
+    if (hr == S_OK)
+    {
+    check_media_type(media_type, expect_input_type_desc, -1);
+    IMFMediaType_Release(media_type);
+
+    hr = IMediaObject_SetInputType(dmo, 0, &dmo_mt, 0);
+    ok(hr == S_OK, "SetInputType returned %#lx\n", hr);
+    check_mft_get_input_current_type_(__LINE__, transform, expect_input_type_desc, FALSE, TRUE);
+    }
+
+    MoFreeMediaType(&dmo_mt);
+    IMediaObject_Release(dmo);
+
+
     check_mft_get_input_stream_info(transform, MF_E_TRANSFORM_TYPE_NOT_SET, NULL);
     check_mft_get_output_stream_info(transform, MF_E_TRANSFORM_TYPE_NOT_SET, NULL);
 
@@ -6300,6 +6392,32 @@ static void test_audio_convert(void)
     /* setting the input type does not set the output type to null */
     check_mft_get_output_current_type_(__LINE__, transform, expect_output_type_desc, FALSE, TRUE);
 
+
+    hr = IMFTransform_QueryInterface(transform, &IID_IMediaObject, (void **)&dmo);
+    ok(hr == S_OK, "QueryInterface returned %#lx\n", hr);
+
+    memset(&dmo_mt, 0, sizeof(dmo_mt));
+    hr = IMediaObject_GetOutputCurrentType(dmo, 0, &dmo_mt);
+    todo_wine ok(hr == S_OK, "GetOutputCurrentType returned %#lx\n", hr);
+    todo_wine ok(IsEqualGUID(&dmo_mt.formattype, &FORMAT_WaveFormatEx), "got format %s\n", debugstr_guid(&dmo_mt.formattype));
+    todo_wine ok(dmo_mt.cbFormat >= sizeof(WAVEFORMATEX), "got cbFormat %#lx\n", dmo_mt.cbFormat);
+
+    hr = MFCreateMediaTypeFromRepresentation(AM_MEDIA_TYPE_REPRESENTATION, &dmo_mt, &media_type);
+    todo_wine ok(hr == S_OK, "MFCreateMediaTypeFromRepresentation returned %#lx\n", hr);
+    if (hr == S_OK)
+    {
+    check_media_type(media_type, expect_output_type_desc, -1);
+    IMFMediaType_Release(media_type);
+
+    hr = IMediaObject_SetOutputType(dmo, 0, &dmo_mt, 0);
+    ok(hr == S_OK, "SetOutputType returned %#lx\n", hr);
+    check_mft_get_output_current_type_(__LINE__, transform, expect_output_type_desc, FALSE, TRUE);
+    }
+
+    MoFreeMediaType(&dmo_mt);
+    IMediaObject_Release(dmo);
+
+
     check_mft_get_input_stream_info(transform, S_OK, &input_info);
     check_mft_get_output_stream_info(transform, S_OK, &output_info);
 
@@ -8972,6 +9090,8 @@ static void test_color_convert(BOOL use_2d_buffer)
     ULONG nv12frame_data_len;
     IMFMediaType *media_type;
     IMFTransform *transform;
+    DMO_MEDIA_TYPE dmo_mt;
+    IMediaObject *dmo;
     ULONG i, ret, ref;
     HRESULT hr;
 
@@ -9041,6 +9161,36 @@ static void test_color_convert(BOOL use_2d_buffer)
     check_mft_set_input_type(transform, input_type_desc, S_OK);
     check_mft_get_input_current_type_(__LINE__, transform, expect_input_type_desc, FALSE, TRUE);
 
+
+    hr = IMFTransform_QueryInterface(transform, &IID_IMediaObject, (void **)&dmo);
+    ok(hr == S_OK, "QueryInterface returned %#lx\n", hr);
+
+    memset(&dmo_mt, 0, sizeof(dmo_mt));
+    hr = IMediaObject_GetInputCurrentType(dmo, 0, &dmo_mt);
+    todo_wine ok(hr == S_OK, "GetInputCurrentType returned %#lx\n", hr);
+    todo_wine ok(IsEqualGUID(&dmo_mt.formattype, &FORMAT_MFVideoFormat), "got format %s\n", debugstr_guid(&dmo_mt.formattype));
+    todo_wine ok(dmo_mt.cbFormat == sizeof(MFVIDEOFORMAT), "got cbFormat %#lx\n", dmo_mt.cbFormat);
+    ok(is_dmo_subtype(&dmo_mt.subtype), "got subtype %s\n", debugstr_guid(&dmo_mt.subtype));
+
+    hr = MFCreateMediaTypeFromRepresentation(AM_MEDIA_TYPE_REPRESENTATION, &dmo_mt, &media_type);
+    todo_wine ok(hr == S_OK, "MFCreateMediaTypeFromRepresentation returned %#lx\n", hr);
+    if (hr == S_OK)
+    {
+    /* MFCreateMediaTypeFromRepresentation automatically converts MF to DMO media types */
+    hr = IMFMediaType_SetGUID(media_type, &MF_MT_SUBTYPE, get_mf_subtype_for_am_subtype(&dmo_mt.subtype));
+    ok(hr == S_OK, "SetGUID returned %#lx\n", hr);
+    check_media_type(media_type, expect_input_type_desc, -1);
+    IMFMediaType_Release(media_type);
+
+    hr = IMediaObject_SetInputType(dmo, 0, &dmo_mt, 0);
+    ok(hr == S_OK, "SetInputType returned %#lx\n", hr);
+    check_mft_get_input_current_type_(__LINE__, transform, expect_input_type_desc, FALSE, TRUE);
+    }
+
+    MoFreeMediaType(&dmo_mt);
+    IMediaObject_Release(dmo);
+
+
     for (i = 0; i < ARRAY_SIZE(color_conversion_tests); i++)
     {
         /* flipped sample tests apply only to 2D buffers */
@@ -9052,6 +9202,36 @@ static void test_color_convert(BOOL use_2d_buffer)
         check_mft_set_output_type(transform, color_conversion_tests[i].output_type_desc, S_OK);
         check_mft_get_output_current_type_(__LINE__, transform, color_conversion_tests[i].expect_output_type_desc, FALSE, TRUE);
 
+
+        hr = IMFTransform_QueryInterface(transform, &IID_IMediaObject, (void **)&dmo);
+        ok(hr == S_OK, "QueryInterface returned %#lx\n", hr);
+
+        memset(&dmo_mt, 0, sizeof(dmo_mt));
+        hr = IMediaObject_GetOutputCurrentType(dmo, 0, &dmo_mt);
+        todo_wine ok(hr == S_OK, "GetOutputCurrentType returned %#lx\n", hr);
+        todo_wine ok(IsEqualGUID(&dmo_mt.formattype, &FORMAT_MFVideoFormat), "got format %s\n", debugstr_guid(&dmo_mt.formattype));
+        todo_wine ok(dmo_mt.cbFormat == sizeof(MFVIDEOFORMAT), "got cbFormat %#lx\n", dmo_mt.cbFormat);
+        ok(is_dmo_subtype(&dmo_mt.subtype), "got subtype %s\n", debugstr_guid(&dmo_mt.subtype));
+
+        hr = MFCreateMediaTypeFromRepresentation(AM_MEDIA_TYPE_REPRESENTATION, &dmo_mt, &media_type);
+        todo_wine ok(hr == S_OK, "MFCreateMediaTypeFromRepresentation returned %#lx\n", hr);
+        if (hr == S_OK)
+        {
+        /* MFCreateMediaTypeFromRepresentation automatically converts MF to DMO media types */
+        hr = IMFMediaType_SetGUID(media_type, &MF_MT_SUBTYPE, get_mf_subtype_for_am_subtype(&dmo_mt.subtype));
+        ok(hr == S_OK, "SetGUID returned %#lx\n", hr);
+        check_media_type(media_type, color_conversion_tests[i].expect_output_type_desc, -1);
+        IMFMediaType_Release(media_type);
+
+        hr = IMediaObject_SetOutputType(dmo, 0, &dmo_mt, 0);
+        ok(hr == S_OK, "SetOutputType returned %#lx\n", hr);
+        check_mft_get_output_current_type_(__LINE__, transform, color_conversion_tests[i].expect_output_type_desc, FALSE, TRUE);
+        }
+
+        MoFreeMediaType(&dmo_mt);
+        IMediaObject_Release(dmo);
+
+
         check_mft_get_input_stream_info(transform, S_OK, &input_info);
         check_mft_get_output_stream_info(transform, S_OK, &output_info);
 
diff --git a/dlls/mf/topology_loader.c b/dlls/mf/topology_loader.c
index 05f999fcaec0..9cf4ee0b28cf 100644
--- a/dlls/mf/topology_loader.c
+++ b/dlls/mf/topology_loader.c
@@ -35,6 +35,23 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(mfplat);
 
+enum connect_method
+{
+    CONNECT_DIRECT    = 1,
+    CONNECT_CONVERTER = 2,
+    CONNECT_DECODER   = 4,
+};
+
+static enum connect_method connect_method_from_mf(MF_CONNECT_METHOD mf_method)
+{
+    enum connect_method method = CONNECT_DIRECT;
+    if ((mf_method & MF_CONNECT_ALLOW_CONVERTER) == MF_CONNECT_ALLOW_CONVERTER)
+        method |= CONNECT_CONVERTER;
+    if ((mf_method & MF_CONNECT_ALLOW_DECODER) == MF_CONNECT_ALLOW_DECODER)
+        method |= CONNECT_DECODER;
+    return method;
+}
+
 struct topology_loader
 {
     IMFTopoLoader IMFTopoLoader_iface;
@@ -127,6 +144,7 @@ struct topology_branch
     {
         IMFTopologyNode *node;
         DWORD stream;
+        IMFMediaTypeHandler *handler;
     } up, down;
 
     struct list entry;
@@ -154,15 +172,31 @@ static const char *debugstr_topology_branch(struct topology_branch *branch)
 static HRESULT topology_branch_create(IMFTopologyNode *source, DWORD source_stream,
             IMFTopologyNode *sink, DWORD sink_stream, struct topology_branch **out)
 {
+    IMFMediaTypeHandler *source_handler, *sink_handler;
     struct topology_branch *branch;
+    HRESULT hr;
+
+    if (FAILED(hr = topology_node_get_type_handler(source, source_stream, TRUE, &source_handler)))
+        return hr;
+    if (FAILED(hr = topology_node_get_type_handler(sink, sink_stream, FALSE, &sink_handler)))
+    {
+        IMFMediaTypeHandler_Release(source_handler);
+        return hr;
+    }
 
     if (!(branch = calloc(1, sizeof(*branch))))
+    {
+        IMFMediaTypeHandler_Release(sink_handler);
+        IMFMediaTypeHandler_Release(source_handler);
         return E_OUTOFMEMORY;
+    }
 
     IMFTopologyNode_AddRef((branch->up.node = source));
     branch->up.stream = source_stream;
+    branch->up.handler = source_handler;
     IMFTopologyNode_AddRef((branch->down.node = sink));
     branch->down.stream = sink_stream;
+    branch->down.handler = sink_handler;
 
     *out = branch;
     return S_OK;
@@ -171,10 +205,25 @@ static HRESULT topology_branch_create(IMFTopologyNode *source, DWORD source_stre
 static void topology_branch_destroy(struct topology_branch *branch)
 {
     IMFTopologyNode_Release(branch->up.node);
+    IMFMediaTypeHandler_Release(branch->up.handler);
     IMFTopologyNode_Release(branch->down.node);
+    IMFMediaTypeHandler_Release(branch->down.handler);
     free(branch);
 }
 
+static HRESULT topology_branch_create_indirect(struct topology_branch *branch,
+        IMFTopologyNode *node, struct topology_branch **up, struct topology_branch **down)
+{
+    HRESULT hr;
+
+    if (FAILED(hr = topology_branch_create(branch->up.node, branch->up.stream, node, 0, up)))
+        return hr;
+    if (FAILED(hr = topology_branch_create(node, 0, branch->down.node, branch->down.stream, down)))
+        topology_branch_destroy(*up);
+
+    return hr;
+}
+
 static HRESULT topology_branch_clone_nodes(struct topoloader_context *context, struct topology_branch *branch)
 {
     IMFTopologyNode *up, *down;
@@ -265,101 +314,227 @@ static HRESULT update_media_type_from_upstream(IMFMediaType *media_type, IMFMedi
     return hr;
 }
 
-static HRESULT topology_branch_connect(IMFTopology *topology, MF_CONNECT_METHOD method_mask,
-        struct topology_branch *branch, BOOL enumerate_source_types);
-static HRESULT topology_branch_connect_down(IMFTopology *topology, MF_CONNECT_METHOD method_mask,
-        struct topology_branch *branch, IMFMediaType *up_type);
-static HRESULT topology_branch_connect_indirect(IMFTopology *topology, MF_CONNECT_METHOD method_mask,
-        struct topology_branch *branch, IMFMediaType *up_type, IMFMediaType *down_type)
+static HRESULT clone_media_type(IMFMediaType *in_type, IMFMediaType **out_type)
 {
-    BOOL decoder = (method_mask & MF_CONNECT_ALLOW_DECODER) == MF_CONNECT_ALLOW_DECODER;
-    MFT_REGISTER_TYPE_INFO input_info, output_info;
+    HRESULT hr = MFCreateMediaType(out_type);
+    if (FAILED(hr) || SUCCEEDED(hr = IMFMediaType_CopyAllItems(in_type, (IMFAttributes *)*out_type)))
+        return hr;
+    IMFMediaType_Release(*out_type);
+    *out_type = NULL;
+    return hr;
+}
+
+/* safe version of IMFMediaTypeHandler_GetCurrentMediaType that makes a copy of the returned type if necessary */
+static HRESULT media_type_handler_get_current(IMFMediaTypeHandler *handler, IMFMediaType **type)
+{
+    IMFMediaType *tmp;
+    HRESULT hr;
+
+    if (FAILED(hr = IMFMediaTypeHandler_GetCurrentMediaType(handler, &tmp)))
+        return hr;
+    hr = clone_media_type(tmp, type);
+    IMFMediaType_Release(tmp);
+    return hr;
+}
+
+/* safe version of IMFMediaTypeHandler_GetMediaTypeByIndex that makes a copy of the returned type if necessary */
+static HRESULT media_type_handler_get_type(IMFMediaTypeHandler *handler, UINT32 i, IMFMediaType **type)
+{
+    IMFMediaType *tmp;
+    HRESULT hr;
+
+    if (FAILED(hr = IMFMediaTypeHandler_GetMediaTypeByIndex(handler, i, &tmp)))
+        return hr;
+    hr = clone_media_type(tmp, type);
+    IMFMediaType_Release(tmp);
+    return hr;
+}
+
+static BOOL is_better_media_type(IMFMediaType *type, IMFMediaType *best)
+{
+    GUID guid = {0};
+
+    IMFMediaType_GetGUID(type, &MF_MT_SUBTYPE, &guid);
+    if (IsEqualGUID(&guid, &MFAudioFormat_Float) || IsEqualGUID(&guid, &MFAudioFormat_PCM))
+    {
+        IMFMediaType_GetGUID(best, &MF_MT_SUBTYPE, &guid);
+        return !IsEqualGUID(&guid, &MFAudioFormat_Float);
+    }
+
+    return TRUE;
+}
+
+static void topology_branch_find_best_up_type(struct topology_branch *branch, IMFMediaType *down_type, IMFMediaType **type)
+{
+    IMFMediaType *up_type;
+    DWORD flags;
+    HRESULT hr;
+
+    /* actually set the down type to enforce some transform internal parameters like frame size on the enumerated types */
+    if (FAILED(hr = IMFMediaTypeHandler_SetCurrentMediaType(branch->up.handler, down_type)))
+    {
+        TRACE("down type %s not supported by upstream, hr %#lx\n", debugstr_media_type(down_type), hr);
+        return;
+    }
+
+    for (UINT i = 0; SUCCEEDED(hr = media_type_handler_get_type(branch->up.handler, i, &up_type)); i++)
+    {
+        if (FAILED(hr = update_media_type_from_upstream(up_type, down_type)))
+            WARN("Failed to update media type, hr %#lx\n", hr);
+
+        if ((hr = IMFMediaType_IsEqual(up_type, down_type, &flags)) != S_OK)
+            TRACE("up type %s differs from down type %s, hr %#lx flags %#lx\n", debugstr_media_type(up_type),
+                    debugstr_media_type(down_type), hr, flags);
+        else if (FAILED(hr = IMFMediaTypeHandler_IsMediaTypeSupported(branch->down.handler, up_type, NULL)))
+            TRACE("up type %s not supported by downstream, hr %#lx\n", debugstr_media_type(up_type), hr);
+        else if (*type && !is_better_media_type(up_type, *type))
+            TRACE("up type %s isn't better than selected type %s\n", debugstr_media_type(up_type),
+                    debugstr_media_type(*type));
+        else
+        {
+            TRACE("selecting up type %s\n", debugstr_media_type(up_type));
+            if (*type)
+                IMFMediaType_Release(*type);
+            *type = up_type;
+            continue;
+        }
+        IMFMediaType_Release(up_type);
+    }
+}
+
+static HRESULT topology_branch_find_best_type(struct topology_branch *branch, IMFMediaType *upstream, IMFMediaType **type)
+{
+    BOOL enumerate = topology_node_get_type(branch->down.node) == MF_TOPOLOGY_TRANSFORM_NODE;
+    IMFMediaType *down_type;
+    HRESULT hr;
+
+    *type = NULL;
+
+    if (SUCCEEDED(hr = media_type_handler_get_current(branch->down.handler, &down_type)))
+    {
+        if (FAILED(hr = update_media_type_from_upstream(down_type, upstream)))
+            WARN("Failed to update media type, hr %#lx\n", hr);
+        topology_branch_find_best_up_type(branch, down_type, type);
+        IMFMediaType_Release(down_type);
+    }
+    else if (enumerate || hr == MF_E_NOT_INITIALIZED)
+    {
+        for (UINT i = 0; SUCCEEDED(hr = media_type_handler_get_type(branch->down.handler, i, &down_type)); i++)
+        {
+            if (FAILED(hr = update_media_type_from_upstream(down_type, upstream)))
+                WARN("Failed to update media type, hr %#lx\n", hr);
+            topology_branch_find_best_up_type(branch, down_type, type);
+            IMFMediaType_Release(down_type);
+        }
+    }
+
+    return *type ? S_OK : MF_E_INVALIDMEDIATYPE;
+}
+
+static HRESULT topology_branch_connect_with_type(IMFTopology *topology, struct topology_branch *branch, IMFMediaType *type)
+{
+    HRESULT hr;
+
+    if (FAILED(hr = IMFMediaTypeHandler_SetCurrentMediaType(branch->up.handler, type)))
+    {
+        WARN("Failed to set upstream node media type, hr %#lx\n", hr);
+        return hr;
+    }
+
+    if (topology_node_get_type(branch->down.node) == MF_TOPOLOGY_TRANSFORM_NODE
+            && FAILED(hr = IMFMediaTypeHandler_SetCurrentMediaType(branch->down.handler, type)))
+    {
+        WARN("Failed to set transform node media type, hr %#lx\n", hr);
+        return hr;
+    }
+
+    TRACE("Connecting branch %s with type %s.\n", debugstr_topology_branch(branch), debugstr_media_type(type));
+    return IMFTopologyNode_ConnectOutput(branch->up.node, branch->up.stream, branch->down.node, branch->down.stream);
+}
+
+static HRESULT topology_branch_connect(IMFTopology *topology, enum connect_method method_mask,
+        struct topology_branch *branch, IMFMediaType *upstream);
+static HRESULT topology_branch_connect_indirect(IMFTopology *topology, BOOL decoder,
+        struct topology_branch *branch, IMFMediaType *upstream)
+{
+    enum connect_method method_mask = CONNECT_DIRECT;
+    MFT_REGISTER_TYPE_INFO input_info;
     IMFTransform *transform;
     IMFActivate **activates;
     IMFTopologyNode *node;
     unsigned int i, count;
     GUID category, guid;
+    UINT32 enable_xvp;
     HRESULT hr;
 
-    TRACE("topology %p, method_mask %#x, branch %s, up_type %s, down_type %s.\n", topology, method_mask,
-            debugstr_topology_branch(branch), debugstr_media_type(up_type), debugstr_media_type(down_type));
+    TRACE("topology %p, decoder %u, branch %s, upstream %s.\n", topology, decoder,
+            debugstr_topology_branch(branch), debugstr_media_type(upstream));
 
-    if (FAILED(hr = IMFMediaType_GetMajorType(up_type, &input_info.guidMajorType)))
+    if (FAILED(hr = IMFMediaType_GetMajorType(upstream, &input_info.guidMajorType)))
         return hr;
-    if (FAILED(hr = IMFMediaType_GetGUID(up_type, &MF_MT_SUBTYPE, &input_info.guidSubtype)))
+    if (FAILED(hr = IMFMediaType_GetGUID(upstream, &MF_MT_SUBTYPE, &input_info.guidSubtype)))
         return hr;
-    if (!down_type)
-        output_info = input_info;
-    else
-    {
-        if (FAILED(hr = IMFMediaType_GetMajorType(down_type, &output_info.guidMajorType)))
-            return hr;
-        if (FAILED(hr = IMFMediaType_GetGUID(down_type, &MF_MT_SUBTYPE, &output_info.guidSubtype)))
-            return hr;
-    }
+
+    if (FAILED(IMFTopology_GetUINT32(topology, &MF_TOPOLOGY_ENABLE_XVP_FOR_PLAYBACK, &enable_xvp)))
+        enable_xvp = 0;
 
     if (IsEqualGUID(&input_info.guidMajorType, &MFMediaType_Audio))
         category = decoder ? MFT_CATEGORY_AUDIO_DECODER : MFT_CATEGORY_AUDIO_EFFECT;
     else if (IsEqualGUID(&input_info.guidMajorType, &MFMediaType_Video))
-        category = decoder ? MFT_CATEGORY_VIDEO_DECODER : MFT_CATEGORY_VIDEO_PROCESSOR;
+        category = decoder ? MFT_CATEGORY_VIDEO_DECODER
+                : enable_xvp ? MFT_CATEGORY_VIDEO_PROCESSOR
+                : MFT_CATEGORY_VIDEO_EFFECT;
     else
         return MF_E_INVALIDMEDIATYPE;
 
     if (FAILED(hr = MFCreateTopologyNode(MF_TOPOLOGY_TRANSFORM_NODE, &node)))
         return hr;
-    if (!decoder)
-        method_mask = MF_CONNECT_DIRECT;
-    else
+    if (decoder)
     {
         IMFTopologyNode_SetUINT32(node, &MF_TOPONODE_DECODER, 1);
         IMFTopologyNode_SetUINT32(node, &MF_TOPONODE_MARKIN_HERE, 1);
         IMFTopologyNode_SetUINT32(node, &MF_TOPONODE_MARKOUT_HERE, 1);
-        method_mask = MF_CONNECT_ALLOW_CONVERTER;
+        method_mask |= CONNECT_CONVERTER;
     }
 
-    if (FAILED(hr = MFTEnumEx(category, MFT_ENUM_FLAG_ALL, &input_info, decoder ? NULL : &output_info, &activates, &count)))
+    if (FAILED(hr = MFTEnumEx(category, MFT_ENUM_FLAG_ALL, &input_info, NULL, &activates, &count)))
         return hr;
 
-    for (i = 0, hr = MF_E_TRANSFORM_NOT_POSSIBLE_FOR_CURRENT_MEDIATYPE_COMBINATION; i < count; ++i)
+    for (i = 0; i < count; ++i)
     {
-        struct topology_branch down_branch = {.up.node = node, .down = branch->down};
-        struct topology_branch up_branch = {.up = branch->up, .down.node = node};
-        MF_CONNECT_METHOD method = method_mask;
+        struct topology_branch *up_branch, *down_branch;
         IMFMediaType *media_type;
 
         if (FAILED(IMFActivate_ActivateObject(activates[i], &IID_IMFTransform, (void **)&transform)))
             continue;
-
         IMFTopologyNode_SetObject(node, (IUnknown *)transform);
         IMFTopologyNode_DeleteItem(node, &MF_TOPONODE_TRANSFORM_OBJECTID);
-        if (SUCCEEDED(IMFActivate_GetGUID(activates[i], &MFT_TRANSFORM_CLSID_Attribute, &guid)))
+        if (SUCCEEDED(IMFActivate_GetGUID(activates[i], &MFT_TRANSFORM_CLSID_Attribute, &guid))
+                && !IsEqualGUID(&guid, &CLSID_VideoProcessorMFT))
             IMFTopologyNode_SetGUID(node, &MF_TOPONODE_TRANSFORM_OBJECTID, &guid);
-
-        hr = topology_branch_connect_down(topology, MF_CONNECT_DIRECT, &up_branch, up_type);
-        if (down_type && SUCCEEDED(MFCreateMediaType(&media_type)))
-        {
-            if (SUCCEEDED(IMFMediaType_CopyAllItems(down_type, (IMFAttributes *)media_type))
-                    && SUCCEEDED(update_media_type_from_upstream(media_type, up_type))
-                    && SUCCEEDED(IMFTransform_SetOutputType(transform, 0, media_type, 0)))
-                method = MF_CONNECT_DIRECT;
-            IMFMediaType_Release(media_type);
-        }
         IMFTransform_Release(transform);
 
-        if (SUCCEEDED(hr) && method != MF_CONNECT_DIRECT
-                && SUCCEEDED(IMFTransform_GetOutputAvailableType(transform, 0, 0, &media_type)))
+        if (SUCCEEDED(hr = topology_branch_create_indirect(branch, node, &up_branch, &down_branch)))
         {
-            if (SUCCEEDED(update_media_type_from_upstream(media_type, up_type)))
-                IMFTransform_SetOutputType(transform, 0, media_type, 0);
-            IMFMediaType_Release(media_type);
+            if (SUCCEEDED(hr = topology_branch_connect_with_type(topology, up_branch, upstream)))
+            {
+                if (FAILED(hr = topology_branch_find_best_type(down_branch, upstream, &media_type)))
+                    hr = topology_branch_connect(topology, method_mask, down_branch, upstream);
+                else
+                {
+                    hr = topology_branch_connect_with_type(topology, down_branch, media_type);
+                    IMFMediaType_Release(media_type);
+                }
+            }
+            topology_branch_destroy(down_branch);
+            topology_branch_destroy(up_branch);
         }
 
-        if (SUCCEEDED(hr))
-            hr = topology_branch_connect(topology, method, &down_branch, !down_type);
         if (SUCCEEDED(hr))
             hr = IMFTopology_AddNode(topology, node);
         if (SUCCEEDED(hr))
             break;
+        IMFTopologyNode_DisconnectOutput(branch->up.node, branch->up.stream);
     }
 
     IMFTopologyNode_Release(node);
@@ -367,8 +542,10 @@ static HRESULT topology_branch_connect_indirect(IMFTopology *topology, MF_CONNEC
         IMFActivate_Release(activates[i]);
     CoTaskMemFree(activates);
 
-    if (!count)
-        return MF_E_TOPO_CODEC_NOT_FOUND;
+    if (!count || FAILED(hr))
+        hr = decoder ? MF_E_TOPO_CODEC_NOT_FOUND
+                : MF_E_TRANSFORM_NOT_POSSIBLE_FOR_CURRENT_MEDIATYPE_COMBINATION;
+    TRACE("returning %#lx\n", hr);
     return hr;
 }
 
@@ -411,135 +588,171 @@ HRESULT topology_node_init_media_type(IMFTopologyNode *node, DWORD stream, BOOL
     return hr;
 }
 
-static HRESULT topology_branch_connect_down(IMFTopology *topology, MF_CONNECT_METHOD method_mask,
-        struct topology_branch *branch, IMFMediaType *up_type)
+static HRESULT topology_branch_connect_direct(IMFTopology *topology, struct topology_branch *branch, IMFMediaType *up_type)
 {
-    IMFMediaTypeHandler *down_handler;
-    IMFMediaType *down_type = NULL;
-    UINT32 method;
+    IMFMediaType *down_type, *type;
     DWORD flags;
     HRESULT hr;
 
-    TRACE("topology %p, method_mask %#x, branch %s, up_type %s.\n",
-            topology, method_mask, debugstr_topology_branch(branch), debugstr_media_type(up_type));
-
-    if (FAILED(IMFTopologyNode_GetUINT32(branch->down.node, &MF_TOPONODE_CONNECT_METHOD, &method)))
-        method = MF_CONNECT_ALLOW_DECODER;
-
-    if (FAILED(hr = topology_node_get_type_handler(branch->down.node, branch->down.stream, FALSE, &down_handler)))
-        return hr;
+    TRACE("topology %p, branch %s, up_type %s.\n", topology, debugstr_topology_branch(branch),
+            debugstr_media_type(up_type));
 
-    if (SUCCEEDED(hr = get_first_supported_media_type(down_handler, &down_type))
-            && IMFMediaType_IsEqual(up_type, down_type, &flags) == S_OK)
+    if (SUCCEEDED(hr = IMFMediaTypeHandler_GetCurrentMediaType(branch->down.handler, &down_type)))
     {
-        TRACE("Connecting branch %s with current type %s.\n", debugstr_topology_branch(branch), debugstr_media_type(up_type));
-        hr = IMFTopologyNode_ConnectOutput(branch->up.node, branch->up.stream, branch->down.node, branch->down.stream);
-        goto done;
+        if (IMFMediaType_IsEqual(up_type, down_type, &flags) == S_OK)
+            hr = topology_branch_connect_with_type(topology, branch, up_type);
+        else
+        {
+            TRACE("current type %s differs from up type %s, hr %#lx\n", debugstr_media_type(down_type),
+                    debugstr_media_type(up_type), hr);
+            hr = MF_E_INVALIDMEDIATYPE;
+        }
+        IMFMediaType_Release(down_type);
+        TRACE("returning %#lx\n", hr);
+        return hr;
     }
 
-    if (SUCCEEDED(hr = IMFMediaTypeHandler_IsMediaTypeSupported(down_handler, up_type, NULL)))
-    {
-        TRACE("Connected branch %s with upstream type %s.\n", debugstr_topology_branch(branch), debugstr_media_type(up_type));
+    IMFMediaType_AddRef((type = up_type));
 
-        if (topology_node_get_type(branch->down.node) == MF_TOPOLOGY_TRANSFORM_NODE
-                && FAILED(hr = IMFMediaTypeHandler_SetCurrentMediaType(down_handler, up_type)))
-            WARN("Failed to set transform node media type, hr %#lx\n", hr);
+    if (hr == MF_E_NOT_INITIALIZED)
+    {
+        for (UINT i = 0; SUCCEEDED(hr = IMFMediaTypeHandler_GetMediaTypeByIndex(branch->down.handler, i, &down_type)); i++)
+        {
+            if ((hr = IMFMediaType_IsEqual(up_type, down_type, &flags)) != S_OK)
+                TRACE("down type %s differs from up type %s, hr %#lx flags %#lx\n", debugstr_media_type(down_type),
+                        debugstr_media_type(up_type), hr, flags);
+            else if (FAILED(hr = IMFMediaTypeHandler_IsMediaTypeSupported(branch->down.handler, down_type, NULL)))
+                TRACE("down type %s not supported by downstream, hr %#lx\n", debugstr_media_type(down_type), hr);
+            else if (FAILED(hr = IMFMediaTypeHandler_IsMediaTypeSupported(branch->up.handler, down_type, NULL)))
+                TRACE("down type %s not supported by upstream, hr %#lx\n", debugstr_media_type(down_type), hr);
+            else
+            {
+                TRACE("selecting down type %s\n", debugstr_media_type(down_type));
+                IMFMediaType_Release(type);
+                type = down_type;
+                continue;
+            }
+            IMFMediaType_Release(down_type);
+        }
+    }
 
-        hr = IMFTopologyNode_ConnectOutput(branch->up.node, branch->up.stream, branch->down.node, branch->down.stream);
+    if (FAILED(hr = IMFMediaTypeHandler_IsMediaTypeSupported(branch->down.handler, type, NULL)))
+        TRACE("type %s not supported by downstream, hr %#lx\n", debugstr_media_type(type), hr);
+    else
+        hr = topology_branch_connect_with_type(topology, branch, type);
 
-        goto done;
-    }
+    IMFMediaType_Release(type);
+    TRACE("returning %#lx\n", hr);
+    return hr;
+}
 
-    if (FAILED(hr) && (method & method_mask & MF_CONNECT_ALLOW_CONVERTER) == MF_CONNECT_ALLOW_CONVERTER)
-        hr = topology_branch_connect_indirect(topology, MF_CONNECT_ALLOW_CONVERTER,
-                branch, up_type, down_type);
+static HRESULT topology_branch_connect_down(IMFTopology *topology, enum connect_method method,
+        struct topology_branch *branch, IMFMediaType *up_type)
+{
+    HRESULT hr = MF_E_INVALIDMEDIATYPE;
 
-    if (FAILED(hr) && (method & method_mask & MF_CONNECT_ALLOW_DECODER) == MF_CONNECT_ALLOW_DECODER)
-        hr = topology_branch_connect_indirect(topology, MF_CONNECT_ALLOW_DECODER,
-                branch, up_type, down_type);
+    TRACE("topology %p, branch %s, up_type %s.\n", topology, debugstr_topology_branch(branch), debugstr_media_type(up_type));
 
-done:
-    if (down_type)
-        IMFMediaType_Release(down_type);
-    IMFMediaTypeHandler_Release(down_handler);
+    if (FAILED(hr) && (method & CONNECT_DIRECT))
+        hr = topology_branch_connect_direct(topology, branch, up_type);
+    if (FAILED(hr) && (method & CONNECT_CONVERTER))
+        hr = topology_branch_connect_indirect(topology, FALSE, branch, up_type);
+    if (FAILED(hr) && (method & CONNECT_DECODER))
+        hr = topology_branch_connect_indirect(topology, TRUE, branch, up_type);
 
+    TRACE("returning %#lx\n", hr);
     return hr;
 }
 
-static HRESULT topology_branch_foreach_up_types(IMFTopology *topology, MF_CONNECT_METHOD method_mask,
-        struct topology_branch *branch)
+static HRESULT topology_branch_foreach_up_types(IMFTopology *topology, enum connect_method method_mask,
+        struct topology_branch *branch, IMFMediaType *upstream)
 {
-    IMFMediaTypeHandler *handler;
-    IMFMediaType *type;
-    DWORD index = 0;
-    HRESULT hr;
+    HRESULT hr = MF_E_INVALIDMEDIATYPE;
+    UINT32 enumerate = TRUE;
+    IMFMediaType *up_type;
 
-    if (FAILED(hr = topology_node_get_type_handler(branch->up.node, branch->up.stream, TRUE, &handler)))
-        return hr;
+    TRACE("topology %p, method_mask %#x, branch %s, upstream %s.\n", topology, method_mask, debugstr_topology_branch(branch),
+            debugstr_media_type(upstream));
 
-    while (SUCCEEDED(hr = IMFMediaTypeHandler_GetMediaTypeByIndex(handler, index++, &type)))
+    switch (topology_node_get_type(branch->up.node))
     {
-        hr = topology_branch_connect_down(topology, method_mask, branch, type);
-        if (SUCCEEDED(hr))
-            hr = IMFMediaTypeHandler_SetCurrentMediaType(handler, type);
-        IMFMediaType_Release(type);
-        if (SUCCEEDED(hr))
+        case MF_TOPOLOGY_SOURCESTREAM_NODE:
+            if (FAILED(IMFTopology_GetUINT32(topology, &MF_TOPOLOGY_ENUMERATE_SOURCE_TYPES, &enumerate)))
+                enumerate = FALSE;
             break;
+        default:
+            if (SUCCEEDED(IMFMediaTypeHandler_GetCurrentMediaType(branch->up.handler, &up_type)))
+            {
+                IMFMediaType_Release(up_type);
+                enumerate = FALSE;
+            }
+            break;
+    }
+
+    if (enumerate)
+    {
+        for (UINT i = 0; SUCCEEDED(hr = media_type_handler_get_type(branch->up.handler, i, &up_type)); i++)
+        {
+            if (upstream && FAILED(hr = update_media_type_from_upstream(up_type, upstream)))
+                WARN("Failed to update type from upstream, hr %#lx\n", hr);
+            hr = topology_branch_connect_down(topology, method_mask, branch, up_type);
+            IMFMediaType_Release(up_type);
+            if (SUCCEEDED(hr))
+                return hr;
+        }
+        return hr;
     }
 
-    IMFMediaTypeHandler_Release(handler);
+    if (SUCCEEDED(hr = media_type_handler_get_current(branch->up.handler, &up_type))
+            || SUCCEEDED(hr = media_type_handler_get_type(branch->up.handler, 0, &up_type)))
+    {
+        if (upstream && FAILED(hr = update_media_type_from_upstream(up_type, upstream)))
+            WARN("Failed to update type from upstream, hr %#lx\n", hr);
+        hr = topology_branch_connect_down(topology, method_mask, branch, up_type);
+        IMFMediaType_Release(up_type);
+        return hr;
+    }
+
+    TRACE("returning %#lx\n", hr);
     return hr;
 }
 
-static HRESULT topology_branch_connect(IMFTopology *topology, MF_CONNECT_METHOD method_mask,
-        struct topology_branch *branch, BOOL enumerate_source_types)
+static HRESULT topology_branch_connect(IMFTopology *topology, enum connect_method method_mask,
+        struct topology_branch *branch, IMFMediaType *upstream)
 {
-    HRESULT hr;
+    HRESULT hr = MF_E_INVALIDMEDIATYPE;
+    UINT32 up_method, down_method;
 
-    TRACE("topology %p, method_mask %#x, branch %s.\n", topology, method_mask, debugstr_topology_branch(branch));
+    TRACE("topology %p, method_mask %#x, branch %s, upstream %s.\n", topology, method_mask, debugstr_topology_branch(branch),
+            debugstr_media_type(upstream));
 
-    if (enumerate_source_types)
-    {
-        UINT32 method;
+    if (FAILED(IMFTopologyNode_GetUINT32(branch->down.node, &MF_TOPONODE_CONNECT_METHOD, &down_method)))
+        down_method = MF_CONNECT_ALLOW_DECODER;
+    down_method = connect_method_from_mf(down_method) & method_mask;
 
-        if (topology_node_get_type(branch->up.node) != MF_TOPOLOGY_SOURCESTREAM_NODE
-                || FAILED(IMFTopologyNode_GetUINT32(branch->up.node, &MF_TOPONODE_CONNECT_METHOD, &method)))
-            method = MF_CONNECT_DIRECT;
+    if (topology_node_get_type(branch->up.node) != MF_TOPOLOGY_SOURCESTREAM_NODE
+            || FAILED(IMFTopologyNode_GetUINT32(branch->up.node, &MF_TOPONODE_CONNECT_METHOD, &up_method)))
+        up_method = MF_CONNECT_DIRECT;
 
-        if (method & MF_CONNECT_RESOLVE_INDEPENDENT_OUTPUTTYPES)
-            hr = topology_branch_foreach_up_types(topology, method_mask & MF_CONNECT_ALLOW_DECODER, branch);
-        else
-        {
-            hr = topology_branch_foreach_up_types(topology, method_mask & MF_CONNECT_DIRECT, branch);
-            if (FAILED(hr))
-                hr = topology_branch_foreach_up_types(topology, method_mask & MF_CONNECT_ALLOW_CONVERTER, branch);
-            if (FAILED(hr))
-                hr = topology_branch_foreach_up_types(topology, method_mask & MF_CONNECT_ALLOW_DECODER, branch);
-        }
-    }
+    if (up_method & MF_CONNECT_RESOLVE_INDEPENDENT_OUTPUTTYPES)
+        hr = topology_branch_foreach_up_types(topology, down_method, branch, upstream);
     else
     {
-        IMFMediaTypeHandler *up_handler;
-        IMFMediaType *up_type;
-
-        if (FAILED(hr = topology_node_get_type_handler(branch->up.node, branch->up.stream, TRUE, &up_handler)))
-            return hr;
-        if (SUCCEEDED(hr = IMFMediaTypeHandler_GetCurrentMediaType(up_handler, &up_type))
-                || SUCCEEDED(hr = IMFMediaTypeHandler_GetMediaTypeByIndex(up_handler, 0, &up_type)))
-        {
-            hr = topology_branch_connect_down(topology, method_mask, branch, up_type);
-            IMFMediaType_Release(up_type);
-        }
-        IMFMediaTypeHandler_Release(up_handler);
+        if (FAILED(hr) && (down_method & CONNECT_DIRECT))
+            hr = topology_branch_foreach_up_types(topology, CONNECT_DIRECT, branch, upstream);
+        if (FAILED(hr) && (down_method & CONNECT_CONVERTER))
+            hr = topology_branch_foreach_up_types(topology, CONNECT_CONVERTER, branch, upstream);
+        if (FAILED(hr) && (down_method & CONNECT_DECODER))
+            hr = topology_branch_foreach_up_types(topology, CONNECT_DECODER, branch, upstream);
     }
 
     TRACE("returning %#lx\n", hr);
     return hr;
 }
 
-static HRESULT topology_loader_resolve_branches(struct topoloader_context *context, struct list *branches,
-        BOOL enumerate_source_types)
+static HRESULT topology_loader_resolve_branches(struct topoloader_context *context, struct list *branches)
 {
+    enum connect_method method_mask = connect_method_from_mf(MF_CONNECT_ALLOW_DECODER);
     struct topology_branch *branch, *next;
     HRESULT hr = S_OK;
 
@@ -550,11 +763,7 @@ static HRESULT topology_loader_resolve_branches(struct topoloader_context *conte
         if (FAILED(hr = topology_branch_clone_nodes(context, branch)))
             WARN("Failed to clone nodes for branch %s\n", debugstr_topology_branch(branch));
         else
-        {
-            hr = topology_branch_connect(context->output_topology, MF_CONNECT_ALLOW_DECODER, branch, enumerate_source_types);
-            if (hr == MF_E_INVALIDMEDIATYPE && !enumerate_source_types && topology_node_get_type(branch->up.node) == MF_TOPOLOGY_TRANSFORM_NODE)
-                hr = topology_branch_connect(context->output_topology, MF_CONNECT_ALLOW_DECODER, branch, TRUE);
-        }
+            hr = topology_branch_connect(context->output_topology, method_mask, branch, NULL);
 
         topology_branch_destroy(branch);
         if (FAILED(hr))
@@ -793,7 +1002,6 @@ static HRESULT WINAPI topology_loader_Load(IMFTopoLoader *iface, IMFTopology *in
     struct list branches = LIST_INIT(branches);
     struct topoloader_context context = { 0 };
     struct topology_branch *branch, *next;
-    UINT32 enumerate_source_types;
     IMFTopology *output_topology;
     IMFTopologyNode *node;
     unsigned short i = 0;
@@ -859,12 +1067,8 @@ static HRESULT WINAPI topology_loader_Load(IMFTopoLoader *iface, IMFTopology *in
     if (SUCCEEDED(hr) && list_empty(&branches))
         hr = MF_E_TOPO_UNSUPPORTED;
 
-    if (FAILED(IMFTopology_GetUINT32(input_topology, &MF_TOPOLOGY_ENUMERATE_SOURCE_TYPES,
-            &enumerate_source_types)))
-        enumerate_source_types = 0;
-
     while (SUCCEEDED(hr) && !list_empty(&branches))
-        hr = topology_loader_resolve_branches(&context, &branches, enumerate_source_types);
+        hr = topology_loader_resolve_branches(&context, &branches);
 
     LIST_FOR_EACH_ENTRY_SAFE(branch, next, &branches, struct topology_branch, entry)
     {
diff --git a/dlls/mfplat/mediatype.c b/dlls/mfplat/mediatype.c
index 10a92ad7464a..228a57e75c3f 100644
--- a/dlls/mfplat/mediatype.c
+++ b/dlls/mfplat/mediatype.c
@@ -3936,12 +3936,16 @@ HRESULT WINAPI MFInitMediaTypeFromVideoInfoHeader2(IMFMediaType *media_type, con
     mediatype_set_guid(media_type, &MF_MT_MAJOR_TYPE, &MFMediaType_Video, &hr);
     mediatype_set_guid(media_type, &MF_MT_SUBTYPE, subtype, &hr);
     mediatype_set_uint64(media_type, &MF_MT_PIXEL_ASPECT_RATIO, 1, 1, &hr);
-    mediatype_set_uint64(media_type, &MF_MT_FRAME_SIZE, vih->bmiHeader.biWidth, height, &hr);
+    if (vih->bmiHeader.biWidth || height)
+        mediatype_set_uint64(media_type, &MF_MT_FRAME_SIZE, vih->bmiHeader.biWidth, height, &hr);
 
     if (SUCCEEDED(mf_get_stride_for_bitmap_info_header(subtype->Data1, &vih->bmiHeader, &stride)))
     {
-        mediatype_set_uint32(media_type, &MF_MT_DEFAULT_STRIDE, stride, &hr);
-        mediatype_set_uint32(media_type, &MF_MT_SAMPLE_SIZE, abs(stride) * height, &hr);
+        if (stride)
+        {
+            mediatype_set_uint32(media_type, &MF_MT_DEFAULT_STRIDE, stride, &hr);
+            mediatype_set_uint32(media_type, &MF_MT_SAMPLE_SIZE, abs(stride) * height, &hr);
+        }
         mediatype_set_uint32(media_type, &MF_MT_FIXED_SIZE_SAMPLES, 1, &hr);
         mediatype_set_uint32(media_type, &MF_MT_ALL_SAMPLES_INDEPENDENT, 1, &hr);
     }
@@ -4405,6 +4409,9 @@ HRESULT WINAPI MFInitMediaTypeFromAMMediaType(IMFMediaType *media_type, const AM
         else if (IsEqualGUID(&am_type->formattype, &FORMAT_MPEG2Video)
                 && am_type->cbFormat >= sizeof(MPEG2VIDEOINFO))
             hr = MFInitMediaTypeFromMPEG2VideoInfo(media_type, (MPEG2VIDEOINFO *)am_type->pbFormat, am_type->cbFormat, subtype);
+        else if (IsEqualGUID(&am_type->formattype, &FORMAT_MFVideoFormat)
+                && am_type->cbFormat >= sizeof(MFVIDEOFORMAT))
+            hr = MFInitMediaTypeFromMFVideoFormat(media_type, (MFVIDEOFORMAT *)am_type->pbFormat, am_type->cbFormat);
         else
         {
             FIXME("Unsupported format type %s / size %ld.\n", debugstr_guid(&am_type->formattype), am_type->cbFormat);
diff --git a/dlls/mfplat/tests/mfplat.c b/dlls/mfplat/tests/mfplat.c
index c9514293c49d..e28fece1418c 100644
--- a/dlls/mfplat/tests/mfplat.c
+++ b/dlls/mfplat/tests/mfplat.c
@@ -631,6 +631,10 @@ static WCHAR *load_resource(const WCHAR *name)
 static BOOL is_MEDIASUBTYPE_RGB(const GUID *subtype)
 {
     return IsEqualGUID(subtype, &MEDIASUBTYPE_RGB8)
+            || IsEqualGUID(subtype, &MEDIASUBTYPE_RGB1)
+            || IsEqualGUID(subtype, &MEDIASUBTYPE_RGB4)
+            || IsEqualGUID(subtype, &MEDIASUBTYPE_ARGB1555)
+            || IsEqualGUID(subtype, &MEDIASUBTYPE_ARGB32)
             || IsEqualGUID(subtype, &MEDIASUBTYPE_RGB555)
             || IsEqualGUID(subtype, &MEDIASUBTYPE_RGB565)
             || IsEqualGUID(subtype, &MEDIASUBTYPE_RGB24)
@@ -8678,6 +8682,46 @@ static void test_MFCreateMFVideoFormatFromMFMediaType(void)
     IMFMediaType_Release(media_type);
 }
 
+static const struct guid_type_pair
+{
+    const GUID *am_type;
+    const GUID *mf_type;
+} am_mf_guid_tests[] =
+{
+    /* these RGB formats are converted, MEDIASUBTYPE variant isn't
+     * defined using DEFINE_MEDIATYPE_GUID */
+    { &MEDIASUBTYPE_RGB1, &MFVideoFormat_RGB1 },
+    { &MEDIASUBTYPE_RGB4, &MFVideoFormat_RGB4 },
+    { &MEDIASUBTYPE_RGB8, &MFVideoFormat_RGB8 },
+    { &MEDIASUBTYPE_RGB555, &MFVideoFormat_RGB555 },
+    { &MEDIASUBTYPE_RGB565, &MFVideoFormat_RGB565 },
+    { &MEDIASUBTYPE_RGB24, &MFVideoFormat_RGB24 },
+    { &MEDIASUBTYPE_RGB32, &MFVideoFormat_RGB32 },
+    { &MEDIASUBTYPE_ARGB1555, &MFVideoFormat_ARGB1555 },
+    { &MEDIASUBTYPE_ARGB4444, &MFVideoFormat_ARGB4444 },
+    { &MEDIASUBTYPE_ARGB32, &MFVideoFormat_ARGB32 },
+    { &MEDIASUBTYPE_A2R10G10B10, &MFVideoFormat_A2B10G10R10 },
+    { &MEDIASUBTYPE_A2B10G10R10, &MFVideoFormat_A2R10G10B10 },
+
+    /* any other GUID is passed through */
+    { &MEDIASUBTYPE_I420, &MFVideoFormat_I420 },
+    { &MEDIASUBTYPE_AYUV, &MFVideoFormat_AYUV },
+    { &MEDIASUBTYPE_YV12, &MFVideoFormat_YV12 },
+    { &MEDIASUBTYPE_YUY2, &MFVideoFormat_YUY2 },
+    { &MEDIASUBTYPE_UYVY, &MFVideoFormat_UYVY },
+    { &MEDIASUBTYPE_YVYU, &MFVideoFormat_YVYU },
+    { &MEDIASUBTYPE_NV12, &MFVideoFormat_NV12 },
+
+    /* even formats that don't exist in MF */
+    { &DUMMY_GUID3, &DUMMY_GUID3 },
+    { &MEDIASUBTYPE_NV24, &MEDIASUBTYPE_NV24 },
+    { &MEDIASUBTYPE_P208, &MEDIASUBTYPE_P208 },
+
+    /* if the mapping is ambiguous, it is not corrected */
+    { &MEDIASUBTYPE_h264, &MEDIASUBTYPE_h264 },
+    { &MEDIASUBTYPE_H264, &MFVideoFormat_H264 },
+};
+
 static void test_MFInitAMMediaTypeFromMFMediaType(void)
 {
     static const MFVideoArea aperture = {.OffsetX = {.fract = 1, .value = 2}, .OffsetY = {.fract = 3, .value = 4}, .Area={56,78}};
@@ -8690,6 +8734,7 @@ static void test_MFInitAMMediaTypeFromMFMediaType(void)
     MPEG1VIDEOINFO *mpeg1_info;
     MPEG2VIDEOINFO *mpeg2_info;
     IMFMediaType *media_type, *other_type;
+    MFVIDEOFORMAT *video_format;
     AM_MEDIA_TYPE am_type;
     MFVideoArea *area;
     UINT32 value32;
@@ -9336,10 +9381,10 @@ static void test_MFInitAMMediaTypeFromMFMediaType(void)
     hr = MFInitAMMediaTypeFromMFMediaType(media_type, FORMAT_MFVideoFormat, &am_type);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
     hr = MFInitMediaTypeFromAMMediaType(other_type, &am_type);
-    todo_wine ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
     hr = IMFMediaType_GetAllocatedBlob(other_type, &MF_MT_MINIMUM_DISPLAY_APERTURE, (BYTE **)&area, &value32);
-    todo_wine ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    if (hr == S_OK) CoTaskMemFree(area);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    CoTaskMemFree(area);
     IMFMediaType_DeleteAllItems(other_type);
     CoTaskMemFree(am_type.pbFormat);
 
@@ -9530,6 +9575,52 @@ static void test_MFInitAMMediaTypeFromMFMediaType(void)
     IMFMediaType_DeleteAllItems(media_type);
 
 
+    for (UINT i = 0; i < ARRAY_SIZE(am_mf_guid_tests); ++i)
+    {
+        winetest_push_context("%s", debugstr_guid(am_mf_guid_tests[i].am_type));
+
+        hr = IMFMediaType_SetGUID(media_type, &MF_MT_MAJOR_TYPE, &MFMediaType_Video);
+        ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+        hr = IMFMediaType_SetGUID(media_type, &MF_MT_SUBTYPE, am_mf_guid_tests[i].mf_type);
+        ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+        hr = IMFMediaType_SetUINT64(media_type, &MF_MT_FRAME_SIZE, (UINT64)1920 << 32 | 1088);
+        ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+        hr = MFInitAMMediaTypeFromMFMediaType(media_type, FORMAT_VideoInfo, &am_type);
+        ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+        ok(IsEqualGUID(&am_type.majortype, &MFMediaType_Video), "Unexpected guid %s.\n", debugstr_guid(&am_type.majortype));
+        ok(IsEqualGUID(&am_type.subtype, am_mf_guid_tests[i].am_type), "Unexpected guid %s.\n", debugstr_guid(&am_type.subtype));
+        if (IsEqualGUID(&am_type.subtype, &MEDIASUBTYPE_RGB565))
+            todo_wine ok(am_type.cbFormat == sizeof(VIDEOINFOHEADER) + 3 * sizeof(DWORD), "got %lu\n", am_type.cbFormat);
+        else
+            ok(am_type.cbFormat == sizeof(VIDEOINFOHEADER), "got %lu\n", am_type.cbFormat);
+        video_info = (VIDEOINFOHEADER *)am_type.pbFormat;
+        if (!is_MEDIASUBTYPE_RGB(&am_type.subtype) && !IsEqualGUID(&am_type.subtype, &DUMMY_GUID3))
+            ok(video_info->bmiHeader.biCompression == am_mf_guid_tests[i].mf_type->Data1,
+                    "got compression %s\n", debugstr_fourcc(video_info->bmiHeader.biCompression));
+        else if (IsEqualGUID(&am_type.subtype, &MEDIASUBTYPE_RGB565))
+            ok(video_info->bmiHeader.biCompression == BI_BITFIELDS,
+                    "got compression %s\n", debugstr_fourcc(video_info->bmiHeader.biCompression));
+        else
+            todo_wine_if(IsEqualGUID(&am_type.subtype, &MEDIASUBTYPE_ARGB1555) || IsEqualGUID(&am_type.subtype, &DUMMY_GUID3))
+            ok(video_info->bmiHeader.biCompression == BI_RGB,
+                    "got compression %s\n", debugstr_fourcc(video_info->bmiHeader.biCompression));
+        CoTaskMemFree(am_type.pbFormat);
+
+        hr = MFInitAMMediaTypeFromMFMediaType(media_type, FORMAT_MFVideoFormat, &am_type);
+        ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+        ok(IsEqualGUID(&am_type.majortype, &MFMediaType_Video), "Unexpected guid %s.\n", debugstr_guid(&am_type.majortype));
+        ok(IsEqualGUID(&am_type.subtype, am_mf_guid_tests[i].mf_type), "Unexpected guid %s.\n", debugstr_guid(&am_type.subtype));
+        ok(am_type.cbFormat == sizeof(MFVIDEOFORMAT), "got %lu\n", am_type.cbFormat);
+        video_format = (MFVIDEOFORMAT *)am_type.pbFormat;
+        ok(IsEqualGUID(&video_format->guidFormat, am_mf_guid_tests[i].mf_type), "Unexpected guid %s.\n", debugstr_guid(&video_format->guidFormat));
+        CoTaskMemFree(am_type.pbFormat);
+
+        IMFMediaType_DeleteAllItems(media_type);
+        winetest_pop_context();
+    }
+
+
     IMFMediaType_Release(media_type);
 }
 
@@ -12334,7 +12425,6 @@ static void test_MFInitMediaTypeFromVideoInfoHeader(void)
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
     ok(IsEqualGUID(&guid, &GUID_NULL), "Unexpected guid %s.\n", debugstr_guid(&guid));
     hr = IMFMediaType_GetUINT64(media_type, &MF_MT_FRAME_SIZE, &value64);
-    todo_wine
     ok(hr == MF_E_ATTRIBUTENOTFOUND, "Unexpected hr %#lx.\n", hr);
 
     vih.bmiHeader.biWidth = 16;
@@ -12679,7 +12769,6 @@ static void test_MFInitMediaTypeFromVideoInfoHeader2(void)
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
     ok(IsEqualGUID(&guid, &GUID_NULL), "Unexpected guid %s.\n", debugstr_guid(&guid));
     hr = IMFMediaType_GetUINT64(media_type, &MF_MT_FRAME_SIZE, &value64);
-    todo_wine
     ok(hr == MF_E_ATTRIBUTENOTFOUND, "Unexpected hr %#lx.\n", hr);
 
     vih.bmiHeader.biWidth = 16;
@@ -13047,7 +13136,6 @@ static void test_MFInitMediaTypeFromMPEG1VideoInfo(void)
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
     ok(IsEqualGUID(&guid, &GUID_NULL), "Unexpected guid %s.\n", debugstr_guid(&guid));
     hr = IMFMediaType_GetUINT64(media_type, &MF_MT_FRAME_SIZE, &value64);
-    todo_wine
     ok(hr == MF_E_ATTRIBUTENOTFOUND, "Unexpected hr %#lx.\n", hr);
 
     vih.hdr.bmiHeader.biWidth = 16;
@@ -13159,7 +13247,6 @@ static void test_MFInitMediaTypeFromMPEG2VideoInfo(void)
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
     ok(IsEqualGUID(&guid, &GUID_NULL), "Unexpected guid %s.\n", debugstr_guid(&guid));
     hr = IMFMediaType_GetUINT64(media_type, &MF_MT_FRAME_SIZE, &value64);
-    todo_wine
     ok(hr == MF_E_ATTRIBUTENOTFOUND, "Unexpected hr %#lx.\n", hr);
 
     vih.hdr.bmiHeader.biWidth = 16;
@@ -13288,45 +13375,6 @@ static void test_MFInitMediaTypeFromAMMediaType(void)
         {0}, {0}, 0, 0, 0,
         {sizeof(BITMAPINFOHEADER), 32, 24, 1, 0, 0xdeadbeef}
     };
-    static const struct guid_type_pair
-    {
-        const GUID *am_type;
-        const GUID *mf_type;
-    } guid_types[] =
-    {
-        /* these RGB formats are converted, MEDIASUBTYPE variant isn't
-         * defined using DEFINE_MEDIATYPE_GUID */
-        { &MEDIASUBTYPE_RGB1, &MFVideoFormat_RGB1 },
-        { &MEDIASUBTYPE_RGB4, &MFVideoFormat_RGB4 },
-        { &MEDIASUBTYPE_RGB8, &MFVideoFormat_RGB8 },
-        { &MEDIASUBTYPE_RGB555, &MFVideoFormat_RGB555 },
-        { &MEDIASUBTYPE_RGB565, &MFVideoFormat_RGB565 },
-        { &MEDIASUBTYPE_RGB24, &MFVideoFormat_RGB24 },
-        { &MEDIASUBTYPE_RGB32, &MFVideoFormat_RGB32 },
-        { &MEDIASUBTYPE_ARGB1555, &MFVideoFormat_ARGB1555 },
-        { &MEDIASUBTYPE_ARGB4444, &MFVideoFormat_ARGB4444 },
-        { &MEDIASUBTYPE_ARGB32, &MFVideoFormat_ARGB32 },
-        { &MEDIASUBTYPE_A2R10G10B10, &MFVideoFormat_A2B10G10R10 },
-        { &MEDIASUBTYPE_A2B10G10R10, &MFVideoFormat_A2R10G10B10 },
-
-        /* any other GUID is passed through */
-        { &MEDIASUBTYPE_I420, &MFVideoFormat_I420 },
-        { &MEDIASUBTYPE_AYUV, &MFVideoFormat_AYUV },
-        { &MEDIASUBTYPE_YV12, &MFVideoFormat_YV12 },
-        { &MEDIASUBTYPE_YUY2, &MFVideoFormat_YUY2 },
-        { &MEDIASUBTYPE_UYVY, &MFVideoFormat_UYVY },
-        { &MEDIASUBTYPE_YVYU, &MFVideoFormat_YVYU },
-        { &MEDIASUBTYPE_NV12, &MFVideoFormat_NV12 },
-
-        /* even formats that don't exist in MF */
-        { &DUMMY_GUID3, &DUMMY_GUID3 },
-        { &MEDIASUBTYPE_NV24, &MEDIASUBTYPE_NV24 },
-        { &MEDIASUBTYPE_P208, &MEDIASUBTYPE_P208 },
-
-        /* if the mapping is ambiguous, it is not corrected */
-        { &MEDIASUBTYPE_h264, &MEDIASUBTYPE_h264 },
-        { &MEDIASUBTYPE_H264, &MFVideoFormat_H264 },
-    };
     static const GUID *audio_types[] =
     {
         &MEDIASUBTYPE_MP3,
@@ -13513,10 +13561,10 @@ static void test_MFInitMediaTypeFromAMMediaType(void)
     ok(!memcmp(&aperture, &expect_aperture, sizeof(aperture)), "unexpected aperture\n");
 
     vih.bmiHeader.biHeight = 24;
-    for (i = 0; i < ARRAY_SIZE(guid_types); ++i)
+    for (i = 0; i < ARRAY_SIZE(am_mf_guid_tests); ++i)
     {
-        winetest_push_context("%s", debugstr_guid(guid_types[i].am_type));
-        memcpy(&mt.subtype, guid_types[i].am_type, sizeof(GUID));
+        winetest_push_context("%s", debugstr_guid(am_mf_guid_tests[i].am_type));
+        memcpy(&mt.subtype, am_mf_guid_tests[i].am_type, sizeof(GUID));
 
         hr = MFInitMediaTypeFromAMMediaType(media_type, &mt);
         ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
@@ -13526,7 +13574,7 @@ static void test_MFInitMediaTypeFromAMMediaType(void)
         ok(IsEqualGUID(&guid, &MFMediaType_Video), "Unexpected guid %s.\n", debugstr_guid(&guid));
         hr = IMFMediaType_GetGUID(media_type, &MF_MT_SUBTYPE, &guid);
         ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-        ok(IsEqualGUID(&guid, guid_types[i].mf_type), "Unexpected guid %s.\n", debugstr_guid(&guid));
+        ok(IsEqualGUID(&guid, am_mf_guid_tests[i].mf_type), "Unexpected guid %s.\n", debugstr_guid(&guid));
         winetest_pop_context();
     }
 
diff --git a/dlls/mountmgr.sys/unixlib.c b/dlls/mountmgr.sys/unixlib.c
index 2a5fd272db6c..575a26e9a1c0 100644
--- a/dlls/mountmgr.sys/unixlib.c
+++ b/dlls/mountmgr.sys/unixlib.c
@@ -328,6 +328,13 @@ static LONGLONG get_free_bytes_for_important_data(int fd)
     if (!(url = CFURLCreateFromFileSystemRepresentation( NULL, (UInt8 *)path, strlen( path ), false ))) goto done;
     if (!CFURLCopyResourcePropertyForKey( url, kCFURLVolumeAvailableCapacityForImportantUsageKey, &num, NULL )) goto done;
     CFNumberGetValue( num, kCFNumberLongLongType, &space );
+    if (space == 0)
+    {
+        /* It's unlikely that a writeable disk has exactly 0 free bytes. This
+         * probably means the disk is read-only, or is not APFS. Fall back to
+         * statfs. */
+        space = -1;
+    }
 
 done:
     free( path );
diff --git a/dlls/mscoree/corruntimehost.c b/dlls/mscoree/corruntimehost.c
index 76adef380444..394bf663ed1e 100644
--- a/dlls/mscoree/corruntimehost.c
+++ b/dlls/mscoree/corruntimehost.c
@@ -115,24 +115,7 @@ struct clrclass_data
     DWORD res2[2];
 };
 
-static MonoDomain* domain_attach(MonoDomain *domain)
-{
-    MonoDomain *prev_domain = mono_domain_get();
-
-    if (prev_domain == domain)
-        /* Do not set or restore domain. */
-        return NULL;
-
-    mono_thread_attach(domain);
-
-    return prev_domain;
-}
-
-static void domain_restore(MonoDomain *prev_domain)
-{
-    if (prev_domain != NULL)
-        mono_domain_set(prev_domain, FALSE);
-}
+static HRESULT RuntimeHost_GetIUnknownForObject(RuntimeHost *This, MonoObject *obj, IUnknown **ppUnk);
 
 static HRESULT RuntimeHost_GetDefaultDomain(RuntimeHost *This, const WCHAR *config_path, MonoDomain **result)
 {
@@ -191,7 +174,7 @@ end:
     return res;
 }
 
-static BOOL RuntimeHost_GetMethod(MonoDomain *domain, const char *assemblyname,
+static BOOL RuntimeHost_GetMethod(const char *assemblyname,
     const char *namespace, const char *typename, const char *methodname, int arg_count,
     MonoMethod **method)
 {
@@ -238,11 +221,11 @@ static BOOL RuntimeHost_GetMethod(MonoDomain *domain, const char *assemblyname,
     return TRUE;
 }
 
-static HRESULT RuntimeHost_Invoke(RuntimeHost *This, MonoDomain *domain,
+static HRESULT RuntimeHost_Invoke(RuntimeHost *This,
     const char *assemblyname, const char *namespace, const char *typename, const char *methodname,
     MonoObject *obj, void **args, int arg_count, MonoObject **result);
 
-static HRESULT RuntimeHost_DoInvoke(RuntimeHost *This, MonoDomain *domain,
+static HRESULT RuntimeHost_DoInvoke(RuntimeHost *This,
     const char *methodname, MonoMethod *method, MonoObject *obj, void **args, MonoObject **result)
 {
     MonoObject *exc;
@@ -257,7 +240,7 @@ static HRESULT RuntimeHost_DoInvoke(RuntimeHost *This, MonoDomain *domain,
         if (methodname != get_hresult)
         {
             /* Map the exception to an HRESULT. */
-            hr = RuntimeHost_Invoke(This, domain, NULL, "System", "Exception", get_hresult,
+            hr = RuntimeHost_Invoke(This, NULL, "System", "Exception", get_hresult,
                 exc, NULL, 0, &hr_object);
             if (SUCCEEDED(hr))
                 hr = *(HRESULT*)mono_object_unbox(hr_object);
@@ -273,42 +256,35 @@ static HRESULT RuntimeHost_DoInvoke(RuntimeHost *This, MonoDomain *domain,
     return S_OK;
 }
 
-static HRESULT RuntimeHost_Invoke(RuntimeHost *This, MonoDomain *domain,
+static HRESULT RuntimeHost_Invoke(RuntimeHost *This,
     const char *assemblyname, const char *namespace, const char *typename, const char *methodname,
     MonoObject *obj, void **args, int arg_count, MonoObject **result)
 {
     MonoMethod *method;
-    MonoDomain *prev_domain;
     HRESULT hr;
 
     *result = NULL;
 
-    prev_domain = domain_attach(domain);
-
-    if (!RuntimeHost_GetMethod(domain, assemblyname, namespace, typename, methodname,
+    if (!RuntimeHost_GetMethod(assemblyname, namespace, typename, methodname,
             arg_count, &method))
     {
-        domain_restore(prev_domain);
         return E_FAIL;
     }
 
-    hr = RuntimeHost_DoInvoke(This, domain, methodname, method, obj, args, result);
+    hr = RuntimeHost_DoInvoke(This, methodname, method, obj, args, result);
     if (FAILED(hr))
     {
         ERR("Method %s.%s:%s raised an exception, hr=%lx\n", namespace, typename, methodname, hr);
     }
 
-    domain_restore(prev_domain);
-
     return hr;
 }
 
-static HRESULT RuntimeHost_VirtualInvoke(RuntimeHost *This, MonoDomain *domain,
+static HRESULT RuntimeHost_VirtualInvoke(RuntimeHost *This,
     const char *assemblyname, const char *namespace, const char *typename, const char *methodname,
     MonoObject *obj, void **args, int arg_count, MonoObject **result)
 {
     MonoMethod *method;
-    MonoDomain *prev_domain;
     HRESULT hr;
 
     *result = NULL;
@@ -319,12 +295,9 @@ static HRESULT RuntimeHost_VirtualInvoke(RuntimeHost *This, MonoDomain *domain,
         return E_POINTER;
     }
 
-    prev_domain = domain_attach(domain);
-
-    if (!RuntimeHost_GetMethod(domain, assemblyname, namespace, typename, methodname,
+    if (!RuntimeHost_GetMethod(assemblyname, namespace, typename, methodname,
             arg_count, &method))
     {
-        domain_restore(prev_domain);
         return E_FAIL;
     }
 
@@ -332,22 +305,19 @@ static HRESULT RuntimeHost_VirtualInvoke(RuntimeHost *This, MonoDomain *domain,
     if (!method)
     {
         ERR("Object %p does not support method %s.%s:%s\n", obj, namespace, typename, methodname);
-        domain_restore(prev_domain);
         return E_FAIL;
     }
 
-    hr = RuntimeHost_DoInvoke(This, domain, methodname, method, obj, args, result);
+    hr = RuntimeHost_DoInvoke(This, methodname, method, obj, args, result);
     if (FAILED(hr))
     {
         ERR("Method %s.%s:%s raised an exception, hr=%lx\n", namespace, typename, methodname, hr);
     }
 
-    domain_restore(prev_domain);
-
     return hr;
 }
 
-static HRESULT RuntimeHost_GetObjectForIUnknown(RuntimeHost *This, MonoDomain *domain,
+static HRESULT RuntimeHost_GetObjectForIUnknown(RuntimeHost *This,
     IUnknown *unk, MonoObject **obj)
 {
     HRESULT hr;
@@ -355,7 +325,7 @@ static HRESULT RuntimeHost_GetObjectForIUnknown(RuntimeHost *This, MonoDomain *d
     MonoObject *result;
 
     args[0] = &unk;
-    hr = RuntimeHost_Invoke(This, domain, NULL, "System.Runtime.InteropServices", "Marshal", "GetObjectForIUnknown",
+    hr = RuntimeHost_Invoke(This, NULL, "System.Runtime.InteropServices", "Marshal", "GetObjectForIUnknown",
         NULL, args, 1, &result);
 
     if (SUCCEEDED(hr))
@@ -370,9 +340,10 @@ static HRESULT RuntimeHost_AddDomain(RuntimeHost *This, const WCHAR *name, IUnkn
 {
     HRESULT res;
     char *nameA;
-    MonoDomain *domain;
+    MonoDomain *domain, *prev_domain;
     void *args[3];
     MonoObject *new_domain, *id;
+    void *attach_cookie;
 
     res = RuntimeHost_GetDefaultDomain(This, NULL, &domain);
     if (FAILED(res))
@@ -386,19 +357,23 @@ static HRESULT RuntimeHost_AddDomain(RuntimeHost *This, const WCHAR *name, IUnkn
         return E_OUTOFMEMORY;
     }
 
+    prev_domain = mono_threads_attach_coop(domain, &attach_cookie);
+
     args[0] = mono_string_new(domain, nameA);
     free(nameA);
 
     if (!args[0])
     {
+        mono_threads_detach_coop(prev_domain, &attach_cookie);
         return E_OUTOFMEMORY;
     }
 
     if (evidence)
     {
-        res = RuntimeHost_GetObjectForIUnknown(This, domain, evidence, (MonoObject **)&args[1]);
+        res = RuntimeHost_GetObjectForIUnknown(This, evidence, (MonoObject **)&args[1]);
         if (FAILED(res))
         {
+            mono_threads_detach_coop(prev_domain, &attach_cookie);
             return res;
         }
     }
@@ -409,9 +384,10 @@ static HRESULT RuntimeHost_AddDomain(RuntimeHost *This, const WCHAR *name, IUnkn
 
     if (setup)
     {
-        res = RuntimeHost_GetObjectForIUnknown(This, domain, setup, (MonoObject **)&args[2]);
+        res = RuntimeHost_GetObjectForIUnknown(This, setup, (MonoObject **)&args[2]);
         if (FAILED(res))
         {
+            mono_threads_detach_coop(prev_domain, &attach_cookie);
             return res;
         }
     }
@@ -420,11 +396,12 @@ static HRESULT RuntimeHost_AddDomain(RuntimeHost *This, const WCHAR *name, IUnkn
         args[2] = NULL;
     }
 
-    res = RuntimeHost_Invoke(This, domain, NULL, "System", "AppDomain", "CreateDomain",
+    res = RuntimeHost_Invoke(This, NULL, "System", "AppDomain", "CreateDomain",
         NULL, args, 3, &new_domain);
 
     if (FAILED(res))
     {
+        mono_threads_detach_coop(prev_domain, &attach_cookie);
         return res;
     }
 
@@ -434,11 +411,12 @@ static HRESULT RuntimeHost_AddDomain(RuntimeHost *This, const WCHAR *name, IUnkn
      * Instead, do a vcall.
      */
 
-    res = RuntimeHost_VirtualInvoke(This, domain, NULL, "System", "AppDomain", "get_Id",
+    res = RuntimeHost_VirtualInvoke(This, NULL, "System", "AppDomain", "get_Id",
         new_domain, NULL, 0, &id);
 
     if (FAILED(res))
     {
+        mono_threads_detach_coop(prev_domain, &attach_cookie);
         return res;
     }
 
@@ -446,16 +424,22 @@ static HRESULT RuntimeHost_AddDomain(RuntimeHost *This, const WCHAR *name, IUnkn
 
     *result = mono_domain_get_by_id(*(int *)mono_object_unbox(id));
 
+    mono_threads_detach_coop(prev_domain, &attach_cookie);
+
     return S_OK;
 }
 
 static HRESULT RuntimeHost_GetIUnknownForDomain(RuntimeHost *This, MonoDomain *domain, IUnknown **punk)
 {
     HRESULT hr;
+    MonoDomain *prev_domain;
     MonoObject *appdomain_object;
     IUnknown *unk;
+    void *attach_cookie;
+
+    prev_domain = mono_threads_attach_coop(domain, &attach_cookie);
 
-    hr = RuntimeHost_Invoke(This, domain, NULL, "System", "AppDomain", "get_CurrentDomain",
+    hr = RuntimeHost_Invoke(This, NULL, "System", "AppDomain", "get_CurrentDomain",
         NULL, NULL, 0, &appdomain_object);
 
     if (SUCCEEDED(hr))
@@ -468,6 +452,8 @@ static HRESULT RuntimeHost_GetIUnknownForDomain(RuntimeHost *This, MonoDomain *d
         IUnknown_Release(unk);
     }
 
+    mono_threads_detach_coop(prev_domain, &attach_cookie);
+
     return hr;
 }
 
@@ -475,8 +461,9 @@ void RuntimeHost_ExitProcess(RuntimeHost *This, INT exitcode)
 {
     HRESULT hr;
     void *args[2];
-    MonoDomain *domain;
+    MonoDomain *domain, *prev_domain;
     MonoObject *dummy;
+    void *attach_cookie;
 
     hr = RuntimeHost_GetDefaultDomain(This, NULL, &domain);
     if (FAILED(hr))
@@ -485,12 +472,16 @@ void RuntimeHost_ExitProcess(RuntimeHost *This, INT exitcode)
         return;
     }
 
+    prev_domain = mono_threads_attach_coop(domain, &attach_cookie);
+
     args[0] = &exitcode;
     args[1] = NULL;
-    RuntimeHost_Invoke(This, domain, NULL, "System", "Environment", "Exit",
+    RuntimeHost_Invoke(This, NULL, "System", "Environment", "Exit",
         NULL, args, 1, &dummy);
 
     ERR("Process should have exited\n");
+
+    mono_threads_detach_coop(prev_domain, &attach_cookie);
 }
 
 static inline RuntimeHost *impl_from_ICLRRuntimeHost( ICLRRuntimeHost *iface )
@@ -710,19 +701,11 @@ static HRESULT WINAPI corruntimehost_CreateDomainSetup(
 {
     RuntimeHost *This = impl_from_ICorRuntimeHost( iface );
     HRESULT hr;
-    MonoDomain *domain;
-    MonoObject *obj;
     static const WCHAR classnameW[] = {'S','y','s','t','e','m','.','A','p','p','D','o','m','a','i','n','S','e','t','u','p',',','m','s','c','o','r','l','i','b',0};
 
     TRACE("(%p)\n", iface);
 
-    hr = RuntimeHost_GetDefaultDomain(This, NULL, &domain);
-
-    if (SUCCEEDED(hr))
-        hr = RuntimeHost_CreateManagedInstance(This, classnameW, domain, &obj);
-
-    if (SUCCEEDED(hr))
-        hr = RuntimeHost_GetIUnknownForObject(This, obj, appDomainSetup);
+    hr = RuntimeHost_CreateManagedInstance(This, classnameW, appDomainSetup);
 
     return hr;
 }
@@ -880,6 +863,7 @@ static HRESULT WINAPI CLRRuntimeHost_ExecuteInDefaultAppDomain(ICLRRuntimeHost*
     MonoDomain *domain, *prev_domain;
     MonoObject *result;
     MonoString *str;
+    void *attach_cookie;
     char *filenameA = NULL, *classA = NULL, *methodA = NULL;
     char *argsA = NULL, *ns;
 
@@ -891,7 +875,7 @@ static HRESULT WINAPI CLRRuntimeHost_ExecuteInDefaultAppDomain(ICLRRuntimeHost*
     if (FAILED(hr))
         return hr;
 
-    prev_domain = domain_attach(domain);
+    prev_domain = mono_threads_attach_coop(domain, &attach_cookie);
 
     if (SUCCEEDED(hr))
     {
@@ -937,14 +921,14 @@ static HRESULT WINAPI CLRRuntimeHost_ExecuteInDefaultAppDomain(ICLRRuntimeHost*
 
     if (SUCCEEDED(hr))
     {
-        hr = RuntimeHost_Invoke(This, domain, filenameA, classA, ns+1, methodA,
+        hr = RuntimeHost_Invoke(This, filenameA, classA, ns+1, methodA,
             NULL, (void**)&str, 1, &result);
     }
 
     if (SUCCEEDED(hr))
         *pReturnValue = *(DWORD*)mono_object_unbox(result);
 
-    domain_restore(prev_domain);
+    mono_threads_detach_coop(prev_domain, &attach_cookie);
 
     free(filenameA);
     free(classA);
@@ -971,32 +955,28 @@ static const struct ICLRRuntimeHostVtbl CLRHostVtbl =
 };
 
 /* Create an instance of a type given its name, by calling its constructor with
- * no arguments. Note that result MUST be in the stack, or the garbage
- * collector may free it prematurely. */
-HRESULT RuntimeHost_CreateManagedInstance(RuntimeHost *This, LPCWSTR name,
-    MonoDomain *domain, MonoObject **result)
+ * no arguments. */
+HRESULT RuntimeHost_CreateManagedInstance(RuntimeHost *This, LPCWSTR name, IUnknown **result)
 {
     HRESULT hr=S_OK;
     char *nameA=NULL;
     MonoType *type;
     MonoClass *klass;
     MonoObject *obj;
-    MonoDomain *prev_domain;
-
-    if (!domain)
-        hr = RuntimeHost_GetDefaultDomain(This, NULL, &domain);
+    MonoDomain *domain, *prev_domain;
+    void *attach_cookie;
 
+    hr = RuntimeHost_GetDefaultDomain(This, NULL, &domain);
     if (FAILED(hr))
+    {
         return hr;
+    }
 
-    prev_domain = domain_attach(domain);
+    nameA = WtoA(name);
+    if (!nameA)
+        hr = E_OUTOFMEMORY;
 
-    if (SUCCEEDED(hr))
-    {
-        nameA = WtoA(name);
-        if (!nameA)
-            hr = E_OUTOFMEMORY;
-    }
+    prev_domain = mono_threads_attach_coop(domain, &attach_cookie);
 
     if (SUCCEEDED(hr))
     {
@@ -1032,10 +1012,12 @@ HRESULT RuntimeHost_CreateManagedInstance(RuntimeHost *This, LPCWSTR name,
     {
         /* FIXME: Detect exceptions from the constructor? */
         mono_runtime_object_init(obj);
-        *result = obj;
     }
 
-    domain_restore(prev_domain);
+    if (SUCCEEDED(hr))
+        hr = RuntimeHost_GetIUnknownForObject(This, obj, result);
+
+    mono_threads_detach_coop(prev_domain, &attach_cookie);
 
     free(nameA);
 
@@ -1053,13 +1035,10 @@ HRESULT RuntimeHost_CreateManagedInstance(RuntimeHost *This, LPCWSTR name,
 HRESULT RuntimeHost_GetIUnknownForObject(RuntimeHost *This, MonoObject *obj,
     IUnknown **ppUnk)
 {
-    MonoDomain *domain;
     MonoObject *result;
     HRESULT hr;
 
-    domain = mono_object_get_domain(obj);
-
-    hr = RuntimeHost_Invoke(This, domain, NULL, "System.Runtime.InteropServices", "Marshal", "GetIUnknownForObject",
+    hr = RuntimeHost_Invoke(This, NULL, "System.Runtime.InteropServices", "Marshal", "GetIUnknownForObject",
         NULL, (void**)&obj, 1, &result);
 
     if (SUCCEEDED(hr))
@@ -1266,6 +1245,7 @@ static void CDECL ReallyFixupVTable(struct dll_fixup *fixup)
     MonoAssembly *assembly=NULL;
     MonoImageOpenStatus status=0;
     MonoDomain *domain;
+    void *attach_cookie;
 
     if (fixup->done) return;
 
@@ -1293,7 +1273,7 @@ static void CDECL ReallyFixupVTable(struct dll_fixup *fixup)
     {
         MonoDomain *prev_domain;
 
-        prev_domain = domain_attach(domain);
+        prev_domain = mono_threads_attach_coop(domain, &attach_cookie);
 
         assembly = mono_assembly_open(filenameA, &status);
 
@@ -1322,7 +1302,7 @@ static void CDECL ReallyFixupVTable(struct dll_fixup *fixup)
             fixup->done = TRUE;
         }
 
-        domain_restore(prev_domain);
+        mono_threads_detach_coop(prev_domain, &attach_cookie);
     }
 
     if (info != NULL)
@@ -1427,10 +1407,11 @@ __int32 WINAPI _CorExeMain(void)
     int exit_code;
     int argc;
     char **argv;
-    MonoDomain *domain=NULL;
+    MonoDomain *domain=NULL, *prev_domain=NULL;
     MonoImage *image;
     MonoImageOpenStatus status;
     MonoAssembly *assembly=NULL;
+    void *attach_cookie;
     WCHAR filename[MAX_PATH], config_file[MAX_PATH], *temp, **priv_path;
     SIZE_T config_file_dir_size;
     char *filenameA;
@@ -1490,10 +1471,14 @@ __int32 WINAPI _CorExeMain(void)
         hr = ICLRRuntimeInfo_GetRuntimeHost(info, &host);
 
         if (SUCCEEDED(hr))
+        {
             hr = RuntimeHost_GetDefaultDomain(host, config_file, &domain);
+        }
 
         if (SUCCEEDED(hr))
         {
+            prev_domain = mono_threads_attach_coop(domain, &attach_cookie);
+
             image = mono_image_open_from_module_handle(GetModuleHandleW(NULL),
                 filenameA, 1, &status);
 
@@ -1511,6 +1496,8 @@ __int32 WINAPI _CorExeMain(void)
                 ERR("couldn't load %s, status=%d\n", debugstr_w(filename), status);
                 exit_code = -1;
             }
+
+            mono_threads_detach_coop(prev_domain, &attach_cookie);
         }
         else
             exit_code = -1;
@@ -1908,12 +1895,13 @@ HRESULT create_monodata(REFCLSID clsid, LPVOID *ppObj)
             MonoDomain *prev_domain;
             MonoImageOpenStatus status;
             IUnknown *unk = NULL;
+            void *attach_cookie;
             char *filenameA, *ns;
             char *classA;
 
             hr = CLASS_E_CLASSNOTAVAILABLE;
 
-            prev_domain = domain_attach(domain);
+            prev_domain = mono_threads_attach_coop(domain, &attach_cookie);
 
             filenameA = WtoA(filename);
             assembly = mono_assembly_open(filenameA, &status);
@@ -1921,7 +1909,7 @@ HRESULT create_monodata(REFCLSID clsid, LPVOID *ppObj)
             if (!assembly)
             {
                 ERR("Cannot open assembly %s, status=%i\n", debugstr_w(filename), status);
-                domain_restore(prev_domain);
+                mono_threads_detach_coop(prev_domain, &attach_cookie);
                 goto cleanup;
             }
 
@@ -1929,7 +1917,7 @@ HRESULT create_monodata(REFCLSID clsid, LPVOID *ppObj)
             if (!image)
             {
                 ERR("Couldn't get assembly image\n");
-                domain_restore(prev_domain);
+                mono_threads_detach_coop(prev_domain, &attach_cookie);
                 goto cleanup;
             }
 
@@ -1942,7 +1930,7 @@ HRESULT create_monodata(REFCLSID clsid, LPVOID *ppObj)
             if (!klass)
             {
                 ERR("Couldn't get class from image\n");
-                domain_restore(prev_domain);
+                mono_threads_detach_coop(prev_domain, &attach_cookie);
                 goto cleanup;
             }
 
@@ -1962,7 +1950,7 @@ HRESULT create_monodata(REFCLSID clsid, LPVOID *ppObj)
             else
                 hr = CLASS_E_CLASSNOTAVAILABLE;
 
-            domain_restore(prev_domain);
+            mono_threads_detach_coop(prev_domain, &attach_cookie);
         }
         else
             hr = CLASS_E_CLASSNOTAVAILABLE;
diff --git a/dlls/mscoree/metahost.c b/dlls/mscoree/metahost.c
index 0e34d7388a0f..eb609fccc29d 100644
--- a/dlls/mscoree/metahost.c
+++ b/dlls/mscoree/metahost.c
@@ -97,7 +97,6 @@ MonoMethod* (CDECL *mono_class_get_method_from_name)(MonoClass *klass, const cha
 static void (CDECL *mono_config_parse)(const char *filename);
 MonoDomain* (CDECL *mono_domain_get)(void);
 MonoDomain* (CDECL *mono_domain_get_by_id)(int id);
-BOOL (CDECL *mono_domain_set)(MonoDomain *domain,BOOL force);
 void (CDECL *mono_domain_set_config)(MonoDomain *domain,const char *base_dir,const char *config_file_name);
 static void (CDECL *mono_free)(void *);
 MonoImage* (CDECL *mono_get_corlib)(void);
@@ -125,8 +124,9 @@ static void (CDECL *mono_set_dirs)(const char *assembly_dir, const char *config_
 static void (CDECL *mono_set_verbose_level)(DWORD level);
 MonoString* (CDECL *mono_string_new)(MonoDomain *domain, const char *str);
 static char* (CDECL *mono_stringify_assembly_name)(MonoAssemblyName *aname);
-MonoThread* (CDECL *mono_thread_attach)(MonoDomain *domain);
 void (CDECL *mono_thread_manage)(void);
+MonoDomain* (CDECL *mono_threads_attach_coop)(MonoDomain *domain, void *attach_cookie);
+void (CDECL *mono_threads_detach_coop)(MonoDomain *orig_domain, void *attach_cookie);
 void (CDECL *mono_trace_set_print_handler)(MonoPrintCallback callback);
 void (CDECL *mono_trace_set_printerr_handler)(MonoPrintCallback callback);
 void (CDECL *mono_trace_set_log_handler)(MonoLogCallback callback, void *user_data);
@@ -215,7 +215,6 @@ static HRESULT load_mono(LPCWSTR mono_path)
         LOAD_MONO_FUNCTION(mono_class_get_method_from_name);
         LOAD_MONO_FUNCTION(mono_domain_get);
         LOAD_MONO_FUNCTION(mono_domain_get_by_id);
-        LOAD_MONO_FUNCTION(mono_domain_set);
         LOAD_MONO_FUNCTION(mono_domain_set_config);
         LOAD_MONO_FUNCTION(mono_free);
         LOAD_MONO_FUNCTION(mono_get_corlib);
@@ -237,8 +236,9 @@ static HRESULT load_mono(LPCWSTR mono_path)
         LOAD_MONO_FUNCTION(mono_set_verbose_level);
         LOAD_MONO_FUNCTION(mono_stringify_assembly_name);
         LOAD_MONO_FUNCTION(mono_string_new);
-        LOAD_MONO_FUNCTION(mono_thread_attach);
         LOAD_MONO_FUNCTION(mono_thread_manage);
+        LOAD_MONO_FUNCTION(mono_threads_attach_coop);
+        LOAD_MONO_FUNCTION(mono_threads_detach_coop);
 
 #undef LOAD_MONO_FUNCTION
 
diff --git a/dlls/mscoree/mscoree_main.c b/dlls/mscoree/mscoree_main.c
index 2b9f78a39556..d65cc25993cf 100644
--- a/dlls/mscoree/mscoree_main.c
+++ b/dlls/mscoree/mscoree_main.c
@@ -596,7 +596,6 @@ STDAPI ClrCreateManagedInstance(LPCWSTR pTypeName, REFIID riid, void **ppObject)
     HRESULT ret;
     ICLRRuntimeInfo *info;
     RuntimeHost *host;
-    MonoObject *obj;
     IUnknown *unk;
 
     TRACE("(%s,%s,%p)\n", debugstr_w(pTypeName), debugstr_guid(riid), ppObject);
@@ -612,10 +611,7 @@ STDAPI ClrCreateManagedInstance(LPCWSTR pTypeName, REFIID riid, void **ppObject)
     }
 
     if (SUCCEEDED(ret))
-        ret = RuntimeHost_CreateManagedInstance(host, pTypeName, NULL, &obj);
-
-    if (SUCCEEDED(ret))
-        ret = RuntimeHost_GetIUnknownForObject(host, obj, &unk);
+        ret = RuntimeHost_CreateManagedInstance(host, pTypeName, &unk);
 
     if (SUCCEEDED(ret))
     {
diff --git a/dlls/mscoree/mscoree_private.h b/dlls/mscoree/mscoree_private.h
index b8caac1b9112..e8520f7fb0dc 100644
--- a/dlls/mscoree/mscoree_private.h
+++ b/dlls/mscoree/mscoree_private.h
@@ -179,7 +179,6 @@ extern MonoClass* (CDECL *mono_class_from_name)(MonoImage *image, const char* na
 extern MonoMethod* (CDECL *mono_class_get_method_from_name)(MonoClass *klass, const char *name, int param_count);
 extern MonoDomain* (CDECL *mono_domain_get)(void);
 extern MonoDomain* (CDECL *mono_domain_get_by_id)(int id);
-extern BOOL (CDECL *mono_domain_set)(MonoDomain *domain, BOOL force);
 extern void (CDECL *mono_domain_set_config)(MonoDomain *domain,const char *base_dir,const char *config_file_name);
 extern MonoImage* (CDECL *mono_get_corlib)(void);
 extern int (CDECL *mono_jit_exec)(MonoDomain *domain, MonoAssembly *assembly, int argc, char *argv[]);
@@ -195,8 +194,9 @@ extern MonoObject* (CDECL *mono_runtime_invoke)(MonoMethod *method, void *obj, v
 extern void (CDECL *mono_runtime_object_init)(MonoObject *this_obj);
 extern void (CDECL *mono_runtime_quit)(void);
 extern MonoString* (CDECL *mono_string_new)(MonoDomain *domain, const char *str);
-extern MonoThread* (CDECL *mono_thread_attach)(MonoDomain *domain);
 extern void (CDECL *mono_thread_manage)(void);
+extern MonoDomain* (CDECL *mono_threads_attach_coop)(MonoDomain *domain, void *attach_cookie);
+extern void (CDECL *mono_threads_detach_coop)(MonoDomain *orig_domain, void *attach_cookie);
 extern void (CDECL *mono_trace_set_print_handler)(MonoPrintCallback callback);
 extern void (CDECL *mono_trace_set_printerr_handler)(MonoPrintCallback callback);
 
@@ -209,10 +209,8 @@ extern void RuntimeHost_ExitProcess(RuntimeHost *This, INT exitcode);
 
 extern HRESULT RuntimeHost_GetInterface(RuntimeHost *This, REFCLSID clsid, REFIID riid, void **ppv);
 
-extern HRESULT RuntimeHost_GetIUnknownForObject(RuntimeHost *This, MonoObject *obj, IUnknown **ppUnk);
-
 extern HRESULT RuntimeHost_CreateManagedInstance(RuntimeHost *This, LPCWSTR name,
-    MonoDomain *domain, MonoObject **result);
+    IUnknown **result);
 
 HRESULT WINAPI CLRMetaHost_ExitProcess(ICLRMetaHost* iface, INT32 iExitCode);
 
diff --git a/dlls/msi/tests/db.c b/dlls/msi/tests/db.c
index 5dc5e88c4575..56fff94c5dfa 100644
--- a/dlls/msi/tests/db.c
+++ b/dlls/msi/tests/db.c
@@ -9365,282 +9365,6 @@ static void test_viewfetch_wraparound(void)
     DeleteFileA(msifile);
 }
 
-static void write_raw_stream(IStorage *stg, const WCHAR *name, const void *data, DWORD size)
-{
-    IStream *stm;
-    DWORD count;
-    HRESULT hr;
-
-    hr = IStorage_CreateStream(stg, name, STGM_WRITE | STGM_SHARE_EXCLUSIVE, 0, 0, &stm);
-    ok(hr == S_OK, "Expected S_OK, got %#lx\n", hr);
-    hr = IStream_Write(stm, data, size, &count);
-    ok(hr == S_OK, "Expected S_OK, got %#lx\n", hr);
-    IStream_Release(stm);
-}
-
-static void test_table_stream_padding(void)
-{
-    static const WCHAR moo_encoded[] = {0x4840, 0x3e16, 0x4818, 0}; /* encoded "MOO" */
-    MSIHANDLE hdb, hview, hrec;
-    IStorage *stg;
-    IStream *stm;
-    WCHAR nameW[MAX_PATH];
-    HRESULT hr;
-    BYTE moo_data[64];
-    BYTE padded[64];
-    DWORD moo_size;
-    const char *query;
-    UINT r;
-
-    DeleteFileA(msifile);
-
-    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
-    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
-    query = "CREATE TABLE `MOO` (`A` LONG PRIMARY KEY `A`)";
-    r = run_query(hdb, 0, query);
-    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
-    query = "INSERT INTO `MOO` (`A`) VALUES (10)";
-    r = run_query(hdb, 0, query);
-    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
-    query = "INSERT INTO `MOO` (`A`) VALUES (20)";
-    r = run_query(hdb, 0, query);
-    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
-    r = MsiDatabaseCommit(hdb);
-    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    MsiCloseHandle(hdb);
-
-    MultiByteToWideChar(CP_ACP, 0, msifile, -1, nameW, MAX_PATH);
-    hr = StgOpenStorage(nameW, NULL, STGM_DIRECT | STGM_READWRITE | STGM_SHARE_EXCLUSIVE,
-                        NULL, 0, &stg);
-    ok(hr == S_OK, "Expected S_OK, got %#lx\n", hr);
-
-    hr = IStorage_OpenStream(stg, moo_encoded, NULL, STGM_READ | STGM_SHARE_EXCLUSIVE, 0, &stm);
-    ok(hr == S_OK, "Expected S_OK, got %#lx\n", hr);
-    hr = IStream_Read(stm, moo_data, sizeof(moo_data), &moo_size);
-    ok(hr == S_OK, "Expected S_OK, got %#lx\n", hr);
-    ok(moo_size == 8, "Expected 8, got %lu\n", moo_size);
-    IStream_Release(stm);
-
-
-    memcpy(padded, moo_data, moo_size);
-    padded[moo_size] = 0;
-    padded[moo_size + 1] = 0;
-
-
-    hr = IStorage_DestroyElement(stg, moo_encoded);
-    ok(hr == S_OK, "Expected S_OK, got %#lx\n", hr);
-
-    hr = IStorage_CreateStream(stg, moo_encoded, STGM_WRITE | STGM_SHARE_EXCLUSIVE, 0, 0, &stm);
-    ok(hr == S_OK, "Expected S_OK, got %#lx\n", hr);
-    hr = IStream_Write(stm, padded, moo_size + 2, &moo_size);
-    ok(hr == S_OK, "Expected S_OK, got %#lx\n", hr);
-    IStream_Release(stm);
-
-    IStorage_Release(stg);
-
-
-    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_READONLY, &hdb);
-    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
-    query = "SELECT `A` FROM `MOO`";
-    r = MsiDatabaseOpenViewA(hdb, query, &hview);
-    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
-    r = MsiViewExecute(hview, 0);
-    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
-    r = MsiViewFetch(hview, &hrec);
-    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    check_record(hrec, 1, "10");
-    MsiCloseHandle(hrec);
-
-    r = MsiViewFetch(hview, &hrec);
-    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    check_record(hrec, 1, "20");
-    MsiCloseHandle(hrec);
-
-    r = MsiViewFetch(hview, &hrec);
-    ok(r == ERROR_NO_MORE_ITEMS, "Expected ERROR_NO_MORE_ITEMS, got %d\n", r);
-
-    MsiViewClose(hview);
-    MsiCloseHandle(hview);
-    MsiCloseHandle(hdb);
-    DeleteFileA(msifile);
-}
-
-/* Convert column-major table data from 2-byte to 3-byte string references. Returns the new size. */
-static DWORD convert_to_3byte_strref(const BYTE *old_data, DWORD old_size,
-                                     BYTE *new_data, const int *col_types, UINT col_count)
-{
-    UINT old_row_size = col_count * 2;
-    UINT row_count = old_size / old_row_size;
-    DWORD new_size = 0;
-    UINT old_ofs = 0;
-    UINT j, i;
-
-    for (j = 0; j < col_count; j++)
-    {
-        for (i = 0; i < row_count; i++)
-        {
-            new_data[new_size++] = old_data[old_ofs++];
-            new_data[new_size++] = old_data[old_ofs++];
-            if (!col_types[j])
-                new_data[new_size++] = 0;
-        }
-    }
-    return new_size;
-}
-
-static void test_table_mismatched_strref(void)
-{
-    static const CLSID CLSID_MsiDatabase =
-        { 0xc1084, 0, 0, {0xc0, 0, 0, 0, 0, 0, 0, 0x46} };
-    static const WCHAR stringpool_enc[] = {0x4840, 0x3f3f, 0x4577, 0x446c, 0x3e6a, 0x44b2, 0x482f, 0};
-    static const WCHAR tables_enc[] = {0x4840, 0x3f7f, 0x4164, 0x422f, 0x4836, 0};
-    static const WCHAR columns_enc[] = {0x4840, 0x3b3f, 0x43f2, 0x4438, 0x45b1, 0};
-    static const int tables_col_types[] = {0};
-    static const int columns_col_types[] = {0, 1, 0, 1};
-
-    MSIHANDLE hdb, hview, hrec;
-    IStorage *src, *dst;
-    IEnumSTATSTG *enumstg;
-    STATSTG stat;
-    IStream *stm;
-    WCHAR nameW[MAX_PATH], tmpW[MAX_PATH];
-    HRESULT hr;
-    BYTE buf[4096], converted[4096];
-    DWORD size, new_size;
-    const char *query;
-    UINT r;
-
-    DeleteFileA(msifile);
-    DeleteFileA("msitest2.msi");
-
-    /* Create a valid MSI database with 2-byte string refs */
-    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
-    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
-    query = "CREATE TABLE `MOO` (`A` SHORT NOT NULL, `B` CHAR(72) PRIMARY KEY `A`)";
-    r = run_query(hdb, 0, query);
-    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
-    query = "INSERT INTO `MOO` (`A`, `B`) VALUES (1, 'one')";
-    r = run_query(hdb, 0, query);
-    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
-    query = "INSERT INTO `MOO` (`A`, `B`) VALUES (2, 'two')";
-    r = run_query(hdb, 0, query);
-    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
-    query = "INSERT INTO `MOO` (`A`, `B`) VALUES (3, 'three')";
-    r = run_query(hdb, 0, query);
-    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
-    query = "INSERT INTO `MOO` (`A`, `B`) VALUES (4, 'four')";
-    r = run_query(hdb, 0, query);
-    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
-    query = "INSERT INTO `MOO` (`A`, `B`) VALUES (5, 'five')";
-    r = run_query(hdb, 0, query);
-    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
-    query = "INSERT INTO `MOO` (`A`, `B`) VALUES (6, 'six')";
-    r = run_query(hdb, 0, query);
-    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
-    r = MsiDatabaseCommit(hdb);
-    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    MsiCloseHandle(hdb);
-
-    /* Rebuild the MSI with modifications:
-     * - Set 0x8000 flag in _StringPool (declares 3-byte string refs)
-     * - Convert _Tables and _Columns to 3-byte string refs
-     * - Leave MOO stream unchanged (2-byte string refs) to simulate mismatch */
-    MultiByteToWideChar(CP_ACP, 0, msifile, -1, nameW, MAX_PATH);
-    hr = StgOpenStorage(nameW, NULL, STGM_READ | STGM_SHARE_DENY_WRITE, NULL, 0, &src);
-    ok(hr == S_OK, "Expected S_OK, got %#lx\n", hr);
-
-    MultiByteToWideChar(CP_ACP, 0, "msitest2.msi", -1, tmpW, MAX_PATH);
-    hr = StgCreateDocfile(tmpW, STGM_CREATE | STGM_READWRITE | STGM_DIRECT | STGM_SHARE_EXCLUSIVE,
-                          0, &dst);
-    ok(hr == S_OK, "Expected S_OK, got %#lx\n", hr);
-
-    hr = IStorage_SetClass(dst, &CLSID_MsiDatabase);
-    ok(hr == S_OK, "Expected S_OK, got %#lx\n", hr);
-
-    hr = IStorage_EnumElements(src, 0, NULL, 0, &enumstg);
-    ok(hr == S_OK, "Expected S_OK, got %#lx\n", hr);
-
-    while (IEnumSTATSTG_Next(enumstg, 1, &stat, NULL) == S_OK)
-    {
-        if (stat.type == STGTY_STREAM)
-        {
-            hr = IStorage_OpenStream(src, stat.pwcsName, NULL,
-                                     STGM_READ | STGM_SHARE_EXCLUSIVE, 0, &stm);
-            ok(hr == S_OK, "Expected S_OK, got %#lx\n", hr);
-            hr = IStream_Read(stm, buf, sizeof(buf), &size);
-            ok(hr == S_OK, "Expected S_OK, got %#lx\n", hr);
-            IStream_Release(stm);
-
-            if (!lstrcmpW(stat.pwcsName, stringpool_enc))
-            {
-                buf[3] |= 0x80;
-                write_raw_stream(dst, stat.pwcsName, buf, size);
-            }
-            else if (!lstrcmpW(stat.pwcsName, tables_enc))
-            {
-                new_size = convert_to_3byte_strref(buf, size, converted, tables_col_types, 1);
-                write_raw_stream(dst, stat.pwcsName, converted, new_size);
-            }
-            else if (!lstrcmpW(stat.pwcsName, columns_enc))
-            {
-                new_size = convert_to_3byte_strref(buf, size, converted, columns_col_types, 4);
-                write_raw_stream(dst, stat.pwcsName, converted, new_size);
-            }
-            else
-            {
-                write_raw_stream(dst, stat.pwcsName, buf, size);
-            }
-        }
-        CoTaskMemFree(stat.pwcsName);
-    }
-
-    IEnumSTATSTG_Release(enumstg);
-    IStorage_Release(src);
-    IStorage_Release(dst);
-
-    r = DeleteFileA(msifile);
-    ok(r, "DeleteFileA failed: %lu\n", GetLastError());
-    r = MoveFileA("msitest2.msi", msifile);
-    ok(r, "MoveFileA failed: %lu\n", GetLastError());
-
-    /* Open the modified MSI and verify the table is queryable despite mismatched strref */
-    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_READONLY, &hdb);
-    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
-    query = "SELECT `A`, `B` FROM `MOO`";
-    r = MsiDatabaseOpenViewA(hdb, query, &hview);
-    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
-    r = MsiViewExecute(hview, 0);
-    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
-    r = MsiViewFetch(hview, &hrec);
-    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    r = MsiRecordGetInteger(hrec, 1);
-    ok(r == 1, "Expected 1, got %d\n", r);
-    MsiCloseHandle(hrec);
-
-    MsiViewClose(hview);
-    MsiCloseHandle(hview);
-    MsiCloseHandle(hdb);
-    DeleteFileA(msifile);
-}
-
 START_TEST(db)
 {
     test_msidatabase();
@@ -9701,6 +9425,4 @@ START_TEST(db)
     test_viewmodify_insert();
     test_view_get_error();
     test_viewfetch_wraparound();
-    test_table_stream_padding();
-    test_table_mismatched_strref();
 }
diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec
index 01812acd6ee0..989da52d28e5 100644
--- a/dlls/msvcr100/msvcr100.spec
+++ b/dlls/msvcr100/msvcr100.spec
@@ -1645,7 +1645,7 @@
 @ cdecl _vswprintf_p(ptr long wstr ptr)
 @ cdecl _vswprintf_p_l(ptr long wstr ptr ptr)
 @ cdecl _vswprintf_s_l(ptr long wstr ptr ptr)
-@ stub _vwprintf_l
+@ cdecl _vwprintf_l(wstr ptr ptr)
 @ stub _vwprintf_p
 @ stub _vwprintf_p_l
 @ stub _vwprintf_s_l
@@ -1742,7 +1742,7 @@
 @ cdecl _wperror(wstr)
 @ extern _wpgmptr MSVCRT__wpgmptr
 @ cdecl _wpopen(wstr wstr)
-@ stub _wprintf_l
+@ varargs _wprintf_l(wstr ptr)
 @ stub _wprintf_p
 @ stub _wprintf_p_l
 @ stub _wprintf_s_l
diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec
index cada8e2c49b1..5ed357658740 100644
--- a/dlls/msvcr110/msvcr110.spec
+++ b/dlls/msvcr110/msvcr110.spec
@@ -1831,7 +1831,7 @@
 @ cdecl _vswprintf_p(ptr long wstr ptr)
 @ cdecl _vswprintf_p_l(ptr long wstr ptr ptr)
 @ cdecl _vswprintf_s_l(ptr long wstr ptr ptr)
-@ stub _vwprintf_l
+@ cdecl _vwprintf_l(wstr ptr ptr)
 @ stub _vwprintf_p
 @ stub _vwprintf_p_l
 @ stub _vwprintf_s_l
@@ -1928,7 +1928,7 @@
 @ cdecl _wperror(wstr)
 @ extern _wpgmptr MSVCRT__wpgmptr
 @ cdecl _wpopen(wstr wstr)
-@ stub _wprintf_l
+@ varargs _wprintf_l(wstr ptr)
 @ stub _wprintf_p
 @ stub _wprintf_p_l
 @ stub _wprintf_s_l
diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec
index 237f2235cc7d..b31c739b0304 100644
--- a/dlls/msvcr120/msvcr120.spec
+++ b/dlls/msvcr120/msvcr120.spec
@@ -1850,7 +1850,7 @@
 @ cdecl _vswprintf_p(ptr long wstr ptr)
 @ cdecl _vswprintf_p_l(ptr long wstr ptr ptr)
 @ cdecl _vswprintf_s_l(ptr long wstr ptr ptr)
-@ stub _vwprintf_l
+@ cdecl _vwprintf_l(wstr ptr ptr)
 @ stub _vwprintf_p
 @ stub _vwprintf_p_l
 @ stub _vwprintf_s_l
@@ -1953,7 +1953,7 @@
 @ cdecl _wperror(wstr)
 @ extern _wpgmptr MSVCRT__wpgmptr
 @ cdecl _wpopen(wstr wstr)
-@ stub _wprintf_l
+@ varargs _wprintf_l(wstr ptr)
 @ stub _wprintf_p
 @ stub _wprintf_p_l
 @ stub _wprintf_s_l
diff --git a/dlls/msvcr120_app/msvcr120_app.spec b/dlls/msvcr120_app/msvcr120_app.spec
index d97d99adbf67..7bdcebd1bca8 100644
--- a/dlls/msvcr120_app/msvcr120_app.spec
+++ b/dlls/msvcr120_app/msvcr120_app.spec
@@ -1545,7 +1545,7 @@
 @ cdecl _vswprintf_p(ptr long wstr ptr) msvcr120._vswprintf_p
 @ cdecl _vswprintf_p_l(ptr long wstr ptr ptr) msvcr120._vswprintf_p_l
 @ cdecl _vswprintf_s_l(ptr long wstr ptr ptr) msvcr120._vswprintf_s_l
-@ stub _vwprintf_l
+@ cdecl _vwprintf_l(wstr ptr ptr) msvcr120._vwprintf_l
 @ stub _vwprintf_p
 @ stub _vwprintf_p_l
 @ stub _vwprintf_s_l
@@ -1633,7 +1633,7 @@
 @ varargs _wopen(wstr long) msvcr120._wopen
 @ cdecl _wperror(wstr) msvcr120._wperror
 @ extern _wpgmptr msvcr120._wpgmptr
-@ stub _wprintf_l
+@ varargs _wprintf_l(wstr ptr) msvcr120._wprintf_l
 @ stub _wprintf_p
 @ stub _wprintf_p_l
 @ stub _wprintf_s_l
diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec
index 4ebcc5aabe40..caad11627459 100644
--- a/dlls/msvcr80/msvcr80.spec
+++ b/dlls/msvcr80/msvcr80.spec
@@ -1177,7 +1177,7 @@
 @ cdecl _vswprintf_p(ptr long wstr ptr)
 @ cdecl _vswprintf_p_l(ptr long wstr ptr ptr)
 @ cdecl _vswprintf_s_l(ptr long wstr ptr ptr)
-@ stub _vwprintf_l
+@ cdecl _vwprintf_l(wstr ptr ptr)
 @ stub _vwprintf_p
 @ stub _vwprintf_p_l
 @ stub _vwprintf_s_l
@@ -1277,7 +1277,7 @@
 @ cdecl _wperror(wstr)
 @ extern _wpgmptr MSVCRT__wpgmptr
 @ cdecl _wpopen(wstr wstr)
-@ stub _wprintf_l
+@ varargs _wprintf_l(wstr ptr)
 @ stub _wprintf_p
 @ stub _wprintf_p_l
 @ stub _wprintf_s_l
diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec
index 3c446df93756..5e5d477d231c 100644
--- a/dlls/msvcr90/msvcr90.spec
+++ b/dlls/msvcr90/msvcr90.spec
@@ -1152,7 +1152,7 @@
 @ cdecl _vswprintf_p(ptr long wstr ptr)
 @ cdecl _vswprintf_p_l(ptr long wstr ptr ptr)
 @ cdecl _vswprintf_s_l(ptr long wstr ptr ptr)
-@ stub _vwprintf_l
+@ cdecl _vwprintf_l(wstr ptr ptr)
 @ stub _vwprintf_p
 @ stub _vwprintf_p_l
 @ stub _vwprintf_s_l
@@ -1249,7 +1249,7 @@
 @ cdecl _wperror(wstr)
 @ extern _wpgmptr MSVCRT__wpgmptr
 @ cdecl _wpopen(wstr wstr)
-@ stub _wprintf_l
+@ varargs _wprintf_l(wstr ptr)
 @ stub _wprintf_p
 @ stub _wprintf_p_l
 @ stub _wprintf_s_l
diff --git a/dlls/msvcrt/file.c b/dlls/msvcrt/file.c
index 19b7547f59f7..b1eb86c42c7a 100644
--- a/dlls/msvcrt/file.c
+++ b/dlls/msvcrt/file.c
@@ -5531,6 +5531,14 @@ int CDECL vwprintf(const wchar_t *format, va_list valist)
   return vfwprintf(stdout,format,valist);
 }
 
+/*********************************************************************
+ *              _vwprintf_l (MSVCRT.@)
+ */
+int CDECL _vwprintf_l(const wchar_t *format, _locale_t locale, va_list valist)
+{
+    return _vfwprintf_l(stdout, format, locale, valist);
+}
+
 /*********************************************************************
  *		vwprintf_s (MSVCRT.@)
  */
@@ -5839,6 +5847,19 @@ int WINAPIV wprintf(const wchar_t *format, ...)
     return res;
 }
 
+/*********************************************************************
+ *              _wprintf_l (MSVCRT.@)
+ */
+int WINAPIV _wprintf_l(const wchar_t *format, _locale_t locale, ...)
+{
+    va_list valist;
+    int res;
+    va_start(valist, locale);
+    res = _vwprintf_l(format, locale, valist);
+    va_end(valist);
+    return res;
+}
+
 /*********************************************************************
  *		wprintf_s (MSVCRT.@)
  */
diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec
index c308c1711a71..088ab0d1da98 100644
--- a/dlls/msvcrt/msvcrt.spec
+++ b/dlls/msvcrt/msvcrt.spec
@@ -1089,7 +1089,7 @@
 @ cdecl _vswprintf_l(ptr wstr ptr ptr)
 @ cdecl _vswprintf_p_l(ptr long wstr ptr ptr)
 @ cdecl _vswprintf_s_l(ptr long wstr ptr ptr)
-# stub _vwprintf_l(wstr ptr ptr)
+@ cdecl _vwprintf_l(wstr ptr ptr)
 # stub _vwprintf_p(wstr ptr)
 # stub _vwprintf_p_l(wstr ptr ptr)
 # stub _vwprintf_s_l(wstr ptr ptr)
@@ -1194,7 +1194,7 @@
 @ cdecl _wperror(wstr)
 @ extern _wpgmptr MSVCRT__wpgmptr
 @ cdecl _wpopen (wstr wstr) _wpopen
-# stub _wprintf_l(wstr ptr)
+@ varargs _wprintf_l(wstr ptr)
 # stub _wprintf_p(wstr)
 # stub _wprintf_p_l(wstr ptr)
 # stub _wprintf_s_l(wstr ptr)
diff --git a/dlls/msxml3/Makefile.in b/dlls/msxml3/Makefile.in
index a373417df892..ff946de9fdd9 100644
--- a/dlls/msxml3/Makefile.in
+++ b/dlls/msxml3/Makefile.in
@@ -32,6 +32,7 @@ SOURCES = \
 	pi.c \
 	rsrc.rc \
 	saxreader.c \
+	saxreader_extensions.idl \
 	schema.c \
 	schemas.rc \
 	selection.c \
diff --git a/dlls/msxml3/attribute.c b/dlls/msxml3/attribute.c
index a183a504e66f..4842b6cc0503 100644
--- a/dlls/msxml3/attribute.c
+++ b/dlls/msxml3/attribute.c
@@ -21,9 +21,6 @@
 #define COBJMACROS
 
 #include <stdarg.h>
-#include <libxml/parser.h>
-#include <libxml/xmlerror.h>
-#include <libxml/HTMLtree.h>
 
 #include "windef.h"
 #include "winbase.h"
@@ -37,17 +34,16 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(msxml);
 
-static const xmlChar xmlns[] = "xmlns";
-
 typedef struct _domattr
 {
-    xmlnode node;
+    DispatchEx dispex;
     IXMLDOMAttribute IXMLDOMAttribute_iface;
-    LONG ref;
-    BOOL floating;
+    LONG refcount;
+    struct domnode *node;
 } domattr;
 
-static const tid_t domattr_se_tids[] = {
+static const tid_t domattr_se_tids[] =
+{
     IXMLDOMNode_tid,
     IXMLDOMAttribute_tid,
     NULL_tid
@@ -58,33 +54,35 @@ static inline domattr *impl_from_IXMLDOMAttribute( IXMLDOMAttribute *iface )
     return CONTAINING_RECORD(iface, domattr, IXMLDOMAttribute_iface);
 }
 
-static HRESULT WINAPI domattr_QueryInterface(
-    IXMLDOMAttribute *iface,
-    REFIID riid,
-    void** ppvObject )
+static HRESULT WINAPI domattr_QueryInterface(IXMLDOMAttribute *iface, REFIID riid, void **obj)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
-    TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppvObject);
+    domattr *attr = impl_from_IXMLDOMAttribute(iface);
+
+    TRACE("%p, %s, %p.\n", iface, debugstr_guid(riid), obj);
 
-    if ( IsEqualGUID( riid, &IID_IXMLDOMAttribute ) ||
-         IsEqualGUID( riid, &IID_IXMLDOMNode ) ||
-         IsEqualGUID( riid, &IID_IDispatch ) ||
-         IsEqualGUID( riid, &IID_IUnknown ) )
+    if (IsEqualGUID(riid, &IID_IXMLDOMAttribute) ||
+        IsEqualGUID(riid, &IID_IXMLDOMNode) ||
+        IsEqualGUID(riid, &IID_IDispatch) ||
+        IsEqualGUID(riid, &IID_IUnknown))
+    {
+        *obj = iface;
+    }
+    else if (dispex_query_interface(&attr->dispex, riid, obj))
     {
-        *ppvObject = iface;
+        return *obj ? S_OK : E_NOINTERFACE;
     }
-    else if(node_query_interface(&This->node, riid, ppvObject))
+    else if (node_query_interface(attr->node, riid, obj))
     {
-        return *ppvObject ? S_OK : E_NOINTERFACE;
+        return *obj ? S_OK : E_NOINTERFACE;
     }
-    else if(IsEqualGUID( riid, &IID_ISupportErrorInfo ))
+    else if (IsEqualGUID(riid, &IID_ISupportErrorInfo))
     {
-        return node_create_supporterrorinfo(domattr_se_tids, ppvObject);
+        return node_create_supporterrorinfo(domattr_se_tids, obj);
     }
     else
     {
         TRACE("Unsupported interface %s\n", debugstr_guid(riid));
-        *ppvObject = NULL;
+        *obj = NULL;
         return E_NOINTERFACE;
     }
 
@@ -92,343 +90,262 @@ static HRESULT WINAPI domattr_QueryInterface(
     return S_OK;
 }
 
-static ULONG WINAPI domattr_AddRef(
-    IXMLDOMAttribute *iface )
+static ULONG WINAPI domattr_AddRef(IXMLDOMAttribute *iface)
 {
-    domattr *attr = impl_from_IXMLDOMAttribute( iface );
-    ULONG ref = InterlockedIncrement( &attr->ref );
-    TRACE("%p, refcount %lu.\n", iface, ref);
-    return ref;
+    domattr *attr = impl_from_IXMLDOMAttribute(iface);
+    ULONG refcount = InterlockedIncrement(&attr->refcount);
+
+    TRACE("%p, refcount %lu.\n", iface, refcount);
+
+    return refcount;
 }
 
-static ULONG WINAPI domattr_Release(
-    IXMLDOMAttribute *iface )
+static ULONG WINAPI domattr_Release(IXMLDOMAttribute *iface)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
-    ULONG ref = InterlockedDecrement( &This->ref );
+    domattr *attr = impl_from_IXMLDOMAttribute(iface);
+    ULONG refcount = InterlockedDecrement(&attr->refcount);
+
+    TRACE("%p, refcount %lu.\n", iface, refcount);
 
-    TRACE("%p, refcount %lu.\n", iface, ref);
-    if ( ref == 0 )
+    if (!refcount)
     {
-        destroy_xmlnode(&This->node);
-        if ( This->floating )
-        {
-            xmlFreeNs( This->node.node->ns );
-            xmlFreeNode( This->node.node );
-        }
-        free( This );
+        domnode_release(attr->node);
+        free(attr);
     }
 
-    return ref;
+    return refcount;
 }
 
-static HRESULT WINAPI domattr_GetTypeInfoCount(
-    IXMLDOMAttribute *iface,
-    UINT* pctinfo )
+static HRESULT WINAPI domattr_GetTypeInfoCount(IXMLDOMAttribute *iface, UINT *count)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
-    return IDispatchEx_GetTypeInfoCount(&This->node.dispex.IDispatchEx_iface, pctinfo);
+    domattr *attr = impl_from_IXMLDOMAttribute(iface);
+    return IDispatchEx_GetTypeInfoCount(&attr->dispex.IDispatchEx_iface, count);
 }
 
-static HRESULT WINAPI domattr_GetTypeInfo(
-    IXMLDOMAttribute *iface,
-    UINT iTInfo, LCID lcid,
-    ITypeInfo** ppTInfo )
+static HRESULT WINAPI domattr_GetTypeInfo(IXMLDOMAttribute *iface, UINT index, LCID lcid, ITypeInfo **ti)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
-    return IDispatchEx_GetTypeInfo(&This->node.dispex.IDispatchEx_iface,
-        iTInfo, lcid, ppTInfo);
+    domattr *attr = impl_from_IXMLDOMAttribute(iface);
+    return IDispatchEx_GetTypeInfo(&attr->dispex.IDispatchEx_iface, index, lcid, ti);
 }
 
-static HRESULT WINAPI domattr_GetIDsOfNames(
-    IXMLDOMAttribute *iface,
-    REFIID riid, LPOLESTR* rgszNames,
-    UINT cNames, LCID lcid, DISPID* rgDispId )
+static HRESULT WINAPI domattr_GetIDsOfNames(IXMLDOMAttribute *iface, REFIID riid, LPOLESTR *rgszNames,
+        UINT cNames, LCID lcid, DISPID *rgDispId)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
-    return IDispatchEx_GetIDsOfNames(&This->node.dispex.IDispatchEx_iface,
+    domattr *attr = impl_from_IXMLDOMAttribute(iface);
+    return IDispatchEx_GetIDsOfNames(&attr->dispex.IDispatchEx_iface,
         riid, rgszNames, cNames, lcid, rgDispId);
 }
 
-static HRESULT WINAPI domattr_Invoke(
-    IXMLDOMAttribute *iface,
-    DISPID dispIdMember, REFIID riid, LCID lcid,
-    WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarResult,
-    EXCEPINFO* pExcepInfo, UINT* puArgErr )
+static HRESULT WINAPI domattr_Invoke(IXMLDOMAttribute *iface, DISPID dispIdMember, REFIID riid, LCID lcid,
+        WORD flags, DISPPARAMS* pDispParams, VARIANT* pVarResult, EXCEPINFO* pExcepInfo, UINT *puArgErr)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
-    return IDispatchEx_Invoke(&This->node.dispex.IDispatchEx_iface,
-        dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
+    domattr *attr = impl_from_IXMLDOMAttribute(iface);
+    return IDispatchEx_Invoke(&attr->dispex.IDispatchEx_iface,
+        dispIdMember, riid, lcid, flags, pDispParams, pVarResult, pExcepInfo, puArgErr);
 }
 
-static HRESULT WINAPI domattr_get_nodeName(
-    IXMLDOMAttribute *iface,
-    BSTR* p )
+static HRESULT WINAPI domattr_get_nodeName(IXMLDOMAttribute *iface, BSTR *p)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
+    domattr *attr = impl_from_IXMLDOMAttribute( iface );
 
-    TRACE("(%p)->(%p)\n", This, p);
+    TRACE("%p, %p.\n", iface, p);
 
-    return node_get_nodeName(&This->node, p);
+    return node_get_name(attr->node, p);
 }
 
-static HRESULT WINAPI domattr_get_nodeValue(
-    IXMLDOMAttribute *iface,
-    VARIANT* value)
+static HRESULT WINAPI domattr_get_nodeValue(IXMLDOMAttribute *iface, VARIANT *value)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
+    domattr *attr = impl_from_IXMLDOMAttribute(iface);
 
-    TRACE("(%p)->(%p)\n", This, value);
+    TRACE("%p, %p.\n", iface, value);
 
-    return node_get_content(&This->node, value);
+    return node_get_value(attr->node, value);
 }
 
-static HRESULT WINAPI domattr_put_nodeValue(
-    IXMLDOMAttribute *iface,
-    VARIANT value)
+static HRESULT WINAPI domattr_put_nodeValue(IXMLDOMAttribute *iface, VARIANT value)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
+    domattr *attr = impl_from_IXMLDOMAttribute( iface );
 
-    TRACE("(%p)->(%s)\n", This, debugstr_variant(&value));
+    TRACE("%p, %s.\n", iface, debugstr_variant(&value));
 
-    return node_put_value_escaped(&This->node, &value);
+    return node_put_value(attr->node, &value);
 }
 
-static HRESULT WINAPI domattr_get_nodeType(
-    IXMLDOMAttribute *iface,
-    DOMNodeType* domNodeType )
+static HRESULT WINAPI domattr_get_nodeType(IXMLDOMAttribute *iface, DOMNodeType *type)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
-
-    TRACE("(%p)->(%p)\n", This, domNodeType);
+    TRACE("%p, %p.\n", iface, type);
 
-    *domNodeType = NODE_ATTRIBUTE;
+    *type = NODE_ATTRIBUTE;
     return S_OK;
 }
 
-static HRESULT WINAPI domattr_get_parentNode(
-    IXMLDOMAttribute *iface,
-    IXMLDOMNode** parent )
+static HRESULT WINAPI domattr_get_parentNode(IXMLDOMAttribute *iface, IXMLDOMNode **parent)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
-    TRACE("(%p)->(%p)\n", This, parent);
-    if (!parent) return E_INVALIDARG;
-    *parent = NULL;
-    return S_FALSE;
+    TRACE("%p, %p\n", iface, parent);
+
+    return return_null_node(parent);
 }
 
-static HRESULT WINAPI domattr_get_childNodes(
-    IXMLDOMAttribute *iface,
-    IXMLDOMNodeList** outList)
+static HRESULT WINAPI domattr_get_childNodes(IXMLDOMAttribute *iface, IXMLDOMNodeList **list)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
+    domattr *attr = impl_from_IXMLDOMAttribute(iface);
 
-    TRACE("(%p)->(%p)\n", This, outList);
+    TRACE("%p, %p.\n", iface, list);
 
-    return node_get_child_nodes(&This->node, outList);
+    return node_get_child_nodes(attr->node, list);
 }
 
-static HRESULT WINAPI domattr_get_firstChild(
-    IXMLDOMAttribute *iface,
-    IXMLDOMNode** domNode)
+static HRESULT WINAPI domattr_get_firstChild(IXMLDOMAttribute *iface, IXMLDOMNode **node)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
+    domattr *attr = impl_from_IXMLDOMAttribute(iface);
 
-    TRACE("(%p)->(%p)\n", This, domNode);
+    TRACE("%p, %p.\n", iface, node);
 
-    return node_get_first_child(&This->node, domNode);
+    return node_get_first_child(attr->node, node);
 }
 
-static HRESULT WINAPI domattr_get_lastChild(
-    IXMLDOMAttribute *iface,
-    IXMLDOMNode** domNode)
+static HRESULT WINAPI domattr_get_lastChild(IXMLDOMAttribute *iface, IXMLDOMNode **node)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
+    domattr *attr = impl_from_IXMLDOMAttribute(iface);
 
-    TRACE("(%p)->(%p)\n", This, domNode);
+    TRACE("%p, %p.\n", iface, node);
 
-    return node_get_last_child(&This->node, domNode);
+    return node_get_last_child(attr->node, node);
 }
 
-static HRESULT WINAPI domattr_get_previousSibling(
-    IXMLDOMAttribute *iface,
-    IXMLDOMNode** domNode)
+static HRESULT WINAPI domattr_get_previousSibling(IXMLDOMAttribute *iface, IXMLDOMNode **node)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
-
-    TRACE("(%p)->(%p)\n", This, domNode);
+    TRACE("%p, %p.\n", iface, node);
 
-    return return_null_node(domNode);
+    return return_null_node(node);
 }
 
-static HRESULT WINAPI domattr_get_nextSibling(
-    IXMLDOMAttribute *iface,
-    IXMLDOMNode** domNode)
+static HRESULT WINAPI domattr_get_nextSibling(IXMLDOMAttribute *iface, IXMLDOMNode **node)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
+    TRACE("%p, %p.\n", iface, node);
 
-    TRACE("(%p)->(%p)\n", This, domNode);
-
-    return return_null_node(domNode);
+    return return_null_node(node);
 }
 
-static HRESULT WINAPI domattr_get_attributes(
-    IXMLDOMAttribute *iface,
-    IXMLDOMNamedNodeMap** attributeMap)
+static HRESULT WINAPI domattr_get_attributes(IXMLDOMAttribute *iface, IXMLDOMNamedNodeMap **map)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
-
-    TRACE("(%p)->(%p)\n", This, attributeMap);
+    TRACE("%p, %p.\n", iface, map);
 
-    return return_null_ptr((void**)attributeMap);
+    return return_null_ptr((void **)map);
 }
 
-static HRESULT WINAPI domattr_insertBefore(
-    IXMLDOMAttribute *iface,
-    IXMLDOMNode* newNode, VARIANT refChild,
-    IXMLDOMNode** old_node)
+static HRESULT WINAPI domattr_insertBefore(IXMLDOMAttribute *iface, IXMLDOMNode* newNode, VARIANT refChild,
+        IXMLDOMNode** old_node)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
-    DOMNodeType type;
-    HRESULT hr;
-
-    FIXME("(%p)->(%p %s %p) needs test\n", This, newNode, debugstr_variant(&refChild), old_node);
-
-    if (!newNode) return E_INVALIDARG;
+    domattr *attr = impl_from_IXMLDOMAttribute(iface);
 
-    hr = IXMLDOMNode_get_nodeType(newNode, &type);
-    if (hr != S_OK) return hr;
+    FIXME("%p, %p, %s, %p needs test\n", iface, newNode, debugstr_variant(&refChild), old_node);
 
-    TRACE("new node type %d\n", type);
-    switch (type)
-    {
-        case NODE_ATTRIBUTE:
-        case NODE_CDATA_SECTION:
-        case NODE_COMMENT:
-        case NODE_ELEMENT:
-        case NODE_PROCESSING_INSTRUCTION:
-            if (old_node) *old_node = NULL;
-            return E_FAIL;
-        default:
-            return node_insert_before(&This->node, newNode, &refChild, old_node);
-    }
+    return node_insert_before(attr->node, newNode, &refChild, old_node);
 }
 
-static HRESULT WINAPI domattr_replaceChild(
-    IXMLDOMAttribute *iface,
-    IXMLDOMNode* newNode,
-    IXMLDOMNode* oldNode,
-    IXMLDOMNode** outOldNode)
+static HRESULT WINAPI domattr_replaceChild(IXMLDOMAttribute *iface, IXMLDOMNode *newNode,
+        IXMLDOMNode *oldNode, IXMLDOMNode **outOldNode)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
+    domattr *attr = impl_from_IXMLDOMAttribute(iface);
 
-    FIXME("(%p)->(%p %p %p) needs tests\n", This, newNode, oldNode, outOldNode);
+    FIXME("%p, %p, %p, %p needs tests\n", iface, newNode, oldNode, outOldNode);
 
-    return node_replace_child(&This->node, newNode, oldNode, outOldNode);
+    return node_replace_child(attr->node, newNode, oldNode, outOldNode);
 }
 
-static HRESULT WINAPI domattr_removeChild(
-    IXMLDOMAttribute *iface,
-    IXMLDOMNode *child, IXMLDOMNode **oldChild)
+static HRESULT WINAPI domattr_removeChild(IXMLDOMAttribute *iface,
+        IXMLDOMNode *child, IXMLDOMNode **oldChild)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
-    TRACE("(%p)->(%p %p)\n", This, child, oldChild);
-    return node_remove_child(&This->node, child, oldChild);
+    domattr *attr = impl_from_IXMLDOMAttribute(iface);
+
+    TRACE("%p, %p, %p.\n", iface, child, oldChild);
+
+    return node_remove_child(attr->node, child, oldChild);
 }
 
-static HRESULT WINAPI domattr_appendChild(
-    IXMLDOMAttribute *iface,
-    IXMLDOMNode *child, IXMLDOMNode **outChild)
+static HRESULT WINAPI domattr_appendChild(IXMLDOMAttribute *iface, IXMLDOMNode *child, IXMLDOMNode **outChild)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
-    TRACE("(%p)->(%p %p)\n", This, child, outChild);
-    return node_append_child(&This->node, child, outChild);
+    domattr *attr = impl_from_IXMLDOMAttribute(iface);
+
+    TRACE("%p, %p, %p.\n", iface, child, outChild);
+
+    return node_append_child(attr->node, child, outChild);
 }
 
-static HRESULT WINAPI domattr_hasChildNodes(
-    IXMLDOMAttribute *iface,
-    VARIANT_BOOL *ret)
+static HRESULT WINAPI domattr_hasChildNodes(IXMLDOMAttribute *iface, VARIANT_BOOL *ret)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
-    TRACE("(%p)->(%p)\n", This, ret);
-    return node_has_childnodes(&This->node, ret);
+    domattr *attr = impl_from_IXMLDOMAttribute(iface);
+
+    TRACE("%p, %p.\n", iface, ret);
+
+    return node_has_childnodes(attr->node, ret);
 }
 
-static HRESULT WINAPI domattr_get_ownerDocument(
-    IXMLDOMAttribute *iface,
-    IXMLDOMDocument **doc)
+static HRESULT WINAPI domattr_get_ownerDocument(IXMLDOMAttribute *iface, IXMLDOMDocument **doc)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
-    TRACE("(%p)->(%p)\n", This, doc);
-    return node_get_owner_doc(&This->node, doc);
+    domattr *attr = impl_from_IXMLDOMAttribute(iface);
+
+    TRACE("%p, %p.\n", iface, doc);
+
+    return node_get_owner_document(attr->node, doc);
 }
 
-static HRESULT WINAPI domattr_cloneNode(
-    IXMLDOMAttribute *iface,
-    VARIANT_BOOL deep, IXMLDOMNode** outNode)
+static HRESULT WINAPI domattr_cloneNode(IXMLDOMAttribute *iface, VARIANT_BOOL deep, IXMLDOMNode **node)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
-    TRACE("(%p)->(%d %p)\n", This, deep, outNode);
-    return node_clone( &This->node, deep, outNode );
+    domattr *attr = impl_from_IXMLDOMAttribute(iface);
+
+    TRACE("%p, %d, %p.\n", iface, deep, node);
+
+    return node_clone(attr->node, deep, node);
 }
 
-static HRESULT WINAPI domattr_get_nodeTypeString(
-    IXMLDOMAttribute *iface,
-    BSTR* p)
+static HRESULT WINAPI domattr_get_nodeTypeString(IXMLDOMAttribute *iface, BSTR *p)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
-
-    TRACE("(%p)->(%p)\n", This, p);
+    TRACE("%p, %p.\n", iface, p);
 
     return return_bstr(L"attribute", p);
 }
 
-static HRESULT WINAPI domattr_get_text(
-    IXMLDOMAttribute *iface,
-    BSTR* p)
+static HRESULT WINAPI domattr_get_text(IXMLDOMAttribute *iface, BSTR *p)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
-    TRACE("(%p)->(%p)\n", This, p);
-    return node_get_text(&This->node, p);
+    domattr *attr = impl_from_IXMLDOMAttribute(iface);
+
+    TRACE("%p, %p.\n", iface, p);
+
+    return node_get_text(attr->node, p);
 }
 
-static HRESULT WINAPI domattr_put_text(
-    IXMLDOMAttribute *iface,
-    BSTR p)
+static HRESULT WINAPI domattr_put_text(IXMLDOMAttribute *iface, BSTR p)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
-    TRACE("(%p)->(%s)\n", This, debugstr_w(p));
-    return node_put_text( &This->node, p );
+    domattr *attr = impl_from_IXMLDOMAttribute(iface);
+
+    TRACE("%p, %s.\n", iface, debugstr_w(p));
+
+    return node_put_data(attr->node, p);
 }
 
-static HRESULT WINAPI domattr_get_specified(
-    IXMLDOMAttribute *iface,
-    VARIANT_BOOL* isSpecified)
+static HRESULT WINAPI domattr_get_specified(IXMLDOMAttribute *iface, VARIANT_BOOL *v)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
-    FIXME("(%p)->(%p) stub!\n", This, isSpecified);
-    *isSpecified = VARIANT_TRUE;
+    FIXME("%p, %p stub!\n", iface, v);
+
+    *v = VARIANT_TRUE;
     return S_OK;
 }
 
-static HRESULT WINAPI domattr_get_definition(
-    IXMLDOMAttribute *iface,
-    IXMLDOMNode** definitionNode)
+static HRESULT WINAPI domattr_get_definition(IXMLDOMAttribute *iface, IXMLDOMNode **node)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
-    FIXME("(%p)->(%p)\n", This, definitionNode);
+    FIXME("%p, %p\n", iface, node);
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domattr_get_nodeTypedValue(
-    IXMLDOMAttribute *iface,
-    VARIANT* value)
+static HRESULT WINAPI domattr_get_nodeTypedValue(IXMLDOMAttribute *iface, VARIANT *value)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
     IXMLDOMDocument *doc;
     HRESULT hr;
 
-    TRACE("(%p)->(%p)\n", This, value);
+    TRACE("%p, %p.\n", iface, value);
 
     hr = IXMLDOMAttribute_get_ownerDocument(iface, &doc);
     if (hr == S_OK)
@@ -458,31 +375,23 @@ static HRESULT WINAPI domattr_get_nodeTypedValue(
     return return_null_var(value);
 }
 
-static HRESULT WINAPI domattr_put_nodeTypedValue(
-    IXMLDOMAttribute *iface,
-    VARIANT typedValue)
+static HRESULT WINAPI domattr_put_nodeTypedValue(IXMLDOMAttribute *iface, VARIANT v)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
-    FIXME("(%p)->(%s)\n", This, debugstr_variant(&typedValue));
+    FIXME("%p, %s\n", iface, debugstr_variant(&v));
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domattr_get_dataType(
-    IXMLDOMAttribute *iface,
-    VARIANT* typename)
+static HRESULT WINAPI domattr_get_dataType(IXMLDOMAttribute *iface, VARIANT *v)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
-    TRACE("(%p)->(%p)\n", This, typename);
-    return return_null_var( typename );
+    TRACE("%p, %p.\n", iface, v);
+
+    return return_null_var(v);
 }
 
-static HRESULT WINAPI domattr_put_dataType(
-    IXMLDOMAttribute *iface,
-    BSTR p)
+static HRESULT WINAPI domattr_put_dataType(IXMLDOMAttribute *iface, BSTR p)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
-
-    FIXME("(%p)->(%s)\n", This, debugstr_w(p));
+    FIXME("%p, %s.\n", iface, debugstr_w(p));
 
     if(!p)
         return E_INVALIDARG;
@@ -490,178 +399,117 @@ static HRESULT WINAPI domattr_put_dataType(
     return E_FAIL;
 }
 
-static HRESULT WINAPI domattr_get_xml(
-    IXMLDOMAttribute *iface,
-    BSTR* p)
+static HRESULT WINAPI domattr_get_xml(IXMLDOMAttribute *iface, BSTR *p)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
+    domattr *attr = impl_from_IXMLDOMAttribute(iface);
 
-    TRACE("(%p)->(%p)\n", This, p);
+    TRACE("%p, %p.\n", iface, p);
 
-    return node_get_xml(&This->node, FALSE, p);
+    return node_get_xml(attr->node, p);
 }
 
-static HRESULT WINAPI domattr_transformNode(
-    IXMLDOMAttribute *iface,
-    IXMLDOMNode *node, BSTR *p)
+static HRESULT WINAPI domattr_transformNode(IXMLDOMAttribute *iface, IXMLDOMNode *node, BSTR *p)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
-    TRACE("(%p)->(%p %p)\n", This, node, p);
-    return node_transform_node(&This->node, node, p);
+    domattr *attr = impl_from_IXMLDOMAttribute(iface);
+
+    TRACE("%p, %p, %p.\n", iface, node, p);
+
+    return node_transform_node(attr->node, node, p);
 }
 
-static HRESULT WINAPI domattr_selectNodes(
-    IXMLDOMAttribute *iface,
-    BSTR p, IXMLDOMNodeList** outList)
+static HRESULT WINAPI domattr_selectNodes(IXMLDOMAttribute *iface, BSTR p, IXMLDOMNodeList **list)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
-    TRACE("(%p)->(%s %p)\n", This, debugstr_w(p), outList);
-    return node_select_nodes(&This->node, p, outList);
+    domattr *attr = impl_from_IXMLDOMAttribute(iface);
+
+    TRACE("%p, %s, %p.\n", iface, debugstr_w(p), list);
+
+    return node_select_nodes(attr->node, p, list);
 }
 
-static HRESULT WINAPI domattr_selectSingleNode(
-    IXMLDOMAttribute *iface,
-    BSTR p, IXMLDOMNode** outNode)
+static HRESULT WINAPI domattr_selectSingleNode(IXMLDOMAttribute *iface, BSTR p, IXMLDOMNode **node)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
-    TRACE("(%p)->(%s %p)\n", This, debugstr_w(p), outNode);
-    return node_select_singlenode(&This->node, p, outNode);
+    domattr *attr = impl_from_IXMLDOMAttribute( iface );
+
+    TRACE("%p, %s, %p.\n", iface, debugstr_w(p), node);
+
+    return node_select_singlenode(attr->node, p, node);
 }
 
-static HRESULT WINAPI domattr_get_parsed(
-    IXMLDOMAttribute *iface,
-    VARIANT_BOOL* isParsed)
+static HRESULT WINAPI domattr_get_parsed(IXMLDOMAttribute *iface, VARIANT_BOOL *v)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
-    FIXME("(%p)->(%p) stub!\n", This, isParsed);
-    *isParsed = VARIANT_TRUE;
+    FIXME("%p, %p stub!\n", iface, v);
+
+    *v = VARIANT_TRUE;
     return S_OK;
 }
 
-static HRESULT WINAPI domattr_get_namespaceURI(
-    IXMLDOMAttribute *iface,
-    BSTR* p)
+static HRESULT WINAPI domattr_get_namespaceURI(IXMLDOMAttribute *iface, BSTR *p)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
-    xmlNsPtr ns = This->node.node->ns;
-    BSTR nodename, pfx;
-    BOOL is6, isdefault;
-    HRESULT hr;
+    domattr *attr = impl_from_IXMLDOMAttribute(iface);
 
-    TRACE("(%p)->(%p)\n", This, p);
-
-    if (!p)
-        return E_INVALIDARG;
+    TRACE("%p, %p.\n", iface, p);
 
-    *p = NULL;
-    nodename = NULL;
-    hr = IXMLDOMAttribute_get_nodeName(iface, &nodename);
-    if (FAILED(hr))
-        return hr;
-
-    pfx = NULL;
-    hr = IXMLDOMAttribute_get_prefix(iface, &pfx);
-    if (FAILED(hr))
-    {
-        SysFreeString(nodename);
-        return hr;
-    }
+    return node_attribute_get_namespace_uri(attr->node, p);
+}
 
-    is6 = xmldoc_version(This->node.node->doc) == MSXML6;
-    isdefault = !wcscmp(nodename, L"xmlns");
-    if (isdefault || (pfx && !wcscmp(L"xmlns", pfx)))
-    {
-        if (is6)
-            *p = SysAllocString(L"http://www.w3.org/2000/xmlns/");
-        else if (!ns || !isdefault)
-            *p = SysAllocStringLen(NULL, 0);
-        else
-            *p = SysAllocString(L"xmlns");
-    }
-    else if (ns && ns->href)
-        *p = bstr_from_xmlChar(ns->href);
+static HRESULT WINAPI domattr_get_prefix(IXMLDOMAttribute *iface, BSTR *prefix)
+{
+    domattr *attr = impl_from_IXMLDOMAttribute(iface);
+    struct domnode *node = attr->node;
 
-    SysFreeString(nodename);
-    SysFreeString(pfx);
+    TRACE("%p, %p.\n", iface, prefix);
 
-    TRACE("uri: %s\n", debugstr_w(*p));
+    if (domdoc_version(node->owner) != MSXML6 && !wcscmp(node->name, L"xmlns"))
+        return return_bstr(L"xmlns", prefix);
 
-    return *p ? S_OK : S_FALSE;
+    return node_get_prefix(node, prefix);
 }
 
-static HRESULT WINAPI domattr_get_prefix(
-    IXMLDOMAttribute *iface,
-    BSTR* prefix)
+static HRESULT WINAPI domattr_get_baseName(IXMLDOMAttribute *iface, BSTR *name)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
-    xmlNsPtr ns = This->node.node->ns;
-
-    TRACE("(%p)->(%p)\n", This, prefix);
-
-    if (!prefix) return E_INVALIDARG;
+    domattr *attr = impl_from_IXMLDOMAttribute(iface);
+    struct domnode *node = attr->node;
 
-    *prefix = NULL;
+    TRACE("%p, %p.\n", iface, name);
 
-    if (xmldoc_version(This->node.node->doc) != MSXML6 &&
-        xmlStrEqual(This->node.node->name, xmlns))
-        *prefix = bstr_from_xmlChar(xmlns);
-    else if (ns && ns->prefix)
-        *prefix = bstr_from_xmlChar(ns->prefix);
+    if (domdoc_version(node->owner) != MSXML6 && !wcscmp(node->name, L"xmlns"))
+        return return_bstr(L"", name);
 
-    TRACE("prefix: %s\n", debugstr_w(*prefix));
-
-    return *prefix ? S_OK : S_FALSE;
+    return node_get_base_name(attr->node, name);
 }
 
-static HRESULT WINAPI domattr_get_baseName(
-    IXMLDOMAttribute *iface,
-    BSTR* name)
+static HRESULT WINAPI domattr_transformNodeToObject(IXMLDOMAttribute *iface, IXMLDOMNode *node, VARIANT v)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
-    TRACE("(%p)->(%p)\n", This, name);
-    return node_get_base_name( &This->node, name );
-}
+    FIXME("%p, %p, %s.\n", iface, node, debugstr_variant(&v));
 
-static HRESULT WINAPI domattr_transformNodeToObject(
-    IXMLDOMAttribute *iface,
-    IXMLDOMNode* domNode, VARIANT var1)
-{
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
-    FIXME("(%p)->(%p %s)\n", This, domNode, debugstr_variant(&var1));
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domattr_get_name(
-    IXMLDOMAttribute *iface,
-    BSTR *p)
+static HRESULT WINAPI domattr_get_name(IXMLDOMAttribute *iface, BSTR *p)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
+    domattr *attr = impl_from_IXMLDOMAttribute(iface);
 
-    TRACE("(%p)->(%p)\n", This, p);
+    TRACE("%p, %p.\n", iface, p);
 
-    return node_get_nodeName(&This->node, p);
+    return node_get_name(attr->node, p);
 }
 
-static HRESULT WINAPI domattr_get_value(
-    IXMLDOMAttribute *iface,
-    VARIANT *value)
+static HRESULT WINAPI domattr_get_value(IXMLDOMAttribute *iface, VARIANT *value)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
+    domattr *attr = impl_from_IXMLDOMAttribute(iface);
 
-    TRACE("(%p)->(%p)\n", This, value);
+    TRACE("%p, %p\n", iface, value);
 
-    return node_get_content(&This->node, value);
+    return node_get_value(attr->node, value);
 }
 
-static HRESULT WINAPI domattr_put_value(
-    IXMLDOMAttribute *iface,
-    VARIANT value)
+static HRESULT WINAPI domattr_put_value(IXMLDOMAttribute *iface, VARIANT value)
 {
-    domattr *This = impl_from_IXMLDOMAttribute( iface );
+    domattr *attr = impl_from_IXMLDOMAttribute(iface);
 
-    TRACE("(%p)->(%s)\n", This, debugstr_variant(&value));
+    TRACE("%p, %s.\n", iface, debugstr_variant(&value));
 
-    return node_put_value_escaped(&This->node, &value);
+    return node_put_value(attr->node, &value);
 }
 
 static const struct IXMLDOMAttributeVtbl domattr_vtbl =
@@ -714,31 +562,36 @@ static const struct IXMLDOMAttributeVtbl domattr_vtbl =
     domattr_put_value
 };
 
-static const tid_t domattr_iface_tids[] = {
+static const tid_t domattr_iface_tids[] =
+{
     IXMLDOMAttribute_tid,
     0
 };
 
-static dispex_static_data_t domattr_dispex = {
+static dispex_static_data_t domattr_dispex =
+{
     NULL,
     IXMLDOMAttribute_tid,
     NULL,
     domattr_iface_tids
 };
 
-IUnknown* create_attribute( xmlNodePtr attribute, BOOL floating )
+HRESULT create_attribute(struct domnode *node, IUnknown **obj)
 {
-    domattr *This;
+    domattr *object;
+
+    *obj = NULL;
 
-    This = malloc(sizeof(*This));
-    if ( !This )
-        return NULL;
+    if (!(object = calloc(1, sizeof(*object))))
+        return E_OUTOFMEMORY;
 
-    This->IXMLDOMAttribute_iface.lpVtbl = &domattr_vtbl;
-    This->ref = 1;
-    This->floating = floating;
+    object->IXMLDOMAttribute_iface.lpVtbl = &domattr_vtbl;
+    object->refcount = 1;
+    object->node = domnode_addref(node);
 
-    init_xmlnode(&This->node, attribute, (IXMLDOMNode*)&This->IXMLDOMAttribute_iface, &domattr_dispex);
+    init_dispex(&object->dispex, (IUnknown *)&object->IXMLDOMAttribute_iface, &domattr_dispex);
 
-    return (IUnknown*)&This->IXMLDOMAttribute_iface;
+    *obj = (IUnknown *)&object->IXMLDOMAttribute_iface;
+
+    return S_OK;
 }
diff --git a/dlls/msxml3/cdata.c b/dlls/msxml3/cdata.c
index cab35e6c5c8d..15b493fd1d54 100644
--- a/dlls/msxml3/cdata.c
+++ b/dlls/msxml3/cdata.c
@@ -21,8 +21,6 @@
 #define COBJMACROS
 
 #include <stdarg.h>
-#include <libxml/parser.h>
-#include <libxml/xmlerror.h>
 
 #include "windef.h"
 #include "winbase.h"
@@ -38,9 +36,10 @@ WINE_DEFAULT_DEBUG_CHANNEL(msxml);
 
 typedef struct
 {
-    xmlnode node;
+    DispatchEx dispex;
     IXMLDOMCDATASection IXMLDOMCDATASection_iface;
-    LONG ref;
+    LONG refcount;
+    struct domnode *node;
 } domcdata;
 
 static const tid_t domcdata_se_tids[] = {
@@ -54,13 +53,11 @@ static inline domcdata *impl_from_IXMLDOMCDATASection( IXMLDOMCDATASection *ifac
     return CONTAINING_RECORD(iface, domcdata, IXMLDOMCDATASection_iface);
 }
 
-static HRESULT WINAPI domcdata_QueryInterface(
-    IXMLDOMCDATASection *iface,
-    REFIID riid,
-    void** ppvObject )
+static HRESULT WINAPI domcdata_QueryInterface(IXMLDOMCDATASection *iface, REFIID riid, void **obj)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
-    TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppvObject);
+    domcdata *cdata = impl_from_IXMLDOMCDATASection(iface);
+
+    TRACE("%p, %s, %p.\n", iface, debugstr_guid(riid), obj);
 
     if ( IsEqualGUID( riid, &IID_IXMLDOMCDATASection ) ||
          IsEqualGUID( riid, &IID_IXMLDOMCharacterData) ||
@@ -68,20 +65,24 @@ static HRESULT WINAPI domcdata_QueryInterface(
          IsEqualGUID( riid, &IID_IDispatch ) ||
          IsEqualGUID( riid, &IID_IUnknown ) )
     {
-        *ppvObject = iface;
+        *obj = iface;
     }
-    else if(node_query_interface(&This->node, riid, ppvObject))
+    else if (dispex_query_interface(&cdata->dispex, riid, obj))
     {
-        return *ppvObject ? S_OK : E_NOINTERFACE;
+        return *obj ? S_OK : E_NOINTERFACE;
     }
-    else if(IsEqualGUID( riid, &IID_ISupportErrorInfo ))
+    else if (node_query_interface(cdata->node, riid, obj))
     {
-        return node_create_supporterrorinfo(domcdata_se_tids, ppvObject);
+        return *obj ? S_OK : E_NOINTERFACE;
+    }
+    else if (IsEqualGUID(riid, &IID_ISupportErrorInfo))
+    {
+        return node_create_supporterrorinfo(domcdata_se_tids, obj);
     }
     else
     {
-        TRACE("Unsupported interface %s\n", debugstr_guid(riid));
-        *ppvObject = NULL;
+        WARN("Unsupported interface %s\n", debugstr_guid(riid));
+        *obj = NULL;
         return E_NOINTERFACE;
     }
 
@@ -92,7 +93,7 @@ static HRESULT WINAPI domcdata_QueryInterface(
 static ULONG WINAPI domcdata_AddRef(IXMLDOMCDATASection *iface)
 {
     domcdata *cdata = impl_from_IXMLDOMCDATASection(iface);
-    ULONG ref = InterlockedIncrement(&cdata->ref);
+    ULONG ref = InterlockedIncrement(&cdata->refcount);
     TRACE("%p, refcount %lu.\n", iface, ref);
     return ref;
 }
@@ -100,703 +101,421 @@ static ULONG WINAPI domcdata_AddRef(IXMLDOMCDATASection *iface)
 static ULONG WINAPI domcdata_Release(IXMLDOMCDATASection *iface)
 {
     domcdata *cdata = impl_from_IXMLDOMCDATASection(iface);
-    ULONG ref = InterlockedDecrement(&cdata->ref);
+    ULONG ref = InterlockedDecrement(&cdata->refcount);
 
     TRACE("%p, refcount %lu.\n", iface, ref);
 
     if (!ref)
     {
-        destroy_xmlnode(&cdata->node);
+        domnode_release(cdata->node);
         free(cdata);
     }
 
     return ref;
 }
 
-static HRESULT WINAPI domcdata_GetTypeInfoCount(
-    IXMLDOMCDATASection *iface,
-    UINT* pctinfo )
+static HRESULT WINAPI domcdata_GetTypeInfoCount(IXMLDOMCDATASection *iface, UINT *count)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
-    return IDispatchEx_GetTypeInfoCount(&This->node.dispex.IDispatchEx_iface, pctinfo);
+    domcdata *cdata = impl_from_IXMLDOMCDATASection(iface);
+    return IDispatchEx_GetTypeInfoCount(&cdata->dispex.IDispatchEx_iface, count);
 }
 
-static HRESULT WINAPI domcdata_GetTypeInfo(
-    IXMLDOMCDATASection *iface,
-    UINT iTInfo, LCID lcid,
-    ITypeInfo** ppTInfo )
+static HRESULT WINAPI domcdata_GetTypeInfo(IXMLDOMCDATASection *iface, UINT index, LCID lcid, ITypeInfo **ti)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
-    return IDispatchEx_GetTypeInfo(&This->node.dispex.IDispatchEx_iface,
-        iTInfo, lcid, ppTInfo);
+    domcdata *cdata = impl_from_IXMLDOMCDATASection(iface);
+    return IDispatchEx_GetTypeInfo(&cdata->dispex.IDispatchEx_iface, index, lcid, ti);
 }
 
-static HRESULT WINAPI domcdata_GetIDsOfNames(
-    IXMLDOMCDATASection *iface,
-    REFIID riid, LPOLESTR* rgszNames,
-    UINT cNames, LCID lcid, DISPID* rgDispId )
+static HRESULT WINAPI domcdata_GetIDsOfNames(IXMLDOMCDATASection *iface, REFIID riid, LPOLESTR* rgszNames,
+        UINT cNames, LCID lcid, DISPID *rgDispId)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
-    return IDispatchEx_GetIDsOfNames(&This->node.dispex.IDispatchEx_iface,
-        riid, rgszNames, cNames, lcid, rgDispId);
+    domcdata *cdata = impl_from_IXMLDOMCDATASection( iface );
+    return IDispatchEx_GetIDsOfNames(&cdata->dispex.IDispatchEx_iface, riid, rgszNames, cNames, lcid, rgDispId);
 }
 
-static HRESULT WINAPI domcdata_Invoke(
-    IXMLDOMCDATASection *iface,
-    DISPID dispIdMember, REFIID riid, LCID lcid,
-    WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarResult,
-    EXCEPINFO* pExcepInfo, UINT* puArgErr )
+static HRESULT WINAPI domcdata_Invoke(IXMLDOMCDATASection *iface, DISPID dispIdMember, REFIID riid, LCID lcid,
+        WORD flags, DISPPARAMS *params, VARIANT *result, EXCEPINFO *ei, UINT *puArgErr)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
-    return IDispatchEx_Invoke(&This->node.dispex.IDispatchEx_iface,
-        dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
+    domcdata *cdata = impl_from_IXMLDOMCDATASection(iface);
+    return IDispatchEx_Invoke(&cdata->dispex.IDispatchEx_iface, dispIdMember, riid, lcid, flags,
+            params, result, ei, puArgErr);
 }
 
-static HRESULT WINAPI domcdata_get_nodeName(
-    IXMLDOMCDATASection *iface,
-    BSTR* p )
+static HRESULT WINAPI domcdata_get_nodeName(IXMLDOMCDATASection *iface, BSTR *p)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
-
-    TRACE("(%p)->(%p)\n", This, p);
+    TRACE("%p, %p.\n", iface, p);
 
     return return_bstr(L"#cdata-section", p);
 }
 
-static HRESULT WINAPI domcdata_get_nodeValue(
-    IXMLDOMCDATASection *iface,
-    VARIANT* value)
+static HRESULT WINAPI domcdata_get_nodeValue(IXMLDOMCDATASection *iface, VARIANT *value)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
+    domcdata *cdata = impl_from_IXMLDOMCDATASection(iface);
 
-    TRACE("(%p)->(%p)\n", This, value);
+    TRACE("%p, %p.\n", iface, value);
 
-    return node_get_content(&This->node, value);
+    return node_get_value(cdata->node, value);
 }
 
-static HRESULT WINAPI domcdata_put_nodeValue(
-    IXMLDOMCDATASection *iface,
-    VARIANT value)
+static HRESULT WINAPI domcdata_put_nodeValue(IXMLDOMCDATASection *iface, VARIANT value)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
+    domcdata *cdata = impl_from_IXMLDOMCDATASection( iface );
 
-    TRACE("(%p)->(%s)\n", This, debugstr_variant(&value));
+    TRACE("%p, %s.\n", iface, debugstr_variant(&value));
 
-    return node_put_value(&This->node, &value);
+    return node_put_value(cdata->node, &value);
 }
 
-static HRESULT WINAPI domcdata_get_nodeType(
-    IXMLDOMCDATASection *iface,
-    DOMNodeType* domNodeType )
+static HRESULT WINAPI domcdata_get_nodeType(IXMLDOMCDATASection *iface, DOMNodeType *type)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
+    TRACE("%p, %p.\n", iface, type);
 
-    TRACE("(%p)->(%p)\n", This, domNodeType);
-
-    *domNodeType = NODE_CDATA_SECTION;
+    *type = NODE_CDATA_SECTION;
     return S_OK;
 }
 
-static HRESULT WINAPI domcdata_get_parentNode(
-    IXMLDOMCDATASection *iface,
-    IXMLDOMNode** parent )
+static HRESULT WINAPI domcdata_get_parentNode(IXMLDOMCDATASection *iface, IXMLDOMNode **parent)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
+    domcdata *cdata = impl_from_IXMLDOMCDATASection(iface);
 
-    TRACE("(%p)->(%p)\n", This, parent);
+    TRACE("%p, %p.\n", iface, parent);
 
-    return node_get_parent(&This->node, parent);
+    return node_get_parent(cdata->node, parent);
 }
 
-static HRESULT WINAPI domcdata_get_childNodes(
-    IXMLDOMCDATASection *iface,
-    IXMLDOMNodeList** outList)
+static HRESULT WINAPI domcdata_get_childNodes(IXMLDOMCDATASection *iface, IXMLDOMNodeList **list)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
+    domcdata *cdata = impl_from_IXMLDOMCDATASection(iface);
 
-    TRACE("(%p)->(%p)\n", This, outList);
+    TRACE("%p, %p.\n", iface, list);
 
-    return node_get_child_nodes(&This->node, outList);
+    return node_get_child_nodes(cdata->node, list);
 }
 
-static HRESULT WINAPI domcdata_get_firstChild(
-    IXMLDOMCDATASection *iface,
-    IXMLDOMNode** domNode)
+static HRESULT WINAPI domcdata_get_firstChild(IXMLDOMCDATASection *iface, IXMLDOMNode **node)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
-
-    TRACE("(%p)->(%p)\n", This, domNode);
+    TRACE("%p, %p.\n", iface, node);
 
-    return return_null_node(domNode);
+    return return_null_node(node);
 }
 
-static HRESULT WINAPI domcdata_get_lastChild(
-    IXMLDOMCDATASection *iface,
-    IXMLDOMNode** domNode)
+static HRESULT WINAPI domcdata_get_lastChild(IXMLDOMCDATASection *iface, IXMLDOMNode **node)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
+    TRACE("%p, %p.\n", iface, node);
 
-    TRACE("(%p)->(%p)\n", This, domNode);
-
-    return return_null_node(domNode);
+    return return_null_node(node);
 }
 
-static HRESULT WINAPI domcdata_get_previousSibling(
-    IXMLDOMCDATASection *iface,
-    IXMLDOMNode** domNode)
+static HRESULT WINAPI domcdata_get_previousSibling(IXMLDOMCDATASection *iface, IXMLDOMNode **node)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
+    domcdata *cdata = impl_from_IXMLDOMCDATASection(iface);
 
-    TRACE("(%p)->(%p)\n", This, domNode);
+    TRACE("%p, %p.\n", iface, node);
 
-    return node_get_previous_sibling(&This->node, domNode);
+    return node_get_previous_sibling(cdata->node, node);
 }
 
-static HRESULT WINAPI domcdata_get_nextSibling(
-    IXMLDOMCDATASection *iface,
-    IXMLDOMNode** domNode)
+static HRESULT WINAPI domcdata_get_nextSibling(IXMLDOMCDATASection *iface, IXMLDOMNode **node)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
+    domcdata *cdata = impl_from_IXMLDOMCDATASection(iface);
 
-    TRACE("(%p)->(%p)\n", This, domNode);
+    TRACE("%p, %p.\n", iface, node);
 
-    return node_get_next_sibling(&This->node, domNode);
+    return node_get_next_sibling(cdata->node, node);
 }
 
-static HRESULT WINAPI domcdata_get_attributes(
-    IXMLDOMCDATASection *iface,
-    IXMLDOMNamedNodeMap** attributeMap)
+static HRESULT WINAPI domcdata_get_attributes(IXMLDOMCDATASection *iface, IXMLDOMNamedNodeMap **map)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
-
-    TRACE("(%p)->(%p)\n", This, attributeMap);
+    TRACE("%p, %p.\n", iface, map);
 
-    return return_null_ptr((void**)attributeMap);
+    return return_null_ptr((void **)map);
 }
 
-static HRESULT WINAPI domcdata_insertBefore(
-    IXMLDOMCDATASection *iface,
-    IXMLDOMNode* newNode, VARIANT refChild,
-    IXMLDOMNode** outOldNode)
+static HRESULT WINAPI domcdata_insertBefore(IXMLDOMCDATASection *iface, IXMLDOMNode *node,
+        VARIANT refChild, IXMLDOMNode **oldnode)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
-    TRACE("(%p)->(%p %s %p)\n", This, newNode, debugstr_variant(&refChild), outOldNode);
-    if (outOldNode) *outOldNode = NULL;
+    TRACE("%p, %p, %s, %p.\n", iface, node, debugstr_variant(&refChild), oldnode);
+
+    if (oldnode) *oldnode = NULL;
     return E_FAIL;
 }
 
-static HRESULT WINAPI domcdata_replaceChild(
-    IXMLDOMCDATASection *iface,
-    IXMLDOMNode* newNode,
-    IXMLDOMNode* oldNode,
-    IXMLDOMNode** outOldNode)
+static HRESULT WINAPI domcdata_replaceChild(IXMLDOMCDATASection *iface, IXMLDOMNode *node,
+        IXMLDOMNode *oldnode, IXMLDOMNode **out_oldnode)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
-    TRACE("(%p)->(%p %p %p)\n", This, newNode, oldNode, outOldNode);
-    if (outOldNode) *outOldNode = NULL;
+    TRACE("%p, %p, %p, %p.\n", iface, node, oldnode, out_oldnode);
+
+    if (out_oldnode) *out_oldnode = NULL;
     return E_FAIL;
 }
 
-static HRESULT WINAPI domcdata_removeChild(
-    IXMLDOMCDATASection *iface,
-    IXMLDOMNode *child, IXMLDOMNode **oldChild)
+static HRESULT WINAPI domcdata_removeChild(IXMLDOMCDATASection *iface, IXMLDOMNode *child, IXMLDOMNode **oldChild)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
-    TRACE("(%p)->(%p %p)\n", This, child, oldChild);
+    TRACE("%p, %p, %p.\n", iface, child, oldChild);
+
     if (oldChild) *oldChild = NULL;
     return E_FAIL;
 }
 
-static HRESULT WINAPI domcdata_appendChild(
-    IXMLDOMCDATASection *iface,
-    IXMLDOMNode *child, IXMLDOMNode **outChild)
+static HRESULT WINAPI domcdata_appendChild(IXMLDOMCDATASection *iface, IXMLDOMNode *child, IXMLDOMNode **outChild)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
-    TRACE("(%p)->(%p %p)\n", This, child, outChild);
+    TRACE("%p, %p, %p.\n", iface, child, outChild);
+
     if (outChild) *outChild = NULL;
     return E_FAIL;
 }
 
-static HRESULT WINAPI domcdata_hasChildNodes(
-    IXMLDOMCDATASection *iface,
-    VARIANT_BOOL *ret)
+static HRESULT WINAPI domcdata_hasChildNodes(IXMLDOMCDATASection *iface, VARIANT_BOOL *ret)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
-    TRACE("(%p)->(%p)\n", This, ret);
+    TRACE("%p, %p.\n", iface, ret);
+
     return return_var_false(ret);
 }
 
-static HRESULT WINAPI domcdata_get_ownerDocument(
-    IXMLDOMCDATASection *iface,
-    IXMLDOMDocument    **doc)
+static HRESULT WINAPI domcdata_get_ownerDocument(IXMLDOMCDATASection *iface, IXMLDOMDocument **doc)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
-    TRACE("(%p)->(%p)\n", This, doc);
-    return node_get_owner_doc(&This->node, doc);
+    domcdata *cdata = impl_from_IXMLDOMCDATASection(iface);
+
+    TRACE("%p, %p.\n", iface, doc);
+
+    return node_get_owner_document(cdata->node, doc);
 }
 
-static HRESULT WINAPI domcdata_cloneNode(
-    IXMLDOMCDATASection *iface,
-    VARIANT_BOOL deep, IXMLDOMNode** outNode)
+static HRESULT WINAPI domcdata_cloneNode(IXMLDOMCDATASection *iface, VARIANT_BOOL deep, IXMLDOMNode **node)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
-    TRACE("(%p)->(%d %p)\n", This, deep, outNode);
-    return node_clone( &This->node, deep, outNode );
+    domcdata *cdata = impl_from_IXMLDOMCDATASection(iface);
+
+    TRACE("%p, %d, %p.\n", iface, deep, node);
+
+    return node_clone(cdata->node, deep, node);
 }
 
-static HRESULT WINAPI domcdata_get_nodeTypeString(
-    IXMLDOMCDATASection *iface,
-    BSTR* p)
+static HRESULT WINAPI domcdata_get_nodeTypeString(IXMLDOMCDATASection *iface, BSTR *p)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
-
-    TRACE("(%p)->(%p)\n", This, p);
+    TRACE("%p, %p.\n", iface, p);
 
     return return_bstr(L"cdatasection", p);
 }
 
-static HRESULT WINAPI domcdata_get_text(
-    IXMLDOMCDATASection *iface,
-    BSTR* p)
+static HRESULT WINAPI domcdata_get_text(IXMLDOMCDATASection *iface, BSTR *p)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
-    TRACE("(%p)->(%p)\n", This, p);
-    return node_get_text(&This->node, p);
+    domcdata *cdata = impl_from_IXMLDOMCDATASection(iface);
+
+    TRACE("%p, %p.\n", iface, p);
+
+    return node_get_text(cdata->node, p);
 }
 
-static HRESULT WINAPI domcdata_put_text(
-    IXMLDOMCDATASection *iface,
-    BSTR p)
+static HRESULT WINAPI domcdata_put_text(IXMLDOMCDATASection *iface, BSTR p)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
-    TRACE("(%p)->(%s)\n", This, debugstr_w(p));
-    return node_put_text( &This->node, p );
+    domcdata *cdata = impl_from_IXMLDOMCDATASection(iface);
+
+    TRACE("%p, %s.\n", iface, debugstr_w(p));
+
+    return node_put_data(cdata->node, p);
 }
 
-static HRESULT WINAPI domcdata_get_specified(
-    IXMLDOMCDATASection *iface,
-    VARIANT_BOOL* isSpecified)
+static HRESULT WINAPI domcdata_get_specified(IXMLDOMCDATASection *iface, VARIANT_BOOL *v)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
-    FIXME("(%p)->(%p) stub!\n", This, isSpecified);
-    *isSpecified = VARIANT_TRUE;
+    FIXME("%p, %p stub!\n", iface, v);
+
+    *v = VARIANT_TRUE;
     return S_OK;
 }
 
-static HRESULT WINAPI domcdata_get_definition(
-    IXMLDOMCDATASection *iface,
-    IXMLDOMNode** definitionNode)
+static HRESULT WINAPI domcdata_get_definition(IXMLDOMCDATASection *iface, IXMLDOMNode **node)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
-    FIXME("(%p)->(%p)\n", This, definitionNode);
+    FIXME("%p, %p.\n", iface, node);
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domcdata_get_nodeTypedValue(
-    IXMLDOMCDATASection *iface,
-    VARIANT* v)
+static HRESULT WINAPI domcdata_get_nodeTypedValue(IXMLDOMCDATASection *iface, VARIANT *v)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
-    TRACE("(%p)->(%p)\n", This, v);
-    return node_get_content(&This->node, v);
+    domcdata *cdata = impl_from_IXMLDOMCDATASection( iface );
+
+    TRACE("%p, %p.\n", iface, v);
+
+    return node_get_value(cdata->node, v);
 }
 
-static HRESULT WINAPI domcdata_put_nodeTypedValue(
-    IXMLDOMCDATASection *iface,
-    VARIANT typedValue)
+static HRESULT WINAPI domcdata_put_nodeTypedValue(IXMLDOMCDATASection *iface, VARIANT v)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
-    FIXME("(%p)->(%s)\n", This, debugstr_variant(&typedValue));
+    FIXME("%p, %s.\n", iface, debugstr_variant(&v));
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domcdata_get_dataType(
-    IXMLDOMCDATASection *iface,
-    VARIANT* typename)
+static HRESULT WINAPI domcdata_get_dataType(IXMLDOMCDATASection *iface, VARIANT *v)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
-    TRACE("(%p)->(%p)\n", This, typename);
-    return return_null_var( typename );
+    TRACE("%p, %p.\n", iface, v);
+
+    return return_null_var(v);
 }
 
-static HRESULT WINAPI domcdata_put_dataType(
-    IXMLDOMCDATASection *iface,
-    BSTR p)
+static HRESULT WINAPI domcdata_put_dataType(IXMLDOMCDATASection *iface, BSTR p)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
-
-    TRACE("(%p)->(%s)\n", This, debugstr_w(p));
+    TRACE("%p, %s.\n", iface, debugstr_w(p));
 
-    if(!p)
+    if (!p)
         return E_INVALIDARG;
 
     return E_FAIL;
 }
 
-static HRESULT WINAPI domcdata_get_xml(
-    IXMLDOMCDATASection *iface,
-    BSTR* p)
+static HRESULT WINAPI domcdata_get_xml(IXMLDOMCDATASection *iface, BSTR *p)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
+    domcdata *cdata = impl_from_IXMLDOMCDATASection(iface);
 
-    TRACE("(%p)->(%p)\n", This, p);
+    TRACE("%p, %p.\n", iface, p);
 
-    return node_get_xml(&This->node, FALSE, p);
+    return node_get_xml(cdata->node, p);
 }
 
-static HRESULT WINAPI domcdata_transformNode(
-    IXMLDOMCDATASection *iface,
-    IXMLDOMNode *node, BSTR *p)
+static HRESULT WINAPI domcdata_transformNode(IXMLDOMCDATASection *iface, IXMLDOMNode *node, BSTR *p)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
-    TRACE("(%p)->(%p %p)\n", This, node, p);
-    return node_transform_node(&This->node, node, p);
+    domcdata *cdata = impl_from_IXMLDOMCDATASection(iface);
+
+    TRACE("%p, %p, %p.\n", iface, node, p);
+
+    return node_transform_node(cdata->node, node, p);
 }
 
-static HRESULT WINAPI domcdata_selectNodes(
-    IXMLDOMCDATASection *iface,
-    BSTR p, IXMLDOMNodeList** outList)
+static HRESULT WINAPI domcdata_selectNodes(IXMLDOMCDATASection *iface, BSTR p, IXMLDOMNodeList **list)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
-    TRACE("(%p)->(%s %p)\n", This, debugstr_w(p), outList);
-    return node_select_nodes(&This->node, p, outList);
+    domcdata *cdata = impl_from_IXMLDOMCDATASection(iface);
+
+    TRACE("%p, %s, %p.\n", iface, debugstr_w(p), list);
+
+    return node_select_nodes(cdata->node, p, list);
 }
 
-static HRESULT WINAPI domcdata_selectSingleNode(
-    IXMLDOMCDATASection *iface,
-    BSTR p, IXMLDOMNode** outNode)
+static HRESULT WINAPI domcdata_selectSingleNode(IXMLDOMCDATASection *iface, BSTR p, IXMLDOMNode **node)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
-    TRACE("(%p)->(%s %p)\n", This, debugstr_w(p), outNode);
-    return node_select_singlenode(&This->node, p, outNode);
+    domcdata *cdata = impl_from_IXMLDOMCDATASection(iface);
+
+    TRACE("%p, %s, %p.\n", iface, debugstr_w(p), node);
+
+    return node_select_singlenode(cdata->node, p, node);
 }
 
-static HRESULT WINAPI domcdata_get_parsed(
-    IXMLDOMCDATASection *iface,
-    VARIANT_BOOL* isParsed)
+static HRESULT WINAPI domcdata_get_parsed(IXMLDOMCDATASection *iface, VARIANT_BOOL *v)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
-    FIXME("(%p)->(%p) stub!\n", This, isParsed);
-    *isParsed = VARIANT_TRUE;
+    FIXME("%p, %p stub!\n", iface, v);
+
+    *v = VARIANT_TRUE;
     return S_OK;
 }
 
-static HRESULT WINAPI domcdata_get_namespaceURI(
-    IXMLDOMCDATASection *iface,
-    BSTR* p)
+static HRESULT WINAPI domcdata_get_namespaceURI(IXMLDOMCDATASection *iface, BSTR *p)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
-    TRACE("(%p)->(%p)\n", This, p);
-    return node_get_namespaceURI(&This->node, p);
+    domcdata *cdata = impl_from_IXMLDOMCDATASection(iface);
+
+    TRACE("%p, %p.\n", iface, p);
+
+    return node_get_namespaceURI(cdata->node, p);
 }
 
-static HRESULT WINAPI domcdata_get_prefix(
-    IXMLDOMCDATASection *iface,
-    BSTR* prefix)
+static HRESULT WINAPI domcdata_get_prefix(IXMLDOMCDATASection *iface, BSTR *prefix)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
-    TRACE("(%p)->(%p)\n", This, prefix);
-    return return_null_bstr( prefix );
+    TRACE("%p, %p.\n", iface, prefix);
+
+    return return_null_bstr(prefix);
 }
 
-static HRESULT WINAPI domcdata_get_baseName(
-    IXMLDOMCDATASection *iface,
-    BSTR* name)
+static HRESULT WINAPI domcdata_get_baseName(IXMLDOMCDATASection *iface, BSTR *name)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
-    FIXME("(%p)->(%p): needs test\n", This, name);
-    return return_null_bstr( name );
+    FIXME("%p, %p: needs test\n", iface, name);
+
+    return return_null_bstr(name);
 }
 
-static HRESULT WINAPI domcdata_transformNodeToObject(
-    IXMLDOMCDATASection *iface,
-    IXMLDOMNode* domNode, VARIANT var1)
+static HRESULT WINAPI domcdata_transformNodeToObject(IXMLDOMCDATASection *iface, IXMLDOMNode *node, VARIANT var1)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
-    FIXME("(%p)->(%p %s)\n", This, domNode, debugstr_variant(&var1));
+    FIXME("%p, %p, %s.\n", iface, node, debugstr_variant(&var1));
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domcdata_get_data(
-    IXMLDOMCDATASection *iface,
-    BSTR *p)
+static HRESULT WINAPI domcdata_get_data(IXMLDOMCDATASection *iface, BSTR *p)
 {
-    HRESULT hr;
-    VARIANT vRet;
-
-    if(!p)
-        return E_INVALIDARG;
+    domcdata *cdata = impl_from_IXMLDOMCDATASection(iface);
 
-    hr = IXMLDOMCDATASection_get_nodeValue( iface, &vRet );
-    if(hr == S_OK)
-    {
-        *p = V_BSTR(&vRet);
-    }
+    TRACE("%p, %p.\n", iface, p);
 
-    return hr;
+    return node_get_data(cdata->node, p);
 }
 
-static HRESULT WINAPI domcdata_put_data(
-    IXMLDOMCDATASection *iface,
-    BSTR data)
+static HRESULT WINAPI domcdata_put_data(IXMLDOMCDATASection *iface, BSTR data)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
-    TRACE("(%p)->(%s)\n", This, debugstr_w(data));
-    return node_set_content(&This->node, data);
-}
+    domcdata *cdata = impl_from_IXMLDOMCDATASection(iface);
 
-static HRESULT WINAPI domcdata_get_length(
-    IXMLDOMCDATASection *iface,
-    LONG *len)
-{
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
-    HRESULT hr;
-    BSTR data;
+    TRACE("%p, %s.\n", iface, debugstr_w(data));
 
-    TRACE("(%p)->(%p)\n", This, len);
+    return node_put_data(cdata->node, data);
+}
 
-    if(!len)
-        return E_INVALIDARG;
+static HRESULT WINAPI domcdata_get_length(IXMLDOMCDATASection *iface, LONG *length)
+{
+    domcdata *cdata = impl_from_IXMLDOMCDATASection(iface);
 
-    hr = IXMLDOMCDATASection_get_data(iface, &data);
-    if(hr == S_OK)
-    {
-        *len = SysStringLen(data);
-        SysFreeString(data);
-    }
+    TRACE("%p, %p.\n", iface, length);
 
-    return S_OK;
+    return node_get_data_length(cdata->node, length);
 }
 
-static HRESULT WINAPI domcdata_substringData(
-    IXMLDOMCDATASection *iface,
-    LONG offset, LONG count, BSTR *p)
+static HRESULT WINAPI domcdata_substringData(IXMLDOMCDATASection *iface, LONG offset, LONG count, BSTR *p)
 {
-    HRESULT hr;
-    BSTR data;
+    domcdata *cdata = impl_from_IXMLDOMCDATASection(iface);
 
     TRACE("%p, %ld, %ld, %p.\n", iface, offset, count, p);
 
-    if(!p)
-        return E_INVALIDARG;
-
-    *p = NULL;
-    if(offset < 0 || count < 0)
-        return E_INVALIDARG;
-
-    if(count == 0)
-        return S_FALSE;
-
-    hr = IXMLDOMCDATASection_get_data(iface, &data);
-    if(hr == S_OK)
-    {
-        LONG len = SysStringLen(data);
-
-        if(offset < len)
-        {
-            if(offset + count > len)
-                *p = SysAllocString(&data[offset]);
-            else
-                *p = SysAllocStringLen(&data[offset], count);
-        }
-        else
-            hr = S_FALSE;
-
-        SysFreeString(data);
-    }
-
-    return hr;
+    return node_substring_data(cdata->node, offset, count, p);
 }
 
-static HRESULT WINAPI domcdata_appendData(
-    IXMLDOMCDATASection *iface,
-    BSTR p)
+static HRESULT WINAPI domcdata_appendData(IXMLDOMCDATASection *iface, BSTR p)
 {
-    domcdata *This = impl_from_IXMLDOMCDATASection( iface );
-    HRESULT hr;
-    BSTR data;
-    LONG p_len;
-
-    TRACE("(%p)->(%s)\n", This, debugstr_w(p));
-
-    /* Nothing to do if NULL or an Empty string passed in. */
-    if((p_len = SysStringLen(p)) == 0) return S_OK;
-
-    hr = IXMLDOMCDATASection_get_data(iface, &data);
-    if(hr == S_OK)
-    {
-        LONG len = SysStringLen(data);
-        BSTR str = SysAllocStringLen(NULL, p_len + len);
-
-        memcpy(str, data, len*sizeof(WCHAR));
-        memcpy(&str[len], p, p_len*sizeof(WCHAR));
-        str[len+p_len] = 0;
-
-        hr = IXMLDOMCDATASection_put_data(iface, str);
+    domcdata *cdata = impl_from_IXMLDOMCDATASection(iface);
 
-        SysFreeString(str);
-        SysFreeString(data);
-    }
+    TRACE("%p, %s.\n", iface, debugstr_w(p));
 
-    return hr;
+    return node_append_data(cdata->node, p);
 }
 
-static HRESULT WINAPI domcdata_insertData(
-    IXMLDOMCDATASection *iface,
-    LONG offset, BSTR p)
+static HRESULT WINAPI domcdata_insertData(IXMLDOMCDATASection *iface, LONG offset, BSTR p)
 {
-    HRESULT hr;
-    BSTR data;
-    LONG p_len;
+    domcdata *cdata = impl_from_IXMLDOMCDATASection(iface);
 
     TRACE("%p, %ld, %s.\n", iface, offset, debugstr_w(p));
 
-    /* If have a NULL or empty string, don't do anything. */
-    if((p_len = SysStringLen(p)) == 0)
-        return S_OK;
-
-    if(offset < 0)
-    {
-        return E_INVALIDARG;
-    }
-
-    hr = IXMLDOMCDATASection_get_data(iface, &data);
-    if(hr == S_OK)
-    {
-        LONG len = SysStringLen(data);
-        BSTR str;
-
-        if(len < offset)
-        {
-            SysFreeString(data);
-            return E_INVALIDARG;
-        }
-
-        str = SysAllocStringLen(NULL, len + p_len);
-        /* start part, supplied string and end part */
-        memcpy(str, data, offset*sizeof(WCHAR));
-        memcpy(&str[offset], p, p_len*sizeof(WCHAR));
-        memcpy(&str[offset+p_len], &data[offset], (len-offset)*sizeof(WCHAR));
-        str[len+p_len] = 0;
-
-        hr = IXMLDOMCDATASection_put_data(iface, str);
-
-        SysFreeString(str);
-        SysFreeString(data);
-    }
-
-    return hr;
+    return node_insert_data(cdata->node, offset, p);
 }
 
-static HRESULT WINAPI domcdata_deleteData(
-    IXMLDOMCDATASection *iface,
-    LONG offset, LONG count)
+static HRESULT WINAPI domcdata_deleteData(IXMLDOMCDATASection *iface, LONG offset, LONG count)
 {
-    HRESULT hr;
-    LONG len = -1;
-    BSTR str;
+    domcdata *cdata = impl_from_IXMLDOMCDATASection(iface);
 
     TRACE("%p, %ld, %ld.\n", iface, offset, count);
 
-    hr = IXMLDOMCDATASection_get_length(iface, &len);
-    if(hr != S_OK) return hr;
-
-    if((offset < 0) || (offset > len) || (count < 0))
-        return E_INVALIDARG;
-
-    if(len == 0) return S_OK;
-
-    /* cutting start or end */
-    if((offset == 0) || ((count + offset) >= len))
-    {
-        if(offset == 0)
-            IXMLDOMCDATASection_substringData(iface, count, len - count, &str);
-        else
-            IXMLDOMCDATASection_substringData(iface, 0, offset, &str);
-        hr = IXMLDOMCDATASection_put_data(iface, str);
-    }
-    else
-    /* cutting from the inside */
-    {
-        BSTR str_end;
-
-        IXMLDOMCDATASection_substringData(iface, 0, offset, &str);
-        IXMLDOMCDATASection_substringData(iface, offset + count, len - count, &str_end);
-
-        hr = IXMLDOMCDATASection_put_data(iface, str);
-        if(hr == S_OK)
-            hr = IXMLDOMCDATASection_appendData(iface, str_end);
-
-        SysFreeString(str_end);
-    }
-
-    SysFreeString(str);
-
-    return hr;
+    return node_delete_data(cdata->node, offset, count);
 }
 
-static HRESULT WINAPI domcdata_replaceData(
-    IXMLDOMCDATASection *iface,
-    LONG offset, LONG count, BSTR p)
+static HRESULT WINAPI domcdata_replaceData(IXMLDOMCDATASection *iface, LONG offset, LONG count, BSTR p)
 {
-    HRESULT hr;
+    domcdata *cdata = impl_from_IXMLDOMCDATASection(iface);
 
     TRACE("%p, %ld, %ld, %s.\n", iface, offset, count, debugstr_w(p));
 
-    hr = IXMLDOMCDATASection_deleteData(iface, offset, count);
-
-    if (hr == S_OK)
-       hr = IXMLDOMCDATASection_insertData(iface, offset, p);
-
-    return hr;
+    return node_replace_data(cdata->node, offset, count, p);
 }
 
-static HRESULT WINAPI domcdata_splitText(
-    IXMLDOMCDATASection *iface,
-    LONG offset, IXMLDOMText **txtNode)
+static HRESULT WINAPI domcdata_splitText(IXMLDOMCDATASection *iface, LONG offset, IXMLDOMText **node)
 {
-    IXMLDOMDocument *doc;
-    LONG length = 0;
-    HRESULT hr;
-
-    TRACE("%p, %ld, %p.\n", iface, offset, txtNode);
-
-    if (!txtNode || offset < 0) return E_INVALIDARG;
-
-    *txtNode = NULL;
-
-    IXMLDOMCDATASection_get_length(iface, &length);
-
-    if (offset > length) return E_INVALIDARG;
-    if (offset == length) return S_FALSE;
+    domcdata *cdata = impl_from_IXMLDOMCDATASection(iface);
 
-    hr = IXMLDOMCDATASection_get_ownerDocument(iface, &doc);
-    if (hr == S_OK)
-    {
-        BSTR data;
-
-        hr = IXMLDOMCDATASection_substringData(iface, offset, length - offset, &data);
-        if (hr == S_OK)
-        {
-            hr = IXMLDOMDocument_createTextNode(doc, data, txtNode);
-            if (hr == S_OK)
-            {
-                IXMLDOMNode *parent;
-
-                hr = IXMLDOMCDATASection_get_parentNode(iface, &parent);
-                if (hr == S_OK)
-                {
-                    IXMLDOMCDATASection_deleteData(iface, 0, offset);
-                    hr = IXMLDOMNode_appendChild(parent, (IXMLDOMNode*)*txtNode, NULL);
-                    IXMLDOMNode_Release(parent);
-                }
-            }
-            SysFreeString(data);
-        }
-        IXMLDOMDocument_Release(doc);
-    }
+    TRACE("%p, %ld, %p.\n", iface, offset, node);
 
-    return hr;
+    return node_split_text(cdata->node, offset, node);
 }
 
 static const struct IXMLDOMCDATASectionVtbl domcdata_vtbl =
@@ -855,30 +574,36 @@ static const struct IXMLDOMCDATASectionVtbl domcdata_vtbl =
     domcdata_splitText
 };
 
-static const tid_t domcdata_iface_tids[] = {
+static const tid_t domcdata_iface_tids[] =
+{
     IXMLDOMCDATASection_tid,
     0
 };
 
-static dispex_static_data_t domcdata_dispex = {
+static dispex_static_data_t domcdata_dispex =
+{
     NULL,
     IXMLDOMCDATASection_tid,
     NULL,
     domcdata_iface_tids
 };
 
-IUnknown* create_cdata( xmlNodePtr text )
+HRESULT create_cdata(struct domnode *node, IUnknown **obj)
 {
-    domcdata *This;
+    domcdata *object;
+
+    *obj = NULL;
 
-    This = malloc(sizeof(*This));
-    if ( !This )
-        return NULL;
+    if (!(object = calloc(1, sizeof(*object))))
+        return E_OUTOFMEMORY;
 
-    This->IXMLDOMCDATASection_iface.lpVtbl = &domcdata_vtbl;
-    This->ref = 1;
+    object->IXMLDOMCDATASection_iface.lpVtbl = &domcdata_vtbl;
+    object->refcount = 1;
+    object->node = domnode_addref(node);
 
-    init_xmlnode(&This->node, text, (IXMLDOMNode*)&This->IXMLDOMCDATASection_iface, &domcdata_dispex);
+    init_dispex(&object->dispex, (IUnknown *)&object->IXMLDOMCDATASection_iface, &domcdata_dispex);
 
-    return (IUnknown*)&This->IXMLDOMCDATASection_iface;
+    *obj = (IUnknown *)&object->IXMLDOMCDATASection_iface;
+
+    return S_OK;
 }
diff --git a/dlls/msxml3/comment.c b/dlls/msxml3/comment.c
index ba0a42821741..08c577febbfe 100644
--- a/dlls/msxml3/comment.c
+++ b/dlls/msxml3/comment.c
@@ -21,8 +21,6 @@
 #define COBJMACROS
 
 #include <stdarg.h>
-#include <libxml/parser.h>
-#include <libxml/xmlerror.h>
 
 #include "windef.h"
 #include "winbase.h"
@@ -38,50 +36,54 @@ WINE_DEFAULT_DEBUG_CHANNEL(msxml);
 
 typedef struct _domcomment
 {
-    xmlnode node;
+    DispatchEx dispex;
     IXMLDOMComment IXMLDOMComment_iface;
-    LONG ref;
+    LONG refcount;
+    struct domnode *node;
 } domcomment;
 
-static const tid_t domcomment_se_tids[] = {
+static const tid_t domcomment_se_tids[] =
+{
     IXMLDOMNode_tid,
     IXMLDOMComment_tid,
     NULL_tid
 };
 
-static inline domcomment *impl_from_IXMLDOMComment( IXMLDOMComment *iface )
+static inline domcomment *impl_from_IXMLDOMComment(IXMLDOMComment *iface)
 {
     return CONTAINING_RECORD(iface, domcomment, IXMLDOMComment_iface);
 }
 
-static HRESULT WINAPI domcomment_QueryInterface(
-    IXMLDOMComment *iface,
-    REFIID riid,
-    void** ppvObject )
+static HRESULT WINAPI domcomment_QueryInterface(IXMLDOMComment *iface, REFIID riid, void **obj)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
-    TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppvObject);
+    domcomment *comment = impl_from_IXMLDOMComment(iface);
+
+    TRACE("%p, %s, %p.\n", iface, debugstr_guid(riid), obj);
 
-    if ( IsEqualGUID( riid, &IID_IXMLDOMComment ) ||
-         IsEqualGUID( riid, &IID_IXMLDOMCharacterData) ||
-         IsEqualGUID( riid, &IID_IXMLDOMNode ) ||
-         IsEqualGUID( riid, &IID_IDispatch ) ||
-         IsEqualGUID( riid, &IID_IUnknown ) )
+    if (IsEqualGUID(riid, &IID_IXMLDOMComment) ||
+        IsEqualGUID(riid, &IID_IXMLDOMCharacterData) ||
+        IsEqualGUID(riid, &IID_IXMLDOMNode) ||
+        IsEqualGUID(riid, &IID_IDispatch) ||
+        IsEqualGUID(riid, &IID_IUnknown))
+    {
+        *obj = iface;
+    }
+    else if (dispex_query_interface(&comment->dispex, riid, obj))
     {
-        *ppvObject = iface;
+        return *obj ? S_OK : E_NOINTERFACE;
     }
-    else if(node_query_interface(&This->node, riid, ppvObject))
+    else if (node_query_interface(comment->node, riid, obj))
     {
-        return *ppvObject ? S_OK : E_NOINTERFACE;
+        return *obj ? S_OK : E_NOINTERFACE;
     }
-    else if(IsEqualGUID( riid, &IID_ISupportErrorInfo ))
+    else if (IsEqualGUID(riid, &IID_ISupportErrorInfo))
     {
-        return node_create_supporterrorinfo(domcomment_se_tids, ppvObject);
+        return node_create_supporterrorinfo(domcomment_se_tids, obj);
     }
     else
     {
         TRACE("Unsupported interface %s\n", debugstr_guid(riid));
-        *ppvObject = NULL;
+        *obj = NULL;
         return E_NOINTERFACE;
     }
 
@@ -92,664 +94,427 @@ static HRESULT WINAPI domcomment_QueryInterface(
 static ULONG WINAPI domcomment_AddRef(IXMLDOMComment *iface)
 {
     domcomment *comment = impl_from_IXMLDOMComment(iface);
-    ULONG ref = InterlockedIncrement(&comment->ref);
-    TRACE("%p, refcount %lu.\n", iface, ref);
-    return ref;
+    ULONG refcount = InterlockedIncrement(&comment->refcount);
+
+    TRACE("%p, refcount %lu.\n", iface, refcount);
+
+    return refcount;
 }
 
 static ULONG WINAPI domcomment_Release(IXMLDOMComment *iface)
 {
     domcomment *comment = impl_from_IXMLDOMComment(iface);
-    ULONG ref = InterlockedDecrement(&comment->ref);
+    ULONG refcount = InterlockedDecrement(&comment->refcount);
 
-    TRACE("%p, refcount %lu.\n", iface, ref);
+    TRACE("%p, refcount %lu.\n", iface, refcount);
 
-    if (!ref)
+    if (!refcount)
     {
-        destroy_xmlnode(&comment->node);
+        domnode_release(comment->node);
         free(comment);
     }
 
-    return ref;
+    return refcount;
 }
 
-static HRESULT WINAPI domcomment_GetTypeInfoCount(
-    IXMLDOMComment *iface,
-    UINT* pctinfo )
+static HRESULT WINAPI domcomment_GetTypeInfoCount(IXMLDOMComment *iface, UINT *count)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
-    return IDispatchEx_GetTypeInfoCount(&This->node.dispex.IDispatchEx_iface, pctinfo);
+    domcomment *comment = impl_from_IXMLDOMComment(iface);
+    return IDispatchEx_GetTypeInfoCount(&comment->dispex.IDispatchEx_iface, count);
 }
 
-static HRESULT WINAPI domcomment_GetTypeInfo(
-    IXMLDOMComment *iface,
-    UINT iTInfo, LCID lcid,
-    ITypeInfo** ppTInfo )
+static HRESULT WINAPI domcomment_GetTypeInfo(IXMLDOMComment *iface, UINT index, LCID lcid, ITypeInfo **ti)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
-    return IDispatchEx_GetTypeInfo(&This->node.dispex.IDispatchEx_iface,
-        iTInfo, lcid, ppTInfo);
+    domcomment *comment = impl_from_IXMLDOMComment(iface);
+    return IDispatchEx_GetTypeInfo(&comment->dispex.IDispatchEx_iface, index, lcid, ti);
 }
 
-static HRESULT WINAPI domcomment_GetIDsOfNames(
-    IXMLDOMComment *iface,
-    REFIID riid, LPOLESTR* rgszNames,
-    UINT cNames, LCID lcid, DISPID* rgDispId )
+static HRESULT WINAPI domcomment_GetIDsOfNames(IXMLDOMComment *iface, REFIID riid,
+        LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
-    return IDispatchEx_GetIDsOfNames(&This->node.dispex.IDispatchEx_iface,
+    domcomment *comment = impl_from_IXMLDOMComment(iface);
+    return IDispatchEx_GetIDsOfNames(&comment->dispex.IDispatchEx_iface,
         riid, rgszNames, cNames, lcid, rgDispId);
 }
 
-static HRESULT WINAPI domcomment_Invoke(
-    IXMLDOMComment *iface,
-    DISPID dispIdMember, REFIID riid, LCID lcid,
-    WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarResult,
-    EXCEPINFO* pExcepInfo, UINT* puArgErr )
+static HRESULT WINAPI domcomment_Invoke(IXMLDOMComment *iface, DISPID dispIdMember, REFIID riid, LCID lcid,
+        WORD flags, DISPPARAMS *params, VARIANT *result, EXCEPINFO *ei, UINT *puArgErr)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
-    return IDispatchEx_Invoke(&This->node.dispex.IDispatchEx_iface,
-        dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
+    domcomment *comment = impl_from_IXMLDOMComment(iface);
+    return IDispatchEx_Invoke(&comment->dispex.IDispatchEx_iface, dispIdMember, riid, lcid, flags,
+            params, result, ei, puArgErr);
 }
 
-static HRESULT WINAPI domcomment_get_nodeName(
-    IXMLDOMComment *iface,
-    BSTR* p )
+static HRESULT WINAPI domcomment_get_nodeName(IXMLDOMComment *iface, BSTR *p)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
-
-    TRACE("(%p)->(%p)\n", This, p);
+    TRACE("%p, %p.\n", iface, p);
 
     return return_bstr(L"#comment", p);
 }
 
-static HRESULT WINAPI domcomment_get_nodeValue(
-    IXMLDOMComment *iface,
-    VARIANT* value)
+static HRESULT WINAPI domcomment_get_nodeValue(IXMLDOMComment *iface, VARIANT *value)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
+    domcomment *comment = impl_from_IXMLDOMComment(iface);
 
-    TRACE("(%p)->(%p)\n", This, value);
+    TRACE("%p, %p.\n", iface, value);
 
-    return node_get_content(&This->node, value);
+    return node_get_value(comment->node, value);
 }
 
-static HRESULT WINAPI domcomment_put_nodeValue(
-    IXMLDOMComment *iface,
-    VARIANT value)
+static HRESULT WINAPI domcomment_put_nodeValue(IXMLDOMComment *iface, VARIANT value)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
+    domcomment *comment = impl_from_IXMLDOMComment(iface);
 
-    TRACE("(%p)->(%s)\n", This, debugstr_variant(&value));
+    TRACE("%p, %s.\n", iface, debugstr_variant(&value));
 
-    return node_put_value(&This->node, &value);
+    return node_put_value(comment->node, &value);
 }
 
-static HRESULT WINAPI domcomment_get_nodeType(
-    IXMLDOMComment *iface,
-    DOMNodeType* domNodeType )
+static HRESULT WINAPI domcomment_get_nodeType(IXMLDOMComment *iface, DOMNodeType *type)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
-
-    TRACE("(%p)->(%p)\n", This, domNodeType);
+    TRACE("%p, %p.\n", iface, type);
 
-    *domNodeType = NODE_COMMENT;
+    *type = NODE_COMMENT;
     return S_OK;
 }
 
-static HRESULT WINAPI domcomment_get_parentNode(
-    IXMLDOMComment *iface,
-    IXMLDOMNode** parent )
+static HRESULT WINAPI domcomment_get_parentNode(IXMLDOMComment *iface, IXMLDOMNode **parent)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
+    domcomment *comment = impl_from_IXMLDOMComment(iface);
 
-    TRACE("(%p)->(%p)\n", This, parent);
+    TRACE("%p, %p.\n", iface, parent);
 
-    return node_get_parent(&This->node, parent);
+    return node_get_parent(comment->node, parent);
 }
 
-static HRESULT WINAPI domcomment_get_childNodes(
-    IXMLDOMComment *iface,
-    IXMLDOMNodeList** outList)
+static HRESULT WINAPI domcomment_get_childNodes(IXMLDOMComment *iface, IXMLDOMNodeList **list)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
+    domcomment *comment = impl_from_IXMLDOMComment(iface);
 
-    TRACE("(%p)->(%p)\n", This, outList);
+    TRACE("%p, %p.\n", iface, list);
 
-    return node_get_child_nodes(&This->node, outList);
+    return node_get_child_nodes(comment->node, list);
 }
 
-static HRESULT WINAPI domcomment_get_firstChild(
-    IXMLDOMComment *iface,
-    IXMLDOMNode** domNode)
+static HRESULT WINAPI domcomment_get_firstChild(IXMLDOMComment *iface, IXMLDOMNode **node)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
+    TRACE("%p, %p.\n", iface, node);
 
-    TRACE("(%p)->(%p)\n", This, domNode);
-
-    return return_null_node(domNode);
+    return return_null_node(node);
 }
 
-static HRESULT WINAPI domcomment_get_lastChild(
-    IXMLDOMComment *iface,
-    IXMLDOMNode** domNode)
+static HRESULT WINAPI domcomment_get_lastChild(IXMLDOMComment *iface, IXMLDOMNode **node)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
-
-    TRACE("(%p)->(%p)\n", This, domNode);
+    TRACE("%p, %p.\n", iface, node);
 
-    return return_null_node(domNode);
+    return return_null_node(node);
 }
 
-static HRESULT WINAPI domcomment_get_previousSibling(
-    IXMLDOMComment *iface,
-    IXMLDOMNode** domNode)
+static HRESULT WINAPI domcomment_get_previousSibling(IXMLDOMComment *iface, IXMLDOMNode **node)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
+    domcomment *comment = impl_from_IXMLDOMComment(iface);
 
-    TRACE("(%p)->(%p)\n", This, domNode);
+    TRACE("%p, %p.\n", iface, node);
 
-    return node_get_previous_sibling(&This->node, domNode);
+    return node_get_previous_sibling(comment->node, node);
 }
 
-static HRESULT WINAPI domcomment_get_nextSibling(
-    IXMLDOMComment *iface,
-    IXMLDOMNode** domNode)
+static HRESULT WINAPI domcomment_get_nextSibling(IXMLDOMComment *iface, IXMLDOMNode **node)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
+    domcomment *comment = impl_from_IXMLDOMComment(iface);
 
-    TRACE("(%p)->(%p)\n", This, domNode);
+    TRACE("%p, %p.\n", iface, node);
 
-    return node_get_next_sibling(&This->node, domNode);
+    return node_get_next_sibling(comment->node, node);
 }
 
-static HRESULT WINAPI domcomment_get_attributes(
-    IXMLDOMComment *iface,
-    IXMLDOMNamedNodeMap** attributeMap)
+static HRESULT WINAPI domcomment_get_attributes(IXMLDOMComment *iface, IXMLDOMNamedNodeMap **map)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
-
-    TRACE("(%p)->(%p)\n", This, attributeMap);
+    TRACE("%p, %p.\n", iface, map);
 
-    return return_null_ptr((void**)attributeMap);
+    return return_null_ptr((void **)map);
 }
 
-static HRESULT WINAPI domcomment_insertBefore(
-    IXMLDOMComment *iface,
-    IXMLDOMNode* newNode, VARIANT refChild,
-    IXMLDOMNode** outOldNode)
+static HRESULT WINAPI domcomment_insertBefore(IXMLDOMComment *iface, IXMLDOMNode *newNode,
+        VARIANT refChild, IXMLDOMNode **outOldNode)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
+    domcomment *comment = impl_from_IXMLDOMComment(iface);
 
-    FIXME("(%p)->(%p %s %p) needs test\n", This, newNode, debugstr_variant(&refChild), outOldNode);
+    FIXME("%p, %p, %s, %p needs test\n", iface, newNode, debugstr_variant(&refChild), outOldNode);
 
-    return node_insert_before(&This->node, newNode, &refChild, outOldNode);
+    return node_insert_before(comment->node, newNode, &refChild, outOldNode);
 }
 
-static HRESULT WINAPI domcomment_replaceChild(
-    IXMLDOMComment *iface,
-    IXMLDOMNode* newNode,
-    IXMLDOMNode* oldNode,
-    IXMLDOMNode** outOldNode)
+static HRESULT WINAPI domcomment_replaceChild(IXMLDOMComment *iface, IXMLDOMNode *newNode,
+        IXMLDOMNode *oldNode, IXMLDOMNode **outOldNode)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
+    domcomment *comment = impl_from_IXMLDOMComment(iface);
 
-    FIXME("(%p)->(%p %p %p) needs tests\n", This, newNode, oldNode, outOldNode);
+    FIXME("%p, %p, %p, %p needs tests\n", iface, newNode, oldNode, outOldNode);
 
-    return node_replace_child(&This->node, newNode, oldNode, outOldNode);
+    return node_replace_child(comment->node, newNode, oldNode, outOldNode);
 }
 
-static HRESULT WINAPI domcomment_removeChild(
-    IXMLDOMComment *iface,
-    IXMLDOMNode *child, IXMLDOMNode **oldChild)
+static HRESULT WINAPI domcomment_removeChild(IXMLDOMComment *iface, IXMLDOMNode *child, IXMLDOMNode **oldChild)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
-    TRACE("(%p)->(%p %p)\n", This, child, oldChild);
-    return node_remove_child(&This->node, child, oldChild);
+    domcomment *comment = impl_from_IXMLDOMComment(iface);
+
+    TRACE("%p, %p, %p.\n", iface, child, oldChild);
+
+    return node_remove_child(comment->node, child, oldChild);
 }
 
-static HRESULT WINAPI domcomment_appendChild(
-    IXMLDOMComment *iface,
-    IXMLDOMNode *child, IXMLDOMNode **outChild)
+static HRESULT WINAPI domcomment_appendChild(IXMLDOMComment *iface, IXMLDOMNode *child, IXMLDOMNode **outChild)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
-    TRACE("(%p)->(%p %p)\n", This, child, outChild);
-    return node_append_child(&This->node, child, outChild);
+    domcomment *comment = impl_from_IXMLDOMComment(iface);
+
+    TRACE("%p, %p, %p.\n", iface, child, outChild);
+
+    return node_append_child(comment->node, child, outChild);
 }
 
-static HRESULT WINAPI domcomment_hasChildNodes(
-    IXMLDOMComment *iface,
-    VARIANT_BOOL *ret)
+static HRESULT WINAPI domcomment_hasChildNodes(IXMLDOMComment *iface, VARIANT_BOOL *ret)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
-    TRACE("(%p)->(%p)\n", This, ret);
+    TRACE("%p %p.\n", iface, ret);
+
     return return_var_false(ret);
 }
 
-static HRESULT WINAPI domcomment_get_ownerDocument(
-    IXMLDOMComment   *iface,
-    IXMLDOMDocument **doc)
+static HRESULT WINAPI domcomment_get_ownerDocument(IXMLDOMComment *iface, IXMLDOMDocument **doc)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
-    TRACE("(%p)->(%p)\n", This, doc);
-    return node_get_owner_doc(&This->node, doc);
+    domcomment *comment = impl_from_IXMLDOMComment(iface);
+
+    TRACE("%p, %p.\n", iface, doc);
+
+    return node_get_owner_document(comment->node, doc);
 }
 
-static HRESULT WINAPI domcomment_cloneNode(
-    IXMLDOMComment *iface,
-    VARIANT_BOOL deep, IXMLDOMNode** outNode)
+static HRESULT WINAPI domcomment_cloneNode(IXMLDOMComment *iface, VARIANT_BOOL deep, IXMLDOMNode **node)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
-    TRACE("(%p)->(%d %p)\n", This, deep, outNode);
-    return node_clone( &This->node, deep, outNode );
+    domcomment *comment = impl_from_IXMLDOMComment(iface);
+
+    TRACE("%p, %d, %p.\n", iface, deep, node);
+
+    return node_clone(comment->node, deep, node);
 }
 
-static HRESULT WINAPI domcomment_get_nodeTypeString(
-    IXMLDOMComment *iface,
-    BSTR* p)
+static HRESULT WINAPI domcomment_get_nodeTypeString(IXMLDOMComment *iface, BSTR *p)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
-
-    TRACE("(%p)->(%p)\n", This, p);
+    TRACE("%p, %p.\n", iface, p);
 
     return return_bstr(L"comment", p);
 }
 
-static HRESULT WINAPI domcomment_get_text(
-    IXMLDOMComment *iface,
-    BSTR* p)
+static HRESULT WINAPI domcomment_get_text(IXMLDOMComment *iface, BSTR *p)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
-    TRACE("(%p)->(%p)\n", This, p);
-    return node_get_text(&This->node, p);
+    domcomment *comment = impl_from_IXMLDOMComment(iface);
+
+    TRACE("%p, %p.\n", iface, p);
+
+    return node_get_text(comment->node, p);
 }
 
-static HRESULT WINAPI domcomment_put_text(
-    IXMLDOMComment *iface,
-    BSTR p)
+static HRESULT WINAPI domcomment_put_text(IXMLDOMComment *iface, BSTR p)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
-    TRACE("(%p)->(%s)\n", This, debugstr_w(p));
-    return node_put_text( &This->node, p );
+    domcomment *comment = impl_from_IXMLDOMComment(iface);
+
+    TRACE("%p, %s.\n", iface, debugstr_w(p));
+
+    return node_put_data(comment->node, p);
 }
 
-static HRESULT WINAPI domcomment_get_specified(
-    IXMLDOMComment *iface,
-    VARIANT_BOOL* isSpecified)
+static HRESULT WINAPI domcomment_get_specified(IXMLDOMComment *iface, VARIANT_BOOL *v)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
-    FIXME("(%p)->(%p) stub!\n", This, isSpecified);
-    *isSpecified = VARIANT_TRUE;
+    FIXME("%p, %p stub!\n", iface, v);
+
+    *v = VARIANT_TRUE;
     return S_OK;
 }
 
-static HRESULT WINAPI domcomment_get_definition(
-    IXMLDOMComment *iface,
-    IXMLDOMNode** definitionNode)
+static HRESULT WINAPI domcomment_get_definition(IXMLDOMComment *iface, IXMLDOMNode **node)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
-    FIXME("(%p)->(%p)\n", This, definitionNode);
-    return E_NOTIMPL;
+    TRACE("%p, %p.\n", iface, node);
+
+    return return_null_node(node);
 }
 
-static HRESULT WINAPI domcomment_get_nodeTypedValue(
-    IXMLDOMComment *iface,
-    VARIANT* v)
+static HRESULT WINAPI domcomment_get_nodeTypedValue(IXMLDOMComment *iface, VARIANT *v)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
-    TRACE("(%p)->(%p)\n", This, v);
-    return node_get_content(&This->node, v);
+    domcomment *comment = impl_from_IXMLDOMComment(iface);
+
+    TRACE("%p, %p.\n", iface, v);
+
+    return node_get_value(comment->node, v);
 }
 
-static HRESULT WINAPI domcomment_put_nodeTypedValue(
-    IXMLDOMComment *iface,
-    VARIANT typedValue)
+static HRESULT WINAPI domcomment_put_nodeTypedValue(IXMLDOMComment *iface, VARIANT v)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
-    FIXME("(%p)->(%s)\n", This, debugstr_variant(&typedValue));
+    FIXME("%p, %s.\n", iface, debugstr_variant(&v));
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domcomment_get_dataType(
-    IXMLDOMComment *iface,
-    VARIANT* typename)
+static HRESULT WINAPI domcomment_get_dataType(IXMLDOMComment *iface, VARIANT *v)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
-    TRACE("(%p)->(%p)\n", This, typename);
-    return return_null_var( typename );
+    TRACE("%p, %p.\n", iface, v);
+
+    return return_null_var(v);
 }
 
-static HRESULT WINAPI domcomment_put_dataType(
-    IXMLDOMComment *iface,
-    BSTR p)
+static HRESULT WINAPI domcomment_put_dataType(IXMLDOMComment *iface, BSTR p)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
-
-    TRACE("(%p)->(%s)\n", This, debugstr_w(p));
+    TRACE("%p, %s.\n", iface, debugstr_w(p));
 
-    if(!p)
+    if (!p)
         return E_INVALIDARG;
 
     return E_FAIL;
 }
 
-static HRESULT WINAPI domcomment_get_xml(
-    IXMLDOMComment *iface,
-    BSTR* p)
+static HRESULT WINAPI domcomment_get_xml(IXMLDOMComment *iface, BSTR *p)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
+    domcomment *comment = impl_from_IXMLDOMComment(iface);
 
-    TRACE("(%p)->(%p)\n", This, p);
+    TRACE("%p, %p.\n", iface, p);
 
-    return node_get_xml(&This->node, FALSE, p);
+    return node_get_xml(comment->node, p);
 }
 
-static HRESULT WINAPI domcomment_transformNode(
-    IXMLDOMComment *iface,
-    IXMLDOMNode *node, BSTR *p)
+static HRESULT WINAPI domcomment_transformNode(IXMLDOMComment *iface, IXMLDOMNode *node, BSTR *p)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
-    TRACE("(%p)->(%p %p)\n", This, node, p);
-    return node_transform_node(&This->node, node, p);
+    domcomment *comment = impl_from_IXMLDOMComment(iface);
+
+    TRACE("%p, %p, %p.\n", iface, node, p);
+
+    return node_transform_node(comment->node, node, p);
 }
 
-static HRESULT WINAPI domcomment_selectNodes(
-    IXMLDOMComment *iface,
-    BSTR p, IXMLDOMNodeList** outList)
+static HRESULT WINAPI domcomment_selectNodes(IXMLDOMComment *iface, BSTR p, IXMLDOMNodeList **list)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
-    TRACE("(%p)->(%s %p)\n", This, debugstr_w(p), outList);
-    return node_select_nodes(&This->node, p, outList);
+    domcomment *comment = impl_from_IXMLDOMComment(iface);
+
+    TRACE("%p, %s, %p.\n", iface, debugstr_w(p), list);
+
+    return node_select_nodes(comment->node, p, list);
 }
 
-static HRESULT WINAPI domcomment_selectSingleNode(
-    IXMLDOMComment *iface,
-    BSTR p, IXMLDOMNode** outNode)
+static HRESULT WINAPI domcomment_selectSingleNode(IXMLDOMComment *iface, BSTR p, IXMLDOMNode **node)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
-    TRACE("(%p)->(%s %p)\n", This, debugstr_w(p), outNode);
-    return node_select_singlenode(&This->node, p, outNode);
+    domcomment *comment = impl_from_IXMLDOMComment(iface);
+
+    TRACE("%p, %s, %p.\n", iface, debugstr_w(p), node);
+
+    return node_select_singlenode(comment->node, p, node);
 }
 
-static HRESULT WINAPI domcomment_get_parsed(
-    IXMLDOMComment *iface,
-    VARIANT_BOOL* isParsed)
+static HRESULT WINAPI domcomment_get_parsed(IXMLDOMComment *iface, VARIANT_BOOL *v)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
-    FIXME("(%p)->(%p) stub!\n", This, isParsed);
-    *isParsed = VARIANT_TRUE;
+    FIXME("%p, %p stub!\n", iface, v);
+
+    *v = VARIANT_TRUE;
     return S_OK;
 }
 
-static HRESULT WINAPI domcomment_get_namespaceURI(
-    IXMLDOMComment *iface,
-    BSTR* p)
+static HRESULT WINAPI domcomment_get_namespaceURI(IXMLDOMComment *iface, BSTR *p)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
-    TRACE("(%p)->(%p)\n", This, p);
-    return node_get_namespaceURI(&This->node, p);
+    domcomment *comment = impl_from_IXMLDOMComment(iface);
+
+    TRACE("%p, %p.\n", iface, p);
+
+    return node_get_namespaceURI(comment->node, p);
 }
 
-static HRESULT WINAPI domcomment_get_prefix(
-    IXMLDOMComment *iface,
-    BSTR* prefix)
+static HRESULT WINAPI domcomment_get_prefix(IXMLDOMComment *iface, BSTR *prefix)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
-    TRACE("(%p)->(%p)\n", This, prefix);
-    return return_null_bstr( prefix );
+    TRACE("%p, %p.\n", iface, prefix);
+
+    return return_null_bstr(prefix);
 }
 
-static HRESULT WINAPI domcomment_get_baseName(
-    IXMLDOMComment *iface,
-    BSTR* name)
+static HRESULT WINAPI domcomment_get_baseName(IXMLDOMComment *iface, BSTR *name)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
-    TRACE("(%p)->(%p)\n", This, name);
-    return return_null_bstr( name );
+    TRACE("%p, %p.\n", iface, name);
+
+    return return_null_bstr(name);
 }
 
-static HRESULT WINAPI domcomment_transformNodeToObject(
-    IXMLDOMComment *iface,
-    IXMLDOMNode* domNode, VARIANT var1)
+static HRESULT WINAPI domcomment_transformNodeToObject(IXMLDOMComment *iface, IXMLDOMNode *node, VARIANT v)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
-    FIXME("(%p)->(%p %s)\n", This, domNode, debugstr_variant(&var1));
+    FIXME("%p, %p, %s.\n", iface, node, debugstr_variant(&v));
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domcomment_get_data(
-    IXMLDOMComment *iface,
-    BSTR *p)
+static HRESULT WINAPI domcomment_get_data(IXMLDOMComment *iface, BSTR *p)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
-    HRESULT hr;
-    VARIANT vRet;
-
-    TRACE("(%p)->(%p)\n", This, p);
-
-    if(!p)
-        return E_INVALIDARG;
+    domcomment *comment = impl_from_IXMLDOMComment(iface);
 
-    hr = IXMLDOMComment_get_nodeValue( iface, &vRet );
-    if(hr == S_OK)
-    {
-        *p = V_BSTR(&vRet);
-    }
+    TRACE("%p, %p.\n", iface, p);
 
-    return hr;
+    return node_get_data(comment->node, p);
 }
 
-static HRESULT WINAPI domcomment_put_data(
-    IXMLDOMComment *iface,
-    BSTR data)
+static HRESULT WINAPI domcomment_put_data(IXMLDOMComment *iface, BSTR data)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
-    TRACE("(%p)->(%s)\n", This, debugstr_w(data));
-    return node_set_content(&This->node, data);
-}
+    domcomment *comment = impl_from_IXMLDOMComment(iface);
 
-static HRESULT WINAPI domcomment_get_length(
-    IXMLDOMComment *iface,
-    LONG *len)
-{
-    domcomment *This = impl_from_IXMLDOMComment( iface );
-    HRESULT hr;
-    BSTR data;
+    TRACE("%p, %s.\n", iface, debugstr_w(data));
 
-    TRACE("(%p)->(%p)\n", This, len);
+    return node_put_data(comment->node, data);
+}
 
-    if(!len)
-        return E_INVALIDARG;
+static HRESULT WINAPI domcomment_get_length(IXMLDOMComment *iface, LONG *length)
+{
+    domcomment *comment = impl_from_IXMLDOMComment(iface);
 
-    hr = IXMLDOMComment_get_data(iface, &data);
-    if(hr == S_OK)
-    {
-        *len = SysStringLen(data);
-        SysFreeString(data);
-    }
+    TRACE("%p, %p.\n", iface, length);
 
-    return hr;
+    return node_get_data_length(comment->node, length);
 }
 
 static HRESULT WINAPI domcomment_substringData(IXMLDOMComment *iface, LONG offset, LONG count, BSTR *p)
 {
-    HRESULT hr;
-    BSTR data;
+    domcomment *comment = impl_from_IXMLDOMComment(iface);
 
     TRACE("%p, %ld, %ld, %p.\n", iface, offset, count, p);
 
-    if(!p)
-        return E_INVALIDARG;
-
-    *p = NULL;
-    if(offset < 0 || count < 0)
-        return E_INVALIDARG;
-
-    if(count == 0)
-        return S_FALSE;
-
-    hr = IXMLDOMComment_get_data(iface, &data);
-    if(hr == S_OK)
-    {
-        LONG len = SysStringLen(data);
-
-        if(offset < len)
-        {
-            if(offset + count > len)
-                *p = SysAllocString(&data[offset]);
-            else
-                *p = SysAllocStringLen(&data[offset], count);
-        }
-        else
-            hr = S_FALSE;
-
-        SysFreeString(data);
-    }
-
-    return hr;
+    return node_substring_data(comment->node, offset, count, p);
 }
 
-static HRESULT WINAPI domcomment_appendData(
-    IXMLDOMComment *iface,
-    BSTR p)
+static HRESULT WINAPI domcomment_appendData(IXMLDOMComment *iface, BSTR p)
 {
-    domcomment *This = impl_from_IXMLDOMComment( iface );
-    HRESULT hr;
-    BSTR data;
-    LONG p_len;
-
-    TRACE("(%p)->(%s)\n", This, debugstr_w(p));
-
-    /* Nothing to do if NULL or an Empty string passed in. */
-    if((p_len = SysStringLen(p)) == 0) return S_OK;
-
-    hr = IXMLDOMComment_get_data(iface, &data);
-    if(hr == S_OK)
-    {
-        LONG len = SysStringLen(data);
-        BSTR str = SysAllocStringLen(NULL, p_len + len);
-
-        memcpy(str, data, len*sizeof(WCHAR));
-        memcpy(&str[len], p, p_len*sizeof(WCHAR));
-        str[len+p_len] = 0;
+    domcomment *comment = impl_from_IXMLDOMComment(iface);
 
-        hr = IXMLDOMComment_put_data(iface, str);
+    TRACE("%p, %s.\n", iface, debugstr_w(p));
 
-        SysFreeString(str);
-        SysFreeString(data);
-    }
-
-    return hr;
+    return node_append_data(comment->node, p);
 }
 
-static HRESULT WINAPI domcomment_insertData(
-    IXMLDOMComment *iface,
-    LONG offset, BSTR p)
+static HRESULT WINAPI domcomment_insertData(IXMLDOMComment *iface, LONG offset, BSTR p)
 {
-    HRESULT hr;
-    BSTR data;
-    LONG p_len;
+    domcomment *comment = impl_from_IXMLDOMComment(iface);
 
     TRACE("%p, %ld, %s.\n", iface, offset, debugstr_w(p));
 
-    /* If have a NULL or empty string, don't do anything. */
-    if((p_len = SysStringLen(p)) == 0)
-        return S_OK;
-
-    if(offset < 0)
-    {
-        return E_INVALIDARG;
-    }
-
-    hr = IXMLDOMComment_get_data(iface, &data);
-    if(hr == S_OK)
-    {
-        LONG len = SysStringLen(data);
-        BSTR str;
-
-        if(len < offset)
-        {
-            SysFreeString(data);
-            return E_INVALIDARG;
-        }
-
-        str = SysAllocStringLen(NULL, len + p_len);
-        /* start part, supplied string and end part */
-        memcpy(str, data, offset*sizeof(WCHAR));
-        memcpy(&str[offset], p, p_len*sizeof(WCHAR));
-        memcpy(&str[offset+p_len], &data[offset], (len-offset)*sizeof(WCHAR));
-        str[len+p_len] = 0;
-
-        hr = IXMLDOMComment_put_data(iface, str);
-
-        SysFreeString(str);
-        SysFreeString(data);
-    }
-
-    return hr;
+    return node_insert_data(comment->node, offset, p);
 }
 
-static HRESULT WINAPI domcomment_deleteData(
-    IXMLDOMComment *iface,
-    LONG offset, LONG count)
+static HRESULT WINAPI domcomment_deleteData(IXMLDOMComment *iface, LONG offset, LONG count)
 {
-    HRESULT hr;
-    LONG len = -1;
-    BSTR str;
+    domcomment *comment = impl_from_IXMLDOMComment(iface);
 
     TRACE("%p, %ld, %ld.\n", iface, offset, count);
 
-    hr = IXMLDOMComment_get_length(iface, &len);
-    if(hr != S_OK) return hr;
-
-    if((offset < 0) || (offset > len) || (count < 0))
-        return E_INVALIDARG;
-
-    if(len == 0) return S_OK;
-
-    /* cutting start or end */
-    if((offset == 0) || ((count + offset) >= len))
-    {
-        if(offset == 0)
-            IXMLDOMComment_substringData(iface, count, len - count, &str);
-        else
-            IXMLDOMComment_substringData(iface, 0, offset, &str);
-        hr = IXMLDOMComment_put_data(iface, str);
-    }
-    else
-    /* cutting from the inside */
-    {
-        BSTR str_end;
-
-        IXMLDOMComment_substringData(iface, 0, offset, &str);
-        IXMLDOMComment_substringData(iface, offset + count, len - count, &str_end);
-
-        hr = IXMLDOMComment_put_data(iface, str);
-        if(hr == S_OK)
-            hr = IXMLDOMComment_appendData(iface, str_end);
-
-        SysFreeString(str_end);
-    }
-
-    SysFreeString(str);
-
-    return hr;
+    return node_delete_data(comment->node, offset, count);
 }
 
-static HRESULT WINAPI domcomment_replaceData(
-    IXMLDOMComment *iface,
-    LONG offset, LONG count, BSTR p)
+static HRESULT WINAPI domcomment_replaceData(IXMLDOMComment *iface, LONG offset, LONG count, BSTR p)
 {
-    HRESULT hr;
+    domcomment *comment = impl_from_IXMLDOMComment(iface);
 
     TRACE("%p, %ld, %ld, %s.\n", iface, offset, count, debugstr_w(p));
 
-    hr = IXMLDOMComment_deleteData(iface, offset, count);
-
-    if (hr == S_OK)
-       hr = IXMLDOMComment_insertData(iface, offset, p);
-
-    return hr;
+    return node_replace_data(comment->node, offset, count, p);
 }
 
 static const struct IXMLDOMCommentVtbl domcomment_vtbl =
@@ -807,30 +572,36 @@ static const struct IXMLDOMCommentVtbl domcomment_vtbl =
     domcomment_replaceData
 };
 
-static const tid_t domcomment_iface_tids[] = {
+static const tid_t domcomment_iface_tids[] =
+{
     IXMLDOMComment_tid,
     0
 };
 
-static dispex_static_data_t domcomment_dispex = {
+static dispex_static_data_t domcomment_dispex =
+{
     NULL,
     IXMLDOMComment_tid,
     NULL,
     domcomment_iface_tids
 };
 
-IUnknown* create_comment( xmlNodePtr comment )
+HRESULT create_comment(struct domnode *node, IUnknown **obj)
 {
-    domcomment *This;
+    domcomment *object;
+
+    *obj = NULL;
 
-    This = malloc(sizeof(*This));
-    if ( !This )
-        return NULL;
+    if (!(object = calloc(1, sizeof(*object))))
+        return E_OUTOFMEMORY;
 
-    This->IXMLDOMComment_iface.lpVtbl = &domcomment_vtbl;
-    This->ref = 1;
+    object->IXMLDOMComment_iface.lpVtbl = &domcomment_vtbl;
+    object->refcount = 1;
+    object->node = domnode_addref(node);
 
-    init_xmlnode(&This->node, comment, (IXMLDOMNode*)&This->IXMLDOMComment_iface, &domcomment_dispex);
+    init_dispex(&object->dispex, (IUnknown *)&object->IXMLDOMComment_iface, &domcomment_dispex);
 
-    return (IUnknown*)&This->IXMLDOMComment_iface;
+    *obj = (IUnknown *)&object->IXMLDOMComment_iface;
+
+    return S_OK;
 }
diff --git a/dlls/msxml3/docfrag.c b/dlls/msxml3/docfrag.c
index ab16fbe2c4d3..6f3e55704b2b 100644
--- a/dlls/msxml3/docfrag.c
+++ b/dlls/msxml3/docfrag.c
@@ -21,8 +21,6 @@
 #define COBJMACROS
 
 #include <stdarg.h>
-#include <libxml/parser.h>
-#include <libxml/xmlerror.h>
 
 #include "windef.h"
 #include "winbase.h"
@@ -36,51 +34,55 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(msxml);
 
-typedef struct _domfrag
+typedef struct _docfrag
 {
-    xmlnode node;
+    DispatchEx dispex;
     IXMLDOMDocumentFragment IXMLDOMDocumentFragment_iface;
-    LONG ref;
-} domfrag;
+    LONG refcount;
+    struct domnode *node;
+} docfrag;
 
-static const tid_t domfrag_se_tids[] = {
+static const tid_t docfrag_se_tids[] =
+{
     IXMLDOMNode_tid,
     IXMLDOMDocumentFragment_tid,
     NULL_tid
 };
 
-static inline domfrag *impl_from_IXMLDOMDocumentFragment( IXMLDOMDocumentFragment *iface )
+static inline docfrag *impl_from_IXMLDOMDocumentFragment( IXMLDOMDocumentFragment *iface )
 {
-    return CONTAINING_RECORD(iface, domfrag, IXMLDOMDocumentFragment_iface);
+    return CONTAINING_RECORD(iface, docfrag, IXMLDOMDocumentFragment_iface);
 }
 
-static HRESULT WINAPI domfrag_QueryInterface(
-    IXMLDOMDocumentFragment *iface,
-    REFIID riid,
-    void** ppvObject )
+static HRESULT WINAPI docfrag_QueryInterface(IXMLDOMDocumentFragment *iface, REFIID riid, void **obj)
 {
-    domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
-    TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppvObject);
+    docfrag *docfrag = impl_from_IXMLDOMDocumentFragment(iface);
+
+    TRACE("%p, %s, %p.\n", iface, debugstr_guid(riid), obj);
 
-    if ( IsEqualGUID( riid, &IID_IXMLDOMDocumentFragment ) ||
-         IsEqualGUID( riid, &IID_IXMLDOMNode ) ||
-         IsEqualGUID( riid, &IID_IDispatch ) ||
-         IsEqualGUID( riid, &IID_IUnknown ) )
+    if (IsEqualGUID( riid, &IID_IXMLDOMDocumentFragment) ||
+        IsEqualGUID( riid, &IID_IXMLDOMNode) ||
+        IsEqualGUID( riid, &IID_IDispatch) ||
+        IsEqualGUID( riid, &IID_IUnknown))
+    {
+        *obj = iface;
+    }
+    else if (dispex_query_interface(&docfrag->dispex, riid, obj))
     {
-        *ppvObject = iface;
+        return *obj ? S_OK : E_NOINTERFACE;
     }
-    else if(node_query_interface(&This->node, riid, ppvObject))
+    else if (node_query_interface(docfrag->node, riid, obj))
     {
-        return *ppvObject ? S_OK : E_NOINTERFACE;
+        return *obj ? S_OK : E_NOINTERFACE;
     }
-    else if(IsEqualGUID( riid, &IID_ISupportErrorInfo ))
+    else if (IsEqualGUID(riid, &IID_ISupportErrorInfo))
     {
-        return node_create_supporterrorinfo(domfrag_se_tids, ppvObject);
+        return node_create_supporterrorinfo(docfrag_se_tids, obj);
     }
     else
     {
         TRACE("Unsupported interface %s\n", debugstr_guid(riid));
-        *ppvObject = NULL;
+        *obj = NULL;
         return E_NOINTERFACE;
     }
 
@@ -88,503 +90,435 @@ static HRESULT WINAPI domfrag_QueryInterface(
     return S_OK;
 }
 
-static ULONG WINAPI domfrag_AddRef(IXMLDOMDocumentFragment *iface)
+static ULONG WINAPI docfrag_AddRef(IXMLDOMDocumentFragment *iface)
 {
-    domfrag *domfrag = impl_from_IXMLDOMDocumentFragment(iface);
-    ULONG ref = InterlockedIncrement(&domfrag->ref);
-    TRACE("%p, refcount %lu.\n", iface, ref);
-    return ref;
+    docfrag *docfrag = impl_from_IXMLDOMDocumentFragment(iface);
+    ULONG refcount = InterlockedIncrement(&docfrag->refcount);
+
+    TRACE("%p, refcount %lu.\n", iface, refcount);
+
+    return refcount;
 }
 
-static ULONG WINAPI domfrag_Release(IXMLDOMDocumentFragment *iface)
+static ULONG WINAPI docfrag_Release(IXMLDOMDocumentFragment *iface)
 {
-    domfrag *domfrag = impl_from_IXMLDOMDocumentFragment(iface);
-    ULONG ref = InterlockedDecrement(&domfrag->ref);
+    docfrag *docfrag = impl_from_IXMLDOMDocumentFragment(iface);
+    ULONG refcount = InterlockedDecrement(&docfrag->refcount);
 
-    TRACE("%p, refcount %lu.\n", iface, ref);
+    TRACE("%p, refcount %lu.\n", iface, refcount);
 
-    if (!ref)
+    if (!refcount)
     {
-        destroy_xmlnode(&domfrag->node);
-        free(domfrag);
+        domnode_release(docfrag->node);
+        free(docfrag);
     }
 
-    return ref;
+    return refcount;
 }
 
-static HRESULT WINAPI domfrag_GetTypeInfoCount(
-    IXMLDOMDocumentFragment *iface,
-    UINT* pctinfo )
+static HRESULT WINAPI docfrag_GetTypeInfoCount(IXMLDOMDocumentFragment *iface, UINT *count)
 {
-    domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
-    return IDispatchEx_GetTypeInfoCount(&This->node.dispex.IDispatchEx_iface, pctinfo);
+    docfrag *docfrag = impl_from_IXMLDOMDocumentFragment(iface);
+    return IDispatchEx_GetTypeInfoCount(&docfrag->dispex.IDispatchEx_iface, count);
 }
 
-static HRESULT WINAPI domfrag_GetTypeInfo(
-    IXMLDOMDocumentFragment *iface,
-    UINT iTInfo, LCID lcid,
-    ITypeInfo** ppTInfo )
+static HRESULT WINAPI docfrag_GetTypeInfo(IXMLDOMDocumentFragment *iface, UINT index, LCID lcid, ITypeInfo **ti)
 {
-    domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
-    return IDispatchEx_GetTypeInfo(&This->node.dispex.IDispatchEx_iface,
-        iTInfo, lcid, ppTInfo);
+    docfrag *docfrag = impl_from_IXMLDOMDocumentFragment(iface);
+    return IDispatchEx_GetTypeInfo(&docfrag->dispex.IDispatchEx_iface, index, lcid, ti);
 }
 
-static HRESULT WINAPI domfrag_GetIDsOfNames(
-    IXMLDOMDocumentFragment *iface,
-    REFIID riid, LPOLESTR* rgszNames,
-    UINT cNames, LCID lcid, DISPID* rgDispId )
+static HRESULT WINAPI docfrag_GetIDsOfNames(IXMLDOMDocumentFragment *iface, REFIID riid,
+    LPOLESTR* rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
 {
-    domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
-    return IDispatchEx_GetIDsOfNames(&This->node.dispex.IDispatchEx_iface,
+    docfrag *docfrag = impl_from_IXMLDOMDocumentFragment(iface);
+    return IDispatchEx_GetIDsOfNames(&docfrag->dispex.IDispatchEx_iface,
         riid, rgszNames, cNames, lcid, rgDispId);
 }
 
-static HRESULT WINAPI domfrag_Invoke(
-    IXMLDOMDocumentFragment *iface,
-    DISPID dispIdMember, REFIID riid, LCID lcid,
-    WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarResult,
-    EXCEPINFO* pExcepInfo, UINT* puArgErr )
+static HRESULT WINAPI docfrag_Invoke(IXMLDOMDocumentFragment *iface, DISPID dispIdMember, REFIID riid, LCID lcid,
+        WORD flags, DISPPARAMS *params, VARIANT *result, EXCEPINFO *ei, UINT *puArgErr)
 {
-    domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
-    return IDispatchEx_Invoke(&This->node.dispex.IDispatchEx_iface,
-        dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
+    docfrag *docfrag = impl_from_IXMLDOMDocumentFragment(iface);
+    return IDispatchEx_Invoke(&docfrag->dispex.IDispatchEx_iface, dispIdMember, riid, lcid, flags,
+            params, result, ei, puArgErr);
 }
 
-static HRESULT WINAPI domfrag_get_nodeName(
-    IXMLDOMDocumentFragment *iface,
-    BSTR* p )
+static HRESULT WINAPI docfrag_get_nodeName(IXMLDOMDocumentFragment *iface, BSTR *p)
 {
-    domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
-
-    TRACE("(%p)->(%p)\n", This, p);
+    TRACE("%p, %p.\n", iface, p);
 
     return return_bstr(L"#document-fragment", p);
 }
 
-static HRESULT WINAPI domfrag_get_nodeValue(
-    IXMLDOMDocumentFragment *iface,
-    VARIANT* value)
+static HRESULT WINAPI docfrag_get_nodeValue(IXMLDOMDocumentFragment *iface, VARIANT *value)
 {
-    domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
-    TRACE("(%p)->(%p)\n", This, value);
+    TRACE("%p, %p.\n", iface, value);
+
     return return_null_var(value);
 }
 
-static HRESULT WINAPI domfrag_put_nodeValue(
-    IXMLDOMDocumentFragment *iface,
-    VARIANT value)
+static HRESULT WINAPI docfrag_put_nodeValue(IXMLDOMDocumentFragment *iface, VARIANT value)
 {
-    domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
-    TRACE("(%p)->(%s)\n", This, debugstr_variant(&value));
+    TRACE("%p, %s.\n", iface, debugstr_variant(&value));
+
     return E_FAIL;
 }
 
-static HRESULT WINAPI domfrag_get_nodeType(
-    IXMLDOMDocumentFragment *iface,
-    DOMNodeType* domNodeType )
+static HRESULT WINAPI docfrag_get_nodeType(IXMLDOMDocumentFragment *iface, DOMNodeType *type)
 {
-    domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
-
-    TRACE("(%p)->(%p)\n", This, domNodeType);
+    TRACE("%p, %p.\n", iface, type);
 
-    *domNodeType = NODE_DOCUMENT_FRAGMENT;
+    *type = NODE_DOCUMENT_FRAGMENT;
     return S_OK;
 }
 
-static HRESULT WINAPI domfrag_get_parentNode(
-    IXMLDOMDocumentFragment *iface,
-    IXMLDOMNode** parent )
+static HRESULT WINAPI docfrag_get_parentNode(IXMLDOMDocumentFragment *iface, IXMLDOMNode **parent)
 {
-    domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
+    docfrag *docfrag = impl_from_IXMLDOMDocumentFragment(iface);
 
-    TRACE("(%p)->(%p)\n", This, parent);
+    TRACE("%p, %p.\n", iface, parent);
 
-    return node_get_parent(&This->node, parent);
+    return node_get_parent(docfrag->node, parent);
 }
 
-static HRESULT WINAPI domfrag_get_childNodes(
-    IXMLDOMDocumentFragment *iface,
-    IXMLDOMNodeList** outList)
+static HRESULT WINAPI docfrag_get_childNodes(IXMLDOMDocumentFragment *iface, IXMLDOMNodeList **list)
 {
-    domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
+    docfrag *docfrag = impl_from_IXMLDOMDocumentFragment(iface);
 
-    TRACE("(%p)->(%p)\n", This, outList);
+    TRACE("%p, %p.\n", iface, list);
 
-    return node_get_child_nodes(&This->node, outList);
+    return node_get_child_nodes(docfrag->node, list);
 }
 
-static HRESULT WINAPI domfrag_get_firstChild(
-    IXMLDOMDocumentFragment *iface,
-    IXMLDOMNode** domNode)
+static HRESULT WINAPI docfrag_get_firstChild(IXMLDOMDocumentFragment *iface, IXMLDOMNode **node)
 {
-    domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
+    docfrag *docfrag = impl_from_IXMLDOMDocumentFragment(iface);
 
-    TRACE("(%p)->(%p)\n", This, domNode);
+    TRACE("%p, %p.\n", iface, node);
 
-    return node_get_first_child(&This->node, domNode);
+    return node_get_first_child(docfrag->node, node);
 }
 
-static HRESULT WINAPI domfrag_get_lastChild(
-    IXMLDOMDocumentFragment *iface,
-    IXMLDOMNode** domNode)
+static HRESULT WINAPI docfrag_get_lastChild(IXMLDOMDocumentFragment *iface, IXMLDOMNode **node)
 {
-    domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
+    docfrag *docfrag = impl_from_IXMLDOMDocumentFragment(iface);
 
-    TRACE("(%p)->(%p)\n", This, domNode);
+    TRACE("%p, %p.\n", iface, node);
 
-    return node_get_last_child(&This->node, domNode);
+    return node_get_last_child(docfrag->node, node);
 }
 
-static HRESULT WINAPI domfrag_get_previousSibling(
-    IXMLDOMDocumentFragment *iface,
-    IXMLDOMNode** domNode)
+static HRESULT WINAPI docfrag_get_previousSibling(IXMLDOMDocumentFragment *iface, IXMLDOMNode **node)
 {
-    domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
+    TRACE("%p, %p.\n", iface, node);
 
-    TRACE("(%p)->(%p)\n", This, domNode);
-
-    return return_null_node(domNode);
+    return return_null_node(node);
 }
 
-static HRESULT WINAPI domfrag_get_nextSibling(
-    IXMLDOMDocumentFragment *iface,
-    IXMLDOMNode** domNode)
+static HRESULT WINAPI docfrag_get_nextSibling(IXMLDOMDocumentFragment *iface, IXMLDOMNode **node)
 {
-    domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
-
-    TRACE("(%p)->(%p)\n", This, domNode);
+    TRACE("%p, %p.\n", iface, node);
 
-    return return_null_node(domNode);
+    return return_null_node(node);
 }
 
-static HRESULT WINAPI domfrag_get_attributes(
-    IXMLDOMDocumentFragment *iface,
-    IXMLDOMNamedNodeMap** attributeMap)
+static HRESULT WINAPI docfrag_get_attributes(IXMLDOMDocumentFragment *iface, IXMLDOMNamedNodeMap **map)
 {
-    domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
-
-    TRACE("(%p)->(%p)\n", This, attributeMap);
+    TRACE("%p, %p.\n", iface, map);
 
-    return return_null_ptr((void**)attributeMap);
+    return return_null_ptr((void **)map);
 }
 
-static HRESULT WINAPI domfrag_insertBefore(
-    IXMLDOMDocumentFragment *iface,
-    IXMLDOMNode* newNode, VARIANT refChild,
-    IXMLDOMNode** outOldNode)
+static HRESULT WINAPI docfrag_insertBefore(IXMLDOMDocumentFragment *iface, IXMLDOMNode* newNode,
+        VARIANT refChild, IXMLDOMNode **outOldNode)
 {
-    domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
+    docfrag *docfrag = impl_from_IXMLDOMDocumentFragment(iface);
 
-    TRACE("(%p)->(%p %s %p)\n", This, newNode, debugstr_variant(&refChild), outOldNode);
+    TRACE("%p, %p, %s, %p.\n", iface, newNode, debugstr_variant(&refChild), outOldNode);
 
     /* TODO: test */
-    return node_insert_before(&This->node, newNode, &refChild, outOldNode);
+    return node_insert_before(docfrag->node, newNode, &refChild, outOldNode);
 }
 
-static HRESULT WINAPI domfrag_replaceChild(
-    IXMLDOMDocumentFragment *iface,
-    IXMLDOMNode* newNode,
-    IXMLDOMNode* oldNode,
-    IXMLDOMNode** outOldNode)
+static HRESULT WINAPI docfrag_replaceChild(IXMLDOMDocumentFragment *iface, IXMLDOMNode *newNode,
+        IXMLDOMNode *oldNode, IXMLDOMNode **outOldNode)
 {
-    domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
+    docfrag *docfrag = impl_from_IXMLDOMDocumentFragment(iface);
 
-    TRACE("(%p)->(%p %p %p)\n", This, newNode, oldNode, outOldNode);
+    TRACE("%p, %p, %p, %p.\n", iface, newNode, oldNode, outOldNode);
 
     /* TODO: test */
-    return node_replace_child(&This->node, newNode, oldNode, outOldNode);
+    return node_replace_child(docfrag->node, newNode, oldNode, outOldNode);
 }
 
-static HRESULT WINAPI domfrag_removeChild(
-    IXMLDOMDocumentFragment *iface,
-    IXMLDOMNode *child, IXMLDOMNode **oldChild)
+static HRESULT WINAPI docfrag_removeChild(IXMLDOMDocumentFragment *iface, IXMLDOMNode *child, IXMLDOMNode **oldChild)
 {
-    domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
-    TRACE("(%p)->(%p %p)\n", This, child, oldChild);
-    return node_remove_child(&This->node, child, oldChild);
+    docfrag *docfrag = impl_from_IXMLDOMDocumentFragment(iface);
+
+    TRACE("%p, %p, %p.\n", iface, child, oldChild);
+
+    return node_remove_child(docfrag->node, child, oldChild);
 }
 
-static HRESULT WINAPI domfrag_appendChild(
-    IXMLDOMDocumentFragment *iface,
-    IXMLDOMNode *child, IXMLDOMNode **outChild)
+static HRESULT WINAPI docfrag_appendChild(IXMLDOMDocumentFragment *iface, IXMLDOMNode *child, IXMLDOMNode **outChild)
 {
-    domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
-    TRACE("(%p)->(%p %p)\n", This, child, outChild);
-    return node_append_child(&This->node, child, outChild);
+    docfrag *docfrag = impl_from_IXMLDOMDocumentFragment(iface);
+
+    TRACE("%p, %p, %p.\n", iface, child, outChild);
+
+    return node_append_child(docfrag->node, child, outChild);
 }
 
-static HRESULT WINAPI domfrag_hasChildNodes(
-    IXMLDOMDocumentFragment *iface,
-    VARIANT_BOOL *ret)
+static HRESULT WINAPI docfrag_hasChildNodes(IXMLDOMDocumentFragment *iface, VARIANT_BOOL *ret)
 {
-    domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
-    TRACE("(%p)->(%p)\n", This, ret);
-    return node_has_childnodes(&This->node, ret);
+    docfrag *docfrag = impl_from_IXMLDOMDocumentFragment(iface);
+
+    TRACE("%p, %p.\n", iface, ret);
+
+    return node_has_childnodes(docfrag->node, ret);
 }
 
-static HRESULT WINAPI domfrag_get_ownerDocument(
-    IXMLDOMDocumentFragment *iface,
-    IXMLDOMDocument **doc)
+static HRESULT WINAPI docfrag_get_ownerDocument(IXMLDOMDocumentFragment *iface, IXMLDOMDocument **doc)
 {
-    domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
-    TRACE("(%p)->(%p)\n", This, doc);
-    return node_get_owner_doc(&This->node, doc);
+    docfrag *docfrag = impl_from_IXMLDOMDocumentFragment(iface);
+
+    TRACE("%p, %p.\n", iface, doc);
+
+    return node_get_owner_document(docfrag->node, doc);
 }
 
-static HRESULT WINAPI domfrag_cloneNode(
-    IXMLDOMDocumentFragment *iface,
-    VARIANT_BOOL deep, IXMLDOMNode** outNode)
+static HRESULT WINAPI docfrag_cloneNode(IXMLDOMDocumentFragment *iface, VARIANT_BOOL deep, IXMLDOMNode **node)
 {
-    domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
-    TRACE("(%p)->(%d %p)\n", This, deep, outNode);
-    return node_clone( &This->node, deep, outNode );
+    docfrag *docfrag = impl_from_IXMLDOMDocumentFragment(iface);
+
+    TRACE("%p, %d, %p.\n", iface, deep, node);
+
+    return node_clone(docfrag->node, deep, node);
 }
 
-static HRESULT WINAPI domfrag_get_nodeTypeString(
-    IXMLDOMDocumentFragment *iface,
-    BSTR* p)
+static HRESULT WINAPI docfrag_get_nodeTypeString(IXMLDOMDocumentFragment *iface, BSTR *p)
 {
-    domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
-
-    TRACE("(%p)->(%p)\n", This, p);
+    TRACE("%p, %p.\n", iface, p);
 
     return return_bstr(L"documentfragment", p);
 }
 
-static HRESULT WINAPI domfrag_get_text(
-    IXMLDOMDocumentFragment *iface,
-    BSTR* p)
+static HRESULT WINAPI docfrag_get_text(IXMLDOMDocumentFragment *iface, BSTR *p)
 {
-    domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
-    TRACE("(%p)->(%p)\n", This, p);
-    return node_get_text(&This->node, p);
+    docfrag *docfrag = impl_from_IXMLDOMDocumentFragment(iface);
+
+    TRACE("%p, %p.\n", iface, p);
+
+    return node_get_text(docfrag->node, p);
 }
 
-static HRESULT WINAPI domfrag_put_text(
-    IXMLDOMDocumentFragment *iface,
-    BSTR p)
+static HRESULT WINAPI docfrag_put_text(IXMLDOMDocumentFragment *iface, BSTR p)
 {
-    domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
-    TRACE("(%p)->(%s)\n", This, debugstr_w(p));
-    return node_put_text( &This->node, p );
+    docfrag *docfrag = impl_from_IXMLDOMDocumentFragment(iface);
+
+    TRACE("%p, %s.\n", iface, debugstr_w(p));
+
+    return node_put_data(docfrag->node, p);
 }
 
-static HRESULT WINAPI domfrag_get_specified(
-    IXMLDOMDocumentFragment *iface,
-    VARIANT_BOOL* isSpecified)
+static HRESULT WINAPI docfrag_get_specified(IXMLDOMDocumentFragment *iface, VARIANT_BOOL *v)
 {
-    domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
-    FIXME("(%p)->(%p) stub!\n", This, isSpecified);
-    *isSpecified = VARIANT_TRUE;
+    FIXME("%p, %p stub!\n", iface, v);
+
+    *v = VARIANT_TRUE;
     return S_OK;
 }
 
-static HRESULT WINAPI domfrag_get_definition(
-    IXMLDOMDocumentFragment *iface,
-    IXMLDOMNode** definitionNode)
+static HRESULT WINAPI docfrag_get_definition(IXMLDOMDocumentFragment *iface, IXMLDOMNode **node)
 {
-    domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
-    FIXME("(%p)->(%p)\n", This, definitionNode);
+    FIXME("%p, %p.\n", iface, node);
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domfrag_get_nodeTypedValue(
-    IXMLDOMDocumentFragment *iface,
-    VARIANT *v)
+static HRESULT WINAPI docfrag_get_nodeTypedValue(IXMLDOMDocumentFragment *iface, VARIANT *v)
 {
-    domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
-    TRACE("(%p)->(%p)\n", This, v);
+    TRACE("%p, %p.\n", iface, v);
+
     return return_null_var(v);
 }
 
-static HRESULT WINAPI domfrag_put_nodeTypedValue(
-    IXMLDOMDocumentFragment *iface,
-    VARIANT typedValue)
+static HRESULT WINAPI docfrag_put_nodeTypedValue(IXMLDOMDocumentFragment *iface, VARIANT v)
 {
-    domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
-    FIXME("(%p)->(%s)\n", This, debugstr_variant(&typedValue));
+    FIXME("%p, %s.\n", iface, debugstr_variant(&v));
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domfrag_get_dataType(
-    IXMLDOMDocumentFragment *iface,
-    VARIANT* typename)
+static HRESULT WINAPI docfrag_get_dataType(IXMLDOMDocumentFragment *iface, VARIANT *v)
 {
-    domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
-    TRACE("(%p)->(%p)\n", This, typename);
-    return return_null_var( typename );
+    TRACE("%p, %p.\n", iface, v);
+
+    return return_null_var(v);
 }
 
-static HRESULT WINAPI domfrag_put_dataType(
-    IXMLDOMDocumentFragment *iface,
-    BSTR p)
+static HRESULT WINAPI docfrag_put_dataType(IXMLDOMDocumentFragment *iface, BSTR p)
 {
-    domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
-
-    TRACE("(%p)->(%s)\n", This, debugstr_w(p));
+    TRACE("%p, %s.\n", iface, debugstr_w(p));
 
-    if(!p)
+    if (!p)
         return E_INVALIDARG;
 
     return E_FAIL;
 }
 
-static HRESULT WINAPI domfrag_get_xml(
-    IXMLDOMDocumentFragment *iface,
-    BSTR* p)
+static HRESULT WINAPI docfrag_get_xml(IXMLDOMDocumentFragment *iface, BSTR *p)
 {
-    domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
+    docfrag *docfrag = impl_from_IXMLDOMDocumentFragment(iface);
 
-    TRACE("(%p)->(%p)\n", This, p);
+    TRACE("%p, %p.\n", iface, p);
 
-    return node_get_xml(&This->node, FALSE, p);
+    return node_get_xml(docfrag->node, p);
 }
 
-static HRESULT WINAPI domfrag_transformNode(
-    IXMLDOMDocumentFragment *iface,
-    IXMLDOMNode *node, BSTR *p)
+static HRESULT WINAPI docfrag_transformNode(IXMLDOMDocumentFragment *iface, IXMLDOMNode *node, BSTR *p)
 {
-    domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
-    TRACE("(%p)->(%p %p)\n", This, node, p);
-    return node_transform_node(&This->node, node, p);
+    docfrag *docfrag = impl_from_IXMLDOMDocumentFragment(iface);
+
+    TRACE("%p, %p, %p.\n", iface, node, p);
+
+    return node_transform_node(docfrag->node, node, p);
 }
 
-static HRESULT WINAPI domfrag_selectNodes(
-    IXMLDOMDocumentFragment *iface,
-    BSTR p, IXMLDOMNodeList** outList)
+static HRESULT WINAPI docfrag_selectNodes(IXMLDOMDocumentFragment *iface, BSTR p, IXMLDOMNodeList **list)
 {
-    domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
-    TRACE("(%p)->(%s %p)\n", This, debugstr_w(p), outList);
-    return node_select_nodes(&This->node, p, outList);
+    docfrag *docfrag = impl_from_IXMLDOMDocumentFragment(iface);
+
+    TRACE("%p, %s, %p.\n", iface, debugstr_w(p), list);
+
+    return node_select_nodes(docfrag->node, p, list);
 }
 
-static HRESULT WINAPI domfrag_selectSingleNode(
-    IXMLDOMDocumentFragment *iface,
-    BSTR p, IXMLDOMNode** outNode)
+static HRESULT WINAPI docfrag_selectSingleNode(IXMLDOMDocumentFragment *iface, BSTR p, IXMLDOMNode **node)
 {
-    domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
-    TRACE("(%p)->(%s %p)\n", This, debugstr_w(p), outNode);
-    return node_select_singlenode(&This->node, p, outNode);
+    docfrag *docfrag = impl_from_IXMLDOMDocumentFragment(iface);
+
+    TRACE("%p, %s, %p.\n", iface, debugstr_w(p), node);
+
+    return node_select_singlenode(docfrag->node, p, node);
 }
 
-static HRESULT WINAPI domfrag_get_parsed(
-    IXMLDOMDocumentFragment *iface,
-    VARIANT_BOOL* isParsed)
+static HRESULT WINAPI docfrag_get_parsed(IXMLDOMDocumentFragment *iface, VARIANT_BOOL *v)
 {
-    domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
-    FIXME("(%p)->(%p) stub!\n", This, isParsed);
-    *isParsed = VARIANT_TRUE;
+    FIXME("%p, %p stub!\n", iface, v);
+
+    *v = VARIANT_TRUE;
     return S_OK;
 }
 
-static HRESULT WINAPI domfrag_get_namespaceURI(
-    IXMLDOMDocumentFragment *iface,
-    BSTR* p)
+static HRESULT WINAPI docfrag_get_namespaceURI(IXMLDOMDocumentFragment *iface, BSTR *p)
 {
-    domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
-    TRACE("(%p)->(%p)\n", This, p);
-    return node_get_namespaceURI(&This->node, p);
+    docfrag *docfrag = impl_from_IXMLDOMDocumentFragment(iface);
+
+    TRACE("%p, %p.\n", iface, p);
+
+    return node_get_namespaceURI(docfrag->node, p);
 }
 
-static HRESULT WINAPI domfrag_get_prefix(
-    IXMLDOMDocumentFragment *iface,
-    BSTR* prefix)
+static HRESULT WINAPI docfrag_get_prefix(IXMLDOMDocumentFragment *iface, BSTR *prefix)
 {
-    domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
-    TRACE("(%p)->(%p)\n", This, prefix);
-    return return_null_bstr( prefix );
+    TRACE("%p, %p.\n", iface, prefix);
+
+    return return_null_bstr(prefix);
 }
 
-static HRESULT WINAPI domfrag_get_baseName(
-    IXMLDOMDocumentFragment *iface,
-    BSTR* name)
+static HRESULT WINAPI docfrag_get_baseName(IXMLDOMDocumentFragment *iface, BSTR *name)
 {
-    domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
-    FIXME("(%p)->(%p): needs test\n", This, name);
-    return return_null_bstr( name );
+    FIXME("%p, %p: needs test\n", iface, name);
+
+    return return_null_bstr(name);
 }
 
-static HRESULT WINAPI domfrag_transformNodeToObject(
-    IXMLDOMDocumentFragment *iface,
-    IXMLDOMNode* domNode, VARIANT var1)
+static HRESULT WINAPI docfrag_transformNodeToObject(IXMLDOMDocumentFragment *iface, IXMLDOMNode *node, VARIANT var)
 {
-    domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
-    FIXME("(%p)->(%p %s)\n", This, domNode, debugstr_variant(&var1));
+    FIXME("%p, %p, %s.\n", iface, node, debugstr_variant(&var));
+
     return E_NOTIMPL;
 }
 
-static const struct IXMLDOMDocumentFragmentVtbl domfrag_vtbl =
-{
-    domfrag_QueryInterface,
-    domfrag_AddRef,
-    domfrag_Release,
-    domfrag_GetTypeInfoCount,
-    domfrag_GetTypeInfo,
-    domfrag_GetIDsOfNames,
-    domfrag_Invoke,
-    domfrag_get_nodeName,
-    domfrag_get_nodeValue,
-    domfrag_put_nodeValue,
-    domfrag_get_nodeType,
-    domfrag_get_parentNode,
-    domfrag_get_childNodes,
-    domfrag_get_firstChild,
-    domfrag_get_lastChild,
-    domfrag_get_previousSibling,
-    domfrag_get_nextSibling,
-    domfrag_get_attributes,
-    domfrag_insertBefore,
-    domfrag_replaceChild,
-    domfrag_removeChild,
-    domfrag_appendChild,
-    domfrag_hasChildNodes,
-    domfrag_get_ownerDocument,
-    domfrag_cloneNode,
-    domfrag_get_nodeTypeString,
-    domfrag_get_text,
-    domfrag_put_text,
-    domfrag_get_specified,
-    domfrag_get_definition,
-    domfrag_get_nodeTypedValue,
-    domfrag_put_nodeTypedValue,
-    domfrag_get_dataType,
-    domfrag_put_dataType,
-    domfrag_get_xml,
-    domfrag_transformNode,
-    domfrag_selectNodes,
-    domfrag_selectSingleNode,
-    domfrag_get_parsed,
-    domfrag_get_namespaceURI,
-    domfrag_get_prefix,
-    domfrag_get_baseName,
-    domfrag_transformNodeToObject
+static const struct IXMLDOMDocumentFragmentVtbl docfrag_vtbl =
+{
+    docfrag_QueryInterface,
+    docfrag_AddRef,
+    docfrag_Release,
+    docfrag_GetTypeInfoCount,
+    docfrag_GetTypeInfo,
+    docfrag_GetIDsOfNames,
+    docfrag_Invoke,
+    docfrag_get_nodeName,
+    docfrag_get_nodeValue,
+    docfrag_put_nodeValue,
+    docfrag_get_nodeType,
+    docfrag_get_parentNode,
+    docfrag_get_childNodes,
+    docfrag_get_firstChild,
+    docfrag_get_lastChild,
+    docfrag_get_previousSibling,
+    docfrag_get_nextSibling,
+    docfrag_get_attributes,
+    docfrag_insertBefore,
+    docfrag_replaceChild,
+    docfrag_removeChild,
+    docfrag_appendChild,
+    docfrag_hasChildNodes,
+    docfrag_get_ownerDocument,
+    docfrag_cloneNode,
+    docfrag_get_nodeTypeString,
+    docfrag_get_text,
+    docfrag_put_text,
+    docfrag_get_specified,
+    docfrag_get_definition,
+    docfrag_get_nodeTypedValue,
+    docfrag_put_nodeTypedValue,
+    docfrag_get_dataType,
+    docfrag_put_dataType,
+    docfrag_get_xml,
+    docfrag_transformNode,
+    docfrag_selectNodes,
+    docfrag_selectSingleNode,
+    docfrag_get_parsed,
+    docfrag_get_namespaceURI,
+    docfrag_get_prefix,
+    docfrag_get_baseName,
+    docfrag_transformNodeToObject
 };
 
-static const tid_t domfrag_iface_tids[] = {
+static const tid_t docfrag_iface_tids[] =
+{
     IXMLDOMDocumentFragment_tid,
     0
 };
 
-static dispex_static_data_t domfrag_dispex = {
+static dispex_static_data_t docfrag_dispex =
+{
     NULL,
     IXMLDOMDocumentFragment_tid,
     NULL,
-    domfrag_iface_tids
+    docfrag_iface_tids
 };
 
-IUnknown* create_doc_fragment( xmlNodePtr fragment )
+HRESULT create_doc_fragment(struct domnode *node, IUnknown **obj)
 {
-    domfrag *This;
+    docfrag *object;
 
-    This = malloc(sizeof(*This));
-    if ( !This )
-        return NULL;
+    *obj = NULL;
 
-    This->IXMLDOMDocumentFragment_iface.lpVtbl = &domfrag_vtbl;
-    This->ref = 1;
+    if (!(object = calloc(1, sizeof(*object))))
+        return E_OUTOFMEMORY;
 
-    init_xmlnode(&This->node, fragment, (IXMLDOMNode*)&This->IXMLDOMDocumentFragment_iface, &domfrag_dispex);
+    object->IXMLDOMDocumentFragment_iface.lpVtbl = &docfrag_vtbl;
+    object->refcount = 1;
+    object->node = domnode_addref(node);
 
-    return (IUnknown*)&This->IXMLDOMDocumentFragment_iface;
+    init_dispex(&object->dispex, (IUnknown *)&object->IXMLDOMDocumentFragment_iface, &docfrag_dispex);
+
+    *obj = (IUnknown *)&object->IXMLDOMDocumentFragment_iface;
+
+    return S_OK;
 }
diff --git a/dlls/msxml3/doctype.c b/dlls/msxml3/doctype.c
index 5edc928e0c07..3b8cd805aefc 100644
--- a/dlls/msxml3/doctype.c
+++ b/dlls/msxml3/doctype.c
@@ -21,8 +21,6 @@
 #define COBJMACROS
 
 #include <stdarg.h>
-#include <libxml/parser.h>
-#include <libxml/xmlerror.h>
 
 #include "windef.h"
 #include "winbase.h"
@@ -39,468 +37,399 @@ WINE_DEFAULT_DEBUG_CHANNEL(msxml);
 
 typedef struct _domdoctype
 {
-    xmlnode node;
+    DispatchEx dispex;
     IXMLDOMDocumentType IXMLDOMDocumentType_iface;
-    LONG ref;
+    LONG refcount;
+    struct domnode *node;
 } domdoctype;
 
+static const tid_t doctype_se_tids[] =
+{
+    IXMLDOMNode_tid,
+    IXMLDOMDocumentType_tid,
+    NULL_tid
+};
+
 static inline domdoctype *impl_from_IXMLDOMDocumentType( IXMLDOMDocumentType *iface )
 {
     return CONTAINING_RECORD(iface, domdoctype, IXMLDOMDocumentType_iface);
 }
 
-static HRESULT WINAPI domdoctype_QueryInterface(
-    IXMLDOMDocumentType *iface,
-    REFIID riid,
-    void** ppvObject )
+static HRESULT WINAPI domdoctype_QueryInterface(IXMLDOMDocumentType *iface, REFIID riid, void **obj)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
+    domdoctype *doctype = impl_from_IXMLDOMDocumentType(iface);
 
-    TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppvObject);
+    TRACE("%p, %s, %p.\n", iface, debugstr_guid(riid), obj);
 
-    if ( IsEqualGUID( riid, &IID_IXMLDOMDocumentType ) ||
-         IsEqualGUID( riid, &IID_IXMLDOMNode ) ||
-         IsEqualGUID( riid, &IID_IDispatch ) ||
-         IsEqualGUID( riid, &IID_IUnknown ) )
+    if (IsEqualGUID(riid, &IID_IXMLDOMDocumentType) ||
+        IsEqualGUID(riid, &IID_IXMLDOMNode) ||
+        IsEqualGUID(riid, &IID_IDispatch) ||
+        IsEqualGUID(riid, &IID_IUnknown))
     {
-        *ppvObject = &This->IXMLDOMDocumentType_iface;
+        *obj = &doctype->IXMLDOMDocumentType_iface;
     }
-    else if(node_query_interface(&This->node, riid, ppvObject))
+    else if (dispex_query_interface(&doctype->dispex, riid, obj))
     {
-        return *ppvObject ? S_OK : E_NOINTERFACE;
+        return *obj ? S_OK : E_NOINTERFACE;
+    }
+    else if (node_query_interface(doctype->node, riid, obj))
+    {
+        return *obj ? S_OK : E_NOINTERFACE;
+    }
+    else if (IsEqualGUID(riid, &IID_ISupportErrorInfo))
+    {
+        return node_create_supporterrorinfo(doctype_se_tids, obj);
     }
     else
     {
         TRACE("interface %s not implemented\n", debugstr_guid(riid));
-        *ppvObject = NULL;
+        *obj = NULL;
         return E_NOINTERFACE;
     }
 
-    IUnknown_AddRef( (IUnknown*)*ppvObject );
+    IUnknown_AddRef( (IUnknown*)*obj );
     return S_OK;
 }
 
 static ULONG WINAPI domdoctype_AddRef(IXMLDOMDocumentType *iface)
 {
     domdoctype *doctype = impl_from_IXMLDOMDocumentType(iface);
-    LONG ref = InterlockedIncrement(&doctype->ref);
-    TRACE("%p, refcount %ld.\n", iface, ref);
-    return ref;
+    LONG refcount = InterlockedIncrement(&doctype->refcount);
+
+    TRACE("%p, refcount %ld.\n", iface, refcount);
+
+    return refcount;
 }
 
 static ULONG WINAPI domdoctype_Release(IXMLDOMDocumentType *iface)
 {
     domdoctype *doctype = impl_from_IXMLDOMDocumentType(iface);
-    ULONG ref = InterlockedDecrement(&doctype->ref);
+    ULONG refcount = InterlockedDecrement(&doctype->refcount);
 
-    TRACE("%p, refcount %ld.\n", iface, ref);
+    TRACE("%p, refcount %ld.\n", iface, refcount);
 
-    if (!ref)
+    if (!refcount)
     {
-        destroy_xmlnode(&doctype->node);
+        domnode_release(doctype->node);
         free(doctype);
     }
 
-    return ref;
+    return refcount;
 }
 
-static HRESULT WINAPI domdoctype_GetTypeInfoCount(
-    IXMLDOMDocumentType *iface,
-    UINT* pctinfo )
+static HRESULT WINAPI domdoctype_GetTypeInfoCount(IXMLDOMDocumentType *iface, UINT *count)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-    return IDispatchEx_GetTypeInfoCount(&This->node.dispex.IDispatchEx_iface, pctinfo);
+    domdoctype *doctype = impl_from_IXMLDOMDocumentType(iface);
+    return IDispatchEx_GetTypeInfoCount(&doctype->dispex.IDispatchEx_iface, count);
 }
 
-static HRESULT WINAPI domdoctype_GetTypeInfo(
-    IXMLDOMDocumentType *iface,
-    UINT iTInfo, LCID lcid,
-    ITypeInfo** ppTInfo )
+static HRESULT WINAPI domdoctype_GetTypeInfo(IXMLDOMDocumentType *iface, UINT index, LCID lcid, ITypeInfo **ti)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-    return IDispatchEx_GetTypeInfo(&This->node.dispex.IDispatchEx_iface,
-        iTInfo, lcid, ppTInfo);
+    domdoctype *doctype = impl_from_IXMLDOMDocumentType(iface);
+    return IDispatchEx_GetTypeInfo(&doctype->dispex.IDispatchEx_iface, index, lcid, ti);
 }
 
-static HRESULT WINAPI domdoctype_GetIDsOfNames(
-    IXMLDOMDocumentType *iface,
-    REFIID riid, LPOLESTR* rgszNames,
-    UINT cNames, LCID lcid, DISPID* rgDispId )
+static HRESULT WINAPI domdoctype_GetIDsOfNames(IXMLDOMDocumentType *iface, REFIID riid, LPOLESTR* rgszNames,
+    UINT cNames, LCID lcid, DISPID *rgDispId)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-    return IDispatchEx_GetIDsOfNames(&This->node.dispex.IDispatchEx_iface,
+    domdoctype *doctype = impl_from_IXMLDOMDocumentType(iface);
+    return IDispatchEx_GetIDsOfNames(&doctype->dispex.IDispatchEx_iface,
         riid, rgszNames, cNames, lcid, rgDispId);
 }
 
-static HRESULT WINAPI domdoctype_Invoke(
-    IXMLDOMDocumentType *iface,
-    DISPID dispIdMember, REFIID riid, LCID lcid,
-    WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarResult,
-    EXCEPINFO* pExcepInfo, UINT* puArgErr )
+static HRESULT WINAPI domdoctype_Invoke(IXMLDOMDocumentType *iface, DISPID dispIdMember, REFIID riid, LCID lcid,
+        WORD flags, DISPPARAMS *params, VARIANT *result, EXCEPINFO *ei, UINT *puArgErr)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-    return IDispatchEx_Invoke(&This->node.dispex.IDispatchEx_iface,
-        dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
+    domdoctype *doctype = impl_from_IXMLDOMDocumentType(iface);
+    return IDispatchEx_Invoke(&doctype->dispex.IDispatchEx_iface, dispIdMember, riid, lcid, flags, params,
+            result, ei, puArgErr);
 }
 
-static HRESULT WINAPI domdoctype_get_nodeName(
-    IXMLDOMDocumentType *iface,
-    BSTR* p )
+static HRESULT WINAPI domdoctype_get_nodeName(IXMLDOMDocumentType *iface, BSTR *p)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-    TRACE("(%p)->(%p)\n", This, p);
-    return node_get_nodeName(&This->node, p);
+    domdoctype *doctype = impl_from_IXMLDOMDocumentType(iface);
+
+    TRACE("%p, %p.\n", iface, p);
+
+    return node_get_name(doctype->node, p);
 }
 
-static HRESULT WINAPI domdoctype_get_nodeValue(
-    IXMLDOMDocumentType *iface,
-    VARIANT* value)
+static HRESULT WINAPI domdoctype_get_nodeValue(IXMLDOMDocumentType *iface, VARIANT *v)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-    FIXME("(%p)->(%p): stub\n", This, value);
-    return E_NOTIMPL;
+    TRACE("%p, %p.\n", iface, v);
+
+    return return_null_var(v);
 }
 
-static HRESULT WINAPI domdoctype_put_nodeValue(
-    IXMLDOMDocumentType *iface,
-    VARIANT value)
+static HRESULT WINAPI domdoctype_put_nodeValue(IXMLDOMDocumentType *iface, VARIANT v)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-    FIXME("(%p)->(%s): stub\n", This, debugstr_variant(&value));
+    FIXME("%p, %s: stub\n", iface, debugstr_variant(&v));
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domdoctype_get_nodeType(
-    IXMLDOMDocumentType *iface,
-    DOMNodeType* domNodeType )
+static HRESULT WINAPI domdoctype_get_nodeType(IXMLDOMDocumentType *iface, DOMNodeType *type)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
+    TRACE("%p, %p.\n", iface, type);
 
-    TRACE("(%p)->(%p)\n", This, domNodeType);
-
-    *domNodeType = NODE_DOCUMENT_TYPE;
+    *type = NODE_DOCUMENT_TYPE;
     return S_OK;
 }
 
-static HRESULT WINAPI domdoctype_get_parentNode(
-    IXMLDOMDocumentType *iface,
-    IXMLDOMNode** parent )
+static HRESULT WINAPI domdoctype_get_parentNode(IXMLDOMDocumentType *iface, IXMLDOMNode **parent)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-    FIXME("(%p)->(%p): stub\n", This, parent);
-    return E_NOTIMPL;
+    domdoctype *doctype = impl_from_IXMLDOMDocumentType(iface);
+
+    TRACE("%p, %p.\n", iface, parent);
+
+    return node_get_parent(doctype->node, parent);
 }
 
-static HRESULT WINAPI domdoctype_get_childNodes(
-    IXMLDOMDocumentType *iface,
-    IXMLDOMNodeList** outList)
+static HRESULT WINAPI domdoctype_get_childNodes(IXMLDOMDocumentType *iface, IXMLDOMNodeList **list)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-    FIXME("(%p)->(%p): stub\n", This, outList);
+    FIXME("%p, %p: stub\n", iface, list);
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domdoctype_get_firstChild(
-    IXMLDOMDocumentType *iface,
-    IXMLDOMNode** domNode)
+static HRESULT WINAPI domdoctype_get_firstChild(IXMLDOMDocumentType *iface, IXMLDOMNode **node)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-    FIXME("(%p)->(%p): stub\n", This, domNode);
+    FIXME("%p, %p: stub\n", iface, node);
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domdoctype_get_lastChild(
-    IXMLDOMDocumentType *iface,
-    IXMLDOMNode** domNode)
+static HRESULT WINAPI domdoctype_get_lastChild(IXMLDOMDocumentType *iface, IXMLDOMNode **node)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-    FIXME("(%p)->(%p): stub\n", This, domNode);
+    FIXME("%p, %p: stub\n", iface, node);
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domdoctype_get_previousSibling(
-    IXMLDOMDocumentType *iface,
-    IXMLDOMNode** domNode)
+static HRESULT WINAPI domdoctype_get_previousSibling(IXMLDOMDocumentType *iface, IXMLDOMNode **node)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-    FIXME("(%p)->(%p): stub\n", This, domNode);
+    FIXME("%p, %p: stub\n", iface, node);
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domdoctype_get_nextSibling(
-    IXMLDOMDocumentType *iface,
-    IXMLDOMNode** domNode)
+static HRESULT WINAPI domdoctype_get_nextSibling(IXMLDOMDocumentType *iface, IXMLDOMNode **node)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-    FIXME("(%p)->(%p): stub\n", This, domNode);
+    FIXME("%p, %p: stub\n", iface, node);
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domdoctype_get_attributes(
-    IXMLDOMDocumentType *iface,
-    IXMLDOMNamedNodeMap** attributeMap)
+static HRESULT WINAPI domdoctype_get_attributes(IXMLDOMDocumentType *iface, IXMLDOMNamedNodeMap **map)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-    FIXME("(%p)->(%p): stub\n", This, attributeMap);
+    FIXME("%p, %p: stub\n", iface, map);
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domdoctype_insertBefore(
-    IXMLDOMDocumentType *iface,
-    IXMLDOMNode* newNode, VARIANT refChild,
-    IXMLDOMNode** outOldNode)
+static HRESULT WINAPI domdoctype_insertBefore(IXMLDOMDocumentType *iface, IXMLDOMNode *node,
+        VARIANT refChild, IXMLDOMNode **out_node)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-
-    FIXME("(%p)->(%p %s %p): stub\n", This, newNode, debugstr_variant(&refChild), outOldNode);
+    FIXME("%p, %p, %s, %p: stub\n", iface, node, debugstr_variant(&refChild), out_node);
 
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domdoctype_replaceChild(
-    IXMLDOMDocumentType *iface,
-    IXMLDOMNode* newNode,
-    IXMLDOMNode* oldNode,
-    IXMLDOMNode** outOldNode)
+static HRESULT WINAPI domdoctype_replaceChild(IXMLDOMDocumentType *iface, IXMLDOMNode *newNode,
+        IXMLDOMNode *oldNode, IXMLDOMNode **outOldNode)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-
-    FIXME("(%p)->(%p %p %p): stub\n", This, newNode, oldNode, outOldNode);
+    FIXME("%p, %p, %p, %p: stub\n", iface, newNode, oldNode, outOldNode);
 
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domdoctype_removeChild(
-    IXMLDOMDocumentType *iface,
-    IXMLDOMNode* domNode, IXMLDOMNode** oldNode)
+static HRESULT WINAPI domdoctype_removeChild(IXMLDOMDocumentType *iface, IXMLDOMNode *node,
+        IXMLDOMNode **oldNode)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-    FIXME("(%p)->(%p %p): stub\n", This, domNode, oldNode);
+    FIXME("%p, %p, %p: stub\n", iface, node, oldNode);
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domdoctype_appendChild(
-    IXMLDOMDocumentType *iface,
-    IXMLDOMNode* newNode, IXMLDOMNode** outNewNode)
+static HRESULT WINAPI domdoctype_appendChild(IXMLDOMDocumentType *iface, IXMLDOMNode *newNode,
+        IXMLDOMNode **outNewNode)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-    FIXME("(%p)->(%p %p): stub\n", This, newNode, outNewNode);
+    FIXME("%p, %p, %p: stub\n", iface, newNode, outNewNode);
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domdoctype_hasChildNodes(
-    IXMLDOMDocumentType *iface,
-    VARIANT_BOOL* pbool)
+static HRESULT WINAPI domdoctype_hasChildNodes(IXMLDOMDocumentType *iface, VARIANT_BOOL *v)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-    FIXME("(%p)->(%p): stub\n", This, pbool);
+    FIXME("%p, %p: stub\n", iface, v);
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domdoctype_get_ownerDocument(
-    IXMLDOMDocumentType *iface,
-    IXMLDOMDocument** domDocument)
+static HRESULT WINAPI domdoctype_get_ownerDocument(IXMLDOMDocumentType *iface, IXMLDOMDocument **doc)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-    FIXME("(%p)->(%p): stub\n", This, domDocument);
-    return E_NOTIMPL;
+    domdoctype *doctype = impl_from_IXMLDOMDocumentType(iface);
+
+    TRACE("%p, %p.\n", iface, doc);
+
+    return node_get_owner_document(doctype->node, doc);
 }
 
-static HRESULT WINAPI domdoctype_cloneNode(
-    IXMLDOMDocumentType *iface,
-    VARIANT_BOOL deep, IXMLDOMNode** outNode)
+static HRESULT WINAPI domdoctype_cloneNode(IXMLDOMDocumentType *iface, VARIANT_BOOL deep, IXMLDOMNode **node)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-    FIXME("(%p)->(%d %p): stub\n", This, deep, outNode);
+    FIXME("%p, %d, %p: stub\n", iface, deep, node);
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domdoctype_get_nodeTypeString(
-    IXMLDOMDocumentType *iface,
-    BSTR* p)
+static HRESULT WINAPI domdoctype_get_nodeTypeString(IXMLDOMDocumentType *iface, BSTR *p)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-    FIXME("(%p)->(%p): stub\n", This, p);
-    return E_NOTIMPL;
+    TRACE("%p, %p.\n", iface, p);
+
+    return return_bstr(L"documenttype", p);
 }
 
-static HRESULT WINAPI domdoctype_get_text(
-    IXMLDOMDocumentType *iface,
-    BSTR* p)
+static HRESULT WINAPI domdoctype_get_text(IXMLDOMDocumentType *iface, BSTR *p)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-    FIXME("(%p)->(%p): stub\n", This, p);
-    return E_NOTIMPL;
+    TRACE("%p, %p.\n", iface, p);
+
+    return return_bstr(L"", p);
 }
 
-static HRESULT WINAPI domdoctype_put_text(
-    IXMLDOMDocumentType *iface,
-    BSTR p)
+static HRESULT WINAPI domdoctype_put_text(IXMLDOMDocumentType *iface, BSTR p)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-    FIXME("(%p)->(%s): stub\n", This, debugstr_w(p));
+    FIXME("%p, %s: stub\n", iface, debugstr_w(p));
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domdoctype_get_specified(
-    IXMLDOMDocumentType *iface,
-    VARIANT_BOOL* isSpecified)
+static HRESULT WINAPI domdoctype_get_specified(IXMLDOMDocumentType *iface, VARIANT_BOOL *v)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-    FIXME("(%p)->(%p): stub\n", This, isSpecified);
+    FIXME("%p, %p: stub\n", iface, v);
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domdoctype_get_definition(
-    IXMLDOMDocumentType *iface,
-    IXMLDOMNode** definitionNode)
+static HRESULT WINAPI domdoctype_get_definition(IXMLDOMDocumentType *iface, IXMLDOMNode **node)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-    FIXME("(%p)->(%p)\n", This, definitionNode);
+    FIXME("%p, %p\n", iface, node);
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domdoctype_get_nodeTypedValue(
-    IXMLDOMDocumentType *iface,
-    VARIANT* v)
+static HRESULT WINAPI domdoctype_get_nodeTypedValue(IXMLDOMDocumentType *iface, VARIANT *v)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-    TRACE("(%p)->(%p)\n", This, v);
+    TRACE("%p, %p.\n", iface, v);
+
     return return_null_var(v);
 }
 
-static HRESULT WINAPI domdoctype_put_nodeTypedValue(
-    IXMLDOMDocumentType *iface,
-    VARIANT value)
+static HRESULT WINAPI domdoctype_put_nodeTypedValue(IXMLDOMDocumentType *iface, VARIANT value)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-    FIXME("(%p)->(%s): stub\n", This, debugstr_variant(&value));
+    FIXME("%p, %s: stub\n", iface, debugstr_variant(&value));
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domdoctype_get_dataType(
-    IXMLDOMDocumentType *iface,
-    VARIANT* typename)
+static HRESULT WINAPI domdoctype_get_dataType(IXMLDOMDocumentType *iface, VARIANT *v)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-    FIXME("(%p)->(%p): stub\n", This, typename);
+    FIXME("%p, %p: stub\n", iface, v);
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domdoctype_put_dataType(
-    IXMLDOMDocumentType *iface,
-    BSTR p)
+static HRESULT WINAPI domdoctype_put_dataType(IXMLDOMDocumentType *iface, BSTR p)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-    FIXME("(%p)->(%s): stub\n", This, debugstr_w(p));
+    FIXME("%p, %s: stub\n", iface, debugstr_w(p));
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domdoctype_get_xml(
-    IXMLDOMDocumentType *iface,
-    BSTR* p)
+static HRESULT WINAPI domdoctype_get_xml(IXMLDOMDocumentType *iface, BSTR *p)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-    FIXME("(%p)->(%p): stub\n", This, p);
-    return E_NOTIMPL;
+    domdoctype *doctype = impl_from_IXMLDOMDocumentType(iface);
+
+    TRACE("%p, %p.\n", iface, p);
+
+    return node_get_xml(doctype->node, p);
 }
 
-static HRESULT WINAPI domdoctype_transformNode(
-    IXMLDOMDocumentType *iface,
-    IXMLDOMNode* domNode, BSTR* p)
+static HRESULT WINAPI domdoctype_transformNode(IXMLDOMDocumentType *iface, IXMLDOMNode *node, BSTR *p)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-    FIXME("(%p)->(%p %p): stub\n", This, domNode, p);
+    FIXME("%p, %p, %p: stub\n", iface, node, p);
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domdoctype_selectNodes(
-    IXMLDOMDocumentType *iface,
-    BSTR p, IXMLDOMNodeList** outList)
+static HRESULT WINAPI domdoctype_selectNodes(IXMLDOMDocumentType *iface, BSTR p, IXMLDOMNodeList **list)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-    FIXME("(%p)->(%s %p): stub\n", This, debugstr_w(p), outList);
+    FIXME("%p, %s, %p: stub\n", iface, debugstr_w(p), list);
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domdoctype_selectSingleNode(
-    IXMLDOMDocumentType *iface,
-    BSTR p, IXMLDOMNode** outNode)
+static HRESULT WINAPI domdoctype_selectSingleNode(IXMLDOMDocumentType *iface, BSTR p, IXMLDOMNode **node)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-    FIXME("(%p)->(%s %p): stub\n", This, debugstr_w(p), outNode);
+    FIXME("%p, %s, %p: stub\n", iface, debugstr_w(p), node);
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domdoctype_get_parsed(
-    IXMLDOMDocumentType *iface,
-    VARIANT_BOOL* isParsed)
+static HRESULT WINAPI domdoctype_get_parsed(IXMLDOMDocumentType *iface, VARIANT_BOOL *v)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-    FIXME("(%p)->(%p): stub\n", This, isParsed);
+    FIXME("%p, %p: stub\n", iface, v);
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domdoctype_get_namespaceURI(
-    IXMLDOMDocumentType *iface,
-    BSTR* p)
+static HRESULT WINAPI domdoctype_get_namespaceURI(IXMLDOMDocumentType *iface, BSTR *p)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-    FIXME("(%p)->(%p): stub\n", This, p);
+    FIXME("%p, %p: stub\n", iface, p);
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domdoctype_get_prefix(
-    IXMLDOMDocumentType *iface,
-    BSTR* prefix)
+static HRESULT WINAPI domdoctype_get_prefix(IXMLDOMDocumentType *iface, BSTR *prefix)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-    FIXME("(%p)->(%p): stub\n", This, prefix);
+    FIXME("%p, %p: stub\n", iface, prefix);
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domdoctype_get_baseName(
-    IXMLDOMDocumentType *iface,
-    BSTR* name)
+static HRESULT WINAPI domdoctype_get_baseName(IXMLDOMDocumentType *iface, BSTR *name)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-    FIXME("(%p)->(%p): stub\n", This, name);
+    FIXME("%p, %p: stub\n", iface, name);
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domdoctype_transformNodeToObject(
-    IXMLDOMDocumentType *iface,
-    IXMLDOMNode* domNode, VARIANT var1)
+static HRESULT WINAPI domdoctype_transformNodeToObject(IXMLDOMDocumentType *iface, IXMLDOMNode *node, VARIANT var1)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-    FIXME("(%p)->(%p %s): stub\n", This, domNode, debugstr_variant(&var1));
+    FIXME("%p, %p, %s: stub\n", iface, node, debugstr_variant(&var1));
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domdoctype_get_name(
-    IXMLDOMDocumentType *iface,
-    BSTR *p)
+static HRESULT WINAPI domdoctype_get_name(IXMLDOMDocumentType *iface, BSTR *p)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-    TRACE("(%p)->(%p)\n", This, p);
-    return node_get_nodeName(&This->node, p);
+    domdoctype *doctype = impl_from_IXMLDOMDocumentType(iface);
+
+    TRACE("%p, %p.\n", iface, p);
+
+    return node_get_name(doctype->node, p);
 }
 
-static HRESULT WINAPI domdoctype_get_entities(
-    IXMLDOMDocumentType *iface,
-    IXMLDOMNamedNodeMap **entityMap)
+static HRESULT WINAPI domdoctype_get_entities(IXMLDOMDocumentType *iface, IXMLDOMNamedNodeMap **entities)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-    FIXME("(%p)->(%p): stub\n", This, entityMap);
+    FIXME("%p, %p: stub\n", iface, entities);
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domdoctype_get_notations(
-    IXMLDOMDocumentType *iface,
-    IXMLDOMNamedNodeMap **notationMap)
+static HRESULT WINAPI domdoctype_get_notations(IXMLDOMDocumentType *iface, IXMLDOMNamedNodeMap **notations)
 {
-    domdoctype *This = impl_from_IXMLDOMDocumentType( iface );
-    FIXME("(%p)->(%p): stub\n", This, notationMap);
+    FIXME("%p, %p: stub\n", iface, notations);
+
     return E_NOTIMPL;
 }
 
@@ -554,31 +483,36 @@ static const struct IXMLDOMDocumentTypeVtbl domdoctype_vtbl =
     domdoctype_get_notations
 };
 
-static const tid_t domdoctype_iface_tids[] = {
+static const tid_t domdoctype_iface_tids[] =
+{
     IXMLDOMDocumentType_tid,
     0
 };
 
-static dispex_static_data_t domdoctype_dispex = {
+static dispex_static_data_t domdoctype_dispex =
+{
     NULL,
     IXMLDOMDocumentType_tid,
     NULL,
     domdoctype_iface_tids
 };
 
-IUnknown* create_doc_type( xmlNodePtr doctype )
+HRESULT create_doc_type(struct domnode *node, IUnknown **obj)
 {
-    domdoctype *This;
+    domdoctype *object;
+
+    *obj = NULL;
 
-    This = malloc(sizeof(*This));
-    if ( !This )
-        return NULL;
+    if (!(object = calloc(1, sizeof(*object))))
+        return E_OUTOFMEMORY;
 
-    This->IXMLDOMDocumentType_iface.lpVtbl = &domdoctype_vtbl;
-    This->ref = 1;
+    object->IXMLDOMDocumentType_iface.lpVtbl = &domdoctype_vtbl;
+    object->refcount = 1;
+    object->node = domnode_addref(node);
 
-    init_xmlnode(&This->node, doctype, (IXMLDOMNode*)&This->IXMLDOMDocumentType_iface,
-            &domdoctype_dispex);
+    init_dispex(&object->dispex, (IUnknown *)&object->IXMLDOMDocumentType_iface, &domdoctype_dispex);
 
-    return (IUnknown*)&This->IXMLDOMDocumentType_iface;
+    *obj = (IUnknown *)&object->IXMLDOMDocumentType_iface;
+
+    return S_OK;
 }
diff --git a/dlls/msxml3/domdoc.c b/dlls/msxml3/domdoc.c
index 505ac496eed0..0011e6d1f793 100644
--- a/dlls/msxml3/domdoc.c
+++ b/dlls/msxml3/domdoc.c
@@ -24,11 +24,7 @@
 #include <stdarg.h>
 #include <assert.h>
 #include <libxml/parser.h>
-#include <libxml/xmlerror.h>
 #include <libxml/xpathInternals.h>
-# include <libxml/xmlsave.h>
-#include <libxml/SAX2.h>
-#include <libxml/parserInternals.h>
 
 #include "windef.h"
 #include "winbase.h"
@@ -49,23 +45,6 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(msxml);
 
-/* Anything that passes the test_get_ownerDocument()
- * tests can go here (data shared between all instances).
- * We need to preserve this when reloading a document,
- * and also need access to it from the libxml backend. */
-typedef struct {
-    LONG refs;
-    MSXML_VERSION version;
-    VARIANT_BOOL preserving;
-    VARIANT_BOOL validating;
-    IXMLDOMSchemaCollection2* schemaCache;
-    struct list selectNsList;
-    xmlChar const* selectNsStr;
-    LONG selectNsStr_len;
-    BOOL XPath;
-    IUri *uri;
-} domdoc_properties;
-
 typedef struct ConnectionPoint ConnectionPoint;
 typedef struct domdoc domdoc;
 
@@ -96,18 +75,19 @@ typedef enum {
 
 struct domdoc
 {
-    xmlnode node;
+    DispatchEx dispex;
     IXMLDOMDocument3          IXMLDOMDocument3_iface;
     IPersistStreamInit        IPersistStreamInit_iface;
     IObjectWithSite           IObjectWithSite_iface;
     IObjectSafety             IObjectSafety_iface;
     IConnectionPointContainer IConnectionPointContainer_iface;
-    LONG ref;
+    LONG refcount;
     VARIANT_BOOL async;
     VARIANT_BOOL resolving;
-    domdoc_properties* properties;
     HRESULT error;
 
+    struct domnode *node;
+
     /* IObjectWithSite */
     IUnknown *site;
     IUri *base_uri;
@@ -158,76 +138,13 @@ static inline ConnectionPoint *impl_from_IConnectionPoint(IConnectionPoint *ifac
     return CONTAINING_RECORD(iface, ConnectionPoint, IConnectionPoint_iface);
 }
 
-/*
-  In native windows, the whole lifetime management of XMLDOMNodes is
-  managed automatically using reference counts. Wine emulates that by
-  maintaining a reference count to the document that is increased for
-  each IXMLDOMNode pointer passed out for this document. If all these
-  pointers are gone, the document is unreachable and gets freed, that
-  is, all nodes in the tree of the document get freed.
-
-  You are able to create nodes that are associated to a document (in
-  fact, in msxml's XMLDOM model, all nodes are associated to a document),
-  but not in the tree of that document, for example using the createFoo
-  functions from IXMLDOMDocument. These nodes do not get cleaned up
-  by libxml, so we have to do it ourselves.
-
-  To catch these nodes, a list of "orphan nodes" is introduced.
-  It contains pointers to all roots of node trees that are
-  associated with the document without being part of the document
-  tree. All nodes with parent==NULL (except for the document root nodes)
-  should be in the orphan node list of their document. All orphan nodes
-  get freed together with the document itself.
- */
-
-typedef struct _xmldoc_priv {
-    LONG refs;
-    struct list orphans;
-    domdoc_properties* properties;
-} xmldoc_priv;
-
-typedef struct _orphan_entry {
-    struct list entry;
-    xmlNode * node;
-} orphan_entry;
-
-typedef struct _select_ns_entry {
-    struct list entry;
-    xmlChar const* prefix;
-    xmlChar prefix_end;
-    xmlChar const* href;
-    xmlChar href_end;
-} select_ns_entry;
-
-static inline xmldoc_priv * priv_from_xmlDocPtr(const xmlDocPtr doc)
-{
-    return doc->_private;
-}
-
-static inline domdoc_properties * properties_from_xmlDocPtr(xmlDocPtr doc)
-{
-    return priv_from_xmlDocPtr(doc)->properties;
-}
-
-BOOL is_xpathmode(const xmlDocPtr doc)
-{
-    return properties_from_xmlDocPtr(doc)->XPath;
-}
-
-void set_xpathmode(xmlDocPtr doc, BOOL xpath)
-{
-    properties_from_xmlDocPtr(doc)->XPath = xpath;
-}
-
-int registerNamespaces(xmlXPathContextPtr ctxt)
+int registerNamespaces(struct domnode *node, xmlXPathContextPtr ctxt)
 {
-    int n = 0;
+    struct domnode *doc = node->owner ? node->owner : node;
     const select_ns_entry* ns = NULL;
-    const struct list* pNsList = &properties_from_xmlDocPtr(ctxt->doc)->selectNsList;
-
-    TRACE("(%p)\n", ctxt);
+    int n = 0;
 
-    LIST_FOR_EACH_ENTRY( ns, pNsList, select_ns_entry, entry )
+    LIST_FOR_EACH_ENTRY( ns, &doc->properties->selectNsList, select_ns_entry, entry )
     {
         xmlXPathRegisterNs(ctxt, ns->prefix, ns->href);
         ++n;
@@ -236,7 +153,7 @@ int registerNamespaces(xmlXPathContextPtr ctxt)
     return n;
 }
 
-static inline void clear_selectNsList(struct list* pNsList)
+void domdoc_properties_clear_selection_namespaces(struct list *pNsList)
 {
     select_ns_entry *ns, *ns2;
     LIST_FOR_EACH_ENTRY_SAFE( ns, ns2, pNsList, select_ns_entry, entry )
@@ -246,469 +163,28 @@ static inline void clear_selectNsList(struct list* pNsList)
     list_init(pNsList);
 }
 
-static xmldoc_priv * create_priv(void)
-{
-    xmldoc_priv *priv;
-    priv = malloc(sizeof(*priv));
-
-    if (priv)
-    {
-        priv->refs = 0;
-        list_init( &priv->orphans );
-        priv->properties = NULL;
-    }
-
-    return priv;
-}
-
-static domdoc_properties *create_properties(MSXML_VERSION version)
+static void release_namespaces(domdoc *doc)
 {
-    domdoc_properties *properties = malloc(sizeof(domdoc_properties));
-
-    properties->refs = 1;
-    list_init(&properties->selectNsList);
-    properties->preserving = VARIANT_FALSE;
-    properties->validating = VARIANT_TRUE;
-    properties->schemaCache = NULL;
-    properties->selectNsStr = calloc(1, sizeof(xmlChar));
-    properties->selectNsStr_len = 0;
-
-    /* properties that are dependent on object versions */
-    properties->version = version;
-    properties->XPath = (version == MSXML4 || version == MSXML6);
-
-    /* document uri */
-    properties->uri = NULL;
-
-    return properties;
-}
-
-static domdoc_properties* copy_properties(domdoc_properties const* properties)
-{
-    domdoc_properties* pcopy = malloc(sizeof(domdoc_properties));
-    select_ns_entry const* ns = NULL;
-    select_ns_entry* new_ns = NULL;
-    int len = (properties->selectNsStr_len+1)*sizeof(xmlChar);
-    ptrdiff_t offset;
-
-    if (pcopy)
+    if (doc->namespaces)
     {
-        pcopy->refs = 1;
-        pcopy->version = properties->version;
-        pcopy->preserving = properties->preserving;
-        pcopy->validating = properties->validating;
-        pcopy->schemaCache = properties->schemaCache;
-        if (pcopy->schemaCache)
-            IXMLDOMSchemaCollection2_AddRef(pcopy->schemaCache);
-        pcopy->XPath = properties->XPath;
-        pcopy->selectNsStr_len = properties->selectNsStr_len;
-        list_init( &pcopy->selectNsList );
-        pcopy->selectNsStr = malloc(len);
-        memcpy((xmlChar*)pcopy->selectNsStr, properties->selectNsStr, len);
-        offset = pcopy->selectNsStr - properties->selectNsStr;
-
-        LIST_FOR_EACH_ENTRY( ns, (&properties->selectNsList), select_ns_entry, entry )
-        {
-            new_ns = malloc(sizeof(select_ns_entry));
-            memcpy(new_ns, ns, sizeof(select_ns_entry));
-            new_ns->href += offset;
-            new_ns->prefix += offset;
-            list_add_tail(&pcopy->selectNsList, &new_ns->entry);
-        }
-
-        pcopy->uri = properties->uri;
-        if (pcopy->uri)
-            IUri_AddRef(pcopy->uri);
+        IXMLDOMSchemaCollection2_Release(doc->namespaces);
+        doc->namespaces = NULL;
     }
-
-    return pcopy;
-}
-
-static domdoc_properties * properties_add_ref(domdoc_properties *properties)
-{
-    LONG ref;
-
-    if (!properties) return NULL;
-
-    ref = InterlockedIncrement(&properties->refs);
-    TRACE("%p, %ld.\n", properties, ref);
-    return properties;
 }
 
-static void properties_release(domdoc_properties *properties)
+MSXML_VERSION domdoc_version(const struct domnode *doc)
 {
-    LONG ref;
-
-    if (!properties) return;
-
-    ref = InterlockedDecrement(&properties->refs);
-
-    TRACE("%p, %ld.\n", properties, ref);
-
-    if (ref < 0)
-        WARN("negative refcount, expect troubles\n");
-
-    if (ref == 0)
-    {
-        if (properties->schemaCache)
-            IXMLDOMSchemaCollection2_Release(properties->schemaCache);
-        clear_selectNsList(&properties->selectNsList);
-        free((xmlChar*)properties->selectNsStr);
-        if (properties->uri)
-            IUri_Release(properties->uri);
-        free(properties);
-    }
+    assert(doc->type == NODE_DOCUMENT);
+    return doc->properties->version;
 }
 
-static void release_namespaces(domdoc *This)
+static void attach_doc_node(domdoc *doc, struct domnode *node)
 {
-    if (This->namespaces)
-    {
-        IXMLDOMSchemaCollection2_Release(This->namespaces);
-        This->namespaces = NULL;
-    }
-}
+    release_namespaces(doc);
 
-/* links a "<?xml" node as a first child */
-void xmldoc_link_xmldecl(xmlDocPtr doc, xmlNodePtr node)
-{
-    assert(doc != NULL);
-    if (doc->standalone != -1) xmlAddPrevSibling( doc->children, node );
-}
-
-/* unlinks a first "<?xml" child if it was created */
-xmlNodePtr xmldoc_unlink_xmldecl(xmlDocPtr doc)
-{
-    static const xmlChar xmlA[] = "xml";
-    xmlNodePtr node, first_child;
-
-    assert(doc != NULL);
-
-    /* xml declaration node could be created automatically after parsing or added
-       to a tree later */
-    first_child = doc->children;
-    if (first_child && first_child->type == XML_PI_NODE && xmlStrEqual(first_child->name, xmlA))
-    {
-        node = first_child;
-        xmlUnlinkNode( node );
-    }
-    else
-        node = NULL;
-
-    return node;
-}
-
-MSXML_VERSION xmldoc_version(xmlDocPtr doc)
-{
-    return properties_from_xmlDocPtr(doc)->version;
-}
-
-BOOL is_preserving_whitespace(xmlNodePtr node)
-{
-    domdoc_properties* properties = NULL;
-    /* during parsing the xmlDoc._private stuff is not there */
-    if (priv_from_xmlDocPtr(node->doc))
-        properties = properties_from_xmlDocPtr(node->doc);
-    return ((properties && properties->preserving == VARIANT_TRUE) ||
-            xmlNodeGetSpacePreserve(node) == 1);
-}
-
-static inline BOOL strn_isspace(xmlChar const* str, int len)
-{
-    for (; str && len > 0 && *str; ++str, --len)
-        if (!isspace(*str))
-            break;
-
-    return len == 0;
-}
-
-static void sax_characters(void *ctx, const xmlChar *ch, int len)
-{
-    xmlParserCtxtPtr ctxt;
-    const domdoc *This;
-
-    ctxt = (xmlParserCtxtPtr) ctx;
-    This = (const domdoc*) ctxt->_private;
-
-    if (ctxt->node)
-    {
-        xmlChar cur = *(ctxt->input->cur);
-
-        /* Characters are reported with multiple calls, for example each charref is reported with a separate
-           call and then parser appends it to a single text node or creates a new node if not created.
-           It's not possible to tell if it's ignorable data or not just looking at data itself cause it could be
-           space chars that separate charrefs or similar case. We only need to skip leading and trailing spaces,
-           or whole node if it has nothing but space chars, so to detect leading space node->last is checked that
-           contains text node pointer if already created, trailing spaces are detected directly looking at parser input
-           for next '<' opening bracket - similar logic is used by libxml2 itself. Basically 'cur' == '<' means the last
-           chunk of char data, in case it's not the last chunk we check for previously added node type and if it's not
-           a text node it's safe to ignore.
-
-           Note that during domdoc_loadXML() the xmlDocPtr->_private data is not available. */
-
-        if (!This->properties->preserving &&
-            !is_preserving_whitespace(ctxt->node) &&
-            strn_isspace(ch, len) &&
-            (!ctxt->node->last ||
-            ((ctxt->node->last && (cur == '<' || ctxt->node->last->type != XML_TEXT_NODE))
-           )))
-        {
-            /* Keep information about ignorable whitespace text node in previous or parent node */
-            if (ctxt->node->last)
-                *(DWORD*)&ctxt->node->last->_private |= NODE_PRIV_TRAILING_IGNORABLE_WS;
-            else if (ctxt->node->type != XML_DOCUMENT_NODE)
-                *(DWORD*)&ctxt->node->_private |= NODE_PRIV_CHILD_IGNORABLE_WS;
-            return;
-        }
-    }
-
-    xmlSAX2Characters(ctxt, ch, len);
-}
-
-static void LIBXML2_LOG_CALLBACK sax_error(void* ctx, char const* msg, ...)
-{
-    va_list ap;
-    va_start(ap, msg);
-    LIBXML2_CALLBACK_ERR(doparse, msg, ap);
-    va_end(ap);
-}
-
-static void LIBXML2_LOG_CALLBACK sax_warning(void* ctx, char const* msg, ...)
-{
-    va_list ap;
-    va_start(ap, msg);
-    LIBXML2_CALLBACK_WARN(doparse, msg, ap);
-    va_end(ap);
-}
-
-static void sax_serror(void* ctx, const xmlError* err)
-{
-    LIBXML2_CALLBACK_SERROR(doparse, err);
-}
-
-static xmlDocPtr doparse(domdoc* This, char const* ptr, int len, xmlCharEncoding encoding)
-{
-    char *ctx_encoding;
-    xmlDocPtr doc = NULL;
-    xmlParserCtxtPtr pctx;
-    static xmlSAXHandler sax_handler = {
-        xmlSAX2InternalSubset,          /* internalSubset */
-        xmlSAX2IsStandalone,            /* isStandalone */
-        xmlSAX2HasInternalSubset,       /* hasInternalSubset */
-        xmlSAX2HasExternalSubset,       /* hasExternalSubset */
-        xmlSAX2ResolveEntity,           /* resolveEntity */
-        xmlSAX2GetEntity,               /* getEntity */
-        xmlSAX2EntityDecl,              /* entityDecl */
-        xmlSAX2NotationDecl,            /* notationDecl */
-        xmlSAX2AttributeDecl,           /* attributeDecl */
-        xmlSAX2ElementDecl,             /* elementDecl */
-        xmlSAX2UnparsedEntityDecl,      /* unparsedEntityDecl */
-        xmlSAX2SetDocumentLocator,      /* setDocumentLocator */
-        xmlSAX2StartDocument,           /* startDocument */
-        xmlSAX2EndDocument,             /* endDocument */
-        xmlSAX2StartElement,            /* startElement */
-        xmlSAX2EndElement,              /* endElement */
-        xmlSAX2Reference,               /* reference */
-        sax_characters,                 /* characters */
-        sax_characters,                 /* ignorableWhitespace */
-        xmlSAX2ProcessingInstruction,   /* processingInstruction */
-        xmlSAX2Comment,                 /* comment */
-        sax_warning,                    /* warning */
-        sax_error,                      /* error */
-        sax_error,                      /* fatalError */
-        xmlSAX2GetParameterEntity,      /* getParameterEntity */
-        xmlSAX2CDataBlock,              /* cdataBlock */
-        xmlSAX2ExternalSubset,          /* externalSubset */
-        0,                              /* initialized */
-        NULL,                           /* _private */
-        xmlSAX2StartElementNs,          /* startElementNs */
-        xmlSAX2EndElementNs,            /* endElementNs */
-        sax_serror                      /* serror */
-    };
-
-    pctx = xmlCreateMemoryParserCtxt(ptr, len);
-    if (!pctx)
-    {
-        ERR("Failed to create parser context\n");
-        return NULL;
-    }
-
-    if (pctx->sax) xmlFree(pctx->sax);
-    pctx->sax = &sax_handler;
-    pctx->_private = This;
-    pctx->recovery = 0;
-
-    if (encoding != XML_CHAR_ENCODING_NONE)
-        xmlSwitchEncoding(pctx, encoding);
-
-    xmlParseDocument(pctx);
-
-    if (pctx->wellFormed)
-    {
-        doc = pctx->myDoc;
-    }
-    else
-    {
-       xmlFreeDoc(pctx->myDoc);
-       pctx->myDoc = NULL;
-    }
-    pctx->sax = NULL;
-    ctx_encoding = (char *)pctx->encoding;
-    pctx->encoding = NULL;
-    xmlFreeParserCtxt(pctx);
-
-    /* TODO: put this in one of the SAX callbacks */
-    /* create first child as a <?xml...?> */
-    if (doc && doc->standalone != -1)
-    {
-        xmlNodePtr node;
-        char buff[30];
-        xmlChar *xmlbuff = (xmlChar*)buff;
-
-        node = xmlNewDocPI( doc, (xmlChar*)"xml", NULL );
-
-        /* version attribute can't be omitted */
-        sprintf(buff, "version=\"%s\"", doc->version ? (char*)doc->version : "1.0");
-        xmlNodeAddContent( node, xmlbuff );
-
-        if (ctx_encoding)
-        {
-            sprintf(buff, " encoding=\"%s\"", ctx_encoding);
-            xmlNodeAddContent( node, xmlbuff );
-        }
-
-        if (doc->standalone != -2)
-        {
-            sprintf(buff, " standalone=\"%s\"", doc->standalone == 0 ? "no" : "yes");
-            xmlNodeAddContent( node, xmlbuff );
-        }
-
-        xmldoc_link_xmldecl( doc, node );
-    }
-
-    xmlFree( ctx_encoding );
-    return doc;
-}
-
-void xmldoc_init(xmlDocPtr doc, MSXML_VERSION version)
-{
-    doc->_private = create_priv();
-    priv_from_xmlDocPtr(doc)->properties = create_properties(version);
-}
-
-LONG xmldoc_add_refs(xmlDocPtr doc, LONG refs)
-{
-    LONG ref = InterlockedExchangeAdd(&priv_from_xmlDocPtr(doc)->refs, refs) + refs;
-    TRACE("%p, refcount %ld.\n", doc, ref);
-    return ref;
-}
-
-LONG xmldoc_add_ref(xmlDocPtr doc)
-{
-    return xmldoc_add_refs(doc, 1);
-}
-
-LONG xmldoc_release_refs(xmlDocPtr doc, LONG refs)
-{
-    xmldoc_priv *priv = priv_from_xmlDocPtr(doc);
-    LONG ref = InterlockedExchangeAdd(&priv->refs, -refs) - refs;
-
-    TRACE("%p, refcount %ld.\n", doc, ref);
-
-    if (ref < 0)
-        WARN("negative refcount, expect troubles\n");
-
-    if (ref == 0)
-    {
-        orphan_entry *orphan, *orphan2;
-        TRACE("freeing docptr %p\n", doc);
-
-        LIST_FOR_EACH_ENTRY_SAFE( orphan, orphan2, &priv->orphans, orphan_entry, entry )
-        {
-            xmlFreeNode( orphan->node );
-            free( orphan );
-        }
-        properties_release(priv->properties);
-        free(doc->_private);
-
-        xmlFreeDoc(doc);
-    }
-
-    return ref;
-}
-
-LONG xmldoc_release(xmlDocPtr doc)
-{
-    return xmldoc_release_refs(doc, 1);
-}
-
-HRESULT xmldoc_add_orphan(xmlDocPtr doc, xmlNodePtr node)
-{
-    xmldoc_priv *priv = priv_from_xmlDocPtr(doc);
-    orphan_entry *entry;
-
-    entry = malloc(sizeof(*entry));
-    if(!entry)
-        return E_OUTOFMEMORY;
-
-    entry->node = node;
-    list_add_head( &priv->orphans, &entry->entry );
-    return S_OK;
-}
-
-HRESULT xmldoc_remove_orphan(xmlDocPtr doc, xmlNodePtr node)
-{
-    xmldoc_priv *priv = priv_from_xmlDocPtr(doc);
-    orphan_entry *entry, *entry2;
-
-    LIST_FOR_EACH_ENTRY_SAFE( entry, entry2, &priv->orphans, orphan_entry, entry )
-    {
-        if( entry->node == node )
-        {
-            list_remove( &entry->entry );
-            free( entry );
-            return S_OK;
-        }
-    }
-
-    return S_FALSE;
-}
-
-static inline xmlDocPtr get_doc( domdoc *This )
-{
-    return This->node.node->doc;
-}
-
-static HRESULT attach_xmldoc(domdoc *This, xmlDocPtr xml )
-{
-    release_namespaces(This);
-
-    if(This->node.node)
-    {
-        properties_release(properties_from_xmlDocPtr(get_doc(This)));
-        priv_from_xmlDocPtr(get_doc(This))->properties = NULL;
-        if (xmldoc_release(get_doc(This)) != 0)
-        {
-            /* The xmlDocPtr object can no longer use the properties of this
-             * domdoc object. So give it its own copy.
-             */
-            priv_from_xmlDocPtr(get_doc(This))->properties =
-                copy_properties(This->properties);
-        }
-    }
-
-    This->node.node = (xmlNodePtr) xml;
-
-    if(This->node.node)
-    {
-        xmldoc_add_ref(get_doc(This));
-        /* Only attach new xmlDocPtr objects, i.e. ones for which properties
-         * is still NULL.
-         */
-        priv_from_xmlDocPtr(get_doc(This))->properties = properties_add_ref(This->properties);
-    }
-
-    return S_OK;
+    domnode_addref(node);
+    node_move_children(doc->node, node);
+    domnode_release(node);
 }
 
 static inline domdoc *impl_from_IXMLDOMDocument3( IXMLDOMDocument3 *iface )
@@ -736,61 +212,53 @@ static inline domdoc *impl_from_IConnectionPointContainer(IConnectionPointContai
     return CONTAINING_RECORD(iface, domdoc, IConnectionPointContainer_iface);
 }
 
-/************************************************************************
- * domdoc implementation of IPersistStream.
- */
-static HRESULT WINAPI PersistStreamInit_QueryInterface(
-    IPersistStreamInit *iface, REFIID riid, void **ppvObj)
+static HRESULT WINAPI PersistStreamInit_QueryInterface(IPersistStreamInit *iface, REFIID riid, void **obj)
 {
-    domdoc* This = impl_from_IPersistStreamInit(iface);
-    return IXMLDOMDocument3_QueryInterface(&This->IXMLDOMDocument3_iface, riid, ppvObj);
+    domdoc *doc = impl_from_IPersistStreamInit(iface);
+    return IXMLDOMDocument3_QueryInterface(&doc->IXMLDOMDocument3_iface, riid, obj);
 }
 
-static ULONG WINAPI PersistStreamInit_AddRef(
-    IPersistStreamInit *iface)
+static ULONG WINAPI PersistStreamInit_AddRef(IPersistStreamInit *iface)
 {
-    domdoc* This = impl_from_IPersistStreamInit(iface);
-    return IXMLDOMDocument3_AddRef(&This->IXMLDOMDocument3_iface);
+    domdoc *doc = impl_from_IPersistStreamInit(iface);
+    return IXMLDOMDocument3_AddRef(&doc->IXMLDOMDocument3_iface);
 }
 
-static ULONG WINAPI PersistStreamInit_Release(
-    IPersistStreamInit *iface)
+static ULONG WINAPI PersistStreamInit_Release(IPersistStreamInit *iface)
 {
-    domdoc* This = impl_from_IPersistStreamInit(iface);
-    return IXMLDOMDocument3_Release(&This->IXMLDOMDocument3_iface);
+    domdoc *doc = impl_from_IPersistStreamInit(iface);
+    return IXMLDOMDocument3_Release(&doc->IXMLDOMDocument3_iface);
 }
 
-static HRESULT WINAPI PersistStreamInit_GetClassID(
-    IPersistStreamInit *iface, CLSID *classid)
+static HRESULT WINAPI PersistStreamInit_GetClassID(IPersistStreamInit *iface, CLSID *clsid)
 {
-    domdoc* This = impl_from_IPersistStreamInit(iface);
-    TRACE("(%p)->(%p)\n", This, classid);
+    domdoc *doc = impl_from_IPersistStreamInit(iface);
+
+    TRACE("%p, %p.\n", iface, clsid);
 
-    if(!classid)
+    if (!clsid)
         return E_POINTER;
 
-    *classid = *DOMDocument_version(This->properties->version);
+    *clsid = *DOMDocument_version(doc->node->properties->version);
 
     return S_OK;
 }
 
-static HRESULT WINAPI PersistStreamInit_IsDirty(
-    IPersistStreamInit *iface)
+static HRESULT WINAPI PersistStreamInit_IsDirty(IPersistStreamInit *iface)
 {
-    domdoc *This = impl_from_IPersistStreamInit(iface);
-    FIXME("(%p): stub!\n", This);
+    FIXME("%p: stub!\n", iface);
+
     return S_FALSE;
 }
 
 static HRESULT domdoc_load_from_stream(domdoc *doc, ISequentialStream *stream)
 {
-    DWORD read, written, len;
-    xmlDocPtr xmldoc = NULL;
+    LARGE_INTEGER zero = {{0}};
+    struct domnode *node;
+    DWORD read, written;
     IStream *hstream;
-    HGLOBAL hglobal;
     BYTE buf[4096];
     HRESULT hr;
-    char *ptr;
 
     hstream = NULL;
     hr = CreateStreamOnHGlobal(NULL, TRUE, &hstream);
@@ -801,7 +269,7 @@ static HRESULT domdoc_load_from_stream(domdoc *doc, ISequentialStream *stream)
     {
         ISequentialStream_Read(stream, buf, sizeof(buf), &read);
         hr = IStream_Write(hstream, buf, read, &written);
-    } while(SUCCEEDED(hr) && written != 0 && read != 0);
+    } while (SUCCEEDED(hr) && written != 0 && read != 0);
 
     if (FAILED(hr))
     {
@@ -810,41 +278,30 @@ static HRESULT domdoc_load_from_stream(domdoc *doc, ISequentialStream *stream)
         return hr;
     }
 
-    hr = GetHGlobalFromStream(hstream, &hglobal);
-    if (FAILED(hr))
-    {
-        IStream_Release(hstream);
-        return hr;
-    }
-
-    len = GlobalSize(hglobal);
-    ptr = GlobalLock(hglobal);
-    if (len)
-        xmldoc = doparse(doc, ptr, len, XML_CHAR_ENCODING_NONE);
-    GlobalUnlock(hglobal);
+    hr = IStream_Seek(hstream, zero, STREAM_SEEK_SET, NULL);
+    hr = parse_stream((ISequentialStream *)hstream, false, doc->node->properties, &node);
     IStream_Release(hstream);
 
-    if (!xmldoc)
+    if (!node)
     {
         ERR("Failed to parse xml\n");
         return E_FAIL;
     }
 
-    xmldoc->_private = create_priv();
-
-    return attach_xmldoc(doc, xmldoc);
+    attach_doc_node(doc, node);
+    return S_OK;
 }
 
 static HRESULT WINAPI PersistStreamInit_Load(IPersistStreamInit *iface, IStream *stream)
 {
-    domdoc *This = impl_from_IPersistStreamInit(iface);
+    domdoc *doc = impl_from_IPersistStreamInit(iface);
 
-    TRACE("(%p)->(%p)\n", This, stream);
+    TRACE("%p, %p.\n", iface, stream);
 
     if (!stream)
         return E_INVALIDARG;
 
-    return This->error = domdoc_load_from_stream(This, (ISequentialStream*)stream);
+    return doc->error = domdoc_load_from_stream(doc, (ISequentialStream *)stream);
 }
 
 static HRESULT WINAPI PersistStreamInit_Save(
@@ -870,19 +327,17 @@ static HRESULT WINAPI PersistStreamInit_Save(
     return hr;
 }
 
-static HRESULT WINAPI PersistStreamInit_GetSizeMax(
-    IPersistStreamInit *iface, ULARGE_INTEGER *pcbSize)
+static HRESULT WINAPI PersistStreamInit_GetSizeMax(IPersistStreamInit *iface, ULARGE_INTEGER *size)
 {
-    domdoc *This = impl_from_IPersistStreamInit(iface);
-    TRACE("(%p)->(%p)\n", This, pcbSize);
+    TRACE("%p, %p.\n", iface, size);
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI PersistStreamInit_InitNew(
-    IPersistStreamInit *iface)
+static HRESULT WINAPI PersistStreamInit_InitNew(IPersistStreamInit *iface)
 {
-    domdoc *This = impl_from_IPersistStreamInit(iface);
-    TRACE("(%p)\n", This);
+    TRACE("%p.\n", iface);
+
     return S_OK;
 }
 
@@ -899,9 +354,8 @@ static const IPersistStreamInitVtbl xmldoc_IPersistStreamInit_VTable =
     PersistStreamInit_InitNew
 };
 
-/* IXMLDOMDocument3 interface */
-
-static const tid_t domdoc_se_tids[] = {
+static const tid_t domdoc_se_tids[] =
+{
     IXMLDOMNode_tid,
     IXMLDOMDocument_tid,
     IXMLDOMDocument2_tid,
@@ -909,47 +363,51 @@ static const tid_t domdoc_se_tids[] = {
     NULL_tid
 };
 
-static HRESULT WINAPI domdoc_QueryInterface( IXMLDOMDocument3 *iface, REFIID riid, void** ppvObject )
+static HRESULT WINAPI domdoc_QueryInterface(IXMLDOMDocument3 *iface, REFIID riid, void **obj)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
 
-    TRACE("(%p)->(%s %p)\n", This, debugstr_guid( riid ), ppvObject );
+    TRACE("%p, %s, %p.\n", iface, debugstr_guid(riid), obj);
 
-    *ppvObject = NULL;
+    *obj = NULL;
 
-    if ( IsEqualGUID( riid, &IID_IUnknown ) ||
-         IsEqualGUID( riid, &IID_IDispatch ) ||
-         IsEqualGUID( riid, &IID_IXMLDOMNode ) ||
-         IsEqualGUID( riid, &IID_IXMLDOMDocument ) ||
-         IsEqualGUID( riid, &IID_IXMLDOMDocument2 )||
-         IsEqualGUID( riid, &IID_IXMLDOMDocument3 ))
+    if (IsEqualGUID(riid, &IID_IUnknown) ||
+        IsEqualGUID(riid, &IID_IDispatch) ||
+        IsEqualGUID(riid, &IID_IXMLDOMNode) ||
+        IsEqualGUID(riid, &IID_IXMLDOMDocument) ||
+        IsEqualGUID(riid, &IID_IXMLDOMDocument2)||
+        IsEqualGUID(riid, &IID_IXMLDOMDocument3))
     {
-        *ppvObject = iface;
+        *obj = iface;
     }
     else if (IsEqualGUID(&IID_IPersistStream, riid) ||
              IsEqualGUID(&IID_IPersistStreamInit, riid))
     {
-        *ppvObject = &This->IPersistStreamInit_iface;
+        *obj = &doc->IPersistStreamInit_iface;
     }
     else if (IsEqualGUID(&IID_IObjectWithSite, riid))
     {
-        *ppvObject = &This->IObjectWithSite_iface;
+        *obj = &doc->IObjectWithSite_iface;
     }
     else if (IsEqualGUID(&IID_IObjectSafety, riid))
     {
-        *ppvObject = &This->IObjectSafety_iface;
+        *obj = &doc->IObjectSafety_iface;
     }
     else if( IsEqualGUID( riid, &IID_ISupportErrorInfo ))
     {
-        return node_create_supporterrorinfo(domdoc_se_tids, ppvObject);
+        return node_create_supporterrorinfo(domdoc_se_tids, obj);
+    }
+    else if (dispex_query_interface(&doc->dispex, riid, obj))
+    {
+        return *obj ? S_OK : E_NOINTERFACE;
     }
-    else if(node_query_interface(&This->node, riid, ppvObject))
+    else if (node_query_interface(doc->node, riid, obj))
     {
-        return *ppvObject ? S_OK : E_NOINTERFACE;
+        return *obj ? S_OK : E_NOINTERFACE;
     }
-    else if (IsEqualGUID( riid, &IID_IConnectionPointContainer ))
+    else if (IsEqualGUID(riid, &IID_IConnectionPointContainer))
     {
-        *ppvObject = &This->IConnectionPointContainer_iface;
+        *obj = &doc->IConnectionPointContainer_iface;
     }
     else
     {
@@ -957,7 +415,7 @@ static HRESULT WINAPI domdoc_QueryInterface( IXMLDOMDocument3 *iface, REFIID rii
         return E_NOINTERFACE;
     }
 
-    IUnknown_AddRef((IUnknown*)*ppvObject);
+    IUnknown_AddRef((IUnknown *)*obj);
 
     return S_OK;
 }
@@ -965,577 +423,367 @@ static HRESULT WINAPI domdoc_QueryInterface( IXMLDOMDocument3 *iface, REFIID rii
 static ULONG WINAPI domdoc_AddRef( IXMLDOMDocument3 *iface )
 {
     domdoc *doc = impl_from_IXMLDOMDocument3(iface);
-    ULONG ref = InterlockedIncrement(&doc->ref);
-    TRACE("%p, refcount %ld.\n", iface, ref);
-    return ref;
+    ULONG refcount = InterlockedIncrement(&doc->refcount);
+
+    TRACE("%p, refcount %ld.\n", iface, refcount);
+
+    return refcount;
 }
 
 static ULONG WINAPI domdoc_Release( IXMLDOMDocument3 *iface )
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    LONG ref = InterlockedDecrement( &This->ref );
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
+    LONG refcount = InterlockedDecrement(&doc->refcount);
 
-    TRACE("%p, refcount %ld.\n", iface, ref);
+    TRACE("%p, refcount %ld.\n", iface, refcount);
 
-    if (!ref)
+    if (!refcount)
     {
         int eid;
 
-        if (This->site)
-            IUnknown_Release( This->site );
-        if (This->base_uri)
-            IUri_Release( This->base_uri );
-        destroy_xmlnode(&This->node);
+        if (doc->site)
+            IUnknown_Release(doc->site);
+        if (doc->base_uri)
+            IUri_Release(doc->base_uri);
+
+        domnode_release(doc->node);
 
         for (eid = 0; eid < EVENTID_LAST; eid++)
-            if (This->events[eid]) IDispatch_Release(This->events[eid]);
+            if (doc->events[eid]) IDispatch_Release(doc->events[eid]);
 
-        properties_release(This->properties);
-        release_namespaces(This);
-        free(This);
+        release_namespaces(doc);
+        free(doc);
     }
 
-    return ref;
+    return refcount;
 }
 
-static HRESULT WINAPI domdoc_GetTypeInfoCount( IXMLDOMDocument3 *iface, UINT* pctinfo )
+static HRESULT WINAPI domdoc_GetTypeInfoCount(IXMLDOMDocument3 *iface, UINT *count)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    return IDispatchEx_GetTypeInfoCount(&This->node.dispex.IDispatchEx_iface, pctinfo);
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
+    return IDispatchEx_GetTypeInfoCount(&doc->dispex.IDispatchEx_iface, count);
 }
 
-static HRESULT WINAPI domdoc_GetTypeInfo(
-    IXMLDOMDocument3 *iface,
-    UINT iTInfo, LCID lcid, ITypeInfo** ppTInfo )
+static HRESULT WINAPI domdoc_GetTypeInfo(IXMLDOMDocument3 *iface, UINT index, LCID lcid, ITypeInfo **ti)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    return IDispatchEx_GetTypeInfo(&This->node.dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
+    return IDispatchEx_GetTypeInfo(&doc->dispex.IDispatchEx_iface, index, lcid, ti);
 }
 
-static HRESULT WINAPI domdoc_GetIDsOfNames(
-    IXMLDOMDocument3 *iface,
-    REFIID riid,
-    LPOLESTR* rgszNames,
-    UINT cNames,
-    LCID lcid,
-    DISPID* rgDispId)
+static HRESULT WINAPI domdoc_GetIDsOfNames(IXMLDOMDocument3 *iface, REFIID riid, LPOLESTR *rgszNames,
+        UINT cNames, LCID lcid, DISPID *rgDispId)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    return IDispatchEx_GetIDsOfNames(&This->node.dispex.IDispatchEx_iface,
-        riid, rgszNames, cNames, lcid, rgDispId);
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
+    return IDispatchEx_GetIDsOfNames(&doc->dispex.IDispatchEx_iface, riid, rgszNames, cNames, lcid, rgDispId);
 }
 
-static HRESULT WINAPI domdoc_Invoke(
-    IXMLDOMDocument3 *iface,
-    DISPID dispIdMember,
-    REFIID riid,
-    LCID lcid,
-    WORD wFlags,
-    DISPPARAMS* pDispParams,
-    VARIANT* pVarResult,
-    EXCEPINFO* pExcepInfo,
-    UINT* puArgErr)
+static HRESULT WINAPI domdoc_Invoke(IXMLDOMDocument3 *iface, DISPID dispIdMember, REFIID riid,
+        LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo,
+        UINT *puArgErr)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    return IDispatchEx_Invoke(&This->node.dispex.IDispatchEx_iface,
-        dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
+    return IDispatchEx_Invoke(&doc->dispex.IDispatchEx_iface, dispIdMember, riid, lcid, wFlags, pDispParams,
+            pVarResult, pExcepInfo, puArgErr);
 }
 
-static HRESULT WINAPI domdoc_get_nodeName(
-    IXMLDOMDocument3 *iface,
-    BSTR* name )
+static HRESULT WINAPI domdoc_get_nodeName(IXMLDOMDocument3 *iface, BSTR *name)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-
-    TRACE("(%p)->(%p)\n", This, name);
+    TRACE("%p, %p.\n", iface, name);
 
     return return_bstr(L"#document", name);
 }
 
-
-static HRESULT WINAPI domdoc_get_nodeValue(
-    IXMLDOMDocument3 *iface,
-    VARIANT* value )
+static HRESULT WINAPI domdoc_get_nodeValue(IXMLDOMDocument3 *iface, VARIANT *value)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
+    TRACE("%p, %p.\n", iface, value);
 
-    TRACE("(%p)->(%p)\n", This, value);
-
-    if(!value)
-        return E_INVALIDARG;
-
-    V_VT(value) = VT_NULL;
-    V_BSTR(value) = NULL; /* tests show that we should do this */
-    return S_FALSE;
+    return return_null_var(value);
 }
 
-
-static HRESULT WINAPI domdoc_put_nodeValue(
-    IXMLDOMDocument3 *iface,
-    VARIANT value)
+static HRESULT WINAPI domdoc_put_nodeValue(IXMLDOMDocument3 *iface, VARIANT value)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    TRACE("(%p)->(%s)\n", This, debugstr_variant(&value));
+    TRACE("%p, %s.\n", iface, debugstr_variant(&value));
+
     return E_FAIL;
 }
 
-
-static HRESULT WINAPI domdoc_get_nodeType(
-    IXMLDOMDocument3 *iface,
-    DOMNodeType* type )
+static HRESULT WINAPI domdoc_get_nodeType(IXMLDOMDocument3 *iface, DOMNodeType *type)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-
-    TRACE("(%p)->(%p)\n", This, type);
+    TRACE("%p, %p.\n", iface, type);
 
     *type = NODE_DOCUMENT;
     return S_OK;
 }
 
-
-static HRESULT WINAPI domdoc_get_parentNode(
-    IXMLDOMDocument3 *iface,
-    IXMLDOMNode** parent )
+static HRESULT WINAPI domdoc_get_parentNode(IXMLDOMDocument3 *iface, IXMLDOMNode **node)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-
-    TRACE("(%p)->(%p)\n", This, parent);
+    TRACE("%p, %p.\n", iface, node);
 
-    return node_get_parent(&This->node, parent);
+    return return_null_node(node);
 }
 
-
-static HRESULT WINAPI domdoc_get_childNodes(
-    IXMLDOMDocument3 *iface,
-    IXMLDOMNodeList** childList )
+static HRESULT WINAPI domdoc_get_childNodes(IXMLDOMDocument3 *iface, IXMLDOMNodeList **list)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
 
-    TRACE("(%p)->(%p)\n", This, childList);
+    TRACE("%p, %p.\n", iface, list);
 
-    return node_get_child_nodes(&This->node, childList);
+    return node_get_child_nodes(doc->node, list);
 }
 
-
-static HRESULT WINAPI domdoc_get_firstChild(
-    IXMLDOMDocument3 *iface,
-    IXMLDOMNode** firstChild )
+static HRESULT WINAPI domdoc_get_firstChild(IXMLDOMDocument3 *iface, IXMLDOMNode **node)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
 
-    TRACE("(%p)->(%p)\n", This, firstChild);
+    TRACE("%p, %p.\n", iface, node);
 
-    return node_get_first_child(&This->node, firstChild);
+    return node_get_first_child(doc->node, node);
 }
 
-
-static HRESULT WINAPI domdoc_get_lastChild(
-    IXMLDOMDocument3 *iface,
-    IXMLDOMNode** lastChild )
+static HRESULT WINAPI domdoc_get_lastChild(IXMLDOMDocument3 *iface, IXMLDOMNode **node)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
 
-    TRACE("(%p)->(%p)\n", This, lastChild);
+    TRACE("%p, %p.\n", iface, node);
 
-    return node_get_last_child(&This->node, lastChild);
+    return node_get_last_child(doc->node, node);
 }
 
-
-static HRESULT WINAPI domdoc_get_previousSibling(
-    IXMLDOMDocument3 *iface,
-    IXMLDOMNode** previousSibling )
+static HRESULT WINAPI domdoc_get_previousSibling(IXMLDOMDocument3 *iface, IXMLDOMNode **node)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
+    TRACE("%p, %p.\n", iface, node);
 
-    TRACE("(%p)->(%p)\n", This, previousSibling);
-
-    return return_null_node(previousSibling);
+    return return_null_node(node);
 }
 
-
-static HRESULT WINAPI domdoc_get_nextSibling(
-    IXMLDOMDocument3 *iface,
-    IXMLDOMNode** nextSibling )
+static HRESULT WINAPI domdoc_get_nextSibling(IXMLDOMDocument3 *iface, IXMLDOMNode **node)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
+    TRACE("%p, %p.\n", iface, node);
 
-    TRACE("(%p)->(%p)\n", This, nextSibling);
-
-    return return_null_node(nextSibling);
+    return return_null_node(node);
 }
 
-
-static HRESULT WINAPI domdoc_get_attributes(
-    IXMLDOMDocument3 *iface,
-    IXMLDOMNamedNodeMap** attributeMap )
+static HRESULT WINAPI domdoc_get_attributes(IXMLDOMDocument3 *iface,  IXMLDOMNamedNodeMap **map)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-
-    TRACE("(%p)->(%p)\n", This, attributeMap);
+    TRACE("%p, %p.\n", iface, map);
 
-    return return_null_ptr((void**)attributeMap);
+    return return_null_ptr((void **)map);
 }
 
-
-static HRESULT WINAPI domdoc_insertBefore(
-    IXMLDOMDocument3 *iface,
-    IXMLDOMNode* newChild,
-    VARIANT refChild,
-    IXMLDOMNode** outNewChild )
+static HRESULT WINAPI domdoc_insertBefore(IXMLDOMDocument3 *iface, IXMLDOMNode* newChild,
+        VARIANT refChild, IXMLDOMNode** outNewChild)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    DOMNodeType type;
-    HRESULT hr;
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
 
-    TRACE("(%p)->(%p %s %p)\n", This, newChild, debugstr_variant(&refChild), outNewChild);
+    TRACE("%p, %p, %s, %p.\n", iface, newChild, debugstr_variant(&refChild), outNewChild);
 
-    if (!newChild) return E_INVALIDARG;
+    return node_insert_before(doc->node, newChild, &refChild, outNewChild);
+}
 
-    hr = IXMLDOMNode_get_nodeType(newChild, &type);
-    if (hr != S_OK) return hr;
+static HRESULT WINAPI domdoc_replaceChild(IXMLDOMDocument3 *iface, IXMLDOMNode *newChild,
+        IXMLDOMNode* oldChild, IXMLDOMNode **outOldChild)
+{
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
 
-    TRACE("new node type %d\n", type);
-    switch (type)
-    {
-        case NODE_ATTRIBUTE:
-        case NODE_DOCUMENT:
-        case NODE_CDATA_SECTION:
-            if (outNewChild) *outNewChild = NULL;
-            return E_FAIL;
-        default:
-            return node_insert_before(&This->node, newChild, &refChild, outNewChild);
-    }
+    TRACE("%p, %p, %p, %p.\n", iface, newChild, oldChild, outOldChild);
+
+    return node_replace_child(doc->node, newChild, oldChild, outOldChild);
 }
 
-static HRESULT WINAPI domdoc_replaceChild(
-    IXMLDOMDocument3 *iface,
-    IXMLDOMNode* newChild,
-    IXMLDOMNode* oldChild,
-    IXMLDOMNode** outOldChild)
+static HRESULT WINAPI domdoc_removeChild(IXMLDOMDocument3 *iface, IXMLDOMNode *child, IXMLDOMNode **oldChild)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
 
-    TRACE("(%p)->(%p %p %p)\n", This, newChild, oldChild, outOldChild);
+    TRACE("%p, %p, %p.\n", iface, child, oldChild);
 
-    return node_replace_child(&This->node, newChild, oldChild, outOldChild);
+    return node_remove_child(doc->node, child, oldChild);
 }
 
-
-static HRESULT WINAPI domdoc_removeChild(
-    IXMLDOMDocument3 *iface,
-    IXMLDOMNode  *child,
-    IXMLDOMNode **oldChild)
+static HRESULT WINAPI domdoc_appendChild(IXMLDOMDocument3 *iface, IXMLDOMNode *child, IXMLDOMNode **outChild)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    TRACE("(%p)->(%p %p)\n", This, child, oldChild);
-    return node_remove_child(&This->node, child, oldChild);
-}
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
 
+    TRACE("%p, %p, %p.\n", iface, child, outChild);
 
-static HRESULT WINAPI domdoc_appendChild(
-    IXMLDOMDocument3 *iface,
-    IXMLDOMNode  *child,
-    IXMLDOMNode **outChild)
-{
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    TRACE("(%p)->(%p %p)\n", This, child, outChild);
-    return node_append_child(&This->node, child, outChild);
+    return node_append_child(doc->node, child, outChild);
 }
 
-
-static HRESULT WINAPI domdoc_hasChildNodes(
-    IXMLDOMDocument3 *iface,
-    VARIANT_BOOL *ret)
+static HRESULT WINAPI domdoc_hasChildNodes(IXMLDOMDocument3 *iface, VARIANT_BOOL *ret)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    TRACE("(%p)->(%p)\n", This, ret);
-    return node_has_childnodes(&This->node, ret);
-}
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
+
+    TRACE("%p, %p.\n", iface, ret);
 
+    return node_has_childnodes(doc->node, ret);
+}
 
 static HRESULT WINAPI domdoc_get_ownerDocument(IXMLDOMDocument3 *iface, IXMLDOMDocument **owner)
 {
     TRACE("%p, %p.\n", iface, owner);
 
-    if (!owner)
-        return E_INVALIDARG;
-
-    *owner = NULL;
-    return S_FALSE;
+    return return_null_node((IXMLDOMNode **)owner);
 }
 
-static HRESULT WINAPI domdoc_cloneNode(
-    IXMLDOMDocument3 *iface,
-    VARIANT_BOOL deep,
-    IXMLDOMNode** outNode)
+static HRESULT WINAPI domdoc_cloneNode(IXMLDOMDocument3 *iface, VARIANT_BOOL deep, IXMLDOMNode **node)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    xmlNodePtr clone;
-
-    TRACE("(%p)->(%d %p)\n", This, deep, outNode);
-
-    if (!outNode)
-        return E_INVALIDARG;
-
-    *outNode = NULL;
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
 
-    clone = xmlCopyNode((xmlNodePtr)get_doc(This), deep ? 1 : 2);
-    if (!clone)
-        return E_FAIL;
+    TRACE("%p, %d, %p.\n", iface, deep, node);
 
-    clone->doc->_private = create_priv();
-    priv_from_xmlDocPtr(clone->doc)->properties = copy_properties(This->properties);
-    xmldoc_release(clone->doc);
-    if (!(*outNode = (IXMLDOMNode*)create_domdoc(clone)))
-        return E_FAIL;
-    return S_OK;
+    return node_clone(doc->node, deep, node);
 }
 
-
-static HRESULT WINAPI domdoc_get_nodeTypeString(
-    IXMLDOMDocument3 *iface,
-    BSTR *p)
+static HRESULT WINAPI domdoc_get_nodeTypeString(IXMLDOMDocument3 *iface, BSTR *p)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-
-    TRACE("(%p)->(%p)\n", This, p);
+    TRACE("%p, %p.\n", iface, p);
 
     return return_bstr(L"document", p);
 }
 
-
-static HRESULT WINAPI domdoc_get_text(
-    IXMLDOMDocument3 *iface,
-    BSTR *p)
+static HRESULT WINAPI domdoc_get_text(IXMLDOMDocument3 *iface, BSTR *p)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    TRACE("(%p)->(%p)\n", This, p);
-    return node_get_text(&This->node, p);
-}
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
 
+    TRACE("%p, %p.\n", iface, p);
+
+    return node_get_text(doc->node, p);
+}
 
-static HRESULT WINAPI domdoc_put_text(
-    IXMLDOMDocument3 *iface,
-    BSTR text )
+static HRESULT WINAPI domdoc_put_text(IXMLDOMDocument3 *iface, BSTR text)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    TRACE("(%p)->(%s)\n", This, debugstr_w(text));
+    TRACE("%p, %s.\n", iface, debugstr_w(text));
+
     return E_FAIL;
 }
 
-
-static HRESULT WINAPI domdoc_get_specified(
-    IXMLDOMDocument3 *iface,
-    VARIANT_BOOL* isSpecified )
+static HRESULT WINAPI domdoc_get_specified(IXMLDOMDocument3 *iface, VARIANT_BOOL *v)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    FIXME("(%p)->(%p) stub!\n", This, isSpecified);
-    *isSpecified = VARIANT_TRUE;
+    FIXME("%p, %p stub!\n", iface, v);
+
+    *v = VARIANT_TRUE;
     return S_OK;
 }
 
-
-static HRESULT WINAPI domdoc_get_definition(
-    IXMLDOMDocument3 *iface,
-    IXMLDOMNode** definitionNode )
+static HRESULT WINAPI domdoc_get_definition(IXMLDOMDocument3 *iface, IXMLDOMNode **node)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    FIXME("(%p)->(%p)\n", This, definitionNode);
+    FIXME("%p, %p.\n", iface, node);
+
     return E_NOTIMPL;
 }
 
-
-static HRESULT WINAPI domdoc_get_nodeTypedValue(
-    IXMLDOMDocument3 *iface,
-    VARIANT* v )
+static HRESULT WINAPI domdoc_get_nodeTypedValue(IXMLDOMDocument3 *iface, VARIANT *v)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    TRACE("(%p)->(%p)\n", This, v);
+    TRACE("%p, %p.\n", iface, v);
+
     return return_null_var(v);
 }
 
-static HRESULT WINAPI domdoc_put_nodeTypedValue(
-    IXMLDOMDocument3 *iface,
-    VARIANT typedValue )
+static HRESULT WINAPI domdoc_put_nodeTypedValue(IXMLDOMDocument3 *iface, VARIANT v)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    FIXME("(%p)->(%s)\n", This, debugstr_variant(&typedValue));
+    FIXME("%p, %s.\n", iface, debugstr_variant(&v));
+
     return E_NOTIMPL;
 }
 
-
-static HRESULT WINAPI domdoc_get_dataType(
-    IXMLDOMDocument3 *iface,
-    VARIANT* typename )
+static HRESULT WINAPI domdoc_get_dataType(IXMLDOMDocument3 *iface, VARIANT *v)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    TRACE("(%p)->(%p)\n", This, typename);
-    return return_null_var( typename );
-}
+    TRACE("%p, %p.\n", iface, v);
 
+    return return_null_var(v);
+}
 
-static HRESULT WINAPI domdoc_put_dataType(
-    IXMLDOMDocument3 *iface,
-    BSTR dataTypeName )
+static HRESULT WINAPI domdoc_put_dataType(IXMLDOMDocument3 *iface, BSTR p)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-
-    FIXME("(%p)->(%s)\n", This, debugstr_w(dataTypeName));
+    FIXME("%p, %s.\n", iface, debugstr_w(p));
 
-    if(!dataTypeName)
+    if (!p)
         return E_INVALIDARG;
 
     return E_FAIL;
 }
 
-static int XMLCALL domdoc_get_xml_writecallback(void *ctx, const char *data, int len)
-{
-    return xmlBufferAdd((xmlBufferPtr)ctx, (xmlChar*)data, len) == 0 ? len : 0;
-}
-
-static HRESULT WINAPI domdoc_get_xml(
-    IXMLDOMDocument3 *iface,
-    BSTR* p)
+static HRESULT WINAPI domdoc_get_xml(IXMLDOMDocument3 *iface, BSTR *p)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    xmlSaveCtxtPtr ctxt;
-    xmlBufferPtr buf;
-    int options;
-    long ret;
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
 
-    TRACE("(%p)->(%p)\n", This, p);
+    TRACE("%p, %p.\n", iface, p);
 
-    if(!p)
+    if (!p)
         return E_INVALIDARG;
 
-    *p = NULL;
-
-    buf = xmlBufferCreate();
-    if(!buf)
-        return E_OUTOFMEMORY;
-
-    options = XML_SAVE_FORMAT | XML_SAVE_NO_DECL;
-    ctxt = xmlSaveToIO(domdoc_get_xml_writecallback, NULL, buf, "UTF-8", options);
-
-    if(!ctxt)
-    {
-        xmlBufferFree(buf);
-        return E_OUTOFMEMORY;
-    }
+    return node_get_xml(doc->node, p);
+}
 
-    ret = xmlSaveDoc(ctxt, get_doc(This));
-    /* flushes on close */
-    xmlSaveClose(ctxt);
+static HRESULT WINAPI domdoc_transformNode(IXMLDOMDocument3 *iface, IXMLDOMNode *node, BSTR *p)
+{
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
 
-    TRACE("%ld, len=%d\n", ret, xmlBufferLength(buf));
-    if(ret != -1 && xmlBufferLength(buf) > 0)
-    {
-        BSTR content;
+    TRACE("%p, %p, %p.\n", iface, node, p);
 
-        content = bstr_from_xmlChar(xmlBufferContent(buf));
-        content = EnsureCorrectEOL(content);
+    return node_transform_node(doc->node, node, p);
+}
 
-        *p = content;
-    }
-    else
-    {
-        *p = SysAllocStringLen(NULL, 0);
-    }
+static HRESULT WINAPI domdoc_selectNodes(IXMLDOMDocument3 *iface, BSTR p, IXMLDOMNodeList **list)
+{
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
 
-    xmlBufferFree(buf);
+    TRACE("%p, %s, %p.\n", iface, debugstr_w(p), list);
 
-    return *p ? S_OK : E_OUTOFMEMORY;
+    return node_select_nodes(doc->node, p, list);
 }
 
-
-static HRESULT WINAPI domdoc_transformNode(
-    IXMLDOMDocument3 *iface,
-    IXMLDOMNode *node,
-    BSTR *p)
+static HRESULT WINAPI domdoc_selectSingleNode(IXMLDOMDocument3 *iface, BSTR p, IXMLDOMNode **node)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    TRACE("(%p)->(%p %p)\n", This, node, p);
-    return node_transform_node(&This->node, node, p);
-}
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
 
+    TRACE("%p, %s, %p.\n", iface, debugstr_w(p), node);
 
-static HRESULT WINAPI domdoc_selectNodes(
-    IXMLDOMDocument3 *iface,
-    BSTR p,
-    IXMLDOMNodeList **outList)
-{
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    TRACE("(%p)->(%s %p)\n", This, debugstr_w(p), outList);
-    return node_select_nodes(&This->node, p, outList);
+    return node_select_singlenode(doc->node, p, node);
 }
 
-
-static HRESULT WINAPI domdoc_selectSingleNode(
-    IXMLDOMDocument3 *iface,
-    BSTR p,
-    IXMLDOMNode **outNode)
+static HRESULT WINAPI domdoc_get_parsed(IXMLDOMDocument3 *iface, VARIANT_BOOL *v)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    TRACE("(%p)->(%s %p)\n", This, debugstr_w(p), outNode);
-    return node_select_singlenode(&This->node, p, outNode);
-}
+    FIXME("%p, %p stub!\n", iface, v);
 
-
-static HRESULT WINAPI domdoc_get_parsed(
-    IXMLDOMDocument3 *iface,
-    VARIANT_BOOL* isParsed )
-{
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    FIXME("(%p)->(%p) stub!\n", This, isParsed);
-    *isParsed = VARIANT_TRUE;
+    *v = VARIANT_TRUE;
     return S_OK;
 }
 
-static HRESULT WINAPI domdoc_get_namespaceURI(
-    IXMLDOMDocument3 *iface,
-    BSTR* namespaceURI )
+static HRESULT WINAPI domdoc_get_namespaceURI(IXMLDOMDocument3 *iface, BSTR *uri)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    TRACE("(%p)->(%p)\n", This, namespaceURI);
-    return return_null_bstr( namespaceURI );
+    TRACE("%p, %p.\n", iface, uri);
+
+    return return_null_bstr(uri);
 }
 
-static HRESULT WINAPI domdoc_get_prefix(
-    IXMLDOMDocument3 *iface,
-    BSTR* prefix )
+static HRESULT WINAPI domdoc_get_prefix(IXMLDOMDocument3 *iface, BSTR *prefix)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    TRACE("(%p)->(%p)\n", This, prefix);
-    return return_null_bstr( prefix );
-}
+    TRACE("%p, %p.\n", iface, prefix);
 
+    return return_null_bstr(prefix);
+}
 
-static HRESULT WINAPI domdoc_get_baseName(
-    IXMLDOMDocument3 *iface,
-    BSTR* name )
+static HRESULT WINAPI domdoc_get_baseName(IXMLDOMDocument3 *iface, BSTR *name)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    TRACE("(%p)->(%p)\n", This, name);
-    return return_null_bstr( name );
-}
+    TRACE("%p, %p.\n", iface, name);
 
+    return return_null_bstr(name);
+}
 
-static HRESULT WINAPI domdoc_transformNodeToObject(
-    IXMLDOMDocument3 *iface,
-    IXMLDOMNode* stylesheet,
-    VARIANT output)
+static HRESULT WINAPI domdoc_transformNodeToObject(IXMLDOMDocument3 *iface,
+        IXMLDOMNode *stylesheet, VARIANT output)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
 
-    TRACE("(%p)->(%p %s)\n", This, stylesheet, debugstr_variant(&output));
+    TRACE("%p, %p, %s.\n", iface, stylesheet, debugstr_variant(&output));
 
     switch (V_VT(&output))
     {
     case VT_UNKNOWN:
     case VT_DISPATCH:
     {
+        IXMLDOMDocument *output_doc;
         ISequentialStream *stream;
-        IXMLDOMDocument *doc;
         HRESULT hr;
         BSTR str;
 
@@ -1544,20 +792,20 @@ static HRESULT WINAPI domdoc_transformNodeToObject(
 
         /* FIXME: we're not supposed to query for document interface, should use IStream
            which we don't support currently. */
-        if (IUnknown_QueryInterface(V_UNKNOWN(&output), &IID_IXMLDOMDocument, (void **)&doc) == S_OK)
+        if (IUnknown_QueryInterface(V_UNKNOWN(&output), &IID_IXMLDOMDocument, (void **)&output_doc) == S_OK)
         {
             VARIANT_BOOL b;
 
-            if (FAILED(hr = node_transform_node(&This->node, stylesheet, &str)))
+            if (FAILED(hr = node_transform_node(doc->node, stylesheet, &str)))
                 return hr;
 
-            hr = IXMLDOMDocument_loadXML(doc, str, &b);
+            hr = IXMLDOMDocument_loadXML(output_doc, str, &b);
             SysFreeString(str);
             return hr;
         }
         else if (IUnknown_QueryInterface(V_UNKNOWN(&output), &IID_ISequentialStream, (void**)&stream) == S_OK)
         {
-            hr = node_transform_node_params(&This->node, stylesheet, NULL, stream, NULL);
+            hr = node_transform_node_params(doc->node, stylesheet, NULL, stream, NULL);
             ISequentialStream_Release(stream);
             return hr;
         }
@@ -1575,132 +823,110 @@ static HRESULT WINAPI domdoc_transformNodeToObject(
     return E_NOTIMPL;
 }
 
-
-static HRESULT WINAPI domdoc_get_doctype(
-    IXMLDOMDocument3 *iface,
-    IXMLDOMDocumentType** doctype )
+static HRESULT WINAPI domdoc_get_doctype(IXMLDOMDocument3 *iface, IXMLDOMDocumentType **doctype)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3(iface);
-    IXMLDOMNode *node;
-    xmlDtdPtr dtd;
-    HRESULT hr;
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
+    struct domnode *node = NULL;
 
-    TRACE("(%p)->(%p)\n", This, doctype);
+    TRACE("%p, %p.\n", iface, doctype);
 
-    if (!doctype) return E_INVALIDARG;
+    if (!doctype)
+        return E_INVALIDARG;
 
-    *doctype = NULL;
+    LIST_FOR_EACH_ENTRY(node, &doc->node->children, struct domnode, entry)
+    {
+        if (node->type == NODE_DOCUMENT_TYPE)
+        {
+            return create_node(node, (IXMLDOMNode **)doctype);
+        }
+    }
 
-    dtd = xmlGetIntSubset(get_doc(This));
-    if (!dtd) return S_FALSE;
+    return return_null_node((IXMLDOMNode **)doctype);
+}
 
-    node = create_node((xmlNodePtr)dtd);
-    if (!node) return S_FALSE;
+static HRESULT WINAPI domdoc_get_implementation(IXMLDOMDocument3 *iface, IXMLDOMImplementation **impl)
+{
+    TRACE("%p, %p.\n", iface, impl);
 
-    hr = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMDocumentType, (void**)doctype);
-    IXMLDOMNode_Release(node);
+    if (!impl)
+        return E_INVALIDARG;
 
-    return hr;
+    return create_dom_implementation(impl);
 }
 
-
-static HRESULT WINAPI domdoc_get_implementation(
-    IXMLDOMDocument3 *iface,
-    IXMLDOMImplementation** impl )
+static struct domnode * domdoc_get_document_element(struct domdoc *doc)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3(iface);
+    struct domnode *node;
 
-    TRACE("(%p)->(%p)\n", This, impl);
-
-    if(!impl)
-        return E_INVALIDARG;
+    LIST_FOR_EACH_ENTRY(node, &doc->node->children, struct domnode, entry)
+    {
+        if (node->type == NODE_ELEMENT)
+            return node;
+    }
 
-    return create_dom_implementation(impl);
+    return NULL;
 }
 
-static HRESULT WINAPI domdoc_get_documentElement(
-    IXMLDOMDocument3 *iface,
-    IXMLDOMElement** DOMElement )
+static HRESULT WINAPI domdoc_get_documentElement(IXMLDOMDocument3 *iface, IXMLDOMElement **ret)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    IXMLDOMNode *element_node;
-    xmlNodePtr root;
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
+    struct domnode *element;
+    IXMLDOMNode *node;
     HRESULT hr;
 
-    TRACE("(%p)->(%p)\n", This, DOMElement);
+    TRACE("%p, %p.\n", iface, ret);
 
-    if(!DOMElement)
+    if (!ret)
         return E_INVALIDARG;
 
-    *DOMElement = NULL;
+    *ret = NULL;
 
-    root = xmlDocGetRootElement( get_doc(This) );
-    if ( !root )
-        return S_FALSE;
-
-    element_node = create_node( root );
-    if(!element_node) return S_FALSE;
-
-    hr = IXMLDOMNode_QueryInterface(element_node, &IID_IXMLDOMElement, (void**)DOMElement);
-    IXMLDOMNode_Release(element_node);
+    if ((element = domdoc_get_document_element(doc)))
+    {
+        if (SUCCEEDED(hr = create_node(element, &node)))
+        {
+            hr = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMElement, (void **)ret);
+            IXMLDOMNode_Release(node);
+            return hr;
+        }
+    }
 
-    return hr;
+    return S_FALSE;
 }
 
-
-static HRESULT WINAPI domdoc_put_documentElement(
-    IXMLDOMDocument3 *iface,
-    IXMLDOMElement* DOMElement )
+static HRESULT WINAPI domdoc_putref_documentElement(IXMLDOMDocument3 *iface, IXMLDOMElement *element)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    IXMLDOMNode *elementNode;
-    xmlNodePtr oldRoot;
-    xmlDocPtr old_doc;
-    xmlnode *xmlNode;
-    int refcount = 0;
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
+    struct domnode *current;
+    IXMLDOMNode *node;
     HRESULT hr;
 
-    TRACE("(%p)->(%p)\n", This, DOMElement);
+    TRACE("%p, %p.\n", iface, element);
 
-    hr = IXMLDOMElement_QueryInterface( DOMElement, &IID_IXMLDOMNode, (void**)&elementNode );
-    if(FAILED(hr))
+    if ((current = domdoc_get_document_element(doc)))
+    {
+        if (SUCCEEDED(hr = create_node(current, &node)))
+        {
+            hr = node_replace_child(doc->node, (IXMLDOMNode *)element, node, NULL);
+            IXMLDOMNode_Release(node);
+        }
         return hr;
+    }
+    else
+    {
+        hr = node_append_child(doc->node, (IXMLDOMNode *)element, NULL);
+    }
 
-    xmlNode = get_node_obj( elementNode );
-    if(!xmlNode) return E_FAIL;
-
-    if(!xmlNode->node->parent)
-        if(xmldoc_remove_orphan(xmlNode->node->doc, xmlNode->node) != S_OK)
-            WARN("%p is not an orphan of %p\n", xmlNode->node->doc, xmlNode->node);
-
-    old_doc = xmlNode->node->doc;
-    if (old_doc != get_doc(This))
-        refcount = xmlnode_get_inst_cnt(xmlNode);
-
-    /* old root is still orphaned by its document, update refcount from new root */
-    if (refcount) xmldoc_add_refs(get_doc(This), refcount);
-    oldRoot = xmlDocSetRootElement( get_doc(This), xmlNode->node);
-    if (refcount) xmldoc_release_refs(old_doc, refcount);
-    IXMLDOMNode_Release( elementNode );
-
-    if(oldRoot)
-        xmldoc_add_orphan(oldRoot->doc, oldRoot);
-
-    return S_OK;
+    return hr;
 }
 
-
-static HRESULT WINAPI domdoc_createElement(
-    IXMLDOMDocument3 *iface,
-    BSTR tagname,
-    IXMLDOMElement** element )
+static HRESULT WINAPI domdoc_createElement(IXMLDOMDocument3 *iface, BSTR tagname, IXMLDOMElement **element)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
     IXMLDOMNode *node;
     VARIANT type;
     HRESULT hr;
 
-    TRACE("(%p)->(%s %p)\n", This, debugstr_w(tagname), element);
+    TRACE("%p, %s, %p.\n", iface, debugstr_w(tagname), element);
 
     if (!element || !tagname) return E_INVALIDARG;
 
@@ -1717,17 +943,13 @@ static HRESULT WINAPI domdoc_createElement(
     return hr;
 }
 
-
-static HRESULT WINAPI domdoc_createDocumentFragment(
-    IXMLDOMDocument3 *iface,
-    IXMLDOMDocumentFragment** frag )
+static HRESULT WINAPI domdoc_createDocumentFragment(IXMLDOMDocument3 *iface, IXMLDOMDocumentFragment **frag)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
     IXMLDOMNode *node;
     VARIANT type;
     HRESULT hr;
 
-    TRACE("(%p)->(%p)\n", This, frag);
+    TRACE("%p, %p.\n", iface, frag);
 
     if (!frag) return E_INVALIDARG;
 
@@ -1746,18 +968,13 @@ static HRESULT WINAPI domdoc_createDocumentFragment(
     return hr;
 }
 
-
-static HRESULT WINAPI domdoc_createTextNode(
-    IXMLDOMDocument3 *iface,
-    BSTR data,
-    IXMLDOMText** text )
+static HRESULT WINAPI domdoc_createTextNode(IXMLDOMDocument3 *iface, BSTR data, IXMLDOMText **text)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
     IXMLDOMNode *node;
     VARIANT type;
     HRESULT hr;
 
-    TRACE("(%p)->(%s %p)\n", This, debugstr_w(data), text);
+    TRACE("%p, %s, %p.\n", iface, debugstr_w(data), text);
 
     if (!text) return E_INVALIDARG;
 
@@ -1777,18 +994,13 @@ static HRESULT WINAPI domdoc_createTextNode(
     return hr;
 }
 
-
-static HRESULT WINAPI domdoc_createComment(
-    IXMLDOMDocument3 *iface,
-    BSTR data,
-    IXMLDOMComment** comment )
+static HRESULT WINAPI domdoc_createComment(IXMLDOMDocument3 *iface, BSTR data, IXMLDOMComment **comment)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
+    IXMLDOMNode *node;
     VARIANT type;
     HRESULT hr;
-    IXMLDOMNode *node;
 
-    TRACE("(%p)->(%s %p)\n", This, debugstr_w(data), comment);
+    TRACE("%p, %s, %p.\n", iface, debugstr_w(data), comment);
 
     if (!comment) return E_INVALIDARG;
 
@@ -1808,18 +1020,13 @@ static HRESULT WINAPI domdoc_createComment(
     return hr;
 }
 
-
-static HRESULT WINAPI domdoc_createCDATASection(
-    IXMLDOMDocument3 *iface,
-    BSTR data,
-    IXMLDOMCDATASection** cdata )
+static HRESULT WINAPI domdoc_createCDATASection(IXMLDOMDocument3 *iface, BSTR data, IXMLDOMCDATASection **cdata)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
     IXMLDOMNode *node;
     VARIANT type;
     HRESULT hr;
 
-    TRACE("(%p)->(%s %p)\n", This, debugstr_w(data), cdata);
+    TRACE("%p, %s, %p.\n", iface, debugstr_w(data), cdata);
 
     if (!cdata) return E_INVALIDARG;
 
@@ -1839,52 +1046,23 @@ static HRESULT WINAPI domdoc_createCDATASection(
     return hr;
 }
 
-
-static HRESULT WINAPI domdoc_createProcessingInstruction(
-    IXMLDOMDocument3 *iface,
-    BSTR target,
-    BSTR data,
-    IXMLDOMProcessingInstruction** pi )
+static HRESULT WINAPI domdoc_createProcessingInstruction(IXMLDOMDocument3 *iface,
+        BSTR target, BSTR data, IXMLDOMProcessingInstruction **pi)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    IXMLDOMNode *node;
-    VARIANT type;
-    HRESULT hr;
-
-    TRACE("(%p)->(%s %s %p)\n", This, debugstr_w(target), debugstr_w(data), pi);
-
-    if (!pi) return E_INVALIDARG;
-
-    *pi = NULL;
-
-    V_VT(&type) = VT_I1;
-    V_I1(&type) = NODE_PROCESSING_INSTRUCTION;
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
 
-    hr = IXMLDOMDocument3_createNode(iface, type, target, NULL, &node);
-    if (hr == S_OK)
-    {
-        /* this is to bypass check in ::put_data() that blocks "<?xml" PIs */
-        hr = dom_pi_put_xml_decl(node, data);
-        if (SUCCEEDED(hr))
-            hr = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMProcessingInstruction, (void**)pi);
-        IXMLDOMNode_Release(node);
-    }
+    TRACE("%p, %s, %s, %p.\n", iface, debugstr_w(target), debugstr_w(data), pi);
 
-    return hr;
+    return create_pi_node(doc->node, target, data, pi);
 }
 
-
-static HRESULT WINAPI domdoc_createAttribute(
-    IXMLDOMDocument3 *iface,
-    BSTR name,
-    IXMLDOMAttribute** attribute )
+static HRESULT WINAPI domdoc_createAttribute(IXMLDOMDocument3 *iface, BSTR name, IXMLDOMAttribute **attribute)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
     IXMLDOMNode *node;
     VARIANT type;
     HRESULT hr;
 
-    TRACE("(%p)->(%s %p)\n", This, debugstr_w(name), attribute);
+    TRACE("%p, %s, %p.\n", iface, debugstr_w(name), attribute);
 
     if (!attribute || !name) return E_INVALIDARG;
 
@@ -1901,18 +1079,13 @@ static HRESULT WINAPI domdoc_createAttribute(
     return hr;
 }
 
-
-static HRESULT WINAPI domdoc_createEntityReference(
-    IXMLDOMDocument3 *iface,
-    BSTR name,
-    IXMLDOMEntityReference** entityref )
+static HRESULT WINAPI domdoc_createEntityReference(IXMLDOMDocument3 *iface, BSTR name, IXMLDOMEntityReference **entityref)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
     IXMLDOMNode *node;
     VARIANT type;
     HRESULT hr;
 
-    TRACE("(%p)->(%s %p)\n", This, debugstr_w(name), entityref);
+    TRACE("%p, %s, %p.\n", iface, debugstr_w(name), entityref);
 
     if (!entityref) return E_INVALIDARG;
 
@@ -1931,76 +1104,13 @@ static HRESULT WINAPI domdoc_createEntityReference(
     return hr;
 }
 
-xmlChar* tagName_to_XPath(const BSTR tagName)
+static HRESULT WINAPI domdoc_getElementsByTagName(IXMLDOMDocument3 *iface, BSTR name, IXMLDOMNodeList **list)
 {
-    xmlChar *query, *tmp;
-    static const xmlChar everything[] = "/descendant::node()";
-    static const xmlChar mod_pre[] = "*[local-name()='";
-    static const xmlChar mod_post[] = "']";
-    static const xmlChar prefix[] = "descendant::";
-    const WCHAR *tokBegin, *tokEnd;
-    int len;
-
-    /* Special case - empty tagname - means select all nodes,
-       except document itself. */
-    if (!*tagName)
-        return xmlStrdup(everything);
-
-    query = xmlStrdup(prefix);
-
-    tokBegin = tagName;
-    while (tokBegin && *tokBegin)
-    {
-        switch (*tokBegin)
-        {
-        case '/':
-            query = xmlStrcat(query, BAD_CAST "/");
-            ++tokBegin;
-            break;
-        case '*':
-            query = xmlStrcat(query, BAD_CAST "*");
-            ++tokBegin;
-            break;
-        default:
-            query = xmlStrcat(query, mod_pre);
-            tokEnd = tokBegin;
-            while (*tokEnd && *tokEnd != '/')
-                ++tokEnd;
-            len = WideCharToMultiByte(CP_UTF8, 0, tokBegin, tokEnd-tokBegin, NULL, 0, NULL, NULL);
-            tmp = xmlMalloc(len);
-            WideCharToMultiByte(CP_UTF8, 0, tokBegin, tokEnd-tokBegin, (char*)tmp, len, NULL, NULL);
-            query = xmlStrncat(query, tmp, len);
-            xmlFree(tmp);
-            tokBegin = tokEnd;
-            query = xmlStrcat(query, mod_post);
-        }
-    }
-
-    return query;
-}
-
-static HRESULT WINAPI domdoc_getElementsByTagName(
-    IXMLDOMDocument3 *iface,
-    BSTR tagName,
-    IXMLDOMNodeList** resultList )
-{
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    xmlChar *query;
-    HRESULT hr;
-    BOOL XPath;
-
-    TRACE("(%p)->(%s, %p)\n", This, debugstr_w(tagName), resultList);
-
-    if (!tagName || !resultList) return E_INVALIDARG;
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
 
-    XPath = This->properties->XPath;
-    This->properties->XPath = TRUE;
-    query = tagName_to_XPath(tagName);
-    hr = create_selection((xmlNodePtr)get_doc(This), query, resultList);
-    xmlFree(query);
-    This->properties->XPath = XPath;
+    TRACE("%p, %s, %p.\n", iface, debugstr_w(name), list);
 
-    return hr;
+    return node_get_elements_by_tagname(doc->node, name, list);
 }
 
 static bool get_node_type_from_typestring(const WCHAR *name, DOMNodeType *type)
@@ -2045,155 +1155,78 @@ static HRESULT get_node_type(const VARIANT *v, DOMNodeType * type)
     return S_OK;
 }
 
-static HRESULT WINAPI domdoc_createNode(
-    IXMLDOMDocument3 *iface,
-    VARIANT Type,
-    BSTR name,
-    BSTR namespaceURI,
-    IXMLDOMNode** node )
+static HRESULT WINAPI domdoc_createNode(IXMLDOMDocument3 *iface, VARIANT type, BSTR name,
+        BSTR uri, IXMLDOMNode **node)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
+    struct domnode *domnode;
     DOMNodeType node_type;
-    xmlNodePtr xmlnode;
-    xmlChar *xml_name, *href;
     HRESULT hr;
 
-    TRACE("(%p)->(%s %s %s %p)\n", This, debugstr_variant(&Type), debugstr_w(name), debugstr_w(namespaceURI), node);
+    TRACE("%p, %s, %s, %s, %p.\n", iface, debugstr_variant(&type), debugstr_w(name), debugstr_w(uri), node);
 
-    if(!node) return E_INVALIDARG;
-
-    hr = get_node_type(&Type, &node_type);
-    if(FAILED(hr)) return hr;
-
-    TRACE("node_type %d\n", node_type);
-
-    /* exit earlier for types that need name */
-    switch(node_type)
-    {
-    case NODE_ELEMENT:
-    case NODE_ATTRIBUTE:
-    case NODE_ENTITY_REFERENCE:
-    case NODE_PROCESSING_INSTRUCTION:
-        if (!name || *name == 0) return E_FAIL;
-        break;
-    default:
-        break;
-    }
-
-    xml_name = xmlchar_from_wchar(name);
-    /* prevent empty href from being allocated */
-    href = namespaceURI ? xmlchar_from_wchar(namespaceURI) : NULL;
-
-    switch(node_type)
-    {
-    case NODE_ELEMENT:
-    {
-        xmlChar *local, *prefix;
-
-        local = xmlSplitQName2(xml_name, &prefix);
-
-        xmlnode = xmlNewDocNode(get_doc(This), NULL, local ? local : xml_name, NULL);
-
-        /* allow creating the default namespace xmlns= */
-        if (local || (href && *href))
-        {
-            xmlNsPtr ns = xmlNewNs(xmlnode, href, prefix);
-            xmlSetNs(xmlnode, ns);
-        }
+    if (!node)
+        return E_INVALIDARG;
 
-        xmlFree(local);
-        xmlFree(prefix);
+    if (FAILED(hr = get_node_type(&type, &node_type)))
+        return hr;
 
-        break;
-    }
-    case NODE_ATTRIBUTE:
+    switch (node_type)
     {
-        xmlChar *local, *prefix;
-
-        local = xmlSplitQName2(xml_name, &prefix);
-
-        xmlnode = (xmlNodePtr)xmlNewDocProp(get_doc(This), local ? local : xml_name, NULL);
+        /* Check if we need a name */
+        case NODE_ELEMENT:
+        case NODE_ATTRIBUTE:
+        case NODE_ENTITY_REFERENCE:
+        case NODE_PROCESSING_INSTRUCTION:
 
-        if (local || (href && *href))
-        {
-            /* we need a floating namespace here, it can't be created linked to attribute from
-               a start */
-            xmlNsPtr ns = xmlNewNs(NULL, href, prefix);
-            xmlSetNs(xmlnode, ns);
-        }
+            if (!name || *name == 0)
+                return E_FAIL;
+            break;
 
-        xmlFree(local);
-        xmlFree(prefix);
+        /* Unsupported types */
+        case NODE_DOCUMENT:
+        case NODE_DOCUMENT_TYPE:
+        case NODE_ENTITY:
+        case NODE_NOTATION:
+            return E_INVALIDARG;
 
-        break;
-    }
-    case NODE_TEXT:
-        xmlnode = (xmlNodePtr)xmlNewDocText(get_doc(This), NULL);
-        break;
-    case NODE_CDATA_SECTION:
-        xmlnode = xmlNewCDataBlock(get_doc(This), NULL, 0);
-        break;
-    case NODE_ENTITY_REFERENCE:
-        xmlnode = xmlNewReference(get_doc(This), xml_name);
-        break;
-    case NODE_PROCESSING_INSTRUCTION:
-        xmlnode = xmlNewDocPI(get_doc(This), xml_name, NULL);
-        break;
-    case NODE_COMMENT:
-        xmlnode = xmlNewDocComment(get_doc(This), NULL);
-        break;
-    case NODE_DOCUMENT_FRAGMENT:
-        xmlnode = xmlNewDocFragment(get_doc(This));
-        break;
-    /* unsupported types */
-    case NODE_DOCUMENT:
-    case NODE_DOCUMENT_TYPE:
-    case NODE_ENTITY:
-    case NODE_NOTATION:
-        free(xml_name);
-        return E_INVALIDARG;
-    default:
-        FIXME("unhandled node type %d\n", node_type);
-        xmlnode = NULL;
-        break;
+        default:
+            break;
     }
 
-    *node = create_node(xmlnode);
-    free(xml_name);
-    free(href);
+    *node = NULL;
 
-    if(*node)
+    if (FAILED(hr = domnode_create(node_type, name, SysStringLen(name), uri, SysStringLen(uri),
+            doc->node, &domnode)))
     {
-        TRACE("created node (%d, %p, %p)\n", node_type, *node, xmlnode);
-        xmldoc_add_orphan(xmlnode->doc, xmlnode);
-        return S_OK;
+        return hr;
     }
 
-    return E_FAIL;
+    return create_node(domnode, node);
 }
 
-static HRESULT WINAPI domdoc_nodeFromID(
-    IXMLDOMDocument3 *iface,
-    BSTR idString,
-    IXMLDOMNode** node )
+static HRESULT WINAPI domdoc_nodeFromID(IXMLDOMDocument3 *iface, BSTR id, IXMLDOMNode **node)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3(iface);
-    FIXME("(%p)->(%s %p)\n", This, debugstr_w(idString), node);
+    FIXME("%p, %s, %p.\n", iface, debugstr_w(id), node);
+
     return E_NOTIMPL;
 }
 
 static HRESULT domdoc_onDataAvailable(void *obj, char *ptr, DWORD len)
 {
-    domdoc *This = obj;
-    xmlDocPtr xmldoc;
+    struct domnode *node = NULL;
+    ISequentialStream *stream;
+    domdoc *doc = obj;
+    HRESULT hr;
 
-    xmldoc = doparse(This, ptr, len, XML_CHAR_ENCODING_NONE);
-    if(xmldoc) {
-        xmldoc->_private = create_priv();
-        return attach_xmldoc(This, xmldoc);
-    }
+    stream_wrapper_create(ptr, len, &stream);
+    hr = parse_stream(stream, false, doc->node->properties, &node);
+    ISequentialStream_Release(stream);
 
-    return E_FAIL;
+    if (hr == S_OK)
+        attach_doc_node(doc, node);
+
+    return hr;
 }
 
 static HRESULT domdoc_load_moniker(domdoc *This, IMoniker *mon)
@@ -2208,25 +1241,22 @@ static HRESULT domdoc_load_moniker(domdoc *This, IMoniker *mon)
     return detach_bsc(bsc);
 }
 
-static HRESULT WINAPI domdoc_load(
-    IXMLDOMDocument3 *iface,
-    VARIANT source,
-    VARIANT_BOOL* isSuccessful )
+static HRESULT WINAPI domdoc_load(IXMLDOMDocument3 *iface, VARIANT source, VARIANT_BOOL *result)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
+    ISequentialStream *stream = NULL;
     LPWSTR filename = NULL;
     HRESULT hr = S_FALSE;
-    xmlDocPtr xmldoc;
+    struct domnode *node;
 
-    TRACE("(%p)->(%s)\n", This, debugstr_variant(&source));
+    TRACE("%p, %s, %p.\n", iface, debugstr_variant(&source), result);
 
-    if (!isSuccessful)
+    if (!result)
         return E_POINTER;
-    *isSuccessful = VARIANT_FALSE;
 
-    assert( &This->node );
+    *result = VARIANT_FALSE;
 
-    switch( V_VT(&source) )
+    switch (V_VT(&source))
     {
     case VT_BSTR:
         filename = V_BSTR(&source);
@@ -2240,13 +1270,14 @@ static HRESULT WINAPI domdoc_load(
             SAFEARRAY *psa = V_ARRAY(&source);
             char *str;
             LONG len;
-            UINT dim = SafeArrayGetDim(psa);
+            UINT dim;
 
+            dim = SafeArrayGetDim(psa);
             switch (dim)
             {
             case 0:
                 ERR("SAFEARRAY == NULL\n");
-                hr = This->error = E_INVALIDARG;
+                hr = doc->error = E_INVALIDARG;
                 break;
             case 1:
                 /* Only takes UTF-8 strings.
@@ -2254,58 +1285,63 @@ static HRESULT WINAPI domdoc_load(
                 hr = SafeArrayAccessData(psa, (void**)&str);
                 if (FAILED(hr))
                 {
-                    This->error = hr;
+                    doc->error = hr;
                     WARN("failed to access array data, hr %#lx.\n", hr);
                     break;
                 }
-                SafeArrayGetUBound(psa, 1, &len);
+                SafeArrayGetUBound(psa, 1, &len);
+
+                if (SUCCEEDED(hr = stream_wrapper_create(str, len + 1, &stream)))
+                {
+                    hr = doc->error = domdoc_load_from_stream(doc, stream);
+                    ISequentialStream_Release(stream);
+                }
+                SafeArrayUnaccessData(psa);
 
-                if ((xmldoc = doparse(This, str, ++len, XML_CHAR_ENCODING_UTF8)))
+                if (hr == S_OK)
                 {
-                    hr = This->error = S_OK;
-                    *isSuccessful = VARIANT_TRUE;
-                    TRACE("parsed document %p\n", xmldoc);
+                    hr = doc->error = S_OK;
+                    *result = VARIANT_TRUE;
                 }
                 else
                 {
-                    This->error = E_FAIL;
+                    doc->error = E_FAIL;
                     TRACE("failed to parse document\n");
                 }
 
-                SafeArrayUnaccessData(psa);
-
-                if(xmldoc)
-                {
-                    xmldoc->_private = create_priv();
-                    return attach_xmldoc(This, xmldoc);
-                }
-                break;
+                return doc->error == S_OK ? S_OK : S_FALSE;
             default:
                 FIXME("unhandled SAFEARRAY dim: %d\n", dim);
-                hr = This->error = E_NOTIMPL;
+                hr = doc->error = E_NOTIMPL;
             }
         }
         break;
     case VT_UNKNOWN:
     {
-        ISequentialStream *stream = NULL;
         IXMLDOMDocument3 *newdoc = NULL;
 
         if (!V_UNKNOWN(&source)) return E_INVALIDARG;
 
-        hr = IUnknown_QueryInterface(V_UNKNOWN(&source), &IID_IXMLDOMDocument3, (void**)&newdoc);
-        if(hr == S_OK)
+        hr = IUnknown_QueryInterface(V_UNKNOWN(&source), &IID_IXMLDOMDocument3, (void **)&newdoc);
+        if (hr == S_OK)
         {
-            if(newdoc)
+            if (newdoc)
             {
-                domdoc *newDoc = impl_from_IXMLDOMDocument3( newdoc );
+                struct domnode *node = get_node_obj((IXMLDOMNode *)newdoc);
+                struct domnode *cloned;
+
+                hr = node_clone_domnode(node, true, &cloned);
+                IXMLDOMDocument3_Release(newdoc);
 
-                xmldoc = xmlCopyDoc(get_doc(newDoc), 1);
-                xmldoc->_private = create_priv();
-                hr = attach_xmldoc(This, xmldoc);
+                if (FAILED(hr))
+                {
+                    WARN("Failed to clone a document, hr %#lx.\n", hr);
+                    return hr;
+                }
 
-                if(SUCCEEDED(hr))
-                    *isSuccessful = VARIANT_TRUE;
+                attach_doc_node(doc, cloned);
+                if (SUCCEEDED(hr))
+                    *result = VARIANT_TRUE;
 
                 return hr;
             }
@@ -2317,9 +1353,9 @@ static HRESULT WINAPI domdoc_load(
 
         if (hr == S_OK)
         {
-            hr = This->error = domdoc_load_from_stream(This, stream);
+            hr = doc->error = domdoc_load_from_stream(doc, stream);
             if (hr == S_OK)
-                *isSuccessful = VARIANT_TRUE;
+                *result = VARIANT_TRUE;
             ISequentialStream_Release(stream);
             return hr;
         }
@@ -2331,46 +1367,50 @@ static HRESULT WINAPI domdoc_load(
         FIXME("VT type not supported (%d)\n", V_VT(&source));
     }
 
-    if ( filename )
+    if (filename)
     {
         IUri *uri = NULL;
         IMoniker *mon;
 
-        if (This->properties->uri)
+        if (doc->node->properties->uri)
         {
-            IUri_Release(This->properties->uri);
-            This->properties->uri = NULL;
+            IUri_Release(doc->node->properties->uri);
+            doc->node->properties->uri = NULL;
         }
 
-        hr = create_uri(This->base_uri, filename, &uri);
+        hr = create_uri(doc->base_uri, filename, &uri);
         if (SUCCEEDED(hr))
             hr = CreateURLMonikerEx2(NULL, uri, &mon, 0);
-        if ( SUCCEEDED(hr) )
+        if (SUCCEEDED(hr))
         {
-            hr = domdoc_load_moniker( This, mon );
+            hr = domdoc_load_moniker(doc, mon);
             IMoniker_Release(mon);
         }
 
         if (SUCCEEDED(hr))
         {
-            get_doc(This)->name = (char *)xmlchar_from_wcharn(filename, -1, TRUE);
-            This->properties->uri = uri;
-            hr = This->error = S_OK;
-            *isSuccessful = VARIANT_TRUE;
+            //get_doc(doc)->name = (char *)xmlchar_from_wcharn(filename, -1, TRUE);
+            doc->node->properties->uri = uri;
+            hr = doc->error = S_OK;
+            *result = VARIANT_TRUE;
         }
         else
         {
             if (uri)
                 IUri_Release(uri);
-            This->error = E_FAIL;
+            doc->error = E_FAIL;
         }
     }
 
-    if(!filename || FAILED(hr)) {
-        xmldoc = xmlNewDoc(NULL);
-        xmldoc->_private = create_priv();
-        hr = attach_xmldoc(This, xmldoc);
-        if(SUCCEEDED(hr))
+    if (!filename || FAILED(hr))
+    {
+        hr = domnode_create(NODE_DOCUMENT, NULL, 0, NULL, 0, NULL, &node);
+        if (node)
+        {
+            node->properties = domdoc_create_properties(doc->node->properties->version);
+            attach_doc_node(doc, node);
+        }
+        if (SUCCEEDED(hr))
             hr = S_FALSE;
     }
 
@@ -2379,13 +1419,9 @@ static HRESULT WINAPI domdoc_load(
     return hr;
 }
 
-
-static HRESULT WINAPI domdoc_get_readyState(
-    IXMLDOMDocument3 *iface,
-    LONG *value )
+static HRESULT WINAPI domdoc_get_readyState(IXMLDOMDocument3 *iface, LONG *value)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3(iface);
-    FIXME("stub! (%p)->(%p)\n", This, value);
+    FIXME("%p, %p.\n", iface, value);
 
     if (!value)
         return E_INVALIDARG;
@@ -2394,470 +1430,329 @@ static HRESULT WINAPI domdoc_get_readyState(
     return S_OK;
 }
 
-
-static HRESULT WINAPI domdoc_get_parseError(
-    IXMLDOMDocument3 *iface,
-    IXMLDOMParseError** errorObj )
+static HRESULT WINAPI domdoc_get_parseError(IXMLDOMDocument3 *iface, IXMLDOMParseError **obj)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
     BSTR error_string = NULL;
 
-    FIXME("(%p)->(%p): creating a dummy parseError\n", iface, errorObj);
+    FIXME("%p, %p semi-stub\n", iface, obj);
 
-    if(This->error)
+    if (doc->error)
         error_string = SysAllocString(L"error");
 
-    *errorObj = create_parseError(This->error, NULL, error_string, NULL, 0, 0, 0);
-    if(!*errorObj) return E_OUTOFMEMORY;
+    *obj = create_parseError(doc->error, NULL, error_string, NULL, 0, 0, 0);
+    if (!*obj) return E_OUTOFMEMORY;
     return S_OK;
 }
 
-
-static HRESULT WINAPI domdoc_get_url(
-    IXMLDOMDocument3 *iface,
-    BSTR* url )
+static HRESULT WINAPI domdoc_get_url(IXMLDOMDocument3 *iface, BSTR *url)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3(iface);
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
 
-    TRACE("(%p)->(%p)\n", This, url);
+    TRACE("%p, %p.\n", iface, url);
 
     if (!url)
         return E_INVALIDARG;
 
-    if (!This->properties->uri)
+    if (!doc->node->properties->uri)
         return return_null_bstr(url);
 
-    return IUri_GetPropertyBSTR(This->properties->uri, Uri_PROPERTY_DISPLAY_URI, url, 0);
+    return IUri_GetPropertyBSTR(doc->node->properties->uri, Uri_PROPERTY_DISPLAY_URI, url, 0);
 }
 
-
-static HRESULT WINAPI domdoc_get_async(
-    IXMLDOMDocument3 *iface,
-    VARIANT_BOOL* isAsync )
+static HRESULT WINAPI domdoc_get_async(IXMLDOMDocument3 *iface, VARIANT_BOOL *v)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
+
+    TRACE("%p, %p.\n", iface, v);
 
-    TRACE("(%p)->(%p: %d)\n", This, isAsync, This->async);
-    *isAsync = This->async;
+    *v = doc->async;
     return S_OK;
 }
 
-
-static HRESULT WINAPI domdoc_put_async(
-    IXMLDOMDocument3 *iface,
-    VARIANT_BOOL isAsync )
+static HRESULT WINAPI domdoc_put_async(IXMLDOMDocument3 *iface, VARIANT_BOOL v)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
 
-    TRACE("(%p)->(%d)\n", This, isAsync);
-    This->async = isAsync;
+    TRACE("%p, %d.\n", iface, v);
+
+    doc->async = v;
     return S_OK;
 }
 
-
-static HRESULT WINAPI domdoc_abort(
-    IXMLDOMDocument3 *iface )
+static HRESULT WINAPI domdoc_abort(IXMLDOMDocument3 *iface)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3(iface);
-    FIXME("%p\n", This);
+    FIXME("%p\n", iface);
+
     return E_NOTIMPL;
 }
 
-/* don't rely on data to be in BSTR format, treat it as WCHAR string */
-static HRESULT WINAPI domdoc_loadXML(
-    IXMLDOMDocument3 *iface,
-    BSTR data,
-    VARIANT_BOOL* isSuccessful )
+/* Don't rely on data to be in BSTR format, treat it as WCHAR string. */
+static HRESULT WINAPI domdoc_loadXML(IXMLDOMDocument3 *iface, BSTR data, VARIANT_BOOL *result)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    xmlDocPtr xmldoc = NULL;
-    HRESULT hr = S_FALSE, hr2;
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
+    struct domnode *node;
+    HRESULT hr = E_FAIL;
+    VARIANT_BOOL b;
+
+    TRACE("%p, %s, %p.\n", iface, debugstr_w(data), result);
 
-    TRACE("(%p)->(%s %p)\n", This, debugstr_w(data), isSuccessful );
+    if (!result) result = &b;
 
-    assert ( &This->node );
+    *result = VARIANT_FALSE;
 
-    if ( isSuccessful )
+    if (data && *data)
     {
-        *isSuccessful = VARIANT_FALSE;
+        ISequentialStream *stream;
+        WCHAR *ptr = data;
 
-        if (data)
+        /* Skip leading spaces. */
+        if (doc->node->properties->version == MSXML_DEFAULT || doc->node->properties->version == MSXML26)
         {
-            WCHAR *ptr = data;
-
-            /* skip leading spaces if needed */
-            if (This->properties->version == MSXML_DEFAULT || This->properties->version == MSXML26)
-                while (*ptr && iswspace(*ptr)) ptr++;
-
-            xmldoc = doparse(This, (char*)ptr, lstrlenW(ptr)*sizeof(WCHAR), XML_CHAR_ENCODING_UTF16LE);
-            if ( !xmldoc )
-            {
-                This->error = E_FAIL;
-                TRACE("failed to parse document\n");
-            }
-            else
-            {
-                hr = This->error = S_OK;
-                *isSuccessful = VARIANT_TRUE;
-                TRACE("parsed document %p\n", xmldoc);
-            }
+            while (*ptr && iswspace(*ptr)) ptr++;
         }
-    }
 
-    if(!xmldoc)
-        xmldoc = xmlNewDoc(NULL);
-    xmldoc->_private = create_priv();
-    hr2 = attach_xmldoc(This, xmldoc);
-    if( FAILED(hr2) )
-        hr = hr2;
+        if (SUCCEEDED(hr = stream_wrapper_create(ptr, lstrlenW(ptr) * sizeof(WCHAR), &stream)))
+        {
+            hr = parse_stream(stream, true, doc->node->properties, &node);
+            ISequentialStream_Release(stream);
+        }
 
-    return hr;
-}
+        if (hr == S_OK)
+        {
+            attach_doc_node(doc, node);
+            *result = VARIANT_TRUE;
+        }
 
-static int XMLCALL domdoc_save_writecallback(void *ctx, const char *buffer, int len)
-{
-    DWORD written = -1;
+        doc->error = hr;
 
-    if(!WriteFile(ctx, buffer, len, &written, NULL))
-    {
-        WARN("write error\n");
-        return -1;
+        if (FAILED(hr)) hr = S_FALSE;
     }
     else
-        return written;
-}
-
-static int XMLCALL domdoc_save_closecallback(void *ctx)
-{
-    return CloseHandle(ctx) ? 0 : -1;
-}
-
-static int XMLCALL domdoc_stream_save_writecallback(void *ctx, const char *buffer, int len)
-{
-    ULONG written = 0;
-    HRESULT hr;
-
-    hr = IStream_Write((IStream*)ctx, buffer, len, &written);
-    TRACE("hr %#lx, %p, %d, %lu.\n", hr, buffer, len, written);
-    if (hr != S_OK)
     {
-        WARN("stream write error, hr %#lx.\n", hr);
-        return -1;
+        domnode_create(NODE_DOCUMENT, NULL, 0, NULL, 0, NULL, &node);
+        node->properties = domdoc_create_properties(doc->node->properties->version);
+        attach_doc_node(doc, node);
+
+        hr = S_FALSE;
     }
-    else
-        return len;
-}
 
-static int XMLCALL domdoc_stream_save_closecallback(void *ctx)
-{
-    IStream_Release((IStream*)ctx);
-    return 0;
+    return hr;
 }
 
-static char *xmldoc_encoding(IXMLDOMDocument3 *doc)
+static HRESULT WINAPI domdoc_save(IXMLDOMDocument3 *iface, VARIANT dest)
 {
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
+    IStream *stream;
     HRESULT hr;
-    IXMLDOMNode *node;
-    char *encoding = NULL;
 
-    hr = IXMLDOMDocument3_get_firstChild(doc, &node);
-    if (hr == S_OK)
-    {
-        DOMNodeType type;
-
-        hr = IXMLDOMNode_get_nodeType(node, &type);
-        if (hr == S_OK && type == NODE_PROCESSING_INSTRUCTION)
-        {
-            IXMLDOMProcessingInstruction *pi;
-            IXMLDOMNode *item;
-            IXMLDOMNamedNodeMap *node_map;
+    TRACE("%p, %s.\n", iface, debugstr_variant(&dest));
 
-            hr = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMProcessingInstruction, (void **)&pi);
-            if (hr == S_OK)
+    switch (V_VT(&dest))
+    {
+        case VT_UNKNOWN:
             {
-                hr = IXMLDOMNode_get_attributes(node, &node_map);
+                IUnknown *unk = V_UNKNOWN(&dest);
+                IXMLDOMDocument3 *document;
+
+                hr = IUnknown_QueryInterface(unk, &IID_IXMLDOMDocument3, (void **)&document);
                 if (hr == S_OK)
                 {
-                    BSTR bstr;
+                    VARIANT_BOOL success;
+                    BSTR xml;
 
-                    bstr = SysAllocString(L"encoding");
-                    hr = IXMLDOMNamedNodeMap_getNamedItem(node_map, bstr, &item);
-                    SysFreeString(bstr);
+                    hr = IXMLDOMDocument3_get_xml(iface, &xml);
                     if (hr == S_OK)
                     {
-                        VARIANT var;
-
-                        hr = IXMLDOMNode_get_nodeValue(item, &var);
-                        if (hr == S_OK)
-                        {
-                            if (V_VT(&var) == VT_BSTR)
-                                encoding = (char *)xmlchar_from_wchar(V_BSTR(&var));
-
-                            VariantClear(&var);
-                        }
+                        hr = IXMLDOMDocument3_loadXML(document, xml, &success);
+                        SysFreeString(xml);
                     }
 
-                    IXMLDOMNamedNodeMap_Release(node_map);
-                }
-
-                IXMLDOMProcessingInstruction_Release(pi);
-            }
-        }
-
-        IXMLDOMNode_Release(node);
-    }
-
-    if (!encoding && (encoding = malloc(sizeof("UTF-8"))))
-        strcpy(encoding, "UTF-8");
-
-    return encoding;
-}
-
-static HRESULT WINAPI domdoc_save(
-    IXMLDOMDocument3 *iface,
-    VARIANT destination )
-{
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    xmlSaveCtxtPtr ctx = NULL;
-    HRESULT ret = S_OK;
-
-    TRACE("(%p)->(%s)\n", This, debugstr_variant(&destination));
-
-    switch (V_VT(&destination))
-    {
-    case VT_UNKNOWN:
-        {
-            IUnknown *pUnk = V_UNKNOWN(&destination);
-            IXMLDOMDocument3 *document;
-            IStream *stream;
-
-            ret = IUnknown_QueryInterface(pUnk, &IID_IXMLDOMDocument3, (void**)&document);
-            if(ret == S_OK)
-            {
-                VARIANT_BOOL success;
-                BSTR xml;
-
-                ret = IXMLDOMDocument3_get_xml(iface, &xml);
-                if(ret == S_OK)
-                {
-                    ret = IXMLDOMDocument3_loadXML(document, xml, &success);
-                    SysFreeString(xml);
+                    IXMLDOMDocument3_Release(document);
+                    return hr;
                 }
 
-                IXMLDOMDocument3_Release(document);
-                return ret;
-            }
-
-            ret = IUnknown_QueryInterface(pUnk, &IID_IStream, (void**)&stream);
-            if(ret == S_OK)
-            {
-                char *encoding = xmldoc_encoding(iface);
-
-                TRACE("using encoding %s\n", encoding ? debugstr_a(encoding) : "default");
-                ctx = xmlSaveToIO(domdoc_stream_save_writecallback,
-                    domdoc_stream_save_closecallback, stream, encoding, XML_SAVE_NO_DECL);
-                free(encoding);
-
-                if(!ctx)
+                hr = IUnknown_QueryInterface(unk, &IID_IStream, (void **)&stream);
+                if (hr == S_OK)
                 {
+                    hr = node_save(doc->node, stream);
                     IStream_Release(stream);
-                    return E_FAIL;
                 }
             }
-        }
-        break;
+            break;
 
     case VT_BSTR:
     case VT_BSTR | VT_BYREF:
         {
-            char *encoding;
-            /* save with file path */
-            HANDLE handle = CreateFileW( (V_VT(&destination) & VT_BYREF)? *V_BSTRREF(&destination) : V_BSTR(&destination),
-                                         GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL );
-            if( handle == INVALID_HANDLE_VALUE )
-            {
-                WARN("failed to create file\n");
-                return E_FAIL;
-            }
+            const WCHAR *path;
 
-            encoding = xmldoc_encoding(iface);
-            TRACE("using encoding %s\n", encoding ? debugstr_a(encoding) : "default");
-            ctx = xmlSaveToIO(domdoc_save_writecallback, domdoc_save_closecallback,
-                              handle, encoding, XML_SAVE_NO_DECL);
-            free(encoding);
+            path = V_VT(&dest) & VT_BYREF ? *V_BSTRREF(&dest) : V_BSTR(&dest);
 
-            if (!ctx)
+            hr = SHCreateStreamOnFileEx(path, STGM_CREATE | STGM_WRITE, FILE_ATTRIBUTE_NORMAL, TRUE, NULL, &stream);
+            if (FAILED(hr))
             {
-                CloseHandle(handle);
-                return E_FAIL;
+                WARN("Failed to create a file stream, hr %#lx.\n", hr);
+                return hr;
             }
+
+            hr = node_save(doc->node, stream);
+            IStream_Release(stream);
         }
         break;
 
     default:
-        FIXME("Unhandled VARIANT: %s\n", debugstr_variant(&destination));
+        FIXME("Unhandled destination type %s.\n", debugstr_variant(&dest));
         return S_FALSE;
     }
 
-    if (xmlSaveDoc(ctx, get_doc(This)) == -1) ret = S_FALSE;
-
-    /* will release resources through close callback */
-    xmlSaveClose(ctx);
-
-    return ret;
+    return hr;
 }
 
-static HRESULT WINAPI domdoc_get_validateOnParse(
-    IXMLDOMDocument3 *iface,
-    VARIANT_BOOL* isValidating )
+static HRESULT WINAPI domdoc_get_validateOnParse(IXMLDOMDocument3 *iface, VARIANT_BOOL *v)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    TRACE("(%p)->(%p: %d)\n", This, isValidating, This->properties->validating);
-    *isValidating = This->properties->validating;
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
+    struct domnode *node = doc->node;
+
+    TRACE("%p, %p.\n", iface, v);
+
+    *v = node->properties->validating;
     return S_OK;
 }
 
-
-static HRESULT WINAPI domdoc_put_validateOnParse(
-    IXMLDOMDocument3 *iface,
-    VARIANT_BOOL isValidating )
+static HRESULT WINAPI domdoc_put_validateOnParse(IXMLDOMDocument3 *iface, VARIANT_BOOL v)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    TRACE("(%p)->(%d)\n", This, isValidating);
-    This->properties->validating = isValidating;
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
+    struct domnode *node = doc->node;
+
+    TRACE("%p, %d.\n", iface, v);
+
+    node->properties->validating = v;
     return S_OK;
 }
 
-
-static HRESULT WINAPI domdoc_get_resolveExternals(
-    IXMLDOMDocument3 *iface,
-    VARIANT_BOOL* isResolving )
+static HRESULT WINAPI domdoc_get_resolveExternals(IXMLDOMDocument3 *iface, VARIANT_BOOL *v)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    TRACE("(%p)->(%p: %d)\n", This, isResolving, This->resolving);
-    *isResolving = This->resolving;
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
+
+    TRACE("%p, %p.\n", iface, v);
+
+    *v = doc->resolving;
     return S_OK;
 }
 
-
-static HRESULT WINAPI domdoc_put_resolveExternals(
-    IXMLDOMDocument3 *iface,
-    VARIANT_BOOL isResolving )
+static HRESULT WINAPI domdoc_put_resolveExternals(IXMLDOMDocument3 *iface, VARIANT_BOOL v)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    TRACE("(%p)->(%d)\n", This, isResolving);
-    This->resolving = isResolving;
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
+
+    TRACE("%p, %d.\n", iface, v);
+
+    doc->resolving = v;
     return S_OK;
 }
 
-
-static HRESULT WINAPI domdoc_get_preserveWhiteSpace(
-    IXMLDOMDocument3 *iface,
-    VARIANT_BOOL* isPreserving )
+static HRESULT WINAPI domdoc_get_preserveWhiteSpace(IXMLDOMDocument3 *iface, VARIANT_BOOL *v)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    TRACE("(%p)->(%p: %d)\n", This, isPreserving, This->properties->preserving);
-    *isPreserving = This->properties->preserving;
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
+    struct domnode *node = doc->node;
+
+    TRACE("%p, %p.\n", iface, v);
+
+    *v = node->properties->preserving;
     return S_OK;
 }
 
-
-static HRESULT WINAPI domdoc_put_preserveWhiteSpace(
-    IXMLDOMDocument3 *iface,
-    VARIANT_BOOL isPreserving )
+static HRESULT WINAPI domdoc_put_preserveWhiteSpace(IXMLDOMDocument3 *iface, VARIANT_BOOL v)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    TRACE("(%p)->(%d)\n", This, isPreserving);
-    This->properties->preserving = isPreserving;
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
+    struct domnode *node = doc->node;
+
+    TRACE("%p, %d.\n", iface, v);
+
+    node->properties->preserving = v;
     return S_OK;
 }
 
-
-static HRESULT WINAPI domdoc_put_onreadystatechange(
-    IXMLDOMDocument3 *iface,
-    VARIANT event )
+static HRESULT WINAPI domdoc_put_onreadystatechange(IXMLDOMDocument3 *iface, VARIANT event)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
 
-    TRACE("(%p)->(%s)\n", This, debugstr_variant(&event));
-    return set_doc_event(This, EVENTID_READYSTATECHANGE, &event);
-}
+    TRACE("%p, %s.\n", iface, debugstr_variant(&event));
 
+    return set_doc_event(doc, EVENTID_READYSTATECHANGE, &event);
+}
 
 static HRESULT WINAPI domdoc_put_onDataAvailable(IXMLDOMDocument3 *iface, VARIANT sink)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    FIXME("(%p)->(%s): stub\n", This, debugstr_variant(&sink));
+    FIXME("%p, %s: stub\n", iface, debugstr_variant(&sink));
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domdoc_put_onTransformNode(IXMLDOMDocument3 *iface, VARIANT sink )
+static HRESULT WINAPI domdoc_put_onTransformNode(IXMLDOMDocument3 *iface, VARIANT sink)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    FIXME("(%p)->(%s): stub\n", This, debugstr_variant(&sink));
+    FIXME("%p, %s: stub\n", iface, debugstr_variant(&sink));
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domdoc_get_namespaces(
-    IXMLDOMDocument3* iface,
-    IXMLDOMSchemaCollection** collection )
+static HRESULT WINAPI domdoc_get_namespaces(IXMLDOMDocument3 *iface, IXMLDOMSchemaCollection **collection)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
+    struct domnode *node = doc->node;
     HRESULT hr;
 
-    FIXME("(%p)->(%p): semi-stub\n", This, collection);
+    FIXME("%p, %p: semi-stub\n", iface, collection);
 
-    if (!collection) return E_POINTER;
+    if (!collection)
+        return E_POINTER;
 
-    if (!This->namespaces)
+    if (!doc->namespaces)
     {
-        hr = SchemaCache_create(This->properties->version, (void**)&This->namespaces);
+        hr = SchemaCache_create(node->properties->version, (void **)&doc->namespaces);
         if (hr != S_OK) return hr;
 
-        hr = cache_from_doc_ns(This->namespaces, &This->node);
+        hr = cache_from_doc_ns(doc->namespaces, doc->node);
         if (hr != S_OK)
-            release_namespaces(This);
+            release_namespaces(doc);
     }
 
-    if (This->namespaces)
-        return IXMLDOMSchemaCollection2_QueryInterface(This->namespaces,
-                   &IID_IXMLDOMSchemaCollection, (void**)collection);
+    if (doc->namespaces)
+        return IXMLDOMSchemaCollection2_QueryInterface(doc->namespaces, &IID_IXMLDOMSchemaCollection, (void **)collection);
 
     return hr;
 }
 
-static HRESULT WINAPI domdoc_get_schemas(
-    IXMLDOMDocument3* iface,
-    VARIANT* schema )
+static HRESULT WINAPI domdoc_get_schemas(IXMLDOMDocument3 *iface, VARIANT *schema)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    IXMLDOMSchemaCollection2* cur_schema = This->properties->schemaCache;
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
+    IXMLDOMSchemaCollection2 *cur_schema;
+    struct domnode *node = doc->node;
     HRESULT hr = S_FALSE;
 
-    TRACE("(%p)->(%p)\n", This, schema);
+    TRACE("%p, %p.\n", iface, schema);
 
     V_VT(schema) = VT_NULL;
     /* just to reset pointer part, cause that's what application is expected to use */
     V_DISPATCH(schema) = NULL;
 
-    if(cur_schema)
+    if ((cur_schema = node->properties->schemaCache))
     {
         hr = IXMLDOMSchemaCollection2_QueryInterface(cur_schema, &IID_IDispatch, (void**)&V_DISPATCH(schema));
-        if(SUCCEEDED(hr))
+        if (SUCCEEDED(hr))
             V_VT(schema) = VT_DISPATCH;
     }
     return hr;
 }
 
-static HRESULT WINAPI domdoc_putref_schemas(
-    IXMLDOMDocument3* iface,
-    VARIANT schema)
+static HRESULT WINAPI domdoc_putref_schemas(IXMLDOMDocument3 *iface, VARIANT schema)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
+    IXMLDOMSchemaCollection2 *new_schema = NULL;
+    struct domnode *node = doc->node;
     HRESULT hr = E_FAIL;
-    IXMLDOMSchemaCollection2* new_schema = NULL;
 
-    FIXME("(%p)->(%s): semi-stub\n", This, debugstr_variant(&schema));
+    FIXME("%p, %s: semi-stub\n", iface, debugstr_variant(&schema));
+
     switch(V_VT(&schema))
     {
     case VT_UNKNOWN:
@@ -2883,158 +1778,53 @@ static HRESULT WINAPI domdoc_putref_schemas(
         WARN("Can't get schema from vt %x\n", V_VT(&schema));
     }
 
-    if(SUCCEEDED(hr))
+    if (SUCCEEDED(hr))
     {
-        IXMLDOMSchemaCollection2* old_schema = InterlockedExchangePointer((void**)&This->properties->schemaCache, new_schema);
-        if(old_schema) IXMLDOMSchemaCollection2_Release(old_schema);
+        IXMLDOMSchemaCollection2 *old_schema = InterlockedExchangePointer((void **)&node->properties->schemaCache, new_schema);
+        if (old_schema)
+            IXMLDOMSchemaCollection2_Release(old_schema);
     }
 
     return hr;
 }
 
-static inline BOOL is_wellformed(xmlDocPtr doc)
-{
-    return doc->properties & XML_DOC_WELLFORMED;
-}
-
-static void LIBXML2_LOG_CALLBACK validate_error(void* ctx, char const* msg, ...)
-{
-    va_list ap;
-    va_start(ap, msg);
-    LIBXML2_CALLBACK_ERR(domdoc_validateNode, msg, ap);
-    va_end(ap);
-}
-
-static void LIBXML2_LOG_CALLBACK validate_warning(void* ctx, char const* msg, ...)
+static HRESULT WINAPI domdoc_validateNode(IXMLDOMDocument3 *iface, IXMLDOMNode *node, IXMLDOMParseError **err)
 {
-    va_list ap;
-    va_start(ap, msg);
-    LIBXML2_CALLBACK_WARN(domdoc_validateNode, msg, ap);
-    va_end(ap);
-}
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
 
-static HRESULT WINAPI domdoc_validateNode(
-    IXMLDOMDocument3* iface,
-    IXMLDOMNode* node,
-    IXMLDOMParseError** err)
-{
-    domdoc* This = impl_from_IXMLDOMDocument3(iface);
-    LONG state, err_code = 0;
-    HRESULT hr = S_OK;
-    int validated = 0;
+    TRACE("%p, %p, %p.\n", iface, node, err);
 
-    TRACE("(%p)->(%p, %p)\n", This, node, err);
-    IXMLDOMDocument3_get_readyState(iface, &state);
-    if (state != READYSTATE_COMPLETE)
-    {
-        if (err)
-           *err = create_parseError(err_code, NULL, NULL, NULL, 0, 0, 0);
-        return E_PENDING;
-    }
+    /* TODO: check ready state */
 
     if (!node)
     {
         if (err)
-            *err = create_parseError(err_code, NULL, NULL, NULL, 0, 0, 0);
+            *err = create_parseError(0, NULL, NULL, NULL, 0, 0, 0);
         return E_POINTER;
     }
 
-    if (!get_node_obj(node)->node || get_node_obj(node)->node->doc != get_doc(This))
-    {
-        if (err)
-            *err = create_parseError(err_code, NULL, NULL, NULL, 0, 0, 0);
-        return E_FAIL;
-    }
-
-    if (!is_wellformed(get_doc(This)))
-    {
-        ERR("doc not well-formed\n");
-        if (err)
-            *err = create_parseError(E_XML_NOTWF, NULL, NULL, NULL, 0, 0, 0);
-        return S_FALSE;
-    }
-
-    /* DTD validation */
-    if (get_doc(This)->intSubset || get_doc(This)->extSubset)
-    {
-        xmlValidCtxtPtr vctx = xmlNewValidCtxt();
-        vctx->error = validate_error;
-        vctx->warning = validate_warning;
-        ++validated;
-
-        if (!((node == (IXMLDOMNode*)iface)?
-              xmlValidateDocument(vctx, get_doc(This)) :
-              xmlValidateElement(vctx, get_doc(This), get_node_obj(node)->node)))
-        {
-            /* TODO: get a real error code here */
-            TRACE("DTD validation failed\n");
-            err_code = E_XML_INVALID;
-            hr = S_FALSE;
-        }
-        xmlFreeValidCtxt(vctx);
-    }
-
-    /* Schema validation */
-    if (hr == S_OK && This->properties->schemaCache != NULL)
-    {
-
-        hr = SchemaCache_validate_tree(This->properties->schemaCache, get_node_obj(node)->node);
-        if (SUCCEEDED(hr))
-        {
-            ++validated;
-            /* TODO: get a real error code here */
-            if (hr == S_OK)
-            {
-                TRACE("schema validation succeeded\n");
-            }
-            else
-            {
-                ERR("schema validation failed\n");
-                err_code = E_XML_INVALID;
-            }
-        }
-        else
-        {
-            /* not really OK, just didn't find a schema for the ns */
-            hr = S_OK;
-        }
-    }
-
-    if (!validated)
-    {
-        ERR("no DTD or schema found\n");
-        err_code = E_XML_NODTD;
-        hr = S_FALSE;
-    }
-
-    if (err)
-        *err = create_parseError(err_code, NULL, NULL, NULL, 0, 0, 0);
-
-    return hr;
+    return node_validate(doc->node, node, err);
 }
 
-static HRESULT WINAPI domdoc_validate(
-    IXMLDOMDocument3* iface,
-    IXMLDOMParseError** err)
+static HRESULT WINAPI domdoc_validate(IXMLDOMDocument3 *iface, IXMLDOMParseError **err)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    TRACE("(%p)->(%p)\n", This, err);
-    return IXMLDOMDocument3_validateNode(iface, (IXMLDOMNode*)iface, err);
+    TRACE("%p, %p.\n", iface, err);
+
+    return IXMLDOMDocument3_validateNode(iface, (IXMLDOMNode *)iface, err);
 }
 
-static HRESULT WINAPI domdoc_setProperty(
-    IXMLDOMDocument3* iface,
-    BSTR p,
-    VARIANT value)
+static HRESULT WINAPI domdoc_setProperty(IXMLDOMDocument3 *iface, BSTR p, VARIANT value)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
+    struct domdoc_properties *properties = doc->node->properties;
+    HRESULT hr;
+    VARIANT v;
 
-    TRACE("(%p)->(%s %s)\n", This, debugstr_w(p), debugstr_variant(&value));
+    TRACE("%p, %s, %s.\n", iface, debugstr_w(p), debugstr_variant(&value));
 
     if (wcsicmp(p, L"SelectionLanguage") == 0)
     {
         VARIANT varStr;
-        HRESULT hr;
         BSTR bstr;
 
         V_VT(&varStr) = VT_EMPTY;
@@ -3049,21 +1839,20 @@ static HRESULT WINAPI domdoc_setProperty(
 
         hr = S_OK;
         if (wcsicmp(bstr, L"XPath") == 0)
-            This->properties->XPath = TRUE;
+            properties->XPath = TRUE;
         else if (wcsicmp(bstr, L"XSLPattern") == 0)
-            This->properties->XPath = FALSE;
+            properties->XPath = FALSE;
         else
             hr = E_FAIL;
 
         VariantClear(&varStr);
         return hr;
     }
-    else if (wcsicmp(p, L"SelectionNamespaces") == 0)
+    else if (!wcsicmp(p, L"SelectionNamespaces"))
     {
-        xmlChar *nsStr = (xmlChar*)This->properties->selectNsStr;
+        xmlChar *nsStr = (xmlChar *)properties->selectNsStr;
         struct list *pNsList;
         VARIANT varStr;
-        HRESULT hr;
         BSTR bstr;
 
         V_VT(&varStr) = VT_EMPTY;
@@ -3078,22 +1867,20 @@ static HRESULT WINAPI domdoc_setProperty(
 
         hr = S_OK;
 
-        pNsList = &(This->properties->selectNsList);
-        clear_selectNsList(pNsList);
+        pNsList = &properties->selectNsList;
+        domdoc_properties_clear_selection_namespaces(pNsList);
         free(nsStr);
         nsStr = xmlchar_from_wchar(bstr);
 
         TRACE("property value: \"%s\"\n", debugstr_w(bstr));
 
-        This->properties->selectNsStr = nsStr;
-        This->properties->selectNsStr_len = xmlStrlen(nsStr);
+        properties->selectNsStr = nsStr;
+        properties->selectNsStr_len = xmlStrlen(nsStr);
         if (bstr && *bstr)
         {
             xmlChar *pTokBegin, *pTokEnd, *pTokInner;
             select_ns_entry* ns_entry = NULL;
-            xmlXPathContextPtr ctx;
 
-            ctx = xmlXPathNewContext(This->node.node->doc);
             pTokBegin = nsStr;
 
             /* skip leading spaces */
@@ -3158,11 +1945,7 @@ static HRESULT WINAPI domdoc_setProperty(
                         ns_entry->href_end = *(pTokEnd-1);
                         *(pTokEnd-1) = 0;
                         list_add_tail(pNsList, &ns_entry->entry);
-                        /*let libxml figure out if they're valid from here ;)*/
-                        if (xmlXPathRegisterNs(ctx, ns_entry->prefix, ns_entry->href) != 0)
-                        {
-                            hr = E_FAIL;
-                        }
+
                         ns_entry = NULL;
                         continue;
                     }
@@ -3184,7 +1967,6 @@ static HRESULT WINAPI domdoc_setProperty(
                 }
             }
             free(ns_entry);
-            xmlXPathFreeContext(ctx);
         }
 
         VariantClear(&varStr);
@@ -3192,16 +1974,15 @@ static HRESULT WINAPI domdoc_setProperty(
     }
     else if (wcsicmp(p, L"ValidateOnParse") == 0)
     {
-        if (This->properties->version < MSXML4)
+        if (properties->version < MSXML4)
             return E_FAIL;
         else
         {
-            This->properties->validating = V_BOOL(&value);
+            properties->validating = V_BOOL(&value);
             return S_OK;
         }
     }
-    else if (wcsicmp(p, L"ProhibitDTD") == 0 ||
-             wcsicmp(p, L"NewParser") == 0 ||
+    else if (wcsicmp(p, L"NewParser") == 0 ||
              wcsicmp(p, L"ResolveExternals") == 0 ||
              wcsicmp(p, L"AllowXsltScript") == 0 ||
              wcsicmp(p, L"NormalizeAttributeValues") == 0 ||
@@ -3214,31 +1995,40 @@ static HRESULT WINAPI domdoc_setProperty(
         return S_OK;
     }
 
+    if (!wcscmp(p, L"ProhibitDTD"))
+    {
+        V_VT(&v) = VT_EMPTY;
+        if (FAILED(hr = VariantChangeType(&v, &value, 0, VT_BOOL)))
+        {
+            WARN("Failed to convert to boolean.\n");
+            return hr;
+        }
+
+        properties->prohibit_dtd = V_BOOL(&v) == VARIANT_TRUE;
+        return S_OK;
+    }
+
     FIXME("Unknown property %s\n", debugstr_w(p));
     return E_FAIL;
 }
 
-static HRESULT WINAPI domdoc_getProperty(
-    IXMLDOMDocument3* iface,
-    BSTR p,
-    VARIANT* var)
+static HRESULT WINAPI domdoc_getProperty(IXMLDOMDocument3 *iface, BSTR p, VARIANT *var)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
+    domdoc *doc = impl_from_IXMLDOMDocument3(iface);
+    struct domdoc_properties *properties = doc->node->properties;
 
-    TRACE("(%p)->(%s)\n", This, debugstr_w(p));
+    TRACE("%p, %s, %p.\n", iface, debugstr_w(p), var);
 
     if (!var)
         return E_INVALIDARG;
 
-    if (wcsicmp(p, L"SelectionLanguage") == 0)
+    if (!wcsicmp(p, L"SelectionLanguage"))
     {
         V_VT(var) = VT_BSTR;
-        V_BSTR(var) = This->properties->XPath ?
-                      SysAllocString(L"XPath") :
-                      SysAllocString(L"XSLPattern");
+        V_BSTR(var) = SysAllocString(properties->XPath ? L"XPath" : L"XSLPattern");
         return V_BSTR(var) ? S_OK : E_OUTOFMEMORY;
     }
-    else if (wcsicmp(p, L"SelectionNamespaces") == 0)
+    else if (!wcsicmp(p, L"SelectionNamespaces"))
     {
         int lenA, lenW;
         BSTR rebuiltStr, cur;
@@ -3247,9 +2037,9 @@ static HRESULT WINAPI domdoc_getProperty(
         select_ns_entry* pNsEntry;
 
         V_VT(var) = VT_BSTR;
-        nsStr = This->properties->selectNsStr;
-        pNsList = &This->properties->selectNsList;
-        lenA = This->properties->selectNsStr_len;
+        nsStr = properties->selectNsStr;
+        pNsList = &properties->selectNsList;
+        lenA = properties->selectNsStr_len;
         lenW = MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)nsStr, lenA+1, NULL, 0);
         rebuiltStr = malloc(lenW * sizeof(WCHAR));
         MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)nsStr, lenA+1, rebuiltStr, lenW);
@@ -3273,30 +2063,33 @@ static HRESULT WINAPI domdoc_getProperty(
         free(rebuiltStr);
         return S_OK;
     }
-    else if (wcsicmp(p, L"ValidateOnParse") == 0)
+    else if (!wcsicmp(p, L"ValidateOnParse"))
     {
-        if (This->properties->version < MSXML4)
+        if (properties->version < MSXML4)
             return E_FAIL;
         else
         {
             V_VT(var) = VT_BOOL;
-            V_BOOL(var) = This->properties->validating;
+            V_BOOL(var) = properties->validating;
             return S_OK;
         }
     }
 
+    if (!wcscmp(p, L"ProhibitDTD"))
+    {
+        V_VT(var) = VT_BOOL;
+        V_BOOL(var) = properties->prohibit_dtd ? VARIANT_TRUE : VARIANT_FALSE;
+        return S_OK;
+    }
+
     FIXME("Unknown property %s\n", debugstr_w(p));
     return E_FAIL;
 }
 
-static HRESULT WINAPI domdoc_importNode(
-    IXMLDOMDocument3* iface,
-    IXMLDOMNode* node,
-    VARIANT_BOOL deep,
-    IXMLDOMNode** clone)
+static HRESULT WINAPI domdoc_importNode(IXMLDOMDocument3 *iface, IXMLDOMNode *node, VARIANT_BOOL deep, IXMLDOMNode **clone)
 {
-    domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    FIXME("(%p)->(%p %d %p): stub\n", This, node, deep, clone);
+    FIXME("%p, %p, %d, %p: stub\n", iface, node, deep, clone);
+
     return E_NOTIMPL;
 }
 
@@ -3348,7 +2141,7 @@ static const struct IXMLDOMDocument3Vtbl XMLDOMDocument3Vtbl =
     domdoc_get_doctype,
     domdoc_get_implementation,
     domdoc_get_documentElement,
-    domdoc_put_documentElement,
+    domdoc_putref_documentElement,
     domdoc_createElement,
     domdoc_createDocumentFragment,
     domdoc_createTextNode,
@@ -3392,41 +2185,41 @@ static const struct IXMLDOMDocument3Vtbl XMLDOMDocument3Vtbl =
 static HRESULT WINAPI ConnectionPointContainer_QueryInterface(IConnectionPointContainer *iface,
                                                               REFIID riid, void **ppv)
 {
-    domdoc *This = impl_from_IConnectionPointContainer(iface);
-    return IXMLDOMDocument3_QueryInterface(&This->IXMLDOMDocument3_iface, riid, ppv);
+    domdoc *doc = impl_from_IConnectionPointContainer(iface);
+    return IXMLDOMDocument3_QueryInterface(&doc->IXMLDOMDocument3_iface, riid, ppv);
 }
 
 static ULONG WINAPI ConnectionPointContainer_AddRef(IConnectionPointContainer *iface)
 {
-    domdoc *This = impl_from_IConnectionPointContainer(iface);
-    return IXMLDOMDocument3_AddRef(&This->IXMLDOMDocument3_iface);
+    domdoc *doc = impl_from_IConnectionPointContainer(iface);
+    return IXMLDOMDocument3_AddRef(&doc->IXMLDOMDocument3_iface);
 }
 
 static ULONG WINAPI ConnectionPointContainer_Release(IConnectionPointContainer *iface)
 {
-    domdoc *This = impl_from_IConnectionPointContainer(iface);
-    return IXMLDOMDocument3_Release(&This->IXMLDOMDocument3_iface);
+    domdoc *doc = impl_from_IConnectionPointContainer(iface);
+    return IXMLDOMDocument3_Release(&doc->IXMLDOMDocument3_iface);
 }
 
 static HRESULT WINAPI ConnectionPointContainer_EnumConnectionPoints(IConnectionPointContainer *iface,
         IEnumConnectionPoints **ppEnum)
 {
-    domdoc *This = impl_from_IConnectionPointContainer(iface);
-    FIXME("(%p)->(%p): stub\n", This, ppEnum);
+    FIXME("%p, %p: stub\n", iface, ppEnum);
+
     return E_NOTIMPL;
 }
 
 static HRESULT WINAPI ConnectionPointContainer_FindConnectionPoint(IConnectionPointContainer *iface,
         REFIID riid, IConnectionPoint **cp)
 {
-    domdoc *This = impl_from_IConnectionPointContainer(iface);
+    domdoc *doc = impl_from_IConnectionPointContainer(iface);
     ConnectionPoint *iter;
 
-    TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), cp);
+    TRACE("%p, %s, %p.\n", iface, debugstr_guid(riid), cp);
 
     *cp = NULL;
 
-    for(iter = This->cp_list; iter; iter = iter->next)
+    for (iter = doc->cp_list; iter; iter = iter->next)
     {
         if (IsEqualGUID(iter->iid, riid))
             *cp = &iter->IConnectionPoint_iface;
@@ -3440,7 +2233,6 @@ static HRESULT WINAPI ConnectionPointContainer_FindConnectionPoint(IConnectionPo
 
     FIXME("unsupported riid %s\n", debugstr_guid(riid));
     return CONNECT_E_NOCONNECTION;
-
 }
 
 static const struct IConnectionPointContainerVtbl ConnectionPointContainerVtbl =
@@ -3452,13 +2244,9 @@ static const struct IConnectionPointContainerVtbl ConnectionPointContainerVtbl =
     ConnectionPointContainer_FindConnectionPoint
 };
 
-/* IConnectionPoint */
-static HRESULT WINAPI ConnectionPoint_QueryInterface(IConnectionPoint *iface,
-                                                     REFIID riid, void **ppv)
+static HRESULT WINAPI ConnectionPoint_QueryInterface(IConnectionPoint *iface, REFIID riid, void **ppv)
 {
-    ConnectionPoint *This = impl_from_IConnectionPoint(iface);
-
-    TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv );
+    TRACE("%p, %s, %p.\n", iface, debugstr_guid(riid), ppv);
 
     *ppv = NULL;
 
@@ -3604,68 +2392,66 @@ static void ConnectionPoint_Init(ConnectionPoint *cp, struct domdoc *doc, REFIID
     cp->container = &doc->IConnectionPointContainer_iface;
 }
 
-/* domdoc implementation of IObjectWithSite */
-static HRESULT WINAPI
-domdoc_ObjectWithSite_QueryInterface( IObjectWithSite* iface, REFIID riid, void** ppvObject )
+static HRESULT WINAPI domdoc_ObjectWithSite_QueryInterface(IObjectWithSite* iface, REFIID riid, void **obj)
 {
-    domdoc *This = impl_from_IObjectWithSite(iface);
-    return IXMLDOMDocument3_QueryInterface(&This->IXMLDOMDocument3_iface, riid, ppvObject);
+    domdoc *doc = impl_from_IObjectWithSite(iface);
+    return IXMLDOMDocument3_QueryInterface(&doc->IXMLDOMDocument3_iface, riid, obj);
 }
 
-static ULONG WINAPI domdoc_ObjectWithSite_AddRef( IObjectWithSite* iface )
+static ULONG WINAPI domdoc_ObjectWithSite_AddRef(IObjectWithSite *iface)
 {
-    domdoc *This = impl_from_IObjectWithSite(iface);
-    return IXMLDOMDocument3_AddRef(&This->IXMLDOMDocument3_iface);
+    domdoc *doc = impl_from_IObjectWithSite(iface);
+    return IXMLDOMDocument3_AddRef(&doc->IXMLDOMDocument3_iface);
 }
 
-static ULONG WINAPI domdoc_ObjectWithSite_Release( IObjectWithSite* iface )
+static ULONG WINAPI domdoc_ObjectWithSite_Release(IObjectWithSite *iface)
 {
-    domdoc *This = impl_from_IObjectWithSite(iface);
-    return IXMLDOMDocument3_Release(&This->IXMLDOMDocument3_iface);
+    domdoc *doc = impl_from_IObjectWithSite(iface);
+    return IXMLDOMDocument3_Release(&doc->IXMLDOMDocument3_iface);
 }
 
-static HRESULT WINAPI domdoc_ObjectWithSite_GetSite( IObjectWithSite *iface, REFIID iid, void **ppvSite )
+static HRESULT WINAPI domdoc_ObjectWithSite_GetSite(IObjectWithSite *iface, REFIID iid, void **obj)
 {
-    domdoc *This = impl_from_IObjectWithSite(iface);
+    domdoc *doc = impl_from_IObjectWithSite(iface);
 
-    TRACE("(%p)->(%s %p)\n", This, debugstr_guid( iid ), ppvSite );
+    TRACE("%p, %s, %p.\n", iface, debugstr_guid(iid), obj);
 
-    if ( !This->site )
+    if (!doc->site)
         return E_FAIL;
 
-    return IUnknown_QueryInterface( This->site, iid, ppvSite );
+    return IUnknown_QueryInterface(doc->site, iid, obj);
 }
 
-static HRESULT WINAPI domdoc_ObjectWithSite_SetSite( IObjectWithSite *iface, IUnknown *punk )
+static HRESULT WINAPI domdoc_ObjectWithSite_SetSite(IObjectWithSite *iface, IUnknown *punk)
 {
-    domdoc *This = impl_from_IObjectWithSite(iface);
+    domdoc *doc = impl_from_IObjectWithSite(iface);
 
-    TRACE("(%p)->(%p)\n", iface, punk);
+    TRACE("%p, %p.\n", iface, punk);
 
-    if(!punk)
+    if (!punk)
     {
-        if(This->site)
+        if (doc->site)
         {
-            IUnknown_Release( This->site );
-            This->site = NULL;
+            IUnknown_Release(doc->site);
+            doc->site = NULL;
         }
 
-        if(This->base_uri)
+        if (doc->base_uri)
         {
-            IUri_Release(This->base_uri);
-            This->base_uri = NULL;
+            IUri_Release(doc->base_uri);
+            doc->base_uri = NULL;
         }
 
         return S_OK;
     }
 
-    IUnknown_AddRef( punk );
+    IUnknown_AddRef(punk);
 
-    if(This->site)
-        IUnknown_Release( This->site );
+    if (doc->site)
+        IUnknown_Release(doc->site);
 
-    This->site = punk;
-    This->base_uri = get_base_uri(This->site);
+    doc->site = punk;
+    doc->base_uri = get_base_uri(doc->site);
 
     return S_OK;
 }
@@ -3681,20 +2467,20 @@ static const IObjectWithSiteVtbl domdocObjectSite =
 
 static HRESULT WINAPI domdoc_Safety_QueryInterface(IObjectSafety *iface, REFIID riid, void **ppv)
 {
-    domdoc *This = impl_from_IObjectSafety(iface);
-    return IXMLDOMDocument3_QueryInterface(&This->IXMLDOMDocument3_iface, riid, ppv);
+    domdoc *doc = impl_from_IObjectSafety(iface);
+    return IXMLDOMDocument3_QueryInterface(&doc->IXMLDOMDocument3_iface, riid, ppv);
 }
 
 static ULONG WINAPI domdoc_Safety_AddRef(IObjectSafety *iface)
 {
-    domdoc *This = impl_from_IObjectSafety(iface);
-    return IXMLDOMDocument3_AddRef(&This->IXMLDOMDocument3_iface);
+    domdoc *doc = impl_from_IObjectSafety(iface);
+    return IXMLDOMDocument3_AddRef(&doc->IXMLDOMDocument3_iface);
 }
 
 static ULONG WINAPI domdoc_Safety_Release(IObjectSafety *iface)
 {
-    domdoc *This = impl_from_IObjectSafety(iface);
-    return IXMLDOMDocument3_Release(&This->IXMLDOMDocument3_iface);
+    domdoc *doc = impl_from_IObjectSafety(iface);
+    return IXMLDOMDocument3_Release(&doc->IXMLDOMDocument3_iface);
 }
 
 #define SAFETY_SUPPORTED_OPTIONS (INTERFACESAFE_FOR_UNTRUSTED_CALLER|INTERFACESAFE_FOR_UNTRUSTED_DATA|INTERFACE_USES_SECURITY_MANAGER)
@@ -3702,14 +2488,15 @@ static ULONG WINAPI domdoc_Safety_Release(IObjectSafety *iface)
 static HRESULT WINAPI domdoc_Safety_GetInterfaceSafetyOptions(IObjectSafety *iface, REFIID riid,
         DWORD *supported, DWORD *enabled)
 {
-    domdoc *This = impl_from_IObjectSafety(iface);
+    domdoc *doc = impl_from_IObjectSafety(iface);
 
-    TRACE("(%p)->(%s %p %p)\n", This, debugstr_guid(riid), supported, enabled);
+    TRACE("%p, %s, %p, %p.\n", iface, debugstr_guid(riid), supported, enabled);
 
-    if(!supported || !enabled) return E_POINTER;
+    if (!supported || !enabled)
+        return E_POINTER;
 
     *supported = SAFETY_SUPPORTED_OPTIONS;
-    *enabled = This->safeopt;
+    *enabled = doc->safeopt;
 
     return S_OK;
 }
@@ -3739,7 +2526,8 @@ static const IObjectSafetyVtbl domdocObjectSafetyVtbl = {
     domdoc_Safety_SetInterfaceSafetyOptions
 };
 
-static const tid_t domdoc_iface_tids[] = {
+static const tid_t domdoc_iface_tids[] =
+{
     IXMLDOMDocument3_tid,
     0
 };
@@ -3751,85 +2539,51 @@ static dispex_static_data_t domdoc_dispex = {
     domdoc_iface_tids
 };
 
-HRESULT get_domdoc_from_xmldoc(xmlDocPtr xmldoc, IXMLDOMDocument3 **document)
-{
-    domdoc *doc;
-
-    doc = malloc(sizeof(*doc));
-    if( !doc )
-        return E_OUTOFMEMORY;
-
-    doc->IXMLDOMDocument3_iface.lpVtbl = &XMLDOMDocument3Vtbl;
-    doc->IPersistStreamInit_iface.lpVtbl = &xmldoc_IPersistStreamInit_VTable;
-    doc->IObjectWithSite_iface.lpVtbl = &domdocObjectSite;
-    doc->IObjectSafety_iface.lpVtbl = &domdocObjectSafetyVtbl;
-    doc->IConnectionPointContainer_iface.lpVtbl = &ConnectionPointContainerVtbl;
-    doc->ref = 1;
-    doc->async = VARIANT_TRUE;
-    doc->resolving = 0;
-    doc->properties = properties_add_ref(properties_from_xmlDocPtr(xmldoc));
-    doc->error = S_OK;
-    doc->site = NULL;
-    doc->base_uri = NULL;
-    doc->safeopt = 0;
-    doc->cp_list = NULL;
-    doc->namespaces = NULL;
-    memset(doc->events, 0, sizeof(doc->events));
-
-    /* events connection points */
-    ConnectionPoint_Init(&doc->cp_dispatch, doc, &IID_IDispatch);
-    ConnectionPoint_Init(&doc->cp_propnotif, doc, &IID_IPropertyNotifySink);
-    ConnectionPoint_Init(&doc->cp_domdocevents, doc, &DIID_XMLDOMDocumentEvents);
-
-    init_xmlnode(&doc->node, (xmlNodePtr)xmldoc, (IXMLDOMNode*)&doc->IXMLDOMDocument3_iface,
-            &domdoc_dispex);
-
-    *document = &doc->IXMLDOMDocument3_iface;
-
-    TRACE("returning iface %p\n", *document);
-    return S_OK;
-}
-
-HRESULT dom_document_create(MSXML_VERSION version, void **ppObj)
+HRESULT dom_document_create(MSXML_VERSION version, void **obj)
 {
-    xmlDocPtr xmldoc;
+    struct domnode *node;
     HRESULT hr;
 
-    TRACE("(%d, %p)\n", version, ppObj);
-
-    xmldoc = xmlNewDoc(NULL);
-    if(!xmldoc)
-        return E_OUTOFMEMORY;
+    TRACE("%d, %p.\n", version, obj);
 
-    xmldoc_init(xmldoc, version);
+    *obj = NULL;
 
-    hr = get_domdoc_from_xmldoc(xmldoc, (IXMLDOMDocument3**)ppObj);
-    if(FAILED(hr))
-    {
-        properties_release(properties_from_xmlDocPtr(xmldoc));
-        free(xmldoc->_private);
-        xmlFreeDoc(xmldoc);
+    if (FAILED(hr = domnode_create(NODE_DOCUMENT, NULL, 0, NULL, 0, NULL, &node)))
         return hr;
-    }
+    node->properties = domdoc_create_properties(version);
+
+    hr = create_domdoc(node, (IUnknown **)obj);
+    if (FAILED(hr))
+        domnode_destroy_tree(node);
 
     return hr;
 }
 
-IUnknown* create_domdoc( xmlNodePtr node )
+HRESULT create_domdoc(struct domnode *node, IUnknown **obj)
 {
-    xmlDocPtr doc = (xmlDocPtr)node;
-    IUnknown *obj = NULL;
-    HRESULT hr;
+    domdoc *object;
 
-    TRACE("(%p)\n", node);
+    *obj = NULL;
 
-    if (!doc->_private)
-        xmldoc_init(doc, MSXML6);
-    xmldoc_add_ref(doc);
+    if (!(object = calloc(1, sizeof(*object))))
+        return E_OUTOFMEMORY;
 
-    hr = get_domdoc_from_xmldoc(doc, (IXMLDOMDocument3**)&obj);
-    if (FAILED(hr))
-        return NULL;
+    object->IXMLDOMDocument3_iface.lpVtbl = &XMLDOMDocument3Vtbl;
+    object->IPersistStreamInit_iface.lpVtbl = &xmldoc_IPersistStreamInit_VTable;
+    object->IObjectWithSite_iface.lpVtbl = &domdocObjectSite;
+    object->IObjectSafety_iface.lpVtbl = &domdocObjectSafetyVtbl;
+    object->IConnectionPointContainer_iface.lpVtbl = &ConnectionPointContainerVtbl;
+    object->refcount = 1;
+    object->async = VARIANT_TRUE;
+    object->node = domnode_addref(node);
 
-    return obj;
+    ConnectionPoint_Init(&object->cp_dispatch, object, &IID_IDispatch);
+    ConnectionPoint_Init(&object->cp_propnotif, object, &IID_IPropertyNotifySink);
+    ConnectionPoint_Init(&object->cp_domdocevents, object, &DIID_XMLDOMDocumentEvents);
+
+    init_dispex(&object->dispex, (IUnknown *)&object->IXMLDOMDocument3_iface, &domdoc_dispex);
+
+    *obj = (IUnknown *)&object->IXMLDOMDocument3_iface;
+
+    return S_OK;
 }
diff --git a/dlls/msxml3/domimpl.c b/dlls/msxml3/domimpl.c
index 6442df3dcd3f..4735c357b915 100644
--- a/dlls/msxml3/domimpl.c
+++ b/dlls/msxml3/domimpl.c
@@ -38,7 +38,7 @@ typedef struct _domimpl
 {
     DispatchEx dispex;
     IXMLDOMImplementation IXMLDOMImplementation_iface;
-    LONG ref;
+    LONG refcount;
 } domimpl;
 
 static inline domimpl *impl_from_IXMLDOMImplementation( IXMLDOMImplementation *iface )
@@ -46,32 +46,30 @@ static inline domimpl *impl_from_IXMLDOMImplementation( IXMLDOMImplementation *i
     return CONTAINING_RECORD(iface, domimpl, IXMLDOMImplementation_iface);
 }
 
-static HRESULT WINAPI domimpl_QueryInterface(
-    IXMLDOMImplementation *iface,
-    REFIID riid,
-    void** ppvObject )
+static HRESULT WINAPI domimpl_QueryInterface(IXMLDOMImplementation *iface, REFIID riid, void **obj)
 {
-    domimpl *This = impl_from_IXMLDOMImplementation( iface );
-    TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppvObject);
+    domimpl *domimpl = impl_from_IXMLDOMImplementation(iface);
+
+    TRACE("%p, %s, %p.\n", iface, debugstr_guid(riid), obj);
 
-    if ( IsEqualGUID( riid, &IID_IXMLDOMImplementation ) ||
-         IsEqualGUID( riid, &IID_IDispatch ) ||
-         IsEqualGUID( riid, &IID_IUnknown ) )
+    if (IsEqualGUID(riid, &IID_IXMLDOMImplementation) ||
+        IsEqualGUID(riid, &IID_IDispatch) ||
+        IsEqualGUID(riid, &IID_IUnknown))
     {
-        *ppvObject = iface;
+        *obj = iface;
     }
-    else if (dispex_query_interface(&This->dispex, riid, ppvObject))
+    else if (dispex_query_interface(&domimpl->dispex, riid, obj))
     {
-        return *ppvObject ? S_OK : E_NOINTERFACE;
+        return *obj ? S_OK : E_NOINTERFACE;
     }
     else
     {
         TRACE("Unsupported interface %s\n", debugstr_guid(riid));
-        *ppvObject = NULL;
+        *obj = NULL;
         return E_NOINTERFACE;
     }
 
-    IXMLDOMImplementation_AddRef( iface );
+    IXMLDOMImplementation_AddRef(iface);
 
     return S_OK;
 }
@@ -79,69 +77,60 @@ static HRESULT WINAPI domimpl_QueryInterface(
 static ULONG WINAPI domimpl_AddRef(IXMLDOMImplementation *iface)
 {
     domimpl *domimpl = impl_from_IXMLDOMImplementation(iface);
-    ULONG ref = InterlockedIncrement(&domimpl->ref);
-    TRACE("%p, refcount %lu.\n", iface, ref);
-    return ref;
+    ULONG refcount = InterlockedIncrement(&domimpl->refcount);
+
+    TRACE("%p, refcount %lu.\n", iface, refcount);
+
+    return refcount;
 }
 
 static ULONG WINAPI domimpl_Release(IXMLDOMImplementation *iface)
 {
     domimpl *domimpl = impl_from_IXMLDOMImplementation(iface);
-    ULONG ref = InterlockedDecrement(&domimpl->ref);
+    ULONG refcount = InterlockedDecrement(&domimpl->refcount);
 
-    TRACE("%p, refcount %lu.\n", iface, ref);
+    TRACE("%p, refcount %lu.\n", iface, refcount);
 
-    if (!ref)
+    if (!refcount)
         free(domimpl);
 
-    return ref;
+    return refcount;
 }
 
-static HRESULT WINAPI domimpl_GetTypeInfoCount(
-    IXMLDOMImplementation *iface,
-    UINT* pctinfo )
+static HRESULT WINAPI domimpl_GetTypeInfoCount(IXMLDOMImplementation *iface, UINT *count)
 {
-    domimpl *This = impl_from_IXMLDOMImplementation( iface );
-    return IDispatchEx_GetTypeInfoCount(&This->dispex.IDispatchEx_iface, pctinfo);
+    domimpl *domimpl = impl_from_IXMLDOMImplementation(iface);
+    return IDispatchEx_GetTypeInfoCount(&domimpl->dispex.IDispatchEx_iface, count);
 }
 
-static HRESULT WINAPI domimpl_GetTypeInfo(
-    IXMLDOMImplementation *iface,
-    UINT iTInfo, LCID lcid,
-    ITypeInfo** ppTInfo )
+static HRESULT WINAPI domimpl_GetTypeInfo(IXMLDOMImplementation *iface, UINT index, LCID lcid, ITypeInfo **ti)
 {
-    domimpl *This = impl_from_IXMLDOMImplementation( iface );
-    return IDispatchEx_GetTypeInfo(&This->dispex.IDispatchEx_iface,
-        iTInfo, lcid, ppTInfo);
+    domimpl *domimpl = impl_from_IXMLDOMImplementation(iface);
+    return IDispatchEx_GetTypeInfo(&domimpl->dispex.IDispatchEx_iface, index, lcid, ti);
 }
 
-static HRESULT WINAPI domimpl_GetIDsOfNames(
-    IXMLDOMImplementation *iface,
-    REFIID riid, LPOLESTR* rgszNames,
-    UINT cNames, LCID lcid, DISPID* rgDispId )
+static HRESULT WINAPI domimpl_GetIDsOfNames(IXMLDOMImplementation *iface, REFIID riid,
+        LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
 {
-    domimpl *This = impl_from_IXMLDOMImplementation( iface );
-    return IDispatchEx_GetIDsOfNames(&This->dispex.IDispatchEx_iface,
-        riid, rgszNames, cNames, lcid, rgDispId);
+    domimpl *domimpl = impl_from_IXMLDOMImplementation(iface);
+    return IDispatchEx_GetIDsOfNames(&domimpl->dispex.IDispatchEx_iface, riid, rgszNames, cNames, lcid, rgDispId);
 }
 
-static HRESULT WINAPI domimpl_Invoke(
-    IXMLDOMImplementation *iface,
-    DISPID dispIdMember, REFIID riid, LCID lcid,
-    WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarResult,
-    EXCEPINFO* pExcepInfo, UINT* puArgErr )
+static HRESULT WINAPI domimpl_Invoke(IXMLDOMImplementation *iface, DISPID dispIdMember,
+        REFIID riid, LCID lcid, WORD flags, DISPPARAMS *params, VARIANT *result,
+        EXCEPINFO *ei, UINT *puArgErr)
 {
-    domimpl *This = impl_from_IXMLDOMImplementation( iface );
-    return IDispatchEx_Invoke(&This->dispex.IDispatchEx_iface,
-        dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
+    domimpl *domimpl = impl_from_IXMLDOMImplementation(iface);
+    return IDispatchEx_Invoke(&domimpl->dispex.IDispatchEx_iface, dispIdMember, riid, lcid, flags,
+            params, result, ei, puArgErr);
 }
 
-static HRESULT WINAPI domimpl_hasFeature(IXMLDOMImplementation* This, BSTR feature, BSTR version, VARIANT_BOOL *hasFeature)
+static HRESULT WINAPI domimpl_hasFeature(IXMLDOMImplementation *iface, BSTR feature, BSTR version, VARIANT_BOOL *hasFeature)
 {
     BOOL bValidFeature = FALSE;
     BOOL bValidVersion = FALSE;
 
-    TRACE("(%p)->(%s %s %p)\n", This, debugstr_w(feature), debugstr_w(version), hasFeature);
+    TRACE("%p, %s, %s, %p.\n", iface, debugstr_w(feature), debugstr_w(version), hasFeature);
 
     if(!feature || !hasFeature)
         return E_INVALIDARG;
@@ -194,7 +183,7 @@ HRESULT create_dom_implementation(IXMLDOMImplementation **ret)
         return E_OUTOFMEMORY;
 
     object->IXMLDOMImplementation_iface.lpVtbl = &domimpl_vtbl;
-    object->ref = 1;
+    object->refcount = 1;
     init_dispex(&object->dispex, (IUnknown *)&object->IXMLDOMImplementation_iface, &domimpl_dispex);
 
     *ret = &object->IXMLDOMImplementation_iface;
diff --git a/dlls/msxml3/element.c b/dlls/msxml3/element.c
index fd9a2973cd8a..35a41b091574 100644
--- a/dlls/msxml3/element.c
+++ b/dlls/msxml3/element.c
@@ -21,8 +21,6 @@
 #define COBJMACROS
 
 #include <stdarg.h>
-#include <libxml/parser.h>
-#include <libxml/xmlerror.h>
 
 #include "windef.h"
 #include "winbase.h"
@@ -37,393 +35,316 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(msxml);
 
-static const xmlChar DT_prefix[] = "dt";
-static const xmlChar DT_nsURI[] = "urn:schemas-microsoft-com:datatypes";
-
 typedef struct _domelem
 {
-    xmlnode node;
+    DispatchEx dispex;
     IXMLDOMElement IXMLDOMElement_iface;
-    LONG ref;
+    LONG refcount;
+    struct domnode *node;
 } domelem;
 
 static const struct nodemap_funcs domelem_attr_map;
 
-static const tid_t domelem_se_tids[] = {
+static const tid_t domelem_se_tids[] =
+{
     IXMLDOMNode_tid,
     IXMLDOMElement_tid,
     NULL_tid
 };
 
-static inline domelem *impl_from_IXMLDOMElement( IXMLDOMElement *iface )
+static inline domelem *impl_from_IXMLDOMElement(IXMLDOMElement *iface)
 {
     return CONTAINING_RECORD(iface, domelem, IXMLDOMElement_iface);
 }
 
-static inline xmlNodePtr get_element( const domelem *This )
+static HRESULT WINAPI domelem_QueryInterface(IXMLDOMElement *iface, REFIID riid, void **obj)
 {
-    return This->node.node;
-}
-
-static HRESULT WINAPI domelem_QueryInterface(
-    IXMLDOMElement *iface,
-    REFIID riid,
-    void** ppvObject )
-{
-    domelem *This = impl_from_IXMLDOMElement( iface );
+    domelem *element = impl_from_IXMLDOMElement(iface);
 
-    TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppvObject);
+    TRACE("%p, %s, %p.\n", iface, debugstr_guid(riid), obj);
 
-    if ( IsEqualGUID( riid, &IID_IXMLDOMElement ) ||
-         IsEqualGUID( riid, &IID_IXMLDOMNode ) ||
-         IsEqualGUID( riid, &IID_IDispatch ) ||
-         IsEqualGUID( riid, &IID_IUnknown ) )
+    if (IsEqualGUID(riid, &IID_IXMLDOMElement) ||
+        IsEqualGUID(riid, &IID_IXMLDOMNode) ||
+        IsEqualGUID(riid, &IID_IDispatch) ||
+        IsEqualGUID(riid, &IID_IUnknown))
     {
-        *ppvObject = &This->IXMLDOMElement_iface;
+        *obj = &element->IXMLDOMElement_iface;
     }
-    else if(node_query_interface(&This->node, riid, ppvObject))
+    else if (dispex_query_interface(&element->dispex, riid, obj))
     {
-        return *ppvObject ? S_OK : E_NOINTERFACE;
+        return *obj ? S_OK : E_NOINTERFACE;
     }
-    else if(IsEqualGUID( riid, &IID_ISupportErrorInfo ))
+    else if (node_query_interface(element->node, riid, obj))
     {
-        return node_create_supporterrorinfo(domelem_se_tids, ppvObject);
+        return *obj ? S_OK : E_NOINTERFACE;
+    }
+    else if (IsEqualGUID(riid, &IID_ISupportErrorInfo))
+    {
+        return node_create_supporterrorinfo(domelem_se_tids, obj);
     }
     else
     {
         TRACE("interface %s not implemented\n", debugstr_guid(riid));
-        *ppvObject = NULL;
+        *obj = NULL;
         return E_NOINTERFACE;
     }
 
-    IUnknown_AddRef( (IUnknown*)*ppvObject );
+    IUnknown_AddRef((IUnknown *)*obj);
     return S_OK;
 }
 
 static ULONG WINAPI domelem_AddRef(IXMLDOMElement *iface)
 {
     domelem *element = impl_from_IXMLDOMElement(iface);
-    LONG ref = InterlockedIncrement(&element->ref);
+    LONG refcount = InterlockedIncrement(&element->refcount);
 
-    TRACE("%p, refcount %ld.\n", iface, ref);
+    TRACE("%p, refcount %ld.\n", iface, refcount);
 
-    return ref;
+    return refcount;
 }
 
 static ULONG WINAPI domelem_Release(IXMLDOMElement *iface)
 {
     domelem *element = impl_from_IXMLDOMElement(iface);
-    ULONG ref = InterlockedDecrement(&element->ref);
+    ULONG refcount = InterlockedDecrement(&element->refcount);
 
-    TRACE("%p, refcount %lu.\n", iface, ref);
+    TRACE("%p, refcount %lu.\n", iface, refcount);
 
-    if (!ref)
+    if (!refcount)
     {
-        destroy_xmlnode(&element->node);
+        domnode_release(element->node);
         free(element);
     }
 
-    return ref;
+    return refcount;
 }
 
-static HRESULT WINAPI domelem_GetTypeInfoCount(
-    IXMLDOMElement *iface,
-    UINT* pctinfo )
+static HRESULT WINAPI domelem_GetTypeInfoCount(IXMLDOMElement *iface, UINT *count)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
-    return IDispatchEx_GetTypeInfoCount(&This->node.dispex.IDispatchEx_iface, pctinfo);
+    domelem *element = impl_from_IXMLDOMElement(iface);
+    return IDispatchEx_GetTypeInfoCount(&element->dispex.IDispatchEx_iface, count);
 }
 
-static HRESULT WINAPI domelem_GetTypeInfo(
-    IXMLDOMElement *iface,
-    UINT iTInfo, LCID lcid,
-    ITypeInfo** ppTInfo )
+static HRESULT WINAPI domelem_GetTypeInfo(IXMLDOMElement *iface, UINT index, LCID lcid, ITypeInfo **ti)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
-    return IDispatchEx_GetTypeInfo(&This->node.dispex.IDispatchEx_iface,
-        iTInfo, lcid, ppTInfo);
+    domelem *element = impl_from_IXMLDOMElement(iface);
+    return IDispatchEx_GetTypeInfo(&element->dispex.IDispatchEx_iface, index, lcid, ti);
 }
 
-static HRESULT WINAPI domelem_GetIDsOfNames(
-    IXMLDOMElement *iface,
-    REFIID riid, LPOLESTR* rgszNames,
-    UINT cNames, LCID lcid, DISPID* rgDispId )
+static HRESULT WINAPI domelem_GetIDsOfNames(IXMLDOMElement *iface, REFIID riid, LPOLESTR* rgszNames,
+        UINT cNames, LCID lcid, DISPID* rgDispId)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
-    return IDispatchEx_GetIDsOfNames(&This->node.dispex.IDispatchEx_iface,
-        riid, rgszNames, cNames, lcid, rgDispId);
+    domelem *element = impl_from_IXMLDOMElement(iface);
+    return IDispatchEx_GetIDsOfNames(&element->dispex.IDispatchEx_iface, riid, rgszNames,
+            cNames, lcid, rgDispId);
 }
 
-static HRESULT WINAPI domelem_Invoke(
-    IXMLDOMElement *iface,
-    DISPID dispIdMember, REFIID riid, LCID lcid,
-    WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarResult,
-    EXCEPINFO* pExcepInfo, UINT* puArgErr )
+static HRESULT WINAPI domelem_Invoke(IXMLDOMElement *iface, DISPID dispIdMember, REFIID riid, LCID lcid,
+    WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
-    return IDispatchEx_Invoke(&This->node.dispex.IDispatchEx_iface,
-        dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
+    domelem *element = impl_from_IXMLDOMElement(iface);
+    return IDispatchEx_Invoke(&element->dispex.IDispatchEx_iface, dispIdMember, riid, lcid, wFlags,
+            pDispParams, pVarResult, pExcepInfo, puArgErr);
 }
 
-static HRESULT WINAPI domelem_get_nodeName(
-    IXMLDOMElement *iface,
-    BSTR* p )
+static HRESULT WINAPI domelem_get_nodeName(IXMLDOMElement *iface, BSTR *p)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
+    domelem *element = impl_from_IXMLDOMElement(iface);
 
-    TRACE("(%p)->(%p)\n", This, p);
+    TRACE("%p, %p.\n", iface, p);
 
-    return node_get_nodeName(&This->node, p);
+    return node_get_name(element->node, p);
 }
 
-static HRESULT WINAPI domelem_get_nodeValue(
-    IXMLDOMElement *iface,
-    VARIANT* value)
+static HRESULT WINAPI domelem_get_nodeValue(IXMLDOMElement *iface, VARIANT *value)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
+    TRACE("%p, %p.\n", iface, value);
 
-    TRACE("(%p)->(%p)\n", This, value);
-
-    if(!value)
-        return E_INVALIDARG;
-
-    V_VT(value) = VT_NULL;
-    V_BSTR(value) = NULL; /* tests show that we should do this */
-    return S_FALSE;
+    return return_null_var(value);
 }
 
-static HRESULT WINAPI domelem_put_nodeValue(
-    IXMLDOMElement *iface,
-    VARIANT value)
+static HRESULT WINAPI domelem_put_nodeValue(IXMLDOMElement *iface, VARIANT value)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
-    TRACE("(%p)->(%s)\n", This, debugstr_variant(&value));
+    TRACE("%p, %s.\n", iface, debugstr_variant(&value));
+
     return E_FAIL;
 }
 
-static HRESULT WINAPI domelem_get_nodeType(
-    IXMLDOMElement *iface,
-    DOMNodeType* domNodeType )
+static HRESULT WINAPI domelem_get_nodeType(IXMLDOMElement *iface, DOMNodeType *type)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
-
-    TRACE("(%p)->(%p)\n", This, domNodeType);
+    TRACE("%p, %p.\n", iface, type);
 
-    *domNodeType = NODE_ELEMENT;
+    *type = NODE_ELEMENT;
     return S_OK;
 }
 
-static HRESULT WINAPI domelem_get_parentNode(
-    IXMLDOMElement *iface,
-    IXMLDOMNode** parent )
+static HRESULT WINAPI domelem_get_parentNode(IXMLDOMElement *iface, IXMLDOMNode **parent)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
+    domelem *element = impl_from_IXMLDOMElement(iface);
 
-    TRACE("(%p)->(%p)\n", This, parent);
+    TRACE("%p, %p.\n", iface, parent);
 
-    return node_get_parent(&This->node, parent);
+    return node_get_parent(element->node, parent);
 }
 
-static HRESULT WINAPI domelem_get_childNodes(
-    IXMLDOMElement *iface,
-    IXMLDOMNodeList** outList)
+static HRESULT WINAPI domelem_get_childNodes(IXMLDOMElement *iface, IXMLDOMNodeList **list)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
+    domelem *element = impl_from_IXMLDOMElement(iface);
 
-    TRACE("(%p)->(%p)\n", This, outList);
+    TRACE("%p, %p.\n", iface, list);
 
-    return node_get_child_nodes(&This->node, outList);
+    return node_get_child_nodes(element->node, list);
 }
 
-static HRESULT WINAPI domelem_get_firstChild(
-    IXMLDOMElement *iface,
-    IXMLDOMNode** domNode)
+static HRESULT WINAPI domelem_get_firstChild(IXMLDOMElement *iface, IXMLDOMNode **node)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
+    domelem *element = impl_from_IXMLDOMElement(iface);
 
-    TRACE("(%p)->(%p)\n", This, domNode);
+    TRACE("%p, %p.\n", iface, node);
 
-    return node_get_first_child(&This->node, domNode);
+    return node_get_first_child(element->node, node);
 }
 
-static HRESULT WINAPI domelem_get_lastChild(
-    IXMLDOMElement *iface,
-    IXMLDOMNode** domNode)
+static HRESULT WINAPI domelem_get_lastChild(IXMLDOMElement *iface, IXMLDOMNode **node)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
+    domelem *element = impl_from_IXMLDOMElement(iface);
 
-    TRACE("(%p)->(%p)\n", This, domNode);
+    TRACE("%p, %p.\n", iface, node);
 
-    return node_get_last_child(&This->node, domNode);
+    return node_get_last_child(element->node, node);
 }
 
-static HRESULT WINAPI domelem_get_previousSibling(
-    IXMLDOMElement *iface,
-    IXMLDOMNode** domNode)
+static HRESULT WINAPI domelem_get_previousSibling(IXMLDOMElement *iface, IXMLDOMNode **node)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
+    domelem *element = impl_from_IXMLDOMElement(iface);
 
-    TRACE("(%p)->(%p)\n", This, domNode);
+    TRACE("%p, %p.\n", iface, node);
 
-    return node_get_previous_sibling(&This->node, domNode);
+    return node_get_previous_sibling(element->node, node);
 }
 
-static HRESULT WINAPI domelem_get_nextSibling(
-    IXMLDOMElement *iface,
-    IXMLDOMNode** domNode)
+static HRESULT WINAPI domelem_get_nextSibling(IXMLDOMElement *iface, IXMLDOMNode **node)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
+    domelem *element = impl_from_IXMLDOMElement(iface);
 
-    TRACE("(%p)->(%p)\n", This, domNode);
+    TRACE("%p, %p.\n", iface, node);
 
-    return node_get_next_sibling(&This->node, domNode);
+    return node_get_next_sibling(element->node, node);
 }
 
-static HRESULT WINAPI domelem_get_attributes(
-    IXMLDOMElement *iface,
-    IXMLDOMNamedNodeMap** map)
+static HRESULT WINAPI domelem_get_attributes(IXMLDOMElement *iface, IXMLDOMNamedNodeMap **map)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
+    domelem *element = impl_from_IXMLDOMElement(iface);
 
-    TRACE("(%p)->(%p)\n", This, map);
+    TRACE("%p, %p.\n", iface, map);
 
-    *map = create_nodemap(This->node.node, &domelem_attr_map);
-    return S_OK;
+    return create_nodemap(element->node, &domelem_attr_map, map);
 }
 
-static HRESULT WINAPI domelem_insertBefore(
-    IXMLDOMElement *iface,
-    IXMLDOMNode* newNode, VARIANT refChild,
-    IXMLDOMNode** old_node)
+static HRESULT WINAPI domelem_insertBefore(IXMLDOMElement *iface,
+        IXMLDOMNode *newNode, VARIANT refChild, IXMLDOMNode **old_node)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
-    DOMNodeType type;
-    HRESULT hr;
-
-    TRACE("(%p)->(%p %s %p)\n", This, newNode, debugstr_variant(&refChild), old_node);
-
-    if (!newNode) return E_INVALIDARG;
+    domelem *element = impl_from_IXMLDOMElement(iface);
 
-    hr = IXMLDOMNode_get_nodeType(newNode, &type);
-    if (hr != S_OK) return hr;
+    TRACE("%p, %p, %s, %p.\n", iface, newNode, debugstr_variant(&refChild), old_node);
 
-    TRACE("new node type %d\n", type);
-    switch (type)
-    {
-        case NODE_DOCUMENT:
-        case NODE_DOCUMENT_TYPE:
-        case NODE_ENTITY:
-        case NODE_NOTATION:
-            if (old_node) *old_node = NULL;
-            return E_FAIL;
-        default:
-            return node_insert_before(&This->node, newNode, &refChild, old_node);
-    }
+    return node_insert_before(element->node, newNode, &refChild, old_node);
 }
 
-static HRESULT WINAPI domelem_replaceChild(
-    IXMLDOMElement *iface,
-    IXMLDOMNode* newNode,
-    IXMLDOMNode* oldNode,
-    IXMLDOMNode** outOldNode)
+static HRESULT WINAPI domelem_replaceChild(IXMLDOMElement *iface,
+        IXMLDOMNode *newNode, IXMLDOMNode *oldNode, IXMLDOMNode **outOldNode)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
+    domelem *element = impl_from_IXMLDOMElement(iface);
 
-    TRACE("(%p)->(%p %p %p)\n", This, newNode, oldNode, outOldNode);
+    TRACE("%p, %p, %p, %p.\n", iface, newNode, oldNode, outOldNode);
 
-    return node_replace_child(&This->node, newNode, oldNode, outOldNode);
+    return node_replace_child(element->node, newNode, oldNode, outOldNode);
 }
 
-static HRESULT WINAPI domelem_removeChild(
-    IXMLDOMElement *iface,
-    IXMLDOMNode *child, IXMLDOMNode **oldChild)
+static HRESULT WINAPI domelem_removeChild(IXMLDOMElement *iface,
+        IXMLDOMNode *child, IXMLDOMNode **oldChild)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
-    TRACE("(%p)->(%p %p)\n", This, child, oldChild);
-    return node_remove_child(&This->node, child, oldChild);
+    domelem *element = impl_from_IXMLDOMElement(iface);
+
+    TRACE("%p, %p, %p.\n", iface, child, oldChild);
+
+    return node_remove_child(element->node, child, oldChild);
 }
 
-static HRESULT WINAPI domelem_appendChild(
-    IXMLDOMElement *iface,
-    IXMLDOMNode *child, IXMLDOMNode **outChild)
+static HRESULT WINAPI domelem_appendChild(IXMLDOMElement *iface,
+        IXMLDOMNode *child, IXMLDOMNode **outChild)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
-    TRACE("(%p)->(%p %p)\n", This, child, outChild);
-    return node_append_child(&This->node, child, outChild);
+    domelem *element = impl_from_IXMLDOMElement(iface);
+
+    TRACE("%p, %p, %p.\n", iface, child, outChild);
+
+    return node_append_child(element->node, child, outChild);
 }
 
-static HRESULT WINAPI domelem_hasChildNodes(
-    IXMLDOMElement *iface,
-    VARIANT_BOOL *ret)
+static HRESULT WINAPI domelem_hasChildNodes(IXMLDOMElement *iface, VARIANT_BOOL *ret)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
-    TRACE("(%p)->(%p)\n", This, ret);
-    return node_has_childnodes(&This->node, ret);
+    domelem *element = impl_from_IXMLDOMElement(iface);
+
+    TRACE("%p, %p.\n", iface, ret);
+
+    return node_has_childnodes(element->node, ret);
 }
 
-static HRESULT WINAPI domelem_get_ownerDocument(
-    IXMLDOMElement   *iface,
-    IXMLDOMDocument **doc)
+static HRESULT WINAPI domelem_get_ownerDocument(IXMLDOMElement *iface, IXMLDOMDocument **doc)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
-    TRACE("(%p)->(%p)\n", This, doc);
-    return node_get_owner_doc(&This->node, doc);
+    domelem *element = impl_from_IXMLDOMElement(iface);
+
+    TRACE("%p, %p.\n", iface, doc);
+
+    return node_get_owner_document(element->node, doc);
 }
 
-static HRESULT WINAPI domelem_cloneNode(
-    IXMLDOMElement *iface,
-    VARIANT_BOOL deep, IXMLDOMNode** outNode)
+static HRESULT WINAPI domelem_cloneNode(IXMLDOMElement *iface, VARIANT_BOOL deep, IXMLDOMNode **node)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
-    TRACE("(%p)->(%d %p)\n", This, deep, outNode);
-    return node_clone( &This->node, deep, outNode );
+    domelem *element = impl_from_IXMLDOMElement(iface);
+
+    TRACE("%p, %d, %p.\n", iface, deep, node);
+
+    return node_clone(element->node, deep, node);
 }
 
-static HRESULT WINAPI domelem_get_nodeTypeString(
-    IXMLDOMElement *iface,
-    BSTR* p)
+static HRESULT WINAPI domelem_get_nodeTypeString(IXMLDOMElement *iface, BSTR *p)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
-
-    TRACE("(%p)->(%p)\n", This, p);
+    TRACE("%p, %p.\n", iface, p);
 
     return return_bstr(L"element", p);
 }
 
-static HRESULT WINAPI domelem_get_text(
-    IXMLDOMElement *iface,
-    BSTR* p)
+static HRESULT WINAPI domelem_get_text(IXMLDOMElement *iface, BSTR *p)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
-    TRACE("(%p)->(%p)\n", This, p);
-    return node_get_text(&This->node, p);
+    domelem *element = impl_from_IXMLDOMElement(iface);
+
+    TRACE("%p, %p.\n", iface, p);
+
+    return node_get_text(element->node, p);
 }
 
-static HRESULT WINAPI domelem_put_text(
-    IXMLDOMElement *iface,
-    BSTR p)
+static HRESULT WINAPI domelem_put_text(IXMLDOMElement *iface, BSTR p)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
-    TRACE("(%p)->(%s)\n", This, debugstr_w(p));
-    return node_put_text( &This->node, p );
+    domelem *element = impl_from_IXMLDOMElement(iface);
+
+    TRACE("%p, %s.\n", iface, debugstr_w(p));
+
+    return node_put_data(element->node, p);
 }
 
-static HRESULT WINAPI domelem_get_specified(
-    IXMLDOMElement *iface,
-    VARIANT_BOOL* isSpecified)
+static HRESULT WINAPI domelem_get_specified(IXMLDOMElement *iface, VARIANT_BOOL *v)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
-    FIXME("(%p)->(%p) stub!\n", This, isSpecified);
-    *isSpecified = VARIANT_TRUE;
+    FIXME("%p, %p stub!\n", iface, v);
+
+    *v = VARIANT_TRUE;
     return S_OK;
 }
 
-static HRESULT WINAPI domelem_get_definition(
-    IXMLDOMElement *iface,
-    IXMLDOMNode** definitionNode)
+static HRESULT WINAPI domelem_get_definition(IXMLDOMElement *iface, IXMLDOMNode **node)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
-    FIXME("(%p)->(%p)\n", This, definitionNode);
+    FIXME("%p, %p.\n", iface, node);
+
     return E_NOTIMPL;
 }
 
@@ -443,11 +364,10 @@ static inline BYTE base64_to_byte(xmlChar c)
     return c-'a'+26;
 }
 
-static inline HRESULT variant_from_dt(XDR_DT dt, xmlChar* str, VARIANT* v)
+static inline HRESULT variant_from_dt(XDR_DT dt, WCHAR *str, VARIANT *v)
 {
     VARIANT src;
     HRESULT hr = S_OK;
-    BOOL handled = FALSE;
 
     VariantInit(&src);
 
@@ -461,13 +381,9 @@ static inline HRESULT variant_from_dt(XDR_DT dt, xmlChar* str, VARIANT* v)
     case DT_UUID:
         {
             V_VT(v) = VT_BSTR;
-            V_BSTR(v) = bstr_from_xmlChar(str);
-
-            if(!V_BSTR(v))
-                return E_OUTOFMEMORY;
-            handled = TRUE;
+            V_BSTR(v) = SysAllocString(str);
+            return V_BSTR(v) ? S_OK : E_OUTOFMEMORY;
         }
-        break;
     case DT_DATE:
     case DT_DATE_TZ:
     case DT_DATETIME:
@@ -485,7 +401,7 @@ static inline HRESULT variant_from_dt(XDR_DT dt, xmlChar* str, VARIANT* v)
             st.wDayOfWeek = st.wHour = st.wMinute = st.wSecond = st.wMilliseconds = 0;
 
             V_VT(&src) = VT_BSTR;
-            V_BSTR(&src) = bstr_from_xmlChar(str);
+            V_BSTR(&src) = SysAllocString(str);
 
             if(!V_BSTR(&src))
                 return E_OUTOFMEMORY;
@@ -527,7 +443,7 @@ static inline HRESULT variant_from_dt(XDR_DT dt, xmlChar* str, VARIANT* v)
                 V_DATE(v) -= (DOUBLE)wcstol(p+1, NULL, 10)/24 + (DOUBLE)wcstol(p+4, NULL, 10)/1440;
 
             VariantClear(&src);
-            handled = TRUE;
+            return S_OK;
         }
         break;
     case DT_BIN_HEX:
@@ -535,7 +451,7 @@ static inline HRESULT variant_from_dt(XDR_DT dt, xmlChar* str, VARIANT* v)
             SAFEARRAYBOUND sab;
             int i, len;
 
-            len = xmlStrlen(str)/2;
+            len = wcslen(str) / 2;
             sab.lLbound = 0;
             sab.cElements = len;
 
@@ -548,13 +464,13 @@ static inline HRESULT variant_from_dt(XDR_DT dt, xmlChar* str, VARIANT* v)
             for(i=0; i<len; i++)
                 ((BYTE*)V_ARRAY(v)->pvData)[i] = (hex_to_byte(str[2*i])<<4)
                     + hex_to_byte(str[2*i+1]);
-            handled = TRUE;
+            return S_OK;
         }
         break;
     case DT_BIN_BASE64:
         {
             SAFEARRAYBOUND sab;
-            xmlChar *c1, *c2;
+            WCHAR *c1, *c2;
             int i, len;
 
             /* remove all formatting chars */
@@ -597,7 +513,7 @@ static inline HRESULT variant_from_dt(XDR_DT dt, xmlChar* str, VARIANT* v)
                     ((BYTE*)V_ARRAY(v)->pvData)[3*i+2] = (base64_to_byte(str[4*i+2])<<6)
                         + base64_to_byte(str[4*i+3]);
             }
-            handled = TRUE;
+            return S_OK;
         }
         break;
     case DT_BOOLEAN:
@@ -648,102 +564,49 @@ static inline HRESULT variant_from_dt(XDR_DT dt, xmlChar* str, VARIANT* v)
     case DT_NOTATION:
         FIXME("need to handle dt:%s\n", debugstr_dt(dt));
         V_VT(v) = VT_BSTR;
-        V_BSTR(v) = bstr_from_xmlChar(str);
-        if (!V_BSTR(v))
-            return E_OUTOFMEMORY;
-        handled = TRUE;
-        break;
+        V_BSTR(v) = SysAllocString(str);
+        return V_BSTR(v) ? S_OK : E_OUTOFMEMORY;
     default:
         WARN("unknown type %d\n", dt);
     }
 
-    if (!handled)
-    {
-        V_VT(&src) = VT_BSTR;
-        V_BSTR(&src) = bstr_from_xmlChar(str);
+    V_VT(&src) = VT_BSTR;
+    V_BSTR(&src) = SysAllocString(str);
 
-        if(!V_BSTR(&src))
-            return E_OUTOFMEMORY;
+    if (!V_BSTR(&src))
+        return E_OUTOFMEMORY;
 
-        hr = VariantChangeTypeEx(v, &src,
-                MAKELCID(MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_US),SORT_DEFAULT),0, V_VT(v));
-        VariantClear(&src);
-    }
+    hr = VariantChangeTypeEx(v, &src,
+            MAKELCID(MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_US),SORT_DEFAULT),0, V_VT(v));
+    VariantClear(&src);
     return hr;
 }
 
-static XDR_DT element_get_dt(xmlNodePtr node)
+static HRESULT WINAPI domelem_get_nodeTypedValue(IXMLDOMElement *iface, VARIANT *v)
 {
-    XDR_DT dt = DT_INVALID;
-
-    TRACE("(%p)\n", node);
-    if(node->type != XML_ELEMENT_NODE)
-    {
-        FIXME("invalid element node\n");
-        return dt;
-    }
-
-    if (node->ns && xmlStrEqual(node->ns->href, DT_nsURI))
-    {
-        dt = str_to_dt(node->name, -1);
-    }
-    else
-    {
-        xmlChar* pVal = xmlGetNsProp(node, BAD_CAST "dt", DT_nsURI);
-        if (pVal)
-        {
-            dt = str_to_dt(pVal, -1);
-            xmlFree(pVal);
-        }
-        else if (node->doc)
-        {
-            IXMLDOMDocument3* doc = (IXMLDOMDocument3*)create_domdoc((xmlNodePtr)node->doc);
-            if (doc)
-            {
-                VARIANT v;
-                VariantInit(&v);
-
-                if (IXMLDOMDocument3_get_schemas(doc, &v) == S_OK &&
-                    V_VT(&v) == VT_DISPATCH)
-                {
-                    dt = SchemaCache_get_node_dt((IXMLDOMSchemaCollection2*)V_DISPATCH(&v), node);
-                }
-                VariantClear(&v);
-                IXMLDOMDocument3_Release(doc);
-            }
-        }
-    }
-
-    TRACE("=> dt:%s\n", debugstr_dt(dt));
-    return dt;
-}
-
-static HRESULT WINAPI domelem_get_nodeTypedValue(
-    IXMLDOMElement *iface,
-    VARIANT* v)
-{
-    domelem *This = impl_from_IXMLDOMElement( iface );
-    XDR_DT dt;
-    xmlChar* content;
+    domelem *element = impl_from_IXMLDOMElement(iface);
     HRESULT hr;
+    BSTR text;
+    XDR_DT dt;
 
-    TRACE("(%p)->(%p)\n", This, v);
+    TRACE("%p, %p.\n", iface, v);
 
-    if(!v) return E_INVALIDARG;
+    if (!v)
+        return E_INVALIDARG;
 
     V_VT(v) = VT_NULL;
 
-    dt = element_get_dt(get_element(This));
-
+    dt = node_get_data_type(element->node);
     if (dt == DT_INVALID)
     {
-        if (SUCCEEDED(hr = node_get_text(&This->node, &V_BSTR(v))))
-            V_VT(v) = VT_BSTR;
-        return hr;
+        V_VT(v) = VT_BSTR;
+        hr = node_get_text(element->node, &V_BSTR(v));
+    }
+    else if (SUCCEEDED(hr = node_get_preserved_text(element->node, &text)))
+    {
+        hr = variant_from_dt(dt, text, v);
+        SysFreeString(text);
     }
-    content = xmlNodeGetContent(get_element(This));
-    hr = variant_from_dt(dt, content, v);
-    xmlFree(content);
 
     return hr;
 }
@@ -832,17 +695,15 @@ static HRESULT encode_binhex(const BYTE *buf, int len, BSTR *ret)
     return S_OK;
 }
 
-static HRESULT WINAPI domelem_put_nodeTypedValue(
-    IXMLDOMElement *iface,
-    VARIANT value)
+static HRESULT WINAPI domelem_put_nodeTypedValue(IXMLDOMElement *iface, VARIANT value)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
+    domelem *element = impl_from_IXMLDOMElement(iface);
     XDR_DT dt;
     HRESULT hr;
 
-    TRACE("(%p)->(%s)\n", This, debugstr_variant(&value));
+    TRACE("%p, %s.\n", iface, debugstr_variant(&value));
 
-    dt = element_get_dt(get_element(This));
+    dt = node_get_data_type(element->node);
     switch (dt)
     {
     /* for untyped node coerce to BSTR and set */
@@ -855,16 +716,20 @@ static HRESULT WINAPI domelem_put_nodeTypedValue(
             hr = VariantChangeType(&content, &value, 0, VT_BSTR);
             if (hr == S_OK)
             {
-                hr = node_set_content(&This->node, V_BSTR(&content));
+                hr = node_put_data(element->node, V_BSTR(&content));
                 VariantClear(&content);
             }
         }
         else
-            hr = node_set_content(&This->node, V_BSTR(&value));
+        {
+            hr = node_put_data(element->node, V_BSTR(&value));
+        }
         break;
     case DT_BIN_BASE64:
         if (V_VT(&value) == VT_BSTR)
-            hr = node_set_content(&This->node, V_BSTR(&value));
+        {
+            hr = node_put_data(element->node, V_BSTR(&value));
+        }
         else if (V_VT(&value) == (VT_UI1|VT_ARRAY))
         {
             UINT dim = SafeArrayGetDim(V_ARRAY(&value));
@@ -888,7 +753,7 @@ static HRESULT WINAPI domelem_put_nodeTypedValue(
             SafeArrayUnaccessData(V_ARRAY(&value));
             if (FAILED(hr)) return hr;
 
-            hr = node_set_content(&This->node, encoded);
+            hr = node_put_data(element->node, encoded);
             SysFreeString(encoded);
         }
         else
@@ -921,7 +786,7 @@ static HRESULT WINAPI domelem_put_nodeTypedValue(
             SafeArrayUnaccessData(V_ARRAY(&value));
             if (FAILED(hr)) return hr;
 
-            hr = node_set_content(&This->node, encoded);
+            hr = node_put_data(element->node, encoded);
             SysFreeString(encoded);
         }
         else
@@ -938,19 +803,17 @@ static HRESULT WINAPI domelem_put_nodeTypedValue(
     return hr;
 }
 
-static HRESULT WINAPI domelem_get_dataType(
-    IXMLDOMElement *iface,
-    VARIANT* typename)
+static HRESULT WINAPI domelem_get_dataType(IXMLDOMElement *iface, VARIANT *typename)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
+    domelem *element = impl_from_IXMLDOMElement(iface);
     XDR_DT dt;
 
-    TRACE("(%p)->(%p)\n", This, typename);
+    TRACE("%p, %p.\n", iface, typename);
 
     if (!typename)
         return E_INVALIDARG;
 
-    dt = element_get_dt(get_element(This));
+    dt = node_get_data_type(element->node);
     switch (dt)
     {
         case DT_BIN_BASE64:
@@ -995,28 +858,29 @@ static HRESULT WINAPI domelem_get_dataType(
     return (V_VT(typename) != VT_NULL) ? S_OK : S_FALSE;
 }
 
-static HRESULT WINAPI domelem_put_dataType(
-    IXMLDOMElement *iface,
-    BSTR dtName)
+static HRESULT WINAPI domelem_put_dataType(IXMLDOMElement *iface, BSTR dtName)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
+    domelem *element = impl_from_IXMLDOMElement(iface);
     HRESULT hr = E_FAIL;
-    xmlChar *str;
+    BSTR text;
     XDR_DT dt;
 
-    TRACE("(%p)->(%s)\n", This, debugstr_w(dtName));
+    TRACE("%p, %s.\n", iface, debugstr_w(dtName));
 
-    if(dtName == NULL)
+    if (!dtName)
         return E_INVALIDARG;
 
     dt = bstr_to_dt(dtName, -1);
 
+    if (FAILED(hr = node_get_text(element->node, &text)))
+        return hr;
+
     /* An example of this is. The Text in the node needs to be a 0 or 1 for a boolean type.
        This applies to changing types (string->bool) or setting a new one
      */
-    str = xmlNodeGetContent(get_element(This));
-    hr = dt_validate(dt, str);
-    xmlFree(str);
+
+    hr = dt_validate(dt, text);
+    SysFreeString(text);
 
     /* Check all supported types. */
     if (hr == S_OK)
@@ -1053,29 +917,27 @@ static HRESULT WINAPI domelem_put_dataType(
         case DT_URI:
         case DT_UUID:
             {
-                xmlAttrPtr attr = xmlHasNsProp(get_element(This), DT_prefix, DT_nsURI);
-                if (attr)
-                {
-                    attr = xmlSetNsProp(get_element(This), attr->ns, DT_prefix, dt_to_str(dt));
-                    hr = S_OK;
-                }
-                else
+                IXMLDOMNode *attr = NULL;
+
+                if (SUCCEEDED(hr = create_attribute_node(L"dt:dt", L"urn:schemas-microsoft-com:datatypes",
+                        element->node->owner, &attr)))
                 {
-                    xmlNsPtr ns = xmlNewNs(get_element(This), DT_nsURI, DT_prefix);
-                    if (ns)
+                    if ((text = SysAllocString(dt_to_bstr(dt))))
                     {
-                        attr = xmlNewNsProp(get_element(This), ns, DT_prefix, dt_to_str(dt));
-                        if (attr)
-                        {
-                            xmlAddChild(get_element(This), (xmlNodePtr)attr);
-                            hr = S_OK;
-                        }
-                        else
-                            ERR("Failed to create Attribute\n");
+                        hr = IXMLDOMNode_put_text(attr, text);
+                        SysFreeString(text);
                     }
                     else
-                        ERR("Failed to create Namespace\n");
+                    {
+                        hr = E_OUTOFMEMORY;
+                    }
                 }
+
+                if (SUCCEEDED(hr))
+                    hr = node_set_attribute(element->node, attr, NULL);
+
+                if (attr)
+                    IXMLDOMNode_Release(attr);
             }
             break;
         default:
@@ -1087,462 +949,161 @@ static HRESULT WINAPI domelem_put_dataType(
     return hr;
 }
 
-static HRESULT WINAPI domelem_get_xml(
-    IXMLDOMElement *iface,
-    BSTR* p)
+static HRESULT WINAPI domelem_get_xml(IXMLDOMElement *iface, BSTR *p)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
+    domelem *element = impl_from_IXMLDOMElement(iface);
 
-    TRACE("(%p)->(%p)\n", This, p);
+    TRACE("%p, %p.\n", iface, p);
 
-    return node_get_xml(&This->node, TRUE, p);
+    return node_get_xml(element->node, p);
 }
 
-static HRESULT WINAPI domelem_transformNode(
-    IXMLDOMElement *iface,
-    IXMLDOMNode *node, BSTR *p)
+static HRESULT WINAPI domelem_transformNode(IXMLDOMElement *iface, IXMLDOMNode *node, BSTR *p)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
-    TRACE("(%p)->(%p %p)\n", This, node, p);
-    return node_transform_node(&This->node, node, p);
-}
+    domelem *element = impl_from_IXMLDOMElement(iface);
 
-static HRESULT WINAPI domelem_selectNodes(
-    IXMLDOMElement *iface,
-    BSTR p, IXMLDOMNodeList** outList)
-{
-    domelem *This = impl_from_IXMLDOMElement( iface );
-    TRACE("(%p)->(%s %p)\n", This, debugstr_w(p), outList);
-    return node_select_nodes(&This->node, p, outList);
-}
+    TRACE("%p, %p, %p.\n", iface, node, p);
 
-static HRESULT WINAPI domelem_selectSingleNode(
-    IXMLDOMElement *iface,
-    BSTR p, IXMLDOMNode** outNode)
-{
-    domelem *This = impl_from_IXMLDOMElement( iface );
-    TRACE("(%p)->(%s %p)\n", This, debugstr_w(p), outNode);
-    return node_select_singlenode(&This->node, p, outNode);
+    return node_transform_node(element->node, node, p);
 }
 
-static HRESULT WINAPI domelem_get_parsed(
-    IXMLDOMElement *iface,
-    VARIANT_BOOL* isParsed)
+static HRESULT WINAPI domelem_selectNodes(IXMLDOMElement *iface, BSTR p, IXMLDOMNodeList **list)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
-    FIXME("(%p)->(%p) stub!\n", This, isParsed);
-    *isParsed = VARIANT_TRUE;
-    return S_OK;
-}
+    domelem *element = impl_from_IXMLDOMElement(iface);
 
-static HRESULT WINAPI domelem_get_namespaceURI(
-    IXMLDOMElement *iface,
-    BSTR* p)
-{
-    domelem *This = impl_from_IXMLDOMElement( iface );
-    TRACE("(%p)->(%p)\n", This, p);
-    return node_get_namespaceURI(&This->node, p);
-}
+    TRACE("%p, %s, %p.\n", iface, debugstr_w(p), list);
 
-static HRESULT WINAPI domelem_get_prefix(
-    IXMLDOMElement *iface,
-    BSTR* prefix)
-{
-    domelem *This = impl_from_IXMLDOMElement( iface );
-    TRACE("(%p)->(%p)\n", This, prefix);
-    return node_get_prefix( &This->node, prefix );
+    return node_select_nodes(element->node, p, list);
 }
 
-static HRESULT WINAPI domelem_get_baseName(
-    IXMLDOMElement *iface,
-    BSTR* name)
+static HRESULT WINAPI domelem_selectSingleNode(IXMLDOMElement *iface, BSTR p, IXMLDOMNode **node)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
-    TRACE("(%p)->(%p)\n", This, name);
-    return node_get_base_name( &This->node, name );
-}
+    domelem *element = impl_from_IXMLDOMElement(iface);
 
-static HRESULT WINAPI domelem_transformNodeToObject(
-    IXMLDOMElement *iface,
-    IXMLDOMNode* domNode, VARIANT var1)
-{
-    domelem *This = impl_from_IXMLDOMElement( iface );
-    FIXME("(%p)->(%p %s)\n", This, domNode, debugstr_variant(&var1));
-    return E_NOTIMPL;
+    TRACE("%p, %s, %p.\n", iface, debugstr_w(p), node);
+
+    return node_select_singlenode(element->node, p, node);
 }
 
-static HRESULT WINAPI domelem_get_tagName(
-    IXMLDOMElement *iface,
-    BSTR* p)
+static HRESULT WINAPI domelem_get_parsed(IXMLDOMElement *iface, VARIANT_BOOL *v)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
-    xmlNodePtr element;
-    const xmlChar *prefix;
-    xmlChar *qname;
-
-    TRACE("(%p)->(%p)\n", This, p );
-
-    if (!p) return E_INVALIDARG;
-
-    element = get_element( This );
-    if ( !element )
-        return E_FAIL;
-
-    prefix = element->ns ? element->ns->prefix : NULL;
-    qname = xmlBuildQName(element->name, prefix, NULL, 0);
-
-    *p = bstr_from_xmlChar(qname);
-    if (qname != element->name) xmlFree(qname);
+    FIXME("%p, %p stub!\n", iface, v);
 
-    return *p ? S_OK : E_OUTOFMEMORY;
+    *v = VARIANT_TRUE;
+    return S_OK;
 }
 
-static HRESULT WINAPI domelem_getAttribute(
-    IXMLDOMElement *iface,
-    BSTR name, VARIANT* value)
+static HRESULT WINAPI domelem_get_namespaceURI(IXMLDOMElement *iface, BSTR *p)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
-    xmlNodePtr element;
-    xmlChar *xml_name, *xml_value = NULL;
-    xmlChar *local, *prefix;
-    HRESULT hr = S_FALSE;
-    xmlNsPtr ns;
-
-    TRACE("(%p)->(%s %p)\n", This, debugstr_w(name), value);
-
-    if(!value || !name)
-        return E_INVALIDARG;
-
-    element = get_element( This );
-    if ( !element )
-        return E_FAIL;
-
-    V_BSTR(value) = NULL;
-    V_VT(value) = VT_NULL;
-
-    xml_name = xmlchar_from_wchar( name );
-
-    if(!xmlValidateNameValue(xml_name))
-        hr = E_FAIL;
-    else
-    {
-        if ((local = xmlSplitQName2(xml_name, &prefix)))
-        {
-            if (xmlStrEqual(prefix, BAD_CAST "xmlns"))
-            {
-                ns = xmlSearchNs(element->doc, element, local);
-                if (ns)
-                    xml_value = xmlStrdup(ns->href);
-            }
-            else
-            {
-                ns = xmlSearchNs(element->doc, element, prefix);
-                if (ns)
-                    xml_value = xmlGetNsProp(element, local, ns->href);
-            }
-
-            xmlFree(prefix);
-            xmlFree(local);
-        }
-        else
-            xml_value = xmlGetNsProp(element, xml_name, NULL);
-    }
+    domelem *element = impl_from_IXMLDOMElement(iface);
 
-    free(xml_name);
-    if(xml_value)
-    {
-        V_VT(value) = VT_BSTR;
-        V_BSTR(value) = bstr_from_xmlChar( xml_value );
-        xmlFree(xml_value);
-        hr = S_OK;
-    }
+    TRACE("%p, %p.\n", iface, p);
 
-    return hr;
+    return node_get_namespaceURI(element->node, p);
 }
 
-static HRESULT WINAPI domelem_setAttribute(
-    IXMLDOMElement *iface,
-    BSTR name, VARIANT value)
+static HRESULT WINAPI domelem_get_prefix(IXMLDOMElement *iface, BSTR *prefix)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
-    xmlChar *xml_name, *xml_value, *local, *prefix;
-    xmlNodePtr element;
-    HRESULT hr = S_OK;
-
-    TRACE("(%p)->(%s %s)\n", This, debugstr_w(name), debugstr_variant(&value));
-
-    element = get_element( This );
-    if ( !element )
-        return E_FAIL;
-
-    if (V_VT(&value) != VT_BSTR)
-    {
-        VARIANT var;
-
-        VariantInit(&var);
-        hr = VariantChangeType(&var, &value, 0, VT_BSTR);
-        if (hr != S_OK)
-        {
-            FIXME("VariantChangeType failed\n");
-            return hr;
-        }
-
-        xml_value = xmlchar_from_wchar(V_BSTR(&var));
-        VariantClear(&var);
-    }
-    else
-        xml_value = xmlchar_from_wchar(V_BSTR(&value));
-
-    xml_name = xmlchar_from_wchar( name );
-
-    if ((local = xmlSplitQName2(xml_name, &prefix)))
-    {
-        static const xmlChar* xmlnsA = (const xmlChar*)"xmlns";
-        xmlNsPtr ns = NULL;
-
-        /* it's not allowed to modify existing namespace definition */
-        if (xmlStrEqual(prefix, xmlnsA))
-            ns = xmlSearchNs(element->doc, element, local);
-
-        xmlFree(prefix);
-        xmlFree(local);
-
-        if (ns)
-        {
-            int cmp = xmlStrEqual(ns->href, xml_value);
-            free(xml_value);
-            free(xml_name);
-            return cmp ? S_OK : E_INVALIDARG;
-        }
-    }
-
-    if (!xmlSetNsProp(element, NULL, xml_name, xml_value))
-        hr = E_FAIL;
+    domelem *element = impl_from_IXMLDOMElement(iface);
 
-    free(xml_value);
-    free(xml_name);
+    TRACE("%p, %p.\n", iface, prefix);
 
-    return hr;
+    return node_get_prefix(element->node, prefix);
 }
 
-static HRESULT WINAPI domelem_removeAttribute(
-    IXMLDOMElement *iface,
-    BSTR p)
+static HRESULT WINAPI domelem_get_baseName(IXMLDOMElement *iface, BSTR *name)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
-    IXMLDOMNamedNodeMap *attr;
-    HRESULT hr;
-
-    TRACE("(%p)->(%s)\n", This, debugstr_w(p));
-
-    hr = IXMLDOMElement_get_attributes(iface, &attr);
-    if (hr != S_OK) return hr;
+    domelem *element = impl_from_IXMLDOMElement(iface);
 
-    hr = IXMLDOMNamedNodeMap_removeNamedItem(attr, p, NULL);
-    IXMLDOMNamedNodeMap_Release(attr);
+    TRACE("%p, %p.\n", iface, name);
 
-    return hr;
+    return node_get_base_name(element->node, name);
 }
 
-static HRESULT WINAPI domelem_getAttributeNode(
-    IXMLDOMElement *iface,
-    BSTR p, IXMLDOMAttribute** attributeNode )
+static HRESULT WINAPI domelem_transformNodeToObject(IXMLDOMElement *iface, IXMLDOMNode *node, VARIANT var)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
-    xmlChar *local, *prefix, *nameA;
-    HRESULT hr = S_FALSE;
-    xmlNodePtr element;
-    xmlAttrPtr attr;
-
-    TRACE("(%p)->(%s %p)\n", This, debugstr_w(p), attributeNode);
-
-    element = get_element( This );
-    if (!element) return E_FAIL;
-
-    if (attributeNode) *attributeNode = NULL;
+    FIXME("%p, %p, %s.\n", iface, node, debugstr_variant(&var));
 
-    nameA = xmlchar_from_wchar(p);
-    if (!xmlValidateNameValue(nameA))
-    {
-        free(nameA);
-        return E_FAIL;
-    }
-
-    if (!attributeNode)
-    {
-        free(nameA);
-        return S_FALSE;
-    }
-
-    *attributeNode = NULL;
-
-    local = xmlSplitQName2(nameA, &prefix);
-
-    if (local)
-    {
-        /* try to get namespace for supplied qualified name */
-        xmlNsPtr ns = xmlSearchNs(element->doc, element, prefix);
-        xmlFree(prefix);
-
-        attr = xmlHasNsProp(element, local, ns ? ns->href : NULL);
-        xmlFree(local);
-    }
-    else
-    {
-        attr = xmlHasProp(element, nameA);
-        /* attribute has attached namespace and we requested non-qualified
-           name - it's a failure case */
-        if (attr && attr->ns) attr = NULL;
-    }
+    return E_NOTIMPL;
+}
 
-    free(nameA);
+static HRESULT WINAPI domelem_get_tagName(IXMLDOMElement *iface, BSTR *p)
+{
+    domelem *element = impl_from_IXMLDOMElement(iface);
 
-    if (attr)
-    {
-        IUnknown *unk = create_attribute((xmlNodePtr)attr, FALSE);
-        hr = IUnknown_QueryInterface(unk, &IID_IXMLDOMAttribute, (void**)attributeNode);
-        IUnknown_Release(unk);
-    }
+    TRACE("%p, %p.\n", iface, p);
 
-    return hr;
+    return node_get_name(element->node, p);
 }
 
-static HRESULT WINAPI domelem_setAttributeNode(
-    IXMLDOMElement *iface,
-    IXMLDOMAttribute* attribute,
-    IXMLDOMAttribute** old)
+static HRESULT WINAPI domelem_getAttribute(IXMLDOMElement *iface, BSTR name, VARIANT *value)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
-    xmlChar *name, *value;
-    BSTR nameW, prefix;
-    xmlnode *attr_node;
-    xmlAttrPtr attr;
-    VARIANT valueW;
-    HRESULT hr;
-
-    FIXME("(%p)->(%p %p): semi-stub\n", This, attribute, old);
+    domelem *element = impl_from_IXMLDOMElement(iface);
 
-    if (!attribute) return E_INVALIDARG;
+    TRACE("%p, %s, %p.\n", iface, debugstr_w(name), value);
 
-    attr_node = get_node_obj((IXMLDOMNode*)attribute);
-    if (!attr_node) return E_FAIL;
+    return node_get_attribute_value(element->node, name, value);
+}
 
-    if (attr_node->parent)
-    {
-        WARN("attempt to add already used attribute\n");
-        return E_FAIL;
-    }
+static HRESULT WINAPI domelem_setAttribute(IXMLDOMElement *iface, BSTR name, VARIANT value)
+{
+    domelem *element = impl_from_IXMLDOMElement(iface);
 
-    hr = IXMLDOMAttribute_get_nodeName(attribute, &nameW);
-    if (hr != S_OK) return hr;
+    TRACE("%p, %s, %s.\n", iface, debugstr_w(name), debugstr_variant(&value));
 
-    /* adding xmlns attribute doesn't change a tree or existing namespace definition */
-    if (!wcscmp(nameW, L"xmlns"))
-    {
-        SysFreeString(nameW);
-        return DISP_E_UNKNOWNNAME;
-    }
+    return node_set_attribute_value(element->node, name, &value);
+}
 
-    hr = IXMLDOMAttribute_get_nodeValue(attribute, &valueW);
-    if (hr != S_OK)
-    {
-        SysFreeString(nameW);
-        return hr;
-    }
+static HRESULT WINAPI domelem_removeAttribute(IXMLDOMElement *iface, BSTR p)
+{
+    domelem *element = impl_from_IXMLDOMElement(iface);
 
-    if (old) *old = NULL;
+    TRACE("%p, %s.\n", iface, debugstr_w(p));
 
-    TRACE("attribute: %s=%s\n", debugstr_w(nameW), debugstr_w(V_BSTR(&valueW)));
+    return node_remove_attribute(element->node, p, NULL);
+}
 
-    hr = IXMLDOMAttribute_get_prefix(attribute, &prefix);
-    if (hr == S_OK)
-    {
-        FIXME("namespaces not supported: %s\n", debugstr_w(prefix));
-        SysFreeString(prefix);
-    }
+static HRESULT WINAPI domelem_getAttributeNode(IXMLDOMElement *iface, BSTR p, IXMLDOMAttribute **node)
+{
+    domelem *element = impl_from_IXMLDOMElement(iface);
 
-    name = xmlchar_from_wchar(nameW);
-    value = xmlchar_from_wchar(V_BSTR(&valueW));
+    TRACE("%p, %s, %p.\n", iface, debugstr_w(p), node);
 
-    if (!name || !value)
-    {
-        SysFreeString(nameW);
-        VariantClear(&valueW);
-        free(name);
-        free(value);
-        return E_OUTOFMEMORY;
-    }
+    return node_get_attribute(element->node, p, node);
+}
 
-    attr = xmlSetNsProp(get_element(This), NULL, name, value);
-    if (attr)
-        attr_node->parent = (IXMLDOMNode*)iface;
+static HRESULT WINAPI domelem_setAttributeNode(IXMLDOMElement *iface, IXMLDOMAttribute *attribute, IXMLDOMAttribute **old)
+{
+    domelem *element = impl_from_IXMLDOMElement(iface);
 
-    SysFreeString(nameW);
-    VariantClear(&valueW);
-    free(name);
-    free(value);
+    TRACE("%p, %p, %p\n", iface, attribute, old);
 
-    return attr ? S_OK : E_FAIL;
+    return node_set_attribute(element->node, (IXMLDOMNode *)attribute, (IXMLDOMNode **)old);
 }
 
-static HRESULT WINAPI domelem_removeAttributeNode(
-    IXMLDOMElement *iface,
-    IXMLDOMAttribute* domAttribute,
-    IXMLDOMAttribute** attributeNode)
+static HRESULT WINAPI domelem_removeAttributeNode(IXMLDOMElement *iface,
+        IXMLDOMAttribute *attribute, IXMLDOMAttribute **out_attribute)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
-    xmlnode *attr_node;
-
-    TRACE("(%p)->(%p %p)\n", This, domAttribute, attributeNode);
+    domelem *element = impl_from_IXMLDOMElement(iface);
 
-    if (!domAttribute)
-        return E_INVALIDARG;
-    attr_node = get_node_obj((IXMLDOMNode*)domAttribute);
-    if (This->node.node != attr_node->node->parent)
-        return E_INVALIDARG;
+    TRACE("%p, %p, %p\n", iface, attribute, out_attribute);
 
-    if (attributeNode)
-    {
-        xmlUnlinkNode(attr_node->node );
-        xmldoc_add_orphan(attr_node->node->doc, attr_node->node);
-        *attributeNode = (IXMLDOMAttribute*)create_node(attr_node->node);
-    }
-    else
-    {
-        if (xmlRemoveProp((xmlAttrPtr)attr_node->node) == -1)
-            return E_INVALIDARG;
-    }
-    return S_OK;
+    return node_remove_attribute_node(element->node, attribute, out_attribute);
 }
 
-static HRESULT WINAPI domelem_getElementsByTagName(
-    IXMLDOMElement *iface,
-    BSTR tagName, IXMLDOMNodeList** resultList)
+static HRESULT WINAPI domelem_getElementsByTagName(IXMLDOMElement *iface, BSTR name, IXMLDOMNodeList **list)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
-    xmlChar *query;
-    HRESULT hr;
-    BOOL XPath;
-
-    TRACE("(%p)->(%s, %p)\n", This, debugstr_w(tagName), resultList);
-
-    if (!tagName || !resultList) return E_INVALIDARG;
+    domelem *element = impl_from_IXMLDOMElement(iface);
 
-    XPath = is_xpathmode(get_element(This)->doc);
-    set_xpathmode(get_element(This)->doc, TRUE);
-    query = tagName_to_XPath(tagName);
-    hr = create_selection(get_element(This), query, resultList);
-    xmlFree(query);
-    set_xpathmode(get_element(This)->doc, XPath);
+    TRACE("%p, %s, %p.\n", iface, debugstr_w(name), list);
 
-    return hr;
+    return node_get_elements_by_tagname(element->node, name, list);
 }
 
-static HRESULT WINAPI domelem_normalize(
-    IXMLDOMElement *iface )
+static HRESULT WINAPI domelem_normalize(IXMLDOMElement *iface)
 {
-    domelem *This = impl_from_IXMLDOMElement( iface );
-    FIXME("%p\n", This);
+    FIXME("%p.\n", iface);
+
     return E_NOTIMPL;
 }
 
@@ -1602,375 +1163,133 @@ static const struct IXMLDOMElementVtbl domelem_vtbl =
     domelem_normalize,
 };
 
-static HRESULT domelem_get_qualified_item(const xmlNodePtr node, BSTR name, BSTR uri,
+static HRESULT domelem_get_qualified_item(const struct domnode *node, BSTR name, BSTR uri,
     IXMLDOMNode **item)
 {
-    xmlAttrPtr attr;
-    xmlChar *nameA;
-    xmlChar *href;
-
-    TRACE("(%p)->(%s %s %p)\n", node, debugstr_w(name), debugstr_w(uri), item);
-
-    if (!name || !item) return E_INVALIDARG;
-
-    if (uri && *uri)
-    {
-        href = xmlchar_from_wchar(uri);
-        if (!href) return E_OUTOFMEMORY;
-    }
-    else
-        href = NULL;
-
-    nameA = xmlchar_from_wchar(name);
-    if (!nameA)
-    {
-        free(href);
-        return E_OUTOFMEMORY;
-    }
-
-    attr = xmlHasNsProp(node, nameA, href);
-
-    free(nameA);
-    free(href);
-
-    if (!attr)
-    {
-        *item = NULL;
-        return S_FALSE;
-    }
+    TRACE("%p, %s, %s, %p.\n", node, debugstr_w(name), debugstr_w(uri), item);
 
-    *item = create_node((xmlNodePtr)attr);
+    if (!name || !item)
+        return E_INVALIDARG;
 
-    return S_OK;
+    return node_get_qualified_attribute(node, name, uri, item);
 }
 
-static HRESULT domelem_get_named_item(const xmlNodePtr node, BSTR name, IXMLDOMNode **item)
+static HRESULT domelem_get_named_item(const struct domnode *node, BSTR name, IXMLDOMNode **item)
 {
-    xmlChar *nameA, *local, *prefix;
-    BSTR uriW, localW;
-    xmlNsPtr ns;
-    HRESULT hr;
+    TRACE("%p, %s, %p.\n", node, debugstr_w(name), item);
 
-    TRACE("(%p)->(%s %p)\n", node, debugstr_w(name), item );
-
-    nameA = xmlchar_from_wchar(name);
-    local = xmlSplitQName2(nameA, &prefix);
-    free(nameA);
-
-    if (!local)
-        return domelem_get_qualified_item(node, name, NULL, item);
-
-    /* try to get namespace uri for supplied qualified name */
-    ns = xmlSearchNs(node->doc, node, prefix);
-
-    xmlFree(prefix);
-
-    if (!ns)
-    {
-        xmlFree(local);
-        if (item) *item = NULL;
-        return item ? S_FALSE : E_INVALIDARG;
-    }
-
-    uriW = bstr_from_xmlChar(ns->href);
-    localW = bstr_from_xmlChar(local);
-    xmlFree(local);
-
-    TRACE("got qualified node %s, uri=%s\n", debugstr_w(localW), debugstr_w(uriW));
-
-    hr = domelem_get_qualified_item(node, localW, uriW, item);
-
-    SysFreeString(localW);
-    SysFreeString(uriW);
+    if (!name || !item)
+        return E_INVALIDARG;
 
-    return hr;
+    return node_get_attribute(node, name, (IXMLDOMAttribute **)item);
 }
 
-static HRESULT domelem_set_named_item(xmlNodePtr node, IXMLDOMNode *newItem, IXMLDOMNode **namedItem)
+static HRESULT domelem_set_named_item(struct domnode *node, IXMLDOMNode *newItem, IXMLDOMNode **namedItem)
 {
-    xmlNodePtr nodeNew;
-    xmlnode *ThisNew;
-
-    TRACE("(%p)->(%p %p)\n", node, newItem, namedItem );
-
-    if(!newItem)
-        return E_INVALIDARG;
-
-    if(namedItem) *namedItem = NULL;
-
-    /* Must be an Attribute */
-    ThisNew = get_node_obj( newItem );
-    if(!ThisNew) return E_FAIL;
-
-    if(ThisNew->node->type != XML_ATTRIBUTE_NODE)
-        return E_FAIL;
+    TRACE("%p, %p, %p.\n", node, newItem, namedItem );
 
-    if(!ThisNew->node->parent)
-        if(xmldoc_remove_orphan(ThisNew->node->doc, ThisNew->node) != S_OK)
-            WARN("%p is not an orphan of %p\n", ThisNew->node, ThisNew->node->doc);
-
-    nodeNew = xmlAddChild(node, ThisNew->node);
-
-    if(namedItem)
-        *namedItem = create_node( nodeNew );
-    return S_OK;
+    return node_set_attribute(node, newItem, namedItem);
 }
 
-static HRESULT domelem_remove_qualified_item(xmlNodePtr node, BSTR name, BSTR uri, IXMLDOMNode **item)
+static HRESULT domelem_remove_qualified_item(struct domnode *node, BSTR name, BSTR uri, IXMLDOMNode **item)
 {
-    xmlChar *nameA, *href;
-    xmlAttrPtr attr;
-
-    TRACE("(%p)->(%s %s %p)\n", node, debugstr_w(name), debugstr_w(uri), item);
+    TRACE("%p, %s, %s, %p.\n", node, debugstr_w(name), debugstr_w(uri), item);
 
     if (!name) return E_INVALIDARG;
 
-    if (uri && *uri)
-    {
-        href = xmlchar_from_wchar(uri);
-        if (!href) return E_OUTOFMEMORY;
-    }
-    else
-        href = NULL;
-
-    nameA = xmlchar_from_wchar(name);
-    if (!nameA)
-    {
-        free(href);
-        return E_OUTOFMEMORY;
-    }
-
-    attr = xmlHasNsProp(node, nameA, href);
-
-    free(nameA);
-    free(href);
-
-    if (!attr)
-    {
-        if (item) *item = NULL;
-        return S_FALSE;
-    }
-
-    if (item)
-    {
-        xmlUnlinkNode( (xmlNodePtr) attr );
-        xmldoc_add_orphan( attr->doc, (xmlNodePtr) attr );
-        *item = create_node( (xmlNodePtr) attr );
-    }
-    else
-    {
-        if (xmlRemoveProp(attr) == -1)
-            ERR("xmlRemoveProp failed\n");
-    }
-
-    return S_OK;
+    return node_remove_qualified_attribute(node, name, uri, item);
 }
 
-static HRESULT domelem_remove_named_item(xmlNodePtr node, BSTR name, IXMLDOMNode **item)
+static HRESULT domelem_remove_named_item(struct domnode *node, BSTR name, IXMLDOMNode **item)
 {
-    xmlChar *nameA, *local, *prefix;
-    BSTR uriW, localW;
-    xmlNsPtr ns;
-    HRESULT hr;
-
-    TRACE("(%p)->(%s %p)\n", node, debugstr_w(name), item);
-
-    nameA = xmlchar_from_wchar(name);
-    local = xmlSplitQName2(nameA, &prefix);
-    free(nameA);
-
-    if (!local)
-        return domelem_remove_qualified_item(node, name, NULL, item);
-
-    ns = xmlSearchNs(node->doc, node, prefix);
+    TRACE("%p, %s, %p.\n", node, debugstr_w(name), item);
 
-    xmlFree(prefix);
-
-    if (!ns)
-    {
-        xmlFree(local);
-        if (item) *item = NULL;
-        return item ? S_FALSE : E_INVALIDARG;
-    }
-
-    uriW = bstr_from_xmlChar(ns->href);
-    localW = bstr_from_xmlChar(local);
-    xmlFree(local);
-
-    TRACE("removing qualified node %s, uri=%s\n", debugstr_w(localW), debugstr_w(uriW));
-
-    hr = domelem_remove_qualified_item(node, localW, uriW, item);
-
-    SysFreeString(localW);
-    SysFreeString(uriW);
-
-    return hr;
+    return node_remove_attribute(node, name, item);
 }
 
-static HRESULT domelem_get_item(const xmlNodePtr node, LONG index, IXMLDOMNode **item)
+static HRESULT domelem_get_item(struct domnode *node, LONG index, IXMLDOMNode **item)
 {
-    xmlNsPtr ns, xmlns;
-    xmlAttrPtr curr;
-    LONG attrIndex;
-    IUnknown *unk;
-    HRESULT hr;
-
     TRACE("%p, %ld, %p.\n", node, index, item);
 
-    *item = NULL;
-
-    if (index < 0)
-        return S_FALSE;
-
-    attrIndex = 0;
-    curr = node->properties;
-    if (curr) {
-        for (; attrIndex < index && curr->next != NULL; attrIndex++)
-            curr = curr->next;
-
-        if (attrIndex == index) {
-            *item = create_node( (xmlNodePtr) curr );
-            return S_OK;
-        }
-
-        ++attrIndex;
-    }
-
-    if (!node->nsDef)
-        return S_FALSE;
-
-    ns = node->nsDef;
-    while (attrIndex < index)
-    {
-        attrIndex++;
-
-        if (!ns->next)
-            break;
-
-        ns = ns->next;
-    }
-
-    if (attrIndex < index)
-        return S_FALSE;
-
-    if (!ns->prefix) {
-        xmlns = NULL;
-        curr = xmlNewProp(NULL, BAD_CAST "xmlns", ns->href);
-    } else {
-        xmlns = xmlNewNs(NULL, BAD_CAST "http://www.w3.org/2000/xmlns/", BAD_CAST "xmlns");
-        if (!xmlns)
-            return E_OUTOFMEMORY;
-
-        curr = xmlNewNsProp(NULL, xmlns, ns->prefix, ns->href);
-    }
-    if (!curr) {
-        xmlFreeNs(xmlns);
-        return E_OUTOFMEMORY;
-    }
-    curr->doc = node->doc;
-
-    unk = create_attribute((xmlNodePtr)curr, TRUE);
-    if (!unk) {
-        xmlFreeNs(xmlns);
-        xmlFreeProp(curr);
-        return E_OUTOFMEMORY;
-    }
-
-    hr = IUnknown_QueryInterface(unk, &IID_IXMLDOMNode, (void**)item);
-    IUnknown_Release(unk);
-
-    return hr;
+    return node_get_attribute_by_index(node, index, item);
 }
 
-static HRESULT domelem_get_length(const xmlNodePtr node, LONG *length)
+static HRESULT domelem_get_length(struct domnode *node, LONG *length)
 {
-    xmlAttrPtr curr;
-    LONG attrCount;
-    xmlNsPtr ns;
-
-    TRACE("(%p)->(%p)\n", node, length);
+    TRACE("%p, %p.\n", node, length);
 
-    if( !length )
+    if (!length)
         return E_INVALIDARG;
 
-    attrCount = 0;
-    curr = node->properties;
-    while (curr) {
-        attrCount++;
-        curr = curr->next;
-    }
-
-    ns = node->nsDef;
-    while (ns) {
-        attrCount++;
-        ns = ns->next;
-    }
-    *length = attrCount;
-
+    *length = list_count(&node->attributes);
     return S_OK;
 }
 
-static HRESULT domelem_next_node(const xmlNodePtr node, LONG *iter, IXMLDOMNode **nextNode)
+static HRESULT domelem_next_node(const struct domnode *node, LONG *iter, IXMLDOMNode **nextNode)
 {
-    xmlAttrPtr curr;
-    LONG i;
+    struct domnode *curr = NULL, *n;
+    LONG count = *iter;
 
     TRACE("%p, %ld, %p.\n", node, *iter, nextNode);
 
     *nextNode = NULL;
 
-    curr = node->properties;
-    if (curr == NULL)
-        return S_FALSE;
-
-    for (i = 0; i < *iter; i++) {
-        if (curr->next == NULL)
-            return S_FALSE;
-        else
-            curr = curr->next;
+    LIST_FOR_EACH_ENTRY(n, &node->attributes, struct domnode, entry)
+    {
+        curr = n;
+        if (!count--) break;
+        curr = NULL;
     }
 
-    (*iter)++;
-    *nextNode = create_node((xmlNodePtr)curr);
+    if (!curr)
+        return S_FALSE;
 
-    return S_OK;
+    (*iter)++;
+    return create_node(curr, nextNode);
 }
 
-static const struct nodemap_funcs domelem_attr_map = {
-    domelem_get_named_item,
-    domelem_set_named_item,
-    domelem_remove_named_item,
-    domelem_get_item,
-    domelem_get_length,
-    domelem_get_qualified_item,
-    domelem_remove_qualified_item,
-    domelem_next_node
+static const struct nodemap_funcs domelem_attr_map =
+{
+    .get_named_item = domelem_get_named_item,
+    .set_named_item = domelem_set_named_item,
+    .remove_named_item = domelem_remove_named_item,
+    .get_item = domelem_get_item,
+    .get_length = domelem_get_length,
+    .get_qualified_item = domelem_get_qualified_item,
+    .remove_qualified_item = domelem_remove_qualified_item,
+    .next_node = domelem_next_node,
 };
 
-static const tid_t domelem_iface_tids[] = {
+static const tid_t domelem_iface_tids[] =
+{
     IXMLDOMElement_tid,
     0
 };
 
-static dispex_static_data_t domelem_dispex = {
+static dispex_static_data_t domelem_dispex =
+{
     NULL,
     IXMLDOMElement_tid,
     NULL,
     domelem_iface_tids
 };
 
-IUnknown* create_element( xmlNodePtr element )
+HRESULT create_element(struct domnode *node, IUnknown **obj)
 {
-    domelem *This;
+    domelem *object;
+
+    *obj = NULL;
 
-    This = malloc(sizeof *This);
-    if ( !This )
-        return NULL;
+    if (!(object = calloc(1, sizeof(*object))))
+        return E_OUTOFMEMORY;
+
+    object->IXMLDOMElement_iface.lpVtbl = &domelem_vtbl;
+    object->refcount = 1;
+    object->node = domnode_addref(node);
 
-    This->IXMLDOMElement_iface.lpVtbl = &domelem_vtbl;
-    This->ref = 1;
+    init_dispex(&object->dispex, (IUnknown *)&object->IXMLDOMElement_iface, &domelem_dispex);
 
-    init_xmlnode(&This->node, element, (IXMLDOMNode*)&This->IXMLDOMElement_iface, &domelem_dispex);
+    *obj = (IUnknown *)&object->IXMLDOMElement_iface;
 
-    return (IUnknown*)&This->IXMLDOMElement_iface;
+    return S_OK;
 }
diff --git a/dlls/msxml3/entityref.c b/dlls/msxml3/entityref.c
index d99474289640..ab26064ff6e4 100644
--- a/dlls/msxml3/entityref.c
+++ b/dlls/msxml3/entityref.c
@@ -21,8 +21,6 @@
 #define COBJMACROS
 
 #include <stdarg.h>
-#include <libxml/parser.h>
-#include <libxml/xmlerror.h>
 
 #include "windef.h"
 #include "winbase.h"
@@ -38,12 +36,14 @@ WINE_DEFAULT_DEBUG_CHANNEL(msxml);
 
 typedef struct _entityref
 {
-    xmlnode node;
+    DispatchEx dispex;
     IXMLDOMEntityReference IXMLDOMEntityReference_iface;
-    LONG ref;
+    LONG refcount;
+    struct domnode *node;
 } entityref;
 
-static const tid_t domentityref_se_tids[] = {
+static const tid_t domentityref_se_tids[] =
+{
     IXMLDOMNode_tid,
     IXMLDOMEntityReference_tid,
     NULL_tid
@@ -54,463 +54,395 @@ static inline entityref *impl_from_IXMLDOMEntityReference( IXMLDOMEntityReferenc
     return CONTAINING_RECORD(iface, entityref, IXMLDOMEntityReference_iface);
 }
 
-static HRESULT WINAPI entityref_QueryInterface(
-    IXMLDOMEntityReference *iface,
-    REFIID riid,
-    void** ppvObject )
+static HRESULT WINAPI entityref_QueryInterface(IXMLDOMEntityReference *iface, REFIID riid, void **obj)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
-    TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppvObject);
+    entityref *ref = impl_from_IXMLDOMEntityReference( iface );
+
+    TRACE("%p, %s, %p.\n", iface, debugstr_guid(riid), obj);
 
-    if ( IsEqualGUID( riid, &IID_IXMLDOMEntityReference ) ||
-         IsEqualGUID( riid, &IID_IXMLDOMNode ) ||
-         IsEqualGUID( riid, &IID_IDispatch ) ||
-         IsEqualGUID( riid, &IID_IUnknown ) )
+    if (IsEqualGUID(riid, &IID_IXMLDOMEntityReference) ||
+        IsEqualGUID(riid, &IID_IXMLDOMNode) ||
+        IsEqualGUID(riid, &IID_IDispatch) ||
+        IsEqualGUID(riid, &IID_IUnknown) )
+    {
+        *obj = iface;
+    }
+    else if (dispex_query_interface(&ref->dispex, riid, obj))
     {
-        *ppvObject = iface;
+        return *obj ? S_OK : E_NOINTERFACE;
     }
-    else if(node_query_interface(&This->node, riid, ppvObject))
+    else if (node_query_interface(ref->node, riid, obj))
     {
-        return *ppvObject ? S_OK : E_NOINTERFACE;
+        return *obj ? S_OK : E_NOINTERFACE;
     }
-    else if (IsEqualGUID( riid, &IID_ISupportErrorInfo ))
+    else if (IsEqualGUID(riid, &IID_ISupportErrorInfo))
     {
-        return node_create_supporterrorinfo(domentityref_se_tids, ppvObject);
+        return node_create_supporterrorinfo(domentityref_se_tids, obj);
     }
     else
     {
         TRACE("Unsupported interface %s\n", debugstr_guid(riid));
-        *ppvObject = NULL;
+        *obj = NULL;
         return E_NOINTERFACE;
     }
 
-    IUnknown_AddRef((IUnknown*)*ppvObject);
+    IUnknown_AddRef((IUnknown *)*obj);
     return S_OK;
 }
 
-static ULONG WINAPI entityref_AddRef(
-    IXMLDOMEntityReference *iface )
+static ULONG WINAPI entityref_AddRef(IXMLDOMEntityReference *iface)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
-    ULONG ref = InterlockedIncrement( &This->ref );
-    TRACE("%p, refcount %lu.\n", iface, ref);
-    return ref;
+    entityref *ref = impl_from_IXMLDOMEntityReference(iface);
+    ULONG refcount = InterlockedIncrement(&ref->refcount);
+
+    TRACE("%p, refcount %lu.\n", iface, refcount);
+
+    return refcount;
 }
 
-static ULONG WINAPI entityref_Release(
-    IXMLDOMEntityReference *iface )
+static ULONG WINAPI entityref_Release(IXMLDOMEntityReference *iface)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
-    ULONG ref = InterlockedDecrement( &This->ref );
+    entityref *ref = impl_from_IXMLDOMEntityReference(iface);
+    ULONG refcount = InterlockedDecrement(&ref->refcount);
 
-    TRACE("%p, refcount %lu.\n", iface, ref);
+    TRACE("%p, refcount %lu.\n", iface, refcount);
 
-    if (!ref)
+    if (!refcount)
     {
-        destroy_xmlnode(&This->node);
-        free(This);
+        domnode_release(ref->node);
+        free(ref);
     }
 
-    return ref;
+    return refcount;
 }
 
-static HRESULT WINAPI entityref_GetTypeInfoCount(
-    IXMLDOMEntityReference *iface,
-    UINT* pctinfo )
+static HRESULT WINAPI entityref_GetTypeInfoCount(IXMLDOMEntityReference *iface, UINT *count)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
-    return IDispatchEx_GetTypeInfoCount(&This->node.dispex.IDispatchEx_iface, pctinfo);
+    entityref *ref = impl_from_IXMLDOMEntityReference(iface);
+    return IDispatchEx_GetTypeInfoCount(&ref->dispex.IDispatchEx_iface, count);
 }
 
-static HRESULT WINAPI entityref_GetTypeInfo(
-    IXMLDOMEntityReference *iface,
-    UINT iTInfo, LCID lcid,
-    ITypeInfo** ppTInfo )
+static HRESULT WINAPI entityref_GetTypeInfo(IXMLDOMEntityReference *iface, UINT index, LCID lcid, ITypeInfo **ti)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
-    return IDispatchEx_GetTypeInfo(&This->node.dispex.IDispatchEx_iface,
-        iTInfo, lcid, ppTInfo);
+    entityref *ref = impl_from_IXMLDOMEntityReference(iface);
+    return IDispatchEx_GetTypeInfo(&ref->dispex.IDispatchEx_iface, index, lcid, ti);
 }
 
-static HRESULT WINAPI entityref_GetIDsOfNames(
-    IXMLDOMEntityReference *iface,
-    REFIID riid, LPOLESTR* rgszNames,
-    UINT cNames, LCID lcid, DISPID* rgDispId )
+static HRESULT WINAPI entityref_GetIDsOfNames(IXMLDOMEntityReference *iface, REFIID riid, LPOLESTR* rgszNames,
+        UINT cNames, LCID lcid, DISPID* rgDispId )
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
-    return IDispatchEx_GetIDsOfNames(&This->node.dispex.IDispatchEx_iface,
-        riid, rgszNames, cNames, lcid, rgDispId);
+    entityref *ref = impl_from_IXMLDOMEntityReference(iface);
+    return IDispatchEx_GetIDsOfNames(&ref->dispex.IDispatchEx_iface, riid, rgszNames, cNames, lcid, rgDispId);
 }
 
-static HRESULT WINAPI entityref_Invoke(
-    IXMLDOMEntityReference *iface,
-    DISPID dispIdMember, REFIID riid, LCID lcid,
-    WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarResult,
-    EXCEPINFO* pExcepInfo, UINT* puArgErr )
+static HRESULT WINAPI entityref_Invoke(IXMLDOMEntityReference *iface, DISPID dispIdMember, REFIID riid, LCID lcid,
+        WORD flags, DISPPARAMS *params, VARIANT *result, EXCEPINFO *ei, UINT *puArgErr)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
-    return IDispatchEx_Invoke(&This->node.dispex.IDispatchEx_iface,
-        dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
+    entityref *ref = impl_from_IXMLDOMEntityReference(iface);
+    return IDispatchEx_Invoke(&ref->dispex.IDispatchEx_iface, dispIdMember, riid, lcid, flags, params, result, ei, puArgErr);
 }
 
-static HRESULT WINAPI entityref_get_nodeName(
-    IXMLDOMEntityReference *iface,
-    BSTR* p )
+static HRESULT WINAPI entityref_get_nodeName(IXMLDOMEntityReference *iface, BSTR *p)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
+    entityref *ref = impl_from_IXMLDOMEntityReference(iface);
 
-    FIXME("(%p)->(%p)\n", This, p);
+    FIXME("%p, %p.\n", iface, p);
 
-    return node_get_nodeName(&This->node, p);
+    return node_get_name(ref->node, p);
 }
 
-static HRESULT WINAPI entityref_get_nodeValue(
-    IXMLDOMEntityReference *iface,
-    VARIANT* value)
+static HRESULT WINAPI entityref_get_nodeValue(IXMLDOMEntityReference *iface, VARIANT *value)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
-    TRACE("(%p)->(%p)\n", This, value);
+    TRACE("%p, %p.\n", iface, value);
+
     return return_null_var(value);
 }
 
-static HRESULT WINAPI entityref_put_nodeValue(
-    IXMLDOMEntityReference *iface,
-    VARIANT value)
+static HRESULT WINAPI entityref_put_nodeValue(IXMLDOMEntityReference *iface, VARIANT value)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
-    TRACE("(%p)->(%s)\n", This, debugstr_variant(&value));
+    TRACE("%p, %s.\n", iface, debugstr_variant(&value));
+
     return E_FAIL;
 }
 
-static HRESULT WINAPI entityref_get_nodeType(
-    IXMLDOMEntityReference *iface,
-    DOMNodeType* domNodeType )
+static HRESULT WINAPI entityref_get_nodeType(IXMLDOMEntityReference *iface, DOMNodeType *type)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
-
-    TRACE("(%p)->(%p)\n", This, domNodeType);
+    TRACE("%p, %p.\n", iface, type);
 
-    *domNodeType = NODE_ENTITY_REFERENCE;
+    *type = NODE_ENTITY_REFERENCE;
     return S_OK;
 }
 
-static HRESULT WINAPI entityref_get_parentNode(
-    IXMLDOMEntityReference *iface,
-    IXMLDOMNode** parent )
+static HRESULT WINAPI entityref_get_parentNode(IXMLDOMEntityReference *iface, IXMLDOMNode **parent)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
+    entityref *ref = impl_from_IXMLDOMEntityReference(iface);
 
-    TRACE("(%p)->(%p)\n", This, parent);
+    TRACE("%p, %p.\n", iface, parent);
 
-    return node_get_parent(&This->node, parent);
+    return node_get_parent(ref->node, parent);
 }
 
-static HRESULT WINAPI entityref_get_childNodes(
-    IXMLDOMEntityReference *iface,
-    IXMLDOMNodeList** outList)
+static HRESULT WINAPI entityref_get_childNodes(IXMLDOMEntityReference *iface, IXMLDOMNodeList **list)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
+    entityref *ref = impl_from_IXMLDOMEntityReference(iface);
 
-    TRACE("(%p)->(%p)\n", This, outList);
+    TRACE("%p, %p.\n", iface, list);
 
-    return node_get_child_nodes(&This->node, outList);
+    return node_get_child_nodes(ref->node, list);
 }
 
-static HRESULT WINAPI entityref_get_firstChild(
-    IXMLDOMEntityReference *iface,
-    IXMLDOMNode** domNode)
+static HRESULT WINAPI entityref_get_firstChild(IXMLDOMEntityReference *iface, IXMLDOMNode **node)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
+    entityref *ref = impl_from_IXMLDOMEntityReference(iface);
 
-    TRACE("(%p)->(%p)\n", This, domNode);
+    TRACE("%p, %p.\n", iface, node);
 
-    return node_get_first_child(&This->node, domNode);
+    return node_get_first_child(ref->node, node);
 }
 
-static HRESULT WINAPI entityref_get_lastChild(
-    IXMLDOMEntityReference *iface,
-    IXMLDOMNode** domNode)
+static HRESULT WINAPI entityref_get_lastChild(IXMLDOMEntityReference *iface, IXMLDOMNode **node)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
+    entityref *ref = impl_from_IXMLDOMEntityReference(iface);
 
-    TRACE("(%p)->(%p)\n", This, domNode);
+    TRACE("%p, %p.\n", iface, node);
 
-    return node_get_last_child(&This->node, domNode);
+    return node_get_last_child(ref->node, node);
 }
 
-static HRESULT WINAPI entityref_get_previousSibling(
-    IXMLDOMEntityReference *iface,
-    IXMLDOMNode** domNode)
+static HRESULT WINAPI entityref_get_previousSibling(IXMLDOMEntityReference *iface, IXMLDOMNode **node)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
+    entityref *ref = impl_from_IXMLDOMEntityReference(iface);
 
-    TRACE("(%p)->(%p)\n", This, domNode);
+    TRACE("%p, %p.\n", iface, node);
 
-    return node_get_previous_sibling(&This->node, domNode);
+    return node_get_previous_sibling(ref->node, node);
 }
 
-static HRESULT WINAPI entityref_get_nextSibling(
-    IXMLDOMEntityReference *iface,
-    IXMLDOMNode** domNode)
+static HRESULT WINAPI entityref_get_nextSibling(IXMLDOMEntityReference *iface, IXMLDOMNode **node)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
+    entityref *ref = impl_from_IXMLDOMEntityReference(iface);
 
-    TRACE("(%p)->(%p)\n", This, domNode);
+    TRACE("%p, %p.\n", iface, node);
 
-    return node_get_next_sibling(&This->node, domNode);
+    return node_get_next_sibling(ref->node, node);
 }
 
-static HRESULT WINAPI entityref_get_attributes(
-    IXMLDOMEntityReference *iface,
-    IXMLDOMNamedNodeMap** attributeMap)
+static HRESULT WINAPI entityref_get_attributes(IXMLDOMEntityReference *iface, IXMLDOMNamedNodeMap **map)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
+    TRACE("%p, %p.\n", iface, map);
 
-    TRACE("(%p)->(%p)\n", This, attributeMap);
-
-    return return_null_ptr((void**)attributeMap);
+    return return_null_ptr((void **)map);
 }
 
-static HRESULT WINAPI entityref_insertBefore(
-    IXMLDOMEntityReference *iface,
-    IXMLDOMNode* newNode, VARIANT refChild,
-    IXMLDOMNode** outOldNode)
+static HRESULT WINAPI entityref_insertBefore(IXMLDOMEntityReference *iface,
+    IXMLDOMNode* newNode, VARIANT refChild, IXMLDOMNode** outOldNode)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
+    entityref *ref = impl_from_IXMLDOMEntityReference(iface);
 
-    FIXME("(%p)->(%p %s %p) needs test\n", This, newNode, debugstr_variant(&refChild), outOldNode);
+    FIXME("%p, %p, %s, %p needs test\n", iface, newNode, debugstr_variant(&refChild), outOldNode);
 
-    return node_insert_before(&This->node, newNode, &refChild, outOldNode);
+    return node_insert_before(ref->node, newNode, &refChild, outOldNode);
 }
 
-static HRESULT WINAPI entityref_replaceChild(
-    IXMLDOMEntityReference *iface,
-    IXMLDOMNode* newNode,
-    IXMLDOMNode* oldNode,
-    IXMLDOMNode** outOldNode)
+static HRESULT WINAPI entityref_replaceChild(IXMLDOMEntityReference *iface,
+    IXMLDOMNode* newNode, IXMLDOMNode* oldNode, IXMLDOMNode** outOldNode)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
+    entityref *ref = impl_from_IXMLDOMEntityReference(iface);
 
-    FIXME("(%p)->(%p %p %p) needs test\n", This, newNode, oldNode, outOldNode);
+    FIXME("%p, %p, %p, %p needs test\n", iface, newNode, oldNode, outOldNode);
 
-    return node_replace_child(&This->node, newNode, oldNode, outOldNode);
+    return node_replace_child(ref->node, newNode, oldNode, outOldNode);
 }
 
-static HRESULT WINAPI entityref_removeChild(
-    IXMLDOMEntityReference *iface,
-    IXMLDOMNode *child, IXMLDOMNode **oldChild)
+static HRESULT WINAPI entityref_removeChild(IXMLDOMEntityReference *iface,
+        IXMLDOMNode *child, IXMLDOMNode **oldChild)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
-    TRACE("(%p)->(%p %p)\n", This, child, oldChild);
-    return node_remove_child(&This->node, child, oldChild);
+    entityref *ref = impl_from_IXMLDOMEntityReference(iface);
+
+    TRACE("%p, %p, %p.\n", iface, child, oldChild);
+
+    return node_remove_child(ref->node, child, oldChild);
 }
 
-static HRESULT WINAPI entityref_appendChild(
-    IXMLDOMEntityReference *iface,
-    IXMLDOMNode *child, IXMLDOMNode **outChild)
+static HRESULT WINAPI entityref_appendChild(IXMLDOMEntityReference *iface,
+        IXMLDOMNode *child, IXMLDOMNode **outChild)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
-    TRACE("(%p)->(%p %p)\n", This, child, outChild);
-    return node_append_child(&This->node, child, outChild);
+    entityref *ref = impl_from_IXMLDOMEntityReference(iface);
+
+    TRACE("%p, %p, %p.\n", iface, child, outChild);
+
+    return node_append_child(ref->node, child, outChild);
 }
 
-static HRESULT WINAPI entityref_hasChildNodes(
-    IXMLDOMEntityReference *iface,
-    VARIANT_BOOL *ret)
+static HRESULT WINAPI entityref_hasChildNodes(IXMLDOMEntityReference *iface, VARIANT_BOOL *ret)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
-    TRACE("(%p)->(%p)\n", This, ret);
-    return node_has_childnodes(&This->node, ret);
+    entityref *ref = impl_from_IXMLDOMEntityReference(iface);
+
+    TRACE("%p, %p.\n", iface, ret);
+
+    return node_has_childnodes(ref->node, ret);
 }
 
-static HRESULT WINAPI entityref_get_ownerDocument(
-    IXMLDOMEntityReference *iface,
-    IXMLDOMDocument **doc)
+static HRESULT WINAPI entityref_get_ownerDocument(IXMLDOMEntityReference *iface, IXMLDOMDocument **doc)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
-    TRACE("(%p)->(%p)\n", This, doc);
-    return node_get_owner_doc(&This->node, doc);
+    entityref *ref = impl_from_IXMLDOMEntityReference(iface);
+
+    TRACE("%p, %p.\n", iface, doc);
+
+    return node_get_owner_document(ref->node, doc);
 }
 
-static HRESULT WINAPI entityref_cloneNode(
-    IXMLDOMEntityReference *iface,
-    VARIANT_BOOL deep, IXMLDOMNode** outNode)
+static HRESULT WINAPI entityref_cloneNode(IXMLDOMEntityReference *iface, VARIANT_BOOL deep, IXMLDOMNode **node)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
-    TRACE("(%p)->(%d %p)\n", This, deep, outNode);
-    return node_clone( &This->node, deep, outNode );
+    entityref *ref = impl_from_IXMLDOMEntityReference(iface);
+
+    TRACE("%p, %d, %p.\n", iface, deep, node);
+
+    return node_clone(ref->node, deep, node);
 }
 
-static HRESULT WINAPI entityref_get_nodeTypeString(
-    IXMLDOMEntityReference *iface,
-    BSTR* p)
+static HRESULT WINAPI entityref_get_nodeTypeString(IXMLDOMEntityReference *iface, BSTR *p)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
-
-    TRACE("(%p)->(%p)\n", This, p);
+    TRACE("%p, %p.\n", iface, p);
 
     return return_bstr(L"entityreference", p);
 }
 
-static HRESULT WINAPI entityref_get_text(
-    IXMLDOMEntityReference *iface,
-    BSTR* p)
+static HRESULT WINAPI entityref_get_text(IXMLDOMEntityReference *iface, BSTR *p)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
-    TRACE("(%p)->(%p)\n", This, p);
-    return node_get_text(&This->node, p);
+    entityref *ref = impl_from_IXMLDOMEntityReference(iface);
+
+    TRACE("%p, %p.\n", iface, p);
+
+    return node_get_text(ref->node, p);
 }
 
-static HRESULT WINAPI entityref_put_text(
-    IXMLDOMEntityReference *iface,
-    BSTR p)
+static HRESULT WINAPI entityref_put_text(IXMLDOMEntityReference *iface, BSTR p)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
-    TRACE("(%p)->(%s)\n", This, debugstr_w(p));
-    return node_put_text( &This->node, p );
+    entityref *ref = impl_from_IXMLDOMEntityReference(iface);
+
+    TRACE("%p, %s.\n", iface, debugstr_w(p));
+
+    return node_put_data(ref->node, p);
 }
 
-static HRESULT WINAPI entityref_get_specified(
-    IXMLDOMEntityReference *iface,
-    VARIANT_BOOL* isSpecified)
+static HRESULT WINAPI entityref_get_specified(IXMLDOMEntityReference *iface, VARIANT_BOOL *v)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
-    FIXME("(%p)->(%p) stub!\n", This, isSpecified);
-    *isSpecified = VARIANT_TRUE;
+    FIXME("%p, %p stub!\n", iface, v);
+
+    *v = VARIANT_TRUE;
     return S_OK;
 }
 
-static HRESULT WINAPI entityref_get_definition(
-    IXMLDOMEntityReference *iface,
-    IXMLDOMNode** definitionNode)
+static HRESULT WINAPI entityref_get_definition(IXMLDOMEntityReference *iface, IXMLDOMNode **node)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
-    FIXME("(%p)->(%p)\n", This, definitionNode);
+    FIXME("%p, %p.\n", iface, node);
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI entityref_get_nodeTypedValue(
-    IXMLDOMEntityReference *iface,
-    VARIANT* var1)
+static HRESULT WINAPI entityref_get_nodeTypedValue(IXMLDOMEntityReference *iface, VARIANT *v)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
-    FIXME("(%p)->(%p)\n", This, var1);
-    return return_null_var(var1);
+    FIXME("%p, %p.\n", iface, v);
+
+    return return_null_var(v);
 }
 
-static HRESULT WINAPI entityref_put_nodeTypedValue(
-    IXMLDOMEntityReference *iface,
-    VARIANT typedValue)
+static HRESULT WINAPI entityref_put_nodeTypedValue(IXMLDOMEntityReference *iface, VARIANT v)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
-    FIXME("(%p)->(%s)\n", This, debugstr_variant(&typedValue));
+    FIXME("%p, %s.\n", iface, debugstr_variant(&v));
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI entityref_get_dataType(
-    IXMLDOMEntityReference *iface,
-    VARIANT* typename)
+static HRESULT WINAPI entityref_get_dataType(IXMLDOMEntityReference *iface, VARIANT *v)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
-    FIXME("(%p)->(%p): should return a valid value\n", This, typename);
-    return return_null_var( typename );
+    FIXME("%p, %p: should return a valid value\n", iface, v);
+
+    return return_null_var(v);
 }
 
-static HRESULT WINAPI entityref_put_dataType(
-    IXMLDOMEntityReference *iface,
-    BSTR p)
+static HRESULT WINAPI entityref_put_dataType(IXMLDOMEntityReference *iface, BSTR p)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
+    TRACE("%p, %s.\n", iface, debugstr_w(p));
 
-    TRACE("(%p)->(%s)\n", This, debugstr_w(p));
-
-    if(!p)
+    if (!p)
         return E_INVALIDARG;
 
     return E_FAIL;
 }
 
-static HRESULT WINAPI entityref_get_xml(
-    IXMLDOMEntityReference *iface,
-    BSTR* p)
+static HRESULT WINAPI entityref_get_xml(IXMLDOMEntityReference *iface, BSTR *p)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
+    entityref *ref = impl_from_IXMLDOMEntityReference(iface);
 
-    TRACE("(%p)->(%p)\n", This, p);
+    TRACE("%p, %p.\n", iface, p);
 
-    return node_get_xml(&This->node, FALSE, p);
+    return node_get_xml(ref->node, p);
 }
 
-static HRESULT WINAPI entityref_transformNode(
-    IXMLDOMEntityReference *iface,
-    IXMLDOMNode *node, BSTR *p)
+static HRESULT WINAPI entityref_transformNode(IXMLDOMEntityReference *iface, IXMLDOMNode *node, BSTR *p)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
-    TRACE("(%p)->(%p %p)\n", This, node, p);
-    return node_transform_node(&This->node, node, p);
+    entityref *ref = impl_from_IXMLDOMEntityReference(iface);
+
+    TRACE("%p, %p, %p.\n", iface, node, p);
+
+    return node_transform_node(ref->node, node, p);
 }
 
-static HRESULT WINAPI entityref_selectNodes(
-    IXMLDOMEntityReference *iface,
-    BSTR p, IXMLDOMNodeList** outList)
+static HRESULT WINAPI entityref_selectNodes(IXMLDOMEntityReference *iface, BSTR p, IXMLDOMNodeList **list)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
-    TRACE("(%p)->(%s %p)\n", This, debugstr_w(p), outList);
-    return node_select_nodes(&This->node, p, outList);
+    entityref *ref = impl_from_IXMLDOMEntityReference(iface);
+
+    TRACE("%p, %s, %p.\n", iface, debugstr_w(p), list);
+
+    return node_select_nodes(ref->node, p, list);
 }
 
-static HRESULT WINAPI entityref_selectSingleNode(
-    IXMLDOMEntityReference *iface,
-    BSTR p, IXMLDOMNode** outNode)
+static HRESULT WINAPI entityref_selectSingleNode(IXMLDOMEntityReference *iface, BSTR p, IXMLDOMNode **node)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
-    TRACE("(%p)->(%s %p)\n", This, debugstr_w(p), outNode);
-    return node_select_singlenode(&This->node, p, outNode);
+    entityref *ref = impl_from_IXMLDOMEntityReference(iface);
+
+    TRACE("%p, %s, %p.\n", iface, debugstr_w(p), node);
+
+    return node_select_singlenode(ref->node, p, node);
 }
 
-static HRESULT WINAPI entityref_get_parsed(
-    IXMLDOMEntityReference *iface,
-    VARIANT_BOOL* isParsed)
+static HRESULT WINAPI entityref_get_parsed(IXMLDOMEntityReference *iface, VARIANT_BOOL *v)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
-    FIXME("(%p)->(%p) stub!\n", This, isParsed);
-    *isParsed = VARIANT_TRUE;
+    FIXME("%p, %p: stub!\n", iface, v);
+
+    *v = VARIANT_TRUE;
     return S_OK;
 }
 
-static HRESULT WINAPI entityref_get_namespaceURI(
-    IXMLDOMEntityReference *iface,
-    BSTR* p)
+static HRESULT WINAPI entityref_get_namespaceURI(IXMLDOMEntityReference *iface, BSTR *p)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
-    TRACE("(%p)->(%p)\n", This, p);
-    return node_get_namespaceURI(&This->node, p);
+    entityref *ref = impl_from_IXMLDOMEntityReference(iface);
+
+    TRACE("%p, %p.\n", iface, p);
+
+    return node_get_namespaceURI(ref->node, p);
 }
 
-static HRESULT WINAPI entityref_get_prefix(
-    IXMLDOMEntityReference *iface,
-    BSTR* prefix)
+static HRESULT WINAPI entityref_get_prefix(IXMLDOMEntityReference *iface, BSTR *prefix)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
-    FIXME("(%p)->(%p): stub\n", This, prefix);
-    return return_null_bstr( prefix );
+    FIXME("%p, %p: stub\n", iface, prefix);
+
+    return return_null_bstr(prefix);
 }
 
-static HRESULT WINAPI entityref_get_baseName(
-    IXMLDOMEntityReference *iface,
-    BSTR* name)
+static HRESULT WINAPI entityref_get_baseName(IXMLDOMEntityReference *iface, BSTR *name)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
-    FIXME("(%p)->(%p): needs test\n", This, name);
-    return return_null_bstr( name );
+    FIXME("%p, %p: needs test\n", iface, name);
+
+    return return_null_bstr(name);
 }
 
-static HRESULT WINAPI entityref_transformNodeToObject(
-    IXMLDOMEntityReference *iface,
-    IXMLDOMNode* domNode, VARIANT var1)
+static HRESULT WINAPI entityref_transformNodeToObject(IXMLDOMEntityReference *iface, IXMLDOMNode *node, VARIANT var1)
 {
-    entityref *This = impl_from_IXMLDOMEntityReference( iface );
-    FIXME("(%p)->(%p %s)\n", This, domNode, debugstr_variant(&var1));
+    FIXME("%p, %p, %s.\n", iface, node, debugstr_variant(&var1));
+
     return E_NOTIMPL;
 }
 
@@ -561,30 +493,36 @@ static const struct IXMLDOMEntityReferenceVtbl entityref_vtbl =
     entityref_transformNodeToObject,
 };
 
-static const tid_t domentityref_iface_tids[] = {
+static const tid_t domentityref_iface_tids[] =
+{
     IXMLDOMEntityReference_tid,
     0
 };
 
-static dispex_static_data_t domentityref_dispex = {
+static dispex_static_data_t domentityref_dispex =
+{
     NULL,
     IXMLDOMEntityReference_tid,
     NULL,
     domentityref_iface_tids
 };
 
-IUnknown* create_doc_entity_ref( xmlNodePtr entity )
+HRESULT create_entity_ref(struct domnode *node, IUnknown **obj)
 {
-    entityref *This;
+    entityref *object;
 
-    This = malloc(sizeof(*This));
-    if ( !This )
-        return NULL;
+    *obj = NULL;
 
-    This->IXMLDOMEntityReference_iface.lpVtbl = &entityref_vtbl;
-    This->ref = 1;
+    if (!(object = calloc(1, sizeof(*object))))
+        return E_OUTOFMEMORY;
 
-    init_xmlnode(&This->node, entity, (IXMLDOMNode*)&This->IXMLDOMEntityReference_iface, &domentityref_dispex);
+    object->IXMLDOMEntityReference_iface.lpVtbl = &entityref_vtbl;
+    object->refcount = 1;
+    object->node = domnode_addref(node);
 
-    return (IUnknown*)&This->IXMLDOMEntityReference_iface;
+    init_dispex(&object->dispex, (IUnknown *)&object->IXMLDOMEntityReference_iface, &domentityref_dispex);
+
+    *obj = (IUnknown *)&object->IXMLDOMEntityReference_iface;
+
+    return S_OK;
 }
diff --git a/dlls/msxml3/msxml_private.h b/dlls/msxml3/msxml_private.h
index 9709f8247ab8..804d52ec49e6 100644
--- a/dlls/msxml3/msxml_private.h
+++ b/dlls/msxml3/msxml_private.h
@@ -123,26 +123,115 @@ struct xslprocessor_params
 extern void schemasInit(void);
 extern void schemasCleanup(void);
 
-/* IXMLDOMNode Internal Structure */
-typedef struct _xmlnode
+struct dom_namespace
 {
-    DispatchEx   dispex;
-    IXMLDOMNode *iface;
-    IXMLDOMNode *parent;
-    xmlNodePtr   node;
-} xmlnode;
+    struct list entry;
+    BSTR qname;
+    BSTR name;
+    BSTR uri;
+};
+
+enum domnode_flags
+{
+    DOMNODE_READONLY_VALUE = 0x1,
+    DOMNODE_IGNORED_WS_AFTER_STARTTAG = 0x2,
+    DOMNODE_IGNORED_WS = 0x4,
+};
+
+typedef struct _select_ns_entry
+{
+    struct list entry;
+    xmlChar const* prefix;
+    xmlChar prefix_end;
+    xmlChar const* href;
+    xmlChar href_end;
+} select_ns_entry;
+
+struct domdoc_properties
+{
+    MSXML_VERSION version;
+    VARIANT_BOOL preserving;
+    VARIANT_BOOL validating;
+    IXMLDOMSchemaCollection2* schemaCache;
+    struct list selectNsList;
+    xmlChar const* selectNsStr;
+    LONG selectNsStr_len;
+    bool XPath;
+    bool prohibit_dtd;
+    IUri *uri;
+};
+
+struct domnode
+{
+    struct list entry;
+    struct list owner_entry;
+    unsigned int refcount;
+
+    DOMNodeType type;
+    unsigned int flags;
+
+    BSTR name;
+    BSTR prefix;
+    BSTR qname;
+    BSTR data;
+    BSTR uri;
+
+    struct domdoc_properties *properties;
+
+    struct domnode *parent;
+    struct domnode *owner;
+    struct list children;
+    struct list attributes;
+    struct list owned;
+};
+
+extern IXMLDOMSchemaCollection2 *doc_properties_get_schema(struct domdoc_properties *properties);
+extern MSXML_VERSION doc_properties_get_version(struct domdoc_properties *properties);
+
+extern void domdoc_properties_clear_selection_namespaces(struct list *);
+extern struct domdoc_properties *domdoc_create_properties(MSXML_VERSION version);
+extern MSXML_VERSION domdoc_version(const struct domnode *doc);
+extern HRESULT domnode_create(DOMNodeType type, const WCHAR *name, int name_len,
+        const WCHAR *uri, int uri_len, struct domnode *owner, struct domnode **node);
+extern void domnode_destroy_tree(struct domnode *tree);
+extern struct domnode *domnode_addref(struct domnode *node);
+extern void domnode_release(struct domnode *node);
+extern struct domnode *domnode_get_first_child(struct domnode *node);
+extern struct domnode *domnode_get_next_sibling(struct domnode *node);
+extern HRESULT domnode_get_attribute(const struct domnode *node, const WCHAR *name, struct domnode **attr);
+extern HRESULT node_clone_domnode(struct domnode *, bool, struct domnode **);
+extern HRESULT parse_stream(ISequentialStream *stream, bool utf16, const struct domdoc_properties *properties,
+        struct domnode **tree);
+extern void dump_doc_refcounts(struct domnode *node);
+
+struct parsed_name
+{
+    BSTR prefix;
+    BSTR local;
+    BSTR qname;
+};
+
+extern HRESULT parse_qualified_name(const WCHAR *src, struct parsed_name *name);
+void parsed_name_cleanup(struct parsed_name *name);
+
+/* Compat glue */
+extern xmlDocPtr create_xmldoc_from_domdoc(struct domnode *node, xmlNodePtr *xmlnode);
+static inline bool xml_is_space(WCHAR ch)
+{
+    return ch == ' ' || ch == '\t' || ch == '\r' || ch == '\n';
+}
 
 /* IXMLDOMNamedNodeMap custom function table */
 struct nodemap_funcs
 {
-    HRESULT (*get_named_item)(const xmlNodePtr,BSTR,IXMLDOMNode**);
-    HRESULT (*set_named_item)(xmlNodePtr,IXMLDOMNode*,IXMLDOMNode**);
-    HRESULT (*remove_named_item)(xmlNodePtr,BSTR,IXMLDOMNode**);
-    HRESULT (*get_item)(xmlNodePtr,LONG,IXMLDOMNode**);
-    HRESULT (*get_length)(xmlNodePtr,LONG*);
-    HRESULT (*get_qualified_item)(const xmlNodePtr,BSTR,BSTR,IXMLDOMNode**);
-    HRESULT (*remove_qualified_item)(xmlNodePtr,BSTR,BSTR,IXMLDOMNode**);
-    HRESULT (*next_node)(const xmlNodePtr,LONG*,IXMLDOMNode**);
+    HRESULT (*get_named_item)(const struct domnode *,BSTR,IXMLDOMNode**);
+    HRESULT (*set_named_item)(struct domnode *,IXMLDOMNode*,IXMLDOMNode**);
+    HRESULT (*remove_named_item)(struct domnode *,BSTR,IXMLDOMNode**);
+    HRESULT (*get_item)(struct domnode *,LONG,IXMLDOMNode**);
+    HRESULT (*get_length)(struct domnode *,LONG*);
+    HRESULT (*get_qualified_item)(const struct domnode *,BSTR,BSTR,IXMLDOMNode**);
+    HRESULT (*remove_qualified_item)(struct domnode *,BSTR,BSTR,IXMLDOMNode**);
+    HRESULT (*next_node)(const struct domnode *,LONG *,IXMLDOMNode **);
 };
 
 /* used by IEnumVARIANT to access outer object items */
@@ -153,44 +242,25 @@ struct enumvariant_funcs
 };
 
 /* constructors */
-extern IUnknown         *create_domdoc( xmlNodePtr );
-extern IUnknown         *create_xmldoc( void );
-extern IXMLDOMNode      *create_node( xmlNodePtr );
-extern IUnknown         *create_element( xmlNodePtr );
-extern IUnknown         *create_attribute( xmlNodePtr, BOOL );
-extern IUnknown         *create_text( xmlNodePtr );
-extern IUnknown         *create_pi( xmlNodePtr );
-extern IUnknown         *create_comment( xmlNodePtr );
-extern IUnknown         *create_cdata( xmlNodePtr );
-extern IXMLDOMNodeList  *create_children_nodelist( xmlNodePtr );
-extern IXMLDOMNamedNodeMap *create_nodemap( xmlNodePtr, const struct nodemap_funcs* );
-extern IUnknown         *create_doc_fragment( xmlNodePtr );
-extern IUnknown         *create_doc_entity_ref( xmlNodePtr );
-extern IUnknown         *create_doc_type( xmlNodePtr );
-extern HRESULT           create_selection( xmlNodePtr, xmlChar*, IXMLDOMNodeList** );
-extern HRESULT           create_selection_from_nodeset( xmlXPathObjectPtr, IXMLDOMNodeList ** );
-extern HRESULT           create_enumvariant( IUnknown*, BOOL, const struct enumvariant_funcs*, IEnumVARIANT**);
-extern HRESULT           create_dom_implementation(IXMLDOMImplementation **obj);
-
-/* data accessors */
-xmlNodePtr xmlNodePtr_from_domnode( IXMLDOMNode *iface, xmlElementType type );
-
-/* helpers */
-extern xmlChar *xmlChar_from_wchar( LPCWSTR str );
-
-extern void xmldoc_init( xmlDocPtr doc, MSXML_VERSION version );
-extern LONG xmldoc_add_ref( xmlDocPtr doc );
-extern LONG xmldoc_release( xmlDocPtr doc );
-extern LONG xmldoc_add_refs( xmlDocPtr doc, LONG refs );
-extern LONG xmldoc_release_refs ( xmlDocPtr doc, LONG refs );
-extern void xmlnode_add_ref(xmlNodePtr node);
-extern void xmlnode_release(xmlNodePtr node);
-extern int xmlnode_get_inst_cnt( xmlnode *node );
-extern HRESULT xmldoc_add_orphan( xmlDocPtr doc, xmlNodePtr node );
-extern HRESULT xmldoc_remove_orphan( xmlDocPtr doc, xmlNodePtr node );
-extern void xmldoc_link_xmldecl(xmlDocPtr doc, xmlNodePtr node);
-extern xmlNodePtr xmldoc_unlink_xmldecl(xmlDocPtr doc);
-extern MSXML_VERSION xmldoc_version( xmlDocPtr doc );
+extern HRESULT create_domdoc(struct domnode *node, IUnknown **);
+extern HRESULT create_node(struct domnode *node, IXMLDOMNode **);
+extern HRESULT create_element(struct domnode *, IUnknown **);
+extern HRESULT create_attribute(struct domnode *, IUnknown **);
+extern HRESULT create_attribute_node(const WCHAR *name, const WCHAR *uri, struct domnode *, IXMLDOMNode **);
+extern HRESULT create_text(struct domnode *, IUnknown **);
+extern HRESULT create_pi(struct domnode *, IUnknown **);
+extern HRESULT create_pi_node(struct domnode *, const WCHAR *, const WCHAR *, IXMLDOMProcessingInstruction **);
+extern HRESULT create_comment(struct domnode *, IUnknown **);
+extern HRESULT create_cdata(struct domnode *, IUnknown **);
+extern HRESULT create_children_nodelist(struct domnode *, IXMLDOMNodeList **);
+extern HRESULT create_nodemap(struct domnode *, const struct nodemap_funcs *, IXMLDOMNamedNodeMap **);
+extern HRESULT create_doc_fragment(struct domnode *, IUnknown **);
+extern HRESULT create_entity_ref(struct domnode *, IUnknown **);
+extern HRESULT create_doc_type(struct domnode *, IUnknown **);
+extern HRESULT create_selection(struct domnode *, BSTR, bool xpath, IXMLDOMNodeList** );
+extern HRESULT create_selection_from_nodeset( xmlXPathObjectPtr, IXMLDOMNodeList ** );
+extern HRESULT create_enumvariant( IUnknown*, BOOL, const struct enumvariant_funcs*, IEnumVARIANT**);
+extern HRESULT create_dom_implementation(IXMLDOMImplementation **obj);
 
 extern void wineXmlCallbackLog(char const* caller, xmlErrorLevel lvl, char const* msg, va_list ap);
 extern void wineXmlCallbackError(char const* caller, const xmlError* err);
@@ -208,64 +278,76 @@ extern void wineXmlCallbackError(char const* caller, const xmlError* err);
 
 #define LIBXML2_CALLBACK_SERROR(caller, err) wineXmlCallbackError(#caller, err)
 
-extern BOOL is_preserving_whitespace(xmlNodePtr node);
-extern BOOL is_xpathmode(const xmlDocPtr doc);
-extern void set_xpathmode(xmlDocPtr doc, BOOL xpath);
-
-extern void init_xmlnode(xmlnode*,xmlNodePtr,IXMLDOMNode*,dispex_static_data_t*);
-extern void destroy_xmlnode(xmlnode*);
-extern BOOL node_query_interface(xmlnode*,REFIID,void**);
-extern xmlnode *get_node_obj(IXMLDOMNode*);
-
-extern HRESULT node_append_child(xmlnode*,IXMLDOMNode*,IXMLDOMNode**);
-extern HRESULT node_get_nodeName(xmlnode*,BSTR*);
-extern HRESULT node_get_content(xmlnode*,VARIANT*);
-extern HRESULT node_set_content(xmlnode*,LPCWSTR);
-extern HRESULT node_put_value(xmlnode*,VARIANT*);
-extern HRESULT node_put_value_escaped(xmlnode*,VARIANT*);
-extern HRESULT node_get_parent(xmlnode*,IXMLDOMNode**);
-extern HRESULT node_get_child_nodes(xmlnode*,IXMLDOMNodeList**);
-extern HRESULT node_get_first_child(xmlnode*,IXMLDOMNode**);
-extern HRESULT node_get_last_child(xmlnode*,IXMLDOMNode**);
-extern HRESULT node_get_previous_sibling(xmlnode*,IXMLDOMNode**);
-extern HRESULT node_get_next_sibling(xmlnode*,IXMLDOMNode**);
-extern HRESULT node_insert_before(xmlnode*,IXMLDOMNode*,const VARIANT*,IXMLDOMNode**);
-extern HRESULT node_replace_child(xmlnode*,IXMLDOMNode*,IXMLDOMNode*,IXMLDOMNode**);
-extern HRESULT node_put_text(xmlnode*,BSTR);
-extern HRESULT node_get_xml(xmlnode*,BOOL,BSTR*);
-extern HRESULT node_clone(xmlnode*,VARIANT_BOOL,IXMLDOMNode**);
-extern HRESULT node_get_prefix(xmlnode*,BSTR*);
-extern HRESULT node_get_base_name(xmlnode*,BSTR*);
-extern HRESULT node_get_namespaceURI(xmlnode*,BSTR*);
-extern HRESULT node_remove_child(xmlnode*,IXMLDOMNode*,IXMLDOMNode**);
-extern HRESULT node_has_childnodes(const xmlnode*,VARIANT_BOOL*);
-extern HRESULT node_get_owner_doc(const xmlnode*,IXMLDOMDocument**);
-extern HRESULT node_get_text(const xmlnode*,BSTR*);
-extern HRESULT node_select_nodes(const xmlnode*,BSTR,IXMLDOMNodeList**);
-extern HRESULT node_select_singlenode(const xmlnode*,BSTR,IXMLDOMNode**);
-extern HRESULT node_transform_node(const xmlnode*,IXMLDOMNode*,BSTR*);
-extern HRESULT node_transform_node_params(const xmlnode*,IXMLDOMNode*,BSTR*,ISequentialStream*,
+extern bool node_query_interface(struct domnode*,REFIID,void**);
+extern struct domnode *get_node_obj(void *iface);
+extern bool parser_is_valid_qualified_name(const WCHAR *name);
+extern HRESULT parse_xml_decl_body(const WCHAR *text, BSTR *version, BSTR *encoding, BSTR *standalone);
+
+extern HRESULT node_append_child(struct domnode*,IXMLDOMNode*,IXMLDOMNode**);
+extern HRESULT node_attribute_get_namespace_uri(struct domnode *, BSTR *);
+extern HRESULT node_get_name(struct domnode*,BSTR*);
+extern HRESULT node_put_data(struct domnode*, const WCHAR *);
+extern HRESULT node_get_data(struct domnode*, BSTR *);
+extern XDR_DT node_get_data_type(const struct domnode*);
+extern HRESULT node_append_data(struct domnode*, BSTR);
+extern HRESULT node_put_value(struct domnode*,VARIANT*);
+extern HRESULT node_get_attribute(const struct domnode *,const WCHAR *,IXMLDOMAttribute **);
+extern HRESULT node_get_qualified_attribute(const struct domnode *, const WCHAR *name, const WCHAR *uri, IXMLDOMNode **);
+extern HRESULT node_get_attribute_by_index(const struct domnode *, LONG, IXMLDOMNode **);
+extern HRESULT node_get_attribute_value(struct domnode *,const WCHAR *,VARIANT *);
+extern HRESULT node_set_attribute(struct domnode *, IXMLDOMNode *, IXMLDOMNode **);
+extern HRESULT node_set_attribute_value(struct domnode *,const WCHAR *,const VARIANT *);
+extern HRESULT node_remove_attribute(struct domnode *, const WCHAR *, IXMLDOMNode **);
+extern HRESULT node_remove_attribute_node(struct domnode *,IXMLDOMAttribute *,IXMLDOMAttribute **);
+extern HRESULT node_remove_qualified_attribute(struct domnode *, const WCHAR *, const WCHAR *, IXMLDOMNode **);
+extern HRESULT node_get_parent(struct domnode*,IXMLDOMNode**);
+extern HRESULT node_get_child_nodes(struct domnode *,IXMLDOMNodeList**);
+extern HRESULT node_get_first_child(struct domnode *,IXMLDOMNode**);
+extern HRESULT node_get_last_child(struct domnode *,IXMLDOMNode**);
+extern HRESULT node_get_previous_sibling(struct domnode*,IXMLDOMNode**);
+extern HRESULT node_get_next_sibling(struct domnode*,IXMLDOMNode**);
+extern HRESULT node_insert_before(struct domnode*,IXMLDOMNode*,const VARIANT*,IXMLDOMNode**);
+extern HRESULT node_replace_child(struct domnode*,IXMLDOMNode*,IXMLDOMNode*,IXMLDOMNode**);
+extern HRESULT node_get_xml(struct domnode *, BSTR*);
+extern HRESULT node_clone(struct domnode*,VARIANT_BOOL,IXMLDOMNode**);
+extern HRESULT node_get_prefix(struct domnode*,BSTR*);
+extern HRESULT node_get_base_name(struct domnode*,BSTR*);
+extern HRESULT node_get_namespaceURI(struct domnode*, BSTR *);
+extern HRESULT node_remove_child(struct domnode*,IXMLDOMNode*,IXMLDOMNode**);
+extern HRESULT node_has_childnodes(const struct domnode*,VARIANT_BOOL*);
+extern HRESULT node_get_owner_document(const struct domnode*,IXMLDOMDocument**);
+extern HRESULT node_get_text(const struct domnode*,BSTR*);
+extern HRESULT node_get_preserved_text(const struct domnode*,BSTR*);
+extern HRESULT node_get_value(struct domnode *node, VARIANT *value);
+extern HRESULT node_select_nodes(struct domnode*,BSTR,IXMLDOMNodeList**);
+extern HRESULT node_select_singlenode(struct domnode *,BSTR,IXMLDOMNode**);
+extern HRESULT node_transform_node(struct domnode*,IXMLDOMNode*,BSTR*);
+extern HRESULT node_transform_node_params(struct domnode*,IXMLDOMNode*,BSTR*,ISequentialStream*,
     const struct xslprocessor_params*);
 extern HRESULT node_create_supporterrorinfo(const tid_t*,void**);
-
-extern HRESULT get_domdoc_from_xmldoc(xmlDocPtr xmldoc, IXMLDOMDocument3 **document);
+extern HRESULT node_save(struct domnode *, IStream *);
+extern HRESULT node_get_elements_by_tagname(struct domnode *,BSTR,IXMLDOMNodeList**);
+extern HRESULT node_validate(struct domnode *, IXMLDOMNode *, IXMLDOMParseError **);
+extern void node_move_children(struct domnode *dst, struct domnode *src);
+extern HRESULT node_split_text(struct domnode *, LONG, IXMLDOMText **);
+extern HRESULT node_delete_data(struct domnode *, LONG, LONG);
+extern HRESULT node_substring_data(struct domnode *, LONG, LONG, BSTR *);
+extern HRESULT node_get_data_length(struct domnode *, LONG *);
+extern HRESULT node_insert_data(struct domnode *, LONG, BSTR);
+extern HRESULT node_replace_data(struct domnode *, LONG, LONG, BSTR);
+
+extern UINT get_codepage_for_encoding(const WCHAR *encoding);
 
 extern HRESULT SchemaCache_validate_tree(IXMLDOMSchemaCollection2*, xmlNodePtr);
-extern XDR_DT  SchemaCache_get_node_dt(IXMLDOMSchemaCollection2*, xmlNodePtr);
-extern HRESULT cache_from_doc_ns(IXMLDOMSchemaCollection2*, xmlnode*);
+extern XDR_DT SchemaCache_get_node_dt(IXMLDOMSchemaCollection2 *, const WCHAR *name, const WCHAR *uri);
+extern HRESULT cache_from_doc_ns(IXMLDOMSchemaCollection2*, struct domnode *);
 
 extern XDR_DT str_to_dt(xmlChar const* str, int len /* calculated if -1 */);
 extern XDR_DT bstr_to_dt(OLECHAR const* bstr, int len /* calculated if -1 */);
 extern xmlChar const* dt_to_str(XDR_DT dt);
 extern const char* debugstr_dt(XDR_DT dt);
 extern OLECHAR const* dt_to_bstr(XDR_DT dt);
-extern HRESULT dt_validate(XDR_DT dt, xmlChar const* content);
-
-extern BSTR EnsureCorrectEOL(BSTR);
-
-extern xmlChar* tagName_to_XPath(const BSTR tagName);
-
-extern HRESULT dom_pi_put_xml_decl(IXMLDOMNode *node, BSTR data);
+extern HRESULT dt_validate(XDR_DT dt, const WCHAR *content);
 
 #include <libxslt/documents.h>
 extern xmlDocPtr xslt_doc_default_loader(const xmlChar *uri, xmlDictPtr dict, int options,
@@ -343,6 +425,7 @@ static inline HRESULT return_null_var(VARIANT *p)
         return E_INVALIDARG;
 
     V_VT(p) = VT_NULL;
+    V_UINT_PTR(p) = 0;
     return S_FALSE;
 }
 
@@ -378,6 +461,8 @@ extern HRESULT MXNamespaceManager_create(void**);
 extern HRESULT XMLParser_create(void**);
 extern HRESULT XMLView_create(void**);
 
+extern HRESULT stream_wrapper_create(const void *, DWORD, ISequentialStream **);
+
 /* Error Codes - not defined anywhere in the public headers */
 #define E_XML_ELEMENT_UNDECLARED            0xC00CE00D
 #define E_XML_ELEMENT_ID_NOT_FOUND          0xC00CE00E
@@ -393,7 +478,4 @@ extern HRESULT XMLView_create(void**);
 /* ... */
 #define E_XML_REQUIRED_ATTRIBUTE_MISSING    0xC00CE020
 
-#define NODE_PRIV_TRAILING_IGNORABLE_WS     0x40000000
-#define NODE_PRIV_CHILD_IGNORABLE_WS        0x80000000
-#define NODE_PRIV_REFCOUNT_MASK             ~(NODE_PRIV_TRAILING_IGNORABLE_WS|NODE_PRIV_CHILD_IGNORABLE_WS)
 #endif /* __MSXML_PRIVATE__ */
diff --git a/dlls/msxml3/mxwriter.c b/dlls/msxml3/mxwriter.c
index 0024d375934e..6b1cd4706cb3 100644
--- a/dlls/msxml3/mxwriter.c
+++ b/dlls/msxml3/mxwriter.c
@@ -279,6 +279,17 @@ static HRESULT get_code_page(xml_encoding encoding, UINT *cp)
     return S_OK;
 }
 
+UINT get_codepage_for_encoding(const WCHAR *encoding)
+{
+    for (int i = 0; i < ARRAYSIZE(xml_encoding_map); ++i)
+    {
+        if (!wcsicmp(encoding, xml_encoding_map[i].encoding))
+            return xml_encoding_map[i].cp;
+    }
+
+    return 0;
+}
+
 static HRESULT init_output_buffer(xml_encoding encoding, output_buffer *buffer)
 {
     HRESULT hr;
diff --git a/dlls/msxml3/node.c b/dlls/msxml3/node.c
index 349e154e05c6..91e58e6ae9ee 100644
--- a/dlls/msxml3/node.c
+++ b/dlls/msxml3/node.c
@@ -21,11 +21,13 @@
 #define COBJMACROS
 
 #include <stdarg.h>
+#include <assert.h>
 
 #include <libxml/parser.h>
 #include <libxml/parserInternals.h>
 #include <libxml/xmlerror.h>
 #include <libxml/HTMLtree.h>
+#include <libxml/tree.h>
 #include <libxslt/pattern.h>
 #include <libxslt/transform.h>
 #include <libxslt/imports.h>
@@ -46,36 +48,96 @@
 #include "objsafe.h"
 
 #include "msxml_private.h"
+#include "saxreader_extensions.h"
 
 #include "wine/debug.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(msxml);
 
-static const IID IID_xmlnode = {0x4f2f4ba2,0xb822,0x11df,{0x8b,0x8a,0x68,0x50,0xdf,0xd7,0x20,0x85}};
+static const IID IID_domnode = {0x4f2f4ba2,0xb822,0x11df,{0x8b,0x8a,0x68,0x50,0xdf,0xd7,0x20,0x85}};
 
-xmlNodePtr xmlNodePtr_from_domnode( IXMLDOMNode *iface, xmlElementType type )
+struct string_buffer
 {
-    xmlnode *This;
+    WCHAR *data;
+    size_t count;
+    size_t capacity;
 
-    if ( !iface )
-        return NULL;
-    This = get_node_obj( iface );
-    if ( !This || !This->node )
-        return NULL;
-    if ( type && This->node->type != type )
-        return NULL;
-    return This->node;
+    HRESULT _status;
+    HRESULT *status;
+};
+
+static void string_buffer_init(struct string_buffer *buffer)
+{
+    memset(buffer, 0, sizeof(*buffer));
+    buffer->status = &buffer->_status;
+}
+
+static void string_append(struct string_buffer *buffer, const WCHAR *str, UINT len)
+{
+    if (*buffer->status != S_OK)
+        return;
+
+    if (!array_reserve((void **)&buffer->data, &buffer->capacity, buffer->count + len, sizeof(*str)))
+    {
+        *buffer->status = E_OUTOFMEMORY;
+        free(buffer->data);
+        return;
+    }
+
+    memcpy(buffer->data + buffer->count, str, len * sizeof(WCHAR));
+    buffer->count += len;
+}
+
+static void string_buffer_cleanup(struct string_buffer *buffer)
+{
+    free(buffer->data);
+    buffer->data = NULL;
+    buffer->count = buffer->capacity = 0;
+}
+
+static HRESULT string_to_bstr_slice(struct string_buffer *buffer, size_t offset, size_t length, BSTR *str)
+{
+    if (!str)
+    {
+        string_buffer_cleanup(buffer);
+        return E_INVALIDARG;
+    }
+
+    *str = NULL;
+
+    if (*buffer->status != S_OK)
+    {
+        string_buffer_cleanup(buffer);
+        return *buffer->status;
+    }
+
+    if ((length && offset >= buffer->count) || length + offset > buffer->count)
+    {
+        *buffer->status = E_INVALIDARG;
+        string_buffer_cleanup(buffer);
+        return *buffer->status;
+    }
+
+    *str = SysAllocStringLen(buffer->data + offset, length);
+    string_buffer_cleanup(buffer);
+
+    return *str ? S_OK : E_OUTOFMEMORY;
 }
 
-BOOL node_query_interface(xmlnode *This, REFIID riid, void **ppv)
+static HRESULT string_to_bstr(struct string_buffer *buffer, BSTR *str)
 {
-    if(IsEqualGUID(&IID_xmlnode, riid)) {
-        TRACE("(%p)->(IID_xmlnode %p)\n", This, ppv);
-        *ppv = This;
-        return TRUE;
+    return string_to_bstr_slice(buffer, 0, buffer->count, str);
+}
+
+bool node_query_interface(struct domnode *node, REFIID riid, void **obj)
+{
+    if (IsEqualGUID(&IID_domnode, riid))
+    {
+        *obj = node;
+        return true;
     }
 
-    return dispex_query_interface(&This->dispex, riid, ppv);
+    return false;
 }
 
 /* common ISupportErrorInfo implementation */
@@ -93,8 +155,7 @@ static inline SupportErrorInfo *impl_from_ISupportErrorInfo(ISupportErrorInfo *i
 
 static HRESULT WINAPI SupportErrorInfo_QueryInterface(ISupportErrorInfo *iface, REFIID riid, void **obj)
 {
-    SupportErrorInfo *This = impl_from_ISupportErrorInfo(iface);
-    TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), obj);
+    TRACE("%p, %s, %p.\n", iface, debugstr_guid(riid), obj);
 
     *obj = NULL;
 
@@ -133,7 +194,7 @@ static HRESULT WINAPI SupportErrorInfo_InterfaceSupportsErrorInfo(ISupportErrorI
     SupportErrorInfo *This = impl_from_ISupportErrorInfo(iface);
     enum tid_t const *tid;
 
-    TRACE("(%p)->(%s)\n", This, debugstr_guid(riid));
+    TRACE("%p, %s.\n", iface, debugstr_guid(riid));
 
     tid = This->iids;
     while (*tid != NULL_tid)
@@ -169,2658 +230,4526 @@ HRESULT node_create_supporterrorinfo(enum tid_t const *iids, void **obj)
     return S_OK;
 }
 
-xmlnode *get_node_obj(IXMLDOMNode *node)
+struct domnode *get_node_obj(void *node)
 {
-    xmlnode *obj = NULL;
-    HRESULT hres;
+    struct domnode *obj = NULL;
+    HRESULT hr;
 
-    hres = IXMLDOMNode_QueryInterface(node, &IID_xmlnode, (void**)&obj);
-    if (!obj) WARN("node is not our IXMLDOMNode implementation\n");
-    return SUCCEEDED(hres) ? obj : NULL;
+    hr = IUnknown_QueryInterface((IUnknown *)node, &IID_domnode, (void **)&obj);
+    if (!obj) WARN("Node is not our IXMLDOMNode implementation.\n");
+    return SUCCEEDED(hr) ? obj : NULL;
 }
 
-HRESULT node_get_nodeName(xmlnode *This, BSTR *name)
+static struct domnode *node_get_doc(struct domnode *node)
 {
-    BSTR prefix, base;
-    HRESULT hr;
-
-    if (!name)
-        return E_INVALIDARG;
-
-    hr = node_get_base_name(This, &base);
-    if (hr != S_OK) return hr;
-
-    if (!base[0] && xmldoc_version(This->node->doc) != MSXML6)
-    {
-        SysFreeString(base);
-        *name = SysAllocString(L"xmlns");
-        return S_OK;
-    }
-
-    hr = node_get_prefix(This, &prefix);
-    if (hr == S_OK)
-    {
-        static const WCHAR colW = ':';
-        WCHAR *ptr;
-
-        /* +1 for ':' */
-        ptr = *name = SysAllocStringLen(NULL, SysStringLen(base) + SysStringLen(prefix) + 1);
-        if (SysStringByteLen(prefix))
-        {
-            memcpy(ptr, prefix, SysStringByteLen(prefix));
-            ptr += SysStringLen(prefix);
-        }
-        if (SysStringByteLen(base))
-        {
-            if (SysStringByteLen(prefix))
-                memcpy(ptr++, &colW, sizeof(WCHAR));
-            memcpy(ptr, base, SysStringByteLen(base));
-        }
-
-        SysFreeString(base);
-        SysFreeString(prefix);
-    }
-    else
-        *name = base;
-
-    return S_OK;
+    return node->owner ? node->owner : node;
 }
 
-HRESULT node_get_content(xmlnode *This, VARIANT *value)
+HRESULT node_get_name(struct domnode *node, BSTR *name)
 {
-    xmlChar *content;
-
-    if(!value)
-        return E_INVALIDARG;
-
-    content = xmlNodeGetContent(This->node);
-    V_VT(value) = VT_BSTR;
-    V_BSTR(value) = bstr_from_xmlChar( content );
-    xmlFree(content);
-
-    TRACE("%p returned %s\n", This, debugstr_w(V_BSTR(value)));
-    return S_OK;
+    return return_bstr(node->qname, name);
 }
 
-HRESULT node_set_content(xmlnode *This, LPCWSTR value)
+HRESULT node_append_data(struct domnode *node, BSTR data)
 {
-    xmlChar *str;
+    UINT len, current;
+    BSTR str;
+
+    if (!(len = SysStringLen(data)))
+        return S_OK;
 
-    TRACE("(%p)->(%s)\n", This, debugstr_w(value));
-    str = xmlchar_from_wchar(value);
-    if(!str)
+    current = SysStringLen(node->data);
+    if (!(str = SysAllocStringLen(NULL, current + len)))
         return E_OUTOFMEMORY;
 
-    xmlNodeSetContent(This->node, str);
-    free(str);
+    memcpy(str, node->data, current * sizeof(WCHAR));
+    memcpy(&str[current], data, len * sizeof(WCHAR));
+    str[current + len] = 0;
+
+    SysFreeString(node->data);
+    node->data = str;
+
     return S_OK;
 }
 
-static HRESULT node_set_content_escaped(xmlnode *This, LPCWSTR value)
+static HRESULT variant_get_str_value(const VARIANT *src, VARIANT *tmp, BSTR *value)
 {
-    xmlChar *str, *escaped;
+    HRESULT hr;
 
-    TRACE("(%p)->(%s)\n", This, debugstr_w(value));
-    str = xmlchar_from_wchar(value);
-    if(!str)
-        return E_OUTOFMEMORY;
+    VariantInit(tmp);
+    *value = NULL;
 
-    escaped = xmlEncodeSpecialChars(NULL, str);
-    if(!escaped)
+    if (V_VT(src) == VT_BSTR)
     {
-        free(str);
-        return E_OUTOFMEMORY;
+        *value = V_BSTR(src);
+        return S_OK;
     }
 
-    xmlNodeSetContent(This->node, escaped);
-
-    free(str);
-    xmlFree(escaped);
+    hr = VariantChangeType(tmp, src, 0, VT_BSTR);
+    if (hr != S_OK)
+    {
+        WARN("Failed to change to BSTR\n");
+        return hr;
+    }
 
+    *value = V_BSTR(tmp);
     return S_OK;
 }
 
-HRESULT node_put_value(xmlnode *This, VARIANT *value)
+static HRESULT node_put_text_value(struct domnode *node, const VARIANT *value)
 {
     HRESULT hr;
+    VARIANT v;
+    BSTR str;
 
-    if (V_VT(value) != VT_BSTR)
-    {
-        VARIANT string_value;
-
-        VariantInit(&string_value);
-        hr = VariantChangeType(&string_value, value, 0, VT_BSTR);
-        if(FAILED(hr)) {
-            WARN("Couldn't convert to VT_BSTR\n");
-            return hr;
-        }
+    if (FAILED(hr = variant_get_str_value(value, &v, &str)))
+        return hr;
 
-        hr = node_set_content(This, V_BSTR(&string_value));
-        VariantClear(&string_value);
-    }
-    else
-        hr = node_set_content(This, V_BSTR(value));
+    hr = node_put_data(node, str);
+    VariantClear(&v);
 
     return hr;
 }
 
-HRESULT node_put_value_escaped(xmlnode *This, VARIANT *value)
+HRESULT node_put_value(struct domnode *node, VARIANT *value)
 {
     HRESULT hr;
 
-    if (V_VT(value) != VT_BSTR)
+    switch (node->type)
     {
-       VARIANT string_value;
-
-        VariantInit(&string_value);
-        hr = VariantChangeType(&string_value, value, 0, VT_BSTR);
-        if(FAILED(hr)) {
-            WARN("Couldn't convert to VT_BSTR\n");
-            return hr;
-        }
-
-        hr = node_set_content_escaped(This, V_BSTR(&string_value));
-        VariantClear(&string_value);
+        case NODE_TEXT:
+        case NODE_COMMENT:
+        case NODE_PROCESSING_INSTRUCTION:
+        case NODE_CDATA_SECTION:
+        case NODE_ATTRIBUTE:
+            hr = node_put_text_value(node, value);
+            break;
+        default:
+            FIXME("Unimplemented type %d.\n", node->type);
+            hr = E_NOTIMPL;
     }
-    else
-        hr = node_set_content_escaped(This, V_BSTR(value));
 
     return hr;
 }
 
-static HRESULT get_node(
-    xmlnode *This,
-    const char *name,
-    xmlNodePtr node,
-    IXMLDOMNode **out )
+static HRESULT get_node(struct domnode *node, IXMLDOMNode **out)
 {
-    TRACE("(%p)->(%s %p %p)\n", This, name, node, out );
-
-    if ( !out )
+    if (!out)
         return E_INVALIDARG;
 
-    /* if we don't have a doc, use our parent. */
-    if(node && !node->doc && node->parent)
-        node->doc = node->parent->doc;
-
-    *out = create_node( node );
-    if (!*out)
-        return S_FALSE;
-    return S_OK;
+    return create_node(node, out);
 }
 
-HRESULT node_get_parent(xmlnode *This, IXMLDOMNode **parent)
+HRESULT node_get_parent(struct domnode *node, IXMLDOMNode **ret)
 {
-    return get_node( This, "parent", This->node->parent, parent );
+    return get_node(node->parent, ret);
 }
 
-HRESULT node_get_child_nodes(xmlnode *This, IXMLDOMNodeList **ret)
+HRESULT node_get_child_nodes(struct domnode *node, IXMLDOMNodeList **ret)
 {
     if(!ret)
         return E_INVALIDARG;
 
-    *ret = create_children_nodelist(This->node);
-    if(!*ret)
-        return E_OUTOFMEMORY;
-
-    return S_OK;
+    return create_children_nodelist(node, ret);
 }
 
-HRESULT node_get_first_child(xmlnode *This, IXMLDOMNode **ret)
+static struct domnode *node_from_entry(struct list *entry)
 {
-    return get_node(This, "firstChild", This->node->children, ret);
+    return entry ? LIST_ENTRY(entry, struct domnode, entry) : NULL;
 }
 
-HRESULT node_get_last_child(xmlnode *This, IXMLDOMNode **ret)
+struct domnode *domnode_get_first_child(struct domnode *node)
 {
-    return get_node(This, "lastChild", This->node->last, ret);
+    return node_from_entry(list_head(&node->children));
 }
 
-HRESULT node_get_previous_sibling(xmlnode *This, IXMLDOMNode **ret)
+static struct domnode *domnode_get_previous_sibling(struct domnode *node)
 {
-    return get_node(This, "previous", This->node->prev, ret);
+    if (node->parent)
+        return node_from_entry(list_prev(&node->parent->children, &node->entry));
+
+    return NULL;
 }
 
-HRESULT node_get_next_sibling(xmlnode *This, IXMLDOMNode **ret)
+HRESULT node_get_first_child(struct domnode *node, IXMLDOMNode **ret)
 {
-    return get_node(This, "next", This->node->next, ret);
+    return get_node(domnode_get_first_child(node), ret);
 }
 
-static int node_get_inst_cnt(xmlNodePtr node)
+HRESULT node_get_last_child(struct domnode *node, IXMLDOMNode **ret)
 {
-    int ret = *(LONG *)&node->_private & NODE_PRIV_REFCOUNT_MASK;
-    xmlNodePtr child;
-
-    /* add attribute counts */
-    if (node->type == XML_ELEMENT_NODE)
-    {
-        xmlAttrPtr prop = node->properties;
-
-        while (prop)
-        {
-            ret += node_get_inst_cnt((xmlNodePtr)prop);
-            prop = prop->next;
-        }
-    }
-
-    /* add children counts */
-    child = node->children;
-    while (child)
-    {
-        ret += node_get_inst_cnt(child);
-        child = child->next;
-    }
-
-    return ret;
+    return get_node(node_from_entry(list_tail(&node->children)), ret);
 }
 
-int xmlnode_get_inst_cnt(xmlnode *node)
+HRESULT node_get_previous_sibling(struct domnode *node, IXMLDOMNode **ret)
 {
-    return node_get_inst_cnt(node->node);
+    struct domnode *sibling = NULL;
+
+    if (node->parent)
+        sibling = node_from_entry(list_prev(&node->parent->children, &node->entry));
+    return get_node(sibling, ret);
 }
 
-/* _private field holds a number of COM instances spawned from this libxml2 node
- * most significant bits are used to store information about ignorable whitespace nodes */
-void xmlnode_add_ref(xmlNodePtr node)
+struct domnode *domnode_get_next_sibling(struct domnode *node)
 {
-    if (node->type == XML_DOCUMENT_NODE) return;
-    InterlockedIncrement((LONG*)&node->_private);
+    if (node->parent)
+        return node_from_entry(list_next(&node->parent->children, &node->entry));
+
+    return NULL;
 }
 
-void xmlnode_release(xmlNodePtr node)
+HRESULT node_get_next_sibling(struct domnode *node, IXMLDOMNode **ret)
 {
-    if (node->type == XML_DOCUMENT_NODE) return;
-    InterlockedDecrement((LONG*)&node->_private);
+    return get_node(domnode_get_next_sibling(node), ret);
 }
 
-HRESULT node_insert_before(xmlnode *This, IXMLDOMNode *new_child, const VARIANT *ref_child,
-        IXMLDOMNode **ret)
+static bool domnode_is_valid_child_type(const struct domnode *node, struct domnode *child)
 {
-    IXMLDOMNode *before = NULL;
-    xmlnode *node_obj;
-    int refcount = 0;
-    xmlDocPtr doc;
-    HRESULT hr;
-
-    if(!new_child)
-        return E_INVALIDARG;
+    struct domnode *n;
 
-    node_obj = get_node_obj(new_child);
-    if(!node_obj) return E_FAIL;
-
-    switch(V_VT(ref_child))
+    if (!(node->type == NODE_DOCUMENT
+            || node->type == NODE_DOCUMENT_FRAGMENT
+            || node->type == NODE_ELEMENT
+            || node->type == NODE_ATTRIBUTE))
     {
-    case VT_EMPTY:
-    case VT_NULL:
-        break;
+        return false;
+    }
 
-    case VT_UNKNOWN:
-    case VT_DISPATCH:
-        if (V_UNKNOWN(ref_child))
+    if (child->type == NODE_DOCUMENT_FRAGMENT)
+    {
+        LIST_FOR_EACH_ENTRY(n, &child->children, struct domnode, entry)
         {
-            hr = IUnknown_QueryInterface(V_UNKNOWN(ref_child), &IID_IXMLDOMNode, (void**)&before);
-            if(FAILED(hr)) return hr;
+            if (!domnode_is_valid_child_type(node, n)) return false;
         }
-        break;
 
-    default:
-        FIXME("refChild var type %x\n", V_VT(ref_child));
-        return E_FAIL;
+        return true;
     }
 
-    TRACE("new child %p, This->node %p\n", node_obj->node, This->node);
+    switch (node->type)
+    {
+        case NODE_DOCUMENT:
+            if (child->type == NODE_ELEMENT)
+            {
+                /* Document is allowed a single element child. */
+
+                LIST_FOR_EACH_ENTRY(n, &node->children, struct domnode, entry)
+                {
+                    if (n->type == NODE_ELEMENT)
+                        return false;
+                }
+
+                return true;
+            }
 
-    if(!node_obj->node->parent)
-        if(xmldoc_remove_orphan(node_obj->node->doc, node_obj->node) != S_OK)
-            WARN("%p is not an orphan of %p\n", node_obj->node, node_obj->node->doc);
+            return (child->type == NODE_COMMENT
+                    || child->type == NODE_PROCESSING_INSTRUCTION);
 
-    refcount = xmlnode_get_inst_cnt(node_obj);
+        case NODE_DOCUMENT_FRAGMENT:
+        case NODE_ELEMENT:
+            return (child->type == NODE_TEXT
+                    || child->type == NODE_COMMENT
+                    || child->type == NODE_ELEMENT
+                    || child->type == NODE_CDATA_SECTION
+                    || child->type == NODE_ENTITY_REFERENCE
+                    || child->type == NODE_PROCESSING_INSTRUCTION);
 
-    if(before)
-    {
-        xmlnode *before_node_obj = get_node_obj(before);
-        IXMLDOMNode_Release(before);
-        if(!before_node_obj) return E_FAIL;
-    }
+        case NODE_ATTRIBUTE:
+            return (child->type ==  NODE_TEXT
+                    || child->type == NODE_ENTITY_REFERENCE);
 
-    /* unlink from current parent first */
-    if(node_obj->parent)
-    {
-        hr = IXMLDOMNode_removeChild(node_obj->parent, node_obj->iface, NULL);
-        if (hr == S_OK) xmldoc_remove_orphan(node_obj->node->doc, node_obj->node);
+        default:
+            return false;
     }
-    doc = node_obj->node->doc;
+}
 
-    if(before)
-    {
-        xmlNodePtr new_node;
-        xmlnode *before_node_obj = get_node_obj(before);
+/* Link to a new owner, transferring outstanding references. */
+static void domnode_set_owner(struct domnode *node, struct domnode *owner)
+{
+    struct domnode *n, *old_owner;
 
-        /* refs count including subtree */
-        if (doc != before_node_obj->node->doc)
-            refcount = xmlnode_get_inst_cnt(node_obj);
+    /* Document node does not have the owner set. */
+    owner = owner->owner ? owner->owner : owner;
 
-        if (refcount) xmldoc_add_refs(before_node_obj->node->doc, refcount);
-        new_node = xmlAddPrevSibling(before_node_obj->node, node_obj->node);
-        if (new_node != node_obj->node)
-        {
-            if (refcount != 1)
-                FIXME("referenced xmlNode was freed, expect crashes\n");
-            xmlnode_add_ref(new_node);
-            node_obj->node = new_node;
-        }
-        if (refcount) xmldoc_release_refs(doc, refcount);
-        node_obj->parent = This->parent;
-    }
-    else
-    {
-        xmlNodePtr new_node;
+    assert(!!owner);
+
+    old_owner = node->owner;
+    if (old_owner == owner)
+        return;
 
-        if (doc != This->node->doc)
-            refcount = xmlnode_get_inst_cnt(node_obj);
+    list_remove(&node->owner_entry);
+    node->owner = owner;
+    owner->refcount += node->refcount;
+    list_add_tail(&owner->owned, &node->owner_entry);
 
-        if (refcount) xmldoc_add_refs(This->node->doc, refcount);
-        /* xmlAddChild doesn't unlink node from previous parent */
-        xmlUnlinkNode(node_obj->node);
-        new_node = xmlAddChild(This->node, node_obj->node);
-        if (new_node != node_obj->node)
-        {
-            if (refcount != 1)
-                FIXME("referenced xmlNode was freed, expect crashes\n");
-            xmlnode_add_ref(new_node);
-            node_obj->node = new_node;
-        }
-        if (refcount) xmldoc_release_refs(doc, refcount);
-        node_obj->parent = This->iface;
+    LIST_FOR_EACH_ENTRY(n, &node->children, struct domnode, entry)
+    {
+        domnode_set_owner(n, owner);
     }
 
-    if(ret)
+    LIST_FOR_EACH_ENTRY(n, &node->attributes, struct domnode, entry)
     {
-        IXMLDOMNode_AddRef(new_child);
-        *ret = new_child;
+        domnode_set_owner(n, owner);
     }
 
-    TRACE("ret S_OK\n");
-    return S_OK;
+    old_owner->refcount -= node->refcount;
+    if (old_owner->refcount == 0)
+        domnode_destroy_tree(old_owner);
 }
 
-HRESULT node_replace_child(xmlnode *This, IXMLDOMNode *newChild, IXMLDOMNode *oldChild,
-        IXMLDOMNode **ret)
+static void domnode_unlink_child(struct domnode *child)
 {
-    xmlnode *old_child, *new_child;
-    xmlDocPtr leaving_doc;
-    xmlNode *my_ancestor;
-    int refcount = 0;
+    struct domnode *node, *top;
 
-    /* Do not believe any documentation telling that newChild == NULL
-       means removal. It does certainly *not* apply to msxml3! */
-    if(!newChild || !oldChild)
-        return E_INVALIDARG;
+    if (!child->parent)
+         return;
 
-    if(ret)
-        *ret = NULL;
+    /* TODO: should fail to remove doctype child */
+
+    /* Drop references for the parent and up */
+    node = child->parent;
+    while (node)
+    {
+        top = node;
+        node->refcount -= child->refcount;
+        node = node->parent;
+    }
 
-    old_child = get_node_obj(oldChild);
-    if(!old_child) return E_FAIL;
+    list_remove(&child->entry);
+    child->parent = NULL;
+
+    if (top->refcount == 0)
+        domnode_destroy_tree(top);
+}
+
+static void domnode_add_refs(struct domnode *node, unsigned int count)
+{
+    struct domnode *p = node;
 
-    if(old_child->node->parent != This->node)
+    if (node->owner)
+        node->owner->refcount += count;
+    while (p)
     {
-        WARN("childNode %p is not a child of %p\n", oldChild, This);
-        return E_INVALIDARG;
+        p->refcount += count;
+        p = p->parent;
     }
+}
 
-    new_child = get_node_obj(newChild);
-    if(!new_child) return E_FAIL;
+static void domnode_insert_domnode(struct domnode *node, struct domnode *child, struct domnode *ref_child)
+{
+    struct domnode *n, *next;
 
-    my_ancestor = This->node;
-    while(my_ancestor)
+    if (child->type == NODE_DOCUMENT_FRAGMENT)
     {
-        if(my_ancestor == new_child->node)
+        LIST_FOR_EACH_ENTRY_SAFE(n, next, &child->children, struct domnode, entry)
         {
-            WARN("tried to create loop\n");
-            return E_FAIL;
+            domnode_insert_domnode(node, n, ref_child);
         }
-        my_ancestor = my_ancestor->parent;
+
+        return;
     }
 
-    if(!new_child->node->parent)
-        if(xmldoc_remove_orphan(new_child->node->doc, new_child->node) != S_OK)
-            WARN("%p is not an orphan of %p\n", new_child->node, new_child->node->doc);
+    domnode_unlink_child(child);
 
-    leaving_doc = new_child->node->doc;
+    if (ref_child)
+        list_add_before(&ref_child->entry, &child->entry);
+    else
+        list_add_tail(&node->children, &child->entry);
 
-    if (leaving_doc != old_child->node->doc)
-        refcount = xmlnode_get_inst_cnt(new_child);
+    child->parent = node;
+    domnode_add_refs(child->parent, child->refcount);
+    domnode_set_owner(child, node);
+}
 
-    if (refcount) xmldoc_add_refs(old_child->node->doc, refcount);
-    xmlReplaceNode(old_child->node, new_child->node);
-    if (refcount) xmldoc_release_refs(leaving_doc, refcount);
-    new_child->parent = old_child->parent;
-    old_child->parent = NULL;
+HRESULT node_insert_before(struct domnode *node, IXMLDOMNode *new_child, const VARIANT *ref_child,
+        IXMLDOMNode **ret)
+{
+    struct domnode *child_node, *ref_node = NULL;
 
-    xmldoc_add_orphan(old_child->node->doc, old_child->node);
+    if (!new_child)
+        return E_INVALIDARG;
 
-    if(ret)
-    {
-        IXMLDOMNode_AddRef(oldChild);
-        *ret = oldChild;
-    }
+    if (ret)
+        *ret = NULL;
 
-    return S_OK;
-}
+    if (!(child_node = get_node_obj(new_child)))
+        return E_FAIL;
 
-HRESULT node_remove_child(xmlnode *This, IXMLDOMNode* child, IXMLDOMNode** oldChild)
-{
-    xmlnode *child_node;
+    switch (V_VT(ref_child))
+    {
+        case VT_EMPTY:
+        case VT_NULL:
+            break;
 
-    if(!child) return E_INVALIDARG;
+        case VT_UNKNOWN:
+        case VT_DISPATCH:
+            if (!V_UNKNOWN(ref_child))
+                break;
 
-    if(oldChild)
-        *oldChild = NULL;
+            if (!(ref_node = get_node_obj(V_UNKNOWN(ref_child))))
+                return E_FAIL;
+            if (ref_node->parent != node)
+            {
+                WARN("Reference node is not a child of this node.\n");
+                return E_FAIL;
+            }
+            break;
 
-    child_node = get_node_obj(child);
-    if(!child_node) return E_FAIL;
+        default:
+            FIXME("Unexpected reference node type %s.\n", debugstr_variant(ref_child));
+            return E_FAIL;
+    }
 
-    if(child_node->node->parent != This->node)
+    if (!domnode_is_valid_child_type(node, child_node))
     {
-        WARN("childNode %p is not a child of %p\n", child, This);
-        return E_INVALIDARG;
+        WARN("Can't add node %p as a child for %p.\n", child_node, node);
+        return E_FAIL;
     }
 
-    xmlUnlinkNode(child_node->node);
-    child_node->parent = NULL;
-    xmldoc_add_orphan(child_node->node->doc, child_node->node);
+    domnode_insert_domnode(node, child_node, ref_node);
 
-    if(oldChild)
+    if (ret)
     {
-        IXMLDOMNode_AddRef(child);
-        *oldChild = child;
+        *ret = new_child;
+        IXMLDOMNode_AddRef(*ret);
     }
 
     return S_OK;
 }
 
-HRESULT node_append_child(xmlnode *This, IXMLDOMNode *child, IXMLDOMNode **outChild)
+HRESULT node_replace_child(struct domnode *node, IXMLDOMNode *newChild, IXMLDOMNode *oldChild,
+        IXMLDOMNode **ret)
 {
-    DOMNodeType type;
-    VARIANT var;
+    struct domnode *old_child, *new_child, *curr;
+    VARIANT ref;
     HRESULT hr;
 
-    if (!child)
+    if (!newChild || !oldChild)
         return E_INVALIDARG;
 
-    hr = IXMLDOMNode_get_nodeType(child, &type);
-    if(FAILED(hr) || type == NODE_ATTRIBUTE) {
-        if (outChild) *outChild = NULL;
+    if (ret)
+        *ret = NULL;
+
+    if (!(new_child = get_node_obj(newChild)))
         return E_FAIL;
+
+    if (!(old_child = get_node_obj(oldChild)))
+        return E_FAIL;
+
+    if (old_child->parent != node)
+    {
+        WARN("Node %p is not a child of %p.\n", old_child, node);
+        return E_INVALIDARG;
     }
 
-    VariantInit(&var);
-    return IXMLDOMNode_insertBefore(This->iface, child, var, outChild);
+    curr = node;
+    while (curr)
+    {
+        if (curr == new_child)
+        {
+            WARN("Attempt to create a cycle.\n");
+            return E_FAIL;
+        }
+        curr = curr->parent;
+    }
+
+    V_VT(&ref) = VT_DISPATCH;
+    V_DISPATCH(&ref) = (IDispatch *)oldChild;
+    if (FAILED(hr = node_insert_before(node, newChild, &ref, NULL)))
+        return hr;
+
+    return node_remove_child(node, oldChild, ret);
 }
 
-HRESULT node_has_childnodes(const xmlnode *This, VARIANT_BOOL *ret)
+static void domnode_unlink_children(struct domnode *node)
 {
-    if (!ret) return E_INVALIDARG;
+    struct domnode *child, *next;
 
-    if (!This->node->children)
+    LIST_FOR_EACH_ENTRY_SAFE(child, next, &node->children, struct domnode, entry)
     {
-        *ret = VARIANT_FALSE;
-        return S_FALSE;
+        domnode_unlink_child(child);
     }
-
-    *ret = VARIANT_TRUE;
-    return S_OK;
 }
 
-HRESULT node_get_owner_doc(const xmlnode *This, IXMLDOMDocument **doc)
+static void domnode_append_child(struct domnode *parent, struct domnode *node)
 {
-    if(!doc)
-        return E_INVALIDARG;
-    return get_domdoc_from_xmldoc(This->node->doc, (IXMLDOMDocument3**)doc);
+    domnode_unlink_child(node);
+
+    list_add_tail(&parent->children, &node->entry);
+    node->parent = parent;
+    domnode_add_refs(node->parent, node->refcount);
+    domnode_set_owner(node, parent);
 }
 
-HRESULT node_clone(xmlnode *This, VARIANT_BOOL deep, IXMLDOMNode **cloneNode)
+HRESULT node_put_data(struct domnode *node, const WCHAR *data)
 {
-    IXMLDOMNode *node;
-    xmlNodePtr clone;
+    struct string_buffer buffer;
+    const WCHAR *p = data;
+    struct domnode *child;
+
+    if (node->flags & DOMNODE_READONLY_VALUE)
+        return E_FAIL;
 
-    if(!cloneNode) return E_INVALIDARG;
+    /* Markup is checked and rejected. */
 
-    clone = xmlCopyNode(This->node, deep ? 1 : 2);
-    if (clone)
-    {
-        xmlSetTreeDoc(clone, This->node->doc);
-        xmldoc_add_orphan(clone->doc, clone);
+    if (node->type == NODE_COMMENT && data && wcsstr(data, L"-->"))
+        return E_INVALIDARG;
+
+    if (node->type == NODE_PROCESSING_INSTRUCTION && data && wcsstr(data, L"?>"))
+        return E_INVALIDARG;
+
+    string_buffer_init(&buffer);
 
-        node = create_node(clone);
-        if (!node)
+    while (p && *p)
+    {
+        if (*p == '\r')
         {
-            ERR("Copy failed\n");
-            xmldoc_remove_orphan(clone->doc, clone);
-            xmlFreeNode(clone);
-            return E_FAIL;
+            if (p[1] == '\n') ++p;
+            string_append(&buffer, L"\n", 1);
         }
-
-        *cloneNode = node;
+        else
+        {
+            string_append(&buffer, p, 1);
+        }
+        ++p;
     }
-    else
+
+    switch (node->type)
     {
-        ERR("Copy failed\n");
-        return E_FAIL;
-    }
+        case NODE_ATTRIBUTE:
+        case NODE_ELEMENT:
+            domnode_unlink_children(node);
 
-    return S_OK;
+            /* TODO: error handling */
+            domnode_create(NODE_TEXT, NULL, 0, NULL, 0, node->owner, &child);
+            domnode_append_child(node, child);
+
+            return string_to_bstr(&buffer, &child->data);
+
+        default:
+            SysFreeString(node->data);
+            return string_to_bstr(&buffer, &node->data);
+    }
 }
 
-static xmlChar* do_get_text(xmlNodePtr node, BOOL trim, DWORD *first, DWORD *last, BOOL *trail_ig_ws)
+struct node_dump_ns
 {
-    xmlNodePtr child;
-    xmlChar* str;
-    BOOL preserving = is_preserving_whitespace(node);
-
-    *first = -1;
-    *last = 0;
+    struct list entry;
+    BSTR prefix;
+    BSTR uri;
+    bool own_uri;
+    int depth;
+};
 
-    if (!node->children)
+struct node_dump_context
+{
+    struct string_buffer buffer;
+    struct
     {
-        str = xmlNodeGetContent(node);
-        *trail_ig_ws = *(DWORD*)&node->_private & NODE_PRIV_CHILD_IGNORABLE_WS;
+        char *data;
+        size_t capacity;
+    } scratch;
+
+    struct list namespaces;
+    int depth;
+
+    unsigned int indent;
+    bool needs_formatting;
+
+    bool only_utf16_encoding_decl;
+
+    IStream *stream;
+    UINT codepage;
+    HRESULT status;
+};
+
+static void node_dump_push_namespace(struct node_dump_context *context, BSTR prefix, BSTR uri, bool own_uri)
+{
+    struct node_dump_ns *ns;
+
+    if (context->status != S_OK)
+        return;
+
+    if (!(ns = calloc(1, sizeof(*ns))))
+    {
+        context->status = E_OUTOFMEMORY;
+        return;
     }
-    else
+
+    ns->depth = context->depth;
+    ns->prefix = prefix;
+    ns->uri = uri;
+    ns->own_uri = own_uri;
+
+    list_add_tail(&context->namespaces, &ns->entry);
+}
+
+static void node_dump_pop_namespaces(struct node_dump_context *context)
+{
+    struct node_dump_ns *ns, *next;
+
+    LIST_FOR_EACH_ENTRY_SAFE_REV(ns, next, &context->namespaces, struct node_dump_ns, entry)
     {
-        BOOL ig_ws = FALSE;
-        xmlChar* tmp;
-        DWORD pos = 0;
-        str = xmlStrdup(BAD_CAST "");
+        if (ns->depth != context->depth)
+            break;
 
-        if (node->type != XML_DOCUMENT_NODE)
-            ig_ws = *(DWORD*)&node->_private & NODE_PRIV_CHILD_IGNORABLE_WS;
-        *trail_ig_ws = FALSE;
+        list_remove(&ns->entry);
+        if (ns->own_uri)
+            SysFreeString(ns->uri);
+        free(ns);
+    }
+}
 
-        for (child = node->children; child != NULL; child = child->next)
-        {
-            switch (child->type)
-            {
-            case XML_ELEMENT_NODE: {
-                DWORD node_first, node_last;
+static void node_dump(struct domnode *node, struct node_dump_context *context);
 
-                tmp = do_get_text(child, FALSE, &node_first, &node_last, trail_ig_ws);
+static void node_dump_append(struct node_dump_context *context, const WCHAR *text, unsigned int length)
+{
+    ULONG written, required;
 
-                if (node_first!=-1 && pos+node_first<*first)
-                    *first = pos+node_first;
-                if (node_last && pos+node_last>*last)
-                    *last = pos+node_last;
-                break;
-            }
-            case XML_TEXT_NODE:
-                tmp = xmlNodeGetContent(child);
-                if (!preserving && tmp[0])
-                {
-                    xmlChar *beg;
+    if (context->status != S_OK)
+        return;
 
-                    for (beg = tmp; *beg; beg++)
-                        if (!isspace(*beg)) break;
+    if (context->stream)
+    {
+        if (context->codepage == ~0u)
+        {
+            context->status = IStream_Write(context->stream, text, length * sizeof(WCHAR), &written);
+        }
+        else
+        {
+            /* NOTE: might be useful to buffer */
 
-                    if (!*beg)
-                    {
-                        ig_ws = TRUE;
-                        xmlFree(tmp);
-                        tmp = NULL;
-                    }
-                }
-                break;
-            case XML_CDATA_SECTION_NODE:
-            case XML_ENTITY_REF_NODE:
-            case XML_ENTITY_NODE:
-                tmp = xmlNodeGetContent(child);
-                break;
-            default:
-                tmp = NULL;
-                break;
-            }
+            required = WideCharToMultiByte(context->codepage, 0, text, length, NULL, 0, NULL, NULL);
 
-            if ((tmp && *tmp) || child->type==XML_CDATA_SECTION_NODE)
+            if (!array_reserve((void **)&context->scratch.data, &context->scratch.capacity,
+                    required, sizeof(*context->scratch.data)))
             {
-                if (ig_ws && str[0])
-                {
-                    str = xmlStrcat(str, BAD_CAST " ");
-                    pos++;
-                }
-                if (tmp && *tmp) str = xmlStrcat(str, tmp);
-                if (child->type==XML_CDATA_SECTION_NODE && pos<*first)
-                    *first = pos;
-                if (tmp && *tmp) pos += xmlStrlen(tmp);
-                if (child->type==XML_CDATA_SECTION_NODE && pos>*last)
-                    *last = pos;
-                ig_ws = FALSE;
+                context->status = E_OUTOFMEMORY;
+                return;
             }
-            if (tmp) xmlFree(tmp);
 
-            if (!ig_ws)
-            {
-                ig_ws = *(DWORD*)&child->_private & NODE_PRIV_TRAILING_IGNORABLE_WS;
-            }
-            if (!ig_ws)
-                ig_ws = *trail_ig_ws;
-            *trail_ig_ws = FALSE;
+            WideCharToMultiByte(context->codepage, 0, text, length, context->scratch.data, required, NULL, NULL);
+            context->status = IStream_Write(context->stream, context->scratch.data, required, &written);
         }
-
-        *trail_ig_ws = ig_ws;
     }
-
-    switch (node->type)
+    else
     {
-    case XML_ELEMENT_NODE:
-    case XML_TEXT_NODE:
-    case XML_ENTITY_REF_NODE:
-    case XML_ENTITY_NODE:
-    case XML_DOCUMENT_NODE:
-    case XML_DOCUMENT_FRAG_NODE:
-        if (trim && !preserving)
-        {
-            xmlChar* ret;
-            int len;
+        string_append(&context->buffer, text, length);
+    }
+}
 
-            if (!str)
-                break;
+static HRESULT node_get_pi_data(const struct domnode *node, BSTR *p)
+{
+    struct node_dump_context context = { 0 };
+    bool separate = false;
+    struct domnode *attr;
 
-            for (ret = str; *ret && isspace(*ret) && (*first)--; ret++)
-                if (*last) (*last)--;
-            for (len = xmlStrlen(ret)-1; len >= 0 && len >= *last; len--)
-                if(!isspace(ret[len])) break;
+    if (!wcscmp(node->name, L"xml"))
+    {
+        string_buffer_init(&context.buffer);
 
-            ret = xmlStrndup(ret, len+1);
-            xmlFree(str);
-            str = ret;
-            break;
+        LIST_FOR_EACH_ENTRY(attr, &node->attributes, struct domnode, entry)
+        {
+            if (separate)
+                node_dump_append(&context, L" ", 1);
+            node_dump(attr, &context);
+            separate = true;
         }
-        break;
-    default:
-        break;
+        return string_to_bstr(&context.buffer, p);
+    }
+    else
+    {
+        return return_bstr(node->data ? node->data : L"", p);
     }
+}
 
-    return str;
+HRESULT node_get_data(struct domnode *node, BSTR *p)
+{
+    switch (node->type)
+    {
+        case NODE_TEXT:
+        case NODE_COMMENT:
+        case NODE_CDATA_SECTION:
+            return return_bstr(node->data ? node->data : L"", p);
+        case NODE_PROCESSING_INSTRUCTION:
+            return node_get_pi_data(node, p);
+        default:
+            FIXME("Unhandled type %d.\n", node->type);
+            return E_NOTIMPL;
+    }
 }
 
-HRESULT node_get_text(const xmlnode *This, BSTR *text)
+HRESULT node_remove_child(struct domnode *node, IXMLDOMNode *child, IXMLDOMNode **oldChild)
 {
-    BSTR str = NULL;
-    xmlChar *content;
-    DWORD first, last;
-    BOOL tmp;
+    struct domnode *child_node;
+
+    if (!child)
+        return E_INVALIDARG;
+
+    if (oldChild)
+        *oldChild = NULL;
+
+    child_node = get_node_obj(child);
+    if (!child_node)
+        return E_FAIL;
+
+    if (child_node->parent != node)
+    {
+        WARN("Node %p is not a child of %p.\n", child, node);
+        return E_INVALIDARG;
+    }
+
+    if (child_node->type == NODE_DOCUMENT_TYPE)
+    {
+        WARN("Can't remove doctype child.\n");
+        return E_FAIL;
+    }
 
-    if (!text) return E_INVALIDARG;
+    domnode_unlink_child(child_node);
 
-    content = do_get_text(This->node, TRUE, &first, &last, &tmp);
-    if (content)
+    if (oldChild)
     {
-        str = bstr_from_xmlChar(content);
-        xmlFree(content);
+        IXMLDOMNode_AddRef(child);
+        *oldChild = child;
     }
 
-    /* Always return a string. */
-    if (!str) str = SysAllocStringLen( NULL, 0 );
+    /* Child node is never freed here, we'll always have outstanding references at this point. */
 
-    TRACE("%p %s\n", This, debugstr_w(str) );
-    *text = str;
- 
     return S_OK;
 }
 
-HRESULT node_put_text(xmlnode *This, BSTR text)
+static void domnode_unlink_attribute(struct domnode *attr)
 {
-    xmlChar *str, *str2;
-
-    TRACE("(%p)->(%s)\n", This, debugstr_w(text));
+    struct domnode *node, *top;
 
-    str = xmlchar_from_wchar(text);
+    if (!attr->parent)
+        return;
 
-    /* Escape the string. */
-    str2 = xmlEncodeEntitiesReentrant(This->node->doc, str);
-    free(str);
+    /* Drop references for the parent and up */
+    node = attr->parent;
+    while (node)
+    {
+        top = node;
+        node->refcount -= attr->refcount;
+        node = node->parent;
+    }
 
-    xmlNodeSetContent(This->node, str2);
-    xmlFree(str2);
+    list_remove(&attr->entry);
+    attr->parent = NULL;
 
-    return S_OK;
+    if (top->refcount == 0)
+        domnode_destroy_tree(top);
 }
 
-BSTR EnsureCorrectEOL(BSTR sInput)
+HRESULT node_remove_attribute_node(struct domnode *node, IXMLDOMAttribute *attr, IXMLDOMAttribute **old_attr)
 {
-    int nNum = 0;
-    BSTR sNew;
-    int nLen;
-    int i;
+    struct domnode *attr_node;
+
+    if (!attr)
+        return E_INVALIDARG;
+
+    if (old_attr)
+        *old_attr = NULL;
+
+    attr_node = get_node_obj(attr);
+    if (!attr_node)
+        return E_FAIL;
 
-    nLen = SysStringLen(sInput);
-    /* Count line endings */
-    for(i=0; i < nLen; i++)
+    if (attr_node->parent != node)
     {
-        if(sInput[i] == '\n')
-            nNum++;
+        WARN("Node %p is not an attribute of %p.\n", attr, node);
+        return E_INVALIDARG;
     }
 
-    TRACE("len=%d, num=%d\n", nLen, nNum);
+    domnode_unlink_attribute(attr_node);
 
-    /* Add linefeed as needed */
-    if(nNum > 0)
+    if (old_attr)
     {
-        int nPlace = 0;
-        sNew = SysAllocStringLen(NULL, nLen + nNum);
-        for(i=0; i < nLen; i++)
-        {
-            if(sInput[i] == '\n')
-            {
-                sNew[i+nPlace] = '\r';
-                nPlace++;
-            }
-            sNew[i+nPlace] = sInput[i];
-        }
-
-        SysFreeString(sInput);
+        IXMLDOMAttribute_AddRef(attr);
+        *old_attr = attr;
     }
-    else
+
+    /* Attribute node is never freed here, we'll always have outstanding references at this point. */
+
+    return S_OK;
+}
+
+HRESULT domnode_get_attribute(const struct domnode *node, const WCHAR *name, struct domnode **attr)
+{
+    struct domnode *n;
+
+    /* TODO: return E_FAIL for invalid XML names */
+
+    LIST_FOR_EACH_ENTRY(n, &node->attributes, struct domnode, entry)
     {
-        sNew = sInput;
+        if (!wcscmp(n->qname, name))
+        {
+            *attr = n;
+            return S_OK;
+        }
     }
 
-    TRACE("len %d\n", SysStringLen(sNew));
+    *attr = NULL;
+    return S_FALSE;
+}
+
+static bool is_same_uri(const struct domnode *node, const WCHAR *uri)
+{
+    if (node->uri)
+        return uri && !wcscmp(node->uri, uri);
 
-    return sNew;
+    return !uri;
 }
 
-/*
- * We are trying to replicate the same behaviour as msxml by converting
- * line endings to \r\n and using indents as \t. The problem is that msxml
- * only formats nodes that have a line ending. Using libxml we cannot
- * reproduce behaviour exactly.
- *
- */
-HRESULT node_get_xml(xmlnode *This, BOOL ensure_eol, BSTR *ret)
+static HRESULT domnode_get_qualified_attribute(const struct domnode *node, const WCHAR *name,
+        const WCHAR *uri, struct domnode **attr)
 {
-    xmlBufferPtr xml_buf;
-    xmlNodePtr xmldecl;
-    int size;
+    struct domnode *n;
 
-    if(!ret)
-        return E_INVALIDARG;
+    LIST_FOR_EACH_ENTRY(n, &node->attributes, struct domnode, entry)
+    {
+        if (!wcscmp(n->name, name) && is_same_uri(n, uri))
+        {
+            *attr = n;
+            return S_OK;
+        }
+    }
 
-    *ret = NULL;
+    *attr = NULL;
+    return S_FALSE;
+}
 
-    xml_buf = xmlBufferCreate();
-    if(!xml_buf)
-        return E_OUTOFMEMORY;
+HRESULT node_remove_attribute(struct domnode *node, const WCHAR *name, IXMLDOMNode **ret)
+{
+    struct domnode *attr;
+    HRESULT hr;
 
-    xmldecl = xmldoc_unlink_xmldecl( This->node->doc );
+    if (!name)
+        return E_INVALIDARG;
 
-    size = xmlNodeDump(xml_buf, This->node->doc, This->node, 0, 1);
-    if(size > 0) {
-        const xmlChar *buf_content;
-        BSTR content;
+    if (ret)
+        *ret = NULL;
 
-        /* Attribute Nodes return a space in front of their name */
-        buf_content = xmlBufferContent(xml_buf);
+    if ((hr = domnode_get_attribute(node, name, &attr)) != S_OK)
+        return hr;
 
-        content = bstr_from_xmlChar(buf_content + (buf_content[0] == ' ' ? 1 : 0));
-        if(ensure_eol)
-            content = EnsureCorrectEOL(content);
+    if (ret)
+        hr = create_node(attr, ret);
 
-        *ret = content;
-    }else {
-        *ret = SysAllocStringLen(NULL, 0);
-    }
+    if (SUCCEEDED(hr))
+        domnode_unlink_attribute(attr);
 
-    xmlBufferFree(xml_buf);
-    xmldoc_link_xmldecl( This->node->doc, xmldecl );
-    return *ret ? S_OK : E_OUTOFMEMORY;
+    return hr;
 }
 
-/* duplicates xmlBufferWriteQuotedString() logic */
-static void xml_write_quotedstring(xmlOutputBufferPtr buf, const xmlChar *string)
+HRESULT domnode_create(DOMNodeType type, const WCHAR *name, int name_len, const WCHAR *uri, int uri_len,
+        struct domnode *owner, struct domnode **node)
 {
-    const xmlChar *cur, *base;
+    struct domnode *object;
+    WCHAR *p;
+    BSTR str;
 
-    if (xmlStrchr(string, '\"'))
+    *node = NULL;
+
+    if (!(object = calloc(1, sizeof(*object))))
+        return E_OUTOFMEMORY;
+
+    str = SysAllocStringLen(name, name_len);
+    if (type == NODE_ELEMENT || type == NODE_ATTRIBUTE)
     {
-        if (xmlStrchr(string, '\''))
+        if (!parser_is_valid_qualified_name(str))
         {
-            xmlOutputBufferWrite(buf, 1, "\"");
-            base = cur = string;
+            SysFreeString(str);
+            return E_FAIL;
+        }
 
-            while (*cur)
-            {
-                if (*cur == '"')
-                {
-                    if (base != cur)
-                        xmlOutputBufferWrite(buf, cur-base, (const char*)base);
-                    xmlOutputBufferWrite(buf, 6, "&quot;");
-                    cur++;
-                    base = cur;
-                }
-                else
-                    cur++;
-            }
-            if (base != cur)
-                xmlOutputBufferWrite(buf, cur-base, (const char*)base);
-            xmlOutputBufferWrite(buf, 1, "\"");
+        if ((p = wcschr(str, ':')))
+        {
+            object->prefix = SysAllocStringLen(str, p - str);
+            object->name = SysAllocString(p + 1);
         }
         else
         {
-            xmlOutputBufferWrite(buf, 1, "\'");
-            xmlOutputBufferWriteString(buf, (const char*)string);
-            xmlOutputBufferWrite(buf, 1, "\'");
+            object->name = str;
         }
     }
     else
     {
-        xmlOutputBufferWrite(buf, 1, "\"");
-        xmlOutputBufferWriteString(buf, (const char*)string);
-        xmlOutputBufferWrite(buf, 1, "\"");
+        object->name = str;
     }
-}
-
-static int XMLCALL transform_to_stream_write(void *context, const char *buffer, int len)
-{
-    DWORD written;
-    HRESULT hr = ISequentialStream_Write((ISequentialStream *)context, buffer, len, &written);
-    return hr == S_OK ? written : -1;
-}
+    object->qname = str;
 
-/* Output for method "text" */
-static void transform_write_text(xmlDocPtr result, xsltStylesheetPtr style, xmlOutputBufferPtr output)
-{
-    xmlNodePtr cur = result->children;
-    while (cur)
+    if (uri_len)
     {
-        if (cur->type == XML_TEXT_NODE)
-            xmlOutputBufferWriteString(output, (const char*)cur->content);
-
-        /* skip to next node */
-        if (cur->children)
+        if (!(object->uri = SysAllocStringLen(uri, uri_len)))
         {
-            if ((cur->children->type != XML_ENTITY_DECL) &&
-                (cur->children->type != XML_ENTITY_REF_NODE) &&
-                (cur->children->type != XML_ENTITY_NODE))
-            {
-                cur = cur->children;
-                continue;
-            }
-        }
-
-        if (cur->next) {
-            cur = cur->next;
-            continue;
+            free(object->name);
+            free(object);
+            return E_OUTOFMEMORY;
         }
+    }
 
-        do
-        {
-            cur = cur->parent;
-            if (cur == NULL)
-                break;
-            if (cur == (xmlNodePtr) style->doc) {
-                cur = NULL;
-                break;
-            }
-            if (cur->next) {
-                cur = cur->next;
-                break;
-            }
-        } while (cur);
+    object->type = type;
+    switch (object->type)
+    {
+        case NODE_PROCESSING_INSTRUCTION:
+            if (!wcscmp(object->name, L"xml"))
+                object->flags |= DOMNODE_READONLY_VALUE;
+            break;
+        default:
+            ;
     }
+
+    list_init(&object->entry);
+    list_init(&object->owner_entry);
+    list_init(&object->children);
+    list_init(&object->attributes);
+    list_init(&object->owned);
+    object->owner = owner;
+    /* Document node does not have an owner */
+    if (owner)
+        list_add_tail(&owner->owned, &object->owner_entry);
+
+    *node = object;
+
+    return S_OK;
 }
 
-#undef XSLT_GET_IMPORT_PTR
-#define XSLT_GET_IMPORT_PTR(res, style, name) {          \
-    xsltStylesheetPtr st = style;                        \
-    res = NULL;                                          \
-    while (st != NULL) {                                 \
-        if (st->name != NULL) { res = st->name; break; } \
-        st = xsltNextImport(st);                         \
-    }}
+static void domnode_append_attribute(struct domnode *parent, struct domnode *node)
+{
+    domnode_unlink_attribute(node);
 
-#undef XSLT_GET_IMPORT_INT
-#define XSLT_GET_IMPORT_INT(res, style, name) {         \
-    xsltStylesheetPtr st = style;                       \
-    res = -1;                                           \
-    while (st != NULL) {                                \
-        if (st->name != -1) { res = st->name; break; }  \
-        st = xsltNextImport(st);                        \
-    }}
+    list_add_tail(&parent->attributes, &node->entry);
+    node->parent = parent;
+    domnode_add_refs(node->parent, node->refcount);
+    domnode_set_owner(node, parent);
+}
 
-static void transform_write_xmldecl(xmlDocPtr result, xsltStylesheetPtr style, BOOL omit_encoding, xmlOutputBufferPtr output)
+static HRESULT parse_xml_decl_append_attribute(struct domnode *pi, const WCHAR *name, BSTR value)
 {
-    int omit_xmldecl, standalone;
+    struct domnode *attribute;
+    HRESULT hr;
 
-    XSLT_GET_IMPORT_INT(omit_xmldecl, style, omitXmlDeclaration);
-    if (omit_xmldecl == 1) return;
+    if (FAILED(hr = domnode_create(NODE_ATTRIBUTE, name, wcslen(name), NULL, 0, pi->owner, &attribute)))
+        return hr;
 
-    XSLT_GET_IMPORT_INT(standalone, style, standalone);
+    if (SUCCEEDED(hr = node_put_data(attribute, value)))
+        domnode_append_attribute(pi, attribute);
+    else
+        domnode_destroy_tree(attribute);
 
-    xmlOutputBufferWriteString(output, "<?xml version=");
-    if (result->version)
-    {
-        xmlOutputBufferWriteString(output, "\"");
-        xmlOutputBufferWriteString(output, (const char *)result->version);
-        xmlOutputBufferWriteString(output, "\"");
-    }
+    return hr;
+}
+
+static HRESULT parse_xml_decl(struct domnode *pi, const WCHAR *data)
+{
+    BSTR version, encoding, standalone;
+    HRESULT hr;
+
+    if (FAILED(hr = parse_xml_decl_body(data, &version, &encoding, &standalone)))
+        return hr;
+
+    hr = parse_xml_decl_append_attribute(pi, L"version", version);
+
+    if (SUCCEEDED(hr) && encoding)
+        hr = parse_xml_decl_append_attribute(pi, L"encoding", encoding);
+
+    if (SUCCEEDED(hr) && standalone)
+        hr = parse_xml_decl_append_attribute(pi, L"standalone", standalone);
+
+    SysFreeString(version);
+    SysFreeString(encoding);
+    SysFreeString(standalone);
+
+    return hr;
+}
+
+/* Parses declaration into attributes, public API does not allow setting data for such nodes. */
+HRESULT create_pi_node(struct domnode *doc, const WCHAR *target, const WCHAR *data, IXMLDOMProcessingInstruction **ret)
+{
+    struct domnode *pi;
+    HRESULT hr;
+
+    if (!ret)
+        return E_INVALIDARG;
+
+    if (!target || !*target)
+        return E_FAIL;
+
+    *ret = NULL;
+
+    if (FAILED(hr = domnode_create(NODE_PROCESSING_INSTRUCTION, target, wcslen(target), NULL, 0, doc, &pi)))
+        return hr;
+
+    if (!wcscmp(target, L"xml"))
+        hr = parse_xml_decl(pi, data);
     else
-        xmlOutputBufferWriteString(output, "\"1.0\"");
+        hr = node_put_data(pi, data);
 
-    if (!omit_encoding)
-    {
-        const xmlChar *encoding;
+    if (SUCCEEDED(hr))
+        return create_node(pi, (IXMLDOMNode **)ret);
 
-        /* default encoding is UTF-16 */
-        XSLT_GET_IMPORT_PTR(encoding, style, encoding);
-        xmlOutputBufferWriteString(output, " encoding=");
-        xmlOutputBufferWriteString(output, "\"");
-        xmlOutputBufferWriteString(output, encoding ? (const char *)encoding : "UTF-16");
-        xmlOutputBufferWriteString(output, "\"");
-    }
+    domnode_destroy_tree(pi);
 
-    /* standalone attribute */
-    if (standalone != -1)
-        xmlOutputBufferWriteString(output, standalone == 0 ? " standalone=\"no\"" : " standalone=\"yes\"");
+    return hr;
+}
 
-    xmlOutputBufferWriteString(output, "?>");
+HRESULT node_append_child(struct domnode *node, IXMLDOMNode *child, IXMLDOMNode **outChild)
+{
+    VARIANT var;
+
+    VariantInit(&var);
+    return node_insert_before(node, child, &var, outChild);
 }
 
-static void htmldtd_dumpcontent(xmlOutputBufferPtr buf, xmlDocPtr doc)
+HRESULT node_has_childnodes(const struct domnode *node, VARIANT_BOOL *ret)
 {
-    xmlDtdPtr cur = doc->intSubset;
+    if (!ret)
+        return E_INVALIDARG;
 
-    xmlOutputBufferWriteString(buf, "<!DOCTYPE ");
-    xmlOutputBufferWriteString(buf, (const char *)cur->name);
-    if (cur->ExternalID)
-    {
-        xmlOutputBufferWriteString(buf, " PUBLIC ");
-        xml_write_quotedstring(buf, cur->ExternalID);
-        if (cur->SystemID)
-        {
-            xmlOutputBufferWriteString(buf, " ");
-            xml_write_quotedstring(buf, cur->SystemID);
-        }
-    }
-    else if (cur->SystemID)
+    if (list_empty(&node->children))
     {
-        xmlOutputBufferWriteString(buf, " SYSTEM ");
-        xml_write_quotedstring(buf, cur->SystemID);
+        *ret = VARIANT_FALSE;
+        return S_FALSE;
     }
-    xmlOutputBufferWriteString(buf, ">\n");
+
+    *ret = VARIANT_TRUE;
+    return S_OK;
 }
 
-/* Duplicates htmlDocContentDumpFormatOutput() the way we need it - doesn't add trailing newline. */
-static void htmldoc_dumpcontent(xmlOutputBufferPtr buf, xmlDocPtr doc, const char *encoding, int format)
+HRESULT node_get_owner_document(const struct domnode *node, IXMLDOMDocument **doc)
 {
-    xmlElementType type;
+    IXMLDOMNode *node_obj;
+    HRESULT hr;
 
-    /* force HTML output */
-    type = doc->type;
-    doc->type = XML_HTML_DOCUMENT_NODE;
-    if (doc->intSubset)
-        htmldtd_dumpcontent(buf, doc);
-    if (doc->children) {
-        xmlNodePtr cur = doc->children;
-        while (cur) {
-            htmlNodeDumpFormatOutput(buf, doc, cur, encoding, format);
-            cur = cur->next;
-        }
+    if (!doc)
+        return E_INVALIDARG;
+
+    if (FAILED(hr = get_node(node->owner, &node_obj)))
+        return hr;
+
+    hr = IXMLDOMNode_QueryInterface(node_obj, &IID_IXMLDOMDocument, (void **)doc);
+    IXMLDOMNode_Release(node_obj);
+
+    return hr;
+}
+
+struct domnode *domnode_addref(struct domnode *node)
+{
+    domnode_add_refs(node, 1);
+    return node;
+}
+
+static struct domnode *domnode_drop_refs(struct domnode *node, unsigned int count)
+{
+    struct domnode *top = NULL;
+
+    if (node->owner)
+        node->owner->refcount -= count;
+    while (node)
+    {
+        top = node;
+        node->refcount -= count;
+        node = node->parent;
     }
-    doc->type = type;
+
+    return top;
 }
 
-static inline BOOL transform_is_empty_resultdoc(xmlDocPtr result)
+struct domdoc_properties *domdoc_create_properties(MSXML_VERSION version)
 {
-    return !result->children || ((result->children->type == XML_DTD_NODE) && !result->children->next);
+    struct domdoc_properties *properties = malloc(sizeof(*properties));
+
+    list_init(&properties->selectNsList);
+    properties->preserving = VARIANT_FALSE;
+    properties->validating = VARIANT_TRUE;
+    properties->schemaCache = NULL;
+    properties->selectNsStr = calloc(1, sizeof(xmlChar));
+    properties->selectNsStr_len = 0;
+
+    /* properties that are dependent on object versions */
+    properties->version = version;
+    properties->XPath = (version == MSXML4 || version == MSXML6);
+    properties->prohibit_dtd = version == MSXML6;
+
+    /* document uri */
+    properties->uri = NULL;
+
+    return properties;
 }
 
-static inline BOOL transform_is_valid_method(xsltStylesheetPtr style)
+static void domdoc_properties_destroy(struct domdoc_properties *properties)
 {
-    return !style->methodURI || !(style->method && xmlStrEqual(style->method, (const xmlChar *)"xhtml"));
+    if (properties->schemaCache)
+        IXMLDOMSchemaCollection2_Release(properties->schemaCache);
+    domdoc_properties_clear_selection_namespaces(&properties->selectNsList);
+    free((xmlChar*)properties->selectNsStr);
+    if (properties->uri)
+        IUri_Release(properties->uri);
+    free(properties);
 }
 
-/* Helper to write transformation result to specified output buffer. */
-static HRESULT node_transform_write(xsltStylesheetPtr style, xmlDocPtr result, BOOL omit_encoding, const char *encoding, xmlOutputBufferPtr output)
+static struct domdoc_properties* domdoc_properties_clone(struct domdoc_properties const* properties)
 {
-    const xmlChar *method;
-    int indent;
+    struct domdoc_properties* pcopy = malloc(sizeof(*pcopy));
+    select_ns_entry const* ns = NULL;
+    select_ns_entry* new_ns = NULL;
+    int len = (properties->selectNsStr_len+1)*sizeof(xmlChar);
+    ptrdiff_t offset;
 
-    if (!transform_is_valid_method(style))
+    if (pcopy)
     {
-        ERR("unknown output method\n");
-        return E_FAIL;
+        pcopy->version = properties->version;
+        pcopy->preserving = properties->preserving;
+        pcopy->validating = properties->validating;
+        pcopy->prohibit_dtd = properties->prohibit_dtd;
+        pcopy->schemaCache = properties->schemaCache;
+        if (pcopy->schemaCache)
+            IXMLDOMSchemaCollection2_AddRef(pcopy->schemaCache);
+        pcopy->XPath = properties->XPath;
+        pcopy->selectNsStr_len = properties->selectNsStr_len;
+        list_init( &pcopy->selectNsList );
+        pcopy->selectNsStr = malloc(len);
+        memcpy((xmlChar*)pcopy->selectNsStr, properties->selectNsStr, len);
+        offset = pcopy->selectNsStr - properties->selectNsStr;
+
+        LIST_FOR_EACH_ENTRY( ns, (&properties->selectNsList), select_ns_entry, entry )
+        {
+            new_ns = malloc(sizeof(select_ns_entry));
+            memcpy(new_ns, ns, sizeof(select_ns_entry));
+            new_ns->href += offset;
+            new_ns->prefix += offset;
+            list_add_tail(&pcopy->selectNsList, &new_ns->entry);
+        }
+
+        pcopy->uri = properties->uri;
+        if (pcopy->uri)
+            IUri_AddRef(pcopy->uri);
     }
 
-    XSLT_GET_IMPORT_PTR(method, style, method)
-    XSLT_GET_IMPORT_INT(indent, style, indent);
+    return pcopy;
+}
 
-    if (!method && (result->type == XML_HTML_DOCUMENT_NODE))
-        method = (const xmlChar *) "html";
+void domnode_destroy_tree(struct domnode *tree)
+{
+    struct domnode *node, *next;
 
-    if (method && xmlStrEqual(method, (const xmlChar *)"html"))
-    {
-        htmlSetMetaEncoding(result, (const xmlChar *)encoding);
-        if (indent == -1)
-            indent = 1;
-        htmldoc_dumpcontent(output, result, encoding, indent);
-    }
-    else if (method && xmlStrEqual(method, (const xmlChar *)"xhtml"))
+    if (tree->type == NODE_DOCUMENT)
     {
-        htmlSetMetaEncoding(result, (const xmlChar *) encoding);
-        htmlDocContentDumpOutput(output, result, encoding);
+        /* For the document nodes we can skip hierarchical calls,
+           since all the nodes are in the owner list. */
+
+        LIST_FOR_EACH_ENTRY_SAFE(node, next, &tree->owned, struct domnode, owner_entry)
+        {
+            list_remove(&node->owner_entry);
+            node->owner = NULL;
+            list_init(&node->children);
+            list_init(&node->attributes);
+            domnode_destroy_tree(node);
+        }
+        domdoc_properties_destroy(tree->properties);
+        tree->properties = NULL;
     }
-    else if (method && xmlStrEqual(method, (const xmlChar *)"text"))
-        transform_write_text(result, style, output);
     else
     {
-        transform_write_xmldecl(result, style, omit_encoding, output);
+        list_remove(&tree->owner_entry);
 
-        if (result->children)
+        LIST_FOR_EACH_ENTRY_SAFE(node, next, &tree->children, struct domnode, entry)
         {
-            xmlNodePtr child = result->children;
+            list_remove(&node->entry);
+            node->parent = NULL;
+            domnode_destroy_tree(node);
+        }
 
-            while (child)
-            {
-                xmlNodeDumpOutput(output, result, child, 0, indent == 1, encoding);
-                if (indent && ((child->type == XML_DTD_NODE) || ((child->type == XML_COMMENT_NODE) && child->next)))
-                    xmlOutputBufferWriteString(output, "\r\n");
-                child = child->next;
-            }
+        LIST_FOR_EACH_ENTRY_SAFE(node, next, &tree->attributes, struct domnode, entry)
+        {
+            list_remove(&node->entry);
+            domnode_destroy_tree(node);
         }
     }
 
-    xmlOutputBufferFlush(output);
-    return S_OK;
-}
-
-/* For BSTR output is always UTF-16, without 'encoding' attribute */
-static HRESULT node_transform_write_to_bstr(xsltStylesheetPtr style, xmlDocPtr result, BSTR *str)
-{
-    HRESULT hr = S_OK;
-
-    if (transform_is_empty_resultdoc(result))
-        *str = SysAllocStringLen(NULL, 0);
-    else
+    if (tree->prefix)
     {
-        xmlOutputBufferPtr output = xmlAllocOutputBuffer(xmlFindCharEncodingHandler("UTF-16"));
-        const xmlChar *content;
-        size_t len;
+        SysFreeString(tree->prefix);
+        SysFreeString(tree->qname);
+    }
+    SysFreeString(tree->name);
+    SysFreeString(tree->data);
+    SysFreeString(tree->uri);
 
-        *str = NULL;
-        if (!output)
-            return E_OUTOFMEMORY;
+    free(tree);
+}
 
-        hr = node_transform_write(style, result, TRUE, "UTF-16", output);
-        content = xmlBufContent(output->conv);
-        len = xmlBufUse(output->conv);
-        /* UTF-16 encoder places UTF-16 bom, we don't need it for BSTR */
-        content += sizeof(WCHAR);
-        *str = SysAllocStringLen((WCHAR*)content, len/sizeof(WCHAR) - 1);
-        xmlOutputBufferClose(output);
-    }
+void domnode_release(struct domnode *node)
+{
+    struct domnode *top;
 
-    return *str ? hr : E_OUTOFMEMORY;
+    top = domnode_drop_refs(node, 1);
+    if (top->refcount == 0)
+        domnode_destroy_tree(top);
 }
 
-static HRESULT node_transform_write_to_stream(xsltStylesheetPtr style, xmlDocPtr result, ISequentialStream *stream)
+HRESULT node_clone_domnode(struct domnode *node, bool deep, struct domnode **cloned)
 {
-    static const xmlChar *utf16 = (const xmlChar*)"UTF-16";
-    xmlOutputBufferPtr output;
-    const xmlChar *encoding;
+    struct domnode *object, *n, *child;
     HRESULT hr;
 
-    if (transform_is_empty_resultdoc(result))
+    *cloned = NULL;
+
+    if (FAILED(hr = domnode_create(node->type, node->name, SysStringLen(node->name), node->uri, SysStringLen(node->uri),
+            node->owner, &object)))
     {
-        WARN("empty result document\n");
-        return S_OK;
+        return hr;
     }
 
-    if (style->methodURI && (!style->method || !xmlStrEqual(style->method, (const xmlChar *) "xhtml")))
+    if (node->type == NODE_DOCUMENT)
+        object->properties = domdoc_properties_clone(node->properties);
+
+    if (deep)
     {
-        ERR("unknown output method\n");
-        return E_FAIL;
+        LIST_FOR_EACH_ENTRY(n, &node->children, struct domnode, entry)
+        {
+            node_clone_domnode(n, true, &child);
+            domnode_append_child(object, child);
+        }
     }
 
-    /* default encoding is UTF-16 */
-    XSLT_GET_IMPORT_PTR(encoding, style, encoding);
-    if (!encoding)
-        encoding = utf16;
+    LIST_FOR_EACH_ENTRY(n, &node->attributes, struct domnode, entry)
+    {
+        node_clone_domnode(n, true, &child);
+        domnode_append_attribute(object, child);
+    }
 
-    output = xmlOutputBufferCreateIO(transform_to_stream_write, NULL, stream, xmlFindCharEncodingHandler((const char*)encoding));
-    if (!output)
-        return E_OUTOFMEMORY;
+    *cloned = object;
 
-    hr = node_transform_write(style, result, FALSE, (const char*)encoding, output);
-    xmlOutputBufferClose(output);
     return hr;
 }
 
-struct import_buffer
-{
-    char *data;
-    int cur;
-    int len;
-};
-
-static int XMLCALL import_loader_io_read(void *context, char *out, int len)
+HRESULT node_clone(struct domnode *node, VARIANT_BOOL deep, IXMLDOMNode **out)
 {
-    struct import_buffer *buffer = (struct import_buffer *)context;
+    struct domnode *cloned_node;
+    HRESULT hr;
 
-    TRACE("%p, %p, %d\n", context, out, len);
+    if (!out)
+        return E_INVALIDARG;
 
-    if (buffer->cur == buffer->len)
-        return 0;
+    *out = NULL;
 
-    len = min(len, buffer->len - buffer->cur);
-    memcpy(out, &buffer->data[buffer->cur], len);
-    buffer->cur += len;
+    if (FAILED(hr = node_clone_domnode(node, !!deep, &cloned_node)))
+        return hr;
 
-    TRACE("read %d\n", len);
+    if (FAILED(hr = create_node(cloned_node, out)))
+        domnode_destroy_tree(cloned_node);
 
-    return len;
+    return hr;
 }
 
-static int XMLCALL import_loader_io_close(void * context)
+static bool is_preserving_whitespace(const struct domnode *node)
 {
-    struct import_buffer *buffer = (struct import_buffer *)context;
+    const struct domnode *doc = node->owner ? node->owner : node;
+    struct domnode *attr;
+    BSTR value;
+    bool ret;
 
-    TRACE("%p\n", context);
+    /* Document-wide property */
+    if (doc->properties->preserving == VARIANT_TRUE)
+        return true;
 
-    free(buffer->data);
-    free(buffer);
-    return 0;
+    if (node->type != NODE_ELEMENT)
+        return false;
+
+    while (node)
+    {
+        if (domnode_get_qualified_attribute(node, L"space",
+                L"http://www.w3.org/XML/1998/namespace", &attr) == S_OK)
+        {
+            if (node_get_text(attr, &value) == S_OK)
+            {
+                ret = !wcscmp(value, L"preserve");
+                SysFreeString(value);
+                return ret;
+            }
+        }
+
+        node = node->parent;
+    }
+
+    return false;
 }
 
-static HRESULT import_loader_onDataAvailable(void *ctxt, char *ptr, DWORD len)
+struct node_get_text_context
 {
-    xmlParserInputPtr *input = (xmlParserInputPtr *)ctxt;
-    xmlParserInputBufferPtr inputbuffer;
-    struct import_buffer *buffer;
+    struct string_buffer buffer;
+    bool first_textual_child;
+    bool preserve;
+    bool ignored_ws;
+    int depth;
+};
 
-    buffer = malloc(sizeof(*buffer));
+/* Trim leading and trailing white spaces */
+static WCHAR *domnode_get_text_trim(WCHAR *text, UINT *length)
+{
+    WCHAR *start = text;
+    UINT len = *length;
 
-    buffer->data = malloc(len);
-    memcpy(buffer->data, ptr, len);
-    buffer->cur = 0;
-    buffer->len = len;
+    while (start && xml_is_space(*start))
+    {
+        ++start;
+        --len;
+    }
 
-    inputbuffer = xmlParserInputBufferCreateIO(import_loader_io_read, import_loader_io_close, buffer,
-            XML_CHAR_ENCODING_NONE);
-    *input = xmlNewIOInputStream(NULL, inputbuffer, XML_CHAR_ENCODING_NONE);
-    if (!*input)
-        xmlFreeParserInputBuffer(inputbuffer);
+    while (len && xml_is_space(start[len - 1]))
+        --len;
 
-    return *input ? S_OK : E_FAIL;
+    *length = len;
+    return start;
 }
 
-static HRESULT xslt_doc_get_uri(const xmlChar *uri, void *_ctxt, xsltLoadType type, IUri **doc_uri)
+static const WCHAR *domnode_get_text_trim_leading(const WCHAR *text, UINT *length)
 {
-    xsltStylesheetPtr style = (xsltStylesheetPtr)_ctxt;
-    IUri *href_uri;
-    HRESULT hr;
-    BSTR uriW;
-
-    *doc_uri = NULL;
+    const WCHAR *start = text;
+    UINT len = *length;
 
-    uriW = bstr_from_xmlChar(uri);
-    hr = CreateUri(uriW, Uri_CREATE_ALLOW_RELATIVE | Uri_CREATE_ALLOW_IMPLICIT_FILE_SCHEME, 0, &href_uri);
-    SysFreeString(uriW);
-    if (FAILED(hr))
+    while (start && xml_is_space(*start))
     {
-        WARN("Failed to create href uri, %#lx.\n", hr);
-        return hr;
+        ++start;
+        --len;
     }
 
-    if (type == XSLT_LOAD_STYLESHEET && style->doc && style->doc->name)
-    {
-        IUri *base_uri;
-        BSTR baseuriW;
+    *length = len;
+    return start;
+}
 
-        baseuriW = bstr_from_xmlChar((xmlChar *)style->doc->name);
-        hr = CreateUri(baseuriW, Uri_CREATE_ALLOW_IMPLICIT_FILE_SCHEME, 0, &base_uri);
-        SysFreeString(baseuriW);
-        if (FAILED(hr))
+static void domnode_get_text_trim_trailing(struct string_buffer *buffer)
+{
+    while (buffer->count && xml_is_space(buffer->data[buffer->count - 1]))
+        --buffer->count;
+}
+
+static void domnode_append_ignored(const struct domnode *node, unsigned int flags, struct node_get_text_context *context)
+{
+    /* Skip all leading ignored space */
+    if (!context->buffer.count)
+        return;
+
+    if (!context->ignored_ws && (node->flags & flags))
+    {
+        context->ignored_ws = true;
+        if (!context->first_textual_child || context->preserve)
         {
-            WARN("Failed to create base uri, %#lx.\n", hr);
-            return hr;
+            string_append(&context->buffer, L" ", 1);
+            context->first_textual_child = false;
         }
+    }
+}
 
-        hr = CoInternetCombineIUri(base_uri, href_uri, 0, doc_uri, 0);
-        IUri_Release(base_uri);
-        if (FAILED(hr))
-            WARN("Failed to combine uris, hr %#lx.\n", hr);
+static void domnode_append_ignored_pre(struct domnode *node, struct node_get_text_context *context)
+{
+    struct domnode *sibling = domnode_get_previous_sibling(node);
+
+    if (sibling)
+    {
+        if (sibling->type == NODE_ELEMENT)
+            return domnode_append_ignored(sibling, DOMNODE_IGNORED_WS, context);
     }
-    else
+    else if (node->parent && node->parent->type == NODE_ELEMENT)
     {
-        *doc_uri = href_uri;
-        IUri_AddRef(*doc_uri);
+        domnode_append_ignored(node, DOMNODE_IGNORED_WS_AFTER_STARTTAG, context);
     }
+}
 
-    IUri_Release(href_uri);
+static bool is_space_data(const WCHAR *data)
+{
+    while (*data)
+    {
+        if (!xml_is_space(*data)) return false;
+        ++data;
+    }
 
-    return hr;
+    return true;
 }
 
-xmlDocPtr xslt_doc_default_loader(const xmlChar *uri, xmlDictPtr dict, int options,
-    void *_ctxt, xsltLoadType type)
+static void domnode_get_text(const struct domnode *node, struct node_get_text_context *context)
 {
-    IUri *import_uri = NULL;
-    xmlParserInputPtr input;
-    xmlParserCtxtPtr pctxt;
-    xmlDocPtr doc = NULL;
-    IMoniker *moniker;
-    HRESULT hr;
-    bsc_t *bsc;
-    BSTR uriW;
+    struct string_buffer *buffer = &context->buffer;
+    struct domnode *child;
+    const WCHAR *start;
+    UINT length;
 
-    TRACE("%s, %p, %#x, %p, %d\n", debugstr_a((const char *)uri), dict, options, _ctxt, type);
+    switch (node->type)
+    {
+        case NODE_TEXT:
+            if (context->first_textual_child && !context->preserve)
+            {
+                length = SysStringLen(node->data);
+                start = domnode_get_text_trim_leading(node->data, &length);
+                string_append(&context->buffer, start, length);
+            }
+            else if (!context->preserve && is_space_data(node->data))
+            {
+                string_append(&context->buffer, L" ", 1);
+            }
+            else
+            {
+                string_append(&context->buffer, node->data, SysStringLen(node->data));
+            }
+            context->first_textual_child = false;
+            context->ignored_ws = false;
+            break;
 
-    pctxt = xmlNewParserCtxt();
-    if (!pctxt)
-        return NULL;
+        case NODE_CDATA_SECTION:
+            string_append(buffer, node->data, SysStringLen(node->data));
+            context->first_textual_child = false;
+            context->ignored_ws = false;
+            break;
 
-    if (dict && pctxt->dict)
-    {
-        xmlDictFree(pctxt->dict);
-        pctxt->dict = NULL;
-    }
+        case NODE_ELEMENT:
+            LIST_FOR_EACH_ENTRY(child, &node->children, struct domnode, entry)
+            {
+                domnode_append_ignored_pre(child, context);
+                if (child->type == NODE_ELEMENT) ++context->depth;
+                domnode_get_text(child, context);
+                if (child->type == NODE_ELEMENT) --context->depth;
+            }
+            break;
 
-    if (dict)
-    {
-        pctxt->dict = dict;
-        xmlDictReference(pctxt->dict);
+        default:
+            ;
     }
+}
 
-    xmlCtxtUseOptions(pctxt, options);
+HRESULT node_get_text(const struct domnode *node, BSTR *text)
+{
+    struct node_get_text_context context = { 0 };
+    struct domnode *child;
+    const WCHAR *start;
+    UINT length;
 
-    hr = xslt_doc_get_uri(uri, _ctxt, type, &import_uri);
-    if (FAILED(hr))
-        goto failed;
+    string_buffer_init(&context.buffer);
+    context.preserve = is_preserving_whitespace(node);
+    switch (node->type)
+    {
+        case NODE_COMMENT:
+        case NODE_ENTITY_REFERENCE:
+        case NODE_CDATA_SECTION:
+            return return_bstr(node->data, text);
 
-    hr = CreateURLMonikerEx2(NULL, import_uri, &moniker, 0);
-    if (FAILED(hr))
-        goto failed;
+        case NODE_PROCESSING_INSTRUCTION:
+            return node_get_pi_data(node, text);
 
-    hr = bind_url(moniker, import_loader_onDataAvailable, &input, &bsc);
-    IMoniker_Release(moniker);
-    if (FAILED(hr))
-        goto failed;
+        case NODE_TEXT:
+            if (context.preserve)
+            {
+                string_append(&context.buffer, node->data, SysStringLen(node->data));
+            }
+            else
+            {
+                length = SysStringLen(node->data);
+                start = domnode_get_text_trim(node->data, &length);
+                string_append(&context.buffer, start, length);
+            }
+            return string_to_bstr(&context.buffer, text);
 
-    if (FAILED(detach_bsc(bsc)))
-        goto failed;
+        case NODE_ATTRIBUTE:
+            LIST_FOR_EACH_ENTRY(child, &node->children, struct domnode, entry)
+            {
+                string_append(&context.buffer, child->data, SysStringLen(child->data));
+            }
+            return string_to_bstr(&context.buffer, text);
 
-    if (!input)
-        goto failed;
+        case NODE_DOCUMENT:
+        case NODE_DOCUMENT_FRAGMENT:
 
-    inputPush(pctxt, input);
-    xmlParseDocument(pctxt);
+            context.first_textual_child = true;
+            LIST_FOR_EACH_ENTRY(child, &node->children, struct domnode, entry)
+            {
+                domnode_get_text(child, &context);
+            }
+            if (!context.preserve)
+                domnode_get_text_trim_trailing(&context.buffer);
+            return string_to_bstr(&context.buffer, text);
 
-    if (pctxt->wellFormed)
-    {
-        doc = pctxt->myDoc;
-        /* Set imported uri, to give nested imports a chance. */
-        if (IUri_GetPropertyBSTR(import_uri, Uri_PROPERTY_ABSOLUTE_URI, &uriW, 0) == S_OK)
-        {
-            doc->name = (char *)xmlchar_from_wcharn(uriW, SysStringLen(uriW), TRUE);
-            SysFreeString(uriW);
-        }
-    }
-    else
-    {
-        doc = NULL;
-        xmlFreeDoc(pctxt->myDoc);
-        pctxt->myDoc = NULL;
-    }
+        case NODE_ELEMENT:
 
-failed:
-    xmlFreeParserCtxt(pctxt);
-    if (import_uri)
-        IUri_Release(import_uri);
+            /* Trim leading spaces of the first textual node. Append everything else as is,
+               then trim trailing spaces. */
 
-    return doc;
-}
+            context.first_textual_child = true;
+            domnode_get_text(node, &context);
+            if (!context.preserve)
+                domnode_get_text_trim_trailing(&context.buffer);
+            return string_to_bstr(&context.buffer, text);
 
-#ifdef _WIN64
+        default:
+            FIXME("not implemented for node type %d\n", node->type);
+            return E_NOTIMPL;
+    }
+}
 
-#define IActiveScriptParse_Release IActiveScriptParse64_Release
-#define IActiveScriptParse_InitNew IActiveScriptParse64_InitNew
-#define IActiveScriptParse_ParseScriptText IActiveScriptParse64_ParseScriptText
+HRESULT node_get_preserved_text(const struct domnode *node, BSTR *text)
+{
+    struct node_get_text_context context = { 0 };
 
-#else
+    string_buffer_init(&context.buffer);
+    context.preserve = true;
 
-#define IActiveScriptParse_Release IActiveScriptParse32_Release
-#define IActiveScriptParse_InitNew IActiveScriptParse32_InitNew
-#define IActiveScriptParse_ParseScriptText IActiveScriptParse32_ParseScriptText
+    switch (node->type)
+    {
+        case NODE_ELEMENT:
+            domnode_get_text(node, &context);
+            return string_to_bstr(&context.buffer, text);
 
-#endif
+        default:
+            FIXME("not implemented for node type %d\n", node->type);
+            return E_NOTIMPL;
+    }
+}
 
-struct xsl_scripts
+HRESULT node_get_value(struct domnode *node, VARIANT *value)
 {
-    struct
+    if (!value)
+        return E_INVALIDARG;
+
+    switch (node->type)
     {
-        IActiveScript *script;
-        const xmlChar *uri;
-    } *entries;
-    size_t count;
-    size_t capacity;
-};
+        case NODE_TEXT:
+        case NODE_CDATA_SECTION:
+        case NODE_ATTRIBUTE:
+        case NODE_PROCESSING_INSTRUCTION:
+        case NODE_COMMENT:
+            V_VT(value) = VT_BSTR;
+            return node_get_text(node, &V_BSTR(value));
+        default:
+            FIXME("Unsupported type %d.\n", node->type);
+            return E_NOTIMPL;
+    }
+}
 
-static IActiveScript *xpath_msxsl_script_get_script(xmlXPathParserContextPtr ctxt, const xmlChar *uri)
+static void node_dump_xml_text(struct domnode *node, struct node_dump_context *context)
 {
-    xsltTransformContextPtr xslt_ctxt = xsltXPathGetTransformContext(ctxt);
-    struct xsl_scripts *scripts = xslt_ctxt->userData;
+    BSTR p = node->data;
 
-    for (size_t i = 0; i < scripts->count; ++i)
+    while (p && *p)
     {
-        if (xmlStrEqual(scripts->entries[i].uri, uri))
-            return scripts->entries[i].script;
+        if (*p == '<')
+            node_dump_append(context, L"&lt;", 4);
+        else if (*p == '>')
+            node_dump_append(context, L"&gt;", 4);
+        else if (*p == '&')
+            node_dump_append(context, L"&amp;", 5);
+        else if (*p == '\n')
+            node_dump_append(context, L"\r\n", 2);
+        else
+            node_dump_append(context, p, 1);
+        ++p;
     }
-
-    return NULL;
 }
 
-static HRESULT xpath_create_nodelist_from_set(xmlNodeSetPtr set, bool needs_copy, IXMLDOMNodeList **ret)
+static void node_dump_xml_attr(struct domnode *node, struct node_dump_context *context)
 {
-    xmlNodeSet _copy = { 0 };
-    xmlXPathObjectPtr obj;
-    HRESULT hr;
+    BSTR p = node->data;
 
-    if (needs_copy)
+    while (p && *p)
     {
-        _copy.nodeTab = xmlMalloc(set->nodeNr * sizeof(*set->nodeTab));
-        _copy.nodeNr = set->nodeNr;
-        _copy.nodeMax = set->nodeNr;
-        for (int i = 0; i < set->nodeNr; ++i)
-            _copy.nodeTab[i] = xmlCopyNode(set->nodeTab[i], 1);
-        set = &_copy;
+        if (*p == '<')
+            node_dump_append(context, L"&lt;", 4);
+        else if (*p == '>')
+            node_dump_append(context, L"&gt;", 4);
+        else if (*p == '&')
+            node_dump_append(context, L"&amp;", 5);
+        else if (*p == '"')
+            node_dump_append(context, L"&quot;", 6);
+        else
+            node_dump_append(context, p, 1);
+        ++p;
     }
+}
 
-    obj = xmlXPathNewNodeSetList(set);
-    hr = create_selection_from_nodeset(obj, ret);
-    xmlFree(_copy.nodeTab);
+static void node_dump_xml(struct domnode *node, struct node_dump_context *context)
+{
+    struct string_buffer *buffer = &context->buffer;
+    BSTR p = node->data;
 
-    return hr;
+    while (p && *p)
+    {
+        if (*p == '\n')
+            string_append(buffer, L"\r\n", 2);
+        else
+            string_append(buffer, p, 1);
+        ++p;
+    }
 }
 
-static void xpath_msxsl_script_function(xmlXPathParserContextPtr ctxt, int nargs)
+static void node_dump_pi(struct domnode *node, struct node_dump_context *context)
 {
-    xsltTransformContextPtr xslt_ctxt = xsltXPathGetTransformContext(ctxt);
-    xmlXPathContextPtr xpath = ((struct _xsltTransformContext *)xslt_ctxt)->xpathCtxt;
-    DISPPARAMS params = { 0 };
-    IActiveScript *script;
-    VARIANT *args = NULL;
-    IDispatch *disp;
-    VARIANT result;
-    DISPID dispid;
-    HRESULT hr;
-    BSTR name;
+    VARIANT value;
 
-    TRACE("%s:%s\n", xpath->functionURI, xpath->function);
+    node_dump_append(context, L"<?", 2);
+    node_dump_append(context, node->name, SysStringLen(node->name));
+    if (!wcscmp(node->name, L"xml"))
+    {
+        /* Make sure attributes are in correct order. */
 
-    script = xpath_msxsl_script_get_script(ctxt, xpath->functionURI);
-    if (!script)
+        node_dump_append(context, L" version=\"", 10);
+        if (node_get_attribute_value(node, L"version", &value) == S_OK)
+        {
+            node_dump_append(context, V_BSTR(&value), SysStringLen(V_BSTR(&value)));
+            VariantClear(&value);
+        }
+        else
+        {
+            node_dump_append(context, L"1.0", 3);
+        }
+        node_dump_append(context, L"\"", 1);
+
+        if (node_get_attribute_value(node, L"encoding", &value) == S_OK)
+        {
+            if ((context->only_utf16_encoding_decl && !wcsicmp(V_BSTR(&value), L"UTF-16"))
+                    || !context->only_utf16_encoding_decl)
+            {
+                node_dump_append(context, L" encoding=\"", 11);
+                node_dump_append(context, V_BSTR(&value), SysStringLen(V_BSTR(&value)));
+                node_dump_append(context, L"\"", 1);
+            }
+            VariantClear(&value);
+        }
+
+        if (node_get_attribute_value(node, L"standalone", &value) == S_OK)
+        {
+            node_dump_append(context, L" standalone=\"", 13);
+            node_dump_append(context, V_BSTR(&value), SysStringLen(V_BSTR(&value)));
+            node_dump_append(context, L"\"", 1);
+            VariantClear(&value);
+        }
+    }
+    else
     {
-        WARN("Couldn't find a script for %s.\n", xpath->functionURI);
-        return;
+        node_dump_append(context, L" ", 1);
+        node_dump_xml(node, context);
     }
+    node_dump_append(context, L"?>", 2);
+}
 
-    if (FAILED(IActiveScript_GetScriptDispatch(script, NULL, &disp)))
+static void node_dump_format(struct node_dump_context *context)
+{
+    struct string_buffer *buffer = &context->buffer;
+    unsigned int indent = context->indent;
+
+    if (!context->needs_formatting)
         return;
 
-    name = bstr_from_xmlChar(xpath->function);
-    hr = IDispatch_GetIDsOfNames(disp, &IID_NULL, &name, 1, 0, &dispid);
-    SysFreeString(name);
-    if (FAILED(hr))
+    string_append(buffer, L"\r\n", 2);
+
+    while (indent--)
     {
-        WARN("Couldn't find %s function.\n", xpath->function);
-        IDispatch_Release(disp);
-        return;
+        string_append(buffer, L"\t", 1);
     }
+}
 
-    if (nargs)
+static void node_dump_qualified_name(struct node_dump_context *context, struct domnode *node)
+{
+    node_dump_append(context, node->qname, SysStringLen(node->qname));
+}
+
+static bool is_same_namespace_prefix(const struct domnode *node, const WCHAR *prefix)
+{
+    if (node->prefix)
+        return prefix && !wcscmp(node->prefix, prefix);
+
+    return !prefix;
+}
+
+static bool is_namespace_definition(struct domnode *node)
+{
+    if (!wcscmp(node->qname, L"xmlns"))
+        return true;
+    if (is_same_namespace_prefix(node, L"xmlns"))
+        return true;
+    return false;
+}
+
+static bool is_namespace_defined(struct node_dump_context *context, struct domnode *node)
+{
+    struct node_dump_ns *ns;
+
+    if (!node->uri)
+        return true;
+
+    /* The xmlns:xml namespace is predefined. */
+    if (is_same_namespace_prefix(node, L"xml"))
+        return true;
+
+    LIST_FOR_EACH_ENTRY_REV(ns, &context->namespaces, struct node_dump_ns, entry)
     {
-        args = calloc(nargs, sizeof(*args));
+        if (is_same_namespace_prefix(node, ns->prefix))
+            return !wcscmp(node->uri, ns->uri);
+    }
 
-        for (int i = 0; i < nargs; ++i)
+    return false;
+}
+
+static void node_dump_namespace_for_node(struct node_dump_context *context, struct domnode *node)
+{
+    node_dump_push_namespace(context, node->prefix, node->uri, false);
+    node_dump_append(context, L" xmlns", 6);
+    if (node->prefix)
+    {
+        node_dump_append(context, L":", 1);
+        node_dump_append(context, node->prefix, SysStringLen(node->prefix));
+    }
+    node_dump_append(context, L"=\"", 2);
+    node_dump_append(context, node->uri, SysStringLen(node->uri));
+    node_dump_append(context, L"\"", 1);
+}
+
+static WCHAR *node_dump_get_namespace_prefix(struct domnode *attr)
+{
+    return attr->prefix ? attr->name : NULL;
+}
+
+static void node_dump_element_attributes(struct node_dump_context *context, struct domnode *node)
+{
+    struct domnode *attr;
+    BSTR text;
+
+    /* Collect explicitly defined namespaces */
+    LIST_FOR_EACH_ENTRY(attr, &node->attributes, struct domnode, entry)
+    {
+        if (is_namespace_definition(attr))
         {
-            xmlXPathObjectType obj_type = XPATH_UNDEFINED;
-            xmlXPathObjectPtr obj = NULL;
-            xmlChar *s;
+            node_get_text(attr, &text);
+            node_dump_push_namespace(context, node_dump_get_namespace_prefix(attr), text, true);
+        }
+    }
 
-            /* Since we don't want to impose expectations on argument types,
-               first inspect actual type on stack, and then pop with corresponding function. */
-            if (ctxt->valueNr > 0)
+    /* If namespace is implied, check if it's been defined already. This needs to be done for
+       the element too. */
+
+    if (!is_namespace_defined(context, node))
+        node_dump_namespace_for_node(context, node);
+
+    LIST_FOR_EACH_ENTRY(attr, &node->attributes, struct domnode, entry)
+    {
+        if (is_namespace_definition(attr))
+            continue;
+
+        if (!is_namespace_defined(context, attr))
+            node_dump_namespace_for_node(context, attr);
+    }
+
+    LIST_FOR_EACH_ENTRY(attr, &node->attributes, struct domnode, entry)
+    {
+        node_dump_append(context, L" ", 1);
+        node_dump(attr, context);
+    }
+}
+
+static void node_dump(struct domnode *node, struct node_dump_context *context)
+{
+    struct domnode *n;
+
+    switch (node->type)
+    {
+        case NODE_COMMENT:
+            node_dump_format(context);
+            node_dump_append(context, L"<!--", 4);
+            node_dump_xml(node, context);
+            node_dump_append(context, L"-->", 3);
+            context->needs_formatting = node->flags & DOMNODE_IGNORED_WS;
+            break;
+
+        case NODE_PROCESSING_INSTRUCTION:
+            node_dump_format(context);
+            node_dump_pi(node, context);
+            context->needs_formatting = node->flags & DOMNODE_IGNORED_WS;
+            break;
+
+        case NODE_TEXT:
+            node_dump_xml_text(node, context);
+            context->needs_formatting = false;
+            break;
+
+        case NODE_CDATA_SECTION:
+            node_dump_format(context);
+            node_dump_append(context, L"<![CDATA[", 9);
+            node_dump_xml(node, context);
+            node_dump_append(context, L"]]>", 3);
+            context->needs_formatting = node->flags & DOMNODE_IGNORED_WS;
+            break;
+
+        case NODE_ELEMENT:
+            node_dump_format(context);
+            node_dump_append(context, L"<", 1);
+            node_dump_qualified_name(context, node);
+            node_dump_element_attributes(context, node);
+            if (list_empty(&node->children))
             {
-                obj = ctxt->valueTab[ctxt->valueNr - 1];
-                obj_type = obj->type;
+                node_dump_append(context, L"/>", 2);
             }
-
-            switch (obj_type)
+            else
             {
-                case XPATH_XSLT_TREE:
-                case XPATH_NODESET:
+                node_dump_append(context, L">", 1);
+
+                ++context->depth;
+                ++context->indent;
+                context->needs_formatting = node->flags & DOMNODE_IGNORED_WS_AFTER_STARTTAG;
+                LIST_FOR_EACH_ENTRY(n, &node->children, struct domnode, entry)
                 {
-                    xmlNodeSetPtr nodeset = xmlXPathPopNodeSet(ctxt);
-                    IXMLDOMNodeList *nodelist;
+                    node_dump(n, context);
+                }
+                --context->indent;
+                --context->depth;
 
-                    hr = xpath_create_nodelist_from_set(nodeset, obj_type == XPATH_XSLT_TREE, &nodelist);
+                node_dump_format(context);
+                node_dump_append(context, L"</", 2);
+                node_dump_qualified_name(context, node);
+                node_dump_append(context, L">", 1);
+            }
+            node_dump_pop_namespaces(context);
+            context->needs_formatting = node->flags & DOMNODE_IGNORED_WS;
+            break;
 
-                    V_VT(&args[i]) = VT_DISPATCH;
-                    V_DISPATCH(&args[i]) = (IDispatch *)nodelist;
-                    break;
+        case NODE_DOCUMENT_FRAGMENT:
+            LIST_FOR_EACH_ENTRY(n, &node->children, struct domnode, entry)
+            {
+                node_dump(n, context);
+            }
+            break;
+
+        case NODE_ATTRIBUTE:
+            node_dump_qualified_name(context, node);
+            node_dump_append(context, L"=\"", 2);
+            LIST_FOR_EACH_ENTRY(n, &node->children, struct domnode, entry)
+            {
+                node_dump_xml_attr(n, context);
+            }
+            node_dump_append(context, L"\"", 1);
+            break;
+
+        case NODE_ENTITY_REFERENCE:
+            node_dump_append(context, L"&", 1);
+            node_dump_append(context, node->name, SysStringLen(node->name));
+            node_dump_append(context, L";", 1);
+            break;
+
+        case NODE_DOCUMENT_TYPE:
+            node_dump_append(context, node->data, SysStringLen(node->data));
+            break;
+
+        default:
+            FIXME("Unimplemented for type %d.\n", node->type);
+            context->status = E_NOTIMPL;
+            break;
+    }
+}
+
+static void node_dump_context_init(struct node_dump_context *context, UINT codepage, IStream *stream)
+{
+    memset(context, 0, sizeof(*context));
+    string_buffer_init(&context->buffer);
+    list_init(&context->namespaces);
+    context->buffer.status = &context->status;
+    context->codepage = codepage;
+    context->stream = stream;
+}
+
+static HRESULT node_dump_context_cleanup(struct node_dump_context *context)
+{
+    HRESULT status = context->status;
+
+    free(context->scratch.data);
+    return status;
+}
+
+HRESULT node_get_xml(struct domnode *node, BSTR *ret)
+{
+    struct node_dump_context context;
+    struct domnode *n;
+
+    if (!ret)
+        return E_INVALIDARG;
+
+    node_dump_context_init(&context, ~0u, NULL);
+    context.only_utf16_encoding_decl = true;
+
+    if (node->type == NODE_DOCUMENT)
+    {
+        LIST_FOR_EACH_ENTRY(n, &node->children, struct domnode, entry)
+        {
+            node_dump(n, &context);
+            node_dump_append(&context, L"\r\n", 2);
+        }
+    }
+    else
+    {
+        node_dump(node, &context);
+    }
+    return string_to_bstr(&context.buffer, ret);
+}
+
+/* duplicates xmlBufferWriteQuotedString() logic */
+static void xml_write_quotedstring(xmlOutputBufferPtr buf, const xmlChar *string)
+{
+    const xmlChar *cur, *base;
+
+    if (xmlStrchr(string, '\"'))
+    {
+        if (xmlStrchr(string, '\''))
+        {
+            xmlOutputBufferWrite(buf, 1, "\"");
+            base = cur = string;
+
+            while (*cur)
+            {
+                if (*cur == '"')
+                {
+                    if (base != cur)
+                        xmlOutputBufferWrite(buf, cur-base, (const char*)base);
+                    xmlOutputBufferWrite(buf, 6, "&quot;");
+                    cur++;
+                    base = cur;
                 }
-                case XPATH_STRING:
-                    s = xmlXPathPopString(ctxt);
-                    V_VT(&args[i]) = VT_BSTR;
-                    V_BSTR(&args[i]) = bstr_from_xmlChar(s);
-                    xmlFree(s);
-                    break;
-                case XPATH_NUMBER:
-                    V_VT(&args[i]) = VT_R8;
-                    V_R8(&args[i]) = xmlXPathPopNumber(ctxt);
-                    break;
-                case XPATH_BOOLEAN:
-                    V_VT(&args[i]) = VT_BOOL;
-                    V_BOOL(&args[i]) = xmlXPathPopBoolean(ctxt) ? VARIANT_TRUE : VARIANT_FALSE;
-                    break;
-                default:
-                    FIXME("Unexpected XPath (%s) value type %d.\n", xpath->function, obj->type);
-                    return;
+                else
+                    cur++;
+            }
+            if (base != cur)
+                xmlOutputBufferWrite(buf, cur-base, (const char*)base);
+            xmlOutputBufferWrite(buf, 1, "\"");
+        }
+        else
+        {
+            xmlOutputBufferWrite(buf, 1, "\'");
+            xmlOutputBufferWriteString(buf, (const char*)string);
+            xmlOutputBufferWrite(buf, 1, "\'");
+        }
+    }
+    else
+    {
+        xmlOutputBufferWrite(buf, 1, "\"");
+        xmlOutputBufferWriteString(buf, (const char*)string);
+        xmlOutputBufferWrite(buf, 1, "\"");
+    }
+}
+
+static int XMLCALL transform_to_stream_write(void *context, const char *buffer, int len)
+{
+    DWORD written;
+    HRESULT hr = ISequentialStream_Write((ISequentialStream *)context, buffer, len, &written);
+    return hr == S_OK ? written : -1;
+}
+
+/* Output for method "text" */
+static void transform_write_text(xmlDocPtr result, xsltStylesheetPtr style, xmlOutputBufferPtr output)
+{
+    xmlNodePtr cur = result->children;
+    while (cur)
+    {
+        if (cur->type == XML_TEXT_NODE)
+            xmlOutputBufferWriteString(output, (const char*)cur->content);
+
+        /* skip to next node */
+        if (cur->children)
+        {
+            if ((cur->children->type != XML_ENTITY_DECL) &&
+                (cur->children->type != XML_ENTITY_REF_NODE) &&
+                (cur->children->type != XML_ENTITY_NODE))
+            {
+                cur = cur->children;
+                continue;
+            }
+        }
+
+        if (cur->next) {
+            cur = cur->next;
+            continue;
+        }
+
+        do
+        {
+            cur = cur->parent;
+            if (cur == NULL)
+                break;
+            if (cur == (xmlNodePtr) style->doc) {
+                cur = NULL;
+                break;
+            }
+            if (cur->next) {
+                cur = cur->next;
+                break;
             }
+        } while (cur);
+    }
+}
+
+#undef XSLT_GET_IMPORT_PTR
+#define XSLT_GET_IMPORT_PTR(res, style, name) {          \
+    xsltStylesheetPtr st = style;                        \
+    res = NULL;                                          \
+    while (st != NULL) {                                 \
+        if (st->name != NULL) { res = st->name; break; } \
+        st = xsltNextImport(st);                         \
+    }}
+
+#undef XSLT_GET_IMPORT_INT
+#define XSLT_GET_IMPORT_INT(res, style, name) {         \
+    xsltStylesheetPtr st = style;                       \
+    res = -1;                                           \
+    while (st != NULL) {                                \
+        if (st->name != -1) { res = st->name; break; }  \
+        st = xsltNextImport(st);                        \
+    }}
+
+static void transform_write_xmldecl(xmlDocPtr result, xsltStylesheetPtr style, BOOL omit_encoding, xmlOutputBufferPtr output)
+{
+    int omit_xmldecl, standalone;
+
+    XSLT_GET_IMPORT_INT(omit_xmldecl, style, omitXmlDeclaration);
+    if (omit_xmldecl == 1) return;
+
+    XSLT_GET_IMPORT_INT(standalone, style, standalone);
+
+    xmlOutputBufferWriteString(output, "<?xml version=");
+    if (result->version)
+    {
+        xmlOutputBufferWriteString(output, "\"");
+        xmlOutputBufferWriteString(output, (const char *)result->version);
+        xmlOutputBufferWriteString(output, "\"");
+    }
+    else
+        xmlOutputBufferWriteString(output, "\"1.0\"");
+
+    if (!omit_encoding)
+    {
+        const xmlChar *encoding;
+
+        /* default encoding is UTF-16 */
+        XSLT_GET_IMPORT_PTR(encoding, style, encoding);
+        xmlOutputBufferWriteString(output, " encoding=");
+        xmlOutputBufferWriteString(output, "\"");
+        xmlOutputBufferWriteString(output, encoding ? (const char *)encoding : "UTF-16");
+        xmlOutputBufferWriteString(output, "\"");
+    }
+
+    /* standalone attribute */
+    if (standalone != -1)
+        xmlOutputBufferWriteString(output, standalone == 0 ? " standalone=\"no\"" : " standalone=\"yes\"");
+
+    xmlOutputBufferWriteString(output, "?>");
+}
+
+static void htmldtd_dumpcontent(xmlOutputBufferPtr buf, xmlDocPtr doc)
+{
+    xmlDtdPtr cur = doc->intSubset;
+
+    xmlOutputBufferWriteString(buf, "<!DOCTYPE ");
+    xmlOutputBufferWriteString(buf, (const char *)cur->name);
+    if (cur->ExternalID)
+    {
+        xmlOutputBufferWriteString(buf, " PUBLIC ");
+        xml_write_quotedstring(buf, cur->ExternalID);
+        if (cur->SystemID)
+        {
+            xmlOutputBufferWriteString(buf, " ");
+            xml_write_quotedstring(buf, cur->SystemID);
+        }
+    }
+    else if (cur->SystemID)
+    {
+        xmlOutputBufferWriteString(buf, " SYSTEM ");
+        xml_write_quotedstring(buf, cur->SystemID);
+    }
+    xmlOutputBufferWriteString(buf, ">\n");
+}
+
+/* Duplicates htmlDocContentDumpFormatOutput() the way we need it - doesn't add trailing newline. */
+static void htmldoc_dumpcontent(xmlOutputBufferPtr buf, xmlDocPtr doc, const char *encoding, int format)
+{
+    xmlElementType type;
+
+    /* force HTML output */
+    type = doc->type;
+    doc->type = XML_HTML_DOCUMENT_NODE;
+    if (doc->intSubset)
+        htmldtd_dumpcontent(buf, doc);
+    if (doc->children) {
+        xmlNodePtr cur = doc->children;
+        while (cur) {
+            htmlNodeDumpFormatOutput(buf, doc, cur, encoding, format);
+            cur = cur->next;
+        }
+    }
+    doc->type = type;
+}
+
+static inline BOOL transform_is_empty_resultdoc(xmlDocPtr result)
+{
+    return !result->children || ((result->children->type == XML_DTD_NODE) && !result->children->next);
+}
+
+static inline BOOL transform_is_valid_method(xsltStylesheetPtr style)
+{
+    return !style->methodURI || !(style->method && xmlStrEqual(style->method, (const xmlChar *)"xhtml"));
+}
+
+/* Helper to write transformation result to specified output buffer. */
+static HRESULT node_transform_write(xsltStylesheetPtr style, xmlDocPtr result, BOOL omit_encoding, const char *encoding, xmlOutputBufferPtr output)
+{
+    const xmlChar *method;
+    int indent;
+
+    if (!transform_is_valid_method(style))
+    {
+        ERR("unknown output method\n");
+        return E_FAIL;
+    }
+
+    XSLT_GET_IMPORT_PTR(method, style, method)
+    XSLT_GET_IMPORT_INT(indent, style, indent);
+
+    if (!method && (result->type == XML_HTML_DOCUMENT_NODE))
+        method = (const xmlChar *) "html";
+
+    if (method && xmlStrEqual(method, (const xmlChar *)"html"))
+    {
+        htmlSetMetaEncoding(result, (const xmlChar *)encoding);
+        if (indent == -1)
+            indent = 1;
+        htmldoc_dumpcontent(output, result, encoding, indent);
+    }
+    else if (method && xmlStrEqual(method, (const xmlChar *)"xhtml"))
+    {
+        htmlSetMetaEncoding(result, (const xmlChar *) encoding);
+        htmlDocContentDumpOutput(output, result, encoding);
+    }
+    else if (method && xmlStrEqual(method, (const xmlChar *)"text"))
+        transform_write_text(result, style, output);
+    else
+    {
+        transform_write_xmldecl(result, style, omit_encoding, output);
+
+        if (result->children)
+        {
+            xmlNodePtr child = result->children;
+
+            while (child)
+            {
+                xmlNodeDumpOutput(output, result, child, 0, indent == 1, encoding);
+                if (indent && ((child->type == XML_DTD_NODE) || ((child->type == XML_COMMENT_NODE) && child->next)))
+                    xmlOutputBufferWriteString(output, "\r\n");
+                child = child->next;
+            }
+        }
+    }
+
+    xmlOutputBufferFlush(output);
+    return S_OK;
+}
+
+/* For BSTR output is always UTF-16, without 'encoding' attribute */
+static HRESULT node_transform_write_to_bstr(xsltStylesheetPtr style, xmlDocPtr result, BSTR *str)
+{
+    HRESULT hr = S_OK;
+
+    if (transform_is_empty_resultdoc(result))
+        *str = SysAllocStringLen(NULL, 0);
+    else
+    {
+        xmlOutputBufferPtr output = xmlAllocOutputBuffer(xmlFindCharEncodingHandler("UTF-16"));
+        const xmlChar *content;
+        size_t len;
+
+        *str = NULL;
+        if (!output)
+            return E_OUTOFMEMORY;
+
+        hr = node_transform_write(style, result, TRUE, "UTF-16", output);
+        content = xmlBufContent(output->conv);
+        len = xmlBufUse(output->conv);
+        /* UTF-16 encoder places UTF-16 bom, we don't need it for BSTR */
+        content += sizeof(WCHAR);
+        *str = SysAllocStringLen((WCHAR*)content, len/sizeof(WCHAR) - 1);
+        xmlOutputBufferClose(output);
+    }
+
+    return *str ? hr : E_OUTOFMEMORY;
+}
+
+static HRESULT node_transform_write_to_stream(xsltStylesheetPtr style, xmlDocPtr result, ISequentialStream *stream)
+{
+    static const xmlChar *utf16 = (const xmlChar*)"UTF-16";
+    xmlOutputBufferPtr output;
+    const xmlChar *encoding;
+    HRESULT hr;
+
+    if (transform_is_empty_resultdoc(result))
+    {
+        WARN("empty result document\n");
+        return S_OK;
+    }
+
+    if (style->methodURI && (!style->method || !xmlStrEqual(style->method, (const xmlChar *) "xhtml")))
+    {
+        ERR("unknown output method\n");
+        return E_FAIL;
+    }
+
+    /* default encoding is UTF-16 */
+    XSLT_GET_IMPORT_PTR(encoding, style, encoding);
+    if (!encoding)
+        encoding = utf16;
+
+    output = xmlOutputBufferCreateIO(transform_to_stream_write, NULL, stream, xmlFindCharEncodingHandler((const char*)encoding));
+    if (!output)
+        return E_OUTOFMEMORY;
+
+    hr = node_transform_write(style, result, FALSE, (const char*)encoding, output);
+    xmlOutputBufferClose(output);
+    return hr;
+}
+
+struct import_buffer
+{
+    char *data;
+    int cur;
+    int len;
+};
+
+static int XMLCALL import_loader_io_read(void *context, char *out, int len)
+{
+    struct import_buffer *buffer = (struct import_buffer *)context;
+
+    TRACE("%p, %p, %d\n", context, out, len);
+
+    if (buffer->cur == buffer->len)
+        return 0;
+
+    len = min(len, buffer->len - buffer->cur);
+    memcpy(out, &buffer->data[buffer->cur], len);
+    buffer->cur += len;
+
+    TRACE("read %d\n", len);
+
+    return len;
+}
+
+static int XMLCALL import_loader_io_close(void * context)
+{
+    struct import_buffer *buffer = (struct import_buffer *)context;
+
+    TRACE("%p\n", context);
+
+    free(buffer->data);
+    free(buffer);
+    return 0;
+}
+
+static HRESULT import_loader_onDataAvailable(void *ctxt, char *ptr, DWORD len)
+{
+    xmlParserInputPtr *input = (xmlParserInputPtr *)ctxt;
+    xmlParserInputBufferPtr inputbuffer;
+    struct import_buffer *buffer;
+
+    buffer = malloc(sizeof(*buffer));
+
+    buffer->data = malloc(len);
+    memcpy(buffer->data, ptr, len);
+    buffer->cur = 0;
+    buffer->len = len;
+
+    inputbuffer = xmlParserInputBufferCreateIO(import_loader_io_read, import_loader_io_close, buffer,
+            XML_CHAR_ENCODING_NONE);
+    *input = xmlNewIOInputStream(NULL, inputbuffer, XML_CHAR_ENCODING_NONE);
+    if (!*input)
+        xmlFreeParserInputBuffer(inputbuffer);
+
+    return *input ? S_OK : E_FAIL;
+}
+
+static HRESULT xslt_doc_get_uri(const xmlChar *uri, void *_ctxt, xsltLoadType type, IUri **doc_uri)
+{
+    xsltStylesheetPtr style = (xsltStylesheetPtr)_ctxt;
+    IUri *href_uri;
+    HRESULT hr;
+    BSTR uriW;
+
+    *doc_uri = NULL;
+
+    uriW = bstr_from_xmlChar(uri);
+    hr = CreateUri(uriW, Uri_CREATE_ALLOW_RELATIVE | Uri_CREATE_ALLOW_IMPLICIT_FILE_SCHEME, 0, &href_uri);
+    SysFreeString(uriW);
+    if (FAILED(hr))
+    {
+        WARN("Failed to create href uri, %#lx.\n", hr);
+        return hr;
+    }
+
+    if (type == XSLT_LOAD_STYLESHEET && style->doc && style->doc->name)
+    {
+        IUri *base_uri;
+        BSTR baseuriW;
+
+        baseuriW = bstr_from_xmlChar((xmlChar *)style->doc->name);
+        hr = CreateUri(baseuriW, Uri_CREATE_ALLOW_IMPLICIT_FILE_SCHEME, 0, &base_uri);
+        SysFreeString(baseuriW);
+        if (FAILED(hr))
+        {
+            WARN("Failed to create base uri, %#lx.\n", hr);
+            return hr;
+        }
+
+        hr = CoInternetCombineIUri(base_uri, href_uri, 0, doc_uri, 0);
+        IUri_Release(base_uri);
+        if (FAILED(hr))
+            WARN("Failed to combine uris, hr %#lx.\n", hr);
+    }
+    else
+    {
+        *doc_uri = href_uri;
+        IUri_AddRef(*doc_uri);
+    }
+
+    IUri_Release(href_uri);
+
+    return hr;
+}
+
+xmlDocPtr xslt_doc_default_loader(const xmlChar *uri, xmlDictPtr dict, int options,
+    void *_ctxt, xsltLoadType type)
+{
+    IUri *import_uri = NULL;
+    xmlParserInputPtr input;
+    xmlParserCtxtPtr pctxt;
+    xmlDocPtr doc = NULL;
+    IMoniker *moniker;
+    HRESULT hr;
+    bsc_t *bsc;
+    BSTR uriW;
+
+    TRACE("%s, %p, %#x, %p, %d\n", debugstr_a((const char *)uri), dict, options, _ctxt, type);
+
+    pctxt = xmlNewParserCtxt();
+    if (!pctxt)
+        return NULL;
+
+    if (dict && pctxt->dict)
+    {
+        xmlDictFree(pctxt->dict);
+        pctxt->dict = NULL;
+    }
+
+    if (dict)
+    {
+        pctxt->dict = dict;
+        xmlDictReference(pctxt->dict);
+    }
+
+    xmlCtxtUseOptions(pctxt, options);
+
+    hr = xslt_doc_get_uri(uri, _ctxt, type, &import_uri);
+    if (FAILED(hr))
+        goto failed;
+
+    hr = CreateURLMonikerEx2(NULL, import_uri, &moniker, 0);
+    if (FAILED(hr))
+        goto failed;
+
+    hr = bind_url(moniker, import_loader_onDataAvailable, &input, &bsc);
+    IMoniker_Release(moniker);
+    if (FAILED(hr))
+        goto failed;
+
+    if (FAILED(detach_bsc(bsc)))
+        goto failed;
+
+    if (!input)
+        goto failed;
+
+    inputPush(pctxt, input);
+    xmlParseDocument(pctxt);
+
+    if (pctxt->wellFormed)
+    {
+        doc = pctxt->myDoc;
+        /* Set imported uri, to give nested imports a chance. */
+        if (IUri_GetPropertyBSTR(import_uri, Uri_PROPERTY_ABSOLUTE_URI, &uriW, 0) == S_OK)
+        {
+            doc->name = (char *)xmlchar_from_wcharn(uriW, SysStringLen(uriW), TRUE);
+            SysFreeString(uriW);
+        }
+    }
+    else
+    {
+        doc = NULL;
+        xmlFreeDoc(pctxt->myDoc);
+        pctxt->myDoc = NULL;
+    }
+
+failed:
+    xmlFreeParserCtxt(pctxt);
+    if (import_uri)
+        IUri_Release(import_uri);
+
+    return doc;
+}
+
+#ifdef _WIN64
+
+#define IActiveScriptParse_Release IActiveScriptParse64_Release
+#define IActiveScriptParse_InitNew IActiveScriptParse64_InitNew
+#define IActiveScriptParse_ParseScriptText IActiveScriptParse64_ParseScriptText
+
+#else
+
+#define IActiveScriptParse_Release IActiveScriptParse32_Release
+#define IActiveScriptParse_InitNew IActiveScriptParse32_InitNew
+#define IActiveScriptParse_ParseScriptText IActiveScriptParse32_ParseScriptText
+
+#endif
+
+struct xsl_scripts
+{
+    struct
+    {
+        IActiveScript *script;
+        const xmlChar *uri;
+    } *entries;
+    size_t count;
+    size_t capacity;
+};
+
+static IActiveScript *xpath_msxsl_script_get_script(xmlXPathParserContextPtr ctxt, const xmlChar *uri)
+{
+    xsltTransformContextPtr xslt_ctxt = xsltXPathGetTransformContext(ctxt);
+    struct xsl_scripts *scripts = xslt_ctxt->userData;
+
+    for (size_t i = 0; i < scripts->count; ++i)
+    {
+        if (xmlStrEqual(scripts->entries[i].uri, uri))
+            return scripts->entries[i].script;
+    }
+
+    return NULL;
+}
+
+static HRESULT xpath_create_nodelist_from_set(xmlNodeSetPtr set, bool needs_copy, IXMLDOMNodeList **ret)
+{
+    xmlNodeSet _copy = { 0 };
+    xmlXPathObjectPtr obj;
+    HRESULT hr;
+
+    if (needs_copy)
+    {
+        _copy.nodeTab = xmlMalloc(set->nodeNr * sizeof(*set->nodeTab));
+        _copy.nodeNr = set->nodeNr;
+        _copy.nodeMax = set->nodeNr;
+        for (int i = 0; i < set->nodeNr; ++i)
+            _copy.nodeTab[i] = xmlCopyNode(set->nodeTab[i], 1);
+        set = &_copy;
+    }
+
+    obj = xmlXPathNewNodeSetList(set);
+    hr = create_selection_from_nodeset(obj, ret);
+    xmlFree(_copy.nodeTab);
+
+    return hr;
+}
+
+static void xpath_msxsl_script_function(xmlXPathParserContextPtr ctxt, int nargs)
+{
+    xsltTransformContextPtr xslt_ctxt = xsltXPathGetTransformContext(ctxt);
+    xmlXPathContextPtr xpath = ((struct _xsltTransformContext *)xslt_ctxt)->xpathCtxt;
+    DISPPARAMS params = { 0 };
+    IActiveScript *script;
+    VARIANT *args = NULL;
+    IDispatch *disp;
+    VARIANT result;
+    DISPID dispid;
+    HRESULT hr;
+    BSTR name;
+
+    TRACE("%s:%s\n", xpath->functionURI, xpath->function);
+
+    script = xpath_msxsl_script_get_script(ctxt, xpath->functionURI);
+    if (!script)
+    {
+        WARN("Couldn't find a script for %s.\n", xpath->functionURI);
+        return;
+    }
+
+    if (FAILED(IActiveScript_GetScriptDispatch(script, NULL, &disp)))
+        return;
+
+    name = bstr_from_xmlChar(xpath->function);
+    hr = IDispatch_GetIDsOfNames(disp, &IID_NULL, &name, 1, 0, &dispid);
+    SysFreeString(name);
+    if (FAILED(hr))
+    {
+        WARN("Couldn't find %s function.\n", xpath->function);
+        IDispatch_Release(disp);
+        return;
+    }
+
+    if (nargs)
+    {
+        args = calloc(nargs, sizeof(*args));
+
+        for (int i = 0; i < nargs; ++i)
+        {
+            xmlXPathObjectType obj_type = XPATH_UNDEFINED;
+            xmlXPathObjectPtr obj = NULL;
+            xmlChar *s;
+
+            /* Since we don't want to impose expectations on argument types,
+               first inspect actual type on stack, and then pop with corresponding function. */
+            if (ctxt->valueNr > 0)
+            {
+                obj = ctxt->valueTab[ctxt->valueNr - 1];
+                obj_type = obj->type;
+            }
+
+            switch (obj_type)
+            {
+                case XPATH_XSLT_TREE:
+                case XPATH_NODESET:
+                {
+                    xmlNodeSetPtr nodeset = xmlXPathPopNodeSet(ctxt);
+                    IXMLDOMNodeList *nodelist;
+
+                    hr = xpath_create_nodelist_from_set(nodeset, obj_type == XPATH_XSLT_TREE, &nodelist);
+
+                    V_VT(&args[i]) = VT_DISPATCH;
+                    V_DISPATCH(&args[i]) = (IDispatch *)nodelist;
+                    break;
+                }
+                case XPATH_STRING:
+                    s = xmlXPathPopString(ctxt);
+                    V_VT(&args[i]) = VT_BSTR;
+                    V_BSTR(&args[i]) = bstr_from_xmlChar(s);
+                    xmlFree(s);
+                    break;
+                case XPATH_NUMBER:
+                    V_VT(&args[i]) = VT_R8;
+                    V_R8(&args[i]) = xmlXPathPopNumber(ctxt);
+                    break;
+                case XPATH_BOOLEAN:
+                    V_VT(&args[i]) = VT_BOOL;
+                    V_BOOL(&args[i]) = xmlXPathPopBoolean(ctxt) ? VARIANT_TRUE : VARIANT_FALSE;
+                    break;
+                default:
+                    FIXME("Unexpected XPath (%s) value type %d.\n", xpath->function, obj->type);
+                    return;
+            }
+        }
+
+        params.rgvarg = args;
+        params.cArgs = nargs;
+    }
+
+    VariantInit(&result);
+    hr = IDispatch_Invoke(disp, dispid, &IID_NULL, 0, DISPATCH_METHOD, &params, &result, NULL, NULL);
+    if (FAILED(hr))
+        WARN("User script Invoke() failed %#lx, function %s.\n", hr, xpath->function);
+
+    if (args)
+    {
+        for (int i = 0; i < nargs; ++i)
+            VariantClear(&args[i]);
+        free(args);
+    }
+
+    switch (V_VT(&result))
+    {
+        case VT_BSTR:
+        {
+            xmlChar *s = xmlchar_from_wcharn(V_BSTR(&result), -1, TRUE);
+            xmlXPathReturnString(ctxt, s);
+            break;
+        }
+        case VT_BOOL:
+            xmlXPathReturnBoolean(ctxt, !!V_BOOL(&result));
+            break;
+        case VT_INT:
+        case VT_I1:
+        case VT_UI1:
+        case VT_I2:
+        case VT_UI2:
+        case VT_I4:
+        case VT_UI4:
+        case VT_R4:
+        case VT_R8:
+            VariantChangeType(&result, &result, 0, VT_R8);
+            xmlXPathReturnNumber(ctxt, V_R8(&result));
+            break;
+        case VT_EMPTY:
+            xmlXPathReturnEmptyString(ctxt);
+            break;
+        default:
+            FIXME("Unexpected return value %s.\n", debugstr_variant(&result));
+            xmlXPathReturnEmptyString(ctxt);
+    }
+
+    IDispatch_Release(disp);
+    VariantClear(&result);
+}
+
+struct msxsl_script_site
+{
+    IActiveScriptSite IActiveScriptSite_iface;
+    IServiceProvider IServiceProvider_iface;
+    LONG refcount;
+
+    IServiceProvider *provider;
+};
+
+static struct msxsl_script_site *impl_from_IActiveScriptSite(IActiveScriptSite *iface)
+{
+    return CONTAINING_RECORD(iface, struct msxsl_script_site, IActiveScriptSite_iface);
+}
+
+static struct msxsl_script_site *impl_from_IServiceProvider(IServiceProvider *iface)
+{
+    return CONTAINING_RECORD(iface, struct msxsl_script_site, IServiceProvider_iface);
+}
+
+static HRESULT WINAPI msxsl_script_site_QueryInterface(IActiveScriptSite *iface, REFIID riid, void **obj)
+{
+    struct msxsl_script_site *site = impl_from_IActiveScriptSite(iface);
+
+    if (IsEqualGUID(&IID_IUnknown, riid)
+        || IsEqualGUID(&IID_IActiveScriptSite, riid))
+    {
+        *obj = iface;
+        IActiveScriptSite_AddRef(iface);
+        return S_OK;
+    }
+    else if (IsEqualGUID(&IID_IServiceProvider, riid))
+    {
+        *obj = &site->IServiceProvider_iface;
+        IServiceProvider_AddRef(&site->IServiceProvider_iface);
+        return S_OK;
+    }
+
+    *obj = NULL;
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI msxsl_script_site_AddRef(IActiveScriptSite *iface)
+{
+    struct msxsl_script_site *site = impl_from_IActiveScriptSite(iface);
+    return InterlockedIncrement(&site->refcount);
+}
+
+static ULONG WINAPI msxsl_script_site_Release(IActiveScriptSite *iface)
+{
+    struct msxsl_script_site *site = impl_from_IActiveScriptSite(iface);
+    LONG refcount = InterlockedDecrement(&site->refcount);
+
+    if (!refcount)
+    {
+        if (site->provider)
+            IServiceProvider_Release(site->provider);
+        free(site);
+    }
+
+    return refcount;
+}
+
+static HRESULT WINAPI msxsl_script_site_GetLCID(IActiveScriptSite *iface, LCID *lcid)
+{
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI msxsl_script_site_GetItemInfo(IActiveScriptSite *iface, LPCOLESTR name,
+        DWORD mask, IUnknown **item, ITypeInfo **typeinfo)
+{
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI msxsl_script_site_GetDocVersionString(IActiveScriptSite *iface, BSTR *version)
+{
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI msxsl_script_site_OnScriptTerminate(IActiveScriptSite *iface,
+        const VARIANT *result, const EXCEPINFO *ei)
+{
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI msxsl_script_site_OnStateChange(IActiveScriptSite *iface, SCRIPTSTATE state)
+{
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI msxsl_script_site_OnScriptError(IActiveScriptSite *iface, IActiveScriptError *script_error)
+{
+    return S_OK;
+}
+
+static HRESULT WINAPI msxsl_script_site_OnEnterScript(IActiveScriptSite *iface)
+{
+    return S_OK;
+}
+
+static HRESULT WINAPI msxsl_script_site_OnLeaveScript(IActiveScriptSite *iface)
+{
+    return S_OK;
+}
+
+static const IActiveScriptSiteVtbl msxsl_script_site_vtbl =
+{
+    msxsl_script_site_QueryInterface,
+    msxsl_script_site_AddRef,
+    msxsl_script_site_Release,
+    msxsl_script_site_GetLCID,
+    msxsl_script_site_GetItemInfo,
+    msxsl_script_site_GetDocVersionString,
+    msxsl_script_site_OnScriptTerminate,
+    msxsl_script_site_OnStateChange,
+    msxsl_script_site_OnScriptError,
+    msxsl_script_site_OnEnterScript,
+    msxsl_script_site_OnLeaveScript
+};
+
+static HRESULT WINAPI msxsl_script_site_servprov_QueryInterface(IServiceProvider *iface, REFIID riid, void **obj)
+{
+    struct msxsl_script_site *site = impl_from_IServiceProvider(iface);
+    return IActiveScriptSite_QueryInterface(&site->IActiveScriptSite_iface, riid, obj);
+}
+
+static ULONG WINAPI msxsl_script_site_servprov_AddRef(IServiceProvider *iface)
+{
+    struct msxsl_script_site *site = impl_from_IServiceProvider(iface);
+    return IActiveScriptSite_AddRef(&site->IActiveScriptSite_iface);
+}
+
+static ULONG WINAPI msxsl_script_site_servprov_Release(IServiceProvider *iface)
+{
+    struct msxsl_script_site *site = impl_from_IServiceProvider(iface);
+    return IActiveScriptSite_Release(&site->IActiveScriptSite_iface);
+}
+
+static HRESULT WINAPI msxsl_script_site_servprov_QueryService(IServiceProvider *iface,
+        REFGUID service, REFIID riid, void **obj)
+{
+    struct msxsl_script_site *site = impl_from_IServiceProvider(iface);
+
+    if (site->provider)
+        return IServiceProvider_QueryService(site->provider, service, riid, obj);
+
+    *obj = NULL;
+    return E_NOINTERFACE;
+}
+
+static const IServiceProviderVtbl msxsl_script_site_servprov_vtbl =
+{
+    msxsl_script_site_servprov_QueryInterface,
+    msxsl_script_site_servprov_AddRef,
+    msxsl_script_site_servprov_Release,
+    msxsl_script_site_servprov_QueryService,
+};
+
+static HRESULT msxsl_create_script_site(IXMLDOMDocument *doc, IActiveScriptSite **obj)
+{
+    struct msxsl_script_site *object;
+    IServiceProvider *provider = NULL;
+    IObjectWithSite *ows;
+    HRESULT hr;
+
+    if (FAILED(hr = IXMLDOMDocument_QueryInterface(doc, &IID_IObjectWithSite, (void **)&ows)))
+        return hr;
+
+    IObjectWithSite_GetSite(ows, &IID_IServiceProvider, (void **)&provider);
+    IObjectWithSite_Release(ows);
+
+    object = calloc(1, sizeof(*object));
+    object->IActiveScriptSite_iface.lpVtbl = &msxsl_script_site_vtbl;
+    object->IServiceProvider_iface.lpVtbl = &msxsl_script_site_servprov_vtbl;
+    object->refcount = 1;
+    object->provider = provider;
+
+    *obj = &object->IActiveScriptSite_iface;
+
+    return S_OK;
+}
+
+static void node_transform_bind_scripts(xsltTransformContextPtr ctxt, IXMLDOMDocument *owner_doc,
+        xmlDocPtr sheet, struct xsl_scripts *scripts)
+{
+    IActiveScriptSite *script_site;
+    xmlNodePtr root, child, node;
+    DWORD supported, enabled = 0;
+    IObjectSafety *object_safety;
+    xmlNsPtr ns;
+
+    IXMLDOMDocument_QueryInterface(owner_doc, &IID_IObjectSafety, (void **)&object_safety);
+    IObjectSafety_GetInterfaceSafetyOptions(object_safety, NULL, &supported, &enabled);
+    IObjectSafety_Release(object_safety);
+
+    if (FAILED(msxsl_create_script_site(owner_doc, &script_site)))
+        return;
+
+    root = xmlDocGetRootElement(sheet);
+    for (node = root->children; node; node = node->next)
+    {
+        if (xmlStrEqual(node->name, BAD_CAST "script")
+                && node->ns
+                && xmlStrEqual(node->ns->prefix, BAD_CAST "msxsl")
+                && xmlStrEqual(node->ns->href, BAD_CAST "urn:schemas-microsoft-com:xslt"))
+        {
+             child = node->children;
+
+             if (child && child->type == XML_CDATA_SECTION_NODE)
+             {
+                 IActiveScript *active_script;
+                 xmlChar *language, *prefix;
+                 IActiveScriptParse *parser;
+                 TYPEATTR *typeattr;
+                 BSTR text, progid;
+                 IDispatch *disp;
+                 ITypeInfo *ti;
+                 CLSID clsid;
+                 HRESULT hr;
+
+                 if (!(prefix = xmlGetProp(node, BAD_CAST "implements-prefix")))
+                 {
+                     WARN("<msxsl:script> without 'implements-prefix'.\n");
+                     continue;
+                 }
+
+                 if (!(ns = xmlSearchNs(sheet, node, prefix)))
+                 {
+                     WARN("Couldn't locate script element namespace for \"%s\".\n", debugstr_a((char *)prefix));
+                     continue;
+                 }
+
+                 if (!(language = xmlGetProp(node, BAD_CAST "language")))
+                     language = BAD_CAST "javascript";
+
+                 progid = bstr_from_xmlChar(language);
+                 if (FAILED(hr = CLSIDFromProgID(progid, &clsid)))
+                     WARN("Unknown engine progid %s.\n", debugstr_w(progid));
+                 SysFreeString(progid);
+                 if (FAILED(hr))
+                     return;
+
+                 if (FAILED(hr = CoCreateInstance(&clsid, NULL, CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER,
+                         &IID_IActiveScript, (void **)&active_script)))
+                 {
+                     WARN("Failed to create a script engine instance, hr %#lx.\n", hr);
+                     continue;
+                 }
+
+                 IActiveScript_QueryInterface(active_script, &IID_IObjectSafety, (void **)&object_safety);
+                 IObjectSafety_SetInterfaceSafetyOptions(object_safety, NULL, enabled, enabled);
+                 IObjectSafety_Release(object_safety);
+
+                 IActiveScript_QueryInterface(active_script, &IID_IActiveScriptParse, (void **)&parser);
+                 IActiveScript_SetScriptSite(active_script, script_site);
+                 IActiveScriptParse_InitNew(parser);
+                 IActiveScript_SetScriptState(active_script, SCRIPTSTATE_STARTED);
+
+                 text = bstr_from_xmlChar(child->content);
+                 hr = IActiveScriptParse_ParseScriptText(parser, text, NULL, NULL, NULL, 0, 0, 0, NULL, NULL);
+                 IActiveScriptParse_Release(parser);
+                 SysFreeString(text);
+                 if (FAILED(hr))
+                 {
+                     WARN("Failed to parse script for the namespace %s, hr %#lx.\n", prefix, hr);
+                     IActiveScript_Release(active_script);
+                     continue;
+                 }
+
+                 IActiveScript_GetScriptDispatch(active_script, NULL, &disp);
+                 IDispatch_GetTypeInfo(disp, 0, LOCALE_USER_DEFAULT, &ti);
+
+                 ITypeInfo_GetTypeAttr(ti, &typeattr);
+
+                 for (int i = 0; i < typeattr->cFuncs; ++i)
+                 {
+                     FUNCDESC *funcdesc;
+                     xmlChar *func_name;
+                     BSTR name;
+
+                     ITypeInfo_GetFuncDesc(ti, i, &funcdesc);
+                     ITypeInfo_GetDocumentation(ti, funcdesc->memid, &name, NULL, NULL, NULL);
+                     func_name = xmlchar_from_wchar(name);
+
+                     xsltRegisterExtFunction(ctxt, func_name, ns->href, xpath_msxsl_script_function);
+
+                     SysFreeString(name);
+                     free(func_name);
+                 }
+
+                 IDispatch_Release(disp);
+                 ITypeInfo_Release(ti);
+
+                 array_reserve((void **)&scripts->entries, &scripts->capacity, scripts->count + 1, sizeof(*scripts->entries));
+
+                 scripts->entries[scripts->count].script = active_script;
+                 scripts->entries[scripts->count].uri = ns->href;
+                 scripts->count++;
+             }
+        }
+    }
+
+    IActiveScriptSite_Release(script_site);
+}
+
+HRESULT node_transform_node_params(struct domnode *node, IXMLDOMNode *stylesheet, BSTR *p,
+    ISequentialStream *stream, const struct xslprocessor_params *params)
+{
+    xmlDocPtr sheet_doc, node_doc;
+    struct domnode *sheet_domdoc;
+    IXMLDOMDocument *owner_doc;
+    xsltStylesheetPtr xsltSS;
+    xmlNodePtr xmlnode;
+    HRESULT hr = S_OK;
+
+    if (!stylesheet || (!p && !stream))
+        return E_INVALIDARG;
+
+    if (p) *p = NULL;
+
+    if (FAILED(IXMLDOMNode_QueryInterface(stylesheet, &IID_IXMLDOMDocument, (void **)&owner_doc)))
+    {
+        if (FAILED(hr = IXMLDOMNode_get_ownerDocument(stylesheet, &owner_doc)))
+            return hr;
+    }
+
+    sheet_domdoc = get_node_obj(owner_doc);
+    if (!sheet_domdoc)
+    {
+        IXMLDOMDocument_Release(owner_doc);
+        return E_FAIL;
+    }
+
+    sheet_doc = create_xmldoc_from_domdoc(sheet_domdoc, &xmlnode);
+    node_doc = create_xmldoc_from_domdoc(node, &xmlnode);
+
+    xsltSS = xsltParseStylesheetDoc(sheet_doc);
+    if (xsltSS)
+    {
+        struct xsl_scripts scripts = { 0 };
+        const char **xslparams = NULL;
+        xsltTransformContextPtr ctxt;
+        xmlDocPtr result;
+        unsigned int i;
+
+        /* convert our parameter list to libxml2 format */
+        if (params && params->count)
+        {
+            struct xslprocessor_par *par;
+
+            i = 0;
+            xslparams = malloc((params->count * 2 + 1) * sizeof(char*));
+            LIST_FOR_EACH_ENTRY(par, &params->list, struct xslprocessor_par, entry)
+            {
+                xslparams[i++] = (char*)xmlchar_from_wchar(par->name);
+                xslparams[i++] = (char*)xmlchar_from_wchar(par->value);
+            }
+            xslparams[i] = NULL;
+        }
+
+        ctxt = xsltNewTransformContext(xsltSS, node_doc);
+
+        node_transform_bind_scripts(ctxt, owner_doc, sheet_doc, &scripts);
+        ctxt->userData = &scripts;
+
+        if (xslparams)
+        {
+            /* push parameters to user context */
+            xsltQuoteUserParams(ctxt, xslparams);
+            result = xsltApplyStylesheetUser(xsltSS, node_doc, NULL, NULL, NULL, ctxt);
+
+            for (i = 0; i < params->count*2; i++)
+                free((char*)xslparams[i]);
+            free(xslparams);
+        }
+        else
+        {
+            result = xsltApplyStylesheetUser(xsltSS, node_doc, NULL, NULL, NULL, ctxt);
+        }
+
+        for (size_t i = 0; i < scripts.count; ++i)
+        {
+            if (scripts.entries[i].script)
+                IActiveScript_Release(scripts.entries[i].script);
+        }
+        free(scripts.entries);
+
+        ctxt->userData = NULL;
+        xsltFreeTransformContext(ctxt);
+
+        if (result)
+        {
+            if (stream)
+                hr = node_transform_write_to_stream(xsltSS, result, stream);
+            else
+                hr = node_transform_write_to_bstr(xsltSS, result, p);
+            xmlFreeDoc(result);
+        }
+
+        xsltFreeStylesheet(xsltSS);
+    }
+    else
+        xmlFreeDoc(sheet_doc);
+
+    xmlFreeDoc(node_doc);
+
+    if (p && !*p) *p = SysAllocStringLen(NULL, 0);
+
+    IXMLDOMDocument_Release(owner_doc);
+
+    return hr;
+}
+
+HRESULT node_transform_node(struct domnode *node, IXMLDOMNode *stylesheet, BSTR *p)
+{
+    return node_transform_node_params(node, stylesheet, p, NULL, NULL);
+}
+
+HRESULT node_select_nodes(struct domnode *node, BSTR query, IXMLDOMNodeList **list)
+{
+    struct domnode *doc = node_get_doc(node);
+
+    if (!query || !list)
+        return E_INVALIDARG;
+
+    return create_selection(node, query, doc->properties->XPath, list);
+}
+
+HRESULT node_select_singlenode(struct domnode *node, BSTR query, IXMLDOMNode **ret)
+{
+    IXMLDOMNodeList *list;
+    HRESULT hr;
+
+    if (ret)
+        *ret = NULL;
+
+    hr = node_select_nodes(node, query, &list);
+    if (hr == S_OK)
+    {
+        hr = IXMLDOMNodeList_nextNode(list, ret);
+        IXMLDOMNodeList_Release(list);
+    }
+    return hr;
+}
+
+HRESULT node_get_namespaceURI(struct domnode *node, BSTR *uri)
+{
+    if (!uri)
+        return E_INVALIDARG;
+
+    *uri = NULL;
+
+    return node->uri ? return_bstr(node->uri, uri) : S_FALSE;
+}
+
+HRESULT node_attribute_get_namespace_uri(struct domnode *node, BSTR *uri)
+{
+    struct domnode *doc = node->owner;
+    bool version6, defaultns;
+
+    if (!uri)
+        return E_INVALIDARG;
+
+    *uri = NULL;
+
+    version6 = doc->properties->version == MSXML6;
+    defaultns = !wcscmp(node->qname, L"xmlns");
+
+    if (defaultns || is_same_namespace_prefix(node, L"xmlns"))
+    {
+        if (version6)
+            *uri = SysAllocString(L"http://www.w3.org/2000/xmlns/");
+        else if (!node->uri || !defaultns)
+            *uri = SysAllocStringLen(NULL, 0);
+        else
+            *uri = SysAllocString(L"xmlns");
+
+        return *uri ? S_OK : E_OUTOFMEMORY;
+    }
+
+    return node_get_namespaceURI(node, uri);
+}
+
+HRESULT node_get_prefix(struct domnode *node, BSTR *prefix)
+{
+    if (!prefix)
+        return E_INVALIDARG;
+
+    *prefix = NULL;
+
+    return node->prefix ? return_bstr(node->prefix, prefix) : S_FALSE;
+}
+
+HRESULT node_get_attribute(const struct domnode *node, const WCHAR *name, IXMLDOMAttribute **attribute)
+{
+    struct domnode *attr;
+    IUnknown *obj;
+    HRESULT hr;
+
+    if (attribute)
+        *attribute = NULL;
+
+    if (!parser_is_valid_qualified_name(name))
+        return E_FAIL;
+
+    if (!attribute)
+        return S_FALSE;
+
+    if (domnode_get_attribute(node, name, &attr) != S_OK)
+        return S_FALSE;
+
+    hr = create_attribute(attr, &obj);
+    if (SUCCEEDED(hr))
+    {
+        hr = IUnknown_QueryInterface(obj, &IID_IXMLDOMAttribute, (void **)attribute);
+        IUnknown_Release(obj);
+    }
+
+    return hr;
+}
+
+HRESULT node_get_qualified_attribute(const struct domnode *node, const WCHAR *name, const WCHAR *uri, IXMLDOMNode **ret)
+{
+    struct domnode *attr;
+
+    if (!ret)
+        return S_FALSE;
+
+    if (ret)
+        *ret = NULL;
+
+    if (domnode_get_qualified_attribute(node, name, uri, &attr) != S_OK)
+        return S_FALSE;
+
+    return create_node(attr, ret);
+}
+
+HRESULT node_remove_qualified_attribute(struct domnode *node, const WCHAR *name, const WCHAR *uri, IXMLDOMNode **ret)
+{
+    struct domnode *attr;
+    HRESULT hr;
+
+    if (!name)
+        return E_INVALIDARG;
+
+    if (ret)
+        *ret = NULL;
+
+    if ((hr = domnode_get_qualified_attribute(node, name, uri, &attr)) != S_OK)
+        return hr;
+
+    if (ret)
+        hr = create_node(attr, ret);
+
+    if (SUCCEEDED(hr))
+        domnode_unlink_attribute(attr);
+
+    return hr;
+}
+
+HRESULT node_get_attribute_by_index(const struct domnode *node, LONG index, IXMLDOMNode **attr)
+{
+    struct domnode *n, *curr = NULL;
+
+    *attr = NULL;
+
+    if (index < 0)
+        return S_FALSE;
+
+    LIST_FOR_EACH_ENTRY(n, &node->attributes, struct domnode, entry)
+    {
+        curr = n;
+        if (!index--) break;
+        curr = NULL;
+    }
+
+    if (!curr)
+        return S_FALSE;
+
+    return create_node(curr, attr);
+}
+
+HRESULT node_get_attribute_value(struct domnode *node, const WCHAR *name, VARIANT *value)
+{
+    struct domnode *attr, *child;
+    struct string_buffer buffer;
+
+    if (!name || !value)
+        return E_INVALIDARG;
+
+    VariantInit(value);
+
+    if (!parser_is_valid_qualified_name(name))
+        return E_FAIL;
+
+    if (domnode_get_attribute(node, name, &attr) != S_OK)
+    {
+        V_VT(value) = VT_NULL;
+        return S_FALSE;
+    }
+
+    string_buffer_init(&buffer);
+    LIST_FOR_EACH_ENTRY(child, &attr->children, struct domnode, entry)
+    {
+        string_append(&buffer, child->data, SysStringLen(child->data));
+    }
+
+    V_VT(value) = VT_BSTR;
+    return string_to_bstr(&buffer, &V_BSTR(value));
+}
+
+HRESULT node_set_attribute(struct domnode *node, IXMLDOMNode *attribute, IXMLDOMNode **ret)
+{
+    struct domnode *attr, *old_attr;
+    HRESULT hr;
+
+    if (!attribute)
+        return E_INVALIDARG;
+
+    if (!(attr = get_node_obj(attribute)))
+        return E_FAIL;
+
+    if (attr->type != NODE_ATTRIBUTE)
+        return E_FAIL;
+
+    if (attr->parent)
+        return E_FAIL;
+
+    if (ret)
+        *ret = NULL;
+
+    if (domnode_get_attribute(node, attr->qname, &old_attr) == S_OK)
+    {
+        if (ret)
+        {
+            if (FAILED(hr = create_node(old_attr, ret)))
+                return hr;
         }
 
-        params.rgvarg = args;
-        params.cArgs = nargs;
+        list_add_before(&old_attr->entry, &attr->entry);
+        attr->parent = node;
+
+        domnode_unlink_attribute(old_attr);
+    }
+    else
+    {
+        domnode_append_attribute(node, attr);
     }
 
-    VariantInit(&result);
-    hr = IDispatch_Invoke(disp, dispid, &IID_NULL, 0, DISPATCH_METHOD, &params, &result, NULL, NULL);
-    if (FAILED(hr))
-        WARN("User script Invoke() failed %#lx, function %s.\n", hr, xpath->function);
+    return S_OK;
+}
 
-    if (args)
+static bool is_namespace_definition_name(const struct parsed_name *name)
+{
+    if (!name->prefix && !wcscmp(name->local, L"xmlns"))
+        return true;
+    return name->prefix && !wcscmp(name->prefix, L"xmlns");
+}
+
+HRESULT node_set_attribute_value(struct domnode *node, const WCHAR *name, const VARIANT *value)
+{
+    struct parsed_name attr_name;
+    struct domnode *attr;
+    BSTR attr_value;
+    bool match;
+    HRESULT hr;
+    VARIANT v;
+
+    if (FAILED(parse_qualified_name(name, &attr_name)))
+        return E_FAIL;
+
+    if (FAILED(hr = variant_get_str_value(value, &v, &attr_value)))
     {
-        for (int i = 0; i < nargs; ++i)
-            VariantClear(&args[i]);
-        free(args);
+        parsed_name_cleanup(&attr_name);
+        return hr;
     }
 
-    switch (V_VT(&result))
+    /* Check for conflict with element namespace. It's possible to have no uri set on element,
+       while still having qualified name. */
+    match = node->uri
+            && is_namespace_definition_name(&attr_name)
+            && is_same_namespace_prefix(node, attr_name.local)
+            && !is_same_uri(node, attr_value);
+    parsed_name_cleanup(&attr_name);
+
+    if (match)
     {
-        case VT_BSTR:
-        {
-            xmlChar *s = xmlchar_from_wcharn(V_BSTR(&result), -1, TRUE);
-            xmlXPathReturnString(ctxt, s);
-            break;
-        }
-        case VT_BOOL:
-            xmlXPathReturnBoolean(ctxt, !!V_BOOL(&result));
-            break;
-        case VT_INT:
-        case VT_I1:
-        case VT_UI1:
-        case VT_I2:
-        case VT_UI2:
-        case VT_I4:
-        case VT_UI4:
-        case VT_R4:
-        case VT_R8:
-            VariantChangeType(&result, &result, 0, VT_R8);
-            xmlXPathReturnNumber(ctxt, V_R8(&result));
-            break;
-        case VT_EMPTY:
-            xmlXPathReturnEmptyString(ctxt);
-            break;
-        default:
-            FIXME("Unexpected return value %s.\n", debugstr_variant(&result));
-            xmlXPathReturnEmptyString(ctxt);
+        VariantClear(&v);
+        return E_INVALIDARG;
     }
 
-    IDispatch_Release(disp);
-    VariantClear(&result);
-}
+    if (domnode_get_attribute(node, name, &attr) != S_OK)
+    {
+        if (SUCCEEDED(hr = domnode_create(NODE_ATTRIBUTE, name, wcslen(name), NULL, 0, node->owner, &attr)))
+            domnode_append_attribute(node, attr);
+    }
 
-struct msxsl_script_site
-{
-    IActiveScriptSite IActiveScriptSite_iface;
-    IServiceProvider IServiceProvider_iface;
-    LONG refcount;
+    if (SUCCEEDED(hr))
+        hr = node_put_data(attr, attr_value);
+    VariantClear(&v);
 
-    IServiceProvider *provider;
-};
+    /* Allow setting namespace definition node once. */
+    if (attr && is_namespace_definition(attr))
+        attr->flags |= DOMNODE_READONLY_VALUE;
 
-static struct msxsl_script_site *impl_from_IActiveScriptSite(IActiveScriptSite *iface)
-{
-    return CONTAINING_RECORD(iface, struct msxsl_script_site, IActiveScriptSite_iface);
+    return hr;
 }
 
-static struct msxsl_script_site *impl_from_IServiceProvider(IServiceProvider *iface)
+HRESULT node_get_base_name(struct domnode *node, BSTR *name)
 {
-    return CONTAINING_RECORD(iface, struct msxsl_script_site, IServiceProvider_iface);
+    return return_bstr(node->name, name);
 }
 
-static HRESULT WINAPI msxsl_script_site_QueryInterface(IActiveScriptSite *iface, REFIID riid, void **obj)
+HRESULT create_node(struct domnode *node, IXMLDOMNode **ret)
 {
-    struct msxsl_script_site *site = impl_from_IActiveScriptSite(iface);
+    IUnknown *obj;
+    HRESULT hr;
 
-    if (IsEqualGUID(&IID_IUnknown, riid)
-        || IsEqualGUID(&IID_IActiveScriptSite, riid))
+    *ret = NULL;
+
+    if (!node)
+        return S_FALSE;
+
+    switch (node->type)
     {
-        *obj = iface;
-        IActiveScriptSite_AddRef(iface);
-        return S_OK;
+    case NODE_ELEMENT:
+        hr = create_element(node, &obj);
+        break;
+    case NODE_ATTRIBUTE:
+        hr = create_attribute(node, &obj);
+        break;
+    case NODE_TEXT:
+        hr = create_text(node, &obj);
+        break;
+    case NODE_CDATA_SECTION:
+        hr = create_cdata(node, &obj);
+        break;
+    case NODE_ENTITY_REFERENCE:
+        hr = create_entity_ref(node, &obj);
+        break;
+    case NODE_PROCESSING_INSTRUCTION:
+        hr = create_pi(node, &obj);
+        break;
+    case NODE_COMMENT:
+        hr = create_comment(node, &obj);
+        break;
+    case NODE_DOCUMENT:
+        hr = create_domdoc(node, &obj);
+        break;
+    case NODE_DOCUMENT_FRAGMENT:
+        hr = create_doc_fragment(node, &obj);
+        break;
+    case NODE_DOCUMENT_TYPE:
+        hr = create_doc_type(node, &obj);
+        break;
+    case NODE_ENTITY:
+    case NODE_NOTATION:
+        FIXME("Unsupported node type %d.\n", node->type);
+        return E_NOTIMPL;
+    default:
+        WARN("Invalid node type %d\n", node->type);
+        return E_FAIL;
     }
-    else if (IsEqualGUID(&IID_IServiceProvider, riid))
+
+    if (hr == S_OK)
     {
-        *obj = &site->IServiceProvider_iface;
-        IServiceProvider_AddRef(&site->IServiceProvider_iface);
-        return S_OK;
+        hr = IUnknown_QueryInterface(obj, &IID_IXMLDOMNode, (void **)ret);
+        IUnknown_Release(obj);
     }
 
-    *obj = NULL;
-    return E_NOINTERFACE;
+    return hr;
 }
 
-static ULONG WINAPI msxsl_script_site_AddRef(IActiveScriptSite *iface)
+struct parse_context
 {
-    struct msxsl_script_site *site = impl_from_IActiveScriptSite(iface);
-    return InterlockedIncrement(&site->refcount);
+    ISAXExtensionHandler extension_handler;
+    ISAXContentHandler content_handler;
+    ISAXLexicalHandler lexical_handler;
+    ISAXXMLReaderExtension *reader_extension;
+    ISAXXMLReader *reader;
+
+    struct domnode *node;
+
+    struct string_buffer buffer;
+
+    /* Parsed output */
+    struct domnode *root;
+
+    HRESULT status;
+};
+
+static void parse_context_node_create(struct parse_context *context, DOMNodeType type,
+        const WCHAR *name, int name_len, const WCHAR *uri, int uri_len, struct domnode *owner,
+        struct domnode **node)
+{
+    *node = NULL;
+
+    if (context->status != S_OK)
+        return;
+
+    context->status = domnode_create(type, name, name_len, uri, uri_len, owner, node);
 }
 
-static ULONG WINAPI msxsl_script_site_Release(IActiveScriptSite *iface)
+static void parse_context_append_child(struct parse_context *context, struct domnode *parent, struct domnode *child)
 {
-    struct msxsl_script_site *site = impl_from_IActiveScriptSite(iface);
-    LONG refcount = InterlockedDecrement(&site->refcount);
+    if (context->status == S_OK)
+        domnode_append_child(parent, child);
+}
 
-    if (!refcount)
+static void parse_context_append_attribute(struct parse_context *context, struct domnode *node, struct domnode *attribute)
+{
+    if (context->status == S_OK)
+        domnode_append_attribute(node, attribute);
+}
+
+static void parse_context_node_put_data(struct parse_context *context, struct domnode *node, const WCHAR *data, int data_len)
+{
+    BSTR str;
+
+    if (context->status != S_OK)
+        return;
+
+    if (!(str = SysAllocStringLen(data, data_len)))
     {
-        if (site->provider)
-            IServiceProvider_Release(site->provider);
-        free(site);
+        context->status = E_OUTOFMEMORY;
+        return;
     }
 
-    return refcount;
+    context->status = node_put_data(node, str);
+    SysFreeString(str);
 }
 
-static HRESULT WINAPI msxsl_script_site_GetLCID(IActiveScriptSite *iface, LCID *lcid)
+static HRESULT parse_context_create_text_node(struct parse_context *c, DOMNodeType type)
 {
-    return E_NOTIMPL;
+    bool preserve = is_preserving_whitespace(c->node), space = true;
+    bool ignored_whitespace = false;
+    struct domnode *node;
+
+    if (c->status != S_OK)
+        return c->status;
+
+    if (type == NODE_CDATA_SECTION)
+    {
+        parse_context_node_create(c, type, NULL, 0, NULL, 0, c->root, &node);
+        parse_context_node_put_data(c, node, c->buffer.data, c->buffer.count);
+        parse_context_append_child(c, c->node, node);
+
+        c->buffer.count = 0;
+
+        return c->status;
+    }
+
+    if (c->buffer.count == 0)
+        return S_OK;
+
+    if (!preserve)
+    {
+        for (size_t i = 0; i < c->buffer.count; ++i)
+        {
+            if (!xml_is_space(c->buffer.data[i]))
+            {
+                space = false;
+                break;
+            }
+        }
+
+        if (space)
+        {
+            c->buffer.count = 0;
+            ignored_whitespace = true;
+        }
+    }
+
+    if (c->buffer.count)
+    {
+        parse_context_node_create(c, type, NULL, 0, NULL, 0, c->root, &node);
+        parse_context_node_put_data(c, node, c->buffer.data, c->buffer.count);
+        parse_context_append_child(c, c->node, node);
+
+        c->buffer.count = 0;
+    }
+    else if (ignored_whitespace)
+    {
+        if (list_empty(&c->node->children))
+        {
+            c->node->flags |= DOMNODE_IGNORED_WS_AFTER_STARTTAG;
+        }
+        else
+        {
+            struct domnode *last_child = node_from_entry(list_tail(&c->node->children));
+            last_child->flags |= DOMNODE_IGNORED_WS;
+        }
+    }
+
+    return c->status;
 }
 
-static HRESULT WINAPI msxsl_script_site_GetItemInfo(IActiveScriptSite *iface, LPCOLESTR name,
-        DWORD mask, IUnknown **item, ITypeInfo **typeinfo)
+static struct parse_context *impl_from_ISAXContentHandler(ISAXContentHandler *iface)
 {
-    return E_NOTIMPL;
+    return CONTAINING_RECORD(iface, struct parse_context, content_handler);
 }
 
-static HRESULT WINAPI msxsl_script_site_GetDocVersionString(IActiveScriptSite *iface, BSTR *version)
+static struct parse_context *impl_from_ISAXExtensionHandler(ISAXExtensionHandler *iface)
 {
-    return E_NOTIMPL;
+    return CONTAINING_RECORD(iface, struct parse_context, extension_handler);
 }
 
-static HRESULT WINAPI msxsl_script_site_OnScriptTerminate(IActiveScriptSite *iface,
-        const VARIANT *result, const EXCEPINFO *ei)
+static HRESULT WINAPI parse_content_handler_QueryInterface(ISAXContentHandler *iface, REFIID riid, void **obj)
 {
-    return E_NOTIMPL;
+    if (IsEqualGUID(riid, &IID_ISAXContentHandler)
+            || IsEqualGUID(riid, &IID_IUnknown))
+    {
+        *obj = iface;
+        ISAXContentHandler_AddRef(iface);
+        return S_OK;
+    }
+
+    *obj = NULL;
+    return E_NOINTERFACE;
 }
 
-static HRESULT WINAPI msxsl_script_site_OnStateChange(IActiveScriptSite *iface, SCRIPTSTATE state)
+static ULONG WINAPI parse_content_handler_AddRef(ISAXContentHandler *iface)
 {
-    return E_NOTIMPL;
+    return 2;
 }
 
-static HRESULT WINAPI msxsl_script_site_OnScriptError(IActiveScriptSite *iface, IActiveScriptError *script_error)
+static ULONG WINAPI parse_content_handler_Release(ISAXContentHandler *iface)
 {
-    return S_OK;
+    return 1;
 }
 
-static HRESULT WINAPI msxsl_script_site_OnEnterScript(IActiveScriptSite *iface)
+static HRESULT WINAPI parse_content_handler_putDocumentLocator(ISAXContentHandler *iface, ISAXLocator *locator)
 {
     return S_OK;
 }
 
-static HRESULT WINAPI msxsl_script_site_OnLeaveScript(IActiveScriptSite *iface)
+static HRESULT WINAPI parse_content_handler_startDocument(ISAXContentHandler *iface)
 {
     return S_OK;
 }
 
-static const IActiveScriptSiteVtbl msxsl_script_site_vtbl =
-{
-    msxsl_script_site_QueryInterface,
-    msxsl_script_site_AddRef,
-    msxsl_script_site_Release,
-    msxsl_script_site_GetLCID,
-    msxsl_script_site_GetItemInfo,
-    msxsl_script_site_GetDocVersionString,
-    msxsl_script_site_OnScriptTerminate,
-    msxsl_script_site_OnStateChange,
-    msxsl_script_site_OnScriptError,
-    msxsl_script_site_OnEnterScript,
-    msxsl_script_site_OnLeaveScript
-};
-
-static HRESULT WINAPI msxsl_script_site_servprov_QueryInterface(IServiceProvider *iface, REFIID riid, void **obj)
+static HRESULT WINAPI parse_content_handler_endDocument(ISAXContentHandler *iface)
 {
-    struct msxsl_script_site *site = impl_from_IServiceProvider(iface);
-    return IActiveScriptSite_QueryInterface(&site->IActiveScriptSite_iface, riid, obj);
+    return S_OK;
 }
 
-static ULONG WINAPI msxsl_script_site_servprov_AddRef(IServiceProvider *iface)
+static HRESULT WINAPI parse_content_handler_startPrefixMapping(ISAXContentHandler *iface,
+        const WCHAR *prefix, int prefix_len, const WCHAR *uri, int uri_len)
 {
-    struct msxsl_script_site *site = impl_from_IServiceProvider(iface);
-    return IActiveScriptSite_AddRef(&site->IActiveScriptSite_iface);
+    return S_OK;
 }
 
-static ULONG WINAPI msxsl_script_site_servprov_Release(IServiceProvider *iface)
+static HRESULT WINAPI parse_content_handler_endPrefixMapping(ISAXContentHandler *iface,
+        const WCHAR *prefix, int prefix_len)
 {
-    struct msxsl_script_site *site = impl_from_IServiceProvider(iface);
-    return IActiveScriptSite_Release(&site->IActiveScriptSite_iface);
+    return S_OK;
 }
 
-static HRESULT WINAPI msxsl_script_site_servprov_QueryService(IServiceProvider *iface,
-        REFGUID service, REFIID riid, void **obj)
+static HRESULT WINAPI parse_content_handler_startElement(ISAXContentHandler *iface, const WCHAR *uri, int uri_len,
+        const WCHAR *name, int name_len, const WCHAR *qname, int qname_len, ISAXAttributes *attrs)
 {
-    struct msxsl_script_site *site = impl_from_IServiceProvider(iface);
-
-    if (site->provider)
-        return IServiceProvider_QueryService(site->provider, service, riid, obj);
+    struct parse_context *c = impl_from_ISAXContentHandler(iface);
+    struct domnode *element, *attr;
+    int count, length;
+    const WCHAR *str;
 
-    *obj = NULL;
-    return E_NOINTERFACE;
-}
+    parse_context_create_text_node(c, NODE_TEXT);
+    parse_context_node_create(c, NODE_ELEMENT, qname, qname_len, uri, uri_len, c->root, &element);
+    parse_context_append_child(c, c->node, element);
+    c->node = element;
 
-static const IServiceProviderVtbl msxsl_script_site_servprov_vtbl =
-{
-    msxsl_script_site_servprov_QueryInterface,
-    msxsl_script_site_servprov_AddRef,
-    msxsl_script_site_servprov_Release,
-    msxsl_script_site_servprov_QueryService,
-};
+    /* TODO: error handling */
 
-static HRESULT msxsl_create_script_site(IXMLDOMDocument *doc, IActiveScriptSite **obj)
-{
-    struct msxsl_script_site *object;
-    IServiceProvider *provider = NULL;
-    IObjectWithSite *ows;
-    HRESULT hr;
+    if (attrs)
+    {
+        ISAXAttributes_getLength(attrs, &count);
 
-    if (FAILED(hr = IXMLDOMDocument_QueryInterface(doc, &IID_IObjectWithSite, (void **)&ows)))
-        return hr;
+        for (int i = 0; i < count; ++i)
+        {
+            ISAXAttributes_getQName(attrs, i, &str, &length);
+            ISAXAttributes_getURI(attrs, i, &uri, &uri_len);
 
-    IObjectWithSite_GetSite(ows, &IID_IServiceProvider, (void **)&provider);
-    IObjectWithSite_Release(ows);
+            parse_context_node_create(c, NODE_ATTRIBUTE, str, length, uri, uri_len, c->root, &attr);
+            parse_context_append_attribute(c, element, attr);
 
-    object = calloc(1, sizeof(*object));
-    object->IActiveScriptSite_iface.lpVtbl = &msxsl_script_site_vtbl;
-    object->IServiceProvider_iface.lpVtbl = &msxsl_script_site_servprov_vtbl;
-    object->refcount = 1;
-    object->provider = provider;
+            ISAXAttributes_getValue(attrs, i, &str, &length);
+            parse_context_node_put_data(c, attr, str, length);
 
-    *obj = &object->IActiveScriptSite_iface;
+            if (attr && is_namespace_definition(attr))
+                attr->flags |= DOMNODE_READONLY_VALUE;
+        }
+    }
 
-    return S_OK;
+    return c->status;
 }
 
-static void node_transform_bind_scripts(xsltTransformContextPtr ctxt, IXMLDOMDocument *owner_doc,
-        xmlDocPtr sheet, struct xsl_scripts *scripts)
+static HRESULT WINAPI parse_content_handler_endElement(ISAXContentHandler *iface, const WCHAR *uri, int uri_len,
+        const WCHAR *name, int name_len, const WCHAR *qname, int qname_len)
 {
-    IActiveScriptSite *script_site;
-    xmlNodePtr root, child, node;
-    DWORD supported, enabled = 0;
-    IObjectSafety *object_safety;
-    xmlNsPtr ns;
+    struct parse_context *c = impl_from_ISAXContentHandler(iface);
 
-    IXMLDOMDocument_QueryInterface(owner_doc, &IID_IObjectSafety, (void **)&object_safety);
-    IObjectSafety_GetInterfaceSafetyOptions(object_safety, NULL, &supported, &enabled);
-    IObjectSafety_Release(object_safety);
+    parse_context_create_text_node(c, NODE_TEXT);
+    c->node = c->node->parent;
 
-    if (FAILED(msxsl_create_script_site(owner_doc, &script_site)))
-        return;
+    return c->status;
+}
 
-    root = xmlDocGetRootElement(sheet);
-    for (node = root->children; node; node = node->next)
-    {
-        if (xmlStrEqual(node->name, BAD_CAST "script")
-                && node->ns
-                && xmlStrEqual(node->ns->prefix, BAD_CAST "msxsl")
-                && xmlStrEqual(node->ns->href, BAD_CAST "urn:schemas-microsoft-com:xslt"))
-        {
-             child = node->children;
+static HRESULT WINAPI parse_content_handler_characters(ISAXContentHandler *iface, const WCHAR *chars, int count)
+{
+    struct parse_context *c = impl_from_ISAXContentHandler(iface);
 
-             if (child && child->type == XML_CDATA_SECTION_NODE)
-             {
-                 IActiveScript *active_script;
-                 xmlChar *language, *prefix;
-                 IActiveScriptParse *parser;
-                 TYPEATTR *typeattr;
-                 BSTR text, progid;
-                 IDispatch *disp;
-                 ITypeInfo *ti;
-                 CLSID clsid;
-                 HRESULT hr;
+    string_append(&c->buffer, chars, count);
 
-                 if (!(prefix = xmlGetProp(node, BAD_CAST "implements-prefix")))
-                 {
-                     WARN("<msxsl:script> without 'implements-prefix'.\n");
-                     continue;
-                 }
+    return c->status;
+}
 
-                 if (!(ns = xmlSearchNs(sheet, node, prefix)))
-                 {
-                     WARN("Couldn't locate script element namespace for \"%s\".\n", debugstr_a((char *)prefix));
-                     continue;
-                 }
+static HRESULT WINAPI parse_content_handler_ignorableWhitespace(ISAXContentHandler *iface, const WCHAR *chars, int count)
+{
+    return S_OK;
+}
 
-                 if (!(language = xmlGetProp(node, BAD_CAST "language")))
-                     language = BAD_CAST "javascript";
+static HRESULT WINAPI parse_content_handler_processingInstruction(ISAXContentHandler *iface, const WCHAR *target,
+        int target_len, const WCHAR *data, int data_len)
+{
+    struct parse_context *c = impl_from_ISAXContentHandler(iface);
+    struct domnode *pi;
 
-                 progid = bstr_from_xmlChar(language);
-                 if (FAILED(hr = CLSIDFromProgID(progid, &clsid)))
-                     WARN("Unknown engine progid %s.\n", debugstr_w(progid));
-                 SysFreeString(progid);
-                 if (FAILED(hr))
-                     return;
+    parse_context_create_text_node(c, NODE_TEXT);
+    parse_context_node_create(c, NODE_PROCESSING_INSTRUCTION, target, target_len, NULL, 0, c->root, &pi);
+    parse_context_append_child(c, c->node, pi);
+    parse_context_node_put_data(c, pi, data, data_len);
 
-                 if (FAILED(hr = CoCreateInstance(&clsid, NULL, CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER,
-                         &IID_IActiveScript, (void **)&active_script)))
-                 {
-                     WARN("Failed to create a script engine instance, hr %#lx.\n", hr);
-                     continue;
-                 }
+    return c->status;
+}
 
-                 IActiveScript_QueryInterface(active_script, &IID_IObjectSafety, (void **)&object_safety);
-                 IObjectSafety_SetInterfaceSafetyOptions(object_safety, NULL, enabled, enabled);
-                 IObjectSafety_Release(object_safety);
+static HRESULT WINAPI parse_content_handler_skippedEntity(ISAXContentHandler *iface, const WCHAR *name, int name_len)
+{
+    return S_OK;
+}
 
-                 IActiveScript_QueryInterface(active_script, &IID_IActiveScriptParse, (void **)&parser);
-                 IActiveScript_SetScriptSite(active_script, script_site);
-                 IActiveScriptParse_InitNew(parser);
-                 IActiveScript_SetScriptState(active_script, SCRIPTSTATE_STARTED);
+static const ISAXContentHandlerVtbl parse_content_handler_vtbl =
+{
+    parse_content_handler_QueryInterface,
+    parse_content_handler_AddRef,
+    parse_content_handler_Release,
+    parse_content_handler_putDocumentLocator,
+    parse_content_handler_startDocument,
+    parse_content_handler_endDocument,
+    parse_content_handler_startPrefixMapping,
+    parse_content_handler_endPrefixMapping,
+    parse_content_handler_startElement,
+    parse_content_handler_endElement,
+    parse_content_handler_characters,
+    parse_content_handler_ignorableWhitespace,
+    parse_content_handler_processingInstruction,
+    parse_content_handler_skippedEntity,
+};
 
-                 text = bstr_from_xmlChar(child->content);
-                 hr = IActiveScriptParse_ParseScriptText(parser, text, NULL, NULL, NULL, 0, 0, 0, NULL, NULL);
-                 IActiveScriptParse_Release(parser);
-                 SysFreeString(text);
-                 if (FAILED(hr))
-                 {
-                     WARN("Failed to parse script for the namespace %s, hr %#lx.\n", prefix, hr);
-                     IActiveScript_Release(active_script);
-                     continue;
-                 }
+static HRESULT WINAPI parse_extension_handler_QueryInterface(ISAXExtensionHandler *iface, REFIID riid, void **obj)
+{
+    if (IsEqualGUID(riid, &IID_ISAXExtensionHandler)
+            || IsEqualGUID(riid, &IID_IUnknown))
+    {
+        *obj = iface;
+        ISAXExtensionHandler_AddRef(iface);
+        return S_OK;
+    }
 
-                 IActiveScript_GetScriptDispatch(active_script, NULL, &disp);
-                 IDispatch_GetTypeInfo(disp, 0, LOCALE_USER_DEFAULT, &ti);
+    *obj = NULL;
+    return E_NOINTERFACE;
+}
 
-                 ITypeInfo_GetTypeAttr(ti, &typeattr);
+static ULONG WINAPI parse_extension_handler_AddRef(ISAXExtensionHandler *iface)
+{
+    return 2;
+}
 
-                 for (int i = 0; i < typeattr->cFuncs; ++i)
-                 {
-                     FUNCDESC *funcdesc;
-                     xmlChar *func_name;
-                     BSTR name;
+static ULONG WINAPI parse_extension_handler_Release(ISAXExtensionHandler *iface)
+{
+    return 1;
+}
 
-                     ITypeInfo_GetFuncDesc(ti, i, &funcdesc);
-                     ITypeInfo_GetDocumentation(ti, funcdesc->memid, &name, NULL, NULL, NULL);
-                     func_name = xmlchar_from_wchar(name);
+static HRESULT WINAPI parse_extension_handler_xmldecl(ISAXExtensionHandler *iface,
+        BSTR version, BSTR encoding, BSTR standalone)
+{
+    struct parse_context *c = impl_from_ISAXExtensionHandler(iface);
+    struct domnode *pi, *node;
 
-                     xsltRegisterExtFunction(ctxt, func_name, ns->href, xpath_msxsl_script_function);
+    parse_context_node_create(c, NODE_PROCESSING_INSTRUCTION, L"xml", 3, NULL, 0, c->root, &pi);
+    parse_context_append_child(c, c->root, pi);
 
-                     SysFreeString(name);
-                     free(func_name);
-                 }
+    parse_context_node_create(c, NODE_ATTRIBUTE, L"version", 7, NULL, 0, c->root, &node);
 
-                 IDispatch_Release(disp);
-                 ITypeInfo_Release(ti);
+    parse_context_node_put_data(c, node, version, SysStringLen(version));
+    parse_context_append_attribute(c, pi, node);
 
-                 array_reserve((void **)&scripts->entries, &scripts->capacity, scripts->count + 1, sizeof(*scripts->entries));
+    if (encoding)
+    {
+        parse_context_node_create(c, NODE_ATTRIBUTE, L"encoding", 8, NULL, 0, c->root, &node);
+        parse_context_node_put_data(c, node, encoding, SysStringLen(encoding));
+        parse_context_append_attribute(c, pi, node);
+    }
 
-                 scripts->entries[scripts->count].script = active_script;
-                 scripts->entries[scripts->count].uri = ns->href;
-                 scripts->count++;
-             }
-        }
+    if (standalone)
+    {
+        parse_context_node_create(c, NODE_ATTRIBUTE, L"standalone", 10, NULL, 0, c->root, &node);
+        parse_context_node_put_data(c, node, standalone, SysStringLen(standalone));
+        parse_context_append_attribute(c, pi, node);
     }
 
-    IActiveScriptSite_Release(script_site);
+    return c->status;
 }
 
-HRESULT node_transform_node_params(const xmlnode *This, IXMLDOMNode *stylesheet, BSTR *p,
-    ISequentialStream *stream, const struct xslprocessor_params *params)
+static HRESULT WINAPI parse_extension_handler_dtd(ISAXExtensionHandler *iface, BSTR data)
 {
-    IXMLDOMDocument *owner_doc;
-    xsltStylesheetPtr xsltSS;
-    xmlDocPtr sheet_doc;
-    HRESULT hr = S_OK;
-    xmlnode *sheet;
+    struct parse_context *c = impl_from_ISAXExtensionHandler(iface);
 
-    if (!stylesheet || (!p && !stream)) return E_INVALIDARG;
+    if (c->node && c->node->type == NODE_DOCUMENT_TYPE)
+    {
+        if (!(c->node->data = SysAllocStringLen(data, SysStringLen(data))))
+            c->status = E_OUTOFMEMORY;
+    }
 
-    if (p) *p = NULL;
+    return c->status;
+}
 
-    sheet = get_node_obj(stylesheet);
-    if(!sheet) return E_FAIL;
+static const ISAXExtensionHandlerVtbl parse_extension_handler_vtbl =
+{
+    parse_extension_handler_QueryInterface,
+    parse_extension_handler_AddRef,
+    parse_extension_handler_Release,
+    parse_extension_handler_xmldecl,
+    parse_extension_handler_dtd,
+};
 
-    if (FAILED(IXMLDOMNode_QueryInterface(stylesheet, &IID_IXMLDOMDocument, (void **)&owner_doc)))
-    {
-        if (FAILED(hr = IXMLDOMNode_get_ownerDocument(stylesheet, &owner_doc)))
-            return hr;
-    }
+static struct parse_context *impl_from_ISAXLexicalHandler(ISAXLexicalHandler *iface)
+{
+    return CONTAINING_RECORD(iface, struct parse_context, lexical_handler);
+}
 
-    sheet_doc = xmlCopyDoc(sheet->node->doc, 1);
-    xsltSS = xsltParseStylesheetDoc(sheet_doc);
-    if (xsltSS)
+static HRESULT WINAPI parse_lexical_handler_QueryInterface(ISAXLexicalHandler *iface, REFIID riid, void **obj)
+{
+    if (IsEqualGUID(riid, &IID_ISAXLexicalHandler)
+            || IsEqualGUID(riid, &IID_IUnknown))
     {
-        struct xsl_scripts scripts = { 0 };
-        const char **xslparams = NULL;
-        xsltTransformContextPtr ctxt;
-        xmlDocPtr result;
-        unsigned int i;
+        *obj = iface;
+        ISAXLexicalHandler_AddRef(iface);
+        return S_OK;
+    }
 
-        /* convert our parameter list to libxml2 format */
-        if (params && params->count)
-        {
-            struct xslprocessor_par *par;
+    *obj = NULL;
+    return E_NOINTERFACE;
+}
 
-            i = 0;
-            xslparams = malloc((params->count * 2 + 1) * sizeof(char*));
-            LIST_FOR_EACH_ENTRY(par, &params->list, struct xslprocessor_par, entry)
-            {
-                xslparams[i++] = (char*)xmlchar_from_wchar(par->name);
-                xslparams[i++] = (char*)xmlchar_from_wchar(par->value);
-            }
-            xslparams[i] = NULL;
-        }
+static ULONG WINAPI parse_lexical_handler_AddRef(ISAXLexicalHandler *iface)
+{
+    return 2;
+}
 
-        ctxt = xsltNewTransformContext(xsltSS, This->node->doc);
+static ULONG WINAPI parse_lexical_handler_Release(ISAXLexicalHandler *iface)
+{
+    return 1;
+}
 
-        node_transform_bind_scripts(ctxt, owner_doc, sheet_doc, &scripts);
-        ctxt->userData = &scripts;
+static HRESULT WINAPI parse_lexical_handler_startDTD(ISAXLexicalHandler *iface,
+        const WCHAR *name, int name_len, const WCHAR *pubid, int pubid_len,
+        const WCHAR *sysid, int sysid_len)
+{
+    struct parse_context *c = impl_from_ISAXLexicalHandler(iface);
+    struct domnode *dtd;
 
-        if (xslparams)
-        {
-            /* push parameters to user context */
-            xsltQuoteUserParams(ctxt, xslparams);
-            result = xsltApplyStylesheetUser(xsltSS, This->node->doc, NULL, NULL, NULL, ctxt);
+    parse_context_node_create(c, NODE_DOCUMENT_TYPE, name, name_len, NULL, 0, c->root, &dtd);
+    parse_context_append_child(c, c->root, dtd);
+    c->node = dtd;
 
-            for (i = 0; i < params->count*2; i++)
-                free((char*)xslparams[i]);
-            free(xslparams);
-        }
-        else
-        {
-            result = xsltApplyStylesheetUser(xsltSS, This->node->doc, NULL, NULL, NULL, ctxt);
-        }
+    return c->status;
+}
 
-        for (size_t i = 0; i < scripts.count; ++i)
-        {
-            if (scripts.entries[i].script)
-                IActiveScript_Release(scripts.entries[i].script);
-        }
-        free(scripts.entries);
+static HRESULT WINAPI parse_lexical_handler_endDTD(ISAXLexicalHandler *iface)
+{
+    struct parse_context *c = impl_from_ISAXLexicalHandler(iface);
 
-        ctxt->userData = NULL;
-        xsltFreeTransformContext(ctxt);
+    if (c->node)
+        c->node = c->node->parent;
 
-        if (result)
-        {
-            if (stream)
-                hr = node_transform_write_to_stream(xsltSS, result, stream);
-            else
-                hr = node_transform_write_to_bstr(xsltSS, result, p);
-            xmlFreeDoc(result);
-        }
+    return S_OK;
+}
 
-        xsltFreeStylesheet(xsltSS);
-    }
-    else
-        xmlFreeDoc(sheet_doc);
+static HRESULT WINAPI parse_lexical_handler_startEntity(ISAXLexicalHandler *iface,
+        const WCHAR *name, int name_len)
+{
+    return S_OK;
+}
 
-    if (p && !*p) *p = SysAllocStringLen(NULL, 0);
+static HRESULT WINAPI parse_lexical_handler_endEntity(ISAXLexicalHandler *iface,
+        const WCHAR *name, int name_len)
+{
+    return S_OK;
+}
 
-    IXMLDOMDocument_Release(owner_doc);
+static HRESULT WINAPI parse_lexical_handler_startCDATA(ISAXLexicalHandler *iface)
+{
+    struct parse_context *c = impl_from_ISAXLexicalHandler(iface);
+    return parse_context_create_text_node(c, NODE_TEXT);
+}
 
-    return hr;
+static HRESULT WINAPI parse_lexical_handler_endCDATA(ISAXLexicalHandler *iface)
+{
+    struct parse_context *c = impl_from_ISAXLexicalHandler(iface);
+    return parse_context_create_text_node(c, NODE_CDATA_SECTION);
 }
 
-HRESULT node_transform_node(const xmlnode *node, IXMLDOMNode *stylesheet, BSTR *p)
+static HRESULT WINAPI parse_lexical_handler_comment(ISAXLexicalHandler *iface, const WCHAR *chars, int count)
 {
-    return node_transform_node_params(node, stylesheet, p, NULL, NULL);
+    struct parse_context *c = impl_from_ISAXLexicalHandler(iface);
+    struct domnode *comment;
+
+    parse_context_create_text_node(c, NODE_TEXT);
+    parse_context_node_create(c, NODE_COMMENT, NULL, 0, NULL, 0, c->root, &comment);
+    parse_context_append_child(c, c->node, comment);
+    parse_context_node_put_data(c, comment, chars, count);
+
+    return c->status;
 }
 
-HRESULT node_select_nodes(const xmlnode *This, BSTR query, IXMLDOMNodeList **nodes)
+static const ISAXLexicalHandlerVtbl parse_lexical_handler_vtbl =
+{
+    parse_lexical_handler_QueryInterface,
+    parse_lexical_handler_AddRef,
+    parse_lexical_handler_Release,
+    parse_lexical_handler_startDTD,
+    parse_lexical_handler_endDTD,
+    parse_lexical_handler_startEntity,
+    parse_lexical_handler_endEntity,
+    parse_lexical_handler_startCDATA,
+    parse_lexical_handler_endCDATA,
+    parse_lexical_handler_comment,
+};
+
+struct domdoc_properties *domdoc_create_properties(MSXML_VERSION version);
+
+static HRESULT parse_context_init(struct parse_context *c, const struct domdoc_properties *properties)
 {
-    xmlChar* str;
+    IUnknown *unk;
     HRESULT hr;
+    VARIANT v;
+
+    memset(c, 0, sizeof(*c));
+    c->content_handler.lpVtbl = &parse_content_handler_vtbl;
+    c->extension_handler.lpVtbl = &parse_extension_handler_vtbl;
+    c->lexical_handler.lpVtbl = &parse_lexical_handler_vtbl;
+    c->buffer.status = &c->status;
+
+    if (FAILED(hr = SAXXMLReader_create(MSXML3, (void **)&unk)))
+        return hr;
+
+    IUnknown_QueryInterface(unk, &IID_ISAXXMLReader, (void **)&c->reader);
+    IUnknown_QueryInterface(unk, &IID_ISAXXMLReaderExtension, (void **)&c->reader_extension);
+    IUnknown_Release(unk);
+
+    ISAXXMLReader_putContentHandler(c->reader, &c->content_handler);
+
+    V_VT(&v) = VT_UNKNOWN;
+    V_UNKNOWN(&v) = (IUnknown *)&c->lexical_handler;
+    ISAXXMLReader_putProperty(c->reader, L"http://xml.org/sax/properties/lexical-handler", v);
 
-    if (!query || !nodes) return E_INVALIDARG;
+    V_VT(&v) = VT_UNKNOWN;
+    V_UNKNOWN(&v) = (IUnknown *)&c->extension_handler;
+    ISAXXMLReader_putProperty(c->reader, L"http://winehq.org/sax/properties/extension-handler", v);
 
-    str = xmlchar_from_wchar(query);
-    hr = create_selection(This->node, str, nodes);
-    free(str);
+    ISAXXMLReader_putFeature(c->reader, L"prohibit-dtd", properties->prohibit_dtd ? VARIANT_TRUE : VARIANT_FALSE);
+
+    domnode_create(NODE_DOCUMENT, NULL, 0, NULL, 0, NULL, &c->root);
+    c->root->properties = domdoc_create_properties(MSXML_DEFAULT);
+    c->root->properties->preserving = properties->preserving;
+    c->node = c->root;
 
     return hr;
 }
 
-HRESULT node_select_singlenode(const xmlnode *This, BSTR query, IXMLDOMNode **node)
+static void parse_context_cleanup(struct parse_context *c)
 {
-    IXMLDOMNodeList *list;
+    free(c->buffer.data);
+    if (c->reader)
+        ISAXXMLReader_Release(c->reader);
+    if (c->reader_extension)
+        ISAXXMLReaderExtension_Release(c->reader_extension);
+}
+
+HRESULT parse_stream(ISequentialStream *stream, bool utf16, const struct domdoc_properties *properties, struct domnode **tree)
+{
+    struct parse_context context;
     HRESULT hr;
+    VARIANT v;
+
+    *tree = NULL;
+
+    if (FAILED(hr = parse_context_init(&context, properties)))
+        return hr;
 
-    if (node)
-        *node = NULL;
+    if (utf16)
+    {
+        hr = ISAXXMLReaderExtension_parseUTF16(context.reader_extension, stream);
+    }
+    else
+    {
+        V_VT(&v) = VT_UNKNOWN;
+        V_UNKNOWN(&v) = (IUnknown *)stream;
+        hr = ISAXXMLReader_parse(context.reader, v);
+    }
 
-    hr = node_select_nodes(This, query, &list);
     if (hr == S_OK)
     {
-        hr = IXMLDOMNodeList_nextNode(list, node);
-        IXMLDOMNodeList_Release(list);
+        *tree = context.root;
+        context.root = NULL;
     }
+
+    parse_context_cleanup(&context);
+
     return hr;
 }
 
-HRESULT node_get_namespaceURI(xmlnode *This, BSTR *namespaceURI)
+struct xmldoc_context
 {
-    xmlNsPtr ns = This->node->ns;
+    xmlDocPtr xmldoc;
+    struct domnode *node;
+    xmlNodePtr *xmlnode;
+    xmlNodePtr tree;
+};
+
+static xmlNsPtr xmlnode_get_ns(xmlNodePtr tree, struct domnode *node, xmlNodePtr element)
+{
+    xmlChar *uri, *prefix;
+    xmlNsPtr ns;
 
-    if(!namespaceURI)
-        return E_INVALIDARG;
+    if (!node->uri)
+        return NULL;
 
-    *namespaceURI = NULL;
+    uri = xmlchar_from_wchar(node->uri);
+    prefix = node->prefix ? xmlchar_from_wchar(node->prefix) : NULL;
 
-    if (ns && ns->href)
-        *namespaceURI = bstr_from_xmlChar(ns->href);
+    if ((ns = xmlSearchNs(tree->doc, element, prefix)))
+    {
+        if (!xmlStrEqual(ns->href, uri))
+            ns = xmlNewNs(element, uri, prefix);
+    }
+    else
+    {
+        ns = xmlNewNs(element, uri, prefix);
+    }
 
-    TRACE("uri: %s\n", debugstr_w(*namespaceURI));
+    free(uri);
+    free(prefix);
 
-    return *namespaceURI ? S_OK : S_FALSE;
+    return ns;
 }
 
-HRESULT node_get_prefix(xmlnode *This, BSTR *prefix)
+static xmlNodePtr create_xmlnode_element(struct xmldoc_context *context, struct domnode *node)
 {
-    xmlNsPtr ns = This->node->ns;
+    xmlChar *name, *value, *uri, *prefix;
+    struct domnode *attr;
+    xmlNodePtr xmlnode;
+    xmlAttrPtr xmlattr;
+    xmlNsPtr ns;
+    BSTR text;
 
-    if (!prefix) return E_INVALIDARG;
+    name = xmlchar_from_wchar(node->name);
+    xmlnode = xmlNewDocNode(context->xmldoc, NULL, name, NULL);
+    xmlAddChild(context->tree, xmlnode);
+    free(name);
 
-    *prefix = NULL;
+    ns = xmlnode_get_ns(context->tree, node, xmlnode);
+    xmlSetNs(xmlnode, ns);
 
-    if (ns && ns->prefix)
-        *prefix = bstr_from_xmlChar(ns->prefix);
+    /* Add explicit definitions first. */
+    LIST_FOR_EACH_ENTRY(attr, &node->attributes, struct domnode, entry)
+    {
+        if ((attr->prefix && !wcscmp(attr->prefix, L"xmlns"))
+                || !wcscmp(attr->qname, L"xmlns"))
+        {
+            node_get_text(attr, &text);
+            uri = xmlchar_from_wchar(text);
+            prefix = wcscmp(attr->qname, L"xmlns") ? xmlchar_from_wchar(attr->name) : NULL;
 
-    TRACE("prefix: %s\n", debugstr_w(*prefix));
+            xmlNewNs(xmlnode, uri, prefix);
 
-    return *prefix ? S_OK : S_FALSE;
-}
+            SysFreeString(text);
+            free(prefix);
+            free(uri);
+        }
+    }
 
-HRESULT node_get_base_name(xmlnode *This, BSTR *name)
-{
-    if (!name) return E_INVALIDARG;
+    LIST_FOR_EACH_ENTRY(attr, &node->attributes, struct domnode, entry)
+    {
+        if ((attr->prefix && !wcscmp(attr->prefix, L"xmlns"))
+                || !wcscmp(attr->qname, L"xmlns"))
+        {
+            continue;
+        }
 
-    if (xmldoc_version(This->node->doc) != MSXML6 &&
-        xmlStrEqual(This->node->name, BAD_CAST "xmlns"))
-        *name = SysAllocString(L"");
-    else
-        *name = bstr_from_xmlChar(This->node->name);
-    if (!*name) return E_OUTOFMEMORY;
+        node_get_text(attr, &text);
 
-    TRACE("returning %s\n", debugstr_w(*name));
+        name = xmlchar_from_wchar(attr->name);
+        value = xmlchar_from_wchar(text);
 
-    return S_OK;
-}
+        ns = xmlnode_get_ns(xmlnode, attr, xmlnode);
+        xmlattr = xmlNewProp(xmlnode, name, value);
+        xmlattr->_private2 = attr;
+        xmlSetNs((xmlNodePtr)xmlattr, ns);
 
-void destroy_xmlnode(xmlnode *This)
-{
-    if(This->node)
-    {
-        xmlnode_release(This->node);
-        xmldoc_release(This->node->doc);
+        if (context->node == attr)
+            *context->xmlnode = (xmlNodePtr)xmlattr;
+
+        SysFreeString(text);
+        free(value);
+        free(name);
     }
+
+    return xmlnode;
 }
 
-void init_xmlnode(xmlnode *This, xmlNodePtr node, IXMLDOMNode *node_iface, dispex_static_data_t *dispex_data)
+static xmlDtdPtr create_xmldtd_from_domnode(struct domnode *node)
 {
-    if(node)
-    {
-        xmlnode_add_ref(node);
-        xmldoc_add_ref(node->doc);
-    }
+    struct string_buffer buffer;
+    xmlDtdPtr dtd = NULL;
+    xmlDocPtr doc;
+    BSTR str;
 
-    This->node = node;
-    This->iface = node_iface;
-    This->parent = NULL;
+    string_buffer_init(&buffer);
 
-    init_dispex(&This->dispex, (IUnknown*)This->iface, dispex_data);
-}
+    string_append(&buffer, L"<?xml version=\"1.0\"?>", 21);
+    string_append(&buffer, node->data, SysStringLen(node->data));
+    string_append(&buffer, L"<a/>", 4);
+    string_to_bstr(&buffer, &str);
 
-typedef struct {
-    xmlnode node;
-    IXMLDOMNode IXMLDOMNode_iface;
-    LONG ref;
-} unknode;
+    doc = xmlParseMemory((const char *)str, SysStringByteLen(str));
+    SysFreeString(str);
 
-static inline unknode *unknode_from_IXMLDOMNode(IXMLDOMNode *iface)
-{
-    return CONTAINING_RECORD(iface, unknode, IXMLDOMNode_iface);
+    if ((dtd = xmlGetIntSubset(doc)))
+        dtd = xmlCopyDtd(dtd);
+    xmlFreeDoc(doc);
+
+    return dtd;
 }
 
-static HRESULT WINAPI unknode_QueryInterface(
-    IXMLDOMNode *iface,
-    REFIID riid,
-    void** ppvObject )
+static xmlNodePtr create_xmlnode_from_domnode(struct xmldoc_context *context, struct domnode *node)
 {
-    unknode *This = unknode_from_IXMLDOMNode( iface );
+    xmlNodePtr xmlnode = NULL, old_tree;
+    xmlChar *name, *data;
+    struct domnode *n;
+    xmlDtdPtr dtd;
 
-    TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppvObject);
+    name = node->name ? xmlchar_from_wchar(node->name) : NULL;
+    data = node->data ? xmlchar_from_wchar(node->data) : NULL;
 
-    if (IsEqualGUID(riid, &IID_IUnknown)) {
-        *ppvObject = iface;
-    }else if (IsEqualGUID( riid, &IID_IDispatch) ||
-              IsEqualGUID( riid, &IID_IXMLDOMNode)) {
-        *ppvObject = &This->IXMLDOMNode_iface;
-    }else if(node_query_interface(&This->node, riid, ppvObject)) {
-        return *ppvObject ? S_OK : E_NOINTERFACE;
-    }else  {
-        FIXME("interface %s not implemented\n", debugstr_guid(riid));
-        *ppvObject = NULL;
-        return E_NOINTERFACE;
+    switch (node->type)
+    {
+        case NODE_ELEMENT:
+            xmlnode = create_xmlnode_element(context, node);
+            break;
+        case NODE_COMMENT:
+            xmlnode = xmlNewDocComment(context->xmldoc, data);
+            xmlAddChild(context->tree, xmlnode);
+            break;
+        case NODE_TEXT:
+            xmlnode = xmlNewDocText(context->xmldoc, data);
+            xmlAddChild(context->tree, xmlnode);
+            break;
+        case NODE_PROCESSING_INSTRUCTION:
+            xmlnode = xmlNewDocPI(context->xmldoc, name, data);
+            xmlAddChild(context->tree, xmlnode);
+            break;
+        case NODE_CDATA_SECTION:
+            xmlnode = xmlNewCDataBlock(context->xmldoc, data, xmlStrlen(data));
+            xmlAddChild(context->tree, xmlnode);
+            break;
+        case NODE_DOCUMENT_TYPE:
+            dtd = create_xmldtd_from_domnode(node);
+            context->xmldoc->intSubset = dtd;
+            break;
+        default:
+            FIXME("Not supported for node type %d.\n", node->type);
+            break;
     }
 
-    IUnknown_AddRef((IUnknown*)*ppvObject);
-    return S_OK;
-}
+    free(name);
+    free(data);
 
-static ULONG WINAPI unknode_AddRef(
-    IXMLDOMNode *iface )
-{
-    unknode *This = unknode_from_IXMLDOMNode( iface );
+    if (!xmlnode)
+        return NULL;
 
-    return InterlockedIncrement(&This->ref);
-}
+    xmlnode->_private2 = node;
 
-static ULONG WINAPI unknode_Release(
-    IXMLDOMNode *iface )
-{
-    unknode *This = unknode_from_IXMLDOMNode( iface );
-    LONG ref;
+    if (context->node == node)
+        *context->xmlnode = xmlnode;
 
-    ref = InterlockedDecrement( &This->ref );
-    if(!ref) {
-        destroy_xmlnode(&This->node);
-        free(This);
+    old_tree = context->tree;
+    if (node->type == NODE_ELEMENT) context->tree = xmlnode;
+    LIST_FOR_EACH_ENTRY(n, &node->children, struct domnode, entry)
+    {
+        create_xmlnode_from_domnode(context, n);
     }
+    context->tree = old_tree;
 
-    return ref;
+    return xmlnode;
 }
 
-static HRESULT WINAPI unknode_GetTypeInfoCount(
-    IXMLDOMNode *iface,
-    UINT* pctinfo )
+/* Create a whole libxml document tree, return pointer to corresponding node as well */
+xmlDocPtr create_xmldoc_from_domdoc(struct domnode *node, xmlNodePtr *xmlnode)
 {
-    unknode *This = unknode_from_IXMLDOMNode( iface );
+    struct xmldoc_context context = { 0 };
+    struct domnode *n, *doc;
+    xmlDocPtr xmldoc;
 
-    TRACE("(%p)->(%p)\n", This, pctinfo);
+    *xmlnode = NULL;
 
-    *pctinfo = 1;
+    doc = node->owner ? node->owner : node;
+    xmldoc = xmlNewDoc(NULL);
+    xmldoc->_private2 = doc;
 
-    return S_OK;
-}
+    context.xmldoc = xmldoc;
+    context.node = node;
+    context.xmlnode = xmlnode;
 
-static HRESULT WINAPI unknode_GetTypeInfo(
-    IXMLDOMNode *iface,
-    UINT iTInfo,
-    LCID lcid,
-    ITypeInfo** ppTInfo )
-{
-    TRACE("%p, %u, %lx, %p.\n", iface, iTInfo, lcid, ppTInfo);
+    if (node == doc)
+        *context.xmlnode = (xmlNodePtr)xmldoc;
+
+    context.tree = (xmlNodePtr)xmldoc;
+    LIST_FOR_EACH_ENTRY(n, &doc->children, struct domnode, entry)
+    {
+        create_xmlnode_from_domnode(&context, n);
+    }
 
-    return get_typeinfo(IXMLDOMNode_tid, ppTInfo);
+    return xmldoc;
 }
 
-static HRESULT WINAPI unknode_GetIDsOfNames(
-    IXMLDOMNode *iface,
-    REFIID riid,
-    LPOLESTR* rgszNames,
-    UINT cNames,
-    LCID lcid,
-    DISPID* rgDispId )
+HRESULT node_save(struct domnode *doc, IStream *stream)
 {
-    ITypeInfo *typeinfo;
-    HRESULT hr;
-
-    TRACE("%p, %s, %p, %u, %lx, %p.\n", iface, debugstr_guid(riid), rgszNames, cNames,
-          lcid, rgDispId);
+    struct node_dump_context context = { 0 };
+    struct domnode *child, *attr, *node;
+    const WCHAR *encoding = NULL;
+    UINT codepage;
 
-    if(!rgszNames || cNames == 0 || !rgDispId)
-        return E_INVALIDARG;
+    assert(doc->type == NODE_DOCUMENT);
 
-    hr = get_typeinfo(IXMLDOMNode_tid, &typeinfo);
-    if(SUCCEEDED(hr))
+    /* Get desired encoding from declaration. */
+    if ((child = domnode_get_first_child(doc)))
     {
-        hr = ITypeInfo_GetIDsOfNames(typeinfo, rgszNames, cNames, rgDispId);
-        ITypeInfo_Release(typeinfo);
+        if (child->type == NODE_PROCESSING_INSTRUCTION && !wcscmp(child->name, L"xml"))
+        {
+            if (domnode_get_attribute(child, L"encoding", &attr) == S_OK)
+            {
+                if ((node = domnode_get_first_child(attr)))
+                    encoding = node->data;
+            }
+        }
     }
 
-    return hr;
-}
+    if (!encoding)
+        encoding = L"UTF-8";
 
-static HRESULT WINAPI unknode_Invoke(
-    IXMLDOMNode *iface,
-    DISPID dispIdMember,
-    REFIID riid,
-    LCID lcid,
-    WORD wFlags,
-    DISPPARAMS* pDispParams,
-    VARIANT* pVarResult,
-    EXCEPINFO* pExcepInfo,
-    UINT* puArgErr )
-{
-    ITypeInfo *typeinfo;
-    HRESULT hr;
+    TRACE("Using %s encoding.\n", debugstr_w(encoding));
+
+    if (!(codepage = get_codepage_for_encoding(encoding)))
+    {
+        FIXME("Unrecognized output encoding %s.\n", debugstr_w(encoding));
+        return E_FAIL;
+    }
 
-    TRACE("%p, %ld, %s, %lx, %d, %p, %p, %p, %p.\n", iface, dispIdMember, debugstr_guid(riid),
-          lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
+    node_dump_context_init(&context, codepage, stream);
 
-    hr = get_typeinfo(IXMLDOMNode_tid, &typeinfo);
-    if(SUCCEEDED(hr))
+    LIST_FOR_EACH_ENTRY(node, &doc->children, struct domnode, entry)
     {
-        hr = ITypeInfo_Invoke(typeinfo, iface, dispIdMember, wFlags, pDispParams,
-                pVarResult, pExcepInfo, puArgErr);
-        ITypeInfo_Release(typeinfo);
+        node_dump(node, &context);
+        node_dump_append(&context, L"\r\n", 2);
     }
 
-    return hr;
+    return node_dump_context_cleanup(&context);
 }
 
-static HRESULT WINAPI unknode_get_nodeName(
-    IXMLDOMNode *iface,
-    BSTR* p )
+static HRESULT create_xpath_query_for_tagname(const BSTR name, BSTR *query)
 {
-    unknode *This = unknode_from_IXMLDOMNode( iface );
+    struct string_buffer buffer;
+    const WCHAR *p, *end;
 
-    FIXME("(%p)->(%p)\n", This, p);
+    *query = NULL;
 
-    return node_get_nodeName(&This->node, p);
-}
+    string_buffer_init(&buffer);
 
-static HRESULT WINAPI unknode_get_nodeValue(
-    IXMLDOMNode *iface,
-    VARIANT* value)
-{
-    unknode *This = unknode_from_IXMLDOMNode( iface );
+    /* Special case - empty tagname - means select all nodes,
+       except document itself. */
+    if (!*name)
+    {
+        string_append(&buffer, L"/descendant::node()", 19);
+        return string_to_bstr(&buffer, query);
+    }
 
-    FIXME("(%p)->(%p)\n", This, value);
+    string_append(&buffer, L"descendant::", 12);
 
-    if(!value)
-        return E_INVALIDARG;
+    p = name;
+    while (p && *p)
+    {
+        switch (*p)
+        {
+            case '/':
+            case '*':
+                string_append(&buffer, p, 1);
+                ++p;
+                break;
+            default:
+                string_append(&buffer, L"*[local-name()='", 16);
+                end = p;
+                while (*end && *end != '/')
+                    ++end;
+                string_append(&buffer, p, end - p);
+                p = end;
+                string_append(&buffer, L"']", 2);
+        }
+    }
 
-    V_VT(value) = VT_NULL;
-    return S_FALSE;
+    return string_to_bstr(&buffer, query);
 }
 
-static HRESULT WINAPI unknode_put_nodeValue(
-    IXMLDOMNode *iface,
-    VARIANT value)
+HRESULT node_get_elements_by_tagname(struct domnode *node, BSTR name, IXMLDOMNodeList **list)
 {
-    unknode *This = unknode_from_IXMLDOMNode( iface );
-    FIXME("(%p)->(v%d)\n", This, V_VT(&value));
-    return E_FAIL;
+    BSTR query;
+    HRESULT hr;
+
+    if (!name || !list)
+        return E_INVALIDARG;
+
+    hr = create_xpath_query_for_tagname(name, &query);
+    if (SUCCEEDED(hr))
+        hr = create_selection(node, query, true, list);
+    SysFreeString(query);
+
+    return hr;
 }
 
-static HRESULT WINAPI unknode_get_nodeType(
-    IXMLDOMNode *iface,
-    DOMNodeType* domNodeType )
+XDR_DT node_get_data_type(const struct domnode *node)
 {
-    unknode *This = unknode_from_IXMLDOMNode( iface );
+    struct domnode *doc = node->owner, *attr;
+    IXMLDOMSchemaCollection2 *schema;
+    XDR_DT dt = DT_INVALID;
+    HRESULT hr;
+    BSTR value;
 
-    FIXME("(%p)->(%p)\n", This, domNodeType);
+    if (node->type != NODE_ELEMENT)
+        return dt;
 
-    switch (This->node.node->type)
+    if (is_same_uri(node, L"urn:schemas-microsoft-com:datatypes"))
     {
-    case XML_ELEMENT_NODE:
-    case XML_ATTRIBUTE_NODE:
-    case XML_TEXT_NODE:
-    case XML_CDATA_SECTION_NODE:
-    case XML_ENTITY_REF_NODE:
-    case XML_ENTITY_NODE:
-    case XML_PI_NODE:
-    case XML_COMMENT_NODE:
-    case XML_DOCUMENT_NODE:
-    case XML_DOCUMENT_TYPE_NODE:
-    case XML_DOCUMENT_FRAG_NODE:
-    case XML_NOTATION_NODE:
-        /* we only care about this set of types, libxml2 type values are
-           exactly what we need */
-        *domNodeType = (DOMNodeType)This->node.node->type;
-        break;
-    default:
-        *domNodeType = NODE_INVALID;
-        break;
+        dt = bstr_to_dt(node->name, -1);
     }
+    else
+    {
+        domnode_get_qualified_attribute(node, L"dt", L"urn:schemas-microsoft-com:datatypes", &attr);
+        if (attr)
+        {
+            if (FAILED(hr = node_get_text(attr, &value)))
+                return dt;
 
-    return S_OK;
-}
+            dt = bstr_to_dt(value, -1);
+            SysFreeString(value);
+        }
+        else if ((schema = doc->properties->schemaCache))
+        {
+            dt = SchemaCache_get_node_dt(schema, node->name, node->uri);
+        }
+    }
 
-static HRESULT WINAPI unknode_get_parentNode(
-    IXMLDOMNode *iface,
-    IXMLDOMNode** parent )
-{
-    unknode *This = unknode_from_IXMLDOMNode( iface );
-    FIXME("(%p)->(%p)\n", This, parent);
-    if (!parent) return E_INVALIDARG;
-    *parent = NULL;
-    return S_FALSE;
+    TRACE("=> dt:%s\n", debugstr_dt(dt));
+    return dt;
 }
 
-static HRESULT WINAPI unknode_get_childNodes(
-    IXMLDOMNode *iface,
-    IXMLDOMNodeList** outList)
+HRESULT create_attribute_node(const WCHAR *name, const WCHAR *uri, struct domnode *owner, IXMLDOMNode **ret)
 {
-    unknode *This = unknode_from_IXMLDOMNode( iface );
+    struct domnode *attr;
+    HRESULT hr;
+
+    *ret = NULL;
 
-    TRACE("(%p)->(%p)\n", This, outList);
+    if (FAILED(hr = domnode_create(NODE_ATTRIBUTE, name, wcslen(name), uri, wcslen(uri), owner, &attr)))
+        return hr;
 
-    return node_get_child_nodes(&This->node, outList);
+    return create_node(attr, ret);
 }
 
-static HRESULT WINAPI unknode_get_firstChild(
-    IXMLDOMNode *iface,
-    IXMLDOMNode** domNode)
+static void LIBXML2_LOG_CALLBACK validate_error(void* ctx, char const* msg, ...)
 {
-    unknode *This = unknode_from_IXMLDOMNode( iface );
-
-    TRACE("(%p)->(%p)\n", This, domNode);
-
-    return node_get_first_child(&This->node, domNode);
+    va_list ap;
+    va_start(ap, msg);
+    LIBXML2_CALLBACK_ERR(domdoc_validateNode, msg, ap);
+    va_end(ap);
 }
 
-static HRESULT WINAPI unknode_get_lastChild(
-    IXMLDOMNode *iface,
-    IXMLDOMNode** domNode)
+static void LIBXML2_LOG_CALLBACK validate_warning(void* ctx, char const* msg, ...)
 {
-    unknode *This = unknode_from_IXMLDOMNode( iface );
-
-    TRACE("(%p)->(%p)\n", This, domNode);
-
-    return node_get_last_child(&This->node, domNode);
+    va_list ap;
+    va_start(ap, msg);
+    LIBXML2_CALLBACK_WARN(domdoc_validateNode, msg, ap);
+    va_end(ap);
 }
 
-static HRESULT WINAPI unknode_get_previousSibling(
-    IXMLDOMNode *iface,
-    IXMLDOMNode** domNode)
+HRESULT node_validate(struct domnode *doc, IXMLDOMNode *node_obj, IXMLDOMParseError **err)
 {
-    unknode *This = unknode_from_IXMLDOMNode( iface );
+    IXMLDOMSchemaCollection2 *schema;
+    struct domnode *node;
+    LONG err_code = 0;
+    HRESULT hr = S_OK;
+    int validated = 0;
+    xmlDocPtr xmldoc;
+    xmlNodePtr xmlnode;
 
-    TRACE("(%p)->(%p)\n", This, domNode);
+    if (!(node = get_node_obj(node_obj)))
+        return E_FAIL;
 
-    return node_get_previous_sibling(&This->node, domNode);
-}
+    if (node->owner != doc && node != doc)
+    {
+        if (err)
+            *err = create_parseError(err_code, NULL, NULL, NULL, 0, 0, 0);
+        return E_FAIL;
+    }
 
-static HRESULT WINAPI unknode_get_nextSibling(
-    IXMLDOMNode *iface,
-    IXMLDOMNode** domNode)
-{
-    unknode *This = unknode_from_IXMLDOMNode( iface );
+    /* TODO: for now simply treat empty document as not well-formed */
+    if (list_empty(&node->children))
+    {
+        if (err)
+            *err = create_parseError(E_XML_NOTWF, NULL, NULL, NULL, 0, 0, 0);
+        return S_FALSE;
+    }
 
-    TRACE("(%p)->(%p)\n", This, domNode);
+    xmldoc = create_xmldoc_from_domdoc(node, &xmlnode);
 
-    return node_get_next_sibling(&This->node, domNode);
-}
+    /* DTD validation */
+    if (xmldoc->intSubset || xmldoc->extSubset)
+    {
+        xmlValidCtxtPtr vctx = xmlNewValidCtxt();
+        int ret;
 
-static HRESULT WINAPI unknode_get_attributes(
-    IXMLDOMNode *iface,
-    IXMLDOMNamedNodeMap** attributeMap)
-{
-    unknode *This = unknode_from_IXMLDOMNode( iface );
+        vctx->error = validate_error;
+        vctx->warning = validate_warning;
+        ++validated;
 
-    FIXME("(%p)->(%p)\n", This, attributeMap);
+        ret = node == doc ? xmlValidateDocument(vctx, xmldoc) : xmlValidateElement(vctx, xmldoc, xmlnode);
+        if (!ret)
+        {
+            /* TODO: get a real error code here */
+            TRACE("DTD validation failed\n");
+            err_code = E_XML_INVALID;
+            hr = S_FALSE;
+        }
+        xmlFreeValidCtxt(vctx);
+    }
 
-    return return_null_ptr((void**)attributeMap);
-}
+    /* Schema validation */
+    schema = doc->properties->schemaCache;
+    if (hr == S_OK && schema)
+    {
 
-static HRESULT WINAPI unknode_insertBefore(
-    IXMLDOMNode *iface,
-    IXMLDOMNode* newNode, VARIANT refChild,
-    IXMLDOMNode** outOldNode)
-{
-    unknode *This = unknode_from_IXMLDOMNode( iface );
+        hr = SchemaCache_validate_tree(schema, xmlnode);
+        if (SUCCEEDED(hr))
+        {
+            ++validated;
+            /* TODO: get a real error code here */
+            if (hr == S_OK)
+            {
+                TRACE("schema validation succeeded\n");
+            }
+            else
+            {
+                WARN("schema validation failed\n");
+                err_code = E_XML_INVALID;
+            }
+        }
+        else
+        {
+            /* not really OK, just didn't find a schema for the ns */
+            hr = S_OK;
+        }
+    }
+    xmlFreeDoc(xmldoc);
+
+    if (!validated)
+    {
+        WARN("no DTD or schema found\n");
+        err_code = E_XML_NODTD;
+        hr = S_FALSE;
+    }
 
-    FIXME("(%p)->(%p x%d %p)\n", This, newNode, V_VT(&refChild), outOldNode);
+    if (err)
+        *err = create_parseError(err_code, NULL, NULL, NULL, 0, 0, 0);
 
-    return node_insert_before(&This->node, newNode, &refChild, outOldNode);
+    return hr;
 }
 
-static HRESULT WINAPI unknode_replaceChild(
-    IXMLDOMNode *iface,
-    IXMLDOMNode* newNode,
-    IXMLDOMNode* oldNode,
-    IXMLDOMNode** outOldNode)
+/* The only use case for this for loading documents. Original document node is preserved,
+   together with its properties, and unlinked owned nodes. Current children nodes are
+   unlinked, and replaced with children from the source. Such pattern makes sense only
+   for document nodes. The key feature is to preserved owned unlinked nodes. */
+void node_move_children(struct domnode *dest, struct domnode *src)
 {
-    unknode *This = unknode_from_IXMLDOMNode( iface );
+    struct domnode *child, *next;
 
-    FIXME("(%p)->(%p %p %p)\n", This, newNode, oldNode, outOldNode);
+    domnode_unlink_children(dest);
 
-    return node_replace_child(&This->node, newNode, oldNode, outOldNode);
+    LIST_FOR_EACH_ENTRY_SAFE(child, next, &src->children, struct domnode, entry)
+    {
+        domnode_append_child(dest, child);
+    }
 }
 
-static HRESULT WINAPI unknode_removeChild(
-    IXMLDOMNode *iface,
-    IXMLDOMNode* domNode, IXMLDOMNode** oldNode)
+HRESULT node_split_text(struct domnode *node, LONG offset, IXMLDOMText **out)
 {
-    unknode *This = unknode_from_IXMLDOMNode( iface );
-    return node_remove_child(&This->node, domNode, oldNode);
-}
+    struct domnode *child;
+    ULONG length;
+    HRESULT hr;
+    BSTR head;
 
-static HRESULT WINAPI unknode_appendChild(
-    IXMLDOMNode *iface,
-    IXMLDOMNode* newNode, IXMLDOMNode** outNewNode)
-{
-    unknode *This = unknode_from_IXMLDOMNode( iface );
-    return node_append_child(&This->node, newNode, outNewNode);
-}
+    if (!out || offset < 0)
+        return E_INVALIDARG;
 
-static HRESULT WINAPI unknode_hasChildNodes(
-    IXMLDOMNode *iface,
-    VARIANT_BOOL* pbool)
-{
-    unknode *This = unknode_from_IXMLDOMNode( iface );
-    return node_has_childnodes(&This->node, pbool);
-}
+    *out = NULL;
 
-static HRESULT WINAPI unknode_get_ownerDocument(
-    IXMLDOMNode *iface,
-    IXMLDOMDocument** domDocument)
-{
-    unknode *This = unknode_from_IXMLDOMNode( iface );
-    return node_get_owner_doc(&This->node, domDocument);
-}
+    length = SysStringLen(node->data);
+    if (offset > length)
+        return E_INVALIDARG;
+    if (offset == length)
+        return S_FALSE;
 
-static HRESULT WINAPI unknode_cloneNode(
-    IXMLDOMNode *iface,
-    VARIANT_BOOL pbool, IXMLDOMNode** outNode)
-{
-    unknode *This = unknode_from_IXMLDOMNode( iface );
-    return node_clone(&This->node, pbool, outNode );
-}
+    if (FAILED(hr = domnode_create(node->type, NULL, 0, NULL, 0, node->owner, &child)))
+        return hr;
 
-static HRESULT WINAPI unknode_get_nodeTypeString(
-    IXMLDOMNode *iface,
-    BSTR* p)
-{
-    unknode *This = unknode_from_IXMLDOMNode( iface );
+    if (offset)
+    {
+        child->data = SysAllocStringLen(node->data + offset, length - offset);
+        head = SysAllocStringLen(node->data, offset);
+        SysFreeString(node->data);
+        node->data = head;
+    }
+    else
+    {
+        child->data = node->data;
+        node->data = NULL;
+    }
 
-    FIXME("(%p)->(%p)\n", This, p);
+    if (node->parent)
+        domnode_insert_domnode(node->parent, child, domnode_get_next_sibling(node));
 
-    return node_get_nodeName(&This->node, p);
-}
+    if (FAILED(hr = create_node(child, (IXMLDOMNode **)out)))
+        domnode_unlink_child(child);
 
-static HRESULT WINAPI unknode_get_text(
-    IXMLDOMNode *iface,
-    BSTR* p)
-{
-    unknode *This = unknode_from_IXMLDOMNode( iface );
-    return node_get_text(&This->node, p);
+    return hr;
 }
 
-static HRESULT WINAPI unknode_put_text(
-    IXMLDOMNode *iface,
-    BSTR p)
+HRESULT node_delete_data(struct domnode *node, LONG offset, LONG count)
 {
-    unknode *This = unknode_from_IXMLDOMNode( iface );
-    return node_put_text(&This->node, p);
-}
+    ULONG length = SysStringLen(node->data);
+    BSTR str = NULL;
 
-static HRESULT WINAPI unknode_get_specified(
-    IXMLDOMNode *iface,
-    VARIANT_BOOL* isSpecified)
-{
-    unknode *This = unknode_from_IXMLDOMNode( iface );
-    FIXME("(%p)->(%p) stub!\n", This, isSpecified);
-    *isSpecified = VARIANT_TRUE;
-    return S_OK;
-}
+    if (offset < 0 || count < 0 || offset > length)
+        return E_INVALIDARG;
 
-static HRESULT WINAPI unknode_get_definition(
-    IXMLDOMNode *iface,
-    IXMLDOMNode** definitionNode)
-{
-    unknode *This = unknode_from_IXMLDOMNode( iface );
-    FIXME("(%p)->(%p)\n", This, definitionNode);
-    return E_NOTIMPL;
-}
+    if (length == 0 || count == 0)
+        return S_OK;
 
-static HRESULT WINAPI unknode_get_nodeTypedValue(
-    IXMLDOMNode *iface,
-    VARIANT* var1)
-{
-    unknode *This = unknode_from_IXMLDOMNode( iface );
-    FIXME("(%p)->(%p)\n", This, var1);
-    return return_null_var(var1);
-}
+    if (offset == 0)
+    {
+        if (count < length)
+        {
+            str = SysAllocStringLen(node->data + count, length - count);
+            if (!str) return E_OUTOFMEMORY;
+        }
+    }
+    else
+    {
+        if (offset + count >= length)
+        {
+            str = SysAllocStringLen(node->data, offset);
+            if (!str) return E_OUTOFMEMORY;
+        }
+        else
+        {
+            str = SysAllocStringLen(NULL, length - count);
+            if (!str) return E_OUTOFMEMORY;
+            memcpy(str, node->data, offset * sizeof(WCHAR));
+            memcpy(str + offset, node->data + offset + count, (length - count - offset) * sizeof(WCHAR));
+            str[length - count] = 0;
+        }
+    }
 
-static HRESULT WINAPI unknode_put_nodeTypedValue(
-    IXMLDOMNode *iface,
-    VARIANT typedValue)
-{
-    unknode *This = unknode_from_IXMLDOMNode( iface );
-    FIXME("(%p)->(%s)\n", This, debugstr_variant(&typedValue));
-    return E_NOTIMPL;
-}
+    SysFreeString(node->data);
+    node->data = str;
 
-static HRESULT WINAPI unknode_get_dataType(
-    IXMLDOMNode *iface,
-    VARIANT* var1)
-{
-    unknode *This = unknode_from_IXMLDOMNode( iface );
-    TRACE("(%p)->(%p)\n", This, var1);
-    return return_null_var(var1);
+    return S_OK;
 }
 
-static HRESULT WINAPI unknode_put_dataType(
-    IXMLDOMNode *iface,
-    BSTR p)
+HRESULT node_substring_data(struct domnode *node, LONG offset, LONG count, BSTR *p)
 {
-    unknode *This = unknode_from_IXMLDOMNode( iface );
+    LONG length = SysStringLen(node->data);
 
-    FIXME("(%p)->(%s)\n", This, debugstr_w(p));
-
-    if(!p)
+    if (!p)
         return E_INVALIDARG;
 
-    return E_FAIL;
-}
-
-static HRESULT WINAPI unknode_get_xml(
-    IXMLDOMNode *iface,
-    BSTR* p)
-{
-    unknode *This = unknode_from_IXMLDOMNode( iface );
+    *p = NULL;
 
-    FIXME("(%p)->(%p)\n", This, p);
+    if (offset < 0 || count < 0)
+        return E_INVALIDARG;
 
-    return node_get_xml(&This->node, FALSE, p);
-}
+    if (count == 0 || offset >= length)
+        return S_FALSE;
 
-static HRESULT WINAPI unknode_transformNode(
-    IXMLDOMNode *iface,
-    IXMLDOMNode* domNode, BSTR* p)
-{
-    unknode *This = unknode_from_IXMLDOMNode( iface );
-    return node_transform_node(&This->node, domNode, p);
-}
+    if (offset + count > length)
+        *p = SysAllocString(node->data + offset);
+    else
+        *p = SysAllocStringLen(node->data + offset, count);
 
-static HRESULT WINAPI unknode_selectNodes(
-    IXMLDOMNode *iface,
-    BSTR p, IXMLDOMNodeList** outList)
-{
-    unknode *This = unknode_from_IXMLDOMNode( iface );
-    return node_select_nodes(&This->node, p, outList);
+    return *p ? S_OK : E_OUTOFMEMORY;
 }
 
-static HRESULT WINAPI unknode_selectSingleNode(
-    IXMLDOMNode *iface,
-    BSTR p, IXMLDOMNode** outNode)
+HRESULT node_insert_data(struct domnode *node, LONG offset, BSTR data)
 {
-    unknode *This = unknode_from_IXMLDOMNode( iface );
-    return node_select_singlenode(&This->node, p, outNode);
-}
+    LONG length = SysStringLen(node->data);
+    LONG data_length = SysStringLen(data);
+    BSTR str;
 
-static HRESULT WINAPI unknode_get_parsed(
-    IXMLDOMNode *iface,
-    VARIANT_BOOL* isParsed)
-{
-    unknode *This = unknode_from_IXMLDOMNode( iface );
-    FIXME("(%p)->(%p) stub!\n", This, isParsed);
-    *isParsed = VARIANT_TRUE;
-    return S_OK;
-}
+    if (data_length == 0)
+        return S_OK;
 
-static HRESULT WINAPI unknode_get_namespaceURI(
-    IXMLDOMNode *iface,
-    BSTR* p)
-{
-    unknode *This = unknode_from_IXMLDOMNode( iface );
-    TRACE("(%p)->(%p)\n", This, p);
-    return node_get_namespaceURI(&This->node, p);
-}
+    if (offset < 0 || length < offset)
+        return E_INVALIDARG;
 
-static HRESULT WINAPI unknode_get_prefix(
-    IXMLDOMNode *iface,
-    BSTR* p)
-{
-    unknode *This = unknode_from_IXMLDOMNode( iface );
-    return node_get_prefix(&This->node, p);
-}
+    if (!(str = SysAllocStringLen(NULL, length + data_length))) return E_OUTOFMEMORY;
+    memcpy(str, node->data, offset * sizeof(WCHAR));
+    memcpy(str + offset, data, data_length * sizeof(WCHAR));
+    memcpy(str + offset + data_length, node->data + offset, (length - offset) * sizeof(WCHAR));
+    str[length + data_length] = 0;
 
-static HRESULT WINAPI unknode_get_baseName(
-    IXMLDOMNode *iface,
-    BSTR* p)
-{
-    unknode *This = unknode_from_IXMLDOMNode( iface );
-    return node_get_base_name(&This->node, p);
-}
+    SysFreeString(node->data);
+    node->data = str;
 
-static HRESULT WINAPI unknode_transformNodeToObject(
-    IXMLDOMNode *iface,
-    IXMLDOMNode* domNode, VARIANT var1)
-{
-    unknode *This = unknode_from_IXMLDOMNode( iface );
-    FIXME("(%p)->(%p %s)\n", This, domNode, debugstr_variant(&var1));
-    return E_NOTIMPL;
+    return S_OK;
 }
 
-static const struct IXMLDOMNodeVtbl unknode_vtbl =
-{
-    unknode_QueryInterface,
-    unknode_AddRef,
-    unknode_Release,
-    unknode_GetTypeInfoCount,
-    unknode_GetTypeInfo,
-    unknode_GetIDsOfNames,
-    unknode_Invoke,
-    unknode_get_nodeName,
-    unknode_get_nodeValue,
-    unknode_put_nodeValue,
-    unknode_get_nodeType,
-    unknode_get_parentNode,
-    unknode_get_childNodes,
-    unknode_get_firstChild,
-    unknode_get_lastChild,
-    unknode_get_previousSibling,
-    unknode_get_nextSibling,
-    unknode_get_attributes,
-    unknode_insertBefore,
-    unknode_replaceChild,
-    unknode_removeChild,
-    unknode_appendChild,
-    unknode_hasChildNodes,
-    unknode_get_ownerDocument,
-    unknode_cloneNode,
-    unknode_get_nodeTypeString,
-    unknode_get_text,
-    unknode_put_text,
-    unknode_get_specified,
-    unknode_get_definition,
-    unknode_get_nodeTypedValue,
-    unknode_put_nodeTypedValue,
-    unknode_get_dataType,
-    unknode_put_dataType,
-    unknode_get_xml,
-    unknode_transformNode,
-    unknode_selectNodes,
-    unknode_selectSingleNode,
-    unknode_get_parsed,
-    unknode_get_namespaceURI,
-    unknode_get_prefix,
-    unknode_get_baseName,
-    unknode_transformNodeToObject
-};
-
-IXMLDOMNode *create_node( xmlNodePtr node )
+/* TODO: might be worth it to unroll to avoid intermediate allocations */
+HRESULT node_replace_data(struct domnode *node, LONG offset, LONG count, BSTR data)
 {
-    IUnknown *pUnk;
-    IXMLDOMNode *ret;
     HRESULT hr;
 
-    if ( !node )
-        return NULL;
-
-    TRACE("type %d\n", node->type);
-    switch(node->type)
-    {
-    case XML_ELEMENT_NODE:
-        pUnk = create_element( node );
-        break;
-    case XML_ATTRIBUTE_NODE:
-        pUnk = create_attribute( node, FALSE );
-        break;
-    case XML_TEXT_NODE:
-        pUnk = create_text( node );
-        break;
-    case XML_CDATA_SECTION_NODE:
-        pUnk = create_cdata( node );
-        break;
-    case XML_ENTITY_REF_NODE:
-        pUnk = create_doc_entity_ref( node );
-        break;
-    case XML_PI_NODE:
-        pUnk = create_pi( node );
-        break;
-    case XML_COMMENT_NODE:
-        pUnk = create_comment( node );
-        break;
-    case XML_DOCUMENT_NODE:
-        pUnk = create_domdoc( node );
-        break;
-    case XML_DOCUMENT_FRAG_NODE:
-        pUnk = create_doc_fragment( node );
-        break;
-    case XML_DTD_NODE:
-    case XML_DOCUMENT_TYPE_NODE:
-        pUnk = create_doc_type( node );
-        break;
-    case XML_ENTITY_NODE:
-    case XML_NOTATION_NODE: {
-        unknode *new_node;
-
-        FIXME("only creating basic node for type %d\n", node->type);
+    if (FAILED(hr = node_delete_data(node, offset, count)))
+        return hr;
 
-        new_node = malloc(sizeof(unknode));
-        if(!new_node)
-            return NULL;
+    return node_insert_data(node, offset, data);
+}
 
-        new_node->IXMLDOMNode_iface.lpVtbl = &unknode_vtbl;
-        new_node->ref = 1;
-        init_xmlnode(&new_node->node, node, &new_node->IXMLDOMNode_iface, NULL);
-        pUnk = (IUnknown*)&new_node->IXMLDOMNode_iface;
-        break;
-    }
-    default:
-        ERR("Called for unsupported node type %d\n", node->type);
-        return NULL;
-    }
+HRESULT node_get_data_length(struct domnode *node, LONG *length)
+{
+    if (!length)
+        return E_INVALIDARG;
 
-    hr = IUnknown_QueryInterface(pUnk, &IID_IXMLDOMNode, (LPVOID*)&ret);
-    IUnknown_Release(pUnk);
-    if(FAILED(hr)) return NULL;
-    return ret;
+    *length = SysStringLen(node->data);
+    return S_OK;
 }
diff --git a/dlls/msxml3/nodelist.c b/dlls/msxml3/nodelist.c
index 4553253178d9..0ce4dac52077 100644
--- a/dlls/msxml3/nodelist.c
+++ b/dlls/msxml3/nodelist.c
@@ -21,8 +21,6 @@
 #define COBJMACROS
 
 #include <stdarg.h>
-#include <libxml/parser.h>
-#include <libxml/xmlerror.h>
 
 #include "windef.h"
 #include "winbase.h"
@@ -50,9 +48,9 @@ typedef struct
 {
     DispatchEx dispex;
     IXMLDOMNodeList IXMLDOMNodeList_iface;
-    LONG ref;
-    xmlNodePtr parent;
-    xmlNodePtr current;
+    LONG refcount;
+    struct domnode *parent;
+    struct domnode *current;
     IEnumVARIANT *enumvariant;
 } xmlnodelist;
 
@@ -72,14 +70,11 @@ static inline xmlnodelist *impl_from_IXMLDOMNodeList( IXMLDOMNodeList *iface )
     return CONTAINING_RECORD(iface, xmlnodelist, IXMLDOMNodeList_iface);
 }
 
-static HRESULT WINAPI xmlnodelist_QueryInterface(
-    IXMLDOMNodeList *iface,
-    REFIID riid,
-    void** ppvObject )
+static HRESULT WINAPI xmlnodelist_QueryInterface(IXMLDOMNodeList *iface, REFIID riid, void **ppvObject)
 {
-    xmlnodelist *This = impl_from_IXMLDOMNodeList( iface );
+    xmlnodelist *list = impl_from_IXMLDOMNodeList(iface);
 
-    TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppvObject);
+    TRACE("%p, %s, %p.\n", iface, debugstr_guid(riid), ppvObject);
 
     if ( IsEqualGUID( riid, &IID_IUnknown ) ||
          IsEqualGUID( riid, &IID_IDispatch ) ||
@@ -89,15 +84,15 @@ static HRESULT WINAPI xmlnodelist_QueryInterface(
     }
     else if (IsEqualGUID( riid, &IID_IEnumVARIANT ))
     {
-        if (!This->enumvariant)
+        if (!list->enumvariant)
         {
-            HRESULT hr = create_enumvariant((IUnknown*)iface, FALSE, &nodelist_enumvariant, &This->enumvariant);
+            HRESULT hr = create_enumvariant((IUnknown*)iface, FALSE, &nodelist_enumvariant, &list->enumvariant);
             if (FAILED(hr)) return hr;
         }
 
-        return IEnumVARIANT_QueryInterface(This->enumvariant, &IID_IEnumVARIANT, ppvObject);
+        return IEnumVARIANT_QueryInterface(list->enumvariant, &IID_IEnumVARIANT, ppvObject);
     }
-    else if (dispex_query_interface(&This->dispex, riid, ppvObject))
+    else if (dispex_query_interface(&list->dispex, riid, ppvObject))
     {
         return *ppvObject ? S_OK : E_NOINTERFACE;
     }
@@ -108,181 +103,161 @@ static HRESULT WINAPI xmlnodelist_QueryInterface(
         return E_NOINTERFACE;
     }
 
-    IXMLDOMNodeList_AddRef( iface );
+    IXMLDOMNodeList_AddRef(iface);
 
     return S_OK;
 }
 
-static ULONG WINAPI xmlnodelist_AddRef(
-    IXMLDOMNodeList *iface )
+static ULONG WINAPI xmlnodelist_AddRef(IXMLDOMNodeList *iface)
 {
-    xmlnodelist *This = impl_from_IXMLDOMNodeList( iface );
-    ULONG ref = InterlockedIncrement( &This->ref );
-    TRACE("%p, refcount %lu.\n", iface, ref);
-    return ref;
+    xmlnodelist *list = impl_from_IXMLDOMNodeList(iface);
+    ULONG refcount = InterlockedIncrement(&list->refcount);
+
+    TRACE("%p, refcount %lu.\n", iface, refcount);
+
+    return refcount;
 }
 
-static ULONG WINAPI xmlnodelist_Release(
-    IXMLDOMNodeList *iface )
+static void xmlnode_list_release_current(xmlnodelist *list)
 {
-    xmlnodelist *This = impl_from_IXMLDOMNodeList( iface );
-    ULONG ref = InterlockedDecrement( &This->ref );
+    if (list->current && list->current != list->parent)
+        domnode_release(list->current);
+    list->current = NULL;
+}
 
-    TRACE("%p, refcount %lu.\n", iface, ref);
+static ULONG WINAPI xmlnodelist_Release(IXMLDOMNodeList *iface)
+{
+    xmlnodelist *list = impl_from_IXMLDOMNodeList(iface);
+    ULONG refcount = InterlockedDecrement(&list->refcount);
 
-    if (!ref)
+    TRACE("%p, refcount %lu.\n", iface, refcount);
+
+    if (!refcount)
     {
-        xmldoc_release( This->parent->doc );
-        if (This->enumvariant) IEnumVARIANT_Release(This->enumvariant);
-        free( This );
+        xmlnode_list_release_current(list);
+        domnode_release(list->parent);
+        if (list->enumvariant) IEnumVARIANT_Release(list->enumvariant);
+        free(list);
     }
 
-    return ref;
+    return refcount;
 }
 
-static HRESULT WINAPI xmlnodelist_GetTypeInfoCount(
-    IXMLDOMNodeList *iface,
-    UINT* pctinfo )
+static HRESULT WINAPI xmlnodelist_GetTypeInfoCount(IXMLDOMNodeList *iface, UINT *count)
 {
-    xmlnodelist *This = impl_from_IXMLDOMNodeList( iface );
-    return IDispatchEx_GetTypeInfoCount(&This->dispex.IDispatchEx_iface, pctinfo);
+    xmlnodelist *list = impl_from_IXMLDOMNodeList(iface);
+    return IDispatchEx_GetTypeInfoCount(&list->dispex.IDispatchEx_iface, count);
 }
 
-static HRESULT WINAPI xmlnodelist_GetTypeInfo(
-    IXMLDOMNodeList *iface,
-    UINT iTInfo,
-    LCID lcid,
-    ITypeInfo** ppTInfo )
+static HRESULT WINAPI xmlnodelist_GetTypeInfo(IXMLDOMNodeList *iface, UINT index, LCID lcid, ITypeInfo **ti)
 {
-    xmlnodelist *This = impl_from_IXMLDOMNodeList( iface );
-    return IDispatchEx_GetTypeInfo(&This->dispex.IDispatchEx_iface,
-        iTInfo, lcid, ppTInfo);
+    xmlnodelist *list = impl_from_IXMLDOMNodeList(iface);
+    return IDispatchEx_GetTypeInfo(&list->dispex.IDispatchEx_iface, index, lcid, ti);
 }
 
-static HRESULT WINAPI xmlnodelist_GetIDsOfNames(
-    IXMLDOMNodeList *iface,
-    REFIID riid,
-    LPOLESTR* rgszNames,
-    UINT cNames,
-    LCID lcid,
-    DISPID* rgDispId )
+static HRESULT WINAPI xmlnodelist_GetIDsOfNames(IXMLDOMNodeList *iface, REFIID riid,
+        LPOLESTR* rgszNames, UINT cNames, LCID lcid, DISPID* rgDispId)
 {
-    xmlnodelist *This = impl_from_IXMLDOMNodeList( iface );
-    return IDispatchEx_GetIDsOfNames(&This->dispex.IDispatchEx_iface,
+    xmlnodelist *list = impl_from_IXMLDOMNodeList(iface);
+    return IDispatchEx_GetIDsOfNames(&list->dispex.IDispatchEx_iface,
         riid, rgszNames, cNames, lcid, rgDispId);
 }
 
-static HRESULT WINAPI xmlnodelist_Invoke(
-    IXMLDOMNodeList *iface,
-    DISPID dispIdMember,
-    REFIID riid,
-    LCID lcid,
-    WORD wFlags,
-    DISPPARAMS* pDispParams,
-    VARIANT* pVarResult,
-    EXCEPINFO* pExcepInfo,
-    UINT* puArgErr )
+static HRESULT WINAPI xmlnodelist_Invoke(IXMLDOMNodeList *iface, DISPID dispIdMember,
+        REFIID riid, LCID lcid, WORD flags, DISPPARAMS *params, VARIANT *result,
+        EXCEPINFO *ei, UINT *puArgErr)
 {
-    xmlnodelist *This = impl_from_IXMLDOMNodeList( iface );
-    return IDispatchEx_Invoke(&This->dispex.IDispatchEx_iface,
-        dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
+    xmlnodelist *list = impl_from_IXMLDOMNodeList(iface);
+    return IDispatchEx_Invoke(&list->dispex.IDispatchEx_iface, dispIdMember, riid, lcid,
+            flags, params, result, ei, puArgErr);
 }
 
-static HRESULT WINAPI xmlnodelist_get_item(
-        IXMLDOMNodeList* iface,
-        LONG index,
-        IXMLDOMNode** listItem)
+static HRESULT WINAPI xmlnodelist_get_item(IXMLDOMNodeList *iface, LONG index, IXMLDOMNode **node)
 {
-    xmlnodelist *This = impl_from_IXMLDOMNodeList( iface );
-    xmlNodePtr curr;
-    LONG nodeIndex = 0;
+    xmlnodelist *list = impl_from_IXMLDOMNodeList(iface);
+    struct list *p;
+    LONG i = 0;
 
-    TRACE("%p, %ld, %p.\n", iface, index, listItem);
+    TRACE("%p, %ld, %p.\n", iface, index, node);
 
-    if(!listItem)
+    if (!node)
         return E_INVALIDARG;
 
-    *listItem = NULL;
+    *node = NULL;
 
     if (index < 0)
         return S_FALSE;
 
-    curr = This->parent->children;
-    while(curr)
+    p = list_head(&list->parent->children);
+    while (p)
     {
-        if(nodeIndex++ == index) break;
-        curr = curr->next;
+        if (i++ == index) break;
+        p = list_next(&list->parent->children, p);
     }
-    if(!curr) return S_FALSE;
-
-    *listItem = create_node( curr );
+    if (!p)
+        return S_FALSE;
 
-    return S_OK;
+    return create_node(LIST_ENTRY(p, struct domnode, entry), node);
 }
 
-static HRESULT WINAPI xmlnodelist_get_length(
-        IXMLDOMNodeList* iface,
-        LONG* listLength)
+static HRESULT WINAPI xmlnodelist_get_length(IXMLDOMNodeList *iface, LONG *length)
 {
+    xmlnodelist *list = impl_from_IXMLDOMNodeList(iface);
 
-    xmlNodePtr curr;
-    LONG nodeCount = 0;
-
-    xmlnodelist *This = impl_from_IXMLDOMNodeList( iface );
-
-    TRACE("(%p)->(%p)\n", This, listLength);
+    TRACE("%p, %p.\n", iface, length);
 
-    if(!listLength)
+    if (!length)
         return E_INVALIDARG;
 
-    curr = This->parent->children;
-    while (curr)
-    {
-        nodeCount++;
-        curr = curr->next;
-    }
-
-    *listLength = nodeCount;
+    *length = list_count(&list->parent->children);
     return S_OK;
 }
 
-static HRESULT WINAPI xmlnodelist_nextNode(
-        IXMLDOMNodeList* iface,
-        IXMLDOMNode** nextItem)
+static HRESULT WINAPI xmlnodelist_nextNode(IXMLDOMNodeList *iface, IXMLDOMNode **node)
 {
-    xmlnodelist *This = impl_from_IXMLDOMNodeList( iface );
+    xmlnodelist *list = impl_from_IXMLDOMNodeList(iface);
+    HRESULT hr;
 
-    TRACE("(%p)->(%p)\n", This, nextItem );
+    TRACE("%p, %p.\n", iface, node);
 
-    if(!nextItem)
+    if (!node)
         return E_INVALIDARG;
 
-    *nextItem = NULL;
+    *node = NULL;
 
-    if (!This->current)
+    /* First iteration */
+    if (list->current == list->parent)
+    {
+        list->current = domnode_get_first_child(list->parent);
+        if (list->current) domnode_addref(list->current);
+    }
+
+    if (!list->current)
         return S_FALSE;
 
-    *nextItem = create_node( This->current );
-    This->current = This->current->next;
-    return S_OK;
+    hr = create_node(list->current, node);
+    domnode_release(list->current);
+    list->current = domnode_get_next_sibling(list->current);
+    if (list->current) domnode_addref(list->current);
+
+    return hr;
 }
 
-static HRESULT WINAPI xmlnodelist_reset(
-        IXMLDOMNodeList* iface)
+static HRESULT WINAPI xmlnodelist_reset(IXMLDOMNodeList *iface)
 {
-    xmlnodelist *This = impl_from_IXMLDOMNodeList( iface );
+    xmlnodelist *list = impl_from_IXMLDOMNodeList(iface);
+
+    TRACE("%p.\n", iface);
 
-    TRACE("%p\n", This);
-    This->current = This->parent->children;
+    xmlnode_list_release_current(list);
+    list->current = list->parent;
     return S_OK;
 }
 
-static HRESULT WINAPI xmlnodelist__newEnum(
-        IXMLDOMNodeList* iface,
-        IUnknown** enumv)
+static HRESULT WINAPI xmlnodelist__newEnum(IXMLDOMNodeList *iface, IUnknown **enumv)
 {
-    xmlnodelist *This = impl_from_IXMLDOMNodeList( iface );
-    TRACE("(%p)->(%p)\n", This, enumv);
+    TRACE("%p, %p.\n", iface, enumv);
+
     return create_enumvariant((IUnknown*)iface, TRUE, &nodelist_enumvariant, (IEnumVARIANT**)enumv);
 }
 
@@ -320,7 +295,7 @@ static HRESULT xmlnodelist_get_dispid(IUnknown *iface, BSTR name, DWORD flags, D
 static HRESULT xmlnodelist_invoke(IUnknown *iface, DISPID id, LCID lcid, WORD flags, DISPPARAMS *params,
         VARIANT *res, EXCEPINFO *ei)
 {
-    xmlnodelist *This = impl_from_IXMLDOMNodeList( (IXMLDOMNodeList*)iface );
+    xmlnodelist *list = impl_from_IXMLDOMNodeList((IXMLDOMNodeList *)iface);
 
     TRACE("%p, %ld, %lx, %x, %p, %p, %p.\n", iface, id, lcid, flags, params, res, ei);
 
@@ -333,7 +308,7 @@ static HRESULT xmlnodelist_invoke(IUnknown *iface, DISPID id, LCID lcid, WORD fl
                 IXMLDOMNode *disp = NULL;
 
                 V_VT(res) = VT_DISPATCH;
-                IXMLDOMNodeList_get_item(&This->IXMLDOMNodeList_iface, id - DISPID_DOM_COLLECTION_BASE, &disp);
+                IXMLDOMNodeList_get_item(&list->IXMLDOMNodeList_iface, id - DISPID_DOM_COLLECTION_BASE, &disp);
                 V_DISPATCH(res) = (IDispatch*)disp;
                 break;
             }
@@ -366,7 +341,7 @@ static HRESULT xmlnodelist_invoke(IUnknown *iface, DISPID id, LCID lcid, WORD fl
                     return hr;
                 }
 
-                IXMLDOMNodeList_get_item(&This->IXMLDOMNodeList_iface, V_I4(&index), &item);
+                IXMLDOMNodeList_get_item(&list->IXMLDOMNodeList_iface, V_I4(&index), &item);
                 V_VT(res) = VT_DISPATCH;
                 V_DISPATCH(res) = (IDispatch*)item;
                 break;
@@ -386,38 +361,40 @@ static HRESULT xmlnodelist_invoke(IUnknown *iface, DISPID id, LCID lcid, WORD fl
     return S_OK;
 }
 
-static const dispex_static_data_vtbl_t xmlnodelist_dispex_vtbl = {
+static const dispex_static_data_vtbl_t xmlnodelist_dispex_vtbl =
+{
     xmlnodelist_get_dispid,
     xmlnodelist_invoke
 };
 
-static const tid_t xmlnodelist_iface_tids[] = {
+static const tid_t xmlnodelist_iface_tids[] =
+{
     IXMLDOMNodeList_tid,
     0
 };
-static dispex_static_data_t xmlnodelist_dispex = {
+
+static dispex_static_data_t xmlnodelist_dispex =
+{
     &xmlnodelist_dispex_vtbl,
     IXMLDOMNodeList_tid,
     NULL,
     xmlnodelist_iface_tids
 };
 
-IXMLDOMNodeList* create_children_nodelist( xmlNodePtr node )
+HRESULT create_children_nodelist(struct domnode *node, IXMLDOMNodeList **list)
 {
-    xmlnodelist *This;
+    xmlnodelist *object;
+
+    if (!(object = calloc(1, sizeof(*object))))
+        return E_OUTOFMEMORY;
 
-    This = malloc(sizeof(*This));
-    if ( !This )
-        return NULL;
+    object->IXMLDOMNodeList_iface.lpVtbl = &xmlnodelist_vtbl;
+    object->refcount = 1;
+    object->current = object->parent = domnode_addref(node);
 
-    This->IXMLDOMNodeList_iface.lpVtbl = &xmlnodelist_vtbl;
-    This->ref = 1;
-    This->parent = node;
-    This->current = node->children;
-    This->enumvariant = NULL;
-    xmldoc_add_ref( node->doc );
+    init_dispex(&object->dispex, (IUnknown *)&object->IXMLDOMNodeList_iface, &xmlnodelist_dispex);
 
-    init_dispex(&This->dispex, (IUnknown*)&This->IXMLDOMNodeList_iface, &xmlnodelist_dispex);
+    *list = &object->IXMLDOMNodeList_iface;
 
-    return &This->IXMLDOMNodeList_iface;
+    return S_OK;
 }
diff --git a/dlls/msxml3/nodemap.c b/dlls/msxml3/nodemap.c
index ca8d0557465a..419dfa6305dc 100644
--- a/dlls/msxml3/nodemap.c
+++ b/dlls/msxml3/nodemap.c
@@ -21,8 +21,6 @@
 #define COBJMACROS
 
 #include <stdarg.h>
-#include <libxml/parser.h>
-#include <libxml/xmlerror.h>
 
 #include "windef.h"
 #include "winbase.h"
@@ -43,9 +41,9 @@ typedef struct
     DispatchEx dispex;
     IXMLDOMNamedNodeMap IXMLDOMNamedNodeMap_iface;
     ISupportErrorInfo ISupportErrorInfo_iface;
-    LONG ref;
+    LONG refcount;
 
-    xmlNodePtr node;
+    struct domnode *node;
     LONG iterator;
     IEnumVARIANT *enumvariant;
 
@@ -73,41 +71,40 @@ static inline xmlnodemap *impl_from_ISupportErrorInfo( ISupportErrorInfo *iface
     return CONTAINING_RECORD(iface, xmlnodemap, ISupportErrorInfo_iface);
 }
 
-static HRESULT WINAPI xmlnodemap_QueryInterface(
-    IXMLDOMNamedNodeMap *iface,
-    REFIID riid, void** ppvObject )
+static HRESULT WINAPI xmlnodemap_QueryInterface(IXMLDOMNamedNodeMap *iface, REFIID riid, void **obj)
 {
-    xmlnodemap *This = impl_from_IXMLDOMNamedNodeMap( iface );
-    TRACE("(%p)->(%s %p)\n", iface, debugstr_guid(riid), ppvObject);
+    xmlnodemap *map = impl_from_IXMLDOMNamedNodeMap(iface);
 
-    if( IsEqualGUID( riid, &IID_IUnknown ) ||
-        IsEqualGUID( riid, &IID_IDispatch ) ||
-        IsEqualGUID( riid, &IID_IXMLDOMNamedNodeMap ) )
+    TRACE("%p, %s, %p.\n", iface, debugstr_guid(riid), obj);
+
+    if (IsEqualGUID( riid, &IID_IUnknown) ||
+        IsEqualGUID( riid, &IID_IDispatch) ||
+        IsEqualGUID( riid, &IID_IXMLDOMNamedNodeMap))
     {
-        *ppvObject = iface;
+        *obj = iface;
     }
-    else if (IsEqualGUID( riid, &IID_IEnumVARIANT ))
+    else if (IsEqualGUID(riid, &IID_IEnumVARIANT))
     {
-        if (!This->enumvariant)
+        if (!map->enumvariant)
         {
-            HRESULT hr = create_enumvariant((IUnknown*)iface, FALSE, &nodemap_enumvariant, &This->enumvariant);
+            HRESULT hr = create_enumvariant((IUnknown*)iface, FALSE, &nodemap_enumvariant, &map->enumvariant);
             if (FAILED(hr)) return hr;
         }
 
-        return IEnumVARIANT_QueryInterface(This->enumvariant, &IID_IEnumVARIANT, ppvObject);
+        return IEnumVARIANT_QueryInterface(map->enumvariant, &IID_IEnumVARIANT, obj);
     }
-    else if (dispex_query_interface(&This->dispex, riid, ppvObject))
+    else if (dispex_query_interface(&map->dispex, riid, obj))
     {
-        return *ppvObject ? S_OK : E_NOINTERFACE;
+        return *obj ? S_OK : E_NOINTERFACE;
     }
-    else if( IsEqualGUID( riid, &IID_ISupportErrorInfo ))
+    else if (IsEqualGUID( riid, &IID_ISupportErrorInfo))
     {
-        *ppvObject = &This->ISupportErrorInfo_iface;
+        *obj = &map->ISupportErrorInfo_iface;
     }
     else
     {
         TRACE("interface %s not implemented\n", debugstr_guid(riid));
-        *ppvObject = NULL;
+        *obj = NULL;
         return E_NOINTERFACE;
     }
 
@@ -116,188 +113,150 @@ static HRESULT WINAPI xmlnodemap_QueryInterface(
     return S_OK;
 }
 
-static ULONG WINAPI xmlnodemap_AddRef(
-    IXMLDOMNamedNodeMap *iface )
+static ULONG WINAPI xmlnodemap_AddRef(IXMLDOMNamedNodeMap *iface)
 {
-    xmlnodemap *This = impl_from_IXMLDOMNamedNodeMap( iface );
-    ULONG ref = InterlockedIncrement( &This->ref );
-    TRACE("%p, refcount %lu.\n", iface, ref);
-    return ref;
+    xmlnodemap *map = impl_from_IXMLDOMNamedNodeMap(iface);
+    ULONG refcount = InterlockedIncrement(&map->refcount);
+
+    TRACE("%p, refcount %lu.\n", iface, refcount);
+
+    return refcount;
 }
 
-static ULONG WINAPI xmlnodemap_Release(
-    IXMLDOMNamedNodeMap *iface )
+static ULONG WINAPI xmlnodemap_Release(IXMLDOMNamedNodeMap *iface)
 {
-    xmlnodemap *This = impl_from_IXMLDOMNamedNodeMap( iface );
-    ULONG ref = InterlockedDecrement( &This->ref );
+    xmlnodemap *map = impl_from_IXMLDOMNamedNodeMap(iface);
+    ULONG refcount = InterlockedDecrement(&map->refcount);
 
-    TRACE("%p, refcount %lu.\n", iface, ref);
+    TRACE("%p, refcount %lu.\n", iface, refcount);
 
-    if (!ref)
+    if (!refcount)
     {
-        xmlnode_release( This->node );
-        xmldoc_release( This->node->doc );
-        if (This->enumvariant) IEnumVARIANT_Release(This->enumvariant);
-        free( This );
+        domnode_release(map->node);
+        if (map->enumvariant)
+            IEnumVARIANT_Release(map->enumvariant);
+        free(map);
     }
 
-    return ref;
+    return refcount;
 }
 
-static HRESULT WINAPI xmlnodemap_GetTypeInfoCount(
-    IXMLDOMNamedNodeMap *iface,
-    UINT* pctinfo )
+static HRESULT WINAPI xmlnodemap_GetTypeInfoCount(IXMLDOMNamedNodeMap *iface, UINT *count)
 {
-    xmlnodemap *This = impl_from_IXMLDOMNamedNodeMap( iface );
-    return IDispatchEx_GetTypeInfoCount(&This->dispex.IDispatchEx_iface, pctinfo);
+    xmlnodemap *map = impl_from_IXMLDOMNamedNodeMap(iface);
+    return IDispatchEx_GetTypeInfoCount(&map->dispex.IDispatchEx_iface, count);
 }
 
-static HRESULT WINAPI xmlnodemap_GetTypeInfo(
-    IXMLDOMNamedNodeMap *iface,
-    UINT iTInfo, LCID lcid,
-    ITypeInfo** ppTInfo )
+static HRESULT WINAPI xmlnodemap_GetTypeInfo(IXMLDOMNamedNodeMap *iface, UINT index, LCID lcid, ITypeInfo **ti)
 {
-    xmlnodemap *This = impl_from_IXMLDOMNamedNodeMap( iface );
-    return IDispatchEx_GetTypeInfo(&This->dispex.IDispatchEx_iface,
-        iTInfo, lcid, ppTInfo);
+    xmlnodemap *map = impl_from_IXMLDOMNamedNodeMap(iface);
+    return IDispatchEx_GetTypeInfo(&map->dispex.IDispatchEx_iface, index, lcid, ti);
 }
 
-static HRESULT WINAPI xmlnodemap_GetIDsOfNames(
-    IXMLDOMNamedNodeMap *iface,
-    REFIID riid, LPOLESTR* rgszNames,
-    UINT cNames, LCID lcid, DISPID* rgDispId )
+static HRESULT WINAPI xmlnodemap_GetIDsOfNames(IXMLDOMNamedNodeMap *iface, REFIID riid, LPOLESTR *rgszNames,
+        UINT cNames, LCID lcid, DISPID *rgDispId)
 {
-    xmlnodemap *This = impl_from_IXMLDOMNamedNodeMap( iface );
-    return IDispatchEx_GetIDsOfNames(&This->dispex.IDispatchEx_iface,
-        riid, rgszNames, cNames, lcid, rgDispId);
+    xmlnodemap *map = impl_from_IXMLDOMNamedNodeMap(iface);
+    return IDispatchEx_GetIDsOfNames(&map->dispex.IDispatchEx_iface, riid, rgszNames, cNames, lcid, rgDispId);
 }
 
-static HRESULT WINAPI xmlnodemap_Invoke(
-    IXMLDOMNamedNodeMap *iface,
-    DISPID dispIdMember, REFIID riid, LCID lcid,
-    WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarResult,
-    EXCEPINFO* pExcepInfo, UINT* puArgErr )
+static HRESULT WINAPI xmlnodemap_Invoke(IXMLDOMNamedNodeMap *iface, DISPID dispIdMember, REFIID riid, LCID lcid,
+        WORD flags, DISPPARAMS *params, VARIANT *result, EXCEPINFO *ei, UINT *puArgErr)
 {
-    xmlnodemap *This = impl_from_IXMLDOMNamedNodeMap( iface );
-    return IDispatchEx_Invoke(&This->dispex.IDispatchEx_iface,
-        dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
+    xmlnodemap *map = impl_from_IXMLDOMNamedNodeMap(iface);
+    return IDispatchEx_Invoke(&map->dispex.IDispatchEx_iface, dispIdMember, riid, lcid, flags, params, result, ei, puArgErr);
 }
 
-static HRESULT WINAPI xmlnodemap_getNamedItem(
-    IXMLDOMNamedNodeMap *iface,
-    BSTR name,
-    IXMLDOMNode** item)
+static HRESULT WINAPI xmlnodemap_getNamedItem(IXMLDOMNamedNodeMap *iface, BSTR name, IXMLDOMNode **item)
 {
-    xmlnodemap *This = impl_from_IXMLDOMNamedNodeMap( iface );
+    xmlnodemap *map = impl_from_IXMLDOMNamedNodeMap(iface);
 
-    TRACE("(%p)->(%s %p)\n", This, debugstr_w(name), item );
+    TRACE("%p, %s, %p.\n", iface, debugstr_w(name), item);
 
-    return This->funcs->get_named_item(This->node, name, item);
+    return map->funcs->get_named_item(map->node, name, item);
 }
 
-static HRESULT WINAPI xmlnodemap_setNamedItem(
-    IXMLDOMNamedNodeMap *iface,
-    IXMLDOMNode* newItem,
-    IXMLDOMNode** namedItem)
+static HRESULT WINAPI xmlnodemap_setNamedItem(IXMLDOMNamedNodeMap *iface, IXMLDOMNode *newItem, IXMLDOMNode **namedItem)
 {
-    xmlnodemap *This = impl_from_IXMLDOMNamedNodeMap( iface );
+    xmlnodemap *map = impl_from_IXMLDOMNamedNodeMap(iface);
 
-    TRACE("(%p)->(%p %p)\n", This, newItem, namedItem );
+    TRACE("%p, %p, %p.\n", iface, newItem, namedItem );
 
-    return This->funcs->set_named_item(This->node, newItem, namedItem);
+    return map->funcs->set_named_item(map->node, newItem, namedItem);
 }
 
-static HRESULT WINAPI xmlnodemap_removeNamedItem(
-    IXMLDOMNamedNodeMap *iface,
-    BSTR name,
-    IXMLDOMNode** namedItem)
+static HRESULT WINAPI xmlnodemap_removeNamedItem(IXMLDOMNamedNodeMap *iface, BSTR name, IXMLDOMNode **namedItem)
 {
-    xmlnodemap *This = impl_from_IXMLDOMNamedNodeMap( iface );
+    xmlnodemap *map = impl_from_IXMLDOMNamedNodeMap(iface);
 
-    TRACE("(%p)->(%s %p)\n", This, debugstr_w(name), namedItem );
+    TRACE("%p, %s, %p.\n", iface, debugstr_w(name), namedItem);
 
-    return This->funcs->remove_named_item(This->node, name, namedItem);
+    return map->funcs->remove_named_item(map->node, name, namedItem);
 }
 
-static HRESULT WINAPI xmlnodemap_get_item(
-    IXMLDOMNamedNodeMap *iface,
-    LONG index,
-    IXMLDOMNode** item)
+static HRESULT WINAPI xmlnodemap_get_item(IXMLDOMNamedNodeMap *iface, LONG index, IXMLDOMNode **item)
 {
-    xmlnodemap *This = impl_from_IXMLDOMNamedNodeMap( iface );
+    xmlnodemap *map = impl_from_IXMLDOMNamedNodeMap(iface);
 
     TRACE("%p, %ld, %p.\n", iface, index, item);
 
-    return This->funcs->get_item(This->node, index, item);
+    return map->funcs->get_item(map->node, index, item);
 }
 
-static HRESULT WINAPI xmlnodemap_get_length(
-    IXMLDOMNamedNodeMap *iface,
-    LONG *length)
+static HRESULT WINAPI xmlnodemap_get_length(IXMLDOMNamedNodeMap *iface, LONG *length)
 {
-    xmlnodemap *This = impl_from_IXMLDOMNamedNodeMap( iface );
+    xmlnodemap *map = impl_from_IXMLDOMNamedNodeMap(iface);
 
-    TRACE("(%p)->(%p)\n", This, length);
+    TRACE("%p, %p.\n", iface, length);
 
-    return This->funcs->get_length(This->node, length);
+    return map->funcs->get_length(map->node, length);
 }
 
-static HRESULT WINAPI xmlnodemap_getQualifiedItem(
-    IXMLDOMNamedNodeMap *iface,
-    BSTR baseName,
-    BSTR namespaceURI,
-    IXMLDOMNode** item)
+static HRESULT WINAPI xmlnodemap_getQualifiedItem(IXMLDOMNamedNodeMap *iface,
+        BSTR baseName, BSTR namespaceURI, IXMLDOMNode **item)
 {
-    xmlnodemap *This = impl_from_IXMLDOMNamedNodeMap( iface );
+    xmlnodemap *map = impl_from_IXMLDOMNamedNodeMap(iface);
 
-    TRACE("(%p)->(%s %s %p)\n", This, debugstr_w(baseName), debugstr_w(namespaceURI), item);
+    TRACE("%p, %s, %s, %p.\n", iface, debugstr_w(baseName), debugstr_w(namespaceURI), item);
 
-    return This->funcs->get_qualified_item(This->node, baseName, namespaceURI, item);
+    return map->funcs->get_qualified_item(map->node, baseName, namespaceURI, item);
 }
 
-static HRESULT WINAPI xmlnodemap_removeQualifiedItem(
-    IXMLDOMNamedNodeMap *iface,
-    BSTR baseName,
-    BSTR namespaceURI,
-    IXMLDOMNode** item)
+static HRESULT WINAPI xmlnodemap_removeQualifiedItem(IXMLDOMNamedNodeMap *iface, BSTR baseName,
+        BSTR namespaceURI, IXMLDOMNode **item)
 {
-    xmlnodemap *This = impl_from_IXMLDOMNamedNodeMap( iface );
+    xmlnodemap *map = impl_from_IXMLDOMNamedNodeMap(iface);
 
-    TRACE("(%p)->(%s %s %p)\n", This, debugstr_w(baseName), debugstr_w(namespaceURI), item);
+    TRACE("%p, %s, %s, %p.\n", iface, debugstr_w(baseName), debugstr_w(namespaceURI), item);
 
-    return This->funcs->remove_qualified_item(This->node, baseName, namespaceURI, item);
+    return map->funcs->remove_qualified_item(map->node, baseName, namespaceURI, item);
 }
 
-static HRESULT WINAPI xmlnodemap_nextNode(
-    IXMLDOMNamedNodeMap *iface,
-    IXMLDOMNode** nextItem)
+static HRESULT WINAPI xmlnodemap_nextNode(IXMLDOMNamedNodeMap *iface, IXMLDOMNode **nextItem)
 {
-    xmlnodemap *This = impl_from_IXMLDOMNamedNodeMap( iface );
+    xmlnodemap *map = impl_from_IXMLDOMNamedNodeMap(iface);
 
-    TRACE("%p, %p, %ld.\n", iface, nextItem, This->iterator);
+    TRACE("%p, %p, %ld.\n", iface, nextItem, map->iterator);
 
-    return This->funcs->next_node(This->node, &This->iterator, nextItem);
+    return map->funcs->next_node(map->node, &map->iterator, nextItem);
 }
 
-static HRESULT WINAPI xmlnodemap_reset(
-    IXMLDOMNamedNodeMap *iface )
+static HRESULT WINAPI xmlnodemap_reset(IXMLDOMNamedNodeMap *iface)
 {
-    xmlnodemap *This = impl_from_IXMLDOMNamedNodeMap( iface );
+    xmlnodemap *map = impl_from_IXMLDOMNamedNodeMap(iface);
 
-    TRACE("%p, %ld.\n", iface, This->iterator);
+    TRACE("%p, %ld.\n", iface, map->iterator);
 
-    This->iterator = 0;
+    map->iterator = 0;
 
     return S_OK;
 }
 
-static HRESULT WINAPI xmlnodemap__newEnum(
-    IXMLDOMNamedNodeMap *iface,
-    IUnknown** enumv)
+static HRESULT WINAPI xmlnodemap__newEnum(IXMLDOMNamedNodeMap *iface, IUnknown **enumv)
 {
-    xmlnodemap *This = impl_from_IXMLDOMNamedNodeMap( iface );
-    TRACE("(%p)->(%p)\n", This, enumv);
-    return create_enumvariant((IUnknown*)iface, TRUE, &nodemap_enumvariant, (IEnumVARIANT**)enumv);
+    TRACE("%p, %p.\n", iface, enumv);
+
+    return create_enumvariant((IUnknown *)iface, TRUE, &nodemap_enumvariant, (IEnumVARIANT **)enumv);
 }
 
 static const struct IXMLDOMNamedNodeMapVtbl XMLDOMNamedNodeMapVtbl =
@@ -321,9 +280,7 @@ static const struct IXMLDOMNamedNodeMapVtbl XMLDOMNamedNodeMapVtbl =
     xmlnodemap__newEnum,
 };
 
-static HRESULT WINAPI support_error_QueryInterface(
-    ISupportErrorInfo *iface,
-    REFIID riid, void** ppvObject )
+static HRESULT WINAPI support_error_QueryInterface(ISupportErrorInfo *iface, REFIID riid, void** ppvObject )
 {
     xmlnodemap *This = impl_from_ISupportErrorInfo( iface );
     TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppvObject);
@@ -379,7 +336,7 @@ static HRESULT xmlnodemap_get_dispid(IUnknown *iface, BSTR name, DWORD flags, DI
 static HRESULT xmlnodemap_invoke(IUnknown *iface, DISPID id, LCID lcid, WORD flags, DISPPARAMS *params,
         VARIANT *res, EXCEPINFO *ei)
 {
-    xmlnodemap *This = impl_from_IXMLDOMNamedNodeMap( (IXMLDOMNamedNodeMap*)iface );
+    xmlnodemap *map = impl_from_IXMLDOMNamedNodeMap((IXMLDOMNamedNodeMap *)iface);
 
     TRACE("%p, %ld, %lx, %x, %p, %p, %p.\n", iface, id, lcid, flags, params, res, ei);
 
@@ -395,7 +352,7 @@ static HRESULT xmlnodemap_invoke(IUnknown *iface, DISPID id, LCID lcid, WORD fla
         {
             IXMLDOMNode *disp = NULL;
 
-            IXMLDOMNamedNodeMap_get_item(&This->IXMLDOMNamedNodeMap_iface, id - DISPID_DOM_COLLECTION_BASE, &disp);
+            IXMLDOMNamedNodeMap_get_item(&map->IXMLDOMNamedNodeMap_iface, id - DISPID_DOM_COLLECTION_BASE, &disp);
             V_DISPATCH(res) = (IDispatch*)disp;
             break;
         }
@@ -411,43 +368,44 @@ static HRESULT xmlnodemap_invoke(IUnknown *iface, DISPID id, LCID lcid, WORD fla
     return S_OK;
 }
 
-static const dispex_static_data_vtbl_t xmlnodemap_dispex_vtbl = {
+static const dispex_static_data_vtbl_t xmlnodemap_dispex_vtbl =
+{
     xmlnodemap_get_dispid,
     xmlnodemap_invoke
 };
 
-static const tid_t xmlnodemap_iface_tids[] = {
+static const tid_t xmlnodemap_iface_tids[] =
+{
     IXMLDOMNamedNodeMap_tid,
     0
 };
 
-static dispex_static_data_t xmlnodemap_dispex = {
+static dispex_static_data_t xmlnodemap_dispex =
+{
     &xmlnodemap_dispex_vtbl,
     IXMLDOMNamedNodeMap_tid,
     NULL,
     xmlnodemap_iface_tids
 };
 
-IXMLDOMNamedNodeMap *create_nodemap(xmlNodePtr node, const struct nodemap_funcs *funcs)
+HRESULT create_nodemap(struct domnode *node, const struct nodemap_funcs *funcs, IXMLDOMNamedNodeMap **map)
 {
-    xmlnodemap *This;
+    xmlnodemap *object;
 
-    This = malloc(sizeof(*This));
-    if ( !This )
-        return NULL;
+    *map = NULL;
 
-    This->IXMLDOMNamedNodeMap_iface.lpVtbl = &XMLDOMNamedNodeMapVtbl;
-    This->ISupportErrorInfo_iface.lpVtbl = &SupportErrorInfoVtbl;
-    This->node = node;
-    This->ref = 1;
-    This->iterator = 0;
-    This->enumvariant = NULL;
-    This->funcs = funcs;
+    if (!(object = calloc(1, sizeof(*object))))
+        return E_OUTOFMEMORY;
 
-    init_dispex(&This->dispex, (IUnknown*)&This->IXMLDOMNamedNodeMap_iface, &xmlnodemap_dispex);
+    object->IXMLDOMNamedNodeMap_iface.lpVtbl = &XMLDOMNamedNodeMapVtbl;
+    object->ISupportErrorInfo_iface.lpVtbl = &SupportErrorInfoVtbl;
+    object->refcount = 1;
+    object->funcs = funcs;
+    object->node = domnode_addref(node);
 
-    xmlnode_add_ref(node);
-    xmldoc_add_ref(node->doc);
+    init_dispex(&object->dispex, (IUnknown *)&object->IXMLDOMNamedNodeMap_iface, &xmlnodemap_dispex);
 
-    return &This->IXMLDOMNamedNodeMap_iface;
+    *map = &object->IXMLDOMNamedNodeMap_iface;
+
+    return S_OK;
 }
diff --git a/dlls/msxml3/pi.c b/dlls/msxml3/pi.c
index e37cf644f1b2..6f98218f1083 100644
--- a/dlls/msxml3/pi.c
+++ b/dlls/msxml3/pi.c
@@ -21,8 +21,6 @@
 #define COBJMACROS
 
 #include <stdarg.h>
-#include <libxml/parser.h>
-#include <libxml/xmlerror.h>
 
 #include "windef.h"
 #include "winbase.h"
@@ -39,14 +37,16 @@ WINE_DEFAULT_DEBUG_CHANNEL(msxml);
 
 typedef struct _dom_pi
 {
-    xmlnode node;
+    DispatchEx dispex;
     IXMLDOMProcessingInstruction IXMLDOMProcessingInstruction_iface;
-    LONG ref;
+    LONG refcount;
+    struct domnode *node;
 } dom_pi;
 
 static const struct nodemap_funcs dom_pi_attr_map;
 
-static const tid_t dompi_se_tids[] = {
+static const tid_t dompi_se_tids[] =
+{
     IXMLDOMNode_tid,
     IXMLDOMProcessingInstruction_tid,
     NULL_tid
@@ -57,81 +57,78 @@ static inline dom_pi *impl_from_IXMLDOMProcessingInstruction( IXMLDOMProcessingI
     return CONTAINING_RECORD(iface, dom_pi, IXMLDOMProcessingInstruction_iface);
 }
 
-static HRESULT WINAPI dom_pi_QueryInterface(
-    IXMLDOMProcessingInstruction *iface,
-    REFIID riid,
-    void** ppvObject )
+static HRESULT WINAPI dom_pi_QueryInterface(IXMLDOMProcessingInstruction *iface, REFIID riid, void **obj)
 {
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
-    TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppvObject);
+    dom_pi *pi = impl_from_IXMLDOMProcessingInstruction(iface);
+
+    TRACE("%p, %s, %p.\n", iface, debugstr_guid(riid), obj);
 
-    if ( IsEqualGUID( riid, &IID_IXMLDOMProcessingInstruction ) ||
-         IsEqualGUID( riid, &IID_IXMLDOMNode ) ||
-         IsEqualGUID( riid, &IID_IDispatch ) ||
-         IsEqualGUID( riid, &IID_IUnknown ) )
+    if (IsEqualGUID(riid, &IID_IXMLDOMProcessingInstruction) ||
+        IsEqualGUID(riid, &IID_IXMLDOMNode) ||
+        IsEqualGUID(riid, &IID_IDispatch) ||
+        IsEqualGUID(riid, &IID_IUnknown))
     {
-        *ppvObject = iface;
+        *obj = iface;
     }
-    else if(node_query_interface(&This->node, riid, ppvObject))
+    else if (dispex_query_interface(&pi->dispex, riid, obj))
     {
-        return *ppvObject ? S_OK : E_NOINTERFACE;
+        return *obj ? S_OK : E_NOINTERFACE;
     }
-    else if(IsEqualGUID( riid, &IID_ISupportErrorInfo ))
+    else if (node_query_interface(pi->node, riid, obj))
     {
-        return node_create_supporterrorinfo(dompi_se_tids, ppvObject);
+        return *obj ? S_OK : E_NOINTERFACE;
+    }
+    else if (IsEqualGUID(riid, &IID_ISupportErrorInfo))
+    {
+        return node_create_supporterrorinfo(dompi_se_tids, obj);
     }
     else
     {
         TRACE("Unsupported interface %s\n", debugstr_guid(riid));
-        *ppvObject = NULL;
+        *obj = NULL;
         return E_NOINTERFACE;
     }
 
-    IUnknown_AddRef((IUnknown*)*ppvObject);
+    IUnknown_AddRef((IUnknown *)*obj);
     return S_OK;
 }
 
-static ULONG WINAPI dom_pi_AddRef(
-    IXMLDOMProcessingInstruction *iface )
+static ULONG WINAPI dom_pi_AddRef(IXMLDOMProcessingInstruction *iface)
 {
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
-    ULONG ref = InterlockedIncrement( &This->ref );
-    TRACE("%p, refcount %lu.\n", iface, ref);
-    return ref;
+    dom_pi *pi = impl_from_IXMLDOMProcessingInstruction(iface);
+    ULONG refcount = InterlockedIncrement(&pi->refcount);
+
+    TRACE("%p, refcount %lu.\n", iface, refcount);
+
+    return refcount;
 }
 
-static ULONG WINAPI dom_pi_Release(
-    IXMLDOMProcessingInstruction *iface )
+static ULONG WINAPI dom_pi_Release(IXMLDOMProcessingInstruction *iface)
 {
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
-    ULONG ref = InterlockedDecrement( &This->ref );
+    dom_pi *pi = impl_from_IXMLDOMProcessingInstruction(iface);
+    ULONG refcount = InterlockedDecrement(&pi->refcount);
+
+    TRACE("%p, refcount %lu.\n", iface, refcount);
 
-    TRACE("%p, refcount %lu.\n", iface, ref);
-    if ( ref == 0 )
+    if (!refcount)
     {
-        destroy_xmlnode(&This->node);
-        free(This);
+        domnode_release(pi->node);
+        free(pi);
     }
 
-    return ref;
+    return refcount;
 }
 
-static HRESULT WINAPI dom_pi_GetTypeInfoCount(
-    IXMLDOMProcessingInstruction *iface,
-    UINT* pctinfo )
+static HRESULT WINAPI dom_pi_GetTypeInfoCount(IXMLDOMProcessingInstruction *iface, UINT *count)
 {
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
-    return IDispatchEx_GetTypeInfoCount(&This->node.dispex.IDispatchEx_iface, pctinfo);
+    dom_pi *pi = impl_from_IXMLDOMProcessingInstruction(iface);
+    return IDispatchEx_GetTypeInfoCount(&pi->dispex.IDispatchEx_iface, count);
 }
 
-static HRESULT WINAPI dom_pi_GetTypeInfo(
-    IXMLDOMProcessingInstruction *iface,
-    UINT iTInfo, LCID lcid,
-    ITypeInfo** ppTInfo )
+static HRESULT WINAPI dom_pi_GetTypeInfo(IXMLDOMProcessingInstruction *iface, UINT index, LCID lcid, ITypeInfo **ti)
 {
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
-    return IDispatchEx_GetTypeInfo(&This->node.dispex.IDispatchEx_iface,
-        iTInfo, lcid, ppTInfo);
+    dom_pi *pi = impl_from_IXMLDOMProcessingInstruction(iface);
+    return IDispatchEx_GetTypeInfo(&pi->dispex.IDispatchEx_iface, index, lcid, ti);
 }
 
 static HRESULT WINAPI dom_pi_GetIDsOfNames(
@@ -139,8 +136,8 @@ static HRESULT WINAPI dom_pi_GetIDsOfNames(
     REFIID riid, LPOLESTR* rgszNames,
     UINT cNames, LCID lcid, DISPID* rgDispId )
 {
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
-    return IDispatchEx_GetIDsOfNames(&This->node.dispex.IDispatchEx_iface,
+    dom_pi *pi = impl_from_IXMLDOMProcessingInstruction(iface);
+    return IDispatchEx_GetIDsOfNames(&pi->dispex.IDispatchEx_iface,
         riid, rgszNames, cNames, lcid, rgDispId);
 }
 
@@ -150,623 +147,354 @@ static HRESULT WINAPI dom_pi_Invoke(
     WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarResult,
     EXCEPINFO* pExcepInfo, UINT* puArgErr )
 {
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
-    return IDispatchEx_Invoke(&This->node.dispex.IDispatchEx_iface,
+    dom_pi *pi = impl_from_IXMLDOMProcessingInstruction(iface);
+    return IDispatchEx_Invoke(&pi->dispex.IDispatchEx_iface,
         dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
 }
 
-static HRESULT WINAPI dom_pi_get_nodeName(
-    IXMLDOMProcessingInstruction *iface,
-    BSTR* p )
+static HRESULT WINAPI dom_pi_get_nodeName(IXMLDOMProcessingInstruction *iface, BSTR *p)
 {
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
+    dom_pi *pi = impl_from_IXMLDOMProcessingInstruction(iface);
 
-    TRACE("(%p)->(%p)\n", This, p);
+    TRACE("%p, %p.\n", iface, p);
 
-    return node_get_nodeName(&This->node, p);
+    return node_get_name(pi->node, p);
 }
 
-static HRESULT WINAPI dom_pi_get_nodeValue(
-    IXMLDOMProcessingInstruction *iface,
-    VARIANT* value)
+static HRESULT WINAPI dom_pi_get_nodeValue(IXMLDOMProcessingInstruction *iface, VARIANT *value)
 {
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
+    dom_pi *pi = impl_from_IXMLDOMProcessingInstruction(iface);
 
-    TRACE("(%p)->(%p)\n", This, value);
+    TRACE("%p, %p.\n", iface, value);
 
-    return node_get_content(&This->node, value);
+    return node_get_value(pi->node, value);
 }
 
-static HRESULT WINAPI dom_pi_put_nodeValue(
-    IXMLDOMProcessingInstruction *iface,
-    VARIANT value)
+static HRESULT WINAPI dom_pi_put_nodeValue(IXMLDOMProcessingInstruction *iface, VARIANT value)
 {
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
-    BSTR target;
-    HRESULT hr;
-
-    TRACE("(%p)->(%s)\n", This, debugstr_variant(&value));
+    dom_pi *pi = impl_from_IXMLDOMProcessingInstruction(iface);
 
-    /* Cannot set data to a PI node whose target is 'xml' */
-    hr = IXMLDOMProcessingInstruction_get_nodeName(iface, &target);
-    if(hr == S_OK)
-    {
-        if(!wcscmp(target, L"xml"))
-        {
-            SysFreeString(target);
-            return E_FAIL;
-        }
-
-        SysFreeString(target);
-    }
+    TRACE("%p, %s.\n", iface, debugstr_variant(&value));
 
-    return node_put_value(&This->node, &value);
+    return node_put_value(pi->node, &value);
 }
 
-static HRESULT WINAPI dom_pi_get_nodeType(
-    IXMLDOMProcessingInstruction *iface,
-    DOMNodeType* domNodeType )
+static HRESULT WINAPI dom_pi_get_nodeType(IXMLDOMProcessingInstruction *iface, DOMNodeType *type)
 {
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
-
-    TRACE("(%p)->(%p)\n", This, domNodeType);
+    TRACE("%p, %p.\n", iface, type);
 
-    *domNodeType = NODE_PROCESSING_INSTRUCTION;
+    *type = NODE_PROCESSING_INSTRUCTION;
     return S_OK;
 }
 
-static HRESULT WINAPI dom_pi_get_parentNode(
-    IXMLDOMProcessingInstruction *iface,
-    IXMLDOMNode** parent )
+static HRESULT WINAPI dom_pi_get_parentNode(IXMLDOMProcessingInstruction *iface, IXMLDOMNode **parent)
 {
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
+    dom_pi *pi = impl_from_IXMLDOMProcessingInstruction(iface);
 
-    TRACE("(%p)->(%p)\n", This, parent);
+    TRACE("%p, %p.\n", iface, parent);
 
-    return node_get_parent(&This->node, parent);
+    return node_get_parent(pi->node, parent);
 }
 
-static HRESULT WINAPI dom_pi_get_childNodes(
-    IXMLDOMProcessingInstruction *iface,
-    IXMLDOMNodeList** outList)
+static HRESULT WINAPI dom_pi_get_childNodes(IXMLDOMProcessingInstruction *iface, IXMLDOMNodeList **list)
 {
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
+    dom_pi *pi = impl_from_IXMLDOMProcessingInstruction( iface );
 
-    TRACE("(%p)->(%p)\n", This, outList);
+    TRACE("%p, %p.\n", iface, list);
 
-    return node_get_child_nodes(&This->node, outList);
+    return node_get_child_nodes(pi->node, list);
 }
 
-static HRESULT WINAPI dom_pi_get_firstChild(
-    IXMLDOMProcessingInstruction *iface,
-    IXMLDOMNode** domNode)
+static HRESULT WINAPI dom_pi_get_firstChild(IXMLDOMProcessingInstruction *iface, IXMLDOMNode **node)
 {
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
+    TRACE("%p, %p.\n", iface, node);
 
-    TRACE("(%p)->(%p)\n", This, domNode);
-
-    return return_null_node(domNode);
+    return return_null_node(node);
 }
 
-static HRESULT WINAPI dom_pi_get_lastChild(
-    IXMLDOMProcessingInstruction *iface,
-    IXMLDOMNode** domNode)
+static HRESULT WINAPI dom_pi_get_lastChild(IXMLDOMProcessingInstruction *iface, IXMLDOMNode **node)
 {
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
-
-    TRACE("(%p)->(%p)\n", This, domNode);
+    TRACE("%p, %p.\n", iface, node);
 
-    return return_null_node(domNode);
+    return return_null_node(node);
 }
 
-static HRESULT WINAPI dom_pi_get_previousSibling(
-    IXMLDOMProcessingInstruction *iface,
-    IXMLDOMNode** domNode)
+static HRESULT WINAPI dom_pi_get_previousSibling(IXMLDOMProcessingInstruction *iface, IXMLDOMNode **node)
 {
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
+    dom_pi *pi = impl_from_IXMLDOMProcessingInstruction(iface);
 
-    TRACE("(%p)->(%p)\n", This, domNode);
+    TRACE("%p, %p.\n", iface, node);
 
-    return node_get_previous_sibling(&This->node, domNode);
+    return node_get_previous_sibling(pi->node, node);
 }
 
-static HRESULT WINAPI dom_pi_get_nextSibling(
-    IXMLDOMProcessingInstruction *iface,
-    IXMLDOMNode** domNode)
+static HRESULT WINAPI dom_pi_get_nextSibling(IXMLDOMProcessingInstruction *iface, IXMLDOMNode **node)
 {
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
+    dom_pi *pi = impl_from_IXMLDOMProcessingInstruction(iface);
 
-    TRACE("(%p)->(%p)\n", This, domNode);
+    TRACE("%p, %p.\n", iface, node);
 
-    return node_get_next_sibling(&This->node, domNode);
+    return node_get_next_sibling(pi->node, node);
 }
 
-static HRESULT xml_get_value(xmlChar **p, xmlChar **value)
+static HRESULT WINAPI dom_pi_get_attributes(IXMLDOMProcessingInstruction *iface, IXMLDOMNamedNodeMap **map)
 {
-    xmlChar *v, q;
-    int len;
-
-    while (isspace(**p)) *p += 1;
-    if (**p != '=') return XML_E_MISSINGEQUALS;
-    *p += 1;
+    dom_pi *pi = impl_from_IXMLDOMProcessingInstruction(iface);
 
-    while (isspace(**p)) *p += 1;
-    if (**p != '"' && **p != '\'') return XML_E_MISSINGQUOTE;
-    q = **p;
-    *p += 1;
-
-    v = *p;
-    while (**p && **p != q) *p += 1;
-    if (!**p) return XML_E_BADCHARINSTRING;
-    len = *p - v;
-    if (!len) return XML_E_MISSINGNAME;
-    *p += 1;
-
-    *value = malloc(len + 1);
-    if (!*value) return E_OUTOFMEMORY;
-    memcpy(*value, v, len);
-    *(*value + len) = 0;
-
-    return S_OK;
-}
+    TRACE("%p, %p.\n", iface, map);
 
-static void set_prop(xmlNodePtr node, xmlAttrPtr attr)
-{
-    xmlAttrPtr prop;
+    if (!map) return E_INVALIDARG;
 
-    if (!node->properties)
+    if (!wcscmp(pi->node->name, L"xml"))
     {
-        node->properties = attr;
-        return;
+        return create_nodemap(pi->node, &dom_pi_attr_map, map);
+    }
+    else
+    {
+        *map = NULL;
+        return S_FALSE;
     }
-
-    prop = node->properties;
-    while (prop->next) prop = prop->next;
-
-    prop->next = attr;
 }
 
-static HRESULT parse_xml_decl(xmlNodePtr node)
+static HRESULT WINAPI dom_pi_insertBefore(IXMLDOMProcessingInstruction *iface, IXMLDOMNode *newNode, VARIANT refChild,
+        IXMLDOMNode** outOldNode)
 {
-    xmlChar *version, *encoding, *standalone, *p;
-    xmlAttrPtr attr;
-    HRESULT hr = S_OK;
-
-    if (!node->content) return S_OK;
-
-    version = encoding = standalone = NULL;
+    dom_pi *pi = impl_from_IXMLDOMProcessingInstruction(iface);
 
-    p = node->content;
+    FIXME("%p, %p, %s, %p needs test\n", iface, newNode, debugstr_variant(&refChild), outOldNode);
 
-    while (*p)
-    {
-        while (isspace(*p)) p++;
-        if (!*p) break;
-
-        if (!strncmp((const char *)p, "version", 7))
-        {
-            p += 7;
-            if ((hr = xml_get_value(&p, &version)) != S_OK) goto fail;
-        }
-        else if (!strncmp((const char *)p, "encoding", 8))
-        {
-            p += 8;
-            if ((hr = xml_get_value(&p, &encoding)) != S_OK) goto fail;
-        }
-        else if (!strncmp((const char *)p, "standalone", 10))
-        {
-            p += 10;
-            if ((hr = xml_get_value(&p, &standalone)) != S_OK) goto fail;
-        }
-        else
-        {
-            FIXME("unexpected XML attribute %s\n", debugstr_a((const char *)p));
-            hr = XML_E_UNEXPECTED_ATTRIBUTE;
-            goto fail;
-        }
-    }
+    return node_insert_before(pi->node, newNode, &refChild, outOldNode);
+}
 
-    /* xmlSetProp/xmlSetNsProp accept only nodes of type XML_ELEMENT_NODE,
-     * so we have to create and assign attributes to a node by hand.
-     */
+static HRESULT WINAPI dom_pi_replaceChild(IXMLDOMProcessingInstruction *iface, IXMLDOMNode *newNode,
+        IXMLDOMNode* oldNode, IXMLDOMNode** outOldNode)
+{
+    dom_pi *pi = impl_from_IXMLDOMProcessingInstruction(iface);
 
-    if (version)
-    {
-        attr = xmlSetNsProp(NULL, NULL, (const xmlChar *)"version", version);
-        if (attr)
-        {
-            attr->doc = node->doc;
-            set_prop(node, attr);
-        }
-        else hr = E_OUTOFMEMORY;
-    }
-    if (encoding)
-    {
-        attr = xmlSetNsProp(NULL, NULL, (const xmlChar *)"encoding", encoding);
-        if (attr)
-        {
-            attr->doc = node->doc;
-            set_prop(node, attr);
-        }
-        else hr = E_OUTOFMEMORY;
-    }
-    if (standalone)
-    {
-        attr = xmlSetNsProp(NULL, NULL, (const xmlChar *)"standalone", standalone);
-        if (attr)
-        {
-            attr->doc = node->doc;
-            set_prop(node, attr);
-        }
-        else hr = E_OUTOFMEMORY;
-    }
+    FIXME("%p, %p, %p, %p needs test\n", iface, newNode, oldNode, outOldNode);
 
-fail:
-    if (hr != S_OK)
-    {
-        xmlFreePropList(node->properties);
-        node->properties = NULL;
-    }
-
-    free(version);
-    free(encoding);
-    free(standalone);
-    return hr;
+    return node_replace_child(pi->node, newNode, oldNode, outOldNode);
 }
 
-static HRESULT WINAPI dom_pi_get_attributes(
-    IXMLDOMProcessingInstruction *iface,
-    IXMLDOMNamedNodeMap** map)
+static HRESULT WINAPI dom_pi_removeChild(IXMLDOMProcessingInstruction *iface, IXMLDOMNode *child, IXMLDOMNode **oldChild)
 {
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
-    HRESULT hr;
-    BSTR name;
-
-    TRACE("(%p)->(%p)\n", This, map);
-
-    if (!map) return E_INVALIDARG;
+    dom_pi *pi = impl_from_IXMLDOMProcessingInstruction(iface);
 
-    *map = NULL;
+    TRACE("%p, %p, %p.\n", iface, child, oldChild);
 
-    hr = node_get_nodeName(&This->node, &name);
-    if (hr != S_OK) return hr;
+    return node_remove_child(pi->node, child, oldChild);
+}
 
-    if (!wcscmp(name, L"xml"))
-        *map = create_nodemap(This->node.node, &dom_pi_attr_map);
+static HRESULT WINAPI dom_pi_appendChild(IXMLDOMProcessingInstruction *iface, IXMLDOMNode *child, IXMLDOMNode **outChild)
+{
+    dom_pi *pi = impl_from_IXMLDOMProcessingInstruction(iface);
 
-    SysFreeString(name);
+    TRACE("%p, %p, %p.\n", iface, child, outChild);
 
-    return *map ? S_OK : S_FALSE;
+    return node_append_child(pi->node, child, outChild);
 }
 
-static HRESULT WINAPI dom_pi_insertBefore(
-    IXMLDOMProcessingInstruction *iface,
-    IXMLDOMNode* newNode, VARIANT refChild,
-    IXMLDOMNode** outOldNode)
+static HRESULT WINAPI dom_pi_hasChildNodes(IXMLDOMProcessingInstruction *iface, VARIANT_BOOL *ret)
 {
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
+    dom_pi *pi = impl_from_IXMLDOMProcessingInstruction( iface );
 
-    FIXME("(%p)->(%p %s %p) needs test\n", This, newNode, debugstr_variant(&refChild), outOldNode);
+    TRACE("%p, %p.\n", iface, ret);
 
-    return node_insert_before(&This->node, newNode, &refChild, outOldNode);
+    return node_has_childnodes(pi->node, ret);
 }
 
-static HRESULT WINAPI dom_pi_replaceChild(
-    IXMLDOMProcessingInstruction *iface,
-    IXMLDOMNode* newNode,
-    IXMLDOMNode* oldNode,
-    IXMLDOMNode** outOldNode)
+static HRESULT WINAPI dom_pi_get_ownerDocument(IXMLDOMProcessingInstruction *iface, IXMLDOMDocument **doc)
 {
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
+    dom_pi *pi = impl_from_IXMLDOMProcessingInstruction(iface);
 
-    FIXME("(%p)->(%p %p %p) needs test\n", This, newNode, oldNode, outOldNode);
+    TRACE("%p, %p.\n", iface, doc);
 
-    return node_replace_child(&This->node, newNode, oldNode, outOldNode);
+    return node_get_owner_document(pi->node, doc);
 }
 
-static HRESULT WINAPI dom_pi_removeChild(
-    IXMLDOMProcessingInstruction *iface,
-    IXMLDOMNode *child, IXMLDOMNode **oldChild)
+static HRESULT WINAPI dom_pi_cloneNode(IXMLDOMProcessingInstruction *iface, VARIANT_BOOL deep, IXMLDOMNode **node)
 {
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
-    TRACE("(%p)->(%p %p)\n", This, child, oldChild);
-    return node_remove_child(&This->node, child, oldChild);
-}
+    dom_pi *pi = impl_from_IXMLDOMProcessingInstruction(iface);
 
-static HRESULT WINAPI dom_pi_appendChild(
-    IXMLDOMProcessingInstruction *iface,
-    IXMLDOMNode *child, IXMLDOMNode **outChild)
-{
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
-    TRACE("(%p)->(%p %p)\n", This, child, outChild);
-    return node_append_child(&This->node, child, outChild);
-}
+    TRACE("%p, %d, %p.\n", iface, deep, node);
 
-static HRESULT WINAPI dom_pi_hasChildNodes(
-    IXMLDOMProcessingInstruction *iface,
-    VARIANT_BOOL *ret)
-{
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
-    TRACE("(%p)->(%p)\n", This, ret);
-    return node_has_childnodes(&This->node, ret);
+    return node_clone(pi->node, deep, node);
 }
 
-static HRESULT WINAPI dom_pi_get_ownerDocument(
-    IXMLDOMProcessingInstruction *iface,
-    IXMLDOMDocument **doc)
+static HRESULT WINAPI dom_pi_get_nodeTypeString(IXMLDOMProcessingInstruction *iface, BSTR *p)
 {
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
-    TRACE("(%p)->(%p)\n", This, doc);
-    return node_get_owner_doc(&This->node, doc);
-}
+    TRACE("%p, %p.\n", iface, p);
 
-static HRESULT WINAPI dom_pi_cloneNode(
-    IXMLDOMProcessingInstruction *iface,
-    VARIANT_BOOL deep, IXMLDOMNode** outNode)
-{
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
-    TRACE("(%p)->(%d %p)\n", This, deep, outNode);
-    return node_clone( &This->node, deep, outNode );
+    return return_bstr(L"processinginstruction", p);
 }
 
-static HRESULT WINAPI dom_pi_get_nodeTypeString(
-    IXMLDOMProcessingInstruction *iface,
-    BSTR* p)
+static HRESULT WINAPI dom_pi_get_text(IXMLDOMProcessingInstruction *iface, BSTR *p)
 {
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
+    dom_pi *pi = impl_from_IXMLDOMProcessingInstruction(iface);
 
-    TRACE("(%p)->(%p)\n", This, p);
+    TRACE("%p, %p.\n", iface, p);
 
-    return return_bstr(L"processinginstruction", p);
+    return node_get_text(pi->node, p);
 }
 
-static HRESULT WINAPI dom_pi_get_text(
-    IXMLDOMProcessingInstruction *iface,
-    BSTR* p)
+static HRESULT WINAPI dom_pi_put_text(IXMLDOMProcessingInstruction *iface, BSTR p)
 {
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
-    TRACE("(%p)->(%p)\n", This, p);
-    return node_get_text(&This->node, p);
-}
+    dom_pi *pi = impl_from_IXMLDOMProcessingInstruction(iface);
 
-static HRESULT WINAPI dom_pi_put_text(
-    IXMLDOMProcessingInstruction *iface,
-    BSTR p)
-{
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
-    TRACE("(%p)->(%s)\n", This, debugstr_w(p));
-    return node_put_text( &This->node, p );
+    TRACE("%p, %s.\n", iface, debugstr_w(p));
+
+    return node_put_data(pi->node, p);
 }
 
-static HRESULT WINAPI dom_pi_get_specified(
-    IXMLDOMProcessingInstruction *iface,
-    VARIANT_BOOL* isSpecified)
+static HRESULT WINAPI dom_pi_get_specified(IXMLDOMProcessingInstruction *iface, VARIANT_BOOL *v)
 {
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
-    FIXME("(%p)->(%p) stub!\n", This, isSpecified);
-    *isSpecified = VARIANT_TRUE;
+    FIXME("%p, %p stub!\n", iface, v);
+
+    *v = VARIANT_TRUE;
     return S_OK;
 }
 
-static HRESULT WINAPI dom_pi_get_definition(
-    IXMLDOMProcessingInstruction *iface,
-    IXMLDOMNode** definitionNode)
+static HRESULT WINAPI dom_pi_get_definition(IXMLDOMProcessingInstruction *iface, IXMLDOMNode **node)
 {
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
-    FIXME("(%p)->(%p)\n", This, definitionNode);
+    FIXME("%p, %p.\n", iface, node);
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI dom_pi_get_nodeTypedValue(
-    IXMLDOMProcessingInstruction *iface,
-    VARIANT* v)
+static HRESULT WINAPI dom_pi_get_nodeTypedValue(IXMLDOMProcessingInstruction *iface, VARIANT *v)
 {
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
-    TRACE("(%p)->(%p)\n", This, v);
-    return node_get_content(&This->node, v);
+    dom_pi *pi = impl_from_IXMLDOMProcessingInstruction(iface);
+
+    TRACE("%p, %p.\n", iface, v);
+
+    return node_get_value(pi->node, v);
 }
 
-static HRESULT WINAPI dom_pi_put_nodeTypedValue(
-    IXMLDOMProcessingInstruction *iface,
-    VARIANT typedValue)
+static HRESULT WINAPI dom_pi_put_nodeTypedValue(IXMLDOMProcessingInstruction *iface, VARIANT v)
 {
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
-    FIXME("(%p)->(%s)\n", This, debugstr_variant(&typedValue));
+    FIXME("%p, %s.\n", iface, debugstr_variant(&v));
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI dom_pi_get_dataType(
-    IXMLDOMProcessingInstruction *iface,
-    VARIANT* typename)
+static HRESULT WINAPI dom_pi_get_dataType(IXMLDOMProcessingInstruction *iface, VARIANT *v)
 {
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
-    TRACE("(%p)->(%p)\n", This, typename);
-    return return_null_var( typename );
+    TRACE("%p, %p.\n", iface, v);
+
+    return return_null_var(v);
 }
 
-static HRESULT WINAPI dom_pi_put_dataType(
-    IXMLDOMProcessingInstruction *iface,
-    BSTR p)
+static HRESULT WINAPI dom_pi_put_dataType(IXMLDOMProcessingInstruction *iface, BSTR p)
 {
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
-
-    TRACE("(%p)->(%s)\n", This, debugstr_w(p));
+    TRACE("%p, %s.\n", iface, debugstr_w(p));
 
-    if(!p)
+    if (!p)
         return E_INVALIDARG;
 
     return E_FAIL;
 }
 
-static HRESULT WINAPI dom_pi_get_xml(
-    IXMLDOMProcessingInstruction *iface,
-    BSTR* p)
+static HRESULT WINAPI dom_pi_get_xml(IXMLDOMProcessingInstruction *iface, BSTR *p)
 {
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
+    dom_pi *pi = impl_from_IXMLDOMProcessingInstruction(iface);
 
-    TRACE("(%p)->(%p)\n", This, p);
+    TRACE("%p, %p.\n", iface, p);
 
-    return node_get_xml(&This->node, FALSE, p);
+    return node_get_xml(pi->node, p);
 }
 
-static HRESULT WINAPI dom_pi_transformNode(
-    IXMLDOMProcessingInstruction *iface,
-    IXMLDOMNode *node, BSTR *p)
+static HRESULT WINAPI dom_pi_transformNode(IXMLDOMProcessingInstruction *iface, IXMLDOMNode *node, BSTR *p)
 {
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
-    TRACE("(%p)->(%p %p)\n", This, node, p);
-    return node_transform_node(&This->node, node, p);
-}
+    dom_pi *pi = impl_from_IXMLDOMProcessingInstruction(iface);
 
-static HRESULT WINAPI dom_pi_selectNodes(
-    IXMLDOMProcessingInstruction *iface,
-    BSTR p, IXMLDOMNodeList** outList)
-{
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
-    TRACE("(%p)->(%s %p)\n", This, debugstr_w(p), outList);
-    return node_select_nodes(&This->node, p, outList);
-}
+    TRACE("%p, %p, %p.\n", iface, node, p);
 
-static HRESULT WINAPI dom_pi_selectSingleNode(
-    IXMLDOMProcessingInstruction *iface,
-    BSTR p, IXMLDOMNode** outNode)
-{
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
-    TRACE("(%p)->(%s %p)\n", This, debugstr_w(p), outNode);
-    return node_select_singlenode(&This->node, p, outNode);
+    return node_transform_node(pi->node, node, p);
 }
 
-static HRESULT WINAPI dom_pi_get_parsed(
-    IXMLDOMProcessingInstruction *iface,
-    VARIANT_BOOL* isParsed)
+static HRESULT WINAPI dom_pi_selectNodes(IXMLDOMProcessingInstruction *iface, BSTR p, IXMLDOMNodeList **list)
 {
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
-    FIXME("(%p)->(%p) stub!\n", This, isParsed);
-    *isParsed = VARIANT_TRUE;
-    return S_OK;
-}
+    dom_pi *pi = impl_from_IXMLDOMProcessingInstruction( iface );
 
-static HRESULT WINAPI dom_pi_get_namespaceURI(
-    IXMLDOMProcessingInstruction *iface,
-    BSTR* p)
-{
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
-    TRACE("(%p)->(%p)\n", This, p);
-    return node_get_namespaceURI(&This->node, p);
-}
+    TRACE("%p, %s, %p.\n", iface, debugstr_w(p), list);
 
-static HRESULT WINAPI dom_pi_get_prefix(
-    IXMLDOMProcessingInstruction *iface,
-    BSTR* prefix)
-{
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
-    TRACE("(%p)->(%p)\n", This, prefix);
-    return return_null_bstr( prefix );
+    return node_select_nodes(pi->node, p, list);
 }
 
-static HRESULT WINAPI dom_pi_get_baseName(
-    IXMLDOMProcessingInstruction *iface,
-    BSTR* name)
+static HRESULT WINAPI dom_pi_selectSingleNode(IXMLDOMProcessingInstruction *iface, BSTR p, IXMLDOMNode **node)
 {
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
-    TRACE("(%p)->(%p)\n", This, name);
-    return node_get_base_name( &This->node, name );
+    dom_pi *pi = impl_from_IXMLDOMProcessingInstruction(iface);
+
+    TRACE("%p, %s, %p.\n", iface, debugstr_w(p), node);
+
+    return node_select_singlenode(pi->node, p, node);
 }
 
-static HRESULT WINAPI dom_pi_transformNodeToObject(
-    IXMLDOMProcessingInstruction *iface,
-    IXMLDOMNode* domNode, VARIANT var1)
+static HRESULT WINAPI dom_pi_get_parsed(IXMLDOMProcessingInstruction *iface, VARIANT_BOOL *v)
 {
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
-    FIXME("(%p)->(%p %s)\n", This, domNode, debugstr_variant(&var1));
-    return E_NOTIMPL;
+    FIXME("%p, %p stub!\n", iface, v);
+
+    *v = VARIANT_TRUE;
+    return S_OK;
 }
 
-static HRESULT WINAPI dom_pi_get_target(
-    IXMLDOMProcessingInstruction *iface,
-    BSTR *p)
+static HRESULT WINAPI dom_pi_get_namespaceURI(IXMLDOMProcessingInstruction *iface, BSTR *p)
 {
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
+    dom_pi *pi = impl_from_IXMLDOMProcessingInstruction(iface);
 
-    TRACE("(%p)->(%p)\n", This, p);
+    TRACE("%p, %p.\n", iface, p);
 
-    /* target returns the same value as nodeName property */
-    return node_get_nodeName(&This->node, p);
+    return node_get_namespaceURI(pi->node, p);
 }
 
-static HRESULT WINAPI dom_pi_get_data(
-    IXMLDOMProcessingInstruction *iface,
-    BSTR *p)
+static HRESULT WINAPI dom_pi_get_prefix(IXMLDOMProcessingInstruction *iface, BSTR *prefix)
 {
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
-    HRESULT hr;
-    VARIANT ret;
+    TRACE("%p, %p.\n", iface, prefix);
 
-    TRACE("(%p)->(%p)\n", This, p);
+    return return_null_bstr(prefix);
+}
 
-    if(!p)
-        return E_INVALIDARG;
+static HRESULT WINAPI dom_pi_get_baseName(IXMLDOMProcessingInstruction *iface, BSTR *name)
+{
+    dom_pi *pi = impl_from_IXMLDOMProcessingInstruction(iface);
 
-    hr = IXMLDOMProcessingInstruction_get_nodeValue( iface, &ret );
-    if(hr == S_OK)
-    {
-        *p = V_BSTR(&ret);
-    }
+    TRACE("%p, %p.\n", iface, name);
 
-    return hr;
+    return node_get_base_name(pi->node, name);
 }
 
-static HRESULT WINAPI dom_pi_put_data(
-    IXMLDOMProcessingInstruction *iface,
-    BSTR data)
+static HRESULT WINAPI dom_pi_transformNodeToObject(IXMLDOMProcessingInstruction *iface, IXMLDOMNode *node, VARIANT var1)
 {
-    dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
-    BSTR target;
-    HRESULT hr;
+    FIXME("%p, %p, %s.\n", iface, node, debugstr_variant(&var1));
 
-    TRACE("(%p)->(%s)\n", This, debugstr_w(data) );
+    return E_NOTIMPL;
+}
 
-    /* cannot set data to a PI node whose target is 'xml' */
-    hr = IXMLDOMProcessingInstruction_get_nodeName(iface, &target);
-    if(hr == S_OK)
-    {
-        if(!wcscmp(target, L"xml"))
-        {
-            SysFreeString(target);
-            return E_FAIL;
-        }
+static HRESULT WINAPI dom_pi_get_target(IXMLDOMProcessingInstruction *iface, BSTR *p)
+{
+    dom_pi *pi = impl_from_IXMLDOMProcessingInstruction(iface);
 
-        SysFreeString(target);
-    }
+    TRACE("%p, %p.\n", iface, p);
 
-    return node_set_content(&This->node, data);
+    return node_get_name(pi->node, p);
 }
 
-HRESULT dom_pi_put_xml_decl(IXMLDOMNode *node, BSTR data)
+static HRESULT WINAPI dom_pi_get_data(IXMLDOMProcessingInstruction *iface, BSTR *p)
 {
-    xmlnode *node_obj;
-    HRESULT hr;
-    BSTR name;
+    dom_pi *pi = impl_from_IXMLDOMProcessingInstruction(iface);
 
-    if (!data)
-        return XML_E_XMLDECLSYNTAX;
+    TRACE("%p, %p.\n", iface, p);
 
-    node_obj = get_node_obj(node);
-    hr = node_set_content(node_obj, data);
-    if (FAILED(hr))
-        return hr;
+    return node_get_data(pi->node, p);
+}
 
-    hr = node_get_nodeName(node_obj, &name);
-    if (FAILED(hr))
-        return hr;
+static HRESULT WINAPI dom_pi_put_data(IXMLDOMProcessingInstruction *iface, BSTR data)
+{
+    dom_pi *pi = impl_from_IXMLDOMProcessingInstruction( iface );
 
-    if (!wcscmp(name, L"xml") && !node_obj->node->properties)
-        hr = parse_xml_decl(node_obj->node);
-    else
-        hr = S_OK;
+    TRACE("%p, %s.\n", iface, debugstr_w(data));
 
-    SysFreeString(name);
-    return hr;
+    return node_put_data(pi->node, data);
 }
 
 static const struct IXMLDOMProcessingInstructionVtbl dom_pi_vtbl =
@@ -814,139 +542,113 @@ static const struct IXMLDOMProcessingInstructionVtbl dom_pi_vtbl =
     dom_pi_get_prefix,
     dom_pi_get_baseName,
     dom_pi_transformNodeToObject,
-
     dom_pi_get_target,
     dom_pi_get_data,
-    dom_pi_put_data
+    dom_pi_put_data,
 };
 
-static xmlAttrPtr node_has_prop(const xmlNode *node, const xmlChar *name)
-{
-    xmlAttrPtr prop;
-
-    /* xmlHasNsProp accepts only nodes of type XML_ELEMENT_NODE,
-     * so we have to look for an attribute in the node by hand.
-     */
-
-    prop = node->properties;
-
-    while (prop)
-    {
-        if (xmlStrEqual(prop->name, name))
-            return prop;
-
-        prop = prop->next;
-    }
-
-    return NULL;
-}
-
-static HRESULT dom_pi_get_qualified_item(const xmlNodePtr node, BSTR name, BSTR uri,
+static HRESULT dom_pi_get_qualified_item(const struct domnode *node, BSTR name, BSTR uri,
     IXMLDOMNode **item)
 {
-    FIXME("(%p)->(%s %s %p): stub\n", node, debugstr_w(name), debugstr_w(uri), item);
+    FIXME("%p, %s, %s, %p: stub\n", node, debugstr_w(name), debugstr_w(uri), item);
+
     return E_NOTIMPL;
 }
 
-static HRESULT dom_pi_get_named_item(const xmlNodePtr node, BSTR name, IXMLDOMNode **item)
+static HRESULT dom_pi_get_named_item(const struct domnode *node, BSTR name, IXMLDOMNode **item)
 {
-    xmlChar *nameA;
-    xmlAttrPtr attr;
-
-    TRACE("(%p)->(%s %p)\n", node, debugstr_w(name), item);
+    TRACE("%p, %s, %p.\n", node, debugstr_w(name), item);
 
-    if (!item) return E_POINTER;
+    if (!item)
+        return E_POINTER;
 
-    nameA = xmlchar_from_wchar(name);
-    if (!nameA) return E_OUTOFMEMORY;
-
-    attr = node_has_prop(node, nameA);
-    free(nameA);
-
-    if (!attr)
-    {
-        *item = NULL;
-        return S_FALSE;
-    }
-
-    *item = create_node((xmlNodePtr)attr);
-
-    return S_OK;
+    return node_get_attribute(node, name, (IXMLDOMAttribute **)item);
 }
 
-static HRESULT dom_pi_set_named_item(xmlNodePtr node, IXMLDOMNode *newItem, IXMLDOMNode **namedItem)
+static HRESULT dom_pi_set_named_item(struct domnode *node, IXMLDOMNode *newItem, IXMLDOMNode **namedItem)
 {
-    FIXME("(%p)->(%p %p): stub\n", node, newItem, namedItem );
-    return E_NOTIMPL;
+    TRACE("%p, %p, %p.\n", node, newItem, namedItem);
+
+    return node_set_attribute(node, newItem, namedItem);
 }
 
-static HRESULT dom_pi_remove_qualified_item(xmlNodePtr node, BSTR name, BSTR uri, IXMLDOMNode **item)
+static HRESULT dom_pi_remove_qualified_item(struct domnode *node, BSTR name, BSTR uri, IXMLDOMNode **item)
 {
-    FIXME("(%p)->(%s %s %p): stub\n", node, debugstr_w(name), debugstr_w(uri), item);
+    FIXME("%p, %s, %s, %p: stub\n", node, debugstr_w(name), debugstr_w(uri), item);
+
     return E_NOTIMPL;
 }
 
-static HRESULT dom_pi_remove_named_item(xmlNodePtr node, BSTR name, IXMLDOMNode **item)
+static HRESULT dom_pi_remove_named_item(struct domnode *node, BSTR name, IXMLDOMNode **item)
 {
-    FIXME("(%p)->(%s %p): stub\n", node, debugstr_w(name), item);
-    return E_NOTIMPL;
+    TRACE("%p, %s, %p.\n", node, debugstr_w(name), item);
+
+    return node_remove_attribute(node, name, item);
 }
 
-static HRESULT dom_pi_get_item(const xmlNodePtr node, LONG index, IXMLDOMNode **item)
+static HRESULT dom_pi_get_item(struct domnode *node, LONG index, IXMLDOMNode **item)
 {
-    FIXME("%p, %ld, %p: stub\n", node, index, item);
-    return E_NOTIMPL;
+    TRACE("%p, %ld, %p.\n", node, index, item);
+
+    return node_get_attribute_by_index(node, index, item);
 }
 
-static HRESULT dom_pi_get_length(const xmlNodePtr node, LONG *length)
+static HRESULT dom_pi_get_length(struct domnode *node, LONG *length)
 {
-    FIXME("(%p)->(%p): stub\n", node, length);
+    TRACE("%p, %p.\n", node, length);
 
-    *length = 0;
+    *length = list_count(&node->attributes);
     return S_OK;
 }
 
-static HRESULT dom_pi_next_node(const xmlNodePtr node, LONG *iter, IXMLDOMNode **nextNode)
+static HRESULT dom_pi_next_node(const struct domnode *node, LONG *iter, IXMLDOMNode **nextNode)
 {
     FIXME("%p, %ld, %p: stub\n", node, *iter, nextNode);
     return E_NOTIMPL;
 }
 
-static const struct nodemap_funcs dom_pi_attr_map = {
-    dom_pi_get_named_item,
-    dom_pi_set_named_item,
-    dom_pi_remove_named_item,
-    dom_pi_get_item,
-    dom_pi_get_length,
-    dom_pi_get_qualified_item,
-    dom_pi_remove_qualified_item,
-    dom_pi_next_node
+static const struct nodemap_funcs dom_pi_attr_map =
+{
+    .get_named_item = dom_pi_get_named_item,
+    .set_named_item = dom_pi_set_named_item,
+    .remove_named_item = dom_pi_remove_named_item,
+    .get_item = dom_pi_get_item,
+    .get_length = dom_pi_get_length,
+    .get_qualified_item = dom_pi_get_qualified_item,
+    .remove_qualified_item = dom_pi_remove_qualified_item,
+    .next_node = dom_pi_next_node,
 };
 
-static const tid_t dompi_iface_tids[] = {
+static const tid_t dompi_iface_tids[] =
+{
     IXMLDOMProcessingInstruction_tid,
     0
 };
 
-static dispex_static_data_t dompi_dispex = {
+static dispex_static_data_t dompi_dispex =
+{
     NULL,
     IXMLDOMProcessingInstruction_tid,
     NULL,
     dompi_iface_tids
 };
 
-IUnknown* create_pi( xmlNodePtr pi )
+HRESULT create_pi(struct domnode *node, IUnknown **obj)
 {
-    dom_pi *This;
+    dom_pi *object;
+
+    *obj = NULL;
 
-    This = malloc(sizeof(*This));
-    if ( !This )
-        return NULL;
+    if (!(object = calloc(1, sizeof(*object))))
+        return E_OUTOFMEMORY;
 
-    This->IXMLDOMProcessingInstruction_iface.lpVtbl = &dom_pi_vtbl;
-    This->ref = 1;
+    object->IXMLDOMProcessingInstruction_iface.lpVtbl = &dom_pi_vtbl;
+    object->refcount = 1;
+    object->node = domnode_addref(node);
 
-    init_xmlnode(&This->node, pi, (IXMLDOMNode*)&This->IXMLDOMProcessingInstruction_iface, &dompi_dispex);
+    init_dispex(&object->dispex, (IUnknown *)&object->IXMLDOMProcessingInstruction_iface, &dompi_dispex);
 
-    return (IUnknown*)&This->IXMLDOMProcessingInstruction_iface;
+    *obj = (IUnknown *)&object->IXMLDOMProcessingInstruction_iface;
+
+    return S_OK;
 }
diff --git a/dlls/msxml3/saxreader.c b/dlls/msxml3/saxreader.c
index 89f827220581..4b0ec0085d79 100644
--- a/dlls/msxml3/saxreader.c
+++ b/dlls/msxml3/saxreader.c
@@ -39,6 +39,9 @@
 
 #include "msxml_private.h"
 
+#include "initguid.h"
+#include "saxreader_extensions.h"
+
 WINE_DEFAULT_DEBUG_CHANNEL(msxml);
 
 struct stream_wrapper
@@ -139,7 +142,7 @@ static const ISequentialStreamVtbl stream_wrapper_vtbl =
     stream_wrapper_Write,
 };
 
-static HRESULT stream_wrapper_create(const void *buffer, DWORD size, ISequentialStream **ret)
+HRESULT stream_wrapper_create(const void *buffer, DWORD size, ISequentialStream **ret)
 {
     struct stream_wrapper *object;
 
@@ -170,6 +173,7 @@ enum error_codes
     E_SAX_BADSTARTNAMECHAR = 0xc00ce504,
     E_SAX_BADNAMECHAR = 0xc00ce505,
     E_SAX_BADCHARINSTRING = 0xc00ce506,
+    E_SAX_XMLDECLSYNTAX = 0xc00ce507,
     E_SAX_MISSINGWHITESPACE = 0xc00ce509,
     E_SAX_EXPECTINGTAGEND = 0xc00ce50a,
     E_SAX_BADCHARINDTD = 0xc00ce50b,
@@ -196,6 +200,7 @@ enum error_codes
     E_SAX_UNCLOSEDCDATA = 0xc00ce564,
     E_SAX_BADDECLNAME = 0xc00ce565,
     E_SAX_RESERVEDNAMESPACE = 0xc00ce568,
+    E_SAX_UNEXPECTED_ATTRIBUTE = 0xc00ce56c,
     E_SAX_ENDTAGMISMATCH = 0xc00ce56d,
     E_SAX_INVALIDENCODING = 0xc00ce56e,
     E_SAX_INVALIDSWITCH = 0xc00ce56f,
@@ -239,16 +244,9 @@ struct attribute
     bool nsdef;
 };
 
-struct name
-{
-    BSTR prefix;
-    BSTR local;
-    BSTR qname;
-};
-
 struct attlist_attr
 {
-    struct name name;
+    struct parsed_name name;
     BSTR type;
     BSTR valuetype;
     BSTR value;
@@ -385,6 +383,7 @@ enum saxhandler_type
     SAXEntityResolver,
     SAXErrorHandler,
     SAXLexicalHandler,
+    SAXExtensionHandler,
     SAXHandler_Last
 };
 
@@ -400,6 +399,12 @@ struct saxcontenthandler_iface
     IVBSAXContentHandler *vbhandler;
 };
 
+struct saxextensionhandler_iface
+{
+    ISAXExtensionHandler *handler;
+    IDispatch *vbhandler;
+};
+
 struct saxerrorhandler_iface
 {
     ISAXErrorHandler *handler;
@@ -440,6 +445,7 @@ struct saxhandler_iface
         struct saxlexicalhandler_iface lexical;
         struct saxdtdhandler_iface dtd;
         struct saxdeclhandler_iface decl;
+        struct saxextensionhandler_iface extension;
         struct saxanyhandler_iface anyhandler;
     } u;
 };
@@ -449,6 +455,7 @@ struct saxreader
     DispatchEx dispex;
     IVBSAXXMLReader IVBSAXXMLReader_iface;
     ISAXXMLReader ISAXXMLReader_iface;
+    ISAXXMLReaderExtension ISAXXMLReaderExtension_iface;
     LONG refcount;
 
     struct saxhandler_iface saxhandlers[SAXHandler_Last];
@@ -505,6 +512,11 @@ static struct saxcontenthandler_iface *saxreader_get_contenthandler(struct saxre
     return &reader->saxhandlers[SAXContentHandler].u.content;
 }
 
+static struct saxextensionhandler_iface *saxreader_get_extensionhandler(struct saxreader *reader)
+{
+    return &reader->saxhandlers[SAXExtensionHandler].u.extension;
+}
+
 static struct saxerrorhandler_iface *saxreader_get_errorhandler(struct saxreader *reader)
 {
     return &reader->saxhandlers[SAXErrorHandler].u.error;
@@ -833,6 +845,13 @@ enum saxreader_state
     SAX_PARSER_EOF,
 };
 
+struct string_buffer
+{
+    WCHAR *data;
+    size_t count;
+    size_t capacity;
+};
+
 struct saxlocator
 {
     IVBSAXLocator IVBSAXLocator_iface;
@@ -868,6 +887,8 @@ struct saxlocator
         struct list entities;
     } dtd;
 
+    bool collect;
+    struct string_buffer scratch;
     struct input_buffer buffer;
     struct text_position start_document_position;
     HRESULT status;
@@ -883,6 +904,11 @@ static inline struct saxreader *impl_from_ISAXXMLReader(ISAXXMLReader *iface)
     return CONTAINING_RECORD(iface, struct saxreader, ISAXXMLReader_iface);
 }
 
+static inline struct saxreader *impl_from_ISAXXMLReaderExtension(ISAXXMLReaderExtension *iface)
+{
+    return CONTAINING_RECORD(iface, struct saxreader, ISAXXMLReaderExtension_iface);
+}
+
 static inline struct saxlocator *impl_from_IVBSAXLocator(IVBSAXLocator *iface)
 {
     return CONTAINING_RECORD(iface, struct saxlocator, IVBSAXLocator_iface);
@@ -941,6 +967,9 @@ static BSTR saxreader_alloc_string(struct saxlocator *locator, const WCHAR *str)
 {
     BSTR ret;
 
+    if (!str)
+        return NULL;
+
     if (!(ret = SysAllocString(str)))
         saxreader_set_error(locator, E_OUTOFMEMORY);
 
@@ -1896,9 +1925,17 @@ static bool saxreader_reserve_buffer(struct saxlocator *locator, struct encoded_
             buffer->written + size, sizeof(*buffer->data));
 }
 
+static BSTR saxreader_string_to_bstr(struct saxlocator *locator, struct string_buffer *buffer)
+{
+    BSTR str = saxreader_alloc_stringlen(locator, buffer->data, buffer->count);
+    free(buffer->data);
+    memset(buffer, 0, sizeof(*buffer));
+    return str;
+}
+
 static bool saxreader_limit_xml_size(struct saxlocator *locator, ULONG read)
 {
-    if (locator->saxreader->max_xml_size > 0)
+    if (locator->saxreader && locator->saxreader->max_xml_size > 0)
     {
         locator->buffer.raw_size += read;
         if (locator->buffer.raw_size > locator->saxreader->max_xml_size * 1024)
@@ -2087,6 +2124,19 @@ static bool saxreader_pop_entity(struct saxlocator *locator)
     return list_empty(&input->entities);
 }
 
+static void saxreader_string_append(struct saxlocator *locator, struct string_buffer *buffer,
+        const WCHAR *str, UINT len)
+{
+    if (!saxreader_array_reserve(locator, (void **)&buffer->data, &buffer->capacity, buffer->count + len, sizeof(*str)))
+    {
+        saxreader_set_error(locator, E_OUTOFMEMORY);
+        return;
+    }
+
+    memcpy(buffer->data + buffer->count, str, len * sizeof(WCHAR));
+    buffer->count += len;
+}
+
 static void saxreader_skip(struct saxlocator *locator, int n)
 {
     struct encoded_buffer *buffer = &locator->buffer.utf16;
@@ -2095,6 +2145,9 @@ static void saxreader_skip(struct saxlocator *locator, int n)
 
     while (locator->status == S_OK && (ch = *saxreader_get_ptr(locator)) && n--)
     {
+        if (locator->collect)
+            saxreader_string_append(locator, &locator->scratch, &ch, 1);
+
         if (saxreader_pop_entity(locator))
             saxreader_update_position(locator, ch);
 
@@ -2177,7 +2230,7 @@ struct ns
 struct element
 {
     struct list entry;
-    struct name name;
+    struct parsed_name name;
     BSTR uri;
 
     struct
@@ -2218,6 +2271,29 @@ static void saxlocator_put_document_locator(struct saxlocator *locator)
         locator->status = hr;
 }
 
+static void saxlocator_xmldecl(struct saxlocator *locator)
+{
+    struct saxextensionhandler_iface *handler = saxreader_get_extensionhandler(locator->saxreader);
+    HRESULT hr = S_OK;
+
+    if (locator->status != S_OK)
+        return;
+
+    if (!locator->saxreader->xmldecl_version)
+        return;
+
+    if (saxreader_has_handler(locator, SAXExtensionHandler))
+    {
+        if (!locator->vbInterface)
+            hr = ISAXExtensionHandler_xmldecl(handler->handler,
+                    locator->saxreader->xmldecl_version,
+                    locator->saxreader->xmldecl_encoding,
+                    locator->saxreader->xmldecl_standalone);
+    }
+
+    locator->status = saxlocator_callback_result(locator, hr);
+}
+
 static void saxlocator_start_document(struct saxlocator *locator)
 {
     struct saxcontenthandler_iface *handler = saxreader_get_contenthandler(locator->saxreader);
@@ -2745,6 +2821,28 @@ static void saxlocator_enddtd(struct saxlocator *locator)
     locator->status = saxlocator_callback_result(locator, hr);
 }
 
+static void saxlocator_extension_dtd(struct saxlocator *locator)
+{
+    struct saxextensionhandler_iface *handler = saxreader_get_extensionhandler(locator->saxreader);
+    HRESULT hr = S_OK;
+    BSTR str;
+
+    if (locator->status != S_OK)
+        return;
+
+    str = saxreader_string_to_bstr(locator, &locator->scratch);
+    if (saxreader_has_handler(locator, SAXExtensionHandler))
+    {
+        if (!locator->vbInterface)
+            hr = ISAXExtensionHandler_dtd(handler->handler, str);
+    }
+    SysFreeString(str);
+
+    locator->collect = false;
+
+    locator->status = saxlocator_callback_result(locator, hr);
+}
+
 static void saxlocator_start_entity(struct saxlocator *locator, const struct text_position *position, BSTR name)
 {
     struct saxlexicalhandler_iface *lexical = saxreader_get_lexicalhandler(locator->saxreader);
@@ -2789,26 +2887,6 @@ static void saxlocator_end_entity(struct saxlocator *locator, const struct text_
     locator->status = saxlocator_callback_result(locator, hr);
 }
 
-struct string_buffer
-{
-    WCHAR *data;
-    size_t count;
-    size_t capacity;
-};
-
-static void saxreader_string_append(struct saxlocator *locator, struct string_buffer *buffer,
-        const WCHAR *str, UINT len)
-{
-    if (!saxreader_array_reserve(locator, (void **)&buffer->data, &buffer->capacity, buffer->count + len, sizeof(*str)))
-    {
-        saxreader_set_error(locator, E_OUTOFMEMORY);
-        return;
-    }
-
-    memcpy(buffer->data + buffer->count, str, len * sizeof(WCHAR));
-    buffer->count += len;
-}
-
 static void saxreader_string_append_bstr(struct saxlocator *locator, struct string_buffer *buffer, BSTR *str)
 {
     saxreader_string_append(locator, buffer, *str, SysStringLen(*str));
@@ -2816,18 +2894,10 @@ static void saxreader_string_append_bstr(struct saxlocator *locator, struct stri
     *str = NULL;
 }
 
-static BSTR saxreader_string_to_bstr(struct saxlocator *locator, struct string_buffer *buffer)
-{
-    BSTR str = saxreader_alloc_stringlen(locator, buffer->data, buffer->count);
-    free(buffer->data);
-    memset(buffer, 0, sizeof(*buffer));
-    return str;
-}
-
 /* [3] S ::= (#x20 | #x9 | #xD | #xA)+ */
 static bool saxreader_is_space(WCHAR ch)
 {
-    return ch == ' ' || ch == '\t' || ch == '\r' || ch == '\n';
+    return xml_is_space(ch);
 }
 
 /* [3] S ::= (#x20 | #x9 | #xD | #xA)+ */
@@ -2860,29 +2930,6 @@ static bool saxreader_skip_required_spaces(struct saxlocator *locator)
     return ret;
 }
 
-/* [25] Eq ::= S? '=' S? */
-static void saxreader_parse_eq(struct saxlocator *locator)
-{
-    saxreader_skipspaces(locator);
-    if (!saxreader_cmp(locator, L"="))
-        return saxreader_set_error(locator, E_SAX_MISSINGEQUALS);
-    saxreader_skipspaces(locator);
-}
-
-/* [26] VersionNum ::= '1.' [0-9]+ */
-static void saxreader_parse_versionnum(struct saxlocator *locator)
-{
-    if (saxreader_cmp(locator, L"1.0"))
-    {
-        SysFreeString(locator->saxreader->xmldecl_version);
-        locator->saxreader->xmldecl_version = saxreader_alloc_string(locator, L"1.0");
-    }
-    else
-    {
-        saxreader_set_error(locator, E_SAX_INVALID_VERSION);
-    }
-}
-
 static WCHAR saxreader_is_quote(struct saxlocator *locator)
 {
     const WCHAR *ptr;
@@ -2896,22 +2943,17 @@ static WCHAR saxreader_is_quote(struct saxlocator *locator)
 }
 
 /* [24] VersionInfo ::= S 'version' Eq ("'" VersionNum "'" | '"' VersionNum '"') */
-static void saxreader_parse_versioninfo(struct saxlocator *locator)
+/* [26] VersionNum ::= '1.' [0-9]+ */
+static void saxreader_parse_versioninfo(struct saxlocator *locator, const struct parsed_name *name, BSTR value)
 {
-    WCHAR q[2] = { 0 };
-
-    if (!saxreader_cmp(locator, L"version"))
-        return saxreader_set_error(locator, E_SAX_BAD_XMLDECL);
-
-    saxreader_parse_eq(locator);
-    if (!(q[0] = saxreader_is_quote(locator)))
-        saxreader_set_error(locator, E_SAX_MISSINGQUOTE);
-    saxreader_skip(locator, 1);
+    if (wcscmp(name->qname, L"version"))
+        return saxreader_set_error(locator, E_SAX_UNEXPECTED_ATTRIBUTE);
 
-    saxreader_parse_versionnum(locator);
+    if (wcscmp(value, L"1.0"))
+        return saxreader_set_error(locator, E_SAX_INVALID_VERSION);
 
-    if (!saxreader_cmp(locator, q))
-        saxreader_set_error(locator, E_SAX_MISSINGQUOTE);
+    SysFreeString(locator->saxreader->xmldecl_version);
+    locator->saxreader->xmldecl_version = saxreader_alloc_string(locator, L"1.0");
 }
 
 static void saxreader_switch_encoding(struct saxlocator *locator, UINT codepage)
@@ -2927,34 +2969,14 @@ static void saxreader_switch_encoding(struct saxlocator *locator, UINT codepage)
 }
 
 /* [80] EncodingDecl ::= S 'encoding' Eq ('"' EncName '"' | "'" EncName "'" ) */
-static void saxreader_parse_encdecl(struct saxlocator *locator)
+static void saxreader_parse_encdecl(struct saxlocator *locator, const struct parsed_name *name, BSTR value)
 {
-    struct string_buffer buffer = { 0 };
-    WCHAR q[2] = { 0 }, ch;
     UINT codepage;
 
-    saxreader_skip_required_spaces(locator);
-    if (!saxreader_cmp(locator, L"encoding"))
-        return;
-
-    saxreader_parse_eq(locator);
+    if (wcscmp(name->qname, L"encoding"))
+        return saxreader_set_error(locator, E_SAX_UNEXPECTED_ATTRIBUTE);
 
-    if (!(q[0] = saxreader_is_quote(locator)))
-        saxreader_set_error(locator, E_SAX_MISSINGQUOTE);
-    saxreader_skip(locator, 1);
-
-    ch = *saxreader_get_ptr(locator);
-    while (ch != *q)
-    {
-        saxreader_string_append(locator, &buffer, &ch, 1);
-        saxreader_skip(locator, 1);
-        ch = *saxreader_get_ptr(locator);
-    }
-
-    if (!saxreader_cmp(locator, q))
-        saxreader_set_error(locator, E_SAX_MISSINGQUOTE);
-
-    locator->saxreader->xmldecl_encoding = saxreader_string_to_bstr(locator, &buffer);
+    locator->saxreader->xmldecl_encoding = saxreader_alloc_string(locator, value);
     TRACE("encoding name %s\n", debugstr_w(locator->saxreader->xmldecl_encoding));
 
     /* Switch encoding only in UTF-8 -> mbtowc-able direction. */
@@ -2964,39 +2986,27 @@ static void saxreader_parse_encdecl(struct saxlocator *locator)
         if (saxreader_get_encoding_codepage(locator->saxreader->xmldecl_encoding, &codepage))
             saxreader_switch_encoding(locator, codepage);
         else if (!saxreader_can_ignore_encoding(locator->saxreader->xmldecl_encoding))
+        {
             FIXME("Unsupported encoding %s.\n", debugstr_w(locator->saxreader->xmldecl_encoding));
+            saxreader_set_error(locator, E_SAX_INVALIDENCODING);
+        }
     }
 }
 
 /* [32] SDDecl ::= S 'standalone' Eq (("'" ('yes' | 'no') "'") | ('"' ('yes' | 'no') '"')) */
-static void saxreader_parse_sddecl(struct saxlocator *locator)
+static void saxreader_parse_sddecl(struct saxlocator *locator, const struct parsed_name *name, BSTR value)
 {
-    WCHAR q[2] = { 0 };
-
-    saxreader_skipspaces(locator);
-
-    if (!saxreader_cmp(locator, L"standalone"))
-        return;
-
-    saxreader_parse_eq(locator);
-
-    if (!(q[0] = saxreader_is_quote(locator)))
-        saxreader_set_error(locator, E_SAX_MISSINGQUOTE);
-    saxreader_skip(locator, 1);
+    if (wcscmp(name->qname, L"standalone"))
+        return saxreader_set_error(locator, E_SAX_UNEXPECTED_ATTRIBUTE);
 
-    if (saxreader_cmp(locator, L"yes"))
-        locator->saxreader->xmldecl_standalone = saxreader_alloc_string(locator, L"yes");
-    else if (saxreader_cmp(locator, L"no"))
-        locator->saxreader->xmldecl_standalone = saxreader_alloc_string(locator, L"no");
+    if (!wcscmp(value, L"yes") || !wcscmp(value, L"no"))
+        locator->saxreader->xmldecl_standalone = saxreader_alloc_string(locator, value);
     else
         saxreader_set_error(locator, E_SAX_INVALID_STANDALONE);
-
-    if (!saxreader_cmp(locator, q))
-        saxreader_set_error(locator, E_SAX_MISSINGQUOTE);
 }
 
-/* [23] XMLDecl ::= '<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>' */
-static void saxreader_parse_xmldecl(struct saxlocator *locator)
+/*
+static bool saxreader_parse_xmldecl(struct saxlocator *locator)
 {
     WCHAR ch;
 
@@ -3004,21 +3014,21 @@ static void saxreader_parse_xmldecl(struct saxlocator *locator)
 
     ch = saxreader_get_char(locator, 5);
     if (!saxreader_peek(locator, L"<?xml", 5) || !saxreader_is_space(ch))
-        return;
+        return false;
     saxreader_skip(locator, 5);
     saxreader_skipspaces(locator);
 
     saxreader_parse_versioninfo(locator);
 
     if (saxreader_cmp(locator, L"?>"))
-        return;
+        return true;
 
     saxreader_parse_encdecl(locator);
 
     if (locator->saxreader->xmldecl_encoding)
     {
         if (saxreader_cmp(locator, L"?>"))
-            return;
+            return true;
         saxreader_skip_required_spaces(locator);
     }
 
@@ -3028,7 +3038,11 @@ static void saxreader_parse_xmldecl(struct saxlocator *locator)
 
     if (!saxreader_cmp(locator, L"?>"))
         saxreader_set_error(locator, E_SAX_BAD_XMLDECL);
+
+    return true;
 }
+*/
+static BSTR saxreader_parse_xmldecl_attribute(struct saxlocator *locator, struct parsed_name *name);
 
 /* [85] BaseChar ::= ... */
 static bool saxreader_is_basechar(WCHAR ch)
@@ -3352,7 +3366,7 @@ static BSTR saxreader_parse_ncname(struct saxlocator *locator)
    [8 NS]  PrefixedName ::= Prefix ':' LocalPart
    [9 NS]  UnprefixedName ::= LocalPart
    [10 NS] Prefix ::= NCName */
-static void saxreader_parse_qname(struct saxlocator *locator, struct name *name)
+static void saxreader_parse_qname(struct saxlocator *locator, struct parsed_name *name)
 {
     struct string_buffer buffer = { 0 };
     BSTR ncname;
@@ -3382,7 +3396,37 @@ static void saxreader_parse_qname(struct saxlocator *locator, struct name *name)
     name->qname = saxreader_string_to_bstr(locator, &buffer);
 }
 
-static struct element *saxreader_new_element(struct saxlocator *locator, struct name *name)
+static const WCHAR * validate_ncname(const WCHAR *name)
+{
+    const WCHAR *p = name;
+
+    if (!saxreader_is_ncname_startchar(*p++))
+        return NULL;
+
+    while (*p && *p != ':')
+    {
+        if (!saxreader_is_ncnamechar(*p)) return NULL;
+        ++p;
+    }
+
+    return p;
+}
+
+bool parser_is_valid_qualified_name(const WCHAR *name)
+{
+    const WCHAR *p;
+
+    p = validate_ncname(name);
+    if (!p)
+        return false;
+
+    if (*p == ':')
+        p = validate_ncname(++p);
+
+    return p && !*p;
+}
+
+static struct element *saxreader_new_element(struct saxlocator *locator, struct parsed_name *name)
 {
     struct element *element;
 
@@ -3396,7 +3440,7 @@ static struct element *saxreader_new_element(struct saxlocator *locator, struct
     return element;
 }
 
-static void saxreader_free_name(struct name *name)
+static void saxreader_free_name(struct parsed_name *name)
 {
     SysFreeString(name->prefix);
     SysFreeString(name->local);
@@ -3467,7 +3511,7 @@ static bool saxreader_has_attribute(struct saxlocator *locator, BSTR name)
     return false;
 }
 
-static void saxreader_add_attribute(struct saxlocator *locator, const struct name *name, BSTR value, bool nsdef)
+static void saxreader_add_attribute(struct saxlocator *locator, const struct parsed_name *name, BSTR value, bool nsdef)
 {
     struct attribute *attr;
 
@@ -3743,6 +3787,11 @@ static BSTR saxreader_parse_attvalue(struct saxlocator *locator)
             else
             {
                 ch = *saxreader_get_ptr_noread(locator);
+                if (!ch)
+                {
+                    saxreader_set_error(locator, E_SAX_BADCHARINSTRING);
+                    break;
+                }
                 saxreader_string_append(locator, &buffer, &ch, 1);
                 saxreader_skip(locator, 1);
             }
@@ -3755,7 +3804,7 @@ static BSTR saxreader_parse_attvalue(struct saxlocator *locator)
 }
 
 static bool saxreader_add_namespace_attribute(struct saxlocator *locator, struct element *element,
-        struct name *name, BSTR value)
+        struct parsed_name *name, BSTR value)
 {
     if (name->prefix && !wcscmp(name->prefix, L"xmlns"))
         saxreader_add_namespace(locator, element, name->local, value);
@@ -3770,7 +3819,7 @@ static bool saxreader_add_namespace_attribute(struct saxlocator *locator, struct
 /* [15 NS] Attribute ::= NSAttName Eq AttValue | QName Eq AttValue */
 static void saxreader_parse_attribute(struct saxlocator *locator, struct element *element)
 {
-    struct name name;
+    struct parsed_name name;
     BSTR value;
     bool ns;
 
@@ -3782,12 +3831,83 @@ static void saxreader_parse_attribute(struct saxlocator *locator, struct element
     value = saxreader_parse_attvalue(locator);
 
     ns = saxreader_add_namespace_attribute(locator, element, &name, value);
-    saxreader_add_attribute(locator, &name, value, !!ns);
+    saxreader_add_attribute(locator, &name, value, ns);
 
     saxreader_free_name(&name);
     SysFreeString(value);
 }
 
+static BSTR saxreader_parse_xmldecl_attribute(struct saxlocator *locator, struct parsed_name *name)
+{
+    BSTR value;
+
+    saxreader_parse_qname(locator, name);
+    saxreader_skipspaces(locator);
+    if (!saxreader_cmp(locator, L"="))
+        saxreader_set_error(locator, E_SAX_MISSINGEQUALS);
+    saxreader_skipspaces(locator);
+    value = saxreader_parse_attvalue(locator);
+
+    return value;
+}
+
+/* [23] XMLDecl ::= '<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>' */
+static void saxreader_parse_xmldecl(struct saxlocator *locator)
+{
+    struct parsed_name name;
+    bool done = false;
+    BSTR value;
+    WCHAR ch;
+
+    saxreader_more(locator);
+
+    ch = saxreader_get_char(locator, 5);
+    if (!saxreader_peek(locator, L"<?xml", 5) || !saxreader_is_space(ch))
+        return;
+    saxreader_skip(locator, 5);
+    saxreader_skipspaces(locator);
+
+    value = saxreader_parse_xmldecl_attribute(locator, &name);
+    saxreader_parse_versioninfo(locator, &name, value);
+    saxreader_free_name(&name);
+    SysFreeString(value);
+
+    saxreader_skipspaces(locator);
+    if (saxreader_cmp(locator, L"?>"))
+        return;
+
+    while (!done && locator->status == S_OK)
+    {
+        value = saxreader_parse_xmldecl_attribute(locator, &name);
+
+        if (!wcscmp(name.qname, L"encoding"))
+        {
+            saxreader_parse_encdecl(locator, &name, value);
+        }
+        else if (!wcscmp(name.qname, L"standalone"))
+        {
+            saxreader_parse_sddecl(locator, &name, value);
+            done = true;
+        }
+        else
+        {
+            saxreader_set_error(locator, E_SAX_UNEXPECTED_ATTRIBUTE);
+            continue;
+        }
+
+        saxreader_free_name(&name);
+        SysFreeString(value);
+
+        saxreader_skipspaces(locator);
+        if (saxreader_cmp(locator, L"?>"))
+            return;
+    }
+
+    saxreader_skipspaces(locator);
+    if (!saxreader_cmp(locator, L"?>"))
+        saxreader_set_error(locator, E_SAX_BAD_XMLDECL);
+}
+
 static void saxreader_reorder_attributes(struct saxlocator *locator)
 {
     size_t count, i, idx;
@@ -3823,7 +3943,7 @@ static void saxreader_parse_starttag(struct saxlocator *locator)
     struct text_position position = { 0 };
     bool empty_element = false;
     struct element *element;
-    struct name name;
+    struct parsed_name name;
 
     if (!saxreader_cmp(locator, L"<"))
         return saxreader_set_error(locator, E_SAX_INVALIDATROOTLEVEL);
@@ -3864,6 +3984,7 @@ static void saxreader_parse_starttag(struct saxlocator *locator)
 
     /* Append default attributes from DTD. */
     saxreader_add_default_attributes(locator, element);
+
     saxreader_reorder_attributes(locator);
 
     /* The 'uri' string pointers are reused from the namespace stacks.
@@ -3885,8 +4006,8 @@ static void saxreader_parse_endtag(struct saxlocator *locator)
 {
     struct text_position position;
     struct element *element;
+    struct parsed_name name;
     HRESULT hr = S_OK;
-    struct name name;
 
     /* Skip '</' */
     saxreader_skip(locator, 2);
@@ -5180,6 +5301,9 @@ static void saxreader_parse_doctype(struct saxlocator *locator)
     if (locator->saxreader->features & ProhibitDTD)
         return saxreader_set_error(locator, E_SAX_INVALIDATROOTLEVEL);
 
+    if (saxreader_has_handler(locator, SAXExtensionHandler))
+        locator->collect = true;
+
     /* Skip <!DOCTYPE */
     saxreader_skip(locator, 9);
     saxreader_skip_required_spaces(locator);
@@ -5207,6 +5331,7 @@ static void saxreader_parse_doctype(struct saxlocator *locator)
     if (sysid)
         FIXME("External subset is not supported.\n");
 
+    saxlocator_extension_dtd(locator);
     saxlocator_enddtd(locator);
 
     SysFreeString(sysid);
@@ -5258,7 +5383,7 @@ static enum xmlencoding saxreader_match_encoding(const char *data, size_t size,
     return XML_ENCODING_UNKNOWN;
 }
 
-static void saxreader_detect_encoding(struct saxlocator *locator)
+static void saxreader_detect_encoding(struct saxlocator *locator, bool force_utf16)
 {
     struct encoded_buffer *utf16 = &locator->buffer.utf16;
     struct encoded_buffer *raw = &locator->buffer.raw;
@@ -5284,7 +5409,7 @@ static void saxreader_detect_encoding(struct saxlocator *locator)
 
     raw->written = read;
 
-    encoding = saxreader_match_encoding(raw->data, read, &bom);
+    encoding = force_utf16 ? XML_ENCODING_UTF16LE : saxreader_match_encoding(raw->data, read, &bom);
 
     if (encoding == XML_ENCODING_UNKNOWN)
     {
@@ -5302,11 +5427,12 @@ static void saxreader_detect_encoding(struct saxlocator *locator)
 
     if (encoding == XML_ENCODING_UTF16LE)
     {
-        if (!saxreader_reserve_buffer(locator, utf16, size))
+        if (!saxreader_reserve_buffer(locator, utf16, size + sizeof(WCHAR)))
             return;
 
         memcpy(utf16->data + utf16->written, raw->data + bom, size);
         utf16->written += size;
+        *(WCHAR *)&utf16->data[utf16->written] = 0;
 
         encoded_buffer_cleanup(raw);
     }
@@ -5317,7 +5443,8 @@ static void saxreader_detect_encoding(struct saxlocator *locator)
     }
 }
 
-static HRESULT saxreader_parse_stream(struct saxreader *reader, ISequentialStream *stream, bool vbInterface)
+static HRESULT saxreader_parse_stream(struct saxreader *reader, ISequentialStream *stream,
+        bool force_utf16, bool vbInterface)
 {
     struct saxlocator *locator;
     HRESULT hr;
@@ -5336,13 +5463,14 @@ static HRESULT saxreader_parse_stream(struct saxreader *reader, ISequentialStrea
         switch (locator->state)
         {
             case SAX_PARSER_START:
-                saxreader_detect_encoding(locator);
+                saxreader_detect_encoding(locator, force_utf16);
                 locator->state = SAX_PARSER_XML_DECL;
                 break;
             case SAX_PARSER_XML_DECL:
                 saxreader_parse_xmldecl(locator);
                 locator->buffer.switched_encoding = true;
                 saxlocator_put_document_locator(locator);
+                saxlocator_xmldecl(locator);
                 saxlocator_start_document(locator);
                 locator->state = SAX_PARSER_MISC;
                 break;
@@ -5465,7 +5593,7 @@ static HRESULT saxreader_parse(struct saxreader *reader, VARIANT input, bool vbI
 
             if (FAILED(hr = stream_wrapper_create((const void *)str, SysStringByteLen(str), &stream)))
                 return hr;
-            hr = saxreader_parse_stream(reader, stream, vbInterface);
+            hr = saxreader_parse_stream(reader, stream, true, vbInterface);
             ISequentialStream_Release(stream);
             break;
         }
@@ -5482,7 +5610,7 @@ static HRESULT saxreader_parse(struct saxreader *reader, VARIANT input, bool vbI
             size = (uBound - lBound + 1) * SafeArrayGetElemsize(V_ARRAY(&input));
             if (SUCCEEDED(hr = stream_wrapper_create(data, size, &stream)))
             {
-                hr = saxreader_parse_stream(reader, stream, vbInterface);
+                hr = saxreader_parse_stream(reader, stream, false, vbInterface);
                 ISequentialStream_Release(stream);
             }
             SafeArrayUnaccessData(V_ARRAY(&input));
@@ -5503,7 +5631,7 @@ static HRESULT saxreader_parse(struct saxreader *reader, VARIANT input, bool vbI
 
                 IXMLDOMDocument_get_xml(xmlDoc, &bstrData);
                 stream_wrapper_create(bstrData, SysStringByteLen(bstrData), &stream);
-                hr = saxreader_parse_stream(reader, stream, vbInterface);
+                hr = saxreader_parse_stream(reader, stream, false, vbInterface);
                 ISequentialStream_Release(stream);
                 IXMLDOMDocument_Release(xmlDoc);
                 SysFreeString(bstrData);
@@ -5518,7 +5646,7 @@ static HRESULT saxreader_parse(struct saxreader *reader, VARIANT input, bool vbI
 
             if (stream)
             {
-                hr = saxreader_parse_stream(reader, stream, vbInterface);
+                hr = saxreader_parse_stream(reader, stream, false, vbInterface);
                 ISequentialStream_Release(stream);
             }
             else
@@ -5545,7 +5673,7 @@ static HRESULT internal_vbonDataAvailable(void *obj, char *ptr, DWORD len)
 
     if (SUCCEEDED(hr = stream_wrapper_create(ptr, len, &stream)))
     {
-        hr = saxreader_parse_stream(reader, stream, true);
+        hr = saxreader_parse_stream(reader, stream, false, true);
         ISequentialStream_Release(stream);
     }
     return hr;
@@ -5559,7 +5687,7 @@ static HRESULT internal_onDataAvailable(void *obj, char *ptr, DWORD len)
 
     if (SUCCEEDED(hr = stream_wrapper_create(ptr, len, &stream)))
     {
-        hr = saxreader_parse_stream(reader, stream, false);
+        hr = saxreader_parse_stream(reader, stream, false, false);
         ISequentialStream_Release(stream);
     }
     return hr;
@@ -5606,6 +5734,10 @@ static HRESULT saxreader_put_handler_from_variant(struct saxreader *reader, enum
     case SAXLexicalHandler:
         riid = vb ? &IID_IVBSAXLexicalHandler : &IID_ISAXLexicalHandler;
         break;
+    case SAXExtensionHandler:
+        riid = &IID_ISAXExtensionHandler;
+        if (vb) return E_UNEXPECTED;
+        break;
     default:
         ERR("wrong handler type %d\n", type);
         return E_FAIL;
@@ -5664,6 +5796,9 @@ static HRESULT saxreader_put_property(struct saxreader *reader, const WCHAR *pro
     if (!wcscmp(prop, L"http://xml.org/sax/properties/lexical-handler"))
         return saxreader_put_handler_from_variant(reader, SAXLexicalHandler, v, vbInterface);
 
+    if (!wcscmp(prop, L"http://winehq.org/sax/properties/extension-handler"))
+        return saxreader_put_handler_from_variant(reader, SAXExtensionHandler, v, vbInterface);
+
     if (!wcscmp(prop, L"max-xml-size"))
     {
         int size;
@@ -5740,6 +5875,18 @@ static HRESULT saxreader_get_property(const struct saxreader *reader, const WCHA
         return return_bstr(reader->xmldecl_version, &V_BSTR(value));
     }
 
+    if (!wcscmp(prop, L"xmldecl-encoding"))
+    {
+        V_VT(value) = VT_BSTR;
+        return return_bstr(reader->xmldecl_encoding, &V_BSTR(value));
+    }
+
+    if (!wcscmp(prop, L"xmldecl-standalone"))
+    {
+        V_VT(value) = VT_BSTR;
+        return return_bstr(reader->xmldecl_encoding, &V_BSTR(value));
+    }
+
     if (!wcscmp(prop, L"max-xml-size"))
     {
         V_VT(value) = VT_I4;
@@ -5770,6 +5917,10 @@ static HRESULT WINAPI saxxmlreader_QueryInterface(IVBSAXXMLReader *iface, REFIID
     {
         *obj = &reader->ISAXXMLReader_iface;
     }
+    else if (IsEqualGUID(riid, &IID_ISAXXMLReaderExtension))
+    {
+        *obj = &reader->ISAXXMLReaderExtension_iface;
+    }
     else if (dispex_query_interface(&reader->dispex, riid, obj))
     {
         return *obj ? S_OK : E_NOINTERFACE;
@@ -6056,13 +6207,13 @@ static HRESULT WINAPI isaxxmlreader_putFeature(ISAXXMLReader *iface, const WCHAR
         (feature == SchemaValidation && value == VARIANT_FALSE) ||
          feature == Namespaces ||
          feature == NamespacePrefixes ||
-         feature == NormalizeLineBreaks)
+         feature == NormalizeLineBreaks ||
+         feature == ProhibitDTD)
     {
         return set_feature_value(reader, feature, value);
     }
 
     if (feature == LexicalHandlerParEntities ||
-            feature == ProhibitDTD ||
             feature == ExternalGeneralEntities ||
             feature == ExternalParameterEntities)
     {
@@ -6205,6 +6356,38 @@ static const struct ISAXXMLReaderVtbl saxxmlreadervtbl =
     isaxxmlreader_parseURL
 };
 
+static HRESULT WINAPI saxxmlreader_extension_QueryInterface(ISAXXMLReaderExtension *iface, REFIID riid, void **obj)
+{
+    struct saxreader *reader = impl_from_ISAXXMLReaderExtension(iface);
+    return IVBSAXXMLReader_QueryInterface(&reader->IVBSAXXMLReader_iface, riid, obj);
+}
+
+static ULONG WINAPI saxxmlreader_extension_AddRef(ISAXXMLReaderExtension *iface)
+{
+    struct saxreader *reader = impl_from_ISAXXMLReaderExtension(iface);
+    return IVBSAXXMLReader_AddRef(&reader->IVBSAXXMLReader_iface);
+}
+
+static ULONG WINAPI saxxmlreader_extension_Release(ISAXXMLReaderExtension *iface)
+{
+    struct saxreader *reader = impl_from_ISAXXMLReaderExtension(iface);
+    return IVBSAXXMLReader_Release(&reader->IVBSAXXMLReader_iface);
+}
+
+static HRESULT WINAPI saxxmlreader_extension_parseUTF16(ISAXXMLReaderExtension *iface, ISequentialStream *stream)
+{
+    struct saxreader *reader = impl_from_ISAXXMLReaderExtension(iface);
+    return saxreader_parse_stream(reader, stream, true, false);
+}
+
+static const struct ISAXXMLReaderExtensionVtbl saxxmlreaderextensionvtbl =
+{
+    saxxmlreader_extension_QueryInterface,
+    saxxmlreader_extension_AddRef,
+    saxxmlreader_extension_Release,
+    saxxmlreader_extension_parseUTF16,
+};
+
 static const tid_t saxreader_iface_tids[] =
 {
     IVBSAXXMLReader_tid,
@@ -6219,27 +6402,168 @@ static dispex_static_data_t saxreader_dispex =
     saxreader_iface_tids
 };
 
+static HRESULT saxreader_create(MSXML_VERSION version, struct saxreader **reader)
+{
+    struct saxreader *object;
+
+    *reader = NULL;
+
+    if (!(object = calloc(1, sizeof(*object))))
+        return E_OUTOFMEMORY;
+
+    object->IVBSAXXMLReader_iface.lpVtbl = &vbsaxxmlreadervtbl;
+    object->ISAXXMLReader_iface.lpVtbl = &saxxmlreadervtbl;
+    object->ISAXXMLReaderExtension_iface.lpVtbl = &saxxmlreaderextensionvtbl;
+    object->refcount = 1;
+    object->features = Namespaces | NamespacePrefixes | NormalizeLineBreaks;
+    object->version = version;
+    object->empty_bstr = SysAllocString(L"");
+
+    init_dispex(&object->dispex, (IUnknown *)&object->IVBSAXXMLReader_iface, &saxreader_dispex);
+
+    *reader = object;
+
+    return S_OK;
+}
+
 HRESULT SAXXMLReader_create(MSXML_VERSION version, void **obj)
 {
     struct saxreader *reader;
+    HRESULT hr;
 
     TRACE("%p\n", obj);
 
-    if (!(reader = calloc(1, sizeof(*reader))))
-        return E_OUTOFMEMORY;
+    *obj = NULL;
 
-    reader->IVBSAXXMLReader_iface.lpVtbl = &vbsaxxmlreadervtbl;
-    reader->ISAXXMLReader_iface.lpVtbl = &saxxmlreadervtbl;
-    reader->refcount = 1;
-    reader->features = Namespaces | NamespacePrefixes | NormalizeLineBreaks;
-    reader->version = version;
-    reader->empty_bstr = SysAllocString(L"");
+    if (SUCCEEDED(hr = saxreader_create(version, &reader)))
+        *obj = &reader->IVBSAXXMLReader_iface;
 
-    init_dispex(&reader->dispex, (IUnknown *)&reader->IVBSAXXMLReader_iface, &saxreader_dispex);
+    TRACE("returning iface %p\n", *obj);
 
-    *obj = &reader->IVBSAXXMLReader_iface;
+    return hr;
+}
 
-    TRACE("returning iface %p\n", *obj);
+/* Fixed size buffer variant, to be used without markup. */
+static void saxreader_parse_xmldecl_body(struct saxlocator *locator)
+{
+    struct parsed_name name;
+    bool done = false;
+    BSTR value;
 
-    return S_OK;
+    saxreader_skipspaces(locator);
+
+    value = saxreader_parse_xmldecl_attribute(locator, &name);
+    saxreader_parse_versioninfo(locator, &name, value);
+    saxreader_free_name(&name);
+    SysFreeString(value);
+
+    saxreader_skipspaces(locator);
+    if (locator->eos)
+        return;
+
+    while (!done && locator->status == S_OK)
+    {
+        value = saxreader_parse_xmldecl_attribute(locator, &name);
+
+        if (!wcscmp(name.qname, L"encoding"))
+        {
+            saxreader_parse_encdecl(locator, &name, value);
+        }
+        else if (!wcscmp(name.qname, L"standalone"))
+        {
+            saxreader_parse_sddecl(locator, &name, value);
+            done = true;
+        }
+        else
+        {
+            saxreader_set_error(locator, E_SAX_UNEXPECTED_ATTRIBUTE);
+            continue;
+        }
+
+        saxreader_free_name(&name);
+        SysFreeString(value);
+
+        saxreader_skipspaces(locator);
+        if (locator->eos)
+            return;
+    }
+
+    saxreader_skipspaces(locator);
+    if (!locator->eos)
+        saxreader_set_error(locator, E_SAX_BAD_XMLDECL);
+}
+
+HRESULT parse_xml_decl_body(const WCHAR *text, BSTR *version, BSTR *encoding, BSTR *standalone)
+{
+    struct saxlocator *locator;
+    ISequentialStream *stream;
+    struct saxreader *reader;
+    HRESULT hr;
+
+    *version = *encoding = *standalone = NULL;
+
+    if (!text)
+        return E_SAX_XMLDECLSYNTAX;
+
+    if (FAILED(hr = stream_wrapper_create(text, wcslen(text) * sizeof(WCHAR), &stream)))
+        return hr;
+
+    hr = saxreader_create(MSXML3, &reader);
+    if (SUCCEEDED(hr))
+    {
+        hr = saxlocator_create(reader, stream, false, &locator);
+        ISAXXMLReader_Release(&reader->ISAXXMLReader_iface);
+    }
+
+    if (SUCCEEDED(hr))
+    {
+        saxreader_detect_encoding(locator, true);
+
+        saxreader_parse_xmldecl_body(locator);
+
+        *version = saxreader_alloc_string(locator, locator->saxreader->xmldecl_version);
+        *encoding = saxreader_alloc_string(locator, locator->saxreader->xmldecl_encoding);
+        *standalone = saxreader_alloc_string(locator, locator->saxreader->xmldecl_standalone);
+
+        hr = locator->status;
+
+        ISAXLocator_Release(&locator->ISAXLocator_iface);
+    }
+
+    ISequentialStream_Release(stream);
+
+    return hr;
+}
+
+static void saxlocator_standalone_init(struct saxlocator *locator, ISequentialStream *stream)
+{
+    locator->stream = stream;
+    locator->buffer.encoding = XML_ENCODING_UTF16LE;
+    locator->buffer.code_page = convert_get_codepage(XML_ENCODING_UTF16LE);
+    locator->buffer.chunk_size = 4096;
+    list_init(&locator->buffer.entities);
+    saxreader_more(locator);
+}
+
+HRESULT parse_qualified_name(const WCHAR *src, struct parsed_name *name)
+{
+    struct saxlocator locator = { 0 };
+    ISequentialStream *stream;
+    HRESULT hr;
+
+    if (FAILED(hr = stream_wrapper_create(src, wcslen(src) * sizeof(WCHAR), &stream)))
+        return hr;
+    saxlocator_standalone_init(&locator, stream);
+
+    saxreader_parse_qname(&locator, name);
+
+    encoded_buffer_cleanup(&locator.buffer.utf16);
+    ISequentialStream_Release(stream);
+
+    return locator.status;
+}
+
+void parsed_name_cleanup(struct parsed_name *name)
+{
+    saxreader_free_name(name);
 }
diff --git a/dlls/msxml3/saxreader_extensions.idl b/dlls/msxml3/saxreader_extensions.idl
new file mode 100644
index 000000000000..19fc2476c6b6
--- /dev/null
+++ b/dlls/msxml3/saxreader_extensions.idl
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2026 Nikolay Sivov
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#pragma makedep header
+
+import "unknwn.idl";
+import "objidl.idl";
+import "oaidl.idl";
+
+[
+    object,
+    local,
+    uuid(437d6b59-62b8-4adb-a9bb-20d5fdc43516)
+]
+interface ISAXExtensionHandler : IUnknown
+{
+    HRESULT xmldecl([in] BSTR version, [in] BSTR encoding,[in] BSTR standalone);
+    HRESULT dtd([in] BSTR data);
+}
+
+[
+    object,
+    local,
+    uuid(b16ef36b-72ed-4caa-9e2d-91453600d030)
+]
+interface ISAXXMLReaderExtension : IUnknown
+{
+    HRESULT parseUTF16([in] ISequentialStream *stream);
+}
diff --git a/dlls/msxml3/schema.c b/dlls/msxml3/schema.c
index 2965d5e69b72..bceb8d097a9b 100644
--- a/dlls/msxml3/schema.c
+++ b/dlls/msxml3/schema.c
@@ -33,6 +33,7 @@
 #include <libxml/xmlIO.h>
 #include <libxml/xmlversion.h>
 #include <libxml/xpath.h>
+#include <libxml/xmlsave.h>
 
 #include "windef.h"
 #include "winbase.h"
@@ -90,7 +91,7 @@ typedef struct
 {
     DispatchEx dispex;
     IXMLDOMSchemaCollection2 IXMLDOMSchemaCollection2_iface;
-    LONG ref;
+    LONG refcount;
 
     MSXML_VERSION version;
     xmlHashTablePtr cache;
@@ -480,14 +481,15 @@ const char* debugstr_dt(XDR_DT dt)
     return debugstr_a(dt != DT_INVALID ? (const char*)DT_string_table[dt].x : NULL);
 }
 
-HRESULT dt_validate(XDR_DT dt, xmlChar const* content)
+HRESULT dt_validate(XDR_DT dt, const WCHAR *contentW)
 {
     xmlDocPtr tmp_doc;
+    xmlChar *content;
     xmlNodePtr node;
     xmlNsPtr ns;
     HRESULT hr;
 
-    TRACE("(dt:%s, %s)\n", debugstr_dt(dt), debugstr_a((char const*)content));
+    TRACE("(dt:%s, %s)\n", debugstr_dt(dt), debugstr_w(contentW));
 
     if (!datatypes_schema)
     {
@@ -540,8 +542,10 @@ HRESULT dt_validate(XDR_DT dt, xmlChar const* content)
                 return S_OK;
             }
 
-            if (content && xmlStrlen(content))
+            if (contentW && *contentW)
             {
+                content = xmlchar_from_wchar(contentW);
+
                 tmp_doc = xmlNewDoc(NULL);
                 node = xmlNewChild((xmlNodePtr)tmp_doc, NULL, dt_to_str(dt), content);
                 ns = xmlNewNs(node, DT_nsURI, BAD_CAST "dt");
@@ -550,6 +554,8 @@ HRESULT dt_validate(XDR_DT dt, xmlChar const* content)
 
                 hr = Schema_validate_tree(datatypes_schema, (xmlNodePtr)tmp_doc);
                 xmlFreeDoc(tmp_doc);
+
+                free(content);
             }
             else
             {   /* probably the node is being created manually and has no content yet */
@@ -661,14 +667,11 @@ static LONG cache_entry_release(cache_entry* entry)
     {
         if (entry->type == CacheEntryType_XSD)
         {
-            xmldoc_release(entry->doc);
             entry->schema->doc = NULL;
             xmlSchemaFree(entry->schema);
         }
         else if (entry->type == CacheEntryType_XDR)
         {
-            xmldoc_release(entry->doc);
-            xmldoc_release(entry->schema->doc);
             entry->schema->doc = NULL;
             xmlSchemaFree(entry->schema);
         }
@@ -761,9 +764,7 @@ static cache_entry* cache_entry_from_xsd_doc(xmlDocPtr doc, xmlChar const* nsURI
 
     if ((entry->schema = Schema_parse(spctx)))
     {
-        xmldoc_init(entry->schema->doc, v);
         entry->doc = entry->schema->doc;
-        xmldoc_add_ref(entry->doc);
     }
     else
     {
@@ -791,10 +792,6 @@ static cache_entry* cache_entry_from_xdr_doc(xmlDocPtr doc, xmlChar const* nsURI
     if ((entry->schema = Schema_parse(spctx)))
     {
         entry->doc = new_doc;
-        xmldoc_init(entry->schema->doc, version);
-        xmldoc_init(entry->doc, version);
-        xmldoc_add_ref(entry->doc);
-        xmldoc_add_ref(entry->schema->doc);
     }
     else
     {
@@ -809,35 +806,41 @@ static cache_entry* cache_entry_from_xdr_doc(xmlDocPtr doc, xmlChar const* nsURI
     return entry;
 }
 
-static cache_entry* cache_entry_from_url(VARIANT url, xmlChar const* nsURI, MSXML_VERSION version)
+static HRESULT cache_entry_on_data_available(void *obj, char *ptr, DWORD len)
 {
-    cache_entry* entry;
-    IXMLDOMDocument3* domdoc = NULL;
-    xmlDocPtr doc = NULL;
-    HRESULT hr = dom_document_create(version, (void **)&domdoc);
-    VARIANT_BOOL b = VARIANT_FALSE;
-    CacheEntryType type = CacheEntryType_Invalid;
+    xmlDocPtr *doc = obj;
 
-    if (hr != S_OK)
+    if ((!(*doc = xmlParseMemory(ptr, len))))
     {
-        FIXME("failed to create domdoc\n");
-        return NULL;
+        WARN("Failed to parse a document.\n");
+        return E_FAIL;
     }
-    assert(domdoc != NULL);
-    assert(V_VT(&url) == VT_BSTR);
 
-    hr = IXMLDOMDocument3_load(domdoc, url, &b);
-    if (hr != S_OK)
+    return S_OK;
+}
+
+static cache_entry* cache_entry_from_url(const WCHAR *url, xmlChar const* nsURI, MSXML_VERSION version)
+{
+    CacheEntryType type = CacheEntryType_Invalid;
+    xmlDocPtr doc = NULL;
+    cache_entry* entry;
+    IMoniker *moniker;
+    HRESULT hr;
+    bsc_t *bsc;
+
+    if (FAILED(hr = create_moniker_from_url(url, &moniker)))
     {
-        ERR("load() returned %#lx.\n", hr);
-        if (b != VARIANT_TRUE)
-        {
-            FIXME("Failed to load doc at %s\n", debugstr_w(V_BSTR(&url)));
-            IXMLDOMDocument3_Release(domdoc);
-            return NULL;
-        }
+        WARN("Failed to create a url moniker, hr %#lx.\n", hr);
+        return NULL;
     }
-    doc = xmlNodePtr_from_domnode((IXMLDOMNode*)domdoc, XML_DOCUMENT_NODE)->doc;
+
+    hr = bind_url(moniker, cache_entry_on_data_available, &doc, &bsc);
+    IMoniker_Release(moniker);
+    if (FAILED(hr))
+        return NULL;
+
+    detach_bsc(bsc);
+
     type = cache_type_from_xmlDocPtr(doc);
 
     switch (type)
@@ -853,7 +856,8 @@ static cache_entry* cache_entry_from_url(VARIANT url, xmlChar const* nsURI, MSXM
             FIXME("invalid schema\n");
             break;
     }
-    IXMLDOMDocument3_Release(domdoc);
+
+    xmlFreeDoc(doc);
 
     return entry;
 }
@@ -912,22 +916,35 @@ static void cache_remove_entry(schema_cache *cache, const xmlChar *uri)
     }
 }
 
+static xmlDocPtr create_xmldoc_for_text(BSTR xml)
+{
+    xmlChar *str = xmlchar_from_wchar(xml);
+    xmlDocPtr doc;
+
+    doc = xmlParseMemory((const char *)str, xmlStrlen(str));
+    free(str);
+    return doc;
+}
+
 /* This one adds all namespaces defined in document to a cache, without anything
    associated with uri obviously.
    Unfortunately namespace:: axis implementation in libxml2 differs from what we need,
    it uses additional node type to describe namespace definition attribute while
    in msxml it's expected to be a normal attribute - as a workaround document is
    queried at libxml2 level here. */
-HRESULT cache_from_doc_ns(IXMLDOMSchemaCollection2 *iface, xmlnode *node)
+HRESULT cache_from_doc_ns(IXMLDOMSchemaCollection2 *iface, struct domnode *node)
 {
     schema_cache* This = impl_from_IXMLDOMSchemaCollection2(iface);
     static const xmlChar query[] = "//*/namespace::*";
     xmlXPathObjectPtr nodeset;
     xmlXPathContextPtr ctxt;
+    xmlNodePtr xmlnode;
+    xmlDocPtr doc;
 
     This->read_only = 1;
 
-    ctxt = xmlXPathNewContext(node->node->doc);
+    doc = create_xmldoc_from_domdoc(node, &xmlnode);
+    ctxt = xmlXPathNewContext(doc);
 
     nodeset = xmlXPathEvalExpression(query, ctxt);
     xmlXPathFreeContext(ctxt);
@@ -966,6 +983,8 @@ HRESULT cache_from_doc_ns(IXMLDOMSchemaCollection2 *iface, xmlnode *node)
         xmlXPathFreeObject(nodeset);
     }
 
+    xmlFreeDoc(doc);
+
     return S_OK;
 }
 
@@ -1015,32 +1034,35 @@ static HRESULT WINAPI schema_cache_QueryInterface(IXMLDOMSchemaCollection2* ifac
     return S_OK;
 }
 
-static ULONG WINAPI schema_cache_AddRef(IXMLDOMSchemaCollection2* iface)
+static ULONG WINAPI schema_cache_AddRef(IXMLDOMSchemaCollection2 *iface)
 {
-    schema_cache* This = impl_from_IXMLDOMSchemaCollection2(iface);
-    LONG ref = InterlockedIncrement(&This->ref);
-    TRACE("%p, refcount %ld.\n", iface, ref);
-    return ref;
+    schema_cache *cache = impl_from_IXMLDOMSchemaCollection2(iface);
+    LONG refcount = InterlockedIncrement(&cache->refcount);
+
+    TRACE("%p, refcount %ld.\n", iface, refcount);
+
+    return refcount;
 }
 
 static ULONG WINAPI schema_cache_Release(IXMLDOMSchemaCollection2* iface)
 {
-    schema_cache* This = impl_from_IXMLDOMSchemaCollection2(iface);
-    LONG ref = InterlockedDecrement(&This->ref);
-    TRACE("%p, refcount %ld.\n", iface, ref);
+    schema_cache *cache = impl_from_IXMLDOMSchemaCollection2(iface);
+    LONG refcount = InterlockedDecrement(&cache->refcount);
+
+    TRACE("%p, refcount %ld.\n", iface, refcount);
 
-    if (!ref)
+    if (!refcount)
     {
         int i;
 
-        for (i = 0; i < This->count; i++)
-            free(This->uris[i]);
-        free(This->uris);
-        xmlHashFree(This->cache, cache_free);
-        free(This);
+        for (i = 0; i < cache->count; i++)
+            free(cache->uris[i]);
+        free(cache->uris);
+        xmlHashFree(cache->cache, cache_free);
+        free(cache);
     }
 
-    return ref;
+    return refcount;
 }
 
 static HRESULT WINAPI schema_cache_GetTypeInfoCount(IXMLDOMSchemaCollection2* iface,
@@ -1080,12 +1102,12 @@ static HRESULT WINAPI schema_cache_Invoke(IXMLDOMSchemaCollection2* iface,
 
 static HRESULT WINAPI schema_cache_add(IXMLDOMSchemaCollection2* iface, BSTR uri, VARIANT var)
 {
-    schema_cache* This = impl_from_IXMLDOMSchemaCollection2(iface);
+    schema_cache *cache = impl_from_IXMLDOMSchemaCollection2(iface);
     xmlChar* name;
 
-    TRACE("(%p)->(%s %s)\n", This, debugstr_w(uri), debugstr_variant(&var));
+    TRACE("%p, %s, %s.\n", iface, debugstr_w(uri), debugstr_variant(&var));
 
-    if (This->read_only) return E_FAIL;
+    if (cache->read_only) return E_FAIL;
 
     name = uri ? xmlchar_from_wchar(uri) : xmlchar_from_wchar(emptyW);
 
@@ -1093,13 +1115,13 @@ static HRESULT WINAPI schema_cache_add(IXMLDOMSchemaCollection2* iface, BSTR uri
     {
         case VT_NULL:
             {
-                cache_remove_entry(This, name);
+                cache_remove_entry(cache, name);
             }
             break;
 
         case VT_BSTR:
             {
-                cache_entry* entry = cache_entry_from_url(var, name, This->version);
+                cache_entry* entry = cache_entry_from_url(V_BSTR(&var), name, cache->version);
 
                 if (entry)
                 {
@@ -1111,7 +1133,7 @@ static HRESULT WINAPI schema_cache_add(IXMLDOMSchemaCollection2* iface, BSTR uri
                     return E_FAIL;
                 }
 
-                cache_add_entry(This, name, entry);
+                cache_add_entry(cache, name, entry);
             }
             break;
 
@@ -1122,6 +1144,9 @@ static HRESULT WINAPI schema_cache_add(IXMLDOMSchemaCollection2* iface, BSTR uri
                 cache_entry* entry;
                 CacheEntryType type;
                 IXMLDOMNode* domnode = NULL;
+                IXMLDOMDocument *domdoc;
+                BSTR xml;
+
                 IUnknown_QueryInterface(V_UNKNOWN(&var), &IID_IXMLDOMNode, (void**)&domnode);
 
                 if (domnode)
@@ -1129,50 +1154,44 @@ static HRESULT WINAPI schema_cache_add(IXMLDOMSchemaCollection2* iface, BSTR uri
                     DOMNodeType type;
 
                     IXMLDOMNode_get_nodeType(domnode, &type);
-                    switch (type)
-                    {
-                    case NODE_ELEMENT:
+                    if (type == NODE_ELEMENT || type == NODE_DOCUMENT)
                     {
-                        IXMLDOMDocument *domdoc;
-                        VARIANT_BOOL b;
-                        BSTR xml;
-
                         IXMLDOMNode_get_xml(domnode, &xml);
-                        dom_document_create(This->version, (void **)&domdoc);
-                        IXMLDOMDocument_loadXML(domdoc, xml, &b);
-                        SysFreeString(xml);
-                        doc = xmlNodePtr_from_domnode((IXMLDOMNode*)domdoc, XML_DOCUMENT_NODE)->doc;
-                        break;
                     }
-                    default:
-                        doc = xmlNodePtr_from_domnode(domnode, XML_DOCUMENT_NODE)->doc;
-                        break;
+                    else
+                    {
+                        IXMLDOMNode_get_ownerDocument(domnode, &domdoc);
+                        IXMLDOMDocument_get_xml(domdoc, &xml);
+                        IXMLDOMDocument_Release(domdoc);
                     }
+
+                    IXMLDOMNode_Release(domnode);
+
+                    doc = create_xmldoc_for_text(xml);
+                    SysFreeString(xml);
                 }
 
                 if (!doc)
                 {
-                    IXMLDOMNode_Release(domnode);
                     free(name);
                     return E_INVALIDARG;
                 }
-                type = cache_type_from_xmlDocPtr(doc);
 
+                type = cache_type_from_xmlDocPtr(doc);
                 if (type == CacheEntryType_XSD)
                 {
-                    entry = cache_entry_from_xsd_doc(doc, name, This->version);
+                    entry = cache_entry_from_xsd_doc(doc, name, cache->version);
                 }
                 else if (type == CacheEntryType_XDR)
                 {
-                    entry = cache_entry_from_xdr_doc(doc, name, This->version);
+                    entry = cache_entry_from_xdr_doc(doc, name, cache->version);
                 }
                 else
                 {
                     WARN("invalid schema!\n");
                     entry = NULL;
                 }
-
-                IXMLDOMNode_Release(domnode);
+                xmlFreeDoc(doc);
 
                 if (entry)
                 {
@@ -1184,7 +1203,7 @@ static HRESULT WINAPI schema_cache_add(IXMLDOMSchemaCollection2* iface, BSTR uri
                     return E_FAIL;
                 }
 
-                cache_add_entry(This, name, entry);
+                cache_add_entry(cache, name, entry);
             }
             break;
 
@@ -1200,13 +1219,15 @@ static HRESULT WINAPI schema_cache_add(IXMLDOMSchemaCollection2* iface, BSTR uri
 static HRESULT WINAPI schema_cache_get(IXMLDOMSchemaCollection2* iface, BSTR uri,
                                        IXMLDOMNode** node)
 {
-    schema_cache* This = impl_from_IXMLDOMSchemaCollection2(iface);
+    schema_cache *cache = impl_from_IXMLDOMSchemaCollection2(iface);
     cache_entry* entry;
     xmlChar* name;
+    HRESULT hr;
+    VARIANT v;
 
-    TRACE("(%p)->(%s %p)\n", This, debugstr_w(uri), node);
+    TRACE("%p, %s, %p.\n", iface, debugstr_w(uri), node);
 
-    if (This->version == MSXML6)
+    if (cache->version == MSXML6)
     {
         if (node) *node = NULL;
         return E_NOTIMPL;
@@ -1218,40 +1239,68 @@ static HRESULT WINAPI schema_cache_get(IXMLDOMSchemaCollection2* iface, BSTR uri
     *node = NULL;
 
     name = uri ? xmlchar_from_wchar(uri) : xmlchar_from_wchar(emptyW);
-    entry = (cache_entry*) xmlHashLookup(This->cache, name);
+    entry = (cache_entry *) xmlHashLookup(cache->cache, name);
     free(name);
 
     /* TODO: this should be read-only */
     if (entry && entry->doc)
-        return get_domdoc_from_xmldoc(entry->doc, (IXMLDOMDocument3**)node);
+    {
+        ISequentialStream *stream;
+        IXMLDOMDocument *doc;
+        xmlBufferPtr buffer;
+        xmlSaveCtxtPtr save;
+        VARIANT_BOOL b;
+
+        buffer = xmlBufferCreate();
+        save = xmlSaveToBuffer(buffer, "UTF-8", 0);
+        xmlSaveDoc(save, entry->doc);
+
+        dom_document_create(cache->version, (void **)&doc);
+        if (SUCCEEDED(hr = stream_wrapper_create(xmlBufferContent(buffer), xmlBufferLength(buffer), &stream)))
+        {
+            V_VT(&v) = VT_UNKNOWN;
+            V_UNKNOWN(&v) = (IUnknown *)stream;
+            hr = IXMLDOMDocument_load(doc, v, &b);
+            ISequentialStream_Release(stream);
+        }
+
+        xmlSaveClose(save);
+        xmlBufferFree(buffer);
+
+        hr = IXMLDOMDocument_QueryInterface(doc, &IID_IXMLDOMNode, (void **)node);
+        IXMLDOMDocument_Release(doc);
+
+        return hr;
+    }
 
     return S_OK;
 }
 
-static HRESULT WINAPI schema_cache_remove(IXMLDOMSchemaCollection2* iface, BSTR uri)
+static HRESULT WINAPI schema_cache_remove(IXMLDOMSchemaCollection2 *iface, BSTR uri)
 {
-    schema_cache* This = impl_from_IXMLDOMSchemaCollection2(iface);
-    xmlChar* name;
+    schema_cache *cache = impl_from_IXMLDOMSchemaCollection2(iface);
+    xmlChar *name;
 
-    TRACE("(%p)->(%s)\n", This, debugstr_w(uri));
+    TRACE("%p, %s.\n", iface, debugstr_w(uri));
 
-    if (This->version == MSXML6) return E_NOTIMPL;
+    if (cache->version == MSXML6) return E_NOTIMPL;
 
     name = uri ? xmlchar_from_wchar(uri) : xmlchar_from_wchar(emptyW);
-    cache_remove_entry(This, name);
+    cache_remove_entry(cache, name);
     free(name);
     return S_OK;
 }
 
-static HRESULT WINAPI schema_cache_get_length(IXMLDOMSchemaCollection2* iface, LONG* length)
+static HRESULT WINAPI schema_cache_get_length(IXMLDOMSchemaCollection2 *iface, LONG *length)
 {
-    schema_cache* This = impl_from_IXMLDOMSchemaCollection2(iface);
-    TRACE("(%p)->(%p)\n", This, length);
+    schema_cache *cache = impl_from_IXMLDOMSchemaCollection2(iface);
+
+    TRACE("%p, %p.\n", iface, length);
 
     if (!length)
         return E_POINTER;
 
-    *length = This->count;
+    *length = cache->count;
     return S_OK;
 }
 
@@ -1287,13 +1336,13 @@ static void cache_copy(void* data, void* dest, const xmlChar* name)
     }
 }
 
-static HRESULT WINAPI schema_cache_addCollection(IXMLDOMSchemaCollection2* iface,
-                                                 IXMLDOMSchemaCollection* collection)
+static HRESULT WINAPI schema_cache_addCollection(IXMLDOMSchemaCollection2 *iface,
+        IXMLDOMSchemaCollection *collection)
 {
     schema_cache* This = impl_from_IXMLDOMSchemaCollection2(iface);
     schema_cache* That;
 
-    TRACE("(%p)->(%p)\n", This, collection);
+    TRACE("%p, %p.\n", iface, collection);
 
     if (!collection)
         return E_POINTER;
@@ -1311,17 +1360,17 @@ static HRESULT WINAPI schema_cache_addCollection(IXMLDOMSchemaCollection2* iface
     return S_OK;
 }
 
-static HRESULT WINAPI schema_cache_get__newEnum(IXMLDOMSchemaCollection2* iface, IUnknown** enumv)
+static HRESULT WINAPI schema_cache_get__newEnum(IXMLDOMSchemaCollection2 *iface, IUnknown **enumv)
 {
-    schema_cache* This = impl_from_IXMLDOMSchemaCollection2(iface);
-    TRACE("(%p)->(%p)\n", This, enumv);
-    return create_enumvariant((IUnknown*)iface, TRUE, &schemacache_enumvariant, (IEnumVARIANT**)enumv);
+    TRACE("%p, %p.\n", iface, enumv);
+
+    return create_enumvariant((IUnknown *)iface, TRUE, &schemacache_enumvariant, (IEnumVARIANT **)enumv);
 }
 
 static HRESULT WINAPI schema_cache_validate(IXMLDOMSchemaCollection2* iface)
 {
-    schema_cache* This = impl_from_IXMLDOMSchemaCollection2(iface);
-    FIXME("(%p): stub\n", This);
+    FIXME("%p: stub\n", iface);
+
     return E_NOTIMPL;
 }
 
@@ -1338,33 +1387,31 @@ static HRESULT WINAPI schema_cache_put_validateOnLoad(IXMLDOMSchemaCollection2*
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI schema_cache_get_validateOnLoad(IXMLDOMSchemaCollection2* iface,
-                                                      VARIANT_BOOL* value)
+static HRESULT WINAPI schema_cache_get_validateOnLoad(IXMLDOMSchemaCollection2 *iface, VARIANT_BOOL *value)
 {
-    schema_cache* This = impl_from_IXMLDOMSchemaCollection2(iface);
-    TRACE("(%p)->(%p)\n", This, value);
+    schema_cache *cache = impl_from_IXMLDOMSchemaCollection2(iface);
+
+    TRACE("%p, %p.\n", iface, value);
 
     if (!value) return E_POINTER;
-    *value = This->validateOnLoad;
+    *value = cache->validateOnLoad;
 
     return S_OK;
 }
 
-static HRESULT WINAPI schema_cache_getSchema(IXMLDOMSchemaCollection2* iface,
-                                             BSTR namespaceURI, ISchema** schema)
+static HRESULT WINAPI schema_cache_getSchema(IXMLDOMSchemaCollection2 *iface, BSTR namespaceURI, ISchema **schema)
 {
-    schema_cache* This = impl_from_IXMLDOMSchemaCollection2(iface);
-    FIXME("(%p)->(%s %p): stub\n", This, debugstr_w(namespaceURI), schema);
+    FIXME("%p, %s, %p: stub\n", iface, debugstr_w(namespaceURI), schema);
+
     if (schema)
         *schema = NULL;
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI schema_cache_getDeclaration(IXMLDOMSchemaCollection2* iface,
-                                                  IXMLDOMNode* node, ISchemaItem** item)
+static HRESULT WINAPI schema_cache_getDeclaration(IXMLDOMSchemaCollection2 *iface, IXMLDOMNode *node, ISchemaItem **item)
 {
-    schema_cache* This = impl_from_IXMLDOMSchemaCollection2(iface);
-    FIXME("(%p)->(%p %p): stub\n", This, node, item);
+    FIXME("%p, %p, %p: stub\n", iface, node, item);
+
     if (item)
         *item = NULL;
     return E_NOTIMPL;
@@ -1393,15 +1440,15 @@ static const struct IXMLDOMSchemaCollection2Vtbl XMLDOMSchemaCollection2Vtbl =
     schema_cache_getDeclaration
 };
 
-static xmlSchemaElementPtr lookup_schema_elemDecl(xmlSchemaPtr schema, xmlNodePtr node)
+static xmlSchemaElementPtr lookup_schema_elemDecl(xmlSchemaPtr schema, const xmlChar *name, const xmlChar *uri)
 {
     xmlSchemaElementPtr decl = NULL;
-    xmlChar const* nsURI = get_node_nsURI(node);
+    xmlChar const* nsURI = uri;
 
-    TRACE("(%p, %p)\n", schema, node);
+    TRACE("%p, %s, %s.\n", schema, debugstr_a((const char *)name), debugstr_a((const char *)uri));
 
     if (xmlStrEqual(nsURI, schema->targetNamespace))
-        decl = xmlHashLookup(schema->elemDecl, node->name);
+        decl = xmlHashLookup(schema->elemDecl, name);
 
     if (!decl && xmlHashSize(schema->schemasImports) > 1)
     {
@@ -1419,9 +1466,9 @@ static xmlSchemaElementPtr lookup_schema_elemDecl(xmlSchemaPtr schema, xmlNodePt
     return decl;
 }
 
-static inline xmlNodePtr lookup_schema_element(xmlSchemaPtr schema, xmlNodePtr node)
+static inline xmlNodePtr lookup_schema_element(xmlSchemaPtr schema, const xmlChar *name, const xmlChar *uri)
 {
-    xmlSchemaElementPtr decl = lookup_schema_elemDecl(schema, node);
+    xmlSchemaElementPtr decl = lookup_schema_elemDecl(schema, name, uri);
     while (decl != NULL && decl->refDecl != NULL)
         decl = decl->refDecl;
     return (decl != NULL)? decl->node : NULL;
@@ -1451,22 +1498,30 @@ HRESULT SchemaCache_validate_tree(IXMLDOMSchemaCollection2* iface, xmlNodePtr tr
     return E_FAIL;
 }
 
-XDR_DT SchemaCache_get_node_dt(IXMLDOMSchemaCollection2* iface, xmlNodePtr node)
+XDR_DT SchemaCache_get_node_dt(IXMLDOMSchemaCollection2* iface, const WCHAR *nameW, const WCHAR *uriW)
 {
-    schema_cache* This = impl_from_IXMLDOMSchemaCollection2(iface);
-    xmlSchemaPtr schema = get_node_schema(This, node);
+    schema_cache *cache = impl_from_IXMLDOMSchemaCollection2(iface);
+    xmlSchemaPtr schema = NULL;
     XDR_DT dt = DT_INVALID;
+    xmlChar *uri, *name;
+    cache_entry *entry;
+
+    TRACE("%p, %s, %s.\n", cache, debugstr_w(nameW), debugstr_w(uriW));
 
-    TRACE("(%p, %p)\n", This, node);
+    uri = uriW ? xmlchar_from_wchar(uriW) : NULL;
+    name = xmlchar_from_wchar(nameW);
 
-    if (node->ns && xmlStrEqual(node->ns->href, DT_nsURI))
+    if ((entry = get_entry(cache, uri)))
+        schema = entry->schema;
+
+    if (uri && xmlStrEqual(uri, DT_nsURI))
     {
-        dt = str_to_dt(node->name, -1);
+        dt = str_to_dt(name, -1);
     }
     else if (schema)
     {
         xmlChar* str;
-        xmlNodePtr schema_node = lookup_schema_element(schema, node);
+        xmlNodePtr schema_node = lookup_schema_element(schema, name, uri);
 
         str = xmlGetNsProp(schema_node, BAD_CAST "dt", DT_nsURI);
         if (str)
@@ -1476,40 +1531,45 @@ XDR_DT SchemaCache_get_node_dt(IXMLDOMSchemaCollection2* iface, xmlNodePtr node)
         }
     }
 
+    free(uri);
+    free(name);
+
     return dt;
 }
 
-static const tid_t schemacache_iface_tids[] = {
+static const tid_t schemacache_iface_tids[] =
+{
     IXMLDOMSchemaCollection2_tid,
     0
 };
 
-static dispex_static_data_t schemacache_dispex = {
+static dispex_static_data_t schemacache_dispex =
+{
     NULL,
     IXMLDOMSchemaCollection2_tid,
     NULL,
     schemacache_iface_tids
 };
 
-HRESULT SchemaCache_create(MSXML_VERSION version, void** obj)
+HRESULT SchemaCache_create(MSXML_VERSION version, void **ret)
 {
-    schema_cache* This = malloc(sizeof(schema_cache));
-    if (!This)
+    schema_cache *object;
+
+    TRACE("%d, %p.\n", version, ret);
+
+    if (!(object = calloc(1, sizeof(*object))))
         return E_OUTOFMEMORY;
 
-    TRACE("(%d %p)\n", version, obj);
+    object->IXMLDOMSchemaCollection2_iface.lpVtbl = &XMLDOMSchemaCollection2Vtbl;
+    object->cache = xmlHashCreate(DEFAULT_HASHTABLE_SIZE);
+    object->allocated = 10;
+    object->uris = malloc(object->allocated * sizeof(xmlChar*));
+    object->refcount = 1;
+    object->version = version;
+    object->validateOnLoad = VARIANT_TRUE;
+    init_dispex(&object->dispex, (IUnknown *)&object->IXMLDOMSchemaCollection2_iface, &schemacache_dispex);
 
-    This->IXMLDOMSchemaCollection2_iface.lpVtbl = &XMLDOMSchemaCollection2Vtbl;
-    This->cache = xmlHashCreate(DEFAULT_HASHTABLE_SIZE);
-    This->allocated = 10;
-    This->count = 0;
-    This->uris = malloc(This->allocated * sizeof(xmlChar*));
-    This->ref = 1;
-    This->version = version;
-    This->validateOnLoad = VARIANT_TRUE;
-    This->read_only = 0;
-    init_dispex(&This->dispex, (IUnknown*)&This->IXMLDOMSchemaCollection2_iface, &schemacache_dispex);
+    *ret = &object->IXMLDOMSchemaCollection2_iface;
 
-    *obj = &This->IXMLDOMSchemaCollection2_iface;
     return S_OK;
 }
diff --git a/dlls/msxml3/selection.c b/dlls/msxml3/selection.c
index e752f59b3478..3acf7b92c62d 100644
--- a/dlls/msxml3/selection.c
+++ b/dlls/msxml3/selection.c
@@ -27,6 +27,7 @@
 #include <libxml/xmlerror.h>
 #include <libxml/xpath.h>
 #include <libxml/xpathInternals.h>
+#include <libxml/xmlsave.h>
 
 #include "windef.h"
 #include "winbase.h"
@@ -50,7 +51,7 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(msxml);
 
-int registerNamespaces(xmlXPathContextPtr ctxt);
+int registerNamespaces(struct domnode *node, xmlXPathContextPtr ctxt);
 xmlChar* XSLPattern_to_XPath(xmlXPathContextPtr ctxt, xmlChar const* xslpat_str);
 
 typedef struct
@@ -66,14 +67,22 @@ typedef struct
     const struct enumvariant_funcs *funcs;
 } enumvariant;
 
+struct selected_list
+{
+    struct domnode **nodes;
+    LONG count;
+    LONG pos;
+};
+
 typedef struct
 {
     DispatchEx dispex;
     IXMLDOMSelection IXMLDOMSelection_iface;
-    LONG ref;
-    xmlNodePtr node;
-    xmlXPathObjectPtr result;
-    int resultPos;
+    LONG refcount;
+    struct domnode *node;
+
+    struct selected_list result;
+
     IEnumVARIANT *enumvariant;
 } domselection;
 
@@ -91,7 +100,8 @@ static HRESULT selection_next(IUnknown *iface)
     return hr;
 }
 
-static const struct enumvariant_funcs selection_enumvariant = {
+static const struct enumvariant_funcs selection_enumvariant =
+{
     selection_get_item,
     selection_next
 };
@@ -106,304 +116,245 @@ static inline enumvariant *impl_from_IEnumVARIANT( IEnumVARIANT *iface )
     return CONTAINING_RECORD(iface, enumvariant, IEnumVARIANT_iface);
 }
 
-static HRESULT WINAPI domselection_QueryInterface(
-    IXMLDOMSelection *iface,
-    REFIID riid,
-    void** ppvObject )
+static HRESULT WINAPI domselection_QueryInterface(IXMLDOMSelection *iface, REFIID riid, void **obj)
 {
-    domselection *This = impl_from_IXMLDOMSelection( iface );
+    domselection *selection = impl_from_IXMLDOMSelection(iface);
 
-    TRACE("(%p)->(%s %p)\n", iface, debugstr_guid(riid), ppvObject);
+    TRACE("%p, %s, %p.\n", iface, debugstr_guid(riid), obj);
 
-    if(!ppvObject)
+    if (!obj)
         return E_INVALIDARG;
 
-    if ( IsEqualGUID( riid, &IID_IUnknown ) ||
-         IsEqualGUID( riid, &IID_IXMLDOMNodeList ) ||
-         IsEqualGUID( riid, &IID_IXMLDOMSelection ))
+    if (IsEqualGUID(riid, &IID_IUnknown) ||
+        IsEqualGUID(riid, &IID_IXMLDOMNodeList) ||
+        IsEqualGUID(riid, &IID_IXMLDOMSelection))
     {
-        *ppvObject = &This->IXMLDOMSelection_iface;
+        *obj = &selection->IXMLDOMSelection_iface;
     }
-    else if (IsEqualGUID( riid, &IID_IEnumVARIANT ))
+    else if (IsEqualGUID(riid, &IID_IEnumVARIANT))
     {
-        if (!This->enumvariant)
+        if (!selection->enumvariant)
         {
-            HRESULT hr = create_enumvariant((IUnknown*)iface, FALSE, &selection_enumvariant, &This->enumvariant);
+            HRESULT hr = create_enumvariant((IUnknown *)iface, FALSE, &selection_enumvariant, &selection->enumvariant);
             if (FAILED(hr)) return hr;
         }
 
-        return IEnumVARIANT_QueryInterface(This->enumvariant, &IID_IEnumVARIANT, ppvObject);
+        return IEnumVARIANT_QueryInterface(selection->enumvariant, &IID_IEnumVARIANT, obj);
     }
-    else if (dispex_query_interface(&This->dispex, riid, ppvObject))
+    else if (dispex_query_interface(&selection->dispex, riid, obj))
     {
-        return *ppvObject ? S_OK : E_NOINTERFACE;
+        return *obj ? S_OK : E_NOINTERFACE;
     }
     else
     {
         TRACE("interface %s not implemented\n", debugstr_guid(riid));
-        *ppvObject = NULL;
+        *obj = NULL;
         return E_NOINTERFACE;
     }
 
-    IXMLDOMSelection_AddRef( iface );
+    IXMLDOMSelection_AddRef(iface);
 
     return S_OK;
 }
 
-static ULONG WINAPI domselection_AddRef(
-    IXMLDOMSelection *iface )
+static ULONG WINAPI domselection_AddRef(IXMLDOMSelection *iface)
 {
-    domselection *This = impl_from_IXMLDOMSelection( iface );
-    ULONG ref = InterlockedIncrement( &This->ref );
-    TRACE("%p, refcount %lu.\n", iface, ref);
-    return ref;
+    domselection *selection = impl_from_IXMLDOMSelection(iface);
+    ULONG refcount = InterlockedIncrement(&selection->refcount);
+
+    TRACE("%p, refcount %lu.\n", iface, refcount);
+
+    return refcount;
 }
 
-static ULONG WINAPI domselection_Release(
-    IXMLDOMSelection *iface )
+static ULONG WINAPI domselection_Release(IXMLDOMSelection *iface)
 {
-    domselection *This = impl_from_IXMLDOMSelection( iface );
-    ULONG ref = InterlockedDecrement(&This->ref);
+    domselection *selection = impl_from_IXMLDOMSelection(iface);
+    ULONG refcount = InterlockedDecrement(&selection->refcount);
 
-    TRACE("%p, refcount %lu.\n", iface, ref);
-    if ( ref == 0 )
+    TRACE("%p, refcount %lu.\n", iface, refcount);
+
+    if (!refcount)
     {
-        xmlXPathFreeObject(This->result);
-        if (This->node)
-            xmldoc_release(This->node->doc);
-        if (This->enumvariant) IEnumVARIANT_Release(This->enumvariant);
-        free(This);
+        if (selection->enumvariant)
+            IEnumVARIANT_Release(selection->enumvariant);
+
+        for (int i = 0; i < selection->result.count; ++i)
+            domnode_release(selection->result.nodes[i]);
+        free(selection->result.nodes);
+        free(selection);
     }
 
-    return ref;
+    return refcount;
 }
 
-static HRESULT WINAPI domselection_GetTypeInfoCount(
-    IXMLDOMSelection *iface,
-    UINT* pctinfo )
+static HRESULT WINAPI domselection_GetTypeInfoCount(IXMLDOMSelection *iface, UINT *count)
 {
-    domselection *This = impl_from_IXMLDOMSelection( iface );
-    return IDispatchEx_GetTypeInfoCount(&This->dispex.IDispatchEx_iface, pctinfo);
+    domselection *selection = impl_from_IXMLDOMSelection(iface);
+    return IDispatchEx_GetTypeInfoCount(&selection->dispex.IDispatchEx_iface, count);
 }
 
-static HRESULT WINAPI domselection_GetTypeInfo(
-    IXMLDOMSelection *iface,
-    UINT iTInfo,
-    LCID lcid,
-    ITypeInfo** ppTInfo )
+static HRESULT WINAPI domselection_GetTypeInfo(IXMLDOMSelection *iface, UINT index, LCID lcid, ITypeInfo **ti)
 {
-    domselection *This = impl_from_IXMLDOMSelection( iface );
-    return IDispatchEx_GetTypeInfo(&This->dispex.IDispatchEx_iface,
-        iTInfo, lcid, ppTInfo);
+    domselection *selection = impl_from_IXMLDOMSelection(iface);
+    return IDispatchEx_GetTypeInfo(&selection->dispex.IDispatchEx_iface, index, lcid, ti);
 }
 
-static HRESULT WINAPI domselection_GetIDsOfNames(
-    IXMLDOMSelection *iface,
-    REFIID riid,
-    LPOLESTR* rgszNames,
-    UINT cNames,
-    LCID lcid,
-    DISPID* rgDispId )
+static HRESULT WINAPI domselection_GetIDsOfNames(IXMLDOMSelection *iface, REFIID riid, LPOLESTR *names,
+        UINT name_count, LCID lcid, DISPID *dispid)
 {
-    domselection *This = impl_from_IXMLDOMSelection( iface );
-    return IDispatchEx_GetIDsOfNames(&This->dispex.IDispatchEx_iface,
-        riid, rgszNames, cNames, lcid, rgDispId);
+    domselection *selection = impl_from_IXMLDOMSelection(iface);
+    return IDispatchEx_GetIDsOfNames(&selection->dispex.IDispatchEx_iface, riid, names, name_count, lcid, dispid);
 }
 
-static HRESULT WINAPI domselection_Invoke(
-    IXMLDOMSelection *iface,
-    DISPID dispIdMember,
-    REFIID riid,
-    LCID lcid,
-    WORD wFlags,
-    DISPPARAMS* pDispParams,
-    VARIANT* pVarResult,
-    EXCEPINFO* pExcepInfo,
-    UINT* puArgErr )
+static HRESULT WINAPI domselection_Invoke(IXMLDOMSelection *iface, DISPID dispIdMember, REFIID riid,
+        LCID lcid, WORD flags, DISPPARAMS *params, VARIANT *result, EXCEPINFO *ei, UINT *argerr)
 {
-    domselection *This = impl_from_IXMLDOMSelection( iface );
-    return IDispatchEx_Invoke(&This->dispex.IDispatchEx_iface,
-        dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
+    domselection *selection = impl_from_IXMLDOMSelection(iface);
+    return IDispatchEx_Invoke(&selection->dispex.IDispatchEx_iface, dispIdMember, riid, lcid, flags,
+            params, result, ei, argerr);
 }
 
-static HRESULT WINAPI domselection_get_item(
-        IXMLDOMSelection* iface,
-        LONG index,
-        IXMLDOMNode** listItem)
+static HRESULT WINAPI domselection_get_item(IXMLDOMSelection *iface, LONG index, IXMLDOMNode **item)
 {
-    domselection *This = impl_from_IXMLDOMSelection( iface );
+    domselection *selection = impl_from_IXMLDOMSelection(iface);
 
-    TRACE("%p, %ld, %p.\n", iface, index, listItem);
+    TRACE("%p, %ld, %p.\n", iface, index, item);
 
-    if(!listItem)
+    if (!item)
         return E_INVALIDARG;
 
-    *listItem = NULL;
+    *item = NULL;
 
-    if (index < 0 || index >= xmlXPathNodeSetGetLength(This->result->nodesetval))
+    if (index < 0 || index >= selection->result.count)
         return S_FALSE;
 
-    *listItem = create_node(xmlXPathNodeSetItem(This->result->nodesetval, index));
-    This->resultPos = index + 1;
+    selection->result.pos = index + 1;
 
-    return S_OK;
+    return create_node(selection->result.nodes[index], item);
 }
 
-static HRESULT WINAPI domselection_get_length(
-        IXMLDOMSelection* iface,
-        LONG* listLength)
+static HRESULT WINAPI domselection_get_length(IXMLDOMSelection *iface, LONG *length)
 {
-    domselection *This = impl_from_IXMLDOMSelection( iface );
+    domselection *selection = impl_from_IXMLDOMSelection(iface);
 
-    TRACE("(%p)->(%p)\n", This, listLength);
+    TRACE("%p, %p.\n", iface, length);
 
-    if(!listLength)
+    if (!length)
         return E_INVALIDARG;
 
-    *listLength = xmlXPathNodeSetGetLength(This->result->nodesetval);
+    *length = selection->result.count;
     return S_OK;
 }
 
-static HRESULT WINAPI domselection_nextNode(
-        IXMLDOMSelection* iface,
-        IXMLDOMNode** nextItem)
+static HRESULT WINAPI domselection_nextNode(IXMLDOMSelection *iface, IXMLDOMNode **node)
 {
-    domselection *This = impl_from_IXMLDOMSelection( iface );
+    domselection *selection = impl_from_IXMLDOMSelection(iface);
 
-    TRACE("(%p)->(%p)\n", This, nextItem );
+    TRACE("%p, %p.\n", iface, node);
 
-    if(!nextItem)
+    if (!node)
         return E_INVALIDARG;
 
-    *nextItem = NULL;
+    *node = NULL;
 
-    if (This->resultPos >= xmlXPathNodeSetGetLength(This->result->nodesetval))
+    if (selection->result.pos >= selection->result.count)
         return S_FALSE;
 
-    *nextItem = create_node(xmlXPathNodeSetItem(This->result->nodesetval, This->resultPos));
-    This->resultPos++;
-    return S_OK;
+    return create_node(selection->result.nodes[selection->result.pos++], node);
 }
 
-static HRESULT WINAPI domselection_reset(
-        IXMLDOMSelection* iface)
+static HRESULT WINAPI domselection_reset(IXMLDOMSelection *iface)
 {
-    domselection *This = impl_from_IXMLDOMSelection( iface );
+    domselection *selection = impl_from_IXMLDOMSelection(iface);
 
-    TRACE("%p\n", This);
-    This->resultPos = 0;
+    TRACE("%p.\n", iface);
+
+    selection->result.pos = 0;
     return S_OK;
 }
 
-static HRESULT WINAPI domselection_get__newEnum(
-        IXMLDOMSelection* iface,
-        IUnknown** enumv)
+static HRESULT WINAPI domselection_get__newEnum(IXMLDOMSelection *iface, IUnknown **enumv)
 {
-    domselection *This = impl_from_IXMLDOMSelection( iface );
-
-    TRACE("(%p)->(%p)\n", This, enumv);
+    TRACE("%p, %p.\n", iface, enumv);
 
-    return create_enumvariant((IUnknown*)iface, TRUE, &selection_enumvariant, (IEnumVARIANT**)enumv);
+    return create_enumvariant((IUnknown *)iface, TRUE, &selection_enumvariant, (IEnumVARIANT**)enumv);
 }
 
-static HRESULT WINAPI domselection_get_expr(
-        IXMLDOMSelection* iface,
-        BSTR *p)
+static HRESULT WINAPI domselection_get_expr(IXMLDOMSelection *iface, BSTR *p)
 {
-    domselection *This = impl_from_IXMLDOMSelection( iface );
-    FIXME("(%p)->(%p)\n", This, p);
+    FIXME("%p, %p.\n", iface, p);
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domselection_put_expr(
-        IXMLDOMSelection* iface,
-        BSTR p)
+static HRESULT WINAPI domselection_put_expr(IXMLDOMSelection *iface, BSTR p)
 {
-    domselection *This = impl_from_IXMLDOMSelection( iface );
-    FIXME("(%p)->(%s)\n", This, debugstr_w(p));
+    FIXME("%p, %s.\n", iface, debugstr_w(p));
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domselection_get_context(
-        IXMLDOMSelection* iface,
-        IXMLDOMNode **node)
+static HRESULT WINAPI domselection_get_context(IXMLDOMSelection *iface, IXMLDOMNode **node)
 {
-    domselection *This = impl_from_IXMLDOMSelection( iface );
-    FIXME("(%p)->(%p)\n", This, node);
+    FIXME("%p, %p.\n", iface, node);
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domselection_putref_context(
-        IXMLDOMSelection* iface,
-        IXMLDOMNode *node)
+static HRESULT WINAPI domselection_putref_context(IXMLDOMSelection *iface, IXMLDOMNode *node)
 {
-    domselection *This = impl_from_IXMLDOMSelection( iface );
-    FIXME("(%p)->(%p)\n", This, node);
+    FIXME("%p, %p.\n", iface, node);
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domselection_peekNode(
-        IXMLDOMSelection* iface,
-        IXMLDOMNode **node)
+static HRESULT WINAPI domselection_peekNode(IXMLDOMSelection *iface, IXMLDOMNode **node)
 {
-    domselection *This = impl_from_IXMLDOMSelection( iface );
-    FIXME("(%p)->(%p)\n", This, node);
+    FIXME("%p, %p.\n", iface, node);
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domselection_matches(
-        IXMLDOMSelection* iface,
-        IXMLDOMNode *node,
-        IXMLDOMNode **out_node)
+static HRESULT WINAPI domselection_matches(IXMLDOMSelection *iface, IXMLDOMNode *node, IXMLDOMNode **out_node)
 {
-    domselection *This = impl_from_IXMLDOMSelection( iface );
-    FIXME("(%p)->(%p %p)\n", This, node, out_node);
+    FIXME("%p, %p, %p.\n", iface, node, out_node);
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domselection_removeNext(
-        IXMLDOMSelection* iface,
-        IXMLDOMNode **node)
+static HRESULT WINAPI domselection_removeNext(IXMLDOMSelection *iface, IXMLDOMNode **node)
 {
-    domselection *This = impl_from_IXMLDOMSelection( iface );
-    FIXME("(%p)->(%p)\n", This, node);
+    FIXME("%p, %p.\n", iface, node);
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domselection_removeAll(
-        IXMLDOMSelection* iface)
+static HRESULT WINAPI domselection_removeAll(IXMLDOMSelection *iface)
 {
-    domselection *This = impl_from_IXMLDOMSelection( iface );
-    FIXME("(%p)\n", This);
+    FIXME("%p.\n", iface);
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domselection_clone(
-        IXMLDOMSelection* iface,
-        IXMLDOMSelection **node)
+static HRESULT WINAPI domselection_clone(IXMLDOMSelection *iface, IXMLDOMSelection **node)
 {
-    domselection *This = impl_from_IXMLDOMSelection( iface );
-    FIXME("(%p)->(%p)\n", This, node);
+    FIXME("%p, %p.\n", iface, node);
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domselection_getProperty(
-        IXMLDOMSelection* iface,
-        BSTR p,
-        VARIANT *var)
+static HRESULT WINAPI domselection_getProperty(IXMLDOMSelection *iface, BSTR p, VARIANT *var)
 {
-    domselection *This = impl_from_IXMLDOMSelection( iface );
-    FIXME("(%p)->(%s %p)\n", This, debugstr_w(p), var);
+    FIXME("%p, %s, %p.\n", iface, debugstr_w(p), var);
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domselection_setProperty(
-        IXMLDOMSelection* iface,
-        BSTR p,
-        VARIANT var)
+static HRESULT WINAPI domselection_setProperty(IXMLDOMSelection *iface, BSTR p, VARIANT var)
 {
-    domselection *This = impl_from_IXMLDOMSelection( iface );
-    FIXME("(%p)->(%s %s)\n", This, debugstr_w(p), debugstr_variant(&var));
+    FIXME("%p, %s, %s.\n", iface, debugstr_w(p), debugstr_variant(&var));
+
     return E_NOTIMPL;
 }
 
@@ -434,7 +385,6 @@ static const struct IXMLDOMSelectionVtbl domselection_vtbl =
     domselection_setProperty
 };
 
-/* IEnumVARIANT support */
 static HRESULT WINAPI enumvariant_QueryInterface(
     IEnumVARIANT *iface,
     REFIID riid,
@@ -473,7 +423,7 @@ static ULONG WINAPI enumvariant_AddRef(IEnumVARIANT *iface )
     return ref;
 }
 
-static ULONG WINAPI enumvariant_Release(IEnumVARIANT *iface )
+static ULONG WINAPI enumvariant_Release(IEnumVARIANT *iface)
 {
     enumvariant *This = impl_from_IEnumVARIANT( iface );
     ULONG ref = InterlockedDecrement(&This->ref);
@@ -488,11 +438,7 @@ static ULONG WINAPI enumvariant_Release(IEnumVARIANT *iface )
     return ref;
 }
 
-static HRESULT WINAPI enumvariant_Next(
-    IEnumVARIANT *iface,
-    ULONG celt,
-    VARIANT *var,
-    ULONG *fetched)
+static HRESULT WINAPI enumvariant_Next(IEnumVARIANT *iface, ULONG celt, VARIANT *var, ULONG *fetched)
 {
     enumvariant *This = impl_from_IEnumVARIANT( iface );
     ULONG ret_count = 0;
@@ -526,9 +472,7 @@ static HRESULT WINAPI enumvariant_Next(
     return celt == 0 ? S_OK : S_FALSE;
 }
 
-static HRESULT WINAPI enumvariant_Skip(
-    IEnumVARIANT *iface,
-    ULONG celt)
+static HRESULT WINAPI enumvariant_Skip(IEnumVARIANT *iface, ULONG celt)
 {
     FIXME("%p, %lu: stub\n", iface, celt);
 
@@ -544,11 +488,10 @@ static HRESULT WINAPI enumvariant_Reset(IEnumVARIANT *iface)
     return S_OK;
 }
 
-static HRESULT WINAPI enumvariant_Clone(
-    IEnumVARIANT *iface, IEnumVARIANT **ppenum)
+static HRESULT WINAPI enumvariant_Clone(IEnumVARIANT *iface, IEnumVARIANT **ppenum)
 {
-    enumvariant *This = impl_from_IEnumVARIANT( iface );
-    FIXME("(%p)->(%p): stub\n", This, ppenum);
+    FIXME("%p, %p: stub\n", iface, ppenum);
+
     return E_NOTIMPL;
 }
 
@@ -603,7 +546,7 @@ static HRESULT domselection_get_dispid(IUnknown *iface, BSTR name, DWORD flags,
 static HRESULT domselection_invoke(IUnknown *iface, DISPID id, LCID lcid, WORD flags, DISPPARAMS *params,
         VARIANT *res, EXCEPINFO *ei)
 {
-    domselection *This = impl_from_IXMLDOMSelection( (IXMLDOMSelection*)iface );
+    domselection *selection = impl_from_IXMLDOMSelection((IXMLDOMSelection *)iface);
 
     TRACE("%p, %ld, %lx, %x, %p, %p, %p.\n", iface, id, lcid, flags, params, res, ei);
 
@@ -619,7 +562,7 @@ static HRESULT domselection_invoke(IUnknown *iface, DISPID id, LCID lcid, WORD f
         {
             IXMLDOMNode *disp = NULL;
 
-            IXMLDOMSelection_get_item(&This->IXMLDOMSelection_iface, id - DISPID_DOM_COLLECTION_BASE, &disp);
+            IXMLDOMSelection_get_item(&selection->IXMLDOMSelection_iface, id - DISPID_DOM_COLLECTION_BASE, &disp);
             V_DISPATCH(res) = (IDispatch*)disp;
             break;
         }
@@ -635,16 +578,20 @@ static HRESULT domselection_invoke(IUnknown *iface, DISPID id, LCID lcid, WORD f
     return S_OK;
 }
 
-static const dispex_static_data_vtbl_t domselection_dispex_vtbl = {
+static const dispex_static_data_vtbl_t domselection_dispex_vtbl =
+{
     domselection_get_dispid,
     domselection_invoke
 };
 
-static const tid_t domselection_iface_tids[] = {
+static const tid_t domselection_iface_tids[] =
+{
     IXMLDOMSelection_tid,
     0
 };
-static dispex_static_data_t domselection_dispex = {
+
+static dispex_static_data_t domselection_dispex =
+{
     &domselection_dispex_vtbl,
     IXMLDOMSelection_tid,
     NULL,
@@ -658,7 +605,6 @@ static dispex_static_data_t domselection_dispex = {
         return; \
     }
 
-
 static void XSLPattern_index(xmlXPathParserContextPtr pctx, int nargs)
 {
     XSLPATTERN_CHECK_ARGS(0);
@@ -762,43 +708,33 @@ static void query_serror(void* ctx, const xmlError* err)
     LIBXML2_CALLBACK_SERROR(domselection_create, err);
 }
 
-HRESULT create_selection(xmlNodePtr node, xmlChar* query, IXMLDOMNodeList **out)
+static HRESULT select_nodes(struct domnode *node, BSTR query, bool xpath, struct selected_list *list)
 {
-    domselection *This = malloc(sizeof(domselection));
-    xmlXPathContextPtr ctxt = xmlXPathNewContext(node->doc);
+    xmlXPathObjectPtr result;
+    xmlXPathContextPtr ctxt;
+    xmlNodePtr xmlnode;
+    xmlChar *xmlquery;
+    xmlDocPtr xmldoc;
     HRESULT hr;
 
-    TRACE("(%p, %s, %p)\n", node, debugstr_a((char const*)query), out);
-
-    *out = NULL;
-    if (!This || !ctxt || !query)
-    {
-        xmlXPathFreeContext(ctxt);
-        free(This);
-        return E_OUTOFMEMORY;
-    }
+    xmlquery = xmlchar_from_wchar(query);
+    xmldoc = create_xmldoc_from_domdoc(node, &xmlnode);
 
-    This->IXMLDOMSelection_iface.lpVtbl = &domselection_vtbl;
-    This->ref = 1;
-    This->resultPos = 0;
-    This->node = node;
-    This->enumvariant = NULL;
-    init_dispex(&This->dispex, (IUnknown*)&This->IXMLDOMSelection_iface, &domselection_dispex);
-    xmldoc_add_ref(This->node->doc);
+    ctxt = xmlXPathNewContext(xmldoc);
+    ctxt->node = xmlnode;
 
     ctxt->error = query_serror;
-    ctxt->node = node;
-    registerNamespaces(ctxt);
+    registerNamespaces(node, ctxt);
     xmlXPathContextSetCache(ctxt, 1, -1, 0);
 
-    if (is_xpathmode(This->node->doc))
+    if (xpath)
     {
         xmlXPathRegisterAllFunctions(ctxt);
-        This->result = xmlXPathEvalExpression(query, ctxt);
+        result = xmlXPathEvalExpression(xmlquery, ctxt);
     }
     else
     {
-        xmlChar* pattern_query = XSLPattern_to_XPath(ctxt, query);
+        xmlChar* pattern_query = XSLPattern_to_XPath(ctxt, xmlquery);
 
         xmlXPathRegisterFunc(ctxt, (xmlChar const*)"not", xmlXPathNotFunction);
         xmlXPathRegisterFunc(ctxt, (xmlChar const*)"boolean", xmlXPathBooleanFunction);
@@ -814,32 +750,83 @@ HRESULT create_selection(xmlNodePtr node, xmlChar* query, IXMLDOMNodeList **out)
         xmlXPathRegisterFunc(ctxt, (xmlChar const*)"OP_IGt", XSLPattern_OP_IGt);
         xmlXPathRegisterFunc(ctxt, (xmlChar const*)"OP_IGEq", XSLPattern_OP_IGEq);
 
-        This->result = xmlXPathEvalExpression(pattern_query, ctxt);
+        result = xmlXPathEvalExpression(pattern_query, ctxt);
         xmlFree(pattern_query);
     }
 
-    if (!This->result || This->result->type != XPATH_NODESET)
+    if (result && result->type == XPATH_NODESET)
+    {
+        list->count = xmlXPathNodeSetGetLength(result->nodesetval);
+        list->nodes = calloc(list->count, sizeof(*list->nodes));
+
+        for (int i = 0; i < list->count; ++i)
+        {
+            xmlnode = xmlXPathNodeSetItem(result->nodesetval, i);
+
+            if (xmlnode->type == XML_NAMESPACE_DECL)
+            {
+                FIXME("Not implemented for namespace nodes.\n");
+                list->count--;
+                continue;
+            }
+            else
+            {
+                node = xmlnode->_private2;
+            }
+
+            list->nodes[i] = domnode_addref(node);
+        }
+
+        TRACE("found %ld matches\n", list->count);
+        hr = S_OK;
+    }
+    else
     {
         hr = E_FAIL;
-        goto cleanup;
     }
 
-    *out = (IXMLDOMNodeList*)&This->IXMLDOMSelection_iface;
-    hr = S_OK;
-    TRACE("found %d matches\n", xmlXPathNodeSetGetLength(This->result->nodesetval));
-
-cleanup:
-    if (FAILED(hr))
-        IXMLDOMSelection_Release( &This->IXMLDOMSelection_iface );
+    xmlXPathFreeObject(result);
     xmlXPathFreeContext(ctxt);
+    xmlFreeDoc(xmldoc);
+    free(xmlquery);
+
     return hr;
 }
 
-HRESULT create_selection_from_nodeset(xmlXPathObjectPtr nodeset, IXMLDOMNodeList **out)
+HRESULT create_selection(struct domnode *node, BSTR query, bool xpath, IXMLDOMNodeList **out)
+{
+    domselection *object;
+    HRESULT hr;
+
+    TRACE("%p, %s, %p.\n", node, debugstr_w(query), out);
+
+    *out = NULL;
+
+    if (!(object = calloc(1, sizeof(*object))))
+        return E_OUTOFMEMORY;
+
+    if (FAILED(hr = select_nodes(node, query, xpath, &object->result)))
+    {
+        free(object);
+        return hr;
+    }
+
+    object->IXMLDOMSelection_iface.lpVtbl = &domselection_vtbl;
+    object->refcount = 1;
+    init_dispex(&object->dispex, (IUnknown *)&object->IXMLDOMSelection_iface, &domselection_dispex);
+
+    *out = (IXMLDOMNodeList *)&object->IXMLDOMSelection_iface;
+
+    return S_OK;
+}
+
+HRESULT create_selection_from_nodeset(xmlXPathObjectPtr result, IXMLDOMNodeList **out)
 {
+    struct domnode *node;
+    xmlNodePtr xmlnode;
     domselection *obj;
 
-    TRACE("%p, %p.\n", nodeset, out);
+    TRACE("%p, %p.\n", result, out);
 
     *out = NULL;
 
@@ -847,10 +834,37 @@ HRESULT create_selection_from_nodeset(xmlXPathObjectPtr nodeset, IXMLDOMNodeList
         return E_OUTOFMEMORY;
 
     obj->IXMLDOMSelection_iface.lpVtbl = &domselection_vtbl;
-    obj->ref = 1;
+    obj->refcount = 1;
     init_dispex(&obj->dispex, (IUnknown *)&obj->IXMLDOMSelection_iface, &domselection_dispex);
 
-    obj->result = nodeset;
+    if (result && result->type == XPATH_NODESET)
+    {
+        obj->result.count = xmlXPathNodeSetGetLength(result->nodesetval);
+        obj->result.nodes = calloc(obj->result.count, sizeof(*obj->result.nodes));
+
+        for (int i = 0; i < obj->result.count; ++i)
+        {
+            xmlnode = xmlXPathNodeSetItem(result->nodesetval, i);
+
+            if (xmlnode->type == XML_NAMESPACE_DECL)
+            {
+                FIXME("Not implemented for namespace nodes.\n");
+                obj->result.count--;
+                continue;
+            }
+            else if (!xmlnode->_private2)
+            {
+                WARN("Skipping untracked node.\n");
+                obj->result.count--;
+                continue;
+            }
+            else
+            {
+                node = xmlnode->_private2;
+                obj->result.nodes[i] = domnode_addref(node);
+            }
+        }
+    }
 
     *out = (IXMLDOMNodeList *)&obj->IXMLDOMSelection_iface;
 
diff --git a/dlls/msxml3/stylesheet.c b/dlls/msxml3/stylesheet.c
index 8163e9d53402..ba4457468684 100644
--- a/dlls/msxml3/stylesheet.c
+++ b/dlls/msxml3/stylesheet.c
@@ -21,8 +21,6 @@
 #define COBJMACROS
 
 #include <stdarg.h>
-#include <libxml/parser.h>
-#include <libxml/xmlerror.h>
 
 #include "windef.h"
 #include "winbase.h"
@@ -804,31 +802,28 @@ static dispex_static_data_t xslprocessor_dispex = {
     xslprocessor_iface_tids
 };
 
-HRESULT XSLProcessor_create(xsltemplate *template, IXSLProcessor **ppObj)
+HRESULT XSLProcessor_create(xsltemplate *template, IXSLProcessor **ret)
 {
-    xslprocessor *This;
+    xslprocessor *object;
 
-    TRACE("(%p)\n", ppObj);
+    TRACE("%p.\n", ret);
 
-    This = malloc(sizeof(*This));
-    if(!This)
+    *ret = NULL;
+
+    if (!(object = calloc(1, sizeof(*object))))
         return E_OUTOFMEMORY;
 
-    This->IXSLProcessor_iface.lpVtbl = &XSLProcessorVtbl;
-    This->ref = 1;
-    This->input = NULL;
-    This->output.unk = NULL;
-    This->output_type = PROCESSOR_OUTPUT_NOT_SET;
-    This->outstr = NULL;
-    list_init(&This->params.list);
-    This->params.count = 0;
-    This->stylesheet = template;
+    object->IXSLProcessor_iface.lpVtbl = &XSLProcessorVtbl;
+    object->ref = 1;
+    object->output_type = PROCESSOR_OUTPUT_NOT_SET;
+    list_init(&object->params.list);
+    object->stylesheet = template;
     IXSLTemplate_AddRef(&template->IXSLTemplate_iface);
-    init_dispex(&This->dispex, (IUnknown*)&This->IXSLProcessor_iface, &xslprocessor_dispex);
+    init_dispex(&object->dispex, (IUnknown *)&object->IXSLProcessor_iface, &xslprocessor_dispex);
 
-    *ppObj = &This->IXSLProcessor_iface;
+    *ret = &object->IXSLProcessor_iface;
 
-    TRACE("returning iface %p\n", *ppObj);
+    TRACE("returning iface %p\n", *ret);
 
     return S_OK;
 }
diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c
index 4dd1516f3a67..eb6e25210c8e 100644
--- a/dlls/msxml3/tests/domdoc.c
+++ b/dlls/msxml3/tests/domdoc.c
@@ -791,6 +791,10 @@ static const char gbkxml[] =
 DECL_GBK
 "<open></open>";
 
+static const char gb2312xml[] =
+"<?xml version=\"1.0\" encoding=\"gb2312\"?>"
+"<open></open>";
+
 #define DECL_ISO8859_1 \
 "<?xml version=\"1.0\" encoding=\"ISO8859-1\"?>"
 
@@ -1508,14 +1512,6 @@ static void test_domdoc( void )
     doc = create_document(&IID_IXMLDOMDocument);
     if (!doc) return;
 
-    check_interface(doc, &IID_IXMLDOMDocument, TRUE);
-    check_interface(doc, &IID_IPersistStreamInit, TRUE);
-    check_interface(doc, &IID_IObjectWithSite, TRUE);
-    check_interface(doc, &IID_IObjectSafety, TRUE);
-    check_interface(doc, &IID_IConnectionPointContainer, TRUE);
-    check_interface(doc, &IID_IDispatch, TRUE);
-    check_interface(doc, &IID_IDispatchEx, TRUE);
-
 if (0)
 {
     /* crashes on native */
@@ -3611,9 +3607,9 @@ static void test_get_text(void)
     VARIANT_BOOL b;
     IXMLDOMDocument *doc;
     IXMLDOMNode *node, *node2, *node3;
-    IXMLDOMNode *nodeRoot;
     IXMLDOMNodeList *node_list;
     IXMLDOMNamedNodeMap *node_map;
+    IXMLDOMElement *element;
     HRESULT hr;
     LONG len;
 
@@ -3623,23 +3619,36 @@ static void test_get_text(void)
     ok(hr == S_OK, "loadXML failed\n");
     ok( b == VARIANT_TRUE, "failed to load XML string\n");
 
-    str = SysAllocString( L"bs" );
-    hr = IXMLDOMDocument_getElementsByTagName( doc, str, &node_list );
+    /* Test to get all child node text. */
+    hr = IXMLDOMDocument_get_text(doc, &str);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(str, L"fn1.txt\n \nfn2.txt\n \nf1"), "Unexpected text %s.\n", debugstr_w(str));
     SysFreeString(str);
 
-    /* Test to get all child node text. */
-    hr = IXMLDOMDocument_QueryInterface(doc, &IID_IXMLDOMNode, (void**)&nodeRoot);
+    hr = IXMLDOMDocument_getElementsByTagName(doc, _bstr_("lc"), &node_list);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    if (hr == S_OK)
-    {
-        hr = IXMLDOMNode_get_text( nodeRoot, &str );
-        ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-        ok(!wcscmp(str, L"fn1.txt\n \nfn2.txt\n \nf1"), "Unexpected text %s.\n", debugstr_w(str));
-        SysFreeString(str);
+    hr = IXMLDOMNodeList_get_item(node_list, 0, &node);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMNode_get_text(node, &str);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(str, L"fn1.txt\n \nfn2.txt\n \nf1"), "Unexpected text %s.\n", debugstr_w(str));
+    SysFreeString(str);
+    IXMLDOMNode_Release(node);
+    IXMLDOMNodeList_Release(node_list);
 
-        IXMLDOMNode_Release(nodeRoot);
-    }
+    hr = IXMLDOMDocument_getElementsByTagName(doc, _bstr_("pr"), &node_list);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMNodeList_get_item(node_list, 0, &node);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMNode_get_text(node, &str);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(str, L"fn2.txt"), "Unexpected text %s.\n", debugstr_w(str));
+    SysFreeString(str);
+    IXMLDOMNode_Release(node);
+    IXMLDOMNodeList_Release(node_list);
+
+    hr = IXMLDOMDocument_getElementsByTagName( doc, _bstr_("bs"), &node_list );
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
 
     hr = IXMLDOMNodeList_get_length( node_list, NULL );
     ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr);
@@ -3688,12 +3697,109 @@ static void test_get_text(void)
     ok( !lstrcmpW(str, L"str2"), "Unexpected string.\n" );
     SysFreeString(str);
 
-
     IXMLDOMNode_Release( node3 );
     IXMLDOMNode_Release( node2 );
     IXMLDOMNamedNodeMap_Release( node_map );
     IXMLDOMNode_Release( node );
-    IXMLDOMDocument_Release( doc );
+
+    hr = IXMLDOMDocument_loadXML(doc, _bstr_("<a>\n <![CDATA[a]]>  This is <![CDATA[b]]> c </a>"), &b);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMDocument_get_documentElement(doc, &element);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMElement_get_text(element, &str);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(str, L"a  This is b c"), "%s\n", debugstr_w(str));
+    SysFreeString(str);
+    IXMLDOMElement_Release(element);
+
+    /* Empty sections */
+    hr = IXMLDOMDocument_loadXML(doc, _bstr_("<a>\n <![CDATA[]]>  This is <![CDATA[]]> c </a>"), &b);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMDocument_get_documentElement(doc, &element);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMElement_get_text(element, &str);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(str, L"  This is  c"), "%s\n", debugstr_w(str));
+    SysFreeString(str);
+    IXMLDOMElement_Release(element);
+
+    hr = IXMLDOMDocument_loadXML(doc, _bstr_("<a>\n <![CDATA[]]>  This is <![CDATA[]]> <![CDATA[]]>b</a>"), &b);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMDocument_get_documentElement(doc, &element);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMElement_get_text(element, &str);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    todo_wine
+    ok(!wcscmp(str, L"  This is  b"), "%s\n", debugstr_w(str));
+    SysFreeString(str);
+    IXMLDOMElement_Release(element);
+
+    hr = IXMLDOMDocument_loadXML(doc, _bstr_("<a>\n <![CDATA[]]>  This is <![CDATA[]]> <![CDATA[]]> </a>"), &b);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMDocument_get_documentElement(doc, &element);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMElement_get_text(element, &str);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(str, L"  This is"), "%s\n", debugstr_w(str));
+    SysFreeString(str);
+    IXMLDOMElement_Release(element);
+
+    hr = IXMLDOMDocument_loadXML(doc, _bstr_("<a>\n <b/>  This is </a>"), &b);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMDocument_get_documentElement(doc, &element);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMElement_get_text(element, &str);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(str, L"This is"), "%s\n", debugstr_w(str));
+    SysFreeString(str);
+    IXMLDOMElement_Release(element);
+
+    /* Separated with PI */
+    hr = IXMLDOMDocument_loadXML(doc, _bstr_("<a>\n a <?pi ?>  This is </a>"), &b);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMDocument_get_documentElement(doc, &element);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMElement_get_text(element, &str);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(str, L"a   This is"), "%s\n", debugstr_w(str));
+    SysFreeString(str);
+    IXMLDOMElement_Release(element);
+
+    hr = IXMLDOMDocument_loadXML(doc, _bstr_("<a><?pi p?>  This is </a>"), &b);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMDocument_get_documentElement(doc, &element);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMElement_get_text(element, &str);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(str, L"This is"), "%s\n", debugstr_w(str));
+    SysFreeString(str);
+    IXMLDOMElement_Release(element);
+
+    /* Deeper nesting level */
+    hr = IXMLDOMDocument_loadXML(doc, _bstr_("<a>a <b> b <![CDATA[]]>  This is </b></a>"), &b);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMDocument_get_documentElement(doc, &element);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMElement_get_text(element, &str);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(str, L"a  b   This is"), "%s\n", debugstr_w(str));
+    SysFreeString(str);
+    IXMLDOMElement_Release(element);
+
+    /* Nested elements, first text node is not an immediate child. */
+    hr = IXMLDOMDocument_loadXML(doc, _bstr_("<a><b> b </b> a </a>"), &b);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMDocument_get_documentElement(doc, &element);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMElement_get_text(element, &str);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(str, L"b  a"), "%s\n", debugstr_w(str));
+    SysFreeString(str);
+    IXMLDOMElement_Release(element);
+
+    IXMLDOMDocument_Release(doc);
 
     free_bstrs();
 }
@@ -3749,7 +3855,6 @@ static void test_get_childNodes(void)
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
     ok(node_type == NODE_DOCUMENT_TYPE, "Unexpected node %d.\n", node_type);
     hr = IXMLDOMDocument_removeChild(doc, node, NULL);
-    todo_wine
     ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr);
     IXMLDOMNode_Release(node);
 
@@ -3763,7 +3868,6 @@ static void test_get_childNodes(void)
     IXMLDOMNode_Release(node);
     hr = IXMLDOMNodeList_get_length(node_list, &len);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    todo_wine
     ok(len == 1, "Unexpected length %ld.\n", len);
 
     hr = IXMLDOMDocument_get_documentElement(doc, &element);
@@ -4798,12 +4902,14 @@ static void test_IXMLDOMDocument2(void)
     ok( b == VARIANT_TRUE, "failed to load XML string\n");
     err = NULL;
     hr = IXMLDOMDocument2_validate(dtddoc2, &err);
+    todo_wine
     ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr);
     ok(err != NULL, "expected pointer\n");
     if (err)
     {
         res = 0;
         hr = IXMLDOMParseError_get_errorCode(err, &res);
+        todo_wine
         ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
         /* XML_REQUIRED_ATTRIBUTE_MISSING */
         todo_wine ok(res == 0xC00CE020, "Unexpected code %#lx.\n", res);
@@ -4970,15 +5076,173 @@ static const struct whitespace_t whitespace_test_data[] = {
 static void test_whitespace(void)
 {
     const struct whitespace_t *class_ptr = whitespace_test_data;
+    IXMLDOMElement *element;
+    IXMLDOMNodeList *list;
+    IXMLDOMDocument *doc;
+    IXMLDOMNode *node, *node2;
+    VARIANT_BOOL b;
+    HRESULT hr;
+    BSTR text;
+    LONG len;
+
+    hr = CoCreateInstance(&CLSID_DOMDocument, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDOMDocument, (void **)&doc);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    /* Load with preservedWhiteSpace == FALSE */
+    hr = IXMLDOMDocument_put_preserveWhiteSpace(doc, VARIANT_FALSE);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMDocument_loadXML(doc, _bstr_("<a>  </a>"), &b);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMDocument_get_documentElement(doc, &element);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMElement_get_childNodes(element, &list);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMNodeList_get_length(list, &len);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!len, "Unexpected length %ld.\n", len);
+    IXMLDOMNodeList_Release(list);
+
+    hr = IXMLDOMElement_get_xml(element, &text);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    todo_wine
+    ok(!wcscmp(text, L"<a>\r\n</a>"), "Unexpected text %s.\n", debugstr_w(text));
+    SysFreeString(text);
+
+    hr = IXMLDOMElement_get_text(element, &text);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(text, L""), "Unexpected text %s.\n", debugstr_w(text));
+    SysFreeString(text);
+
+    hr = IXMLDOMDocument_put_preserveWhiteSpace(doc, VARIANT_TRUE);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMElement_get_text(element, &text);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(text, L""), "Unexpected text %s.\n", debugstr_w(text));
+    SysFreeString(text);
+
+    IXMLDOMElement_Release(element);
+
+    hr = IXMLDOMDocument_put_preserveWhiteSpace(doc, VARIANT_TRUE);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMDocument_loadXML(doc, _bstr_("<a> a<b>  </b>c  </a>"), &b);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMDocument_get_documentElement(doc, &element);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMElement_get_childNodes(element, &list);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMNodeList_nextNode(list, &node);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMNode_get_text(node, &text);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(text, L" a"), "Unexpected text %s.\n", debugstr_w(text));
+    IXMLDOMNode_Release(node);
+    SysFreeString(text);
+
+    hr = IXMLDOMNodeList_nextNode(list, &node);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMNode_get_text(node, &text);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(text, L"  "), "Unexpected text %s.\n", debugstr_w(text));
+    {
+        IXMLDOMNodeList *list;
+
+        hr = IXMLDOMNode_get_childNodes(node, &list);
+        ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+        hr = IXMLDOMNodeList_nextNode(list, &node2);
+        ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+        hr = IXMLDOMNode_get_text(node2, &text);
+        ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+        ok(!wcscmp(text, L"  "), "Unexpected text %s.\n", debugstr_w(text));
+        SysFreeString(text);
+        IXMLDOMNode_Release(node2);
+
+        IXMLDOMNodeList_Release(list);
+    }
+    IXMLDOMNode_Release(node);
+    SysFreeString(text);
+
+    hr = IXMLDOMNodeList_nextNode(list, &node);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMNode_get_text(node, &text);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(text, L"c  "), "Unexpected text %s.\n", debugstr_w(text));
+    IXMLDOMNode_Release(node);
+    SysFreeString(text);
+
+    hr = IXMLDOMElement_get_text(element, &text);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(text, L" a  c  "), "Unexpected text %s.\n", debugstr_w(text));
+    SysFreeString(text);
+
+    hr = IXMLDOMDocument_put_preserveWhiteSpace(doc, VARIANT_FALSE);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMNodeList_reset(list);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMNodeList_nextNode(list, &node);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMNode_get_text(node, &text);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(text, L"a"), "Unexpected text %s.\n", debugstr_w(text));
+    IXMLDOMNode_Release(node);
+    SysFreeString(text);
+
+    hr = IXMLDOMNodeList_nextNode(list, &node);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMNode_get_text(node, &text);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(text, L""), "Unexpected text %s.\n", debugstr_w(text));
+    {
+        IXMLDOMNodeList *list;
+
+        hr = IXMLDOMNode_get_childNodes(node, &list);
+        ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+        hr = IXMLDOMNodeList_nextNode(list, &node2);
+        ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+        hr = IXMLDOMNode_get_text(node2, &text);
+        ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+        ok(!wcscmp(text, L""), "Unexpected text %s.\n", debugstr_w(text));
+        SysFreeString(text);
+        IXMLDOMNode_Release(node2);
+
+        IXMLDOMNodeList_Release(list);
+    }
+    IXMLDOMNode_Release(node);
+    SysFreeString(text);
+
+    hr = IXMLDOMNodeList_nextNode(list, &node);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMNode_get_text(node, &text);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(text, L"c"), "Unexpected text %s.\n", debugstr_w(text));
+    IXMLDOMNode_Release(node);
+    SysFreeString(text);
+
+    hr = IXMLDOMElement_get_text(element, &text);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(text, L"a c"), "Unexpected text %s.\n", debugstr_w(text));
+    SysFreeString(text);
+
+    IXMLDOMNodeList_Release(list);
+    IXMLDOMElement_Release(element);
+    IXMLDOMDocument_Release(doc);
 
     while (class_ptr->clsid)
     {
         IXMLDOMDocument2 *doc1, *doc2, *doc3, *doc4;
         IXMLDOMNodeList *list;
         IXMLDOMElement *root;
-        VARIANT_BOOL b;
-        HRESULT hr;
-        LONG len;
 
         if (!is_clsid_supported(class_ptr->clsid, &IID_IXMLDOMDocument2))
         {
@@ -5613,6 +5877,9 @@ static void test_cloneNode(void )
 
     doc = create_document(&IID_IXMLDOMDocument2);
 
+    hr = IXMLDOMDocument2_cloneNode(doc, VARIANT_FALSE, NULL);
+    ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr);
+
     /* Shallow cloning with a DTD */
     hr = IXMLDOMDocument2_loadXML(doc, _bstr_(szEmailXML), &b);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
@@ -5632,10 +5899,8 @@ static void test_cloneNode(void )
     hr = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMDocument2, (void **)&doc_clone);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
     hr = IXMLDOMDocument2_get_doctype(doc_clone, &doctype2);
-    todo_wine
     ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr );
     hr = IXMLDOMDocument2_get_documentElement(doc_clone, &element);
-    todo_wine
     ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr);
     IXMLDOMDocument2_Release(doc_clone);
     IXMLDOMNode_Release(node);
@@ -6405,43 +6670,35 @@ static void test_testTransforms(void)
     free_bstrs();
 }
 
-struct namespaces_change_t {
-    const CLSID *clsid;
-    const char *name;
-};
-
-static const struct namespaces_change_t namespaces_change_test_data[] = {
-    { &CLSID_DOMDocument,   "CLSID_DOMDocument"   },
-    { &CLSID_DOMDocument2,  "CLSID_DOMDocument2"  },
-    { &CLSID_DOMDocument26, "CLSID_DOMDocument26" },
-    { &CLSID_DOMDocument30, "CLSID_DOMDocument30" },
-    { &CLSID_DOMDocument40, "CLSID_DOMDocument40" },
-    { &CLSID_DOMDocument60, "CLSID_DOMDocument60" },
-    { 0 }
-};
-
 static void test_namespaces_change(void)
 {
-    const struct namespaces_change_t *class_ptr = namespaces_change_test_data;
+    static const GUID *classes[] =
+    {
+        &CLSID_DOMDocument,
+        &CLSID_DOMDocument2,
+        &CLSID_DOMDocument26,
+        &CLSID_DOMDocument30,
+        &CLSID_DOMDocument40,
+        &CLSID_DOMDocument60,
+        NULL,
+    };
 
-    while (class_ptr->clsid)
+    for (int i = 0; i < ARRAYSIZE(classes); ++i)
     {
         IXMLDOMDocument *doc = NULL;
         IXMLDOMElement *elem = NULL;
         IXMLDOMNode *node = NULL;
+        IXMLDOMNamedNodeMap *map;
 
         VARIANT var;
         HRESULT hr;
         BSTR str;
+        LONG len;
 
-        if (!is_clsid_supported(class_ptr->clsid, &IID_IXMLDOMDocument))
-        {
-            class_ptr++;
+        if (!is_clsid_supported(classes[i], &IID_IXMLDOMDocument))
             continue;
-        }
 
-        hr = CoCreateInstance(class_ptr->clsid, NULL, CLSCTX_INPROC_SERVER,
-                              &IID_IXMLDOMDocument, (void**)&doc);
+        hr = CoCreateInstance(classes[i], NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDOMDocument, (void **)&doc);
         ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
 
         V_VT(&var) = VT_I2;
@@ -6456,26 +6713,37 @@ static void test_namespaces_change(void)
         hr = IXMLDOMDocument_get_documentElement(doc, &elem);
         ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
 
+        hr = IXMLDOMElement_get_attributes(elem, &map);
+        ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+        hr = IXMLDOMNamedNodeMap_get_length(map, &len);
+        ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+        ok(!len, "Unexpected length %ld.\n", len);
+        IXMLDOMNamedNodeMap_Release(map);
+
         /* try same prefix, different uri */
         hr = IXMLDOMElement_setAttribute(elem, _bstr_("xmlns:ns"), _variantbstr_("ns/uri2"));
         ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr);
 
-        /* try same prefix and uri */
+        /* Same prefix and uri create an explict attribute for implicitly defined namespace. */
         hr = IXMLDOMElement_setAttribute(elem, _bstr_("xmlns:ns"), _variantbstr_("ns/uri"));
         ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
 
+        hr = IXMLDOMElement_get_attributes(elem, &map);
+        ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+        hr = IXMLDOMNamedNodeMap_get_length(map, &len);
+        ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+        ok(len == 1, "Unexpected length %ld.\n", len);
+        IXMLDOMNamedNodeMap_Release(map);
+
         hr = IXMLDOMElement_get_xml(elem, &str);
         ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-        ok(!lstrcmpW(str, L"<ns:elem xmlns:ns=\"ns/uri\"/>"), "got element %s for %s\n",
-           wine_dbgstr_w(str), class_ptr->name);
+        ok(!lstrcmpW(str, L"<ns:elem xmlns:ns=\"ns/uri\"/>"), "Unexpected element %s.\n", wine_dbgstr_w(str));
         SysFreeString(str);
 
         IXMLDOMElement_Release(elem);
         IXMLDOMDocument_Release(doc);
 
         free_bstrs();
-
-        class_ptr++;
     }
 }
 
@@ -7367,14 +7635,15 @@ static void test_XSLPattern(void)
 static void test_splitText(void)
 {
     IXMLDOMCDATASection *cdata;
+    DOMNodeType node_type;
     IXMLDOMElement *root;
     IXMLDOMDocument *doc;
     IXMLDOMText *text, *text2;
     IXMLDOMNode *node;
-    VARIANT var;
     VARIANT_BOOL success;
     LONG length;
     HRESULT hr;
+    BSTR str;
 
     doc = create_document(&IID_IXMLDOMDocument);
 
@@ -7384,17 +7653,17 @@ static void test_splitText(void)
     hr = IXMLDOMDocument_get_documentElement(doc, &root);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
 
+    /* CDATA */
     hr = IXMLDOMDocument_createCDATASection(doc, _bstr_("beautiful plumage"), &cdata);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
 
-    V_VT(&var) = VT_EMPTY;
     hr = IXMLDOMElement_appendChild(root, (IXMLDOMNode*)cdata, NULL);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
 
     length = 0;
     hr = IXMLDOMCDATASection_get_length(cdata, &length);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    ok(length > 0, "got %ld\n", length);
+    ok(length == 17, "Unexpected length %ld.\n", length);
 
     hr = IXMLDOMCDATASection_splitText(cdata, 0, NULL);
     ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr);
@@ -7409,23 +7678,27 @@ static void test_splitText(void)
     /* offset outside data */
     hr = IXMLDOMCDATASection_splitText(cdata, length + 1, &text);
     ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr);
-    ok(text == 0, "got %p\n", text);
+    ok(!text, "Unexpected pointer %p.\n", text);
 
     text = (void*)0xdeadbeef;
     /* offset outside data */
     hr = IXMLDOMCDATASection_splitText(cdata, length, &text);
     ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr);
-    ok(text == 0, "got %p\n", text);
+    ok(!text, "Unexpected pointer %p.\n", text);
 
     /* no empty node created */
     node = (void*)0xdeadbeef;
     hr = IXMLDOMCDATASection_get_nextSibling(cdata, &node);
     ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr);
-    ok(node == 0, "got %p\n", text);
+    ok(!node, "Unexpected pointer %p.\n", node);
 
     hr = IXMLDOMCDATASection_splitText(cdata, 10, &text);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
 
+    hr = IXMLDOMText_get_nodeType(text, &node_type);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(node_type == NODE_CDATA_SECTION, "Unexpected node type %d.\n", node_type);
+
     length = 0;
     hr = IXMLDOMText_get_length(text, &length);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
@@ -7465,19 +7738,180 @@ static void test_splitText(void)
     ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr);
     ok(text2 == 0, "got %p\n", text);
 
-    text2 = 0;
+    text2 = NULL;
     hr = IXMLDOMText_splitText(text, 4, &text2);
-    todo_wine ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    if (text2) IXMLDOMText_Release(text2);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    IXMLDOMText_Release(text2);
+
+    node = NULL;
+    hr = IXMLDOMText_get_nextSibling(text, &node);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    IXMLDOMNode_Release(node);
+
+    IXMLDOMText_Release(text);
+
+    /* Zero offset */
+    length = 0;
+    hr = IXMLDOMCDATASection_get_length(cdata, &length);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(length == 10, "Unexpected length %ld.\n", length);
+
+    hr = IXMLDOMCDATASection_splitText(cdata, 0, &text);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMText_get_nodeType(text, &node_type);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(node_type == NODE_CDATA_SECTION, "Unexpected node type %d.\n", node_type);
+
+    hr = IXMLDOMText_get_length(text, &length);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(length == 10, "Unexpected length %ld.\n", length);
+
+    hr = IXMLDOMCDATASection_get_length(cdata, &length);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!length, "Unexpected length %ld.\n", length);
+
+    IXMLDOMText_Release(text);
+
+    IXMLDOMElement_Release(root);
+    IXMLDOMCDATASection_Release(cdata);
+
+    /* Text */
+    hr = IXMLDOMDocument_createElement(doc, _bstr_("e"), &root);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMDocument_createTextNode(doc, _bstr_("beautiful plumage"), &text);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMElement_appendChild(root, (IXMLDOMNode *)text, NULL);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    length = 0;
+    hr = IXMLDOMText_get_length(text, &length);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(length == 17, "Unexpected length %ld.\n", length);
+
+    hr = IXMLDOMText_splitText(text, 0, NULL);
+    ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr);
+
+    text2 = (void *)0xdeadbeef;
+    /* negative offset */
+    hr = IXMLDOMText_splitText(text, -1, &text2);
+    ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr);
+    ok(text2 == (void *)0xdeadbeef, "Unexpected pointer %p.\n", text2);
+
+    text2 = (void *)0xdeadbeef;
+    /* offset outside data */
+    hr = IXMLDOMText_splitText(text, length + 1, &text2);
+    ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr);
+    ok(!text2, "Unexpected pointer %p.\n", text);
+
+    text2 = (void *)0xdeadbeef;
+    /* offset outside data */
+    hr = IXMLDOMText_splitText(text, length, &text2);
+    ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr);
+    ok(!text2, "Unexpected pointer %p.\n", text2);
+
+    /* no empty node created */
+    node = (void *)0xdeadbeef;
+    hr = IXMLDOMText_get_nextSibling(text, &node);
+    ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr);
+    ok(!node, "Unexpected pointer %p.\n", node);
+
+    hr = IXMLDOMText_splitText(text, 10, &text2);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMText_get_nodeType(text2, &node_type);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(node_type == NODE_TEXT, "Unexpected node type %d.\n", node_type);
+
+    length = 0;
+    hr = IXMLDOMText_get_length(text2, &length);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(length == 7, "Unexpected length %ld.\n", length);
+
+    hr = IXMLDOMText_get_nextSibling(text, &node);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    IXMLDOMNode_Release(node);
+
+    /* Zero offset */
+    hr = IXMLDOMText_get_previousSibling(text, &node);
+    ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMText_splitText(text, 0, &text2);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMText_get_nodeType(text2, &node_type);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(node_type == NODE_TEXT, "Unexpected node type %d.\n", node_type);
+
+    length = 0;
+    hr = IXMLDOMText_get_length(text2, &length);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(length == 10, "Unexpected length %ld.\n", length);
+
+    hr = IXMLDOMText_get_length(text, &length);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!length, "Unexpected length %ld.\n", length);
 
-    node = 0;
     hr = IXMLDOMText_get_nextSibling(text, &node);
-    todo_wine ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    if (node) IXMLDOMNode_Release(node);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMNode_get_text(node, &str);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(str, L"beautiful"), "Unexpected text %s.\n", debugstr_w(str));
+    SysFreeString(str);
+    IXMLDOMNode_Release(node);
+
+    IXMLDOMText_Release(text2);
 
     IXMLDOMText_Release(text);
+
     IXMLDOMElement_Release(root);
+
+    /* Split with detached nodes */
+    hr = IXMLDOMDocument_createCDATASection(doc, _bstr_("beautiful plumage"), &cdata);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    text = NULL;
+    hr = IXMLDOMCDATASection_splitText(cdata, 9, &text);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMCDATASection_get_nextSibling(cdata, &node);
+    ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMText_get_nodeType(text, &node_type);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(node_type == NODE_CDATA_SECTION, "Unexpected node type %d.\n", node_type);
+    hr = IXMLDOMCDATASection_get_length(cdata, &length);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(length == 9, "Unexpected length %ld.\n", length);
+    hr = IXMLDOMText_get_length(text, &length);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(length == 8, "Unexpected length %ld.\n", length);
+    IXMLDOMText_Release(text);
+
     IXMLDOMCDATASection_Release(cdata);
+
+    hr = IXMLDOMDocument_createTextNode(doc, _bstr_("beautiful plumage"), &text);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    text2 = NULL;
+    hr = IXMLDOMText_splitText(text, 9, &text2);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMText_get_nextSibling(text, &node);
+    ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMText_get_nodeType(text2, &node_type);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(node_type == NODE_TEXT, "Unexpected node type %d.\n", node_type);
+    hr = IXMLDOMText_get_length(text, &length);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(length == 9, "Unexpected length %ld.\n", length);
+    hr = IXMLDOMText_get_length(text2, &length);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(length == 8, "Unexpected length %ld.\n", length);
+    IXMLDOMText_Release(text2);
+
+    IXMLDOMText_Release(text);
+
+    IXMLDOMDocument_Release(doc);
     free_bstrs();
 }
 
@@ -7772,6 +8206,7 @@ static void test_get_ownerDocument(void)
     IXMLDOMDocument2 *doc, *doc_owner;
     IXMLDOMNode *node;
     IXMLDOMSchemaCollection *cache;
+    IXMLDOMDocumentType *doctype;
     VARIANT_BOOL b;
     VARIANT var;
     IXMLDOMElement *element;
@@ -7905,12 +8340,26 @@ static void test_get_ownerDocument(void)
     IXMLDOMAttribute_Release(attr);
     IXMLDOMNodeList_Release(node_list);
 
-    IXMLDOMSchemaCollection_Release(cache);
-    IXMLDOMDocument_Release(doc1);
     IXMLDOMDocument_Release(doc2);
     IXMLDOMDocument_Release(doc3);
     IXMLDOMDocument2_Release(doc);
     IXMLDOMDocument2_Release(doc_owner);
+
+    /* DTD node */
+    hr = IXMLDOMDocument_loadXML(doc1, _bstr_(szEmailXML), NULL);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMDocument_get_doctype(doc1, &doctype);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMDocumentType_get_ownerDocument(doctype, NULL);
+    ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMDocumentType_get_ownerDocument(doctype, &doc2);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    IXMLDOMDocumentType_Release(doctype);
+    IXMLDOMDocument_Release(doc2);
+
+    IXMLDOMSchemaCollection_Release(cache);
+    IXMLDOMDocument_Release(doc1);
     free_bstrs();
 }
 
@@ -8044,8 +8493,7 @@ static void test_setAttributeNode(void)
 
     hr = IXMLDOMElement_get_xml(elem, &str);
     ok( hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    todo_wine ok(lstrcmpW(str, L"<test attr=\"attrvalue2\"/>") == 0,
-        "got %s\n", wine_dbgstr_w(str));
+    ok(!lstrcmpW(str, L"<test attr=\"attrvalue2\"/>"), "got %s\n", wine_dbgstr_w(str));
     SysFreeString(str);
 
     IXMLDOMElement_Release(elem);
@@ -8508,7 +8956,6 @@ static void test_createProcessingInstruction(void)
 
     hr = IXMLDOMDocument_get_xml(doc, &xml);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    todo_wine
     ok(!wcscmp(xml, xml1), "got %s\n", wine_dbgstr_w(xml));
     SysFreeString(xml);
 
@@ -8522,7 +8969,6 @@ static void test_createProcessingInstruction(void)
     hr = GetHGlobalFromStream(stream, &global);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
     p = GlobalLock(global);
-    todo_wine
     ok(!memcmp(p, xml2, sizeof(xml2) - 1), "Unexpected output %s.\n", wine_dbgstr_a(p));
     GlobalUnlock(global);
 
@@ -8545,7 +8991,6 @@ static void test_createProcessingInstruction(void)
     hr = GetHGlobalFromStream(stream, &global);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
     p = GlobalLock(global);
-    todo_wine
     ok(!memcmp(p, xml2, sizeof(xml2) - 1), "Unexpected output %s.\n", wine_dbgstr_a(p));
     GlobalUnlock(global);
 
@@ -8567,7 +9012,6 @@ static void test_createProcessingInstruction(void)
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
 
     p = GlobalLock(global);
-    todo_wine
     ok(!memcmp(p, xml3, sizeof(xml3) - 1), "Unexpected output %s.\n", wine_dbgstr_a(p));
     GlobalUnlock(global);
 
@@ -8896,11 +9340,70 @@ static void test_get_xml(void)
 
     hr = IXMLDOMDocument_get_xml(doc, &xml);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    todo_wine
     ok(!wcscmp(xml, L"<a xmlns:ns=\"uri\"><b ns:attr=\"value\" xmlns:ns=\"uri\"/></a>\r\n"),
             "Unexpected xml %s.\n", wine_dbgstr_w(xml));
     SysFreeString(xml);
 
+    /* Default namespace */
+    hr = IXMLDOMDocument_loadXML(doc, _bstr_("<a><elem xmlns=\"http://blah.org\" /></a>"), &b);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMDocument_get_xml(doc, &xml);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(xml, L"<a><elem xmlns=\"http://blah.org\"/></a>\r\n"),
+            "Unexpected xml %s.\n", wine_dbgstr_w(xml));
+    SysFreeString(xml);
+
+    /* Load with preservedWhiteSpace == FALSE */
+    hr = IXMLDOMDocument_put_preserveWhiteSpace(doc, VARIANT_FALSE);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMDocument_loadXML(doc, _bstr_("<a>  </a>"), &b);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMDocument_get_documentElement(doc, &elem);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    EXPECT_NO_CHILDREN(elem);
+
+    hr = IXMLDOMElement_get_xml(elem, &xml);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    todo_wine
+    ok(!wcscmp(xml, L"<a>\r\n</a>"), "Unexpected text %s.\n", debugstr_w(xml));
+    SysFreeString(xml);
+
+    hr = IXMLDOMDocument_put_preserveWhiteSpace(doc, VARIANT_TRUE);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMElement_get_xml(elem, &xml);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    todo_wine
+    ok(!wcscmp(xml, L"<a>\r\n</a>"), "Unexpected text %s.\n", debugstr_w(xml));
+    SysFreeString(xml);
+    IXMLDOMElement_Release(elem);
+
+    hr = IXMLDOMDocument_loadXML(doc, _bstr_("<a></a>"), &b);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMDocument_get_documentElement(doc, &elem);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMElement_get_xml(elem, &xml);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    todo_wine
+    ok(!wcscmp(xml, L"<a></a>"), "Unexpected text %s.\n", debugstr_w(xml));
+    SysFreeString(xml);
+    IXMLDOMElement_Release(elem);
+
+    hr = IXMLDOMDocument_loadXML(doc, _bstr_("<a/>"), &b);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMDocument_get_documentElement(doc, &elem);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMElement_get_xml(elem, &xml);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(xml, L"<a/>"), "Unexpected text %s.\n", debugstr_w(xml));
+    SysFreeString(xml);
+    IXMLDOMElement_Release(elem);
+
     IXMLDOMDocument_Release(doc);
 
     free_bstrs();
@@ -9139,6 +9642,7 @@ static void test_insertBefore(void)
     IXMLDOMAttribute *attr;
     IXMLDOMElement *elem1, *elem2, *elem3, *elem4, *elem5;
     IXMLDOMNode *node, *newnode, *cdata;
+    IXMLDOMText *text;
     HRESULT hr;
     VARIANT v;
     BSTR p;
@@ -9239,6 +9743,20 @@ static void test_insertBefore(void)
     ok(node == NULL, "got %p\n", node);
     IXMLDOMNode_Release(newnode);
 
+    /* text to attribute */
+    hr = IXMLDOMDocument_createTextNode(doc, _bstr_("text"), &text);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!!text, "Unexpected pointer %p.\n", text);
+
+    V_VT(&v) = VT_NULL;
+    hr = IXMLDOMAttribute_insertBefore(attr, (IXMLDOMNode *)text, v, NULL);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMAttribute_get_text(attr, &p);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(p, L"text"), "Unexpected text %s.\n", debugstr_w(p));
+    SysFreeString(p);
+    IXMLDOMText_Release(text);
+
     /* cdata to attribute */
     V_VT(&v) = VT_I4;
     V_I4(&v) = NODE_CDATA_SECTION;
@@ -9460,7 +9978,7 @@ static void test_insertBefore(void)
     p = NULL;
     hr = IXMLDOMElement_get_xml(elem1, &p);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    todo_wine ok(!lstrcmpW(p, L"<elem1 xmlns=\"http://winehq.org/default\"><elem2/></elem1>"),
+    ok(!lstrcmpW(p, L"<elem1 xmlns=\"http://winehq.org/default\"><elem2/></elem1>"),
         "got %s\n", wine_dbgstr_w(p));
     SysFreeString(p);
 
@@ -9516,11 +10034,11 @@ static void test_insertBefore(void)
 
 static void test_appendChild(void)
 {
+    IXMLDOMDocumentFragment *fragment, *fragment2;
+    IXMLDOMElement *elem, *elem2, *elem3;
     IXMLDOMComment *comment1, *comment2;
-    IXMLDOMDocumentFragment *fragment;
     IXMLDOMProcessingInstruction *pi;
     IXMLDOMDocument *doc, *doc2;
-    IXMLDOMElement *elem, *elem2;
     IXMLDOMText *text1, *text2;
     IXMLDOMNodeList *list;
     DOMNodeType node_type;
@@ -9528,6 +10046,7 @@ static void test_appendChild(void)
     LONG length;
     VARIANT var;
     HRESULT hr;
+    BSTR xml;
 
     doc = create_document(&IID_IXMLDOMDocument);
     doc2 = create_document(&IID_IXMLDOMDocument);
@@ -9580,7 +10099,6 @@ static void test_appendChild(void)
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
 
     hr = IXMLDOMDocument_appendChild(doc, (IXMLDOMNode *)elem2, NULL);
-    todo_wine
     ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr);
 
     hr = IXMLDOMDocument_createComment(doc, _bstr_("Comment1"), &comment1);
@@ -9633,7 +10151,6 @@ static void test_appendChild(void)
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
     ok(node == (IXMLDOMNode *)fragment, "Unexpected child %p.\n", node);
     IXMLDOMNode_Release(node);
-    todo_wine
     EXPECT_NO_CHILDREN(fragment);
 
     hr = IXMLDOMElement_get_childNodes(elem, &list);
@@ -9641,13 +10158,11 @@ static void test_appendChild(void)
 
     hr = IXMLDOMNodeList_get_length(list, &length);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    todo_wine
     ok(length == 2, "Unexpected length %ld.\n", length);
     while (IXMLDOMNodeList_nextNode(list, &node) == S_OK)
     {
         hr = IXMLDOMNode_get_nodeType(node, &node_type);
         ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-        todo_wine
         ok(node_type == NODE_TEXT, "Unexpected type %d.\n", node_type);
         IXMLDOMNode_Release(node);
     }
@@ -9659,63 +10174,174 @@ static void test_appendChild(void)
     IXMLDOMText_Release(text2);
     IXMLDOMDocumentFragment_Release(fragment);
 
-    IXMLDOMDocument_Release(doc);
-}
-
-static void test_get_doctype(void)
-{
-    IXMLDOMDocumentType *doctype;
-    IXMLDOMDocument *doc;
-    VARIANT_BOOL b;
-    HRESULT hr;
-    VARIANT v;
-    BSTR s;
-
-    doc = create_document(&IID_IXMLDOMDocument);
+    /* Nested fragments */
+    hr = IXMLDOMDocument_createDocumentFragment(doc, &fragment);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMDocument_createDocumentFragment(doc, &fragment2);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
 
-    hr = IXMLDOMDocument_get_doctype(doc, NULL);
-    ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMDocument_createElement(doc, _bstr_("elem"), &elem);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMDocumentFragment_appendChild(fragment, (IXMLDOMNode *)elem, NULL);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMDocumentFragment_get_xml(fragment, &xml);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(xml, L"<elem/>"), "Unexpected xml %s.\n", debugstr_w(xml));
+    SysFreeString(xml);
 
-    doctype = (void*)0xdeadbeef;
-    hr = IXMLDOMDocument_get_doctype(doc, &doctype);
-    ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr);
-    ok(doctype == NULL, "got %p\n", doctype);
+    hr = IXMLDOMDocument_createElement(doc, _bstr_("elem2"), &elem2);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMDocumentFragment_appendChild(fragment2, (IXMLDOMNode *)elem2, NULL);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMDocumentFragment_get_xml(fragment2, &xml);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(xml, L"<elem2/>"), "Unexpected xml %s.\n", debugstr_w(xml));
+    SysFreeString(xml);
 
-    hr = IXMLDOMDocument_loadXML(doc, _bstr_(szEmailXML), &b);
+    EXPECT_CHILDREN(fragment2);
+    hr = IXMLDOMDocumentFragment_appendChild(fragment, (IXMLDOMNode *)fragment2, NULL);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    ok(b == VARIANT_TRUE, "failed to load XML string\n");
+    EXPECT_NO_CHILDREN(fragment2);
 
-    doctype = NULL;
-    hr = IXMLDOMDocument_get_doctype(doc, &doctype);
+    hr = IXMLDOMDocumentFragment_get_xml(fragment, &xml);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    ok(doctype != NULL, "got %p\n", doctype);
+    ok(!wcscmp(xml, L"<elem/><elem2/>"), "Unexpected xml %s.\n", debugstr_w(xml));
+    SysFreeString(xml);
 
-    hr = IXMLDOMDocumentType_get_name(doctype, NULL);
-    ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMDocument_createElement(doc, _bstr_("elem3"), &elem3);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
 
-    hr = IXMLDOMDocumentType_get_name(doctype, &s);
+    EXPECT_CHILDREN(fragment);
+    hr = IXMLDOMElement_appendChild(elem3, (IXMLDOMNode *)fragment, NULL);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    EXPECT_NO_CHILDREN(fragment);
+
+    hr = IXMLDOMElement_get_xml(elem3, &xml);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(xml, L"<elem3><elem/><elem2/></elem3>"), "Unexpected xml %s.\n", debugstr_w(xml));
+    SysFreeString(xml);
+
+    IXMLDOMElement_Release(elem);
+    IXMLDOMElement_Release(elem2);
+    IXMLDOMElement_Release(elem3);
+    IXMLDOMDocumentFragment_Release(fragment2);
+    IXMLDOMDocumentFragment_Release(fragment);
+
+    /* Append a child to empty linked fragment */
+    hr = IXMLDOMDocument_createDocumentFragment(doc, &fragment);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMDocument_createDocumentFragment(doc, &fragment2);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMDocument_createElement(doc, _bstr_("elem"), &elem);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMDocument_createElement(doc, _bstr_("elem2"), &elem2);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMDocument_createElement(doc, _bstr_("elem3"), &elem3);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMDocumentFragment_appendChild(fragment, (IXMLDOMNode *)elem, NULL);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMDocumentFragment_appendChild(fragment, (IXMLDOMNode *)fragment2, NULL);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMDocumentFragment_appendChild(fragment2, (IXMLDOMNode *)elem2, NULL);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    EXPECT_CHILDREN(fragment);
+    EXPECT_CHILDREN(fragment2);
+    hr = IXMLDOMElement_appendChild(elem3, (IXMLDOMNode *)fragment, NULL);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    EXPECT_NO_CHILDREN(fragment);
+    EXPECT_CHILDREN(fragment2);
+    hr = IXMLDOMDocumentFragment_get_parentNode(fragment2, &node);
+    ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr);
+    ok(!node, "Unexpected node %p.\n", node);
+
+    hr = IXMLDOMElement_get_xml(elem3, &xml);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(xml, L"<elem3><elem/></elem3>"), "Unexpected xml %s.\n", debugstr_w(xml));
+    SysFreeString(xml);
+
+    hr = IXMLDOMDocumentFragment_get_xml(fragment2, &xml);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(xml, L"<elem2/>"), "Unexpected xml %s.\n", debugstr_w(xml));
+    SysFreeString(xml);
+
+    IXMLDOMElement_Release(elem);
+    IXMLDOMElement_Release(elem2);
+    IXMLDOMElement_Release(elem3);
+    IXMLDOMDocumentFragment_Release(fragment);
+    IXMLDOMDocumentFragment_Release(fragment2);
+
+    IXMLDOMDocument_Release(doc);
+    free_bstrs();
+}
+
+static void test_get_doctype(void)
+{
+    IXMLDOMDocumentType *doctype;
+    IXMLDOMDocument *doc;
+    VARIANT_BOOL b;
+    HRESULT hr;
+    VARIANT v;
+    BSTR s;
+
+    doc = create_document(&IID_IXMLDOMDocument);
+
+    hr = IXMLDOMDocument_get_doctype(doc, NULL);
+    ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr);
+
+    doctype = (void*)0xdeadbeef;
+    hr = IXMLDOMDocument_get_doctype(doc, &doctype);
+    ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr);
+    ok(doctype == NULL, "got %p\n", doctype);
+
+    hr = IXMLDOMDocument_loadXML(doc, _bstr_(szEmailXML), &b);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(b == VARIANT_TRUE, "failed to load XML string\n");
+
+    doctype = NULL;
+    hr = IXMLDOMDocument_get_doctype(doc, &doctype);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(doctype != NULL, "got %p\n", doctype);
+
+    hr = IXMLDOMDocumentType_get_name(doctype, NULL);
+    ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMDocumentType_get_name(doctype, &s);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
     ok(!lstrcmpW(L"email", s), "got name %s\n", wine_dbgstr_w(s));
     SysFreeString(s);
 
     hr = IXMLDOMDocumentType_get_nodeValue(doctype, NULL);
-    todo_wine
     ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr);
 
     V_VT(&v) = VT_EMPTY;
     hr = IXMLDOMDocumentType_get_nodeValue(doctype, &v);
-    todo_wine
     ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr);
-    todo_wine
     ok(V_VT(&v) == VT_NULL, "Unexpected type %d.\n", V_VT(&v));
 
+    hr = IXMLDOMDocumentType_get_text(doctype, NULL);
+    ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMDocumentType_get_text(doctype, &s);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!*s, "Unexpected text %s\n", wine_dbgstr_w(s));
+    SysFreeString(s);
+
     hr = IXMLDOMDocumentType_get_nodeName(doctype, &s);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
     ok(!lstrcmpW(L"email", s), "got name %s\n", wine_dbgstr_w(s));
     SysFreeString(s);
 
+    /* The 'xml' property contains original doctype text as-is, with newlines normalized */
+    hr = IXMLDOMDocumentType_get_xml(doctype, &s);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(s, _bstr_(SZ_EMAIL_DTD)), "Unexpected text %s\n", wine_dbgstr_w(s));
+    SysFreeString(s);
+
     IXMLDOMDocumentType_Release(doctype);
+
     IXMLDOMDocument_Release(doc);
+    free_bstrs();
 }
 
 static void test_get_tagName(void)
@@ -9831,6 +10457,7 @@ static const get_node_typestring_t get_node_typestring[] = {
 static void test_get_nodeTypeString(void)
 {
     const get_node_typestring_t *entry = get_node_typestring;
+    IXMLDOMDocumentType *doctype;
     IXMLDOMDocument *doc;
     HRESULT hr;
     BSTR str;
@@ -9865,6 +10492,19 @@ static void test_get_nodeTypeString(void)
         entry++;
     }
 
+    hr = IXMLDOMDocument_loadXML(doc, _bstr_(szEmailXML), NULL);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMDocument_get_doctype(doc, &doctype);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMDocumentType_get_nodeTypeString(doctype, NULL);
+    ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMDocumentType_get_nodeTypeString(doctype, &str);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(str, L"documenttype"), "Unexpected string %s.\n", debugstr_w(str));
+    SysFreeString(str);
+    IXMLDOMDocumentType_Release(doctype);
+
     IXMLDOMDocument_Release(doc);
     free_bstrs();
 }
@@ -9942,7 +10582,7 @@ static void test_get_attributes(void)
     length = -1;
     hr = IXMLDOMNamedNodeMap_get_length(map, &length);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    todo_wine ok(length == 1, "got %ld\n", length);
+    ok(length == 1, "got %ld\n", length);
 
     if (hr == S_OK && length == 1)
     {
@@ -10013,10 +10653,8 @@ static void test_get_attributes(void)
         hr = IXMLDOMAttribute_put_nodeValue(attr, _variantbstr_("UTF-8"));
         ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
 
-        EXPECT_REF(attr, 2);
         hr = IXMLDOMNamedNodeMap_setNamedItem(map, (IXMLDOMNode*)attr, NULL);
         ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-        EXPECT_REF(attr, 2);
 
         hr = IXMLDOMNode_get_attributes(node, &map);
         ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
@@ -10220,6 +10858,22 @@ static void test_get_attributes(void)
         IXMLDOMNode_Release(node2);
     }
 
+    hr = IXMLDOMNamedNodeMap_getNamedItem(map, _bstr_("xmlns:foaf"), &node2);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMNode_get_xml(node2, &str);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(str, L"xmlns:foaf=\"http://xmlns.com/foaf/0.1/\""), "Unexpected xml %s.\n", debugstr_w(str));
+    SysFreeString(str);
+    IXMLDOMNode_Release(node2);
+
+    hr = IXMLDOMNamedNodeMap_getNamedItem(map, _bstr_("dcterms:created"), &node2);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMNode_get_xml(node2, &str);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(str, L"dcterms:created=\"2025\""), "Unexpected xml %s.\n", debugstr_w(str));
+    SysFreeString(str);
+    IXMLDOMNode_Release(node2);
+
     IXMLDOMNamedNodeMap_Release(map);
     IXMLDOMElement_Release(elem);
 
@@ -10645,6 +11299,7 @@ static void test_load(void)
     } encoding_tests[] =
     {
         { gbkxml,        S_OK,    VARIANT_TRUE  },
+        { gb2312xml,     S_OK,    VARIANT_TRUE  },
         { iso8859_1_xml, S_OK,    VARIANT_TRUE  },
         { win1252xml,    S_OK,    VARIANT_TRUE  },
         { win936xml,     S_FALSE, VARIANT_FALSE },
@@ -10799,7 +11454,9 @@ static void test_load(void)
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
 
     hr = IXMLDOMDocument_load(doc, src, &b);
+    todo_wine
     ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr);
+    todo_wine
     ok(b == VARIANT_FALSE, "got %d\n", b);
 
     VariantClear(&src);
@@ -12142,12 +12799,9 @@ static void test_supporterrorinfo(void)
 
     refcount = get_refcount(doctype);
     hr = IXMLDOMDocumentType_QueryInterface(doctype, &IID_ISupportErrorInfo, (void **)&errorinfo);
-    todo_wine
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
     ok(refcount == get_refcount(doctype), "Unexpected refcount %ld.\n", refcount);
 
-if (hr == S_OK)
-{
     check_interface(errorinfo, &IID_IXMLDOMNode, FALSE);
 
     hr = ISupportErrorInfo_InterfaceSupportsErrorInfo(errorinfo, &IID_IXMLDOMNode);
@@ -12157,7 +12811,7 @@ if (hr == S_OK)
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
 
     ISupportErrorInfo_Release(errorinfo);
-}
+
     IXMLDOMDocumentType_Release(doctype);
 
     IXMLDOMDocument_Release(doc);
@@ -12265,7 +12919,7 @@ static void test_xmlns_attribute(void)
     str = NULL;
     hr = IXMLDOMElement_get_xml(elem, &str);
     ok( hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    todo_wine ok(lstrcmpW(str, L"<Testing xmlns:dt=\"urn:schemas-microsoft-com:datatypes\" dt:dt=\"bin.base64\"/>") == 0,
+    ok(!lstrcmpW(str, L"<Testing xmlns:dt=\"urn:schemas-microsoft-com:datatypes\" dt:dt=\"bin.base64\"/>"),
     "got %s\n", wine_dbgstr_w(str));
     SysFreeString(str);
 
@@ -13451,44 +14105,6 @@ static void test_transformNodeToObject(void)
     free_bstrs();
 }
 
-static void test_normalize_attribute_values(void)
-{
-    IXMLDOMDocument2 *doc;
-    VARIANT var;
-    HRESULT hr;
-
-    if (!is_clsid_supported(&CLSID_DOMDocument60, &IID_IXMLDOMDocument2))
-    {
-        win_skip("NormalizeAttributeValues is not supported.\n");
-        return;
-    }
-
-    doc = create_document_version(60, &IID_IXMLDOMDocument2);
-
-    V_VT(&var) = VT_I2;
-    V_I2(&var) = 10;
-    hr = IXMLDOMDocument2_getProperty(doc, _bstr_("NormalizeAttributeValues"), &var);
-todo_wine {
-    ok(hr == S_OK, "Failed to get property value, hr %#lx.\n", hr);
-    ok(V_VT(&var) == VT_BOOL, "Unexpected property value type, vt %d.\n", V_VT(&var));
-    ok(V_BOOL(&var) == VARIANT_FALSE, "Unexpected property value.\n");
-}
-    V_VT(&var) = VT_BOOL;
-    V_BOOL(&var) = VARIANT_TRUE;
-    hr = IXMLDOMDocument2_setProperty(doc, _bstr_("NormalizeAttributeValues"), var);
-    ok(hr == S_OK, "Failed to set property, hr %#lx.\n", hr);
-
-    V_VT(&var) = VT_I2;
-    V_I2(&var) = 10;
-    hr = IXMLDOMDocument2_getProperty(doc, _bstr_("NormalizeAttributeValues"), &var);
-todo_wine {
-    ok(hr == S_OK, "Failed to get property value, hr %#lx.\n", hr);
-    ok(V_VT(&var) == VT_BOOL, "Unexpected property value type, vt %d.\n", V_VT(&var));
-    ok(V_BOOL(&var) == VARIANT_TRUE, "Unexpected property value.\n");
-}
-    IXMLDOMDocument2_Release(doc);
-}
-
 static void test_max_element_depth_values(void)
 {
     IXMLDOMDocument2 *doc;
@@ -13998,13 +14614,12 @@ static void test_put_text(void)
     IXMLDOMNamedNodeMap *map;
     IXMLDOMDocument2 *doc;
     IXMLDOMNode *node, *node2;
+    IXMLDOMText *text;
     VARIANT_BOOL b;
     BSTR str;
     const WCHAR *expected;
     HRESULT hr;
-
-    if (winetest_platform_is_wine) /* put_text causes ASan errors and crash in Release */
-        return;
+    DOMNodeType type;
 
     doc = create_document(&IID_IXMLDOMDocument2);
 
@@ -14074,7 +14689,6 @@ static void test_put_text(void)
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
 
     expected = L"<open what=\"window\">sesame</open>";
-    todo_wine
     ok(!lstrcmpW(str, expected), "Incorrect element string, got '%s'\n", wine_dbgstr_w(str));
     SysFreeString(str);
 
@@ -14158,6 +14772,64 @@ static void test_put_text(void)
     ok(!lstrcmpW(str, expected), "Incorrect element string, got '%s'\n", wine_dbgstr_w(str));
     SysFreeString(str);
 
+    IXMLDOMElement_Release(element);
+    IXMLDOMDocument2_Release(doc);
+
+    /* test encoding */
+    doc = create_document(&IID_IXMLDOMDocument2);
+
+    b = VARIANT_FALSE;
+    str = SysAllocString(L"<?xml version='1.0' encoding='UTF-16'?>\n<esc>&lt;&gt;&amp;&#10;&quot;&apos;</esc>\n");
+    hr = IXMLDOMDocument2_loadXML(doc, str, &b);
+    ok(hr == S_OK, "Unable to create instance hr %#lx.\n", hr);
+    SysFreeString(str);
+
+    str = NULL;
+    hr = IXMLDOMDocument2_get_text(doc, &str);
+
+    expected = L"<>&\n\"'";
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!lstrcmpW(str, expected), "Incorrect element string, got '%s'\n", wine_dbgstr_w(str));
+    SysFreeString(str);
+
+    element = NULL;
+    hr = IXMLDOMDocument2_get_documentElement(doc, &element);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    str = SysAllocString(expected);
+    hr = IXMLDOMElement_put_text(element, str);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    SysFreeString(str);
+
+    str = NULL;
+    hr = IXMLDOMDocument2_get_text(doc, &str);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!lstrcmpW(str, expected), "Incorrect element string, got '%s'\n", wine_dbgstr_w(str));
+
+    node = NULL;
+    hr = IXMLDOMElement_get_firstChild(element, &node);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    type = -1;
+    hr = IXMLDOMNode_get_nodeType(node, &type);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(type == NODE_TEXT, "got %d\n", type);
+
+    hr = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMText, (void**)&text);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    str = SysAllocString(expected);
+    hr = IXMLDOMText_put_text(text, str);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    SysFreeString(str);
+
+    str = NULL;
+    hr = IXMLDOMText_get_text(text, &str);
+    ok(!lstrcmpW(str, expected), "Incorrect element string, got '%s'\n", wine_dbgstr_w(str));
+    SysFreeString(str);
+
+    IXMLDOMText_Release(text);
+    IXMLDOMNode_Release(node);
     IXMLDOMElement_Release(element);
     IXMLDOMDocument2_Release(doc);
     free_bstrs();
@@ -14197,23 +14869,13 @@ static void test_indent(void)
     SysFreeString(str);
 }
 
-static DWORD WINAPI new_thread(void *arg)
-{
-    HRESULT hr = CoInitialize(NULL);
-    ok(hr == S_OK, "failed to init com\n");
-    if (hr != S_OK) return 1;
-
-    test_indent();
-
-    CoUninitialize();
-    return 0;
-}
-
 static void test_get_parentNode(void)
 {
+    IXMLDOMDocumentType *doctype;
     IXMLDOMNode *node, *child;
     IXMLDOMAttribute *attr;
     IXMLDOMElement *e, *e2;
+    DOMNodeType node_type;
     IXMLDOMDocument *doc;
     VARIANT_BOOL b;
     HRESULT hr;
@@ -14253,7 +14915,24 @@ static void test_get_parentNode(void)
     IXMLDOMElement_Release(e2);
     IXMLDOMElement_Release(e);
 
+    /* DTD parent */
+    hr = IXMLDOMDocument_loadXML(doc, _bstr_(szEmailXML), NULL);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMDocument_get_doctype(doc, &doctype);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMDocumentType_get_parentNode(doctype, NULL);
+    ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMDocumentType_get_parentNode(doctype, &node);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMNode_get_nodeType(node, &node_type);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(node_type == NODE_DOCUMENT, "Unexpected node type %d.\n", node_type);
+    IXMLDOMNode_Release(node);
+    IXMLDOMDocumentType_Release(doctype);
+
     IXMLDOMDocument_Release(doc);
+    free_bstrs();
 }
 
 static void test_removeAttributeNode(void)
@@ -14266,9 +14945,6 @@ static void test_removeAttributeNode(void)
     HRESULT hr;
     BSTR str;
 
-    if (winetest_platform_is_wine)
-        return;
-
     hr = CoCreateInstance(&CLSID_DOMDocument30, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDOMDocument, (void **)&doc);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
 
@@ -14280,7 +14956,6 @@ static void test_removeAttributeNode(void)
 
     hr = IXMLDOMElement_get_xml(element, &str);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    todo_wine
     ok(!wcscmp(str, L"<a ns:attr1=\"attr1-value\" xmlns:ns=\"uri\"><ns:b ns:attr=\"attr-value\"/></a>"), "Unexpected str %s.\n", debugstr_w(str));
     SysFreeString(str);
 
@@ -14297,17 +14972,14 @@ static void test_removeAttributeNode(void)
 
     /* Try to remove namespace definition that's in use */
     hr = IXMLDOMElement_removeAttribute(element, _bstr_("xmlns:ns"));
-    todo_wine
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
 
     hr = IXMLDOMElement_get_xml(element, &str);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    todo_wine
     ok(!wcscmp(str, L"<a xmlns:ns=\"uri\" ns:attr1=\"attr1-value\"><ns:b ns:attr=\"attr-value\"/></a>"), "Unexpected str %s.\n", debugstr_w(str));
     SysFreeString(str);
 
     hr = IXMLDOMElement_getAttribute(element, _bstr_("xmlns:ns"), &var);
-    todo_wine
     ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr);
 
     hr = IXMLDOMElement_getAttributeNode(element, _bstr_("attr1"), &attr);
@@ -14327,7 +14999,6 @@ static void test_removeAttributeNode(void)
 
     hr = IXMLDOMElement_get_xml(element, &str);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    todo_wine
     ok(!wcscmp(str, L"<a><ns:b xmlns:ns=\"uri\" ns:attr=\"attr-value\"/></a>"), "Unexpected str %s.\n", debugstr_w(str));
     SysFreeString(str);
 
@@ -14341,26 +15012,20 @@ static void test_removeAttributeNode(void)
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
 
     hr = IXMLDOMElement_getAttributeNode(element, _bstr_("xmlns:ns"), &attr);
-    todo_wine
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
 
-    if (hr == S_OK)
-    {
-        hr = IXMLDOMAttribute_put_text(attr, _bstr_("uri-2"));
-        ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMAttribute_put_text(attr, _bstr_("uri-2"));
+    ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr);
 
-        IXMLDOMAttribute_Release(attr);
-    }
+    IXMLDOMAttribute_Release(attr);
 
     hr = IXMLDOMElement_getAttributeNode(element, _bstr_("ns:attr1"), &attr);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
 
     hr = IXMLDOMElement_setAttribute(element, _bstr_("xmlns:ns"), _variantbstr_("uri2"));
-    todo_wine
     ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr);
 
     hr = IXMLDOMElement_setAttribute(element, _bstr_("xmlns:ns"), _variantbstr_("uri"));
-    todo_wine
     ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr);
 
     hr = IXMLDOMAttribute_get_namespaceURI(attr, &str);
@@ -14372,7 +15037,6 @@ static void test_removeAttributeNode(void)
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
 
     hr = IXMLDOMElement_setAttribute(element, _bstr_("xmlns:ns"), _variantbstr_("uri2"));
-    todo_wine
     ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr);
 
     hr = IXMLDOMAttribute_get_namespaceURI(attr, &str);
@@ -14406,7 +15070,6 @@ static void test_comment(void)
         ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
 
         hr = IXMLDOMDocument_createComment(doc, _bstr_("A Comment -->"), &comment);
-        todo_wine
         ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr );
 
         hr = IXMLDOMDocument_createComment(doc, _bstr_("A \nCo\rmment\r\n  & < \""), &comment);
@@ -14419,30 +15082,25 @@ static void test_comment(void)
 
         hr = IXMLDOMComment_get_xml(comment, &str);
         ok(hr == S_OK, "Unexpected hr %#lx.\n", hr );
-        todo_wine
         ok(!lstrcmpW(str, L"<!--A \r\nCo\r\nmment\r\n  & < \"-->"), "Unexpected xml %s.\n", debugstr_w(str));
         SysFreeString(str);
 
         hr = IXMLDOMComment_get_text(comment, &str);
         ok(hr == S_OK, "Unexpected hr %#lx.\n", hr );
-        todo_wine
         ok(!lstrcmpW(str, L"A \nCo\nmment\n  & < \""), "Unexpected text %s.\n", debugstr_w(str));
         SysFreeString(str);
 
         hr = IXMLDOMComment_get_data(comment, &str);
         ok(hr == S_OK, "Unexpected hr %#lx.\n", hr );
-        todo_wine
         ok(!lstrcmpW(str, L"A \nCo\nmment\n  & < \""), "Unexpected text %s.\n", debugstr_w(str));
         SysFreeString(str);
 
         hr = IXMLDOMComment_get_nodeValue(comment, &v);
         ok(hr == S_OK, "Unexpected hr %#lx.\n", hr );
-        todo_wine
         ok(!lstrcmpW(str, L"A \nCo\nmment\n  & < \""), "Unexpected text %s.\n", debugstr_w(str));
         VariantClear(&v);
 
         hr = IXMLDOMComment_put_nodeValue(comment, _variantbstr_("comment --> a"));
-        todo_wine
         ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr );
 
         hr = IXMLDOMComment_put_nodeValue(comment, _variantbstr_("comment \ra"));
@@ -14450,13 +15108,11 @@ static void test_comment(void)
 
         hr = IXMLDOMComment_get_data(comment, &str);
         ok(hr == S_OK, "Unexpected hr %#lx.\n", hr );
-        todo_wine
         ok(!lstrcmpW(str, L"comment \na"), "Unexpected text %s.\n", debugstr_w(str));
         SysFreeString(str);
 
         hr = IXMLDOMComment_get_nodeValue(comment, &v);
         ok(hr == S_OK, "Unexpected hr %#lx.\n", hr );
-        todo_wine
         ok(!lstrcmpW(V_BSTR(&v), L"comment \na"), "Unexpected text %s.\n", debugstr_w(V_BSTR(&v)));
         VariantClear(&v);
 
@@ -14465,7 +15121,6 @@ static void test_comment(void)
 
         hr = IXMLDOMComment_get_xml(comment, &str);
         ok(hr == S_OK, "Unexpected hr %#lx.\n", hr );
-        todo_wine
         ok(!lstrcmpW( str, L"<!--comment \r\na-->" ), "Unexpected xml %s.\n", debugstr_w(str));
         SysFreeString(str);
 
@@ -14781,7 +15436,6 @@ static void test_pi(void)
         ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
 
         hr = IXMLDOMDocument_createProcessingInstruction(doc, _bstr_("target"), _bstr_("Some text ?>"), &pi);
-        todo_wine
         ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr );
 
         hr = IXMLDOMDocument_createProcessingInstruction(doc, _bstr_("target"), _bstr_("A \nCo\rmment\r\n  & < \""), &pi);
@@ -14794,30 +15448,25 @@ static void test_pi(void)
 
         hr = IXMLDOMProcessingInstruction_get_xml(pi, &str);
         ok(hr == S_OK, "Unexpected hr %#lx.\n", hr );
-        todo_wine
         ok(!lstrcmpW(str, L"<?target A \r\nCo\r\nmment\r\n  & < \"?>"), "Unexpected xml %s.\n", debugstr_w(str));
         SysFreeString(str);
 
         hr = IXMLDOMProcessingInstruction_get_text(pi, &str);
         ok(hr == S_OK, "Unexpected hr %#lx.\n", hr );
-        todo_wine
         ok(!lstrcmpW(str, L"A \nCo\nmment\n  & < \""), "Unexpected text %s.\n", debugstr_w(str));
         SysFreeString(str);
 
         hr = IXMLDOMProcessingInstruction_get_data(pi, &str);
         ok(hr == S_OK, "Unexpected hr %#lx.\n", hr );
-        todo_wine
         ok(!lstrcmpW(str, L"A \nCo\nmment\n  & < \""), "Unexpected text %s.\n", debugstr_w(str));
         SysFreeString(str);
 
         hr = IXMLDOMProcessingInstruction_get_nodeValue(pi, &v);
         ok(hr == S_OK, "Unexpected hr %#lx.\n", hr );
-        todo_wine
         ok(!lstrcmpW(str, L"A \nCo\nmment\n  & < \""), "Unexpected text %s.\n", debugstr_w(str));
         VariantClear(&v);
 
         hr = IXMLDOMProcessingInstruction_put_nodeValue(pi, _variantbstr_("comment ?> a"));
-        todo_wine
         ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr );
 
         hr = IXMLDOMProcessingInstruction_put_nodeValue(pi, _variantbstr_("comment \na"));
@@ -14825,7 +15474,6 @@ static void test_pi(void)
 
         hr = IXMLDOMProcessingInstruction_get_xml(pi, &str);
         ok(hr == S_OK, "Unexpected hr %#lx.\n", hr );
-        todo_wine
         ok(!lstrcmpW( str, L"<?target comment \r\na?>"), "Unexpected xml %s.\n", debugstr_w(str));
         SysFreeString(str);
 
@@ -14876,15 +15524,12 @@ static void test_pi(void)
 
         /* Can't have markup */
         hr = IXMLDOMProcessingInstruction_put_data(pi, _bstr_("da?>ta"));
-        todo_wine
         ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr);
 
         hr = IXMLDOMProcessingInstruction_put_text(pi, _bstr_("da?>ta"));
-        todo_wine
         ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr);
 
         hr = IXMLDOMProcessingInstruction_put_nodeValue(pi, _variantbstr_("da?>ta"));
-        todo_wine
         ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr);
         VariantClear(&v);
 
@@ -15039,7 +15684,6 @@ static void test_doc_fragment(void)
 
     hr = IXMLDOMDocumentFragment_get_xml(fragment, &str);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    todo_wine
     ok(!lstrcmpW(str, L"<?t pi-text?>"), "Unexpected xml %s.\n", debugstr_w(str));
     SysFreeString(str);
 
@@ -15057,7 +15701,6 @@ static void test_doc_fragment(void)
 
     hr = IXMLDOMDocumentFragment_get_xml(fragment, &str);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    todo_wine
     ok(!lstrcmpW(str, L"<?t pi-text?>text-node"), "Unexpected xml %s.\n", debugstr_w(str));
     SysFreeString(str);
 
@@ -15075,7 +15718,6 @@ static void test_doc_fragment(void)
 
     hr = IXMLDOMDocumentFragment_get_xml(fragment, &str);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    todo_wine
     ok(!lstrcmpW(str, L"<?t pi-text?>text-node<!--comment-->"), "Unexpected xml %s.\n", debugstr_w(str));
     SysFreeString(str);
 
@@ -15093,7 +15735,6 @@ static void test_doc_fragment(void)
 
     hr = IXMLDOMDocumentFragment_get_xml(fragment, &str);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    todo_wine
     ok(!lstrcmpW(str, L"<?t pi-text?>text-node<!--comment--><![CDATA[cdata]]>"), "Unexpected xml %s.\n", debugstr_w(str));
     SysFreeString(str);
 
@@ -15116,7 +15757,6 @@ static void test_doc_fragment(void)
 
     hr = IXMLDOMDocumentFragment_get_xml(fragment, &str);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    todo_wine
     ok(!lstrcmpW(str, L"<?t pi-text?>text-node<!--comment--><![CDATA[cdata]]><e2>text-node2</e2>"),
             "Unexpected xml %s.\n", debugstr_w(str));
     SysFreeString(str);
@@ -15134,7 +15774,6 @@ static void test_doc_fragment(void)
 
     hr = IXMLDOMDocumentFragment_get_xml(fragment, &str);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    todo_wine
     ok(!lstrcmpW(str, L"<?t pi-text?>text-node<!--comment--><![CDATA[cdata]]>"
             "<e2>text-node2<!--comment2--></e2>"),
             "Unexpected xml %s.\n", debugstr_w(str));
@@ -15227,19 +15866,16 @@ static void test_text(void)
 
     hr = IXMLDOMText_get_data(nodetext, &str);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    todo_wine
     ok(!lstrcmpW(str, L"t\ne\nx\nt"), "Unexpected data %s.\n", debugstr_w(str));
     SysFreeString(str);
 
     hr = IXMLDOMText_get_text(nodetext, &str);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    todo_wine
     ok(!lstrcmpW(str, L"t\ne\nx\nt"), "Unexpected data %s.\n", debugstr_w(str));
     SysFreeString(str);
 
     hr = IXMLDOMText_get_nodeValue(nodetext, &var);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    todo_wine
     ok(!lstrcmpW(V_BSTR(&var), L"t\ne\nx\nt"), "Unexpected data %s.\n", debugstr_w(V_BSTR(&var)));
     VariantClear(&var);
 
@@ -15248,19 +15884,16 @@ static void test_text(void)
 
     hr = IXMLDOMText_get_data(nodetext, &str);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    todo_wine
     ok(!lstrcmpW(str, L"t\ne\nx\nt"), "Unexpected data %s.\n", debugstr_w(str));
     SysFreeString(str);
 
     hr = IXMLDOMText_get_text(nodetext, &str);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    todo_wine
     ok(!lstrcmpW(str, L"t\ne\nx\nt"), "Unexpected data %s.\n", debugstr_w(str));
     SysFreeString(str);
 
     hr = IXMLDOMText_get_nodeValue(nodetext, &var);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    todo_wine
     ok(!lstrcmpW(V_BSTR(&var), L"t\ne\nx\nt"), "Unexpected data %s.\n", debugstr_w(V_BSTR(&var)));
     VariantClear(&var);
 
@@ -15580,6 +16213,7 @@ static void test_text(void)
 
 static void test_attribute_value(void)
 {
+    IXMLDOMElement *element;
     IXMLDOMAttribute *attr;
     IXMLDOMDocument *doc;
     IXMLDOMNode *child;
@@ -15672,9 +16306,7 @@ static void test_attribute_value(void)
 
     b = VARIANT_FALSE;
     hr = IXMLDOMAttribute_hasChildNodes(attr, &b);
-    todo_wine
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    todo_wine
     ok(b == VARIANT_TRUE, "Unexpected value %d.\n", b);
 
     V_VT(&value) = VT_EMPTY;
@@ -15683,9 +16315,7 @@ static void test_attribute_value(void)
 
     b = VARIANT_FALSE;
     hr = IXMLDOMAttribute_hasChildNodes(attr, &b);
-    todo_wine
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    todo_wine
     ok(b == VARIANT_TRUE, "Unexpected value %d.\n", b);
 
     hr = IXMLDOMAttribute_put_value(attr, _variantbstr_("<>\"\'"));
@@ -15705,6 +16335,24 @@ static void test_attribute_value(void)
 
     IXMLDOMAttribute_Release(attr);
 
+    /* Newlines in attribute value */
+    hr = IXMLDOMDocument_put_preserveWhiteSpace(doc, VARIANT_TRUE);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMDocument_loadXML(doc, _bstr_("<a attr=\"v\r\na\rl\nu\te\" />"), NULL);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMDocument_get_documentElement(doc, &element);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMElement_getAttribute(element, _bstr_("attr"), &value);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    todo_wine
+    ok(!wcscmp(V_BSTR(&value), L"v\na\nl\nu\te"), "Unexpected value %s.\n", debugstr_w(V_BSTR(&value)));
+    VariantClear(&value);
+
+    IXMLDOMElement_Release(element);
+
     IXMLDOMDocument_Release(doc);
     free_bstrs();
 }
@@ -15713,6 +16361,7 @@ static void test_xmldecl_attributes(void)
 {
     IXMLDOMProcessingInstruction *pi;
     IXMLDOMNamedNodeMap *map;
+    IXMLDOMAttribute *attr;
     IXMLDOMDocument *doc;
     IXMLDOMNode *node;
     VARIANT_BOOL b;
@@ -15733,51 +16382,46 @@ static void test_xmldecl_attributes(void)
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
     IXMLDOMNode_Release(node);
 
+    hr = IXMLDOMProcessingInstruction_get_text(pi, &str);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(str, L"version=\"1.0\" encoding=\"UTF-16\" standalone=\"yes\""), "Unexpected text %s.\n", debugstr_w(str));
+    SysFreeString(str);
+
     hr = IXMLDOMProcessingInstruction_get_attributes(pi, &map);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
 
     node = NULL;
     hr = IXMLDOMNamedNodeMap_removeNamedItem(map, _bstr_("encoding"), &node);
-    todo_wine
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    if (node)
-        IXMLDOMNode_Release(node);
+    IXMLDOMNode_Release(node);
 
     hr = IXMLDOMProcessingInstruction_get_xml(pi, &str);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    todo_wine
     ok(!wcscmp(str, L"<?xml version=\"1.0\" standalone=\"yes\"?>"), "Unexpected string %s.\n", debugstr_w(str));
     SysFreeString(str);
 
     node = NULL;
     hr = IXMLDOMNamedNodeMap_removeNamedItem(map, _bstr_("standalone"), &node);
-    todo_wine
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    if (node)
-        IXMLDOMNode_Release(node);
+    IXMLDOMNode_Release(node);
 
     hr = IXMLDOMProcessingInstruction_get_xml(pi, &str);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    todo_wine
     ok(!wcscmp(str, L"<?xml version=\"1.0\"?>"), "Unexpected string %s.\n", debugstr_w(str));
     SysFreeString(str);
 
     hr = IXMLDOMProcessingInstruction_get_data(pi, &str);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    todo_wine
     ok(!wcscmp(str, L"version=\"1.0\""), "Unexpected string %s.\n", debugstr_w(str));
     SysFreeString(str);
 
     node = NULL;
     hr = IXMLDOMNamedNodeMap_removeNamedItem(map, _bstr_("version"), &node);
-    todo_wine
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    if (node)
-        IXMLDOMNode_Release(node);
+    IXMLDOMNode_Release(node);
 
     hr = IXMLDOMProcessingInstruction_get_data(pi, &str);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    todo_wine
     ok(!wcscmp(str, L""), "Unexpected string %s.\n", debugstr_w(str));
     SysFreeString(str);
 
@@ -15787,10 +16431,86 @@ static void test_xmldecl_attributes(void)
 
     hr = IXMLDOMProcessingInstruction_get_xml(pi, &str);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    todo_wine
     ok(!wcscmp(str, L"<?xml version=\"1.0\"?>"), "Unexpected string %s.\n", debugstr_w(str));
     SysFreeString(str);
 
+    hr = IXMLDOMDocument_createAttribute(doc, _bstr_("standalone"), &attr);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMAttribute_put_text(attr, _bstr_("no"));
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMNamedNodeMap_setNamedItem(map, (IXMLDOMNode *)attr, NULL);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    IXMLDOMAttribute_Release(attr);
+
+    hr = IXMLDOMProcessingInstruction_get_xml(pi, &str);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(str, L"<?xml version=\"1.0\" standalone=\"no\"?>"), "Unexpected string %s.\n", debugstr_w(str));
+    SysFreeString(str);
+
+    hr = IXMLDOMProcessingInstruction_get_text(pi, &str);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(str, L"standalone=\"no\""), "Unexpected string %s.\n", debugstr_w(str));
+    SysFreeString(str);
+
+    hr = IXMLDOMDocument_createAttribute(doc, _bstr_("encoding"), &attr);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMAttribute_put_text(attr, _bstr_("utf-8"));
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMNamedNodeMap_setNamedItem(map, (IXMLDOMNode *)attr, NULL);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    IXMLDOMAttribute_Release(attr);
+
+    hr = IXMLDOMNamedNodeMap_get_length(map, &length);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(length == 2, "Unexpected length %ld.\n", length);
+
+    hr = IXMLDOMNamedNodeMap_get_item(map, 0, &node);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMNode_get_nodeName(node, &str);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(str, L"standalone"), "Unexpected name %s.\n", debugstr_w(str));
+    SysFreeString(str);
+    IXMLDOMNode_Release(node);
+
+    hr = IXMLDOMNamedNodeMap_get_item(map, 1, &node);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMNode_get_nodeName(node, &str);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(str, L"encoding"), "Unexpected name %s.\n", debugstr_w(str));
+    SysFreeString(str);
+    IXMLDOMNode_Release(node);
+
+    hr = IXMLDOMProcessingInstruction_get_text(pi, &str);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(str, L"standalone=\"no\" encoding=\"utf-8\""), "Unexpected string %s.\n", debugstr_w(str));
+    SysFreeString(str);
+
+    hr = IXMLDOMProcessingInstruction_get_xml(pi, &str);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(str, L"<?xml version=\"1.0\" standalone=\"no\"?>"), "Unexpected string %s.\n", debugstr_w(str));
+    SysFreeString(str);
+
+    hr = IXMLDOMDocument_createAttribute(doc, _bstr_("version"), &attr);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMAttribute_put_text(attr, _bstr_("2.0abc"));
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMNamedNodeMap_setNamedItem(map, (IXMLDOMNode *)attr, NULL);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    IXMLDOMAttribute_Release(attr);
+
+    hr = IXMLDOMProcessingInstruction_get_text(pi, &str);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(str, L"standalone=\"no\" encoding=\"utf-8\" version=\"2.0abc\""), "Unexpected string %s.\n", debugstr_w(str));
+    SysFreeString(str);
+
+    hr = IXMLDOMProcessingInstruction_get_xml(pi, &str);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(str, L"<?xml version=\"2.0abc\" standalone=\"no\"?>"), "Unexpected string %s.\n", debugstr_w(str));
+    SysFreeString(str);
+
     IXMLDOMNamedNodeMap_Release(map);
 
     IXMLDOMProcessingInstruction_Release(pi);
@@ -15816,13 +16536,10 @@ static void test_loadXML(void)
     ok(b == VARIANT_FALSE, "Unexpected value %d.\n", b);
 
     hr = IXMLDOMDocument_loadXML(doc, _bstr_("<a>text</a>"), NULL);
-    todo_wine
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
     hr = IXMLDOMDocument_get_documentElement(doc, &element);
-    todo_wine
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    if (hr == S_OK)
-        IXMLDOMElement_Release(element);
+    IXMLDOMElement_Release(element);
 
     /* Clears current document */
     hr = IXMLDOMDocument_loadXML(doc, NULL, NULL);
@@ -16245,13 +16962,11 @@ static void test_document_reload(void)
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
     hr = IXMLDOMDocument_get_xml(owner, &str);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    todo_wine
     ok(!wcscmp(str, L"<b>text</b>\r\n"), "Unexpected xml %s.\n", debugstr_w(str));
     hr = IXMLDOMDocument_get_documentElement(owner, &element2);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
     hr = IXMLDOMElement_get_xml(element2, &str);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    todo_wine
     ok(!wcscmp(str, L"<b>text</b>"), "Unexpected xml %s.\n", debugstr_w(str));
     SysFreeString(str);
     IXMLDOMElement_Release(element2);
@@ -16268,7 +16983,6 @@ static void test_document_reload(void)
 
     hr = IXMLDOMDocument2_getProperty(doc2, _bstr_("SelectionLanguage"), &var);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    todo_wine
     ok(!wcscmp(V_BSTR(&var), L"XSLPattern"), "Unexpected value %s.\n", debugstr_w(V_BSTR(&var)));
     VariantClear(&var);
 
@@ -16278,10 +16992,291 @@ static void test_document_reload(void)
     free_bstrs();
 }
 
+static void test_setAttribute(void)
+{
+    IXMLDOMElement *element;
+    IXMLDOMAttribute *attr;
+    IXMLDOMDocument *doc;
+    IXMLDOMNode *node;
+    HRESULT hr;
+    VARIANT v;
+    BSTR str;
+
+    doc = create_document(&IID_IXMLDOMDocument);
+
+    hr = IXMLDOMDocument_createElement(doc, _bstr_("prefix:name"), &element);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMElement_get_namespaceURI(element, &str);
+    ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMElement_get_xml(element, &str);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(str, L"<prefix:name/>"), "Unexpected xml %s.\n", debugstr_w(str));
+    SysFreeString(str);
+
+    hr = IXMLDOMElement_setAttribute(element, _bstr_("xmlns:prefix"), _variantbstr_("uri"));
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMElement_get_namespaceURI(element, &str);
+    ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMElement_get_xml(element, &str);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(str, L"<prefix:name xmlns:prefix=\"uri\"/>"), "Unexpected xml %s.\n", debugstr_w(str));
+    SysFreeString(str);
+
+    hr = IXMLDOMElement_setAttribute(element, _bstr_("xmlns:prefix"), _variantbstr_("uri2"));
+    ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMElement_get_xml(element, &str);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(str, L"<prefix:name xmlns:prefix=\"uri\"/>"), "Unexpected xml %s.\n", debugstr_w(str));
+    SysFreeString(str);
+
+    hr = IXMLDOMElement_getAttributeNode(element, _bstr_("xmlns:prefix"), &attr);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMAttribute_put_text(attr, _bstr_("uri3"));
+    ok(hr == E_FAIL, "Unexpected hr %#lx.\n", hr);
+    IXMLDOMAttribute_Release(attr);
+
+    hr = IXMLDOMElement_setAttribute(element, _bstr_("attr1"), _variantbstr_("value"));
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMElement_getAttributeNode(element, _bstr_("attr1"), &attr);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMAttribute_put_text(attr, _bstr_("value2"));
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    IXMLDOMAttribute_Release(attr);
+
+    hr = IXMLDOMElement_get_xml(element, &str);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(str, L"<prefix:name xmlns:prefix=\"uri\" attr1=\"value2\"/>"), "Unexpected xml %s.\n", debugstr_w(str));
+    SysFreeString(str);
+
+    IXMLDOMElement_Release(element);
+
+    /* Same local name as existing namespace, different uri value */
+    V_VT(&v) = VT_I1;
+    V_I1(&v) = NODE_ELEMENT;
+    hr = IXMLDOMDocument_createNode(doc, v, _bstr_("prefix:name"), _bstr_("uri"), &node);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMElement, (void **)&element);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    IXMLDOMNode_Release(node);
+
+    hr = IXMLDOMElement_setAttribute(element, _bstr_("prefix"), _variantbstr_("uri2"));
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMElement_get_xml(element, &str);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(str, L"<prefix:name xmlns:prefix=\"uri\" prefix=\"uri2\"/>"), "Unexpected xml %s.\n", debugstr_w(str));
+    SysFreeString(str);
+
+    IXMLDOMElement_Release(element);
+
+    IXMLDOMDocument_Release(doc);
+    free_bstrs();
+}
+
+static void test_createElement(void)
+{
+    IXMLDOMElement *element;
+    IXMLDOMDocument *doc;
+    HRESULT hr;
+    BSTR str;
+
+    doc = create_document(&IID_IXMLDOMDocument);
+
+    /* URI is not specified, and is not required */
+    hr = IXMLDOMDocument_createElement(doc, _bstr_("prefix:name"), &element);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMElement_get_xml(element, &str);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(str, L"<prefix:name/>"), "Unexpected xml %s.\n", debugstr_w(str));
+    SysFreeString(str);
+
+    hr = IXMLDOMDocument_appendChild(doc, (IXMLDOMNode *)element, NULL);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMDocument_get_xml(doc, &str);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(str, L"<prefix:name/>\r\n"), "Unexpected xml %s.\n", debugstr_w(str));
+    SysFreeString(str);
+
+    IXMLDOMElement_Release(element);
+    IXMLDOMDocument_Release(doc);
+    free_bstrs();
+}
+
+static void test_default_namespace(void)
+{
+    IXMLDOMElement *element, *element2;
+    IXMLDOMNamedNodeMap *map;
+    IXMLDOMDocument *doc;
+    IXMLDOMNode *node;
+    LONG length;
+    HRESULT hr;
+    VARIANT v;
+    BSTR str;
+
+    doc = create_document(&IID_IXMLDOMDocument);
+
+    V_VT(&v) = VT_I1;
+    V_I1(&v) = NODE_ELEMENT;
+    hr = IXMLDOMDocument_createNode(doc, v, _bstr_("e1"), _bstr_("default-uri"), &node);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMNode_get_xml(node, &str);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(str, L"<e1 xmlns=\"default-uri\"/>"), "Unexpected xml %s.\n", debugstr_w(str));
+    SysFreeString(str);
+
+    hr = IXMLDOMDocument_createElement(doc, _bstr_("e2"), &element);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMElement_setAttribute(element, _bstr_("xmlns:ns"), _variantbstr_("uri"));
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMElement_setAttribute(element, _bstr_("attr"), _variantbstr_("value"));
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMDocument_createElement(doc, _bstr_("e3"), &element2);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMNode_appendChild(node, (IXMLDOMNode *)element, NULL);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMNode_get_xml(node, &str);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    todo_wine
+    ok(!wcscmp(str, L"<e1 xmlns=\"default-uri\"><e2 xmlns=\"\" xmlns:ns=\"uri\" attr=\"value\"/></e1>"),
+            "Unexpected xml %s.\n", debugstr_w(str));
+    SysFreeString(str);
+
+    hr = IXMLDOMElement_get_namespaceURI(element, &str);
+    ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMElement_appendChild(element, (IXMLDOMNode *)element2, NULL);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMNode_get_xml(node, &str);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    todo_wine
+    ok(!wcscmp(str, L"<e1 xmlns=\"default-uri\"><e2 xmlns=\"\" xmlns:ns=\"uri\" attr=\"value\"><e3/></e2></e1>"),
+            "Unexpected xml %s.\n", debugstr_w(str));
+    SysFreeString(str);
+
+    IXMLDOMNode_Release(node);
+
+    IXMLDOMElement_Release(element2);
+    IXMLDOMElement_Release(element);
+
+    hr = IXMLDOMDocument_loadXML(doc, _bstr_("<a xmlns=\"\" />"), NULL);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMDocument_get_documentElement(doc, &element);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMElement_get_namespaceURI(element, &str);
+    ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMElement_get_attributes(element, &map);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = IXMLDOMNamedNodeMap_get_length(map, &length);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(length == 1, "Unexpected length %ld.\n", length);
+    IXMLDOMNamedNodeMap_Release(map);
+
+    IXMLDOMElement_Release(element);
+
+    IXMLDOMDocument_Release(doc);
+    free_bstrs();
+}
+
+static void test_prohibitdtd(void)
+{
+    IXMLDOMDocument2 *doc, *doc2;
+    IXMLDOMNode *node;
+    HRESULT hr;
+    VARIANT v;
+
+    hr = CoCreateInstance(&CLSID_DOMDocument30, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDOMDocument2, (void **)&doc);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    VariantInit(&v);
+    hr = IXMLDOMDocument2_getProperty(doc, _bstr_("ProhibitDTD"), &v);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(V_VT(&v) == VT_BOOL, "Unexpected type %d.\n", V_VT(&v));
+    ok(!V_BOOL(&v), "Unexpected value %d.\n", V_BOOL(&v));
+
+    hr = IXMLDOMDocument2_loadXML(doc, _bstr_(szEmailXML), NULL);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    V_VT(&v) = VT_I2;
+    V_I2(&v) = 123;
+    hr = IXMLDOMDocument2_setProperty(doc, _bstr_("ProhibitDTD"), v);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    VariantInit(&v);
+    hr = IXMLDOMDocument2_getProperty(doc, _bstr_("ProhibitDTD"), &v);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(V_VT(&v) == VT_BOOL, "Unexpected type %d.\n", V_VT(&v));
+    ok(V_BOOL(&v) == VARIANT_TRUE, "Unexpected value %d.\n", V_BOOL(&v));
+
+    V_VT(&v) = VT_BOOL;
+    V_BOOL(&v) = VARIANT_TRUE;
+    hr = IXMLDOMDocument2_setProperty(doc, _bstr_("ProhibitDTD"), v);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMDocument2_loadXML(doc, _bstr_(szEmailXML), NULL);
+    ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMDocument2_loadXML(doc, _bstr_("<a/>"), NULL);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMDocument2_cloneNode(doc, VARIANT_FALSE, &node);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMDocument2, (void **)&doc2);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    IXMLDOMNode_Release(node);
+
+    VariantInit(&v);
+    hr = IXMLDOMDocument2_getProperty(doc2, _bstr_("ProhibitDTD"), &v);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(V_VT(&v) == VT_BOOL, "Unexpected type %d.\n", V_VT(&v));
+    ok(V_BOOL(&v) == VARIANT_TRUE, "Unexpected value %d.\n", V_BOOL(&v));
+    IXMLDOMDocument2_Release(doc2);
+
+    IXMLDOMDocument2_Release(doc);
+}
+
+static void test_interfaces(void)
+{
+    IXMLDOMDocument *doc;
+
+    doc = create_document(&IID_IXMLDOMDocument);
+
+    check_interface(doc, &IID_IXMLDOMDocument, TRUE);
+    check_interface(doc, &IID_IPersistStreamInit, TRUE);
+    check_interface(doc, &IID_IObjectWithSite, TRUE);
+    check_interface(doc, &IID_IObjectSafety, TRUE);
+    check_interface(doc, &IID_IConnectionPointContainer, TRUE);
+    check_interface(doc, &IID_IDispatch, TRUE);
+    check_interface(doc, &IID_IDispatchEx, TRUE);
+    check_interface(doc, &IID_IUnknown, TRUE);
+    check_interface(doc, &IID_IPersistStream, TRUE);
+    check_interface(doc, &IID_ISequentialStream, FALSE);
+    check_interface(doc, &IID_IPersist, FALSE);
+todo_wine
+{
+    check_interface(doc, &IID_IOleCommandTarget, TRUE);
+    check_interface(doc, &IID_IPersistMoniker, TRUE);
+    check_interface(doc, &IID_IProvideClassInfo, TRUE);
+    check_interface(doc, &IID_IStream, TRUE);
+}
+    IXMLDOMDocument_Release(doc);
+}
+
 START_TEST(domdoc)
 {
     HRESULT hr;
-    HANDLE thread;
 
     hr = CoInitialize( NULL );
     ok( hr == S_OK, "failed to init com\n");
@@ -16362,7 +17357,6 @@ START_TEST(domdoc)
     test_url();
     test_merging_text();
     test_transformNodeToObject();
-    test_normalize_attribute_values();
     test_namespaces_as_attributes();
     test_validate_on_parse_values();
     test_xsltemplate();
@@ -16381,6 +17375,12 @@ START_TEST(domdoc)
     test_loadXML();
     test_cdata();
     test_document_reload();
+    test_setAttribute();
+    test_createElement();
+    test_default_namespace();
+    test_prohibitdtd();
+    test_indent();
+    test_interfaces();
 
     if (is_clsid_supported(&CLSID_MXNamespaceManager40, &IID_IMXNamespaceManager))
     {
@@ -16388,12 +17388,5 @@ START_TEST(domdoc)
         test_mxnamespacemanager_override();
     }
 
-    /* We need to test test_indent in a seperate thread. This is to prevent regressions in multi-threaded
-    applications where the default indentation is set (e.g. by setting xmlTreeIndentString) in the first
-    thread but not for new threads, leading to the wrong indentation in subsequent threads. */
-    thread = CreateThread(NULL, 0, new_thread, NULL, 0, NULL);
-    WaitForSingleObject(thread, INFINITE);
-    CloseHandle(thread);
-
     CoUninitialize();
 }
diff --git a/dlls/msxml3/tests/saxreader.c b/dlls/msxml3/tests/saxreader.c
index 16f4448a75c2..b7a79bb8faa5 100644
--- a/dlls/msxml3/tests/saxreader.c
+++ b/dlls/msxml3/tests/saxreader.c
@@ -3385,6 +3385,9 @@ static void test_saxreader_encoding(void)
         '<','a','>','t','e','x','t','<','/','a','>',
     };
 
+    static const char xml_win936_test[] =
+        "<?xml version=\"1.0\" encoding=\"windows-936\" ?><a>text</a>";
+
     static const char xml_win1252_test[] =
         "<?xml version=\"1.0\" encoding=\"windows-1252\" ?><a>" "\xc1" "\x80" "</a>";
 
@@ -3456,6 +3459,12 @@ static void test_saxreader_encoding(void)
     hr = ISAXXMLReader_putContentHandler(reader, &contentHandler);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
 
+    create_test_file(testXmlA, xml_win936_test, sizeof(xml_win936_test) - 1);
+    hr = ISAXXMLReader_parseURL(reader, L"test.xml");
+    ok(FAILED(hr), "Unexpected hr %#lx.\n", hr);
+    flush_sequence(sequences, CONTENT_HANDLER_INDEX);
+    DeleteFileA(testXmlA);
+
     create_test_file(testXmlA, xml_win1252_test, sizeof(xml_win1252_test) - 1);
     set_expected_seq(xml_win1252_seq);
     hr = ISAXXMLReader_parseURL(reader, L"test.xml");
@@ -5316,6 +5325,26 @@ static void test_mxwriter_comment(void)
     ok(!lstrcmpW(L"<!---->\r\n<!--comment-->\r\n", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
     VariantClear(&dest);
 
+    /* As an element child */
+    V_VT(&dest) = VT_EMPTY;
+    hr = IMXWriter_put_output(writer, dest);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = ISAXContentHandler_startElement(content, L"", 0, L"", 0, _bstr_("a"), -1, NULL);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = ISAXLexicalHandler_comment(lexical, L"comment", 7);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    hr = ISAXContentHandler_endElement(content, L"", 0, L"", 0, _bstr_("a"), -1);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    V_VT(&dest) = VT_EMPTY;
+    hr = IMXWriter_get_output(writer, &dest);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(V_VT(&dest) == VT_BSTR, "Unexpected type %d.\n", V_VT(&dest));
+    todo_wine
+    ok(!lstrcmpW(L"<a><!--comment--></a>", V_BSTR(&dest)), "Unexpected content %s.\n", wine_dbgstr_w(V_BSTR(&dest)));
+    VariantClear(&dest);
+
     ISAXContentHandler_Release(content);
     ISAXLexicalHandler_Release(lexical);
     IVBSAXLexicalHandler_Release(vblexical);
@@ -6396,6 +6425,32 @@ static void test_saxreader_dtd(void)
     hr = ISAXXMLReader_parse(reader, var);
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
 
+    V_VT(&var) = VT_BSTR;
+    V_BSTR(&var) = SysAllocString(L"<?xml version=\"1.0\" encoding=\"value\" standalone=\"yes\"?><a>text</a>");
+
+    hr = ISAXXMLReader_parse(reader, var);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    VariantClear(&var);
+
+    ISAXXMLReader_Release(reader);
+}
+
+static void test_saxreader_parse_input(void)
+{
+    ISAXXMLReader *reader;
+    VARIANT var;
+    HRESULT hr;
+
+    hr = CoCreateInstance(&CLSID_SAXXMLReader, NULL, CLSCTX_INPROC_SERVER, &IID_ISAXXMLReader, (void **)&reader);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    V_VT(&var) = VT_BSTR;
+    V_BSTR(&var) = SysAllocStringByteLen("<a>text</a>", 11);
+
+    hr = ISAXXMLReader_parse(reader, var);
+    ok(FAILED(hr), "Unexpected hr %#lx.\n", hr);
+
     VariantClear(&var);
 
     ISAXXMLReader_Release(reader);
@@ -6437,6 +6492,7 @@ START_TEST(saxreader)
     test_saxreader_pi();
     test_saxreader_characters();
     test_saxreader_dtd();
+    test_saxreader_parse_input();
 
     /* MXXMLWriter tests */
     get_class_support_data(mxwriter_support_data, &IID_IMXWriter);
diff --git a/dlls/msxml3/tests/xmldoc.c b/dlls/msxml3/tests/xmldoc.c
index 898b5f3c114a..ce1e54a02cb8 100644
--- a/dlls/msxml3/tests/xmldoc.c
+++ b/dlls/msxml3/tests/xmldoc.c
@@ -1280,7 +1280,6 @@ static void test_xmldoc_charset(void)
 
     /* Invalid encoding */
     hr = load_document(doc, doc_data3, sizeof(doc_data3) - 1);
-    todo_wine
     ok(hr == XML_E_INVALIDENCODING, "Unexpected hr %#lx.\n", hr);
 
     IXMLDocument_Release(doc);
diff --git a/dlls/msxml3/text.c b/dlls/msxml3/text.c
index c22837609079..f8375c94bcfe 100644
--- a/dlls/msxml3/text.c
+++ b/dlls/msxml3/text.c
@@ -22,9 +22,6 @@
 #define COBJMACROS
 
 #include <stdarg.h>
-#include <libxml/parser.h>
-#include <libxml/parserInternals.h>
-#include <libxml/xmlerror.h>
 
 #include "windef.h"
 #include "winbase.h"
@@ -40,9 +37,10 @@ WINE_DEFAULT_DEBUG_CHANNEL(msxml);
 
 typedef struct _domtext
 {
-    xmlnode node;
+    DispatchEx dispex;
     IXMLDOMText IXMLDOMText_iface;
-    LONG ref;
+    LONG refcount;
+    struct domnode *node;
 } domtext;
 
 static inline domtext *impl_from_IXMLDOMText( IXMLDOMText *iface )
@@ -50,35 +48,32 @@ static inline domtext *impl_from_IXMLDOMText( IXMLDOMText *iface )
     return CONTAINING_RECORD(iface, domtext, IXMLDOMText_iface);
 }
 
-static void domtext_reset_noenc(domtext *This)
+static HRESULT WINAPI domtext_QueryInterface(IXMLDOMText *iface, REFIID riid, void **obj)
 {
-    This->node.node->name = NULL;
-}
+    domtext *text = impl_from_IXMLDOMText(iface);
 
-static HRESULT WINAPI domtext_QueryInterface(
-    IXMLDOMText *iface,
-    REFIID riid,
-    void** ppvObject )
-{
-    domtext *This = impl_from_IXMLDOMText( iface );
-    TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppvObject);
+    TRACE("%p, %s, %p.\n", iface, debugstr_guid(riid), obj);
 
-    if ( IsEqualGUID( riid, &IID_IXMLDOMText ) ||
-         IsEqualGUID( riid, &IID_IXMLDOMCharacterData) ||
-         IsEqualGUID( riid, &IID_IXMLDOMNode ) ||
-         IsEqualGUID( riid, &IID_IDispatch ) ||
-         IsEqualGUID( riid, &IID_IUnknown ) )
+    if (IsEqualGUID(riid, &IID_IXMLDOMText) ||
+        IsEqualGUID(riid, &IID_IXMLDOMCharacterData) ||
+        IsEqualGUID(riid, &IID_IXMLDOMNode) ||
+        IsEqualGUID(riid, &IID_IDispatch) ||
+        IsEqualGUID(riid, &IID_IUnknown) )
     {
-        *ppvObject = iface;
+        *obj = iface;
     }
-    else if(node_query_interface(&This->node, riid, ppvObject))
+    else if (dispex_query_interface(&text->dispex, riid, obj))
     {
-        return *ppvObject ? S_OK : E_NOINTERFACE;
+        return *obj ? S_OK : E_NOINTERFACE;
+    }
+    else if (node_query_interface(text->node, riid, obj))
+    {
+        return *obj ? S_OK : E_NOINTERFACE;
     }
     else
     {
         TRACE("Unsupported interface %s\n", debugstr_guid(riid));
-        *ppvObject = NULL;
+        *obj = NULL;
         return E_NOINTERFACE;
     }
 
@@ -86,57 +81,49 @@ static HRESULT WINAPI domtext_QueryInterface(
     return S_OK;
 }
 
-static ULONG WINAPI domtext_AddRef(
-    IXMLDOMText *iface )
+static ULONG WINAPI domtext_AddRef(IXMLDOMText *iface)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
-    ULONG ref = InterlockedIncrement( &This->ref );
-    TRACE("%p, refcount %lu.\n", iface, ref);
-    return ref;
+    domtext *text = impl_from_IXMLDOMText(iface);
+    ULONG refcount = InterlockedIncrement(&text->refcount);
+
+    TRACE("%p, refcount %lu.\n", iface, refcount);
+
+    return refcount;
 }
 
-static ULONG WINAPI domtext_Release(
-    IXMLDOMText *iface )
+static ULONG WINAPI domtext_Release(IXMLDOMText *iface)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
-    ULONG ref = InterlockedDecrement( &This->ref );
+    domtext *text = impl_from_IXMLDOMText(iface);
+    ULONG refcount = InterlockedDecrement(&text->refcount);
+
+    TRACE("%p, refcount %lu.\n", iface, refcount);
 
-    TRACE("%p, refcount %lu.\n", iface, ref);
-    if ( ref == 0 )
+    if (!refcount)
     {
-        destroy_xmlnode(&This->node);
-        free(This);
+        domnode_release(text->node);
+        free(text);
     }
 
-    return ref;
+    return refcount;
 }
 
-static HRESULT WINAPI domtext_GetTypeInfoCount(
-    IXMLDOMText *iface,
-    UINT* pctinfo )
+static HRESULT WINAPI domtext_GetTypeInfoCount(IXMLDOMText *iface, UINT *count)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
-    return IDispatchEx_GetTypeInfoCount(&This->node.dispex.IDispatchEx_iface, pctinfo);
+    domtext *text = impl_from_IXMLDOMText(iface);
+    return IDispatchEx_GetTypeInfoCount(&text->dispex.IDispatchEx_iface, count);
 }
 
-static HRESULT WINAPI domtext_GetTypeInfo(
-    IXMLDOMText *iface,
-    UINT iTInfo, LCID lcid,
-    ITypeInfo** ppTInfo )
+static HRESULT WINAPI domtext_GetTypeInfo(IXMLDOMText *iface, UINT index, LCID lcid, ITypeInfo **ti)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
-    return IDispatchEx_GetTypeInfo(&This->node.dispex.IDispatchEx_iface,
-        iTInfo, lcid, ppTInfo);
+    domtext *text = impl_from_IXMLDOMText(iface);
+    return IDispatchEx_GetTypeInfo(&text->dispex.IDispatchEx_iface, index, lcid, ti);
 }
 
-static HRESULT WINAPI domtext_GetIDsOfNames(
-    IXMLDOMText *iface,
-    REFIID riid, LPOLESTR* rgszNames,
-    UINT cNames, LCID lcid, DISPID* rgDispId )
+static HRESULT WINAPI domtext_GetIDsOfNames(IXMLDOMText *iface, REFIID riid, LPOLESTR *names,
+        UINT name_count, LCID lcid, DISPID *dispid)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
-    return IDispatchEx_GetIDsOfNames(&This->node.dispex.IDispatchEx_iface,
-        riid, rgszNames, cNames, lcid, rgDispId);
+    domtext *text = impl_from_IXMLDOMText(iface);
+    return IDispatchEx_GetIDsOfNames(&text->dispex.IDispatchEx_iface, riid, names, name_count, lcid, dispid);
 }
 
 static HRESULT WINAPI domtext_Invoke(
@@ -145,262 +132,210 @@ static HRESULT WINAPI domtext_Invoke(
     WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarResult,
     EXCEPINFO* pExcepInfo, UINT* puArgErr )
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
-    return IDispatchEx_Invoke(&This->node.dispex.IDispatchEx_iface,
+    domtext *text = impl_from_IXMLDOMText(iface);
+    return IDispatchEx_Invoke(&text->dispex.IDispatchEx_iface,
         dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
 }
 
-static HRESULT WINAPI domtext_get_nodeName(
-    IXMLDOMText *iface,
-    BSTR* p )
+static HRESULT WINAPI domtext_get_nodeName(IXMLDOMText *iface, BSTR *p)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
-
-    TRACE("(%p)->(%p)\n", This, p);
+    TRACE("%p, %p.\n", iface, p);
 
     return return_bstr(L"#text", p);
 }
 
-static HRESULT WINAPI domtext_get_nodeValue(
-    IXMLDOMText *iface,
-    VARIANT* value )
+static HRESULT WINAPI domtext_get_nodeValue(IXMLDOMText *iface, VARIANT *value)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
+    domtext *text = impl_from_IXMLDOMText(iface);
 
-    TRACE("(%p)->(%p)\n", This, value);
+    TRACE("%p, %p.\n", iface, value);
 
-    return node_get_content(&This->node, value);
+    return node_get_value(text->node, value);
 }
 
-static HRESULT WINAPI domtext_put_nodeValue(
-    IXMLDOMText *iface,
-    VARIANT value)
+static HRESULT WINAPI domtext_put_nodeValue(IXMLDOMText *iface, VARIANT value)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
+    domtext *text = impl_from_IXMLDOMText(iface);
 
-    TRACE("(%p)->(%s)\n", This, debugstr_variant(&value));
+    TRACE("%p, %s.\n", iface, debugstr_variant(&value));
 
-    domtext_reset_noenc(This);
-    return node_put_value(&This->node, &value);
+    return node_put_value(text->node, &value);
 }
 
-static HRESULT WINAPI domtext_get_nodeType(
-    IXMLDOMText *iface,
-    DOMNodeType* domNodeType )
+static HRESULT WINAPI domtext_get_nodeType(IXMLDOMText *iface, DOMNodeType *type)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
+    TRACE("%p, %p.\n", iface, type);
 
-    TRACE("(%p)->(%p)\n", This, domNodeType);
-
-    *domNodeType = NODE_TEXT;
+    *type = NODE_TEXT;
     return S_OK;
 }
 
-static HRESULT WINAPI domtext_get_parentNode(
-    IXMLDOMText *iface,
-    IXMLDOMNode** parent )
+static HRESULT WINAPI domtext_get_parentNode(IXMLDOMText *iface, IXMLDOMNode **parent)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
+    domtext *text = impl_from_IXMLDOMText(iface);
 
-    TRACE("(%p)->(%p)\n", This, parent);
+    TRACE("%p, %p.\n", iface, parent);
 
-    return node_get_parent(&This->node, parent);
+    return node_get_parent(text->node, parent);
 }
 
-static HRESULT WINAPI domtext_get_childNodes(
-    IXMLDOMText *iface,
-    IXMLDOMNodeList** outList)
+static HRESULT WINAPI domtext_get_childNodes(IXMLDOMText *iface, IXMLDOMNodeList **list)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
+    domtext *text = impl_from_IXMLDOMText(iface);
 
-    TRACE("(%p)->(%p)\n", This, outList);
+    TRACE("%p, %p.\n", iface, list);
 
-    return node_get_child_nodes(&This->node, outList);
+    return node_get_child_nodes(text->node, list);
 }
 
-static HRESULT WINAPI domtext_get_firstChild(
-    IXMLDOMText *iface,
-    IXMLDOMNode** domNode)
+static HRESULT WINAPI domtext_get_firstChild(IXMLDOMText *iface, IXMLDOMNode **node)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
-
-    TRACE("(%p)->(%p)\n", This, domNode);
+    TRACE("%p, %p.\n", iface, node);
 
-    return return_null_node(domNode);
+    return return_null_node(node);
 }
 
-static HRESULT WINAPI domtext_get_lastChild(
-    IXMLDOMText *iface,
-    IXMLDOMNode** domNode)
+static HRESULT WINAPI domtext_get_lastChild(IXMLDOMText *iface, IXMLDOMNode **node)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
-
-    TRACE("(%p)->(%p)\n", This, domNode);
+    TRACE("%p, %p.\n", iface, node);
 
-    return return_null_node(domNode);
+    return return_null_node(node);
 }
 
-static HRESULT WINAPI domtext_get_previousSibling(
-    IXMLDOMText *iface,
-    IXMLDOMNode** domNode)
+static HRESULT WINAPI domtext_get_previousSibling(IXMLDOMText *iface, IXMLDOMNode **node)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
+    domtext *text = impl_from_IXMLDOMText(iface);
 
-    TRACE("(%p)->(%p)\n", This, domNode);
+    TRACE("%p, %p.\n", iface, node);
 
-    return node_get_previous_sibling(&This->node, domNode);
+    return node_get_previous_sibling(text->node, node);
 }
 
-static HRESULT WINAPI domtext_get_nextSibling(
-    IXMLDOMText *iface,
-    IXMLDOMNode** domNode)
+static HRESULT WINAPI domtext_get_nextSibling(IXMLDOMText *iface, IXMLDOMNode **node)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
+    domtext *text = impl_from_IXMLDOMText(iface);
 
-    TRACE("(%p)->(%p)\n", This, domNode);
+    TRACE("%p, %p.\n", iface, node);
 
-    return node_get_next_sibling(&This->node, domNode);
+    return node_get_next_sibling(text->node, node);
 }
 
-static HRESULT WINAPI domtext_get_attributes(
-    IXMLDOMText *iface,
-    IXMLDOMNamedNodeMap** attributeMap)
+static HRESULT WINAPI domtext_get_attributes(IXMLDOMText *iface, IXMLDOMNamedNodeMap **map)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
-
-    TRACE("(%p)->(%p)\n", This, attributeMap);
+    TRACE("%p, %p.\n", iface, map);
 
-    return return_null_ptr((void**)attributeMap);
+    return return_null_ptr((void **)map);
 }
 
-static HRESULT WINAPI domtext_insertBefore(
-    IXMLDOMText *iface,
-    IXMLDOMNode* newNode, VARIANT refChild,
+static HRESULT WINAPI domtext_insertBefore(IXMLDOMText *iface, IXMLDOMNode* newNode, VARIANT refChild,
     IXMLDOMNode** outOldNode)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
+    domtext *text = impl_from_IXMLDOMText(iface);
 
-    FIXME("(%p)->(%p %s %p) needs test\n", This, newNode, debugstr_variant(&refChild), outOldNode);
+    FIXME("%p, %p, %s, %p needs test\n", iface, newNode, debugstr_variant(&refChild), outOldNode);
 
-    return node_insert_before(&This->node, newNode, &refChild, outOldNode);
+    return node_insert_before(text->node, newNode, &refChild, outOldNode);
 }
 
-static HRESULT WINAPI domtext_replaceChild(
-    IXMLDOMText *iface,
-    IXMLDOMNode* newNode,
-    IXMLDOMNode* oldNode,
-    IXMLDOMNode** outOldNode)
+static HRESULT WINAPI domtext_replaceChild(IXMLDOMText *iface, IXMLDOMNode *newNode,
+        IXMLDOMNode *oldNode, IXMLDOMNode **outOldNode)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
+    domtext *text = impl_from_IXMLDOMText(iface);
 
-    FIXME("(%p)->(%p %p %p) needs test\n", This, newNode, oldNode, outOldNode);
+    FIXME("%p, %p, %p, %p needs test\n", iface, newNode, oldNode, outOldNode);
 
-    return node_replace_child(&This->node, newNode, oldNode, outOldNode);
+    return node_replace_child(text->node, newNode, oldNode, outOldNode);
 }
 
-static HRESULT WINAPI domtext_removeChild(
-    IXMLDOMText *iface,
-    IXMLDOMNode *child, IXMLDOMNode **oldChild)
+static HRESULT WINAPI domtext_removeChild(IXMLDOMText *iface, IXMLDOMNode *child, IXMLDOMNode **oldChild)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
-    TRACE("(%p)->(%p %p)\n", This, child, oldChild);
-    return node_remove_child(&This->node, child, oldChild);
+    domtext *text = impl_from_IXMLDOMText(iface);
+
+    TRACE("%p, %p, %p.\n", iface, child, oldChild);
+
+    return node_remove_child(text->node, child, oldChild);
 }
 
-static HRESULT WINAPI domtext_appendChild(
-    IXMLDOMText *iface,
-    IXMLDOMNode *child, IXMLDOMNode **outChild)
+static HRESULT WINAPI domtext_appendChild(IXMLDOMText *iface, IXMLDOMNode *child, IXMLDOMNode **outChild)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
-    TRACE("(%p)->(%p %p)\n", This, child, outChild);
-    return node_append_child(&This->node, child, outChild);
+    domtext *text = impl_from_IXMLDOMText(iface);
+
+    TRACE("%p, %p, %p.\n", iface, child, outChild);
+
+    return node_append_child(text->node, child, outChild);
 }
 
-static HRESULT WINAPI domtext_hasChildNodes(
-    IXMLDOMText *iface,
-    VARIANT_BOOL *ret)
+static HRESULT WINAPI domtext_hasChildNodes(IXMLDOMText *iface, VARIANT_BOOL *v)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
-    TRACE("(%p)->(%p)\n", This, ret);
-    return return_var_false(ret);
+    TRACE("%p, %p.\n", iface, v);
+
+    return return_var_false(v);
 }
 
-static HRESULT WINAPI domtext_get_ownerDocument(
-    IXMLDOMText *iface,
-    IXMLDOMDocument **doc)
+static HRESULT WINAPI domtext_get_ownerDocument(IXMLDOMText *iface, IXMLDOMDocument **doc)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
-    TRACE("(%p)->(%p)\n", This, doc);
-    return node_get_owner_doc(&This->node, doc);
+    domtext *text = impl_from_IXMLDOMText(iface);
+
+    TRACE("%p, %p.\n", iface, doc);
+
+    return node_get_owner_document(text->node, doc);
 }
 
-static HRESULT WINAPI domtext_cloneNode(
-    IXMLDOMText *iface,
-    VARIANT_BOOL deep, IXMLDOMNode** outNode)
+static HRESULT WINAPI domtext_cloneNode(IXMLDOMText *iface, VARIANT_BOOL deep, IXMLDOMNode **node)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
-    TRACE("(%p)->(%d %p)\n", This, deep, outNode);
-    return node_clone( &This->node, deep, outNode );
+    domtext *text = impl_from_IXMLDOMText(iface);
+
+    TRACE("%p, %d, %p.\n", iface, deep, node);
+
+    return node_clone(text->node, deep, node);
 }
 
-static HRESULT WINAPI domtext_get_nodeTypeString(
-    IXMLDOMText *iface,
-    BSTR* p)
+static HRESULT WINAPI domtext_get_nodeTypeString(IXMLDOMText *iface, BSTR *p)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
-
-    TRACE("(%p)->(%p)\n", This, p);
+    TRACE("%p, %p.\n", iface, p);
 
     return return_bstr(L"text", p);
 }
 
-static HRESULT WINAPI domtext_get_text(
-    IXMLDOMText *iface,
-    BSTR* p)
+static HRESULT WINAPI domtext_get_text(IXMLDOMText *iface, BSTR *p)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
-    TRACE("(%p)->(%p)\n", This, p);
-    return node_get_text(&This->node, p);
+    domtext *text = impl_from_IXMLDOMText(iface);
+
+    TRACE("%p, %p.\n", iface, p);
+
+    return node_get_text(text->node, p);
 }
 
-static HRESULT WINAPI domtext_put_text(
-    IXMLDOMText *iface,
-    BSTR p)
+static HRESULT WINAPI domtext_put_text(IXMLDOMText *iface, BSTR p)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
-    TRACE("(%p)->(%s)\n", This, debugstr_w(p));
-    domtext_reset_noenc(This);
-    return node_put_text( &This->node, p );
+    domtext *text = impl_from_IXMLDOMText(iface);
+
+    TRACE("%p, %s.\n", iface, debugstr_w(p));
+
+    return node_put_data(text->node, p);
 }
 
-static HRESULT WINAPI domtext_get_specified(
-    IXMLDOMText *iface,
-    VARIANT_BOOL* isSpecified)
+static HRESULT WINAPI domtext_get_specified(IXMLDOMText *iface, VARIANT_BOOL *v)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
-    FIXME("(%p)->(%p) stub!\n", This, isSpecified);
-    *isSpecified = VARIANT_TRUE;
+    FIXME("%p, %p stub!\n", iface, v);
+
+    *v = VARIANT_TRUE;
     return S_OK;
 }
 
-static HRESULT WINAPI domtext_get_definition(
-    IXMLDOMText *iface,
-    IXMLDOMNode** definitionNode)
+static HRESULT WINAPI domtext_get_definition(IXMLDOMText *iface, IXMLDOMNode **node)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
-    FIXME("(%p)->(%p)\n", This, definitionNode);
+    FIXME("%p, %p.\n", iface, node);
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domtext_get_nodeTypedValue(
-    IXMLDOMText *iface,
-    VARIANT* var1)
+static HRESULT WINAPI domtext_get_nodeTypedValue(IXMLDOMText *iface, VARIANT *var1)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
     IXMLDOMNode* parent = NULL;
     HRESULT hr;
 
-    TRACE("(%p)->(%p)\n", This, var1);
+    TRACE("%p, %p.\n", iface, var1);
 
     if (!var1)
         return E_INVALIDARG;
@@ -477,15 +412,12 @@ static HRESULT WINAPI domtext_get_dataType(
     return hr;
 }
 
-static HRESULT WINAPI domtext_put_dataType(
-    IXMLDOMText *iface,
-    BSTR dtName)
+static HRESULT WINAPI domtext_put_dataType(IXMLDOMText *iface, BSTR dtName)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
     IXMLDOMNode* parent = NULL;
     HRESULT hr;
 
-    TRACE("(%p)->(%p)\n", This, dtName);
+    TRACE("%p, %s.\n", iface, debugstr_w(dtName));
 
     if (!dtName)
         return E_INVALIDARG;
@@ -505,365 +437,159 @@ static HRESULT WINAPI domtext_put_dataType(
     return hr;
 }
 
-static HRESULT WINAPI domtext_get_xml(
-    IXMLDOMText *iface,
-    BSTR* p)
+static HRESULT WINAPI domtext_get_xml(IXMLDOMText *iface, BSTR *p)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
+    domtext *text = impl_from_IXMLDOMText(iface);
 
-    TRACE("(%p)->(%p)\n", This, p);
+    TRACE("%p, %p.\n", iface, p);
 
-    return node_get_xml(&This->node, TRUE, p);
+    return node_get_xml(text->node, p);
 }
 
-static HRESULT WINAPI domtext_transformNode(
-    IXMLDOMText *iface,
-    IXMLDOMNode *node, BSTR *p)
+static HRESULT WINAPI domtext_transformNode(IXMLDOMText *iface, IXMLDOMNode *node, BSTR *p)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
-    TRACE("(%p)->(%p %p)\n", This, node, p);
-    return node_transform_node(&This->node, node, p);
+    domtext *text = impl_from_IXMLDOMText(iface);
+
+    TRACE("%p, %p, %p.\n", iface, node, p);
+
+    return node_transform_node(text->node, node, p);
 }
 
-static HRESULT WINAPI domtext_selectNodes(
-    IXMLDOMText *iface,
-    BSTR p, IXMLDOMNodeList** outList)
+static HRESULT WINAPI domtext_selectNodes(IXMLDOMText *iface, BSTR p, IXMLDOMNodeList **list)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
-    TRACE("(%p)->(%s %p)\n", This, debugstr_w(p), outList);
-    return node_select_nodes(&This->node, p, outList);
+    domtext *text = impl_from_IXMLDOMText(iface);
+
+    TRACE("%p, %s, %p.\n", iface, debugstr_w(p), list);
+
+    return node_select_nodes(text->node, p, list);
 }
 
-static HRESULT WINAPI domtext_selectSingleNode(
-    IXMLDOMText *iface,
-    BSTR p, IXMLDOMNode** outNode)
+static HRESULT WINAPI domtext_selectSingleNode(IXMLDOMText *iface, BSTR p, IXMLDOMNode **node)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
-    TRACE("(%p)->(%s %p)\n", This, debugstr_w(p), outNode);
-    return node_select_singlenode(&This->node, p, outNode);
+    domtext *text = impl_from_IXMLDOMText(iface);
+
+    TRACE("%p, %s, %p.\n", iface, debugstr_w(p), node);
+
+    return node_select_singlenode(text->node, p, node);
 }
 
-static HRESULT WINAPI domtext_get_parsed(
-    IXMLDOMText *iface,
-    VARIANT_BOOL* isParsed)
+static HRESULT WINAPI domtext_get_parsed(IXMLDOMText *iface, VARIANT_BOOL *v)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
-    FIXME("(%p)->(%p) stub!\n", This, isParsed);
-    *isParsed = VARIANT_TRUE;
+    FIXME("%p, %p stub!\n", iface, v);
+
+    *v = VARIANT_TRUE;
     return S_OK;
 }
 
-static HRESULT WINAPI domtext_get_namespaceURI(
-    IXMLDOMText *iface,
-    BSTR* p)
+static HRESULT WINAPI domtext_get_namespaceURI(IXMLDOMText *iface, BSTR *p)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
-    TRACE("(%p)->(%p)\n", This, p);
-    return node_get_namespaceURI(&This->node, p);
+    domtext *text = impl_from_IXMLDOMText(iface);
+
+    TRACE("%p, %p.\n", iface, p);
+
+    return node_get_namespaceURI(text->node, p);
 }
 
-static HRESULT WINAPI domtext_get_prefix(
-    IXMLDOMText *iface,
-    BSTR* prefix)
+static HRESULT WINAPI domtext_get_prefix(IXMLDOMText *iface, BSTR *p)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
-    TRACE("(%p)->(%p)\n", This, prefix);
-    return return_null_bstr( prefix );
+    TRACE("%p, %p.\n", iface, p);
+
+    return return_null_bstr(p);
 }
 
-static HRESULT WINAPI domtext_get_baseName(
-    IXMLDOMText *iface,
-    BSTR* name)
+static HRESULT WINAPI domtext_get_baseName(IXMLDOMText *iface, BSTR *name)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
-    TRACE("(%p)->(%p)\n", This, name);
-    return return_null_bstr( name );
+    TRACE("%p, %p.\n", iface, name);
+
+    return return_null_bstr(name);
 }
 
-static HRESULT WINAPI domtext_transformNodeToObject(
-    IXMLDOMText *iface,
-    IXMLDOMNode* domNode, VARIANT var1)
+static HRESULT WINAPI domtext_transformNodeToObject(IXMLDOMText *iface, IXMLDOMNode *node, VARIANT v)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
-    FIXME("(%p)->(%p %s)\n", This, domNode, debugstr_variant(&var1));
+    FIXME("%p, %p, %s.\n", iface, node, debugstr_variant(&v));
+
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI domtext_get_data(
-    IXMLDOMText *iface,
-    BSTR *p)
+static HRESULT WINAPI domtext_get_data(IXMLDOMText *iface, BSTR *p)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
+    domtext *text = impl_from_IXMLDOMText( iface );
 
-    if(!p)
-        return E_INVALIDARG;
+    TRACE("%p, %p.\n", iface, p);
 
-    *p = bstr_from_xmlChar(This->node.node->content);
-    return S_OK;
+    return node_get_data(text->node, p);
 }
 
-static HRESULT WINAPI domtext_put_data(
-    IXMLDOMText *iface,
-    BSTR data)
+static HRESULT WINAPI domtext_put_data(IXMLDOMText *iface, BSTR data)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
-    BSTR normalized_data = NULL;
-    HRESULT hr;
-    size_t i, j;
+    domtext *text = impl_from_IXMLDOMText(iface);
 
-    TRACE("(%p)->(%s)\n", This, debugstr_w(data));
-
-    if (data)
-    {
-        /* normalize line endings */
-        normalized_data = SysAllocStringLen(NULL, SysStringLen(data));
-        if (!normalized_data) return E_OUTOFMEMORY;
-        for (i = 0, j = 0; data[i]; i++)
-        {
-            if (data[i] == '\r')
-            {
-                if (data[i + 1] == '\n') i++; /* change \r\n to just \n */
-                normalized_data[j++] = '\n'; /* change \r by itself to \n */
-            }
-            else
-                normalized_data[j++] = data[i];
-        }
-        normalized_data[j] = 0;
-    }
+    TRACE("%p, %s.\n", iface, debugstr_w(data));
 
-    domtext_reset_noenc(This);
-    hr = node_set_content(&This->node, normalized_data);
-
-    SysFreeString(normalized_data);
-    return hr;
+    return node_put_data(text->node, data);
 }
 
-static HRESULT WINAPI domtext_get_length(
-    IXMLDOMText *iface,
-    LONG *len)
+static HRESULT WINAPI domtext_get_length(IXMLDOMText *iface, LONG *length)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
-    HRESULT hr;
-    BSTR data;
-
-    TRACE("(%p)->(%p)\n", This, len);
+    domtext *text = impl_from_IXMLDOMText(iface);
 
-    if(!len)
-        return E_INVALIDARG;
+    TRACE("%p, %p.\n", iface, length);
 
-    hr = IXMLDOMText_get_data(iface, &data);
-    if(hr == S_OK)
-    {
-        *len = SysStringLen(data);
-        SysFreeString(data);
-    }
-
-    return hr;
+    return node_get_data_length(text->node, length);
 }
 
-static HRESULT WINAPI domtext_substringData(
-    IXMLDOMText *iface,
-    LONG offset, LONG count, BSTR *p)
+static HRESULT WINAPI domtext_substringData(IXMLDOMText *iface, LONG offset, LONG count, BSTR *p)
 {
-    HRESULT hr;
-    BSTR data;
+    domtext *text = impl_from_IXMLDOMText(iface);
 
     TRACE("%p, %ld, %ld, %p.\n", iface, offset, count, p);
 
-    if(!p)
-        return E_INVALIDARG;
-
-    *p = NULL;
-    if(offset < 0 || count < 0)
-        return E_INVALIDARG;
-
-    if(count == 0)
-        return S_FALSE;
-
-    hr = IXMLDOMText_get_data(iface, &data);
-    if(hr == S_OK)
-    {
-        LONG len = SysStringLen(data);
-
-        if(offset < len)
-        {
-            if(offset + count > len)
-                *p = SysAllocString(&data[offset]);
-            else
-                *p = SysAllocStringLen(&data[offset], count);
-        }
-        else
-            hr = S_FALSE;
-
-        SysFreeString(data);
-    }
-
-    return hr;
+    return node_substring_data(text->node, offset, count, p);
 }
 
-static HRESULT WINAPI domtext_appendData(
-    IXMLDOMText *iface,
-    BSTR p)
+static HRESULT WINAPI domtext_appendData(IXMLDOMText *iface, BSTR p)
 {
-    domtext *This = impl_from_IXMLDOMText( iface );
-    HRESULT hr;
-    BSTR data;
-    LONG p_len;
-
-    TRACE("(%p)->(%s)\n", This, debugstr_w(p));
+    domtext *text = impl_from_IXMLDOMText(iface);
 
-    /* Nothing to do if NULL or an Empty string passed in. */
-    if((p_len = SysStringLen(p)) == 0) return S_OK;
+    TRACE("%p, %s.\n", iface, debugstr_w(p));
 
-    hr = IXMLDOMText_get_data(iface, &data);
-    if(hr == S_OK)
-    {
-        LONG len = SysStringLen(data);
-        BSTR str = SysAllocStringLen(NULL, p_len + len);
-
-        memcpy(str, data, len*sizeof(WCHAR));
-        memcpy(&str[len], p, p_len*sizeof(WCHAR));
-        str[len+p_len] = 0;
-
-        hr = IXMLDOMText_put_data(iface, str);
-
-        SysFreeString(str);
-        SysFreeString(data);
-    }
-
-    return hr;
+    return node_append_data(text->node, p);
 }
 
-static HRESULT WINAPI domtext_insertData(
-    IXMLDOMText *iface,
-    LONG offset, BSTR p)
+static HRESULT WINAPI domtext_insertData(IXMLDOMText *iface, LONG offset, BSTR p)
 {
-    HRESULT hr;
-    BSTR data;
-    LONG p_len;
+    domtext *text = impl_from_IXMLDOMText(iface);
 
     TRACE("%p, %ld, %s.\n", iface, offset, debugstr_w(p));
 
-    /* If have a NULL or empty string, don't do anything. */
-    if((p_len = SysStringLen(p)) == 0)
-        return S_OK;
-
-    if(offset < 0)
-    {
-        return E_INVALIDARG;
-    }
-
-    hr = IXMLDOMText_get_data(iface, &data);
-    if(hr == S_OK)
-    {
-        LONG len = SysStringLen(data);
-        BSTR str;
-
-        if(len < offset)
-        {
-            SysFreeString(data);
-            return E_INVALIDARG;
-        }
-
-        str = SysAllocStringLen(NULL, len + p_len);
-        /* start part, supplied string and end part */
-        memcpy(str, data, offset*sizeof(WCHAR));
-        memcpy(&str[offset], p, p_len*sizeof(WCHAR));
-        memcpy(&str[offset+p_len], &data[offset], (len-offset)*sizeof(WCHAR));
-        str[len+p_len] = 0;
-
-        hr = IXMLDOMText_put_data(iface, str);
-
-        SysFreeString(str);
-        SysFreeString(data);
-    }
-
-    return hr;
+    return node_insert_data(text->node, offset, p);
 }
 
-static HRESULT WINAPI domtext_deleteData(
-    IXMLDOMText *iface,
-    LONG offset, LONG count)
+static HRESULT WINAPI domtext_deleteData(IXMLDOMText *iface, LONG offset, LONG count)
 {
-    HRESULT hr;
-    LONG len = -1;
-    BSTR str;
+    domtext *text = impl_from_IXMLDOMText(iface);
 
     TRACE("%p, %ld, %ld.\n", iface, offset, count);
 
-    hr = IXMLDOMText_get_length(iface, &len);
-    if(hr != S_OK) return hr;
-
-    if((offset < 0) || (offset > len) || (count < 0))
-        return E_INVALIDARG;
-
-    if(len == 0) return S_OK;
-
-    /* cutting start or end */
-    if((offset == 0) || ((count + offset) >= len))
-    {
-        if(offset == 0)
-            IXMLDOMText_substringData(iface, count, len - count, &str);
-        else
-            IXMLDOMText_substringData(iface, 0, offset, &str);
-        hr = IXMLDOMText_put_data(iface, str);
-    }
-    else
-    /* cutting from the inside */
-    {
-        BSTR str_end;
-
-        IXMLDOMText_substringData(iface, 0, offset, &str);
-        IXMLDOMText_substringData(iface, offset + count, len - count, &str_end);
-
-        hr = IXMLDOMText_put_data(iface, str);
-        if(hr == S_OK)
-            hr = IXMLDOMText_appendData(iface, str_end);
-
-        SysFreeString(str_end);
-    }
-
-    SysFreeString(str);
-
-    return hr;
+    return node_delete_data(text->node, offset, count);
 }
 
-static HRESULT WINAPI domtext_replaceData(
-    IXMLDOMText *iface,
-    LONG offset, LONG count, BSTR p)
+static HRESULT WINAPI domtext_replaceData(IXMLDOMText *iface, LONG offset, LONG count, BSTR p)
 {
-    HRESULT hr;
+    domtext *text = impl_from_IXMLDOMText(iface);
 
     TRACE("%p, %ld, %ld, %s.\n", iface, offset, count, debugstr_w(p));
 
-    hr = IXMLDOMText_deleteData(iface, offset, count);
-
-    if (hr == S_OK)
-       hr = IXMLDOMText_insertData(iface, offset, p);
-
-    return hr;
+    return node_replace_data(text->node, offset, count, p);
 }
 
-static HRESULT WINAPI domtext_splitText(
-    IXMLDOMText *iface,
-    LONG offset, IXMLDOMText **txtNode)
+static HRESULT WINAPI domtext_splitText(IXMLDOMText *iface, LONG offset, IXMLDOMText **node)
 {
-    LONG length = 0;
-
-    TRACE("%p, %ld, %p.\n", iface, offset, txtNode);
-
-    if (!txtNode || offset < 0) return E_INVALIDARG;
-
-    *txtNode = NULL;
-
-    IXMLDOMText_get_length(iface, &length);
-
-    if (offset > length) return E_INVALIDARG;
-    if (offset == length) return S_FALSE;
+    domtext *text = impl_from_IXMLDOMText(iface);
 
-    FIXME("adjacent text nodes are not supported\n");
+    TRACE("%p, %ld, %p.\n", iface, offset, node);
 
-    return E_NOTIMPL;
+    return node_split_text(text->node, offset, node);
 }
 
 static const struct IXMLDOMTextVtbl domtext_vtbl =
@@ -922,30 +648,36 @@ static const struct IXMLDOMTextVtbl domtext_vtbl =
     domtext_splitText
 };
 
-static const tid_t domtext_iface_tids[] = {
+static const tid_t domtext_iface_tids[] =
+{
     IXMLDOMText_tid,
     0
 };
 
-static dispex_static_data_t domtext_dispex = {
+static dispex_static_data_t domtext_dispex =
+{
     NULL,
     IXMLDOMText_tid,
     NULL,
     domtext_iface_tids
 };
 
-IUnknown* create_text( xmlNodePtr text )
+HRESULT create_text(struct domnode *node, IUnknown **obj)
 {
-    domtext *This;
+    domtext *object;
 
-    This = malloc(sizeof(*This));
-    if ( !This )
-        return NULL;
+    *obj = NULL;
 
-    This->IXMLDOMText_iface.lpVtbl = &domtext_vtbl;
-    This->ref = 1;
+    if (!(object = calloc(1, sizeof(*object))))
+        return E_OUTOFMEMORY;
 
-    init_xmlnode(&This->node, text, (IXMLDOMNode*)&This->IXMLDOMText_iface, &domtext_dispex);
+    object->IXMLDOMText_iface.lpVtbl = &domtext_vtbl;
+    object->refcount = 1;
+    object->node = domnode_addref(node);
 
-    return (IUnknown*)&This->IXMLDOMText_iface;
+    init_dispex(&object->dispex, (IUnknown *)&object->IXMLDOMText_iface, &domtext_dispex);
+
+    *obj = (IUnknown *)&object->IXMLDOMText_iface;
+
+    return S_OK;
 }
diff --git a/dlls/msxml3/xmldoc.c b/dlls/msxml3/xmldoc.c
index 125d041c8f87..be37226242f0 100644
--- a/dlls/msxml3/xmldoc.c
+++ b/dlls/msxml3/xmldoc.c
@@ -22,7 +22,6 @@
 #define COBJMACROS
 
 #include <stdarg.h>
-#include <libxml/parser.h>
 
 #include "windef.h"
 #include "winbase.h"
@@ -215,7 +214,7 @@ static HRESULT _node_append_attribute(struct node *node, const WCHAR *name, int
     return S_OK;
 }
 
-static HRESULT node_set_attribute_value(struct node *node, const WCHAR *name, const VARIANT *value)
+static HRESULT _node_set_attribute_value(struct node *node, const WCHAR *name, const VARIANT *value)
 {
     struct attribute *attr;
 
@@ -230,7 +229,7 @@ static HRESULT node_set_attribute_value(struct node *node, const WCHAR *name, co
 }
 
 /* TODO: add a test for xml:lang */
-static HRESULT node_get_attribute_value(struct node *node, const WCHAR *name, VARIANT *value)
+static HRESULT _node_get_attribute_value(struct node *node, const WCHAR *name, VARIANT *value)
 {
     struct attribute *attr;
 
@@ -888,7 +887,7 @@ static HRESULT WINAPI xmlelem_setAttribute(IXMLElement2 *iface, BSTR name, VARIA
 
     TRACE("%p, %s, %s.\n", iface, debugstr_w(name), debugstr_variant(&value));
 
-    return node_set_attribute_value(element->node, name, &value);
+    return _node_set_attribute_value(element->node, name, &value);
 }
 
 static HRESULT WINAPI xmlelem_getAttribute(IXMLElement2 *iface, BSTR name,
@@ -898,7 +897,7 @@ static HRESULT WINAPI xmlelem_getAttribute(IXMLElement2 *iface, BSTR name,
 
     TRACE("%p, %s, %p.\n", iface, debugstr_w(name), value);
 
-    return node_get_attribute_value(element->node, name, value);
+    return _node_get_attribute_value(element->node, name, value);
 }
 
 static HRESULT WINAPI xmlelem_removeAttribute(IXMLElement2 *iface, BSTR name)
diff --git a/dlls/msxml4/tests/domdoc.c b/dlls/msxml4/tests/domdoc.c
index edcb82fa3133..7e78e7b494d5 100644
--- a/dlls/msxml4/tests/domdoc.c
+++ b/dlls/msxml4/tests/domdoc.c
@@ -375,6 +375,24 @@ static void test_get_parentNode(void)
     IXMLDOMDocument_Release(doc);
 }
 
+static void test_prohibitdtd(void)
+{
+    IXMLDOMDocument2 *doc;
+    HRESULT hr;
+    VARIANT v;
+
+    hr = CoCreateInstance(&CLSID_DOMDocument40, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDOMDocument2, (void **)&doc);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    VariantInit(&v);
+    hr = IXMLDOMDocument2_getProperty(doc, _bstr_(L"ProhibitDTD"), &v);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(V_VT(&v) == VT_BOOL, "Unexpected type %d.\n", V_VT(&v));
+    ok(!V_BOOL(&v), "Unexpected value %d.\n", V_BOOL(&v));
+
+    IXMLDOMDocument2_Release(doc);
+}
+
 START_TEST(domdoc)
 {
     HRESULT hr;
@@ -395,6 +413,7 @@ START_TEST(domdoc)
     test_create_attribute();
     test_get_ownerDocument();
     test_get_parentNode();
+    test_prohibitdtd();
 
     CoUninitialize();
 }
diff --git a/dlls/msxml4/tests/saxreader.c b/dlls/msxml4/tests/saxreader.c
index 0749146a5c65..196208c8d750 100644
--- a/dlls/msxml4/tests/saxreader.c
+++ b/dlls/msxml4/tests/saxreader.c
@@ -2679,11 +2679,8 @@ static void test_saxreader_properties(void)
     V_VT(&v) = VT_EMPTY;
     V_BSTR(&v) = (void*)0xdeadbeef;
     hr = ISAXXMLReader_getProperty(reader, L"xmldecl-encoding", &v);
-    todo_wine
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    todo_wine
     ok(V_VT(&v) == VT_BSTR, "got %d\n", V_VT(&v));
-    todo_wine
     ok(!V_BSTR(&v), "got %s\n", wine_dbgstr_w(V_BSTR(&v)));
 
     V_VT(&v) = VT_EMPTY;
@@ -2726,14 +2723,10 @@ static void test_saxreader_properties(void)
     V_VT(&v) = VT_EMPTY;
     V_BSTR(&v) = (void*)0xdeadbeef;
     hr = ISAXXMLReader_getProperty(reader, L"xmldecl-encoding", &v);
-    todo_wine
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    if (hr == S_OK)
-    {
-        ok(V_VT(&v) == VT_BSTR, "got %d\n", V_VT(&v));
-        ok(!wcscmp(V_BSTR(&v), L"uTf-16"), "got %s\n", wine_dbgstr_w(V_BSTR(&v)));
-        VariantClear(&v);
-    }
+    ok(V_VT(&v) == VT_BSTR, "got %d\n", V_VT(&v));
+    ok(!wcscmp(V_BSTR(&v), L"uTf-16"), "got %s\n", wine_dbgstr_w(V_BSTR(&v)));
+    VariantClear(&v);
 
     V_VT(&v) = VT_EMPTY;
     V_BSTR(&v) = (void*)0xdeadbeef;
diff --git a/dlls/msxml6/tests/domdoc.c b/dlls/msxml6/tests/domdoc.c
index 2bf7acb276dc..8e9a327ddcca 100644
--- a/dlls/msxml6/tests/domdoc.c
+++ b/dlls/msxml6/tests/domdoc.c
@@ -32,10 +32,62 @@
 #include "windows.h"
 
 #include "initguid.h"
+#include "objsafe.h"
+#include "docobj.h"
+#include "dispex.h"
+
 #include "msxml6.h"
 
 #include "wine/test.h"
 
+#define check_interface(a, b, c) check_interface_(__LINE__, a, b, c)
+static void check_interface_(unsigned int line, void *iface_ptr, REFIID iid, BOOL supported)
+{
+    IUnknown *iface = iface_ptr;
+    HRESULT hr, expected_hr;
+    IUnknown *unk;
+
+    expected_hr = supported ? S_OK : E_NOINTERFACE;
+
+    hr = IUnknown_QueryInterface(iface, iid, (void **)&unk);
+    ok_(__FILE__, line)(hr == expected_hr, "Got hr %#lx, expected %#lx.\n", hr, expected_hr);
+    if (SUCCEEDED(hr))
+        IUnknown_Release(unk);
+}
+
+static const WCHAR email_xml[] =
+L"<?xml version=\"1.0\"?>"
+"<!DOCTYPE email ["\
+"   <!ELEMENT email         (recipients,from,reply-to?,subject,body,attachment*)>"\
+"       <!ATTLIST email attachments IDREFS #REQUIRED>"\
+"       <!ATTLIST email sent (yes|no) \"no\">"\
+"   <!ELEMENT recipients    (to+,cc*)>"\
+"   <!ELEMENT to            (#PCDATA)>"\
+"       <!ATTLIST to name CDATA #IMPLIED>"\
+"   <!ELEMENT cc            (#PCDATA)>"\
+"       <!ATTLIST cc name CDATA #IMPLIED>"\
+"   <!ELEMENT from          (#PCDATA)>"\
+"       <!ATTLIST from name CDATA #IMPLIED>"\
+"   <!ELEMENT reply-to      (#PCDATA)>"\
+"       <!ATTLIST reply-to name CDATA #IMPLIED>"\
+"   <!ELEMENT subject       ANY>"\
+"   <!ELEMENT body          ANY>"\
+"       <!ATTLIST body enc CDATA #FIXED \"UTF-8\">"\
+"   <!ELEMENT attachment    (#PCDATA)>"\
+"       <!ATTLIST attachment id ID #REQUIRED>"\
+"]>"
+"<email attachments=\"patch1\">"
+"   <recipients>"
+"       <to>wine-patches@winehq.org</to>"
+"   </recipients>"
+"   <from name=\"Anonymous\">user@localhost</from>"
+"   <subject>msxml3/tests: DTD validation (try 87)</subject>"
+"   <body>"
+"       It no longer causes spontaneous combustion..."
+"   </body>"
+"   <attachment id=\"patch1\">0001-msxml3-tests-DTD-validation.patch</attachment>"
+"</email>";
+
 static BSTR alloced_bstrs[256];
 static int alloced_bstrs_count;
 
@@ -453,6 +505,148 @@ static void test_get_parentNode(void)
     IXMLDOMDocument_Release(doc);
 }
 
+static void test_normalize_attribute_values(void)
+{
+    IXMLDOMElement *element;
+    IXMLDOMDocument2 *doc;
+    VARIANT var;
+    HRESULT hr;
+
+    hr = CoCreateInstance(&CLSID_DOMDocument60, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDOMDocument2, (void **)&doc);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMDocument2_loadXML(doc, _bstr_(L"<a attr=\"v\r\na\tl\r\" />"), NULL);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMDocument2_get_documentElement(doc, &element);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMElement_getAttribute(element, _bstr_(L"attr"), &var);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    todo_wine
+    ok(!wcscmp(V_BSTR(&var), L"v\na\tl\n"), "Unexpected value %s.\n", debugstr_w(V_BSTR(&var)));
+    VariantClear(&var);
+
+    V_VT(&var) = VT_I2;
+    V_I2(&var) = 10;
+    hr = IXMLDOMDocument2_getProperty(doc, _bstr_(L"NormalizeAttributeValues"), &var);
+todo_wine {
+    ok(hr == S_OK, "Failed to get property value, hr %#lx.\n", hr);
+    ok(V_VT(&var) == VT_BOOL, "Unexpected property value type, vt %d.\n", V_VT(&var));
+    ok(V_BOOL(&var) == VARIANT_FALSE, "Unexpected property value.\n");
+}
+    hr = IXMLDOMElement_getAttribute(element, _bstr_(L"attr"), &var);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    todo_wine
+    ok(!wcscmp(V_BSTR(&var), L"v\na\tl\n"), "Unexpected value %s.\n", debugstr_w(V_BSTR(&var)));
+    VariantClear(&var);
+
+    V_VT(&var) = VT_BOOL;
+    V_BOOL(&var) = VARIANT_TRUE;
+    hr = IXMLDOMDocument2_setProperty(doc, _bstr_(L"NormalizeAttributeValues"), var);
+    ok(hr == S_OK, "Failed to set property, hr %#lx.\n", hr);
+
+    V_VT(&var) = VT_I2;
+    V_I2(&var) = 10;
+    hr = IXMLDOMDocument2_getProperty(doc, _bstr_(L"NormalizeAttributeValues"), &var);
+todo_wine {
+    ok(hr == S_OK, "Failed to get property value, hr %#lx.\n", hr);
+    ok(V_VT(&var) == VT_BOOL, "Unexpected property value type, vt %d.\n", V_VT(&var));
+    ok(V_BOOL(&var) == VARIANT_TRUE, "Unexpected property value.\n");
+}
+    hr = IXMLDOMElement_getAttribute(element, _bstr_(L"attr"), &var);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!wcscmp(V_BSTR(&var), L"v a l "), "Unexpected value %s.\n", debugstr_w(V_BSTR(&var)));
+    VariantClear(&var);
+
+    IXMLDOMElement_Release(element);
+    IXMLDOMDocument2_Release(doc);
+    free_bstrs();
+}
+
+static void test_prohibitdtd(void)
+{
+    IXMLDOMDocument2 *doc, *doc2;
+    IXMLDOMNode *node;
+    HRESULT hr;
+    VARIANT v;
+
+    hr = CoCreateInstance(&CLSID_DOMDocument60, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDOMDocument2, (void **)&doc);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    VariantInit(&v);
+    hr = IXMLDOMDocument2_getProperty(doc, _bstr_(L"ProhibitDTD"), &v);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(V_VT(&v) == VT_BOOL, "Unexpected type %d.\n", V_VT(&v));
+    ok(V_BOOL(&v) == VARIANT_TRUE, "Unexpected value %d.\n", V_BOOL(&v));
+
+    hr = IXMLDOMDocument2_loadXML(doc, _bstr_(email_xml), NULL);
+    ok(hr == S_FALSE, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMDocument2_loadXML(doc, _bstr_(L"<a/>"), NULL);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    V_VT(&v) = VT_I2;
+    V_I2(&v) = 0;
+    hr = IXMLDOMDocument2_setProperty(doc, _bstr_(L"ProhibitDTD"), v);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    VariantInit(&v);
+    hr = IXMLDOMDocument2_getProperty(doc, _bstr_(L"ProhibitDTD"), &v);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(V_VT(&v) == VT_BOOL, "Unexpected type %d.\n", V_VT(&v));
+    ok(!V_BOOL(&v), "Unexpected value %d.\n", V_BOOL(&v));
+
+    hr = IXMLDOMDocument2_loadXML(doc, _bstr_(email_xml), NULL);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMDocument2_cloneNode(doc, VARIANT_FALSE, &node);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMDocument2, (void **)&doc2);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    IXMLDOMNode_Release(node);
+
+    VariantInit(&v);
+    hr = IXMLDOMDocument2_getProperty(doc2, _bstr_(L"ProhibitDTD"), &v);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(V_VT(&v) == VT_BOOL, "Unexpected type %d.\n", V_VT(&v));
+    ok(!V_BOOL(&v), "Unexpected value %d.\n", V_BOOL(&v));
+    IXMLDOMDocument2_Release(doc2);
+
+    IXMLDOMDocument2_Release(doc);
+}
+
+static void test_interfaces(void)
+{
+    IXMLDOMDocument *doc;
+    HRESULT hr;
+
+    hr = CoCreateInstance(&CLSID_DOMDocument60, NULL, CLSCTX_INPROC_SERVER,
+            &IID_IXMLDOMDocument, (void **)&doc);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    check_interface(doc, &IID_IXMLDOMDocument, TRUE);
+    check_interface(doc, &IID_IPersistStreamInit, TRUE);
+    check_interface(doc, &IID_IObjectWithSite, TRUE);
+    check_interface(doc, &IID_IObjectSafety, TRUE);
+    check_interface(doc, &IID_IConnectionPointContainer, TRUE);
+    check_interface(doc, &IID_IDispatch, TRUE);
+    check_interface(doc, &IID_IDispatchEx, TRUE);
+    check_interface(doc, &IID_IUnknown, TRUE);
+    check_interface(doc, &IID_IPersistStream, TRUE);
+    check_interface(doc, &IID_ISequentialStream, FALSE);
+    check_interface(doc, &IID_IPersist, FALSE);
+todo_wine
+{
+    check_interface(doc, &IID_IOleCommandTarget, TRUE);
+    check_interface(doc, &IID_IPersistMoniker, TRUE);
+    check_interface(doc, &IID_IProvideClassInfo, TRUE);
+    check_interface(doc, &IID_IStream, TRUE);
+}
+    IXMLDOMDocument_Release(doc);
+}
+
 START_TEST(domdoc)
 {
     HRESULT hr;
@@ -474,6 +668,9 @@ START_TEST(domdoc)
     test_leading_spaces();
     test_get_ownerDocument();
     test_get_parentNode();
+    test_normalize_attribute_values();
+    test_prohibitdtd();
+    test_interfaces();
 
     CoUninitialize();
 }
diff --git a/dlls/msxml6/tests/saxreader.c b/dlls/msxml6/tests/saxreader.c
index 847d71ac1492..3b850d775ce6 100644
--- a/dlls/msxml6/tests/saxreader.c
+++ b/dlls/msxml6/tests/saxreader.c
@@ -29,7 +29,6 @@
 #include "msxml6.h"
 #include "msxml6did.h"
 #include "ocidl.h"
-#include "initguid.h"
 #include "dispex.h"
 
 #include "wine/test.h"
@@ -4955,11 +4954,8 @@ static void test_saxreader_properties(void)
     V_VT(&v) = VT_EMPTY;
     V_BSTR(&v) = (void*)0xdeadbeef;
     hr = ISAXXMLReader_getProperty(reader, L"xmldecl-encoding", &v);
-    todo_wine
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    todo_wine
     ok(V_VT(&v) == VT_BSTR, "got %d\n", V_VT(&v));
-    todo_wine
     ok(!V_BSTR(&v), "got %s\n", wine_dbgstr_w(V_BSTR(&v)));
 
     /* stream with declaration */
@@ -4992,14 +4988,10 @@ static void test_saxreader_properties(void)
     V_VT(&v) = VT_EMPTY;
     V_BSTR(&v) = (void*)0xdeadbeef;
     hr = ISAXXMLReader_getProperty(reader, L"xmldecl-encoding", &v);
-    todo_wine
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
-    if (hr == S_OK)
-    {
-        ok(V_VT(&v) == VT_BSTR, "got %d\n", V_VT(&v));
-        ok(!wcscmp(V_BSTR(&v), L"uTf-16"), "got %s\n", wine_dbgstr_w(V_BSTR(&v)));
-        VariantClear(&v);
-    }
+    ok(V_VT(&v) == VT_BSTR, "got %d\n", V_VT(&v));
+    ok(!wcscmp(V_BSTR(&v), L"uTf-16"), "got %s\n", wine_dbgstr_w(V_BSTR(&v)));
+    VariantClear(&v);
 
     ISAXXMLReader_Release(reader);
     free_bstrs();
diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c
index ead174f0d1fe..69aac1506e76 100644
--- a/dlls/ntdll/tests/file.c
+++ b/dlls/ntdll/tests/file.c
@@ -7116,6 +7116,31 @@ static void test_reparse_points(void)
     status = NtOpenFile( &handle2, READ_CONTROL, &attr, &io, 0, 0 );
     ok( status == STATUS_IO_REPARSE_DATA_INVALID, "got %#lx\n", status );
 
+    NtClose( handle );
+
+    /* Test a link that unwinds past the directory the link is in. */
+
+    RtlInitUnicodeString( &nameW, L"testreparse_dir\\file" );
+    status = NtCreateFile( &handle, GENERIC_ALL, &attr, &io, NULL, 0, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
+                           FILE_OPEN_IF, FILE_NON_DIRECTORY_FILE | FILE_OPEN_REPARSE_POINT, NULL, 0 );
+    ok( !status, "got %#lx\n", status );
+
+    swprintf( path, ARRAY_SIZE(path), L"..\\testreparse_file", temp_path );
+    data_size = init_reparse_symlink( &data, path, SYMLINK_FLAG_RELATIVE );
+    status = NtFsControlFile( handle, NULL, NULL, NULL, &io, FSCTL_SET_REPARSE_POINT, data, data_size, NULL, 0 );
+    ok( !status, "got %#lx\n", status );
+
+    status = NtOpenFile( &handle2, GENERIC_READ | SYNCHRONIZE, &attr, &io, 0, FILE_SYNCHRONOUS_IO_NONALERT );
+    ok( !status, "got %#lx\n", status );
+
+    ret = ReadFile( handle2, buffer, sizeof(buffer), &size, NULL );
+    ok( ret == TRUE, "got error %lu\n", GetLastError() );
+    todo_wine ok( size == 5, "got size %lu\n", size );
+    ok( !memcmp( buffer, "file2", size ), "got data %s\n", debugstr_an( buffer, size ));
+
+    NtClose( handle2 );
+    NtClose( handle );
+
     /* Create an absolute symlink. */
 
     RtlInitUnicodeString( &nameW, L"testreparse_dirlink" );
diff --git a/dlls/ntdll/unix/env.c b/dlls/ntdll/unix/env.c
index 9dbfe78d09f3..cb8f0e7174f6 100644
--- a/dlls/ntdll/unix/env.c
+++ b/dlls/ntdll/unix/env.c
@@ -153,7 +153,7 @@ static NTSTATUS open_nls_data_file( const char *path, const WCHAR *sysdir, HANDL
     OBJECT_ATTRIBUTES attr;
     UNICODE_STRING valueW;
     WCHAR buffer[64];
-    char *p;
+    const char *p;
 
     wcscpy( buffer, system_dir );
     p = strrchr( path, '/' ) + 1;
@@ -483,7 +483,7 @@ const WCHAR *ntdll_get_data_dir(void)
  */
 static void set_process_name( const char *name )
 {
-    char *p;
+    const char *p;
 
 #ifdef HAVE_SETPROCTITLE
     setproctitle("-%s", name );
@@ -838,7 +838,7 @@ void init_environment(void)
 /* check if a WINE_HOST_ prefixed variable already exists in the environment */
 static BOOL host_var_exists( const char *name )
 {
-    char *end = strchr( name, '=' );
+    const char *end = strchr( name, '=' );
 
     if (!end) return FALSE;
     for (char **e = environ; *e; e++)
diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c
index d413bbbc0ab2..943af86e58fd 100644
--- a/dlls/ntdll/unix/file.c
+++ b/dlls/ntdll/unix/file.c
@@ -2154,7 +2154,7 @@ static NTSTATUS server_get_name_info( HANDLE handle, FILE_NAME_INFORMATION *info
             const WCHAR *ptr = name->Name.Buffer;
             const WCHAR *end = ptr + name->Name.Length / sizeof(WCHAR);
 
-            /* Skip the volume mount point. */
+            /* Skip the volume mount point (if any). */
             while (ptr != end && *ptr == '\\') ++ptr;
             while (ptr != end && *ptr != '\\') ++ptr;
             while (ptr != end && *ptr == '\\') ++ptr;
@@ -2162,7 +2162,6 @@ static NTSTATUS server_get_name_info( HANDLE handle, FILE_NAME_INFORMATION *info
 
             info->FileNameLength = (end - ptr) * sizeof(WCHAR);
             if (*name_len < info->FileNameLength) status = STATUS_BUFFER_OVERFLOW;
-            else if (!info->FileNameLength) status = STATUS_INVALID_INFO_CLASS;
             else *name_len = info->FileNameLength;
             if (info->FileNameLength) memcpy( info->FileName, ptr, *name_len );
             free( name );
@@ -2190,6 +2189,13 @@ static LONGLONG get_free_bytes_for_important_data(int fd)
     if (!(url = CFURLCreateFromFileSystemRepresentation( NULL, (UInt8 *)path, strlen(path), false ))) goto done;
     if (!CFURLCopyResourcePropertyForKey( url, kCFURLVolumeAvailableCapacityForImportantUsageKey, &num, NULL )) goto done;
     CFNumberGetValue( num, kCFNumberLongLongType, &space );
+    if (space == 0)
+    {
+        /* It's unlikely that a writeable disk has exactly 0 free bytes. This
+         * probably means the disk is read-only, or is not APFS. Fall back to
+         * statfs. */
+        space = -1;
+    }
 
 done:
     free( path );
@@ -4008,7 +4014,8 @@ static NTSTATUS resolve_absolute_reparse_point( const WCHAR *target, unsigned in
 
 /* limited version of collapse_path() that only deals with . and .. elements
  * in relative symlinks */
-static NTSTATUS collapse_relative_symlink( WCHAR *path, unsigned int len, unsigned int *ret_len )
+static NTSTATUS collapse_relative_symlink( WCHAR *path, unsigned int len, unsigned int *ret_len,
+                                           unsigned int *nt_pos, const char *unix_name, int *unix_len )
 {
     const WCHAR *end = path + len;
     WCHAR *p, *start, *next;
@@ -4051,6 +4058,12 @@ static NTSTATUS collapse_relative_symlink( WCHAR *path, unsigned int len, unsign
                     while (p > start && p[-1] != '\\') p--;
                     if (p > start) p--;
                     end = p;
+                    if (p - path < *nt_pos)
+                    {
+                        while (*unix_len && unix_name[*unix_len - 1] != '/') --*unix_len;
+                        if (*unix_len) --*unix_len;
+                        *nt_pos = p - path;
+                    }
                     continue;
                 }
                 else if (p[2] == '\\') /* ..\ component */
@@ -4061,6 +4074,12 @@ static NTSTATUS collapse_relative_symlink( WCHAR *path, unsigned int len, unsign
                     while (p > start && p[-1] != '\\') p--;
                     memmove( p, next, (end - next) * sizeof(WCHAR) );
                     end -= (next - p);
+                    if (p - path < *nt_pos)
+                    {
+                        while (*unix_len && unix_name[*unix_len - 1] != '/') --*unix_len;
+                        if (*unix_len) --*unix_len;
+                        *nt_pos = p - path;
+                    }
                     continue;
                 }
             }
@@ -4141,7 +4160,8 @@ static NTSTATUS resolve_reparse_point( int fd, int root_fd, OBJECT_ATTRIBUTES *a
             memcpy( new_nt_name, name, nt_pos * sizeof(WCHAR) );
             memcpy( new_nt_name + nt_pos, target, target_len * sizeof(WCHAR) );
 
-            if ((status = collapse_relative_symlink( new_nt_name, nt_pos + target_len, &collapsed_len )))
+            if ((status = collapse_relative_symlink( new_nt_name, nt_pos + target_len,
+                                                     &collapsed_len, &nt_pos, *unix_name, &pos )))
             {
                 if (attr->RootDirectory)
                 {
diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c
index b66be2bb06e9..8d062ffdda0c 100644
--- a/dlls/ntdll/unix/loader.c
+++ b/dlls/ntdll/unix/loader.c
@@ -1301,7 +1301,7 @@ NTSTATUS load_builtin( struct pe_mapping_info *pe_mapping, USHORT machine,
  */
 NTSTATUS load_unixlib_by_name( const UNICODE_STRING *nt_name, void **handle_ret )
 {
-    unsigned int i, pos, namepos, maxlen = 0;
+    unsigned int i, pos, maxlen = 0;
     unsigned int len = nt_name->Length / sizeof(WCHAR);
     const char *so_dir = get_so_dir( current_machine );
     char *ptr = NULL, *file, *ext = NULL;
@@ -1309,8 +1309,7 @@ NTSTATUS load_unixlib_by_name( const UNICODE_STRING *nt_name, void **handle_ret
 
     if (!len) return STATUS_DLL_NOT_FOUND;
 
-    for (i = namepos = 0; i < len; i++)
-        if (nt_name->Buffer[i] == '/' || nt_name->Buffer[i] == '\\') break;
+    for (i = 0; i < len; i++) if (nt_name->Buffer[i] == '/' || nt_name->Buffer[i] == '\\') break;
 
     if (i < len)  /* explicit path */
     {
@@ -1330,17 +1329,17 @@ NTSTATUS load_unixlib_by_name( const UNICODE_STRING *nt_name, void **handle_ret
     if (!(file = malloc( maxlen ))) return STATUS_NO_MEMORY;
 
     pos = maxlen - len - 4;
+    ext = file + pos + len;
     /* we don't want to depend on the current codepage here */
     for (i = 0; i < len; i++)
     {
-        if (nt_name->Buffer[namepos + i] > 127) goto done;
-        file[pos + i] = (char)nt_name->Buffer[namepos + i];
+        if (nt_name->Buffer[i] > 127) goto done;
+        file[pos + i] = (char)nt_name->Buffer[i];
         if (file[pos + i] >= 'A' && file[pos + i] <= 'Z') file[pos + i] += 'a' - 'A';
         else if (file[pos + i] == '.') ext = file + pos + i;
     }
     file[pos + len] = 0;
     file[--pos] = '/';
-    if (!ext) ext = file + pos + len;
 
     if (build_dir)
     {
@@ -1887,12 +1886,13 @@ DECLSPEC_EXPORT jobject java_object = 0;
 DECLSPEC_EXPORT unsigned short java_gdt_sel = 0;
 
 /* main Wine initialisation */
-static jstring wine_init_jni( JNIEnv *env, jobject obj, jobjectArray cmdline, jobjectArray environment )
+static jstring wine_init_jni( JNIEnv *env, jobject obj, jobjectArray cmdline )
 {
     char **argv;
     char *str;
-    char error[1024];
+    char error[1024], *winedebuglog = NULL;
     int i, argc, length;
+    void (*update_func)( const char * );
 
     /* get the command line array */
 
@@ -1919,39 +1919,19 @@ static jstring wine_init_jni( JNIEnv *env, jobject obj, jobjectArray cmdline, jo
 
     /* set the environment variables */
 
-    if (environment)
+    // Activity always modifies LD_LIBRARY_PATH in order to load libraries
+    // from custom location in JVM process.
+    update_func = dlsym( RTLD_DEFAULT, "android_update_LD_LIBRARY_PATH" );
+    if (update_func) update_func( getenv("LD_LIBRARY_PATH") );
+
+    winedebuglog = getenv("WINEDEBUGLOG");
+    if (winedebuglog)
     {
-        int count = (*env)->GetArrayLength( env, environment );
-        for (i = 0; i < count - 1; i += 2)
+        int fd = open( winedebuglog, O_WRONLY | O_CREAT | O_APPEND, 0666 );
+        if (fd != -1)
         {
-            jobject var_obj = (*env)->GetObjectArrayElement( env, environment, i );
-            jobject val_obj = (*env)->GetObjectArrayElement( env, environment, i + 1 );
-            const char *var = (*env)->GetStringUTFChars( env, var_obj, NULL );
-
-            if (val_obj)
-            {
-                const char *val = (*env)->GetStringUTFChars( env, val_obj, NULL );
-                setenv( var, val, 1 );
-                if (!strcmp( var, "LD_LIBRARY_PATH" ))
-                {
-                    void (*update_func)( const char * ) = dlsym( RTLD_DEFAULT,
-                                                                 "android_update_LD_LIBRARY_PATH" );
-                    if (update_func) update_func( val );
-                }
-                else if (!strcmp( var, "WINEDEBUGLOG" ))
-                {
-                    int fd = open( val, O_WRONLY | O_CREAT | O_APPEND, 0666 );
-                    if (fd != -1)
-                    {
-                        dup2( fd, 2 );
-                        close( fd );
-                    }
-                }
-                (*env)->ReleaseStringUTFChars( env, val_obj, val );
-            }
-            else unsetenv( var );
-
-            (*env)->ReleaseStringUTFChars( env, var_obj, var );
+            dup2( fd, 2 );
+            close( fd );
         }
     }
 
@@ -1982,7 +1962,7 @@ jint JNI_OnLoad( JavaVM *vm, void *reserved )
 {
     static const JNINativeMethod method =
     {
-        "wine_init", "([Ljava/lang/String;[Ljava/lang/String;)Ljava/lang/String;", wine_init_jni
+        "wine_init", "([Ljava/lang/String;)Ljava/lang/String;", wine_init_jni
     };
 
     JNIEnv *env;
diff --git a/dlls/ntdll/unix/loadorder.c b/dlls/ntdll/unix/loadorder.c
index 76059137f76b..2cb2bdc4c699 100644
--- a/dlls/ntdll/unix/loadorder.c
+++ b/dlls/ntdll/unix/loadorder.c
@@ -436,7 +436,12 @@ static BOOL prefer_native_heuristics( const UNICODE_STRING *nt_name,
     ULONG len;
 
     if (!pe_mapping) return FALSE;
-    if (!pe_mapping->version_len) return FALSE;
+    if (pe_mapping->image.wine_builtin || pe_mapping->image.wine_fakedll) return FALSE;
+    if (!pe_mapping->version_len)
+    {
+        TRACE( "preferring native with no version for %s\n", debugstr_us( nt_name ));
+        return TRUE;
+    }
     if (!get_version_entry( &entry, pe_mapping->version_res,
                             (char *)pe_mapping->version_res + pe_mapping->version_len )) return FALSE;
     fileinfo = entry.value;
diff --git a/dlls/ntdll/unix/server.c b/dlls/ntdll/unix/server.c
index 4295a56d77c0..08d7ceb7d175 100644
--- a/dlls/ntdll/unix/server.c
+++ b/dlls/ntdll/unix/server.c
@@ -1320,22 +1320,22 @@ static const char *init_server_dir( dev_t dev, ino_t ino )
  */
 static int setup_config_dir(void)
 {
-    char *p;
+    char *p, *dir;
     struct stat st;
     int fd_cwd = open( ".", O_RDONLY );
 
     if (chdir( config_dir ) == -1)
     {
         if (errno != ENOENT) fatal_perror( "cannot use directory %s", config_dir );
-        if ((p = strrchr( config_dir, '/' )) && p != config_dir)
+        dir = strdup( config_dir );
+        if ((p = strrchr( dir, '/' )) && p != dir)
         {
-            while (p > config_dir + 1 && p[-1] == '/') p--;
+            while (p > dir + 1 && p[-1] == '/') p--;
             *p = 0;
-            if (!stat( config_dir, &st ) && st.st_uid != getuid())
-                fatal_error( "'%s' is not owned by you, refusing to create a configuration directory there\n",
-                             config_dir );
-            *p = '/';
+            if (!stat( dir, &st ) && st.st_uid != getuid())
+                fatal_error( "'%s' is not owned by you, refusing to create a configuration directory there\n", dir );
         }
+        free( dir );
         mkdir( config_dir, 0777 );
         if (chdir( config_dir ) == -1) fatal_perror( "chdir to %s", config_dir );
         MESSAGE( "wine: created the configuration directory '%s'\n", config_dir );
diff --git a/dlls/odbc32/proxyodbc.c b/dlls/odbc32/proxyodbc.c
index 066e9c14064d..22720088b0c0 100644
--- a/dlls/odbc32/proxyodbc.c
+++ b/dlls/odbc32/proxyodbc.c
@@ -439,7 +439,7 @@ static struct connection *create_connection( struct environment *env )
     struct connection *ret;
     if (!(ret = calloc( 1, sizeof(*ret) ))) return NULL;
     init_object( &ret->hdr, SQL_HANDLE_DBC, &env->hdr );
-    ret->attr_login_timeout = 15;
+    ret->attr_login_timeout = SQL_LOGIN_TIMEOUT_DEFAULT;
     return ret;
 }
 
@@ -468,6 +468,7 @@ static struct environment *create_environment( void )
     struct environment *ret;
     if (!(ret = calloc( 1, sizeof(*ret) ))) return NULL;
     init_object( &ret->hdr, SQL_HANDLE_ENV, NULL );
+    list_init( &ret->env_handles );
     ret->attr_version = SQL_OV_ODBC2;
     return ret;
 }
@@ -492,6 +493,12 @@ static SQLRETURN alloc_handle( SQLSMALLINT type, struct object *input, struct ob
 {
     SQLRETURN ret = SQL_ERROR;
 
+    if (type == SQL_HANDLE_ENV || type == SQL_HANDLE_DBC)
+    {
+        ERR( "invalid call\n" );
+        return SQL_ERROR;
+    }
+
     if (input->unix_handle)
     {
         struct SQLAllocHandle_params params = { type, input->unix_handle, &output->unix_handle };
@@ -505,14 +512,6 @@ static SQLRETURN alloc_handle( SQLSMALLINT type, struct object *input, struct ob
         {
             switch (type)
             {
-            case SQL_HANDLE_ENV:
-                if (input->win32_funcs->SQLAllocEnv)
-                    ret = input->win32_funcs->SQLAllocEnv( &output->win32_handle );
-                break;
-            case SQL_HANDLE_DBC:
-                if (input->win32_funcs->SQLAllocConnect)
-                    ret = input->win32_funcs->SQLAllocConnect( input->win32_handle, &output->win32_handle );
-                break;
             case SQL_HANDLE_STMT:
                 if (input->win32_funcs->SQLAllocStmt)
                     ret = input->win32_funcs->SQLAllocStmt( input->win32_handle, &output->win32_handle );
@@ -1261,56 +1260,108 @@ static int has_suffix( const WCHAR *str, const WCHAR *suffix )
     return len >= len2 && !wcsicmp( str + len - len2, suffix );
 }
 
-static SQLRETURN set_env_attr( struct environment *env, SQLINTEGER attr, SQLPOINTER value, SQLINTEGER len )
+static SQLRETURN set_env_attr( struct env_handle *env, SQLINTEGER attr, SQLPOINTER value )
 {
     SQLRETURN ret = SQL_ERROR;
 
-    if (env->hdr.unix_handle)
+    if (env->unix_handle)
     {
-        struct SQLSetEnvAttr_params params = { env->hdr.unix_handle, attr, value, len };
+        struct SQLSetEnvAttr_params params = { env->unix_handle, attr, value, 0 };
         ret = ODBC_CALL( SQLSetEnvAttr, &params );
     }
-    else if (env->hdr.win32_handle)
+    else
     {
-        if (env->hdr.win32_funcs->SQLSetEnvAttr)
-            ret = env->hdr.win32_funcs->SQLSetEnvAttr( env->hdr.win32_handle, attr, value, len );
+        if (env->win32_funcs->SQLSetEnvAttr)
+            ret = env->win32_funcs->SQLSetEnvAttr( env->win32_handle, attr, value, 0 );
     }
 
     return ret;
 }
 
-static SQLRETURN alloc_env_handle( struct environment *env, BOOL is_unix )
+static SQLRETURN alloc_env_handle( struct env_handle *env )
 {
     SQLRETURN ret = SQL_ERROR;
 
-    if (is_unix)
+    if (!env->win32_funcs)
     {
-        struct SQLAllocHandle_params params = { SQL_HANDLE_ENV, 0, &env->hdr.unix_handle };
+        struct SQLAllocHandle_params params = { SQL_HANDLE_ENV, 0, &env->unix_handle };
         ret = ODBC_CALL( SQLAllocHandle, &params );
     }
     else
     {
-        if (env->hdr.win32_funcs->SQLAllocHandle)
-            ret = env->hdr.win32_funcs->SQLAllocHandle( SQL_HANDLE_ENV, NULL, &env->hdr.win32_handle );
-        else if (env->hdr.win32_funcs->SQLAllocEnv)
-            ret = env->hdr.win32_funcs->SQLAllocEnv( &env->hdr.win32_handle );
+        if (env->win32_funcs->SQLAllocHandle)
+            ret = env->win32_funcs->SQLAllocHandle( SQL_HANDLE_ENV, NULL, &env->win32_handle );
+        else if (env->win32_funcs->SQLAllocEnv)
+            ret = env->win32_funcs->SQLAllocEnv( &env->win32_handle );
     }
 
     return ret;
 }
 
-#define INT_PTR(val) (SQLPOINTER)(ULONG_PTR)val
-static void prepare_env( struct environment *env )
+static void release_env( struct env_handle *env )
 {
-    if (set_env_attr( env, SQL_ATTR_ODBC_VERSION, INT_PTR(env->attr_version), 0 ))
-        WARN( "failed to set ODBC version\n" );
+    SQLRETURN ret = SQL_ERROR;
+
+    if (!env || --env->ref) return;
+
+    if (env->unix_handle)
+    {
+        struct SQLFreeHandle_params params = { SQL_HANDLE_ENV, env->unix_handle };
+        ret = ODBC_CALL( SQLFreeHandle, &params );
+    }
+    else if (env->win32_funcs->SQLFreeHandle)
+        ret = env->win32_funcs->SQLFreeHandle( SQL_HANDLE_ENV, env->win32_handle );
+    else if (env->win32_funcs->SQLFreeEnv)
+        ret = env->win32_funcs->SQLFreeEnv( env->win32_handle );
+
+    if (ret == SQL_SUCCESS)
+    {
+        list_remove( &env->entry );
+        free( env );
+    }
 }
 
-static SQLRETURN create_env( struct environment *env, BOOL is_unix )
+#define INT_PTR(val) (SQLPOINTER)(ULONG_PTR)val
+static SQLRETURN create_env( struct connection *con )
 {
+    struct environment *env = (struct environment *)con->hdr.parent;
+    struct env_handle *cur;
     SQLRETURN ret;
-    if ((ret = alloc_env_handle( env, is_unix ))) return ret;
-    prepare_env( env );
+
+    EnterCriticalSection( &env->hdr.cs );
+
+    LIST_FOR_EACH_ENTRY( cur, &env->env_handles, struct env_handle, entry )
+    {
+        if (con->hdr.win32_funcs == cur->win32_funcs)
+        {
+            cur->ref++;
+            release_env( con->env );
+            con->env = cur;
+            LeaveCriticalSection( &env->hdr.cs );
+            return SQL_SUCCESS;
+        }
+    }
+
+    if (!(cur = calloc( 1, sizeof(*cur) )))
+    {
+        LeaveCriticalSection( &env->hdr.cs );
+        return SQL_ERROR;
+    }
+    cur->win32_funcs = con->hdr.win32_funcs;
+    cur->ref = 1;
+    ret = alloc_env_handle( cur );
+    if (!SUCCESS(ret))
+    {
+        free( cur );
+        LeaveCriticalSection( &env->hdr.cs );
+        return ret;
+    }
+    list_add_head( &env->env_handles, &cur->entry );
+    con->env = cur;
+    LeaveCriticalSection( &env->hdr.cs );
+
+    if (set_env_attr( cur, SQL_ATTR_ODBC_VERSION, INT_PTR(env->attr_version) ))
+        WARN( "failed to set ODBC version\n" );
     return SQL_SUCCESS;
 }
 
@@ -1430,6 +1481,58 @@ static SQLRETURN get_info_win32_w( struct connection *con, SQLUSMALLINT type, SQ
     return ret;
 }
 
+static SQLRETURN free_handle( SQLSMALLINT type, struct object *obj )
+{
+    SQLRETURN ret = SQL_SUCCESS;
+
+    if (obj->unix_handle)
+    {
+        struct SQLFreeHandle_params params = { type, obj->unix_handle };
+        ret = ODBC_CALL( SQLFreeHandle, &params );
+    }
+    else if (obj->win32_handle)
+    {
+        if (obj->win32_funcs->SQLFreeHandle)
+            ret = obj->win32_funcs->SQLFreeHandle( type, obj->win32_handle );
+        else
+        {
+            switch (type)
+            {
+            case SQL_HANDLE_DBC:
+                if (obj->win32_funcs->SQLFreeConnect)
+                    ret = obj->win32_funcs->SQLFreeConnect( obj->win32_handle );
+                break;
+            case SQL_HANDLE_STMT:
+                if (obj->win32_funcs->SQLFreeStmt)
+                    ret = obj->win32_funcs->SQLFreeStmt( obj->win32_handle, SQL_DROP );
+                break;
+            default: break;
+            }
+        }
+    }
+
+    return ret;
+}
+
+static SQLRETURN alloc_con_handle( struct connection *con )
+{
+    SQLRETURN ret = SQL_ERROR;
+
+    if (con->env->unix_handle)
+    {
+        struct SQLAllocHandle_params params = { SQL_HANDLE_DBC, con->env->unix_handle, &con->hdr.unix_handle };
+        ret = ODBC_CALL( SQLAllocHandle, &params );
+    }
+    else
+    {
+        if (con->env->win32_funcs->SQLAllocHandle)
+            ret = con->env->win32_funcs->SQLAllocHandle( SQL_HANDLE_DBC, con->env->win32_handle, &con->hdr.win32_handle );
+        else if (con->env->win32_funcs->SQLAllocConnect)
+            ret = con->env->win32_funcs->SQLAllocConnect( con->env->win32_handle, &con->hdr.win32_handle );
+    }
+
+    return ret;
+}
 
 static SQLRETURN create_con( struct connection *con )
 {
@@ -1437,11 +1540,13 @@ static SQLRETURN create_con( struct connection *con )
     SQLSMALLINT len;
     SQLRETURN ret;
 
-    if ((ret = alloc_handle( SQL_HANDLE_DBC, con->hdr.parent, &con->hdr ))) return ret;
+    if ((ret = alloc_con_handle( con ))) return ret;
 
-    if (set_con_attr( con, SQL_ATTR_CONNECTION_TIMEOUT, INT_PTR(con->attr_con_timeout), 0 ))
+    if (con->con_timeout_set &&
+            set_con_attr( con, SQL_ATTR_CONNECTION_TIMEOUT, INT_PTR(con->attr_con_timeout), 0 ))
         WARN( "failed to set connection timeout\n" );
-    if (set_con_attr( con, SQL_ATTR_LOGIN_TIMEOUT, INT_PTR(con->attr_login_timeout), 0 ))
+    if (con->login_timeout_set &&
+            set_con_attr( con, SQL_ATTR_LOGIN_TIMEOUT, INT_PTR(con->attr_login_timeout), 0 ))
         WARN( "failed to set login timeout\n" );
 
     if (con->hdr.win32_handle)
@@ -1490,6 +1595,52 @@ static SQLRETURN connect_unix_a( struct connection *con, SQLCHAR *servername, SQ
     return ODBC_CALL( SQLConnect, &params );
 }
 
+static void cleanup_object( struct object *obj );
+
+static SQLRETURN prepare_connection( WCHAR *filename, struct connection *con )
+{
+    SQLRETURN ret;
+
+    if (has_suffix( filename, L".dll" ))
+    {
+        const struct win32_funcs *funcs = load_driver( filename );
+
+        if (!funcs)
+        {
+            WARN( "failed to load driver %s\n", debugstr_w(filename) );
+            return SQL_ERROR;
+        }
+        if (con->hdr.unix_handle || (con->hdr.win32_handle && funcs != con->hdr.win32_funcs))
+        {
+            free_handle( SQL_HANDLE_DBC, &con->hdr );
+            cleanup_object( &con->hdr );
+            con->hdr.unix_handle = 0;
+            con->hdr.win32_handle = 0;
+        }
+        con->hdr.win32_funcs = funcs;
+        TRACE( "using Windows driver %s\n", debugstr_w(filename) );
+
+        if (!SUCCESS((ret = create_env( con )))) return ret;
+        if (!con->hdr.win32_handle && !SUCCESS((ret = create_con( con )))) return ret;
+    }
+    else
+    {
+        if (con->hdr.win32_handle)
+        {
+            free_handle( SQL_HANDLE_DBC, &con->hdr );
+            cleanup_object( &con->hdr );
+            con->hdr.win32_handle = 0;
+            con->hdr.win32_funcs = NULL;
+        }
+        TRACE( "using Unix driver %s\n", debugstr_w(filename) );
+
+        if (!SUCCESS((ret = create_env( con )))) return ret;
+        if (!con->hdr.unix_handle && !SUCCESS((ret = create_con( con )))) return ret;
+    }
+
+    return SQL_SUCCESS;
+}
+
 /*************************************************************************
  *				SQLConnect           [ODBC32.007]
  */
@@ -1514,29 +1665,11 @@ SQLRETURN WINAPI SQLConnect(SQLHDBC ConnectionHandle, SQLCHAR *ServerName, SQLSM
         goto done;
     }
 
-    if (has_suffix( filename, L".dll" ))
-    {
-        if (!(con->hdr.win32_funcs = con->hdr.parent->win32_funcs = load_driver( filename )))
-        {
-            WARN( "failed to load driver %s\n", debugstr_w(filename) );
-            goto done;
-        }
-        TRACE( "using Windows driver %s\n", debugstr_w(filename) );
-
-        if (!SUCCESS((ret = create_env( (struct environment *)con->hdr.parent, FALSE )))) goto done;
-        if (!SUCCESS((ret = create_con( con )))) goto done;
-
+    if (!SUCCESS((ret = prepare_connection( filename, con )))) goto done;
+    if (con->hdr.win32_handle)
         ret = connect_win32_a( con, ServerName, NameLength1, UserName, NameLength2, Authentication, NameLength3 );
-    }
     else
-    {
-        TRACE( "using Unix driver %s\n", debugstr_w(filename) );
-
-        if (!SUCCESS((ret = create_env( (struct environment *)con->hdr.parent, TRUE )))) goto done;
-        if (!SUCCESS((ret = create_con( con )))) goto done;
-
         ret = connect_unix_a( con, ServerName, NameLength1, UserName, NameLength2, Authentication, NameLength3 );
-    }
 
 done:
     free( servername );
@@ -1750,8 +1883,6 @@ static SQLRETURN disconnect_win32( struct connection *con )
     return SQL_ERROR;
 }
 
-static void cleanup_object( struct object *obj );
-
 static void destroy_dependent_objects( struct connection *con )
 {
     struct object *obj, *next;
@@ -1832,32 +1963,49 @@ SQLRETURN WINAPI SQLEndTran(SQLSMALLINT HandleType, SQLHANDLE Handle, SQLSMALLIN
     {
         ret = end_tran_win32( HandleType, obj, CompletionType );
     }
+    else if (HandleType == SQL_HANDLE_ENV)
+    {
+        struct connection *con;
+
+        LIST_FOR_EACH_ENTRY( con, &obj->children, struct connection, hdr.entry )
+        {
+            EnterCriticalSection( &con->hdr.cs );
+            /* TODO: we should call SQLEndTran depending on connection state */
+            if (con->hdr.unix_handle)
+                ret = end_tran_unix( SQL_HANDLE_DBC, &con->hdr, CompletionType );
+            else
+                ret = end_tran_win32( SQL_HANDLE_DBC, &con->hdr, CompletionType );
+            LeaveCriticalSection( &con->hdr.cs );
+
+            if (ret != SQL_SUCCESS) break;
+        }
+    }
 
     TRACE("Returning %d\n", ret);
     unlock_object( obj );
     return ret;
 }
 
-static SQLRETURN error_unix_a( struct environment *env, struct connection *con, struct statement *stmt, SQLCHAR *state,
+static SQLRETURN error_unix_a( struct env_handle *env, struct connection *con, struct statement *stmt, SQLCHAR *state,
                                SQLINTEGER *native_err, SQLCHAR *msg, SQLSMALLINT buflen, SQLSMALLINT *retlen )
 {
-    struct SQLError_params params = { env ? env->hdr.unix_handle : 0, con ? con->hdr.unix_handle : 0,
+    struct SQLError_params params = { env ? env->unix_handle : 0, con ? con->hdr.unix_handle : 0,
                                       stmt ? stmt->hdr.unix_handle : 0, state, native_err, msg, buflen, retlen };
     return ODBC_CALL( SQLError, &params );
 }
 
-static SQLRETURN error_win32_a( struct environment *env, struct connection *con, struct statement *stmt, SQLCHAR *state,
+static SQLRETURN error_win32_a( struct env_handle *env, struct connection *con, struct statement *stmt, SQLCHAR *state,
                                 SQLINTEGER *native_err, SQLCHAR *msg, SQLSMALLINT buflen, SQLSMALLINT *retlen )
 {
     const struct win32_funcs *win32_funcs;
     SQLRETURN ret = SQL_ERROR;
 
-    if (env) win32_funcs = env->hdr.win32_funcs;
+    if (env) win32_funcs = env->win32_funcs;
     else if (con) win32_funcs = con->hdr.win32_funcs;
     else win32_funcs = stmt->hdr.win32_funcs;
 
     if (win32_funcs->SQLError)
-        return win32_funcs->SQLError( env ? env->hdr.win32_handle : NULL, con ? con->hdr.win32_handle : NULL,
+        return win32_funcs->SQLError( env ? env->win32_handle : NULL, con ? con->hdr.win32_handle : NULL,
                                       stmt ? stmt->hdr.win32_handle : NULL, state, native_err, msg, buflen, retlen );
 
     if (win32_funcs->SQLErrorW)
@@ -1866,7 +2014,7 @@ static SQLRETURN error_win32_a( struct environment *env, struct connection *con,
         SQLSMALLINT lenW;
 
         if (!(msgW = malloc( buflen * sizeof(SQLWCHAR) ))) return SQL_ERROR;
-        ret = win32_funcs->SQLErrorW( env ? env->hdr.win32_handle : NULL, con ? con->hdr.win32_handle : NULL,
+        ret = win32_funcs->SQLErrorW( env ? env->win32_handle : NULL, con ? con->hdr.win32_handle : NULL,
                                       stmt ? stmt->hdr.win32_handle : NULL, stateW, native_err, msgW, buflen, &lenW );
         if (SUCCESS( ret ))
         {
@@ -1885,6 +2033,7 @@ static SQLRETURN error_win32_a( struct environment *env, struct connection *con,
 
 /*************************************************************************
  *				SQLError           [ODBC32.010]
+ * FIXME: implement proper error handling.
  */
 SQLRETURN WINAPI SQLError(SQLHENV EnvironmentHandle, SQLHDBC ConnectionHandle, SQLHSTMT StatementHandle,
                           SQLCHAR *SqlState, SQLINTEGER *NativeError, SQLCHAR *MessageText,
@@ -1893,7 +2042,7 @@ SQLRETURN WINAPI SQLError(SQLHENV EnvironmentHandle, SQLHDBC ConnectionHandle, S
     struct environment *env = (struct environment *)lock_object( EnvironmentHandle, SQL_HANDLE_ENV );
     struct connection *con = (struct connection *)lock_object( ConnectionHandle, SQL_HANDLE_DBC );
     struct statement *stmt = (struct statement *)lock_object( StatementHandle, SQL_HANDLE_STMT );
-    SQLRETURN ret = SQL_ERROR;
+    SQLRETURN ret = SQL_NO_DATA;
 
     TRACE("(EnvironmentHandle %p, ConnectionHandle %p, StatementHandle %p, SqlState %p, NativeError %p,"
           " MessageText %p, BufferLength %d, TextLength %p)\n", EnvironmentHandle, ConnectionHandle,
@@ -1901,13 +2050,33 @@ SQLRETURN WINAPI SQLError(SQLHENV EnvironmentHandle, SQLHDBC ConnectionHandle, S
 
     if (!env && !con && !stmt) return SQL_INVALID_HANDLE;
 
-    if ((env && env->hdr.unix_handle) || (con && con->hdr.unix_handle) || (stmt && stmt->hdr.unix_handle))
+    if ((con && con->hdr.unix_handle) || (stmt && stmt->hdr.unix_handle))
     {
-        ret = error_unix_a( env, con, stmt, SqlState, NativeError, MessageText, BufferLength, TextLength );
+        ret = error_unix_a( NULL, con, stmt, SqlState, NativeError, MessageText, BufferLength, TextLength );
     }
-    else if ((env && env->hdr.win32_handle) || (con && con->hdr.win32_handle) || (stmt && stmt->hdr.win32_handle))
+    else if ((con && con->hdr.win32_handle) || (stmt && stmt->hdr.win32_handle))
     {
-        ret = error_win32_a( env, con, stmt, SqlState, NativeError, MessageText, BufferLength, TextLength );
+        ret = error_win32_a( NULL, con, stmt, SqlState, NativeError, MessageText, BufferLength, TextLength );
+    }
+    else if (env)
+    {
+        struct env_handle *env_handle;
+
+        LIST_FOR_EACH_ENTRY( env_handle, &env->env_handles, struct env_handle, entry )
+        {
+            if (env_handle->unix_handle)
+            {
+                ret = error_unix_a( env_handle, NULL, NULL, SqlState,
+                        NativeError, MessageText, BufferLength, TextLength );
+            }
+            else
+            {
+                ret = error_win32_a( env_handle, NULL, NULL, SqlState,
+                        NativeError, MessageText, BufferLength, TextLength );
+            }
+
+            if (ret != SQL_NO_DATA) break;
+        }
     }
 
     if (SUCCESS( ret ))
@@ -2165,43 +2334,6 @@ SQLRETURN WINAPI SQLFetchScroll(SQLHSTMT StatementHandle, SQLSMALLINT FetchOrien
     return ret;
 }
 
-static SQLRETURN free_handle( SQLSMALLINT type, struct object *obj )
-{
-    SQLRETURN ret = SQL_SUCCESS;
-
-    if (obj->unix_handle)
-    {
-        struct SQLFreeHandle_params params = { type, obj->unix_handle };
-        ret = ODBC_CALL( SQLFreeHandle, &params );
-    }
-    else if (obj->win32_handle)
-    {
-        if (obj->win32_funcs->SQLFreeHandle)
-            ret = obj->win32_funcs->SQLFreeHandle( type, obj->win32_handle );
-        else
-        {
-            switch (type)
-            {
-            case SQL_HANDLE_ENV:
-                if (obj->win32_funcs->SQLFreeEnv)
-                    ret = obj->win32_funcs->SQLFreeEnv( obj->win32_handle );
-                break;
-            case SQL_HANDLE_DBC:
-                if (obj->win32_funcs->SQLFreeConnect)
-                    ret = obj->win32_funcs->SQLFreeConnect( obj->win32_handle );
-                break;
-            case SQL_HANDLE_STMT:
-                if (obj->win32_funcs->SQLFreeStmt)
-                    ret = obj->win32_funcs->SQLFreeStmt( obj->win32_handle, SQL_DROP );
-                break;
-            default: break;
-            }
-        }
-    }
-
-    return ret;
-}
-
 /*************************************************************************
  *				SQLFreeConnect           [ODBC32.014]
  */
@@ -2218,6 +2350,7 @@ SQLRETURN WINAPI SQLFreeConnect(SQLHDBC ConnectionHandle)
     else
     {
         ret = free_handle( SQL_HANDLE_DBC, &con->hdr );
+        cleanup_object( &con->hdr );
         con->hdr.closed = TRUE;
     }
 
@@ -2233,7 +2366,7 @@ SQLRETURN WINAPI SQLFreeConnect(SQLHDBC ConnectionHandle)
 SQLRETURN WINAPI SQLFreeEnv(SQLHENV EnvironmentHandle)
 {
     struct environment *env = (struct environment *)lock_object( EnvironmentHandle, SQL_HANDLE_ENV );
-    SQLRETURN ret;
+    SQLRETURN ret = SQL_SUCCESS;
 
     TRACE("(EnvironmentHandle %p)\n", EnvironmentHandle);
 
@@ -2242,10 +2375,7 @@ SQLRETURN WINAPI SQLFreeEnv(SQLHENV EnvironmentHandle)
     if (!list_empty( &env->hdr.children )) ret = SQL_ERROR;
     else
     {
-        ret = free_handle( SQL_HANDLE_ENV, &env->hdr );
-
-        RegCloseKey( env->drivers_key );
-        RegCloseKey( env->sources_key );
+        cleanup_object( &env->hdr );
         env->hdr.closed = TRUE;
     }
 
@@ -2288,6 +2418,13 @@ static void cleanup_object( struct object *obj )
         env->drivers_idx = env->sources_idx = 0;
         break;
     }
+    case SQL_HANDLE_DBC:
+    {
+        struct connection *con = (struct connection *)obj;
+        release_env( con->env );
+        con->env = NULL;
+        break;
+    }
     case SQL_HANDLE_STMT:
     {
         struct statement *stmt = (struct statement *)obj;
@@ -2338,7 +2475,9 @@ static SQLRETURN free_statement( struct statement *stmt, SQLUSMALLINT option )
     }
     else if (stmt->hdr.win32_handle)
     {
-        if (stmt->hdr.win32_funcs->SQLFreeStmt)
+        if (option == SQL_DROP)
+            ret = free_handle( SQL_HANDLE_STMT, &stmt->hdr );
+        else if (stmt->hdr.win32_funcs->SQLFreeStmt)
             ret = stmt->hdr.win32_funcs->SQLFreeStmt( stmt->hdr.win32_handle, option );
     }
 
@@ -2859,7 +2998,7 @@ SQLRETURN WINAPI SQLGetDiagField(SQLSMALLINT HandleType, SQLHANDLE Handle, SQLSM
                                  SQLSMALLINT *StringLength)
 {
     struct object *obj = lock_object( Handle, HandleType );
-    SQLRETURN ret = SQL_ERROR;
+    SQLRETURN ret = SQL_NO_DATA;
 
     TRACE("(HandleType %d, Handle %p, RecNumber %d, DiagIdentifier %d, DiagInfo %p, BufferLength %d,"
           " StringLength %p)\n", HandleType, Handle, RecNumber, DiagIdentifier, DiagInfo, BufferLength, StringLength);
@@ -2876,6 +3015,33 @@ SQLRETURN WINAPI SQLGetDiagField(SQLSMALLINT HandleType, SQLHANDLE Handle, SQLSM
         ret = get_diag_field_win32_a( HandleType, obj, RecNumber, DiagIdentifier, DiagInfo, BufferLength,
                                       StringLength );
     }
+    else if (HandleType == SQL_HANDLE_ENV)
+    {
+        struct environment *env = (struct environment *)obj;
+        struct env_handle *env_handle;
+
+        LIST_FOR_EACH_ENTRY( env_handle, &env->env_handles, struct env_handle, entry )
+        {
+            struct object env_obj;
+
+            env_obj.unix_handle = env_handle->unix_handle;
+            env_obj.win32_handle = env_handle->win32_handle;
+            env_obj.win32_funcs = env_handle->win32_funcs;
+
+            if (env_handle->unix_handle)
+            {
+                ret = get_diag_field_unix_a( HandleType, &env_obj, RecNumber,
+                        DiagIdentifier, DiagInfo, BufferLength, StringLength );
+            }
+            else
+            {
+                ret = get_diag_field_win32_a( HandleType, &env_obj, RecNumber,
+                        DiagIdentifier, DiagInfo, BufferLength, StringLength );
+            }
+
+            if (ret != SQL_NO_DATA) break;
+        }
+    }
 
     TRACE("Returning %d\n", ret);
     unlock_object( obj );
@@ -2974,27 +3140,39 @@ SQLRETURN WINAPI SQLGetDiagRec(SQLSMALLINT HandleType, SQLHANDLE Handle, SQLSMAL
         ret = get_diag_rec_win32_a( HandleType, obj, RecNumber, SqlState, NativeError, MessageText, BufferLength,
                                     TextLength );
     }
+    else if (HandleType == SQL_HANDLE_ENV)
+    {
+        struct environment *env = (struct environment *)obj;
+        struct env_handle *env_handle;
+
+        LIST_FOR_EACH_ENTRY( env_handle, &env->env_handles, struct env_handle, entry )
+        {
+            struct object env_obj;
+
+            env_obj.unix_handle = env_handle->unix_handle;
+            env_obj.win32_handle = env_handle->win32_handle;
+            env_obj.win32_funcs = env_handle->win32_funcs;
+
+            if (env_handle->unix_handle)
+            {
+                ret = get_diag_rec_unix_a( HandleType, &env_obj, RecNumber, SqlState,
+                        NativeError, MessageText, BufferLength, TextLength );
+            }
+            else
+            {
+                ret = get_diag_rec_win32_a( HandleType, &env_obj, RecNumber, SqlState,
+                        NativeError, MessageText, BufferLength, TextLength );
+            }
+
+            if (ret != SQL_NO_DATA) break;
+        }
+    }
 
     TRACE("Returning %d\n", ret);
     unlock_object( obj );
     return ret;
 }
 
-static SQLRETURN get_env_attr_unix( struct environment *env, SQLINTEGER attr, SQLPOINTER value, SQLINTEGER buflen,
-                                    SQLINTEGER *retlen )
-{
-    struct SQLGetEnvAttr_params params = { env->hdr.unix_handle, attr, value, buflen, retlen };
-    return ODBC_CALL( SQLGetEnvAttr, &params );
-}
-
-static SQLRETURN get_env_attr_win32( struct environment *env, SQLINTEGER attr, SQLPOINTER value, SQLINTEGER buflen,
-                                     SQLINTEGER *retlen )
-{
-    if (env->hdr.win32_funcs->SQLGetEnvAttr)
-        return env->hdr.win32_funcs->SQLGetEnvAttr( env->hdr.win32_handle, attr, value, buflen, retlen );
-    return SQL_ERROR;
-}
-
 /*************************************************************************
  *				SQLGetEnvAttr           [ODBC32.037]
  */
@@ -3009,31 +3187,20 @@ SQLRETURN WINAPI SQLGetEnvAttr(SQLHENV EnvironmentHandle, SQLINTEGER Attribute,
 
     if (!env) return SQL_INVALID_HANDLE;
 
-    if (env->hdr.unix_handle)
-    {
-        ret = get_env_attr_unix( env, Attribute, Value, BufferLength, StringLength );
-    }
-    else if (env->hdr.win32_handle)
-    {
-        ret = get_env_attr_win32( env, Attribute, Value, BufferLength, StringLength );
-    }
-    else
+    switch (Attribute)
     {
-        switch (Attribute)
-        {
-        case SQL_ATTR_CONNECTION_POOLING:
-            *(SQLINTEGER *)Value = SQL_CP_OFF;
-            break;
+    case SQL_ATTR_CONNECTION_POOLING:
+        *(SQLINTEGER *)Value = SQL_CP_OFF;
+        break;
 
-        case SQL_ATTR_ODBC_VERSION:
-            *(SQLINTEGER *)Value = env->attr_version;
-            break;
+    case SQL_ATTR_ODBC_VERSION:
+        *(SQLINTEGER *)Value = env->attr_version;
+        break;
 
-        default:
-            FIXME( "unhandled attribute %d\n", Attribute );
-            ret = SQL_ERROR;
-            break;
-        }
+    default:
+        FIXME( "unhandled attribute %d\n", Attribute );
+        ret = SQL_ERROR;
+        break;
     }
 
     TRACE("Returning %d\n", ret);
@@ -3325,6 +3492,19 @@ static SQLRETURN get_stmt_option_win32( struct statement *stmt, SQLUSMALLINT opt
 {
     if (stmt->hdr.win32_funcs->SQLGetStmtOption)
         return stmt->hdr.win32_funcs->SQLGetStmtOption( stmt->hdr.win32_handle, option, value );
+
+    if (stmt->hdr.win32_funcs->SQLGetStmtAttrW)
+    {
+        switch (option)
+        {
+            case SQL_QUERY_TIMEOUT:
+            case SQL_MAX_LENGTH:
+                return stmt->hdr.win32_funcs->SQLGetStmtAttrW( stmt->hdr.win32_handle, option, value, 0, NULL );
+            default:
+                FIXME("Unsupported option %d.\n", option);
+        }
+    }
+
     return SQL_ERROR;
 }
 
@@ -3665,10 +3845,12 @@ SQLRETURN WINAPI SQLSetConnectAttr(SQLHDBC ConnectionHandle, SQLINTEGER Attribut
         {
         case SQL_ATTR_CONNECTION_TIMEOUT:
             con->attr_con_timeout = (UINT32)(ULONG_PTR)Value;
+            con->con_timeout_set = TRUE;
             break;
 
         case SQL_ATTR_LOGIN_TIMEOUT:
             con->attr_login_timeout = (UINT32)(ULONG_PTR)Value;
+            con->login_timeout_set = TRUE;
             break;
 
         default:
@@ -3918,19 +4100,6 @@ SQLRETURN WINAPI SQLSetDescRec(SQLHDESC DescriptorHandle, SQLSMALLINT RecNumber,
     return ret;
 }
 
-static SQLRETURN set_env_attr_unix( struct environment *env, SQLINTEGER attr, SQLPOINTER value, SQLINTEGER len )
-{
-    struct SQLSetEnvAttr_params params = { env->hdr.unix_handle, attr, value, len };
-    return ODBC_CALL( SQLSetEnvAttr, &params );
-}
-
-static SQLRETURN set_env_attr_win32( struct environment *env, SQLINTEGER attr, SQLPOINTER value, SQLINTEGER len )
-{
-    if (env->hdr.win32_funcs->SQLSetEnvAttr)
-        return env->hdr.win32_funcs->SQLSetEnvAttr( env->hdr.win32_handle, attr, value, len );
-    return SQL_ERROR;
-}
-
 /*************************************************************************
  *				SQLSetEnvAttr           [ODBC32.075]
  */
@@ -3949,31 +4118,25 @@ SQLRETURN WINAPI SQLSetEnvAttr(SQLHENV EnvironmentHandle, SQLINTEGER Attribute,
         return SQL_SUCCESS;
     }
 
-    if (env->hdr.unix_handle)
-    {
-        ret = set_env_attr_unix( env, Attribute, Value, StringLength );
-    }
-    else if (env->hdr.win32_handle)
-    {
-        ret = set_env_attr_win32( env, Attribute, Value, StringLength );
-    }
-    else
+    switch (Attribute)
     {
-        switch (Attribute)
+    case SQL_ATTR_ODBC_VERSION:
+        if (!list_empty( &env->hdr.children ))
         {
-        case SQL_ATTR_ODBC_VERSION:
-            env->attr_version = (UINT32)(ULONG_PTR)Value;
-            break;
+            FIXME( "report S1010 error\n" );
+            return SQL_ERROR;
+        }
+        env->attr_version = (UINT32)(ULONG_PTR)Value;
+        break;
 
-        case SQL_ATTR_CONNECTION_POOLING:
-            FIXME("Ignore Pooling value\n");
-            break;
+    case SQL_ATTR_CONNECTION_POOLING:
+        FIXME("Ignore Pooling value\n");
+        break;
 
-        default:
-            FIXME( "unhandled attribute %d\n", Attribute );
-            ret = SQL_ERROR;
-            break;
-        }
+    default:
+        FIXME( "unhandled attribute %d\n", Attribute );
+        ret = SQL_ERROR;
+        break;
     }
 
     TRACE("Returning %d\n", ret);
@@ -4202,6 +4365,19 @@ static SQLRETURN set_stmt_option_win32( struct statement *stmt, SQLUSMALLINT opt
 {
     if (stmt->hdr.win32_funcs->SQLSetStmtOption)
         return stmt->hdr.win32_funcs->SQLSetStmtOption( stmt->hdr.win32_handle, option, value );
+
+    if (stmt->hdr.win32_funcs->SQLSetStmtAttrW)
+    {
+        switch (option)
+        {
+            case SQL_QUERY_TIMEOUT:
+            case SQL_MAX_LENGTH:
+                return stmt->hdr.win32_funcs->SQLSetStmtAttrW( stmt->hdr.win32_handle, option, (SQLPOINTER)value, 0 );
+            default:
+                FIXME("Unsupported option %d.\n", option);
+        }
+    }
+
     return SQL_ERROR;
 }
 
@@ -4437,22 +4613,22 @@ SQLRETURN WINAPI SQLTables(SQLHSTMT StatementHandle, SQLCHAR *CatalogName, SQLSM
     return ret;
 }
 
-static SQLRETURN transact_unix( struct environment *env, struct connection *con, SQLUSMALLINT completion )
+static SQLRETURN transact_unix( struct connection *con, SQLUSMALLINT completion )
 {
-    struct SQLTransact_params params = { env ? env->hdr.unix_handle : 0, con ? con->hdr.unix_handle : 0, completion };
+    struct SQLTransact_params params = { 0, con->hdr.unix_handle, completion };
     return ODBC_CALL( SQLTransact, &params );
 }
 
-static SQLRETURN transact_win32( struct environment *env, struct connection *con, SQLUSMALLINT completion )
+static SQLRETURN transact_win32( struct connection *con, SQLUSMALLINT completion )
 {
-    const struct win32_funcs *win32_funcs;
+    const struct win32_funcs *funcs = con->hdr.win32_funcs;
+
+    if (funcs->SQLTransact)
+        return funcs->SQLTransact( NULL, con->hdr.win32_handle, completion );
 
-    if (env) win32_funcs = env->hdr.win32_funcs;
-    else win32_funcs = con->hdr.win32_funcs;
+    if (funcs->SQLEndTran)
+        return funcs->SQLEndTran( SQL_HANDLE_DBC, con->hdr.win32_handle, completion );
 
-    if (win32_funcs->SQLTransact)
-        return win32_funcs->SQLTransact( env ? env->hdr.win32_handle : NULL, con ? con->hdr.win32_handle : NULL,
-                                         completion );
     return SQL_ERROR;
 }
 
@@ -4463,20 +4639,37 @@ SQLRETURN WINAPI SQLTransact(SQLHENV EnvironmentHandle, SQLHDBC ConnectionHandle
 {
     struct environment *env = (struct environment *)lock_object( EnvironmentHandle, SQL_HANDLE_ENV );
     struct connection *con = (struct connection *)lock_object( ConnectionHandle, SQL_HANDLE_DBC );
-    SQLRETURN ret = SQL_ERROR;
+    SQLRETURN ret = SQL_SUCCESS;
 
     TRACE("(EnvironmentHandle %p, ConnectionHandle %p, CompletionType %d)\n", EnvironmentHandle, ConnectionHandle,
           CompletionType);
 
     if (!env && !con) return SQL_INVALID_HANDLE;
 
-    if ((env && env->hdr.unix_handle) || (con && con->hdr.unix_handle))
+    if (con && con->hdr.unix_handle)
     {
-        ret = transact_unix( env, con, CompletionType );
+        ret = transact_unix( con, CompletionType );
     }
-    else if ((env && env->hdr.win32_handle) || (con && con->hdr.win32_handle))
+    else if (con)
     {
-        ret = transact_win32( env, con, CompletionType );
+        ret = transact_win32( con, CompletionType );
+    }
+    else
+    {
+        struct connection *cur;
+
+        LIST_FOR_EACH_ENTRY( cur, &env->hdr.children, struct connection, hdr.entry )
+        {
+            EnterCriticalSection( &cur->hdr.cs );
+            /* TODO: we should call SQLTransact depending on connection state */
+            if (cur->hdr.unix_handle)
+                ret = transact_unix( cur, CompletionType );
+            else
+                ret = transact_win32( cur, CompletionType );
+            LeaveCriticalSection( &cur->hdr.cs );
+
+            if (ret != SQL_SUCCESS) break;
+        }
     }
 
     TRACE("Returning %d\n", ret);
@@ -4701,29 +4894,11 @@ SQLRETURN WINAPI SQLBrowseConnect(SQLHDBC ConnectionHandle, SQLCHAR *InConnectio
         goto done;
     }
 
-    if (has_suffix( filename, L".dll" ))
-    {
-        if (!(con->hdr.win32_funcs = con->hdr.parent->win32_funcs = load_driver( filename )))
-        {
-            WARN( "failed to load driver %s\n", debugstr_w(filename) );
-            goto done;
-        }
-        TRACE( "using Windows driver %s\n", debugstr_w(filename) );
-
-        if (!SUCCESS((ret = create_env( (struct environment *)con->hdr.parent, FALSE )))) goto done;
-        if (!SUCCESS((ret = create_con( con )))) goto done;
-
+    if (!SUCCESS((ret = prepare_connection( filename, con )))) goto done;
+    if (con->hdr.win32_handle)
         ret = browse_connect_win32_a( con, strA, StringLength1, OutConnectionString, BufferLength, StringLength2 );
-    }
     else
-    {
-        TRACE( "using Unix driver %s\n", debugstr_w(filename) );
-
-        if (!SUCCESS((ret = create_env( (struct environment *)con->hdr.parent, TRUE )))) goto done;
-        if (!SUCCESS((ret = create_con( con )))) goto done;
-
         ret = browse_connect_unix_a( con, strA, StringLength1, OutConnectionString, BufferLength, StringLength2 );
-    }
 
 done:
     free( strA );
@@ -5850,28 +6025,14 @@ SQLRETURN WINAPI SQLDriverConnect(SQLHDBC ConnectionHandle, SQLHWND WindowHandle
         goto done;
     }
 
-    if (has_suffix( filename, L".dll" ))
+    if (!SUCCESS((ret = prepare_connection( filename, con )))) goto done;
+    if (con->hdr.win32_handle)
     {
-        if (!(con->hdr.win32_funcs = con->hdr.parent->win32_funcs = load_driver( filename )))
-        {
-            WARN( "failed to load driver %s\n", debugstr_w(filename) );
-            goto done;
-        }
-        TRACE( "using Windows driver %s\n", debugstr_w(filename) );
-
-        if (!SUCCESS((ret = create_env( (struct environment *)con->hdr.parent, FALSE )))) goto done;
-        if (!SUCCESS((ret = create_con( con )))) goto done;
-
         ret = driver_connect_win32_a( con, WindowHandle, strA, Length, OutConnectionString, BufferLength, Length2,
                                       DriverCompletion );
     }
     else
     {
-        TRACE( "using Unix driver %s\n", debugstr_w(filename) );
-
-        if (!SUCCESS((ret = create_env( (struct environment *)con->hdr.parent, TRUE )))) goto done;
-        if (!SUCCESS((ret = create_con( con )))) goto done;
-
         ret = driver_connect_unix_a( con, WindowHandle, strA, Length, OutConnectionString, BufferLength, Length2,
                                      DriverCompletion );
     }
@@ -6071,29 +6232,11 @@ SQLRETURN WINAPI SQLConnectW(SQLHDBC ConnectionHandle, SQLWCHAR *ServerName, SQL
         goto done;
     }
 
-    if (has_suffix( filename, L".dll" ))
-    {
-        if (!(con->hdr.win32_funcs = con->hdr.parent->win32_funcs = load_driver( filename )))
-        {
-            WARN( "failed to load driver %s\n", debugstr_w(filename) );
-            goto done;
-        }
-        TRACE( "using Windows driver %s\n", debugstr_w(filename) );
-
-        if (!SUCCESS((ret = create_env( (struct environment *)con->hdr.parent, FALSE )))) goto done;
-        if (!SUCCESS((ret = create_con( con )))) goto done;
-
+    if (!SUCCESS((ret = prepare_connection( filename, con )))) goto done;
+    if (con->hdr.win32_handle)
         ret = connect_win32_w( con, ServerName, NameLength1, UserName, NameLength2, Authentication, NameLength3 );
-    }
     else
-    {
-        TRACE( "using Unix driver %s\n", debugstr_w(filename) );
-
-        if (!SUCCESS((ret = create_env( (struct environment *)con->hdr.parent, TRUE )))) goto done;
-        if (!SUCCESS((ret = create_con( con )))) goto done;
-
         ret = connect_unix_w( con, ServerName, NameLength1, UserName, NameLength2, Authentication, NameLength3 );
-    }
 
 done:
     free( filename );
@@ -6161,26 +6304,26 @@ SQLRETURN WINAPI SQLDescribeColW(SQLHSTMT StatementHandle, SQLUSMALLINT ColumnNu
     return ret;
 }
 
-static SQLRETURN error_unix_w( struct environment *env, struct connection *con, struct statement *stmt, SQLWCHAR *state,
+static SQLRETURN error_unix_w( struct env_handle *env, struct connection *con, struct statement *stmt, SQLWCHAR *state,
                                SQLINTEGER *native_err, SQLWCHAR *msg, SQLSMALLINT buflen, SQLSMALLINT *retlen )
 {
-    struct SQLErrorW_params params = { env ? env->hdr.unix_handle : 0, con ? con->hdr.unix_handle : 0,
+    struct SQLErrorW_params params = { env ? env->unix_handle : 0, con ? con->hdr.unix_handle : 0,
                                        stmt ? stmt->hdr.unix_handle : 0, state, native_err, msg, buflen, retlen };
     return ODBC_CALL( SQLErrorW, &params );
 }
 
-static SQLRETURN error_win32_w( struct environment *env, struct connection *con, struct statement *stmt, SQLWCHAR *state,
+static SQLRETURN error_win32_w( struct env_handle *env, struct connection *con, struct statement *stmt, SQLWCHAR *state,
                                 SQLINTEGER *native_err, SQLWCHAR *msg, SQLSMALLINT buflen, SQLSMALLINT *retlen )
 {
     const struct win32_funcs *win32_funcs;
     SQLRETURN ret;
 
-    if (env) win32_funcs = env->hdr.win32_funcs;
+    if (env) win32_funcs = env->win32_funcs;
     else if (con) win32_funcs = con->hdr.win32_funcs;
     else win32_funcs = stmt->hdr.win32_funcs;
 
     if (win32_funcs->SQLErrorW)
-        return win32_funcs->SQLErrorW( env ? env->hdr.win32_handle : NULL, con ? con->hdr.win32_handle : NULL,
+        return win32_funcs->SQLErrorW( env ? env->win32_handle : NULL, con ? con->hdr.win32_handle : NULL,
                                        stmt ? stmt->hdr.win32_handle : NULL, state, native_err, msg, buflen, retlen );
     if (win32_funcs->SQLError)
     {
@@ -6188,7 +6331,7 @@ static SQLRETURN error_win32_w( struct environment *env, struct connection *con,
         SQLSMALLINT lenA;
 
         if (!(msgA = malloc( buflen * sizeof(*msgA) ))) return SQL_ERROR;
-        ret = win32_funcs->SQLError( env ? env->hdr.win32_handle : NULL, con ? con->hdr.win32_handle : NULL,
+        ret = win32_funcs->SQLError( env ? env->win32_handle : NULL, con ? con->hdr.win32_handle : NULL,
                 stmt ? stmt->hdr.win32_handle : NULL, stateA, native_err, msgA, buflen, &lenA );
         if (SUCCESS( ret ))
         {
@@ -6217,7 +6360,7 @@ SQLRETURN WINAPI SQLErrorW(SQLHENV EnvironmentHandle, SQLHDBC ConnectionHandle,
     struct environment *env = (struct environment *)lock_object( EnvironmentHandle, SQL_HANDLE_ENV );
     struct connection *con = (struct connection *)lock_object( ConnectionHandle, SQL_HANDLE_DBC );
     struct statement *stmt = (struct statement *)lock_object( StatementHandle, SQL_HANDLE_STMT );
-    SQLRETURN ret = SQL_ERROR;
+    SQLRETURN ret = SQL_NO_DATA;
 
     TRACE("(EnvironmentHandle %p, ConnectionHandle %p, StatementHandle %p, SqlState %p, NativeError %p,"
           " MessageText %p, BufferLength %d, TextLength %p)\n", EnvironmentHandle, ConnectionHandle,
@@ -6225,13 +6368,33 @@ SQLRETURN WINAPI SQLErrorW(SQLHENV EnvironmentHandle, SQLHDBC ConnectionHandle,
 
     if (!env && !con && !stmt) return SQL_INVALID_HANDLE;
 
-    if ((env && env->hdr.unix_handle) || (con && con->hdr.unix_handle) || (stmt && stmt->hdr.unix_handle))
+    if ((con && con->hdr.unix_handle) || (stmt && stmt->hdr.unix_handle))
     {
-        ret = error_unix_w( env, con, stmt, SqlState, NativeError, MessageText, BufferLength, TextLength );
+        ret = error_unix_w( NULL, con, stmt, SqlState, NativeError, MessageText, BufferLength, TextLength );
     }
-    else if ((env && env->hdr.win32_handle) || (con && con->hdr.win32_handle) || (stmt && stmt->hdr.win32_handle))
+    else if ((con && con->hdr.win32_handle) || (stmt && stmt->hdr.win32_handle))
     {
-        ret = error_win32_w( env, con, stmt, SqlState, NativeError, MessageText, BufferLength, TextLength );
+        ret = error_win32_w( NULL, con, stmt, SqlState, NativeError, MessageText, BufferLength, TextLength );
+    }
+    else if (env)
+    {
+        struct env_handle *env_handle;
+
+        LIST_FOR_EACH_ENTRY( env_handle, &env->env_handles, struct env_handle, entry )
+        {
+            if (env_handle->unix_handle)
+            {
+                ret = error_unix_w( env_handle, NULL, NULL, SqlState,
+                        NativeError, MessageText, BufferLength, TextLength );
+            }
+            else
+            {
+                ret = error_win32_w( env_handle, NULL, NULL, SqlState,
+                        NativeError, MessageText, BufferLength, TextLength );
+            }
+
+            if (ret != SQL_NO_DATA) break;
+        }
     }
 
     if (SUCCESS( ret ))
@@ -6737,7 +6900,7 @@ SQLRETURN WINAPI SQLGetDiagFieldW(SQLSMALLINT HandleType, SQLHANDLE Handle, SQLS
                                   SQLSMALLINT *StringLength)
 {
     struct object *obj = lock_object( Handle, HandleType );
-    SQLRETURN ret = SQL_ERROR;
+    SQLRETURN ret = SQL_NO_DATA;
 
     TRACE("(HandleType %d, Handle %p, RecNumber %d, DiagIdentifier %d, DiagInfo %p, BufferLength %d,"
           " StringLength %p)\n", HandleType, Handle, RecNumber, DiagIdentifier, DiagInfo, BufferLength, StringLength);
@@ -6754,6 +6917,33 @@ SQLRETURN WINAPI SQLGetDiagFieldW(SQLSMALLINT HandleType, SQLHANDLE Handle, SQLS
         ret = get_diag_field_win32_w( HandleType, obj, RecNumber, DiagIdentifier, DiagInfo, BufferLength,
                                       StringLength );
     }
+    else if (HandleType == SQL_HANDLE_ENV)
+    {
+        struct environment *env = (struct environment *)obj;
+        struct env_handle *env_handle;
+
+        LIST_FOR_EACH_ENTRY( env_handle, &env->env_handles, struct env_handle, entry )
+        {
+            struct object env_obj;
+
+            env_obj.unix_handle = env_handle->unix_handle;
+            env_obj.win32_handle = env_handle->win32_handle;
+            env_obj.win32_funcs = env_handle->win32_funcs;
+
+            if (env_handle->unix_handle)
+            {
+                ret = get_diag_field_unix_w( HandleType, &env_obj, RecNumber,
+                        DiagIdentifier, DiagInfo, BufferLength, StringLength );
+            }
+            else
+            {
+                ret = get_diag_field_win32_w( HandleType, &env_obj, RecNumber,
+                        DiagIdentifier, DiagInfo, BufferLength, StringLength );
+            }
+
+            if (ret != SQL_NO_DATA) break;
+        }
+    }
 
     TRACE("Returning %d\n", ret);
     unlock_object( obj );
@@ -6839,6 +7029,33 @@ SQLRETURN WINAPI SQLGetDiagRecW(SQLSMALLINT HandleType, SQLHANDLE Handle, SQLSMA
         ret = get_diag_rec_win32_w( HandleType, obj, RecNumber, SqlState, NativeError, MessageText, BufferLength,
                                     TextLength );
     }
+    else if (HandleType == SQL_HANDLE_ENV)
+    {
+        struct environment *env = (struct environment *)obj;
+        struct env_handle *env_handle;
+
+        LIST_FOR_EACH_ENTRY( env_handle, &env->env_handles, struct env_handle, entry )
+        {
+            struct object env_obj;
+
+            env_obj.unix_handle = env_handle->unix_handle;
+            env_obj.win32_handle = env_handle->win32_handle;
+            env_obj.win32_funcs = env_handle->win32_funcs;
+
+            if (env_handle->unix_handle)
+            {
+                ret = get_diag_rec_unix_w( HandleType, &env_obj, RecNumber, SqlState,
+                        NativeError, MessageText, BufferLength, TextLength );
+            }
+            else
+            {
+                ret = get_diag_rec_win32_w( HandleType, &env_obj, RecNumber, SqlState,
+                        NativeError, MessageText, BufferLength, TextLength );
+            }
+
+            if (ret != SQL_NO_DATA) break;
+        }
+    }
 
     TRACE("Returning %d\n", ret);
     unlock_object( obj );
@@ -6959,10 +7176,12 @@ SQLRETURN WINAPI SQLSetConnectAttrW(SQLHDBC ConnectionHandle, SQLINTEGER Attribu
         {
         case SQL_ATTR_CONNECTION_TIMEOUT:
             con->attr_con_timeout = (UINT32)(ULONG_PTR)Value;
+            con->con_timeout_set = TRUE;
             break;
 
         case SQL_ATTR_LOGIN_TIMEOUT:
             con->attr_login_timeout = (UINT32)(ULONG_PTR)Value;
+            con->login_timeout_set = TRUE;
             break;
 
         default:
@@ -7126,28 +7345,14 @@ SQLRETURN WINAPI SQLDriverConnectW(SQLHDBC ConnectionHandle, SQLHWND WindowHandl
         goto done;
     }
 
-    if (has_suffix( filename, L".dll" ))
+    if (!SUCCESS((ret = prepare_connection( filename, con )))) goto done;
+    if (con->hdr.win32_handle)
     {
-        if (!(con->hdr.win32_funcs = con->hdr.parent->win32_funcs = load_driver( filename )))
-        {
-            WARN( "failed to load driver %s\n", debugstr_w(filename) );
-            goto done;
-        }
-        TRACE( "using Windows driver %s\n", debugstr_w(filename) );
-
-        if (!SUCCESS((ret = create_env( (struct environment *)con->hdr.parent, FALSE )))) goto done;
-        if (!SUCCESS((ret = create_con( con )))) goto done;
-
         ret = driver_connect_win32_w( con, WindowHandle, InConnectionString, Length, OutConnectionString,
                                       BufferLength, Length2, DriverCompletion );
     }
     else
     {
-        TRACE( "using Unix driver %s\n", debugstr_w(filename) );
-
-        if (!SUCCESS((ret = create_env( (struct environment *)con->hdr.parent, TRUE )))) goto done;
-        if (!SUCCESS((ret = create_con( con )))) goto done;
-
         ret = driver_connect_unix_w( con, WindowHandle, InConnectionString, Length, OutConnectionString,
                                      BufferLength, Length2, DriverCompletion );
     }
@@ -7583,28 +7788,14 @@ SQLRETURN WINAPI SQLBrowseConnectW(SQLHDBC ConnectionHandle, SQLWCHAR *InConnect
         goto done;
     }
 
-    if (has_suffix( filename, L".dll" ))
+    if (!SUCCESS((ret = prepare_connection( filename, con )))) goto done;
+    if (con->hdr.win32_handle)
     {
-        if (!(con->hdr.win32_funcs = con->hdr.parent->win32_funcs = load_driver( filename )))
-        {
-            WARN( "failed to load driver %s\n", debugstr_w(filename) );
-            goto done;
-        }
-        TRACE( "using Windows driver %s\n", debugstr_w(filename) );
-
-        if (!SUCCESS((ret = create_env( (struct environment *)con->hdr.parent, FALSE )))) goto done;
-        if (!SUCCESS((ret = create_con( con )))) goto done;
-
         ret = browse_connect_win32_w( con, connect_string, StringLength1, OutConnectionString, BufferLength,
                                       StringLength2 );
     }
     else
     {
-        TRACE( "using Unix driver %s\n", debugstr_w(filename) );
-
-        if (!SUCCESS((ret = create_env( (struct environment *)con->hdr.parent, TRUE )))) goto done;
-        if (!SUCCESS((ret = create_con( con )))) goto done;
-
         ret = browse_connect_unix_w( con, connect_string, StringLength1, OutConnectionString, BufferLength,
                                      StringLength2 );
     }
diff --git a/dlls/odbc32/tests/Makefile.in b/dlls/odbc32/tests/Makefile.in
index 3c5ee4e4f0d1..1ef46c294b7d 100644
--- a/dlls/odbc32/tests/Makefile.in
+++ b/dlls/odbc32/tests/Makefile.in
@@ -1,5 +1,7 @@
 TESTDLL   = odbc32.dll
-IMPORTS   = odbc32
+IMPORTS   = advapi32 odbc32 odbccp32
 
 SOURCES = \
+	driver.c \
+	driver.spec \
 	odbc32.c
diff --git a/dlls/odbc32/tests/driver.c b/dlls/odbc32/tests/driver.c
new file mode 100644
index 000000000000..7e3c8c7ade32
--- /dev/null
+++ b/dlls/odbc32/tests/driver.c
@@ -0,0 +1,180 @@
+/*
+ * ODBC test driver
+ *
+ * Copyright 2026 Piotr Caban
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#if 0
+#pragma makedep testdll
+#endif
+
+#include "windows.h"
+#include "sql.h"
+
+#include "driver.h"
+
+static struct driver_funcs *driver_funcs;
+
+void WINAPI init_funcs( struct driver_funcs *funcs )
+{
+    driver_funcs = funcs;
+}
+
+SQLRETURN WINAPI SQLAllocHandle( SQLSMALLINT type, SQLHANDLE input_handle, SQLHANDLE *out )
+{
+    return driver_funcs->SQLAllocHandle( type, input_handle, out );
+}
+
+SQLRETURN WINAPI SQLFreeHandle( SQLSMALLINT type, SQLHANDLE handle )
+{
+    return driver_funcs->SQLFreeHandle( type, handle );
+}
+
+SQLRETURN WINAPI SQLGetEnvAttr( SQLHENV env, SQLINTEGER attr, SQLPOINTER val,
+        SQLINTEGER len, SQLINTEGER *out_len )
+{
+    return driver_funcs->SQLGetEnvAttr( env, attr, val, len, out_len );
+}
+
+SQLRETURN WINAPI SQLSetEnvAttr( SQLHENV env, SQLINTEGER attr, SQLPOINTER val, SQLINTEGER len )
+{
+    return driver_funcs->SQLSetEnvAttr( env, attr, val, len );
+}
+
+SQLRETURN WINAPI SQLGetConnectAttr( SQLHDBC con, SQLINTEGER attr, SQLPOINTER val,
+        SQLINTEGER len, SQLINTEGER *out_len )
+{
+    return driver_funcs->SQLGetConnectAttr( con, attr, val, len, out_len );
+}
+
+SQLRETURN WINAPI SQLSetConnectAttr( SQLHDBC con, SQLINTEGER attr, SQLPOINTER val,
+        SQLINTEGER len )
+{
+    return driver_funcs->SQLSetConnectAttr( con, attr, val, len );
+}
+
+SQLRETURN WINAPI SQLGetInfo( SQLHDBC con, SQLUSMALLINT type, SQLPOINTER info,
+        SQLSMALLINT len, SQLSMALLINT *out_len )
+{
+    return driver_funcs->SQLGetInfo( con, type, info, len, out_len );
+}
+
+SQLRETURN WINAPI SQLConnect( SQLHDBC con, SQLCHAR *server, SQLSMALLINT server_len,
+        SQLCHAR *user, SQLSMALLINT user_len, SQLCHAR *auth, SQLSMALLINT auth_len )
+{
+    return driver_funcs->SQLConnect( con, server, server_len, user, user_len, auth, auth_len );
+}
+
+SQLRETURN WINAPI SQLDriverConnect( SQLHDBC con, SQLHWND win, SQLCHAR *in_con,
+        SQLSMALLINT in_con_len, SQLCHAR *out_con, SQLSMALLINT out_con_max_len,
+        SQLSMALLINT *out_con_len, SQLUSMALLINT completion )
+{
+    return driver_funcs->SQLDriverConnect( con, win, in_con, in_con_len,
+            out_con, out_con_max_len, out_con_len, completion );
+}
+
+SQLRETURN WINAPI SQLBrowseConnect( SQLHDBC con, SQLCHAR *in_con, SQLSMALLINT in_con_len,
+        SQLCHAR *out_con, SQLSMALLINT out_con_max_len, SQLSMALLINT *out_con_len )
+{
+    return driver_funcs->SQLBrowseConnect( con, in_con, in_con_len,
+            out_con, out_con_max_len, out_con_len );
+}
+
+SQLRETURN WINAPI SQLDisconnect( SQLHDBC con )
+{
+    return driver_funcs->SQLDisconnect( con );
+}
+
+SQLRETURN WINAPI SQLGetStmtAttr( SQLHSTMT stmt, SQLINTEGER attr,
+        SQLPOINTER val, SQLINTEGER max_len, SQLINTEGER *len )
+{
+    return driver_funcs->SQLGetStmtAttr( stmt, attr, val, max_len, len );
+}
+
+SQLRETURN WINAPI SQLSetStmtAttr( SQLHSTMT stmt, SQLINTEGER attr, SQLPOINTER val, SQLINTEGER len )
+{
+    return driver_funcs->SQLSetStmtAttr( stmt, attr, val, len );
+}
+
+SQLRETURN WINAPI SQLGetDiagField( SQLSMALLINT type, SQLHANDLE handle, SQLSMALLINT rec,
+        SQLSMALLINT identifier, SQLPOINTER info, SQLSMALLINT max_len, SQLSMALLINT *len )
+{
+    return driver_funcs->SQLGetDiagField( type, handle, rec, identifier, info, max_len, len );
+}
+
+SQLRETURN WINAPI SQLGetDiagRec( SQLSMALLINT type, SQLHANDLE handle,
+        SQLSMALLINT rec, SQLCHAR *state, SQLINTEGER *err, SQLCHAR *msg,
+        SQLSMALLINT max_len, SQLSMALLINT *len )
+{
+    return driver_funcs->SQLGetDiagRec( type, handle, rec, state, err, msg, max_len, len );
+}
+
+SQLRETURN WINAPI SQLExecDirect( SQLHSTMT stmt, SQLCHAR *cmd, SQLINTEGER len )
+{
+    return driver_funcs->SQLExecDirect( stmt, cmd, len );
+}
+
+SQLRETURN WINAPI SQLRowCount( SQLHSTMT stmt, SQLLEN *count )
+{
+    return driver_funcs->SQLRowCount( stmt, count );
+}
+
+SQLRETURN WINAPI SQLFetch( SQLHSTMT stmt )
+{
+    return driver_funcs->SQLFetch( stmt );
+}
+
+SQLRETURN WINAPI SQLGetData( SQLHSTMT stmt, SQLUSMALLINT col, SQLSMALLINT type,
+        SQLPOINTER val, SQLLEN max_len, SQLLEN *len )
+{
+    return driver_funcs->SQLGetData( stmt, col, type, val, max_len, len );
+}
+
+SQLRETURN WINAPI SQLBindCol( SQLHSTMT stmt, SQLUSMALLINT col, SQLSMALLINT type,
+        SQLPOINTER val, SQLLEN max_len, SQLLEN *len )
+{
+    return driver_funcs->SQLBindCol( stmt, col, type, val, max_len, len );
+}
+
+SQLRETURN WINAPI SQLPrepare( SQLHSTMT stmt, SQLCHAR *cmd, SQLINTEGER len )
+{
+    return driver_funcs->SQLPrepare( stmt, cmd, len );
+}
+
+SQLRETURN WINAPI SQLBindParameter( SQLHSTMT stmt, SQLUSMALLINT param,
+        SQLSMALLINT param_type, SQLSMALLINT ctype, SQLSMALLINT type, SQLULEN size,
+        SQLSMALLINT decimal_digits, SQLPOINTER val, SQLLEN max_len, SQLLEN *len )
+{
+    return driver_funcs->SQLBindParameter( stmt, param, param_type, ctype,
+            type, size, decimal_digits, val, max_len, len );
+}
+
+SQLRETURN WINAPI SQLExecute( SQLHSTMT stmt )
+{
+    return driver_funcs->SQLExecute( stmt );
+}
+
+SQLRETURN WINAPI SQLSetDescField( SQLHDESC desc, SQLSMALLINT rec,
+        SQLSMALLINT field, SQLPOINTER val, SQLINTEGER len )
+{
+    return driver_funcs->SQLSetDescField( desc, rec, field, val, len );
+}
+
+SQLRETURN WINAPI SQLFreeStmt( SQLHSTMT stmt, SQLUSMALLINT option )
+{
+    return driver_funcs->SQLFreeStmt( stmt, option );
+}
diff --git a/dlls/odbc32/tests/driver.h b/dlls/odbc32/tests/driver.h
new file mode 100644
index 000000000000..1f04f464ace2
--- /dev/null
+++ b/dlls/odbc32/tests/driver.h
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2026 Piotr Caban
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+struct driver_funcs
+{
+    SQLRETURN (WINAPI *SQLAllocHandle)(SQLSMALLINT, SQLHANDLE, SQLHANDLE*);
+    SQLRETURN (WINAPI *SQLFreeHandle)(SQLSMALLINT, SQLHANDLE);
+    SQLRETURN (WINAPI *SQLGetEnvAttr)(SQLHENV, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*);
+    SQLRETURN (WINAPI *SQLSetEnvAttr)(SQLHENV, SQLINTEGER, SQLPOINTER, SQLINTEGER);
+    SQLRETURN (WINAPI *SQLGetConnectAttr)(SQLHDBC, SQLINTEGER, SQLPOINTER,
+            SQLINTEGER, SQLINTEGER*);
+    SQLRETURN (WINAPI *SQLSetConnectAttr)(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER);
+    SQLRETURN (WINAPI *SQLGetInfo)(SQLHDBC, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*);
+    SQLRETURN (WINAPI *SQLConnect)(SQLHDBC, SQLCHAR*, SQLSMALLINT,
+            SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT);
+    SQLRETURN (WINAPI *SQLDriverConnect)(SQLHDBC, SQLHWND, SQLCHAR*, SQLSMALLINT,
+            SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLUSMALLINT);
+    SQLRETURN (WINAPI *SQLBrowseConnect)(SQLHDBC, SQLCHAR*, SQLSMALLINT,
+            SQLCHAR*, SQLSMALLINT, SQLSMALLINT*);
+    SQLRETURN (WINAPI *SQLDisconnect)(SQLHDBC);
+    SQLRETURN (WINAPI *SQLGetStmtAttr)(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*);
+    SQLRETURN (WINAPI *SQLSetStmtAttr)(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER);
+    SQLRETURN (WINAPI *SQLGetDiagField)(SQLSMALLINT, SQLHANDLE, SQLSMALLINT,
+            SQLSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*);
+    SQLRETURN (WINAPI *SQLGetDiagRec)(SQLSMALLINT, SQLHANDLE, SQLSMALLINT,
+            SQLCHAR*, SQLINTEGER*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*);
+    SQLRETURN (WINAPI *SQLExecDirect)(SQLHSTMT, SQLCHAR*, SQLINTEGER);
+    SQLRETURN (WINAPI *SQLRowCount)(SQLHSTMT, SQLLEN*);
+    SQLRETURN (WINAPI *SQLFetch)(SQLHSTMT);
+    SQLRETURN (WINAPI *SQLGetData)(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT,
+            SQLPOINTER, SQLLEN, SQLLEN*);
+    SQLRETURN (WINAPI *SQLBindCol)(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT,
+            SQLPOINTER, SQLLEN, SQLLEN*);
+    SQLRETURN (WINAPI *SQLPrepare)(SQLHSTMT, SQLCHAR*, SQLINTEGER);
+    SQLRETURN (WINAPI *SQLBindParameter)(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT, SQLSMALLINT,
+            SQLSMALLINT, SQLULEN, SQLSMALLINT, SQLPOINTER, SQLLEN, SQLLEN*);
+    SQLRETURN (WINAPI *SQLExecute)(SQLHSTMT);
+    SQLRETURN (WINAPI *SQLSetDescField)(SQLHDESC, SQLSMALLINT,
+            SQLSMALLINT, SQLPOINTER, SQLINTEGER);
+    SQLRETURN (WINAPI *SQLFreeStmt)(SQLHSTMT, SQLUSMALLINT);
+};
diff --git a/dlls/odbc32/tests/driver.spec b/dlls/odbc32/tests/driver.spec
new file mode 100644
index 000000000000..99359bf8ee87
--- /dev/null
+++ b/dlls/odbc32/tests/driver.spec
@@ -0,0 +1,27 @@
+@ stdcall init_funcs(ptr)
+
+@ stdcall SQLAllocHandle(long long ptr)
+@ stdcall SQLBindCol(long long long ptr long ptr)
+@ stdcall SQLBindParameter(long long long long long long long ptr long ptr)
+@ stdcall SQLBrowseConnect(long str long ptr long ptr)
+@ stdcall SQLConnect(long str long str long str long)
+@ stdcall SQLDisconnect(long)
+@ stdcall SQLDriverConnect(long long str long ptr long ptr long)
+@ stdcall SQLExecDirect(long str long)
+@ stdcall SQLExecute(long)
+@ stdcall SQLFetch(long)
+@ stdcall SQLFreeHandle(long long)
+@ stdcall SQLFreeStmt(long long )
+@ stdcall SQLGetConnectAttr(long long ptr long ptr)
+@ stdcall SQLGetData(long long long ptr long ptr)
+@ stdcall SQLGetDiagField(long long long long ptr long ptr)
+@ stdcall SQLGetDiagRec(long long long ptr ptr ptr long ptr)
+@ stdcall SQLGetEnvAttr(long long ptr long ptr)
+@ stdcall SQLGetInfo(long long ptr long ptr)
+@ stdcall SQLGetStmtAttr(long long ptr long ptr)
+@ stdcall SQLPrepare(long str long)
+@ stdcall SQLRowCount(long ptr)
+@ stdcall SQLSetConnectAttr(long long ptr long)
+@ stdcall SQLSetDescField(long long long ptr long)
+@ stdcall SQLSetEnvAttr(long long ptr long)
+@ stdcall SQLSetStmtAttr(long long ptr long)
diff --git a/dlls/odbc32/tests/odbc32.c b/dlls/odbc32/tests/odbc32.c
index 499451f7182c..8b9b88d72dba 100644
--- a/dlls/odbc32/tests/odbc32.c
+++ b/dlls/odbc32/tests/odbc32.c
@@ -20,11 +20,600 @@
 
 #include "windef.h"
 #include "winbase.h"
+#include "winreg.h"
+#include "odbcinst.h"
 #include "sql.h"
 #include "sqlext.h"
 
+#include "driver.h"
+
 #include <wine/test.h>
 
+#define DEFINE_EXPECT(func) \
+    static BOOL expect_ ## func = FALSE, called_ ## func = FALSE
+
+#define SET_EXPECT(func) \
+    do { \
+        called_ ## func = FALSE; \
+        expect_ ## func = TRUE; \
+    } while(0)
+
+#define CHECK_EXPECT2(func) \
+    do { \
+        ok(expect_ ##func, "unexpected call " #func "\n"); \
+        called_ ## func = TRUE; \
+    }while(0)
+
+#define CHECK_EXPECT(func) \
+    do { \
+        CHECK_EXPECT2(func); \
+        expect_ ## func = FALSE; \
+    }while(0)
+
+#define CHECK_CALLED(func) \
+    do { \
+        ok(called_ ## func, "expected " #func "\n"); \
+        expect_ ## func = called_ ## func = FALSE; \
+    }while(0)
+
+#define CHECK_NOT_CALLED(func) \
+    do { \
+        ok(!called_ ## func, "unexpected " #func "\n"); \
+        expect_ ## func = called_ ## func = FALSE; \
+    }while(0)
+
+DEFINE_EXPECT( driver_SQLAllocHandle_env );
+DEFINE_EXPECT( driver_SQLAllocHandle_con );
+DEFINE_EXPECT( driver_SQLAllocHandle_stmt );
+DEFINE_EXPECT( driver_SQLFreeHandle_env );
+DEFINE_EXPECT( driver_SQLFreeHandle_con );
+DEFINE_EXPECT( driver_SQLFreeHandle_stmt );
+DEFINE_EXPECT( driver_SQLSetEnvAttr );
+DEFINE_EXPECT( driver_SQLGetInfo );
+DEFINE_EXPECT( driver_SQLGetInfo_SQL_DRIVER_ODBC_VER );
+DEFINE_EXPECT( driver_SQLConnect );
+DEFINE_EXPECT( driver_SQLGetConnectAttr );
+DEFINE_EXPECT( driver_SQLDisconnect );
+DEFINE_EXPECT( driver_SQLDriverConnect );
+DEFINE_EXPECT( driver_SQLBrowseConnect );
+DEFINE_EXPECT( driver_SQLGetStmtAttr );
+DEFINE_EXPECT( driver_SQLSetStmtAttr );
+DEFINE_EXPECT( driver_SQLGetDiagRec );
+DEFINE_EXPECT( driver_SQLExecDirect );
+DEFINE_EXPECT( driver_SQLRowCount );
+DEFINE_EXPECT( driver_SQLFetch );
+DEFINE_EXPECT( driver_SQLGetData );
+DEFINE_EXPECT( driver_SQLBindCol );
+DEFINE_EXPECT( driver_SQLPrepare );
+DEFINE_EXPECT( driver_SQLBindParameter );
+DEFINE_EXPECT( driver_SQLExecute );
+DEFINE_EXPECT( driver_SQLSetDescField );
+DEFINE_EXPECT( driver_SQLFreeStmt );
+
+static struct stmt_data
+{
+    BOOL created;
+    int rows_no;
+    int cur_row;
+    struct
+    {
+        int id;
+        char name[255];
+    } rows[2];
+
+    int fetch_size;
+    SQLULEN *rows_fetched;
+    SQLINTEGER *id_buf;
+    SQLLEN *id_len;
+    SQLCHAR *name_buf;
+    SQLLEN *name_len;
+} stmt_data;
+
+static SQLRETURN WINAPI driver_SQLAllocHandle( SQLSMALLINT type,
+        SQLHANDLE input_handle, SQLHANDLE *out )
+{
+    if (type == SQL_HANDLE_ENV) CHECK_EXPECT( driver_SQLAllocHandle_env );
+    else if (type == SQL_HANDLE_DBC) CHECK_EXPECT( driver_SQLAllocHandle_con );
+    else if (type == SQL_HANDLE_STMT) CHECK_EXPECT( driver_SQLAllocHandle_stmt );
+    else ok( 0, "SQLAllocHandle type = %d\n", type );
+
+    *out = (SQLHANDLE)(ULONG_PTR)type;
+    return SQL_SUCCESS;
+}
+
+static SQLRETURN WINAPI driver_SQLFreeHandle( SQLSMALLINT type, SQLHANDLE handle )
+{
+    if (type == SQL_HANDLE_ENV) CHECK_EXPECT( driver_SQLFreeHandle_env );
+    else if (type == SQL_HANDLE_DBC) CHECK_EXPECT( driver_SQLFreeHandle_con );
+    else if (type == SQL_HANDLE_STMT)
+    {
+        CHECK_EXPECT( driver_SQLFreeHandle_stmt );
+        stmt_data.fetch_size = 1;
+        stmt_data.rows_fetched = NULL;
+        stmt_data.id_buf = NULL;
+        stmt_data.id_len = NULL;
+        stmt_data.name_buf = NULL;
+        stmt_data.name_len = NULL;
+    }
+    else ok( 0, "SQLFreeHandle type = %d\n", type );
+
+    ok( (ULONG_PTR)handle == type, "handle = %p\n", handle );
+    return SQL_SUCCESS;
+}
+
+static SQLRETURN WINAPI driver_SQLGetEnvAttr( SQLHENV env, SQLINTEGER attr,
+        SQLPOINTER val, SQLINTEGER len, SQLINTEGER *out_len )
+{
+    ok( 0, "unexpected call\n" );
+    return SQL_ERROR;
+}
+
+static SQLRETURN WINAPI driver_SQLSetEnvAttr( SQLHENV env,
+        SQLINTEGER attr, SQLPOINTER val, SQLINTEGER len )
+{
+    CHECK_EXPECT( driver_SQLSetEnvAttr );
+    ok( (ULONG_PTR)env == SQL_HANDLE_ENV, "env = %p\n", env );
+    ok( attr == SQL_ATTR_ODBC_VERSION, "attr = %d\n", attr );
+    ok( val == (SQLPOINTER)SQL_OV_ODBC2, "val = %p\n", val );
+    ok( !len, "len = %d\n", len );
+    return SQL_SUCCESS;
+}
+
+static SQLRETURN WINAPI driver_SQLGetConnectAttr( SQLHDBC con, SQLINTEGER attr,
+        SQLPOINTER val, SQLINTEGER len, SQLINTEGER *out_len )
+{
+    CHECK_EXPECT( driver_SQLGetConnectAttr );
+    ok( attr == SQL_ATTR_LOGIN_TIMEOUT || attr == SQL_ATTR_CONNECTION_TIMEOUT, "attr = %d\n", attr );
+    ok( val != NULL, "val = %p\n", val );
+    ok( len == sizeof(SQLINTEGER), "len = %d\n", len );
+    todo_wine_if( attr == SQL_ATTR_LOGIN_TIMEOUT ) ok( out_len != NULL, "out_len = %p\n", out_len );
+
+    *(SQLINTEGER*)val = 0;
+    return SQL_SUCCESS;
+}
+
+static SQLRETURN WINAPI driver_SQLSetConnectAttr( SQLHDBC con, SQLINTEGER attr,
+        SQLPOINTER val, SQLINTEGER len )
+{
+    ok( 0, "unexpected call\n" );
+    return SQL_ERROR;
+}
+
+static SQLRETURN WINAPI driver_SQLGetInfo( SQLHDBC con, SQLUSMALLINT type,
+        SQLPOINTER info, SQLSMALLINT len, SQLSMALLINT *out_len )
+{
+    if (type == SQL_DRIVER_ODBC_VER)
+    {
+        CHECK_EXPECT( driver_SQLGetInfo_SQL_DRIVER_ODBC_VER );
+        ok( info != NULL, "info = %p\n", info );
+        todo_wine ok( len == 12, "len = %d\n", len );
+        ok( out_len != NULL, "out_len = %p\n", out_len );
+
+        strcpy( info, "03.00" );
+        *out_len = 5;
+        return SQL_SUCCESS;
+    }
+
+    CHECK_EXPECT2( driver_SQLGetInfo );
+    ok( type == SQL_CURSOR_COMMIT_BEHAVIOR || type == SQL_CURSOR_ROLLBACK_BEHAVIOR
+            || type == SQL_GETDATA_EXTENSIONS, "type = %d\n", type );
+    return SQL_ERROR;
+}
+
+static SQLRETURN WINAPI driver_SQLConnect( SQLHDBC con, SQLCHAR *server,
+        SQLSMALLINT server_len, SQLCHAR *user, SQLSMALLINT user_len,
+        SQLCHAR *auth, SQLSMALLINT auth_len )
+{
+    CHECK_EXPECT( driver_SQLConnect );
+
+    ok( (ULONG_PTR)con == SQL_HANDLE_DBC, "con = %p\n", con );
+    todo_wine ok( server_len == 12, "server_len = %d\n", server_len );
+    ok( !strncmp((char *)server, "winetest_dsn", 12), "server = %s\n",
+            debugstr_an((char *)server, server_len) );
+    ok( !strcmp((char *)user, "winetest"), "user = %s\n", user );
+    ok( user_len == SQL_NTS, "user_len = %d\n", user_len );
+    ok( !strcmp((char *)auth, "winetest"), "auth = %s\n", auth );
+    ok( auth_len == SQL_NTS, "auth_len = %d\n", auth_len );
+    return SQL_SUCCESS;
+}
+
+static SQLRETURN WINAPI driver_SQLDriverConnect( SQLHDBC con, SQLHWND win,
+        SQLCHAR *in_con, SQLSMALLINT in_con_len, SQLCHAR *out_con,
+        SQLSMALLINT out_con_max_len, SQLSMALLINT *out_con_len, SQLUSMALLINT completion )
+{
+    CHECK_EXPECT( driver_SQLDriverConnect );
+    ok( (ULONG_PTR)con == SQL_HANDLE_DBC, "con = %p\n", con );
+    ok( !win, "win = %p\n", win );
+    todo_wine ok( in_con_len == SQL_NTS, "in_con_len = %d\n", in_con_len );
+    todo_wine ok( !strcmp((char *)in_con, "DSN=winetest_dsn;UID=winetest;")
+            || !strcmp((char *)in_con, "DSN=winetest_dsn;"), "in_con = %s\n", in_con );
+    ok( out_con != NULL, "out_con = %p\n", out_con );
+    ok( out_con_max_len == 256, "out_con_max_len = %d\n", out_con_max_len );
+    ok( out_con_len != NULL, "out_con_len = %p\n", out_con_len );
+    ok( completion == SQL_DRIVER_NOPROMPT, "completion = %d\n", completion );
+
+    strcpy( (char *)out_con, (char *)in_con );
+    *out_con_len = strlen( (char *)in_con );
+    return SQL_SUCCESS;
+}
+
+static SQLRETURN WINAPI driver_SQLBrowseConnect( SQLHDBC con, SQLCHAR *in_con,
+        SQLSMALLINT in_con_len, SQLCHAR *out_con, SQLSMALLINT out_con_max_len,
+        SQLSMALLINT *out_con_len )
+{
+    CHECK_EXPECT( driver_SQLBrowseConnect );
+    ok( (ULONG_PTR)con == SQL_HANDLE_DBC, "con = %p\n", con );
+    todo_wine ok( in_con_len == 17, "in_con_len = %d\n", in_con_len );
+    todo_wine ok( !strncmp((char *)in_con, "DSN=winetest_dsn;", 17), "in_con = %s\n", in_con );
+    ok( out_con != NULL, "out_con = %p\n", out_con );
+    ok( out_con_max_len == 256, "out_con_max_len = %d\n", out_con_max_len );
+    ok( out_con_len != NULL, "out_con_len = %p\n", out_con_len );
+
+    memcpy( out_con, in_con, in_con_len );
+    *out_con_len = in_con_len;
+    return SQL_SUCCESS;
+}
+
+static SQLRETURN WINAPI driver_SQLDisconnect( SQLHDBC con )
+{
+    CHECK_EXPECT( driver_SQLDisconnect );
+    return SQL_SUCCESS;
+}
+
+static SQLRETURN WINAPI driver_SQLGetStmtAttr( SQLHSTMT stmt, SQLINTEGER attr,
+        SQLPOINTER val, SQLINTEGER max_len, SQLINTEGER *len )
+{
+    CHECK_EXPECT2( driver_SQLGetStmtAttr );
+    ok( (ULONG_PTR)stmt == SQL_HANDLE_STMT, "stmt = %p\n", stmt );
+    ok( attr == SQL_ATTR_APP_ROW_DESC || attr == SQL_ATTR_APP_PARAM_DESC
+            || attr == SQL_ATTR_IMP_ROW_DESC || attr == SQL_ATTR_IMP_PARAM_DESC, "attr = %x\n", attr);
+    ok( val != NULL, "val = %p\n", val );
+
+    *(SQLHDESC *)val = (SQLHDESC)(ULONG_PTR)attr;
+    return SQL_SUCCESS;
+}
+
+static SQLRETURN WINAPI driver_SQLSetStmtAttr( SQLHSTMT stmt, SQLINTEGER attr,
+        SQLPOINTER val, SQLINTEGER len )
+{
+    CHECK_EXPECT( driver_SQLSetStmtAttr );
+    ok( (ULONG_PTR)stmt == SQL_HANDLE_STMT, "stmt = %p\n", stmt );
+
+    switch (attr)
+    {
+    case SQL_ATTR_ROW_ARRAY_SIZE:
+        ok( (ULONG_PTR)val == 2, "val = %p\n", val );
+        ok( !len, "len = %d\n", len );
+
+        stmt_data.fetch_size = (ULONG_PTR)val;
+        break;
+    case SQL_ATTR_ROWS_FETCHED_PTR:
+        ok( val != NULL, "val = %p\n", val );
+        ok( !len, "len = %d\n", len );
+
+        stmt_data.rows_fetched = val;
+        break;
+    default:
+        todo_wine ok( 0, "unexpected attribute: %d\n", attr );
+        return SQL_ERROR;
+    }
+
+    return SQL_SUCCESS;
+}
+
+static SQLRETURN WINAPI driver_SQLGetDiagField( SQLSMALLINT type,
+        SQLHANDLE handle, SQLSMALLINT rec, SQLSMALLINT identifier,
+        SQLPOINTER info, SQLSMALLINT max_len, SQLSMALLINT *len )
+{
+    ok( 0, "unexpected call\n" );
+    return SQL_ERROR;
+}
+
+static SQLRETURN WINAPI driver_SQLGetDiagRec( SQLSMALLINT type, SQLHANDLE handle,
+        SQLSMALLINT rec, SQLCHAR *state, SQLINTEGER *err, SQLCHAR *msg,
+        SQLSMALLINT max_len, SQLSMALLINT *len )
+{
+    CHECK_EXPECT( driver_SQLGetDiagRec );
+    ok( type == SQL_HANDLE_DBC, "type = %d\n", type );
+    ok( (ULONG_PTR)handle == SQL_HANDLE_DBC, "handle = %p\n", handle );
+    ok( rec == 1, "rec = %d\n", rec );
+    ok( state != NULL, "state = %p\n", state );
+    ok( !err, "err = %p\n", err );
+    ok( !msg, "msg = %p\n", msg );
+    ok( !max_len, "max_len = %d\n", max_len );
+    ok( len != NULL, "len = %p\n", len );
+    return SQL_NO_DATA;
+}
+
+static SQLRETURN WINAPI driver_SQLExecDirect( SQLHSTMT stmt, SQLCHAR *cmd, SQLINTEGER len )
+{
+    CHECK_EXPECT( driver_SQLExecDirect );
+    ok( (ULONG_PTR)stmt == SQL_HANDLE_STMT, "stmt = %p\n", stmt );
+
+    if (!strncmp( (char *)cmd, "CREATE TABLE winetest ( Id int, Name varchar(255) )", len ))
+    {
+        ok( !stmt_data.created, "winetest table is already created\n" );
+        stmt_data.created = TRUE;
+        stmt_data.cur_row = -1;
+        stmt_data.fetch_size = 1;
+        return SQL_SUCCESS;
+    }
+
+    if (!strncmp( (char *)cmd, "INSERT INTO winetest VALUES (0, 'John')", len ))
+    {
+        ok (!stmt_data.rows_no, "rows_no = %d\n", stmt_data.rows_no );
+        stmt_data.rows[0].id = 0;
+        strcpy( stmt_data.rows[0].name, "John" );
+        stmt_data.rows_no++;
+        return SQL_SUCCESS;
+    }
+
+    if (!strncmp( (char *)cmd, "INSERT INTO winetest VALUES (1, 'Mary')", len ))
+    {
+        ok (stmt_data.rows_no == 1, "rows_no = %d\n", stmt_data.rows_no );
+        stmt_data.rows[1].id = 1;
+        strcpy( stmt_data.rows[1].name, "Mary" );
+        stmt_data.rows_no++;
+        return SQL_SUCCESS;
+    }
+
+    if (!strncmp( (char *)cmd, "SELECT * FROM winetest", len ))
+    {
+        stmt_data.cur_row = 0;
+        return SQL_SUCCESS;
+    }
+
+    if (!strncmp( (char *)cmd, "DROP TABLE winetest", len ))
+    {
+        memset( &stmt_data, 0, sizeof(stmt_data) );
+        return SQL_SUCCESS;
+    }
+
+    ok( 0, "unexpected statement: %s\n", wine_dbgstr_an((char *)cmd, len) );
+    return SQL_ERROR;
+}
+
+static SQLRETURN WINAPI driver_SQLRowCount( SQLHSTMT stmt, SQLLEN *count )
+{
+    CHECK_EXPECT( driver_SQLRowCount );
+    ok( (ULONG_PTR)stmt == SQL_HANDLE_STMT, "stmt = %p\n", stmt );
+    ok( count != NULL, "count = %p\n", count );
+
+    *count = stmt_data.rows_no;
+    return SQL_SUCCESS;
+}
+
+static SQLRETURN WINAPI driver_SQLFetch( SQLHSTMT stmt )
+{
+    int i, len, pos;
+
+    CHECK_EXPECT( driver_SQLFetch );
+    ok( (ULONG_PTR)stmt == SQL_HANDLE_STMT, "stmt = %p\n", stmt );
+    ok( stmt_data.cur_row + stmt_data.fetch_size <= stmt_data.rows_no,
+            "unexpected fetch\n");
+
+    pos = 0;
+    for (i = 0; i < stmt_data.fetch_size; i++)
+    {
+        if (stmt_data.id_buf)
+        {
+            stmt_data.id_buf[i] = stmt_data.rows[stmt_data.cur_row + i].id;
+            stmt_data.id_len[i] = sizeof(stmt_data.id_buf[i]);
+        }
+        if (stmt_data.name_buf)
+        {
+            len = strlen( stmt_data.rows[stmt_data.cur_row + i].name );
+            strcpy( (char *)stmt_data.name_buf + pos,
+                    stmt_data.rows[stmt_data.cur_row + i].name );
+            stmt_data.name_len[i] = len;
+            pos += len + 1;
+        }
+    }
+
+    if (stmt_data.rows_fetched)
+        *stmt_data.rows_fetched = stmt_data.fetch_size;
+    stmt_data.cur_row += stmt_data.fetch_size;
+    return SQL_SUCCESS;
+}
+
+static SQLRETURN WINAPI driver_SQLGetData( SQLHSTMT stmt, SQLUSMALLINT col,
+        SQLSMALLINT type, SQLPOINTER val, SQLLEN max_len, SQLLEN *len )
+{
+    CHECK_EXPECT( driver_SQLGetData );
+    ok( (ULONG_PTR)stmt == SQL_HANDLE_STMT, "stmt = %p\n", stmt );
+    ok( stmt_data.cur_row == 1, "cur_row = %d\n", stmt_data.cur_row );
+
+    ok( col == 1, "col = %d\n", col );
+    ok( type == SQL_C_SLONG, "type = %d\n", type );
+    ok( val != NULL, "val = %p\n", val );
+    ok( max_len == sizeof(SLONG), "max_len = %Id\n", max_len );
+    ok( len != NULL, "len = %p\n", len );
+
+    *(SLONG *)val = stmt_data.rows[stmt_data.cur_row - 1].id;
+    *len = sizeof(SLONG);
+    return SQL_SUCCESS;
+}
+
+static SQLRETURN WINAPI driver_SQLBindCol( SQLHSTMT stmt, SQLUSMALLINT col,
+        SQLSMALLINT type, SQLPOINTER val, SQLLEN max_len, SQLLEN *len )
+{
+    CHECK_EXPECT( driver_SQLBindCol );
+    ok( (ULONG_PTR)stmt == SQL_HANDLE_STMT, "stmt = %p\n", stmt );
+    ok( val != NULL, "val = %p\n", val );
+    ok( len != NULL, "len = %p\n", len );
+
+    if (col == 1)
+    {
+        ok( type == SQL_C_SLONG, "type = %d\n", type );
+        ok( max_len == 2 * sizeof(int), "max_len = %Id\n", max_len );
+
+        stmt_data.id_buf = val;
+        stmt_data.id_len = len;
+        return SQL_SUCCESS;
+    }
+
+    ok( col == 2, "col = %d\n", col );
+    ok( type == SQL_C_CHAR, "type = %d\n", type );
+    ok( max_len == sizeof(char[32]), "max_len = %Id\n", max_len );
+
+    stmt_data.name_buf = val;
+    stmt_data.name_len = len;
+    return SQL_SUCCESS;
+}
+
+static  SQLRETURN WINAPI driver_SQLPrepare( SQLHSTMT stmt, SQLCHAR *cmd, SQLINTEGER len )
+{
+    CHECK_EXPECT( driver_SQLPrepare );
+    ok( (ULONG_PTR)stmt == SQL_HANDLE_STMT, "stmt = %p\n", stmt );
+    ok( !strcmp((char *)cmd, "SELECT * FROM winetest WHERE Id = ? AND Name = ?"),
+            "cmd = %s\n", wine_dbgstr_an((char *)cmd, len) );
+    ok( len == 48, "len = %d\n", len );
+    return SQL_SUCCESS;
+}
+
+static SQLRETURN WINAPI driver_SQLBindParameter( SQLHSTMT stmt, SQLUSMALLINT param,
+        SQLSMALLINT param_type, SQLSMALLINT ctype, SQLSMALLINT type, SQLULEN size,
+        SQLSMALLINT decimal_digits, SQLPOINTER val, SQLLEN max_len, SQLLEN *len )
+{
+    CHECK_EXPECT( driver_SQLBindParameter );
+    ok( (ULONG_PTR)stmt == SQL_HANDLE_STMT, "stmt = %p\n", stmt );
+    ok( param_type == SQL_PARAM_INPUT, "param_type = %d\n", param_type );
+    ok( !size, "size = %Id\n", size );
+    ok( !decimal_digits, "decimal_digits = %d\n", decimal_digits );
+    ok( val != NULL, "val = %p\n", val );
+    ok( !max_len, "max_len = %Id\n", max_len );
+    ok( len != NULL, "len = %p\n", len );
+
+    if (param == 1)
+    {
+        ok( ctype == SQL_C_LONG, "ctype = %d\n", ctype );
+        ok( type == SQL_INTEGER, "type = %d\n", type );
+        ok( *(int *)val == 1, "val = %d\n", *(int *)val );
+        ok( *len == sizeof(int), "*len = %Id\n", *len );
+        return SQL_SUCCESS;
+    }
+
+    ok( param == 2, "param = %d\n", param );
+    ok( ctype == SQL_C_CHAR, "ctype = %d\n", ctype );
+    ok( type == SQL_VARCHAR, "type = %d\n", type );
+    ok( !strcmp((char *)val, "Mary"), "val = %s\n", (char *)val);
+    ok( *len == strlen("Mary"), "*len = %Id\n", *len );
+    return SQL_SUCCESS;
+}
+
+static SQLRETURN WINAPI driver_SQLExecute( SQLHSTMT stmt )
+{
+    CHECK_EXPECT( driver_SQLExecute );
+    stmt_data.cur_row = 1;
+    return SQL_SUCCESS;
+}
+
+static SQLRETURN WINAPI driver_SQLSetDescField( SQLHDESC desc, SQLSMALLINT rec,
+        SQLSMALLINT field, SQLPOINTER value, SQLINTEGER len )
+{
+    CHECK_EXPECT( driver_SQLSetDescField );
+    ok( (ULONG_PTR)desc == SQL_ATTR_APP_ROW_DESC, "desc = %p\n", desc );
+    ok( rec == 1, "rec = %d\n", rec );
+    ok( field == SQL_DESC_OCTET_LENGTH_PTR, "field = %d\n", field );
+    ok( value != NULL, "value = %p\n", value );
+    ok( !len, "len = %d\n", len );
+    return SQL_SUCCESS;
+}
+
+static SQLRETURN WINAPI driver_SQLFreeStmt( SQLHSTMT stmt, SQLUSMALLINT option )
+{
+    CHECK_EXPECT( driver_SQLFreeStmt );
+    ok( (ULONG_PTR)stmt == SQL_HANDLE_STMT, "stmt = %p\n", stmt );
+    ok( option == SQL_UNBIND, "option = %d\n", option );
+    return SQL_SUCCESS;
+}
+
+struct driver_funcs driver_funcs =
+{
+    driver_SQLAllocHandle,
+    driver_SQLFreeHandle,
+    driver_SQLGetEnvAttr,
+    driver_SQLSetEnvAttr,
+    driver_SQLGetConnectAttr,
+    driver_SQLSetConnectAttr,
+    driver_SQLGetInfo,
+    driver_SQLConnect,
+    driver_SQLDriverConnect,
+    driver_SQLBrowseConnect,
+    driver_SQLDisconnect,
+    driver_SQLGetStmtAttr,
+    driver_SQLSetStmtAttr,
+    driver_SQLGetDiagField,
+    driver_SQLGetDiagRec,
+    driver_SQLExecDirect,
+    driver_SQLRowCount,
+    driver_SQLFetch,
+    driver_SQLGetData,
+    driver_SQLBindCol,
+    driver_SQLPrepare,
+    driver_SQLBindParameter,
+    driver_SQLExecute,
+    driver_SQLSetDescField,
+    driver_SQLFreeStmt,
+};
+
+static void load_resource(const char *name, char *path)
+{
+    DWORD written;
+    HANDLE file;
+    HRSRC res;
+    void *ptr;
+
+    GetTempPathA( MAX_PATH, path );
+    strcat( path, name );
+
+    file = CreateFileA( path, GENERIC_READ|GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, 0 );
+    ok( file != INVALID_HANDLE_VALUE, "file creation failed, at %s, error %lu\n", path, GetLastError() );
+
+    res = FindResourceA( NULL, name, "TESTDLL" );
+    ok( res != 0, "couldn't find resource\n" );
+    ptr = LockResource( LoadResource(GetModuleHandleA(NULL), res) );
+    WriteFile( file, ptr, SizeofResource(GetModuleHandleA(NULL), res), &written, NULL );
+    ok( written == SizeofResource(GetModuleHandleA(NULL), res), "couldn't write resource\n" );
+    CloseHandle( file );
+}
+
+static HMODULE driver_hmod;
+
+static void cleanup_odbc_driver( char *driver_path )
+{
+    DWORD count;
+    BOOL r;
+
+    FreeLibrary( driver_hmod );
+    r = SQLRemoveDSNFromIni( "winetest_dsn" );
+    ok( r, "SQLRemoveDSNFromInit failed\n" );
+    r = SQLRemoveDriver( "winetest", TRUE, &count );
+    ok( r, "SQLRemoveDriver failed\n" );
+    DeleteFileA( driver_path );
+}
+
+static void setup_odbc_driver( char *driver_path )
+{
+    void (WINAPI *p_init_funcs)(struct driver_funcs *funcs);
+    char buf[512], tmp[MAX_PATH];
+    WORD tmp_len;
+    BOOL r;
+
+    load_resource( "driver.dll", driver_path );
+    driver_hmod = LoadLibraryA( driver_path );
+    ok( driver_hmod != NULL, "LoadLibrary failed\n" );
+    p_init_funcs = (void *)GetProcAddress( driver_hmod, "init_funcs" );
+    p_init_funcs( &driver_funcs );
+
+    sprintf( buf, "winetest%cdriver=%s%c", 0, driver_path, 0 );
+    r = SQLInstallDriver( NULL, buf, tmp, sizeof(tmp), &tmp_len );
+    ok( r, "SQLInstallDriver failed\n" );
+
+    r = SQLWriteDSNToIni( "winetest_dsn", "winetest" );
+    ok( r, "SQLWriteDSNToInit failed\n" );
+}
+
 static void test_SQLAllocHandle( void )
 {
     SQLHANDLE handle;
@@ -117,11 +706,9 @@ static void test_SQLConnect( void )
     version = -1;
     size = -1;
     ret = SQLGetEnvAttr( env, SQL_ATTR_ODBC_VERSION, &version, sizeof(version), &size );
-    if (ret == SQL_ERROR) diag( env, SQL_HANDLE_ENV );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
-    ok( version != -1, "version not set\n" );
+    ok( version == SQL_OV_ODBC2, "version = %d\n", version );
     ok( size == -1, "size set\n" );
-    trace( "ODBC version %d\n", version );
 
     pooling = -1;
     ret = SQLGetEnvAttr( env, SQL_ATTR_CONNECTION_POOLING, &pooling, sizeof(pooling), NULL );
@@ -153,47 +740,72 @@ static void test_SQLConnect( void )
     timeout = 0xdeadbeef;
     ret = SQLGetConnectAttr( con, SQL_ATTR_LOGIN_TIMEOUT, &timeout, sizeof(timeout), NULL );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
-    ok( timeout == 15, "wrong timeout %d\n", timeout );
+    ok( timeout == SQL_LOGIN_TIMEOUT_DEFAULT, "wrong timeout %d\n", timeout );
 
-    ret = SQLConnect( con, (SQLCHAR *)"winetest", SQL_NTS, (SQLCHAR *)"winetest", SQL_NTS, (SQLCHAR *)"winetest",
+    SET_EXPECT( driver_SQLAllocHandle_env );
+    SET_EXPECT( driver_SQLSetEnvAttr );
+    SET_EXPECT( driver_SQLAllocHandle_con );
+    SET_EXPECT( driver_SQLGetInfo_SQL_DRIVER_ODBC_VER );
+    SET_EXPECT( driver_SQLConnect );
+    SET_EXPECT( driver_SQLGetDiagRec );
+    SET_EXPECT( driver_SQLGetInfo );
+    ret = SQLConnect( con, (SQLCHAR *)"winetest_dsn", SQL_NTS, (SQLCHAR *)"winetest", SQL_NTS, (SQLCHAR *)"winetest",
                       SQL_NTS );
+    CHECK_CALLED( driver_SQLAllocHandle_env );
+    CHECK_CALLED( driver_SQLSetEnvAttr );
+    CHECK_CALLED( driver_SQLAllocHandle_con );
+    CHECK_CALLED( driver_SQLGetInfo_SQL_DRIVER_ODBC_VER );
+    CHECK_CALLED( driver_SQLConnect );
+    todo_wine CHECK_CALLED( driver_SQLGetDiagRec );
+    todo_wine CHECK_CALLED( driver_SQLGetInfo );
+    ok (ret == SQL_SUCCESS, "got %d\n", ret );
     if (ret == SQL_ERROR) diag( con, SQL_HANDLE_DBC );
-    if (ret != SQL_SUCCESS)
-    {
-        SQLFreeConnect( con );
-        SQLFreeEnv( env );
-        skip( "data source winetest not available\n" );
-        return;
-    }
+
+    ret = SQLSetEnvAttr( env, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC2, 0 );
+    ok( ret == SQL_ERROR, "got %d\n", ret );
+
+    ret = SQLGetEnvAttr( env, SQL_ATTR_ODBC_VERSION, &version, sizeof(version), NULL );
+    ok( ret == SQL_SUCCESS, "got %d\n", ret );
+    ok( version == SQL_OV_ODBC2, "version = %d\n", version );
 
     timeout = 0xdeadbeef;
+    SET_EXPECT( driver_SQLGetConnectAttr );
     ret = SQLGetConnectAttr( con, SQL_ATTR_LOGIN_TIMEOUT, &timeout, sizeof(timeout), NULL );
+    CHECK_CALLED( driver_SQLGetConnectAttr );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
-    todo_wine ok( !timeout, "wrong timeout %d\n", timeout );
+    ok( !timeout, "wrong timeout %d\n", timeout );
 
     timeout = 0xdeadbeef;
     size = -1;
+    SET_EXPECT( driver_SQLGetConnectAttr );
     ret = SQLGetConnectAttr( con, SQL_ATTR_CONNECTION_TIMEOUT, &timeout, sizeof(timeout), &size );
+    CHECK_CALLED( driver_SQLGetConnectAttr );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
-    ok( timeout != 0xdeadbeef, "timeout not set\n" );
+    ok( timeout != 0xdeadbeef, "timeout = %d\n", timeout );
     ok( size == -1, "size set\n" );
 
     ret = SQLTransact( NULL, NULL, SQL_COMMIT );
     ok( ret == SQL_INVALID_HANDLE, "got %d\n", ret );
 
     ret = SQLTransact( env, NULL, SQL_COMMIT );
-    ok( ret == SQL_SUCCESS, "got %d\n", ret );
+    todo_wine ok( ret == SQL_SUCCESS, "got %d\n", ret );
 
     ret = SQLTransact( NULL, con, SQL_COMMIT );
-    ok( ret == SQL_SUCCESS, "got %d\n", ret );
+    todo_wine ok( ret == SQL_SUCCESS, "got %d\n", ret );
 
     ret = SQLTransact( env, con, SQL_COMMIT );
-    ok( ret == SQL_SUCCESS, "got %d\n", ret );
+    todo_wine ok( ret == SQL_SUCCESS, "got %d\n", ret );
 
+    SET_EXPECT( driver_SQLDisconnect );
     ret = SQLDisconnect( con );
+    CHECK_CALLED( driver_SQLDisconnect );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
 
+    SET_EXPECT( driver_SQLFreeHandle_con );
+    SET_EXPECT( driver_SQLFreeHandle_env );
     ret = SQLFreeConnect( con );
+    CHECK_CALLED( driver_SQLFreeHandle_con );
+    CHECK_CALLED( driver_SQLFreeHandle_env );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
 
     ret = SQLFreeEnv( env );
@@ -216,41 +828,63 @@ static void test_SQLDriverConnect( void )
 
     len = 0;
     str[0] = 0;
-    ret = SQLDriverConnect( con, NULL, (SQLCHAR *)"dsn=winetest;UID=winetest", strlen("dsn=winetest;UID=winetest"),
-                            str, sizeof(str), &len, 0 );
-    if (ret == SQL_ERROR) diag( con, SQL_HANDLE_DBC );
-    if (ret != SQL_SUCCESS)
-    {
-        SQLFreeConnect( con );
-        SQLFreeEnv( env );
-        skip( "data source winetest not available\n" );
-        return;
-    }
+    SET_EXPECT( driver_SQLAllocHandle_env );
+    SET_EXPECT( driver_SQLSetEnvAttr );
+    SET_EXPECT( driver_SQLAllocHandle_con );
+    SET_EXPECT( driver_SQLGetInfo_SQL_DRIVER_ODBC_VER );
+    SET_EXPECT( driver_SQLDriverConnect );
+    SET_EXPECT( driver_SQLGetDiagRec );
+    SET_EXPECT( driver_SQLGetInfo );
+    ret = SQLDriverConnect( con, NULL, (SQLCHAR *)"dsn=winetest_dsn;UID=winetest",
+                            strlen("dsn=winetest_dsn;UID=winetest"), str, sizeof(str), &len, 0 );
+    CHECK_CALLED( driver_SQLAllocHandle_env );
+    CHECK_CALLED( driver_SQLSetEnvAttr );
+    CHECK_CALLED( driver_SQLAllocHandle_con );
+    CHECK_CALLED( driver_SQLGetInfo_SQL_DRIVER_ODBC_VER );
+    CHECK_CALLED( driver_SQLDriverConnect );
+    todo_wine CHECK_CALLED( driver_SQLGetDiagRec );
+    todo_wine CHECK_CALLED( driver_SQLGetInfo );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
+    if (ret == SQL_ERROR) diag( con, SQL_HANDLE_DBC );
     todo_wine {
-    ok( !strcmp( (const char *)str, "DSN=winetest;UID=winetest;" ), "got '%s'\n", str );
-    ok( len == 26, "got %d\n", len );
+    ok( !strcmp( (const char *)str, "DSN=winetest_dsn;UID=winetest;" ), "got '%s'\n", str );
+    ok( len == 30, "got %d\n", len );
     }
 
+    SET_EXPECT( driver_SQLDisconnect );
     ret = SQLDisconnect( con );
+    CHECK_CALLED( driver_SQLDisconnect );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
 
     /* trailing garbage */
     len = 0;
     str[0] = 0;
-    ret = SQLDriverConnect( con, NULL, (SQLCHAR *)"DSN=winetest;er\\9.99", strlen("DSN=winetest;er\\9.99"),
+    SET_EXPECT( driver_SQLAllocHandle_env );
+    SET_EXPECT( driver_SQLSetEnvAttr );
+    SET_EXPECT( driver_SQLDriverConnect );
+    SET_EXPECT( driver_SQLGetDiagRec );
+    SET_EXPECT( driver_SQLGetInfo );
+    ret = SQLDriverConnect( con, NULL, (SQLCHAR *)"DSN=winetest_dsn;er\\9.99", strlen("DSN=winetest_dsn;er\\9.99"),
                             str, sizeof(str), &len, 0 );
-    if (ret == SQL_ERROR) diag( con, SQL_HANDLE_DBC );
+    CHECK_CALLED( driver_SQLDriverConnect );
+    todo_wine CHECK_CALLED( driver_SQLGetDiagRec );
+    todo_wine CHECK_CALLED( driver_SQLGetInfo );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
     todo_wine {
-    ok( !strcmp( (const char *)str, "DSN=winetest;" ), "got '%s'\n", str );
-    ok( len == 13, "got %d\n", len );
+    ok( !strcmp( (const char *)str, "DSN=winetest_dsn;" ), "got '%s'\n", str );
+    ok( len == 17, "got %d\n", len );
     }
 
+    SET_EXPECT( driver_SQLDisconnect );
     ret = SQLDisconnect( con );
+    CHECK_CALLED( driver_SQLDisconnect );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
 
+    SET_EXPECT( driver_SQLFreeHandle_con );
+    SET_EXPECT( driver_SQLFreeHandle_env );
     ret = SQLFreeConnect( con );
+    CHECK_CALLED( driver_SQLFreeHandle_con );
+    CHECK_CALLED( driver_SQLFreeHandle_env );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
 
     ret = SQLFreeEnv( env );
@@ -273,23 +907,36 @@ static void test_SQLBrowseConnect( void )
 
     len = 0;
     str[0] = 0;
-    ret = SQLBrowseConnect( con, (SQLCHAR *)"DSN=winetest", 12, str, sizeof(str), &len );
-    if (ret == SQL_ERROR) diag( con, SQL_HANDLE_DBC );
-    if (ret != SQL_SUCCESS)
-    {
-        SQLFreeConnect( con );
-        SQLFreeEnv( env );
-        skip( "data source winetest not available\n" );
-        return;
-    }
+    SET_EXPECT( driver_SQLAllocHandle_env );
+    SET_EXPECT( driver_SQLSetEnvAttr );
+    SET_EXPECT( driver_SQLAllocHandle_con );
+    SET_EXPECT( driver_SQLGetInfo_SQL_DRIVER_ODBC_VER );
+    SET_EXPECT( driver_SQLBrowseConnect );
+    SET_EXPECT( driver_SQLGetDiagRec );
+    SET_EXPECT( driver_SQLGetInfo );
+    ret = SQLBrowseConnect( con, (SQLCHAR *)"DSN=winetest_dsn", 16, str, sizeof(str), &len );
+    CHECK_CALLED( driver_SQLAllocHandle_env );
+    CHECK_CALLED( driver_SQLSetEnvAttr );
+    CHECK_CALLED( driver_SQLAllocHandle_con );
+    CHECK_CALLED( driver_SQLGetInfo_SQL_DRIVER_ODBC_VER );
+    CHECK_CALLED( driver_SQLBrowseConnect );
+    todo_wine CHECK_CALLED( driver_SQLGetDiagRec );
+    todo_wine CHECK_CALLED( driver_SQLGetInfo );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
-    ok( !strcmp( (const char *)str, "DSN=winetest" ), "got '%s'\n", str );
-    ok( len == 12, "got %d\n", len );
+    if (ret == SQL_ERROR) diag( con, SQL_HANDLE_DBC );
+    todo_wine ok( !strncmp( (const char *)str, "DSN=winetest_dsn;", 17 ), "got '%s'\n", str );
+    todo_wine ok( len == 17, "got %d\n", len );
 
+    SET_EXPECT( driver_SQLDisconnect );
     ret = SQLDisconnect( con );
+    CHECK_CALLED( driver_SQLDisconnect );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
 
+    SET_EXPECT( driver_SQLFreeHandle_con );
+    SET_EXPECT( driver_SQLFreeHandle_env );
     ret = SQLFreeConnect( con );
+    CHECK_CALLED( driver_SQLFreeHandle_con );
+    CHECK_CALLED( driver_SQLFreeHandle_env );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
 
     ret = SQLFreeEnv( env );
@@ -389,104 +1036,139 @@ static void test_SQLExecDirect( void )
     ret = SQLAllocConnect( env, &con );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
 
-    ret = SQLConnect( con, (SQLCHAR *)"winetest", 8, (SQLCHAR *)"winetest", 8, (SQLCHAR *)"winetest", 8 );
-    if (ret == SQL_ERROR) diag( con, SQL_HANDLE_DBC );
-    if (ret != SQL_SUCCESS)
-    {
-        SQLFreeConnect( con );
-        SQLFreeEnv( env );
-        skip( "data source winetest not available\n" );
-        return;
-    }
+    SET_EXPECT( driver_SQLAllocHandle_env );
+    SET_EXPECT( driver_SQLSetEnvAttr );
+    SET_EXPECT( driver_SQLAllocHandle_con );
+    SET_EXPECT( driver_SQLGetInfo_SQL_DRIVER_ODBC_VER );
+    SET_EXPECT( driver_SQLConnect );
+    SET_EXPECT( driver_SQLGetDiagRec );
+    SET_EXPECT( driver_SQLGetInfo );
+    ret = SQLConnect( con, (SQLCHAR *)"winetest_dsn", SQL_NTS, (SQLCHAR *)"winetest", SQL_NTS, (SQLCHAR *)"winetest", SQL_NTS );
+    CHECK_CALLED( driver_SQLAllocHandle_env );
+    CHECK_CALLED( driver_SQLSetEnvAttr );
+    CHECK_CALLED( driver_SQLAllocHandle_con );
+    CHECK_CALLED( driver_SQLGetInfo_SQL_DRIVER_ODBC_VER );
+    CHECK_CALLED( driver_SQLConnect );
+    todo_wine CHECK_CALLED( driver_SQLGetDiagRec );
+    todo_wine CHECK_CALLED( driver_SQLGetInfo );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
+    if (ret == SQL_ERROR) diag( con, SQL_HANDLE_DBC );
 
+    SET_EXPECT( driver_SQLAllocHandle_stmt );
+    SET_EXPECT( driver_SQLGetStmtAttr );
     ret = SQLAllocStmt( con, &stmt );
+    CHECK_CALLED(  driver_SQLAllocHandle_stmt );
+    todo_wine CHECK_CALLED( driver_SQLGetStmtAttr );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
 
     ret = SQLError( NULL, NULL, NULL, state, &err, msg, sizeof(msg), &len );
     ok( ret == SQL_INVALID_HANDLE, "got %d\n", ret );
 
     ret = SQLError( env, NULL, NULL, state, &err, msg, sizeof(msg), &len );
-    ok( ret == SQL_NO_DATA, "got %d\n", ret );
+    todo_wine ok( ret == SQL_NO_DATA, "got %d\n", ret );
 
     ret = SQLError( env, con, NULL, state, &err, msg, sizeof(msg), &len );
-    ok( ret == SQL_NO_DATA, "got %d\n", ret );
+    todo_wine ok( ret == SQL_NO_DATA, "got %d\n", ret );
 
     ret = SQLError( env, con, stmt, state, &err, msg, sizeof(msg), &len );
-    ok( ret == SQL_NO_DATA, "got %d\n", ret );
+    todo_wine ok( ret == SQL_NO_DATA, "got %d\n", ret );
 
-    SQLExecDirect( stmt, (SQLCHAR *)"USE winetest", ARRAYSIZE("USE winetest") - 1 );
-    SQLExecDirect( stmt, (SQLCHAR *)"DROP TABLE winetest", ARRAYSIZE("DROP TABLE winetest") - 1 );
+    SET_EXPECT( driver_SQLExecDirect );
     ret = SQLExecDirect( stmt, (SQLCHAR *)"CREATE TABLE winetest ( Id int, Name varchar(255) )",
                          ARRAYSIZE("CREATE TABLE winetest ( Id int, Name varchar(255) )") - 1 );
-    if (ret == SQL_ERROR) diag( stmt, SQL_HANDLE_STMT );
+    CHECK_CALLED( driver_SQLExecDirect );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
-    if (ret == SQL_ERROR) diag( stmt, SQL_HANDLE_STMT );
+    ok( stmt_data.created, "winetest table was not created\n" );
 
+    SET_EXPECT( driver_SQLExecDirect );
     ret = SQLExecDirect( stmt, (SQLCHAR *)"INSERT INTO winetest VALUES (0, 'John')",
                          ARRAYSIZE("INSERT INTO winetest VALUES (0, 'John')") - 1 );
+    CHECK_CALLED( driver_SQLExecDirect );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
-    if (ret == SQL_ERROR) diag( stmt, SQL_HANDLE_STMT );
+    ok( stmt_data.rows_no == 1, "rows_no = %d\n", stmt_data.rows_no );
 
+    SET_EXPECT( driver_SQLExecDirect );
     ret = SQLExecDirect( stmt, (SQLCHAR *)"INSERT INTO winetest VALUES (1, 'Mary')",
                          ARRAYSIZE("INSERT INTO winetest VALUES (1, 'Mary')") - 1 );
+    CHECK_CALLED( driver_SQLExecDirect );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
-    if (ret == SQL_ERROR) diag( stmt, SQL_HANDLE_STMT );
+    ok( stmt_data.rows_no == 2, "rows_no = %d\n", stmt_data.rows_no );
 
+    SET_EXPECT( driver_SQLExecDirect );
     ret = SQLExecDirect( stmt, (SQLCHAR *)"SELECT * FROM winetest", ARRAYSIZE("SELECT * FROM winetest") - 1 );
+    CHECK_CALLED( driver_SQLExecDirect );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
-    if (ret == SQL_ERROR) diag( stmt, SQL_HANDLE_STMT );
+    ok( !stmt_data.cur_row, "cur_row = %d\n", stmt_data.cur_row );
 
     count = 0xdeadbeef;
+    SET_EXPECT( driver_SQLRowCount );
     ret = SQLRowCount( stmt, &count );
+    CHECK_CALLED( driver_SQLRowCount );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
     ok( count == 2, "got %d\n", (int)count );
 
+    SET_EXPECT( driver_SQLFetch );
     ret = SQLFetch( stmt );
+    CHECK_CALLED( driver_SQLFetch );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
 
     id[0] = -1;
     len_id[0] = 0;
+    SET_EXPECT( driver_SQLGetData );
     ret = SQLGetData( stmt, 1, SQL_C_SLONG, id, sizeof(id[0]), len_id );
+    CHECK_CALLED( driver_SQLGetData );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
     ok( !id[0], "id not set\n" );
     ok( len_id[0] == sizeof(id[0]), "got %d\n", (int)len_id[0] );
 
+    SET_EXPECT( driver_SQLFreeHandle_stmt );
     ret = SQLFreeStmt( stmt, SQL_DROP );
+    CHECK_CALLED( driver_SQLFreeHandle_stmt );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
 
+    SET_EXPECT( driver_SQLAllocHandle_stmt );
+    SET_EXPECT( driver_SQLGetStmtAttr );
     ret = SQLAllocStmt( con, &stmt );
+    CHECK_CALLED(  driver_SQLAllocHandle_stmt );
+    todo_wine CHECK_CALLED( driver_SQLGetStmtAttr );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
 
+    SET_EXPECT( driver_SQLExecDirect );
     ret = SQLExecDirect( stmt, (SQLCHAR *)"SELECT * FROM winetest", ARRAYSIZE("SELECT * FROM winetest") - 1 );
+    CHECK_CALLED( driver_SQLExecDirect );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
-    if (ret == SQL_ERROR) diag( stmt, SQL_HANDLE_STMT );
 
+    SET_EXPECT( driver_SQLSetStmtAttr );
     ret = SQLSetStmtAttr( stmt, SQL_ATTR_ROW_ARRAY_SIZE, (SQLPOINTER)2,  0 );
+    CHECK_CALLED( driver_SQLSetStmtAttr );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
-    if (ret == SQL_ERROR) diag( stmt, SQL_HANDLE_STMT );
 
     rows_fetched = 0xdeadbeef;
+    SET_EXPECT( driver_SQLSetStmtAttr );
     ret = SQLSetStmtAttr( stmt, SQL_ATTR_ROWS_FETCHED_PTR, (SQLPOINTER)&rows_fetched,  0 );
+    CHECK_CALLED( driver_SQLSetStmtAttr );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
-    if (ret == SQL_ERROR) diag( stmt, SQL_HANDLE_STMT );
 
     id[0] = -1;
     id[1] = -1;
     len_id[0] = 0;
     len_id[1] = 0;
+    SET_EXPECT( driver_SQLBindCol );
     ret = SQLBindCol( stmt, 1, SQL_C_SLONG, id, sizeof(id), len_id );
+    CHECK_CALLED( driver_SQLBindCol );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
-    if (ret == SQL_ERROR) diag( stmt, SQL_HANDLE_STMT );
 
     memset( name, 0, sizeof(name) );
     len_name[0] = 0;
     len_name[1] = 0;
+    SET_EXPECT( driver_SQLBindCol );
     ret = SQLBindCol( stmt, 2, SQL_C_CHAR, name, sizeof(name), len_name );
+    CHECK_CALLED( driver_SQLBindCol );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
-    if (ret == SQL_ERROR) diag( stmt, SQL_HANDLE_STMT );
 
+    SET_EXPECT( driver_SQLFetch );
     ret = SQLFetch( stmt );
+    CHECK_CALLED( driver_SQLFetch );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
     ok( rows_fetched == 2, "got %d\n", (int)rows_fetched );
     ok( id[0] == 0, "got %d\n", id[0] );
@@ -497,79 +1179,116 @@ static void test_SQLExecDirect( void )
     ok( len_name[0] == sizeof("John") - 1, "got %d\n", (int)len_name[0] );
     ok( len_name[1] == sizeof("Mary") - 1, "got %d\n", (int)len_name[1] );
 
+    SET_EXPECT( driver_SQLFreeHandle_stmt );
     ret = SQLFreeStmt( stmt, SQL_DROP );
+    CHECK_CALLED( driver_SQLFreeHandle_stmt );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
 
+    SET_EXPECT( driver_SQLAllocHandle_stmt );
+    SET_EXPECT( driver_SQLGetStmtAttr );
     ret = SQLAllocStmt( con, &stmt );
+    CHECK_CALLED(  driver_SQLAllocHandle_stmt );
+    todo_wine CHECK_CALLED( driver_SQLGetStmtAttr );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
 
+    SET_EXPECT( driver_SQLPrepare );
     ret = SQLPrepare( stmt, (SQLCHAR *)"SELECT * FROM winetest WHERE Id = ? AND Name = ?",
                       ARRAYSIZE("SELECT * FROM winetest WHERE Id = ? AND Name = ?") - 1 );
+    CHECK_CALLED( driver_SQLPrepare );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
-    if (ret == SQL_ERROR) diag( stmt, SQL_HANDLE_STMT );
 
     id[0] = 1;
     len_id[0] = sizeof(id[0]);
+    SET_EXPECT( driver_SQLBindParameter );
     ret = SQLBindParameter( stmt, 1, SQL_PARAM_INPUT, SQL_INTEGER, SQL_INTEGER, 0, 0, id, 0, len_id );
+    CHECK_CALLED( driver_SQLBindParameter );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
-    if (ret == SQL_ERROR) diag( stmt, SQL_HANDLE_STMT );
 
     memcpy( name, "Mary", sizeof("Mary") );
     len_name[0] = sizeof( "Mary" ) - 1;
+    SET_EXPECT( driver_SQLBindParameter );
     ret = SQLBindParameter( stmt, 2, SQL_PARAM_INPUT, SQL_CHAR, SQL_VARCHAR, 0, 0, name, 0, len_name );
+    CHECK_CALLED( driver_SQLBindParameter );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
-    if (ret == SQL_ERROR) diag( stmt, SQL_HANDLE_STMT );
 
+    SET_EXPECT( driver_SQLExecute );
     ret = SQLExecute( stmt );
+    CHECK_CALLED( driver_SQLExecute );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
-    if (ret == SQL_ERROR) diag( stmt, SQL_HANDLE_STMT );
 
+    SET_EXPECT( driver_SQLFetch );
     ret = SQLFetch( stmt );
+    CHECK_CALLED( driver_SQLFetch );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
-    if (ret == SQL_ERROR) diag( stmt, SQL_HANDLE_STMT );
     ok( id[0] == 1, "got %d\n", id[0] );
     ok( len_id[0] == sizeof(id[0]), "got %d\n", (int)len_id[0] );
     ok( !strcmp( (const char *)name, "Mary" ), "got %s\n", name );
     ok( len_name[0] == sizeof("Mary") - 1, "got %d\n", (int)len_name[0] );
+    SET_EXPECT( driver_SQLFreeStmt );
     ret = SQLFreeStmt( stmt, SQL_UNBIND );
+    CHECK_CALLED( driver_SQLFreeStmt );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
+    SET_EXPECT( driver_SQLFreeHandle_stmt );
     ret = SQLFreeStmt( stmt, SQL_DROP );
+    CHECK_CALLED( driver_SQLFreeHandle_stmt );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
 
+    SET_EXPECT( driver_SQLAllocHandle_stmt );
+    SET_EXPECT( driver_SQLGetStmtAttr );
     ret = SQLAllocStmt( con, &stmt );
+    CHECK_CALLED(  driver_SQLAllocHandle_stmt );
+    todo_wine CHECK_CALLED( driver_SQLGetStmtAttr );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
 
+    SET_EXPECT( driver_SQLExecDirect );
     ret = SQLExecDirect( stmt, (SQLCHAR *)"DROP TABLE winetest", ARRAYSIZE("DROP TABLE winetest") - 1 );
+    CHECK_CALLED( driver_SQLExecDirect );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
 
     desc = (SQLHDESC)0xdeadbeef;
     size = 0xdeadbeef;
+    SET_EXPECT( driver_SQLGetStmtAttr );
     ret = SQLGetStmtAttr( stmt, SQL_ATTR_APP_ROW_DESC, &desc, sizeof(desc), &size );
-    if (ret == SQL_ERROR) diag( stmt, SQL_HANDLE_STMT );
+    todo_wine CHECK_NOT_CALLED( driver_SQLGetStmtAttr );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
     ok( desc != (SQLHDESC)0xdeadbeef, "desc not set\n" );
     ok( size == 0xdeadbeef, "got %d\n", size );
 
+    SET_EXPECT( driver_SQLSetDescField );
     ret = SQLSetDescField( desc, 1, SQL_DESC_OCTET_LENGTH_PTR, &len_octet, 0 );
-    if (ret == SQL_ERROR) diag( stmt, SQL_HANDLE_DESC );
+    CHECK_CALLED( driver_SQLSetDescField );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
 
+    SET_EXPECT( driver_SQLSetStmtAttr );
     ret = SQLSetStmtAttr( stmt, SQL_ATTR_APP_ROW_DESC, NULL, sizeof(desc) );
-    ok( ret == SQL_SUCCESS, "got %d\n", ret );
+    todo_wine CHECK_NOT_CALLED( driver_SQLSetStmtAttr );
+    todo_wine ok( ret == SQL_SUCCESS, "got %d\n", ret );
 
+    SET_EXPECT( driver_SQLSetStmtAttr );
     ret = SQLSetStmtAttr( stmt, SQL_ATTR_APP_ROW_DESC, desc, 0 );
-    ok( ret == SQL_SUCCESS, "got %d\n", ret );
+    todo_wine CHECK_NOT_CALLED( driver_SQLSetStmtAttr );
+    todo_wine ok( ret == SQL_SUCCESS, "got %d\n", ret );
 
+    SET_EXPECT( driver_SQLSetStmtAttr );
     ret = SQLSetStmtAttr( stmt, SQL_ATTR_IMP_ROW_DESC, NULL, sizeof(desc) );
+    todo_wine CHECK_NOT_CALLED( driver_SQLSetStmtAttr );
     ok( ret == SQL_ERROR, "got %d\n", ret );
 
+    SET_EXPECT( driver_SQLFreeHandle_stmt );
     ret = SQLFreeStmt( stmt, SQL_DROP );
+    CHECK_CALLED( driver_SQLFreeHandle_stmt );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
 
+    SET_EXPECT( driver_SQLDisconnect );
     ret = SQLDisconnect( con );
+    CHECK_CALLED( driver_SQLDisconnect );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
 
+    SET_EXPECT( driver_SQLFreeHandle_con );
+    SET_EXPECT( driver_SQLFreeHandle_env );
     ret = SQLFreeConnect( con );
+    CHECK_CALLED( driver_SQLFreeHandle_con );
+    CHECK_CALLED( driver_SQLFreeHandle_env );
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
 
     ret = SQLFreeEnv( env );
@@ -629,16 +1348,78 @@ static void test_SQLSetConnectAttr(void)
     ok( ret == SQL_SUCCESS, "got %d\n", ret );
 }
 
+BOOL is_process_elevated(void)
+{
+    TOKEN_ELEVATION_TYPE type = TokenElevationTypeDefault;
+    HANDLE token;
+    DWORD size;
+    BOOL ret;
+
+    if (!OpenProcessToken( GetCurrentProcess(), TOKEN_QUERY, &token) ) return FALSE;
+    ret = GetTokenInformation( token, TokenElevationType, &type, sizeof(type), &size );
+    CloseHandle( token );
+    return ret && type == TokenElevationTypeFull;
+}
+
+static HANDLE get_admin_token(void)
+{
+    TOKEN_ELEVATION_TYPE type;
+    TOKEN_LINKED_TOKEN linked;
+    DWORD size;
+
+    if (!GetTokenInformation( GetCurrentThreadEffectiveToken(), TokenElevationType, &type, sizeof(type), &size )
+            || type == TokenElevationTypeFull)
+        return NULL;
+
+    if (!GetTokenInformation( GetCurrentThreadEffectiveToken(), TokenLinkedToken, &linked, sizeof(linked), &size ))
+        return NULL;
+    return linked.LinkedToken;
+}
+
+static void restart_as_admin_elevated(void)
+{
+    PROCESS_INFORMATION pi;
+    STARTUPINFOW si;
+    HANDLE token;
+
+    if (!(token = get_admin_token())) return;
+
+    memset(&si, 0, sizeof(si));
+    si.cb = sizeof(si);
+    if (CreateProcessAsUserW( token, NULL, GetCommandLineW(), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi ))
+    {
+        DWORD exit_code;
+
+        WaitForSingleObject( pi.hProcess, INFINITE );
+        GetExitCodeProcess( pi.hProcess, &exit_code );
+        CloseHandle( pi.hProcess );
+        CloseHandle( pi.hThread );
+        ExitProcess( exit_code );
+    }
+    CloseHandle( token );
+}
+
 START_TEST(odbc32)
 {
+    char driver_path[MAX_PATH];
+
+    if (!is_process_elevated()) restart_as_admin_elevated();
+
+    if (!is_process_elevated()) skip( "process is limited\n" );
+    else
+    {
+        setup_odbc_driver( driver_path );
+        test_SQLConnect();
+        test_SQLDriverConnect();
+        test_SQLBrowseConnect();
+        test_SQLExecDirect();
+        cleanup_odbc_driver( driver_path );
+    }
+
     test_SQLAllocHandle();
     test_SQLGetDiagRec();
-    test_SQLConnect();
-    test_SQLDriverConnect();
-    test_SQLBrowseConnect();
     test_SQLDataSources();
     test_SQLDrivers();
-    test_SQLExecDirect();
     test_SQLSetEnvAttr();
     test_SQLSetConnectAttr();
 }
diff --git a/dlls/odbc32/unixlib.h b/dlls/odbc32/unixlib.h
index 637d88b096f8..48e34084274f 100644
--- a/dlls/odbc32/unixlib.h
+++ b/dlls/odbc32/unixlib.h
@@ -194,9 +194,19 @@ struct object
     BOOL closed;
 };
 
+struct env_handle
+{
+    struct list entry;
+    int ref;
+    UINT64 unix_handle;
+    void *win32_handle;
+    const struct win32_funcs *win32_funcs;
+};
+
 struct environment
 {
     struct object hdr;
+    struct list env_handles; /* list of connections env handles */
     /* attributes */
     UINT32 attr_version;
     /* drivers and data sources */
@@ -210,9 +220,13 @@ struct environment
 struct connection
 {
     struct object hdr;
+    struct env_handle *env;
+    /* win32 fields */
     UINT32 driver_odbc_ver;
     /* attributes */
+    BOOL con_timeout_set;
     UINT32 attr_con_timeout;
+    BOOL login_timeout_set;
     UINT32 attr_login_timeout;
 };
 
diff --git a/dlls/opengl32/Makefile.in b/dlls/opengl32/Makefile.in
index 66ce5d289f30..d2ec942dd76a 100644
--- a/dlls/opengl32/Makefile.in
+++ b/dlls/opengl32/Makefile.in
@@ -4,7 +4,7 @@ EXTRADEFS = -D_OPENGL32_
 IMPORTLIB = opengl32
 IMPORTS   = user32 gdi32 advapi32 win32u
 DELAYIMPORTS = glu32
-UNIX_LIBS    = -lwin32u
+UNIX_LIBS    = -lwin32u $(PTHREAD_LIBS)
 
 EXTRADLLFLAGS = -Wl,--image-base,0x7a800000
 
diff --git a/dlls/opengl32/make_opengl b/dlls/opengl32/make_opengl
index c8f6c5f22f29..c6bee6f1ab44 100755
--- a/dlls/opengl32/make_opengl
+++ b/dlls/opengl32/make_opengl
@@ -54,21 +54,6 @@ use File::Basename;
 my $spec_file = "opengl32.spec";
 my $wgl_file = "../../include/wine/wgl.h";
 
-# If set to 1, generate TRACEs for each OpenGL function
-my $gen_traces = 1;
-
-#
-# List of norm categories
-#
-my %cat_1_0 = ( "GL_VERSION_1_0" => 1 );
-my %cat_1_1 = ( %cat_1_0, "GL_VERSION_1_1" => 1 );
-my %cat_1_2 = ( %cat_1_1, "GL_VERSION_1_2" => 1 );
-my %cat_1_3 = ( %cat_1_2, "GL_VERSION_1_3" => 1 );
-my %cat_1_4 = ( %cat_1_3, "GL_VERSION_1_4" => 1 );
-my %cat_1_5 = ( %cat_1_4, "GL_VERSION_1_5" => 1 );
-
-my %norm_categories = ();
-
 #
 # This hash table gives the conversion between OpenGL types and
 # the .spec type and debug format
@@ -154,7 +139,10 @@ my %manual_win_functions =
      "wglGetCurrentDC" => 1,
      "wglGetCurrentReadDCARB" => 1,
      "wglGetDefaultProcAddress" => 1,
+     "wglGetExtensionsStringARB" => 1,
+     "wglGetExtensionsStringEXT" => 1,
      "wglGetLayerPaletteEntries" => 1,
+     "wglGetProcAddress" => 1,
      "wglRealizeLayerPalette" => 1,
      "wglSetLayerPaletteEntries" => 1,
      "wglSwapLayerBuffers" => 1,
@@ -168,6 +156,11 @@ my %manual_win_thunks =
      "glCreateSyncFromCLeventARB" => 1,
      "glDeleteSync" => 1,
      "glFenceSync" => 1,
+     "glGetBooleanv" => 1,
+     "glGetDoublev" => 1,
+     "glGetFloatv" => 1,
+     "glGetInteger64v" => 1,
+     "glGetIntegerv" => 1,
      "glGetString" => 1,
      "glGetStringi" => 1,
      "glImportSyncEXT" => 1,
@@ -177,147 +170,131 @@ my %manual_win_thunks =
      "wglCreatePbufferARB" => 1,
      "wglDeleteContext" => 1,
      "wglDestroyPbufferARB" => 1,
-     "wglGetExtensionsStringARB" => 1,
-     "wglGetExtensionsStringEXT" => 1,
      "wglGetPixelFormat" => 1,
      "wglGetPixelFormatAttribfvARB" => 1,
      "wglGetPixelFormatAttribivARB" => 1,
-     "wglGetProcAddress" => 1,
      "wglMakeContextCurrentARB" => 1,
      "wglMakeCurrent" => 1,
      "wglQueryCurrentRendererStringWINE" => 1,
      "wglQueryRendererStringWINE" => 1,
      "wglSwapBuffers" => 1,
     );
-my %manual_unix_thunks =
-    (
-     "glClear" => 1,
-     "glCreateSyncFromCLeventARB" => 1,
-     "glDebugMessageCallback" => 1,
-     "glDebugMessageCallbackAMD" => 1,
-     "glDebugMessageCallbackARB" => 1,
-     "glDrawBuffer" => 1,
-     "glDrawBuffers" => 1,
-     "glDrawPixels" => 1,
-     "glFenceSync" => 1,
-     "glFinish" => 1,
-     "glFlush" => 1,
-     "glFramebufferDrawBufferEXT" => 1,
-     "glFramebufferDrawBuffersEXT" => 1,
-     "glFramebufferReadBufferEXT" => 1,
-     "glGetBooleanv" => 1,
-     "glGetDoublev" => 1,
-     "glGetError" => 1,
-     "glGetFloatv" => 1,
-     "glGetFramebufferParameterivEXT" => 1,
-     "glGetInteger64v" => 1,
-     "glGetIntegerv" => 1,
-     "glGetString" => 1,
-     "glGetStringi" => 1,
-     "glGetUnsignedBytevEXT" => 1,
-     "glImportSyncEXT" => 1,
-     "glNamedFramebufferDrawBuffer" => 1,
-     "glNamedFramebufferDrawBuffers" => 1,
-     "glNamedFramebufferReadBuffer" => 1,
-     "glReadBuffer" => 1,
-     "glReadPixels" => 1,
-     "glViewport" => 1,
-     "wglCopyContext" => 1,
-     "wglCreateContext" => 1,
-     "wglCreateContextAttribsARB" => 1,
-     "wglDeleteContext" => 1,
-     "wglGetProcAddress" => 1,
-     "wglMakeContextCurrentARB" => 1,
-     "wglMakeCurrent" => 1,
-     "wglShareLists" => 1,
-     "wglSwapBuffers" => 1,
-    );
-my %hide_default_fbo_thunks =
-    (
-     "glFramebufferRenderbuffer" => 1,
-     "glFramebufferRenderbufferEXT" => 1,
-     "glFramebufferTexture" => 1,
-     "glFramebufferTexture1D" => 1,
-     "glFramebufferTexture1DEXT" => 1,
-     "glFramebufferTexture2D" => 1,
-     "glFramebufferTexture2DEXT" => 1,
-     "glFramebufferTexture3D" => 1,
-     "glFramebufferTexture3DEXT" => 1,
-     "glFramebufferTextureARB" => 1,
-     "glFramebufferTextureEXT" => 1,
-     "glFramebufferTextureFaceARB" => 1,
-     "glFramebufferTextureFaceEXT" => 1,
-     "glFramebufferTextureLayer" => 1,
-     "glFramebufferTextureLayerARB" => 1,
-     "glFramebufferTextureLayerEXT" => 1,
-     "glFramebufferTextureMultiviewOVR" => 1,
-     "glGetFramebufferAttachmentParameteriv" => 1,
-     "glGetFramebufferAttachmentParameterivEXT" => 1,
-    );
-my %resolve_default_fbo_thunks =
-    (
-     "glCopyColorTable" => 1,
-     "glCopyPixels" => 1,
-     "glCopyTexImage1D" => 1,
-     "glCopyTexImage2D" => 1,
-     "glCopyTexSubImage1D" => 1,
-     "glCopyTexSubImage2D" => 1,
-     "glCopyTexSubImage3D" => 1,
-     "glCopyTextureSubImage1D" => 1,
-     "glCopyTextureSubImage2D" => 1,
-     "glCopyTextureSubImage3D" => 1,
-     "glReadPixels" => 1,
-    );
-my %map_default_fbo_thunks =
-    (
-     "glBindFramebuffer" => [ "framebuffer" ],
-     "glBindFramebufferEXT" => [ "framebuffer" ],
-     "glBlitNamedFramebuffer" => [ "readFramebuffer", "drawFramebuffer" ],
-     "glCheckNamedFramebufferStatus" => [ "framebuffer" ],
-     "glCheckNamedFramebufferStatusEXT" => [ "framebuffer" ],
-     "glClearNamedFramebufferfi" => [ "framebuffer" ],
-     "glClearNamedFramebufferfv" => [ "framebuffer" ],
-     "glClearNamedFramebufferiv" => [ "framebuffer" ],
-     "glClearNamedFramebufferuiv" => [ "framebuffer" ],
-     "glGetNamedFramebufferAttachmentParameteriv" => [ "framebuffer" ],
-     "glGetNamedFramebufferAttachmentParameterivEXT" => [ "framebuffer" ],
-     "glGetNamedFramebufferParameterfvAMD" => [ "framebuffer" ],
-     "glGetNamedFramebufferParameteriv" => [ "framebuffer" ],
-     "glGetNamedFramebufferParameterivEXT" => [ "framebuffer" ],
-     "glInvalidateNamedFramebufferData" => [ "framebuffer" ],
-     "glInvalidateNamedFramebufferSubData" => [ "framebuffer" ],
-     "glNamedFramebufferParameteri" => [ "framebuffer" ],
-     "glNamedFramebufferParameteriEXT" => [ "framebuffer" ],
-     "glNamedFramebufferSampleLocationsfvARB" => [ "framebuffer" ],
-     "glNamedFramebufferSampleLocationsfvNV" => [ "framebuffer" ],
-     "glNamedFramebufferSamplePositionsfvAMD" => [ "framebuffer" ],
-     "glNamedFramebufferTextureMultiviewOVR" => [ "framebuffer" ],
-    );
-my %manual_wow64_wrappers =
-    (
-     "glBufferStorage" => 0,
-     "glDeleteBuffers" => 0,
-     "glFlushMappedBufferRange" => 0,
-     "glFlushMappedNamedBufferRange" => 0,
-     "glFlushMappedNamedBufferRangeEXT" => 0,
-     "glGetBufferPointerv" => 0,
-     "glGetBufferPointervARB" => 0,
-     "glGetNamedBufferPointerv" => 0,
-     "glGetNamedBufferPointervEXT" => 0,
-     "glMapBuffer" => 0,
-     "glMapBufferARB" => 0,
-     "glMapBufferRange" => 0,
-     "glMapNamedBuffer" => 0,
-     "glMapNamedBufferEXT" => 0,
-     "glMapNamedBufferRange" => 0,
-     "glMapNamedBufferRangeEXT" => 0,
-     "glNamedBufferStorage" => 0,
-     "glNamedBufferStorageEXT" => 0,
-     "glUnmapBuffer" => 0,
-     "glUnmapBufferARB" => 0,
-     "glUnmapNamedBuffer" => 0,
-     "glUnmapNamedBufferEXT" => 0,
-    );
+
+sub manual_unix_thunks($)
+{
+    my $name = shift;
+    return "glClear"                        if $name =~ /^glClear$/;
+    return "glFinish"                       if $name =~ /^glFinish$/;
+    return "glFlush"                        if $name =~ /^glFlush$/;
+    return "glViewport"                     if $name =~ /^glViewport$/;
+    return "glGetError"                     if $name =~ /^glGetError$/;
+
+    return "glGetBooleanv"                  if $name =~ /^glGetBooleanv/;
+    return "glGetDoublev"                   if $name =~ /^glGetDoublev/;
+    return "glGetFloatv"                    if $name =~ /^glGetFloatv/;
+    return "glGetInteger64v"                if $name =~ /^glGetInteger64v/;
+    return "glGetIntegerv"                  if $name =~ /^glGetIntegerv/;
+    return 0                                if $name =~ /^glGetStringi/;
+    return "glGetString"                    if $name =~ /^glGetString/;
+    return "glGetUnsignedBytevEXT"          if $name =~ /^glGetUnsignedBytev/;
+
+    return "glCreateSyncFromCLeventARB"     if $name =~ /^glCreateSyncFromCLeventARB/;
+    return "glFenceSync"                    if $name =~ /^glFenceSync/;
+    return "glImportSyncEXT"                if $name =~ /^glImportSync/;
+
+    return 0                                if $name =~ /^glDrawBufferRegion/;
+    return "glDrawBuffers"                  if $name =~ /^glDrawBuffers/;
+    return "glDrawBuffer"                   if $name =~ /^glDrawBuffer/;
+    return "glFramebufferDrawBuffersEXT"    if $name =~ /^glFramebufferDrawBuffers/;
+    return "glFramebufferDrawBufferEXT"     if $name =~ /^glFramebufferDrawBuffer/;
+    return "glNamedFramebufferDrawBuffers"  if $name =~ /^glNamedFramebufferDrawBuffers/;
+    return "glNamedFramebufferDrawBuffer"   if $name =~ /^glNamedFramebufferDrawBuffer/;
+
+    return 0                                if $name =~ /^glReadBufferRegion/;
+    return "glReadBuffer"                   if $name =~ /^glReadBuffer/;
+    return "glFramebufferReadBufferEXT"     if $name =~ /^glFramebufferReadBuffer/;
+    return "glNamedFramebufferReadBuffer"   if $name =~ /^glNamedFramebufferReadBuffer/;
+
+    return "glDebugMessageCallbackAMD"      if $name =~ /^glDebugMessageCallbackAMD/;
+    return "glDebugMessageCallback"         if $name =~ /^glDebugMessageCallback/;
+
+    return "glDrawPixels"                   if $name =~ /^glDrawPixels/;
+    return "glReadPixels"                   if $name =~ /^glReadPixels/;
+    return "glGetFramebufferParameteriv"    if $name =~ /^glGetFramebufferParameteriv/;
+
+    return "wglCopyContext"                 if $name =~ /^wglCopyContext/;
+    return "wglCreateContextAttribsARB"     if $name =~ /^wglCreateContextAttribs/;
+    return "wglCreateContext"               if $name =~ /^wglCreateContext/;
+    return "wglCreatePbufferARB"            if $name =~ /^wglCreatePbuffer/;
+    return "wglDeleteContext"               if $name =~ /^wglDeleteContext/;
+    return "wglGetProcAddress"              if $name =~ /^wglGetProcAddress/;
+    return "wglMakeContextCurrentARB"       if $name =~ /^wglMakeContextCurrent/;
+    return "wglMakeCurrent"                 if $name =~ /^wglMakeCurrent/;
+    return "wglShareLists"                  if $name =~ /^wglShareLists/;
+    return "wglSwapBuffers"                 if $name =~ /^wglSwapBuffers/;
+}
+
+sub hide_default_fbo($)
+{
+    my $name = shift;
+    return 1 if $name =~ /^glFramebufferRenderbuffer/;
+    return 1 if $name =~ /^glFramebufferTexture/;
+    return 1 if $name =~ /^glGetFramebufferAttachmentParameteriv/;
+    return 0;
+}
+
+sub resolve_default_fbo($)
+{
+    my $name = shift;
+    return 1 if $name =~ /^glCopyColorTable/;
+    return 1 if $name =~ /^glCopyPixels/;
+    return 1 if $name =~ /^glCopyTexImage/;
+    return 1 if $name =~ /^glCopyTexSubImage/;
+    return 1 if $name =~ /^glCopyTextureSubImage/;
+    return 1 if $name =~ /^glReadPixels/;
+    return 0;
+}
+
+sub map_default_fbo($$)
+{
+    my ($name, $pname) = @_;
+    return 1 if $name =~ /^glBindFramebuffer/ and $pname eq "framebuffer";
+    return 1 if $name =~ /^glBlitNamedFramebuffer/ and $pname =~ /(read|draw)Framebuffer/;
+    return 1 if $name =~ /^glCheckNamedFramebufferStatus/ and $pname eq "framebuffer";
+    return 1 if $name =~ /^glClearNamedFramebuffer/ and $pname eq "framebuffer";
+    return 1 if $name =~ /^glGetNamedFramebufferAttachmentParameter/ and $pname eq "framebuffer";
+    return 1 if $name =~ /^glGetNamedFramebufferParameter/ and $pname eq "framebuffer";
+    return 1 if $name =~ /^glInvalidateNamedFramebuffer/ and $pname eq "framebuffer";
+    return 1 if $name =~ /^glNamedFramebufferParameter/ and $pname eq "framebuffer";
+    return 1 if $name =~ /^glNamedFramebufferSampleLocations/ and $pname eq "framebuffer";
+    return 1 if $name =~ /^glNamedFramebufferSampleLocations/ and $pname eq "framebuffer";
+    return 1 if $name =~ /^glNamedFramebufferSamplePositions/ and $pname eq "framebuffer";
+    return 1 if $name =~ /^glNamedFramebufferTextureMultiview/ and $pname eq "framebuffer";
+    return 0;
+}
+
+sub manual_wow64_wrapper($)
+{
+    my $name = shift;
+    return 0 if $name =~ /^glBufferStorageExternal/;
+    return 0 if $name =~ /^glBufferStorageMem/;
+    return "glBufferStorage"               if $name =~ /^glBufferStorage/;
+    return "glDeleteBuffers"               if $name =~ /^glDeleteBuffers/;
+    return "glFlushMappedBufferRange"      if $name =~ /^glFlushMappedBufferRange/;
+    return "glFlushMappedNamedBufferRange" if $name =~ /^glFlushMappedNamedBufferRange/;
+    return "glGetBufferPointerv"           if $name =~ /^glGetBufferPointerv/;
+    return "glGetNamedBufferPointerv"      if $name =~ /^glGetNamedBufferPointerv/;
+    return "glMapBufferRange"              if $name =~ /^glMapBufferRange/;
+    return "glMapBuffer"                   if $name =~ /^glMapBuffer/;
+    return "glMapNamedBufferRange"         if $name =~ /^glMapNamedBufferRange/;
+    return "glMapNamedBuffer"              if $name =~ /^glMapNamedBuffer/;
+    return 0 if $name =~ /^glNamedBufferStorageExternal/;
+    return 0 if $name =~ /^glNamedBufferStorageMem/;
+    return "glNamedBufferStorage"          if $name =~ /^glNamedBufferStorage/;
+    return "glUnmapBuffer"                 if $name =~ /^glUnmapBuffer/;
+    return "glUnmapNamedBuffer"            if $name =~ /^glUnmapNamedBuffer/;
+}
+
 my %wow64_invalidate_buffer =
     (
      "glBufferAttachMemoryNV" => 1,
@@ -374,17 +351,6 @@ my %state_attrib_funcs =
      "glLightModeli" => "params->pname, &params->param, sizeof(params->param)",
     );
 
-#
-# Used to convert some types
-#
-sub ConvertType($)
-{
-    my $arg = shift;
-    my $ret = $arg->textContent();
-    my @type = $arg->findnodes("./ptype");
-    return $ret;
-}
-
 sub get_func_trace($$$)
 {
     my ($name, $func, $param_names) = @_;
@@ -417,27 +383,25 @@ sub get_func_trace($$$)
     return "TRACE( \"$trace_fmt\\n\"$trace_arg );\n";
 }
 
-sub get_func_args($$)
+sub get_func_args($)
 {
-    my ($func, $unix) = @_;
+    my $func = shift;
     my $ret = "";
     foreach my $arg (@{$func->[1]})
     {
         my $ptype = get_arg_type( $arg );
         my $pname = get_arg_name( $arg );
-        $ret .= " " . ($unix ? ConvertType( $arg ) : $arg->textContent()) . ",";
+        $ret .= " " . $arg->textContent() . ",";
     }
-    $ret .= " HPBUFFERARB client_pbuffer," if $unix && $func->[0] =~ /HPBUFFERARB/;
-    $ret .= " HGLRC client_context," if $unix && $func->[0] =~ /HGLRC/ && @{$func->[1]};
     $ret =~ s/,$/ /;
     $ret ||= "void";
     return $ret;
 }
 
-sub get_func_ret($$)
+sub get_func_ret($)
 {
-    my ($func, $unix) = @_;
-    my $ret = $unix ? ConvertType( $func->[0] ) : $func->[0]->textContent();
+    my $func = shift;
+    my $ret = $func->[0]->textContent();
     $ret =~ s/ $//;
     return $ret;
 }
@@ -445,11 +409,11 @@ sub get_func_ret($$)
 sub generate_unix_thunk($$$$)
 {
     my ($name, $func, $is_wow64, $prefix) = @_;
-    my $func_ret = get_func_ret( $func, 0 );
-    my $manual_wow64_wrapper = $is_wow64 && defined $manual_wow64_wrappers{$name};
-    my $need_wrap = $manual_wow64_wrapper || needs_wrapper( $name, $func );
+    my $func_ret = get_func_ret( $func );
+    my $wow64_wrap = $is_wow64 ? manual_wow64_wrapper( $name ) : 0;
+    my $wrapper = $wow64_wrap || needs_wrapper( $name, $func );
     my $need_lock = 0;
-    my $need_funcs = !$need_wrap || ($prefix eq "ext" && $name !~ /^wgl/);
+    my $need_funcs = !$wrapper || $name !~ /^wgl/;
     my $teb = $is_wow64 ? "teb" : "params->teb";
     my $ret_stat = "return STATUS_SUCCESS;";
     my $invalidation = "";
@@ -458,6 +422,7 @@ sub generate_unix_thunk($$$$)
     my $use_pbuffer = 0;
     my $use_context = 0;
     my $call_args = "";
+    my @map_args = ();
     my $ret_expr = "";
     my $use_dc = 0;
     my $vars = "";
@@ -474,7 +439,7 @@ sub generate_unix_thunk($$$$)
     $use_context = @{$func->[1]} && get_arg_type( ${$func->[1]}[0] ) eq "HGLRC";
 
     $ret_expr = "params->ret = " if !is_void_func( $func );
-    $call_args .= " $teb," if $need_wrap;
+    $call_args .= " $teb," if $wrapper;
     if ($is_wow64)
     {
         my $need_manual_thunk = 0;
@@ -489,7 +454,7 @@ sub generate_unix_thunk($$$$)
 
             if ($ptype ne "PTR32")
             {
-                if (grep(/^$pname/, @{$map_default_fbo_thunks{$name}}))
+                if (map_default_fbo( $name, $pname ))
                 {
                     $call_args .= " $pname,";
                 }
@@ -554,7 +519,7 @@ sub generate_unix_thunk($$$$)
             }
         }
         $ret .= "    } *params = args;\n";
-        if (!$need_wrap && $need_manual_thunk)
+        if (!$wrapper && $need_manual_thunk)
         {
             $ret .= "    FIXME( \"params %p stub!\\n\", params );\n";
             $ret .= "    return STATUS_NOT_IMPLEMENTED;\n";
@@ -571,7 +536,7 @@ sub generate_unix_thunk($$$$)
                 : "    buffer = invalidate_buffer_target( $teb, params->target );\n";
             $output_conv .= "    if (buffer) free_buffer( funcs, buffer );\n";
         }
-        $ret .= "    TEB *teb = get_teb64( params->teb );\n" if $need_wrap || (!$use_dc && !$use_pbuffer && !$use_context);
+        $ret .= "    TEB *teb = get_teb64( params->teb );\n" if $wrapper || (!$use_dc && !$use_pbuffer && !$use_context);
     }
     else
     {
@@ -585,7 +550,7 @@ sub generate_unix_thunk($$$$)
             }
             else
             {
-                if (grep(/^$pname/, @{$map_default_fbo_thunks{$name}}))
+                if (map_default_fbo( $name, $pname ))
                 {
                     $call_args .= " $pname,";
                 }
@@ -601,9 +566,10 @@ sub generate_unix_thunk($$$$)
     foreach my $arg (@{$func->[1]})
     {
         my $pname = get_arg_name( $arg );
-        if (grep(/^$pname/, @{$map_default_fbo_thunks{$name}}))
+        if (map_default_fbo( $name, $pname ))
         {
             $ret .= "    GLuint $pname = params->$pname;\n";
+            push @map_args, $pname;
         }
     }
 
@@ -624,33 +590,35 @@ sub generate_unix_thunk($$$$)
         $ret .= "    if (!funcs->p_$name) return STATUS_NOT_IMPLEMENTED;\n";
     }
     $ret .= $input_conv;
-    foreach my $arg (@{$map_default_fbo_thunks{$name}})
+    foreach my $arg (@map_args)
     {
         my $target = "GL_DRAW_FRAMEBUFFER";
         $target = "GL_READ_FRAMEBUFFER" if $arg =~ "readFramebuffer";
         $target = "params->target" if $call_args =~ "params->target";
         $ret .= "    if (!$arg) $arg = get_default_fbo( $teb, $target );\n";
     }
-    $ret .= "    resolve_default_fbo( $teb, TRUE );\n" if defined $resolve_default_fbo_thunks{$name};
-    $ret .= "    push_default_fbo( $teb );\n" if defined $hide_default_fbo_thunks{$name};
+    $ret .= "    resolve_default_fbo( $teb, TRUE );\n" if resolve_default_fbo( $name );
+    $ret .= "    push_default_fbo( $teb );\n" if hide_default_fbo( $name );
     $ret .= "    pthread_mutex_lock( &wgl_lock );\n$invalidation" if $need_lock;
     $ret .= "    $ret_expr";
-    $call_args =~ s/,$/ /;
-    if ($manual_wow64_wrapper)
+    if ($wow64_wrap)
     {
-        $ret .= "wow64_$name($call_args);\n";
+        $ret .= "wow64_$wow64_wrap($call_args funcs->p_$name );\n";
     }
-    elsif ($need_wrap)
+    elsif ($wrapper)
     {
-        $ret .= "wrap_$name($call_args);\n";
+        $call_args .= " funcs->p_$name," if $name !~ /^wgl/;
+        $call_args =~ s/,$/ /;
+        $ret .= "wrap_$wrapper($call_args);\n";
     }
     else
     {
+        $call_args =~ s/,$/ /;
         $ret .= "funcs->p_$name($call_args);\n";
     }
     $ret .= "    pthread_mutex_unlock( &wgl_lock );\n" if $need_lock;
     $ret .= "    set_current_fbo( $teb, params->target, params->framebuffer );\n" if $name =~ /glBindFramebuffer/;
-    $ret .= "    pop_default_fbo( $teb );\n" if defined $hide_default_fbo_thunks{$name};
+    $ret .= "    pop_default_fbo( $teb );\n" if hide_default_fbo( $name );
     if (defined $state_attrib_funcs{$name})
     {
         my $state_args = $state_attrib_funcs{$name};
@@ -678,8 +646,8 @@ sub generate_unix_thunk($$$$)
 sub generate_wrapper_declaration($$$)
 {
     my ($name, $func, $is_wow64) = @_;
-    my $decl_args = get_func_args( $func, 0 );
-    my $ret_type = get_func_ret( $func, 0 );
+    my $decl_args = get_func_args( $func );
+    my $ret_type = get_func_ret( $func );
     my $ret = "extern ";
     $ret .= $ret_type;
     $ret .= " " unless $ret_type =~ /\*$/;
@@ -699,6 +667,7 @@ sub generate_wrapper_declaration($$$)
     $ret .= " HPBUFFERARB handle," if $ret_type =~ /HPBUFFERARB/;
     $ret .= " HGLRC handle," if $ret_type =~ /HGLRC/;
     $ret .= " GLsync handle," if $ret_type =~ /GLsync/;
+    $ret .= " PFN_$name func," if $name !~ /^wgl/;
     $ret =~ s/,$/ /;
     $ret .= ");\n";
     return $ret;
@@ -716,8 +685,8 @@ sub get_handle_function($)
 sub generate_win_thunk($$)
 {
     my ($name, $func) = @_;
-    my $decl_args = get_func_args( $func, 0 );
-    my $func_ret = get_func_ret( $func, 0 );
+    my $decl_args = get_func_args( $func );
+    my $func_ret = get_func_ret( $func );
     my $params = "";
     my $checks = "";
     my $ret = "";
@@ -744,7 +713,7 @@ sub generate_win_thunk($$)
     $ret .= " = {$params }";
     $ret .= ";\n";
     $ret .= "    NTSTATUS status;\n";
-    $ret .= "    " . get_func_trace( $name, $func, 1 ) if $gen_traces;
+    $ret .= "    " . get_func_trace( $name, $func, 1 );
     $ret .= $checks;
     $ret .= "    if ((status = UNIX_CALL( $name, &args ))) WARN( \"$name returned %#lx\\n\", status );\n";
     $ret .= "    return args.ret;\n" unless is_void_func($func);
@@ -767,8 +736,8 @@ sub get_wow64_arg_type($)
 sub generate_null_func($$)
 {
     my ($name, $func) = @_;
-    my $decl_args = get_func_args( $func, 1 );
-    my $func_ret = get_func_ret( $func, 1 );
+    my $decl_args = get_func_args( $func );
+    my $func_ret = get_func_ret( $func );
     my $ret = "";
 
     $ret .= "static $func_ret null_$name($decl_args)\n";
@@ -850,31 +819,6 @@ sub get_arg_name($)
     return $name[0]->textContent();
 }
 
-#
-# Extract and checks the number of arguments
-#
-if (@ARGV > 1) {
-    my $name0=$0;
-    $name0=~s%^.*/%%;
-    die "Usage: $name0 [version]\n";
-}
-my $version = $ARGV[0] || "1.1";
-if ($version eq "1.0") {
-    %norm_categories = %cat_1_0;
-} elsif ($version eq "1.1") {
-    %norm_categories = %cat_1_1;
-} elsif ($version eq "1.2") {
-    %norm_categories = %cat_1_2;
-} elsif ($version eq "1.3") {
-    %norm_categories = %cat_1_3;
-} elsif ($version eq "1.4") {
-    %norm_categories = %cat_1_4;
-} elsif ($version eq "1.5") {
-    %norm_categories = %cat_1_5;
-} else {
-    die "Incorrect OpenGL version.\n";
-}
-
 #
 # Fetch the registry files
 #
@@ -893,9 +837,7 @@ chdir(dirname($0));
 
 #
 # Then, create the list of all OpenGL functions using the registry
-# files. This will create two hash-tables, one with all the function
-# whose category matches the one listed in '@norm_categories', the other
-# with all other functions.
+# files.
 #
 # An element of the hash table is a reference to an array with these
 # elements :
@@ -905,13 +847,22 @@ chdir(dirname($0));
 #  - reference to an array of XML nodes giving the list of arguments (an empty array
 #    for a 'void' function).
 #
-my %gl_extensions;
+my %gl_extensions =
+    (
+     # exposed by native drivers, but not included in registry xml:
+     "GL_APPLE_packed_pixels" => 1, # no specification
+     "GL_ATI_texture_compression_3dc" => 1, # no specification
+     "GL_EXT_texture_edge_clamp" => 1, # https://developer.download.nvidia.com/opengl/specs/GL_EXT_texture_edge_clamp.txt
+     "GL_EXT_texture_rectangle" => 1, # https://people.freedesktop.org/~marcheu/extensions/static/GL_EXT_texture_rectangle.txt
+     "GL_MESA_texture_signed_rgba" => 1, # https://docs.mesa3d.org/specs/MESA_texture_signed_rgba.spec
+    );
 my %norm_functions;
 my %ext_functions;
 my %wgl_extensions;
 my %wgl_functions;
 my %egl_extensions;
 my %egl_functions;
+my %all_functions;
 my %all_enums;
 
 my %gl_types =
@@ -939,13 +890,31 @@ my @extra_wgl_functions = ( "wglGetDefaultProcAddress" );
 
 my %unsupported_extgroups =
    (
-    "EGL_ANDROID_" => 1,
-    "EGL_ANGLE_" => 1,
-    "EGL_ARM_" => 1,
-    "EGL_HI_" => 1,
-    "EGL_NOK_" => 1,
-    "EGL_QNX_" => 1,
-    "EGL_TIZEN_" => 1,
+    "WGL_3DL_" => 1,
+    "WGL_I3D_" => 1,
+    "WGL_OML_" => 1,
+   );
+my %unsupported_extensions =
+   (
+    "WGL_AMD_gpu_association" => 1,
+    "WGL_ARB_buffer_region" => 1,
+    "WGL_EXT_display_color_table" => 1,
+    "WGL_EXT_make_current_read" => 1,
+    "WGL_EXT_pbuffer" => 1,
+    "WGL_EXT_pixel_format" => 1,
+    "WGL_NV_copy_image" => 1,
+    "WGL_NV_delay_before_swap" => 1,
+    "WGL_NV_DX_interop" => 1,
+    "WGL_NV_DX_interop2" => 1,
+    "WGL_NV_gpu_affinity" => 1,
+    "WGL_NV_present_video" => 1,
+    "WGL_NV_swap_group" => 1,
+    "WGL_NV_video_capture" => 1,
+    "WGL_NV_video_output" => 1,
+   );
+my %unexposed_extgroups =
+   (
+    "EGL_" => 1,
     "GL_ANDROID_" => 1,
     "GL_ANGLE_" => 1,
     "GL_ARM_" => 1,
@@ -954,12 +923,12 @@ my %unsupported_extgroups =
     "GL_HUAWEI_" => 1,
     "GL_QCOM_" => 1,
     "GL_VIV_" => 1,
-    "WGL_3DL_" => 1,
-    "WGL_I3D_" => 1,
-    "WGL_OML_" => 1,
    );
-my %unsupported_extensions =
+my %unexposed_extensions =
    (
+    "GL_EXT_memory_object_fd" => 1,
+    "GL_EXT_semaphore_fd" => 1,
+    # GLES-only extensions:
     "GL_APPLE_copy_texture_levels" => 1,
     "GL_APPLE_framebuffer_multisample" => 1,
     "GL_APPLE_sync" => 1,
@@ -1034,30 +1003,6 @@ my %unsupported_extensions =
     "GL_OES_vertex_array_object" => 1,
     "GL_OES_viewport_array" => 1,
     "GL_OVR_multiview_multisampled_render_to_texture" => 1,
-    "WGL_AMD_gpu_association" => 1,
-    "WGL_ARB_buffer_region" => 1,
-    "WGL_EXT_display_color_table" => 1,
-    "WGL_EXT_make_current_read" => 1,
-    "WGL_EXT_pbuffer" => 1,
-    "WGL_EXT_pixel_format" => 1,
-    "WGL_NV_copy_image" => 1,
-    "WGL_NV_delay_before_swap" => 1,
-    "WGL_NV_DX_interop" => 1,
-    "WGL_NV_DX_interop2" => 1,
-    "WGL_NV_gpu_affinity" => 1,
-    "WGL_NV_present_video" => 1,
-    "WGL_NV_swap_group" => 1,
-    "WGL_NV_video_capture" => 1,
-    "WGL_NV_video_output" => 1,
-   );
-my %unexposed_extgroups =
-   (
-    "EGL_" => 1,
-   );
-my %unexposed_extensions =
-   (
-    "GL_EXT_memory_object_fd" => 1,
-    "GL_EXT_semaphore_fd" => 1,
    );
 my %extension_aliases =
     (
@@ -1080,9 +1025,10 @@ my %extension_aliases =
 my %supported_apis =
     (
      "gl" => 1,
-     "gles" => 1,
      "gles1" => 1,
      "gles2" => 1,
+     "wgl" => 1,
+     "egl" => 1,
     );
 
 sub is_supported_api($)
@@ -1118,7 +1064,7 @@ sub is_exposed_extension($)
 sub is_exposed_function($)
 {
     my $func = shift;
-    foreach my $ext (@{$func->[2]})
+    foreach my $ext (keys %{$func->[2]})
     {
         return 1 if is_exposed_extension($ext);
     }
@@ -1130,8 +1076,7 @@ sub needs_wrapper($$)
 {
     my ($name, $func) = @_;
     return 0 if defined $manual_win_functions{$name};
-    return 1 if defined $manual_unix_thunks{$name};
-    return 0;
+    return manual_unix_thunks( $name );
 }
 
 sub add_extension($)
@@ -1160,7 +1105,7 @@ sub parse_registry($)
     my $alias = "";
     my $number = "";
     my $depth = 0;
-    my $api = "";
+    my %apis = ();
 
     open IN, "$file" or die "cannot open $file";
 
@@ -1172,9 +1117,9 @@ sub parse_registry($)
         if ($depth == 1 and ($key) = ($line =~ /'(\w+)' : \{/))
         {
             $name = $key;
-            $api = "gl" if $name =~ /^WGL_/;
-            $api = "glx" if $name =~ /^GLX_/;
-            $api = "glu" if $name =~ /^GLU_/;
+            $apis{"gl"} = 1 if $name =~ /^WGL_/;
+            $apis{"glx"} = 1 if $name =~ /^GLX_/;
+            $apis{"glu"} = 1 if $name =~ /^GLU_/;
         }
 
         $depth++ if $line =~ /\{/;
@@ -1188,13 +1133,15 @@ sub parse_registry($)
         elsif (($key, $val) = ($line =~ /'(.*)' : (.*),/))
         {
             $number = $val if $key =~ /(|arb|es|sc)number/;
-            $api = "gl" if $key =~ /^(arb)?number$/ and $api eq "";
-            $api = "gles" if $key eq "esnumber" and $api eq "";
-            $api = "glsc" if $key eq "scnumber" and $api eq "";
+            next if defined $apis{"glx"} or defined $apis{"glu"};
+            $apis{"gl"} = 1 if $key =~ /^(arb)?number$/;
+            $apis{"gles"} = 1 if $key eq "esnumber";
+            $apis{"glsc"} = 1 if $key eq "scnumber";
         }
 
-        $api = "gl" if $depth == 1 and $api eq "";
-        if ($depth == 1 and is_supported_api( $api ) and is_supported_extension( $name ) and $flags =~ /public/ and $number ne "")
+        $apis{"gl"} = 1 if $depth == 1 and length( keys %apis ) == 0;
+        if ($depth == 1 and (defined $apis{"gl"} or defined $apis{"gles"}) and
+            is_supported_extension( $name ) and $flags =~ /public/ and $number ne "")
         {
             add_extension( $name );
 
@@ -1205,7 +1152,11 @@ sub parse_registry($)
             }
         }
 
-        $name = $flags = $alias = $api = $number = "" if $depth == 1;
+        if ($depth == 1)
+        {
+            $name = $flags = $alias = $number = "";
+            %apis = ();
+        }
     }
 
     close IN;
@@ -1228,21 +1179,52 @@ sub parse_registry($)
     }
 }
 
+sub add_function($$$$)
+{
+    my ($name, $api, $feature, $append) = @_;
+
+    if ($feature =~ /^WGL_VERSION_\d+_\d+/)
+    {
+        return if defined $remapped_wgl_functions{$name} and !$remapped_wgl_functions{$name};
+        my $mapped = $remapped_wgl_functions{$name} || $name;
+        $wgl_functions{$mapped} = $all_functions{$name};
+    }
+    elsif ($feature =~ /^EGL_VERSION_\d+_\d+/)
+    {
+        $egl_functions{$name} = $all_functions{$name};
+    }
+    elsif ($feature =~ /^GL_VERSION_1_[01]$/)
+    {
+        $norm_functions{$name} = $all_functions{$name};
+    }
+    elsif ($feature =~ /^GL_ES_VERSION_/)
+    {
+        return;
+    }
+    elsif (is_supported_api( $api ) and !defined $norm_functions{$name})
+    {
+        return if defined $ext_functions{$name} and not $append;
+        if (!defined $ext_functions{$name})
+        {
+            $ext_functions{$name} = [ $all_functions{$name}[0], $all_functions{$name}[1], () ];
+        }
+        $ext_functions{$name}->[2]->{$feature} = 1;
+    }
+}
+
 sub parse_file($)
 {
     my $file = shift;
     my $xml = XML::LibXML->load_xml( location => $file );
-    my %functions;
     my %enums;
 
-    # save all functions
     foreach my $command ($xml->findnodes("/registry/commands/command"))
     {
         my $proto = @{$command->findnodes("./proto")}[0];
         my $name = @{$command->findnodes("./proto/name")}[0];
         $proto->removeChild( $name );
         my @params = $command->findnodes("./param");
-        $functions{$name->textContent()} = [ $proto, \@params ];
+        $all_functions{$name->textContent()} = [ $proto, \@params ];
     }
 
     # save all enums
@@ -1262,127 +1244,44 @@ sub parse_file($)
         $gl_types{$name} = $type->textContent;
     }
 
-    # generate norm functions
-    foreach my $feature ($xml->findnodes("/registry/feature"))
+    foreach my $feat ($xml->findnodes("/registry/feature"))
     {
-        if ($feature->{api} eq "wgl")
-        {
-            foreach my $cmd ($feature->findnodes("./require/command"))
-            {
-                my $name = $cmd->{name};
-                if (defined $remapped_wgl_functions{$name})
-                {
-                    next unless $remapped_wgl_functions{$name};
-                    $name = $remapped_wgl_functions{$name};
-                }
-                $wgl_functions{$name} = $functions{$cmd->{name}};
-            }
-            foreach my $name (@extra_wgl_functions)
-            {
-                $wgl_functions{$name} = $functions{$name} if defined $functions{$name};
-            }
-        }
-        elsif ($feature->{api} eq "egl")
+        my ($api, $feature) = ($feat->{api}, $feat->{name});
+        my $compat;
+
+        $feature =~ s/^GL_VERSION_ES_.*_(1_\d+)$/GL_ES_VERSION_$1/;
+        if (my ($version) = ($feature =~ /GL_ES_VERSION_(\d+_\d+)$/))
         {
-            foreach my $cmd ($feature->findnodes("./require/command"))
-            {
-                my $name = $cmd->{name};
-                $egl_functions{$name} = $functions{$cmd->{name}};
-            }
-            foreach my $enum ($feature->findnodes("./require/enum"))
-            {
-                $all_enums{$enum->{name}} = $enums{$enum->{name}};
-            }
+            $compat = ($version =~ /^1_/ ? "GL_NV_ES1_1" : "GL_ARB_ES" . $version);
+            add_extension( $compat . "_compatibility" ) if $version =~ /^1_/;
         }
-        next unless defined $norm_categories{$feature->{name}};
-        foreach my $cmd ($feature->findnodes("./require/command"))
+
+        foreach my $cmd ($feat->findnodes("./require/command"))
         {
-            $norm_functions{$cmd->{name}} = $functions{$cmd->{name}};
+            add_function( $cmd->{name}, $api, $compat . "_compatibility", 0 ) if $compat;
+            add_function( $cmd->{name}, $api, $feature, 0 );
         }
-        foreach my $enum ($feature->findnodes("./require/enum"))
+
+        next if $api eq "wgl";
+        foreach my $enum ($feat->findnodes("./require/enum"))
         {
             $all_enums{$enum->{name}} = $enums{$enum->{name}};
         }
     }
-
-    # generate extension functions from norm functions, if they are newer than the category
-    foreach my $feature ($xml->findnodes("/registry/feature"))
+    foreach my $name (@extra_wgl_functions)
     {
-        my $feature_name = $feature->{name};
-        if ($feature_name =~ /GL_VERSION_ES_.*_1_/)
-        {
-            $feature_name = "GL_NV_ES1_1_compatibility";
-            add_extension( $feature_name );
-        }
-        elsif (my ($version) = ($feature_name =~ /GL_ES_VERSION_(.*)/))
-        {
-            $feature_name = "GL_ARB_ES" . $version . "_compatibility";
-        }
-        else
-        {
-            next unless is_supported_api( $feature->{api} );
-        }
-        next if defined $norm_categories{$feature_name};
-        foreach my $cmd ($feature->findnodes("./require/command"))
-        {
-            my $name = $cmd->{name};
-            next if $norm_functions{$name} || $ext_functions{$name};
-            $ext_functions{$name} = [ $functions{$name}[0], $functions{$name}[1], [ $feature_name ] ];
-        }
-        foreach my $enum ($feature->findnodes("./require/enum"))
-        {
-            $all_enums{$enum->{name}} = $enums{$enum->{name}};
-        }
+        add_function( $name, "wgl", "WGL_VERSION_1_0", 0 );
     }
 
-    # generate extension functions
     foreach my $ext ($xml->findnodes("/registry/extensions/extension"))
     {
-        next unless is_supported_extension( $ext->{name} );
-        if ($ext->{supported} eq "wgl")
-        {
-            foreach my $cmd ($ext->findnodes("./require/command"))
-            {
-                my $name = $cmd->{name};
-                $ext_functions{$name} = [ $functions{$name}[0], $functions{$name}[1], [ $ext->{name} ] ];
-            }
-            foreach my $enum ($ext->findnodes("./require/enum"))
-            {
-                $all_enums{$enum->{name}} = $enums{$enum->{name}};
-            }
-            add_extension( $ext->{name} );
-            next;
-        }
-        if ($ext->{supported} eq "egl")
-        {
-            foreach my $cmd ($ext->findnodes("./require/command"))
-            {
-                my $name = $cmd->{name};
-                $ext_functions{$name} = [ $functions{$name}[0], $functions{$name}[1], [ $ext->{name} ] ];
-            }
-            foreach my $enum ($ext->findnodes("./require/enum"))
-            {
-                $all_enums{$enum->{name}} = $enums{$enum->{name}};
-            }
-            add_extension( $ext->{name} );
-            next;
-        }
-        next unless is_supported_api( $ext->{supported} );
+        next unless is_supported_extension( $ext->{name} ) and is_supported_api( $ext->{supported} );
         foreach my $req ($ext->findnodes("./require"))
         {
-            next unless !$req->{api} || $req->{api} eq "gl";
+            next unless ($req->{api} || "gl") eq "gl";
             foreach my $cmd ($req->findnodes("./command"))
             {
-                my $name = $cmd->{name};
-                next if $norm_functions{$name};
-                if (!$ext_functions{$name})
-                {
-                    $ext_functions{$name} = [ $functions{$name}[0], $functions{$name}[1], [ $ext->{name} ] ];
-                }
-                else
-                {
-                    push @{$ext_functions{$name}->[2]}, $ext->{name};
-                }
+                add_function( $cmd->{name}, $req->{api} || "gl", $ext->{name}, 1 );
             }
         }
         foreach my $enum ($ext->findnodes("./require/enum"))
@@ -1451,37 +1350,37 @@ print HEADER "\n";
 print HEADER "#ifndef GL_NO_PROTOTYPES\n";
 foreach (sort keys %norm_functions)
 {
-    my $decl_args = get_func_args( $norm_functions{$_}, 1 );
-    my $func_ret = get_func_ret( $norm_functions{$_}, 1 );
+    my $decl_args = get_func_args( $norm_functions{$_} );
+    my $func_ret = get_func_ret( $norm_functions{$_} );
     printf HEADER "%-10s GLAPIENTRY $_($decl_args);\n", $func_ret;
 }
 print HEADER "#endif\n\n";
 
 foreach (sort keys %wgl_functions)
 {
-    my $decl_args = get_func_args( $wgl_functions{$_}, 1 );
-    my $func_ret = get_func_ret( $wgl_functions{$_}, 1 );
+    my $decl_args = get_func_args( $wgl_functions{$_} );
+    my $func_ret = get_func_ret( $wgl_functions{$_} );
     printf HEADER "typedef %-10s (GLAPIENTRY *PFN_$_)($decl_args);\n", $func_ret;
 }
 
 foreach (sort keys %egl_functions)
 {
-    my $decl_args = get_func_args( $egl_functions{$_}, 1 );
-    my $func_ret = get_func_ret( $egl_functions{$_}, 1 );
+    my $decl_args = get_func_args( $egl_functions{$_} );
+    my $func_ret = get_func_ret( $egl_functions{$_} );
     printf HEADER "typedef %-10s (GLAPIENTRY *PFN_$_)($decl_args);\n", $func_ret;
 }
 
 foreach (sort keys %norm_functions)
 {
-    my $decl_args = get_func_args( $norm_functions{$_}, 1 );
-    my $func_ret = get_func_ret( $norm_functions{$_}, 1 );
+    my $decl_args = get_func_args( $norm_functions{$_} );
+    my $func_ret = get_func_ret( $norm_functions{$_} );
     printf HEADER "typedef %-10s (GLAPIENTRY *PFN_$_)($decl_args);\n", $func_ret;
 }
 
 foreach (sort keys %ext_functions)
 {
-    my $decl_args = get_func_args( $ext_functions{$_}, 1 );
-    my $func_ret = get_func_ret( $ext_functions{$_}, 1 );
+    my $decl_args = get_func_args( $ext_functions{$_} );
+    my $func_ret = get_func_ret( $ext_functions{$_} );
     printf HEADER "typedef %-10s (GLAPIENTRY *PFN_$_)($decl_args);\n", $func_ret;
 }
 print HEADER "\n";
@@ -1492,6 +1391,7 @@ foreach (sort keys %wgl_extensions)
     printf HEADER " \\\n    USE_GL_EXT(\%s)", $_;
 }
 print HEADER "\n\n";
+print HEADER "#define WGL_FIRST_EXTENSION " . (sort keys %wgl_extensions)[0] . "\n\n";
 print HEADER "#define ALL_WGL_FUNCS";
 foreach (sort keys %wgl_functions)
 {
@@ -1525,20 +1425,13 @@ foreach (sort keys %ext_functions)
     printf HEADER " \\\n    USE_GL_FUNC(\%s)", $_;
 }
 print HEADER "\n\n";
-print HEADER "#define ALL_GL_CLIENT_EXTS";
+print HEADER "#define ALL_GL_EXTS";
 foreach (sort keys %gl_extensions)
 {
     next unless is_exposed_extension($_);
     printf HEADER " \\\n    USE_GL_EXT(\%s)", $_;
 }
 print HEADER "\n\n";
-print HEADER "#define ALL_GL_EXTS ALL_GL_CLIENT_EXTS";
-foreach (sort keys %gl_extensions)
-{
-    next if is_exposed_extension($_);
-    printf HEADER " \\\n    USE_GL_EXT(\%s)", $_;
-}
-print HEADER "\n\n";
 print HEADER "#define ALL_GL_FUNCS";
 foreach (sort keys %norm_functions)
 {
@@ -1675,7 +1568,8 @@ open OUT, ">thunks.c" or die "cannot create thunks.c";
 print OUT "/* Automatically generated from http://www.opengl.org/registry files; DO NOT EDIT! */\n\n";
 
 print OUT "#include <stdarg.h>\n";
-print OUT "#include <stddef.h>\n\n";
+print OUT "#include <stddef.h>\n";
+print OUT "#include <stdlib.h>\n\n";
 
 print OUT "#include \"ntstatus.h\"\n";
 print OUT "#include \"windef.h\"\n";
@@ -1712,8 +1606,8 @@ foreach (sort keys %ext_functions)
 {
     next unless is_exposed_function( $ext_functions{$_} );
     next unless defined $manual_win_functions{$_} || $manual_win_thunks{$_};
-    my $decl_args = get_func_args( $ext_functions{$_}, 0 );
-    my $func_ret = get_func_ret( $ext_functions{$_}, 0 );
+    my $decl_args = get_func_args( $ext_functions{$_} );
+    my $func_ret = get_func_ret( $ext_functions{$_} );
     printf OUT "extern %s WINAPI %s(%s);\n", $func_ret, $_, $decl_args;
 }
 
@@ -1725,6 +1619,50 @@ foreach (sort keys %ext_functions)
     printf OUT "    %s,\n", $_;
 }
 print OUT "};\n";
+# Then the table giving the string <-> function correspondence */
+print OUT "const struct registry_entry extension_registry[] =\n";
+print OUT "{\n";
+foreach (sort keys %ext_functions)
+{
+    next unless is_exposed_function( $ext_functions{$_} );
+    my $func = $ext_functions{$_};
+    my $major = 0;
+    my $minor = 0;
+    my @exts;
+    foreach my $ext (sort keys %{$func->[2]})
+    {
+        if ($ext =~ /GL_VERSION_(\d+)_(\d+)/)
+        {
+            ($major, $minor) = ($1, $2);
+            next;
+        }
+        next unless is_exposed_extension( $ext );
+        push @exts, $ext;
+        foreach my $alias (@{$extension_aliases{$ext}})
+        {
+            if ($alias =~ /GL_VERSION_(\d+)_(\d+)/)
+            {
+                ($major, $minor) = ($1, $2);
+                next;
+            }
+            push @exts, $alias;
+        }
+    }
+    push @exts, "GL_EXTENSION_COUNT";
+    printf OUT "    { \"%s\", $_, $major, $minor, { %s }},\n", $_, join(", ", @exts);
+}
+print OUT "};\n";
+print OUT "\n";
+print OUT "static int registry_entry_cmp( const void *a, const void *b )\n";
+print OUT "{\n";
+print OUT "    const struct registry_entry *entry = b;\n";
+print OUT "    return strcmp( a, entry->name );\n";
+print OUT "}\n";
+print OUT "\n";
+print OUT "struct registry_entry *get_function_entry( const char *name )\n";
+print OUT "{\n";
+print OUT "    return bsearch( name, extension_registry, ARRAYSIZE(extension_registry), sizeof(extension_registry[0]), registry_entry_cmp );\n";
+print OUT "}\n";
 
 close OUT;
 
@@ -1738,18 +1676,18 @@ print OUT "typedef ULONG PTR32;\n\n";
 
 foreach (sort keys %wgl_functions)
 {
-    next if !needs_wrapper( $_, $wgl_functions{$_} );
+    next unless needs_wrapper( $_, $wgl_functions{$_} ) eq $_;
     print OUT generate_wrapper_declaration($_, $wgl_functions{$_}, 0);
 }
 foreach (sort keys %norm_functions)
 {
-    next if !needs_wrapper( $_, $norm_functions{$_} );
+    next unless needs_wrapper( $_, $norm_functions{$_} ) eq $_;
     print OUT generate_wrapper_declaration($_, $norm_functions{$_}, 0);
 }
 foreach (sort keys %ext_functions)
 {
     next unless is_exposed_function( $ext_functions{$_} );
-    next if !needs_wrapper( $_, $ext_functions{$_} );
+    next unless needs_wrapper( $_, $ext_functions{$_} ) eq $_;
     print OUT generate_wrapper_declaration($_, $ext_functions{$_}, 0);
 }
 
@@ -1757,18 +1695,18 @@ print OUT "\n#ifdef _WIN64\n";
 
 foreach (sort keys %wgl_functions)
 {
-    next unless defined $manual_wow64_wrappers{$_};
+    next unless manual_wow64_wrapper( $_ ) eq $_;
     print OUT generate_wrapper_declaration($_, $wgl_functions{$_}, 1);
 }
 foreach (sort keys %norm_functions)
 {
-    next unless defined $manual_wow64_wrappers{$_};
+    next unless manual_wow64_wrapper( $_ ) eq $_;
     print OUT generate_wrapper_declaration($_, $norm_functions{$_}, 1);
 }
 foreach (sort keys %ext_functions)
 {
     next unless is_exposed_function( $ext_functions{$_} );
-    next unless defined $manual_wow64_wrappers{$_};
+    next unless manual_wow64_wrapper( $_ ) eq $_;
     print OUT generate_wrapper_declaration($_, $ext_functions{$_}, 1);
 }
 
@@ -1919,32 +1857,4 @@ foreach (sort keys %norm_functions)
     print OUT "    .p_$_ = null_$_,\n";
 }
 print OUT "};\n";
-
-# Then the table giving the string <-> function correspondence */
-my $count = 0;
-foreach (keys %ext_functions)
-{
-    next unless is_exposed_function( $ext_functions{$_} );
-    $count += 1;
-}
-print OUT "\nconst int extension_registry_size = $count;\n";
-print OUT "const struct registry_entry extension_registry[$count] =\n";
-print OUT "{\n";
-foreach (sort keys %ext_functions)
-{
-    next unless is_exposed_function( $ext_functions{$_} );
-    my $func = $ext_functions{$_};
-    my @exts;
-    foreach my $ext (@{$func->[2]})
-    {
-        push @exts, $ext;
-        foreach my $alias (@{$extension_aliases{$ext}})
-        {
-            push @exts, $alias;
-        }
-    }
-    printf OUT "    { \"%s\", \"%s\\0\", offsetof(struct opengl_funcs, p_$_) },\n", $_, join("\\0", sort @exts);
-}
-print OUT "};\n";
-
 close OUT;
diff --git a/dlls/opengl32/private.h b/dlls/opengl32/private.h
index 0e20af576725..7543f868d00a 100644
--- a/dlls/opengl32/private.h
+++ b/dlls/opengl32/private.h
@@ -26,14 +26,22 @@
 #include "winbase.h"
 #include "winternl.h"
 #include "wingdi.h"
-#include "wine/wgl.h"
+#include "wine/opengl_driver.h"
 
-extern const void *extension_procs[];
+struct registry_entry
+{
+    const char *name;      /* name of the extension */
+    void *func;
+    UINT16 major;
+    UINT16 minor;
+    enum opengl_extension extensions[4];
+};
 
 extern int WINAPI wglDescribePixelFormat( HDC hdc, int ipfd, UINT cjpfd, PIXELFORMATDESCRIPTOR *ppfd );
 extern BOOL get_pbuffer_from_handle( HPBUFFERARB handle, HPBUFFERARB *obj );
 extern BOOL get_context_from_handle( HGLRC handle, HGLRC *obj );
 extern BOOL get_sync_from_handle( GLsync handle, GLsync *obj );
 extern void set_gl_error( GLenum error );
+extern struct registry_entry *get_function_entry( const char *name );
 
 #endif /* __WINE_OPENGL32_PRIVATE_H */
diff --git a/dlls/opengl32/tests/opengl.c b/dlls/opengl32/tests/opengl.c
index ed1138c83272..64434c5143b7 100644
--- a/dlls/opengl32/tests/opengl.c
+++ b/dlls/opengl32/tests/opengl.c
@@ -58,6 +58,13 @@ static const char *debugstr_ok( const char *cond )
     } while (0)
 #define ok_ret( e, r )      ok_ex( r, ==, e, UINT, "%#x" )
 
+#define check_gl_error(exp) check_gl_error_(__LINE__, exp)
+static void check_gl_error_( unsigned int line, GLenum exp )
+{
+    GLenum err = glGetError();
+    ok_(__FILE__,line)( err == exp, "glGetError returned %x, expected %x\n", err, exp );
+}
+
 static NTSTATUS (WINAPI *pD3DKMTCreateDCFromMemory)( D3DKMT_CREATEDCFROMMEMORY *desc );
 static NTSTATUS (WINAPI *pD3DKMTDestroyDCFromMemory)( const D3DKMT_DESTROYDCFROMMEMORY *desc );
 
@@ -66,6 +73,7 @@ static HGLRC (WINAPI *pwglCreateContextAttribsARB)(HDC hDC, HGLRC hShareContext,
 
 /* WGL_ARB_extensions_string */
 static const char* (WINAPI *pwglGetExtensionsStringARB)(HDC);
+static const char* (WINAPI *pwglGetExtensionsStringEXT)(void);
 
 /* WGL_ARB_make_current_read */
 static BOOL (WINAPI *pwglMakeContextCurrentARB)(HDC hdraw, HDC hread, HGLRC hglrc);
@@ -108,11 +116,12 @@ static PFN_glCopyNamedBufferSubData pglCopyNamedBufferSubData;
 static PFN_glCreateBuffers pglCreateBuffers;
 static PFN_glDeleteBuffers pglDeleteBuffers;
 static PFN_glDeleteSync pglDeleteSync;
+static PFN_glFenceSync pglFenceSync;
 static PFN_glFlushMappedBufferRange pglFlushMappedBufferRange;
 static PFN_glFlushMappedNamedBufferRange pglFlushMappedNamedBufferRange;
 static PFN_glGenBuffers pglGenBuffers;
+static PFN_glGetStringi pglGetStringi;
 static PFN_glIsSync pglIsSync;
-static PFN_glFenceSync pglFenceSync;
 static PFN_glMapBuffer pglMapBuffer;
 static PFN_glMapBufferRange pglMapBufferRange;
 static PFN_glMapNamedBuffer pglMapNamedBuffer;
@@ -153,6 +162,7 @@ static void init_functions(void)
 
     /* WGL_ARB_extensions_string */
     GET_PROC(wglGetExtensionsStringARB)
+    GET_PROC(wglGetExtensionsStringEXT)
 
     /* WGL_ARB_make_current_read */
     GET_PROC(wglMakeContextCurrentARB);
@@ -195,11 +205,12 @@ static void init_functions(void)
     GET_PROC(glCreateBuffers)
     GET_PROC(glDeleteBuffers)
     GET_PROC(glDeleteSync)
+    GET_PROC(glFenceSync)
     GET_PROC(glFlushMappedBufferRange)
     GET_PROC(glFlushMappedNamedBufferRange)
     GET_PROC(glGenBuffers)
+    GET_PROC(glGetStringi)
     GET_PROC(glIsSync)
-    GET_PROC(glFenceSync)
     GET_PROC(glMapBuffer)
     GET_PROC(glMapBufferRange)
     GET_PROC(glMapNamedBuffer)
@@ -1702,6 +1713,11 @@ static void test_bitmap_rendering( BOOL use_dib )
     ret = wglMakeCurrent( hdc, hglrc );
     ok( ret, "wglMakeCurrent failed, error %lu\n", GetLastError() );
 
+    pwglGetExtensionsStringEXT = (void *)wglGetProcAddress( "wglGetExtensionsStringEXT" );
+    todo_wine ok(!pwglGetExtensionsStringEXT, "got wglGetExtensionsStringEXT %p\n", pwglGetExtensionsStringEXT);
+    pwglGetExtensionsStringARB = (void *)wglGetProcAddress( "wglGetExtensionsStringARB" );
+    todo_wine ok(!pwglGetExtensionsStringARB, "got wglGetExtensionsStringARB %p\n", pwglGetExtensionsStringARB);
+
     glGetIntegerv( GL_READ_BUFFER, &object );
     ok( object == GL_FRONT, "got %u\n", object );
     glGetIntegerv( GL_DRAW_BUFFER, &object );
@@ -2430,6 +2446,8 @@ static void test_opengl3(HDC hdc)
     {
         int attribs[] = {WGL_CONTEXT_MAJOR_VERSION_ARB, 3, WGL_CONTEXT_MINOR_VERSION_ARB, 0, 0};
         HGLRC gl3Ctx = pwglCreateContextAttribsARB(hdc, 0, attribs);
+        const GLubyte *ext;
+        GLint num;
 
         if(gl3Ctx == NULL)
         {
@@ -2437,6 +2455,18 @@ static void test_opengl3(HDC hdc)
             return;
         }
 
+        wglMakeCurrent(hdc, gl3Ctx);
+
+        glGetIntegerv(GL_NUM_EXTENSIONS, &num);
+        ok(num > 0, "got %u\n", num);
+        check_gl_error(0);
+        ext = pglGetStringi(GL_EXTENSIONS, 0);
+        ok(!!ext, "got %p\n", ext);
+        check_gl_error(0);
+        ext = pglGetStringi(GL_EXTENSIONS, num);
+        ok(!ext, "got %p\n", ext);
+        check_gl_error(GL_INVALID_VALUE);
+
         wglDeleteContext(gl3Ctx);
     }
 
@@ -3577,13 +3607,6 @@ static void test_child_window(HWND hwnd, PIXELFORMATDESCRIPTOR *pfd)
     DestroyWindow(child);
 }
 
-#define check_gl_error(exp) check_gl_error_(__LINE__, exp)
-static void check_gl_error_( unsigned int line, GLenum exp )
-{
-    GLenum err = glGetError();
-    ok_(__FILE__,line)( err == exp, "glGetError returned %x, expected %x\n", err, exp );
-}
-
 static void test_gl_error( HDC hdc )
 {
     HGLRC rc, old_rc;
@@ -3888,6 +3911,7 @@ START_TEST(opengl)
         HMODULE gdi32 = GetModuleHandleA("gdi32.dll");
         HDC hdc;
         int iPixelFormat, res;
+        const char *tmp;
         HGLRC hglrc;
         DWORD error;
 
@@ -3976,7 +4000,14 @@ START_TEST(opengl)
         test_memory_map(hdc);
         test_gl_error(hdc);
 
-        wgl_extensions = pwglGetExtensionsStringARB(hdc);
+        tmp = pwglGetExtensionsStringEXT();
+        ok(tmp && *tmp, "got wgl_extensions %s\n", debugstr_a(tmp));
+        wgl_extensions = tmp;
+
+        tmp = pwglGetExtensionsStringARB(hdc);
+        ok(tmp && *tmp, "got wgl_extensions %s\n", debugstr_a(tmp));
+        ok(!strcmp(tmp, wgl_extensions), "got wgl_extensions %s\n", debugstr_a(tmp));
+
         if(wgl_extensions == NULL) skip("Skipping opengl32 tests because this OpenGL implementation doesn't support WGL extensions!\n");
 
         if(strstr(wgl_extensions, "WGL_ARB_create_context"))
diff --git a/dlls/opengl32/thunks.c b/dlls/opengl32/thunks.c
index 5e69946db387..ed8b7cce5dcb 100644
--- a/dlls/opengl32/thunks.c
+++ b/dlls/opengl32/thunks.c
@@ -2,6 +2,7 @@
 
 #include <stdarg.h>
 #include <stddef.h>
+#include <stdlib.h>
 
 #include "ntstatus.h"
 #include "windef.h"
@@ -840,14 +841,6 @@ void WINAPI glGenTextures( GLsizei n, GLuint *textures )
     if ((status = UNIX_CALL( glGenTextures, &args ))) WARN( "glGenTextures returned %#lx\n", status );
 }
 
-void WINAPI glGetBooleanv( GLenum pname, GLboolean *data )
-{
-    struct glGetBooleanv_params args = { .teb = NtCurrentTeb(), .pname = pname, .data = data };
-    NTSTATUS status;
-    TRACE( "pname %d, data %p\n", pname, data );
-    if ((status = UNIX_CALL( glGetBooleanv, &args ))) WARN( "glGetBooleanv returned %#lx\n", status );
-}
-
 void WINAPI glGetClipPlane( GLenum plane, GLdouble *equation )
 {
     struct glGetClipPlane_params args = { .teb = NtCurrentTeb(), .plane = plane, .equation = equation };
@@ -856,14 +849,6 @@ void WINAPI glGetClipPlane( GLenum plane, GLdouble *equation )
     if ((status = UNIX_CALL( glGetClipPlane, &args ))) WARN( "glGetClipPlane returned %#lx\n", status );
 }
 
-void WINAPI glGetDoublev( GLenum pname, GLdouble *data )
-{
-    struct glGetDoublev_params args = { .teb = NtCurrentTeb(), .pname = pname, .data = data };
-    NTSTATUS status;
-    TRACE( "pname %d, data %p\n", pname, data );
-    if ((status = UNIX_CALL( glGetDoublev, &args ))) WARN( "glGetDoublev returned %#lx\n", status );
-}
-
 GLenum WINAPI glGetError(void)
 {
     struct glGetError_params args = { .teb = NtCurrentTeb() };
@@ -873,22 +858,6 @@ GLenum WINAPI glGetError(void)
     return args.ret;
 }
 
-void WINAPI glGetFloatv( GLenum pname, GLfloat *data )
-{
-    struct glGetFloatv_params args = { .teb = NtCurrentTeb(), .pname = pname, .data = data };
-    NTSTATUS status;
-    TRACE( "pname %d, data %p\n", pname, data );
-    if ((status = UNIX_CALL( glGetFloatv, &args ))) WARN( "glGetFloatv returned %#lx\n", status );
-}
-
-void WINAPI glGetIntegerv( GLenum pname, GLint *data )
-{
-    struct glGetIntegerv_params args = { .teb = NtCurrentTeb(), .pname = pname, .data = data };
-    NTSTATUS status;
-    TRACE( "pname %d, data %p\n", pname, data );
-    if ((status = UNIX_CALL( glGetIntegerv, &args ))) WARN( "glGetIntegerv returned %#lx\n", status );
-}
-
 void WINAPI glGetLightfv( GLenum light, GLenum pname, GLfloat *params )
 {
     struct glGetLightfv_params args = { .teb = NtCurrentTeb(), .light = light, .pname = pname, .params = params };
@@ -8634,14 +8603,6 @@ static void WINAPI glGetInteger64i_v( GLenum target, GLuint index, GLint64 *data
     if ((status = UNIX_CALL( glGetInteger64i_v, &args ))) WARN( "glGetInteger64i_v returned %#lx\n", status );
 }
 
-static void WINAPI glGetInteger64v( GLenum pname, GLint64 *data )
-{
-    struct glGetInteger64v_params args = { .teb = NtCurrentTeb(), .pname = pname, .data = data };
-    NTSTATUS status;
-    TRACE( "pname %d, data %p\n", pname, data );
-    if ((status = UNIX_CALL( glGetInteger64v, &args ))) WARN( "glGetInteger64v returned %#lx\n", status );
-}
-
 static void WINAPI glGetIntegerIndexedvEXT( GLenum target, GLuint index, GLint *data )
 {
     struct glGetIntegerIndexedvEXT_params args = { .teb = NtCurrentTeb(), .target = target, .index = index, .data = data };
@@ -24826,6 +24787,7 @@ static BOOL WINAPI wglSwapIntervalEXT( int interval )
 extern GLsync WINAPI glCreateSyncFromCLeventARB( struct _cl_context *context, struct _cl_event *event, GLbitfield flags );
 extern void WINAPI glDeleteSync( GLsync sync );
 extern GLsync WINAPI glFenceSync( GLenum condition, GLbitfield flags );
+extern void WINAPI glGetInteger64v( GLenum pname, GLint64 *data );
 extern const GLubyte * WINAPI glGetStringi( GLenum name, GLuint index );
 extern GLsync WINAPI glImportSyncEXT( GLenum external_sync_type, GLintptr external_sync, GLbitfield flags );
 extern BOOL WINAPI wglChoosePixelFormatARB( HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats );
@@ -27601,3 +27563,2775 @@ const void *extension_procs[] =
     wglSetPixelFormatWINE,
     wglSwapIntervalEXT,
 };
+const struct registry_entry extension_registry[] =
+{
+    { "glAccumxOES", glAccumxOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glAcquireKeyedMutexWin32EXT", glAcquireKeyedMutexWin32EXT, 0, 0, { GL_EXT_win32_keyed_mutex, GL_EXTENSION_COUNT }},
+    { "glActiveProgramEXT", glActiveProgramEXT, 0, 0, { GL_EXT_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glActiveShaderProgram", glActiveShaderProgram, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glActiveStencilFaceEXT", glActiveStencilFaceEXT, 0, 0, { GL_EXT_stencil_two_side, GL_EXTENSION_COUNT }},
+    { "glActiveTexture", glActiveTexture, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glActiveTextureARB", glActiveTextureARB, 0, 0, { GL_ARB_multitexture, GL_EXTENSION_COUNT }},
+    { "glActiveVaryingNV", glActiveVaryingNV, 0, 0, { GL_NV_transform_feedback, GL_EXTENSION_COUNT }},
+    { "glAlphaFragmentOp1ATI", glAlphaFragmentOp1ATI, 0, 0, { GL_ATI_fragment_shader, GL_EXTENSION_COUNT }},
+    { "glAlphaFragmentOp2ATI", glAlphaFragmentOp2ATI, 0, 0, { GL_ATI_fragment_shader, GL_EXTENSION_COUNT }},
+    { "glAlphaFragmentOp3ATI", glAlphaFragmentOp3ATI, 0, 0, { GL_ATI_fragment_shader, GL_EXTENSION_COUNT }},
+    { "glAlphaFuncx", glAlphaFuncx, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glAlphaFuncxOES", glAlphaFuncxOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glAlphaToCoverageDitherControlNV", glAlphaToCoverageDitherControlNV, 0, 0, { GL_NV_alpha_to_coverage_dither_control, GL_EXTENSION_COUNT }},
+    { "glApplyFramebufferAttachmentCMAAINTEL", glApplyFramebufferAttachmentCMAAINTEL, 0, 0, { GL_INTEL_framebuffer_CMAA, GL_EXTENSION_COUNT }},
+    { "glApplyTextureEXT", glApplyTextureEXT, 0, 0, { GL_EXT_light_texture, GL_EXTENSION_COUNT }},
+    { "glAreProgramsResidentNV", glAreProgramsResidentNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glAreTexturesResidentEXT", glAreTexturesResidentEXT, 0, 0, { GL_EXT_texture_object, GL_EXTENSION_COUNT }},
+    { "glArrayElementEXT", glArrayElementEXT, 0, 0, { GL_EXT_vertex_array, GL_EXTENSION_COUNT }},
+    { "glArrayObjectATI", glArrayObjectATI, 0, 0, { GL_ATI_vertex_array_object, GL_EXTENSION_COUNT }},
+    { "glAsyncCopyBufferSubDataNVX", glAsyncCopyBufferSubDataNVX, 0, 0, { GL_NVX_gpu_multicast2, GL_EXTENSION_COUNT }},
+    { "glAsyncCopyImageSubDataNVX", glAsyncCopyImageSubDataNVX, 0, 0, { GL_NVX_gpu_multicast2, GL_EXTENSION_COUNT }},
+    { "glAsyncMarkerSGIX", glAsyncMarkerSGIX, 0, 0, { GL_SGIX_async, GL_EXTENSION_COUNT }},
+    { "glAttachObjectARB", glAttachObjectARB, 0, 0, { GL_ARB_shader_objects, GL_EXTENSION_COUNT }},
+    { "glAttachShader", glAttachShader, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glBeginConditionalRender", glBeginConditionalRender, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glBeginConditionalRenderNV", glBeginConditionalRenderNV, 0, 0, { GL_NV_conditional_render, GL_EXTENSION_COUNT }},
+    { "glBeginConditionalRenderNVX", glBeginConditionalRenderNVX, 0, 0, { GL_NVX_conditional_render, GL_EXTENSION_COUNT }},
+    { "glBeginFragmentShaderATI", glBeginFragmentShaderATI, 0, 0, { GL_ATI_fragment_shader, GL_EXTENSION_COUNT }},
+    { "glBeginOcclusionQueryNV", glBeginOcclusionQueryNV, 0, 0, { GL_NV_occlusion_query, GL_EXTENSION_COUNT }},
+    { "glBeginPerfMonitorAMD", glBeginPerfMonitorAMD, 0, 0, { GL_AMD_performance_monitor, GL_EXTENSION_COUNT }},
+    { "glBeginPerfQueryINTEL", glBeginPerfQueryINTEL, 0, 0, { GL_INTEL_performance_query, GL_EXTENSION_COUNT }},
+    { "glBeginQuery", glBeginQuery, 1, 5, { GL_EXTENSION_COUNT }},
+    { "glBeginQueryARB", glBeginQueryARB, 0, 0, { GL_ARB_occlusion_query, GL_EXTENSION_COUNT }},
+    { "glBeginQueryIndexed", glBeginQueryIndexed, 4, 0, { GL_ARB_transform_feedback3, GL_EXTENSION_COUNT }},
+    { "glBeginTransformFeedback", glBeginTransformFeedback, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glBeginTransformFeedbackEXT", glBeginTransformFeedbackEXT, 0, 0, { GL_EXT_transform_feedback, GL_EXTENSION_COUNT }},
+    { "glBeginTransformFeedbackNV", glBeginTransformFeedbackNV, 0, 0, { GL_NV_transform_feedback, GL_EXTENSION_COUNT }},
+    { "glBeginVertexShaderEXT", glBeginVertexShaderEXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glBeginVideoCaptureNV", glBeginVideoCaptureNV, 0, 0, { GL_NV_video_capture, GL_EXTENSION_COUNT }},
+    { "glBindAttribLocation", glBindAttribLocation, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glBindAttribLocationARB", glBindAttribLocationARB, 0, 0, { GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glBindBuffer", glBindBuffer, 1, 5, { GL_EXTENSION_COUNT }},
+    { "glBindBufferARB", glBindBufferARB, 0, 0, { GL_ARB_vertex_buffer_object, GL_EXTENSION_COUNT }},
+    { "glBindBufferBase", glBindBufferBase, 3, 0, { GL_ARB_uniform_buffer_object, GL_EXTENSION_COUNT }},
+    { "glBindBufferBaseEXT", glBindBufferBaseEXT, 0, 0, { GL_EXT_transform_feedback, GL_EXTENSION_COUNT }},
+    { "glBindBufferBaseNV", glBindBufferBaseNV, 0, 0, { GL_NV_transform_feedback, GL_EXTENSION_COUNT }},
+    { "glBindBufferOffsetEXT", glBindBufferOffsetEXT, 0, 0, { GL_EXT_transform_feedback, GL_EXTENSION_COUNT }},
+    { "glBindBufferOffsetNV", glBindBufferOffsetNV, 0, 0, { GL_NV_transform_feedback, GL_EXTENSION_COUNT }},
+    { "glBindBufferRange", glBindBufferRange, 3, 0, { GL_ARB_uniform_buffer_object, GL_EXTENSION_COUNT }},
+    { "glBindBufferRangeEXT", glBindBufferRangeEXT, 0, 0, { GL_EXT_transform_feedback, GL_EXTENSION_COUNT }},
+    { "glBindBufferRangeNV", glBindBufferRangeNV, 0, 0, { GL_NV_transform_feedback, GL_EXTENSION_COUNT }},
+    { "glBindBuffersBase", glBindBuffersBase, 4, 4, { GL_ARB_multi_bind, GL_EXTENSION_COUNT }},
+    { "glBindBuffersRange", glBindBuffersRange, 4, 4, { GL_ARB_multi_bind, GL_EXTENSION_COUNT }},
+    { "glBindFragDataLocation", glBindFragDataLocation, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glBindFragDataLocationEXT", glBindFragDataLocationEXT, 0, 0, { GL_EXT_gpu_shader4, GL_EXTENSION_COUNT }},
+    { "glBindFragDataLocationIndexed", glBindFragDataLocationIndexed, 3, 3, { GL_ARB_blend_func_extended, GL_EXTENSION_COUNT }},
+    { "glBindFragmentShaderATI", glBindFragmentShaderATI, 0, 0, { GL_ATI_fragment_shader, GL_EXTENSION_COUNT }},
+    { "glBindFramebuffer", glBindFramebuffer, 3, 0, { GL_ARB_framebuffer_object, GL_EXTENSION_COUNT }},
+    { "glBindFramebufferEXT", glBindFramebufferEXT, 0, 0, { GL_EXT_framebuffer_object, GL_EXTENSION_COUNT }},
+    { "glBindImageTexture", glBindImageTexture, 4, 2, { GL_ARB_shader_image_load_store, GL_EXTENSION_COUNT }},
+    { "glBindImageTextureEXT", glBindImageTextureEXT, 0, 0, { GL_EXT_shader_image_load_store, GL_EXTENSION_COUNT }},
+    { "glBindImageTextures", glBindImageTextures, 4, 4, { GL_ARB_multi_bind, GL_EXTENSION_COUNT }},
+    { "glBindLightParameterEXT", glBindLightParameterEXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glBindMaterialParameterEXT", glBindMaterialParameterEXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glBindMultiTextureEXT", glBindMultiTextureEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glBindParameterEXT", glBindParameterEXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glBindProgramARB", glBindProgramARB, 0, 0, { GL_ARB_fragment_program, GL_ARB_vertex_program, GL_EXTENSION_COUNT }},
+    { "glBindProgramNV", glBindProgramNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glBindProgramPipeline", glBindProgramPipeline, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glBindRenderbuffer", glBindRenderbuffer, 3, 0, { GL_ARB_framebuffer_object, GL_EXTENSION_COUNT }},
+    { "glBindRenderbufferEXT", glBindRenderbufferEXT, 0, 0, { GL_EXT_framebuffer_object, GL_EXTENSION_COUNT }},
+    { "glBindSampler", glBindSampler, 3, 3, { GL_ARB_sampler_objects, GL_EXTENSION_COUNT }},
+    { "glBindSamplers", glBindSamplers, 4, 4, { GL_ARB_multi_bind, GL_EXTENSION_COUNT }},
+    { "glBindShadingRateImageNV", glBindShadingRateImageNV, 0, 0, { GL_NV_shading_rate_image, GL_EXTENSION_COUNT }},
+    { "glBindTexGenParameterEXT", glBindTexGenParameterEXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glBindTextureEXT", glBindTextureEXT, 0, 0, { GL_EXT_texture_object, GL_EXTENSION_COUNT }},
+    { "glBindTextureUnit", glBindTextureUnit, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glBindTextureUnitParameterEXT", glBindTextureUnitParameterEXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glBindTextures", glBindTextures, 4, 4, { GL_ARB_multi_bind, GL_EXTENSION_COUNT }},
+    { "glBindTransformFeedback", glBindTransformFeedback, 4, 0, { GL_ARB_transform_feedback2, GL_EXTENSION_COUNT }},
+    { "glBindTransformFeedbackNV", glBindTransformFeedbackNV, 0, 0, { GL_NV_transform_feedback2, GL_EXTENSION_COUNT }},
+    { "glBindVertexArray", glBindVertexArray, 3, 0, { GL_ARB_vertex_array_object, GL_EXTENSION_COUNT }},
+    { "glBindVertexArrayAPPLE", glBindVertexArrayAPPLE, 0, 0, { GL_APPLE_vertex_array_object, GL_EXTENSION_COUNT }},
+    { "glBindVertexBuffer", glBindVertexBuffer, 4, 3, { GL_ARB_vertex_attrib_binding, GL_EXTENSION_COUNT }},
+    { "glBindVertexBuffers", glBindVertexBuffers, 4, 4, { GL_ARB_multi_bind, GL_EXTENSION_COUNT }},
+    { "glBindVertexShaderEXT", glBindVertexShaderEXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glBindVideoCaptureStreamBufferNV", glBindVideoCaptureStreamBufferNV, 0, 0, { GL_NV_video_capture, GL_EXTENSION_COUNT }},
+    { "glBindVideoCaptureStreamTextureNV", glBindVideoCaptureStreamTextureNV, 0, 0, { GL_NV_video_capture, GL_EXTENSION_COUNT }},
+    { "glBinormal3bEXT", glBinormal3bEXT, 0, 0, { GL_EXT_coordinate_frame, GL_EXTENSION_COUNT }},
+    { "glBinormal3bvEXT", glBinormal3bvEXT, 0, 0, { GL_EXT_coordinate_frame, GL_EXTENSION_COUNT }},
+    { "glBinormal3dEXT", glBinormal3dEXT, 0, 0, { GL_EXT_coordinate_frame, GL_EXTENSION_COUNT }},
+    { "glBinormal3dvEXT", glBinormal3dvEXT, 0, 0, { GL_EXT_coordinate_frame, GL_EXTENSION_COUNT }},
+    { "glBinormal3fEXT", glBinormal3fEXT, 0, 0, { GL_EXT_coordinate_frame, GL_EXTENSION_COUNT }},
+    { "glBinormal3fvEXT", glBinormal3fvEXT, 0, 0, { GL_EXT_coordinate_frame, GL_EXTENSION_COUNT }},
+    { "glBinormal3iEXT", glBinormal3iEXT, 0, 0, { GL_EXT_coordinate_frame, GL_EXTENSION_COUNT }},
+    { "glBinormal3ivEXT", glBinormal3ivEXT, 0, 0, { GL_EXT_coordinate_frame, GL_EXTENSION_COUNT }},
+    { "glBinormal3sEXT", glBinormal3sEXT, 0, 0, { GL_EXT_coordinate_frame, GL_EXTENSION_COUNT }},
+    { "glBinormal3svEXT", glBinormal3svEXT, 0, 0, { GL_EXT_coordinate_frame, GL_EXTENSION_COUNT }},
+    { "glBinormalPointerEXT", glBinormalPointerEXT, 0, 0, { GL_EXT_coordinate_frame, GL_EXTENSION_COUNT }},
+    { "glBitmapxOES", glBitmapxOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glBlendBarrier", glBlendBarrier, 0, 0, { GL_ARB_ES3_2_compatibility, GL_EXTENSION_COUNT }},
+    { "glBlendBarrierKHR", glBlendBarrierKHR, 0, 0, { GL_KHR_blend_equation_advanced, GL_EXTENSION_COUNT }},
+    { "glBlendBarrierNV", glBlendBarrierNV, 0, 0, { GL_NV_blend_equation_advanced, GL_EXTENSION_COUNT }},
+    { "glBlendColor", glBlendColor, 1, 4, { GL_ARB_imaging, GL_EXTENSION_COUNT }},
+    { "glBlendColorEXT", glBlendColorEXT, 0, 0, { GL_EXT_blend_color, GL_EXTENSION_COUNT }},
+    { "glBlendColorxOES", glBlendColorxOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glBlendEquation", glBlendEquation, 1, 4, { GL_ARB_imaging, GL_EXTENSION_COUNT }},
+    { "glBlendEquationEXT", glBlendEquationEXT, 0, 0, { GL_EXT_blend_minmax, GL_EXTENSION_COUNT }},
+    { "glBlendEquationIndexedAMD", glBlendEquationIndexedAMD, 0, 0, { GL_AMD_draw_buffers_blend, GL_EXTENSION_COUNT }},
+    { "glBlendEquationSeparate", glBlendEquationSeparate, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glBlendEquationSeparateEXT", glBlendEquationSeparateEXT, 0, 0, { GL_EXT_blend_equation_separate, GL_ATI_blend_equation_separate, GL_EXTENSION_COUNT }},
+    { "glBlendEquationSeparateIndexedAMD", glBlendEquationSeparateIndexedAMD, 0, 0, { GL_AMD_draw_buffers_blend, GL_EXTENSION_COUNT }},
+    { "glBlendEquationSeparatei", glBlendEquationSeparatei, 4, 0, { GL_EXTENSION_COUNT }},
+    { "glBlendEquationSeparateiARB", glBlendEquationSeparateiARB, 0, 0, { GL_ARB_draw_buffers_blend, GL_EXTENSION_COUNT }},
+    { "glBlendEquationi", glBlendEquationi, 4, 0, { GL_EXTENSION_COUNT }},
+    { "glBlendEquationiARB", glBlendEquationiARB, 0, 0, { GL_ARB_draw_buffers_blend, GL_EXTENSION_COUNT }},
+    { "glBlendFuncIndexedAMD", glBlendFuncIndexedAMD, 0, 0, { GL_AMD_draw_buffers_blend, GL_EXTENSION_COUNT }},
+    { "glBlendFuncSeparate", glBlendFuncSeparate, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glBlendFuncSeparateEXT", glBlendFuncSeparateEXT, 0, 0, { GL_EXT_blend_func_separate, GL_EXTENSION_COUNT }},
+    { "glBlendFuncSeparateINGR", glBlendFuncSeparateINGR, 0, 0, { GL_INGR_blend_func_separate, GL_EXTENSION_COUNT }},
+    { "glBlendFuncSeparateIndexedAMD", glBlendFuncSeparateIndexedAMD, 0, 0, { GL_AMD_draw_buffers_blend, GL_EXTENSION_COUNT }},
+    { "glBlendFuncSeparatei", glBlendFuncSeparatei, 4, 0, { GL_EXTENSION_COUNT }},
+    { "glBlendFuncSeparateiARB", glBlendFuncSeparateiARB, 0, 0, { GL_ARB_draw_buffers_blend, GL_EXTENSION_COUNT }},
+    { "glBlendFunci", glBlendFunci, 4, 0, { GL_EXTENSION_COUNT }},
+    { "glBlendFunciARB", glBlendFunciARB, 0, 0, { GL_ARB_draw_buffers_blend, GL_EXTENSION_COUNT }},
+    { "glBlendParameteriNV", glBlendParameteriNV, 0, 0, { GL_NV_blend_equation_advanced, GL_EXTENSION_COUNT }},
+    { "glBlitFramebuffer", glBlitFramebuffer, 3, 0, { GL_ARB_framebuffer_object, GL_EXTENSION_COUNT }},
+    { "glBlitFramebufferEXT", glBlitFramebufferEXT, 0, 0, { GL_EXT_framebuffer_blit, GL_EXTENSION_COUNT }},
+    { "glBlitFramebufferLayerEXT", glBlitFramebufferLayerEXT, 0, 0, { GL_EXT_framebuffer_blit_layers, GL_EXTENSION_COUNT }},
+    { "glBlitFramebufferLayersEXT", glBlitFramebufferLayersEXT, 0, 0, { GL_EXT_framebuffer_blit_layers, GL_EXTENSION_COUNT }},
+    { "glBlitNamedFramebuffer", glBlitNamedFramebuffer, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glBufferAddressRangeNV", glBufferAddressRangeNV, 0, 0, { GL_NV_vertex_buffer_unified_memory, GL_EXTENSION_COUNT }},
+    { "glBufferAttachMemoryNV", glBufferAttachMemoryNV, 0, 0, { GL_NV_memory_attachment, GL_EXTENSION_COUNT }},
+    { "glBufferData", glBufferData, 1, 5, { GL_EXTENSION_COUNT }},
+    { "glBufferDataARB", glBufferDataARB, 0, 0, { GL_ARB_vertex_buffer_object, GL_EXTENSION_COUNT }},
+    { "glBufferPageCommitmentARB", glBufferPageCommitmentARB, 0, 0, { GL_ARB_sparse_buffer, GL_EXTENSION_COUNT }},
+    { "glBufferPageCommitmentMemNV", glBufferPageCommitmentMemNV, 0, 0, { GL_NV_memory_object_sparse, GL_EXTENSION_COUNT }},
+    { "glBufferParameteriAPPLE", glBufferParameteriAPPLE, 0, 0, { GL_APPLE_flush_buffer_range, GL_EXTENSION_COUNT }},
+    { "glBufferRegionEnabled", glBufferRegionEnabled, 0, 0, { GL_KTX_buffer_region, GL_EXTENSION_COUNT }},
+    { "glBufferStorage", glBufferStorage, 4, 4, { GL_ARB_buffer_storage, GL_EXTENSION_COUNT }},
+    { "glBufferStorageExternalEXT", glBufferStorageExternalEXT, 0, 0, { GL_EXT_external_buffer, GL_EXTENSION_COUNT }},
+    { "glBufferStorageMemEXT", glBufferStorageMemEXT, 0, 0, { GL_EXT_memory_object, GL_EXTENSION_COUNT }},
+    { "glBufferSubData", glBufferSubData, 1, 5, { GL_EXTENSION_COUNT }},
+    { "glBufferSubDataARB", glBufferSubDataARB, 0, 0, { GL_ARB_vertex_buffer_object, GL_EXTENSION_COUNT }},
+    { "glCallCommandListNV", glCallCommandListNV, 0, 0, { GL_NV_command_list, GL_EXTENSION_COUNT }},
+    { "glCheckFramebufferStatus", glCheckFramebufferStatus, 3, 0, { GL_ARB_framebuffer_object, GL_EXTENSION_COUNT }},
+    { "glCheckFramebufferStatusEXT", glCheckFramebufferStatusEXT, 0, 0, { GL_EXT_framebuffer_object, GL_EXTENSION_COUNT }},
+    { "glCheckNamedFramebufferStatus", glCheckNamedFramebufferStatus, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glCheckNamedFramebufferStatusEXT", glCheckNamedFramebufferStatusEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glClampColor", glClampColor, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glClampColorARB", glClampColorARB, 0, 0, { GL_ARB_color_buffer_float, GL_EXTENSION_COUNT }},
+    { "glClearAccumxOES", glClearAccumxOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glClearBufferData", glClearBufferData, 4, 3, { GL_ARB_clear_buffer_object, GL_EXTENSION_COUNT }},
+    { "glClearBufferSubData", glClearBufferSubData, 4, 3, { GL_ARB_clear_buffer_object, GL_EXTENSION_COUNT }},
+    { "glClearBufferfi", glClearBufferfi, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glClearBufferfv", glClearBufferfv, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glClearBufferiv", glClearBufferiv, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glClearBufferuiv", glClearBufferuiv, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glClearColorIiEXT", glClearColorIiEXT, 0, 0, { GL_EXT_texture_integer, GL_EXTENSION_COUNT }},
+    { "glClearColorIuiEXT", glClearColorIuiEXT, 0, 0, { GL_EXT_texture_integer, GL_EXTENSION_COUNT }},
+    { "glClearColorx", glClearColorx, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glClearColorxOES", glClearColorxOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glClearDepthdNV", glClearDepthdNV, 0, 0, { GL_NV_depth_buffer_float, GL_EXTENSION_COUNT }},
+    { "glClearDepthf", glClearDepthf, 4, 1, { GL_ARB_ES2_compatibility, GL_EXTENSION_COUNT }},
+    { "glClearDepthfOES", glClearDepthfOES, 0, 0, { GL_OES_single_precision, GL_EXTENSION_COUNT }},
+    { "glClearDepthx", glClearDepthx, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glClearDepthxOES", glClearDepthxOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glClearNamedBufferData", glClearNamedBufferData, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glClearNamedBufferDataEXT", glClearNamedBufferDataEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glClearNamedBufferSubData", glClearNamedBufferSubData, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glClearNamedBufferSubDataEXT", glClearNamedBufferSubDataEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glClearNamedFramebufferfi", glClearNamedFramebufferfi, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glClearNamedFramebufferfv", glClearNamedFramebufferfv, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glClearNamedFramebufferiv", glClearNamedFramebufferiv, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glClearNamedFramebufferuiv", glClearNamedFramebufferuiv, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glClearTexImage", glClearTexImage, 4, 4, { GL_ARB_clear_texture, GL_EXTENSION_COUNT }},
+    { "glClearTexSubImage", glClearTexSubImage, 4, 4, { GL_ARB_clear_texture, GL_EXTENSION_COUNT }},
+    { "glClientActiveTexture", glClientActiveTexture, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glClientActiveTextureARB", glClientActiveTextureARB, 0, 0, { GL_ARB_multitexture, GL_EXTENSION_COUNT }},
+    { "glClientActiveVertexStreamATI", glClientActiveVertexStreamATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glClientAttribDefaultEXT", glClientAttribDefaultEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glClientWaitSemaphoreui64NVX", glClientWaitSemaphoreui64NVX, 0, 0, { GL_NVX_progress_fence, GL_EXTENSION_COUNT }},
+    { "glClientWaitSync", glClientWaitSync, 3, 2, { GL_ARB_sync, GL_EXTENSION_COUNT }},
+    { "glClipControl", glClipControl, 4, 5, { GL_ARB_clip_control, GL_EXTENSION_COUNT }},
+    { "glClipPlanef", glClipPlanef, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glClipPlanefOES", glClipPlanefOES, 0, 0, { GL_OES_single_precision, GL_EXTENSION_COUNT }},
+    { "glClipPlanex", glClipPlanex, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glClipPlanexOES", glClipPlanexOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glColor3fVertex3fSUN", glColor3fVertex3fSUN, 0, 0, { GL_SUN_vertex, GL_EXTENSION_COUNT }},
+    { "glColor3fVertex3fvSUN", glColor3fVertex3fvSUN, 0, 0, { GL_SUN_vertex, GL_EXTENSION_COUNT }},
+    { "glColor3hNV", glColor3hNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glColor3hvNV", glColor3hvNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glColor3xOES", glColor3xOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glColor3xvOES", glColor3xvOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glColor4fNormal3fVertex3fSUN", glColor4fNormal3fVertex3fSUN, 0, 0, { GL_SUN_vertex, GL_EXTENSION_COUNT }},
+    { "glColor4fNormal3fVertex3fvSUN", glColor4fNormal3fVertex3fvSUN, 0, 0, { GL_SUN_vertex, GL_EXTENSION_COUNT }},
+    { "glColor4hNV", glColor4hNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glColor4hvNV", glColor4hvNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glColor4ubVertex2fSUN", glColor4ubVertex2fSUN, 0, 0, { GL_SUN_vertex, GL_EXTENSION_COUNT }},
+    { "glColor4ubVertex2fvSUN", glColor4ubVertex2fvSUN, 0, 0, { GL_SUN_vertex, GL_EXTENSION_COUNT }},
+    { "glColor4ubVertex3fSUN", glColor4ubVertex3fSUN, 0, 0, { GL_SUN_vertex, GL_EXTENSION_COUNT }},
+    { "glColor4ubVertex3fvSUN", glColor4ubVertex3fvSUN, 0, 0, { GL_SUN_vertex, GL_EXTENSION_COUNT }},
+    { "glColor4x", glColor4x, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glColor4xOES", glColor4xOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glColor4xvOES", glColor4xvOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glColorFormatNV", glColorFormatNV, 0, 0, { GL_NV_vertex_buffer_unified_memory, GL_EXTENSION_COUNT }},
+    { "glColorFragmentOp1ATI", glColorFragmentOp1ATI, 0, 0, { GL_ATI_fragment_shader, GL_EXTENSION_COUNT }},
+    { "glColorFragmentOp2ATI", glColorFragmentOp2ATI, 0, 0, { GL_ATI_fragment_shader, GL_EXTENSION_COUNT }},
+    { "glColorFragmentOp3ATI", glColorFragmentOp3ATI, 0, 0, { GL_ATI_fragment_shader, GL_EXTENSION_COUNT }},
+    { "glColorMaskIndexedEXT", glColorMaskIndexedEXT, 0, 0, { GL_EXT_draw_buffers2, GL_EXTENSION_COUNT }},
+    { "glColorMaski", glColorMaski, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glColorP3ui", glColorP3ui, 3, 3, { GL_ARB_vertex_type_2_10_10_10_rev, GL_EXTENSION_COUNT }},
+    { "glColorP3uiv", glColorP3uiv, 3, 3, { GL_ARB_vertex_type_2_10_10_10_rev, GL_EXTENSION_COUNT }},
+    { "glColorP4ui", glColorP4ui, 3, 3, { GL_ARB_vertex_type_2_10_10_10_rev, GL_EXTENSION_COUNT }},
+    { "glColorP4uiv", glColorP4uiv, 3, 3, { GL_ARB_vertex_type_2_10_10_10_rev, GL_EXTENSION_COUNT }},
+    { "glColorPointerEXT", glColorPointerEXT, 0, 0, { GL_EXT_vertex_array, GL_EXTENSION_COUNT }},
+    { "glColorPointerListIBM", glColorPointerListIBM, 0, 0, { GL_IBM_vertex_array_lists, GL_EXTENSION_COUNT }},
+    { "glColorPointervINTEL", glColorPointervINTEL, 0, 0, { GL_INTEL_parallel_arrays, GL_EXTENSION_COUNT }},
+    { "glColorSubTable", glColorSubTable, 0, 0, { GL_ARB_imaging, GL_EXTENSION_COUNT }},
+    { "glColorSubTableEXT", glColorSubTableEXT, 0, 0, { GL_EXT_color_subtable, GL_EXTENSION_COUNT }},
+    { "glColorTable", glColorTable, 0, 0, { GL_ARB_imaging, GL_EXTENSION_COUNT }},
+    { "glColorTableEXT", glColorTableEXT, 0, 0, { GL_EXT_paletted_texture, GL_EXTENSION_COUNT }},
+    { "glColorTableParameterfv", glColorTableParameterfv, 0, 0, { GL_ARB_imaging, GL_EXTENSION_COUNT }},
+    { "glColorTableParameterfvSGI", glColorTableParameterfvSGI, 0, 0, { GL_SGI_color_table, GL_EXTENSION_COUNT }},
+    { "glColorTableParameteriv", glColorTableParameteriv, 0, 0, { GL_ARB_imaging, GL_EXTENSION_COUNT }},
+    { "glColorTableParameterivSGI", glColorTableParameterivSGI, 0, 0, { GL_SGI_color_table, GL_EXTENSION_COUNT }},
+    { "glColorTableSGI", glColorTableSGI, 0, 0, { GL_SGI_color_table, GL_EXTENSION_COUNT }},
+    { "glCombinerInputNV", glCombinerInputNV, 0, 0, { GL_NV_register_combiners, GL_EXTENSION_COUNT }},
+    { "glCombinerOutputNV", glCombinerOutputNV, 0, 0, { GL_NV_register_combiners, GL_EXTENSION_COUNT }},
+    { "glCombinerParameterfNV", glCombinerParameterfNV, 0, 0, { GL_NV_register_combiners, GL_EXTENSION_COUNT }},
+    { "glCombinerParameterfvNV", glCombinerParameterfvNV, 0, 0, { GL_NV_register_combiners, GL_EXTENSION_COUNT }},
+    { "glCombinerParameteriNV", glCombinerParameteriNV, 0, 0, { GL_NV_register_combiners, GL_EXTENSION_COUNT }},
+    { "glCombinerParameterivNV", glCombinerParameterivNV, 0, 0, { GL_NV_register_combiners, GL_EXTENSION_COUNT }},
+    { "glCombinerStageParameterfvNV", glCombinerStageParameterfvNV, 0, 0, { GL_NV_register_combiners2, GL_EXTENSION_COUNT }},
+    { "glCommandListSegmentsNV", glCommandListSegmentsNV, 0, 0, { GL_NV_command_list, GL_EXTENSION_COUNT }},
+    { "glCompileCommandListNV", glCompileCommandListNV, 0, 0, { GL_NV_command_list, GL_EXTENSION_COUNT }},
+    { "glCompileShader", glCompileShader, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glCompileShaderARB", glCompileShaderARB, 0, 0, { GL_ARB_shader_objects, GL_EXTENSION_COUNT }},
+    { "glCompileShaderIncludeARB", glCompileShaderIncludeARB, 0, 0, { GL_ARB_shading_language_include, GL_EXTENSION_COUNT }},
+    { "glCompressedMultiTexImage1DEXT", glCompressedMultiTexImage1DEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glCompressedMultiTexImage2DEXT", glCompressedMultiTexImage2DEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glCompressedMultiTexImage3DEXT", glCompressedMultiTexImage3DEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glCompressedMultiTexSubImage1DEXT", glCompressedMultiTexSubImage1DEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glCompressedMultiTexSubImage2DEXT", glCompressedMultiTexSubImage2DEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glCompressedMultiTexSubImage3DEXT", glCompressedMultiTexSubImage3DEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glCompressedTexImage1D", glCompressedTexImage1D, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glCompressedTexImage1DARB", glCompressedTexImage1DARB, 1, 3, { GL_ARB_texture_compression, GL_EXTENSION_COUNT }},
+    { "glCompressedTexImage2D", glCompressedTexImage2D, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glCompressedTexImage2DARB", glCompressedTexImage2DARB, 1, 3, { GL_ARB_texture_compression, GL_EXTENSION_COUNT }},
+    { "glCompressedTexImage3D", glCompressedTexImage3D, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glCompressedTexImage3DARB", glCompressedTexImage3DARB, 1, 3, { GL_ARB_texture_compression, GL_EXTENSION_COUNT }},
+    { "glCompressedTexSubImage1D", glCompressedTexSubImage1D, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glCompressedTexSubImage1DARB", glCompressedTexSubImage1DARB, 1, 3, { GL_ARB_texture_compression, GL_EXTENSION_COUNT }},
+    { "glCompressedTexSubImage2D", glCompressedTexSubImage2D, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glCompressedTexSubImage2DARB", glCompressedTexSubImage2DARB, 1, 3, { GL_ARB_texture_compression, GL_EXTENSION_COUNT }},
+    { "glCompressedTexSubImage3D", glCompressedTexSubImage3D, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glCompressedTexSubImage3DARB", glCompressedTexSubImage3DARB, 1, 3, { GL_ARB_texture_compression, GL_EXTENSION_COUNT }},
+    { "glCompressedTextureImage1DEXT", glCompressedTextureImage1DEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glCompressedTextureImage2DEXT", glCompressedTextureImage2DEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glCompressedTextureImage3DEXT", glCompressedTextureImage3DEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glCompressedTextureSubImage1D", glCompressedTextureSubImage1D, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glCompressedTextureSubImage1DEXT", glCompressedTextureSubImage1DEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glCompressedTextureSubImage2D", glCompressedTextureSubImage2D, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glCompressedTextureSubImage2DEXT", glCompressedTextureSubImage2DEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glCompressedTextureSubImage3D", glCompressedTextureSubImage3D, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glCompressedTextureSubImage3DEXT", glCompressedTextureSubImage3DEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glConservativeRasterParameterfNV", glConservativeRasterParameterfNV, 0, 0, { GL_NV_conservative_raster_dilate, GL_EXTENSION_COUNT }},
+    { "glConservativeRasterParameteriNV", glConservativeRasterParameteriNV, 0, 0, { GL_NV_conservative_raster_pre_snap_triangles, GL_EXTENSION_COUNT }},
+    { "glConvolutionFilter1D", glConvolutionFilter1D, 0, 0, { GL_ARB_imaging, GL_EXTENSION_COUNT }},
+    { "glConvolutionFilter1DEXT", glConvolutionFilter1DEXT, 0, 0, { GL_EXT_convolution, GL_EXTENSION_COUNT }},
+    { "glConvolutionFilter2D", glConvolutionFilter2D, 0, 0, { GL_ARB_imaging, GL_EXTENSION_COUNT }},
+    { "glConvolutionFilter2DEXT", glConvolutionFilter2DEXT, 0, 0, { GL_EXT_convolution, GL_EXTENSION_COUNT }},
+    { "glConvolutionParameterf", glConvolutionParameterf, 0, 0, { GL_ARB_imaging, GL_EXTENSION_COUNT }},
+    { "glConvolutionParameterfEXT", glConvolutionParameterfEXT, 0, 0, { GL_EXT_convolution, GL_EXTENSION_COUNT }},
+    { "glConvolutionParameterfv", glConvolutionParameterfv, 0, 0, { GL_ARB_imaging, GL_EXTENSION_COUNT }},
+    { "glConvolutionParameterfvEXT", glConvolutionParameterfvEXT, 0, 0, { GL_EXT_convolution, GL_EXTENSION_COUNT }},
+    { "glConvolutionParameteri", glConvolutionParameteri, 0, 0, { GL_ARB_imaging, GL_EXTENSION_COUNT }},
+    { "glConvolutionParameteriEXT", glConvolutionParameteriEXT, 0, 0, { GL_EXT_convolution, GL_EXTENSION_COUNT }},
+    { "glConvolutionParameteriv", glConvolutionParameteriv, 0, 0, { GL_ARB_imaging, GL_EXTENSION_COUNT }},
+    { "glConvolutionParameterivEXT", glConvolutionParameterivEXT, 0, 0, { GL_EXT_convolution, GL_EXTENSION_COUNT }},
+    { "glConvolutionParameterxOES", glConvolutionParameterxOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glConvolutionParameterxvOES", glConvolutionParameterxvOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glCopyBufferSubData", glCopyBufferSubData, 3, 1, { GL_ARB_copy_buffer, GL_EXT_copy_buffer, GL_EXTENSION_COUNT }},
+    { "glCopyColorSubTable", glCopyColorSubTable, 0, 0, { GL_ARB_imaging, GL_EXTENSION_COUNT }},
+    { "glCopyColorSubTableEXT", glCopyColorSubTableEXT, 0, 0, { GL_EXT_color_subtable, GL_EXTENSION_COUNT }},
+    { "glCopyColorTable", glCopyColorTable, 0, 0, { GL_ARB_imaging, GL_EXTENSION_COUNT }},
+    { "glCopyColorTableSGI", glCopyColorTableSGI, 0, 0, { GL_SGI_color_table, GL_EXTENSION_COUNT }},
+    { "glCopyConvolutionFilter1D", glCopyConvolutionFilter1D, 0, 0, { GL_ARB_imaging, GL_EXTENSION_COUNT }},
+    { "glCopyConvolutionFilter1DEXT", glCopyConvolutionFilter1DEXT, 0, 0, { GL_EXT_convolution, GL_EXTENSION_COUNT }},
+    { "glCopyConvolutionFilter2D", glCopyConvolutionFilter2D, 0, 0, { GL_ARB_imaging, GL_EXTENSION_COUNT }},
+    { "glCopyConvolutionFilter2DEXT", glCopyConvolutionFilter2DEXT, 0, 0, { GL_EXT_convolution, GL_EXTENSION_COUNT }},
+    { "glCopyImageSubData", glCopyImageSubData, 4, 3, { GL_ARB_copy_image, GL_EXTENSION_COUNT }},
+    { "glCopyImageSubDataNV", glCopyImageSubDataNV, 0, 0, { GL_NV_copy_image, GL_EXTENSION_COUNT }},
+    { "glCopyMultiTexImage1DEXT", glCopyMultiTexImage1DEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glCopyMultiTexImage2DEXT", glCopyMultiTexImage2DEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glCopyMultiTexSubImage1DEXT", glCopyMultiTexSubImage1DEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glCopyMultiTexSubImage2DEXT", glCopyMultiTexSubImage2DEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glCopyMultiTexSubImage3DEXT", glCopyMultiTexSubImage3DEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glCopyNamedBufferSubData", glCopyNamedBufferSubData, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glCopyPathNV", glCopyPathNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glCopyTexImage1DEXT", glCopyTexImage1DEXT, 1, 2, { GL_EXT_copy_texture, GL_EXTENSION_COUNT }},
+    { "glCopyTexImage2DEXT", glCopyTexImage2DEXT, 1, 2, { GL_EXT_copy_texture, GL_EXTENSION_COUNT }},
+    { "glCopyTexSubImage1DEXT", glCopyTexSubImage1DEXT, 1, 2, { GL_EXT_copy_texture, GL_EXTENSION_COUNT }},
+    { "glCopyTexSubImage2DEXT", glCopyTexSubImage2DEXT, 1, 2, { GL_EXT_copy_texture, GL_EXTENSION_COUNT }},
+    { "glCopyTexSubImage3D", glCopyTexSubImage3D, 1, 2, { GL_EXTENSION_COUNT }},
+    { "glCopyTexSubImage3DEXT", glCopyTexSubImage3DEXT, 1, 2, { GL_EXT_copy_texture, GL_EXTENSION_COUNT }},
+    { "glCopyTextureImage1DEXT", glCopyTextureImage1DEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glCopyTextureImage2DEXT", glCopyTextureImage2DEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glCopyTextureSubImage1D", glCopyTextureSubImage1D, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glCopyTextureSubImage1DEXT", glCopyTextureSubImage1DEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glCopyTextureSubImage2D", glCopyTextureSubImage2D, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glCopyTextureSubImage2DEXT", glCopyTextureSubImage2DEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glCopyTextureSubImage3D", glCopyTextureSubImage3D, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glCopyTextureSubImage3DEXT", glCopyTextureSubImage3DEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glCoverFillPathInstancedNV", glCoverFillPathInstancedNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glCoverFillPathNV", glCoverFillPathNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glCoverStrokePathInstancedNV", glCoverStrokePathInstancedNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glCoverStrokePathNV", glCoverStrokePathNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glCoverageModulationNV", glCoverageModulationNV, 0, 0, { GL_NV_framebuffer_mixed_samples, GL_EXTENSION_COUNT }},
+    { "glCoverageModulationTableNV", glCoverageModulationTableNV, 0, 0, { GL_NV_framebuffer_mixed_samples, GL_EXTENSION_COUNT }},
+    { "glCreateBuffers", glCreateBuffers, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glCreateCommandListsNV", glCreateCommandListsNV, 0, 0, { GL_NV_command_list, GL_EXTENSION_COUNT }},
+    { "glCreateFramebuffers", glCreateFramebuffers, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glCreateMemoryObjectsEXT", glCreateMemoryObjectsEXT, 0, 0, { GL_EXT_memory_object, GL_EXTENSION_COUNT }},
+    { "glCreatePerfQueryINTEL", glCreatePerfQueryINTEL, 0, 0, { GL_INTEL_performance_query, GL_EXTENSION_COUNT }},
+    { "glCreateProgram", glCreateProgram, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glCreateProgramObjectARB", glCreateProgramObjectARB, 0, 0, { GL_ARB_shader_objects, GL_EXTENSION_COUNT }},
+    { "glCreateProgramPipelines", glCreateProgramPipelines, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glCreateProgressFenceNVX", glCreateProgressFenceNVX, 0, 0, { GL_NVX_progress_fence, GL_EXTENSION_COUNT }},
+    { "glCreateQueries", glCreateQueries, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glCreateRenderbuffers", glCreateRenderbuffers, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glCreateSamplers", glCreateSamplers, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glCreateSemaphoresNV", glCreateSemaphoresNV, 0, 0, { GL_NV_timeline_semaphore, GL_EXTENSION_COUNT }},
+    { "glCreateShader", glCreateShader, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glCreateShaderObjectARB", glCreateShaderObjectARB, 0, 0, { GL_ARB_shader_objects, GL_EXTENSION_COUNT }},
+    { "glCreateShaderProgramEXT", glCreateShaderProgramEXT, 0, 0, { GL_EXT_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glCreateShaderProgramv", glCreateShaderProgramv, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glCreateStatesNV", glCreateStatesNV, 0, 0, { GL_NV_command_list, GL_EXTENSION_COUNT }},
+    { "glCreateSyncFromCLeventARB", glCreateSyncFromCLeventARB, 0, 0, { GL_ARB_cl_event, GL_EXTENSION_COUNT }},
+    { "glCreateTextures", glCreateTextures, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glCreateTransformFeedbacks", glCreateTransformFeedbacks, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glCreateVertexArrays", glCreateVertexArrays, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glCullParameterdvEXT", glCullParameterdvEXT, 0, 0, { GL_EXT_cull_vertex, GL_EXTENSION_COUNT }},
+    { "glCullParameterfvEXT", glCullParameterfvEXT, 0, 0, { GL_EXT_cull_vertex, GL_EXTENSION_COUNT }},
+    { "glCurrentPaletteMatrixARB", glCurrentPaletteMatrixARB, 0, 0, { GL_ARB_matrix_palette, GL_EXTENSION_COUNT }},
+    { "glDebugMessageCallback", glDebugMessageCallback, 4, 3, { GL_KHR_debug, GL_EXTENSION_COUNT }},
+    { "glDebugMessageCallbackAMD", glDebugMessageCallbackAMD, 0, 0, { GL_AMD_debug_output, GL_AMDX_debug_output, GL_EXTENSION_COUNT }},
+    { "glDebugMessageCallbackARB", glDebugMessageCallbackARB, 0, 0, { GL_ARB_debug_output, GL_EXTENSION_COUNT }},
+    { "glDebugMessageControl", glDebugMessageControl, 4, 3, { GL_KHR_debug, GL_EXTENSION_COUNT }},
+    { "glDebugMessageControlARB", glDebugMessageControlARB, 0, 0, { GL_ARB_debug_output, GL_EXTENSION_COUNT }},
+    { "glDebugMessageEnableAMD", glDebugMessageEnableAMD, 0, 0, { GL_AMD_debug_output, GL_AMDX_debug_output, GL_EXTENSION_COUNT }},
+    { "glDebugMessageInsert", glDebugMessageInsert, 4, 3, { GL_KHR_debug, GL_EXTENSION_COUNT }},
+    { "glDebugMessageInsertAMD", glDebugMessageInsertAMD, 0, 0, { GL_AMD_debug_output, GL_AMDX_debug_output, GL_EXTENSION_COUNT }},
+    { "glDebugMessageInsertARB", glDebugMessageInsertARB, 0, 0, { GL_ARB_debug_output, GL_EXTENSION_COUNT }},
+    { "glDeformSGIX", glDeformSGIX, 0, 0, { GL_SGIX_polynomial_ffd, GL_EXTENSION_COUNT }},
+    { "glDeformationMap3dSGIX", glDeformationMap3dSGIX, 0, 0, { GL_SGIX_polynomial_ffd, GL_EXTENSION_COUNT }},
+    { "glDeformationMap3fSGIX", glDeformationMap3fSGIX, 0, 0, { GL_SGIX_polynomial_ffd, GL_EXTENSION_COUNT }},
+    { "glDeleteAsyncMarkersSGIX", glDeleteAsyncMarkersSGIX, 0, 0, { GL_SGIX_async, GL_EXTENSION_COUNT }},
+    { "glDeleteBufferRegion", glDeleteBufferRegion, 0, 0, { GL_KTX_buffer_region, GL_EXTENSION_COUNT }},
+    { "glDeleteBuffers", glDeleteBuffers, 1, 5, { GL_EXTENSION_COUNT }},
+    { "glDeleteBuffersARB", glDeleteBuffersARB, 0, 0, { GL_ARB_vertex_buffer_object, GL_EXTENSION_COUNT }},
+    { "glDeleteCommandListsNV", glDeleteCommandListsNV, 0, 0, { GL_NV_command_list, GL_EXTENSION_COUNT }},
+    { "glDeleteFencesAPPLE", glDeleteFencesAPPLE, 0, 0, { GL_APPLE_fence, GL_EXTENSION_COUNT }},
+    { "glDeleteFencesNV", glDeleteFencesNV, 0, 0, { GL_NV_fence, GL_EXTENSION_COUNT }},
+    { "glDeleteFragmentShaderATI", glDeleteFragmentShaderATI, 0, 0, { GL_ATI_fragment_shader, GL_EXTENSION_COUNT }},
+    { "glDeleteFramebuffers", glDeleteFramebuffers, 3, 0, { GL_ARB_framebuffer_object, GL_EXTENSION_COUNT }},
+    { "glDeleteFramebuffersEXT", glDeleteFramebuffersEXT, 0, 0, { GL_EXT_framebuffer_object, GL_EXTENSION_COUNT }},
+    { "glDeleteMemoryObjectsEXT", glDeleteMemoryObjectsEXT, 0, 0, { GL_EXT_memory_object, GL_EXTENSION_COUNT }},
+    { "glDeleteNamedStringARB", glDeleteNamedStringARB, 0, 0, { GL_ARB_shading_language_include, GL_EXTENSION_COUNT }},
+    { "glDeleteNamesAMD", glDeleteNamesAMD, 0, 0, { GL_AMD_name_gen_delete, GL_EXTENSION_COUNT }},
+    { "glDeleteObjectARB", glDeleteObjectARB, 0, 0, { GL_ARB_shader_objects, GL_EXTENSION_COUNT }},
+    { "glDeleteObjectBufferATI", glDeleteObjectBufferATI, 0, 0, { GL_ATI_vertex_array_object, GL_EXTENSION_COUNT }},
+    { "glDeleteOcclusionQueriesNV", glDeleteOcclusionQueriesNV, 0, 0, { GL_NV_occlusion_query, GL_EXTENSION_COUNT }},
+    { "glDeletePathsNV", glDeletePathsNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glDeletePerfMonitorsAMD", glDeletePerfMonitorsAMD, 0, 0, { GL_AMD_performance_monitor, GL_EXTENSION_COUNT }},
+    { "glDeletePerfQueryINTEL", glDeletePerfQueryINTEL, 0, 0, { GL_INTEL_performance_query, GL_EXTENSION_COUNT }},
+    { "glDeleteProgram", glDeleteProgram, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glDeleteProgramPipelines", glDeleteProgramPipelines, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glDeleteProgramsARB", glDeleteProgramsARB, 0, 0, { GL_ARB_fragment_program, GL_ARB_vertex_program, GL_EXTENSION_COUNT }},
+    { "glDeleteProgramsNV", glDeleteProgramsNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glDeleteQueries", glDeleteQueries, 1, 5, { GL_EXTENSION_COUNT }},
+    { "glDeleteQueriesARB", glDeleteQueriesARB, 0, 0, { GL_ARB_occlusion_query, GL_EXTENSION_COUNT }},
+    { "glDeleteQueryResourceTagNV", glDeleteQueryResourceTagNV, 0, 0, { GL_NV_query_resource_tag, GL_EXTENSION_COUNT }},
+    { "glDeleteRenderbuffers", glDeleteRenderbuffers, 3, 0, { GL_ARB_framebuffer_object, GL_EXTENSION_COUNT }},
+    { "glDeleteRenderbuffersEXT", glDeleteRenderbuffersEXT, 0, 0, { GL_EXT_framebuffer_object, GL_EXTENSION_COUNT }},
+    { "glDeleteSamplers", glDeleteSamplers, 3, 3, { GL_ARB_sampler_objects, GL_EXTENSION_COUNT }},
+    { "glDeleteSemaphoresEXT", glDeleteSemaphoresEXT, 0, 0, { GL_EXT_semaphore, GL_EXTENSION_COUNT }},
+    { "glDeleteShader", glDeleteShader, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glDeleteStatesNV", glDeleteStatesNV, 0, 0, { GL_NV_command_list, GL_EXTENSION_COUNT }},
+    { "glDeleteSync", glDeleteSync, 3, 2, { GL_ARB_sync, GL_EXTENSION_COUNT }},
+    { "glDeleteTexturesEXT", glDeleteTexturesEXT, 0, 0, { GL_EXT_texture_object, GL_EXTENSION_COUNT }},
+    { "glDeleteTransformFeedbacks", glDeleteTransformFeedbacks, 4, 0, { GL_ARB_transform_feedback2, GL_EXTENSION_COUNT }},
+    { "glDeleteTransformFeedbacksNV", glDeleteTransformFeedbacksNV, 0, 0, { GL_NV_transform_feedback2, GL_EXTENSION_COUNT }},
+    { "glDeleteVertexArrays", glDeleteVertexArrays, 3, 0, { GL_ARB_vertex_array_object, GL_EXTENSION_COUNT }},
+    { "glDeleteVertexArraysAPPLE", glDeleteVertexArraysAPPLE, 0, 0, { GL_APPLE_vertex_array_object, GL_EXTENSION_COUNT }},
+    { "glDeleteVertexShaderEXT", glDeleteVertexShaderEXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glDepthBoundsEXT", glDepthBoundsEXT, 0, 0, { GL_EXT_depth_bounds_test, GL_EXTENSION_COUNT }},
+    { "glDepthBoundsdNV", glDepthBoundsdNV, 0, 0, { GL_NV_depth_buffer_float, GL_EXTENSION_COUNT }},
+    { "glDepthRangeArraydvNV", glDepthRangeArraydvNV, 0, 0, { GL_ARB_viewport_array, GL_EXTENSION_COUNT }},
+    { "glDepthRangeArrayv", glDepthRangeArrayv, 4, 1, { GL_ARB_viewport_array, GL_EXTENSION_COUNT }},
+    { "glDepthRangeIndexed", glDepthRangeIndexed, 4, 1, { GL_ARB_viewport_array, GL_EXTENSION_COUNT }},
+    { "glDepthRangeIndexeddNV", glDepthRangeIndexeddNV, 0, 0, { GL_ARB_viewport_array, GL_EXTENSION_COUNT }},
+    { "glDepthRangedNV", glDepthRangedNV, 0, 0, { GL_NV_depth_buffer_float, GL_EXTENSION_COUNT }},
+    { "glDepthRangef", glDepthRangef, 4, 1, { GL_ARB_ES2_compatibility, GL_EXTENSION_COUNT }},
+    { "glDepthRangefOES", glDepthRangefOES, 0, 0, { GL_OES_single_precision, GL_EXTENSION_COUNT }},
+    { "glDepthRangex", glDepthRangex, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glDepthRangexOES", glDepthRangexOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glDetachObjectARB", glDetachObjectARB, 0, 0, { GL_ARB_shader_objects, GL_EXTENSION_COUNT }},
+    { "glDetachShader", glDetachShader, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glDetailTexFuncSGIS", glDetailTexFuncSGIS, 0, 0, { GL_SGIS_detail_texture, GL_EXTENSION_COUNT }},
+    { "glDisableClientStateIndexedEXT", glDisableClientStateIndexedEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glDisableClientStateiEXT", glDisableClientStateiEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glDisableIndexedEXT", glDisableIndexedEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXT_draw_buffers2, GL_EXTENSION_COUNT }},
+    { "glDisableVariantClientStateEXT", glDisableVariantClientStateEXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glDisableVertexArrayAttrib", glDisableVertexArrayAttrib, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glDisableVertexArrayAttribEXT", glDisableVertexArrayAttribEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glDisableVertexArrayEXT", glDisableVertexArrayEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glDisableVertexAttribAPPLE", glDisableVertexAttribAPPLE, 0, 0, { GL_APPLE_vertex_program_evaluators, GL_EXTENSION_COUNT }},
+    { "glDisableVertexAttribArray", glDisableVertexAttribArray, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glDisableVertexAttribArrayARB", glDisableVertexAttribArrayARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glDisablei", glDisablei, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glDispatchCompute", glDispatchCompute, 4, 3, { GL_ARB_compute_shader, GL_EXTENSION_COUNT }},
+    { "glDispatchComputeGroupSizeARB", glDispatchComputeGroupSizeARB, 0, 0, { GL_ARB_compute_variable_group_size, GL_EXTENSION_COUNT }},
+    { "glDispatchComputeIndirect", glDispatchComputeIndirect, 4, 3, { GL_ARB_compute_shader, GL_EXTENSION_COUNT }},
+    { "glDrawArraysEXT", glDrawArraysEXT, 0, 0, { GL_EXT_vertex_array, GL_EXTENSION_COUNT }},
+    { "glDrawArraysIndirect", glDrawArraysIndirect, 4, 0, { GL_ARB_draw_indirect, GL_EXTENSION_COUNT }},
+    { "glDrawArraysInstanced", glDrawArraysInstanced, 3, 1, { GL_EXTENSION_COUNT }},
+    { "glDrawArraysInstancedARB", glDrawArraysInstancedARB, 0, 0, { GL_ARB_draw_instanced, GL_EXTENSION_COUNT }},
+    { "glDrawArraysInstancedBaseInstance", glDrawArraysInstancedBaseInstance, 4, 2, { GL_ARB_base_instance, GL_EXTENSION_COUNT }},
+    { "glDrawArraysInstancedEXT", glDrawArraysInstancedEXT, 0, 0, { GL_EXT_draw_instanced, GL_EXTENSION_COUNT }},
+    { "glDrawBufferRegion", glDrawBufferRegion, 0, 0, { GL_KTX_buffer_region, GL_EXTENSION_COUNT }},
+    { "glDrawBuffers", glDrawBuffers, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glDrawBuffersARB", glDrawBuffersARB, 0, 0, { GL_ARB_draw_buffers, GL_EXTENSION_COUNT }},
+    { "glDrawBuffersATI", glDrawBuffersATI, 0, 0, { GL_ATI_draw_buffers, GL_EXTENSION_COUNT }},
+    { "glDrawCommandsAddressNV", glDrawCommandsAddressNV, 0, 0, { GL_NV_command_list, GL_EXTENSION_COUNT }},
+    { "glDrawCommandsNV", glDrawCommandsNV, 0, 0, { GL_NV_command_list, GL_EXTENSION_COUNT }},
+    { "glDrawCommandsStatesAddressNV", glDrawCommandsStatesAddressNV, 0, 0, { GL_NV_command_list, GL_EXTENSION_COUNT }},
+    { "glDrawCommandsStatesNV", glDrawCommandsStatesNV, 0, 0, { GL_NV_command_list, GL_EXTENSION_COUNT }},
+    { "glDrawElementArrayAPPLE", glDrawElementArrayAPPLE, 0, 0, { GL_APPLE_element_array, GL_EXTENSION_COUNT }},
+    { "glDrawElementArrayATI", glDrawElementArrayATI, 0, 0, { GL_ATI_element_array, GL_EXTENSION_COUNT }},
+    { "glDrawElementsBaseVertex", glDrawElementsBaseVertex, 3, 2, { GL_ARB_draw_elements_base_vertex, GL_EXTENSION_COUNT }},
+    { "glDrawElementsIndirect", glDrawElementsIndirect, 4, 0, { GL_ARB_draw_indirect, GL_EXTENSION_COUNT }},
+    { "glDrawElementsInstanced", glDrawElementsInstanced, 3, 1, { GL_EXTENSION_COUNT }},
+    { "glDrawElementsInstancedARB", glDrawElementsInstancedARB, 0, 0, { GL_ARB_draw_instanced, GL_EXTENSION_COUNT }},
+    { "glDrawElementsInstancedBaseInstance", glDrawElementsInstancedBaseInstance, 4, 2, { GL_ARB_base_instance, GL_EXTENSION_COUNT }},
+    { "glDrawElementsInstancedBaseVertex", glDrawElementsInstancedBaseVertex, 3, 2, { GL_ARB_draw_elements_base_vertex, GL_EXTENSION_COUNT }},
+    { "glDrawElementsInstancedBaseVertexBaseInstance", glDrawElementsInstancedBaseVertexBaseInstance, 4, 2, { GL_ARB_base_instance, GL_EXTENSION_COUNT }},
+    { "glDrawElementsInstancedEXT", glDrawElementsInstancedEXT, 0, 0, { GL_EXT_draw_instanced, GL_EXTENSION_COUNT }},
+    { "glDrawMeshArraysSUN", glDrawMeshArraysSUN, 0, 0, { GL_SUN_mesh_array, GL_EXTENSION_COUNT }},
+    { "glDrawMeshTasksEXT", glDrawMeshTasksEXT, 0, 0, { GL_EXT_mesh_shader, GL_EXTENSION_COUNT }},
+    { "glDrawMeshTasksIndirectEXT", glDrawMeshTasksIndirectEXT, 0, 0, { GL_EXT_mesh_shader, GL_EXTENSION_COUNT }},
+    { "glDrawMeshTasksIndirectNV", glDrawMeshTasksIndirectNV, 0, 0, { GL_NV_mesh_shader, GL_EXTENSION_COUNT }},
+    { "glDrawMeshTasksNV", glDrawMeshTasksNV, 0, 0, { GL_NV_mesh_shader, GL_EXTENSION_COUNT }},
+    { "glDrawRangeElementArrayAPPLE", glDrawRangeElementArrayAPPLE, 0, 0, { GL_APPLE_element_array, GL_EXTENSION_COUNT }},
+    { "glDrawRangeElementArrayATI", glDrawRangeElementArrayATI, 0, 0, { GL_ATI_element_array, GL_EXTENSION_COUNT }},
+    { "glDrawRangeElements", glDrawRangeElements, 1, 2, { GL_EXTENSION_COUNT }},
+    { "glDrawRangeElementsBaseVertex", glDrawRangeElementsBaseVertex, 3, 2, { GL_ARB_draw_elements_base_vertex, GL_EXTENSION_COUNT }},
+    { "glDrawRangeElementsEXT", glDrawRangeElementsEXT, 0, 0, { GL_EXT_draw_range_elements, GL_EXTENSION_COUNT }},
+    { "glDrawTextureNV", glDrawTextureNV, 0, 0, { GL_NV_draw_texture, GL_EXTENSION_COUNT }},
+    { "glDrawTransformFeedback", glDrawTransformFeedback, 4, 0, { GL_ARB_transform_feedback2, GL_EXTENSION_COUNT }},
+    { "glDrawTransformFeedbackInstanced", glDrawTransformFeedbackInstanced, 4, 2, { GL_ARB_transform_feedback_instanced, GL_EXTENSION_COUNT }},
+    { "glDrawTransformFeedbackNV", glDrawTransformFeedbackNV, 0, 0, { GL_NV_transform_feedback2, GL_EXTENSION_COUNT }},
+    { "glDrawTransformFeedbackStream", glDrawTransformFeedbackStream, 4, 0, { GL_ARB_transform_feedback3, GL_EXTENSION_COUNT }},
+    { "glDrawTransformFeedbackStreamInstanced", glDrawTransformFeedbackStreamInstanced, 4, 2, { GL_ARB_transform_feedback_instanced, GL_EXTENSION_COUNT }},
+    { "glDrawVkImageNV", glDrawVkImageNV, 0, 0, { GL_NV_draw_vulkan_image, GL_EXTENSION_COUNT }},
+    { "glEGLImageTargetTexStorageEXT", glEGLImageTargetTexStorageEXT, 0, 0, { GL_EXT_EGL_image_storage, GL_EXTENSION_COUNT }},
+    { "glEGLImageTargetTextureStorageEXT", glEGLImageTargetTextureStorageEXT, 0, 0, { GL_EXT_EGL_image_storage, GL_EXTENSION_COUNT }},
+    { "glEdgeFlagFormatNV", glEdgeFlagFormatNV, 0, 0, { GL_NV_vertex_buffer_unified_memory, GL_EXTENSION_COUNT }},
+    { "glEdgeFlagPointerEXT", glEdgeFlagPointerEXT, 0, 0, { GL_EXT_vertex_array, GL_EXTENSION_COUNT }},
+    { "glEdgeFlagPointerListIBM", glEdgeFlagPointerListIBM, 0, 0, { GL_IBM_vertex_array_lists, GL_EXTENSION_COUNT }},
+    { "glElementPointerAPPLE", glElementPointerAPPLE, 0, 0, { GL_APPLE_element_array, GL_EXTENSION_COUNT }},
+    { "glElementPointerATI", glElementPointerATI, 0, 0, { GL_ATI_element_array, GL_EXTENSION_COUNT }},
+    { "glEnableClientStateIndexedEXT", glEnableClientStateIndexedEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glEnableClientStateiEXT", glEnableClientStateiEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glEnableIndexedEXT", glEnableIndexedEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXT_draw_buffers2, GL_EXTENSION_COUNT }},
+    { "glEnableVariantClientStateEXT", glEnableVariantClientStateEXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glEnableVertexArrayAttrib", glEnableVertexArrayAttrib, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glEnableVertexArrayAttribEXT", glEnableVertexArrayAttribEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glEnableVertexArrayEXT", glEnableVertexArrayEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glEnableVertexAttribAPPLE", glEnableVertexAttribAPPLE, 0, 0, { GL_APPLE_vertex_program_evaluators, GL_EXTENSION_COUNT }},
+    { "glEnableVertexAttribArray", glEnableVertexAttribArray, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glEnableVertexAttribArrayARB", glEnableVertexAttribArrayARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glEnablei", glEnablei, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glEndConditionalRender", glEndConditionalRender, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glEndConditionalRenderNV", glEndConditionalRenderNV, 0, 0, { GL_NV_conditional_render, GL_EXTENSION_COUNT }},
+    { "glEndConditionalRenderNVX", glEndConditionalRenderNVX, 0, 0, { GL_NVX_conditional_render, GL_EXTENSION_COUNT }},
+    { "glEndFragmentShaderATI", glEndFragmentShaderATI, 0, 0, { GL_ATI_fragment_shader, GL_EXTENSION_COUNT }},
+    { "glEndOcclusionQueryNV", glEndOcclusionQueryNV, 0, 0, { GL_NV_occlusion_query, GL_EXTENSION_COUNT }},
+    { "glEndPerfMonitorAMD", glEndPerfMonitorAMD, 0, 0, { GL_AMD_performance_monitor, GL_EXTENSION_COUNT }},
+    { "glEndPerfQueryINTEL", glEndPerfQueryINTEL, 0, 0, { GL_INTEL_performance_query, GL_EXTENSION_COUNT }},
+    { "glEndQuery", glEndQuery, 1, 5, { GL_EXTENSION_COUNT }},
+    { "glEndQueryARB", glEndQueryARB, 0, 0, { GL_ARB_occlusion_query, GL_EXTENSION_COUNT }},
+    { "glEndQueryIndexed", glEndQueryIndexed, 4, 0, { GL_ARB_transform_feedback3, GL_EXTENSION_COUNT }},
+    { "glEndTransformFeedback", glEndTransformFeedback, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glEndTransformFeedbackEXT", glEndTransformFeedbackEXT, 0, 0, { GL_EXT_transform_feedback, GL_EXTENSION_COUNT }},
+    { "glEndTransformFeedbackNV", glEndTransformFeedbackNV, 0, 0, { GL_NV_transform_feedback, GL_EXTENSION_COUNT }},
+    { "glEndVertexShaderEXT", glEndVertexShaderEXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glEndVideoCaptureNV", glEndVideoCaptureNV, 0, 0, { GL_NV_video_capture, GL_EXTENSION_COUNT }},
+    { "glEvalCoord1xOES", glEvalCoord1xOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glEvalCoord1xvOES", glEvalCoord1xvOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glEvalCoord2xOES", glEvalCoord2xOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glEvalCoord2xvOES", glEvalCoord2xvOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glEvalMapsNV", glEvalMapsNV, 0, 0, { GL_NV_evaluators, GL_EXTENSION_COUNT }},
+    { "glEvaluateDepthValuesARB", glEvaluateDepthValuesARB, 0, 0, { GL_ARB_sample_locations, GL_EXTENSION_COUNT }},
+    { "glExecuteProgramNV", glExecuteProgramNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glExtractComponentEXT", glExtractComponentEXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glFeedbackBufferxOES", glFeedbackBufferxOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glFenceSync", glFenceSync, 3, 2, { GL_ARB_sync, GL_EXTENSION_COUNT }},
+    { "glFinalCombinerInputNV", glFinalCombinerInputNV, 0, 0, { GL_NV_register_combiners, GL_EXTENSION_COUNT }},
+    { "glFinishAsyncSGIX", glFinishAsyncSGIX, 0, 0, { GL_SGIX_async, GL_EXTENSION_COUNT }},
+    { "glFinishFenceAPPLE", glFinishFenceAPPLE, 0, 0, { GL_APPLE_fence, GL_EXTENSION_COUNT }},
+    { "glFinishFenceNV", glFinishFenceNV, 0, 0, { GL_NV_fence, GL_EXTENSION_COUNT }},
+    { "glFinishObjectAPPLE", glFinishObjectAPPLE, 0, 0, { GL_APPLE_fence, GL_EXTENSION_COUNT }},
+    { "glFinishTextureSUNX", glFinishTextureSUNX, 0, 0, { GL_SUNX_constant_data, GL_EXTENSION_COUNT }},
+    { "glFlushMappedBufferRange", glFlushMappedBufferRange, 3, 0, { GL_ARB_map_buffer_range, GL_EXTENSION_COUNT }},
+    { "glFlushMappedBufferRangeAPPLE", glFlushMappedBufferRangeAPPLE, 0, 0, { GL_APPLE_flush_buffer_range, GL_EXTENSION_COUNT }},
+    { "glFlushMappedNamedBufferRange", glFlushMappedNamedBufferRange, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glFlushMappedNamedBufferRangeEXT", glFlushMappedNamedBufferRangeEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glFlushPixelDataRangeNV", glFlushPixelDataRangeNV, 0, 0, { GL_NV_pixel_data_range, GL_EXTENSION_COUNT }},
+    { "glFlushRasterSGIX", glFlushRasterSGIX, 0, 0, { GL_SGIX_flush_raster, GL_EXTENSION_COUNT }},
+    { "glFlushStaticDataIBM", glFlushStaticDataIBM, 0, 0, { GL_IBM_static_data, GL_EXTENSION_COUNT }},
+    { "glFlushVertexArrayRangeAPPLE", glFlushVertexArrayRangeAPPLE, 0, 0, { GL_APPLE_vertex_array_range, GL_EXTENSION_COUNT }},
+    { "glFlushVertexArrayRangeNV", glFlushVertexArrayRangeNV, 0, 0, { GL_NV_vertex_array_range, GL_EXTENSION_COUNT }},
+    { "glFogCoordFormatNV", glFogCoordFormatNV, 0, 0, { GL_NV_vertex_buffer_unified_memory, GL_EXTENSION_COUNT }},
+    { "glFogCoordPointer", glFogCoordPointer, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glFogCoordPointerEXT", glFogCoordPointerEXT, 0, 0, { GL_EXT_fog_coord, GL_EXTENSION_COUNT }},
+    { "glFogCoordPointerListIBM", glFogCoordPointerListIBM, 0, 0, { GL_IBM_vertex_array_lists, GL_EXTENSION_COUNT }},
+    { "glFogCoordd", glFogCoordd, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glFogCoorddEXT", glFogCoorddEXT, 0, 0, { GL_EXT_fog_coord, GL_EXTENSION_COUNT }},
+    { "glFogCoorddv", glFogCoorddv, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glFogCoorddvEXT", glFogCoorddvEXT, 0, 0, { GL_EXT_fog_coord, GL_EXTENSION_COUNT }},
+    { "glFogCoordf", glFogCoordf, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glFogCoordfEXT", glFogCoordfEXT, 0, 0, { GL_EXT_fog_coord, GL_EXTENSION_COUNT }},
+    { "glFogCoordfv", glFogCoordfv, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glFogCoordfvEXT", glFogCoordfvEXT, 0, 0, { GL_EXT_fog_coord, GL_EXTENSION_COUNT }},
+    { "glFogCoordhNV", glFogCoordhNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glFogCoordhvNV", glFogCoordhvNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glFogFuncSGIS", glFogFuncSGIS, 0, 0, { GL_SGIS_fog_function, GL_EXTENSION_COUNT }},
+    { "glFogx", glFogx, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glFogxOES", glFogxOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glFogxv", glFogxv, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glFogxvOES", glFogxvOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glFragmentColorMaterialSGIX", glFragmentColorMaterialSGIX, 0, 0, { GL_SGIX_fragment_lighting, GL_EXTENSION_COUNT }},
+    { "glFragmentCoverageColorNV", glFragmentCoverageColorNV, 0, 0, { GL_NV_fragment_coverage_to_color, GL_EXTENSION_COUNT }},
+    { "glFragmentLightModelfSGIX", glFragmentLightModelfSGIX, 0, 0, { GL_SGIX_fragment_lighting, GL_EXTENSION_COUNT }},
+    { "glFragmentLightModelfvSGIX", glFragmentLightModelfvSGIX, 0, 0, { GL_SGIX_fragment_lighting, GL_EXTENSION_COUNT }},
+    { "glFragmentLightModeliSGIX", glFragmentLightModeliSGIX, 0, 0, { GL_SGIX_fragment_lighting, GL_EXTENSION_COUNT }},
+    { "glFragmentLightModelivSGIX", glFragmentLightModelivSGIX, 0, 0, { GL_SGIX_fragment_lighting, GL_EXTENSION_COUNT }},
+    { "glFragmentLightfSGIX", glFragmentLightfSGIX, 0, 0, { GL_SGIX_fragment_lighting, GL_EXTENSION_COUNT }},
+    { "glFragmentLightfvSGIX", glFragmentLightfvSGIX, 0, 0, { GL_SGIX_fragment_lighting, GL_EXTENSION_COUNT }},
+    { "glFragmentLightiSGIX", glFragmentLightiSGIX, 0, 0, { GL_SGIX_fragment_lighting, GL_EXTENSION_COUNT }},
+    { "glFragmentLightivSGIX", glFragmentLightivSGIX, 0, 0, { GL_SGIX_fragment_lighting, GL_EXTENSION_COUNT }},
+    { "glFragmentMaterialfSGIX", glFragmentMaterialfSGIX, 0, 0, { GL_SGIX_fragment_lighting, GL_EXTENSION_COUNT }},
+    { "glFragmentMaterialfvSGIX", glFragmentMaterialfvSGIX, 0, 0, { GL_SGIX_fragment_lighting, GL_EXTENSION_COUNT }},
+    { "glFragmentMaterialiSGIX", glFragmentMaterialiSGIX, 0, 0, { GL_SGIX_fragment_lighting, GL_EXTENSION_COUNT }},
+    { "glFragmentMaterialivSGIX", glFragmentMaterialivSGIX, 0, 0, { GL_SGIX_fragment_lighting, GL_EXTENSION_COUNT }},
+    { "glFrameTerminatorGREMEDY", glFrameTerminatorGREMEDY, 0, 0, { GL_GREMEDY_frame_terminator, GL_EXTENSION_COUNT }},
+    { "glFrameZoomSGIX", glFrameZoomSGIX, 0, 0, { GL_SGIX_framezoom, GL_EXTENSION_COUNT }},
+    { "glFramebufferDrawBufferEXT", glFramebufferDrawBufferEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glFramebufferDrawBuffersEXT", glFramebufferDrawBuffersEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glFramebufferFetchBarrierEXT", glFramebufferFetchBarrierEXT, 0, 0, { GL_EXT_shader_framebuffer_fetch_non_coherent, GL_EXTENSION_COUNT }},
+    { "glFramebufferParameteri", glFramebufferParameteri, 4, 3, { GL_ARB_framebuffer_no_attachments, GL_EXTENSION_COUNT }},
+    { "glFramebufferParameteriMESA", glFramebufferParameteriMESA, 0, 0, { GL_MESA_framebuffer_flip_y, GL_EXTENSION_COUNT }},
+    { "glFramebufferReadBufferEXT", glFramebufferReadBufferEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glFramebufferRenderbuffer", glFramebufferRenderbuffer, 3, 0, { GL_ARB_framebuffer_object, GL_EXTENSION_COUNT }},
+    { "glFramebufferRenderbufferEXT", glFramebufferRenderbufferEXT, 0, 0, { GL_EXT_framebuffer_object, GL_EXTENSION_COUNT }},
+    { "glFramebufferSampleLocationsfvARB", glFramebufferSampleLocationsfvARB, 0, 0, { GL_ARB_sample_locations, GL_EXTENSION_COUNT }},
+    { "glFramebufferSampleLocationsfvNV", glFramebufferSampleLocationsfvNV, 0, 0, { GL_NV_sample_locations, GL_EXTENSION_COUNT }},
+    { "glFramebufferSamplePositionsfvAMD", glFramebufferSamplePositionsfvAMD, 0, 0, { GL_AMD_framebuffer_sample_positions, GL_EXTENSION_COUNT }},
+    { "glFramebufferShadingRateEXT", glFramebufferShadingRateEXT, 0, 0, { GL_EXT_fragment_shading_rate, GL_EXT_fragment_shading_rate_primitive, GL_EXT_fragment_shading_rate_attachment, GL_EXTENSION_COUNT }},
+    { "glFramebufferTexture", glFramebufferTexture, 3, 2, { GL_EXTENSION_COUNT }},
+    { "glFramebufferTexture1D", glFramebufferTexture1D, 3, 0, { GL_ARB_framebuffer_object, GL_EXTENSION_COUNT }},
+    { "glFramebufferTexture1DEXT", glFramebufferTexture1DEXT, 0, 0, { GL_EXT_framebuffer_object, GL_EXTENSION_COUNT }},
+    { "glFramebufferTexture2D", glFramebufferTexture2D, 3, 0, { GL_ARB_framebuffer_object, GL_EXTENSION_COUNT }},
+    { "glFramebufferTexture2DEXT", glFramebufferTexture2DEXT, 0, 0, { GL_EXT_framebuffer_object, GL_EXTENSION_COUNT }},
+    { "glFramebufferTexture3D", glFramebufferTexture3D, 3, 0, { GL_ARB_framebuffer_object, GL_EXTENSION_COUNT }},
+    { "glFramebufferTexture3DEXT", glFramebufferTexture3DEXT, 0, 0, { GL_EXT_framebuffer_object, GL_EXTENSION_COUNT }},
+    { "glFramebufferTextureARB", glFramebufferTextureARB, 0, 0, { GL_ARB_geometry_shader4, GL_EXTENSION_COUNT }},
+    { "glFramebufferTextureEXT", glFramebufferTextureEXT, 0, 0, { GL_NV_geometry_program4, GL_EXTENSION_COUNT }},
+    { "glFramebufferTextureFaceARB", glFramebufferTextureFaceARB, 0, 0, { GL_ARB_geometry_shader4, GL_EXTENSION_COUNT }},
+    { "glFramebufferTextureFaceEXT", glFramebufferTextureFaceEXT, 0, 0, { GL_NV_geometry_program4, GL_EXTENSION_COUNT }},
+    { "glFramebufferTextureLayer", glFramebufferTextureLayer, 3, 0, { GL_ARB_framebuffer_object, GL_EXTENSION_COUNT }},
+    { "glFramebufferTextureLayerARB", glFramebufferTextureLayerARB, 0, 0, { GL_ARB_geometry_shader4, GL_EXTENSION_COUNT }},
+    { "glFramebufferTextureLayerEXT", glFramebufferTextureLayerEXT, 0, 0, { GL_EXT_texture_array, GL_NV_geometry_program4, GL_EXTENSION_COUNT }},
+    { "glFramebufferTextureMultiviewOVR", glFramebufferTextureMultiviewOVR, 0, 0, { GL_OVR_multiview, GL_EXTENSION_COUNT }},
+    { "glFreeObjectBufferATI", glFreeObjectBufferATI, 0, 0, { GL_ATI_vertex_array_object, GL_EXTENSION_COUNT }},
+    { "glFrustumf", glFrustumf, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glFrustumfOES", glFrustumfOES, 0, 0, { GL_OES_single_precision, GL_EXTENSION_COUNT }},
+    { "glFrustumx", glFrustumx, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glFrustumxOES", glFrustumxOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glGenAsyncMarkersSGIX", glGenAsyncMarkersSGIX, 0, 0, { GL_SGIX_async, GL_EXTENSION_COUNT }},
+    { "glGenBuffers", glGenBuffers, 1, 5, { GL_EXTENSION_COUNT }},
+    { "glGenBuffersARB", glGenBuffersARB, 0, 0, { GL_ARB_vertex_buffer_object, GL_EXTENSION_COUNT }},
+    { "glGenFencesAPPLE", glGenFencesAPPLE, 0, 0, { GL_APPLE_fence, GL_EXTENSION_COUNT }},
+    { "glGenFencesNV", glGenFencesNV, 0, 0, { GL_NV_fence, GL_EXTENSION_COUNT }},
+    { "glGenFragmentShadersATI", glGenFragmentShadersATI, 0, 0, { GL_ATI_fragment_shader, GL_EXTENSION_COUNT }},
+    { "glGenFramebuffers", glGenFramebuffers, 3, 0, { GL_ARB_framebuffer_object, GL_EXTENSION_COUNT }},
+    { "glGenFramebuffersEXT", glGenFramebuffersEXT, 0, 0, { GL_EXT_framebuffer_object, GL_EXTENSION_COUNT }},
+    { "glGenNamesAMD", glGenNamesAMD, 0, 0, { GL_AMD_name_gen_delete, GL_EXTENSION_COUNT }},
+    { "glGenOcclusionQueriesNV", glGenOcclusionQueriesNV, 0, 0, { GL_NV_occlusion_query, GL_EXTENSION_COUNT }},
+    { "glGenPathsNV", glGenPathsNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glGenPerfMonitorsAMD", glGenPerfMonitorsAMD, 0, 0, { GL_AMD_performance_monitor, GL_EXTENSION_COUNT }},
+    { "glGenProgramPipelines", glGenProgramPipelines, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glGenProgramsARB", glGenProgramsARB, 0, 0, { GL_ARB_fragment_program, GL_ARB_vertex_program, GL_EXTENSION_COUNT }},
+    { "glGenProgramsNV", glGenProgramsNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glGenQueries", glGenQueries, 1, 5, { GL_EXTENSION_COUNT }},
+    { "glGenQueriesARB", glGenQueriesARB, 0, 0, { GL_ARB_occlusion_query, GL_EXTENSION_COUNT }},
+    { "glGenQueryResourceTagNV", glGenQueryResourceTagNV, 0, 0, { GL_NV_query_resource_tag, GL_EXTENSION_COUNT }},
+    { "glGenRenderbuffers", glGenRenderbuffers, 3, 0, { GL_ARB_framebuffer_object, GL_EXTENSION_COUNT }},
+    { "glGenRenderbuffersEXT", glGenRenderbuffersEXT, 0, 0, { GL_EXT_framebuffer_object, GL_EXTENSION_COUNT }},
+    { "glGenSamplers", glGenSamplers, 3, 3, { GL_ARB_sampler_objects, GL_EXTENSION_COUNT }},
+    { "glGenSemaphoresEXT", glGenSemaphoresEXT, 0, 0, { GL_EXT_semaphore, GL_EXTENSION_COUNT }},
+    { "glGenSymbolsEXT", glGenSymbolsEXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glGenTexturesEXT", glGenTexturesEXT, 0, 0, { GL_EXT_texture_object, GL_EXTENSION_COUNT }},
+    { "glGenTransformFeedbacks", glGenTransformFeedbacks, 4, 0, { GL_ARB_transform_feedback2, GL_EXTENSION_COUNT }},
+    { "glGenTransformFeedbacksNV", glGenTransformFeedbacksNV, 0, 0, { GL_NV_transform_feedback2, GL_EXTENSION_COUNT }},
+    { "glGenVertexArrays", glGenVertexArrays, 3, 0, { GL_ARB_vertex_array_object, GL_EXTENSION_COUNT }},
+    { "glGenVertexArraysAPPLE", glGenVertexArraysAPPLE, 0, 0, { GL_APPLE_vertex_array_object, GL_EXTENSION_COUNT }},
+    { "glGenVertexShadersEXT", glGenVertexShadersEXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glGenerateMipmap", glGenerateMipmap, 3, 0, { GL_ARB_framebuffer_object, GL_EXTENSION_COUNT }},
+    { "glGenerateMipmapEXT", glGenerateMipmapEXT, 0, 0, { GL_EXT_framebuffer_object, GL_EXTENSION_COUNT }},
+    { "glGenerateMultiTexMipmapEXT", glGenerateMultiTexMipmapEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGenerateTextureMipmap", glGenerateTextureMipmap, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGenerateTextureMipmapEXT", glGenerateTextureMipmapEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetActiveAtomicCounterBufferiv", glGetActiveAtomicCounterBufferiv, 4, 2, { GL_ARB_shader_atomic_counters, GL_EXTENSION_COUNT }},
+    { "glGetActiveAttrib", glGetActiveAttrib, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glGetActiveAttribARB", glGetActiveAttribARB, 0, 0, { GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glGetActiveSubroutineName", glGetActiveSubroutineName, 4, 0, { GL_ARB_shader_subroutine, GL_EXTENSION_COUNT }},
+    { "glGetActiveSubroutineUniformName", glGetActiveSubroutineUniformName, 4, 0, { GL_ARB_shader_subroutine, GL_EXTENSION_COUNT }},
+    { "glGetActiveSubroutineUniformiv", glGetActiveSubroutineUniformiv, 4, 0, { GL_ARB_shader_subroutine, GL_EXTENSION_COUNT }},
+    { "glGetActiveUniform", glGetActiveUniform, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glGetActiveUniformARB", glGetActiveUniformARB, 0, 0, { GL_ARB_shader_objects, GL_EXTENSION_COUNT }},
+    { "glGetActiveUniformBlockName", glGetActiveUniformBlockName, 3, 1, { GL_ARB_uniform_buffer_object, GL_EXTENSION_COUNT }},
+    { "glGetActiveUniformBlockiv", glGetActiveUniformBlockiv, 3, 1, { GL_ARB_uniform_buffer_object, GL_EXTENSION_COUNT }},
+    { "glGetActiveUniformName", glGetActiveUniformName, 3, 1, { GL_ARB_uniform_buffer_object, GL_EXTENSION_COUNT }},
+    { "glGetActiveUniformsiv", glGetActiveUniformsiv, 3, 1, { GL_ARB_uniform_buffer_object, GL_EXTENSION_COUNT }},
+    { "glGetActiveVaryingNV", glGetActiveVaryingNV, 0, 0, { GL_NV_transform_feedback, GL_EXTENSION_COUNT }},
+    { "glGetArrayObjectfvATI", glGetArrayObjectfvATI, 0, 0, { GL_ATI_vertex_array_object, GL_EXTENSION_COUNT }},
+    { "glGetArrayObjectivATI", glGetArrayObjectivATI, 0, 0, { GL_ATI_vertex_array_object, GL_EXTENSION_COUNT }},
+    { "glGetAttachedObjectsARB", glGetAttachedObjectsARB, 0, 0, { GL_ARB_shader_objects, GL_EXTENSION_COUNT }},
+    { "glGetAttachedShaders", glGetAttachedShaders, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glGetAttribLocation", glGetAttribLocation, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glGetAttribLocationARB", glGetAttribLocationARB, 0, 0, { GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glGetBooleanIndexedvEXT", glGetBooleanIndexedvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXT_draw_buffers2, GL_EXTENSION_COUNT }},
+    { "glGetBooleani_v", glGetBooleani_v, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glGetBufferParameteri64v", glGetBufferParameteri64v, 3, 2, { GL_EXTENSION_COUNT }},
+    { "glGetBufferParameteriv", glGetBufferParameteriv, 1, 5, { GL_EXTENSION_COUNT }},
+    { "glGetBufferParameterivARB", glGetBufferParameterivARB, 0, 0, { GL_ARB_vertex_buffer_object, GL_EXTENSION_COUNT }},
+    { "glGetBufferParameterui64vNV", glGetBufferParameterui64vNV, 0, 0, { GL_NV_shader_buffer_load, GL_EXTENSION_COUNT }},
+    { "glGetBufferPointerv", glGetBufferPointerv, 1, 5, { GL_EXTENSION_COUNT }},
+    { "glGetBufferPointervARB", glGetBufferPointervARB, 0, 0, { GL_ARB_vertex_buffer_object, GL_EXTENSION_COUNT }},
+    { "glGetBufferSubData", glGetBufferSubData, 1, 5, { GL_EXTENSION_COUNT }},
+    { "glGetBufferSubDataARB", glGetBufferSubDataARB, 0, 0, { GL_ARB_vertex_buffer_object, GL_EXTENSION_COUNT }},
+    { "glGetClipPlanef", glGetClipPlanef, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glGetClipPlanefOES", glGetClipPlanefOES, 0, 0, { GL_OES_single_precision, GL_EXTENSION_COUNT }},
+    { "glGetClipPlanex", glGetClipPlanex, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glGetClipPlanexOES", glGetClipPlanexOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glGetColorTable", glGetColorTable, 0, 0, { GL_ARB_imaging, GL_EXTENSION_COUNT }},
+    { "glGetColorTableEXT", glGetColorTableEXT, 0, 0, { GL_EXT_paletted_texture, GL_EXTENSION_COUNT }},
+    { "glGetColorTableParameterfv", glGetColorTableParameterfv, 0, 0, { GL_ARB_imaging, GL_EXTENSION_COUNT }},
+    { "glGetColorTableParameterfvEXT", glGetColorTableParameterfvEXT, 0, 0, { GL_EXT_paletted_texture, GL_EXTENSION_COUNT }},
+    { "glGetColorTableParameterfvSGI", glGetColorTableParameterfvSGI, 0, 0, { GL_SGI_color_table, GL_EXTENSION_COUNT }},
+    { "glGetColorTableParameteriv", glGetColorTableParameteriv, 0, 0, { GL_ARB_imaging, GL_EXTENSION_COUNT }},
+    { "glGetColorTableParameterivEXT", glGetColorTableParameterivEXT, 0, 0, { GL_EXT_paletted_texture, GL_EXTENSION_COUNT }},
+    { "glGetColorTableParameterivSGI", glGetColorTableParameterivSGI, 0, 0, { GL_SGI_color_table, GL_EXTENSION_COUNT }},
+    { "glGetColorTableSGI", glGetColorTableSGI, 0, 0, { GL_SGI_color_table, GL_EXTENSION_COUNT }},
+    { "glGetCombinerInputParameterfvNV", glGetCombinerInputParameterfvNV, 0, 0, { GL_NV_register_combiners, GL_EXTENSION_COUNT }},
+    { "glGetCombinerInputParameterivNV", glGetCombinerInputParameterivNV, 0, 0, { GL_NV_register_combiners, GL_EXTENSION_COUNT }},
+    { "glGetCombinerOutputParameterfvNV", glGetCombinerOutputParameterfvNV, 0, 0, { GL_NV_register_combiners, GL_EXTENSION_COUNT }},
+    { "glGetCombinerOutputParameterivNV", glGetCombinerOutputParameterivNV, 0, 0, { GL_NV_register_combiners, GL_EXTENSION_COUNT }},
+    { "glGetCombinerStageParameterfvNV", glGetCombinerStageParameterfvNV, 0, 0, { GL_NV_register_combiners2, GL_EXTENSION_COUNT }},
+    { "glGetCommandHeaderNV", glGetCommandHeaderNV, 0, 0, { GL_NV_command_list, GL_EXTENSION_COUNT }},
+    { "glGetCompressedMultiTexImageEXT", glGetCompressedMultiTexImageEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetCompressedTexImage", glGetCompressedTexImage, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glGetCompressedTexImageARB", glGetCompressedTexImageARB, 1, 3, { GL_ARB_texture_compression, GL_EXTENSION_COUNT }},
+    { "glGetCompressedTextureImage", glGetCompressedTextureImage, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetCompressedTextureImageEXT", glGetCompressedTextureImageEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetCompressedTextureSubImage", glGetCompressedTextureSubImage, 4, 5, { GL_ARB_get_texture_sub_image, GL_EXTENSION_COUNT }},
+    { "glGetConvolutionFilter", glGetConvolutionFilter, 0, 0, { GL_ARB_imaging, GL_EXTENSION_COUNT }},
+    { "glGetConvolutionFilterEXT", glGetConvolutionFilterEXT, 0, 0, { GL_EXT_convolution, GL_EXTENSION_COUNT }},
+    { "glGetConvolutionParameterfv", glGetConvolutionParameterfv, 0, 0, { GL_ARB_imaging, GL_EXTENSION_COUNT }},
+    { "glGetConvolutionParameterfvEXT", glGetConvolutionParameterfvEXT, 0, 0, { GL_EXT_convolution, GL_EXTENSION_COUNT }},
+    { "glGetConvolutionParameteriv", glGetConvolutionParameteriv, 0, 0, { GL_ARB_imaging, GL_EXTENSION_COUNT }},
+    { "glGetConvolutionParameterivEXT", glGetConvolutionParameterivEXT, 0, 0, { GL_EXT_convolution, GL_EXTENSION_COUNT }},
+    { "glGetConvolutionParameterxvOES", glGetConvolutionParameterxvOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glGetCoverageModulationTableNV", glGetCoverageModulationTableNV, 0, 0, { GL_NV_framebuffer_mixed_samples, GL_EXTENSION_COUNT }},
+    { "glGetDebugMessageLog", glGetDebugMessageLog, 4, 3, { GL_KHR_debug, GL_EXTENSION_COUNT }},
+    { "glGetDebugMessageLogAMD", glGetDebugMessageLogAMD, 0, 0, { GL_AMD_debug_output, GL_AMDX_debug_output, GL_EXTENSION_COUNT }},
+    { "glGetDebugMessageLogARB", glGetDebugMessageLogARB, 0, 0, { GL_ARB_debug_output, GL_EXTENSION_COUNT }},
+    { "glGetDetailTexFuncSGIS", glGetDetailTexFuncSGIS, 0, 0, { GL_SGIS_detail_texture, GL_EXTENSION_COUNT }},
+    { "glGetDoubleIndexedvEXT", glGetDoubleIndexedvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetDoublei_v", glGetDoublei_v, 4, 1, { GL_ARB_viewport_array, GL_EXTENSION_COUNT }},
+    { "glGetDoublei_vEXT", glGetDoublei_vEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetFenceivNV", glGetFenceivNV, 0, 0, { GL_NV_fence, GL_EXTENSION_COUNT }},
+    { "glGetFinalCombinerInputParameterfvNV", glGetFinalCombinerInputParameterfvNV, 0, 0, { GL_NV_register_combiners, GL_EXTENSION_COUNT }},
+    { "glGetFinalCombinerInputParameterivNV", glGetFinalCombinerInputParameterivNV, 0, 0, { GL_NV_register_combiners, GL_EXTENSION_COUNT }},
+    { "glGetFirstPerfQueryIdINTEL", glGetFirstPerfQueryIdINTEL, 0, 0, { GL_INTEL_performance_query, GL_EXTENSION_COUNT }},
+    { "glGetFixedv", glGetFixedv, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glGetFixedvOES", glGetFixedvOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glGetFloatIndexedvEXT", glGetFloatIndexedvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetFloati_v", glGetFloati_v, 4, 1, { GL_ARB_viewport_array, GL_EXTENSION_COUNT }},
+    { "glGetFloati_vEXT", glGetFloati_vEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetFogFuncSGIS", glGetFogFuncSGIS, 0, 0, { GL_SGIS_fog_function, GL_EXTENSION_COUNT }},
+    { "glGetFragDataIndex", glGetFragDataIndex, 3, 3, { GL_ARB_blend_func_extended, GL_EXTENSION_COUNT }},
+    { "glGetFragDataLocation", glGetFragDataLocation, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glGetFragDataLocationEXT", glGetFragDataLocationEXT, 0, 0, { GL_EXT_gpu_shader4, GL_EXTENSION_COUNT }},
+    { "glGetFragmentLightfvSGIX", glGetFragmentLightfvSGIX, 0, 0, { GL_SGIX_fragment_lighting, GL_EXTENSION_COUNT }},
+    { "glGetFragmentLightivSGIX", glGetFragmentLightivSGIX, 0, 0, { GL_SGIX_fragment_lighting, GL_EXTENSION_COUNT }},
+    { "glGetFragmentMaterialfvSGIX", glGetFragmentMaterialfvSGIX, 0, 0, { GL_SGIX_fragment_lighting, GL_EXTENSION_COUNT }},
+    { "glGetFragmentMaterialivSGIX", glGetFragmentMaterialivSGIX, 0, 0, { GL_SGIX_fragment_lighting, GL_EXTENSION_COUNT }},
+    { "glGetFragmentShadingRatesEXT", glGetFragmentShadingRatesEXT, 0, 0, { GL_EXT_fragment_shading_rate, GL_EXT_fragment_shading_rate_primitive, GL_EXT_fragment_shading_rate_attachment, GL_EXTENSION_COUNT }},
+    { "glGetFramebufferAttachmentParameteriv", glGetFramebufferAttachmentParameteriv, 3, 0, { GL_ARB_framebuffer_object, GL_EXTENSION_COUNT }},
+    { "glGetFramebufferAttachmentParameterivEXT", glGetFramebufferAttachmentParameterivEXT, 0, 0, { GL_EXT_framebuffer_object, GL_EXTENSION_COUNT }},
+    { "glGetFramebufferParameterfvAMD", glGetFramebufferParameterfvAMD, 0, 0, { GL_AMD_framebuffer_sample_positions, GL_EXTENSION_COUNT }},
+    { "glGetFramebufferParameteriv", glGetFramebufferParameteriv, 4, 3, { GL_ARB_framebuffer_no_attachments, GL_EXTENSION_COUNT }},
+    { "glGetFramebufferParameterivEXT", glGetFramebufferParameterivEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetFramebufferParameterivMESA", glGetFramebufferParameterivMESA, 0, 0, { GL_MESA_framebuffer_flip_y, GL_EXTENSION_COUNT }},
+    { "glGetGraphicsResetStatus", glGetGraphicsResetStatus, 4, 5, { GL_KHR_robustness, GL_EXTENSION_COUNT }},
+    { "glGetGraphicsResetStatusARB", glGetGraphicsResetStatusARB, 0, 0, { GL_ARB_robustness, GL_EXTENSION_COUNT }},
+    { "glGetHandleARB", glGetHandleARB, 0, 0, { GL_ARB_shader_objects, GL_EXTENSION_COUNT }},
+    { "glGetHistogram", glGetHistogram, 0, 0, { GL_ARB_imaging, GL_EXTENSION_COUNT }},
+    { "glGetHistogramEXT", glGetHistogramEXT, 0, 0, { GL_EXT_histogram, GL_EXTENSION_COUNT }},
+    { "glGetHistogramParameterfv", glGetHistogramParameterfv, 0, 0, { GL_ARB_imaging, GL_EXTENSION_COUNT }},
+    { "glGetHistogramParameterfvEXT", glGetHistogramParameterfvEXT, 0, 0, { GL_EXT_histogram, GL_EXTENSION_COUNT }},
+    { "glGetHistogramParameteriv", glGetHistogramParameteriv, 0, 0, { GL_ARB_imaging, GL_EXTENSION_COUNT }},
+    { "glGetHistogramParameterivEXT", glGetHistogramParameterivEXT, 0, 0, { GL_EXT_histogram, GL_EXTENSION_COUNT }},
+    { "glGetHistogramParameterxvOES", glGetHistogramParameterxvOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glGetImageHandleARB", glGetImageHandleARB, 0, 0, { GL_ARB_bindless_texture, GL_EXTENSION_COUNT }},
+    { "glGetImageHandleNV", glGetImageHandleNV, 0, 0, { GL_NV_bindless_texture, GL_EXTENSION_COUNT }},
+    { "glGetImageTransformParameterfvHP", glGetImageTransformParameterfvHP, 0, 0, { GL_HP_image_transform, GL_EXTENSION_COUNT }},
+    { "glGetImageTransformParameterivHP", glGetImageTransformParameterivHP, 0, 0, { GL_HP_image_transform, GL_EXTENSION_COUNT }},
+    { "glGetInfoLogARB", glGetInfoLogARB, 0, 0, { GL_ARB_shader_objects, GL_EXTENSION_COUNT }},
+    { "glGetInstrumentsSGIX", glGetInstrumentsSGIX, 0, 0, { GL_SGIX_instruments, GL_EXTENSION_COUNT }},
+    { "glGetInteger64i_v", glGetInteger64i_v, 3, 2, { GL_EXTENSION_COUNT }},
+    { "glGetInteger64v", glGetInteger64v, 3, 2, { GL_ARB_sync, GL_EXTENSION_COUNT }},
+    { "glGetIntegerIndexedvEXT", glGetIntegerIndexedvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXT_draw_buffers2, GL_EXTENSION_COUNT }},
+    { "glGetIntegeri_v", glGetIntegeri_v, 3, 0, { GL_ARB_uniform_buffer_object, GL_EXTENSION_COUNT }},
+    { "glGetIntegerui64i_vNV", glGetIntegerui64i_vNV, 0, 0, { GL_NV_vertex_buffer_unified_memory, GL_EXTENSION_COUNT }},
+    { "glGetIntegerui64vNV", glGetIntegerui64vNV, 0, 0, { GL_NV_shader_buffer_load, GL_EXTENSION_COUNT }},
+    { "glGetInternalformatSampleivNV", glGetInternalformatSampleivNV, 0, 0, { GL_NV_internalformat_sample_query, GL_EXTENSION_COUNT }},
+    { "glGetInternalformati64v", glGetInternalformati64v, 4, 3, { GL_ARB_internalformat_query2, GL_EXTENSION_COUNT }},
+    { "glGetInternalformativ", glGetInternalformativ, 4, 2, { GL_ARB_internalformat_query, GL_EXTENSION_COUNT }},
+    { "glGetInvariantBooleanvEXT", glGetInvariantBooleanvEXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glGetInvariantFloatvEXT", glGetInvariantFloatvEXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glGetInvariantIntegervEXT", glGetInvariantIntegervEXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glGetLightxOES", glGetLightxOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glGetLightxv", glGetLightxv, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glGetListParameterfvSGIX", glGetListParameterfvSGIX, 0, 0, { GL_SGIX_list_priority, GL_EXTENSION_COUNT }},
+    { "glGetListParameterivSGIX", glGetListParameterivSGIX, 0, 0, { GL_SGIX_list_priority, GL_EXTENSION_COUNT }},
+    { "glGetLocalConstantBooleanvEXT", glGetLocalConstantBooleanvEXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glGetLocalConstantFloatvEXT", glGetLocalConstantFloatvEXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glGetLocalConstantIntegervEXT", glGetLocalConstantIntegervEXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glGetMapAttribParameterfvNV", glGetMapAttribParameterfvNV, 0, 0, { GL_NV_evaluators, GL_EXTENSION_COUNT }},
+    { "glGetMapAttribParameterivNV", glGetMapAttribParameterivNV, 0, 0, { GL_NV_evaluators, GL_EXTENSION_COUNT }},
+    { "glGetMapControlPointsNV", glGetMapControlPointsNV, 0, 0, { GL_NV_evaluators, GL_EXTENSION_COUNT }},
+    { "glGetMapParameterfvNV", glGetMapParameterfvNV, 0, 0, { GL_NV_evaluators, GL_EXTENSION_COUNT }},
+    { "glGetMapParameterivNV", glGetMapParameterivNV, 0, 0, { GL_NV_evaluators, GL_EXTENSION_COUNT }},
+    { "glGetMapxvOES", glGetMapxvOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glGetMaterialxOES", glGetMaterialxOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glGetMaterialxv", glGetMaterialxv, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glGetMemoryObjectDetachedResourcesuivNV", glGetMemoryObjectDetachedResourcesuivNV, 0, 0, { GL_NV_memory_attachment, GL_EXTENSION_COUNT }},
+    { "glGetMemoryObjectParameterivEXT", glGetMemoryObjectParameterivEXT, 0, 0, { GL_EXT_memory_object, GL_EXTENSION_COUNT }},
+    { "glGetMinmax", glGetMinmax, 0, 0, { GL_ARB_imaging, GL_EXTENSION_COUNT }},
+    { "glGetMinmaxEXT", glGetMinmaxEXT, 0, 0, { GL_EXT_histogram, GL_EXTENSION_COUNT }},
+    { "glGetMinmaxParameterfv", glGetMinmaxParameterfv, 0, 0, { GL_ARB_imaging, GL_EXTENSION_COUNT }},
+    { "glGetMinmaxParameterfvEXT", glGetMinmaxParameterfvEXT, 0, 0, { GL_EXT_histogram, GL_EXTENSION_COUNT }},
+    { "glGetMinmaxParameteriv", glGetMinmaxParameteriv, 0, 0, { GL_ARB_imaging, GL_EXTENSION_COUNT }},
+    { "glGetMinmaxParameterivEXT", glGetMinmaxParameterivEXT, 0, 0, { GL_EXT_histogram, GL_EXTENSION_COUNT }},
+    { "glGetMultiTexEnvfvEXT", glGetMultiTexEnvfvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetMultiTexEnvivEXT", glGetMultiTexEnvivEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetMultiTexGendvEXT", glGetMultiTexGendvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetMultiTexGenfvEXT", glGetMultiTexGenfvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetMultiTexGenivEXT", glGetMultiTexGenivEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetMultiTexImageEXT", glGetMultiTexImageEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetMultiTexLevelParameterfvEXT", glGetMultiTexLevelParameterfvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetMultiTexLevelParameterivEXT", glGetMultiTexLevelParameterivEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetMultiTexParameterIivEXT", glGetMultiTexParameterIivEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetMultiTexParameterIuivEXT", glGetMultiTexParameterIuivEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetMultiTexParameterfvEXT", glGetMultiTexParameterfvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetMultiTexParameterivEXT", glGetMultiTexParameterivEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetMultisamplefv", glGetMultisamplefv, 3, 2, { GL_ARB_texture_multisample, GL_EXTENSION_COUNT }},
+    { "glGetMultisamplefvNV", glGetMultisamplefvNV, 0, 0, { GL_NV_explicit_multisample, GL_EXTENSION_COUNT }},
+    { "glGetNamedBufferParameteri64v", glGetNamedBufferParameteri64v, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetNamedBufferParameteriv", glGetNamedBufferParameteriv, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetNamedBufferParameterivEXT", glGetNamedBufferParameterivEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetNamedBufferParameterui64vNV", glGetNamedBufferParameterui64vNV, 0, 0, { GL_NV_shader_buffer_load, GL_EXTENSION_COUNT }},
+    { "glGetNamedBufferPointerv", glGetNamedBufferPointerv, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetNamedBufferPointervEXT", glGetNamedBufferPointervEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetNamedBufferSubData", glGetNamedBufferSubData, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetNamedBufferSubDataEXT", glGetNamedBufferSubDataEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetNamedFramebufferAttachmentParameteriv", glGetNamedFramebufferAttachmentParameteriv, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetNamedFramebufferAttachmentParameterivEXT", glGetNamedFramebufferAttachmentParameterivEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetNamedFramebufferParameterfvAMD", glGetNamedFramebufferParameterfvAMD, 0, 0, { GL_AMD_framebuffer_sample_positions, GL_EXTENSION_COUNT }},
+    { "glGetNamedFramebufferParameteriv", glGetNamedFramebufferParameteriv, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetNamedFramebufferParameterivEXT", glGetNamedFramebufferParameterivEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetNamedProgramLocalParameterIivEXT", glGetNamedProgramLocalParameterIivEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetNamedProgramLocalParameterIuivEXT", glGetNamedProgramLocalParameterIuivEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetNamedProgramLocalParameterdvEXT", glGetNamedProgramLocalParameterdvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetNamedProgramLocalParameterfvEXT", glGetNamedProgramLocalParameterfvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetNamedProgramStringEXT", glGetNamedProgramStringEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetNamedProgramivEXT", glGetNamedProgramivEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetNamedRenderbufferParameteriv", glGetNamedRenderbufferParameteriv, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetNamedRenderbufferParameterivEXT", glGetNamedRenderbufferParameterivEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetNamedStringARB", glGetNamedStringARB, 0, 0, { GL_ARB_shading_language_include, GL_EXTENSION_COUNT }},
+    { "glGetNamedStringivARB", glGetNamedStringivARB, 0, 0, { GL_ARB_shading_language_include, GL_EXTENSION_COUNT }},
+    { "glGetNextPerfQueryIdINTEL", glGetNextPerfQueryIdINTEL, 0, 0, { GL_INTEL_performance_query, GL_EXTENSION_COUNT }},
+    { "glGetObjectBufferfvATI", glGetObjectBufferfvATI, 0, 0, { GL_ATI_vertex_array_object, GL_EXTENSION_COUNT }},
+    { "glGetObjectBufferivATI", glGetObjectBufferivATI, 0, 0, { GL_ATI_vertex_array_object, GL_EXTENSION_COUNT }},
+    { "glGetObjectLabel", glGetObjectLabel, 4, 3, { GL_KHR_debug, GL_EXTENSION_COUNT }},
+    { "glGetObjectLabelEXT", glGetObjectLabelEXT, 0, 0, { GL_EXT_debug_label, GL_EXTENSION_COUNT }},
+    { "glGetObjectParameterfvARB", glGetObjectParameterfvARB, 0, 0, { GL_ARB_shader_objects, GL_EXTENSION_COUNT }},
+    { "glGetObjectParameterivAPPLE", glGetObjectParameterivAPPLE, 0, 0, { GL_APPLE_object_purgeable, GL_EXTENSION_COUNT }},
+    { "glGetObjectParameterivARB", glGetObjectParameterivARB, 0, 0, { GL_ARB_shader_objects, GL_EXTENSION_COUNT }},
+    { "glGetObjectPtrLabel", glGetObjectPtrLabel, 4, 3, { GL_KHR_debug, GL_EXTENSION_COUNT }},
+    { "glGetOcclusionQueryivNV", glGetOcclusionQueryivNV, 0, 0, { GL_NV_occlusion_query, GL_EXTENSION_COUNT }},
+    { "glGetOcclusionQueryuivNV", glGetOcclusionQueryuivNV, 0, 0, { GL_NV_occlusion_query, GL_EXTENSION_COUNT }},
+    { "glGetPathColorGenfvNV", glGetPathColorGenfvNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glGetPathColorGenivNV", glGetPathColorGenivNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glGetPathCommandsNV", glGetPathCommandsNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glGetPathCoordsNV", glGetPathCoordsNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glGetPathDashArrayNV", glGetPathDashArrayNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glGetPathLengthNV", glGetPathLengthNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glGetPathMetricRangeNV", glGetPathMetricRangeNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glGetPathMetricsNV", glGetPathMetricsNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glGetPathParameterfvNV", glGetPathParameterfvNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glGetPathParameterivNV", glGetPathParameterivNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glGetPathSpacingNV", glGetPathSpacingNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glGetPathTexGenfvNV", glGetPathTexGenfvNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glGetPathTexGenivNV", glGetPathTexGenivNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glGetPerfCounterInfoINTEL", glGetPerfCounterInfoINTEL, 0, 0, { GL_INTEL_performance_query, GL_EXTENSION_COUNT }},
+    { "glGetPerfMonitorCounterDataAMD", glGetPerfMonitorCounterDataAMD, 0, 0, { GL_AMD_performance_monitor, GL_EXTENSION_COUNT }},
+    { "glGetPerfMonitorCounterInfoAMD", glGetPerfMonitorCounterInfoAMD, 0, 0, { GL_AMD_performance_monitor, GL_EXTENSION_COUNT }},
+    { "glGetPerfMonitorCounterStringAMD", glGetPerfMonitorCounterStringAMD, 0, 0, { GL_AMD_performance_monitor, GL_EXTENSION_COUNT }},
+    { "glGetPerfMonitorCountersAMD", glGetPerfMonitorCountersAMD, 0, 0, { GL_AMD_performance_monitor, GL_EXTENSION_COUNT }},
+    { "glGetPerfMonitorGroupStringAMD", glGetPerfMonitorGroupStringAMD, 0, 0, { GL_AMD_performance_monitor, GL_EXTENSION_COUNT }},
+    { "glGetPerfMonitorGroupsAMD", glGetPerfMonitorGroupsAMD, 0, 0, { GL_AMD_performance_monitor, GL_EXTENSION_COUNT }},
+    { "glGetPerfQueryDataINTEL", glGetPerfQueryDataINTEL, 0, 0, { GL_INTEL_performance_query, GL_EXTENSION_COUNT }},
+    { "glGetPerfQueryIdByNameINTEL", glGetPerfQueryIdByNameINTEL, 0, 0, { GL_INTEL_performance_query, GL_EXTENSION_COUNT }},
+    { "glGetPerfQueryInfoINTEL", glGetPerfQueryInfoINTEL, 0, 0, { GL_INTEL_performance_query, GL_EXTENSION_COUNT }},
+    { "glGetPixelMapxv", glGetPixelMapxv, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glGetPixelTexGenParameterfvSGIS", glGetPixelTexGenParameterfvSGIS, 0, 0, { GL_SGIS_pixel_texture, GL_EXTENSION_COUNT }},
+    { "glGetPixelTexGenParameterivSGIS", glGetPixelTexGenParameterivSGIS, 0, 0, { GL_SGIS_pixel_texture, GL_EXTENSION_COUNT }},
+    { "glGetPixelTransformParameterfvEXT", glGetPixelTransformParameterfvEXT, 0, 0, { GL_EXT_pixel_transform, GL_EXTENSION_COUNT }},
+    { "glGetPixelTransformParameterivEXT", glGetPixelTransformParameterivEXT, 0, 0, { GL_EXT_pixel_transform, GL_EXTENSION_COUNT }},
+    { "glGetPointerIndexedvEXT", glGetPointerIndexedvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetPointeri_vEXT", glGetPointeri_vEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetPointervEXT", glGetPointervEXT, 0, 0, { GL_EXT_vertex_array, GL_EXTENSION_COUNT }},
+    { "glGetProgramBinary", glGetProgramBinary, 4, 1, { GL_ARB_get_program_binary, GL_EXTENSION_COUNT }},
+    { "glGetProgramEnvParameterIivNV", glGetProgramEnvParameterIivNV, 0, 0, { GL_NV_gpu_program4, GL_EXTENSION_COUNT }},
+    { "glGetProgramEnvParameterIuivNV", glGetProgramEnvParameterIuivNV, 0, 0, { GL_NV_gpu_program4, GL_EXTENSION_COUNT }},
+    { "glGetProgramEnvParameterdvARB", glGetProgramEnvParameterdvARB, 0, 0, { GL_ARB_fragment_program, GL_ARB_vertex_program, GL_EXTENSION_COUNT }},
+    { "glGetProgramEnvParameterfvARB", glGetProgramEnvParameterfvARB, 0, 0, { GL_ARB_fragment_program, GL_ARB_vertex_program, GL_EXTENSION_COUNT }},
+    { "glGetProgramInfoLog", glGetProgramInfoLog, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glGetProgramInterfaceiv", glGetProgramInterfaceiv, 4, 3, { GL_ARB_program_interface_query, GL_EXTENSION_COUNT }},
+    { "glGetProgramLocalParameterIivNV", glGetProgramLocalParameterIivNV, 0, 0, { GL_NV_gpu_program4, GL_EXTENSION_COUNT }},
+    { "glGetProgramLocalParameterIuivNV", glGetProgramLocalParameterIuivNV, 0, 0, { GL_NV_gpu_program4, GL_EXTENSION_COUNT }},
+    { "glGetProgramLocalParameterdvARB", glGetProgramLocalParameterdvARB, 0, 0, { GL_ARB_fragment_program, GL_ARB_vertex_program, GL_EXTENSION_COUNT }},
+    { "glGetProgramLocalParameterfvARB", glGetProgramLocalParameterfvARB, 0, 0, { GL_ARB_fragment_program, GL_ARB_vertex_program, GL_EXTENSION_COUNT }},
+    { "glGetProgramNamedParameterdvNV", glGetProgramNamedParameterdvNV, 0, 0, { GL_NV_fragment_program, GL_EXTENSION_COUNT }},
+    { "glGetProgramNamedParameterfvNV", glGetProgramNamedParameterfvNV, 0, 0, { GL_NV_fragment_program, GL_EXTENSION_COUNT }},
+    { "glGetProgramParameterdvNV", glGetProgramParameterdvNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glGetProgramParameterfvNV", glGetProgramParameterfvNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glGetProgramPipelineInfoLog", glGetProgramPipelineInfoLog, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glGetProgramPipelineiv", glGetProgramPipelineiv, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glGetProgramResourceIndex", glGetProgramResourceIndex, 4, 3, { GL_ARB_program_interface_query, GL_EXTENSION_COUNT }},
+    { "glGetProgramResourceLocation", glGetProgramResourceLocation, 4, 3, { GL_ARB_program_interface_query, GL_EXTENSION_COUNT }},
+    { "glGetProgramResourceLocationIndex", glGetProgramResourceLocationIndex, 4, 3, { GL_ARB_program_interface_query, GL_EXTENSION_COUNT }},
+    { "glGetProgramResourceName", glGetProgramResourceName, 4, 3, { GL_ARB_program_interface_query, GL_EXTENSION_COUNT }},
+    { "glGetProgramResourcefvNV", glGetProgramResourcefvNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glGetProgramResourceiv", glGetProgramResourceiv, 4, 3, { GL_ARB_program_interface_query, GL_EXTENSION_COUNT }},
+    { "glGetProgramStageiv", glGetProgramStageiv, 4, 0, { GL_ARB_shader_subroutine, GL_EXTENSION_COUNT }},
+    { "glGetProgramStringARB", glGetProgramStringARB, 0, 0, { GL_ARB_fragment_program, GL_ARB_vertex_program, GL_EXTENSION_COUNT }},
+    { "glGetProgramStringNV", glGetProgramStringNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glGetProgramSubroutineParameteruivNV", glGetProgramSubroutineParameteruivNV, 0, 0, { GL_NV_gpu_program5, GL_NV_gpu_program_fp64, GL_EXTENSION_COUNT }},
+    { "glGetProgramiv", glGetProgramiv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glGetProgramivARB", glGetProgramivARB, 0, 0, { GL_ARB_fragment_program, GL_ARB_vertex_program, GL_EXTENSION_COUNT }},
+    { "glGetProgramivNV", glGetProgramivNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glGetQueryBufferObjecti64v", glGetQueryBufferObjecti64v, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetQueryBufferObjectiv", glGetQueryBufferObjectiv, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetQueryBufferObjectui64v", glGetQueryBufferObjectui64v, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetQueryBufferObjectuiv", glGetQueryBufferObjectuiv, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetQueryIndexediv", glGetQueryIndexediv, 4, 0, { GL_ARB_transform_feedback3, GL_EXTENSION_COUNT }},
+    { "glGetQueryObjecti64v", glGetQueryObjecti64v, 3, 3, { GL_ARB_timer_query, GL_EXTENSION_COUNT }},
+    { "glGetQueryObjecti64vEXT", glGetQueryObjecti64vEXT, 0, 0, { GL_EXT_timer_query, GL_EXTENSION_COUNT }},
+    { "glGetQueryObjectiv", glGetQueryObjectiv, 1, 5, { GL_EXTENSION_COUNT }},
+    { "glGetQueryObjectivARB", glGetQueryObjectivARB, 0, 0, { GL_ARB_occlusion_query, GL_EXTENSION_COUNT }},
+    { "glGetQueryObjectui64v", glGetQueryObjectui64v, 3, 3, { GL_ARB_timer_query, GL_EXTENSION_COUNT }},
+    { "glGetQueryObjectui64vEXT", glGetQueryObjectui64vEXT, 0, 0, { GL_EXT_timer_query, GL_EXTENSION_COUNT }},
+    { "glGetQueryObjectuiv", glGetQueryObjectuiv, 1, 5, { GL_EXTENSION_COUNT }},
+    { "glGetQueryObjectuivARB", glGetQueryObjectuivARB, 0, 0, { GL_ARB_occlusion_query, GL_EXTENSION_COUNT }},
+    { "glGetQueryiv", glGetQueryiv, 1, 5, { GL_EXTENSION_COUNT }},
+    { "glGetQueryivARB", glGetQueryivARB, 0, 0, { GL_ARB_occlusion_query, GL_EXTENSION_COUNT }},
+    { "glGetRenderbufferParameteriv", glGetRenderbufferParameteriv, 3, 0, { GL_ARB_framebuffer_object, GL_EXTENSION_COUNT }},
+    { "glGetRenderbufferParameterivEXT", glGetRenderbufferParameterivEXT, 0, 0, { GL_EXT_framebuffer_object, GL_EXTENSION_COUNT }},
+    { "glGetSamplerParameterIiv", glGetSamplerParameterIiv, 3, 3, { GL_ARB_sampler_objects, GL_EXTENSION_COUNT }},
+    { "glGetSamplerParameterIuiv", glGetSamplerParameterIuiv, 3, 3, { GL_ARB_sampler_objects, GL_EXTENSION_COUNT }},
+    { "glGetSamplerParameterfv", glGetSamplerParameterfv, 3, 3, { GL_ARB_sampler_objects, GL_EXTENSION_COUNT }},
+    { "glGetSamplerParameteriv", glGetSamplerParameteriv, 3, 3, { GL_ARB_sampler_objects, GL_EXTENSION_COUNT }},
+    { "glGetSemaphoreParameterivNV", glGetSemaphoreParameterivNV, 0, 0, { GL_NV_timeline_semaphore, GL_EXTENSION_COUNT }},
+    { "glGetSemaphoreParameterui64vEXT", glGetSemaphoreParameterui64vEXT, 0, 0, { GL_EXT_semaphore, GL_EXTENSION_COUNT }},
+    { "glGetSeparableFilter", glGetSeparableFilter, 0, 0, { GL_ARB_imaging, GL_EXTENSION_COUNT }},
+    { "glGetSeparableFilterEXT", glGetSeparableFilterEXT, 0, 0, { GL_EXT_convolution, GL_EXTENSION_COUNT }},
+    { "glGetShaderInfoLog", glGetShaderInfoLog, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glGetShaderPrecisionFormat", glGetShaderPrecisionFormat, 4, 1, { GL_ARB_ES2_compatibility, GL_EXTENSION_COUNT }},
+    { "glGetShaderSource", glGetShaderSource, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glGetShaderSourceARB", glGetShaderSourceARB, 0, 0, { GL_ARB_shader_objects, GL_EXTENSION_COUNT }},
+    { "glGetShaderiv", glGetShaderiv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glGetShadingRateImagePaletteNV", glGetShadingRateImagePaletteNV, 0, 0, { GL_NV_shading_rate_image, GL_EXTENSION_COUNT }},
+    { "glGetShadingRateSampleLocationivNV", glGetShadingRateSampleLocationivNV, 0, 0, { GL_NV_shading_rate_image, GL_EXTENSION_COUNT }},
+    { "glGetSharpenTexFuncSGIS", glGetSharpenTexFuncSGIS, 0, 0, { GL_SGIS_sharpen_texture, GL_EXTENSION_COUNT }},
+    { "glGetStageIndexNV", glGetStageIndexNV, 0, 0, { GL_NV_command_list, GL_EXTENSION_COUNT }},
+    { "glGetStringi", glGetStringi, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glGetSubroutineIndex", glGetSubroutineIndex, 4, 0, { GL_ARB_shader_subroutine, GL_EXTENSION_COUNT }},
+    { "glGetSubroutineUniformLocation", glGetSubroutineUniformLocation, 4, 0, { GL_ARB_shader_subroutine, GL_EXTENSION_COUNT }},
+    { "glGetSynciv", glGetSynciv, 3, 2, { GL_ARB_sync, GL_EXTENSION_COUNT }},
+    { "glGetTexBumpParameterfvATI", glGetTexBumpParameterfvATI, 0, 0, { GL_ATI_envmap_bumpmap, GL_EXTENSION_COUNT }},
+    { "glGetTexBumpParameterivATI", glGetTexBumpParameterivATI, 0, 0, { GL_ATI_envmap_bumpmap, GL_EXTENSION_COUNT }},
+    { "glGetTexEnvxv", glGetTexEnvxv, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glGetTexEnvxvOES", glGetTexEnvxvOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glGetTexFilterFuncSGIS", glGetTexFilterFuncSGIS, 0, 0, { GL_SGIS_texture_filter4, GL_EXTENSION_COUNT }},
+    { "glGetTexGenxvOES", glGetTexGenxvOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glGetTexLevelParameterxvOES", glGetTexLevelParameterxvOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glGetTexParameterIiv", glGetTexParameterIiv, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glGetTexParameterIivEXT", glGetTexParameterIivEXT, 0, 0, { GL_EXT_texture_integer, GL_EXTENSION_COUNT }},
+    { "glGetTexParameterIuiv", glGetTexParameterIuiv, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glGetTexParameterIuivEXT", glGetTexParameterIuivEXT, 0, 0, { GL_EXT_texture_integer, GL_EXTENSION_COUNT }},
+    { "glGetTexParameterPointervAPPLE", glGetTexParameterPointervAPPLE, 0, 0, { GL_APPLE_texture_range, GL_EXTENSION_COUNT }},
+    { "glGetTexParameterxv", glGetTexParameterxv, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glGetTexParameterxvOES", glGetTexParameterxvOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glGetTextureHandleARB", glGetTextureHandleARB, 0, 0, { GL_ARB_bindless_texture, GL_EXTENSION_COUNT }},
+    { "glGetTextureHandleNV", glGetTextureHandleNV, 0, 0, { GL_NV_bindless_texture, GL_EXTENSION_COUNT }},
+    { "glGetTextureImage", glGetTextureImage, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetTextureImageEXT", glGetTextureImageEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetTextureLevelParameterfv", glGetTextureLevelParameterfv, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetTextureLevelParameterfvEXT", glGetTextureLevelParameterfvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetTextureLevelParameteriv", glGetTextureLevelParameteriv, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetTextureLevelParameterivEXT", glGetTextureLevelParameterivEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetTextureParameterIiv", glGetTextureParameterIiv, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetTextureParameterIivEXT", glGetTextureParameterIivEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetTextureParameterIuiv", glGetTextureParameterIuiv, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetTextureParameterIuivEXT", glGetTextureParameterIuivEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetTextureParameterfv", glGetTextureParameterfv, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetTextureParameterfvEXT", glGetTextureParameterfvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetTextureParameteriv", glGetTextureParameteriv, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetTextureParameterivEXT", glGetTextureParameterivEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetTextureSamplerHandleARB", glGetTextureSamplerHandleARB, 0, 0, { GL_ARB_bindless_texture, GL_EXTENSION_COUNT }},
+    { "glGetTextureSamplerHandleNV", glGetTextureSamplerHandleNV, 0, 0, { GL_NV_bindless_texture, GL_EXTENSION_COUNT }},
+    { "glGetTextureSubImage", glGetTextureSubImage, 4, 5, { GL_ARB_get_texture_sub_image, GL_EXTENSION_COUNT }},
+    { "glGetTrackMatrixivNV", glGetTrackMatrixivNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glGetTransformFeedbackVarying", glGetTransformFeedbackVarying, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glGetTransformFeedbackVaryingEXT", glGetTransformFeedbackVaryingEXT, 0, 0, { GL_EXT_transform_feedback, GL_EXTENSION_COUNT }},
+    { "glGetTransformFeedbackVaryingNV", glGetTransformFeedbackVaryingNV, 0, 0, { GL_NV_transform_feedback, GL_EXTENSION_COUNT }},
+    { "glGetTransformFeedbacki64_v", glGetTransformFeedbacki64_v, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetTransformFeedbacki_v", glGetTransformFeedbacki_v, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetTransformFeedbackiv", glGetTransformFeedbackiv, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetUniformBlockIndex", glGetUniformBlockIndex, 3, 1, { GL_ARB_uniform_buffer_object, GL_EXTENSION_COUNT }},
+    { "glGetUniformBufferSizeEXT", glGetUniformBufferSizeEXT, 0, 0, { GL_EXT_bindable_uniform, GL_EXTENSION_COUNT }},
+    { "glGetUniformIndices", glGetUniformIndices, 3, 1, { GL_ARB_uniform_buffer_object, GL_EXTENSION_COUNT }},
+    { "glGetUniformLocation", glGetUniformLocation, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glGetUniformLocationARB", glGetUniformLocationARB, 0, 0, { GL_ARB_shader_objects, GL_EXTENSION_COUNT }},
+    { "glGetUniformOffsetEXT", glGetUniformOffsetEXT, 0, 0, { GL_EXT_bindable_uniform, GL_EXTENSION_COUNT }},
+    { "glGetUniformSubroutineuiv", glGetUniformSubroutineuiv, 4, 0, { GL_ARB_shader_subroutine, GL_EXTENSION_COUNT }},
+    { "glGetUniformdv", glGetUniformdv, 4, 0, { GL_ARB_gpu_shader_fp64, GL_EXTENSION_COUNT }},
+    { "glGetUniformfv", glGetUniformfv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glGetUniformfvARB", glGetUniformfvARB, 0, 0, { GL_ARB_shader_objects, GL_EXTENSION_COUNT }},
+    { "glGetUniformi64vARB", glGetUniformi64vARB, 0, 0, { GL_ARB_gpu_shader_int64, GL_EXTENSION_COUNT }},
+    { "glGetUniformi64vNV", glGetUniformi64vNV, 0, 0, { GL_AMD_gpu_shader_int64, GL_NV_gpu_shader5, GL_EXTENSION_COUNT }},
+    { "glGetUniformiv", glGetUniformiv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glGetUniformivARB", glGetUniformivARB, 0, 0, { GL_ARB_shader_objects, GL_EXTENSION_COUNT }},
+    { "glGetUniformui64vARB", glGetUniformui64vARB, 0, 0, { GL_ARB_gpu_shader_int64, GL_EXTENSION_COUNT }},
+    { "glGetUniformui64vNV", glGetUniformui64vNV, 0, 0, { GL_AMD_gpu_shader_int64, GL_NV_shader_buffer_load, GL_EXTENSION_COUNT }},
+    { "glGetUniformuiv", glGetUniformuiv, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glGetUniformuivEXT", glGetUniformuivEXT, 0, 0, { GL_EXT_gpu_shader4, GL_EXTENSION_COUNT }},
+    { "glGetUnsignedBytei_vEXT", glGetUnsignedBytei_vEXT, 0, 0, { GL_EXT_memory_object, GL_EXT_semaphore, GL_EXTENSION_COUNT }},
+    { "glGetUnsignedBytevEXT", glGetUnsignedBytevEXT, 0, 0, { GL_EXT_memory_object, GL_EXT_semaphore, GL_EXTENSION_COUNT }},
+    { "glGetVariantArrayObjectfvATI", glGetVariantArrayObjectfvATI, 0, 0, { GL_ATI_vertex_array_object, GL_EXTENSION_COUNT }},
+    { "glGetVariantArrayObjectivATI", glGetVariantArrayObjectivATI, 0, 0, { GL_ATI_vertex_array_object, GL_EXTENSION_COUNT }},
+    { "glGetVariantBooleanvEXT", glGetVariantBooleanvEXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glGetVariantFloatvEXT", glGetVariantFloatvEXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glGetVariantIntegervEXT", glGetVariantIntegervEXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glGetVariantPointervEXT", glGetVariantPointervEXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glGetVaryingLocationNV", glGetVaryingLocationNV, 0, 0, { GL_NV_transform_feedback, GL_EXTENSION_COUNT }},
+    { "glGetVertexArrayIndexed64iv", glGetVertexArrayIndexed64iv, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetVertexArrayIndexediv", glGetVertexArrayIndexediv, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetVertexArrayIntegeri_vEXT", glGetVertexArrayIntegeri_vEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetVertexArrayIntegervEXT", glGetVertexArrayIntegervEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetVertexArrayPointeri_vEXT", glGetVertexArrayPointeri_vEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetVertexArrayPointervEXT", glGetVertexArrayPointervEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetVertexArrayiv", glGetVertexArrayiv, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glGetVertexAttribArrayObjectfvATI", glGetVertexAttribArrayObjectfvATI, 0, 0, { GL_ATI_vertex_attrib_array_object, GL_EXTENSION_COUNT }},
+    { "glGetVertexAttribArrayObjectivATI", glGetVertexAttribArrayObjectivATI, 0, 0, { GL_ATI_vertex_attrib_array_object, GL_EXTENSION_COUNT }},
+    { "glGetVertexAttribIiv", glGetVertexAttribIiv, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glGetVertexAttribIivEXT", glGetVertexAttribIivEXT, 0, 0, { GL_EXT_gpu_shader4, GL_NV_vertex_program4, GL_EXTENSION_COUNT }},
+    { "glGetVertexAttribIuiv", glGetVertexAttribIuiv, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glGetVertexAttribIuivEXT", glGetVertexAttribIuivEXT, 0, 0, { GL_EXT_gpu_shader4, GL_NV_vertex_program4, GL_EXTENSION_COUNT }},
+    { "glGetVertexAttribLdv", glGetVertexAttribLdv, 4, 1, { GL_ARB_vertex_attrib_64bit, GL_EXTENSION_COUNT }},
+    { "glGetVertexAttribLdvEXT", glGetVertexAttribLdvEXT, 0, 0, { GL_EXT_vertex_attrib_64bit, GL_EXTENSION_COUNT }},
+    { "glGetVertexAttribLi64vNV", glGetVertexAttribLi64vNV, 0, 0, { GL_NV_vertex_attrib_integer_64bit, GL_EXTENSION_COUNT }},
+    { "glGetVertexAttribLui64vARB", glGetVertexAttribLui64vARB, 0, 0, { GL_ARB_bindless_texture, GL_EXTENSION_COUNT }},
+    { "glGetVertexAttribLui64vNV", glGetVertexAttribLui64vNV, 0, 0, { GL_NV_vertex_attrib_integer_64bit, GL_EXTENSION_COUNT }},
+    { "glGetVertexAttribPointerv", glGetVertexAttribPointerv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glGetVertexAttribPointervARB", glGetVertexAttribPointervARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glGetVertexAttribPointervNV", glGetVertexAttribPointervNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glGetVertexAttribdv", glGetVertexAttribdv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glGetVertexAttribdvARB", glGetVertexAttribdvARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glGetVertexAttribdvNV", glGetVertexAttribdvNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glGetVertexAttribfv", glGetVertexAttribfv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glGetVertexAttribfvARB", glGetVertexAttribfvARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glGetVertexAttribfvNV", glGetVertexAttribfvNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glGetVertexAttribiv", glGetVertexAttribiv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glGetVertexAttribivARB", glGetVertexAttribivARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glGetVertexAttribivNV", glGetVertexAttribivNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glGetVideoCaptureStreamdvNV", glGetVideoCaptureStreamdvNV, 0, 0, { GL_NV_video_capture, GL_EXTENSION_COUNT }},
+    { "glGetVideoCaptureStreamfvNV", glGetVideoCaptureStreamfvNV, 0, 0, { GL_NV_video_capture, GL_EXTENSION_COUNT }},
+    { "glGetVideoCaptureStreamivNV", glGetVideoCaptureStreamivNV, 0, 0, { GL_NV_video_capture, GL_EXTENSION_COUNT }},
+    { "glGetVideoCaptureivNV", glGetVideoCaptureivNV, 0, 0, { GL_NV_video_capture, GL_EXTENSION_COUNT }},
+    { "glGetVideoi64vNV", glGetVideoi64vNV, 0, 0, { GL_NV_present_video, GL_EXTENSION_COUNT }},
+    { "glGetVideoivNV", glGetVideoivNV, 0, 0, { GL_NV_present_video, GL_EXTENSION_COUNT }},
+    { "glGetVideoui64vNV", glGetVideoui64vNV, 0, 0, { GL_NV_present_video, GL_EXTENSION_COUNT }},
+    { "glGetVideouivNV", glGetVideouivNV, 0, 0, { GL_NV_present_video, GL_EXTENSION_COUNT }},
+    { "glGetVkProcAddrNV", glGetVkProcAddrNV, 0, 0, { GL_NV_draw_vulkan_image, GL_EXTENSION_COUNT }},
+    { "glGetnColorTable", glGetnColorTable, 4, 5, { GL_EXTENSION_COUNT }},
+    { "glGetnColorTableARB", glGetnColorTableARB, 0, 0, { GL_ARB_robustness, GL_EXTENSION_COUNT }},
+    { "glGetnCompressedTexImage", glGetnCompressedTexImage, 4, 5, { GL_EXTENSION_COUNT }},
+    { "glGetnCompressedTexImageARB", glGetnCompressedTexImageARB, 0, 0, { GL_ARB_robustness, GL_EXTENSION_COUNT }},
+    { "glGetnConvolutionFilter", glGetnConvolutionFilter, 4, 5, { GL_EXTENSION_COUNT }},
+    { "glGetnConvolutionFilterARB", glGetnConvolutionFilterARB, 0, 0, { GL_ARB_robustness, GL_EXTENSION_COUNT }},
+    { "glGetnHistogram", glGetnHistogram, 4, 5, { GL_EXTENSION_COUNT }},
+    { "glGetnHistogramARB", glGetnHistogramARB, 0, 0, { GL_ARB_robustness, GL_EXTENSION_COUNT }},
+    { "glGetnMapdv", glGetnMapdv, 4, 5, { GL_EXTENSION_COUNT }},
+    { "glGetnMapdvARB", glGetnMapdvARB, 0, 0, { GL_ARB_robustness, GL_EXTENSION_COUNT }},
+    { "glGetnMapfv", glGetnMapfv, 4, 5, { GL_EXTENSION_COUNT }},
+    { "glGetnMapfvARB", glGetnMapfvARB, 0, 0, { GL_ARB_robustness, GL_EXTENSION_COUNT }},
+    { "glGetnMapiv", glGetnMapiv, 4, 5, { GL_EXTENSION_COUNT }},
+    { "glGetnMapivARB", glGetnMapivARB, 0, 0, { GL_ARB_robustness, GL_EXTENSION_COUNT }},
+    { "glGetnMinmax", glGetnMinmax, 4, 5, { GL_EXTENSION_COUNT }},
+    { "glGetnMinmaxARB", glGetnMinmaxARB, 0, 0, { GL_ARB_robustness, GL_EXTENSION_COUNT }},
+    { "glGetnPixelMapfv", glGetnPixelMapfv, 4, 5, { GL_EXTENSION_COUNT }},
+    { "glGetnPixelMapfvARB", glGetnPixelMapfvARB, 0, 0, { GL_ARB_robustness, GL_EXTENSION_COUNT }},
+    { "glGetnPixelMapuiv", glGetnPixelMapuiv, 4, 5, { GL_EXTENSION_COUNT }},
+    { "glGetnPixelMapuivARB", glGetnPixelMapuivARB, 0, 0, { GL_ARB_robustness, GL_EXTENSION_COUNT }},
+    { "glGetnPixelMapusv", glGetnPixelMapusv, 4, 5, { GL_EXTENSION_COUNT }},
+    { "glGetnPixelMapusvARB", glGetnPixelMapusvARB, 0, 0, { GL_ARB_robustness, GL_EXTENSION_COUNT }},
+    { "glGetnPolygonStipple", glGetnPolygonStipple, 4, 5, { GL_EXTENSION_COUNT }},
+    { "glGetnPolygonStippleARB", glGetnPolygonStippleARB, 0, 0, { GL_ARB_robustness, GL_EXTENSION_COUNT }},
+    { "glGetnSeparableFilter", glGetnSeparableFilter, 4, 5, { GL_EXTENSION_COUNT }},
+    { "glGetnSeparableFilterARB", glGetnSeparableFilterARB, 0, 0, { GL_ARB_robustness, GL_EXTENSION_COUNT }},
+    { "glGetnTexImage", glGetnTexImage, 4, 5, { GL_EXTENSION_COUNT }},
+    { "glGetnTexImageARB", glGetnTexImageARB, 0, 0, { GL_ARB_robustness, GL_EXTENSION_COUNT }},
+    { "glGetnUniformdv", glGetnUniformdv, 4, 5, { GL_EXTENSION_COUNT }},
+    { "glGetnUniformdvARB", glGetnUniformdvARB, 0, 0, { GL_ARB_robustness, GL_EXTENSION_COUNT }},
+    { "glGetnUniformfv", glGetnUniformfv, 4, 5, { GL_KHR_robustness, GL_EXTENSION_COUNT }},
+    { "glGetnUniformfvARB", glGetnUniformfvARB, 0, 0, { GL_ARB_robustness, GL_EXTENSION_COUNT }},
+    { "glGetnUniformi64vARB", glGetnUniformi64vARB, 0, 0, { GL_ARB_gpu_shader_int64, GL_EXTENSION_COUNT }},
+    { "glGetnUniformiv", glGetnUniformiv, 4, 5, { GL_KHR_robustness, GL_EXTENSION_COUNT }},
+    { "glGetnUniformivARB", glGetnUniformivARB, 0, 0, { GL_ARB_robustness, GL_EXTENSION_COUNT }},
+    { "glGetnUniformui64vARB", glGetnUniformui64vARB, 0, 0, { GL_ARB_gpu_shader_int64, GL_EXTENSION_COUNT }},
+    { "glGetnUniformuiv", glGetnUniformuiv, 4, 5, { GL_KHR_robustness, GL_EXTENSION_COUNT }},
+    { "glGetnUniformuivARB", glGetnUniformuivARB, 0, 0, { GL_ARB_robustness, GL_EXTENSION_COUNT }},
+    { "glGlobalAlphaFactorbSUN", glGlobalAlphaFactorbSUN, 0, 0, { GL_SUN_global_alpha, GL_EXTENSION_COUNT }},
+    { "glGlobalAlphaFactordSUN", glGlobalAlphaFactordSUN, 0, 0, { GL_SUN_global_alpha, GL_EXTENSION_COUNT }},
+    { "glGlobalAlphaFactorfSUN", glGlobalAlphaFactorfSUN, 0, 0, { GL_SUN_global_alpha, GL_EXTENSION_COUNT }},
+    { "glGlobalAlphaFactoriSUN", glGlobalAlphaFactoriSUN, 0, 0, { GL_SUN_global_alpha, GL_EXTENSION_COUNT }},
+    { "glGlobalAlphaFactorsSUN", glGlobalAlphaFactorsSUN, 0, 0, { GL_SUN_global_alpha, GL_EXTENSION_COUNT }},
+    { "glGlobalAlphaFactorubSUN", glGlobalAlphaFactorubSUN, 0, 0, { GL_SUN_global_alpha, GL_EXTENSION_COUNT }},
+    { "glGlobalAlphaFactoruiSUN", glGlobalAlphaFactoruiSUN, 0, 0, { GL_SUN_global_alpha, GL_EXTENSION_COUNT }},
+    { "glGlobalAlphaFactorusSUN", glGlobalAlphaFactorusSUN, 0, 0, { GL_SUN_global_alpha, GL_EXTENSION_COUNT }},
+    { "glHintPGI", glHintPGI, 0, 0, { GL_PGI_misc_hints, GL_EXTENSION_COUNT }},
+    { "glHistogram", glHistogram, 0, 0, { GL_ARB_imaging, GL_EXTENSION_COUNT }},
+    { "glHistogramEXT", glHistogramEXT, 0, 0, { GL_EXT_histogram, GL_EXTENSION_COUNT }},
+    { "glIglooInterfaceSGIX", glIglooInterfaceSGIX, 0, 0, { GL_SGIX_igloo_interface, GL_EXTENSION_COUNT }},
+    { "glImageTransformParameterfHP", glImageTransformParameterfHP, 0, 0, { GL_HP_image_transform, GL_EXTENSION_COUNT }},
+    { "glImageTransformParameterfvHP", glImageTransformParameterfvHP, 0, 0, { GL_HP_image_transform, GL_EXTENSION_COUNT }},
+    { "glImageTransformParameteriHP", glImageTransformParameteriHP, 0, 0, { GL_HP_image_transform, GL_EXTENSION_COUNT }},
+    { "glImageTransformParameterivHP", glImageTransformParameterivHP, 0, 0, { GL_HP_image_transform, GL_EXTENSION_COUNT }},
+    { "glImportMemoryWin32HandleEXT", glImportMemoryWin32HandleEXT, 0, 0, { GL_EXT_memory_object_win32, GL_EXTENSION_COUNT }},
+    { "glImportMemoryWin32NameEXT", glImportMemoryWin32NameEXT, 0, 0, { GL_EXT_memory_object_win32, GL_EXTENSION_COUNT }},
+    { "glImportSemaphoreWin32HandleEXT", glImportSemaphoreWin32HandleEXT, 0, 0, { GL_EXT_semaphore_win32, GL_EXTENSION_COUNT }},
+    { "glImportSemaphoreWin32NameEXT", glImportSemaphoreWin32NameEXT, 0, 0, { GL_EXT_semaphore_win32, GL_EXTENSION_COUNT }},
+    { "glImportSyncEXT", glImportSyncEXT, 0, 0, { GL_EXT_x11_sync_object, GL_EXTENSION_COUNT }},
+    { "glIndexFormatNV", glIndexFormatNV, 0, 0, { GL_NV_vertex_buffer_unified_memory, GL_EXTENSION_COUNT }},
+    { "glIndexFuncEXT", glIndexFuncEXT, 0, 0, { GL_EXT_index_func, GL_EXTENSION_COUNT }},
+    { "glIndexMaterialEXT", glIndexMaterialEXT, 0, 0, { GL_EXT_index_material, GL_EXTENSION_COUNT }},
+    { "glIndexPointerEXT", glIndexPointerEXT, 0, 0, { GL_EXT_vertex_array, GL_EXTENSION_COUNT }},
+    { "glIndexPointerListIBM", glIndexPointerListIBM, 0, 0, { GL_IBM_vertex_array_lists, GL_EXTENSION_COUNT }},
+    { "glIndexxOES", glIndexxOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glIndexxvOES", glIndexxvOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glInsertComponentEXT", glInsertComponentEXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glInsertEventMarkerEXT", glInsertEventMarkerEXT, 0, 0, { GL_EXT_debug_marker, GL_EXTENSION_COUNT }},
+    { "glInstrumentsBufferSGIX", glInstrumentsBufferSGIX, 0, 0, { GL_SGIX_instruments, GL_EXTENSION_COUNT }},
+    { "glInterpolatePathsNV", glInterpolatePathsNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glInvalidateBufferData", glInvalidateBufferData, 4, 3, { GL_ARB_invalidate_subdata, GL_EXTENSION_COUNT }},
+    { "glInvalidateBufferSubData", glInvalidateBufferSubData, 4, 3, { GL_ARB_invalidate_subdata, GL_EXTENSION_COUNT }},
+    { "glInvalidateFramebuffer", glInvalidateFramebuffer, 4, 3, { GL_ARB_invalidate_subdata, GL_EXTENSION_COUNT }},
+    { "glInvalidateNamedFramebufferData", glInvalidateNamedFramebufferData, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glInvalidateNamedFramebufferSubData", glInvalidateNamedFramebufferSubData, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glInvalidateSubFramebuffer", glInvalidateSubFramebuffer, 4, 3, { GL_ARB_invalidate_subdata, GL_EXTENSION_COUNT }},
+    { "glInvalidateTexImage", glInvalidateTexImage, 4, 3, { GL_ARB_invalidate_subdata, GL_EXTENSION_COUNT }},
+    { "glInvalidateTexSubImage", glInvalidateTexSubImage, 4, 3, { GL_ARB_invalidate_subdata, GL_EXTENSION_COUNT }},
+    { "glIsAsyncMarkerSGIX", glIsAsyncMarkerSGIX, 0, 0, { GL_SGIX_async, GL_EXTENSION_COUNT }},
+    { "glIsBuffer", glIsBuffer, 1, 5, { GL_EXTENSION_COUNT }},
+    { "glIsBufferARB", glIsBufferARB, 0, 0, { GL_ARB_vertex_buffer_object, GL_EXTENSION_COUNT }},
+    { "glIsBufferResidentNV", glIsBufferResidentNV, 0, 0, { GL_NV_shader_buffer_load, GL_EXTENSION_COUNT }},
+    { "glIsCommandListNV", glIsCommandListNV, 0, 0, { GL_NV_command_list, GL_EXTENSION_COUNT }},
+    { "glIsEnabledIndexedEXT", glIsEnabledIndexedEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXT_draw_buffers2, GL_EXTENSION_COUNT }},
+    { "glIsEnabledi", glIsEnabledi, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glIsFenceAPPLE", glIsFenceAPPLE, 0, 0, { GL_APPLE_fence, GL_EXTENSION_COUNT }},
+    { "glIsFenceNV", glIsFenceNV, 0, 0, { GL_NV_fence, GL_EXTENSION_COUNT }},
+    { "glIsFramebuffer", glIsFramebuffer, 3, 0, { GL_ARB_framebuffer_object, GL_EXTENSION_COUNT }},
+    { "glIsFramebufferEXT", glIsFramebufferEXT, 0, 0, { GL_EXT_framebuffer_object, GL_EXTENSION_COUNT }},
+    { "glIsImageHandleResidentARB", glIsImageHandleResidentARB, 0, 0, { GL_ARB_bindless_texture, GL_EXTENSION_COUNT }},
+    { "glIsImageHandleResidentNV", glIsImageHandleResidentNV, 0, 0, { GL_NV_bindless_texture, GL_EXTENSION_COUNT }},
+    { "glIsMemoryObjectEXT", glIsMemoryObjectEXT, 0, 0, { GL_EXT_memory_object, GL_EXTENSION_COUNT }},
+    { "glIsNameAMD", glIsNameAMD, 0, 0, { GL_AMD_name_gen_delete, GL_EXTENSION_COUNT }},
+    { "glIsNamedBufferResidentNV", glIsNamedBufferResidentNV, 0, 0, { GL_NV_shader_buffer_load, GL_EXTENSION_COUNT }},
+    { "glIsNamedStringARB", glIsNamedStringARB, 0, 0, { GL_ARB_shading_language_include, GL_EXTENSION_COUNT }},
+    { "glIsObjectBufferATI", glIsObjectBufferATI, 0, 0, { GL_ATI_vertex_array_object, GL_EXTENSION_COUNT }},
+    { "glIsOcclusionQueryNV", glIsOcclusionQueryNV, 0, 0, { GL_NV_occlusion_query, GL_EXTENSION_COUNT }},
+    { "glIsPathNV", glIsPathNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glIsPointInFillPathNV", glIsPointInFillPathNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glIsPointInStrokePathNV", glIsPointInStrokePathNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glIsProgram", glIsProgram, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glIsProgramARB", glIsProgramARB, 0, 0, { GL_ARB_fragment_program, GL_ARB_vertex_program, GL_EXTENSION_COUNT }},
+    { "glIsProgramNV", glIsProgramNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glIsProgramPipeline", glIsProgramPipeline, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glIsQuery", glIsQuery, 1, 5, { GL_EXTENSION_COUNT }},
+    { "glIsQueryARB", glIsQueryARB, 0, 0, { GL_ARB_occlusion_query, GL_EXTENSION_COUNT }},
+    { "glIsRenderbuffer", glIsRenderbuffer, 3, 0, { GL_ARB_framebuffer_object, GL_EXTENSION_COUNT }},
+    { "glIsRenderbufferEXT", glIsRenderbufferEXT, 0, 0, { GL_EXT_framebuffer_object, GL_EXTENSION_COUNT }},
+    { "glIsSampler", glIsSampler, 3, 3, { GL_ARB_sampler_objects, GL_EXTENSION_COUNT }},
+    { "glIsSemaphoreEXT", glIsSemaphoreEXT, 0, 0, { GL_EXT_semaphore, GL_EXTENSION_COUNT }},
+    { "glIsShader", glIsShader, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glIsStateNV", glIsStateNV, 0, 0, { GL_NV_command_list, GL_EXTENSION_COUNT }},
+    { "glIsSync", glIsSync, 3, 2, { GL_ARB_sync, GL_EXTENSION_COUNT }},
+    { "glIsTextureEXT", glIsTextureEXT, 0, 0, { GL_EXT_texture_object, GL_EXTENSION_COUNT }},
+    { "glIsTextureHandleResidentARB", glIsTextureHandleResidentARB, 0, 0, { GL_ARB_bindless_texture, GL_EXTENSION_COUNT }},
+    { "glIsTextureHandleResidentNV", glIsTextureHandleResidentNV, 0, 0, { GL_NV_bindless_texture, GL_EXTENSION_COUNT }},
+    { "glIsTransformFeedback", glIsTransformFeedback, 4, 0, { GL_ARB_transform_feedback2, GL_EXTENSION_COUNT }},
+    { "glIsTransformFeedbackNV", glIsTransformFeedbackNV, 0, 0, { GL_NV_transform_feedback2, GL_EXTENSION_COUNT }},
+    { "glIsVariantEnabledEXT", glIsVariantEnabledEXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glIsVertexArray", glIsVertexArray, 3, 0, { GL_ARB_vertex_array_object, GL_EXTENSION_COUNT }},
+    { "glIsVertexArrayAPPLE", glIsVertexArrayAPPLE, 0, 0, { GL_APPLE_vertex_array_object, GL_EXTENSION_COUNT }},
+    { "glIsVertexAttribEnabledAPPLE", glIsVertexAttribEnabledAPPLE, 0, 0, { GL_APPLE_vertex_program_evaluators, GL_EXTENSION_COUNT }},
+    { "glLGPUCopyImageSubDataNVX", glLGPUCopyImageSubDataNVX, 0, 0, { GL_NVX_linked_gpu_multicast, GL_EXTENSION_COUNT }},
+    { "glLGPUInterlockNVX", glLGPUInterlockNVX, 0, 0, { GL_NVX_linked_gpu_multicast, GL_EXTENSION_COUNT }},
+    { "glLGPUNamedBufferSubDataNVX", glLGPUNamedBufferSubDataNVX, 0, 0, { GL_NVX_linked_gpu_multicast, GL_EXTENSION_COUNT }},
+    { "glLabelObjectEXT", glLabelObjectEXT, 0, 0, { GL_EXT_debug_label, GL_EXTENSION_COUNT }},
+    { "glLightEnviSGIX", glLightEnviSGIX, 0, 0, { GL_SGIX_fragment_lighting, GL_EXTENSION_COUNT }},
+    { "glLightModelx", glLightModelx, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glLightModelxOES", glLightModelxOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glLightModelxv", glLightModelxv, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glLightModelxvOES", glLightModelxvOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glLightx", glLightx, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glLightxOES", glLightxOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glLightxv", glLightxv, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glLightxvOES", glLightxvOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glLineWidthx", glLineWidthx, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glLineWidthxOES", glLineWidthxOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glLinkProgram", glLinkProgram, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glLinkProgramARB", glLinkProgramARB, 0, 0, { GL_ARB_shader_objects, GL_EXTENSION_COUNT }},
+    { "glListDrawCommandsStatesClientNV", glListDrawCommandsStatesClientNV, 0, 0, { GL_NV_command_list, GL_EXTENSION_COUNT }},
+    { "glListParameterfSGIX", glListParameterfSGIX, 0, 0, { GL_SGIX_list_priority, GL_EXTENSION_COUNT }},
+    { "glListParameterfvSGIX", glListParameterfvSGIX, 0, 0, { GL_SGIX_list_priority, GL_EXTENSION_COUNT }},
+    { "glListParameteriSGIX", glListParameteriSGIX, 0, 0, { GL_SGIX_list_priority, GL_EXTENSION_COUNT }},
+    { "glListParameterivSGIX", glListParameterivSGIX, 0, 0, { GL_SGIX_list_priority, GL_EXTENSION_COUNT }},
+    { "glLoadIdentityDeformationMapSGIX", glLoadIdentityDeformationMapSGIX, 0, 0, { GL_SGIX_polynomial_ffd, GL_EXTENSION_COUNT }},
+    { "glLoadMatrixx", glLoadMatrixx, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glLoadMatrixxOES", glLoadMatrixxOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glLoadProgramNV", glLoadProgramNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glLoadTransposeMatrixd", glLoadTransposeMatrixd, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glLoadTransposeMatrixdARB", glLoadTransposeMatrixdARB, 0, 0, { GL_ARB_transpose_matrix, GL_EXTENSION_COUNT }},
+    { "glLoadTransposeMatrixf", glLoadTransposeMatrixf, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glLoadTransposeMatrixfARB", glLoadTransposeMatrixfARB, 0, 0, { GL_ARB_transpose_matrix, GL_EXTENSION_COUNT }},
+    { "glLoadTransposeMatrixxOES", glLoadTransposeMatrixxOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glLockArraysEXT", glLockArraysEXT, 0, 0, { GL_EXT_compiled_vertex_array, GL_EXTENSION_COUNT }},
+    { "glMTexCoord2fSGIS", glMTexCoord2fSGIS, 0, 0, { GL_SGIS_multitexture, GL_EXTENSION_COUNT }},
+    { "glMTexCoord2fvSGIS", glMTexCoord2fvSGIS, 0, 0, { GL_SGIS_multitexture, GL_EXTENSION_COUNT }},
+    { "glMakeBufferNonResidentNV", glMakeBufferNonResidentNV, 0, 0, { GL_NV_shader_buffer_load, GL_EXTENSION_COUNT }},
+    { "glMakeBufferResidentNV", glMakeBufferResidentNV, 0, 0, { GL_NV_shader_buffer_load, GL_EXTENSION_COUNT }},
+    { "glMakeImageHandleNonResidentARB", glMakeImageHandleNonResidentARB, 0, 0, { GL_ARB_bindless_texture, GL_EXTENSION_COUNT }},
+    { "glMakeImageHandleNonResidentNV", glMakeImageHandleNonResidentNV, 0, 0, { GL_NV_bindless_texture, GL_EXTENSION_COUNT }},
+    { "glMakeImageHandleResidentARB", glMakeImageHandleResidentARB, 0, 0, { GL_ARB_bindless_texture, GL_EXTENSION_COUNT }},
+    { "glMakeImageHandleResidentNV", glMakeImageHandleResidentNV, 0, 0, { GL_NV_bindless_texture, GL_EXTENSION_COUNT }},
+    { "glMakeNamedBufferNonResidentNV", glMakeNamedBufferNonResidentNV, 0, 0, { GL_NV_shader_buffer_load, GL_EXTENSION_COUNT }},
+    { "glMakeNamedBufferResidentNV", glMakeNamedBufferResidentNV, 0, 0, { GL_NV_shader_buffer_load, GL_EXTENSION_COUNT }},
+    { "glMakeTextureHandleNonResidentARB", glMakeTextureHandleNonResidentARB, 0, 0, { GL_ARB_bindless_texture, GL_EXTENSION_COUNT }},
+    { "glMakeTextureHandleNonResidentNV", glMakeTextureHandleNonResidentNV, 0, 0, { GL_NV_bindless_texture, GL_EXTENSION_COUNT }},
+    { "glMakeTextureHandleResidentARB", glMakeTextureHandleResidentARB, 0, 0, { GL_ARB_bindless_texture, GL_EXTENSION_COUNT }},
+    { "glMakeTextureHandleResidentNV", glMakeTextureHandleResidentNV, 0, 0, { GL_NV_bindless_texture, GL_EXTENSION_COUNT }},
+    { "glMap1xOES", glMap1xOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glMap2xOES", glMap2xOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glMapBuffer", glMapBuffer, 1, 5, { GL_EXTENSION_COUNT }},
+    { "glMapBufferARB", glMapBufferARB, 0, 0, { GL_ARB_vertex_buffer_object, GL_EXTENSION_COUNT }},
+    { "glMapBufferRange", glMapBufferRange, 3, 0, { GL_ARB_map_buffer_range, GL_EXTENSION_COUNT }},
+    { "glMapControlPointsNV", glMapControlPointsNV, 0, 0, { GL_NV_evaluators, GL_EXTENSION_COUNT }},
+    { "glMapGrid1xOES", glMapGrid1xOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glMapGrid2xOES", glMapGrid2xOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glMapNamedBuffer", glMapNamedBuffer, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glMapNamedBufferEXT", glMapNamedBufferEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glMapNamedBufferRange", glMapNamedBufferRange, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glMapNamedBufferRangeEXT", glMapNamedBufferRangeEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glMapObjectBufferATI", glMapObjectBufferATI, 0, 0, { GL_ATI_map_object_buffer, GL_EXTENSION_COUNT }},
+    { "glMapParameterfvNV", glMapParameterfvNV, 0, 0, { GL_NV_evaluators, GL_EXTENSION_COUNT }},
+    { "glMapParameterivNV", glMapParameterivNV, 0, 0, { GL_NV_evaluators, GL_EXTENSION_COUNT }},
+    { "glMapTexture2DINTEL", glMapTexture2DINTEL, 0, 0, { GL_INTEL_map_texture, GL_EXTENSION_COUNT }},
+    { "glMapVertexAttrib1dAPPLE", glMapVertexAttrib1dAPPLE, 0, 0, { GL_APPLE_vertex_program_evaluators, GL_EXTENSION_COUNT }},
+    { "glMapVertexAttrib1fAPPLE", glMapVertexAttrib1fAPPLE, 0, 0, { GL_APPLE_vertex_program_evaluators, GL_EXTENSION_COUNT }},
+    { "glMapVertexAttrib2dAPPLE", glMapVertexAttrib2dAPPLE, 0, 0, { GL_APPLE_vertex_program_evaluators, GL_EXTENSION_COUNT }},
+    { "glMapVertexAttrib2fAPPLE", glMapVertexAttrib2fAPPLE, 0, 0, { GL_APPLE_vertex_program_evaluators, GL_EXTENSION_COUNT }},
+    { "glMaterialx", glMaterialx, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glMaterialxOES", glMaterialxOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glMaterialxv", glMaterialxv, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glMaterialxvOES", glMaterialxvOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glMatrixFrustumEXT", glMatrixFrustumEXT, 0, 0, { GL_EXT_direct_state_access, GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glMatrixIndexPointerARB", glMatrixIndexPointerARB, 0, 0, { GL_ARB_matrix_palette, GL_EXTENSION_COUNT }},
+    { "glMatrixIndexubvARB", glMatrixIndexubvARB, 0, 0, { GL_ARB_matrix_palette, GL_EXTENSION_COUNT }},
+    { "glMatrixIndexuivARB", glMatrixIndexuivARB, 0, 0, { GL_ARB_matrix_palette, GL_EXTENSION_COUNT }},
+    { "glMatrixIndexusvARB", glMatrixIndexusvARB, 0, 0, { GL_ARB_matrix_palette, GL_EXTENSION_COUNT }},
+    { "glMatrixLoad3x2fNV", glMatrixLoad3x2fNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glMatrixLoad3x3fNV", glMatrixLoad3x3fNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glMatrixLoadIdentityEXT", glMatrixLoadIdentityEXT, 0, 0, { GL_EXT_direct_state_access, GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glMatrixLoadTranspose3x3fNV", glMatrixLoadTranspose3x3fNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glMatrixLoadTransposedEXT", glMatrixLoadTransposedEXT, 0, 0, { GL_EXT_direct_state_access, GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glMatrixLoadTransposefEXT", glMatrixLoadTransposefEXT, 0, 0, { GL_EXT_direct_state_access, GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glMatrixLoaddEXT", glMatrixLoaddEXT, 0, 0, { GL_EXT_direct_state_access, GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glMatrixLoadfEXT", glMatrixLoadfEXT, 0, 0, { GL_EXT_direct_state_access, GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glMatrixMult3x2fNV", glMatrixMult3x2fNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glMatrixMult3x3fNV", glMatrixMult3x3fNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glMatrixMultTranspose3x3fNV", glMatrixMultTranspose3x3fNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glMatrixMultTransposedEXT", glMatrixMultTransposedEXT, 0, 0, { GL_EXT_direct_state_access, GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glMatrixMultTransposefEXT", glMatrixMultTransposefEXT, 0, 0, { GL_EXT_direct_state_access, GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glMatrixMultdEXT", glMatrixMultdEXT, 0, 0, { GL_EXT_direct_state_access, GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glMatrixMultfEXT", glMatrixMultfEXT, 0, 0, { GL_EXT_direct_state_access, GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glMatrixOrthoEXT", glMatrixOrthoEXT, 0, 0, { GL_EXT_direct_state_access, GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glMatrixPopEXT", glMatrixPopEXT, 0, 0, { GL_EXT_direct_state_access, GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glMatrixPushEXT", glMatrixPushEXT, 0, 0, { GL_EXT_direct_state_access, GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glMatrixRotatedEXT", glMatrixRotatedEXT, 0, 0, { GL_EXT_direct_state_access, GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glMatrixRotatefEXT", glMatrixRotatefEXT, 0, 0, { GL_EXT_direct_state_access, GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glMatrixScaledEXT", glMatrixScaledEXT, 0, 0, { GL_EXT_direct_state_access, GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glMatrixScalefEXT", glMatrixScalefEXT, 0, 0, { GL_EXT_direct_state_access, GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glMatrixTranslatedEXT", glMatrixTranslatedEXT, 0, 0, { GL_EXT_direct_state_access, GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glMatrixTranslatefEXT", glMatrixTranslatefEXT, 0, 0, { GL_EXT_direct_state_access, GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glMaxShaderCompilerThreadsARB", glMaxShaderCompilerThreadsARB, 0, 0, { GL_ARB_parallel_shader_compile, GL_EXTENSION_COUNT }},
+    { "glMaxShaderCompilerThreadsKHR", glMaxShaderCompilerThreadsKHR, 0, 0, { GL_KHR_parallel_shader_compile, GL_EXTENSION_COUNT }},
+    { "glMemoryBarrier", glMemoryBarrier, 4, 2, { GL_ARB_shader_image_load_store, GL_EXTENSION_COUNT }},
+    { "glMemoryBarrierByRegion", glMemoryBarrierByRegion, 4, 5, { GL_ARB_ES3_1_compatibility, GL_NV_ES3_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glMemoryBarrierEXT", glMemoryBarrierEXT, 0, 0, { GL_EXT_shader_image_load_store, GL_EXTENSION_COUNT }},
+    { "glMemoryObjectParameterivEXT", glMemoryObjectParameterivEXT, 0, 0, { GL_EXT_memory_object, GL_EXTENSION_COUNT }},
+    { "glMinSampleShading", glMinSampleShading, 4, 0, { GL_EXTENSION_COUNT }},
+    { "glMinSampleShadingARB", glMinSampleShadingARB, 0, 0, { GL_ARB_sample_shading, GL_EXTENSION_COUNT }},
+    { "glMinmax", glMinmax, 0, 0, { GL_ARB_imaging, GL_EXTENSION_COUNT }},
+    { "glMinmaxEXT", glMinmaxEXT, 0, 0, { GL_EXT_histogram, GL_EXTENSION_COUNT }},
+    { "glMultMatrixx", glMultMatrixx, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glMultMatrixxOES", glMultMatrixxOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glMultTransposeMatrixd", glMultTransposeMatrixd, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glMultTransposeMatrixdARB", glMultTransposeMatrixdARB, 0, 0, { GL_ARB_transpose_matrix, GL_EXTENSION_COUNT }},
+    { "glMultTransposeMatrixf", glMultTransposeMatrixf, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glMultTransposeMatrixfARB", glMultTransposeMatrixfARB, 0, 0, { GL_ARB_transpose_matrix, GL_EXTENSION_COUNT }},
+    { "glMultTransposeMatrixxOES", glMultTransposeMatrixxOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glMultiDrawArrays", glMultiDrawArrays, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glMultiDrawArraysEXT", glMultiDrawArraysEXT, 0, 0, { GL_EXT_multi_draw_arrays, GL_SUN_multi_draw_arrays, GL_EXTENSION_COUNT }},
+    { "glMultiDrawArraysIndirect", glMultiDrawArraysIndirect, 4, 3, { GL_ARB_multi_draw_indirect, GL_EXTENSION_COUNT }},
+    { "glMultiDrawArraysIndirectAMD", glMultiDrawArraysIndirectAMD, 0, 0, { GL_AMD_multi_draw_indirect, GL_EXTENSION_COUNT }},
+    { "glMultiDrawArraysIndirectBindlessCountNV", glMultiDrawArraysIndirectBindlessCountNV, 0, 0, { GL_NV_bindless_multi_draw_indirect_count, GL_EXTENSION_COUNT }},
+    { "glMultiDrawArraysIndirectBindlessNV", glMultiDrawArraysIndirectBindlessNV, 0, 0, { GL_NV_bindless_multi_draw_indirect, GL_EXTENSION_COUNT }},
+    { "glMultiDrawArraysIndirectCount", glMultiDrawArraysIndirectCount, 4, 6, { GL_EXTENSION_COUNT }},
+    { "glMultiDrawArraysIndirectCountARB", glMultiDrawArraysIndirectCountARB, 0, 0, { GL_ARB_indirect_parameters, GL_EXTENSION_COUNT }},
+    { "glMultiDrawElementArrayAPPLE", glMultiDrawElementArrayAPPLE, 0, 0, { GL_APPLE_element_array, GL_EXTENSION_COUNT }},
+    { "glMultiDrawElements", glMultiDrawElements, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glMultiDrawElementsBaseVertex", glMultiDrawElementsBaseVertex, 3, 2, { GL_ARB_draw_elements_base_vertex, GL_EXTENSION_COUNT }},
+    { "glMultiDrawElementsEXT", glMultiDrawElementsEXT, 0, 0, { GL_EXT_multi_draw_arrays, GL_SUN_multi_draw_arrays, GL_EXTENSION_COUNT }},
+    { "glMultiDrawElementsIndirect", glMultiDrawElementsIndirect, 4, 3, { GL_ARB_multi_draw_indirect, GL_EXTENSION_COUNT }},
+    { "glMultiDrawElementsIndirectAMD", glMultiDrawElementsIndirectAMD, 0, 0, { GL_AMD_multi_draw_indirect, GL_EXTENSION_COUNT }},
+    { "glMultiDrawElementsIndirectBindlessCountNV", glMultiDrawElementsIndirectBindlessCountNV, 0, 0, { GL_NV_bindless_multi_draw_indirect_count, GL_EXTENSION_COUNT }},
+    { "glMultiDrawElementsIndirectBindlessNV", glMultiDrawElementsIndirectBindlessNV, 0, 0, { GL_NV_bindless_multi_draw_indirect, GL_EXTENSION_COUNT }},
+    { "glMultiDrawElementsIndirectCount", glMultiDrawElementsIndirectCount, 4, 6, { GL_EXTENSION_COUNT }},
+    { "glMultiDrawElementsIndirectCountARB", glMultiDrawElementsIndirectCountARB, 0, 0, { GL_ARB_indirect_parameters, GL_EXTENSION_COUNT }},
+    { "glMultiDrawMeshTasksIndirectCountEXT", glMultiDrawMeshTasksIndirectCountEXT, 0, 0, { GL_EXT_mesh_shader, GL_EXTENSION_COUNT }},
+    { "glMultiDrawMeshTasksIndirectCountNV", glMultiDrawMeshTasksIndirectCountNV, 0, 0, { GL_NV_mesh_shader, GL_EXTENSION_COUNT }},
+    { "glMultiDrawMeshTasksIndirectEXT", glMultiDrawMeshTasksIndirectEXT, 0, 0, { GL_EXT_mesh_shader, GL_EXTENSION_COUNT }},
+    { "glMultiDrawMeshTasksIndirectNV", glMultiDrawMeshTasksIndirectNV, 0, 0, { GL_NV_mesh_shader, GL_EXTENSION_COUNT }},
+    { "glMultiDrawRangeElementArrayAPPLE", glMultiDrawRangeElementArrayAPPLE, 0, 0, { GL_APPLE_element_array, GL_EXTENSION_COUNT }},
+    { "glMultiModeDrawArraysIBM", glMultiModeDrawArraysIBM, 0, 0, { GL_IBM_multimode_draw_arrays, GL_EXTENSION_COUNT }},
+    { "glMultiModeDrawElementsIBM", glMultiModeDrawElementsIBM, 0, 0, { GL_IBM_multimode_draw_arrays, GL_EXTENSION_COUNT }},
+    { "glMultiTexBufferEXT", glMultiTexBufferEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord1bOES", glMultiTexCoord1bOES, 0, 0, { GL_OES_byte_coordinates, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord1bvOES", glMultiTexCoord1bvOES, 0, 0, { GL_OES_byte_coordinates, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord1d", glMultiTexCoord1d, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord1dARB", glMultiTexCoord1dARB, 0, 0, { GL_ARB_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord1dSGIS", glMultiTexCoord1dSGIS, 0, 0, { GL_SGIS_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord1dv", glMultiTexCoord1dv, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord1dvARB", glMultiTexCoord1dvARB, 0, 0, { GL_ARB_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord1dvSGIS", glMultiTexCoord1dvSGIS, 0, 0, { GL_SGIS_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord1f", glMultiTexCoord1f, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord1fARB", glMultiTexCoord1fARB, 0, 0, { GL_ARB_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord1fSGIS", glMultiTexCoord1fSGIS, 0, 0, { GL_SGIS_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord1fv", glMultiTexCoord1fv, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord1fvARB", glMultiTexCoord1fvARB, 0, 0, { GL_ARB_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord1fvSGIS", glMultiTexCoord1fvSGIS, 0, 0, { GL_SGIS_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord1hNV", glMultiTexCoord1hNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord1hvNV", glMultiTexCoord1hvNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord1i", glMultiTexCoord1i, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord1iARB", glMultiTexCoord1iARB, 0, 0, { GL_ARB_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord1iSGIS", glMultiTexCoord1iSGIS, 0, 0, { GL_SGIS_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord1iv", glMultiTexCoord1iv, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord1ivARB", glMultiTexCoord1ivARB, 0, 0, { GL_ARB_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord1ivSGIS", glMultiTexCoord1ivSGIS, 0, 0, { GL_SGIS_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord1s", glMultiTexCoord1s, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord1sARB", glMultiTexCoord1sARB, 0, 0, { GL_ARB_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord1sSGIS", glMultiTexCoord1sSGIS, 0, 0, { GL_SGIS_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord1sv", glMultiTexCoord1sv, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord1svARB", glMultiTexCoord1svARB, 0, 0, { GL_ARB_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord1svSGIS", glMultiTexCoord1svSGIS, 0, 0, { GL_SGIS_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord1xOES", glMultiTexCoord1xOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord1xvOES", glMultiTexCoord1xvOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord2bOES", glMultiTexCoord2bOES, 0, 0, { GL_OES_byte_coordinates, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord2bvOES", glMultiTexCoord2bvOES, 0, 0, { GL_OES_byte_coordinates, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord2d", glMultiTexCoord2d, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord2dARB", glMultiTexCoord2dARB, 0, 0, { GL_ARB_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord2dSGIS", glMultiTexCoord2dSGIS, 0, 0, { GL_SGIS_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord2dv", glMultiTexCoord2dv, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord2dvARB", glMultiTexCoord2dvARB, 0, 0, { GL_ARB_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord2dvSGIS", glMultiTexCoord2dvSGIS, 0, 0, { GL_SGIS_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord2f", glMultiTexCoord2f, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord2fARB", glMultiTexCoord2fARB, 0, 0, { GL_ARB_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord2fSGIS", glMultiTexCoord2fSGIS, 0, 0, { GL_SGIS_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord2fv", glMultiTexCoord2fv, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord2fvARB", glMultiTexCoord2fvARB, 0, 0, { GL_ARB_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord2fvSGIS", glMultiTexCoord2fvSGIS, 0, 0, { GL_SGIS_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord2hNV", glMultiTexCoord2hNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord2hvNV", glMultiTexCoord2hvNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord2i", glMultiTexCoord2i, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord2iARB", glMultiTexCoord2iARB, 0, 0, { GL_ARB_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord2iSGIS", glMultiTexCoord2iSGIS, 0, 0, { GL_SGIS_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord2iv", glMultiTexCoord2iv, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord2ivARB", glMultiTexCoord2ivARB, 0, 0, { GL_ARB_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord2ivSGIS", glMultiTexCoord2ivSGIS, 0, 0, { GL_SGIS_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord2s", glMultiTexCoord2s, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord2sARB", glMultiTexCoord2sARB, 0, 0, { GL_ARB_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord2sSGIS", glMultiTexCoord2sSGIS, 0, 0, { GL_SGIS_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord2sv", glMultiTexCoord2sv, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord2svARB", glMultiTexCoord2svARB, 0, 0, { GL_ARB_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord2svSGIS", glMultiTexCoord2svSGIS, 0, 0, { GL_SGIS_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord2xOES", glMultiTexCoord2xOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord2xvOES", glMultiTexCoord2xvOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord3bOES", glMultiTexCoord3bOES, 0, 0, { GL_OES_byte_coordinates, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord3bvOES", glMultiTexCoord3bvOES, 0, 0, { GL_OES_byte_coordinates, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord3d", glMultiTexCoord3d, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord3dARB", glMultiTexCoord3dARB, 0, 0, { GL_ARB_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord3dSGIS", glMultiTexCoord3dSGIS, 0, 0, { GL_SGIS_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord3dv", glMultiTexCoord3dv, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord3dvARB", glMultiTexCoord3dvARB, 0, 0, { GL_ARB_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord3dvSGIS", glMultiTexCoord3dvSGIS, 0, 0, { GL_SGIS_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord3f", glMultiTexCoord3f, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord3fARB", glMultiTexCoord3fARB, 0, 0, { GL_ARB_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord3fSGIS", glMultiTexCoord3fSGIS, 0, 0, { GL_SGIS_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord3fv", glMultiTexCoord3fv, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord3fvARB", glMultiTexCoord3fvARB, 0, 0, { GL_ARB_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord3fvSGIS", glMultiTexCoord3fvSGIS, 0, 0, { GL_SGIS_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord3hNV", glMultiTexCoord3hNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord3hvNV", glMultiTexCoord3hvNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord3i", glMultiTexCoord3i, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord3iARB", glMultiTexCoord3iARB, 0, 0, { GL_ARB_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord3iSGIS", glMultiTexCoord3iSGIS, 0, 0, { GL_SGIS_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord3iv", glMultiTexCoord3iv, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord3ivARB", glMultiTexCoord3ivARB, 0, 0, { GL_ARB_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord3ivSGIS", glMultiTexCoord3ivSGIS, 0, 0, { GL_SGIS_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord3s", glMultiTexCoord3s, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord3sARB", glMultiTexCoord3sARB, 0, 0, { GL_ARB_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord3sSGIS", glMultiTexCoord3sSGIS, 0, 0, { GL_SGIS_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord3sv", glMultiTexCoord3sv, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord3svARB", glMultiTexCoord3svARB, 0, 0, { GL_ARB_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord3svSGIS", glMultiTexCoord3svSGIS, 0, 0, { GL_SGIS_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord3xOES", glMultiTexCoord3xOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord3xvOES", glMultiTexCoord3xvOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord4bOES", glMultiTexCoord4bOES, 0, 0, { GL_OES_byte_coordinates, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord4bvOES", glMultiTexCoord4bvOES, 0, 0, { GL_OES_byte_coordinates, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord4d", glMultiTexCoord4d, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord4dARB", glMultiTexCoord4dARB, 0, 0, { GL_ARB_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord4dSGIS", glMultiTexCoord4dSGIS, 0, 0, { GL_SGIS_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord4dv", glMultiTexCoord4dv, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord4dvARB", glMultiTexCoord4dvARB, 0, 0, { GL_ARB_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord4dvSGIS", glMultiTexCoord4dvSGIS, 0, 0, { GL_SGIS_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord4f", glMultiTexCoord4f, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord4fARB", glMultiTexCoord4fARB, 0, 0, { GL_ARB_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord4fSGIS", glMultiTexCoord4fSGIS, 0, 0, { GL_SGIS_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord4fv", glMultiTexCoord4fv, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord4fvARB", glMultiTexCoord4fvARB, 0, 0, { GL_ARB_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord4fvSGIS", glMultiTexCoord4fvSGIS, 0, 0, { GL_SGIS_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord4hNV", glMultiTexCoord4hNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord4hvNV", glMultiTexCoord4hvNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord4i", glMultiTexCoord4i, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord4iARB", glMultiTexCoord4iARB, 0, 0, { GL_ARB_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord4iSGIS", glMultiTexCoord4iSGIS, 0, 0, { GL_SGIS_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord4iv", glMultiTexCoord4iv, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord4ivARB", glMultiTexCoord4ivARB, 0, 0, { GL_ARB_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord4ivSGIS", glMultiTexCoord4ivSGIS, 0, 0, { GL_SGIS_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord4s", glMultiTexCoord4s, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord4sARB", glMultiTexCoord4sARB, 0, 0, { GL_ARB_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord4sSGIS", glMultiTexCoord4sSGIS, 0, 0, { GL_SGIS_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord4sv", glMultiTexCoord4sv, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord4svARB", glMultiTexCoord4svARB, 0, 0, { GL_ARB_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord4svSGIS", glMultiTexCoord4svSGIS, 0, 0, { GL_SGIS_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord4x", glMultiTexCoord4x, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord4xOES", glMultiTexCoord4xOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoord4xvOES", glMultiTexCoord4xvOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoordP1ui", glMultiTexCoordP1ui, 3, 3, { GL_ARB_vertex_type_2_10_10_10_rev, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoordP1uiv", glMultiTexCoordP1uiv, 3, 3, { GL_ARB_vertex_type_2_10_10_10_rev, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoordP2ui", glMultiTexCoordP2ui, 3, 3, { GL_ARB_vertex_type_2_10_10_10_rev, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoordP2uiv", glMultiTexCoordP2uiv, 3, 3, { GL_ARB_vertex_type_2_10_10_10_rev, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoordP3ui", glMultiTexCoordP3ui, 3, 3, { GL_ARB_vertex_type_2_10_10_10_rev, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoordP3uiv", glMultiTexCoordP3uiv, 3, 3, { GL_ARB_vertex_type_2_10_10_10_rev, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoordP4ui", glMultiTexCoordP4ui, 3, 3, { GL_ARB_vertex_type_2_10_10_10_rev, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoordP4uiv", glMultiTexCoordP4uiv, 3, 3, { GL_ARB_vertex_type_2_10_10_10_rev, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoordPointerEXT", glMultiTexCoordPointerEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glMultiTexCoordPointerSGIS", glMultiTexCoordPointerSGIS, 0, 0, { GL_SGIS_multitexture, GL_EXTENSION_COUNT }},
+    { "glMultiTexEnvfEXT", glMultiTexEnvfEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glMultiTexEnvfvEXT", glMultiTexEnvfvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glMultiTexEnviEXT", glMultiTexEnviEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glMultiTexEnvivEXT", glMultiTexEnvivEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glMultiTexGendEXT", glMultiTexGendEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glMultiTexGendvEXT", glMultiTexGendvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glMultiTexGenfEXT", glMultiTexGenfEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glMultiTexGenfvEXT", glMultiTexGenfvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glMultiTexGeniEXT", glMultiTexGeniEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glMultiTexGenivEXT", glMultiTexGenivEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glMultiTexImage1DEXT", glMultiTexImage1DEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glMultiTexImage2DEXT", glMultiTexImage2DEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glMultiTexImage3DEXT", glMultiTexImage3DEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glMultiTexParameterIivEXT", glMultiTexParameterIivEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glMultiTexParameterIuivEXT", glMultiTexParameterIuivEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glMultiTexParameterfEXT", glMultiTexParameterfEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glMultiTexParameterfvEXT", glMultiTexParameterfvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glMultiTexParameteriEXT", glMultiTexParameteriEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glMultiTexParameterivEXT", glMultiTexParameterivEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glMultiTexRenderbufferEXT", glMultiTexRenderbufferEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glMultiTexSubImage1DEXT", glMultiTexSubImage1DEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glMultiTexSubImage2DEXT", glMultiTexSubImage2DEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glMultiTexSubImage3DEXT", glMultiTexSubImage3DEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glMulticastBarrierNV", glMulticastBarrierNV, 0, 0, { GL_NV_gpu_multicast, GL_EXTENSION_COUNT }},
+    { "glMulticastBlitFramebufferNV", glMulticastBlitFramebufferNV, 0, 0, { GL_NV_gpu_multicast, GL_EXTENSION_COUNT }},
+    { "glMulticastBufferSubDataNV", glMulticastBufferSubDataNV, 0, 0, { GL_NV_gpu_multicast, GL_EXTENSION_COUNT }},
+    { "glMulticastCopyBufferSubDataNV", glMulticastCopyBufferSubDataNV, 0, 0, { GL_NV_gpu_multicast, GL_EXTENSION_COUNT }},
+    { "glMulticastCopyImageSubDataNV", glMulticastCopyImageSubDataNV, 0, 0, { GL_NV_gpu_multicast, GL_EXTENSION_COUNT }},
+    { "glMulticastFramebufferSampleLocationsfvNV", glMulticastFramebufferSampleLocationsfvNV, 0, 0, { GL_NV_gpu_multicast, GL_EXTENSION_COUNT }},
+    { "glMulticastGetQueryObjecti64vNV", glMulticastGetQueryObjecti64vNV, 0, 0, { GL_NV_gpu_multicast, GL_EXTENSION_COUNT }},
+    { "glMulticastGetQueryObjectivNV", glMulticastGetQueryObjectivNV, 0, 0, { GL_NV_gpu_multicast, GL_EXTENSION_COUNT }},
+    { "glMulticastGetQueryObjectui64vNV", glMulticastGetQueryObjectui64vNV, 0, 0, { GL_NV_gpu_multicast, GL_EXTENSION_COUNT }},
+    { "glMulticastGetQueryObjectuivNV", glMulticastGetQueryObjectuivNV, 0, 0, { GL_NV_gpu_multicast, GL_EXTENSION_COUNT }},
+    { "glMulticastScissorArrayvNVX", glMulticastScissorArrayvNVX, 0, 0, { GL_NVX_gpu_multicast2, GL_EXTENSION_COUNT }},
+    { "glMulticastViewportArrayvNVX", glMulticastViewportArrayvNVX, 0, 0, { GL_NVX_gpu_multicast2, GL_EXTENSION_COUNT }},
+    { "glMulticastViewportPositionWScaleNVX", glMulticastViewportPositionWScaleNVX, 0, 0, { GL_NVX_gpu_multicast2, GL_EXTENSION_COUNT }},
+    { "glMulticastWaitSyncNV", glMulticastWaitSyncNV, 0, 0, { GL_NV_gpu_multicast, GL_EXTENSION_COUNT }},
+    { "glNamedBufferAttachMemoryNV", glNamedBufferAttachMemoryNV, 0, 0, { GL_NV_memory_attachment, GL_EXTENSION_COUNT }},
+    { "glNamedBufferData", glNamedBufferData, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glNamedBufferDataEXT", glNamedBufferDataEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glNamedBufferPageCommitmentARB", glNamedBufferPageCommitmentARB, 0, 0, { GL_ARB_sparse_buffer, GL_EXTENSION_COUNT }},
+    { "glNamedBufferPageCommitmentEXT", glNamedBufferPageCommitmentEXT, 0, 0, { GL_ARB_sparse_buffer, GL_EXTENSION_COUNT }},
+    { "glNamedBufferPageCommitmentMemNV", glNamedBufferPageCommitmentMemNV, 0, 0, { GL_NV_memory_object_sparse, GL_EXTENSION_COUNT }},
+    { "glNamedBufferStorage", glNamedBufferStorage, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glNamedBufferStorageEXT", glNamedBufferStorageEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glNamedBufferStorageExternalEXT", glNamedBufferStorageExternalEXT, 0, 0, { GL_EXT_external_buffer, GL_EXTENSION_COUNT }},
+    { "glNamedBufferStorageMemEXT", glNamedBufferStorageMemEXT, 0, 0, { GL_EXT_memory_object, GL_EXTENSION_COUNT }},
+    { "glNamedBufferSubData", glNamedBufferSubData, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glNamedBufferSubDataEXT", glNamedBufferSubDataEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glNamedCopyBufferSubDataEXT", glNamedCopyBufferSubDataEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glNamedFramebufferDrawBuffer", glNamedFramebufferDrawBuffer, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glNamedFramebufferDrawBuffers", glNamedFramebufferDrawBuffers, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glNamedFramebufferParameteri", glNamedFramebufferParameteri, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glNamedFramebufferParameteriEXT", glNamedFramebufferParameteriEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glNamedFramebufferReadBuffer", glNamedFramebufferReadBuffer, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glNamedFramebufferRenderbuffer", glNamedFramebufferRenderbuffer, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glNamedFramebufferRenderbufferEXT", glNamedFramebufferRenderbufferEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glNamedFramebufferSampleLocationsfvARB", glNamedFramebufferSampleLocationsfvARB, 0, 0, { GL_ARB_sample_locations, GL_EXTENSION_COUNT }},
+    { "glNamedFramebufferSampleLocationsfvNV", glNamedFramebufferSampleLocationsfvNV, 0, 0, { GL_NV_sample_locations, GL_EXTENSION_COUNT }},
+    { "glNamedFramebufferSamplePositionsfvAMD", glNamedFramebufferSamplePositionsfvAMD, 0, 0, { GL_AMD_framebuffer_sample_positions, GL_EXTENSION_COUNT }},
+    { "glNamedFramebufferTexture", glNamedFramebufferTexture, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glNamedFramebufferTexture1DEXT", glNamedFramebufferTexture1DEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glNamedFramebufferTexture2DEXT", glNamedFramebufferTexture2DEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glNamedFramebufferTexture3DEXT", glNamedFramebufferTexture3DEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glNamedFramebufferTextureEXT", glNamedFramebufferTextureEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glNamedFramebufferTextureFaceEXT", glNamedFramebufferTextureFaceEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glNamedFramebufferTextureLayer", glNamedFramebufferTextureLayer, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glNamedFramebufferTextureLayerEXT", glNamedFramebufferTextureLayerEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glNamedFramebufferTextureMultiviewOVR", glNamedFramebufferTextureMultiviewOVR, 0, 0, { GL_OVR_multiview, GL_EXTENSION_COUNT }},
+    { "glNamedProgramLocalParameter4dEXT", glNamedProgramLocalParameter4dEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glNamedProgramLocalParameter4dvEXT", glNamedProgramLocalParameter4dvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glNamedProgramLocalParameter4fEXT", glNamedProgramLocalParameter4fEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glNamedProgramLocalParameter4fvEXT", glNamedProgramLocalParameter4fvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glNamedProgramLocalParameterI4iEXT", glNamedProgramLocalParameterI4iEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glNamedProgramLocalParameterI4ivEXT", glNamedProgramLocalParameterI4ivEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glNamedProgramLocalParameterI4uiEXT", glNamedProgramLocalParameterI4uiEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glNamedProgramLocalParameterI4uivEXT", glNamedProgramLocalParameterI4uivEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glNamedProgramLocalParameters4fvEXT", glNamedProgramLocalParameters4fvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glNamedProgramLocalParametersI4ivEXT", glNamedProgramLocalParametersI4ivEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glNamedProgramLocalParametersI4uivEXT", glNamedProgramLocalParametersI4uivEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glNamedProgramStringEXT", glNamedProgramStringEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glNamedRenderbufferStorage", glNamedRenderbufferStorage, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glNamedRenderbufferStorageEXT", glNamedRenderbufferStorageEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glNamedRenderbufferStorageMultisample", glNamedRenderbufferStorageMultisample, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glNamedRenderbufferStorageMultisampleAdvancedAMD", glNamedRenderbufferStorageMultisampleAdvancedAMD, 0, 0, { GL_AMD_framebuffer_multisample_advanced, GL_EXTENSION_COUNT }},
+    { "glNamedRenderbufferStorageMultisampleCoverageEXT", glNamedRenderbufferStorageMultisampleCoverageEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glNamedRenderbufferStorageMultisampleEXT", glNamedRenderbufferStorageMultisampleEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glNamedStringARB", glNamedStringARB, 0, 0, { GL_ARB_shading_language_include, GL_EXTENSION_COUNT }},
+    { "glNewBufferRegion", glNewBufferRegion, 0, 0, { GL_KTX_buffer_region, GL_EXTENSION_COUNT }},
+    { "glNewObjectBufferATI", glNewObjectBufferATI, 0, 0, { GL_ATI_vertex_array_object, GL_EXTENSION_COUNT }},
+    { "glNormal3fVertex3fSUN", glNormal3fVertex3fSUN, 0, 0, { GL_SUN_vertex, GL_EXTENSION_COUNT }},
+    { "glNormal3fVertex3fvSUN", glNormal3fVertex3fvSUN, 0, 0, { GL_SUN_vertex, GL_EXTENSION_COUNT }},
+    { "glNormal3hNV", glNormal3hNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glNormal3hvNV", glNormal3hvNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glNormal3x", glNormal3x, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glNormal3xOES", glNormal3xOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glNormal3xvOES", glNormal3xvOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glNormalFormatNV", glNormalFormatNV, 0, 0, { GL_NV_vertex_buffer_unified_memory, GL_EXTENSION_COUNT }},
+    { "glNormalP3ui", glNormalP3ui, 3, 3, { GL_ARB_vertex_type_2_10_10_10_rev, GL_EXTENSION_COUNT }},
+    { "glNormalP3uiv", glNormalP3uiv, 3, 3, { GL_ARB_vertex_type_2_10_10_10_rev, GL_EXTENSION_COUNT }},
+    { "glNormalPointerEXT", glNormalPointerEXT, 0, 0, { GL_EXT_vertex_array, GL_EXTENSION_COUNT }},
+    { "glNormalPointerListIBM", glNormalPointerListIBM, 0, 0, { GL_IBM_vertex_array_lists, GL_EXTENSION_COUNT }},
+    { "glNormalPointervINTEL", glNormalPointervINTEL, 0, 0, { GL_INTEL_parallel_arrays, GL_EXTENSION_COUNT }},
+    { "glNormalStream3bATI", glNormalStream3bATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glNormalStream3bvATI", glNormalStream3bvATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glNormalStream3dATI", glNormalStream3dATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glNormalStream3dvATI", glNormalStream3dvATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glNormalStream3fATI", glNormalStream3fATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glNormalStream3fvATI", glNormalStream3fvATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glNormalStream3iATI", glNormalStream3iATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glNormalStream3ivATI", glNormalStream3ivATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glNormalStream3sATI", glNormalStream3sATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glNormalStream3svATI", glNormalStream3svATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glObjectLabel", glObjectLabel, 4, 3, { GL_KHR_debug, GL_EXTENSION_COUNT }},
+    { "glObjectPtrLabel", glObjectPtrLabel, 4, 3, { GL_KHR_debug, GL_EXTENSION_COUNT }},
+    { "glObjectPurgeableAPPLE", glObjectPurgeableAPPLE, 0, 0, { GL_APPLE_object_purgeable, GL_EXTENSION_COUNT }},
+    { "glObjectUnpurgeableAPPLE", glObjectUnpurgeableAPPLE, 0, 0, { GL_APPLE_object_purgeable, GL_EXTENSION_COUNT }},
+    { "glOrthof", glOrthof, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glOrthofOES", glOrthofOES, 0, 0, { GL_OES_single_precision, GL_EXTENSION_COUNT }},
+    { "glOrthox", glOrthox, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glOrthoxOES", glOrthoxOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glPNTrianglesfATI", glPNTrianglesfATI, 0, 0, { GL_ATI_pn_triangles, GL_EXTENSION_COUNT }},
+    { "glPNTrianglesiATI", glPNTrianglesiATI, 0, 0, { GL_ATI_pn_triangles, GL_EXTENSION_COUNT }},
+    { "glPassTexCoordATI", glPassTexCoordATI, 0, 0, { GL_ATI_fragment_shader, GL_EXTENSION_COUNT }},
+    { "glPassThroughxOES", glPassThroughxOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glPatchParameterfv", glPatchParameterfv, 4, 0, { GL_ARB_tessellation_shader, GL_EXTENSION_COUNT }},
+    { "glPatchParameteri", glPatchParameteri, 4, 0, { GL_ARB_tessellation_shader, GL_EXTENSION_COUNT }},
+    { "glPathColorGenNV", glPathColorGenNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glPathCommandsNV", glPathCommandsNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glPathCoordsNV", glPathCoordsNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glPathCoverDepthFuncNV", glPathCoverDepthFuncNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glPathDashArrayNV", glPathDashArrayNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glPathFogGenNV", glPathFogGenNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glPathGlyphIndexArrayNV", glPathGlyphIndexArrayNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glPathGlyphIndexRangeNV", glPathGlyphIndexRangeNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glPathGlyphRangeNV", glPathGlyphRangeNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glPathGlyphsNV", glPathGlyphsNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glPathMemoryGlyphIndexArrayNV", glPathMemoryGlyphIndexArrayNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glPathParameterfNV", glPathParameterfNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glPathParameterfvNV", glPathParameterfvNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glPathParameteriNV", glPathParameteriNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glPathParameterivNV", glPathParameterivNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glPathStencilDepthOffsetNV", glPathStencilDepthOffsetNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glPathStencilFuncNV", glPathStencilFuncNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glPathStringNV", glPathStringNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glPathSubCommandsNV", glPathSubCommandsNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glPathSubCoordsNV", glPathSubCoordsNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glPathTexGenNV", glPathTexGenNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glPauseTransformFeedback", glPauseTransformFeedback, 4, 0, { GL_ARB_transform_feedback2, GL_EXTENSION_COUNT }},
+    { "glPauseTransformFeedbackNV", glPauseTransformFeedbackNV, 0, 0, { GL_NV_transform_feedback2, GL_EXTENSION_COUNT }},
+    { "glPixelDataRangeNV", glPixelDataRangeNV, 0, 0, { GL_NV_pixel_data_range, GL_EXTENSION_COUNT }},
+    { "glPixelMapx", glPixelMapx, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glPixelStorex", glPixelStorex, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glPixelTexGenParameterfSGIS", glPixelTexGenParameterfSGIS, 0, 0, { GL_SGIS_pixel_texture, GL_EXTENSION_COUNT }},
+    { "glPixelTexGenParameterfvSGIS", glPixelTexGenParameterfvSGIS, 0, 0, { GL_SGIS_pixel_texture, GL_EXTENSION_COUNT }},
+    { "glPixelTexGenParameteriSGIS", glPixelTexGenParameteriSGIS, 0, 0, { GL_SGIS_pixel_texture, GL_EXTENSION_COUNT }},
+    { "glPixelTexGenParameterivSGIS", glPixelTexGenParameterivSGIS, 0, 0, { GL_SGIS_pixel_texture, GL_EXTENSION_COUNT }},
+    { "glPixelTexGenSGIX", glPixelTexGenSGIX, 0, 0, { GL_SGIX_pixel_texture, GL_EXTENSION_COUNT }},
+    { "glPixelTransferxOES", glPixelTransferxOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glPixelTransformParameterfEXT", glPixelTransformParameterfEXT, 0, 0, { GL_EXT_pixel_transform, GL_EXTENSION_COUNT }},
+    { "glPixelTransformParameterfvEXT", glPixelTransformParameterfvEXT, 0, 0, { GL_EXT_pixel_transform, GL_EXTENSION_COUNT }},
+    { "glPixelTransformParameteriEXT", glPixelTransformParameteriEXT, 0, 0, { GL_EXT_pixel_transform, GL_EXTENSION_COUNT }},
+    { "glPixelTransformParameterivEXT", glPixelTransformParameterivEXT, 0, 0, { GL_EXT_pixel_transform, GL_EXTENSION_COUNT }},
+    { "glPixelZoomxOES", glPixelZoomxOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glPointAlongPathNV", glPointAlongPathNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glPointParameterf", glPointParameterf, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glPointParameterfARB", glPointParameterfARB, 0, 0, { GL_ARB_point_parameters, GL_EXTENSION_COUNT }},
+    { "glPointParameterfEXT", glPointParameterfEXT, 0, 0, { GL_EXT_point_parameters, GL_EXTENSION_COUNT }},
+    { "glPointParameterfSGIS", glPointParameterfSGIS, 0, 0, { GL_SGIS_point_parameters, GL_EXTENSION_COUNT }},
+    { "glPointParameterfv", glPointParameterfv, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glPointParameterfvARB", glPointParameterfvARB, 0, 0, { GL_ARB_point_parameters, GL_EXTENSION_COUNT }},
+    { "glPointParameterfvEXT", glPointParameterfvEXT, 0, 0, { GL_EXT_point_parameters, GL_EXTENSION_COUNT }},
+    { "glPointParameterfvSGIS", glPointParameterfvSGIS, 0, 0, { GL_SGIS_point_parameters, GL_EXTENSION_COUNT }},
+    { "glPointParameteri", glPointParameteri, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glPointParameteriNV", glPointParameteriNV, 0, 0, { GL_NV_point_sprite, GL_EXTENSION_COUNT }},
+    { "glPointParameteriv", glPointParameteriv, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glPointParameterivNV", glPointParameterivNV, 0, 0, { GL_NV_point_sprite, GL_EXTENSION_COUNT }},
+    { "glPointParameterx", glPointParameterx, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glPointParameterxv", glPointParameterxv, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glPointParameterxvOES", glPointParameterxvOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glPointSizex", glPointSizex, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glPointSizexOES", glPointSizexOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glPollAsyncSGIX", glPollAsyncSGIX, 0, 0, { GL_SGIX_async, GL_EXTENSION_COUNT }},
+    { "glPollInstrumentsSGIX", glPollInstrumentsSGIX, 0, 0, { GL_SGIX_instruments, GL_EXTENSION_COUNT }},
+    { "glPolygonOffsetClamp", glPolygonOffsetClamp, 4, 6, { GL_ARB_polygon_offset_clamp, GL_EXTENSION_COUNT }},
+    { "glPolygonOffsetClampEXT", glPolygonOffsetClampEXT, 0, 0, { GL_EXT_polygon_offset_clamp, GL_EXTENSION_COUNT }},
+    { "glPolygonOffsetEXT", glPolygonOffsetEXT, 0, 0, { GL_EXT_polygon_offset, GL_EXTENSION_COUNT }},
+    { "glPolygonOffsetx", glPolygonOffsetx, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glPolygonOffsetxOES", glPolygonOffsetxOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glPopDebugGroup", glPopDebugGroup, 4, 3, { GL_KHR_debug, GL_EXTENSION_COUNT }},
+    { "glPopGroupMarkerEXT", glPopGroupMarkerEXT, 0, 0, { GL_EXT_debug_marker, GL_EXTENSION_COUNT }},
+    { "glPresentFrameDualFillNV", glPresentFrameDualFillNV, 0, 0, { GL_NV_present_video, GL_EXTENSION_COUNT }},
+    { "glPresentFrameKeyedNV", glPresentFrameKeyedNV, 0, 0, { GL_NV_present_video, GL_EXTENSION_COUNT }},
+    { "glPrimitiveBoundingBox", glPrimitiveBoundingBox, 0, 0, { GL_ARB_ES3_2_compatibility, GL_EXTENSION_COUNT }},
+    { "glPrimitiveBoundingBoxARB", glPrimitiveBoundingBoxARB, 0, 0, { GL_ARB_ES3_2_compatibility, GL_EXTENSION_COUNT }},
+    { "glPrimitiveRestartIndex", glPrimitiveRestartIndex, 3, 1, { GL_EXTENSION_COUNT }},
+    { "glPrimitiveRestartIndexNV", glPrimitiveRestartIndexNV, 0, 0, { GL_NV_primitive_restart, GL_EXTENSION_COUNT }},
+    { "glPrimitiveRestartNV", glPrimitiveRestartNV, 0, 0, { GL_NV_primitive_restart, GL_EXTENSION_COUNT }},
+    { "glPrioritizeTexturesEXT", glPrioritizeTexturesEXT, 0, 0, { GL_EXT_texture_object, GL_EXTENSION_COUNT }},
+    { "glPrioritizeTexturesxOES", glPrioritizeTexturesxOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glProgramBinary", glProgramBinary, 4, 1, { GL_ARB_get_program_binary, GL_EXTENSION_COUNT }},
+    { "glProgramBufferParametersIivNV", glProgramBufferParametersIivNV, 0, 0, { GL_NV_parameter_buffer_object, GL_EXTENSION_COUNT }},
+    { "glProgramBufferParametersIuivNV", glProgramBufferParametersIuivNV, 0, 0, { GL_NV_parameter_buffer_object, GL_EXTENSION_COUNT }},
+    { "glProgramBufferParametersfvNV", glProgramBufferParametersfvNV, 0, 0, { GL_NV_parameter_buffer_object, GL_EXTENSION_COUNT }},
+    { "glProgramEnvParameter4dARB", glProgramEnvParameter4dARB, 0, 0, { GL_ARB_fragment_program, GL_ARB_vertex_program, GL_EXTENSION_COUNT }},
+    { "glProgramEnvParameter4dvARB", glProgramEnvParameter4dvARB, 0, 0, { GL_ARB_fragment_program, GL_ARB_vertex_program, GL_EXTENSION_COUNT }},
+    { "glProgramEnvParameter4fARB", glProgramEnvParameter4fARB, 0, 0, { GL_ARB_fragment_program, GL_ARB_vertex_program, GL_EXTENSION_COUNT }},
+    { "glProgramEnvParameter4fvARB", glProgramEnvParameter4fvARB, 0, 0, { GL_ARB_fragment_program, GL_ARB_vertex_program, GL_EXTENSION_COUNT }},
+    { "glProgramEnvParameterI4iNV", glProgramEnvParameterI4iNV, 0, 0, { GL_NV_gpu_program4, GL_EXTENSION_COUNT }},
+    { "glProgramEnvParameterI4ivNV", glProgramEnvParameterI4ivNV, 0, 0, { GL_NV_gpu_program4, GL_EXTENSION_COUNT }},
+    { "glProgramEnvParameterI4uiNV", glProgramEnvParameterI4uiNV, 0, 0, { GL_NV_gpu_program4, GL_EXTENSION_COUNT }},
+    { "glProgramEnvParameterI4uivNV", glProgramEnvParameterI4uivNV, 0, 0, { GL_NV_gpu_program4, GL_EXTENSION_COUNT }},
+    { "glProgramEnvParameters4fvEXT", glProgramEnvParameters4fvEXT, 0, 0, { GL_EXT_gpu_program_parameters, GL_EXTENSION_COUNT }},
+    { "glProgramEnvParametersI4ivNV", glProgramEnvParametersI4ivNV, 0, 0, { GL_NV_gpu_program4, GL_EXTENSION_COUNT }},
+    { "glProgramEnvParametersI4uivNV", glProgramEnvParametersI4uivNV, 0, 0, { GL_NV_gpu_program4, GL_EXTENSION_COUNT }},
+    { "glProgramLocalParameter4dARB", glProgramLocalParameter4dARB, 0, 0, { GL_ARB_fragment_program, GL_ARB_vertex_program, GL_EXTENSION_COUNT }},
+    { "glProgramLocalParameter4dvARB", glProgramLocalParameter4dvARB, 0, 0, { GL_ARB_fragment_program, GL_ARB_vertex_program, GL_EXTENSION_COUNT }},
+    { "glProgramLocalParameter4fARB", glProgramLocalParameter4fARB, 0, 0, { GL_ARB_fragment_program, GL_ARB_vertex_program, GL_EXTENSION_COUNT }},
+    { "glProgramLocalParameter4fvARB", glProgramLocalParameter4fvARB, 0, 0, { GL_ARB_fragment_program, GL_ARB_vertex_program, GL_EXTENSION_COUNT }},
+    { "glProgramLocalParameterI4iNV", glProgramLocalParameterI4iNV, 0, 0, { GL_NV_gpu_program4, GL_EXTENSION_COUNT }},
+    { "glProgramLocalParameterI4ivNV", glProgramLocalParameterI4ivNV, 0, 0, { GL_NV_gpu_program4, GL_EXTENSION_COUNT }},
+    { "glProgramLocalParameterI4uiNV", glProgramLocalParameterI4uiNV, 0, 0, { GL_NV_gpu_program4, GL_EXTENSION_COUNT }},
+    { "glProgramLocalParameterI4uivNV", glProgramLocalParameterI4uivNV, 0, 0, { GL_NV_gpu_program4, GL_EXTENSION_COUNT }},
+    { "glProgramLocalParameters4fvEXT", glProgramLocalParameters4fvEXT, 0, 0, { GL_EXT_gpu_program_parameters, GL_EXTENSION_COUNT }},
+    { "glProgramLocalParametersI4ivNV", glProgramLocalParametersI4ivNV, 0, 0, { GL_NV_gpu_program4, GL_EXTENSION_COUNT }},
+    { "glProgramLocalParametersI4uivNV", glProgramLocalParametersI4uivNV, 0, 0, { GL_NV_gpu_program4, GL_EXTENSION_COUNT }},
+    { "glProgramNamedParameter4dNV", glProgramNamedParameter4dNV, 0, 0, { GL_NV_fragment_program, GL_EXTENSION_COUNT }},
+    { "glProgramNamedParameter4dvNV", glProgramNamedParameter4dvNV, 0, 0, { GL_NV_fragment_program, GL_EXTENSION_COUNT }},
+    { "glProgramNamedParameter4fNV", glProgramNamedParameter4fNV, 0, 0, { GL_NV_fragment_program, GL_EXTENSION_COUNT }},
+    { "glProgramNamedParameter4fvNV", glProgramNamedParameter4fvNV, 0, 0, { GL_NV_fragment_program, GL_EXTENSION_COUNT }},
+    { "glProgramParameter4dNV", glProgramParameter4dNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glProgramParameter4dvNV", glProgramParameter4dvNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glProgramParameter4fNV", glProgramParameter4fNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glProgramParameter4fvNV", glProgramParameter4fvNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glProgramParameteri", glProgramParameteri, 4, 1, { GL_ARB_get_program_binary, GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramParameteriARB", glProgramParameteriARB, 0, 0, { GL_ARB_geometry_shader4, GL_EXTENSION_COUNT }},
+    { "glProgramParameteriEXT", glProgramParameteriEXT, 0, 0, { GL_EXT_geometry_shader4, GL_EXTENSION_COUNT }},
+    { "glProgramParameters4dvNV", glProgramParameters4dvNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glProgramParameters4fvNV", glProgramParameters4fvNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glProgramPathFragmentInputGenNV", glProgramPathFragmentInputGenNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glProgramStringARB", glProgramStringARB, 0, 0, { GL_ARB_fragment_program, GL_ARB_vertex_program, GL_EXTENSION_COUNT }},
+    { "glProgramSubroutineParametersuivNV", glProgramSubroutineParametersuivNV, 0, 0, { GL_NV_gpu_program5, GL_NV_gpu_program_fp64, GL_EXTENSION_COUNT }},
+    { "glProgramUniform1d", glProgramUniform1d, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniform1dEXT", glProgramUniform1dEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniform1dv", glProgramUniform1dv, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniform1dvEXT", glProgramUniform1dvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniform1f", glProgramUniform1f, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniform1fEXT", glProgramUniform1fEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniform1fv", glProgramUniform1fv, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniform1fvEXT", glProgramUniform1fvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniform1i", glProgramUniform1i, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniform1i64ARB", glProgramUniform1i64ARB, 0, 0, { GL_ARB_gpu_shader_int64, GL_EXTENSION_COUNT }},
+    { "glProgramUniform1i64NV", glProgramUniform1i64NV, 0, 0, { GL_AMD_gpu_shader_int64, GL_NV_gpu_shader5, GL_EXTENSION_COUNT }},
+    { "glProgramUniform1i64vARB", glProgramUniform1i64vARB, 0, 0, { GL_ARB_gpu_shader_int64, GL_EXTENSION_COUNT }},
+    { "glProgramUniform1i64vNV", glProgramUniform1i64vNV, 0, 0, { GL_AMD_gpu_shader_int64, GL_NV_gpu_shader5, GL_EXTENSION_COUNT }},
+    { "glProgramUniform1iEXT", glProgramUniform1iEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniform1iv", glProgramUniform1iv, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniform1ivEXT", glProgramUniform1ivEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniform1ui", glProgramUniform1ui, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniform1ui64ARB", glProgramUniform1ui64ARB, 0, 0, { GL_ARB_gpu_shader_int64, GL_EXTENSION_COUNT }},
+    { "glProgramUniform1ui64NV", glProgramUniform1ui64NV, 0, 0, { GL_AMD_gpu_shader_int64, GL_NV_gpu_shader5, GL_EXTENSION_COUNT }},
+    { "glProgramUniform1ui64vARB", glProgramUniform1ui64vARB, 0, 0, { GL_ARB_gpu_shader_int64, GL_EXTENSION_COUNT }},
+    { "glProgramUniform1ui64vNV", glProgramUniform1ui64vNV, 0, 0, { GL_AMD_gpu_shader_int64, GL_NV_gpu_shader5, GL_EXTENSION_COUNT }},
+    { "glProgramUniform1uiEXT", glProgramUniform1uiEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniform1uiv", glProgramUniform1uiv, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniform1uivEXT", glProgramUniform1uivEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniform2d", glProgramUniform2d, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniform2dEXT", glProgramUniform2dEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniform2dv", glProgramUniform2dv, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniform2dvEXT", glProgramUniform2dvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniform2f", glProgramUniform2f, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniform2fEXT", glProgramUniform2fEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniform2fv", glProgramUniform2fv, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniform2fvEXT", glProgramUniform2fvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniform2i", glProgramUniform2i, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniform2i64ARB", glProgramUniform2i64ARB, 0, 0, { GL_ARB_gpu_shader_int64, GL_EXTENSION_COUNT }},
+    { "glProgramUniform2i64NV", glProgramUniform2i64NV, 0, 0, { GL_AMD_gpu_shader_int64, GL_NV_gpu_shader5, GL_EXTENSION_COUNT }},
+    { "glProgramUniform2i64vARB", glProgramUniform2i64vARB, 0, 0, { GL_ARB_gpu_shader_int64, GL_EXTENSION_COUNT }},
+    { "glProgramUniform2i64vNV", glProgramUniform2i64vNV, 0, 0, { GL_AMD_gpu_shader_int64, GL_NV_gpu_shader5, GL_EXTENSION_COUNT }},
+    { "glProgramUniform2iEXT", glProgramUniform2iEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniform2iv", glProgramUniform2iv, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniform2ivEXT", glProgramUniform2ivEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniform2ui", glProgramUniform2ui, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniform2ui64ARB", glProgramUniform2ui64ARB, 0, 0, { GL_ARB_gpu_shader_int64, GL_EXTENSION_COUNT }},
+    { "glProgramUniform2ui64NV", glProgramUniform2ui64NV, 0, 0, { GL_AMD_gpu_shader_int64, GL_NV_gpu_shader5, GL_EXTENSION_COUNT }},
+    { "glProgramUniform2ui64vARB", glProgramUniform2ui64vARB, 0, 0, { GL_ARB_gpu_shader_int64, GL_EXTENSION_COUNT }},
+    { "glProgramUniform2ui64vNV", glProgramUniform2ui64vNV, 0, 0, { GL_AMD_gpu_shader_int64, GL_NV_gpu_shader5, GL_EXTENSION_COUNT }},
+    { "glProgramUniform2uiEXT", glProgramUniform2uiEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniform2uiv", glProgramUniform2uiv, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniform2uivEXT", glProgramUniform2uivEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniform3d", glProgramUniform3d, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniform3dEXT", glProgramUniform3dEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniform3dv", glProgramUniform3dv, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniform3dvEXT", glProgramUniform3dvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniform3f", glProgramUniform3f, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniform3fEXT", glProgramUniform3fEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniform3fv", glProgramUniform3fv, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniform3fvEXT", glProgramUniform3fvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniform3i", glProgramUniform3i, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniform3i64ARB", glProgramUniform3i64ARB, 0, 0, { GL_ARB_gpu_shader_int64, GL_EXTENSION_COUNT }},
+    { "glProgramUniform3i64NV", glProgramUniform3i64NV, 0, 0, { GL_AMD_gpu_shader_int64, GL_NV_gpu_shader5, GL_EXTENSION_COUNT }},
+    { "glProgramUniform3i64vARB", glProgramUniform3i64vARB, 0, 0, { GL_ARB_gpu_shader_int64, GL_EXTENSION_COUNT }},
+    { "glProgramUniform3i64vNV", glProgramUniform3i64vNV, 0, 0, { GL_AMD_gpu_shader_int64, GL_NV_gpu_shader5, GL_EXTENSION_COUNT }},
+    { "glProgramUniform3iEXT", glProgramUniform3iEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniform3iv", glProgramUniform3iv, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniform3ivEXT", glProgramUniform3ivEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniform3ui", glProgramUniform3ui, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniform3ui64ARB", glProgramUniform3ui64ARB, 0, 0, { GL_ARB_gpu_shader_int64, GL_EXTENSION_COUNT }},
+    { "glProgramUniform3ui64NV", glProgramUniform3ui64NV, 0, 0, { GL_AMD_gpu_shader_int64, GL_NV_gpu_shader5, GL_EXTENSION_COUNT }},
+    { "glProgramUniform3ui64vARB", glProgramUniform3ui64vARB, 0, 0, { GL_ARB_gpu_shader_int64, GL_EXTENSION_COUNT }},
+    { "glProgramUniform3ui64vNV", glProgramUniform3ui64vNV, 0, 0, { GL_AMD_gpu_shader_int64, GL_NV_gpu_shader5, GL_EXTENSION_COUNT }},
+    { "glProgramUniform3uiEXT", glProgramUniform3uiEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniform3uiv", glProgramUniform3uiv, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniform3uivEXT", glProgramUniform3uivEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniform4d", glProgramUniform4d, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniform4dEXT", glProgramUniform4dEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniform4dv", glProgramUniform4dv, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniform4dvEXT", glProgramUniform4dvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniform4f", glProgramUniform4f, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniform4fEXT", glProgramUniform4fEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniform4fv", glProgramUniform4fv, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniform4fvEXT", glProgramUniform4fvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniform4i", glProgramUniform4i, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniform4i64ARB", glProgramUniform4i64ARB, 0, 0, { GL_ARB_gpu_shader_int64, GL_EXTENSION_COUNT }},
+    { "glProgramUniform4i64NV", glProgramUniform4i64NV, 0, 0, { GL_AMD_gpu_shader_int64, GL_NV_gpu_shader5, GL_EXTENSION_COUNT }},
+    { "glProgramUniform4i64vARB", glProgramUniform4i64vARB, 0, 0, { GL_ARB_gpu_shader_int64, GL_EXTENSION_COUNT }},
+    { "glProgramUniform4i64vNV", glProgramUniform4i64vNV, 0, 0, { GL_AMD_gpu_shader_int64, GL_NV_gpu_shader5, GL_EXTENSION_COUNT }},
+    { "glProgramUniform4iEXT", glProgramUniform4iEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniform4iv", glProgramUniform4iv, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniform4ivEXT", glProgramUniform4ivEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniform4ui", glProgramUniform4ui, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniform4ui64ARB", glProgramUniform4ui64ARB, 0, 0, { GL_ARB_gpu_shader_int64, GL_EXTENSION_COUNT }},
+    { "glProgramUniform4ui64NV", glProgramUniform4ui64NV, 0, 0, { GL_AMD_gpu_shader_int64, GL_NV_gpu_shader5, GL_EXTENSION_COUNT }},
+    { "glProgramUniform4ui64vARB", glProgramUniform4ui64vARB, 0, 0, { GL_ARB_gpu_shader_int64, GL_EXTENSION_COUNT }},
+    { "glProgramUniform4ui64vNV", glProgramUniform4ui64vNV, 0, 0, { GL_AMD_gpu_shader_int64, GL_NV_gpu_shader5, GL_EXTENSION_COUNT }},
+    { "glProgramUniform4uiEXT", glProgramUniform4uiEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniform4uiv", glProgramUniform4uiv, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniform4uivEXT", glProgramUniform4uivEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniformHandleui64ARB", glProgramUniformHandleui64ARB, 0, 0, { GL_ARB_bindless_texture, GL_EXTENSION_COUNT }},
+    { "glProgramUniformHandleui64NV", glProgramUniformHandleui64NV, 0, 0, { GL_NV_bindless_texture, GL_EXTENSION_COUNT }},
+    { "glProgramUniformHandleui64vARB", glProgramUniformHandleui64vARB, 0, 0, { GL_ARB_bindless_texture, GL_EXTENSION_COUNT }},
+    { "glProgramUniformHandleui64vNV", glProgramUniformHandleui64vNV, 0, 0, { GL_NV_bindless_texture, GL_EXTENSION_COUNT }},
+    { "glProgramUniformMatrix2dv", glProgramUniformMatrix2dv, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniformMatrix2dvEXT", glProgramUniformMatrix2dvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniformMatrix2fv", glProgramUniformMatrix2fv, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniformMatrix2fvEXT", glProgramUniformMatrix2fvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniformMatrix2x3dv", glProgramUniformMatrix2x3dv, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniformMatrix2x3dvEXT", glProgramUniformMatrix2x3dvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniformMatrix2x3fv", glProgramUniformMatrix2x3fv, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniformMatrix2x3fvEXT", glProgramUniformMatrix2x3fvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniformMatrix2x4dv", glProgramUniformMatrix2x4dv, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniformMatrix2x4dvEXT", glProgramUniformMatrix2x4dvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniformMatrix2x4fv", glProgramUniformMatrix2x4fv, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniformMatrix2x4fvEXT", glProgramUniformMatrix2x4fvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniformMatrix3dv", glProgramUniformMatrix3dv, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniformMatrix3dvEXT", glProgramUniformMatrix3dvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniformMatrix3fv", glProgramUniformMatrix3fv, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniformMatrix3fvEXT", glProgramUniformMatrix3fvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniformMatrix3x2dv", glProgramUniformMatrix3x2dv, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniformMatrix3x2dvEXT", glProgramUniformMatrix3x2dvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniformMatrix3x2fv", glProgramUniformMatrix3x2fv, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniformMatrix3x2fvEXT", glProgramUniformMatrix3x2fvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniformMatrix3x4dv", glProgramUniformMatrix3x4dv, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniformMatrix3x4dvEXT", glProgramUniformMatrix3x4dvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniformMatrix3x4fv", glProgramUniformMatrix3x4fv, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniformMatrix3x4fvEXT", glProgramUniformMatrix3x4fvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniformMatrix4dv", glProgramUniformMatrix4dv, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniformMatrix4dvEXT", glProgramUniformMatrix4dvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniformMatrix4fv", glProgramUniformMatrix4fv, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniformMatrix4fvEXT", glProgramUniformMatrix4fvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniformMatrix4x2dv", glProgramUniformMatrix4x2dv, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniformMatrix4x2dvEXT", glProgramUniformMatrix4x2dvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniformMatrix4x2fv", glProgramUniformMatrix4x2fv, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniformMatrix4x2fvEXT", glProgramUniformMatrix4x2fvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniformMatrix4x3dv", glProgramUniformMatrix4x3dv, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniformMatrix4x3dvEXT", glProgramUniformMatrix4x3dvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniformMatrix4x3fv", glProgramUniformMatrix4x3fv, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glProgramUniformMatrix4x3fvEXT", glProgramUniformMatrix4x3fvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glProgramUniformui64NV", glProgramUniformui64NV, 0, 0, { GL_NV_shader_buffer_load, GL_EXTENSION_COUNT }},
+    { "glProgramUniformui64vNV", glProgramUniformui64vNV, 0, 0, { GL_NV_shader_buffer_load, GL_EXTENSION_COUNT }},
+    { "glProgramVertexLimitNV", glProgramVertexLimitNV, 0, 0, { GL_NV_geometry_program4, GL_EXTENSION_COUNT }},
+    { "glProvokingVertex", glProvokingVertex, 3, 2, { GL_ARB_provoking_vertex, GL_EXTENSION_COUNT }},
+    { "glProvokingVertexEXT", glProvokingVertexEXT, 0, 0, { GL_EXT_provoking_vertex, GL_EXTENSION_COUNT }},
+    { "glPushClientAttribDefaultEXT", glPushClientAttribDefaultEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glPushDebugGroup", glPushDebugGroup, 4, 3, { GL_KHR_debug, GL_EXTENSION_COUNT }},
+    { "glPushGroupMarkerEXT", glPushGroupMarkerEXT, 0, 0, { GL_EXT_debug_marker, GL_EXTENSION_COUNT }},
+    { "glQueryCounter", glQueryCounter, 3, 3, { GL_ARB_timer_query, GL_EXTENSION_COUNT }},
+    { "glQueryMatrixxOES", glQueryMatrixxOES, 0, 0, { GL_OES_query_matrix, GL_EXTENSION_COUNT }},
+    { "glQueryObjectParameteruiAMD", glQueryObjectParameteruiAMD, 0, 0, { GL_AMD_occlusion_query_event, GL_EXTENSION_COUNT }},
+    { "glQueryResourceNV", glQueryResourceNV, 0, 0, { GL_NV_query_resource, GL_EXTENSION_COUNT }},
+    { "glQueryResourceTagNV", glQueryResourceTagNV, 0, 0, { GL_NV_query_resource_tag, GL_EXTENSION_COUNT }},
+    { "glRasterPos2xOES", glRasterPos2xOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glRasterPos2xvOES", glRasterPos2xvOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glRasterPos3xOES", glRasterPos3xOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glRasterPos3xvOES", glRasterPos3xvOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glRasterPos4xOES", glRasterPos4xOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glRasterPos4xvOES", glRasterPos4xvOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glRasterSamplesEXT", glRasterSamplesEXT, 0, 0, { GL_EXT_raster_multisample, GL_NV_framebuffer_mixed_samples, GL_EXTENSION_COUNT }},
+    { "glReadBufferRegion", glReadBufferRegion, 0, 0, { GL_KTX_buffer_region, GL_EXTENSION_COUNT }},
+    { "glReadInstrumentsSGIX", glReadInstrumentsSGIX, 0, 0, { GL_SGIX_instruments, GL_EXTENSION_COUNT }},
+    { "glReadnPixels", glReadnPixels, 4, 5, { GL_KHR_robustness, GL_EXTENSION_COUNT }},
+    { "glReadnPixelsARB", glReadnPixelsARB, 0, 0, { GL_ARB_robustness, GL_EXTENSION_COUNT }},
+    { "glRectxOES", glRectxOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glRectxvOES", glRectxvOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glReferencePlaneSGIX", glReferencePlaneSGIX, 0, 0, { GL_SGIX_reference_plane, GL_EXTENSION_COUNT }},
+    { "glReleaseKeyedMutexWin32EXT", glReleaseKeyedMutexWin32EXT, 0, 0, { GL_EXT_win32_keyed_mutex, GL_EXTENSION_COUNT }},
+    { "glReleaseShaderCompiler", glReleaseShaderCompiler, 4, 1, { GL_ARB_ES2_compatibility, GL_EXTENSION_COUNT }},
+    { "glRenderGpuMaskNV", glRenderGpuMaskNV, 0, 0, { GL_NV_gpu_multicast, GL_EXTENSION_COUNT }},
+    { "glRenderbufferStorage", glRenderbufferStorage, 3, 0, { GL_ARB_framebuffer_object, GL_EXTENSION_COUNT }},
+    { "glRenderbufferStorageEXT", glRenderbufferStorageEXT, 0, 0, { GL_EXT_framebuffer_object, GL_EXTENSION_COUNT }},
+    { "glRenderbufferStorageMultisample", glRenderbufferStorageMultisample, 3, 0, { GL_ARB_framebuffer_object, GL_EXTENSION_COUNT }},
+    { "glRenderbufferStorageMultisampleAdvancedAMD", glRenderbufferStorageMultisampleAdvancedAMD, 0, 0, { GL_AMD_framebuffer_multisample_advanced, GL_EXTENSION_COUNT }},
+    { "glRenderbufferStorageMultisampleCoverageNV", glRenderbufferStorageMultisampleCoverageNV, 0, 0, { GL_NV_framebuffer_multisample_coverage, GL_EXTENSION_COUNT }},
+    { "glRenderbufferStorageMultisampleEXT", glRenderbufferStorageMultisampleEXT, 0, 0, { GL_EXT_framebuffer_multisample, GL_EXTENSION_COUNT }},
+    { "glReplacementCodePointerSUN", glReplacementCodePointerSUN, 0, 0, { GL_SUN_triangle_list, GL_EXTENSION_COUNT }},
+    { "glReplacementCodeubSUN", glReplacementCodeubSUN, 0, 0, { GL_SUN_triangle_list, GL_EXTENSION_COUNT }},
+    { "glReplacementCodeubvSUN", glReplacementCodeubvSUN, 0, 0, { GL_SUN_triangle_list, GL_EXTENSION_COUNT }},
+    { "glReplacementCodeuiColor3fVertex3fSUN", glReplacementCodeuiColor3fVertex3fSUN, 0, 0, { GL_SUN_vertex, GL_EXTENSION_COUNT }},
+    { "glReplacementCodeuiColor3fVertex3fvSUN", glReplacementCodeuiColor3fVertex3fvSUN, 0, 0, { GL_SUN_vertex, GL_EXTENSION_COUNT }},
+    { "glReplacementCodeuiColor4fNormal3fVertex3fSUN", glReplacementCodeuiColor4fNormal3fVertex3fSUN, 0, 0, { GL_SUN_vertex, GL_EXTENSION_COUNT }},
+    { "glReplacementCodeuiColor4fNormal3fVertex3fvSUN", glReplacementCodeuiColor4fNormal3fVertex3fvSUN, 0, 0, { GL_SUN_vertex, GL_EXTENSION_COUNT }},
+    { "glReplacementCodeuiColor4ubVertex3fSUN", glReplacementCodeuiColor4ubVertex3fSUN, 0, 0, { GL_SUN_vertex, GL_EXTENSION_COUNT }},
+    { "glReplacementCodeuiColor4ubVertex3fvSUN", glReplacementCodeuiColor4ubVertex3fvSUN, 0, 0, { GL_SUN_vertex, GL_EXTENSION_COUNT }},
+    { "glReplacementCodeuiNormal3fVertex3fSUN", glReplacementCodeuiNormal3fVertex3fSUN, 0, 0, { GL_SUN_vertex, GL_EXTENSION_COUNT }},
+    { "glReplacementCodeuiNormal3fVertex3fvSUN", glReplacementCodeuiNormal3fVertex3fvSUN, 0, 0, { GL_SUN_vertex, GL_EXTENSION_COUNT }},
+    { "glReplacementCodeuiSUN", glReplacementCodeuiSUN, 0, 0, { GL_SUN_triangle_list, GL_EXTENSION_COUNT }},
+    { "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN", glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN, 0, 0, { GL_SUN_vertex, GL_EXTENSION_COUNT }},
+    { "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN", glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN, 0, 0, { GL_SUN_vertex, GL_EXTENSION_COUNT }},
+    { "glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN", glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN, 0, 0, { GL_SUN_vertex, GL_EXTENSION_COUNT }},
+    { "glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN", glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN, 0, 0, { GL_SUN_vertex, GL_EXTENSION_COUNT }},
+    { "glReplacementCodeuiTexCoord2fVertex3fSUN", glReplacementCodeuiTexCoord2fVertex3fSUN, 0, 0, { GL_SUN_vertex, GL_EXTENSION_COUNT }},
+    { "glReplacementCodeuiTexCoord2fVertex3fvSUN", glReplacementCodeuiTexCoord2fVertex3fvSUN, 0, 0, { GL_SUN_vertex, GL_EXTENSION_COUNT }},
+    { "glReplacementCodeuiVertex3fSUN", glReplacementCodeuiVertex3fSUN, 0, 0, { GL_SUN_vertex, GL_EXTENSION_COUNT }},
+    { "glReplacementCodeuiVertex3fvSUN", glReplacementCodeuiVertex3fvSUN, 0, 0, { GL_SUN_vertex, GL_EXTENSION_COUNT }},
+    { "glReplacementCodeuivSUN", glReplacementCodeuivSUN, 0, 0, { GL_SUN_triangle_list, GL_EXTENSION_COUNT }},
+    { "glReplacementCodeusSUN", glReplacementCodeusSUN, 0, 0, { GL_SUN_triangle_list, GL_EXTENSION_COUNT }},
+    { "glReplacementCodeusvSUN", glReplacementCodeusvSUN, 0, 0, { GL_SUN_triangle_list, GL_EXTENSION_COUNT }},
+    { "glRequestResidentProgramsNV", glRequestResidentProgramsNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glResetHistogram", glResetHistogram, 0, 0, { GL_ARB_imaging, GL_EXTENSION_COUNT }},
+    { "glResetHistogramEXT", glResetHistogramEXT, 0, 0, { GL_EXT_histogram, GL_EXTENSION_COUNT }},
+    { "glResetMemoryObjectParameterNV", glResetMemoryObjectParameterNV, 0, 0, { GL_NV_memory_attachment, GL_EXTENSION_COUNT }},
+    { "glResetMinmax", glResetMinmax, 0, 0, { GL_ARB_imaging, GL_EXTENSION_COUNT }},
+    { "glResetMinmaxEXT", glResetMinmaxEXT, 0, 0, { GL_EXT_histogram, GL_EXTENSION_COUNT }},
+    { "glResizeBuffersMESA", glResizeBuffersMESA, 0, 0, { GL_MESA_resize_buffers, GL_EXTENSION_COUNT }},
+    { "glResolveDepthValuesNV", glResolveDepthValuesNV, 0, 0, { GL_NV_sample_locations, GL_EXTENSION_COUNT }},
+    { "glResumeTransformFeedback", glResumeTransformFeedback, 4, 0, { GL_ARB_transform_feedback2, GL_EXTENSION_COUNT }},
+    { "glResumeTransformFeedbackNV", glResumeTransformFeedbackNV, 0, 0, { GL_NV_transform_feedback2, GL_EXTENSION_COUNT }},
+    { "glRotatex", glRotatex, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glRotatexOES", glRotatexOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glSampleCoverage", glSampleCoverage, 1, 3, { GL_EXTENSION_COUNT }},
+    { "glSampleCoverageARB", glSampleCoverageARB, 0, 0, { GL_ARB_multisample, GL_EXTENSION_COUNT }},
+    { "glSampleCoveragex", glSampleCoveragex, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glSampleMapATI", glSampleMapATI, 0, 0, { GL_ATI_fragment_shader, GL_EXTENSION_COUNT }},
+    { "glSampleMaskEXT", glSampleMaskEXT, 0, 0, { GL_EXT_multisample, GL_EXTENSION_COUNT }},
+    { "glSampleMaskIndexedNV", glSampleMaskIndexedNV, 0, 0, { GL_NV_explicit_multisample, GL_EXTENSION_COUNT }},
+    { "glSampleMaskSGIS", glSampleMaskSGIS, 0, 0, { GL_SGIS_multisample, GL_EXTENSION_COUNT }},
+    { "glSampleMaski", glSampleMaski, 3, 2, { GL_ARB_texture_multisample, GL_EXTENSION_COUNT }},
+    { "glSamplePatternEXT", glSamplePatternEXT, 0, 0, { GL_EXT_multisample, GL_EXTENSION_COUNT }},
+    { "glSamplePatternSGIS", glSamplePatternSGIS, 0, 0, { GL_SGIS_multisample, GL_EXTENSION_COUNT }},
+    { "glSamplerParameterIiv", glSamplerParameterIiv, 3, 3, { GL_ARB_sampler_objects, GL_EXTENSION_COUNT }},
+    { "glSamplerParameterIuiv", glSamplerParameterIuiv, 3, 3, { GL_ARB_sampler_objects, GL_EXTENSION_COUNT }},
+    { "glSamplerParameterf", glSamplerParameterf, 3, 3, { GL_ARB_sampler_objects, GL_EXTENSION_COUNT }},
+    { "glSamplerParameterfv", glSamplerParameterfv, 3, 3, { GL_ARB_sampler_objects, GL_EXTENSION_COUNT }},
+    { "glSamplerParameteri", glSamplerParameteri, 3, 3, { GL_ARB_sampler_objects, GL_EXTENSION_COUNT }},
+    { "glSamplerParameteriv", glSamplerParameteriv, 3, 3, { GL_ARB_sampler_objects, GL_EXTENSION_COUNT }},
+    { "glScalex", glScalex, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glScalexOES", glScalexOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glScissorArrayv", glScissorArrayv, 4, 1, { GL_ARB_viewport_array, GL_EXTENSION_COUNT }},
+    { "glScissorExclusiveArrayvNV", glScissorExclusiveArrayvNV, 0, 0, { GL_NV_scissor_exclusive, GL_EXTENSION_COUNT }},
+    { "glScissorExclusiveNV", glScissorExclusiveNV, 0, 0, { GL_NV_scissor_exclusive, GL_EXTENSION_COUNT }},
+    { "glScissorIndexed", glScissorIndexed, 4, 1, { GL_ARB_viewport_array, GL_EXTENSION_COUNT }},
+    { "glScissorIndexedv", glScissorIndexedv, 4, 1, { GL_ARB_viewport_array, GL_EXTENSION_COUNT }},
+    { "glSecondaryColor3b", glSecondaryColor3b, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glSecondaryColor3bEXT", glSecondaryColor3bEXT, 0, 0, { GL_EXT_secondary_color, GL_EXTENSION_COUNT }},
+    { "glSecondaryColor3bv", glSecondaryColor3bv, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glSecondaryColor3bvEXT", glSecondaryColor3bvEXT, 0, 0, { GL_EXT_secondary_color, GL_EXTENSION_COUNT }},
+    { "glSecondaryColor3d", glSecondaryColor3d, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glSecondaryColor3dEXT", glSecondaryColor3dEXT, 0, 0, { GL_EXT_secondary_color, GL_EXTENSION_COUNT }},
+    { "glSecondaryColor3dv", glSecondaryColor3dv, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glSecondaryColor3dvEXT", glSecondaryColor3dvEXT, 0, 0, { GL_EXT_secondary_color, GL_EXTENSION_COUNT }},
+    { "glSecondaryColor3f", glSecondaryColor3f, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glSecondaryColor3fEXT", glSecondaryColor3fEXT, 0, 0, { GL_EXT_secondary_color, GL_EXTENSION_COUNT }},
+    { "glSecondaryColor3fv", glSecondaryColor3fv, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glSecondaryColor3fvEXT", glSecondaryColor3fvEXT, 0, 0, { GL_EXT_secondary_color, GL_EXTENSION_COUNT }},
+    { "glSecondaryColor3hNV", glSecondaryColor3hNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glSecondaryColor3hvNV", glSecondaryColor3hvNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glSecondaryColor3i", glSecondaryColor3i, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glSecondaryColor3iEXT", glSecondaryColor3iEXT, 0, 0, { GL_EXT_secondary_color, GL_EXTENSION_COUNT }},
+    { "glSecondaryColor3iv", glSecondaryColor3iv, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glSecondaryColor3ivEXT", glSecondaryColor3ivEXT, 0, 0, { GL_EXT_secondary_color, GL_EXTENSION_COUNT }},
+    { "glSecondaryColor3s", glSecondaryColor3s, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glSecondaryColor3sEXT", glSecondaryColor3sEXT, 0, 0, { GL_EXT_secondary_color, GL_EXTENSION_COUNT }},
+    { "glSecondaryColor3sv", glSecondaryColor3sv, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glSecondaryColor3svEXT", glSecondaryColor3svEXT, 0, 0, { GL_EXT_secondary_color, GL_EXTENSION_COUNT }},
+    { "glSecondaryColor3ub", glSecondaryColor3ub, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glSecondaryColor3ubEXT", glSecondaryColor3ubEXT, 0, 0, { GL_EXT_secondary_color, GL_EXTENSION_COUNT }},
+    { "glSecondaryColor3ubv", glSecondaryColor3ubv, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glSecondaryColor3ubvEXT", glSecondaryColor3ubvEXT, 0, 0, { GL_EXT_secondary_color, GL_EXTENSION_COUNT }},
+    { "glSecondaryColor3ui", glSecondaryColor3ui, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glSecondaryColor3uiEXT", glSecondaryColor3uiEXT, 0, 0, { GL_EXT_secondary_color, GL_EXTENSION_COUNT }},
+    { "glSecondaryColor3uiv", glSecondaryColor3uiv, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glSecondaryColor3uivEXT", glSecondaryColor3uivEXT, 0, 0, { GL_EXT_secondary_color, GL_EXTENSION_COUNT }},
+    { "glSecondaryColor3us", glSecondaryColor3us, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glSecondaryColor3usEXT", glSecondaryColor3usEXT, 0, 0, { GL_EXT_secondary_color, GL_EXTENSION_COUNT }},
+    { "glSecondaryColor3usv", glSecondaryColor3usv, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glSecondaryColor3usvEXT", glSecondaryColor3usvEXT, 0, 0, { GL_EXT_secondary_color, GL_EXTENSION_COUNT }},
+    { "glSecondaryColorFormatNV", glSecondaryColorFormatNV, 0, 0, { GL_NV_vertex_buffer_unified_memory, GL_EXTENSION_COUNT }},
+    { "glSecondaryColorP3ui", glSecondaryColorP3ui, 3, 3, { GL_ARB_vertex_type_2_10_10_10_rev, GL_EXTENSION_COUNT }},
+    { "glSecondaryColorP3uiv", glSecondaryColorP3uiv, 3, 3, { GL_ARB_vertex_type_2_10_10_10_rev, GL_EXTENSION_COUNT }},
+    { "glSecondaryColorPointer", glSecondaryColorPointer, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glSecondaryColorPointerEXT", glSecondaryColorPointerEXT, 0, 0, { GL_EXT_secondary_color, GL_EXTENSION_COUNT }},
+    { "glSecondaryColorPointerListIBM", glSecondaryColorPointerListIBM, 0, 0, { GL_IBM_vertex_array_lists, GL_EXTENSION_COUNT }},
+    { "glSelectPerfMonitorCountersAMD", glSelectPerfMonitorCountersAMD, 0, 0, { GL_AMD_performance_monitor, GL_EXTENSION_COUNT }},
+    { "glSelectTextureCoordSetSGIS", glSelectTextureCoordSetSGIS, 0, 0, { GL_SGIS_multitexture, GL_EXTENSION_COUNT }},
+    { "glSelectTextureSGIS", glSelectTextureSGIS, 0, 0, { GL_SGIS_multitexture, GL_EXTENSION_COUNT }},
+    { "glSemaphoreParameterivNV", glSemaphoreParameterivNV, 0, 0, { GL_NV_timeline_semaphore, GL_EXTENSION_COUNT }},
+    { "glSemaphoreParameterui64vEXT", glSemaphoreParameterui64vEXT, 0, 0, { GL_EXT_semaphore, GL_EXTENSION_COUNT }},
+    { "glSeparableFilter2D", glSeparableFilter2D, 0, 0, { GL_ARB_imaging, GL_EXTENSION_COUNT }},
+    { "glSeparableFilter2DEXT", glSeparableFilter2DEXT, 0, 0, { GL_EXT_convolution, GL_EXTENSION_COUNT }},
+    { "glSetFenceAPPLE", glSetFenceAPPLE, 0, 0, { GL_APPLE_fence, GL_EXTENSION_COUNT }},
+    { "glSetFenceNV", glSetFenceNV, 0, 0, { GL_NV_fence, GL_EXTENSION_COUNT }},
+    { "glSetFragmentShaderConstantATI", glSetFragmentShaderConstantATI, 0, 0, { GL_ATI_fragment_shader, GL_EXTENSION_COUNT }},
+    { "glSetInvariantEXT", glSetInvariantEXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glSetLocalConstantEXT", glSetLocalConstantEXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glSetMultisamplefvAMD", glSetMultisamplefvAMD, 0, 0, { GL_AMD_sample_positions, GL_EXTENSION_COUNT }},
+    { "glShaderBinary", glShaderBinary, 4, 1, { GL_ARB_ES2_compatibility, GL_EXTENSION_COUNT }},
+    { "glShaderOp1EXT", glShaderOp1EXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glShaderOp2EXT", glShaderOp2EXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glShaderOp3EXT", glShaderOp3EXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glShaderSource", glShaderSource, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glShaderSourceARB", glShaderSourceARB, 0, 0, { GL_ARB_shader_objects, GL_EXTENSION_COUNT }},
+    { "glShaderStorageBlockBinding", glShaderStorageBlockBinding, 4, 3, { GL_ARB_shader_storage_buffer_object, GL_EXTENSION_COUNT }},
+    { "glShadingRateCombinerOpsEXT", glShadingRateCombinerOpsEXT, 0, 0, { GL_EXT_fragment_shading_rate, GL_EXT_fragment_shading_rate_primitive, GL_EXT_fragment_shading_rate_attachment, GL_EXTENSION_COUNT }},
+    { "glShadingRateEXT", glShadingRateEXT, 0, 0, { GL_EXT_fragment_shading_rate, GL_EXT_fragment_shading_rate_primitive, GL_EXT_fragment_shading_rate_attachment, GL_EXTENSION_COUNT }},
+    { "glShadingRateImageBarrierNV", glShadingRateImageBarrierNV, 0, 0, { GL_NV_shading_rate_image, GL_EXTENSION_COUNT }},
+    { "glShadingRateImagePaletteNV", glShadingRateImagePaletteNV, 0, 0, { GL_NV_shading_rate_image, GL_EXTENSION_COUNT }},
+    { "glShadingRateSampleOrderCustomNV", glShadingRateSampleOrderCustomNV, 0, 0, { GL_NV_shading_rate_image, GL_EXTENSION_COUNT }},
+    { "glShadingRateSampleOrderNV", glShadingRateSampleOrderNV, 0, 0, { GL_NV_shading_rate_image, GL_EXTENSION_COUNT }},
+    { "glSharpenTexFuncSGIS", glSharpenTexFuncSGIS, 0, 0, { GL_SGIS_sharpen_texture, GL_EXTENSION_COUNT }},
+    { "glSignalSemaphoreEXT", glSignalSemaphoreEXT, 0, 0, { GL_EXT_semaphore, GL_EXTENSION_COUNT }},
+    { "glSignalSemaphoreui64NVX", glSignalSemaphoreui64NVX, 0, 0, { GL_NVX_progress_fence, GL_EXTENSION_COUNT }},
+    { "glSignalVkFenceNV", glSignalVkFenceNV, 0, 0, { GL_NV_draw_vulkan_image, GL_EXTENSION_COUNT }},
+    { "glSignalVkSemaphoreNV", glSignalVkSemaphoreNV, 0, 0, { GL_NV_draw_vulkan_image, GL_EXTENSION_COUNT }},
+    { "glSpecializeShader", glSpecializeShader, 4, 6, { GL_EXTENSION_COUNT }},
+    { "glSpecializeShaderARB", glSpecializeShaderARB, 0, 0, { GL_ARB_gl_spirv, GL_EXTENSION_COUNT }},
+    { "glSpriteParameterfSGIX", glSpriteParameterfSGIX, 0, 0, { GL_SGIX_sprite, GL_EXTENSION_COUNT }},
+    { "glSpriteParameterfvSGIX", glSpriteParameterfvSGIX, 0, 0, { GL_SGIX_sprite, GL_EXTENSION_COUNT }},
+    { "glSpriteParameteriSGIX", glSpriteParameteriSGIX, 0, 0, { GL_SGIX_sprite, GL_EXTENSION_COUNT }},
+    { "glSpriteParameterivSGIX", glSpriteParameterivSGIX, 0, 0, { GL_SGIX_sprite, GL_EXTENSION_COUNT }},
+    { "glStartInstrumentsSGIX", glStartInstrumentsSGIX, 0, 0, { GL_SGIX_instruments, GL_EXTENSION_COUNT }},
+    { "glStateCaptureNV", glStateCaptureNV, 0, 0, { GL_NV_command_list, GL_EXTENSION_COUNT }},
+    { "glStencilClearTagEXT", glStencilClearTagEXT, 0, 0, { GL_EXT_stencil_clear_tag, GL_EXTENSION_COUNT }},
+    { "glStencilFillPathInstancedNV", glStencilFillPathInstancedNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glStencilFillPathNV", glStencilFillPathNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glStencilFuncSeparate", glStencilFuncSeparate, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glStencilFuncSeparateATI", glStencilFuncSeparateATI, 0, 0, { GL_ATI_separate_stencil, GL_EXTENSION_COUNT }},
+    { "glStencilMaskSeparate", glStencilMaskSeparate, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glStencilOpSeparate", glStencilOpSeparate, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glStencilOpSeparateATI", glStencilOpSeparateATI, 0, 0, { GL_ATI_separate_stencil, GL_EXTENSION_COUNT }},
+    { "glStencilOpValueAMD", glStencilOpValueAMD, 0, 0, { GL_AMD_stencil_operation_extended, GL_EXTENSION_COUNT }},
+    { "glStencilStrokePathInstancedNV", glStencilStrokePathInstancedNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glStencilStrokePathNV", glStencilStrokePathNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glStencilThenCoverFillPathInstancedNV", glStencilThenCoverFillPathInstancedNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glStencilThenCoverFillPathNV", glStencilThenCoverFillPathNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glStencilThenCoverStrokePathInstancedNV", glStencilThenCoverStrokePathInstancedNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glStencilThenCoverStrokePathNV", glStencilThenCoverStrokePathNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glStopInstrumentsSGIX", glStopInstrumentsSGIX, 0, 0, { GL_SGIX_instruments, GL_EXTENSION_COUNT }},
+    { "glStringMarkerGREMEDY", glStringMarkerGREMEDY, 0, 0, { GL_GREMEDY_string_marker, GL_EXTENSION_COUNT }},
+    { "glSubpixelPrecisionBiasNV", glSubpixelPrecisionBiasNV, 0, 0, { GL_NV_conservative_raster, GL_EXTENSION_COUNT }},
+    { "glSwizzleEXT", glSwizzleEXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glSyncTextureINTEL", glSyncTextureINTEL, 0, 0, { GL_INTEL_map_texture, GL_EXTENSION_COUNT }},
+    { "glTagSampleBufferSGIX", glTagSampleBufferSGIX, 0, 0, { GL_SGIX_tag_sample_buffer, GL_EXTENSION_COUNT }},
+    { "glTangent3bEXT", glTangent3bEXT, 0, 0, { GL_EXT_coordinate_frame, GL_EXTENSION_COUNT }},
+    { "glTangent3bvEXT", glTangent3bvEXT, 0, 0, { GL_EXT_coordinate_frame, GL_EXTENSION_COUNT }},
+    { "glTangent3dEXT", glTangent3dEXT, 0, 0, { GL_EXT_coordinate_frame, GL_EXTENSION_COUNT }},
+    { "glTangent3dvEXT", glTangent3dvEXT, 0, 0, { GL_EXT_coordinate_frame, GL_EXTENSION_COUNT }},
+    { "glTangent3fEXT", glTangent3fEXT, 0, 0, { GL_EXT_coordinate_frame, GL_EXTENSION_COUNT }},
+    { "glTangent3fvEXT", glTangent3fvEXT, 0, 0, { GL_EXT_coordinate_frame, GL_EXTENSION_COUNT }},
+    { "glTangent3iEXT", glTangent3iEXT, 0, 0, { GL_EXT_coordinate_frame, GL_EXTENSION_COUNT }},
+    { "glTangent3ivEXT", glTangent3ivEXT, 0, 0, { GL_EXT_coordinate_frame, GL_EXTENSION_COUNT }},
+    { "glTangent3sEXT", glTangent3sEXT, 0, 0, { GL_EXT_coordinate_frame, GL_EXTENSION_COUNT }},
+    { "glTangent3svEXT", glTangent3svEXT, 0, 0, { GL_EXT_coordinate_frame, GL_EXTENSION_COUNT }},
+    { "glTangentPointerEXT", glTangentPointerEXT, 0, 0, { GL_EXT_coordinate_frame, GL_EXTENSION_COUNT }},
+    { "glTbufferMask3DFX", glTbufferMask3DFX, 0, 0, { GL_3DFX_tbuffer, GL_EXTENSION_COUNT }},
+    { "glTessellationFactorAMD", glTessellationFactorAMD, 0, 0, { GL_AMD_vertex_shader_tessellator, GL_EXTENSION_COUNT }},
+    { "glTessellationModeAMD", glTessellationModeAMD, 0, 0, { GL_AMD_vertex_shader_tessellator, GL_EXTENSION_COUNT }},
+    { "glTestFenceAPPLE", glTestFenceAPPLE, 0, 0, { GL_APPLE_fence, GL_EXTENSION_COUNT }},
+    { "glTestFenceNV", glTestFenceNV, 0, 0, { GL_NV_fence, GL_EXTENSION_COUNT }},
+    { "glTestObjectAPPLE", glTestObjectAPPLE, 0, 0, { GL_APPLE_fence, GL_EXTENSION_COUNT }},
+    { "glTexAttachMemoryNV", glTexAttachMemoryNV, 0, 0, { GL_NV_memory_attachment, GL_EXTENSION_COUNT }},
+    { "glTexBuffer", glTexBuffer, 3, 1, { GL_EXTENSION_COUNT }},
+    { "glTexBufferARB", glTexBufferARB, 0, 0, { GL_ARB_texture_buffer_object, GL_EXTENSION_COUNT }},
+    { "glTexBufferEXT", glTexBufferEXT, 0, 0, { GL_EXT_texture_buffer_object, GL_EXTENSION_COUNT }},
+    { "glTexBufferRange", glTexBufferRange, 4, 3, { GL_ARB_texture_buffer_range, GL_EXTENSION_COUNT }},
+    { "glTexBumpParameterfvATI", glTexBumpParameterfvATI, 0, 0, { GL_ATI_envmap_bumpmap, GL_EXTENSION_COUNT }},
+    { "glTexBumpParameterivATI", glTexBumpParameterivATI, 0, 0, { GL_ATI_envmap_bumpmap, GL_EXTENSION_COUNT }},
+    { "glTexCoord1bOES", glTexCoord1bOES, 0, 0, { GL_OES_byte_coordinates, GL_EXTENSION_COUNT }},
+    { "glTexCoord1bvOES", glTexCoord1bvOES, 0, 0, { GL_OES_byte_coordinates, GL_EXTENSION_COUNT }},
+    { "glTexCoord1hNV", glTexCoord1hNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glTexCoord1hvNV", glTexCoord1hvNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glTexCoord1xOES", glTexCoord1xOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glTexCoord1xvOES", glTexCoord1xvOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glTexCoord2bOES", glTexCoord2bOES, 0, 0, { GL_OES_byte_coordinates, GL_EXTENSION_COUNT }},
+    { "glTexCoord2bvOES", glTexCoord2bvOES, 0, 0, { GL_OES_byte_coordinates, GL_EXTENSION_COUNT }},
+    { "glTexCoord2fColor3fVertex3fSUN", glTexCoord2fColor3fVertex3fSUN, 0, 0, { GL_SUN_vertex, GL_EXTENSION_COUNT }},
+    { "glTexCoord2fColor3fVertex3fvSUN", glTexCoord2fColor3fVertex3fvSUN, 0, 0, { GL_SUN_vertex, GL_EXTENSION_COUNT }},
+    { "glTexCoord2fColor4fNormal3fVertex3fSUN", glTexCoord2fColor4fNormal3fVertex3fSUN, 0, 0, { GL_SUN_vertex, GL_EXTENSION_COUNT }},
+    { "glTexCoord2fColor4fNormal3fVertex3fvSUN", glTexCoord2fColor4fNormal3fVertex3fvSUN, 0, 0, { GL_SUN_vertex, GL_EXTENSION_COUNT }},
+    { "glTexCoord2fColor4ubVertex3fSUN", glTexCoord2fColor4ubVertex3fSUN, 0, 0, { GL_SUN_vertex, GL_EXTENSION_COUNT }},
+    { "glTexCoord2fColor4ubVertex3fvSUN", glTexCoord2fColor4ubVertex3fvSUN, 0, 0, { GL_SUN_vertex, GL_EXTENSION_COUNT }},
+    { "glTexCoord2fNormal3fVertex3fSUN", glTexCoord2fNormal3fVertex3fSUN, 0, 0, { GL_SUN_vertex, GL_EXTENSION_COUNT }},
+    { "glTexCoord2fNormal3fVertex3fvSUN", glTexCoord2fNormal3fVertex3fvSUN, 0, 0, { GL_SUN_vertex, GL_EXTENSION_COUNT }},
+    { "glTexCoord2fVertex3fSUN", glTexCoord2fVertex3fSUN, 0, 0, { GL_SUN_vertex, GL_EXTENSION_COUNT }},
+    { "glTexCoord2fVertex3fvSUN", glTexCoord2fVertex3fvSUN, 0, 0, { GL_SUN_vertex, GL_EXTENSION_COUNT }},
+    { "glTexCoord2hNV", glTexCoord2hNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glTexCoord2hvNV", glTexCoord2hvNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glTexCoord2xOES", glTexCoord2xOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glTexCoord2xvOES", glTexCoord2xvOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glTexCoord3bOES", glTexCoord3bOES, 0, 0, { GL_OES_byte_coordinates, GL_EXTENSION_COUNT }},
+    { "glTexCoord3bvOES", glTexCoord3bvOES, 0, 0, { GL_OES_byte_coordinates, GL_EXTENSION_COUNT }},
+    { "glTexCoord3hNV", glTexCoord3hNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glTexCoord3hvNV", glTexCoord3hvNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glTexCoord3xOES", glTexCoord3xOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glTexCoord3xvOES", glTexCoord3xvOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glTexCoord4bOES", glTexCoord4bOES, 0, 0, { GL_OES_byte_coordinates, GL_EXTENSION_COUNT }},
+    { "glTexCoord4bvOES", glTexCoord4bvOES, 0, 0, { GL_OES_byte_coordinates, GL_EXTENSION_COUNT }},
+    { "glTexCoord4fColor4fNormal3fVertex4fSUN", glTexCoord4fColor4fNormal3fVertex4fSUN, 0, 0, { GL_SUN_vertex, GL_EXTENSION_COUNT }},
+    { "glTexCoord4fColor4fNormal3fVertex4fvSUN", glTexCoord4fColor4fNormal3fVertex4fvSUN, 0, 0, { GL_SUN_vertex, GL_EXTENSION_COUNT }},
+    { "glTexCoord4fVertex4fSUN", glTexCoord4fVertex4fSUN, 0, 0, { GL_SUN_vertex, GL_EXTENSION_COUNT }},
+    { "glTexCoord4fVertex4fvSUN", glTexCoord4fVertex4fvSUN, 0, 0, { GL_SUN_vertex, GL_EXTENSION_COUNT }},
+    { "glTexCoord4hNV", glTexCoord4hNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glTexCoord4hvNV", glTexCoord4hvNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glTexCoord4xOES", glTexCoord4xOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glTexCoord4xvOES", glTexCoord4xvOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glTexCoordFormatNV", glTexCoordFormatNV, 0, 0, { GL_NV_vertex_buffer_unified_memory, GL_EXTENSION_COUNT }},
+    { "glTexCoordP1ui", glTexCoordP1ui, 3, 3, { GL_ARB_vertex_type_2_10_10_10_rev, GL_EXTENSION_COUNT }},
+    { "glTexCoordP1uiv", glTexCoordP1uiv, 3, 3, { GL_ARB_vertex_type_2_10_10_10_rev, GL_EXTENSION_COUNT }},
+    { "glTexCoordP2ui", glTexCoordP2ui, 3, 3, { GL_ARB_vertex_type_2_10_10_10_rev, GL_EXTENSION_COUNT }},
+    { "glTexCoordP2uiv", glTexCoordP2uiv, 3, 3, { GL_ARB_vertex_type_2_10_10_10_rev, GL_EXTENSION_COUNT }},
+    { "glTexCoordP3ui", glTexCoordP3ui, 3, 3, { GL_ARB_vertex_type_2_10_10_10_rev, GL_EXTENSION_COUNT }},
+    { "glTexCoordP3uiv", glTexCoordP3uiv, 3, 3, { GL_ARB_vertex_type_2_10_10_10_rev, GL_EXTENSION_COUNT }},
+    { "glTexCoordP4ui", glTexCoordP4ui, 3, 3, { GL_ARB_vertex_type_2_10_10_10_rev, GL_EXTENSION_COUNT }},
+    { "glTexCoordP4uiv", glTexCoordP4uiv, 3, 3, { GL_ARB_vertex_type_2_10_10_10_rev, GL_EXTENSION_COUNT }},
+    { "glTexCoordPointerEXT", glTexCoordPointerEXT, 0, 0, { GL_EXT_vertex_array, GL_EXTENSION_COUNT }},
+    { "glTexCoordPointerListIBM", glTexCoordPointerListIBM, 0, 0, { GL_IBM_vertex_array_lists, GL_EXTENSION_COUNT }},
+    { "glTexCoordPointervINTEL", glTexCoordPointervINTEL, 0, 0, { GL_INTEL_parallel_arrays, GL_EXTENSION_COUNT }},
+    { "glTexEnvx", glTexEnvx, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glTexEnvxOES", glTexEnvxOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glTexEnvxv", glTexEnvxv, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glTexEnvxvOES", glTexEnvxvOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glTexFilterFuncSGIS", glTexFilterFuncSGIS, 0, 0, { GL_SGIS_texture_filter4, GL_EXTENSION_COUNT }},
+    { "glTexGenxOES", glTexGenxOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glTexGenxvOES", glTexGenxvOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glTexImage2DMultisample", glTexImage2DMultisample, 3, 2, { GL_ARB_texture_multisample, GL_EXTENSION_COUNT }},
+    { "glTexImage2DMultisampleCoverageNV", glTexImage2DMultisampleCoverageNV, 0, 0, { GL_NV_texture_multisample, GL_EXTENSION_COUNT }},
+    { "glTexImage3D", glTexImage3D, 1, 2, { GL_EXTENSION_COUNT }},
+    { "glTexImage3DEXT", glTexImage3DEXT, 0, 0, { GL_EXT_texture3D, GL_EXTENSION_COUNT }},
+    { "glTexImage3DMultisample", glTexImage3DMultisample, 3, 2, { GL_ARB_texture_multisample, GL_EXTENSION_COUNT }},
+    { "glTexImage3DMultisampleCoverageNV", glTexImage3DMultisampleCoverageNV, 0, 0, { GL_NV_texture_multisample, GL_EXTENSION_COUNT }},
+    { "glTexImage4DSGIS", glTexImage4DSGIS, 0, 0, { GL_SGIS_texture4D, GL_EXTENSION_COUNT }},
+    { "glTexPageCommitmentARB", glTexPageCommitmentARB, 0, 0, { GL_ARB_sparse_texture, GL_EXTENSION_COUNT }},
+    { "glTexPageCommitmentMemNV", glTexPageCommitmentMemNV, 0, 0, { GL_NV_memory_object_sparse, GL_EXTENSION_COUNT }},
+    { "glTexParameterIiv", glTexParameterIiv, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glTexParameterIivEXT", glTexParameterIivEXT, 0, 0, { GL_EXT_texture_integer, GL_EXTENSION_COUNT }},
+    { "glTexParameterIuiv", glTexParameterIuiv, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glTexParameterIuivEXT", glTexParameterIuivEXT, 0, 0, { GL_EXT_texture_integer, GL_EXTENSION_COUNT }},
+    { "glTexParameterx", glTexParameterx, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glTexParameterxOES", glTexParameterxOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glTexParameterxv", glTexParameterxv, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glTexParameterxvOES", glTexParameterxvOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glTexRenderbufferNV", glTexRenderbufferNV, 0, 0, { GL_NV_explicit_multisample, GL_EXTENSION_COUNT }},
+    { "glTexStorage1D", glTexStorage1D, 4, 2, { GL_ARB_texture_storage, GL_EXTENSION_COUNT }},
+    { "glTexStorage1DEXT", glTexStorage1DEXT, 0, 0, { GL_EXT_texture_storage, GL_EXTENSION_COUNT }},
+    { "glTexStorage2D", glTexStorage2D, 4, 2, { GL_ARB_texture_storage, GL_EXTENSION_COUNT }},
+    { "glTexStorage2DEXT", glTexStorage2DEXT, 0, 0, { GL_EXT_texture_storage, GL_EXTENSION_COUNT }},
+    { "glTexStorage2DMultisample", glTexStorage2DMultisample, 4, 3, { GL_ARB_texture_storage_multisample, GL_EXTENSION_COUNT }},
+    { "glTexStorage3D", glTexStorage3D, 4, 2, { GL_ARB_texture_storage, GL_EXTENSION_COUNT }},
+    { "glTexStorage3DEXT", glTexStorage3DEXT, 0, 0, { GL_EXT_texture_storage, GL_EXTENSION_COUNT }},
+    { "glTexStorage3DMultisample", glTexStorage3DMultisample, 4, 3, { GL_ARB_texture_storage_multisample, GL_EXTENSION_COUNT }},
+    { "glTexStorageMem1DEXT", glTexStorageMem1DEXT, 0, 0, { GL_EXT_memory_object, GL_EXTENSION_COUNT }},
+    { "glTexStorageMem2DEXT", glTexStorageMem2DEXT, 0, 0, { GL_EXT_memory_object, GL_EXTENSION_COUNT }},
+    { "glTexStorageMem2DMultisampleEXT", glTexStorageMem2DMultisampleEXT, 0, 0, { GL_EXT_memory_object, GL_EXTENSION_COUNT }},
+    { "glTexStorageMem3DEXT", glTexStorageMem3DEXT, 0, 0, { GL_EXT_memory_object, GL_EXTENSION_COUNT }},
+    { "glTexStorageMem3DMultisampleEXT", glTexStorageMem3DMultisampleEXT, 0, 0, { GL_EXT_memory_object, GL_EXTENSION_COUNT }},
+    { "glTexStorageSparseAMD", glTexStorageSparseAMD, 0, 0, { GL_AMD_sparse_texture, GL_EXTENSION_COUNT }},
+    { "glTexSubImage1DEXT", glTexSubImage1DEXT, 0, 0, { GL_EXT_subtexture, GL_EXTENSION_COUNT }},
+    { "glTexSubImage2DEXT", glTexSubImage2DEXT, 0, 0, { GL_EXT_subtexture, GL_EXTENSION_COUNT }},
+    { "glTexSubImage3D", glTexSubImage3D, 1, 2, { GL_EXTENSION_COUNT }},
+    { "glTexSubImage3DEXT", glTexSubImage3DEXT, 0, 0, { GL_EXT_texture3D, GL_EXTENSION_COUNT }},
+    { "glTexSubImage4DSGIS", glTexSubImage4DSGIS, 0, 0, { GL_SGIS_texture4D, GL_EXTENSION_COUNT }},
+    { "glTextureAttachMemoryNV", glTextureAttachMemoryNV, 0, 0, { GL_NV_memory_attachment, GL_EXTENSION_COUNT }},
+    { "glTextureBarrier", glTextureBarrier, 4, 5, { GL_ARB_texture_barrier, GL_EXTENSION_COUNT }},
+    { "glTextureBarrierNV", glTextureBarrierNV, 0, 0, { GL_NV_texture_barrier, GL_EXTENSION_COUNT }},
+    { "glTextureBuffer", glTextureBuffer, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glTextureBufferEXT", glTextureBufferEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glTextureBufferRange", glTextureBufferRange, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glTextureBufferRangeEXT", glTextureBufferRangeEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glTextureColorMaskSGIS", glTextureColorMaskSGIS, 0, 0, { GL_SGIS_texture_color_mask, GL_EXTENSION_COUNT }},
+    { "glTextureImage1DEXT", glTextureImage1DEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glTextureImage2DEXT", glTextureImage2DEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glTextureImage2DMultisampleCoverageNV", glTextureImage2DMultisampleCoverageNV, 0, 0, { GL_NV_texture_multisample, GL_EXTENSION_COUNT }},
+    { "glTextureImage2DMultisampleNV", glTextureImage2DMultisampleNV, 0, 0, { GL_NV_texture_multisample, GL_EXTENSION_COUNT }},
+    { "glTextureImage3DEXT", glTextureImage3DEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glTextureImage3DMultisampleCoverageNV", glTextureImage3DMultisampleCoverageNV, 0, 0, { GL_NV_texture_multisample, GL_EXTENSION_COUNT }},
+    { "glTextureImage3DMultisampleNV", glTextureImage3DMultisampleNV, 0, 0, { GL_NV_texture_multisample, GL_EXTENSION_COUNT }},
+    { "glTextureLightEXT", glTextureLightEXT, 0, 0, { GL_EXT_light_texture, GL_EXTENSION_COUNT }},
+    { "glTextureMaterialEXT", glTextureMaterialEXT, 0, 0, { GL_EXT_light_texture, GL_EXTENSION_COUNT }},
+    { "glTextureNormalEXT", glTextureNormalEXT, 0, 0, { GL_EXT_texture_perturb_normal, GL_EXTENSION_COUNT }},
+    { "glTexturePageCommitmentEXT", glTexturePageCommitmentEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glTexturePageCommitmentMemNV", glTexturePageCommitmentMemNV, 0, 0, { GL_NV_memory_object_sparse, GL_EXTENSION_COUNT }},
+    { "glTextureParameterIiv", glTextureParameterIiv, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glTextureParameterIivEXT", glTextureParameterIivEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glTextureParameterIuiv", glTextureParameterIuiv, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glTextureParameterIuivEXT", glTextureParameterIuivEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glTextureParameterf", glTextureParameterf, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glTextureParameterfEXT", glTextureParameterfEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glTextureParameterfv", glTextureParameterfv, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glTextureParameterfvEXT", glTextureParameterfvEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glTextureParameteri", glTextureParameteri, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glTextureParameteriEXT", glTextureParameteriEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glTextureParameteriv", glTextureParameteriv, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glTextureParameterivEXT", glTextureParameterivEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glTextureRangeAPPLE", glTextureRangeAPPLE, 0, 0, { GL_APPLE_texture_range, GL_EXTENSION_COUNT }},
+    { "glTextureRenderbufferEXT", glTextureRenderbufferEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glTextureStorage1D", glTextureStorage1D, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glTextureStorage1DEXT", glTextureStorage1DEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXT_texture_storage, GL_EXTENSION_COUNT }},
+    { "glTextureStorage2D", glTextureStorage2D, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glTextureStorage2DEXT", glTextureStorage2DEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXT_texture_storage, GL_EXTENSION_COUNT }},
+    { "glTextureStorage2DMultisample", glTextureStorage2DMultisample, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glTextureStorage2DMultisampleEXT", glTextureStorage2DMultisampleEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glTextureStorage3D", glTextureStorage3D, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glTextureStorage3DEXT", glTextureStorage3DEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXT_texture_storage, GL_EXTENSION_COUNT }},
+    { "glTextureStorage3DMultisample", glTextureStorage3DMultisample, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glTextureStorage3DMultisampleEXT", glTextureStorage3DMultisampleEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glTextureStorageMem1DEXT", glTextureStorageMem1DEXT, 0, 0, { GL_EXT_memory_object, GL_EXTENSION_COUNT }},
+    { "glTextureStorageMem2DEXT", glTextureStorageMem2DEXT, 0, 0, { GL_EXT_memory_object, GL_EXTENSION_COUNT }},
+    { "glTextureStorageMem2DMultisampleEXT", glTextureStorageMem2DMultisampleEXT, 0, 0, { GL_EXT_memory_object, GL_EXTENSION_COUNT }},
+    { "glTextureStorageMem3DEXT", glTextureStorageMem3DEXT, 0, 0, { GL_EXT_memory_object, GL_EXTENSION_COUNT }},
+    { "glTextureStorageMem3DMultisampleEXT", glTextureStorageMem3DMultisampleEXT, 0, 0, { GL_EXT_memory_object, GL_EXTENSION_COUNT }},
+    { "glTextureStorageSparseAMD", glTextureStorageSparseAMD, 0, 0, { GL_AMD_sparse_texture, GL_EXTENSION_COUNT }},
+    { "glTextureSubImage1D", glTextureSubImage1D, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glTextureSubImage1DEXT", glTextureSubImage1DEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glTextureSubImage2D", glTextureSubImage2D, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glTextureSubImage2DEXT", glTextureSubImage2DEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glTextureSubImage3D", glTextureSubImage3D, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glTextureSubImage3DEXT", glTextureSubImage3DEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glTextureView", glTextureView, 4, 3, { GL_ARB_texture_view, GL_EXTENSION_COUNT }},
+    { "glTrackMatrixNV", glTrackMatrixNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glTransformFeedbackAttribsNV", glTransformFeedbackAttribsNV, 0, 0, { GL_NV_transform_feedback, GL_EXTENSION_COUNT }},
+    { "glTransformFeedbackBufferBase", glTransformFeedbackBufferBase, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glTransformFeedbackBufferRange", glTransformFeedbackBufferRange, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glTransformFeedbackStreamAttribsNV", glTransformFeedbackStreamAttribsNV, 0, 0, { GL_NV_transform_feedback, GL_EXTENSION_COUNT }},
+    { "glTransformFeedbackVaryings", glTransformFeedbackVaryings, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glTransformFeedbackVaryingsEXT", glTransformFeedbackVaryingsEXT, 0, 0, { GL_EXT_transform_feedback, GL_EXTENSION_COUNT }},
+    { "glTransformFeedbackVaryingsNV", glTransformFeedbackVaryingsNV, 0, 0, { GL_NV_transform_feedback, GL_EXTENSION_COUNT }},
+    { "glTransformPathNV", glTransformPathNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glTranslatex", glTranslatex, 0, 0, { GL_NV_ES1_1_compatibility, GL_EXTENSION_COUNT }},
+    { "glTranslatexOES", glTranslatexOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glUniform1d", glUniform1d, 4, 0, { GL_ARB_gpu_shader_fp64, GL_EXTENSION_COUNT }},
+    { "glUniform1dv", glUniform1dv, 4, 0, { GL_ARB_gpu_shader_fp64, GL_EXTENSION_COUNT }},
+    { "glUniform1f", glUniform1f, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glUniform1fARB", glUniform1fARB, 0, 0, { GL_ARB_shader_objects, GL_EXTENSION_COUNT }},
+    { "glUniform1fv", glUniform1fv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glUniform1fvARB", glUniform1fvARB, 0, 0, { GL_ARB_shader_objects, GL_EXTENSION_COUNT }},
+    { "glUniform1i", glUniform1i, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glUniform1i64ARB", glUniform1i64ARB, 0, 0, { GL_ARB_gpu_shader_int64, GL_EXTENSION_COUNT }},
+    { "glUniform1i64NV", glUniform1i64NV, 0, 0, { GL_AMD_gpu_shader_int64, GL_NV_gpu_shader5, GL_EXTENSION_COUNT }},
+    { "glUniform1i64vARB", glUniform1i64vARB, 0, 0, { GL_ARB_gpu_shader_int64, GL_EXTENSION_COUNT }},
+    { "glUniform1i64vNV", glUniform1i64vNV, 0, 0, { GL_AMD_gpu_shader_int64, GL_NV_gpu_shader5, GL_EXTENSION_COUNT }},
+    { "glUniform1iARB", glUniform1iARB, 0, 0, { GL_ARB_shader_objects, GL_EXTENSION_COUNT }},
+    { "glUniform1iv", glUniform1iv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glUniform1ivARB", glUniform1ivARB, 0, 0, { GL_ARB_shader_objects, GL_EXTENSION_COUNT }},
+    { "glUniform1ui", glUniform1ui, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glUniform1ui64ARB", glUniform1ui64ARB, 0, 0, { GL_ARB_gpu_shader_int64, GL_EXTENSION_COUNT }},
+    { "glUniform1ui64NV", glUniform1ui64NV, 0, 0, { GL_AMD_gpu_shader_int64, GL_NV_gpu_shader5, GL_EXTENSION_COUNT }},
+    { "glUniform1ui64vARB", glUniform1ui64vARB, 0, 0, { GL_ARB_gpu_shader_int64, GL_EXTENSION_COUNT }},
+    { "glUniform1ui64vNV", glUniform1ui64vNV, 0, 0, { GL_AMD_gpu_shader_int64, GL_NV_gpu_shader5, GL_EXTENSION_COUNT }},
+    { "glUniform1uiEXT", glUniform1uiEXT, 0, 0, { GL_EXT_gpu_shader4, GL_EXTENSION_COUNT }},
+    { "glUniform1uiv", glUniform1uiv, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glUniform1uivEXT", glUniform1uivEXT, 0, 0, { GL_EXT_gpu_shader4, GL_EXTENSION_COUNT }},
+    { "glUniform2d", glUniform2d, 4, 0, { GL_ARB_gpu_shader_fp64, GL_EXTENSION_COUNT }},
+    { "glUniform2dv", glUniform2dv, 4, 0, { GL_ARB_gpu_shader_fp64, GL_EXTENSION_COUNT }},
+    { "glUniform2f", glUniform2f, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glUniform2fARB", glUniform2fARB, 0, 0, { GL_ARB_shader_objects, GL_EXTENSION_COUNT }},
+    { "glUniform2fv", glUniform2fv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glUniform2fvARB", glUniform2fvARB, 0, 0, { GL_ARB_shader_objects, GL_EXTENSION_COUNT }},
+    { "glUniform2i", glUniform2i, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glUniform2i64ARB", glUniform2i64ARB, 0, 0, { GL_ARB_gpu_shader_int64, GL_EXTENSION_COUNT }},
+    { "glUniform2i64NV", glUniform2i64NV, 0, 0, { GL_AMD_gpu_shader_int64, GL_NV_gpu_shader5, GL_EXTENSION_COUNT }},
+    { "glUniform2i64vARB", glUniform2i64vARB, 0, 0, { GL_ARB_gpu_shader_int64, GL_EXTENSION_COUNT }},
+    { "glUniform2i64vNV", glUniform2i64vNV, 0, 0, { GL_AMD_gpu_shader_int64, GL_NV_gpu_shader5, GL_EXTENSION_COUNT }},
+    { "glUniform2iARB", glUniform2iARB, 0, 0, { GL_ARB_shader_objects, GL_EXTENSION_COUNT }},
+    { "glUniform2iv", glUniform2iv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glUniform2ivARB", glUniform2ivARB, 0, 0, { GL_ARB_shader_objects, GL_EXTENSION_COUNT }},
+    { "glUniform2ui", glUniform2ui, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glUniform2ui64ARB", glUniform2ui64ARB, 0, 0, { GL_ARB_gpu_shader_int64, GL_EXTENSION_COUNT }},
+    { "glUniform2ui64NV", glUniform2ui64NV, 0, 0, { GL_AMD_gpu_shader_int64, GL_NV_gpu_shader5, GL_EXTENSION_COUNT }},
+    { "glUniform2ui64vARB", glUniform2ui64vARB, 0, 0, { GL_ARB_gpu_shader_int64, GL_EXTENSION_COUNT }},
+    { "glUniform2ui64vNV", glUniform2ui64vNV, 0, 0, { GL_AMD_gpu_shader_int64, GL_NV_gpu_shader5, GL_EXTENSION_COUNT }},
+    { "glUniform2uiEXT", glUniform2uiEXT, 0, 0, { GL_EXT_gpu_shader4, GL_EXTENSION_COUNT }},
+    { "glUniform2uiv", glUniform2uiv, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glUniform2uivEXT", glUniform2uivEXT, 0, 0, { GL_EXT_gpu_shader4, GL_EXTENSION_COUNT }},
+    { "glUniform3d", glUniform3d, 4, 0, { GL_ARB_gpu_shader_fp64, GL_EXTENSION_COUNT }},
+    { "glUniform3dv", glUniform3dv, 4, 0, { GL_ARB_gpu_shader_fp64, GL_EXTENSION_COUNT }},
+    { "glUniform3f", glUniform3f, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glUniform3fARB", glUniform3fARB, 0, 0, { GL_ARB_shader_objects, GL_EXTENSION_COUNT }},
+    { "glUniform3fv", glUniform3fv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glUniform3fvARB", glUniform3fvARB, 0, 0, { GL_ARB_shader_objects, GL_EXTENSION_COUNT }},
+    { "glUniform3i", glUniform3i, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glUniform3i64ARB", glUniform3i64ARB, 0, 0, { GL_ARB_gpu_shader_int64, GL_EXTENSION_COUNT }},
+    { "glUniform3i64NV", glUniform3i64NV, 0, 0, { GL_AMD_gpu_shader_int64, GL_NV_gpu_shader5, GL_EXTENSION_COUNT }},
+    { "glUniform3i64vARB", glUniform3i64vARB, 0, 0, { GL_ARB_gpu_shader_int64, GL_EXTENSION_COUNT }},
+    { "glUniform3i64vNV", glUniform3i64vNV, 0, 0, { GL_AMD_gpu_shader_int64, GL_NV_gpu_shader5, GL_EXTENSION_COUNT }},
+    { "glUniform3iARB", glUniform3iARB, 0, 0, { GL_ARB_shader_objects, GL_EXTENSION_COUNT }},
+    { "glUniform3iv", glUniform3iv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glUniform3ivARB", glUniform3ivARB, 0, 0, { GL_ARB_shader_objects, GL_EXTENSION_COUNT }},
+    { "glUniform3ui", glUniform3ui, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glUniform3ui64ARB", glUniform3ui64ARB, 0, 0, { GL_ARB_gpu_shader_int64, GL_EXTENSION_COUNT }},
+    { "glUniform3ui64NV", glUniform3ui64NV, 0, 0, { GL_AMD_gpu_shader_int64, GL_NV_gpu_shader5, GL_EXTENSION_COUNT }},
+    { "glUniform3ui64vARB", glUniform3ui64vARB, 0, 0, { GL_ARB_gpu_shader_int64, GL_EXTENSION_COUNT }},
+    { "glUniform3ui64vNV", glUniform3ui64vNV, 0, 0, { GL_AMD_gpu_shader_int64, GL_NV_gpu_shader5, GL_EXTENSION_COUNT }},
+    { "glUniform3uiEXT", glUniform3uiEXT, 0, 0, { GL_EXT_gpu_shader4, GL_EXTENSION_COUNT }},
+    { "glUniform3uiv", glUniform3uiv, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glUniform3uivEXT", glUniform3uivEXT, 0, 0, { GL_EXT_gpu_shader4, GL_EXTENSION_COUNT }},
+    { "glUniform4d", glUniform4d, 4, 0, { GL_ARB_gpu_shader_fp64, GL_EXTENSION_COUNT }},
+    { "glUniform4dv", glUniform4dv, 4, 0, { GL_ARB_gpu_shader_fp64, GL_EXTENSION_COUNT }},
+    { "glUniform4f", glUniform4f, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glUniform4fARB", glUniform4fARB, 0, 0, { GL_ARB_shader_objects, GL_EXTENSION_COUNT }},
+    { "glUniform4fv", glUniform4fv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glUniform4fvARB", glUniform4fvARB, 0, 0, { GL_ARB_shader_objects, GL_EXTENSION_COUNT }},
+    { "glUniform4i", glUniform4i, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glUniform4i64ARB", glUniform4i64ARB, 0, 0, { GL_ARB_gpu_shader_int64, GL_EXTENSION_COUNT }},
+    { "glUniform4i64NV", glUniform4i64NV, 0, 0, { GL_AMD_gpu_shader_int64, GL_NV_gpu_shader5, GL_EXTENSION_COUNT }},
+    { "glUniform4i64vARB", glUniform4i64vARB, 0, 0, { GL_ARB_gpu_shader_int64, GL_EXTENSION_COUNT }},
+    { "glUniform4i64vNV", glUniform4i64vNV, 0, 0, { GL_AMD_gpu_shader_int64, GL_NV_gpu_shader5, GL_EXTENSION_COUNT }},
+    { "glUniform4iARB", glUniform4iARB, 0, 0, { GL_ARB_shader_objects, GL_EXTENSION_COUNT }},
+    { "glUniform4iv", glUniform4iv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glUniform4ivARB", glUniform4ivARB, 0, 0, { GL_ARB_shader_objects, GL_EXTENSION_COUNT }},
+    { "glUniform4ui", glUniform4ui, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glUniform4ui64ARB", glUniform4ui64ARB, 0, 0, { GL_ARB_gpu_shader_int64, GL_EXTENSION_COUNT }},
+    { "glUniform4ui64NV", glUniform4ui64NV, 0, 0, { GL_AMD_gpu_shader_int64, GL_NV_gpu_shader5, GL_EXTENSION_COUNT }},
+    { "glUniform4ui64vARB", glUniform4ui64vARB, 0, 0, { GL_ARB_gpu_shader_int64, GL_EXTENSION_COUNT }},
+    { "glUniform4ui64vNV", glUniform4ui64vNV, 0, 0, { GL_AMD_gpu_shader_int64, GL_NV_gpu_shader5, GL_EXTENSION_COUNT }},
+    { "glUniform4uiEXT", glUniform4uiEXT, 0, 0, { GL_EXT_gpu_shader4, GL_EXTENSION_COUNT }},
+    { "glUniform4uiv", glUniform4uiv, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glUniform4uivEXT", glUniform4uivEXT, 0, 0, { GL_EXT_gpu_shader4, GL_EXTENSION_COUNT }},
+    { "glUniformBlockBinding", glUniformBlockBinding, 3, 1, { GL_ARB_uniform_buffer_object, GL_EXTENSION_COUNT }},
+    { "glUniformBufferEXT", glUniformBufferEXT, 0, 0, { GL_EXT_bindable_uniform, GL_EXTENSION_COUNT }},
+    { "glUniformHandleui64ARB", glUniformHandleui64ARB, 0, 0, { GL_ARB_bindless_texture, GL_EXTENSION_COUNT }},
+    { "glUniformHandleui64NV", glUniformHandleui64NV, 0, 0, { GL_NV_bindless_texture, GL_EXTENSION_COUNT }},
+    { "glUniformHandleui64vARB", glUniformHandleui64vARB, 0, 0, { GL_ARB_bindless_texture, GL_EXTENSION_COUNT }},
+    { "glUniformHandleui64vNV", glUniformHandleui64vNV, 0, 0, { GL_NV_bindless_texture, GL_EXTENSION_COUNT }},
+    { "glUniformMatrix2dv", glUniformMatrix2dv, 4, 0, { GL_ARB_gpu_shader_fp64, GL_EXTENSION_COUNT }},
+    { "glUniformMatrix2fv", glUniformMatrix2fv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glUniformMatrix2fvARB", glUniformMatrix2fvARB, 0, 0, { GL_ARB_shader_objects, GL_EXTENSION_COUNT }},
+    { "glUniformMatrix2x3dv", glUniformMatrix2x3dv, 4, 0, { GL_ARB_gpu_shader_fp64, GL_EXTENSION_COUNT }},
+    { "glUniformMatrix2x3fv", glUniformMatrix2x3fv, 2, 1, { GL_EXTENSION_COUNT }},
+    { "glUniformMatrix2x4dv", glUniformMatrix2x4dv, 4, 0, { GL_ARB_gpu_shader_fp64, GL_EXTENSION_COUNT }},
+    { "glUniformMatrix2x4fv", glUniformMatrix2x4fv, 2, 1, { GL_EXTENSION_COUNT }},
+    { "glUniformMatrix3dv", glUniformMatrix3dv, 4, 0, { GL_ARB_gpu_shader_fp64, GL_EXTENSION_COUNT }},
+    { "glUniformMatrix3fv", glUniformMatrix3fv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glUniformMatrix3fvARB", glUniformMatrix3fvARB, 0, 0, { GL_ARB_shader_objects, GL_EXTENSION_COUNT }},
+    { "glUniformMatrix3x2dv", glUniformMatrix3x2dv, 4, 0, { GL_ARB_gpu_shader_fp64, GL_EXTENSION_COUNT }},
+    { "glUniformMatrix3x2fv", glUniformMatrix3x2fv, 2, 1, { GL_EXTENSION_COUNT }},
+    { "glUniformMatrix3x4dv", glUniformMatrix3x4dv, 4, 0, { GL_ARB_gpu_shader_fp64, GL_EXTENSION_COUNT }},
+    { "glUniformMatrix3x4fv", glUniformMatrix3x4fv, 2, 1, { GL_EXTENSION_COUNT }},
+    { "glUniformMatrix4dv", glUniformMatrix4dv, 4, 0, { GL_ARB_gpu_shader_fp64, GL_EXTENSION_COUNT }},
+    { "glUniformMatrix4fv", glUniformMatrix4fv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glUniformMatrix4fvARB", glUniformMatrix4fvARB, 0, 0, { GL_ARB_shader_objects, GL_EXTENSION_COUNT }},
+    { "glUniformMatrix4x2dv", glUniformMatrix4x2dv, 4, 0, { GL_ARB_gpu_shader_fp64, GL_EXTENSION_COUNT }},
+    { "glUniformMatrix4x2fv", glUniformMatrix4x2fv, 2, 1, { GL_EXTENSION_COUNT }},
+    { "glUniformMatrix4x3dv", glUniformMatrix4x3dv, 4, 0, { GL_ARB_gpu_shader_fp64, GL_EXTENSION_COUNT }},
+    { "glUniformMatrix4x3fv", glUniformMatrix4x3fv, 2, 1, { GL_EXTENSION_COUNT }},
+    { "glUniformSubroutinesuiv", glUniformSubroutinesuiv, 4, 0, { GL_ARB_shader_subroutine, GL_EXTENSION_COUNT }},
+    { "glUniformui64NV", glUniformui64NV, 0, 0, { GL_NV_shader_buffer_load, GL_EXTENSION_COUNT }},
+    { "glUniformui64vNV", glUniformui64vNV, 0, 0, { GL_NV_shader_buffer_load, GL_EXTENSION_COUNT }},
+    { "glUnlockArraysEXT", glUnlockArraysEXT, 0, 0, { GL_EXT_compiled_vertex_array, GL_EXTENSION_COUNT }},
+    { "glUnmapBuffer", glUnmapBuffer, 1, 5, { GL_EXTENSION_COUNT }},
+    { "glUnmapBufferARB", glUnmapBufferARB, 0, 0, { GL_ARB_vertex_buffer_object, GL_EXTENSION_COUNT }},
+    { "glUnmapNamedBuffer", glUnmapNamedBuffer, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glUnmapNamedBufferEXT", glUnmapNamedBufferEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glUnmapObjectBufferATI", glUnmapObjectBufferATI, 0, 0, { GL_ATI_map_object_buffer, GL_EXTENSION_COUNT }},
+    { "glUnmapTexture2DINTEL", glUnmapTexture2DINTEL, 0, 0, { GL_INTEL_map_texture, GL_EXTENSION_COUNT }},
+    { "glUpdateObjectBufferATI", glUpdateObjectBufferATI, 0, 0, { GL_ATI_vertex_array_object, GL_EXTENSION_COUNT }},
+    { "glUploadGpuMaskNVX", glUploadGpuMaskNVX, 0, 0, { GL_NVX_gpu_multicast2, GL_EXTENSION_COUNT }},
+    { "glUseProgram", glUseProgram, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glUseProgramObjectARB", glUseProgramObjectARB, 0, 0, { GL_ARB_shader_objects, GL_EXTENSION_COUNT }},
+    { "glUseProgramStages", glUseProgramStages, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glUseShaderProgramEXT", glUseShaderProgramEXT, 0, 0, { GL_EXT_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glVDPAUFiniNV", glVDPAUFiniNV, 0, 0, { GL_NV_vdpau_interop, GL_EXTENSION_COUNT }},
+    { "glVDPAUGetSurfaceivNV", glVDPAUGetSurfaceivNV, 0, 0, { GL_NV_vdpau_interop, GL_EXTENSION_COUNT }},
+    { "glVDPAUInitNV", glVDPAUInitNV, 0, 0, { GL_NV_vdpau_interop, GL_EXTENSION_COUNT }},
+    { "glVDPAUIsSurfaceNV", glVDPAUIsSurfaceNV, 0, 0, { GL_NV_vdpau_interop, GL_EXTENSION_COUNT }},
+    { "glVDPAUMapSurfacesNV", glVDPAUMapSurfacesNV, 0, 0, { GL_NV_vdpau_interop, GL_EXTENSION_COUNT }},
+    { "glVDPAURegisterOutputSurfaceNV", glVDPAURegisterOutputSurfaceNV, 0, 0, { GL_NV_vdpau_interop, GL_EXTENSION_COUNT }},
+    { "glVDPAURegisterVideoSurfaceNV", glVDPAURegisterVideoSurfaceNV, 0, 0, { GL_NV_vdpau_interop, GL_EXTENSION_COUNT }},
+    { "glVDPAURegisterVideoSurfaceWithPictureStructureNV", glVDPAURegisterVideoSurfaceWithPictureStructureNV, 0, 0, { GL_NV_vdpau_interop2, GL_EXTENSION_COUNT }},
+    { "glVDPAUSurfaceAccessNV", glVDPAUSurfaceAccessNV, 0, 0, { GL_NV_vdpau_interop, GL_EXTENSION_COUNT }},
+    { "glVDPAUUnmapSurfacesNV", glVDPAUUnmapSurfacesNV, 0, 0, { GL_NV_vdpau_interop, GL_EXTENSION_COUNT }},
+    { "glVDPAUUnregisterSurfaceNV", glVDPAUUnregisterSurfaceNV, 0, 0, { GL_NV_vdpau_interop, GL_EXTENSION_COUNT }},
+    { "glValidateProgram", glValidateProgram, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glValidateProgramARB", glValidateProgramARB, 0, 0, { GL_ARB_shader_objects, GL_EXTENSION_COUNT }},
+    { "glValidateProgramPipeline", glValidateProgramPipeline, 4, 1, { GL_ARB_separate_shader_objects, GL_EXTENSION_COUNT }},
+    { "glVariantArrayObjectATI", glVariantArrayObjectATI, 0, 0, { GL_ATI_vertex_array_object, GL_EXTENSION_COUNT }},
+    { "glVariantPointerEXT", glVariantPointerEXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVariantbvEXT", glVariantbvEXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVariantdvEXT", glVariantdvEXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVariantfvEXT", glVariantfvEXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVariantivEXT", glVariantivEXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVariantsvEXT", glVariantsvEXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVariantubvEXT", glVariantubvEXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVariantuivEXT", glVariantuivEXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVariantusvEXT", glVariantusvEXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVertex2bOES", glVertex2bOES, 0, 0, { GL_OES_byte_coordinates, GL_EXTENSION_COUNT }},
+    { "glVertex2bvOES", glVertex2bvOES, 0, 0, { GL_OES_byte_coordinates, GL_EXTENSION_COUNT }},
+    { "glVertex2hNV", glVertex2hNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glVertex2hvNV", glVertex2hvNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glVertex2xOES", glVertex2xOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glVertex2xvOES", glVertex2xvOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glVertex3bOES", glVertex3bOES, 0, 0, { GL_OES_byte_coordinates, GL_EXTENSION_COUNT }},
+    { "glVertex3bvOES", glVertex3bvOES, 0, 0, { GL_OES_byte_coordinates, GL_EXTENSION_COUNT }},
+    { "glVertex3hNV", glVertex3hNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glVertex3hvNV", glVertex3hvNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glVertex3xOES", glVertex3xOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glVertex3xvOES", glVertex3xvOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glVertex4bOES", glVertex4bOES, 0, 0, { GL_OES_byte_coordinates, GL_EXTENSION_COUNT }},
+    { "glVertex4bvOES", glVertex4bvOES, 0, 0, { GL_OES_byte_coordinates, GL_EXTENSION_COUNT }},
+    { "glVertex4hNV", glVertex4hNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glVertex4hvNV", glVertex4hvNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glVertex4xOES", glVertex4xOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glVertex4xvOES", glVertex4xvOES, 0, 0, { GL_OES_fixed_point, GL_EXTENSION_COUNT }},
+    { "glVertexArrayAttribBinding", glVertexArrayAttribBinding, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glVertexArrayAttribFormat", glVertexArrayAttribFormat, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glVertexArrayAttribIFormat", glVertexArrayAttribIFormat, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glVertexArrayAttribLFormat", glVertexArrayAttribLFormat, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glVertexArrayBindVertexBufferEXT", glVertexArrayBindVertexBufferEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glVertexArrayBindingDivisor", glVertexArrayBindingDivisor, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glVertexArrayColorOffsetEXT", glVertexArrayColorOffsetEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glVertexArrayEdgeFlagOffsetEXT", glVertexArrayEdgeFlagOffsetEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glVertexArrayElementBuffer", glVertexArrayElementBuffer, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glVertexArrayFogCoordOffsetEXT", glVertexArrayFogCoordOffsetEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glVertexArrayIndexOffsetEXT", glVertexArrayIndexOffsetEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glVertexArrayMultiTexCoordOffsetEXT", glVertexArrayMultiTexCoordOffsetEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glVertexArrayNormalOffsetEXT", glVertexArrayNormalOffsetEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glVertexArrayParameteriAPPLE", glVertexArrayParameteriAPPLE, 0, 0, { GL_APPLE_vertex_array_range, GL_EXTENSION_COUNT }},
+    { "glVertexArrayRangeAPPLE", glVertexArrayRangeAPPLE, 0, 0, { GL_APPLE_vertex_array_range, GL_EXTENSION_COUNT }},
+    { "glVertexArrayRangeNV", glVertexArrayRangeNV, 0, 0, { GL_NV_vertex_array_range, GL_EXTENSION_COUNT }},
+    { "glVertexArraySecondaryColorOffsetEXT", glVertexArraySecondaryColorOffsetEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glVertexArrayTexCoordOffsetEXT", glVertexArrayTexCoordOffsetEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glVertexArrayVertexAttribBindingEXT", glVertexArrayVertexAttribBindingEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glVertexArrayVertexAttribDivisorEXT", glVertexArrayVertexAttribDivisorEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glVertexArrayVertexAttribFormatEXT", glVertexArrayVertexAttribFormatEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glVertexArrayVertexAttribIFormatEXT", glVertexArrayVertexAttribIFormatEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glVertexArrayVertexAttribIOffsetEXT", glVertexArrayVertexAttribIOffsetEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glVertexArrayVertexAttribLFormatEXT", glVertexArrayVertexAttribLFormatEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glVertexArrayVertexAttribLOffsetEXT", glVertexArrayVertexAttribLOffsetEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glVertexArrayVertexAttribOffsetEXT", glVertexArrayVertexAttribOffsetEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glVertexArrayVertexBindingDivisorEXT", glVertexArrayVertexBindingDivisorEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glVertexArrayVertexBuffer", glVertexArrayVertexBuffer, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glVertexArrayVertexBuffers", glVertexArrayVertexBuffers, 4, 5, { GL_ARB_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glVertexArrayVertexOffsetEXT", glVertexArrayVertexOffsetEXT, 0, 0, { GL_EXT_direct_state_access, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib1d", glVertexAttrib1d, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttrib1dARB", glVertexAttrib1dARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib1dNV", glVertexAttrib1dNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib1dv", glVertexAttrib1dv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttrib1dvARB", glVertexAttrib1dvARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib1dvNV", glVertexAttrib1dvNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib1f", glVertexAttrib1f, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttrib1fARB", glVertexAttrib1fARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib1fNV", glVertexAttrib1fNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib1fv", glVertexAttrib1fv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttrib1fvARB", glVertexAttrib1fvARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib1fvNV", glVertexAttrib1fvNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib1hNV", glVertexAttrib1hNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib1hvNV", glVertexAttrib1hvNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib1s", glVertexAttrib1s, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttrib1sARB", glVertexAttrib1sARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib1sNV", glVertexAttrib1sNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib1sv", glVertexAttrib1sv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttrib1svARB", glVertexAttrib1svARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib1svNV", glVertexAttrib1svNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib2d", glVertexAttrib2d, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttrib2dARB", glVertexAttrib2dARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib2dNV", glVertexAttrib2dNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib2dv", glVertexAttrib2dv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttrib2dvARB", glVertexAttrib2dvARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib2dvNV", glVertexAttrib2dvNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib2f", glVertexAttrib2f, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttrib2fARB", glVertexAttrib2fARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib2fNV", glVertexAttrib2fNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib2fv", glVertexAttrib2fv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttrib2fvARB", glVertexAttrib2fvARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib2fvNV", glVertexAttrib2fvNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib2hNV", glVertexAttrib2hNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib2hvNV", glVertexAttrib2hvNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib2s", glVertexAttrib2s, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttrib2sARB", glVertexAttrib2sARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib2sNV", glVertexAttrib2sNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib2sv", glVertexAttrib2sv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttrib2svARB", glVertexAttrib2svARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib2svNV", glVertexAttrib2svNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib3d", glVertexAttrib3d, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttrib3dARB", glVertexAttrib3dARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib3dNV", glVertexAttrib3dNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib3dv", glVertexAttrib3dv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttrib3dvARB", glVertexAttrib3dvARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib3dvNV", glVertexAttrib3dvNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib3f", glVertexAttrib3f, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttrib3fARB", glVertexAttrib3fARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib3fNV", glVertexAttrib3fNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib3fv", glVertexAttrib3fv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttrib3fvARB", glVertexAttrib3fvARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib3fvNV", glVertexAttrib3fvNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib3hNV", glVertexAttrib3hNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib3hvNV", glVertexAttrib3hvNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib3s", glVertexAttrib3s, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttrib3sARB", glVertexAttrib3sARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib3sNV", glVertexAttrib3sNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib3sv", glVertexAttrib3sv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttrib3svARB", glVertexAttrib3svARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib3svNV", glVertexAttrib3svNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4Nbv", glVertexAttrib4Nbv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4NbvARB", glVertexAttrib4NbvARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4Niv", glVertexAttrib4Niv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4NivARB", glVertexAttrib4NivARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4Nsv", glVertexAttrib4Nsv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4NsvARB", glVertexAttrib4NsvARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4Nub", glVertexAttrib4Nub, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4NubARB", glVertexAttrib4NubARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4Nubv", glVertexAttrib4Nubv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4NubvARB", glVertexAttrib4NubvARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4Nuiv", glVertexAttrib4Nuiv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4NuivARB", glVertexAttrib4NuivARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4Nusv", glVertexAttrib4Nusv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4NusvARB", glVertexAttrib4NusvARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4bv", glVertexAttrib4bv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4bvARB", glVertexAttrib4bvARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4d", glVertexAttrib4d, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4dARB", glVertexAttrib4dARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4dNV", glVertexAttrib4dNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4dv", glVertexAttrib4dv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4dvARB", glVertexAttrib4dvARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4dvNV", glVertexAttrib4dvNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4f", glVertexAttrib4f, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4fARB", glVertexAttrib4fARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4fNV", glVertexAttrib4fNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4fv", glVertexAttrib4fv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4fvARB", glVertexAttrib4fvARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4fvNV", glVertexAttrib4fvNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4hNV", glVertexAttrib4hNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4hvNV", glVertexAttrib4hvNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4iv", glVertexAttrib4iv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4ivARB", glVertexAttrib4ivARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4s", glVertexAttrib4s, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4sARB", glVertexAttrib4sARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4sNV", glVertexAttrib4sNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4sv", glVertexAttrib4sv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4svARB", glVertexAttrib4svARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4svNV", glVertexAttrib4svNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4ubNV", glVertexAttrib4ubNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4ubv", glVertexAttrib4ubv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4ubvARB", glVertexAttrib4ubvARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4ubvNV", glVertexAttrib4ubvNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4uiv", glVertexAttrib4uiv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4uivARB", glVertexAttrib4uivARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4usv", glVertexAttrib4usv, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttrib4usvARB", glVertexAttrib4usvARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVertexAttribArrayObjectATI", glVertexAttribArrayObjectATI, 0, 0, { GL_ATI_vertex_attrib_array_object, GL_EXTENSION_COUNT }},
+    { "glVertexAttribBinding", glVertexAttribBinding, 4, 3, { GL_ARB_vertex_attrib_binding, GL_EXTENSION_COUNT }},
+    { "glVertexAttribDivisor", glVertexAttribDivisor, 3, 3, { GL_EXTENSION_COUNT }},
+    { "glVertexAttribDivisorARB", glVertexAttribDivisorARB, 0, 0, { GL_ARB_instanced_arrays, GL_EXTENSION_COUNT }},
+    { "glVertexAttribFormat", glVertexAttribFormat, 4, 3, { GL_ARB_vertex_attrib_binding, GL_EXTENSION_COUNT }},
+    { "glVertexAttribFormatNV", glVertexAttribFormatNV, 0, 0, { GL_NV_vertex_buffer_unified_memory, GL_EXTENSION_COUNT }},
+    { "glVertexAttribI1i", glVertexAttribI1i, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttribI1iEXT", glVertexAttribI1iEXT, 0, 0, { GL_EXT_gpu_shader4, GL_NV_vertex_program4, GL_EXTENSION_COUNT }},
+    { "glVertexAttribI1iv", glVertexAttribI1iv, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttribI1ivEXT", glVertexAttribI1ivEXT, 0, 0, { GL_EXT_gpu_shader4, GL_NV_vertex_program4, GL_EXTENSION_COUNT }},
+    { "glVertexAttribI1ui", glVertexAttribI1ui, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttribI1uiEXT", glVertexAttribI1uiEXT, 0, 0, { GL_EXT_gpu_shader4, GL_NV_vertex_program4, GL_EXTENSION_COUNT }},
+    { "glVertexAttribI1uiv", glVertexAttribI1uiv, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttribI1uivEXT", glVertexAttribI1uivEXT, 0, 0, { GL_EXT_gpu_shader4, GL_NV_vertex_program4, GL_EXTENSION_COUNT }},
+    { "glVertexAttribI2i", glVertexAttribI2i, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttribI2iEXT", glVertexAttribI2iEXT, 0, 0, { GL_EXT_gpu_shader4, GL_NV_vertex_program4, GL_EXTENSION_COUNT }},
+    { "glVertexAttribI2iv", glVertexAttribI2iv, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttribI2ivEXT", glVertexAttribI2ivEXT, 0, 0, { GL_EXT_gpu_shader4, GL_NV_vertex_program4, GL_EXTENSION_COUNT }},
+    { "glVertexAttribI2ui", glVertexAttribI2ui, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttribI2uiEXT", glVertexAttribI2uiEXT, 0, 0, { GL_EXT_gpu_shader4, GL_NV_vertex_program4, GL_EXTENSION_COUNT }},
+    { "glVertexAttribI2uiv", glVertexAttribI2uiv, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttribI2uivEXT", glVertexAttribI2uivEXT, 0, 0, { GL_EXT_gpu_shader4, GL_NV_vertex_program4, GL_EXTENSION_COUNT }},
+    { "glVertexAttribI3i", glVertexAttribI3i, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttribI3iEXT", glVertexAttribI3iEXT, 0, 0, { GL_EXT_gpu_shader4, GL_NV_vertex_program4, GL_EXTENSION_COUNT }},
+    { "glVertexAttribI3iv", glVertexAttribI3iv, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttribI3ivEXT", glVertexAttribI3ivEXT, 0, 0, { GL_EXT_gpu_shader4, GL_NV_vertex_program4, GL_EXTENSION_COUNT }},
+    { "glVertexAttribI3ui", glVertexAttribI3ui, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttribI3uiEXT", glVertexAttribI3uiEXT, 0, 0, { GL_EXT_gpu_shader4, GL_NV_vertex_program4, GL_EXTENSION_COUNT }},
+    { "glVertexAttribI3uiv", glVertexAttribI3uiv, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttribI3uivEXT", glVertexAttribI3uivEXT, 0, 0, { GL_EXT_gpu_shader4, GL_NV_vertex_program4, GL_EXTENSION_COUNT }},
+    { "glVertexAttribI4bv", glVertexAttribI4bv, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttribI4bvEXT", glVertexAttribI4bvEXT, 0, 0, { GL_EXT_gpu_shader4, GL_NV_vertex_program4, GL_EXTENSION_COUNT }},
+    { "glVertexAttribI4i", glVertexAttribI4i, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttribI4iEXT", glVertexAttribI4iEXT, 0, 0, { GL_EXT_gpu_shader4, GL_NV_vertex_program4, GL_EXTENSION_COUNT }},
+    { "glVertexAttribI4iv", glVertexAttribI4iv, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttribI4ivEXT", glVertexAttribI4ivEXT, 0, 0, { GL_EXT_gpu_shader4, GL_NV_vertex_program4, GL_EXTENSION_COUNT }},
+    { "glVertexAttribI4sv", glVertexAttribI4sv, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttribI4svEXT", glVertexAttribI4svEXT, 0, 0, { GL_EXT_gpu_shader4, GL_NV_vertex_program4, GL_EXTENSION_COUNT }},
+    { "glVertexAttribI4ubv", glVertexAttribI4ubv, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttribI4ubvEXT", glVertexAttribI4ubvEXT, 0, 0, { GL_EXT_gpu_shader4, GL_NV_vertex_program4, GL_EXTENSION_COUNT }},
+    { "glVertexAttribI4ui", glVertexAttribI4ui, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttribI4uiEXT", glVertexAttribI4uiEXT, 0, 0, { GL_EXT_gpu_shader4, GL_NV_vertex_program4, GL_EXTENSION_COUNT }},
+    { "glVertexAttribI4uiv", glVertexAttribI4uiv, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttribI4uivEXT", glVertexAttribI4uivEXT, 0, 0, { GL_EXT_gpu_shader4, GL_NV_vertex_program4, GL_EXTENSION_COUNT }},
+    { "glVertexAttribI4usv", glVertexAttribI4usv, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttribI4usvEXT", glVertexAttribI4usvEXT, 0, 0, { GL_EXT_gpu_shader4, GL_NV_vertex_program4, GL_EXTENSION_COUNT }},
+    { "glVertexAttribIFormat", glVertexAttribIFormat, 4, 3, { GL_ARB_vertex_attrib_binding, GL_EXTENSION_COUNT }},
+    { "glVertexAttribIFormatNV", glVertexAttribIFormatNV, 0, 0, { GL_NV_vertex_buffer_unified_memory, GL_EXTENSION_COUNT }},
+    { "glVertexAttribIPointer", glVertexAttribIPointer, 3, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttribIPointerEXT", glVertexAttribIPointerEXT, 0, 0, { GL_EXT_gpu_shader4, GL_NV_vertex_program4, GL_EXTENSION_COUNT }},
+    { "glVertexAttribL1d", glVertexAttribL1d, 4, 1, { GL_ARB_vertex_attrib_64bit, GL_EXTENSION_COUNT }},
+    { "glVertexAttribL1dEXT", glVertexAttribL1dEXT, 0, 0, { GL_EXT_vertex_attrib_64bit, GL_EXTENSION_COUNT }},
+    { "glVertexAttribL1dv", glVertexAttribL1dv, 4, 1, { GL_ARB_vertex_attrib_64bit, GL_EXTENSION_COUNT }},
+    { "glVertexAttribL1dvEXT", glVertexAttribL1dvEXT, 0, 0, { GL_EXT_vertex_attrib_64bit, GL_EXTENSION_COUNT }},
+    { "glVertexAttribL1i64NV", glVertexAttribL1i64NV, 0, 0, { GL_NV_vertex_attrib_integer_64bit, GL_EXTENSION_COUNT }},
+    { "glVertexAttribL1i64vNV", glVertexAttribL1i64vNV, 0, 0, { GL_NV_vertex_attrib_integer_64bit, GL_EXTENSION_COUNT }},
+    { "glVertexAttribL1ui64ARB", glVertexAttribL1ui64ARB, 0, 0, { GL_ARB_bindless_texture, GL_EXTENSION_COUNT }},
+    { "glVertexAttribL1ui64NV", glVertexAttribL1ui64NV, 0, 0, { GL_NV_vertex_attrib_integer_64bit, GL_EXTENSION_COUNT }},
+    { "glVertexAttribL1ui64vARB", glVertexAttribL1ui64vARB, 0, 0, { GL_ARB_bindless_texture, GL_EXTENSION_COUNT }},
+    { "glVertexAttribL1ui64vNV", glVertexAttribL1ui64vNV, 0, 0, { GL_NV_vertex_attrib_integer_64bit, GL_EXTENSION_COUNT }},
+    { "glVertexAttribL2d", glVertexAttribL2d, 4, 1, { GL_ARB_vertex_attrib_64bit, GL_EXTENSION_COUNT }},
+    { "glVertexAttribL2dEXT", glVertexAttribL2dEXT, 0, 0, { GL_EXT_vertex_attrib_64bit, GL_EXTENSION_COUNT }},
+    { "glVertexAttribL2dv", glVertexAttribL2dv, 4, 1, { GL_ARB_vertex_attrib_64bit, GL_EXTENSION_COUNT }},
+    { "glVertexAttribL2dvEXT", glVertexAttribL2dvEXT, 0, 0, { GL_EXT_vertex_attrib_64bit, GL_EXTENSION_COUNT }},
+    { "glVertexAttribL2i64NV", glVertexAttribL2i64NV, 0, 0, { GL_NV_vertex_attrib_integer_64bit, GL_EXTENSION_COUNT }},
+    { "glVertexAttribL2i64vNV", glVertexAttribL2i64vNV, 0, 0, { GL_NV_vertex_attrib_integer_64bit, GL_EXTENSION_COUNT }},
+    { "glVertexAttribL2ui64NV", glVertexAttribL2ui64NV, 0, 0, { GL_NV_vertex_attrib_integer_64bit, GL_EXTENSION_COUNT }},
+    { "glVertexAttribL2ui64vNV", glVertexAttribL2ui64vNV, 0, 0, { GL_NV_vertex_attrib_integer_64bit, GL_EXTENSION_COUNT }},
+    { "glVertexAttribL3d", glVertexAttribL3d, 4, 1, { GL_ARB_vertex_attrib_64bit, GL_EXTENSION_COUNT }},
+    { "glVertexAttribL3dEXT", glVertexAttribL3dEXT, 0, 0, { GL_EXT_vertex_attrib_64bit, GL_EXTENSION_COUNT }},
+    { "glVertexAttribL3dv", glVertexAttribL3dv, 4, 1, { GL_ARB_vertex_attrib_64bit, GL_EXTENSION_COUNT }},
+    { "glVertexAttribL3dvEXT", glVertexAttribL3dvEXT, 0, 0, { GL_EXT_vertex_attrib_64bit, GL_EXTENSION_COUNT }},
+    { "glVertexAttribL3i64NV", glVertexAttribL3i64NV, 0, 0, { GL_NV_vertex_attrib_integer_64bit, GL_EXTENSION_COUNT }},
+    { "glVertexAttribL3i64vNV", glVertexAttribL3i64vNV, 0, 0, { GL_NV_vertex_attrib_integer_64bit, GL_EXTENSION_COUNT }},
+    { "glVertexAttribL3ui64NV", glVertexAttribL3ui64NV, 0, 0, { GL_NV_vertex_attrib_integer_64bit, GL_EXTENSION_COUNT }},
+    { "glVertexAttribL3ui64vNV", glVertexAttribL3ui64vNV, 0, 0, { GL_NV_vertex_attrib_integer_64bit, GL_EXTENSION_COUNT }},
+    { "glVertexAttribL4d", glVertexAttribL4d, 4, 1, { GL_ARB_vertex_attrib_64bit, GL_EXTENSION_COUNT }},
+    { "glVertexAttribL4dEXT", glVertexAttribL4dEXT, 0, 0, { GL_EXT_vertex_attrib_64bit, GL_EXTENSION_COUNT }},
+    { "glVertexAttribL4dv", glVertexAttribL4dv, 4, 1, { GL_ARB_vertex_attrib_64bit, GL_EXTENSION_COUNT }},
+    { "glVertexAttribL4dvEXT", glVertexAttribL4dvEXT, 0, 0, { GL_EXT_vertex_attrib_64bit, GL_EXTENSION_COUNT }},
+    { "glVertexAttribL4i64NV", glVertexAttribL4i64NV, 0, 0, { GL_NV_vertex_attrib_integer_64bit, GL_EXTENSION_COUNT }},
+    { "glVertexAttribL4i64vNV", glVertexAttribL4i64vNV, 0, 0, { GL_NV_vertex_attrib_integer_64bit, GL_EXTENSION_COUNT }},
+    { "glVertexAttribL4ui64NV", glVertexAttribL4ui64NV, 0, 0, { GL_NV_vertex_attrib_integer_64bit, GL_EXTENSION_COUNT }},
+    { "glVertexAttribL4ui64vNV", glVertexAttribL4ui64vNV, 0, 0, { GL_NV_vertex_attrib_integer_64bit, GL_EXTENSION_COUNT }},
+    { "glVertexAttribLFormat", glVertexAttribLFormat, 4, 3, { GL_ARB_vertex_attrib_binding, GL_EXTENSION_COUNT }},
+    { "glVertexAttribLFormatNV", glVertexAttribLFormatNV, 0, 0, { GL_NV_vertex_attrib_integer_64bit, GL_EXTENSION_COUNT }},
+    { "glVertexAttribLPointer", glVertexAttribLPointer, 4, 1, { GL_ARB_vertex_attrib_64bit, GL_EXTENSION_COUNT }},
+    { "glVertexAttribLPointerEXT", glVertexAttribLPointerEXT, 0, 0, { GL_EXT_vertex_attrib_64bit, GL_EXTENSION_COUNT }},
+    { "glVertexAttribP1ui", glVertexAttribP1ui, 3, 3, { GL_ARB_vertex_type_2_10_10_10_rev, GL_EXTENSION_COUNT }},
+    { "glVertexAttribP1uiv", glVertexAttribP1uiv, 3, 3, { GL_ARB_vertex_type_2_10_10_10_rev, GL_EXTENSION_COUNT }},
+    { "glVertexAttribP2ui", glVertexAttribP2ui, 3, 3, { GL_ARB_vertex_type_2_10_10_10_rev, GL_EXTENSION_COUNT }},
+    { "glVertexAttribP2uiv", glVertexAttribP2uiv, 3, 3, { GL_ARB_vertex_type_2_10_10_10_rev, GL_EXTENSION_COUNT }},
+    { "glVertexAttribP3ui", glVertexAttribP3ui, 3, 3, { GL_ARB_vertex_type_2_10_10_10_rev, GL_EXTENSION_COUNT }},
+    { "glVertexAttribP3uiv", glVertexAttribP3uiv, 3, 3, { GL_ARB_vertex_type_2_10_10_10_rev, GL_EXTENSION_COUNT }},
+    { "glVertexAttribP4ui", glVertexAttribP4ui, 3, 3, { GL_ARB_vertex_type_2_10_10_10_rev, GL_EXTENSION_COUNT }},
+    { "glVertexAttribP4uiv", glVertexAttribP4uiv, 3, 3, { GL_ARB_vertex_type_2_10_10_10_rev, GL_EXTENSION_COUNT }},
+    { "glVertexAttribParameteriAMD", glVertexAttribParameteriAMD, 0, 0, { GL_AMD_interleaved_elements, GL_EXTENSION_COUNT }},
+    { "glVertexAttribPointer", glVertexAttribPointer, 2, 0, { GL_EXTENSION_COUNT }},
+    { "glVertexAttribPointerARB", glVertexAttribPointerARB, 0, 0, { GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_EXTENSION_COUNT }},
+    { "glVertexAttribPointerNV", glVertexAttribPointerNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glVertexAttribs1dvNV", glVertexAttribs1dvNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glVertexAttribs1fvNV", glVertexAttribs1fvNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glVertexAttribs1hvNV", glVertexAttribs1hvNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glVertexAttribs1svNV", glVertexAttribs1svNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glVertexAttribs2dvNV", glVertexAttribs2dvNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glVertexAttribs2fvNV", glVertexAttribs2fvNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glVertexAttribs2hvNV", glVertexAttribs2hvNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glVertexAttribs2svNV", glVertexAttribs2svNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glVertexAttribs3dvNV", glVertexAttribs3dvNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glVertexAttribs3fvNV", glVertexAttribs3fvNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glVertexAttribs3hvNV", glVertexAttribs3hvNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glVertexAttribs3svNV", glVertexAttribs3svNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glVertexAttribs4dvNV", glVertexAttribs4dvNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glVertexAttribs4fvNV", glVertexAttribs4fvNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glVertexAttribs4hvNV", glVertexAttribs4hvNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glVertexAttribs4svNV", glVertexAttribs4svNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glVertexAttribs4ubvNV", glVertexAttribs4ubvNV, 0, 0, { GL_NV_vertex_program, GL_EXTENSION_COUNT }},
+    { "glVertexBindingDivisor", glVertexBindingDivisor, 4, 3, { GL_ARB_vertex_attrib_binding, GL_EXTENSION_COUNT }},
+    { "glVertexBlendARB", glVertexBlendARB, 0, 0, { GL_ARB_vertex_blend, GL_EXTENSION_COUNT }},
+    { "glVertexBlendEnvfATI", glVertexBlendEnvfATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glVertexBlendEnviATI", glVertexBlendEnviATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glVertexFormatNV", glVertexFormatNV, 0, 0, { GL_NV_vertex_buffer_unified_memory, GL_EXTENSION_COUNT }},
+    { "glVertexP2ui", glVertexP2ui, 3, 3, { GL_ARB_vertex_type_2_10_10_10_rev, GL_EXTENSION_COUNT }},
+    { "glVertexP2uiv", glVertexP2uiv, 3, 3, { GL_ARB_vertex_type_2_10_10_10_rev, GL_EXTENSION_COUNT }},
+    { "glVertexP3ui", glVertexP3ui, 3, 3, { GL_ARB_vertex_type_2_10_10_10_rev, GL_EXTENSION_COUNT }},
+    { "glVertexP3uiv", glVertexP3uiv, 3, 3, { GL_ARB_vertex_type_2_10_10_10_rev, GL_EXTENSION_COUNT }},
+    { "glVertexP4ui", glVertexP4ui, 3, 3, { GL_ARB_vertex_type_2_10_10_10_rev, GL_EXTENSION_COUNT }},
+    { "glVertexP4uiv", glVertexP4uiv, 3, 3, { GL_ARB_vertex_type_2_10_10_10_rev, GL_EXTENSION_COUNT }},
+    { "glVertexPointerEXT", glVertexPointerEXT, 0, 0, { GL_EXT_vertex_array, GL_EXTENSION_COUNT }},
+    { "glVertexPointerListIBM", glVertexPointerListIBM, 0, 0, { GL_IBM_vertex_array_lists, GL_EXTENSION_COUNT }},
+    { "glVertexPointervINTEL", glVertexPointervINTEL, 0, 0, { GL_INTEL_parallel_arrays, GL_EXTENSION_COUNT }},
+    { "glVertexStream1dATI", glVertexStream1dATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glVertexStream1dvATI", glVertexStream1dvATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glVertexStream1fATI", glVertexStream1fATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glVertexStream1fvATI", glVertexStream1fvATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glVertexStream1iATI", glVertexStream1iATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glVertexStream1ivATI", glVertexStream1ivATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glVertexStream1sATI", glVertexStream1sATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glVertexStream1svATI", glVertexStream1svATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glVertexStream2dATI", glVertexStream2dATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glVertexStream2dvATI", glVertexStream2dvATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glVertexStream2fATI", glVertexStream2fATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glVertexStream2fvATI", glVertexStream2fvATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glVertexStream2iATI", glVertexStream2iATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glVertexStream2ivATI", glVertexStream2ivATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glVertexStream2sATI", glVertexStream2sATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glVertexStream2svATI", glVertexStream2svATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glVertexStream3dATI", glVertexStream3dATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glVertexStream3dvATI", glVertexStream3dvATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glVertexStream3fATI", glVertexStream3fATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glVertexStream3fvATI", glVertexStream3fvATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glVertexStream3iATI", glVertexStream3iATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glVertexStream3ivATI", glVertexStream3ivATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glVertexStream3sATI", glVertexStream3sATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glVertexStream3svATI", glVertexStream3svATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glVertexStream4dATI", glVertexStream4dATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glVertexStream4dvATI", glVertexStream4dvATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glVertexStream4fATI", glVertexStream4fATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glVertexStream4fvATI", glVertexStream4fvATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glVertexStream4iATI", glVertexStream4iATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glVertexStream4ivATI", glVertexStream4ivATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glVertexStream4sATI", glVertexStream4sATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glVertexStream4svATI", glVertexStream4svATI, 0, 0, { GL_ATI_vertex_streams, GL_EXTENSION_COUNT }},
+    { "glVertexWeightPointerEXT", glVertexWeightPointerEXT, 0, 0, { GL_EXT_vertex_weighting, GL_EXTENSION_COUNT }},
+    { "glVertexWeightfEXT", glVertexWeightfEXT, 0, 0, { GL_EXT_vertex_weighting, GL_EXTENSION_COUNT }},
+    { "glVertexWeightfvEXT", glVertexWeightfvEXT, 0, 0, { GL_EXT_vertex_weighting, GL_EXTENSION_COUNT }},
+    { "glVertexWeighthNV", glVertexWeighthNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glVertexWeighthvNV", glVertexWeighthvNV, 0, 0, { GL_NV_half_float, GL_EXTENSION_COUNT }},
+    { "glVideoCaptureNV", glVideoCaptureNV, 0, 0, { GL_NV_video_capture, GL_EXTENSION_COUNT }},
+    { "glVideoCaptureStreamParameterdvNV", glVideoCaptureStreamParameterdvNV, 0, 0, { GL_NV_video_capture, GL_EXTENSION_COUNT }},
+    { "glVideoCaptureStreamParameterfvNV", glVideoCaptureStreamParameterfvNV, 0, 0, { GL_NV_video_capture, GL_EXTENSION_COUNT }},
+    { "glVideoCaptureStreamParameterivNV", glVideoCaptureStreamParameterivNV, 0, 0, { GL_NV_video_capture, GL_EXTENSION_COUNT }},
+    { "glViewportArrayv", glViewportArrayv, 4, 1, { GL_ARB_viewport_array, GL_EXTENSION_COUNT }},
+    { "glViewportIndexedf", glViewportIndexedf, 4, 1, { GL_ARB_viewport_array, GL_EXTENSION_COUNT }},
+    { "glViewportIndexedfv", glViewportIndexedfv, 4, 1, { GL_ARB_viewport_array, GL_EXTENSION_COUNT }},
+    { "glViewportPositionWScaleNV", glViewportPositionWScaleNV, 0, 0, { GL_NV_clip_space_w_scaling, GL_EXTENSION_COUNT }},
+    { "glViewportSwizzleNV", glViewportSwizzleNV, 0, 0, { GL_NV_viewport_swizzle, GL_EXTENSION_COUNT }},
+    { "glWaitSemaphoreEXT", glWaitSemaphoreEXT, 0, 0, { GL_EXT_semaphore, GL_EXTENSION_COUNT }},
+    { "glWaitSemaphoreui64NVX", glWaitSemaphoreui64NVX, 0, 0, { GL_NVX_progress_fence, GL_EXTENSION_COUNT }},
+    { "glWaitSync", glWaitSync, 3, 2, { GL_ARB_sync, GL_EXTENSION_COUNT }},
+    { "glWaitVkSemaphoreNV", glWaitVkSemaphoreNV, 0, 0, { GL_NV_draw_vulkan_image, GL_EXTENSION_COUNT }},
+    { "glWeightPathsNV", glWeightPathsNV, 0, 0, { GL_NV_path_rendering, GL_EXTENSION_COUNT }},
+    { "glWeightPointerARB", glWeightPointerARB, 0, 0, { GL_ARB_vertex_blend, GL_EXTENSION_COUNT }},
+    { "glWeightbvARB", glWeightbvARB, 0, 0, { GL_ARB_vertex_blend, GL_EXTENSION_COUNT }},
+    { "glWeightdvARB", glWeightdvARB, 0, 0, { GL_ARB_vertex_blend, GL_EXTENSION_COUNT }},
+    { "glWeightfvARB", glWeightfvARB, 0, 0, { GL_ARB_vertex_blend, GL_EXTENSION_COUNT }},
+    { "glWeightivARB", glWeightivARB, 0, 0, { GL_ARB_vertex_blend, GL_EXTENSION_COUNT }},
+    { "glWeightsvARB", glWeightsvARB, 0, 0, { GL_ARB_vertex_blend, GL_EXTENSION_COUNT }},
+    { "glWeightubvARB", glWeightubvARB, 0, 0, { GL_ARB_vertex_blend, GL_EXTENSION_COUNT }},
+    { "glWeightuivARB", glWeightuivARB, 0, 0, { GL_ARB_vertex_blend, GL_EXTENSION_COUNT }},
+    { "glWeightusvARB", glWeightusvARB, 0, 0, { GL_ARB_vertex_blend, GL_EXTENSION_COUNT }},
+    { "glWindowPos2d", glWindowPos2d, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glWindowPos2dARB", glWindowPos2dARB, 0, 0, { GL_ARB_window_pos, GL_EXTENSION_COUNT }},
+    { "glWindowPos2dMESA", glWindowPos2dMESA, 0, 0, { GL_MESA_window_pos, GL_EXTENSION_COUNT }},
+    { "glWindowPos2dv", glWindowPos2dv, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glWindowPos2dvARB", glWindowPos2dvARB, 0, 0, { GL_ARB_window_pos, GL_EXTENSION_COUNT }},
+    { "glWindowPos2dvMESA", glWindowPos2dvMESA, 0, 0, { GL_MESA_window_pos, GL_EXTENSION_COUNT }},
+    { "glWindowPos2f", glWindowPos2f, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glWindowPos2fARB", glWindowPos2fARB, 0, 0, { GL_ARB_window_pos, GL_EXTENSION_COUNT }},
+    { "glWindowPos2fMESA", glWindowPos2fMESA, 0, 0, { GL_MESA_window_pos, GL_EXTENSION_COUNT }},
+    { "glWindowPos2fv", glWindowPos2fv, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glWindowPos2fvARB", glWindowPos2fvARB, 0, 0, { GL_ARB_window_pos, GL_EXTENSION_COUNT }},
+    { "glWindowPos2fvMESA", glWindowPos2fvMESA, 0, 0, { GL_MESA_window_pos, GL_EXTENSION_COUNT }},
+    { "glWindowPos2i", glWindowPos2i, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glWindowPos2iARB", glWindowPos2iARB, 0, 0, { GL_ARB_window_pos, GL_EXTENSION_COUNT }},
+    { "glWindowPos2iMESA", glWindowPos2iMESA, 0, 0, { GL_MESA_window_pos, GL_EXTENSION_COUNT }},
+    { "glWindowPos2iv", glWindowPos2iv, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glWindowPos2ivARB", glWindowPos2ivARB, 0, 0, { GL_ARB_window_pos, GL_EXTENSION_COUNT }},
+    { "glWindowPos2ivMESA", glWindowPos2ivMESA, 0, 0, { GL_MESA_window_pos, GL_EXTENSION_COUNT }},
+    { "glWindowPos2s", glWindowPos2s, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glWindowPos2sARB", glWindowPos2sARB, 0, 0, { GL_ARB_window_pos, GL_EXTENSION_COUNT }},
+    { "glWindowPos2sMESA", glWindowPos2sMESA, 0, 0, { GL_MESA_window_pos, GL_EXTENSION_COUNT }},
+    { "glWindowPos2sv", glWindowPos2sv, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glWindowPos2svARB", glWindowPos2svARB, 0, 0, { GL_ARB_window_pos, GL_EXTENSION_COUNT }},
+    { "glWindowPos2svMESA", glWindowPos2svMESA, 0, 0, { GL_MESA_window_pos, GL_EXTENSION_COUNT }},
+    { "glWindowPos3d", glWindowPos3d, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glWindowPos3dARB", glWindowPos3dARB, 0, 0, { GL_ARB_window_pos, GL_EXTENSION_COUNT }},
+    { "glWindowPos3dMESA", glWindowPos3dMESA, 0, 0, { GL_MESA_window_pos, GL_EXTENSION_COUNT }},
+    { "glWindowPos3dv", glWindowPos3dv, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glWindowPos3dvARB", glWindowPos3dvARB, 0, 0, { GL_ARB_window_pos, GL_EXTENSION_COUNT }},
+    { "glWindowPos3dvMESA", glWindowPos3dvMESA, 0, 0, { GL_MESA_window_pos, GL_EXTENSION_COUNT }},
+    { "glWindowPos3f", glWindowPos3f, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glWindowPos3fARB", glWindowPos3fARB, 0, 0, { GL_ARB_window_pos, GL_EXTENSION_COUNT }},
+    { "glWindowPos3fMESA", glWindowPos3fMESA, 0, 0, { GL_MESA_window_pos, GL_EXTENSION_COUNT }},
+    { "glWindowPos3fv", glWindowPos3fv, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glWindowPos3fvARB", glWindowPos3fvARB, 0, 0, { GL_ARB_window_pos, GL_EXTENSION_COUNT }},
+    { "glWindowPos3fvMESA", glWindowPos3fvMESA, 0, 0, { GL_MESA_window_pos, GL_EXTENSION_COUNT }},
+    { "glWindowPos3i", glWindowPos3i, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glWindowPos3iARB", glWindowPos3iARB, 0, 0, { GL_ARB_window_pos, GL_EXTENSION_COUNT }},
+    { "glWindowPos3iMESA", glWindowPos3iMESA, 0, 0, { GL_MESA_window_pos, GL_EXTENSION_COUNT }},
+    { "glWindowPos3iv", glWindowPos3iv, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glWindowPos3ivARB", glWindowPos3ivARB, 0, 0, { GL_ARB_window_pos, GL_EXTENSION_COUNT }},
+    { "glWindowPos3ivMESA", glWindowPos3ivMESA, 0, 0, { GL_MESA_window_pos, GL_EXTENSION_COUNT }},
+    { "glWindowPos3s", glWindowPos3s, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glWindowPos3sARB", glWindowPos3sARB, 0, 0, { GL_ARB_window_pos, GL_EXTENSION_COUNT }},
+    { "glWindowPos3sMESA", glWindowPos3sMESA, 0, 0, { GL_MESA_window_pos, GL_EXTENSION_COUNT }},
+    { "glWindowPos3sv", glWindowPos3sv, 1, 4, { GL_EXTENSION_COUNT }},
+    { "glWindowPos3svARB", glWindowPos3svARB, 0, 0, { GL_ARB_window_pos, GL_EXTENSION_COUNT }},
+    { "glWindowPos3svMESA", glWindowPos3svMESA, 0, 0, { GL_MESA_window_pos, GL_EXTENSION_COUNT }},
+    { "glWindowPos4dMESA", glWindowPos4dMESA, 0, 0, { GL_MESA_window_pos, GL_EXTENSION_COUNT }},
+    { "glWindowPos4dvMESA", glWindowPos4dvMESA, 0, 0, { GL_MESA_window_pos, GL_EXTENSION_COUNT }},
+    { "glWindowPos4fMESA", glWindowPos4fMESA, 0, 0, { GL_MESA_window_pos, GL_EXTENSION_COUNT }},
+    { "glWindowPos4fvMESA", glWindowPos4fvMESA, 0, 0, { GL_MESA_window_pos, GL_EXTENSION_COUNT }},
+    { "glWindowPos4iMESA", glWindowPos4iMESA, 0, 0, { GL_MESA_window_pos, GL_EXTENSION_COUNT }},
+    { "glWindowPos4ivMESA", glWindowPos4ivMESA, 0, 0, { GL_MESA_window_pos, GL_EXTENSION_COUNT }},
+    { "glWindowPos4sMESA", glWindowPos4sMESA, 0, 0, { GL_MESA_window_pos, GL_EXTENSION_COUNT }},
+    { "glWindowPos4svMESA", glWindowPos4svMESA, 0, 0, { GL_MESA_window_pos, GL_EXTENSION_COUNT }},
+    { "glWindowRectanglesEXT", glWindowRectanglesEXT, 0, 0, { GL_EXT_window_rectangles, GL_EXTENSION_COUNT }},
+    { "glWriteMaskEXT", glWriteMaskEXT, 0, 0, { GL_EXT_vertex_shader, GL_EXTENSION_COUNT }},
+    { "wglAllocateMemoryNV", wglAllocateMemoryNV, 0, 0, { WGL_NV_vertex_array_range, GL_EXTENSION_COUNT }},
+    { "wglBindTexImageARB", wglBindTexImageARB, 0, 0, { WGL_ARB_render_texture, GL_EXTENSION_COUNT }},
+    { "wglChoosePixelFormatARB", wglChoosePixelFormatARB, 0, 0, { WGL_ARB_pixel_format, GL_EXTENSION_COUNT }},
+    { "wglCreateContextAttribsARB", wglCreateContextAttribsARB, 0, 0, { WGL_ARB_create_context, GL_EXTENSION_COUNT }},
+    { "wglCreatePbufferARB", wglCreatePbufferARB, 0, 0, { WGL_ARB_pbuffer, GL_EXTENSION_COUNT }},
+    { "wglDestroyPbufferARB", wglDestroyPbufferARB, 0, 0, { WGL_ARB_pbuffer, GL_EXTENSION_COUNT }},
+    { "wglFreeMemoryNV", wglFreeMemoryNV, 0, 0, { WGL_NV_vertex_array_range, GL_EXTENSION_COUNT }},
+    { "wglGetCurrentReadDCARB", wglGetCurrentReadDCARB, 0, 0, { WGL_ARB_make_current_read, GL_EXTENSION_COUNT }},
+    { "wglGetExtensionsStringARB", wglGetExtensionsStringARB, 0, 0, { WGL_ARB_extensions_string, GL_EXTENSION_COUNT }},
+    { "wglGetExtensionsStringEXT", wglGetExtensionsStringEXT, 0, 0, { WGL_EXT_extensions_string, GL_EXTENSION_COUNT }},
+    { "wglGetPbufferDCARB", wglGetPbufferDCARB, 0, 0, { WGL_ARB_pbuffer, GL_EXTENSION_COUNT }},
+    { "wglGetPixelFormatAttribfvARB", wglGetPixelFormatAttribfvARB, 0, 0, { WGL_ARB_pixel_format, GL_EXTENSION_COUNT }},
+    { "wglGetPixelFormatAttribivARB", wglGetPixelFormatAttribivARB, 0, 0, { WGL_ARB_pixel_format, GL_EXTENSION_COUNT }},
+    { "wglGetSwapIntervalEXT", wglGetSwapIntervalEXT, 0, 0, { WGL_EXT_swap_control, GL_EXTENSION_COUNT }},
+    { "wglMakeContextCurrentARB", wglMakeContextCurrentARB, 0, 0, { WGL_ARB_make_current_read, GL_EXTENSION_COUNT }},
+    { "wglQueryCurrentRendererIntegerWINE", wglQueryCurrentRendererIntegerWINE, 0, 0, { WGL_WINE_query_renderer, GL_EXTENSION_COUNT }},
+    { "wglQueryCurrentRendererStringWINE", wglQueryCurrentRendererStringWINE, 0, 0, { WGL_WINE_query_renderer, GL_EXTENSION_COUNT }},
+    { "wglQueryPbufferARB", wglQueryPbufferARB, 0, 0, { WGL_ARB_pbuffer, GL_EXTENSION_COUNT }},
+    { "wglQueryRendererIntegerWINE", wglQueryRendererIntegerWINE, 0, 0, { WGL_WINE_query_renderer, GL_EXTENSION_COUNT }},
+    { "wglQueryRendererStringWINE", wglQueryRendererStringWINE, 0, 0, { WGL_WINE_query_renderer, GL_EXTENSION_COUNT }},
+    { "wglReleasePbufferDCARB", wglReleasePbufferDCARB, 0, 0, { WGL_ARB_pbuffer, GL_EXTENSION_COUNT }},
+    { "wglReleaseTexImageARB", wglReleaseTexImageARB, 0, 0, { WGL_ARB_render_texture, GL_EXTENSION_COUNT }},
+    { "wglSetPbufferAttribARB", wglSetPbufferAttribARB, 0, 0, { WGL_ARB_render_texture, GL_EXTENSION_COUNT }},
+    { "wglSetPixelFormatWINE", wglSetPixelFormatWINE, 0, 0, { WGL_WINE_pixel_format_passthrough, GL_EXTENSION_COUNT }},
+    { "wglSwapIntervalEXT", wglSwapIntervalEXT, 0, 0, { WGL_EXT_swap_control, GL_EXTENSION_COUNT }},
+};
+
+static int registry_entry_cmp( const void *a, const void *b )
+{
+    const struct registry_entry *entry = b;
+    return strcmp( a, entry->name );
+}
+
+struct registry_entry *get_function_entry( const char *name )
+{
+    return bsearch( name, extension_registry, ARRAYSIZE(extension_registry), sizeof(extension_registry[0]), registry_entry_cmp );
+}
diff --git a/dlls/opengl32/unix_private.h b/dlls/opengl32/unix_private.h
index 1eb571e17336..8f05f6218e73 100644
--- a/dlls/opengl32/unix_private.h
+++ b/dlls/opengl32/unix_private.h
@@ -33,16 +33,6 @@
 #include "wine/opengl_driver.h"
 #include "unix_thunks.h"
 
-struct registry_entry
-{
-    const char *name;      /* name of the extension */
-    const char *extension; /* name of the GL/WGL extension */
-    size_t offset;         /* offset in the opengl_funcs table */
-};
-
-extern const struct registry_entry extension_registry[];
-extern const int extension_registry_size;
-
 extern struct opengl_funcs null_opengl_funcs;
 
 static inline const struct opengl_funcs *get_dc_funcs( HDC hdc )
diff --git a/dlls/opengl32/unix_thunks.c b/dlls/opengl32/unix_thunks.c
index 75a8baf0e554..d9874a9803c5 100644
--- a/dlls/opengl32/unix_thunks.c
+++ b/dlls/opengl32/unix_thunks.c
@@ -58,13 +58,6 @@ static NTSTATUS wgl_wglGetPixelFormat( void *args )
     return STATUS_SUCCESS;
 }
 
-static NTSTATUS wgl_wglGetProcAddress( void *args )
-{
-    struct wglGetProcAddress_params *params = args;
-    params->ret = wrap_wglGetProcAddress( params->teb, params->lpszProc );
-    return STATUS_SUCCESS;
-}
-
 static NTSTATUS wgl_wglMakeCurrent( void *args )
 {
     struct wglMakeCurrent_params *params = args;
@@ -201,7 +194,9 @@ static NTSTATUS gl_glCallLists( void *args )
 static NTSTATUS gl_glClear( void *args )
 {
     struct glClear_params *params = args;
-    wrap_glClear( params->teb, params->mask );
+    const struct opengl_funcs *funcs = params->teb->glTable;
+    if (!funcs->p_glClear) return STATUS_NOT_IMPLEMENTED;
+    wrap_glClear( params->teb, params->mask, funcs->p_glClear );
     set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -764,7 +759,9 @@ static NTSTATUS gl_glDrawArrays( void *args )
 static NTSTATUS gl_glDrawBuffer( void *args )
 {
     struct glDrawBuffer_params *params = args;
-    wrap_glDrawBuffer( params->teb, params->buf );
+    const struct opengl_funcs *funcs = params->teb->glTable;
+    if (!funcs->p_glDrawBuffer) return STATUS_NOT_IMPLEMENTED;
+    wrap_glDrawBuffer( params->teb, params->buf, funcs->p_glDrawBuffer );
     set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -782,7 +779,9 @@ static NTSTATUS gl_glDrawElements( void *args )
 static NTSTATUS gl_glDrawPixels( void *args )
 {
     struct glDrawPixels_params *params = args;
-    wrap_glDrawPixels( params->teb, params->width, params->height, params->format, params->type, params->pixels );
+    const struct opengl_funcs *funcs = params->teb->glTable;
+    if (!funcs->p_glDrawPixels) return STATUS_NOT_IMPLEMENTED;
+    wrap_glDrawPixels( params->teb, params->width, params->height, params->format, params->type, params->pixels, funcs->p_glDrawPixels );
     set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -990,7 +989,9 @@ static NTSTATUS gl_glFeedbackBuffer( void *args )
 static NTSTATUS gl_glFinish( void *args )
 {
     struct glFinish_params *params = args;
-    wrap_glFinish( params->teb );
+    const struct opengl_funcs *funcs = params->teb->glTable;
+    if (!funcs->p_glFinish) return STATUS_NOT_IMPLEMENTED;
+    wrap_glFinish( params->teb, funcs->p_glFinish );
     set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -998,7 +999,9 @@ static NTSTATUS gl_glFinish( void *args )
 static NTSTATUS gl_glFlush( void *args )
 {
     struct glFlush_params *params = args;
-    wrap_glFlush( params->teb );
+    const struct opengl_funcs *funcs = params->teb->glTable;
+    if (!funcs->p_glFlush) return STATUS_NOT_IMPLEMENTED;
+    wrap_glFlush( params->teb, funcs->p_glFlush );
     set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -1086,7 +1089,9 @@ static NTSTATUS gl_glGenTextures( void *args )
 static NTSTATUS gl_glGetBooleanv( void *args )
 {
     struct glGetBooleanv_params *params = args;
-    wrap_glGetBooleanv( params->teb, params->pname, params->data );
+    const struct opengl_funcs *funcs = params->teb->glTable;
+    if (!funcs->p_glGetBooleanv) return STATUS_NOT_IMPLEMENTED;
+    wrap_glGetBooleanv( params->teb, params->pname, params->data, funcs->p_glGetBooleanv );
     return STATUS_SUCCESS;
 }
 
@@ -1102,28 +1107,36 @@ static NTSTATUS gl_glGetClipPlane( void *args )
 static NTSTATUS gl_glGetDoublev( void *args )
 {
     struct glGetDoublev_params *params = args;
-    wrap_glGetDoublev( params->teb, params->pname, params->data );
+    const struct opengl_funcs *funcs = params->teb->glTable;
+    if (!funcs->p_glGetDoublev) return STATUS_NOT_IMPLEMENTED;
+    wrap_glGetDoublev( params->teb, params->pname, params->data, funcs->p_glGetDoublev );
     return STATUS_SUCCESS;
 }
 
 static NTSTATUS gl_glGetError( void *args )
 {
     struct glGetError_params *params = args;
-    params->ret = wrap_glGetError( params->teb );
+    const struct opengl_funcs *funcs = params->teb->glTable;
+    if (!funcs->p_glGetError) return STATUS_NOT_IMPLEMENTED;
+    params->ret = wrap_glGetError( params->teb, funcs->p_glGetError );
     return STATUS_SUCCESS;
 }
 
 static NTSTATUS gl_glGetFloatv( void *args )
 {
     struct glGetFloatv_params *params = args;
-    wrap_glGetFloatv( params->teb, params->pname, params->data );
+    const struct opengl_funcs *funcs = params->teb->glTable;
+    if (!funcs->p_glGetFloatv) return STATUS_NOT_IMPLEMENTED;
+    wrap_glGetFloatv( params->teb, params->pname, params->data, funcs->p_glGetFloatv );
     return STATUS_SUCCESS;
 }
 
 static NTSTATUS gl_glGetIntegerv( void *args )
 {
     struct glGetIntegerv_params *params = args;
-    wrap_glGetIntegerv( params->teb, params->pname, params->data );
+    const struct opengl_funcs *funcs = params->teb->glTable;
+    if (!funcs->p_glGetIntegerv) return STATUS_NOT_IMPLEMENTED;
+    wrap_glGetIntegerv( params->teb, params->pname, params->data, funcs->p_glGetIntegerv );
     return STATUS_SUCCESS;
 }
 
@@ -1238,7 +1251,9 @@ static NTSTATUS gl_glGetPolygonStipple( void *args )
 static NTSTATUS gl_glGetString( void *args )
 {
     struct glGetString_params *params = args;
-    params->ret = wrap_glGetString( params->teb, params->name );
+    const struct opengl_funcs *funcs = params->teb->glTable;
+    if (!funcs->p_glGetString) return STATUS_NOT_IMPLEMENTED;
+    params->ret = wrap_glGetString( params->teb, params->name, funcs->p_glGetString );
     return STATUS_SUCCESS;
 }
 
@@ -2412,7 +2427,9 @@ static NTSTATUS gl_glRasterPos4sv( void *args )
 static NTSTATUS gl_glReadBuffer( void *args )
 {
     struct glReadBuffer_params *params = args;
-    wrap_glReadBuffer( params->teb, params->src );
+    const struct opengl_funcs *funcs = params->teb->glTable;
+    if (!funcs->p_glReadBuffer) return STATUS_NOT_IMPLEMENTED;
+    wrap_glReadBuffer( params->teb, params->src, funcs->p_glReadBuffer );
     set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -2420,8 +2437,10 @@ static NTSTATUS gl_glReadBuffer( void *args )
 static NTSTATUS gl_glReadPixels( void *args )
 {
     struct glReadPixels_params *params = args;
+    const struct opengl_funcs *funcs = params->teb->glTable;
+    if (!funcs->p_glReadPixels) return STATUS_NOT_IMPLEMENTED;
     resolve_default_fbo( params->teb, TRUE );
-    wrap_glReadPixels( params->teb, params->x, params->y, params->width, params->height, params->format, params->type, params->pixels );
+    wrap_glReadPixels( params->teb, params->x, params->y, params->width, params->height, params->format, params->type, params->pixels, funcs->p_glReadPixels );
     set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -3399,7 +3418,9 @@ static NTSTATUS gl_glVertexPointer( void *args )
 static NTSTATUS gl_glViewport( void *args )
 {
     struct glViewport_params *params = args;
-    wrap_glViewport( params->teb, params->x, params->y, params->width, params->height );
+    const struct opengl_funcs *funcs = params->teb->glTable;
+    if (!funcs->p_glViewport) return STATUS_NOT_IMPLEMENTED;
+    wrap_glViewport( params->teb, params->x, params->y, params->width, params->height, funcs->p_glViewport );
     set_context_attribute( params->teb, GL_VIEWPORT, &params->x, 2 * sizeof(GLint) + 2 * sizeof(GLsizei) );
     return STATUS_SUCCESS;
 }
@@ -6300,6 +6321,7 @@ static NTSTATUS ext_glCopyColorTableSGI( void *args )
     struct glCopyColorTableSGI_params *params = args;
     const struct opengl_funcs *funcs = params->teb->glTable;
     if (!funcs->p_glCopyColorTableSGI) return STATUS_NOT_IMPLEMENTED;
+    resolve_default_fbo( params->teb, TRUE );
     funcs->p_glCopyColorTableSGI( params->target, params->internalformat, params->x, params->y, params->width );
     set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
@@ -6440,6 +6462,7 @@ static NTSTATUS ext_glCopyTexImage1DEXT( void *args )
     struct glCopyTexImage1DEXT_params *params = args;
     const struct opengl_funcs *funcs = params->teb->glTable;
     if (!funcs->p_glCopyTexImage1DEXT) return STATUS_NOT_IMPLEMENTED;
+    resolve_default_fbo( params->teb, TRUE );
     funcs->p_glCopyTexImage1DEXT( params->target, params->level, params->internalformat, params->x, params->y, params->width, params->border );
     set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
@@ -6450,6 +6473,7 @@ static NTSTATUS ext_glCopyTexImage2DEXT( void *args )
     struct glCopyTexImage2DEXT_params *params = args;
     const struct opengl_funcs *funcs = params->teb->glTable;
     if (!funcs->p_glCopyTexImage2DEXT) return STATUS_NOT_IMPLEMENTED;
+    resolve_default_fbo( params->teb, TRUE );
     funcs->p_glCopyTexImage2DEXT( params->target, params->level, params->internalformat, params->x, params->y, params->width, params->height, params->border );
     set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
@@ -6460,6 +6484,7 @@ static NTSTATUS ext_glCopyTexSubImage1DEXT( void *args )
     struct glCopyTexSubImage1DEXT_params *params = args;
     const struct opengl_funcs *funcs = params->teb->glTable;
     if (!funcs->p_glCopyTexSubImage1DEXT) return STATUS_NOT_IMPLEMENTED;
+    resolve_default_fbo( params->teb, TRUE );
     funcs->p_glCopyTexSubImage1DEXT( params->target, params->level, params->xoffset, params->x, params->y, params->width );
     set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
@@ -6470,6 +6495,7 @@ static NTSTATUS ext_glCopyTexSubImage2DEXT( void *args )
     struct glCopyTexSubImage2DEXT_params *params = args;
     const struct opengl_funcs *funcs = params->teb->glTable;
     if (!funcs->p_glCopyTexSubImage2DEXT) return STATUS_NOT_IMPLEMENTED;
+    resolve_default_fbo( params->teb, TRUE );
     funcs->p_glCopyTexSubImage2DEXT( params->target, params->level, params->xoffset, params->yoffset, params->x, params->y, params->width, params->height );
     set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
@@ -6491,6 +6517,7 @@ static NTSTATUS ext_glCopyTexSubImage3DEXT( void *args )
     struct glCopyTexSubImage3DEXT_params *params = args;
     const struct opengl_funcs *funcs = params->teb->glTable;
     if (!funcs->p_glCopyTexSubImage3DEXT) return STATUS_NOT_IMPLEMENTED;
+    resolve_default_fbo( params->teb, TRUE );
     funcs->p_glCopyTexSubImage3DEXT( params->target, params->level, params->xoffset, params->yoffset, params->zoffset, params->x, params->y, params->width, params->height );
     set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
@@ -6532,6 +6559,7 @@ static NTSTATUS ext_glCopyTextureSubImage1DEXT( void *args )
     struct glCopyTextureSubImage1DEXT_params *params = args;
     const struct opengl_funcs *funcs = params->teb->glTable;
     if (!funcs->p_glCopyTextureSubImage1DEXT) return STATUS_NOT_IMPLEMENTED;
+    resolve_default_fbo( params->teb, TRUE );
     funcs->p_glCopyTextureSubImage1DEXT( params->texture, params->target, params->level, params->xoffset, params->x, params->y, params->width );
     set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
@@ -6553,6 +6581,7 @@ static NTSTATUS ext_glCopyTextureSubImage2DEXT( void *args )
     struct glCopyTextureSubImage2DEXT_params *params = args;
     const struct opengl_funcs *funcs = params->teb->glTable;
     if (!funcs->p_glCopyTextureSubImage2DEXT) return STATUS_NOT_IMPLEMENTED;
+    resolve_default_fbo( params->teb, TRUE );
     funcs->p_glCopyTextureSubImage2DEXT( params->texture, params->target, params->level, params->xoffset, params->yoffset, params->x, params->y, params->width, params->height );
     set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
@@ -6574,6 +6603,7 @@ static NTSTATUS ext_glCopyTextureSubImage3DEXT( void *args )
     struct glCopyTextureSubImage3DEXT_params *params = args;
     const struct opengl_funcs *funcs = params->teb->glTable;
     if (!funcs->p_glCopyTextureSubImage3DEXT) return STATUS_NOT_IMPLEMENTED;
+    resolve_default_fbo( params->teb, TRUE );
     funcs->p_glCopyTextureSubImage3DEXT( params->texture, params->target, params->level, params->xoffset, params->yoffset, params->zoffset, params->x, params->y, params->width, params->height );
     set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
@@ -6824,7 +6854,7 @@ static NTSTATUS ext_glCreateSyncFromCLeventARB( void *args )
     struct glCreateSyncFromCLeventARB_params *params = args;
     const struct opengl_funcs *funcs = params->teb->glTable;
     if (!funcs->p_glCreateSyncFromCLeventARB) return STATUS_NOT_IMPLEMENTED;
-    params->ret = wrap_glCreateSyncFromCLeventARB( params->teb, params->context, params->event, params->flags, params->ret );
+    params->ret = wrap_glCreateSyncFromCLeventARB( params->teb, params->context, params->event, params->flags, params->ret, funcs->p_glCreateSyncFromCLeventARB );
     set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -6894,7 +6924,7 @@ static NTSTATUS ext_glDebugMessageCallback( void *args )
     struct glDebugMessageCallback_params *params = args;
     const struct opengl_funcs *funcs = params->teb->glTable;
     if (!funcs->p_glDebugMessageCallback) return STATUS_NOT_IMPLEMENTED;
-    wrap_glDebugMessageCallback( params->teb, params->callback, params->userParam );
+    wrap_glDebugMessageCallback( params->teb, params->callback, params->userParam, funcs->p_glDebugMessageCallback );
     set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -6904,7 +6934,7 @@ static NTSTATUS ext_glDebugMessageCallbackAMD( void *args )
     struct glDebugMessageCallbackAMD_params *params = args;
     const struct opengl_funcs *funcs = params->teb->glTable;
     if (!funcs->p_glDebugMessageCallbackAMD) return STATUS_NOT_IMPLEMENTED;
-    wrap_glDebugMessageCallbackAMD( params->teb, params->callback, params->userParam );
+    wrap_glDebugMessageCallbackAMD( params->teb, params->callback, params->userParam, funcs->p_glDebugMessageCallbackAMD );
     set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -6914,7 +6944,7 @@ static NTSTATUS ext_glDebugMessageCallbackARB( void *args )
     struct glDebugMessageCallbackARB_params *params = args;
     const struct opengl_funcs *funcs = params->teb->glTable;
     if (!funcs->p_glDebugMessageCallbackARB) return STATUS_NOT_IMPLEMENTED;
-    wrap_glDebugMessageCallbackARB( params->teb, params->callback, params->userParam );
+    wrap_glDebugMessageCallback( params->teb, params->callback, params->userParam, funcs->p_glDebugMessageCallbackARB );
     set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -7754,7 +7784,7 @@ static NTSTATUS ext_glDrawBuffers( void *args )
     struct glDrawBuffers_params *params = args;
     const struct opengl_funcs *funcs = params->teb->glTable;
     if (!funcs->p_glDrawBuffers) return STATUS_NOT_IMPLEMENTED;
-    wrap_glDrawBuffers( params->teb, params->n, params->bufs );
+    wrap_glDrawBuffers( params->teb, params->n, params->bufs, funcs->p_glDrawBuffers );
     set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -7764,7 +7794,7 @@ static NTSTATUS ext_glDrawBuffersARB( void *args )
     struct glDrawBuffersARB_params *params = args;
     const struct opengl_funcs *funcs = params->teb->glTable;
     if (!funcs->p_glDrawBuffersARB) return STATUS_NOT_IMPLEMENTED;
-    funcs->p_glDrawBuffersARB( params->n, params->bufs );
+    wrap_glDrawBuffers( params->teb, params->n, params->bufs, funcs->p_glDrawBuffersARB );
     set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -7774,7 +7804,7 @@ static NTSTATUS ext_glDrawBuffersATI( void *args )
     struct glDrawBuffersATI_params *params = args;
     const struct opengl_funcs *funcs = params->teb->glTable;
     if (!funcs->p_glDrawBuffersATI) return STATUS_NOT_IMPLEMENTED;
-    funcs->p_glDrawBuffersATI( params->n, params->bufs );
+    wrap_glDrawBuffers( params->teb, params->n, params->bufs, funcs->p_glDrawBuffersATI );
     set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -8514,7 +8544,7 @@ static NTSTATUS ext_glFenceSync( void *args )
     struct glFenceSync_params *params = args;
     const struct opengl_funcs *funcs = params->teb->glTable;
     if (!funcs->p_glFenceSync) return STATUS_NOT_IMPLEMENTED;
-    params->ret = wrap_glFenceSync( params->teb, params->condition, params->flags, params->ret );
+    params->ret = wrap_glFenceSync( params->teb, params->condition, params->flags, params->ret, funcs->p_glFenceSync );
     set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -9024,7 +9054,7 @@ static NTSTATUS ext_glFramebufferDrawBufferEXT( void *args )
     struct glFramebufferDrawBufferEXT_params *params = args;
     const struct opengl_funcs *funcs = params->teb->glTable;
     if (!funcs->p_glFramebufferDrawBufferEXT) return STATUS_NOT_IMPLEMENTED;
-    wrap_glFramebufferDrawBufferEXT( params->teb, params->framebuffer, params->mode );
+    wrap_glFramebufferDrawBufferEXT( params->teb, params->framebuffer, params->mode, funcs->p_glFramebufferDrawBufferEXT );
     set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -9034,7 +9064,7 @@ static NTSTATUS ext_glFramebufferDrawBuffersEXT( void *args )
     struct glFramebufferDrawBuffersEXT_params *params = args;
     const struct opengl_funcs *funcs = params->teb->glTable;
     if (!funcs->p_glFramebufferDrawBuffersEXT) return STATUS_NOT_IMPLEMENTED;
-    wrap_glFramebufferDrawBuffersEXT( params->teb, params->framebuffer, params->n, params->bufs );
+    wrap_glFramebufferDrawBuffersEXT( params->teb, params->framebuffer, params->n, params->bufs, funcs->p_glFramebufferDrawBuffersEXT );
     set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -9074,7 +9104,7 @@ static NTSTATUS ext_glFramebufferReadBufferEXT( void *args )
     struct glFramebufferReadBufferEXT_params *params = args;
     const struct opengl_funcs *funcs = params->teb->glTable;
     if (!funcs->p_glFramebufferReadBufferEXT) return STATUS_NOT_IMPLEMENTED;
-    wrap_glFramebufferReadBufferEXT( params->teb, params->framebuffer, params->mode );
+    wrap_glFramebufferReadBufferEXT( params->teb, params->framebuffer, params->mode, funcs->p_glFramebufferReadBufferEXT );
     set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -10532,7 +10562,7 @@ static NTSTATUS ext_glGetFramebufferParameteriv( void *args )
     struct glGetFramebufferParameteriv_params *params = args;
     const struct opengl_funcs *funcs = params->teb->glTable;
     if (!funcs->p_glGetFramebufferParameteriv) return STATUS_NOT_IMPLEMENTED;
-    funcs->p_glGetFramebufferParameteriv( params->target, params->pname, params->params );
+    wrap_glGetFramebufferParameteriv( params->teb, params->target, params->pname, params->params, funcs->p_glGetFramebufferParameteriv );
     return STATUS_SUCCESS;
 }
 
@@ -10541,7 +10571,7 @@ static NTSTATUS ext_glGetFramebufferParameterivEXT( void *args )
     struct glGetFramebufferParameterivEXT_params *params = args;
     const struct opengl_funcs *funcs = params->teb->glTable;
     if (!funcs->p_glGetFramebufferParameterivEXT) return STATUS_NOT_IMPLEMENTED;
-    wrap_glGetFramebufferParameterivEXT( params->teb, params->framebuffer, params->pname, params->params );
+    wrap_glGetFramebufferParameteriv( params->teb, params->framebuffer, params->pname, params->params, funcs->p_glGetFramebufferParameterivEXT );
     return STATUS_SUCCESS;
 }
 
@@ -10550,7 +10580,7 @@ static NTSTATUS ext_glGetFramebufferParameterivMESA( void *args )
     struct glGetFramebufferParameterivMESA_params *params = args;
     const struct opengl_funcs *funcs = params->teb->glTable;
     if (!funcs->p_glGetFramebufferParameterivMESA) return STATUS_NOT_IMPLEMENTED;
-    funcs->p_glGetFramebufferParameterivMESA( params->target, params->pname, params->params );
+    wrap_glGetFramebufferParameteriv( params->teb, params->target, params->pname, params->params, funcs->p_glGetFramebufferParameterivMESA );
     return STATUS_SUCCESS;
 }
 
@@ -10712,7 +10742,7 @@ static NTSTATUS ext_glGetInteger64v( void *args )
     struct glGetInteger64v_params *params = args;
     const struct opengl_funcs *funcs = params->teb->glTable;
     if (!funcs->p_glGetInteger64v) return STATUS_NOT_IMPLEMENTED;
-    wrap_glGetInteger64v( params->teb, params->pname, params->data );
+    wrap_glGetInteger64v( params->teb, params->pname, params->data, funcs->p_glGetInteger64v );
     return STATUS_SUCCESS;
 }
 
@@ -12315,7 +12345,7 @@ static NTSTATUS ext_glGetStringi( void *args )
     struct glGetStringi_params *params = args;
     const struct opengl_funcs *funcs = params->teb->glTable;
     if (!funcs->p_glGetStringi) return STATUS_NOT_IMPLEMENTED;
-    params->ret = wrap_glGetStringi( params->teb, params->name, params->index );
+    params->ret = funcs->p_glGetStringi( params->name, params->index );
     return STATUS_SUCCESS;
 }
 
@@ -12882,7 +12912,7 @@ static NTSTATUS ext_glGetUnsignedBytevEXT( void *args )
     struct glGetUnsignedBytevEXT_params *params = args;
     const struct opengl_funcs *funcs = params->teb->glTable;
     if (!funcs->p_glGetUnsignedBytevEXT) return STATUS_NOT_IMPLEMENTED;
-    wrap_glGetUnsignedBytevEXT( params->teb, params->pname, params->data );
+    wrap_glGetUnsignedBytevEXT( params->teb, params->pname, params->data, funcs->p_glGetUnsignedBytevEXT );
     return STATUS_SUCCESS;
 }
 
@@ -13847,7 +13877,7 @@ static NTSTATUS ext_glImportSyncEXT( void *args )
     struct glImportSyncEXT_params *params = args;
     const struct opengl_funcs *funcs = params->teb->glTable;
     if (!funcs->p_glImportSyncEXT) return STATUS_NOT_IMPLEMENTED;
-    params->ret = wrap_glImportSyncEXT( params->teb, params->external_sync_type, params->external_sync, params->flags, params->ret );
+    params->ret = wrap_glImportSyncEXT( params->teb, params->external_sync_type, params->external_sync, params->flags, params->ret, funcs->p_glImportSyncEXT );
     set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -17677,7 +17707,7 @@ static NTSTATUS ext_glNamedFramebufferDrawBuffer( void *args )
     struct glNamedFramebufferDrawBuffer_params *params = args;
     const struct opengl_funcs *funcs = params->teb->glTable;
     if (!funcs->p_glNamedFramebufferDrawBuffer) return STATUS_NOT_IMPLEMENTED;
-    wrap_glNamedFramebufferDrawBuffer( params->teb, params->framebuffer, params->buf );
+    wrap_glNamedFramebufferDrawBuffer( params->teb, params->framebuffer, params->buf, funcs->p_glNamedFramebufferDrawBuffer );
     set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -17687,7 +17717,7 @@ static NTSTATUS ext_glNamedFramebufferDrawBuffers( void *args )
     struct glNamedFramebufferDrawBuffers_params *params = args;
     const struct opengl_funcs *funcs = params->teb->glTable;
     if (!funcs->p_glNamedFramebufferDrawBuffers) return STATUS_NOT_IMPLEMENTED;
-    wrap_glNamedFramebufferDrawBuffers( params->teb, params->framebuffer, params->n, params->bufs );
+    wrap_glNamedFramebufferDrawBuffers( params->teb, params->framebuffer, params->n, params->bufs, funcs->p_glNamedFramebufferDrawBuffers );
     set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -17721,7 +17751,7 @@ static NTSTATUS ext_glNamedFramebufferReadBuffer( void *args )
     struct glNamedFramebufferReadBuffer_params *params = args;
     const struct opengl_funcs *funcs = params->teb->glTable;
     if (!funcs->p_glNamedFramebufferReadBuffer) return STATUS_NOT_IMPLEMENTED;
-    wrap_glNamedFramebufferReadBuffer( params->teb, params->framebuffer, params->src );
+    wrap_glNamedFramebufferReadBuffer( params->teb, params->framebuffer, params->src, funcs->p_glNamedFramebufferReadBuffer );
     set_context_attribute( params->teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -30385,7 +30415,7 @@ static NTSTATUS ext_wglCreatePbufferARB( void *args )
     struct wglCreatePbufferARB_params *params = args;
     const struct opengl_funcs *funcs = get_dc_funcs( params->hDC );
     if (!funcs || !funcs->p_wglCreatePbufferARB) return STATUS_NOT_IMPLEMENTED;
-    params->ret = funcs->p_wglCreatePbufferARB( params->hDC, params->iPixelFormat, params->iWidth, params->iHeight, params->piAttribList, params->ret );
+    params->ret = wrap_wglCreatePbufferARB( params->teb, params->hDC, params->iPixelFormat, params->iWidth, params->iHeight, params->piAttribList, params->ret );
     return STATUS_SUCCESS;
 }
 
@@ -30407,24 +30437,6 @@ static NTSTATUS ext_wglFreeMemoryNV( void *args )
     return STATUS_SUCCESS;
 }
 
-static NTSTATUS ext_wglGetExtensionsStringARB( void *args )
-{
-    struct wglGetExtensionsStringARB_params *params = args;
-    const struct opengl_funcs *funcs = get_dc_funcs( params->hdc );
-    if (!funcs || !funcs->p_wglGetExtensionsStringARB) return STATUS_NOT_IMPLEMENTED;
-    params->ret = funcs->p_wglGetExtensionsStringARB( params->hdc );
-    return STATUS_SUCCESS;
-}
-
-static NTSTATUS ext_wglGetExtensionsStringEXT( void *args )
-{
-    struct wglGetExtensionsStringEXT_params *params = args;
-    const struct opengl_funcs *funcs = params->teb->glTable;
-    if (!funcs->p_wglGetExtensionsStringEXT) return STATUS_NOT_IMPLEMENTED;
-    params->ret = funcs->p_wglGetExtensionsStringEXT();
-    return STATUS_SUCCESS;
-}
-
 static NTSTATUS ext_wglGetPbufferDCARB( void *args )
 {
     struct wglGetPbufferDCARB_params *params = args;
@@ -30568,7 +30580,6 @@ const unixlib_entry_t __wine_unix_call_funcs[] =
     wgl_wglCreateContext,
     wgl_wglDeleteContext,
     wgl_wglGetPixelFormat,
-    wgl_wglGetProcAddress,
     wgl_wglMakeCurrent,
     wgl_wglSetPixelFormat,
     wgl_wglShareLists,
@@ -33649,8 +33660,6 @@ const unixlib_entry_t __wine_unix_call_funcs[] =
     ext_wglCreatePbufferARB,
     ext_wglDestroyPbufferARB,
     ext_wglFreeMemoryNV,
-    ext_wglGetExtensionsStringARB,
-    ext_wglGetExtensionsStringEXT,
     ext_wglGetPbufferDCARB,
     ext_wglGetPixelFormatAttribfvARB,
     ext_wglGetPixelFormatAttribivARB,
@@ -33737,19 +33746,6 @@ static NTSTATUS wow64_wgl_wglGetPixelFormat( void *args )
     return STATUS_SUCCESS;
 }
 
-static NTSTATUS wow64_wgl_wglGetProcAddress( void *args )
-{
-    struct
-    {
-        PTR32 teb;
-        PTR32 lpszProc;
-        PTR32 ret;
-    } *params = args;
-    TEB *teb = get_teb64( params->teb );
-    params->ret = (UINT_PTR)wrap_wglGetProcAddress( teb, ULongToPtr(params->lpszProc) );
-    return STATUS_SUCCESS;
-}
-
 static NTSTATUS wow64_wgl_wglMakeCurrent( void *args )
 {
     struct
@@ -33983,7 +33979,9 @@ static NTSTATUS wow64_gl_glClear( void *args )
         GLbitfield mask;
     } *params = args;
     TEB *teb = get_teb64( params->teb );
-    wrap_glClear( teb, params->mask );
+    const struct opengl_funcs *funcs = teb->glTable;
+    if (!funcs->p_glClear) return STATUS_NOT_IMPLEMENTED;
+    wrap_glClear( teb, params->mask, funcs->p_glClear );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -34914,7 +34912,9 @@ static NTSTATUS wow64_gl_glDrawBuffer( void *args )
         GLenum buf;
     } *params = args;
     TEB *teb = get_teb64( params->teb );
-    wrap_glDrawBuffer( teb, params->buf );
+    const struct opengl_funcs *funcs = teb->glTable;
+    if (!funcs->p_glDrawBuffer) return STATUS_NOT_IMPLEMENTED;
+    wrap_glDrawBuffer( teb, params->buf, funcs->p_glDrawBuffer );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -34949,7 +34949,9 @@ static NTSTATUS wow64_gl_glDrawPixels( void *args )
         PTR32 pixels;
     } *params = args;
     TEB *teb = get_teb64( params->teb );
-    wrap_glDrawPixels( teb, params->width, params->height, params->format, params->type, ULongToPtr(params->pixels) );
+    const struct opengl_funcs *funcs = teb->glTable;
+    if (!funcs->p_glDrawPixels) return STATUS_NOT_IMPLEMENTED;
+    wrap_glDrawPixels( teb, params->width, params->height, params->format, params->type, ULongToPtr(params->pixels), funcs->p_glDrawPixels );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -35271,7 +35273,9 @@ static NTSTATUS wow64_gl_glFinish( void *args )
         PTR32 teb;
     } *params = args;
     TEB *teb = get_teb64( params->teb );
-    wrap_glFinish( teb );
+    const struct opengl_funcs *funcs = teb->glTable;
+    if (!funcs->p_glFinish) return STATUS_NOT_IMPLEMENTED;
+    wrap_glFinish( teb, funcs->p_glFinish );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -35283,7 +35287,9 @@ static NTSTATUS wow64_gl_glFlush( void *args )
         PTR32 teb;
     } *params = args;
     TEB *teb = get_teb64( params->teb );
-    wrap_glFlush( teb );
+    const struct opengl_funcs *funcs = teb->glTable;
+    if (!funcs->p_glFlush) return STATUS_NOT_IMPLEMENTED;
+    wrap_glFlush( teb, funcs->p_glFlush );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -35428,7 +35434,9 @@ static NTSTATUS wow64_gl_glGetBooleanv( void *args )
         PTR32 data;
     } *params = args;
     TEB *teb = get_teb64( params->teb );
-    wrap_glGetBooleanv( teb, params->pname, ULongToPtr(params->data) );
+    const struct opengl_funcs *funcs = teb->glTable;
+    if (!funcs->p_glGetBooleanv) return STATUS_NOT_IMPLEMENTED;
+    wrap_glGetBooleanv( teb, params->pname, ULongToPtr(params->data), funcs->p_glGetBooleanv );
     return STATUS_SUCCESS;
 }
 
@@ -35456,7 +35464,9 @@ static NTSTATUS wow64_gl_glGetDoublev( void *args )
         PTR32 data;
     } *params = args;
     TEB *teb = get_teb64( params->teb );
-    wrap_glGetDoublev( teb, params->pname, ULongToPtr(params->data) );
+    const struct opengl_funcs *funcs = teb->glTable;
+    if (!funcs->p_glGetDoublev) return STATUS_NOT_IMPLEMENTED;
+    wrap_glGetDoublev( teb, params->pname, ULongToPtr(params->data), funcs->p_glGetDoublev );
     return STATUS_SUCCESS;
 }
 
@@ -35468,7 +35478,9 @@ static NTSTATUS wow64_gl_glGetError( void *args )
         GLenum ret;
     } *params = args;
     TEB *teb = get_teb64( params->teb );
-    params->ret = wrap_glGetError( teb );
+    const struct opengl_funcs *funcs = teb->glTable;
+    if (!funcs->p_glGetError) return STATUS_NOT_IMPLEMENTED;
+    params->ret = wrap_glGetError( teb, funcs->p_glGetError );
     return STATUS_SUCCESS;
 }
 
@@ -35481,7 +35493,9 @@ static NTSTATUS wow64_gl_glGetFloatv( void *args )
         PTR32 data;
     } *params = args;
     TEB *teb = get_teb64( params->teb );
-    wrap_glGetFloatv( teb, params->pname, ULongToPtr(params->data) );
+    const struct opengl_funcs *funcs = teb->glTable;
+    if (!funcs->p_glGetFloatv) return STATUS_NOT_IMPLEMENTED;
+    wrap_glGetFloatv( teb, params->pname, ULongToPtr(params->data), funcs->p_glGetFloatv );
     return STATUS_SUCCESS;
 }
 
@@ -35494,7 +35508,9 @@ static NTSTATUS wow64_gl_glGetIntegerv( void *args )
         PTR32 data;
     } *params = args;
     TEB *teb = get_teb64( params->teb );
-    wrap_glGetIntegerv( teb, params->pname, ULongToPtr(params->data) );
+    const struct opengl_funcs *funcs = teb->glTable;
+    if (!funcs->p_glGetIntegerv) return STATUS_NOT_IMPLEMENTED;
+    wrap_glGetIntegerv( teb, params->pname, ULongToPtr(params->data), funcs->p_glGetIntegerv );
     return STATUS_SUCCESS;
 }
 
@@ -35696,7 +35712,9 @@ static NTSTATUS wow64_gl_glGetString( void *args )
     } *params = args;
     TEB *teb = get_teb64( params->teb );
     const GLubyte *ret;
-    ret = wrap_glGetString( teb, params->name );
+    const struct opengl_funcs *funcs = teb->glTable;
+    if (!funcs->p_glGetString) return STATUS_NOT_IMPLEMENTED;
+    ret = wrap_glGetString( teb, params->name, funcs->p_glGetString );
     return return_wow64_string( ret, &params->ret );
 }
 
@@ -37610,7 +37628,9 @@ static NTSTATUS wow64_gl_glReadBuffer( void *args )
         GLenum src;
     } *params = args;
     TEB *teb = get_teb64( params->teb );
-    wrap_glReadBuffer( teb, params->src );
+    const struct opengl_funcs *funcs = teb->glTable;
+    if (!funcs->p_glReadBuffer) return STATUS_NOT_IMPLEMENTED;
+    wrap_glReadBuffer( teb, params->src, funcs->p_glReadBuffer );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -37629,8 +37649,10 @@ static NTSTATUS wow64_gl_glReadPixels( void *args )
         PTR32 pixels;
     } *params = args;
     TEB *teb = get_teb64( params->teb );
+    const struct opengl_funcs *funcs = teb->glTable;
+    if (!funcs->p_glReadPixels) return STATUS_NOT_IMPLEMENTED;
     resolve_default_fbo( teb, TRUE );
-    wrap_glReadPixels( teb, params->x, params->y, params->width, params->height, params->format, params->type, ULongToPtr(params->pixels) );
+    wrap_glReadPixels( teb, params->x, params->y, params->width, params->height, params->format, params->type, ULongToPtr(params->pixels), funcs->p_glReadPixels );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -39251,7 +39273,9 @@ static NTSTATUS wow64_gl_glViewport( void *args )
         GLsizei height;
     } *params = args;
     TEB *teb = get_teb64( params->teb );
-    wrap_glViewport( teb, params->x, params->y, params->width, params->height );
+    const struct opengl_funcs *funcs = teb->glTable;
+    if (!funcs->p_glViewport) return STATUS_NOT_IMPLEMENTED;
+    wrap_glViewport( teb, params->x, params->y, params->width, params->height, funcs->p_glViewport );
     set_context_attribute( teb, GL_VIEWPORT, &params->x, 2 * sizeof(GLint) + 2 * sizeof(GLsizei) );
     return STATUS_SUCCESS;
 }
@@ -41721,7 +41745,7 @@ static NTSTATUS wow64_ext_glBufferStorage( void *args )
     if (!funcs->p_glBufferStorage) return STATUS_NOT_IMPLEMENTED;
     pthread_mutex_lock( &wgl_lock );
     buffer = invalidate_buffer_target( teb, params->target );
-    wow64_glBufferStorage( teb, params->target, (GLsizeiptr)ULongToPtr(params->size), ULongToPtr(params->data), params->flags );
+    wow64_glBufferStorage( teb, params->target, (GLsizeiptr)ULongToPtr(params->size), ULongToPtr(params->data), params->flags, funcs->p_glBufferStorage );
     pthread_mutex_unlock( &wgl_lock );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     if (buffer) free_buffer( funcs, buffer );
@@ -44489,6 +44513,7 @@ static NTSTATUS wow64_ext_glCopyColorTableSGI( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glCopyColorTableSGI) return STATUS_NOT_IMPLEMENTED;
+    resolve_default_fbo( teb, TRUE );
     funcs->p_glCopyColorTableSGI( params->target, params->internalformat, params->x, params->y, params->width );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
@@ -44794,6 +44819,7 @@ static NTSTATUS wow64_ext_glCopyTexImage1DEXT( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glCopyTexImage1DEXT) return STATUS_NOT_IMPLEMENTED;
+    resolve_default_fbo( teb, TRUE );
     funcs->p_glCopyTexImage1DEXT( params->target, params->level, params->internalformat, params->x, params->y, params->width, params->border );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
@@ -44816,6 +44842,7 @@ static NTSTATUS wow64_ext_glCopyTexImage2DEXT( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glCopyTexImage2DEXT) return STATUS_NOT_IMPLEMENTED;
+    resolve_default_fbo( teb, TRUE );
     funcs->p_glCopyTexImage2DEXT( params->target, params->level, params->internalformat, params->x, params->y, params->width, params->height, params->border );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
@@ -44836,6 +44863,7 @@ static NTSTATUS wow64_ext_glCopyTexSubImage1DEXT( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glCopyTexSubImage1DEXT) return STATUS_NOT_IMPLEMENTED;
+    resolve_default_fbo( teb, TRUE );
     funcs->p_glCopyTexSubImage1DEXT( params->target, params->level, params->xoffset, params->x, params->y, params->width );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
@@ -44858,6 +44886,7 @@ static NTSTATUS wow64_ext_glCopyTexSubImage2DEXT( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glCopyTexSubImage2DEXT) return STATUS_NOT_IMPLEMENTED;
+    resolve_default_fbo( teb, TRUE );
     funcs->p_glCopyTexSubImage2DEXT( params->target, params->level, params->xoffset, params->yoffset, params->x, params->y, params->width, params->height );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
@@ -44905,6 +44934,7 @@ static NTSTATUS wow64_ext_glCopyTexSubImage3DEXT( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glCopyTexSubImage3DEXT) return STATUS_NOT_IMPLEMENTED;
+    resolve_default_fbo( teb, TRUE );
     funcs->p_glCopyTexSubImage3DEXT( params->target, params->level, params->xoffset, params->yoffset, params->zoffset, params->x, params->y, params->width, params->height );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
@@ -44992,6 +45022,7 @@ static NTSTATUS wow64_ext_glCopyTextureSubImage1DEXT( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glCopyTextureSubImage1DEXT) return STATUS_NOT_IMPLEMENTED;
+    resolve_default_fbo( teb, TRUE );
     funcs->p_glCopyTextureSubImage1DEXT( params->texture, params->target, params->level, params->xoffset, params->x, params->y, params->width );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
@@ -45038,6 +45069,7 @@ static NTSTATUS wow64_ext_glCopyTextureSubImage2DEXT( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glCopyTextureSubImage2DEXT) return STATUS_NOT_IMPLEMENTED;
+    resolve_default_fbo( teb, TRUE );
     funcs->p_glCopyTextureSubImage2DEXT( params->texture, params->target, params->level, params->xoffset, params->yoffset, params->x, params->y, params->width, params->height );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
@@ -45086,6 +45118,7 @@ static NTSTATUS wow64_ext_glCopyTextureSubImage3DEXT( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glCopyTextureSubImage3DEXT) return STATUS_NOT_IMPLEMENTED;
+    resolve_default_fbo( teb, TRUE );
     funcs->p_glCopyTextureSubImage3DEXT( params->texture, params->target, params->level, params->xoffset, params->yoffset, params->zoffset, params->x, params->y, params->width, params->height );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
@@ -45501,7 +45534,7 @@ static NTSTATUS wow64_ext_glCreateSyncFromCLeventARB( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glCreateSyncFromCLeventARB) return STATUS_NOT_IMPLEMENTED;
-    params->ret = (UINT_PTR)wrap_glCreateSyncFromCLeventARB( teb, ULongToPtr(params->context), ULongToPtr(params->event), params->flags, UlongToHandle( params->ret ) );
+    params->ret = (UINT_PTR)wrap_glCreateSyncFromCLeventARB( teb, ULongToPtr(params->context), ULongToPtr(params->event), params->flags, UlongToHandle( params->ret ), funcs->p_glCreateSyncFromCLeventARB );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -45613,7 +45646,7 @@ static NTSTATUS wow64_ext_glDebugMessageCallback( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glDebugMessageCallback) return STATUS_NOT_IMPLEMENTED;
-    wrap_glDebugMessageCallback( teb, ULongToPtr(params->callback), ULongToPtr(params->userParam) );
+    wrap_glDebugMessageCallback( teb, ULongToPtr(params->callback), ULongToPtr(params->userParam), funcs->p_glDebugMessageCallback );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -45629,7 +45662,7 @@ static NTSTATUS wow64_ext_glDebugMessageCallbackAMD( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glDebugMessageCallbackAMD) return STATUS_NOT_IMPLEMENTED;
-    wrap_glDebugMessageCallbackAMD( teb, ULongToPtr(params->callback), ULongToPtr(params->userParam) );
+    wrap_glDebugMessageCallbackAMD( teb, ULongToPtr(params->callback), ULongToPtr(params->userParam), funcs->p_glDebugMessageCallbackAMD );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -45645,7 +45678,7 @@ static NTSTATUS wow64_ext_glDebugMessageCallbackARB( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glDebugMessageCallbackARB) return STATUS_NOT_IMPLEMENTED;
-    wrap_glDebugMessageCallbackARB( teb, ULongToPtr(params->callback), ULongToPtr(params->userParam) );
+    wrap_glDebugMessageCallback( teb, ULongToPtr(params->callback), ULongToPtr(params->userParam), funcs->p_glDebugMessageCallbackARB );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -45881,7 +45914,7 @@ static NTSTATUS wow64_ext_glDeleteBuffers( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glDeleteBuffers) return STATUS_NOT_IMPLEMENTED;
-    wow64_glDeleteBuffers( teb, params->n, ULongToPtr(params->buffers) );
+    wow64_glDeleteBuffers( teb, params->n, ULongToPtr(params->buffers), funcs->p_glDeleteBuffers );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -45897,7 +45930,7 @@ static NTSTATUS wow64_ext_glDeleteBuffersARB( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glDeleteBuffersARB) return STATUS_NOT_IMPLEMENTED;
-    funcs->p_glDeleteBuffersARB( params->n, ULongToPtr(params->buffers) );
+    wow64_glDeleteBuffers( teb, params->n, ULongToPtr(params->buffers), funcs->p_glDeleteBuffersARB );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -47047,7 +47080,7 @@ static NTSTATUS wow64_ext_glDrawBuffers( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glDrawBuffers) return STATUS_NOT_IMPLEMENTED;
-    wrap_glDrawBuffers( teb, params->n, ULongToPtr(params->bufs) );
+    wrap_glDrawBuffers( teb, params->n, ULongToPtr(params->bufs), funcs->p_glDrawBuffers );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -47063,7 +47096,7 @@ static NTSTATUS wow64_ext_glDrawBuffersARB( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glDrawBuffersARB) return STATUS_NOT_IMPLEMENTED;
-    funcs->p_glDrawBuffersARB( params->n, ULongToPtr(params->bufs) );
+    wrap_glDrawBuffers( teb, params->n, ULongToPtr(params->bufs), funcs->p_glDrawBuffersARB );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -47079,7 +47112,7 @@ static NTSTATUS wow64_ext_glDrawBuffersATI( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glDrawBuffersATI) return STATUS_NOT_IMPLEMENTED;
-    funcs->p_glDrawBuffersATI( params->n, ULongToPtr(params->bufs) );
+    wrap_glDrawBuffers( teb, params->n, ULongToPtr(params->bufs), funcs->p_glDrawBuffersATI );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -48321,7 +48354,7 @@ static NTSTATUS wow64_ext_glFenceSync( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glFenceSync) return STATUS_NOT_IMPLEMENTED;
-    params->ret = (UINT_PTR)wrap_glFenceSync( teb, params->condition, params->flags, UlongToHandle( params->ret ) );
+    params->ret = (UINT_PTR)wrap_glFenceSync( teb, params->condition, params->flags, UlongToHandle( params->ret ), funcs->p_glFenceSync );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -48432,7 +48465,7 @@ static NTSTATUS wow64_ext_glFlushMappedBufferRange( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glFlushMappedBufferRange) return STATUS_NOT_IMPLEMENTED;
-    wow64_glFlushMappedBufferRange( teb, params->target, (GLintptr)ULongToPtr(params->offset), (GLsizeiptr)ULongToPtr(params->length) );
+    wow64_glFlushMappedBufferRange( teb, params->target, (GLintptr)ULongToPtr(params->offset), (GLsizeiptr)ULongToPtr(params->length), funcs->p_glFlushMappedBufferRange );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -48449,7 +48482,7 @@ static NTSTATUS wow64_ext_glFlushMappedBufferRangeAPPLE( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glFlushMappedBufferRangeAPPLE) return STATUS_NOT_IMPLEMENTED;
-    funcs->p_glFlushMappedBufferRangeAPPLE( params->target, (GLintptr)ULongToPtr(params->offset), (GLsizeiptr)ULongToPtr(params->size) );
+    wow64_glFlushMappedBufferRange( teb, params->target, (GLintptr)ULongToPtr(params->offset), (GLsizeiptr)ULongToPtr(params->size), funcs->p_glFlushMappedBufferRangeAPPLE );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -48466,7 +48499,7 @@ static NTSTATUS wow64_ext_glFlushMappedNamedBufferRange( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glFlushMappedNamedBufferRange) return STATUS_NOT_IMPLEMENTED;
-    wow64_glFlushMappedNamedBufferRange( teb, params->buffer, (GLintptr)ULongToPtr(params->offset), (GLsizeiptr)ULongToPtr(params->length) );
+    wow64_glFlushMappedNamedBufferRange( teb, params->buffer, (GLintptr)ULongToPtr(params->offset), (GLsizeiptr)ULongToPtr(params->length), funcs->p_glFlushMappedNamedBufferRange );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -48483,7 +48516,7 @@ static NTSTATUS wow64_ext_glFlushMappedNamedBufferRangeEXT( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glFlushMappedNamedBufferRangeEXT) return STATUS_NOT_IMPLEMENTED;
-    wow64_glFlushMappedNamedBufferRangeEXT( teb, params->buffer, (GLintptr)ULongToPtr(params->offset), (GLsizeiptr)ULongToPtr(params->length) );
+    wow64_glFlushMappedNamedBufferRange( teb, params->buffer, (GLintptr)ULongToPtr(params->offset), (GLsizeiptr)ULongToPtr(params->length), funcs->p_glFlushMappedNamedBufferRangeEXT );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -49127,7 +49160,7 @@ static NTSTATUS wow64_ext_glFramebufferDrawBufferEXT( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glFramebufferDrawBufferEXT) return STATUS_NOT_IMPLEMENTED;
-    wrap_glFramebufferDrawBufferEXT( teb, params->framebuffer, params->mode );
+    wrap_glFramebufferDrawBufferEXT( teb, params->framebuffer, params->mode, funcs->p_glFramebufferDrawBufferEXT );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -49144,7 +49177,7 @@ static NTSTATUS wow64_ext_glFramebufferDrawBuffersEXT( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glFramebufferDrawBuffersEXT) return STATUS_NOT_IMPLEMENTED;
-    wrap_glFramebufferDrawBuffersEXT( teb, params->framebuffer, params->n, ULongToPtr(params->bufs) );
+    wrap_glFramebufferDrawBuffersEXT( teb, params->framebuffer, params->n, ULongToPtr(params->bufs), funcs->p_glFramebufferDrawBuffersEXT );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -49208,7 +49241,7 @@ static NTSTATUS wow64_ext_glFramebufferReadBufferEXT( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glFramebufferReadBufferEXT) return STATUS_NOT_IMPLEMENTED;
-    wrap_glFramebufferReadBufferEXT( teb, params->framebuffer, params->mode );
+    wrap_glFramebufferReadBufferEXT( teb, params->framebuffer, params->mode, funcs->p_glFramebufferReadBufferEXT );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -50733,7 +50766,7 @@ static NTSTATUS wow64_ext_glGetBufferPointerv( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glGetBufferPointerv) return STATUS_NOT_IMPLEMENTED;
-    wow64_glGetBufferPointerv( teb, params->target, params->pname, ULongToPtr(params->params) );
+    wow64_glGetBufferPointerv( teb, params->target, params->pname, ULongToPtr(params->params), funcs->p_glGetBufferPointerv );
     return STATUS_SUCCESS;
 }
 
@@ -50749,7 +50782,7 @@ static NTSTATUS wow64_ext_glGetBufferPointervARB( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glGetBufferPointervARB) return STATUS_NOT_IMPLEMENTED;
-    wow64_glGetBufferPointervARB( teb, params->target, params->pname, ULongToPtr(params->params) );
+    wow64_glGetBufferPointerv( teb, params->target, params->pname, ULongToPtr(params->params), funcs->p_glGetBufferPointervARB );
     return STATUS_SUCCESS;
 }
 
@@ -51811,7 +51844,7 @@ static NTSTATUS wow64_ext_glGetFramebufferParameteriv( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glGetFramebufferParameteriv) return STATUS_NOT_IMPLEMENTED;
-    funcs->p_glGetFramebufferParameteriv( params->target, params->pname, ULongToPtr(params->params) );
+    wrap_glGetFramebufferParameteriv( teb, params->target, params->pname, ULongToPtr(params->params), funcs->p_glGetFramebufferParameteriv );
     return STATUS_SUCCESS;
 }
 
@@ -51827,7 +51860,7 @@ static NTSTATUS wow64_ext_glGetFramebufferParameterivEXT( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glGetFramebufferParameterivEXT) return STATUS_NOT_IMPLEMENTED;
-    wrap_glGetFramebufferParameterivEXT( teb, params->framebuffer, params->pname, ULongToPtr(params->params) );
+    wrap_glGetFramebufferParameteriv( teb, params->framebuffer, params->pname, ULongToPtr(params->params), funcs->p_glGetFramebufferParameterivEXT );
     return STATUS_SUCCESS;
 }
 
@@ -51843,7 +51876,7 @@ static NTSTATUS wow64_ext_glGetFramebufferParameterivMESA( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glGetFramebufferParameterivMESA) return STATUS_NOT_IMPLEMENTED;
-    funcs->p_glGetFramebufferParameterivMESA( params->target, params->pname, ULongToPtr(params->params) );
+    wrap_glGetFramebufferParameteriv( teb, params->target, params->pname, ULongToPtr(params->params), funcs->p_glGetFramebufferParameterivMESA );
     return STATUS_SUCCESS;
 }
 
@@ -52134,7 +52167,7 @@ static NTSTATUS wow64_ext_glGetInteger64v( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glGetInteger64v) return STATUS_NOT_IMPLEMENTED;
-    wrap_glGetInteger64v( teb, params->pname, ULongToPtr(params->data) );
+    wrap_glGetInteger64v( teb, params->pname, ULongToPtr(params->data), funcs->p_glGetInteger64v );
     return STATUS_SUCCESS;
 }
 
@@ -53000,7 +53033,7 @@ static NTSTATUS wow64_ext_glGetNamedBufferPointerv( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glGetNamedBufferPointerv) return STATUS_NOT_IMPLEMENTED;
-    wow64_glGetNamedBufferPointerv( teb, params->buffer, params->pname, ULongToPtr(params->params) );
+    wow64_glGetNamedBufferPointerv( teb, params->buffer, params->pname, ULongToPtr(params->params), funcs->p_glGetNamedBufferPointerv );
     return STATUS_SUCCESS;
 }
 
@@ -53016,7 +53049,7 @@ static NTSTATUS wow64_ext_glGetNamedBufferPointervEXT( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glGetNamedBufferPointervEXT) return STATUS_NOT_IMPLEMENTED;
-    wow64_glGetNamedBufferPointervEXT( teb, params->buffer, params->pname, ULongToPtr(params->params) );
+    wow64_glGetNamedBufferPointerv( teb, params->buffer, params->pname, ULongToPtr(params->params), funcs->p_glGetNamedBufferPointervEXT );
     return STATUS_SUCCESS;
 }
 
@@ -55096,7 +55129,7 @@ static NTSTATUS wow64_ext_glGetStringi( void *args )
     const GLubyte *ret;
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glGetStringi) return STATUS_NOT_IMPLEMENTED;
-    ret = wrap_glGetStringi( teb, params->name, params->index );
+    ret = funcs->p_glGetStringi( params->name, params->index );
     return return_wow64_string( ret, &params->ret );
 }
 
@@ -56138,7 +56171,7 @@ static NTSTATUS wow64_ext_glGetUnsignedBytevEXT( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glGetUnsignedBytevEXT) return STATUS_NOT_IMPLEMENTED;
-    wrap_glGetUnsignedBytevEXT( teb, params->pname, ULongToPtr(params->data) );
+    wrap_glGetUnsignedBytevEXT( teb, params->pname, ULongToPtr(params->data), funcs->p_glGetUnsignedBytevEXT );
     return STATUS_SUCCESS;
 }
 
@@ -57872,7 +57905,7 @@ static NTSTATUS wow64_ext_glImportSyncEXT( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glImportSyncEXT) return STATUS_NOT_IMPLEMENTED;
-    params->ret = (UINT_PTR)wrap_glImportSyncEXT( teb, params->external_sync_type, (GLintptr)ULongToPtr(params->external_sync), params->flags, UlongToHandle( params->ret ) );
+    params->ret = (UINT_PTR)wrap_glImportSyncEXT( teb, params->external_sync_type, (GLintptr)ULongToPtr(params->external_sync), params->flags, UlongToHandle( params->ret ), funcs->p_glImportSyncEXT );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -59684,7 +59717,7 @@ static NTSTATUS wow64_ext_glMapBuffer( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glMapBuffer) return STATUS_NOT_IMPLEMENTED;
-    params->ret = (UINT_PTR)wow64_glMapBuffer( teb, params->target, params->access );
+    params->ret = (UINT_PTR)wow64_glMapBuffer( teb, params->target, params->access, funcs->p_glMapBuffer );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -59701,7 +59734,7 @@ static NTSTATUS wow64_ext_glMapBufferARB( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glMapBufferARB) return STATUS_NOT_IMPLEMENTED;
-    params->ret = (UINT_PTR)wow64_glMapBufferARB( teb, params->target, params->access );
+    params->ret = (UINT_PTR)wow64_glMapBuffer( teb, params->target, params->access, funcs->p_glMapBufferARB );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -59720,7 +59753,7 @@ static NTSTATUS wow64_ext_glMapBufferRange( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glMapBufferRange) return STATUS_NOT_IMPLEMENTED;
-    params->ret = (UINT_PTR)wow64_glMapBufferRange( teb, params->target, (GLintptr)ULongToPtr(params->offset), (GLsizeiptr)ULongToPtr(params->length), params->access );
+    params->ret = (UINT_PTR)wow64_glMapBufferRange( teb, params->target, (GLintptr)ULongToPtr(params->offset), (GLsizeiptr)ULongToPtr(params->length), params->access, funcs->p_glMapBufferRange );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -59796,7 +59829,7 @@ static NTSTATUS wow64_ext_glMapNamedBuffer( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glMapNamedBuffer) return STATUS_NOT_IMPLEMENTED;
-    params->ret = (UINT_PTR)wow64_glMapNamedBuffer( teb, params->buffer, params->access );
+    params->ret = (UINT_PTR)wow64_glMapNamedBuffer( teb, params->buffer, params->access, funcs->p_glMapNamedBuffer );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -59813,7 +59846,7 @@ static NTSTATUS wow64_ext_glMapNamedBufferEXT( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glMapNamedBufferEXT) return STATUS_NOT_IMPLEMENTED;
-    params->ret = (UINT_PTR)wow64_glMapNamedBufferEXT( teb, params->buffer, params->access );
+    params->ret = (UINT_PTR)wow64_glMapNamedBuffer( teb, params->buffer, params->access, funcs->p_glMapNamedBufferEXT );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -59832,7 +59865,7 @@ static NTSTATUS wow64_ext_glMapNamedBufferRange( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glMapNamedBufferRange) return STATUS_NOT_IMPLEMENTED;
-    params->ret = (UINT_PTR)wow64_glMapNamedBufferRange( teb, params->buffer, (GLintptr)ULongToPtr(params->offset), (GLsizeiptr)ULongToPtr(params->length), params->access );
+    params->ret = (UINT_PTR)wow64_glMapNamedBufferRange( teb, params->buffer, (GLintptr)ULongToPtr(params->offset), (GLsizeiptr)ULongToPtr(params->length), params->access, funcs->p_glMapNamedBufferRange );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -59851,7 +59884,7 @@ static NTSTATUS wow64_ext_glMapNamedBufferRangeEXT( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glMapNamedBufferRangeEXT) return STATUS_NOT_IMPLEMENTED;
-    params->ret = (UINT_PTR)wow64_glMapNamedBufferRangeEXT( teb, params->buffer, (GLintptr)ULongToPtr(params->offset), (GLsizeiptr)ULongToPtr(params->length), params->access );
+    params->ret = (UINT_PTR)wow64_glMapNamedBufferRange( teb, params->buffer, (GLintptr)ULongToPtr(params->offset), (GLsizeiptr)ULongToPtr(params->length), params->access, funcs->p_glMapNamedBufferRangeEXT );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -64393,7 +64426,7 @@ static NTSTATUS wow64_ext_glNamedBufferStorage( void *args )
     if (!funcs->p_glNamedBufferStorage) return STATUS_NOT_IMPLEMENTED;
     pthread_mutex_lock( &wgl_lock );
     buffer = invalidate_buffer_name( teb, params->buffer );
-    wow64_glNamedBufferStorage( teb, params->buffer, (GLsizeiptr)ULongToPtr(params->size), ULongToPtr(params->data), params->flags );
+    wow64_glNamedBufferStorage( teb, params->buffer, (GLsizeiptr)ULongToPtr(params->size), ULongToPtr(params->data), params->flags, funcs->p_glNamedBufferStorage );
     pthread_mutex_unlock( &wgl_lock );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     if (buffer) free_buffer( funcs, buffer );
@@ -64416,7 +64449,7 @@ static NTSTATUS wow64_ext_glNamedBufferStorageEXT( void *args )
     if (!funcs->p_glNamedBufferStorageEXT) return STATUS_NOT_IMPLEMENTED;
     pthread_mutex_lock( &wgl_lock );
     buffer = invalidate_buffer_name( teb, params->buffer );
-    wow64_glNamedBufferStorageEXT( teb, params->buffer, (GLsizeiptr)ULongToPtr(params->size), ULongToPtr(params->data), params->flags );
+    wow64_glNamedBufferStorage( teb, params->buffer, (GLsizeiptr)ULongToPtr(params->size), ULongToPtr(params->data), params->flags, funcs->p_glNamedBufferStorageEXT );
     pthread_mutex_unlock( &wgl_lock );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     if (buffer) free_buffer( funcs, buffer );
@@ -64536,7 +64569,7 @@ static NTSTATUS wow64_ext_glNamedFramebufferDrawBuffer( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glNamedFramebufferDrawBuffer) return STATUS_NOT_IMPLEMENTED;
-    wrap_glNamedFramebufferDrawBuffer( teb, params->framebuffer, params->buf );
+    wrap_glNamedFramebufferDrawBuffer( teb, params->framebuffer, params->buf, funcs->p_glNamedFramebufferDrawBuffer );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -64553,7 +64586,7 @@ static NTSTATUS wow64_ext_glNamedFramebufferDrawBuffers( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glNamedFramebufferDrawBuffers) return STATUS_NOT_IMPLEMENTED;
-    wrap_glNamedFramebufferDrawBuffers( teb, params->framebuffer, params->n, ULongToPtr(params->bufs) );
+    wrap_glNamedFramebufferDrawBuffers( teb, params->framebuffer, params->n, ULongToPtr(params->bufs), funcs->p_glNamedFramebufferDrawBuffers );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -64607,7 +64640,7 @@ static NTSTATUS wow64_ext_glNamedFramebufferReadBuffer( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glNamedFramebufferReadBuffer) return STATUS_NOT_IMPLEMENTED;
-    wrap_glNamedFramebufferReadBuffer( teb, params->framebuffer, params->src );
+    wrap_glNamedFramebufferReadBuffer( teb, params->framebuffer, params->src, funcs->p_glNamedFramebufferReadBuffer );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -79264,7 +79297,7 @@ static NTSTATUS wow64_ext_glUnmapBuffer( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glUnmapBuffer) return STATUS_NOT_IMPLEMENTED;
-    params->ret = wow64_glUnmapBuffer( teb, params->target );
+    params->ret = wow64_glUnmapBuffer( teb, params->target, funcs->p_glUnmapBuffer );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -79280,7 +79313,7 @@ static NTSTATUS wow64_ext_glUnmapBufferARB( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glUnmapBufferARB) return STATUS_NOT_IMPLEMENTED;
-    params->ret = wow64_glUnmapBufferARB( teb, params->target );
+    params->ret = wow64_glUnmapBuffer( teb, params->target, funcs->p_glUnmapBufferARB );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -79296,7 +79329,7 @@ static NTSTATUS wow64_ext_glUnmapNamedBuffer( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glUnmapNamedBuffer) return STATUS_NOT_IMPLEMENTED;
-    params->ret = wow64_glUnmapNamedBuffer( teb, params->buffer );
+    params->ret = wow64_glUnmapNamedBuffer( teb, params->buffer, funcs->p_glUnmapNamedBuffer );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -79312,7 +79345,7 @@ static NTSTATUS wow64_ext_glUnmapNamedBufferEXT( void *args )
     TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = teb->glTable;
     if (!funcs->p_glUnmapNamedBufferEXT) return STATUS_NOT_IMPLEMENTED;
-    params->ret = wow64_glUnmapNamedBufferEXT( teb, params->buffer );
+    params->ret = wow64_glUnmapNamedBuffer( teb, params->buffer, funcs->p_glUnmapNamedBufferEXT );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
     return STATUS_SUCCESS;
 }
@@ -86687,9 +86720,10 @@ static NTSTATUS wow64_ext_wglCreatePbufferARB( void *args )
         PTR32 piAttribList;
         PTR32 ret;
     } *params = args;
+    TEB *teb = get_teb64( params->teb );
     const struct opengl_funcs *funcs = get_dc_funcs( ULongToPtr(params->hDC) );
     if (!funcs || !funcs->p_wglCreatePbufferARB) return STATUS_NOT_IMPLEMENTED;
-    params->ret = (UINT_PTR)funcs->p_wglCreatePbufferARB( ULongToPtr(params->hDC), params->iPixelFormat, params->iWidth, params->iHeight, ULongToPtr(params->piAttribList), UlongToHandle( params->ret ) );
+    params->ret = (UINT_PTR)wrap_wglCreatePbufferARB( teb, ULongToPtr(params->hDC), params->iPixelFormat, params->iWidth, params->iHeight, ULongToPtr(params->piAttribList), UlongToHandle( params->ret ) );
     return STATUS_SUCCESS;
 }
 
@@ -86721,36 +86755,6 @@ static NTSTATUS wow64_ext_wglFreeMemoryNV( void *args )
     return STATUS_SUCCESS;
 }
 
-static NTSTATUS wow64_ext_wglGetExtensionsStringARB( void *args )
-{
-    struct
-    {
-        PTR32 teb;
-        PTR32 hdc;
-        PTR32 ret;
-    } *params = args;
-    const char *ret;
-    const struct opengl_funcs *funcs = get_dc_funcs( ULongToPtr(params->hdc) );
-    if (!funcs || !funcs->p_wglGetExtensionsStringARB) return STATUS_NOT_IMPLEMENTED;
-    ret = funcs->p_wglGetExtensionsStringARB( ULongToPtr(params->hdc) );
-    return return_wow64_string( ret, &params->ret );
-}
-
-static NTSTATUS wow64_ext_wglGetExtensionsStringEXT( void *args )
-{
-    struct
-    {
-        PTR32 teb;
-        PTR32 ret;
-    } *params = args;
-    TEB *teb = get_teb64( params->teb );
-    const char *ret;
-    const struct opengl_funcs *funcs = teb->glTable;
-    if (!funcs->p_wglGetExtensionsStringEXT) return STATUS_NOT_IMPLEMENTED;
-    ret = funcs->p_wglGetExtensionsStringEXT();
-    return return_wow64_string( ret, &params->ret );
-}
-
 static NTSTATUS wow64_ext_wglGetPbufferDCARB( void *args )
 {
     struct
@@ -87000,7 +87004,6 @@ const unixlib_entry_t __wine_unix_call_wow64_funcs[] =
     wow64_wgl_wglCreateContext,
     wow64_wgl_wglDeleteContext,
     wow64_wgl_wglGetPixelFormat,
-    wow64_wgl_wglGetProcAddress,
     wow64_wgl_wglMakeCurrent,
     wow64_wgl_wglSetPixelFormat,
     wow64_wgl_wglShareLists,
@@ -90081,8 +90084,6 @@ const unixlib_entry_t __wine_unix_call_wow64_funcs[] =
     wow64_ext_wglCreatePbufferARB,
     wow64_ext_wglDestroyPbufferARB,
     wow64_ext_wglFreeMemoryNV,
-    wow64_ext_wglGetExtensionsStringARB,
-    wow64_ext_wglGetExtensionsStringEXT,
     wow64_ext_wglGetPbufferDCARB,
     wow64_ext_wglGetPixelFormatAttribfvARB,
     wow64_ext_wglGetPixelFormatAttribivARB,
@@ -90109,7 +90110,7 @@ static BOOL null_wglCopyContext( HGLRC hglrcSrc, HGLRC hglrcDst, UINT mask )
     WARN( "unsupported\n" );
     return 0;
 }
-static HGLRC null_wglCreateContext( HDC hDc, HGLRC client_context )
+static HGLRC null_wglCreateContext( HDC hDc )
 {
     WARN( "unsupported\n" );
     return 0;
@@ -90125,11 +90126,6 @@ static int null_wglGetPixelFormat( HDC hdc )
     RtlSetLastWin32Error( ERROR_INVALID_PIXEL_FORMAT );
     return 0;
 }
-static PROC null_wglGetProcAddress( LPCSTR lpszProc )
-{
-    WARN( "unsupported\n" );
-    return 0;
-}
 static BOOL null_wglMakeCurrent( HDC hDc, HGLRC newContext )
 {
     WARN( "unsupported\n" );
@@ -91509,7 +91505,6 @@ struct opengl_funcs null_opengl_funcs =
     .p_wglCreateContext = null_wglCreateContext,
     .p_wglDeleteContext = null_wglDeleteContext,
     .p_wglGetPixelFormat = null_wglGetPixelFormat,
-    .p_wglGetProcAddress = null_wglGetProcAddress,
     .p_wglMakeCurrent = null_wglMakeCurrent,
     .p_wglSetPixelFormat = null_wglSetPixelFormat,
     .p_wglShareLists = null_wglShareLists,
@@ -91851,2766 +91846,3 @@ struct opengl_funcs null_opengl_funcs =
     .p_glVertexPointer = null_glVertexPointer,
     .p_glViewport = null_glViewport,
 };
-
-const int extension_registry_size = 2758;
-const struct registry_entry extension_registry[2758] =
-{
-    { "glAccumxOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glAccumxOES) },
-    { "glAcquireKeyedMutexWin32EXT", "GL_EXT_win32_keyed_mutex\0", offsetof(struct opengl_funcs, p_glAcquireKeyedMutexWin32EXT) },
-    { "glActiveProgramEXT", "GL_EXT_separate_shader_objects\0", offsetof(struct opengl_funcs, p_glActiveProgramEXT) },
-    { "glActiveShaderProgram", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glActiveShaderProgram) },
-    { "glActiveStencilFaceEXT", "GL_EXT_stencil_two_side\0", offsetof(struct opengl_funcs, p_glActiveStencilFaceEXT) },
-    { "glActiveTexture", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glActiveTexture) },
-    { "glActiveTextureARB", "GL_ARB_multitexture\0", offsetof(struct opengl_funcs, p_glActiveTextureARB) },
-    { "glActiveVaryingNV", "GL_NV_transform_feedback\0", offsetof(struct opengl_funcs, p_glActiveVaryingNV) },
-    { "glAlphaFragmentOp1ATI", "GL_ATI_fragment_shader\0", offsetof(struct opengl_funcs, p_glAlphaFragmentOp1ATI) },
-    { "glAlphaFragmentOp2ATI", "GL_ATI_fragment_shader\0", offsetof(struct opengl_funcs, p_glAlphaFragmentOp2ATI) },
-    { "glAlphaFragmentOp3ATI", "GL_ATI_fragment_shader\0", offsetof(struct opengl_funcs, p_glAlphaFragmentOp3ATI) },
-    { "glAlphaFuncx", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glAlphaFuncx) },
-    { "glAlphaFuncxOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glAlphaFuncxOES) },
-    { "glAlphaToCoverageDitherControlNV", "GL_NV_alpha_to_coverage_dither_control\0", offsetof(struct opengl_funcs, p_glAlphaToCoverageDitherControlNV) },
-    { "glApplyFramebufferAttachmentCMAAINTEL", "GL_INTEL_framebuffer_CMAA\0", offsetof(struct opengl_funcs, p_glApplyFramebufferAttachmentCMAAINTEL) },
-    { "glApplyTextureEXT", "GL_EXT_light_texture\0", offsetof(struct opengl_funcs, p_glApplyTextureEXT) },
-    { "glAreProgramsResidentNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glAreProgramsResidentNV) },
-    { "glAreTexturesResidentEXT", "GL_EXT_texture_object\0", offsetof(struct opengl_funcs, p_glAreTexturesResidentEXT) },
-    { "glArrayElementEXT", "GL_EXT_vertex_array\0", offsetof(struct opengl_funcs, p_glArrayElementEXT) },
-    { "glArrayObjectATI", "GL_ATI_vertex_array_object\0", offsetof(struct opengl_funcs, p_glArrayObjectATI) },
-    { "glAsyncCopyBufferSubDataNVX", "GL_NVX_gpu_multicast2\0", offsetof(struct opengl_funcs, p_glAsyncCopyBufferSubDataNVX) },
-    { "glAsyncCopyImageSubDataNVX", "GL_NVX_gpu_multicast2\0", offsetof(struct opengl_funcs, p_glAsyncCopyImageSubDataNVX) },
-    { "glAsyncMarkerSGIX", "GL_SGIX_async\0", offsetof(struct opengl_funcs, p_glAsyncMarkerSGIX) },
-    { "glAttachObjectARB", "GL_ARB_shader_objects\0", offsetof(struct opengl_funcs, p_glAttachObjectARB) },
-    { "glAttachShader", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glAttachShader) },
-    { "glBeginConditionalRender", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glBeginConditionalRender) },
-    { "glBeginConditionalRenderNV", "GL_NV_conditional_render\0", offsetof(struct opengl_funcs, p_glBeginConditionalRenderNV) },
-    { "glBeginConditionalRenderNVX", "GL_NVX_conditional_render\0", offsetof(struct opengl_funcs, p_glBeginConditionalRenderNVX) },
-    { "glBeginFragmentShaderATI", "GL_ATI_fragment_shader\0", offsetof(struct opengl_funcs, p_glBeginFragmentShaderATI) },
-    { "glBeginOcclusionQueryNV", "GL_NV_occlusion_query\0", offsetof(struct opengl_funcs, p_glBeginOcclusionQueryNV) },
-    { "glBeginPerfMonitorAMD", "GL_AMD_performance_monitor\0", offsetof(struct opengl_funcs, p_glBeginPerfMonitorAMD) },
-    { "glBeginPerfQueryINTEL", "GL_INTEL_performance_query\0", offsetof(struct opengl_funcs, p_glBeginPerfQueryINTEL) },
-    { "glBeginQuery", "GL_VERSION_1_5\0", offsetof(struct opengl_funcs, p_glBeginQuery) },
-    { "glBeginQueryARB", "GL_ARB_occlusion_query\0", offsetof(struct opengl_funcs, p_glBeginQueryARB) },
-    { "glBeginQueryIndexed", "GL_ARB_transform_feedback3\0GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glBeginQueryIndexed) },
-    { "glBeginTransformFeedback", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glBeginTransformFeedback) },
-    { "glBeginTransformFeedbackEXT", "GL_EXT_transform_feedback\0", offsetof(struct opengl_funcs, p_glBeginTransformFeedbackEXT) },
-    { "glBeginTransformFeedbackNV", "GL_NV_transform_feedback\0", offsetof(struct opengl_funcs, p_glBeginTransformFeedbackNV) },
-    { "glBeginVertexShaderEXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glBeginVertexShaderEXT) },
-    { "glBeginVideoCaptureNV", "GL_NV_video_capture\0", offsetof(struct opengl_funcs, p_glBeginVideoCaptureNV) },
-    { "glBindAttribLocation", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glBindAttribLocation) },
-    { "glBindAttribLocationARB", "GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glBindAttribLocationARB) },
-    { "glBindBuffer", "GL_VERSION_1_5\0", offsetof(struct opengl_funcs, p_glBindBuffer) },
-    { "glBindBufferARB", "GL_ARB_vertex_buffer_object\0", offsetof(struct opengl_funcs, p_glBindBufferARB) },
-    { "glBindBufferBase", "GL_ARB_uniform_buffer_object\0GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glBindBufferBase) },
-    { "glBindBufferBaseEXT", "GL_EXT_transform_feedback\0", offsetof(struct opengl_funcs, p_glBindBufferBaseEXT) },
-    { "glBindBufferBaseNV", "GL_NV_transform_feedback\0", offsetof(struct opengl_funcs, p_glBindBufferBaseNV) },
-    { "glBindBufferOffsetEXT", "GL_EXT_transform_feedback\0", offsetof(struct opengl_funcs, p_glBindBufferOffsetEXT) },
-    { "glBindBufferOffsetNV", "GL_NV_transform_feedback\0", offsetof(struct opengl_funcs, p_glBindBufferOffsetNV) },
-    { "glBindBufferRange", "GL_ARB_uniform_buffer_object\0GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glBindBufferRange) },
-    { "glBindBufferRangeEXT", "GL_EXT_transform_feedback\0", offsetof(struct opengl_funcs, p_glBindBufferRangeEXT) },
-    { "glBindBufferRangeNV", "GL_NV_transform_feedback\0", offsetof(struct opengl_funcs, p_glBindBufferRangeNV) },
-    { "glBindBuffersBase", "GL_ARB_multi_bind\0GL_VERSION_4_4\0", offsetof(struct opengl_funcs, p_glBindBuffersBase) },
-    { "glBindBuffersRange", "GL_ARB_multi_bind\0GL_VERSION_4_4\0", offsetof(struct opengl_funcs, p_glBindBuffersRange) },
-    { "glBindFragDataLocation", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glBindFragDataLocation) },
-    { "glBindFragDataLocationEXT", "GL_EXT_gpu_shader4\0", offsetof(struct opengl_funcs, p_glBindFragDataLocationEXT) },
-    { "glBindFragDataLocationIndexed", "GL_ARB_blend_func_extended\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glBindFragDataLocationIndexed) },
-    { "glBindFragmentShaderATI", "GL_ATI_fragment_shader\0", offsetof(struct opengl_funcs, p_glBindFragmentShaderATI) },
-    { "glBindFramebuffer", "GL_ARB_framebuffer_object\0GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glBindFramebuffer) },
-    { "glBindFramebufferEXT", "GL_EXT_framebuffer_object\0", offsetof(struct opengl_funcs, p_glBindFramebufferEXT) },
-    { "glBindImageTexture", "GL_ARB_shader_image_load_store\0GL_VERSION_4_2\0", offsetof(struct opengl_funcs, p_glBindImageTexture) },
-    { "glBindImageTextureEXT", "GL_EXT_shader_image_load_store\0", offsetof(struct opengl_funcs, p_glBindImageTextureEXT) },
-    { "glBindImageTextures", "GL_ARB_multi_bind\0GL_VERSION_4_4\0", offsetof(struct opengl_funcs, p_glBindImageTextures) },
-    { "glBindLightParameterEXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glBindLightParameterEXT) },
-    { "glBindMaterialParameterEXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glBindMaterialParameterEXT) },
-    { "glBindMultiTextureEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glBindMultiTextureEXT) },
-    { "glBindParameterEXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glBindParameterEXT) },
-    { "glBindProgramARB", "GL_ARB_fragment_program\0GL_ARB_vertex_program\0", offsetof(struct opengl_funcs, p_glBindProgramARB) },
-    { "glBindProgramNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glBindProgramNV) },
-    { "glBindProgramPipeline", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glBindProgramPipeline) },
-    { "glBindRenderbuffer", "GL_ARB_framebuffer_object\0GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glBindRenderbuffer) },
-    { "glBindRenderbufferEXT", "GL_EXT_framebuffer_object\0", offsetof(struct opengl_funcs, p_glBindRenderbufferEXT) },
-    { "glBindSampler", "GL_ARB_sampler_objects\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glBindSampler) },
-    { "glBindSamplers", "GL_ARB_multi_bind\0GL_VERSION_4_4\0", offsetof(struct opengl_funcs, p_glBindSamplers) },
-    { "glBindShadingRateImageNV", "GL_NV_shading_rate_image\0", offsetof(struct opengl_funcs, p_glBindShadingRateImageNV) },
-    { "glBindTexGenParameterEXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glBindTexGenParameterEXT) },
-    { "glBindTextureEXT", "GL_EXT_texture_object\0", offsetof(struct opengl_funcs, p_glBindTextureEXT) },
-    { "glBindTextureUnit", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glBindTextureUnit) },
-    { "glBindTextureUnitParameterEXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glBindTextureUnitParameterEXT) },
-    { "glBindTextures", "GL_ARB_multi_bind\0GL_VERSION_4_4\0", offsetof(struct opengl_funcs, p_glBindTextures) },
-    { "glBindTransformFeedback", "GL_ARB_transform_feedback2\0GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glBindTransformFeedback) },
-    { "glBindTransformFeedbackNV", "GL_NV_transform_feedback2\0", offsetof(struct opengl_funcs, p_glBindTransformFeedbackNV) },
-    { "glBindVertexArray", "GL_ARB_vertex_array_object\0GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glBindVertexArray) },
-    { "glBindVertexArrayAPPLE", "GL_APPLE_vertex_array_object\0", offsetof(struct opengl_funcs, p_glBindVertexArrayAPPLE) },
-    { "glBindVertexBuffer", "GL_ARB_vertex_attrib_binding\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glBindVertexBuffer) },
-    { "glBindVertexBuffers", "GL_ARB_multi_bind\0GL_VERSION_4_4\0", offsetof(struct opengl_funcs, p_glBindVertexBuffers) },
-    { "glBindVertexShaderEXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glBindVertexShaderEXT) },
-    { "glBindVideoCaptureStreamBufferNV", "GL_NV_video_capture\0", offsetof(struct opengl_funcs, p_glBindVideoCaptureStreamBufferNV) },
-    { "glBindVideoCaptureStreamTextureNV", "GL_NV_video_capture\0", offsetof(struct opengl_funcs, p_glBindVideoCaptureStreamTextureNV) },
-    { "glBinormal3bEXT", "GL_EXT_coordinate_frame\0", offsetof(struct opengl_funcs, p_glBinormal3bEXT) },
-    { "glBinormal3bvEXT", "GL_EXT_coordinate_frame\0", offsetof(struct opengl_funcs, p_glBinormal3bvEXT) },
-    { "glBinormal3dEXT", "GL_EXT_coordinate_frame\0", offsetof(struct opengl_funcs, p_glBinormal3dEXT) },
-    { "glBinormal3dvEXT", "GL_EXT_coordinate_frame\0", offsetof(struct opengl_funcs, p_glBinormal3dvEXT) },
-    { "glBinormal3fEXT", "GL_EXT_coordinate_frame\0", offsetof(struct opengl_funcs, p_glBinormal3fEXT) },
-    { "glBinormal3fvEXT", "GL_EXT_coordinate_frame\0", offsetof(struct opengl_funcs, p_glBinormal3fvEXT) },
-    { "glBinormal3iEXT", "GL_EXT_coordinate_frame\0", offsetof(struct opengl_funcs, p_glBinormal3iEXT) },
-    { "glBinormal3ivEXT", "GL_EXT_coordinate_frame\0", offsetof(struct opengl_funcs, p_glBinormal3ivEXT) },
-    { "glBinormal3sEXT", "GL_EXT_coordinate_frame\0", offsetof(struct opengl_funcs, p_glBinormal3sEXT) },
-    { "glBinormal3svEXT", "GL_EXT_coordinate_frame\0", offsetof(struct opengl_funcs, p_glBinormal3svEXT) },
-    { "glBinormalPointerEXT", "GL_EXT_coordinate_frame\0", offsetof(struct opengl_funcs, p_glBinormalPointerEXT) },
-    { "glBitmapxOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glBitmapxOES) },
-    { "glBlendBarrier", "GL_ARB_ES3_2_compatibility\0", offsetof(struct opengl_funcs, p_glBlendBarrier) },
-    { "glBlendBarrierKHR", "GL_KHR_blend_equation_advanced\0", offsetof(struct opengl_funcs, p_glBlendBarrierKHR) },
-    { "glBlendBarrierNV", "GL_NV_blend_equation_advanced\0", offsetof(struct opengl_funcs, p_glBlendBarrierNV) },
-    { "glBlendColor", "GL_ARB_imaging\0GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glBlendColor) },
-    { "glBlendColorEXT", "GL_EXT_blend_color\0", offsetof(struct opengl_funcs, p_glBlendColorEXT) },
-    { "glBlendColorxOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glBlendColorxOES) },
-    { "glBlendEquation", "GL_ARB_imaging\0GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glBlendEquation) },
-    { "glBlendEquationEXT", "GL_EXT_blend_minmax\0", offsetof(struct opengl_funcs, p_glBlendEquationEXT) },
-    { "glBlendEquationIndexedAMD", "GL_AMD_draw_buffers_blend\0", offsetof(struct opengl_funcs, p_glBlendEquationIndexedAMD) },
-    { "glBlendEquationSeparate", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glBlendEquationSeparate) },
-    { "glBlendEquationSeparateEXT", "GL_ATI_blend_equation_separate\0GL_EXT_blend_equation_separate\0", offsetof(struct opengl_funcs, p_glBlendEquationSeparateEXT) },
-    { "glBlendEquationSeparateIndexedAMD", "GL_AMD_draw_buffers_blend\0", offsetof(struct opengl_funcs, p_glBlendEquationSeparateIndexedAMD) },
-    { "glBlendEquationSeparatei", "GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glBlendEquationSeparatei) },
-    { "glBlendEquationSeparateiARB", "GL_ARB_draw_buffers_blend\0", offsetof(struct opengl_funcs, p_glBlendEquationSeparateiARB) },
-    { "glBlendEquationi", "GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glBlendEquationi) },
-    { "glBlendEquationiARB", "GL_ARB_draw_buffers_blend\0", offsetof(struct opengl_funcs, p_glBlendEquationiARB) },
-    { "glBlendFuncIndexedAMD", "GL_AMD_draw_buffers_blend\0", offsetof(struct opengl_funcs, p_glBlendFuncIndexedAMD) },
-    { "glBlendFuncSeparate", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glBlendFuncSeparate) },
-    { "glBlendFuncSeparateEXT", "GL_EXT_blend_func_separate\0", offsetof(struct opengl_funcs, p_glBlendFuncSeparateEXT) },
-    { "glBlendFuncSeparateINGR", "GL_INGR_blend_func_separate\0", offsetof(struct opengl_funcs, p_glBlendFuncSeparateINGR) },
-    { "glBlendFuncSeparateIndexedAMD", "GL_AMD_draw_buffers_blend\0", offsetof(struct opengl_funcs, p_glBlendFuncSeparateIndexedAMD) },
-    { "glBlendFuncSeparatei", "GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glBlendFuncSeparatei) },
-    { "glBlendFuncSeparateiARB", "GL_ARB_draw_buffers_blend\0", offsetof(struct opengl_funcs, p_glBlendFuncSeparateiARB) },
-    { "glBlendFunci", "GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glBlendFunci) },
-    { "glBlendFunciARB", "GL_ARB_draw_buffers_blend\0", offsetof(struct opengl_funcs, p_glBlendFunciARB) },
-    { "glBlendParameteriNV", "GL_NV_blend_equation_advanced\0", offsetof(struct opengl_funcs, p_glBlendParameteriNV) },
-    { "glBlitFramebuffer", "GL_ARB_framebuffer_object\0GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glBlitFramebuffer) },
-    { "glBlitFramebufferEXT", "GL_EXT_framebuffer_blit\0", offsetof(struct opengl_funcs, p_glBlitFramebufferEXT) },
-    { "glBlitFramebufferLayerEXT", "GL_EXT_framebuffer_blit_layers\0", offsetof(struct opengl_funcs, p_glBlitFramebufferLayerEXT) },
-    { "glBlitFramebufferLayersEXT", "GL_EXT_framebuffer_blit_layers\0", offsetof(struct opengl_funcs, p_glBlitFramebufferLayersEXT) },
-    { "glBlitNamedFramebuffer", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glBlitNamedFramebuffer) },
-    { "glBufferAddressRangeNV", "GL_NV_vertex_buffer_unified_memory\0", offsetof(struct opengl_funcs, p_glBufferAddressRangeNV) },
-    { "glBufferAttachMemoryNV", "GL_NV_memory_attachment\0", offsetof(struct opengl_funcs, p_glBufferAttachMemoryNV) },
-    { "glBufferData", "GL_VERSION_1_5\0", offsetof(struct opengl_funcs, p_glBufferData) },
-    { "glBufferDataARB", "GL_ARB_vertex_buffer_object\0", offsetof(struct opengl_funcs, p_glBufferDataARB) },
-    { "glBufferPageCommitmentARB", "GL_ARB_sparse_buffer\0", offsetof(struct opengl_funcs, p_glBufferPageCommitmentARB) },
-    { "glBufferPageCommitmentMemNV", "GL_NV_memory_object_sparse\0", offsetof(struct opengl_funcs, p_glBufferPageCommitmentMemNV) },
-    { "glBufferParameteriAPPLE", "GL_APPLE_flush_buffer_range\0", offsetof(struct opengl_funcs, p_glBufferParameteriAPPLE) },
-    { "glBufferRegionEnabled", "GL_KTX_buffer_region\0", offsetof(struct opengl_funcs, p_glBufferRegionEnabled) },
-    { "glBufferStorage", "GL_ARB_buffer_storage\0GL_VERSION_4_4\0", offsetof(struct opengl_funcs, p_glBufferStorage) },
-    { "glBufferStorageExternalEXT", "GL_EXT_external_buffer\0", offsetof(struct opengl_funcs, p_glBufferStorageExternalEXT) },
-    { "glBufferStorageMemEXT", "GL_EXT_memory_object\0", offsetof(struct opengl_funcs, p_glBufferStorageMemEXT) },
-    { "glBufferSubData", "GL_VERSION_1_5\0", offsetof(struct opengl_funcs, p_glBufferSubData) },
-    { "glBufferSubDataARB", "GL_ARB_vertex_buffer_object\0", offsetof(struct opengl_funcs, p_glBufferSubDataARB) },
-    { "glCallCommandListNV", "GL_NV_command_list\0", offsetof(struct opengl_funcs, p_glCallCommandListNV) },
-    { "glCheckFramebufferStatus", "GL_ARB_framebuffer_object\0GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glCheckFramebufferStatus) },
-    { "glCheckFramebufferStatusEXT", "GL_EXT_framebuffer_object\0", offsetof(struct opengl_funcs, p_glCheckFramebufferStatusEXT) },
-    { "glCheckNamedFramebufferStatus", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glCheckNamedFramebufferStatus) },
-    { "glCheckNamedFramebufferStatusEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glCheckNamedFramebufferStatusEXT) },
-    { "glClampColor", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glClampColor) },
-    { "glClampColorARB", "GL_ARB_color_buffer_float\0", offsetof(struct opengl_funcs, p_glClampColorARB) },
-    { "glClearAccumxOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glClearAccumxOES) },
-    { "glClearBufferData", "GL_ARB_clear_buffer_object\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glClearBufferData) },
-    { "glClearBufferSubData", "GL_ARB_clear_buffer_object\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glClearBufferSubData) },
-    { "glClearBufferfi", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glClearBufferfi) },
-    { "glClearBufferfv", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glClearBufferfv) },
-    { "glClearBufferiv", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glClearBufferiv) },
-    { "glClearBufferuiv", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glClearBufferuiv) },
-    { "glClearColorIiEXT", "GL_EXT_texture_integer\0", offsetof(struct opengl_funcs, p_glClearColorIiEXT) },
-    { "glClearColorIuiEXT", "GL_EXT_texture_integer\0", offsetof(struct opengl_funcs, p_glClearColorIuiEXT) },
-    { "glClearColorx", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glClearColorx) },
-    { "glClearColorxOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glClearColorxOES) },
-    { "glClearDepthdNV", "GL_NV_depth_buffer_float\0", offsetof(struct opengl_funcs, p_glClearDepthdNV) },
-    { "glClearDepthf", "GL_ARB_ES2_compatibility\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glClearDepthf) },
-    { "glClearDepthfOES", "GL_OES_single_precision\0", offsetof(struct opengl_funcs, p_glClearDepthfOES) },
-    { "glClearDepthx", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glClearDepthx) },
-    { "glClearDepthxOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glClearDepthxOES) },
-    { "glClearNamedBufferData", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glClearNamedBufferData) },
-    { "glClearNamedBufferDataEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glClearNamedBufferDataEXT) },
-    { "glClearNamedBufferSubData", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glClearNamedBufferSubData) },
-    { "glClearNamedBufferSubDataEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glClearNamedBufferSubDataEXT) },
-    { "glClearNamedFramebufferfi", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glClearNamedFramebufferfi) },
-    { "glClearNamedFramebufferfv", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glClearNamedFramebufferfv) },
-    { "glClearNamedFramebufferiv", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glClearNamedFramebufferiv) },
-    { "glClearNamedFramebufferuiv", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glClearNamedFramebufferuiv) },
-    { "glClearTexImage", "GL_ARB_clear_texture\0GL_VERSION_4_4\0", offsetof(struct opengl_funcs, p_glClearTexImage) },
-    { "glClearTexSubImage", "GL_ARB_clear_texture\0GL_VERSION_4_4\0", offsetof(struct opengl_funcs, p_glClearTexSubImage) },
-    { "glClientActiveTexture", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glClientActiveTexture) },
-    { "glClientActiveTextureARB", "GL_ARB_multitexture\0", offsetof(struct opengl_funcs, p_glClientActiveTextureARB) },
-    { "glClientActiveVertexStreamATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glClientActiveVertexStreamATI) },
-    { "glClientAttribDefaultEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glClientAttribDefaultEXT) },
-    { "glClientWaitSemaphoreui64NVX", "GL_NVX_progress_fence\0", offsetof(struct opengl_funcs, p_glClientWaitSemaphoreui64NVX) },
-    { "glClientWaitSync", "GL_ARB_sync\0GL_VERSION_3_2\0", offsetof(struct opengl_funcs, p_glClientWaitSync) },
-    { "glClipControl", "GL_ARB_clip_control\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glClipControl) },
-    { "glClipPlanef", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glClipPlanef) },
-    { "glClipPlanefOES", "GL_OES_single_precision\0", offsetof(struct opengl_funcs, p_glClipPlanefOES) },
-    { "glClipPlanex", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glClipPlanex) },
-    { "glClipPlanexOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glClipPlanexOES) },
-    { "glColor3fVertex3fSUN", "GL_SUN_vertex\0", offsetof(struct opengl_funcs, p_glColor3fVertex3fSUN) },
-    { "glColor3fVertex3fvSUN", "GL_SUN_vertex\0", offsetof(struct opengl_funcs, p_glColor3fVertex3fvSUN) },
-    { "glColor3hNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glColor3hNV) },
-    { "glColor3hvNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glColor3hvNV) },
-    { "glColor3xOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glColor3xOES) },
-    { "glColor3xvOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glColor3xvOES) },
-    { "glColor4fNormal3fVertex3fSUN", "GL_SUN_vertex\0", offsetof(struct opengl_funcs, p_glColor4fNormal3fVertex3fSUN) },
-    { "glColor4fNormal3fVertex3fvSUN", "GL_SUN_vertex\0", offsetof(struct opengl_funcs, p_glColor4fNormal3fVertex3fvSUN) },
-    { "glColor4hNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glColor4hNV) },
-    { "glColor4hvNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glColor4hvNV) },
-    { "glColor4ubVertex2fSUN", "GL_SUN_vertex\0", offsetof(struct opengl_funcs, p_glColor4ubVertex2fSUN) },
-    { "glColor4ubVertex2fvSUN", "GL_SUN_vertex\0", offsetof(struct opengl_funcs, p_glColor4ubVertex2fvSUN) },
-    { "glColor4ubVertex3fSUN", "GL_SUN_vertex\0", offsetof(struct opengl_funcs, p_glColor4ubVertex3fSUN) },
-    { "glColor4ubVertex3fvSUN", "GL_SUN_vertex\0", offsetof(struct opengl_funcs, p_glColor4ubVertex3fvSUN) },
-    { "glColor4x", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glColor4x) },
-    { "glColor4xOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glColor4xOES) },
-    { "glColor4xvOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glColor4xvOES) },
-    { "glColorFormatNV", "GL_NV_vertex_buffer_unified_memory\0", offsetof(struct opengl_funcs, p_glColorFormatNV) },
-    { "glColorFragmentOp1ATI", "GL_ATI_fragment_shader\0", offsetof(struct opengl_funcs, p_glColorFragmentOp1ATI) },
-    { "glColorFragmentOp2ATI", "GL_ATI_fragment_shader\0", offsetof(struct opengl_funcs, p_glColorFragmentOp2ATI) },
-    { "glColorFragmentOp3ATI", "GL_ATI_fragment_shader\0", offsetof(struct opengl_funcs, p_glColorFragmentOp3ATI) },
-    { "glColorMaskIndexedEXT", "GL_EXT_draw_buffers2\0", offsetof(struct opengl_funcs, p_glColorMaskIndexedEXT) },
-    { "glColorMaski", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glColorMaski) },
-    { "glColorP3ui", "GL_ARB_vertex_type_2_10_10_10_rev\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glColorP3ui) },
-    { "glColorP3uiv", "GL_ARB_vertex_type_2_10_10_10_rev\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glColorP3uiv) },
-    { "glColorP4ui", "GL_ARB_vertex_type_2_10_10_10_rev\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glColorP4ui) },
-    { "glColorP4uiv", "GL_ARB_vertex_type_2_10_10_10_rev\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glColorP4uiv) },
-    { "glColorPointerEXT", "GL_EXT_vertex_array\0", offsetof(struct opengl_funcs, p_glColorPointerEXT) },
-    { "glColorPointerListIBM", "GL_IBM_vertex_array_lists\0", offsetof(struct opengl_funcs, p_glColorPointerListIBM) },
-    { "glColorPointervINTEL", "GL_INTEL_parallel_arrays\0", offsetof(struct opengl_funcs, p_glColorPointervINTEL) },
-    { "glColorSubTable", "GL_ARB_imaging\0", offsetof(struct opengl_funcs, p_glColorSubTable) },
-    { "glColorSubTableEXT", "GL_EXT_color_subtable\0", offsetof(struct opengl_funcs, p_glColorSubTableEXT) },
-    { "glColorTable", "GL_ARB_imaging\0", offsetof(struct opengl_funcs, p_glColorTable) },
-    { "glColorTableEXT", "GL_EXT_paletted_texture\0", offsetof(struct opengl_funcs, p_glColorTableEXT) },
-    { "glColorTableParameterfv", "GL_ARB_imaging\0", offsetof(struct opengl_funcs, p_glColorTableParameterfv) },
-    { "glColorTableParameterfvSGI", "GL_SGI_color_table\0", offsetof(struct opengl_funcs, p_glColorTableParameterfvSGI) },
-    { "glColorTableParameteriv", "GL_ARB_imaging\0", offsetof(struct opengl_funcs, p_glColorTableParameteriv) },
-    { "glColorTableParameterivSGI", "GL_SGI_color_table\0", offsetof(struct opengl_funcs, p_glColorTableParameterivSGI) },
-    { "glColorTableSGI", "GL_SGI_color_table\0", offsetof(struct opengl_funcs, p_glColorTableSGI) },
-    { "glCombinerInputNV", "GL_NV_register_combiners\0", offsetof(struct opengl_funcs, p_glCombinerInputNV) },
-    { "glCombinerOutputNV", "GL_NV_register_combiners\0", offsetof(struct opengl_funcs, p_glCombinerOutputNV) },
-    { "glCombinerParameterfNV", "GL_NV_register_combiners\0", offsetof(struct opengl_funcs, p_glCombinerParameterfNV) },
-    { "glCombinerParameterfvNV", "GL_NV_register_combiners\0", offsetof(struct opengl_funcs, p_glCombinerParameterfvNV) },
-    { "glCombinerParameteriNV", "GL_NV_register_combiners\0", offsetof(struct opengl_funcs, p_glCombinerParameteriNV) },
-    { "glCombinerParameterivNV", "GL_NV_register_combiners\0", offsetof(struct opengl_funcs, p_glCombinerParameterivNV) },
-    { "glCombinerStageParameterfvNV", "GL_NV_register_combiners2\0", offsetof(struct opengl_funcs, p_glCombinerStageParameterfvNV) },
-    { "glCommandListSegmentsNV", "GL_NV_command_list\0", offsetof(struct opengl_funcs, p_glCommandListSegmentsNV) },
-    { "glCompileCommandListNV", "GL_NV_command_list\0", offsetof(struct opengl_funcs, p_glCompileCommandListNV) },
-    { "glCompileShader", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glCompileShader) },
-    { "glCompileShaderARB", "GL_ARB_shader_objects\0", offsetof(struct opengl_funcs, p_glCompileShaderARB) },
-    { "glCompileShaderIncludeARB", "GL_ARB_shading_language_include\0", offsetof(struct opengl_funcs, p_glCompileShaderIncludeARB) },
-    { "glCompressedMultiTexImage1DEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glCompressedMultiTexImage1DEXT) },
-    { "glCompressedMultiTexImage2DEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glCompressedMultiTexImage2DEXT) },
-    { "glCompressedMultiTexImage3DEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glCompressedMultiTexImage3DEXT) },
-    { "glCompressedMultiTexSubImage1DEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glCompressedMultiTexSubImage1DEXT) },
-    { "glCompressedMultiTexSubImage2DEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glCompressedMultiTexSubImage2DEXT) },
-    { "glCompressedMultiTexSubImage3DEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glCompressedMultiTexSubImage3DEXT) },
-    { "glCompressedTexImage1D", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glCompressedTexImage1D) },
-    { "glCompressedTexImage1DARB", "GL_ARB_texture_compression\0GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glCompressedTexImage1DARB) },
-    { "glCompressedTexImage2D", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glCompressedTexImage2D) },
-    { "glCompressedTexImage2DARB", "GL_ARB_texture_compression\0GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glCompressedTexImage2DARB) },
-    { "glCompressedTexImage3D", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glCompressedTexImage3D) },
-    { "glCompressedTexImage3DARB", "GL_ARB_texture_compression\0GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glCompressedTexImage3DARB) },
-    { "glCompressedTexSubImage1D", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glCompressedTexSubImage1D) },
-    { "glCompressedTexSubImage1DARB", "GL_ARB_texture_compression\0GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glCompressedTexSubImage1DARB) },
-    { "glCompressedTexSubImage2D", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glCompressedTexSubImage2D) },
-    { "glCompressedTexSubImage2DARB", "GL_ARB_texture_compression\0GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glCompressedTexSubImage2DARB) },
-    { "glCompressedTexSubImage3D", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glCompressedTexSubImage3D) },
-    { "glCompressedTexSubImage3DARB", "GL_ARB_texture_compression\0GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glCompressedTexSubImage3DARB) },
-    { "glCompressedTextureImage1DEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glCompressedTextureImage1DEXT) },
-    { "glCompressedTextureImage2DEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glCompressedTextureImage2DEXT) },
-    { "glCompressedTextureImage3DEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glCompressedTextureImage3DEXT) },
-    { "glCompressedTextureSubImage1D", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glCompressedTextureSubImage1D) },
-    { "glCompressedTextureSubImage1DEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glCompressedTextureSubImage1DEXT) },
-    { "glCompressedTextureSubImage2D", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glCompressedTextureSubImage2D) },
-    { "glCompressedTextureSubImage2DEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glCompressedTextureSubImage2DEXT) },
-    { "glCompressedTextureSubImage3D", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glCompressedTextureSubImage3D) },
-    { "glCompressedTextureSubImage3DEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glCompressedTextureSubImage3DEXT) },
-    { "glConservativeRasterParameterfNV", "GL_NV_conservative_raster_dilate\0", offsetof(struct opengl_funcs, p_glConservativeRasterParameterfNV) },
-    { "glConservativeRasterParameteriNV", "GL_NV_conservative_raster_pre_snap_triangles\0", offsetof(struct opengl_funcs, p_glConservativeRasterParameteriNV) },
-    { "glConvolutionFilter1D", "GL_ARB_imaging\0", offsetof(struct opengl_funcs, p_glConvolutionFilter1D) },
-    { "glConvolutionFilter1DEXT", "GL_EXT_convolution\0", offsetof(struct opengl_funcs, p_glConvolutionFilter1DEXT) },
-    { "glConvolutionFilter2D", "GL_ARB_imaging\0", offsetof(struct opengl_funcs, p_glConvolutionFilter2D) },
-    { "glConvolutionFilter2DEXT", "GL_EXT_convolution\0", offsetof(struct opengl_funcs, p_glConvolutionFilter2DEXT) },
-    { "glConvolutionParameterf", "GL_ARB_imaging\0", offsetof(struct opengl_funcs, p_glConvolutionParameterf) },
-    { "glConvolutionParameterfEXT", "GL_EXT_convolution\0", offsetof(struct opengl_funcs, p_glConvolutionParameterfEXT) },
-    { "glConvolutionParameterfv", "GL_ARB_imaging\0", offsetof(struct opengl_funcs, p_glConvolutionParameterfv) },
-    { "glConvolutionParameterfvEXT", "GL_EXT_convolution\0", offsetof(struct opengl_funcs, p_glConvolutionParameterfvEXT) },
-    { "glConvolutionParameteri", "GL_ARB_imaging\0", offsetof(struct opengl_funcs, p_glConvolutionParameteri) },
-    { "glConvolutionParameteriEXT", "GL_EXT_convolution\0", offsetof(struct opengl_funcs, p_glConvolutionParameteriEXT) },
-    { "glConvolutionParameteriv", "GL_ARB_imaging\0", offsetof(struct opengl_funcs, p_glConvolutionParameteriv) },
-    { "glConvolutionParameterivEXT", "GL_EXT_convolution\0", offsetof(struct opengl_funcs, p_glConvolutionParameterivEXT) },
-    { "glConvolutionParameterxOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glConvolutionParameterxOES) },
-    { "glConvolutionParameterxvOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glConvolutionParameterxvOES) },
-    { "glCopyBufferSubData", "GL_ARB_copy_buffer\0GL_EXT_copy_buffer\0GL_VERSION_3_1\0", offsetof(struct opengl_funcs, p_glCopyBufferSubData) },
-    { "glCopyColorSubTable", "GL_ARB_imaging\0", offsetof(struct opengl_funcs, p_glCopyColorSubTable) },
-    { "glCopyColorSubTableEXT", "GL_EXT_color_subtable\0", offsetof(struct opengl_funcs, p_glCopyColorSubTableEXT) },
-    { "glCopyColorTable", "GL_ARB_imaging\0", offsetof(struct opengl_funcs, p_glCopyColorTable) },
-    { "glCopyColorTableSGI", "GL_SGI_color_table\0", offsetof(struct opengl_funcs, p_glCopyColorTableSGI) },
-    { "glCopyConvolutionFilter1D", "GL_ARB_imaging\0", offsetof(struct opengl_funcs, p_glCopyConvolutionFilter1D) },
-    { "glCopyConvolutionFilter1DEXT", "GL_EXT_convolution\0", offsetof(struct opengl_funcs, p_glCopyConvolutionFilter1DEXT) },
-    { "glCopyConvolutionFilter2D", "GL_ARB_imaging\0", offsetof(struct opengl_funcs, p_glCopyConvolutionFilter2D) },
-    { "glCopyConvolutionFilter2DEXT", "GL_EXT_convolution\0", offsetof(struct opengl_funcs, p_glCopyConvolutionFilter2DEXT) },
-    { "glCopyImageSubData", "GL_ARB_copy_image\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glCopyImageSubData) },
-    { "glCopyImageSubDataNV", "GL_NV_copy_image\0", offsetof(struct opengl_funcs, p_glCopyImageSubDataNV) },
-    { "glCopyMultiTexImage1DEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glCopyMultiTexImage1DEXT) },
-    { "glCopyMultiTexImage2DEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glCopyMultiTexImage2DEXT) },
-    { "glCopyMultiTexSubImage1DEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glCopyMultiTexSubImage1DEXT) },
-    { "glCopyMultiTexSubImage2DEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glCopyMultiTexSubImage2DEXT) },
-    { "glCopyMultiTexSubImage3DEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glCopyMultiTexSubImage3DEXT) },
-    { "glCopyNamedBufferSubData", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glCopyNamedBufferSubData) },
-    { "glCopyPathNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glCopyPathNV) },
-    { "glCopyTexImage1DEXT", "GL_EXT_copy_texture\0GL_VERSION_1_2\0", offsetof(struct opengl_funcs, p_glCopyTexImage1DEXT) },
-    { "glCopyTexImage2DEXT", "GL_EXT_copy_texture\0GL_VERSION_1_2\0", offsetof(struct opengl_funcs, p_glCopyTexImage2DEXT) },
-    { "glCopyTexSubImage1DEXT", "GL_EXT_copy_texture\0GL_VERSION_1_2\0", offsetof(struct opengl_funcs, p_glCopyTexSubImage1DEXT) },
-    { "glCopyTexSubImage2DEXT", "GL_EXT_copy_texture\0GL_VERSION_1_2\0", offsetof(struct opengl_funcs, p_glCopyTexSubImage2DEXT) },
-    { "glCopyTexSubImage3D", "GL_VERSION_1_2\0", offsetof(struct opengl_funcs, p_glCopyTexSubImage3D) },
-    { "glCopyTexSubImage3DEXT", "GL_EXT_copy_texture\0GL_VERSION_1_2\0", offsetof(struct opengl_funcs, p_glCopyTexSubImage3DEXT) },
-    { "glCopyTextureImage1DEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glCopyTextureImage1DEXT) },
-    { "glCopyTextureImage2DEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glCopyTextureImage2DEXT) },
-    { "glCopyTextureSubImage1D", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glCopyTextureSubImage1D) },
-    { "glCopyTextureSubImage1DEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glCopyTextureSubImage1DEXT) },
-    { "glCopyTextureSubImage2D", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glCopyTextureSubImage2D) },
-    { "glCopyTextureSubImage2DEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glCopyTextureSubImage2DEXT) },
-    { "glCopyTextureSubImage3D", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glCopyTextureSubImage3D) },
-    { "glCopyTextureSubImage3DEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glCopyTextureSubImage3DEXT) },
-    { "glCoverFillPathInstancedNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glCoverFillPathInstancedNV) },
-    { "glCoverFillPathNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glCoverFillPathNV) },
-    { "glCoverStrokePathInstancedNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glCoverStrokePathInstancedNV) },
-    { "glCoverStrokePathNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glCoverStrokePathNV) },
-    { "glCoverageModulationNV", "GL_NV_framebuffer_mixed_samples\0", offsetof(struct opengl_funcs, p_glCoverageModulationNV) },
-    { "glCoverageModulationTableNV", "GL_NV_framebuffer_mixed_samples\0", offsetof(struct opengl_funcs, p_glCoverageModulationTableNV) },
-    { "glCreateBuffers", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glCreateBuffers) },
-    { "glCreateCommandListsNV", "GL_NV_command_list\0", offsetof(struct opengl_funcs, p_glCreateCommandListsNV) },
-    { "glCreateFramebuffers", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glCreateFramebuffers) },
-    { "glCreateMemoryObjectsEXT", "GL_EXT_memory_object\0", offsetof(struct opengl_funcs, p_glCreateMemoryObjectsEXT) },
-    { "glCreatePerfQueryINTEL", "GL_INTEL_performance_query\0", offsetof(struct opengl_funcs, p_glCreatePerfQueryINTEL) },
-    { "glCreateProgram", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glCreateProgram) },
-    { "glCreateProgramObjectARB", "GL_ARB_shader_objects\0", offsetof(struct opengl_funcs, p_glCreateProgramObjectARB) },
-    { "glCreateProgramPipelines", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glCreateProgramPipelines) },
-    { "glCreateProgressFenceNVX", "GL_NVX_progress_fence\0", offsetof(struct opengl_funcs, p_glCreateProgressFenceNVX) },
-    { "glCreateQueries", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glCreateQueries) },
-    { "glCreateRenderbuffers", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glCreateRenderbuffers) },
-    { "glCreateSamplers", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glCreateSamplers) },
-    { "glCreateSemaphoresNV", "GL_NV_timeline_semaphore\0", offsetof(struct opengl_funcs, p_glCreateSemaphoresNV) },
-    { "glCreateShader", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glCreateShader) },
-    { "glCreateShaderObjectARB", "GL_ARB_shader_objects\0", offsetof(struct opengl_funcs, p_glCreateShaderObjectARB) },
-    { "glCreateShaderProgramEXT", "GL_EXT_separate_shader_objects\0", offsetof(struct opengl_funcs, p_glCreateShaderProgramEXT) },
-    { "glCreateShaderProgramv", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glCreateShaderProgramv) },
-    { "glCreateStatesNV", "GL_NV_command_list\0", offsetof(struct opengl_funcs, p_glCreateStatesNV) },
-    { "glCreateSyncFromCLeventARB", "GL_ARB_cl_event\0", offsetof(struct opengl_funcs, p_glCreateSyncFromCLeventARB) },
-    { "glCreateTextures", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glCreateTextures) },
-    { "glCreateTransformFeedbacks", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glCreateTransformFeedbacks) },
-    { "glCreateVertexArrays", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glCreateVertexArrays) },
-    { "glCullParameterdvEXT", "GL_EXT_cull_vertex\0", offsetof(struct opengl_funcs, p_glCullParameterdvEXT) },
-    { "glCullParameterfvEXT", "GL_EXT_cull_vertex\0", offsetof(struct opengl_funcs, p_glCullParameterfvEXT) },
-    { "glCurrentPaletteMatrixARB", "GL_ARB_matrix_palette\0", offsetof(struct opengl_funcs, p_glCurrentPaletteMatrixARB) },
-    { "glDebugMessageCallback", "GL_KHR_debug\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glDebugMessageCallback) },
-    { "glDebugMessageCallbackAMD", "GL_AMDX_debug_output\0GL_AMD_debug_output\0", offsetof(struct opengl_funcs, p_glDebugMessageCallbackAMD) },
-    { "glDebugMessageCallbackARB", "GL_ARB_debug_output\0", offsetof(struct opengl_funcs, p_glDebugMessageCallbackARB) },
-    { "glDebugMessageControl", "GL_KHR_debug\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glDebugMessageControl) },
-    { "glDebugMessageControlARB", "GL_ARB_debug_output\0", offsetof(struct opengl_funcs, p_glDebugMessageControlARB) },
-    { "glDebugMessageEnableAMD", "GL_AMDX_debug_output\0GL_AMD_debug_output\0", offsetof(struct opengl_funcs, p_glDebugMessageEnableAMD) },
-    { "glDebugMessageInsert", "GL_KHR_debug\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glDebugMessageInsert) },
-    { "glDebugMessageInsertAMD", "GL_AMDX_debug_output\0GL_AMD_debug_output\0", offsetof(struct opengl_funcs, p_glDebugMessageInsertAMD) },
-    { "glDebugMessageInsertARB", "GL_ARB_debug_output\0", offsetof(struct opengl_funcs, p_glDebugMessageInsertARB) },
-    { "glDeformSGIX", "GL_SGIX_polynomial_ffd\0", offsetof(struct opengl_funcs, p_glDeformSGIX) },
-    { "glDeformationMap3dSGIX", "GL_SGIX_polynomial_ffd\0", offsetof(struct opengl_funcs, p_glDeformationMap3dSGIX) },
-    { "glDeformationMap3fSGIX", "GL_SGIX_polynomial_ffd\0", offsetof(struct opengl_funcs, p_glDeformationMap3fSGIX) },
-    { "glDeleteAsyncMarkersSGIX", "GL_SGIX_async\0", offsetof(struct opengl_funcs, p_glDeleteAsyncMarkersSGIX) },
-    { "glDeleteBufferRegion", "GL_KTX_buffer_region\0", offsetof(struct opengl_funcs, p_glDeleteBufferRegion) },
-    { "glDeleteBuffers", "GL_VERSION_1_5\0", offsetof(struct opengl_funcs, p_glDeleteBuffers) },
-    { "glDeleteBuffersARB", "GL_ARB_vertex_buffer_object\0", offsetof(struct opengl_funcs, p_glDeleteBuffersARB) },
-    { "glDeleteCommandListsNV", "GL_NV_command_list\0", offsetof(struct opengl_funcs, p_glDeleteCommandListsNV) },
-    { "glDeleteFencesAPPLE", "GL_APPLE_fence\0", offsetof(struct opengl_funcs, p_glDeleteFencesAPPLE) },
-    { "glDeleteFencesNV", "GL_NV_fence\0", offsetof(struct opengl_funcs, p_glDeleteFencesNV) },
-    { "glDeleteFragmentShaderATI", "GL_ATI_fragment_shader\0", offsetof(struct opengl_funcs, p_glDeleteFragmentShaderATI) },
-    { "glDeleteFramebuffers", "GL_ARB_framebuffer_object\0GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glDeleteFramebuffers) },
-    { "glDeleteFramebuffersEXT", "GL_EXT_framebuffer_object\0", offsetof(struct opengl_funcs, p_glDeleteFramebuffersEXT) },
-    { "glDeleteMemoryObjectsEXT", "GL_EXT_memory_object\0", offsetof(struct opengl_funcs, p_glDeleteMemoryObjectsEXT) },
-    { "glDeleteNamedStringARB", "GL_ARB_shading_language_include\0", offsetof(struct opengl_funcs, p_glDeleteNamedStringARB) },
-    { "glDeleteNamesAMD", "GL_AMD_name_gen_delete\0", offsetof(struct opengl_funcs, p_glDeleteNamesAMD) },
-    { "glDeleteObjectARB", "GL_ARB_shader_objects\0", offsetof(struct opengl_funcs, p_glDeleteObjectARB) },
-    { "glDeleteObjectBufferATI", "GL_ATI_vertex_array_object\0", offsetof(struct opengl_funcs, p_glDeleteObjectBufferATI) },
-    { "glDeleteOcclusionQueriesNV", "GL_NV_occlusion_query\0", offsetof(struct opengl_funcs, p_glDeleteOcclusionQueriesNV) },
-    { "glDeletePathsNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glDeletePathsNV) },
-    { "glDeletePerfMonitorsAMD", "GL_AMD_performance_monitor\0", offsetof(struct opengl_funcs, p_glDeletePerfMonitorsAMD) },
-    { "glDeletePerfQueryINTEL", "GL_INTEL_performance_query\0", offsetof(struct opengl_funcs, p_glDeletePerfQueryINTEL) },
-    { "glDeleteProgram", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glDeleteProgram) },
-    { "glDeleteProgramPipelines", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glDeleteProgramPipelines) },
-    { "glDeleteProgramsARB", "GL_ARB_fragment_program\0GL_ARB_vertex_program\0", offsetof(struct opengl_funcs, p_glDeleteProgramsARB) },
-    { "glDeleteProgramsNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glDeleteProgramsNV) },
-    { "glDeleteQueries", "GL_VERSION_1_5\0", offsetof(struct opengl_funcs, p_glDeleteQueries) },
-    { "glDeleteQueriesARB", "GL_ARB_occlusion_query\0", offsetof(struct opengl_funcs, p_glDeleteQueriesARB) },
-    { "glDeleteQueryResourceTagNV", "GL_NV_query_resource_tag\0", offsetof(struct opengl_funcs, p_glDeleteQueryResourceTagNV) },
-    { "glDeleteRenderbuffers", "GL_ARB_framebuffer_object\0GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glDeleteRenderbuffers) },
-    { "glDeleteRenderbuffersEXT", "GL_EXT_framebuffer_object\0", offsetof(struct opengl_funcs, p_glDeleteRenderbuffersEXT) },
-    { "glDeleteSamplers", "GL_ARB_sampler_objects\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glDeleteSamplers) },
-    { "glDeleteSemaphoresEXT", "GL_EXT_semaphore\0", offsetof(struct opengl_funcs, p_glDeleteSemaphoresEXT) },
-    { "glDeleteShader", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glDeleteShader) },
-    { "glDeleteStatesNV", "GL_NV_command_list\0", offsetof(struct opengl_funcs, p_glDeleteStatesNV) },
-    { "glDeleteSync", "GL_ARB_sync\0GL_VERSION_3_2\0", offsetof(struct opengl_funcs, p_glDeleteSync) },
-    { "glDeleteTexturesEXT", "GL_EXT_texture_object\0", offsetof(struct opengl_funcs, p_glDeleteTexturesEXT) },
-    { "glDeleteTransformFeedbacks", "GL_ARB_transform_feedback2\0GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glDeleteTransformFeedbacks) },
-    { "glDeleteTransformFeedbacksNV", "GL_NV_transform_feedback2\0", offsetof(struct opengl_funcs, p_glDeleteTransformFeedbacksNV) },
-    { "glDeleteVertexArrays", "GL_ARB_vertex_array_object\0GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glDeleteVertexArrays) },
-    { "glDeleteVertexArraysAPPLE", "GL_APPLE_vertex_array_object\0", offsetof(struct opengl_funcs, p_glDeleteVertexArraysAPPLE) },
-    { "glDeleteVertexShaderEXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glDeleteVertexShaderEXT) },
-    { "glDepthBoundsEXT", "GL_EXT_depth_bounds_test\0", offsetof(struct opengl_funcs, p_glDepthBoundsEXT) },
-    { "glDepthBoundsdNV", "GL_NV_depth_buffer_float\0", offsetof(struct opengl_funcs, p_glDepthBoundsdNV) },
-    { "glDepthRangeArraydvNV", "GL_ARB_viewport_array\0", offsetof(struct opengl_funcs, p_glDepthRangeArraydvNV) },
-    { "glDepthRangeArrayv", "GL_ARB_viewport_array\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glDepthRangeArrayv) },
-    { "glDepthRangeIndexed", "GL_ARB_viewport_array\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glDepthRangeIndexed) },
-    { "glDepthRangeIndexeddNV", "GL_ARB_viewport_array\0", offsetof(struct opengl_funcs, p_glDepthRangeIndexeddNV) },
-    { "glDepthRangedNV", "GL_NV_depth_buffer_float\0", offsetof(struct opengl_funcs, p_glDepthRangedNV) },
-    { "glDepthRangef", "GL_ARB_ES2_compatibility\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glDepthRangef) },
-    { "glDepthRangefOES", "GL_OES_single_precision\0", offsetof(struct opengl_funcs, p_glDepthRangefOES) },
-    { "glDepthRangex", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glDepthRangex) },
-    { "glDepthRangexOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glDepthRangexOES) },
-    { "glDetachObjectARB", "GL_ARB_shader_objects\0", offsetof(struct opengl_funcs, p_glDetachObjectARB) },
-    { "glDetachShader", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glDetachShader) },
-    { "glDetailTexFuncSGIS", "GL_SGIS_detail_texture\0", offsetof(struct opengl_funcs, p_glDetailTexFuncSGIS) },
-    { "glDisableClientStateIndexedEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glDisableClientStateIndexedEXT) },
-    { "glDisableClientStateiEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glDisableClientStateiEXT) },
-    { "glDisableIndexedEXT", "GL_EXT_direct_state_access\0GL_EXT_draw_buffers2\0", offsetof(struct opengl_funcs, p_glDisableIndexedEXT) },
-    { "glDisableVariantClientStateEXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glDisableVariantClientStateEXT) },
-    { "glDisableVertexArrayAttrib", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glDisableVertexArrayAttrib) },
-    { "glDisableVertexArrayAttribEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glDisableVertexArrayAttribEXT) },
-    { "glDisableVertexArrayEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glDisableVertexArrayEXT) },
-    { "glDisableVertexAttribAPPLE", "GL_APPLE_vertex_program_evaluators\0", offsetof(struct opengl_funcs, p_glDisableVertexAttribAPPLE) },
-    { "glDisableVertexAttribArray", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glDisableVertexAttribArray) },
-    { "glDisableVertexAttribArrayARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glDisableVertexAttribArrayARB) },
-    { "glDisablei", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glDisablei) },
-    { "glDispatchCompute", "GL_ARB_compute_shader\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glDispatchCompute) },
-    { "glDispatchComputeGroupSizeARB", "GL_ARB_compute_variable_group_size\0", offsetof(struct opengl_funcs, p_glDispatchComputeGroupSizeARB) },
-    { "glDispatchComputeIndirect", "GL_ARB_compute_shader\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glDispatchComputeIndirect) },
-    { "glDrawArraysEXT", "GL_EXT_vertex_array\0", offsetof(struct opengl_funcs, p_glDrawArraysEXT) },
-    { "glDrawArraysIndirect", "GL_ARB_draw_indirect\0GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glDrawArraysIndirect) },
-    { "glDrawArraysInstanced", "GL_VERSION_3_1\0", offsetof(struct opengl_funcs, p_glDrawArraysInstanced) },
-    { "glDrawArraysInstancedARB", "GL_ARB_draw_instanced\0", offsetof(struct opengl_funcs, p_glDrawArraysInstancedARB) },
-    { "glDrawArraysInstancedBaseInstance", "GL_ARB_base_instance\0GL_VERSION_4_2\0", offsetof(struct opengl_funcs, p_glDrawArraysInstancedBaseInstance) },
-    { "glDrawArraysInstancedEXT", "GL_EXT_draw_instanced\0", offsetof(struct opengl_funcs, p_glDrawArraysInstancedEXT) },
-    { "glDrawBufferRegion", "GL_KTX_buffer_region\0", offsetof(struct opengl_funcs, p_glDrawBufferRegion) },
-    { "glDrawBuffers", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glDrawBuffers) },
-    { "glDrawBuffersARB", "GL_ARB_draw_buffers\0", offsetof(struct opengl_funcs, p_glDrawBuffersARB) },
-    { "glDrawBuffersATI", "GL_ATI_draw_buffers\0", offsetof(struct opengl_funcs, p_glDrawBuffersATI) },
-    { "glDrawCommandsAddressNV", "GL_NV_command_list\0", offsetof(struct opengl_funcs, p_glDrawCommandsAddressNV) },
-    { "glDrawCommandsNV", "GL_NV_command_list\0", offsetof(struct opengl_funcs, p_glDrawCommandsNV) },
-    { "glDrawCommandsStatesAddressNV", "GL_NV_command_list\0", offsetof(struct opengl_funcs, p_glDrawCommandsStatesAddressNV) },
-    { "glDrawCommandsStatesNV", "GL_NV_command_list\0", offsetof(struct opengl_funcs, p_glDrawCommandsStatesNV) },
-    { "glDrawElementArrayAPPLE", "GL_APPLE_element_array\0", offsetof(struct opengl_funcs, p_glDrawElementArrayAPPLE) },
-    { "glDrawElementArrayATI", "GL_ATI_element_array\0", offsetof(struct opengl_funcs, p_glDrawElementArrayATI) },
-    { "glDrawElementsBaseVertex", "GL_ARB_draw_elements_base_vertex\0GL_VERSION_3_2\0", offsetof(struct opengl_funcs, p_glDrawElementsBaseVertex) },
-    { "glDrawElementsIndirect", "GL_ARB_draw_indirect\0GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glDrawElementsIndirect) },
-    { "glDrawElementsInstanced", "GL_VERSION_3_1\0", offsetof(struct opengl_funcs, p_glDrawElementsInstanced) },
-    { "glDrawElementsInstancedARB", "GL_ARB_draw_instanced\0", offsetof(struct opengl_funcs, p_glDrawElementsInstancedARB) },
-    { "glDrawElementsInstancedBaseInstance", "GL_ARB_base_instance\0GL_VERSION_4_2\0", offsetof(struct opengl_funcs, p_glDrawElementsInstancedBaseInstance) },
-    { "glDrawElementsInstancedBaseVertex", "GL_ARB_draw_elements_base_vertex\0GL_VERSION_3_2\0", offsetof(struct opengl_funcs, p_glDrawElementsInstancedBaseVertex) },
-    { "glDrawElementsInstancedBaseVertexBaseInstance", "GL_ARB_base_instance\0GL_VERSION_4_2\0", offsetof(struct opengl_funcs, p_glDrawElementsInstancedBaseVertexBaseInstance) },
-    { "glDrawElementsInstancedEXT", "GL_EXT_draw_instanced\0", offsetof(struct opengl_funcs, p_glDrawElementsInstancedEXT) },
-    { "glDrawMeshArraysSUN", "GL_SUN_mesh_array\0", offsetof(struct opengl_funcs, p_glDrawMeshArraysSUN) },
-    { "glDrawMeshTasksEXT", "GL_EXT_mesh_shader\0", offsetof(struct opengl_funcs, p_glDrawMeshTasksEXT) },
-    { "glDrawMeshTasksIndirectEXT", "GL_EXT_mesh_shader\0", offsetof(struct opengl_funcs, p_glDrawMeshTasksIndirectEXT) },
-    { "glDrawMeshTasksIndirectNV", "GL_NV_mesh_shader\0", offsetof(struct opengl_funcs, p_glDrawMeshTasksIndirectNV) },
-    { "glDrawMeshTasksNV", "GL_NV_mesh_shader\0", offsetof(struct opengl_funcs, p_glDrawMeshTasksNV) },
-    { "glDrawRangeElementArrayAPPLE", "GL_APPLE_element_array\0", offsetof(struct opengl_funcs, p_glDrawRangeElementArrayAPPLE) },
-    { "glDrawRangeElementArrayATI", "GL_ATI_element_array\0", offsetof(struct opengl_funcs, p_glDrawRangeElementArrayATI) },
-    { "glDrawRangeElements", "GL_VERSION_1_2\0", offsetof(struct opengl_funcs, p_glDrawRangeElements) },
-    { "glDrawRangeElementsBaseVertex", "GL_ARB_draw_elements_base_vertex\0GL_VERSION_3_2\0", offsetof(struct opengl_funcs, p_glDrawRangeElementsBaseVertex) },
-    { "glDrawRangeElementsEXT", "GL_EXT_draw_range_elements\0", offsetof(struct opengl_funcs, p_glDrawRangeElementsEXT) },
-    { "glDrawTextureNV", "GL_NV_draw_texture\0", offsetof(struct opengl_funcs, p_glDrawTextureNV) },
-    { "glDrawTransformFeedback", "GL_ARB_transform_feedback2\0GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glDrawTransformFeedback) },
-    { "glDrawTransformFeedbackInstanced", "GL_ARB_transform_feedback_instanced\0GL_VERSION_4_2\0", offsetof(struct opengl_funcs, p_glDrawTransformFeedbackInstanced) },
-    { "glDrawTransformFeedbackNV", "GL_NV_transform_feedback2\0", offsetof(struct opengl_funcs, p_glDrawTransformFeedbackNV) },
-    { "glDrawTransformFeedbackStream", "GL_ARB_transform_feedback3\0GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glDrawTransformFeedbackStream) },
-    { "glDrawTransformFeedbackStreamInstanced", "GL_ARB_transform_feedback_instanced\0GL_VERSION_4_2\0", offsetof(struct opengl_funcs, p_glDrawTransformFeedbackStreamInstanced) },
-    { "glDrawVkImageNV", "GL_NV_draw_vulkan_image\0", offsetof(struct opengl_funcs, p_glDrawVkImageNV) },
-    { "glEGLImageTargetTexStorageEXT", "GL_EXT_EGL_image_storage\0", offsetof(struct opengl_funcs, p_glEGLImageTargetTexStorageEXT) },
-    { "glEGLImageTargetTextureStorageEXT", "GL_EXT_EGL_image_storage\0", offsetof(struct opengl_funcs, p_glEGLImageTargetTextureStorageEXT) },
-    { "glEdgeFlagFormatNV", "GL_NV_vertex_buffer_unified_memory\0", offsetof(struct opengl_funcs, p_glEdgeFlagFormatNV) },
-    { "glEdgeFlagPointerEXT", "GL_EXT_vertex_array\0", offsetof(struct opengl_funcs, p_glEdgeFlagPointerEXT) },
-    { "glEdgeFlagPointerListIBM", "GL_IBM_vertex_array_lists\0", offsetof(struct opengl_funcs, p_glEdgeFlagPointerListIBM) },
-    { "glElementPointerAPPLE", "GL_APPLE_element_array\0", offsetof(struct opengl_funcs, p_glElementPointerAPPLE) },
-    { "glElementPointerATI", "GL_ATI_element_array\0", offsetof(struct opengl_funcs, p_glElementPointerATI) },
-    { "glEnableClientStateIndexedEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glEnableClientStateIndexedEXT) },
-    { "glEnableClientStateiEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glEnableClientStateiEXT) },
-    { "glEnableIndexedEXT", "GL_EXT_direct_state_access\0GL_EXT_draw_buffers2\0", offsetof(struct opengl_funcs, p_glEnableIndexedEXT) },
-    { "glEnableVariantClientStateEXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glEnableVariantClientStateEXT) },
-    { "glEnableVertexArrayAttrib", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glEnableVertexArrayAttrib) },
-    { "glEnableVertexArrayAttribEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glEnableVertexArrayAttribEXT) },
-    { "glEnableVertexArrayEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glEnableVertexArrayEXT) },
-    { "glEnableVertexAttribAPPLE", "GL_APPLE_vertex_program_evaluators\0", offsetof(struct opengl_funcs, p_glEnableVertexAttribAPPLE) },
-    { "glEnableVertexAttribArray", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glEnableVertexAttribArray) },
-    { "glEnableVertexAttribArrayARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glEnableVertexAttribArrayARB) },
-    { "glEnablei", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glEnablei) },
-    { "glEndConditionalRender", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glEndConditionalRender) },
-    { "glEndConditionalRenderNV", "GL_NV_conditional_render\0", offsetof(struct opengl_funcs, p_glEndConditionalRenderNV) },
-    { "glEndConditionalRenderNVX", "GL_NVX_conditional_render\0", offsetof(struct opengl_funcs, p_glEndConditionalRenderNVX) },
-    { "glEndFragmentShaderATI", "GL_ATI_fragment_shader\0", offsetof(struct opengl_funcs, p_glEndFragmentShaderATI) },
-    { "glEndOcclusionQueryNV", "GL_NV_occlusion_query\0", offsetof(struct opengl_funcs, p_glEndOcclusionQueryNV) },
-    { "glEndPerfMonitorAMD", "GL_AMD_performance_monitor\0", offsetof(struct opengl_funcs, p_glEndPerfMonitorAMD) },
-    { "glEndPerfQueryINTEL", "GL_INTEL_performance_query\0", offsetof(struct opengl_funcs, p_glEndPerfQueryINTEL) },
-    { "glEndQuery", "GL_VERSION_1_5\0", offsetof(struct opengl_funcs, p_glEndQuery) },
-    { "glEndQueryARB", "GL_ARB_occlusion_query\0", offsetof(struct opengl_funcs, p_glEndQueryARB) },
-    { "glEndQueryIndexed", "GL_ARB_transform_feedback3\0GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glEndQueryIndexed) },
-    { "glEndTransformFeedback", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glEndTransformFeedback) },
-    { "glEndTransformFeedbackEXT", "GL_EXT_transform_feedback\0", offsetof(struct opengl_funcs, p_glEndTransformFeedbackEXT) },
-    { "glEndTransformFeedbackNV", "GL_NV_transform_feedback\0", offsetof(struct opengl_funcs, p_glEndTransformFeedbackNV) },
-    { "glEndVertexShaderEXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glEndVertexShaderEXT) },
-    { "glEndVideoCaptureNV", "GL_NV_video_capture\0", offsetof(struct opengl_funcs, p_glEndVideoCaptureNV) },
-    { "glEvalCoord1xOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glEvalCoord1xOES) },
-    { "glEvalCoord1xvOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glEvalCoord1xvOES) },
-    { "glEvalCoord2xOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glEvalCoord2xOES) },
-    { "glEvalCoord2xvOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glEvalCoord2xvOES) },
-    { "glEvalMapsNV", "GL_NV_evaluators\0", offsetof(struct opengl_funcs, p_glEvalMapsNV) },
-    { "glEvaluateDepthValuesARB", "GL_ARB_sample_locations\0", offsetof(struct opengl_funcs, p_glEvaluateDepthValuesARB) },
-    { "glExecuteProgramNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glExecuteProgramNV) },
-    { "glExtractComponentEXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glExtractComponentEXT) },
-    { "glFeedbackBufferxOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glFeedbackBufferxOES) },
-    { "glFenceSync", "GL_ARB_sync\0GL_VERSION_3_2\0", offsetof(struct opengl_funcs, p_glFenceSync) },
-    { "glFinalCombinerInputNV", "GL_NV_register_combiners\0", offsetof(struct opengl_funcs, p_glFinalCombinerInputNV) },
-    { "glFinishAsyncSGIX", "GL_SGIX_async\0", offsetof(struct opengl_funcs, p_glFinishAsyncSGIX) },
-    { "glFinishFenceAPPLE", "GL_APPLE_fence\0", offsetof(struct opengl_funcs, p_glFinishFenceAPPLE) },
-    { "glFinishFenceNV", "GL_NV_fence\0", offsetof(struct opengl_funcs, p_glFinishFenceNV) },
-    { "glFinishObjectAPPLE", "GL_APPLE_fence\0", offsetof(struct opengl_funcs, p_glFinishObjectAPPLE) },
-    { "glFinishTextureSUNX", "GL_SUNX_constant_data\0", offsetof(struct opengl_funcs, p_glFinishTextureSUNX) },
-    { "glFlushMappedBufferRange", "GL_ARB_map_buffer_range\0GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glFlushMappedBufferRange) },
-    { "glFlushMappedBufferRangeAPPLE", "GL_APPLE_flush_buffer_range\0", offsetof(struct opengl_funcs, p_glFlushMappedBufferRangeAPPLE) },
-    { "glFlushMappedNamedBufferRange", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glFlushMappedNamedBufferRange) },
-    { "glFlushMappedNamedBufferRangeEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glFlushMappedNamedBufferRangeEXT) },
-    { "glFlushPixelDataRangeNV", "GL_NV_pixel_data_range\0", offsetof(struct opengl_funcs, p_glFlushPixelDataRangeNV) },
-    { "glFlushRasterSGIX", "GL_SGIX_flush_raster\0", offsetof(struct opengl_funcs, p_glFlushRasterSGIX) },
-    { "glFlushStaticDataIBM", "GL_IBM_static_data\0", offsetof(struct opengl_funcs, p_glFlushStaticDataIBM) },
-    { "glFlushVertexArrayRangeAPPLE", "GL_APPLE_vertex_array_range\0", offsetof(struct opengl_funcs, p_glFlushVertexArrayRangeAPPLE) },
-    { "glFlushVertexArrayRangeNV", "GL_NV_vertex_array_range\0", offsetof(struct opengl_funcs, p_glFlushVertexArrayRangeNV) },
-    { "glFogCoordFormatNV", "GL_NV_vertex_buffer_unified_memory\0", offsetof(struct opengl_funcs, p_glFogCoordFormatNV) },
-    { "glFogCoordPointer", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glFogCoordPointer) },
-    { "glFogCoordPointerEXT", "GL_EXT_fog_coord\0", offsetof(struct opengl_funcs, p_glFogCoordPointerEXT) },
-    { "glFogCoordPointerListIBM", "GL_IBM_vertex_array_lists\0", offsetof(struct opengl_funcs, p_glFogCoordPointerListIBM) },
-    { "glFogCoordd", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glFogCoordd) },
-    { "glFogCoorddEXT", "GL_EXT_fog_coord\0", offsetof(struct opengl_funcs, p_glFogCoorddEXT) },
-    { "glFogCoorddv", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glFogCoorddv) },
-    { "glFogCoorddvEXT", "GL_EXT_fog_coord\0", offsetof(struct opengl_funcs, p_glFogCoorddvEXT) },
-    { "glFogCoordf", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glFogCoordf) },
-    { "glFogCoordfEXT", "GL_EXT_fog_coord\0", offsetof(struct opengl_funcs, p_glFogCoordfEXT) },
-    { "glFogCoordfv", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glFogCoordfv) },
-    { "glFogCoordfvEXT", "GL_EXT_fog_coord\0", offsetof(struct opengl_funcs, p_glFogCoordfvEXT) },
-    { "glFogCoordhNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glFogCoordhNV) },
-    { "glFogCoordhvNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glFogCoordhvNV) },
-    { "glFogFuncSGIS", "GL_SGIS_fog_function\0", offsetof(struct opengl_funcs, p_glFogFuncSGIS) },
-    { "glFogx", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glFogx) },
-    { "glFogxOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glFogxOES) },
-    { "glFogxv", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glFogxv) },
-    { "glFogxvOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glFogxvOES) },
-    { "glFragmentColorMaterialSGIX", "GL_SGIX_fragment_lighting\0", offsetof(struct opengl_funcs, p_glFragmentColorMaterialSGIX) },
-    { "glFragmentCoverageColorNV", "GL_NV_fragment_coverage_to_color\0", offsetof(struct opengl_funcs, p_glFragmentCoverageColorNV) },
-    { "glFragmentLightModelfSGIX", "GL_SGIX_fragment_lighting\0", offsetof(struct opengl_funcs, p_glFragmentLightModelfSGIX) },
-    { "glFragmentLightModelfvSGIX", "GL_SGIX_fragment_lighting\0", offsetof(struct opengl_funcs, p_glFragmentLightModelfvSGIX) },
-    { "glFragmentLightModeliSGIX", "GL_SGIX_fragment_lighting\0", offsetof(struct opengl_funcs, p_glFragmentLightModeliSGIX) },
-    { "glFragmentLightModelivSGIX", "GL_SGIX_fragment_lighting\0", offsetof(struct opengl_funcs, p_glFragmentLightModelivSGIX) },
-    { "glFragmentLightfSGIX", "GL_SGIX_fragment_lighting\0", offsetof(struct opengl_funcs, p_glFragmentLightfSGIX) },
-    { "glFragmentLightfvSGIX", "GL_SGIX_fragment_lighting\0", offsetof(struct opengl_funcs, p_glFragmentLightfvSGIX) },
-    { "glFragmentLightiSGIX", "GL_SGIX_fragment_lighting\0", offsetof(struct opengl_funcs, p_glFragmentLightiSGIX) },
-    { "glFragmentLightivSGIX", "GL_SGIX_fragment_lighting\0", offsetof(struct opengl_funcs, p_glFragmentLightivSGIX) },
-    { "glFragmentMaterialfSGIX", "GL_SGIX_fragment_lighting\0", offsetof(struct opengl_funcs, p_glFragmentMaterialfSGIX) },
-    { "glFragmentMaterialfvSGIX", "GL_SGIX_fragment_lighting\0", offsetof(struct opengl_funcs, p_glFragmentMaterialfvSGIX) },
-    { "glFragmentMaterialiSGIX", "GL_SGIX_fragment_lighting\0", offsetof(struct opengl_funcs, p_glFragmentMaterialiSGIX) },
-    { "glFragmentMaterialivSGIX", "GL_SGIX_fragment_lighting\0", offsetof(struct opengl_funcs, p_glFragmentMaterialivSGIX) },
-    { "glFrameTerminatorGREMEDY", "GL_GREMEDY_frame_terminator\0", offsetof(struct opengl_funcs, p_glFrameTerminatorGREMEDY) },
-    { "glFrameZoomSGIX", "GL_SGIX_framezoom\0", offsetof(struct opengl_funcs, p_glFrameZoomSGIX) },
-    { "glFramebufferDrawBufferEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glFramebufferDrawBufferEXT) },
-    { "glFramebufferDrawBuffersEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glFramebufferDrawBuffersEXT) },
-    { "glFramebufferFetchBarrierEXT", "GL_EXT_shader_framebuffer_fetch_non_coherent\0", offsetof(struct opengl_funcs, p_glFramebufferFetchBarrierEXT) },
-    { "glFramebufferParameteri", "GL_ARB_framebuffer_no_attachments\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glFramebufferParameteri) },
-    { "glFramebufferParameteriMESA", "GL_MESA_framebuffer_flip_y\0", offsetof(struct opengl_funcs, p_glFramebufferParameteriMESA) },
-    { "glFramebufferReadBufferEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glFramebufferReadBufferEXT) },
-    { "glFramebufferRenderbuffer", "GL_ARB_framebuffer_object\0GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glFramebufferRenderbuffer) },
-    { "glFramebufferRenderbufferEXT", "GL_EXT_framebuffer_object\0", offsetof(struct opengl_funcs, p_glFramebufferRenderbufferEXT) },
-    { "glFramebufferSampleLocationsfvARB", "GL_ARB_sample_locations\0", offsetof(struct opengl_funcs, p_glFramebufferSampleLocationsfvARB) },
-    { "glFramebufferSampleLocationsfvNV", "GL_NV_sample_locations\0", offsetof(struct opengl_funcs, p_glFramebufferSampleLocationsfvNV) },
-    { "glFramebufferSamplePositionsfvAMD", "GL_AMD_framebuffer_sample_positions\0", offsetof(struct opengl_funcs, p_glFramebufferSamplePositionsfvAMD) },
-    { "glFramebufferShadingRateEXT", "GL_EXT_fragment_shading_rate\0GL_EXT_fragment_shading_rate_attachment\0GL_EXT_fragment_shading_rate_primitive\0", offsetof(struct opengl_funcs, p_glFramebufferShadingRateEXT) },
-    { "glFramebufferTexture", "GL_VERSION_3_2\0", offsetof(struct opengl_funcs, p_glFramebufferTexture) },
-    { "glFramebufferTexture1D", "GL_ARB_framebuffer_object\0GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glFramebufferTexture1D) },
-    { "glFramebufferTexture1DEXT", "GL_EXT_framebuffer_object\0", offsetof(struct opengl_funcs, p_glFramebufferTexture1DEXT) },
-    { "glFramebufferTexture2D", "GL_ARB_framebuffer_object\0GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glFramebufferTexture2D) },
-    { "glFramebufferTexture2DEXT", "GL_EXT_framebuffer_object\0", offsetof(struct opengl_funcs, p_glFramebufferTexture2DEXT) },
-    { "glFramebufferTexture3D", "GL_ARB_framebuffer_object\0GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glFramebufferTexture3D) },
-    { "glFramebufferTexture3DEXT", "GL_EXT_framebuffer_object\0", offsetof(struct opengl_funcs, p_glFramebufferTexture3DEXT) },
-    { "glFramebufferTextureARB", "GL_ARB_geometry_shader4\0", offsetof(struct opengl_funcs, p_glFramebufferTextureARB) },
-    { "glFramebufferTextureEXT", "GL_NV_geometry_program4\0", offsetof(struct opengl_funcs, p_glFramebufferTextureEXT) },
-    { "glFramebufferTextureFaceARB", "GL_ARB_geometry_shader4\0", offsetof(struct opengl_funcs, p_glFramebufferTextureFaceARB) },
-    { "glFramebufferTextureFaceEXT", "GL_NV_geometry_program4\0", offsetof(struct opengl_funcs, p_glFramebufferTextureFaceEXT) },
-    { "glFramebufferTextureLayer", "GL_ARB_framebuffer_object\0GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glFramebufferTextureLayer) },
-    { "glFramebufferTextureLayerARB", "GL_ARB_geometry_shader4\0", offsetof(struct opengl_funcs, p_glFramebufferTextureLayerARB) },
-    { "glFramebufferTextureLayerEXT", "GL_EXT_texture_array\0GL_NV_geometry_program4\0", offsetof(struct opengl_funcs, p_glFramebufferTextureLayerEXT) },
-    { "glFramebufferTextureMultiviewOVR", "GL_OVR_multiview\0", offsetof(struct opengl_funcs, p_glFramebufferTextureMultiviewOVR) },
-    { "glFreeObjectBufferATI", "GL_ATI_vertex_array_object\0", offsetof(struct opengl_funcs, p_glFreeObjectBufferATI) },
-    { "glFrustumf", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glFrustumf) },
-    { "glFrustumfOES", "GL_OES_single_precision\0", offsetof(struct opengl_funcs, p_glFrustumfOES) },
-    { "glFrustumx", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glFrustumx) },
-    { "glFrustumxOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glFrustumxOES) },
-    { "glGenAsyncMarkersSGIX", "GL_SGIX_async\0", offsetof(struct opengl_funcs, p_glGenAsyncMarkersSGIX) },
-    { "glGenBuffers", "GL_VERSION_1_5\0", offsetof(struct opengl_funcs, p_glGenBuffers) },
-    { "glGenBuffersARB", "GL_ARB_vertex_buffer_object\0", offsetof(struct opengl_funcs, p_glGenBuffersARB) },
-    { "glGenFencesAPPLE", "GL_APPLE_fence\0", offsetof(struct opengl_funcs, p_glGenFencesAPPLE) },
-    { "glGenFencesNV", "GL_NV_fence\0", offsetof(struct opengl_funcs, p_glGenFencesNV) },
-    { "glGenFragmentShadersATI", "GL_ATI_fragment_shader\0", offsetof(struct opengl_funcs, p_glGenFragmentShadersATI) },
-    { "glGenFramebuffers", "GL_ARB_framebuffer_object\0GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glGenFramebuffers) },
-    { "glGenFramebuffersEXT", "GL_EXT_framebuffer_object\0", offsetof(struct opengl_funcs, p_glGenFramebuffersEXT) },
-    { "glGenNamesAMD", "GL_AMD_name_gen_delete\0", offsetof(struct opengl_funcs, p_glGenNamesAMD) },
-    { "glGenOcclusionQueriesNV", "GL_NV_occlusion_query\0", offsetof(struct opengl_funcs, p_glGenOcclusionQueriesNV) },
-    { "glGenPathsNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glGenPathsNV) },
-    { "glGenPerfMonitorsAMD", "GL_AMD_performance_monitor\0", offsetof(struct opengl_funcs, p_glGenPerfMonitorsAMD) },
-    { "glGenProgramPipelines", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glGenProgramPipelines) },
-    { "glGenProgramsARB", "GL_ARB_fragment_program\0GL_ARB_vertex_program\0", offsetof(struct opengl_funcs, p_glGenProgramsARB) },
-    { "glGenProgramsNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glGenProgramsNV) },
-    { "glGenQueries", "GL_VERSION_1_5\0", offsetof(struct opengl_funcs, p_glGenQueries) },
-    { "glGenQueriesARB", "GL_ARB_occlusion_query\0", offsetof(struct opengl_funcs, p_glGenQueriesARB) },
-    { "glGenQueryResourceTagNV", "GL_NV_query_resource_tag\0", offsetof(struct opengl_funcs, p_glGenQueryResourceTagNV) },
-    { "glGenRenderbuffers", "GL_ARB_framebuffer_object\0GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glGenRenderbuffers) },
-    { "glGenRenderbuffersEXT", "GL_EXT_framebuffer_object\0", offsetof(struct opengl_funcs, p_glGenRenderbuffersEXT) },
-    { "glGenSamplers", "GL_ARB_sampler_objects\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glGenSamplers) },
-    { "glGenSemaphoresEXT", "GL_EXT_semaphore\0", offsetof(struct opengl_funcs, p_glGenSemaphoresEXT) },
-    { "glGenSymbolsEXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glGenSymbolsEXT) },
-    { "glGenTexturesEXT", "GL_EXT_texture_object\0", offsetof(struct opengl_funcs, p_glGenTexturesEXT) },
-    { "glGenTransformFeedbacks", "GL_ARB_transform_feedback2\0GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glGenTransformFeedbacks) },
-    { "glGenTransformFeedbacksNV", "GL_NV_transform_feedback2\0", offsetof(struct opengl_funcs, p_glGenTransformFeedbacksNV) },
-    { "glGenVertexArrays", "GL_ARB_vertex_array_object\0GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glGenVertexArrays) },
-    { "glGenVertexArraysAPPLE", "GL_APPLE_vertex_array_object\0", offsetof(struct opengl_funcs, p_glGenVertexArraysAPPLE) },
-    { "glGenVertexShadersEXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glGenVertexShadersEXT) },
-    { "glGenerateMipmap", "GL_ARB_framebuffer_object\0GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glGenerateMipmap) },
-    { "glGenerateMipmapEXT", "GL_EXT_framebuffer_object\0", offsetof(struct opengl_funcs, p_glGenerateMipmapEXT) },
-    { "glGenerateMultiTexMipmapEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGenerateMultiTexMipmapEXT) },
-    { "glGenerateTextureMipmap", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGenerateTextureMipmap) },
-    { "glGenerateTextureMipmapEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGenerateTextureMipmapEXT) },
-    { "glGetActiveAtomicCounterBufferiv", "GL_ARB_shader_atomic_counters\0GL_VERSION_4_2\0", offsetof(struct opengl_funcs, p_glGetActiveAtomicCounterBufferiv) },
-    { "glGetActiveAttrib", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glGetActiveAttrib) },
-    { "glGetActiveAttribARB", "GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glGetActiveAttribARB) },
-    { "glGetActiveSubroutineName", "GL_ARB_shader_subroutine\0GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glGetActiveSubroutineName) },
-    { "glGetActiveSubroutineUniformName", "GL_ARB_shader_subroutine\0GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glGetActiveSubroutineUniformName) },
-    { "glGetActiveSubroutineUniformiv", "GL_ARB_shader_subroutine\0GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glGetActiveSubroutineUniformiv) },
-    { "glGetActiveUniform", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glGetActiveUniform) },
-    { "glGetActiveUniformARB", "GL_ARB_shader_objects\0", offsetof(struct opengl_funcs, p_glGetActiveUniformARB) },
-    { "glGetActiveUniformBlockName", "GL_ARB_uniform_buffer_object\0GL_VERSION_3_1\0", offsetof(struct opengl_funcs, p_glGetActiveUniformBlockName) },
-    { "glGetActiveUniformBlockiv", "GL_ARB_uniform_buffer_object\0GL_VERSION_3_1\0", offsetof(struct opengl_funcs, p_glGetActiveUniformBlockiv) },
-    { "glGetActiveUniformName", "GL_ARB_uniform_buffer_object\0GL_VERSION_3_1\0", offsetof(struct opengl_funcs, p_glGetActiveUniformName) },
-    { "glGetActiveUniformsiv", "GL_ARB_uniform_buffer_object\0GL_VERSION_3_1\0", offsetof(struct opengl_funcs, p_glGetActiveUniformsiv) },
-    { "glGetActiveVaryingNV", "GL_NV_transform_feedback\0", offsetof(struct opengl_funcs, p_glGetActiveVaryingNV) },
-    { "glGetArrayObjectfvATI", "GL_ATI_vertex_array_object\0", offsetof(struct opengl_funcs, p_glGetArrayObjectfvATI) },
-    { "glGetArrayObjectivATI", "GL_ATI_vertex_array_object\0", offsetof(struct opengl_funcs, p_glGetArrayObjectivATI) },
-    { "glGetAttachedObjectsARB", "GL_ARB_shader_objects\0", offsetof(struct opengl_funcs, p_glGetAttachedObjectsARB) },
-    { "glGetAttachedShaders", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glGetAttachedShaders) },
-    { "glGetAttribLocation", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glGetAttribLocation) },
-    { "glGetAttribLocationARB", "GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glGetAttribLocationARB) },
-    { "glGetBooleanIndexedvEXT", "GL_EXT_direct_state_access\0GL_EXT_draw_buffers2\0", offsetof(struct opengl_funcs, p_glGetBooleanIndexedvEXT) },
-    { "glGetBooleani_v", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glGetBooleani_v) },
-    { "glGetBufferParameteri64v", "GL_VERSION_3_2\0", offsetof(struct opengl_funcs, p_glGetBufferParameteri64v) },
-    { "glGetBufferParameteriv", "GL_VERSION_1_5\0", offsetof(struct opengl_funcs, p_glGetBufferParameteriv) },
-    { "glGetBufferParameterivARB", "GL_ARB_vertex_buffer_object\0", offsetof(struct opengl_funcs, p_glGetBufferParameterivARB) },
-    { "glGetBufferParameterui64vNV", "GL_NV_shader_buffer_load\0", offsetof(struct opengl_funcs, p_glGetBufferParameterui64vNV) },
-    { "glGetBufferPointerv", "GL_VERSION_1_5\0", offsetof(struct opengl_funcs, p_glGetBufferPointerv) },
-    { "glGetBufferPointervARB", "GL_ARB_vertex_buffer_object\0", offsetof(struct opengl_funcs, p_glGetBufferPointervARB) },
-    { "glGetBufferSubData", "GL_VERSION_1_5\0", offsetof(struct opengl_funcs, p_glGetBufferSubData) },
-    { "glGetBufferSubDataARB", "GL_ARB_vertex_buffer_object\0", offsetof(struct opengl_funcs, p_glGetBufferSubDataARB) },
-    { "glGetClipPlanef", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glGetClipPlanef) },
-    { "glGetClipPlanefOES", "GL_OES_single_precision\0", offsetof(struct opengl_funcs, p_glGetClipPlanefOES) },
-    { "glGetClipPlanex", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glGetClipPlanex) },
-    { "glGetClipPlanexOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glGetClipPlanexOES) },
-    { "glGetColorTable", "GL_ARB_imaging\0", offsetof(struct opengl_funcs, p_glGetColorTable) },
-    { "glGetColorTableEXT", "GL_EXT_paletted_texture\0", offsetof(struct opengl_funcs, p_glGetColorTableEXT) },
-    { "glGetColorTableParameterfv", "GL_ARB_imaging\0", offsetof(struct opengl_funcs, p_glGetColorTableParameterfv) },
-    { "glGetColorTableParameterfvEXT", "GL_EXT_paletted_texture\0", offsetof(struct opengl_funcs, p_glGetColorTableParameterfvEXT) },
-    { "glGetColorTableParameterfvSGI", "GL_SGI_color_table\0", offsetof(struct opengl_funcs, p_glGetColorTableParameterfvSGI) },
-    { "glGetColorTableParameteriv", "GL_ARB_imaging\0", offsetof(struct opengl_funcs, p_glGetColorTableParameteriv) },
-    { "glGetColorTableParameterivEXT", "GL_EXT_paletted_texture\0", offsetof(struct opengl_funcs, p_glGetColorTableParameterivEXT) },
-    { "glGetColorTableParameterivSGI", "GL_SGI_color_table\0", offsetof(struct opengl_funcs, p_glGetColorTableParameterivSGI) },
-    { "glGetColorTableSGI", "GL_SGI_color_table\0", offsetof(struct opengl_funcs, p_glGetColorTableSGI) },
-    { "glGetCombinerInputParameterfvNV", "GL_NV_register_combiners\0", offsetof(struct opengl_funcs, p_glGetCombinerInputParameterfvNV) },
-    { "glGetCombinerInputParameterivNV", "GL_NV_register_combiners\0", offsetof(struct opengl_funcs, p_glGetCombinerInputParameterivNV) },
-    { "glGetCombinerOutputParameterfvNV", "GL_NV_register_combiners\0", offsetof(struct opengl_funcs, p_glGetCombinerOutputParameterfvNV) },
-    { "glGetCombinerOutputParameterivNV", "GL_NV_register_combiners\0", offsetof(struct opengl_funcs, p_glGetCombinerOutputParameterivNV) },
-    { "glGetCombinerStageParameterfvNV", "GL_NV_register_combiners2\0", offsetof(struct opengl_funcs, p_glGetCombinerStageParameterfvNV) },
-    { "glGetCommandHeaderNV", "GL_NV_command_list\0", offsetof(struct opengl_funcs, p_glGetCommandHeaderNV) },
-    { "glGetCompressedMultiTexImageEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetCompressedMultiTexImageEXT) },
-    { "glGetCompressedTexImage", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glGetCompressedTexImage) },
-    { "glGetCompressedTexImageARB", "GL_ARB_texture_compression\0GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glGetCompressedTexImageARB) },
-    { "glGetCompressedTextureImage", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetCompressedTextureImage) },
-    { "glGetCompressedTextureImageEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetCompressedTextureImageEXT) },
-    { "glGetCompressedTextureSubImage", "GL_ARB_get_texture_sub_image\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetCompressedTextureSubImage) },
-    { "glGetConvolutionFilter", "GL_ARB_imaging\0", offsetof(struct opengl_funcs, p_glGetConvolutionFilter) },
-    { "glGetConvolutionFilterEXT", "GL_EXT_convolution\0", offsetof(struct opengl_funcs, p_glGetConvolutionFilterEXT) },
-    { "glGetConvolutionParameterfv", "GL_ARB_imaging\0", offsetof(struct opengl_funcs, p_glGetConvolutionParameterfv) },
-    { "glGetConvolutionParameterfvEXT", "GL_EXT_convolution\0", offsetof(struct opengl_funcs, p_glGetConvolutionParameterfvEXT) },
-    { "glGetConvolutionParameteriv", "GL_ARB_imaging\0", offsetof(struct opengl_funcs, p_glGetConvolutionParameteriv) },
-    { "glGetConvolutionParameterivEXT", "GL_EXT_convolution\0", offsetof(struct opengl_funcs, p_glGetConvolutionParameterivEXT) },
-    { "glGetConvolutionParameterxvOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glGetConvolutionParameterxvOES) },
-    { "glGetCoverageModulationTableNV", "GL_NV_framebuffer_mixed_samples\0", offsetof(struct opengl_funcs, p_glGetCoverageModulationTableNV) },
-    { "glGetDebugMessageLog", "GL_KHR_debug\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glGetDebugMessageLog) },
-    { "glGetDebugMessageLogAMD", "GL_AMDX_debug_output\0GL_AMD_debug_output\0", offsetof(struct opengl_funcs, p_glGetDebugMessageLogAMD) },
-    { "glGetDebugMessageLogARB", "GL_ARB_debug_output\0", offsetof(struct opengl_funcs, p_glGetDebugMessageLogARB) },
-    { "glGetDetailTexFuncSGIS", "GL_SGIS_detail_texture\0", offsetof(struct opengl_funcs, p_glGetDetailTexFuncSGIS) },
-    { "glGetDoubleIndexedvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetDoubleIndexedvEXT) },
-    { "glGetDoublei_v", "GL_ARB_viewport_array\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glGetDoublei_v) },
-    { "glGetDoublei_vEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetDoublei_vEXT) },
-    { "glGetFenceivNV", "GL_NV_fence\0", offsetof(struct opengl_funcs, p_glGetFenceivNV) },
-    { "glGetFinalCombinerInputParameterfvNV", "GL_NV_register_combiners\0", offsetof(struct opengl_funcs, p_glGetFinalCombinerInputParameterfvNV) },
-    { "glGetFinalCombinerInputParameterivNV", "GL_NV_register_combiners\0", offsetof(struct opengl_funcs, p_glGetFinalCombinerInputParameterivNV) },
-    { "glGetFirstPerfQueryIdINTEL", "GL_INTEL_performance_query\0", offsetof(struct opengl_funcs, p_glGetFirstPerfQueryIdINTEL) },
-    { "glGetFixedv", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glGetFixedv) },
-    { "glGetFixedvOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glGetFixedvOES) },
-    { "glGetFloatIndexedvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetFloatIndexedvEXT) },
-    { "glGetFloati_v", "GL_ARB_viewport_array\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glGetFloati_v) },
-    { "glGetFloati_vEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetFloati_vEXT) },
-    { "glGetFogFuncSGIS", "GL_SGIS_fog_function\0", offsetof(struct opengl_funcs, p_glGetFogFuncSGIS) },
-    { "glGetFragDataIndex", "GL_ARB_blend_func_extended\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glGetFragDataIndex) },
-    { "glGetFragDataLocation", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glGetFragDataLocation) },
-    { "glGetFragDataLocationEXT", "GL_EXT_gpu_shader4\0", offsetof(struct opengl_funcs, p_glGetFragDataLocationEXT) },
-    { "glGetFragmentLightfvSGIX", "GL_SGIX_fragment_lighting\0", offsetof(struct opengl_funcs, p_glGetFragmentLightfvSGIX) },
-    { "glGetFragmentLightivSGIX", "GL_SGIX_fragment_lighting\0", offsetof(struct opengl_funcs, p_glGetFragmentLightivSGIX) },
-    { "glGetFragmentMaterialfvSGIX", "GL_SGIX_fragment_lighting\0", offsetof(struct opengl_funcs, p_glGetFragmentMaterialfvSGIX) },
-    { "glGetFragmentMaterialivSGIX", "GL_SGIX_fragment_lighting\0", offsetof(struct opengl_funcs, p_glGetFragmentMaterialivSGIX) },
-    { "glGetFragmentShadingRatesEXT", "GL_EXT_fragment_shading_rate\0GL_EXT_fragment_shading_rate_attachment\0GL_EXT_fragment_shading_rate_primitive\0", offsetof(struct opengl_funcs, p_glGetFragmentShadingRatesEXT) },
-    { "glGetFramebufferAttachmentParameteriv", "GL_ARB_framebuffer_object\0GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glGetFramebufferAttachmentParameteriv) },
-    { "glGetFramebufferAttachmentParameterivEXT", "GL_EXT_framebuffer_object\0", offsetof(struct opengl_funcs, p_glGetFramebufferAttachmentParameterivEXT) },
-    { "glGetFramebufferParameterfvAMD", "GL_AMD_framebuffer_sample_positions\0", offsetof(struct opengl_funcs, p_glGetFramebufferParameterfvAMD) },
-    { "glGetFramebufferParameteriv", "GL_ARB_framebuffer_no_attachments\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glGetFramebufferParameteriv) },
-    { "glGetFramebufferParameterivEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetFramebufferParameterivEXT) },
-    { "glGetFramebufferParameterivMESA", "GL_MESA_framebuffer_flip_y\0", offsetof(struct opengl_funcs, p_glGetFramebufferParameterivMESA) },
-    { "glGetGraphicsResetStatus", "GL_KHR_robustness\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetGraphicsResetStatus) },
-    { "glGetGraphicsResetStatusARB", "GL_ARB_robustness\0", offsetof(struct opengl_funcs, p_glGetGraphicsResetStatusARB) },
-    { "glGetHandleARB", "GL_ARB_shader_objects\0", offsetof(struct opengl_funcs, p_glGetHandleARB) },
-    { "glGetHistogram", "GL_ARB_imaging\0", offsetof(struct opengl_funcs, p_glGetHistogram) },
-    { "glGetHistogramEXT", "GL_EXT_histogram\0", offsetof(struct opengl_funcs, p_glGetHistogramEXT) },
-    { "glGetHistogramParameterfv", "GL_ARB_imaging\0", offsetof(struct opengl_funcs, p_glGetHistogramParameterfv) },
-    { "glGetHistogramParameterfvEXT", "GL_EXT_histogram\0", offsetof(struct opengl_funcs, p_glGetHistogramParameterfvEXT) },
-    { "glGetHistogramParameteriv", "GL_ARB_imaging\0", offsetof(struct opengl_funcs, p_glGetHistogramParameteriv) },
-    { "glGetHistogramParameterivEXT", "GL_EXT_histogram\0", offsetof(struct opengl_funcs, p_glGetHistogramParameterivEXT) },
-    { "glGetHistogramParameterxvOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glGetHistogramParameterxvOES) },
-    { "glGetImageHandleARB", "GL_ARB_bindless_texture\0", offsetof(struct opengl_funcs, p_glGetImageHandleARB) },
-    { "glGetImageHandleNV", "GL_NV_bindless_texture\0", offsetof(struct opengl_funcs, p_glGetImageHandleNV) },
-    { "glGetImageTransformParameterfvHP", "GL_HP_image_transform\0", offsetof(struct opengl_funcs, p_glGetImageTransformParameterfvHP) },
-    { "glGetImageTransformParameterivHP", "GL_HP_image_transform\0", offsetof(struct opengl_funcs, p_glGetImageTransformParameterivHP) },
-    { "glGetInfoLogARB", "GL_ARB_shader_objects\0", offsetof(struct opengl_funcs, p_glGetInfoLogARB) },
-    { "glGetInstrumentsSGIX", "GL_SGIX_instruments\0", offsetof(struct opengl_funcs, p_glGetInstrumentsSGIX) },
-    { "glGetInteger64i_v", "GL_VERSION_3_2\0", offsetof(struct opengl_funcs, p_glGetInteger64i_v) },
-    { "glGetInteger64v", "GL_ARB_sync\0GL_VERSION_3_2\0", offsetof(struct opengl_funcs, p_glGetInteger64v) },
-    { "glGetIntegerIndexedvEXT", "GL_EXT_direct_state_access\0GL_EXT_draw_buffers2\0", offsetof(struct opengl_funcs, p_glGetIntegerIndexedvEXT) },
-    { "glGetIntegeri_v", "GL_ARB_uniform_buffer_object\0GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glGetIntegeri_v) },
-    { "glGetIntegerui64i_vNV", "GL_NV_vertex_buffer_unified_memory\0", offsetof(struct opengl_funcs, p_glGetIntegerui64i_vNV) },
-    { "glGetIntegerui64vNV", "GL_NV_shader_buffer_load\0", offsetof(struct opengl_funcs, p_glGetIntegerui64vNV) },
-    { "glGetInternalformatSampleivNV", "GL_NV_internalformat_sample_query\0", offsetof(struct opengl_funcs, p_glGetInternalformatSampleivNV) },
-    { "glGetInternalformati64v", "GL_ARB_internalformat_query2\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glGetInternalformati64v) },
-    { "glGetInternalformativ", "GL_ARB_internalformat_query\0GL_VERSION_4_2\0", offsetof(struct opengl_funcs, p_glGetInternalformativ) },
-    { "glGetInvariantBooleanvEXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glGetInvariantBooleanvEXT) },
-    { "glGetInvariantFloatvEXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glGetInvariantFloatvEXT) },
-    { "glGetInvariantIntegervEXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glGetInvariantIntegervEXT) },
-    { "glGetLightxOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glGetLightxOES) },
-    { "glGetLightxv", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glGetLightxv) },
-    { "glGetListParameterfvSGIX", "GL_SGIX_list_priority\0", offsetof(struct opengl_funcs, p_glGetListParameterfvSGIX) },
-    { "glGetListParameterivSGIX", "GL_SGIX_list_priority\0", offsetof(struct opengl_funcs, p_glGetListParameterivSGIX) },
-    { "glGetLocalConstantBooleanvEXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glGetLocalConstantBooleanvEXT) },
-    { "glGetLocalConstantFloatvEXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glGetLocalConstantFloatvEXT) },
-    { "glGetLocalConstantIntegervEXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glGetLocalConstantIntegervEXT) },
-    { "glGetMapAttribParameterfvNV", "GL_NV_evaluators\0", offsetof(struct opengl_funcs, p_glGetMapAttribParameterfvNV) },
-    { "glGetMapAttribParameterivNV", "GL_NV_evaluators\0", offsetof(struct opengl_funcs, p_glGetMapAttribParameterivNV) },
-    { "glGetMapControlPointsNV", "GL_NV_evaluators\0", offsetof(struct opengl_funcs, p_glGetMapControlPointsNV) },
-    { "glGetMapParameterfvNV", "GL_NV_evaluators\0", offsetof(struct opengl_funcs, p_glGetMapParameterfvNV) },
-    { "glGetMapParameterivNV", "GL_NV_evaluators\0", offsetof(struct opengl_funcs, p_glGetMapParameterivNV) },
-    { "glGetMapxvOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glGetMapxvOES) },
-    { "glGetMaterialxOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glGetMaterialxOES) },
-    { "glGetMaterialxv", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glGetMaterialxv) },
-    { "glGetMemoryObjectDetachedResourcesuivNV", "GL_NV_memory_attachment\0", offsetof(struct opengl_funcs, p_glGetMemoryObjectDetachedResourcesuivNV) },
-    { "glGetMemoryObjectParameterivEXT", "GL_EXT_memory_object\0", offsetof(struct opengl_funcs, p_glGetMemoryObjectParameterivEXT) },
-    { "glGetMinmax", "GL_ARB_imaging\0", offsetof(struct opengl_funcs, p_glGetMinmax) },
-    { "glGetMinmaxEXT", "GL_EXT_histogram\0", offsetof(struct opengl_funcs, p_glGetMinmaxEXT) },
-    { "glGetMinmaxParameterfv", "GL_ARB_imaging\0", offsetof(struct opengl_funcs, p_glGetMinmaxParameterfv) },
-    { "glGetMinmaxParameterfvEXT", "GL_EXT_histogram\0", offsetof(struct opengl_funcs, p_glGetMinmaxParameterfvEXT) },
-    { "glGetMinmaxParameteriv", "GL_ARB_imaging\0", offsetof(struct opengl_funcs, p_glGetMinmaxParameteriv) },
-    { "glGetMinmaxParameterivEXT", "GL_EXT_histogram\0", offsetof(struct opengl_funcs, p_glGetMinmaxParameterivEXT) },
-    { "glGetMultiTexEnvfvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetMultiTexEnvfvEXT) },
-    { "glGetMultiTexEnvivEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetMultiTexEnvivEXT) },
-    { "glGetMultiTexGendvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetMultiTexGendvEXT) },
-    { "glGetMultiTexGenfvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetMultiTexGenfvEXT) },
-    { "glGetMultiTexGenivEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetMultiTexGenivEXT) },
-    { "glGetMultiTexImageEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetMultiTexImageEXT) },
-    { "glGetMultiTexLevelParameterfvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetMultiTexLevelParameterfvEXT) },
-    { "glGetMultiTexLevelParameterivEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetMultiTexLevelParameterivEXT) },
-    { "glGetMultiTexParameterIivEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetMultiTexParameterIivEXT) },
-    { "glGetMultiTexParameterIuivEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetMultiTexParameterIuivEXT) },
-    { "glGetMultiTexParameterfvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetMultiTexParameterfvEXT) },
-    { "glGetMultiTexParameterivEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetMultiTexParameterivEXT) },
-    { "glGetMultisamplefv", "GL_ARB_texture_multisample\0GL_VERSION_3_2\0", offsetof(struct opengl_funcs, p_glGetMultisamplefv) },
-    { "glGetMultisamplefvNV", "GL_NV_explicit_multisample\0", offsetof(struct opengl_funcs, p_glGetMultisamplefvNV) },
-    { "glGetNamedBufferParameteri64v", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetNamedBufferParameteri64v) },
-    { "glGetNamedBufferParameteriv", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetNamedBufferParameteriv) },
-    { "glGetNamedBufferParameterivEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetNamedBufferParameterivEXT) },
-    { "glGetNamedBufferParameterui64vNV", "GL_NV_shader_buffer_load\0", offsetof(struct opengl_funcs, p_glGetNamedBufferParameterui64vNV) },
-    { "glGetNamedBufferPointerv", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetNamedBufferPointerv) },
-    { "glGetNamedBufferPointervEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetNamedBufferPointervEXT) },
-    { "glGetNamedBufferSubData", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetNamedBufferSubData) },
-    { "glGetNamedBufferSubDataEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetNamedBufferSubDataEXT) },
-    { "glGetNamedFramebufferAttachmentParameteriv", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetNamedFramebufferAttachmentParameteriv) },
-    { "glGetNamedFramebufferAttachmentParameterivEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetNamedFramebufferAttachmentParameterivEXT) },
-    { "glGetNamedFramebufferParameterfvAMD", "GL_AMD_framebuffer_sample_positions\0", offsetof(struct opengl_funcs, p_glGetNamedFramebufferParameterfvAMD) },
-    { "glGetNamedFramebufferParameteriv", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetNamedFramebufferParameteriv) },
-    { "glGetNamedFramebufferParameterivEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetNamedFramebufferParameterivEXT) },
-    { "glGetNamedProgramLocalParameterIivEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetNamedProgramLocalParameterIivEXT) },
-    { "glGetNamedProgramLocalParameterIuivEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetNamedProgramLocalParameterIuivEXT) },
-    { "glGetNamedProgramLocalParameterdvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetNamedProgramLocalParameterdvEXT) },
-    { "glGetNamedProgramLocalParameterfvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetNamedProgramLocalParameterfvEXT) },
-    { "glGetNamedProgramStringEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetNamedProgramStringEXT) },
-    { "glGetNamedProgramivEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetNamedProgramivEXT) },
-    { "glGetNamedRenderbufferParameteriv", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetNamedRenderbufferParameteriv) },
-    { "glGetNamedRenderbufferParameterivEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetNamedRenderbufferParameterivEXT) },
-    { "glGetNamedStringARB", "GL_ARB_shading_language_include\0", offsetof(struct opengl_funcs, p_glGetNamedStringARB) },
-    { "glGetNamedStringivARB", "GL_ARB_shading_language_include\0", offsetof(struct opengl_funcs, p_glGetNamedStringivARB) },
-    { "glGetNextPerfQueryIdINTEL", "GL_INTEL_performance_query\0", offsetof(struct opengl_funcs, p_glGetNextPerfQueryIdINTEL) },
-    { "glGetObjectBufferfvATI", "GL_ATI_vertex_array_object\0", offsetof(struct opengl_funcs, p_glGetObjectBufferfvATI) },
-    { "glGetObjectBufferivATI", "GL_ATI_vertex_array_object\0", offsetof(struct opengl_funcs, p_glGetObjectBufferivATI) },
-    { "glGetObjectLabel", "GL_KHR_debug\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glGetObjectLabel) },
-    { "glGetObjectLabelEXT", "GL_EXT_debug_label\0", offsetof(struct opengl_funcs, p_glGetObjectLabelEXT) },
-    { "glGetObjectParameterfvARB", "GL_ARB_shader_objects\0", offsetof(struct opengl_funcs, p_glGetObjectParameterfvARB) },
-    { "glGetObjectParameterivAPPLE", "GL_APPLE_object_purgeable\0", offsetof(struct opengl_funcs, p_glGetObjectParameterivAPPLE) },
-    { "glGetObjectParameterivARB", "GL_ARB_shader_objects\0", offsetof(struct opengl_funcs, p_glGetObjectParameterivARB) },
-    { "glGetObjectPtrLabel", "GL_KHR_debug\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glGetObjectPtrLabel) },
-    { "glGetOcclusionQueryivNV", "GL_NV_occlusion_query\0", offsetof(struct opengl_funcs, p_glGetOcclusionQueryivNV) },
-    { "glGetOcclusionQueryuivNV", "GL_NV_occlusion_query\0", offsetof(struct opengl_funcs, p_glGetOcclusionQueryuivNV) },
-    { "glGetPathColorGenfvNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glGetPathColorGenfvNV) },
-    { "glGetPathColorGenivNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glGetPathColorGenivNV) },
-    { "glGetPathCommandsNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glGetPathCommandsNV) },
-    { "glGetPathCoordsNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glGetPathCoordsNV) },
-    { "glGetPathDashArrayNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glGetPathDashArrayNV) },
-    { "glGetPathLengthNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glGetPathLengthNV) },
-    { "glGetPathMetricRangeNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glGetPathMetricRangeNV) },
-    { "glGetPathMetricsNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glGetPathMetricsNV) },
-    { "glGetPathParameterfvNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glGetPathParameterfvNV) },
-    { "glGetPathParameterivNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glGetPathParameterivNV) },
-    { "glGetPathSpacingNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glGetPathSpacingNV) },
-    { "glGetPathTexGenfvNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glGetPathTexGenfvNV) },
-    { "glGetPathTexGenivNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glGetPathTexGenivNV) },
-    { "glGetPerfCounterInfoINTEL", "GL_INTEL_performance_query\0", offsetof(struct opengl_funcs, p_glGetPerfCounterInfoINTEL) },
-    { "glGetPerfMonitorCounterDataAMD", "GL_AMD_performance_monitor\0", offsetof(struct opengl_funcs, p_glGetPerfMonitorCounterDataAMD) },
-    { "glGetPerfMonitorCounterInfoAMD", "GL_AMD_performance_monitor\0", offsetof(struct opengl_funcs, p_glGetPerfMonitorCounterInfoAMD) },
-    { "glGetPerfMonitorCounterStringAMD", "GL_AMD_performance_monitor\0", offsetof(struct opengl_funcs, p_glGetPerfMonitorCounterStringAMD) },
-    { "glGetPerfMonitorCountersAMD", "GL_AMD_performance_monitor\0", offsetof(struct opengl_funcs, p_glGetPerfMonitorCountersAMD) },
-    { "glGetPerfMonitorGroupStringAMD", "GL_AMD_performance_monitor\0", offsetof(struct opengl_funcs, p_glGetPerfMonitorGroupStringAMD) },
-    { "glGetPerfMonitorGroupsAMD", "GL_AMD_performance_monitor\0", offsetof(struct opengl_funcs, p_glGetPerfMonitorGroupsAMD) },
-    { "glGetPerfQueryDataINTEL", "GL_INTEL_performance_query\0", offsetof(struct opengl_funcs, p_glGetPerfQueryDataINTEL) },
-    { "glGetPerfQueryIdByNameINTEL", "GL_INTEL_performance_query\0", offsetof(struct opengl_funcs, p_glGetPerfQueryIdByNameINTEL) },
-    { "glGetPerfQueryInfoINTEL", "GL_INTEL_performance_query\0", offsetof(struct opengl_funcs, p_glGetPerfQueryInfoINTEL) },
-    { "glGetPixelMapxv", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glGetPixelMapxv) },
-    { "glGetPixelTexGenParameterfvSGIS", "GL_SGIS_pixel_texture\0", offsetof(struct opengl_funcs, p_glGetPixelTexGenParameterfvSGIS) },
-    { "glGetPixelTexGenParameterivSGIS", "GL_SGIS_pixel_texture\0", offsetof(struct opengl_funcs, p_glGetPixelTexGenParameterivSGIS) },
-    { "glGetPixelTransformParameterfvEXT", "GL_EXT_pixel_transform\0", offsetof(struct opengl_funcs, p_glGetPixelTransformParameterfvEXT) },
-    { "glGetPixelTransformParameterivEXT", "GL_EXT_pixel_transform\0", offsetof(struct opengl_funcs, p_glGetPixelTransformParameterivEXT) },
-    { "glGetPointerIndexedvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetPointerIndexedvEXT) },
-    { "glGetPointeri_vEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetPointeri_vEXT) },
-    { "glGetPointervEXT", "GL_EXT_vertex_array\0", offsetof(struct opengl_funcs, p_glGetPointervEXT) },
-    { "glGetProgramBinary", "GL_ARB_get_program_binary\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glGetProgramBinary) },
-    { "glGetProgramEnvParameterIivNV", "GL_NV_gpu_program4\0", offsetof(struct opengl_funcs, p_glGetProgramEnvParameterIivNV) },
-    { "glGetProgramEnvParameterIuivNV", "GL_NV_gpu_program4\0", offsetof(struct opengl_funcs, p_glGetProgramEnvParameterIuivNV) },
-    { "glGetProgramEnvParameterdvARB", "GL_ARB_fragment_program\0GL_ARB_vertex_program\0", offsetof(struct opengl_funcs, p_glGetProgramEnvParameterdvARB) },
-    { "glGetProgramEnvParameterfvARB", "GL_ARB_fragment_program\0GL_ARB_vertex_program\0", offsetof(struct opengl_funcs, p_glGetProgramEnvParameterfvARB) },
-    { "glGetProgramInfoLog", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glGetProgramInfoLog) },
-    { "glGetProgramInterfaceiv", "GL_ARB_program_interface_query\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glGetProgramInterfaceiv) },
-    { "glGetProgramLocalParameterIivNV", "GL_NV_gpu_program4\0", offsetof(struct opengl_funcs, p_glGetProgramLocalParameterIivNV) },
-    { "glGetProgramLocalParameterIuivNV", "GL_NV_gpu_program4\0", offsetof(struct opengl_funcs, p_glGetProgramLocalParameterIuivNV) },
-    { "glGetProgramLocalParameterdvARB", "GL_ARB_fragment_program\0GL_ARB_vertex_program\0", offsetof(struct opengl_funcs, p_glGetProgramLocalParameterdvARB) },
-    { "glGetProgramLocalParameterfvARB", "GL_ARB_fragment_program\0GL_ARB_vertex_program\0", offsetof(struct opengl_funcs, p_glGetProgramLocalParameterfvARB) },
-    { "glGetProgramNamedParameterdvNV", "GL_NV_fragment_program\0", offsetof(struct opengl_funcs, p_glGetProgramNamedParameterdvNV) },
-    { "glGetProgramNamedParameterfvNV", "GL_NV_fragment_program\0", offsetof(struct opengl_funcs, p_glGetProgramNamedParameterfvNV) },
-    { "glGetProgramParameterdvNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glGetProgramParameterdvNV) },
-    { "glGetProgramParameterfvNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glGetProgramParameterfvNV) },
-    { "glGetProgramPipelineInfoLog", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glGetProgramPipelineInfoLog) },
-    { "glGetProgramPipelineiv", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glGetProgramPipelineiv) },
-    { "glGetProgramResourceIndex", "GL_ARB_program_interface_query\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glGetProgramResourceIndex) },
-    { "glGetProgramResourceLocation", "GL_ARB_program_interface_query\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glGetProgramResourceLocation) },
-    { "glGetProgramResourceLocationIndex", "GL_ARB_program_interface_query\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glGetProgramResourceLocationIndex) },
-    { "glGetProgramResourceName", "GL_ARB_program_interface_query\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glGetProgramResourceName) },
-    { "glGetProgramResourcefvNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glGetProgramResourcefvNV) },
-    { "glGetProgramResourceiv", "GL_ARB_program_interface_query\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glGetProgramResourceiv) },
-    { "glGetProgramStageiv", "GL_ARB_shader_subroutine\0GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glGetProgramStageiv) },
-    { "glGetProgramStringARB", "GL_ARB_fragment_program\0GL_ARB_vertex_program\0", offsetof(struct opengl_funcs, p_glGetProgramStringARB) },
-    { "glGetProgramStringNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glGetProgramStringNV) },
-    { "glGetProgramSubroutineParameteruivNV", "GL_NV_gpu_program5\0GL_NV_gpu_program_fp64\0", offsetof(struct opengl_funcs, p_glGetProgramSubroutineParameteruivNV) },
-    { "glGetProgramiv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glGetProgramiv) },
-    { "glGetProgramivARB", "GL_ARB_fragment_program\0GL_ARB_vertex_program\0", offsetof(struct opengl_funcs, p_glGetProgramivARB) },
-    { "glGetProgramivNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glGetProgramivNV) },
-    { "glGetQueryBufferObjecti64v", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetQueryBufferObjecti64v) },
-    { "glGetQueryBufferObjectiv", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetQueryBufferObjectiv) },
-    { "glGetQueryBufferObjectui64v", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetQueryBufferObjectui64v) },
-    { "glGetQueryBufferObjectuiv", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetQueryBufferObjectuiv) },
-    { "glGetQueryIndexediv", "GL_ARB_transform_feedback3\0GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glGetQueryIndexediv) },
-    { "glGetQueryObjecti64v", "GL_ARB_timer_query\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glGetQueryObjecti64v) },
-    { "glGetQueryObjecti64vEXT", "GL_EXT_timer_query\0", offsetof(struct opengl_funcs, p_glGetQueryObjecti64vEXT) },
-    { "glGetQueryObjectiv", "GL_VERSION_1_5\0", offsetof(struct opengl_funcs, p_glGetQueryObjectiv) },
-    { "glGetQueryObjectivARB", "GL_ARB_occlusion_query\0", offsetof(struct opengl_funcs, p_glGetQueryObjectivARB) },
-    { "glGetQueryObjectui64v", "GL_ARB_timer_query\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glGetQueryObjectui64v) },
-    { "glGetQueryObjectui64vEXT", "GL_EXT_timer_query\0", offsetof(struct opengl_funcs, p_glGetQueryObjectui64vEXT) },
-    { "glGetQueryObjectuiv", "GL_VERSION_1_5\0", offsetof(struct opengl_funcs, p_glGetQueryObjectuiv) },
-    { "glGetQueryObjectuivARB", "GL_ARB_occlusion_query\0", offsetof(struct opengl_funcs, p_glGetQueryObjectuivARB) },
-    { "glGetQueryiv", "GL_VERSION_1_5\0", offsetof(struct opengl_funcs, p_glGetQueryiv) },
-    { "glGetQueryivARB", "GL_ARB_occlusion_query\0", offsetof(struct opengl_funcs, p_glGetQueryivARB) },
-    { "glGetRenderbufferParameteriv", "GL_ARB_framebuffer_object\0GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glGetRenderbufferParameteriv) },
-    { "glGetRenderbufferParameterivEXT", "GL_EXT_framebuffer_object\0", offsetof(struct opengl_funcs, p_glGetRenderbufferParameterivEXT) },
-    { "glGetSamplerParameterIiv", "GL_ARB_sampler_objects\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glGetSamplerParameterIiv) },
-    { "glGetSamplerParameterIuiv", "GL_ARB_sampler_objects\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glGetSamplerParameterIuiv) },
-    { "glGetSamplerParameterfv", "GL_ARB_sampler_objects\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glGetSamplerParameterfv) },
-    { "glGetSamplerParameteriv", "GL_ARB_sampler_objects\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glGetSamplerParameteriv) },
-    { "glGetSemaphoreParameterivNV", "GL_NV_timeline_semaphore\0", offsetof(struct opengl_funcs, p_glGetSemaphoreParameterivNV) },
-    { "glGetSemaphoreParameterui64vEXT", "GL_EXT_semaphore\0", offsetof(struct opengl_funcs, p_glGetSemaphoreParameterui64vEXT) },
-    { "glGetSeparableFilter", "GL_ARB_imaging\0", offsetof(struct opengl_funcs, p_glGetSeparableFilter) },
-    { "glGetSeparableFilterEXT", "GL_EXT_convolution\0", offsetof(struct opengl_funcs, p_glGetSeparableFilterEXT) },
-    { "glGetShaderInfoLog", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glGetShaderInfoLog) },
-    { "glGetShaderPrecisionFormat", "GL_ARB_ES2_compatibility\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glGetShaderPrecisionFormat) },
-    { "glGetShaderSource", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glGetShaderSource) },
-    { "glGetShaderSourceARB", "GL_ARB_shader_objects\0", offsetof(struct opengl_funcs, p_glGetShaderSourceARB) },
-    { "glGetShaderiv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glGetShaderiv) },
-    { "glGetShadingRateImagePaletteNV", "GL_NV_shading_rate_image\0", offsetof(struct opengl_funcs, p_glGetShadingRateImagePaletteNV) },
-    { "glGetShadingRateSampleLocationivNV", "GL_NV_shading_rate_image\0", offsetof(struct opengl_funcs, p_glGetShadingRateSampleLocationivNV) },
-    { "glGetSharpenTexFuncSGIS", "GL_SGIS_sharpen_texture\0", offsetof(struct opengl_funcs, p_glGetSharpenTexFuncSGIS) },
-    { "glGetStageIndexNV", "GL_NV_command_list\0", offsetof(struct opengl_funcs, p_glGetStageIndexNV) },
-    { "glGetStringi", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glGetStringi) },
-    { "glGetSubroutineIndex", "GL_ARB_shader_subroutine\0GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glGetSubroutineIndex) },
-    { "glGetSubroutineUniformLocation", "GL_ARB_shader_subroutine\0GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glGetSubroutineUniformLocation) },
-    { "glGetSynciv", "GL_ARB_sync\0GL_VERSION_3_2\0", offsetof(struct opengl_funcs, p_glGetSynciv) },
-    { "glGetTexBumpParameterfvATI", "GL_ATI_envmap_bumpmap\0", offsetof(struct opengl_funcs, p_glGetTexBumpParameterfvATI) },
-    { "glGetTexBumpParameterivATI", "GL_ATI_envmap_bumpmap\0", offsetof(struct opengl_funcs, p_glGetTexBumpParameterivATI) },
-    { "glGetTexEnvxv", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glGetTexEnvxv) },
-    { "glGetTexEnvxvOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glGetTexEnvxvOES) },
-    { "glGetTexFilterFuncSGIS", "GL_SGIS_texture_filter4\0", offsetof(struct opengl_funcs, p_glGetTexFilterFuncSGIS) },
-    { "glGetTexGenxvOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glGetTexGenxvOES) },
-    { "glGetTexLevelParameterxvOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glGetTexLevelParameterxvOES) },
-    { "glGetTexParameterIiv", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glGetTexParameterIiv) },
-    { "glGetTexParameterIivEXT", "GL_EXT_texture_integer\0", offsetof(struct opengl_funcs, p_glGetTexParameterIivEXT) },
-    { "glGetTexParameterIuiv", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glGetTexParameterIuiv) },
-    { "glGetTexParameterIuivEXT", "GL_EXT_texture_integer\0", offsetof(struct opengl_funcs, p_glGetTexParameterIuivEXT) },
-    { "glGetTexParameterPointervAPPLE", "GL_APPLE_texture_range\0", offsetof(struct opengl_funcs, p_glGetTexParameterPointervAPPLE) },
-    { "glGetTexParameterxv", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glGetTexParameterxv) },
-    { "glGetTexParameterxvOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glGetTexParameterxvOES) },
-    { "glGetTextureHandleARB", "GL_ARB_bindless_texture\0", offsetof(struct opengl_funcs, p_glGetTextureHandleARB) },
-    { "glGetTextureHandleNV", "GL_NV_bindless_texture\0", offsetof(struct opengl_funcs, p_glGetTextureHandleNV) },
-    { "glGetTextureImage", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetTextureImage) },
-    { "glGetTextureImageEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetTextureImageEXT) },
-    { "glGetTextureLevelParameterfv", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetTextureLevelParameterfv) },
-    { "glGetTextureLevelParameterfvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetTextureLevelParameterfvEXT) },
-    { "glGetTextureLevelParameteriv", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetTextureLevelParameteriv) },
-    { "glGetTextureLevelParameterivEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetTextureLevelParameterivEXT) },
-    { "glGetTextureParameterIiv", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetTextureParameterIiv) },
-    { "glGetTextureParameterIivEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetTextureParameterIivEXT) },
-    { "glGetTextureParameterIuiv", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetTextureParameterIuiv) },
-    { "glGetTextureParameterIuivEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetTextureParameterIuivEXT) },
-    { "glGetTextureParameterfv", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetTextureParameterfv) },
-    { "glGetTextureParameterfvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetTextureParameterfvEXT) },
-    { "glGetTextureParameteriv", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetTextureParameteriv) },
-    { "glGetTextureParameterivEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetTextureParameterivEXT) },
-    { "glGetTextureSamplerHandleARB", "GL_ARB_bindless_texture\0", offsetof(struct opengl_funcs, p_glGetTextureSamplerHandleARB) },
-    { "glGetTextureSamplerHandleNV", "GL_NV_bindless_texture\0", offsetof(struct opengl_funcs, p_glGetTextureSamplerHandleNV) },
-    { "glGetTextureSubImage", "GL_ARB_get_texture_sub_image\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetTextureSubImage) },
-    { "glGetTrackMatrixivNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glGetTrackMatrixivNV) },
-    { "glGetTransformFeedbackVarying", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glGetTransformFeedbackVarying) },
-    { "glGetTransformFeedbackVaryingEXT", "GL_EXT_transform_feedback\0", offsetof(struct opengl_funcs, p_glGetTransformFeedbackVaryingEXT) },
-    { "glGetTransformFeedbackVaryingNV", "GL_NV_transform_feedback\0", offsetof(struct opengl_funcs, p_glGetTransformFeedbackVaryingNV) },
-    { "glGetTransformFeedbacki64_v", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetTransformFeedbacki64_v) },
-    { "glGetTransformFeedbacki_v", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetTransformFeedbacki_v) },
-    { "glGetTransformFeedbackiv", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetTransformFeedbackiv) },
-    { "glGetUniformBlockIndex", "GL_ARB_uniform_buffer_object\0GL_VERSION_3_1\0", offsetof(struct opengl_funcs, p_glGetUniformBlockIndex) },
-    { "glGetUniformBufferSizeEXT", "GL_EXT_bindable_uniform\0", offsetof(struct opengl_funcs, p_glGetUniformBufferSizeEXT) },
-    { "glGetUniformIndices", "GL_ARB_uniform_buffer_object\0GL_VERSION_3_1\0", offsetof(struct opengl_funcs, p_glGetUniformIndices) },
-    { "glGetUniformLocation", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glGetUniformLocation) },
-    { "glGetUniformLocationARB", "GL_ARB_shader_objects\0", offsetof(struct opengl_funcs, p_glGetUniformLocationARB) },
-    { "glGetUniformOffsetEXT", "GL_EXT_bindable_uniform\0", offsetof(struct opengl_funcs, p_glGetUniformOffsetEXT) },
-    { "glGetUniformSubroutineuiv", "GL_ARB_shader_subroutine\0GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glGetUniformSubroutineuiv) },
-    { "glGetUniformdv", "GL_ARB_gpu_shader_fp64\0GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glGetUniformdv) },
-    { "glGetUniformfv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glGetUniformfv) },
-    { "glGetUniformfvARB", "GL_ARB_shader_objects\0", offsetof(struct opengl_funcs, p_glGetUniformfvARB) },
-    { "glGetUniformi64vARB", "GL_ARB_gpu_shader_int64\0", offsetof(struct opengl_funcs, p_glGetUniformi64vARB) },
-    { "glGetUniformi64vNV", "GL_AMD_gpu_shader_int64\0GL_NV_gpu_shader5\0", offsetof(struct opengl_funcs, p_glGetUniformi64vNV) },
-    { "glGetUniformiv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glGetUniformiv) },
-    { "glGetUniformivARB", "GL_ARB_shader_objects\0", offsetof(struct opengl_funcs, p_glGetUniformivARB) },
-    { "glGetUniformui64vARB", "GL_ARB_gpu_shader_int64\0", offsetof(struct opengl_funcs, p_glGetUniformui64vARB) },
-    { "glGetUniformui64vNV", "GL_AMD_gpu_shader_int64\0GL_NV_shader_buffer_load\0", offsetof(struct opengl_funcs, p_glGetUniformui64vNV) },
-    { "glGetUniformuiv", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glGetUniformuiv) },
-    { "glGetUniformuivEXT", "GL_EXT_gpu_shader4\0", offsetof(struct opengl_funcs, p_glGetUniformuivEXT) },
-    { "glGetUnsignedBytei_vEXT", "GL_EXT_memory_object\0GL_EXT_semaphore\0", offsetof(struct opengl_funcs, p_glGetUnsignedBytei_vEXT) },
-    { "glGetUnsignedBytevEXT", "GL_EXT_memory_object\0GL_EXT_semaphore\0", offsetof(struct opengl_funcs, p_glGetUnsignedBytevEXT) },
-    { "glGetVariantArrayObjectfvATI", "GL_ATI_vertex_array_object\0", offsetof(struct opengl_funcs, p_glGetVariantArrayObjectfvATI) },
-    { "glGetVariantArrayObjectivATI", "GL_ATI_vertex_array_object\0", offsetof(struct opengl_funcs, p_glGetVariantArrayObjectivATI) },
-    { "glGetVariantBooleanvEXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glGetVariantBooleanvEXT) },
-    { "glGetVariantFloatvEXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glGetVariantFloatvEXT) },
-    { "glGetVariantIntegervEXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glGetVariantIntegervEXT) },
-    { "glGetVariantPointervEXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glGetVariantPointervEXT) },
-    { "glGetVaryingLocationNV", "GL_NV_transform_feedback\0", offsetof(struct opengl_funcs, p_glGetVaryingLocationNV) },
-    { "glGetVertexArrayIndexed64iv", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetVertexArrayIndexed64iv) },
-    { "glGetVertexArrayIndexediv", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetVertexArrayIndexediv) },
-    { "glGetVertexArrayIntegeri_vEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetVertexArrayIntegeri_vEXT) },
-    { "glGetVertexArrayIntegervEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetVertexArrayIntegervEXT) },
-    { "glGetVertexArrayPointeri_vEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetVertexArrayPointeri_vEXT) },
-    { "glGetVertexArrayPointervEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glGetVertexArrayPointervEXT) },
-    { "glGetVertexArrayiv", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetVertexArrayiv) },
-    { "glGetVertexAttribArrayObjectfvATI", "GL_ATI_vertex_attrib_array_object\0", offsetof(struct opengl_funcs, p_glGetVertexAttribArrayObjectfvATI) },
-    { "glGetVertexAttribArrayObjectivATI", "GL_ATI_vertex_attrib_array_object\0", offsetof(struct opengl_funcs, p_glGetVertexAttribArrayObjectivATI) },
-    { "glGetVertexAttribIiv", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glGetVertexAttribIiv) },
-    { "glGetVertexAttribIivEXT", "GL_EXT_gpu_shader4\0GL_NV_vertex_program4\0", offsetof(struct opengl_funcs, p_glGetVertexAttribIivEXT) },
-    { "glGetVertexAttribIuiv", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glGetVertexAttribIuiv) },
-    { "glGetVertexAttribIuivEXT", "GL_EXT_gpu_shader4\0GL_NV_vertex_program4\0", offsetof(struct opengl_funcs, p_glGetVertexAttribIuivEXT) },
-    { "glGetVertexAttribLdv", "GL_ARB_vertex_attrib_64bit\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glGetVertexAttribLdv) },
-    { "glGetVertexAttribLdvEXT", "GL_EXT_vertex_attrib_64bit\0", offsetof(struct opengl_funcs, p_glGetVertexAttribLdvEXT) },
-    { "glGetVertexAttribLi64vNV", "GL_NV_vertex_attrib_integer_64bit\0", offsetof(struct opengl_funcs, p_glGetVertexAttribLi64vNV) },
-    { "glGetVertexAttribLui64vARB", "GL_ARB_bindless_texture\0", offsetof(struct opengl_funcs, p_glGetVertexAttribLui64vARB) },
-    { "glGetVertexAttribLui64vNV", "GL_NV_vertex_attrib_integer_64bit\0", offsetof(struct opengl_funcs, p_glGetVertexAttribLui64vNV) },
-    { "glGetVertexAttribPointerv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glGetVertexAttribPointerv) },
-    { "glGetVertexAttribPointervARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glGetVertexAttribPointervARB) },
-    { "glGetVertexAttribPointervNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glGetVertexAttribPointervNV) },
-    { "glGetVertexAttribdv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glGetVertexAttribdv) },
-    { "glGetVertexAttribdvARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glGetVertexAttribdvARB) },
-    { "glGetVertexAttribdvNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glGetVertexAttribdvNV) },
-    { "glGetVertexAttribfv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glGetVertexAttribfv) },
-    { "glGetVertexAttribfvARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glGetVertexAttribfvARB) },
-    { "glGetVertexAttribfvNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glGetVertexAttribfvNV) },
-    { "glGetVertexAttribiv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glGetVertexAttribiv) },
-    { "glGetVertexAttribivARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glGetVertexAttribivARB) },
-    { "glGetVertexAttribivNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glGetVertexAttribivNV) },
-    { "glGetVideoCaptureStreamdvNV", "GL_NV_video_capture\0", offsetof(struct opengl_funcs, p_glGetVideoCaptureStreamdvNV) },
-    { "glGetVideoCaptureStreamfvNV", "GL_NV_video_capture\0", offsetof(struct opengl_funcs, p_glGetVideoCaptureStreamfvNV) },
-    { "glGetVideoCaptureStreamivNV", "GL_NV_video_capture\0", offsetof(struct opengl_funcs, p_glGetVideoCaptureStreamivNV) },
-    { "glGetVideoCaptureivNV", "GL_NV_video_capture\0", offsetof(struct opengl_funcs, p_glGetVideoCaptureivNV) },
-    { "glGetVideoi64vNV", "GL_NV_present_video\0", offsetof(struct opengl_funcs, p_glGetVideoi64vNV) },
-    { "glGetVideoivNV", "GL_NV_present_video\0", offsetof(struct opengl_funcs, p_glGetVideoivNV) },
-    { "glGetVideoui64vNV", "GL_NV_present_video\0", offsetof(struct opengl_funcs, p_glGetVideoui64vNV) },
-    { "glGetVideouivNV", "GL_NV_present_video\0", offsetof(struct opengl_funcs, p_glGetVideouivNV) },
-    { "glGetVkProcAddrNV", "GL_NV_draw_vulkan_image\0", offsetof(struct opengl_funcs, p_glGetVkProcAddrNV) },
-    { "glGetnColorTable", "GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetnColorTable) },
-    { "glGetnColorTableARB", "GL_ARB_robustness\0", offsetof(struct opengl_funcs, p_glGetnColorTableARB) },
-    { "glGetnCompressedTexImage", "GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetnCompressedTexImage) },
-    { "glGetnCompressedTexImageARB", "GL_ARB_robustness\0", offsetof(struct opengl_funcs, p_glGetnCompressedTexImageARB) },
-    { "glGetnConvolutionFilter", "GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetnConvolutionFilter) },
-    { "glGetnConvolutionFilterARB", "GL_ARB_robustness\0", offsetof(struct opengl_funcs, p_glGetnConvolutionFilterARB) },
-    { "glGetnHistogram", "GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetnHistogram) },
-    { "glGetnHistogramARB", "GL_ARB_robustness\0", offsetof(struct opengl_funcs, p_glGetnHistogramARB) },
-    { "glGetnMapdv", "GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetnMapdv) },
-    { "glGetnMapdvARB", "GL_ARB_robustness\0", offsetof(struct opengl_funcs, p_glGetnMapdvARB) },
-    { "glGetnMapfv", "GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetnMapfv) },
-    { "glGetnMapfvARB", "GL_ARB_robustness\0", offsetof(struct opengl_funcs, p_glGetnMapfvARB) },
-    { "glGetnMapiv", "GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetnMapiv) },
-    { "glGetnMapivARB", "GL_ARB_robustness\0", offsetof(struct opengl_funcs, p_glGetnMapivARB) },
-    { "glGetnMinmax", "GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetnMinmax) },
-    { "glGetnMinmaxARB", "GL_ARB_robustness\0", offsetof(struct opengl_funcs, p_glGetnMinmaxARB) },
-    { "glGetnPixelMapfv", "GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetnPixelMapfv) },
-    { "glGetnPixelMapfvARB", "GL_ARB_robustness\0", offsetof(struct opengl_funcs, p_glGetnPixelMapfvARB) },
-    { "glGetnPixelMapuiv", "GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetnPixelMapuiv) },
-    { "glGetnPixelMapuivARB", "GL_ARB_robustness\0", offsetof(struct opengl_funcs, p_glGetnPixelMapuivARB) },
-    { "glGetnPixelMapusv", "GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetnPixelMapusv) },
-    { "glGetnPixelMapusvARB", "GL_ARB_robustness\0", offsetof(struct opengl_funcs, p_glGetnPixelMapusvARB) },
-    { "glGetnPolygonStipple", "GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetnPolygonStipple) },
-    { "glGetnPolygonStippleARB", "GL_ARB_robustness\0", offsetof(struct opengl_funcs, p_glGetnPolygonStippleARB) },
-    { "glGetnSeparableFilter", "GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetnSeparableFilter) },
-    { "glGetnSeparableFilterARB", "GL_ARB_robustness\0", offsetof(struct opengl_funcs, p_glGetnSeparableFilterARB) },
-    { "glGetnTexImage", "GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetnTexImage) },
-    { "glGetnTexImageARB", "GL_ARB_robustness\0", offsetof(struct opengl_funcs, p_glGetnTexImageARB) },
-    { "glGetnUniformdv", "GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetnUniformdv) },
-    { "glGetnUniformdvARB", "GL_ARB_robustness\0", offsetof(struct opengl_funcs, p_glGetnUniformdvARB) },
-    { "glGetnUniformfv", "GL_KHR_robustness\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetnUniformfv) },
-    { "glGetnUniformfvARB", "GL_ARB_robustness\0", offsetof(struct opengl_funcs, p_glGetnUniformfvARB) },
-    { "glGetnUniformi64vARB", "GL_ARB_gpu_shader_int64\0", offsetof(struct opengl_funcs, p_glGetnUniformi64vARB) },
-    { "glGetnUniformiv", "GL_KHR_robustness\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetnUniformiv) },
-    { "glGetnUniformivARB", "GL_ARB_robustness\0", offsetof(struct opengl_funcs, p_glGetnUniformivARB) },
-    { "glGetnUniformui64vARB", "GL_ARB_gpu_shader_int64\0", offsetof(struct opengl_funcs, p_glGetnUniformui64vARB) },
-    { "glGetnUniformuiv", "GL_KHR_robustness\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glGetnUniformuiv) },
-    { "glGetnUniformuivARB", "GL_ARB_robustness\0", offsetof(struct opengl_funcs, p_glGetnUniformuivARB) },
-    { "glGlobalAlphaFactorbSUN", "GL_SUN_global_alpha\0", offsetof(struct opengl_funcs, p_glGlobalAlphaFactorbSUN) },
-    { "glGlobalAlphaFactordSUN", "GL_SUN_global_alpha\0", offsetof(struct opengl_funcs, p_glGlobalAlphaFactordSUN) },
-    { "glGlobalAlphaFactorfSUN", "GL_SUN_global_alpha\0", offsetof(struct opengl_funcs, p_glGlobalAlphaFactorfSUN) },
-    { "glGlobalAlphaFactoriSUN", "GL_SUN_global_alpha\0", offsetof(struct opengl_funcs, p_glGlobalAlphaFactoriSUN) },
-    { "glGlobalAlphaFactorsSUN", "GL_SUN_global_alpha\0", offsetof(struct opengl_funcs, p_glGlobalAlphaFactorsSUN) },
-    { "glGlobalAlphaFactorubSUN", "GL_SUN_global_alpha\0", offsetof(struct opengl_funcs, p_glGlobalAlphaFactorubSUN) },
-    { "glGlobalAlphaFactoruiSUN", "GL_SUN_global_alpha\0", offsetof(struct opengl_funcs, p_glGlobalAlphaFactoruiSUN) },
-    { "glGlobalAlphaFactorusSUN", "GL_SUN_global_alpha\0", offsetof(struct opengl_funcs, p_glGlobalAlphaFactorusSUN) },
-    { "glHintPGI", "GL_PGI_misc_hints\0", offsetof(struct opengl_funcs, p_glHintPGI) },
-    { "glHistogram", "GL_ARB_imaging\0", offsetof(struct opengl_funcs, p_glHistogram) },
-    { "glHistogramEXT", "GL_EXT_histogram\0", offsetof(struct opengl_funcs, p_glHistogramEXT) },
-    { "glIglooInterfaceSGIX", "GL_SGIX_igloo_interface\0", offsetof(struct opengl_funcs, p_glIglooInterfaceSGIX) },
-    { "glImageTransformParameterfHP", "GL_HP_image_transform\0", offsetof(struct opengl_funcs, p_glImageTransformParameterfHP) },
-    { "glImageTransformParameterfvHP", "GL_HP_image_transform\0", offsetof(struct opengl_funcs, p_glImageTransformParameterfvHP) },
-    { "glImageTransformParameteriHP", "GL_HP_image_transform\0", offsetof(struct opengl_funcs, p_glImageTransformParameteriHP) },
-    { "glImageTransformParameterivHP", "GL_HP_image_transform\0", offsetof(struct opengl_funcs, p_glImageTransformParameterivHP) },
-    { "glImportMemoryWin32HandleEXT", "GL_EXT_memory_object_win32\0", offsetof(struct opengl_funcs, p_glImportMemoryWin32HandleEXT) },
-    { "glImportMemoryWin32NameEXT", "GL_EXT_memory_object_win32\0", offsetof(struct opengl_funcs, p_glImportMemoryWin32NameEXT) },
-    { "glImportSemaphoreWin32HandleEXT", "GL_EXT_semaphore_win32\0", offsetof(struct opengl_funcs, p_glImportSemaphoreWin32HandleEXT) },
-    { "glImportSemaphoreWin32NameEXT", "GL_EXT_semaphore_win32\0", offsetof(struct opengl_funcs, p_glImportSemaphoreWin32NameEXT) },
-    { "glImportSyncEXT", "GL_EXT_x11_sync_object\0", offsetof(struct opengl_funcs, p_glImportSyncEXT) },
-    { "glIndexFormatNV", "GL_NV_vertex_buffer_unified_memory\0", offsetof(struct opengl_funcs, p_glIndexFormatNV) },
-    { "glIndexFuncEXT", "GL_EXT_index_func\0", offsetof(struct opengl_funcs, p_glIndexFuncEXT) },
-    { "glIndexMaterialEXT", "GL_EXT_index_material\0", offsetof(struct opengl_funcs, p_glIndexMaterialEXT) },
-    { "glIndexPointerEXT", "GL_EXT_vertex_array\0", offsetof(struct opengl_funcs, p_glIndexPointerEXT) },
-    { "glIndexPointerListIBM", "GL_IBM_vertex_array_lists\0", offsetof(struct opengl_funcs, p_glIndexPointerListIBM) },
-    { "glIndexxOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glIndexxOES) },
-    { "glIndexxvOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glIndexxvOES) },
-    { "glInsertComponentEXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glInsertComponentEXT) },
-    { "glInsertEventMarkerEXT", "GL_EXT_debug_marker\0", offsetof(struct opengl_funcs, p_glInsertEventMarkerEXT) },
-    { "glInstrumentsBufferSGIX", "GL_SGIX_instruments\0", offsetof(struct opengl_funcs, p_glInstrumentsBufferSGIX) },
-    { "glInterpolatePathsNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glInterpolatePathsNV) },
-    { "glInvalidateBufferData", "GL_ARB_invalidate_subdata\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glInvalidateBufferData) },
-    { "glInvalidateBufferSubData", "GL_ARB_invalidate_subdata\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glInvalidateBufferSubData) },
-    { "glInvalidateFramebuffer", "GL_ARB_invalidate_subdata\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glInvalidateFramebuffer) },
-    { "glInvalidateNamedFramebufferData", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glInvalidateNamedFramebufferData) },
-    { "glInvalidateNamedFramebufferSubData", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glInvalidateNamedFramebufferSubData) },
-    { "glInvalidateSubFramebuffer", "GL_ARB_invalidate_subdata\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glInvalidateSubFramebuffer) },
-    { "glInvalidateTexImage", "GL_ARB_invalidate_subdata\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glInvalidateTexImage) },
-    { "glInvalidateTexSubImage", "GL_ARB_invalidate_subdata\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glInvalidateTexSubImage) },
-    { "glIsAsyncMarkerSGIX", "GL_SGIX_async\0", offsetof(struct opengl_funcs, p_glIsAsyncMarkerSGIX) },
-    { "glIsBuffer", "GL_VERSION_1_5\0", offsetof(struct opengl_funcs, p_glIsBuffer) },
-    { "glIsBufferARB", "GL_ARB_vertex_buffer_object\0", offsetof(struct opengl_funcs, p_glIsBufferARB) },
-    { "glIsBufferResidentNV", "GL_NV_shader_buffer_load\0", offsetof(struct opengl_funcs, p_glIsBufferResidentNV) },
-    { "glIsCommandListNV", "GL_NV_command_list\0", offsetof(struct opengl_funcs, p_glIsCommandListNV) },
-    { "glIsEnabledIndexedEXT", "GL_EXT_direct_state_access\0GL_EXT_draw_buffers2\0", offsetof(struct opengl_funcs, p_glIsEnabledIndexedEXT) },
-    { "glIsEnabledi", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glIsEnabledi) },
-    { "glIsFenceAPPLE", "GL_APPLE_fence\0", offsetof(struct opengl_funcs, p_glIsFenceAPPLE) },
-    { "glIsFenceNV", "GL_NV_fence\0", offsetof(struct opengl_funcs, p_glIsFenceNV) },
-    { "glIsFramebuffer", "GL_ARB_framebuffer_object\0GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glIsFramebuffer) },
-    { "glIsFramebufferEXT", "GL_EXT_framebuffer_object\0", offsetof(struct opengl_funcs, p_glIsFramebufferEXT) },
-    { "glIsImageHandleResidentARB", "GL_ARB_bindless_texture\0", offsetof(struct opengl_funcs, p_glIsImageHandleResidentARB) },
-    { "glIsImageHandleResidentNV", "GL_NV_bindless_texture\0", offsetof(struct opengl_funcs, p_glIsImageHandleResidentNV) },
-    { "glIsMemoryObjectEXT", "GL_EXT_memory_object\0", offsetof(struct opengl_funcs, p_glIsMemoryObjectEXT) },
-    { "glIsNameAMD", "GL_AMD_name_gen_delete\0", offsetof(struct opengl_funcs, p_glIsNameAMD) },
-    { "glIsNamedBufferResidentNV", "GL_NV_shader_buffer_load\0", offsetof(struct opengl_funcs, p_glIsNamedBufferResidentNV) },
-    { "glIsNamedStringARB", "GL_ARB_shading_language_include\0", offsetof(struct opengl_funcs, p_glIsNamedStringARB) },
-    { "glIsObjectBufferATI", "GL_ATI_vertex_array_object\0", offsetof(struct opengl_funcs, p_glIsObjectBufferATI) },
-    { "glIsOcclusionQueryNV", "GL_NV_occlusion_query\0", offsetof(struct opengl_funcs, p_glIsOcclusionQueryNV) },
-    { "glIsPathNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glIsPathNV) },
-    { "glIsPointInFillPathNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glIsPointInFillPathNV) },
-    { "glIsPointInStrokePathNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glIsPointInStrokePathNV) },
-    { "glIsProgram", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glIsProgram) },
-    { "glIsProgramARB", "GL_ARB_fragment_program\0GL_ARB_vertex_program\0", offsetof(struct opengl_funcs, p_glIsProgramARB) },
-    { "glIsProgramNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glIsProgramNV) },
-    { "glIsProgramPipeline", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glIsProgramPipeline) },
-    { "glIsQuery", "GL_VERSION_1_5\0", offsetof(struct opengl_funcs, p_glIsQuery) },
-    { "glIsQueryARB", "GL_ARB_occlusion_query\0", offsetof(struct opengl_funcs, p_glIsQueryARB) },
-    { "glIsRenderbuffer", "GL_ARB_framebuffer_object\0GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glIsRenderbuffer) },
-    { "glIsRenderbufferEXT", "GL_EXT_framebuffer_object\0", offsetof(struct opengl_funcs, p_glIsRenderbufferEXT) },
-    { "glIsSampler", "GL_ARB_sampler_objects\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glIsSampler) },
-    { "glIsSemaphoreEXT", "GL_EXT_semaphore\0", offsetof(struct opengl_funcs, p_glIsSemaphoreEXT) },
-    { "glIsShader", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glIsShader) },
-    { "glIsStateNV", "GL_NV_command_list\0", offsetof(struct opengl_funcs, p_glIsStateNV) },
-    { "glIsSync", "GL_ARB_sync\0GL_VERSION_3_2\0", offsetof(struct opengl_funcs, p_glIsSync) },
-    { "glIsTextureEXT", "GL_EXT_texture_object\0", offsetof(struct opengl_funcs, p_glIsTextureEXT) },
-    { "glIsTextureHandleResidentARB", "GL_ARB_bindless_texture\0", offsetof(struct opengl_funcs, p_glIsTextureHandleResidentARB) },
-    { "glIsTextureHandleResidentNV", "GL_NV_bindless_texture\0", offsetof(struct opengl_funcs, p_glIsTextureHandleResidentNV) },
-    { "glIsTransformFeedback", "GL_ARB_transform_feedback2\0GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glIsTransformFeedback) },
-    { "glIsTransformFeedbackNV", "GL_NV_transform_feedback2\0", offsetof(struct opengl_funcs, p_glIsTransformFeedbackNV) },
-    { "glIsVariantEnabledEXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glIsVariantEnabledEXT) },
-    { "glIsVertexArray", "GL_ARB_vertex_array_object\0GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glIsVertexArray) },
-    { "glIsVertexArrayAPPLE", "GL_APPLE_vertex_array_object\0", offsetof(struct opengl_funcs, p_glIsVertexArrayAPPLE) },
-    { "glIsVertexAttribEnabledAPPLE", "GL_APPLE_vertex_program_evaluators\0", offsetof(struct opengl_funcs, p_glIsVertexAttribEnabledAPPLE) },
-    { "glLGPUCopyImageSubDataNVX", "GL_NVX_linked_gpu_multicast\0", offsetof(struct opengl_funcs, p_glLGPUCopyImageSubDataNVX) },
-    { "glLGPUInterlockNVX", "GL_NVX_linked_gpu_multicast\0", offsetof(struct opengl_funcs, p_glLGPUInterlockNVX) },
-    { "glLGPUNamedBufferSubDataNVX", "GL_NVX_linked_gpu_multicast\0", offsetof(struct opengl_funcs, p_glLGPUNamedBufferSubDataNVX) },
-    { "glLabelObjectEXT", "GL_EXT_debug_label\0", offsetof(struct opengl_funcs, p_glLabelObjectEXT) },
-    { "glLightEnviSGIX", "GL_SGIX_fragment_lighting\0", offsetof(struct opengl_funcs, p_glLightEnviSGIX) },
-    { "glLightModelx", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glLightModelx) },
-    { "glLightModelxOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glLightModelxOES) },
-    { "glLightModelxv", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glLightModelxv) },
-    { "glLightModelxvOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glLightModelxvOES) },
-    { "glLightx", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glLightx) },
-    { "glLightxOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glLightxOES) },
-    { "glLightxv", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glLightxv) },
-    { "glLightxvOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glLightxvOES) },
-    { "glLineWidthx", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glLineWidthx) },
-    { "glLineWidthxOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glLineWidthxOES) },
-    { "glLinkProgram", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glLinkProgram) },
-    { "glLinkProgramARB", "GL_ARB_shader_objects\0", offsetof(struct opengl_funcs, p_glLinkProgramARB) },
-    { "glListDrawCommandsStatesClientNV", "GL_NV_command_list\0", offsetof(struct opengl_funcs, p_glListDrawCommandsStatesClientNV) },
-    { "glListParameterfSGIX", "GL_SGIX_list_priority\0", offsetof(struct opengl_funcs, p_glListParameterfSGIX) },
-    { "glListParameterfvSGIX", "GL_SGIX_list_priority\0", offsetof(struct opengl_funcs, p_glListParameterfvSGIX) },
-    { "glListParameteriSGIX", "GL_SGIX_list_priority\0", offsetof(struct opengl_funcs, p_glListParameteriSGIX) },
-    { "glListParameterivSGIX", "GL_SGIX_list_priority\0", offsetof(struct opengl_funcs, p_glListParameterivSGIX) },
-    { "glLoadIdentityDeformationMapSGIX", "GL_SGIX_polynomial_ffd\0", offsetof(struct opengl_funcs, p_glLoadIdentityDeformationMapSGIX) },
-    { "glLoadMatrixx", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glLoadMatrixx) },
-    { "glLoadMatrixxOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glLoadMatrixxOES) },
-    { "glLoadProgramNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glLoadProgramNV) },
-    { "glLoadTransposeMatrixd", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glLoadTransposeMatrixd) },
-    { "glLoadTransposeMatrixdARB", "GL_ARB_transpose_matrix\0", offsetof(struct opengl_funcs, p_glLoadTransposeMatrixdARB) },
-    { "glLoadTransposeMatrixf", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glLoadTransposeMatrixf) },
-    { "glLoadTransposeMatrixfARB", "GL_ARB_transpose_matrix\0", offsetof(struct opengl_funcs, p_glLoadTransposeMatrixfARB) },
-    { "glLoadTransposeMatrixxOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glLoadTransposeMatrixxOES) },
-    { "glLockArraysEXT", "GL_EXT_compiled_vertex_array\0", offsetof(struct opengl_funcs, p_glLockArraysEXT) },
-    { "glMTexCoord2fSGIS", "GL_SGIS_multitexture\0", offsetof(struct opengl_funcs, p_glMTexCoord2fSGIS) },
-    { "glMTexCoord2fvSGIS", "GL_SGIS_multitexture\0", offsetof(struct opengl_funcs, p_glMTexCoord2fvSGIS) },
-    { "glMakeBufferNonResidentNV", "GL_NV_shader_buffer_load\0", offsetof(struct opengl_funcs, p_glMakeBufferNonResidentNV) },
-    { "glMakeBufferResidentNV", "GL_NV_shader_buffer_load\0", offsetof(struct opengl_funcs, p_glMakeBufferResidentNV) },
-    { "glMakeImageHandleNonResidentARB", "GL_ARB_bindless_texture\0", offsetof(struct opengl_funcs, p_glMakeImageHandleNonResidentARB) },
-    { "glMakeImageHandleNonResidentNV", "GL_NV_bindless_texture\0", offsetof(struct opengl_funcs, p_glMakeImageHandleNonResidentNV) },
-    { "glMakeImageHandleResidentARB", "GL_ARB_bindless_texture\0", offsetof(struct opengl_funcs, p_glMakeImageHandleResidentARB) },
-    { "glMakeImageHandleResidentNV", "GL_NV_bindless_texture\0", offsetof(struct opengl_funcs, p_glMakeImageHandleResidentNV) },
-    { "glMakeNamedBufferNonResidentNV", "GL_NV_shader_buffer_load\0", offsetof(struct opengl_funcs, p_glMakeNamedBufferNonResidentNV) },
-    { "glMakeNamedBufferResidentNV", "GL_NV_shader_buffer_load\0", offsetof(struct opengl_funcs, p_glMakeNamedBufferResidentNV) },
-    { "glMakeTextureHandleNonResidentARB", "GL_ARB_bindless_texture\0", offsetof(struct opengl_funcs, p_glMakeTextureHandleNonResidentARB) },
-    { "glMakeTextureHandleNonResidentNV", "GL_NV_bindless_texture\0", offsetof(struct opengl_funcs, p_glMakeTextureHandleNonResidentNV) },
-    { "glMakeTextureHandleResidentARB", "GL_ARB_bindless_texture\0", offsetof(struct opengl_funcs, p_glMakeTextureHandleResidentARB) },
-    { "glMakeTextureHandleResidentNV", "GL_NV_bindless_texture\0", offsetof(struct opengl_funcs, p_glMakeTextureHandleResidentNV) },
-    { "glMap1xOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glMap1xOES) },
-    { "glMap2xOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glMap2xOES) },
-    { "glMapBuffer", "GL_VERSION_1_5\0", offsetof(struct opengl_funcs, p_glMapBuffer) },
-    { "glMapBufferARB", "GL_ARB_vertex_buffer_object\0", offsetof(struct opengl_funcs, p_glMapBufferARB) },
-    { "glMapBufferRange", "GL_ARB_map_buffer_range\0GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glMapBufferRange) },
-    { "glMapControlPointsNV", "GL_NV_evaluators\0", offsetof(struct opengl_funcs, p_glMapControlPointsNV) },
-    { "glMapGrid1xOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glMapGrid1xOES) },
-    { "glMapGrid2xOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glMapGrid2xOES) },
-    { "glMapNamedBuffer", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glMapNamedBuffer) },
-    { "glMapNamedBufferEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glMapNamedBufferEXT) },
-    { "glMapNamedBufferRange", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glMapNamedBufferRange) },
-    { "glMapNamedBufferRangeEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glMapNamedBufferRangeEXT) },
-    { "glMapObjectBufferATI", "GL_ATI_map_object_buffer\0", offsetof(struct opengl_funcs, p_glMapObjectBufferATI) },
-    { "glMapParameterfvNV", "GL_NV_evaluators\0", offsetof(struct opengl_funcs, p_glMapParameterfvNV) },
-    { "glMapParameterivNV", "GL_NV_evaluators\0", offsetof(struct opengl_funcs, p_glMapParameterivNV) },
-    { "glMapTexture2DINTEL", "GL_INTEL_map_texture\0", offsetof(struct opengl_funcs, p_glMapTexture2DINTEL) },
-    { "glMapVertexAttrib1dAPPLE", "GL_APPLE_vertex_program_evaluators\0", offsetof(struct opengl_funcs, p_glMapVertexAttrib1dAPPLE) },
-    { "glMapVertexAttrib1fAPPLE", "GL_APPLE_vertex_program_evaluators\0", offsetof(struct opengl_funcs, p_glMapVertexAttrib1fAPPLE) },
-    { "glMapVertexAttrib2dAPPLE", "GL_APPLE_vertex_program_evaluators\0", offsetof(struct opengl_funcs, p_glMapVertexAttrib2dAPPLE) },
-    { "glMapVertexAttrib2fAPPLE", "GL_APPLE_vertex_program_evaluators\0", offsetof(struct opengl_funcs, p_glMapVertexAttrib2fAPPLE) },
-    { "glMaterialx", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glMaterialx) },
-    { "glMaterialxOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glMaterialxOES) },
-    { "glMaterialxv", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glMaterialxv) },
-    { "glMaterialxvOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glMaterialxvOES) },
-    { "glMatrixFrustumEXT", "GL_EXT_direct_state_access\0GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glMatrixFrustumEXT) },
-    { "glMatrixIndexPointerARB", "GL_ARB_matrix_palette\0", offsetof(struct opengl_funcs, p_glMatrixIndexPointerARB) },
-    { "glMatrixIndexubvARB", "GL_ARB_matrix_palette\0", offsetof(struct opengl_funcs, p_glMatrixIndexubvARB) },
-    { "glMatrixIndexuivARB", "GL_ARB_matrix_palette\0", offsetof(struct opengl_funcs, p_glMatrixIndexuivARB) },
-    { "glMatrixIndexusvARB", "GL_ARB_matrix_palette\0", offsetof(struct opengl_funcs, p_glMatrixIndexusvARB) },
-    { "glMatrixLoad3x2fNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glMatrixLoad3x2fNV) },
-    { "glMatrixLoad3x3fNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glMatrixLoad3x3fNV) },
-    { "glMatrixLoadIdentityEXT", "GL_EXT_direct_state_access\0GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glMatrixLoadIdentityEXT) },
-    { "glMatrixLoadTranspose3x3fNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glMatrixLoadTranspose3x3fNV) },
-    { "glMatrixLoadTransposedEXT", "GL_EXT_direct_state_access\0GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glMatrixLoadTransposedEXT) },
-    { "glMatrixLoadTransposefEXT", "GL_EXT_direct_state_access\0GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glMatrixLoadTransposefEXT) },
-    { "glMatrixLoaddEXT", "GL_EXT_direct_state_access\0GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glMatrixLoaddEXT) },
-    { "glMatrixLoadfEXT", "GL_EXT_direct_state_access\0GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glMatrixLoadfEXT) },
-    { "glMatrixMult3x2fNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glMatrixMult3x2fNV) },
-    { "glMatrixMult3x3fNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glMatrixMult3x3fNV) },
-    { "glMatrixMultTranspose3x3fNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glMatrixMultTranspose3x3fNV) },
-    { "glMatrixMultTransposedEXT", "GL_EXT_direct_state_access\0GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glMatrixMultTransposedEXT) },
-    { "glMatrixMultTransposefEXT", "GL_EXT_direct_state_access\0GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glMatrixMultTransposefEXT) },
-    { "glMatrixMultdEXT", "GL_EXT_direct_state_access\0GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glMatrixMultdEXT) },
-    { "glMatrixMultfEXT", "GL_EXT_direct_state_access\0GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glMatrixMultfEXT) },
-    { "glMatrixOrthoEXT", "GL_EXT_direct_state_access\0GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glMatrixOrthoEXT) },
-    { "glMatrixPopEXT", "GL_EXT_direct_state_access\0GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glMatrixPopEXT) },
-    { "glMatrixPushEXT", "GL_EXT_direct_state_access\0GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glMatrixPushEXT) },
-    { "glMatrixRotatedEXT", "GL_EXT_direct_state_access\0GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glMatrixRotatedEXT) },
-    { "glMatrixRotatefEXT", "GL_EXT_direct_state_access\0GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glMatrixRotatefEXT) },
-    { "glMatrixScaledEXT", "GL_EXT_direct_state_access\0GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glMatrixScaledEXT) },
-    { "glMatrixScalefEXT", "GL_EXT_direct_state_access\0GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glMatrixScalefEXT) },
-    { "glMatrixTranslatedEXT", "GL_EXT_direct_state_access\0GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glMatrixTranslatedEXT) },
-    { "glMatrixTranslatefEXT", "GL_EXT_direct_state_access\0GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glMatrixTranslatefEXT) },
-    { "glMaxShaderCompilerThreadsARB", "GL_ARB_parallel_shader_compile\0", offsetof(struct opengl_funcs, p_glMaxShaderCompilerThreadsARB) },
-    { "glMaxShaderCompilerThreadsKHR", "GL_KHR_parallel_shader_compile\0", offsetof(struct opengl_funcs, p_glMaxShaderCompilerThreadsKHR) },
-    { "glMemoryBarrier", "GL_ARB_shader_image_load_store\0GL_VERSION_4_2\0", offsetof(struct opengl_funcs, p_glMemoryBarrier) },
-    { "glMemoryBarrierByRegion", "GL_ARB_ES3_1_compatibility\0GL_NV_ES3_1_compatibility\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glMemoryBarrierByRegion) },
-    { "glMemoryBarrierEXT", "GL_EXT_shader_image_load_store\0", offsetof(struct opengl_funcs, p_glMemoryBarrierEXT) },
-    { "glMemoryObjectParameterivEXT", "GL_EXT_memory_object\0", offsetof(struct opengl_funcs, p_glMemoryObjectParameterivEXT) },
-    { "glMinSampleShading", "GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glMinSampleShading) },
-    { "glMinSampleShadingARB", "GL_ARB_sample_shading\0", offsetof(struct opengl_funcs, p_glMinSampleShadingARB) },
-    { "glMinmax", "GL_ARB_imaging\0", offsetof(struct opengl_funcs, p_glMinmax) },
-    { "glMinmaxEXT", "GL_EXT_histogram\0", offsetof(struct opengl_funcs, p_glMinmaxEXT) },
-    { "glMultMatrixx", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glMultMatrixx) },
-    { "glMultMatrixxOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glMultMatrixxOES) },
-    { "glMultTransposeMatrixd", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glMultTransposeMatrixd) },
-    { "glMultTransposeMatrixdARB", "GL_ARB_transpose_matrix\0", offsetof(struct opengl_funcs, p_glMultTransposeMatrixdARB) },
-    { "glMultTransposeMatrixf", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glMultTransposeMatrixf) },
-    { "glMultTransposeMatrixfARB", "GL_ARB_transpose_matrix\0", offsetof(struct opengl_funcs, p_glMultTransposeMatrixfARB) },
-    { "glMultTransposeMatrixxOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glMultTransposeMatrixxOES) },
-    { "glMultiDrawArrays", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glMultiDrawArrays) },
-    { "glMultiDrawArraysEXT", "GL_EXT_multi_draw_arrays\0GL_SUN_multi_draw_arrays\0", offsetof(struct opengl_funcs, p_glMultiDrawArraysEXT) },
-    { "glMultiDrawArraysIndirect", "GL_ARB_multi_draw_indirect\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glMultiDrawArraysIndirect) },
-    { "glMultiDrawArraysIndirectAMD", "GL_AMD_multi_draw_indirect\0", offsetof(struct opengl_funcs, p_glMultiDrawArraysIndirectAMD) },
-    { "glMultiDrawArraysIndirectBindlessCountNV", "GL_NV_bindless_multi_draw_indirect_count\0", offsetof(struct opengl_funcs, p_glMultiDrawArraysIndirectBindlessCountNV) },
-    { "glMultiDrawArraysIndirectBindlessNV", "GL_NV_bindless_multi_draw_indirect\0", offsetof(struct opengl_funcs, p_glMultiDrawArraysIndirectBindlessNV) },
-    { "glMultiDrawArraysIndirectCount", "GL_VERSION_4_6\0", offsetof(struct opengl_funcs, p_glMultiDrawArraysIndirectCount) },
-    { "glMultiDrawArraysIndirectCountARB", "GL_ARB_indirect_parameters\0", offsetof(struct opengl_funcs, p_glMultiDrawArraysIndirectCountARB) },
-    { "glMultiDrawElementArrayAPPLE", "GL_APPLE_element_array\0", offsetof(struct opengl_funcs, p_glMultiDrawElementArrayAPPLE) },
-    { "glMultiDrawElements", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glMultiDrawElements) },
-    { "glMultiDrawElementsBaseVertex", "GL_ARB_draw_elements_base_vertex\0GL_VERSION_3_2\0", offsetof(struct opengl_funcs, p_glMultiDrawElementsBaseVertex) },
-    { "glMultiDrawElementsEXT", "GL_EXT_multi_draw_arrays\0GL_SUN_multi_draw_arrays\0", offsetof(struct opengl_funcs, p_glMultiDrawElementsEXT) },
-    { "glMultiDrawElementsIndirect", "GL_ARB_multi_draw_indirect\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glMultiDrawElementsIndirect) },
-    { "glMultiDrawElementsIndirectAMD", "GL_AMD_multi_draw_indirect\0", offsetof(struct opengl_funcs, p_glMultiDrawElementsIndirectAMD) },
-    { "glMultiDrawElementsIndirectBindlessCountNV", "GL_NV_bindless_multi_draw_indirect_count\0", offsetof(struct opengl_funcs, p_glMultiDrawElementsIndirectBindlessCountNV) },
-    { "glMultiDrawElementsIndirectBindlessNV", "GL_NV_bindless_multi_draw_indirect\0", offsetof(struct opengl_funcs, p_glMultiDrawElementsIndirectBindlessNV) },
-    { "glMultiDrawElementsIndirectCount", "GL_VERSION_4_6\0", offsetof(struct opengl_funcs, p_glMultiDrawElementsIndirectCount) },
-    { "glMultiDrawElementsIndirectCountARB", "GL_ARB_indirect_parameters\0", offsetof(struct opengl_funcs, p_glMultiDrawElementsIndirectCountARB) },
-    { "glMultiDrawMeshTasksIndirectCountEXT", "GL_EXT_mesh_shader\0", offsetof(struct opengl_funcs, p_glMultiDrawMeshTasksIndirectCountEXT) },
-    { "glMultiDrawMeshTasksIndirectCountNV", "GL_NV_mesh_shader\0", offsetof(struct opengl_funcs, p_glMultiDrawMeshTasksIndirectCountNV) },
-    { "glMultiDrawMeshTasksIndirectEXT", "GL_EXT_mesh_shader\0", offsetof(struct opengl_funcs, p_glMultiDrawMeshTasksIndirectEXT) },
-    { "glMultiDrawMeshTasksIndirectNV", "GL_NV_mesh_shader\0", offsetof(struct opengl_funcs, p_glMultiDrawMeshTasksIndirectNV) },
-    { "glMultiDrawRangeElementArrayAPPLE", "GL_APPLE_element_array\0", offsetof(struct opengl_funcs, p_glMultiDrawRangeElementArrayAPPLE) },
-    { "glMultiModeDrawArraysIBM", "GL_IBM_multimode_draw_arrays\0", offsetof(struct opengl_funcs, p_glMultiModeDrawArraysIBM) },
-    { "glMultiModeDrawElementsIBM", "GL_IBM_multimode_draw_arrays\0", offsetof(struct opengl_funcs, p_glMultiModeDrawElementsIBM) },
-    { "glMultiTexBufferEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glMultiTexBufferEXT) },
-    { "glMultiTexCoord1bOES", "GL_OES_byte_coordinates\0", offsetof(struct opengl_funcs, p_glMultiTexCoord1bOES) },
-    { "glMultiTexCoord1bvOES", "GL_OES_byte_coordinates\0", offsetof(struct opengl_funcs, p_glMultiTexCoord1bvOES) },
-    { "glMultiTexCoord1d", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glMultiTexCoord1d) },
-    { "glMultiTexCoord1dARB", "GL_ARB_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord1dARB) },
-    { "glMultiTexCoord1dSGIS", "GL_SGIS_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord1dSGIS) },
-    { "glMultiTexCoord1dv", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glMultiTexCoord1dv) },
-    { "glMultiTexCoord1dvARB", "GL_ARB_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord1dvARB) },
-    { "glMultiTexCoord1dvSGIS", "GL_SGIS_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord1dvSGIS) },
-    { "glMultiTexCoord1f", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glMultiTexCoord1f) },
-    { "glMultiTexCoord1fARB", "GL_ARB_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord1fARB) },
-    { "glMultiTexCoord1fSGIS", "GL_SGIS_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord1fSGIS) },
-    { "glMultiTexCoord1fv", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glMultiTexCoord1fv) },
-    { "glMultiTexCoord1fvARB", "GL_ARB_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord1fvARB) },
-    { "glMultiTexCoord1fvSGIS", "GL_SGIS_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord1fvSGIS) },
-    { "glMultiTexCoord1hNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glMultiTexCoord1hNV) },
-    { "glMultiTexCoord1hvNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glMultiTexCoord1hvNV) },
-    { "glMultiTexCoord1i", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glMultiTexCoord1i) },
-    { "glMultiTexCoord1iARB", "GL_ARB_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord1iARB) },
-    { "glMultiTexCoord1iSGIS", "GL_SGIS_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord1iSGIS) },
-    { "glMultiTexCoord1iv", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glMultiTexCoord1iv) },
-    { "glMultiTexCoord1ivARB", "GL_ARB_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord1ivARB) },
-    { "glMultiTexCoord1ivSGIS", "GL_SGIS_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord1ivSGIS) },
-    { "glMultiTexCoord1s", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glMultiTexCoord1s) },
-    { "glMultiTexCoord1sARB", "GL_ARB_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord1sARB) },
-    { "glMultiTexCoord1sSGIS", "GL_SGIS_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord1sSGIS) },
-    { "glMultiTexCoord1sv", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glMultiTexCoord1sv) },
-    { "glMultiTexCoord1svARB", "GL_ARB_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord1svARB) },
-    { "glMultiTexCoord1svSGIS", "GL_SGIS_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord1svSGIS) },
-    { "glMultiTexCoord1xOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glMultiTexCoord1xOES) },
-    { "glMultiTexCoord1xvOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glMultiTexCoord1xvOES) },
-    { "glMultiTexCoord2bOES", "GL_OES_byte_coordinates\0", offsetof(struct opengl_funcs, p_glMultiTexCoord2bOES) },
-    { "glMultiTexCoord2bvOES", "GL_OES_byte_coordinates\0", offsetof(struct opengl_funcs, p_glMultiTexCoord2bvOES) },
-    { "glMultiTexCoord2d", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glMultiTexCoord2d) },
-    { "glMultiTexCoord2dARB", "GL_ARB_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord2dARB) },
-    { "glMultiTexCoord2dSGIS", "GL_SGIS_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord2dSGIS) },
-    { "glMultiTexCoord2dv", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glMultiTexCoord2dv) },
-    { "glMultiTexCoord2dvARB", "GL_ARB_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord2dvARB) },
-    { "glMultiTexCoord2dvSGIS", "GL_SGIS_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord2dvSGIS) },
-    { "glMultiTexCoord2f", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glMultiTexCoord2f) },
-    { "glMultiTexCoord2fARB", "GL_ARB_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord2fARB) },
-    { "glMultiTexCoord2fSGIS", "GL_SGIS_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord2fSGIS) },
-    { "glMultiTexCoord2fv", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glMultiTexCoord2fv) },
-    { "glMultiTexCoord2fvARB", "GL_ARB_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord2fvARB) },
-    { "glMultiTexCoord2fvSGIS", "GL_SGIS_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord2fvSGIS) },
-    { "glMultiTexCoord2hNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glMultiTexCoord2hNV) },
-    { "glMultiTexCoord2hvNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glMultiTexCoord2hvNV) },
-    { "glMultiTexCoord2i", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glMultiTexCoord2i) },
-    { "glMultiTexCoord2iARB", "GL_ARB_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord2iARB) },
-    { "glMultiTexCoord2iSGIS", "GL_SGIS_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord2iSGIS) },
-    { "glMultiTexCoord2iv", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glMultiTexCoord2iv) },
-    { "glMultiTexCoord2ivARB", "GL_ARB_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord2ivARB) },
-    { "glMultiTexCoord2ivSGIS", "GL_SGIS_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord2ivSGIS) },
-    { "glMultiTexCoord2s", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glMultiTexCoord2s) },
-    { "glMultiTexCoord2sARB", "GL_ARB_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord2sARB) },
-    { "glMultiTexCoord2sSGIS", "GL_SGIS_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord2sSGIS) },
-    { "glMultiTexCoord2sv", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glMultiTexCoord2sv) },
-    { "glMultiTexCoord2svARB", "GL_ARB_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord2svARB) },
-    { "glMultiTexCoord2svSGIS", "GL_SGIS_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord2svSGIS) },
-    { "glMultiTexCoord2xOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glMultiTexCoord2xOES) },
-    { "glMultiTexCoord2xvOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glMultiTexCoord2xvOES) },
-    { "glMultiTexCoord3bOES", "GL_OES_byte_coordinates\0", offsetof(struct opengl_funcs, p_glMultiTexCoord3bOES) },
-    { "glMultiTexCoord3bvOES", "GL_OES_byte_coordinates\0", offsetof(struct opengl_funcs, p_glMultiTexCoord3bvOES) },
-    { "glMultiTexCoord3d", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glMultiTexCoord3d) },
-    { "glMultiTexCoord3dARB", "GL_ARB_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord3dARB) },
-    { "glMultiTexCoord3dSGIS", "GL_SGIS_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord3dSGIS) },
-    { "glMultiTexCoord3dv", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glMultiTexCoord3dv) },
-    { "glMultiTexCoord3dvARB", "GL_ARB_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord3dvARB) },
-    { "glMultiTexCoord3dvSGIS", "GL_SGIS_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord3dvSGIS) },
-    { "glMultiTexCoord3f", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glMultiTexCoord3f) },
-    { "glMultiTexCoord3fARB", "GL_ARB_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord3fARB) },
-    { "glMultiTexCoord3fSGIS", "GL_SGIS_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord3fSGIS) },
-    { "glMultiTexCoord3fv", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glMultiTexCoord3fv) },
-    { "glMultiTexCoord3fvARB", "GL_ARB_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord3fvARB) },
-    { "glMultiTexCoord3fvSGIS", "GL_SGIS_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord3fvSGIS) },
-    { "glMultiTexCoord3hNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glMultiTexCoord3hNV) },
-    { "glMultiTexCoord3hvNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glMultiTexCoord3hvNV) },
-    { "glMultiTexCoord3i", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glMultiTexCoord3i) },
-    { "glMultiTexCoord3iARB", "GL_ARB_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord3iARB) },
-    { "glMultiTexCoord3iSGIS", "GL_SGIS_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord3iSGIS) },
-    { "glMultiTexCoord3iv", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glMultiTexCoord3iv) },
-    { "glMultiTexCoord3ivARB", "GL_ARB_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord3ivARB) },
-    { "glMultiTexCoord3ivSGIS", "GL_SGIS_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord3ivSGIS) },
-    { "glMultiTexCoord3s", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glMultiTexCoord3s) },
-    { "glMultiTexCoord3sARB", "GL_ARB_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord3sARB) },
-    { "glMultiTexCoord3sSGIS", "GL_SGIS_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord3sSGIS) },
-    { "glMultiTexCoord3sv", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glMultiTexCoord3sv) },
-    { "glMultiTexCoord3svARB", "GL_ARB_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord3svARB) },
-    { "glMultiTexCoord3svSGIS", "GL_SGIS_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord3svSGIS) },
-    { "glMultiTexCoord3xOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glMultiTexCoord3xOES) },
-    { "glMultiTexCoord3xvOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glMultiTexCoord3xvOES) },
-    { "glMultiTexCoord4bOES", "GL_OES_byte_coordinates\0", offsetof(struct opengl_funcs, p_glMultiTexCoord4bOES) },
-    { "glMultiTexCoord4bvOES", "GL_OES_byte_coordinates\0", offsetof(struct opengl_funcs, p_glMultiTexCoord4bvOES) },
-    { "glMultiTexCoord4d", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glMultiTexCoord4d) },
-    { "glMultiTexCoord4dARB", "GL_ARB_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord4dARB) },
-    { "glMultiTexCoord4dSGIS", "GL_SGIS_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord4dSGIS) },
-    { "glMultiTexCoord4dv", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glMultiTexCoord4dv) },
-    { "glMultiTexCoord4dvARB", "GL_ARB_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord4dvARB) },
-    { "glMultiTexCoord4dvSGIS", "GL_SGIS_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord4dvSGIS) },
-    { "glMultiTexCoord4f", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glMultiTexCoord4f) },
-    { "glMultiTexCoord4fARB", "GL_ARB_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord4fARB) },
-    { "glMultiTexCoord4fSGIS", "GL_SGIS_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord4fSGIS) },
-    { "glMultiTexCoord4fv", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glMultiTexCoord4fv) },
-    { "glMultiTexCoord4fvARB", "GL_ARB_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord4fvARB) },
-    { "glMultiTexCoord4fvSGIS", "GL_SGIS_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord4fvSGIS) },
-    { "glMultiTexCoord4hNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glMultiTexCoord4hNV) },
-    { "glMultiTexCoord4hvNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glMultiTexCoord4hvNV) },
-    { "glMultiTexCoord4i", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glMultiTexCoord4i) },
-    { "glMultiTexCoord4iARB", "GL_ARB_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord4iARB) },
-    { "glMultiTexCoord4iSGIS", "GL_SGIS_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord4iSGIS) },
-    { "glMultiTexCoord4iv", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glMultiTexCoord4iv) },
-    { "glMultiTexCoord4ivARB", "GL_ARB_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord4ivARB) },
-    { "glMultiTexCoord4ivSGIS", "GL_SGIS_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord4ivSGIS) },
-    { "glMultiTexCoord4s", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glMultiTexCoord4s) },
-    { "glMultiTexCoord4sARB", "GL_ARB_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord4sARB) },
-    { "glMultiTexCoord4sSGIS", "GL_SGIS_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord4sSGIS) },
-    { "glMultiTexCoord4sv", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glMultiTexCoord4sv) },
-    { "glMultiTexCoord4svARB", "GL_ARB_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord4svARB) },
-    { "glMultiTexCoord4svSGIS", "GL_SGIS_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoord4svSGIS) },
-    { "glMultiTexCoord4x", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glMultiTexCoord4x) },
-    { "glMultiTexCoord4xOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glMultiTexCoord4xOES) },
-    { "glMultiTexCoord4xvOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glMultiTexCoord4xvOES) },
-    { "glMultiTexCoordP1ui", "GL_ARB_vertex_type_2_10_10_10_rev\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glMultiTexCoordP1ui) },
-    { "glMultiTexCoordP1uiv", "GL_ARB_vertex_type_2_10_10_10_rev\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glMultiTexCoordP1uiv) },
-    { "glMultiTexCoordP2ui", "GL_ARB_vertex_type_2_10_10_10_rev\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glMultiTexCoordP2ui) },
-    { "glMultiTexCoordP2uiv", "GL_ARB_vertex_type_2_10_10_10_rev\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glMultiTexCoordP2uiv) },
-    { "glMultiTexCoordP3ui", "GL_ARB_vertex_type_2_10_10_10_rev\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glMultiTexCoordP3ui) },
-    { "glMultiTexCoordP3uiv", "GL_ARB_vertex_type_2_10_10_10_rev\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glMultiTexCoordP3uiv) },
-    { "glMultiTexCoordP4ui", "GL_ARB_vertex_type_2_10_10_10_rev\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glMultiTexCoordP4ui) },
-    { "glMultiTexCoordP4uiv", "GL_ARB_vertex_type_2_10_10_10_rev\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glMultiTexCoordP4uiv) },
-    { "glMultiTexCoordPointerEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glMultiTexCoordPointerEXT) },
-    { "glMultiTexCoordPointerSGIS", "GL_SGIS_multitexture\0", offsetof(struct opengl_funcs, p_glMultiTexCoordPointerSGIS) },
-    { "glMultiTexEnvfEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glMultiTexEnvfEXT) },
-    { "glMultiTexEnvfvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glMultiTexEnvfvEXT) },
-    { "glMultiTexEnviEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glMultiTexEnviEXT) },
-    { "glMultiTexEnvivEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glMultiTexEnvivEXT) },
-    { "glMultiTexGendEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glMultiTexGendEXT) },
-    { "glMultiTexGendvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glMultiTexGendvEXT) },
-    { "glMultiTexGenfEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glMultiTexGenfEXT) },
-    { "glMultiTexGenfvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glMultiTexGenfvEXT) },
-    { "glMultiTexGeniEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glMultiTexGeniEXT) },
-    { "glMultiTexGenivEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glMultiTexGenivEXT) },
-    { "glMultiTexImage1DEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glMultiTexImage1DEXT) },
-    { "glMultiTexImage2DEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glMultiTexImage2DEXT) },
-    { "glMultiTexImage3DEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glMultiTexImage3DEXT) },
-    { "glMultiTexParameterIivEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glMultiTexParameterIivEXT) },
-    { "glMultiTexParameterIuivEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glMultiTexParameterIuivEXT) },
-    { "glMultiTexParameterfEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glMultiTexParameterfEXT) },
-    { "glMultiTexParameterfvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glMultiTexParameterfvEXT) },
-    { "glMultiTexParameteriEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glMultiTexParameteriEXT) },
-    { "glMultiTexParameterivEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glMultiTexParameterivEXT) },
-    { "glMultiTexRenderbufferEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glMultiTexRenderbufferEXT) },
-    { "glMultiTexSubImage1DEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glMultiTexSubImage1DEXT) },
-    { "glMultiTexSubImage2DEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glMultiTexSubImage2DEXT) },
-    { "glMultiTexSubImage3DEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glMultiTexSubImage3DEXT) },
-    { "glMulticastBarrierNV", "GL_NV_gpu_multicast\0", offsetof(struct opengl_funcs, p_glMulticastBarrierNV) },
-    { "glMulticastBlitFramebufferNV", "GL_NV_gpu_multicast\0", offsetof(struct opengl_funcs, p_glMulticastBlitFramebufferNV) },
-    { "glMulticastBufferSubDataNV", "GL_NV_gpu_multicast\0", offsetof(struct opengl_funcs, p_glMulticastBufferSubDataNV) },
-    { "glMulticastCopyBufferSubDataNV", "GL_NV_gpu_multicast\0", offsetof(struct opengl_funcs, p_glMulticastCopyBufferSubDataNV) },
-    { "glMulticastCopyImageSubDataNV", "GL_NV_gpu_multicast\0", offsetof(struct opengl_funcs, p_glMulticastCopyImageSubDataNV) },
-    { "glMulticastFramebufferSampleLocationsfvNV", "GL_NV_gpu_multicast\0", offsetof(struct opengl_funcs, p_glMulticastFramebufferSampleLocationsfvNV) },
-    { "glMulticastGetQueryObjecti64vNV", "GL_NV_gpu_multicast\0", offsetof(struct opengl_funcs, p_glMulticastGetQueryObjecti64vNV) },
-    { "glMulticastGetQueryObjectivNV", "GL_NV_gpu_multicast\0", offsetof(struct opengl_funcs, p_glMulticastGetQueryObjectivNV) },
-    { "glMulticastGetQueryObjectui64vNV", "GL_NV_gpu_multicast\0", offsetof(struct opengl_funcs, p_glMulticastGetQueryObjectui64vNV) },
-    { "glMulticastGetQueryObjectuivNV", "GL_NV_gpu_multicast\0", offsetof(struct opengl_funcs, p_glMulticastGetQueryObjectuivNV) },
-    { "glMulticastScissorArrayvNVX", "GL_NVX_gpu_multicast2\0", offsetof(struct opengl_funcs, p_glMulticastScissorArrayvNVX) },
-    { "glMulticastViewportArrayvNVX", "GL_NVX_gpu_multicast2\0", offsetof(struct opengl_funcs, p_glMulticastViewportArrayvNVX) },
-    { "glMulticastViewportPositionWScaleNVX", "GL_NVX_gpu_multicast2\0", offsetof(struct opengl_funcs, p_glMulticastViewportPositionWScaleNVX) },
-    { "glMulticastWaitSyncNV", "GL_NV_gpu_multicast\0", offsetof(struct opengl_funcs, p_glMulticastWaitSyncNV) },
-    { "glNamedBufferAttachMemoryNV", "GL_NV_memory_attachment\0", offsetof(struct opengl_funcs, p_glNamedBufferAttachMemoryNV) },
-    { "glNamedBufferData", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glNamedBufferData) },
-    { "glNamedBufferDataEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glNamedBufferDataEXT) },
-    { "glNamedBufferPageCommitmentARB", "GL_ARB_sparse_buffer\0", offsetof(struct opengl_funcs, p_glNamedBufferPageCommitmentARB) },
-    { "glNamedBufferPageCommitmentEXT", "GL_ARB_sparse_buffer\0", offsetof(struct opengl_funcs, p_glNamedBufferPageCommitmentEXT) },
-    { "glNamedBufferPageCommitmentMemNV", "GL_NV_memory_object_sparse\0", offsetof(struct opengl_funcs, p_glNamedBufferPageCommitmentMemNV) },
-    { "glNamedBufferStorage", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glNamedBufferStorage) },
-    { "glNamedBufferStorageEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glNamedBufferStorageEXT) },
-    { "glNamedBufferStorageExternalEXT", "GL_EXT_external_buffer\0", offsetof(struct opengl_funcs, p_glNamedBufferStorageExternalEXT) },
-    { "glNamedBufferStorageMemEXT", "GL_EXT_memory_object\0", offsetof(struct opengl_funcs, p_glNamedBufferStorageMemEXT) },
-    { "glNamedBufferSubData", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glNamedBufferSubData) },
-    { "glNamedBufferSubDataEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glNamedBufferSubDataEXT) },
-    { "glNamedCopyBufferSubDataEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glNamedCopyBufferSubDataEXT) },
-    { "glNamedFramebufferDrawBuffer", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glNamedFramebufferDrawBuffer) },
-    { "glNamedFramebufferDrawBuffers", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glNamedFramebufferDrawBuffers) },
-    { "glNamedFramebufferParameteri", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glNamedFramebufferParameteri) },
-    { "glNamedFramebufferParameteriEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glNamedFramebufferParameteriEXT) },
-    { "glNamedFramebufferReadBuffer", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glNamedFramebufferReadBuffer) },
-    { "glNamedFramebufferRenderbuffer", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glNamedFramebufferRenderbuffer) },
-    { "glNamedFramebufferRenderbufferEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glNamedFramebufferRenderbufferEXT) },
-    { "glNamedFramebufferSampleLocationsfvARB", "GL_ARB_sample_locations\0", offsetof(struct opengl_funcs, p_glNamedFramebufferSampleLocationsfvARB) },
-    { "glNamedFramebufferSampleLocationsfvNV", "GL_NV_sample_locations\0", offsetof(struct opengl_funcs, p_glNamedFramebufferSampleLocationsfvNV) },
-    { "glNamedFramebufferSamplePositionsfvAMD", "GL_AMD_framebuffer_sample_positions\0", offsetof(struct opengl_funcs, p_glNamedFramebufferSamplePositionsfvAMD) },
-    { "glNamedFramebufferTexture", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glNamedFramebufferTexture) },
-    { "glNamedFramebufferTexture1DEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glNamedFramebufferTexture1DEXT) },
-    { "glNamedFramebufferTexture2DEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glNamedFramebufferTexture2DEXT) },
-    { "glNamedFramebufferTexture3DEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glNamedFramebufferTexture3DEXT) },
-    { "glNamedFramebufferTextureEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glNamedFramebufferTextureEXT) },
-    { "glNamedFramebufferTextureFaceEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glNamedFramebufferTextureFaceEXT) },
-    { "glNamedFramebufferTextureLayer", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glNamedFramebufferTextureLayer) },
-    { "glNamedFramebufferTextureLayerEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glNamedFramebufferTextureLayerEXT) },
-    { "glNamedFramebufferTextureMultiviewOVR", "GL_OVR_multiview\0", offsetof(struct opengl_funcs, p_glNamedFramebufferTextureMultiviewOVR) },
-    { "glNamedProgramLocalParameter4dEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glNamedProgramLocalParameter4dEXT) },
-    { "glNamedProgramLocalParameter4dvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glNamedProgramLocalParameter4dvEXT) },
-    { "glNamedProgramLocalParameter4fEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glNamedProgramLocalParameter4fEXT) },
-    { "glNamedProgramLocalParameter4fvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glNamedProgramLocalParameter4fvEXT) },
-    { "glNamedProgramLocalParameterI4iEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glNamedProgramLocalParameterI4iEXT) },
-    { "glNamedProgramLocalParameterI4ivEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glNamedProgramLocalParameterI4ivEXT) },
-    { "glNamedProgramLocalParameterI4uiEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glNamedProgramLocalParameterI4uiEXT) },
-    { "glNamedProgramLocalParameterI4uivEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glNamedProgramLocalParameterI4uivEXT) },
-    { "glNamedProgramLocalParameters4fvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glNamedProgramLocalParameters4fvEXT) },
-    { "glNamedProgramLocalParametersI4ivEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glNamedProgramLocalParametersI4ivEXT) },
-    { "glNamedProgramLocalParametersI4uivEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glNamedProgramLocalParametersI4uivEXT) },
-    { "glNamedProgramStringEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glNamedProgramStringEXT) },
-    { "glNamedRenderbufferStorage", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glNamedRenderbufferStorage) },
-    { "glNamedRenderbufferStorageEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glNamedRenderbufferStorageEXT) },
-    { "glNamedRenderbufferStorageMultisample", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glNamedRenderbufferStorageMultisample) },
-    { "glNamedRenderbufferStorageMultisampleAdvancedAMD", "GL_AMD_framebuffer_multisample_advanced\0", offsetof(struct opengl_funcs, p_glNamedRenderbufferStorageMultisampleAdvancedAMD) },
-    { "glNamedRenderbufferStorageMultisampleCoverageEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glNamedRenderbufferStorageMultisampleCoverageEXT) },
-    { "glNamedRenderbufferStorageMultisampleEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glNamedRenderbufferStorageMultisampleEXT) },
-    { "glNamedStringARB", "GL_ARB_shading_language_include\0", offsetof(struct opengl_funcs, p_glNamedStringARB) },
-    { "glNewBufferRegion", "GL_KTX_buffer_region\0", offsetof(struct opengl_funcs, p_glNewBufferRegion) },
-    { "glNewObjectBufferATI", "GL_ATI_vertex_array_object\0", offsetof(struct opengl_funcs, p_glNewObjectBufferATI) },
-    { "glNormal3fVertex3fSUN", "GL_SUN_vertex\0", offsetof(struct opengl_funcs, p_glNormal3fVertex3fSUN) },
-    { "glNormal3fVertex3fvSUN", "GL_SUN_vertex\0", offsetof(struct opengl_funcs, p_glNormal3fVertex3fvSUN) },
-    { "glNormal3hNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glNormal3hNV) },
-    { "glNormal3hvNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glNormal3hvNV) },
-    { "glNormal3x", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glNormal3x) },
-    { "glNormal3xOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glNormal3xOES) },
-    { "glNormal3xvOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glNormal3xvOES) },
-    { "glNormalFormatNV", "GL_NV_vertex_buffer_unified_memory\0", offsetof(struct opengl_funcs, p_glNormalFormatNV) },
-    { "glNormalP3ui", "GL_ARB_vertex_type_2_10_10_10_rev\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glNormalP3ui) },
-    { "glNormalP3uiv", "GL_ARB_vertex_type_2_10_10_10_rev\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glNormalP3uiv) },
-    { "glNormalPointerEXT", "GL_EXT_vertex_array\0", offsetof(struct opengl_funcs, p_glNormalPointerEXT) },
-    { "glNormalPointerListIBM", "GL_IBM_vertex_array_lists\0", offsetof(struct opengl_funcs, p_glNormalPointerListIBM) },
-    { "glNormalPointervINTEL", "GL_INTEL_parallel_arrays\0", offsetof(struct opengl_funcs, p_glNormalPointervINTEL) },
-    { "glNormalStream3bATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glNormalStream3bATI) },
-    { "glNormalStream3bvATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glNormalStream3bvATI) },
-    { "glNormalStream3dATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glNormalStream3dATI) },
-    { "glNormalStream3dvATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glNormalStream3dvATI) },
-    { "glNormalStream3fATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glNormalStream3fATI) },
-    { "glNormalStream3fvATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glNormalStream3fvATI) },
-    { "glNormalStream3iATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glNormalStream3iATI) },
-    { "glNormalStream3ivATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glNormalStream3ivATI) },
-    { "glNormalStream3sATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glNormalStream3sATI) },
-    { "glNormalStream3svATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glNormalStream3svATI) },
-    { "glObjectLabel", "GL_KHR_debug\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glObjectLabel) },
-    { "glObjectPtrLabel", "GL_KHR_debug\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glObjectPtrLabel) },
-    { "glObjectPurgeableAPPLE", "GL_APPLE_object_purgeable\0", offsetof(struct opengl_funcs, p_glObjectPurgeableAPPLE) },
-    { "glObjectUnpurgeableAPPLE", "GL_APPLE_object_purgeable\0", offsetof(struct opengl_funcs, p_glObjectUnpurgeableAPPLE) },
-    { "glOrthof", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glOrthof) },
-    { "glOrthofOES", "GL_OES_single_precision\0", offsetof(struct opengl_funcs, p_glOrthofOES) },
-    { "glOrthox", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glOrthox) },
-    { "glOrthoxOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glOrthoxOES) },
-    { "glPNTrianglesfATI", "GL_ATI_pn_triangles\0", offsetof(struct opengl_funcs, p_glPNTrianglesfATI) },
-    { "glPNTrianglesiATI", "GL_ATI_pn_triangles\0", offsetof(struct opengl_funcs, p_glPNTrianglesiATI) },
-    { "glPassTexCoordATI", "GL_ATI_fragment_shader\0", offsetof(struct opengl_funcs, p_glPassTexCoordATI) },
-    { "glPassThroughxOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glPassThroughxOES) },
-    { "glPatchParameterfv", "GL_ARB_tessellation_shader\0GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glPatchParameterfv) },
-    { "glPatchParameteri", "GL_ARB_tessellation_shader\0GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glPatchParameteri) },
-    { "glPathColorGenNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glPathColorGenNV) },
-    { "glPathCommandsNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glPathCommandsNV) },
-    { "glPathCoordsNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glPathCoordsNV) },
-    { "glPathCoverDepthFuncNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glPathCoverDepthFuncNV) },
-    { "glPathDashArrayNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glPathDashArrayNV) },
-    { "glPathFogGenNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glPathFogGenNV) },
-    { "glPathGlyphIndexArrayNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glPathGlyphIndexArrayNV) },
-    { "glPathGlyphIndexRangeNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glPathGlyphIndexRangeNV) },
-    { "glPathGlyphRangeNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glPathGlyphRangeNV) },
-    { "glPathGlyphsNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glPathGlyphsNV) },
-    { "glPathMemoryGlyphIndexArrayNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glPathMemoryGlyphIndexArrayNV) },
-    { "glPathParameterfNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glPathParameterfNV) },
-    { "glPathParameterfvNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glPathParameterfvNV) },
-    { "glPathParameteriNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glPathParameteriNV) },
-    { "glPathParameterivNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glPathParameterivNV) },
-    { "glPathStencilDepthOffsetNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glPathStencilDepthOffsetNV) },
-    { "glPathStencilFuncNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glPathStencilFuncNV) },
-    { "glPathStringNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glPathStringNV) },
-    { "glPathSubCommandsNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glPathSubCommandsNV) },
-    { "glPathSubCoordsNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glPathSubCoordsNV) },
-    { "glPathTexGenNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glPathTexGenNV) },
-    { "glPauseTransformFeedback", "GL_ARB_transform_feedback2\0GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glPauseTransformFeedback) },
-    { "glPauseTransformFeedbackNV", "GL_NV_transform_feedback2\0", offsetof(struct opengl_funcs, p_glPauseTransformFeedbackNV) },
-    { "glPixelDataRangeNV", "GL_NV_pixel_data_range\0", offsetof(struct opengl_funcs, p_glPixelDataRangeNV) },
-    { "glPixelMapx", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glPixelMapx) },
-    { "glPixelStorex", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glPixelStorex) },
-    { "glPixelTexGenParameterfSGIS", "GL_SGIS_pixel_texture\0", offsetof(struct opengl_funcs, p_glPixelTexGenParameterfSGIS) },
-    { "glPixelTexGenParameterfvSGIS", "GL_SGIS_pixel_texture\0", offsetof(struct opengl_funcs, p_glPixelTexGenParameterfvSGIS) },
-    { "glPixelTexGenParameteriSGIS", "GL_SGIS_pixel_texture\0", offsetof(struct opengl_funcs, p_glPixelTexGenParameteriSGIS) },
-    { "glPixelTexGenParameterivSGIS", "GL_SGIS_pixel_texture\0", offsetof(struct opengl_funcs, p_glPixelTexGenParameterivSGIS) },
-    { "glPixelTexGenSGIX", "GL_SGIX_pixel_texture\0", offsetof(struct opengl_funcs, p_glPixelTexGenSGIX) },
-    { "glPixelTransferxOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glPixelTransferxOES) },
-    { "glPixelTransformParameterfEXT", "GL_EXT_pixel_transform\0", offsetof(struct opengl_funcs, p_glPixelTransformParameterfEXT) },
-    { "glPixelTransformParameterfvEXT", "GL_EXT_pixel_transform\0", offsetof(struct opengl_funcs, p_glPixelTransformParameterfvEXT) },
-    { "glPixelTransformParameteriEXT", "GL_EXT_pixel_transform\0", offsetof(struct opengl_funcs, p_glPixelTransformParameteriEXT) },
-    { "glPixelTransformParameterivEXT", "GL_EXT_pixel_transform\0", offsetof(struct opengl_funcs, p_glPixelTransformParameterivEXT) },
-    { "glPixelZoomxOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glPixelZoomxOES) },
-    { "glPointAlongPathNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glPointAlongPathNV) },
-    { "glPointParameterf", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glPointParameterf) },
-    { "glPointParameterfARB", "GL_ARB_point_parameters\0", offsetof(struct opengl_funcs, p_glPointParameterfARB) },
-    { "glPointParameterfEXT", "GL_EXT_point_parameters\0", offsetof(struct opengl_funcs, p_glPointParameterfEXT) },
-    { "glPointParameterfSGIS", "GL_SGIS_point_parameters\0", offsetof(struct opengl_funcs, p_glPointParameterfSGIS) },
-    { "glPointParameterfv", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glPointParameterfv) },
-    { "glPointParameterfvARB", "GL_ARB_point_parameters\0", offsetof(struct opengl_funcs, p_glPointParameterfvARB) },
-    { "glPointParameterfvEXT", "GL_EXT_point_parameters\0", offsetof(struct opengl_funcs, p_glPointParameterfvEXT) },
-    { "glPointParameterfvSGIS", "GL_SGIS_point_parameters\0", offsetof(struct opengl_funcs, p_glPointParameterfvSGIS) },
-    { "glPointParameteri", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glPointParameteri) },
-    { "glPointParameteriNV", "GL_NV_point_sprite\0", offsetof(struct opengl_funcs, p_glPointParameteriNV) },
-    { "glPointParameteriv", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glPointParameteriv) },
-    { "glPointParameterivNV", "GL_NV_point_sprite\0", offsetof(struct opengl_funcs, p_glPointParameterivNV) },
-    { "glPointParameterx", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glPointParameterx) },
-    { "glPointParameterxv", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glPointParameterxv) },
-    { "glPointParameterxvOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glPointParameterxvOES) },
-    { "glPointSizex", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glPointSizex) },
-    { "glPointSizexOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glPointSizexOES) },
-    { "glPollAsyncSGIX", "GL_SGIX_async\0", offsetof(struct opengl_funcs, p_glPollAsyncSGIX) },
-    { "glPollInstrumentsSGIX", "GL_SGIX_instruments\0", offsetof(struct opengl_funcs, p_glPollInstrumentsSGIX) },
-    { "glPolygonOffsetClamp", "GL_ARB_polygon_offset_clamp\0GL_VERSION_4_6\0", offsetof(struct opengl_funcs, p_glPolygonOffsetClamp) },
-    { "glPolygonOffsetClampEXT", "GL_EXT_polygon_offset_clamp\0", offsetof(struct opengl_funcs, p_glPolygonOffsetClampEXT) },
-    { "glPolygonOffsetEXT", "GL_EXT_polygon_offset\0", offsetof(struct opengl_funcs, p_glPolygonOffsetEXT) },
-    { "glPolygonOffsetx", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glPolygonOffsetx) },
-    { "glPolygonOffsetxOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glPolygonOffsetxOES) },
-    { "glPopDebugGroup", "GL_KHR_debug\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glPopDebugGroup) },
-    { "glPopGroupMarkerEXT", "GL_EXT_debug_marker\0", offsetof(struct opengl_funcs, p_glPopGroupMarkerEXT) },
-    { "glPresentFrameDualFillNV", "GL_NV_present_video\0", offsetof(struct opengl_funcs, p_glPresentFrameDualFillNV) },
-    { "glPresentFrameKeyedNV", "GL_NV_present_video\0", offsetof(struct opengl_funcs, p_glPresentFrameKeyedNV) },
-    { "glPrimitiveBoundingBox", "GL_ARB_ES3_2_compatibility\0", offsetof(struct opengl_funcs, p_glPrimitiveBoundingBox) },
-    { "glPrimitiveBoundingBoxARB", "GL_ARB_ES3_2_compatibility\0", offsetof(struct opengl_funcs, p_glPrimitiveBoundingBoxARB) },
-    { "glPrimitiveRestartIndex", "GL_VERSION_3_1\0", offsetof(struct opengl_funcs, p_glPrimitiveRestartIndex) },
-    { "glPrimitiveRestartIndexNV", "GL_NV_primitive_restart\0", offsetof(struct opengl_funcs, p_glPrimitiveRestartIndexNV) },
-    { "glPrimitiveRestartNV", "GL_NV_primitive_restart\0", offsetof(struct opengl_funcs, p_glPrimitiveRestartNV) },
-    { "glPrioritizeTexturesEXT", "GL_EXT_texture_object\0", offsetof(struct opengl_funcs, p_glPrioritizeTexturesEXT) },
-    { "glPrioritizeTexturesxOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glPrioritizeTexturesxOES) },
-    { "glProgramBinary", "GL_ARB_get_program_binary\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramBinary) },
-    { "glProgramBufferParametersIivNV", "GL_NV_parameter_buffer_object\0", offsetof(struct opengl_funcs, p_glProgramBufferParametersIivNV) },
-    { "glProgramBufferParametersIuivNV", "GL_NV_parameter_buffer_object\0", offsetof(struct opengl_funcs, p_glProgramBufferParametersIuivNV) },
-    { "glProgramBufferParametersfvNV", "GL_NV_parameter_buffer_object\0", offsetof(struct opengl_funcs, p_glProgramBufferParametersfvNV) },
-    { "glProgramEnvParameter4dARB", "GL_ARB_fragment_program\0GL_ARB_vertex_program\0", offsetof(struct opengl_funcs, p_glProgramEnvParameter4dARB) },
-    { "glProgramEnvParameter4dvARB", "GL_ARB_fragment_program\0GL_ARB_vertex_program\0", offsetof(struct opengl_funcs, p_glProgramEnvParameter4dvARB) },
-    { "glProgramEnvParameter4fARB", "GL_ARB_fragment_program\0GL_ARB_vertex_program\0", offsetof(struct opengl_funcs, p_glProgramEnvParameter4fARB) },
-    { "glProgramEnvParameter4fvARB", "GL_ARB_fragment_program\0GL_ARB_vertex_program\0", offsetof(struct opengl_funcs, p_glProgramEnvParameter4fvARB) },
-    { "glProgramEnvParameterI4iNV", "GL_NV_gpu_program4\0", offsetof(struct opengl_funcs, p_glProgramEnvParameterI4iNV) },
-    { "glProgramEnvParameterI4ivNV", "GL_NV_gpu_program4\0", offsetof(struct opengl_funcs, p_glProgramEnvParameterI4ivNV) },
-    { "glProgramEnvParameterI4uiNV", "GL_NV_gpu_program4\0", offsetof(struct opengl_funcs, p_glProgramEnvParameterI4uiNV) },
-    { "glProgramEnvParameterI4uivNV", "GL_NV_gpu_program4\0", offsetof(struct opengl_funcs, p_glProgramEnvParameterI4uivNV) },
-    { "glProgramEnvParameters4fvEXT", "GL_EXT_gpu_program_parameters\0", offsetof(struct opengl_funcs, p_glProgramEnvParameters4fvEXT) },
-    { "glProgramEnvParametersI4ivNV", "GL_NV_gpu_program4\0", offsetof(struct opengl_funcs, p_glProgramEnvParametersI4ivNV) },
-    { "glProgramEnvParametersI4uivNV", "GL_NV_gpu_program4\0", offsetof(struct opengl_funcs, p_glProgramEnvParametersI4uivNV) },
-    { "glProgramLocalParameter4dARB", "GL_ARB_fragment_program\0GL_ARB_vertex_program\0", offsetof(struct opengl_funcs, p_glProgramLocalParameter4dARB) },
-    { "glProgramLocalParameter4dvARB", "GL_ARB_fragment_program\0GL_ARB_vertex_program\0", offsetof(struct opengl_funcs, p_glProgramLocalParameter4dvARB) },
-    { "glProgramLocalParameter4fARB", "GL_ARB_fragment_program\0GL_ARB_vertex_program\0", offsetof(struct opengl_funcs, p_glProgramLocalParameter4fARB) },
-    { "glProgramLocalParameter4fvARB", "GL_ARB_fragment_program\0GL_ARB_vertex_program\0", offsetof(struct opengl_funcs, p_glProgramLocalParameter4fvARB) },
-    { "glProgramLocalParameterI4iNV", "GL_NV_gpu_program4\0", offsetof(struct opengl_funcs, p_glProgramLocalParameterI4iNV) },
-    { "glProgramLocalParameterI4ivNV", "GL_NV_gpu_program4\0", offsetof(struct opengl_funcs, p_glProgramLocalParameterI4ivNV) },
-    { "glProgramLocalParameterI4uiNV", "GL_NV_gpu_program4\0", offsetof(struct opengl_funcs, p_glProgramLocalParameterI4uiNV) },
-    { "glProgramLocalParameterI4uivNV", "GL_NV_gpu_program4\0", offsetof(struct opengl_funcs, p_glProgramLocalParameterI4uivNV) },
-    { "glProgramLocalParameters4fvEXT", "GL_EXT_gpu_program_parameters\0", offsetof(struct opengl_funcs, p_glProgramLocalParameters4fvEXT) },
-    { "glProgramLocalParametersI4ivNV", "GL_NV_gpu_program4\0", offsetof(struct opengl_funcs, p_glProgramLocalParametersI4ivNV) },
-    { "glProgramLocalParametersI4uivNV", "GL_NV_gpu_program4\0", offsetof(struct opengl_funcs, p_glProgramLocalParametersI4uivNV) },
-    { "glProgramNamedParameter4dNV", "GL_NV_fragment_program\0", offsetof(struct opengl_funcs, p_glProgramNamedParameter4dNV) },
-    { "glProgramNamedParameter4dvNV", "GL_NV_fragment_program\0", offsetof(struct opengl_funcs, p_glProgramNamedParameter4dvNV) },
-    { "glProgramNamedParameter4fNV", "GL_NV_fragment_program\0", offsetof(struct opengl_funcs, p_glProgramNamedParameter4fNV) },
-    { "glProgramNamedParameter4fvNV", "GL_NV_fragment_program\0", offsetof(struct opengl_funcs, p_glProgramNamedParameter4fvNV) },
-    { "glProgramParameter4dNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glProgramParameter4dNV) },
-    { "glProgramParameter4dvNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glProgramParameter4dvNV) },
-    { "glProgramParameter4fNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glProgramParameter4fNV) },
-    { "glProgramParameter4fvNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glProgramParameter4fvNV) },
-    { "glProgramParameteri", "GL_ARB_get_program_binary\0GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramParameteri) },
-    { "glProgramParameteriARB", "GL_ARB_geometry_shader4\0", offsetof(struct opengl_funcs, p_glProgramParameteriARB) },
-    { "glProgramParameteriEXT", "GL_EXT_geometry_shader4\0", offsetof(struct opengl_funcs, p_glProgramParameteriEXT) },
-    { "glProgramParameters4dvNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glProgramParameters4dvNV) },
-    { "glProgramParameters4fvNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glProgramParameters4fvNV) },
-    { "glProgramPathFragmentInputGenNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glProgramPathFragmentInputGenNV) },
-    { "glProgramStringARB", "GL_ARB_fragment_program\0GL_ARB_vertex_program\0", offsetof(struct opengl_funcs, p_glProgramStringARB) },
-    { "glProgramSubroutineParametersuivNV", "GL_NV_gpu_program5\0GL_NV_gpu_program_fp64\0", offsetof(struct opengl_funcs, p_glProgramSubroutineParametersuivNV) },
-    { "glProgramUniform1d", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniform1d) },
-    { "glProgramUniform1dEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniform1dEXT) },
-    { "glProgramUniform1dv", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniform1dv) },
-    { "glProgramUniform1dvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniform1dvEXT) },
-    { "glProgramUniform1f", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniform1f) },
-    { "glProgramUniform1fEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniform1fEXT) },
-    { "glProgramUniform1fv", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniform1fv) },
-    { "glProgramUniform1fvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniform1fvEXT) },
-    { "glProgramUniform1i", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniform1i) },
-    { "glProgramUniform1i64ARB", "GL_ARB_gpu_shader_int64\0", offsetof(struct opengl_funcs, p_glProgramUniform1i64ARB) },
-    { "glProgramUniform1i64NV", "GL_AMD_gpu_shader_int64\0GL_NV_gpu_shader5\0", offsetof(struct opengl_funcs, p_glProgramUniform1i64NV) },
-    { "glProgramUniform1i64vARB", "GL_ARB_gpu_shader_int64\0", offsetof(struct opengl_funcs, p_glProgramUniform1i64vARB) },
-    { "glProgramUniform1i64vNV", "GL_AMD_gpu_shader_int64\0GL_NV_gpu_shader5\0", offsetof(struct opengl_funcs, p_glProgramUniform1i64vNV) },
-    { "glProgramUniform1iEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniform1iEXT) },
-    { "glProgramUniform1iv", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniform1iv) },
-    { "glProgramUniform1ivEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniform1ivEXT) },
-    { "glProgramUniform1ui", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniform1ui) },
-    { "glProgramUniform1ui64ARB", "GL_ARB_gpu_shader_int64\0", offsetof(struct opengl_funcs, p_glProgramUniform1ui64ARB) },
-    { "glProgramUniform1ui64NV", "GL_AMD_gpu_shader_int64\0GL_NV_gpu_shader5\0", offsetof(struct opengl_funcs, p_glProgramUniform1ui64NV) },
-    { "glProgramUniform1ui64vARB", "GL_ARB_gpu_shader_int64\0", offsetof(struct opengl_funcs, p_glProgramUniform1ui64vARB) },
-    { "glProgramUniform1ui64vNV", "GL_AMD_gpu_shader_int64\0GL_NV_gpu_shader5\0", offsetof(struct opengl_funcs, p_glProgramUniform1ui64vNV) },
-    { "glProgramUniform1uiEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniform1uiEXT) },
-    { "glProgramUniform1uiv", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniform1uiv) },
-    { "glProgramUniform1uivEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniform1uivEXT) },
-    { "glProgramUniform2d", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniform2d) },
-    { "glProgramUniform2dEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniform2dEXT) },
-    { "glProgramUniform2dv", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniform2dv) },
-    { "glProgramUniform2dvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniform2dvEXT) },
-    { "glProgramUniform2f", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniform2f) },
-    { "glProgramUniform2fEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniform2fEXT) },
-    { "glProgramUniform2fv", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniform2fv) },
-    { "glProgramUniform2fvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniform2fvEXT) },
-    { "glProgramUniform2i", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniform2i) },
-    { "glProgramUniform2i64ARB", "GL_ARB_gpu_shader_int64\0", offsetof(struct opengl_funcs, p_glProgramUniform2i64ARB) },
-    { "glProgramUniform2i64NV", "GL_AMD_gpu_shader_int64\0GL_NV_gpu_shader5\0", offsetof(struct opengl_funcs, p_glProgramUniform2i64NV) },
-    { "glProgramUniform2i64vARB", "GL_ARB_gpu_shader_int64\0", offsetof(struct opengl_funcs, p_glProgramUniform2i64vARB) },
-    { "glProgramUniform2i64vNV", "GL_AMD_gpu_shader_int64\0GL_NV_gpu_shader5\0", offsetof(struct opengl_funcs, p_glProgramUniform2i64vNV) },
-    { "glProgramUniform2iEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniform2iEXT) },
-    { "glProgramUniform2iv", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniform2iv) },
-    { "glProgramUniform2ivEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniform2ivEXT) },
-    { "glProgramUniform2ui", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniform2ui) },
-    { "glProgramUniform2ui64ARB", "GL_ARB_gpu_shader_int64\0", offsetof(struct opengl_funcs, p_glProgramUniform2ui64ARB) },
-    { "glProgramUniform2ui64NV", "GL_AMD_gpu_shader_int64\0GL_NV_gpu_shader5\0", offsetof(struct opengl_funcs, p_glProgramUniform2ui64NV) },
-    { "glProgramUniform2ui64vARB", "GL_ARB_gpu_shader_int64\0", offsetof(struct opengl_funcs, p_glProgramUniform2ui64vARB) },
-    { "glProgramUniform2ui64vNV", "GL_AMD_gpu_shader_int64\0GL_NV_gpu_shader5\0", offsetof(struct opengl_funcs, p_glProgramUniform2ui64vNV) },
-    { "glProgramUniform2uiEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniform2uiEXT) },
-    { "glProgramUniform2uiv", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniform2uiv) },
-    { "glProgramUniform2uivEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniform2uivEXT) },
-    { "glProgramUniform3d", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniform3d) },
-    { "glProgramUniform3dEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniform3dEXT) },
-    { "glProgramUniform3dv", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniform3dv) },
-    { "glProgramUniform3dvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniform3dvEXT) },
-    { "glProgramUniform3f", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniform3f) },
-    { "glProgramUniform3fEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniform3fEXT) },
-    { "glProgramUniform3fv", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniform3fv) },
-    { "glProgramUniform3fvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniform3fvEXT) },
-    { "glProgramUniform3i", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniform3i) },
-    { "glProgramUniform3i64ARB", "GL_ARB_gpu_shader_int64\0", offsetof(struct opengl_funcs, p_glProgramUniform3i64ARB) },
-    { "glProgramUniform3i64NV", "GL_AMD_gpu_shader_int64\0GL_NV_gpu_shader5\0", offsetof(struct opengl_funcs, p_glProgramUniform3i64NV) },
-    { "glProgramUniform3i64vARB", "GL_ARB_gpu_shader_int64\0", offsetof(struct opengl_funcs, p_glProgramUniform3i64vARB) },
-    { "glProgramUniform3i64vNV", "GL_AMD_gpu_shader_int64\0GL_NV_gpu_shader5\0", offsetof(struct opengl_funcs, p_glProgramUniform3i64vNV) },
-    { "glProgramUniform3iEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniform3iEXT) },
-    { "glProgramUniform3iv", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniform3iv) },
-    { "glProgramUniform3ivEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniform3ivEXT) },
-    { "glProgramUniform3ui", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniform3ui) },
-    { "glProgramUniform3ui64ARB", "GL_ARB_gpu_shader_int64\0", offsetof(struct opengl_funcs, p_glProgramUniform3ui64ARB) },
-    { "glProgramUniform3ui64NV", "GL_AMD_gpu_shader_int64\0GL_NV_gpu_shader5\0", offsetof(struct opengl_funcs, p_glProgramUniform3ui64NV) },
-    { "glProgramUniform3ui64vARB", "GL_ARB_gpu_shader_int64\0", offsetof(struct opengl_funcs, p_glProgramUniform3ui64vARB) },
-    { "glProgramUniform3ui64vNV", "GL_AMD_gpu_shader_int64\0GL_NV_gpu_shader5\0", offsetof(struct opengl_funcs, p_glProgramUniform3ui64vNV) },
-    { "glProgramUniform3uiEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniform3uiEXT) },
-    { "glProgramUniform3uiv", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniform3uiv) },
-    { "glProgramUniform3uivEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniform3uivEXT) },
-    { "glProgramUniform4d", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniform4d) },
-    { "glProgramUniform4dEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniform4dEXT) },
-    { "glProgramUniform4dv", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniform4dv) },
-    { "glProgramUniform4dvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniform4dvEXT) },
-    { "glProgramUniform4f", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniform4f) },
-    { "glProgramUniform4fEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniform4fEXT) },
-    { "glProgramUniform4fv", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniform4fv) },
-    { "glProgramUniform4fvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniform4fvEXT) },
-    { "glProgramUniform4i", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniform4i) },
-    { "glProgramUniform4i64ARB", "GL_ARB_gpu_shader_int64\0", offsetof(struct opengl_funcs, p_glProgramUniform4i64ARB) },
-    { "glProgramUniform4i64NV", "GL_AMD_gpu_shader_int64\0GL_NV_gpu_shader5\0", offsetof(struct opengl_funcs, p_glProgramUniform4i64NV) },
-    { "glProgramUniform4i64vARB", "GL_ARB_gpu_shader_int64\0", offsetof(struct opengl_funcs, p_glProgramUniform4i64vARB) },
-    { "glProgramUniform4i64vNV", "GL_AMD_gpu_shader_int64\0GL_NV_gpu_shader5\0", offsetof(struct opengl_funcs, p_glProgramUniform4i64vNV) },
-    { "glProgramUniform4iEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniform4iEXT) },
-    { "glProgramUniform4iv", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniform4iv) },
-    { "glProgramUniform4ivEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniform4ivEXT) },
-    { "glProgramUniform4ui", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniform4ui) },
-    { "glProgramUniform4ui64ARB", "GL_ARB_gpu_shader_int64\0", offsetof(struct opengl_funcs, p_glProgramUniform4ui64ARB) },
-    { "glProgramUniform4ui64NV", "GL_AMD_gpu_shader_int64\0GL_NV_gpu_shader5\0", offsetof(struct opengl_funcs, p_glProgramUniform4ui64NV) },
-    { "glProgramUniform4ui64vARB", "GL_ARB_gpu_shader_int64\0", offsetof(struct opengl_funcs, p_glProgramUniform4ui64vARB) },
-    { "glProgramUniform4ui64vNV", "GL_AMD_gpu_shader_int64\0GL_NV_gpu_shader5\0", offsetof(struct opengl_funcs, p_glProgramUniform4ui64vNV) },
-    { "glProgramUniform4uiEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniform4uiEXT) },
-    { "glProgramUniform4uiv", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniform4uiv) },
-    { "glProgramUniform4uivEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniform4uivEXT) },
-    { "glProgramUniformHandleui64ARB", "GL_ARB_bindless_texture\0", offsetof(struct opengl_funcs, p_glProgramUniformHandleui64ARB) },
-    { "glProgramUniformHandleui64NV", "GL_NV_bindless_texture\0", offsetof(struct opengl_funcs, p_glProgramUniformHandleui64NV) },
-    { "glProgramUniformHandleui64vARB", "GL_ARB_bindless_texture\0", offsetof(struct opengl_funcs, p_glProgramUniformHandleui64vARB) },
-    { "glProgramUniformHandleui64vNV", "GL_NV_bindless_texture\0", offsetof(struct opengl_funcs, p_glProgramUniformHandleui64vNV) },
-    { "glProgramUniformMatrix2dv", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniformMatrix2dv) },
-    { "glProgramUniformMatrix2dvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniformMatrix2dvEXT) },
-    { "glProgramUniformMatrix2fv", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniformMatrix2fv) },
-    { "glProgramUniformMatrix2fvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniformMatrix2fvEXT) },
-    { "glProgramUniformMatrix2x3dv", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniformMatrix2x3dv) },
-    { "glProgramUniformMatrix2x3dvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniformMatrix2x3dvEXT) },
-    { "glProgramUniformMatrix2x3fv", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniformMatrix2x3fv) },
-    { "glProgramUniformMatrix2x3fvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniformMatrix2x3fvEXT) },
-    { "glProgramUniformMatrix2x4dv", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniformMatrix2x4dv) },
-    { "glProgramUniformMatrix2x4dvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniformMatrix2x4dvEXT) },
-    { "glProgramUniformMatrix2x4fv", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniformMatrix2x4fv) },
-    { "glProgramUniformMatrix2x4fvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniformMatrix2x4fvEXT) },
-    { "glProgramUniformMatrix3dv", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniformMatrix3dv) },
-    { "glProgramUniformMatrix3dvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniformMatrix3dvEXT) },
-    { "glProgramUniformMatrix3fv", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniformMatrix3fv) },
-    { "glProgramUniformMatrix3fvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniformMatrix3fvEXT) },
-    { "glProgramUniformMatrix3x2dv", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniformMatrix3x2dv) },
-    { "glProgramUniformMatrix3x2dvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniformMatrix3x2dvEXT) },
-    { "glProgramUniformMatrix3x2fv", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniformMatrix3x2fv) },
-    { "glProgramUniformMatrix3x2fvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniformMatrix3x2fvEXT) },
-    { "glProgramUniformMatrix3x4dv", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniformMatrix3x4dv) },
-    { "glProgramUniformMatrix3x4dvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniformMatrix3x4dvEXT) },
-    { "glProgramUniformMatrix3x4fv", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniformMatrix3x4fv) },
-    { "glProgramUniformMatrix3x4fvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniformMatrix3x4fvEXT) },
-    { "glProgramUniformMatrix4dv", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniformMatrix4dv) },
-    { "glProgramUniformMatrix4dvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniformMatrix4dvEXT) },
-    { "glProgramUniformMatrix4fv", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniformMatrix4fv) },
-    { "glProgramUniformMatrix4fvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniformMatrix4fvEXT) },
-    { "glProgramUniformMatrix4x2dv", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniformMatrix4x2dv) },
-    { "glProgramUniformMatrix4x2dvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniformMatrix4x2dvEXT) },
-    { "glProgramUniformMatrix4x2fv", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniformMatrix4x2fv) },
-    { "glProgramUniformMatrix4x2fvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniformMatrix4x2fvEXT) },
-    { "glProgramUniformMatrix4x3dv", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniformMatrix4x3dv) },
-    { "glProgramUniformMatrix4x3dvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniformMatrix4x3dvEXT) },
-    { "glProgramUniformMatrix4x3fv", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glProgramUniformMatrix4x3fv) },
-    { "glProgramUniformMatrix4x3fvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glProgramUniformMatrix4x3fvEXT) },
-    { "glProgramUniformui64NV", "GL_NV_shader_buffer_load\0", offsetof(struct opengl_funcs, p_glProgramUniformui64NV) },
-    { "glProgramUniformui64vNV", "GL_NV_shader_buffer_load\0", offsetof(struct opengl_funcs, p_glProgramUniformui64vNV) },
-    { "glProgramVertexLimitNV", "GL_NV_geometry_program4\0", offsetof(struct opengl_funcs, p_glProgramVertexLimitNV) },
-    { "glProvokingVertex", "GL_ARB_provoking_vertex\0GL_VERSION_3_2\0", offsetof(struct opengl_funcs, p_glProvokingVertex) },
-    { "glProvokingVertexEXT", "GL_EXT_provoking_vertex\0", offsetof(struct opengl_funcs, p_glProvokingVertexEXT) },
-    { "glPushClientAttribDefaultEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glPushClientAttribDefaultEXT) },
-    { "glPushDebugGroup", "GL_KHR_debug\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glPushDebugGroup) },
-    { "glPushGroupMarkerEXT", "GL_EXT_debug_marker\0", offsetof(struct opengl_funcs, p_glPushGroupMarkerEXT) },
-    { "glQueryCounter", "GL_ARB_timer_query\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glQueryCounter) },
-    { "glQueryMatrixxOES", "GL_OES_query_matrix\0", offsetof(struct opengl_funcs, p_glQueryMatrixxOES) },
-    { "glQueryObjectParameteruiAMD", "GL_AMD_occlusion_query_event\0", offsetof(struct opengl_funcs, p_glQueryObjectParameteruiAMD) },
-    { "glQueryResourceNV", "GL_NV_query_resource\0", offsetof(struct opengl_funcs, p_glQueryResourceNV) },
-    { "glQueryResourceTagNV", "GL_NV_query_resource_tag\0", offsetof(struct opengl_funcs, p_glQueryResourceTagNV) },
-    { "glRasterPos2xOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glRasterPos2xOES) },
-    { "glRasterPos2xvOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glRasterPos2xvOES) },
-    { "glRasterPos3xOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glRasterPos3xOES) },
-    { "glRasterPos3xvOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glRasterPos3xvOES) },
-    { "glRasterPos4xOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glRasterPos4xOES) },
-    { "glRasterPos4xvOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glRasterPos4xvOES) },
-    { "glRasterSamplesEXT", "GL_EXT_raster_multisample\0GL_NV_framebuffer_mixed_samples\0", offsetof(struct opengl_funcs, p_glRasterSamplesEXT) },
-    { "glReadBufferRegion", "GL_KTX_buffer_region\0", offsetof(struct opengl_funcs, p_glReadBufferRegion) },
-    { "glReadInstrumentsSGIX", "GL_SGIX_instruments\0", offsetof(struct opengl_funcs, p_glReadInstrumentsSGIX) },
-    { "glReadnPixels", "GL_KHR_robustness\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glReadnPixels) },
-    { "glReadnPixelsARB", "GL_ARB_robustness\0", offsetof(struct opengl_funcs, p_glReadnPixelsARB) },
-    { "glRectxOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glRectxOES) },
-    { "glRectxvOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glRectxvOES) },
-    { "glReferencePlaneSGIX", "GL_SGIX_reference_plane\0", offsetof(struct opengl_funcs, p_glReferencePlaneSGIX) },
-    { "glReleaseKeyedMutexWin32EXT", "GL_EXT_win32_keyed_mutex\0", offsetof(struct opengl_funcs, p_glReleaseKeyedMutexWin32EXT) },
-    { "glReleaseShaderCompiler", "GL_ARB_ES2_compatibility\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glReleaseShaderCompiler) },
-    { "glRenderGpuMaskNV", "GL_NV_gpu_multicast\0", offsetof(struct opengl_funcs, p_glRenderGpuMaskNV) },
-    { "glRenderbufferStorage", "GL_ARB_framebuffer_object\0GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glRenderbufferStorage) },
-    { "glRenderbufferStorageEXT", "GL_EXT_framebuffer_object\0", offsetof(struct opengl_funcs, p_glRenderbufferStorageEXT) },
-    { "glRenderbufferStorageMultisample", "GL_ARB_framebuffer_object\0GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glRenderbufferStorageMultisample) },
-    { "glRenderbufferStorageMultisampleAdvancedAMD", "GL_AMD_framebuffer_multisample_advanced\0", offsetof(struct opengl_funcs, p_glRenderbufferStorageMultisampleAdvancedAMD) },
-    { "glRenderbufferStorageMultisampleCoverageNV", "GL_NV_framebuffer_multisample_coverage\0", offsetof(struct opengl_funcs, p_glRenderbufferStorageMultisampleCoverageNV) },
-    { "glRenderbufferStorageMultisampleEXT", "GL_EXT_framebuffer_multisample\0", offsetof(struct opengl_funcs, p_glRenderbufferStorageMultisampleEXT) },
-    { "glReplacementCodePointerSUN", "GL_SUN_triangle_list\0", offsetof(struct opengl_funcs, p_glReplacementCodePointerSUN) },
-    { "glReplacementCodeubSUN", "GL_SUN_triangle_list\0", offsetof(struct opengl_funcs, p_glReplacementCodeubSUN) },
-    { "glReplacementCodeubvSUN", "GL_SUN_triangle_list\0", offsetof(struct opengl_funcs, p_glReplacementCodeubvSUN) },
-    { "glReplacementCodeuiColor3fVertex3fSUN", "GL_SUN_vertex\0", offsetof(struct opengl_funcs, p_glReplacementCodeuiColor3fVertex3fSUN) },
-    { "glReplacementCodeuiColor3fVertex3fvSUN", "GL_SUN_vertex\0", offsetof(struct opengl_funcs, p_glReplacementCodeuiColor3fVertex3fvSUN) },
-    { "glReplacementCodeuiColor4fNormal3fVertex3fSUN", "GL_SUN_vertex\0", offsetof(struct opengl_funcs, p_glReplacementCodeuiColor4fNormal3fVertex3fSUN) },
-    { "glReplacementCodeuiColor4fNormal3fVertex3fvSUN", "GL_SUN_vertex\0", offsetof(struct opengl_funcs, p_glReplacementCodeuiColor4fNormal3fVertex3fvSUN) },
-    { "glReplacementCodeuiColor4ubVertex3fSUN", "GL_SUN_vertex\0", offsetof(struct opengl_funcs, p_glReplacementCodeuiColor4ubVertex3fSUN) },
-    { "glReplacementCodeuiColor4ubVertex3fvSUN", "GL_SUN_vertex\0", offsetof(struct opengl_funcs, p_glReplacementCodeuiColor4ubVertex3fvSUN) },
-    { "glReplacementCodeuiNormal3fVertex3fSUN", "GL_SUN_vertex\0", offsetof(struct opengl_funcs, p_glReplacementCodeuiNormal3fVertex3fSUN) },
-    { "glReplacementCodeuiNormal3fVertex3fvSUN", "GL_SUN_vertex\0", offsetof(struct opengl_funcs, p_glReplacementCodeuiNormal3fVertex3fvSUN) },
-    { "glReplacementCodeuiSUN", "GL_SUN_triangle_list\0", offsetof(struct opengl_funcs, p_glReplacementCodeuiSUN) },
-    { "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN", "GL_SUN_vertex\0", offsetof(struct opengl_funcs, p_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN) },
-    { "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN", "GL_SUN_vertex\0", offsetof(struct opengl_funcs, p_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN) },
-    { "glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN", "GL_SUN_vertex\0", offsetof(struct opengl_funcs, p_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN) },
-    { "glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN", "GL_SUN_vertex\0", offsetof(struct opengl_funcs, p_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN) },
-    { "glReplacementCodeuiTexCoord2fVertex3fSUN", "GL_SUN_vertex\0", offsetof(struct opengl_funcs, p_glReplacementCodeuiTexCoord2fVertex3fSUN) },
-    { "glReplacementCodeuiTexCoord2fVertex3fvSUN", "GL_SUN_vertex\0", offsetof(struct opengl_funcs, p_glReplacementCodeuiTexCoord2fVertex3fvSUN) },
-    { "glReplacementCodeuiVertex3fSUN", "GL_SUN_vertex\0", offsetof(struct opengl_funcs, p_glReplacementCodeuiVertex3fSUN) },
-    { "glReplacementCodeuiVertex3fvSUN", "GL_SUN_vertex\0", offsetof(struct opengl_funcs, p_glReplacementCodeuiVertex3fvSUN) },
-    { "glReplacementCodeuivSUN", "GL_SUN_triangle_list\0", offsetof(struct opengl_funcs, p_glReplacementCodeuivSUN) },
-    { "glReplacementCodeusSUN", "GL_SUN_triangle_list\0", offsetof(struct opengl_funcs, p_glReplacementCodeusSUN) },
-    { "glReplacementCodeusvSUN", "GL_SUN_triangle_list\0", offsetof(struct opengl_funcs, p_glReplacementCodeusvSUN) },
-    { "glRequestResidentProgramsNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glRequestResidentProgramsNV) },
-    { "glResetHistogram", "GL_ARB_imaging\0", offsetof(struct opengl_funcs, p_glResetHistogram) },
-    { "glResetHistogramEXT", "GL_EXT_histogram\0", offsetof(struct opengl_funcs, p_glResetHistogramEXT) },
-    { "glResetMemoryObjectParameterNV", "GL_NV_memory_attachment\0", offsetof(struct opengl_funcs, p_glResetMemoryObjectParameterNV) },
-    { "glResetMinmax", "GL_ARB_imaging\0", offsetof(struct opengl_funcs, p_glResetMinmax) },
-    { "glResetMinmaxEXT", "GL_EXT_histogram\0", offsetof(struct opengl_funcs, p_glResetMinmaxEXT) },
-    { "glResizeBuffersMESA", "GL_MESA_resize_buffers\0", offsetof(struct opengl_funcs, p_glResizeBuffersMESA) },
-    { "glResolveDepthValuesNV", "GL_NV_sample_locations\0", offsetof(struct opengl_funcs, p_glResolveDepthValuesNV) },
-    { "glResumeTransformFeedback", "GL_ARB_transform_feedback2\0GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glResumeTransformFeedback) },
-    { "glResumeTransformFeedbackNV", "GL_NV_transform_feedback2\0", offsetof(struct opengl_funcs, p_glResumeTransformFeedbackNV) },
-    { "glRotatex", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glRotatex) },
-    { "glRotatexOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glRotatexOES) },
-    { "glSampleCoverage", "GL_VERSION_1_3\0", offsetof(struct opengl_funcs, p_glSampleCoverage) },
-    { "glSampleCoverageARB", "GL_ARB_multisample\0", offsetof(struct opengl_funcs, p_glSampleCoverageARB) },
-    { "glSampleCoveragex", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glSampleCoveragex) },
-    { "glSampleMapATI", "GL_ATI_fragment_shader\0", offsetof(struct opengl_funcs, p_glSampleMapATI) },
-    { "glSampleMaskEXT", "GL_EXT_multisample\0", offsetof(struct opengl_funcs, p_glSampleMaskEXT) },
-    { "glSampleMaskIndexedNV", "GL_NV_explicit_multisample\0", offsetof(struct opengl_funcs, p_glSampleMaskIndexedNV) },
-    { "glSampleMaskSGIS", "GL_SGIS_multisample\0", offsetof(struct opengl_funcs, p_glSampleMaskSGIS) },
-    { "glSampleMaski", "GL_ARB_texture_multisample\0GL_VERSION_3_2\0", offsetof(struct opengl_funcs, p_glSampleMaski) },
-    { "glSamplePatternEXT", "GL_EXT_multisample\0", offsetof(struct opengl_funcs, p_glSamplePatternEXT) },
-    { "glSamplePatternSGIS", "GL_SGIS_multisample\0", offsetof(struct opengl_funcs, p_glSamplePatternSGIS) },
-    { "glSamplerParameterIiv", "GL_ARB_sampler_objects\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glSamplerParameterIiv) },
-    { "glSamplerParameterIuiv", "GL_ARB_sampler_objects\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glSamplerParameterIuiv) },
-    { "glSamplerParameterf", "GL_ARB_sampler_objects\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glSamplerParameterf) },
-    { "glSamplerParameterfv", "GL_ARB_sampler_objects\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glSamplerParameterfv) },
-    { "glSamplerParameteri", "GL_ARB_sampler_objects\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glSamplerParameteri) },
-    { "glSamplerParameteriv", "GL_ARB_sampler_objects\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glSamplerParameteriv) },
-    { "glScalex", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glScalex) },
-    { "glScalexOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glScalexOES) },
-    { "glScissorArrayv", "GL_ARB_viewport_array\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glScissorArrayv) },
-    { "glScissorExclusiveArrayvNV", "GL_NV_scissor_exclusive\0", offsetof(struct opengl_funcs, p_glScissorExclusiveArrayvNV) },
-    { "glScissorExclusiveNV", "GL_NV_scissor_exclusive\0", offsetof(struct opengl_funcs, p_glScissorExclusiveNV) },
-    { "glScissorIndexed", "GL_ARB_viewport_array\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glScissorIndexed) },
-    { "glScissorIndexedv", "GL_ARB_viewport_array\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glScissorIndexedv) },
-    { "glSecondaryColor3b", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glSecondaryColor3b) },
-    { "glSecondaryColor3bEXT", "GL_EXT_secondary_color\0", offsetof(struct opengl_funcs, p_glSecondaryColor3bEXT) },
-    { "glSecondaryColor3bv", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glSecondaryColor3bv) },
-    { "glSecondaryColor3bvEXT", "GL_EXT_secondary_color\0", offsetof(struct opengl_funcs, p_glSecondaryColor3bvEXT) },
-    { "glSecondaryColor3d", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glSecondaryColor3d) },
-    { "glSecondaryColor3dEXT", "GL_EXT_secondary_color\0", offsetof(struct opengl_funcs, p_glSecondaryColor3dEXT) },
-    { "glSecondaryColor3dv", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glSecondaryColor3dv) },
-    { "glSecondaryColor3dvEXT", "GL_EXT_secondary_color\0", offsetof(struct opengl_funcs, p_glSecondaryColor3dvEXT) },
-    { "glSecondaryColor3f", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glSecondaryColor3f) },
-    { "glSecondaryColor3fEXT", "GL_EXT_secondary_color\0", offsetof(struct opengl_funcs, p_glSecondaryColor3fEXT) },
-    { "glSecondaryColor3fv", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glSecondaryColor3fv) },
-    { "glSecondaryColor3fvEXT", "GL_EXT_secondary_color\0", offsetof(struct opengl_funcs, p_glSecondaryColor3fvEXT) },
-    { "glSecondaryColor3hNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glSecondaryColor3hNV) },
-    { "glSecondaryColor3hvNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glSecondaryColor3hvNV) },
-    { "glSecondaryColor3i", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glSecondaryColor3i) },
-    { "glSecondaryColor3iEXT", "GL_EXT_secondary_color\0", offsetof(struct opengl_funcs, p_glSecondaryColor3iEXT) },
-    { "glSecondaryColor3iv", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glSecondaryColor3iv) },
-    { "glSecondaryColor3ivEXT", "GL_EXT_secondary_color\0", offsetof(struct opengl_funcs, p_glSecondaryColor3ivEXT) },
-    { "glSecondaryColor3s", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glSecondaryColor3s) },
-    { "glSecondaryColor3sEXT", "GL_EXT_secondary_color\0", offsetof(struct opengl_funcs, p_glSecondaryColor3sEXT) },
-    { "glSecondaryColor3sv", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glSecondaryColor3sv) },
-    { "glSecondaryColor3svEXT", "GL_EXT_secondary_color\0", offsetof(struct opengl_funcs, p_glSecondaryColor3svEXT) },
-    { "glSecondaryColor3ub", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glSecondaryColor3ub) },
-    { "glSecondaryColor3ubEXT", "GL_EXT_secondary_color\0", offsetof(struct opengl_funcs, p_glSecondaryColor3ubEXT) },
-    { "glSecondaryColor3ubv", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glSecondaryColor3ubv) },
-    { "glSecondaryColor3ubvEXT", "GL_EXT_secondary_color\0", offsetof(struct opengl_funcs, p_glSecondaryColor3ubvEXT) },
-    { "glSecondaryColor3ui", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glSecondaryColor3ui) },
-    { "glSecondaryColor3uiEXT", "GL_EXT_secondary_color\0", offsetof(struct opengl_funcs, p_glSecondaryColor3uiEXT) },
-    { "glSecondaryColor3uiv", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glSecondaryColor3uiv) },
-    { "glSecondaryColor3uivEXT", "GL_EXT_secondary_color\0", offsetof(struct opengl_funcs, p_glSecondaryColor3uivEXT) },
-    { "glSecondaryColor3us", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glSecondaryColor3us) },
-    { "glSecondaryColor3usEXT", "GL_EXT_secondary_color\0", offsetof(struct opengl_funcs, p_glSecondaryColor3usEXT) },
-    { "glSecondaryColor3usv", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glSecondaryColor3usv) },
-    { "glSecondaryColor3usvEXT", "GL_EXT_secondary_color\0", offsetof(struct opengl_funcs, p_glSecondaryColor3usvEXT) },
-    { "glSecondaryColorFormatNV", "GL_NV_vertex_buffer_unified_memory\0", offsetof(struct opengl_funcs, p_glSecondaryColorFormatNV) },
-    { "glSecondaryColorP3ui", "GL_ARB_vertex_type_2_10_10_10_rev\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glSecondaryColorP3ui) },
-    { "glSecondaryColorP3uiv", "GL_ARB_vertex_type_2_10_10_10_rev\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glSecondaryColorP3uiv) },
-    { "glSecondaryColorPointer", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glSecondaryColorPointer) },
-    { "glSecondaryColorPointerEXT", "GL_EXT_secondary_color\0", offsetof(struct opengl_funcs, p_glSecondaryColorPointerEXT) },
-    { "glSecondaryColorPointerListIBM", "GL_IBM_vertex_array_lists\0", offsetof(struct opengl_funcs, p_glSecondaryColorPointerListIBM) },
-    { "glSelectPerfMonitorCountersAMD", "GL_AMD_performance_monitor\0", offsetof(struct opengl_funcs, p_glSelectPerfMonitorCountersAMD) },
-    { "glSelectTextureCoordSetSGIS", "GL_SGIS_multitexture\0", offsetof(struct opengl_funcs, p_glSelectTextureCoordSetSGIS) },
-    { "glSelectTextureSGIS", "GL_SGIS_multitexture\0", offsetof(struct opengl_funcs, p_glSelectTextureSGIS) },
-    { "glSemaphoreParameterivNV", "GL_NV_timeline_semaphore\0", offsetof(struct opengl_funcs, p_glSemaphoreParameterivNV) },
-    { "glSemaphoreParameterui64vEXT", "GL_EXT_semaphore\0", offsetof(struct opengl_funcs, p_glSemaphoreParameterui64vEXT) },
-    { "glSeparableFilter2D", "GL_ARB_imaging\0", offsetof(struct opengl_funcs, p_glSeparableFilter2D) },
-    { "glSeparableFilter2DEXT", "GL_EXT_convolution\0", offsetof(struct opengl_funcs, p_glSeparableFilter2DEXT) },
-    { "glSetFenceAPPLE", "GL_APPLE_fence\0", offsetof(struct opengl_funcs, p_glSetFenceAPPLE) },
-    { "glSetFenceNV", "GL_NV_fence\0", offsetof(struct opengl_funcs, p_glSetFenceNV) },
-    { "glSetFragmentShaderConstantATI", "GL_ATI_fragment_shader\0", offsetof(struct opengl_funcs, p_glSetFragmentShaderConstantATI) },
-    { "glSetInvariantEXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glSetInvariantEXT) },
-    { "glSetLocalConstantEXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glSetLocalConstantEXT) },
-    { "glSetMultisamplefvAMD", "GL_AMD_sample_positions\0", offsetof(struct opengl_funcs, p_glSetMultisamplefvAMD) },
-    { "glShaderBinary", "GL_ARB_ES2_compatibility\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glShaderBinary) },
-    { "glShaderOp1EXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glShaderOp1EXT) },
-    { "glShaderOp2EXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glShaderOp2EXT) },
-    { "glShaderOp3EXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glShaderOp3EXT) },
-    { "glShaderSource", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glShaderSource) },
-    { "glShaderSourceARB", "GL_ARB_shader_objects\0", offsetof(struct opengl_funcs, p_glShaderSourceARB) },
-    { "glShaderStorageBlockBinding", "GL_ARB_shader_storage_buffer_object\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glShaderStorageBlockBinding) },
-    { "glShadingRateCombinerOpsEXT", "GL_EXT_fragment_shading_rate\0GL_EXT_fragment_shading_rate_attachment\0GL_EXT_fragment_shading_rate_primitive\0", offsetof(struct opengl_funcs, p_glShadingRateCombinerOpsEXT) },
-    { "glShadingRateEXT", "GL_EXT_fragment_shading_rate\0GL_EXT_fragment_shading_rate_attachment\0GL_EXT_fragment_shading_rate_primitive\0", offsetof(struct opengl_funcs, p_glShadingRateEXT) },
-    { "glShadingRateImageBarrierNV", "GL_NV_shading_rate_image\0", offsetof(struct opengl_funcs, p_glShadingRateImageBarrierNV) },
-    { "glShadingRateImagePaletteNV", "GL_NV_shading_rate_image\0", offsetof(struct opengl_funcs, p_glShadingRateImagePaletteNV) },
-    { "glShadingRateSampleOrderCustomNV", "GL_NV_shading_rate_image\0", offsetof(struct opengl_funcs, p_glShadingRateSampleOrderCustomNV) },
-    { "glShadingRateSampleOrderNV", "GL_NV_shading_rate_image\0", offsetof(struct opengl_funcs, p_glShadingRateSampleOrderNV) },
-    { "glSharpenTexFuncSGIS", "GL_SGIS_sharpen_texture\0", offsetof(struct opengl_funcs, p_glSharpenTexFuncSGIS) },
-    { "glSignalSemaphoreEXT", "GL_EXT_semaphore\0", offsetof(struct opengl_funcs, p_glSignalSemaphoreEXT) },
-    { "glSignalSemaphoreui64NVX", "GL_NVX_progress_fence\0", offsetof(struct opengl_funcs, p_glSignalSemaphoreui64NVX) },
-    { "glSignalVkFenceNV", "GL_NV_draw_vulkan_image\0", offsetof(struct opengl_funcs, p_glSignalVkFenceNV) },
-    { "glSignalVkSemaphoreNV", "GL_NV_draw_vulkan_image\0", offsetof(struct opengl_funcs, p_glSignalVkSemaphoreNV) },
-    { "glSpecializeShader", "GL_VERSION_4_6\0", offsetof(struct opengl_funcs, p_glSpecializeShader) },
-    { "glSpecializeShaderARB", "GL_ARB_gl_spirv\0", offsetof(struct opengl_funcs, p_glSpecializeShaderARB) },
-    { "glSpriteParameterfSGIX", "GL_SGIX_sprite\0", offsetof(struct opengl_funcs, p_glSpriteParameterfSGIX) },
-    { "glSpriteParameterfvSGIX", "GL_SGIX_sprite\0", offsetof(struct opengl_funcs, p_glSpriteParameterfvSGIX) },
-    { "glSpriteParameteriSGIX", "GL_SGIX_sprite\0", offsetof(struct opengl_funcs, p_glSpriteParameteriSGIX) },
-    { "glSpriteParameterivSGIX", "GL_SGIX_sprite\0", offsetof(struct opengl_funcs, p_glSpriteParameterivSGIX) },
-    { "glStartInstrumentsSGIX", "GL_SGIX_instruments\0", offsetof(struct opengl_funcs, p_glStartInstrumentsSGIX) },
-    { "glStateCaptureNV", "GL_NV_command_list\0", offsetof(struct opengl_funcs, p_glStateCaptureNV) },
-    { "glStencilClearTagEXT", "GL_EXT_stencil_clear_tag\0", offsetof(struct opengl_funcs, p_glStencilClearTagEXT) },
-    { "glStencilFillPathInstancedNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glStencilFillPathInstancedNV) },
-    { "glStencilFillPathNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glStencilFillPathNV) },
-    { "glStencilFuncSeparate", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glStencilFuncSeparate) },
-    { "glStencilFuncSeparateATI", "GL_ATI_separate_stencil\0", offsetof(struct opengl_funcs, p_glStencilFuncSeparateATI) },
-    { "glStencilMaskSeparate", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glStencilMaskSeparate) },
-    { "glStencilOpSeparate", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glStencilOpSeparate) },
-    { "glStencilOpSeparateATI", "GL_ATI_separate_stencil\0", offsetof(struct opengl_funcs, p_glStencilOpSeparateATI) },
-    { "glStencilOpValueAMD", "GL_AMD_stencil_operation_extended\0", offsetof(struct opengl_funcs, p_glStencilOpValueAMD) },
-    { "glStencilStrokePathInstancedNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glStencilStrokePathInstancedNV) },
-    { "glStencilStrokePathNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glStencilStrokePathNV) },
-    { "glStencilThenCoverFillPathInstancedNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glStencilThenCoverFillPathInstancedNV) },
-    { "glStencilThenCoverFillPathNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glStencilThenCoverFillPathNV) },
-    { "glStencilThenCoverStrokePathInstancedNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glStencilThenCoverStrokePathInstancedNV) },
-    { "glStencilThenCoverStrokePathNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glStencilThenCoverStrokePathNV) },
-    { "glStopInstrumentsSGIX", "GL_SGIX_instruments\0", offsetof(struct opengl_funcs, p_glStopInstrumentsSGIX) },
-    { "glStringMarkerGREMEDY", "GL_GREMEDY_string_marker\0", offsetof(struct opengl_funcs, p_glStringMarkerGREMEDY) },
-    { "glSubpixelPrecisionBiasNV", "GL_NV_conservative_raster\0", offsetof(struct opengl_funcs, p_glSubpixelPrecisionBiasNV) },
-    { "glSwizzleEXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glSwizzleEXT) },
-    { "glSyncTextureINTEL", "GL_INTEL_map_texture\0", offsetof(struct opengl_funcs, p_glSyncTextureINTEL) },
-    { "glTagSampleBufferSGIX", "GL_SGIX_tag_sample_buffer\0", offsetof(struct opengl_funcs, p_glTagSampleBufferSGIX) },
-    { "glTangent3bEXT", "GL_EXT_coordinate_frame\0", offsetof(struct opengl_funcs, p_glTangent3bEXT) },
-    { "glTangent3bvEXT", "GL_EXT_coordinate_frame\0", offsetof(struct opengl_funcs, p_glTangent3bvEXT) },
-    { "glTangent3dEXT", "GL_EXT_coordinate_frame\0", offsetof(struct opengl_funcs, p_glTangent3dEXT) },
-    { "glTangent3dvEXT", "GL_EXT_coordinate_frame\0", offsetof(struct opengl_funcs, p_glTangent3dvEXT) },
-    { "glTangent3fEXT", "GL_EXT_coordinate_frame\0", offsetof(struct opengl_funcs, p_glTangent3fEXT) },
-    { "glTangent3fvEXT", "GL_EXT_coordinate_frame\0", offsetof(struct opengl_funcs, p_glTangent3fvEXT) },
-    { "glTangent3iEXT", "GL_EXT_coordinate_frame\0", offsetof(struct opengl_funcs, p_glTangent3iEXT) },
-    { "glTangent3ivEXT", "GL_EXT_coordinate_frame\0", offsetof(struct opengl_funcs, p_glTangent3ivEXT) },
-    { "glTangent3sEXT", "GL_EXT_coordinate_frame\0", offsetof(struct opengl_funcs, p_glTangent3sEXT) },
-    { "glTangent3svEXT", "GL_EXT_coordinate_frame\0", offsetof(struct opengl_funcs, p_glTangent3svEXT) },
-    { "glTangentPointerEXT", "GL_EXT_coordinate_frame\0", offsetof(struct opengl_funcs, p_glTangentPointerEXT) },
-    { "glTbufferMask3DFX", "GL_3DFX_tbuffer\0", offsetof(struct opengl_funcs, p_glTbufferMask3DFX) },
-    { "glTessellationFactorAMD", "GL_AMD_vertex_shader_tessellator\0", offsetof(struct opengl_funcs, p_glTessellationFactorAMD) },
-    { "glTessellationModeAMD", "GL_AMD_vertex_shader_tessellator\0", offsetof(struct opengl_funcs, p_glTessellationModeAMD) },
-    { "glTestFenceAPPLE", "GL_APPLE_fence\0", offsetof(struct opengl_funcs, p_glTestFenceAPPLE) },
-    { "glTestFenceNV", "GL_NV_fence\0", offsetof(struct opengl_funcs, p_glTestFenceNV) },
-    { "glTestObjectAPPLE", "GL_APPLE_fence\0", offsetof(struct opengl_funcs, p_glTestObjectAPPLE) },
-    { "glTexAttachMemoryNV", "GL_NV_memory_attachment\0", offsetof(struct opengl_funcs, p_glTexAttachMemoryNV) },
-    { "glTexBuffer", "GL_VERSION_3_1\0", offsetof(struct opengl_funcs, p_glTexBuffer) },
-    { "glTexBufferARB", "GL_ARB_texture_buffer_object\0", offsetof(struct opengl_funcs, p_glTexBufferARB) },
-    { "glTexBufferEXT", "GL_EXT_texture_buffer_object\0", offsetof(struct opengl_funcs, p_glTexBufferEXT) },
-    { "glTexBufferRange", "GL_ARB_texture_buffer_range\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glTexBufferRange) },
-    { "glTexBumpParameterfvATI", "GL_ATI_envmap_bumpmap\0", offsetof(struct opengl_funcs, p_glTexBumpParameterfvATI) },
-    { "glTexBumpParameterivATI", "GL_ATI_envmap_bumpmap\0", offsetof(struct opengl_funcs, p_glTexBumpParameterivATI) },
-    { "glTexCoord1bOES", "GL_OES_byte_coordinates\0", offsetof(struct opengl_funcs, p_glTexCoord1bOES) },
-    { "glTexCoord1bvOES", "GL_OES_byte_coordinates\0", offsetof(struct opengl_funcs, p_glTexCoord1bvOES) },
-    { "glTexCoord1hNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glTexCoord1hNV) },
-    { "glTexCoord1hvNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glTexCoord1hvNV) },
-    { "glTexCoord1xOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glTexCoord1xOES) },
-    { "glTexCoord1xvOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glTexCoord1xvOES) },
-    { "glTexCoord2bOES", "GL_OES_byte_coordinates\0", offsetof(struct opengl_funcs, p_glTexCoord2bOES) },
-    { "glTexCoord2bvOES", "GL_OES_byte_coordinates\0", offsetof(struct opengl_funcs, p_glTexCoord2bvOES) },
-    { "glTexCoord2fColor3fVertex3fSUN", "GL_SUN_vertex\0", offsetof(struct opengl_funcs, p_glTexCoord2fColor3fVertex3fSUN) },
-    { "glTexCoord2fColor3fVertex3fvSUN", "GL_SUN_vertex\0", offsetof(struct opengl_funcs, p_glTexCoord2fColor3fVertex3fvSUN) },
-    { "glTexCoord2fColor4fNormal3fVertex3fSUN", "GL_SUN_vertex\0", offsetof(struct opengl_funcs, p_glTexCoord2fColor4fNormal3fVertex3fSUN) },
-    { "glTexCoord2fColor4fNormal3fVertex3fvSUN", "GL_SUN_vertex\0", offsetof(struct opengl_funcs, p_glTexCoord2fColor4fNormal3fVertex3fvSUN) },
-    { "glTexCoord2fColor4ubVertex3fSUN", "GL_SUN_vertex\0", offsetof(struct opengl_funcs, p_glTexCoord2fColor4ubVertex3fSUN) },
-    { "glTexCoord2fColor4ubVertex3fvSUN", "GL_SUN_vertex\0", offsetof(struct opengl_funcs, p_glTexCoord2fColor4ubVertex3fvSUN) },
-    { "glTexCoord2fNormal3fVertex3fSUN", "GL_SUN_vertex\0", offsetof(struct opengl_funcs, p_glTexCoord2fNormal3fVertex3fSUN) },
-    { "glTexCoord2fNormal3fVertex3fvSUN", "GL_SUN_vertex\0", offsetof(struct opengl_funcs, p_glTexCoord2fNormal3fVertex3fvSUN) },
-    { "glTexCoord2fVertex3fSUN", "GL_SUN_vertex\0", offsetof(struct opengl_funcs, p_glTexCoord2fVertex3fSUN) },
-    { "glTexCoord2fVertex3fvSUN", "GL_SUN_vertex\0", offsetof(struct opengl_funcs, p_glTexCoord2fVertex3fvSUN) },
-    { "glTexCoord2hNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glTexCoord2hNV) },
-    { "glTexCoord2hvNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glTexCoord2hvNV) },
-    { "glTexCoord2xOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glTexCoord2xOES) },
-    { "glTexCoord2xvOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glTexCoord2xvOES) },
-    { "glTexCoord3bOES", "GL_OES_byte_coordinates\0", offsetof(struct opengl_funcs, p_glTexCoord3bOES) },
-    { "glTexCoord3bvOES", "GL_OES_byte_coordinates\0", offsetof(struct opengl_funcs, p_glTexCoord3bvOES) },
-    { "glTexCoord3hNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glTexCoord3hNV) },
-    { "glTexCoord3hvNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glTexCoord3hvNV) },
-    { "glTexCoord3xOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glTexCoord3xOES) },
-    { "glTexCoord3xvOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glTexCoord3xvOES) },
-    { "glTexCoord4bOES", "GL_OES_byte_coordinates\0", offsetof(struct opengl_funcs, p_glTexCoord4bOES) },
-    { "glTexCoord4bvOES", "GL_OES_byte_coordinates\0", offsetof(struct opengl_funcs, p_glTexCoord4bvOES) },
-    { "glTexCoord4fColor4fNormal3fVertex4fSUN", "GL_SUN_vertex\0", offsetof(struct opengl_funcs, p_glTexCoord4fColor4fNormal3fVertex4fSUN) },
-    { "glTexCoord4fColor4fNormal3fVertex4fvSUN", "GL_SUN_vertex\0", offsetof(struct opengl_funcs, p_glTexCoord4fColor4fNormal3fVertex4fvSUN) },
-    { "glTexCoord4fVertex4fSUN", "GL_SUN_vertex\0", offsetof(struct opengl_funcs, p_glTexCoord4fVertex4fSUN) },
-    { "glTexCoord4fVertex4fvSUN", "GL_SUN_vertex\0", offsetof(struct opengl_funcs, p_glTexCoord4fVertex4fvSUN) },
-    { "glTexCoord4hNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glTexCoord4hNV) },
-    { "glTexCoord4hvNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glTexCoord4hvNV) },
-    { "glTexCoord4xOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glTexCoord4xOES) },
-    { "glTexCoord4xvOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glTexCoord4xvOES) },
-    { "glTexCoordFormatNV", "GL_NV_vertex_buffer_unified_memory\0", offsetof(struct opengl_funcs, p_glTexCoordFormatNV) },
-    { "glTexCoordP1ui", "GL_ARB_vertex_type_2_10_10_10_rev\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glTexCoordP1ui) },
-    { "glTexCoordP1uiv", "GL_ARB_vertex_type_2_10_10_10_rev\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glTexCoordP1uiv) },
-    { "glTexCoordP2ui", "GL_ARB_vertex_type_2_10_10_10_rev\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glTexCoordP2ui) },
-    { "glTexCoordP2uiv", "GL_ARB_vertex_type_2_10_10_10_rev\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glTexCoordP2uiv) },
-    { "glTexCoordP3ui", "GL_ARB_vertex_type_2_10_10_10_rev\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glTexCoordP3ui) },
-    { "glTexCoordP3uiv", "GL_ARB_vertex_type_2_10_10_10_rev\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glTexCoordP3uiv) },
-    { "glTexCoordP4ui", "GL_ARB_vertex_type_2_10_10_10_rev\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glTexCoordP4ui) },
-    { "glTexCoordP4uiv", "GL_ARB_vertex_type_2_10_10_10_rev\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glTexCoordP4uiv) },
-    { "glTexCoordPointerEXT", "GL_EXT_vertex_array\0", offsetof(struct opengl_funcs, p_glTexCoordPointerEXT) },
-    { "glTexCoordPointerListIBM", "GL_IBM_vertex_array_lists\0", offsetof(struct opengl_funcs, p_glTexCoordPointerListIBM) },
-    { "glTexCoordPointervINTEL", "GL_INTEL_parallel_arrays\0", offsetof(struct opengl_funcs, p_glTexCoordPointervINTEL) },
-    { "glTexEnvx", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glTexEnvx) },
-    { "glTexEnvxOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glTexEnvxOES) },
-    { "glTexEnvxv", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glTexEnvxv) },
-    { "glTexEnvxvOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glTexEnvxvOES) },
-    { "glTexFilterFuncSGIS", "GL_SGIS_texture_filter4\0", offsetof(struct opengl_funcs, p_glTexFilterFuncSGIS) },
-    { "glTexGenxOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glTexGenxOES) },
-    { "glTexGenxvOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glTexGenxvOES) },
-    { "glTexImage2DMultisample", "GL_ARB_texture_multisample\0GL_VERSION_3_2\0", offsetof(struct opengl_funcs, p_glTexImage2DMultisample) },
-    { "glTexImage2DMultisampleCoverageNV", "GL_NV_texture_multisample\0", offsetof(struct opengl_funcs, p_glTexImage2DMultisampleCoverageNV) },
-    { "glTexImage3D", "GL_VERSION_1_2\0", offsetof(struct opengl_funcs, p_glTexImage3D) },
-    { "glTexImage3DEXT", "GL_EXT_texture3D\0", offsetof(struct opengl_funcs, p_glTexImage3DEXT) },
-    { "glTexImage3DMultisample", "GL_ARB_texture_multisample\0GL_VERSION_3_2\0", offsetof(struct opengl_funcs, p_glTexImage3DMultisample) },
-    { "glTexImage3DMultisampleCoverageNV", "GL_NV_texture_multisample\0", offsetof(struct opengl_funcs, p_glTexImage3DMultisampleCoverageNV) },
-    { "glTexImage4DSGIS", "GL_SGIS_texture4D\0", offsetof(struct opengl_funcs, p_glTexImage4DSGIS) },
-    { "glTexPageCommitmentARB", "GL_ARB_sparse_texture\0", offsetof(struct opengl_funcs, p_glTexPageCommitmentARB) },
-    { "glTexPageCommitmentMemNV", "GL_NV_memory_object_sparse\0", offsetof(struct opengl_funcs, p_glTexPageCommitmentMemNV) },
-    { "glTexParameterIiv", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glTexParameterIiv) },
-    { "glTexParameterIivEXT", "GL_EXT_texture_integer\0", offsetof(struct opengl_funcs, p_glTexParameterIivEXT) },
-    { "glTexParameterIuiv", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glTexParameterIuiv) },
-    { "glTexParameterIuivEXT", "GL_EXT_texture_integer\0", offsetof(struct opengl_funcs, p_glTexParameterIuivEXT) },
-    { "glTexParameterx", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glTexParameterx) },
-    { "glTexParameterxOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glTexParameterxOES) },
-    { "glTexParameterxv", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glTexParameterxv) },
-    { "glTexParameterxvOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glTexParameterxvOES) },
-    { "glTexRenderbufferNV", "GL_NV_explicit_multisample\0", offsetof(struct opengl_funcs, p_glTexRenderbufferNV) },
-    { "glTexStorage1D", "GL_ARB_texture_storage\0GL_VERSION_4_2\0", offsetof(struct opengl_funcs, p_glTexStorage1D) },
-    { "glTexStorage1DEXT", "GL_EXT_texture_storage\0", offsetof(struct opengl_funcs, p_glTexStorage1DEXT) },
-    { "glTexStorage2D", "GL_ARB_texture_storage\0GL_VERSION_4_2\0", offsetof(struct opengl_funcs, p_glTexStorage2D) },
-    { "glTexStorage2DEXT", "GL_EXT_texture_storage\0", offsetof(struct opengl_funcs, p_glTexStorage2DEXT) },
-    { "glTexStorage2DMultisample", "GL_ARB_texture_storage_multisample\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glTexStorage2DMultisample) },
-    { "glTexStorage3D", "GL_ARB_texture_storage\0GL_VERSION_4_2\0", offsetof(struct opengl_funcs, p_glTexStorage3D) },
-    { "glTexStorage3DEXT", "GL_EXT_texture_storage\0", offsetof(struct opengl_funcs, p_glTexStorage3DEXT) },
-    { "glTexStorage3DMultisample", "GL_ARB_texture_storage_multisample\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glTexStorage3DMultisample) },
-    { "glTexStorageMem1DEXT", "GL_EXT_memory_object\0", offsetof(struct opengl_funcs, p_glTexStorageMem1DEXT) },
-    { "glTexStorageMem2DEXT", "GL_EXT_memory_object\0", offsetof(struct opengl_funcs, p_glTexStorageMem2DEXT) },
-    { "glTexStorageMem2DMultisampleEXT", "GL_EXT_memory_object\0", offsetof(struct opengl_funcs, p_glTexStorageMem2DMultisampleEXT) },
-    { "glTexStorageMem3DEXT", "GL_EXT_memory_object\0", offsetof(struct opengl_funcs, p_glTexStorageMem3DEXT) },
-    { "glTexStorageMem3DMultisampleEXT", "GL_EXT_memory_object\0", offsetof(struct opengl_funcs, p_glTexStorageMem3DMultisampleEXT) },
-    { "glTexStorageSparseAMD", "GL_AMD_sparse_texture\0", offsetof(struct opengl_funcs, p_glTexStorageSparseAMD) },
-    { "glTexSubImage1DEXT", "GL_EXT_subtexture\0", offsetof(struct opengl_funcs, p_glTexSubImage1DEXT) },
-    { "glTexSubImage2DEXT", "GL_EXT_subtexture\0", offsetof(struct opengl_funcs, p_glTexSubImage2DEXT) },
-    { "glTexSubImage3D", "GL_VERSION_1_2\0", offsetof(struct opengl_funcs, p_glTexSubImage3D) },
-    { "glTexSubImage3DEXT", "GL_EXT_texture3D\0", offsetof(struct opengl_funcs, p_glTexSubImage3DEXT) },
-    { "glTexSubImage4DSGIS", "GL_SGIS_texture4D\0", offsetof(struct opengl_funcs, p_glTexSubImage4DSGIS) },
-    { "glTextureAttachMemoryNV", "GL_NV_memory_attachment\0", offsetof(struct opengl_funcs, p_glTextureAttachMemoryNV) },
-    { "glTextureBarrier", "GL_ARB_texture_barrier\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glTextureBarrier) },
-    { "glTextureBarrierNV", "GL_NV_texture_barrier\0", offsetof(struct opengl_funcs, p_glTextureBarrierNV) },
-    { "glTextureBuffer", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glTextureBuffer) },
-    { "glTextureBufferEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glTextureBufferEXT) },
-    { "glTextureBufferRange", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glTextureBufferRange) },
-    { "glTextureBufferRangeEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glTextureBufferRangeEXT) },
-    { "glTextureColorMaskSGIS", "GL_SGIS_texture_color_mask\0", offsetof(struct opengl_funcs, p_glTextureColorMaskSGIS) },
-    { "glTextureImage1DEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glTextureImage1DEXT) },
-    { "glTextureImage2DEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glTextureImage2DEXT) },
-    { "glTextureImage2DMultisampleCoverageNV", "GL_NV_texture_multisample\0", offsetof(struct opengl_funcs, p_glTextureImage2DMultisampleCoverageNV) },
-    { "glTextureImage2DMultisampleNV", "GL_NV_texture_multisample\0", offsetof(struct opengl_funcs, p_glTextureImage2DMultisampleNV) },
-    { "glTextureImage3DEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glTextureImage3DEXT) },
-    { "glTextureImage3DMultisampleCoverageNV", "GL_NV_texture_multisample\0", offsetof(struct opengl_funcs, p_glTextureImage3DMultisampleCoverageNV) },
-    { "glTextureImage3DMultisampleNV", "GL_NV_texture_multisample\0", offsetof(struct opengl_funcs, p_glTextureImage3DMultisampleNV) },
-    { "glTextureLightEXT", "GL_EXT_light_texture\0", offsetof(struct opengl_funcs, p_glTextureLightEXT) },
-    { "glTextureMaterialEXT", "GL_EXT_light_texture\0", offsetof(struct opengl_funcs, p_glTextureMaterialEXT) },
-    { "glTextureNormalEXT", "GL_EXT_texture_perturb_normal\0", offsetof(struct opengl_funcs, p_glTextureNormalEXT) },
-    { "glTexturePageCommitmentEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glTexturePageCommitmentEXT) },
-    { "glTexturePageCommitmentMemNV", "GL_NV_memory_object_sparse\0", offsetof(struct opengl_funcs, p_glTexturePageCommitmentMemNV) },
-    { "glTextureParameterIiv", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glTextureParameterIiv) },
-    { "glTextureParameterIivEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glTextureParameterIivEXT) },
-    { "glTextureParameterIuiv", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glTextureParameterIuiv) },
-    { "glTextureParameterIuivEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glTextureParameterIuivEXT) },
-    { "glTextureParameterf", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glTextureParameterf) },
-    { "glTextureParameterfEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glTextureParameterfEXT) },
-    { "glTextureParameterfv", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glTextureParameterfv) },
-    { "glTextureParameterfvEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glTextureParameterfvEXT) },
-    { "glTextureParameteri", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glTextureParameteri) },
-    { "glTextureParameteriEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glTextureParameteriEXT) },
-    { "glTextureParameteriv", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glTextureParameteriv) },
-    { "glTextureParameterivEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glTextureParameterivEXT) },
-    { "glTextureRangeAPPLE", "GL_APPLE_texture_range\0", offsetof(struct opengl_funcs, p_glTextureRangeAPPLE) },
-    { "glTextureRenderbufferEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glTextureRenderbufferEXT) },
-    { "glTextureStorage1D", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glTextureStorage1D) },
-    { "glTextureStorage1DEXT", "GL_EXT_direct_state_access\0GL_EXT_texture_storage\0", offsetof(struct opengl_funcs, p_glTextureStorage1DEXT) },
-    { "glTextureStorage2D", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glTextureStorage2D) },
-    { "glTextureStorage2DEXT", "GL_EXT_direct_state_access\0GL_EXT_texture_storage\0", offsetof(struct opengl_funcs, p_glTextureStorage2DEXT) },
-    { "glTextureStorage2DMultisample", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glTextureStorage2DMultisample) },
-    { "glTextureStorage2DMultisampleEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glTextureStorage2DMultisampleEXT) },
-    { "glTextureStorage3D", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glTextureStorage3D) },
-    { "glTextureStorage3DEXT", "GL_EXT_direct_state_access\0GL_EXT_texture_storage\0", offsetof(struct opengl_funcs, p_glTextureStorage3DEXT) },
-    { "glTextureStorage3DMultisample", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glTextureStorage3DMultisample) },
-    { "glTextureStorage3DMultisampleEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glTextureStorage3DMultisampleEXT) },
-    { "glTextureStorageMem1DEXT", "GL_EXT_memory_object\0", offsetof(struct opengl_funcs, p_glTextureStorageMem1DEXT) },
-    { "glTextureStorageMem2DEXT", "GL_EXT_memory_object\0", offsetof(struct opengl_funcs, p_glTextureStorageMem2DEXT) },
-    { "glTextureStorageMem2DMultisampleEXT", "GL_EXT_memory_object\0", offsetof(struct opengl_funcs, p_glTextureStorageMem2DMultisampleEXT) },
-    { "glTextureStorageMem3DEXT", "GL_EXT_memory_object\0", offsetof(struct opengl_funcs, p_glTextureStorageMem3DEXT) },
-    { "glTextureStorageMem3DMultisampleEXT", "GL_EXT_memory_object\0", offsetof(struct opengl_funcs, p_glTextureStorageMem3DMultisampleEXT) },
-    { "glTextureStorageSparseAMD", "GL_AMD_sparse_texture\0", offsetof(struct opengl_funcs, p_glTextureStorageSparseAMD) },
-    { "glTextureSubImage1D", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glTextureSubImage1D) },
-    { "glTextureSubImage1DEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glTextureSubImage1DEXT) },
-    { "glTextureSubImage2D", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glTextureSubImage2D) },
-    { "glTextureSubImage2DEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glTextureSubImage2DEXT) },
-    { "glTextureSubImage3D", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glTextureSubImage3D) },
-    { "glTextureSubImage3DEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glTextureSubImage3DEXT) },
-    { "glTextureView", "GL_ARB_texture_view\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glTextureView) },
-    { "glTrackMatrixNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glTrackMatrixNV) },
-    { "glTransformFeedbackAttribsNV", "GL_NV_transform_feedback\0", offsetof(struct opengl_funcs, p_glTransformFeedbackAttribsNV) },
-    { "glTransformFeedbackBufferBase", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glTransformFeedbackBufferBase) },
-    { "glTransformFeedbackBufferRange", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glTransformFeedbackBufferRange) },
-    { "glTransformFeedbackStreamAttribsNV", "GL_NV_transform_feedback\0", offsetof(struct opengl_funcs, p_glTransformFeedbackStreamAttribsNV) },
-    { "glTransformFeedbackVaryings", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glTransformFeedbackVaryings) },
-    { "glTransformFeedbackVaryingsEXT", "GL_EXT_transform_feedback\0", offsetof(struct opengl_funcs, p_glTransformFeedbackVaryingsEXT) },
-    { "glTransformFeedbackVaryingsNV", "GL_NV_transform_feedback\0", offsetof(struct opengl_funcs, p_glTransformFeedbackVaryingsNV) },
-    { "glTransformPathNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glTransformPathNV) },
-    { "glTranslatex", "GL_NV_ES1_1_compatibility\0", offsetof(struct opengl_funcs, p_glTranslatex) },
-    { "glTranslatexOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glTranslatexOES) },
-    { "glUniform1d", "GL_ARB_gpu_shader_fp64\0GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glUniform1d) },
-    { "glUniform1dv", "GL_ARB_gpu_shader_fp64\0GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glUniform1dv) },
-    { "glUniform1f", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glUniform1f) },
-    { "glUniform1fARB", "GL_ARB_shader_objects\0", offsetof(struct opengl_funcs, p_glUniform1fARB) },
-    { "glUniform1fv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glUniform1fv) },
-    { "glUniform1fvARB", "GL_ARB_shader_objects\0", offsetof(struct opengl_funcs, p_glUniform1fvARB) },
-    { "glUniform1i", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glUniform1i) },
-    { "glUniform1i64ARB", "GL_ARB_gpu_shader_int64\0", offsetof(struct opengl_funcs, p_glUniform1i64ARB) },
-    { "glUniform1i64NV", "GL_AMD_gpu_shader_int64\0GL_NV_gpu_shader5\0", offsetof(struct opengl_funcs, p_glUniform1i64NV) },
-    { "glUniform1i64vARB", "GL_ARB_gpu_shader_int64\0", offsetof(struct opengl_funcs, p_glUniform1i64vARB) },
-    { "glUniform1i64vNV", "GL_AMD_gpu_shader_int64\0GL_NV_gpu_shader5\0", offsetof(struct opengl_funcs, p_glUniform1i64vNV) },
-    { "glUniform1iARB", "GL_ARB_shader_objects\0", offsetof(struct opengl_funcs, p_glUniform1iARB) },
-    { "glUniform1iv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glUniform1iv) },
-    { "glUniform1ivARB", "GL_ARB_shader_objects\0", offsetof(struct opengl_funcs, p_glUniform1ivARB) },
-    { "glUniform1ui", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glUniform1ui) },
-    { "glUniform1ui64ARB", "GL_ARB_gpu_shader_int64\0", offsetof(struct opengl_funcs, p_glUniform1ui64ARB) },
-    { "glUniform1ui64NV", "GL_AMD_gpu_shader_int64\0GL_NV_gpu_shader5\0", offsetof(struct opengl_funcs, p_glUniform1ui64NV) },
-    { "glUniform1ui64vARB", "GL_ARB_gpu_shader_int64\0", offsetof(struct opengl_funcs, p_glUniform1ui64vARB) },
-    { "glUniform1ui64vNV", "GL_AMD_gpu_shader_int64\0GL_NV_gpu_shader5\0", offsetof(struct opengl_funcs, p_glUniform1ui64vNV) },
-    { "glUniform1uiEXT", "GL_EXT_gpu_shader4\0", offsetof(struct opengl_funcs, p_glUniform1uiEXT) },
-    { "glUniform1uiv", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glUniform1uiv) },
-    { "glUniform1uivEXT", "GL_EXT_gpu_shader4\0", offsetof(struct opengl_funcs, p_glUniform1uivEXT) },
-    { "glUniform2d", "GL_ARB_gpu_shader_fp64\0GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glUniform2d) },
-    { "glUniform2dv", "GL_ARB_gpu_shader_fp64\0GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glUniform2dv) },
-    { "glUniform2f", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glUniform2f) },
-    { "glUniform2fARB", "GL_ARB_shader_objects\0", offsetof(struct opengl_funcs, p_glUniform2fARB) },
-    { "glUniform2fv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glUniform2fv) },
-    { "glUniform2fvARB", "GL_ARB_shader_objects\0", offsetof(struct opengl_funcs, p_glUniform2fvARB) },
-    { "glUniform2i", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glUniform2i) },
-    { "glUniform2i64ARB", "GL_ARB_gpu_shader_int64\0", offsetof(struct opengl_funcs, p_glUniform2i64ARB) },
-    { "glUniform2i64NV", "GL_AMD_gpu_shader_int64\0GL_NV_gpu_shader5\0", offsetof(struct opengl_funcs, p_glUniform2i64NV) },
-    { "glUniform2i64vARB", "GL_ARB_gpu_shader_int64\0", offsetof(struct opengl_funcs, p_glUniform2i64vARB) },
-    { "glUniform2i64vNV", "GL_AMD_gpu_shader_int64\0GL_NV_gpu_shader5\0", offsetof(struct opengl_funcs, p_glUniform2i64vNV) },
-    { "glUniform2iARB", "GL_ARB_shader_objects\0", offsetof(struct opengl_funcs, p_glUniform2iARB) },
-    { "glUniform2iv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glUniform2iv) },
-    { "glUniform2ivARB", "GL_ARB_shader_objects\0", offsetof(struct opengl_funcs, p_glUniform2ivARB) },
-    { "glUniform2ui", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glUniform2ui) },
-    { "glUniform2ui64ARB", "GL_ARB_gpu_shader_int64\0", offsetof(struct opengl_funcs, p_glUniform2ui64ARB) },
-    { "glUniform2ui64NV", "GL_AMD_gpu_shader_int64\0GL_NV_gpu_shader5\0", offsetof(struct opengl_funcs, p_glUniform2ui64NV) },
-    { "glUniform2ui64vARB", "GL_ARB_gpu_shader_int64\0", offsetof(struct opengl_funcs, p_glUniform2ui64vARB) },
-    { "glUniform2ui64vNV", "GL_AMD_gpu_shader_int64\0GL_NV_gpu_shader5\0", offsetof(struct opengl_funcs, p_glUniform2ui64vNV) },
-    { "glUniform2uiEXT", "GL_EXT_gpu_shader4\0", offsetof(struct opengl_funcs, p_glUniform2uiEXT) },
-    { "glUniform2uiv", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glUniform2uiv) },
-    { "glUniform2uivEXT", "GL_EXT_gpu_shader4\0", offsetof(struct opengl_funcs, p_glUniform2uivEXT) },
-    { "glUniform3d", "GL_ARB_gpu_shader_fp64\0GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glUniform3d) },
-    { "glUniform3dv", "GL_ARB_gpu_shader_fp64\0GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glUniform3dv) },
-    { "glUniform3f", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glUniform3f) },
-    { "glUniform3fARB", "GL_ARB_shader_objects\0", offsetof(struct opengl_funcs, p_glUniform3fARB) },
-    { "glUniform3fv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glUniform3fv) },
-    { "glUniform3fvARB", "GL_ARB_shader_objects\0", offsetof(struct opengl_funcs, p_glUniform3fvARB) },
-    { "glUniform3i", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glUniform3i) },
-    { "glUniform3i64ARB", "GL_ARB_gpu_shader_int64\0", offsetof(struct opengl_funcs, p_glUniform3i64ARB) },
-    { "glUniform3i64NV", "GL_AMD_gpu_shader_int64\0GL_NV_gpu_shader5\0", offsetof(struct opengl_funcs, p_glUniform3i64NV) },
-    { "glUniform3i64vARB", "GL_ARB_gpu_shader_int64\0", offsetof(struct opengl_funcs, p_glUniform3i64vARB) },
-    { "glUniform3i64vNV", "GL_AMD_gpu_shader_int64\0GL_NV_gpu_shader5\0", offsetof(struct opengl_funcs, p_glUniform3i64vNV) },
-    { "glUniform3iARB", "GL_ARB_shader_objects\0", offsetof(struct opengl_funcs, p_glUniform3iARB) },
-    { "glUniform3iv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glUniform3iv) },
-    { "glUniform3ivARB", "GL_ARB_shader_objects\0", offsetof(struct opengl_funcs, p_glUniform3ivARB) },
-    { "glUniform3ui", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glUniform3ui) },
-    { "glUniform3ui64ARB", "GL_ARB_gpu_shader_int64\0", offsetof(struct opengl_funcs, p_glUniform3ui64ARB) },
-    { "glUniform3ui64NV", "GL_AMD_gpu_shader_int64\0GL_NV_gpu_shader5\0", offsetof(struct opengl_funcs, p_glUniform3ui64NV) },
-    { "glUniform3ui64vARB", "GL_ARB_gpu_shader_int64\0", offsetof(struct opengl_funcs, p_glUniform3ui64vARB) },
-    { "glUniform3ui64vNV", "GL_AMD_gpu_shader_int64\0GL_NV_gpu_shader5\0", offsetof(struct opengl_funcs, p_glUniform3ui64vNV) },
-    { "glUniform3uiEXT", "GL_EXT_gpu_shader4\0", offsetof(struct opengl_funcs, p_glUniform3uiEXT) },
-    { "glUniform3uiv", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glUniform3uiv) },
-    { "glUniform3uivEXT", "GL_EXT_gpu_shader4\0", offsetof(struct opengl_funcs, p_glUniform3uivEXT) },
-    { "glUniform4d", "GL_ARB_gpu_shader_fp64\0GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glUniform4d) },
-    { "glUniform4dv", "GL_ARB_gpu_shader_fp64\0GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glUniform4dv) },
-    { "glUniform4f", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glUniform4f) },
-    { "glUniform4fARB", "GL_ARB_shader_objects\0", offsetof(struct opengl_funcs, p_glUniform4fARB) },
-    { "glUniform4fv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glUniform4fv) },
-    { "glUniform4fvARB", "GL_ARB_shader_objects\0", offsetof(struct opengl_funcs, p_glUniform4fvARB) },
-    { "glUniform4i", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glUniform4i) },
-    { "glUniform4i64ARB", "GL_ARB_gpu_shader_int64\0", offsetof(struct opengl_funcs, p_glUniform4i64ARB) },
-    { "glUniform4i64NV", "GL_AMD_gpu_shader_int64\0GL_NV_gpu_shader5\0", offsetof(struct opengl_funcs, p_glUniform4i64NV) },
-    { "glUniform4i64vARB", "GL_ARB_gpu_shader_int64\0", offsetof(struct opengl_funcs, p_glUniform4i64vARB) },
-    { "glUniform4i64vNV", "GL_AMD_gpu_shader_int64\0GL_NV_gpu_shader5\0", offsetof(struct opengl_funcs, p_glUniform4i64vNV) },
-    { "glUniform4iARB", "GL_ARB_shader_objects\0", offsetof(struct opengl_funcs, p_glUniform4iARB) },
-    { "glUniform4iv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glUniform4iv) },
-    { "glUniform4ivARB", "GL_ARB_shader_objects\0", offsetof(struct opengl_funcs, p_glUniform4ivARB) },
-    { "glUniform4ui", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glUniform4ui) },
-    { "glUniform4ui64ARB", "GL_ARB_gpu_shader_int64\0", offsetof(struct opengl_funcs, p_glUniform4ui64ARB) },
-    { "glUniform4ui64NV", "GL_AMD_gpu_shader_int64\0GL_NV_gpu_shader5\0", offsetof(struct opengl_funcs, p_glUniform4ui64NV) },
-    { "glUniform4ui64vARB", "GL_ARB_gpu_shader_int64\0", offsetof(struct opengl_funcs, p_glUniform4ui64vARB) },
-    { "glUniform4ui64vNV", "GL_AMD_gpu_shader_int64\0GL_NV_gpu_shader5\0", offsetof(struct opengl_funcs, p_glUniform4ui64vNV) },
-    { "glUniform4uiEXT", "GL_EXT_gpu_shader4\0", offsetof(struct opengl_funcs, p_glUniform4uiEXT) },
-    { "glUniform4uiv", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glUniform4uiv) },
-    { "glUniform4uivEXT", "GL_EXT_gpu_shader4\0", offsetof(struct opengl_funcs, p_glUniform4uivEXT) },
-    { "glUniformBlockBinding", "GL_ARB_uniform_buffer_object\0GL_VERSION_3_1\0", offsetof(struct opengl_funcs, p_glUniformBlockBinding) },
-    { "glUniformBufferEXT", "GL_EXT_bindable_uniform\0", offsetof(struct opengl_funcs, p_glUniformBufferEXT) },
-    { "glUniformHandleui64ARB", "GL_ARB_bindless_texture\0", offsetof(struct opengl_funcs, p_glUniformHandleui64ARB) },
-    { "glUniformHandleui64NV", "GL_NV_bindless_texture\0", offsetof(struct opengl_funcs, p_glUniformHandleui64NV) },
-    { "glUniformHandleui64vARB", "GL_ARB_bindless_texture\0", offsetof(struct opengl_funcs, p_glUniformHandleui64vARB) },
-    { "glUniformHandleui64vNV", "GL_NV_bindless_texture\0", offsetof(struct opengl_funcs, p_glUniformHandleui64vNV) },
-    { "glUniformMatrix2dv", "GL_ARB_gpu_shader_fp64\0GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glUniformMatrix2dv) },
-    { "glUniformMatrix2fv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glUniformMatrix2fv) },
-    { "glUniformMatrix2fvARB", "GL_ARB_shader_objects\0", offsetof(struct opengl_funcs, p_glUniformMatrix2fvARB) },
-    { "glUniformMatrix2x3dv", "GL_ARB_gpu_shader_fp64\0GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glUniformMatrix2x3dv) },
-    { "glUniformMatrix2x3fv", "GL_VERSION_2_1\0", offsetof(struct opengl_funcs, p_glUniformMatrix2x3fv) },
-    { "glUniformMatrix2x4dv", "GL_ARB_gpu_shader_fp64\0GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glUniformMatrix2x4dv) },
-    { "glUniformMatrix2x4fv", "GL_VERSION_2_1\0", offsetof(struct opengl_funcs, p_glUniformMatrix2x4fv) },
-    { "glUniformMatrix3dv", "GL_ARB_gpu_shader_fp64\0GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glUniformMatrix3dv) },
-    { "glUniformMatrix3fv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glUniformMatrix3fv) },
-    { "glUniformMatrix3fvARB", "GL_ARB_shader_objects\0", offsetof(struct opengl_funcs, p_glUniformMatrix3fvARB) },
-    { "glUniformMatrix3x2dv", "GL_ARB_gpu_shader_fp64\0GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glUniformMatrix3x2dv) },
-    { "glUniformMatrix3x2fv", "GL_VERSION_2_1\0", offsetof(struct opengl_funcs, p_glUniformMatrix3x2fv) },
-    { "glUniformMatrix3x4dv", "GL_ARB_gpu_shader_fp64\0GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glUniformMatrix3x4dv) },
-    { "glUniformMatrix3x4fv", "GL_VERSION_2_1\0", offsetof(struct opengl_funcs, p_glUniformMatrix3x4fv) },
-    { "glUniformMatrix4dv", "GL_ARB_gpu_shader_fp64\0GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glUniformMatrix4dv) },
-    { "glUniformMatrix4fv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glUniformMatrix4fv) },
-    { "glUniformMatrix4fvARB", "GL_ARB_shader_objects\0", offsetof(struct opengl_funcs, p_glUniformMatrix4fvARB) },
-    { "glUniformMatrix4x2dv", "GL_ARB_gpu_shader_fp64\0GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glUniformMatrix4x2dv) },
-    { "glUniformMatrix4x2fv", "GL_VERSION_2_1\0", offsetof(struct opengl_funcs, p_glUniformMatrix4x2fv) },
-    { "glUniformMatrix4x3dv", "GL_ARB_gpu_shader_fp64\0GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glUniformMatrix4x3dv) },
-    { "glUniformMatrix4x3fv", "GL_VERSION_2_1\0", offsetof(struct opengl_funcs, p_glUniformMatrix4x3fv) },
-    { "glUniformSubroutinesuiv", "GL_ARB_shader_subroutine\0GL_VERSION_4_0\0", offsetof(struct opengl_funcs, p_glUniformSubroutinesuiv) },
-    { "glUniformui64NV", "GL_NV_shader_buffer_load\0", offsetof(struct opengl_funcs, p_glUniformui64NV) },
-    { "glUniformui64vNV", "GL_NV_shader_buffer_load\0", offsetof(struct opengl_funcs, p_glUniformui64vNV) },
-    { "glUnlockArraysEXT", "GL_EXT_compiled_vertex_array\0", offsetof(struct opengl_funcs, p_glUnlockArraysEXT) },
-    { "glUnmapBuffer", "GL_VERSION_1_5\0", offsetof(struct opengl_funcs, p_glUnmapBuffer) },
-    { "glUnmapBufferARB", "GL_ARB_vertex_buffer_object\0", offsetof(struct opengl_funcs, p_glUnmapBufferARB) },
-    { "glUnmapNamedBuffer", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glUnmapNamedBuffer) },
-    { "glUnmapNamedBufferEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glUnmapNamedBufferEXT) },
-    { "glUnmapObjectBufferATI", "GL_ATI_map_object_buffer\0", offsetof(struct opengl_funcs, p_glUnmapObjectBufferATI) },
-    { "glUnmapTexture2DINTEL", "GL_INTEL_map_texture\0", offsetof(struct opengl_funcs, p_glUnmapTexture2DINTEL) },
-    { "glUpdateObjectBufferATI", "GL_ATI_vertex_array_object\0", offsetof(struct opengl_funcs, p_glUpdateObjectBufferATI) },
-    { "glUploadGpuMaskNVX", "GL_NVX_gpu_multicast2\0", offsetof(struct opengl_funcs, p_glUploadGpuMaskNVX) },
-    { "glUseProgram", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glUseProgram) },
-    { "glUseProgramObjectARB", "GL_ARB_shader_objects\0", offsetof(struct opengl_funcs, p_glUseProgramObjectARB) },
-    { "glUseProgramStages", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glUseProgramStages) },
-    { "glUseShaderProgramEXT", "GL_EXT_separate_shader_objects\0", offsetof(struct opengl_funcs, p_glUseShaderProgramEXT) },
-    { "glVDPAUFiniNV", "GL_NV_vdpau_interop\0", offsetof(struct opengl_funcs, p_glVDPAUFiniNV) },
-    { "glVDPAUGetSurfaceivNV", "GL_NV_vdpau_interop\0", offsetof(struct opengl_funcs, p_glVDPAUGetSurfaceivNV) },
-    { "glVDPAUInitNV", "GL_NV_vdpau_interop\0", offsetof(struct opengl_funcs, p_glVDPAUInitNV) },
-    { "glVDPAUIsSurfaceNV", "GL_NV_vdpau_interop\0", offsetof(struct opengl_funcs, p_glVDPAUIsSurfaceNV) },
-    { "glVDPAUMapSurfacesNV", "GL_NV_vdpau_interop\0", offsetof(struct opengl_funcs, p_glVDPAUMapSurfacesNV) },
-    { "glVDPAURegisterOutputSurfaceNV", "GL_NV_vdpau_interop\0", offsetof(struct opengl_funcs, p_glVDPAURegisterOutputSurfaceNV) },
-    { "glVDPAURegisterVideoSurfaceNV", "GL_NV_vdpau_interop\0", offsetof(struct opengl_funcs, p_glVDPAURegisterVideoSurfaceNV) },
-    { "glVDPAURegisterVideoSurfaceWithPictureStructureNV", "GL_NV_vdpau_interop2\0", offsetof(struct opengl_funcs, p_glVDPAURegisterVideoSurfaceWithPictureStructureNV) },
-    { "glVDPAUSurfaceAccessNV", "GL_NV_vdpau_interop\0", offsetof(struct opengl_funcs, p_glVDPAUSurfaceAccessNV) },
-    { "glVDPAUUnmapSurfacesNV", "GL_NV_vdpau_interop\0", offsetof(struct opengl_funcs, p_glVDPAUUnmapSurfacesNV) },
-    { "glVDPAUUnregisterSurfaceNV", "GL_NV_vdpau_interop\0", offsetof(struct opengl_funcs, p_glVDPAUUnregisterSurfaceNV) },
-    { "glValidateProgram", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glValidateProgram) },
-    { "glValidateProgramARB", "GL_ARB_shader_objects\0", offsetof(struct opengl_funcs, p_glValidateProgramARB) },
-    { "glValidateProgramPipeline", "GL_ARB_separate_shader_objects\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glValidateProgramPipeline) },
-    { "glVariantArrayObjectATI", "GL_ATI_vertex_array_object\0", offsetof(struct opengl_funcs, p_glVariantArrayObjectATI) },
-    { "glVariantPointerEXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glVariantPointerEXT) },
-    { "glVariantbvEXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glVariantbvEXT) },
-    { "glVariantdvEXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glVariantdvEXT) },
-    { "glVariantfvEXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glVariantfvEXT) },
-    { "glVariantivEXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glVariantivEXT) },
-    { "glVariantsvEXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glVariantsvEXT) },
-    { "glVariantubvEXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glVariantubvEXT) },
-    { "glVariantuivEXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glVariantuivEXT) },
-    { "glVariantusvEXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glVariantusvEXT) },
-    { "glVertex2bOES", "GL_OES_byte_coordinates\0", offsetof(struct opengl_funcs, p_glVertex2bOES) },
-    { "glVertex2bvOES", "GL_OES_byte_coordinates\0", offsetof(struct opengl_funcs, p_glVertex2bvOES) },
-    { "glVertex2hNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glVertex2hNV) },
-    { "glVertex2hvNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glVertex2hvNV) },
-    { "glVertex2xOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glVertex2xOES) },
-    { "glVertex2xvOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glVertex2xvOES) },
-    { "glVertex3bOES", "GL_OES_byte_coordinates\0", offsetof(struct opengl_funcs, p_glVertex3bOES) },
-    { "glVertex3bvOES", "GL_OES_byte_coordinates\0", offsetof(struct opengl_funcs, p_glVertex3bvOES) },
-    { "glVertex3hNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glVertex3hNV) },
-    { "glVertex3hvNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glVertex3hvNV) },
-    { "glVertex3xOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glVertex3xOES) },
-    { "glVertex3xvOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glVertex3xvOES) },
-    { "glVertex4bOES", "GL_OES_byte_coordinates\0", offsetof(struct opengl_funcs, p_glVertex4bOES) },
-    { "glVertex4bvOES", "GL_OES_byte_coordinates\0", offsetof(struct opengl_funcs, p_glVertex4bvOES) },
-    { "glVertex4hNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glVertex4hNV) },
-    { "glVertex4hvNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glVertex4hvNV) },
-    { "glVertex4xOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glVertex4xOES) },
-    { "glVertex4xvOES", "GL_OES_fixed_point\0", offsetof(struct opengl_funcs, p_glVertex4xvOES) },
-    { "glVertexArrayAttribBinding", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glVertexArrayAttribBinding) },
-    { "glVertexArrayAttribFormat", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glVertexArrayAttribFormat) },
-    { "glVertexArrayAttribIFormat", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glVertexArrayAttribIFormat) },
-    { "glVertexArrayAttribLFormat", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glVertexArrayAttribLFormat) },
-    { "glVertexArrayBindVertexBufferEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glVertexArrayBindVertexBufferEXT) },
-    { "glVertexArrayBindingDivisor", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glVertexArrayBindingDivisor) },
-    { "glVertexArrayColorOffsetEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glVertexArrayColorOffsetEXT) },
-    { "glVertexArrayEdgeFlagOffsetEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glVertexArrayEdgeFlagOffsetEXT) },
-    { "glVertexArrayElementBuffer", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glVertexArrayElementBuffer) },
-    { "glVertexArrayFogCoordOffsetEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glVertexArrayFogCoordOffsetEXT) },
-    { "glVertexArrayIndexOffsetEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glVertexArrayIndexOffsetEXT) },
-    { "glVertexArrayMultiTexCoordOffsetEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glVertexArrayMultiTexCoordOffsetEXT) },
-    { "glVertexArrayNormalOffsetEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glVertexArrayNormalOffsetEXT) },
-    { "glVertexArrayParameteriAPPLE", "GL_APPLE_vertex_array_range\0", offsetof(struct opengl_funcs, p_glVertexArrayParameteriAPPLE) },
-    { "glVertexArrayRangeAPPLE", "GL_APPLE_vertex_array_range\0", offsetof(struct opengl_funcs, p_glVertexArrayRangeAPPLE) },
-    { "glVertexArrayRangeNV", "GL_NV_vertex_array_range\0", offsetof(struct opengl_funcs, p_glVertexArrayRangeNV) },
-    { "glVertexArraySecondaryColorOffsetEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glVertexArraySecondaryColorOffsetEXT) },
-    { "glVertexArrayTexCoordOffsetEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glVertexArrayTexCoordOffsetEXT) },
-    { "glVertexArrayVertexAttribBindingEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glVertexArrayVertexAttribBindingEXT) },
-    { "glVertexArrayVertexAttribDivisorEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glVertexArrayVertexAttribDivisorEXT) },
-    { "glVertexArrayVertexAttribFormatEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glVertexArrayVertexAttribFormatEXT) },
-    { "glVertexArrayVertexAttribIFormatEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glVertexArrayVertexAttribIFormatEXT) },
-    { "glVertexArrayVertexAttribIOffsetEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glVertexArrayVertexAttribIOffsetEXT) },
-    { "glVertexArrayVertexAttribLFormatEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glVertexArrayVertexAttribLFormatEXT) },
-    { "glVertexArrayVertexAttribLOffsetEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glVertexArrayVertexAttribLOffsetEXT) },
-    { "glVertexArrayVertexAttribOffsetEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glVertexArrayVertexAttribOffsetEXT) },
-    { "glVertexArrayVertexBindingDivisorEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glVertexArrayVertexBindingDivisorEXT) },
-    { "glVertexArrayVertexBuffer", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glVertexArrayVertexBuffer) },
-    { "glVertexArrayVertexBuffers", "GL_ARB_direct_state_access\0GL_VERSION_4_5\0", offsetof(struct opengl_funcs, p_glVertexArrayVertexBuffers) },
-    { "glVertexArrayVertexOffsetEXT", "GL_EXT_direct_state_access\0", offsetof(struct opengl_funcs, p_glVertexArrayVertexOffsetEXT) },
-    { "glVertexAttrib1d", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glVertexAttrib1d) },
-    { "glVertexAttrib1dARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glVertexAttrib1dARB) },
-    { "glVertexAttrib1dNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glVertexAttrib1dNV) },
-    { "glVertexAttrib1dv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glVertexAttrib1dv) },
-    { "glVertexAttrib1dvARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glVertexAttrib1dvARB) },
-    { "glVertexAttrib1dvNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glVertexAttrib1dvNV) },
-    { "glVertexAttrib1f", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glVertexAttrib1f) },
-    { "glVertexAttrib1fARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glVertexAttrib1fARB) },
-    { "glVertexAttrib1fNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glVertexAttrib1fNV) },
-    { "glVertexAttrib1fv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glVertexAttrib1fv) },
-    { "glVertexAttrib1fvARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glVertexAttrib1fvARB) },
-    { "glVertexAttrib1fvNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glVertexAttrib1fvNV) },
-    { "glVertexAttrib1hNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glVertexAttrib1hNV) },
-    { "glVertexAttrib1hvNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glVertexAttrib1hvNV) },
-    { "glVertexAttrib1s", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glVertexAttrib1s) },
-    { "glVertexAttrib1sARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glVertexAttrib1sARB) },
-    { "glVertexAttrib1sNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glVertexAttrib1sNV) },
-    { "glVertexAttrib1sv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glVertexAttrib1sv) },
-    { "glVertexAttrib1svARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glVertexAttrib1svARB) },
-    { "glVertexAttrib1svNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glVertexAttrib1svNV) },
-    { "glVertexAttrib2d", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glVertexAttrib2d) },
-    { "glVertexAttrib2dARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glVertexAttrib2dARB) },
-    { "glVertexAttrib2dNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glVertexAttrib2dNV) },
-    { "glVertexAttrib2dv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glVertexAttrib2dv) },
-    { "glVertexAttrib2dvARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glVertexAttrib2dvARB) },
-    { "glVertexAttrib2dvNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glVertexAttrib2dvNV) },
-    { "glVertexAttrib2f", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glVertexAttrib2f) },
-    { "glVertexAttrib2fARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glVertexAttrib2fARB) },
-    { "glVertexAttrib2fNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glVertexAttrib2fNV) },
-    { "glVertexAttrib2fv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glVertexAttrib2fv) },
-    { "glVertexAttrib2fvARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glVertexAttrib2fvARB) },
-    { "glVertexAttrib2fvNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glVertexAttrib2fvNV) },
-    { "glVertexAttrib2hNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glVertexAttrib2hNV) },
-    { "glVertexAttrib2hvNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glVertexAttrib2hvNV) },
-    { "glVertexAttrib2s", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glVertexAttrib2s) },
-    { "glVertexAttrib2sARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glVertexAttrib2sARB) },
-    { "glVertexAttrib2sNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glVertexAttrib2sNV) },
-    { "glVertexAttrib2sv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glVertexAttrib2sv) },
-    { "glVertexAttrib2svARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glVertexAttrib2svARB) },
-    { "glVertexAttrib2svNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glVertexAttrib2svNV) },
-    { "glVertexAttrib3d", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glVertexAttrib3d) },
-    { "glVertexAttrib3dARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glVertexAttrib3dARB) },
-    { "glVertexAttrib3dNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glVertexAttrib3dNV) },
-    { "glVertexAttrib3dv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glVertexAttrib3dv) },
-    { "glVertexAttrib3dvARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glVertexAttrib3dvARB) },
-    { "glVertexAttrib3dvNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glVertexAttrib3dvNV) },
-    { "glVertexAttrib3f", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glVertexAttrib3f) },
-    { "glVertexAttrib3fARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glVertexAttrib3fARB) },
-    { "glVertexAttrib3fNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glVertexAttrib3fNV) },
-    { "glVertexAttrib3fv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glVertexAttrib3fv) },
-    { "glVertexAttrib3fvARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glVertexAttrib3fvARB) },
-    { "glVertexAttrib3fvNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glVertexAttrib3fvNV) },
-    { "glVertexAttrib3hNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glVertexAttrib3hNV) },
-    { "glVertexAttrib3hvNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glVertexAttrib3hvNV) },
-    { "glVertexAttrib3s", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glVertexAttrib3s) },
-    { "glVertexAttrib3sARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glVertexAttrib3sARB) },
-    { "glVertexAttrib3sNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glVertexAttrib3sNV) },
-    { "glVertexAttrib3sv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glVertexAttrib3sv) },
-    { "glVertexAttrib3svARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glVertexAttrib3svARB) },
-    { "glVertexAttrib3svNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glVertexAttrib3svNV) },
-    { "glVertexAttrib4Nbv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glVertexAttrib4Nbv) },
-    { "glVertexAttrib4NbvARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glVertexAttrib4NbvARB) },
-    { "glVertexAttrib4Niv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glVertexAttrib4Niv) },
-    { "glVertexAttrib4NivARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glVertexAttrib4NivARB) },
-    { "glVertexAttrib4Nsv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glVertexAttrib4Nsv) },
-    { "glVertexAttrib4NsvARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glVertexAttrib4NsvARB) },
-    { "glVertexAttrib4Nub", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glVertexAttrib4Nub) },
-    { "glVertexAttrib4NubARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glVertexAttrib4NubARB) },
-    { "glVertexAttrib4Nubv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glVertexAttrib4Nubv) },
-    { "glVertexAttrib4NubvARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glVertexAttrib4NubvARB) },
-    { "glVertexAttrib4Nuiv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glVertexAttrib4Nuiv) },
-    { "glVertexAttrib4NuivARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glVertexAttrib4NuivARB) },
-    { "glVertexAttrib4Nusv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glVertexAttrib4Nusv) },
-    { "glVertexAttrib4NusvARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glVertexAttrib4NusvARB) },
-    { "glVertexAttrib4bv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glVertexAttrib4bv) },
-    { "glVertexAttrib4bvARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glVertexAttrib4bvARB) },
-    { "glVertexAttrib4d", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glVertexAttrib4d) },
-    { "glVertexAttrib4dARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glVertexAttrib4dARB) },
-    { "glVertexAttrib4dNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glVertexAttrib4dNV) },
-    { "glVertexAttrib4dv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glVertexAttrib4dv) },
-    { "glVertexAttrib4dvARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glVertexAttrib4dvARB) },
-    { "glVertexAttrib4dvNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glVertexAttrib4dvNV) },
-    { "glVertexAttrib4f", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glVertexAttrib4f) },
-    { "glVertexAttrib4fARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glVertexAttrib4fARB) },
-    { "glVertexAttrib4fNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glVertexAttrib4fNV) },
-    { "glVertexAttrib4fv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glVertexAttrib4fv) },
-    { "glVertexAttrib4fvARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glVertexAttrib4fvARB) },
-    { "glVertexAttrib4fvNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glVertexAttrib4fvNV) },
-    { "glVertexAttrib4hNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glVertexAttrib4hNV) },
-    { "glVertexAttrib4hvNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glVertexAttrib4hvNV) },
-    { "glVertexAttrib4iv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glVertexAttrib4iv) },
-    { "glVertexAttrib4ivARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glVertexAttrib4ivARB) },
-    { "glVertexAttrib4s", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glVertexAttrib4s) },
-    { "glVertexAttrib4sARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glVertexAttrib4sARB) },
-    { "glVertexAttrib4sNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glVertexAttrib4sNV) },
-    { "glVertexAttrib4sv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glVertexAttrib4sv) },
-    { "glVertexAttrib4svARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glVertexAttrib4svARB) },
-    { "glVertexAttrib4svNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glVertexAttrib4svNV) },
-    { "glVertexAttrib4ubNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glVertexAttrib4ubNV) },
-    { "glVertexAttrib4ubv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glVertexAttrib4ubv) },
-    { "glVertexAttrib4ubvARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glVertexAttrib4ubvARB) },
-    { "glVertexAttrib4ubvNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glVertexAttrib4ubvNV) },
-    { "glVertexAttrib4uiv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glVertexAttrib4uiv) },
-    { "glVertexAttrib4uivARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glVertexAttrib4uivARB) },
-    { "glVertexAttrib4usv", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glVertexAttrib4usv) },
-    { "glVertexAttrib4usvARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glVertexAttrib4usvARB) },
-    { "glVertexAttribArrayObjectATI", "GL_ATI_vertex_attrib_array_object\0", offsetof(struct opengl_funcs, p_glVertexAttribArrayObjectATI) },
-    { "glVertexAttribBinding", "GL_ARB_vertex_attrib_binding\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glVertexAttribBinding) },
-    { "glVertexAttribDivisor", "GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glVertexAttribDivisor) },
-    { "glVertexAttribDivisorARB", "GL_ARB_instanced_arrays\0", offsetof(struct opengl_funcs, p_glVertexAttribDivisorARB) },
-    { "glVertexAttribFormat", "GL_ARB_vertex_attrib_binding\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glVertexAttribFormat) },
-    { "glVertexAttribFormatNV", "GL_NV_vertex_buffer_unified_memory\0", offsetof(struct opengl_funcs, p_glVertexAttribFormatNV) },
-    { "glVertexAttribI1i", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glVertexAttribI1i) },
-    { "glVertexAttribI1iEXT", "GL_EXT_gpu_shader4\0GL_NV_vertex_program4\0", offsetof(struct opengl_funcs, p_glVertexAttribI1iEXT) },
-    { "glVertexAttribI1iv", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glVertexAttribI1iv) },
-    { "glVertexAttribI1ivEXT", "GL_EXT_gpu_shader4\0GL_NV_vertex_program4\0", offsetof(struct opengl_funcs, p_glVertexAttribI1ivEXT) },
-    { "glVertexAttribI1ui", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glVertexAttribI1ui) },
-    { "glVertexAttribI1uiEXT", "GL_EXT_gpu_shader4\0GL_NV_vertex_program4\0", offsetof(struct opengl_funcs, p_glVertexAttribI1uiEXT) },
-    { "glVertexAttribI1uiv", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glVertexAttribI1uiv) },
-    { "glVertexAttribI1uivEXT", "GL_EXT_gpu_shader4\0GL_NV_vertex_program4\0", offsetof(struct opengl_funcs, p_glVertexAttribI1uivEXT) },
-    { "glVertexAttribI2i", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glVertexAttribI2i) },
-    { "glVertexAttribI2iEXT", "GL_EXT_gpu_shader4\0GL_NV_vertex_program4\0", offsetof(struct opengl_funcs, p_glVertexAttribI2iEXT) },
-    { "glVertexAttribI2iv", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glVertexAttribI2iv) },
-    { "glVertexAttribI2ivEXT", "GL_EXT_gpu_shader4\0GL_NV_vertex_program4\0", offsetof(struct opengl_funcs, p_glVertexAttribI2ivEXT) },
-    { "glVertexAttribI2ui", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glVertexAttribI2ui) },
-    { "glVertexAttribI2uiEXT", "GL_EXT_gpu_shader4\0GL_NV_vertex_program4\0", offsetof(struct opengl_funcs, p_glVertexAttribI2uiEXT) },
-    { "glVertexAttribI2uiv", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glVertexAttribI2uiv) },
-    { "glVertexAttribI2uivEXT", "GL_EXT_gpu_shader4\0GL_NV_vertex_program4\0", offsetof(struct opengl_funcs, p_glVertexAttribI2uivEXT) },
-    { "glVertexAttribI3i", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glVertexAttribI3i) },
-    { "glVertexAttribI3iEXT", "GL_EXT_gpu_shader4\0GL_NV_vertex_program4\0", offsetof(struct opengl_funcs, p_glVertexAttribI3iEXT) },
-    { "glVertexAttribI3iv", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glVertexAttribI3iv) },
-    { "glVertexAttribI3ivEXT", "GL_EXT_gpu_shader4\0GL_NV_vertex_program4\0", offsetof(struct opengl_funcs, p_glVertexAttribI3ivEXT) },
-    { "glVertexAttribI3ui", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glVertexAttribI3ui) },
-    { "glVertexAttribI3uiEXT", "GL_EXT_gpu_shader4\0GL_NV_vertex_program4\0", offsetof(struct opengl_funcs, p_glVertexAttribI3uiEXT) },
-    { "glVertexAttribI3uiv", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glVertexAttribI3uiv) },
-    { "glVertexAttribI3uivEXT", "GL_EXT_gpu_shader4\0GL_NV_vertex_program4\0", offsetof(struct opengl_funcs, p_glVertexAttribI3uivEXT) },
-    { "glVertexAttribI4bv", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glVertexAttribI4bv) },
-    { "glVertexAttribI4bvEXT", "GL_EXT_gpu_shader4\0GL_NV_vertex_program4\0", offsetof(struct opengl_funcs, p_glVertexAttribI4bvEXT) },
-    { "glVertexAttribI4i", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glVertexAttribI4i) },
-    { "glVertexAttribI4iEXT", "GL_EXT_gpu_shader4\0GL_NV_vertex_program4\0", offsetof(struct opengl_funcs, p_glVertexAttribI4iEXT) },
-    { "glVertexAttribI4iv", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glVertexAttribI4iv) },
-    { "glVertexAttribI4ivEXT", "GL_EXT_gpu_shader4\0GL_NV_vertex_program4\0", offsetof(struct opengl_funcs, p_glVertexAttribI4ivEXT) },
-    { "glVertexAttribI4sv", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glVertexAttribI4sv) },
-    { "glVertexAttribI4svEXT", "GL_EXT_gpu_shader4\0GL_NV_vertex_program4\0", offsetof(struct opengl_funcs, p_glVertexAttribI4svEXT) },
-    { "glVertexAttribI4ubv", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glVertexAttribI4ubv) },
-    { "glVertexAttribI4ubvEXT", "GL_EXT_gpu_shader4\0GL_NV_vertex_program4\0", offsetof(struct opengl_funcs, p_glVertexAttribI4ubvEXT) },
-    { "glVertexAttribI4ui", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glVertexAttribI4ui) },
-    { "glVertexAttribI4uiEXT", "GL_EXT_gpu_shader4\0GL_NV_vertex_program4\0", offsetof(struct opengl_funcs, p_glVertexAttribI4uiEXT) },
-    { "glVertexAttribI4uiv", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glVertexAttribI4uiv) },
-    { "glVertexAttribI4uivEXT", "GL_EXT_gpu_shader4\0GL_NV_vertex_program4\0", offsetof(struct opengl_funcs, p_glVertexAttribI4uivEXT) },
-    { "glVertexAttribI4usv", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glVertexAttribI4usv) },
-    { "glVertexAttribI4usvEXT", "GL_EXT_gpu_shader4\0GL_NV_vertex_program4\0", offsetof(struct opengl_funcs, p_glVertexAttribI4usvEXT) },
-    { "glVertexAttribIFormat", "GL_ARB_vertex_attrib_binding\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glVertexAttribIFormat) },
-    { "glVertexAttribIFormatNV", "GL_NV_vertex_buffer_unified_memory\0", offsetof(struct opengl_funcs, p_glVertexAttribIFormatNV) },
-    { "glVertexAttribIPointer", "GL_VERSION_3_0\0", offsetof(struct opengl_funcs, p_glVertexAttribIPointer) },
-    { "glVertexAttribIPointerEXT", "GL_EXT_gpu_shader4\0GL_NV_vertex_program4\0", offsetof(struct opengl_funcs, p_glVertexAttribIPointerEXT) },
-    { "glVertexAttribL1d", "GL_ARB_vertex_attrib_64bit\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glVertexAttribL1d) },
-    { "glVertexAttribL1dEXT", "GL_EXT_vertex_attrib_64bit\0", offsetof(struct opengl_funcs, p_glVertexAttribL1dEXT) },
-    { "glVertexAttribL1dv", "GL_ARB_vertex_attrib_64bit\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glVertexAttribL1dv) },
-    { "glVertexAttribL1dvEXT", "GL_EXT_vertex_attrib_64bit\0", offsetof(struct opengl_funcs, p_glVertexAttribL1dvEXT) },
-    { "glVertexAttribL1i64NV", "GL_NV_vertex_attrib_integer_64bit\0", offsetof(struct opengl_funcs, p_glVertexAttribL1i64NV) },
-    { "glVertexAttribL1i64vNV", "GL_NV_vertex_attrib_integer_64bit\0", offsetof(struct opengl_funcs, p_glVertexAttribL1i64vNV) },
-    { "glVertexAttribL1ui64ARB", "GL_ARB_bindless_texture\0", offsetof(struct opengl_funcs, p_glVertexAttribL1ui64ARB) },
-    { "glVertexAttribL1ui64NV", "GL_NV_vertex_attrib_integer_64bit\0", offsetof(struct opengl_funcs, p_glVertexAttribL1ui64NV) },
-    { "glVertexAttribL1ui64vARB", "GL_ARB_bindless_texture\0", offsetof(struct opengl_funcs, p_glVertexAttribL1ui64vARB) },
-    { "glVertexAttribL1ui64vNV", "GL_NV_vertex_attrib_integer_64bit\0", offsetof(struct opengl_funcs, p_glVertexAttribL1ui64vNV) },
-    { "glVertexAttribL2d", "GL_ARB_vertex_attrib_64bit\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glVertexAttribL2d) },
-    { "glVertexAttribL2dEXT", "GL_EXT_vertex_attrib_64bit\0", offsetof(struct opengl_funcs, p_glVertexAttribL2dEXT) },
-    { "glVertexAttribL2dv", "GL_ARB_vertex_attrib_64bit\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glVertexAttribL2dv) },
-    { "glVertexAttribL2dvEXT", "GL_EXT_vertex_attrib_64bit\0", offsetof(struct opengl_funcs, p_glVertexAttribL2dvEXT) },
-    { "glVertexAttribL2i64NV", "GL_NV_vertex_attrib_integer_64bit\0", offsetof(struct opengl_funcs, p_glVertexAttribL2i64NV) },
-    { "glVertexAttribL2i64vNV", "GL_NV_vertex_attrib_integer_64bit\0", offsetof(struct opengl_funcs, p_glVertexAttribL2i64vNV) },
-    { "glVertexAttribL2ui64NV", "GL_NV_vertex_attrib_integer_64bit\0", offsetof(struct opengl_funcs, p_glVertexAttribL2ui64NV) },
-    { "glVertexAttribL2ui64vNV", "GL_NV_vertex_attrib_integer_64bit\0", offsetof(struct opengl_funcs, p_glVertexAttribL2ui64vNV) },
-    { "glVertexAttribL3d", "GL_ARB_vertex_attrib_64bit\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glVertexAttribL3d) },
-    { "glVertexAttribL3dEXT", "GL_EXT_vertex_attrib_64bit\0", offsetof(struct opengl_funcs, p_glVertexAttribL3dEXT) },
-    { "glVertexAttribL3dv", "GL_ARB_vertex_attrib_64bit\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glVertexAttribL3dv) },
-    { "glVertexAttribL3dvEXT", "GL_EXT_vertex_attrib_64bit\0", offsetof(struct opengl_funcs, p_glVertexAttribL3dvEXT) },
-    { "glVertexAttribL3i64NV", "GL_NV_vertex_attrib_integer_64bit\0", offsetof(struct opengl_funcs, p_glVertexAttribL3i64NV) },
-    { "glVertexAttribL3i64vNV", "GL_NV_vertex_attrib_integer_64bit\0", offsetof(struct opengl_funcs, p_glVertexAttribL3i64vNV) },
-    { "glVertexAttribL3ui64NV", "GL_NV_vertex_attrib_integer_64bit\0", offsetof(struct opengl_funcs, p_glVertexAttribL3ui64NV) },
-    { "glVertexAttribL3ui64vNV", "GL_NV_vertex_attrib_integer_64bit\0", offsetof(struct opengl_funcs, p_glVertexAttribL3ui64vNV) },
-    { "glVertexAttribL4d", "GL_ARB_vertex_attrib_64bit\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glVertexAttribL4d) },
-    { "glVertexAttribL4dEXT", "GL_EXT_vertex_attrib_64bit\0", offsetof(struct opengl_funcs, p_glVertexAttribL4dEXT) },
-    { "glVertexAttribL4dv", "GL_ARB_vertex_attrib_64bit\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glVertexAttribL4dv) },
-    { "glVertexAttribL4dvEXT", "GL_EXT_vertex_attrib_64bit\0", offsetof(struct opengl_funcs, p_glVertexAttribL4dvEXT) },
-    { "glVertexAttribL4i64NV", "GL_NV_vertex_attrib_integer_64bit\0", offsetof(struct opengl_funcs, p_glVertexAttribL4i64NV) },
-    { "glVertexAttribL4i64vNV", "GL_NV_vertex_attrib_integer_64bit\0", offsetof(struct opengl_funcs, p_glVertexAttribL4i64vNV) },
-    { "glVertexAttribL4ui64NV", "GL_NV_vertex_attrib_integer_64bit\0", offsetof(struct opengl_funcs, p_glVertexAttribL4ui64NV) },
-    { "glVertexAttribL4ui64vNV", "GL_NV_vertex_attrib_integer_64bit\0", offsetof(struct opengl_funcs, p_glVertexAttribL4ui64vNV) },
-    { "glVertexAttribLFormat", "GL_ARB_vertex_attrib_binding\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glVertexAttribLFormat) },
-    { "glVertexAttribLFormatNV", "GL_NV_vertex_attrib_integer_64bit\0", offsetof(struct opengl_funcs, p_glVertexAttribLFormatNV) },
-    { "glVertexAttribLPointer", "GL_ARB_vertex_attrib_64bit\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glVertexAttribLPointer) },
-    { "glVertexAttribLPointerEXT", "GL_EXT_vertex_attrib_64bit\0", offsetof(struct opengl_funcs, p_glVertexAttribLPointerEXT) },
-    { "glVertexAttribP1ui", "GL_ARB_vertex_type_2_10_10_10_rev\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glVertexAttribP1ui) },
-    { "glVertexAttribP1uiv", "GL_ARB_vertex_type_2_10_10_10_rev\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glVertexAttribP1uiv) },
-    { "glVertexAttribP2ui", "GL_ARB_vertex_type_2_10_10_10_rev\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glVertexAttribP2ui) },
-    { "glVertexAttribP2uiv", "GL_ARB_vertex_type_2_10_10_10_rev\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glVertexAttribP2uiv) },
-    { "glVertexAttribP3ui", "GL_ARB_vertex_type_2_10_10_10_rev\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glVertexAttribP3ui) },
-    { "glVertexAttribP3uiv", "GL_ARB_vertex_type_2_10_10_10_rev\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glVertexAttribP3uiv) },
-    { "glVertexAttribP4ui", "GL_ARB_vertex_type_2_10_10_10_rev\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glVertexAttribP4ui) },
-    { "glVertexAttribP4uiv", "GL_ARB_vertex_type_2_10_10_10_rev\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glVertexAttribP4uiv) },
-    { "glVertexAttribParameteriAMD", "GL_AMD_interleaved_elements\0", offsetof(struct opengl_funcs, p_glVertexAttribParameteriAMD) },
-    { "glVertexAttribPointer", "GL_VERSION_2_0\0", offsetof(struct opengl_funcs, p_glVertexAttribPointer) },
-    { "glVertexAttribPointerARB", "GL_ARB_vertex_program\0GL_ARB_vertex_shader\0", offsetof(struct opengl_funcs, p_glVertexAttribPointerARB) },
-    { "glVertexAttribPointerNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glVertexAttribPointerNV) },
-    { "glVertexAttribs1dvNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glVertexAttribs1dvNV) },
-    { "glVertexAttribs1fvNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glVertexAttribs1fvNV) },
-    { "glVertexAttribs1hvNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glVertexAttribs1hvNV) },
-    { "glVertexAttribs1svNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glVertexAttribs1svNV) },
-    { "glVertexAttribs2dvNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glVertexAttribs2dvNV) },
-    { "glVertexAttribs2fvNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glVertexAttribs2fvNV) },
-    { "glVertexAttribs2hvNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glVertexAttribs2hvNV) },
-    { "glVertexAttribs2svNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glVertexAttribs2svNV) },
-    { "glVertexAttribs3dvNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glVertexAttribs3dvNV) },
-    { "glVertexAttribs3fvNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glVertexAttribs3fvNV) },
-    { "glVertexAttribs3hvNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glVertexAttribs3hvNV) },
-    { "glVertexAttribs3svNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glVertexAttribs3svNV) },
-    { "glVertexAttribs4dvNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glVertexAttribs4dvNV) },
-    { "glVertexAttribs4fvNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glVertexAttribs4fvNV) },
-    { "glVertexAttribs4hvNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glVertexAttribs4hvNV) },
-    { "glVertexAttribs4svNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glVertexAttribs4svNV) },
-    { "glVertexAttribs4ubvNV", "GL_NV_vertex_program\0", offsetof(struct opengl_funcs, p_glVertexAttribs4ubvNV) },
-    { "glVertexBindingDivisor", "GL_ARB_vertex_attrib_binding\0GL_VERSION_4_3\0", offsetof(struct opengl_funcs, p_glVertexBindingDivisor) },
-    { "glVertexBlendARB", "GL_ARB_vertex_blend\0", offsetof(struct opengl_funcs, p_glVertexBlendARB) },
-    { "glVertexBlendEnvfATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glVertexBlendEnvfATI) },
-    { "glVertexBlendEnviATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glVertexBlendEnviATI) },
-    { "glVertexFormatNV", "GL_NV_vertex_buffer_unified_memory\0", offsetof(struct opengl_funcs, p_glVertexFormatNV) },
-    { "glVertexP2ui", "GL_ARB_vertex_type_2_10_10_10_rev\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glVertexP2ui) },
-    { "glVertexP2uiv", "GL_ARB_vertex_type_2_10_10_10_rev\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glVertexP2uiv) },
-    { "glVertexP3ui", "GL_ARB_vertex_type_2_10_10_10_rev\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glVertexP3ui) },
-    { "glVertexP3uiv", "GL_ARB_vertex_type_2_10_10_10_rev\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glVertexP3uiv) },
-    { "glVertexP4ui", "GL_ARB_vertex_type_2_10_10_10_rev\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glVertexP4ui) },
-    { "glVertexP4uiv", "GL_ARB_vertex_type_2_10_10_10_rev\0GL_VERSION_3_3\0", offsetof(struct opengl_funcs, p_glVertexP4uiv) },
-    { "glVertexPointerEXT", "GL_EXT_vertex_array\0", offsetof(struct opengl_funcs, p_glVertexPointerEXT) },
-    { "glVertexPointerListIBM", "GL_IBM_vertex_array_lists\0", offsetof(struct opengl_funcs, p_glVertexPointerListIBM) },
-    { "glVertexPointervINTEL", "GL_INTEL_parallel_arrays\0", offsetof(struct opengl_funcs, p_glVertexPointervINTEL) },
-    { "glVertexStream1dATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glVertexStream1dATI) },
-    { "glVertexStream1dvATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glVertexStream1dvATI) },
-    { "glVertexStream1fATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glVertexStream1fATI) },
-    { "glVertexStream1fvATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glVertexStream1fvATI) },
-    { "glVertexStream1iATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glVertexStream1iATI) },
-    { "glVertexStream1ivATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glVertexStream1ivATI) },
-    { "glVertexStream1sATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glVertexStream1sATI) },
-    { "glVertexStream1svATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glVertexStream1svATI) },
-    { "glVertexStream2dATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glVertexStream2dATI) },
-    { "glVertexStream2dvATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glVertexStream2dvATI) },
-    { "glVertexStream2fATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glVertexStream2fATI) },
-    { "glVertexStream2fvATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glVertexStream2fvATI) },
-    { "glVertexStream2iATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glVertexStream2iATI) },
-    { "glVertexStream2ivATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glVertexStream2ivATI) },
-    { "glVertexStream2sATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glVertexStream2sATI) },
-    { "glVertexStream2svATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glVertexStream2svATI) },
-    { "glVertexStream3dATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glVertexStream3dATI) },
-    { "glVertexStream3dvATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glVertexStream3dvATI) },
-    { "glVertexStream3fATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glVertexStream3fATI) },
-    { "glVertexStream3fvATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glVertexStream3fvATI) },
-    { "glVertexStream3iATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glVertexStream3iATI) },
-    { "glVertexStream3ivATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glVertexStream3ivATI) },
-    { "glVertexStream3sATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glVertexStream3sATI) },
-    { "glVertexStream3svATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glVertexStream3svATI) },
-    { "glVertexStream4dATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glVertexStream4dATI) },
-    { "glVertexStream4dvATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glVertexStream4dvATI) },
-    { "glVertexStream4fATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glVertexStream4fATI) },
-    { "glVertexStream4fvATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glVertexStream4fvATI) },
-    { "glVertexStream4iATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glVertexStream4iATI) },
-    { "glVertexStream4ivATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glVertexStream4ivATI) },
-    { "glVertexStream4sATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glVertexStream4sATI) },
-    { "glVertexStream4svATI", "GL_ATI_vertex_streams\0", offsetof(struct opengl_funcs, p_glVertexStream4svATI) },
-    { "glVertexWeightPointerEXT", "GL_EXT_vertex_weighting\0", offsetof(struct opengl_funcs, p_glVertexWeightPointerEXT) },
-    { "glVertexWeightfEXT", "GL_EXT_vertex_weighting\0", offsetof(struct opengl_funcs, p_glVertexWeightfEXT) },
-    { "glVertexWeightfvEXT", "GL_EXT_vertex_weighting\0", offsetof(struct opengl_funcs, p_glVertexWeightfvEXT) },
-    { "glVertexWeighthNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glVertexWeighthNV) },
-    { "glVertexWeighthvNV", "GL_NV_half_float\0", offsetof(struct opengl_funcs, p_glVertexWeighthvNV) },
-    { "glVideoCaptureNV", "GL_NV_video_capture\0", offsetof(struct opengl_funcs, p_glVideoCaptureNV) },
-    { "glVideoCaptureStreamParameterdvNV", "GL_NV_video_capture\0", offsetof(struct opengl_funcs, p_glVideoCaptureStreamParameterdvNV) },
-    { "glVideoCaptureStreamParameterfvNV", "GL_NV_video_capture\0", offsetof(struct opengl_funcs, p_glVideoCaptureStreamParameterfvNV) },
-    { "glVideoCaptureStreamParameterivNV", "GL_NV_video_capture\0", offsetof(struct opengl_funcs, p_glVideoCaptureStreamParameterivNV) },
-    { "glViewportArrayv", "GL_ARB_viewport_array\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glViewportArrayv) },
-    { "glViewportIndexedf", "GL_ARB_viewport_array\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glViewportIndexedf) },
-    { "glViewportIndexedfv", "GL_ARB_viewport_array\0GL_VERSION_4_1\0", offsetof(struct opengl_funcs, p_glViewportIndexedfv) },
-    { "glViewportPositionWScaleNV", "GL_NV_clip_space_w_scaling\0", offsetof(struct opengl_funcs, p_glViewportPositionWScaleNV) },
-    { "glViewportSwizzleNV", "GL_NV_viewport_swizzle\0", offsetof(struct opengl_funcs, p_glViewportSwizzleNV) },
-    { "glWaitSemaphoreEXT", "GL_EXT_semaphore\0", offsetof(struct opengl_funcs, p_glWaitSemaphoreEXT) },
-    { "glWaitSemaphoreui64NVX", "GL_NVX_progress_fence\0", offsetof(struct opengl_funcs, p_glWaitSemaphoreui64NVX) },
-    { "glWaitSync", "GL_ARB_sync\0GL_VERSION_3_2\0", offsetof(struct opengl_funcs, p_glWaitSync) },
-    { "glWaitVkSemaphoreNV", "GL_NV_draw_vulkan_image\0", offsetof(struct opengl_funcs, p_glWaitVkSemaphoreNV) },
-    { "glWeightPathsNV", "GL_NV_path_rendering\0", offsetof(struct opengl_funcs, p_glWeightPathsNV) },
-    { "glWeightPointerARB", "GL_ARB_vertex_blend\0", offsetof(struct opengl_funcs, p_glWeightPointerARB) },
-    { "glWeightbvARB", "GL_ARB_vertex_blend\0", offsetof(struct opengl_funcs, p_glWeightbvARB) },
-    { "glWeightdvARB", "GL_ARB_vertex_blend\0", offsetof(struct opengl_funcs, p_glWeightdvARB) },
-    { "glWeightfvARB", "GL_ARB_vertex_blend\0", offsetof(struct opengl_funcs, p_glWeightfvARB) },
-    { "glWeightivARB", "GL_ARB_vertex_blend\0", offsetof(struct opengl_funcs, p_glWeightivARB) },
-    { "glWeightsvARB", "GL_ARB_vertex_blend\0", offsetof(struct opengl_funcs, p_glWeightsvARB) },
-    { "glWeightubvARB", "GL_ARB_vertex_blend\0", offsetof(struct opengl_funcs, p_glWeightubvARB) },
-    { "glWeightuivARB", "GL_ARB_vertex_blend\0", offsetof(struct opengl_funcs, p_glWeightuivARB) },
-    { "glWeightusvARB", "GL_ARB_vertex_blend\0", offsetof(struct opengl_funcs, p_glWeightusvARB) },
-    { "glWindowPos2d", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glWindowPos2d) },
-    { "glWindowPos2dARB", "GL_ARB_window_pos\0", offsetof(struct opengl_funcs, p_glWindowPos2dARB) },
-    { "glWindowPos2dMESA", "GL_MESA_window_pos\0", offsetof(struct opengl_funcs, p_glWindowPos2dMESA) },
-    { "glWindowPos2dv", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glWindowPos2dv) },
-    { "glWindowPos2dvARB", "GL_ARB_window_pos\0", offsetof(struct opengl_funcs, p_glWindowPos2dvARB) },
-    { "glWindowPos2dvMESA", "GL_MESA_window_pos\0", offsetof(struct opengl_funcs, p_glWindowPos2dvMESA) },
-    { "glWindowPos2f", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glWindowPos2f) },
-    { "glWindowPos2fARB", "GL_ARB_window_pos\0", offsetof(struct opengl_funcs, p_glWindowPos2fARB) },
-    { "glWindowPos2fMESA", "GL_MESA_window_pos\0", offsetof(struct opengl_funcs, p_glWindowPos2fMESA) },
-    { "glWindowPos2fv", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glWindowPos2fv) },
-    { "glWindowPos2fvARB", "GL_ARB_window_pos\0", offsetof(struct opengl_funcs, p_glWindowPos2fvARB) },
-    { "glWindowPos2fvMESA", "GL_MESA_window_pos\0", offsetof(struct opengl_funcs, p_glWindowPos2fvMESA) },
-    { "glWindowPos2i", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glWindowPos2i) },
-    { "glWindowPos2iARB", "GL_ARB_window_pos\0", offsetof(struct opengl_funcs, p_glWindowPos2iARB) },
-    { "glWindowPos2iMESA", "GL_MESA_window_pos\0", offsetof(struct opengl_funcs, p_glWindowPos2iMESA) },
-    { "glWindowPos2iv", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glWindowPos2iv) },
-    { "glWindowPos2ivARB", "GL_ARB_window_pos\0", offsetof(struct opengl_funcs, p_glWindowPos2ivARB) },
-    { "glWindowPos2ivMESA", "GL_MESA_window_pos\0", offsetof(struct opengl_funcs, p_glWindowPos2ivMESA) },
-    { "glWindowPos2s", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glWindowPos2s) },
-    { "glWindowPos2sARB", "GL_ARB_window_pos\0", offsetof(struct opengl_funcs, p_glWindowPos2sARB) },
-    { "glWindowPos2sMESA", "GL_MESA_window_pos\0", offsetof(struct opengl_funcs, p_glWindowPos2sMESA) },
-    { "glWindowPos2sv", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glWindowPos2sv) },
-    { "glWindowPos2svARB", "GL_ARB_window_pos\0", offsetof(struct opengl_funcs, p_glWindowPos2svARB) },
-    { "glWindowPos2svMESA", "GL_MESA_window_pos\0", offsetof(struct opengl_funcs, p_glWindowPos2svMESA) },
-    { "glWindowPos3d", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glWindowPos3d) },
-    { "glWindowPos3dARB", "GL_ARB_window_pos\0", offsetof(struct opengl_funcs, p_glWindowPos3dARB) },
-    { "glWindowPos3dMESA", "GL_MESA_window_pos\0", offsetof(struct opengl_funcs, p_glWindowPos3dMESA) },
-    { "glWindowPos3dv", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glWindowPos3dv) },
-    { "glWindowPos3dvARB", "GL_ARB_window_pos\0", offsetof(struct opengl_funcs, p_glWindowPos3dvARB) },
-    { "glWindowPos3dvMESA", "GL_MESA_window_pos\0", offsetof(struct opengl_funcs, p_glWindowPos3dvMESA) },
-    { "glWindowPos3f", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glWindowPos3f) },
-    { "glWindowPos3fARB", "GL_ARB_window_pos\0", offsetof(struct opengl_funcs, p_glWindowPos3fARB) },
-    { "glWindowPos3fMESA", "GL_MESA_window_pos\0", offsetof(struct opengl_funcs, p_glWindowPos3fMESA) },
-    { "glWindowPos3fv", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glWindowPos3fv) },
-    { "glWindowPos3fvARB", "GL_ARB_window_pos\0", offsetof(struct opengl_funcs, p_glWindowPos3fvARB) },
-    { "glWindowPos3fvMESA", "GL_MESA_window_pos\0", offsetof(struct opengl_funcs, p_glWindowPos3fvMESA) },
-    { "glWindowPos3i", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glWindowPos3i) },
-    { "glWindowPos3iARB", "GL_ARB_window_pos\0", offsetof(struct opengl_funcs, p_glWindowPos3iARB) },
-    { "glWindowPos3iMESA", "GL_MESA_window_pos\0", offsetof(struct opengl_funcs, p_glWindowPos3iMESA) },
-    { "glWindowPos3iv", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glWindowPos3iv) },
-    { "glWindowPos3ivARB", "GL_ARB_window_pos\0", offsetof(struct opengl_funcs, p_glWindowPos3ivARB) },
-    { "glWindowPos3ivMESA", "GL_MESA_window_pos\0", offsetof(struct opengl_funcs, p_glWindowPos3ivMESA) },
-    { "glWindowPos3s", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glWindowPos3s) },
-    { "glWindowPos3sARB", "GL_ARB_window_pos\0", offsetof(struct opengl_funcs, p_glWindowPos3sARB) },
-    { "glWindowPos3sMESA", "GL_MESA_window_pos\0", offsetof(struct opengl_funcs, p_glWindowPos3sMESA) },
-    { "glWindowPos3sv", "GL_VERSION_1_4\0", offsetof(struct opengl_funcs, p_glWindowPos3sv) },
-    { "glWindowPos3svARB", "GL_ARB_window_pos\0", offsetof(struct opengl_funcs, p_glWindowPos3svARB) },
-    { "glWindowPos3svMESA", "GL_MESA_window_pos\0", offsetof(struct opengl_funcs, p_glWindowPos3svMESA) },
-    { "glWindowPos4dMESA", "GL_MESA_window_pos\0", offsetof(struct opengl_funcs, p_glWindowPos4dMESA) },
-    { "glWindowPos4dvMESA", "GL_MESA_window_pos\0", offsetof(struct opengl_funcs, p_glWindowPos4dvMESA) },
-    { "glWindowPos4fMESA", "GL_MESA_window_pos\0", offsetof(struct opengl_funcs, p_glWindowPos4fMESA) },
-    { "glWindowPos4fvMESA", "GL_MESA_window_pos\0", offsetof(struct opengl_funcs, p_glWindowPos4fvMESA) },
-    { "glWindowPos4iMESA", "GL_MESA_window_pos\0", offsetof(struct opengl_funcs, p_glWindowPos4iMESA) },
-    { "glWindowPos4ivMESA", "GL_MESA_window_pos\0", offsetof(struct opengl_funcs, p_glWindowPos4ivMESA) },
-    { "glWindowPos4sMESA", "GL_MESA_window_pos\0", offsetof(struct opengl_funcs, p_glWindowPos4sMESA) },
-    { "glWindowPos4svMESA", "GL_MESA_window_pos\0", offsetof(struct opengl_funcs, p_glWindowPos4svMESA) },
-    { "glWindowRectanglesEXT", "GL_EXT_window_rectangles\0", offsetof(struct opengl_funcs, p_glWindowRectanglesEXT) },
-    { "glWriteMaskEXT", "GL_EXT_vertex_shader\0", offsetof(struct opengl_funcs, p_glWriteMaskEXT) },
-    { "wglAllocateMemoryNV", "WGL_NV_vertex_array_range\0", offsetof(struct opengl_funcs, p_wglAllocateMemoryNV) },
-    { "wglBindTexImageARB", "WGL_ARB_render_texture\0", offsetof(struct opengl_funcs, p_wglBindTexImageARB) },
-    { "wglChoosePixelFormatARB", "WGL_ARB_pixel_format\0", offsetof(struct opengl_funcs, p_wglChoosePixelFormatARB) },
-    { "wglCreateContextAttribsARB", "WGL_ARB_create_context\0", offsetof(struct opengl_funcs, p_wglCreateContextAttribsARB) },
-    { "wglCreatePbufferARB", "WGL_ARB_pbuffer\0", offsetof(struct opengl_funcs, p_wglCreatePbufferARB) },
-    { "wglDestroyPbufferARB", "WGL_ARB_pbuffer\0", offsetof(struct opengl_funcs, p_wglDestroyPbufferARB) },
-    { "wglFreeMemoryNV", "WGL_NV_vertex_array_range\0", offsetof(struct opengl_funcs, p_wglFreeMemoryNV) },
-    { "wglGetCurrentReadDCARB", "WGL_ARB_make_current_read\0", offsetof(struct opengl_funcs, p_wglGetCurrentReadDCARB) },
-    { "wglGetExtensionsStringARB", "WGL_ARB_extensions_string\0", offsetof(struct opengl_funcs, p_wglGetExtensionsStringARB) },
-    { "wglGetExtensionsStringEXT", "WGL_EXT_extensions_string\0", offsetof(struct opengl_funcs, p_wglGetExtensionsStringEXT) },
-    { "wglGetPbufferDCARB", "WGL_ARB_pbuffer\0", offsetof(struct opengl_funcs, p_wglGetPbufferDCARB) },
-    { "wglGetPixelFormatAttribfvARB", "WGL_ARB_pixel_format\0", offsetof(struct opengl_funcs, p_wglGetPixelFormatAttribfvARB) },
-    { "wglGetPixelFormatAttribivARB", "WGL_ARB_pixel_format\0", offsetof(struct opengl_funcs, p_wglGetPixelFormatAttribivARB) },
-    { "wglGetSwapIntervalEXT", "WGL_EXT_swap_control\0", offsetof(struct opengl_funcs, p_wglGetSwapIntervalEXT) },
-    { "wglMakeContextCurrentARB", "WGL_ARB_make_current_read\0", offsetof(struct opengl_funcs, p_wglMakeContextCurrentARB) },
-    { "wglQueryCurrentRendererIntegerWINE", "WGL_WINE_query_renderer\0", offsetof(struct opengl_funcs, p_wglQueryCurrentRendererIntegerWINE) },
-    { "wglQueryCurrentRendererStringWINE", "WGL_WINE_query_renderer\0", offsetof(struct opengl_funcs, p_wglQueryCurrentRendererStringWINE) },
-    { "wglQueryPbufferARB", "WGL_ARB_pbuffer\0", offsetof(struct opengl_funcs, p_wglQueryPbufferARB) },
-    { "wglQueryRendererIntegerWINE", "WGL_WINE_query_renderer\0", offsetof(struct opengl_funcs, p_wglQueryRendererIntegerWINE) },
-    { "wglQueryRendererStringWINE", "WGL_WINE_query_renderer\0", offsetof(struct opengl_funcs, p_wglQueryRendererStringWINE) },
-    { "wglReleasePbufferDCARB", "WGL_ARB_pbuffer\0", offsetof(struct opengl_funcs, p_wglReleasePbufferDCARB) },
-    { "wglReleaseTexImageARB", "WGL_ARB_render_texture\0", offsetof(struct opengl_funcs, p_wglReleaseTexImageARB) },
-    { "wglSetPbufferAttribARB", "WGL_ARB_render_texture\0", offsetof(struct opengl_funcs, p_wglSetPbufferAttribARB) },
-    { "wglSetPixelFormatWINE", "WGL_WINE_pixel_format_passthrough\0", offsetof(struct opengl_funcs, p_wglSetPixelFormatWINE) },
-    { "wglSwapIntervalEXT", "WGL_EXT_swap_control\0", offsetof(struct opengl_funcs, p_wglSwapIntervalEXT) },
-};
diff --git a/dlls/opengl32/unix_thunks.h b/dlls/opengl32/unix_thunks.h
index 2c0824e0268b..02cf89eedbf5 100644
--- a/dlls/opengl32/unix_thunks.h
+++ b/dlls/opengl32/unix_thunks.h
@@ -5,65 +5,54 @@ typedef ULONG PTR32;
 extern BOOL wrap_wglCopyContext( TEB *teb, HGLRC hglrcSrc, HGLRC hglrcDst, UINT mask );
 extern HGLRC wrap_wglCreateContext( TEB *teb, HDC hDc, HGLRC handle );
 extern BOOL wrap_wglDeleteContext( TEB *teb, HGLRC oldContext );
-extern PROC wrap_wglGetProcAddress( TEB *teb, LPCSTR lpszProc );
 extern BOOL wrap_wglMakeCurrent( TEB *teb, HDC hDc, HGLRC newContext );
 extern BOOL wrap_wglShareLists( TEB *teb, HGLRC hrcSrvShare, HGLRC hrcSrvSource );
 extern BOOL wrap_wglSwapBuffers( TEB *teb, HDC hdc );
-extern void wrap_glClear( TEB *teb, GLbitfield mask );
-extern void wrap_glDrawBuffer( TEB *teb, GLenum buf );
-extern void wrap_glDrawPixels( TEB *teb, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels );
-extern void wrap_glFinish( TEB *teb );
-extern void wrap_glFlush( TEB *teb );
-extern void wrap_glGetBooleanv( TEB *teb, GLenum pname, GLboolean *data );
-extern void wrap_glGetDoublev( TEB *teb, GLenum pname, GLdouble *data );
-extern GLenum wrap_glGetError( TEB *teb );
-extern void wrap_glGetFloatv( TEB *teb, GLenum pname, GLfloat *data );
-extern void wrap_glGetIntegerv( TEB *teb, GLenum pname, GLint *data );
-extern const GLubyte *wrap_glGetString( TEB *teb, GLenum name );
-extern void wrap_glReadBuffer( TEB *teb, GLenum src );
-extern void wrap_glReadPixels( TEB *teb, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels );
-extern void wrap_glViewport( TEB *teb, GLint x, GLint y, GLsizei width, GLsizei height );
-extern GLsync wrap_glCreateSyncFromCLeventARB( TEB *teb, struct _cl_context *context, struct _cl_event *event, GLbitfield flags, GLsync handle );
-extern void wrap_glDebugMessageCallback( TEB *teb, GLDEBUGPROC callback, const void *userParam );
-extern void wrap_glDebugMessageCallbackAMD( TEB *teb, GLDEBUGPROCAMD callback, void *userParam );
-extern void wrap_glDebugMessageCallbackARB( TEB *teb, GLDEBUGPROCARB callback, const void *userParam );
-extern void wrap_glDrawBuffers( TEB *teb, GLsizei n, const GLenum *bufs );
-extern GLsync wrap_glFenceSync( TEB *teb, GLenum condition, GLbitfield flags, GLsync handle );
-extern void wrap_glFramebufferDrawBufferEXT( TEB *teb, GLuint framebuffer, GLenum mode );
-extern void wrap_glFramebufferDrawBuffersEXT( TEB *teb, GLuint framebuffer, GLsizei n, const GLenum *bufs );
-extern void wrap_glFramebufferReadBufferEXT( TEB *teb, GLuint framebuffer, GLenum mode );
-extern void wrap_glGetFramebufferParameterivEXT( TEB *teb, GLuint framebuffer, GLenum pname, GLint *params );
-extern void wrap_glGetInteger64v( TEB *teb, GLenum pname, GLint64 *data );
-extern const GLubyte *wrap_glGetStringi( TEB *teb, GLenum name, GLuint index );
-extern void wrap_glGetUnsignedBytevEXT( TEB *teb, GLenum pname, GLubyte *data );
-extern GLsync wrap_glImportSyncEXT( TEB *teb, GLenum external_sync_type, GLintptr external_sync, GLbitfield flags, GLsync handle );
-extern void wrap_glNamedFramebufferDrawBuffer( TEB *teb, GLuint framebuffer, GLenum buf );
-extern void wrap_glNamedFramebufferDrawBuffers( TEB *teb, GLuint framebuffer, GLsizei n, const GLenum *bufs );
-extern void wrap_glNamedFramebufferReadBuffer( TEB *teb, GLuint framebuffer, GLenum src );
+extern void wrap_glClear( TEB *teb, GLbitfield mask, PFN_glClear func );
+extern void wrap_glDrawBuffer( TEB *teb, GLenum buf, PFN_glDrawBuffer func );
+extern void wrap_glDrawPixels( TEB *teb, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels, PFN_glDrawPixels func );
+extern void wrap_glFinish( TEB *teb, PFN_glFinish func );
+extern void wrap_glFlush( TEB *teb, PFN_glFlush func );
+extern void wrap_glGetBooleanv( TEB *teb, GLenum pname, GLboolean *data, PFN_glGetBooleanv func );
+extern void wrap_glGetDoublev( TEB *teb, GLenum pname, GLdouble *data, PFN_glGetDoublev func );
+extern GLenum wrap_glGetError( TEB *teb, PFN_glGetError func );
+extern void wrap_glGetFloatv( TEB *teb, GLenum pname, GLfloat *data, PFN_glGetFloatv func );
+extern void wrap_glGetIntegerv( TEB *teb, GLenum pname, GLint *data, PFN_glGetIntegerv func );
+extern const GLubyte *wrap_glGetString( TEB *teb, GLenum name, PFN_glGetString func );
+extern void wrap_glReadBuffer( TEB *teb, GLenum src, PFN_glReadBuffer func );
+extern void wrap_glReadPixels( TEB *teb, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels, PFN_glReadPixels func );
+extern void wrap_glViewport( TEB *teb, GLint x, GLint y, GLsizei width, GLsizei height, PFN_glViewport func );
+extern GLsync wrap_glCreateSyncFromCLeventARB( TEB *teb, struct _cl_context *context, struct _cl_event *event, GLbitfield flags, GLsync handle, PFN_glCreateSyncFromCLeventARB func );
+extern void wrap_glDebugMessageCallback( TEB *teb, GLDEBUGPROC callback, const void *userParam, PFN_glDebugMessageCallback func );
+extern void wrap_glDebugMessageCallbackAMD( TEB *teb, GLDEBUGPROCAMD callback, void *userParam, PFN_glDebugMessageCallbackAMD func );
+extern void wrap_glDrawBuffers( TEB *teb, GLsizei n, const GLenum *bufs, PFN_glDrawBuffers func );
+extern GLsync wrap_glFenceSync( TEB *teb, GLenum condition, GLbitfield flags, GLsync handle, PFN_glFenceSync func );
+extern void wrap_glFramebufferDrawBufferEXT( TEB *teb, GLuint framebuffer, GLenum mode, PFN_glFramebufferDrawBufferEXT func );
+extern void wrap_glFramebufferDrawBuffersEXT( TEB *teb, GLuint framebuffer, GLsizei n, const GLenum *bufs, PFN_glFramebufferDrawBuffersEXT func );
+extern void wrap_glFramebufferReadBufferEXT( TEB *teb, GLuint framebuffer, GLenum mode, PFN_glFramebufferReadBufferEXT func );
+extern void wrap_glGetFramebufferParameteriv( TEB *teb, GLenum target, GLenum pname, GLint *params, PFN_glGetFramebufferParameteriv func );
+extern void wrap_glGetInteger64v( TEB *teb, GLenum pname, GLint64 *data, PFN_glGetInteger64v func );
+extern void wrap_glGetUnsignedBytevEXT( TEB *teb, GLenum pname, GLubyte *data, PFN_glGetUnsignedBytevEXT func );
+extern GLsync wrap_glImportSyncEXT( TEB *teb, GLenum external_sync_type, GLintptr external_sync, GLbitfield flags, GLsync handle, PFN_glImportSyncEXT func );
+extern void wrap_glNamedFramebufferDrawBuffer( TEB *teb, GLuint framebuffer, GLenum buf, PFN_glNamedFramebufferDrawBuffer func );
+extern void wrap_glNamedFramebufferDrawBuffers( TEB *teb, GLuint framebuffer, GLsizei n, const GLenum *bufs, PFN_glNamedFramebufferDrawBuffers func );
+extern void wrap_glNamedFramebufferReadBuffer( TEB *teb, GLuint framebuffer, GLenum src, PFN_glNamedFramebufferReadBuffer func );
 extern HGLRC wrap_wglCreateContextAttribsARB( TEB *teb, HDC hDC, HGLRC hShareContext, const int *attribList, HGLRC handle );
+extern HPBUFFERARB wrap_wglCreatePbufferARB( TEB *teb, HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int *piAttribList, HPBUFFERARB handle );
 extern BOOL wrap_wglMakeContextCurrentARB( TEB *teb, HDC hDrawDC, HDC hReadDC, HGLRC hglrc );
 
 #ifdef _WIN64
-extern void wow64_glBufferStorage( TEB *teb, GLenum target, GLsizeiptr size, const void *data, GLbitfield flags );
-extern void wow64_glDeleteBuffers( TEB *teb, GLsizei n, const GLuint *buffers );
-extern void wow64_glFlushMappedBufferRange( TEB *teb, GLenum target, GLintptr offset, GLsizeiptr length );
-extern void wow64_glFlushMappedNamedBufferRange( TEB *teb, GLuint buffer, GLintptr offset, GLsizeiptr length );
-extern void wow64_glFlushMappedNamedBufferRangeEXT( TEB *teb, GLuint buffer, GLintptr offset, GLsizeiptr length );
-extern void wow64_glGetBufferPointerv( TEB *teb, GLenum target, GLenum pname, PTR32 *params );
-extern void wow64_glGetBufferPointervARB( TEB *teb, GLenum target, GLenum pname, PTR32 *params );
-extern void wow64_glGetNamedBufferPointerv( TEB *teb, GLuint buffer, GLenum pname, PTR32 *params );
-extern void wow64_glGetNamedBufferPointervEXT( TEB *teb, GLuint buffer, GLenum pname, PTR32 *params );
-extern void *wow64_glMapBuffer( TEB *teb, GLenum target, GLenum access );
-extern void *wow64_glMapBufferARB( TEB *teb, GLenum target, GLenum access );
-extern void *wow64_glMapBufferRange( TEB *teb, GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access );
-extern void *wow64_glMapNamedBuffer( TEB *teb, GLuint buffer, GLenum access );
-extern void *wow64_glMapNamedBufferEXT( TEB *teb, GLuint buffer, GLenum access );
-extern void *wow64_glMapNamedBufferRange( TEB *teb, GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access );
-extern void *wow64_glMapNamedBufferRangeEXT( TEB *teb, GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access );
-extern void wow64_glNamedBufferStorage( TEB *teb, GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags );
-extern void wow64_glNamedBufferStorageEXT( TEB *teb, GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags );
-extern GLboolean wow64_glUnmapBuffer( TEB *teb, GLenum target );
-extern GLboolean wow64_glUnmapBufferARB( TEB *teb, GLenum target );
-extern GLboolean wow64_glUnmapNamedBuffer( TEB *teb, GLuint buffer );
-extern GLboolean wow64_glUnmapNamedBufferEXT( TEB *teb, GLuint buffer );
+extern void wow64_glBufferStorage( TEB *teb, GLenum target, GLsizeiptr size, const void *data, GLbitfield flags, PFN_glBufferStorage func );
+extern void wow64_glDeleteBuffers( TEB *teb, GLsizei n, const GLuint *buffers, PFN_glDeleteBuffers func );
+extern void wow64_glFlushMappedBufferRange( TEB *teb, GLenum target, GLintptr offset, GLsizeiptr length, PFN_glFlushMappedBufferRange func );
+extern void wow64_glFlushMappedNamedBufferRange( TEB *teb, GLuint buffer, GLintptr offset, GLsizeiptr length, PFN_glFlushMappedNamedBufferRange func );
+extern void wow64_glGetBufferPointerv( TEB *teb, GLenum target, GLenum pname, PTR32 *params, PFN_glGetBufferPointerv func );
+extern void wow64_glGetNamedBufferPointerv( TEB *teb, GLuint buffer, GLenum pname, PTR32 *params, PFN_glGetNamedBufferPointerv func );
+extern void *wow64_glMapBuffer( TEB *teb, GLenum target, GLenum access, PFN_glMapBuffer func );
+extern void *wow64_glMapBufferRange( TEB *teb, GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, PFN_glMapBufferRange func );
+extern void *wow64_glMapNamedBuffer( TEB *teb, GLuint buffer, GLenum access, PFN_glMapNamedBuffer func );
+extern void *wow64_glMapNamedBufferRange( TEB *teb, GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access, PFN_glMapNamedBufferRange func );
+extern void wow64_glNamedBufferStorage( TEB *teb, GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags, PFN_glNamedBufferStorage func );
+extern GLboolean wow64_glUnmapBuffer( TEB *teb, GLenum target, PFN_glUnmapBuffer func );
+extern GLboolean wow64_glUnmapNamedBuffer( TEB *teb, GLuint buffer, PFN_glUnmapNamedBuffer func );
 #endif
diff --git a/dlls/opengl32/unix_wgl.c b/dlls/opengl32/unix_wgl.c
index 00dfd96a5514..e53862905381 100644
--- a/dlls/opengl32/unix_wgl.c
+++ b/dlls/opengl32/unix_wgl.c
@@ -130,15 +130,11 @@ struct context
     HGLRC share;                   /* context to be shared with */
     int *attribs;                  /* creation attributes */
     DWORD tid;                     /* thread that the context is current in */
-    int major_version;             /* major GL version */
-    int minor_version;             /* minor GL version */
     UINT64 debug_callback;         /* client pointer */
     UINT64 debug_user;             /* client pointer */
     GLubyte *extensions;           /* extension string */
     char *wow64_version;           /* wow64 GL version override */
     struct buffers *buffers;       /* wow64 buffers map */
-    const char **extension_array;  /* array of supported extensions */
-    size_t extension_count;        /* size of supported extensions */
     BOOL use_pinned_memory;        /* use GL_AMD_pinned_memory to emulate persistent maps */
 
     /* semi-stub state tracker for wglCopyContext */
@@ -195,6 +191,7 @@ static ULONG_PTR zero_bits;
 static const struct vulkan_funcs *vk_funcs;
 static VkInstance vk_instance;
 static PFN_vkDestroyInstance p_vkDestroyInstance;
+static BOOLEAN enabled_extensions[GL_EXTENSION_COUNT];
 
 static int vk_device_cmp( const void *key, const struct rb_entry *entry )
 {
@@ -480,25 +477,40 @@ static int *memdup_attribs( const int *attribs )
     return copy;
 }
 
-/* check if the extension is present in the list */
-static BOOL has_extension( const char *list, const char *ext, size_t len )
+struct extension_entry
 {
-    while (list)
-    {
-        while (*list == ' ') list++;
-        if (!strncmp( list, ext, len ) && (!list[len] || list[len] == ' ')) return TRUE;
-        list = strchr( list, ' ' );
-    }
-    return FALSE;
-}
+    const char *name;
+    size_t len;
+};
 
-static const char *legacy_extensions[] =
+#define USE_GL_EXT(x) [x] = { .name = #x, .len = sizeof(#x) - 1 },
+static const struct extension_entry all_extensions[] = { ALL_GL_EXTS ALL_WGL_EXTS };
+#undef USE_GL_EXT
+
+static int extension_entry_cmp( const void *a, const void *b )
 {
-    "WGL_EXT_extensions_string",
-    "WGL_EXT_swap_control",
-    NULL,
+    const struct extension_entry *entry_a = a, *entry_b = b;
+    size_t len = max( entry_a->len, entry_b->len );
+    return strncmp( entry_a->name, entry_b->name, len );
 };
 
+static enum opengl_extension parse_extension( const char *ext, size_t len )
+{
+    const struct extension_entry entry = { .name = ext, .len = len }, *found;
+
+    if ((found = bsearch( &entry, all_extensions, ARRAY_SIZE(all_extensions), sizeof(entry), extension_entry_cmp )))
+        return found - all_extensions;
+
+    /* Map host extensions */
+    if (len == ARRAYSIZE("GL_EXT_memory_object_fd") - 1 && !memcmp( ext, "GL_EXT_memory_object_fd", len ))
+        return GL_EXT_memory_object_win32;
+    if (len == ARRAYSIZE("GL_EXT_semaphore_fd") - 1 && !memcmp( ext, "GL_EXT_semaphore_fd", len ))
+        return GL_EXT_semaphore_win32;
+
+    WARN( "Extension %s unknown\n", debugstr_an(ext, len) );
+    return GL_EXTENSION_COUNT;
+}
+
 static const char *parse_gl_version( const char *gl_version, int *major, int *minor )
 {
     const char *ptr = gl_version;
@@ -669,114 +681,51 @@ static char *query_opengl_option( const char *name )
     return str;
 }
 
-static int string_array_cmp( const void *p1, const void *p2 )
+static size_t parse_extensions( const char *name, enum opengl_extension extensions[GL_EXTENSION_COUNT] )
 {
-    const char *const *s1 = p1;
-    const char *const *s2 = p2;
-    return strcmp( *s1, *s2 );
-}
+    size_t count = 0;
 
-/* Check if a GL extension is supported */
-static BOOL is_extension_supported( struct context *ctx, const char *extension )
-{
-    return bsearch( &extension, ctx->extension_array, ctx->extension_count,
-                    sizeof(ctx->extension_array[0]), string_array_cmp ) != NULL;
-}
+    while (*name)
+    {
+        const char *end = name + 1;
+        while (*end && *end != ' ') end++;
+        if ((extensions[count] = parse_extension( name, end - name )) != GL_EXTENSION_COUNT) count++;
+        name = end;
+        if (*name == ' ') name++;
+    }
 
-static char *append_extension( char *ptr, const char *name )
-{
-    size_t size = strlen( name );
-    memcpy( ptr, name, size );
-    ptr += size;
-    *ptr++ = ' ';
-    return ptr;
+    return count;
 }
 
 /* build the extension string by filtering out the disabled extensions */
-static GLubyte *filter_extensions( struct context *ctx, const char *extensions, const struct opengl_funcs *funcs )
+static GLubyte *filter_extensions( struct context *ctx, const char *str, const struct opengl_funcs *funcs )
 {
-    const char *end, **extra;
-    size_t size;
-    char *p, *str;
-
-    size = strlen( extensions ) + 2;
-    if (funcs->p_glImportMemoryWin32HandleEXT) size += strlen( "GL_EXT_memory_object_win32" ) + 1;
-    if (funcs->p_glImportSemaphoreWin32HandleEXT) size += strlen( "GL_EXT_semaphore_win32" ) + 1;
-    for (extra = legacy_extensions; *extra; extra++) size += strlen( *extra ) + 1;
-    if (!(p = str = malloc( size ))) return NULL;
+    struct opengl_client_context *client = opengl_client_context_from_client( ctx->base.client_context );
+    enum opengl_extension extensions[GL_EXTENSION_COUNT];
+    size_t count, i, size = 1;
+    char *ret, *p;
 
-    TRACE( "GL_EXTENSIONS:\n" );
+    if (!(count = parse_extensions( str, extensions ))) return NULL;
+    extensions[count++] = WGL_EXT_extensions_string;
+    extensions[count++] = WGL_EXT_swap_control;
 
-    for (;;)
+    for (i = 0; i < count; i++)
     {
-        while (*extensions == ' ') extensions++;
-        if (!*extensions) break;
-
-        if (!(end = strchr( extensions, ' ' ))) end = extensions + strlen( extensions );
-        memcpy( p, extensions, end - extensions );
-        p[end - extensions] = 0;
-
-        if (is_extension_supported( ctx, p ))
-        {
-            TRACE( "++ %s\n", p );
-            p += end - extensions;
-            *p++ = ' ';
-        }
-        else
-        {
-            TRACE( "-- %s (disabled in context)\n", p );
-        }
-        extensions = end;
+        if (!client->extensions[extensions[i]]) continue;
+        size += all_extensions[extensions[i]].len + 1;
     }
 
-    if (funcs->p_glImportMemoryWin32HandleEXT) p = append_extension( p, "GL_EXT_memory_object_win32" );
-    if (funcs->p_glImportSemaphoreWin32HandleEXT) p = append_extension( p, "GL_EXT_semaphore_win32" );
-    for (extra = legacy_extensions; *extra; extra++) p = append_extension( p, *extra );
+    if (!(p = ret = malloc( size ))) return NULL;
 
-    if (p != str) --p;
-    *p = 0;
-    return (GLubyte *)str;
-}
-
-/* Check if any GL extension from the list is supported */
-static BOOL is_any_extension_supported( struct context *ctx, const char *extension )
-{
-    size_t len;
-
-    /* We use the GetProcAddress function from the display driver to retrieve function pointers
-     * for OpenGL and WGL extensions. In case of winex11.drv the OpenGL extension lookup is done
-     * using glXGetProcAddress. This function is quite unreliable in the sense that its specs don't
-     * require the function to return NULL when an extension isn't found. For this reason we check
-     * if the OpenGL extension required for the function we are looking up is supported. */
-
-    while ((len = strlen( extension )))
+    for (i = 0; i < count; i++)
     {
-        TRACE( "Checking for extension '%s'\n", extension );
-
-        /* Check if the extension is part of the GL extension string to see if it is supported. */
-        if (is_extension_supported( ctx, extension )) return TRUE;
-
-        /* In general an OpenGL function starts as an ARB/EXT extension and at some stage
-         * it becomes part of the core OpenGL library and can be reached without the ARB/EXT
-         * suffix as well. In the extension table, these functions contain GL_VERSION_major_minor.
-         * Check if we are searching for a core GL function */
-        if (!strncmp( extension, "GL_VERSION_", 11 ))
-        {
-            int major = extension[11] - '0'; /* Move past 'GL_VERSION_' */
-            int minor = extension[13] - '0';
-
-            /* Compare the major/minor version numbers of the native OpenGL library and what is required by the function.
-             * The gl_version string is guaranteed to have at least a major/minor and sometimes it has a release number as well. */
-            if (ctx->major_version > major || (ctx->major_version == major && ctx->minor_version >= minor)) return TRUE;
-
-            WARN( "The function requires OpenGL version '%d.%d' while your drivers only provide '%d.%d'\n",
-                  major, minor, ctx->major_version, ctx->minor_version );
-        }
-
-        extension += len + 1;
+        if (!client->extensions[extensions[i]]) continue;
+        memcpy( p, all_extensions[extensions[i]].name, all_extensions[extensions[i]].len );
+        p += all_extensions[extensions[i]].len;
+        *p++ = ' ';
     }
 
-    return FALSE;
+    return (GLubyte *)ret;
 }
 
 static void set_gl_error( TEB *teb, GLenum error )
@@ -838,15 +787,6 @@ static BOOL get_integer( TEB *teb, GLenum pname, GLint *data )
 
     switch (pname)
     {
-    case GL_MAJOR_VERSION:
-        *data = ctx->major_version;
-        return TRUE;
-    case GL_MINOR_VERSION:
-        *data = ctx->minor_version;
-        return TRUE;
-    case GL_NUM_EXTENSIONS:
-        *data = ctx->extension_count;
-        return TRUE;
     case GL_DRAW_FRAMEBUFFER_BINDING:
         if (!draw->draw_fbo) break;
         *data = ctx->draw_fbo;
@@ -863,7 +803,7 @@ static BOOL get_integer( TEB *teb, GLenum pname, GLint *data )
     return get_default_fbo_integer( ctx, draw, read, pname, data );
 }
 
-void wrap_glGetUnsignedBytevEXT( TEB *teb, GLenum pname, GLubyte *data )
+void wrap_glGetUnsignedBytevEXT( TEB *teb, GLenum pname, GLubyte *data, PFN_glGetUnsignedBytevEXT p_glGetUnsignedBytevEXT )
 {
     const struct opengl_funcs *funcs = teb->glTable;
 
@@ -875,15 +815,15 @@ void wrap_glGetUnsignedBytevEXT( TEB *teb, GLenum pname, GLubyte *data )
         return;
     }
 
-    return funcs->p_glGetUnsignedBytevEXT( pname, data );
+    return p_glGetUnsignedBytevEXT( pname, data );
 }
 
-const GLubyte *wrap_glGetString( TEB *teb, GLenum name )
+const GLubyte *wrap_glGetString( TEB *teb, GLenum name, PFN_glGetString p_glGetString )
 {
     const struct opengl_funcs *funcs = teb->glTable;
     const GLubyte *ret;
 
-    if ((ret = funcs->p_glGetString( name )))
+    if ((ret = p_glGetString( name )))
     {
         if (name == GL_VENDOR && funcs->p_wglQueryCurrentRendererStringWINE)
         {
@@ -911,80 +851,6 @@ const GLubyte *wrap_glGetString( TEB *teb, GLenum name )
     return ret;
 }
 
-const GLubyte *wrap_glGetStringi( TEB *teb, GLenum name, GLuint index )
-{
-    const struct opengl_funcs *funcs = teb->glTable;
-
-    if (!funcs->p_glGetStringi)
-    {
-        void **func_ptr = (void **)&funcs->p_glGetStringi;
-        *func_ptr = funcs->p_wglGetProcAddress( "glGetStringi" );
-    }
-
-    if (name == GL_EXTENSIONS)
-    {
-        struct context *ctx = get_current_context( teb, NULL, NULL );
-        if (index < ctx->extension_count) return (const GLubyte *)ctx->extension_array[index];
-        index = -1;
-    }
-
-    return funcs->p_glGetStringi( name, index );
-}
-
-static int registry_entry_cmp( const void *a, const void *b )
-{
-    const struct registry_entry *entry_a = a, *entry_b = b;
-    return strcmp( entry_a->name, entry_b->name );
-}
-
-PROC wrap_wglGetProcAddress( TEB *teb, LPCSTR name )
-{
-    const struct registry_entry entry = {.name = name}, *found;
-    struct opengl_funcs *funcs = teb->glTable;
-    const void **func_ptr;
-    struct context *ctx;
-
-    /* Without an active context opengl32 doesn't know to what
-     * driver it has to dispatch wglGetProcAddress.
-     */
-    if (!(ctx = get_current_context( teb, NULL, NULL )))
-    {
-        WARN( "No active WGL context found\n" );
-        return (void *)-1;
-    }
-
-    if (!(found = bsearch( &entry, extension_registry, extension_registry_size, sizeof(entry), registry_entry_cmp )))
-    {
-        WARN( "Function %s unknown\n", name );
-        return (void *)-1;
-    }
-
-    func_ptr = (const void **)((char *)funcs + found->offset);
-    if (!*func_ptr)
-    {
-        void *driver_func = funcs->p_wglGetProcAddress( name );
-
-        if (!is_any_extension_supported( ctx, found->extension ))
-        {
-            WARN( "Extension %s required for %s not supported\n", found->extension, name );
-            return (void *)-1;
-        }
-
-        if (driver_func == NULL)
-        {
-            WARN( "Function %s not supported by driver\n", name );
-            return (void *)-1;
-        }
-
-        *func_ptr = driver_func;
-    }
-
-    /* Return the index into the extension registry instead of a useless
-     * function pointer, PE side will returns its own function pointers.
-     */
-    return (void *)(UINT_PTR)(found - extension_registry);
-}
-
 BOOL wrap_wglCopyContext( TEB *teb, HGLRC client_src, HGLRC client_dst, UINT mask )
 {
     struct context *src, *dst;
@@ -995,6 +861,7 @@ BOOL wrap_wglCopyContext( TEB *teb, HGLRC client_src, HGLRC client_dst, UINT mas
 
 static BOOL initialize_vk_device( TEB *teb, struct context *ctx )
 {
+    struct opengl_client_context *client = opengl_client_context_from_client( ctx->base.client_context );
     struct opengl_funcs *funcs = teb->glTable;
     VkPhysicalDevice *vk_physical_devices = NULL;
     struct vk_device *vk_device = NULL;
@@ -1008,9 +875,9 @@ static BOOL initialize_vk_device( TEB *teb, struct context *ctx )
     static PFN_vkGetPhysicalDeviceProperties2KHR p_vkGetPhysicalDeviceProperties2KHR;
 
     if (ctx->buffers->vk_device) return TRUE; /* already initialized */
-    if (!is_extension_supported( ctx, "GL_EXT_memory_object_fd" ))
+    if (!client->extensions[GL_EXT_memory_object_win32] )
     {
-        TRACE( "GL_EXT_memory_object_fd is not supported\n" );
+        TRACE( "GL_EXT_memory_object_win32 is not supported\n" );
         return FALSE;
     }
 
@@ -1055,15 +922,6 @@ static BOOL initialize_vk_device( TEB *teb, struct context *ctx )
     }
     if (!vk_instance) return FALSE;
 
-#define GET_GL_FUNC(name) if (!funcs->p_##name) funcs->p_##name = (void *)funcs->p_wglGetProcAddress( #name )
-    GET_GL_FUNC( glBufferStorageMemEXT );
-    GET_GL_FUNC( glCreateMemoryObjectsEXT );
-    GET_GL_FUNC( glDeleteMemoryObjectsEXT );
-    GET_GL_FUNC( glGetUnsignedBytei_vEXT );
-    GET_GL_FUNC( glImportMemoryFdEXT );
-    GET_GL_FUNC( glNamedBufferStorageMemEXT );
-#undef GET_GL_FUNC
-
     funcs->p_glGetIntegerv( GL_NUM_DEVICE_UUIDS_EXT, &uuid_count );
     for (i = 0; i < uuid_count; i++)
     {
@@ -1182,15 +1040,41 @@ static BOOL initialize_vk_device( TEB *teb, struct context *ctx )
     return FALSE;
 }
 
+static void init_enabled_extensions(void)
+{
+    enum opengl_extension parsed_extensions[GL_EXTENSION_COUNT];
+    char *enabled, *disabled;
+    size_t count, i;
+
+    if ((enabled = query_opengl_option( "EnabledExtensions" )))
+    {
+        count = parse_extensions( enabled, parsed_extensions );
+        for (i = 0; i < count; i++) enabled_extensions[parsed_extensions[i]] = TRUE;
+    }
+    else
+    {
+        memset( enabled_extensions, TRUE, sizeof(enabled_extensions) );
+    }
+
+    if ((disabled = query_opengl_option( "DisabledExtensions" )))
+    {
+        count = parse_extensions( disabled, parsed_extensions );
+        for (i = 0; i < count; i++) enabled_extensions[parsed_extensions[i]] = FALSE;
+    }
+
+    free( enabled );
+    free( disabled );
+}
+
 static void make_context_current( TEB *teb, const struct opengl_funcs *funcs, HDC draw_hdc, HDC read_hdc,
                                   HGLRC client_context, struct context *ctx )
 {
+    struct opengl_client_context *client = opengl_client_context_from_client( ctx->base.client_context );
     DWORD tid = HandleToULong(teb->ClientId.UniqueThread);
-    size_t size = ARRAYSIZE(legacy_extensions) - 1, count = 0;
-    const char *version, *rest = "", **extensions;
-    int i, j;
+    const char *version, *rest = "";
+    size_t count = 0, i;
 
-    static const char *disabled, *enabled;
+    static pthread_once_t once = PTHREAD_ONCE_INIT;
 
     ctx->tid = tid;
     teb->glReserved1[0] = draw_hdc;
@@ -1198,103 +1082,65 @@ static void make_context_current( TEB *teb, const struct opengl_funcs *funcs, HD
     teb->glTable = (void *)funcs;
     pop_default_fbo( teb );
 
-    if (ctx->major_version) return; /* already synced */
+    if (client->major_version) return; /* already synced */
 
     version = (const char *)funcs->p_glGetString( GL_VERSION );
-    if (version) rest = parse_gl_version( version, &ctx->major_version, &ctx->minor_version );
-    if (!ctx->major_version) ctx->major_version = 1;
-    TRACE( "context %p version %d.%d\n", ctx, ctx->major_version, ctx->minor_version );
+    if (version) rest = parse_gl_version( version, &client->major_version, &client->minor_version );
+    if (!client->major_version) client->major_version = 1;
+    TRACE( "context %p version %d.%d\n", ctx, client->major_version, client->minor_version );
 
-    if (funcs->p_glImportMemoryWin32HandleEXT) size++;
-    if (funcs->p_glImportSemaphoreWin32HandleEXT) size++;
+    funcs->p_init_extensions( client->extensions );
 
-    if (ctx->major_version >= 3)
+    if (client->major_version >= 3)
     {
         GLint extensions_count;
-
-        if (!funcs->p_glGetStringi)
+        funcs->p_glGetIntegerv( GL_NUM_EXTENSIONS, &extensions_count );
+        for (i = 0; i < extensions_count; i++)
         {
-            void **func_ptr = (void **)&funcs->p_glGetStringi;
-            *func_ptr = funcs->p_wglGetProcAddress( "glGetStringi" );
+            const char *name = (const char *)funcs->p_glGetStringi( GL_EXTENSIONS, i );
+            enum opengl_extension ext = parse_extension( name, strlen( name ) );
+            if (ext != GL_EXTENSION_COUNT) client->extensions[ext] = TRUE;
         }
-
-        funcs->p_glGetIntegerv( GL_NUM_EXTENSIONS, &extensions_count );
-        size += extensions_count;
-        if (!(extensions = malloc( size * sizeof(*extensions) ))) return;
-        for (i = 0; i < extensions_count; i++) extensions[count++] = (const char *)funcs->p_glGetStringi( GL_EXTENSIONS, i );
     }
     else
     {
-        const char *str = (const char *)funcs->p_glGetString( GL_EXTENSIONS );
-        size_t len = strlen( str );
-        const char *p;
-        char *ext;
-        if (!str) str = "";
-        if ((len = strlen( str )) && str[len - 1] == ' ') len--;
-        if (*str) size++;
-        for (p = str; p < str + len; p++) if (*p == ' ') size++;
-        if (!(extensions = malloc( size * sizeof(*extensions) + len + 1 ))) return;
-        ext = (char *)&extensions[size];
-        memcpy( ext, str, len );
-        ext[len] = 0;
-        if (*ext) extensions[count++] = ext;
-        while (*ext)
-        {
-            if (*ext == ' ')
-            {
-                *ext = 0;
-                extensions[count++] = ext + 1;
-            }
-            ext++;
-        }
+        enum opengl_extension extensions[GL_EXTENSION_COUNT];
+        size_t extension_count = parse_extensions( (const char *)funcs->p_glGetString( GL_EXTENSIONS ), extensions);
+        for (i = 0; i < extension_count; i++) client->extensions[i] = TRUE;
     }
 
-    if (!disabled && !(disabled = query_opengl_option( "DisabledExtensions" ))) disabled = "";
-    if (!enabled && !(enabled = query_opengl_option( "EnabledExtensions" ))) enabled = "";
-    if (*enabled || *disabled)
+    pthread_once( &once, init_enabled_extensions );
+
+    for (i = 0; i < WGL_FIRST_EXTENSION; i++)
     {
-        for (i = 0, j = 0; i < count; i++)
-        {
-            size_t len = strlen( extensions[i] );
-            if (!has_extension( disabled, extensions[i], len ) && (!*enabled || has_extension( enabled, extensions[i], len )))
-                extensions[j++] = extensions[i];
-            else
-                TRACE( "-- %s (disabled by config)\n", extensions[i] );
-        }
-        count = j;
+        if (enabled_extensions[i] || !client->extensions[i]) continue;
+        client->extensions[i] = FALSE;
+        TRACE( "-- %s (disabled by config)\n", all_extensions[i].name );
     }
 
-    if (funcs->p_glImportMemoryWin32HandleEXT) extensions[count++] = "GL_EXT_memory_object_win32";
-    if (funcs->p_glImportSemaphoreWin32HandleEXT) extensions[count++] = "GL_EXT_semaphore_win32";
-    for (i = 0; legacy_extensions[i]; i++) extensions[count++] = legacy_extensions[i];
-    qsort( extensions, count, sizeof(*extensions), string_array_cmp );
-    ctx->extension_array = extensions;
-    ctx->extension_count = count;
-
     if (is_win64 && ctx->buffers && !initialize_vk_device( teb, ctx )
-        && !(ctx->use_pinned_memory = is_extension_supported( ctx, "GL_AMD_pinned_memory" )))
+        && !(ctx->use_pinned_memory = client->extensions[GL_AMD_pinned_memory]))
     {
-        if (ctx->major_version > 4 || (ctx->major_version == 4 && ctx->minor_version > 3))
+        if (client->major_version > 4 || (client->major_version == 4 && client->minor_version > 3))
         {
-            FIXME( "GL version %d.%d is not supported on wow64, using 4.3\n", ctx->major_version, ctx->minor_version );
-            ctx->major_version = 4;
-            ctx->minor_version = 3;
+            FIXME( "GL version %d.%d is not supported on wow64, using 4.3\n", client->major_version, client->minor_version );
+            client->major_version = 4;
+            client->minor_version = 3;
             asprintf( &ctx->wow64_version, "4.3%s", rest );
         }
-        for (i = 0, j = 0; i < count; i++)
+        if (client->extensions[GL_ARB_buffer_storage])
         {
-            const char *ext = extensions[i];
-            if (!strcmp( ext, "GL_ARB_buffer_storage" ) || !strcmp( ext, "GL_ARB_buffer_storage" ))
-            {
-                FIXME( "Disabling %s extension on wow64\n", ext );
-                continue;
-            }
-            extensions[j++] = ext;
+            FIXME( "Disabling has_GL_ARB_buffer_storage extension on wow64\n" );
+            client->extensions[GL_ARB_buffer_storage] = FALSE;
         }
-        ctx->extension_count = j;
     }
 
-    if (TRACE_ON(opengl)) for (i = 0; i < count; i++) TRACE( "++ %s\n", extensions[i] );
+    for (i = 0; i < WGL_FIRST_EXTENSION; i++) if (client->extensions[i]) client->extension_array[count++] = i;
+    if (client->extensions[WGL_EXT_extensions_string]) client->extension_array[count++] = WGL_EXT_extensions_string;
+    if (client->extensions[WGL_EXT_swap_control])      client->extension_array[count++] = WGL_EXT_swap_control;
+    client->extension_count = count;
+
+    if (TRACE_ON(opengl)) for (i = 0; i < count; i++) TRACE( "++ %s\n", all_extensions[client->extension_array[i]].name );
 }
 
 BOOL wrap_wglMakeCurrent( TEB *teb, HDC hdc, HGLRC client_context )
@@ -1334,7 +1180,6 @@ BOOL wrap_wglMakeCurrent( TEB *teb, HDC hdc, HGLRC client_context )
 static void free_context( struct context *ctx )
 {
     free( ctx->wow64_version );
-    free( ctx->extension_array );
     free( ctx->extensions );
     free( ctx->attribs );
     free( ctx );
@@ -1434,48 +1279,42 @@ static void flush_context( TEB *teb, void (*flush)(void) )
     }
 }
 
-void wrap_glFinish( TEB *teb )
+void wrap_glFinish( TEB *teb, PFN_glFinish p_glFinish )
 {
-    const struct opengl_funcs *funcs = teb->glTable;
     resolve_default_fbo( teb, FALSE );
-    flush_context( teb, funcs->p_glFinish );
+    flush_context( teb, p_glFinish );
 }
 
-void wrap_glFlush( TEB *teb )
+void wrap_glFlush( TEB *teb, PFN_glFlush p_glFlush )
 {
-    const struct opengl_funcs *funcs = teb->glTable;
     resolve_default_fbo( teb, FALSE );
-    flush_context( teb, funcs->p_glFlush );
+    flush_context( teb, p_glFlush );
 }
 
-void wrap_glClear( TEB *teb, GLbitfield mask )
+void wrap_glClear( TEB *teb, GLbitfield mask, PFN_glClear p_glClear )
 {
-    const struct opengl_funcs *funcs = teb->glTable;
     flush_context( teb, NULL );
-    funcs->p_glClear( mask );
+    p_glClear( mask );
     resolve_default_fbo( teb, FALSE );
 }
 
-void wrap_glDrawPixels( TEB *teb, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels )
+void wrap_glDrawPixels( TEB *teb, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels, PFN_glDrawPixels p_glDrawPixels )
 {
-    const struct opengl_funcs *funcs = teb->glTable;
     flush_context( teb, NULL );
-    funcs->p_glDrawPixels( width, height, format, type, pixels );
+    p_glDrawPixels( width, height, format, type, pixels );
     resolve_default_fbo( teb, FALSE );
 }
 
-void wrap_glReadPixels( TEB *teb, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels )
+void wrap_glReadPixels( TEB *teb, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels, PFN_glReadPixels p_glReadPixels )
 {
-    const struct opengl_funcs *funcs = teb->glTable;
     flush_context( teb, NULL );
-    funcs->p_glReadPixels( x, y, width, height, format, type, pixels );
+    p_glReadPixels( x, y, width, height, format, type, pixels );
 }
 
-void wrap_glViewport( TEB *teb, GLint x, GLint y, GLsizei width, GLsizei height )
+void wrap_glViewport( TEB *teb, GLint x, GLint y, GLsizei width, GLsizei height, PFN_glViewport p_glViewport )
 {
-    const struct opengl_funcs *funcs = teb->glTable;
     flush_context( teb, NULL );
-    funcs->p_glViewport( x, y, width, height );
+    p_glViewport( x, y, width, height );
     resolve_default_fbo( teb, FALSE );
 }
 
@@ -1582,7 +1421,6 @@ BOOL wrap_wglMakeContextCurrentARB( TEB *teb, HDC draw_hdc, HDC read_hdc, HGLRC
             return FALSE;
         }
 
-        if (!funcs->p_wglMakeContextCurrentARB) return FALSE;
         if (!funcs->p_wglMakeContextCurrentARB( draw_hdc, read_hdc, client_context )) return FALSE;
         if (prev) prev->tid = 0;
         make_context_current( teb, funcs, draw_hdc, read_hdc, client_context, ctx );
@@ -1597,6 +1435,13 @@ BOOL wrap_wglMakeContextCurrentARB( TEB *teb, HDC draw_hdc, HDC read_hdc, HGLRC
     return TRUE;
 }
 
+HPBUFFERARB wrap_wglCreatePbufferARB( TEB *teb, HDC hdc, int format, int width, int height, const int *attribs, HPBUFFERARB client_pbuffer )
+{
+    const struct opengl_funcs *funcs = get_dc_funcs( hdc );
+    if (!funcs->p_pbuffer_create( hdc, format, width, height, attribs, client_pbuffer )) return 0;
+    return client_pbuffer;
+}
+
 static void gl_debug_message_callback( GLenum source, GLenum type, GLuint id, GLenum severity,
                                        GLsizei length, const GLchar *message, const void *user )
 {
@@ -1630,42 +1475,21 @@ static void gl_debug_message_callback( GLenum source, GLenum type, GLuint id, GL
     free( params );
 }
 
-void wrap_glDebugMessageCallback( TEB *teb, GLDEBUGPROC callback, const void *user )
+void wrap_glDebugMessageCallback( TEB *teb, GLDEBUGPROC callback, const void *user, PFN_glDebugMessageCallback p_glDebugMessageCallback )
 {
     struct context *ctx = get_current_context( teb, NULL, NULL );
-    const struct opengl_funcs *funcs = teb->glTable;
-
-    if (!funcs->p_glDebugMessageCallback) return;
-
     ctx->debug_callback = (UINT_PTR)callback;
     ctx->debug_user     = (UINT_PTR)user;
-    funcs->p_glDebugMessageCallback( gl_debug_message_callback, ctx );
+    p_glDebugMessageCallback( gl_debug_message_callback, ctx );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
 }
 
-void wrap_glDebugMessageCallbackAMD( TEB *teb, GLDEBUGPROCAMD callback, void *user )
+void wrap_glDebugMessageCallbackAMD( TEB *teb, GLDEBUGPROCAMD callback, void *user, PFN_glDebugMessageCallbackAMD p_glDebugMessageCallbackAMD )
 {
     struct context *ctx = get_current_context( teb, NULL, NULL );
-    const struct opengl_funcs *funcs = teb->glTable;
-
-    if (!funcs->p_glDebugMessageCallbackAMD) return;
-
     ctx->debug_callback = (UINT_PTR)callback;
     ctx->debug_user     = (UINT_PTR)user;
-    funcs->p_glDebugMessageCallbackAMD( gl_debug_message_callback, ctx );
-    set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
-}
-
-void wrap_glDebugMessageCallbackARB( TEB *teb, GLDEBUGPROCARB callback, const void *user )
-{
-    struct context *ctx = get_current_context( teb, NULL, NULL );
-    const struct opengl_funcs *funcs = teb->glTable;
-
-    if (!funcs->p_glDebugMessageCallbackARB) return;
-
-    ctx->debug_callback = (UINT_PTR)callback;
-    ctx->debug_user     = (UINT_PTR)user;
-    funcs->p_glDebugMessageCallbackARB( gl_debug_message_callback, ctx );
+    p_glDebugMessageCallbackAMD( gl_debug_message_callback, ctx );
     set_context_attribute( teb, -1 /* unsupported */, NULL, 0 );
 }
 
@@ -1797,9 +1621,8 @@ static GLenum *set_default_fbo_draw_buffers( struct context *ctx, struct opengl_
     return dst;
 }
 
-void wrap_glDrawBuffers( TEB *teb, GLsizei n, const GLenum *bufs )
+void wrap_glDrawBuffers( TEB *teb, GLsizei n, const GLenum *bufs, PFN_glDrawBuffers p_glDrawBuffers )
 {
-    struct opengl_funcs *funcs = teb->glTable;
     GLenum buffer[MAX_DRAW_BUFFERS];
     struct opengl_drawable *draw;
     struct context *ctx;
@@ -1807,12 +1630,11 @@ void wrap_glDrawBuffers( TEB *teb, GLsizei n, const GLenum *bufs )
     if ((ctx = get_current_context( teb, &draw, NULL )) && !ctx->draw_fbo)
         bufs = set_default_fbo_draw_buffers( ctx, draw, n, bufs, buffer );
 
-    funcs->p_glDrawBuffers( n, bufs );
+    p_glDrawBuffers( n, bufs );
 }
 
-void wrap_glFramebufferDrawBuffersEXT( TEB *teb, GLuint fbo, GLsizei n, const GLenum *bufs )
+void wrap_glFramebufferDrawBuffersEXT( TEB *teb, GLuint fbo, GLsizei n, const GLenum *bufs, PFN_glFramebufferDrawBuffersEXT p_glFramebufferDrawBuffersEXT )
 {
-    struct opengl_funcs *funcs = teb->glTable;
     GLenum buffer[MAX_DRAW_BUFFERS];
     struct opengl_drawable *draw;
     struct context *ctx;
@@ -1820,12 +1642,11 @@ void wrap_glFramebufferDrawBuffersEXT( TEB *teb, GLuint fbo, GLsizei n, const GL
     if ((ctx = get_current_context( teb, &draw, NULL )) && !fbo)
         bufs = set_default_fbo_draw_buffers( ctx, draw, n, bufs, buffer );
 
-    funcs->p_glFramebufferDrawBuffersEXT( fbo, n, bufs );
+    p_glFramebufferDrawBuffersEXT( fbo, n, bufs );
 }
 
-void wrap_glNamedFramebufferDrawBuffers( TEB *teb, GLuint fbo, GLsizei n, const GLenum *bufs )
+void wrap_glNamedFramebufferDrawBuffers( TEB *teb, GLuint fbo, GLsizei n, const GLenum *bufs, PFN_glNamedFramebufferDrawBuffers p_glNamedFramebufferDrawBuffers )
 {
-    struct opengl_funcs *funcs = teb->glTable;
     GLenum buffer[MAX_DRAW_BUFFERS];
     struct opengl_drawable *draw;
     struct context *ctx;
@@ -1833,7 +1654,7 @@ void wrap_glNamedFramebufferDrawBuffers( TEB *teb, GLuint fbo, GLsizei n, const
     if ((ctx = get_current_context( teb, &draw, NULL )) && !fbo)
         bufs = set_default_fbo_draw_buffers( ctx, draw, n, bufs, buffer );
 
-    funcs->p_glNamedFramebufferDrawBuffers( fbo, n, bufs );
+    p_glNamedFramebufferDrawBuffers( fbo, n, bufs );
 }
 
 static GLenum set_default_fbo_draw_buffer( struct context *ctx, struct opengl_drawable *draw, GLint src )
@@ -1849,40 +1670,37 @@ static GLenum set_default_fbo_draw_buffer( struct context *ctx, struct opengl_dr
     return dst;
 }
 
-void wrap_glDrawBuffer( TEB *teb, GLenum buf )
+void wrap_glDrawBuffer( TEB *teb, GLenum buf, PFN_glDrawBuffer p_glDrawBuffer )
 {
-    const struct opengl_funcs *funcs = teb->glTable;
     struct opengl_drawable *draw;
     struct context *ctx;
 
     if ((ctx = get_current_context( teb, &draw, NULL )) && !ctx->draw_fbo)
         buf = set_default_fbo_draw_buffer( ctx, draw, buf );
 
-    funcs->p_glDrawBuffer( buf );
+    p_glDrawBuffer( buf );
 }
 
-void wrap_glFramebufferDrawBufferEXT( TEB *teb, GLuint fbo, GLenum mode )
+void wrap_glFramebufferDrawBufferEXT( TEB *teb, GLuint fbo, GLenum mode, PFN_glFramebufferDrawBufferEXT p_glFramebufferDrawBufferEXT )
 {
-    const struct opengl_funcs *funcs = teb->glTable;
     struct opengl_drawable *draw;
     struct context *ctx;
 
     if ((ctx = get_current_context( teb, &draw, NULL )) && !fbo)
         mode = set_default_fbo_draw_buffer( ctx, draw, mode );
 
-    funcs->p_glFramebufferDrawBufferEXT( fbo, mode );
+    p_glFramebufferDrawBufferEXT( fbo, mode );
 }
 
-void wrap_glNamedFramebufferDrawBuffer( TEB *teb, GLuint fbo, GLenum buf )
+void wrap_glNamedFramebufferDrawBuffer( TEB *teb, GLuint fbo, GLenum buf, PFN_glNamedFramebufferDrawBuffer p_glNamedFramebufferDrawBuffer )
 {
-    const struct opengl_funcs *funcs = teb->glTable;
     struct opengl_drawable *draw;
     struct context *ctx;
 
     if ((ctx = get_current_context( teb, &draw, NULL )) && !fbo)
         buf = set_default_fbo_draw_buffer( ctx, draw, buf );
 
-    funcs->p_glNamedFramebufferDrawBuffer( fbo, buf );
+    p_glNamedFramebufferDrawBuffer( fbo, buf );
 }
 
 static GLenum set_default_fbo_read_buffer( struct context *ctx, struct opengl_drawable *read, GLint src )
@@ -1897,96 +1715,86 @@ static GLenum set_default_fbo_read_buffer( struct context *ctx, struct opengl_dr
     return dst;
 }
 
-void wrap_glReadBuffer( TEB *teb, GLenum src )
+void wrap_glReadBuffer( TEB *teb, GLenum src, PFN_glReadBuffer p_glReadBuffer )
 {
-    const struct opengl_funcs *funcs = teb->glTable;
     struct opengl_drawable *read;
     struct context *ctx;
 
     if ((ctx = get_current_context( teb, NULL, &read )) && !ctx->read_fbo)
         src = set_default_fbo_read_buffer( ctx, read, src );
 
-    funcs->p_glReadBuffer( src );
+    p_glReadBuffer( src );
 }
 
-void wrap_glFramebufferReadBufferEXT( TEB *teb, GLuint fbo, GLenum mode )
+void wrap_glFramebufferReadBufferEXT( TEB *teb, GLuint fbo, GLenum mode, PFN_glFramebufferReadBufferEXT p_glFramebufferReadBufferEXT )
 {
-    const struct opengl_funcs *funcs = teb->glTable;
     struct opengl_drawable *read;
     struct context *ctx;
 
     if ((ctx = get_current_context( teb, NULL, &read )) && !fbo)
         mode = set_default_fbo_read_buffer( ctx, read, mode );
 
-    funcs->p_glFramebufferReadBufferEXT( fbo, mode );
+    p_glFramebufferReadBufferEXT( fbo, mode );
 }
 
-void wrap_glNamedFramebufferReadBuffer( TEB *teb, GLuint fbo, GLenum src )
+void wrap_glNamedFramebufferReadBuffer( TEB *teb, GLuint fbo, GLenum src, PFN_glNamedFramebufferReadBuffer p_glNamedFramebufferReadBuffer )
 {
-    const struct opengl_funcs *funcs = teb->glTable;
     struct opengl_drawable *read;
     struct context *ctx;
 
     if ((ctx = get_current_context( teb, NULL, &read )) && !fbo)
         src = set_default_fbo_read_buffer( ctx, read, src );
 
-    funcs->p_glNamedFramebufferReadBuffer( fbo, src );
+    p_glNamedFramebufferReadBuffer( fbo, src );
 }
 
-void wrap_glGetIntegerv( TEB *teb, GLenum pname, GLint *data )
+void wrap_glGetIntegerv( TEB *teb, GLenum pname, GLint *data, PFN_glGetIntegerv p_glGetIntegerv )
 {
-    const struct opengl_funcs *funcs = teb->glTable;
     if (get_integer( teb, pname, data )) return;
-    else funcs->p_glGetIntegerv( pname, data );
+    else p_glGetIntegerv( pname, data );
 }
 
-void wrap_glGetBooleanv( TEB *teb, GLenum pname, GLboolean *data )
+void wrap_glGetBooleanv( TEB *teb, GLenum pname, GLboolean *data, PFN_glGetBooleanv p_glGetBooleanv )
 {
-    const struct opengl_funcs *funcs = teb->glTable;
     GLint value;
     if (get_integer( teb, pname, &value )) *data = !!value;
-    else funcs->p_glGetBooleanv( pname, data );
+    else p_glGetBooleanv( pname, data );
 }
 
-void wrap_glGetDoublev( TEB *teb, GLenum pname, GLdouble *data )
+void wrap_glGetDoublev( TEB *teb, GLenum pname, GLdouble *data, PFN_glGetDoublev p_glGetDoublev )
 {
-    const struct opengl_funcs *funcs = teb->glTable;
     GLint value;
     if (get_integer( teb, pname, &value )) *data = value;
-    else funcs->p_glGetDoublev( pname, data );
+    else p_glGetDoublev( pname, data );
 }
 
-void wrap_glGetFloatv( TEB *teb, GLenum pname, GLfloat *data )
+void wrap_glGetFloatv( TEB *teb, GLenum pname, GLfloat *data, PFN_glGetFloatv p_glGetFloatv )
 {
-    const struct opengl_funcs *funcs = teb->glTable;
     GLint value;
     if (get_integer( teb, pname, &value )) *data = value;
-    else funcs->p_glGetFloatv( pname, data );
+    else p_glGetFloatv( pname, data );
 }
 
-void wrap_glGetInteger64v( TEB *teb, GLenum pname, GLint64 *data )
+void wrap_glGetInteger64v( TEB *teb, GLenum pname, GLint64 *data, PFN_glGetInteger64v p_glGetInteger64v )
 {
-    const struct opengl_funcs *funcs = teb->glTable;
     GLint value;
     if (get_integer( teb, pname, &value )) *data = value;
-    else funcs->p_glGetInteger64v( pname, data );
+    else p_glGetInteger64v( pname, data );
 }
 
-void wrap_glGetFramebufferParameterivEXT( TEB *teb, GLuint fbo, GLenum pname, GLint *params )
+void wrap_glGetFramebufferParameteriv( TEB *teb, GLuint fbo, GLenum pname, GLint *params, PFN_glGetFramebufferParameteriv p_glGetFramebufferParameteriv )
 {
-    const struct opengl_funcs *funcs = teb->glTable;
     struct opengl_drawable *draw, *read;
     struct context *ctx;
 
     if ((ctx = get_current_context( teb, &draw, &read )) && !fbo && (fbo = draw->draw_fbo))
         if (get_default_fbo_integer( ctx, draw, read, pname, params )) return;
 
-    funcs->p_glGetFramebufferParameterivEXT( fbo, pname, params );
+    p_glGetFramebufferParameteriv( fbo, pname, params );
 }
 
-GLenum wrap_glGetError( TEB *teb )
+GLenum wrap_glGetError( TEB *teb, PFN_glGetError p_glGetError )
 {
-    const struct opengl_funcs *funcs = teb->glTable;
     struct opengl_client_context *client;
     GLenum error, wrapped;
     struct context *ctx;
@@ -1994,46 +1802,43 @@ GLenum wrap_glGetError( TEB *teb )
     if (!(ctx = get_current_context( teb, NULL, NULL ))) return GL_INVALID_OPERATION;
     if (!(client = opengl_client_context_from_client( ctx->base.client_context ))) return GL_INVALID_OPERATION;
 
-    error = funcs->p_glGetError();
+    error = p_glGetError();
     wrapped = client->last_error;
     client->last_error = GL_NO_ERROR;
     return wrapped ? wrapped : error;
 }
 
-GLsync wrap_glCreateSyncFromCLeventARB( TEB *teb, struct _cl_context *context, struct _cl_event *event, GLbitfield flags, GLsync client_sync )
+GLsync wrap_glCreateSyncFromCLeventARB( TEB *teb, struct _cl_context *context, struct _cl_event *event, GLbitfield flags, GLsync client_sync, PFN_glCreateSyncFromCLeventARB p_glCreateSyncFromCLeventARB )
 {
-    const struct opengl_funcs *funcs = teb->glTable;
     GLsync sync;
 
     FIXME( "stub!\n" );
 
-    if (!(sync = funcs->p_glCreateSyncFromCLeventARB( context, event, flags ))) return NULL;
+    if (!(sync = p_glCreateSyncFromCLeventARB( context, event, flags ))) return NULL;
     client_sync->unix_handle = (UINT_PTR)sync;
 
     return client_sync;
 }
 
-GLsync wrap_glFenceSync( TEB *teb, GLenum condition, GLbitfield flags, GLsync client_sync )
+GLsync wrap_glFenceSync( TEB *teb, GLenum condition, GLbitfield flags, GLsync client_sync, PFN_glFenceSync p_glFenceSync )
 {
-    const struct opengl_funcs *funcs = teb->glTable;
     GLsync sync;
 
     TRACE( "condition %#x, flags %#x, client_sync %p\n", condition, flags, client_sync );
 
-    if (!(sync = funcs->p_glFenceSync( condition, flags ))) return NULL;
+    if (!(sync = p_glFenceSync( condition, flags ))) return NULL;
     client_sync->unix_handle = (UINT_PTR)sync;
 
     return client_sync;
 }
 
-GLsync wrap_glImportSyncEXT( TEB *teb, GLenum external_sync_type, GLintptr external_sync, GLbitfield flags, GLsync client_sync )
+GLsync wrap_glImportSyncEXT( TEB *teb, GLenum external_sync_type, GLintptr external_sync, GLbitfield flags, GLsync client_sync, PFN_glImportSyncEXT p_glImportSyncEXT )
 {
-    const struct opengl_funcs *funcs = teb->glTable;
     GLsync sync;
 
     FIXME( "stub!\n" );
 
-    if (!(sync = funcs->p_glImportSyncEXT( external_sync_type, external_sync, flags ))) return NULL;
+    if (!(sync = p_glImportSyncEXT( external_sync_type, external_sync, flags ))) return NULL;
     client_sync->unix_handle = (UINT_PTR)sync;
 
     return client_sync;
@@ -2138,42 +1943,6 @@ NTSTATUS return_wow64_string( const void *str, PTR32 *wow64_str )
     return STATUS_BUFFER_TOO_SMALL;
 }
 
-static GLint get_buffer_param( TEB *teb, GLenum target, GLenum param )
-{
-    const struct opengl_funcs *funcs = teb->glTable;
-    typeof(*funcs->p_glGetBufferParameteriv) *func;
-    GLint size = 0;
-    if (!(func = funcs->p_glGetBufferParameteriv)) func = (void *)funcs->p_wglGetProcAddress( "glGetBufferParameteriv" );
-    if (func) func( target, param, &size );
-    return size;
-}
-
-static GLint get_named_buffer_param( TEB *teb, GLint buffer, GLenum param )
-{
-    const struct opengl_funcs *funcs = teb->glTable;
-    typeof(*funcs->p_glGetNamedBufferParameteriv) *func;
-    GLint size = 0;
-    if (!(func = funcs->p_glGetNamedBufferParameteriv)) func = (void *)funcs->p_wglGetProcAddress( "glGetNamedBufferParameteriv" );
-    if (func) func( buffer, param, &size );
-    return size;
-}
-
-static void unmap_buffer( TEB *teb, GLenum target )
-{
-    const struct opengl_funcs *funcs = teb->glTable;
-    typeof(*funcs->p_glUnmapBuffer) *func;
-    if (!(func = funcs->p_glUnmapBuffer)) func = (void *)funcs->p_wglGetProcAddress( "glUnmapBuffer" );
-    if (func) func( target );
-}
-
-static void unmap_named_buffer( TEB *teb, GLint buffer )
-{
-    const struct opengl_funcs *funcs = teb->glTable;
-    typeof(*funcs->p_glUnmapNamedBuffer) *func;
-    if (!(func = funcs->p_glUnmapNamedBuffer)) func = (void *)funcs->p_wglGetProcAddress( "glUnmapNamedBuffer" );
-    if (func) func( buffer );
-}
-
 static GLuint get_target_name( TEB *teb, GLenum target )
 {
     const struct opengl_funcs *funcs = teb->glTable;
@@ -2415,6 +2184,8 @@ static struct buffer *create_buffer_storage( TEB *teb, GLenum target, GLuint nam
 static void *wow64_map_buffer( TEB *teb, struct buffer *buffer, GLenum target, GLuint name, GLintptr offset,
                                size_t length, GLbitfield access, void *ptr )
 {
+    const struct opengl_funcs *funcs = teb->glTable;
+
     if (buffer && buffer->map_ptr)
     {
         set_gl_error( teb, GL_INVALID_OPERATION );
@@ -2465,10 +2236,14 @@ static void *wow64_map_buffer( TEB *teb, struct buffer *buffer, GLenum target, G
     if (!buffer)
     {
         struct context *ctx = get_current_context( teb, NULL, NULL );
+        GLint size;
+
+        if (name) funcs->p_glGetNamedBufferParameteriv( name, GL_BUFFER_SIZE, &size );
+        else funcs->p_glGetBufferParameteriv( target, GL_BUFFER_SIZE, &size );
 
         if (!(buffer = calloc( 1, sizeof(*buffer) ))) return NULL;
         buffer->name = name ? name : get_target_name( teb, target );
-        buffer->size = name ? get_named_buffer_param( teb, name, GL_BUFFER_SIZE ) : get_buffer_param( teb, target, GL_BUFFER_SIZE );
+        buffer->size = size;
         rb_put( &ctx->buffers->map, &buffer->name, &buffer->entry );
         TRACE( "allocated buffer %p for %u\n", buffer, buffer->name );
     }
@@ -2505,10 +2280,8 @@ static void *wow64_map_buffer( TEB *teb, struct buffer *buffer, GLenum target, G
     return buffer->map_ptr;
 
 unmap:
-    if (name)
-        unmap_named_buffer( teb, name );
-    else
-        unmap_buffer( teb, target );
+    if (name) funcs->p_glUnmapNamedBuffer( name );
+    else funcs->p_glUnmapBuffer( target );
     return 0;
 }
 
@@ -2525,7 +2298,7 @@ static GLbitfield map_range_flags_from_map_flags( GLenum flags )
     }
 }
 
-void wow64_glDeleteBuffers( TEB *teb, GLsizei n, const GLuint *buffers )
+void wow64_glDeleteBuffers( TEB *teb, GLsizei n, const GLuint *buffers, PFN_glDeleteBuffers p_glDeleteBuffers )
 {
     const struct opengl_funcs *funcs = teb->glTable;
     struct buffer *buffer;
@@ -2533,7 +2306,7 @@ void wow64_glDeleteBuffers( TEB *teb, GLsizei n, const GLuint *buffers )
 
     pthread_mutex_lock( &wgl_lock );
 
-    funcs->p_glDeleteBuffers( n, buffers );
+    p_glDeleteBuffers( n, buffers );
     for (i = 0; i < n; i++)
     {
         if ((buffer = invalidate_buffer_name( teb, buffers[i] ))) free_buffer( funcs, buffer );
@@ -2542,37 +2315,37 @@ void wow64_glDeleteBuffers( TEB *teb, GLsizei n, const GLuint *buffers )
     pthread_mutex_unlock( &wgl_lock );
 }
 
-void wow64_glBufferStorage( TEB *teb, GLenum target, GLsizeiptr size, const void *data, GLbitfield flags )
+void wow64_glBufferStorage( TEB *teb, GLenum target, GLsizeiptr size, const void *data,
+                            GLbitfield flags, PFN_glBufferStorage p_glBufferStorage )
 {
-    const struct opengl_funcs *funcs = teb->glTable;
     struct buffer *buffer = NULL;
 
     if (flags & GL_MAP_PERSISTENT_BIT)
         buffer = create_buffer_storage( teb, target, 0, size, data, flags );
 
-    if (!buffer) funcs->p_glBufferStorage( target, size, data, flags );
+    if (!buffer) p_glBufferStorage( target, size, data, flags );
 }
 
-void wow64_glNamedBufferStorage( TEB *teb, GLuint name, GLsizeiptr size, const void *data, GLbitfield flags )
+void wow64_glNamedBufferStorage( TEB *teb, GLuint name, GLsizeiptr size, const void *data,
+                                 GLbitfield flags, PFN_glNamedBufferStorage p_glNamedBufferStorage )
 {
-    const struct opengl_funcs *funcs = teb->glTable;
     struct buffer *buffer = NULL;
 
     if (flags & GL_MAP_PERSISTENT_BIT)
         buffer = create_buffer_storage( teb, 0, name, size, data, flags );
 
-    if (!buffer) funcs->p_glNamedBufferStorage( name, size, data, flags );
+    if (!buffer) p_glNamedBufferStorage( name, size, data, flags );
 }
 
-void wow64_glNamedBufferStorageEXT( TEB *teb, GLuint name, GLsizeiptr size, const void *data, GLbitfield flags )
+void wow64_glNamedBufferStorageEXT( TEB *teb, GLuint name, GLsizeiptr size, const void *data,
+                                    GLbitfield flags, PFN_glNamedBufferStorageEXT p_glNamedBufferStorageEXT )
 {
-    const struct opengl_funcs *funcs = teb->glTable;
     struct buffer *buffer = NULL;
 
     if (flags & GL_MAP_PERSISTENT_BIT)
         buffer = create_buffer_storage( teb, 0, name, size, data, flags );
 
-    if (!buffer) funcs->p_glNamedBufferStorageEXT( name, size, data, flags );
+    if (!buffer) p_glNamedBufferStorageEXT( name, size, data, flags );
 }
 
 static BOOL wow64_gl_get_buffer_pointer_v( TEB *teb, GLenum target, GLuint name, GLenum pname, PTR32 *wow_ptr )
@@ -2593,12 +2366,11 @@ static BOOL wow64_gl_get_buffer_pointer_v( TEB *teb, GLenum target, GLuint name,
     return ret;
 }
 
-void wow64_glGetBufferPointerv( TEB *teb, GLenum target, GLenum pname, PTR32 *params )
+void wow64_glGetBufferPointerv( TEB *teb, GLenum target, GLenum pname, PTR32 *params, PFN_glGetBufferPointerv p_glGetBufferPointerv )
 {
-    const struct opengl_funcs *funcs = teb->glTable;
     void *ptr;
     if (wow64_gl_get_buffer_pointer_v( teb, target, 0, pname, params )) return;
-    funcs->p_glGetBufferPointerv( target, pname, &ptr );
+    p_glGetBufferPointerv( target, pname, &ptr );
     *params = PtrToUlong(ptr);
 }
 
@@ -2611,12 +2383,12 @@ void wow64_glGetBufferPointervARB( TEB *teb, GLenum target, GLenum pname, PTR32
     *params = PtrToUlong(ptr);
 }
 
-void wow64_glGetNamedBufferPointerv( TEB *teb, GLuint buffer, GLenum pname, PTR32 *params )
+void wow64_glGetNamedBufferPointerv( TEB *teb, GLuint buffer, GLenum pname, PTR32 *params,
+                                     PFN_glGetNamedBufferPointerv p_glGetNamedBufferPointerv )
 {
-    const struct opengl_funcs *funcs = teb->glTable;
     void *ptr;
     if (buffer && wow64_gl_get_buffer_pointer_v( teb, 0, buffer, pname, params )) return;
-    funcs->p_glGetNamedBufferPointerv( buffer, pname, &ptr );
+    p_glGetNamedBufferPointerv( buffer, pname, &ptr );
     *params = PtrToUlong(ptr);
 }
 
@@ -2629,7 +2401,7 @@ void wow64_glGetNamedBufferPointervEXT( TEB *teb, GLuint buffer, GLenum pname, P
     *params = PtrToUlong(ptr);
 }
 
-static void *wow64_gl_map_buffer( TEB *teb, GLenum target, GLenum access, PFN_glMapBuffer gl_map_buffer64 )
+void *wow64_glMapBuffer( TEB *teb, GLenum target, GLenum access, PFN_glMapBuffer p_glMapBuffer )
 {
     GLbitfield range_access = map_range_flags_from_map_flags( access );
     struct buffer *buffer;
@@ -2637,39 +2409,27 @@ static void *wow64_gl_map_buffer( TEB *teb, GLenum target, GLenum access, PFN_gl
 
     pthread_mutex_lock( &wgl_lock );
     buffer = get_target_buffer( teb, target );
-    if (use_driver_buffer_map( buffer )) ptr = gl_map_buffer64( target, access );
+    if (use_driver_buffer_map( buffer )) ptr = p_glMapBuffer( target, access );
     ptr = wow64_map_buffer( teb, buffer, target, 0, 0, 0, range_access, ptr );
     pthread_mutex_unlock( &wgl_lock );
     return ptr;
 }
 
-void *wow64_glMapBuffer( TEB *teb, GLenum target, GLenum access )
+void *wow64_glMapBufferRange( TEB *teb, GLenum target, GLintptr offset, GLsizeiptr length,
+                              GLbitfield access, PFN_glMapBufferRange p_glMapBufferRange )
 {
-    const struct opengl_funcs *funcs = teb->glTable;
-    return wow64_gl_map_buffer( teb, target, access, funcs->p_glMapBuffer );
-}
-
-void *wow64_glMapBufferARB( TEB *teb, GLenum target, GLenum access )
-{
-    const struct opengl_funcs *funcs = teb->glTable;
-    return wow64_gl_map_buffer( teb, target, access, funcs->p_glMapBufferARB );
-}
-
-void *wow64_glMapBufferRange( TEB *teb, GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access )
-{
-    const struct opengl_funcs *funcs = teb->glTable;
     struct buffer *buffer;
     void *ptr = NULL;
 
     pthread_mutex_lock( &wgl_lock );
     buffer = get_target_buffer( teb, target );
-    if (use_driver_buffer_map( buffer )) ptr = funcs->p_glMapBufferRange( target, offset, length, access );
+    if (use_driver_buffer_map( buffer )) ptr = p_glMapBufferRange( target, offset, length, access );
     ptr = wow64_map_buffer( teb, buffer, target, 0, offset, length, access, ptr );
     pthread_mutex_unlock( &wgl_lock );
     return ptr;
 }
 
-static void *wow64_gl_map_named_buffer( TEB *teb, GLuint name, GLenum access, PFN_glMapNamedBuffer gl_map_named_buffer64 )
+void *wow64_glMapNamedBuffer( TEB *teb, GLuint name, GLenum access, PFN_glMapNamedBuffer p_glMapNamedBuffer )
 {
     GLbitfield range_access = map_range_flags_from_map_flags( access );
     struct buffer *buffer;
@@ -2677,50 +2437,26 @@ static void *wow64_gl_map_named_buffer( TEB *teb, GLuint name, GLenum access, PF
 
     pthread_mutex_lock( &wgl_lock );
     buffer = get_named_buffer( teb, name );
-    if (use_driver_buffer_map( buffer )) ptr = gl_map_named_buffer64( name, access );
+    if (use_driver_buffer_map( buffer )) ptr = p_glMapNamedBuffer( name, access );
     ptr = wow64_map_buffer( teb, buffer, 0, name, 0, 0, range_access, ptr );
     pthread_mutex_unlock( &wgl_lock );
     return ptr;
 }
 
-void *wow64_glMapNamedBuffer( TEB *teb, GLuint buffer, GLenum access )
-{
-    const struct opengl_funcs *funcs = teb->glTable;
-    return wow64_gl_map_named_buffer( teb, buffer, access, funcs->p_glMapNamedBuffer );
-}
-
-void *wow64_glMapNamedBufferEXT( TEB *teb, GLuint buffer, GLenum access )
-{
-    const struct opengl_funcs *funcs = teb->glTable;
-    return wow64_gl_map_named_buffer( teb, buffer, access, funcs->p_glMapNamedBufferEXT );
-}
-
-static void *wow64_gl_map_named_buffer_range( TEB *teb, GLuint name, GLintptr offset, GLsizeiptr length, GLbitfield access,
-                                              PFN_glMapNamedBufferRange gl_map_named_buffer_range64 )
+void *wow64_glMapNamedBufferRange( TEB *teb, GLuint name, GLintptr offset, GLsizeiptr length,
+                                   GLbitfield access, PFN_glMapNamedBufferRange p_glMapNamedBufferRange )
 {
     struct buffer *buffer;
     void *ptr = NULL;
 
     pthread_mutex_lock( &wgl_lock );
     buffer = get_named_buffer( teb, name );
-    if (use_driver_buffer_map( buffer )) ptr = gl_map_named_buffer_range64( name, offset, length, access );
+    if (use_driver_buffer_map( buffer )) ptr = p_glMapNamedBufferRange( name, offset, length, access );
     ptr = wow64_map_buffer( teb, buffer, 0, name, offset, length, access, ptr );
     pthread_mutex_unlock( &wgl_lock );
     return ptr;
 }
 
-void *wow64_glMapNamedBufferRange( TEB *teb, GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access )
-{
-    const struct opengl_funcs *funcs = teb->glTable;
-    return wow64_gl_map_named_buffer_range( teb, buffer, offset, length, access, funcs->p_glMapNamedBufferRange );
-}
-
-void *wow64_glMapNamedBufferRangeEXT( TEB *teb, GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access )
-{
-    const struct opengl_funcs *funcs = teb->glTable;
-    return wow64_gl_map_named_buffer_range( teb, buffer, offset, length, access, funcs->p_glMapNamedBufferRangeEXT );
-}
-
 static BOOL wow64_unmap_buffer( TEB *teb, struct buffer *buffer )
 {
     if (buffer->vk_memory)
@@ -2745,73 +2481,49 @@ static BOOL wow64_unmap_buffer( TEB *teb, struct buffer *buffer )
     return TRUE;
 }
 
-static GLboolean wow64_unmap_target_buffer( TEB *teb, GLenum target, PFN_glUnmapBuffer gl_unmap )
+GLboolean wow64_glUnmapBuffer( TEB *teb, GLenum target, PFN_glUnmapBuffer p_glUnmapBuffer )
 {
     struct buffer *buffer;
     GLboolean ret;
 
     pthread_mutex_lock( &wgl_lock );
     if ((buffer = get_target_buffer( teb, target ))) ret = wow64_unmap_buffer( teb, buffer );
-    if (use_driver_buffer_map( buffer )) ret = gl_unmap( target );
+    if (use_driver_buffer_map( buffer )) ret = p_glUnmapBuffer( target );
     pthread_mutex_unlock( &wgl_lock );
     return ret;
 }
 
-GLboolean wow64_glUnmapBuffer( TEB *teb, GLenum target )
-{
-    const struct opengl_funcs *funcs = teb->glTable;
-    return wow64_unmap_target_buffer( teb, target, funcs->p_glUnmapBuffer );
-}
-
-GLboolean wow64_glUnmapBufferARB( TEB *teb, GLenum target )
-{
-    const struct opengl_funcs *funcs = teb->glTable;
-    return wow64_unmap_target_buffer( teb, target, funcs->p_glUnmapBufferARB );
-}
-
-static GLboolean wow64_gl_unmap_named_buffer( TEB *teb, GLuint name, PFN_glUnmapBuffer gl_unmap )
+GLboolean wow64_glUnmapNamedBuffer( TEB *teb, GLuint name, PFN_glUnmapBuffer p_glUnmapNamedBuffer )
 {
     struct buffer *buffer;
     GLboolean ret;
 
     pthread_mutex_lock( &wgl_lock );
     if ((buffer = get_named_buffer( teb, name ))) ret = wow64_unmap_buffer( teb, buffer );
-    if (use_driver_buffer_map( buffer )) ret = gl_unmap( name );
+    if (use_driver_buffer_map( buffer )) ret = p_glUnmapNamedBuffer( name );
     pthread_mutex_unlock( &wgl_lock );
     return ret;
 }
 
-GLboolean wow64_glUnmapNamedBuffer( TEB *teb, GLuint buffer )
-{
-    const struct opengl_funcs *funcs = teb->glTable;
-    return wow64_gl_unmap_named_buffer( teb, buffer, funcs->p_glUnmapNamedBuffer );
-}
-
-GLboolean wow64_glUnmapNamedBufferEXT( TEB *teb, GLuint buffer )
+void wow64_glFlushMappedBufferRange( TEB *teb, GLenum target, GLintptr offset, GLsizeiptr length,
+                                     PFN_glFlushMappedBufferRange p_glFlushMappedBufferRange )
 {
-    const struct opengl_funcs *funcs = teb->glTable;
-    return wow64_gl_unmap_named_buffer( teb, buffer, funcs->p_glUnmapNamedBufferEXT );
-}
-
-void wow64_glFlushMappedBufferRange( TEB *teb, GLenum target, GLintptr offset, GLsizeiptr length )
-{
-    const struct opengl_funcs *funcs = teb->glTable;
     struct buffer *buffer;
 
     pthread_mutex_lock( &wgl_lock );
     if ((buffer = get_target_buffer( teb, target ))) flush_buffer( teb, buffer, offset, length );
-    if (use_driver_buffer_map( buffer )) funcs->p_glFlushMappedBufferRange( target, offset, length );
+    if (use_driver_buffer_map( buffer )) p_glFlushMappedBufferRange( target, offset, length );
     pthread_mutex_unlock( &wgl_lock );
 }
 
-void wow64_glFlushMappedNamedBufferRange( TEB *teb, GLuint name, GLintptr offset, GLsizeiptr length )
+void wow64_glFlushMappedNamedBufferRange( TEB *teb, GLuint name, GLintptr offset, GLsizeiptr length,
+                                          PFN_glFlushMappedNamedBufferRange p_glFlushMappedNamedBufferRange )
 {
-    const struct opengl_funcs *funcs = teb->glTable;
     struct buffer *buffer;
 
     pthread_mutex_lock( &wgl_lock );
     if ((buffer = get_named_buffer( teb, name ))) flush_buffer( teb, buffer, offset, length );
-    if (use_driver_buffer_map( buffer )) funcs->p_glFlushMappedNamedBufferRange( name, offset, length );
+    if (use_driver_buffer_map( buffer )) p_glFlushMappedNamedBufferRange( name, offset, length );
     pthread_mutex_unlock( &wgl_lock );
 }
 
diff --git a/dlls/opengl32/unixlib.h b/dlls/opengl32/unixlib.h
index 0731b244c01a..226caf331d58 100644
--- a/dlls/opengl32/unixlib.h
+++ b/dlls/opengl32/unixlib.h
@@ -51,13 +51,6 @@ struct wglGetPixelFormat_params
     int ret;
 };
 
-struct wglGetProcAddress_params
-{
-    TEB *teb;
-    LPCSTR lpszProc;
-    PROC ret;
-};
-
 struct wglMakeCurrent_params
 {
     TEB *teb;
@@ -25733,19 +25726,6 @@ struct wglFreeMemoryNV_params
     void *pointer;
 };
 
-struct wglGetExtensionsStringARB_params
-{
-    TEB *teb;
-    HDC hdc;
-    const char *ret;
-};
-
-struct wglGetExtensionsStringEXT_params
-{
-    TEB *teb;
-    const char *ret;
-};
-
 struct wglGetPbufferDCARB_params
 {
     TEB *teb;
@@ -25894,7 +25874,6 @@ enum unix_funcs
     unix_wglCreateContext,
     unix_wglDeleteContext,
     unix_wglGetPixelFormat,
-    unix_wglGetProcAddress,
     unix_wglMakeCurrent,
     unix_wglSetPixelFormat,
     unix_wglShareLists,
@@ -28975,8 +28954,6 @@ enum unix_funcs
     unix_wglCreatePbufferARB,
     unix_wglDestroyPbufferARB,
     unix_wglFreeMemoryNV,
-    unix_wglGetExtensionsStringARB,
-    unix_wglGetExtensionsStringEXT,
     unix_wglGetPbufferDCARB,
     unix_wglGetPixelFormatAttribfvARB,
     unix_wglGetPixelFormatAttribivARB,
diff --git a/dlls/opengl32/wgl.c b/dlls/opengl32/wgl.c
index ce98e049a77d..51c8129d4739 100644
--- a/dlls/opengl32/wgl.c
+++ b/dlls/opengl32/wgl.c
@@ -36,7 +36,6 @@
 
 #include "wine/glu.h"
 #include "wine/debug.h"
-#include "wine/opengl_driver.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(opengl);
 WINE_DECLARE_DEBUG_CHANNEL(fps);
@@ -56,6 +55,11 @@ static CRITICAL_SECTION_DEBUG wgl_cs_debug = {
     0, 0, { (DWORD_PTR)(__FILE__ ": wgl_cs") }
 };
 static CRITICAL_SECTION wgl_cs = { &wgl_cs_debug, -1, 0, 0, 0, 0 };
+static char *wgl_extensions;
+
+#define USE_GL_EXT(x) #x,
+static const char *extension_names[] = { ALL_GL_EXTS ALL_WGL_EXTS };
+#undef USE_GL_EXT
 
 #ifndef _WIN64
 
@@ -97,6 +101,23 @@ static void cleanup_wow64_strings(void)
 
 #endif
 
+static void init_wgl_extensions( const BOOLEAN extensions[GL_EXTENSION_COUNT] )
+{
+    UINT pos = 0, len = 0, ext;
+    char *str;
+
+    for (ext = WGL_FIRST_EXTENSION; ext < GL_EXTENSION_COUNT; ext++)
+        if (extensions[ext]) len += strlen( extension_names[ext] ) + 1;
+
+    if (!(str = malloc( len + 1 ))) return;
+
+    for (ext = WGL_FIRST_EXTENSION; ext < GL_EXTENSION_COUNT; ext++)
+        if (extensions[ext]) pos += sprintf( str + pos, "%s ", extension_names[ext] );
+    str[pos - 1] = 0;
+
+    wgl_extensions = str;
+}
+
 struct handle_entry
 {
     UINT handle;
@@ -1332,18 +1353,36 @@ int WINAPI wglGetLayerPaletteEntries( HDC hdc, int plane, int start, int count,
  */
 PROC WINAPI wglGetProcAddress( LPCSTR name )
 {
-    struct wglGetProcAddress_params args = { .teb = NtCurrentTeb(), .lpszProc = name };
-    const void *proc;
-    NTSTATUS status;
+    const struct registry_entry *func;
+    const enum opengl_extension *ext;
+    struct context *ctx;
+
+    if (!(ctx = context_from_handle( NtCurrentTeb()->glCurrentRC ))) return NULL;
 
-    if (!name) return NULL;
-    if ((status = UNIX_CALL( wglGetProcAddress, &args )))
-        WARN( "wglGetProcAddress %s returned %#lx\n", debugstr_a(name), status );
-    if (args.ret == (void *)-1) return NULL;
+    if (!(func = get_function_entry( name )))
+    {
+        WARN( "Function %s unknown\n", name );
+        return NULL;
+    }
+
+    if (!strncmp( name, "wglGetExtensionsString", 22 ))
+    {
+        EnterCriticalSection( &wgl_cs );
+        if (!wgl_extensions) init_wgl_extensions( ctx->base.extensions );
+        LeaveCriticalSection( &wgl_cs );
+    }
 
-    proc = extension_procs[(UINT_PTR)args.ret];
-    TRACE( "returning %s -> %p\n", name, proc );
-    return proc;
+    if (func->major && (ctx->base.major_version > func->major
+                        || (ctx->base.major_version == func->major && ctx->base.minor_version >= func->minor)))
+        return func->func;
+
+    for (ext = func->extensions; *ext != GL_EXTENSION_COUNT; ext++)
+    {
+        if (ctx->base.extensions[*ext]) return func->func;
+    }
+
+    WARN( "Extensions required for %s not supported\n", name );
+    return NULL;
 }
 
 /***********************************************************************
@@ -1990,6 +2029,24 @@ GLsync WINAPI glImportSyncEXT( GLenum external_sync_type, GLintptr external_sync
     return NULL;
 }
 
+static BOOL get_integer( struct context *ctx, GLenum name, GLint *data )
+{
+    switch (name)
+    {
+    case GL_MAJOR_VERSION:
+        *data = ctx->base.major_version;
+        return TRUE;
+    case GL_MINOR_VERSION:
+        *data = ctx->base.minor_version;
+        return TRUE;
+    case GL_NUM_EXTENSIONS:
+        *data = ctx->base.extension_count;
+        return TRUE;
+    }
+
+    return FALSE;
+}
+
 const GLubyte * WINAPI glGetStringi( GLenum name, GLuint index )
 {
     struct glGetStringi_params args =
@@ -1999,12 +2056,24 @@ const GLubyte * WINAPI glGetStringi( GLenum name, GLuint index )
         .index = index,
     };
     NTSTATUS status;
+    struct context *ctx;
 #ifndef _WIN64
     GLubyte *wow64_str = NULL;
 #endif
 
     TRACE( "name %d, index %d\n", name, index );
 
+    if (!(ctx = context_from_handle( NtCurrentTeb()->glCurrentRC ))) return NULL;
+
+    switch (name)
+    {
+    case GL_EXTENSIONS:
+        if (index < ctx->base.extension_count)
+            return (const GLubyte *)extension_names[ctx->base.extension_array[index]];
+        set_gl_error( GL_INVALID_VALUE );
+        return NULL;
+    }
+
 #ifndef _WIN64
     if (UNIX_CALL( glGetStringi, &args ) == STATUS_BUFFER_TOO_SMALL) args.ret = wow64_str = malloc( (size_t)args.ret );
 #endif
@@ -2040,46 +2109,86 @@ const GLubyte * WINAPI glGetString( GLenum name )
     return args.ret;
 }
 
-const char * WINAPI wglGetExtensionsStringARB( HDC hdc )
+void WINAPI glGetBooleanv( GLenum pname, GLboolean *data )
 {
-    struct wglGetExtensionsStringARB_params args = { .teb = NtCurrentTeb(), .hdc = hdc };
+    struct glGetBooleanv_params args = { .teb = NtCurrentTeb(), .pname = pname, .data = data };
+    struct context *ctx;
     NTSTATUS status;
-#ifndef _WIN64
-    char *wow64_str = NULL;
-#endif
+    GLint value;
 
-    TRACE( "hdc %p\n", hdc );
+    TRACE( "pname %d, data %p\n", pname, data );
 
-#ifndef _WIN64
-    if (UNIX_CALL( wglGetExtensionsStringARB, &args ) == STATUS_BUFFER_TOO_SMALL) args.ret = wow64_str = malloc( (size_t)args.ret );
-#endif
-    if ((status = UNIX_CALL( wglGetExtensionsStringARB, &args ))) WARN( "wglGetExtensionsStringARB returned %#lx\n", status );
-#ifndef _WIN64
-    if (args.ret != wow64_str) free( wow64_str );
-    else if (args.ret) append_wow64_string( wow64_str );
-#endif
-    return args.ret;
+    if (!(ctx = context_from_handle( NtCurrentTeb()->glCurrentRC ))) return;
+    if (get_integer( ctx, pname, &value )) *data = value;
+    else if ((status = UNIX_CALL( glGetBooleanv, &args ))) WARN( "glGetBooleanv returned %#lx\n", status );
 }
 
-const char * WINAPI wglGetExtensionsStringEXT(void)
+void WINAPI glGetDoublev( GLenum pname, GLdouble *data )
 {
-    struct wglGetExtensionsStringEXT_params args = { .teb = NtCurrentTeb() };
+    struct glGetDoublev_params args = { .teb = NtCurrentTeb(), .pname = pname, .data = data };
+    struct context *ctx;
     NTSTATUS status;
-#ifndef _WIN64
-    char *wow64_str = NULL;
-#endif
+    GLint value;
 
-    TRACE( "\n" );
+    TRACE( "pname %d, data %p\n", pname, data );
 
-#ifndef _WIN64
-    if (UNIX_CALL( wglGetExtensionsStringEXT, &args ) == STATUS_BUFFER_TOO_SMALL) args.ret = wow64_str = malloc( (size_t)args.ret );
-#endif
-    if ((status = UNIX_CALL( wglGetExtensionsStringEXT, &args ))) WARN( "wglGetExtensionsStringEXT returned %#lx\n", status );
-#ifndef _WIN64
-    if (args.ret != wow64_str) free( wow64_str );
-    else if (args.ret) append_wow64_string( wow64_str );
-#endif
-    return args.ret;
+    if (!(ctx = context_from_handle( NtCurrentTeb()->glCurrentRC ))) return;
+    if (get_integer( ctx, pname, &value )) *data = value;
+    else if ((status = UNIX_CALL( glGetDoublev, &args ))) WARN( "glGetDoublev returned %#lx\n", status );
+}
+
+void WINAPI glGetFloatv( GLenum pname, GLfloat *data )
+{
+    struct glGetFloatv_params args = { .teb = NtCurrentTeb(), .pname = pname, .data = data };
+    struct context *ctx;
+    NTSTATUS status;
+    GLint value;
+
+    TRACE( "pname %d, data %p\n", pname, data );
+
+    if (!(ctx = context_from_handle( NtCurrentTeb()->glCurrentRC ))) return;
+    if (get_integer( ctx, pname, &value )) *data = value;
+    else if ((status = UNIX_CALL( glGetFloatv, &args ))) WARN( "glGetFloatv returned %#lx\n", status );
+}
+
+void WINAPI glGetInteger64v( GLenum pname, GLint64 *data )
+{
+    struct glGetInteger64v_params args = { .teb = NtCurrentTeb(), .pname = pname, .data = data };
+    struct context *ctx;
+    NTSTATUS status;
+    GLint value;
+
+    TRACE( "pname %d, data %p\n", pname, data );
+
+    if (!(ctx = context_from_handle( NtCurrentTeb()->glCurrentRC ))) return;
+    if (get_integer( ctx, pname, &value )) *data = value;
+    else if ((status = UNIX_CALL( glGetInteger64v, &args ))) WARN( "glGetInteger64v returned %#lx\n", status );
+}
+
+void WINAPI glGetIntegerv( GLenum pname, GLint *data )
+{
+    struct glGetIntegerv_params args = { .teb = NtCurrentTeb(), .pname = pname, .data = data };
+    struct context *ctx;
+    NTSTATUS status;
+    GLint value;
+
+    TRACE( "pname %d, data %p\n", pname, data );
+
+    if (!(ctx = context_from_handle( NtCurrentTeb()->glCurrentRC ))) return;
+    if (get_integer( ctx, pname, &value )) *data = value;
+    else if ((status = UNIX_CALL( glGetIntegerv, &args ))) WARN( "glGetIntegerv returned %#lx\n", status );
+}
+
+const char * WINAPI wglGetExtensionsStringARB( HDC hdc )
+{
+    TRACE( "hdc %p\n", hdc );
+    return wgl_extensions;
+}
+
+const char * WINAPI wglGetExtensionsStringEXT(void)
+{
+    TRACE( "\n" );
+    return wgl_extensions;
 }
 
 const GLchar * WINAPI wglQueryCurrentRendererStringWINE( GLenum attribute )
diff --git a/dlls/quartz/filtergraph.c b/dlls/quartz/filtergraph.c
index 17e5bb1c5b3e..79fcc425e535 100644
--- a/dlls/quartz/filtergraph.c
+++ b/dlls/quartz/filtergraph.c
@@ -473,6 +473,7 @@ static ULONG WINAPI FilterGraphInner_Release(IUnknown *iface)
 
         flush_media_events(This);
         CloseHandle(This->media_event_handle);
+        CloseHandle(This->hEventCompletion);
 
         EnterCriticalSection(&message_cs);
         if (This->threaded && !--message_thread_refcount)
@@ -1791,6 +1792,7 @@ static HRESULT graph_start(struct filter_graph *graph, REFERENCE_TIME stream_sta
     }
     if (list_empty(&graph->media_events))
         ResetEvent(graph->media_event_handle);
+    ResetEvent(graph->hEventCompletion);
 
     if (graph->defaultclock && !graph->refClock)
         IFilterGraph2_SetDefaultSyncSource(&graph->IFilterGraph2_iface);
@@ -5387,16 +5389,27 @@ static HRESULT WINAPI MediaEventSink_Notify(IMediaEventSink *iface, LONG code,
 
     EnterCriticalSection(&graph->event_cs);
 
-    if (code == EC_COMPLETE && graph->HandleEcComplete)
+    if (code == EC_COMPLETE)
     {
-        if (++graph->EcCompleteCount == graph->nRenderers)
+        if (!graph->HandleEcComplete ||
+            ++graph->EcCompleteCount == graph->nRenderers)
         {
+            if (graph->HandleEcComplete)
+            {
+                param1 = S_OK;
+                param2 = 0;
+                graph->current_pos = graph->stream_stop;
+            }
             if (graph->media_events_disabled)
+            {
                 SetEvent(graph->media_event_handle);
+                graph->CompletionStatus = 0;
+            }
             else
-                queue_media_event(graph, EC_COMPLETE, S_OK, 0);
-            graph->CompletionStatus = EC_COMPLETE;
-            graph->current_pos = graph->stream_stop;
+            {
+                queue_media_event(graph, EC_COMPLETE, param1, param2);
+                graph->CompletionStatus = EC_COMPLETE;
+            }
             SetEvent(graph->hEventCompletion);
         }
     }
diff --git a/dlls/quartz/tests/filtergraph.c b/dlls/quartz/tests/filtergraph.c
index a70601060c5e..087c37be5384 100644
--- a/dlls/quartz/tests/filtergraph.c
+++ b/dlls/quartz/tests/filtergraph.c
@@ -5945,6 +5945,88 @@ static void test_events(void)
     hr = IMediaControl_Stop(media_control);
     ok(hr == S_OK, "Got hr %#lx.\n", hr);
 
+    /* Test WaitForCompletion(). */
+
+    hr = IMediaEventEx_CancelDefaultHandling(media_event, EC_COMPLETE);
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+    hr = IMediaControl_Run(media_control);
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+    hr = IMediaEventEx_WaitForCompletion(media_event, 0, &code);
+    ok(hr == E_ABORT, "Got hr %#lx.\n", hr);
+
+    hr = IMediaEventSink_Notify(media_event_sink, EC_COMPLETE, S_OK,
+            (LONG_PTR)&filter.IBaseFilter_iface);
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+    code = 0xdeadbeef;
+    hr = IMediaEventEx_WaitForCompletion(media_event, 0, &code);
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+    ok(code == EC_COMPLETE, "Got code %#lx.\n", code);
+
+    hr = IMediaEventEx_WaitForCompletion(media_event, 0, &code);
+    todo_wine ok(hr == VFW_E_WRONG_STATE, "Got hr %#lx.\n", hr);
+
+    hr = IMediaEventEx_SetNotifyFlags(media_event, AM_MEDIAEVENT_NONOTIFY);
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+    hr = IMediaEventSink_Notify(media_event_sink, EC_COMPLETE, S_OK,
+            (LONG_PTR)&filter.IBaseFilter_iface);
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+    code = 0xdeadbeef;
+    hr = IMediaEventEx_WaitForCompletion(media_event, 0, &code);
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+    ok(code == 0, "Got code %#lx.\n", code);
+
+    code = 0xdeadbeef;
+    hr = IMediaEventEx_WaitForCompletion(media_event, 0, &code);
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+    ok(code == 0, "Got code %#lx.\n", code);
+
+    hr = IMediaEventEx_SetNotifyFlags(media_event, 0);
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+    hr = IMediaControl_Stop(media_control);
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+    hr = IMediaEventEx_RestoreDefaultHandling(media_event, EC_COMPLETE);
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+    hr = IMediaControl_Run(media_control);
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+    hr = IMediaEventEx_WaitForCompletion(media_event, 0, &code);
+    ok(hr == E_ABORT, "Got hr %#lx.\n", hr);
+
+    hr = IMediaEventSink_Notify(media_event_sink, EC_COMPLETE, S_OK,
+            (LONG_PTR)&filter.IBaseFilter_iface);
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+    code = 0xdeadbeef;
+    hr = IMediaEventEx_WaitForCompletion(media_event, 0, &code);
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+    ok(code == EC_COMPLETE, "Got code %#lx.\n", code);
+
+    hr = IMediaEventEx_WaitForCompletion(media_event, 0, &code);
+    todo_wine ok(hr == VFW_E_WRONG_STATE, "Got hr %#lx.\n", hr);
+
+    hr = IMediaControl_Pause(media_control);
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+    hr = IMediaEventEx_WaitForCompletion(media_event, 0, &code);
+    ok(hr == VFW_E_WRONG_STATE, "Got hr %#lx.\n", hr);
+
+    hr = IMediaControl_Run(media_control);
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+    hr = IMediaEventEx_WaitForCompletion(media_event, 0, &code);
+    ok(hr == E_ABORT, "Got hr %#lx.\n", hr);
+
+    hr = IMediaControl_Stop(media_control);
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
     IMediaControl_Release(media_control);
     IMediaEventEx_Release(media_event);
     IMediaEventSink_Release(media_event_sink);
diff --git a/dlls/scrrun/filesystem.c b/dlls/scrrun/filesystem.c
index ae6c583fd066..af76f0cf4d84 100644
--- a/dlls/scrrun/filesystem.c
+++ b/dlls/scrrun/filesystem.c
@@ -198,6 +198,8 @@ static HRESULT create_file(BSTR, IFile**);
 static HRESULT create_foldercoll_enum(struct foldercollection*, IUnknown**);
 static HRESULT create_filecoll_enum(struct filecollection*, IUnknown**);
 static HRESULT create_drivecoll_enum(struct drivecollection*, IUnknown**);
+static inline DWORD get_parent_folder_name(const WCHAR *path, DWORD len);
+static HRESULT get_date_from_filetime(const FILETIME *ft, DATE *date);
 
 static inline BOOL is_dir_data(const WIN32_FIND_DATAW *data)
 {
@@ -2562,43 +2564,97 @@ static HRESULT WINAPI folder_get_Drive(IFolder *iface, IDrive **drive)
 static HRESULT WINAPI folder_get_ParentFolder(IFolder *iface, IFolder **parent)
 {
     struct folder *This = impl_from_IFolder(iface);
-    FIXME("(%p)->(%p): stub\n", This, parent);
-    return E_NOTIMPL;
+    WCHAR *parent_path;
+    DWORD len;
+    HRESULT hr;
+
+    TRACE("(%p)->(%p)\n", This, parent);
+
+    if(!parent)
+        return E_POINTER;
+
+    *parent = NULL;
+
+    len = get_parent_folder_name(This->path, SysStringLen(This->path));
+    if(!len)
+        return S_OK;
+
+    if(!(parent_path = malloc((len + 1) * sizeof(WCHAR))))
+        return E_OUTOFMEMORY;
+    memcpy(parent_path, This->path, len * sizeof(WCHAR));
+    parent_path[len] = 0;
+
+    hr = create_folder(parent_path, parent);
+    free(parent_path);
+    return hr;
 }
 
 static HRESULT WINAPI folder_get_Attributes(IFolder *iface, FileAttribute *attr)
 {
     struct folder *This = impl_from_IFolder(iface);
-    FIXME("(%p)->(%p): stub\n", This, attr);
-    return E_NOTIMPL;
+    DWORD fa;
+
+    TRACE("(%p)->(%p)\n", This, attr);
+
+    if(!attr)
+        return E_POINTER;
+
+    fa = GetFileAttributesW(This->path);
+    if(fa == INVALID_FILE_ATTRIBUTES)
+        return create_error(GetLastError());
+
+    *attr = fa & (FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_HIDDEN |
+            FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_DIRECTORY | FILE_ATTRIBUTE_ARCHIVE |
+            FILE_ATTRIBUTE_REPARSE_POINT | FILE_ATTRIBUTE_COMPRESSED);
+    return S_OK;
 }
 
 static HRESULT WINAPI folder_put_Attributes(IFolder *iface, FileAttribute attr)
 {
     struct folder *This = impl_from_IFolder(iface);
-    FIXME("(%p)->(0x%x): stub\n", This, attr);
-    return E_NOTIMPL;
+
+    TRACE("(%p)->(0x%x)\n", This, attr);
+
+    return SetFileAttributesW(This->path, attr) ? S_OK : create_error(GetLastError());
 }
 
 static HRESULT WINAPI folder_get_DateCreated(IFolder *iface, DATE *date)
 {
     struct folder *This = impl_from_IFolder(iface);
-    FIXME("(%p)->(%p): stub\n", This, date);
-    return E_NOTIMPL;
+    WIN32_FILE_ATTRIBUTE_DATA attrs;
+
+    TRACE("(%p)->(%p)\n", This, date);
+
+    if (GetFileAttributesExW(This->path, GetFileExInfoStandard, &attrs))
+        return get_date_from_filetime(&attrs.ftCreationTime, date);
+
+    return E_FAIL;
 }
 
 static HRESULT WINAPI folder_get_DateLastModified(IFolder *iface, DATE *date)
 {
     struct folder *This = impl_from_IFolder(iface);
-    FIXME("(%p)->(%p): stub\n", This, date);
-    return E_NOTIMPL;
+    WIN32_FILE_ATTRIBUTE_DATA attrs;
+
+    TRACE("(%p)->(%p)\n", This, date);
+
+    if (GetFileAttributesExW(This->path, GetFileExInfoStandard, &attrs))
+        return get_date_from_filetime(&attrs.ftLastWriteTime, date);
+
+    return E_FAIL;
 }
 
 static HRESULT WINAPI folder_get_DateLastAccessed(IFolder *iface, DATE *date)
 {
     struct folder *This = impl_from_IFolder(iface);
-    FIXME("(%p)->(%p): stub\n", This, date);
-    return E_NOTIMPL;
+    WIN32_FILE_ATTRIBUTE_DATA attrs;
+
+    TRACE("(%p)->(%p)\n", This, date);
+
+    if (GetFileAttributesExW(This->path, GetFileExInfoStandard, &attrs))
+        return get_date_from_filetime(&attrs.ftLastAccessTime, date);
+
+    return E_FAIL;
 }
 
 static HRESULT WINAPI folder_get_Type(IFolder *iface, BSTR *type)
@@ -2632,8 +2688,15 @@ static HRESULT WINAPI folder_Move(IFolder *iface, BSTR dest)
 static HRESULT WINAPI folder_get_IsRootFolder(IFolder *iface, VARIANT_BOOL *isroot)
 {
     struct folder *This = impl_from_IFolder(iface);
-    FIXME("(%p)->(%p): stub\n", This, isroot);
-    return E_NOTIMPL;
+
+    TRACE("(%p)->(%p)\n", This, isroot);
+
+    if(!isroot)
+        return E_POINTER;
+
+    *isroot = get_parent_folder_name(This->path, SysStringLen(This->path))
+              ? VARIANT_FALSE : VARIANT_TRUE;
+    return S_OK;
 }
 
 static HRESULT WINAPI folder_get_Size(IFolder *iface, VARIANT *size)
@@ -2740,7 +2803,9 @@ HRESULT create_folder(const WCHAR *path, IFolder **folder)
         return E_FAIL;
     }
 
-    object->path = SysAllocStringLen(NULL, len);
+    /* GetFullPathNameW returns the required size including the NUL terminator,
+     * so the BSTR length prefix must be one less. */
+    object->path = SysAllocStringLen(NULL, len - 1);
     if(!object->path)
     {
         free(object);
@@ -2937,8 +3002,29 @@ static HRESULT WINAPI file_get_Drive(IFile *iface, IDrive **ppdrive)
 static HRESULT WINAPI file_get_ParentFolder(IFile *iface, IFolder **ppfolder)
 {
     struct file *This = impl_from_IFile(iface);
-    FIXME("(%p)->(%p)\n", This, ppfolder);
-    return E_NOTIMPL;
+    WCHAR *parent_path;
+    DWORD len;
+    HRESULT hr;
+
+    TRACE("(%p)->(%p)\n", This, ppfolder);
+
+    if(!ppfolder)
+        return E_POINTER;
+
+    *ppfolder = NULL;
+
+    len = get_parent_folder_name(This->path, lstrlenW(This->path));
+    if(!len)
+        return S_OK;
+
+    if(!(parent_path = malloc((len + 1) * sizeof(WCHAR))))
+        return E_OUTOFMEMORY;
+    memcpy(parent_path, This->path, len * sizeof(WCHAR));
+    parent_path[len] = 0;
+
+    hr = create_folder(parent_path, ppfolder);
+    free(parent_path);
+    return hr;
 }
 
 static HRESULT WINAPI file_get_Attributes(IFile *iface, FileAttribute *pfa)
@@ -3014,8 +3100,14 @@ static HRESULT WINAPI file_get_DateLastModified(IFile *iface, DATE *date)
 static HRESULT WINAPI file_get_DateLastAccessed(IFile *iface, DATE *pdate)
 {
     struct file *This = impl_from_IFile(iface);
-    FIXME("(%p)->(%p)\n", This, pdate);
-    return E_NOTIMPL;
+    WIN32_FILE_ATTRIBUTE_DATA attrs;
+
+    TRACE("(%p)->(%p)\n", This, pdate);
+
+    if (GetFileAttributesExW(This->path, GetFileExInfoStandard, &attrs))
+        return get_date_from_filetime(&attrs.ftLastAccessTime, pdate);
+
+    return E_FAIL;
 }
 
 static HRESULT WINAPI file_get_Size(IFile *iface, VARIANT *pvarSize)
diff --git a/dlls/scrrun/tests/filesystem.c b/dlls/scrrun/tests/filesystem.c
index 5edf11824e00..9b5abdf5c972 100644
--- a/dlls/scrrun/tests/filesystem.c
+++ b/dlls/scrrun/tests/filesystem.c
@@ -704,6 +704,14 @@ static void test_GetFile(void)
     ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
     ok(date > 0.0, "got %f\n", date);
 
+    hr = IFile_get_DateLastAccessed(file, NULL);
+    ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr);
+
+    date = 0.0;
+    hr = IFile_get_DateLastAccessed(file, &date);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(date > 0.0, "got %f\n", date);
+
     hr = IFile_get_Path(file, NULL);
     ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr);
 
@@ -769,6 +777,51 @@ static void test_GetFile(void)
     RemoveDirectoryW(pathW);
 }
 
+static void test_File_ParentFolder(void)
+{
+    WCHAR pathW[MAX_PATH];
+    IFile *file;
+    IFolder *parent;
+    BSTR path, expected, str;
+    HRESULT hr;
+    HANDLE hf;
+
+    get_temp_path(NULL, pathW);
+    hf = CreateFileW(pathW, GENERIC_WRITE, 0, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);
+    if(hf == INVALID_HANDLE_VALUE) {
+        skip("Can't create temporary file\n");
+        return;
+    }
+    CloseHandle(hf);
+
+    path = SysAllocString(pathW);
+    hr = IFileSystem3_GetFile(fs3, path, &file);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IFile_get_ParentFolder(file, NULL);
+    ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr);
+
+    parent = (void*)0xdeadbeef;
+    hr = IFile_get_ParentFolder(file, &parent);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(parent != NULL && parent != (void*)0xdeadbeef, "got parent %p\n", parent);
+
+    hr = IFileSystem3_GetParentFolderName(fs3, path, &expected);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IFolder_get_Path(parent, &str);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!lstrcmpiW(str, expected), "got %s, expected %s\n",
+       wine_dbgstr_w(str), wine_dbgstr_w(expected));
+    SysFreeString(str);
+    SysFreeString(expected);
+
+    IFolder_Release(parent);
+    IFile_Release(file);
+    SysFreeString(path);
+    DeleteFileW(pathW);
+}
+
 static inline BOOL create_file(const WCHAR *name)
 {
     HANDLE f = CreateFileW(name, GENERIC_WRITE, 0, NULL, CREATE_NEW, 0, NULL);
@@ -1032,6 +1085,160 @@ static void test_GetFolder(void)
     SetCurrentDirectoryW(prev_path);
 }
 
+static void test_Folder_Dates(void)
+{
+    WCHAR temp_path[MAX_PATH], dir_path[MAX_PATH];
+    IFolder *folder;
+    BSTR path;
+    DATE date;
+    HRESULT hr;
+
+    GetTempPathW(MAX_PATH, temp_path);
+    lstrcpyW(dir_path, temp_path);
+    lstrcatW(dir_path, L"scrrun_dates_test");
+    ok(CreateDirectoryW(dir_path, NULL), "CreateDirectory failed, error %ld\n", GetLastError());
+
+    path = SysAllocString(dir_path);
+    hr = IFileSystem3_GetFolder(fs3, path, &folder);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IFolder_get_DateCreated(folder, NULL);
+    ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr);
+    date = 0.0;
+    hr = IFolder_get_DateCreated(folder, &date);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(date > 0.0, "got %f\n", date);
+
+    hr = IFolder_get_DateLastModified(folder, NULL);
+    ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr);
+    date = 0.0;
+    hr = IFolder_get_DateLastModified(folder, &date);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(date > 0.0, "got %f\n", date);
+
+    hr = IFolder_get_DateLastAccessed(folder, NULL);
+    ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr);
+    date = 0.0;
+    hr = IFolder_get_DateLastAccessed(folder, &date);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(date > 0.0, "got %f\n", date);
+
+    IFolder_Release(folder);
+    SysFreeString(path);
+    RemoveDirectoryW(dir_path);
+}
+
+static void test_Folder_Attributes(void)
+{
+    static const DWORD attr_mask = FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_HIDDEN |
+            FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_DIRECTORY | FILE_ATTRIBUTE_ARCHIVE |
+            FILE_ATTRIBUTE_REPARSE_POINT | FILE_ATTRIBUTE_COMPRESSED;
+
+    WCHAR temp_path[MAX_PATH], dir_path[MAX_PATH];
+    IFolder *folder;
+    FileAttribute fa;
+    DWORD gfa, new_gfa;
+    BSTR path;
+    HRESULT hr;
+
+    GetTempPathW(MAX_PATH, temp_path);
+    lstrcpyW(dir_path, temp_path);
+    lstrcatW(dir_path, L"scrrun_attr_test");
+    ok(CreateDirectoryW(dir_path, NULL), "CreateDirectory failed, error %ld\n", GetLastError());
+
+    path = SysAllocString(dir_path);
+    hr = IFileSystem3_GetFolder(fs3, path, &folder);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    hr = IFolder_get_Attributes(folder, NULL);
+    ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr);
+
+    hr = IFolder_get_Attributes(folder, &fa);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    gfa = GetFileAttributesW(dir_path) & attr_mask;
+    ok(fa == gfa, "Unexpected flags %#x, expected %lx.\n", fa, gfa);
+    ok(fa & FILE_ATTRIBUTE_DIRECTORY, "directory bit not set, got %#x.\n", fa);
+
+    /* FILE_ATTRIBUTE_READONLY is silently ignored on directories by Windows
+     * (it has a different meaning for folders), so exercise HIDDEN instead. */
+    hr = IFolder_put_Attributes(folder, gfa | FILE_ATTRIBUTE_HIDDEN);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    new_gfa = GetFileAttributesW(dir_path) & attr_mask;
+    ok(new_gfa == (gfa | FILE_ATTRIBUTE_HIDDEN), "got %#lx, expected %lx\n",
+       new_gfa, gfa | FILE_ATTRIBUTE_HIDDEN);
+
+    hr = IFolder_get_Attributes(folder, &fa);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(fa == new_gfa, "got %#x, expected %lx.\n", fa, new_gfa);
+
+    hr = IFolder_put_Attributes(folder, gfa);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+    IFolder_Release(folder);
+    SysFreeString(path);
+    RemoveDirectoryW(dir_path);
+}
+
+static void test_Folder_ParentFolder(void)
+{
+    WCHAR windir[MAX_PATH];
+    IFolder *folder, *parent, *grandparent;
+    BSTR str, expected;
+    VARIANT_BOOL isroot;
+    HRESULT hr;
+
+    GetWindowsDirectoryW(windir, MAX_PATH);
+    str = SysAllocString(windir);
+    hr = IFileSystem3_GetFolder(fs3, str, &folder);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    SysFreeString(str);
+
+    hr = IFolder_get_ParentFolder(folder, NULL);
+    ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr);
+
+    parent = (void*)0xdeadbeef;
+    hr = IFolder_get_ParentFolder(folder, &parent);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(parent != NULL && parent != (void*)0xdeadbeef, "got parent %p\n", parent);
+
+    str = SysAllocString(windir);
+    hr = IFileSystem3_GetParentFolderName(fs3, str, &expected);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    SysFreeString(str);
+
+    hr = IFolder_get_Path(parent, &str);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(!lstrcmpiW(str, expected), "got %s, expected %s\n",
+       wine_dbgstr_w(str), wine_dbgstr_w(expected));
+    SysFreeString(str);
+    SysFreeString(expected);
+
+    /* Non-root folder: IsRootFolder is FALSE. */
+    hr = IFolder_get_IsRootFolder(folder, NULL);
+    ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr);
+
+    isroot = VARIANT_TRUE;
+    hr = IFolder_get_IsRootFolder(folder, &isroot);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(isroot == VARIANT_FALSE, "got %d\n", isroot);
+
+    IFolder_Release(folder);
+
+    /* Root folder: ParentFolder returns NULL. */
+    grandparent = (void*)0xdeadbeef;
+    hr = IFolder_get_ParentFolder(parent, &grandparent);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(grandparent == NULL, "got %p, expected NULL\n", grandparent);
+
+    /* Root folder: IsRootFolder is TRUE. */
+    isroot = VARIANT_FALSE;
+    hr = IFolder_get_IsRootFolder(parent, &isroot);
+    ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+    ok(isroot == VARIANT_TRUE, "got %d\n", isroot);
+
+    IFolder_Release(parent);
+}
+
 static void _test_clone(IEnumVARIANT *enumvar, BOOL position_inherited, LONG count, int line)
 {
     HRESULT hr;
@@ -2951,10 +3158,14 @@ START_TEST(filesystem)
     test_GetBaseName();
     test_GetAbsolutePathName();
     test_GetFile();
+    test_File_ParentFolder();
     test_GetTempName();
     test_CopyFolder();
     test_BuildPath();
     test_GetFolder();
+    test_Folder_Attributes();
+    test_Folder_Dates();
+    test_Folder_ParentFolder();
     test_FolderCollection();
     test_FileCollection();
     test_DriveCollection();
diff --git a/dlls/sechost/service.c b/dlls/sechost/service.c
index 474d977ac5ed..f05fd2d7e80e 100644
--- a/dlls/sechost/service.c
+++ b/dlls/sechost/service.c
@@ -1979,8 +1979,11 @@ BOOL WINAPI DECLSPEC_HOTPATCH StartServiceCtrlDispatcherW( const SERVICE_TABLE_E
 static HANDLE device_notify_thread;
 static struct list device_notify_list = LIST_INIT(device_notify_list);
 
+#define DEVICE_NOTIFY_MAGIC 0xdecafbad
+
 struct device_notify
 {
+    DWORD magic;
     struct list entry;
     WCHAR *path;
     HANDLE handle;
@@ -1995,6 +1998,7 @@ static struct device_notify *device_notify_copy( struct device_notify *notify, D
     struct device_notify *event;
 
     if (!(event = calloc( 1, sizeof(*event) + header->dbch_size ))) return NULL;
+    event->magic = DEVICE_NOTIFY_MAGIC;
     event->handle = notify->handle;
     event->callback = notify->callback;
     memcpy( event->header, header, header->dbch_size );
@@ -2143,6 +2147,7 @@ HDEVNOTIFY WINAPI I_ScRegisterDeviceNotification( HANDLE handle, DEV_BROADCAST_H
         SetLastError(ERROR_NOT_ENOUGH_MEMORY);
         return NULL;
     }
+    notify->magic = DEVICE_NOTIFY_MAGIC;
     notify->handle = handle;
     notify->callback = callback;
     memcpy( notify->header, filter, filter->dbch_size );
@@ -2183,16 +2188,39 @@ HDEVNOTIFY WINAPI I_ScRegisterDeviceNotification( HANDLE handle, DEV_BROADCAST_H
 BOOL WINAPI I_ScUnregisterDeviceNotification( HDEVNOTIFY handle )
 {
     struct device_notify *notify = handle;
+    BOOL ret = TRUE;
 
     TRACE("%p\n", handle);
 
     if (!handle)
+    {
+        SetLastError( ERROR_INVALID_HANDLE );
         return FALSE;
+    }
 
     EnterCriticalSection( &service_cs );
-    list_remove( &notify->entry );
+
+    __TRY
+    {
+        if (notify->magic != DEVICE_NOTIFY_MAGIC)
+        {
+            SetLastError( ERROR_INVALID_HANDLE );
+            ret = FALSE;
+        }
+        else
+        {
+            list_remove( &notify->entry );
+            free( notify->path );
+            free( notify );
+        }
+    }
+    __EXCEPT_PAGE_FAULT
+    {
+        SetLastError( ERROR_SERVICE_SPECIFIC_ERROR );
+        ret = FALSE;
+    }
+    __ENDTRY
+
     LeaveCriticalSection(&service_cs);
-    free( notify->path );
-    free( notify );
-    return TRUE;
+    return ret;
 }
diff --git a/dlls/setupapi/devinst.c b/dlls/setupapi/devinst.c
index 96e47c1c0849..f6bfcc483b06 100644
--- a/dlls/setupapi/devinst.c
+++ b/dlls/setupapi/devinst.c
@@ -853,29 +853,6 @@ static struct device *create_device(struct DeviceInfoSet *set,
     return device;
 }
 
-static struct device *get_devnode_device(DEVINST devnode, HDEVINFO *set, SP_DEVINFO_DATA *data)
-{
-    WCHAR instance_id[MAX_PATH];
-
-    data->cbSize = sizeof(*data);
-    *set = NULL;
-    if (CM_Get_Device_IDW(devnode, instance_id, ARRAY_SIZE(instance_id), 0))
-    {
-        WARN("device node %lu not found\n", devnode);
-        return NULL;
-    }
-
-    *set = SetupDiCreateDeviceInfoListExW(NULL, NULL, NULL, NULL);
-    if (*set == INVALID_HANDLE_VALUE) return NULL;
-    if (!SetupDiOpenDeviceInfoW(*set, instance_id, NULL, 0, data))
-    {
-        SetupDiDestroyDeviceInfoList(*set);
-        *set = NULL;
-        return NULL;
-    }
-    return get_device(*set, data);
-}
-
 /***********************************************************************
  *              SetupDiBuildClassInfoList  (SETUPAPI.@)
  */
@@ -1852,7 +1829,7 @@ BOOL WINAPI SetupDiGetClassDescriptionExA(const GUID *class, char *buffer, DWORD
             debugstr_guid(class), buffer, buffer_len, required_len, debugstr_a(machine_nameA), reserved);
 
     ret = SetupDiGetClassDescriptionExW(class, NULL, 0, &lenW, machine_nameW, reserved);
-    bufferW = lenW ? malloc(lenW) : NULL;
+    bufferW = lenW ? malloc(lenW * sizeof(WCHAR)) : NULL;
     if (bufferW && (ret = SetupDiGetClassDescriptionExW(class, bufferW, lenW, &lenW, machine_nameW, reserved)) && lenW)
         lenA = WideCharToMultiByte(CP_ACP, 0, bufferW, lenW, buffer, buffer_len, NULL, NULL);
     free(bufferW);
@@ -4184,220 +4161,6 @@ BOOL WINAPI SetupDiDeleteDevRegKey(HDEVINFO devinfo, SP_DEVINFO_DATA *device_dat
     return !l;
 }
 
-static CONFIGRET get_device_id_list(const WCHAR *filter, WCHAR *buffer, ULONG *len, ULONG flags)
-{
-    const ULONG supported_flags = CM_GETIDLIST_FILTER_NONE | CM_GETIDLIST_FILTER_CLASS | CM_GETIDLIST_FILTER_PRESENT;
-    SP_DEVINFO_DATA device = { sizeof(device) };
-    CONFIGRET ret = CR_SUCCESS;
-    GUID guid, *pguid = NULL;
-    unsigned int i, id_len;
-    ULONG query_flags = 0;
-    HDEVINFO set;
-    WCHAR id[256];
-    ULONG needed;
-    WCHAR *p;
-
-    if (!len || (buffer && !*len))
-        return CR_INVALID_POINTER;
-
-    needed = 1;
-
-    if (buffer)
-        *buffer = 0;
-    if (flags & ~supported_flags)
-    {
-        FIXME("Flags %#lx are not supported.\n", flags);
-        *len = needed;
-        return CR_SUCCESS;
-    }
-
-    if (!buffer)
-        *len = 0;
-
-    if (flags & CM_GETIDLIST_FILTER_CLASS)
-    {
-        if (!filter)
-            return CR_INVALID_POINTER;
-        if (IIDFromString((WCHAR *)filter, &guid))
-            return CR_INVALID_DATA;
-        pguid = &guid;
-    }
-
-    if (!buffer)
-        *len = needed;
-
-    if (!pguid)
-        query_flags |= DIGCF_ALLCLASSES;
-    if (flags & CM_GETIDLIST_FILTER_PRESENT)
-        query_flags |= DIGCF_PRESENT;
-
-    set = SetupDiGetClassDevsW(pguid, NULL, NULL, query_flags);
-    if (set == INVALID_HANDLE_VALUE)
-        return CR_SUCCESS;
-
-    p = buffer;
-    for (i = 0; SetupDiEnumDeviceInfo(set, i, &device); ++i)
-    {
-        ret = SetupDiGetDeviceInstanceIdW(set, &device, id, ARRAY_SIZE(id), NULL);
-        if (!ret) continue;
-        id_len = wcslen(id) + 1;
-        needed += id_len;
-        if (buffer)
-        {
-            if (needed > *len)
-            {
-                SetupDiDestroyDeviceInfoList(set);
-                *buffer = 0;
-                return CR_BUFFER_SMALL;
-            }
-            memcpy(p, id, sizeof(*p) * id_len);
-            p += id_len;
-        }
-    }
-    SetupDiDestroyDeviceInfoList(set);
-    *len = needed;
-    if (buffer)
-        *p = 0;
-    return CR_SUCCESS;
-}
-
-/***********************************************************************
- *             CM_Get_Device_ID_List_ExW  (SETUPAPI.@)
- */
-CONFIGRET WINAPI CM_Get_Device_ID_List_ExW(const WCHAR *filter, WCHAR *buffer, ULONG len, ULONG flags, HMACHINE machine)
-{
-    TRACE("%s %p %ld %#lx %p.\n", debugstr_w(filter), buffer, len, flags, machine);
-
-    if (machine)
-        FIXME("machine %p.\n", machine);
-
-    if (!buffer)
-        return CR_INVALID_POINTER;
-
-    return get_device_id_list(filter, buffer, &len, flags);
-}
-
-/***********************************************************************
- *             CM_Get_Device_ID_ListW  (SETUPAPI.@)
- */
-CONFIGRET WINAPI CM_Get_Device_ID_ListW(const WCHAR *filter, WCHAR *buffer, ULONG len, ULONG flags)
-{
-    return CM_Get_Device_ID_List_ExW(filter, buffer, len, flags, NULL);
-}
-
-/***********************************************************************
- *             CM_Get_Device_ID_List_Size_ExW  (SETUPAPI.@)
- */
-CONFIGRET WINAPI CM_Get_Device_ID_List_Size_ExW(ULONG *len, const WCHAR *filter, ULONG flags, HMACHINE machine)
-{
-    TRACE("%p %s %#lx, machine %p.\n", len, debugstr_w(filter), flags, machine);
-
-    if (machine)
-        FIXME("machine %p.\n", machine);
-
-    return get_device_id_list(filter, NULL, len, flags);
-}
-
-/***********************************************************************
- *             CM_Get_Device_ID_List_SizeW  (SETUPAPI.@)
- */
-CONFIGRET WINAPI CM_Get_Device_ID_List_SizeW(ULONG *len, const WCHAR *filter, ULONG flags)
-{
-    TRACE("%p %s %#lx.\n", len, debugstr_w(filter), flags);
-
-    return get_device_id_list(filter, NULL, len, flags);
-}
-
-/***********************************************************************
- *             CM_Get_Device_ID_List_ExA  (SETUPAPI.@)
- */
-CONFIGRET WINAPI CM_Get_Device_ID_List_ExA(const char *filter, char *buffer, ULONG len, ULONG flags, HMACHINE machine)
-{
-    WCHAR *wbuffer, *wfilter = NULL, *p;
-    unsigned int slen;
-    CONFIGRET ret;
-
-    TRACE("%s %p %ld %#lx.\n", debugstr_a(filter), buffer, len, flags);
-
-    if (machine)
-        FIXME("machine %p.\n", machine);
-
-    if (!buffer || !len)
-        return CR_INVALID_POINTER;
-
-    if (!(wbuffer = malloc(len * sizeof(*wbuffer))))
-        return CR_OUT_OF_MEMORY;
-
-    if (filter)
-    {
-        slen = strlen(filter) + 1;
-        if (!(wfilter = malloc(slen * sizeof(*wfilter))))
-        {
-            free(wbuffer);
-            return CR_OUT_OF_MEMORY;
-        }
-        MultiByteToWideChar(CP_ACP, 0, filter, slen, wfilter, slen);
-    }
-
-    if (!(ret = CM_Get_Device_ID_ListW(wfilter, wbuffer, len, flags)))
-    {
-        p = wbuffer;
-        while (*p)
-        {
-            slen = wcslen(p) + 1;
-            WideCharToMultiByte(CP_ACP, 0, p, slen, buffer, slen, NULL, NULL);
-            p += slen;
-            buffer += slen;
-        }
-        *buffer = 0;
-    }
-    free(wfilter);
-    free(wbuffer);
-    return ret;
-}
-
-/***********************************************************************
- *             CM_Get_Device_ID_ListA  (SETUPAPI.@)
- */
-CONFIGRET WINAPI CM_Get_Device_ID_ListA(const char *filter, char *buffer, ULONG len, ULONG flags)
-{
-    return CM_Get_Device_ID_List_ExA(filter, buffer, len, flags, NULL);
-}
-
-/***********************************************************************
- *             CM_Get_Device_ID_List_Size_ExA  (SETUPAPI.@)
- */
-CONFIGRET WINAPI CM_Get_Device_ID_List_Size_ExA(ULONG *len, const char *filter, ULONG flags, HMACHINE machine)
-{
-    WCHAR *wfilter = NULL;
-    unsigned int slen;
-    CONFIGRET ret;
-
-    TRACE("%p %s %#lx.\n", len, debugstr_a(filter), flags);
-
-    if (machine)
-        FIXME("machine %p.\n", machine);
-
-    if (filter)
-    {
-        slen = strlen(filter) + 1;
-        if (!(wfilter = malloc(slen * sizeof(*wfilter))))
-            return CR_OUT_OF_MEMORY;
-        MultiByteToWideChar(CP_ACP, 0, filter, slen, wfilter, slen);
-    }
-    ret = CM_Get_Device_ID_List_SizeW(len, wfilter, flags);
-    free(wfilter);
-    return ret;
-}
-
-/***********************************************************************
- *             CM_Get_Device_ID_List_SizeA  (SETUPAPI.@)
- */
-CONFIGRET WINAPI CM_Get_Device_ID_List_SizeA(ULONG *len, const char *filter, ULONG flags)
-{
-    return CM_Get_Device_ID_List_Size_ExA(len, filter, flags, NULL);
-}
-
 /***********************************************************************
  *      SetupDiGetINFClassA (SETUPAPI.@)
  */
@@ -4685,59 +4448,6 @@ BOOL WINAPI SetupDiGetDevicePropertyW(HDEVINFO devinfo, PSP_DEVINFO_DATA device_
     return !ls;
 }
 
-/***********************************************************************
- *              CM_Get_DevNode_Property_ExW (SETUPAPI.@)
- */
-CONFIGRET WINAPI CM_Get_DevNode_Property_ExW(DEVINST devnode, const DEVPROPKEY *prop_key, DEVPROPTYPE *prop_type,
-    BYTE *prop_buff, ULONG *prop_buff_size, ULONG flags, HMACHINE machine)
-{
-    HDEVINFO set;
-    SP_DEVINFO_DATA data = { sizeof(data) };
-    struct device *device;
-    LSTATUS ls;
-
-    TRACE("%lu, %p, %p, %p, %p, %#lx, %p\n", devnode, prop_key, prop_type, prop_buff, prop_buff_size,
-          flags, machine);
-
-    if (machine)
-        return CR_MACHINE_UNAVAILABLE;
-
-    if (!prop_buff_size)
-        return CR_INVALID_POINTER;
-
-    if (!(device = get_devnode_device(devnode, &set, &data)))
-        return CR_NO_SUCH_DEVINST;
-
-    ls = get_device_property(device, set, &data, prop_key, prop_type, prop_buff, *prop_buff_size,
-                             prop_buff_size, flags);
-    SetupDiDestroyDeviceInfoList(set);
-    switch (ls)
-    {
-    case NO_ERROR:
-        return CR_SUCCESS;
-    case ERROR_INVALID_DATA:
-        return CR_INVALID_DATA;
-    case ERROR_INVALID_USER_BUFFER:
-        return CR_INVALID_POINTER;
-    case ERROR_INVALID_FLAGS:
-        return CR_INVALID_FLAG;
-    case ERROR_INSUFFICIENT_BUFFER:
-        return CR_BUFFER_SMALL;
-    case ERROR_NOT_FOUND:
-        return CR_NO_SUCH_VALUE;
-    }
-    return CR_FAILURE;
-}
-
-/***********************************************************************
- *              CM_Get_DevNode_PropertyW (SETUPAPI.@)
- */
-CONFIGRET WINAPI CM_Get_DevNode_PropertyW(DEVINST dev, const DEVPROPKEY *key, DEVPROPTYPE *type,
-    BYTE *buf, PULONG len, ULONG flags)
-{
-    return CM_Get_DevNode_Property_ExW(dev, key, type, buf, len, flags, NULL);
-}
-
 /***********************************************************************
  *              SetupDiInstallDeviceInterfaces (SETUPAPI.@)
  */
diff --git a/dlls/setupapi/misc.c b/dlls/setupapi/misc.c
index bef8bfd76223..9bd47e7efeea 100644
--- a/dlls/setupapi/misc.c
+++ b/dlls/setupapi/misc.c
@@ -799,21 +799,6 @@ void WINAPI pSetupSetGlobalFlags( DWORD flags )
     global_flags = flags;
 }
 
-/***********************************************************************
- *		CMP_WaitNoPendingInstallEvents  (SETUPAPI.@)
- */
-DWORD WINAPI CMP_WaitNoPendingInstallEvents( DWORD dwTimeout )
-{
-    static BOOL warned = FALSE;
-
-    if (!warned)
-    {
-        FIXME("%ld\n", dwTimeout);
-        warned = TRUE;
-    }
-    return WAIT_OBJECT_0;
-}
-
 /***********************************************************************
  *              AssertFail  (SETUPAPI.@)
  *
@@ -1466,12 +1451,3 @@ BOOL WINAPI SetupLogErrorW(LPCWSTR message, LogSeverity severity)
     free(msg);
     return ret;
 }
-
-/***********************************************************************
- *      CM_Get_Version (SETUPAPI.@)
- */
-WORD WINAPI CM_Get_Version(void)
-{
-    TRACE("()\n");
-    return 0x0400;
-}
diff --git a/dlls/setupapi/setupapi.spec b/dlls/setupapi/setupapi.spec
index 6deb5cd949bb..908019b61034 100644
--- a/dlls/setupapi/setupapi.spec
+++ b/dlls/setupapi/setupapi.spec
@@ -7,7 +7,7 @@
 @ stub CMP_RegisterNotification
 @ stub CMP_Report_LogOn
 @ stub CMP_UnregisterNotification
-@ stdcall CMP_WaitNoPendingInstallEvents(long)
+@ stdcall CMP_WaitNoPendingInstallEvents(long) cfgmgr32.CMP_WaitNoPendingInstallEvents
 @ stub CMP_WaitServices
 @ stub CM_Add_Empty_Log_Conf
 @ stub CM_Add_Empty_Log_Conf_Ex
@@ -18,10 +18,10 @@
 @ stub CM_Add_Range
 @ stub CM_Add_Res_Des
 @ stub CM_Add_Res_Des_Ex
-@ stdcall CM_Connect_MachineA(str ptr)
-@ stdcall CM_Connect_MachineW(wstr ptr)
-@ stdcall CM_Create_DevNodeA(ptr str long long)
-@ stdcall CM_Create_DevNodeW(ptr wstr long long)
+@ stdcall CM_Connect_MachineA(str ptr) cfgmgr32.CM_Connect_MachineA
+@ stdcall CM_Connect_MachineW(wstr ptr) cfgmgr32.CM_Connect_MachineW
+@ stdcall CM_Create_DevNodeA(ptr str long long) cfgmgr32.CM_Create_DevNodeA
+@ stdcall CM_Create_DevNodeW(ptr wstr long long) cfgmgr32.CM_Create_DevNodeW
 @ stub CM_Create_DevNode_ExA
 @ stub CM_Create_DevNode_ExW
 @ stub CM_Create_Range_List
@@ -34,7 +34,7 @@
 @ stub CM_Detect_Resource_Conflict_Ex
 @ stub CM_Disable_DevNode
 @ stub CM_Disable_DevNode_Ex
-@ stdcall CM_Disconnect_Machine(long)
+@ stdcall CM_Disconnect_Machine(long) cfgmgr32.CM_Disconnect_Machine
 @ stub CM_Dup_Range_List
 @ stub CM_Enable_DevNode
 @ stub CM_Enable_DevNode_Ex
@@ -53,8 +53,8 @@
 @ stub CM_Free_Res_Des
 @ stub CM_Free_Res_Des_Ex
 @ stub CM_Free_Res_Des_Handle
-@ stdcall CM_Get_Child(ptr long long)
-@ stdcall CM_Get_Child_Ex(ptr long long ptr)
+@ stdcall CM_Get_Child(ptr long long) cfgmgr32.CM_Get_Child
+@ stdcall CM_Get_Child_Ex(ptr long long ptr) cfgmgr32.CM_Get_Child_Ex
 @ stdcall CM_Get_Class_Key_NameA(ptr ptr ptr long) cfgmgr32.CM_Get_Class_Key_NameA
 @ stdcall CM_Get_Class_Key_NameW(ptr ptr ptr long) cfgmgr32.CM_Get_Class_Key_NameW
 @ stdcall CM_Get_Class_Key_Name_ExA(ptr ptr ptr long ptr) cfgmgr32.CM_Get_Class_Key_Name_ExA
@@ -67,30 +67,30 @@
 @ stdcall CM_Get_Class_Registry_PropertyW(ptr long ptr ptr long long ptr) cfgmgr32.CM_Get_Class_Registry_PropertyW
 @ stub CM_Get_Depth
 @ stub CM_Get_Depth_Ex
-@ stdcall CM_Get_DevNode_PropertyW(long ptr ptr ptr ptr long)
-@ stdcall CM_Get_DevNode_Property_ExW(long ptr ptr ptr ptr long ptr)
-@ stdcall CM_Get_DevNode_Registry_PropertyA(long long ptr ptr ptr long)
-@ stdcall CM_Get_DevNode_Registry_PropertyW(long long ptr ptr ptr long)
-@ stdcall CM_Get_DevNode_Registry_Property_ExA(long long ptr ptr ptr long ptr)
-@ stdcall CM_Get_DevNode_Registry_Property_ExW(long long ptr ptr ptr long ptr)
-@ stdcall CM_Get_DevNode_Status(ptr ptr long long)
-@ stdcall CM_Get_DevNode_Status_Ex(ptr ptr long long ptr)
+@ stdcall CM_Get_DevNode_PropertyW(long ptr ptr ptr ptr long) cfgmgr32.CM_Get_DevNode_PropertyW
+@ stdcall CM_Get_DevNode_Property_ExW(long ptr ptr ptr ptr long ptr) cfgmgr32.CM_Get_DevNode_Property_ExW
+@ stdcall CM_Get_DevNode_Registry_PropertyA(long long ptr ptr ptr long) cfgmgr32.CM_Get_DevNode_Registry_PropertyA
+@ stdcall CM_Get_DevNode_Registry_PropertyW(long long ptr ptr ptr long) cfgmgr32.CM_Get_DevNode_Registry_PropertyW
+@ stdcall CM_Get_DevNode_Registry_Property_ExA(long long ptr ptr ptr long ptr) cfgmgr32.CM_Get_DevNode_Registry_Property_ExA
+@ stdcall CM_Get_DevNode_Registry_Property_ExW(long long ptr ptr ptr long ptr) cfgmgr32.CM_Get_DevNode_Registry_Property_ExW
+@ stdcall CM_Get_DevNode_Status(ptr ptr long long) cfgmgr32.CM_Get_DevNode_Status
+@ stdcall CM_Get_DevNode_Status_Ex(ptr ptr long long ptr) cfgmgr32.CM_Get_DevNode_Status_Ex
 @ stdcall CM_Get_Device_IDA(ptr ptr long long) cfgmgr32.CM_Get_Device_IDA
 @ stdcall CM_Get_Device_IDW(ptr ptr long long) cfgmgr32.CM_Get_Device_IDW
 @ stdcall CM_Get_Device_ID_ExA(ptr ptr long long ptr) cfgmgr32.CM_Get_Device_ID_ExA
 @ stdcall CM_Get_Device_ID_ExW(ptr ptr long long ptr) cfgmgr32.CM_Get_Device_ID_ExW
-@ stdcall CM_Get_Device_ID_ListA(str ptr long long)
-@ stdcall CM_Get_Device_ID_ListW(wstr ptr long long)
-@ stdcall CM_Get_Device_ID_List_ExA(str ptr long long ptr)
-@ stdcall CM_Get_Device_ID_List_ExW(wstr ptr long long ptr)
-@ stdcall CM_Get_Device_ID_List_SizeA(ptr str long)
-@ stdcall CM_Get_Device_ID_List_SizeW(ptr wstr long)
-@ stdcall CM_Get_Device_ID_List_Size_ExA(ptr str long ptr)
-@ stdcall CM_Get_Device_ID_List_Size_ExW(ptr wstr long ptr)
+@ stdcall CM_Get_Device_ID_ListA(str ptr long long) cfgmgr32.CM_Get_Device_ID_ListA
+@ stdcall CM_Get_Device_ID_ListW(wstr ptr long long) cfgmgr32.CM_Get_Device_ID_ListW
+@ stdcall CM_Get_Device_ID_List_ExA(str ptr long long ptr) cfgmgr32.CM_Get_Device_ID_List_ExA
+@ stdcall CM_Get_Device_ID_List_ExW(wstr ptr long long ptr) cfgmgr32.CM_Get_Device_ID_List_ExW
+@ stdcall CM_Get_Device_ID_List_SizeA(ptr str long) cfgmgr32.CM_Get_Device_ID_List_SizeA
+@ stdcall CM_Get_Device_ID_List_SizeW(ptr wstr long) cfgmgr32.CM_Get_Device_ID_List_SizeW
+@ stdcall CM_Get_Device_ID_List_Size_ExA(ptr str long ptr) cfgmgr32.CM_Get_Device_ID_List_Size_ExA
+@ stdcall CM_Get_Device_ID_List_Size_ExW(ptr wstr long ptr) cfgmgr32.CM_Get_Device_ID_List_Size_ExW
 @ stdcall CM_Get_Device_ID_Size(ptr ptr long) cfgmgr32.CM_Get_Device_ID_Size
 @ stdcall CM_Get_Device_ID_Size_Ex(ptr ptr long ptr) cfgmgr32.CM_Get_Device_ID_Size_Ex
-@ stdcall CM_Get_Device_Interface_AliasA(str ptr ptr ptr long)
-@ stdcall CM_Get_Device_Interface_AliasW(wstr ptr ptr ptr long)
+@ stdcall CM_Get_Device_Interface_AliasA(str ptr ptr ptr long) cfgmgr32.CM_Get_Device_Interface_AliasA
+@ stdcall CM_Get_Device_Interface_AliasW(wstr ptr ptr ptr long) cfgmgr32.CM_Get_Device_Interface_AliasW
 @ stub CM_Get_Device_Interface_Alias_ExA
 @ stub CM_Get_Device_Interface_Alias_ExW
 @ stdcall CM_Get_Device_Interface_ListA(ptr ptr ptr long long) cfgmgr32.CM_Get_Device_Interface_ListA
@@ -119,15 +119,15 @@
 @ stub CM_Get_Next_Log_Conf_Ex
 @ stub CM_Get_Next_Res_Des
 @ stub CM_Get_Next_Res_Des_Ex
-@ stdcall CM_Get_Parent(ptr long long)
+@ stdcall CM_Get_Parent(ptr long long) cfgmgr32.CM_Get_Parent
 @ stub CM_Get_Parent_Ex
 @ stub CM_Get_Res_Des_Data
 @ stub CM_Get_Res_Des_Data_Ex
 @ stub CM_Get_Res_Des_Data_Size
 @ stub CM_Get_Res_Des_Data_Size_Ex
-@ stdcall CM_Get_Sibling(ptr long long)
-@ stdcall CM_Get_Sibling_Ex(ptr long long ptr)
-@ stdcall CM_Get_Version()
+@ stdcall CM_Get_Sibling(ptr long long) cfgmgr32.CM_Get_Sibling
+@ stdcall CM_Get_Sibling_Ex(ptr long long ptr) cfgmgr32.CM_Get_Sibling_Ex
+@ stdcall CM_Get_Version() cfgmgr32.CM_Get_Version
 @ stub CM_Get_Version_Ex
 @ stub CM_Intersect_Range_List
 @ stub CM_Invert_Range_List
@@ -158,8 +158,8 @@
 @ stub CM_Query_Arbitrator_Free_Size_Ex
 @ stub CM_Query_Remove_SubTree
 @ stub CM_Query_Remove_SubTree_Ex
-@ stdcall CM_Reenumerate_DevNode(ptr long)
-@ stdcall CM_Reenumerate_DevNode_Ex(ptr long ptr)
+@ stdcall CM_Reenumerate_DevNode(ptr long) cfgmgr32.CM_Reenumerate_DevNode
+@ stdcall CM_Reenumerate_DevNode_Ex(ptr long ptr) cfgmgr32.CM_Reenumerate_DevNode_Ex
 @ stub CM_Register_Device_Driver
 @ stub CM_Register_Device_Driver_Ex
 @ stub CM_Register_Device_InterfaceA
@@ -170,15 +170,15 @@
 @ stub CM_Remove_SubTree_Ex
 @ stub CM_Remove_Unmarked_Children
 @ stub CM_Remove_Unmarked_Children_Ex
-@ stdcall CM_Request_Device_EjectA(ptr ptr ptr long long)
-@ stdcall CM_Request_Device_EjectW(ptr ptr ptr long long)
+@ stdcall CM_Request_Device_EjectA(ptr ptr ptr long long) cfgmgr32.CM_Request_Device_EjectA
+@ stdcall CM_Request_Device_EjectW(ptr ptr ptr long long) cfgmgr32.CM_Request_Device_EjectW
 @ stub CM_Request_Eject_PC
 @ stub CM_Reset_Children_Marks
 @ stub CM_Reset_Children_Marks_Ex
 @ stub CM_Run_Detection
 @ stub CM_Run_Detection_Ex
-@ stdcall CM_Set_Class_Registry_PropertyA(ptr long ptr long long ptr)
-@ stdcall CM_Set_Class_Registry_PropertyW(ptr long ptr long long ptr)
+@ stdcall CM_Set_Class_Registry_PropertyA(ptr long ptr long long ptr) cfgmgr32.CM_Set_Class_Registry_PropertyA
+@ stdcall CM_Set_Class_Registry_PropertyW(ptr long ptr long long ptr) cfgmgr32.CM_Set_Class_Registry_PropertyW
 @ stub CM_Set_DevNode_Problem
 @ stub CM_Set_DevNode_Problem_Ex
 @ stub CM_Set_DevNode_Registry_PropertyA
diff --git a/dlls/setupapi/stubs.c b/dlls/setupapi/stubs.c
index eccb82295c88..3b0f4ac82958 100644
--- a/dlls/setupapi/stubs.c
+++ b/dlls/setupapi/stubs.c
@@ -32,83 +32,6 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(setupapi);
 
-/***********************************************************************
- *              CM_Connect_MachineA  (SETUPAPI.@)
- */
-CONFIGRET WINAPI CM_Connect_MachineA(PCSTR name, PHMACHINE machine)
-{
-  FIXME("(%s %p) stub\n", name, machine);
-  return CR_ACCESS_DENIED;
-}
-
-/***********************************************************************
- *		CM_Connect_MachineW  (SETUPAPI.@)
- */
-CONFIGRET WINAPI CM_Connect_MachineW(PCWSTR name, PHMACHINE machine)
-{
-  FIXME("stub\n");
-  return  CR_ACCESS_DENIED;
-}
-
-/***********************************************************************
- *              CM_Create_DevNodeA  (SETUPAPI.@)
- */
-CONFIGRET WINAPI CM_Create_DevNodeA(PDEVINST pdnDevInst, DEVINSTID_A pDeviceID, DEVINST dnParent, ULONG ulFlags)
-{
-  FIXME("(%p %s 0x%08lx 0x%08lx) stub\n", pdnDevInst, pDeviceID, dnParent, ulFlags);
-  return CR_SUCCESS;
-}
-
-/***********************************************************************
- *              CM_Create_DevNodeW  (SETUPAPI.@)
- */
-CONFIGRET WINAPI CM_Create_DevNodeW(PDEVINST pdnDevInst, DEVINSTID_W pDeviceID, DEVINST dnParent, ULONG ulFlags)
-{
-  FIXME("(%p %s 0x%08lx 0x%08lx) stub\n", pdnDevInst, debugstr_w(pDeviceID), dnParent, ulFlags);
-  return CR_SUCCESS;
-}
-
-/***********************************************************************
- *		CM_Disconnect_Machine  (SETUPAPI.@)
- */
-CONFIGRET WINAPI CM_Disconnect_Machine(HMACHINE handle)
-{
-  FIXME("stub\n");
-  return  CR_SUCCESS;
-
-}
-
-/***********************************************************************
- *             CM_Get_Child  (SETUPAPI.@)
- */
-CONFIGRET WINAPI CM_Get_Child(
-    PDEVINST pdnDevInst, DEVINST dnDevInst, ULONG ulFlags)
-{
-    FIXME("%p 0x%08lx 0x%08lx: stub\n", pdnDevInst, dnDevInst, ulFlags);
-    return CR_SUCCESS;
-}
-
-/***********************************************************************
- *             CM_Get_Child_Ex  (SETUPAPI.@)
- */
-CONFIGRET WINAPI CM_Get_Child_Ex(
-    PDEVINST pdnDevInst, DEVINST dnDevInst, ULONG ulFlags, HMACHINE hMachine)
-{
-    FIXME("%p 0x%08lx 0x%08lx %p: stub\n", pdnDevInst, dnDevInst, ulFlags, hMachine);
-    return CR_SUCCESS;
-}
-
-/***********************************************************************
- *              CM_Get_Parent (SETUPAPI.@)
- */
-DWORD WINAPI CM_Get_Parent(PDEVINST pdnDevInst, DEVINST dnDevInst, ULONG ulFlags)
-{
-    FIXME("%p 0x%08lx 0x%08lx stub\n", pdnDevInst, dnDevInst, ulFlags);
-    if(pdnDevInst)
-        *pdnDevInst = 0;
-    return CR_NO_SUCH_DEVNODE;
-}
-
 /***********************************************************************
  *		SetupInitializeFileLogW(SETUPAPI.@)
  */
@@ -235,97 +158,6 @@ BOOL WINAPI SetupDiGetClassImageIndex(PSP_CLASSIMAGELIST_DATA ClassImageListData
     return FALSE;
 }
 
-/***********************************************************************
- *      CM_Get_Device_Interface_AliasA (SETUPAPI.@)
- */
-CONFIGRET WINAPI CM_Get_Device_Interface_AliasA(const char *interface, GUID *class,
-                                                char *name, ULONG *len, ULONG flags)
-{
-    FIXME("%s %p %p %p 0x%08lx: stub\n", debugstr_a(interface), class, name, len, flags);
-    return CR_FAILURE;
-}
-
-/***********************************************************************
- *      CM_Get_Device_Interface_AliasW (SETUPAPI.@)
- */
-CONFIGRET WINAPI CM_Get_Device_Interface_AliasW(const WCHAR *interface, GUID *class,
-                                                WCHAR *name, ULONG *len, ULONG flags)
-{
-    FIXME("%s %p %p %p 0x%08lx: stub\n", debugstr_w(interface), class, name, len, flags);
-    return CR_FAILURE;
-}
-
-/***********************************************************************
- *      CM_Get_DevNode_Status (SETUPAPI.@)
- */
-CONFIGRET WINAPI CM_Get_DevNode_Status(ULONG *status, ULONG *problem, DEVINST dev,
-                                       ULONG flags)
-{
-    return CM_Get_DevNode_Status_Ex(status, problem, dev, flags, NULL);
-}
-
-/***********************************************************************
- *      CM_Get_DevNode_Status_Ex (SETUPAPI.@)
- */
-CONFIGRET WINAPI CM_Get_DevNode_Status_Ex(ULONG *status, ULONG *problem, DEVINST dev,
-                                          ULONG flags, HMACHINE machine)
-{
-    FIXME("%p %p 0x%08lx 0x%08lx %p: stub\n", status, problem, dev, flags, machine);
-    return CR_SUCCESS;
-}
-
-/***********************************************************************
- *             CM_Get_Sibling  (SETUPAPI.@)
- */
-CONFIGRET WINAPI CM_Get_Sibling(
-    PDEVINST pdnDevInst, DEVINST DevInst, ULONG ulFlags)
-{
-    FIXME("%p 0x%08lx 0x%08lx: stub\n", pdnDevInst, DevInst, ulFlags);
-    return CR_FAILURE;
-}
-
-/***********************************************************************
- *             CM_Get_Sibling_Ex  (SETUPAPI.@)
- */
-CONFIGRET WINAPI CM_Get_Sibling_Ex(
-    PDEVINST pdnDevInst, DEVINST DevInst, ULONG ulFlags, HMACHINE hMachine)
-{
-    FIXME("%p 0x%08lx 0x%08lx %p: stub\n", pdnDevInst, DevInst, ulFlags, hMachine);
-    return CR_FAILURE;
-}
-
-CONFIGRET WINAPI CM_Reenumerate_DevNode(DEVINST dnDevInst, ULONG ulFlags)
-{
-    FIXME("0x%08lx 0x%08lx: stub\n", dnDevInst, ulFlags);
-    return CR_FAILURE;
-}
-
-CONFIGRET WINAPI CM_Reenumerate_DevNode_Ex(DEVINST dnDevInst, ULONG ulFlags, HMACHINE machine)
-{
-    FIXME("0x%08lx 0x%08lx %p: stub\n", dnDevInst, ulFlags, machine);
-    return CR_FAILURE;
-}
-
-/***********************************************************************
- *      CM_Set_Class_Registry_PropertyA (SETUPAPI.@)
- */
-CONFIGRET WINAPI CM_Set_Class_Registry_PropertyA(LPGUID class, ULONG prop, LPCVOID buf, ULONG len,
-                                                 ULONG flags, HMACHINE machine)
-{
-    FIXME("%p %lu %p %lu 0x%08lx %p: stub\n", class, prop, buf, len, flags, machine);
-    return CR_FAILURE;
-}
-
-/***********************************************************************
- *      CM_Set_Class_Registry_PropertyW (SETUPAPI.@)
- */
-CONFIGRET WINAPI CM_Set_Class_Registry_PropertyW(LPGUID class, ULONG prop, LPCVOID buf, ULONG len,
-                                                 ULONG flags, HMACHINE machine)
-{
-    FIXME("%p %lu %p %lu 0x%08lx %p: stub\n", class, prop, buf, len, flags, machine);
-    return CR_FAILURE;
-}
-
 /***********************************************************************
  *              SetupLogFileW  (SETUPAPI.@)
  */
@@ -426,24 +258,6 @@ BOOL WINAPI SetupDiSetSelectedDevice(HDEVINFO SetupDiSetSelectedDevice, PSP_DEVI
     return TRUE;
 }
 
-/***********************************************************************
- *              CM_Request_Device_EjectA  (SETUPAPI.@)
- */
-CONFIGRET WINAPI CM_Request_Device_EjectA(DEVINST dev, PPNP_VETO_TYPE type, LPSTR name, ULONG length, ULONG flags)
-{
-    FIXME("(0x%08lx, %p, %p, %lu, 0x%08lx) stub\n", dev, type, name, length, flags);
-    return CR_SUCCESS;
-}
-
-/***********************************************************************
- *              CM_Request_Device_EjectW  (SETUPAPI.@)
- */
-CONFIGRET WINAPI CM_Request_Device_EjectW(DEVINST dev, PPNP_VETO_TYPE type, LPWSTR name, ULONG length, ULONG flags)
-{
-    FIXME("(0x%08lx, %p, %p, %lu, 0x%08lx) stub\n", dev, type, name, length, flags);
-    return CR_SUCCESS;
-}
-
 BOOL WINAPI SetupDiGetClassRegistryPropertyW(const GUID *class, DWORD prop, DWORD *datatype, BYTE *buff, DWORD size,
     DWORD *req_size, const WCHAR *name, VOID *reserved)
 {
diff --git a/dlls/shcore/main.c b/dlls/shcore/main.c
index f04853cb9f59..ea911288c6e9 100644
--- a/dlls/shcore/main.c
+++ b/dlls/shcore/main.c
@@ -25,11 +25,13 @@
 #include "winbase.h"
 #include "wingdi.h"
 #include "winuser.h"
+#include "winternl.h"
 #include "initguid.h"
 #include "ocidl.h"
 #include "featurestagingapi.h"
 #include "shellscalingapi.h"
 #include "shcore.h"
+#include "appmodel.h"
 #define WINSHLWAPI
 #include "shlwapi.h"
 
@@ -251,15 +253,53 @@ HRESULT WINAPI IUnknown_SetSite(IUnknown *obj, IUnknown *site)
 
 HRESULT WINAPI SetCurrentProcessExplicitAppUserModelID(const WCHAR *appid)
 {
-    FIXME("%s: stub\n", debugstr_w(appid));
-    return S_OK;
+    RTL_USER_PROCESS_PARAMETERS *params;
+    HRESULT ret = S_OK;
+
+    TRACE("%s\n", debugstr_w(appid));
+
+    if (!appid)
+        return E_INVALIDARG;
+
+    if (lstrlenW(appid) > APPLICATION_USER_MODEL_ID_MAX_LENGTH - 3)
+        return E_INVALIDARG;
+
+    RtlAcquirePebLock();
+    params = RtlGetCurrentPeb()->ProcessParameters;
+    if (params->dwFlags & 0x4000) RtlFreeUnicodeString( &params->WindowTitle );
+    if (RtlCreateUnicodeString( &params->WindowTitle, appid ))
+    {
+        params->dwFlags |= STARTF_TITLEISAPPID;
+        params->dwFlags |= 0x4000; /* needs free (?) */
+        params->dwFlags &= ~STARTF_TITLEISLINKNAME; /* mutually exclusive */
+    }
+    else ret = E_OUTOFMEMORY;
+    RtlReleasePebLock();
+    return ret;
 }
 
-HRESULT WINAPI GetCurrentProcessExplicitAppUserModelID(const WCHAR **appid)
+HRESULT WINAPI GetCurrentProcessExplicitAppUserModelID(WCHAR **appid)
 {
-    FIXME("%p: stub\n", appid);
+    RTL_USER_PROCESS_PARAMETERS *params;
+    HRESULT ret = S_OK;
+
+    TRACE("%p\n", appid);
+
+    if (!appid) return E_INVALIDARG;
+
     *appid = NULL;
-    return E_NOTIMPL;
+
+    RtlAcquirePebLock();
+    params = RtlGetCurrentPeb()->ProcessParameters;
+    if (params->dwFlags & STARTF_TITLEISAPPID)
+    {
+        *appid = CoTaskMemAlloc( params->WindowTitle.MaximumLength );
+        if (*appid) wcscpy( *appid, params->WindowTitle.Buffer );
+        else ret = E_OUTOFMEMORY;
+    }
+    else ret = E_FAIL;
+    RtlReleasePebLock();
+    return ret;
 }
 
 /*************************************************************************
@@ -942,19 +982,15 @@ static HRESULT WINAPI filestream_Write(IStream *iface, const void *buff, ULONG s
 static HRESULT WINAPI filestream_Seek(IStream *iface, LARGE_INTEGER move, DWORD origin, ULARGE_INTEGER *new_pos)
 {
     struct shstream *stream = impl_from_IStream(iface);
-    DWORD position;
+    LARGE_INTEGER position;
 
     TRACE("%p, %s, %ld, %p.\n", iface, wine_dbgstr_longlong(move.QuadPart), origin, new_pos);
 
-    position = SetFilePointer(stream->u.file.handle, move.u.LowPart, NULL, origin);
-    if (position == INVALID_SET_FILE_POINTER)
+    if (!SetFilePointerEx(stream->u.file.handle, move, &position, origin))
         return HRESULT_FROM_WIN32(GetLastError());
 
     if (new_pos)
-    {
-        new_pos->u.HighPart = 0;
-        new_pos->u.LowPart = position;
-    }
+        new_pos->QuadPart = position.QuadPart;
 
     return S_OK;
 }
diff --git a/dlls/shcore/tests/Makefile.in b/dlls/shcore/tests/Makefile.in
index 2b7eaa656866..d40498fda151 100644
--- a/dlls/shcore/tests/Makefile.in
+++ b/dlls/shcore/tests/Makefile.in
@@ -1,5 +1,5 @@
 TESTDLL = shcore.dll
-IMPORTS = advapi32
+IMPORTS = advapi32 ole32
 
 SOURCES = \
 	shcore.c
diff --git a/dlls/shcore/tests/shcore.c b/dlls/shcore/tests/shcore.c
index 539c2e5c1bc6..bae7c332076d 100644
--- a/dlls/shcore/tests/shcore.c
+++ b/dlls/shcore/tests/shcore.c
@@ -23,10 +23,15 @@
 #include <windows.h>
 #include "initguid.h"
 #include "objidl.h"
+#include "objbase.h"
 #include "shlwapi.h"
+#include "winternl.h"
+#include "appmodel.h"
 
 #include "wine/test.h"
 
+static HRESULT (WINAPI *pSetCurrentProcessExplicitAppUserModelID)(const WCHAR *);
+static HRESULT (WINAPI *pGetCurrentProcessExplicitAppUserModelID)(WCHAR **);
 static HRESULT (WINAPI *pGetProcessReference)(IUnknown **);
 static void (WINAPI *pSetProcessReference)(IUnknown *);
 static HRESULT (WINAPI *pSHGetInstanceExplorer)(IUnknown **);
@@ -62,6 +67,8 @@ static const char * initial_buffer ="0123456789";
 static void init(HMODULE hshcore)
 {
 #define X(f) p##f = (void*)GetProcAddress(hshcore, #f)
+    X(SetCurrentProcessExplicitAppUserModelID);
+    X(GetCurrentProcessExplicitAppUserModelID);
     X(GetProcessReference);
     X(SetProcessReference);
     X(SHUnicodeToAnsi);
@@ -777,6 +784,72 @@ static void test_stream_size(void)
     DeleteFileA(filename);
 }
 
+static void test_AppUserModelID(void)
+{
+    WCHAR *appid;
+    HRESULT hr;
+    WCHAR long_id[APPLICATION_USER_MODEL_ID_MAX_LENGTH + 10];
+    PEB *peb = NtCurrentTeb()->Peb;
+    RTL_USER_PROCESS_PARAMETERS *params = peb->ProcessParameters;
+
+    if (!pSetCurrentProcessExplicitAppUserModelID || !pGetCurrentProcessExplicitAppUserModelID)
+    {
+        win_skip("AppUserModelID functions not available.\n");
+        return;
+    }
+
+    appid = NULL;
+    hr = pGetCurrentProcessExplicitAppUserModelID(&appid);
+    ok(hr == E_FAIL, "Got hr %#lx.\n", hr);
+
+    params->dwFlags |= STARTF_TITLEISAPPID;
+    appid = NULL;
+    hr = pGetCurrentProcessExplicitAppUserModelID(&appid);
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+    ok( !wcscmp( appid, params->WindowTitle.Buffer ), "got %s / %s\n",
+        debugstr_w(appid), debugstr_w(params->WindowTitle.Buffer) );
+    CoTaskMemFree(appid);
+
+    /* Set a valid ID */
+    params->dwFlags = STARTF_TITLEISLINKNAME;
+    hr = pSetCurrentProcessExplicitAppUserModelID(L"Wine.Test.AppId");
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+    ok( params->dwFlags == (STARTF_TITLEISAPPID | 0x4000), "wrong flags %lx\n", params->dwFlags );
+    ok( !wcscmp( params->WindowTitle.Buffer, L"Wine.Test.AppId" ), "got %s\n",
+        debugstr_w(params->WindowTitle.Buffer) );
+
+    /* Get should return the ID we set */
+    appid = NULL;
+    hr = pGetCurrentProcessExplicitAppUserModelID(&appid);
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+    ok(appid != NULL, "Expected non-NULL appid.\n");
+    ok(!lstrcmpW(appid, L"Wine.Test.AppId"), "Got %s.\n", wine_dbgstr_w(appid));
+    CoTaskMemFree(appid);
+
+    /* String length validation. Native rejects strings with 128+ characters. */
+    memset(long_id, 'A', sizeof(long_id));
+
+    /* 128 chars — should fail */
+    long_id[128] = 0;
+    hr = pSetCurrentProcessExplicitAppUserModelID(long_id);
+    ok(hr == E_INVALIDARG, "Got hr %#lx for 128-char string.\n", hr);
+
+    /* 127 chars — should succeed */
+    long_id[127] = 0;
+    hr = pSetCurrentProcessExplicitAppUserModelID(long_id);
+    ok(hr == S_OK, "Got hr %#lx for 127-char string.\n", hr);
+
+    /* Set a different ID */
+    hr = pSetCurrentProcessExplicitAppUserModelID(L"Wine.Test.AppId2");
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+    appid = NULL;
+    hr = pGetCurrentProcessExplicitAppUserModelID(&appid);
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+    ok(!lstrcmpW(appid, L"Wine.Test.AppId2"), "Got %s.\n", wine_dbgstr_w(appid));
+    CoTaskMemFree(appid);
+}
+
 START_TEST(shcore)
 {
     HMODULE hshcore = LoadLibraryA("shcore.dll");
@@ -789,6 +862,7 @@ START_TEST(shcore)
 
     init(hshcore);
 
+    test_AppUserModelID();
     test_process_reference();
     test_SHUnicodeToAnsi();
     test_SHAnsiToUnicode();
diff --git a/dlls/shell32/shell32.spec b/dlls/shell32/shell32.spec
index 70eb2422f394..c1abfc3c9a1b 100644
--- a/dlls/shell32/shell32.spec
+++ b/dlls/shell32/shell32.spec
@@ -362,6 +362,7 @@
 @ stdcall SHEmptyRecycleBinA(long str long)
 @ stdcall SHEmptyRecycleBinW(long wstr long)
 @ stdcall SHEnumerateUnreadMailAccountsW(ptr long ptr long)
+@ stdcall SHEvaluateSystemCommandTemplate(wstr ptr ptr ptr)
 @ stdcall SHExtractIconsW(wstr long long long ptr ptr long long) user32.PrivateExtractIconsW
 @ stdcall SHFileOperation(ptr) SHFileOperationA
 @ stdcall SHFileOperationA(ptr)
diff --git a/dlls/shell32/shell32_main.c b/dlls/shell32/shell32_main.c
index 6bd46eb4f808..3b3429210883 100644
--- a/dlls/shell32/shell32_main.c
+++ b/dlls/shell32/shell32_main.c
@@ -1188,6 +1188,17 @@ HRESULT WINAPI SHEnumerateUnreadMailAccountsW(HKEY user, DWORD idx, LPWSTR maila
     return E_NOTIMPL;
 }
 
+/***********************************************************************
+ *              SHEvaluateSystemCommandTemplate (SHELL32.@)
+ */
+HRESULT WINAPI SHEvaluateSystemCommandTemplate(PCWSTR cmdtemplate, PWSTR *application,
+                                               PWSTR *commandline, PWSTR *parameters)
+{
+    FIXME("(%s %p %p %p) stub!\n", debugstr_w(cmdtemplate), application,
+           commandline, parameters);
+    return E_NOTIMPL;
+}
+
 /***********************************************************************
  *              SHQueryUserNotificationState (SHELL32.@)
  */
diff --git a/dlls/shell32/tests/appbar.c b/dlls/shell32/tests/appbar.c
index 8b71a90ba7a7..b45e48fc79fd 100644
--- a/dlls/shell32/tests/appbar.c
+++ b/dlls/shell32/tests/appbar.c
@@ -431,7 +431,6 @@ static void test_GetCurrentProcessExplicitAppUserModelID(void)
 
     appid = (void*)0xdeadbeef;
     hr = pGetCurrentProcessExplicitAppUserModelID(&appid);
-    todo_wine
     ok(hr == E_FAIL, "got 0x%08lx\n", hr);
     ok(appid == NULL, "got %p\n", appid);
 }
diff --git a/dlls/urlmon/tests/uri.c b/dlls/urlmon/tests/uri.c
index a26036f69ef9..4a0ae350b33a 100644
--- a/dlls/urlmon/tests/uri.c
+++ b/dlls/urlmon/tests/uri.c
@@ -1252,6 +1252,84 @@ static const uri_properties uri_tests[] = {
             {URLZONE_INVALID,E_NOTIMPL,FALSE}
         }
     },
+    /* Make sure it normalizes partial IPv4 addresses correctly. */
+    {   "http://1/", 0, S_OK, FALSE, 0,
+        {
+            {"http://0.0.0.1/",S_OK,FALSE},
+            {"0.0.0.1",S_OK,FALSE},
+            {"http://0.0.0.1/",S_OK,FALSE},
+            {"",S_FALSE,FALSE},
+            {"",S_FALSE,FALSE},
+            {"",S_FALSE,FALSE},
+            {"0.0.0.1",S_OK,FALSE},
+            {"",S_FALSE,FALSE},
+            {"/",S_OK,FALSE},
+            {"/",S_OK,FALSE},
+            {"",S_FALSE,FALSE},
+            {"http://1/",S_OK,FALSE},
+            {"http",S_OK,FALSE},
+            {"",S_FALSE,FALSE},
+            {"",S_FALSE,FALSE}
+        },
+        {
+            {Uri_HOST_IPV4,S_OK,FALSE},
+            {80,S_OK,FALSE},
+            {URL_SCHEME_HTTP,S_OK,FALSE},
+            {URLZONE_INVALID,E_NOTIMPL,FALSE}
+        }
+    },
+    /* Make sure it normalizes partial IPv4 addresses correctly. */
+    {   "http://1.2/", 0, S_OK, FALSE, 0,
+        {
+            {"http://1.0.0.2/",S_OK,FALSE},
+            {"1.0.0.2",S_OK,FALSE},
+            {"http://1.0.0.2/",S_OK,FALSE},
+            {"",S_FALSE,FALSE},
+            {"",S_FALSE,FALSE},
+            {"",S_FALSE,FALSE},
+            {"1.0.0.2",S_OK,FALSE},
+            {"",S_FALSE,FALSE},
+            {"/",S_OK,FALSE},
+            {"/",S_OK,FALSE},
+            {"",S_FALSE,FALSE},
+            {"http://1.2/",S_OK,FALSE},
+            {"http",S_OK,FALSE},
+            {"",S_FALSE,FALSE},
+            {"",S_FALSE,FALSE}
+        },
+        {
+            {Uri_HOST_IPV4,S_OK,FALSE},
+            {80,S_OK,FALSE},
+            {URL_SCHEME_HTTP,S_OK,FALSE},
+            {URLZONE_INVALID,E_NOTIMPL,FALSE}
+        }
+    },
+    /* Make sure it normalizes partial IPv4 addresses correctly. */
+    {   "http://1.2.3/", 0, S_OK, FALSE, 0,
+        {
+            {"http://1.2.0.3/",S_OK,FALSE},
+            {"1.2.0.3",S_OK,FALSE},
+            {"http://1.2.0.3/",S_OK,FALSE},
+            {"",S_FALSE,FALSE},
+            {"",S_FALSE,FALSE},
+            {"",S_FALSE,FALSE},
+            {"1.2.0.3",S_OK,FALSE},
+            {"",S_FALSE,FALSE},
+            {"/",S_OK,FALSE},
+            {"/",S_OK,FALSE},
+            {"",S_FALSE,FALSE},
+            {"http://1.2.3/",S_OK,FALSE},
+            {"http",S_OK,FALSE},
+            {"",S_FALSE,FALSE},
+            {"",S_FALSE,FALSE}
+        },
+        {
+            {Uri_HOST_IPV4,S_OK,FALSE},
+            {80,S_OK,FALSE},
+            {URL_SCHEME_HTTP,S_OK,FALSE},
+            {URLZONE_INVALID,E_NOTIMPL,FALSE}
+        }
+    },
     /* UINT_MAX */
     {   "http://4294967295/", 0, S_OK, FALSE, 0,
         {
@@ -1823,6 +1901,58 @@ static const uri_properties uri_tests[] = {
             {URLZONE_INVALID,E_NOTIMPL,FALSE}
         }
     },
+    /* Empty port with a known scheme */
+    {   "http://example.com:/", 0, S_OK, FALSE, 0,
+        {
+            {"http://example.com/",S_OK,FALSE},
+            {"example.com",S_OK,FALSE},
+            {"http://example.com/",S_OK,FALSE},
+            {"example.com",S_OK,FALSE},
+            {"",S_FALSE,FALSE},
+            {"",S_FALSE,FALSE},
+            {"example.com",S_OK,FALSE},
+            {"",S_FALSE,FALSE},
+            {"/",S_OK,FALSE},
+            {"/",S_OK,FALSE},
+            {"",S_FALSE,FALSE},
+            {"http://example.com:/",S_OK,FALSE},
+            {"http",S_OK,FALSE},
+            {"",S_FALSE,FALSE},
+            {"",S_FALSE,FALSE}
+        },
+        {
+            {Uri_HOST_DNS,S_OK,FALSE},
+            {80,S_OK,FALSE},
+            {URL_SCHEME_HTTP,S_OK,FALSE},
+            {URLZONE_INVALID,E_NOTIMPL,FALSE}
+        }
+    },
+    /* Empty port with an unknown scheme */
+    {   "unknown://example.com:/", 0, S_OK, FALSE, 0,
+        {
+            {"unknown://example.com:/",S_OK,FALSE},
+            {"example.com:",S_OK,FALSE},
+            {"unknown://example.com:/",S_OK,FALSE},
+            {"example.com:",S_OK,FALSE},
+            {"",S_FALSE,FALSE},
+            {"",S_FALSE,FALSE},
+            {"example.com:",S_OK,FALSE},
+            {"",S_FALSE,FALSE},
+            {"/",S_OK,FALSE},
+            {"/",S_OK,FALSE},
+            {"",S_FALSE,FALSE},
+            {"unknown://example.com:/",S_OK,FALSE},
+            {"unknown",S_OK,FALSE},
+            {"",S_FALSE,FALSE},
+            {"",S_FALSE,FALSE}
+        },
+        {
+            {Uri_HOST_DNS,S_OK,FALSE},
+            {0,S_FALSE,FALSE},
+            {URL_SCHEME_UNKNOWN,S_OK,FALSE},
+            {URLZONE_INVALID,E_NOTIMPL,FALSE}
+        }
+    },
     {   "zip://google.com:65536", 0, S_OK, FALSE, 0,
         {
             {"zip://google.com:65536/",S_OK,FALSE},
@@ -2435,6 +2565,32 @@ static const uri_properties uri_tests[] = {
             {URLZONE_INVALID,E_NOTIMPL,FALSE}
         }
     },
+    /* Forbidden characters are never encoded for unknown scheme types. */
+    {   "unknown://us er:pass word@exam ple.com/pa th?qu ery=val ue#frag ment", 0, S_OK, FALSE, 0,
+        {
+            {"unknown://us er:pass word@exam ple.com/pa th?qu ery=val ue#frag ment",S_OK,FALSE},
+            {"us er:pass word@exam ple.com",S_OK,FALSE},
+            {"unknown://us er:pass word@exam ple.com/pa th?qu ery=val ue#frag ment",S_OK,FALSE},
+            {"exam ple.com",S_OK,FALSE},
+            {"",S_FALSE,FALSE},
+            {"#frag ment",S_OK,FALSE},
+            {"exam ple.com",S_OK,FALSE},
+            {"pass word",S_OK,FALSE},
+            {"/pa th",S_OK,FALSE},
+            {"/pa th?qu ery=val ue",S_OK,FALSE},
+            {"?qu ery=val ue",S_OK,FALSE},
+            {"unknown://us er:pass word@exam ple.com/pa th?qu ery=val ue#frag ment",S_OK,FALSE},
+            {"unknown",S_OK,FALSE},
+            {"us er:pass word",S_OK,FALSE},
+            {"us er",S_OK,FALSE}
+        },
+        {
+            {Uri_HOST_DNS,S_OK,FALSE},
+            {0,S_FALSE,FALSE},
+            {URL_SCHEME_UNKNOWN,S_OK,FALSE},
+            {URLZONE_INVALID,E_NOTIMPL,FALSE}
+        }
+    },
     /* Make sure forbidden characters are percent encoded. */
     {   "http://gov.uk/<|> test<|>", 0, S_OK, FALSE, 0,
         {
@@ -3854,6 +4010,58 @@ static const uri_properties uri_tests[] = {
             {URLZONE_INVALID,E_NOTIMPL,FALSE}
         }
     },
+    /* '\' are converted to '/' for known schemes */
+    {   "http://a\\b//c\\d?e\\f#g\\h", 0, S_OK, FALSE, 0,
+        {
+            {"http://a/b//c/d?e\\f#g\\h",S_OK,FALSE},
+            {"a",S_OK,FALSE},
+            {"http://a/b//c/d?e\\f#g\\h",S_OK,FALSE},
+            {"",S_FALSE,FALSE},
+            {"",S_FALSE,FALSE},
+            {"#g\\h",S_OK,FALSE},
+            {"a",S_OK,FALSE},
+            {"",S_FALSE,FALSE},
+            {"/b//c/d",S_OK,FALSE},
+            {"/b//c/d?e\\f",S_OK,FALSE},
+            {"?e\\f",S_OK,FALSE},
+            {"http://a\\b//c\\d?e\\f#g\\h",S_OK,FALSE},
+            {"http",S_OK,FALSE},
+            {"",S_FALSE,FALSE},
+            {"",S_FALSE,FALSE}
+        },
+        {
+            {Uri_HOST_DNS,S_OK,FALSE},
+            {80,S_OK,FALSE},
+            {URL_SCHEME_HTTP,S_OK,FALSE},
+            {URLZONE_INVALID,E_NOTIMPL,FALSE}
+        }
+    },
+    /* '\' are not converted to '/' for unknown schemes */
+    {   "unknown://a\\b//c\\d?e\\f#g\\h", 0, S_OK, FALSE, 0,
+        {
+            {"unknown://a\\b//c\\d?e\\f#g\\h",S_OK,FALSE},
+            {"a\\b",S_OK,FALSE},
+            {"unknown://a\\b//c\\d?e\\f#g\\h",S_OK,FALSE},
+            {"",S_FALSE,FALSE},
+            {"",S_FALSE,FALSE},
+            {"#g\\h",S_OK,FALSE},
+            {"a\\b",S_OK,FALSE},
+            {"",S_FALSE,FALSE},
+            {"//c\\d",S_OK,FALSE},
+            {"//c\\d?e\\f",S_OK,FALSE},
+            {"?e\\f",S_OK,FALSE},
+            {"unknown://a\\b//c\\d?e\\f#g\\h",S_OK,FALSE},
+            {"unknown",S_OK,FALSE},
+            {"",S_FALSE,FALSE},
+            {"",S_FALSE,FALSE}
+        },
+        {
+            {Uri_HOST_DNS,S_OK,FALSE},
+            {0,S_FALSE,FALSE},
+            {URL_SCHEME_UNKNOWN,S_OK,FALSE},
+            {URLZONE_INVALID,E_NOTIMPL,FALSE}
+        }
+    },
     /* Forbidden characters aren't percent encoded. */
     {   "file:c:\\in^|dex.html", Uri_CREATE_FILE_USE_DOS_PATH, S_OK, FALSE, 0,
         {
diff --git a/dlls/user32/tests/input.c b/dlls/user32/tests/input.c
index 905ff0dd9224..f41f54b48294 100644
--- a/dlls/user32/tests/input.c
+++ b/dlls/user32/tests/input.c
@@ -5250,8 +5250,26 @@ static void test_input_message_source(void)
 
 static void test_UnregisterDeviceNotification(void)
 {
-    BOOL ret = UnregisterDeviceNotification(NULL);
-    ok(ret == FALSE, "Unregistering NULL Device Notification returned: %d\n", ret);
+    const char *not_a_devnotify = "this is a valid but garbage pointer";
+    BOOL ret;
+
+    /* NULL gives ERROR_INVALID_HANDLE */
+    SetLastError( 0xdeadbeef );
+    ret = UnregisterDeviceNotification( NULL );
+    ok( ret == FALSE, "Unregistering NULL Device Notification returned: %d\n", ret );
+    ok_ret( ERROR_INVALID_HANDLE, GetLastError() );
+
+    /* A valid pointer that isn't an HDEVNOTIFY gives ERROR_INVALID_HANDLE */
+    SetLastError( 0xdeadbeef );
+    ret = UnregisterDeviceNotification( (HDEVNOTIFY)not_a_devnotify );
+    ok( ret == FALSE, "Unregistering invalid HDEVNOTIFY returned: %d\n", ret );
+    ok_ret( ERROR_INVALID_HANDLE, GetLastError() );
+
+    /* A non-null faulting pointer gives ERROR_SERVICE_SPECIFIC_ERROR */
+    SetLastError( 0xdeadbeef );
+    ret = UnregisterDeviceNotification( (HDEVNOTIFY)0xdeadbeef );
+    ok( ret == FALSE, "Unregistering invalid HDEVNOTIFY returned: %d\n", ret );
+    ok_ret( ERROR_SERVICE_SPECIFIC_ERROR, GetLastError() );
 }
 
 static void test_SendInput( WORD vkey, WCHAR wch, HKL hkl )
diff --git a/dlls/vbscript/compile.c b/dlls/vbscript/compile.c
index 3777624c6d4d..f75f039f0f72 100644
--- a/dlls/vbscript/compile.c
+++ b/dlls/vbscript/compile.c
@@ -417,7 +417,7 @@ static expression_t *lookup_const_decls(compile_ctx_t *ctx, const WCHAR *name, B
     const_decl_t *decl;
 
     for(decl = ctx->const_decls; decl; decl = decl->next) {
-        if(!wcsicmp(decl->name, name))
+        if(!vbs_wcsicmp(decl->name, name))
             return decl->value_expr;
     }
 
@@ -425,7 +425,7 @@ static expression_t *lookup_const_decls(compile_ctx_t *ctx, const WCHAR *name, B
         return NULL;
 
     for(decl = ctx->global_consts; decl; decl = decl->next) {
-        if(!wcsicmp(decl->name, name))
+        if(!vbs_wcsicmp(decl->name, name))
             return decl->value_expr;
     }
 
@@ -437,7 +437,7 @@ static BOOL lookup_args_name(compile_ctx_t *ctx, const WCHAR *name)
     unsigned i;
 
     for(i = 0; i < ctx->func->arg_cnt; i++) {
-        if(!wcsicmp(ctx->func->args[i].name, name))
+        if(!vbs_wcsicmp(ctx->func->args[i].name, name))
             return TRUE;
     }
 
@@ -449,7 +449,7 @@ static BOOL lookup_dim_decls(compile_ctx_t *ctx, const WCHAR *name)
     dim_decl_t *dim_decl;
 
     for(dim_decl = ctx->dim_decls; dim_decl; dim_decl = dim_decl->next) {
-        if(!wcsicmp(dim_decl->name, name))
+        if(!vbs_wcsicmp(dim_decl->name, name))
             return TRUE;
     }
 
@@ -870,8 +870,8 @@ static HRESULT compile_foreach_statement(compile_ctx_t *ctx, foreach_statement_t
 
 static HRESULT compile_forto_statement(compile_ctx_t *ctx, forto_statement_t *stat)
 {
-    statement_ctx_t loop_ctx = {2};
-    unsigned step_instr, loop_start, instr;
+    statement_ctx_t loop_ctx = {3};
+    unsigned step_instr, instr, expr_err_label, past_err_label, body_label, from_offset;
     BSTR identifier;
     HRESULT hres;
 
@@ -879,23 +879,32 @@ static HRESULT compile_forto_statement(compile_ctx_t *ctx, forto_statement_t *st
     if(!identifier)
         return E_OUTOFMEMORY;
 
+    expr_err_label = alloc_label(ctx);
+    if(!expr_err_label)
+        return E_OUTOFMEMORY;
+
+    past_err_label = alloc_label(ctx);
+    if(!past_err_label)
+        return E_OUTOFMEMORY;
+
+    body_label = alloc_label(ctx);
+    if(!body_label)
+        return E_OUTOFMEMORY;
+
+    /* Evaluate all three expressions (from, to, step) before assignment,
+     * so that the control variable is not modified if any expression fails.
+     * Stack layout after evaluation: [from, to, step] (step on top). */
+    from_offset = stack_offset(ctx);
+
     hres = compile_expression(ctx, stat->from_expr);
     if(FAILED(hres))
         return hres;
     if(!push_instr(ctx, OP_numval))
         return E_OUTOFMEMORY;
 
-    /* FIXME: Assign should happen after both expressions evaluation. */
-    instr = push_instr(ctx, OP_assign_ident);
-    if(!instr)
-        return E_OUTOFMEMORY;
-    instr_ptr(ctx, instr)->arg1.bstr = identifier;
-    instr_ptr(ctx, instr)->arg2.uint = 0;
-
     hres = compile_expression(ctx, stat->to_expr);
     if(FAILED(hres))
         return hres;
-
     if(!push_instr(ctx, OP_numval))
         return E_OUTOFMEMORY;
 
@@ -912,6 +921,24 @@ static HRESULT compile_forto_statement(compile_ctx_t *ctx, forto_statement_t *st
             return hres;
     }
 
+    /* If any expression failed, clean up and enter body with empty sentinels. */
+    if(!emit_catch_jmp(ctx, 0, expr_err_label))
+        return E_OUTOFMEMORY;
+
+    /* Copy from (buried at depth 2) to top and assign to control variable. */
+    hres = push_instr_uint(ctx, OP_stack, from_offset);
+    if(FAILED(hres))
+        return hres;
+
+    instr = push_instr(ctx, OP_assign_ident);
+    if(!instr)
+        return E_OUTOFMEMORY;
+    instr_ptr(ctx, instr)->arg1.bstr = identifier;
+    instr_ptr(ctx, instr)->arg2.uint = 0;
+
+    if(!emit_catch_jmp(ctx, 0, expr_err_label))
+        return E_OUTOFMEMORY;
+
     loop_ctx.for_end_label = alloc_label(ctx);
     if(!loop_ctx.for_end_label)
         return E_OUTOFMEMORY;
@@ -922,16 +949,16 @@ static HRESULT compile_forto_statement(compile_ctx_t *ctx, forto_statement_t *st
     instr_ptr(ctx, step_instr)->arg2.bstr = identifier;
     instr_ptr(ctx, step_instr)->arg1.uint = loop_ctx.for_end_label;
 
-    if(!emit_catch(ctx, 2))
+    if(!emit_catch(ctx, 3))
         return E_OUTOFMEMORY;
 
-    loop_start = ctx->instr_cnt;
+    label_set_addr(ctx, body_label);
+
     hres = compile_statement(ctx, &loop_ctx, stat->body);
     if(FAILED(hres))
         return hres;
 
-    /* We need a separated OP_step here so that errors jump to the end-of-loop catch. */
-    ctx->loc = stat->stat.loc;
+
     instr = push_instr(ctx, OP_incc);
     if(!instr)
         return E_OUTOFMEMORY;
@@ -943,7 +970,11 @@ static HRESULT compile_forto_statement(compile_ctx_t *ctx, forto_statement_t *st
     instr_ptr(ctx, instr)->arg2.bstr = identifier;
     instr_ptr(ctx, instr)->arg1.uint = loop_ctx.for_end_label;
 
-    hres = push_instr_addr(ctx, OP_jmp, loop_start);
+    hres = push_instr_addr(ctx, OP_jmp, step_instr);
+    if(FAILED(hres))
+        return hres;
+
+    hres = push_instr_uint(ctx, OP_pop, 3);
     if(FAILED(hres))
         return hres;
 
@@ -952,6 +983,28 @@ static HRESULT compile_forto_statement(compile_ctx_t *ctx, forto_statement_t *st
     if(!emit_catch(ctx, 0))
         return E_OUTOFMEMORY;
 
+    hres = push_instr_addr(ctx, OP_jmp, past_err_label);
+    if(FAILED(hres))
+        return hres;
+
+    /* Expression error path: push empty from/to/step sentinels and enter body. */
+    label_set_addr(ctx, expr_err_label);
+
+    if(!push_instr(ctx, OP_empty))
+        return E_OUTOFMEMORY;
+
+    if(!push_instr(ctx, OP_empty))
+        return E_OUTOFMEMORY;
+
+    if(!push_instr(ctx, OP_empty))
+        return E_OUTOFMEMORY;
+
+    hres = push_instr_addr(ctx, OP_jmp, body_label);
+    if(FAILED(hres))
+        return hres;
+
+    label_set_addr(ctx, past_err_label);
+
     return S_OK;
 }
 
@@ -1151,6 +1204,7 @@ static HRESULT compile_dim_statement(compile_ctx_t *ctx, dim_statement_t *stat)
     while(1) {
         if(lookup_dim_decls(ctx, dim_decl->name) || lookup_args_name(ctx, dim_decl->name)
            || lookup_const_decls(ctx, dim_decl->name, FALSE)) {
+            ctx->loc = dim_decl->loc;
             return MAKE_VBSERROR(VBSE_NAME_REDEFINED);
         }
 
@@ -1722,7 +1776,7 @@ static BOOL lookup_funcs_name(compile_ctx_t *ctx, const WCHAR *name)
     function_t *iter;
 
     for(iter = ctx->code->funcs; iter; iter = iter->next) {
-        if(!wcsicmp(iter->name, name))
+        if(!vbs_wcsicmp(iter->name, name))
             return TRUE;
     }
 
@@ -1788,7 +1842,7 @@ static BOOL lookup_class_name(compile_ctx_t *ctx, const WCHAR *name)
     class_desc_t *iter;
 
     for(iter = ctx->code->classes; iter; iter = iter->next) {
-        if(!wcsicmp(iter->name, name))
+        if(!vbs_wcsicmp(iter->name, name))
             return TRUE;
     }
 
@@ -1839,7 +1893,7 @@ static BOOL lookup_class_funcs(class_desc_t *class_desc, const WCHAR *name)
     unsigned i;
 
     for(i=0; i < class_desc->func_cnt; i++) {
-        if(class_desc->funcs[i].name && !wcsicmp(class_desc->funcs[i].name, name))
+        if(class_desc->funcs[i].name && !vbs_wcsicmp(class_desc->funcs[i].name, name))
             return TRUE;
     }
 
@@ -1899,18 +1953,26 @@ static HRESULT compile_class(compile_ctx_t *ctx, class_decl_t *class_decl)
             }
         }
 
-        if(!wcsicmp(L"class_initialize", func_decl->name)) {
+        if(!vbs_wcsicmp(L"class_initialize", func_decl->name)) {
             if(func_decl->type != FUNC_SUB) {
                 FIXME("class initializer is not sub\n");
                 return E_FAIL;
             }
+            if(func_decl->args) {
+                ctx->loc = func_decl->loc;
+                return MAKE_VBSERROR(VBSE_CLASS_INIT_NO_ARGS);
+            }
 
             class_desc->class_initialize_id = i;
-        }else  if(!wcsicmp(L"class_terminate", func_decl->name)) {
+        }else  if(!vbs_wcsicmp(L"class_terminate", func_decl->name)) {
             if(func_decl->type != FUNC_SUB) {
                 FIXME("class terminator is not sub\n");
                 return E_FAIL;
             }
+            if(func_decl->args) {
+                ctx->loc = func_decl->loc;
+                return MAKE_VBSERROR(VBSE_CLASS_INIT_NO_ARGS);
+            }
 
             class_desc->class_terminate_id = i;
         }
@@ -1975,18 +2037,16 @@ static BOOL lookup_script_identifier(compile_ctx_t *ctx, script_ctx_t *script, c
     for(c = 0; c < ARRAY_SIZE(contexts); c++) {
         if(!contexts[c]) continue;
 
-        for(i = 0; i < contexts[c]->global_vars_cnt; i++) {
-            if(!wcsicmp(contexts[c]->global_vars[i]->name, identifier))
-                return TRUE;
-        }
+        if(script_disp_find_var(contexts[c], identifier))
+            return TRUE;
 
         for(i = 0; i < contexts[c]->global_funcs_cnt; i++) {
-            if(!wcsicmp(contexts[c]->global_funcs[i]->name, identifier))
+            if(!vbs_wcsicmp(contexts[c]->global_funcs[i]->name, identifier))
                 return TRUE;
         }
 
         for(class = contexts[c]->classes; class; class = class->next) {
-            if(!wcsicmp(class->name, identifier))
+            if(!vbs_wcsicmp(class->name, identifier))
                 return TRUE;
         }
     }
@@ -2000,17 +2060,17 @@ static BOOL lookup_script_identifier(compile_ctx_t *ctx, script_ctx_t *script, c
             continue;
 
         for(i = 0; i < var_cnt; i++) {
-            if(!wcsicmp(vars[i].name, identifier))
+            if(!vbs_wcsicmp(vars[i].name, identifier))
                 return TRUE;
         }
 
         for(func = code->funcs; func; func = func->next) {
-            if(!wcsicmp(func->name, identifier))
+            if(!vbs_wcsicmp(func->name, identifier))
                 return TRUE;
         }
 
         for(class = code->classes; class; class = class->next) {
-            if(!wcsicmp(class->name, identifier))
+            if(!vbs_wcsicmp(class->name, identifier))
                 return TRUE;
         }
     }
diff --git a/dlls/vbscript/global.c b/dlls/vbscript/global.c
index b6a32fdacdbd..0a9258cf043c 100644
--- a/dlls/vbscript/global.c
+++ b/dlls/vbscript/global.c
@@ -126,7 +126,7 @@ HRESULT get_builtin_id(BuiltinDisp *disp, const WCHAR *name, DISPID *id)
 
     while(min <= max) {
         i = (min + max) / 2;
-        r = wcsicmp(disp->members[i].name, name);
+        r = vbs_wcsicmp(disp->members[i].name, name);
         if(!r) {
             *id = i;
             return S_OK;
@@ -2465,25 +2465,25 @@ static HRESULT Global_DateAdd(BuiltinDisp *This, VARIANT *args, unsigned args_cn
         hres = to_system_time(args + 2, &ud.st);
     if (SUCCEEDED(hres))
     {
-        if (!wcsicmp(interval, L"yyyy"))
+        if (!vbs_wcsicmp(interval, L"yyyy"))
             ud.st.wYear += count;
-        else if (!wcsicmp(interval, L"q"))
+        else if (!vbs_wcsicmp(interval, L"q"))
             ud.st.wMonth += 3 * count;
-        else if (!wcsicmp(interval, L"m"))
+        else if (!vbs_wcsicmp(interval, L"m"))
             ud.st.wMonth += count;
-        else if (!wcsicmp(interval, L"y")
-                || !wcsicmp(interval, L"d")
-                || !wcsicmp(interval, L"w"))
+        else if (!vbs_wcsicmp(interval, L"y")
+                || !vbs_wcsicmp(interval, L"d")
+                || !vbs_wcsicmp(interval, L"w"))
         {
             ud.st.wDay += count;
         }
-        else if (!wcsicmp(interval, L"ww"))
+        else if (!vbs_wcsicmp(interval, L"ww"))
             ud.st.wDay += 7 * count;
-        else if (!wcsicmp(interval, L"h"))
+        else if (!vbs_wcsicmp(interval, L"h"))
             ud.st.wHour += count;
-        else if (!wcsicmp(interval, L"n"))
+        else if (!vbs_wcsicmp(interval, L"n"))
             ud.st.wMinute += count;
-        else if (!wcsicmp(interval, L"s"))
+        else if (!vbs_wcsicmp(interval, L"s"))
             ud.st.wSecond += count;
         else
         {
@@ -2621,10 +2621,169 @@ static HRESULT Global_Erase(BuiltinDisp *This, VARIANT *arg, unsigned args_cnt,
     return E_NOTIMPL;
 }
 
-static HRESULT Global_Filter(BuiltinDisp *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
+static HRESULT Global_Filter(BuiltinDisp *This, VARIANT *args, unsigned args_cnt, VARIANT *res)
 {
-    FIXME("\n");
-    return E_NOTIMPL;
+    VARIANT *data;
+    SAFEARRAY *sa, *out_sa;
+    SAFEARRAYBOUND bounds;
+    LONG lbound, ubound, i, count, match_count;
+    BSTR search, conv_search = NULL, str, conv_str;
+    BSTR *matches = NULL;
+    int include = 1, mode = 0, found;
+    HRESULT hres;
+
+    TRACE("%s %u...\n", debugstr_variant(args), args_cnt);
+
+    assert(2 <= args_cnt && args_cnt <= 4);
+
+    if(V_VT(args) == VT_NULL || V_VT(args+1) == VT_NULL
+            || (args_cnt > 2 && V_VT(args+2) == VT_NULL)
+            || (args_cnt > 3 && V_VT(args+3) == VT_NULL))
+        return MAKE_VBSERROR(VBSE_ILLEGAL_NULL_USE);
+
+    switch(V_VT(args)) {
+    case VT_VARIANT|VT_ARRAY:
+        sa = V_ARRAY(args);
+        break;
+    case VT_VARIANT|VT_ARRAY|VT_BYREF:
+        sa = *V_ARRAYREF(args);
+        break;
+    default:
+        return MAKE_VBSERROR(VBSE_TYPE_MISMATCH);
+    }
+
+    if(V_VT(args+1) == VT_BSTR) {
+        search = V_BSTR(args+1);
+    }else {
+        hres = to_string(args+1, &conv_search);
+        if(FAILED(hres))
+            return hres;
+        search = conv_search;
+    }
+
+    if(args_cnt > 2) {
+        hres = to_int(args+2, &include);
+        if(FAILED(hres))
+            goto done;
+    }
+
+    if(args_cnt > 3) {
+        hres = to_int(args+3, &mode);
+        if(FAILED(hres))
+            goto done;
+        if(mode != 0 && mode != 1) {
+            hres = MAKE_VBSERROR(VBSE_ILLEGAL_FUNC_CALL);
+            goto done;
+        }
+    }
+
+    if(SafeArrayGetDim(sa) != 1) {
+        hres = MAKE_VBSERROR(VBSE_TYPE_MISMATCH);
+        goto done;
+    }
+
+    hres = SafeArrayGetLBound(sa, 1, &lbound);
+    if(FAILED(hres))
+        goto done;
+    hres = SafeArrayGetUBound(sa, 1, &ubound);
+    if(FAILED(hres))
+        goto done;
+
+    hres = SafeArrayAccessData(sa, (void**)&data);
+    if(FAILED(hres))
+        goto done;
+
+    /* Single pass: convert, match, and collect results into a temporary array */
+    count = ubound - lbound + 1;
+    if(count > 0) {
+        matches = calloc(count, sizeof(BSTR));
+        if(!matches) {
+            SafeArrayUnaccessData(sa);
+            hres = E_OUTOFMEMORY;
+            goto done;
+        }
+    }
+
+    match_count = 0;
+    for(i = 0; i < count; i++) {
+        conv_str = NULL;
+        if(V_VT(&data[i]) == VT_BSTR) {
+            str = V_BSTR(&data[i]);
+        }else {
+            hres = to_string(&data[i], &conv_str);
+            if(FAILED(hres)) {
+                SafeArrayUnaccessData(sa);
+                goto done;
+            }
+            str = conv_str;
+        }
+
+        if(!SysStringLen(search))
+            found = 1;
+        else
+            found = FindStringOrdinal(FIND_FROMSTART, str, SysStringLen(str),
+                                      search, SysStringLen(search), mode) >= 0;
+
+        if(include ? found : !found) {
+            matches[match_count] = SysAllocString(str);
+            if(!matches[match_count]) {
+                SysFreeString(conv_str);
+                SafeArrayUnaccessData(sa);
+                hres = E_OUTOFMEMORY;
+                goto done;
+            }
+            match_count++;
+        }
+
+        SysFreeString(conv_str);
+    }
+
+    SafeArrayUnaccessData(sa);
+
+    /* Create result array from collected matches */
+    bounds.lLbound = 0;
+    bounds.cElements = match_count;
+    out_sa = SafeArrayCreate(VT_VARIANT, 1, &bounds);
+    if(!out_sa) {
+        hres = E_OUTOFMEMORY;
+        goto done;
+    }
+
+    if(match_count) {
+        VARIANT *out_data;
+
+        hres = SafeArrayAccessData(out_sa, (void**)&out_data);
+        if(FAILED(hres)) {
+            SafeArrayDestroy(out_sa);
+            goto done;
+        }
+
+        for(i = 0; i < match_count; i++) {
+            V_VT(&out_data[i]) = VT_BSTR;
+            V_BSTR(&out_data[i]) = matches[i];
+            matches[i] = NULL;
+        }
+
+        SafeArrayUnaccessData(out_sa);
+    }
+
+    if(res) {
+        V_VT(res) = VT_ARRAY|VT_VARIANT;
+        V_ARRAY(res) = out_sa;
+    }else {
+        SafeArrayDestroy(out_sa);
+    }
+
+    hres = S_OK;
+
+done:
+    if(matches) {
+        for(i = 0; i < match_count; i++)
+            SysFreeString(matches[i]);
+        free(matches);
+    }
+    SysFreeString(conv_search);
+    return hres;
 }
 
 static HRESULT Global_Join(BuiltinDisp *This, VARIANT *args, unsigned args_cnt, VARIANT *res)
@@ -3608,10 +3767,9 @@ static HRESULT Global_ExecuteGlobal(BuiltinDisp *This, VARIANT *arg, unsigned ar
 static HRESULT Global_GetRef(BuiltinDisp *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
 {
     named_item_t *item;
-    function_t **funcs;
+    function_t *func;
     IDispatch *disp;
     const WCHAR *name;
-    size_t i, cnt;
     HRESULT hres;
 
     TRACE("%s\n", debugstr_variant(arg));
@@ -3626,26 +3784,11 @@ static HRESULT Global_GetRef(BuiltinDisp *This, VARIANT *arg, unsigned args_cnt,
     /* Search the current named item's script object first */
     item = This->ctx->current_named_item;
     if(item && item->script_obj) {
-        funcs = item->script_obj->global_funcs;
-        cnt = item->script_obj->global_funcs_cnt;
-        for(i = 0; i < cnt; i++) {
-            if(!wcsicmp(funcs[i]->name, name)) {
-                hres = create_func_ref(This->ctx, funcs[i], &disp);
-                if(FAILED(hres))
-                    return hres;
-                V_VT(res) = VT_DISPATCH;
-                V_DISPATCH(res) = disp;
+        func = script_disp_find_func(item->script_obj, name);
+        if(func) {
+            if(!res)
                 return S_OK;
-            }
-        }
-    }
-
-    /* Search global script object */
-    funcs = This->ctx->script_obj->global_funcs;
-    cnt = This->ctx->script_obj->global_funcs_cnt;
-    for(i = 0; i < cnt; i++) {
-        if(!wcsicmp(funcs[i]->name, name)) {
-            hres = create_func_ref(This->ctx, funcs[i], &disp);
+            hres = create_func_ref(This->ctx, func, &disp);
             if(FAILED(hres))
                 return hres;
             V_VT(res) = VT_DISPATCH;
@@ -3654,6 +3797,19 @@ static HRESULT Global_GetRef(BuiltinDisp *This, VARIANT *arg, unsigned args_cnt,
         }
     }
 
+    /* Search global script object */
+    func = script_disp_find_func(This->ctx->script_obj, name);
+    if(func) {
+        if(!res)
+            return S_OK;
+        hres = create_func_ref(This->ctx, func, &disp);
+        if(FAILED(hres))
+            return hres;
+        V_VT(res) = VT_DISPATCH;
+        V_DISPATCH(res) = disp;
+        return S_OK;
+    }
+
     return MAKE_VBSERROR(VBSE_ILLEGAL_FUNC_CALL);
 }
 
diff --git a/dlls/vbscript/interp.c b/dlls/vbscript/interp.c
index 2a73a7fb51ab..20a1b33eab3a 100644
--- a/dlls/vbscript/interp.c
+++ b/dlls/vbscript/interp.c
@@ -25,6 +25,7 @@
 WINE_DEFAULT_DEBUG_CHANNEL(vbscript);
 
 static DISPID propput_dispid = DISPID_PROPERTYPUT;
+static const unsigned max_call_depth = 1024;
 
 typedef struct _exec_ctx_t {
     vbscode_t *code;
@@ -84,7 +85,7 @@ typedef struct {
 static BOOL lookup_dynamic_vars(dynamic_var_t *var, const WCHAR *name, ref_t *ref)
 {
     while(var) {
-        if(!wcsicmp(var->name, name)) {
+        if(!vbs_wcsicmp(var->name, name)) {
             ref->type = var->is_const ? REF_CONST : REF_VAR;
             ref->u.v = &var->v;
             return TRUE;
@@ -98,31 +99,24 @@ static BOOL lookup_dynamic_vars(dynamic_var_t *var, const WCHAR *name, ref_t *re
 
 static BOOL lookup_global_vars(ScriptDisp *script, const WCHAR *name, ref_t *ref)
 {
-    dynamic_var_t **vars = script->global_vars;
-    size_t i, cnt = script->global_vars_cnt;
+    dynamic_var_t *var = script_disp_find_var(script, name);
 
-    for(i = 0; i < cnt; i++) {
-        if(!wcsicmp(vars[i]->name, name)) {
-            ref->type = vars[i]->is_const ? REF_CONST : REF_VAR;
-            ref->u.v = &vars[i]->v;
-            return TRUE;
-        }
-    }
+    if(!var)
+        return FALSE;
 
-    return FALSE;
+    ref->type = var->is_const ? REF_CONST : REF_VAR;
+    ref->u.v = &var->v;
+    return TRUE;
 }
 
 static BOOL lookup_global_funcs(ScriptDisp *script, const WCHAR *name, ref_t *ref)
 {
-    function_t **funcs = script->global_funcs;
-    size_t i, cnt = script->global_funcs_cnt;
+    function_t *func = script_disp_find_func(script, name);
 
-    for(i = 0; i < cnt; i++) {
-        if(!wcsicmp(funcs[i]->name, name)) {
-            ref->type = REF_FUNC;
-            ref->u.f = funcs[i];
-            return TRUE;
-        }
+    if(func) {
+        ref->type = REF_FUNC;
+        ref->u.f = func;
+        return TRUE;
     }
 
     return FALSE;
@@ -138,7 +132,7 @@ static HRESULT lookup_identifier(exec_ctx_t *ctx, BSTR name, vbdisp_invoke_type_
 
     if(invoke_type != VBDISP_CALLGET
        && (ctx->func->type == FUNC_FUNCTION || ctx->func->type == FUNC_PROPGET)
-       && !wcsicmp(name, ctx->func->name)) {
+       && !vbs_wcsicmp(name, ctx->func->name)) {
         ref->type = REF_VAR;
         ref->u.v = &ctx->ret_val;
         return S_OK;
@@ -146,7 +140,7 @@ static HRESULT lookup_identifier(exec_ctx_t *ctx, BSTR name, vbdisp_invoke_type_
 
     if(ctx->func->type != FUNC_GLOBAL) {
         for(i=0; i < ctx->func->var_cnt; i++) {
-            if(!wcsicmp(ctx->func->vars[i].name, name)) {
+            if(!vbs_wcsicmp(ctx->func->vars[i].name, name)) {
                 ref->type = REF_VAR;
                 ref->u.v = ctx->vars+i;
                 return S_OK;
@@ -154,7 +148,7 @@ static HRESULT lookup_identifier(exec_ctx_t *ctx, BSTR name, vbdisp_invoke_type_
         }
 
         for(i=0; i < ctx->func->arg_cnt; i++) {
-            if(!wcsicmp(ctx->func->args[i].name, name)) {
+            if(!vbs_wcsicmp(ctx->func->args[i].name, name)) {
                 ref->type = REF_VAR;
                 ref->u.v = ctx->args+i;
                 return S_OK;
@@ -167,7 +161,7 @@ static HRESULT lookup_identifier(exec_ctx_t *ctx, BSTR name, vbdisp_invoke_type_
         if(ctx->vbthis) {
             /* FIXME: Bind such identifier while generating bytecode. */
             for(i=0; i < ctx->vbthis->desc->prop_cnt; i++) {
-                if(!wcsicmp(ctx->vbthis->desc->props[i].name, name)) {
+                if(!vbs_wcsicmp(ctx->vbthis->desc->props[i].name, name)) {
                     ref->type = REF_VAR;
                     ref->u.v = ctx->vbthis->props+i;
                     return S_OK;
@@ -188,7 +182,7 @@ static HRESULT lookup_identifier(exec_ctx_t *ctx, BSTR name, vbdisp_invoke_type_
         exec_ctx_t *caller = ctx->caller;
 
         for(i=0; i < caller->func->var_cnt; i++) {
-            if(!wcsicmp(caller->func->vars[i].name, name)) {
+            if(!vbs_wcsicmp(caller->func->vars[i].name, name)) {
                 ref->type = REF_VAR;
                 ref->u.v = caller->vars+i;
                 return S_OK;
@@ -196,7 +190,7 @@ static HRESULT lookup_identifier(exec_ctx_t *ctx, BSTR name, vbdisp_invoke_type_
         }
 
         for(i=0; i < caller->func->arg_cnt; i++) {
-            if(!wcsicmp(caller->func->args[i].name, name)) {
+            if(!vbs_wcsicmp(caller->func->args[i].name, name)) {
                 ref->type = REF_VAR;
                 ref->u.v = caller->args+i;
                 return S_OK;
@@ -300,6 +294,10 @@ static HRESULT add_dynamic_var(exec_ctx_t *ctx, const WCHAR *name,
             script_obj->global_vars = new_vars;
             script_obj->global_vars_size = cnt * 2;
         }
+        {
+            new_var->index = script_obj->global_vars_cnt;
+            rb_put(&script_obj->var_tree, new_var->name, &new_var->entry);
+        }
         script_obj->global_vars[script_obj->global_vars_cnt++] = new_var;
     }else {
         new_var->next = ctx->dynamic_vars;
@@ -326,6 +324,37 @@ void clear_error_loc(script_ctx_t *ctx)
     }
 }
 
+static HRESULT throw_error(script_ctx_t *ctx, HRESULT error, const WCHAR *identifier)
+{
+    BSTR desc, source;
+
+    desc = get_vbscript_string(HRESULT_CODE(error));
+    if(desc && identifier) {
+        unsigned desc_len = SysStringLen(desc);
+        unsigned ident_len = lstrlenW(identifier);
+        /* format: "Error text: 'identifier'" */
+        BSTR new_desc = SysAllocStringLen(NULL, desc_len + 3 + ident_len + 1);
+        if(new_desc) {
+            memcpy(new_desc, desc, desc_len * sizeof(WCHAR));
+            new_desc[desc_len] = ':';
+            new_desc[desc_len + 1] = ' ';
+            new_desc[desc_len + 2] = '\'';
+            memcpy(new_desc + desc_len + 3, identifier, ident_len * sizeof(WCHAR));
+            new_desc[desc_len + 3 + ident_len] = '\'';
+            SysFreeString(desc);
+            desc = new_desc;
+        }
+    }
+
+    source = get_vbscript_string(VBS_RUNTIME_ERROR);
+
+    clear_ei(&ctx->ei);
+    ctx->ei.scode = error;
+    ctx->ei.bstrDescription = desc;
+    ctx->ei.bstrSource = source;
+    return SCRIPT_E_RECORDED;
+}
+
 static inline VARIANT *stack_pop(exec_ctx_t *ctx)
 {
     assert(ctx->top);
@@ -442,24 +471,28 @@ static HRESULT stack_pop_bool(exec_ctx_t *ctx, BOOL *b)
 {
     variant_val_t val;
     HRESULT hres;
-    VARIANT v;
 
     hres = stack_pop_val(ctx, &val);
     if(FAILED(hres))
         return hres;
 
-    if (V_VT(val.v) == VT_NULL)
-    {
+    switch(V_VT(val.v)) {
+    case VT_BOOL:
+        *b = !!V_BOOL(val.v);
+        break;
+    case VT_NULL:
         *b = FALSE;
-    }
-    else
-    {
+        break;
+    default: {
+        VARIANT v;
         V_VT(&v) = VT_EMPTY;
-        if (SUCCEEDED(hres = VariantChangeType(&v, val.v, VARIANT_LOCALBOOL, VT_BOOL)))
+        hres = VariantChangeType(&v, val.v, VARIANT_LOCALBOOL, VT_BOOL);
+        if(SUCCEEDED(hres))
             *b = !!V_BOOL(&v);
+        release_val(&val);
+        break;
+    }
     }
-
-    release_val(&val);
 
     return hres;
 }
@@ -611,8 +644,8 @@ static HRESULT variant_call(exec_ctx_t *ctx, VARIANT *v, unsigned arg_cnt, VARIA
         stack_popn(ctx, arg_cnt);
         return hres;
     default:
-        FIXME("unsupported on %s\n", debugstr_variant(v));
-        return E_NOTIMPL;
+        WARN("unsupported on %s\n", debugstr_variant(v));
+        return DISP_E_TYPEMISMATCH;
     }
 
     if(!res) {
@@ -712,6 +745,8 @@ static HRESULT do_icall(exec_ctx_t *ctx, VARIANT *res, BSTR identifier, unsigned
             V_BYREF(res) = new;
             break;
         }
+        if(ctx->func->code_ctx->option_explicit)
+            return throw_error(ctx->script, MAKE_VBSERROR(VBSE_VARIABLE_UNDEFINED), identifier);
         FIXME("%s not found\n", debugstr_w(identifier));
         return DISP_E_UNKNOWNNAME;
     }
@@ -845,7 +880,7 @@ static HRESULT interp_ident(exec_ctx_t *ctx)
     TRACE("%s\n", debugstr_w(identifier));
 
     if((ctx->func->type == FUNC_FUNCTION || ctx->func->type == FUNC_PROPGET)
-       && !wcsicmp(identifier, ctx->func->name)) {
+       && !vbs_wcsicmp(identifier, ctx->func->name)) {
         V_VT(&v) = VT_BYREF|VT_VARIANT;
         V_BYREF(&v) = &ctx->ret_val;
         return stack_push(ctx, &v);
@@ -943,29 +978,28 @@ static HRESULT assign_ident(exec_ctx_t *ctx, BSTR name, WORD flags, DISPPARAMS *
         hres = disp_propput(ctx->script, ref.u.d.disp, ref.u.d.id, flags, dp);
         break;
     case REF_FUNC:
-        FIXME("functions not implemented\n");
-        return E_NOTIMPL;
+        WARN("assign to function %s\n", debugstr_w(name));
+        return MAKE_VBSERROR(VBSE_ILLEGAL_ASSIGNMENT);
     case REF_OBJ:
         FIXME("REF_OBJ\n");
         return E_NOTIMPL;
     case REF_CONST:
-        FIXME("REF_CONST\n");
-        return E_NOTIMPL;
-    case REF_NONE:
-        if(ctx->func->code_ctx->option_explicit) {
-            FIXME("throw exception\n");
-            hres = E_FAIL;
-        }else {
-            VARIANT *new_var;
+        WARN("assign to const %s\n", debugstr_w(name));
+        return MAKE_VBSERROR(VBSE_ILLEGAL_ASSIGNMENT);
+    case REF_NONE: {
+        VARIANT *new_var;
 
-            if(arg_cnt(dp))
-                return DISP_E_TYPEMISMATCH;
+        if(ctx->func->code_ctx->option_explicit)
+            return throw_error(ctx->script, MAKE_VBSERROR(VBSE_VARIABLE_UNDEFINED), name);
 
-            TRACE("creating variable %s\n", debugstr_w(name));
-            hres = add_dynamic_var(ctx, name, FALSE, &new_var);
-            if(SUCCEEDED(hres))
-                hres = assign_value(ctx, new_var, dp->rgvarg, flags);
-        }
+        if(arg_cnt(dp))
+            return DISP_E_TYPEMISMATCH;
+
+        TRACE("creating variable %s\n", debugstr_w(name));
+        hres = add_dynamic_var(ctx, name, FALSE, &new_var);
+        if(SUCCEEDED(hres))
+            hres = assign_value(ctx, new_var, dp->rgvarg, flags);
+    }
     }
 
     return hres;
@@ -1219,7 +1253,7 @@ static HRESULT interp_deref(exec_ctx_t *ctx)
 
 static HRESULT interp_new(exec_ctx_t *ctx)
 {
-    const WCHAR *arg = ctx->instr->arg1.bstr;
+    BSTR arg = ctx->instr->arg1.bstr;
     class_desc_t *class_desc = NULL;
     vbdisp_t *obj;
     VARIANT v;
@@ -1227,7 +1261,7 @@ static HRESULT interp_new(exec_ctx_t *ctx)
 
     TRACE("%s\n", debugstr_w(arg));
 
-    if(!wcsicmp(arg, L"regexp")) {
+    if(!vbs_wcsicmp(arg, L"regexp")) {
         V_VT(&v) = VT_DISPATCH;
         hres = create_regexp(&V_DISPATCH(&v));
         if(FAILED(hres))
@@ -1238,15 +1272,20 @@ static HRESULT interp_new(exec_ctx_t *ctx)
 
     if(ctx->code->named_item)
         for(class_desc = ctx->code->named_item->script_obj->classes; class_desc; class_desc = class_desc->next)
-            if(!wcsicmp(class_desc->name, arg))
+            if(!vbs_wcsicmp(class_desc->name, arg))
                 break;
     if(!class_desc)
         for(class_desc = ctx->script->script_obj->classes; class_desc; class_desc = class_desc->next)
-            if(!wcsicmp(class_desc->name, arg))
+            if(!vbs_wcsicmp(class_desc->name, arg))
                 break;
     if(!class_desc) {
-        FIXME("Class %s not found\n", debugstr_w(arg));
-        return E_FAIL;
+        ref_t ref;
+
+        hres = lookup_identifier(ctx, arg, VBDISP_ANY, &ref);
+        if(FAILED(hres))
+            return hres;
+        return MAKE_VBSERROR(ref.type == REF_NONE ? VBSE_VARIABLE_UNDEFINED
+                                                  : VBSE_CLASS_NOT_DEFINED);
     }
 
     hres = create_vbdisp(class_desc, &obj);
@@ -1273,14 +1312,10 @@ static HRESULT interp_dim(exec_ctx_t *ctx)
     assert(array_id < ctx->func->array_cnt);
 
     if(ctx->func->type == FUNC_GLOBAL) {
-        unsigned i;
-        for(i = 0; i < script_obj->global_vars_cnt; i++) {
-            if(!wcsicmp(script_obj->global_vars[i]->name, ident))
-                break;
-        }
-        assert(i < script_obj->global_vars_cnt);
-        v = &script_obj->global_vars[i]->v;
-        array_ref = &script_obj->global_vars[i]->array;
+        dynamic_var_t *var = script_disp_find_var(script_obj, ident);
+        assert(var != NULL);
+        v = &var->v;
+        array_ref = &var->array;
     }else {
         ref_t ref;
 
@@ -1548,14 +1583,24 @@ static HRESULT interp_step(exec_ctx_t *ctx)
 
     TRACE("%s\n", debugstr_w(ident));
 
-    if(V_VT(stack_top(ctx, 0)) == VT_EMPTY || V_VT(stack_top(ctx, 1)) == VT_EMPTY)
-        return MAKE_VBSERROR(VBSE_FOR_LOOP_NOT_INITIALIZED);
+    /* If to and step are VT_EMPTY, the For loop was not properly initialized
+     * (expression evaluation failed during On Error Resume Next). Set error 92
+     * and exit the loop. */
+    if(V_VT(stack_top(ctx, 0)) == VT_EMPTY && V_VT(stack_top(ctx, 1)) == VT_EMPTY) {
+        WARN("For loop not initialized\n");
+        clear_ei(&ctx->script->ei);
+        ctx->script->ei.scode = MAKE_VBSERROR(VBSE_FOR_LOOP_NOT_INITIALIZED);
+        map_vbs_exception(&ctx->script->ei);
+        stack_popn(ctx, 3);
+        instr_jmp(ctx, ctx->instr->arg1.uint);
+        return S_OK;
+    }
 
     V_VT(&zero) = VT_I2;
     V_I2(&zero) = 0;
     hres = VarCmp(stack_top(ctx, 0), &zero, ctx->script->lcid, 0);
     if(FAILED(hres))
-        return hres;
+        goto loop_not_initialized;
 
     gteq_zero = hres == VARCMP_GT || hres == VARCMP_EQ;
 
@@ -1570,15 +1615,21 @@ static HRESULT interp_step(exec_ctx_t *ctx)
 
     hres = VarCmp(ref.u.v, stack_top(ctx, 1), ctx->script->lcid, 0);
     if(FAILED(hres))
-        return hres;
+        goto loop_not_initialized;
 
     if(hres == VARCMP_EQ || hres == (gteq_zero ? VARCMP_LT : VARCMP_GT)) {
         ctx->instr++;
     }else {
-        stack_popn(ctx, 2);
+        stack_popn(ctx, 3);
         instr_jmp(ctx, ctx->instr->arg1.uint);
     }
     return S_OK;
+
+loop_not_initialized:
+    WARN("For loop not initialized\n");
+    stack_popn(ctx, 2);
+    instr_jmp(ctx, ctx->instr->arg1.uint);
+    return hres;
 }
 
 static HRESULT interp_newenum(exec_ctx_t *ctx)
@@ -2599,17 +2650,17 @@ HRESULT exec_add_caller_dynamic_var(script_ctx_t *script, exec_ctx_t *ctx, const
 
     /* Skip if name already exists in caller's locals, args, or dynamic vars */
     for(i = 0; i < ctx->func->var_cnt; i++) {
-        if(!wcsicmp(ctx->func->vars[i].name, name))
+        if(!vbs_wcsicmp(ctx->func->vars[i].name, name))
             return S_OK;
     }
     for(i = 0; i < ctx->func->arg_cnt; i++) {
-        if(!wcsicmp(ctx->func->args[i].name, name))
+        if(!vbs_wcsicmp(ctx->func->args[i].name, name))
             return S_OK;
     }
     {
         dynamic_var_t *var;
         for(var = ctx->dynamic_vars; var; var = var->next) {
-            if(!wcsicmp(var->name, name))
+            if(!vbs_wcsicmp(var->name, name))
                 return S_OK;
         }
     }
@@ -2643,13 +2694,18 @@ HRESULT exec_script(script_ctx_t *ctx, BOOL extern_caller, function_t *func, vbd
     vbsop_t op;
     HRESULT hres = S_OK;
 
+    if(!extern_caller && ctx->call_depth++ >= max_call_depth) {
+        ctx->call_depth--;
+        return MAKE_VBSERROR(VBSE_OUT_OF_STACK);
+    }
+
     exec.code = func->code_ctx;
     exec.caller = ctx->caller_exec;
     ctx->caller_exec = NULL;
 
     if(dp ? func->arg_cnt != arg_cnt(dp) : func->arg_cnt) {
-        FIXME("wrong arg_cnt %d, expected %d\n", dp ? arg_cnt(dp) : 0, func->arg_cnt);
-        return E_FAIL;
+        WARN("wrong arg_cnt %d, expected %d\n", dp ? arg_cnt(dp) : 0, func->arg_cnt);
+        return MAKE_VBSERROR(VBSE_FUNC_ARITY_MISMATCH);
     }
 
     heap_pool_init(&exec.heap);
@@ -2801,6 +2857,8 @@ HRESULT exec_script(script_ctx_t *ctx, BOOL extern_caller, function_t *func, vbd
     }
 
     ctx->current_named_item = prev_named_item;
+    if(!extern_caller)
+        ctx->call_depth--;
     release_exec(&exec);
     return hres;
 }
diff --git a/dlls/vbscript/lex.c b/dlls/vbscript/lex.c
index 1f9c4c3b18c6..81cc67e037be 100644
--- a/dlls/vbscript/lex.c
+++ b/dlls/vbscript/lex.c
@@ -28,6 +28,8 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(vbscript);
 
+#define MAX_IDENTIFIER_LENGTH 255
+
 static int lex_error(parser_ctx_t *ctx, HRESULT hres)
 {
     ctx->hres = hres;
@@ -102,11 +104,18 @@ static const struct {
     {L"xor",       tXOR}
 };
 
+/* VBScript identifiers are ASCII-only: [A-Za-z0-9_]. Windows rejects all
+ * non-ASCII characters (Latin-1, Cyrillic, CJK) at the lexer level with
+ * error 1032 "Invalid character". */
 static inline BOOL is_identifier_char(WCHAR c)
 {
-    return iswalnum(c) || c == '_';
+    return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') || c == '_';
 }
 
+/* Compare the current parse position against a keyword using ASCII-only
+ * case-insensitive matching. Keywords are all lowercase ASCII, so we only
+ * need to lowercase [A-Z] in the source. Returns 0 on match, <0 or >0
+ * for ordering (used by the binary search in check_keywords). */
 static int check_keyword(parser_ctx_t *ctx, const WCHAR *word, const WCHAR **lval)
 {
     const WCHAR *p1 = ctx->ptr;
@@ -114,7 +123,8 @@ static int check_keyword(parser_ctx_t *ctx, const WCHAR *word, const WCHAR **lva
     WCHAR c;
 
     while(p1 < ctx->end && *p2) {
-        c = towlower(*p1);
+        c = *p1;
+        if(c >= 'A' && c <= 'Z') c += 'a' - 'A';
         if(c != *p2)
             return c - *p2;
         p1++;
@@ -159,6 +169,9 @@ static int parse_identifier(parser_ctx_t *ctx, const WCHAR **ret)
         ctx->ptr++;
     len = ctx->ptr-ptr;
 
+    if(len > MAX_IDENTIFIER_LENGTH)
+        return lex_error(ctx, MAKE_VBSERROR(VBSE_IDENTIFIER_TOO_LONG));
+
     str = parser_alloc(ctx, (len+1)*sizeof(WCHAR));
     if(!str)
         return 0;
@@ -383,7 +396,7 @@ static int parse_hex_literal(parser_ctx_t *ctx, LONG *ret)
 
 static void skip_spaces(parser_ctx_t *ctx)
 {
-    while(*ctx->ptr == ' ' || *ctx->ptr == '\t')
+    while(*ctx->ptr == ' ' || *ctx->ptr == '\t' || *ctx->ptr == '\v' || *ctx->ptr == '\f')
         ctx->ptr++;
 }
 
@@ -397,6 +410,34 @@ static int comment_line(parser_ctx_t *ctx)
     return tNL;
 }
 
+static int parse_bracket_identifier(parser_ctx_t *ctx, const WCHAR **ret)
+{
+    const WCHAR *start = ++ctx->ptr;
+    WCHAR *str;
+    int len;
+
+    while(ctx->ptr < ctx->end && *ctx->ptr != ']' && *ctx->ptr != '\n' && *ctx->ptr != '\r')
+        ctx->ptr++;
+
+    if(ctx->ptr >= ctx->end || *ctx->ptr != ']')
+        return lex_error(ctx, MAKE_VBSERROR(VBSE_EXPECTED_RBRACKET));
+
+    len = ctx->ptr - start;
+    ctx->ptr++; /* skip ']' */
+
+    if(len > MAX_IDENTIFIER_LENGTH)
+        return lex_error(ctx, MAKE_VBSERROR(VBSE_IDENTIFIER_TOO_LONG));
+
+    str = parser_alloc(ctx, (len+1)*sizeof(WCHAR));
+    if(!str)
+        return 0;
+
+    memcpy(str, start, len*sizeof(WCHAR));
+    str[len] = 0;
+    *ret = str;
+    return tIdentifier;
+}
+
 static int parse_next_token(void *lval, unsigned *loc, parser_ctx_t *ctx)
 {
     WCHAR c;
@@ -411,7 +452,7 @@ static int parse_next_token(void *lval, unsigned *loc, parser_ctx_t *ctx)
     if('0' <= c && c <= '9')
         return parse_numeric_literal(ctx, lval);
 
-    if(iswalpha(c)) {
+    if((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
         int ret = 0;
         if(ctx->last_token != '.' && ctx->last_token != tDOT)
             ret = check_keywords(ctx, lval);
@@ -483,9 +524,12 @@ static int parse_next_token(void *lval, unsigned *loc, parser_ctx_t *ctx)
          * Parser can't predict if bracket is part of argument expression or an argument
          * in call expression. We predict it here instead.
          */
-        if(ctx->last_token == tIdentifier || ctx->last_token == ')' || ctx->last_token == tME)
+        if(ctx->last_token == tIdentifier || ctx->last_token == ')' || ctx->last_token == tME
+                || ctx->last_token == tEMPTYBRACKETS)
             return '(';
         return tEXPRLBRACKET;
+    case '[':
+        return parse_bracket_identifier(ctx, lval);
     case '"':
         return parse_string_literal(ctx, lval);
     case '#':
diff --git a/dlls/vbscript/parse.h b/dlls/vbscript/parse.h
index 8df2c77ab8ab..a4d5079d10ea 100644
--- a/dlls/vbscript/parse.h
+++ b/dlls/vbscript/parse.h
@@ -162,6 +162,7 @@ typedef struct _dim_list_t {
 
 typedef struct _dim_decl_t {
     const WCHAR *name;
+    unsigned loc;
     BOOL is_array;
     BOOL is_public; /* Used only for class members. */
     dim_list_t *dims;
@@ -203,6 +204,7 @@ typedef struct _function_decl_t {
     BOOL is_default;
     arg_decl_t *args;
     statement_t *body;
+    unsigned loc;
     struct _function_decl_t *next;
     struct _function_decl_t *next_prop_func;
 } function_decl_t;
diff --git a/dlls/vbscript/parser.y b/dlls/vbscript/parser.y
index 0d3bd4c9f43e..0bb45192698a 100644
--- a/dlls/vbscript/parser.y
+++ b/dlls/vbscript/parser.y
@@ -63,11 +63,11 @@ static statement_t *new_const_statement(parser_ctx_t*,unsigned,const_decl_t*);
 static statement_t *new_select_statement(parser_ctx_t*,unsigned,expression_t*,case_clausule_t*);
 static statement_t *new_with_statement(parser_ctx_t*,unsigned,expression_t*,statement_t*);
 
-static dim_decl_t *new_dim_decl(parser_ctx_t*,const WCHAR*,BOOL,dim_list_t*);
+static dim_decl_t *new_dim_decl(parser_ctx_t*,const WCHAR*,unsigned,BOOL,dim_list_t*);
 static dim_list_t *new_dim(parser_ctx_t*,unsigned,dim_list_t*);
 static redim_decl_t *new_redim_decl(parser_ctx_t*,const WCHAR*,expression_t*);
 static elseif_decl_t *new_elseif_decl(parser_ctx_t*,unsigned,expression_t*,statement_t*);
-static function_decl_t *new_function_decl(parser_ctx_t*,const WCHAR*,function_type_t,unsigned,arg_decl_t*,statement_t*);
+static function_decl_t *new_function_decl(parser_ctx_t*,const WCHAR*,function_type_t,unsigned,unsigned,arg_decl_t*,statement_t*);
 static arg_decl_t *new_argument_decl(parser_ctx_t*,const WCHAR*,BOOL);
 static const_decl_t *new_const_decl(parser_ctx_t*,const WCHAR*,expression_t*);
 static case_clausule_t *new_case_clausule(parser_ctx_t*,expression_t*,statement_t*,case_clausule_t*);
@@ -202,6 +202,13 @@ StatementsNl_opt
 StatementsNl
     : SimpleStatement StSep                 { $$ = $1; }
     | SimpleStatement StSep StatementsNl    { $$ = link_statements($1, $3); }
+    | SimpleStatement tEND tIF              { ctx->error_loc = @2; ctx->hres = MAKE_VBSERROR(VBSE_MUST_BE_FIRST_STATEMENT); YYABORT; }
+    | SimpleStatement tEND tSELECT         { ctx->error_loc = @2; ctx->hres = MAKE_VBSERROR(VBSE_MUST_BE_FIRST_STATEMENT); YYABORT; }
+    | SimpleStatement tEND tWHILE          { ctx->error_loc = @2; ctx->hres = MAKE_VBSERROR(VBSE_EXPECTED_STATEMENT); YYABORT; }
+    | SimpleStatement tWEND                { ctx->error_loc = @2; ctx->hres = MAKE_VBSERROR(VBSE_EXPECTED_END_OF_STATEMENT); YYABORT; }
+    | SimpleStatement tLOOP DoType Expression
+                                            { ctx->error_loc = @2; ctx->hres = MAKE_VBSERROR(VBSE_EXPECTED_END_OF_STATEMENT); YYABORT; }
+    | SimpleStatement tLOOP                { ctx->error_loc = @2; ctx->hres = MAKE_VBSERROR(VBSE_EXPECTED_END_OF_STATEMENT); YYABORT; }
 
 StatementNl
     : Statement tNL                         { $$ = $1; }
@@ -232,25 +239,38 @@ SimpleStatement
                                             { $$ = new_while_statement(ctx, @4, $5 ? STAT_DOWHILE : STAT_DOUNTIL, $6, $3);
                                               CHECK_ERROR; }
     | tDO StSep StatementsNl_opt tLOOP      { $$ = new_while_statement(ctx, @$, STAT_DOWHILE, NULL, $3); CHECK_ERROR; }
+    | tDO error                             { ctx->hres = MAKE_VBSERROR(VBSE_EXPECTED_WHILE_UNTIL_EOS); YYABORT; }
     | FunctionDecl                          { $$ = new_function_statement(ctx, @$, $1); CHECK_ERROR; }
-    | tEXIT tDO                             { $$ = new_statement(ctx, STAT_EXITDO, 0, @$); CHECK_ERROR; }
-    | tEXIT tFOR                            { $$ = new_statement(ctx, STAT_EXITFOR, 0, @$); CHECK_ERROR; }
-    | tEXIT tFUNCTION                       { $$ = new_statement(ctx, STAT_EXITFUNC, 0, @$); CHECK_ERROR; }
-    | tEXIT tPROPERTY                       { $$ = new_statement(ctx, STAT_EXITPROP, 0, @$); CHECK_ERROR; }
-    | tEXIT tSUB                            { $$ = new_statement(ctx, STAT_EXITSUB, 0, @$); CHECK_ERROR; }
-    | tSET CallExpression '=' Expression    { $$ = new_set_statement(ctx, @$, $2, $4); CHECK_ERROR; }
+    | tEXIT tDO                             { $$ = new_statement(ctx, STAT_EXITDO, 0, @2); CHECK_ERROR; }
+    | tEXIT tFOR                            { $$ = new_statement(ctx, STAT_EXITFOR, 0, @2); CHECK_ERROR; }
+    | tEXIT tFUNCTION                       { $$ = new_statement(ctx, STAT_EXITFUNC, 0, @2); CHECK_ERROR; }
+    | tEXIT tPROPERTY                       { $$ = new_statement(ctx, STAT_EXITPROP, 0, @2); CHECK_ERROR; }
+    | tEXIT tSUB                            { $$ = new_statement(ctx, STAT_EXITSUB, 0, @2); CHECK_ERROR; }
+    | tSET CallExpression '=' Expression    { if($2->type == EXPR_ME) { ctx->error_loc = @3; ctx->hres = MAKE_VBSERROR(VBSE_INVALID_USE_OF_ME); YYABORT; }
+                                             $$ = new_set_statement(ctx, @$, $2, $4); CHECK_ERROR; }
     | tSTOP                                 { $$ = new_statement(ctx, STAT_STOP, 0, @$); CHECK_ERROR; }
     | tON tERROR tRESUME tNEXT              { $$ = new_onerror_statement(ctx, @$, TRUE); CHECK_ERROR; }
     | tON tERROR tGOTO '0'                  { $$ = new_onerror_statement(ctx, @$, FALSE); CHECK_ERROR; }
     | tCONST ConstDeclList                  { $$ = new_const_statement(ctx, @$, $2); CHECK_ERROR; }
     | tFOR Identifier '=' Expression tTO Expression Step_opt StSep StatementsNl_opt tNEXT
                                             { $$ = new_forto_statement(ctx, @$, $2, $4, $6, $7, $9); CHECK_ERROR; }
+    | tFOR Identifier '=' Expression error
+                                            { ctx->hres = MAKE_VBSERROR(VBSE_EXPECTED_TO); YYABORT; }
     | tFOR tEACH Identifier tIN Expression StSep StatementsNl_opt tNEXT
                                             { $$ = new_foreach_statement(ctx, @$, $3, $5, $7); }
+    | tFOR tEACH Identifier error           { ctx->hres = MAKE_VBSERROR(VBSE_EXPECTED_IN); YYABORT; }
     | tSELECT tCASE Expression StSep CaseClausules tEND tSELECT
                                             { $$ = new_select_statement(ctx, @$, $3, $5); }
+    | tSELECT tCASE Expression StSep CaseClausules tEND error
+                                            { ctx->hres = MAKE_VBSERROR(VBSE_EXPECTED_SELECT); YYABORT; }
+    | tSELECT error                         { ctx->hres = MAKE_VBSERROR(VBSE_EXPECTED_CASE); YYABORT; }
     | tWITH Expression StSep StatementsNl_opt tEND tWITH
                                             { $$ = new_with_statement(ctx, @$, $2, $4); }
+    | tWITH Expression StSep StatementsNl_opt tEND error
+                                            { ctx->hres = MAKE_VBSERROR(VBSE_EXPECTED_WITH); YYABORT; }
+    | tPROPERTY tGET                        { ctx->error_loc = @2; ctx->hres = MAKE_VBSERROR(VBSE_MUST_BE_INSIDE_CLASS); YYABORT; }
+    | tPROPERTY tLET                        { ctx->error_loc = @2; ctx->hres = MAKE_VBSERROR(VBSE_MUST_BE_INSIDE_CLASS); YYABORT; }
+    | tPROPERTY tSET                        { ctx->error_loc = @2; ctx->hres = MAKE_VBSERROR(VBSE_MUST_BE_INSIDE_CLASS); YYABORT; }
 
 MemberExpression
     : Identifier                            { $$ = new_member_expression(ctx, NULL, $1); CHECK_ERROR; }
@@ -267,9 +287,9 @@ MemberDeclList
     | MemberDecl ',' MemberDeclList         { $1->next = $3; $$ = $1; }
 
 MemberDecl
-    : MemberIdentifier                      { $$ = new_dim_decl(ctx, $1, FALSE, NULL); CHECK_ERROR; }
-    | MemberIdentifier '(' DimList ')'      { $$ = new_dim_decl(ctx, $1, TRUE, $3); CHECK_ERROR; }
-    | MemberIdentifier tEMPTYBRACKETS       { $$ = new_dim_decl(ctx, $1, TRUE, NULL); CHECK_ERROR; }
+    : MemberIdentifier                      { $$ = new_dim_decl(ctx, $1, @1, FALSE, NULL); CHECK_ERROR; }
+    | MemberIdentifier '(' DimList ')'      { $$ = new_dim_decl(ctx, $1, @1, TRUE, $3); CHECK_ERROR; }
+    | MemberIdentifier tEMPTYBRACKETS       { $$ = new_dim_decl(ctx, $1, @1, TRUE, NULL); CHECK_ERROR; }
 
 ReDimDecl
     : tIdentifier '(' ArgumentList ')'      { $$ = new_redim_decl(ctx, $1, $3); CHECK_ERROR; }
@@ -284,13 +304,14 @@ DimDeclList
     | DimDecl ',' DimDeclList               { $1->next = $3; $$ = $1; }
 
 DimDecl
-    : Identifier                            { $$ = new_dim_decl(ctx, $1, FALSE, NULL); CHECK_ERROR; }
-    | Identifier '(' DimList ')'            { $$ = new_dim_decl(ctx, $1, TRUE, $3); CHECK_ERROR; }
-    | Identifier tEMPTYBRACKETS             { $$ = new_dim_decl(ctx, $1, TRUE, NULL); CHECK_ERROR; }
+    : Identifier                            { $$ = new_dim_decl(ctx, $1, @1, FALSE, NULL); CHECK_ERROR; }
+    | Identifier '(' DimList ')'            { $$ = new_dim_decl(ctx, $1, @1, TRUE, $3); CHECK_ERROR; }
+    | Identifier tEMPTYBRACKETS             { $$ = new_dim_decl(ctx, $1, @1, TRUE, NULL); CHECK_ERROR; }
 
 DimList
     : IntegerValue                          { $$ = new_dim(ctx, $1, NULL); }
     | IntegerValue ',' DimList              { $$ = new_dim(ctx, $1, $3); }
+    | error                                 { ctx->hres = MAKE_VBSERROR(VBSE_EXPECTED_INTEGER_CONSTANT); YYABORT; }
 
 ConstDeclList
     : ConstDecl                             { $$ = $1; }
@@ -298,6 +319,7 @@ ConstDeclList
 
 ConstDecl
     : Identifier '=' ConstExpression        { $$ = new_const_decl(ctx, $1, $3); CHECK_ERROR; }
+    | Identifier error                      { ctx->hres = MAKE_VBSERROR(VBSE_EXPECTED_ASSIGN); YYABORT; }
 
 ConstExpression
     : LiteralExpression                     { $$ = $1; }
@@ -319,6 +341,9 @@ IfStatement
                                                 { $$ = new_if_statement(ctx, @$, $2, $4, NULL, $6); CHECK_ERROR; }
     | tIF Expression tTHEN Statement tELSE EndIf_opt
                                                 { $$ = new_if_statement(ctx, @$, $2, $4, NULL, NULL); CHECK_ERROR; }
+    | tIF Expression tTHEN tNL StSep_opt StatementsNl_opt ElseIfs_opt Else_opt tEND error
+                                                { ctx->hres = MAKE_VBSERROR(VBSE_EXPECTED_IF); YYABORT; }
+    | tIF Expression error                       { ctx->hres = MAKE_VBSERROR(VBSE_EXPECTED_THEN); YYABORT; }
 
 EndIf_opt
     : /* empty */
@@ -342,6 +367,7 @@ Else_opt
     : /* empty */                           { $$ = NULL; }
     | tELSE StSep StatementsBody_opt        { $$ = $3; }
     | tELSE StatementsBody                  { $$ = $2; }
+    | tELSE tEND tIF                        { ctx->error_loc = @2; ctx->hres = MAKE_VBSERROR(VBSE_EXPECTED_STATEMENT); YYABORT; }
 
 StatementsBody_opt
     : /* empty */                           { $$ = NULL; }
@@ -477,10 +503,13 @@ IntegerValue
 
 PrimaryExpression
     : tEXPRLBRACKET Expression ')'            { $$ = new_unary_expression(ctx, EXPR_BRACKETS, $2); }
+    | tEXPRLBRACKET Expression error          { ctx->hres = MAKE_VBSERROR(VBSE_EXPECTED_RPAREN); YYABORT; }
     | tME                           { $$ = new_expression(ctx, EXPR_ME, 0); CHECK_ERROR; }
 
 ClassDeclaration
     : tCLASS Identifier StSep ClassBody tEND tCLASS StSep       { $4->name = $2; $$ = $4; }
+    | tCLASS Identifier tEND tCLASS         { ctx->error_loc = @3; ctx->hres = MAKE_VBSERROR(VBSE_EXPECTED_STATEMENT); YYABORT; }
+    | tCLASS Identifier StSep ClassBody tEND error               { ctx->hres = MAKE_VBSERROR(VBSE_EXPECTED_CLASS); YYABORT; }
 
 ClassBody
     : /* empty */                                 { $$ = new_class_decl(ctx); }
@@ -495,21 +524,46 @@ ClassBody
 
 PropertyDecl
     : Storage_opt tPROPERTY tGET Identifier ArgumentsDecl_opt StSep BodyStatements tEND tPROPERTY
-                                    { $$ = new_function_decl(ctx, $4, FUNC_PROPGET, $1, $5, $7); CHECK_ERROR; }
+                                    { $$ = new_function_decl(ctx, $4, FUNC_PROPGET, @2, $1, $5, $7); CHECK_ERROR; }
     | Storage_opt tPROPERTY tLET Identifier '(' ArgumentDeclList ')' StSep BodyStatements tEND tPROPERTY
-                                    { $$ = new_function_decl(ctx, $4, FUNC_PROPLET, $1, $6, $9); CHECK_ERROR; }
+                                    { if($1 & STORAGE_IS_DEFAULT) { ctx->error_loc = @3; ctx->hres = MAKE_VBSERROR(VBSE_DEFAULT_ONLY_ON_PROPERTY_GET); YYABORT; }
+                                      $$ = new_function_decl(ctx, $4, FUNC_PROPLET, @2, $1, $6, $9); CHECK_ERROR; }
     | Storage_opt tPROPERTY tSET Identifier '(' ArgumentDeclList ')' StSep BodyStatements tEND tPROPERTY
-                                    { $$ = new_function_decl(ctx, $4, FUNC_PROPSET, $1, $6, $9); CHECK_ERROR; }
+                                    { if($1 & STORAGE_IS_DEFAULT) { ctx->error_loc = @3; ctx->hres = MAKE_VBSERROR(VBSE_DEFAULT_ONLY_ON_PROPERTY_GET); YYABORT; }
+                                      $$ = new_function_decl(ctx, $4, FUNC_PROPSET, @2, $1, $6, $9); CHECK_ERROR; }
+    | Storage_opt tPROPERTY tGET Identifier ArgumentsDecl_opt StSep BodyStatements tEND error
+                                    { ctx->hres = MAKE_VBSERROR(VBSE_EXPECTED_PROPERTY); YYABORT; }
+    | Storage_opt tPROPERTY tLET Identifier '(' ArgumentDeclList ')' StSep BodyStatements tEND error
+                                    { ctx->hres = MAKE_VBSERROR(VBSE_EXPECTED_PROPERTY); YYABORT; }
+    | Storage_opt tPROPERTY tSET Identifier '(' ArgumentDeclList ')' StSep BodyStatements tEND error
+                                    { ctx->hres = MAKE_VBSERROR(VBSE_EXPECTED_PROPERTY); YYABORT; }
+    | Storage_opt tPROPERTY tLET Identifier error
+                                    { ctx->hres = MAKE_VBSERROR(VBSE_PROPERTY_LET_SET_NEEDS_ARG); YYABORT; }
+    | Storage_opt tPROPERTY tSET Identifier error
+                                    { ctx->hres = MAKE_VBSERROR(VBSE_PROPERTY_LET_SET_NEEDS_ARG); YYABORT; }
+    | Storage_opt tPROPERTY error   { ctx->hres = MAKE_VBSERROR(VBSE_EXPECTED_LET_SET_GET); YYABORT; }
 
 FunctionDecl
     : Storage_opt tSUB Identifier StSep BodyStatements tEND tSUB
-                                    { $$ = new_function_decl(ctx, $3, FUNC_SUB, $1, NULL, $5); CHECK_ERROR; }
+                                    { $$ = new_function_decl(ctx, $3, FUNC_SUB, @2, $1, NULL, $5); CHECK_ERROR; }
     | Storage_opt tSUB Identifier ArgumentsDecl Nl_opt BodyStatements tEND tSUB
-                                    { $$ = new_function_decl(ctx, $3, FUNC_SUB, $1, $4, $6); CHECK_ERROR; }
+                                    { $$ = new_function_decl(ctx, $3, FUNC_SUB, @2, $1, $4, $6); CHECK_ERROR; }
+    | Storage_opt tSUB Identifier StSep BodyStatements tEND error
+                                    { ctx->hres = MAKE_VBSERROR(VBSE_EXPECTED_SUB); YYABORT; }
+    | Storage_opt tSUB Identifier ArgumentsDecl Nl_opt BodyStatements tEND error
+                                    { ctx->hres = MAKE_VBSERROR(VBSE_EXPECTED_SUB); YYABORT; }
     | Storage_opt tFUNCTION Identifier StSep BodyStatements tEND tFUNCTION
-                                    { $$ = new_function_decl(ctx, $3, FUNC_FUNCTION, $1, NULL, $5); CHECK_ERROR; }
+                                    { $$ = new_function_decl(ctx, $3, FUNC_FUNCTION, @2, $1, NULL, $5); CHECK_ERROR; }
     | Storage_opt tFUNCTION Identifier ArgumentsDecl Nl_opt BodyStatements tEND tFUNCTION
-                                    { $$ = new_function_decl(ctx, $3, FUNC_FUNCTION, $1, $4, $6); CHECK_ERROR; }
+                                    { $$ = new_function_decl(ctx, $3, FUNC_FUNCTION, @2, $1, $4, $6); CHECK_ERROR; }
+    | Storage_opt tFUNCTION Identifier StSep BodyStatements tEND error
+                                    { ctx->hres = MAKE_VBSERROR(VBSE_EXPECTED_FUNCTION); YYABORT; }
+    | Storage_opt tFUNCTION Identifier ArgumentsDecl Nl_opt BodyStatements tEND error
+                                    { ctx->hres = MAKE_VBSERROR(VBSE_EXPECTED_FUNCTION); YYABORT; }
+    | Storage_opt tSUB Identifier error
+                                    { ctx->hres = MAKE_VBSERROR(VBSE_EXPECTED_LPAREN); YYABORT; }
+    | Storage_opt tFUNCTION Identifier error
+                                    { ctx->hres = MAKE_VBSERROR(VBSE_EXPECTED_LPAREN); YYABORT; }
 
 Storage_opt
     : /* empty*/                    { $$ = 0; }
@@ -866,7 +920,7 @@ static statement_t *new_set_statement(parser_ctx_t *ctx, unsigned loc, expressio
     return &stat->stat;
 }
 
-static dim_decl_t *new_dim_decl(parser_ctx_t *ctx, const WCHAR *name, BOOL is_array, dim_list_t *dims)
+static dim_decl_t *new_dim_decl(parser_ctx_t *ctx, const WCHAR *name, unsigned loc, BOOL is_array, dim_list_t *dims)
 {
     dim_decl_t *decl;
 
@@ -875,6 +929,7 @@ static dim_decl_t *new_dim_decl(parser_ctx_t *ctx, const WCHAR *name, BOOL is_ar
         return NULL;
 
     decl->name = name;
+    decl->loc = loc;
     decl->is_array = is_array;
     decl->dims = dims;
     decl->next = NULL;
@@ -1088,7 +1143,7 @@ static arg_decl_t *new_argument_decl(parser_ctx_t *ctx, const WCHAR *name, BOOL
 }
 
 static function_decl_t *new_function_decl(parser_ctx_t *ctx, const WCHAR *name, function_type_t type,
-        unsigned storage_flags, arg_decl_t *arg_decl, statement_t *body)
+        unsigned loc, unsigned storage_flags, arg_decl_t *arg_decl, statement_t *body)
 {
     function_decl_t *decl;
     BOOL is_default = FALSE;
@@ -1097,8 +1152,7 @@ static function_decl_t *new_function_decl(parser_ctx_t *ctx, const WCHAR *name,
         if(type == FUNC_PROPGET || type == FUNC_FUNCTION || type == FUNC_SUB) {
             is_default = TRUE;
         }else {
-            FIXME("Invalid default property\n");
-            ctx->hres = E_FAIL;
+            ctx->hres = MAKE_VBSERROR(VBSE_DEFAULT_ONLY_ON_PROPERTY_GET);
             return NULL;
         }
     }
@@ -1113,6 +1167,7 @@ static function_decl_t *new_function_decl(parser_ctx_t *ctx, const WCHAR *name,
     decl->is_default = is_default;
     decl->args = arg_decl;
     decl->body = body;
+    decl->loc = loc;
     decl->next = NULL;
     decl->next_prop_func = NULL;
     return decl;
@@ -1144,11 +1199,37 @@ static class_decl_t *new_class_decl(parser_ctx_t *ctx)
     return class_decl;
 }
 
+static unsigned count_args(arg_decl_t *args)
+{
+    unsigned cnt = 0;
+    while(args) { cnt++; args = args->next; }
+    return cnt;
+}
+
+static BOOL check_property_args(function_decl_t *a, function_decl_t *b)
+{
+    unsigned a_cnt = count_args(a->args);
+    unsigned b_cnt = count_args(b->args);
+
+    /* Property Get takes N args, Property Let/Set takes N+1 */
+    if(a->type == FUNC_PROPGET)
+        return (b_cnt == a_cnt + 1);
+    if(b->type == FUNC_PROPGET)
+        return (a_cnt == b_cnt + 1);
+    /* Let vs Set: same arg count */
+    return (a_cnt == b_cnt);
+}
+
 static class_decl_t *add_class_function(parser_ctx_t *ctx, class_decl_t *class_decl, function_decl_t *decl)
 {
     function_decl_t *iter;
 
     for(iter = class_decl->funcs; iter; iter = iter->next) {
+        if(decl->is_default && iter->is_default) {
+            ctx->error_loc = iter->loc;
+            ctx->hres = MAKE_VBSERROR(VBSE_MULTIPLE_DEFAULT_MEMBERS);
+            return NULL;
+        }
         if(!wcsicmp(iter->name, decl->name)) {
             if(decl->type == FUNC_SUB || decl->type == FUNC_FUNCTION) {
                 ctx->hres = MAKE_VBSERROR(VBSE_NAME_REDEFINED);
@@ -1165,6 +1246,11 @@ static class_decl_t *add_class_function(parser_ctx_t *ctx, class_decl_t *class_d
                 iter = iter->next_prop_func;
             }
 
+            if(!check_property_args(iter, decl)) {
+                ctx->error_loc = decl->loc;
+                ctx->hres = MAKE_VBSERROR(VBSE_PROPERTY_ARG_COUNT_MISMATCH);
+                return NULL;
+            }
             iter->next_prop_func = decl;
             return class_decl;
         }
diff --git a/dlls/vbscript/tests/api.vbs b/dlls/vbscript/tests/api.vbs
index 47e3ddee84b1..2a4f69f0f590 100644
--- a/dlls/vbscript/tests/api.vbs
+++ b/dlls/vbscript/tests/api.vbs
@@ -2728,4 +2728,70 @@ end sub
 
 call testEscapeError()
 
+' Filter tests
+Dim filterArr, filterResult
+filterArr = Array("apple", "banana", "grape", "pineapple", "orange")
+
+' Include matches (default)
+filterResult = Filter(filterArr, "ap")
+Call ok(UBound(filterResult) = 2, "Filter include UBound = " & UBound(filterResult))
+Call ok(LBound(filterResult) = 0, "Filter include LBound = " & LBound(filterResult))
+Call ok(filterResult(0) = "apple", "Filter include (0) = " & filterResult(0))
+Call ok(filterResult(1) = "grape", "Filter include (1) = " & filterResult(1))
+Call ok(filterResult(2) = "pineapple", "Filter include (2) = " & filterResult(2))
+
+' Exclude matches
+filterResult = Filter(filterArr, "ap", False)
+Call ok(UBound(filterResult) = 1, "Filter exclude UBound = " & UBound(filterResult))
+Call ok(filterResult(0) = "banana", "Filter exclude (0) = " & filterResult(0))
+Call ok(filterResult(1) = "orange", "Filter exclude (1) = " & filterResult(1))
+
+' Case-sensitive (default binary compare)
+filterResult = Filter(filterArr, "AP")
+Call ok(UBound(filterResult) = -1, "Filter case-sensitive UBound = " & UBound(filterResult))
+
+' Case-insensitive (text compare)
+filterResult = Filter(filterArr, "AP", True, 1)
+Call ok(UBound(filterResult) = 2, "Filter text compare UBound = " & UBound(filterResult))
+
+' Empty search string returns all elements
+filterResult = Filter(filterArr, "")
+Call ok(UBound(filterResult) = UBound(filterArr), "Filter empty search UBound = " & UBound(filterResult))
+
+' No matches returns empty array
+filterResult = Filter(filterArr, "xyz")
+Call ok(UBound(filterResult) = -1, "Filter no match UBound = " & UBound(filterResult))
+
+' Single element match
+filterResult = Filter(Array("hello"), "ell")
+Call ok(UBound(filterResult) = 0, "Filter single match UBound = " & UBound(filterResult))
+Call ok(filterResult(0) = "hello", "Filter single match (0) = " & filterResult(0))
+
+' Single element no match
+filterResult = Filter(Array("hello"), "xyz")
+Call ok(UBound(filterResult) = -1, "Filter single no match UBound = " & UBound(filterResult))
+
+sub testFilterError()
+    on error resume next
+    dim r
+
+    call Err.clear()
+    r = Filter(Null, "test")
+    Call ok(Err.number = 94, "Filter(Null) Err.number = " & Err.number)
+
+    call Err.clear()
+    r = Filter(filterArr, Null)
+    Call ok(Err.number = 94, "Filter(arr, Null) Err.number = " & Err.number)
+
+    call Err.clear()
+    r = Filter("not_array", "test")
+    Call ok(Err.number = 13, "Filter(string) Err.number = " & Err.number)
+
+    call Err.clear()
+    r = Filter(filterArr, "ap", True, 5)
+    Call ok(Err.number = 5, "Filter(mode=5) Err.number = " & Err.number)
+end sub
+
+call testFilterError()
+
 Call reportSuccess()
diff --git a/dlls/vbscript/tests/error.vbs b/dlls/vbscript/tests/error.vbs
index ce08bcec67a4..843c27a01bb3 100644
--- a/dlls/vbscript/tests/error.vbs
+++ b/dlls/vbscript/tests/error.vbs
@@ -216,11 +216,11 @@ sub testThrow
     x = 6
     for x = 100 to throwInt(E_TESTERROR)
         call ok(Err.Number = E_TESTERROR, "Err.Number = " & Err.Number)
-        call todo_wine_ok(x = 6, "x = " & x)
+        call ok(x = 6, "x = " & x)
         y = y+1
     next
     call ok(y = 1, "y = " & y)
-    call todo_wine_ok(x = 6, "x = " & x)
+    call ok(x = 6, "x = " & x)
     call ok(Err.Number = VB_E_FORLOOPNOTINITIALIZED, "Err.Number = " & Err.Number)
 
     Err.clear()
@@ -228,12 +228,12 @@ sub testThrow
     x = 6
     for x = 100 to 200 step throwInt(E_TESTERROR)
         call ok(Err.Number = E_TESTERROR, "Err.Number = " & Err.Number)
-        call todo_wine_ok(x = 6, "x = " & x)
+        call ok(x = 6, "x = " & x)
         y = y+1
     next
     call ok(y = 1, "y = " & y)
-    call todo_wine_ok(x = 6, "x = " & x)
-    call todo_wine_ok(Err.Number = VB_E_FORLOOPNOTINITIALIZED, "Err.Number = " & Err.Number)
+    call ok(x = 6, "x = " & x)
+    call ok(Err.Number = VB_E_FORLOOPNOTINITIALIZED, "Err.Number = " & Err.Number)
 
     select case throwInt(E_TESTERROR)
     case true
@@ -499,32 +499,24 @@ ok err.number = &hdeadbeef&, "err.number = " & hex(err.number)
 ok err.description = "test", "err.description = " & err.description
 ok err.helpcontext = 10, "err.helpcontext = " & err.helpcontext
 ok err.helpfile = "test.chm", "err.helpfile = " & err.helpfile
+err.clear
 
 throwWithDesc = 1
 ok err.number = &hdeadbeef&, "err.number = " & hex(err.number)
 ok err.description = "test", "err.description = " & err.description
 ok err.helpcontext = 10, "err.helpcontext = " & err.helpcontext
 ok err.helpfile = "test.chm", "err.helpfile = " & err.helpfile
-
-on error goto 0
-
-' indexed assign to non-array variable should give type mismatch
-dim z
-z = 42
-on error resume next
-z(0) = 1
-ok err.number = 13, "err.number = " & err.number
 err.clear
 
 ' Option Explicit: assigning to undeclared variable should give error 500
 undeclaredVar = 1
-todo_wine_ok err.number = 500, "err.number = " & err.number
+ok err.number = 500, "err.number = " & err.number
 err.clear
 
 ' Option Explicit: reading undeclared variable should give error 500
 dim unused
 unused = undeclaredVar2
-todo_wine_ok err.number = 500, "err.number = " & err.number
+ok err.number = 500, "err.number = " & err.number
 on error goto 0
 
 sub testObjectRequired()
diff --git a/dlls/vbscript/tests/lang.vbs b/dlls/vbscript/tests/lang.vbs
index ed4836021764..69cf42178e08 100644
--- a/dlls/vbscript/tests/lang.vbs
+++ b/dlls/vbscript/tests/lang.vbs
@@ -273,6 +273,52 @@ x _
 
 x = 3
 
+' Maximum identifier length (255 chars)
+Dim aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa = 42
+Call ok(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa = 42, "255-char identifier should work")
+
+' Bracketed identifiers
+Dim [my var]
+[my var] = 42
+Call ok([my var] = 42, "[my var] = " & [my var])
+
+Dim [hello world!]
+[hello world!] = "works"
+Call ok([hello world!] = "works", "[hello world!] = " & [hello world!])
+
+Dim []
+[] = "empty"
+Call ok([] = "empty", "[] = " & [])
+
+Dim [   ]
+[   ] = "spaces"
+Call ok([   ] = "spaces", "[   ] = " & [   ])
+
+Dim [dim]
+[dim] = 99
+Call ok([dim] = 99, "[dim] = " & [dim])
+
+Class BracketTestObj
+    Public [my property]
+    Public Sub Class_Initialize
+        [my property] = "init"
+    End Sub
+End Class
+
+Dim bracketObj
+Set bracketObj = New BracketTestObj
+bracketObj.[my property] = "updated"
+Call ok(bracketObj.[my property] = "updated", "bracketObj.[my property] = " & bracketObj.[my property])
+
+Dim [loop var]
+Dim bracketTotal : bracketTotal = 0
+For [loop var] = 1 To 3
+    bracketTotal = bracketTotal + [loop var]
+Next
+Call ok(bracketTotal = 6, "For [loop var] total = " & bracketTotal)
+
+' Chained call syntax
 Class ChainedCallTarget
     Public Function Ret()
         Set Ret = Me
@@ -855,6 +901,76 @@ do while true
     next
 loop
 
+' For loop control variable should not be modified when expression evaluation fails
+on error resume next
+
+x = 6
+y = 0
+err.clear
+for x = 1/0 to 100
+    y = y + 1
+next
+call ok(err.number = 92, "for (from error): err.number = " & err.number)
+call ok(x = 6, "for (from error): x = " & x)
+
+x = 6
+y = 0
+err.clear
+for x = 100 to 1/0
+    y = y + 1
+next
+call ok(err.number = 92, "for (to error): err.number = " & err.number)
+call ok(x = 6, "for (to error): x = " & x)
+
+x = 6
+y = 0
+err.clear
+for x = 100 to 200 step 1/0
+    y = y + 1
+next
+call ok(err.number = 92, "for (step error): err.number = " & err.number)
+call ok(x = 6, "for (step error): x = " & x)
+
+z = 99
+y = 0
+err.clear
+for z = 1 to UBound(empty)
+    y = y + 1
+next
+call ok(err.number = 92, "for (UBound(empty)): err.number = " & err.number)
+call ok(z = 99, "for (UBound(empty)): z = " & z)
+
+' For loop variable set to incompatible type during iteration
+x = 0
+y = 0
+err.clear
+for x = 1 to 5
+    y = y + 1
+    if x = 3 then x = "not a number"
+next
+call ok(y = 3, "for (type change): y = " & y)
+call ok(x = "not a number", "for (type change): x = " & x)
+call ok(err.number = 13, "for (type change): err.number = " & err.number)
+
+on error goto 0
+
+' For loop expression evaluation order: from, to, step
+dim eval_order
+function trackEval(val, label)
+    eval_order = eval_order & label
+    trackEval = val
+end function
+
+eval_order = ""
+for x = trackEval(1, "F") to trackEval(5, "T") step trackEval(1, "S")
+next
+call ok(eval_order = "FTS", "for eval order = " & eval_order)
+
+eval_order = ""
+for x = trackEval(1, "F") to trackEval(5, "T")
+next
+call ok(eval_order = "FT", "for eval order (no step) = " & eval_order)
+
 if null then call ok(false, "if null evaluated")
 
 while null
@@ -1188,6 +1304,37 @@ Sub TestDimVsConst
 End Sub
 Call TestDimVsConst
 
+Sub TestIllegalAssignment
+    on error resume next
+
+    ' Assign to Const should give error 501
+    err.clear
+    c10 = 99
+    Call ok(err.number = 501, "assign to const: err.number = " & err.number)
+    Call ok(c10 = 10, "c10 = " & c10)
+
+    ' Set on Const should give error 501
+    err.clear
+    set c10 = Nothing
+    Call ok(err.number = 501, "set const: err.number = " & err.number)
+
+    ' Assign to Sub name should give error 501
+    err.clear
+    TestIllegalAssignment = 10
+    Call ok(err.number = 501, "assign to sub name: err.number = " & err.number)
+End Sub
+Call TestIllegalAssignment
+
+' Assign to function name from outside should give error 501
+Function IllegalAssignTarget
+    IllegalAssignTarget = 0
+End Function
+on error resume next
+err.clear
+IllegalAssignTarget = 10
+Call ok(err.number = 501, "assign to func name: err.number = " & err.number)
+on error goto 0
+
 Function TestFuncMultiArgs(a,b,c,d,e)
     Call ok(a=1, "a = " & a)
     Call ok(b=2, "b = " & b)
@@ -1740,6 +1887,53 @@ call ok(containerObj("Key")(1)(0) = "SubValue1", "containerObj(Key)(1)(0) = " &
 
 call ok(Split("1;2", ";")(0) = "1", "Split(""1;2"", "";"")(0) = " & Split("1;2", ";")(0))
 call ok(Split("1;2", ";")(1) = "2", "Split(""1;2"", "";"")(1) = " & Split("1;2", ";")(1))
+Function GetABC()
+    GetABC = Array("a", "b", "c")
+End Function
+call ok(GetABC()(0) = "a", "GetABC()(0) = " & GetABC()(0))
+call ok(GetABC()(1) = "b", "GetABC()(1) = " & GetABC()(1))
+call ok(GetABC()(2) = "c", "GetABC()(2) = " & GetABC()(2))
+
+Function GetNested()
+    GetNested = Array(Array(1, 2), Array(3, 4))
+End Function
+call ok(GetNested()(0)(0) = 1, "GetNested()(0)(0) = " & GetNested()(0)(0))
+call ok(GetNested()(0)(1) = 2, "GetNested()(0)(1) = " & GetNested()(0)(1))
+call ok(GetNested()(1)(0) = 3, "GetNested()(1)(0) = " & GetNested()(1)(0))
+call ok(GetNested()(1)(1) = 4, "GetNested()(1)(1) = " & GetNested()(1)(1))
+
+x = GetABC()(0) & GetABC()(2)
+call ok(x = "ac", "GetABC()(0) & GetABC()(2) = " & x)
+
+call ok(Array(10,20,30)(1) = 20, "Array(10,20,30)(1) = " & Array(10,20,30)(1))
+
+' Chained call with dot accessor: dict.Keys()(0)
+Dim chainDict
+Set chainDict = CreateObject("Scripting.Dictionary")
+chainDict.Add "first", 1
+chainDict.Add "second", 2
+call ok(chainDict.Keys()(0) = "first", "dict.Keys()(0) = " & chainDict.Keys()(0))
+call ok(chainDict.Keys()(1) = "second", "dict.Keys()(1) = " & chainDict.Keys()(1))
+call ok(chainDict.Items()(0) = 1, "dict.Items()(0) = " & chainDict.Items()(0))
+
+' Dot accessor after chained index: dict.Items()(0).Item("key")
+Dim chainInner
+Set chainInner = CreateObject("Scripting.Dictionary")
+chainInner.Add "x", 42
+Dim chainOuter
+Set chainOuter = CreateObject("Scripting.Dictionary")
+chainOuter.Add "inner", chainInner
+call ok(chainOuter.Items()(0).Item("x") = 42, "dict.Items()(0).Item(""x"") = " & chainOuter.Items()(0).Item("x"))
+
+' Chained call as argument to function: Len(GetABC()(0))
+call ok(Len(GetABC()(0)) = 1, "Len(GetABC()(0)) = " & Len(GetABC()(0)))
+call ok(UBound(GetABC()) = 2, "UBound(GetABC()) = " & UBound(GetABC()))
+
+' Function call as argument to built-in
+Function GetStr()
+    GetStr = "hello"
+End Function
+call ok(Len(GetStr()) = 5, "Len(GetStr()) = " & Len(GetStr()))
 
 function seta0(arr)
     arr(0) = 2
@@ -2245,6 +2439,97 @@ for each x in noarr
     Call ok(false, "Empty array contains: " & x)
 next
 
+' Indexing non-array variables should give type mismatch (error 13)
+sub test_index_non_array
+    dim tmp
+    on error resume next
+
+    ' indexed assign
+    x = 42
+    err.clear
+    x(0) = 1
+    call ok(err.number = 13, "assign int(0): err.number = " & err.number)
+
+    x = "hello"
+    err.clear
+    x(0) = 1
+    call ok(err.number = 13, "assign str(0): err.number = " & err.number)
+
+    x = True
+    err.clear
+    x(0) = 1
+    call ok(err.number = 13, "assign bool(0): err.number = " & err.number)
+
+    x = Empty
+    err.clear
+    x(0) = 1
+    call ok(err.number = 13, "assign empty(0): err.number = " & err.number)
+
+    x = Null
+    err.clear
+    x(0) = 1
+    call ok(err.number = 13, "assign null(0): err.number = " & err.number)
+
+    x = 3.14
+    err.clear
+    x(0) = 1
+    call ok(err.number = 13, "assign double(0): err.number = " & err.number)
+
+    x = Now
+    err.clear
+    x(0) = 1
+    call ok(err.number = 13, "assign date(0): err.number = " & err.number)
+
+    ' indexed read
+    x = 42
+    err.clear
+    tmp = x(0)
+    call ok(err.number = 13, "read int(0): err.number = " & err.number)
+
+    x = "hello"
+    err.clear
+    tmp = x(0)
+    call ok(err.number = 13, "read str(0): err.number = " & err.number)
+
+    x = True
+    err.clear
+    tmp = x(0)
+    call ok(err.number = 13, "read bool(0): err.number = " & err.number)
+
+    x = Empty
+    err.clear
+    tmp = x(0)
+    call ok(err.number = 13, "read empty(0): err.number = " & err.number)
+
+    x = Null
+    err.clear
+    tmp = x(0)
+    call ok(err.number = 13, "read null(0): err.number = " & err.number)
+
+    x = 3.14
+    err.clear
+    tmp = x(0)
+    call ok(err.number = 13, "read double(0): err.number = " & err.number)
+
+    x = Now
+    err.clear
+    tmp = x(0)
+    call ok(err.number = 13, "read date(0): err.number = " & err.number)
+
+    ' multi-index on non-array
+    x = 42
+    err.clear
+    tmp = x(0, 1)
+    call ok(err.number = 13, "read int(0,1): err.number = " & err.number)
+
+    err.clear
+    x(0, 1) = 1
+    call ok(err.number = 13, "assign int(0,1): err.number = " & err.number)
+
+    on error goto 0
+end sub
+call test_index_non_array
+
 ' It's allowed to declare non-builtin RegExp class...
 class RegExp
      public property get Global()
@@ -2499,6 +2784,35 @@ Set x.objProp = y
 call ok(Err.Number = 438, "Set Property Let only: Err.Number = " & Err.Number & " expected 438")
 On Error GoTo 0
 
+' Wrong number of arguments error (450)
+Sub ArityTestSub(a, b)
+End Sub
+
+Function ArityTestFunc(a)
+    ArityTestFunc = a
+End Function
+
+On Error Resume Next
+
+Err.Clear
+ArityTestSub 1
+Call ok(Err.Number = 450, "too few args sub: err = " & Err.Number)
+
+Err.Clear
+ArityTestSub 1, 2, 3
+Call ok(Err.Number = 450, "too many args sub: err = " & Err.Number)
+
+Err.Clear
+Dim arityResult
+arityResult = ArityTestFunc()
+Call ok(Err.Number = 450, "too few args func: err = " & Err.Number)
+
+Err.Clear
+arityResult = ArityTestFunc(1, 2)
+Call ok(Err.Number = 450, "too many args func: err = " & Err.Number)
+
+On Error GoTo 0
+
 set x = new TestPropSyntax
 set x.prop = new TestPropSyntax
 set x.prop.prop = new TestPropSyntax
@@ -2641,6 +2955,36 @@ function recursingfunction2
 end function
 call ok(recursingfunction2() = 1, "unexpected return value " & recursingfunction2())
 
+Dim recursionDepth
+recursionDepth = 0
+Sub RecurseN(n)
+    recursionDepth = recursionDepth + 1
+    If n > 1 Then RecurseN n - 1
+End Sub
+RecurseN 100
+Call ok(recursionDepth = 100, "recursion depth: " & recursionDepth & " expected 100")
+
+Sub RecurseForever()
+    RecurseForever
+End Sub
+
+Sub MutualA()
+    MutualB
+End Sub
+Sub MutualB()
+    MutualA
+End Sub
+
+On Error Resume Next
+Err.Clear
+MutualA
+Call ok(Err.Number = 28, "mutual recursion: err.number = " & Err.Number)
+
+Err.Clear
+RecurseForever
+Call ok(Err.Number = 28, "infinite recursion: err.number = " & Err.Number)
+On Error GoTo 0
+
 function f2(x,y)
 end function
 
@@ -2749,6 +3093,16 @@ Err.Clear
 Set getRefRef = GetRef(vbNullString)
 Call ok(Err.Number = 5, "GetRef vbNullString error is " & Err.Number)
 
+' GetRef called as a statement (result discarded). Must not crash even
+' though no res pointer is passed to the builtin.
+Err.Clear
+Call GetRef("GetRefTestFunc")
+Call ok(Err.Number = 0, "Call GetRef statement err = " & Err.Number)
+
+Err.Clear
+GetRef "GetRefTestFunc"
+Call ok(Err.Number = 0, "Bare GetRef statement err = " & Err.Number)
+
 ' Eval tests
 Call ok(Eval("1 + 2") = 3, "Eval(""1 + 2"") = " & Eval("1 + 2"))
 Call ok(Eval("""test""") = "test", "Eval(""""""test"""""") = " & Eval("""test"""))
@@ -2890,13 +3244,13 @@ On Error Resume Next
 Err.Clear
 Execute "Option Explicit : noDimExec = 101"
 Call ok(Err.Number <> 0, "Execute Option Explicit undeclared should error: err=" & Err.Number)
-todo_wine_ok Err.Number = 500, "Execute Option Explicit undeclared: err=" & Err.Number & " expected 500"
+ok Err.Number = 500, "Execute Option Explicit undeclared: err=" & Err.Number & " expected 500"
 
 ' Option Explicit inside same ExecuteGlobal string enforces Dim requirement
 Err.Clear
 ExecuteGlobal "Option Explicit : noDimExecGlobal = 102"
 Call ok(Err.Number <> 0, "ExecuteGlobal Option Explicit undeclared should error: err=" & Err.Number)
-todo_wine_ok Err.Number = 500, "ExecuteGlobal Option Explicit undeclared: err=" & Err.Number & " expected 500"
+ok Err.Number = 500, "ExecuteGlobal Option Explicit undeclared: err=" & Err.Number & " expected 500"
 
 ' Option Explicit with Dim in same string works
 Err.Clear
@@ -3035,4 +3389,59 @@ Call ok(Err.Number = 13, "bool var as statement: err = " & Err.Number)
 
 On Error GoTo 0
 
+' Tests for missing runtime error codes
+On Error Resume Next
+
+' Error 11: Division by zero
+Err.Clear
+Dim divZeroResult
+divZeroResult = 1 \ 0
+Call ok(Err.Number = 11, "division by zero: err.number = " & Err.Number)
+
+' Error 94: Invalid use of Null
+Err.Clear
+Dim nullResult
+nullResult = CLng(Null)
+todo_wine_ok Err.Number = 94, "CLng(Null): err.number = " & Err.Number
+
+' Error 429: ActiveX component can't create object
+Err.Clear
+Dim badObj
+Set badObj = CreateObject("No.Such.Object.XXXXXX")
+Call ok(Err.Number = 429, "CreateObject bad ProgID: err.number = " & Err.Number)
+
+' Error 451: Object not a collection
+Err.Clear
+Dim forEachVar
+For Each forEachVar In 42
+Next
+Call ok(Err.Number = 451, "For Each over integer: err.number = " & Err.Number)
+
+' Error 457: Duplicate key in Dictionary
+Err.Clear
+Dim dictObj
+Set dictObj = CreateObject("Scripting.Dictionary")
+dictObj.Add "key1", 1
+dictObj.Add "key1", 2
+Call ok(Err.Number = 457, "duplicate Dictionary key: err.number = " & Err.Number)
+
+' Error 500: `New` with an undeclared identifier resolves the name as a
+' variable first and fails with "Variable is undefined" before reaching
+' class lookup.
+Err.Clear
+Dim undefinedNewTarget
+Set undefinedNewTarget = New NoSuchClass
+Call ok(Err.Number = 500, "New undeclared identifier: err.number = " & Err.Number)
+
+' Error 506: Class not defined. To reach the class lookup path, the
+' identifier must be a declared variable that isn't a class.
+Err.Clear
+Dim notAClass
+notAClass = 42
+Dim undefinedClassObj
+Set undefinedClassObj = New notAClass
+Call ok(Err.Number = 506, "New non-class variable: err.number = " & Err.Number)
+
+On Error GoTo 0
+
 reportSuccess()
diff --git a/dlls/vbscript/tests/run.c b/dlls/vbscript/tests/run.c
index da6f31ff4dfc..9b3c61bcdf7c 100644
--- a/dlls/vbscript/tests/run.c
+++ b/dlls/vbscript/tests/run.c
@@ -2205,6 +2205,38 @@ static HRESULT parse_script_wr(const WCHAR *src)
     return hres;
 }
 
+static void test_option_explicit_errors(void)
+{
+    IActiveScriptError *error;
+    EXCEPINFO ei;
+    HRESULT hres;
+
+    /* Without Option Explicit: assigning to undefined variable should succeed (implicit creation) */
+    parse_script_wf(SCRIPTITEM_GLOBALMEMBERS, L"x = 1\nCall ok(x = 1, \"x = \" & x)");
+
+    /* Without Option Explicit: reading undefined variable should succeed and return Empty */
+    parse_script_wf(SCRIPTITEM_GLOBALMEMBERS, L"Call ok(getVT(y) = \"VT_EMPTY*\", \"getVT(y) = \" & getVT(y))");
+
+    /* Option Explicit: assigning to undefined variable should give error 500 */
+    store_script_error = &error;
+    SET_EXPECT(OnScriptError);
+    hres = parse_script_wr(L"Option Explicit\nx = 1");
+    ok(hres == MAKE_VBSERROR(500), "expected MAKE_VBSERROR(500), got: %08lx\n", hres);
+    CHECK_CALLED(OnScriptError);
+
+    memset(&ei, 0, sizeof(ei));
+    hres = IActiveScriptError_GetExceptionInfo(error, &ei);
+    ok(hres == S_OK, "GetExceptionInfo returned %08lx\n", hres);
+    ok(ei.scode == MAKE_VBSERROR(500), "scode = %lx\n", ei.scode);
+    if(is_english)
+        ok(ei.bstrDescription && !wcscmp(ei.bstrDescription, L"Variable is undefined: 'x'"),
+           "bstrDescription = %s\n", wine_dbgstr_w(ei.bstrDescription));
+    SysFreeString(ei.bstrSource);
+    SysFreeString(ei.bstrDescription);
+    SysFreeString(ei.bstrHelpFile);
+    IActiveScriptError_Release(error);
+}
+
 static void test_parse_context(void)
 {
     IActiveScriptParse *parser;
@@ -2710,7 +2742,7 @@ static void test_parse_errors(void)
     static const struct
     {
         const WCHAR *src;
-        unsigned error_line;
+        int error_line;
         int error_char;
         const WCHAR *source_line;
         HRESULT source_line_hres;
@@ -2723,7 +2755,7 @@ static void test_parse_errors(void)
             L"If 0 > 1 Then\n"
             "    x = 0 End If\n",
             1, 10,
-            L"    x = 0 End If", S_OK, -1042
+            L"    x = 0 End If", S_OK, 1042
         },
         {
             /* ElseIf...End If */
@@ -2732,7 +2764,7 @@ static void test_parse_errors(void)
             "ElseIf True Then\n"
             "    x = 1 End If\n",
             3, 10,
-            L"    x = 1 End If", S_OK, -1042
+            L"    x = 1 End If", S_OK, 1042
         },
         {
             /* Else End If (no separator) */
@@ -2740,49 +2772,49 @@ static void test_parse_errors(void)
             "    x = 0\n"
             "Else End If\n",
             2, 5,
-            L"Else End If", S_OK, -1024
+            L"Else End If", S_OK, 1024
         },
         {
             /* While...End While */
             L"While False\n"
             "    x = 0 End While\n",
             1, 10,
-            L"    x = 0 End While", S_OK, -1024
+            L"    x = 0 End While", S_OK, 1024
         },
         {
             /* While...Wend */
             L"While False\n"
             "    x = 0 Wend\n",
             1, 10,
-            L"    x = 0 Wend", S_OK, -1025
+            L"    x = 0 Wend", S_OK, 1025
         },
         {
             /* Do While...Loop */
             L"Do While False\n"
             "    x = 0 Loop\n",
             1, 10,
-            L"    x = 0 Loop", S_OK, -1025
+            L"    x = 0 Loop", S_OK, 1025
         },
         {
             /* Do Until...Loop */
             L"Do Until True\n"
             "    x = 0 Loop\n",
             1, 10,
-            L"    x = 0 Loop", S_OK, -1025
+            L"    x = 0 Loop", S_OK, 1025
         },
         {
             /* Do...Loop While */
             L"Do\n"
             "    x = 0 Loop While False\n",
             1, 10,
-            L"    x = 0 Loop While False", S_OK, -1025
+            L"    x = 0 Loop While False", S_OK, 1025
         },
         {
             /* Do...Loop Until */
             L"Do\n"
             "    x = 0 Loop Until True\n",
             1, 10,
-            L"    x = 0 Loop Until True", S_OK, -1025
+            L"    x = 0 Loop Until True", S_OK, 1025
         },
         {
             /* Select...End Select */
@@ -2794,19 +2826,19 @@ static void test_parse_errors(void)
             "        x = True End Select\n"
             "Call ok(x, \"wrong case\")\n",
             5, 17,
-            L"        x = True End Select", S_OK, -1042
+            L"        x = True End Select", S_OK, 1042
         },
         {
             /* Class...End Class  (empty) */
             L"Class C End Class",
             0, 8,
-            L"Class C End Class", S_OK, -1024
+            L"Class C End Class", S_OK, 1024
         },
         {
             /* Class...End Class  (empty) */
             L"Class C _\nEnd Class",
             1, 0,
-            L"End Class", S_OK, -1024
+            L"End Class", S_OK, 1024
         },
         {
             /* invalid use of parentheses for call statement */
@@ -2890,7 +2922,7 @@ static void test_parse_errors(void)
         {
             /* Name redefined - error 1041 */
             L"Dim a\nDim a\n",
-            1, -4,
+            1, 4,
             NULL, S_OK, 1041
         },
         {
@@ -2915,25 +2947,25 @@ static void test_parse_errors(void)
             /* Expected '(' - error 1005 */
             L"Sub x)\nEnd Sub\n",
             0, 5,
-            NULL, S_OK, -1005
+            NULL, S_OK, 1005
         },
         {
             /* Expected '=' - error 1011 */
             L"Const x\n",
             0, 7,
-            NULL, S_OK, -1011
+            NULL, S_OK, 1011
         },
         {
             /* Expected 'To' - error 1013 */
             L"For i = 1 x 10\nNext\n",
             0, 10,
-            NULL, S_OK, -1013
+            NULL, S_OK, 1013
         },
         {
             /* Expected 'Then' - error 1017 */
             L"If True\nEnd If\n",
             0, 7,
-            NULL, S_OK, -1017
+            NULL, S_OK, 1017
         },
         {
             /* Expected 'Wend' - error 1018 */
@@ -2957,13 +2989,13 @@ static void test_parse_errors(void)
             /* Expected 'Case' - error 1021 */
             L"Select x\nEnd Select\n",
             0, 7,
-            NULL, S_OK, -1021
+            NULL, S_OK, 1021
         },
         {
             /* Expected integer constant - error 1026 */
             L"Dim x(\"a\")\n",
             0, 6,
-            NULL, S_OK, -1026
+            NULL, S_OK, 1026
         },
         {
             /* Invalid number - error 1031 */
@@ -2980,39 +3012,62 @@ static void test_parse_errors(void)
         {
             /* Invalid 'exit' statement - error 1039 */
             L"Exit Do\n",
-            0, -5,
+            0, 5,
             NULL, S_OK, 1039
         },
         {
             /* Expected 'In' - error 1046 */
             L"For Each x = arr\nNext\n",
             0, 11,
-            NULL, S_OK, -1046
+            NULL, S_OK, 1046
         },
         {
             /* Must be defined inside a Class - error 1048 */
             L"Property Get x\nEnd Property\n",
             0, 9,
-            NULL, S_OK, -1048
+            NULL, S_OK, 1048
+        },
+        {
+            /* Must be defined inside a Class - error 1048 (Let) */
+            L"Property Let x\nEnd Property\n",
+            0, 9,
+            NULL, S_OK, 1048
+        },
+        {
+            /* Must be defined inside a Class - error 1048 (Set) */
+            L"Property Set x\nEnd Property\n",
+            0, 9,
+            NULL, S_OK, 1048
         },
         {
             /* Expected Let or Set or Get - error 1049 */
             L"Class C\nProperty x\nEnd Property\nEnd Class\n",
             1, 9,
-            NULL, S_OK, -1049
+            NULL, S_OK, 1049
         },
-        /* TODO: Wine allows arguments on Class_Initialize/Class_Terminate
         {
-            Class initialize/terminate no arguments - error 1053
-            L"Class C\nSub Class_Initialize(x)\nEnd Sub\nEnd Class\n",
-            1, 20, 1053
+            /* Class_Initialize with arguments - error 1053 */
+            L"Class C\n"
+            "Sub Class_Initialize(x)\n"
+            "End Sub\n"
+            "End Class\n",
+            1, -23,
+            NULL, S_OK, 1053
+        },
+        {
+            /* Class_Terminate with arguments - error 1053 */
+            L"Class C\n"
+            "Sub Class_Terminate(x)\n"
+            "End Sub\n"
+            "End Class\n",
+            1, -22,
+            NULL, S_OK, 1053
         },
-        */
         {
             /* Property Let/Set needs at least one argument - error 1054 */
             L"Class C\nProperty Let x\nEnd Property\nEnd Class\n",
             1, 14,
-            NULL, S_OK, -1054
+            NULL, S_OK, 1054
         },
         {
             /* Unexpected 'Next' - error 1055 */
@@ -3049,6 +3104,159 @@ static void test_parse_errors(void)
             L"x = 1 _x\n",
             0, 7,
             NULL, S_OK, 1032
+        },
+        {
+            /* Non-ASCII: e-acute (chr 233) in identifier */
+            L"Dim caf\x00e9\n",
+            0, 7,
+            NULL, S_OK, 1032
+        },
+        {
+            /* Non-ASCII: sharp-s (chr 223) in identifier */
+            L"Dim st\x00df" L"e\n",
+            0, 6,
+            NULL, S_OK, 1032
+        },
+        {
+            /* Non-ASCII: u-umlaut (chr 252) in identifier */
+            L"Dim x\x00fc" L"b\n",
+            0, 5,
+            NULL, S_OK, 1032
+        },
+        {
+            /* Non-ASCII: Cyrillic a (chr 1072) as identifier start */
+            L"Dim \x0430\n",
+            0, 4,
+            NULL, S_OK, 1032
+        },
+        {
+            /* Non-ASCII: e-acute (chr 233) starting identifier */
+            L"\x00e9var = 1\n",
+            0, 0,
+            NULL, S_OK, 1032
+        },
+        {
+            /* Expected ')' - error 1006 */
+            L"x = (1 + 2\n",
+            0, 10,
+            NULL, S_OK, 1006
+        },
+        {
+            /* Expected 'If' - End With inside If block - error 1012 */
+            L"If True Then\n"
+            "  x = 1\n"
+            "End With\n",
+            2, 4,
+            NULL, S_OK, 1012
+        },
+        {
+            /* Expected 'Function' - End Sub inside Function - error 1015 */
+            L"Function F()\n"
+            "End Sub\n",
+            1, 4,
+            NULL, S_OK, 1015
+        },
+        {
+            /* Expected 'Sub' - End Function inside Sub - error 1016 */
+            L"Sub S()\n"
+            "End Function\n",
+            1, 4,
+            NULL, S_OK, 1016
+        },
+        {
+            /* Expected 'Select' - End If inside Select block - error 1022 */
+            L"Select Case 1\n"
+            "  Case 1\n"
+            "End If\n",
+            2, 4,
+            NULL, S_OK, 1022
+        },
+        {
+            /* Expected 'With' - End Sub inside With block - error 1029 */
+            L"With CreateObject(\"Scripting.Dictionary\")\n"
+            "End Sub\n",
+            1, 4,
+            NULL, S_OK, 1029
+        },
+        {
+            /* Expected 'Property' - End Sub inside Property Get - error 1050 */
+            L"Class C\n"
+            "  Property Get P()\n"
+            "  End Sub\n"
+            "End Class\n",
+            2, 6,
+            NULL, S_OK, 1050
+        },
+        {
+            /* Multiple default members - error 1052 */
+            L"Class C\n"
+            "  Public Default Function F()\n"
+            "    F = 1\n"
+            "  End Function\n"
+            "  Public Default Function G()\n"
+            "    G = 2\n"
+            "  End Function\n"
+            "End Class\n",
+            4, 17,
+            NULL, S_OK, 1052
+        },
+        {
+            /* Default only on Property Get - error 1058 */
+            L"Class C\n"
+            "  Public Default Property Let P(v)\n"
+            "  End Property\n"
+            "End Class\n",
+            1, 26,
+            NULL, S_OK, 1058
+        },
+        {
+            /* Invalid use of 'Me' - Set Me inside class - error 1037 */
+            L"Class C\n"
+            "  Sub T()\n"
+            "    Set Me = Nothing\n"
+            "  End Sub\n"
+            "End Class\n",
+            2, 11,
+            NULL, S_OK, 1037
+        },
+        {
+            /* Identifier too long (256 chars) */
+            L"Dim aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n",
+            0, 260,
+            NULL, S_OK, 1030
+        },
+        {
+            /* Nested square brackets */
+            L"Dim [[nested]]\n",
+            0, 13,
+            NULL, S_OK, 1032
+        },
+        {
+            /* Unclosed square bracket */
+            L"Dim [unclosed\n",
+            0, 13,
+            NULL, S_OK, 1007
+        },
+        {
+            /* Do followed by wrong keyword - error 1028 */
+            L"Do For\nLoop\n",
+            0, 3,
+            NULL, S_OK, 1028
+        },
+        {
+            /* Expected 'Class' - End Sub inside class body - error 1047 */
+            L"Class C\nEnd Sub\n",
+            1, 4,
+            NULL, S_OK, 1047
+        },
+        {
+            /* Property arg count mismatch - error 1051 */
+            L"Class C\n"
+            "Property Get P\n  P = 1\nEnd Property\n"
+            "Property Let P(a, b)\nEnd Property\n"
+            "End Class\n",
+            -4, -20,
+            NULL, S_OK, 1051
         }
     };
     HRESULT hres;
@@ -3066,7 +3274,8 @@ static void test_parse_errors(void)
         ok(hres == SCRIPT_E_REPORTED, "[%u] script returned: %08lx\n", i, hres);
         CHECK_CALLED(OnScriptError);
 
-        ok(error_line == invalid_scripts[i].error_line, "[%u] error line %lu expected %u\n",
+        todo_wine_if(invalid_scripts[i].error_line < 0)
+        ok(error_line == abs(invalid_scripts[i].error_line), "[%u] error line %lu expected %d\n",
            i, error_line, invalid_scripts[i].error_line);
         todo_wine_if(invalid_scripts[i].error_char < 0)
         ok(error_char == abs(invalid_scripts[i].error_char), "[%u] error char %ld expected %d\n",
@@ -3475,6 +3684,13 @@ static void run_tests(void)
     parse_script_w(L"");
     parse_script_w(L"' empty ;");
 
+    /* Vertical tab and form feed are valid whitespace separators */
+    parse_script_w(L"dim\x0b""x\n");
+    parse_script_w(L"dim\x0c""x\n");
+    parse_script_w(L"dim\x0b\x0c""x\n");
+    parse_script_w(L"x\x0b""=\x0b""1\n");
+    parse_script_w(L"x\x0c""=\x0c""1\n");
+
     SET_EXPECT(global_success_d);
     SET_EXPECT(global_success_i);
     parse_script_w(L"reportSuccess");
@@ -3747,6 +3963,7 @@ static void run_tests(void)
     test_gc();
     test_msgbox();
     test_isexpression();
+    test_option_explicit_errors();
     test_parse_errors();
     test_parse_context();
     test_callbacks();
diff --git a/dlls/vbscript/vbdisp.c b/dlls/vbscript/vbdisp.c
index 66d1b84abf64..9f6cf2e446a7 100644
--- a/dlls/vbscript/vbdisp.c
+++ b/dlls/vbscript/vbdisp.c
@@ -29,6 +29,38 @@ static const GUID GUID_VBScriptTypeInfo = {0xc59c6b12,0xf6c1,0x11cf,{0x88,0x35,0
 #define DISPID_FUNCTION_MASK 0x20000000
 #define FDEX_VERSION_MASK 0xf0000000
 
+static int func_name_cmp(const void *key, const struct rb_entry *entry)
+{
+    function_t *func = RB_ENTRY_VALUE(entry, function_t, entry);
+    return vbs_wcsicmp(key, func->name);
+}
+
+static int var_name_cmp(const void *key, const struct rb_entry *entry)
+{
+    dynamic_var_t *var = RB_ENTRY_VALUE(entry, dynamic_var_t, entry);
+    return vbs_wcsicmp(key, var->name);
+}
+
+function_t *script_disp_find_func(ScriptDisp *disp, const WCHAR *name)
+{
+    struct rb_entry *entry = rb_get(&disp->func_tree, name);
+
+    if (!entry)
+        return NULL;
+
+    return RB_ENTRY_VALUE(entry, function_t, entry);
+}
+
+dynamic_var_t *script_disp_find_var(ScriptDisp *disp, const WCHAR *name)
+{
+    struct rb_entry *entry = rb_get(&disp->var_tree, name);
+
+    if (!entry)
+        return NULL;
+
+    return RB_ENTRY_VALUE(entry, dynamic_var_t, entry);
+}
+
 static inline BOOL is_func_id(vbdisp_t *This, DISPID id)
 {
     return id < This->desc->func_cnt;
@@ -48,7 +80,7 @@ static BOOL get_func_id(vbdisp_t *This, const WCHAR *name, vbdisp_invoke_type_t
                 continue;
         }
 
-        if(This->desc->funcs[i].name && !wcsicmp(This->desc->funcs[i].name, name)) {
+        if(This->desc->funcs[i].name && !vbs_wcsicmp(This->desc->funcs[i].name, name)) {
             *id = i;
             return TRUE;
         }
@@ -68,7 +100,7 @@ HRESULT vbdisp_get_id(vbdisp_t *This, BSTR name, vbdisp_invoke_type_t invoke_typ
         if(!search_private && !This->desc->props[i].is_public)
             continue;
 
-        if(!wcsicmp(This->desc->props[i].name, name)) {
+        if(!vbs_wcsicmp(This->desc->props[i].name, name)) {
             *id = i + This->desc->func_cnt;
             return S_OK;
         }
@@ -586,7 +618,8 @@ static HRESULT WINAPI FuncRef_QueryInterface(IDispatch *iface, REFIID riid, void
         return S_OK;
     }
 
-    WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
+    if(!IsEqualGUID(riid, &IID_IDispatchEx))
+        WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
     *ppv = NULL;
     return E_NOINTERFACE;
 }
@@ -972,14 +1005,14 @@ static HRESULT WINAPI ScriptTypeInfo_GetIDsOfNames(ITypeInfo *iface, LPOLESTR *r
     {
         function_t *func = This->funcs[i].func;
 
-        if (wcsicmp(name, func->name)) continue;
+        if (vbs_wcsicmp(name, func->name)) continue;
         pMemId[0] = This->funcs[i].memid;
 
         for (j = 1; j < cNames; j++)
         {
             name = rgszNames[j];
             for (arg = func->arg_cnt; --arg >= 0;)
-                if (!wcsicmp(name, func->args[arg].name))
+                if (!vbs_wcsicmp(name, func->args[arg].name))
                     break;
             if (arg >= 0)
                 pMemId[j] = arg;
@@ -989,11 +1022,13 @@ static HRESULT WINAPI ScriptTypeInfo_GetIDsOfNames(ITypeInfo *iface, LPOLESTR *r
         return hr;
     }
 
-    for (i = 0; i < This->num_vars; i++)
     {
-        if (wcsicmp(name, This->disp->global_vars[i]->name)) continue;
-        pMemId[0] = i + 1;
-        return S_OK;
+        struct rb_entry *entry = rb_get(&This->disp->var_tree, name);
+        if (entry)
+        {
+            pMemId[0] = RB_ENTRY_VALUE(entry, dynamic_var_t, entry)->index + 1;
+            return S_OK;
+        }
     }
 
     /* Look into the inherited IDispatch */
@@ -1279,7 +1314,7 @@ static HRESULT WINAPI ScriptTypeComp_Bind(ITypeComp *iface, LPOLESTR szName, ULO
 
     for (i = 0; i < This->num_funcs; i++)
     {
-        if (wcsicmp(szName, This->funcs[i].func->name)) continue;
+        if (vbs_wcsicmp(szName, This->funcs[i].func->name)) continue;
         if (!(flags & INVOKE_FUNC)) return TYPE_E_TYPEMISMATCH;
 
         hr = ITypeInfo_GetFuncDesc(&This->ITypeInfo_iface, i, &pBindPtr->lpfuncdesc);
@@ -1291,18 +1326,21 @@ static HRESULT WINAPI ScriptTypeComp_Bind(ITypeComp *iface, LPOLESTR szName, ULO
         return S_OK;
     }
 
-    for (i = 0; i < This->num_vars; i++)
     {
-        if (wcsicmp(szName, This->disp->global_vars[i]->name)) continue;
-        if (!(flags & INVOKE_PROPERTYGET)) return TYPE_E_TYPEMISMATCH;
+        struct rb_entry *entry = rb_get(&This->disp->var_tree, szName);
+        if (entry)
+        {
+            dynamic_var_t *var = RB_ENTRY_VALUE(entry, dynamic_var_t, entry);
+            if (!(flags & INVOKE_PROPERTYGET)) return TYPE_E_TYPEMISMATCH;
 
-        hr = ITypeInfo_GetVarDesc(&This->ITypeInfo_iface, i, &pBindPtr->lpvardesc);
-        if (FAILED(hr)) return hr;
+            hr = ITypeInfo_GetVarDesc(&This->ITypeInfo_iface, var->index, &pBindPtr->lpvardesc);
+            if (FAILED(hr)) return hr;
 
-        *pDescKind = DESCKIND_VARDESC;
-        *ppTInfo = &This->ITypeInfo_iface;
-        ITypeInfo_AddRef(*ppTInfo);
-        return S_OK;
+            *pDescKind = DESCKIND_VARDESC;
+            *ppTInfo = &This->ITypeInfo_iface;
+            ITypeInfo_AddRef(*ppTInfo);
+            return S_OK;
+        }
     }
 
     /* Look into the inherited IDispatch */
@@ -1512,25 +1550,24 @@ static HRESULT WINAPI ScriptDisp_Invoke(IDispatchEx *iface, DISPID dispIdMember,
 static HRESULT WINAPI ScriptDisp_GetDispID(IDispatchEx *iface, BSTR bstrName, DWORD grfdex, DISPID *pid)
 {
     ScriptDisp *This = ScriptDisp_from_IDispatchEx(iface);
-    unsigned i;
+    struct rb_entry *entry;
 
     TRACE("(%p)->(%s %lx %p)\n", This, debugstr_w(bstrName), grfdex, pid);
 
     if(!This->ctx)
         return E_UNEXPECTED;
 
-    for(i = 0; i < This->global_vars_cnt; i++) {
-        if(!wcsicmp(This->global_vars[i]->name, bstrName)) {
-            *pid = i + 1;
-            return S_OK;
-        }
+    entry = rb_get(&This->var_tree, bstrName);
+    if(entry) {
+        *pid = RB_ENTRY_VALUE(entry, dynamic_var_t, entry)->index + 1;
+        return S_OK;
     }
 
-    for(i = 0; i < This->global_funcs_cnt; i++) {
-        if(!wcsicmp(This->global_funcs[i]->name, bstrName)) {
-            *pid = i + 1 + DISPID_FUNCTION_MASK;
-            return S_OK;
-        }
+    entry = rb_get(&This->func_tree, bstrName);
+    if(entry) {
+        function_t *func = RB_ENTRY_VALUE(entry, function_t, entry);
+        *pid = func->index + 1 + DISPID_FUNCTION_MASK;
+        return S_OK;
     }
 
     *pid = -1;
@@ -1669,6 +1706,8 @@ HRESULT create_script_disp(script_ctx_t *ctx, ScriptDisp **ret)
     script_disp->ref = 1;
     script_disp->ctx = ctx;
     heap_pool_init(&script_disp->heap);
+    rb_init(&script_disp->func_tree, func_name_cmp);
+    rb_init(&script_disp->var_tree, var_name_cmp);
     script_disp->rnd = 0x50000;
 
     *ret = script_disp;
diff --git a/dlls/vbscript/vbscript.c b/dlls/vbscript/vbscript.c
index 2e2fa6498da9..c274e3a2f7ff 100644
--- a/dlls/vbscript/vbscript.c
+++ b/dlls/vbscript/vbscript.c
@@ -140,18 +140,7 @@ HRESULT exec_global_code(script_ctx_t *ctx, vbscode_t *code, VARIANT *res, BOOL
 
     for (i = 0; i < code->main_code.var_cnt; i++)
     {
-        size_t j;
-        BOOL found = FALSE;
-
-        for (j = 0; j < obj->global_vars_cnt; j++)
-        {
-            if (!wcsicmp(obj->global_vars[j]->name, code->main_code.vars[i].name))
-            {
-                found = TRUE;
-                break;
-            }
-        }
-        if (found)
+        if (script_disp_find_var(obj, code->main_code.vars[i].name))
             continue;
 
         if (!(var = heap_pool_alloc(&obj->heap, sizeof(*var))))
@@ -163,23 +152,32 @@ HRESULT exec_global_code(script_ctx_t *ctx, vbscode_t *code, VARIANT *res, BOOL
         V_VT(&var->v) = VT_EMPTY;
         var->is_const = FALSE;
         var->array = NULL;
+        var->index = obj->global_vars_cnt;
+        rb_put(&obj->var_tree, var->name, &var->entry);
 
         obj->global_vars[obj->global_vars_cnt++] = var;
     }
 
     for (func_iter = code->funcs; func_iter; func_iter = func_iter->next)
     {
-        for (i = 0; i < obj->global_funcs_cnt; i++)
+        struct rb_entry *entry = rb_get(&obj->func_tree, func_iter->name);
+
+        if (entry)
         {
-            if (!wcsicmp(obj->global_funcs[i]->name, func_iter->name))
-            {
-                /* global function already exists, replace it */
-                obj->global_funcs[i] = func_iter;
-                break;
-            }
+            function_t *old_func = RB_ENTRY_VALUE(entry, function_t, entry);
+            size_t old_index = old_func->index;
+            /* global function already exists, replace it */
+            rb_remove(&obj->func_tree, &old_func->entry);
+            func_iter->index = old_index;
+            obj->global_funcs[old_index] = func_iter;
+            rb_put(&obj->func_tree, func_iter->name, &func_iter->entry);
         }
-        if (i == obj->global_funcs_cnt)
+        else
+        {
+            func_iter->index = obj->global_funcs_cnt;
             obj->global_funcs[obj->global_funcs_cnt++] = func_iter;
+            rb_put(&obj->func_tree, func_iter->name, &func_iter->entry);
+        }
     }
 
     if (code->classes)
@@ -245,7 +243,7 @@ named_item_t *lookup_named_item(script_ctx_t *ctx, const WCHAR *name, unsigned f
     HRESULT hres;
 
     LIST_FOR_EACH_ENTRY(item, &ctx->named_items, named_item_t, entry) {
-        if((item->flags & flags) == flags && !wcsicmp(item->name, name)) {
+        if((item->flags & flags) == flags && !vbs_wcsicmp(item->name, name)) {
             if(!item->script_obj && !(item->flags & SCRIPTITEM_GLOBALMEMBERS)) {
                 hres = create_script_disp(ctx, &item->script_obj);
                 if(FAILED(hres)) return NULL;
diff --git a/dlls/vbscript/vbscript.h b/dlls/vbscript/vbscript.h
index 3bf23a34bfaa..e9eae6b5819f 100644
--- a/dlls/vbscript/vbscript.h
+++ b/dlls/vbscript/vbscript.h
@@ -32,6 +32,7 @@
 #include "vbscript_defs.h"
 
 #include "wine/list.h"
+#include "wine/rbtree.h"
 
 typedef struct {
     void **blocks;
@@ -118,6 +119,8 @@ typedef struct _dynamic_var_t {
     const WCHAR *name;
     BOOL is_const;
     SAFEARRAY *array;
+    struct rb_entry entry;
+    size_t index;
 } dynamic_var_t;
 
 typedef struct {
@@ -127,10 +130,12 @@ typedef struct {
     dynamic_var_t **global_vars;
     size_t global_vars_cnt;
     size_t global_vars_size;
+    struct rb_tree var_tree;
 
     function_t **global_funcs;
     size_t global_funcs_cnt;
     size_t global_funcs_size;
+    struct rb_tree func_tree;
 
     class_desc_t *classes;
 
@@ -140,6 +145,8 @@ typedef struct {
     unsigned int rnd;
 } ScriptDisp;
 
+dynamic_var_t *script_disp_find_var(ScriptDisp *disp, const WCHAR *name);
+
 typedef struct _builtin_prop_t builtin_prop_t;
 
 typedef struct {
@@ -169,6 +176,7 @@ HRESULT get_disp_value(script_ctx_t*,IDispatch*,VARIANT*);
 void collect_objects(script_ctx_t*);
 HRESULT create_script_disp(script_ctx_t*,ScriptDisp**);
 HRESULT create_func_ref(script_ctx_t*,function_t*,IDispatch**);
+function_t *script_disp_find_func(ScriptDisp*,const WCHAR*);
 
 HRESULT to_int(VARIANT*,int*);
 
@@ -211,6 +219,7 @@ struct _script_ctx_t {
 
     exec_ctx_t *current_exec;
     exec_ctx_t *caller_exec;
+    unsigned call_depth;
 
     EXCEPINFO ei;
     vbscode_t *error_loc_code;
@@ -361,6 +370,8 @@ struct _function_t {
     unsigned code_off;
     vbscode_t *code_ctx;
     function_t *next;
+    struct rb_entry entry;
+    size_t index;
 };
 
 struct _vbscode_t {
@@ -425,6 +436,21 @@ static inline BOOL is_digit(WCHAR c)
     return '0' <= c && c <= '9';
 }
 
+/* ASCII-only case-insensitive compare for VBScript identifiers.
+ * VBScript identifiers are ASCII-only (Windows rejects all non-ASCII
+ * characters), so this avoids the expensive locale-aware wcsicmp. */
+static inline int vbs_wcsicmp(const WCHAR *s1, const WCHAR *s2)
+{
+    WCHAR c1, c2;
+    do {
+        c1 = *s1++;
+        c2 = *s2++;
+        if (c1 >= 'A' && c1 <= 'Z') c1 += 'a' - 'A';
+        if (c2 >= 'A' && c2 <= 'Z') c2 += 'a' - 'A';
+    } while (c1 && c1 == c2);
+    return c1 - c2;
+}
+
 HRESULT create_regexp(IDispatch**);
 BSTR string_replace(BSTR,BSTR,BSTR,int,int,int);
 
diff --git a/dlls/vbscript/vbscript.rc b/dlls/vbscript/vbscript.rc
index 770052b641f5..afb08f4ec56d 100644
--- a/dlls/vbscript/vbscript.rc
+++ b/dlls/vbscript/vbscript.rc
@@ -32,6 +32,7 @@ STRINGTABLE
     VBSE_ARRAY_LOCKED                  "This array is fixed or temporarily locked"
     VBSE_DIVISION_BY_ZERO              "Division by zero"
     VBSE_TYPE_MISMATCH                 "Type mismatch"
+    VBSE_OUT_OF_STACK                  "Out of stack space"
     VBSE_FILE_NOT_FOUND                "File not found"
     VBSE_IO_ERROR                      "Device I/O error"
     VBSE_FILE_ALREADY_EXISTS           "File already exists"
@@ -56,29 +57,41 @@ STRINGTABLE
     VBSE_PARAMETER_NOT_OPTIONAL        "Argument not optional"
     VBSE_FUNC_ARITY_MISMATCH           "Wrong number of arguments or invalid property assignment"
     VBSE_NOT_ENUM                      "Object not a collection"
+    VBSE_DUPLICATE_KEY                 "This key is already associated with an element of this collection"
     VBSE_INVALID_DLL_FUNCTION_NAME     "Specified DLL function not found"
     VBSE_INVALID_TYPELIB_VARIABLE      "Variable uses an Automation type not supported in VBScript"
     VBSE_SERVER_NOT_FOUND              "The remote server machine does not exist or is unavailable"
     VBSE_VARIABLE_UNDEFINED            "Variable is undefined"
+    VBSE_ILLEGAL_ASSIGNMENT            "Illegal assignment"
     VBSE_UNQUALIFIED_REFERENCE         "Invalid or unqualified reference"
+    VBSE_CLASS_NOT_DEFINED             "Class not defined"
     VBSE_SYNTAX_ERROR                  "Syntax error"
     VBSE_EXPECTED_LPAREN               "Expected '('"
+    VBSE_EXPECTED_RBRACKET             "Expected ']'"
+    VBSE_EXPECTED_RPAREN               "Expected ')'"
     VBSE_EXPECTED_IDENTIFIER           "Expected identifier"
     VBSE_EXPECTED_ASSIGN               "Expected '='"
+    VBSE_EXPECTED_IF                   "Expected 'If'"
     VBSE_EXPECTED_TO                   "Expected 'To'"
     VBSE_EXPECTED_END                  "Expected 'End'"
+    VBSE_EXPECTED_FUNCTION             "Expected 'Function'"
+    VBSE_EXPECTED_SUB                  "Expected 'Sub'"
     VBSE_EXPECTED_THEN                 "Expected 'Then'"
     VBSE_EXPECTED_WEND                 "Expected 'Wend'"
     VBSE_EXPECTED_LOOP                 "Expected 'Loop'"
     VBSE_EXPECTED_NEXT                 "Expected 'Next'"
     VBSE_EXPECTED_CASE                 "Expected 'Case'"
+    VBSE_EXPECTED_SELECT               "Expected 'Select'"
     VBSE_EXPECTED_STATEMENT            "Expected statement"
     VBSE_EXPECTED_END_OF_STATEMENT     "Expected end of statement"
     VBSE_EXPECTED_INTEGER_CONSTANT     "Expected integer constant"
     VBSE_EXPECTED_WHILE_UNTIL_EOS      "Expected 'While', 'Until' or end of statement"
+    VBSE_IDENTIFIER_TOO_LONG           "Identifier too long"
+    VBSE_EXPECTED_WITH                 "Expected 'With'"
     VBSE_INVALID_NUMBER                "Invalid number"
     VBSE_INVALID_CHAR                  "Invalid character"
     VBSE_UNTERMINATED_STRING           "Unterminated string constant"
+    VBSE_INVALID_USE_OF_ME             "Invalid use of 'Me' keyword"
     VBSE_LOOP_WITHOUT_DO               "'loop' without 'do'"
     VBSE_INVALID_EXIT                  "Invalid 'exit' statement"
     VBSE_NAME_REDEFINED                "Name redefined"
@@ -89,10 +102,14 @@ STRINGTABLE
     VBSE_EXPECTED_CLASS                "Expected 'Class'"
     VBSE_MUST_BE_INSIDE_CLASS          "Must be defined inside a Class"
     VBSE_EXPECTED_LET_SET_GET          "Expected Let or Set or Get in property declaration"
+    VBSE_EXPECTED_PROPERTY             "Expected 'Property'"
+    VBSE_PROPERTY_ARG_COUNT_MISMATCH   "Number of arguments must be consistent across properties specification"
+    VBSE_MULTIPLE_DEFAULT_MEMBERS      "Cannot have multiple default property/method in a Class"
     VBSE_CLASS_INIT_NO_ARGS            "Class initialize or terminate do not have arguments"
     VBSE_PROPERTY_LET_SET_NEEDS_ARG    "Property set or let must have at least one argument"
     VBSE_UNEXPECTED_NEXT               "Unexpected 'Next'"
     VBSE_DEFAULT_MUST_BE_PUBLIC        "'Default' specification must also specify 'Public'"
+    VBSE_DEFAULT_ONLY_ON_PROPERTY_GET  "'Default' specification can only be on Property Get"
 
     VBS_COMPILE_ERROR                  "Microsoft VBScript compilation error"
     VBS_RUNTIME_ERROR                  "Microsoft VBScript runtime error"
diff --git a/dlls/vbscript/vbscript_defs.h b/dlls/vbscript/vbscript_defs.h
index 4654798b8a1d..610c4f54b155 100644
--- a/dlls/vbscript/vbscript_defs.h
+++ b/dlls/vbscript/vbscript_defs.h
@@ -243,6 +243,7 @@
 #define VBSE_ARRAY_LOCKED                  10
 #define VBSE_DIVISION_BY_ZERO              11
 #define VBSE_TYPE_MISMATCH                 13
+#define VBSE_OUT_OF_STACK                  28
 #define VBSE_FILE_NOT_FOUND                53
 #define VBSE_IO_ERROR                      57
 #define VBSE_FILE_ALREADY_EXISTS           58
@@ -267,29 +268,41 @@
 #define VBSE_PARAMETER_NOT_OPTIONAL       449
 #define VBSE_FUNC_ARITY_MISMATCH          450
 #define VBSE_NOT_ENUM                     451
+#define VBSE_DUPLICATE_KEY                457
 #define VBSE_INVALID_DLL_FUNCTION_NAME    453
 #define VBSE_INVALID_TYPELIB_VARIABLE     458
 #define VBSE_SERVER_NOT_FOUND             462
 #define VBSE_VARIABLE_UNDEFINED           500
+#define VBSE_ILLEGAL_ASSIGNMENT           501
 #define VBSE_UNQUALIFIED_REFERENCE        505
+#define VBSE_CLASS_NOT_DEFINED            506
 #define VBSE_SYNTAX_ERROR                1002
 #define VBSE_EXPECTED_LPAREN             1005
+#define VBSE_EXPECTED_RPAREN             1006
+#define VBSE_EXPECTED_RBRACKET           1007
 #define VBSE_EXPECTED_IDENTIFIER         1010
 #define VBSE_EXPECTED_ASSIGN             1011
+#define VBSE_EXPECTED_IF                 1012
 #define VBSE_EXPECTED_TO                 1013
 #define VBSE_EXPECTED_END                1014
+#define VBSE_EXPECTED_FUNCTION           1015
+#define VBSE_EXPECTED_SUB                1016
 #define VBSE_EXPECTED_THEN               1017
 #define VBSE_EXPECTED_WEND               1018
 #define VBSE_EXPECTED_LOOP               1019
 #define VBSE_EXPECTED_NEXT               1020
 #define VBSE_EXPECTED_CASE               1021
+#define VBSE_EXPECTED_SELECT             1022
 #define VBSE_EXPECTED_STATEMENT          1024
 #define VBSE_EXPECTED_END_OF_STATEMENT   1025
 #define VBSE_EXPECTED_INTEGER_CONSTANT   1026
 #define VBSE_EXPECTED_WHILE_UNTIL_EOS    1028
+#define VBSE_EXPECTED_WITH               1029
+#define VBSE_IDENTIFIER_TOO_LONG         1030
 #define VBSE_INVALID_NUMBER              1031
 #define VBSE_INVALID_CHAR                1032
 #define VBSE_UNTERMINATED_STRING         1033
+#define VBSE_INVALID_USE_OF_ME           1037
 #define VBSE_LOOP_WITHOUT_DO             1038
 #define VBSE_INVALID_EXIT                1039
 #define VBSE_NAME_REDEFINED              1041
@@ -300,10 +313,14 @@
 #define VBSE_EXPECTED_CLASS              1047
 #define VBSE_MUST_BE_INSIDE_CLASS        1048
 #define VBSE_EXPECTED_LET_SET_GET        1049
+#define VBSE_EXPECTED_PROPERTY           1050
+#define VBSE_PROPERTY_ARG_COUNT_MISMATCH 1051
+#define VBSE_MULTIPLE_DEFAULT_MEMBERS    1052
 #define VBSE_CLASS_INIT_NO_ARGS          1053
 #define VBSE_PROPERTY_LET_SET_NEEDS_ARG  1054
 #define VBSE_UNEXPECTED_NEXT             1055
 #define VBSE_DEFAULT_MUST_BE_PUBLIC      1057
+#define VBSE_DEFAULT_ONLY_ON_PROPERTY_GET 1058
 
 #define VBS_COMPILE_ERROR                4096
 #define VBS_RUNTIME_ERROR                4097
diff --git a/dlls/win32u/driver.c b/dlls/win32u/driver.c
index c9e81016ee8f..4d9708f377c6 100644
--- a/dlls/win32u/driver.c
+++ b/dlls/win32u/driver.c
@@ -670,9 +670,9 @@ static void nulldrv_ReleaseKbdTables( const KBDTABLES *tables )
 {
 }
 
-static UINT nulldrv_ImeProcessKey( HIMC himc, UINT wparam, UINT lparam, const BYTE *state )
+static UINT nulldrv_ImeToAsciiEx( UINT vkey, UINT vsc, const BYTE *state, HIMC himc )
 {
-    return 0;
+    return STATUS_NOT_IMPLEMENTED;
 }
 
 static void nulldrv_NotifyIMEStatus( HWND hwnd, UINT status )
@@ -1097,9 +1097,9 @@ static void loaderdrv_ReleaseKbdTables( const KBDTABLES *tables )
     return load_driver()->pReleaseKbdTables( tables );
 }
 
-static UINT loaderdrv_ImeProcessKey( HIMC himc, UINT wparam, UINT lparam, const BYTE *state )
+static UINT loaderdrv_ImeToAsciiEx( UINT vkey, UINT vsc,const BYTE *state, HIMC himc )
 {
-    return load_driver()->pImeProcessKey( himc, wparam, lparam, state );
+    return load_driver()->pImeToAsciiEx( vkey, vsc, state, himc );
 }
 
 static void loaderdrv_NotifyIMEStatus( HWND hwnd, UINT status )
@@ -1254,7 +1254,7 @@ static const struct user_driver_funcs lazy_load_driver =
     loaderdrv_VkKeyScanEx,
     loaderdrv_KbdLayerDescriptor,
     loaderdrv_ReleaseKbdTables,
-    loaderdrv_ImeProcessKey,
+    loaderdrv_ImeToAsciiEx,
     loaderdrv_NotifyIMEStatus,
     loaderdrv_SetIMECompositionRect,
     /* cursor/icon functions */
@@ -1358,7 +1358,7 @@ void __wine_set_user_driver( const struct user_driver_funcs *funcs, UINT version
     SET_USER_FUNC(VkKeyScanEx);
     SET_USER_FUNC(KbdLayerDescriptor);
     SET_USER_FUNC(ReleaseKbdTables);
-    SET_USER_FUNC(ImeProcessKey);
+    SET_USER_FUNC(ImeToAsciiEx);
     SET_USER_FUNC(NotifyIMEStatus);
     SET_USER_FUNC(SetIMECompositionRect);
     SET_USER_FUNC(DestroyCursorIcon);
diff --git a/dlls/win32u/imm.c b/dlls/win32u/imm.c
index f585b80a3837..1c1cad94b3f1 100644
--- a/dlls/win32u/imm.c
+++ b/dlls/win32u/imm.c
@@ -663,29 +663,29 @@ LRESULT ime_driver_call( HWND hwnd, enum wine_ime_call call, WPARAM wparam, LPAR
 
     switch (call)
     {
-    case WINE_IME_PROCESS_KEY:
-    {
-        struct imm_thread_data *data = get_imm_thread_data();
-
-        data->ime_process_scan = HIWORD(lparam);
-        data->ime_process_vkey = LOWORD(wparam);
-        res = user_driver->pImeProcessKey( params->himc, wparam, lparam, params->state );
-        data->ime_process_vkey = data->ime_process_scan = 0;
-
-        if (data->update)
+    case WINE_IME_TO_ASCII_EX:
+        if (params->state)
         {
-            data->update->key_consumed = res;
-            pthread_mutex_lock( &imm_mutex );
-            list_add_tail( &ime_updates, &data->update->entry );
-            pthread_mutex_unlock( &imm_mutex );
-            data->update = NULL;
-            res = TRUE;
+            struct imm_thread_data *data = get_imm_thread_data();
+
+            data->ime_process_scan = LOWORD(lparam);
+            data->ime_process_vkey = LOWORD(wparam);
+            res = user_driver->pImeToAsciiEx( wparam, lparam, params->state, params->himc );
+            data->ime_process_vkey = data->ime_process_scan = 0;
+
+            if (data->update)
+            {
+                data->update->key_consumed = !res;
+                pthread_mutex_lock( &imm_mutex );
+                list_add_tail( &ime_updates, &data->update->entry );
+                pthread_mutex_unlock( &imm_mutex );
+                data->update = NULL;
+                res = STATUS_SUCCESS;
+            }
+
+            TRACE( "processing vkey %#x, scan %#x -> %lu\n", LOWORD(wparam), LOWORD(lparam), res );
+            if (res) return res;
         }
-
-        TRACE( "processing vkey %#x, scan %#x -> %lu\n", LOWORD(wparam), HIWORD(lparam), res );
-        return res;
-    }
-    case WINE_IME_TO_ASCII_EX:
         return ime_to_tascii_ex( wparam, lparam, params->state, params->compstr, params->key_consumed, params->himc );
     case WINE_IME_POST_UPDATE:
         post_ime_update( hwnd, wparam, (WCHAR *)lparam, (WCHAR *)params );
diff --git a/dlls/win32u/opengl.c b/dlls/win32u/opengl.c
index 6452ab019ed9..0815f4378e84 100644
--- a/dlls/win32u/opengl.c
+++ b/dlls/win32u/opengl.c
@@ -63,9 +63,9 @@ static struct list devices_egl = LIST_INIT( devices_egl );
 static struct egl_platform display_egl;
 static struct opengl_funcs display_funcs;
 
+static BOOLEAN global_extensions[GL_EXTENSION_COUNT];
 static struct wgl_pixel_format *pixel_formats;
 static UINT formats_count, onscreen_count;
-static char wgl_extensions[4096];
 
 static BOOL has_extension( const char *list, const char *ext )
 {
@@ -98,17 +98,6 @@ static void dump_extensions( const char *list )
     TRACE( "%s\n", start );
 }
 
-static void register_extension( char *list, size_t size, const char *name )
-{
-    if (!has_extension( list, name ))
-    {
-        size_t len = strlen( list );
-        assert( size - len >= strlen( name ) + 1 );
-        if (*list) strcat( list + len, " " );
-        strcat( list + len, name );
-    }
-}
-
 void *opengl_drawable_create( UINT size, const struct opengl_drawable_funcs *funcs, int format, struct client_surface *client )
 {
     struct opengl_drawable *drawable;
@@ -651,9 +640,8 @@ static BOOL egldrv_describe_pixel_format( int format, struct wgl_pixel_format *d
     return describe_egl_config( egl->configs[format % count], desc, pixel_format_flags[format / count] );
 }
 
-static const char *egldrv_init_wgl_extensions( struct opengl_funcs *funcs )
+static void egldrv_init_extensions( struct opengl_funcs *funcs, BOOLEAN extensions[GL_EXTENSION_COUNT] )
 {
-    return "";
 }
 
 static BOOL egldrv_surface_create( HWND hwnd, int format, struct opengl_drawable **drawable )
@@ -862,7 +850,7 @@ static const struct opengl_driver_funcs egldrv_funcs =
     .p_get_proc_address = egldrv_get_proc_address,
     .p_init_pixel_formats = egldrv_init_pixel_formats,
     .p_describe_pixel_format = egldrv_describe_pixel_format,
-    .p_init_wgl_extensions = egldrv_init_wgl_extensions,
+    .p_init_extensions = egldrv_init_extensions,
     .p_surface_create = egldrv_surface_create,
     .p_pbuffer_create = egldrv_pbuffer_create,
     .p_pbuffer_updated = egldrv_pbuffer_updated,
@@ -1268,9 +1256,8 @@ static BOOL nulldrv_describe_pixel_format( int format, struct wgl_pixel_format *
     return TRUE;
 }
 
-static const char *nulldrv_init_wgl_extensions( struct opengl_funcs *funcs )
+static void nulldrv_init_extensions( struct opengl_funcs *funcs, BOOLEAN extensions[GL_EXTENSION_COUNT] )
 {
-    return "";
 }
 
 static BOOL nulldrv_surface_create( HWND hwnd, int format, struct opengl_drawable **drawable )
@@ -1314,7 +1301,7 @@ static const struct opengl_driver_funcs nulldrv_funcs =
     .p_get_proc_address = nulldrv_get_proc_address,
     .p_init_pixel_formats = nulldrv_init_pixel_formats,
     .p_describe_pixel_format = nulldrv_describe_pixel_format,
-    .p_init_wgl_extensions = nulldrv_init_wgl_extensions,
+    .p_init_extensions = nulldrv_init_extensions,
     .p_surface_create = nulldrv_surface_create,
     .p_pbuffer_create = nulldrv_pbuffer_create,
     .p_pbuffer_updated = nulldrv_pbuffer_updated,
@@ -1324,20 +1311,6 @@ static const struct opengl_driver_funcs nulldrv_funcs =
     .p_make_current = nulldrv_make_current,
 };
 
-static const char *win32u_wglGetExtensionsStringARB( HDC hdc )
-{
-    TRACE( "hdc %p\n", hdc );
-    if (TRACE_ON(wgl)) dump_extensions( wgl_extensions );
-    return wgl_extensions;
-}
-
-static const char *win32u_wglGetExtensionsStringEXT(void)
-{
-    TRACE( "\n" );
-    if (TRACE_ON(wgl)) dump_extensions( wgl_extensions );
-    return wgl_extensions;
-}
-
 static int win32u_wglGetPixelFormat( HDC hdc )
 {
     BOOL is_display = is_dc_display( hdc );
@@ -1470,7 +1443,7 @@ static void pbuffer_destroy( struct pbuffer *pbuffer )
     free( pbuffer );
 }
 
-static struct pbuffer *pbuffer_create( HDC hdc, int format, int width, int height, const int *attribs )
+static struct pbuffer *pbuffer_create( int format, int width, int height, const int *attribs )
 {
     struct pbuffer *pbuffer;
     UINT size, max_level = 0;
@@ -1609,7 +1582,7 @@ static BOOL create_memory_pbuffer( HDC hdc )
         int width = dib.rect.right - dib.rect.left, height = dib.rect.bottom - dib.rect.top;
         struct pbuffer *pbuffer;
 
-        if (!(pbuffer = pbuffer_create( hdc, format, width, height, NULL )))
+        if (!(pbuffer = pbuffer_create( format, width, height, NULL )))
             WARN( "Failed to create pbuffer for memory DC %p\n", hdc );
         else
         {
@@ -1760,6 +1733,11 @@ static PROC win32u_wglGetProcAddress( const char *name )
     return ret;
 }
 
+static void win32u_init_extensions( BOOLEAN extensions[GL_EXTENSION_COUNT] )
+{
+    memcpy( extensions, global_extensions, sizeof(global_extensions) );
+}
+
 static void win32u_get_pixel_formats( struct wgl_pixel_format *formats, UINT max_formats,
                                       UINT *num_formats, UINT *num_onscreen_formats )
 {
@@ -1963,8 +1941,8 @@ static void opengl_client_pbuffer_init( HPBUFFERARB client_pbuffer, struct pbuff
     client->unix_funcs = (UINT_PTR)funcs;
 }
 
-static HPBUFFERARB win32u_wglCreatePbufferARB( HDC hdc, int format, int width, int height, const int *attribs,
-                                               HPBUFFERARB client_pbuffer )
+static BOOL win32u_pbuffer_create( HDC hdc, int format, int width, int height, const int *attribs,
+                                   HPBUFFERARB client_pbuffer )
 {
     const struct opengl_funcs *funcs = &display_funcs;
     struct pbuffer *pbuffer;
@@ -1976,17 +1954,17 @@ static HPBUFFERARB win32u_wglCreatePbufferARB( HDC hdc, int format, int width, i
     if (format <= 0 || format > total)
     {
         RtlSetLastWin32Error( ERROR_INVALID_PIXEL_FORMAT );
-        return 0;
+        return FALSE;
     }
     if (width <= 0 || height <= 0)
     {
         RtlSetLastWin32Error( ERROR_INVALID_DATA );
-        return 0;
+        return FALSE;
     }
 
-    if (!(pbuffer = pbuffer_create( hdc, format, width, height, attribs ))) return 0;
+    if (!(pbuffer = pbuffer_create( format, width, height, attribs ))) return FALSE;
     opengl_client_pbuffer_init( client_pbuffer, pbuffer, funcs );
-    return client_pbuffer;
+    return TRUE;
 }
 
 static BOOL win32u_wglDestroyPbufferARB( HPBUFFERARB client_pbuffer )
@@ -2709,28 +2687,14 @@ static void display_funcs_init(void)
     if (!display_funcs.p_##func && !(display_funcs.p_##func = driver_funcs->p_get_proc_address( #func ))) \
         WARN( "%s not found.\n", #func );
     ALL_GL_FUNCS
-    USE_GL_FUNC(glBindFramebuffer)
-    USE_GL_FUNC(glBlitFramebuffer)
-    USE_GL_FUNC(glCheckNamedFramebufferStatus)
-    USE_GL_FUNC(glCreateFramebuffers)
-    USE_GL_FUNC(glCreateRenderbuffers)
-    USE_GL_FUNC(glDeleteFramebuffers)
-    USE_GL_FUNC(glDeleteRenderbuffers)
-    USE_GL_FUNC(glGetNamedFramebufferAttachmentParameteriv)
-    USE_GL_FUNC(glGetUnsignedBytei_vEXT)
-    USE_GL_FUNC(glGetUnsignedBytevEXT)
-    USE_GL_FUNC(glImportMemoryFdEXT)
-    USE_GL_FUNC(glImportSemaphoreFdEXT)
-    USE_GL_FUNC(glNamedFramebufferDrawBuffer)
-    USE_GL_FUNC(glNamedFramebufferReadBuffer)
-    USE_GL_FUNC(glNamedFramebufferRenderbuffer)
-    USE_GL_FUNC(glNamedRenderbufferStorageMultisample)
+    ALL_GL_EXT_FUNCS
 #undef USE_GL_FUNC
 
     display_funcs.p_wglGetProcAddress = win32u_wglGetProcAddress;
+    display_funcs.p_init_extensions = win32u_init_extensions;
     display_funcs.p_get_pixel_formats = win32u_get_pixel_formats;
 
-    strcpy( wgl_extensions, driver_funcs->p_init_wgl_extensions( &display_funcs ) );
+    driver_funcs->p_init_extensions( &display_funcs, global_extensions );
     display_funcs.p_wglGetPixelFormat = win32u_wglGetPixelFormat;
     display_funcs.p_wglSetPixelFormat = win32u_wglSetPixelFormat;
 
@@ -2746,54 +2710,55 @@ static void display_funcs_init(void)
     display_funcs.p_context_destroy = win32u_context_destroy;
     display_funcs.p_context_reset = win32u_context_reset;
 
-    register_extension( wgl_extensions, ARRAY_SIZE(wgl_extensions), "WGL_ARB_multisample" );
+    global_extensions[WGL_ARB_multisample] = 1;
 
-    register_extension( wgl_extensions, ARRAY_SIZE(wgl_extensions), "WGL_ARB_pixel_format" );
+    global_extensions[WGL_ARB_pixel_format] = 1;
     display_funcs.p_wglChoosePixelFormatARB      = (void *)1; /* never called */
     display_funcs.p_wglGetPixelFormatAttribfvARB = (void *)1; /* never called */
     display_funcs.p_wglGetPixelFormatAttribivARB = (void *)1; /* never called */
 
     if (display_egl.has_EGL_EXT_pixel_format_float)
     {
-        register_extension( wgl_extensions, ARRAY_SIZE(wgl_extensions), "WGL_ARB_pixel_format_float" );
-        register_extension( wgl_extensions, ARRAY_SIZE(wgl_extensions), "WGL_ATI_pixel_format_float" );
+        global_extensions[WGL_ARB_pixel_format_float] = 1;
+        global_extensions[WGL_ATI_pixel_format_float] = 1;
     }
 
-    register_extension( wgl_extensions, ARRAY_SIZE(wgl_extensions), "WGL_ARB_extensions_string" );
-    display_funcs.p_wglGetExtensionsStringARB = win32u_wglGetExtensionsStringARB;
+    global_extensions[WGL_ARB_extensions_string] = 1;
+    display_funcs.p_wglGetExtensionsStringARB = (void *)1 /* never called */;
 
-    register_extension( wgl_extensions, ARRAY_SIZE(wgl_extensions), "WGL_EXT_extensions_string" );
-    display_funcs.p_wglGetExtensionsStringEXT = win32u_wglGetExtensionsStringEXT;
+    global_extensions[WGL_EXT_extensions_string] = 1;
+    display_funcs.p_wglGetExtensionsStringEXT = (void *)1 /* never called */;
 
     /* In WineD3D we need the ability to set the pixel format more than once (e.g. after a device reset).
      * The default wglSetPixelFormat doesn't allow this, so add our own which allows it.
      */
-    register_extension( wgl_extensions, ARRAY_SIZE(wgl_extensions), "WGL_WINE_pixel_format_passthrough" );
+    global_extensions[WGL_WINE_pixel_format_passthrough] = 1;
     display_funcs.p_wglSetPixelFormatWINE = win32u_wglSetPixelFormatWINE;
 
-    register_extension( wgl_extensions, ARRAY_SIZE(wgl_extensions), "WGL_ARB_create_context" );
-    register_extension( wgl_extensions, ARRAY_SIZE(wgl_extensions), "WGL_ARB_create_context_no_error" );
-    register_extension( wgl_extensions, ARRAY_SIZE(wgl_extensions), "WGL_ARB_create_context_profile" );
+    global_extensions[WGL_ARB_create_context] = 1;
+    global_extensions[WGL_ARB_create_context_no_error] = 1;
+    global_extensions[WGL_ARB_create_context_profile] = 1;
     display_funcs.p_wglCreateContextAttribsARB = (void *)1; /* never called */
 
-    register_extension( wgl_extensions, ARRAY_SIZE(wgl_extensions), "WGL_ARB_make_current_read" );
+    global_extensions[WGL_ARB_make_current_read] = 1;
     display_funcs.p_wglGetCurrentReadDCARB   = (void *)1;  /* never called */
     display_funcs.p_wglMakeContextCurrentARB = win32u_wglMakeContextCurrentARB;
 
-    register_extension( wgl_extensions, ARRAY_SIZE(wgl_extensions), "WGL_ARB_pbuffer" );
-    display_funcs.p_wglCreatePbufferARB    = win32u_wglCreatePbufferARB;
+    global_extensions[WGL_ARB_pbuffer] = 1;
+    display_funcs.p_pbuffer_create         = win32u_pbuffer_create;
+    display_funcs.p_wglCreatePbufferARB    = (void *)1; /* never called */
     display_funcs.p_wglDestroyPbufferARB   = win32u_wglDestroyPbufferARB;
     display_funcs.p_wglGetPbufferDCARB     = win32u_wglGetPbufferDCARB;
     display_funcs.p_wglReleasePbufferDCARB = win32u_wglReleasePbufferDCARB;
     display_funcs.p_wglQueryPbufferARB     = win32u_wglQueryPbufferARB;
 
-    register_extension( wgl_extensions, ARRAY_SIZE(wgl_extensions), "WGL_ARB_render_texture" );
+    global_extensions[WGL_ARB_render_texture] = 1;
     display_funcs.p_wglBindTexImageARB     = win32u_wglBindTexImageARB;
     display_funcs.p_wglReleaseTexImageARB  = win32u_wglReleaseTexImageARB;
     display_funcs.p_wglSetPbufferAttribARB = win32u_wglSetPbufferAttribARB;
 
-    register_extension( wgl_extensions, ARRAY_SIZE(wgl_extensions), "WGL_EXT_swap_control" );
-    register_extension( wgl_extensions, ARRAY_SIZE(wgl_extensions), "WGL_EXT_swap_control_tear" );
+    global_extensions[WGL_EXT_swap_control] = 1;
+    global_extensions[WGL_EXT_swap_control_tear] = 1;
     display_funcs.p_wglSwapIntervalEXT = win32u_wglSwapIntervalEXT;
     display_funcs.p_wglGetSwapIntervalEXT = win32u_wglGetSwapIntervalEXT;
 
@@ -2810,7 +2775,7 @@ static void display_funcs_init(void)
 
     if (!list_empty( &devices_egl ))
     {
-        register_extension( wgl_extensions, ARRAY_SIZE(wgl_extensions), "WGL_WINE_query_renderer" );
+        global_extensions[WGL_WINE_query_renderer] = 1;
         display_funcs.p_query_renderer = win32u_query_renderer;
         display_funcs.p_wglQueryCurrentRendererIntegerWINE = win32u_wglQueryCurrentRendererIntegerWINE;
         display_funcs.p_wglQueryCurrentRendererStringWINE = win32u_wglQueryCurrentRendererStringWINE;
diff --git a/dlls/win32u/tests/d3dkmt.c b/dlls/win32u/tests/d3dkmt.c
index 6b52d3100b4f..d4ca602e8e47 100644
--- a/dlls/win32u/tests/d3dkmt.c
+++ b/dlls/win32u/tests/d3dkmt.c
@@ -4224,7 +4224,7 @@ static struct opengl_device *create_opengl_device( HWND hwnd, LUID *luid )
     PFN_glGetUnsignedBytevEXT p_glGetUnsignedBytevEXT;
     PFN_glGetUnsignedBytei_vEXT p_glGetUnsignedBytei_vEXT;
 
-    const char *extensions, *ptr;
+    const char *extensions, *renderer, *ptr;
     struct opengl_device *dev;
     unsigned int nodes = 0;
     LUID device_luid = {0};
@@ -4261,9 +4261,14 @@ static struct opengl_device *create_opengl_device( HWND hwnd, LUID *luid )
     ok_x4( glGetError(), ==, 0 );
     ok_ptr( extensions, !=, NULL );
 
+    renderer = (char *)glGetString( GL_RENDERER );
+    ok_x4( glGetError(), ==, 0 );
+    ok_ptr( renderer, !=, NULL );
+
     ptr = find_opengl_extension( extensions, "GL_EXT_memory_object_win32" );
     ok_ptr( ptr, !=, NULL );
     ptr = find_opengl_extension( extensions, "GL_EXT_semaphore_win32" );
+    todo_wine_if( strstr( renderer, "llvmpipe" ))
     ok_ptr( ptr, !=, NULL );
     ptr = find_opengl_extension( extensions, "GL_EXT_win32_keyed_mutex" );
     dev->broken = !winetest_platform_is_wine && ptr == NULL; /* missing on AMD, as is support for importing D3D handles */
diff --git a/dlls/wineandroid.drv/WineActivity.java b/dlls/wineandroid.drv/WineActivity.java
index 2eee16b2dc13..3bb27c13f932 100644
--- a/dlls/wineandroid.drv/WineActivity.java
+++ b/dlls/wineandroid.drv/WineActivity.java
@@ -31,6 +31,7 @@
 import android.os.Build;
 import android.os.Bundle;
 import android.preference.PreferenceManager;
+import android.system.ErrnoException;
 import android.util.Log;
 import android.view.InputDevice;
 import android.view.KeyEvent;
@@ -52,9 +53,12 @@
 import java.util.Locale;
 import java.util.Map;
 
+import static android.system.Os.setenv;
+import static android.system.Os.getenv;
+
 public class WineActivity extends Activity
 {
-    private native String wine_init( String[] cmdline, String[] env );
+    private native String wine_init( String[] cmdline );
     public native void wine_desktop_changed( int width, int height );
     public native void wine_config_changed( int dpi );
     public native void wine_surface_changed( int hwnd, Surface surface, boolean opengl );
@@ -107,27 +111,34 @@ private String get_so_dir( String abi )
         return "";
     }
 
+    private void putenv( String name, String val )
+    {
+        try
+        {
+            setenv( name, val, true );
+        }
+        catch ( Exception e )
+        {
+            e.printStackTrace();
+        }
+    }
+
     private void loadWine( String cmdline )
     {
         copyAssetFiles();
 
         String wine_abi = get_wine_abi();
-        File bindir = new File( getFilesDir(), wine_abi + "/bin" );
         File libdir = new File( getFilesDir(), wine_abi + "/lib" );
         File dlldir = new File( libdir, "wine" );
         File prefix = new File( getFilesDir(), "prefix" );
-        File loader = new File( bindir, "wine" );
+        File loader = new File( dlldir, get_so_dir(wine_abi) + "/wine" );
         String locale = Locale.getDefault().getLanguage() + "_" +
             Locale.getDefault().getCountry() + ".UTF-8";
 
-        HashMap<String,String> env = new HashMap<String,String>();
-        env.put( "WINELOADER", loader.toString() );
-        env.put( "WINEPREFIX", prefix.toString() );
-        env.put( "WINEDLLPATH", dlldir.toString() );
-        env.put( "LD_LIBRARY_PATH", libdir.toString() + ":" + getApplicationInfo().nativeLibraryDir );
-        env.put( "LC_ALL", locale );
-        env.put( "LANG", locale );
-        env.put( "PATH", bindir.toString() + ":" + System.getenv( "PATH" ));
+        putenv( "WINEPREFIX", prefix.toString() );
+        putenv( "LD_LIBRARY_PATH", libdir.toString() + ":" + getPackageResourcePath() + "!/lib/" + wine_abi + ":" + getApplicationInfo().nativeLibraryDir );
+        putenv( "LC_ALL", locale );
+        putenv( "LANG", locale );
 
         if (cmdline == null)
         {
@@ -140,8 +151,8 @@ private void loadWine( String cmdline )
         if (winedebug != null)
         {
             File log = new File( getFilesDir(), "log" );
-            env.put( "WINEDEBUG", winedebug );
-            env.put( "WINEDEBUGLOG", log.toString() );
+            putenv( "WINEDEBUG", winedebug );
+            putenv( "WINEDEBUGLOG", log.toString() );
             Log.i( LOGTAG, "logging to " + log.toString() );
             log.delete();
         }
@@ -151,25 +162,17 @@ private void loadWine( String cmdline )
         System.load( dlldir.toString() + get_so_dir(wine_abi) + "/ntdll.so" );
         prefix.mkdirs();
 
-        runWine( cmdline, env );
+        runWine( loader.toString(), cmdline );
     }
 
-    private final void runWine( String cmdline, HashMap<String,String> environ )
+    private final void runWine( String loader, String cmdline )
     {
-        String[] env = new String[environ.size() * 2];
-        int j = 0;
-        for (Map.Entry<String,String> entry : environ.entrySet())
-        {
-            env[j++] = entry.getKey();
-            env[j++] = entry.getValue();
-        }
-
-        String[] cmd = { environ.get( "WINELOADER" ),
+        String[] cmd = { loader,
                          "c:\\windows\\system32\\explorer.exe",
                          "/desktop=shell,,android",
                          cmdline };
 
-        String err = wine_init( cmd, env );
+        String err = wine_init( cmd );
         Log.e( LOGTAG, err );
     }
 
@@ -338,7 +341,6 @@ protected class WineWindow
         protected int hwnd;
         protected int owner;
         protected int style;
-        protected float scale;
         protected boolean visible;
         protected Rect visible_rect;
         protected Rect client_rect;
@@ -351,7 +353,7 @@ protected class WineWindow
         protected WineWindowGroup window_group;
         protected WineWindowGroup client_group;
 
-        public WineWindow( int w, WineWindow parent, float scale )
+        public WineWindow( int w, WineWindow parent )
         {
             Log.i( LOGTAG, String.format( "create hwnd %08x", w ));
             hwnd = w;
@@ -360,7 +362,6 @@ public WineWindow( int w, WineWindow parent, float scale )
             visible = false;
             visible_rect = client_rect = new Rect( 0, 0, 0, 0 );
             this.parent = parent;
-            this.scale = scale;
             children = new ArrayList<WineWindow>();
             win_map.put( w, this );
             if (parent != null) parent.children.add( this );
@@ -410,10 +411,7 @@ public void destroy_window_groups()
         public View create_whole_view()
         {
             if (window_group == null) create_window_groups();
-            window_group.create_view( false ).layout( 0, 0,
-                                                      Math.round( (visible_rect.right - visible_rect.left) * scale ),
-                                                      Math.round( (visible_rect.bottom - visible_rect.top) * scale ));
-            window_group.set_scale( scale );
+            window_group.create_view( false ).layout( 0, 0, visible_rect.right - visible_rect.left, visible_rect.bottom - visible_rect.top );
             return window_group;
         }
 
@@ -510,11 +508,10 @@ public void pos_changed( int flags, int insert_after, int owner, int style,
                                          client_rect.bottom  - visible_rect.top );
         }
 
-        public void set_parent( WineWindow new_parent, float scale )
+        public void set_parent( WineWindow new_parent )
         {
             Log.i( LOGTAG, String.format( "set parent hwnd %08x parent %08x -> %08x",
                                           hwnd, parent.hwnd, new_parent.hwnd ));
-            this.scale = scale;
             if (window_group != null)
             {
                 if (visible) remove_view_from_parent();
@@ -572,8 +569,8 @@ else if (surftex != window_surftex)
 
         public void get_event_pos( MotionEvent event, int[] pos )
         {
-            pos[0] = Math.round( event.getX() * scale + window_group.getLeft() );
-            pos[1] = Math.round( event.getY() * scale + window_group.getTop() );
+            pos[0] = Math.round( event.getX() + window_group.getLeft() );
+            pos[1] = Math.round( event.getY() + window_group.getTop() );
         }
     }
 
@@ -596,10 +593,6 @@ protected class WineWindowGroup extends ViewGroup
         /* wrapper for layout() making sure that the view is not empty */
         public void set_layout( int left, int top, int right, int bottom )
         {
-            left   *= win.scale;
-            top    *= win.scale;
-            right  *= win.scale;
-            bottom *= win.scale;
             if (right <= left + 1) right = left + 2;
             if (bottom <= top + 1) bottom = top + 2;
             layout( left, top, right, bottom );
@@ -611,15 +604,6 @@ protected void onLayout( boolean changed, int left, int top, int right, int bott
             if (content_view != null) content_view.layout( 0, 0, right - left, bottom - top );
         }
 
-        public void set_scale( float scale )
-        {
-            if (content_view == null) return;
-            content_view.setPivotX( 0 );
-            content_view.setPivotY( 0 );
-            content_view.setScaleX( scale );
-            content_view.setScaleY( scale );
-        }
-
         public WineView create_view( boolean is_client )
         {
             if (content_view != null) return content_view;
@@ -765,7 +749,7 @@ protected class TopView extends ViewGroup
         public TopView( Context context )
         {
             super( context );
-            message_window = new WineWindow( WineWindow.HWND_MESSAGE, null, 1.0f );
+            message_window = new WineWindow( WineWindow.HWND_MESSAGE, null );
             message_window.create_window_groups();
         }
 
@@ -798,12 +782,12 @@ public void create_desktop_view()
         wine_config_changed( getResources().getConfiguration().densityDpi );
     }
 
-    public void create_window( int hwnd, boolean is_desktop, boolean opengl, int parent, float scale, int pid )
+    public void create_window( int hwnd, boolean is_desktop, boolean opengl, int parent, int pid )
     {
         WineWindow win = get_window( hwnd );
         if (win == null)
         {
-            win = new WineWindow( hwnd, is_desktop ? null : get_window( parent ), scale );
+            win = new WineWindow( hwnd, is_desktop ? null : get_window( parent ) );
             win.create_window_groups();
             if (win.parent == desktop_window) win.create_whole_view();
             if (is_desktop)
@@ -822,11 +806,11 @@ public void destroy_window( int hwnd )
         if (win != null) win.destroy();
     }
 
-    public void set_window_parent( int hwnd, int parent, float scale, int pid )
+    public void set_window_parent( int hwnd, int parent, int pid )
     {
         WineWindow win = get_window( hwnd );
         if (win == null) return;
-        win.set_parent( get_window( parent ), scale );
+        win.set_parent( get_window( parent ) );
         if (win.parent == desktop_window) win.create_whole_view();
     }
 
@@ -855,9 +839,9 @@ public void createDesktopView()
         runOnUiThread( new Runnable() { public void run() { create_desktop_view(); }} );
     }
 
-    public void createWindow( final int hwnd, final boolean is_desktop, final boolean opengl, final int parent, final float scale, final int pid )
+    public void createWindow( final int hwnd, final boolean is_desktop, final boolean opengl, final int parent, final int pid )
     {
-        runOnUiThread( new Runnable() { public void run() { create_window( hwnd, is_desktop, opengl, parent, scale, pid ); }} );
+        runOnUiThread( new Runnable() { public void run() { create_window( hwnd, is_desktop, opengl, parent, pid ); }} );
     }
 
     public void destroyWindow( final int hwnd )
@@ -865,9 +849,9 @@ public void destroyWindow( final int hwnd )
         runOnUiThread( new Runnable() { public void run() { destroy_window( hwnd ); }} );
     }
 
-    public void setParent( final int hwnd, final int parent, final float scale, final int pid )
+    public void setParent( final int hwnd, final int parent, final int pid )
     {
-        runOnUiThread( new Runnable() { public void run() { set_window_parent( hwnd, parent, scale, pid ); }} );
+        runOnUiThread( new Runnable() { public void run() { set_window_parent( hwnd, parent, pid ); }} );
     }
 
     public void setCursor( final int id, final int width, final int height,
diff --git a/dlls/wineandroid.drv/android.h b/dlls/wineandroid.drv/android.h
index 3107136cb7e9..00061cf2812f 100644
--- a/dlls/wineandroid.drv/android.h
+++ b/dlls/wineandroid.drv/android.h
@@ -62,13 +62,13 @@ extern UINT ANDROID_OpenGLInit( UINT version, const struct opengl_funcs *opengl_
 
 extern void start_android_device(void);
 extern void register_native_window( HWND hwnd, struct ANativeWindow *win, BOOL client );
-extern struct ANativeWindow *create_ioctl_window( HWND hwnd, BOOL opengl, float scale );
+extern struct ANativeWindow *create_ioctl_window( HWND hwnd, BOOL opengl );
 extern struct ANativeWindow *grab_ioctl_window( struct ANativeWindow *window );
 extern void release_ioctl_window( struct ANativeWindow *window );
 extern void destroy_ioctl_window( HWND hwnd, BOOL opengl );
 extern int ioctl_window_pos_changed( HWND hwnd, const struct window_rects *rects,
                                      UINT style, UINT flags, HWND after, HWND owner );
-extern int ioctl_set_window_parent( HWND hwnd, HWND parent, float scale );
+extern int ioctl_set_window_parent( HWND hwnd, HWND parent );
 extern int ioctl_set_capture( HWND hwnd );
 extern int ioctl_set_cursor( int id, int width, int height,
                              int hotspotx, int hotspoty, const unsigned int *bits );
diff --git a/dlls/wineandroid.drv/build.gradle.in b/dlls/wineandroid.drv/build.gradle.in
index 56ffd06ca82f..d83082bb8c5d 100644
--- a/dlls/wineandroid.drv/build.gradle.in
+++ b/dlls/wineandroid.drv/build.gradle.in
@@ -113,6 +113,7 @@ android
     {
         applicationId "org.winehq.wine"
         minSdkVersion 26
+        targetSdkVersion 28
         versionCode 1
         versionName "@PACKAGE_VERSION@"
     }
@@ -126,6 +127,12 @@ android
         main.res.srcDirs = [ "res" ]
         main.manifest.srcFile get_srcdir() + "/AndroidManifest.xml"
     }
+
+    compileOptions
+    {
+        sourceCompatibility JavaVersion.VERSION_1_8
+        compileOptions.targetCompatibility JavaVersion.VERSION_1_8
+    }
 }
 
 configurations.configureEach
diff --git a/dlls/wineandroid.drv/device.c b/dlls/wineandroid.drv/device.c
index 3d77033a9807..77050337273a 100644
--- a/dlls/wineandroid.drv/device.c
+++ b/dlls/wineandroid.drv/device.c
@@ -132,7 +132,6 @@ struct ioctl_android_create_window
 {
     struct ioctl_header hdr;
     int                 parent;
-    float               scale;
     BOOL                is_desktop;
 };
 
@@ -199,7 +198,6 @@ struct ioctl_android_set_window_parent
 {
     struct ioctl_header hdr;
     int                 parent;
-    float               scale;
 };
 
 struct ioctl_android_set_capture
@@ -619,10 +617,10 @@ static NTSTATUS createWindow_ioctl( void *data, DWORD in_size, DWORD out_size, U
 
     TRACE( "hwnd %08x opengl %u parent %08x\n", res->hdr.hwnd, res->hdr.opengl, res->parent );
 
-    if (!(object = load_java_method( &method, "createWindow", "(IZZIFI)V" ))) return STATUS_NOT_SUPPORTED;
+    if (!(object = load_java_method( &method, "createWindow", "(IZZII)V" ))) return STATUS_NOT_SUPPORTED;
 
     wrap_java_call();
-    (*jni_env)->CallVoidMethod( jni_env, object, method, res->hdr.hwnd, res->is_desktop, res->hdr.opengl, res->parent, res->scale, pid );
+    (*jni_env)->CallVoidMethod( jni_env, object, method, res->hdr.hwnd, res->is_desktop, res->hdr.opengl, res->parent, pid );
     unwrap_java_call();
     return STATUS_SUCCESS;
 }
@@ -958,10 +956,10 @@ static NTSTATUS setWindowParent_ioctl( void *data, DWORD in_size, DWORD out_size
 
     TRACE( "hwnd %08x parent %08x\n", res->hdr.hwnd, res->parent );
 
-    if (!(object = load_java_method( &method, "setParent", "(IIFI)V" ))) return STATUS_NOT_SUPPORTED;
+    if (!(object = load_java_method( &method, "setParent", "(III)V" ))) return STATUS_NOT_SUPPORTED;
 
     wrap_java_call();
-    (*jni_env)->CallVoidMethod( jni_env, object, method, res->hdr.hwnd, res->parent, res->scale, pid );
+    (*jni_env)->CallVoidMethod( jni_env, object, method, res->hdr.hwnd, res->parent, pid );
     unwrap_java_call();
     return STATUS_SUCCESS;
 }
@@ -1011,7 +1009,7 @@ static NTSTATUS setCursor_ioctl( void *data, DWORD in_size, DWORD out_size, ULON
                                     res->hotspotx, res->hotspoty, array );
         (*jni_env)->DeleteLocalRef( jni_env, array );
     }
-    else (*jni_env)->CallVoidMethod( jni_env, object, method, res->id, 0, 0, 0, 0, 0 );
+    else (*jni_env)->CallVoidMethod( jni_env, object, method, res->id, 0, 0, 0, 0, NULL );
 
     unwrap_java_call();
 
@@ -1430,7 +1428,7 @@ static int perform( ANativeWindow *window, int operation, ... )
     return android_ioctl( IOCTL_PERFORM, &perf, sizeof(perf), NULL, NULL );
 }
 
-struct ANativeWindow *create_ioctl_window( HWND hwnd, BOOL opengl, float scale )
+struct ANativeWindow *create_ioctl_window( HWND hwnd, BOOL opengl )
 {
     struct ioctl_android_create_window req;
     struct native_win_wrapper *win = calloc( 1, sizeof(*win) );
@@ -1459,7 +1457,6 @@ struct ANativeWindow *create_ioctl_window( HWND hwnd, BOOL opengl, float scale )
     req.hdr.hwnd = HandleToLong( win->hwnd );
     req.hdr.opengl = win->opengl;
     req.parent = get_ioctl_win_parent( NtUserGetAncestor( hwnd, GA_PARENT ));
-    req.scale = scale;
     req.is_desktop = hwnd == desktop_window;
     android_ioctl( IOCTL_CREATE_WINDOW, &req, sizeof(req), NULL, NULL );
 
@@ -1514,14 +1511,13 @@ int ioctl_window_pos_changed( HWND hwnd, const struct window_rects *rects,
     return android_ioctl( IOCTL_WINDOW_POS_CHANGED, &req, sizeof(req), NULL, NULL );
 }
 
-int ioctl_set_window_parent( HWND hwnd, HWND parent, float scale )
+int ioctl_set_window_parent( HWND hwnd, HWND parent )
 {
     struct ioctl_android_set_window_parent req;
 
     req.hdr.hwnd = HandleToLong( hwnd );
     req.hdr.opengl = FALSE;
     req.parent = get_ioctl_win_parent( parent );
-    req.scale = scale;
     return android_ioctl( IOCTL_SET_WINDOW_PARENT, &req, sizeof(req), NULL, NULL );
 }
 
diff --git a/dlls/wineandroid.drv/opengl.c b/dlls/wineandroid.drv/opengl.c
index 0460dfd50b49..62b4fa7dd6c9 100644
--- a/dlls/wineandroid.drv/opengl.c
+++ b/dlls/wineandroid.drv/opengl.c
@@ -156,16 +156,16 @@ static void android_drawable_flush( struct opengl_drawable *base, UINT flags )
     if (flags & GL_FLUSH_INTERVAL) funcs->p_eglSwapInterval( egl->display, abs( base->interval ) );
 }
 
-static const char *android_init_wgl_extensions( struct opengl_funcs *funcs )
+static void android_init_extensions( struct opengl_funcs *funcs, BOOLEAN extensions[GL_EXTENSION_COUNT] )
 {
-    return "WGL_EXT_framebuffer_sRGB";
+    extensions[WGL_EXT_framebuffer_sRGB] = 1;
 }
 
 static struct opengl_driver_funcs android_driver_funcs =
 {
     .p_init_egl_platform = android_init_egl_platform,
     .p_get_proc_address = android_get_proc_address,
-    .p_init_wgl_extensions = android_init_wgl_extensions,
+    .p_init_extensions = android_init_extensions,
     .p_surface_create = android_surface_create,
 };
 
diff --git a/dlls/wineandroid.drv/window.c b/dlls/wineandroid.drv/window.c
index 41439c2f697b..97eb3004ba80 100644
--- a/dlls/wineandroid.drv/window.c
+++ b/dlls/wineandroid.drv/window.c
@@ -99,8 +99,7 @@ static struct android_win_data *alloc_win_data( HWND hwnd )
     if ((data = calloc( 1, sizeof(*data) )))
     {
         data->hwnd = hwnd;
-        data->window = create_ioctl_window( hwnd, FALSE,
-                                            (float)NtUserGetWinMonitorDpi( hwnd, MDT_RAW_DPI ) / NtUserGetDpiForWindow( hwnd ));
+        data->window = create_ioctl_window( hwnd, FALSE );
         pthread_mutex_lock( &win_data_mutex );
         win_data_context[context_idx(hwnd)] = data;
     }
@@ -1105,7 +1104,7 @@ void ANDROID_SetParent( HWND hwnd, HWND parent, HWND old_parent )
     TRACE( "win %p parent %p -> %p\n", hwnd, old_parent, parent );
 
     data->parent = (parent == NtUserGetDesktopWindow()) ? 0 : parent;
-    ioctl_set_window_parent( hwnd, parent, (float)NtUserGetWinMonitorDpi( hwnd, MDT_RAW_DPI ) / NtUserGetDpiForWindow( hwnd ));
+    ioctl_set_window_parent( hwnd, parent );
     release_win_data( data );
 }
 
@@ -1214,7 +1213,7 @@ ANativeWindow *get_client_window( HWND hwnd )
     ANativeWindow *client;
 
     if (!(data = get_win_data( hwnd ))) return NULL;
-    if (!data->client) data->client = create_ioctl_window( hwnd, TRUE, 1.0f );
+    if (!data->client) data->client = create_ioctl_window( hwnd, TRUE );
     client = grab_ioctl_window( data->client );
     release_win_data( data );
 
diff --git a/dlls/winebth.sys/dbus.c b/dlls/winebth.sys/dbus.c
index aa2cef1cc0a1..4431f527f73d 100644
--- a/dlls/winebth.sys/dbus.c
+++ b/dlls/winebth.sys/dbus.c
@@ -944,7 +944,8 @@ bluez_gatt_characteristic_props_from_dict_entry( const char *prop_name, DBusMess
         p_dbus_message_iter_recurse( variant, &flags_iter );
         while (p_dbus_message_iter_get_arg_type( &flags_iter ) != DBUS_TYPE_INVALID)
         {
-            struct named_flag name, *flag;
+            const struct named_flag *flag;
+            struct named_flag name;
 
             p_dbus_message_iter_get_basic( &flags_iter, &name.name );
             if ((flag = bsearch( &name, flags, ARRAY_SIZE( flags ), sizeof( *flags ), named_flag_cmp )))
diff --git a/dlls/winegstreamer/color_convert.c b/dlls/winegstreamer/color_convert.c
index 697cd6fcd4c8..5d9e5f1c0a96 100644
--- a/dlls/winegstreamer/color_convert.c
+++ b/dlls/winegstreamer/color_convert.c
@@ -1038,3 +1038,19 @@ HRESULT color_convert_create(IUnknown *outer, IUnknown **out)
     TRACE("Created %p\n", *out);
     return S_OK;
 }
+
+HRESULT WINAPI winegstreamer_create_color_converter(IMFTransform **out)
+{
+    IUnknown *unknown;
+    HRESULT hr;
+
+    TRACE("out %p.\n", out);
+
+    if (!init_gstreamer())
+        return E_FAIL;
+
+    if (FAILED(hr = color_convert_create(NULL, &unknown)))
+        return hr;
+
+    return IUnknown_QueryInterface(unknown, &IID_IMFTransform, (void**)out);
+}
diff --git a/dlls/winegstreamer/winegstreamer.spec b/dlls/winegstreamer/winegstreamer.spec
index 095f75a0865b..69eed004b785 100644
--- a/dlls/winegstreamer/winegstreamer.spec
+++ b/dlls/winegstreamer/winegstreamer.spec
@@ -4,3 +4,4 @@
 @ stdcall -private DllUnregisterServer()
 @ stdcall winegstreamer_create_wm_sync_reader(ptr ptr)
 @ stdcall winegstreamer_create_video_decoder(ptr)
+@ stdcall winegstreamer_create_color_converter(ptr)
diff --git a/dlls/winegstreamer/wm_reader.c b/dlls/winegstreamer/wm_reader.c
index 4f41f1a1ceb2..6a800e4448cd 100644
--- a/dlls/winegstreamer/wm_reader.c
+++ b/dlls/winegstreamer/wm_reader.c
@@ -1471,7 +1471,7 @@ static void free_stream_buffers(struct wm_reader *reader)
     }
 }
 
-static void free_streams(struct wm_reader *reader)
+static void release_stream_allocators(struct wm_reader *reader)
 {
     unsigned int i;
 
@@ -1486,9 +1486,6 @@ static void free_streams(struct wm_reader *reader)
             IWMReaderAllocatorEx_Release(stream->stream_allocator);
         stream->stream_allocator = NULL;
     }
-
-    free(reader->streams);
-    reader->streams = NULL;
 }
 
 static HRESULT init_stream(struct wm_reader *reader)
@@ -1688,7 +1685,7 @@ out_destroy_parser:
         reader->read_sem = NULL;
     }
     free_stream_buffers(reader);
-    free_streams(reader);
+    release_stream_allocators(reader);
     wg_parser_destroy(reader->wg_parser);
     reader->wg_parser = 0;
 
@@ -1917,6 +1914,7 @@ static ULONG WINAPI unknown_inner_Release(IUnknown *iface)
         reader->shutdown_cs.DebugInfo->Spare[0] = 0;
         DeleteCriticalSection(&reader->shutdown_cs);
 
+        free(reader->streams);
         free(reader);
     }
 
@@ -1970,7 +1968,7 @@ static HRESULT WINAPI reader_Close(IWMSyncReader2 *iface)
     ReleaseSemaphore(reader->read_sem, 1, NULL);
 
     free_stream_buffers(reader);
-    free_streams(reader);
+    release_stream_allocators(reader);
 
     wg_parser_disconnect(reader->wg_parser);
 
diff --git a/dlls/winemac.drv/cocoa_event.m b/dlls/winemac.drv/cocoa_event.m
index 7c86fc1d5ff0..d3fc4e8f22c8 100644
--- a/dlls/winemac.drv/cocoa_event.m
+++ b/dlls/winemac.drv/cocoa_event.m
@@ -21,7 +21,6 @@
 #include <sys/types.h>
 #include <sys/event.h>
 #include <sys/time.h>
-#include <libkern/OSAtomic.h>
 
 #include "macdrv_cocoa.h"
 #import "cocoa_event.h"
@@ -277,7 +276,7 @@ - (MacDrvEvent*) getEventMatchingMask:(macdrv_event_mask)mask
                 [events removeObjectAtIndex:index];
 
                 if (event->event->deliver == INT_MAX ||
-                    OSAtomicDecrement32Barrier(&event->event->deliver) >= 0)
+                    __atomic_sub_fetch(&event->event->deliver, 1, __ATOMIC_RELAXED) >= 0)
                 {
                     ret = event;
                     break;
@@ -647,7 +646,7 @@ int macdrv_copy_event_from_queue(macdrv_event_queue queue,
  */
 macdrv_event* macdrv_retain_event(macdrv_event *event)
 {
-    OSAtomicIncrement32Barrier(&event->refs);
+    __atomic_add_fetch(&event->refs, 1, __ATOMIC_RELAXED);
     return event;
 }
 
@@ -662,8 +661,9 @@ void macdrv_release_event(macdrv_event *event)
 {
 @autoreleasepool
 {
-    if (OSAtomicDecrement32Barrier(&event->refs) <= 0)
+    if (__atomic_sub_fetch(&event->refs, 1, __ATOMIC_RELEASE) <= 0)
     {
+        __atomic_thread_fence(__ATOMIC_ACQUIRE);
         switch (event->type)
         {
             case IM_SET_TEXT:
@@ -706,7 +706,7 @@ void macdrv_release_event(macdrv_event *event)
  */
 macdrv_query* macdrv_retain_query(macdrv_query *query)
 {
-    OSAtomicIncrement32Barrier(&query->refs);
+    __atomic_add_fetch(&query->refs, 1, __ATOMIC_RELAXED);
     return query;
 }
 
@@ -715,8 +715,9 @@ void macdrv_release_event(macdrv_event *event)
  */
 void macdrv_release_query(macdrv_query *query)
 {
-    if (OSAtomicDecrement32Barrier(&query->refs) <= 0)
+    if (__atomic_sub_fetch(&query->refs, 1, __ATOMIC_RELEASE) <= 0)
     {
+        __atomic_thread_fence(__ATOMIC_ACQUIRE);
         switch (query->type)
         {
             case QUERY_DRAG_DROP_ENTER:
diff --git a/dlls/winemac.drv/cocoa_window.m b/dlls/winemac.drv/cocoa_window.m
index 7d6d704436c7..4c1ac93524f5 100644
--- a/dlls/winemac.drv/cocoa_window.m
+++ b/dlls/winemac.drv/cocoa_window.m
@@ -4034,13 +4034,13 @@ uint32_t macdrv_window_background_color(void)
 }
 
 /***********************************************************************
- *              macdrv_ime_process_key
+ *              macdrv_send_keydown_to_input_source
  *
  * Sends a key down event to the active window's inputContext so that it can be
  * processed by input sources (AKA IMEs). This is only called when there is an
  * active non-keyboard input source.
  */
-bool macdrv_ime_process_key(int keyc, unsigned int flags, int repeat, void *himc)
+bool macdrv_send_keydown_to_input_source(int keyc, unsigned int flags, int repeat, void *himc)
 {
     __block bool ret;
 
diff --git a/dlls/winemac.drv/dllmain.c b/dlls/winemac.drv/dllmain.c
index eb6efedab176..bbd528d53b96 100644
--- a/dlls/winemac.drv/dllmain.c
+++ b/dlls/winemac.drv/dllmain.c
@@ -141,9 +141,15 @@ static void CALLBACK quit_callback(HWND hwnd, UINT msg, ULONG_PTR data, LRESULT
                 if (!SendMessageCallbackW(qi->wins[i], WM_ENDSESSION, qi->result, qi->flags,
                                           quit_callback, (ULONG_PTR)qi))
                 {
-                    WARN("failed to send WM_ENDSESSION to win %p; error 0x%08lx\n",
-                         qi->wins[i], RtlGetLastWin32Error());
-                    quit_callback(qi->wins[i], WM_ENDSESSION, (ULONG_PTR)qi, 0);
+                    DWORD error = RtlGetLastWin32Error();
+                    BOOL invalid = (error == ERROR_INVALID_WINDOW_HANDLE);
+                    if (invalid)
+                        TRACE("failed to send WM_ENDSESSION to win %p because it's invalid; assuming success\n",
+                            qi->wins[i]);
+                    else
+                        WARN("failed to send WM_ENDSESSION to win %p; error 0x%08lx; assuming refusal\n",
+                            qi->wins[i], error);
+                    quit_callback(qi->wins[i], WM_ENDSESSION, (ULONG_PTR)qi, invalid);
                 }
             }
         }
diff --git a/dlls/winemac.drv/gdi.c b/dlls/winemac.drv/gdi.c
index 2ef941aedb49..a0f314234b97 100644
--- a/dlls/winemac.drv/gdi.c
+++ b/dlls/winemac.drv/gdi.c
@@ -277,7 +277,7 @@ static const struct user_driver_funcs macdrv_funcs =
     .pUpdateClipboard = macdrv_UpdateClipboard,
     .pUpdateLayeredWindow = macdrv_UpdateLayeredWindow,
     .pVkKeyScanEx = macdrv_VkKeyScanEx,
-    .pImeProcessKey = macdrv_ImeProcessKey,
+    .pImeToAsciiEx = macdrv_ImeToAsciiEx,
     .pNotifyIMEStatus = macdrv_NotifyIMEStatus,
     .pSetIMECompositionRect = macdrv_SetIMECompositionRect,
     .pWindowMessage = macdrv_WindowMessage,
diff --git a/dlls/winemac.drv/keyboard.c b/dlls/winemac.drv/keyboard.c
index fb3c9bcf30e8..8cf203c9fb8f 100644
--- a/dlls/winemac.drv/keyboard.c
+++ b/dlls/winemac.drv/keyboard.c
@@ -1106,53 +1106,51 @@ void macdrv_hotkey_press(const macdrv_event *event)
 
 
 /***********************************************************************
- *              ImeProcessKey (MACDRV.@)
+ *              ImeToAsciiEx (MACDRV.@)
  */
-UINT macdrv_ImeProcessKey(HIMC himc, UINT wparam, UINT lparam, const BYTE *key_state)
+UINT macdrv_ImeToAsciiEx(UINT vkey, UINT vsc, const BYTE *state, HIMC himc)
 {
     struct macdrv_thread_data *thread_data = macdrv_thread_data();
-    WORD scan = HIWORD(lparam) & 0x1ff, vkey = LOWORD(wparam);
-    BOOL repeat = !!(lparam >> 30), pressed = !(lparam >> 31);
     unsigned int flags;
     int keyc;
-    UINT ret;
+    bool ret;
+    BOOL repeat = !!(vsc & KF_REPEAT);
 
-    TRACE("himc %p, scan %#x, vkey %#x, repeat %u, pressed %u\n",
-          himc, scan, vkey, repeat, pressed);
+    TRACE("himc %p, vkey %#x state %p repeat %u\n",
+          himc, vkey, state, repeat);
 
-    if (!macdrv_using_input_method()) return 0;
+    if (!state) return STATUS_SUCCESS;
 
-    if (!pressed)
+    if (vsc & KF_UP)
     {
         /* Only key down events should be sent to the Cocoa input context. We do
            not handle key ups, and instead let those go through as a normal
            WM_KEYUP. */
-        return 0;
+        return STATUS_NOT_IMPLEMENTED;
     }
 
     switch (vkey)
     {
-        case VK_SHIFT:
-        case VK_CONTROL:
-        case VK_CAPITAL:
-        case VK_MENU:
-        return 0;
+        case VK_KANA:
+        case VK_KANJI:
+            TRACE("Skipping metakey\n");
+            return STATUS_NOT_IMPLEMENTED;
     }
 
     flags = thread_data->last_modifiers;
-    if (key_state[VK_SHIFT] & 0x80)
+    if (state[VK_SHIFT] & 0x80)
         flags |= NX_SHIFTMASK;
     else
         flags &= ~(NX_SHIFTMASK | NX_DEVICELSHIFTKEYMASK | NX_DEVICERSHIFTKEYMASK);
-    if (key_state[VK_CAPITAL] & 0x01)
+    if (state[VK_CAPITAL] & 0x01)
         flags |= NX_ALPHASHIFTMASK;
     else
         flags &= ~NX_ALPHASHIFTMASK;
-    if (key_state[VK_CONTROL] & 0x80)
+    if (state[VK_CONTROL] & 0x80)
         flags |= NX_CONTROLMASK;
     else
         flags &= ~(NX_CONTROLMASK | NX_DEVICELCTLKEYMASK | NX_DEVICERCTLKEYMASK);
-    if (key_state[VK_MENU] & 0x80)
+    if (state[VK_MENU] & 0x80)
         flags |= NX_COMMANDMASK;
     else
         flags &= ~(NX_COMMANDMASK | NX_DEVICELCMDKEYMASK | NX_DEVICERCMDKEYMASK);
@@ -1164,10 +1162,9 @@ UINT macdrv_ImeProcessKey(HIMC himc, UINT wparam, UINT lparam, const BYTE *key_s
     if (keyc >= ARRAY_SIZE(thread_data->keyc2vkey)) return 0;
 
     TRACE("flags 0x%08x keyc 0x%04x\n", flags, keyc);
-    ret = (UINT)macdrv_ime_process_key(keyc, flags, repeat, himc);
+    ret = macdrv_send_keydown_to_input_source(keyc, flags, repeat, himc);
     NtUserMsgWaitForMultipleObjectsEx(0, NULL, 0, QS_POSTMESSAGE | QS_SENDMESSAGE, 0);
-    TRACE("returning %u\n", ret);
-    return ret;
+    return ret ? STATUS_SUCCESS : STATUS_NOT_IMPLEMENTED;
 }
 
 
diff --git a/dlls/winemac.drv/macdrv.h b/dlls/winemac.drv/macdrv.h
index 0ef7a706d91a..8c8100f38a50 100644
--- a/dlls/winemac.drv/macdrv.h
+++ b/dlls/winemac.drv/macdrv.h
@@ -158,7 +158,7 @@ extern void macdrv_WindowPosChanged(HWND hwnd, HWND insert_after, HWND owner_hin
 extern BOOL macdrv_RegisterHotKey(HWND hwnd, UINT mod_flags, UINT vkey);
 extern void macdrv_UnregisterHotKey(HWND hwnd, UINT modifiers, UINT vkey);
 extern SHORT macdrv_VkKeyScanEx(WCHAR wChar, HKL hkl);
-extern UINT macdrv_ImeProcessKey(HIMC himc, UINT wparam, UINT lparam, const BYTE *state);
+extern UINT macdrv_ImeToAsciiEx(UINT vkey, UINT vsc, const BYTE *state, HIMC himc);
 extern UINT macdrv_MapVirtualKeyEx(UINT wCode, UINT wMapType, HKL hkl);
 extern INT macdrv_ToUnicodeEx(UINT virtKey, UINT scanCode, const BYTE *lpKeyState,
                               LPWSTR bufW, int bufW_size, UINT flags, HKL hkl);
diff --git a/dlls/winemac.drv/macdrv_cocoa.h b/dlls/winemac.drv/macdrv_cocoa.h
index 6a6b6975f55e..381808479ce9 100644
--- a/dlls/winemac.drv/macdrv_cocoa.h
+++ b/dlls/winemac.drv/macdrv_cocoa.h
@@ -530,7 +530,7 @@ extern void macdrv_order_cocoa_window(macdrv_window w, macdrv_window prev,
 extern bool macdrv_get_view_backing_size(macdrv_view v, int backing_size[2]);
 extern void macdrv_set_view_backing_size(macdrv_view v, const int backing_size[2]);
 extern uint32_t macdrv_window_background_color(void);
-extern bool macdrv_ime_process_key(int keyc, unsigned int flags, int repeat, void *data);
+extern bool macdrv_send_keydown_to_input_source(int keyc, unsigned int flags, int repeat, void *data);
 extern bool macdrv_is_any_wine_window_visible(void);
 
 
diff --git a/dlls/winemac.drv/opengl.c b/dlls/winemac.drv/opengl.c
index 7040bbd5a8d9..0af1d3f71929 100644
--- a/dlls/winemac.drv/opengl.c
+++ b/dlls/winemac.drv/opengl.c
@@ -46,8 +46,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(wgl);
 struct gl_info {
     char *glExtensions;
 
-    char wglExtensions[4096];
-
     GLint max_viewport_dims[2];
 
     unsigned int max_major, max_minor;
@@ -2542,16 +2540,7 @@ static BOOL macdrv_pbuffer_updated(HDC hdc, struct opengl_drawable *base, GLenum
     return GL_TRUE;
 }
 
-static void register_extension(const char *ext)
-{
-    if (gl_info.wglExtensions[0])
-        strcat(gl_info.wglExtensions, " ");
-    strcat(gl_info.wglExtensions, ext);
-
-    TRACE("'%s'\n", ext);
-}
-
-static const char *macdrv_init_wgl_extensions(struct opengl_funcs *funcs)
+static void macdrv_init_extensions(struct opengl_funcs *funcs, BOOLEAN extensions[GL_EXTENSION_COUNT])
 {
     /*
      * ARB Extensions
@@ -2559,42 +2548,40 @@ static const char *macdrv_init_wgl_extensions(struct opengl_funcs *funcs)
 
     if (gluCheckExtension((GLubyte*)"GL_ARB_color_buffer_float", (GLubyte*)gl_info.glExtensions))
     {
-        register_extension("WGL_ARB_pixel_format_float");
-        register_extension("WGL_ATI_pixel_format_float");
+        extensions[WGL_ARB_pixel_format_float] = 1;
+        extensions[WGL_ATI_pixel_format_float] = 1;
     }
 
     if (gluCheckExtension((GLubyte*)"GL_ARB_multisample", (GLubyte*)gl_info.glExtensions))
-        register_extension("WGL_ARB_multisample");
+        extensions[WGL_ARB_multisample] = 1;
 
     if (gluCheckExtension((GLubyte*)"GL_ARB_framebuffer_sRGB", (GLubyte*)gl_info.glExtensions))
-        register_extension("WGL_ARB_framebuffer_sRGB");
+        extensions[WGL_ARB_framebuffer_sRGB] = 1;
 
     if (gluCheckExtension((GLubyte*)"GL_APPLE_pixel_buffer", (GLubyte*)gl_info.glExtensions))
     {
         if (gluCheckExtension((GLubyte*)"GL_ARB_texture_rectangle", (GLubyte*)gl_info.glExtensions) ||
             gluCheckExtension((GLubyte*)"GL_EXT_texture_rectangle", (GLubyte*)gl_info.glExtensions))
-            register_extension("WGL_NV_render_texture_rectangle");
+            extensions[WGL_NV_render_texture_rectangle] = 1;
     }
 
     /* Presumably identical to [W]GL_ARB_framebuffer_sRGB, above, but clients may
        check for either, so register them separately. */
     if (gluCheckExtension((GLubyte*)"GL_EXT_framebuffer_sRGB", (GLubyte*)gl_info.glExtensions))
-        register_extension("WGL_EXT_framebuffer_sRGB");
+        extensions[WGL_EXT_framebuffer_sRGB] = 1;
 
     if (gluCheckExtension((GLubyte*)"GL_EXT_packed_float", (GLubyte*)gl_info.glExtensions))
-        register_extension("WGL_EXT_pixel_format_packed_float");
+        extensions[WGL_EXT_pixel_format_packed_float] = 1;
 
     /*
      * WINE-specific WGL Extensions
      */
 
-    register_extension("WGL_WINE_query_renderer");
+    extensions[WGL_WINE_query_renderer] = 1;
     funcs->p_wglQueryCurrentRendererIntegerWINE = macdrv_wglQueryCurrentRendererIntegerWINE;
     funcs->p_wglQueryCurrentRendererStringWINE = macdrv_wglQueryCurrentRendererStringWINE;
     funcs->p_wglQueryRendererIntegerWINE = macdrv_wglQueryRendererIntegerWINE;
     funcs->p_wglQueryRendererStringWINE = macdrv_wglQueryRendererStringWINE;
-
-    return gl_info.wglExtensions;
 }
 
 /**********************************************************************
@@ -2780,7 +2767,7 @@ static const struct opengl_driver_funcs macdrv_driver_funcs =
     .p_get_proc_address = macdrv_get_proc_address,
     .p_init_pixel_formats = macdrv_init_pixel_formats,
     .p_describe_pixel_format = macdrv_describe_pixel_format,
-    .p_init_wgl_extensions = macdrv_init_wgl_extensions,
+    .p_init_extensions = macdrv_init_extensions,
     .p_surface_create = macdrv_surface_create,
     .p_context_create = macdrv_context_create,
     .p_context_destroy = macdrv_context_destroy,
diff --git a/dlls/winewayland.drv/opengl.c b/dlls/winewayland.drv/opengl.c
index 54ba94fe846d..1486e411734c 100644
--- a/dlls/winewayland.drv/opengl.c
+++ b/dlls/winewayland.drv/opengl.c
@@ -258,7 +258,7 @@ UINT WAYLAND_OpenGLInit(UINT version, const struct opengl_funcs *opengl_funcs, c
     wayland_driver_funcs.p_get_proc_address = (*driver_funcs)->p_get_proc_address;
     wayland_driver_funcs.p_init_pixel_formats = (*driver_funcs)->p_init_pixel_formats;
     wayland_driver_funcs.p_describe_pixel_format = (*driver_funcs)->p_describe_pixel_format;
-    wayland_driver_funcs.p_init_wgl_extensions = (*driver_funcs)->p_init_wgl_extensions;
+    wayland_driver_funcs.p_init_extensions = (*driver_funcs)->p_init_extensions;
     wayland_driver_funcs.p_context_create = (*driver_funcs)->p_context_create;
     wayland_driver_funcs.p_context_destroy = (*driver_funcs)->p_context_destroy;
     wayland_driver_funcs.p_make_current = (*driver_funcs)->p_make_current;
diff --git a/dlls/winex11.drv/mouse.c b/dlls/winex11.drv/mouse.c
index 1ddd3027e880..f66ba6399371 100644
--- a/dlls/winex11.drv/mouse.c
+++ b/dlls/winex11.drv/mouse.c
@@ -909,7 +909,7 @@ static int fallback_cmp( const void *key, const void *member )
 
 static int find_fallback_shape( const char *name )
 {
-    struct cursor_font_fallback *fallback;
+    const struct cursor_font_fallback *fallback;
 
     if ((fallback = bsearch( name, fallbacks, ARRAY_SIZE( fallbacks ),
                              sizeof(*fallback), fallback_cmp )))
diff --git a/dlls/winex11.drv/opengl.c b/dlls/winex11.drv/opengl.c
index 895d3815e7ca..7ebc2c43753c 100644
--- a/dlls/winex11.drv/opengl.c
+++ b/dlls/winex11.drv/opengl.c
@@ -180,7 +180,6 @@ typedef XID GLXPbuffer;
 
 static const char *glExtensions;
 static const char *glxExtensions;
-static char wglExtensions[4096];
 static int glxVersion[2];
 static int glx_opcode;
 
@@ -1375,29 +1374,19 @@ static BOOL glxRequireVersion(int requiredVersion)
     return (requiredVersion <= glxVersion[1]);
 }
 
-static void register_extension(const char *ext)
+static void x11drv_init_extensions( struct opengl_funcs *funcs, BOOLEAN extensions[GL_EXTENSION_COUNT] )
 {
-    if (wglExtensions[0])
-        strcat(wglExtensions, " ");
-    strcat(wglExtensions, ext);
-
-    TRACE("'%s'\n", ext);
-}
-
-static const char *x11drv_init_wgl_extensions( struct opengl_funcs *funcs )
-{
-    wglExtensions[0] = 0;
-
     /* ARB Extensions */
 
-    if (has_extension( glxExtensions, "GLX_ARB_multisample")) register_extension( "WGL_ARB_multisample" );
+    if (has_extension( glxExtensions, "GLX_ARB_multisample"))
+        extensions[WGL_ARB_multisample] = 1;
 
-    register_extension("WGL_ARB_pixel_format");
+    extensions[WGL_ARB_pixel_format] = 1;
 
     if (has_extension( glxExtensions, "GLX_ARB_fbconfig_float"))
     {
-        register_extension("WGL_ARB_pixel_format_float");
-        register_extension("WGL_ATI_pixel_format_float");
+        extensions[WGL_ARB_pixel_format_float] = 1;
+        extensions[WGL_ATI_pixel_format_float] = 1;
     }
 
     /* Support WGL_ARB_render_texture when there's support or pbuffer based emulation */
@@ -1405,20 +1394,20 @@ static const char *x11drv_init_wgl_extensions( struct opengl_funcs *funcs )
     {
         /* The WGL version of GLX_NV_float_buffer requires render_texture */
         if (has_extension( glxExtensions, "GLX_NV_float_buffer"))
-            register_extension("WGL_NV_float_buffer");
+            extensions[WGL_NV_float_buffer] = 1;
 
         /* Again there's no GLX equivalent for this extension, so depend on the required GL extension */
         if (has_extension(glExtensions, "GL_NV_texture_rectangle"))
-            register_extension("WGL_NV_render_texture_rectangle");
+            extensions[WGL_NV_render_texture_rectangle] = 1;
     }
 
     /* EXT Extensions */
 
     if (has_extension( glxExtensions, "GLX_EXT_framebuffer_sRGB"))
-        register_extension("WGL_EXT_framebuffer_sRGB");
+        extensions[WGL_EXT_framebuffer_sRGB] = 1;
 
     if (has_extension( glxExtensions, "GLX_EXT_fbconfig_packed_float"))
-        register_extension("WGL_EXT_pixel_format_packed_float");
+        extensions[WGL_EXT_pixel_format_packed_float] = 1;
 
     if (has_extension( glxExtensions, "GLX_EXT_swap_control"))
     {
@@ -1437,7 +1426,7 @@ static const char *x11drv_init_wgl_extensions( struct opengl_funcs *funcs )
     /* The OpenGL extension GL_NV_vertex_array_range adds wgl/glX functions which aren't exported as 'real' wgl/glX extensions. */
     if (has_extension(glExtensions, "GL_NV_vertex_array_range"))
     {
-        register_extension( "WGL_NV_vertex_array_range" );
+        extensions[WGL_NV_vertex_array_range] = 1;
         funcs->p_wglAllocateMemoryNV = pglXAllocateMemoryNV;
         funcs->p_wglFreeMemoryNV = pglXFreeMemoryNV;
     }
@@ -1449,14 +1438,12 @@ static const char *x11drv_init_wgl_extensions( struct opengl_funcs *funcs )
 
     if (has_extension( glxExtensions, "GLX_MESA_query_renderer" ))
     {
-        register_extension( "WGL_WINE_query_renderer" );
+        extensions[WGL_WINE_query_renderer] = 1;
         funcs->p_wglQueryCurrentRendererIntegerWINE = X11DRV_wglQueryCurrentRendererIntegerWINE;
         funcs->p_wglQueryCurrentRendererStringWINE = X11DRV_wglQueryCurrentRendererStringWINE;
         funcs->p_wglQueryRendererIntegerWINE = X11DRV_wglQueryRendererIntegerWINE;
         funcs->p_wglQueryRendererStringWINE = X11DRV_wglQueryRendererStringWINE;
     }
-
-    return wglExtensions;
 }
 
 static BOOL x11drv_surface_swap( struct opengl_drawable *base )
@@ -1524,7 +1511,7 @@ static struct opengl_driver_funcs x11drv_driver_funcs =
     .p_get_proc_address = x11drv_get_proc_address,
     .p_init_pixel_formats = x11drv_init_pixel_formats,
     .p_describe_pixel_format = x11drv_describe_pixel_format,
-    .p_init_wgl_extensions = x11drv_init_wgl_extensions,
+    .p_init_extensions = x11drv_init_extensions,
     .p_surface_create = x11drv_surface_create,
     .p_context_create = x11drv_context_create,
     .p_context_destroy = x11drv_context_destroy,
diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c
index 33d8ceee4381..a83359b2d74b 100644
--- a/dlls/winex11.drv/window.c
+++ b/dlls/winex11.drv/window.c
@@ -1318,7 +1318,7 @@ static void window_set_net_wm_fullscreen_monitors( struct x11drv_win_data *data,
  * windows spanning multiple monitors */
 static void update_net_wm_fullscreen_monitors( struct x11drv_win_data *data )
 {
-    struct monitor_indices monitors;
+    struct monitor_indices monitors = {0};
 
     /* If the current display device handler cannot detect dynamic device changes, do not use
      * _NET_WM_FULLSCREEN_MONITORS because xinerama_get_fullscreen_monitors() may report wrong
@@ -1736,7 +1736,7 @@ static UINT window_update_client_config( struct x11drv_win_data *data )
 {
     static const UINT fullscreen_mask = (1 << NET_WM_STATE_MAXIMIZED) | (1 << NET_WM_STATE_FULLSCREEN);
     RECT rect, old_rect = data->rects.window, new_rect;
-    unsigned int old_generation, generation;
+    unsigned long old_generation, generation;
     long old_monitors[4], monitors[4];
     UINT flags;
 
diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h
index 9f38ceba0dfb..8b0c0a62f91c 100644
--- a/dlls/winex11.drv/x11drv.h
+++ b/dlls/winex11.drv/x11drv.h
@@ -635,7 +635,8 @@ enum x11drv_net_wm_state
 
 struct monitor_indices
 {
-    unsigned int generation;
+    /* compared with memcmp, make sure there's no padding */
+    unsigned long generation;
     long indices[4];
 };
 
@@ -763,7 +764,7 @@ extern POINT virtual_screen_to_root( INT x, INT y );
 extern POINT root_to_virtual_screen( INT x, INT y );
 extern RECT get_host_primary_monitor_rect(void);
 extern RECT get_work_area( const RECT *monitor_rect );
-extern BOOL xinerama_get_fullscreen_monitors( const RECT *rect, unsigned int *generation, long *indices );
+extern BOOL xinerama_get_fullscreen_monitors( const RECT *rect, unsigned long *generation, long *indices );
 extern void xinerama_init( unsigned int width, unsigned int height );
 extern void init_recursive_mutex( pthread_mutex_t *mutex );
 extern void init_icm_profile(void);
diff --git a/dlls/winex11.drv/xinerama.c b/dlls/winex11.drv/xinerama.c
index 81f739285e01..d6478fcd03a9 100644
--- a/dlls/winex11.drv/xinerama.c
+++ b/dlls/winex11.drv/xinerama.c
@@ -126,7 +126,7 @@ static inline int query_screens(void)
 
 /* Get xinerama monitor indices required for _NET_WM_FULLSCREEN_MONITORS. Return FALSE if rect is
  * not fullscreen */
-BOOL xinerama_get_fullscreen_monitors( const RECT *rect, unsigned int *generation, long *indices )
+BOOL xinerama_get_fullscreen_monitors( const RECT *rect, unsigned long *generation, long *indices )
 {
     RECT window_rect, intersected_rect, monitor_rect;
     BOOL ret = FALSE;
diff --git a/dlls/winhttp/request.c b/dlls/winhttp/request.c
index 54896eed72aa..9a8546c2e6d2 100644
--- a/dlls/winhttp/request.c
+++ b/dlls/winhttp/request.c
@@ -53,7 +53,7 @@ static DWORD query_data_stream( struct request *request, DWORD *size )
     if (!request->read.size)
         ret = request->data_stream->vtbl->fill_buffer( request->data_stream, request, &request->read );
 
-    *size = request->read.size;
+    if (size) *size = request->read.size;
     return ret;
 }
 
@@ -470,12 +470,6 @@ static void gzip_zfree( voidpf opaque, voidpf address )
     free( address );
 }
 
-static int request_receive_response_timeout( struct request *req )
-{
-    if (req->receive_response_timeout == -1) return ACTUAL_DEFAULT_RECEIVE_RESPONSE_TIMEOUT;
-    return req->receive_response_timeout;
-}
-
 static const WCHAR *attribute_table[] =
 {
     L"Mime-Version",                /* WINHTTP_QUERY_MIME_VERSION               = 0  */
@@ -1256,7 +1250,7 @@ BOOL WINAPI WinHttpQueryHeaders( HINTERNET hrequest, DWORD level, const WCHAR *n
         SetLastError( ERROR_WINHTTP_INCORRECT_HANDLE_TYPE );
         return FALSE;
     }
-    if (request->state < REQUEST_RESPONSE_STATE_RESPONSE_RECEIVED && !(level & WINHTTP_QUERY_FLAG_REQUEST_HEADERS)
+    if (request->state < REQUEST_STATE_RESPONSE_RECEIVED && !(level & WINHTTP_QUERY_FLAG_REQUEST_HEADERS)
             && ((level & ~QUERY_MODIFIER_MASK) != WINHTTP_QUERY_REQUEST_METHOD))
     {
         release_object( &request->hdr );
@@ -1990,6 +1984,12 @@ static DWORD ensure_cred_handle( struct request *request )
     return ERROR_SUCCESS;
 }
 
+static int get_receive_response_timeout( struct request *request )
+{
+    if (request->receive_response_timeout == -1) return ACTUAL_DEFAULT_RECEIVE_RESPONSE_TIMEOUT;
+    return request->receive_response_timeout;
+}
+
 static DWORD open_connection( struct request *request )
 {
     BOOL is_secure = request->hdr.flags & WINHTTP_FLAG_SECURE;
@@ -2105,7 +2105,7 @@ static DWORD open_connection( struct request *request )
             return ret;
         }
         netconn_set_timeout( netconn, TRUE, request->send_timeout );
-        netconn_set_timeout( netconn, FALSE, request_receive_response_timeout( request ));
+        netconn_set_timeout( netconn, FALSE, get_receive_response_timeout( request ));
 
         request->netconn = netconn;
 
@@ -2143,7 +2143,7 @@ static DWORD open_connection( struct request *request )
         TRACE("using connection %p\n", netconn);
 
         netconn_set_timeout( netconn, TRUE, request->send_timeout );
-        netconn_set_timeout( netconn, FALSE, request_receive_response_timeout( request ));
+        netconn_set_timeout( netconn, FALSE, get_receive_response_timeout( request ));
         request->netconn = netconn;
     }
 
@@ -2431,7 +2431,6 @@ static DWORD send_request( struct request *request, const WCHAR *headers, DWORD
     struct connect *connect = request->connect;
     struct session *session = connect->session;
     DWORD ret, len, buflen;
-    UINT64 content_length;
     WCHAR buf[21];
     char *wire_req;
     int bytes_sent;
@@ -2439,9 +2438,8 @@ static DWORD send_request( struct request *request, const WCHAR *headers, DWORD
 
     TRACE( "request state %d.\n", request->state );
 
-    request->read_reply_status = ERROR_WINHTTP_INCORRECT_HANDLE_STATE;
-    request->read_reply_len = 0;
-    request->state = REQUEST_RESPONSE_STATE_NONE;
+    request->reply_len = 0;
+    request->state = REQUEST_STATE_NONE;
 
     if (request->flags & REQUEST_FLAG_WEBSOCKET_UPGRADE
         && request->websocket_set_send_buffer_size < MIN_WEBSOCKET_SEND_BUFFER_SIZE)
@@ -2524,7 +2522,7 @@ static DWORD send_request( struct request *request, const WCHAR *headers, DWORD
     }
     TRACE("full request: %s\n", debugstr_a(wire_req));
 
-    request->state = REQUEST_RESPONSE_STATE_SENDING_REQUEST;
+    request->state = REQUEST_STATE_SENDING_REQUEST;
     send_callback( &request->hdr, WINHTTP_CALLBACK_STATUS_SENDING_REQUEST, NULL, 0 );
 
     ret = netconn_send( request->netconn, wire_req, len, &bytes_sent, NULL );
@@ -2538,31 +2536,9 @@ static DWORD send_request( struct request *request, const WCHAR *headers, DWORD
         request->optional_len = optional_len;
         len += optional_len;
     }
-    send_callback( &request->hdr, WINHTTP_CALLBACK_STATUS_REQUEST_SENT, &len, sizeof(len) );
 
-    buflen = sizeof(buf);
-    if (query_headers( request, WINHTTP_QUERY_FLAG_REQUEST_HEADERS | WINHTTP_QUERY_CONTENT_LENGTH,
-                       NULL, buf, &buflen, NULL ))
-        content_length = total_len;
-    else
-        content_length = wcstoull( buf, NULL, 10 );
-
-    if (!chunked && content_length <= optional_len)
-    {
-        netconn_set_timeout( request->netconn, FALSE, request_receive_response_timeout( request ));
-        request->read_reply_status = read_reply( request );
-        if (request->state == REQUEST_RESPONSE_STATE_READ_RESPONSE_QUEUED)
-            request->state = REQUEST_RESPONSE_STATE_READ_RESPONSE_QUEUED_REPLY_RECEIVED;
-        else
-            request->state = REQUEST_RESPONSE_STATE_REPLY_RECEIVED;
-    }
-    else
-    {
-        if (request->state == REQUEST_RESPONSE_STATE_READ_RESPONSE_QUEUED)
-            request->state = REQUEST_RESPONSE_STATE_READ_RESPONSE_QUEUED_REQUEST_SENT;
-        else
-            request->state = REQUEST_RESPONSE_STATE_REQUEST_SENT;
-    }
+    request->state = REQUEST_STATE_REQUEST_SENT;
+    send_callback( &request->hdr, WINHTTP_CALLBACK_STATUS_REQUEST_SENT, &len, sizeof(len) );
 
 end:
     if (async)
@@ -2824,6 +2800,7 @@ static DWORD set_content_length( struct request *request, DWORD status )
             }
             request->data_stream = &chunked_stream->data_stream;
             request->content_length = ~0ull;
+            query_data_stream( request, NULL ); /* start first chunk */
         }
 
         if (request->hdr.decompression)
@@ -2849,9 +2826,9 @@ static void remove_data( struct request *request, int count )
 }
 
 /* read some more data into the read buffer */
-static DWORD read_more_data( struct request *request, int max_len, BOOL notify )
+static DWORD read_more_data( struct request *request )
 {
-    int len;
+    int len, max_len;
     DWORD ret;
 
     if (request->read.pos)
@@ -2859,15 +2836,11 @@ static DWORD read_more_data( struct request *request, int max_len, BOOL notify )
         if (request->read.size) memmove( request->read.buf, request->read.buf + request->read.pos, request->read.size );
         request->read.pos = 0;
     }
-    if (max_len == -1) max_len = sizeof(request->read.buf);
+    max_len = sizeof(request->read.buf) - request->read.size;
 
-    if (notify) send_callback( &request->hdr, WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE, NULL, 0 );
+    ret = netconn_recv( request->netconn, request->read.buf + request->read.size, max_len, 0, &len );
 
-    ret = netconn_recv( request->netconn, request->read.buf + request->read.size, max_len - request->read.size, 0, &len );
-
-    if (notify) send_callback( &request->hdr, WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED, &len, sizeof(len) );
-
-    request->read_reply_len += len;
+    request->reply_len += len;
     request->read.size += len;
     return ret;
 }
@@ -2893,7 +2866,7 @@ static DWORD read_line( struct request *request, char *buffer, DWORD *len )
         remove_data( request, bytes_read );
         if (eol) break;
 
-        if ((ret = read_more_data( request, -1, FALSE ))) return ret;
+        if ((ret = read_more_data( request ))) return ret;
         if (!request->read.size)
         {
             *len = 0;
@@ -3231,50 +3204,29 @@ static DWORD queue_receive_response( struct request *request )
 
 static DWORD receive_response( struct request *request )
 {
-    BOOL async_mode = request->connect->hdr.flags & WINHTTP_FLAG_ASYNC;
+    BOOL async = request->connect->hdr.flags & WINHTTP_FLAG_ASYNC;
     DWORD ret, size, query, status;
 
-    TRACE( "request state %d.\n", request->state );
+    TRACE( "request state %d\n", request->state );
 
     switch (request->state)
     {
-    case REQUEST_RESPONSE_RECURSIVE_REQUEST:
-        TRACE( "Sending request.\n" );
+    case REQUEST_STATE_RECURSIVE_REQUEST:
+        TRACE( "sending request again\n" );
         if ((ret = send_request( request, NULL, 0, request->optional, request->optional_len, 0, 0, FALSE ))) goto done;
-        send_callback( &request->hdr, WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE, NULL, 0 );
         break;
 
-    case REQUEST_RESPONSE_STATE_SENDING_REQUEST:
-        if (!async_mode)
+    case REQUEST_STATE_SENDING_REQUEST:
+        if (!async)
         {
             ret = ERROR_WINHTTP_INCORRECT_HANDLE_STATE;
             goto done;
         }
-        send_callback( &request->hdr, WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE, NULL, 0 );
-        request->state = REQUEST_RESPONSE_STATE_READ_RESPONSE_QUEUED;
+        request->state = REQUEST_STATE_READ_RESPONSE_QUEUED;
         return queue_receive_response( request );
 
-
-    case REQUEST_RESPONSE_STATE_REQUEST_SENT:
-        send_callback( &request->hdr, WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE, NULL, 0 );
-        if (async_mode)
-        {
-            request->state = REQUEST_RESPONSE_STATE_READ_RESPONSE_QUEUED_REQUEST_SENT;
-            return queue_receive_response( request );
-        }
-        /* fallthrough */
-    case REQUEST_RESPONSE_STATE_READ_RESPONSE_QUEUED_REQUEST_SENT:
-        netconn_set_timeout( request->netconn, FALSE, request_receive_response_timeout( request ));
-        request->read_reply_status = read_reply( request );
-        request->state = REQUEST_RESPONSE_STATE_REPLY_RECEIVED;
-        break;
-
-    case REQUEST_RESPONSE_STATE_REPLY_RECEIVED:
-        send_callback( &request->hdr, WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE, NULL, 0 );
-        break;
-
-    case REQUEST_RESPONSE_STATE_READ_RESPONSE_QUEUED_REPLY_RECEIVED:
-        request->state = REQUEST_RESPONSE_STATE_REPLY_RECEIVED;
+    case REQUEST_STATE_REQUEST_SENT:
+    case REQUEST_STATE_READ_RESPONSE_QUEUED:
         break;
 
     default:
@@ -3282,9 +3234,15 @@ static DWORD receive_response( struct request *request )
         goto done;
     }
 
-    send_callback( &request->hdr, WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED,
-                   &request->read_reply_len, sizeof(request->read_reply_len) );
-    if ((ret = request->read_reply_status)) goto done;
+    request->state = REQUEST_STATE_RECEIVING_RESPONSE;
+    send_callback( &request->hdr, WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE, NULL, 0 );
+
+    netconn_set_timeout( request->netconn, FALSE, get_receive_response_timeout( request ));
+    ret = read_reply( request );
+
+    request->state = REQUEST_STATE_RESPONSE_RECEIVED;
+    send_callback( &request->hdr, WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED, &request->reply_len, sizeof(request->reply_len) );
+    if (ret) goto done;
 
     size = sizeof(DWORD);
     query = WINHTTP_QUERY_STATUS_CODE | WINHTTP_QUERY_FLAG_NUMBER;
@@ -3321,16 +3279,16 @@ static DWORD receive_response( struct request *request )
     }
     else goto done;
 
-    request->state = REQUEST_RESPONSE_RECURSIVE_REQUEST;
-    return async_mode ? queue_receive_response( request ) : receive_response( request );
+    request->state = REQUEST_STATE_RECURSIVE_REQUEST;
+    return async ? queue_receive_response( request ) : receive_response( request );
 
 done:
     if (!ret)
     {
-        request->state = REQUEST_RESPONSE_STATE_RESPONSE_RECEIVED;
+        request->state = REQUEST_STATE_RESPONSE_RECEIVED;
         if (request->netconn) netconn_set_timeout( request->netconn, FALSE, request->receive_timeout );
     }
-    if (async_mode)
+    if (async)
     {
         if (!ret) send_callback( &request->hdr, WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE, NULL, 0 );
         else
@@ -3385,11 +3343,12 @@ BOOL WINAPI WinHttpReceiveResponse( HINTERNET hrequest, LPVOID reserved )
     return !ret;
 }
 
+#define RECURSION_LIMIT 5
 static BOOL skip_async_queue( struct request *request, BOOL *wont_block, DWORD to_read )
 {
     to_read = min( to_read, request->content_length - request->content_read );
     *wont_block = end_of_data_stream( request ) || request->read.size >= to_read;
-    return request->hdr.recursion_count < 3 && *wont_block;
+    return request->hdr.recursion_count <= RECURSION_LIMIT && *wont_block;
 }
 
 static DWORD query_data_available( struct request *request, DWORD *available, BOOL async )
@@ -3452,7 +3411,7 @@ BOOL WINAPI WinHttpQueryDataAvailable( HINTERNET hrequest, LPDWORD available )
         SetLastError( ERROR_WINHTTP_INCORRECT_HANDLE_TYPE );
         return FALSE;
     }
-    if (request->state < REQUEST_RESPONSE_STATE_RESPONSE_RECEIVED)
+    if (request->state < REQUEST_STATE_RESPONSE_RECEIVED)
     {
         release_object( &request->hdr );
         SetLastError( ERROR_WINHTTP_INCORRECT_HANDLE_STATE );
@@ -3491,10 +3450,8 @@ BOOL WINAPI WinHttpQueryDataAvailable( HINTERNET hrequest, LPDWORD available )
             s->buflen = sizeof(s->result);
         }
 
-        if ((ret = queue_task( &request->queue, task_send_callback, &s->task_hdr, &request->hdr )))
-            free( s );
-        else
-            ret = ERROR_IO_PENDING;
+        if ((ret = queue_task( &request->queue, task_send_callback, &s->task_hdr, &request->hdr ))) free( s );
+        else ret = ERROR_IO_PENDING;
     }
     else
     {
@@ -3509,10 +3466,8 @@ BOOL WINAPI WinHttpQueryDataAvailable( HINTERNET hrequest, LPDWORD available )
 
         q->available = available;
 
-        if ((ret = queue_task( &request->queue, task_query_data_available, &q->task_hdr, &request->hdr )))
-            free( q );
-        else
-            ret = ERROR_IO_PENDING;
+        if ((ret = queue_task( &request->queue, task_query_data_available, &q->task_hdr, &request->hdr ))) free( q );
+        else ret = ERROR_IO_PENDING;
     }
 
     release_object( &request->hdr );
@@ -3520,11 +3475,16 @@ BOOL WINAPI WinHttpQueryDataAvailable( HINTERNET hrequest, LPDWORD available )
     return !ret || ret == ERROR_IO_PENDING;
 }
 
-static DWORD read_data( struct request *request, void *buffer, DWORD size, DWORD *read, BOOL async )
+static DWORD read_data( struct request *request, char *buffer, DWORD size, DWORD *read, BOOL async )
 {
-    DWORD bytes_read = 0, ret;
+    DWORD bytes_read = 0, count, ret = ERROR_SUCCESS;
 
-    ret = read_data_stream( request, buffer, size, &bytes_read );
+    while (size)
+    {
+        if ((ret = read_data_stream( request, buffer + bytes_read, size, &count )) || !count) break;
+        bytes_read += count;
+        size -= count;
+    }
 
     TRACE( "%lu bytes read\n", bytes_read );
     if (end_of_data_stream( request )) finished_reading( request );
@@ -3611,10 +3571,8 @@ BOOL WINAPI WinHttpReadData( HINTERNET hrequest, void *buffer, DWORD to_read, DW
             s->buflen = sizeof(s->result);
         }
 
-        if ((ret = queue_task( &request->queue, task_send_callback, &s->task_hdr, &request->hdr )))
-            free( s );
-        else
-            ret = ERROR_IO_PENDING;
+        if ((ret = queue_task( &request->queue, task_send_callback, &s->task_hdr, &request->hdr ))) free( s );
+        else ret = ERROR_IO_PENDING;
     }
     else
     {
@@ -3630,10 +3588,8 @@ BOOL WINAPI WinHttpReadData( HINTERNET hrequest, void *buffer, DWORD to_read, DW
         r->to_read = to_read;
         r->read    = read;
 
-        if ((ret = queue_task( &request->queue, task_read_data, &r->task_hdr, &request->hdr )))
-            free( r );
-        else
-            ret = ERROR_IO_PENDING;
+        if ((ret = queue_task( &request->queue, task_read_data, &r->task_hdr, &request->hdr ))) free( r );
+        else ret = ERROR_IO_PENDING;
     }
 
     release_object( &request->hdr );
@@ -3681,6 +3637,7 @@ BOOL WINAPI WinHttpWriteData( HINTERNET hrequest, const void *buffer, DWORD to_w
 {
     DWORD ret;
     struct request *request;
+    BOOL async;
 
     TRACE( "%p, %p, %lu, %p\n", hrequest, buffer, to_write, written );
 
@@ -3696,7 +3653,11 @@ BOOL WINAPI WinHttpWriteData( HINTERNET hrequest, const void *buffer, DWORD to_w
         return FALSE;
     }
 
-    if (request->connect->hdr.flags & WINHTTP_FLAG_ASYNC)
+    if (!(async = request->connect->hdr.flags & WINHTTP_FLAG_ASYNC) || request->hdr.recursion_count <= RECURSION_LIMIT)
+    {
+        ret = write_data( request, buffer, to_write, written, async );
+    }
+    else
     {
         struct write_data *w;
 
@@ -3710,23 +3671,21 @@ BOOL WINAPI WinHttpWriteData( HINTERNET hrequest, const void *buffer, DWORD to_w
         w->to_write = to_write;
         w->written  = written;
 
-        if ((ret = queue_task( &request->queue, task_write_data, &w->task_hdr, &request->hdr )))
-            free( w );
+        if ((ret = queue_task( &request->queue, task_write_data, &w->task_hdr, &request->hdr ))) free( w );
     }
-    else ret = write_data( request, buffer, to_write, written, FALSE );
 
     release_object( &request->hdr );
     SetLastError( ret );
     return !ret;
 }
 
-enum request_state
+enum winhttp_request_state
 {
-    REQUEST_STATE_INITIALIZED,
-    REQUEST_STATE_CANCELLED,
-    REQUEST_STATE_OPEN,
-    REQUEST_STATE_SENT,
-    REQUEST_STATE_RESPONSE_RECEIVED
+    WINHTTP_REQUEST_STATE_INITIALIZED,
+    WINHTTP_REQUEST_STATE_CANCELLED,
+    WINHTTP_REQUEST_STATE_OPEN,
+    WINHTTP_REQUEST_STATE_SENT,
+    WINHTTP_REQUEST_STATE_RESPONSE_RECEIVED
 };
 
 struct winhttp_request
@@ -3734,7 +3693,7 @@ struct winhttp_request
     IWinHttpRequest IWinHttpRequest_iface;
     LONG refs;
     CRITICAL_SECTION cs;
-    enum request_state state;
+    enum winhttp_request_state state;
     HINTERNET hsession;
     HINTERNET hconnect;
     HINTERNET hrequest;
@@ -3776,7 +3735,7 @@ static ULONG WINAPI winhttp_request_AddRef(
 /* critical section must be held */
 static void cancel_request( struct winhttp_request *request )
 {
-    if (request->state <= REQUEST_STATE_CANCELLED) return;
+    if (request->state <= WINHTTP_REQUEST_STATE_CANCELLED) return;
 
     if (request->proc_running)
     {
@@ -3787,13 +3746,13 @@ static void cancel_request( struct winhttp_request *request )
 
         EnterCriticalSection( &request->cs );
     }
-    request->state = REQUEST_STATE_CANCELLED;
+    request->state = WINHTTP_REQUEST_STATE_CANCELLED;
 }
 
 /* critical section must be held */
 static void free_request( struct winhttp_request *request )
 {
-    if (request->state < REQUEST_STATE_INITIALIZED) return;
+    if (request->state < WINHTTP_REQUEST_STATE_INITIALIZED) return;
     WinHttpCloseHandle( request->hrequest );
     WinHttpCloseHandle( request->hconnect );
     WinHttpCloseHandle( request->hsession );
@@ -4096,7 +4055,7 @@ static HRESULT WINAPI winhttp_request_SetCredentials(
     TRACE( "%p, %s, %p, %#lx\n", request, debugstr_w(username), password, flags );
 
     EnterCriticalSection( &request->cs );
-    if (request->state < REQUEST_STATE_OPEN)
+    if (request->state < WINHTTP_REQUEST_STATE_OPEN)
     {
         err = ERROR_WINHTTP_CANNOT_CALL_BEFORE_OPEN;
         goto done;
@@ -4132,7 +4091,7 @@ static void initialize_request( struct winhttp_request *request )
     request->receive_timeout = 30000;
     request->url_codepage = CP_UTF8;
     VariantInit( &request->data );
-    request->state = REQUEST_STATE_INITIALIZED;
+    request->state = WINHTTP_REQUEST_STATE_INITIALIZED;
 }
 
 static void reset_request( struct winhttp_request *request )
@@ -4162,7 +4121,7 @@ static void reset_request( struct winhttp_request *request )
     free( request->proxy.lpszProxyBypass );
     request->proxy.lpszProxyBypass = NULL;
     VariantClear( &request->data );
-    request->state = REQUEST_STATE_INITIALIZED;
+    request->state = WINHTTP_REQUEST_STATE_INITIALIZED;
 }
 
 static HRESULT WINAPI winhttp_request_Open(
@@ -4241,7 +4200,7 @@ static HRESULT WINAPI winhttp_request_Open(
     }
     WinHttpSetOption( request->hrequest, WINHTTP_OPTION_CONTEXT_VALUE, &request, sizeof(request) );
 
-    request->state = REQUEST_STATE_OPEN;
+    request->state = WINHTTP_REQUEST_STATE_OPEN;
     request->verb = verb;
     free( hostname );
     free( path );
@@ -4272,12 +4231,12 @@ static HRESULT WINAPI winhttp_request_SetRequestHeader(
     if (!header) return E_INVALIDARG;
 
     EnterCriticalSection( &request->cs );
-    if (request->state < REQUEST_STATE_OPEN)
+    if (request->state < WINHTTP_REQUEST_STATE_OPEN)
     {
         err = ERROR_WINHTTP_CANNOT_CALL_BEFORE_OPEN;
         goto done;
     }
-    if (request->state >= REQUEST_STATE_SENT)
+    if (request->state >= WINHTTP_REQUEST_STATE_SENT)
     {
         err = ERROR_WINHTTP_CANNOT_CALL_AFTER_SEND;
         goto done;
@@ -4313,7 +4272,7 @@ static HRESULT WINAPI winhttp_request_GetResponseHeader(
     TRACE("%p, %p\n", request, header);
 
     EnterCriticalSection( &request->cs );
-    if (request->state < REQUEST_STATE_SENT)
+    if (request->state < WINHTTP_REQUEST_STATE_SENT)
     {
         err = ERROR_WINHTTP_CANNOT_CALL_BEFORE_SEND;
         goto done;
@@ -4357,7 +4316,7 @@ static HRESULT WINAPI winhttp_request_GetAllResponseHeaders(
     if (!headers) return E_INVALIDARG;
 
     EnterCriticalSection( &request->cs );
-    if (request->state < REQUEST_STATE_SENT)
+    if (request->state < WINHTTP_REQUEST_STATE_SENT)
     {
         err = ERROR_WINHTTP_CANNOT_CALL_BEFORE_SEND;
         goto done;
@@ -4450,7 +4409,7 @@ static HRESULT request_receive( struct winhttp_request *request )
     if ((err = wait_for_completion( request ))) return HRESULT_FROM_WIN32( err );
     if (!wcscmp( request->verb, L"HEAD" ))
     {
-        request->state = REQUEST_STATE_RESPONSE_RECEIVED;
+        request->state = WINHTTP_REQUEST_STATE_RESPONSE_RECEIVED;
         return S_OK;
     }
     if (!(request->buffer = malloc( buflen ))) return E_OUTOFMEMORY;
@@ -4489,7 +4448,7 @@ static HRESULT request_receive( struct winhttp_request *request )
         request->offset += request->bytes_read;
     } while (request->bytes_read);
 
-    request->state = REQUEST_STATE_RESPONSE_RECEIVED;
+    request->state = WINHTTP_REQUEST_STATE_RESPONSE_RECEIVED;
     return S_OK;
 
 error:
@@ -4585,7 +4544,7 @@ static HRESULT request_send( struct winhttp_request *request )
     if ((err = wait_for_completion( request ))) goto error;
     if (sa) SafeArrayUnaccessData( sa );
     else free( ptr );
-    request->state = REQUEST_STATE_SENT;
+    request->state = WINHTTP_REQUEST_STATE_SENT;
     return S_OK;
 
 error:
@@ -4644,12 +4603,12 @@ static HRESULT WINAPI winhttp_request_Send(
     TRACE("%p, %s\n", request, debugstr_variant(&body));
 
     EnterCriticalSection( &request->cs );
-    if (request->state < REQUEST_STATE_OPEN)
+    if (request->state < WINHTTP_REQUEST_STATE_OPEN)
     {
         LeaveCriticalSection( &request->cs );
         return HRESULT_FROM_WIN32( ERROR_WINHTTP_CANNOT_CALL_BEFORE_OPEN );
     }
-    if (request->state >= REQUEST_STATE_SENT)
+    if (request->state >= WINHTTP_REQUEST_STATE_SENT)
     {
         LeaveCriticalSection( &request->cs );
         return S_OK;
@@ -4686,7 +4645,7 @@ static HRESULT WINAPI winhttp_request_get_Status(
     if (!status) return E_INVALIDARG;
 
     EnterCriticalSection( &request->cs );
-    if (request->state < REQUEST_STATE_SENT)
+    if (request->state < WINHTTP_REQUEST_STATE_SENT)
     {
         err = ERROR_WINHTTP_CANNOT_CALL_BEFORE_SEND;
         goto done;
@@ -4716,7 +4675,7 @@ static HRESULT WINAPI winhttp_request_get_StatusText(
     if (!status) return E_INVALIDARG;
 
     EnterCriticalSection( &request->cs );
-    if (request->state < REQUEST_STATE_SENT)
+    if (request->state < WINHTTP_REQUEST_STATE_SENT)
     {
         err = ERROR_WINHTTP_CANNOT_CALL_BEFORE_SEND;
         goto done;
@@ -4787,7 +4746,7 @@ static HRESULT WINAPI winhttp_request_get_ResponseText(
     if (!body) return E_INVALIDARG;
 
     EnterCriticalSection( &request->cs );
-    if (request->state < REQUEST_STATE_SENT)
+    if (request->state < WINHTTP_REQUEST_STATE_SENT)
     {
         err = ERROR_WINHTTP_CANNOT_CALL_BEFORE_SEND;
         goto done;
@@ -4822,7 +4781,7 @@ static HRESULT WINAPI winhttp_request_get_ResponseBody(
     if (!body) return E_INVALIDARG;
 
     EnterCriticalSection( &request->cs );
-    if (request->state < REQUEST_STATE_SENT)
+    if (request->state < WINHTTP_REQUEST_STATE_SENT)
     {
         err = ERROR_WINHTTP_CANNOT_CALL_BEFORE_SEND;
         goto done;
@@ -5023,7 +4982,7 @@ static HRESULT WINAPI winhttp_request_get_ResponseStream(
     if (!body) return E_INVALIDARG;
 
     EnterCriticalSection( &request->cs );
-    if (request->state < REQUEST_STATE_SENT)
+    if (request->state < WINHTTP_REQUEST_STATE_SENT)
     {
         err = ERROR_WINHTTP_CANNOT_CALL_BEFORE_SEND;
         goto done;
@@ -5159,7 +5118,7 @@ static HRESULT WINAPI winhttp_request_WaitForResponse(
     TRACE("%p, %s, %p\n", request, debugstr_variant(&timeout), succeeded);
 
     EnterCriticalSection( &request->cs );
-    if (request->state >= REQUEST_STATE_RESPONSE_RECEIVED)
+    if (request->state >= WINHTTP_REQUEST_STATE_RESPONSE_RECEIVED)
     {
         LeaveCriticalSection( &request->cs );
         return S_OK;
diff --git a/dlls/winhttp/session.c b/dlls/winhttp/session.c
index 2face5115b23..85e3c3f18d1c 100644
--- a/dlls/winhttp/session.c
+++ b/dlls/winhttp/session.c
@@ -346,6 +346,15 @@ static BOOL session_set_option( struct object_header *hdr, DWORD option, void *b
         FIXME( "WINHTTP_OPTION_ENABLE_HTTP_PROTOCOL: %lx\n", *(DWORD *)buffer );
         return TRUE;
 
+    case WINHTTP_OPTION_IPV6_FAST_FALLBACK:
+        if (buflen != sizeof(BOOL))
+        {
+            SetLastError( ERROR_INSUFFICIENT_BUFFER );
+            return FALSE;
+        }
+        FIXME( "WINHTTP_OPTION_IPV6_FAST_FALLBACK: %d\n", *(BOOL *)buffer );
+        return TRUE;
+
     default:
         FIXME( "unimplemented option %lu\n", option );
         SetLastError( ERROR_WINHTTP_INVALID_OPTION );
@@ -1486,7 +1495,6 @@ HINTERNET WINAPI WinHttpOpenRequest( HINTERNET hconnect, const WCHAR *verb, cons
     request->websocket_receive_buffer_size = connect->session->websocket_receive_buffer_size;
     request->websocket_send_buffer_size = connect->session->websocket_send_buffer_size;
     request->websocket_set_send_buffer_size = request->websocket_send_buffer_size;
-    request->read_reply_status = ERROR_WINHTTP_INCORRECT_HANDLE_STATE;
     request->netconn_stream.data_stream.vtbl = &netconn_stream_vtbl;
     request->data_stream = &request->netconn_stream.data_stream;
 
@@ -1560,6 +1568,26 @@ static BOOL query_option( struct object_header *hdr, DWORD option, void *buffer,
         *buflen = sizeof(DWORD_PTR);
         return TRUE;
     }
+    case WINHTTP_OPTION_HTTP_VERSION:
+    {
+        HTTP_VERSION_INFO *info = buffer;
+
+        FIXME( "WINHTTP_OPTION_HTTP_VERSION\n" );
+        if (!validate_buffer( buffer, buflen, sizeof(info) )) return FALSE;
+        info->dwMajorVersion = 1;
+        info->dwMinorVersion = 1;
+        *buflen = sizeof(info);
+        return TRUE;
+    }
+    case WINHTTP_OPTION_CONNECT_RETRIES:
+    {
+        FIXME( "WINHTTP_OPTION_CONNECT_RETRIES\n" );
+        if (!validate_buffer( buffer, buflen, sizeof(DWORD) )) return FALSE;
+
+        *(DWORD *)buffer = 0;
+        *buflen = sizeof(DWORD);
+        return TRUE;
+    }
     default:
         if (hdr->vtbl->query_option) ret = hdr->vtbl->query_option( hdr, option, buffer, buflen );
         else
diff --git a/dlls/winhttp/tests/notification.c b/dlls/winhttp/tests/notification.c
index b4d942ff30f8..25b133e8f20f 100644
--- a/dlls/winhttp/tests/notification.c
+++ b/dlls/winhttp/tests/notification.c
@@ -1838,7 +1838,7 @@ struct test_recursion_context
     BYTE *send_buffer;
 };
 
-#define TEST_RECURSION_LIMIT 3
+#define TEST_RECURSION_LIMIT 5
 
 static void CALLBACK test_recursion_callback( HINTERNET handle, DWORD_PTR context_ptr,
                                               DWORD status, void *buffer, DWORD buflen )
@@ -1900,7 +1900,7 @@ static void CALLBACK test_recursion_callback( HINTERNET handle, DWORD_PTR contex
                 break;
             }
 
-            ok( context->recursion_count < TEST_RECURSION_LIMIT,
+            ok( context->recursion_count <= TEST_RECURSION_LIMIT,
                 "got %lu, thread %#lx\n", context->recursion_count, GetCurrentThreadId() );
             context->max_recursion_query = max( context->max_recursion_query, context->recursion_count );
             InterlockedIncrement( &context->recursion_count );
@@ -1926,7 +1926,7 @@ static void CALLBACK test_recursion_callback( HINTERNET handle, DWORD_PTR contex
                 SetEvent( context->wait );
                 break;
             }
-            ok( context->recursion_count < TEST_RECURSION_LIMIT,
+            ok( context->recursion_count <= TEST_RECURSION_LIMIT,
                 "got %lu, thread %#lx\n", context->recursion_count, GetCurrentThreadId() );
             context->max_recursion_read = max( context->max_recursion_read, context->recursion_count );
             context->read_from_callback = TRUE;
diff --git a/dlls/winhttp/tests/winhttp.c b/dlls/winhttp/tests/winhttp.c
index a6c77eba3e96..5625eb86fa53 100644
--- a/dlls/winhttp/tests/winhttp.c
+++ b/dlls/winhttp/tests/winhttp.c
@@ -287,7 +287,7 @@ static void test_WinHttpQueryOption(void)
     info.ConnectionInfo.dwProtocol = 0xdeadbeef;
     info.ConnectionInfo.dwCipherStrength = 0xdeadbeef;
     ret = WinHttpQueryOption(request, WINHTTP_OPTION_SECURITY_INFO, &info, &size);
-    ok(ret, "got %lu\n", GetLastError());
+    ok(ret || broken(!ret && GetLastError() == ERROR_INVALID_PARAMETER) /* win10 <= 1909 */, "got %lu\n", GetLastError());
     if (ret)
     {
         ok(info.ConnectionInfo.dwProtocol == 0, "got %lu\n", info.ConnectionInfo.dwProtocol);
@@ -1225,7 +1225,7 @@ static void test_secure_connection(void)
 
     size = sizeof(secinfo);
     ret = WinHttpQueryOption(req, WINHTTP_OPTION_SECURITY_INFO, &secinfo, &size);
-    ok(ret, "got %lu\n", GetLastError());
+    ok(ret || broken(!ret && GetLastError() == ERROR_INVALID_PARAMETER) /* win10 <= 1909 */, "got %lu\n", GetLastError());
     if (ret)
     {
         ok(secinfo.ConnectionInfo.dwProtocol == SP_PROT_TLS1_2_CLIENT, "got %lu\n", secinfo.ConnectionInfo.dwProtocol);
@@ -6374,6 +6374,80 @@ static void test_decompression(void)
     WinHttpCloseHandle( ses );
 }
 
+static void CALLBACK status_callback( HINTERNET req, DWORD_PTR ctx, DWORD status, void *buf, DWORD buflen )
+{
+    HANDLE wait = (HANDLE)ctx;
+    DWORD size, code;
+    char data[32];
+    BOOL ret;
+
+    switch (status)
+    {
+    case WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE:
+        ret = WinHttpWriteData( req, "data", 4, NULL );
+        ok( ret, "got %lu\n", GetLastError() );
+        break;
+
+    case WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE:
+        ret = WinHttpReceiveResponse( req, 0 );
+        ok( ret, "got %lu\n", GetLastError() );
+        break;
+
+    case WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE:
+        code = 0xdeadbeef;
+        size = sizeof(code);
+        ret = WinHttpQueryHeaders( req, WINHTTP_QUERY_STATUS_CODE | WINHTTP_QUERY_FLAG_NUMBER, NULL, &code, &size, NULL );
+        ok( ret, "got %lu\n", GetLastError() );
+        ok( code == HTTP_STATUS_OK, "got %lu\n", code );
+
+        ret = WinHttpQueryDataAvailable( req, NULL );
+        ok( ret, "got %lu\n", GetLastError() );
+        break;
+
+    case WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE:
+        ret = WinHttpReadData( req, data, sizeof(data), NULL );
+        ok( ret, "got %lu\n", GetLastError() );
+        break;
+
+    case WINHTTP_CALLBACK_STATUS_READ_COMPLETE:
+        SetEvent( wait );
+        break;
+
+    default:
+        ok( 0, "unexpected status %08lx\n", status );
+        break;
+    }
+}
+
+static void test_recursive_async(void)
+{
+    HINTERNET ses, req, con;
+    HANDLE wait = CreateEventW( NULL, 0, 0, NULL );
+    DWORD err;
+    BOOL ret;
+
+    ses = WinHttpOpen( L"winetest", WINHTTP_ACCESS_TYPE_NO_PROXY, NULL, NULL, WINHTTP_FLAG_ASYNC );
+    ok( ses != NULL, "got %lu\n", GetLastError() );
+
+    con = WinHttpConnect( ses, L"test.winehq.org", 0, 0 );
+    ok( con != NULL, "got %lu\n", GetLastError() );
+
+    req = WinHttpOpenRequest( con, L"POST", L"tests/post.php", NULL, NULL, NULL, 0 );
+    ok( req != NULL, "got %lu\n", GetLastError() );
+
+    WinHttpSetStatusCallback( req, status_callback, WINHTTP_CALLBACK_FLAG_ALL_COMPLETIONS, 0 );
+
+    ret = WinHttpSendRequest( req, NULL, 0, NULL, 0, 4, (DWORD_PTR)wait );
+    ok( ret, "got %lu\n", GetLastError() );
+    err = WaitForSingleObject( wait, 10000 );
+    ok( err == WAIT_OBJECT_0, "got %08lx\n", err );
+
+    WinHttpCloseHandle( req );
+    WinHttpCloseHandle( con );
+    WinHttpCloseHandle( ses );
+    CloseHandle( wait );
+}
+
 START_TEST (winhttp)
 {
     struct server_info si;
@@ -6409,6 +6483,7 @@ START_TEST (winhttp)
     test_chunked_read();
     test_max_http_automatic_redirects();
     test_decompression();
+    test_recursive_async();
 
     si.event = CreateEventW(NULL, 0, 0, NULL);
     si.port = 7532;
diff --git a/dlls/winhttp/winhttp_private.h b/dlls/winhttp/winhttp_private.h
index 44a91a37d6fd..99f57749856d 100644
--- a/dlls/winhttp/winhttp_private.h
+++ b/dlls/winhttp/winhttp_private.h
@@ -171,17 +171,15 @@ enum request_flags
     REQUEST_FLAG_WEBSOCKET_UPGRADE = 0x01,
 };
 
-enum request_response_state
+enum request_state
 {
-    REQUEST_RESPONSE_STATE_NONE,
-    REQUEST_RESPONSE_STATE_SENDING_REQUEST,
-    REQUEST_RESPONSE_STATE_READ_RESPONSE_QUEUED,
-    REQUEST_RESPONSE_STATE_REQUEST_SENT,
-    REQUEST_RESPONSE_STATE_READ_RESPONSE_QUEUED_REQUEST_SENT,
-    REQUEST_RESPONSE_STATE_REPLY_RECEIVED,
-    REQUEST_RESPONSE_STATE_READ_RESPONSE_QUEUED_REPLY_RECEIVED,
-    REQUEST_RESPONSE_RECURSIVE_REQUEST,
-    REQUEST_RESPONSE_STATE_RESPONSE_RECEIVED,
+    REQUEST_STATE_NONE,
+    REQUEST_STATE_RECURSIVE_REQUEST,
+    REQUEST_STATE_SENDING_REQUEST,
+    REQUEST_STATE_REQUEST_SENT,
+    REQUEST_STATE_READ_RESPONSE_QUEUED,
+    REQUEST_STATE_RECEIVING_RESPONSE,
+    REQUEST_STATE_RESPONSE_RECEIVED,
 };
 
 #define READ_BUFFER_SIZE 8192
@@ -259,9 +257,8 @@ struct request
     } creds[TARGET_MAX][SCHEME_MAX];
     unsigned int websocket_receive_buffer_size;
     unsigned int websocket_send_buffer_size, websocket_set_send_buffer_size;
-    int read_reply_len;
-    DWORD read_reply_status;
-    enum request_response_state state;
+    int reply_len;
+    enum request_state state;
 };
 
 enum socket_state
diff --git a/dlls/winmm/tests/mci.c b/dlls/winmm/tests/mci.c
index d4a131b15140..675377cda792 100644
--- a/dlls/winmm/tests/mci.c
+++ b/dlls/winmm/tests/mci.c
@@ -1902,6 +1902,95 @@ static void test_avi_end_position(void)
     ok(ret, "Failed to delete %s, error %lu.\n", debugstr_w(filename), GetLastError());
 }
 
+static void test_scaling(HWND hwnd)
+{
+    const WCHAR *filename = load_resource(L"test.avi");
+    static const RECT orig_rect = { 0, 0, 32, 24 };
+    static const struct
+    {
+        BOOL parent;
+        DWORD style;
+    }
+    tests[] =
+    {
+        { TRUE, WS_CHILD },
+        { TRUE, WS_POPUP },
+        { FALSE, WS_POPUP },
+        { TRUE, WS_POPUP | WS_CHILD },
+    };
+    static const SIZE sizes[] =
+    {
+        { 12, 12 },
+        { 31, 48 },
+        { 33, 25 },
+        { 50, 50 },
+    };
+
+    MCI_PARMS_UNION parm = { 0 };
+    HWND video_window;
+    MCIDEVICEID id;
+    MCIERROR err;
+    DWORD open_flags;
+    RECT r, new_rect;
+    unsigned int i, j;
+    BOOL bret;
+
+    for (i = 0; i < ARRAY_SIZE(tests); ++i)
+    {
+        winetest_push_context("test %d", i);
+        parm.dgv_open.lpstrDeviceType = (WCHAR *)L"AVIVideo";
+        parm.dgv_open.lpstrElementName = (WCHAR *)filename;
+        parm.dgv_open.hWndParent = hwnd;
+        parm.dgv_open.dwStyle = tests[i].style;
+        open_flags = MCI_OPEN_ELEMENT | MCI_DGV_OPEN_WS | MCI_OPEN_TYPE;
+        if (tests[i].parent)
+            open_flags |= MCI_DGV_OPEN_PARENT;
+
+        err = mciSendCommandW(0, MCI_OPEN, open_flags, (DWORD_PTR)&parm);
+        if (err == MCIERR_DEVICE_OPEN && tests[i].parent)
+        {
+            /* For some reason on some Testbot Win10 machines that doesn't work with parent. */
+            win_skip("MCI_OPEN failed, skipping test.\n");
+            continue;
+        }
+        ok(!err, "got %s.\n", dbg_mcierr(err));
+        id = parm.dgv_open.wDeviceID;
+
+        parm.status.dwItem = MCI_DGV_STATUS_HWND;
+        err = mciSendCommandA(id, MCI_STATUS, MCI_STATUS_ITEM, (DWORD_PTR)&parm);
+        ok(!err,"got %s\n", dbg_mcierr(err));
+        video_window = (HWND)parm.status.dwReturn;
+        ok(!!video_window, "got NULL.\n");
+        GetClientRect(video_window, &r);
+        ok(EqualRect(&r, &orig_rect), "got %s, expected %s.\n", wine_dbgstr_rect(&r), wine_dbgstr_rect(&orig_rect));
+
+        err = mciSendCommandW(id, MCI_WHERE, MCI_DGV_WHERE_DESTINATION | MCI_WAIT, (DWORD_PTR)&parm);
+        ok(!err, "got %s.\n", dbg_mcierr(err));
+        ok(EqualRect(&parm.where.rc, &orig_rect), "got %s, expected %s.\n", wine_dbgstr_rect(&parm.where.rc), wine_dbgstr_rect(&orig_rect));
+
+        for (j = 0; j < ARRAY_SIZE(sizes); ++j)
+        {
+            SetRect(&new_rect, 0, 0, sizes[j].cx, sizes[j].cy);
+            MoveWindow(video_window, 0, 0, new_rect.right, new_rect.bottom, FALSE);
+
+            GetClientRect(video_window, &r);
+            ok(EqualRect(&r, &new_rect), "got %s, expected %s.\n", wine_dbgstr_rect(&r), wine_dbgstr_rect(&new_rect));
+            /* There might be a delay between window size change and the change in destination rectangle on Windows. */
+            Sleep(30);
+            err = mciSendCommandW(id, MCI_WHERE, MCI_DGV_WHERE_DESTINATION | MCI_WAIT, (DWORD_PTR)&parm);
+            ok(!err, "Got %s.\n", dbg_mcierr(err));
+            ok(EqualRect(&parm.where.rc, &new_rect), "got %s, expected %s.\n",
+                    wine_dbgstr_rect(&parm.where.rc), wine_dbgstr_rect(&new_rect));
+        }
+        err = mciSendCommandW(id, MCI_CLOSE, 0, 0);
+        ok(!err, "Got %s.\n", dbg_mcierr(err));
+        winetest_pop_context();
+    }
+
+    bret = DeleteFileW(filename);
+    ok(bret, "Got error %lu.\n", GetLastError());
+}
+
 START_TEST(mci)
 {
     char curdir[MAX_PATH], tmpdir[MAX_PATH];
@@ -1924,6 +2013,7 @@ START_TEST(mci)
         test_AutoOpenWAVE(hwnd);
         test_playTypeMpegvideo(hwnd);
         test_asyncWaveTypeMpegvideo(hwnd);
+        test_scaling(hwnd);
     }else
         skip("No output devices available, skipping all output tests\n");
 
diff --git a/dlls/wintab32/context.c b/dlls/wintab32/context.c
index 4e19a93cc37d..3d79d136f857 100644
--- a/dlls/wintab32/context.c
+++ b/dlls/wintab32/context.c
@@ -149,14 +149,16 @@ static inline BOOL LoadTablet(void)
 
     if (loaded == TI_START)
     {
-        if (NtUserMessageCall(hwndDefault, NtUserWintabInit, 0, 0, NULL, NtUserWintabDriverCall, FALSE))
+        HWND hwndInternal = TABLET_GetInternalWindow();
+        if (hwndInternal &&
+            NtUserMessageCall(hwndInternal, NtUserWintabInit, 0, 0, NULL, NtUserWintabDriverCall, FALSE))
         {
-            TRACE("Initialized the tablet to hwnd %p\n", hwndDefault);
+            TRACE("Initialized the tablet to hwnd %p\n", hwndInternal);
             loaded = TI_OK;
         }
         else
         {
-            TRACE("Failed to initialize the tablet to hwnd %p\n", hwndDefault);
+            TRACE("Failed to initialize the tablet to hwnd %p\n", hwndInternal);
             loaded = TI_FAIL;
         }
     }
diff --git a/dlls/wintab32/wintab32.c b/dlls/wintab32/wintab32.c
index 15040b9ca9cc..1f1e720c721f 100644
--- a/dlls/wintab32/wintab32.c
+++ b/dlls/wintab32/wintab32.c
@@ -33,7 +33,8 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(wintab32);
 
-HWND hwndDefault = NULL;
+static HINSTANCE wintab_instance;
+static HWND hwndTablet = NULL;
 static CRITICAL_SECTION_DEBUG csTablet_debug =
 {
     0, 0, &csTablet,
@@ -51,6 +52,7 @@ static VOID TABLET_Register(void)
     ZeroMemory(&wndClass, sizeof(WNDCLASSW));
     wndClass.style = CS_GLOBALCLASS;
     wndClass.lpfnWndProc = TABLET_WindowProc;
+    wndClass.hInstance = wintab_instance;
     wndClass.cbClsExtra = 0;
     wndClass.cbWndExtra = 0;
     wndClass.hCursor = NULL;
@@ -64,6 +66,26 @@ static VOID TABLET_Unregister(void)
     UnregisterClassW(L"WineTabletClass", NULL);
 }
 
+static BOOL WINAPI create_internal_window(INIT_ONCE *once, void *param, void **context)
+{
+    TABLET_Register();
+    hwndTablet = CreateWindowW(L"WineTabletClass", L"Tablet", 0,
+                                0, 0, 0, 0, HWND_MESSAGE, 0, wintab_instance, 0);
+
+    if (!hwndTablet)
+        ERR("error creating internal window: %lu\n", GetLastError());
+
+    return TRUE;
+}
+
+HWND TABLET_GetInternalWindow(void)
+{
+    static INIT_ONCE init_once = INIT_ONCE_STATIC_INIT;
+    InitOnceExecuteOnce(&init_once, create_internal_window, NULL, NULL);
+
+    return hwndTablet;
+}
+
 BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpReserved)
 {
     TRACE("%p, %lx, %p\n",hInstDLL,fdwReason,lpReserved);
@@ -71,17 +93,13 @@ BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpReserved)
     {
         case DLL_PROCESS_ATTACH:
             TRACE("Initialization\n");
+            wintab_instance = hInstDLL;
             DisableThreadLibraryCalls(hInstDLL);
-            TABLET_Register();
-            hwndDefault = CreateWindowW(L"WineTabletClass", L"Tablet",
-                                        WS_POPUPWINDOW,0,0,0,0,0,0,hInstDLL,0);
-            if (!hwndDefault)
-                return FALSE;
             break;
         case DLL_PROCESS_DETACH:
             if (lpReserved) break;
             TRACE("Detaching\n");
-            if (hwndDefault) DestroyWindow(hwndDefault);
+            if (hwndTablet) DestroyWindow(hwndTablet);
             TABLET_Unregister();
             DeleteCriticalSection(&csTablet);
             break;
@@ -101,9 +119,6 @@ static LRESULT WINAPI TABLET_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam,
 
     switch(uMsg)
     {
-        case WM_NCCREATE:
-            return TRUE;
-
         case WT_PACKET:
             {
                 WTPACKET packet;
@@ -116,7 +131,7 @@ static LRESULT WINAPI TABLET_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam,
                                    (WPARAM)packet.pkSerialNumber,
                                    (LPARAM)handler->handle, FALSE);
                 }
-                break;
+                return 0;
             }
         case WT_PROXIMITY:
             {
@@ -129,8 +144,9 @@ static LRESULT WINAPI TABLET_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam,
                         TABLET_PostTabletMessage(handler, WT_PROXIMITY,
                                                 (WPARAM)handler->handle, lParam, TRUE);
                 }
-                break;
+                return 0;
             }
     }
-    return 0;
+
+    return DefWindowProcW(hwnd, uMsg, wParam, lParam);
 }
diff --git a/dlls/wintab32/wintab_internal.h b/dlls/wintab32/wintab_internal.h
index b4b76c69a983..e230f0c13898 100644
--- a/dlls/wintab32/wintab_internal.h
+++ b/dlls/wintab32/wintab_internal.h
@@ -146,11 +146,11 @@ typedef struct tagOPENCONTEXT
     struct tagOPENCONTEXT *next;
 } OPENCONTEXT, *LPOPENCONTEXT;
 
+HWND TABLET_GetInternalWindow(void);
 int TABLET_PostTabletMessage(LPOPENCONTEXT newcontext, UINT msg, WPARAM wParam,
                              LPARAM lParam, BOOL send_always);
 LPOPENCONTEXT AddPacketToContextQueue(LPWTPACKET packet, HWND hwnd);
 
-extern HWND hwndDefault;
 extern CRITICAL_SECTION csTablet;
 
 #endif /* __WINE_WINTAB_INTERNAL_H */
diff --git a/dlls/wmvcore/Makefile.in b/dlls/wmvcore/Makefile.in
index 8dc574d43d5f..7f3a8553f621 100644
--- a/dlls/wmvcore/Makefile.in
+++ b/dlls/wmvcore/Makefile.in
@@ -1,6 +1,6 @@
 MODULE    = wmvcore.dll
 IMPORTLIB = wmvcore
-IMPORTS   = kernel32
+IMPORTS   = kernel32 combase
 DELAYIMPORTS = winegstreamer
 
 EXTRADLLFLAGS = -Wb,--prefer-native
diff --git a/dlls/wmvcore/async_reader.c b/dlls/wmvcore/async_reader.c
index ef657d561ba2..c41bd96cd6ce 100644
--- a/dlls/wmvcore/async_reader.c
+++ b/dlls/wmvcore/async_reader.c
@@ -358,6 +358,8 @@ static DWORD WINAPI async_reader_callback_thread(void *arg)
     struct list *entry;
     HRESULT hr = S_OK;
 
+    CoInitializeEx(NULL, COINIT_MULTITHREADED);
+
     IWMReaderCallback_OnStatus(reader->callback, WMT_OPENED, S_OK,
             WMT_TYPE_DWORD, (BYTE *)&zero, reader->context);
 
@@ -418,6 +420,7 @@ static DWORD WINAPI async_reader_callback_thread(void *arg)
 
     LeaveCriticalSection(&reader->callback_cs);
 
+    CoUninitialize();
     TRACE("Reader is stopping; exiting.\n");
     return 0;
 }
diff --git a/dlls/wmvcore/tests/wmvcore.c b/dlls/wmvcore/tests/wmvcore.c
index bbc37c525f3e..f839c47b9353 100644
--- a/dlls/wmvcore/tests/wmvcore.c
+++ b/dlls/wmvcore/tests/wmvcore.c
@@ -4305,10 +4305,68 @@ static void test_sync_reader_allocator_failure(void)
     ok(ret, "Failed to delete %s, error %lu.\n", debugstr_w(filename), GetLastError());
 }
 
+static void test_async_reader_com_init(void)
+{
+    const WCHAR *filename = load_resource(L"test.wmv");
+    APTTYPEQUALIFIER qualifier;
+    struct callback callback;
+    IWMReader *reader;
+    APTTYPE type;
+    HRESULT hr;
+
+    hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
+    ok(hr == S_OK, "failed to init com\n");
+    CoUninitialize();
+    hr = CoGetApartmentType(&type, &qualifier);
+    ok(hr == CO_E_NOTINITIALIZED, "got %#lx.\n", hr);
+
+    hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
+    ok(hr == S_OK, "failed to init com\n");
+    hr = CoGetApartmentType(&type, &qualifier);
+    ok(hr == S_OK, "got %#lx.\n", hr);
+    ok(type == APTTYPE_MTA, "got %d.\n", type);
+    ok(qualifier == APTTYPEQUALIFIER_NONE, "got %d.\n", qualifier);
+
+    callback_init(&callback, NULL);
+
+    hr = WMCreateReader(NULL, 0, &reader);
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+    hr = IWMReader_Open(reader, filename, &callback.IWMReaderCallback_iface, (void **)0xdeadbeef);
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+    wait_opened_callback(&callback);
+
+    CoUninitialize();
+    hr = CoGetApartmentType(&type, &qualifier);
+    ok(hr == S_OK, "got %#lx.\n", hr);
+    ok(type == APTTYPE_MTA, "got %d.\n", type);
+    ok(qualifier == APTTYPEQUALIFIER_IMPLICIT_MTA, "got %d.\n", qualifier);
+
+    hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
+    ok(hr == S_OK, "failed to init com\n");
+
+    SetEvent(callback.expect_started);
+    hr = IWMReader_Start(reader, 0, 0, 1, NULL);
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+    hr = IWMReader_Close(reader);
+    ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+    IWMReader_Release(reader);
+
+    callback_cleanup(&callback);
+
+    DeleteFileW(filename);
+
+    CoUninitialize();
+}
+
 START_TEST(wmvcore)
 {
     HRESULT hr;
 
+    /* Keep this test before CoInitialize(). */
+    test_async_reader_com_init();
+
     hr = CoInitialize(0);
     ok(hr == S_OK, "failed to init com\n");
     if(hr != S_OK)
diff --git a/include/appmodel.h b/include/appmodel.h
index 8c219e8080a7..fba40d3f2ed9 100644
--- a/include/appmodel.h
+++ b/include/appmodel.h
@@ -18,6 +18,46 @@
 #ifndef _APPMODEL_H_
 #define _APPMODEL_H_
 
+/* Application User Model ID (space included for NULL terminator) */
+#define APPLICATION_USER_MODEL_ID_MIN_LENGTH 21
+#define APPLICATION_USER_MODEL_ID_MAX_LENGTH 130
+
+/* Package architecture (no space for NULL terminator) */
+#define PACKAGE_ARCHITECTURE_MIN_LENGTH 3
+#define PACKAGE_ARCHITECTURE_MAX_LENGTH 7
+
+/* Package family name (no space for NULL terminator) */
+#define PACKAGE_FAMILY_NAME_MIN_LENGTH 17
+#define PACKAGE_FAMILY_NAME_MAX_LENGTH 64
+
+/* Package full name (no space for NULL terminator) */
+#define PACKAGE_FULL_NAME_MIN_LENGTH 30
+#define PACKAGE_FULL_NAME_MAX_LENGTH 127
+
+/* Package name (no space for NULL terminator) */
+#define PACKAGE_NAME_MIN_LENGTH 3
+#define PACKAGE_NAME_MAX_LENGTH 50
+
+/* Package publisher ID (no space for NULL terminator) */
+#define PACKAGE_PUBLISHERID_MIN_LENGTH 13
+#define PACKAGE_PUBLISHERID_MAX_LENGTH 13
+
+/* Package publisher (no space for NULL terminator) */
+#define PACKAGE_PUBLISHER_MIN_LENGTH 4
+#define PACKAGE_PUBLISHER_MAX_LENGTH 8192
+
+/* Package relative application ID (space included for NULL terminator) */
+#define PACKAGE_RELATIVE_APPLICATION_ID_MIN_LENGTH 2
+#define PACKAGE_RELATIVE_APPLICATION_ID_MAX_LENGTH 65
+
+/* Package resource ID (no space for NULL terminator) */
+#define PACKAGE_RESOURCEID_MIN_LENGTH 0
+#define PACKAGE_RESOURCEID_MAX_LENGTH 30
+
+/* Package version (no space for NULL terminator) */
+#define PACKAGE_VERSION_MIN_LENGTH 7
+#define PACKAGE_VERSION_MAX_LENGTH 23
+
 #if defined(__cplusplus)
 extern "C" {
 #endif
diff --git a/include/msvcrt/__config b/include/msvcrt/__config
index 78ff1b2ab4e5..6585cd5fbde1 100644
--- a/include/msvcrt/__config
+++ b/include/msvcrt/__config
@@ -990,11 +990,8 @@ template <unsigned> struct __static_assert_check {};
 #define _DECLARE_C99_LDBL_MATH 1
 #endif
 
-// If we are getting operator new from the MSVC CRT, then allocation overloads
-// for align_val_t were added in 19.12, aka VS 2017 version 15.3.
-#if defined(_LIBCPP_MSVCRT) && defined(_MSC_VER) && _MSC_VER < 1912
-#  define _LIBCPP_HAS_NO_LIBRARY_ALIGNED_ALLOCATION
-#elif defined(_LIBCPP_ABI_MICROSOFT) && !defined(_LIBCPP_NO_VCRUNTIME)
+// If we are getting operator new from the MSVC CRT, defer to vcruntime.
+#if defined(_LIBCPP_ABI_MICROSOFT) && !defined(_LIBCPP_NO_VCRUNTIME)
 #  define _LIBCPP_DEFER_NEW_TO_VCRUNTIME
 #  if !defined(__cpp_aligned_new)
      // We're defering to Microsoft's STL to provide aligned new et al. We don't
diff --git a/include/msvcrt/__string b/include/msvcrt/__string
index b919ff80b673..7b31c6ebdb88 100644
--- a/include/msvcrt/__string
+++ b/include/msvcrt/__string
@@ -374,7 +374,7 @@ char_traits<wchar_t>::find(const char_type* __s, size_t __n, const char_type& __
 {
     if (__n == 0)
         return nullptr;
-#if __has_feature(cxx_constexpr_string_builtins)
+#if __has_builtin(__builtin_wmemchr) && (!defined(__clang__) || __clang_major__ >= 13)
     return __builtin_wmemchr(__s, __a, __n);
 #elif _LIBCPP_STD_VER <= 14
     return wmemchr(__s, __a, __n);
diff --git a/include/ntuser.h b/include/ntuser.h
index 939771c91210..f8d5882abf4a 100644
--- a/include/ntuser.h
+++ b/include/ntuser.h
@@ -676,7 +676,6 @@ enum wine_internal_message
 /* builtin IME driver calls */
 enum wine_ime_call
 {
-    WINE_IME_PROCESS_KEY,
     WINE_IME_TO_ASCII_EX,
     WINE_IME_POST_UPDATE,  /* for the user drivers */
 };
diff --git a/include/processthreadsapi.h b/include/processthreadsapi.h
index 16e0c4523846..c389b616f7b9 100644
--- a/include/processthreadsapi.h
+++ b/include/processthreadsapi.h
@@ -36,6 +36,13 @@ typedef enum _THREAD_INFORMATION_CLASS
     ThreadInformationClassMax
 } THREAD_INFORMATION_CLASS;
 
+typedef enum _MACHINE_ATTRIBUTES
+{
+    UserEnabled    = 0x00000001,
+    KernelEnabled  = 0x00000002,
+    Wow64Container = 0x00000004,
+} MACHINE_ATTRIBUTES;
+
 typedef struct _MEMORY_PRIORITY_INFORMATION
 {
     ULONG MemoryPriority;
@@ -49,6 +56,7 @@ typedef struct _THREAD_POWER_THROTTLING_STATE
 } THREAD_POWER_THROTTLING_STATE;
 
 WINBASEAPI VOID WINAPI GetCurrentThreadStackLimits(ULONG_PTR *, ULONG_PTR *);
+WINBASEAPI HRESULT WINAPI GetMachineTypeAttributes(USHORT,MACHINE_ATTRIBUTES *);
 WINBASEAPI HRESULT WINAPI GetThreadDescription(HANDLE,PWSTR *);
 WINBASEAPI HRESULT WINAPI SetThreadDescription(HANDLE,PCWSTR);
 WINBASEAPI BOOL WINAPI SetThreadInformation(HANDLE,THREAD_INFORMATION_CLASS,LPVOID,DWORD);
diff --git a/include/shellapi.h b/include/shellapi.h
index fc646820eba5..1516e7a7ac53 100644
--- a/include/shellapi.h
+++ b/include/shellapi.h
@@ -711,6 +711,7 @@ WINSHELLAPI DWORD       WINAPI DoEnvironmentSubstW(LPWSTR, UINT);
 WINSHELLAPI HRESULT     WINAPI SHEnumerateUnreadMailAccountsA(HKEY,DWORD,LPSTR,INT);
 WINSHELLAPI HRESULT     WINAPI SHEnumerateUnreadMailAccountsW(HKEY,DWORD,LPWSTR,INT);
 #define                        SHEnumerateUnreadMailAccounts WINELIB_NAME_AW(SHEnumerateUnreadMailAccounts)
+WINSHELLAPI HRESULT     WINAPI SHEvaluateSystemCommandTemplate(PCWSTR, PWSTR*, PWSTR*, PWSTR*);
 WINSHELLAPI HRESULT     WINAPI SHGetPropertyStoreForWindow(HWND,REFIID,void **);
 
 #ifdef __cplusplus
diff --git a/include/winbase.h b/include/winbase.h
index b4d7a0ef6a26..467d54ec9cc4 100644
--- a/include/winbase.h
+++ b/include/winbase.h
@@ -324,16 +324,21 @@ typedef VOID (CALLBACK *LPOVERLAPPED_COMPLETION_ROUTINE)(DWORD,DWORD,LPOVERLAPPE
  */
 
 /* STARTUPINFO.dwFlags */
-#define	STARTF_USESHOWWINDOW	0x00000001
-#define	STARTF_USESIZE		0x00000002
-#define	STARTF_USEPOSITION	0x00000004
-#define	STARTF_USECOUNTCHARS	0x00000008
-#define	STARTF_USEFILLATTRIBUTE	0x00000010
-#define	STARTF_RUNFULLSCREEN	0x00000020
-#define	STARTF_FORCEONFEEDBACK	0x00000040
-#define	STARTF_FORCEOFFFEEDBACK	0x00000080
-#define	STARTF_USESTDHANDLES	0x00000100
-#define	STARTF_USEHOTKEY	0x00000200
+#define STARTF_USESHOWWINDOW    0x00000001
+#define STARTF_USESIZE          0x00000002
+#define STARTF_USEPOSITION      0x00000004
+#define STARTF_USECOUNTCHARS    0x00000008
+#define STARTF_USEFILLATTRIBUTE 0x00000010
+#define STARTF_RUNFULLSCREEN    0x00000020
+#define STARTF_FORCEONFEEDBACK  0x00000040
+#define STARTF_FORCEOFFFEEDBACK 0x00000080
+#define STARTF_USESTDHANDLES    0x00000100
+#define STARTF_USEHOTKEY        0x00000200
+#define STARTF_TITLEISLINKNAME  0x00000800
+#define STARTF_TITLEISAPPID     0x00001000
+#define STARTF_PREVENTPINNING   0x00002000
+#define STARTF_UNTRUSTEDSOURCE  0x00008000
+#define STARTF_HOLOGRAPHIC      0x00040000
 
 typedef struct _STARTUPINFOA{
         DWORD cb;		/* 00: size of struct */
@@ -1416,13 +1421,6 @@ typedef struct _WIN32_MEMORY_RANGE_ENTRY
     SIZE_T NumberOfBytes;
 } WIN32_MEMORY_RANGE_ENTRY, *PWIN32_MEMORY_RANGE_ENTRY;
 
-typedef enum _MACHINE_ATTRIBUTES
-{
-    UserEnabled    = 0x00000001,
-    KernelEnabled  = 0x00000002,
-    Wow64Container = 0x00000004,
-} MACHINE_ATTRIBUTES;
-
 typedef struct _PROCESS_MACHINE_INFORMATION
 {
     USHORT ProcessMachine;
diff --git a/include/windows.graphics.directx.direct3d11.interop.idl b/include/windows.graphics.directx.direct3d11.interop.idl
index b5ca72e40d60..345080449def 100644
--- a/include/windows.graphics.directx.direct3d11.interop.idl
+++ b/include/windows.graphics.directx.direct3d11.interop.idl
@@ -15,7 +15,7 @@
  */
 
 #ifdef __WIDL__
-#pragma winrt ns_prefix
+#pragma winrt
 #endif
 
 import "dxgi.idl";
diff --git a/include/wine/gdi_driver.h b/include/wine/gdi_driver.h
index f6390bce8783..97c646d6ec9e 100644
--- a/include/wine/gdi_driver.h
+++ b/include/wine/gdi_driver.h
@@ -372,7 +372,7 @@ struct user_driver_funcs
     const KBDTABLES *(*pKbdLayerDescriptor)(HKL);
     void    (*pReleaseKbdTables)(const KBDTABLES *);
     /* IME functions */
-    UINT    (*pImeProcessKey)(HIMC,UINT,UINT,const BYTE*);
+    UINT    (*pImeToAsciiEx)(UINT,UINT,const BYTE*,HIMC);
     void    (*pNotifyIMEStatus)(HWND,UINT);
     BOOL    (*pSetIMECompositionRect)(HWND,RECT);
     /* cursor/icon functions */
diff --git a/include/wine/opengl_driver.h b/include/wine/opengl_driver.h
index 7b2cea0a87bf..777a82c338a7 100644
--- a/include/wine/opengl_driver.h
+++ b/include/wine/opengl_driver.h
@@ -59,12 +59,26 @@ struct wgl_pixel_format
     int float_components;
 };
 
+enum opengl_extension
+{
+#define USE_GL_EXT(x) x,
+    ALL_GL_EXTS
+    ALL_WGL_EXTS
+#undef USE_GL_EXT
+    GL_EXTENSION_COUNT,
+};
+
 struct opengl_client_context
 {
     struct HGLRC__              obj;            /* client object header */
     UINT64                      unix_handle;
     UINT64                      unix_funcs;
     GLenum                      last_error;
+    int                         major_version;
+    int                         minor_version;
+    BOOLEAN                     extensions[GL_EXTENSION_COUNT];         /* exposed client extensions */
+    UINT32                      extension_count;                        /* size of supported extensions */
+    UINT16                      extension_array[GL_EXTENSION_COUNT];    /* array of supported extensions */
 };
 
 static inline struct opengl_client_context *opengl_client_context_from_client( HGLRC client_context )
@@ -126,13 +140,14 @@ struct opengl_funcs
     ALL_GL_FUNCS
     ALL_GL_EXT_FUNCS
 #undef USE_GL_FUNC
+    void (*p_init_extensions)( BOOLEAN extensions[GL_EXTENSION_COUNT] );
     void (*p_get_pixel_formats)( struct wgl_pixel_format *formats, UINT max_formats, UINT *num_formats, UINT *num_onscreen_formats );
     BOOL (*p_query_renderer)( UINT attribute, void *value );
     BOOL (*p_context_flush)( struct opengl_context *context, void (*flush)(void), UINT flags );
     BOOL (*p_context_create)( struct opengl_context *context, HDC hdc, struct opengl_context *share, const int *attribs );
     BOOL (*p_context_destroy)( struct opengl_context *context );
     BOOL (*p_context_reset)( struct opengl_context *context, struct opengl_context *share, const int *attribs );
-
+    BOOL (*p_pbuffer_create)( HDC hdc, int format, int width, int height, const int *attribs, HPBUFFERARB client_pbuffer );
     void *egl_handle;
 };
 
@@ -221,7 +236,7 @@ struct opengl_driver_funcs
     void *(*p_get_proc_address)(const char *);
     UINT (*p_init_pixel_formats)(UINT*);
     BOOL (*p_describe_pixel_format)(int,struct wgl_pixel_format*);
-    const char *(*p_init_wgl_extensions)(struct opengl_funcs *funcs);
+    void (*p_init_extensions)( struct opengl_funcs *funcs, BOOLEAN extensions[GL_EXTENSION_COUNT] );
     BOOL (*p_surface_create)( HWND hwnd, int format, struct opengl_drawable **drawable );
     BOOL (*p_context_create)( int format, void *share, const int *attribs, void **context );
     BOOL (*p_context_destroy)(void*);
diff --git a/include/wine/unixlib.h b/include/wine/unixlib.h
index b0fd9b2604de..a4b9d365a1bc 100644
--- a/include/wine/unixlib.h
+++ b/include/wine/unixlib.h
@@ -255,6 +255,11 @@ NTSYSAPI int ntdll_wcstoumbs( const WCHAR *src, DWORD srclen, char *dst, DWORD d
 NTSYSAPI int ntdll_wcsicmp( const WCHAR *str1, const WCHAR *str2 );
 NTSYSAPI int ntdll_wcsnicmp( const WCHAR *str1, const WCHAR *str2, int n );
 
+/* C23 requires these functions to be defined as macros */
+#undef wcschr
+#undef wcsrchr
+#undef wcspbrk
+
 #define iswspace(ch)       ntdll_iswspace(ch)
 #define wcslen(str)        ntdll_wcslen(str)
 #define wcscpy(dst,src)    ntdll_wcscpy(dst,src)
diff --git a/include/wine/wgl.h b/include/wine/wgl.h
index e6d2849f5ce5..3b46ee51b87d 100644
--- a/include/wine/wgl.h
+++ b/include/wine/wgl.h
@@ -178,15 +178,26 @@ typedef unsigned int GLhandleARB;
 #define EGL_BUFFER_PRESERVED                                                       0x3094
 #define EGL_BUFFER_SIZE                                                            0x3020
 #define EGL_CLIENT_APIS                                                            0x308D
+#define EGL_CLIENT_PIXMAP_POINTER_HI                                               0x8F74
 #define EGL_CL_EVENT_HANDLE                                                        0x309C
 #define EGL_CL_EVENT_HANDLE_KHR                                                    0x309C
 #define EGL_COLORSPACE                                                             0x3087
 #define EGL_COLORSPACE_LINEAR                                                      0x308A
 #define EGL_COLORSPACE_sRGB                                                        0x3089
+#define EGL_COLOR_ARGB_HI                                                          0x8F73
 #define EGL_COLOR_BUFFER_TYPE                                                      0x303F
 #define EGL_COLOR_COMPONENT_TYPE_EXT                                               0x3339
 #define EGL_COLOR_COMPONENT_TYPE_FIXED_EXT                                         0x333A
 #define EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT                                         0x333B
+#define EGL_COLOR_COMPONENT_TYPE_INTEGER_ARM                                       0x3288
+#define EGL_COLOR_COMPONENT_TYPE_UNSIGNED_INTEGER_ARM                              0x3287
+#define EGL_COLOR_FORMAT_HI                                                        0x8F70
+#define EGL_COLOR_RGBA_HI                                                          0x8F72
+#define EGL_COLOR_RGB_HI                                                           0x8F71
+#define EGL_COMPOSITE_DEADLINE_ANDROID                                             0x3431
+#define EGL_COMPOSITE_INTERVAL_ANDROID                                             0x3432
+#define EGL_COMPOSITE_TO_PRESENT_LATENCY_ANDROID                                   0x3433
+#define EGL_COMPOSITION_LATCH_TIME_ANDROID                                         0x3436
 #define EGL_COMPOSITOR_DROP_NEWEST_FRAME_EXT                                       0x3462
 #define EGL_COMPOSITOR_KEEP_NEWEST_FRAME_EXT                                       0x3463
 #define EGL_CONDITION_SATISFIED                                                    0x30F6
@@ -246,6 +257,9 @@ typedef unsigned int GLhandleARB;
 #define EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT                                   0x3361
 #define EGL_CUDA_DEVICE_NV                                                         0x323A
 #define EGL_CUDA_EVENT_HANDLE_NV                                                   0x323B
+#define EGL_D3D11_DEVICE_ANGLE                                                     0x33A1
+#define EGL_D3D9_DEVICE_ANGLE                                                      0x33A0
+#define EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE                                      0x3200
 #define EGL_DEBUG_CALLBACK_KHR                                                     0x33B8
 #define EGL_DEBUG_MSG_CRITICAL_KHR                                                 0x33B9
 #define EGL_DEBUG_MSG_ERROR_KHR                                                    0x33BA
@@ -256,8 +270,11 @@ typedef unsigned int GLhandleARB;
 #define EGL_DEPTH_ENCODING_NONLINEAR_NV                                            0x30E3
 #define EGL_DEPTH_ENCODING_NV                                                      0x30E2
 #define EGL_DEPTH_SIZE                                                             0x3025
+#define EGL_DEQUEUE_READY_TIME_ANDROID                                             0x343B
 #define EGL_DEVICE_EXT                                                             0x322C
 #define EGL_DEVICE_UUID_EXT                                                        0x335C
+#define EGL_DISCARD_SAMPLES_ARM                                                    0x3286
+#define EGL_DISPLAY_PRESENT_TIME_ANDROID                                           0x343A
 #define EGL_DISPLAY_SCALING                                                        10000
 #define EGL_DMA_BUF_PLANE0_FD_EXT                                                  0x3272
 #define EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT                                         0x3444
@@ -300,6 +317,9 @@ typedef unsigned int GLhandleARB;
 #define EGL_EXTENSIONS                                                             0x3055
 #define EGL_EXTERNAL_REF_ID_EXT                                                    0x3461
 #define EGL_FALSE                                                                  0
+#define EGL_FIRST_COMPOSITION_GPU_FINISHED_TIME_ANDROID                            0x3439
+#define EGL_FIRST_COMPOSITION_START_TIME_ANDROID                                   0x3437
+#define EGL_FIXED_SIZE_ANGLE                                                       0x3201
 #define EGL_FOREVER                                                                0xFFFFFFFFFFFFFFFF
 #define EGL_FOREVER_KHR                                                            0xFFFFFFFFFFFFFFFF
 #define EGL_FOREVER_NV                                                             0xFFFFFFFFFFFFFFFF
@@ -307,6 +327,8 @@ typedef unsigned int GLhandleARB;
 #define EGL_FORMAT_RGBA_8888_KHR                                                   0x30C3
 #define EGL_FORMAT_RGB_565_EXACT_KHR                                               0x30C0
 #define EGL_FORMAT_RGB_565_KHR                                                     0x30C1
+#define EGL_FRAMEBUFFER_TARGET_ANDROID                                             0x3147
+#define EGL_FRONT_BUFFER_AUTO_REFRESH_ANDROID                                      0x314C
 #define EGL_FRONT_BUFFER_EXT                                                       0x3464
 #define EGL_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV                                0x334C
 #define EGL_GL_COLORSPACE                                                          0x309D
@@ -358,6 +380,7 @@ typedef unsigned int GLhandleARB;
 #define EGL_ITU_REC601_EXT                                                         0x327F
 #define EGL_ITU_REC709_EXT                                                         0x3280
 #define EGL_LARGEST_PBUFFER                                                        0x3058
+#define EGL_LAST_COMPOSITION_START_TIME_ANDROID                                    0x3438
 #define EGL_LEFT_NV                                                                0x336B
 #define EGL_LEVEL                                                                  0x3029
 #define EGL_LINUX_DMA_BUF_EXT                                                      0x3270
@@ -398,10 +421,18 @@ typedef unsigned int GLhandleARB;
 #define EGL_MULTISAMPLE_RESOLVE_DEFAULT                                            0x309A
 #define EGL_MULTIVIEW_VIEW_COUNT_EXT                                               0x3134
 #define EGL_MUTABLE_RENDER_BUFFER_BIT_KHR                                          0x1000
+#define EGL_NATIVE_BUFFER_ANDROID                                                  0x3140
 #define EGL_NATIVE_BUFFER_MULTIPLANE_SEPARATE_IMG                                  0x3105
 #define EGL_NATIVE_BUFFER_PLANE_OFFSET_IMG                                         0x3106
+#define EGL_NATIVE_BUFFER_QNX                                                      0x3551
+#define EGL_NATIVE_BUFFER_TIZEN                                                    0x32A0
+#define EGL_NATIVE_BUFFER_USAGE_ANDROID                                            0x3143
+#define EGL_NATIVE_BUFFER_USAGE_PROTECTED_BIT_ANDROID                              0x00000001
+#define EGL_NATIVE_BUFFER_USAGE_RENDERBUFFER_BIT_ANDROID                           0x00000002
+#define EGL_NATIVE_BUFFER_USAGE_TEXTURE_BIT_ANDROID                                0x00000004
 #define EGL_NATIVE_PIXMAP_KHR                                                      0x30B0
 #define EGL_NATIVE_RENDERABLE                                                      0x302D
+#define EGL_NATIVE_SURFACE_TIZEN                                                   0x32A1
 #define EGL_NATIVE_VISUAL_ID                                                       0x302E
 #define EGL_NATIVE_VISUAL_TYPE                                                     0x302F
 #define EGL_NONE                                                                   0x3038
@@ -414,6 +445,7 @@ typedef unsigned int GLhandleARB;
 #define EGL_NO_FILE_DESCRIPTOR_KHR                                                 EGL_CAST(EGLNativeFileDescriptorKHR,-1)
 #define EGL_NO_IMAGE                                                               EGL_CAST(EGLImage,0)
 #define EGL_NO_IMAGE_KHR                                                           EGL_CAST(EGLImageKHR,0)
+#define EGL_NO_NATIVE_FENCE_FD_ANDROID                                             -1
 #define EGL_NO_OUTPUT_LAYER_EXT                                                    EGL_CAST(EGLOutputLayerEXT,0)
 #define EGL_NO_OUTPUT_PORT_EXT                                                     EGL_CAST(EGLOutputPortEXT,0)
 #define EGL_NO_RESET_NOTIFICATION                                                  0x31BE
@@ -456,6 +488,7 @@ typedef unsigned int GLhandleARB;
 #define EGL_PLATFORM_DEVICE_EXT                                                    0x313F
 #define EGL_PLATFORM_GBM_KHR                                                       0x31D7
 #define EGL_PLATFORM_GBM_MESA                                                      0x31D7
+#define EGL_PLATFORM_SCREEN_QNX                                                    0x3550
 #define EGL_PLATFORM_SURFACELESS_MESA                                              0x31DD
 #define EGL_PLATFORM_WAYLAND_EXT                                                   0x31D8
 #define EGL_PLATFORM_WAYLAND_KHR                                                   0x31D8
@@ -475,11 +508,15 @@ typedef unsigned int GLhandleARB;
 #define EGL_PROTECTED_CONTENT_EXT                                                  0x32C0
 #define EGL_QUADRUPLE_BUFFER_NV                                                    0x3231
 #define EGL_READ                                                                   0x305A
+#define EGL_READS_DONE_TIME_ANDROID                                                0x343C
 #define EGL_READ_SURFACE_BIT_KHR                                                   0x0001
+#define EGL_RECORDABLE_ANDROID                                                     0x3142
 #define EGL_RED_SIZE                                                               0x3024
 #define EGL_RENDERABLE_TYPE                                                        0x3040
 #define EGL_RENDERER_EXT                                                           0x335F
+#define EGL_RENDERING_COMPLETE_TIME_ANDROID                                        0x3435
 #define EGL_RENDER_BUFFER                                                          0x3086
+#define EGL_REQUESTED_PRESENT_TIME_ANDROID                                         0x3434
 #define EGL_RGB_BUFFER                                                             0x308E
 #define EGL_RIGHT_NV                                                               0x336C
 #define EGL_SAMPLES                                                                0x3031
@@ -584,10 +621,14 @@ typedef unsigned int GLhandleARB;
 #define EGL_SYNC_FLUSH_COMMANDS_BIT                                                0x0001
 #define EGL_SYNC_FLUSH_COMMANDS_BIT_KHR                                            0x0001
 #define EGL_SYNC_FLUSH_COMMANDS_BIT_NV                                             0x0001
+#define EGL_SYNC_NATIVE_FENCE_ANDROID                                              0x3144
+#define EGL_SYNC_NATIVE_FENCE_FD_ANDROID                                           0x3145
+#define EGL_SYNC_NATIVE_FENCE_SIGNALED_ANDROID                                     0x3146
 #define EGL_SYNC_NEW_FRAME_NV                                                      0x321F
 #define EGL_SYNC_PRIOR_COMMANDS_COMPLETE                                           0x30F0
 #define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR                                       0x30F0
 #define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV                                        0x30E6
+#define EGL_SYNC_PRIOR_COMMANDS_IMPLICIT_EXTERNAL_ARM                              0x328A
 #define EGL_SYNC_REUSABLE_KHR                                                      0x30FA
 #define EGL_SYNC_STATUS                                                            0x30F1
 #define EGL_SYNC_STATUS_KHR                                                        0x30F1
@@ -595,6 +636,7 @@ typedef unsigned int GLhandleARB;
 #define EGL_SYNC_TYPE                                                              0x30F7
 #define EGL_SYNC_TYPE_KHR                                                          0x30F7
 #define EGL_SYNC_TYPE_NV                                                           0x30ED
+#define EGL_TELEMETRY_HINT_ANDROID                                                 0x3570
 #define EGL_TEXTURE_2D                                                             0x305F
 #define EGL_TEXTURE_EXTERNAL_WL                                                    0x31DA
 #define EGL_TEXTURE_FORMAT                                                         0x3080
@@ -607,6 +649,9 @@ typedef unsigned int GLhandleARB;
 #define EGL_TIMEOUT_EXPIRED                                                        0x30F5
 #define EGL_TIMEOUT_EXPIRED_KHR                                                    0x30F5
 #define EGL_TIMEOUT_EXPIRED_NV                                                     0x30EB
+#define EGL_TIMESTAMPS_ANDROID                                                     0x3430
+#define EGL_TIMESTAMP_INVALID_ANDROID                                              EGL_CAST(EGLnsecsANDROID,-1)
+#define EGL_TIMESTAMP_PENDING_ANDROID                                              EGL_CAST(EGLnsecsANDROID,-2)
 #define EGL_TOP_NV                                                                 0x336D
 #define EGL_TRACK_REFERENCES_KHR                                                   0x3352
 #define EGL_TRANSPARENT_BLUE_VALUE                                                 0x3035
@@ -678,6 +723,7 @@ typedef unsigned int GLhandleARB;
 #define EGL_YUV_SUBSAMPLE_4_4_4_EXT                                                0x3315
 #define EGL_YUV_SUBSAMPLE_EXT                                                      0x3312
 #define EGL_Y_AXIS_NV                                                              0x3370
+#define EGL_Y_INVERTED_NOK                                                         0x307F
 #define ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB                                     0x2054
 #define ERROR_INVALID_PIXEL_TYPE_ARB                                               0x2043
 #define ERROR_INVALID_PROFILE_ARB                                                  0x2096
@@ -809,12 +855,16 @@ typedef unsigned int GLhandleARB;
 #define GL_ALPHA_SNORM                                                             0x9010
 #define GL_ALPHA_TEST                                                              0x0BC0
 #define GL_ALPHA_TEST_FUNC                                                         0x0BC1
+#define GL_ALPHA_TEST_FUNC_QCOM                                                    0x0BC1
+#define GL_ALPHA_TEST_QCOM                                                         0x0BC0
 #define GL_ALPHA_TEST_REF                                                          0x0BC2
+#define GL_ALPHA_TEST_REF_QCOM                                                     0x0BC2
 #define GL_ALPHA_TO_COVERAGE_DITHER_DEFAULT_NV                                     0x934D
 #define GL_ALPHA_TO_COVERAGE_DITHER_DISABLE_NV                                     0x934F
 #define GL_ALPHA_TO_COVERAGE_DITHER_ENABLE_NV                                      0x934E
 #define GL_ALPHA_TO_COVERAGE_DITHER_MODE_NV                                        0x92BF
 #define GL_ALREADY_SIGNALED                                                        0x911A
+#define GL_ALREADY_SIGNALED_APPLE                                                  0x911A
 #define GL_ALWAYS                                                                  0x0207
 #define GL_ALWAYS_FAST_HINT_PGI                                                    0x1A20C
 #define GL_ALWAYS_SOFT_HINT_PGI                                                    0x1A20D
@@ -825,6 +875,8 @@ typedef unsigned int GLhandleARB;
 #define GL_AND_REVERSE                                                             0x1502
 #define GL_ANY_SAMPLES_PASSED                                                      0x8C2F
 #define GL_ANY_SAMPLES_PASSED_CONSERVATIVE                                         0x8D6A
+#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT                                     0x8D6A
+#define GL_ANY_SAMPLES_PASSED_EXT                                                  0x8C2F
 #define GL_ARC_TO_NV                                                               0xFE
 #define GL_ARRAY_BUFFER                                                            0x8892
 #define GL_ARRAY_BUFFER_ARB                                                        0x8892
@@ -903,6 +955,7 @@ typedef unsigned int GLhandleARB;
 #define GL_BGR_INTEGER_EXT                                                         0x8D9A
 #define GL_BIAS_BIT_ATI                                                            0x00000008
 #define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV                                            0x8541
+#define GL_BINNING_CONTROL_HINT_QCOM                                               0x8FB0
 #define GL_BINORMAL_ARRAY_EXT                                                      0x843A
 #define GL_BINORMAL_ARRAY_POINTER_EXT                                              0x8443
 #define GL_BINORMAL_ARRAY_STRIDE_EXT                                               0x8441
@@ -919,21 +972,28 @@ typedef unsigned int GLhandleARB;
 #define GL_BLEND_DST                                                               0x0BE0
 #define GL_BLEND_DST_ALPHA                                                         0x80CA
 #define GL_BLEND_DST_ALPHA_EXT                                                     0x80CA
+#define GL_BLEND_DST_ALPHA_OES                                                     0x80CA
 #define GL_BLEND_DST_RGB                                                           0x80C8
 #define GL_BLEND_DST_RGB_EXT                                                       0x80C8
+#define GL_BLEND_DST_RGB_OES                                                       0x80C8
 #define GL_BLEND_EQUATION                                                          0x8009
 #define GL_BLEND_EQUATION_ALPHA                                                    0x883D
 #define GL_BLEND_EQUATION_ALPHA_EXT                                                0x883D
+#define GL_BLEND_EQUATION_ALPHA_OES                                                0x883D
 #define GL_BLEND_EQUATION_EXT                                                      0x8009
+#define GL_BLEND_EQUATION_OES                                                      0x8009
 #define GL_BLEND_EQUATION_RGB                                                      0x8009
 #define GL_BLEND_EQUATION_RGB_EXT                                                  0x8009
+#define GL_BLEND_EQUATION_RGB_OES                                                  0x8009
 #define GL_BLEND_OVERLAP_NV                                                        0x9281
 #define GL_BLEND_PREMULTIPLIED_SRC_NV                                              0x9280
 #define GL_BLEND_SRC                                                               0x0BE1
 #define GL_BLEND_SRC_ALPHA                                                         0x80CB
 #define GL_BLEND_SRC_ALPHA_EXT                                                     0x80CB
+#define GL_BLEND_SRC_ALPHA_OES                                                     0x80CB
 #define GL_BLEND_SRC_RGB                                                           0x80C9
 #define GL_BLEND_SRC_RGB_EXT                                                       0x80C9
+#define GL_BLEND_SRC_RGB_OES                                                       0x80C9
 #define GL_BLOCK_INDEX                                                             0x92FD
 #define GL_BLUE                                                                    0x1905
 #define GL_BLUE_BIAS                                                               0x0D1B
@@ -960,24 +1020,29 @@ typedef unsigned int GLhandleARB;
 #define GL_BUFFER_ACCESS                                                           0x88BB
 #define GL_BUFFER_ACCESS_ARB                                                       0x88BB
 #define GL_BUFFER_ACCESS_FLAGS                                                     0x911F
+#define GL_BUFFER_ACCESS_OES                                                       0x88BB
 #define GL_BUFFER_BINDING                                                          0x9302
 #define GL_BUFFER_DATA_SIZE                                                        0x9303
 #define GL_BUFFER_FLUSHING_UNMAP_APPLE                                             0x8A13
 #define GL_BUFFER_GPU_ADDRESS_NV                                                   0x8F1D
 #define GL_BUFFER_IMMUTABLE_STORAGE                                                0x821F
+#define GL_BUFFER_IMMUTABLE_STORAGE_EXT                                            0x821F
 #define GL_BUFFER_KHR                                                              0x82E0
 #define GL_BUFFER_MAPPED                                                           0x88BC
 #define GL_BUFFER_MAPPED_ARB                                                       0x88BC
+#define GL_BUFFER_MAPPED_OES                                                       0x88BC
 #define GL_BUFFER_MAP_LENGTH                                                       0x9120
 #define GL_BUFFER_MAP_OFFSET                                                       0x9121
 #define GL_BUFFER_MAP_POINTER                                                      0x88BD
 #define GL_BUFFER_MAP_POINTER_ARB                                                  0x88BD
+#define GL_BUFFER_MAP_POINTER_OES                                                  0x88BD
 #define GL_BUFFER_OBJECT_APPLE                                                     0x85B3
 #define GL_BUFFER_OBJECT_EXT                                                       0x9151
 #define GL_BUFFER_SERIALIZED_MODIFY_APPLE                                          0x8A12
 #define GL_BUFFER_SIZE                                                             0x8764
 #define GL_BUFFER_SIZE_ARB                                                         0x8764
 #define GL_BUFFER_STORAGE_FLAGS                                                    0x8220
+#define GL_BUFFER_STORAGE_FLAGS_EXT                                                0x8220
 #define GL_BUFFER_UPDATE_BARRIER_BIT                                               0x00000200
 #define GL_BUFFER_UPDATE_BARRIER_BIT_EXT                                           0x00000200
 #define GL_BUFFER_USAGE                                                            0x8765
@@ -1007,7 +1072,9 @@ typedef unsigned int GLhandleARB;
 #define GL_CLAMP_READ_COLOR_ARB                                                    0x891C
 #define GL_CLAMP_TO_BORDER                                                         0x812D
 #define GL_CLAMP_TO_BORDER_ARB                                                     0x812D
+#define GL_CLAMP_TO_BORDER_EXT                                                     0x812D
 #define GL_CLAMP_TO_BORDER_NV                                                      0x812D
+#define GL_CLAMP_TO_BORDER_OES                                                     0x812D
 #define GL_CLAMP_TO_BORDER_SGIS                                                    0x812D
 #define GL_CLAMP_TO_EDGE                                                           0x812F
 #define GL_CLAMP_TO_EDGE_SGIS                                                      0x812F
@@ -1021,14 +1088,17 @@ typedef unsigned int GLhandleARB;
 #define GL_CLIENT_ALL_ATTRIB_BITS                                                  0xFFFFFFFF
 #define GL_CLIENT_ATTRIB_STACK_DEPTH                                               0x0BB1
 #define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT                                        0x00004000
+#define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT_EXT                                    0x00004000
 #define GL_CLIENT_PIXEL_STORE_BIT                                                  0x00000001
 #define GL_CLIENT_STORAGE_BIT                                                      0x0200
+#define GL_CLIENT_STORAGE_BIT_EXT                                                  0x0200
 #define GL_CLIENT_VERTEX_ARRAY_BIT                                                 0x00000002
 #define GL_CLIPPING_INPUT_PRIMITIVES                                               0x82F6
 #define GL_CLIPPING_INPUT_PRIMITIVES_ARB                                           0x82F6
 #define GL_CLIPPING_OUTPUT_PRIMITIVES                                              0x82F7
 #define GL_CLIPPING_OUTPUT_PRIMITIVES_ARB                                          0x82F7
 #define GL_CLIP_DEPTH_MODE                                                         0x935D
+#define GL_CLIP_DEPTH_MODE_EXT                                                     0x935D
 #define GL_CLIP_DISTANCE0                                                          0x3000
 #define GL_CLIP_DISTANCE0_APPLE                                                    0x3000
 #define GL_CLIP_DISTANCE0_EXT                                                      0x3000
@@ -1057,12 +1127,19 @@ typedef unsigned int GLhandleARB;
 #define GL_CLIP_FAR_HINT_PGI                                                       0x1A221
 #define GL_CLIP_NEAR_HINT_PGI                                                      0x1A220
 #define GL_CLIP_ORIGIN                                                             0x935C
+#define GL_CLIP_ORIGIN_EXT                                                         0x935C
 #define GL_CLIP_PLANE0                                                             0x3000
+#define GL_CLIP_PLANE0_IMG                                                         0x3000
 #define GL_CLIP_PLANE1                                                             0x3001
+#define GL_CLIP_PLANE1_IMG                                                         0x3001
 #define GL_CLIP_PLANE2                                                             0x3002
+#define GL_CLIP_PLANE2_IMG                                                         0x3002
 #define GL_CLIP_PLANE3                                                             0x3003
+#define GL_CLIP_PLANE3_IMG                                                         0x3003
 #define GL_CLIP_PLANE4                                                             0x3004
+#define GL_CLIP_PLANE4_IMG                                                         0x3004
 #define GL_CLIP_PLANE5                                                             0x3005
+#define GL_CLIP_PLANE5_IMG                                                         0x3005
 #define GL_CLIP_VOLUME_CLIPPING_HINT_EXT                                           0x80F0
 #define GL_CLOSE_PATH_NV                                                           0x00
 #define GL_CMYKA_EXT                                                               0x800D
@@ -1101,6 +1178,7 @@ typedef unsigned int GLhandleARB;
 #define GL_COLOR_ATTACHMENT0                                                       0x8CE0
 #define GL_COLOR_ATTACHMENT0_EXT                                                   0x8CE0
 #define GL_COLOR_ATTACHMENT0_NV                                                    0x8CE0
+#define GL_COLOR_ATTACHMENT0_OES                                                   0x8CE0
 #define GL_COLOR_ATTACHMENT1                                                       0x8CE1
 #define GL_COLOR_ATTACHMENT10                                                      0x8CEA
 #define GL_COLOR_ATTACHMENT10_EXT                                                  0x8CEA
@@ -1162,11 +1240,21 @@ typedef unsigned int GLhandleARB;
 #define GL_COLOR_ATTACHMENT9                                                       0x8CE9
 #define GL_COLOR_ATTACHMENT9_EXT                                                   0x8CE9
 #define GL_COLOR_ATTACHMENT9_NV                                                    0x8CE9
+#define GL_COLOR_ATTACHMENT_EXT                                                    0x90F0
 #define GL_COLOR_BUFFER_BIT                                                        0x00004000
+#define GL_COLOR_BUFFER_BIT0_QCOM                                                  0x00000001
+#define GL_COLOR_BUFFER_BIT1_QCOM                                                  0x00000002
+#define GL_COLOR_BUFFER_BIT2_QCOM                                                  0x00000004
+#define GL_COLOR_BUFFER_BIT3_QCOM                                                  0x00000008
+#define GL_COLOR_BUFFER_BIT4_QCOM                                                  0x00000010
+#define GL_COLOR_BUFFER_BIT5_QCOM                                                  0x00000020
+#define GL_COLOR_BUFFER_BIT6_QCOM                                                  0x00000040
+#define GL_COLOR_BUFFER_BIT7_QCOM                                                  0x00000080
 #define GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI                                         0x8835
 #define GL_COLOR_CLEAR_VALUE                                                       0x0C22
 #define GL_COLOR_COMPONENTS                                                        0x8283
 #define GL_COLOR_ENCODING                                                          0x8296
+#define GL_COLOR_EXT                                                               0x1800
 #define GL_COLOR_FLOAT_APPLE                                                       0x8A0F
 #define GL_COLOR_INDEX                                                             0x1900
 #define GL_COLOR_INDEX12_EXT                                                       0x80E6
@@ -1325,7 +1413,9 @@ typedef unsigned int GLhandleARB;
 #define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG                                        0x8C02
 #define GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG                                        0x9138
 #define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT                                           0x83F1
+#define GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE                                         0x83F2
 #define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT                                           0x83F2
+#define GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE                                         0x83F3
 #define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT                                           0x83F3
 #define GL_COMPRESSED_RGB_ARB                                                      0x84ED
 #define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT                                        0x8E8E
@@ -1427,6 +1517,7 @@ typedef unsigned int GLhandleARB;
 #define GL_COMPUTE_WORK_GROUP_SIZE                                                 0x8267
 #define GL_COMP_BIT_ATI                                                            0x00000002
 #define GL_CONDITION_SATISFIED                                                     0x911C
+#define GL_CONDITION_SATISFIED_APPLE                                               0x911C
 #define GL_CONFORMANT_NV                                                           0x9374
 #define GL_CONIC_CURVE_TO_NV                                                       0x1A
 #define GL_CONJOINT_NV                                                             0x9284
@@ -1474,6 +1565,7 @@ typedef unsigned int GLhandleARB;
 #define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR                                      0x82FC
 #define GL_CONTEXT_RELEASE_BEHAVIOR_KHR                                            0x82FB
 #define GL_CONTEXT_ROBUST_ACCESS                                                   0x90F3
+#define GL_CONTEXT_ROBUST_ACCESS_EXT                                               0x90F3
 #define GL_CONTEXT_ROBUST_ACCESS_KHR                                               0x90F3
 #define GL_CONTINUOUS_AMD                                                          0x9007
 #define GL_CONTRAST_NV                                                             0x92A1
@@ -1538,15 +1630,27 @@ typedef unsigned int GLhandleARB;
 #define GL_COPY_PIXEL_TOKEN                                                        0x0706
 #define GL_COPY_READ_BUFFER                                                        0x8F36
 #define GL_COPY_READ_BUFFER_BINDING                                                0x8F36
+#define GL_COPY_READ_BUFFER_NV                                                     0x8F36
 #define GL_COPY_WRITE_BUFFER                                                       0x8F37
 #define GL_COPY_WRITE_BUFFER_BINDING                                               0x8F37
+#define GL_COPY_WRITE_BUFFER_NV                                                    0x8F37
 #define GL_COUNTER_RANGE_AMD                                                       0x8BC1
 #define GL_COUNTER_TYPE_AMD                                                        0x8BC0
 #define GL_COUNT_DOWN_NV                                                           0x9089
 #define GL_COUNT_UP_NV                                                             0x9088
+#define GL_COVERAGE_ALL_FRAGMENTS_NV                                               0x8ED5
+#define GL_COVERAGE_ATTACHMENT_NV                                                  0x8ED2
+#define GL_COVERAGE_AUTOMATIC_NV                                                   0x8ED7
+#define GL_COVERAGE_BUFFERS_NV                                                     0x8ED3
+#define GL_COVERAGE_BUFFER_BIT_NV                                                  0x00008000
+#define GL_COVERAGE_COMPONENT4_NV                                                  0x8ED1
+#define GL_COVERAGE_COMPONENT_NV                                                   0x8ED0
+#define GL_COVERAGE_EDGE_FRAGMENTS_NV                                              0x8ED6
 #define GL_COVERAGE_MODULATION_NV                                                  0x9332
 #define GL_COVERAGE_MODULATION_TABLE_NV                                            0x9331
 #define GL_COVERAGE_MODULATION_TABLE_SIZE_NV                                       0x9333
+#define GL_COVERAGE_SAMPLES_NV                                                     0x8ED4
+#define GL_CPU_OPTIMIZED_QCOM                                                      0x8FB1
 #define GL_CUBIC_CURVE_TO_NV                                                       0x0C
 #define GL_CUBIC_EXT                                                               0x8334
 #define GL_CUBIC_HP                                                                0x815F
@@ -1577,9 +1681,11 @@ typedef unsigned int GLhandleARB;
 #define GL_CURRENT_NORMAL                                                          0x0B02
 #define GL_CURRENT_OCCLUSION_QUERY_ID_NV                                           0x8865
 #define GL_CURRENT_PALETTE_MATRIX_ARB                                              0x8843
+#define GL_CURRENT_PALETTE_MATRIX_OES                                              0x8843
 #define GL_CURRENT_PROGRAM                                                         0x8B8D
 #define GL_CURRENT_QUERY                                                           0x8865
 #define GL_CURRENT_QUERY_ARB                                                       0x8865
+#define GL_CURRENT_QUERY_EXT                                                       0x8865
 #define GL_CURRENT_RASTER_COLOR                                                    0x0B04
 #define GL_CURRENT_RASTER_DISTANCE                                                 0x0B09
 #define GL_CURRENT_RASTER_INDEX                                                    0x0B05
@@ -1710,11 +1816,20 @@ typedef unsigned int GLhandleARB;
 #define GL_DEPTH32F_STENCIL8_NV                                                    0x8DAC
 #define GL_DEPTH_ATTACHMENT                                                        0x8D00
 #define GL_DEPTH_ATTACHMENT_EXT                                                    0x8D00
+#define GL_DEPTH_ATTACHMENT_OES                                                    0x8D00
 #define GL_DEPTH_BIAS                                                              0x0D1F
 #define GL_DEPTH_BITS                                                              0x0D56
 #define GL_DEPTH_BOUNDS_EXT                                                        0x8891
 #define GL_DEPTH_BOUNDS_TEST_EXT                                                   0x8890
 #define GL_DEPTH_BUFFER_BIT                                                        0x00000100
+#define GL_DEPTH_BUFFER_BIT0_QCOM                                                  0x00000100
+#define GL_DEPTH_BUFFER_BIT1_QCOM                                                  0x00000200
+#define GL_DEPTH_BUFFER_BIT2_QCOM                                                  0x00000400
+#define GL_DEPTH_BUFFER_BIT3_QCOM                                                  0x00000800
+#define GL_DEPTH_BUFFER_BIT4_QCOM                                                  0x00001000
+#define GL_DEPTH_BUFFER_BIT5_QCOM                                                  0x00002000
+#define GL_DEPTH_BUFFER_BIT6_QCOM                                                  0x00004000
+#define GL_DEPTH_BUFFER_BIT7_QCOM                                                  0x00008000
 #define GL_DEPTH_BUFFER_FLOAT_MODE_NV                                              0x8DAF
 #define GL_DEPTH_CLAMP                                                             0x864F
 #define GL_DEPTH_CLAMP_EXT                                                         0x864F
@@ -1739,6 +1854,7 @@ typedef unsigned int GLhandleARB;
 #define GL_DEPTH_COMPONENT32_OES                                                   0x81A7
 #define GL_DEPTH_COMPONENT32_SGIX                                                  0x81A7
 #define GL_DEPTH_COMPONENTS                                                        0x8284
+#define GL_DEPTH_EXT                                                               0x1801
 #define GL_DEPTH_FUNC                                                              0x0B74
 #define GL_DEPTH_RANGE                                                             0x0B70
 #define GL_DEPTH_RENDERABLE                                                        0x8287
@@ -1781,6 +1897,7 @@ typedef unsigned int GLhandleARB;
 #define GL_DISTANCE_ATTENUATION_EXT                                                0x8129
 #define GL_DISTANCE_ATTENUATION_SGIS                                               0x8129
 #define GL_DITHER                                                                  0x0BD0
+#define GL_DMP_PROGRAM_BINARY_DMP                                                  0x9253
 #define GL_DOMAIN                                                                  0x0A02
 #define GL_DONT_CARE                                                               0x1100
 #define GL_DOT2_ADD_ATI                                                            0x896C
@@ -1831,6 +1948,7 @@ typedef unsigned int GLhandleARB;
 #define GL_DOUBLE_VEC3_EXT                                                         0x8FFD
 #define GL_DOUBLE_VEC4                                                             0x8FFE
 #define GL_DOUBLE_VEC4_EXT                                                         0x8FFE
+#define GL_DOWNSAMPLE_SCALES_IMG                                                   0x913E
 #define GL_DRAW_ARRAYS_COMMAND_NV                                                  0x0003
 #define GL_DRAW_ARRAYS_INSTANCED_COMMAND_NV                                        0x0007
 #define GL_DRAW_ARRAYS_STRIP_COMMAND_NV                                            0x0005
@@ -1838,58 +1956,97 @@ typedef unsigned int GLhandleARB;
 #define GL_DRAW_BUFFER0                                                            0x8825
 #define GL_DRAW_BUFFER0_ARB                                                        0x8825
 #define GL_DRAW_BUFFER0_ATI                                                        0x8825
+#define GL_DRAW_BUFFER0_EXT                                                        0x8825
+#define GL_DRAW_BUFFER0_NV                                                         0x8825
 #define GL_DRAW_BUFFER1                                                            0x8826
 #define GL_DRAW_BUFFER10                                                           0x882F
 #define GL_DRAW_BUFFER10_ARB                                                       0x882F
 #define GL_DRAW_BUFFER10_ATI                                                       0x882F
+#define GL_DRAW_BUFFER10_EXT                                                       0x882F
+#define GL_DRAW_BUFFER10_NV                                                        0x882F
 #define GL_DRAW_BUFFER11                                                           0x8830
 #define GL_DRAW_BUFFER11_ARB                                                       0x8830
 #define GL_DRAW_BUFFER11_ATI                                                       0x8830
+#define GL_DRAW_BUFFER11_EXT                                                       0x8830
+#define GL_DRAW_BUFFER11_NV                                                        0x8830
 #define GL_DRAW_BUFFER12                                                           0x8831
 #define GL_DRAW_BUFFER12_ARB                                                       0x8831
 #define GL_DRAW_BUFFER12_ATI                                                       0x8831
+#define GL_DRAW_BUFFER12_EXT                                                       0x8831
+#define GL_DRAW_BUFFER12_NV                                                        0x8831
 #define GL_DRAW_BUFFER13                                                           0x8832
 #define GL_DRAW_BUFFER13_ARB                                                       0x8832
 #define GL_DRAW_BUFFER13_ATI                                                       0x8832
+#define GL_DRAW_BUFFER13_EXT                                                       0x8832
+#define GL_DRAW_BUFFER13_NV                                                        0x8832
 #define GL_DRAW_BUFFER14                                                           0x8833
 #define GL_DRAW_BUFFER14_ARB                                                       0x8833
 #define GL_DRAW_BUFFER14_ATI                                                       0x8833
+#define GL_DRAW_BUFFER14_EXT                                                       0x8833
+#define GL_DRAW_BUFFER14_NV                                                        0x8833
 #define GL_DRAW_BUFFER15                                                           0x8834
 #define GL_DRAW_BUFFER15_ARB                                                       0x8834
 #define GL_DRAW_BUFFER15_ATI                                                       0x8834
+#define GL_DRAW_BUFFER15_EXT                                                       0x8834
+#define GL_DRAW_BUFFER15_NV                                                        0x8834
 #define GL_DRAW_BUFFER1_ARB                                                        0x8826
 #define GL_DRAW_BUFFER1_ATI                                                        0x8826
+#define GL_DRAW_BUFFER1_EXT                                                        0x8826
+#define GL_DRAW_BUFFER1_NV                                                         0x8826
 #define GL_DRAW_BUFFER2                                                            0x8827
 #define GL_DRAW_BUFFER2_ARB                                                        0x8827
 #define GL_DRAW_BUFFER2_ATI                                                        0x8827
+#define GL_DRAW_BUFFER2_EXT                                                        0x8827
+#define GL_DRAW_BUFFER2_NV                                                         0x8827
 #define GL_DRAW_BUFFER3                                                            0x8828
 #define GL_DRAW_BUFFER3_ARB                                                        0x8828
 #define GL_DRAW_BUFFER3_ATI                                                        0x8828
+#define GL_DRAW_BUFFER3_EXT                                                        0x8828
+#define GL_DRAW_BUFFER3_NV                                                         0x8828
 #define GL_DRAW_BUFFER4                                                            0x8829
 #define GL_DRAW_BUFFER4_ARB                                                        0x8829
 #define GL_DRAW_BUFFER4_ATI                                                        0x8829
+#define GL_DRAW_BUFFER4_EXT                                                        0x8829
+#define GL_DRAW_BUFFER4_NV                                                         0x8829
 #define GL_DRAW_BUFFER5                                                            0x882A
 #define GL_DRAW_BUFFER5_ARB                                                        0x882A
 #define GL_DRAW_BUFFER5_ATI                                                        0x882A
+#define GL_DRAW_BUFFER5_EXT                                                        0x882A
+#define GL_DRAW_BUFFER5_NV                                                         0x882A
 #define GL_DRAW_BUFFER6                                                            0x882B
 #define GL_DRAW_BUFFER6_ARB                                                        0x882B
 #define GL_DRAW_BUFFER6_ATI                                                        0x882B
+#define GL_DRAW_BUFFER6_EXT                                                        0x882B
+#define GL_DRAW_BUFFER6_NV                                                         0x882B
 #define GL_DRAW_BUFFER7                                                            0x882C
 #define GL_DRAW_BUFFER7_ARB                                                        0x882C
 #define GL_DRAW_BUFFER7_ATI                                                        0x882C
+#define GL_DRAW_BUFFER7_EXT                                                        0x882C
+#define GL_DRAW_BUFFER7_NV                                                         0x882C
 #define GL_DRAW_BUFFER8                                                            0x882D
 #define GL_DRAW_BUFFER8_ARB                                                        0x882D
 #define GL_DRAW_BUFFER8_ATI                                                        0x882D
+#define GL_DRAW_BUFFER8_EXT                                                        0x882D
+#define GL_DRAW_BUFFER8_NV                                                         0x882D
 #define GL_DRAW_BUFFER9                                                            0x882E
 #define GL_DRAW_BUFFER9_ARB                                                        0x882E
 #define GL_DRAW_BUFFER9_ATI                                                        0x882E
+#define GL_DRAW_BUFFER9_EXT                                                        0x882E
+#define GL_DRAW_BUFFER9_NV                                                         0x882E
+#define GL_DRAW_BUFFER_EXT                                                         0x0C01
 #define GL_DRAW_ELEMENTS_COMMAND_NV                                                0x0002
 #define GL_DRAW_ELEMENTS_INSTANCED_COMMAND_NV                                      0x0006
 #define GL_DRAW_ELEMENTS_STRIP_COMMAND_NV                                          0x0004
 #define GL_DRAW_FRAMEBUFFER                                                        0x8CA9
+#define GL_DRAW_FRAMEBUFFER_ANGLE                                                  0x8CA9
+#define GL_DRAW_FRAMEBUFFER_APPLE                                                  0x8CA9
 #define GL_DRAW_FRAMEBUFFER_BINDING                                                0x8CA6
+#define GL_DRAW_FRAMEBUFFER_BINDING_ANGLE                                          0x8CA6
+#define GL_DRAW_FRAMEBUFFER_BINDING_APPLE                                          0x8CA6
 #define GL_DRAW_FRAMEBUFFER_BINDING_EXT                                            0x8CA6
+#define GL_DRAW_FRAMEBUFFER_BINDING_NV                                             0x8CA6
 #define GL_DRAW_FRAMEBUFFER_EXT                                                    0x8CA9
+#define GL_DRAW_FRAMEBUFFER_NV                                                     0x8CA9
 #define GL_DRAW_INDIRECT_ADDRESS_NV                                                0x8F41
 #define GL_DRAW_INDIRECT_BUFFER                                                    0x8F3F
 #define GL_DRAW_INDIRECT_BUFFER_BINDING                                            0x8F43
@@ -1943,6 +2100,7 @@ typedef unsigned int GLhandleARB;
 #define GL_DYNAMIC_READ                                                            0x88E9
 #define GL_DYNAMIC_READ_ARB                                                        0x88E9
 #define GL_DYNAMIC_STORAGE_BIT                                                     0x0100
+#define GL_DYNAMIC_STORAGE_BIT_EXT                                                 0x0100
 #define GL_EDGEFLAG_BIT_PGI                                                        0x00040000
 #define GL_EDGE_FLAG                                                               0x0B43
 #define GL_EDGE_FLAG_ARRAY                                                         0x8079
@@ -2038,17 +2196,20 @@ typedef unsigned int GLhandleARB;
 #define GL_FENCE_APPLE                                                             0x8A0B
 #define GL_FENCE_CONDITION_NV                                                      0x84F4
 #define GL_FENCE_STATUS_NV                                                         0x84F3
+#define GL_FETCH_PER_SAMPLE_ARM                                                    0x8F65
 #define GL_FIELDS_NV                                                               0x8E27
 #define GL_FIELD_LOWER_NV                                                          0x9023
 #define GL_FIELD_UPPER_NV                                                          0x9022
 #define GL_FILE_NAME_NV                                                            0x9074
 #define GL_FILL                                                                    0x1B02
+#define GL_FILL_NV                                                                 0x1B02
 #define GL_FILL_RECTANGLE_NV                                                       0x933C
 #define GL_FILTER                                                                  0x829A
 #define GL_FILTER4_SGIS                                                            0x8146
 #define GL_FIRST_TO_REST_NV                                                        0x90AF
 #define GL_FIRST_VERTEX_CONVENTION                                                 0x8E4D
 #define GL_FIRST_VERTEX_CONVENTION_EXT                                             0x8E4D
+#define GL_FIRST_VERTEX_CONVENTION_OES                                             0x8E4D
 #define GL_FIXED                                                                   0x140C
 #define GL_FIXED_OES                                                               0x140C
 #define GL_FIXED_ONLY                                                              0x891D
@@ -2074,15 +2235,21 @@ typedef unsigned int GLhandleARB;
 #define GL_FLOAT_MAT2                                                              0x8B5A
 #define GL_FLOAT_MAT2_ARB                                                          0x8B5A
 #define GL_FLOAT_MAT2x3                                                            0x8B65
+#define GL_FLOAT_MAT2x3_NV                                                         0x8B65
 #define GL_FLOAT_MAT2x4                                                            0x8B66
+#define GL_FLOAT_MAT2x4_NV                                                         0x8B66
 #define GL_FLOAT_MAT3                                                              0x8B5B
 #define GL_FLOAT_MAT3_ARB                                                          0x8B5B
 #define GL_FLOAT_MAT3x2                                                            0x8B67
+#define GL_FLOAT_MAT3x2_NV                                                         0x8B67
 #define GL_FLOAT_MAT3x4                                                            0x8B68
+#define GL_FLOAT_MAT3x4_NV                                                         0x8B68
 #define GL_FLOAT_MAT4                                                              0x8B5C
 #define GL_FLOAT_MAT4_ARB                                                          0x8B5C
 #define GL_FLOAT_MAT4x2                                                            0x8B69
+#define GL_FLOAT_MAT4x2_NV                                                         0x8B69
 #define GL_FLOAT_MAT4x3                                                            0x8B6A
+#define GL_FLOAT_MAT4x3_NV                                                         0x8B6A
 #define GL_FLOAT_R16_NV                                                            0x8884
 #define GL_FLOAT_R32_NV                                                            0x8885
 #define GL_FLOAT_RG16_NV                                                           0x8886
@@ -2163,8 +2330,15 @@ typedef unsigned int GLhandleARB;
 #define GL_FORCE_BLUE_TO_ONE_NV                                                    0x8860
 #define GL_FORMAT_SUBSAMPLE_244_244_OML                                            0x8983
 #define GL_FORMAT_SUBSAMPLE_24_24_OML                                              0x8982
+#define GL_FOVEATION_ENABLE_BIT_QCOM                                               0x00000001
+#define GL_FOVEATION_SCALED_BIN_METHOD_BIT_QCOM                                    0x00000002
+#define GL_FOVEATION_SUBSAMPLED_LAYOUT_METHOD_BIT_QCOM                             0x00000004
 #define GL_FRACTIONAL_EVEN                                                         0x8E7C
+#define GL_FRACTIONAL_EVEN_EXT                                                     0x8E7C
+#define GL_FRACTIONAL_EVEN_OES                                                     0x8E7C
 #define GL_FRACTIONAL_ODD                                                          0x8E7B
+#define GL_FRACTIONAL_ODD_EXT                                                      0x8E7B
+#define GL_FRACTIONAL_ODD_OES                                                      0x8E7B
 #define GL_FRAGMENT_ALPHA_MODULATE_IMG                                             0x8C08
 #define GL_FRAGMENT_COLOR_EXT                                                      0x834C
 #define GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX                                       0x8402
@@ -2206,6 +2380,7 @@ typedef unsigned int GLhandleARB;
 #define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB                                     0x8B8B
 #define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES                                     0x8B8B
 #define GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT                                    0x8A52
+#define GL_FRAGMENT_SHADER_FRAMEBUFFER_FETCH_MRT_ARM                               0x8F66
 #define GL_FRAGMENT_SHADER_INVOCATIONS                                             0x82F4
 #define GL_FRAGMENT_SHADER_INVOCATIONS_ARB                                         0x82F4
 #define GL_FRAGMENT_SHADING_RATE_ATTACHMENT_WITH_DEFAULT_FRAMEBUFFER_SUPPORTED_EXT 0x96DF
@@ -2223,6 +2398,7 @@ typedef unsigned int GLhandleARB;
 #define GL_FRAGMENT_TEXTURE                                                        0x829F
 #define GL_FRAMEBUFFER                                                             0x8D40
 #define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE                                       0x8215
+#define GL_FRAMEBUFFER_ATTACHMENT_ANGLE                                            0x93A3
 #define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE                                        0x8214
 #define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING                                   0x8210
 #define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT                               0x8210
@@ -2233,56 +2409,82 @@ typedef unsigned int GLhandleARB;
 #define GL_FRAMEBUFFER_ATTACHMENT_LAYERED                                          0x8DA7
 #define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB                                      0x8DA7
 #define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT                                      0x8DA7
+#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_OES                                      0x8DA7
 #define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME                                      0x8CD1
 #define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT                                  0x8CD1
+#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES                                  0x8CD1
 #define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE                                      0x8CD0
 #define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT                                  0x8CD0
+#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES                                  0x8CD0
 #define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE                                         0x8212
 #define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE                                     0x8217
 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT                           0x8CD4
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES                           0x8CD4
 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR                      0x9632
 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE                            0x8CD3
 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT                        0x8CD3
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES                        0x8CD3
 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER                                    0x8CD4
 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT                                0x8CD4
 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL                                    0x8CD2
 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT                                0x8CD2
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES                                0x8CD2
 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR                            0x9630
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT                              0x8D6C
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SCALE_IMG                                0x913F
 #define GL_FRAMEBUFFER_BARRIER_BIT                                                 0x00000400
 #define GL_FRAMEBUFFER_BARRIER_BIT_EXT                                             0x00000400
 #define GL_FRAMEBUFFER_BINDING                                                     0x8CA6
 #define GL_FRAMEBUFFER_BINDING_EXT                                                 0x8CA6
+#define GL_FRAMEBUFFER_BINDING_OES                                                 0x8CA6
 #define GL_FRAMEBUFFER_BLEND                                                       0x828B
 #define GL_FRAMEBUFFER_COMPLETE                                                    0x8CD5
 #define GL_FRAMEBUFFER_COMPLETE_EXT                                                0x8CD5
+#define GL_FRAMEBUFFER_COMPLETE_OES                                                0x8CD5
 #define GL_FRAMEBUFFER_DEFAULT                                                     0x8218
 #define GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS                              0x9314
 #define GL_FRAMEBUFFER_DEFAULT_HEIGHT                                              0x9311
 #define GL_FRAMEBUFFER_DEFAULT_LAYERS                                              0x9312
+#define GL_FRAMEBUFFER_DEFAULT_LAYERS_EXT                                          0x9312
+#define GL_FRAMEBUFFER_DEFAULT_LAYERS_OES                                          0x9312
 #define GL_FRAMEBUFFER_DEFAULT_SAMPLES                                             0x9313
 #define GL_FRAMEBUFFER_DEFAULT_WIDTH                                               0x9310
 #define GL_FRAMEBUFFER_EXT                                                         0x8D40
+#define GL_FRAMEBUFFER_FETCH_NONCOHERENT_QCOM                                      0x96A2
 #define GL_FRAMEBUFFER_FLIP_X_MESA                                                 0x8BBC
 #define GL_FRAMEBUFFER_FLIP_Y_MESA                                                 0x8BBB
 #define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT                                       0x8CD6
 #define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT                                   0x8CD6
+#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES                                   0x8CD6
 #define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS                                       0x8CD9
 #define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT                                   0x8CD9
+#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES                                   0x8CD9
 #define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER                                      0x8CDB
 #define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT                                  0x8CDB
 #define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT                                      0x8CDA
+#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES                                      0x8CDA
+#define GL_FRAMEBUFFER_INCOMPLETE_FOVEATION_QCOM                                   0x8BFF
+#define GL_FRAMEBUFFER_INCOMPLETE_INSUFFICIENT_SHADER_COMBINED_LOCAL_STORAGE_EXT   0x9652
 #define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB                                  0x8DA9
 #define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT                                  0x8DA9
 #define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS                                    0x8DA8
 #define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB                                0x8DA8
 #define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT                                0x8DA8
+#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_OES                                0x8DA8
 #define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT                               0x8CD7
 #define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT                           0x8CD7
+#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES                           0x8CD7
 #define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE                                      0x8D56
+#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_AND_DOWNSAMPLE_IMG                   0x913C
+#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE                                0x8D56
+#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE                                0x8D56
 #define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT                                  0x8D56
+#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG                                  0x9134
+#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV                                   0x8D56
 #define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER                                      0x8CDC
 #define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT                                  0x8CDC
 #define GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR                                 0x9633
+#define GL_FRAMEBUFFER_OES                                                         0x8D40
 #define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_ARB                           0x9342
 #define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV                            0x9342
 #define GL_FRAMEBUFFER_RENDERABLE                                                  0x8289
@@ -2297,6 +2499,7 @@ typedef unsigned int GLhandleARB;
 #define GL_FRAMEBUFFER_UNDEFINED_OES                                               0x8219
 #define GL_FRAMEBUFFER_UNSUPPORTED                                                 0x8CDD
 #define GL_FRAMEBUFFER_UNSUPPORTED_EXT                                             0x8CDD
+#define GL_FRAMEBUFFER_UNSUPPORTED_OES                                             0x8CDD
 #define GL_FRAMEZOOM_FACTOR_SGIX                                                   0x818C
 #define GL_FRAMEZOOM_SGIX                                                          0x818B
 #define GL_FRAME_NV                                                                0x8E26
@@ -2311,10 +2514,14 @@ typedef unsigned int GLhandleARB;
 #define GL_FULL_SUPPORT                                                            0x82B7
 #define GL_FUNC_ADD                                                                0x8006
 #define GL_FUNC_ADD_EXT                                                            0x8006
+#define GL_FUNC_ADD_OES                                                            0x8006
 #define GL_FUNC_REVERSE_SUBTRACT                                                   0x800B
 #define GL_FUNC_REVERSE_SUBTRACT_EXT                                               0x800B
+#define GL_FUNC_REVERSE_SUBTRACT_OES                                               0x800B
 #define GL_FUNC_SUBTRACT                                                           0x800A
 #define GL_FUNC_SUBTRACT_EXT                                                       0x800A
+#define GL_FUNC_SUBTRACT_OES                                                       0x800A
+#define GL_GCCSO_SHADER_BINARY_FJ                                                  0x9260
 #define GL_GENERATE_MIPMAP                                                         0x8191
 #define GL_GENERATE_MIPMAP_HINT                                                    0x8192
 #define GL_GENERATE_MIPMAP_HINT_SGIS                                               0x8192
@@ -2325,6 +2532,12 @@ typedef unsigned int GLhandleARB;
 #define GL_GEOMETRY_INPUT_TYPE                                                     0x8917
 #define GL_GEOMETRY_INPUT_TYPE_ARB                                                 0x8DDB
 #define GL_GEOMETRY_INPUT_TYPE_EXT                                                 0x8DDB
+#define GL_GEOMETRY_LINKED_INPUT_TYPE_EXT                                          0x8917
+#define GL_GEOMETRY_LINKED_INPUT_TYPE_OES                                          0x8917
+#define GL_GEOMETRY_LINKED_OUTPUT_TYPE_EXT                                         0x8918
+#define GL_GEOMETRY_LINKED_OUTPUT_TYPE_OES                                         0x8918
+#define GL_GEOMETRY_LINKED_VERTICES_OUT_EXT                                        0x8916
+#define GL_GEOMETRY_LINKED_VERTICES_OUT_OES                                        0x8916
 #define GL_GEOMETRY_OUTPUT_TYPE                                                    0x8918
 #define GL_GEOMETRY_OUTPUT_TYPE_ARB                                                0x8DDC
 #define GL_GEOMETRY_OUTPUT_TYPE_EXT                                                0x8DDC
@@ -2333,8 +2546,13 @@ typedef unsigned int GLhandleARB;
 #define GL_GEOMETRY_SHADER                                                         0x8DD9
 #define GL_GEOMETRY_SHADER_ARB                                                     0x8DD9
 #define GL_GEOMETRY_SHADER_BIT                                                     0x00000004
+#define GL_GEOMETRY_SHADER_BIT_EXT                                                 0x00000004
+#define GL_GEOMETRY_SHADER_BIT_OES                                                 0x00000004
 #define GL_GEOMETRY_SHADER_EXT                                                     0x8DD9
 #define GL_GEOMETRY_SHADER_INVOCATIONS                                             0x887F
+#define GL_GEOMETRY_SHADER_INVOCATIONS_EXT                                         0x887F
+#define GL_GEOMETRY_SHADER_INVOCATIONS_OES                                         0x887F
+#define GL_GEOMETRY_SHADER_OES                                                     0x8DD9
 #define GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED                                      0x82F3
 #define GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB                                  0x82F3
 #define GL_GEOMETRY_SUBROUTINE                                                     0x92EB
@@ -2358,11 +2576,13 @@ typedef unsigned int GLhandleARB;
 #define GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV                                         0x40
 #define GL_GLYPH_WIDTH_BIT_NV                                                      0x01
 #define GL_GPU_ADDRESS_NV                                                          0x8F34
+#define GL_GPU_DISJOINT_EXT                                                        0x8FBB
 #define GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX                            0x9049
 #define GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX                                    0x9047
 #define GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX                                      0x904B
 #define GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX                                      0x904A
 #define GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX                              0x9048
+#define GL_GPU_OPTIMIZED_QCOM                                                      0x8FB2
 #define GL_GREATER                                                                 0x0204
 #define GL_GREEN                                                                   0x1904
 #define GL_GREEN_BIAS                                                              0x0D19
@@ -2376,6 +2596,7 @@ typedef unsigned int GLhandleARB;
 #define GL_GREEN_SCALE                                                             0x0D18
 #define GL_GUILTY_CONTEXT_RESET                                                    0x8253
 #define GL_GUILTY_CONTEXT_RESET_ARB                                                0x8253
+#define GL_GUILTY_CONTEXT_RESET_EXT                                                0x8253
 #define GL_GUILTY_CONTEXT_RESET_KHR                                                0x8253
 #define GL_HALF_APPLE                                                              0x140B
 #define GL_HALF_BIAS_NEGATE_NV                                                     0x853B
@@ -2468,6 +2689,7 @@ typedef unsigned int GLhandleARB;
 #define GL_IMAGE_BINDING_NAME_EXT                                                  0x8F3A
 #define GL_IMAGE_BUFFER                                                            0x9051
 #define GL_IMAGE_BUFFER_EXT                                                        0x9051
+#define GL_IMAGE_BUFFER_OES                                                        0x9051
 #define GL_IMAGE_CLASS_10_10_10_2                                                  0x82C3
 #define GL_IMAGE_CLASS_11_11_10                                                    0x82C2
 #define GL_IMAGE_CLASS_1_X_16                                                      0x82BE
@@ -2544,6 +2766,7 @@ typedef unsigned int GLhandleARB;
 #define GL_INFO_LOG_LENGTH                                                         0x8B84
 #define GL_INNOCENT_CONTEXT_RESET                                                  0x8254
 #define GL_INNOCENT_CONTEXT_RESET_ARB                                              0x8254
+#define GL_INNOCENT_CONTEXT_RESET_EXT                                              0x8254
 #define GL_INNOCENT_CONTEXT_RESET_KHR                                              0x8254
 #define GL_INSTRUMENT_BUFFER_POINTER_SGIX                                          0x8180
 #define GL_INSTRUMENT_MEASUREMENTS_SGIX                                            0x8181
@@ -2634,6 +2857,7 @@ typedef unsigned int GLhandleARB;
 #define GL_INT_IMAGE_3D_EXT                                                        0x9059
 #define GL_INT_IMAGE_BUFFER                                                        0x905C
 #define GL_INT_IMAGE_BUFFER_EXT                                                    0x905C
+#define GL_INT_IMAGE_BUFFER_OES                                                    0x905C
 #define GL_INT_IMAGE_CUBE                                                          0x905B
 #define GL_INT_IMAGE_CUBE_EXT                                                      0x905B
 #define GL_INT_IMAGE_CUBE_MAP_ARRAY                                                0x905F
@@ -2649,6 +2873,7 @@ typedef unsigned int GLhandleARB;
 #define GL_INT_SAMPLER_2D_EXT                                                      0x8DCA
 #define GL_INT_SAMPLER_2D_MULTISAMPLE                                              0x9109
 #define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY                                        0x910C
+#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES                                    0x910C
 #define GL_INT_SAMPLER_2D_RECT                                                     0x8DCD
 #define GL_INT_SAMPLER_2D_RECT_EXT                                                 0x8DCD
 #define GL_INT_SAMPLER_3D                                                          0x8DCB
@@ -2656,6 +2881,7 @@ typedef unsigned int GLhandleARB;
 #define GL_INT_SAMPLER_BUFFER                                                      0x8DD0
 #define GL_INT_SAMPLER_BUFFER_AMD                                                  0x9002
 #define GL_INT_SAMPLER_BUFFER_EXT                                                  0x8DD0
+#define GL_INT_SAMPLER_BUFFER_OES                                                  0x8DD0
 #define GL_INT_SAMPLER_CUBE                                                        0x8DCC
 #define GL_INT_SAMPLER_CUBE_EXT                                                    0x8DCC
 #define GL_INT_SAMPLER_CUBE_MAP_ARRAY                                              0x900E
@@ -2672,6 +2898,7 @@ typedef unsigned int GLhandleARB;
 #define GL_INVALID_ENUM                                                            0x0500
 #define GL_INVALID_FRAMEBUFFER_OPERATION                                           0x0506
 #define GL_INVALID_FRAMEBUFFER_OPERATION_EXT                                       0x0506
+#define GL_INVALID_FRAMEBUFFER_OPERATION_OES                                       0x0506
 #define GL_INVALID_INDEX                                                           0xFFFFFFFF
 #define GL_INVALID_OPERATION                                                       0x0502
 #define GL_INVALID_VALUE                                                           0x0501
@@ -2686,7 +2913,11 @@ typedef unsigned int GLhandleARB;
 #define GL_INVERT_RGB_NV                                                           0x92A3
 #define GL_IR_INSTRUMENT1_SGIX                                                     0x817F
 #define GL_ISOLINES                                                                0x8E7A
+#define GL_ISOLINES_EXT                                                            0x8E7A
+#define GL_ISOLINES_OES                                                            0x8E7A
 #define GL_IS_PER_PATCH                                                            0x92E7
+#define GL_IS_PER_PATCH_EXT                                                        0x92E7
+#define GL_IS_PER_PATCH_OES                                                        0x92E7
 #define GL_IS_ROW_MAJOR                                                            0x9300
 #define GL_ITALIC_BIT_NV                                                           0x02
 #define GL_IUI_N3F_V2F_EXT                                                         0x81AF
@@ -2698,9 +2929,12 @@ typedef unsigned int GLhandleARB;
 #define GL_LARGE_CW_ARC_TO_NV                                                      0x18
 #define GL_LAST_VERTEX_CONVENTION                                                  0x8E4E
 #define GL_LAST_VERTEX_CONVENTION_EXT                                              0x8E4E
+#define GL_LAST_VERTEX_CONVENTION_OES                                              0x8E4E
 #define GL_LAST_VIDEO_CAPTURE_STATUS_NV                                            0x9027
 #define GL_LAYER_NV                                                                0x8DAA
 #define GL_LAYER_PROVOKING_VERTEX                                                  0x825E
+#define GL_LAYER_PROVOKING_VERTEX_EXT                                              0x825E
+#define GL_LAYER_PROVOKING_VERTEX_OES                                              0x825E
 #define GL_LAYOUT_COLOR_ATTACHMENT_EXT                                             0x958E
 #define GL_LAYOUT_DEFAULT_INTEL                                                    0
 #define GL_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_EXT                           0x9531
@@ -2759,8 +2993,10 @@ typedef unsigned int GLhandleARB;
 #define GL_LINES_ADJACENCY                                                         0x000A
 #define GL_LINES_ADJACENCY_ARB                                                     0x000A
 #define GL_LINES_ADJACENCY_EXT                                                     0x000A
+#define GL_LINES_ADJACENCY_OES                                                     0x000A
 #define GL_LINE_BIT                                                                0x00000004
 #define GL_LINE_LOOP                                                               0x0002
+#define GL_LINE_NV                                                                 0x1B01
 #define GL_LINE_RESET_TOKEN                                                        0x0707
 #define GL_LINE_SMOOTH                                                             0x0B20
 #define GL_LINE_SMOOTH_HINT                                                        0x0C52
@@ -2771,6 +3007,7 @@ typedef unsigned int GLhandleARB;
 #define GL_LINE_STRIP_ADJACENCY                                                    0x000B
 #define GL_LINE_STRIP_ADJACENCY_ARB                                                0x000B
 #define GL_LINE_STRIP_ADJACENCY_EXT                                                0x000B
+#define GL_LINE_STRIP_ADJACENCY_OES                                                0x000B
 #define GL_LINE_TOKEN                                                              0x0702
 #define GL_LINE_TO_NV                                                              0x04
 #define GL_LINE_WIDTH                                                              0x0B21
@@ -2791,12 +3028,15 @@ typedef unsigned int GLhandleARB;
 #define GL_LOCATION                                                                0x930E
 #define GL_LOCATION_COMPONENT                                                      0x934A
 #define GL_LOCATION_INDEX                                                          0x930F
+#define GL_LOCATION_INDEX_EXT                                                      0x930F
 #define GL_LOGIC_OP                                                                0x0BF1
 #define GL_LOGIC_OP_MODE                                                           0x0BF0
 #define GL_LOSE_CONTEXT_ON_RESET                                                   0x8252
 #define GL_LOSE_CONTEXT_ON_RESET_ARB                                               0x8252
+#define GL_LOSE_CONTEXT_ON_RESET_EXT                                               0x8252
 #define GL_LOSE_CONTEXT_ON_RESET_KHR                                               0x8252
 #define GL_LOWER_LEFT                                                              0x8CA1
+#define GL_LOWER_LEFT_EXT                                                          0x8CA1
 #define GL_LOW_FLOAT                                                               0x8DF0
 #define GL_LOW_INT                                                                 0x8DF3
 #define GL_LO_BIAS_NV                                                              0x8715
@@ -2867,6 +3107,8 @@ typedef unsigned int GLhandleARB;
 #define GL_MAGNITUDE_BIAS_NV                                                       0x8718
 #define GL_MAGNITUDE_SCALE_NV                                                      0x8712
 #define GL_MAJOR_VERSION                                                           0x821B
+#define GL_MALI_PROGRAM_BINARY_ARM                                                 0x8F61
+#define GL_MALI_SHADER_BINARY_ARM                                                  0x8F60
 #define GL_MANUAL_GENERATE_MIPMAP                                                  0x8294
 #define GL_MAP1_BINORMAL_EXT                                                       0x8446
 #define GL_MAP1_COLOR_4                                                            0x0D90
@@ -2929,16 +3171,24 @@ typedef unsigned int GLhandleARB;
 #define GL_MAP_ATTRIB_U_ORDER_NV                                                   0x86C3
 #define GL_MAP_ATTRIB_V_ORDER_NV                                                   0x86C4
 #define GL_MAP_COHERENT_BIT                                                        0x0080
+#define GL_MAP_COHERENT_BIT_EXT                                                    0x0080
 #define GL_MAP_COLOR                                                               0x0D10
 #define GL_MAP_FLUSH_EXPLICIT_BIT                                                  0x0010
+#define GL_MAP_FLUSH_EXPLICIT_BIT_EXT                                              0x0010
 #define GL_MAP_INVALIDATE_BUFFER_BIT                                               0x0008
+#define GL_MAP_INVALIDATE_BUFFER_BIT_EXT                                           0x0008
 #define GL_MAP_INVALIDATE_RANGE_BIT                                                0x0004
+#define GL_MAP_INVALIDATE_RANGE_BIT_EXT                                            0x0004
 #define GL_MAP_PERSISTENT_BIT                                                      0x0040
+#define GL_MAP_PERSISTENT_BIT_EXT                                                  0x0040
 #define GL_MAP_READ_BIT                                                            0x0001
+#define GL_MAP_READ_BIT_EXT                                                        0x0001
 #define GL_MAP_STENCIL                                                             0x0D11
 #define GL_MAP_TESSELLATION_NV                                                     0x86C2
 #define GL_MAP_UNSYNCHRONIZED_BIT                                                  0x0020
+#define GL_MAP_UNSYNCHRONIZED_BIT_EXT                                              0x0020
 #define GL_MAP_WRITE_BIT                                                           0x0002
+#define GL_MAP_WRITE_BIT_EXT                                                       0x0002
 #define GL_MATERIAL_SIDE_HINT_PGI                                                  0x1A22C
 #define GL_MATRIX0_ARB                                                             0x88C0
 #define GL_MATRIX0_NV                                                              0x8630
@@ -2982,12 +3232,19 @@ typedef unsigned int GLhandleARB;
 #define GL_MATRIX9_ARB                                                             0x88C9
 #define GL_MATRIX_EXT                                                              0x87C0
 #define GL_MATRIX_INDEX_ARRAY_ARB                                                  0x8844
+#define GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES                                   0x8B9E
+#define GL_MATRIX_INDEX_ARRAY_OES                                                  0x8844
 #define GL_MATRIX_INDEX_ARRAY_POINTER_ARB                                          0x8849
+#define GL_MATRIX_INDEX_ARRAY_POINTER_OES                                          0x8849
 #define GL_MATRIX_INDEX_ARRAY_SIZE_ARB                                             0x8846
+#define GL_MATRIX_INDEX_ARRAY_SIZE_OES                                             0x8846
 #define GL_MATRIX_INDEX_ARRAY_STRIDE_ARB                                           0x8848
+#define GL_MATRIX_INDEX_ARRAY_STRIDE_OES                                           0x8848
 #define GL_MATRIX_INDEX_ARRAY_TYPE_ARB                                             0x8847
+#define GL_MATRIX_INDEX_ARRAY_TYPE_OES                                             0x8847
 #define GL_MATRIX_MODE                                                             0x0BA0
 #define GL_MATRIX_PALETTE_ARB                                                      0x8840
+#define GL_MATRIX_PALETTE_OES                                                      0x8840
 #define GL_MATRIX_STRIDE                                                           0x92FF
 #define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI                                         0x00200000
 #define GL_MAT_AMBIENT_BIT_PGI                                                     0x00100000
@@ -2999,6 +3256,7 @@ typedef unsigned int GLhandleARB;
 #define GL_MAX                                                                     0x8008
 #define GL_MAX_3D_TEXTURE_SIZE                                                     0x8073
 #define GL_MAX_3D_TEXTURE_SIZE_EXT                                                 0x8073
+#define GL_MAX_3D_TEXTURE_SIZE_OES                                                 0x8073
 #define GL_MAX_4D_TEXTURE_SIZE_SGIS                                                0x8138
 #define GL_MAX_ACTIVE_LIGHTS_SGIX                                                  0x8405
 #define GL_MAX_ARRAY_TEXTURE_LAYERS                                                0x88FF
@@ -3018,6 +3276,7 @@ typedef unsigned int GLhandleARB;
 #define GL_MAX_CLIP_DISTANCES_APPLE                                                0x0D32
 #define GL_MAX_CLIP_DISTANCES_EXT                                                  0x0D32
 #define GL_MAX_CLIP_PLANES                                                         0x0D32
+#define GL_MAX_CLIP_PLANES_IMG                                                     0x0D32
 #define GL_MAX_COARSE_FRAGMENT_SAMPLES_NV                                          0x955F
 #define GL_MAX_COLOR_ATTACHMENTS                                                   0x8CDF
 #define GL_MAX_COLOR_ATTACHMENTS_EXT                                               0x8CDF
@@ -3035,6 +3294,8 @@ typedef unsigned int GLhandleARB;
 #define GL_MAX_COMBINED_DIMENSIONS                                                 0x8282
 #define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS                                0x8A33
 #define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS                                0x8A32
+#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT                            0x8A32
+#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_OES                            0x8A32
 #define GL_MAX_COMBINED_IMAGE_UNIFORMS                                             0x90CF
 #define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS                           0x8F39
 #define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT                       0x8F39
@@ -3045,7 +3306,11 @@ typedef unsigned int GLhandleARB;
 #define GL_MAX_COMBINED_TASK_UNIFORM_COMPONENTS_EXT                                0x8E6F
 #define GL_MAX_COMBINED_TASK_UNIFORM_COMPONENTS_NV                                 0x8E6F
 #define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS                            0x8E1E
+#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT                        0x8E1E
+#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_OES                        0x8E1E
 #define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS                         0x8E1F
+#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT                     0x8E1F
+#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_OES                     0x8E1F
 #define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS                                        0x8B4D
 #define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB                                    0x8B4D
 #define GL_MAX_COMBINED_UNIFORM_BLOCKS                                             0x8A2E
@@ -3072,6 +3337,7 @@ typedef unsigned int GLhandleARB;
 #define GL_MAX_CUBE_MAP_TEXTURE_SIZE                                               0x851C
 #define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB                                           0x851C
 #define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT                                           0x851C
+#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES                                           0x851C
 #define GL_MAX_CULL_DISTANCES                                                      0x82F9
 #define GL_MAX_CULL_DISTANCES_EXT                                                  0x82F9
 #define GL_MAX_DEBUG_GROUP_STACK_DEPTH                                             0x826C
@@ -3095,8 +3361,11 @@ typedef unsigned int GLhandleARB;
 #define GL_MAX_DRAW_BUFFERS                                                        0x8824
 #define GL_MAX_DRAW_BUFFERS_ARB                                                    0x8824
 #define GL_MAX_DRAW_BUFFERS_ATI                                                    0x8824
+#define GL_MAX_DRAW_BUFFERS_EXT                                                    0x8824
+#define GL_MAX_DRAW_BUFFERS_NV                                                     0x8824
 #define GL_MAX_DRAW_MESH_TASKS_COUNT_NV                                            0x953D
 #define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS                                            0x88FC
+#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT                                        0x88FC
 #define GL_MAX_ELEMENTS_INDICES                                                    0x80E9
 #define GL_MAX_ELEMENTS_INDICES_EXT                                                0x80E9
 #define GL_MAX_ELEMENTS_VERTICES                                                   0x80E8
@@ -3126,32 +3395,54 @@ typedef unsigned int GLhandleARB;
 #define GL_MAX_FRAGMENT_UNIFORM_VECTORS                                            0x8DFD
 #define GL_MAX_FRAMEBUFFER_HEIGHT                                                  0x9316
 #define GL_MAX_FRAMEBUFFER_LAYERS                                                  0x9317
+#define GL_MAX_FRAMEBUFFER_LAYERS_EXT                                              0x9317
+#define GL_MAX_FRAMEBUFFER_LAYERS_OES                                              0x9317
 #define GL_MAX_FRAMEBUFFER_SAMPLES                                                 0x9318
 #define GL_MAX_FRAMEBUFFER_WIDTH                                                   0x9315
 #define GL_MAX_FRAMEZOOM_FACTOR_SGIX                                               0x818D
 #define GL_MAX_GENERAL_COMBINERS_NV                                                0x854D
 #define GL_MAX_GEOMETRY_ATOMIC_COUNTERS                                            0x92D5
+#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS_EXT                                        0x92D5
+#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS_OES                                        0x92D5
 #define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS                                     0x92CF
+#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT                                 0x92CF
+#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_OES                                 0x92CF
 #define GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT                                      0x8DE4
 #define GL_MAX_GEOMETRY_IMAGE_UNIFORMS                                             0x90CD
+#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS_EXT                                         0x90CD
+#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS_OES                                         0x90CD
 #define GL_MAX_GEOMETRY_INPUT_COMPONENTS                                           0x9123
+#define GL_MAX_GEOMETRY_INPUT_COMPONENTS_EXT                                       0x9123
+#define GL_MAX_GEOMETRY_INPUT_COMPONENTS_OES                                       0x9123
 #define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS                                          0x9124
+#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT                                      0x9124
+#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_OES                                      0x9124
 #define GL_MAX_GEOMETRY_OUTPUT_VERTICES                                            0x8DE0
 #define GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB                                        0x8DE0
 #define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT                                        0x8DE0
+#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_OES                                        0x8DE0
 #define GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV                                     0x8E5A
 #define GL_MAX_GEOMETRY_SHADER_INVOCATIONS                                         0x8E5A
+#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS_EXT                                     0x8E5A
+#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS_OES                                     0x8E5A
 #define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS                                      0x90D7
+#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT                                  0x90D7
+#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_OES                                  0x90D7
 #define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS                                        0x8C29
 #define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB                                    0x8C29
 #define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT                                    0x8C29
+#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_OES                                    0x8C29
 #define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS                                    0x8DE1
 #define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB                                0x8DE1
 #define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT                                0x8DE1
+#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_OES                                0x8DE1
 #define GL_MAX_GEOMETRY_UNIFORM_BLOCKS                                             0x8A2C
+#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS_EXT                                         0x8A2C
+#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS_OES                                         0x8A2C
 #define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS                                         0x8DDF
 #define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB                                     0x8DDF
 #define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT                                     0x8DDF
+#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_OES                                     0x8DDF
 #define GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB                                     0x8DDD
 #define GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT                                     0x8DDD
 #define GL_MAX_HEIGHT                                                              0x827F
@@ -3203,6 +3494,7 @@ typedef unsigned int GLhandleARB;
 #define GL_MAX_MESH_WORK_GROUP_TOTAL_COUNT_EXT                                     0x9741
 #define GL_MAX_MODELVIEW_STACK_DEPTH                                               0x0D36
 #define GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV                                       0x8E11
+#define GL_MAX_MULTIVIEW_BUFFERS_EXT                                               0x90F2
 #define GL_MAX_NAME_LENGTH                                                         0x92F6
 #define GL_MAX_NAME_STACK_DEPTH                                                    0x0D37
 #define GL_MAX_NUM_ACTIVE_VARIABLES                                                0x92F7
@@ -3213,7 +3505,10 @@ typedef unsigned int GLhandleARB;
 #define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT                         0x87CC
 #define GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT                                0x87CB
 #define GL_MAX_PALETTE_MATRICES_ARB                                                0x8842
+#define GL_MAX_PALETTE_MATRICES_OES                                                0x8842
 #define GL_MAX_PATCH_VERTICES                                                      0x8E7D
+#define GL_MAX_PATCH_VERTICES_EXT                                                  0x8E7D
+#define GL_MAX_PATCH_VERTICES_OES                                                  0x8E7D
 #define GL_MAX_PIXEL_MAP_TABLE                                                     0x0D34
 #define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT                                  0x8337
 #define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI                                  0x87F1
@@ -3270,25 +3565,37 @@ typedef unsigned int GLhandleARB;
 #define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV                                           0x84F8
 #define GL_MAX_RENDERBUFFER_SIZE                                                   0x84E8
 #define GL_MAX_RENDERBUFFER_SIZE_EXT                                               0x84E8
+#define GL_MAX_RENDERBUFFER_SIZE_OES                                               0x84E8
 #define GL_MAX_SAMPLES                                                             0x8D57
+#define GL_MAX_SAMPLES_ANGLE                                                       0x8D57
+#define GL_MAX_SAMPLES_APPLE                                                       0x8D57
 #define GL_MAX_SAMPLES_EXT                                                         0x8D57
+#define GL_MAX_SAMPLES_IMG                                                         0x9135
+#define GL_MAX_SAMPLES_NV                                                          0x8D57
 #define GL_MAX_SAMPLE_MASK_WORDS                                                   0x8E59
 #define GL_MAX_SAMPLE_MASK_WORDS_NV                                                0x8E59
 #define GL_MAX_SERVER_WAIT_TIMEOUT                                                 0x9111
+#define GL_MAX_SERVER_WAIT_TIMEOUT_APPLE                                           0x9111
 #define GL_MAX_SHADER_BUFFER_ADDRESS_NV                                            0x8F35
+#define GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_FAST_SIZE_EXT                         0x9650
+#define GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_SIZE_EXT                              0x9651
 #define GL_MAX_SHADER_COMPILER_THREADS_ARB                                         0x91B0
 #define GL_MAX_SHADER_COMPILER_THREADS_KHR                                         0x91B0
 #define GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT                            0x8F63
 #define GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_SIZE_EXT                                 0x8F67
 #define GL_MAX_SHADER_STORAGE_BLOCK_SIZE                                           0x90DE
 #define GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS                                      0x90DD
+#define GL_MAX_SHADER_SUBSAMPLED_IMAGE_UNITS_QCOM                                  0x8FA1
 #define GL_MAX_SHININESS_NV                                                        0x8504
 #define GL_MAX_SPARSE_3D_TEXTURE_SIZE_AMD                                          0x9199
 #define GL_MAX_SPARSE_3D_TEXTURE_SIZE_ARB                                          0x9199
+#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_EXT                                          0x9199
 #define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS                                         0x919A
 #define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB                                     0x919A
+#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_EXT                                     0x919A
 #define GL_MAX_SPARSE_TEXTURE_SIZE_AMD                                             0x9198
 #define GL_MAX_SPARSE_TEXTURE_SIZE_ARB                                             0x9198
+#define GL_MAX_SPARSE_TEXTURE_SIZE_EXT                                             0x9198
 #define GL_MAX_SPOT_EXPONENT_NV                                                    0x8505
 #define GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV                                     0x9349
 #define GL_MAX_SUBROUTINES                                                         0x8DE7
@@ -3319,29 +3626,72 @@ typedef unsigned int GLhandleARB;
 #define GL_MAX_TASK_WORK_GROUP_SIZE_NV                                             0x953C
 #define GL_MAX_TASK_WORK_GROUP_TOTAL_COUNT_EXT                                     0x9740
 #define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS                                        0x92D3
+#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_EXT                                    0x92D3
+#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_OES                                    0x92D3
 #define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS                                 0x92CD
+#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_EXT                             0x92CD
+#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_OES                             0x92CD
 #define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS                                         0x90CB
+#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_EXT                                     0x90CB
+#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_OES                                     0x90CB
 #define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS                                       0x886C
+#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_EXT                                   0x886C
+#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_OES                                   0x886C
 #define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS                                      0x8E83
+#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_EXT                                  0x8E83
+#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_OES                                  0x8E83
 #define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS                                  0x90D8
+#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_EXT                              0x90D8
+#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_OES                              0x90D8
 #define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS                                    0x8E81
+#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_EXT                                0x8E81
+#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_OES                                0x8E81
 #define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS                                0x8E85
+#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_EXT                            0x8E85
+#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_OES                            0x8E85
 #define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS                                         0x8E89
+#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_EXT                                     0x8E89
+#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_OES                                     0x8E89
 #define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS                                     0x8E7F
+#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_EXT                                 0x8E7F
+#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_OES                                 0x8E7F
 #define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS                                     0x92D4
+#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_EXT                                 0x92D4
+#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_OES                                 0x92D4
 #define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS                              0x92CE
+#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_EXT                          0x92CE
+#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_OES                          0x92CE
 #define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS                                      0x90CC
+#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_EXT                                  0x90CC
+#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_OES                                  0x90CC
 #define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS                                    0x886D
+#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_EXT                                0x886D
+#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_OES                                0x886D
 #define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS                                   0x8E86
+#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_EXT                               0x8E86
+#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_OES                               0x8E86
 #define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS                               0x90D9
+#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_EXT                           0x90D9
+#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_OES                           0x90D9
 #define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS                                 0x8E82
+#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_EXT                             0x8E82
+#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_OES                             0x8E82
 #define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS                                      0x8E8A
+#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_EXT                                  0x8E8A
+#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_OES                                  0x8E8A
 #define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS                                  0x8E80
+#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT                              0x8E80
+#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_OES                              0x8E80
 #define GL_MAX_TESS_GEN_LEVEL                                                      0x8E7E
+#define GL_MAX_TESS_GEN_LEVEL_EXT                                                  0x8E7E
+#define GL_MAX_TESS_GEN_LEVEL_OES                                                  0x8E7E
 #define GL_MAX_TESS_PATCH_COMPONENTS                                               0x8E84
+#define GL_MAX_TESS_PATCH_COMPONENTS_EXT                                           0x8E84
+#define GL_MAX_TESS_PATCH_COMPONENTS_OES                                           0x8E84
 #define GL_MAX_TEXTURE_BUFFER_SIZE                                                 0x8C2B
 #define GL_MAX_TEXTURE_BUFFER_SIZE_ARB                                             0x8C2B
 #define GL_MAX_TEXTURE_BUFFER_SIZE_EXT                                             0x8C2B
+#define GL_MAX_TEXTURE_BUFFER_SIZE_OES                                             0x8C2B
 #define GL_MAX_TEXTURE_COORDS                                                      0x8871
 #define GL_MAX_TEXTURE_COORDS_ARB                                                  0x8871
 #define GL_MAX_TEXTURE_COORDS_NV                                                   0x8871
@@ -3404,9 +3754,12 @@ typedef unsigned int GLhandleARB;
 #define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB                                       0x8B4A
 #define GL_MAX_VERTEX_UNIFORM_VECTORS                                              0x8DFB
 #define GL_MAX_VERTEX_UNITS_ARB                                                    0x86A4
+#define GL_MAX_VERTEX_UNITS_OES                                                    0x86A4
 #define GL_MAX_VERTEX_VARYING_COMPONENTS_ARB                                       0x8DDE
 #define GL_MAX_VERTEX_VARYING_COMPONENTS_EXT                                       0x8DDE
 #define GL_MAX_VIEWPORTS                                                           0x825B
+#define GL_MAX_VIEWPORTS_NV                                                        0x825B
+#define GL_MAX_VIEWPORTS_OES                                                       0x825B
 #define GL_MAX_VIEWPORT_DIMS                                                       0x0D3A
 #define GL_MAX_VIEWS_OVR                                                           0x9631
 #define GL_MAX_WIDTH                                                               0x827E
@@ -3468,6 +3821,7 @@ typedef unsigned int GLhandleARB;
 #define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV                                    0x8E5E
 #define GL_MIN_SAMPLE_SHADING_VALUE                                                0x8C37
 #define GL_MIN_SAMPLE_SHADING_VALUE_ARB                                            0x8C37
+#define GL_MIN_SAMPLE_SHADING_VALUE_OES                                            0x8C37
 #define GL_MIN_SPARSE_LEVEL_AMD                                                    0x919B
 #define GL_MIPMAP                                                                  0x8293
 #define GL_MIRRORED_REPEAT                                                         0x8370
@@ -3532,6 +3886,8 @@ typedef unsigned int GLhandleARB;
 #define GL_MODULATE_COLOR_IMG                                                      0x8C04
 #define GL_MODULATE_SIGNED_ADD_ATI                                                 0x8745
 #define GL_MODULATE_SUBTRACT_ATI                                                   0x8746
+#define GL_MOTION_ESTIMATION_SEARCH_BLOCK_X_QCOM                                   0x8C90
+#define GL_MOTION_ESTIMATION_SEARCH_BLOCK_Y_QCOM                                   0x8C91
 #define GL_MOVE_TO_CONTINUES_NV                                                    0x90B6
 #define GL_MOVE_TO_NV                                                              0x02
 #define GL_MOVE_TO_RESETS_NV                                                       0x90B5
@@ -3550,6 +3906,14 @@ typedef unsigned int GLhandleARB;
 #define GL_MULTISAMPLE_BIT_3DFX                                                    0x20000000
 #define GL_MULTISAMPLE_BIT_ARB                                                     0x20000000
 #define GL_MULTISAMPLE_BIT_EXT                                                     0x20000000
+#define GL_MULTISAMPLE_BUFFER_BIT0_QCOM                                            0x01000000
+#define GL_MULTISAMPLE_BUFFER_BIT1_QCOM                                            0x02000000
+#define GL_MULTISAMPLE_BUFFER_BIT2_QCOM                                            0x04000000
+#define GL_MULTISAMPLE_BUFFER_BIT3_QCOM                                            0x08000000
+#define GL_MULTISAMPLE_BUFFER_BIT4_QCOM                                            0x10000000
+#define GL_MULTISAMPLE_BUFFER_BIT5_QCOM                                            0x20000000
+#define GL_MULTISAMPLE_BUFFER_BIT6_QCOM                                            0x40000000
+#define GL_MULTISAMPLE_BUFFER_BIT7_QCOM                                            0x80000000
 #define GL_MULTISAMPLE_COVERAGE_MODES_NV                                           0x8E12
 #define GL_MULTISAMPLE_EXT                                                         0x809D
 #define GL_MULTISAMPLE_FILTER_HINT_NV                                              0x8534
@@ -3559,6 +3923,7 @@ typedef unsigned int GLhandleARB;
 #define GL_MULTISAMPLE_LINE_WIDTH_RANGE_ARB                                        0x9381
 #define GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT                                   0x932B
 #define GL_MULTISAMPLE_SGIS                                                        0x809D
+#define GL_MULTIVIEW_EXT                                                           0x90F1
 #define GL_MUL_ATI                                                                 0x8964
 #define GL_MVP_MATRIX_EXT                                                          0x87E3
 #define GL_N3F_V3F                                                                 0x2A25
@@ -3578,6 +3943,7 @@ typedef unsigned int GLhandleARB;
 #define GL_NEGATE_BIT_ATI                                                          0x00000004
 #define GL_NEGATIVE_ONE_EXT                                                        0x87DF
 #define GL_NEGATIVE_ONE_TO_ONE                                                     0x935E
+#define GL_NEGATIVE_ONE_TO_ONE_EXT                                                 0x935E
 #define GL_NEGATIVE_W_EXT                                                          0x87DC
 #define GL_NEGATIVE_X_EXT                                                          0x87D9
 #define GL_NEGATIVE_Y_EXT                                                          0x87DA
@@ -3587,6 +3953,7 @@ typedef unsigned int GLhandleARB;
 #define GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV                                     0x9025
 #define GL_NICEST                                                                  0x1102
 #define GL_NONE                                                                    0
+#define GL_NONE_OES                                                                0
 #define GL_NOOP                                                                    0x1505
 #define GL_NOP_COMMAND_NV                                                          0x0001
 #define GL_NOR                                                                     0x1508
@@ -3613,16 +3980,19 @@ typedef unsigned int GLhandleARB;
 #define GL_NORMAL_MAP_ARB                                                          0x8511
 #define GL_NORMAL_MAP_EXT                                                          0x8511
 #define GL_NORMAL_MAP_NV                                                           0x8511
+#define GL_NORMAL_MAP_OES                                                          0x8511
 #define GL_NOTEQUAL                                                                0x0205
 #define GL_NO_ERROR                                                                0
 #define GL_NO_RESET_NOTIFICATION                                                   0x8261
 #define GL_NO_RESET_NOTIFICATION_ARB                                               0x8261
+#define GL_NO_RESET_NOTIFICATION_EXT                                               0x8261
 #define GL_NO_RESET_NOTIFICATION_KHR                                               0x8261
 #define GL_NUM_ACTIVE_VARIABLES                                                    0x9304
 #define GL_NUM_COMPATIBLE_SUBROUTINES                                              0x8E4A
 #define GL_NUM_COMPRESSED_TEXTURE_FORMATS                                          0x86A2
 #define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB                                      0x86A2
 #define GL_NUM_DEVICE_UUIDS_EXT                                                    0x9596
+#define GL_NUM_DOWNSAMPLE_SCALES_IMG                                               0x913D
 #define GL_NUM_EXTENSIONS                                                          0x821D
 #define GL_NUM_FILL_STREAMS_NV                                                     0x8E29
 #define GL_NUM_FRAGMENT_CONSTANTS_ATI                                              0x896F
@@ -3634,15 +4004,19 @@ typedef unsigned int GLhandleARB;
 #define GL_NUM_LOOPBACK_COMPONENTS_ATI                                             0x8974
 #define GL_NUM_PASSES_ATI                                                          0x8970
 #define GL_NUM_PROGRAM_BINARY_FORMATS                                              0x87FE
+#define GL_NUM_PROGRAM_BINARY_FORMATS_OES                                          0x87FE
 #define GL_NUM_SAMPLE_COUNTS                                                       0x9380
 #define GL_NUM_SHADER_BINARY_FORMATS                                               0x8DF9
 #define GL_NUM_SHADING_LANGUAGE_VERSIONS                                           0x82E9
 #define GL_NUM_SPARSE_LEVELS_ARB                                                   0x91AA
+#define GL_NUM_SPARSE_LEVELS_EXT                                                   0x91AA
 #define GL_NUM_SPIR_V_EXTENSIONS                                                   0x9554
 #define GL_NUM_SUPPORTED_MULTISAMPLE_MODES_AMD                                     0x91B6
+#define GL_NUM_SURFACE_COMPRESSION_FIXED_RATES_EXT                                 0x8F6E
 #define GL_NUM_TILING_TYPES_EXT                                                    0x9582
 #define GL_NUM_VIDEO_CAPTURE_STREAMS_NV                                            0x9024
 #define GL_NUM_VIRTUAL_PAGE_SIZES_ARB                                              0x91A8
+#define GL_NUM_VIRTUAL_PAGE_SIZES_EXT                                              0x91A8
 #define GL_NUM_WINDOW_RECTANGLES_EXT                                               0x8F15
 #define GL_OBJECT_ACTIVE_ATTRIBUTES_ARB                                            0x8B89
 #define GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB                                  0x8B8A
@@ -3665,6 +4039,7 @@ typedef unsigned int GLhandleARB;
 #define GL_OBJECT_SHADER_SOURCE_LENGTH_ARB                                         0x8B88
 #define GL_OBJECT_SUBTYPE_ARB                                                      0x8B4F
 #define GL_OBJECT_TYPE                                                             0x9112
+#define GL_OBJECT_TYPE_APPLE                                                       0x9112
 #define GL_OBJECT_TYPE_ARB                                                         0x8B4E
 #define GL_OBJECT_VALIDATE_STATUS_ARB                                              0x8B83
 #define GL_OCCLUSION_QUERY_EVENT_MASK_AMD                                          0x874F
@@ -3697,7 +4072,9 @@ typedef unsigned int GLhandleARB;
 #define GL_ONE_MINUS_DST_ALPHA                                                     0x0305
 #define GL_ONE_MINUS_DST_COLOR                                                     0x0307
 #define GL_ONE_MINUS_SRC1_ALPHA                                                    0x88FB
+#define GL_ONE_MINUS_SRC1_ALPHA_EXT                                                0x88FB
 #define GL_ONE_MINUS_SRC1_COLOR                                                    0x88FA
+#define GL_ONE_MINUS_SRC1_COLOR_EXT                                                0x88FA
 #define GL_ONE_MINUS_SRC_ALPHA                                                     0x0303
 #define GL_ONE_MINUS_SRC_COLOR                                                     0x0301
 #define GL_OPERAND0_ALPHA                                                          0x8598
@@ -3802,6 +4179,7 @@ typedef unsigned int GLhandleARB;
 #define GL_PACK_LSB_FIRST                                                          0x0D01
 #define GL_PACK_RESAMPLE_OML                                                       0x8984
 #define GL_PACK_RESAMPLE_SGIX                                                      0x842E
+#define GL_PACK_REVERSE_ROW_ORDER_ANGLE                                            0x93A4
 #define GL_PACK_ROW_BYTES_APPLE                                                    0x8A15
 #define GL_PACK_ROW_LENGTH                                                         0x0D02
 #define GL_PACK_ROW_LENGTH_NV                                                      0x0D02
@@ -3833,9 +4211,13 @@ typedef unsigned int GLhandleARB;
 #define GL_PASS_THROUGH_NV                                                         0x86E6
 #define GL_PASS_THROUGH_TOKEN                                                      0x0700
 #define GL_PATCHES                                                                 0x000E
+#define GL_PATCHES_EXT                                                             0x000E
+#define GL_PATCHES_OES                                                             0x000E
 #define GL_PATCH_DEFAULT_INNER_LEVEL                                               0x8E73
 #define GL_PATCH_DEFAULT_OUTER_LEVEL                                               0x8E74
 #define GL_PATCH_VERTICES                                                          0x8E72
+#define GL_PATCH_VERTICES_EXT                                                      0x8E72
+#define GL_PATCH_VERTICES_OES                                                      0x8E72
 #define GL_PATH_CLIENT_LENGTH_NV                                                   0x907F
 #define GL_PATH_COMMAND_COUNT_NV                                                   0x909D
 #define GL_PATH_COMPUTED_LENGTH_NV                                                 0x90A0
@@ -3885,6 +4267,7 @@ typedef unsigned int GLhandleARB;
 #define GL_PATH_TRANSPOSE_MODELVIEW_MATRIX_NV                                      0x84E3
 #define GL_PATH_TRANSPOSE_PROJECTION_MATRIX_NV                                     0x84E4
 #define GL_PERCENTAGE_AMD                                                          0x8BC3
+#define GL_PERFMON_GLOBAL_MODE_QCOM                                                0x8FA0
 #define GL_PERFMON_RESULT_AMD                                                      0x8BC6
 #define GL_PERFMON_RESULT_AVAILABLE_AMD                                            0x8BC4
 #define GL_PERFMON_RESULT_SIZE_AMD                                                 0x8BC5
@@ -4005,7 +4388,13 @@ typedef unsigned int GLhandleARB;
 #define GL_POINT_FADE_THRESHOLD_SIZE_ARB                                           0x8128
 #define GL_POINT_FADE_THRESHOLD_SIZE_EXT                                           0x8128
 #define GL_POINT_FADE_THRESHOLD_SIZE_SGIS                                          0x8128
+#define GL_POINT_NV                                                                0x1B00
 #define GL_POINT_SIZE                                                              0x0B11
+#define GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES                                     0x8B9F
+#define GL_POINT_SIZE_ARRAY_OES                                                    0x8B9C
+#define GL_POINT_SIZE_ARRAY_POINTER_OES                                            0x898C
+#define GL_POINT_SIZE_ARRAY_STRIDE_OES                                             0x898B
+#define GL_POINT_SIZE_ARRAY_TYPE_OES                                               0x898A
 #define GL_POINT_SIZE_GRANULARITY                                                  0x0B13
 #define GL_POINT_SIZE_MAX                                                          0x8127
 #define GL_POINT_SIZE_MAX_ARB                                                      0x8127
@@ -4028,6 +4417,7 @@ typedef unsigned int GLhandleARB;
 #define GL_POLYGON                                                                 0x0009
 #define GL_POLYGON_BIT                                                             0x00000008
 #define GL_POLYGON_MODE                                                            0x0B40
+#define GL_POLYGON_MODE_NV                                                         0x0B40
 #define GL_POLYGON_OFFSET_BIAS_EXT                                                 0x8039
 #define GL_POLYGON_OFFSET_CLAMP                                                    0x8E1B
 #define GL_POLYGON_OFFSET_CLAMP_EXT                                                0x8E1B
@@ -4037,7 +4427,9 @@ typedef unsigned int GLhandleARB;
 #define GL_POLYGON_OFFSET_FACTOR_EXT                                               0x8038
 #define GL_POLYGON_OFFSET_FILL                                                     0x8037
 #define GL_POLYGON_OFFSET_LINE                                                     0x2A02
+#define GL_POLYGON_OFFSET_LINE_NV                                                  0x2A02
 #define GL_POLYGON_OFFSET_POINT                                                    0x2A01
+#define GL_POLYGON_OFFSET_POINT_NV                                                 0x2A01
 #define GL_POLYGON_OFFSET_UNITS                                                    0x2A00
 #define GL_POLYGON_SMOOTH                                                          0x0B41
 #define GL_POLYGON_SMOOTH_HINT                                                     0x0C53
@@ -4101,14 +4493,18 @@ typedef unsigned int GLhandleARB;
 #define GL_PRIMITIVES_GENERATED                                                    0x8C87
 #define GL_PRIMITIVES_GENERATED_EXT                                                0x8C87
 #define GL_PRIMITIVES_GENERATED_NV                                                 0x8C87
+#define GL_PRIMITIVES_GENERATED_OES                                                0x8C87
 #define GL_PRIMITIVES_SUBMITTED                                                    0x82EF
 #define GL_PRIMITIVES_SUBMITTED_ARB                                                0x82EF
 #define GL_PRIMITIVE_BOUNDING_BOX                                                  0x92BE
 #define GL_PRIMITIVE_BOUNDING_BOX_ARB                                              0x92BE
+#define GL_PRIMITIVE_BOUNDING_BOX_EXT                                              0x92BE
+#define GL_PRIMITIVE_BOUNDING_BOX_OES                                              0x92BE
 #define GL_PRIMITIVE_ID_NV                                                         0x8C7C
 #define GL_PRIMITIVE_RESTART                                                       0x8F9D
 #define GL_PRIMITIVE_RESTART_FIXED_INDEX                                           0x8D69
 #define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED                                 0x8221
+#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED_OES                             0x8221
 #define GL_PRIMITIVE_RESTART_INDEX                                                 0x8F9E
 #define GL_PRIMITIVE_RESTART_INDEX_NV                                              0x8559
 #define GL_PRIMITIVE_RESTART_NV                                                    0x8558
@@ -4121,9 +4517,13 @@ typedef unsigned int GLhandleARB;
 #define GL_PROGRAM_ALU_INSTRUCTIONS_ARB                                            0x8805
 #define GL_PROGRAM_ATTRIBS_ARB                                                     0x88AC
 #define GL_PROGRAM_ATTRIB_COMPONENTS_NV                                            0x8906
+#define GL_PROGRAM_BINARY_ANGLE                                                    0x93A6
 #define GL_PROGRAM_BINARY_FORMATS                                                  0x87FF
+#define GL_PROGRAM_BINARY_FORMATS_OES                                              0x87FF
 #define GL_PROGRAM_BINARY_FORMAT_MESA                                              0x875F
+#define GL_PROGRAM_BINARY_HUAWEI                                                   0x9771
 #define GL_PROGRAM_BINARY_LENGTH                                                   0x8741
+#define GL_PROGRAM_BINARY_LENGTH_OES                                               0x8741
 #define GL_PROGRAM_BINARY_RETRIEVABLE_HINT                                         0x8257
 #define GL_PROGRAM_BINDING_ARB                                                     0x8677
 #define GL_PROGRAM_ERROR_POSITION_ARB                                              0x864B
@@ -4217,8 +4617,10 @@ typedef unsigned int GLhandleARB;
 #define GL_QUADRATIC_ATTENUATION                                                   0x1209
 #define GL_QUADRATIC_CURVE_TO_NV                                                   0x0A
 #define GL_QUADS                                                                   0x0007
+#define GL_QUADS_EXT                                                               0x0007
 #define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION                                0x8E4C
 #define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT                            0x8E4C
+#define GL_QUADS_OES                                                               0x0007
 #define GL_QUAD_ALPHA4_SGIS                                                        0x811E
 #define GL_QUAD_ALPHA8_SGIS                                                        0x811F
 #define GL_QUAD_INTENSITY4_SGIS                                                    0x8122
@@ -4244,6 +4646,7 @@ typedef unsigned int GLhandleARB;
 #define GL_QUERY_BY_REGION_WAIT_NV                                                 0x8E15
 #define GL_QUERY_COUNTER_BITS                                                      0x8864
 #define GL_QUERY_COUNTER_BITS_ARB                                                  0x8864
+#define GL_QUERY_COUNTER_BITS_EXT                                                  0x8864
 #define GL_QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD                                   0x00000008
 #define GL_QUERY_DEPTH_FAIL_EVENT_BIT_AMD                                          0x00000002
 #define GL_QUERY_DEPTH_PASS_EVENT_BIT_AMD                                          0x00000001
@@ -4263,6 +4666,8 @@ typedef unsigned int GLhandleARB;
 #define GL_QUERY_RESULT_ARB                                                        0x8866
 #define GL_QUERY_RESULT_AVAILABLE                                                  0x8867
 #define GL_QUERY_RESULT_AVAILABLE_ARB                                              0x8867
+#define GL_QUERY_RESULT_AVAILABLE_EXT                                              0x8867
+#define GL_QUERY_RESULT_EXT                                                        0x8866
 #define GL_QUERY_RESULT_NO_WAIT                                                    0x9194
 #define GL_QUERY_RESULT_NO_WAIT_AMD                                                0x9194
 #define GL_QUERY_STENCIL_FAIL_EVENT_BIT_AMD                                        0x00000004
@@ -4308,10 +4713,18 @@ typedef unsigned int GLhandleARB;
 #define GL_RASTER_POSITION_UNCLIPPED_IBM                                           0x19262
 #define GL_RASTER_SAMPLES_EXT                                                      0x9328
 #define GL_READ_BUFFER                                                             0x0C02
+#define GL_READ_BUFFER_EXT                                                         0x0C02
+#define GL_READ_BUFFER_NV                                                          0x0C02
 #define GL_READ_FRAMEBUFFER                                                        0x8CA8
+#define GL_READ_FRAMEBUFFER_ANGLE                                                  0x8CA8
+#define GL_READ_FRAMEBUFFER_APPLE                                                  0x8CA8
 #define GL_READ_FRAMEBUFFER_BINDING                                                0x8CAA
+#define GL_READ_FRAMEBUFFER_BINDING_ANGLE                                          0x8CAA
+#define GL_READ_FRAMEBUFFER_BINDING_APPLE                                          0x8CAA
 #define GL_READ_FRAMEBUFFER_BINDING_EXT                                            0x8CAA
+#define GL_READ_FRAMEBUFFER_BINDING_NV                                             0x8CAA
 #define GL_READ_FRAMEBUFFER_EXT                                                    0x8CA8
+#define GL_READ_FRAMEBUFFER_NV                                                     0x8CA8
 #define GL_READ_ONLY                                                               0x88B8
 #define GL_READ_ONLY_ARB                                                           0x88B8
 #define GL_READ_PIXELS                                                             0x828C
@@ -4342,12 +4755,18 @@ typedef unsigned int GLhandleARB;
 #define GL_REFERENCED_BY_COMPUTE_SHADER                                            0x930B
 #define GL_REFERENCED_BY_FRAGMENT_SHADER                                           0x930A
 #define GL_REFERENCED_BY_GEOMETRY_SHADER                                           0x9309
+#define GL_REFERENCED_BY_GEOMETRY_SHADER_EXT                                       0x9309
+#define GL_REFERENCED_BY_GEOMETRY_SHADER_OES                                       0x9309
 #define GL_REFERENCED_BY_MESH_SHADER_EXT                                           0x95A0
 #define GL_REFERENCED_BY_MESH_SHADER_NV                                            0x95A0
 #define GL_REFERENCED_BY_TASK_SHADER_EXT                                           0x95A1
 #define GL_REFERENCED_BY_TASK_SHADER_NV                                            0x95A1
 #define GL_REFERENCED_BY_TESS_CONTROL_SHADER                                       0x9307
+#define GL_REFERENCED_BY_TESS_CONTROL_SHADER_EXT                                   0x9307
+#define GL_REFERENCED_BY_TESS_CONTROL_SHADER_OES                                   0x9307
 #define GL_REFERENCED_BY_TESS_EVALUATION_SHADER                                    0x9308
+#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER_EXT                                0x9308
+#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER_OES                                0x9308
 #define GL_REFERENCED_BY_VERTEX_SHADER                                             0x9306
 #define GL_REFERENCE_PLANE_EQUATION_SGIX                                           0x817E
 #define GL_REFERENCE_PLANE_SGIX                                                    0x817D
@@ -4355,6 +4774,7 @@ typedef unsigned int GLhandleARB;
 #define GL_REFLECTION_MAP_ARB                                                      0x8512
 #define GL_REFLECTION_MAP_EXT                                                      0x8512
 #define GL_REFLECTION_MAP_NV                                                       0x8512
+#define GL_REFLECTION_MAP_OES                                                      0x8512
 #define GL_REGISTER_COMBINERS_NV                                                   0x8522
 #define GL_REG_0_ATI                                                               0x8921
 #define GL_REG_10_ATI                                                              0x892B
@@ -4412,32 +4832,48 @@ typedef unsigned int GLhandleARB;
 #define GL_RENDERBUFFER                                                            0x8D41
 #define GL_RENDERBUFFER_ALPHA_SIZE                                                 0x8D53
 #define GL_RENDERBUFFER_ALPHA_SIZE_EXT                                             0x8D53
+#define GL_RENDERBUFFER_ALPHA_SIZE_OES                                             0x8D53
 #define GL_RENDERBUFFER_BINDING                                                    0x8CA7
 #define GL_RENDERBUFFER_BINDING_EXT                                                0x8CA7
+#define GL_RENDERBUFFER_BINDING_OES                                                0x8CA7
 #define GL_RENDERBUFFER_BLUE_SIZE                                                  0x8D52
 #define GL_RENDERBUFFER_BLUE_SIZE_EXT                                              0x8D52
+#define GL_RENDERBUFFER_BLUE_SIZE_OES                                              0x8D52
 #define GL_RENDERBUFFER_COLOR_SAMPLES_NV                                           0x8E10
 #define GL_RENDERBUFFER_COVERAGE_SAMPLES_NV                                        0x8CAB
 #define GL_RENDERBUFFER_DEPTH_SIZE                                                 0x8D54
 #define GL_RENDERBUFFER_DEPTH_SIZE_EXT                                             0x8D54
+#define GL_RENDERBUFFER_DEPTH_SIZE_OES                                             0x8D54
 #define GL_RENDERBUFFER_EXT                                                        0x8D41
 #define GL_RENDERBUFFER_FREE_MEMORY_ATI                                            0x87FD
 #define GL_RENDERBUFFER_GREEN_SIZE                                                 0x8D51
 #define GL_RENDERBUFFER_GREEN_SIZE_EXT                                             0x8D51
+#define GL_RENDERBUFFER_GREEN_SIZE_OES                                             0x8D51
 #define GL_RENDERBUFFER_HEIGHT                                                     0x8D43
 #define GL_RENDERBUFFER_HEIGHT_EXT                                                 0x8D43
+#define GL_RENDERBUFFER_HEIGHT_OES                                                 0x8D43
 #define GL_RENDERBUFFER_INTERNAL_FORMAT                                            0x8D44
 #define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT                                        0x8D44
+#define GL_RENDERBUFFER_INTERNAL_FORMAT_OES                                        0x8D44
+#define GL_RENDERBUFFER_OES                                                        0x8D41
 #define GL_RENDERBUFFER_RED_SIZE                                                   0x8D50
 #define GL_RENDERBUFFER_RED_SIZE_EXT                                               0x8D50
+#define GL_RENDERBUFFER_RED_SIZE_OES                                               0x8D50
 #define GL_RENDERBUFFER_SAMPLES                                                    0x8CAB
+#define GL_RENDERBUFFER_SAMPLES_ANGLE                                              0x8CAB
+#define GL_RENDERBUFFER_SAMPLES_APPLE                                              0x8CAB
 #define GL_RENDERBUFFER_SAMPLES_EXT                                                0x8CAB
+#define GL_RENDERBUFFER_SAMPLES_IMG                                                0x9133
+#define GL_RENDERBUFFER_SAMPLES_NV                                                 0x8CAB
 #define GL_RENDERBUFFER_STENCIL_SIZE                                               0x8D55
 #define GL_RENDERBUFFER_STENCIL_SIZE_EXT                                           0x8D55
+#define GL_RENDERBUFFER_STENCIL_SIZE_OES                                           0x8D55
 #define GL_RENDERBUFFER_STORAGE_SAMPLES_AMD                                        0x91B2
 #define GL_RENDERBUFFER_WIDTH                                                      0x8D42
 #define GL_RENDERBUFFER_WIDTH_EXT                                                  0x8D42
+#define GL_RENDERBUFFER_WIDTH_OES                                                  0x8D42
 #define GL_RENDERER                                                                0x1F01
+#define GL_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM                                       0x8FB3
 #define GL_RENDER_GPU_MASK_NV                                                      0x9558
 #define GL_RENDER_MODE                                                             0x0C40
 #define GL_REPEAT                                                                  0x2901
@@ -4466,6 +4902,7 @@ typedef unsigned int GLhandleARB;
 #define GL_RESCALE_NORMAL_EXT                                                      0x803A
 #define GL_RESET_NOTIFICATION_STRATEGY                                             0x8256
 #define GL_RESET_NOTIFICATION_STRATEGY_ARB                                         0x8256
+#define GL_RESET_NOTIFICATION_STRATEGY_EXT                                         0x8256
 #define GL_RESET_NOTIFICATION_STRATEGY_KHR                                         0x8256
 #define GL_RESTART_PATH_NV                                                         0xF0
 #define GL_RESTART_SUN                                                             0x0001
@@ -4629,6 +5066,7 @@ typedef unsigned int GLhandleARB;
 #define GL_SAMPLER_2D_ARRAY_SHADOW_NV                                              0x8DC4
 #define GL_SAMPLER_2D_MULTISAMPLE                                                  0x9108
 #define GL_SAMPLER_2D_MULTISAMPLE_ARRAY                                            0x910B
+#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY_OES                                        0x910B
 #define GL_SAMPLER_2D_RECT                                                         0x8B63
 #define GL_SAMPLER_2D_RECT_ARB                                                     0x8B63
 #define GL_SAMPLER_2D_RECT_SHADOW                                                  0x8B64
@@ -4638,10 +5076,12 @@ typedef unsigned int GLhandleARB;
 #define GL_SAMPLER_2D_SHADOW_EXT                                                   0x8B62
 #define GL_SAMPLER_3D                                                              0x8B5F
 #define GL_SAMPLER_3D_ARB                                                          0x8B5F
+#define GL_SAMPLER_3D_OES                                                          0x8B5F
 #define GL_SAMPLER_BINDING                                                         0x8919
 #define GL_SAMPLER_BUFFER                                                          0x8DC2
 #define GL_SAMPLER_BUFFER_AMD                                                      0x9001
 #define GL_SAMPLER_BUFFER_EXT                                                      0x8DC2
+#define GL_SAMPLER_BUFFER_OES                                                      0x8DC2
 #define GL_SAMPLER_CUBE                                                            0x8B60
 #define GL_SAMPLER_CUBE_ARB                                                        0x8B60
 #define GL_SAMPLER_CUBE_MAP_ARRAY                                                  0x900C
@@ -4656,6 +5096,7 @@ typedef unsigned int GLhandleARB;
 #define GL_SAMPLER_CUBE_SHADOW_EXT                                                 0x8DC5
 #define GL_SAMPLER_CUBE_SHADOW_NV                                                  0x8DC5
 #define GL_SAMPLER_EXTERNAL_2D_Y2Y_EXT                                             0x8BE7
+#define GL_SAMPLER_EXTERNAL_OES                                                    0x8D66
 #define GL_SAMPLER_KHR                                                             0x82E6
 #define GL_SAMPLER_OBJECT_AMD                                                      0x9155
 #define GL_SAMPLER_RENDERBUFFER_NV                                                 0x8E56
@@ -4709,6 +5150,7 @@ typedef unsigned int GLhandleARB;
 #define GL_SAMPLE_POSITION_NV                                                      0x8E50
 #define GL_SAMPLE_SHADING                                                          0x8C36
 #define GL_SAMPLE_SHADING_ARB                                                      0x8C36
+#define GL_SAMPLE_SHADING_OES                                                      0x8C36
 #define GL_SATURATE_BIT_ATI                                                        0x00000040
 #define GL_SCALAR_EXT                                                              0x87BE
 #define GL_SCALEBIAS_HINT_SGIX                                                     0x8322
@@ -4763,11 +5205,21 @@ typedef unsigned int GLhandleARB;
 #define GL_SGX_BINARY_IMG                                                          0x8C0A
 #define GL_SGX_PROGRAM_BINARY_IMG                                                  0x9130
 #define GL_SHADER                                                                  0x82E1
+#define GL_SHADER_BINARY_DMP                                                       0x9250
 #define GL_SHADER_BINARY_FORMATS                                                   0x8DF8
 #define GL_SHADER_BINARY_FORMAT_SPIR_V                                             0x9551
 #define GL_SHADER_BINARY_FORMAT_SPIR_V_ARB                                         0x9551
+#define GL_SHADER_BINARY_HUAWEI                                                    0x9770
+#define GL_SHADER_BINARY_VIV                                                       0x8FC4
 #define GL_SHADER_COMPILER                                                         0x8DFA
 #define GL_SHADER_CONSISTENT_NV                                                    0x86DD
+#define GL_SHADER_CORE_ACTIVE_COUNT_ARM                                            0x96F1
+#define GL_SHADER_CORE_COUNT_ARM                                                   0x96F0
+#define GL_SHADER_CORE_FMA_RATE_ARM                                                0x96F6
+#define GL_SHADER_CORE_MAX_WARP_COUNT_ARM                                          0x96F3
+#define GL_SHADER_CORE_PIXEL_RATE_ARM                                              0x96F4
+#define GL_SHADER_CORE_PRESENT_MASK_ARM                                            0x96F2
+#define GL_SHADER_CORE_TEXEL_RATE_ARM                                              0x96F5
 #define GL_SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV                                     0x00000010
 #define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT                                         0x00000020
 #define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT                                     0x00000020
@@ -4794,7 +5246,9 @@ typedef unsigned int GLhandleARB;
 #define GL_SHADING_LANGUAGE_VERSION_ARB                                            0x8B8C
 #define GL_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV                                0x956F
 #define GL_SHADING_RATE_1X1_PIXELS_EXT                                             0x96A6
+#define GL_SHADING_RATE_1X1_PIXELS_QCOM                                            0x96A6
 #define GL_SHADING_RATE_1X2_PIXELS_EXT                                             0x96A7
+#define GL_SHADING_RATE_1X2_PIXELS_QCOM                                            0x96A7
 #define GL_SHADING_RATE_1X4_PIXELS_EXT                                             0x96AA
 #define GL_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV                             0x9566
 #define GL_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV                             0x9567
@@ -4804,12 +5258,16 @@ typedef unsigned int GLhandleARB;
 #define GL_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV                             0x956B
 #define GL_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV                                  0x9565
 #define GL_SHADING_RATE_2X1_PIXELS_EXT                                             0x96A8
+#define GL_SHADING_RATE_2X1_PIXELS_QCOM                                            0x96A8
 #define GL_SHADING_RATE_2X2_PIXELS_EXT                                             0x96A9
+#define GL_SHADING_RATE_2X2_PIXELS_QCOM                                            0x96A9
 #define GL_SHADING_RATE_2X4_PIXELS_EXT                                             0x96AD
 #define GL_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV                                 0x956C
 #define GL_SHADING_RATE_4X1_PIXELS_EXT                                             0x96AB
 #define GL_SHADING_RATE_4X2_PIXELS_EXT                                             0x96AC
+#define GL_SHADING_RATE_4X2_PIXELS_QCOM                                            0x96AC
 #define GL_SHADING_RATE_4X4_PIXELS_EXT                                             0x96AE
+#define GL_SHADING_RATE_4X4_PIXELS_QCOM                                            0x96AE
 #define GL_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV                                 0x956D
 #define GL_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV                                 0x956E
 #define GL_SHADING_RATE_ATTACHMENT_EXT                                             0x96D1
@@ -4822,6 +5280,8 @@ typedef unsigned int GLhandleARB;
 #define GL_SHADING_RATE_IMAGE_TEXEL_HEIGHT_NV                                      0x955D
 #define GL_SHADING_RATE_IMAGE_TEXEL_WIDTH_NV                                       0x955C
 #define GL_SHADING_RATE_NO_INVOCATIONS_NV                                          0x9564
+#define GL_SHADING_RATE_PRESERVE_ASPECT_RATIO_QCOM                                 0x96A5
+#define GL_SHADING_RATE_QCOM                                                       0x96A4
 #define GL_SHADING_RATE_SAMPLE_ORDER_DEFAULT_NV                                    0x95AE
 #define GL_SHADING_RATE_SAMPLE_ORDER_PIXEL_MAJOR_NV                                0x95AF
 #define GL_SHADING_RATE_SAMPLE_ORDER_SAMPLE_MAJOR_NV                               0x95B0
@@ -4833,6 +5293,7 @@ typedef unsigned int GLhandleARB;
 #define GL_SHININESS                                                               0x1601
 #define GL_SHORT                                                                   0x1402
 #define GL_SIGNALED                                                                0x9119
+#define GL_SIGNALED_APPLE                                                          0x9119
 #define GL_SIGNED_ALPHA8_NV                                                        0x8706
 #define GL_SIGNED_ALPHA_NV                                                         0x8705
 #define GL_SIGNED_HILO16_NV                                                        0x86FA
@@ -4880,6 +5341,8 @@ typedef unsigned int GLhandleARB;
 #define GL_SLUMINANCE_NV                                                           0x8C46
 #define GL_SMALL_CCW_ARC_TO_NV                                                     0x12
 #define GL_SMALL_CW_ARC_TO_NV                                                      0x14
+#define GL_SMAPHS30_PROGRAM_BINARY_DMP                                             0x9251
+#define GL_SMAPHS_PROGRAM_BINARY_DMP                                               0x9252
 #define GL_SMOOTH                                                                  0x1D01
 #define GL_SMOOTH_CUBIC_CURVE_TO_NV                                                0x10
 #define GL_SMOOTH_LINE_WIDTH_GRANULARITY                                           0x0B23
@@ -4917,6 +5380,7 @@ typedef unsigned int GLhandleARB;
 #define GL_SPARSE_BUFFER_PAGE_SIZE_ARB                                             0x82F8
 #define GL_SPARSE_STORAGE_BIT_ARB                                                  0x0400
 #define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB                              0x91A9
+#define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_EXT                              0x91A9
 #define GL_SPECULAR                                                                0x1202
 #define GL_SPHERE_MAP                                                              0x2402
 #define GL_SPIR_V_BINARY                                                           0x9552
@@ -4937,12 +5401,15 @@ typedef unsigned int GLhandleARB;
 #define GL_SRC0_ALPHA                                                              0x8588
 #define GL_SRC0_RGB                                                                0x8580
 #define GL_SRC1_ALPHA                                                              0x8589
+#define GL_SRC1_ALPHA_EXT                                                          0x8589
 #define GL_SRC1_COLOR                                                              0x88F9
+#define GL_SRC1_COLOR_EXT                                                          0x88F9
 #define GL_SRC1_RGB                                                                0x8581
 #define GL_SRC2_ALPHA                                                              0x858A
 #define GL_SRC2_RGB                                                                0x8582
 #define GL_SRC_ALPHA                                                               0x0302
 #define GL_SRC_ALPHA_SATURATE                                                      0x0308
+#define GL_SRC_ALPHA_SATURATE_EXT                                                  0x0308
 #define GL_SRC_ATOP_NV                                                             0x928E
 #define GL_SRC_COLOR                                                               0x0300
 #define GL_SRC_IN_NV                                                               0x928A
@@ -4968,6 +5435,7 @@ typedef unsigned int GLhandleARB;
 #define GL_STACK_UNDERFLOW_KHR                                                     0x0504
 #define GL_STANDARD_FONT_FORMAT_NV                                                 0x936C
 #define GL_STANDARD_FONT_NAME_NV                                                   0x9072
+#define GL_STATE_RESTORE                                                           0x8BDC
 #define GL_STATIC_ATI                                                              0x8760
 #define GL_STATIC_COPY                                                             0x88E6
 #define GL_STATIC_COPY_ARB                                                         0x88E6
@@ -4979,6 +5447,7 @@ typedef unsigned int GLhandleARB;
 #define GL_STENCIL                                                                 0x1802
 #define GL_STENCIL_ATTACHMENT                                                      0x8D20
 #define GL_STENCIL_ATTACHMENT_EXT                                                  0x8D20
+#define GL_STENCIL_ATTACHMENT_OES                                                  0x8D20
 #define GL_STENCIL_BACK_FAIL                                                       0x8801
 #define GL_STENCIL_BACK_FAIL_ATI                                                   0x8801
 #define GL_STENCIL_BACK_FUNC                                                       0x8800
@@ -4993,9 +5462,18 @@ typedef unsigned int GLhandleARB;
 #define GL_STENCIL_BACK_WRITEMASK                                                  0x8CA5
 #define GL_STENCIL_BITS                                                            0x0D57
 #define GL_STENCIL_BUFFER_BIT                                                      0x00000400
+#define GL_STENCIL_BUFFER_BIT0_QCOM                                                0x00010000
+#define GL_STENCIL_BUFFER_BIT1_QCOM                                                0x00020000
+#define GL_STENCIL_BUFFER_BIT2_QCOM                                                0x00040000
+#define GL_STENCIL_BUFFER_BIT3_QCOM                                                0x00080000
+#define GL_STENCIL_BUFFER_BIT4_QCOM                                                0x00100000
+#define GL_STENCIL_BUFFER_BIT5_QCOM                                                0x00200000
+#define GL_STENCIL_BUFFER_BIT6_QCOM                                                0x00400000
+#define GL_STENCIL_BUFFER_BIT7_QCOM                                                0x00800000
 #define GL_STENCIL_CLEAR_TAG_VALUE_EXT                                             0x88F3
 #define GL_STENCIL_CLEAR_VALUE                                                     0x0B91
 #define GL_STENCIL_COMPONENTS                                                      0x8285
+#define GL_STENCIL_EXT                                                             0x1802
 #define GL_STENCIL_FAIL                                                            0x0B94
 #define GL_STENCIL_FUNC                                                            0x0B92
 #define GL_STENCIL_INDEX                                                           0x1901
@@ -5063,6 +5541,18 @@ typedef unsigned int GLhandleARB;
 #define GL_SUPERSAMPLE_SCALE_Y_NV                                                  0x9373
 #define GL_SUPPORTED_MULTISAMPLE_MODES_AMD                                         0x91B7
 #define GL_SURFACE_COMPRESSION_EXT                                                 0x96C0
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_10BPC_EXT                                0x96CD
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_11BPC_EXT                                0x96CE
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_12BPC_EXT                                0x96CF
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_1BPC_EXT                                 0x96C4
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_2BPC_EXT                                 0x96C5
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_3BPC_EXT                                 0x96C6
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_4BPC_EXT                                 0x96C7
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_5BPC_EXT                                 0x96C8
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_6BPC_EXT                                 0x96C9
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_7BPC_EXT                                 0x96CA
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_8BPC_EXT                                 0x96CB
+#define GL_SURFACE_COMPRESSION_FIXED_RATE_9BPC_EXT                                 0x96CC
 #define GL_SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT                              0x96C2
 #define GL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT                                 0x96C1
 #define GL_SURFACE_MAPPED_NV                                                       0x8700
@@ -5077,11 +5567,18 @@ typedef unsigned int GLhandleARB;
 #define GL_SYNC_CL_EVENT_ARB                                                       0x8240
 #define GL_SYNC_CL_EVENT_COMPLETE_ARB                                              0x8241
 #define GL_SYNC_CONDITION                                                          0x9113
+#define GL_SYNC_CONDITION_APPLE                                                    0x9113
 #define GL_SYNC_FENCE                                                              0x9116
+#define GL_SYNC_FENCE_APPLE                                                        0x9116
 #define GL_SYNC_FLAGS                                                              0x9115
+#define GL_SYNC_FLAGS_APPLE                                                        0x9115
 #define GL_SYNC_FLUSH_COMMANDS_BIT                                                 0x00000001
+#define GL_SYNC_FLUSH_COMMANDS_BIT_APPLE                                           0x00000001
 #define GL_SYNC_GPU_COMMANDS_COMPLETE                                              0x9117
+#define GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE                                        0x9117
+#define GL_SYNC_OBJECT_APPLE                                                       0x8A53
 #define GL_SYNC_STATUS                                                             0x9114
+#define GL_SYNC_STATUS_APPLE                                                       0x9114
 #define GL_SYNC_X11_FENCE_EXT                                                      0x90E1
 #define GL_SYSTEM_FONT_NAME_NV                                                     0x9073
 #define GL_T                                                                       0x2001
@@ -5117,10 +5614,16 @@ typedef unsigned int GLhandleARB;
 #define GL_TESSELLATION_FACTOR_AMD                                                 0x9005
 #define GL_TESSELLATION_MODE_AMD                                                   0x9004
 #define GL_TESS_CONTROL_OUTPUT_VERTICES                                            0x8E75
+#define GL_TESS_CONTROL_OUTPUT_VERTICES_EXT                                        0x8E75
+#define GL_TESS_CONTROL_OUTPUT_VERTICES_OES                                        0x8E75
 #define GL_TESS_CONTROL_PROGRAM_NV                                                 0x891E
 #define GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV                                0x8C74
 #define GL_TESS_CONTROL_SHADER                                                     0x8E88
 #define GL_TESS_CONTROL_SHADER_BIT                                                 0x00000008
+#define GL_TESS_CONTROL_SHADER_BIT_EXT                                             0x00000008
+#define GL_TESS_CONTROL_SHADER_BIT_OES                                             0x00000008
+#define GL_TESS_CONTROL_SHADER_EXT                                                 0x8E88
+#define GL_TESS_CONTROL_SHADER_OES                                                 0x8E88
 #define GL_TESS_CONTROL_SHADER_PATCHES                                             0x82F1
 #define GL_TESS_CONTROL_SHADER_PATCHES_ARB                                         0x82F1
 #define GL_TESS_CONTROL_SUBROUTINE                                                 0x92E9
@@ -5130,15 +5633,27 @@ typedef unsigned int GLhandleARB;
 #define GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV                             0x8C75
 #define GL_TESS_EVALUATION_SHADER                                                  0x8E87
 #define GL_TESS_EVALUATION_SHADER_BIT                                              0x00000010
+#define GL_TESS_EVALUATION_SHADER_BIT_EXT                                          0x00000010
+#define GL_TESS_EVALUATION_SHADER_BIT_OES                                          0x00000010
+#define GL_TESS_EVALUATION_SHADER_EXT                                              0x8E87
 #define GL_TESS_EVALUATION_SHADER_INVOCATIONS                                      0x82F2
 #define GL_TESS_EVALUATION_SHADER_INVOCATIONS_ARB                                  0x82F2
+#define GL_TESS_EVALUATION_SHADER_OES                                              0x8E87
 #define GL_TESS_EVALUATION_SUBROUTINE                                              0x92EA
 #define GL_TESS_EVALUATION_SUBROUTINE_UNIFORM                                      0x92F0
 #define GL_TESS_EVALUATION_TEXTURE                                                 0x829D
 #define GL_TESS_GEN_MODE                                                           0x8E76
+#define GL_TESS_GEN_MODE_EXT                                                       0x8E76
+#define GL_TESS_GEN_MODE_OES                                                       0x8E76
 #define GL_TESS_GEN_POINT_MODE                                                     0x8E79
+#define GL_TESS_GEN_POINT_MODE_EXT                                                 0x8E79
+#define GL_TESS_GEN_POINT_MODE_OES                                                 0x8E79
 #define GL_TESS_GEN_SPACING                                                        0x8E77
+#define GL_TESS_GEN_SPACING_EXT                                                    0x8E77
+#define GL_TESS_GEN_SPACING_OES                                                    0x8E77
 #define GL_TESS_GEN_VERTEX_ORDER                                                   0x8E78
+#define GL_TESS_GEN_VERTEX_ORDER_EXT                                               0x8E78
+#define GL_TESS_GEN_VERTEX_ORDER_OES                                               0x8E78
 #define GL_TEXCOORD1_BIT_PGI                                                       0x10000000
 #define GL_TEXCOORD2_BIT_PGI                                                       0x20000000
 #define GL_TEXCOORD3_BIT_PGI                                                       0x40000000
@@ -5220,11 +5735,13 @@ typedef unsigned int GLhandleARB;
 #define GL_TEXTURE_2D_BINDING_EXT                                                  0x8069
 #define GL_TEXTURE_2D_MULTISAMPLE                                                  0x9100
 #define GL_TEXTURE_2D_MULTISAMPLE_ARRAY                                            0x9102
+#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY_OES                                        0x9102
 #define GL_TEXTURE_2D_STACK_BINDING_MESAX                                          0x875E
 #define GL_TEXTURE_2D_STACK_MESAX                                                  0x875A
 #define GL_TEXTURE_3D                                                              0x806F
 #define GL_TEXTURE_3D_BINDING_EXT                                                  0x806A
 #define GL_TEXTURE_3D_EXT                                                          0x806F
+#define GL_TEXTURE_3D_OES                                                          0x806F
 #define GL_TEXTURE_4DSIZE_SGIS                                                     0x8136
 #define GL_TEXTURE_4D_BINDING_SGIS                                                 0x814F
 #define GL_TEXTURE_4D_SGIS                                                         0x8134
@@ -5245,10 +5762,13 @@ typedef unsigned int GLhandleARB;
 #define GL_TEXTURE_BINDING_2D_ARRAY_EXT                                            0x8C1D
 #define GL_TEXTURE_BINDING_2D_MULTISAMPLE                                          0x9104
 #define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY                                    0x9105
+#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY_OES                                0x9105
 #define GL_TEXTURE_BINDING_3D                                                      0x806A
+#define GL_TEXTURE_BINDING_3D_OES                                                  0x806A
 #define GL_TEXTURE_BINDING_BUFFER                                                  0x8C2C
 #define GL_TEXTURE_BINDING_BUFFER_ARB                                              0x8C2C
 #define GL_TEXTURE_BINDING_BUFFER_EXT                                              0x8C2C
+#define GL_TEXTURE_BINDING_BUFFER_OES                                              0x8C2C
 #define GL_TEXTURE_BINDING_CUBE_MAP                                                0x8514
 #define GL_TEXTURE_BINDING_CUBE_MAP_ARB                                            0x8514
 #define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY                                          0x900A
@@ -5256,6 +5776,7 @@ typedef unsigned int GLhandleARB;
 #define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_EXT                                      0x900A
 #define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_OES                                      0x900A
 #define GL_TEXTURE_BINDING_CUBE_MAP_EXT                                            0x8514
+#define GL_TEXTURE_BINDING_CUBE_MAP_OES                                            0x8514
 #define GL_TEXTURE_BINDING_EXTERNAL_OES                                            0x8D67
 #define GL_TEXTURE_BINDING_RECTANGLE                                               0x84F6
 #define GL_TEXTURE_BINDING_RECTANGLE_ARB                                           0x84F6
@@ -5268,20 +5789,33 @@ typedef unsigned int GLhandleARB;
 #define GL_TEXTURE_BLUE_TYPE_ARB                                                   0x8C12
 #define GL_TEXTURE_BORDER                                                          0x1005
 #define GL_TEXTURE_BORDER_COLOR                                                    0x1004
+#define GL_TEXTURE_BORDER_COLOR_EXT                                                0x1004
 #define GL_TEXTURE_BORDER_COLOR_NV                                                 0x1004
+#define GL_TEXTURE_BORDER_COLOR_OES                                                0x1004
 #define GL_TEXTURE_BORDER_VALUES_NV                                                0x871A
 #define GL_TEXTURE_BUFFER                                                          0x8C2A
 #define GL_TEXTURE_BUFFER_ARB                                                      0x8C2A
 #define GL_TEXTURE_BUFFER_BINDING                                                  0x8C2A
+#define GL_TEXTURE_BUFFER_BINDING_EXT                                              0x8C2A
+#define GL_TEXTURE_BUFFER_BINDING_OES                                              0x8C2A
 #define GL_TEXTURE_BUFFER_DATA_STORE_BINDING                                       0x8C2D
 #define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB                                   0x8C2D
 #define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT                                   0x8C2D
+#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_OES                                   0x8C2D
 #define GL_TEXTURE_BUFFER_EXT                                                      0x8C2A
 #define GL_TEXTURE_BUFFER_FORMAT_ARB                                               0x8C2E
 #define GL_TEXTURE_BUFFER_FORMAT_EXT                                               0x8C2E
+#define GL_TEXTURE_BUFFER_OES                                                      0x8C2A
 #define GL_TEXTURE_BUFFER_OFFSET                                                   0x919D
 #define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT                                         0x919F
+#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_EXT                                     0x919F
+#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_OES                                     0x919F
+#define GL_TEXTURE_BUFFER_OFFSET_EXT                                               0x919D
+#define GL_TEXTURE_BUFFER_OFFSET_OES                                               0x919D
 #define GL_TEXTURE_BUFFER_SIZE                                                     0x919E
+#define GL_TEXTURE_BUFFER_SIZE_EXT                                                 0x919E
+#define GL_TEXTURE_BUFFER_SIZE_OES                                                 0x919E
+#define GL_TEXTURE_CBCR_DEGAMMA_QCOM                                               0x9711
 #define GL_TEXTURE_CLIPMAP_CENTER_SGIX                                             0x8171
 #define GL_TEXTURE_CLIPMAP_DEPTH_SGIX                                              0x8176
 #define GL_TEXTURE_CLIPMAP_FRAME_SGIX                                              0x8172
@@ -5331,6 +5865,7 @@ typedef unsigned int GLhandleARB;
 #define GL_TEXTURE_COORD_ARRAY_TYPE_EXT                                            0x8089
 #define GL_TEXTURE_COORD_NV                                                        0x8C79
 #define GL_TEXTURE_COVERAGE_SAMPLES_NV                                             0x9045
+#define GL_TEXTURE_CROP_RECT_OES                                                   0x8B9D
 #define GL_TEXTURE_CUBE_MAP                                                        0x8513
 #define GL_TEXTURE_CUBE_MAP_ARB                                                    0x8513
 #define GL_TEXTURE_CUBE_MAP_ARRAY                                                  0x9009
@@ -5341,26 +5876,34 @@ typedef unsigned int GLhandleARB;
 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_X                                             0x8516
 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB                                         0x8516
 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT                                         0x8516
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES                                         0x8516
 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y                                             0x8518
 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB                                         0x8518
 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT                                         0x8518
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES                                         0x8518
 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z                                             0x851A
 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB                                         0x851A
 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT                                         0x851A
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES                                         0x851A
+#define GL_TEXTURE_CUBE_MAP_OES                                                    0x8513
 #define GL_TEXTURE_CUBE_MAP_POSITIVE_X                                             0x8515
 #define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB                                         0x8515
 #define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT                                         0x8515
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES                                         0x8515
 #define GL_TEXTURE_CUBE_MAP_POSITIVE_Y                                             0x8517
 #define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB                                         0x8517
 #define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT                                         0x8517
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES                                         0x8517
 #define GL_TEXTURE_CUBE_MAP_POSITIVE_Z                                             0x8519
 #define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB                                         0x8519
 #define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT                                         0x8519
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES                                         0x8519
 #define GL_TEXTURE_CUBE_MAP_SEAMLESS                                               0x884F
 #define GL_TEXTURE_DEFORMATION_BIT_SGIX                                            0x00000001
 #define GL_TEXTURE_DEFORMATION_SGIX                                                0x8195
 #define GL_TEXTURE_DEPTH                                                           0x8071
 #define GL_TEXTURE_DEPTH_EXT                                                       0x8071
+#define GL_TEXTURE_DEPTH_QCOM                                                      0x8BD4
 #define GL_TEXTURE_DEPTH_SIZE                                                      0x884A
 #define GL_TEXTURE_DEPTH_SIZE_ARB                                                  0x884A
 #define GL_TEXTURE_DEPTH_TYPE                                                      0x8C16
@@ -5379,14 +5922,22 @@ typedef unsigned int GLhandleARB;
 #define GL_TEXTURE_FILTER_CONTROL_EXT                                              0x8500
 #define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS                                          0x9107
 #define GL_TEXTURE_FLOAT_COMPONENTS_NV                                             0x888C
+#define GL_TEXTURE_FORMAT_QCOM                                                     0x8BD6
 #define GL_TEXTURE_FORMAT_SRGB_OVERRIDE_EXT                                        0x8FBF
+#define GL_TEXTURE_FOVEATED_CUTOFF_DENSITY_QCOM                                    0x96A0
+#define GL_TEXTURE_FOVEATED_FEATURE_BITS_QCOM                                      0x8BFB
+#define GL_TEXTURE_FOVEATED_FEATURE_QUERY_QCOM                                     0x8BFD
+#define GL_TEXTURE_FOVEATED_MIN_PIXEL_DENSITY_QCOM                                 0x8BFC
+#define GL_TEXTURE_FOVEATED_NUM_FOCAL_POINTS_QUERY_QCOM                            0x8BFE
 #define GL_TEXTURE_FREE_MEMORY_ATI                                                 0x87FC
 #define GL_TEXTURE_GATHER                                                          0x82A2
 #define GL_TEXTURE_GATHER_SHADOW                                                   0x82A3
 #define GL_TEXTURE_GEN_MODE                                                        0x2500
+#define GL_TEXTURE_GEN_MODE_OES                                                    0x2500
 #define GL_TEXTURE_GEN_Q                                                           0x0C63
 #define GL_TEXTURE_GEN_R                                                           0x0C62
 #define GL_TEXTURE_GEN_S                                                           0x0C60
+#define GL_TEXTURE_GEN_STR_OES                                                     0x8D60
 #define GL_TEXTURE_GEN_T                                                           0x0C61
 #define GL_TEXTURE_GEQUAL_R_SGIX                                                   0x819D
 #define GL_TEXTURE_GREEN_SIZE                                                      0x805D
@@ -5394,9 +5945,11 @@ typedef unsigned int GLhandleARB;
 #define GL_TEXTURE_GREEN_TYPE                                                      0x8C11
 #define GL_TEXTURE_GREEN_TYPE_ARB                                                  0x8C11
 #define GL_TEXTURE_HEIGHT                                                          0x1001
+#define GL_TEXTURE_HEIGHT_QCOM                                                     0x8BD3
 #define GL_TEXTURE_HI_SIZE_NV                                                      0x871B
 #define GL_TEXTURE_IMAGE_FORMAT                                                    0x828F
 #define GL_TEXTURE_IMAGE_TYPE                                                      0x8290
+#define GL_TEXTURE_IMAGE_VALID_QCOM                                                0x8BD8
 #define GL_TEXTURE_IMMUTABLE_FORMAT                                                0x912F
 #define GL_TEXTURE_IMMUTABLE_FORMAT_EXT                                            0x912F
 #define GL_TEXTURE_IMMUTABLE_LEVELS                                                0x82DF
@@ -5406,11 +5959,13 @@ typedef unsigned int GLhandleARB;
 #define GL_TEXTURE_INTENSITY_TYPE                                                  0x8C15
 #define GL_TEXTURE_INTENSITY_TYPE_ARB                                              0x8C15
 #define GL_TEXTURE_INTERNAL_FORMAT                                                 0x1003
+#define GL_TEXTURE_INTERNAL_FORMAT_QCOM                                            0x8BD5
 #define GL_TEXTURE_LEQUAL_R_SGIX                                                   0x819C
 #define GL_TEXTURE_LIGHTING_MODE_HP                                                0x8167
 #define GL_TEXTURE_LIGHT_EXT                                                       0x8350
 #define GL_TEXTURE_LOD_BIAS                                                        0x8501
 #define GL_TEXTURE_LOD_BIAS_EXT                                                    0x8501
+#define GL_TEXTURE_LOD_BIAS_QCOM                                                   0x8C96
 #define GL_TEXTURE_LOD_BIAS_R_SGIX                                                 0x8190
 #define GL_TEXTURE_LOD_BIAS_S_SGIX                                                 0x818E
 #define GL_TEXTURE_LOD_BIAS_T_SGIX                                                 0x818F
@@ -5441,6 +5996,8 @@ typedef unsigned int GLhandleARB;
 #define GL_TEXTURE_MIN_LOD_SGIS                                                    0x813A
 #define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX                                          0x812E
 #define GL_TEXTURE_NORMAL_EXT                                                      0x85AF
+#define GL_TEXTURE_NUM_LEVELS_QCOM                                                 0x8BD9
+#define GL_TEXTURE_OBJECT_VALID_QCOM                                               0x8BDB
 #define GL_TEXTURE_POST_SPECULAR_HP                                                0x8168
 #define GL_TEXTURE_PRE_SPECULAR_HP                                                 0x8169
 #define GL_TEXTURE_PRIORITY                                                        0x8066
@@ -5462,11 +6019,13 @@ typedef unsigned int GLhandleARB;
 #define GL_TEXTURE_RESIDENT                                                        0x8067
 #define GL_TEXTURE_RESIDENT_EXT                                                    0x8067
 #define GL_TEXTURE_SAMPLES                                                         0x9106
+#define GL_TEXTURE_SAMPLES_IMG                                                     0x9136
 #define GL_TEXTURE_SHADER_NV                                                       0x86DE
 #define GL_TEXTURE_SHADOW                                                          0x82A1
 #define GL_TEXTURE_SHARED_SIZE                                                     0x8C3F
 #define GL_TEXTURE_SHARED_SIZE_EXT                                                 0x8C3F
 #define GL_TEXTURE_SPARSE_ARB                                                      0x91A6
+#define GL_TEXTURE_SPARSE_EXT                                                      0x91A6
 #define GL_TEXTURE_SRGB_DECODE_EXT                                                 0x8A48
 #define GL_TEXTURE_STACK_DEPTH                                                     0x0BA5
 #define GL_TEXTURE_STENCIL_SIZE                                                    0x88F1
@@ -5484,22 +6043,37 @@ typedef unsigned int GLhandleARB;
 #define GL_TEXTURE_SWIZZLE_RGBA_EXT                                                0x8E46
 #define GL_TEXTURE_SWIZZLE_R_EXT                                                   0x8E42
 #define GL_TEXTURE_TARGET                                                          0x1006
+#define GL_TEXTURE_TARGET_QCOM                                                     0x8BDA
 #define GL_TEXTURE_TILING_EXT                                                      0x9580
 #define GL_TEXTURE_TOO_LARGE_EXT                                                   0x8065
+#define GL_TEXTURE_TYPE_QCOM                                                       0x8BD7
+#define GL_TEXTURE_UNNORMALIZED_COORDINATES_ARM                                    0x8F6A
 #define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV                                          0x888F
 #define GL_TEXTURE_UPDATE_BARRIER_BIT                                              0x00000100
 #define GL_TEXTURE_UPDATE_BARRIER_BIT_EXT                                          0x00000100
+#define GL_TEXTURE_USAGE_ANGLE                                                     0x93A2
 #define GL_TEXTURE_VIEW                                                            0x82B5
 #define GL_TEXTURE_VIEW_MIN_LAYER                                                  0x82DD
+#define GL_TEXTURE_VIEW_MIN_LAYER_EXT                                              0x82DD
+#define GL_TEXTURE_VIEW_MIN_LAYER_OES                                              0x82DD
 #define GL_TEXTURE_VIEW_MIN_LEVEL                                                  0x82DB
+#define GL_TEXTURE_VIEW_MIN_LEVEL_EXT                                              0x82DB
+#define GL_TEXTURE_VIEW_MIN_LEVEL_OES                                              0x82DB
 #define GL_TEXTURE_VIEW_NUM_LAYERS                                                 0x82DE
+#define GL_TEXTURE_VIEW_NUM_LAYERS_EXT                                             0x82DE
+#define GL_TEXTURE_VIEW_NUM_LAYERS_OES                                             0x82DE
 #define GL_TEXTURE_VIEW_NUM_LEVELS                                                 0x82DC
+#define GL_TEXTURE_VIEW_NUM_LEVELS_EXT                                             0x82DC
+#define GL_TEXTURE_VIEW_NUM_LEVELS_OES                                             0x82DC
 #define GL_TEXTURE_WIDTH                                                           0x1000
+#define GL_TEXTURE_WIDTH_QCOM                                                      0x8BD2
 #define GL_TEXTURE_WRAP_Q_SGIS                                                     0x8137
 #define GL_TEXTURE_WRAP_R                                                          0x8072
 #define GL_TEXTURE_WRAP_R_EXT                                                      0x8072
+#define GL_TEXTURE_WRAP_R_OES                                                      0x8072
 #define GL_TEXTURE_WRAP_S                                                          0x2802
 #define GL_TEXTURE_WRAP_T                                                          0x2803
+#define GL_TEXTURE_Y_DEGAMMA_QCOM                                                  0x9710
 #define GL_TEXT_FRAGMENT_SHADER_ATI                                                0x8200
 #define GL_TILE_RASTER_ORDER_FIXED_MESA                                            0x8BB8
 #define GL_TILE_RASTER_ORDER_INCREASING_X_MESA                                     0x8BB9
@@ -5507,8 +6081,11 @@ typedef unsigned int GLhandleARB;
 #define GL_TILING_TYPES_EXT                                                        0x9583
 #define GL_TIMELINE_SEMAPHORE_VALUE_NV                                             0x9595
 #define GL_TIMEOUT_EXPIRED                                                         0x911B
+#define GL_TIMEOUT_EXPIRED_APPLE                                                   0x911B
 #define GL_TIMEOUT_IGNORED                                                         0xFFFFFFFFFFFFFFFF
+#define GL_TIMEOUT_IGNORED_APPLE                                                   0xFFFFFFFFFFFFFFFF
 #define GL_TIMESTAMP                                                               0x8E28
+#define GL_TIMESTAMP_EXT                                                           0x8E28
 #define GL_TIME_ELAPSED                                                            0x88BF
 #define GL_TIME_ELAPSED_EXT                                                        0x88BF
 #define GL_TOP_LEVEL_ARRAY_SIZE                                                    0x930C
@@ -5561,6 +6138,7 @@ typedef unsigned int GLhandleARB;
 #define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH                                   0x8C76
 #define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT                               0x8C76
 #define GL_TRANSFORM_HINT_APPLE                                                    0x85B1
+#define GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE                                   0x93A0
 #define GL_TRANSLATE_2D_NV                                                         0x9090
 #define GL_TRANSLATE_3D_NV                                                         0x9091
 #define GL_TRANSLATE_X_NV                                                          0x908E
@@ -5582,6 +6160,7 @@ typedef unsigned int GLhandleARB;
 #define GL_TRIANGLES_ADJACENCY                                                     0x000C
 #define GL_TRIANGLES_ADJACENCY_ARB                                                 0x000C
 #define GL_TRIANGLES_ADJACENCY_EXT                                                 0x000C
+#define GL_TRIANGLES_ADJACENCY_OES                                                 0x000C
 #define GL_TRIANGLE_FAN                                                            0x0006
 #define GL_TRIANGLE_LIST_SUN                                                       0x81D7
 #define GL_TRIANGLE_MESH_SUN                                                       0x8615
@@ -5589,12 +6168,15 @@ typedef unsigned int GLhandleARB;
 #define GL_TRIANGLE_STRIP_ADJACENCY                                                0x000D
 #define GL_TRIANGLE_STRIP_ADJACENCY_ARB                                            0x000D
 #define GL_TRIANGLE_STRIP_ADJACENCY_EXT                                            0x000D
+#define GL_TRIANGLE_STRIP_ADJACENCY_OES                                            0x000D
 #define GL_TRIANGULAR_NV                                                           0x90A5
 #define GL_TRUE                                                                    1
 #define GL_TYPE                                                                    0x92FA
 #define GL_UNCORRELATED_NV                                                         0x9282
 #define GL_UNDEFINED_APPLE                                                         0x8A1C
 #define GL_UNDEFINED_VERTEX                                                        0x8260
+#define GL_UNDEFINED_VERTEX_EXT                                                    0x8260
+#define GL_UNDEFINED_VERTEX_OES                                                    0x8260
 #define GL_UNIFORM                                                                 0x92E1
 #define GL_UNIFORM_ADDRESS_COMMAND_NV                                              0x000A
 #define GL_UNIFORM_ARRAY_STRIDE                                                    0x8A3C
@@ -5636,6 +6218,7 @@ typedef unsigned int GLhandleARB;
 #define GL_UNIFORM_TYPE                                                            0x8A37
 #define GL_UNKNOWN_CONTEXT_RESET                                                   0x8255
 #define GL_UNKNOWN_CONTEXT_RESET_ARB                                               0x8255
+#define GL_UNKNOWN_CONTEXT_RESET_EXT                                               0x8255
 #define GL_UNKNOWN_CONTEXT_RESET_KHR                                               0x8255
 #define GL_UNPACK_ALIGNMENT                                                        0x0CF5
 #define GL_UNPACK_CLIENT_STORAGE_APPLE                                             0x85B2
@@ -5664,6 +6247,7 @@ typedef unsigned int GLhandleARB;
 #define GL_UNPACK_SUBSAMPLE_RATE_SGIX                                              0x85A1
 #define GL_UNPACK_SWAP_BYTES                                                       0x0CF0
 #define GL_UNSIGNALED                                                              0x9118
+#define GL_UNSIGNALED_APPLE                                                        0x9118
 #define GL_UNSIGNED_BYTE                                                           0x1401
 #define GL_UNSIGNED_BYTE_2_3_3_REV                                                 0x8362
 #define GL_UNSIGNED_BYTE_3_3_2                                                     0x8032
@@ -5725,6 +6309,7 @@ typedef unsigned int GLhandleARB;
 #define GL_UNSIGNED_INT_IMAGE_3D_EXT                                               0x9064
 #define GL_UNSIGNED_INT_IMAGE_BUFFER                                               0x9067
 #define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT                                           0x9067
+#define GL_UNSIGNED_INT_IMAGE_BUFFER_OES                                           0x9067
 #define GL_UNSIGNED_INT_IMAGE_CUBE                                                 0x9066
 #define GL_UNSIGNED_INT_IMAGE_CUBE_EXT                                             0x9066
 #define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY                                       0x906A
@@ -5741,6 +6326,7 @@ typedef unsigned int GLhandleARB;
 #define GL_UNSIGNED_INT_SAMPLER_2D_EXT                                             0x8DD2
 #define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE                                     0x910A
 #define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY                               0x910D
+#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES                           0x910D
 #define GL_UNSIGNED_INT_SAMPLER_2D_RECT                                            0x8DD5
 #define GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT                                        0x8DD5
 #define GL_UNSIGNED_INT_SAMPLER_3D                                                 0x8DD3
@@ -5748,6 +6334,7 @@ typedef unsigned int GLhandleARB;
 #define GL_UNSIGNED_INT_SAMPLER_BUFFER                                             0x8DD8
 #define GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD                                         0x9003
 #define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT                                         0x8DD8
+#define GL_UNSIGNED_INT_SAMPLER_BUFFER_OES                                         0x8DD8
 #define GL_UNSIGNED_INT_SAMPLER_CUBE                                               0x8DD4
 #define GL_UNSIGNED_INT_SAMPLER_CUBE_EXT                                           0x8DD4
 #define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY                                     0x900F
@@ -5783,6 +6370,7 @@ typedef unsigned int GLhandleARB;
 #define GL_UNSIGNED_SHORT_8_8_REV_MESA                                             0x85BB
 #define GL_UPLOAD_GPU_MASK_NVX                                                     0x954A
 #define GL_UPPER_LEFT                                                              0x8CA2
+#define GL_UPPER_LEFT_EXT                                                          0x8CA2
 #define GL_USE_MISSING_GLYPH_NV                                                    0x90AA
 #define GL_UTF16_NV                                                                0x909B
 #define GL_UTF8_NV                                                                 0x909A
@@ -5817,6 +6405,7 @@ typedef unsigned int GLhandleARB;
 #define GL_VERTEX_ARRAY_ADDRESS_NV                                                 0x8F21
 #define GL_VERTEX_ARRAY_BINDING                                                    0x85B5
 #define GL_VERTEX_ARRAY_BINDING_APPLE                                              0x85B5
+#define GL_VERTEX_ARRAY_BINDING_OES                                                0x85B5
 #define GL_VERTEX_ARRAY_BUFFER_BINDING                                             0x8896
 #define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB                                         0x8896
 #define GL_VERTEX_ARRAY_COUNT_EXT                                                  0x807D
@@ -5867,7 +6456,10 @@ typedef unsigned int GLhandleARB;
 #define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING                                      0x889F
 #define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB                                  0x889F
 #define GL_VERTEX_ATTRIB_ARRAY_DIVISOR                                             0x88FE
+#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE                                       0x88FE
 #define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB                                         0x88FE
+#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_EXT                                         0x88FE
+#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_NV                                          0x88FE
 #define GL_VERTEX_ATTRIB_ARRAY_ENABLED                                             0x8622
 #define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB                                         0x8622
 #define GL_VERTEX_ATTRIB_ARRAY_INTEGER                                             0x88FD
@@ -5975,12 +6567,18 @@ typedef unsigned int GLhandleARB;
 #define GL_VIEWPORT                                                                0x0BA2
 #define GL_VIEWPORT_BIT                                                            0x00000800
 #define GL_VIEWPORT_BOUNDS_RANGE                                                   0x825D
+#define GL_VIEWPORT_BOUNDS_RANGE_NV                                                0x825D
+#define GL_VIEWPORT_BOUNDS_RANGE_OES                                               0x825D
 #define GL_VIEWPORT_COMMAND_NV                                                     0x0010
 #define GL_VIEWPORT_INDEX_PROVOKING_VERTEX                                         0x825F
+#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX_NV                                      0x825F
+#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX_OES                                     0x825F
 #define GL_VIEWPORT_POSITION_W_SCALE_NV                                            0x937C
 #define GL_VIEWPORT_POSITION_W_SCALE_X_COEFF_NV                                    0x937D
 #define GL_VIEWPORT_POSITION_W_SCALE_Y_COEFF_NV                                    0x937E
 #define GL_VIEWPORT_SUBPIXEL_BITS                                                  0x825C
+#define GL_VIEWPORT_SUBPIXEL_BITS_NV                                               0x825C
+#define GL_VIEWPORT_SUBPIXEL_BITS_OES                                              0x825C
 #define GL_VIEWPORT_SWIZZLE_NEGATIVE_W_NV                                          0x9357
 #define GL_VIEWPORT_SWIZZLE_NEGATIVE_X_NV                                          0x9351
 #define GL_VIEWPORT_SWIZZLE_NEGATIVE_Y_NV                                          0x9353
@@ -6030,15 +6628,20 @@ typedef unsigned int GLhandleARB;
 #define GL_VIEW_CLASS_S3TC_DXT5_RGBA                                               0x82CF
 #define GL_VIEW_COMPATIBILITY_CLASS                                                0x82B6
 #define GL_VIRTUAL_PAGE_SIZE_INDEX_ARB                                             0x91A7
+#define GL_VIRTUAL_PAGE_SIZE_INDEX_EXT                                             0x91A7
 #define GL_VIRTUAL_PAGE_SIZE_X_AMD                                                 0x9195
 #define GL_VIRTUAL_PAGE_SIZE_X_ARB                                                 0x9195
+#define GL_VIRTUAL_PAGE_SIZE_X_EXT                                                 0x9195
 #define GL_VIRTUAL_PAGE_SIZE_Y_AMD                                                 0x9196
 #define GL_VIRTUAL_PAGE_SIZE_Y_ARB                                                 0x9196
+#define GL_VIRTUAL_PAGE_SIZE_Y_EXT                                                 0x9196
 #define GL_VIRTUAL_PAGE_SIZE_Z_AMD                                                 0x9197
 #define GL_VIRTUAL_PAGE_SIZE_Z_ARB                                                 0x9197
+#define GL_VIRTUAL_PAGE_SIZE_Z_EXT                                                 0x9197
 #define GL_VIVIDLIGHT_NV                                                           0x92A6
 #define GL_VOLATILE_APPLE                                                          0x8A1A
 #define GL_WAIT_FAILED                                                             0x911D
+#define GL_WAIT_FAILED_APPLE                                                       0x911D
 #define GL_WARPS_PER_SM_NV                                                         0x933A
 #define GL_WARP_SIZE_NV                                                            0x9339
 #define GL_WEIGHTED_AVERAGE_ARB                                                    0x9367
@@ -6046,18 +6649,26 @@ typedef unsigned int GLhandleARB;
 #define GL_WEIGHT_ARRAY_ARB                                                        0x86AD
 #define GL_WEIGHT_ARRAY_BUFFER_BINDING                                             0x889E
 #define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB                                         0x889E
+#define GL_WEIGHT_ARRAY_BUFFER_BINDING_OES                                         0x889E
+#define GL_WEIGHT_ARRAY_OES                                                        0x86AD
 #define GL_WEIGHT_ARRAY_POINTER_ARB                                                0x86AC
+#define GL_WEIGHT_ARRAY_POINTER_OES                                                0x86AC
 #define GL_WEIGHT_ARRAY_SIZE_ARB                                                   0x86AB
+#define GL_WEIGHT_ARRAY_SIZE_OES                                                   0x86AB
 #define GL_WEIGHT_ARRAY_STRIDE_ARB                                                 0x86AA
+#define GL_WEIGHT_ARRAY_STRIDE_OES                                                 0x86AA
 #define GL_WEIGHT_ARRAY_TYPE_ARB                                                   0x86A9
+#define GL_WEIGHT_ARRAY_TYPE_OES                                                   0x86A9
 #define GL_WEIGHT_SUM_UNITY_ARB                                                    0x86A6
 #define GL_WIDE_LINE_HINT_PGI                                                      0x1A222
 #define GL_WINDOW_RECTANGLE_EXT                                                    0x8F12
 #define GL_WINDOW_RECTANGLE_MODE_EXT                                               0x8F13
 #define GL_WRAP_BORDER_SUN                                                         0x81D4
+#define GL_WRITEONLY_RENDERING_QCOM                                                0x8823
 #define GL_WRITE_DISCARD_NV                                                        0x88BE
 #define GL_WRITE_ONLY                                                              0x88B9
 #define GL_WRITE_ONLY_ARB                                                          0x88B9
+#define GL_WRITE_ONLY_OES                                                          0x88B9
 #define GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV                                        0x887A
 #define GL_WRITE_PIXEL_DATA_RANGE_NV                                               0x8878
 #define GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV                                       0x887C
@@ -6083,6 +6694,7 @@ typedef unsigned int GLhandleARB;
 #define GL_ZERO                                                                    0
 #define GL_ZERO_EXT                                                                0x87DD
 #define GL_ZERO_TO_ONE                                                             0x935F
+#define GL_ZERO_TO_ONE_EXT                                                         0x935F
 #define GL_ZOOM_X                                                                  0x0D16
 #define GL_ZOOM_Y                                                                  0x0D17
 #define GL_Z_EXT                                                                   0x87D7
@@ -6590,8 +7202,8 @@ void       GLAPIENTRY glViewport( GLint x, GLint y, GLsizei width, GLsizei heigh
 
 typedef int        (GLAPIENTRY *PFN_wglChoosePixelFormat)( HDC hDc, const PIXELFORMATDESCRIPTOR *pPfd );
 typedef BOOL       (GLAPIENTRY *PFN_wglCopyContext)( HGLRC hglrcSrc, HGLRC hglrcDst, UINT mask );
-typedef HGLRC      (GLAPIENTRY *PFN_wglCreateContext)( HDC hDc, HGLRC client_context );
-typedef HGLRC      (GLAPIENTRY *PFN_wglCreateLayerContext)( HDC hDc, int level, HGLRC client_context );
+typedef HGLRC      (GLAPIENTRY *PFN_wglCreateContext)( HDC hDc );
+typedef HGLRC      (GLAPIENTRY *PFN_wglCreateLayerContext)( HDC hDc, int level );
 typedef BOOL       (GLAPIENTRY *PFN_wglDeleteContext)( HGLRC oldContext );
 typedef BOOL       (GLAPIENTRY *PFN_wglDescribeLayerPlane)( HDC hDc, int pixelFormat, int layerPlane, UINT nBytes, LAYERPLANEDESCRIPTOR *plpd );
 typedef int        (GLAPIENTRY *PFN_wglDescribePixelFormat)( HDC hdc, int ipfd, UINT cjpfd, PIXELFORMATDESCRIPTOR *ppfd );
@@ -7007,6 +7619,8 @@ typedef EGLBoolean (GLAPIENTRY *PFN_eglCompositorSwapPolicyEXT)( EGLint external
 typedef EGLImageKHR (GLAPIENTRY *PFN_eglCreateDRMImageMESA)( EGLDisplay dpy, const EGLint *attrib_list );
 typedef EGLSyncNV  (GLAPIENTRY *PFN_eglCreateFenceSyncNV)( EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list );
 typedef EGLImageKHR (GLAPIENTRY *PFN_eglCreateImageKHR)( EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list );
+typedef EGLClientBuffer (GLAPIENTRY *PFN_eglCreateNativeClientBufferANDROID)( const EGLint *attrib_list );
+typedef EGLSurface (GLAPIENTRY *PFN_eglCreatePixmapSurfaceHI)( EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI *pixmap );
 typedef EGLSurface (GLAPIENTRY *PFN_eglCreatePlatformPixmapSurfaceEXT)( EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list );
 typedef EGLSurface (GLAPIENTRY *PFN_eglCreatePlatformWindowSurfaceEXT)( EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list );
 typedef EGLStreamKHR (GLAPIENTRY *PFN_eglCreateStreamAttribKHR)( EGLDisplay dpy, const EGLAttrib *attrib_list );
@@ -7023,12 +7637,20 @@ typedef EGLBoolean (GLAPIENTRY *PFN_eglDestroyImageKHR)( EGLDisplay dpy, EGLImag
 typedef EGLBoolean (GLAPIENTRY *PFN_eglDestroyStreamKHR)( EGLDisplay dpy, EGLStreamKHR stream );
 typedef EGLBoolean (GLAPIENTRY *PFN_eglDestroySyncKHR)( EGLDisplay dpy, EGLSyncKHR sync );
 typedef EGLBoolean (GLAPIENTRY *PFN_eglDestroySyncNV)( EGLSyncNV sync );
+typedef EGLint     (GLAPIENTRY *PFN_eglDupNativeFenceFDANDROID)( EGLDisplay dpy, EGLSyncKHR sync );
 typedef EGLBoolean (GLAPIENTRY *PFN_eglExportDMABUFImageMESA)( EGLDisplay dpy, EGLImageKHR image, int *fds, EGLint *strides, EGLint *offsets );
 typedef EGLBoolean (GLAPIENTRY *PFN_eglExportDMABUFImageQueryMESA)( EGLDisplay dpy, EGLImageKHR image, int *fourcc, int *num_planes, EGLuint64KHR *modifiers );
 typedef EGLBoolean (GLAPIENTRY *PFN_eglExportDRMImageMESA)( EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride );
 typedef EGLBoolean (GLAPIENTRY *PFN_eglFenceNV)( EGLSyncNV sync );
+typedef EGLBoolean (GLAPIENTRY *PFN_eglGetCompositorTimingANDROID)( EGLDisplay dpy, EGLSurface surface, EGLint numTimestamps,  const EGLint *names, EGLnsecsANDROID *values );
+typedef EGLBoolean (GLAPIENTRY *PFN_eglGetCompositorTimingSupportedANDROID)( EGLDisplay dpy, EGLSurface surface, EGLint name );
 typedef char *     (GLAPIENTRY *PFN_eglGetDisplayDriverConfig)( EGLDisplay dpy );
 typedef const char * (GLAPIENTRY *PFN_eglGetDisplayDriverName)( EGLDisplay dpy );
+typedef EGLBoolean (GLAPIENTRY *PFN_eglGetFrameTimestampSupportedANDROID)( EGLDisplay dpy, EGLSurface surface, EGLint timestamp );
+typedef EGLBoolean (GLAPIENTRY *PFN_eglGetFrameTimestampsANDROID)( EGLDisplay dpy, EGLSurface surface, EGLuint64KHR frameId, EGLint numTimestamps,  const EGLint *timestamps, EGLnsecsANDROID *values );
+typedef EGLBoolean (GLAPIENTRY *PFN_eglGetMscRateANGLE)( EGLDisplay dpy, EGLSurface surface, EGLint *numerator, EGLint *denominator );
+typedef EGLClientBuffer (GLAPIENTRY *PFN_eglGetNativeClientBufferANDROID)( const struct AHardwareBuffer *buffer );
+typedef EGLBoolean (GLAPIENTRY *PFN_eglGetNextFrameIdANDROID)( EGLDisplay dpy, EGLSurface surface, EGLuint64KHR *frameId );
 typedef EGLBoolean (GLAPIENTRY *PFN_eglGetOutputLayersEXT)( EGLDisplay dpy, const EGLAttrib *attrib_list, EGLOutputLayerEXT *layers, EGLint max_layers, EGLint *num_layers );
 typedef EGLBoolean (GLAPIENTRY *PFN_eglGetOutputPortsEXT)( EGLDisplay dpy, const EGLAttrib *attrib_list, EGLOutputPortEXT *ports, EGLint max_ports, EGLint *num_ports );
 typedef EGLDisplay (GLAPIENTRY *PFN_eglGetPlatformDisplayEXT)( EGLenum platform, void *native_display, const EGLint *attrib_list );
@@ -7042,6 +7664,7 @@ typedef EGLBoolean (GLAPIENTRY *PFN_eglLockSurfaceKHR)( EGLDisplay dpy, EGLSurfa
 typedef EGLBoolean (GLAPIENTRY *PFN_eglOutputLayerAttribEXT)( EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib value );
 typedef EGLBoolean (GLAPIENTRY *PFN_eglOutputPortAttribEXT)( EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib value );
 typedef EGLBoolean (GLAPIENTRY *PFN_eglPostSubBufferNV)( EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height );
+typedef EGLBoolean (GLAPIENTRY *PFN_eglPresentationTimeANDROID)( EGLDisplay dpy, EGLSurface surface, EGLnsecsANDROID time );
 typedef EGLBoolean (GLAPIENTRY *PFN_eglQueryDebugKHR)( EGLint attribute, EGLAttrib *value );
 typedef EGLBoolean (GLAPIENTRY *PFN_eglQueryDeviceAttribEXT)( EGLDeviceEXT device, EGLint attribute, EGLAttrib *value );
 typedef EGLBoolean (GLAPIENTRY *PFN_eglQueryDeviceBinaryEXT)( EGLDeviceEXT device, EGLint name, EGLint max_size, void *value, EGLint *size );
@@ -7067,8 +7690,10 @@ typedef EGLBoolean (GLAPIENTRY *PFN_eglQueryStreamTimeKHR)( EGLDisplay dpy, EGLS
 typedef EGLBoolean (GLAPIENTRY *PFN_eglQueryStreamu64KHR)( EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR *value );
 typedef EGLBoolean (GLAPIENTRY *PFN_eglQuerySupportedCompressionRatesEXT)( EGLDisplay dpy, EGLConfig config, const EGLAttrib *attrib_list, EGLint *rates, EGLint rate_size, EGLint *num_rates );
 typedef EGLBoolean (GLAPIENTRY *PFN_eglQuerySurface64KHR)( EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLAttribKHR *value );
+typedef EGLBoolean (GLAPIENTRY *PFN_eglQuerySurfacePointerANGLE)( EGLDisplay dpy, EGLSurface surface, EGLint attribute, void **value );
 typedef EGLBoolean (GLAPIENTRY *PFN_eglQueryWaylandBufferWL)( EGLDisplay dpy, struct wl_resource *buffer, EGLint attribute, EGLint *value );
 typedef EGLBoolean (GLAPIENTRY *PFN_eglResetStreamNV)( EGLDisplay dpy, EGLStreamKHR stream );
+typedef void       (GLAPIENTRY *PFN_eglSetBlobCacheFuncsANDROID)( EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get );
 typedef EGLBoolean (GLAPIENTRY *PFN_eglSetDamageRegionKHR)( EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects );
 typedef EGLBoolean (GLAPIENTRY *PFN_eglSetStreamAttribKHR)( EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib value );
 typedef EGLBoolean (GLAPIENTRY *PFN_eglSetStreamMetadataNV)( EGLDisplay dpy, EGLStreamKHR stream, EGLint n, EGLint offset, EGLint size, const void *data );
@@ -7086,6 +7711,8 @@ typedef EGLBoolean (GLAPIENTRY *PFN_eglStreamConsumerReleaseKHR)( EGLDisplay dpy
 typedef EGLBoolean (GLAPIENTRY *PFN_eglStreamFlushNV)( EGLDisplay dpy, EGLStreamKHR stream );
 typedef EGLBoolean (GLAPIENTRY *PFN_eglStreamImageConsumerConnectNV)( EGLDisplay dpy, EGLStreamKHR stream, EGLint num_modifiers, const EGLuint64KHR *modifiers, const EGLAttrib *attrib_list );
 typedef EGLBoolean (GLAPIENTRY *PFN_eglStreamReleaseImageNV)( EGLDisplay dpy, EGLStreamKHR stream, EGLImage image, EGLSync sync );
+typedef EGLBoolean (GLAPIENTRY *PFN_eglSwapBuffersRegion2NOK)( EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects );
+typedef EGLBoolean (GLAPIENTRY *PFN_eglSwapBuffersRegionNOK)( EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects );
 typedef EGLBoolean (GLAPIENTRY *PFN_eglSwapBuffersWithDamageEXT)( EGLDisplay dpy, EGLSurface surface, const EGLint *rects, EGLint n_rects );
 typedef EGLBoolean (GLAPIENTRY *PFN_eglSwapBuffersWithDamageKHR)( EGLDisplay dpy, EGLSurface surface, const EGLint *rects, EGLint n_rects );
 typedef EGLBoolean (GLAPIENTRY *PFN_eglUnbindWaylandDisplayWL)( EGLDisplay dpy, struct wl_display *display );
@@ -7103,6 +7730,7 @@ typedef void       (GLAPIENTRY *PFN_glActiveVaryingNV)( GLuint program, const GL
 typedef void       (GLAPIENTRY *PFN_glAlphaFragmentOp1ATI)( GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod );
 typedef void       (GLAPIENTRY *PFN_glAlphaFragmentOp2ATI)( GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod );
 typedef void       (GLAPIENTRY *PFN_glAlphaFragmentOp3ATI)( GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod );
+typedef void       (GLAPIENTRY *PFN_glAlphaFuncQCOM)( GLenum func, GLclampf ref );
 typedef void       (GLAPIENTRY *PFN_glAlphaFuncx)( GLenum func, GLfixed ref );
 typedef void       (GLAPIENTRY *PFN_glAlphaFuncxOES)( GLenum func, GLfixed ref );
 typedef void       (GLAPIENTRY *PFN_glAlphaToCoverageDitherControlNV)( GLenum mode );
@@ -7126,6 +7754,7 @@ typedef void       (GLAPIENTRY *PFN_glBeginPerfMonitorAMD)( GLuint monitor );
 typedef void       (GLAPIENTRY *PFN_glBeginPerfQueryINTEL)( GLuint queryHandle );
 typedef void       (GLAPIENTRY *PFN_glBeginQuery)( GLenum target, GLuint id );
 typedef void       (GLAPIENTRY *PFN_glBeginQueryARB)( GLenum target, GLuint id );
+typedef void       (GLAPIENTRY *PFN_glBeginQueryEXT)( GLenum target, GLuint id );
 typedef void       (GLAPIENTRY *PFN_glBeginQueryIndexed)( GLenum target, GLuint index, GLuint id );
 typedef void       (GLAPIENTRY *PFN_glBeginTransformFeedback)( GLenum primitiveMode );
 typedef void       (GLAPIENTRY *PFN_glBeginTransformFeedbackEXT)( GLenum primitiveMode );
@@ -7149,9 +7778,11 @@ typedef void       (GLAPIENTRY *PFN_glBindBuffersRange)( GLenum target, GLuint f
 typedef void       (GLAPIENTRY *PFN_glBindFragDataLocation)( GLuint program, GLuint color, const GLchar *name );
 typedef void       (GLAPIENTRY *PFN_glBindFragDataLocationEXT)( GLuint program, GLuint color, const GLchar *name );
 typedef void       (GLAPIENTRY *PFN_glBindFragDataLocationIndexed)( GLuint program, GLuint colorNumber, GLuint index, const GLchar *name );
+typedef void       (GLAPIENTRY *PFN_glBindFragDataLocationIndexedEXT)( GLuint program, GLuint colorNumber, GLuint index, const GLchar *name );
 typedef void       (GLAPIENTRY *PFN_glBindFragmentShaderATI)( GLuint id );
 typedef void       (GLAPIENTRY *PFN_glBindFramebuffer)( GLenum target, GLuint framebuffer );
 typedef void       (GLAPIENTRY *PFN_glBindFramebufferEXT)( GLenum target, GLuint framebuffer );
+typedef void       (GLAPIENTRY *PFN_glBindFramebufferOES)( GLenum target, GLuint framebuffer );
 typedef void       (GLAPIENTRY *PFN_glBindImageTexture)( GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format );
 typedef void       (GLAPIENTRY *PFN_glBindImageTextureEXT)( GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format );
 typedef void       (GLAPIENTRY *PFN_glBindImageTextures)( GLuint first, GLsizei count, const GLuint *textures );
@@ -7164,6 +7795,7 @@ typedef void       (GLAPIENTRY *PFN_glBindProgramNV)( GLenum target, GLuint id )
 typedef void       (GLAPIENTRY *PFN_glBindProgramPipeline)( GLuint pipeline );
 typedef void       (GLAPIENTRY *PFN_glBindRenderbuffer)( GLenum target, GLuint renderbuffer );
 typedef void       (GLAPIENTRY *PFN_glBindRenderbufferEXT)( GLenum target, GLuint renderbuffer );
+typedef void       (GLAPIENTRY *PFN_glBindRenderbufferOES)( GLenum target, GLuint renderbuffer );
 typedef void       (GLAPIENTRY *PFN_glBindSampler)( GLuint unit, GLuint sampler );
 typedef void       (GLAPIENTRY *PFN_glBindSamplers)( GLuint first, GLsizei count, const GLuint *samplers );
 typedef void       (GLAPIENTRY *PFN_glBindShadingRateImageNV)( GLuint texture );
@@ -7176,6 +7808,7 @@ typedef void       (GLAPIENTRY *PFN_glBindTransformFeedback)( GLenum target, GLu
 typedef void       (GLAPIENTRY *PFN_glBindTransformFeedbackNV)( GLenum target, GLuint id );
 typedef void       (GLAPIENTRY *PFN_glBindVertexArray)( GLuint array );
 typedef void       (GLAPIENTRY *PFN_glBindVertexArrayAPPLE)( GLuint array );
+typedef void       (GLAPIENTRY *PFN_glBindVertexArrayOES)( GLuint array );
 typedef void       (GLAPIENTRY *PFN_glBindVertexBuffer)( GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride );
 typedef void       (GLAPIENTRY *PFN_glBindVertexBuffers)( GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides );
 typedef void       (GLAPIENTRY *PFN_glBindVertexShaderEXT)( GLuint id );
@@ -7202,27 +7835,40 @@ typedef void       (GLAPIENTRY *PFN_glBlendColorxOES)( GLfixed red, GLfixed gree
 typedef void       (GLAPIENTRY *PFN_glBlendEquation)( GLenum mode );
 typedef void       (GLAPIENTRY *PFN_glBlendEquationEXT)( GLenum mode );
 typedef void       (GLAPIENTRY *PFN_glBlendEquationIndexedAMD)( GLuint buf, GLenum mode );
+typedef void       (GLAPIENTRY *PFN_glBlendEquationOES)( GLenum mode );
 typedef void       (GLAPIENTRY *PFN_glBlendEquationSeparate)( GLenum modeRGB, GLenum modeAlpha );
 typedef void       (GLAPIENTRY *PFN_glBlendEquationSeparateEXT)( GLenum modeRGB, GLenum modeAlpha );
 typedef void       (GLAPIENTRY *PFN_glBlendEquationSeparateIndexedAMD)( GLuint buf, GLenum modeRGB, GLenum modeAlpha );
+typedef void       (GLAPIENTRY *PFN_glBlendEquationSeparateOES)( GLenum modeRGB, GLenum modeAlpha );
 typedef void       (GLAPIENTRY *PFN_glBlendEquationSeparatei)( GLuint buf, GLenum modeRGB, GLenum modeAlpha );
 typedef void       (GLAPIENTRY *PFN_glBlendEquationSeparateiARB)( GLuint buf, GLenum modeRGB, GLenum modeAlpha );
+typedef void       (GLAPIENTRY *PFN_glBlendEquationSeparateiEXT)( GLuint buf, GLenum modeRGB, GLenum modeAlpha );
+typedef void       (GLAPIENTRY *PFN_glBlendEquationSeparateiOES)( GLuint buf, GLenum modeRGB, GLenum modeAlpha );
 typedef void       (GLAPIENTRY *PFN_glBlendEquationi)( GLuint buf, GLenum mode );
 typedef void       (GLAPIENTRY *PFN_glBlendEquationiARB)( GLuint buf, GLenum mode );
+typedef void       (GLAPIENTRY *PFN_glBlendEquationiEXT)( GLuint buf, GLenum mode );
+typedef void       (GLAPIENTRY *PFN_glBlendEquationiOES)( GLuint buf, GLenum mode );
 typedef void       (GLAPIENTRY *PFN_glBlendFuncIndexedAMD)( GLuint buf, GLenum src, GLenum dst );
 typedef void       (GLAPIENTRY *PFN_glBlendFuncSeparate)( GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha );
 typedef void       (GLAPIENTRY *PFN_glBlendFuncSeparateEXT)( GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha );
 typedef void       (GLAPIENTRY *PFN_glBlendFuncSeparateINGR)( GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha );
 typedef void       (GLAPIENTRY *PFN_glBlendFuncSeparateIndexedAMD)( GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha );
+typedef void       (GLAPIENTRY *PFN_glBlendFuncSeparateOES)( GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha );
 typedef void       (GLAPIENTRY *PFN_glBlendFuncSeparatei)( GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha );
 typedef void       (GLAPIENTRY *PFN_glBlendFuncSeparateiARB)( GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha );
+typedef void       (GLAPIENTRY *PFN_glBlendFuncSeparateiEXT)( GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha );
+typedef void       (GLAPIENTRY *PFN_glBlendFuncSeparateiOES)( GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha );
 typedef void       (GLAPIENTRY *PFN_glBlendFunci)( GLuint buf, GLenum src, GLenum dst );
 typedef void       (GLAPIENTRY *PFN_glBlendFunciARB)( GLuint buf, GLenum src, GLenum dst );
+typedef void       (GLAPIENTRY *PFN_glBlendFunciEXT)( GLuint buf, GLenum src, GLenum dst );
+typedef void       (GLAPIENTRY *PFN_glBlendFunciOES)( GLuint buf, GLenum src, GLenum dst );
 typedef void       (GLAPIENTRY *PFN_glBlendParameteriNV)( GLenum pname, GLint value );
 typedef void       (GLAPIENTRY *PFN_glBlitFramebuffer)( GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter );
+typedef void       (GLAPIENTRY *PFN_glBlitFramebufferANGLE)( GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter );
 typedef void       (GLAPIENTRY *PFN_glBlitFramebufferEXT)( GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter );
 typedef void       (GLAPIENTRY *PFN_glBlitFramebufferLayerEXT)( GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint srcLayer, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLint dstLayer, GLbitfield mask, GLenum filter );
 typedef void       (GLAPIENTRY *PFN_glBlitFramebufferLayersEXT)( GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter );
+typedef void       (GLAPIENTRY *PFN_glBlitFramebufferNV)( GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter );
 typedef void       (GLAPIENTRY *PFN_glBlitNamedFramebuffer)( GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter );
 typedef void       (GLAPIENTRY *PFN_glBufferAddressRangeNV)( GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length );
 typedef void       (GLAPIENTRY *PFN_glBufferAttachMemoryNV)( GLenum target, GLuint memory, GLuint64 offset );
@@ -7233,6 +7879,7 @@ typedef void       (GLAPIENTRY *PFN_glBufferPageCommitmentMemNV)( GLenum target,
 typedef void       (GLAPIENTRY *PFN_glBufferParameteriAPPLE)( GLenum target, GLenum pname, GLint param );
 typedef GLuint     (GLAPIENTRY *PFN_glBufferRegionEnabled)(void);
 typedef void       (GLAPIENTRY *PFN_glBufferStorage)( GLenum target, GLsizeiptr size, const void *data, GLbitfield flags );
+typedef void       (GLAPIENTRY *PFN_glBufferStorageEXT)( GLenum target, GLsizeiptr size, const void *data, GLbitfield flags );
 typedef void       (GLAPIENTRY *PFN_glBufferStorageExternalEXT)( GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags );
 typedef void       (GLAPIENTRY *PFN_glBufferStorageMemEXT)( GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset );
 typedef void       (GLAPIENTRY *PFN_glBufferSubData)( GLenum target, GLintptr offset, GLsizeiptr size, const void *data );
@@ -7240,6 +7887,7 @@ typedef void       (GLAPIENTRY *PFN_glBufferSubDataARB)( GLenum target, GLintptr
 typedef void       (GLAPIENTRY *PFN_glCallCommandListNV)( GLuint list );
 typedef GLenum     (GLAPIENTRY *PFN_glCheckFramebufferStatus)( GLenum target );
 typedef GLenum     (GLAPIENTRY *PFN_glCheckFramebufferStatusEXT)( GLenum target );
+typedef GLenum     (GLAPIENTRY *PFN_glCheckFramebufferStatusOES)( GLenum target );
 typedef GLenum     (GLAPIENTRY *PFN_glCheckNamedFramebufferStatus)( GLuint framebuffer, GLenum target );
 typedef GLenum     (GLAPIENTRY *PFN_glCheckNamedFramebufferStatusEXT)( GLuint framebuffer, GLenum target );
 typedef void       (GLAPIENTRY *PFN_glClampColor)( GLenum target, GLenum clamp );
@@ -7268,18 +7916,25 @@ typedef void       (GLAPIENTRY *PFN_glClearNamedFramebufferfi)( GLuint framebuff
 typedef void       (GLAPIENTRY *PFN_glClearNamedFramebufferfv)( GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value );
 typedef void       (GLAPIENTRY *PFN_glClearNamedFramebufferiv)( GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value );
 typedef void       (GLAPIENTRY *PFN_glClearNamedFramebufferuiv)( GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value );
+typedef void       (GLAPIENTRY *PFN_glClearPixelLocalStorageuiEXT)( GLsizei offset, GLsizei n, const GLuint *values );
 typedef void       (GLAPIENTRY *PFN_glClearTexImage)( GLuint texture, GLint level, GLenum format, GLenum type, const void *data );
+typedef void       (GLAPIENTRY *PFN_glClearTexImageEXT)( GLuint texture, GLint level, GLenum format, GLenum type, const void *data );
 typedef void       (GLAPIENTRY *PFN_glClearTexSubImage)( GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data );
+typedef void       (GLAPIENTRY *PFN_glClearTexSubImageEXT)( GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data );
 typedef void       (GLAPIENTRY *PFN_glClientActiveTexture)( GLenum texture );
 typedef void       (GLAPIENTRY *PFN_glClientActiveTextureARB)( GLenum texture );
 typedef void       (GLAPIENTRY *PFN_glClientActiveVertexStreamATI)( GLenum stream );
 typedef void       (GLAPIENTRY *PFN_glClientAttribDefaultEXT)( GLbitfield mask );
 typedef void       (GLAPIENTRY *PFN_glClientWaitSemaphoreui64NVX)( GLsizei fenceObjectCount, const GLuint *semaphoreArray, const GLuint64 *fenceValueArray );
 typedef GLenum     (GLAPIENTRY *PFN_glClientWaitSync)( GLsync sync, GLbitfield flags, GLuint64 timeout );
+typedef GLenum     (GLAPIENTRY *PFN_glClientWaitSyncAPPLE)( GLsync sync, GLbitfield flags, GLuint64 timeout );
 typedef void       (GLAPIENTRY *PFN_glClipControl)( GLenum origin, GLenum depth );
+typedef void       (GLAPIENTRY *PFN_glClipControlEXT)( GLenum origin, GLenum depth );
 typedef void       (GLAPIENTRY *PFN_glClipPlanef)( GLenum p, const GLfloat *eqn );
+typedef void       (GLAPIENTRY *PFN_glClipPlanefIMG)( GLenum p, const GLfloat *eqn );
 typedef void       (GLAPIENTRY *PFN_glClipPlanefOES)( GLenum plane, const GLfloat *equation );
 typedef void       (GLAPIENTRY *PFN_glClipPlanex)( GLenum plane, const GLfixed *equation );
+typedef void       (GLAPIENTRY *PFN_glClipPlanexIMG)( GLenum p, const GLfixed *eqn );
 typedef void       (GLAPIENTRY *PFN_glClipPlanexOES)( GLenum plane, const GLfixed *equation );
 typedef void       (GLAPIENTRY *PFN_glColor3fVertex3fSUN)( GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z );
 typedef void       (GLAPIENTRY *PFN_glColor3fVertex3fvSUN)( const GLfloat *c, const GLfloat *v );
@@ -7304,6 +7959,8 @@ typedef void       (GLAPIENTRY *PFN_glColorFragmentOp2ATI)( GLenum op, GLuint ds
 typedef void       (GLAPIENTRY *PFN_glColorFragmentOp3ATI)( GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod );
 typedef void       (GLAPIENTRY *PFN_glColorMaskIndexedEXT)( GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a );
 typedef void       (GLAPIENTRY *PFN_glColorMaski)( GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a );
+typedef void       (GLAPIENTRY *PFN_glColorMaskiEXT)( GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a );
+typedef void       (GLAPIENTRY *PFN_glColorMaskiOES)( GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a );
 typedef void       (GLAPIENTRY *PFN_glColorP3ui)( GLenum type, GLuint color );
 typedef void       (GLAPIENTRY *PFN_glColorP3uiv)( GLenum type, const GLuint *color );
 typedef void       (GLAPIENTRY *PFN_glColorP4ui)( GLenum type, GLuint color );
@@ -7344,12 +8001,14 @@ typedef void       (GLAPIENTRY *PFN_glCompressedTexImage2D)( GLenum target, GLin
 typedef void       (GLAPIENTRY *PFN_glCompressedTexImage2DARB)( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data );
 typedef void       (GLAPIENTRY *PFN_glCompressedTexImage3D)( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data );
 typedef void       (GLAPIENTRY *PFN_glCompressedTexImage3DARB)( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data );
+typedef void       (GLAPIENTRY *PFN_glCompressedTexImage3DOES)( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data );
 typedef void       (GLAPIENTRY *PFN_glCompressedTexSubImage1D)( GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data );
 typedef void       (GLAPIENTRY *PFN_glCompressedTexSubImage1DARB)( GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data );
 typedef void       (GLAPIENTRY *PFN_glCompressedTexSubImage2D)( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data );
 typedef void       (GLAPIENTRY *PFN_glCompressedTexSubImage2DARB)( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data );
 typedef void       (GLAPIENTRY *PFN_glCompressedTexSubImage3D)( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data );
 typedef void       (GLAPIENTRY *PFN_glCompressedTexSubImage3DARB)( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data );
+typedef void       (GLAPIENTRY *PFN_glCompressedTexSubImage3DOES)( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data );
 typedef void       (GLAPIENTRY *PFN_glCompressedTextureImage1DEXT)( GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits );
 typedef void       (GLAPIENTRY *PFN_glCompressedTextureImage2DEXT)( GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits );
 typedef void       (GLAPIENTRY *PFN_glCompressedTextureImage3DEXT)( GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits );
@@ -7376,6 +8035,7 @@ typedef void       (GLAPIENTRY *PFN_glConvolutionParameterivEXT)( GLenum target,
 typedef void       (GLAPIENTRY *PFN_glConvolutionParameterxOES)( GLenum target, GLenum pname, GLfixed param );
 typedef void       (GLAPIENTRY *PFN_glConvolutionParameterxvOES)( GLenum target, GLenum pname, const GLfixed *params );
 typedef void       (GLAPIENTRY *PFN_glCopyBufferSubData)( GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size );
+typedef void       (GLAPIENTRY *PFN_glCopyBufferSubDataNV)( GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size );
 typedef void       (GLAPIENTRY *PFN_glCopyColorSubTable)( GLenum target, GLsizei start, GLint x, GLint y, GLsizei width );
 typedef void       (GLAPIENTRY *PFN_glCopyColorSubTableEXT)( GLenum target, GLsizei start, GLint x, GLint y, GLsizei width );
 typedef void       (GLAPIENTRY *PFN_glCopyColorTable)( GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width );
@@ -7385,7 +8045,9 @@ typedef void       (GLAPIENTRY *PFN_glCopyConvolutionFilter1DEXT)( GLenum target
 typedef void       (GLAPIENTRY *PFN_glCopyConvolutionFilter2D)( GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height );
 typedef void       (GLAPIENTRY *PFN_glCopyConvolutionFilter2DEXT)( GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height );
 typedef void       (GLAPIENTRY *PFN_glCopyImageSubData)( GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth );
+typedef void       (GLAPIENTRY *PFN_glCopyImageSubDataEXT)( GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth );
 typedef void       (GLAPIENTRY *PFN_glCopyImageSubDataNV)( GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth );
+typedef void       (GLAPIENTRY *PFN_glCopyImageSubDataOES)( GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth );
 typedef void       (GLAPIENTRY *PFN_glCopyMultiTexImage1DEXT)( GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border );
 typedef void       (GLAPIENTRY *PFN_glCopyMultiTexImage2DEXT)( GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border );
 typedef void       (GLAPIENTRY *PFN_glCopyMultiTexSubImage1DEXT)( GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width );
@@ -7399,8 +8061,10 @@ typedef void       (GLAPIENTRY *PFN_glCopyTexSubImage1DEXT)( GLenum target, GLin
 typedef void       (GLAPIENTRY *PFN_glCopyTexSubImage2DEXT)( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height );
 typedef void       (GLAPIENTRY *PFN_glCopyTexSubImage3D)( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height );
 typedef void       (GLAPIENTRY *PFN_glCopyTexSubImage3DEXT)( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height );
+typedef void       (GLAPIENTRY *PFN_glCopyTexSubImage3DOES)( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height );
 typedef void       (GLAPIENTRY *PFN_glCopyTextureImage1DEXT)( GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border );
 typedef void       (GLAPIENTRY *PFN_glCopyTextureImage2DEXT)( GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border );
+typedef void       (GLAPIENTRY *PFN_glCopyTextureLevelsAPPLE)( GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount );
 typedef void       (GLAPIENTRY *PFN_glCopyTextureSubImage1D)( GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width );
 typedef void       (GLAPIENTRY *PFN_glCopyTextureSubImage1DEXT)( GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width );
 typedef void       (GLAPIENTRY *PFN_glCopyTextureSubImage2D)( GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height );
@@ -7411,8 +8075,10 @@ typedef void       (GLAPIENTRY *PFN_glCoverFillPathInstancedNV)( GLsizei numPath
 typedef void       (GLAPIENTRY *PFN_glCoverFillPathNV)( GLuint path, GLenum coverMode );
 typedef void       (GLAPIENTRY *PFN_glCoverStrokePathInstancedNV)( GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues );
 typedef void       (GLAPIENTRY *PFN_glCoverStrokePathNV)( GLuint path, GLenum coverMode );
+typedef void       (GLAPIENTRY *PFN_glCoverageMaskNV)( GLboolean mask );
 typedef void       (GLAPIENTRY *PFN_glCoverageModulationNV)( GLenum components );
 typedef void       (GLAPIENTRY *PFN_glCoverageModulationTableNV)( GLsizei n, const GLfloat *v );
+typedef void       (GLAPIENTRY *PFN_glCoverageOperationNV)( GLenum operation );
 typedef void       (GLAPIENTRY *PFN_glCreateBuffers)( GLsizei n, GLuint *buffers );
 typedef void       (GLAPIENTRY *PFN_glCreateCommandListsNV)( GLsizei n, GLuint *lists );
 typedef void       (GLAPIENTRY *PFN_glCreateFramebuffers)( GLsizei n, GLuint *framebuffers );
@@ -7438,6 +8104,7 @@ typedef void       (GLAPIENTRY *PFN_glCreateVertexArrays)( GLsizei n, GLuint *ar
 typedef void       (GLAPIENTRY *PFN_glCullParameterdvEXT)( GLenum pname, GLdouble *params );
 typedef void       (GLAPIENTRY *PFN_glCullParameterfvEXT)( GLenum pname, GLfloat *params );
 typedef void       (GLAPIENTRY *PFN_glCurrentPaletteMatrixARB)( GLint index );
+typedef void       (GLAPIENTRY *PFN_glCurrentPaletteMatrixOES)( GLuint matrixpaletteindex );
 typedef void       (GLAPIENTRY *PFN_glDebugMessageCallback)( GLDEBUGPROC callback, const void *userParam );
 typedef void       (GLAPIENTRY *PFN_glDebugMessageCallbackAMD)( GLDEBUGPROCAMD callback, void *userParam );
 typedef void       (GLAPIENTRY *PFN_glDebugMessageCallbackARB)( GLDEBUGPROCARB callback, const void *userParam );
@@ -7460,6 +8127,7 @@ typedef void       (GLAPIENTRY *PFN_glDeleteFencesNV)( GLsizei n, const GLuint *
 typedef void       (GLAPIENTRY *PFN_glDeleteFragmentShaderATI)( GLuint id );
 typedef void       (GLAPIENTRY *PFN_glDeleteFramebuffers)( GLsizei n, const GLuint *framebuffers );
 typedef void       (GLAPIENTRY *PFN_glDeleteFramebuffersEXT)( GLsizei n, const GLuint *framebuffers );
+typedef void       (GLAPIENTRY *PFN_glDeleteFramebuffersOES)( GLsizei n, const GLuint *framebuffers );
 typedef void       (GLAPIENTRY *PFN_glDeleteMemoryObjectsEXT)( GLsizei n, const GLuint *memoryObjects );
 typedef void       (GLAPIENTRY *PFN_glDeleteNamedStringARB)( GLint namelen, const GLchar *name );
 typedef void       (GLAPIENTRY *PFN_glDeleteNamesAMD)( GLenum identifier, GLuint num, const GLuint *names );
@@ -7475,26 +8143,34 @@ typedef void       (GLAPIENTRY *PFN_glDeleteProgramsARB)( GLsizei n, const GLuin
 typedef void       (GLAPIENTRY *PFN_glDeleteProgramsNV)( GLsizei n, const GLuint *programs );
 typedef void       (GLAPIENTRY *PFN_glDeleteQueries)( GLsizei n, const GLuint *ids );
 typedef void       (GLAPIENTRY *PFN_glDeleteQueriesARB)( GLsizei n, const GLuint *ids );
+typedef void       (GLAPIENTRY *PFN_glDeleteQueriesEXT)( GLsizei n, const GLuint *ids );
 typedef void       (GLAPIENTRY *PFN_glDeleteQueryResourceTagNV)( GLsizei n, const GLint *tagIds );
 typedef void       (GLAPIENTRY *PFN_glDeleteRenderbuffers)( GLsizei n, const GLuint *renderbuffers );
 typedef void       (GLAPIENTRY *PFN_glDeleteRenderbuffersEXT)( GLsizei n, const GLuint *renderbuffers );
+typedef void       (GLAPIENTRY *PFN_glDeleteRenderbuffersOES)( GLsizei n, const GLuint *renderbuffers );
 typedef void       (GLAPIENTRY *PFN_glDeleteSamplers)( GLsizei count, const GLuint *samplers );
 typedef void       (GLAPIENTRY *PFN_glDeleteSemaphoresEXT)( GLsizei n, const GLuint *semaphores );
 typedef void       (GLAPIENTRY *PFN_glDeleteShader)( GLuint shader );
 typedef void       (GLAPIENTRY *PFN_glDeleteStatesNV)( GLsizei n, const GLuint *states );
 typedef void       (GLAPIENTRY *PFN_glDeleteSync)( GLsync sync );
+typedef void       (GLAPIENTRY *PFN_glDeleteSyncAPPLE)( GLsync sync );
 typedef void       (GLAPIENTRY *PFN_glDeleteTexturesEXT)( GLsizei n, const GLuint *textures );
 typedef void       (GLAPIENTRY *PFN_glDeleteTransformFeedbacks)( GLsizei n, const GLuint *ids );
 typedef void       (GLAPIENTRY *PFN_glDeleteTransformFeedbacksNV)( GLsizei n, const GLuint *ids );
 typedef void       (GLAPIENTRY *PFN_glDeleteVertexArrays)( GLsizei n, const GLuint *arrays );
 typedef void       (GLAPIENTRY *PFN_glDeleteVertexArraysAPPLE)( GLsizei n, const GLuint *arrays );
+typedef void       (GLAPIENTRY *PFN_glDeleteVertexArraysOES)( GLsizei n, const GLuint *arrays );
 typedef void       (GLAPIENTRY *PFN_glDeleteVertexShaderEXT)( GLuint id );
 typedef void       (GLAPIENTRY *PFN_glDepthBoundsEXT)( GLclampd zmin, GLclampd zmax );
 typedef void       (GLAPIENTRY *PFN_glDepthBoundsdNV)( GLdouble zmin, GLdouble zmax );
 typedef void       (GLAPIENTRY *PFN_glDepthRangeArraydvNV)( GLuint first, GLsizei count, const GLdouble *v );
+typedef void       (GLAPIENTRY *PFN_glDepthRangeArrayfvNV)( GLuint first, GLsizei count, const GLfloat *v );
+typedef void       (GLAPIENTRY *PFN_glDepthRangeArrayfvOES)( GLuint first, GLsizei count, const GLfloat *v );
 typedef void       (GLAPIENTRY *PFN_glDepthRangeArrayv)( GLuint first, GLsizei count, const GLdouble *v );
 typedef void       (GLAPIENTRY *PFN_glDepthRangeIndexed)( GLuint index, GLdouble n, GLdouble f );
 typedef void       (GLAPIENTRY *PFN_glDepthRangeIndexeddNV)( GLuint index, GLdouble n, GLdouble f );
+typedef void       (GLAPIENTRY *PFN_glDepthRangeIndexedfNV)( GLuint index, GLfloat n, GLfloat f );
+typedef void       (GLAPIENTRY *PFN_glDepthRangeIndexedfOES)( GLuint index, GLfloat n, GLfloat f );
 typedef void       (GLAPIENTRY *PFN_glDepthRangedNV)( GLdouble zNear, GLdouble zFar );
 typedef void       (GLAPIENTRY *PFN_glDepthRangef)( GLfloat n, GLfloat f );
 typedef void       (GLAPIENTRY *PFN_glDepthRangefOES)( GLclampf n, GLclampf f );
@@ -7505,6 +8181,7 @@ typedef void       (GLAPIENTRY *PFN_glDetachShader)( GLuint program, GLuint shad
 typedef void       (GLAPIENTRY *PFN_glDetailTexFuncSGIS)( GLenum target, GLsizei n, const GLfloat *points );
 typedef void       (GLAPIENTRY *PFN_glDisableClientStateIndexedEXT)( GLenum array, GLuint index );
 typedef void       (GLAPIENTRY *PFN_glDisableClientStateiEXT)( GLenum array, GLuint index );
+typedef void       (GLAPIENTRY *PFN_glDisableDriverControlQCOM)( GLuint driverControl );
 typedef void       (GLAPIENTRY *PFN_glDisableIndexedEXT)( GLenum target, GLuint index );
 typedef void       (GLAPIENTRY *PFN_glDisableVariantClientStateEXT)( GLuint id );
 typedef void       (GLAPIENTRY *PFN_glDisableVertexArrayAttrib)( GLuint vaobj, GLuint index );
@@ -7514,19 +8191,29 @@ typedef void       (GLAPIENTRY *PFN_glDisableVertexAttribAPPLE)( GLuint index, G
 typedef void       (GLAPIENTRY *PFN_glDisableVertexAttribArray)( GLuint index );
 typedef void       (GLAPIENTRY *PFN_glDisableVertexAttribArrayARB)( GLuint index );
 typedef void       (GLAPIENTRY *PFN_glDisablei)( GLenum target, GLuint index );
+typedef void       (GLAPIENTRY *PFN_glDisableiEXT)( GLenum target, GLuint index );
+typedef void       (GLAPIENTRY *PFN_glDisableiNV)( GLenum target, GLuint index );
+typedef void       (GLAPIENTRY *PFN_glDisableiOES)( GLenum target, GLuint index );
+typedef void       (GLAPIENTRY *PFN_glDiscardFramebufferEXT)( GLenum target, GLsizei numAttachments, const GLenum *attachments );
 typedef void       (GLAPIENTRY *PFN_glDispatchCompute)( GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z );
 typedef void       (GLAPIENTRY *PFN_glDispatchComputeGroupSizeARB)( GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z );
 typedef void       (GLAPIENTRY *PFN_glDispatchComputeIndirect)( GLintptr indirect );
 typedef void       (GLAPIENTRY *PFN_glDrawArraysEXT)( GLenum mode, GLint first, GLsizei count );
 typedef void       (GLAPIENTRY *PFN_glDrawArraysIndirect)( GLenum mode, const void *indirect );
 typedef void       (GLAPIENTRY *PFN_glDrawArraysInstanced)( GLenum mode, GLint first, GLsizei count, GLsizei instancecount );
+typedef void       (GLAPIENTRY *PFN_glDrawArraysInstancedANGLE)( GLenum mode, GLint first, GLsizei count, GLsizei primcount );
 typedef void       (GLAPIENTRY *PFN_glDrawArraysInstancedARB)( GLenum mode, GLint first, GLsizei count, GLsizei primcount );
 typedef void       (GLAPIENTRY *PFN_glDrawArraysInstancedBaseInstance)( GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance );
+typedef void       (GLAPIENTRY *PFN_glDrawArraysInstancedBaseInstanceEXT)( GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance );
 typedef void       (GLAPIENTRY *PFN_glDrawArraysInstancedEXT)( GLenum mode, GLint start, GLsizei count, GLsizei primcount );
+typedef void       (GLAPIENTRY *PFN_glDrawArraysInstancedNV)( GLenum mode, GLint first, GLsizei count, GLsizei primcount );
 typedef void       (GLAPIENTRY *PFN_glDrawBufferRegion)( GLenum region, GLint x, GLint y, GLsizei width, GLsizei height, GLint xDest, GLint yDest );
 typedef void       (GLAPIENTRY *PFN_glDrawBuffers)( GLsizei n, const GLenum *bufs );
 typedef void       (GLAPIENTRY *PFN_glDrawBuffersARB)( GLsizei n, const GLenum *bufs );
 typedef void       (GLAPIENTRY *PFN_glDrawBuffersATI)( GLsizei n, const GLenum *bufs );
+typedef void       (GLAPIENTRY *PFN_glDrawBuffersEXT)( GLsizei n, const GLenum *bufs );
+typedef void       (GLAPIENTRY *PFN_glDrawBuffersIndexedEXT)( GLint n, const GLenum *location, const GLint *indices );
+typedef void       (GLAPIENTRY *PFN_glDrawBuffersNV)( GLsizei n, const GLenum *bufs );
 typedef void       (GLAPIENTRY *PFN_glDrawCommandsAddressNV)( GLenum primitiveMode, const GLuint64 *indirects, const GLsizei *sizes, GLuint count );
 typedef void       (GLAPIENTRY *PFN_glDrawCommandsNV)( GLenum primitiveMode, GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, GLuint count );
 typedef void       (GLAPIENTRY *PFN_glDrawCommandsStatesAddressNV)( const GLuint64 *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count );
@@ -7534,13 +8221,21 @@ typedef void       (GLAPIENTRY *PFN_glDrawCommandsStatesNV)( GLuint buffer, cons
 typedef void       (GLAPIENTRY *PFN_glDrawElementArrayAPPLE)( GLenum mode, GLint first, GLsizei count );
 typedef void       (GLAPIENTRY *PFN_glDrawElementArrayATI)( GLenum mode, GLsizei count );
 typedef void       (GLAPIENTRY *PFN_glDrawElementsBaseVertex)( GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex );
+typedef void       (GLAPIENTRY *PFN_glDrawElementsBaseVertexEXT)( GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex );
+typedef void       (GLAPIENTRY *PFN_glDrawElementsBaseVertexOES)( GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex );
 typedef void       (GLAPIENTRY *PFN_glDrawElementsIndirect)( GLenum mode, GLenum type, const void *indirect );
 typedef void       (GLAPIENTRY *PFN_glDrawElementsInstanced)( GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount );
+typedef void       (GLAPIENTRY *PFN_glDrawElementsInstancedANGLE)( GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount );
 typedef void       (GLAPIENTRY *PFN_glDrawElementsInstancedARB)( GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount );
 typedef void       (GLAPIENTRY *PFN_glDrawElementsInstancedBaseInstance)( GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance );
+typedef void       (GLAPIENTRY *PFN_glDrawElementsInstancedBaseInstanceEXT)( GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance );
 typedef void       (GLAPIENTRY *PFN_glDrawElementsInstancedBaseVertex)( GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex );
 typedef void       (GLAPIENTRY *PFN_glDrawElementsInstancedBaseVertexBaseInstance)( GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance );
+typedef void       (GLAPIENTRY *PFN_glDrawElementsInstancedBaseVertexBaseInstanceEXT)( GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance );
+typedef void       (GLAPIENTRY *PFN_glDrawElementsInstancedBaseVertexEXT)( GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex );
+typedef void       (GLAPIENTRY *PFN_glDrawElementsInstancedBaseVertexOES)( GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex );
 typedef void       (GLAPIENTRY *PFN_glDrawElementsInstancedEXT)( GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount );
+typedef void       (GLAPIENTRY *PFN_glDrawElementsInstancedNV)( GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount );
 typedef void       (GLAPIENTRY *PFN_glDrawMeshArraysSUN)( GLenum mode, GLint first, GLsizei count, GLsizei width );
 typedef void       (GLAPIENTRY *PFN_glDrawMeshTasksEXT)( GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z );
 typedef void       (GLAPIENTRY *PFN_glDrawMeshTasksIndirectEXT)( GLintptr indirect );
@@ -7550,15 +8245,29 @@ typedef void       (GLAPIENTRY *PFN_glDrawRangeElementArrayAPPLE)( GLenum mode,
 typedef void       (GLAPIENTRY *PFN_glDrawRangeElementArrayATI)( GLenum mode, GLuint start, GLuint end, GLsizei count );
 typedef void       (GLAPIENTRY *PFN_glDrawRangeElements)( GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices );
 typedef void       (GLAPIENTRY *PFN_glDrawRangeElementsBaseVertex)( GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex );
+typedef void       (GLAPIENTRY *PFN_glDrawRangeElementsBaseVertexEXT)( GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex );
+typedef void       (GLAPIENTRY *PFN_glDrawRangeElementsBaseVertexOES)( GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex );
 typedef void       (GLAPIENTRY *PFN_glDrawRangeElementsEXT)( GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices );
+typedef void       (GLAPIENTRY *PFN_glDrawTexfOES)( GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height );
+typedef void       (GLAPIENTRY *PFN_glDrawTexfvOES)( const GLfloat *coords );
+typedef void       (GLAPIENTRY *PFN_glDrawTexiOES)( GLint x, GLint y, GLint z, GLint width, GLint height );
+typedef void       (GLAPIENTRY *PFN_glDrawTexivOES)( const GLint *coords );
+typedef void       (GLAPIENTRY *PFN_glDrawTexsOES)( GLshort x, GLshort y, GLshort z, GLshort width, GLshort height );
+typedef void       (GLAPIENTRY *PFN_glDrawTexsvOES)( const GLshort *coords );
 typedef void       (GLAPIENTRY *PFN_glDrawTextureNV)( GLuint texture, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1 );
+typedef void       (GLAPIENTRY *PFN_glDrawTexxOES)( GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height );
+typedef void       (GLAPIENTRY *PFN_glDrawTexxvOES)( const GLfixed *coords );
 typedef void       (GLAPIENTRY *PFN_glDrawTransformFeedback)( GLenum mode, GLuint id );
+typedef void       (GLAPIENTRY *PFN_glDrawTransformFeedbackEXT)( GLenum mode, GLuint id );
 typedef void       (GLAPIENTRY *PFN_glDrawTransformFeedbackInstanced)( GLenum mode, GLuint id, GLsizei instancecount );
+typedef void       (GLAPIENTRY *PFN_glDrawTransformFeedbackInstancedEXT)( GLenum mode, GLuint id, GLsizei instancecount );
 typedef void       (GLAPIENTRY *PFN_glDrawTransformFeedbackNV)( GLenum mode, GLuint id );
 typedef void       (GLAPIENTRY *PFN_glDrawTransformFeedbackStream)( GLenum mode, GLuint id, GLuint stream );
 typedef void       (GLAPIENTRY *PFN_glDrawTransformFeedbackStreamInstanced)( GLenum mode, GLuint id, GLuint stream, GLsizei instancecount );
 typedef void       (GLAPIENTRY *PFN_glDrawVkImageNV)( GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1 );
+typedef void       (GLAPIENTRY *PFN_glEGLImageTargetRenderbufferStorageOES)( GLenum target, GLeglImageOES image );
 typedef void       (GLAPIENTRY *PFN_glEGLImageTargetTexStorageEXT)( GLenum target, GLeglImageOES image, const GLint* attrib_list );
+typedef void       (GLAPIENTRY *PFN_glEGLImageTargetTexture2DOES)( GLenum target, GLeglImageOES image );
 typedef void       (GLAPIENTRY *PFN_glEGLImageTargetTextureStorageEXT)( GLuint texture, GLeglImageOES image, const GLint* attrib_list );
 typedef void       (GLAPIENTRY *PFN_glEdgeFlagFormatNV)( GLsizei stride );
 typedef void       (GLAPIENTRY *PFN_glEdgeFlagPointerEXT)( GLsizei stride, GLsizei count, const GLboolean *pointer );
@@ -7567,6 +8276,7 @@ typedef void       (GLAPIENTRY *PFN_glElementPointerAPPLE)( GLenum type, const v
 typedef void       (GLAPIENTRY *PFN_glElementPointerATI)( GLenum type, const void *pointer );
 typedef void       (GLAPIENTRY *PFN_glEnableClientStateIndexedEXT)( GLenum array, GLuint index );
 typedef void       (GLAPIENTRY *PFN_glEnableClientStateiEXT)( GLenum array, GLuint index );
+typedef void       (GLAPIENTRY *PFN_glEnableDriverControlQCOM)( GLuint driverControl );
 typedef void       (GLAPIENTRY *PFN_glEnableIndexedEXT)( GLenum target, GLuint index );
 typedef void       (GLAPIENTRY *PFN_glEnableVariantClientStateEXT)( GLuint id );
 typedef void       (GLAPIENTRY *PFN_glEnableVertexArrayAttrib)( GLuint vaobj, GLuint index );
@@ -7576,6 +8286,9 @@ typedef void       (GLAPIENTRY *PFN_glEnableVertexAttribAPPLE)( GLuint index, GL
 typedef void       (GLAPIENTRY *PFN_glEnableVertexAttribArray)( GLuint index );
 typedef void       (GLAPIENTRY *PFN_glEnableVertexAttribArrayARB)( GLuint index );
 typedef void       (GLAPIENTRY *PFN_glEnablei)( GLenum target, GLuint index );
+typedef void       (GLAPIENTRY *PFN_glEnableiEXT)( GLenum target, GLuint index );
+typedef void       (GLAPIENTRY *PFN_glEnableiNV)( GLenum target, GLuint index );
+typedef void       (GLAPIENTRY *PFN_glEnableiOES)( GLenum target, GLuint index );
 typedef void       (GLAPIENTRY *PFN_glEndConditionalRender)(void);
 typedef void       (GLAPIENTRY *PFN_glEndConditionalRenderNV)(void);
 typedef void       (GLAPIENTRY *PFN_glEndConditionalRenderNVX)(void);
@@ -7585,7 +8298,9 @@ typedef void       (GLAPIENTRY *PFN_glEndPerfMonitorAMD)( GLuint monitor );
 typedef void       (GLAPIENTRY *PFN_glEndPerfQueryINTEL)( GLuint queryHandle );
 typedef void       (GLAPIENTRY *PFN_glEndQuery)( GLenum target );
 typedef void       (GLAPIENTRY *PFN_glEndQueryARB)( GLenum target );
+typedef void       (GLAPIENTRY *PFN_glEndQueryEXT)( GLenum target );
 typedef void       (GLAPIENTRY *PFN_glEndQueryIndexed)( GLenum target, GLuint index );
+typedef void       (GLAPIENTRY *PFN_glEndTilingQCOM)( GLbitfield preserveMask );
 typedef void       (GLAPIENTRY *PFN_glEndTransformFeedback)(void);
 typedef void       (GLAPIENTRY *PFN_glEndTransformFeedbackEXT)(void);
 typedef void       (GLAPIENTRY *PFN_glEndTransformFeedbackNV)(void);
@@ -7598,9 +8313,23 @@ typedef void       (GLAPIENTRY *PFN_glEvalCoord2xvOES)( const GLfixed *coords );
 typedef void       (GLAPIENTRY *PFN_glEvalMapsNV)( GLenum target, GLenum mode );
 typedef void       (GLAPIENTRY *PFN_glEvaluateDepthValuesARB)(void);
 typedef void       (GLAPIENTRY *PFN_glExecuteProgramNV)( GLenum target, GLuint id, const GLfloat *params );
+typedef void       (GLAPIENTRY *PFN_glExtGetBufferPointervQCOM)( GLenum target, void **params );
+typedef void       (GLAPIENTRY *PFN_glExtGetBuffersQCOM)( GLuint *buffers, GLint maxBuffers, GLint *numBuffers );
+typedef void       (GLAPIENTRY *PFN_glExtGetFramebuffersQCOM)( GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers );
+typedef void       (GLAPIENTRY *PFN_glExtGetProgramBinarySourceQCOM)( GLuint program, GLenum shadertype, GLchar *source, GLint *length );
+typedef void       (GLAPIENTRY *PFN_glExtGetProgramsQCOM)( GLuint *programs, GLint maxPrograms, GLint *numPrograms );
+typedef void       (GLAPIENTRY *PFN_glExtGetRenderbuffersQCOM)( GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers );
+typedef void       (GLAPIENTRY *PFN_glExtGetShadersQCOM)( GLuint *shaders, GLint maxShaders, GLint *numShaders );
+typedef void       (GLAPIENTRY *PFN_glExtGetTexLevelParameterivQCOM)( GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params );
+typedef void       (GLAPIENTRY *PFN_glExtGetTexSubImageQCOM)( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, void *texels );
+typedef void       (GLAPIENTRY *PFN_glExtGetTexturesQCOM)( GLuint *textures, GLint maxTextures, GLint *numTextures );
+typedef GLboolean  (GLAPIENTRY *PFN_glExtIsProgramBinaryQCOM)( GLuint program );
+typedef void       (GLAPIENTRY *PFN_glExtTexObjectStateOverrideiQCOM)( GLenum target, GLenum pname, GLint param );
 typedef void       (GLAPIENTRY *PFN_glExtractComponentEXT)( GLuint res, GLuint src, GLuint num );
+typedef void       (GLAPIENTRY *PFN_glExtrapolateTex2DQCOM)( GLuint src1, GLuint src2, GLuint output, GLfloat scaleFactor );
 typedef void       (GLAPIENTRY *PFN_glFeedbackBufferxOES)( GLsizei n, GLenum type, const GLfixed *buffer );
 typedef GLsync     (GLAPIENTRY *PFN_glFenceSync)( GLenum condition, GLbitfield flags );
+typedef GLsync     (GLAPIENTRY *PFN_glFenceSyncAPPLE)( GLenum condition, GLbitfield flags );
 typedef void       (GLAPIENTRY *PFN_glFinalCombinerInputNV)( GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage );
 typedef GLint      (GLAPIENTRY *PFN_glFinishAsyncSGIX)( GLuint *markerp );
 typedef void       (GLAPIENTRY *PFN_glFinishFenceAPPLE)( GLuint fence );
@@ -7609,6 +8338,7 @@ typedef void       (GLAPIENTRY *PFN_glFinishObjectAPPLE)( GLenum object, GLint n
 typedef void       (GLAPIENTRY *PFN_glFinishTextureSUNX)(void);
 typedef void       (GLAPIENTRY *PFN_glFlushMappedBufferRange)( GLenum target, GLintptr offset, GLsizeiptr length );
 typedef void       (GLAPIENTRY *PFN_glFlushMappedBufferRangeAPPLE)( GLenum target, GLintptr offset, GLsizeiptr size );
+typedef void       (GLAPIENTRY *PFN_glFlushMappedBufferRangeEXT)( GLenum target, GLintptr offset, GLsizeiptr length );
 typedef void       (GLAPIENTRY *PFN_glFlushMappedNamedBufferRange)( GLuint buffer, GLintptr offset, GLsizeiptr length );
 typedef void       (GLAPIENTRY *PFN_glFlushMappedNamedBufferRangeEXT)( GLuint buffer, GLintptr offset, GLsizeiptr length );
 typedef void       (GLAPIENTRY *PFN_glFlushPixelDataRangeNV)( GLenum target );
@@ -7654,11 +8384,16 @@ typedef void       (GLAPIENTRY *PFN_glFrameZoomSGIX)( GLint factor );
 typedef void       (GLAPIENTRY *PFN_glFramebufferDrawBufferEXT)( GLuint framebuffer, GLenum mode );
 typedef void       (GLAPIENTRY *PFN_glFramebufferDrawBuffersEXT)( GLuint framebuffer, GLsizei n, const GLenum *bufs );
 typedef void       (GLAPIENTRY *PFN_glFramebufferFetchBarrierEXT)(void);
+typedef void       (GLAPIENTRY *PFN_glFramebufferFetchBarrierQCOM)(void);
+typedef void       (GLAPIENTRY *PFN_glFramebufferFoveationConfigQCOM)( GLuint framebuffer, GLuint numLayers, GLuint focalPointsPerLayer, GLuint requestedFeatures, GLuint *providedFeatures );
+typedef void       (GLAPIENTRY *PFN_glFramebufferFoveationParametersQCOM)( GLuint framebuffer, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea );
 typedef void       (GLAPIENTRY *PFN_glFramebufferParameteri)( GLenum target, GLenum pname, GLint param );
 typedef void       (GLAPIENTRY *PFN_glFramebufferParameteriMESA)( GLenum target, GLenum pname, GLint param );
+typedef void       (GLAPIENTRY *PFN_glFramebufferPixelLocalStorageSizeEXT)( GLuint target, GLsizei size );
 typedef void       (GLAPIENTRY *PFN_glFramebufferReadBufferEXT)( GLuint framebuffer, GLenum mode );
 typedef void       (GLAPIENTRY *PFN_glFramebufferRenderbuffer)( GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer );
 typedef void       (GLAPIENTRY *PFN_glFramebufferRenderbufferEXT)( GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer );
+typedef void       (GLAPIENTRY *PFN_glFramebufferRenderbufferOES)( GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer );
 typedef void       (GLAPIENTRY *PFN_glFramebufferSampleLocationsfvARB)( GLenum target, GLuint start, GLsizei count, const GLfloat *v );
 typedef void       (GLAPIENTRY *PFN_glFramebufferSampleLocationsfvNV)( GLenum target, GLuint start, GLsizei count, const GLfloat *v );
 typedef void       (GLAPIENTRY *PFN_glFramebufferSamplePositionsfvAMD)( GLenum target, GLuint numsamples, GLuint pixelindex, const GLfloat *values );
@@ -7667,17 +8402,25 @@ typedef void       (GLAPIENTRY *PFN_glFramebufferTexture)( GLenum target, GLenum
 typedef void       (GLAPIENTRY *PFN_glFramebufferTexture1D)( GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level );
 typedef void       (GLAPIENTRY *PFN_glFramebufferTexture1DEXT)( GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level );
 typedef void       (GLAPIENTRY *PFN_glFramebufferTexture2D)( GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level );
+typedef void       (GLAPIENTRY *PFN_glFramebufferTexture2DDownsampleIMG)( GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint xscale, GLint yscale );
 typedef void       (GLAPIENTRY *PFN_glFramebufferTexture2DEXT)( GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level );
+typedef void       (GLAPIENTRY *PFN_glFramebufferTexture2DMultisampleEXT)( GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples );
+typedef void       (GLAPIENTRY *PFN_glFramebufferTexture2DMultisampleIMG)( GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples );
+typedef void       (GLAPIENTRY *PFN_glFramebufferTexture2DOES)( GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level );
 typedef void       (GLAPIENTRY *PFN_glFramebufferTexture3D)( GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset );
 typedef void       (GLAPIENTRY *PFN_glFramebufferTexture3DEXT)( GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset );
+typedef void       (GLAPIENTRY *PFN_glFramebufferTexture3DOES)( GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset );
 typedef void       (GLAPIENTRY *PFN_glFramebufferTextureARB)( GLenum target, GLenum attachment, GLuint texture, GLint level );
 typedef void       (GLAPIENTRY *PFN_glFramebufferTextureEXT)( GLenum target, GLenum attachment, GLuint texture, GLint level );
 typedef void       (GLAPIENTRY *PFN_glFramebufferTextureFaceARB)( GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face );
 typedef void       (GLAPIENTRY *PFN_glFramebufferTextureFaceEXT)( GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face );
 typedef void       (GLAPIENTRY *PFN_glFramebufferTextureLayer)( GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer );
 typedef void       (GLAPIENTRY *PFN_glFramebufferTextureLayerARB)( GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer );
+typedef void       (GLAPIENTRY *PFN_glFramebufferTextureLayerDownsampleIMG)( GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer, GLint xscale, GLint yscale );
 typedef void       (GLAPIENTRY *PFN_glFramebufferTextureLayerEXT)( GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer );
+typedef void       (GLAPIENTRY *PFN_glFramebufferTextureMultisampleMultiviewOVR)( GLenum target, GLenum attachment, GLuint texture, GLint level, GLsizei samples, GLint baseViewIndex, GLsizei numViews );
 typedef void       (GLAPIENTRY *PFN_glFramebufferTextureMultiviewOVR)( GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews );
+typedef void       (GLAPIENTRY *PFN_glFramebufferTextureOES)( GLenum target, GLenum attachment, GLuint texture, GLint level );
 typedef void       (GLAPIENTRY *PFN_glFreeObjectBufferATI)( GLuint buffer );
 typedef void       (GLAPIENTRY *PFN_glFrustumf)( GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f );
 typedef void       (GLAPIENTRY *PFN_glFrustumfOES)( GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f );
@@ -7691,6 +8434,7 @@ typedef void       (GLAPIENTRY *PFN_glGenFencesNV)( GLsizei n, GLuint *fences );
 typedef GLuint     (GLAPIENTRY *PFN_glGenFragmentShadersATI)( GLuint range );
 typedef void       (GLAPIENTRY *PFN_glGenFramebuffers)( GLsizei n, GLuint *framebuffers );
 typedef void       (GLAPIENTRY *PFN_glGenFramebuffersEXT)( GLsizei n, GLuint *framebuffers );
+typedef void       (GLAPIENTRY *PFN_glGenFramebuffersOES)( GLsizei n, GLuint *framebuffers );
 typedef void       (GLAPIENTRY *PFN_glGenNamesAMD)( GLenum identifier, GLuint num, GLuint *names );
 typedef void       (GLAPIENTRY *PFN_glGenOcclusionQueriesNV)( GLsizei n, GLuint *ids );
 typedef GLuint     (GLAPIENTRY *PFN_glGenPathsNV)( GLsizei range );
@@ -7700,9 +8444,11 @@ typedef void       (GLAPIENTRY *PFN_glGenProgramsARB)( GLsizei n, GLuint *progra
 typedef void       (GLAPIENTRY *PFN_glGenProgramsNV)( GLsizei n, GLuint *programs );
 typedef void       (GLAPIENTRY *PFN_glGenQueries)( GLsizei n, GLuint *ids );
 typedef void       (GLAPIENTRY *PFN_glGenQueriesARB)( GLsizei n, GLuint *ids );
+typedef void       (GLAPIENTRY *PFN_glGenQueriesEXT)( GLsizei n, GLuint *ids );
 typedef void       (GLAPIENTRY *PFN_glGenQueryResourceTagNV)( GLsizei n, GLint *tagIds );
 typedef void       (GLAPIENTRY *PFN_glGenRenderbuffers)( GLsizei n, GLuint *renderbuffers );
 typedef void       (GLAPIENTRY *PFN_glGenRenderbuffersEXT)( GLsizei n, GLuint *renderbuffers );
+typedef void       (GLAPIENTRY *PFN_glGenRenderbuffersOES)( GLsizei n, GLuint *renderbuffers );
 typedef void       (GLAPIENTRY *PFN_glGenSamplers)( GLsizei count, GLuint *samplers );
 typedef void       (GLAPIENTRY *PFN_glGenSemaphoresEXT)( GLsizei n, GLuint *semaphores );
 typedef GLuint     (GLAPIENTRY *PFN_glGenSymbolsEXT)( GLenum datatype, GLenum storagetype, GLenum range, GLuint components );
@@ -7711,9 +8457,11 @@ typedef void       (GLAPIENTRY *PFN_glGenTransformFeedbacks)( GLsizei n, GLuint
 typedef void       (GLAPIENTRY *PFN_glGenTransformFeedbacksNV)( GLsizei n, GLuint *ids );
 typedef void       (GLAPIENTRY *PFN_glGenVertexArrays)( GLsizei n, GLuint *arrays );
 typedef void       (GLAPIENTRY *PFN_glGenVertexArraysAPPLE)( GLsizei n, GLuint *arrays );
+typedef void       (GLAPIENTRY *PFN_glGenVertexArraysOES)( GLsizei n, GLuint *arrays );
 typedef GLuint     (GLAPIENTRY *PFN_glGenVertexShadersEXT)( GLuint range );
 typedef void       (GLAPIENTRY *PFN_glGenerateMipmap)( GLenum target );
 typedef void       (GLAPIENTRY *PFN_glGenerateMipmapEXT)( GLenum target );
+typedef void       (GLAPIENTRY *PFN_glGenerateMipmapOES)( GLenum target );
 typedef void       (GLAPIENTRY *PFN_glGenerateMultiTexMipmapEXT)( GLenum texunit, GLenum target );
 typedef void       (GLAPIENTRY *PFN_glGenerateTextureMipmap)( GLuint texture );
 typedef void       (GLAPIENTRY *PFN_glGenerateTextureMipmapEXT)( GLuint texture, GLenum target );
@@ -7744,6 +8492,7 @@ typedef void       (GLAPIENTRY *PFN_glGetBufferParameterivARB)( GLenum target, G
 typedef void       (GLAPIENTRY *PFN_glGetBufferParameterui64vNV)( GLenum target, GLenum pname, GLuint64EXT *params );
 typedef void       (GLAPIENTRY *PFN_glGetBufferPointerv)( GLenum target, GLenum pname, void **params );
 typedef void       (GLAPIENTRY *PFN_glGetBufferPointervARB)( GLenum target, GLenum pname, void **params );
+typedef void       (GLAPIENTRY *PFN_glGetBufferPointervOES)( GLenum target, GLenum pname, void **params );
 typedef void       (GLAPIENTRY *PFN_glGetBufferSubData)( GLenum target, GLintptr offset, GLsizeiptr size, void *data );
 typedef void       (GLAPIENTRY *PFN_glGetBufferSubDataARB)( GLenum target, GLintptrARB offset, GLsizeiptrARB size, void *data );
 typedef void       (GLAPIENTRY *PFN_glGetClipPlanef)( GLenum plane, GLfloat *equation );
@@ -7786,6 +8535,8 @@ typedef void       (GLAPIENTRY *PFN_glGetDetailTexFuncSGIS)( GLenum target, GLfl
 typedef void       (GLAPIENTRY *PFN_glGetDoubleIndexedvEXT)( GLenum target, GLuint index, GLdouble *data );
 typedef void       (GLAPIENTRY *PFN_glGetDoublei_v)( GLenum target, GLuint index, GLdouble *data );
 typedef void       (GLAPIENTRY *PFN_glGetDoublei_vEXT)( GLenum pname, GLuint index, GLdouble *params );
+typedef void       (GLAPIENTRY *PFN_glGetDriverControlStringQCOM)( GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString );
+typedef void       (GLAPIENTRY *PFN_glGetDriverControlsQCOM)( GLint *num, GLsizei size, GLuint *driverControls );
 typedef void       (GLAPIENTRY *PFN_glGetFenceivNV)( GLuint fence, GLenum pname, GLint *params );
 typedef void       (GLAPIENTRY *PFN_glGetFinalCombinerInputParameterfvNV)( GLenum variable, GLenum pname, GLfloat *params );
 typedef void       (GLAPIENTRY *PFN_glGetFinalCombinerInputParameterivNV)( GLenum variable, GLenum pname, GLint *params );
@@ -7795,8 +8546,11 @@ typedef void       (GLAPIENTRY *PFN_glGetFixedvOES)( GLenum pname, GLfixed *para
 typedef void       (GLAPIENTRY *PFN_glGetFloatIndexedvEXT)( GLenum target, GLuint index, GLfloat *data );
 typedef void       (GLAPIENTRY *PFN_glGetFloati_v)( GLenum target, GLuint index, GLfloat *data );
 typedef void       (GLAPIENTRY *PFN_glGetFloati_vEXT)( GLenum pname, GLuint index, GLfloat *params );
+typedef void       (GLAPIENTRY *PFN_glGetFloati_vNV)( GLenum target, GLuint index, GLfloat *data );
+typedef void       (GLAPIENTRY *PFN_glGetFloati_vOES)( GLenum target, GLuint index, GLfloat *data );
 typedef void       (GLAPIENTRY *PFN_glGetFogFuncSGIS)( GLfloat *points );
 typedef GLint      (GLAPIENTRY *PFN_glGetFragDataIndex)( GLuint program, const GLchar *name );
+typedef GLint      (GLAPIENTRY *PFN_glGetFragDataIndexEXT)( GLuint program, const GLchar *name );
 typedef GLint      (GLAPIENTRY *PFN_glGetFragDataLocation)( GLuint program, const GLchar *name );
 typedef GLint      (GLAPIENTRY *PFN_glGetFragDataLocationEXT)( GLuint program, const GLchar *name );
 typedef void       (GLAPIENTRY *PFN_glGetFragmentLightfvSGIX)( GLenum light, GLenum pname, GLfloat *params );
@@ -7806,12 +8560,15 @@ typedef void       (GLAPIENTRY *PFN_glGetFragmentMaterialivSGIX)( GLenum face, G
 typedef void       (GLAPIENTRY *PFN_glGetFragmentShadingRatesEXT)( GLsizei samples, GLsizei maxCount, GLsizei *count, GLenum *shadingRates );
 typedef void       (GLAPIENTRY *PFN_glGetFramebufferAttachmentParameteriv)( GLenum target, GLenum attachment, GLenum pname, GLint *params );
 typedef void       (GLAPIENTRY *PFN_glGetFramebufferAttachmentParameterivEXT)( GLenum target, GLenum attachment, GLenum pname, GLint *params );
+typedef void       (GLAPIENTRY *PFN_glGetFramebufferAttachmentParameterivOES)( GLenum target, GLenum attachment, GLenum pname, GLint *params );
 typedef void       (GLAPIENTRY *PFN_glGetFramebufferParameterfvAMD)( GLenum target, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat *values );
 typedef void       (GLAPIENTRY *PFN_glGetFramebufferParameteriv)( GLenum target, GLenum pname, GLint *params );
 typedef void       (GLAPIENTRY *PFN_glGetFramebufferParameterivEXT)( GLuint framebuffer, GLenum pname, GLint *params );
 typedef void       (GLAPIENTRY *PFN_glGetFramebufferParameterivMESA)( GLenum target, GLenum pname, GLint *params );
+typedef GLsizei    (GLAPIENTRY *PFN_glGetFramebufferPixelLocalStorageSizeEXT)( GLuint target );
 typedef GLenum     (GLAPIENTRY *PFN_glGetGraphicsResetStatus)(void);
 typedef GLenum     (GLAPIENTRY *PFN_glGetGraphicsResetStatusARB)(void);
+typedef GLenum     (GLAPIENTRY *PFN_glGetGraphicsResetStatusEXT)(void);
 typedef GLhandleARB (GLAPIENTRY *PFN_glGetHandleARB)( GLenum pname );
 typedef void       (GLAPIENTRY *PFN_glGetHistogram)( GLenum target, GLboolean reset, GLenum format, GLenum type, void *values );
 typedef void       (GLAPIENTRY *PFN_glGetHistogramEXT)( GLenum target, GLboolean reset, GLenum format, GLenum type, void *values );
@@ -7828,8 +8585,11 @@ typedef void       (GLAPIENTRY *PFN_glGetInfoLogARB)( GLhandleARB obj, GLsizei m
 typedef GLint      (GLAPIENTRY *PFN_glGetInstrumentsSGIX)(void);
 typedef void       (GLAPIENTRY *PFN_glGetInteger64i_v)( GLenum target, GLuint index, GLint64 *data );
 typedef void       (GLAPIENTRY *PFN_glGetInteger64v)( GLenum pname, GLint64 *data );
+typedef void       (GLAPIENTRY *PFN_glGetInteger64vAPPLE)( GLenum pname, GLint64 *params );
+typedef void       (GLAPIENTRY *PFN_glGetInteger64vEXT)( GLenum pname, GLint64 *data );
 typedef void       (GLAPIENTRY *PFN_glGetIntegerIndexedvEXT)( GLenum target, GLuint index, GLint *data );
 typedef void       (GLAPIENTRY *PFN_glGetIntegeri_v)( GLenum target, GLuint index, GLint *data );
+typedef void       (GLAPIENTRY *PFN_glGetIntegeri_vEXT)( GLenum target, GLuint index, GLint *data );
 typedef void       (GLAPIENTRY *PFN_glGetIntegerui64i_vNV)( GLenum value, GLuint index, GLuint64EXT *result );
 typedef void       (GLAPIENTRY *PFN_glGetIntegerui64vNV)( GLenum value, GLuint64EXT *result );
 typedef void       (GLAPIENTRY *PFN_glGetInternalformatSampleivNV)( GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei count, GLint *params );
@@ -7941,6 +8701,7 @@ typedef void       (GLAPIENTRY *PFN_glGetPointerIndexedvEXT)( GLenum target, GLu
 typedef void       (GLAPIENTRY *PFN_glGetPointeri_vEXT)( GLenum pname, GLuint index, void **params );
 typedef void       (GLAPIENTRY *PFN_glGetPointervEXT)( GLenum pname, void **params );
 typedef void       (GLAPIENTRY *PFN_glGetProgramBinary)( GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary );
+typedef void       (GLAPIENTRY *PFN_glGetProgramBinaryOES)( GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary );
 typedef void       (GLAPIENTRY *PFN_glGetProgramEnvParameterIivNV)( GLenum target, GLuint index, GLint *params );
 typedef void       (GLAPIENTRY *PFN_glGetProgramEnvParameterIuivNV)( GLenum target, GLuint index, GLuint *params );
 typedef void       (GLAPIENTRY *PFN_glGetProgramEnvParameterdvARB)( GLenum target, GLuint index, GLdouble *params );
@@ -7960,6 +8721,7 @@ typedef void       (GLAPIENTRY *PFN_glGetProgramPipelineiv)( GLuint pipeline, GL
 typedef GLuint     (GLAPIENTRY *PFN_glGetProgramResourceIndex)( GLuint program, GLenum programInterface, const GLchar *name );
 typedef GLint      (GLAPIENTRY *PFN_glGetProgramResourceLocation)( GLuint program, GLenum programInterface, const GLchar *name );
 typedef GLint      (GLAPIENTRY *PFN_glGetProgramResourceLocationIndex)( GLuint program, GLenum programInterface, const GLchar *name );
+typedef GLint      (GLAPIENTRY *PFN_glGetProgramResourceLocationIndexEXT)( GLuint program, GLenum programInterface, const GLchar *name );
 typedef void       (GLAPIENTRY *PFN_glGetProgramResourceName)( GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name );
 typedef void       (GLAPIENTRY *PFN_glGetProgramResourcefvNV)( GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLfloat *params );
 typedef void       (GLAPIENTRY *PFN_glGetProgramResourceiv)( GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLint *params );
@@ -7979,16 +8741,24 @@ typedef void       (GLAPIENTRY *PFN_glGetQueryObjecti64v)( GLuint id, GLenum pna
 typedef void       (GLAPIENTRY *PFN_glGetQueryObjecti64vEXT)( GLuint id, GLenum pname, GLint64 *params );
 typedef void       (GLAPIENTRY *PFN_glGetQueryObjectiv)( GLuint id, GLenum pname, GLint *params );
 typedef void       (GLAPIENTRY *PFN_glGetQueryObjectivARB)( GLuint id, GLenum pname, GLint *params );
+typedef void       (GLAPIENTRY *PFN_glGetQueryObjectivEXT)( GLuint id, GLenum pname, GLint *params );
 typedef void       (GLAPIENTRY *PFN_glGetQueryObjectui64v)( GLuint id, GLenum pname, GLuint64 *params );
 typedef void       (GLAPIENTRY *PFN_glGetQueryObjectui64vEXT)( GLuint id, GLenum pname, GLuint64 *params );
 typedef void       (GLAPIENTRY *PFN_glGetQueryObjectuiv)( GLuint id, GLenum pname, GLuint *params );
 typedef void       (GLAPIENTRY *PFN_glGetQueryObjectuivARB)( GLuint id, GLenum pname, GLuint *params );
+typedef void       (GLAPIENTRY *PFN_glGetQueryObjectuivEXT)( GLuint id, GLenum pname, GLuint *params );
 typedef void       (GLAPIENTRY *PFN_glGetQueryiv)( GLenum target, GLenum pname, GLint *params );
 typedef void       (GLAPIENTRY *PFN_glGetQueryivARB)( GLenum target, GLenum pname, GLint *params );
+typedef void       (GLAPIENTRY *PFN_glGetQueryivEXT)( GLenum target, GLenum pname, GLint *params );
 typedef void       (GLAPIENTRY *PFN_glGetRenderbufferParameteriv)( GLenum target, GLenum pname, GLint *params );
 typedef void       (GLAPIENTRY *PFN_glGetRenderbufferParameterivEXT)( GLenum target, GLenum pname, GLint *params );
+typedef void       (GLAPIENTRY *PFN_glGetRenderbufferParameterivOES)( GLenum target, GLenum pname, GLint *params );
 typedef void       (GLAPIENTRY *PFN_glGetSamplerParameterIiv)( GLuint sampler, GLenum pname, GLint *params );
+typedef void       (GLAPIENTRY *PFN_glGetSamplerParameterIivEXT)( GLuint sampler, GLenum pname, GLint *params );
+typedef void       (GLAPIENTRY *PFN_glGetSamplerParameterIivOES)( GLuint sampler, GLenum pname, GLint *params );
 typedef void       (GLAPIENTRY *PFN_glGetSamplerParameterIuiv)( GLuint sampler, GLenum pname, GLuint *params );
+typedef void       (GLAPIENTRY *PFN_glGetSamplerParameterIuivEXT)( GLuint sampler, GLenum pname, GLuint *params );
+typedef void       (GLAPIENTRY *PFN_glGetSamplerParameterIuivOES)( GLuint sampler, GLenum pname, GLuint *params );
 typedef void       (GLAPIENTRY *PFN_glGetSamplerParameterfv)( GLuint sampler, GLenum pname, GLfloat *params );
 typedef void       (GLAPIENTRY *PFN_glGetSamplerParameteriv)( GLuint sampler, GLenum pname, GLint *params );
 typedef void       (GLAPIENTRY *PFN_glGetSemaphoreParameterivNV)( GLuint semaphore, GLenum pname, GLint *params );
@@ -8008,21 +8778,27 @@ typedef const GLubyte * (GLAPIENTRY *PFN_glGetStringi)( GLenum name, GLuint inde
 typedef GLuint     (GLAPIENTRY *PFN_glGetSubroutineIndex)( GLuint program, GLenum shadertype, const GLchar *name );
 typedef GLint      (GLAPIENTRY *PFN_glGetSubroutineUniformLocation)( GLuint program, GLenum shadertype, const GLchar *name );
 typedef void       (GLAPIENTRY *PFN_glGetSynciv)( GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values );
+typedef void       (GLAPIENTRY *PFN_glGetSyncivAPPLE)( GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values );
 typedef void       (GLAPIENTRY *PFN_glGetTexBumpParameterfvATI)( GLenum pname, GLfloat *param );
 typedef void       (GLAPIENTRY *PFN_glGetTexBumpParameterivATI)( GLenum pname, GLint *param );
 typedef void       (GLAPIENTRY *PFN_glGetTexEnvxv)( GLenum target, GLenum pname, GLfixed *params );
 typedef void       (GLAPIENTRY *PFN_glGetTexEnvxvOES)( GLenum target, GLenum pname, GLfixed *params );
 typedef void       (GLAPIENTRY *PFN_glGetTexFilterFuncSGIS)( GLenum target, GLenum filter, GLfloat *weights );
+typedef void       (GLAPIENTRY *PFN_glGetTexGenfvOES)( GLenum coord, GLenum pname, GLfloat *params );
+typedef void       (GLAPIENTRY *PFN_glGetTexGenivOES)( GLenum coord, GLenum pname, GLint *params );
 typedef void       (GLAPIENTRY *PFN_glGetTexGenxvOES)( GLenum coord, GLenum pname, GLfixed *params );
 typedef void       (GLAPIENTRY *PFN_glGetTexLevelParameterxvOES)( GLenum target, GLint level, GLenum pname, GLfixed *params );
 typedef void       (GLAPIENTRY *PFN_glGetTexParameterIiv)( GLenum target, GLenum pname, GLint *params );
 typedef void       (GLAPIENTRY *PFN_glGetTexParameterIivEXT)( GLenum target, GLenum pname, GLint *params );
+typedef void       (GLAPIENTRY *PFN_glGetTexParameterIivOES)( GLenum target, GLenum pname, GLint *params );
 typedef void       (GLAPIENTRY *PFN_glGetTexParameterIuiv)( GLenum target, GLenum pname, GLuint *params );
 typedef void       (GLAPIENTRY *PFN_glGetTexParameterIuivEXT)( GLenum target, GLenum pname, GLuint *params );
+typedef void       (GLAPIENTRY *PFN_glGetTexParameterIuivOES)( GLenum target, GLenum pname, GLuint *params );
 typedef void       (GLAPIENTRY *PFN_glGetTexParameterPointervAPPLE)( GLenum target, GLenum pname, void **params );
 typedef void       (GLAPIENTRY *PFN_glGetTexParameterxv)( GLenum target, GLenum pname, GLfixed *params );
 typedef void       (GLAPIENTRY *PFN_glGetTexParameterxvOES)( GLenum target, GLenum pname, GLfixed *params );
 typedef GLuint64   (GLAPIENTRY *PFN_glGetTextureHandleARB)( GLuint texture );
+typedef GLuint64   (GLAPIENTRY *PFN_glGetTextureHandleIMG)( GLuint texture );
 typedef GLuint64   (GLAPIENTRY *PFN_glGetTextureHandleNV)( GLuint texture );
 typedef void       (GLAPIENTRY *PFN_glGetTextureImage)( GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels );
 typedef void       (GLAPIENTRY *PFN_glGetTextureImageEXT)( GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels );
@@ -8039,6 +8815,7 @@ typedef void       (GLAPIENTRY *PFN_glGetTextureParameterfvEXT)( GLuint texture,
 typedef void       (GLAPIENTRY *PFN_glGetTextureParameteriv)( GLuint texture, GLenum pname, GLint *params );
 typedef void       (GLAPIENTRY *PFN_glGetTextureParameterivEXT)( GLuint texture, GLenum target, GLenum pname, GLint *params );
 typedef GLuint64   (GLAPIENTRY *PFN_glGetTextureSamplerHandleARB)( GLuint texture, GLuint sampler );
+typedef GLuint64   (GLAPIENTRY *PFN_glGetTextureSamplerHandleIMG)( GLuint texture, GLuint sampler );
 typedef GLuint64   (GLAPIENTRY *PFN_glGetTextureSamplerHandleNV)( GLuint texture, GLuint sampler );
 typedef void       (GLAPIENTRY *PFN_glGetTextureSubImage)( GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void *pixels );
 typedef void       (GLAPIENTRY *PFN_glGetTrackMatrixivNV)( GLenum target, GLuint address, GLenum pname, GLint *params );
@@ -8048,6 +8825,7 @@ typedef void       (GLAPIENTRY *PFN_glGetTransformFeedbackVaryingNV)( GLuint pro
 typedef void       (GLAPIENTRY *PFN_glGetTransformFeedbacki64_v)( GLuint xfb, GLenum pname, GLuint index, GLint64 *param );
 typedef void       (GLAPIENTRY *PFN_glGetTransformFeedbacki_v)( GLuint xfb, GLenum pname, GLuint index, GLint *param );
 typedef void       (GLAPIENTRY *PFN_glGetTransformFeedbackiv)( GLuint xfb, GLenum pname, GLint *param );
+typedef void       (GLAPIENTRY *PFN_glGetTranslatedShaderSourceANGLE)( GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source );
 typedef GLuint     (GLAPIENTRY *PFN_glGetUniformBlockIndex)( GLuint program, const GLchar *uniformBlockName );
 typedef GLint      (GLAPIENTRY *PFN_glGetUniformBufferSizeEXT)( GLuint program, GLint location );
 typedef void       (GLAPIENTRY *PFN_glGetUniformIndices)( GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices );
@@ -8146,9 +8924,11 @@ typedef void       (GLAPIENTRY *PFN_glGetnUniformdv)( GLuint program, GLint loca
 typedef void       (GLAPIENTRY *PFN_glGetnUniformdvARB)( GLuint program, GLint location, GLsizei bufSize, GLdouble *params );
 typedef void       (GLAPIENTRY *PFN_glGetnUniformfv)( GLuint program, GLint location, GLsizei bufSize, GLfloat *params );
 typedef void       (GLAPIENTRY *PFN_glGetnUniformfvARB)( GLuint program, GLint location, GLsizei bufSize, GLfloat *params );
+typedef void       (GLAPIENTRY *PFN_glGetnUniformfvEXT)( GLuint program, GLint location, GLsizei bufSize, GLfloat *params );
 typedef void       (GLAPIENTRY *PFN_glGetnUniformi64vARB)( GLuint program, GLint location, GLsizei bufSize, GLint64 *params );
 typedef void       (GLAPIENTRY *PFN_glGetnUniformiv)( GLuint program, GLint location, GLsizei bufSize, GLint *params );
 typedef void       (GLAPIENTRY *PFN_glGetnUniformivARB)( GLuint program, GLint location, GLsizei bufSize, GLint *params );
+typedef void       (GLAPIENTRY *PFN_glGetnUniformivEXT)( GLuint program, GLint location, GLsizei bufSize, GLint *params );
 typedef void       (GLAPIENTRY *PFN_glGetnUniformui64vARB)( GLuint program, GLint location, GLsizei bufSize, GLuint64 *params );
 typedef void       (GLAPIENTRY *PFN_glGetnUniformuiv)( GLuint program, GLint location, GLsizei bufSize, GLuint *params );
 typedef void       (GLAPIENTRY *PFN_glGetnUniformuivARB)( GLuint program, GLint location, GLsizei bufSize, GLuint *params );
@@ -8201,10 +8981,14 @@ typedef GLboolean  (GLAPIENTRY *PFN_glIsBufferResidentNV)( GLenum target );
 typedef GLboolean  (GLAPIENTRY *PFN_glIsCommandListNV)( GLuint list );
 typedef GLboolean  (GLAPIENTRY *PFN_glIsEnabledIndexedEXT)( GLenum target, GLuint index );
 typedef GLboolean  (GLAPIENTRY *PFN_glIsEnabledi)( GLenum target, GLuint index );
+typedef GLboolean  (GLAPIENTRY *PFN_glIsEnablediEXT)( GLenum target, GLuint index );
+typedef GLboolean  (GLAPIENTRY *PFN_glIsEnablediNV)( GLenum target, GLuint index );
+typedef GLboolean  (GLAPIENTRY *PFN_glIsEnablediOES)( GLenum target, GLuint index );
 typedef GLboolean  (GLAPIENTRY *PFN_glIsFenceAPPLE)( GLuint fence );
 typedef GLboolean  (GLAPIENTRY *PFN_glIsFenceNV)( GLuint fence );
 typedef GLboolean  (GLAPIENTRY *PFN_glIsFramebuffer)( GLuint framebuffer );
 typedef GLboolean  (GLAPIENTRY *PFN_glIsFramebufferEXT)( GLuint framebuffer );
+typedef GLboolean  (GLAPIENTRY *PFN_glIsFramebufferOES)( GLuint framebuffer );
 typedef GLboolean  (GLAPIENTRY *PFN_glIsImageHandleResidentARB)( GLuint64 handle );
 typedef GLboolean  (GLAPIENTRY *PFN_glIsImageHandleResidentNV)( GLuint64 handle );
 typedef GLboolean  (GLAPIENTRY *PFN_glIsMemoryObjectEXT)( GLuint memoryObject );
@@ -8222,13 +9006,16 @@ typedef GLboolean  (GLAPIENTRY *PFN_glIsProgramNV)( GLuint id );
 typedef GLboolean  (GLAPIENTRY *PFN_glIsProgramPipeline)( GLuint pipeline );
 typedef GLboolean  (GLAPIENTRY *PFN_glIsQuery)( GLuint id );
 typedef GLboolean  (GLAPIENTRY *PFN_glIsQueryARB)( GLuint id );
+typedef GLboolean  (GLAPIENTRY *PFN_glIsQueryEXT)( GLuint id );
 typedef GLboolean  (GLAPIENTRY *PFN_glIsRenderbuffer)( GLuint renderbuffer );
 typedef GLboolean  (GLAPIENTRY *PFN_glIsRenderbufferEXT)( GLuint renderbuffer );
+typedef GLboolean  (GLAPIENTRY *PFN_glIsRenderbufferOES)( GLuint renderbuffer );
 typedef GLboolean  (GLAPIENTRY *PFN_glIsSampler)( GLuint sampler );
 typedef GLboolean  (GLAPIENTRY *PFN_glIsSemaphoreEXT)( GLuint semaphore );
 typedef GLboolean  (GLAPIENTRY *PFN_glIsShader)( GLuint shader );
 typedef GLboolean  (GLAPIENTRY *PFN_glIsStateNV)( GLuint state );
 typedef GLboolean  (GLAPIENTRY *PFN_glIsSync)( GLsync sync );
+typedef GLboolean  (GLAPIENTRY *PFN_glIsSyncAPPLE)( GLsync sync );
 typedef GLboolean  (GLAPIENTRY *PFN_glIsTextureEXT)( GLuint texture );
 typedef GLboolean  (GLAPIENTRY *PFN_glIsTextureHandleResidentARB)( GLuint64 handle );
 typedef GLboolean  (GLAPIENTRY *PFN_glIsTextureHandleResidentNV)( GLuint64 handle );
@@ -8237,6 +9024,7 @@ typedef GLboolean  (GLAPIENTRY *PFN_glIsTransformFeedbackNV)( GLuint id );
 typedef GLboolean  (GLAPIENTRY *PFN_glIsVariantEnabledEXT)( GLuint id, GLenum cap );
 typedef GLboolean  (GLAPIENTRY *PFN_glIsVertexArray)( GLuint array );
 typedef GLboolean  (GLAPIENTRY *PFN_glIsVertexArrayAPPLE)( GLuint array );
+typedef GLboolean  (GLAPIENTRY *PFN_glIsVertexArrayOES)( GLuint array );
 typedef GLboolean  (GLAPIENTRY *PFN_glIsVertexAttribEnabledAPPLE)( GLuint index, GLenum pname );
 typedef void       (GLAPIENTRY *PFN_glLGPUCopyImageSubDataNVX)( GLuint sourceGpu, GLbitfield destinationGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srxY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth );
 typedef void       (GLAPIENTRY *PFN_glLGPUInterlockNVX)(void);
@@ -8263,6 +9051,7 @@ typedef void       (GLAPIENTRY *PFN_glListParameterivSGIX)( GLuint list, GLenum
 typedef void       (GLAPIENTRY *PFN_glLoadIdentityDeformationMapSGIX)( GLbitfield mask );
 typedef void       (GLAPIENTRY *PFN_glLoadMatrixx)( const GLfixed *m );
 typedef void       (GLAPIENTRY *PFN_glLoadMatrixxOES)( const GLfixed *m );
+typedef void       (GLAPIENTRY *PFN_glLoadPaletteFromModelViewMatrixOES)(void);
 typedef void       (GLAPIENTRY *PFN_glLoadProgramNV)( GLenum target, GLuint id, GLsizei len, const GLubyte *program );
 typedef void       (GLAPIENTRY *PFN_glLoadTransposeMatrixd)( const GLdouble *m );
 typedef void       (GLAPIENTRY *PFN_glLoadTransposeMatrixdARB)( const GLdouble *m );
@@ -8288,7 +9077,9 @@ typedef void       (GLAPIENTRY *PFN_glMap1xOES)( GLenum target, GLfixed u1, GLfi
 typedef void       (GLAPIENTRY *PFN_glMap2xOES)( GLenum target, GLfixed u1, GLfixed u2, GLint ustride, GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, GLint vorder, GLfixed points );
 typedef void *     (GLAPIENTRY *PFN_glMapBuffer)( GLenum target, GLenum access );
 typedef void *     (GLAPIENTRY *PFN_glMapBufferARB)( GLenum target, GLenum access );
+typedef void *     (GLAPIENTRY *PFN_glMapBufferOES)( GLenum target, GLenum access );
 typedef void *     (GLAPIENTRY *PFN_glMapBufferRange)( GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access );
+typedef void *     (GLAPIENTRY *PFN_glMapBufferRangeEXT)( GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access );
 typedef void       (GLAPIENTRY *PFN_glMapControlPointsNV)( GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const void *points );
 typedef void       (GLAPIENTRY *PFN_glMapGrid1xOES)( GLint n, GLfixed u1, GLfixed u2 );
 typedef void       (GLAPIENTRY *PFN_glMapGrid2xOES)( GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2 );
@@ -8310,6 +9101,7 @@ typedef void       (GLAPIENTRY *PFN_glMaterialxv)( GLenum face, GLenum pname, co
 typedef void       (GLAPIENTRY *PFN_glMaterialxvOES)( GLenum face, GLenum pname, const GLfixed *param );
 typedef void       (GLAPIENTRY *PFN_glMatrixFrustumEXT)( GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar );
 typedef void       (GLAPIENTRY *PFN_glMatrixIndexPointerARB)( GLint size, GLenum type, GLsizei stride, const void *pointer );
+typedef void       (GLAPIENTRY *PFN_glMatrixIndexPointerOES)( GLint size, GLenum type, GLsizei stride, const void *pointer );
 typedef void       (GLAPIENTRY *PFN_glMatrixIndexubvARB)( GLint size, const GLubyte *indices );
 typedef void       (GLAPIENTRY *PFN_glMatrixIndexuivARB)( GLint size, const GLuint *indices );
 typedef void       (GLAPIENTRY *PFN_glMatrixIndexusvARB)( GLint size, const GLushort *indices );
@@ -8337,6 +9129,7 @@ typedef void       (GLAPIENTRY *PFN_glMatrixScaledEXT)( GLenum mode, GLdouble x,
 typedef void       (GLAPIENTRY *PFN_glMatrixScalefEXT)( GLenum mode, GLfloat x, GLfloat y, GLfloat z );
 typedef void       (GLAPIENTRY *PFN_glMatrixTranslatedEXT)( GLenum mode, GLdouble x, GLdouble y, GLdouble z );
 typedef void       (GLAPIENTRY *PFN_glMatrixTranslatefEXT)( GLenum mode, GLfloat x, GLfloat y, GLfloat z );
+typedef void       (GLAPIENTRY *PFN_glMaxActiveShaderCoresARM)( GLuint count );
 typedef void       (GLAPIENTRY *PFN_glMaxShaderCompilerThreadsARB)( GLuint count );
 typedef void       (GLAPIENTRY *PFN_glMaxShaderCompilerThreadsKHR)( GLuint count );
 typedef void       (GLAPIENTRY *PFN_glMemoryBarrier)( GLbitfield barriers );
@@ -8345,6 +9138,7 @@ typedef void       (GLAPIENTRY *PFN_glMemoryBarrierEXT)( GLbitfield barriers );
 typedef void       (GLAPIENTRY *PFN_glMemoryObjectParameterivEXT)( GLuint memoryObject, GLenum pname, const GLint *params );
 typedef void       (GLAPIENTRY *PFN_glMinSampleShading)( GLfloat value );
 typedef void       (GLAPIENTRY *PFN_glMinSampleShadingARB)( GLfloat value );
+typedef void       (GLAPIENTRY *PFN_glMinSampleShadingOES)( GLfloat value );
 typedef void       (GLAPIENTRY *PFN_glMinmax)( GLenum target, GLenum internalformat, GLboolean sink );
 typedef void       (GLAPIENTRY *PFN_glMinmaxEXT)( GLenum target, GLenum internalformat, GLboolean sink );
 typedef void       (GLAPIENTRY *PFN_glMultMatrixx)( const GLfixed *m );
@@ -8362,9 +9156,11 @@ typedef void       (GLAPIENTRY *PFN_glMultiDrawArraysIndirectBindlessCountNV)( G
 typedef void       (GLAPIENTRY *PFN_glMultiDrawArraysIndirectBindlessNV)( GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount );
 typedef void       (GLAPIENTRY *PFN_glMultiDrawArraysIndirectCount)( GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride );
 typedef void       (GLAPIENTRY *PFN_glMultiDrawArraysIndirectCountARB)( GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride );
+typedef void       (GLAPIENTRY *PFN_glMultiDrawArraysIndirectEXT)( GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride );
 typedef void       (GLAPIENTRY *PFN_glMultiDrawElementArrayAPPLE)( GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount );
 typedef void       (GLAPIENTRY *PFN_glMultiDrawElements)( GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount );
 typedef void       (GLAPIENTRY *PFN_glMultiDrawElementsBaseVertex)( GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex );
+typedef void       (GLAPIENTRY *PFN_glMultiDrawElementsBaseVertexEXT)( GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex );
 typedef void       (GLAPIENTRY *PFN_glMultiDrawElementsEXT)( GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount );
 typedef void       (GLAPIENTRY *PFN_glMultiDrawElementsIndirect)( GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride );
 typedef void       (GLAPIENTRY *PFN_glMultiDrawElementsIndirectAMD)( GLenum mode, GLenum type, const void *indirect, GLsizei primcount, GLsizei stride );
@@ -8372,6 +9168,7 @@ typedef void       (GLAPIENTRY *PFN_glMultiDrawElementsIndirectBindlessCountNV)(
 typedef void       (GLAPIENTRY *PFN_glMultiDrawElementsIndirectBindlessNV)( GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount );
 typedef void       (GLAPIENTRY *PFN_glMultiDrawElementsIndirectCount)( GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride );
 typedef void       (GLAPIENTRY *PFN_glMultiDrawElementsIndirectCountARB)( GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride );
+typedef void       (GLAPIENTRY *PFN_glMultiDrawElementsIndirectEXT)( GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride );
 typedef void       (GLAPIENTRY *PFN_glMultiDrawMeshTasksIndirectCountEXT)( GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride );
 typedef void       (GLAPIENTRY *PFN_glMultiDrawMeshTasksIndirectCountNV)( GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride );
 typedef void       (GLAPIENTRY *PFN_glMultiDrawMeshTasksIndirectEXT)( GLintptr indirect, GLsizei drawcount, GLsizei stride );
@@ -8638,6 +9435,8 @@ typedef void       (GLAPIENTRY *PFN_glPassTexCoordATI)( GLuint dst, GLuint coord
 typedef void       (GLAPIENTRY *PFN_glPassThroughxOES)( GLfixed token );
 typedef void       (GLAPIENTRY *PFN_glPatchParameterfv)( GLenum pname, const GLfloat *values );
 typedef void       (GLAPIENTRY *PFN_glPatchParameteri)( GLenum pname, GLint value );
+typedef void       (GLAPIENTRY *PFN_glPatchParameteriEXT)( GLenum pname, GLint value );
+typedef void       (GLAPIENTRY *PFN_glPatchParameteriOES)( GLenum pname, GLint value );
 typedef void       (GLAPIENTRY *PFN_glPathColorGenNV)( GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat *coeffs );
 typedef void       (GLAPIENTRY *PFN_glPathCommandsNV)( GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords );
 typedef void       (GLAPIENTRY *PFN_glPathCoordsNV)( GLuint path, GLsizei numCoords, GLenum coordType, const void *coords );
@@ -8691,10 +9490,12 @@ typedef void       (GLAPIENTRY *PFN_glPointParameterivNV)( GLenum pname, const G
 typedef void       (GLAPIENTRY *PFN_glPointParameterx)( GLenum pname, GLfixed param );
 typedef void       (GLAPIENTRY *PFN_glPointParameterxv)( GLenum pname, const GLfixed *params );
 typedef void       (GLAPIENTRY *PFN_glPointParameterxvOES)( GLenum pname, const GLfixed *params );
+typedef void       (GLAPIENTRY *PFN_glPointSizePointerOES)( GLenum type, GLsizei stride, const void *pointer );
 typedef void       (GLAPIENTRY *PFN_glPointSizex)( GLfixed size );
 typedef void       (GLAPIENTRY *PFN_glPointSizexOES)( GLfixed size );
 typedef GLint      (GLAPIENTRY *PFN_glPollAsyncSGIX)( GLuint *markerp );
 typedef GLint      (GLAPIENTRY *PFN_glPollInstrumentsSGIX)( GLint *marker_p );
+typedef void       (GLAPIENTRY *PFN_glPolygonModeNV)( GLenum face, GLenum mode );
 typedef void       (GLAPIENTRY *PFN_glPolygonOffsetClamp)( GLfloat factor, GLfloat units, GLfloat clamp );
 typedef void       (GLAPIENTRY *PFN_glPolygonOffsetClampEXT)( GLfloat factor, GLfloat units, GLfloat clamp );
 typedef void       (GLAPIENTRY *PFN_glPolygonOffsetEXT)( GLfloat factor, GLfloat bias );
@@ -8706,12 +9507,15 @@ typedef void       (GLAPIENTRY *PFN_glPresentFrameDualFillNV)( GLuint video_slot
 typedef void       (GLAPIENTRY *PFN_glPresentFrameKeyedNV)( GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1 );
 typedef void       (GLAPIENTRY *PFN_glPrimitiveBoundingBox)( GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW );
 typedef void       (GLAPIENTRY *PFN_glPrimitiveBoundingBoxARB)( GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW );
+typedef void       (GLAPIENTRY *PFN_glPrimitiveBoundingBoxEXT)( GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW );
+typedef void       (GLAPIENTRY *PFN_glPrimitiveBoundingBoxOES)( GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW );
 typedef void       (GLAPIENTRY *PFN_glPrimitiveRestartIndex)( GLuint index );
 typedef void       (GLAPIENTRY *PFN_glPrimitiveRestartIndexNV)( GLuint index );
 typedef void       (GLAPIENTRY *PFN_glPrimitiveRestartNV)(void);
 typedef void       (GLAPIENTRY *PFN_glPrioritizeTexturesEXT)( GLsizei n, const GLuint *textures, const GLclampf *priorities );
 typedef void       (GLAPIENTRY *PFN_glPrioritizeTexturesxOES)( GLsizei n, const GLuint *textures, const GLfixed *priorities );
 typedef void       (GLAPIENTRY *PFN_glProgramBinary)( GLuint program, GLenum binaryFormat, const void *binary, GLsizei length );
+typedef void       (GLAPIENTRY *PFN_glProgramBinaryOES)( GLuint program, GLenum binaryFormat, const void *binary, GLint length );
 typedef void       (GLAPIENTRY *PFN_glProgramBufferParametersIivNV)( GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLint *params );
 typedef void       (GLAPIENTRY *PFN_glProgramBufferParametersIuivNV)( GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLuint *params );
 typedef void       (GLAPIENTRY *PFN_glProgramBufferParametersfvNV)( GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLfloat *params );
@@ -8850,8 +9654,10 @@ typedef void       (GLAPIENTRY *PFN_glProgramUniform4uiEXT)( GLuint program, GLi
 typedef void       (GLAPIENTRY *PFN_glProgramUniform4uiv)( GLuint program, GLint location, GLsizei count, const GLuint *value );
 typedef void       (GLAPIENTRY *PFN_glProgramUniform4uivEXT)( GLuint program, GLint location, GLsizei count, const GLuint *value );
 typedef void       (GLAPIENTRY *PFN_glProgramUniformHandleui64ARB)( GLuint program, GLint location, GLuint64 value );
+typedef void       (GLAPIENTRY *PFN_glProgramUniformHandleui64IMG)( GLuint program, GLint location, GLuint64 value );
 typedef void       (GLAPIENTRY *PFN_glProgramUniformHandleui64NV)( GLuint program, GLint location, GLuint64 value );
 typedef void       (GLAPIENTRY *PFN_glProgramUniformHandleui64vARB)( GLuint program, GLint location, GLsizei count, const GLuint64 *values );
+typedef void       (GLAPIENTRY *PFN_glProgramUniformHandleui64vIMG)( GLuint program, GLint location, GLsizei count, const GLuint64 *values );
 typedef void       (GLAPIENTRY *PFN_glProgramUniformHandleui64vNV)( GLuint program, GLint location, GLsizei count, const GLuint64 *values );
 typedef void       (GLAPIENTRY *PFN_glProgramUniformMatrix2dv)( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value );
 typedef void       (GLAPIENTRY *PFN_glProgramUniformMatrix2dvEXT)( GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value );
@@ -8898,6 +9704,7 @@ typedef void       (GLAPIENTRY *PFN_glPushClientAttribDefaultEXT)( GLbitfield ma
 typedef void       (GLAPIENTRY *PFN_glPushDebugGroup)( GLenum source, GLuint id, GLsizei length, const GLchar *message );
 typedef void       (GLAPIENTRY *PFN_glPushGroupMarkerEXT)( GLsizei length, const GLchar *marker );
 typedef void       (GLAPIENTRY *PFN_glQueryCounter)( GLuint id, GLenum target );
+typedef void       (GLAPIENTRY *PFN_glQueryCounterEXT)( GLuint id, GLenum target );
 typedef GLbitfield (GLAPIENTRY *PFN_glQueryMatrixxOES)( GLfixed *mantissa, GLint *exponent );
 typedef void       (GLAPIENTRY *PFN_glQueryObjectParameteruiAMD)( GLenum target, GLuint id, GLenum pname, GLuint param );
 typedef GLint      (GLAPIENTRY *PFN_glQueryResourceNV)( GLenum queryType, GLint tagId, GLuint count, GLint *buffer );
@@ -8909,10 +9716,13 @@ typedef void       (GLAPIENTRY *PFN_glRasterPos3xvOES)( const GLfixed *coords );
 typedef void       (GLAPIENTRY *PFN_glRasterPos4xOES)( GLfixed x, GLfixed y, GLfixed z, GLfixed w );
 typedef void       (GLAPIENTRY *PFN_glRasterPos4xvOES)( const GLfixed *coords );
 typedef void       (GLAPIENTRY *PFN_glRasterSamplesEXT)( GLuint samples, GLboolean fixedsamplelocations );
+typedef void       (GLAPIENTRY *PFN_glReadBufferIndexedEXT)( GLenum src, GLint index );
+typedef void       (GLAPIENTRY *PFN_glReadBufferNV)( GLenum mode );
 typedef void       (GLAPIENTRY *PFN_glReadBufferRegion)( GLenum region, GLint x, GLint y, GLsizei width, GLsizei height );
 typedef void       (GLAPIENTRY *PFN_glReadInstrumentsSGIX)( GLint marker );
 typedef void       (GLAPIENTRY *PFN_glReadnPixels)( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data );
 typedef void       (GLAPIENTRY *PFN_glReadnPixelsARB)( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data );
+typedef void       (GLAPIENTRY *PFN_glReadnPixelsEXT)( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data );
 typedef void       (GLAPIENTRY *PFN_glRectxOES)( GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2 );
 typedef void       (GLAPIENTRY *PFN_glRectxvOES)( const GLfixed *v1, const GLfixed *v2 );
 typedef void       (GLAPIENTRY *PFN_glReferencePlaneSGIX)( const GLdouble *equation );
@@ -8922,9 +9732,14 @@ typedef void       (GLAPIENTRY *PFN_glRenderGpuMaskNV)( GLbitfield mask );
 typedef void       (GLAPIENTRY *PFN_glRenderbufferStorage)( GLenum target, GLenum internalformat, GLsizei width, GLsizei height );
 typedef void       (GLAPIENTRY *PFN_glRenderbufferStorageEXT)( GLenum target, GLenum internalformat, GLsizei width, GLsizei height );
 typedef void       (GLAPIENTRY *PFN_glRenderbufferStorageMultisample)( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height );
+typedef void       (GLAPIENTRY *PFN_glRenderbufferStorageMultisampleANGLE)( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height );
+typedef void       (GLAPIENTRY *PFN_glRenderbufferStorageMultisampleAPPLE)( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height );
 typedef void       (GLAPIENTRY *PFN_glRenderbufferStorageMultisampleAdvancedAMD)( GLenum target, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height );
 typedef void       (GLAPIENTRY *PFN_glRenderbufferStorageMultisampleCoverageNV)( GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height );
 typedef void       (GLAPIENTRY *PFN_glRenderbufferStorageMultisampleEXT)( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height );
+typedef void       (GLAPIENTRY *PFN_glRenderbufferStorageMultisampleIMG)( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height );
+typedef void       (GLAPIENTRY *PFN_glRenderbufferStorageMultisampleNV)( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height );
+typedef void       (GLAPIENTRY *PFN_glRenderbufferStorageOES)( GLenum target, GLenum internalformat, GLsizei width, GLsizei height );
 typedef void       (GLAPIENTRY *PFN_glReplacementCodePointerSUN)( GLenum type, GLsizei stride, const void **pointer );
 typedef void       (GLAPIENTRY *PFN_glReplacementCodeubSUN)( GLubyte code );
 typedef void       (GLAPIENTRY *PFN_glReplacementCodeubvSUN)( const GLubyte *code );
@@ -8956,6 +9771,7 @@ typedef void       (GLAPIENTRY *PFN_glResetMinmax)( GLenum target );
 typedef void       (GLAPIENTRY *PFN_glResetMinmaxEXT)( GLenum target );
 typedef void       (GLAPIENTRY *PFN_glResizeBuffersMESA)(void);
 typedef void       (GLAPIENTRY *PFN_glResolveDepthValuesNV)(void);
+typedef void       (GLAPIENTRY *PFN_glResolveMultisampleFramebufferAPPLE)(void);
 typedef void       (GLAPIENTRY *PFN_glResumeTransformFeedback)(void);
 typedef void       (GLAPIENTRY *PFN_glResumeTransformFeedbackNV)(void);
 typedef void       (GLAPIENTRY *PFN_glRotatex)( GLfixed angle, GLfixed x, GLfixed y, GLfixed z );
@@ -8971,7 +9787,11 @@ typedef void       (GLAPIENTRY *PFN_glSampleMaski)( GLuint maskNumber, GLbitfiel
 typedef void       (GLAPIENTRY *PFN_glSamplePatternEXT)( GLenum pattern );
 typedef void       (GLAPIENTRY *PFN_glSamplePatternSGIS)( GLenum pattern );
 typedef void       (GLAPIENTRY *PFN_glSamplerParameterIiv)( GLuint sampler, GLenum pname, const GLint *param );
+typedef void       (GLAPIENTRY *PFN_glSamplerParameterIivEXT)( GLuint sampler, GLenum pname, const GLint *param );
+typedef void       (GLAPIENTRY *PFN_glSamplerParameterIivOES)( GLuint sampler, GLenum pname, const GLint *param );
 typedef void       (GLAPIENTRY *PFN_glSamplerParameterIuiv)( GLuint sampler, GLenum pname, const GLuint *param );
+typedef void       (GLAPIENTRY *PFN_glSamplerParameterIuivEXT)( GLuint sampler, GLenum pname, const GLuint *param );
+typedef void       (GLAPIENTRY *PFN_glSamplerParameterIuivOES)( GLuint sampler, GLenum pname, const GLuint *param );
 typedef void       (GLAPIENTRY *PFN_glSamplerParameterf)( GLuint sampler, GLenum pname, GLfloat param );
 typedef void       (GLAPIENTRY *PFN_glSamplerParameterfv)( GLuint sampler, GLenum pname, const GLfloat *param );
 typedef void       (GLAPIENTRY *PFN_glSamplerParameteri)( GLuint sampler, GLenum pname, GLint param );
@@ -8979,10 +9799,16 @@ typedef void       (GLAPIENTRY *PFN_glSamplerParameteriv)( GLuint sampler, GLenu
 typedef void       (GLAPIENTRY *PFN_glScalex)( GLfixed x, GLfixed y, GLfixed z );
 typedef void       (GLAPIENTRY *PFN_glScalexOES)( GLfixed x, GLfixed y, GLfixed z );
 typedef void       (GLAPIENTRY *PFN_glScissorArrayv)( GLuint first, GLsizei count, const GLint *v );
+typedef void       (GLAPIENTRY *PFN_glScissorArrayvNV)( GLuint first, GLsizei count, const GLint *v );
+typedef void       (GLAPIENTRY *PFN_glScissorArrayvOES)( GLuint first, GLsizei count, const GLint *v );
 typedef void       (GLAPIENTRY *PFN_glScissorExclusiveArrayvNV)( GLuint first, GLsizei count, const GLint *v );
 typedef void       (GLAPIENTRY *PFN_glScissorExclusiveNV)( GLint x, GLint y, GLsizei width, GLsizei height );
 typedef void       (GLAPIENTRY *PFN_glScissorIndexed)( GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height );
+typedef void       (GLAPIENTRY *PFN_glScissorIndexedNV)( GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height );
+typedef void       (GLAPIENTRY *PFN_glScissorIndexedOES)( GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height );
 typedef void       (GLAPIENTRY *PFN_glScissorIndexedv)( GLuint index, const GLint *v );
+typedef void       (GLAPIENTRY *PFN_glScissorIndexedvNV)( GLuint index, const GLint *v );
+typedef void       (GLAPIENTRY *PFN_glScissorIndexedvOES)( GLuint index, const GLint *v );
 typedef void       (GLAPIENTRY *PFN_glSecondaryColor3b)( GLbyte red, GLbyte green, GLbyte blue );
 typedef void       (GLAPIENTRY *PFN_glSecondaryColor3bEXT)( GLbyte red, GLbyte green, GLbyte blue );
 typedef void       (GLAPIENTRY *PFN_glSecondaryColor3bv)( const GLbyte *v );
@@ -9047,6 +9873,7 @@ typedef void       (GLAPIENTRY *PFN_glShadingRateCombinerOpsEXT)( GLenum combine
 typedef void       (GLAPIENTRY *PFN_glShadingRateEXT)( GLenum rate );
 typedef void       (GLAPIENTRY *PFN_glShadingRateImageBarrierNV)( GLboolean synchronize );
 typedef void       (GLAPIENTRY *PFN_glShadingRateImagePaletteNV)( GLuint viewport, GLuint first, GLsizei count, const GLenum *rates );
+typedef void       (GLAPIENTRY *PFN_glShadingRateQCOM)( GLenum rate );
 typedef void       (GLAPIENTRY *PFN_glShadingRateSampleOrderCustomNV)( GLenum rate, GLuint samples, const GLint *locations );
 typedef void       (GLAPIENTRY *PFN_glShadingRateSampleOrderNV)( GLenum order );
 typedef void       (GLAPIENTRY *PFN_glSharpenTexFuncSGIS)( GLenum target, GLsizei n, const GLfloat *points );
@@ -9061,6 +9888,7 @@ typedef void       (GLAPIENTRY *PFN_glSpriteParameterfvSGIX)( GLenum pname, cons
 typedef void       (GLAPIENTRY *PFN_glSpriteParameteriSGIX)( GLenum pname, GLint param );
 typedef void       (GLAPIENTRY *PFN_glSpriteParameterivSGIX)( GLenum pname, const GLint *params );
 typedef void       (GLAPIENTRY *PFN_glStartInstrumentsSGIX)(void);
+typedef void       (GLAPIENTRY *PFN_glStartTilingQCOM)( GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask );
 typedef void       (GLAPIENTRY *PFN_glStateCaptureNV)( GLuint state, GLenum mode );
 typedef void       (GLAPIENTRY *PFN_glStencilClearTagEXT)( GLsizei stencilTagBits, GLuint stencilClearTag );
 typedef void       (GLAPIENTRY *PFN_glStencilFillPathInstancedNV)( GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues );
@@ -9104,7 +9932,10 @@ typedef void       (GLAPIENTRY *PFN_glTexAttachMemoryNV)( GLenum target, GLuint
 typedef void       (GLAPIENTRY *PFN_glTexBuffer)( GLenum target, GLenum internalformat, GLuint buffer );
 typedef void       (GLAPIENTRY *PFN_glTexBufferARB)( GLenum target, GLenum internalformat, GLuint buffer );
 typedef void       (GLAPIENTRY *PFN_glTexBufferEXT)( GLenum target, GLenum internalformat, GLuint buffer );
+typedef void       (GLAPIENTRY *PFN_glTexBufferOES)( GLenum target, GLenum internalformat, GLuint buffer );
 typedef void       (GLAPIENTRY *PFN_glTexBufferRange)( GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size );
+typedef void       (GLAPIENTRY *PFN_glTexBufferRangeEXT)( GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size );
+typedef void       (GLAPIENTRY *PFN_glTexBufferRangeOES)( GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size );
 typedef void       (GLAPIENTRY *PFN_glTexBumpParameterfvATI)( GLenum pname, const GLfloat *param );
 typedef void       (GLAPIENTRY *PFN_glTexBumpParameterivATI)( GLenum pname, const GLint *param );
 typedef void       (GLAPIENTRY *PFN_glTexCoord1bOES)( GLbyte s );
@@ -9161,7 +9992,13 @@ typedef void       (GLAPIENTRY *PFN_glTexEnvx)( GLenum target, GLenum pname, GLf
 typedef void       (GLAPIENTRY *PFN_glTexEnvxOES)( GLenum target, GLenum pname, GLfixed param );
 typedef void       (GLAPIENTRY *PFN_glTexEnvxv)( GLenum target, GLenum pname, const GLfixed *params );
 typedef void       (GLAPIENTRY *PFN_glTexEnvxvOES)( GLenum target, GLenum pname, const GLfixed *params );
+typedef void       (GLAPIENTRY *PFN_glTexEstimateMotionQCOM)( GLuint ref, GLuint target, GLuint output );
+typedef void       (GLAPIENTRY *PFN_glTexEstimateMotionRegionsQCOM)( GLuint ref, GLuint target, GLuint output, GLuint mask );
 typedef void       (GLAPIENTRY *PFN_glTexFilterFuncSGIS)( GLenum target, GLenum filter, GLsizei n, const GLfloat *weights );
+typedef void       (GLAPIENTRY *PFN_glTexGenfOES)( GLenum coord, GLenum pname, GLfloat param );
+typedef void       (GLAPIENTRY *PFN_glTexGenfvOES)( GLenum coord, GLenum pname, const GLfloat *params );
+typedef void       (GLAPIENTRY *PFN_glTexGeniOES)( GLenum coord, GLenum pname, GLint param );
+typedef void       (GLAPIENTRY *PFN_glTexGenivOES)( GLenum coord, GLenum pname, const GLint *params );
 typedef void       (GLAPIENTRY *PFN_glTexGenxOES)( GLenum coord, GLenum pname, GLfixed param );
 typedef void       (GLAPIENTRY *PFN_glTexGenxvOES)( GLenum coord, GLenum pname, const GLfixed *params );
 typedef void       (GLAPIENTRY *PFN_glTexImage2DMultisample)( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations );
@@ -9170,13 +10007,17 @@ typedef void       (GLAPIENTRY *PFN_glTexImage3D)( GLenum target, GLint level, G
 typedef void       (GLAPIENTRY *PFN_glTexImage3DEXT)( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels );
 typedef void       (GLAPIENTRY *PFN_glTexImage3DMultisample)( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations );
 typedef void       (GLAPIENTRY *PFN_glTexImage3DMultisampleCoverageNV)( GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations );
+typedef void       (GLAPIENTRY *PFN_glTexImage3DOES)( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels );
 typedef void       (GLAPIENTRY *PFN_glTexImage4DSGIS)( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const void *pixels );
 typedef void       (GLAPIENTRY *PFN_glTexPageCommitmentARB)( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit );
+typedef void       (GLAPIENTRY *PFN_glTexPageCommitmentEXT)( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit );
 typedef void       (GLAPIENTRY *PFN_glTexPageCommitmentMemNV)( GLenum target, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit );
 typedef void       (GLAPIENTRY *PFN_glTexParameterIiv)( GLenum target, GLenum pname, const GLint *params );
 typedef void       (GLAPIENTRY *PFN_glTexParameterIivEXT)( GLenum target, GLenum pname, const GLint *params );
+typedef void       (GLAPIENTRY *PFN_glTexParameterIivOES)( GLenum target, GLenum pname, const GLint *params );
 typedef void       (GLAPIENTRY *PFN_glTexParameterIuiv)( GLenum target, GLenum pname, const GLuint *params );
 typedef void       (GLAPIENTRY *PFN_glTexParameterIuivEXT)( GLenum target, GLenum pname, const GLuint *params );
+typedef void       (GLAPIENTRY *PFN_glTexParameterIuivOES)( GLenum target, GLenum pname, const GLuint *params );
 typedef void       (GLAPIENTRY *PFN_glTexParameterx)( GLenum target, GLenum pname, GLfixed param );
 typedef void       (GLAPIENTRY *PFN_glTexParameterxOES)( GLenum target, GLenum pname, GLfixed param );
 typedef void       (GLAPIENTRY *PFN_glTexParameterxv)( GLenum target, GLenum pname, const GLfixed *params );
@@ -9190,6 +10031,9 @@ typedef void       (GLAPIENTRY *PFN_glTexStorage2DMultisample)( GLenum target, G
 typedef void       (GLAPIENTRY *PFN_glTexStorage3D)( GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth );
 typedef void       (GLAPIENTRY *PFN_glTexStorage3DEXT)( GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth );
 typedef void       (GLAPIENTRY *PFN_glTexStorage3DMultisample)( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations );
+typedef void       (GLAPIENTRY *PFN_glTexStorage3DMultisampleOES)( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations );
+typedef void       (GLAPIENTRY *PFN_glTexStorageAttribs2DEXT)( GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, const GLint* attrib_list );
+typedef void       (GLAPIENTRY *PFN_glTexStorageAttribs3DEXT)( GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, const GLint* attrib_list );
 typedef void       (GLAPIENTRY *PFN_glTexStorageMem1DEXT)( GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset );
 typedef void       (GLAPIENTRY *PFN_glTexStorageMem2DEXT)( GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset );
 typedef void       (GLAPIENTRY *PFN_glTexStorageMem2DMultisampleEXT)( GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset );
@@ -9200,6 +10044,7 @@ typedef void       (GLAPIENTRY *PFN_glTexSubImage1DEXT)( GLenum target, GLint le
 typedef void       (GLAPIENTRY *PFN_glTexSubImage2DEXT)( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels );
 typedef void       (GLAPIENTRY *PFN_glTexSubImage3D)( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels );
 typedef void       (GLAPIENTRY *PFN_glTexSubImage3DEXT)( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels );
+typedef void       (GLAPIENTRY *PFN_glTexSubImage3DOES)( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels );
 typedef void       (GLAPIENTRY *PFN_glTexSubImage4DSGIS)( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const void *pixels );
 typedef void       (GLAPIENTRY *PFN_glTextureAttachMemoryNV)( GLuint texture, GLuint memory, GLuint64 offset );
 typedef void       (GLAPIENTRY *PFN_glTextureBarrier)(void);
@@ -9209,6 +10054,7 @@ typedef void       (GLAPIENTRY *PFN_glTextureBufferEXT)( GLuint texture, GLenum
 typedef void       (GLAPIENTRY *PFN_glTextureBufferRange)( GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size );
 typedef void       (GLAPIENTRY *PFN_glTextureBufferRangeEXT)( GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size );
 typedef void       (GLAPIENTRY *PFN_glTextureColorMaskSGIS)( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha );
+typedef void       (GLAPIENTRY *PFN_glTextureFoveationParametersQCOM)( GLuint texture, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea );
 typedef void       (GLAPIENTRY *PFN_glTextureImage1DEXT)( GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels );
 typedef void       (GLAPIENTRY *PFN_glTextureImage2DEXT)( GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels );
 typedef void       (GLAPIENTRY *PFN_glTextureImage2DMultisampleCoverageNV)( GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations );
@@ -9258,6 +10104,8 @@ typedef void       (GLAPIENTRY *PFN_glTextureSubImage2DEXT)( GLuint texture, GLe
 typedef void       (GLAPIENTRY *PFN_glTextureSubImage3D)( GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels );
 typedef void       (GLAPIENTRY *PFN_glTextureSubImage3DEXT)( GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels );
 typedef void       (GLAPIENTRY *PFN_glTextureView)( GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers );
+typedef void       (GLAPIENTRY *PFN_glTextureViewEXT)( GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers );
+typedef void       (GLAPIENTRY *PFN_glTextureViewOES)( GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers );
 typedef void       (GLAPIENTRY *PFN_glTrackMatrixNV)( GLenum target, GLuint address, GLenum matrix, GLenum transform );
 typedef void       (GLAPIENTRY *PFN_glTransformFeedbackAttribsNV)( GLsizei count, const GLint *attribs, GLenum bufferMode );
 typedef void       (GLAPIENTRY *PFN_glTransformFeedbackBufferBase)( GLuint xfb, GLuint index, GLuint buffer );
@@ -9360,36 +10208,45 @@ typedef void       (GLAPIENTRY *PFN_glUniform4uivEXT)( GLint location, GLsizei c
 typedef void       (GLAPIENTRY *PFN_glUniformBlockBinding)( GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding );
 typedef void       (GLAPIENTRY *PFN_glUniformBufferEXT)( GLuint program, GLint location, GLuint buffer );
 typedef void       (GLAPIENTRY *PFN_glUniformHandleui64ARB)( GLint location, GLuint64 value );
+typedef void       (GLAPIENTRY *PFN_glUniformHandleui64IMG)( GLint location, GLuint64 value );
 typedef void       (GLAPIENTRY *PFN_glUniformHandleui64NV)( GLint location, GLuint64 value );
 typedef void       (GLAPIENTRY *PFN_glUniformHandleui64vARB)( GLint location, GLsizei count, const GLuint64 *value );
+typedef void       (GLAPIENTRY *PFN_glUniformHandleui64vIMG)( GLint location, GLsizei count, const GLuint64 *value );
 typedef void       (GLAPIENTRY *PFN_glUniformHandleui64vNV)( GLint location, GLsizei count, const GLuint64 *value );
 typedef void       (GLAPIENTRY *PFN_glUniformMatrix2dv)( GLint location, GLsizei count, GLboolean transpose, const GLdouble *value );
 typedef void       (GLAPIENTRY *PFN_glUniformMatrix2fv)( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value );
 typedef void       (GLAPIENTRY *PFN_glUniformMatrix2fvARB)( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value );
 typedef void       (GLAPIENTRY *PFN_glUniformMatrix2x3dv)( GLint location, GLsizei count, GLboolean transpose, const GLdouble *value );
 typedef void       (GLAPIENTRY *PFN_glUniformMatrix2x3fv)( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value );
+typedef void       (GLAPIENTRY *PFN_glUniformMatrix2x3fvNV)( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value );
 typedef void       (GLAPIENTRY *PFN_glUniformMatrix2x4dv)( GLint location, GLsizei count, GLboolean transpose, const GLdouble *value );
 typedef void       (GLAPIENTRY *PFN_glUniformMatrix2x4fv)( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value );
+typedef void       (GLAPIENTRY *PFN_glUniformMatrix2x4fvNV)( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value );
 typedef void       (GLAPIENTRY *PFN_glUniformMatrix3dv)( GLint location, GLsizei count, GLboolean transpose, const GLdouble *value );
 typedef void       (GLAPIENTRY *PFN_glUniformMatrix3fv)( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value );
 typedef void       (GLAPIENTRY *PFN_glUniformMatrix3fvARB)( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value );
 typedef void       (GLAPIENTRY *PFN_glUniformMatrix3x2dv)( GLint location, GLsizei count, GLboolean transpose, const GLdouble *value );
 typedef void       (GLAPIENTRY *PFN_glUniformMatrix3x2fv)( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value );
+typedef void       (GLAPIENTRY *PFN_glUniformMatrix3x2fvNV)( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value );
 typedef void       (GLAPIENTRY *PFN_glUniformMatrix3x4dv)( GLint location, GLsizei count, GLboolean transpose, const GLdouble *value );
 typedef void       (GLAPIENTRY *PFN_glUniformMatrix3x4fv)( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value );
+typedef void       (GLAPIENTRY *PFN_glUniformMatrix3x4fvNV)( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value );
 typedef void       (GLAPIENTRY *PFN_glUniformMatrix4dv)( GLint location, GLsizei count, GLboolean transpose, const GLdouble *value );
 typedef void       (GLAPIENTRY *PFN_glUniformMatrix4fv)( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value );
 typedef void       (GLAPIENTRY *PFN_glUniformMatrix4fvARB)( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value );
 typedef void       (GLAPIENTRY *PFN_glUniformMatrix4x2dv)( GLint location, GLsizei count, GLboolean transpose, const GLdouble *value );
 typedef void       (GLAPIENTRY *PFN_glUniformMatrix4x2fv)( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value );
+typedef void       (GLAPIENTRY *PFN_glUniformMatrix4x2fvNV)( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value );
 typedef void       (GLAPIENTRY *PFN_glUniformMatrix4x3dv)( GLint location, GLsizei count, GLboolean transpose, const GLdouble *value );
 typedef void       (GLAPIENTRY *PFN_glUniformMatrix4x3fv)( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value );
+typedef void       (GLAPIENTRY *PFN_glUniformMatrix4x3fvNV)( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value );
 typedef void       (GLAPIENTRY *PFN_glUniformSubroutinesuiv)( GLenum shadertype, GLsizei count, const GLuint *indices );
 typedef void       (GLAPIENTRY *PFN_glUniformui64NV)( GLint location, GLuint64EXT value );
 typedef void       (GLAPIENTRY *PFN_glUniformui64vNV)( GLint location, GLsizei count, const GLuint64EXT *value );
 typedef void       (GLAPIENTRY *PFN_glUnlockArraysEXT)(void);
 typedef GLboolean  (GLAPIENTRY *PFN_glUnmapBuffer)( GLenum target );
 typedef GLboolean  (GLAPIENTRY *PFN_glUnmapBufferARB)( GLenum target );
+typedef GLboolean  (GLAPIENTRY *PFN_glUnmapBufferOES)( GLenum target );
 typedef GLboolean  (GLAPIENTRY *PFN_glUnmapNamedBuffer)( GLuint buffer );
 typedef GLboolean  (GLAPIENTRY *PFN_glUnmapNamedBufferEXT)( GLuint buffer );
 typedef void       (GLAPIENTRY *PFN_glUnmapObjectBufferATI)( GLuint buffer );
@@ -9581,7 +10438,10 @@ typedef void       (GLAPIENTRY *PFN_glVertexAttrib4usvARB)( GLuint index, const
 typedef void       (GLAPIENTRY *PFN_glVertexAttribArrayObjectATI)( GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset );
 typedef void       (GLAPIENTRY *PFN_glVertexAttribBinding)( GLuint attribindex, GLuint bindingindex );
 typedef void       (GLAPIENTRY *PFN_glVertexAttribDivisor)( GLuint index, GLuint divisor );
+typedef void       (GLAPIENTRY *PFN_glVertexAttribDivisorANGLE)( GLuint index, GLuint divisor );
 typedef void       (GLAPIENTRY *PFN_glVertexAttribDivisorARB)( GLuint index, GLuint divisor );
+typedef void       (GLAPIENTRY *PFN_glVertexAttribDivisorEXT)( GLuint index, GLuint divisor );
+typedef void       (GLAPIENTRY *PFN_glVertexAttribDivisorNV)( GLuint index, GLuint divisor );
 typedef void       (GLAPIENTRY *PFN_glVertexAttribFormat)( GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset );
 typedef void       (GLAPIENTRY *PFN_glVertexAttribFormatNV)( GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride );
 typedef void       (GLAPIENTRY *PFN_glVertexAttribI1i)( GLuint index, GLint x );
@@ -9751,16 +10611,24 @@ typedef void       (GLAPIENTRY *PFN_glVideoCaptureStreamParameterdvNV)( GLuint v
 typedef void       (GLAPIENTRY *PFN_glVideoCaptureStreamParameterfvNV)( GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat *params );
 typedef void       (GLAPIENTRY *PFN_glVideoCaptureStreamParameterivNV)( GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint *params );
 typedef void       (GLAPIENTRY *PFN_glViewportArrayv)( GLuint first, GLsizei count, const GLfloat *v );
+typedef void       (GLAPIENTRY *PFN_glViewportArrayvNV)( GLuint first, GLsizei count, const GLfloat *v );
+typedef void       (GLAPIENTRY *PFN_glViewportArrayvOES)( GLuint first, GLsizei count, const GLfloat *v );
 typedef void       (GLAPIENTRY *PFN_glViewportIndexedf)( GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h );
+typedef void       (GLAPIENTRY *PFN_glViewportIndexedfNV)( GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h );
+typedef void       (GLAPIENTRY *PFN_glViewportIndexedfOES)( GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h );
 typedef void       (GLAPIENTRY *PFN_glViewportIndexedfv)( GLuint index, const GLfloat *v );
+typedef void       (GLAPIENTRY *PFN_glViewportIndexedfvNV)( GLuint index, const GLfloat *v );
+typedef void       (GLAPIENTRY *PFN_glViewportIndexedfvOES)( GLuint index, const GLfloat *v );
 typedef void       (GLAPIENTRY *PFN_glViewportPositionWScaleNV)( GLuint index, GLfloat xcoeff, GLfloat ycoeff );
 typedef void       (GLAPIENTRY *PFN_glViewportSwizzleNV)( GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew );
 typedef void       (GLAPIENTRY *PFN_glWaitSemaphoreEXT)( GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts );
 typedef void       (GLAPIENTRY *PFN_glWaitSemaphoreui64NVX)( GLuint waitGpu, GLsizei fenceObjectCount, const GLuint *semaphoreArray, const GLuint64 *fenceValueArray );
 typedef void       (GLAPIENTRY *PFN_glWaitSync)( GLsync sync, GLbitfield flags, GLuint64 timeout );
+typedef void       (GLAPIENTRY *PFN_glWaitSyncAPPLE)( GLsync sync, GLbitfield flags, GLuint64 timeout );
 typedef void       (GLAPIENTRY *PFN_glWaitVkSemaphoreNV)( GLuint64 vkSemaphore );
 typedef void       (GLAPIENTRY *PFN_glWeightPathsNV)( GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights );
 typedef void       (GLAPIENTRY *PFN_glWeightPointerARB)( GLint size, GLenum type, GLsizei stride, const void *pointer );
+typedef void       (GLAPIENTRY *PFN_glWeightPointerOES)( GLint size, GLenum type, GLsizei stride, const void *pointer );
 typedef void       (GLAPIENTRY *PFN_glWeightbvARB)( GLint size, const GLbyte *weights );
 typedef void       (GLAPIENTRY *PFN_glWeightdvARB)( GLint size, const GLdouble *weights );
 typedef void       (GLAPIENTRY *PFN_glWeightfvARB)( GLint size, const GLfloat *weights );
@@ -9830,8 +10698,8 @@ typedef void       (GLAPIENTRY *PFN_glWriteMaskEXT)( GLuint res, GLuint in, GLen
 typedef void *     (GLAPIENTRY *PFN_wglAllocateMemoryNV)( GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority );
 typedef BOOL       (GLAPIENTRY *PFN_wglBindTexImageARB)( HPBUFFERARB hPbuffer, int iBuffer );
 typedef BOOL       (GLAPIENTRY *PFN_wglChoosePixelFormatARB)( HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats );
-typedef HGLRC      (GLAPIENTRY *PFN_wglCreateContextAttribsARB)( HDC hDC, HGLRC hShareContext, const int *attribList, HGLRC client_context );
-typedef HPBUFFERARB (GLAPIENTRY *PFN_wglCreatePbufferARB)( HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int *piAttribList, HPBUFFERARB client_pbuffer );
+typedef HGLRC      (GLAPIENTRY *PFN_wglCreateContextAttribsARB)( HDC hDC, HGLRC hShareContext, const int *attribList );
+typedef HPBUFFERARB (GLAPIENTRY *PFN_wglCreatePbufferARB)( HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int *piAttribList );
 typedef BOOL       (GLAPIENTRY *PFN_wglDestroyPbufferARB)( HPBUFFERARB hPbuffer );
 typedef void       (GLAPIENTRY *PFN_wglFreeMemoryNV)( void *pointer );
 typedef HDC        (GLAPIENTRY *PFN_wglGetCurrentReadDCARB)(void);
@@ -9892,6 +10760,8 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_EXT(WGL_WINE_pixel_format_passthrough) \
     USE_GL_EXT(WGL_WINE_query_renderer)
 
+#define WGL_FIRST_EXTENSION WGL_3DFX_multisample
+
 #define ALL_WGL_FUNCS \
     USE_GL_FUNC(wglChoosePixelFormat) \
     USE_GL_FUNC(wglCopyContext) \
@@ -9946,6 +10816,27 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(wglSwapIntervalEXT)
 
 #define ALL_EGL_EXTS \
+    USE_GL_EXT(EGL_ANDROID_GLES_layers) \
+    USE_GL_EXT(EGL_ANDROID_blob_cache) \
+    USE_GL_EXT(EGL_ANDROID_create_native_client_buffer) \
+    USE_GL_EXT(EGL_ANDROID_framebuffer_target) \
+    USE_GL_EXT(EGL_ANDROID_front_buffer_auto_refresh) \
+    USE_GL_EXT(EGL_ANDROID_get_frame_timestamps) \
+    USE_GL_EXT(EGL_ANDROID_get_native_client_buffer) \
+    USE_GL_EXT(EGL_ANDROID_image_native_buffer) \
+    USE_GL_EXT(EGL_ANDROID_native_fence_sync) \
+    USE_GL_EXT(EGL_ANDROID_presentation_time) \
+    USE_GL_EXT(EGL_ANDROID_recordable) \
+    USE_GL_EXT(EGL_ANDROID_telemetry_hint) \
+    USE_GL_EXT(EGL_ANGLE_d3d_share_handle_client_buffer) \
+    USE_GL_EXT(EGL_ANGLE_device_d3d) \
+    USE_GL_EXT(EGL_ANGLE_query_surface_pointer) \
+    USE_GL_EXT(EGL_ANGLE_surface_d3d_texture_2d_share_handle) \
+    USE_GL_EXT(EGL_ANGLE_sync_control_rate) \
+    USE_GL_EXT(EGL_ANGLE_window_fixed_size) \
+    USE_GL_EXT(EGL_ARM_image_format) \
+    USE_GL_EXT(EGL_ARM_implicit_external_sync) \
+    USE_GL_EXT(EGL_ARM_pixmap_multisample_discard) \
     USE_GL_EXT(EGL_EXT_bind_to_front) \
     USE_GL_EXT(EGL_EXT_buffer_age) \
     USE_GL_EXT(EGL_EXT_client_extensions) \
@@ -9996,6 +10887,8 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_EXT(EGL_EXT_swap_buffers_with_damage) \
     USE_GL_EXT(EGL_EXT_sync_reuse) \
     USE_GL_EXT(EGL_EXT_yuv_surface) \
+    USE_GL_EXT(EGL_HI_clientpixmap) \
+    USE_GL_EXT(EGL_HI_colorformats) \
     USE_GL_EXT(EGL_IMG_context_priority) \
     USE_GL_EXT(EGL_IMG_image_plane_attribs) \
     USE_GL_EXT(EGL_KHR_cl_event) \
@@ -10044,6 +10937,9 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_EXT(EGL_MESA_platform_gbm) \
     USE_GL_EXT(EGL_MESA_platform_surfaceless) \
     USE_GL_EXT(EGL_MESA_query_driver) \
+    USE_GL_EXT(EGL_NOK_swap_region) \
+    USE_GL_EXT(EGL_NOK_swap_region2) \
+    USE_GL_EXT(EGL_NOK_texture_from_pixmap) \
     USE_GL_EXT(EGL_NV_3dvision_surface) \
     USE_GL_EXT(EGL_NV_context_priority_realtime) \
     USE_GL_EXT(EGL_NV_coverage_sample) \
@@ -10080,6 +10976,10 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_EXT(EGL_NV_sync) \
     USE_GL_EXT(EGL_NV_system_time) \
     USE_GL_EXT(EGL_NV_triple_buffer) \
+    USE_GL_EXT(EGL_QNX_image_native_buffer) \
+    USE_GL_EXT(EGL_QNX_platform_screen) \
+    USE_GL_EXT(EGL_TIZEN_image_native_buffer) \
+    USE_GL_EXT(EGL_TIZEN_image_native_surface) \
     USE_GL_EXT(EGL_WL_bind_wayland_display) \
     USE_GL_EXT(EGL_WL_create_wayland_buffer_from_image)
 
@@ -10144,6 +11044,8 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(eglCreateDRMImageMESA) \
     USE_GL_FUNC(eglCreateFenceSyncNV) \
     USE_GL_FUNC(eglCreateImageKHR) \
+    USE_GL_FUNC(eglCreateNativeClientBufferANDROID) \
+    USE_GL_FUNC(eglCreatePixmapSurfaceHI) \
     USE_GL_FUNC(eglCreatePlatformPixmapSurfaceEXT) \
     USE_GL_FUNC(eglCreatePlatformWindowSurfaceEXT) \
     USE_GL_FUNC(eglCreateStreamAttribKHR) \
@@ -10160,12 +11062,20 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(eglDestroyStreamKHR) \
     USE_GL_FUNC(eglDestroySyncKHR) \
     USE_GL_FUNC(eglDestroySyncNV) \
+    USE_GL_FUNC(eglDupNativeFenceFDANDROID) \
     USE_GL_FUNC(eglExportDMABUFImageMESA) \
     USE_GL_FUNC(eglExportDMABUFImageQueryMESA) \
     USE_GL_FUNC(eglExportDRMImageMESA) \
     USE_GL_FUNC(eglFenceNV) \
+    USE_GL_FUNC(eglGetCompositorTimingANDROID) \
+    USE_GL_FUNC(eglGetCompositorTimingSupportedANDROID) \
     USE_GL_FUNC(eglGetDisplayDriverConfig) \
     USE_GL_FUNC(eglGetDisplayDriverName) \
+    USE_GL_FUNC(eglGetFrameTimestampSupportedANDROID) \
+    USE_GL_FUNC(eglGetFrameTimestampsANDROID) \
+    USE_GL_FUNC(eglGetMscRateANGLE) \
+    USE_GL_FUNC(eglGetNativeClientBufferANDROID) \
+    USE_GL_FUNC(eglGetNextFrameIdANDROID) \
     USE_GL_FUNC(eglGetOutputLayersEXT) \
     USE_GL_FUNC(eglGetOutputPortsEXT) \
     USE_GL_FUNC(eglGetPlatformDisplayEXT) \
@@ -10179,6 +11089,7 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(eglOutputLayerAttribEXT) \
     USE_GL_FUNC(eglOutputPortAttribEXT) \
     USE_GL_FUNC(eglPostSubBufferNV) \
+    USE_GL_FUNC(eglPresentationTimeANDROID) \
     USE_GL_FUNC(eglQueryDebugKHR) \
     USE_GL_FUNC(eglQueryDeviceAttribEXT) \
     USE_GL_FUNC(eglQueryDeviceBinaryEXT) \
@@ -10204,8 +11115,10 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(eglQueryStreamu64KHR) \
     USE_GL_FUNC(eglQuerySupportedCompressionRatesEXT) \
     USE_GL_FUNC(eglQuerySurface64KHR) \
+    USE_GL_FUNC(eglQuerySurfacePointerANGLE) \
     USE_GL_FUNC(eglQueryWaylandBufferWL) \
     USE_GL_FUNC(eglResetStreamNV) \
+    USE_GL_FUNC(eglSetBlobCacheFuncsANDROID) \
     USE_GL_FUNC(eglSetDamageRegionKHR) \
     USE_GL_FUNC(eglSetStreamAttribKHR) \
     USE_GL_FUNC(eglSetStreamMetadataNV) \
@@ -10223,6 +11136,8 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(eglStreamFlushNV) \
     USE_GL_FUNC(eglStreamImageConsumerConnectNV) \
     USE_GL_FUNC(eglStreamReleaseImageNV) \
+    USE_GL_FUNC(eglSwapBuffersRegion2NOK) \
+    USE_GL_FUNC(eglSwapBuffersRegionNOK) \
     USE_GL_FUNC(eglSwapBuffersWithDamageEXT) \
     USE_GL_FUNC(eglSwapBuffersWithDamageKHR) \
     USE_GL_FUNC(eglUnbindWaylandDisplayWL) \
@@ -10230,7 +11145,7 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(eglUnsignalSyncEXT) \
     USE_GL_FUNC(eglWaitSyncKHR)
 
-#define ALL_GL_CLIENT_EXTS \
+#define ALL_GL_EXTS \
     USE_GL_EXT(GL_3DFX_multisample) \
     USE_GL_EXT(GL_3DFX_tbuffer) \
     USE_GL_EXT(GL_3DFX_texture_compression_FXT1) \
@@ -10286,6 +11201,7 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_EXT(GL_APPLE_float_pixels) \
     USE_GL_EXT(GL_APPLE_flush_buffer_range) \
     USE_GL_EXT(GL_APPLE_object_purgeable) \
+    USE_GL_EXT(GL_APPLE_packed_pixels) \
     USE_GL_EXT(GL_APPLE_rgb_422) \
     USE_GL_EXT(GL_APPLE_row_bytes) \
     USE_GL_EXT(GL_APPLE_specular_vector) \
@@ -10483,6 +11399,7 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_EXT(GL_ATI_pn_triangles) \
     USE_GL_EXT(GL_ATI_separate_stencil) \
     USE_GL_EXT(GL_ATI_text_fragment_shader) \
+    USE_GL_EXT(GL_ATI_texture_compression_3dc) \
     USE_GL_EXT(GL_ATI_texture_env_combine3) \
     USE_GL_EXT(GL_ATI_texture_float) \
     USE_GL_EXT(GL_ATI_texture_mirror_once) \
@@ -10631,6 +11548,7 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_EXT(GL_EXT_texture_compression_s3tc_srgb) \
     USE_GL_EXT(GL_EXT_texture_cube_map) \
     USE_GL_EXT(GL_EXT_texture_cube_map_array) \
+    USE_GL_EXT(GL_EXT_texture_edge_clamp) \
     USE_GL_EXT(GL_EXT_texture_env) \
     USE_GL_EXT(GL_EXT_texture_env_add) \
     USE_GL_EXT(GL_EXT_texture_env_combine) \
@@ -10648,6 +11566,7 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_EXT(GL_EXT_texture_object) \
     USE_GL_EXT(GL_EXT_texture_perturb_normal) \
     USE_GL_EXT(GL_EXT_texture_query_lod) \
+    USE_GL_EXT(GL_EXT_texture_rectangle) \
     USE_GL_EXT(GL_EXT_texture_rg) \
     USE_GL_EXT(GL_EXT_texture_sRGB) \
     USE_GL_EXT(GL_EXT_texture_sRGB_R8) \
@@ -10724,6 +11643,7 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_EXT(GL_MESA_resize_buffers) \
     USE_GL_EXT(GL_MESA_shader_integer_functions) \
     USE_GL_EXT(GL_MESA_texture_const_bandwidth) \
+    USE_GL_EXT(GL_MESA_texture_signed_rgba) \
     USE_GL_EXT(GL_MESA_tile_raster_order) \
     USE_GL_EXT(GL_MESA_window_pos) \
     USE_GL_EXT(GL_MESA_ycbcr_texture) \
@@ -11014,10 +11934,6 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_EXT(GL_WIN_phong_shading) \
     USE_GL_EXT(GL_WIN_specular_fog)
 
-#define ALL_GL_EXTS ALL_GL_CLIENT_EXTS \
-    USE_GL_EXT(GL_EXT_memory_object_fd) \
-    USE_GL_EXT(GL_EXT_semaphore_fd)
-
 #define ALL_GL_FUNCS \
     USE_GL_FUNC(glAccum) \
     USE_GL_FUNC(glAlphaFunc) \
@@ -11368,6 +12284,7 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glAlphaFragmentOp1ATI) \
     USE_GL_FUNC(glAlphaFragmentOp2ATI) \
     USE_GL_FUNC(glAlphaFragmentOp3ATI) \
+    USE_GL_FUNC(glAlphaFuncQCOM) \
     USE_GL_FUNC(glAlphaFuncx) \
     USE_GL_FUNC(glAlphaFuncxOES) \
     USE_GL_FUNC(glAlphaToCoverageDitherControlNV) \
@@ -11391,6 +12308,7 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glBeginPerfQueryINTEL) \
     USE_GL_FUNC(glBeginQuery) \
     USE_GL_FUNC(glBeginQueryARB) \
+    USE_GL_FUNC(glBeginQueryEXT) \
     USE_GL_FUNC(glBeginQueryIndexed) \
     USE_GL_FUNC(glBeginTransformFeedback) \
     USE_GL_FUNC(glBeginTransformFeedbackEXT) \
@@ -11414,9 +12332,11 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glBindFragDataLocation) \
     USE_GL_FUNC(glBindFragDataLocationEXT) \
     USE_GL_FUNC(glBindFragDataLocationIndexed) \
+    USE_GL_FUNC(glBindFragDataLocationIndexedEXT) \
     USE_GL_FUNC(glBindFragmentShaderATI) \
     USE_GL_FUNC(glBindFramebuffer) \
     USE_GL_FUNC(glBindFramebufferEXT) \
+    USE_GL_FUNC(glBindFramebufferOES) \
     USE_GL_FUNC(glBindImageTexture) \
     USE_GL_FUNC(glBindImageTextureEXT) \
     USE_GL_FUNC(glBindImageTextures) \
@@ -11429,6 +12349,7 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glBindProgramPipeline) \
     USE_GL_FUNC(glBindRenderbuffer) \
     USE_GL_FUNC(glBindRenderbufferEXT) \
+    USE_GL_FUNC(glBindRenderbufferOES) \
     USE_GL_FUNC(glBindSampler) \
     USE_GL_FUNC(glBindSamplers) \
     USE_GL_FUNC(glBindShadingRateImageNV) \
@@ -11441,6 +12362,7 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glBindTransformFeedbackNV) \
     USE_GL_FUNC(glBindVertexArray) \
     USE_GL_FUNC(glBindVertexArrayAPPLE) \
+    USE_GL_FUNC(glBindVertexArrayOES) \
     USE_GL_FUNC(glBindVertexBuffer) \
     USE_GL_FUNC(glBindVertexBuffers) \
     USE_GL_FUNC(glBindVertexShaderEXT) \
@@ -11467,27 +12389,40 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glBlendEquation) \
     USE_GL_FUNC(glBlendEquationEXT) \
     USE_GL_FUNC(glBlendEquationIndexedAMD) \
+    USE_GL_FUNC(glBlendEquationOES) \
     USE_GL_FUNC(glBlendEquationSeparate) \
     USE_GL_FUNC(glBlendEquationSeparateEXT) \
     USE_GL_FUNC(glBlendEquationSeparateIndexedAMD) \
+    USE_GL_FUNC(glBlendEquationSeparateOES) \
     USE_GL_FUNC(glBlendEquationSeparatei) \
     USE_GL_FUNC(glBlendEquationSeparateiARB) \
+    USE_GL_FUNC(glBlendEquationSeparateiEXT) \
+    USE_GL_FUNC(glBlendEquationSeparateiOES) \
     USE_GL_FUNC(glBlendEquationi) \
     USE_GL_FUNC(glBlendEquationiARB) \
+    USE_GL_FUNC(glBlendEquationiEXT) \
+    USE_GL_FUNC(glBlendEquationiOES) \
     USE_GL_FUNC(glBlendFuncIndexedAMD) \
     USE_GL_FUNC(glBlendFuncSeparate) \
     USE_GL_FUNC(glBlendFuncSeparateEXT) \
     USE_GL_FUNC(glBlendFuncSeparateINGR) \
     USE_GL_FUNC(glBlendFuncSeparateIndexedAMD) \
+    USE_GL_FUNC(glBlendFuncSeparateOES) \
     USE_GL_FUNC(glBlendFuncSeparatei) \
     USE_GL_FUNC(glBlendFuncSeparateiARB) \
+    USE_GL_FUNC(glBlendFuncSeparateiEXT) \
+    USE_GL_FUNC(glBlendFuncSeparateiOES) \
     USE_GL_FUNC(glBlendFunci) \
     USE_GL_FUNC(glBlendFunciARB) \
+    USE_GL_FUNC(glBlendFunciEXT) \
+    USE_GL_FUNC(glBlendFunciOES) \
     USE_GL_FUNC(glBlendParameteriNV) \
     USE_GL_FUNC(glBlitFramebuffer) \
+    USE_GL_FUNC(glBlitFramebufferANGLE) \
     USE_GL_FUNC(glBlitFramebufferEXT) \
     USE_GL_FUNC(glBlitFramebufferLayerEXT) \
     USE_GL_FUNC(glBlitFramebufferLayersEXT) \
+    USE_GL_FUNC(glBlitFramebufferNV) \
     USE_GL_FUNC(glBlitNamedFramebuffer) \
     USE_GL_FUNC(glBufferAddressRangeNV) \
     USE_GL_FUNC(glBufferAttachMemoryNV) \
@@ -11498,6 +12433,7 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glBufferParameteriAPPLE) \
     USE_GL_FUNC(glBufferRegionEnabled) \
     USE_GL_FUNC(glBufferStorage) \
+    USE_GL_FUNC(glBufferStorageEXT) \
     USE_GL_FUNC(glBufferStorageExternalEXT) \
     USE_GL_FUNC(glBufferStorageMemEXT) \
     USE_GL_FUNC(glBufferSubData) \
@@ -11505,6 +12441,7 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glCallCommandListNV) \
     USE_GL_FUNC(glCheckFramebufferStatus) \
     USE_GL_FUNC(glCheckFramebufferStatusEXT) \
+    USE_GL_FUNC(glCheckFramebufferStatusOES) \
     USE_GL_FUNC(glCheckNamedFramebufferStatus) \
     USE_GL_FUNC(glCheckNamedFramebufferStatusEXT) \
     USE_GL_FUNC(glClampColor) \
@@ -11533,18 +12470,25 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glClearNamedFramebufferfv) \
     USE_GL_FUNC(glClearNamedFramebufferiv) \
     USE_GL_FUNC(glClearNamedFramebufferuiv) \
+    USE_GL_FUNC(glClearPixelLocalStorageuiEXT) \
     USE_GL_FUNC(glClearTexImage) \
+    USE_GL_FUNC(glClearTexImageEXT) \
     USE_GL_FUNC(glClearTexSubImage) \
+    USE_GL_FUNC(glClearTexSubImageEXT) \
     USE_GL_FUNC(glClientActiveTexture) \
     USE_GL_FUNC(glClientActiveTextureARB) \
     USE_GL_FUNC(glClientActiveVertexStreamATI) \
     USE_GL_FUNC(glClientAttribDefaultEXT) \
     USE_GL_FUNC(glClientWaitSemaphoreui64NVX) \
     USE_GL_FUNC(glClientWaitSync) \
+    USE_GL_FUNC(glClientWaitSyncAPPLE) \
     USE_GL_FUNC(glClipControl) \
+    USE_GL_FUNC(glClipControlEXT) \
     USE_GL_FUNC(glClipPlanef) \
+    USE_GL_FUNC(glClipPlanefIMG) \
     USE_GL_FUNC(glClipPlanefOES) \
     USE_GL_FUNC(glClipPlanex) \
+    USE_GL_FUNC(glClipPlanexIMG) \
     USE_GL_FUNC(glClipPlanexOES) \
     USE_GL_FUNC(glColor3fVertex3fSUN) \
     USE_GL_FUNC(glColor3fVertex3fvSUN) \
@@ -11569,6 +12513,8 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glColorFragmentOp3ATI) \
     USE_GL_FUNC(glColorMaskIndexedEXT) \
     USE_GL_FUNC(glColorMaski) \
+    USE_GL_FUNC(glColorMaskiEXT) \
+    USE_GL_FUNC(glColorMaskiOES) \
     USE_GL_FUNC(glColorP3ui) \
     USE_GL_FUNC(glColorP3uiv) \
     USE_GL_FUNC(glColorP4ui) \
@@ -11609,12 +12555,14 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glCompressedTexImage2DARB) \
     USE_GL_FUNC(glCompressedTexImage3D) \
     USE_GL_FUNC(glCompressedTexImage3DARB) \
+    USE_GL_FUNC(glCompressedTexImage3DOES) \
     USE_GL_FUNC(glCompressedTexSubImage1D) \
     USE_GL_FUNC(glCompressedTexSubImage1DARB) \
     USE_GL_FUNC(glCompressedTexSubImage2D) \
     USE_GL_FUNC(glCompressedTexSubImage2DARB) \
     USE_GL_FUNC(glCompressedTexSubImage3D) \
     USE_GL_FUNC(glCompressedTexSubImage3DARB) \
+    USE_GL_FUNC(glCompressedTexSubImage3DOES) \
     USE_GL_FUNC(glCompressedTextureImage1DEXT) \
     USE_GL_FUNC(glCompressedTextureImage2DEXT) \
     USE_GL_FUNC(glCompressedTextureImage3DEXT) \
@@ -11641,6 +12589,7 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glConvolutionParameterxOES) \
     USE_GL_FUNC(glConvolutionParameterxvOES) \
     USE_GL_FUNC(glCopyBufferSubData) \
+    USE_GL_FUNC(glCopyBufferSubDataNV) \
     USE_GL_FUNC(glCopyColorSubTable) \
     USE_GL_FUNC(glCopyColorSubTableEXT) \
     USE_GL_FUNC(glCopyColorTable) \
@@ -11650,7 +12599,9 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glCopyConvolutionFilter2D) \
     USE_GL_FUNC(glCopyConvolutionFilter2DEXT) \
     USE_GL_FUNC(glCopyImageSubData) \
+    USE_GL_FUNC(glCopyImageSubDataEXT) \
     USE_GL_FUNC(glCopyImageSubDataNV) \
+    USE_GL_FUNC(glCopyImageSubDataOES) \
     USE_GL_FUNC(glCopyMultiTexImage1DEXT) \
     USE_GL_FUNC(glCopyMultiTexImage2DEXT) \
     USE_GL_FUNC(glCopyMultiTexSubImage1DEXT) \
@@ -11664,8 +12615,10 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glCopyTexSubImage2DEXT) \
     USE_GL_FUNC(glCopyTexSubImage3D) \
     USE_GL_FUNC(glCopyTexSubImage3DEXT) \
+    USE_GL_FUNC(glCopyTexSubImage3DOES) \
     USE_GL_FUNC(glCopyTextureImage1DEXT) \
     USE_GL_FUNC(glCopyTextureImage2DEXT) \
+    USE_GL_FUNC(glCopyTextureLevelsAPPLE) \
     USE_GL_FUNC(glCopyTextureSubImage1D) \
     USE_GL_FUNC(glCopyTextureSubImage1DEXT) \
     USE_GL_FUNC(glCopyTextureSubImage2D) \
@@ -11676,8 +12629,10 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glCoverFillPathNV) \
     USE_GL_FUNC(glCoverStrokePathInstancedNV) \
     USE_GL_FUNC(glCoverStrokePathNV) \
+    USE_GL_FUNC(glCoverageMaskNV) \
     USE_GL_FUNC(glCoverageModulationNV) \
     USE_GL_FUNC(glCoverageModulationTableNV) \
+    USE_GL_FUNC(glCoverageOperationNV) \
     USE_GL_FUNC(glCreateBuffers) \
     USE_GL_FUNC(glCreateCommandListsNV) \
     USE_GL_FUNC(glCreateFramebuffers) \
@@ -11703,6 +12658,7 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glCullParameterdvEXT) \
     USE_GL_FUNC(glCullParameterfvEXT) \
     USE_GL_FUNC(glCurrentPaletteMatrixARB) \
+    USE_GL_FUNC(glCurrentPaletteMatrixOES) \
     USE_GL_FUNC(glDebugMessageCallback) \
     USE_GL_FUNC(glDebugMessageCallbackAMD) \
     USE_GL_FUNC(glDebugMessageCallbackARB) \
@@ -11725,6 +12681,7 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glDeleteFragmentShaderATI) \
     USE_GL_FUNC(glDeleteFramebuffers) \
     USE_GL_FUNC(glDeleteFramebuffersEXT) \
+    USE_GL_FUNC(glDeleteFramebuffersOES) \
     USE_GL_FUNC(glDeleteMemoryObjectsEXT) \
     USE_GL_FUNC(glDeleteNamedStringARB) \
     USE_GL_FUNC(glDeleteNamesAMD) \
@@ -11740,26 +12697,34 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glDeleteProgramsNV) \
     USE_GL_FUNC(glDeleteQueries) \
     USE_GL_FUNC(glDeleteQueriesARB) \
+    USE_GL_FUNC(glDeleteQueriesEXT) \
     USE_GL_FUNC(glDeleteQueryResourceTagNV) \
     USE_GL_FUNC(glDeleteRenderbuffers) \
     USE_GL_FUNC(glDeleteRenderbuffersEXT) \
+    USE_GL_FUNC(glDeleteRenderbuffersOES) \
     USE_GL_FUNC(glDeleteSamplers) \
     USE_GL_FUNC(glDeleteSemaphoresEXT) \
     USE_GL_FUNC(glDeleteShader) \
     USE_GL_FUNC(glDeleteStatesNV) \
     USE_GL_FUNC(glDeleteSync) \
+    USE_GL_FUNC(glDeleteSyncAPPLE) \
     USE_GL_FUNC(glDeleteTexturesEXT) \
     USE_GL_FUNC(glDeleteTransformFeedbacks) \
     USE_GL_FUNC(glDeleteTransformFeedbacksNV) \
     USE_GL_FUNC(glDeleteVertexArrays) \
     USE_GL_FUNC(glDeleteVertexArraysAPPLE) \
+    USE_GL_FUNC(glDeleteVertexArraysOES) \
     USE_GL_FUNC(glDeleteVertexShaderEXT) \
     USE_GL_FUNC(glDepthBoundsEXT) \
     USE_GL_FUNC(glDepthBoundsdNV) \
     USE_GL_FUNC(glDepthRangeArraydvNV) \
+    USE_GL_FUNC(glDepthRangeArrayfvNV) \
+    USE_GL_FUNC(glDepthRangeArrayfvOES) \
     USE_GL_FUNC(glDepthRangeArrayv) \
     USE_GL_FUNC(glDepthRangeIndexed) \
     USE_GL_FUNC(glDepthRangeIndexeddNV) \
+    USE_GL_FUNC(glDepthRangeIndexedfNV) \
+    USE_GL_FUNC(glDepthRangeIndexedfOES) \
     USE_GL_FUNC(glDepthRangedNV) \
     USE_GL_FUNC(glDepthRangef) \
     USE_GL_FUNC(glDepthRangefOES) \
@@ -11770,6 +12735,7 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glDetailTexFuncSGIS) \
     USE_GL_FUNC(glDisableClientStateIndexedEXT) \
     USE_GL_FUNC(glDisableClientStateiEXT) \
+    USE_GL_FUNC(glDisableDriverControlQCOM) \
     USE_GL_FUNC(glDisableIndexedEXT) \
     USE_GL_FUNC(glDisableVariantClientStateEXT) \
     USE_GL_FUNC(glDisableVertexArrayAttrib) \
@@ -11779,19 +12745,29 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glDisableVertexAttribArray) \
     USE_GL_FUNC(glDisableVertexAttribArrayARB) \
     USE_GL_FUNC(glDisablei) \
+    USE_GL_FUNC(glDisableiEXT) \
+    USE_GL_FUNC(glDisableiNV) \
+    USE_GL_FUNC(glDisableiOES) \
+    USE_GL_FUNC(glDiscardFramebufferEXT) \
     USE_GL_FUNC(glDispatchCompute) \
     USE_GL_FUNC(glDispatchComputeGroupSizeARB) \
     USE_GL_FUNC(glDispatchComputeIndirect) \
     USE_GL_FUNC(glDrawArraysEXT) \
     USE_GL_FUNC(glDrawArraysIndirect) \
     USE_GL_FUNC(glDrawArraysInstanced) \
+    USE_GL_FUNC(glDrawArraysInstancedANGLE) \
     USE_GL_FUNC(glDrawArraysInstancedARB) \
     USE_GL_FUNC(glDrawArraysInstancedBaseInstance) \
+    USE_GL_FUNC(glDrawArraysInstancedBaseInstanceEXT) \
     USE_GL_FUNC(glDrawArraysInstancedEXT) \
+    USE_GL_FUNC(glDrawArraysInstancedNV) \
     USE_GL_FUNC(glDrawBufferRegion) \
     USE_GL_FUNC(glDrawBuffers) \
     USE_GL_FUNC(glDrawBuffersARB) \
     USE_GL_FUNC(glDrawBuffersATI) \
+    USE_GL_FUNC(glDrawBuffersEXT) \
+    USE_GL_FUNC(glDrawBuffersIndexedEXT) \
+    USE_GL_FUNC(glDrawBuffersNV) \
     USE_GL_FUNC(glDrawCommandsAddressNV) \
     USE_GL_FUNC(glDrawCommandsNV) \
     USE_GL_FUNC(glDrawCommandsStatesAddressNV) \
@@ -11799,13 +12775,21 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glDrawElementArrayAPPLE) \
     USE_GL_FUNC(glDrawElementArrayATI) \
     USE_GL_FUNC(glDrawElementsBaseVertex) \
+    USE_GL_FUNC(glDrawElementsBaseVertexEXT) \
+    USE_GL_FUNC(glDrawElementsBaseVertexOES) \
     USE_GL_FUNC(glDrawElementsIndirect) \
     USE_GL_FUNC(glDrawElementsInstanced) \
+    USE_GL_FUNC(glDrawElementsInstancedANGLE) \
     USE_GL_FUNC(glDrawElementsInstancedARB) \
     USE_GL_FUNC(glDrawElementsInstancedBaseInstance) \
+    USE_GL_FUNC(glDrawElementsInstancedBaseInstanceEXT) \
     USE_GL_FUNC(glDrawElementsInstancedBaseVertex) \
     USE_GL_FUNC(glDrawElementsInstancedBaseVertexBaseInstance) \
+    USE_GL_FUNC(glDrawElementsInstancedBaseVertexBaseInstanceEXT) \
+    USE_GL_FUNC(glDrawElementsInstancedBaseVertexEXT) \
+    USE_GL_FUNC(glDrawElementsInstancedBaseVertexOES) \
     USE_GL_FUNC(glDrawElementsInstancedEXT) \
+    USE_GL_FUNC(glDrawElementsInstancedNV) \
     USE_GL_FUNC(glDrawMeshArraysSUN) \
     USE_GL_FUNC(glDrawMeshTasksEXT) \
     USE_GL_FUNC(glDrawMeshTasksIndirectEXT) \
@@ -11815,15 +12799,29 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glDrawRangeElementArrayATI) \
     USE_GL_FUNC(glDrawRangeElements) \
     USE_GL_FUNC(glDrawRangeElementsBaseVertex) \
+    USE_GL_FUNC(glDrawRangeElementsBaseVertexEXT) \
+    USE_GL_FUNC(glDrawRangeElementsBaseVertexOES) \
     USE_GL_FUNC(glDrawRangeElementsEXT) \
+    USE_GL_FUNC(glDrawTexfOES) \
+    USE_GL_FUNC(glDrawTexfvOES) \
+    USE_GL_FUNC(glDrawTexiOES) \
+    USE_GL_FUNC(glDrawTexivOES) \
+    USE_GL_FUNC(glDrawTexsOES) \
+    USE_GL_FUNC(glDrawTexsvOES) \
     USE_GL_FUNC(glDrawTextureNV) \
+    USE_GL_FUNC(glDrawTexxOES) \
+    USE_GL_FUNC(glDrawTexxvOES) \
     USE_GL_FUNC(glDrawTransformFeedback) \
+    USE_GL_FUNC(glDrawTransformFeedbackEXT) \
     USE_GL_FUNC(glDrawTransformFeedbackInstanced) \
+    USE_GL_FUNC(glDrawTransformFeedbackInstancedEXT) \
     USE_GL_FUNC(glDrawTransformFeedbackNV) \
     USE_GL_FUNC(glDrawTransformFeedbackStream) \
     USE_GL_FUNC(glDrawTransformFeedbackStreamInstanced) \
     USE_GL_FUNC(glDrawVkImageNV) \
+    USE_GL_FUNC(glEGLImageTargetRenderbufferStorageOES) \
     USE_GL_FUNC(glEGLImageTargetTexStorageEXT) \
+    USE_GL_FUNC(glEGLImageTargetTexture2DOES) \
     USE_GL_FUNC(glEGLImageTargetTextureStorageEXT) \
     USE_GL_FUNC(glEdgeFlagFormatNV) \
     USE_GL_FUNC(glEdgeFlagPointerEXT) \
@@ -11832,6 +12830,7 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glElementPointerATI) \
     USE_GL_FUNC(glEnableClientStateIndexedEXT) \
     USE_GL_FUNC(glEnableClientStateiEXT) \
+    USE_GL_FUNC(glEnableDriverControlQCOM) \
     USE_GL_FUNC(glEnableIndexedEXT) \
     USE_GL_FUNC(glEnableVariantClientStateEXT) \
     USE_GL_FUNC(glEnableVertexArrayAttrib) \
@@ -11841,6 +12840,9 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glEnableVertexAttribArray) \
     USE_GL_FUNC(glEnableVertexAttribArrayARB) \
     USE_GL_FUNC(glEnablei) \
+    USE_GL_FUNC(glEnableiEXT) \
+    USE_GL_FUNC(glEnableiNV) \
+    USE_GL_FUNC(glEnableiOES) \
     USE_GL_FUNC(glEndConditionalRender) \
     USE_GL_FUNC(glEndConditionalRenderNV) \
     USE_GL_FUNC(glEndConditionalRenderNVX) \
@@ -11850,7 +12852,9 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glEndPerfQueryINTEL) \
     USE_GL_FUNC(glEndQuery) \
     USE_GL_FUNC(glEndQueryARB) \
+    USE_GL_FUNC(glEndQueryEXT) \
     USE_GL_FUNC(glEndQueryIndexed) \
+    USE_GL_FUNC(glEndTilingQCOM) \
     USE_GL_FUNC(glEndTransformFeedback) \
     USE_GL_FUNC(glEndTransformFeedbackEXT) \
     USE_GL_FUNC(glEndTransformFeedbackNV) \
@@ -11863,9 +12867,23 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glEvalMapsNV) \
     USE_GL_FUNC(glEvaluateDepthValuesARB) \
     USE_GL_FUNC(glExecuteProgramNV) \
+    USE_GL_FUNC(glExtGetBufferPointervQCOM) \
+    USE_GL_FUNC(glExtGetBuffersQCOM) \
+    USE_GL_FUNC(glExtGetFramebuffersQCOM) \
+    USE_GL_FUNC(glExtGetProgramBinarySourceQCOM) \
+    USE_GL_FUNC(glExtGetProgramsQCOM) \
+    USE_GL_FUNC(glExtGetRenderbuffersQCOM) \
+    USE_GL_FUNC(glExtGetShadersQCOM) \
+    USE_GL_FUNC(glExtGetTexLevelParameterivQCOM) \
+    USE_GL_FUNC(glExtGetTexSubImageQCOM) \
+    USE_GL_FUNC(glExtGetTexturesQCOM) \
+    USE_GL_FUNC(glExtIsProgramBinaryQCOM) \
+    USE_GL_FUNC(glExtTexObjectStateOverrideiQCOM) \
     USE_GL_FUNC(glExtractComponentEXT) \
+    USE_GL_FUNC(glExtrapolateTex2DQCOM) \
     USE_GL_FUNC(glFeedbackBufferxOES) \
     USE_GL_FUNC(glFenceSync) \
+    USE_GL_FUNC(glFenceSyncAPPLE) \
     USE_GL_FUNC(glFinalCombinerInputNV) \
     USE_GL_FUNC(glFinishAsyncSGIX) \
     USE_GL_FUNC(glFinishFenceAPPLE) \
@@ -11874,6 +12892,7 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glFinishTextureSUNX) \
     USE_GL_FUNC(glFlushMappedBufferRange) \
     USE_GL_FUNC(glFlushMappedBufferRangeAPPLE) \
+    USE_GL_FUNC(glFlushMappedBufferRangeEXT) \
     USE_GL_FUNC(glFlushMappedNamedBufferRange) \
     USE_GL_FUNC(glFlushMappedNamedBufferRangeEXT) \
     USE_GL_FUNC(glFlushPixelDataRangeNV) \
@@ -11919,11 +12938,16 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glFramebufferDrawBufferEXT) \
     USE_GL_FUNC(glFramebufferDrawBuffersEXT) \
     USE_GL_FUNC(glFramebufferFetchBarrierEXT) \
+    USE_GL_FUNC(glFramebufferFetchBarrierQCOM) \
+    USE_GL_FUNC(glFramebufferFoveationConfigQCOM) \
+    USE_GL_FUNC(glFramebufferFoveationParametersQCOM) \
     USE_GL_FUNC(glFramebufferParameteri) \
     USE_GL_FUNC(glFramebufferParameteriMESA) \
+    USE_GL_FUNC(glFramebufferPixelLocalStorageSizeEXT) \
     USE_GL_FUNC(glFramebufferReadBufferEXT) \
     USE_GL_FUNC(glFramebufferRenderbuffer) \
     USE_GL_FUNC(glFramebufferRenderbufferEXT) \
+    USE_GL_FUNC(glFramebufferRenderbufferOES) \
     USE_GL_FUNC(glFramebufferSampleLocationsfvARB) \
     USE_GL_FUNC(glFramebufferSampleLocationsfvNV) \
     USE_GL_FUNC(glFramebufferSamplePositionsfvAMD) \
@@ -11932,17 +12956,25 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glFramebufferTexture1D) \
     USE_GL_FUNC(glFramebufferTexture1DEXT) \
     USE_GL_FUNC(glFramebufferTexture2D) \
+    USE_GL_FUNC(glFramebufferTexture2DDownsampleIMG) \
     USE_GL_FUNC(glFramebufferTexture2DEXT) \
+    USE_GL_FUNC(glFramebufferTexture2DMultisampleEXT) \
+    USE_GL_FUNC(glFramebufferTexture2DMultisampleIMG) \
+    USE_GL_FUNC(glFramebufferTexture2DOES) \
     USE_GL_FUNC(glFramebufferTexture3D) \
     USE_GL_FUNC(glFramebufferTexture3DEXT) \
+    USE_GL_FUNC(glFramebufferTexture3DOES) \
     USE_GL_FUNC(glFramebufferTextureARB) \
     USE_GL_FUNC(glFramebufferTextureEXT) \
     USE_GL_FUNC(glFramebufferTextureFaceARB) \
     USE_GL_FUNC(glFramebufferTextureFaceEXT) \
     USE_GL_FUNC(glFramebufferTextureLayer) \
     USE_GL_FUNC(glFramebufferTextureLayerARB) \
+    USE_GL_FUNC(glFramebufferTextureLayerDownsampleIMG) \
     USE_GL_FUNC(glFramebufferTextureLayerEXT) \
+    USE_GL_FUNC(glFramebufferTextureMultisampleMultiviewOVR) \
     USE_GL_FUNC(glFramebufferTextureMultiviewOVR) \
+    USE_GL_FUNC(glFramebufferTextureOES) \
     USE_GL_FUNC(glFreeObjectBufferATI) \
     USE_GL_FUNC(glFrustumf) \
     USE_GL_FUNC(glFrustumfOES) \
@@ -11956,6 +12988,7 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glGenFragmentShadersATI) \
     USE_GL_FUNC(glGenFramebuffers) \
     USE_GL_FUNC(glGenFramebuffersEXT) \
+    USE_GL_FUNC(glGenFramebuffersOES) \
     USE_GL_FUNC(glGenNamesAMD) \
     USE_GL_FUNC(glGenOcclusionQueriesNV) \
     USE_GL_FUNC(glGenPathsNV) \
@@ -11965,9 +12998,11 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glGenProgramsNV) \
     USE_GL_FUNC(glGenQueries) \
     USE_GL_FUNC(glGenQueriesARB) \
+    USE_GL_FUNC(glGenQueriesEXT) \
     USE_GL_FUNC(glGenQueryResourceTagNV) \
     USE_GL_FUNC(glGenRenderbuffers) \
     USE_GL_FUNC(glGenRenderbuffersEXT) \
+    USE_GL_FUNC(glGenRenderbuffersOES) \
     USE_GL_FUNC(glGenSamplers) \
     USE_GL_FUNC(glGenSemaphoresEXT) \
     USE_GL_FUNC(glGenSymbolsEXT) \
@@ -11976,9 +13011,11 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glGenTransformFeedbacksNV) \
     USE_GL_FUNC(glGenVertexArrays) \
     USE_GL_FUNC(glGenVertexArraysAPPLE) \
+    USE_GL_FUNC(glGenVertexArraysOES) \
     USE_GL_FUNC(glGenVertexShadersEXT) \
     USE_GL_FUNC(glGenerateMipmap) \
     USE_GL_FUNC(glGenerateMipmapEXT) \
+    USE_GL_FUNC(glGenerateMipmapOES) \
     USE_GL_FUNC(glGenerateMultiTexMipmapEXT) \
     USE_GL_FUNC(glGenerateTextureMipmap) \
     USE_GL_FUNC(glGenerateTextureMipmapEXT) \
@@ -12009,6 +13046,7 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glGetBufferParameterui64vNV) \
     USE_GL_FUNC(glGetBufferPointerv) \
     USE_GL_FUNC(glGetBufferPointervARB) \
+    USE_GL_FUNC(glGetBufferPointervOES) \
     USE_GL_FUNC(glGetBufferSubData) \
     USE_GL_FUNC(glGetBufferSubDataARB) \
     USE_GL_FUNC(glGetClipPlanef) \
@@ -12051,6 +13089,8 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glGetDoubleIndexedvEXT) \
     USE_GL_FUNC(glGetDoublei_v) \
     USE_GL_FUNC(glGetDoublei_vEXT) \
+    USE_GL_FUNC(glGetDriverControlStringQCOM) \
+    USE_GL_FUNC(glGetDriverControlsQCOM) \
     USE_GL_FUNC(glGetFenceivNV) \
     USE_GL_FUNC(glGetFinalCombinerInputParameterfvNV) \
     USE_GL_FUNC(glGetFinalCombinerInputParameterivNV) \
@@ -12060,8 +13100,11 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glGetFloatIndexedvEXT) \
     USE_GL_FUNC(glGetFloati_v) \
     USE_GL_FUNC(glGetFloati_vEXT) \
+    USE_GL_FUNC(glGetFloati_vNV) \
+    USE_GL_FUNC(glGetFloati_vOES) \
     USE_GL_FUNC(glGetFogFuncSGIS) \
     USE_GL_FUNC(glGetFragDataIndex) \
+    USE_GL_FUNC(glGetFragDataIndexEXT) \
     USE_GL_FUNC(glGetFragDataLocation) \
     USE_GL_FUNC(glGetFragDataLocationEXT) \
     USE_GL_FUNC(glGetFragmentLightfvSGIX) \
@@ -12071,12 +13114,15 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glGetFragmentShadingRatesEXT) \
     USE_GL_FUNC(glGetFramebufferAttachmentParameteriv) \
     USE_GL_FUNC(glGetFramebufferAttachmentParameterivEXT) \
+    USE_GL_FUNC(glGetFramebufferAttachmentParameterivOES) \
     USE_GL_FUNC(glGetFramebufferParameterfvAMD) \
     USE_GL_FUNC(glGetFramebufferParameteriv) \
     USE_GL_FUNC(glGetFramebufferParameterivEXT) \
     USE_GL_FUNC(glGetFramebufferParameterivMESA) \
+    USE_GL_FUNC(glGetFramebufferPixelLocalStorageSizeEXT) \
     USE_GL_FUNC(glGetGraphicsResetStatus) \
     USE_GL_FUNC(glGetGraphicsResetStatusARB) \
+    USE_GL_FUNC(glGetGraphicsResetStatusEXT) \
     USE_GL_FUNC(glGetHandleARB) \
     USE_GL_FUNC(glGetHistogram) \
     USE_GL_FUNC(glGetHistogramEXT) \
@@ -12093,8 +13139,11 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glGetInstrumentsSGIX) \
     USE_GL_FUNC(glGetInteger64i_v) \
     USE_GL_FUNC(glGetInteger64v) \
+    USE_GL_FUNC(glGetInteger64vAPPLE) \
+    USE_GL_FUNC(glGetInteger64vEXT) \
     USE_GL_FUNC(glGetIntegerIndexedvEXT) \
     USE_GL_FUNC(glGetIntegeri_v) \
+    USE_GL_FUNC(glGetIntegeri_vEXT) \
     USE_GL_FUNC(glGetIntegerui64i_vNV) \
     USE_GL_FUNC(glGetIntegerui64vNV) \
     USE_GL_FUNC(glGetInternalformatSampleivNV) \
@@ -12206,6 +13255,7 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glGetPointeri_vEXT) \
     USE_GL_FUNC(glGetPointervEXT) \
     USE_GL_FUNC(glGetProgramBinary) \
+    USE_GL_FUNC(glGetProgramBinaryOES) \
     USE_GL_FUNC(glGetProgramEnvParameterIivNV) \
     USE_GL_FUNC(glGetProgramEnvParameterIuivNV) \
     USE_GL_FUNC(glGetProgramEnvParameterdvARB) \
@@ -12225,6 +13275,7 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glGetProgramResourceIndex) \
     USE_GL_FUNC(glGetProgramResourceLocation) \
     USE_GL_FUNC(glGetProgramResourceLocationIndex) \
+    USE_GL_FUNC(glGetProgramResourceLocationIndexEXT) \
     USE_GL_FUNC(glGetProgramResourceName) \
     USE_GL_FUNC(glGetProgramResourcefvNV) \
     USE_GL_FUNC(glGetProgramResourceiv) \
@@ -12244,16 +13295,24 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glGetQueryObjecti64vEXT) \
     USE_GL_FUNC(glGetQueryObjectiv) \
     USE_GL_FUNC(glGetQueryObjectivARB) \
+    USE_GL_FUNC(glGetQueryObjectivEXT) \
     USE_GL_FUNC(glGetQueryObjectui64v) \
     USE_GL_FUNC(glGetQueryObjectui64vEXT) \
     USE_GL_FUNC(glGetQueryObjectuiv) \
     USE_GL_FUNC(glGetQueryObjectuivARB) \
+    USE_GL_FUNC(glGetQueryObjectuivEXT) \
     USE_GL_FUNC(glGetQueryiv) \
     USE_GL_FUNC(glGetQueryivARB) \
+    USE_GL_FUNC(glGetQueryivEXT) \
     USE_GL_FUNC(glGetRenderbufferParameteriv) \
     USE_GL_FUNC(glGetRenderbufferParameterivEXT) \
+    USE_GL_FUNC(glGetRenderbufferParameterivOES) \
     USE_GL_FUNC(glGetSamplerParameterIiv) \
+    USE_GL_FUNC(glGetSamplerParameterIivEXT) \
+    USE_GL_FUNC(glGetSamplerParameterIivOES) \
     USE_GL_FUNC(glGetSamplerParameterIuiv) \
+    USE_GL_FUNC(glGetSamplerParameterIuivEXT) \
+    USE_GL_FUNC(glGetSamplerParameterIuivOES) \
     USE_GL_FUNC(glGetSamplerParameterfv) \
     USE_GL_FUNC(glGetSamplerParameteriv) \
     USE_GL_FUNC(glGetSemaphoreParameterivNV) \
@@ -12273,21 +13332,27 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glGetSubroutineIndex) \
     USE_GL_FUNC(glGetSubroutineUniformLocation) \
     USE_GL_FUNC(glGetSynciv) \
+    USE_GL_FUNC(glGetSyncivAPPLE) \
     USE_GL_FUNC(glGetTexBumpParameterfvATI) \
     USE_GL_FUNC(glGetTexBumpParameterivATI) \
     USE_GL_FUNC(glGetTexEnvxv) \
     USE_GL_FUNC(glGetTexEnvxvOES) \
     USE_GL_FUNC(glGetTexFilterFuncSGIS) \
+    USE_GL_FUNC(glGetTexGenfvOES) \
+    USE_GL_FUNC(glGetTexGenivOES) \
     USE_GL_FUNC(glGetTexGenxvOES) \
     USE_GL_FUNC(glGetTexLevelParameterxvOES) \
     USE_GL_FUNC(glGetTexParameterIiv) \
     USE_GL_FUNC(glGetTexParameterIivEXT) \
+    USE_GL_FUNC(glGetTexParameterIivOES) \
     USE_GL_FUNC(glGetTexParameterIuiv) \
     USE_GL_FUNC(glGetTexParameterIuivEXT) \
+    USE_GL_FUNC(glGetTexParameterIuivOES) \
     USE_GL_FUNC(glGetTexParameterPointervAPPLE) \
     USE_GL_FUNC(glGetTexParameterxv) \
     USE_GL_FUNC(glGetTexParameterxvOES) \
     USE_GL_FUNC(glGetTextureHandleARB) \
+    USE_GL_FUNC(glGetTextureHandleIMG) \
     USE_GL_FUNC(glGetTextureHandleNV) \
     USE_GL_FUNC(glGetTextureImage) \
     USE_GL_FUNC(glGetTextureImageEXT) \
@@ -12304,6 +13369,7 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glGetTextureParameteriv) \
     USE_GL_FUNC(glGetTextureParameterivEXT) \
     USE_GL_FUNC(glGetTextureSamplerHandleARB) \
+    USE_GL_FUNC(glGetTextureSamplerHandleIMG) \
     USE_GL_FUNC(glGetTextureSamplerHandleNV) \
     USE_GL_FUNC(glGetTextureSubImage) \
     USE_GL_FUNC(glGetTrackMatrixivNV) \
@@ -12313,6 +13379,7 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glGetTransformFeedbacki64_v) \
     USE_GL_FUNC(glGetTransformFeedbacki_v) \
     USE_GL_FUNC(glGetTransformFeedbackiv) \
+    USE_GL_FUNC(glGetTranslatedShaderSourceANGLE) \
     USE_GL_FUNC(glGetUniformBlockIndex) \
     USE_GL_FUNC(glGetUniformBufferSizeEXT) \
     USE_GL_FUNC(glGetUniformIndices) \
@@ -12411,9 +13478,11 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glGetnUniformdvARB) \
     USE_GL_FUNC(glGetnUniformfv) \
     USE_GL_FUNC(glGetnUniformfvARB) \
+    USE_GL_FUNC(glGetnUniformfvEXT) \
     USE_GL_FUNC(glGetnUniformi64vARB) \
     USE_GL_FUNC(glGetnUniformiv) \
     USE_GL_FUNC(glGetnUniformivARB) \
+    USE_GL_FUNC(glGetnUniformivEXT) \
     USE_GL_FUNC(glGetnUniformui64vARB) \
     USE_GL_FUNC(glGetnUniformuiv) \
     USE_GL_FUNC(glGetnUniformuivARB) \
@@ -12466,10 +13535,14 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glIsCommandListNV) \
     USE_GL_FUNC(glIsEnabledIndexedEXT) \
     USE_GL_FUNC(glIsEnabledi) \
+    USE_GL_FUNC(glIsEnablediEXT) \
+    USE_GL_FUNC(glIsEnablediNV) \
+    USE_GL_FUNC(glIsEnablediOES) \
     USE_GL_FUNC(glIsFenceAPPLE) \
     USE_GL_FUNC(glIsFenceNV) \
     USE_GL_FUNC(glIsFramebuffer) \
     USE_GL_FUNC(glIsFramebufferEXT) \
+    USE_GL_FUNC(glIsFramebufferOES) \
     USE_GL_FUNC(glIsImageHandleResidentARB) \
     USE_GL_FUNC(glIsImageHandleResidentNV) \
     USE_GL_FUNC(glIsMemoryObjectEXT) \
@@ -12487,13 +13560,16 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glIsProgramPipeline) \
     USE_GL_FUNC(glIsQuery) \
     USE_GL_FUNC(glIsQueryARB) \
+    USE_GL_FUNC(glIsQueryEXT) \
     USE_GL_FUNC(glIsRenderbuffer) \
     USE_GL_FUNC(glIsRenderbufferEXT) \
+    USE_GL_FUNC(glIsRenderbufferOES) \
     USE_GL_FUNC(glIsSampler) \
     USE_GL_FUNC(glIsSemaphoreEXT) \
     USE_GL_FUNC(glIsShader) \
     USE_GL_FUNC(glIsStateNV) \
     USE_GL_FUNC(glIsSync) \
+    USE_GL_FUNC(glIsSyncAPPLE) \
     USE_GL_FUNC(glIsTextureEXT) \
     USE_GL_FUNC(glIsTextureHandleResidentARB) \
     USE_GL_FUNC(glIsTextureHandleResidentNV) \
@@ -12502,6 +13578,7 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glIsVariantEnabledEXT) \
     USE_GL_FUNC(glIsVertexArray) \
     USE_GL_FUNC(glIsVertexArrayAPPLE) \
+    USE_GL_FUNC(glIsVertexArrayOES) \
     USE_GL_FUNC(glIsVertexAttribEnabledAPPLE) \
     USE_GL_FUNC(glLGPUCopyImageSubDataNVX) \
     USE_GL_FUNC(glLGPUInterlockNVX) \
@@ -12528,6 +13605,7 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glLoadIdentityDeformationMapSGIX) \
     USE_GL_FUNC(glLoadMatrixx) \
     USE_GL_FUNC(glLoadMatrixxOES) \
+    USE_GL_FUNC(glLoadPaletteFromModelViewMatrixOES) \
     USE_GL_FUNC(glLoadProgramNV) \
     USE_GL_FUNC(glLoadTransposeMatrixd) \
     USE_GL_FUNC(glLoadTransposeMatrixdARB) \
@@ -12553,7 +13631,9 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glMap2xOES) \
     USE_GL_FUNC(glMapBuffer) \
     USE_GL_FUNC(glMapBufferARB) \
+    USE_GL_FUNC(glMapBufferOES) \
     USE_GL_FUNC(glMapBufferRange) \
+    USE_GL_FUNC(glMapBufferRangeEXT) \
     USE_GL_FUNC(glMapControlPointsNV) \
     USE_GL_FUNC(glMapGrid1xOES) \
     USE_GL_FUNC(glMapGrid2xOES) \
@@ -12575,6 +13655,7 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glMaterialxvOES) \
     USE_GL_FUNC(glMatrixFrustumEXT) \
     USE_GL_FUNC(glMatrixIndexPointerARB) \
+    USE_GL_FUNC(glMatrixIndexPointerOES) \
     USE_GL_FUNC(glMatrixIndexubvARB) \
     USE_GL_FUNC(glMatrixIndexuivARB) \
     USE_GL_FUNC(glMatrixIndexusvARB) \
@@ -12602,6 +13683,7 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glMatrixScalefEXT) \
     USE_GL_FUNC(glMatrixTranslatedEXT) \
     USE_GL_FUNC(glMatrixTranslatefEXT) \
+    USE_GL_FUNC(glMaxActiveShaderCoresARM) \
     USE_GL_FUNC(glMaxShaderCompilerThreadsARB) \
     USE_GL_FUNC(glMaxShaderCompilerThreadsKHR) \
     USE_GL_FUNC(glMemoryBarrier) \
@@ -12610,6 +13692,7 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glMemoryObjectParameterivEXT) \
     USE_GL_FUNC(glMinSampleShading) \
     USE_GL_FUNC(glMinSampleShadingARB) \
+    USE_GL_FUNC(glMinSampleShadingOES) \
     USE_GL_FUNC(glMinmax) \
     USE_GL_FUNC(glMinmaxEXT) \
     USE_GL_FUNC(glMultMatrixx) \
@@ -12627,9 +13710,11 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glMultiDrawArraysIndirectBindlessNV) \
     USE_GL_FUNC(glMultiDrawArraysIndirectCount) \
     USE_GL_FUNC(glMultiDrawArraysIndirectCountARB) \
+    USE_GL_FUNC(glMultiDrawArraysIndirectEXT) \
     USE_GL_FUNC(glMultiDrawElementArrayAPPLE) \
     USE_GL_FUNC(glMultiDrawElements) \
     USE_GL_FUNC(glMultiDrawElementsBaseVertex) \
+    USE_GL_FUNC(glMultiDrawElementsBaseVertexEXT) \
     USE_GL_FUNC(glMultiDrawElementsEXT) \
     USE_GL_FUNC(glMultiDrawElementsIndirect) \
     USE_GL_FUNC(glMultiDrawElementsIndirectAMD) \
@@ -12637,6 +13722,7 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glMultiDrawElementsIndirectBindlessNV) \
     USE_GL_FUNC(glMultiDrawElementsIndirectCount) \
     USE_GL_FUNC(glMultiDrawElementsIndirectCountARB) \
+    USE_GL_FUNC(glMultiDrawElementsIndirectEXT) \
     USE_GL_FUNC(glMultiDrawMeshTasksIndirectCountEXT) \
     USE_GL_FUNC(glMultiDrawMeshTasksIndirectCountNV) \
     USE_GL_FUNC(glMultiDrawMeshTasksIndirectEXT) \
@@ -12903,6 +13989,8 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glPassThroughxOES) \
     USE_GL_FUNC(glPatchParameterfv) \
     USE_GL_FUNC(glPatchParameteri) \
+    USE_GL_FUNC(glPatchParameteriEXT) \
+    USE_GL_FUNC(glPatchParameteriOES) \
     USE_GL_FUNC(glPathColorGenNV) \
     USE_GL_FUNC(glPathCommandsNV) \
     USE_GL_FUNC(glPathCoordsNV) \
@@ -12956,10 +14044,12 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glPointParameterx) \
     USE_GL_FUNC(glPointParameterxv) \
     USE_GL_FUNC(glPointParameterxvOES) \
+    USE_GL_FUNC(glPointSizePointerOES) \
     USE_GL_FUNC(glPointSizex) \
     USE_GL_FUNC(glPointSizexOES) \
     USE_GL_FUNC(glPollAsyncSGIX) \
     USE_GL_FUNC(glPollInstrumentsSGIX) \
+    USE_GL_FUNC(glPolygonModeNV) \
     USE_GL_FUNC(glPolygonOffsetClamp) \
     USE_GL_FUNC(glPolygonOffsetClampEXT) \
     USE_GL_FUNC(glPolygonOffsetEXT) \
@@ -12971,12 +14061,15 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glPresentFrameKeyedNV) \
     USE_GL_FUNC(glPrimitiveBoundingBox) \
     USE_GL_FUNC(glPrimitiveBoundingBoxARB) \
+    USE_GL_FUNC(glPrimitiveBoundingBoxEXT) \
+    USE_GL_FUNC(glPrimitiveBoundingBoxOES) \
     USE_GL_FUNC(glPrimitiveRestartIndex) \
     USE_GL_FUNC(glPrimitiveRestartIndexNV) \
     USE_GL_FUNC(glPrimitiveRestartNV) \
     USE_GL_FUNC(glPrioritizeTexturesEXT) \
     USE_GL_FUNC(glPrioritizeTexturesxOES) \
     USE_GL_FUNC(glProgramBinary) \
+    USE_GL_FUNC(glProgramBinaryOES) \
     USE_GL_FUNC(glProgramBufferParametersIivNV) \
     USE_GL_FUNC(glProgramBufferParametersIuivNV) \
     USE_GL_FUNC(glProgramBufferParametersfvNV) \
@@ -13115,8 +14208,10 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glProgramUniform4uiv) \
     USE_GL_FUNC(glProgramUniform4uivEXT) \
     USE_GL_FUNC(glProgramUniformHandleui64ARB) \
+    USE_GL_FUNC(glProgramUniformHandleui64IMG) \
     USE_GL_FUNC(glProgramUniformHandleui64NV) \
     USE_GL_FUNC(glProgramUniformHandleui64vARB) \
+    USE_GL_FUNC(glProgramUniformHandleui64vIMG) \
     USE_GL_FUNC(glProgramUniformHandleui64vNV) \
     USE_GL_FUNC(glProgramUniformMatrix2dv) \
     USE_GL_FUNC(glProgramUniformMatrix2dvEXT) \
@@ -13163,6 +14258,7 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glPushDebugGroup) \
     USE_GL_FUNC(glPushGroupMarkerEXT) \
     USE_GL_FUNC(glQueryCounter) \
+    USE_GL_FUNC(glQueryCounterEXT) \
     USE_GL_FUNC(glQueryMatrixxOES) \
     USE_GL_FUNC(glQueryObjectParameteruiAMD) \
     USE_GL_FUNC(glQueryResourceNV) \
@@ -13174,10 +14270,13 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glRasterPos4xOES) \
     USE_GL_FUNC(glRasterPos4xvOES) \
     USE_GL_FUNC(glRasterSamplesEXT) \
+    USE_GL_FUNC(glReadBufferIndexedEXT) \
+    USE_GL_FUNC(glReadBufferNV) \
     USE_GL_FUNC(glReadBufferRegion) \
     USE_GL_FUNC(glReadInstrumentsSGIX) \
     USE_GL_FUNC(glReadnPixels) \
     USE_GL_FUNC(glReadnPixelsARB) \
+    USE_GL_FUNC(glReadnPixelsEXT) \
     USE_GL_FUNC(glRectxOES) \
     USE_GL_FUNC(glRectxvOES) \
     USE_GL_FUNC(glReferencePlaneSGIX) \
@@ -13187,9 +14286,14 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glRenderbufferStorage) \
     USE_GL_FUNC(glRenderbufferStorageEXT) \
     USE_GL_FUNC(glRenderbufferStorageMultisample) \
+    USE_GL_FUNC(glRenderbufferStorageMultisampleANGLE) \
+    USE_GL_FUNC(glRenderbufferStorageMultisampleAPPLE) \
     USE_GL_FUNC(glRenderbufferStorageMultisampleAdvancedAMD) \
     USE_GL_FUNC(glRenderbufferStorageMultisampleCoverageNV) \
     USE_GL_FUNC(glRenderbufferStorageMultisampleEXT) \
+    USE_GL_FUNC(glRenderbufferStorageMultisampleIMG) \
+    USE_GL_FUNC(glRenderbufferStorageMultisampleNV) \
+    USE_GL_FUNC(glRenderbufferStorageOES) \
     USE_GL_FUNC(glReplacementCodePointerSUN) \
     USE_GL_FUNC(glReplacementCodeubSUN) \
     USE_GL_FUNC(glReplacementCodeubvSUN) \
@@ -13221,6 +14325,7 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glResetMinmaxEXT) \
     USE_GL_FUNC(glResizeBuffersMESA) \
     USE_GL_FUNC(glResolveDepthValuesNV) \
+    USE_GL_FUNC(glResolveMultisampleFramebufferAPPLE) \
     USE_GL_FUNC(glResumeTransformFeedback) \
     USE_GL_FUNC(glResumeTransformFeedbackNV) \
     USE_GL_FUNC(glRotatex) \
@@ -13236,7 +14341,11 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glSamplePatternEXT) \
     USE_GL_FUNC(glSamplePatternSGIS) \
     USE_GL_FUNC(glSamplerParameterIiv) \
+    USE_GL_FUNC(glSamplerParameterIivEXT) \
+    USE_GL_FUNC(glSamplerParameterIivOES) \
     USE_GL_FUNC(glSamplerParameterIuiv) \
+    USE_GL_FUNC(glSamplerParameterIuivEXT) \
+    USE_GL_FUNC(glSamplerParameterIuivOES) \
     USE_GL_FUNC(glSamplerParameterf) \
     USE_GL_FUNC(glSamplerParameterfv) \
     USE_GL_FUNC(glSamplerParameteri) \
@@ -13244,10 +14353,16 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glScalex) \
     USE_GL_FUNC(glScalexOES) \
     USE_GL_FUNC(glScissorArrayv) \
+    USE_GL_FUNC(glScissorArrayvNV) \
+    USE_GL_FUNC(glScissorArrayvOES) \
     USE_GL_FUNC(glScissorExclusiveArrayvNV) \
     USE_GL_FUNC(glScissorExclusiveNV) \
     USE_GL_FUNC(glScissorIndexed) \
+    USE_GL_FUNC(glScissorIndexedNV) \
+    USE_GL_FUNC(glScissorIndexedOES) \
     USE_GL_FUNC(glScissorIndexedv) \
+    USE_GL_FUNC(glScissorIndexedvNV) \
+    USE_GL_FUNC(glScissorIndexedvOES) \
     USE_GL_FUNC(glSecondaryColor3b) \
     USE_GL_FUNC(glSecondaryColor3bEXT) \
     USE_GL_FUNC(glSecondaryColor3bv) \
@@ -13312,6 +14427,7 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glShadingRateEXT) \
     USE_GL_FUNC(glShadingRateImageBarrierNV) \
     USE_GL_FUNC(glShadingRateImagePaletteNV) \
+    USE_GL_FUNC(glShadingRateQCOM) \
     USE_GL_FUNC(glShadingRateSampleOrderCustomNV) \
     USE_GL_FUNC(glShadingRateSampleOrderNV) \
     USE_GL_FUNC(glSharpenTexFuncSGIS) \
@@ -13326,6 +14442,7 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glSpriteParameteriSGIX) \
     USE_GL_FUNC(glSpriteParameterivSGIX) \
     USE_GL_FUNC(glStartInstrumentsSGIX) \
+    USE_GL_FUNC(glStartTilingQCOM) \
     USE_GL_FUNC(glStateCaptureNV) \
     USE_GL_FUNC(glStencilClearTagEXT) \
     USE_GL_FUNC(glStencilFillPathInstancedNV) \
@@ -13369,7 +14486,10 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glTexBuffer) \
     USE_GL_FUNC(glTexBufferARB) \
     USE_GL_FUNC(glTexBufferEXT) \
+    USE_GL_FUNC(glTexBufferOES) \
     USE_GL_FUNC(glTexBufferRange) \
+    USE_GL_FUNC(glTexBufferRangeEXT) \
+    USE_GL_FUNC(glTexBufferRangeOES) \
     USE_GL_FUNC(glTexBumpParameterfvATI) \
     USE_GL_FUNC(glTexBumpParameterivATI) \
     USE_GL_FUNC(glTexCoord1bOES) \
@@ -13426,7 +14546,13 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glTexEnvxOES) \
     USE_GL_FUNC(glTexEnvxv) \
     USE_GL_FUNC(glTexEnvxvOES) \
+    USE_GL_FUNC(glTexEstimateMotionQCOM) \
+    USE_GL_FUNC(glTexEstimateMotionRegionsQCOM) \
     USE_GL_FUNC(glTexFilterFuncSGIS) \
+    USE_GL_FUNC(glTexGenfOES) \
+    USE_GL_FUNC(glTexGenfvOES) \
+    USE_GL_FUNC(glTexGeniOES) \
+    USE_GL_FUNC(glTexGenivOES) \
     USE_GL_FUNC(glTexGenxOES) \
     USE_GL_FUNC(glTexGenxvOES) \
     USE_GL_FUNC(glTexImage2DMultisample) \
@@ -13435,13 +14561,17 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glTexImage3DEXT) \
     USE_GL_FUNC(glTexImage3DMultisample) \
     USE_GL_FUNC(glTexImage3DMultisampleCoverageNV) \
+    USE_GL_FUNC(glTexImage3DOES) \
     USE_GL_FUNC(glTexImage4DSGIS) \
     USE_GL_FUNC(glTexPageCommitmentARB) \
+    USE_GL_FUNC(glTexPageCommitmentEXT) \
     USE_GL_FUNC(glTexPageCommitmentMemNV) \
     USE_GL_FUNC(glTexParameterIiv) \
     USE_GL_FUNC(glTexParameterIivEXT) \
+    USE_GL_FUNC(glTexParameterIivOES) \
     USE_GL_FUNC(glTexParameterIuiv) \
     USE_GL_FUNC(glTexParameterIuivEXT) \
+    USE_GL_FUNC(glTexParameterIuivOES) \
     USE_GL_FUNC(glTexParameterx) \
     USE_GL_FUNC(glTexParameterxOES) \
     USE_GL_FUNC(glTexParameterxv) \
@@ -13455,6 +14585,9 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glTexStorage3D) \
     USE_GL_FUNC(glTexStorage3DEXT) \
     USE_GL_FUNC(glTexStorage3DMultisample) \
+    USE_GL_FUNC(glTexStorage3DMultisampleOES) \
+    USE_GL_FUNC(glTexStorageAttribs2DEXT) \
+    USE_GL_FUNC(glTexStorageAttribs3DEXT) \
     USE_GL_FUNC(glTexStorageMem1DEXT) \
     USE_GL_FUNC(glTexStorageMem2DEXT) \
     USE_GL_FUNC(glTexStorageMem2DMultisampleEXT) \
@@ -13465,6 +14598,7 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glTexSubImage2DEXT) \
     USE_GL_FUNC(glTexSubImage3D) \
     USE_GL_FUNC(glTexSubImage3DEXT) \
+    USE_GL_FUNC(glTexSubImage3DOES) \
     USE_GL_FUNC(glTexSubImage4DSGIS) \
     USE_GL_FUNC(glTextureAttachMemoryNV) \
     USE_GL_FUNC(glTextureBarrier) \
@@ -13474,6 +14608,7 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glTextureBufferRange) \
     USE_GL_FUNC(glTextureBufferRangeEXT) \
     USE_GL_FUNC(glTextureColorMaskSGIS) \
+    USE_GL_FUNC(glTextureFoveationParametersQCOM) \
     USE_GL_FUNC(glTextureImage1DEXT) \
     USE_GL_FUNC(glTextureImage2DEXT) \
     USE_GL_FUNC(glTextureImage2DMultisampleCoverageNV) \
@@ -13523,6 +14658,8 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glTextureSubImage3D) \
     USE_GL_FUNC(glTextureSubImage3DEXT) \
     USE_GL_FUNC(glTextureView) \
+    USE_GL_FUNC(glTextureViewEXT) \
+    USE_GL_FUNC(glTextureViewOES) \
     USE_GL_FUNC(glTrackMatrixNV) \
     USE_GL_FUNC(glTransformFeedbackAttribsNV) \
     USE_GL_FUNC(glTransformFeedbackBufferBase) \
@@ -13625,36 +14762,45 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glUniformBlockBinding) \
     USE_GL_FUNC(glUniformBufferEXT) \
     USE_GL_FUNC(glUniformHandleui64ARB) \
+    USE_GL_FUNC(glUniformHandleui64IMG) \
     USE_GL_FUNC(glUniformHandleui64NV) \
     USE_GL_FUNC(glUniformHandleui64vARB) \
+    USE_GL_FUNC(glUniformHandleui64vIMG) \
     USE_GL_FUNC(glUniformHandleui64vNV) \
     USE_GL_FUNC(glUniformMatrix2dv) \
     USE_GL_FUNC(glUniformMatrix2fv) \
     USE_GL_FUNC(glUniformMatrix2fvARB) \
     USE_GL_FUNC(glUniformMatrix2x3dv) \
     USE_GL_FUNC(glUniformMatrix2x3fv) \
+    USE_GL_FUNC(glUniformMatrix2x3fvNV) \
     USE_GL_FUNC(glUniformMatrix2x4dv) \
     USE_GL_FUNC(glUniformMatrix2x4fv) \
+    USE_GL_FUNC(glUniformMatrix2x4fvNV) \
     USE_GL_FUNC(glUniformMatrix3dv) \
     USE_GL_FUNC(glUniformMatrix3fv) \
     USE_GL_FUNC(glUniformMatrix3fvARB) \
     USE_GL_FUNC(glUniformMatrix3x2dv) \
     USE_GL_FUNC(glUniformMatrix3x2fv) \
+    USE_GL_FUNC(glUniformMatrix3x2fvNV) \
     USE_GL_FUNC(glUniformMatrix3x4dv) \
     USE_GL_FUNC(glUniformMatrix3x4fv) \
+    USE_GL_FUNC(glUniformMatrix3x4fvNV) \
     USE_GL_FUNC(glUniformMatrix4dv) \
     USE_GL_FUNC(glUniformMatrix4fv) \
     USE_GL_FUNC(glUniformMatrix4fvARB) \
     USE_GL_FUNC(glUniformMatrix4x2dv) \
     USE_GL_FUNC(glUniformMatrix4x2fv) \
+    USE_GL_FUNC(glUniformMatrix4x2fvNV) \
     USE_GL_FUNC(glUniformMatrix4x3dv) \
     USE_GL_FUNC(glUniformMatrix4x3fv) \
+    USE_GL_FUNC(glUniformMatrix4x3fvNV) \
     USE_GL_FUNC(glUniformSubroutinesuiv) \
     USE_GL_FUNC(glUniformui64NV) \
     USE_GL_FUNC(glUniformui64vNV) \
     USE_GL_FUNC(glUnlockArraysEXT) \
     USE_GL_FUNC(glUnmapBuffer) \
     USE_GL_FUNC(glUnmapBufferARB) \
+    USE_GL_FUNC(glUnmapBufferOES) \
     USE_GL_FUNC(glUnmapNamedBuffer) \
     USE_GL_FUNC(glUnmapNamedBufferEXT) \
     USE_GL_FUNC(glUnmapObjectBufferATI) \
@@ -13846,7 +14992,10 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glVertexAttribArrayObjectATI) \
     USE_GL_FUNC(glVertexAttribBinding) \
     USE_GL_FUNC(glVertexAttribDivisor) \
+    USE_GL_FUNC(glVertexAttribDivisorANGLE) \
     USE_GL_FUNC(glVertexAttribDivisorARB) \
+    USE_GL_FUNC(glVertexAttribDivisorEXT) \
+    USE_GL_FUNC(glVertexAttribDivisorNV) \
     USE_GL_FUNC(glVertexAttribFormat) \
     USE_GL_FUNC(glVertexAttribFormatNV) \
     USE_GL_FUNC(glVertexAttribI1i) \
@@ -14016,16 +15165,24 @@ typedef BOOL       (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval );
     USE_GL_FUNC(glVideoCaptureStreamParameterfvNV) \
     USE_GL_FUNC(glVideoCaptureStreamParameterivNV) \
     USE_GL_FUNC(glViewportArrayv) \
+    USE_GL_FUNC(glViewportArrayvNV) \
+    USE_GL_FUNC(glViewportArrayvOES) \
     USE_GL_FUNC(glViewportIndexedf) \
+    USE_GL_FUNC(glViewportIndexedfNV) \
+    USE_GL_FUNC(glViewportIndexedfOES) \
     USE_GL_FUNC(glViewportIndexedfv) \
+    USE_GL_FUNC(glViewportIndexedfvNV) \
+    USE_GL_FUNC(glViewportIndexedfvOES) \
     USE_GL_FUNC(glViewportPositionWScaleNV) \
     USE_GL_FUNC(glViewportSwizzleNV) \
     USE_GL_FUNC(glWaitSemaphoreEXT) \
     USE_GL_FUNC(glWaitSemaphoreui64NVX) \
     USE_GL_FUNC(glWaitSync) \
+    USE_GL_FUNC(glWaitSyncAPPLE) \
     USE_GL_FUNC(glWaitVkSemaphoreNV) \
     USE_GL_FUNC(glWeightPathsNV) \
     USE_GL_FUNC(glWeightPointerARB) \
+    USE_GL_FUNC(glWeightPointerOES) \
     USE_GL_FUNC(glWeightbvARB) \
     USE_GL_FUNC(glWeightdvARB) \
     USE_GL_FUNC(glWeightfvARB) \
diff --git a/libs/xml2/include/libxml/tree.h b/libs/xml2/include/libxml/tree.h
index 61c1ed49d95c..574347da4c0f 100644
--- a/libs/xml2/include/libxml/tree.h
+++ b/libs/xml2/include/libxml/tree.h
@@ -265,6 +265,7 @@ typedef struct _xmlAttribute xmlAttribute;
 typedef xmlAttribute *xmlAttributePtr;
 struct _xmlAttribute {
     void           *_private;	        /* application data */
+    void           *_private2;
     xmlElementType          type;       /* XML_ATTRIBUTE_DECL, must be second ! */
     const xmlChar          *name;	/* Attribute name */
     struct _xmlNode    *children;	/* NULL */
@@ -350,6 +351,7 @@ typedef struct _xmlElement xmlElement;
 typedef xmlElement *xmlElementPtr;
 struct _xmlElement {
     void           *_private;	        /* application data */
+    void           *_private2;
     xmlElementType          type;       /* XML_ELEMENT_DECL, must be second ! */
     const xmlChar          *name;	/* Element name */
     struct _xmlNode    *children;	/* NULL */
@@ -393,6 +395,7 @@ typedef struct _xmlNs xmlNs;
 typedef xmlNs *xmlNsPtr;
 struct _xmlNs {
     struct _xmlNs  *next;	/* next Ns link for this node  */
+    void *_pad;
     xmlNsType      type;	/* global or local */
     const xmlChar *href;	/* URL for the namespace */
     const xmlChar *prefix;	/* prefix for the namespace */
@@ -410,6 +413,7 @@ typedef struct _xmlDtd xmlDtd;
 typedef xmlDtd *xmlDtdPtr;
 struct _xmlDtd {
     void           *_private;	/* application data */
+    void           *_private2;
     xmlElementType  type;       /* XML_DTD_NODE, must be second ! */
     const xmlChar *name;	/* Name of the DTD */
     struct _xmlNode *children;	/* the value of the property link */
@@ -438,6 +442,7 @@ typedef struct _xmlAttr xmlAttr;
 typedef xmlAttr *xmlAttrPtr;
 struct _xmlAttr {
     void           *_private;	/* application data */
+    void           *_private2;
     xmlElementType   type;      /* XML_ATTRIBUTE_NODE, must be second ! */
     const xmlChar   *name;      /* the name of the property */
     struct _xmlNode *children;	/* the value of the property */
@@ -493,6 +498,7 @@ typedef struct _xmlNode xmlNode;
 typedef xmlNode *xmlNodePtr;
 struct _xmlNode {
     void           *_private;	/* application data */
+    void           *_private2;	/* application data, slot 2 */
     xmlElementType   type;	/* type number, must be second ! */
     const xmlChar   *name;      /* the name of the node, or the entity */
     struct _xmlNode *children;	/* parent->childs link */
@@ -555,6 +561,7 @@ typedef struct _xmlDoc xmlDoc;
 typedef xmlDoc *xmlDocPtr;
 struct _xmlDoc {
     void           *_private;	/* application data */
+    void           *_private2;
     xmlElementType  type;       /* XML_DOCUMENT_NODE, must be second ! */
     char           *name;	/* name/filename/URI of the document */
     struct _xmlNode *children;	/* the document tree */
diff --git a/libs/xml2/xpath.c b/libs/xml2/xpath.c
index 660d70e50fdc..31efaecf23ba 100644
--- a/libs/xml2/xpath.c
+++ b/libs/xml2/xpath.c
@@ -227,6 +227,7 @@ xmlXPathIsInf(double val) {
  */
 
 static xmlNs xmlXPathXMLNamespaceStruct = {
+    NULL,
     NULL,
     XML_NAMESPACE_DECL,
     XML_XML_NAMESPACE,
diff --git a/loader/wine.inf.in b/loader/wine.inf.in
index fc3f085e68bb..aece31f8dc1a 100644
--- a/loader/wine.inf.in
+++ b/loader/wine.inf.in
@@ -615,6 +615,7 @@ HKLM,System\Select,"Default",0x10003,1
 HKLM,System\Select,"Failed",0x10003,0
 HKLM,System\Select,"LastKnownGood",0x10003,1
 HKCU,AppEvents\Schemes\Apps\Explorer\Navigating\.Current,,,""
+HKCU,Software\Classes,,16
 HKCU,Software\Microsoft\Protected Storage System Provider,,16
 ; Some apps requires at least four subkeys of Active Setup\Installed Components
 HKLM,SOFTWARE\Microsoft\Active Setup\Installed Components\{44BBA855-CC51-11CF-AAFA-00AA00B6015F},,2,"DirectDrawEx"
diff --git a/po/ar.po b/po/ar.po
index 4b3d4c655c40..c23c27c4959b 100644
--- a/po/ar.po
+++ b/po/ar.po
@@ -85,7 +85,7 @@ msgstr "&تعديل..."
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr "&إزالة"
@@ -122,7 +122,7 @@ msgstr "معلومات الدّعم"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -227,7 +227,7 @@ msgstr "&تثبيت"
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -727,7 +727,7 @@ msgid "Font St&yle:"
 msgstr "نم&ط الخط:"
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "ال&حجم:"
 
@@ -743,7 +743,7 @@ msgstr "&شطب"
 msgid "&Underline"
 msgstr "تسطي&ر"
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "اللو&ن:"
 
@@ -922,7 +922,7 @@ msgstr "عدد النُّس&خ:"
 msgid "C&ollate"
 msgstr "قارن"
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr "ال&حجم:"
 
@@ -1000,7 +1000,7 @@ msgstr "اسم الملف:"
 msgid "Files of type:"
 msgstr "الملفات من نوع:"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr "الملف غير موجود"
 
@@ -2463,7 +2463,7 @@ msgid "&File name:"
 msgstr "ا&سم الملف:"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr "استعر&ض..."
 
@@ -3857,11 +3857,19 @@ msgstr "الفهرس"
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr "ترميز واين المرئي الأول"
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr "مقابض اللعب"
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr "مع&طل"
 
@@ -4022,13 +4030,13 @@ msgstr "متغير غير سليم"
 msgid "Subscript out of range"
 msgstr "الأمر خارج المدى"
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 #, fuzzy
 #| msgid "Out of paper; "
 msgid "Out of stack space"
 msgstr "لا يوجد أوراق; "
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr "العنصر ضروري"
 
@@ -4036,25 +4044,25 @@ msgstr "العنصر ضروري"
 msgid "Automation server can't create object"
 msgstr "لم يستطع الخادم إنشاء العنصر"
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr "العنصر لا يدعم هذه الآلية"
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr "العنصر لا يدعم هذه الحركة"
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr "المتغير ليس اختياريًا"
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 #, fuzzy
 #| msgid "Object Class Violation"
 msgid "Object not a collection"
 msgstr "انتهاك في فئة العنصر"
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr "خطأ بنيوي"
 
@@ -4062,31 +4070,31 @@ msgstr "خطأ بنيوي"
 msgid "Expected ';'"
 msgstr "متوقع ';'"
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr "متوقع '('"
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr "متوقع ')'"
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 #, fuzzy
 #| msgid "Subject Key Identifier"
 msgid "Expected identifier"
 msgstr "معرف مفتاح الموضوع"
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected '='"
 msgstr "متوقع ';'"
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 msgid "Invalid character"
 msgstr "محرف غير سليم"
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr "قيمة غير منتهية"
 
@@ -4134,7 +4142,7 @@ msgstr ""
 msgid "Microsoft JScript runtime error"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 #, fuzzy
 #| msgid "Unknown error"
 msgid "Unknown runtime error"
@@ -4162,7 +4170,7 @@ msgstr "'[object]' ليس عنصر تاريخ"
 msgid "Object expected"
 msgstr "عنصر متوقع"
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr "مهمة غير مسموحة"
 
@@ -4394,11 +4402,11 @@ msgstr "الملف غير موجود.\n"
 msgid "Path not found.\n"
 msgstr "المسار غير موجود.\n"
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr "ملفات كثير للفتح.\n"
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr "الوصول محظور.\n"
 
@@ -5752,7 +5760,7 @@ msgstr "تم إلغاء العملية بواسطة المستخدم.\n"
 msgid "File has a user-mapped section.\n"
 msgstr "يحتوي الملف على قسم مخطط بواسطة المستخدم.\n"
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr "تم رفض الاتصال.\n"
 
@@ -7340,91 +7348,97 @@ msgstr "الموقع غير موجود.\n"
 
 #: dlls/kernelbase/winerror.mc:3750
 #, fuzzy
+#| msgid "File or directory corrupt.\n"
+msgid "File or directory is not a reparse point.\n"
+msgstr "الملف أو الدليل معطوب.\n"
+
+#: dlls/kernelbase/winerror.mc:3755
+#, fuzzy
 #| msgid "Invalid at interrupt time.\n"
 msgid "Call interrupted.\n"
 msgstr "خطأ في زمن المقاطعة.\n"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 #, fuzzy
 #| msgid "Invalid handle.\n"
 msgid "Invalid file handle.\n"
 msgstr "لاقط غير سليم.\n"
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 #, fuzzy
 #| msgid "Invalid network address.\n"
 msgid "Invalid pointer address.\n"
 msgstr "عنوان الشبكة غير سليم.\n"
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 #, fuzzy
 #| msgid "Invalid name.\n"
 msgid "Invalid argument.\n"
 msgstr "الاسم غير سليم.\n"
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 #, fuzzy
 #| msgid "Connection refused.\n"
 msgid "Connection reset by peer.\n"
 msgstr "تم رفض الاتصال.\n"
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 #, fuzzy
 #| msgid "Point not found.\n"
 msgid "Host not found.\n"
 msgstr "النقطة غير موجودة.\n"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 #, fuzzy
 #| msgid "File not found.\n"
 msgid "Nonauthoritative host not found.\n"
 msgstr "الملف غير موجود.\n"
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 #, fuzzy
 #| msgid "A printer error occurred."
 msgid "Nonrecoverable error.\n"
 msgstr "خطأ في الطابعة."
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 #, fuzzy
 #| msgid "Not implemented"
 msgid "Not implemented.\n"
 msgstr "لم تنفّذ"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 #, fuzzy
 #| msgid "RPC call failed.\n"
 msgid "Call failed.\n"
 msgstr "فشل طلب RPC.\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 #, fuzzy
 #| msgid "Unable to unload media.\n"
 msgid "Unable to find matching object.\n"
 msgstr "غير قادر على فصل الوسيط.\n"
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 #, fuzzy
 #| msgid "Message 0x%1 not found in file %2.\n"
 msgid "No Signature found in file.\n"
 msgstr "الرسالة 0x%1 غير موجودة في الملف %2.\n"
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 #, fuzzy
 #| msgid "Invalid level.\n"
 msgid "Invalid call.\n"
 msgstr "المستوى غير سليم.\n"
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 #, fuzzy
 #| msgid "Help not available."
 msgid "Resource is not currently available.\n"
@@ -8634,7 +8648,7 @@ msgstr "الوصلة العليا"
 msgid "Hyperlink Information"
 msgstr "معلومات الوصلة العليا"
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr "الن&وع:"
 
@@ -10437,7 +10451,7 @@ msgid "b"
 msgstr "b"
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr "dpi"
@@ -10976,7 +10990,7 @@ msgstr "ا&فتح:"
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr "ا&ستعرض..."
 
@@ -11076,7 +11090,7 @@ msgstr "الموضع الأصلي"
 msgid "Date deleted"
 msgstr "تاريخ الحذف"
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -14032,278 +14046,354 @@ msgstr "خطأ القسمة على الصفر.\n"
 msgid "Type mismatch"
 msgstr "نوع البيانات غير مطابق.\n"
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 #, fuzzy
 #| msgid "I/O device error.\n"
 msgid "Device I/O error"
 msgstr "خطأ ثنائي في الجهاز.\n"
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 #, fuzzy
 #| msgid "File already exists.\n"
 msgid "File already exists"
 msgstr "الملف موجود بالفعل.\n"
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 #, fuzzy
 #| msgid "Disk full.\n"
 msgid "Disk full"
 msgstr "القرص ممتلئ.\n"
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 #, fuzzy
 #| msgid "Too many open files.\n"
 msgid "Too many files"
 msgstr "ملفات كثير للفتح.\n"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 #, fuzzy
 #| msgid "Access denied.\n"
 msgid "Permission denied"
 msgstr "الوصول محظور.\n"
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 #, fuzzy
 #| msgid "Path not found.\n"
 msgid "Path not found"
 msgstr "المسار غير موجود.\n"
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 #, fuzzy
 #| msgid "(value not set)"
 msgid "Object variable not set"
 msgstr "(القيمة غير مضبوطة)"
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 #, fuzzy
 #| msgid "Object UUID not found.\n"
 msgid "For loop not initialized"
 msgstr "عنصر UUID غير موجود .\n"
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 #, fuzzy
 #| msgid "Invalid user buffer.\n"
 msgid "Invalid use of Null"
 msgstr "التدفق الشخصي غير سليم.\n"
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 #, fuzzy
 #| msgid "Automation server can't create object"
 msgid "ActiveX component can't create object"
 msgstr "لم يستطع الخادم إنشاء العنصر"
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Class doesn't support Automation"
 msgstr "العنصر لا يدعم هذه الحركة"
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Object doesn't support named arguments"
 msgstr "العنصر لا يدعم هذه الحركة"
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Object doesn't support current locale setting"
 msgstr "العنصر لا يدعم هذه الحركة"
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 #, fuzzy
 #| msgid "Element not found.\n"
 msgid "Named argument not found"
 msgstr "العنصر غير موجود.\n"
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 #, fuzzy
 #| msgid "Specified control was not found in message"
 msgid "Specified DLL function not found"
 msgstr "المتحكم المحدد غير موجود في الرسالة"
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 #, fuzzy
 #| msgid "'|' is undefined"
 msgid "Variable is undefined"
 msgstr "'|' غير معرف"
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+#, fuzzy
+#| msgid "Class does not exist.\n"
+msgid "Class not defined"
+msgstr "الفئة غير موجودة.\n"
+
+#: dlls/vbscript/vbscript.rc:71
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected ']'"
+msgstr "متوقع ';'"
+
+#: dlls/vbscript/vbscript.rc:75
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'If'"
+msgstr "متوقع ';'"
+
+#: dlls/vbscript/vbscript.rc:76
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'To'"
 msgstr "متوقع ';'"
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'End'"
 msgstr "متوقع ';'"
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Function'"
+msgstr "متوقع ';'"
+
+#: dlls/vbscript/vbscript.rc:79
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Sub'"
+msgstr "متوقع ';'"
+
+#: dlls/vbscript/vbscript.rc:80
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Then'"
 msgstr "متوقع ';'"
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Wend'"
 msgstr "متوقع ';'"
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Loop'"
 msgstr "متوقع ';'"
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Next'"
 msgstr "متوقع ';'"
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Case'"
 msgstr "متوقع ';'"
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Select'"
+msgstr "متوقع ';'"
+
+#: dlls/vbscript/vbscript.rc:86
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected statement"
 msgstr "متوقع ';'"
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 #, fuzzy
 #| msgid "Expected an operand.\n"
 msgid "Expected end of statement"
 msgstr "معمول متوقع.\n"
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 #, fuzzy
 #| msgid "Unterminated string constant"
 msgid "Expected integer constant"
 msgstr "قيمة غير منتهية"
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'With'"
+msgstr "متوقع ';'"
+
+#: dlls/vbscript/vbscript.rc:90
+#, fuzzy
+#| msgid "Secret too long.\n"
+msgid "Identifier too long"
+msgstr "السر طويل جدًا.\n"
+
+#: dlls/vbscript/vbscript.rc:92
 #, fuzzy
 #| msgid "Invalid flag number.\n"
 msgid "Invalid number"
 msgstr "رقم العلم غير سليم.\n"
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+#, fuzzy
+#| msgid "Invalid user buffer.\n"
+msgid "Invalid use of 'Me' keyword"
+msgstr "التدفق الشخصي غير سليم.\n"
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 #, fuzzy
 #| msgid "Invalid printer state.\n"
 msgid "Invalid 'exit' statement"
 msgstr "حالة الطابعة غير سليمة.\n"
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 #, fuzzy
 #| msgid "Label redefined"
 msgid "Name redefined"
 msgstr "وسم معاد تعريفه"
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 #, fuzzy
 #| msgid "Expected an operator.\n"
 msgid "Expected literal constant"
 msgstr "عامل متوقع.\n"
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'In'"
 msgstr "متوقع ';'"
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Class'"
 msgstr "متوقع ';'"
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Property'"
+msgstr "متوقع ';'"
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Unexpected 'Next'"
 msgstr "متوقع ';'"
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr ""
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr "واين"
 
@@ -15444,7 +15534,7 @@ msgid "Digi&tal"
 msgstr "ر&قمية"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "ال&خط..."
@@ -16707,6 +16797,41 @@ msgstr "عرض كل محرف %1!u! بكسل وطوله %2!u! بكسل"
 msgid "This is a test"
 msgstr "هذا فحص  فقط"
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+#, fuzzy
+#| msgid "Error: Could not find process \"%1\".\n"
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr "خطأ : لم يتم العثور على العملية \"%1\".\n"
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr "أداة تشخيص ديركت اكس"
@@ -20277,7 +20402,7 @@ msgstr ""
 msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr "يجري تحديث إعدادات واين في %s ، يرجى الانتظار..."
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -20288,23 +20413,23 @@ msgstr ""
 "الإصدارة 2.1 او أحدث من رخصة غنّو العمومية المنشورة بواسطة منظمة البرمجيات "
 "الحرة ، ترجمه أعضاء من فريق عيون العرب و مجتمع لينكس العربي."
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 msgid "Windows registration information"
 msgstr "معلومات تسجيل وندوز"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr "ال&مالك:"
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr "المن&ظمة:"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr "إعدادات التطبيق"
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
@@ -20314,57 +20439,57 @@ msgstr ""
 "بألسنة المكتبات و الرّسوميّات وذلك للسماح بتغييرات واسعة النّطاق تتعلق بتطبيق "
 "معين."
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 #, fuzzy
 #| msgid "&Add application..."
 msgid "Add appli&cation..."
 msgstr "أ&ضف تطبيقًا..."
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr "أزل تطبيقًا"
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr "إصدارة الوندو&ز:"
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr "إعدادات النّافذة"
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr "التقا&ط آلي للفأرة في وضع ملء الشاشة"
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr "السّماح لمدير النّواف&ذ بتأطيرها"
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr "السّماح لمدير النّوا&فذ بالتّحكم بها"
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr "محاكاة سطح المكتب افترا&ضي"
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr "حجم س&طح المكتب:"
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr "دقة الشّاشة"
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr "هذا مثالٌ نصيٌّ باستخدام عشر نقاط من الخط تاهوما"
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr "المكتبات المسيطرة"
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
@@ -20374,60 +20499,60 @@ msgstr ""
 "المضمّنة ( المصممّة بواسطة واين ) أو المكتبات الاصلية ( الموفّرة بواسطة تطبيق "
 "أو مأخوذة من وندوز ) "
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr "إعداد سي&طرة مكتباتية جديد:"
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr "السيط&رات الحالية:"
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 msgid "&Edit..."
 msgstr "ت&حرير..."
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr "تحرير السيطرة"
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr "المكتبة المستعملة"
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr "الم&ضمّنة (المبنية بواسطة واين)"
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr "الأ&صليّة (المأخوذة من وندوز)"
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 #, fuzzy
 #| msgid "Bui&ltin then Native"
 msgid "Buil&tin then Native"
 msgstr "المضمّنة ثمّ الأصليّة"
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr "الأصليّة ثمّ المضمّنة"
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 #, fuzzy
 msgid "Select Drive Letter"
 msgstr "اختر ال&كل\tCtrl+A"
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 #, fuzzy
 #| msgid "Wine configuration"
 msgid "Drive configuration"
 msgstr "إعدادات واين"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 #, fuzzy
 #| msgid ""
 #| "Failed to connect to the mount manager, the drive configuration cannot be "
@@ -20437,127 +20562,127 @@ msgid ""
 "edited."
 msgstr "فشل الاتّصال بمدير المحرّكات ، لا يمكن تحريرالاعدادات"
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 #, fuzzy
 #| msgid "&Add..."
 msgid "A&dd..."
 msgstr "أ&ضف..."
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr "الم&سار:"
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 #, fuzzy
 #| msgid "Show &Advanced"
 msgid "Show Advan&ced"
 msgstr "الخيارات المتقدمة"
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr "الج&هاز:"
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr "است&عراض..."
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr "الاس&م:"
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr "المس&لسل:"
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 #, fuzzy
 #| msgid "Show &dot files"
 msgid "&Show dot files"
 msgstr "أظهر الملفات المخفيّة"
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr "معالج المحركات"
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr "ا&ختبار الصوت"
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr "الافتراضيات"
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr "جهاز الإخراج:"
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr "جهاز الإخراج الصوتي:"
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr "جهاز الإدخال:"
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr "جهاز الإدخال الصوتي:"
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 #, fuzzy
 #| msgid "Output device:"
 msgid "MIDI output device:"
 msgstr "جهاز الإخراج:"
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 #, fuzzy
 #| msgid "Wine configuration"
 msgid "Speaker configuration"
 msgstr "إعدادات واين"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr "العرض"
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr "السّم&ة:"
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 #, fuzzy
 #| msgid "&Theme:"
 msgid "&WinRT theme:"
 msgstr "السّم&ة:"
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr "ت&ثبيت سمة..."
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr "العن&صر:"
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr "اللو&ن:"
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr "الم&جلدات"
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr "موص&ول إلى:"
 
@@ -20640,30 +20765,34 @@ msgid "(System default)"
 msgstr "(الاعداد الافتراضي)"
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:91
+msgid "5.1 Surround"
+msgstr ""
+
+#: programs/winecfg/winecfg.rc:92
 #, fuzzy
 #| msgid "graphic"
 msgid "Quadraphonic"
 msgstr "رسومي"
 
-#: programs/winecfg/winecfg.rc:92
+#: programs/winecfg/winecfg.rc:93
 msgid "Stereo"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:93
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 #, fuzzy
 #| msgid "Right"
 msgid "Light"
 msgstr "اليمين"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr ""
 
@@ -20788,127 +20917,127 @@ msgstr ""
 "\n"
 "تذكر انه بإمكانك الضغط على زر أضف في لسان المحركات لإضافة محرك.\n"
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr "خلفية التحكمات"
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr "نص التحكمات"
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr "خلفية القوائم"
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr "نص القوائم"
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr "شريط التمرير"
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr "خلفية الاختيار"
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr "نص الاختيار"
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr "خلفية اﻷدوات"
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr "نص الأدوات"
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr "خلفية النافذة"
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr "نص النافذة"
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 msgid "Active Title Bar"
 msgstr "شريط العنوان المفعل"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr "العنوان المفعل"
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr "شريط العنوان غير المفعل"
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr "العنوان غير المفعل"
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr "نص الرسائل"
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr "مساحة العمل"
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr "إطار النافذة"
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr "الحد المفعل"
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr "الحد غير المفعل"
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr "ظل التحكمات"
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr "النص الرّمادي"
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr "إضاءة التحكمات"
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr "الظل الغامق للتحكمات"
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr "إضاءة التحكمات"
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr "الخلفية البديلة للتحكمات"
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr "عنصر ساخن"
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr "تفعيل انحدار شريط العنوان"
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr "إلغاء تفعيل انحدار شريط العنوان"
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr "القوائم المضاءة"
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr "شريط القوائم"
 
diff --git a/po/ast.po b/po/ast.po
index 0de98d09dd8a..8693a3e350f4 100644
--- a/po/ast.po
+++ b/po/ast.po
@@ -82,7 +82,7 @@ msgstr "&Modificar…"
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr "&Quitar"
@@ -119,7 +119,7 @@ msgstr "Información de sofitu"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -226,7 +226,7 @@ msgstr "&Instalar"
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -722,7 +722,7 @@ msgid "Font St&yle:"
 msgstr ""
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "&Tamañu:"
 
@@ -738,7 +738,7 @@ msgstr ""
 msgid "&Underline"
 msgstr ""
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "&Color:"
 
@@ -915,7 +915,7 @@ msgstr "Númberu de &copies:"
 msgid "C&ollate"
 msgstr ""
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr "Ta&mañu:"
 
@@ -993,7 +993,7 @@ msgstr ""
 msgid "Files of type:"
 msgstr "Ficheros del tipu:"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr "Nun s'atopó'l ficheru"
 
@@ -2451,7 +2451,7 @@ msgid "&File name:"
 msgstr "Nome del &ficheru:"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr "R&estolar…"
 
@@ -3818,11 +3818,19 @@ msgstr "Indeo5"
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr "Códec de videu Indeo Video Interactive versión 5"
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr "Joysticks"
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr "&Desactivar"
 
@@ -3979,11 +3987,11 @@ msgstr "El procesu de llamada o l'argumentu son inválidos"
 msgid "Subscript out of range"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 msgid "Out of stack space"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr ""
 
@@ -3991,23 +3999,23 @@ msgstr ""
 msgid "Automation server can't create object"
 msgstr "El sirvidor d'automatización nun pue crear l'oxetu"
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr "L'oxetu nun sofita esta propiedá o métodu"
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr "L'oxetu nun sofita esta aición"
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr "L'argumentu nun ye opcional"
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 msgid "Object not a collection"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr "Error de la sintaxis"
 
@@ -4015,27 +4023,27 @@ msgstr "Error de la sintaxis"
 msgid "Expected ';'"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 msgid "Expected '='"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 msgid "Invalid character"
 msgstr "El caráuter ye inválidu"
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr ""
 
@@ -4079,7 +4087,7 @@ msgstr ""
 msgid "Microsoft JScript runtime error"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 msgid "Unknown runtime error"
 msgstr ""
 
@@ -4103,7 +4111,7 @@ msgstr ""
 msgid "Object expected"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr ""
 
@@ -4311,11 +4319,11 @@ msgstr "Nun s'atopó'l ficheru.\n"
 msgid "Path not found.\n"
 msgstr "Nun s'atopó'l camín.\n"
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr "Hai milenta ficheros abiertos.\n"
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr "Negóse l'accesu.\n"
 
@@ -5667,7 +5675,7 @@ msgstr ""
 msgid "File has a user-mapped section.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr "Refugóse la conexón.\n"
 
@@ -7252,68 +7260,74 @@ msgid "This network connection does not exist.\n"
 msgstr "Esta conexón de rede nun esiste.\n"
 
 #: dlls/kernelbase/winerror.mc:3750
+#, fuzzy
+#| msgid "Directory is not empty.\n"
+msgid "File or directory is not a reparse point.\n"
+msgstr "El direutoriu nun ta baleru.\n"
+
+#: dlls/kernelbase/winerror.mc:3755
 msgid "Call interrupted.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 msgid "Invalid file handle.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 msgid "Invalid pointer address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 msgid "Invalid argument.\n"
 msgstr "L'argumentu ye inválidu.\n"
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 msgid "Connection reset by peer.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 msgid "Host not found.\n"
 msgstr "Nun s'atopó l'agospiador.\n"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 msgid "Nonauthoritative host not found.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 msgid "Nonrecoverable error.\n"
 msgstr "Error irrecuperable.\n"
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr "El nome ye válidu, nun se rexistró nengún datu.\n"
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 msgid "Not implemented.\n"
 msgstr "Nun s'implementó.\n"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 msgid "Call failed.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 #, fuzzy
 #| msgid "Unable to unload media.\n"
 msgid "Unable to find matching object.\n"
 msgstr "Nun ye posible descargar el mediu.\n"
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 msgid "No Signature found in file.\n"
 msgstr "Nun s'atopó nenguna firma nel ficheru.\n"
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 msgid "Invalid call.\n"
 msgstr "La llamada ye inválida.\n"
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 msgid "Resource is not currently available.\n"
 msgstr "El recursu nun ta disponible.\n"
 
@@ -8274,7 +8288,7 @@ msgstr ""
 msgid "Hyperlink Information"
 msgstr ""
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr "&Tipu:"
 
@@ -9866,7 +9880,7 @@ msgid "b"
 msgstr "b"
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr "dpi"
@@ -10405,7 +10419,7 @@ msgstr "&Abrir:"
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr "&Restolar…"
 
@@ -10491,7 +10505,7 @@ msgstr "Llocalización orixinal"
 msgid "Date deleted"
 msgstr "Data de desaniciu"
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -12925,240 +12939,314 @@ msgstr "Error de la división por cero.\n"
 msgid "Type mismatch"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 msgid "Device I/O error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 msgid "File already exists"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 msgid "Disk full"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 msgid "Too many files"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 msgid "Permission denied"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 msgid "Path not found"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 msgid "Object variable not set"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 msgid "For loop not initialized"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 msgid "Invalid use of Null"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 msgid "ActiveX component can't create object"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 msgid "Class doesn't support Automation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 msgid "Object doesn't support named arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 msgid "Object doesn't support current locale setting"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 msgid "Named argument not found"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 msgid "Specified DLL function not found"
 msgstr ""
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 msgid "Variable is undefined"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+#, fuzzy
+#| msgid "Class does not exist.\n"
+msgid "Class not defined"
+msgstr "La clas nun esiste.\n"
+
+#: dlls/vbscript/vbscript.rc:71
+#, fuzzy
+#| msgid "Expected an operator.\n"
+msgid "Expected ']'"
+msgstr "Esperábase un operador.\n"
+
+#: dlls/vbscript/vbscript.rc:75
+#, fuzzy
+#| msgid "Expected an operator.\n"
+msgid "Expected 'If'"
+msgstr "Esperábase un operador.\n"
+
+#: dlls/vbscript/vbscript.rc:76
 #, fuzzy
 #| msgid "Expected an operator.\n"
 msgid "Expected 'To'"
 msgstr "Esperábase un operador.\n"
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 #, fuzzy
 #| msgid "Expected an operand.\n"
 msgid "Expected 'End'"
 msgstr "Esperábase un operandu.\n"
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+#, fuzzy
+#| msgid "Expected an operator.\n"
+msgid "Expected 'Function'"
+msgstr "Esperábase un operador.\n"
+
+#: dlls/vbscript/vbscript.rc:79
+#, fuzzy
+#| msgid "Expected an operator.\n"
+msgid "Expected 'Sub'"
+msgstr "Esperábase un operador.\n"
+
+#: dlls/vbscript/vbscript.rc:80
 #, fuzzy
 #| msgid "Expected an operator.\n"
 msgid "Expected 'Then'"
 msgstr "Esperábase un operador.\n"
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 #, fuzzy
 #| msgid "Expected an operand.\n"
 msgid "Expected 'Wend'"
 msgstr "Esperábase un operandu.\n"
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 #, fuzzy
 #| msgid "Expected an operand.\n"
 msgid "Expected 'Loop'"
 msgstr "Esperábase un operandu.\n"
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 msgid "Expected 'Next'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 #, fuzzy
 #| msgid "Expected an operator.\n"
 msgid "Expected 'Case'"
 msgstr "Esperábase un operador.\n"
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+#, fuzzy
+#| msgid "Expected an operator.\n"
+msgid "Expected 'Select'"
+msgstr "Esperábase un operador.\n"
+
+#: dlls/vbscript/vbscript.rc:86
 #, fuzzy
 #| msgid "Expected an operand.\n"
 msgid "Expected statement"
 msgstr "Esperábase un operandu.\n"
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 #, fuzzy
 #| msgid "Expected an operand.\n"
 msgid "Expected end of statement"
 msgstr "Esperábase un operandu.\n"
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 #, fuzzy
 #| msgid "Expected an operator.\n"
 msgid "Expected integer constant"
 msgstr "Esperábase un operador.\n"
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+#, fuzzy
+#| msgid "Expected an operand.\n"
+msgid "Expected 'With'"
+msgstr "Esperábase un operandu.\n"
+
+#: dlls/vbscript/vbscript.rc:90
+#, fuzzy
+#| msgid "Secret too long.\n"
+msgid "Identifier too long"
+msgstr "El secretu ye mui llongu.\n"
+
+#: dlls/vbscript/vbscript.rc:92
 #, fuzzy
 #| msgid "Invalid member.\n"
 msgid "Invalid number"
 msgstr "El miembru ye inválidu.\n"
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+msgid "Invalid use of 'Me' keyword"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 #, fuzzy
 #| msgid "Invalid printer state.\n"
 msgid "Invalid 'exit' statement"
 msgstr "L'estáu de la imprentadora ye inválidu.\n"
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 msgid "Name redefined"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 #, fuzzy
 #| msgid "Expected an operator.\n"
 msgid "Expected literal constant"
 msgstr "Esperábase un operador.\n"
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 #, fuzzy
 #| msgid "Expected an operator.\n"
 msgid "Expected 'In'"
 msgstr "Esperábase un operador.\n"
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 msgid "Expected 'Class'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+#, fuzzy
+#| msgid "Expected an operand.\n"
+msgid "Expected 'Property'"
+msgstr "Esperábase un operandu.\n"
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 #, fuzzy
 #| msgid "Unexpected network error.\n"
 msgid "Unexpected 'Next'"
 msgstr "Nun s'esperaba l'error de rede.\n"
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr ""
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr "Wine"
 
@@ -14204,7 +14292,7 @@ msgid "Digi&tal"
 msgstr "Dixi&tal"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "&Fonte…"
@@ -15264,6 +15352,41 @@ msgstr ""
 msgid "This is a test"
 msgstr "Esto ye una prueba"
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+#, fuzzy
+#| msgid "Error: Could not find process \"%1\".\n"
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr "Error: nun se pudo atopar el procesu «%1».\n"
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr "Ferramienta de diagnósticu de DirectX"
@@ -18941,7 +19064,7 @@ msgstr ""
 msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr "Ta anovándose la configuración de Wine en %s, espera…"
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -18953,23 +19076,23 @@ msgstr ""
 "Software Foundation, quier la versión 2.1 de la llicencia, quier (na to "
 "opinión) cualesquier versión postrera."
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 msgid "Windows registration information"
 msgstr "Información del rexistru de Windows"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr "&Propietariu:"
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr "Organi&zación:"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr "Configuración de les aplicaciones"
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
@@ -18979,55 +19102,55 @@ msgstr ""
 "Esta llingüeta ta enllaciada a Biblioteques y Gráficos pa permitite, ellí "
 "tamién, camudar la configuración de tol sistema o de cada aplicación."
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 msgid "Add appli&cation..."
 msgstr "Amestar una apli&cación…"
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr "&Quitar l'aplicación"
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr "Versión de &Windows:"
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr "Configuración de les ventanes"
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr "Capturar el &mur automáticamente nes ventanes a pantalla completa"
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr "Permitir que'l xestor de ventanes &decore les ventanes"
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr "Permitir que'l xestor de &ventanes controle les ventanes"
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr "&Emular un escritoriu virtual"
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr "&Tamañu del escritoriu:"
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr "Resolución de la pantalla"
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr "Esto ye un testu d'exemplu qu'usa Tahoma a 10 puntos"
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr "Anulaciones de DLLs"
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
@@ -19037,55 +19160,55 @@ msgstr ""
 "(DLL) seyan integraes (forníes por Wine) o natives (forníes por Windows o "
 "otra aplicación)."
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr "Anulación &nueva pa la biblioteca:"
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr "A&mestar"
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr "&Anulaciones esistentes:"
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 msgid "&Edit..."
 msgstr "&Editar…"
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr "Edición d'una anulación"
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr "Orde de carga"
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr "&Integrada (Wine)"
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr "&Nativa (Windows)"
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 msgid "Buil&tin then Native"
 msgstr "Inte&grada dempués nativa"
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr "Nati&va dempués integrada"
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr "Seleición d'una lletra d'unidá"
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 msgid "Drive configuration"
 msgstr "Configuración de les unidaes"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 msgid ""
 "Failed to connect to the mount manager; the drive configuration cannot be "
 "edited."
@@ -19093,117 +19216,117 @@ msgstr ""
 "La conexón al xestor de montaxe falló. Nun se pue editar la configuración de "
 "les unidaes."
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 msgid "A&dd..."
 msgstr "A&mestar…"
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr "&Camín:"
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 msgid "Show Advan&ced"
 msgstr "Amosar lo avan&zao"
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr "&Preséu:"
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr "Re&stolar…"
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr "&Etiqueta:"
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr "S&erie:"
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 msgid "&Show dot files"
 msgstr "Amo&sar los ficheros que comiencen per un puntu"
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr "Diagnósticu del controlador"
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr "&Probar el soníu"
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr "Valores predeterminaos"
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr "Preséu de salida:"
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr "Preséu de salida de voz:"
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr "Preséu d'entrada:"
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr "Preséu d'entrada de voz:"
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 #, fuzzy
 #| msgid "Output device:"
 msgid "MIDI output device:"
 msgstr "Preséu de salida:"
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 msgid "Speaker configuration"
 msgstr "Configuración de los altavoces"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr "Altavoces:"
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr "Aspeutu"
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr "&Estilu:"
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 msgid "&WinRT theme:"
 msgstr "Estilu de &WineRT:"
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr "&Instalar un estilu…"
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr "&Elementu:"
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr "C&olor:"
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr "Tipos MIME"
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr "Xestionar les asociaciones de ficheros y protocolos"
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr "Carpetes"
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr "&Enllaciar a:"
 
@@ -19284,26 +19407,32 @@ msgid "(System default)"
 msgstr "(Lo predeterminao del sistema)"
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+#, fuzzy
+#| msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr "Envolvente 5.1"
 
 #: programs/winecfg/winecfg.rc:91
+msgid "5.1 Surround"
+msgstr "Envolvente 5.1"
+
+#: programs/winecfg/winecfg.rc:92
 msgid "Quadraphonic"
 msgstr "Cuadrafónicu"
 
-#: programs/winecfg/winecfg.rc:92
+#: programs/winecfg/winecfg.rc:93
 msgid "Stereo"
 msgstr "Estéreu"
 
-#: programs/winecfg/winecfg.rc:93
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr "Monu"
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 msgid "Light"
 msgstr "Claridá"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr "Escuridá"
 
@@ -19421,127 +19550,127 @@ msgstr ""
 "\n"
 "¡Recuerda primir «Amestar» na llingüeta Unidaes pa crear una!\n"
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr "Fondu de los controles"
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr "Testu de los controles"
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr "Fondu de los menús"
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr "Testu de los menús"
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr "Barra de desplazamientu"
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr "Fondu de les seleiciones"
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr "Testu de les seleiciones"
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr "Fondu de los conseyos emerxentes"
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr "Testu de los conseyos emerxentes"
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr "Fondu de les ventanes"
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr "Testu de les ventanes"
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 msgid "Active Title Bar"
 msgstr "Barra de títulos activa"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr "Testu de los títulos activos"
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr "Barra de títulos inactiva"
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr "Testu de los títulos inactivos"
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr "Testu de los cuadros de mensaxe"
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr "Estaya de trabayu d'aplicaciones"
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr "Marcu de les ventanes"
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr "Berbesu activu"
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr "Berbesu inactivu"
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr "Solombra de los controles"
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr "Testu abuxáu"
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr "Rescampláu de controles"
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr "Solombra intensa de los controles"
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr "Claridá de los controles"
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr "Fondu alternativu de los controles"
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr "Elementu rescampláu"
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr "Dilíu de les barres de títulos actives"
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr "Dilíu de les barres de títulos inactives"
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr "Rescampláu d'opciones de los menús"
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr "Barra de menús"
 
diff --git a/po/bg.po b/po/bg.po
index a34e7237aa4f..ac5c2a6468f5 100644
--- a/po/bg.po
+++ b/po/bg.po
@@ -85,7 +85,7 @@ msgstr "&Промени"
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr "Пре&махни"
@@ -123,7 +123,7 @@ msgstr "Информация"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -233,7 +233,7 @@ msgstr "Инсталирай"
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -733,7 +733,7 @@ msgid "Font St&yle:"
 msgstr "&Стил:"
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "Размер:"
 
@@ -749,7 +749,7 @@ msgstr "&Зачертан"
 msgid "&Underline"
 msgstr "Под&чертан"
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "Цвят:"
 
@@ -930,7 +930,7 @@ msgstr "Брой &копия:"
 msgid "C&ollate"
 msgstr "Под&реждане"
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr "Size:"
 
@@ -1010,7 +1010,7 @@ msgstr "&Файл"
 msgid "Files of type:"
 msgstr "&Тип файлове:"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr "Файлът не е намерен"
 
@@ -2479,7 +2479,7 @@ msgid "&File name:"
 msgstr "&Файл"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 #, fuzzy
 msgid "B&rowse..."
 msgstr "Избор..."
@@ -3860,11 +3860,19 @@ msgstr "&Съдържание"
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr "Wine MS-RLE видео кодек"
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr ""
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr "&Забрани"
 
@@ -4016,13 +4024,13 @@ msgstr ""
 msgid "Subscript out of range"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 #, fuzzy
 #| msgid "Out of paper; "
 msgid "Out of stack space"
 msgstr "Няма хартия; "
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr ""
 
@@ -4030,23 +4038,23 @@ msgstr ""
 msgid "Automation server can't create object"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 msgid "Object not a collection"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr ""
 
@@ -4054,28 +4062,28 @@ msgstr ""
 msgid "Expected ';'"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 msgid "Expected '='"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 #, fuzzy
 msgid "Invalid character"
 msgstr "Невалидни знаци в пътя.\n"
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr ""
 
@@ -4120,7 +4128,7 @@ msgstr ""
 msgid "Microsoft JScript runtime error"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 #, fuzzy
 msgid "Unknown runtime error"
 msgstr "Пре&гледай изходния код"
@@ -4145,7 +4153,7 @@ msgstr ""
 msgid "Object expected"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr ""
 
@@ -4356,11 +4364,11 @@ msgstr "Файлът не е намерен.\n"
 msgid "Path not found.\n"
 msgstr "пътят %s не е намерен.\n"
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr ""
 
@@ -5759,7 +5767,7 @@ msgstr "Прекъснато от потребителя; .\n"
 msgid "File has a user-mapped section.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 #, fuzzy
 msgid "Connection refused.\n"
 msgstr "LAN връзка.\n"
@@ -7415,79 +7423,83 @@ msgid "This network connection does not exist.\n"
 msgstr "Файлът не съществува.\n"
 
 #: dlls/kernelbase/winerror.mc:3750
+msgid "File or directory is not a reparse point.\n"
+msgstr ""
+
+#: dlls/kernelbase/winerror.mc:3755
 #, fuzzy
 msgid "Call interrupted.\n"
 msgstr "Не е реализирано.\n"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 #, fuzzy
 msgid "Invalid file handle.\n"
 msgstr "Невалидни знаци в пътя.\n"
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 #, fuzzy
 msgid "Invalid pointer address.\n"
 msgstr "Невалидни знаци в пътя.\n"
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 #, fuzzy
 msgid "Invalid argument.\n"
 msgstr "Невалидни знаци в пътя.\n"
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 #, fuzzy
 msgid "Connection reset by peer.\n"
 msgstr "LAN връзка.\n"
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 #, fuzzy
 msgid "Host not found.\n"
 msgstr "пътят %s не е намерен.\n"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 #, fuzzy
 msgid "Nonauthoritative host not found.\n"
 msgstr "Файлът не е намерен.\n"
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 #, fuzzy
 #| msgid "A printer error occurred."
 msgid "Nonrecoverable error.\n"
 msgstr "Появи се грешка при печатането."
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 #, fuzzy
 #| msgid "Not implemented"
 msgid "Not implemented.\n"
 msgstr "Не е реализирано"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 #, fuzzy
 msgid "Call failed.\n"
 msgstr "Отвори файл.\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 msgid "Unable to find matching object.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 msgid "No Signature found in file.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 #, fuzzy
 msgid "Invalid call.\n"
 msgstr "Невалидни знаци в пътя.\n"
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 #, fuzzy
 msgid "Resource is not currently available.\n"
 msgstr "Оставащ размер.\n"
@@ -8531,7 +8543,7 @@ msgstr ""
 msgid "Hyperlink Information"
 msgstr "Информация"
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr "&Тип:"
 
@@ -10190,7 +10202,7 @@ msgid "b"
 msgstr ""
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr ""
@@ -10737,7 +10749,7 @@ msgstr ""
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr "&Избери..."
 
@@ -10832,7 +10844,7 @@ msgstr ""
 msgid "Date deleted"
 msgstr ""
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 #, fuzzy
 msgctxt "display name"
@@ -13276,221 +13288,279 @@ msgstr ""
 msgid "Type mismatch"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 msgid "Device I/O error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 #, fuzzy
 msgid "File already exists"
 msgstr "Файлът не съществува.\n"
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 msgid "Disk full"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 #, fuzzy
 msgid "Too many files"
 msgstr "Отвори файл"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 msgid "Permission denied"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 #, fuzzy
 msgid "Path not found"
 msgstr "пътят %s не е намерен.\n"
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 msgid "Object variable not set"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 #, fuzzy
 msgid "For loop not initialized"
 msgstr "пътят %s не е намерен.\n"
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 #, fuzzy
 msgid "Invalid use of Null"
 msgstr "Невалидни знаци в пътя.\n"
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 msgid "ActiveX component can't create object"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 msgid "Class doesn't support Automation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 msgid "Object doesn't support named arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 msgid "Object doesn't support current locale setting"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 #, fuzzy
 msgid "Named argument not found"
 msgstr "Файлът не е намерен.\n"
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 #, fuzzy
 msgid "Specified DLL function not found"
 msgstr "Файлът не е намерен.\n"
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 msgid "Variable is undefined"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+#, fuzzy
+msgid "Class not defined"
+msgstr "Пътят не съществува.\n"
+
+#: dlls/vbscript/vbscript.rc:71
+msgid "Expected ']'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:75
+msgid "Expected 'If'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:76
 msgid "Expected 'To'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 msgid "Expected 'End'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+msgid "Expected 'Function'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:79
+msgid "Expected 'Sub'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:80
 msgid "Expected 'Then'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 msgid "Expected 'Wend'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 msgid "Expected 'Loop'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 msgid "Expected 'Next'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 msgid "Expected 'Case'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+msgid "Expected 'Select'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:86
 msgid "Expected statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 msgid "Expected end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 msgid "Expected integer constant"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+msgid "Expected 'With'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:90
+msgid "Identifier too long"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:92
 #, fuzzy
 msgid "Invalid number"
 msgstr "Невалидни знаци в пътя"
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+#, fuzzy
+msgid "Invalid use of 'Me' keyword"
+msgstr "Невалидни знаци в пътя.\n"
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 #, fuzzy
 msgid "Invalid 'exit' statement"
 msgstr "Невалидни знаци в пътя.\n"
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 msgid "Name redefined"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 msgid "Expected literal constant"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 msgid "Expected 'In'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 msgid "Expected 'Class'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+msgid "Expected 'Property'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 msgid "Unexpected 'Next'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr ""
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 #, fuzzy
 msgid "Wine"
 msgstr "Wine Помощ"
@@ -14493,7 +14563,7 @@ msgid "Digi&tal"
 msgstr ""
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "&Шрифт..."
@@ -15294,6 +15364,39 @@ msgstr ""
 msgid "This is a test"
 msgstr ""
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr ""
@@ -18794,7 +18897,7 @@ msgstr ""
 msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -18802,24 +18905,24 @@ msgid ""
 "option) any later version."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 msgid "Windows registration information"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr "Owner:"
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr "Organization:"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 #, fuzzy
 msgid "Application settings"
 msgstr " Настройка на приложенията "
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 #, fuzzy
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
@@ -18831,59 +18934,59 @@ msgstr ""
 "за да можете да променяте, освен общосистемните, и специфичните за "
 "приложенията настройки."
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 #, fuzzy
 #| msgid "&Add application..."
 msgid "Add appli&cation..."
 msgstr "&Добавяне на приложение..."
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr "Пре&махване на приложение"
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr "&Версия на Windows:"
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 #, fuzzy
 msgid "Window settings"
 msgstr " Настройка на прозорците "
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr "Управлението на прозорците от мениджъра на прозорци"
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr "Емулирай виртуален работен плот"
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr "Размер на работния плот:"
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 #, fuzzy
 msgid "DLL overrides"
 msgstr " DLL замени "
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
@@ -18893,187 +18996,187 @@ msgstr ""
 "(осигурена от Wine) или собствена (взета от Windows или осигурена от "
 "приложението)."
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr "Нова библиотечна замяна:"
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr "Съществуващи замени:"
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 msgid "&Edit..."
 msgstr "&Редактирай..."
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr "Редактиране на замяна"
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 #, fuzzy
 msgid "Load order"
 msgstr " Ред на зареждане "
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr "&Вградена (Wine)"
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr "&Собствена (Windows)"
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 #, fuzzy
 #| msgid "Bui&ltin then Native"
 msgid "Buil&tin then Native"
 msgstr "В&градена, после собствена"
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr "Со&бствена, после вградена"
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 #, fuzzy
 msgid "Select Drive Letter"
 msgstr "Маркирай &всичко"
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 #, fuzzy
 #| msgid "Wine configuration"
 msgid "Drive configuration"
 msgstr "Настройки на Wine"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 msgid ""
 "Failed to connect to the mount manager; the drive configuration cannot be "
 "edited."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 #, fuzzy
 #| msgid "&Add..."
 msgid "A&dd..."
 msgstr "&Добави..."
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr "&Път:"
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 #, fuzzy
 #| msgid "Show &Advanced"
 msgid "Show Advan&ced"
 msgstr "Покажи допълнителните"
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr "Из&бери..."
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr "&Етикет:"
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr "&Номер:"
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 #, fuzzy
 #| msgid "Show &dot files"
 msgid "&Show dot files"
 msgstr "Показвай файловете, започващи с точка"
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 msgid "MIDI output device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 #, fuzzy
 #| msgid "Wine configuration"
 msgid "Speaker configuration"
 msgstr "Настройки на Wine"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 #, fuzzy
 msgid "Appearance"
 msgstr " Външен вид "
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr "Тема:"
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 #, fuzzy
 #| msgid "&Theme:"
 msgid "&WinRT theme:"
 msgstr "Тема:"
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr "Инсталирай тема..."
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 #, fuzzy
 msgid "Folders"
 msgstr "Папка"
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr "Връзка към:"
 
@@ -19159,29 +19262,33 @@ msgid "(System default)"
 msgstr "Системен път"
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:91
+msgid "5.1 Surround"
+msgstr ""
+
+#: programs/winecfg/winecfg.rc:92
 #, fuzzy
 #| msgid "Graphics"
 msgid "Quadraphonic"
 msgstr "Графика"
 
-#: programs/winecfg/winecfg.rc:92
+#: programs/winecfg/winecfg.rc:93
 msgid "Stereo"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:93
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 #, fuzzy
 msgid "Light"
 msgstr "Най-вдясно"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr ""
 
@@ -19291,135 +19398,135 @@ msgid ""
 "Remember to click 'Add' in the Drives tab to create one!\n"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 #, fuzzy
 msgid "Controls Background"
 msgstr "&Копирай фона"
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 #, fuzzy
 msgid "Menu Background"
 msgstr "&Копирай фона"
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 #, fuzzy
 msgid "Scrollbar"
 msgstr "Превърти тук"
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 #, fuzzy
 msgid "Selection Background"
 msgstr "Постави като &фон на работния плот"
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 #, fuzzy
 msgid "Selection Text"
 msgstr "Маркирай &всичко"
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 #, fuzzy
 msgid "Tooltip Background"
 msgstr "&Копирай фона"
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 #, fuzzy
 msgid "Window Background"
 msgstr "&Копирай фона"
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 msgid "Active Title Bar"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 #, fuzzy
 msgid "Application Workspace"
 msgstr "Приложения"
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr ""
 
diff --git a/po/ca.po b/po/ca.po
index 3f983dd47ca3..7d760c41ab76 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -83,7 +83,7 @@ msgstr "&Modifica..."
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr "&Elimina"
@@ -120,7 +120,7 @@ msgstr "Informació de suport"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -227,7 +227,7 @@ msgstr "&Instal·la"
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -725,7 +725,7 @@ msgid "Font St&yle:"
 msgstr "&Estil de lletra:"
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "&Cos:"
 
@@ -741,7 +741,7 @@ msgstr "&Ratllat"
 msgid "&Underline"
 msgstr "&Subratllat"
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "C&olor:"
 
@@ -918,7 +918,7 @@ msgstr "Nombre de &còpies:"
 msgid "C&ollate"
 msgstr "C&ompagina"
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr "&Mida:"
 
@@ -996,7 +996,7 @@ msgstr "Nom de fitxer:"
 msgid "Files of type:"
 msgstr "Fitxers del tipus:"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr "Fitxer no trobat"
 
@@ -2460,7 +2460,7 @@ msgid "&File name:"
 msgstr "Nom de &fitxer:"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr "&Navega..."
 
@@ -3843,11 +3843,19 @@ msgstr "Indeo5"
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr "Còdec de vídeo Indeo Video Interactive versió 5"
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr "Palanques de control"
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr "&Inhabilita"
 
@@ -4008,11 +4016,11 @@ msgstr "Trucada a procediment o argument no vàlid"
 msgid "Subscript out of range"
 msgstr "El subíndex és fora d'interval"
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 msgid "Out of stack space"
 msgstr "No queda espai de pila"
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr "Es requereix un objecte"
 
@@ -4020,23 +4028,23 @@ msgstr "Es requereix un objecte"
 msgid "Automation server can't create object"
 msgstr "El servidor d'automatització no pot crear l'objecte"
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr "L'objecte no accepta aquesta propietat o mètode"
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr "L'objecte no accepta aquesta acció"
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr "Argument no opcional"
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 msgid "Object not a collection"
 msgstr "L'objecte no és una colecció"
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr "Error de sintaxi"
 
@@ -4044,27 +4052,27 @@ msgstr "Error de sintaxi"
 msgid "Expected ';'"
 msgstr "S'esperava ';'"
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr "S'esperava '('"
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr "S'esperava ')'"
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr "S'esperava un identificador"
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 msgid "Expected '='"
 msgstr "S'esperava '='"
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 msgid "Invalid character"
 msgstr "Caràcter no vàlid"
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr "Cadena constant no terminat"
 
@@ -4108,7 +4116,7 @@ msgstr "Error de compilació de Microsoft JScript"
 msgid "Microsoft JScript runtime error"
 msgstr "Error d'entorn d'execució de Microsoft JScript"
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 msgid "Unknown runtime error"
 msgstr "Error d'entorn d'execució desconegut"
 
@@ -4134,7 +4142,7 @@ msgstr "'[objecte]' no és un objecte de data"
 msgid "Object expected"
 msgstr "S'esperava un objecte"
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr "Assignació il·legal"
 
@@ -4352,11 +4360,11 @@ msgstr "No s'ha trobat el fitxer.\n"
 msgid "Path not found.\n"
 msgstr "No s'ha trobat el camí.\n"
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr "Hi ha massa fitxers oberts.\n"
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr "S'ha denegat l'accés.\n"
 
@@ -5708,7 +5716,7 @@ msgstr "L'usuari ha cancel·lat l'operació.\n"
 msgid "File has a user-mapped section.\n"
 msgstr "El fitxer té una secció assignada per usuari.\n"
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr "S'ha refusat la connexió.\n"
 
@@ -7295,68 +7303,74 @@ msgid "This network connection does not exist.\n"
 msgstr "Aquesta connexió de xarxa no existeix.\n"
 
 #: dlls/kernelbase/winerror.mc:3750
+#, fuzzy
+#| msgid "File or directory corrupt.\n"
+msgid "File or directory is not a reparse point.\n"
+msgstr "El fitxer o directori és corrupte.\n"
+
+#: dlls/kernelbase/winerror.mc:3755
 msgid "Call interrupted.\n"
 msgstr "S'ha interromput la trucada.\n"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 msgid "Invalid file handle.\n"
 msgstr "L'identificador de fitxer no és vàlid.\n"
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 msgid "Invalid pointer address.\n"
 msgstr "L'identificador de punter no és vàlid.\n"
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 msgid "Invalid argument.\n"
 msgstr "L'argument no és vàlid.\n"
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 msgid "Connection reset by peer.\n"
 msgstr "Un igual ha restablert la connexió.\n"
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 msgid "Host not found.\n"
 msgstr "No s'ha trobat l'amfitrió.\n"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 msgid "Nonauthoritative host not found.\n"
 msgstr "No s'ha trobat l'amfitrió no autoritzat.\n"
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 msgid "Nonrecoverable error.\n"
 msgstr "No es pot recuperar de l'error.\n"
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr "El nom és vàlid però no hi ha dades.\n"
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 msgid "Not implemented.\n"
 msgstr "No implementat.\n"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 msgid "Call failed.\n"
 msgstr "La trucada ha fallat.\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 #, fuzzy
 #| msgid "Unable to unload media.\n"
 msgid "Unable to find matching object.\n"
 msgstr "No s'ha pogut descarregar el suport.\n"
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 msgid "No Signature found in file.\n"
 msgstr "No s'ha trobat cap signatura en el fitxer.\n"
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 msgid "Invalid call.\n"
 msgstr "La trucada no és vàlida.\n"
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 msgid "Resource is not currently available.\n"
 msgstr "El recurs actualment no està disponible.\n"
 
@@ -8319,7 +8333,7 @@ msgstr "Enllaç"
 msgid "Hyperlink Information"
 msgstr "Informació d'enllaç"
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr "&Tipus:"
 
@@ -9971,7 +9985,7 @@ msgid "b"
 msgstr "b"
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr "ppp"
@@ -10511,7 +10525,7 @@ msgstr "&Obrir:"
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr "&Navega..."
 
@@ -10597,7 +10611,7 @@ msgstr "Ubicació original"
 msgid "Date deleted"
 msgstr "Data de supressió"
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -13040,254 +13054,330 @@ msgstr "Hi ha hagut un error de divisió per zero.\n"
 msgid "Type mismatch"
 msgstr "Els tipus de dades no es coincideixen"
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 msgid "Device I/O error"
 msgstr "Error de dispositiu E/S"
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 msgid "File already exists"
 msgstr "El fitxer ja existeix"
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 msgid "Disk full"
 msgstr "El disc està ple"
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 msgid "Too many files"
 msgstr "Hi ha massa fitxers"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 msgid "Permission denied"
 msgstr "S'ha denegat el permís"
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr "Error d'accés al camí/fitxer"
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 msgid "Path not found"
 msgstr "No s'ha trobat el camí"
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 msgid "Object variable not set"
 msgstr "La variable d'objecte no està establerta"
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 #, fuzzy
 #| msgid "Object is not initialized.\n"
 msgid "For loop not initialized"
 msgstr "No s'ha inicialitzat l'objecte.\n"
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 msgid "Invalid use of Null"
 msgstr "Ús no vàlid de Null"
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr "No es pot crear el fitxer temporal necessari"
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 msgid "ActiveX component can't create object"
 msgstr "El component d'ActiveX no pot crear l'objecte"
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 msgid "Class doesn't support Automation"
 msgstr "La classe no permet l'automatització"
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr ""
 "No s'ha trobat el nom de fitxer o nom de classe durant l'operació "
 "d'automatització"
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 msgid "Object doesn't support named arguments"
 msgstr "L'objecte no accepta arguments nombrats"
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 msgid "Object doesn't support current locale setting"
 msgstr "L'objecte no accepta la configuració de localització actual"
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 msgid "Named argument not found"
 msgstr "No s'ha trobat el argument anomenat"
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr ""
 "El nombre d'arguments és incorrecte o l'assignació de propietat no és vàlida"
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 msgid "Specified DLL function not found"
 msgstr "No s'ha trobat la funció especificada de la DLL"
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr ""
 "La variable utilitza un tipus d'automatització que no s'admet en VBScript"
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr "La maquinà de servidor remota no existeix o no està disponible"
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 #, fuzzy
 #| msgid "'|' is undefined"
 msgid "Variable is undefined"
 msgstr "'|' no està definit"
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr "Referència no vàlida o no qualificada"
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+#, fuzzy
+#| msgid "Class does not exist.\n"
+msgid "Class not defined"
+msgstr "La classe no existeix.\n"
+
+#: dlls/vbscript/vbscript.rc:71
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected ']'"
+msgstr "S'esperava ';'"
+
+#: dlls/vbscript/vbscript.rc:75
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'If'"
+msgstr "S'esperava ';'"
+
+#: dlls/vbscript/vbscript.rc:76
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'To'"
 msgstr "S'esperava ';'"
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'End'"
 msgstr "S'esperava '@end'"
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Function'"
+msgstr "S'esperava ';'"
+
+#: dlls/vbscript/vbscript.rc:79
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Sub'"
+msgstr "S'esperava ';'"
+
+#: dlls/vbscript/vbscript.rc:80
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'Then'"
 msgstr "S'esperava '@end'"
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'Wend'"
 msgstr "S'esperava '@end'"
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Loop'"
 msgstr "S'esperava ';'"
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Next'"
 msgstr "S'esperava ';'"
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Case'"
 msgstr "S'esperava ';'"
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Select'"
+msgstr "S'esperava ';'"
+
+#: dlls/vbscript/vbscript.rc:86
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected statement"
 msgstr "S'esperava '@end'"
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 #, fuzzy
 #| msgid "Expected an operand.\n"
 msgid "Expected end of statement"
 msgstr "S'esperava un operant.\n"
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 #, fuzzy
 #| msgid "Unterminated string constant"
 msgid "Expected integer constant"
 msgstr "Cadena constant no terminat"
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'With'"
+msgstr "S'esperava ';'"
+
+#: dlls/vbscript/vbscript.rc:90
+#, fuzzy
+#| msgid "Secret too long.\n"
+msgid "Identifier too long"
+msgstr "El secret és massa llarg.\n"
+
+#: dlls/vbscript/vbscript.rc:92
 #, fuzzy
 #| msgid "Invalid flag number.\n"
 msgid "Invalid number"
 msgstr "El número d'opció no és vàlid.\n"
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+#, fuzzy
+#| msgid "Invalid use of Null"
+msgid "Invalid use of 'Me' keyword"
+msgstr "Ús no vàlid de Null"
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 #, fuzzy
 #| msgid "Invalid printer state.\n"
 msgid "Invalid 'exit' statement"
 msgstr "L'estat d'impressora no és vàlid.\n"
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 #, fuzzy
 #| msgid "Label redefined"
 msgid "Name redefined"
 msgstr "S'ha redefinit l'etiqueta"
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 #, fuzzy
 #| msgid "Expected an operator.\n"
 msgid "Expected literal constant"
 msgstr "S'esperava un operador.\n"
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'In'"
 msgstr "S'esperava ';'"
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Class'"
 msgstr "S'esperava ';'"
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Property'"
+msgstr "S'esperava ';'"
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Unexpected 'Next'"
 msgstr "S'esperava ';'"
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr "Error de compilació de Microsoft VBScript"
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr "Error d'entorn d'execució de Microsoft VBScript"
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr "Wine"
 
@@ -14449,7 +14539,7 @@ msgid "Digi&tal"
 msgstr "Digi&tal"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "T&ipus de lletra..."
@@ -15494,6 +15584,41 @@ msgstr "Cada caràcter és %1!u! píxels d'ampla per %2!u! píxels d'alta"
 msgid "This is a test"
 msgstr "Això és una prova"
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+#, fuzzy
+#| msgid "Error: Could not find process \"%1\".\n"
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr "Error: No s'ha pogut trobar el procés \"%1\".\n"
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr "Eina diagnòstica del DirextX"
@@ -19193,7 +19318,7 @@ msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr ""
 "La configuració del Wine en %s s'està actualitzant, si us plau, espereu..."
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -19205,23 +19330,23 @@ msgstr ""
 "la Free Software Foundation; o la versió 2.1 de la Llicència, o (a la vostra "
 "elecció) qualsevulla versió posterior."
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 msgid "Windows registration information"
 msgstr "Informació de registració de Windows"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr "&Propietari:"
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr "&Organització:"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr "Configuració d'aplicacions"
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
@@ -19232,56 +19357,56 @@ msgstr ""
 "permetre-us canviar la configuració del sistema o d'una aplicació en "
 "aquelles pestanyes també."
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 msgid "Add appli&cation..."
 msgstr "A&fegeix aplicació..."
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr "&Elimina aplicació"
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr "&Versió de Windows:"
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr "Configuració de finestres"
 
 # The translated message must be simplified to fit the available space
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr "&Captura automàticament el ratolí en pantalla completa"
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr "Permet que el gestor de finestres &decori les finestres"
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr "Permet que el gestor de finestres &controli les finestres"
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr "&Emula un escriptori virtual"
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr "&Mida d'escriptori:"
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr "Resolució de pantalla"
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr "Això és un text de mostra en Tahoma de 10 punts"
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr "Reemplaçaments DLL"
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
@@ -19290,55 +19415,55 @@ msgstr ""
 "Es pot especificar que una biblioteca d'enllaç dinàmic sigui o interna "
 "(proveïda pel Wine) o nativa (treta de Windows o proveïda per l'aplicació)."
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr "Reemplaçament &nou per a la biblioteca:"
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr "A&fegeix"
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr "Reemplaçaments e&xistents:"
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 msgid "&Edit..."
 msgstr "E&dita..."
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr "Edita reemplaçament"
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr "Ordre de càrrega"
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr "&Interna (Wine)"
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr "&Nativa (Windows)"
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 msgid "Buil&tin then Native"
 msgstr "In&terna, després Nativa"
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr "Nati&va, després Interna"
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr "Lletra de la unitat"
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 msgid "Drive configuration"
 msgstr "Configuració d'unitats"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 msgid ""
 "Failed to connect to the mount manager; the drive configuration cannot be "
 "edited."
@@ -19346,117 +19471,117 @@ msgstr ""
 "S'ha fallat en connectar al gestor de muntatge; la configuració d'unitat no "
 "es pot editar."
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 msgid "A&dd..."
 msgstr "A&fegeix..."
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr "&Camí:"
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 msgid "Show Advan&ced"
 msgstr "&Vista avançada"
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr "&Dispositiu:"
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr "&Navega..."
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr "&Etiqueta:"
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr "&Serial:"
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 msgid "&Show dot files"
 msgstr "&Mostra els fitxers de punt"
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr "Diagnòstics de controlador"
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr "&Prova el so"
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr "Per defecte"
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr "Dispositiu de sortida:"
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr "Dispositiu de sortida de veu:"
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr "Dispositiu d'entrada:"
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr "Dispositiu d'entrada de veu:"
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 #, fuzzy
 #| msgid "Output device:"
 msgid "MIDI output device:"
 msgstr "Dispositiu de sortida:"
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 msgid "Speaker configuration"
 msgstr "Configuració d'altaveus"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr "Altaveus:"
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr "Aparença"
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr "&Tema:"
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 msgid "&WinRT theme:"
 msgstr "Tema &WinRT:"
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr "&Instal·la tema..."
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr "&Element:"
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr "Co&lor:"
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr "Tipus MIME"
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr "Gestiona &associacions de fitxer i protocol"
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr "Carpetes"
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr "Enlla&ça a:"
 
@@ -19537,26 +19662,32 @@ msgid "(System default)"
 msgstr "(Defecte del sistema)"
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+#, fuzzy
+#| msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr "Envoltant 5.1"
 
 #: programs/winecfg/winecfg.rc:91
+msgid "5.1 Surround"
+msgstr "Envoltant 5.1"
+
+#: programs/winecfg/winecfg.rc:92
 msgid "Quadraphonic"
 msgstr "Quadrifònic"
 
-#: programs/winecfg/winecfg.rc:92
+#: programs/winecfg/winecfg.rc:93
 msgid "Stereo"
 msgstr "Estèreo"
 
-#: programs/winecfg/winecfg.rc:93
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr "Mono"
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 msgid "Light"
 msgstr "Clar"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr "Fosc"
 
@@ -19674,127 +19805,127 @@ msgstr ""
 "\n"
 "Recordeu fer clic en 'Afegir' en la pestanya Unitats per a crear una!\n"
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr "Controls--Fons"
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr "Controls--Text"
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr "Menú--Fons"
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr "Menú--Text"
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr "Barra de desplaçament"
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr "Selecció--Fons"
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr "Selecció--Text"
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr "Indicador de funció--Fons"
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr "Indicador de funció--Text"
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr "Finestra--Fons"
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr "Finestra--Text"
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 msgid "Active Title Bar"
 msgstr "Títol actiu--Barra"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr "Títol actiu--Text"
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr "Títol inactiu--Barra"
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr "Títol inactiu--Text"
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr "Text de quadre de missatge"
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr "Espai de treball d'aplicació"
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr "Marca de finestra"
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr "Vora activa"
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr "Vora inactiva"
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr "Controls--Ombra"
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr "Text gris"
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr "Controls--Ressalt"
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr "Controls--Ombra fosca"
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr "Controls--Brillant"
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr "Controls--Fons alternatiu"
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr "Element ressaltat"
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr "Títol actiu--Degradat"
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr "Títol inactiu--Degradat"
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr "Menú--Ressalt"
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr "Menú--Barra"
 
diff --git a/po/cs.po b/po/cs.po
index 9ca98931de1d..047861bf6594 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -88,7 +88,7 @@ msgstr "Změnit..."
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr "Odeb&rat"
@@ -125,7 +125,7 @@ msgstr "Informace o podpoře"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -231,7 +231,7 @@ msgstr "&Instalovat"
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -733,7 +733,7 @@ msgid "Font St&yle:"
 msgstr "St&yl písma:"
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "Veliko&st:"
 
@@ -749,7 +749,7 @@ msgstr "Přeš&krtnutí"
 msgid "&Underline"
 msgstr "&Podtržení"
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "&Barva:"
 
@@ -928,7 +928,7 @@ msgstr "Počet &kopií:"
 msgid "C&ollate"
 msgstr "K&ompletovat"
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr "Veli&kost:"
 
@@ -1006,7 +1006,7 @@ msgstr "Název souboru:"
 msgid "Files of type:"
 msgstr "Soubory typu:"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr "Soubor nebyl nalezen"
 
@@ -2458,7 +2458,7 @@ msgid "&File name:"
 msgstr "&Název souboru:"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr "P&rocházet..."
 
@@ -3805,11 +3805,19 @@ msgstr "Rejstřík"
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr "Videokodek Wine Video 1"
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr "Pákové ovladače"
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr "&Zakázat"
 
@@ -3970,13 +3978,13 @@ msgstr "Chybné volání procedury či argument"
 msgid "Subscript out of range"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 #, fuzzy
 #| msgid "Out of paper; "
 msgid "Out of stack space"
 msgstr "Došel papír; "
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr "Vyžadován objekt"
 
@@ -3984,23 +3992,23 @@ msgstr "Vyžadován objekt"
 msgid "Automation server can't create object"
 msgstr "Automatizační server nemůže vytvořit objekt"
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr "Objekt nepodporuje tuto akci"
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr "Argument je povinný"
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 msgid "Object not a collection"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr "Chybná syntaxe"
 
@@ -4008,27 +4016,27 @@ msgstr "Chybná syntaxe"
 msgid "Expected ';'"
 msgstr "Očekáváno „;“"
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr "Očekáváno „(“"
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr "Očekáváno „)“"
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr "Očekáván identifikátor"
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 msgid "Expected '='"
 msgstr "Očekáváno „=“"
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 msgid "Invalid character"
 msgstr "Chybný znak"
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr ""
 
@@ -4072,7 +4080,7 @@ msgstr ""
 msgid "Microsoft JScript runtime error"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 #, fuzzy
 #| msgid "Unknown error"
 msgid "Unknown runtime error"
@@ -4100,7 +4108,7 @@ msgstr ""
 msgid "Object expected"
 msgstr "Očekáván objekt"
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr "Nepovolené přiřazení"
 
@@ -4326,11 +4334,11 @@ msgstr "Soubor nebyl nalezen.\n"
 msgid "Path not found.\n"
 msgstr "Cesta nenalezena.\n"
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr "Příliš mnoho otevřených souborů.\n"
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr "Přístup odepřen.\n"
 
@@ -5682,7 +5690,7 @@ msgstr "Operace přerušena uživatelem.\n"
 msgid "File has a user-mapped section.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr "Spojení odmítnuto.\n"
 
@@ -7270,85 +7278,91 @@ msgstr "Toto síťové připojení neexistuje.\n"
 
 #: dlls/kernelbase/winerror.mc:3750
 #, fuzzy
+#| msgid "File or directory corrupt.\n"
+msgid "File or directory is not a reparse point.\n"
+msgstr "Poškozený soubor/složka.\n"
+
+#: dlls/kernelbase/winerror.mc:3755
+#, fuzzy
 #| msgid "Call not implemented.\n"
 msgid "Call interrupted.\n"
 msgstr "Toto volání není implementováno.\n"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 #, fuzzy
 #| msgid "Invalid handle.\n"
 msgid "Invalid file handle.\n"
 msgstr "Neplatná operace.\n"
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 #, fuzzy
 #| msgid "Invalid network address.\n"
 msgid "Invalid pointer address.\n"
 msgstr "Nesprávná síťová adresa.\n"
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 #, fuzzy
 #| msgid "Invalid name.\n"
 msgid "Invalid argument.\n"
 msgstr "Neplatný název.\n"
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 msgid "Connection reset by peer.\n"
 msgstr "Spojení zrušeno druhou stranou.\n"
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 #, fuzzy
 #| msgid "Point not found.\n"
 msgid "Host not found.\n"
 msgstr "Bod nenalezen.\n"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 #, fuzzy
 #| msgid "File not found.\n"
 msgid "Nonauthoritative host not found.\n"
 msgstr "Soubor nebyl nalezen.\n"
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 #, fuzzy
 #| msgid "A printer error occurred."
 msgid "Nonrecoverable error.\n"
 msgstr "Při tisku došlo k chybě."
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 #, fuzzy
 #| msgid "Not implemented"
 msgid "Not implemented.\n"
 msgstr "Neimplementováno"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 #, fuzzy
 #| msgid "RPC call failed.\n"
 msgid "Call failed.\n"
 msgstr "RPC volání se nezdařilo.\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 msgid "Unable to find matching object.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 msgid "No Signature found in file.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 #, fuzzy
 #| msgid "Invalid level.\n"
 msgid "Invalid call.\n"
 msgstr "Neplatná úroveň.\n"
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 #, fuzzy
 #| msgid "Help not available."
 msgid "Resource is not currently available.\n"
@@ -8558,7 +8572,7 @@ msgstr "Hypertextový odkaz"
 msgid "Hyperlink Information"
 msgstr "Informace o hypertextovém odkazu"
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr "&Typ:"
 
@@ -10281,7 +10295,7 @@ msgid "b"
 msgstr ""
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr "bodů na palec (dpi)"
@@ -10819,7 +10833,7 @@ msgstr "&Otevřít:"
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr "&Procházet..."
 
@@ -10905,7 +10919,7 @@ msgstr "Původní umístění"
 msgid "Date deleted"
 msgstr "Datum bylo odstraněno"
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -13863,278 +13877,354 @@ msgstr "Chyba – dělení nulou.\n"
 msgid "Type mismatch"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 #, fuzzy
 #| msgid "I/O device error.\n"
 msgid "Device I/O error"
 msgstr "Chyba vstupně/výstupního zařízení.\n"
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 #, fuzzy
 #| msgid "File already exists.\n"
 msgid "File already exists"
 msgstr "Soubor již existuje.\n"
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 #, fuzzy
 #| msgid "Disk full.\n"
 msgid "Disk full"
 msgstr "Disk je plný.\n"
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 #, fuzzy
 #| msgid "Too many open files.\n"
 msgid "Too many files"
 msgstr "Příliš mnoho otevřených souborů.\n"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 #, fuzzy
 #| msgid "Access denied.\n"
 msgid "Permission denied"
 msgstr "Přístup odepřen.\n"
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 #, fuzzy
 #| msgid "Path not found.\n"
 msgid "Path not found"
 msgstr "Cesta nenalezena.\n"
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 #, fuzzy
 #| msgid "(value not set)"
 msgid "Object variable not set"
 msgstr "(hodnota nenastavena)"
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 #, fuzzy
 #| msgid "Object UUID not found.\n"
 msgid "For loop not initialized"
 msgstr "UUID objektu nebylo nalezeno.\n"
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 #, fuzzy
 #| msgid "Invalid separator file.\n"
 msgid "Invalid use of Null"
 msgstr "Neplatný oddělovací soubor.\n"
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 #, fuzzy
 #| msgid "Automation server can't create object"
 msgid "ActiveX component can't create object"
 msgstr "Automatizační server nemůže vytvořit objekt"
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Class doesn't support Automation"
 msgstr "Objekt nepodporuje tuto akci"
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Object doesn't support named arguments"
 msgstr "Objekt nepodporuje tuto akci"
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Object doesn't support current locale setting"
 msgstr "Objekt nepodporuje tuto akci"
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 #, fuzzy
 #| msgid "Element not found.\n"
 msgid "Named argument not found"
 msgstr "Prvek nenalezen.\n"
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 #, fuzzy
 #| msgid "Specified control was not found in message"
 msgid "Specified DLL function not found"
 msgstr "Určený ovládací prvek nebyl ve zprávě nalezen"
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 #, fuzzy
 #| msgid "'|' is undefined"
 msgid "Variable is undefined"
 msgstr "„|“ není definováno"
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+#, fuzzy
+#| msgid "Class does not exist.\n"
+msgid "Class not defined"
+msgstr "Třída neexistuje.\n"
+
+#: dlls/vbscript/vbscript.rc:71
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected ']'"
+msgstr "Očekáváno „;“"
+
+#: dlls/vbscript/vbscript.rc:75
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'If'"
+msgstr "Očekáváno „;“"
+
+#: dlls/vbscript/vbscript.rc:76
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'To'"
 msgstr "Očekáváno „;“"
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'End'"
 msgstr "Očekáváno „@end“"
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Function'"
+msgstr "Očekáváno „;“"
+
+#: dlls/vbscript/vbscript.rc:79
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Sub'"
+msgstr "Očekáváno „;“"
+
+#: dlls/vbscript/vbscript.rc:80
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'Then'"
 msgstr "Očekáváno „@end“"
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'Wend'"
 msgstr "Očekáváno „@end“"
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Loop'"
 msgstr "Očekáváno „;“"
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Next'"
 msgstr "Očekáváno „;“"
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Case'"
 msgstr "Očekáváno „;“"
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Select'"
+msgstr "Očekáváno „;“"
+
+#: dlls/vbscript/vbscript.rc:86
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected statement"
 msgstr "Očekáváno „@end“"
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 #, fuzzy
 #| msgid "Expected an operand.\n"
 msgid "Expected end of statement"
 msgstr "Očekáván operand.\n"
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 #, fuzzy
 #| msgid "Expected identifier"
 msgid "Expected integer constant"
 msgstr "Očekáván identifikátor"
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'With'"
+msgstr "Očekáváno „;“"
+
+#: dlls/vbscript/vbscript.rc:90
+#, fuzzy
+#| msgid "Secret too long.\n"
+msgid "Identifier too long"
+msgstr "Příliš dlouhé heslo.\n"
+
+#: dlls/vbscript/vbscript.rc:92
 #, fuzzy
 #| msgid "Invalid member.\n"
 msgid "Invalid number"
 msgstr "Neplatný člen.\n"
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+#, fuzzy
+#| msgid "Invalid separator file.\n"
+msgid "Invalid use of 'Me' keyword"
+msgstr "Neplatný oddělovací soubor.\n"
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 #, fuzzy
 #| msgid "Invalid printer state.\n"
 msgid "Invalid 'exit' statement"
 msgstr "Neplatný stav tiskárny.\n"
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 #, fuzzy
 #| msgid "Label redefined"
 msgid "Name redefined"
 msgstr "Označení bylo znovu definováno"
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 #, fuzzy
 #| msgid "Expected an operator.\n"
 msgid "Expected literal constant"
 msgstr "Očekáván operátor.\n"
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'In'"
 msgstr "Očekáváno „;“"
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Class'"
 msgstr "Očekáváno „;“"
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Property'"
+msgstr "Očekáváno „;“"
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Unexpected 'Next'"
 msgstr "Očekáváno „;“"
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr ""
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr "Wine"
 
@@ -15247,7 +15337,7 @@ msgid "Digi&tal"
 msgstr "Digi&tální"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "&Písmo..."
@@ -16206,6 +16296,41 @@ msgstr "Každý znak je %1!u! pixelů široký a %2!u! pixelů vysoký"
 msgid "This is a test"
 msgstr "Toto je test"
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+#, fuzzy
+#| msgid "Error: Could not find process \"%1\".\n"
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr "Chyba: Nelze nalézt proces „%1“.\n"
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr "Diagnostický nástroj pro DirectX"
@@ -19681,7 +19806,7 @@ msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr ""
 "Konfigurace Wine umístěná v %s je právě aktualizována, prosím čekejte..."
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -19693,23 +19818,23 @@ msgstr ""
 "publikovaném Free Software Foundation; platná je verze 2.1 zmíněné licence "
 "nebo (pokud je lépe vyhovující) jakákoli novější verze."
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 msgid "Windows registration information"
 msgstr "Informace o registraci Windows"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr "&Vlastník:"
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr "Organi&zace:"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr "Nastavení aplikací"
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
@@ -19719,55 +19844,55 @@ msgstr ""
 "je provázaná se záložkami Knihovny a Zobrazení a umožňuje změnit nastavení "
 "celého systému nebo nastavení každé aplikace zvlášť."
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 msgid "Add appli&cation..."
 msgstr "Přid&at aplikaci..."
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr "Odeb&rat aplikaci"
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr "Verze &Windows:"
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr "Nastavení oken"
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr "Automaticky odchytávat &myš v režimu celé obrazovky"
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr "Povolit správci oken &dekorovat okna"
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr "Povolit &správci oken kontrolu nad okny"
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr "&Emulace virtuálního desktopu"
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr "&Velikost desktopu:"
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr "Rozlišení obrazovky"
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr "Toto je testovací text - 10 bodů, Tahoma"
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr "Nastavení DLL"
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
@@ -19776,55 +19901,55 @@ msgstr ""
 "Můžete vybrat zda budou použity dynamicky linkované knihovny vestavěné ve "
 "Wine nebo nativní (získané z Windows nebo poskytnuté aplikací)."
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr "&Nové nastavení pro knihovnu:"
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr "Přid&at"
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr "&Existující nastavení knihoven:"
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 msgid "&Edit..."
 msgstr "&Upravit..."
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr "Úprava nastavení knihovny"
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr "Pořadí nahrávání"
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr "&Vestavěná (Wine)"
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr "&Nativní (Windows)"
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 msgid "Buil&tin then Native"
 msgstr "V&estavěná pak nativní"
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr "N&ativní a pak vestavěná"
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr "Vyberte písmeno disku"
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 msgid "Drive configuration"
 msgstr "Nastavení jednotek"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 #, fuzzy
 #| msgid ""
 #| "Failed to connect to the mount manager, the drive configuration cannot be "
@@ -19836,119 +19961,119 @@ msgstr ""
 "Selhalo připojení k správci přípojných bodů, nelze upravovat konfiguraci "
 "diskových jednotek."
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 msgid "A&dd..."
 msgstr "Přid&at..."
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr "&Cesta:"
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 msgid "Show Advan&ced"
 msgstr "Zobrazit rozšířené &možnosti"
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr "&Zařízení:"
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr "Procház&et..."
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr "P&opisek:"
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr "&Sériové číslo:"
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 msgid "&Show dot files"
 msgstr "Zo&brazit soubory s tečkou na začátku názvu"
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr "Diagnostika ovladače"
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr "O&testovat zvuk"
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr "Výchozí nastavení"
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr "Výstupní zařízení:"
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr "Zařízení hlasového výstupu:"
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr "Vstupní zařízení:"
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr "Zařízení hlasového vstupu:"
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 #, fuzzy
 #| msgid "Output device:"
 msgid "MIDI output device:"
 msgstr "Výstupní zařízení:"
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 msgid "Speaker configuration"
 msgstr "Nastavení reproduktorů"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr "Reproduktory:"
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr "Vzhled"
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr "&Téma:"
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 #, fuzzy
 #| msgid "&Theme:"
 msgid "&WinRT theme:"
 msgstr "&Téma:"
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr "&Instalovat téma..."
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr "Po&ložka:"
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr "B&arva:"
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr "Adresáře"
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr "&Odkaz do:"
 
@@ -20029,28 +20154,34 @@ msgid "(System default)"
 msgstr "(Výchozí v systému)"
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+#, fuzzy
+#| msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr "Surround 5.1"
 
 #: programs/winecfg/winecfg.rc:91
+msgid "5.1 Surround"
+msgstr "Surround 5.1"
+
+#: programs/winecfg/winecfg.rc:92
 msgid "Quadraphonic"
 msgstr "Kvadrofonní"
 
-#: programs/winecfg/winecfg.rc:92
+#: programs/winecfg/winecfg.rc:93
 msgid "Stereo"
 msgstr "Stereo"
 
-#: programs/winecfg/winecfg.rc:93
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr "Mono"
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 #, fuzzy
 #| msgid "Right"
 msgid "Light"
 msgstr "Vpravo"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr ""
 
@@ -20175,127 +20306,127 @@ msgstr ""
 "\n"
 "Klikněte na ‘Přidat...’ v záložce Disky a vytvořte ho!\n"
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr "Pozadí ovládacích prvků"
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr "Písmo ovládacích prvků"
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr "Pozadí menu"
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr "Písmo menu"
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr "Posuvník"
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr "Pozadí výběru"
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr "Písmo výběru"
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr "Pozadí tipu"
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr "Písmo tipu"
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr "Pozadí okna"
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr "Písmo okna"
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 msgid "Active Title Bar"
 msgstr "Pozadí titulku aktivního okna"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr "Písmo titulku aktivního okna"
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr "Pozadí titulku neaktivního okna"
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr "Písmo titulku neaktivního okna"
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr "Písmo okna zprávy"
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr "Pracovní prostor aplikace"
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr "Písmo okna"
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr "Okraj aktivního okna"
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr "Okraj neaktivního okna"
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr "Stíny ovládacích prvků"
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr "Pošedlý text"
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr "Zvýraznění ovládacích prvků"
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr "Tmavé stíny ovládacích prvků"
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr "Nasvícení ovládacích prvků"
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr "Alternativní pozadí ovládacích prvků"
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr "Prvek pod ukazatelem"
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr "Přechod titulku aktivního okna"
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr "Přechod titulku neaktivního okna"
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr "Zvýraznění v menu"
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr "Lišta menu"
 
diff --git a/po/da.po b/po/da.po
index f67577cfabd2..87a02d88aa05 100644
--- a/po/da.po
+++ b/po/da.po
@@ -87,7 +87,7 @@ msgstr "&Rediger..."
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr "&Fjern"
@@ -124,7 +124,7 @@ msgstr "Support information"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -229,7 +229,7 @@ msgstr "&Installer"
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -740,7 +740,7 @@ msgid "Font St&yle:"
 msgstr "&Typografi:"
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "&Størrelse:"
 
@@ -756,7 +756,7 @@ msgstr "&Gennemstreget"
 msgid "&Underline"
 msgstr "&Understreget"
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "&Farve:"
 
@@ -935,7 +935,7 @@ msgstr "Antal &kopier:"
 msgid "C&ollate"
 msgstr "&hold sammen"
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr "S&tørrelse:"
 
@@ -1013,7 +1013,7 @@ msgstr "&Filnavn:"
 msgid "Files of type:"
 msgstr "Filer af type:"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr "Filen Kunne ikke findes"
 
@@ -2479,7 +2479,7 @@ msgid "&File name:"
 msgstr "&Filnavn:"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr "&Gennemse..."
 
@@ -3886,11 +3886,19 @@ msgstr "Indeks"
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr "Wine Video 1 videokodeks"
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr ""
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr "&Deaktiver"
 
@@ -4049,13 +4057,13 @@ msgstr "Ugyldig procedure kald eller argument"
 msgid "Subscript out of range"
 msgstr "Indekset er uden for grænserne"
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 #, fuzzy
 #| msgid "Out of paper; "
 msgid "Out of stack space"
 msgstr "Ikke mere papir; "
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr "Objekt krævet"
 
@@ -4063,25 +4071,25 @@ msgstr "Objekt krævet"
 msgid "Automation server can't create object"
 msgstr "Automations-serveren kan ikke oprette objektet"
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr "Objektet understøtter ikke denne egenskab eller metode"
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr "Objektet understøtter ikke denne metode"
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr "Argument ikke valgfrit"
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 #, fuzzy
 #| msgid "Object Class Violation"
 msgid "Object not a collection"
 msgstr "Objektklasse overtrædelse"
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr "Syntaksfejl"
 
@@ -4089,31 +4097,31 @@ msgstr "Syntaksfejl"
 msgid "Expected ';'"
 msgstr "Forventet ';'"
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr "Forventet '('"
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr "Forventet ')'"
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 #, fuzzy
 #| msgid "Subject Key Identifier"
 msgid "Expected identifier"
 msgstr "Emne nøgle identificering"
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected '='"
 msgstr "Forventet ';'"
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 msgid "Invalid character"
 msgstr "Ugyldig karakter"
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr "Uafsluttet strengkonstant"
 
@@ -4161,7 +4169,7 @@ msgstr ""
 msgid "Microsoft JScript runtime error"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 #, fuzzy
 #| msgid "Unknown error"
 msgid "Unknown runtime error"
@@ -4189,7 +4197,7 @@ msgstr "«[objekt]» er ikke et dato objekt"
 msgid "Object expected"
 msgstr "Objekt forventet"
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr "Ulovlig tildeling"
 
@@ -4425,11 +4433,11 @@ msgstr "Filen blev ikke fundet.\n"
 msgid "Path not found.\n"
 msgstr "Stien blev ikke fundet.\n"
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr "For mange filer åbnet.\n"
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr "Adgang nægtet.\n"
 
@@ -5784,7 +5792,7 @@ msgstr "Operation annulleret af bruger.\n"
 msgid "File has a user-mapped section.\n"
 msgstr "Filen har en bruger-kortlagt sektion.\n"
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr "Forbindelse nægtet.\n"
 
@@ -7372,91 +7380,97 @@ msgstr "Stedet eksisterer ikke.\n"
 
 #: dlls/kernelbase/winerror.mc:3750
 #, fuzzy
+#| msgid "File or directory corrupt.\n"
+msgid "File or directory is not a reparse point.\n"
+msgstr "Fil eller mappe er korrupt.\n"
+
+#: dlls/kernelbase/winerror.mc:3755
+#, fuzzy
 #| msgid "Invalid at interrupt time.\n"
 msgid "Call interrupted.\n"
 msgstr "Ugyldig ved interrupt tid.\n"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 #, fuzzy
 #| msgid "Invalid handle.\n"
 msgid "Invalid file handle.\n"
 msgstr "Ugyldig handling.\n"
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 #, fuzzy
 #| msgid "Invalid network address.\n"
 msgid "Invalid pointer address.\n"
 msgstr "Ugyldig netværksadresse.\n"
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 #, fuzzy
 #| msgid "Invalid name.\n"
 msgid "Invalid argument.\n"
 msgstr "Ugyldigt navn.\n"
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 #, fuzzy
 #| msgid "Connection refused.\n"
 msgid "Connection reset by peer.\n"
 msgstr "Forbindelse nægtet.\n"
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 #, fuzzy
 #| msgid "Point not found.\n"
 msgid "Host not found.\n"
 msgstr "Punkt blev ikke fundet.\n"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 #, fuzzy
 #| msgid "File not found.\n"
 msgid "Nonauthoritative host not found.\n"
 msgstr "Filen blev ikke fundet.\n"
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 #, fuzzy
 #| msgid "A printer error occurred."
 msgid "Nonrecoverable error.\n"
 msgstr "Der opstod en printer fejl."
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 #, fuzzy
 #| msgid "Not implemented"
 msgid "Not implemented.\n"
 msgstr "Ikke implementeret"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 #, fuzzy
 #| msgid "RPC call failed.\n"
 msgid "Call failed.\n"
 msgstr "RPC-kald mislykkedes.\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 #, fuzzy
 #| msgid "Unable to unload media.\n"
 msgid "Unable to find matching object.\n"
 msgstr "Kunne ikke fjerne medie.\n"
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 #, fuzzy
 #| msgid "Message 0x%1 not found in file %2.\n"
 msgid "No Signature found in file.\n"
 msgstr "Beskeden 0x%1 blev ikke fundet i filen %2.\n"
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 #, fuzzy
 #| msgid "Invalid level.\n"
 msgid "Invalid call.\n"
 msgstr "Ugyldigt niveau.\n"
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 #, fuzzy
 #| msgid "Help not available."
 msgid "Resource is not currently available.\n"
@@ -8667,7 +8681,7 @@ msgstr "Hyperlink"
 msgid "Hyperlink Information"
 msgstr "Information om Hyperlink'et"
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr "T&ype:"
 
@@ -10507,7 +10521,7 @@ msgid "b"
 msgstr "b"
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr "dpi"
@@ -11047,7 +11061,7 @@ msgstr "&Åbn:"
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr "&Gennemse..."
 
@@ -11147,7 +11161,7 @@ msgstr "Original sted"
 msgid "Date deleted"
 msgstr "Dato slettet"
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -14116,278 +14130,354 @@ msgstr ""
 msgid "Type mismatch"
 msgstr "Datatype passer ikke.\n"
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 #, fuzzy
 #| msgid "I/O device error.\n"
 msgid "Device I/O error"
 msgstr "I/O enheds fejl.\n"
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 #, fuzzy
 #| msgid "File already exists.\n"
 msgid "File already exists"
 msgstr "Filen eksistere allerede.\n"
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 #, fuzzy
 #| msgid "Disk full.\n"
 msgid "Disk full"
 msgstr "Diskens plads er opbrugt.\n"
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 #, fuzzy
 #| msgid "Too many open files.\n"
 msgid "Too many files"
 msgstr "For mange filer åbnet.\n"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 #, fuzzy
 #| msgid "Access denied.\n"
 msgid "Permission denied"
 msgstr "Adgang nægtet.\n"
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 #, fuzzy
 #| msgid "Path not found.\n"
 msgid "Path not found"
 msgstr "Stien blev ikke fundet.\n"
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 #, fuzzy
 #| msgid "(value not set)"
 msgid "Object variable not set"
 msgstr "(værdi ikke sat)"
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 #, fuzzy
 #| msgid "Object UUID not found.\n"
 msgid "For loop not initialized"
 msgstr "Objekt UUID ikke fundet.\n"
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 #, fuzzy
 #| msgid "Invalid user buffer.\n"
 msgid "Invalid use of Null"
 msgstr "Ugyldig bruger buffer.\n"
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 #, fuzzy
 #| msgid "Automation server can't create object"
 msgid "ActiveX component can't create object"
 msgstr "Automations-serveren kan ikke oprette objektet"
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Class doesn't support Automation"
 msgstr "Objektet understøtter ikke denne metode"
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Object doesn't support named arguments"
 msgstr "Objektet understøtter ikke denne metode"
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Object doesn't support current locale setting"
 msgstr "Objektet understøtter ikke denne metode"
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 #, fuzzy
 #| msgid "Element not found.\n"
 msgid "Named argument not found"
 msgstr "Indgang ikke fundet.\n"
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 #, fuzzy
 #| msgid "Specified control was not found in message"
 msgid "Specified DLL function not found"
 msgstr "Den specificerede kontroller blev ikke fundet i beskeden"
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 #, fuzzy
 #| msgid "'|' is undefined"
 msgid "Variable is undefined"
 msgstr "«|» er ikke defineret"
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+#, fuzzy
+#| msgid "Class does not exist.\n"
+msgid "Class not defined"
+msgstr "Klasse eksisterer ikke.\n"
+
+#: dlls/vbscript/vbscript.rc:71
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected ']'"
+msgstr "Forventet ';'"
+
+#: dlls/vbscript/vbscript.rc:75
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'If'"
+msgstr "Forventet ';'"
+
+#: dlls/vbscript/vbscript.rc:76
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'To'"
 msgstr "Forventet ';'"
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'End'"
 msgstr "Forventet ';'"
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Function'"
+msgstr "Forventet ';'"
+
+#: dlls/vbscript/vbscript.rc:79
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Sub'"
+msgstr "Forventet ';'"
+
+#: dlls/vbscript/vbscript.rc:80
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Then'"
 msgstr "Forventet ';'"
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Wend'"
 msgstr "Forventet ';'"
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Loop'"
 msgstr "Forventet ';'"
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Next'"
 msgstr "Forventet ';'"
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Case'"
 msgstr "Forventet ';'"
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Select'"
+msgstr "Forventet ';'"
+
+#: dlls/vbscript/vbscript.rc:86
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected statement"
 msgstr "Forventet ';'"
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 #, fuzzy
 #| msgid "Unexpected network error.\n"
 msgid "Expected end of statement"
 msgstr "Uventet netværksfejl.\n"
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 #, fuzzy
 #| msgid "Unterminated string constant"
 msgid "Expected integer constant"
 msgstr "Uafsluttet strengkonstant"
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'With'"
+msgstr "Forventet ';'"
+
+#: dlls/vbscript/vbscript.rc:90
+#, fuzzy
+#| msgid "Secret too long.\n"
+msgid "Identifier too long"
+msgstr "Hemmelighed er for lang.\n"
+
+#: dlls/vbscript/vbscript.rc:92
 #, fuzzy
 #| msgid "Invalid flag number.\n"
 msgid "Invalid number"
 msgstr "Ugyldigt flag nummer.\n"
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+#, fuzzy
+#| msgid "Invalid user buffer.\n"
+msgid "Invalid use of 'Me' keyword"
+msgstr "Ugyldig bruger buffer.\n"
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 #, fuzzy
 #| msgid "Invalid printer state.\n"
 msgid "Invalid 'exit' statement"
 msgstr "Ugyldig printer tilstand.\n"
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 #, fuzzy
 #| msgid "Label redefined"
 msgid "Name redefined"
 msgstr "Etiket omdefineret"
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 #, fuzzy
 #| msgid "Unexpected network error.\n"
 msgid "Expected literal constant"
 msgstr "Uventet netværksfejl.\n"
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'In'"
 msgstr "Forventet ';'"
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Class'"
 msgstr "Forventet ';'"
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Property'"
+msgstr "Forventet ';'"
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Unexpected 'Next'"
 msgstr "Forventet ';'"
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr ""
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr "Wine"
 
@@ -15551,7 +15641,7 @@ msgid "Digi&tal"
 msgstr "&Digital"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "&Skrifttype..."
@@ -16608,6 +16698,41 @@ msgstr "Hvert tegn er %1!u! pixel bred og %2!u! pixel høj"
 msgid "This is a test"
 msgstr "Dette er en test"
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+#, fuzzy
+#| msgid "Error: Could not find process \"%1\".\n"
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr "Fejl: Kunne ikke finde processen «%1».\n"
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr "DirectX diagnostiskværktøj"
@@ -20182,7 +20307,7 @@ msgstr ""
 msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr "Wine konfigurationen i %s, er ved at blive opdateret, vent venligst..."
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -20194,23 +20319,23 @@ msgstr ""
 "publiceret af Free Software Foundation; enten version 2.1, eller (efter dit "
 "valg) en senere version."
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 msgid "Windows registration information"
 msgstr "Windows registreringsoplysninger"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr "Ejer:"
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr "Organisation:"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr "Programindstillinger"
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
@@ -20221,57 +20346,57 @@ msgstr ""
 "for at ændre indstillinger på hele systemet eller per program i disse "
 "faneblade."
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 #, fuzzy
 #| msgid "&Add application..."
 msgid "Add appli&cation..."
 msgstr "&Tilføj program..."
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr "&Fjern program"
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr "&Windows version:"
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr "Vindueindstillinger"
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr "Automatisk fang &musen i vinduer med fuld skærm"
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr "Tillad vindues manageren at &dekorere vinduerne"
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr "Tillad vindues manageren at styre vinduerne"
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr "Emuler et virtuel &skrivebord"
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr "Skrivebord &størrelse:"
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr "Skærmopløsning"
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr "Dette er en eksempel tekst med 10 punkts Tahoma"
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr "DLL overstyringer"
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
@@ -20280,59 +20405,59 @@ msgstr ""
 "Dynamiske Link Biblioteker kan specificeres individuelt for enten indbygget "
 "(fra Wine) eller indfødt (taget fra Windows eller et program)."
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr "&Nye overstyringer for bibliotek:"
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr "Eksisterende &overstyringer:"
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 msgid "&Edit..."
 msgstr "&Rediger..."
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr "Rediger overstyring"
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr "Indlæsningsrækkefølge"
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr "Ind&bygget (Wine)"
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr "Ind&født (Windows)"
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 #, fuzzy
 #| msgid "Bui&ltin then Native"
 msgid "Buil&tin then Native"
 msgstr "Indb&ygget derefter indfødt"
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr "I&ndfødt derefter indbygget"
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr "Vælg Drevbogstav"
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 #, fuzzy
 #| msgid "Wine configuration"
 msgid "Drive configuration"
 msgstr "Wine konfiguration"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 #, fuzzy
 #| msgid ""
 #| "Failed to connect to the mount manager, the drive configuration cannot be "
@@ -20344,127 +20469,127 @@ msgstr ""
 "Det lykkedes ikke at forbinde til mount manageren. Drevkonfigurationen kan "
 "ikke redigeres."
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 #, fuzzy
 #| msgid "&Add..."
 msgid "A&dd..."
 msgstr "&Tilføj..."
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr "&Sti:"
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 #, fuzzy
 #| msgid "Show &Advanced"
 msgid "Show Advan&ced"
 msgstr "Vis &avanceret"
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr "Enhed:"
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr "G&ennemse..."
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr "Etiket:"
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr "Se&riel:"
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 #, fuzzy
 #| msgid "Show &dot files"
 msgid "&Show dot files"
 msgstr "Vis &dot filer"
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr "Driver diagnostik"
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr "&Test lyd"
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr "Standarder"
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr "Output enhed:"
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr "Stemme output enhed:"
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr "Input enhed:"
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr "Stemme input enhed:"
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 #, fuzzy
 #| msgid "Output device:"
 msgid "MIDI output device:"
 msgstr "Output enhed:"
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 #, fuzzy
 #| msgid "Wine configuration"
 msgid "Speaker configuration"
 msgstr "Wine konfiguration"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr "Udseende"
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr "&Tema:"
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 #, fuzzy
 #| msgid "&Theme:"
 msgid "&WinRT theme:"
 msgstr "&Tema:"
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr "&Installer tema..."
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr "&Element:"
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr "F&arve:"
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr "Mapper"
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr "&Link til:"
 
@@ -20547,30 +20672,34 @@ msgid "(System default)"
 msgstr "(System standard)"
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:91
+msgid "5.1 Surround"
+msgstr ""
+
+#: programs/winecfg/winecfg.rc:92
 #, fuzzy
 #| msgid "graphic"
 msgid "Quadraphonic"
 msgstr "Grafik"
 
-#: programs/winecfg/winecfg.rc:92
+#: programs/winecfg/winecfg.rc:93
 msgid "Stereo"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:93
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 #, fuzzy
 #| msgid "Right"
 msgid "Light"
 msgstr "Højrestillet"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr ""
 
@@ -20696,127 +20825,127 @@ msgstr ""
 "\n"
 "Husk at klikke Tilføj i Drev tabben for lave en!\n"
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr "Kontrol baggrund"
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr "Kontrol tekst"
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr "Menubaggrund"
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr "Menutekst"
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr "Scrollbar"
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr "Markeret baggrund"
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr "Markeret tekst"
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr "Baggrund i værktøjstip"
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr "Tekst i værktøjstip"
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr "vinduesbaggrund"
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr "vinduestekst"
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 msgid "Active Title Bar"
 msgstr "Aktiv titellinje"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr "Aktiv titeltekst"
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr "Inaktiv titellinje"
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr "Inaktiv titeltekst"
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr "Meldingsvinduestekst"
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr "Arbejdsområde i program"
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr "Vinduesramme"
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr "Aktiv kant"
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr "Inaktiv kant"
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr "Kontrol skygge"
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr "Grå tekst"
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr "Markeret controls"
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr "Kontrol mørk skygge"
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr "Kontrol lys"
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr "Baggrund for skiftende controls"
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr "Markeret element"
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr "Gradient for aktiv titellinje"
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr "Gradient for Inaktiv titellinje"
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr "Markeret menu"
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr "Menulinje"
 
diff --git a/po/de.po b/po/de.po
index adb3aacd46c2..e7abc51141b6 100644
--- a/po/de.po
+++ b/po/de.po
@@ -82,7 +82,7 @@ msgstr "&Ändern..."
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr "&Entfernen"
@@ -119,7 +119,7 @@ msgstr "Informationen"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -227,7 +227,7 @@ msgstr "&Installieren"
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -724,7 +724,7 @@ msgid "Font St&yle:"
 msgstr "Schrift&stil:"
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "&Größe:"
 
@@ -740,7 +740,7 @@ msgstr "&Durchgestrichen"
 msgid "&Underline"
 msgstr "&Unterstrichen"
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "&Farbe:"
 
@@ -917,7 +917,7 @@ msgstr "Anzahl &Kopien:"
 msgid "C&ollate"
 msgstr "S&ortieren"
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr "G&röße:"
 
@@ -995,7 +995,7 @@ msgstr "Dateiname:"
 msgid "Files of type:"
 msgstr "Dateien vom Typ:"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr "Datei nicht gefunden"
 
@@ -2455,7 +2455,7 @@ msgid "&File name:"
 msgstr "&Dateiname:"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr "&Wählen..."
 
@@ -3834,11 +3834,19 @@ msgstr "Indeo5"
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr "Indeo-Video-Interactive Version 5 Videocodec"
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr "Joysticks"
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr "&Deaktivieren"
 
@@ -3996,11 +4004,11 @@ msgstr "Ungültiger Funktionsaufruf oder Argument"
 msgid "Subscript out of range"
 msgstr "Index außerhalb des Bereichs"
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 msgid "Out of stack space"
 msgstr "Stackspeicher voll"
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr "Objekt benötigt"
 
@@ -4008,23 +4016,23 @@ msgstr "Objekt benötigt"
 msgid "Automation server can't create object"
 msgstr "Automatisierungsserver konnte das Objekt nicht erstellen"
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr "Das Objekt unterstützt diese Eigenschaft oder Methode nicht"
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr "Das Objekt unterstützt diese Aktion nicht"
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr "Argument nicht optional"
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 msgid "Object not a collection"
 msgstr "Objekt ist keine Kollektion"
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr "Syntaxfehler"
 
@@ -4032,27 +4040,27 @@ msgstr "Syntaxfehler"
 msgid "Expected ';'"
 msgstr "';' erwartet"
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr "'(' erwartet"
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr "')' erwartet"
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr "Bezeichner erwartet"
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 msgid "Expected '='"
 msgstr "'=' erwartet"
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 msgid "Invalid character"
 msgstr "Ungültiges Zeichen"
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr "konstante Zeichenkette nicht terminiert"
 
@@ -4096,7 +4104,7 @@ msgstr "Microsoft JScript Übersetzungsfehler"
 msgid "Microsoft JScript runtime error"
 msgstr "Microsoft JScript Laufzeitfehler"
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 msgid "Unknown runtime error"
 msgstr "Unbekannter Laufzeitfehler"
 
@@ -4122,7 +4130,7 @@ msgstr "'[Objekt]' ist kein Datums-Objekt"
 msgid "Object expected"
 msgstr "Objekt erwartet"
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr "Unzulässige Zuweisung"
 
@@ -4341,11 +4349,11 @@ msgstr "Datei nicht gefunden.\n"
 msgid "Path not found.\n"
 msgstr "Pfad nicht gefunden.\n"
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr "Zu viele geöffnete Dateien.\n"
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr "Zugriff verweigert.\n"
 
@@ -5699,7 +5707,7 @@ msgstr "Vorgang durch Benutzer abgebrochen.\n"
 msgid "File has a user-mapped section.\n"
 msgstr "Datei hat von Benutzer abgebildeten Abschnitt.\n"
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr "Verbindung abgelehnt.\n"
 
@@ -7284,68 +7292,74 @@ msgid "This network connection does not exist.\n"
 msgstr "Diese Netzwerkverbindung existiert nicht.\n"
 
 #: dlls/kernelbase/winerror.mc:3750
+#, fuzzy
+#| msgid "File or directory corrupt.\n"
+msgid "File or directory is not a reparse point.\n"
+msgstr "Datei oder Verzeichnis beschädigt.\n"
+
+#: dlls/kernelbase/winerror.mc:3755
 msgid "Call interrupted.\n"
 msgstr "Aufruf unterbrochen.\n"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 msgid "Invalid file handle.\n"
 msgstr "Ungültiges Dateihandle.\n"
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 msgid "Invalid pointer address.\n"
 msgstr "Ungültige Zeigeradresse.\n"
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 msgid "Invalid argument.\n"
 msgstr "Ungültiges Argument.\n"
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 msgid "Connection reset by peer.\n"
 msgstr "Verbindung von Gegenstelle zurückgesetzt.\n"
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 msgid "Host not found.\n"
 msgstr "Host nicht gefunden.\n"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 msgid "Nonauthoritative host not found.\n"
 msgstr "Nicht-authoritativer Host nicht gefunden.\n"
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 msgid "Nonrecoverable error.\n"
 msgstr "Unausgleichbarer Fehler.\n"
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr "Name gültig, kein Datensatz.\n"
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 msgid "Not implemented.\n"
 msgstr "Nicht implementiert.\n"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 msgid "Call failed.\n"
 msgstr "Aufruf fehlgeschlagen.\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 #, fuzzy
 #| msgid "Unable to unload media.\n"
 msgid "Unable to find matching object.\n"
 msgstr "Medium konnte nicht entladen werden.\n"
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 msgid "No Signature found in file.\n"
 msgstr "Keine Signatur in Datei gefunden.\n"
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 msgid "Invalid call.\n"
 msgstr "Ungültiger Aufruf.\n"
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 msgid "Resource is not currently available.\n"
 msgstr "Ressource ist zur Zeit nicht verfügbar.\n"
 
@@ -8309,7 +8323,7 @@ msgstr "Hyperlink"
 msgid "Hyperlink Information"
 msgstr "Hyperlink-Informationen"
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr "&Typ:"
 
@@ -9951,7 +9965,7 @@ msgid "b"
 msgstr "b"
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr "dpi"
@@ -10493,7 +10507,7 @@ msgstr "Ö&ffnen:"
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr "&Durchsuchen..."
 
@@ -10579,7 +10593,7 @@ msgstr "Ursprung"
 msgid "Date deleted"
 msgstr "Gelöscht am"
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -13021,251 +13035,327 @@ msgstr "'Division durch Null'-Fehler.\n"
 msgid "Type mismatch"
 msgstr "Datentypen inkongruent"
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 msgid "Device I/O error"
 msgstr "E/A-Gerätefehler"
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 msgid "File already exists"
 msgstr "Datei existiert bereits"
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 msgid "Disk full"
 msgstr "Datenträger voll"
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 msgid "Too many files"
 msgstr "Zu viele Dateien"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 msgid "Permission denied"
 msgstr "Keine Berechtigung"
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr "Pfad-/Dateizugriffsfehler"
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 msgid "Path not found"
 msgstr "Pfad nicht gefunden"
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 msgid "Object variable not set"
 msgstr "Objektvariable nicht gesetzt"
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 #, fuzzy
 #| msgid "Object is not initialized.\n"
 msgid "For loop not initialized"
 msgstr "Objekt nicht initialisiert.\n"
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 msgid "Invalid use of Null"
 msgstr "Ungültige Verwendung von Null"
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr "Notwendige temporäre Datei konnte nicht erzeugt werden"
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 msgid "ActiveX component can't create object"
 msgstr "ActiveX-Komponente konnte Objekt nicht erstellen"
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 msgid "Class doesn't support Automation"
 msgstr "Klasse unterstützt keine Automation"
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr "Datei- oder Klassenname nicht gefunden während Automationsablauf"
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 msgid "Object doesn't support named arguments"
 msgstr "Objekt unterstützt keine benannten Argumente"
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 msgid "Object doesn't support current locale setting"
 msgstr "Objekt unterstützt aktuelle Regionseinstellung nicht"
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 msgid "Named argument not found"
 msgstr "Benanntes Argument nicht gefunden"
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr "Falsche Anzahl an Argumenten oder ungültige Merkmalszuweisung"
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 msgid "Specified DLL function not found"
 msgstr "Angegebene DLL-Funktion nicht gefunden"
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr ""
 "Variable verwendet einen in VBScript nicht unterstützten Automationstyp"
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr "Remoteserver existiert nicht oder ist nicht verfügbar"
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 #, fuzzy
 #| msgid "'|' is undefined"
 msgid "Variable is undefined"
 msgstr "'|' nicht definiert"
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr "Ungültige oder unqualifizierte Referenz"
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+#, fuzzy
+#| msgid "Class does not exist.\n"
+msgid "Class not defined"
+msgstr "Klasse existiert nicht.\n"
+
+#: dlls/vbscript/vbscript.rc:71
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected ']'"
+msgstr "';' erwartet"
+
+#: dlls/vbscript/vbscript.rc:75
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'If'"
+msgstr "';' erwartet"
+
+#: dlls/vbscript/vbscript.rc:76
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'To'"
 msgstr "';' erwartet"
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'End'"
 msgstr "'@end' erwartet"
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Function'"
+msgstr "';' erwartet"
+
+#: dlls/vbscript/vbscript.rc:79
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Sub'"
+msgstr "';' erwartet"
+
+#: dlls/vbscript/vbscript.rc:80
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'Then'"
 msgstr "'@end' erwartet"
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'Wend'"
 msgstr "'@end' erwartet"
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Loop'"
 msgstr "';' erwartet"
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Next'"
 msgstr "';' erwartet"
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Case'"
 msgstr "';' erwartet"
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Select'"
+msgstr "';' erwartet"
+
+#: dlls/vbscript/vbscript.rc:86
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected statement"
 msgstr "'@end' erwartet"
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 #, fuzzy
 #| msgid "Expected an operand.\n"
 msgid "Expected end of statement"
 msgstr "Operand erwartet.\n"
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 #, fuzzy
 #| msgid "Unterminated string constant"
 msgid "Expected integer constant"
 msgstr "konstante Zeichenkette nicht terminiert"
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'With'"
+msgstr "';' erwartet"
+
+#: dlls/vbscript/vbscript.rc:90
+#, fuzzy
+#| msgid "Secret too long.\n"
+msgid "Identifier too long"
+msgstr "Secret zu lang.\n"
+
+#: dlls/vbscript/vbscript.rc:92
 #, fuzzy
 #| msgid "Invalid flag number.\n"
 msgid "Invalid number"
 msgstr "Ungültige Flag-Nummer.\n"
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+#, fuzzy
+#| msgid "Invalid use of Null"
+msgid "Invalid use of 'Me' keyword"
+msgstr "Ungültige Verwendung von Null"
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 #, fuzzy
 #| msgid "Invalid printer state.\n"
 msgid "Invalid 'exit' statement"
 msgstr "Ungültiger Druckerzustand.\n"
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 #, fuzzy
 #| msgid "Label redefined"
 msgid "Name redefined"
 msgstr "Label neu definiert"
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 #, fuzzy
 #| msgid "Expected an operator.\n"
 msgid "Expected literal constant"
 msgstr "Operator erwartet.\n"
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'In'"
 msgstr "';' erwartet"
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Class'"
 msgstr "';' erwartet"
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Property'"
+msgstr "';' erwartet"
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Unexpected 'Next'"
 msgstr "';' erwartet"
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr "Microsoft VBScript Übersetzungsfehler"
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr "Microsoft VBScript Laufzeitfehler"
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr "Wine"
 
@@ -14423,7 +14513,7 @@ msgid "Digi&tal"
 msgstr "Digi&tal"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "Schrift&art..."
@@ -15472,6 +15562,41 @@ msgstr "Jedes Zeichen ist %1!u! Pixel breit und %2!u! Pixel hoch"
 msgid "This is a test"
 msgstr "Dies ist ein Test"
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+#, fuzzy
+#| msgid "Error: Could not find process \"%1\".\n"
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr "Fehler: Prozess \"%1\" konnte nicht gefunden werden.\n"
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr "DirectX-Diagnosewerkzeug"
@@ -19155,7 +19280,7 @@ msgstr ""
 msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr "Die Konfiguration von Wine in %s wird aktualisiert, bitte warten..."
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -19167,23 +19292,23 @@ msgstr ""
 "veröffentlicht, weiterverteilen und/oder modifizieren; entweder gemäß "
 "Version 2.1 der Lizenz oder (nach Ihrer Option) jeder späteren Version."
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 msgid "Windows registration information"
 msgstr "Windows-Registrierungsinformationen"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr "&Eigentümer:"
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr "&Organisation:"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr "Anwendungseinstellungen"
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
@@ -19194,55 +19319,55 @@ msgstr ""
 "verknüpft, so dass Sie entweder systemweite oder anwendungsabhängige "
 "Einstellungen in diesen Reitern vornehmen können."
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 msgid "Add appli&cation..."
 msgstr "Anw. &hinzufügen..."
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr "Anw. &entfernen"
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr "&Windows-Version:"
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr "Fenstereinstellungen"
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr "Im Vollbildmodus automatisch die &Maus einfangen"
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr "Erlaube dem Fenstermanager die Fenster zu &dekorieren"
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr "Erlaube dem Fenstermanager die &Fenster zu kontrollieren"
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr "&Emuliere einen virtuellen Bildschirm"
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr "Desktop-&Größe:"
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr "Bildschirmauflösung"
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr "Dies ist ein Beispieltext in 10-Punkt-Tahoma"
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr "DLL-Überschreibungen"
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
@@ -19252,55 +19377,55 @@ msgstr ""
 "Builtin (gestellt durch Wine) oder Native (von Windows oder durch die "
 "Anwendung gestellt)."
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr "&Neue Überschreibung für:"
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr "&Hinzufügen"
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr "Bestehende Über&schreibungen:"
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 msgid "&Edit..."
 msgstr "&Bearbeiten..."
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr "Überschreibung bearbeiten"
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr "Ladereihenfolge"
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr "&Builtin (Wine)"
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr "&Native (Windows)"
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 msgid "Buil&tin then Native"
 msgstr "Buil&tin dann Native"
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr "Nati&ve dann Builtin"
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr "Laufwerksbuchstaben wählen"
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 msgid "Drive configuration"
 msgstr "Laufwerkskonfiguration"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 msgid ""
 "Failed to connect to the mount manager; the drive configuration cannot be "
 "edited."
@@ -19308,121 +19433,121 @@ msgstr ""
 "Fehler beim Verbinden mit dem Mountmanager. Die Laufwerkskonfiguration kann "
 "nicht bearbeitet werden."
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 msgid "A&dd..."
 msgstr "&Hinzufügen..."
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr "&Pfad:"
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 msgid "Show Advan&ced"
 msgstr "&Erweitert anzeigen"
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr "Ge&rät:"
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr "Durch&suchen..."
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr "&Bezeichnung:"
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr "S&erien-Nr.:"
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 msgid "&Show dot files"
 msgstr "D&ot-Dateien anzeigen"
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr "Treiberdiagnose"
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr "Sound &testen"
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr "Standards"
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr "Ausgabegerät:"
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr "Sprachausgabegerät:"
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr "Eingabegerät:"
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr "Spracheingabegerät:"
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 #, fuzzy
 #| msgid "Output device:"
 msgid "MIDI output device:"
 msgstr "Ausgabegerät:"
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 msgid "Speaker configuration"
 msgstr "Lautsprecher-Konfiguration"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr "Lautsprecher:"
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr "Darstellung"
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr "&Thema:"
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 #, fuzzy
 #| msgid "&WinRT app theme:"
 msgid "&WinRT theme:"
 msgstr "&WinRT App-Thema:"
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr "Thema &installieren..."
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr "&Element:"
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr "F&arbe:"
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr "MIME-Typen"
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 #, fuzzy
 #| msgid "Manage file &associations"
 msgid "Manage file and protocol &associations"
 msgstr "Datei&zuordnungen verwalten"
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr "Ordner"
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr "&Verknüpfen mit:"
 
@@ -19503,26 +19628,32 @@ msgid "(System default)"
 msgstr "(Systemstandard)"
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+#, fuzzy
+#| msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr "5.1 Surround"
 
 #: programs/winecfg/winecfg.rc:91
+msgid "5.1 Surround"
+msgstr "5.1 Surround"
+
+#: programs/winecfg/winecfg.rc:92
 msgid "Quadraphonic"
 msgstr "Quadrofon"
 
-#: programs/winecfg/winecfg.rc:92
+#: programs/winecfg/winecfg.rc:93
 msgid "Stereo"
 msgstr "Stereo"
 
-#: programs/winecfg/winecfg.rc:93
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr "Mono"
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 msgid "Light"
 msgstr "Hell"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr "Dunkel"
 
@@ -19642,127 +19773,127 @@ msgstr ""
 "Vergessen Sie nicht, im Reiter 'Laufwerke' ein solches anzulegen, indem Sie "
 "auf 'Hinzufügen' klicken!\n"
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr "Steuerelementhintergrund"
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr "Steuerelementtext"
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr "Menühintergrund"
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr "Menütext"
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr "Bildlaufleiste"
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr "Auswahlhintergrund"
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr "Auswahltext"
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr "Tooltip-Hintergrund"
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr "Tooltip-Text"
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr "Fensterhintergrund"
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr "Fenstertext"
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 msgid "Active Title Bar"
 msgstr "Aktive Titelleiste"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr "Aktiver Titelleistentext"
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr "Inaktive Titelleiste"
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr "Inaktiver Titelleistentext"
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr "Dialogfeldtext"
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr "Anwendungsarbeitsplatz"
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr "Fensterrahmen"
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr "Aktiver Rand"
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr "Inaktiver Rand"
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr "Steuerelementschatten"
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr "Grauer Text"
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr "Steuerelementhervorhebung"
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr "Dunkler Steuerelementschatten"
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr "Steuerelementerhellung"
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr "Alternativer Steuerelementhintergrund"
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr "Aktiv hervorgehobenes Element"
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr "Gradient der aktiven Titelleiste"
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr "Gradient der inaktiven Titelleiste"
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr "Menühervorhebung"
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr "Menüleiste"
 
diff --git a/po/el.po b/po/el.po
index 51318d1d9686..66c71fe242d5 100644
--- a/po/el.po
+++ b/po/el.po
@@ -81,7 +81,7 @@ msgstr ""
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr ""
@@ -118,7 +118,7 @@ msgstr ""
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -221,7 +221,7 @@ msgstr ""
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -711,7 +711,7 @@ msgid "Font St&yle:"
 msgstr "Στυλ Γρ&αμματοσειράς:"
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "&Μέγεθος:"
 
@@ -727,7 +727,7 @@ msgstr ""
 msgid "&Underline"
 msgstr "&Υπογράμμιση"
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "&Χρώμα:"
 
@@ -906,7 +906,7 @@ msgstr "Αριθμός &Αντιγράφων:"
 msgid "C&ollate"
 msgstr ""
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr "Μέγε&θος:"
 
@@ -986,7 +986,7 @@ msgstr "&Περιεχόμενα"
 msgid "Files of type:"
 msgstr "Αρχεία του &τύπου:"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr "Το αρχείο δε βρέθηκε"
 
@@ -2430,7 +2430,7 @@ msgid "&File name:"
 msgstr "&Περιεχόμενα"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr ""
 
@@ -3767,11 +3767,19 @@ msgstr ""
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr ""
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr ""
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr ""
 
@@ -3907,13 +3915,13 @@ msgstr ""
 msgid "Subscript out of range"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 #, fuzzy
 #| msgid "Out of paper; "
 msgid "Out of stack space"
 msgstr "Τέλος χαρτιού, "
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr ""
 
@@ -3921,23 +3929,23 @@ msgstr ""
 msgid "Automation server can't create object"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 msgid "Object not a collection"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr ""
 
@@ -3945,28 +3953,28 @@ msgstr ""
 msgid "Expected ';'"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 msgid "Expected '='"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 #, fuzzy
 msgid "Invalid character"
 msgstr "Μη έγγυρος(οι) χαρακτήρας(ες) στο μονοπάτι.\n"
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr ""
 
@@ -4011,7 +4019,7 @@ msgstr ""
 msgid "Microsoft JScript runtime error"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 #, fuzzy
 msgid "Unknown runtime error"
 msgstr "&Περιεχόμενα"
@@ -4036,7 +4044,7 @@ msgstr ""
 msgid "Object expected"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr ""
 
@@ -4246,11 +4254,11 @@ msgstr "Το αρχείο δε βρέθηκε.\n"
 msgid "Path not found.\n"
 msgstr "Το αρχείο δε βρέθηκε.\n"
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr ""
 
@@ -5636,7 +5644,7 @@ msgstr "Επιλογές.\n"
 msgid "File has a user-mapped section.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr ""
 
@@ -7274,78 +7282,82 @@ msgid "This network connection does not exist.\n"
 msgstr "Το αρχείο δεν υπάρχει.\n"
 
 #: dlls/kernelbase/winerror.mc:3750
+msgid "File or directory is not a reparse point.\n"
+msgstr ""
+
+#: dlls/kernelbase/winerror.mc:3755
 #, fuzzy
 msgid "Call interrupted.\n"
 msgstr "Άνοιγμα Αρχείου.\n"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 #, fuzzy
 msgid "Invalid file handle.\n"
 msgstr "Μη έγγυρος(οι) χαρακτήρας(ες) στο μονοπάτι.\n"
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 #, fuzzy
 msgid "Invalid pointer address.\n"
 msgstr "Μη έγγυρος(οι) χαρακτήρας(ες) στο μονοπάτι.\n"
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 #, fuzzy
 msgid "Invalid argument.\n"
 msgstr "Μη έγγυρος(οι) χαρακτήρας(ες) στο μονοπάτι.\n"
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 #, fuzzy
 msgid "Connection reset by peer.\n"
 msgstr "ΜΗ διαθέσιμος; .\n"
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 #, fuzzy
 msgid "Host not found.\n"
 msgstr "Το αρχείο δε βρέθηκε.\n"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 #, fuzzy
 msgid "Nonauthoritative host not found.\n"
 msgstr "Το αρχείο δε βρέθηκε.\n"
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 #, fuzzy
 #| msgid "A printer error occurred."
 msgid "Nonrecoverable error.\n"
 msgstr "Προκλήθηκε σφάλμα εκτυπωτή."
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 #, fuzzy
 msgid "Not implemented.\n"
 msgstr "Το αρχείο δε βρέθηκε"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 #, fuzzy
 msgid "Call failed.\n"
 msgstr "Άνοιγμα Αρχείου.\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 msgid "Unable to find matching object.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 msgid "No Signature found in file.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 #, fuzzy
 msgid "Invalid call.\n"
 msgstr "Μη έγγυρος(οι) χαρακτήρας(ες) στο μονοπάτι.\n"
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 #, fuzzy
 msgid "Resource is not currently available.\n"
 msgstr "ΜΗ διαθέσιμος; .\n"
@@ -8363,7 +8375,7 @@ msgstr ""
 msgid "Hyperlink Information"
 msgstr ""
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr ""
 
@@ -9969,7 +9981,7 @@ msgid "b"
 msgstr ""
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr ""
@@ -10509,7 +10521,7 @@ msgstr ""
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr ""
 
@@ -10601,7 +10613,7 @@ msgstr ""
 msgid "Date deleted"
 msgstr ""
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 #, fuzzy
 msgctxt "display name"
@@ -13019,221 +13031,279 @@ msgstr ""
 msgid "Type mismatch"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 msgid "Device I/O error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 #, fuzzy
 msgid "File already exists"
 msgstr "Το αρχείο δεν υπάρχει.\n"
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 msgid "Disk full"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 #, fuzzy
 msgid "Too many files"
 msgstr "Άνοιγμα Αρχείου"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 msgid "Permission denied"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 #, fuzzy
 msgid "Path not found"
 msgstr "Το αρχείο δε βρέθηκε.\n"
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 msgid "Object variable not set"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 #, fuzzy
 msgid "For loop not initialized"
 msgstr "Το αρχείο δε βρέθηκε.\n"
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 #, fuzzy
 msgid "Invalid use of Null"
 msgstr "Μη έγγυρος(οι) χαρακτήρας(ες) στο μονοπάτι.\n"
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 msgid "ActiveX component can't create object"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 msgid "Class doesn't support Automation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 msgid "Object doesn't support named arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 msgid "Object doesn't support current locale setting"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 #, fuzzy
 msgid "Named argument not found"
 msgstr "Το αρχείο δε βρέθηκε.\n"
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 #, fuzzy
 msgid "Specified DLL function not found"
 msgstr "Το αρχείο δε βρέθηκε.\n"
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 msgid "Variable is undefined"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+#, fuzzy
+msgid "Class not defined"
+msgstr "Το μονοπάτι δεν υπάρχει.\n"
+
+#: dlls/vbscript/vbscript.rc:71
+msgid "Expected ']'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:75
+msgid "Expected 'If'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:76
 msgid "Expected 'To'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 msgid "Expected 'End'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+msgid "Expected 'Function'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:79
+msgid "Expected 'Sub'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:80
 msgid "Expected 'Then'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 msgid "Expected 'Wend'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 msgid "Expected 'Loop'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 msgid "Expected 'Next'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 msgid "Expected 'Case'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+msgid "Expected 'Select'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:86
 msgid "Expected statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 msgid "Expected end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 msgid "Expected integer constant"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+msgid "Expected 'With'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:90
+msgid "Identifier too long"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:92
 #, fuzzy
 msgid "Invalid number"
 msgstr "Μη έγγυρος(οι) χαρακτήρας(ες) στο μονοπάτι"
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+#, fuzzy
+msgid "Invalid use of 'Me' keyword"
+msgstr "Μη έγγυρος(οι) χαρακτήρας(ες) στο μονοπάτι.\n"
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 #, fuzzy
 msgid "Invalid 'exit' statement"
 msgstr "Μη έγγυρος(οι) χαρακτήρας(ες) στο μονοπάτι.\n"
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 msgid "Name redefined"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 msgid "Expected literal constant"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 msgid "Expected 'In'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 msgid "Expected 'Class'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+msgid "Expected 'Property'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 msgid "Unexpected 'Next'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr ""
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr ""
 
@@ -14229,7 +14299,7 @@ msgid "Digi&tal"
 msgstr ""
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr ""
@@ -15026,6 +15096,39 @@ msgstr ""
 msgid "This is a test"
 msgstr ""
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr ""
@@ -18369,7 +18472,7 @@ msgstr ""
 msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -18377,259 +18480,259 @@ msgid ""
 "option) any later version."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 #, fuzzy
 msgid "Windows registration information"
 msgstr "Εκτύπωση"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 #, fuzzy
 msgid "Organi&zation:"
 msgstr "Επιλογές"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 #, fuzzy
 msgid "Application settings"
 msgstr "Επιλογές"
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
 "or per-application settings in those tabs as well."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 #, fuzzy
 msgid "Add appli&cation..."
 msgstr "Επιλογές"
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 #, fuzzy
 msgid "&Remove application"
 msgstr "Επιλογές"
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 #, fuzzy
 msgid "Desktop &size:"
 msgstr "Επιφάνεια Εργασίας"
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
 "application)."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 #, fuzzy
 msgid "&Edit..."
 msgstr "Εκτύπωση"
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 msgid "Buil&tin then Native"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 #, fuzzy
 msgid "Drive configuration"
 msgstr "Επιλογές"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 msgid ""
 "Failed to connect to the mount manager; the drive configuration cannot be "
 "edited."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 msgid "A&dd..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 msgid "Show Advan&ced"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 #, fuzzy
 msgid "&Show dot files"
 msgstr "Λεπτομέρειες"
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 #, fuzzy
 msgid "Defaults"
 msgstr "Προεπιλεγμένος εκτυπωτής; "
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 msgid "MIDI output device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 #, fuzzy
 msgid "Speaker configuration"
 msgstr "Επιλογές"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 msgid "&WinRT theme:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 #, fuzzy
 msgid "Folders"
 msgstr "Κατάλογοι Συστήματος"
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr ""
 
@@ -18714,28 +18817,32 @@ msgid "(System default)"
 msgstr "Κατάλογοι Συστήματος"
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:91
-msgid "Quadraphonic"
+msgid "5.1 Surround"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:92
-msgid "Stereo"
+msgid "Quadraphonic"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:93
+msgid "Stereo"
+msgstr ""
+
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 #, fuzzy
 #| msgid "&Right:"
 msgid "Light"
 msgstr "&Δεξιά:"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr ""
 
@@ -18842,129 +18949,129 @@ msgid ""
 "Remember to click 'Add' in the Drives tab to create one!\n"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 #, fuzzy
 msgid "Controls Text"
 msgstr "&Περιεχόμενα"
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 msgid "Active Title Bar"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 #, fuzzy
 msgid "Application Workspace"
 msgstr "Επιλογές"
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr ""
 
diff --git a/po/en.po b/po/en.po
index 6e5d1f130bed..b36147e6a04b 100644
--- a/po/en.po
+++ b/po/en.po
@@ -81,7 +81,7 @@ msgstr "&Modify..."
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr "&Remove"
@@ -118,7 +118,7 @@ msgstr "Support Information"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -224,7 +224,7 @@ msgstr "&Install"
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -717,7 +717,7 @@ msgid "Font St&yle:"
 msgstr "Font St&yle:"
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "&Size:"
 
@@ -733,7 +733,7 @@ msgstr "Stri&keout"
 msgid "&Underline"
 msgstr "&Underline"
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "&Colour:"
 
@@ -910,7 +910,7 @@ msgstr "Number of &copies:"
 msgid "C&ollate"
 msgstr "C&ollate"
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr "Si&ze:"
 
@@ -988,7 +988,7 @@ msgstr "File name:"
 msgid "Files of type:"
 msgstr "Files of type:"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr "File not found"
 
@@ -2438,7 +2438,7 @@ msgid "&File name:"
 msgstr "&File name:"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr "B&rowse..."
 
@@ -3802,11 +3802,19 @@ msgstr "Indeo5"
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr "Indeo Video Interactive version 5 video codec"
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr "IYUV codec"
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr "Intel Indeo IYUV codec"
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr "Joysticks"
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr "&Disable"
 
@@ -3951,11 +3959,11 @@ msgstr "Invalid procedure call or argument"
 msgid "Subscript out of range"
 msgstr "Subscript out of range"
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 msgid "Out of stack space"
 msgstr "Out of stack space"
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr "Object required"
 
@@ -3963,23 +3971,23 @@ msgstr "Object required"
 msgid "Automation server can't create object"
 msgstr "Automation server can't create object"
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr "Object doesn't support this property or method"
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr "Object doesn't support this action"
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr "Argument not optional"
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 msgid "Object not a collection"
 msgstr "Object not a collection"
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr "Syntax error"
 
@@ -3987,27 +3995,27 @@ msgstr "Syntax error"
 msgid "Expected ';'"
 msgstr "Expected ';'"
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr "Expected '('"
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr "Expected ')'"
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr "Expected identifier"
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 msgid "Expected '='"
 msgstr "Expected '='"
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 msgid "Invalid character"
 msgstr "Invalid character"
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr "Unterminated string constant"
 
@@ -4051,7 +4059,7 @@ msgstr "Microsoft JScript compilation error"
 msgid "Microsoft JScript runtime error"
 msgstr "Microsoft JScript runtime error"
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 msgid "Unknown runtime error"
 msgstr "Unknown runtime error"
 
@@ -4075,7 +4083,7 @@ msgstr "'[object]' is not a date object"
 msgid "Object expected"
 msgstr "Object expected"
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr "Illegal assignment"
 
@@ -4283,11 +4291,11 @@ msgstr "File not found.\n"
 msgid "Path not found.\n"
 msgstr "Path not found.\n"
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr "Too many open files.\n"
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr "Access denied.\n"
 
@@ -5639,7 +5647,7 @@ msgstr "Operation cancelled by user.\n"
 msgid "File has a user-mapped section.\n"
 msgstr "File has a user-mapped section.\n"
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr "Connection refused.\n"
 
@@ -7224,66 +7232,70 @@ msgid "This network connection does not exist.\n"
 msgstr "This network connection does not exist.\n"
 
 #: dlls/kernelbase/winerror.mc:3750
+msgid "File or directory is not a reparse point.\n"
+msgstr "File or directory is not a reparse point.\n"
+
+#: dlls/kernelbase/winerror.mc:3755
 msgid "Call interrupted.\n"
 msgstr "Call interrupted.\n"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 msgid "Invalid file handle.\n"
 msgstr "Invalid file handle.\n"
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 msgid "Invalid pointer address.\n"
 msgstr "Invalid pointer address.\n"
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 msgid "Invalid argument.\n"
 msgstr "Invalid argument.\n"
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr "Cannot assign requested address.\n"
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 msgid "Connection reset by peer.\n"
 msgstr "Connection reset by peer.\n"
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 msgid "Host not found.\n"
 msgstr "Host not found.\n"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 msgid "Nonauthoritative host not found.\n"
 msgstr "Nonauthoritative host not found.\n"
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 msgid "Nonrecoverable error.\n"
 msgstr "Nonrecoverable error.\n"
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr "Name valid, no data record.\n"
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 msgid "Not implemented.\n"
 msgstr "Not implemented.\n"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 msgid "Call failed.\n"
 msgstr "Call failed.\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 msgid "Unable to find matching object.\n"
 msgstr "Unable to find matching object.\n"
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 msgid "No Signature found in file.\n"
 msgstr "No Signature found in file.\n"
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 msgid "Invalid call.\n"
 msgstr "Invalid call.\n"
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 msgid "Resource is not currently available.\n"
 msgstr "Resource is not currently available.\n"
 
@@ -8244,7 +8256,7 @@ msgstr "Hyperlink"
 msgid "Hyperlink Information"
 msgstr "Hyperlink Information"
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr "&Type:"
 
@@ -9830,7 +9842,7 @@ msgid "b"
 msgstr "b"
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr "dpi"
@@ -10372,7 +10384,7 @@ msgstr "&Open:"
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr "&Browse..."
 
@@ -10458,7 +10470,7 @@ msgstr "Original location"
 msgid "Date deleted"
 msgstr "Date deleted"
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -12888,212 +12900,268 @@ msgstr "Division by zero"
 msgid "Type mismatch"
 msgstr "Type mismatch"
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 msgid "Device I/O error"
 msgstr "Device I/O error"
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 msgid "File already exists"
 msgstr "File already exists"
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 msgid "Disk full"
 msgstr "Disk full"
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 msgid "Too many files"
 msgstr "Too many files"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 msgid "Permission denied"
 msgstr "Permission denied"
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr "Path/File access error"
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 msgid "Path not found"
 msgstr "Path not found"
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 msgid "Object variable not set"
 msgstr "Object variable not set"
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 msgid "For loop not initialized"
 msgstr "For loop not initialized"
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 msgid "Invalid use of Null"
 msgstr "Invalid use of Null"
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr "Can't create necessary temporary file"
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 msgid "ActiveX component can't create object"
 msgstr "ActiveX component can't create object"
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 msgid "Class doesn't support Automation"
 msgstr "Class doesn't support Automation"
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr "File name or class name not found during Automation operation"
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 msgid "Object doesn't support named arguments"
 msgstr "Object doesn't support named arguments"
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 msgid "Object doesn't support current locale setting"
 msgstr "Object doesn't support current locale setting"
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 msgid "Named argument not found"
 msgstr "Named argument not found"
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr "Wrong number of arguments or invalid property assignment"
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 msgid "Specified DLL function not found"
 msgstr "Specified DLL function not found"
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr "This key is already associated with an element of this collection"
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr "Variable uses an Automation type not supported in VBScript"
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr "The remote server machine does not exist or is unavailable"
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 msgid "Variable is undefined"
 msgstr "Variable is undefined"
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr "Invalid or unqualified reference"
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+msgid "Class not defined"
+msgstr "Class not defined"
+
+#: dlls/vbscript/vbscript.rc:71
+msgid "Expected ']'"
+msgstr "Expected ']'"
+
+#: dlls/vbscript/vbscript.rc:75
+msgid "Expected 'If'"
+msgstr "Expected 'If'"
+
+#: dlls/vbscript/vbscript.rc:76
 msgid "Expected 'To'"
 msgstr "Expected 'To'"
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 msgid "Expected 'End'"
 msgstr "Expected 'End'"
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+msgid "Expected 'Function'"
+msgstr "Expected 'Function'"
+
+#: dlls/vbscript/vbscript.rc:79
+msgid "Expected 'Sub'"
+msgstr "Expected 'Sub'"
+
+#: dlls/vbscript/vbscript.rc:80
 msgid "Expected 'Then'"
 msgstr "Expected 'Then'"
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 msgid "Expected 'Wend'"
 msgstr "Expected 'Wend'"
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 msgid "Expected 'Loop'"
 msgstr "Expected 'Loop'"
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 msgid "Expected 'Next'"
 msgstr "Expected 'Next'"
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 msgid "Expected 'Case'"
 msgstr "Expected 'Case'"
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+msgid "Expected 'Select'"
+msgstr "Expected 'Select'"
+
+#: dlls/vbscript/vbscript.rc:86
 msgid "Expected statement"
 msgstr "Expected statement"
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 msgid "Expected end of statement"
 msgstr "Expected end of statement"
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 msgid "Expected integer constant"
 msgstr "Expected integer constant"
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr "Expected 'While', 'Until' or end of statement"
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+msgid "Expected 'With'"
+msgstr "Expected 'With'"
+
+#: dlls/vbscript/vbscript.rc:90
+msgid "Identifier too long"
+msgstr "Identifier too long"
+
+#: dlls/vbscript/vbscript.rc:92
 msgid "Invalid number"
 msgstr "Invalid number"
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+msgid "Invalid use of 'Me' keyword"
+msgstr "Invalid use of 'Me' keyword"
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr "'loop' without 'do'"
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 msgid "Invalid 'exit' statement"
 msgstr "Invalid 'exit' statement"
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 msgid "Name redefined"
 msgstr "Name redefined"
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr "Must be first statement on the line"
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr "Cannot use parentheses when calling a Sub"
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 msgid "Expected literal constant"
 msgstr "Expected literal constant"
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 msgid "Expected 'In'"
 msgstr "Expected 'In'"
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 msgid "Expected 'Class'"
 msgstr "Expected 'Class'"
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr "Must be defined inside a Class"
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr "Expected Let or Set or Get in property declaration"
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+msgid "Expected 'Property'"
+msgstr "Expected 'Property'"
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr "Number of arguments must be consistent across properties specification"
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr "Cannot have multiple default property/method in a Class"
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr "Class initialize or terminate do not have arguments"
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr "Property set or let must have at least one argument"
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 msgid "Unexpected 'Next'"
 msgstr "Unexpected 'Next'"
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr "'Default' specification must also specify 'Public'"
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr "'Default' specification can only be on Property Get"
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr "Microsoft VBScript compilation error"
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr "Microsoft VBScript runtime error"
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr "Wine"
 
@@ -14217,7 +14285,7 @@ msgid "Digi&tal"
 msgstr "Digi&tal"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "&Font..."
@@ -15233,6 +15301,56 @@ msgstr "Each character is %1!u! pixels wide and %2!u! pixels high"
 msgid "This is a test"
 msgstr "This is a test"
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr "Input Error: There is no script file specified.\n"
+
+#: programs/wscript/wscript.rc:48
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr "Input Error: Can not find script file \"%1\".\n"
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr "CScript Error: Loading script \"%1\" failed (%2).\n"
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr "DirectX Diagnostic Tool"
@@ -18862,7 +18980,7 @@ msgstr ""
 msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr "The Wine configuration in %s is being updated, please wait..."
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -18874,23 +18992,23 @@ msgstr ""
 "Free Software Foundation; either version 2.1 of the Licence, or (at your "
 "option) any later version."
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 msgid "Windows registration information"
 msgstr "Windows registration information"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr "&Owner:"
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr "Organi&sation:"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr "Application settings"
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
@@ -18900,55 +19018,55 @@ msgstr ""
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
 "or per-application settings in those tabs as well."
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 msgid "Add appli&cation..."
 msgstr "Add appli&cation..."
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr "&Remove application"
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr "&Windows Version:"
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr "Window settings"
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr "Automatically capture the &mouse in full-screen windows"
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr "Allow the window manager to &decorate the windows"
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr "Allow the &window manager to control the windows"
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr "&Emulate a virtual desktop"
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr "Desktop &size:"
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr "Screen resolution"
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr "This is a sample text using 10 point Tahoma"
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr "DLL overrides"
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
@@ -18958,55 +19076,55 @@ msgstr ""
 "(provided by Wine) or native (taken from Windows or provided by the "
 "application)."
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr "&New override for library:"
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr "A&dd"
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr "Existing &overrides:"
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 msgid "&Edit..."
 msgstr "&Edit..."
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr "Edit Override"
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr "Load order"
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr "&Builtin (Wine)"
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr "&Native (Windows)"
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 msgid "Buil&tin then Native"
 msgstr "Buil&tin then Native"
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr "Nati&ve then Builtin"
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr "Select Drive Letter"
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 msgid "Drive configuration"
 msgstr "Drive configuration"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 msgid ""
 "Failed to connect to the mount manager; the drive configuration cannot be "
 "edited."
@@ -19014,115 +19132,115 @@ msgstr ""
 "Failed to connect to the mount manager; the drive configuration cannot be "
 "edited."
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 msgid "A&dd..."
 msgstr "A&dd..."
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr "&Path:"
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 msgid "Show Advan&ced"
 msgstr "Show Advan&ced"
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr "De&vice:"
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr "Bro&wse..."
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr "&Label:"
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr "S&erial:"
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 msgid "&Show dot files"
 msgstr "&Show dot files"
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr "Driver diagnostics"
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr "&Test Sound"
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr "Defaults"
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr "Output device:"
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr "Voice output device:"
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr "Input device:"
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr "Voice input device:"
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 msgid "MIDI output device:"
 msgstr "MIDI output device:"
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 msgid "Speaker configuration"
 msgstr "Speaker configuration"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr "Speakers:"
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr "Appearance"
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr "&Theme:"
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 msgid "&WinRT theme:"
 msgstr "&WinRT theme:"
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr "&Install theme..."
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr "It&em:"
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr "C&olour:"
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr "MIME types"
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr "Manage file and protocol &associations"
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr "Folders"
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr "&Link to:"
 
@@ -19203,26 +19321,30 @@ msgid "(System default)"
 msgstr "(System default)"
 
 #: programs/winecfg/winecfg.rc:90
+msgid "7.1 Surround"
+msgstr "7.1 Surround"
+
+#: programs/winecfg/winecfg.rc:91
 msgid "5.1 Surround"
 msgstr "5.1 Surround"
 
-#: programs/winecfg/winecfg.rc:91
+#: programs/winecfg/winecfg.rc:92
 msgid "Quadraphonic"
 msgstr "Quadraphonic"
 
-#: programs/winecfg/winecfg.rc:92
+#: programs/winecfg/winecfg.rc:93
 msgid "Stereo"
 msgstr "Stereo"
 
-#: programs/winecfg/winecfg.rc:93
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr "Mono"
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 msgid "Light"
 msgstr "Light"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr "Dark"
 
@@ -19339,127 +19461,127 @@ msgstr ""
 "\n"
 "Remember to click 'Add' in the Drives tab to create one!\n"
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr "Controls Background"
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr "Controls Text"
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr "Menu Background"
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr "Menu Text"
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr "Scrollbar"
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr "Selection Background"
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr "Selection Text"
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr "Tooltip Background"
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr "Tooltip Text"
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr "Window Background"
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr "Window Text"
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 msgid "Active Title Bar"
 msgstr "Active Title Bar"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr "Active Title Text"
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr "Inactive Title Bar"
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr "Inactive Title Text"
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr "Message Box Text"
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr "Application Workspace"
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr "Window Frame"
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr "Active Border"
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr "Inactive Border"
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr "Controls Shadow"
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr "Grey Text"
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr "Controls Highlight"
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr "Controls Dark Shadow"
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr "Controls Light"
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr "Controls Alternate Background"
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr "Hot Tracked Item"
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr "Active Title Bar Gradient"
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr "Inactive Title Bar Gradient"
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr "Menu Highlight"
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr "Menu Bar"
 
diff --git a/po/en_US.po b/po/en_US.po
index dc5f6ea6c2b2..a1e50bc0a38e 100644
--- a/po/en_US.po
+++ b/po/en_US.po
@@ -81,7 +81,7 @@ msgstr "&Modify..."
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr "&Remove"
@@ -118,7 +118,7 @@ msgstr "Support Information"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -224,7 +224,7 @@ msgstr "&Install"
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -717,7 +717,7 @@ msgid "Font St&yle:"
 msgstr "Font St&yle:"
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "&Size:"
 
@@ -733,7 +733,7 @@ msgstr "Stri&keout"
 msgid "&Underline"
 msgstr "&Underline"
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "&Color:"
 
@@ -910,7 +910,7 @@ msgstr "Number of &copies:"
 msgid "C&ollate"
 msgstr "C&ollate"
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr "Si&ze:"
 
@@ -988,7 +988,7 @@ msgstr "File name:"
 msgid "Files of type:"
 msgstr "Files of type:"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr "File not found"
 
@@ -2438,7 +2438,7 @@ msgid "&File name:"
 msgstr "&File name:"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr "B&rowse..."
 
@@ -3802,11 +3802,19 @@ msgstr "Indeo5"
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr "Indeo Video Interactive version 5 video codec"
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr "IYUV codec"
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr "Intel Indeo IYUV codec"
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr "Joysticks"
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr "&Disable"
 
@@ -3951,11 +3959,11 @@ msgstr "Invalid procedure call or argument"
 msgid "Subscript out of range"
 msgstr "Subscript out of range"
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 msgid "Out of stack space"
 msgstr "Out of stack space"
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr "Object required"
 
@@ -3963,23 +3971,23 @@ msgstr "Object required"
 msgid "Automation server can't create object"
 msgstr "Automation server can't create object"
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr "Object doesn't support this property or method"
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr "Object doesn't support this action"
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr "Argument not optional"
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 msgid "Object not a collection"
 msgstr "Object not a collection"
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr "Syntax error"
 
@@ -3987,27 +3995,27 @@ msgstr "Syntax error"
 msgid "Expected ';'"
 msgstr "Expected ';'"
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr "Expected '('"
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr "Expected ')'"
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr "Expected identifier"
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 msgid "Expected '='"
 msgstr "Expected '='"
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 msgid "Invalid character"
 msgstr "Invalid character"
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr "Unterminated string constant"
 
@@ -4051,7 +4059,7 @@ msgstr "Microsoft JScript compilation error"
 msgid "Microsoft JScript runtime error"
 msgstr "Microsoft JScript runtime error"
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 msgid "Unknown runtime error"
 msgstr "Unknown runtime error"
 
@@ -4075,7 +4083,7 @@ msgstr "'[object]' is not a date object"
 msgid "Object expected"
 msgstr "Object expected"
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr "Illegal assignment"
 
@@ -4283,11 +4291,11 @@ msgstr "File not found.\n"
 msgid "Path not found.\n"
 msgstr "Path not found.\n"
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr "Too many open files.\n"
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr "Access denied.\n"
 
@@ -5639,7 +5647,7 @@ msgstr "Operation canceled by user.\n"
 msgid "File has a user-mapped section.\n"
 msgstr "File has a user-mapped section.\n"
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr "Connection refused.\n"
 
@@ -7224,66 +7232,70 @@ msgid "This network connection does not exist.\n"
 msgstr "This network connection does not exist.\n"
 
 #: dlls/kernelbase/winerror.mc:3750
+msgid "File or directory is not a reparse point.\n"
+msgstr "File or directory is not a reparse point.\n"
+
+#: dlls/kernelbase/winerror.mc:3755
 msgid "Call interrupted.\n"
 msgstr "Call interrupted.\n"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 msgid "Invalid file handle.\n"
 msgstr "Invalid file handle.\n"
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 msgid "Invalid pointer address.\n"
 msgstr "Invalid pointer address.\n"
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 msgid "Invalid argument.\n"
 msgstr "Invalid argument.\n"
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr "Cannot assign requested address.\n"
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 msgid "Connection reset by peer.\n"
 msgstr "Connection reset by peer.\n"
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 msgid "Host not found.\n"
 msgstr "Host not found.\n"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 msgid "Nonauthoritative host not found.\n"
 msgstr "Nonauthoritative host not found.\n"
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 msgid "Nonrecoverable error.\n"
 msgstr "Nonrecoverable error.\n"
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr "Name valid, no data record.\n"
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 msgid "Not implemented.\n"
 msgstr "Not implemented.\n"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 msgid "Call failed.\n"
 msgstr "Call failed.\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 msgid "Unable to find matching object.\n"
 msgstr "Unable to find matching object.\n"
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 msgid "No Signature found in file.\n"
 msgstr "No Signature found in file.\n"
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 msgid "Invalid call.\n"
 msgstr "Invalid call.\n"
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 msgid "Resource is not currently available.\n"
 msgstr "Resource is not currently available.\n"
 
@@ -8244,7 +8256,7 @@ msgstr "Hyperlink"
 msgid "Hyperlink Information"
 msgstr "Hyperlink Information"
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr "&Type:"
 
@@ -9830,7 +9842,7 @@ msgid "b"
 msgstr "b"
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr "dpi"
@@ -10372,7 +10384,7 @@ msgstr "&Open:"
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr "&Browse..."
 
@@ -10458,7 +10470,7 @@ msgstr "Original location"
 msgid "Date deleted"
 msgstr "Date deleted"
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -12888,212 +12900,268 @@ msgstr "Division by zero"
 msgid "Type mismatch"
 msgstr "Type mismatch"
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 msgid "Device I/O error"
 msgstr "Device I/O error"
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 msgid "File already exists"
 msgstr "File already exists"
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 msgid "Disk full"
 msgstr "Disk full"
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 msgid "Too many files"
 msgstr "Too many files"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 msgid "Permission denied"
 msgstr "Permission denied"
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr "Path/File access error"
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 msgid "Path not found"
 msgstr "Path not found"
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 msgid "Object variable not set"
 msgstr "Object variable not set"
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 msgid "For loop not initialized"
 msgstr "For loop not initialized"
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 msgid "Invalid use of Null"
 msgstr "Invalid use of Null"
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr "Can't create necessary temporary file"
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 msgid "ActiveX component can't create object"
 msgstr "ActiveX component can't create object"
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 msgid "Class doesn't support Automation"
 msgstr "Class doesn't support Automation"
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr "File name or class name not found during Automation operation"
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 msgid "Object doesn't support named arguments"
 msgstr "Object doesn't support named arguments"
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 msgid "Object doesn't support current locale setting"
 msgstr "Object doesn't support current locale setting"
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 msgid "Named argument not found"
 msgstr "Named argument not found"
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr "Wrong number of arguments or invalid property assignment"
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 msgid "Specified DLL function not found"
 msgstr "Specified DLL function not found"
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr "This key is already associated with an element of this collection"
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr "Variable uses an Automation type not supported in VBScript"
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr "The remote server machine does not exist or is unavailable"
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 msgid "Variable is undefined"
 msgstr "Variable is undefined"
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr "Invalid or unqualified reference"
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+msgid "Class not defined"
+msgstr "Class not defined"
+
+#: dlls/vbscript/vbscript.rc:71
+msgid "Expected ']'"
+msgstr "Expected ']'"
+
+#: dlls/vbscript/vbscript.rc:75
+msgid "Expected 'If'"
+msgstr "Expected 'If'"
+
+#: dlls/vbscript/vbscript.rc:76
 msgid "Expected 'To'"
 msgstr "Expected 'To'"
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 msgid "Expected 'End'"
 msgstr "Expected 'End'"
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+msgid "Expected 'Function'"
+msgstr "Expected 'Function'"
+
+#: dlls/vbscript/vbscript.rc:79
+msgid "Expected 'Sub'"
+msgstr "Expected 'Sub'"
+
+#: dlls/vbscript/vbscript.rc:80
 msgid "Expected 'Then'"
 msgstr "Expected 'Then'"
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 msgid "Expected 'Wend'"
 msgstr "Expected 'Wend'"
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 msgid "Expected 'Loop'"
 msgstr "Expected 'Loop'"
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 msgid "Expected 'Next'"
 msgstr "Expected 'Next'"
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 msgid "Expected 'Case'"
 msgstr "Expected 'Case'"
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+msgid "Expected 'Select'"
+msgstr "Expected 'Select'"
+
+#: dlls/vbscript/vbscript.rc:86
 msgid "Expected statement"
 msgstr "Expected statement"
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 msgid "Expected end of statement"
 msgstr "Expected end of statement"
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 msgid "Expected integer constant"
 msgstr "Expected integer constant"
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr "Expected 'While', 'Until' or end of statement"
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+msgid "Expected 'With'"
+msgstr "Expected 'With'"
+
+#: dlls/vbscript/vbscript.rc:90
+msgid "Identifier too long"
+msgstr "Identifier too long"
+
+#: dlls/vbscript/vbscript.rc:92
 msgid "Invalid number"
 msgstr "Invalid number"
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+msgid "Invalid use of 'Me' keyword"
+msgstr "Invalid use of 'Me' keyword"
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr "'loop' without 'do'"
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 msgid "Invalid 'exit' statement"
 msgstr "Invalid 'exit' statement"
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 msgid "Name redefined"
 msgstr "Name redefined"
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr "Must be first statement on the line"
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr "Cannot use parentheses when calling a Sub"
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 msgid "Expected literal constant"
 msgstr "Expected literal constant"
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 msgid "Expected 'In'"
 msgstr "Expected 'In'"
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 msgid "Expected 'Class'"
 msgstr "Expected 'Class'"
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr "Must be defined inside a Class"
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr "Expected Let or Set or Get in property declaration"
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+msgid "Expected 'Property'"
+msgstr "Expected 'Property'"
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr "Number of arguments must be consistent across properties specification"
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr "Cannot have multiple default property/method in a Class"
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr "Class initialize or terminate do not have arguments"
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr "Property set or let must have at least one argument"
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 msgid "Unexpected 'Next'"
 msgstr "Unexpected 'Next'"
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr "'Default' specification must also specify 'Public'"
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr "'Default' specification can only be on Property Get"
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr "Microsoft VBScript compilation error"
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr "Microsoft VBScript runtime error"
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr "Wine"
 
@@ -14217,7 +14285,7 @@ msgid "Digi&tal"
 msgstr "Digi&tal"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "&Font..."
@@ -15233,6 +15301,56 @@ msgstr "Each character is %1!u! pixels wide and %2!u! pixels high"
 msgid "This is a test"
 msgstr "This is a test"
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr "Input Error: There is no script file specified.\n"
+
+#: programs/wscript/wscript.rc:48
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr "Input Error: Can not find script file \"%1\".\n"
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr "CScript Error: Loading script \"%1\" failed (%2).\n"
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr "DirectX Diagnostic Tool"
@@ -18862,7 +18980,7 @@ msgstr ""
 msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr "The Wine configuration in %s is being updated, please wait..."
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -18874,23 +18992,23 @@ msgstr ""
 "Free Software Foundation; either version 2.1 of the License, or (at your "
 "option) any later version."
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 msgid "Windows registration information"
 msgstr "Windows registration information"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr "&Owner:"
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr "Organi&zation:"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr "Application settings"
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
@@ -18900,55 +19018,55 @@ msgstr ""
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
 "or per-application settings in those tabs as well."
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 msgid "Add appli&cation..."
 msgstr "Add appli&cation..."
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr "&Remove application"
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr "&Windows Version:"
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr "Window settings"
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr "Automatically capture the &mouse in full-screen windows"
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr "Allow the window manager to &decorate the windows"
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr "Allow the &window manager to control the windows"
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr "&Emulate a virtual desktop"
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr "Desktop &size:"
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr "Screen resolution"
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr "This is a sample text using 10 point Tahoma"
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr "DLL overrides"
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
@@ -18958,55 +19076,55 @@ msgstr ""
 "(provided by Wine) or native (taken from Windows or provided by the "
 "application)."
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr "&New override for library:"
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr "A&dd"
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr "Existing &overrides:"
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 msgid "&Edit..."
 msgstr "&Edit..."
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr "Edit Override"
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr "Load order"
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr "&Builtin (Wine)"
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr "&Native (Windows)"
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 msgid "Buil&tin then Native"
 msgstr "Buil&tin then Native"
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr "Nati&ve then Builtin"
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr "Select Drive Letter"
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 msgid "Drive configuration"
 msgstr "Drive configuration"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 msgid ""
 "Failed to connect to the mount manager; the drive configuration cannot be "
 "edited."
@@ -19014,115 +19132,115 @@ msgstr ""
 "Failed to connect to the mount manager; the drive configuration cannot be "
 "edited."
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 msgid "A&dd..."
 msgstr "A&dd..."
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr "&Path:"
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 msgid "Show Advan&ced"
 msgstr "Show Advan&ced"
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr "De&vice:"
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr "Bro&wse..."
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr "&Label:"
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr "S&erial:"
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 msgid "&Show dot files"
 msgstr "&Show dot files"
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr "Driver diagnostics"
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr "&Test Sound"
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr "Defaults"
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr "Output device:"
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr "Voice output device:"
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr "Input device:"
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr "Voice input device:"
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 msgid "MIDI output device:"
 msgstr "MIDI output device:"
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 msgid "Speaker configuration"
 msgstr "Speaker configuration"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr "Speakers:"
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr "Appearance"
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr "&Theme:"
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 msgid "&WinRT theme:"
 msgstr "&WinRT theme:"
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr "&Install theme..."
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr "It&em:"
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr "C&olor:"
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr "MIME types"
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr "Manage file and protocol &associations"
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr "Folders"
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr "&Link to:"
 
@@ -19203,26 +19321,30 @@ msgid "(System default)"
 msgstr "(System default)"
 
 #: programs/winecfg/winecfg.rc:90
+msgid "7.1 Surround"
+msgstr "7.1 Surround"
+
+#: programs/winecfg/winecfg.rc:91
 msgid "5.1 Surround"
 msgstr "5.1 Surround"
 
-#: programs/winecfg/winecfg.rc:91
+#: programs/winecfg/winecfg.rc:92
 msgid "Quadraphonic"
 msgstr "Quadraphonic"
 
-#: programs/winecfg/winecfg.rc:92
+#: programs/winecfg/winecfg.rc:93
 msgid "Stereo"
 msgstr "Stereo"
 
-#: programs/winecfg/winecfg.rc:93
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr "Mono"
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 msgid "Light"
 msgstr "Light"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr "Dark"
 
@@ -19339,127 +19461,127 @@ msgstr ""
 "\n"
 "Remember to click 'Add' in the Drives tab to create one!\n"
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr "Controls Background"
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr "Controls Text"
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr "Menu Background"
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr "Menu Text"
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr "Scrollbar"
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr "Selection Background"
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr "Selection Text"
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr "Tooltip Background"
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr "Tooltip Text"
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr "Window Background"
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr "Window Text"
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 msgid "Active Title Bar"
 msgstr "Active Title Bar"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr "Active Title Text"
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr "Inactive Title Bar"
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr "Inactive Title Text"
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr "Message Box Text"
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr "Application Workspace"
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr "Window Frame"
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr "Active Border"
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr "Inactive Border"
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr "Controls Shadow"
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr "Gray Text"
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr "Controls Highlight"
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr "Controls Dark Shadow"
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr "Controls Light"
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr "Controls Alternate Background"
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr "Hot Tracked Item"
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr "Active Title Bar Gradient"
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr "Inactive Title Bar Gradient"
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr "Menu Highlight"
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr "Menu Bar"
 
diff --git a/po/eo.po b/po/eo.po
index aa53e299fac4..54b3fd9fd5ed 100644
--- a/po/eo.po
+++ b/po/eo.po
@@ -92,7 +92,7 @@ msgstr "&Modifi..."
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr "&Forigi"
@@ -129,7 +129,7 @@ msgstr "Informoj pri Helpo"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -228,7 +228,7 @@ msgstr "&Instali"
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -722,7 +722,7 @@ msgid "Font St&yle:"
 msgstr "Tipara St&ilo:"
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "&Dimensio:"
 
@@ -738,7 +738,7 @@ msgstr "Stre&ko"
 msgid "&Underline"
 msgstr "S&ubstreko"
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "&Koloro:"
 
@@ -917,7 +917,7 @@ msgstr "Nombro da &ekzempleroj:"
 msgid "C&ollate"
 msgstr "Laŭ&kajere"
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr "&Dimensio:"
 
@@ -995,7 +995,7 @@ msgstr "Dosiernomo:"
 msgid "Files of type:"
 msgstr "Dosier&speco:"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr "Dosiero ne estis trovita"
 
@@ -2445,7 +2445,7 @@ msgid "&File name:"
 msgstr "&Dosiernomo:"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr "&Foliumi..."
 
@@ -3770,11 +3770,19 @@ msgstr "Indekso"
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr ""
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr ""
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr "&Malaktivigi"
 
@@ -3931,13 +3939,13 @@ msgstr ""
 msgid "Subscript out of range"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 #, fuzzy
 #| msgid "Out of paper; "
 msgid "Out of stack space"
 msgstr "Elĉerpita papero; "
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr ""
 
@@ -3945,23 +3953,23 @@ msgstr ""
 msgid "Automation server can't create object"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 msgid "Object not a collection"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr ""
 
@@ -3969,29 +3977,29 @@ msgstr ""
 msgid "Expected ';'"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 msgid "Expected '='"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 #, fuzzy
 #| msgid "Invalid parameter.\n"
 msgid "Invalid character"
 msgstr "Nevalida parametro.\n"
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr ""
 
@@ -4035,7 +4043,7 @@ msgstr ""
 msgid "Microsoft JScript runtime error"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 #, fuzzy
 #| msgid "Unknown printer driver."
 msgid "Unknown runtime error"
@@ -4061,7 +4069,7 @@ msgstr ""
 msgid "Object expected"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr ""
 
@@ -4275,11 +4283,11 @@ msgstr "Dosiero ne estis trovita.\n"
 msgid "Path not found.\n"
 msgstr "Mi ne trovis la vojon.\n"
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr ""
 
@@ -5633,7 +5641,7 @@ msgstr "Operacio nuligita de uzanto.\n"
 msgid "File has a user-mapped section.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr "Konekto rifuzita.\n"
 
@@ -7222,88 +7230,92 @@ msgid "This network connection does not exist.\n"
 msgstr "Ejo estas neekzistanta.\n"
 
 #: dlls/kernelbase/winerror.mc:3750
+msgid "File or directory is not a reparse point.\n"
+msgstr ""
+
+#: dlls/kernelbase/winerror.mc:3755
 #, fuzzy
 #| msgid "Call not implemented.\n"
 msgid "Call interrupted.\n"
 msgstr "Ne jam funkcias.\n"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 #, fuzzy
 #| msgid "Invalid monitor handle.\n"
 msgid "Invalid file handle.\n"
 msgstr "Nevalida ekranbloka numero.\n"
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 #, fuzzy
 #| msgid "Invalid printer name.\n"
 msgid "Invalid pointer address.\n"
 msgstr "Nevalida printila nomo.\n"
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 #, fuzzy
 #| msgid "Invalid parameter.\n"
 msgid "Invalid argument.\n"
 msgstr "Nevalida parametro.\n"
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 #, fuzzy
 #| msgid "Connection refused.\n"
 msgid "Connection reset by peer.\n"
 msgstr "Konekto rifuzita.\n"
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 #, fuzzy
 #| msgid "Point not found.\n"
 msgid "Host not found.\n"
 msgstr "Punkto ne troviĝis.\n"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 #, fuzzy
 #| msgid "File not found.\n"
 msgid "Nonauthoritative host not found.\n"
 msgstr "Dosiero ne estis trovita.\n"
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 #, fuzzy
 #| msgid "A printer error occurred."
 msgid "Nonrecoverable error.\n"
 msgstr "Okazis printila eraro."
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 #, fuzzy
 #| msgid "Not implemented"
 msgid "Not implemented.\n"
 msgstr "Ne realigita"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 #, fuzzy
 #| msgid "Creation failed.\n"
 msgid "Call failed.\n"
 msgstr "Kreado malsukcesis.\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 msgid "Unable to find matching object.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 msgid "No Signature found in file.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 #, fuzzy
 #| msgid "Invalid table.\n"
 msgid "Invalid call.\n"
 msgstr "Nevalida tabelo.\n"
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 #, fuzzy
 #| msgid "Name service unavailable.\n"
 msgid "Resource is not currently available.\n"
@@ -8398,7 +8410,7 @@ msgstr ""
 msgid "Hyperlink Information"
 msgstr "Ligilaj informoj"
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr "&Tipo:"
 
@@ -10085,7 +10097,7 @@ msgid "b"
 msgstr ""
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr ""
@@ -10621,7 +10633,7 @@ msgstr "&Malfermi:"
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr "&Foliumi..."
 
@@ -10719,7 +10731,7 @@ msgstr "Komenca loko"
 msgid "Date deleted"
 msgstr "Dato forigita"
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -13655,232 +13667,292 @@ msgstr ""
 msgid "Type mismatch"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 msgid "Device I/O error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 #, fuzzy
 #| msgid "File already exists.\n"
 msgid "File already exists"
 msgstr "Dosiero jam ekzistas.\n"
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 msgid "Disk full"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 #, fuzzy
 #| msgid "Saving failed"
 msgid "Too many files"
 msgstr "Konservi malsukcesis"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 msgid "Permission denied"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 #, fuzzy
 #| msgid "Path not found.\n"
 msgid "Path not found"
 msgstr "Mi ne trovis la vojon.\n"
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 #, fuzzy
 #| msgid "(value not set)"
 msgid "Object variable not set"
 msgstr "(valoro ne elektita)"
 
 # FIXME: Invalid formatting directive
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 #, fuzzy
 msgid "For loop not initialized"
 msgstr "Mi ne trovis la objektan UUID-on %s.\n"
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 #, fuzzy
 #| msgid "Invalid message box style.\n"
 msgid "Invalid use of Null"
 msgstr "Nevalida stilo de la mesaĝa dialogujo.\n"
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 msgid "ActiveX component can't create object"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 msgid "Class doesn't support Automation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 msgid "Object doesn't support named arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 msgid "Object doesn't support current locale setting"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 #, fuzzy
 #| msgid "Element not found.\n"
 msgid "Named argument not found"
 msgstr "Elemento ne estis trovita.\n"
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 #, fuzzy
 #| msgid "Sector not found.\n"
 msgid "Specified DLL function not found"
 msgstr "Sektoro ne estis trovita.\n"
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 msgid "Variable is undefined"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+#, fuzzy
+#| msgid "Class does not exist.\n"
+msgid "Class not defined"
+msgstr "Klaso estas neekzistanta.\n"
+
+#: dlls/vbscript/vbscript.rc:71
+msgid "Expected ']'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:75
+msgid "Expected 'If'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:76
 msgid "Expected 'To'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 msgid "Expected 'End'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+msgid "Expected 'Function'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:79
+msgid "Expected 'Sub'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:80
 msgid "Expected 'Then'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 msgid "Expected 'Wend'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 msgid "Expected 'Loop'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 msgid "Expected 'Next'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 msgid "Expected 'Case'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+msgid "Expected 'Select'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:86
 msgid "Expected statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 msgid "Expected end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 msgid "Expected integer constant"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+msgid "Expected 'With'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:90
+msgid "Identifier too long"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:92
 #, fuzzy
 #| msgid "Invalid number format."
 msgid "Invalid number"
 msgstr "Malĝusta nombra formato."
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+#, fuzzy
+#| msgid "Invalid message box style.\n"
+msgid "Invalid use of 'Me' keyword"
+msgstr "Nevalida stilo de la mesaĝa dialogujo.\n"
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 #, fuzzy
 #| msgid "Invalid printer state.\n"
 msgid "Invalid 'exit' statement"
 msgstr "Nevalida printila stato.\n"
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 msgid "Name redefined"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 msgid "Expected literal constant"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 msgid "Expected 'In'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 msgid "Expected 'Class'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+msgid "Expected 'Property'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 msgid "Unexpected 'Next'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr ""
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr "Wine"
 
@@ -14884,7 +14956,7 @@ msgid "Digi&tal"
 msgstr "&Cifereca"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "&Tiparo..."
@@ -15686,6 +15758,39 @@ msgstr "Tipo estas larĝa %1!u! rastrumerojn kaj alta %2!u! rastrumerojn"
 msgid "This is a test"
 msgstr "Ĉi tiu estas provo"
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr ""
@@ -19129,7 +19234,7 @@ msgstr ""
 msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr "La Wine-agordo en %s aktualiĝas, bonvolu atendi..."
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -19137,23 +19242,23 @@ msgid ""
 "option) any later version."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 msgid "Windows registration information"
 msgstr "Informoj pri vindoza registriĝo"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr "&Estro:"
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr "Organi&zaĵo:"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr "Programa agordo"
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
@@ -19163,242 +19268,242 @@ msgstr ""
 "langeto estas kunligata al la langetoj Bibliotekoj kaj Grafikaĵoj por "
 "permesi, ke vi ŝanĝu agordaĵojn tutsisteme aŭ ĉiuprograme."
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 #, fuzzy
 #| msgid "&Add application..."
 msgid "Add appli&cation..."
 msgstr "&Aldoni programon..."
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr "&Forigi programon"
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr "&Vindoza eldono:"
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr "Fenestra agordo"
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr "Aŭtomate kapti la &muson en tutekranaj fenestroj"
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr "Permesi la fenestroadministrol &ornami la fenestrojn"
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr "Permesi la &fenestroadministrilon regi la fenestrojn"
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr "&Simuli virtualan labortablon"
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr "Labortabla &grando:"
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr "Ekrana distingivo"
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr "Jen ekzempla teksto kun 10-punkta Tahoma"
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr "DLL superregoj"
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
 "application)."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 msgid "&Edit..."
 msgstr "&Redakti..."
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr "&Ena (Wino)"
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr "&Indiĝena (Vindozo)"
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 #, fuzzy
 #| msgid "Bui&ltin then Native"
 msgid "Buil&tin then Native"
 msgstr "&Post ena indiĝena"
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr "&Antaŭ ena indiĝena"
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr "Elekti aparatajn literojn"
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 #, fuzzy
 #| msgid "Wine configuration"
 msgid "Drive configuration"
 msgstr "Wine-agordo"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 msgid ""
 "Failed to connect to the mount manager; the drive configuration cannot be "
 "edited."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 #, fuzzy
 #| msgid "&Add..."
 msgid "A&dd..."
 msgstr "&Aldoni..."
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr "&Vojo:"
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 #, fuzzy
 #| msgid "Show &Advanced"
 msgid "Show Advan&ced"
 msgstr "Montri &Altnivele"
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr "&Aparato:"
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr "&Foliumi..."
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr "&Etikedo:"
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr "&Seria:"
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 #, fuzzy
 #| msgid "Show &dot files"
 msgid "&Show dot files"
 msgstr "Montri &punktajn dosierojn"
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr "&Provo sona"
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr "Defaŭltojn"
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr "&Eliga dosiernomo:"
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr "Ena aparato:"
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 #, fuzzy
 #| msgid "Output device:"
 msgid "MIDI output device:"
 msgstr "&Eliga dosiernomo:"
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 #, fuzzy
 #| msgid "Wine configuration"
 msgid "Speaker configuration"
 msgstr "Wine-agordo"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr "Aspekto"
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr "&Etoso:"
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 #, fuzzy
 #| msgid "&Theme:"
 msgid "&WinRT theme:"
 msgstr "&Etoso:"
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr "&Instali etoson..."
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr "&Koloro:"
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr "Dosierujoj"
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr ""
 
@@ -19481,30 +19586,34 @@ msgid "(System default)"
 msgstr "(Sistema defaŭlta)"
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:91
+msgid "5.1 Surround"
+msgstr ""
+
+#: programs/winecfg/winecfg.rc:92
 #, fuzzy
 #| msgid "Graphics"
 msgid "Quadraphonic"
 msgstr "Grafikaĵoj"
 
-#: programs/winecfg/winecfg.rc:92
+#: programs/winecfg/winecfg.rc:93
 msgid "Stereo"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:93
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 #, fuzzy
 #| msgid "Right"
 msgid "Light"
 msgstr "Dekstre"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr ""
 
@@ -19611,127 +19720,127 @@ msgid ""
 "Remember to click 'Add' in the Drives tab to create one!\n"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr "Fenestraĵa fono"
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr "Fenestraĵa teksto"
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr "Rulumilo"
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr "Elektita teksto"
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr "Fenestra teksto"
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 msgid "Active Title Bar"
 msgstr "Aktiva titolzono"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr "Programa laborspaco"
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr "Fenestra kadro"
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr "Regas ombrojn"
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr "Menuzono"
 
diff --git a/po/es.po b/po/es.po
index 1d1ddf107e34..ae983eb42443 100644
--- a/po/es.po
+++ b/po/es.po
@@ -82,7 +82,7 @@ msgstr "&Modificar..."
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr "E&liminar"
@@ -119,7 +119,7 @@ msgstr "Información de Soporte"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -226,7 +226,7 @@ msgstr "&Instalar"
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -722,7 +722,7 @@ msgid "Font St&yle:"
 msgstr "Est&ilo:"
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "Ta&maño:"
 
@@ -738,7 +738,7 @@ msgstr "&Tachado"
 msgid "&Underline"
 msgstr "&Subrayado"
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "C&olor:"
 
@@ -915,7 +915,7 @@ msgstr "Número de &copias:"
 msgid "C&ollate"
 msgstr "I&ntercalar"
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr "Ta&maño:"
 
@@ -993,7 +993,7 @@ msgstr "Nombre de archivo:"
 msgid "Files of type:"
 msgstr "Tipo de archivo:"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr "Archivo no encontrado"
 
@@ -2458,7 +2458,7 @@ msgid "&File name:"
 msgstr "Nombre de &fichero:"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr "Explo&rar..."
 
@@ -3848,11 +3848,19 @@ msgstr "Índice"
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr "Códec de vídeo Wine Video 1"
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr "Comando de juego"
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr "&Deshabilitar"
 
@@ -4011,11 +4019,11 @@ msgstr "Argumento o llamada a procedimiento no válido"
 msgid "Subscript out of range"
 msgstr "Subíndice fuera de rango"
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 msgid "Out of stack space"
 msgstr "Sin espacio de pila"
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr "Objeto esperado"
 
@@ -4023,25 +4031,25 @@ msgstr "Objeto esperado"
 msgid "Automation server can't create object"
 msgstr "Servidor de automatización no puede crear el objeto"
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr "El objeto no acepta esta propiedad o método"
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr "El objeto no acepta esta acción"
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr "Argumento no opcional"
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 #, fuzzy
 #| msgid "Object Class Violation"
 msgid "Object not a collection"
 msgstr "Violación de clase de objeto"
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr "Error de sintaxis"
 
@@ -4049,27 +4057,27 @@ msgstr "Error de sintaxis"
 msgid "Expected ';'"
 msgstr "Esperado ';'"
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr "Esperado '('"
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr "Esperado ')'"
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr "Identificador esperado"
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 msgid "Expected '='"
 msgstr "Esperado '='"
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 msgid "Invalid character"
 msgstr "Caractere inválido"
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr "Constante de cadena no terminada"
 
@@ -4113,7 +4121,7 @@ msgstr "Error de compilación Microsoft JScript"
 msgid "Microsoft JScript runtime error"
 msgstr "Error de ejecución  Microsoft JScript"
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 msgid "Unknown runtime error"
 msgstr "Error desconocido en tiempo de ejecución"
 
@@ -4139,7 +4147,7 @@ msgstr "'[objeto]' no es un objeto de fecha"
 msgid "Object expected"
 msgstr "Objeto esperado"
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr "Asignación ilegal"
 
@@ -4371,11 +4379,11 @@ msgstr "Archivo no encontrado.\n"
 msgid "Path not found.\n"
 msgstr "Ruta no encontrada.\n"
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr "Demasiados archivos abiertos.\n"
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr "Acceso denegado.\n"
 
@@ -5727,7 +5735,7 @@ msgstr "Operación cancelada por el usuario.\n"
 msgid "File has a user-mapped section.\n"
 msgstr "El fichero tiene una sección mapeada por el usuario.\n"
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr "Conexión rechazada.\n"
 
@@ -7314,81 +7322,87 @@ msgstr "Esta conexión de red no existe.\n"
 
 #: dlls/kernelbase/winerror.mc:3750
 #, fuzzy
+#| msgid "File or directory corrupt.\n"
+msgid "File or directory is not a reparse point.\n"
+msgstr "Fichero o directorio corrompido.\n"
+
+#: dlls/kernelbase/winerror.mc:3755
+#, fuzzy
 #| msgid "Invalid at interrupt time.\n"
 msgid "Call interrupted.\n"
 msgstr "Invalido en tiempo de interrupción.\n"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 #, fuzzy
 #| msgid "Invalid handle.\n"
 msgid "Invalid file handle.\n"
 msgstr "Descriptor inválido.\n"
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 #, fuzzy
 #| msgid "Invalid network address.\n"
 msgid "Invalid pointer address.\n"
 msgstr "Dirección de red inválida.\n"
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 #, fuzzy
 #| msgid "Invalid name.\n"
 msgid "Invalid argument.\n"
 msgstr "Nombre inválido.\n"
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 msgid "Connection reset by peer.\n"
 msgstr "Conexión reiniciada.\n"
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 #, fuzzy
 #| msgid "Point not found.\n"
 msgid "Host not found.\n"
 msgstr "Punto no encontrado.\n"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 #, fuzzy
 #| msgid "Attribute is not found.\n"
 msgid "Nonauthoritative host not found.\n"
 msgstr "Atributo no encontrado.\n"
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 #, fuzzy
 #| msgid "Unrecoverable error occurred.\n"
 msgid "Nonrecoverable error.\n"
 msgstr "Ha ocurrido un error irrecuperable.\n"
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 msgid "Not implemented.\n"
 msgstr "No implementado.\n"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 msgid "Call failed.\n"
 msgstr "La llamada ha fallado.\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 #, fuzzy
 #| msgid "Unable to unload media.\n"
 msgid "Unable to find matching object.\n"
 msgstr "No se ha podido expulsar el medio.\n"
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 msgid "No Signature found in file.\n"
 msgstr "No se encontró firma en el archivo.\n"
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 msgid "Invalid call.\n"
 msgstr "Llamada inválida.\n"
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 msgid "Resource is not currently available.\n"
 msgstr "El recurso no esta disponible actualmente.\n"
 
@@ -8517,7 +8531,7 @@ msgstr "Enlace"
 msgid "Hyperlink Information"
 msgstr "Información sobre el enlace"
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr "&Tipo:"
 
@@ -10240,7 +10254,7 @@ msgid "b"
 msgstr "b"
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr "ppp"
@@ -10779,7 +10793,7 @@ msgstr "&Abrir:"
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr "&Examinar..."
 
@@ -10865,7 +10879,7 @@ msgstr "Lugar original"
 msgid "Date deleted"
 msgstr "Fecha de borrado"
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -13590,262 +13604,338 @@ msgstr "Error división por cero.\n"
 msgid "Type mismatch"
 msgstr "El tipo de datos no coincide"
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 msgid "Device I/O error"
 msgstr "Error de dispositivo de E/S"
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 msgid "File already exists"
 msgstr "El archivo existe"
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 msgid "Disk full"
 msgstr "Disco lleno"
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 msgid "Too many files"
 msgstr "Demasiados archivos"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 msgid "Permission denied"
 msgstr "Acceso denegado"
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 msgid "Path not found"
 msgstr "Ruta no encontrada"
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 #, fuzzy
 #| msgid "(value not set)"
 msgid "Object variable not set"
 msgstr "(valor no definido)"
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 #, fuzzy
 #| msgid "Object UUID not found.\n"
 msgid "For loop not initialized"
 msgstr "UUID del objeto no encontrado.\n"
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 msgid "Invalid use of Null"
 msgstr "Uso inválido de Null"
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 #, fuzzy
 #| msgid "Automation server can't create object"
 msgid "ActiveX component can't create object"
 msgstr "Servidor de automatización no puede crear el objeto"
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Class doesn't support Automation"
 msgstr "El objeto no acepta esta acción"
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Object doesn't support named arguments"
 msgstr "El objeto no acepta esta acción"
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Object doesn't support current locale setting"
 msgstr "El objeto no acepta esta acción"
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 msgid "Named argument not found"
 msgstr "Argumento con nombre no encontrado"
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 #, fuzzy
 #| msgid "Specified control was not found in message"
 msgid "Specified DLL function not found"
 msgstr "Control especificado no se ha encontrado en el mensaje"
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 #, fuzzy
 #| msgid "'|' is undefined"
 msgid "Variable is undefined"
 msgstr "'|' no está definido"
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr "Referencia no válida o no calificada"
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+#, fuzzy
+#| msgid "Class does not exist.\n"
+msgid "Class not defined"
+msgstr "La clase no existe.\n"
+
+#: dlls/vbscript/vbscript.rc:71
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected ']'"
+msgstr "Esperado ';'"
+
+#: dlls/vbscript/vbscript.rc:75
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'If'"
+msgstr "Esperado ';'"
+
+#: dlls/vbscript/vbscript.rc:76
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'To'"
 msgstr "Esperado ';'"
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'End'"
 msgstr "Esperado '@end'"
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Function'"
+msgstr "Esperado ';'"
+
+#: dlls/vbscript/vbscript.rc:79
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Sub'"
+msgstr "Esperado ';'"
+
+#: dlls/vbscript/vbscript.rc:80
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'Then'"
 msgstr "Esperado '@end'"
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'Wend'"
 msgstr "Esperado '@end'"
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Loop'"
 msgstr "Esperado ';'"
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Next'"
 msgstr "Esperado ';'"
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Case'"
 msgstr "Esperado ';'"
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Select'"
+msgstr "Esperado ';'"
+
+#: dlls/vbscript/vbscript.rc:86
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected statement"
 msgstr "Esperado '@end'"
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 #, fuzzy
 #| msgid "Expected an operand.\n"
 msgid "Expected end of statement"
 msgstr "Se esperaba un operando.\n"
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 #, fuzzy
 #| msgid "Unterminated string constant"
 msgid "Expected integer constant"
 msgstr "Constante de cadena no terminada"
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'With'"
+msgstr "Esperado ';'"
+
+#: dlls/vbscript/vbscript.rc:90
+#, fuzzy
+#| msgid "Secret too long.\n"
+msgid "Identifier too long"
+msgstr "El secreto es demasiado largo.\n"
+
+#: dlls/vbscript/vbscript.rc:92
 #, fuzzy
 #| msgid "Invalid flag number.\n"
 msgid "Invalid number"
 msgstr "Número de bandera inválido.\n"
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+#, fuzzy
+#| msgid "Invalid use of Null"
+msgid "Invalid use of 'Me' keyword"
+msgstr "Uso inválido de Null"
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 #, fuzzy
 #| msgid "Invalid printer state.\n"
 msgid "Invalid 'exit' statement"
 msgstr "Estado inválido de la impresora.\n"
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 #, fuzzy
 #| msgid "Label redefined"
 msgid "Name redefined"
 msgstr "Etiqueta vuelta a definir"
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 #, fuzzy
 #| msgid "Unexpected network error.\n"
 msgid "Expected literal constant"
 msgstr "Error de red inesperado.\n"
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'In'"
 msgstr "Esperado ';'"
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Class'"
 msgstr "Esperado ';'"
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Property'"
+msgstr "Esperado ';'"
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Unexpected 'Next'"
 msgstr "Esperado ';'"
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr ""
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr "Wine"
 
@@ -15012,7 +15102,7 @@ msgid "Digi&tal"
 msgstr "&Digital"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "&Fuente..."
@@ -16071,6 +16161,41 @@ msgstr "Cada carácter tiene %1!u! píxeles de ancho por %2!u! píxeles de alto"
 msgid "This is a test"
 msgstr "Esto es una prueba"
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+#, fuzzy
+#| msgid "Error: Could not find process \"%1\".\n"
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr "Error: No se pudo encontrar el proceso \"%1\".\n"
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr "Utilidad de Diagnóstico de DirectX"
@@ -19536,7 +19661,7 @@ msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr ""
 "La configuración de Wine en %s está siendo actualizada, por favor espere..."
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -19548,23 +19673,23 @@ msgstr ""
 "Software Foundation; bajo la versión 2.1 de la licencia, o (a tu discreción) "
 "cualquier versión posterior."
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 msgid "Windows registration information"
 msgstr "Información de registro de Windows"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr "&Propietario:"
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr "&Organización:"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr "Configuración de las aplicaciones"
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
@@ -19574,55 +19699,55 @@ msgstr ""
 "pestaña está enlazada a las pestañas de Librerías y Gráficos para permitirte "
 "cambiar la configuración global o la configuración por aplicación."
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 msgid "Add appli&cation..."
 msgstr "&Añadir aplicación..."
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr "&Eliminar aplicación"
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr "&Versión a imitar:"
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr "Configuración de las ventanas"
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr "Capturar el &ratón automáticamente en pantalla completa"
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr "Permitir que el gestor de ventanas &decore las ventanas"
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr "Permitir que el gestor de ventanas &controle las ventanas"
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr "&Emular un escritorio virtual"
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr "Di&mensiones:"
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr "Resolución"
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr "Esto es un texto de ejemplo usando Tahoma de 10 puntos"
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr "Sustitución de DLLs"
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
@@ -19632,57 +19757,57 @@ msgstr ""
 "interna (proporcionada por Wine) o bien nativa (obtenida de Windows o "
 "proporcionada por la aplicación)."
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr "&Nueva sustitución de librería:"
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr "Aña&dir"
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr "&Sustituciones existentes:"
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 msgid "&Edit..."
 msgstr "&Editar..."
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr "Modificar sustitución"
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr "Orden de carga"
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr "&Interna (Wine)"
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr "&Nativa (Windows)"
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 #, fuzzy
 #| msgid "Bui&ltin then Native"
 msgid "Buil&tin then Native"
 msgstr "I&nterna y luego nativa"
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr "Nati&va y luego interna"
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr "Seleccionar letra de la unidad"
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 msgid "Drive configuration"
 msgstr "Configuración de Unidades"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 msgid ""
 "Failed to connect to the mount manager; the drive configuration cannot be "
 "edited."
@@ -19690,119 +19815,119 @@ msgstr ""
 "Falló en la conexión al gestor de montaje, la configuración de unidades no "
 "se ha podido editar."
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 msgid "A&dd..."
 msgstr "Aña&dir..."
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr "&Ruta:"
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 msgid "Show Advan&ced"
 msgstr "Mostrar &avanzado"
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr "Dispositi&vo:"
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr "E&xaminar..."
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr "Eti&queta:"
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr "&Nº serie:"
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 msgid "&Show dot files"
 msgstr "Mostrar archivo&s dot"
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr "Diagnósticos del controlador"
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr "Probar &sonido"
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr "Configuraciones por defecto"
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr "Dispositivo de salida:"
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr "Dispositivo de salida de voz:"
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr "Dispositivo de entrada:"
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr "Dispositivo de entrada de voz:"
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 #, fuzzy
 #| msgid "Output device:"
 msgid "MIDI output device:"
 msgstr "Dispositivo de salida:"
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 msgid "Speaker configuration"
 msgstr "Configuración de Altavoces"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr "Altavoces:"
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr "Apariencia"
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr "&Tema:"
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 #, fuzzy
 #| msgid "&Theme:"
 msgid "&WinRT theme:"
 msgstr "&Tema:"
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr "&Instalar tema..."
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr "&Elemento:"
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr "C&olor:"
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr "Carpeta"
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr "E&nlace a:"
 
@@ -19883,28 +20008,32 @@ msgid "(System default)"
 msgstr "(Predeterminado del sistema)"
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:91
+msgid "5.1 Surround"
+msgstr ""
+
+#: programs/winecfg/winecfg.rc:92
 msgid "Quadraphonic"
 msgstr "Cuadrafónico"
 
-#: programs/winecfg/winecfg.rc:92
+#: programs/winecfg/winecfg.rc:93
 msgid "Stereo"
 msgstr "Estéreo"
 
-#: programs/winecfg/winecfg.rc:93
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr "Mono"
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 #, fuzzy
 #| msgid "Right"
 msgid "Light"
 msgstr "Derecha"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr ""
 
@@ -20022,127 +20151,127 @@ msgstr ""
 "\n"
 "¡Recuerde pulsar 'Añadir' en la pestaña Unidades para crear una!\n"
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr "Fondo del control"
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr "Texto del control"
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr "Fondo del menú"
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr "Texto del menú"
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr "Barra de desplazamiento"
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr "Fondo de la selección"
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr "Texto de la selección"
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr "Fondo del consejo"
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr "Texto del consejo"
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr "Fondo de la ventana"
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr "Texto de la ventana"
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 msgid "Active Title Bar"
 msgstr "Barra de título activa"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr "Texto de barra de título activa"
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr "Barra de título inactiva"
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr "Texto de barra de título inactiva"
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr "Texto de cuadro de diálogo"
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr "Entorno de trabajo de la aplicación"
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr "Recuadro de la ventana"
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr "Borde activo"
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr "Borde inactivo"
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr "Sombra del control"
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr "Texto en gris"
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr "Resaltado del control"
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr "Sombra oscura del control"
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr "Parte iluminada del control"
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr "Fondo alternativo del control"
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr "Elemento resaltado"
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr "Gradiente barra título activa"
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr "Gradiente barra título inactiva"
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr "Resaltado del menú"
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr "Barra de menú"
 
diff --git a/po/fa.po b/po/fa.po
index 7bee03f94e3d..f246e9818851 100644
--- a/po/fa.po
+++ b/po/fa.po
@@ -79,7 +79,7 @@ msgstr ""
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr ""
@@ -117,7 +117,7 @@ msgstr "اطلاعات"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -219,7 +219,7 @@ msgstr ""
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -720,7 +720,7 @@ msgid "Font St&yle:"
 msgstr ""
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr ""
 
@@ -736,7 +736,7 @@ msgstr ""
 msgid "&Underline"
 msgstr ""
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr ""
 
@@ -919,7 +919,7 @@ msgstr ""
 msgid "C&ollate"
 msgstr ""
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr ""
 
@@ -1003,7 +1003,7 @@ msgstr "&پرونده"
 msgid "Files of type:"
 msgstr "&پرونده"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr ""
 
@@ -2456,7 +2456,7 @@ msgid "&File name:"
 msgstr "&پرونده"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr ""
 
@@ -3792,11 +3792,19 @@ msgstr ""
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr ""
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr ""
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr ""
 
@@ -3933,11 +3941,11 @@ msgstr ""
 msgid "Subscript out of range"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 msgid "Out of stack space"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr ""
 
@@ -3945,23 +3953,23 @@ msgstr ""
 msgid "Automation server can't create object"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 msgid "Object not a collection"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr ""
 
@@ -3969,27 +3977,27 @@ msgstr ""
 msgid "Expected ';'"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 msgid "Expected '='"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 msgid "Invalid character"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr ""
 
@@ -4034,7 +4042,7 @@ msgstr ""
 msgid "Microsoft JScript runtime error"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 msgid "Unknown runtime error"
 msgstr ""
 
@@ -4058,7 +4066,7 @@ msgstr ""
 msgid "Object expected"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr ""
 
@@ -4267,11 +4275,11 @@ msgstr ""
 msgid "Path not found.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr ""
 
@@ -5643,7 +5651,7 @@ msgstr ""
 msgid "File has a user-mapped section.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr ""
 
@@ -7244,71 +7252,75 @@ msgid "This network connection does not exist.\n"
 msgstr ""
 
 #: dlls/kernelbase/winerror.mc:3750
+msgid "File or directory is not a reparse point.\n"
+msgstr ""
+
+#: dlls/kernelbase/winerror.mc:3755
 #, fuzzy
 msgid "Call interrupted.\n"
 msgstr "&پرونده.\n"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 msgid "Invalid file handle.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 msgid "Invalid pointer address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 msgid "Invalid argument.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 #, fuzzy
 msgid "Connection reset by peer.\n"
 msgstr "اطلاعات.\n"
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 #, fuzzy
 msgid "Host not found.\n"
 msgstr "ذخیره &به نام..."
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 #, fuzzy
 msgid "Nonauthoritative host not found.\n"
 msgstr "ذخیره &به نام..."
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 msgid "Nonrecoverable error.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 msgid "Not implemented.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 #, fuzzy
 msgid "Call failed.\n"
 msgstr "&پرونده.\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 msgid "Unable to find matching object.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 msgid "No Signature found in file.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 msgid "Invalid call.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 #, fuzzy
 msgid "Resource is not currently available.\n"
 msgstr "اطلاعات.\n"
@@ -8296,7 +8308,7 @@ msgstr ""
 msgid "Hyperlink Information"
 msgstr "اطلاعات"
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr ""
 
@@ -9865,7 +9877,7 @@ msgid "b"
 msgstr ""
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr ""
@@ -10416,7 +10428,7 @@ msgstr "&باز‌کردن...\tCtrl+O"
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr ""
 
@@ -10508,7 +10520,7 @@ msgstr ""
 msgid "Date deleted"
 msgstr "&حذف\tDel"
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -13182,215 +13194,271 @@ msgstr ""
 msgid "Type mismatch"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 msgid "Device I/O error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 msgid "File already exists"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 msgid "Disk full"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 #, fuzzy
 msgid "Too many files"
 msgstr "&پرونده"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 msgid "Permission denied"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 #, fuzzy
 msgid "Path not found"
 msgstr "ذخیره &به نام..."
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 msgid "Object variable not set"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 msgid "For loop not initialized"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 msgid "Invalid use of Null"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 msgid "ActiveX component can't create object"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 msgid "Class doesn't support Automation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 msgid "Object doesn't support named arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 msgid "Object doesn't support current locale setting"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 #, fuzzy
 msgid "Named argument not found"
 msgstr "'%s' پیدا نشد."
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 msgid "Specified DLL function not found"
 msgstr ""
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 msgid "Variable is undefined"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+msgid "Class not defined"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:71
+msgid "Expected ']'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:75
+msgid "Expected 'If'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:76
 msgid "Expected 'To'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 msgid "Expected 'End'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+msgid "Expected 'Function'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:79
+msgid "Expected 'Sub'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:80
 msgid "Expected 'Then'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 msgid "Expected 'Wend'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 msgid "Expected 'Loop'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 msgid "Expected 'Next'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 msgid "Expected 'Case'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+msgid "Expected 'Select'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:86
 msgid "Expected statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 msgid "Expected end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 msgid "Expected integer constant"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+msgid "Expected 'With'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:90
+msgid "Identifier too long"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:92
 msgid "Invalid number"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+msgid "Invalid use of 'Me' keyword"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 msgid "Invalid 'exit' statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 msgid "Name redefined"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 msgid "Expected literal constant"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 msgid "Expected 'In'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 msgid "Expected 'Class'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+msgid "Expected 'Property'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 msgid "Unexpected 'Next'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr ""
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr ""
 
@@ -14385,7 +14453,7 @@ msgid "Digi&tal"
 msgstr ""
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "&قلم‌ها..."
@@ -15183,6 +15251,39 @@ msgstr ""
 msgid "This is a test"
 msgstr ""
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr ""
@@ -18550,7 +18651,7 @@ msgstr ""
 msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -18558,260 +18659,260 @@ msgid ""
 "option) any later version."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 #, fuzzy
 msgid "Windows registration information"
 msgstr "اطلاعات"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 #, fuzzy
 msgid "Organi&zation:"
 msgstr "اطلاعات"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
 "or per-application settings in those tabs as well."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 msgid "Add appli&cation..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 #, fuzzy
 msgid "DLL overrides"
 msgstr "&ویرایش"
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
 "application)."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 #, fuzzy
 msgid "&Edit..."
 msgstr "&ویرایش"
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 #, fuzzy
 msgid "Edit Override"
 msgstr "&ویرایش"
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 #, fuzzy
 msgid "&Builtin (Wine)"
 msgstr "&درباره نت‌پد"
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 #, fuzzy
 msgid "&Native (Windows)"
 msgstr "ذخیره &به نام..."
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 msgid "Buil&tin then Native"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 #, fuzzy
 msgid "Select Drive Letter"
 msgstr "انتخاب &همه\tCtrl+A"
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 #, fuzzy
 msgid "Drive configuration"
 msgstr "اطلاعات"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 msgid ""
 "Failed to connect to the mount manager; the drive configuration cannot be "
 "edited."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 msgid "A&dd..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 msgid "Show Advan&ced"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 msgid "&Show dot files"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 #, fuzzy
 msgid "Defaults"
 msgstr "صفحه &p"
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 #, fuzzy
 msgid "Output device:"
 msgstr "&پرونده"
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 #, fuzzy
 msgid "MIDI output device:"
 msgstr "&پرونده"
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 #, fuzzy
 msgid "Speaker configuration"
 msgstr "اطلاعات"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 msgid "&WinRT theme:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr ""
 
@@ -18895,28 +18996,32 @@ msgid "(System default)"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:91
-msgid "Quadraphonic"
+msgid "5.1 Surround"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:92
-msgid "Stereo"
+msgid "Quadraphonic"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:93
+msgid "Stereo"
+msgstr ""
+
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 #, fuzzy
 #| msgid "&Right:"
 msgid "Light"
 msgstr "&راست:"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr ""
 
@@ -19021,134 +19126,134 @@ msgid ""
 "Remember to click 'Add' in the Drives tab to create one!\n"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 #, fuzzy
 msgid "Controls Background"
 msgstr "ذخیره &به نام..."
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 #, fuzzy
 msgid "Controls Text"
 msgstr "&محتویات"
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 #, fuzzy
 msgid "Menu Background"
 msgstr "ذخیره &به نام..."
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 #, fuzzy
 msgid "Selection Background"
 msgstr "ذخیره &به نام..."
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 #, fuzzy
 msgid "Selection Text"
 msgstr "انتخاب &همه\tCtrl+A"
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 #, fuzzy
 msgid "Tooltip Background"
 msgstr "ذخیره &به نام..."
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 #, fuzzy
 msgid "Window Background"
 msgstr "ذخیره &به نام..."
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 msgid "Active Title Bar"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr ""
 
diff --git a/po/fi.po b/po/fi.po
index e07faee3a341..47adc2838746 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -80,7 +80,7 @@ msgstr "&Muokkaa..."
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr "&Poista"
@@ -117,7 +117,7 @@ msgstr "Tukitietoja"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -222,7 +222,7 @@ msgstr "&Asenna"
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -715,7 +715,7 @@ msgid "Font St&yle:"
 msgstr "Fontin t&yyli:"
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "&Koko:"
 
@@ -731,7 +731,7 @@ msgstr "Yli&viivaus"
 msgid "&Underline"
 msgstr "A&lleviivaus"
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "&Väri:"
 
@@ -908,7 +908,7 @@ msgstr "Kopioiden &määrä:"
 msgid "C&ollate"
 msgstr "&Kokoa"
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr "&Koko:"
 
@@ -986,7 +986,7 @@ msgstr "Tiedosto:"
 msgid "Files of type:"
 msgstr "Tyyppi:"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr "Tiedostoa ei löydy"
 
@@ -2435,7 +2435,7 @@ msgid "&File name:"
 msgstr "&Tiedostonimi:"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr "&Selaa..."
 
@@ -3799,11 +3799,19 @@ msgstr "Indeo5"
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr "Indeo Video Interactive versio 5 -videokoodekki"
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr "Joystickit"
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr "&Poista käytöstä"
 
@@ -3948,11 +3956,11 @@ msgstr "Virheellinen proseduurikutsu tai argumentti"
 msgid "Subscript out of range"
 msgstr "Indeksi alueen ulkopuolella"
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 msgid "Out of stack space"
 msgstr "Pinosta loppui tila"
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr "Vaaditaan objekti"
 
@@ -3960,23 +3968,23 @@ msgstr "Vaaditaan objekti"
 msgid "Automation server can't create object"
 msgstr "Automaatiopalvelin ei voi luoda objektia"
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr "Objekti ei tue tätä ominaisuutta tai metodia"
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr "Objekti ei tue tätä toimintoa"
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr "Argumentti ei ole valinnainen"
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 msgid "Object not a collection"
 msgstr "Objekti ei ole kokoelma"
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr "Syntaksivirhe"
 
@@ -3984,27 +3992,27 @@ msgstr "Syntaksivirhe"
 msgid "Expected ';'"
 msgstr "Odotettiin merkkiä ';'"
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr "Odotettiin merkkiä '('"
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr "Odotettiin merkkiä ')'"
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr "Odotettiin tunnistetta"
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 msgid "Expected '='"
 msgstr "Odotettiin merkkiä '='"
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 msgid "Invalid character"
 msgstr "Virheellinen merkki"
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr "Päättymätön merkkijonovakio"
 
@@ -4048,7 +4056,7 @@ msgstr "Microsoft JScript -käännösvirhe"
 msgid "Microsoft JScript runtime error"
 msgstr "Microsoft JScript -suoritusvirhe"
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 msgid "Unknown runtime error"
 msgstr "Tuntematon ajonaikainen virhe"
 
@@ -4072,7 +4080,7 @@ msgstr "'[objekti]' ei ole päivämääräobjekti"
 msgid "Object expected"
 msgstr "Odotettiin objektia"
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr "Virheellinen sijoitus"
 
@@ -4279,11 +4287,11 @@ msgstr "Tiedostoa ei löydy.\n"
 msgid "Path not found.\n"
 msgstr "Polkua ei löydy.\n"
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr "Liian monta avointa tiedostoa.\n"
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr "Pääsy estetty.\n"
 
@@ -5635,7 +5643,7 @@ msgstr "Käyttäjän keskeyttämä.\n"
 msgid "File has a user-mapped section.\n"
 msgstr "Tiedoston osa on kuvattu muistiin.\n"
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr "Yhteys estetty.\n"
 
@@ -7220,68 +7228,74 @@ msgid "This network connection does not exist.\n"
 msgstr "Tätä verkkoyhteyttä ei ole.\n"
 
 #: dlls/kernelbase/winerror.mc:3750
+#, fuzzy
+#| msgid "File or directory corrupt.\n"
+msgid "File or directory is not a reparse point.\n"
+msgstr "Tiedosto tai hakemisto vioittunut.\n"
+
+#: dlls/kernelbase/winerror.mc:3755
 msgid "Call interrupted.\n"
 msgstr "Kutsu keskeytetty.\n"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 msgid "Invalid file handle.\n"
 msgstr "Tiedoston kahva ei kelpaa.\n"
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 msgid "Invalid pointer address.\n"
 msgstr "Osoittimen osoite ei kelpaa.\n"
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 msgid "Invalid argument.\n"
 msgstr "Argumentti ei kelpaa.\n"
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr "Annettua osoitetta ei voi asettaa.\n"
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 msgid "Connection reset by peer.\n"
 msgstr "Vastapuoli nollasi yhteyden.\n"
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 msgid "Host not found.\n"
 msgstr "Isäntää ei löydy.\n"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 msgid "Nonauthoritative host not found.\n"
 msgstr "Isäntää ei löydy (ei-autoritatiivinen).\n"
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 msgid "Nonrecoverable error.\n"
 msgstr "Peruuttamaton virhe.\n"
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr "Nimi kelpaa, ei tietuetta.\n"
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 msgid "Not implemented.\n"
 msgstr "Ei toteutettu.\n"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 msgid "Call failed.\n"
 msgstr "Kutsu epäonnistui.\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 #, fuzzy
 #| msgid "Unable to unload media.\n"
 msgid "Unable to find matching object.\n"
 msgstr "Mediaa ei voida syöttää ulos.\n"
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 msgid "No Signature found in file.\n"
 msgstr "Tiedostosta ei löytynyt allekirjoitusta.\n"
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 msgid "Invalid call.\n"
 msgstr "Kutsu ei kelpaa.\n"
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 msgid "Resource is not currently available.\n"
 msgstr "Resurssi ei ole nyt saatavilla.\n"
 
@@ -8243,7 +8257,7 @@ msgstr "Hyperlinkki"
 msgid "Hyperlink Information"
 msgstr "Tietoja hyperlinkistä"
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr "&Tyyppi:"
 
@@ -9880,7 +9894,7 @@ msgid "b"
 msgstr "b"
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr "dpi"
@@ -10416,7 +10430,7 @@ msgstr "&Avaa:"
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr "&Selaa..."
 
@@ -10502,7 +10516,7 @@ msgstr "Alkuperäinen sijainti"
 msgid "Date deleted"
 msgstr "Poistoaika"
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -12936,250 +12950,326 @@ msgstr "Virheellinen jako nollalla.\n"
 msgid "Type mismatch"
 msgstr "Tyyppi ei täsmää"
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 msgid "Device I/O error"
 msgstr "Laitteen I/O-virhe"
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 msgid "File already exists"
 msgstr "Tiedosto on jo olemassa"
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 msgid "Disk full"
 msgstr "Levy täynnä"
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 msgid "Too many files"
 msgstr "Liian monta tiedostoa"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 msgid "Permission denied"
 msgstr "Pääsy estetty"
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr "Polun-/tiedostonkäyttövirhe"
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 msgid "Path not found"
 msgstr "Polkua ei löydy"
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 msgid "Object variable not set"
 msgstr "Objektimuuttujaa ei ole asetettu"
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 #, fuzzy
 #| msgid "Object is not initialized.\n"
 msgid "For loop not initialized"
 msgstr "Objektia ei ole alustettu.\n"
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 msgid "Invalid use of Null"
 msgstr "Null-arvon käyttö ei kelpaa"
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr "Tarvittavaa väliaikaistiedostoa ei voida luoda"
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 msgid "ActiveX component can't create object"
 msgstr "ActiveX-komponentti ei voi luoda objektia"
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 msgid "Class doesn't support Automation"
 msgstr "Luokka ei tue automaatiota"
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr "Tiedostonimeä tai luokan nimeä ei löydy automaatio-operaatiossa"
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 msgid "Object doesn't support named arguments"
 msgstr "Objekti ei tue nimettyjä argumentteja"
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 msgid "Object doesn't support current locale setting"
 msgstr "Objekti ei tue nykyistä alueellista asetusta"
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 msgid "Named argument not found"
 msgstr "Nimettyä argumenttia ei löydy"
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr "Väärä määrä argumentteja tai virhe ominaisuuden asettamisessa"
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 msgid "Specified DLL function not found"
 msgstr "Määriteltyä DLL-funktiota ei löydy"
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr "Muuttuja käyttää automaatiotyyppiä, jota VBScript ei tue"
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr "Etäpalvelinta ei ole tai se ei ole tavoitettavissa"
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 #, fuzzy
 #| msgid "'|' is undefined"
 msgid "Variable is undefined"
 msgstr "'|' on määrittelemätön"
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr "Viallinen tai määrittämätön viittaus"
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+#, fuzzy
+#| msgid "Class does not exist.\n"
+msgid "Class not defined"
+msgstr "Luokkaa ei ole.\n"
+
+#: dlls/vbscript/vbscript.rc:71
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected ']'"
+msgstr "Odotettiin merkkiä ';'"
+
+#: dlls/vbscript/vbscript.rc:75
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'If'"
+msgstr "Odotettiin merkkiä ';'"
+
+#: dlls/vbscript/vbscript.rc:76
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'To'"
 msgstr "Odotettiin merkkiä ';'"
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'End'"
 msgstr "Odotettiin sanaa '@end'"
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Function'"
+msgstr "Odotettiin merkkiä ';'"
+
+#: dlls/vbscript/vbscript.rc:79
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Sub'"
+msgstr "Odotettiin merkkiä ';'"
+
+#: dlls/vbscript/vbscript.rc:80
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'Then'"
 msgstr "Odotettiin sanaa '@end'"
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'Wend'"
 msgstr "Odotettiin sanaa '@end'"
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Loop'"
 msgstr "Odotettiin merkkiä ';'"
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Next'"
 msgstr "Odotettiin merkkiä ';'"
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Case'"
 msgstr "Odotettiin merkkiä ';'"
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Select'"
+msgstr "Odotettiin merkkiä ';'"
+
+#: dlls/vbscript/vbscript.rc:86
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected statement"
 msgstr "Odotettiin sanaa '@end'"
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 #, fuzzy
 #| msgid "Expected an operand.\n"
 msgid "Expected end of statement"
 msgstr "Odotettiin operandia.\n"
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 #, fuzzy
 #| msgid "Unterminated string constant"
 msgid "Expected integer constant"
 msgstr "Päättymätön merkkijonovakio"
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'With'"
+msgstr "Odotettiin merkkiä ';'"
+
+#: dlls/vbscript/vbscript.rc:90
+#, fuzzy
+#| msgid "Secret too long.\n"
+msgid "Identifier too long"
+msgstr "Liian pitkä salaisuus.\n"
+
+#: dlls/vbscript/vbscript.rc:92
 #, fuzzy
 #| msgid "Invalid flag number.\n"
 msgid "Invalid number"
 msgstr "Valitsimen numero ei kelpaa.\n"
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+#, fuzzy
+#| msgid "Invalid use of Null"
+msgid "Invalid use of 'Me' keyword"
+msgstr "Null-arvon käyttö ei kelpaa"
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 #, fuzzy
 #| msgid "Invalid printer state.\n"
 msgid "Invalid 'exit' statement"
 msgstr "Tulostimen tila ei kelpaa.\n"
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 #, fuzzy
 #| msgid "Label redefined"
 msgid "Name redefined"
 msgstr "Nimiö määritelty toistamiseen"
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 #, fuzzy
 #| msgid "Expected an operator.\n"
 msgid "Expected literal constant"
 msgstr "Odotettiin operaattoria.\n"
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'In'"
 msgstr "Odotettiin merkkiä ';'"
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Class'"
 msgstr "Odotettiin merkkiä ';'"
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Property'"
+msgstr "Odotettiin merkkiä ';'"
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Unexpected 'Next'"
 msgstr "Odotettiin merkkiä ';'"
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr "Microsoft VBScript -käännösvirhe"
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr "Microsoft VBScript -suoritusvirhe"
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr "Wine"
 
@@ -14291,7 +14381,7 @@ msgid "Digi&tal"
 msgstr "Di&gitaalinen"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "&Fontti..."
@@ -15305,6 +15395,41 @@ msgstr "Jokainen merkki on %1!u! pikseliä leveä ja %2!u! pikseliä korkea"
 msgid "This is a test"
 msgstr "Tämä on testi"
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+#, fuzzy
+#| msgid "Error: Could not find process \"%1\".\n"
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr "Virhe: Prosessia \"%1\" ei löytynyt.\n"
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr "DirectX-diagnostiikkatyökalu"
@@ -18916,7 +19041,7 @@ msgstr ""
 msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr "Winen asetuksia kohteessa %s päivitetään, ole hyvä ja odota..."
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -18927,23 +19052,23 @@ msgstr ""
 "Foundationin GNU Lesser General Public License (LGPL) määrää joko lisenssin "
 "versiossa 2.1 tai (halutessasi) missä tahansa uudemmassa versiossa."
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 msgid "Windows registration information"
 msgstr "Windowsin rekisteröintitiedot"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr "&Omistaja:"
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr "Or&ganisaatio:"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr "Sovellusten asetukset"
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
@@ -18953,55 +19078,55 @@ msgstr ""
 "välilehti toimii yhdessä Kirjastot- ja Grafiikka-välilehtien kanssa sallien "
 "järjestelmän laajuiset ja sovelluskohtaiset asetukset."
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 msgid "Add appli&cation..."
 msgstr "&Lisää sovellus..."
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr "&Poista sovellus"
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr "&Windowsin versio:"
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr "Ikkuna-asetukset"
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr "Kaappaa hiiri kokoruututilassa automaattisesti"
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr "Salli ikkunointiohjelman määrätä ikkunoiden &tyyli"
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr "Salli ikkunointiohjelman &hallita ikkunoita"
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr "&Emuloi virtuaalista työpöytää"
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr "Työpöydän &koko:"
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr "Näytön resoluutio"
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr "Tämä on näyteteksti 10 pisteen Tahoma-fontilla"
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr "DLL-tiedostojen ohitukset"
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
@@ -19011,169 +19136,169 @@ msgstr ""
 "sisäänrakennettua (Winen tarjoamaa) tai natiivia (Windows-asennuksesta "
 "otettua tai sovelluksen tarjoamaa) versiota."
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr "&Uusi ohitus kirjastolle:"
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr "&Lisää"
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr "&Olemassaolevat ohitukset:"
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 msgid "&Edit..."
 msgstr "&Muokkaa..."
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr "Muokkaa ohitusta"
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr "&Latausjärjestys"
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr "&Sisäinen (Wine)"
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr "&Natiivi (Windows)"
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 msgid "Buil&tin then Native"
 msgstr "S&isäinen, sitten natiivi"
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr "Na&tiivi, sitten sisäinen"
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr "Valitse aseman kirjain"
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 msgid "Drive configuration"
 msgstr "Asemien asetukset"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 msgid ""
 "Failed to connect to the mount manager; the drive configuration cannot be "
 "edited."
 msgstr "Levyasemien hallintaan ei saatu yhteyttä. Asemia ei voi muokata."
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 msgid "A&dd..."
 msgstr "&Lisää..."
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr "P&olku:"
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 msgid "Show Advan&ced"
 msgstr "Näytä lisä&asetukset"
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr "La&ite:"
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr "S&elaa..."
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr "&Nimi:"
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr "Sarjanumer&o:"
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 msgid "&Show dot files"
 msgstr "N&äytä pistetiedostot"
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr "Ajurin diagnostiikka"
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr "&Testiääni"
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr "Oletukset"
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr "Ulostulolaite:"
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr "Äänen ulostulolaite:"
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr "Sisääntulolaite:"
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr "Äänen sisääntulolaite:"
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 msgid "MIDI output device:"
 msgstr "MIDI-ulostulolaite:"
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 msgid "Speaker configuration"
 msgstr "Kaiutinasetukset"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr "Kaiuttimet:"
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr "Ulkonäkö"
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr "&Teema:"
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 msgid "&WinRT theme:"
 msgstr "&WinRT-teema:"
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr "&Asenna teema..."
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr "Ko&hta:"
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr "&Väri:"
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr "MIME-tyypit"
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr "&Muokkaa tiedosto- ja protokollasidoksia"
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr "Kansiot"
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr "&Linkitä kohteeseen:"
 
@@ -19254,26 +19379,32 @@ msgid "(System default)"
 msgstr "(Järjestelmän oletus)"
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+#, fuzzy
+#| msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr "5.1 Surround"
 
 #: programs/winecfg/winecfg.rc:91
+msgid "5.1 Surround"
+msgstr "5.1 Surround"
+
+#: programs/winecfg/winecfg.rc:92
 msgid "Quadraphonic"
 msgstr "Neliääninen"
 
-#: programs/winecfg/winecfg.rc:92
+#: programs/winecfg/winecfg.rc:93
 msgid "Stereo"
 msgstr "Stereo"
 
-#: programs/winecfg/winecfg.rc:93
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr "Mono"
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 msgid "Light"
 msgstr "Vaalea"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr "Tumma"
 
@@ -19390,127 +19521,127 @@ msgstr ""
 "\n"
 "Muista painaa Asemat-välilehdellä 'Lisää' ja luoda se!\n"
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr "Kontrollien tausta"
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr "Kontrollien teksti"
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr "Valikon tausta"
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr "Valikon teksti"
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr "Vierityspalkki"
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr "Valintojen tausta"
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr "Valintojen teksti"
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr "Työkaluvihjeen tausta"
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr "Työkaluvihjeen teksti"
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr "Ikkunan tausta"
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr "Ikkunan teksti"
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 msgid "Active Title Bar"
 msgstr "Aktiivinen otsikkopalkki"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr "Aktiivinen otsikkoteksti"
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr "Epäaktiivinen otsikkopalkki"
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr "Epäaktiivinen otsikkoteksti"
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr "Viestilaatikon teksti"
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr "Ohjelmien työtila"
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr "Ikkunanreuna"
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr "Aktiivinen reunus"
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr "Epäaktiivinen reunus"
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr "Kontrollien varjo"
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr "Harmaa teksti"
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr "Kontrollien korostus"
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr "Kontrollien syvä varjo"
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr "Kontrollien valo"
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr "Kontrollien vaihtoehtotausta"
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr "Aktiivinen elementti"
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr "Aktiivisen otsikkopalkin liukuväri"
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr "Epäaktiivisen otsikkopalkin liukuväri"
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr "Valikon korostus"
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr "Valikkopalkki"
 
diff --git a/po/fr.po b/po/fr.po
index 43f4543469ef..3ab24f044c13 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -81,7 +81,7 @@ msgstr "&Modifier..."
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr "&Supprimer"
@@ -118,7 +118,7 @@ msgstr "Informations de support"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -227,7 +227,7 @@ msgstr "&Installer"
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -725,7 +725,7 @@ msgid "Font St&yle:"
 msgstr "St&yle :"
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "T&aille :"
 
@@ -741,7 +741,7 @@ msgstr "&Barré"
 msgid "&Underline"
 msgstr "&Souligné"
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "&Couleur :"
 
@@ -918,7 +918,7 @@ msgstr "Nombre de copies :"
 msgid "C&ollate"
 msgstr "Copies assemblées"
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr "Tai&lle :"
 
@@ -996,7 +996,7 @@ msgstr "Nom du fichier :"
 msgid "Files of type:"
 msgstr "Fichiers du type :"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr "Fichier introuvable"
 
@@ -2462,7 +2462,7 @@ msgid "&File name:"
 msgstr "&Nom du fichier :"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr "Parcou&rir..."
 
@@ -3855,11 +3855,19 @@ msgstr "Index"
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr "Codec vidéo Wine Video 1"
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr "Joysticks"
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr "&Désactiver"
 
@@ -4008,11 +4016,11 @@ msgstr "Appel de procédure ou argument invalide"
 msgid "Subscript out of range"
 msgstr "Indice hors limites"
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 msgid "Out of stack space"
 msgstr "Dépassement de capacité de pile"
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr "Objet requis"
 
@@ -4020,23 +4028,23 @@ msgstr "Objet requis"
 msgid "Automation server can't create object"
 msgstr "Le serveur d'automatisation ne peut créer l'objet"
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr "Cet objet ne supporte pas cette propriété ou méthode"
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr "Cet objet ne supporte pas cette action"
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr "Argument non optionnel"
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 msgid "Object not a collection"
 msgstr "L'objet n'est pas une collection"
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr "Erreur de syntaxe"
 
@@ -4044,27 +4052,27 @@ msgstr "Erreur de syntaxe"
 msgid "Expected ';'"
 msgstr "« ; » attendu"
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr "« ( » attendu"
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr "« ) » attendu"
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr "Identifiant attendu"
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 msgid "Expected '='"
 msgstr "« = » attendu"
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 msgid "Invalid character"
 msgstr "Caractère non valide"
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr "Constante chaîne de caractères non clôturée"
 
@@ -4108,7 +4116,7 @@ msgstr "Erreur de compilation Microsoft JScript"
 msgid "Microsoft JScript runtime error"
 msgstr "Erreur d'exécution de Microsoft JScript"
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 msgid "Unknown runtime error"
 msgstr "Erreur d'exécution inconnue"
 
@@ -4134,7 +4142,7 @@ msgstr "« [objet] » n'est pas un objet de type date"
 msgid "Object expected"
 msgstr "Objet attendu"
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr "Affectation illégale"
 
@@ -4356,11 +4364,11 @@ msgstr "Fichier introuvable.\n"
 msgid "Path not found.\n"
 msgstr "Chemin introuvable.\n"
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr "Trop de fichiers ouverts.\n"
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr "Accès refusé.\n"
 
@@ -5716,7 +5724,7 @@ msgstr "Opération annulée par l'utilisateur.\n"
 msgid "File has a user-mapped section.\n"
 msgstr "Le fichier contient une section mappée par l'utilisateur.\n"
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr "Connexion refusée.\n"
 
@@ -7304,72 +7312,78 @@ msgid "This network connection does not exist.\n"
 msgstr "Cette connexion réseau n'existe pas.\n"
 
 #: dlls/kernelbase/winerror.mc:3750
+#, fuzzy
+#| msgid "File or directory corrupt.\n"
+msgid "File or directory is not a reparse point.\n"
+msgstr "Fichier ou répertoire corrompu.\n"
+
+#: dlls/kernelbase/winerror.mc:3755
 msgid "Call interrupted.\n"
 msgstr "Appel interrompu.\n"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 msgid "Invalid file handle.\n"
 msgstr "Descripteur de fichier non valide.\n"
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 msgid "Invalid pointer address.\n"
 msgstr "Adresse de pointeur non valide.\n"
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 msgid "Invalid argument.\n"
 msgstr "Argument non valide.\n"
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 msgid "Connection reset by peer.\n"
 msgstr "Connexion fermée par le pair.\n"
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 #, fuzzy
 #| msgid "Point not found.\n"
 msgid "Host not found.\n"
 msgstr "Point introuvable.\n"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 #, fuzzy
 #| msgid "Attribute is not found.\n"
 msgid "Nonauthoritative host not found.\n"
 msgstr "L'attribut n'a pas été trouvé.\n"
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 msgid "Nonrecoverable error.\n"
 msgstr "Une erreur irrécupérable s'est produite.\n"
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 msgid "Not implemented.\n"
 msgstr "Non implémenté.\n"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 msgid "Call failed.\n"
 msgstr "Échec de l'appel.\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 #, fuzzy
 #| msgid "Unable to unload media.\n"
 msgid "Unable to find matching object.\n"
 msgstr "Impossible de décharger le support.\n"
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 msgid "No Signature found in file.\n"
 msgstr "Pas de signature trouvée dans le fichier.\n"
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 msgid "Invalid call.\n"
 msgstr "Appel non valide.\n"
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 msgid "Resource is not currently available.\n"
 msgstr "La ressource n'est pas actuellement disponible.\n"
 
@@ -8361,7 +8375,7 @@ msgstr "Hyperlien"
 msgid "Hyperlink Information"
 msgstr "Informations sur l'hyperlien"
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr "&Type :"
 
@@ -10015,7 +10029,7 @@ msgid "b"
 msgstr "b"
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr "ppp"
@@ -10554,7 +10568,7 @@ msgstr "&Ouvrir :"
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr "&Parcourir..."
 
@@ -10640,7 +10654,7 @@ msgstr "Emplacement d'origine"
 msgid "Date deleted"
 msgstr "Date de suppression"
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -13524,255 +13538,331 @@ msgstr "Erreur de division par zéro.\n"
 msgid "Type mismatch"
 msgstr "Discordance de type"
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 msgid "Device I/O error"
 msgstr "Erreur de périphérique d'E/S"
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 msgid "File already exists"
 msgstr "Le fichier existe déjà"
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 msgid "Disk full"
 msgstr "Disque plein"
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 msgid "Too many files"
 msgstr "Trop de fichiers ouverts"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 msgid "Permission denied"
 msgstr "Accès refusé"
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr "Erreur d'accès au chemin / fichier"
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 msgid "Path not found"
 msgstr "Chemin introuvable"
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 #, fuzzy
 #| msgid "(value not set)"
 msgid "Object variable not set"
 msgstr "(valeur non définie)"
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 #, fuzzy
 #| msgid "Object is not initialized.\n"
 msgid "For loop not initialized"
 msgstr "L'objet n'est pas été initialisé.\n"
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 msgid "Invalid use of Null"
 msgstr "Utilisation non valide de Null"
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr "Impossible de créer le fichier temporaire nécessaire"
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 msgid "ActiveX component can't create object"
 msgstr "Le composant ActiveX ne peut créer l'objet"
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 msgid "Class doesn't support Automation"
 msgstr "La classe ne supporte pas l'automatisation"
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr ""
 "Le nom de fichier ou de classe n'a pas été trouvé pendant l'opération "
 "d'automatisation."
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 msgid "Object doesn't support named arguments"
 msgstr "Cet objet ne supporte pas les arguments nommés"
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 msgid "Object doesn't support current locale setting"
 msgstr "Cet objet ne supporte pas les paramètres régionaux actuels"
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 msgid "Named argument not found"
 msgstr "Élément nommé introuvable"
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 msgid "Specified DLL function not found"
 msgstr "La fonction spécifiée n'a pas été trouvée dans la DLL"
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr ""
 "La variable utilise un type d'automatisation non pris en charge dans VBScript"
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr "Le serveur distant soit n'existe pas soit n'est pas disponible"
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 #, fuzzy
 #| msgid "'|' is undefined"
 msgid "Variable is undefined"
 msgstr "« | » n'est pas défini"
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr "Référence non validée ou non qualifiée"
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+#, fuzzy
+#| msgid "Class does not exist.\n"
+msgid "Class not defined"
+msgstr "La classe n'existe pas.\n"
+
+#: dlls/vbscript/vbscript.rc:71
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected ']'"
+msgstr "« ; » attendu"
+
+#: dlls/vbscript/vbscript.rc:75
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'If'"
+msgstr "« ; » attendu"
+
+#: dlls/vbscript/vbscript.rc:76
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'To'"
 msgstr "« ; » attendu"
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'End'"
 msgstr "« @end » attendu"
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Function'"
+msgstr "« ; » attendu"
+
+#: dlls/vbscript/vbscript.rc:79
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Sub'"
+msgstr "« ; » attendu"
+
+#: dlls/vbscript/vbscript.rc:80
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'Then'"
 msgstr "« @end » attendu"
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'Wend'"
 msgstr "« @end » attendu"
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Loop'"
 msgstr "« ; » attendu"
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Next'"
 msgstr "« ; » attendu"
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Case'"
 msgstr "« ; » attendu"
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Select'"
+msgstr "« ; » attendu"
+
+#: dlls/vbscript/vbscript.rc:86
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected statement"
 msgstr "« @end » attendu"
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 #, fuzzy
 #| msgid "Expected an operand.\n"
 msgid "Expected end of statement"
 msgstr "Opérande attendu.\n"
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 #, fuzzy
 #| msgid "Unterminated string constant"
 msgid "Expected integer constant"
 msgstr "Constante chaîne de caractères non clôturée"
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'With'"
+msgstr "« ; » attendu"
+
+#: dlls/vbscript/vbscript.rc:90
+#, fuzzy
+#| msgid "Secret too long.\n"
+msgid "Identifier too long"
+msgstr "Secret trop long.\n"
+
+#: dlls/vbscript/vbscript.rc:92
 #, fuzzy
 #| msgid "Invalid flag number.\n"
 msgid "Invalid number"
 msgstr "Numéro d'indicateur non valide.\n"
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+#, fuzzy
+#| msgid "Invalid use of Null"
+msgid "Invalid use of 'Me' keyword"
+msgstr "Utilisation non valide de Null"
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 #, fuzzy
 #| msgid "Invalid printer state.\n"
 msgid "Invalid 'exit' statement"
 msgstr "État d'imprimante non valide.\n"
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 #, fuzzy
 #| msgid "Label redefined"
 msgid "Name redefined"
 msgstr "Étiquette redéfinie"
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 #, fuzzy
 #| msgid "Expected an operator.\n"
 msgid "Expected literal constant"
 msgstr "Opérateur attendu.\n"
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'In'"
 msgstr "« ; » attendu"
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Class'"
 msgstr "« ; » attendu"
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Property'"
+msgstr "« ; » attendu"
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Unexpected 'Next'"
 msgstr "« ; » attendu"
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr "Erreur de compilation Microsoft VBScript"
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr "Erreur d'exécution Microsoft VBScript"
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr "Wine"
 
@@ -14930,7 +15020,7 @@ msgid "Digi&tal"
 msgstr "&Numérique"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "&Police..."
@@ -15989,6 +16079,41 @@ msgstr "Chaque caractère fait %1!u! pixels de large sur %2!u! pixels de haut"
 msgid "This is a test"
 msgstr "Ceci est un test"
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+#, fuzzy
+#| msgid "Error: Could not find process \"%1\".\n"
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr "Erreur : processus « %1 » introuvable.\n"
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr "Outil de diagnostic DirectX"
@@ -19825,7 +19950,7 @@ msgstr ""
 "La configuration de Wine est en cours de mise à jour dans %s ; veuillez "
 "patienter..."
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -19837,23 +19962,23 @@ msgstr ""
 "que publiée par la Free Software Foundation ; soit la version 2.1 de la "
 "Licence, soit (à votre gré) toute version ultérieure."
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 msgid "Windows registration information"
 msgstr "Informations d'enregistrement de Windows"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr "&Propriétaire :"
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr "&Organisation :"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr "Paramètres des applications"
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
@@ -19864,55 +19989,55 @@ msgstr ""
 "permettre de changer des paramètres globaux ou par application dans ces "
 "onglets."
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 msgid "Add appli&cation..."
 msgstr "Ajouter une appli&cation..."
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr "&Supprimer une application"
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr "Version de &Windows :"
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr "Paramètres des fenêtres"
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr "Capturer automatiquement la &souris dans les fenêtres plein écran"
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr "Permettre au gestionnaire de fenêtres de &décorer les fenêtres"
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr "Permettre au gestionnaire de fenêtres de &contrôler les fenêtres"
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr "É&muler un bureau virtuel"
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr "&Taille du bureau :"
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr "Résolution de l'écran"
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr "Ceci est un exemple utilisant du Tahoma 10 points"
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr "Remplacement de DLL"
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
@@ -19923,55 +20048,55 @@ msgstr ""
 "intégrée (distribuée avec Wine) de chaque bibliothèque partagée (DLL) "
 "utilisée par un programme."
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr "&Nouveau remplacement pour :"
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr "Ajou&ter"
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr "Remplacements existants :"
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 msgid "&Edit..."
 msgstr "&Modifier..."
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr "Éditer le remplacement"
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr "Ordre de chargement"
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr "&intégrée (Wine)"
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr "&native (Windows)"
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 msgid "Buil&tin then Native"
 msgstr "I&ntégrée puis Native"
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr "N&ative puis Intégrée"
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr "Sélectionnez la lettre du lecteur"
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 msgid "Drive configuration"
 msgstr "Configuration des lecteurs"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 msgid ""
 "Failed to connect to the mount manager; the drive configuration cannot be "
 "edited."
@@ -19979,121 +20104,121 @@ msgstr ""
 "N'a pu se connecter au gestionnaire de montage ; la configuration du lecteur "
 "n'a pu être éditée."
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 msgid "A&dd..."
 msgstr "Ajo&uter..."
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr "&Chemin :"
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 msgid "Show Advan&ced"
 msgstr "Afficher les &détails"
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr "Périp&hérique :"
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr "&Parcourir..."
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr "Ét&iquette :"
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr "N° de sé&rie :"
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 msgid "&Show dot files"
 msgstr "&Montrer les fichiers cachés"
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr "Diagnostic de pilotes"
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr "&Tester le son"
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr "Valeurs par défaut"
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr "Périphérique de sortie :"
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr "Périphérique de sortie voix :"
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr "Périphérique d'entrée :"
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr "Périphérique d'entrée voix :"
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 #, fuzzy
 #| msgid "Output device:"
 msgid "MIDI output device:"
 msgstr "Périphérique de sortie :"
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 msgid "Speaker configuration"
 msgstr "Configuration des haut-parleurs"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr "Haut-parleurs :"
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr "Apparence"
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr "&Thème :"
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 #, fuzzy
 #| msgid "&Theme:"
 msgid "&WinRT theme:"
 msgstr "&Thème :"
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr "&Installer un thème..."
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr "Élé&ment :"
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr "Couleu&r :"
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr "Types MIME"
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 #, fuzzy
 #| msgid "Manage file &associations"
 msgid "Manage file and protocol &associations"
 msgstr "&Gérer les associations de fichier"
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr "Dossiers"
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr "&Lier à :"
 
@@ -20174,28 +20299,34 @@ msgid "(System default)"
 msgstr "(Valeur par défaut du système)"
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+#, fuzzy
+#| msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr "Multicanal 5.1"
 
 #: programs/winecfg/winecfg.rc:91
+msgid "5.1 Surround"
+msgstr "Multicanal 5.1"
+
+#: programs/winecfg/winecfg.rc:92
 msgid "Quadraphonic"
 msgstr "Quadraphonique"
 
-#: programs/winecfg/winecfg.rc:92
+#: programs/winecfg/winecfg.rc:93
 msgid "Stereo"
 msgstr "Stéréo"
 
-#: programs/winecfg/winecfg.rc:93
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr "Mono"
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 #, fuzzy
 #| msgid "Right"
 msgid "Light"
 msgstr "Droite"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr ""
 
@@ -20315,127 +20446,127 @@ msgstr ""
 "N'oubliez pas d'en recréer un en cliquant sur le bouton « Ajouter » dans "
 "l'onglet « Lecteurs » !\n"
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr "Contrôle l'arrière-plan"
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr "Contrôle le texte"
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr "Arrière-plan du menu"
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr "Texte du menu"
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr "Barre de défilement"
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr "Arrière-plan de la sélection"
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr "Texte de la sélection"
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr "Arrière-plan de l'infobulle"
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr "Texte de l'infobulle"
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr "Arrière-plan de la fenêtre"
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr "Texte de la fenêtre"
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 msgid "Active Title Bar"
 msgstr "Barre de titre active"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr "Texte de la barre de titre active"
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr "Barre de titre inactive"
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr "Texte de la barre de titre inactive"
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr "Texte des boîtes à messages"
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr "Espace de travail de l'application"
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr "Cadre de la fenêtre"
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr "Bordure active"
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr "Bordure inactive"
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr "Ombre des contrôles"
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr "Texte gris"
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr "Surbrillance des contrôles"
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr "Ombre sombre des contrôles"
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr "Lumière des contrôles"
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr "Arrière-plan alternatif des contrôles"
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr "Élément actif"
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr "Dégradé de la barre de titre active"
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr "Dégradé de la barre de titre inactive"
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr "Surbrillance du menu"
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr "Barre de menu"
 
diff --git a/po/he.po b/po/he.po
index 53e663309bfb..62367a1b8b7f 100644
--- a/po/he.po
+++ b/po/he.po
@@ -93,7 +93,7 @@ msgstr "&שינוי..."
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr "ה&סרה"
@@ -130,7 +130,7 @@ msgstr "פרטי תמיכה"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -235,7 +235,7 @@ msgstr "ה&תקנה"
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -734,7 +734,7 @@ msgid "Font St&yle:"
 msgstr "&סגנון הגופן:"
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "&גודל:"
 
@@ -750,7 +750,7 @@ msgstr "קו חו&צה"
 msgid "&Underline"
 msgstr "קו &תחתי"
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "&צבע:"
 
@@ -931,7 +931,7 @@ msgstr "מספר ה&עותקים:"
 msgid "C&ollate"
 msgstr "&איסוף"
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr "&גודל:"
 
@@ -1011,7 +1011,7 @@ msgstr "&שם הקובץ:"
 msgid "Files of type:"
 msgstr "קבצים מ&סוג:"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr "הקובץ לא נמצא"
 
@@ -2483,7 +2483,7 @@ msgid "&File name:"
 msgstr "&שם הקובץ:"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 #, fuzzy
 msgid "B&rowse..."
 msgstr "&עיון"
@@ -3847,11 +3847,19 @@ msgstr "מפתח"
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr "מקודד הווידאו Video 1 של Wine"
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr ""
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 #, fuzzy
 msgid "&Disable"
 msgstr "Table"
@@ -4004,13 +4012,13 @@ msgstr ""
 msgid "Subscript out of range"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 #, fuzzy
 #| msgid "Out of paper; "
 msgid "Out of stack space"
 msgstr "נגמר הנייר; "
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr ""
 
@@ -4018,23 +4026,23 @@ msgstr ""
 msgid "Automation server can't create object"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 msgid "Object not a collection"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr "שגיאת תחביר"
 
@@ -4042,30 +4050,30 @@ msgstr "שגיאת תחביר"
 msgid "Expected ';'"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 #, fuzzy
 #| msgid "Expected an operand.\n"
 msgid "Expected identifier"
 msgstr "Expected an operand.\n"
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 msgid "Expected '='"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 #, fuzzy
 msgid "Invalid character"
 msgstr "Error: Invalid command line parameters.\n"
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr ""
 
@@ -4112,7 +4120,7 @@ msgstr ""
 msgid "Microsoft JScript runtime error"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 #, fuzzy
 #| msgid "Unknown error"
 msgid "Unknown runtime error"
@@ -4140,7 +4148,7 @@ msgstr ""
 msgid "Object expected"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr ""
 
@@ -4364,12 +4372,12 @@ msgstr "הקובץ לא נמצא.\n"
 msgid "Path not found.\n"
 msgstr "PATH not found.\n"
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 #, fuzzy
 msgid "Too many open files.\n"
 msgstr "יותר מדי קבצים פתוחים.\n"
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 #, fuzzy
 msgid "Access denied.\n"
 msgstr "הגישה נדחתה.\n"
@@ -5832,7 +5840,7 @@ msgstr "תכניות התקנה.\n"
 msgid "File has a user-mapped section.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 #, fuzzy
 msgid "Connection refused.\n"
 msgstr "בהליכי התחברות אל %s.\n"
@@ -7561,79 +7569,84 @@ msgstr "הקובץ אינו קיים.\n"
 
 #: dlls/kernelbase/winerror.mc:3750
 #, fuzzy
+msgid "File or directory is not a reparse point.\n"
+msgstr "Directory &Only.\n"
+
+#: dlls/kernelbase/winerror.mc:3755
+#, fuzzy
 msgid "Call interrupted.\n"
 msgstr "לא מוטמע.\n"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 #, fuzzy
 msgid "Invalid file handle.\n"
 msgstr "אפשרות שגויה.\n"
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 #, fuzzy
 msgid "Invalid pointer address.\n"
 msgstr "Physical address.\n"
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 #, fuzzy
 msgid "Invalid argument.\n"
 msgstr "Error: Invalid key name.\n"
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 #, fuzzy
 msgid "Connection reset by peer.\n"
 msgstr "בהליכי התחברות אל %s.\n"
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 #, fuzzy
 msgid "Host not found.\n"
 msgstr "PATH not found.\n"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 #, fuzzy
 msgid "Nonauthoritative host not found.\n"
 msgstr "הקובץ לא נמצא.\n"
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 #, fuzzy
 #| msgid "A printer error occurred."
 msgid "Nonrecoverable error.\n"
 msgstr "אירעה שגיאת מדפסת."
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 #, fuzzy
 #| msgid "Not implemented"
 msgid "Not implemented.\n"
 msgstr "לא מוטמע"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 #, fuzzy
 msgid "Call failed.\n"
 msgstr "פתיחת קובץ.\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 #, fuzzy
 msgid "Unable to find matching object.\n"
 msgstr "אפשרות שגויה.\n"
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 msgid "No Signature found in file.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 #, fuzzy
 msgid "Invalid call.\n"
 msgstr "אפשרות שגויה.\n"
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 #, fuzzy
 msgid "Resource is not currently available.\n"
 msgstr "הגודל הזמין.\n"
@@ -8697,7 +8710,7 @@ msgstr "קישור"
 msgid "Hyperlink Information"
 msgstr "פרטי הקישור"
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr "&סוג:"
 
@@ -10402,7 +10415,7 @@ msgid "b"
 msgstr "בתים"
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr "נק׳ לאינטש"
@@ -10944,7 +10957,7 @@ msgstr "&פתיחה:"
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr "&עיון..."
 
@@ -11042,7 +11055,7 @@ msgstr "המיקום המקורי"
 msgid "Date deleted"
 msgstr "תאריך המחיקה"
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -14016,253 +14029,325 @@ msgstr ""
 msgid "Type mismatch"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 msgid "Device I/O error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 #, fuzzy
 msgid "File already exists"
 msgstr "הפתחה %s כבר קיימת.\n"
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 msgid "Disk full"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 #, fuzzy
 msgid "Too many files"
 msgstr "יותר מדי קבצים פתוחים.\n"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 #, fuzzy
 msgid "Permission denied"
 msgstr "הגישה נדחתה.\n"
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 #, fuzzy
 msgid "Path not found"
 msgstr "PATH not found.\n"
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 #, fuzzy
 #| msgid "(value not set)"
 msgid "Object variable not set"
 msgstr "(לא הוגדר ערך)"
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 #, fuzzy
 msgid "For loop not initialized"
 msgstr "הקובץ לא נמצא.\n"
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 #, fuzzy
 msgid "Invalid use of Null"
 msgstr "תבנית המספרים שגויה.\n"
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 msgid "ActiveX component can't create object"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 msgid "Class doesn't support Automation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 msgid "Object doesn't support named arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 msgid "Object doesn't support current locale setting"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 #, fuzzy
 msgid "Named argument not found"
 msgstr "PATH not found.\n"
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 #, fuzzy
 #| msgid "Specified control was not found in message"
 msgid "Specified DLL function not found"
 msgstr "הפקד שצוין לא נמצא בהודעה"
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 #, fuzzy
 #| msgid "'|' is undefined"
 msgid "Variable is undefined"
 msgstr "'|' אינו מוגדר"
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+#, fuzzy
+msgid "Class not defined"
+msgstr "הנתיב אינו קיים.\n"
+
+#: dlls/vbscript/vbscript.rc:71
+#, fuzzy
+#| msgid "Expected an operand.\n"
+msgid "Expected ']'"
+msgstr "Expected an operand.\n"
+
+#: dlls/vbscript/vbscript.rc:75
+#, fuzzy
+#| msgid "Expected an operand.\n"
+msgid "Expected 'If'"
+msgstr "Expected an operand.\n"
+
+#: dlls/vbscript/vbscript.rc:76
 #, fuzzy
 #| msgid "Expected an operand.\n"
 msgid "Expected 'To'"
 msgstr "Expected an operand.\n"
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 #, fuzzy
 #| msgid "Expected an operand.\n"
 msgid "Expected 'End'"
 msgstr "Expected an operand.\n"
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+#, fuzzy
+#| msgid "Expected an operand.\n"
+msgid "Expected 'Function'"
+msgstr "Expected an operand.\n"
+
+#: dlls/vbscript/vbscript.rc:79
+#, fuzzy
+#| msgid "Expected an operand.\n"
+msgid "Expected 'Sub'"
+msgstr "Expected an operand.\n"
+
+#: dlls/vbscript/vbscript.rc:80
 #, fuzzy
 #| msgid "Expected an operand.\n"
 msgid "Expected 'Then'"
 msgstr "Expected an operand.\n"
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 #, fuzzy
 #| msgid "Expected an operand.\n"
 msgid "Expected 'Wend'"
 msgstr "Expected an operand.\n"
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 #, fuzzy
 #| msgid "Expected an operand.\n"
 msgid "Expected 'Loop'"
 msgstr "Expected an operand.\n"
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 #, fuzzy
 #| msgid "Expected an operand.\n"
 msgid "Expected 'Next'"
 msgstr "Expected an operand.\n"
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 #, fuzzy
 #| msgid "Expected an operand.\n"
 msgid "Expected 'Case'"
 msgstr "Expected an operand.\n"
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+#, fuzzy
+#| msgid "Expected an operand.\n"
+msgid "Expected 'Select'"
+msgstr "Expected an operand.\n"
+
+#: dlls/vbscript/vbscript.rc:86
 #, fuzzy
 #| msgid "Expected an operand.\n"
 msgid "Expected statement"
 msgstr "Expected an operand.\n"
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 #, fuzzy
 #| msgid "Expected an operand.\n"
 msgid "Expected end of statement"
 msgstr "Expected an operand.\n"
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 #, fuzzy
 #| msgid "Expected an operand.\n"
 msgid "Expected integer constant"
 msgstr "Expected an operand.\n"
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+#, fuzzy
+#| msgid "Expected an operand.\n"
+msgid "Expected 'With'"
+msgstr "Expected an operand.\n"
+
+#: dlls/vbscript/vbscript.rc:90
+msgid "Identifier too long"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:92
 #, fuzzy
 msgid "Invalid number"
 msgstr "תבנית המספרים שגויה.\n"
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+#, fuzzy
+msgid "Invalid use of 'Me' keyword"
+msgstr "תבנית המספרים שגויה.\n"
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 #, fuzzy
 msgid "Invalid 'exit' statement"
 msgstr "תבנית המספרים שגויה.\n"
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 msgid "Name redefined"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 msgid "Expected literal constant"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 #, fuzzy
 #| msgid "Expected an operand.\n"
 msgid "Expected 'In'"
 msgstr "Expected an operand.\n"
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 #, fuzzy
 #| msgid "Expected an operand.\n"
 msgid "Expected 'Class'"
 msgstr "Expected an operand.\n"
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+#, fuzzy
+#| msgid "Expected an operand.\n"
+msgid "Expected 'Property'"
+msgstr "Expected an operand.\n"
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 #, fuzzy
 #| msgid "Expected an operand.\n"
 msgid "Unexpected 'Next'"
 msgstr "Expected an operand.\n"
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr ""
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr "Wine"
 
@@ -15298,7 +15383,7 @@ msgid "Digi&tal"
 msgstr "&דיגיטלי"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "&גופן..."
@@ -16108,6 +16193,41 @@ msgstr "כל תו הוא ברוחב %ld פיקסלים על גובה של %ld פ
 msgid "This is a test"
 msgstr "זוהי בדיקה"
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+#, fuzzy
+#| msgid "Error: Could not find process \"%1\".\n"
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr "Error: Could not find process \"%1\".\n"
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr "כלי ניתוח ה־DirectX"
@@ -19627,7 +19747,7 @@ msgstr ""
 msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr "התצורה של wine שב־%s מתעדכנת, נא להמתין..."
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -19635,278 +19755,278 @@ msgid ""
 "option) any later version."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 #, fuzzy
 msgid "Windows registration information"
 msgstr "&פרטי הגרסה"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 #, fuzzy
 msgid "&Owner:"
 msgstr "בעלים"
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 #, fuzzy
 msgid "Organi&zation:"
 msgstr "הנפשה"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 #, fuzzy
 msgid "Application settings"
 msgstr "יישומים"
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
 "or per-application settings in those tabs as well."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 #, fuzzy
 msgid "Add appli&cation..."
 msgstr "יישום"
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 #, fuzzy
 msgid "&Remove application"
 msgstr "יישום"
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 #, fuzzy
 msgid "&Windows Version:"
 msgstr "גודל החלון"
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 #, fuzzy
 msgid "Window settings"
 msgstr "טקסט בחלון"
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 #, fuzzy
 msgid "Desktop &size:"
 msgstr "שולחן העבודה"
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 #, fuzzy
 msgid "DLL overrides"
 msgstr "תצוגת ע&ריכה"
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
 "application)."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 #, fuzzy
 msgid "&Edit..."
 msgstr "&עריכה"
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 #, fuzzy
 msgid "Edit Override"
 msgstr "תצוגת ע&ריכה"
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 #, fuzzy
 msgid "&Builtin (Wine)"
 msgstr "על &אודות Wine"
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 #, fuzzy
 msgid "&Native (Windows)"
 msgstr "י&ציאה מ־Windows"
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 #, fuzzy
 msgid "Buil&tin then Native"
 msgstr "מובנה, טבעי"
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 #, fuzzy
 msgid "Nati&ve then Builtin"
 msgstr "טבעי, מובנה"
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 #, fuzzy
 msgid "Select Drive Letter"
 msgstr "טקסט הבחירה"
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 #, fuzzy
 msgid "Drive configuration"
 msgstr "תצורת Wine"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 msgid ""
 "Failed to connect to the mount manager; the drive configuration cannot be "
 "edited."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 #, fuzzy
 msgid "A&dd..."
 msgstr "הו&ספה"
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 #, fuzzy
 msgid "&Path:"
 msgstr "ה&נתיב המלא:"
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 #, fuzzy
 msgid "Show Advan&ced"
 msgstr "הצגת אפשרויות מ&תקדמות"
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 #, fuzzy
 msgid "Bro&wse..."
 msgstr "&עיון"
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 #, fuzzy
 msgid "&Show dot files"
 msgstr "אין עוד קבצים\n"
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 #, fuzzy
 msgid "Driver diagnostics"
 msgstr "כלי ניתוח ה־DirectX"
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 #, fuzzy
 msgid "Defaults"
 msgstr "הגדרת &בררות מחדל"
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 #, fuzzy
 msgid "Output device:"
 msgstr "שם קובץ ה&פלט:"
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 #, fuzzy
 msgid "MIDI output device:"
 msgstr "שם קובץ ה&פלט:"
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 #, fuzzy
 msgid "Speaker configuration"
 msgstr "תצורת Wine"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 msgid "&WinRT theme:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 #, fuzzy
 msgid "&Install theme..."
 msgstr "התקנה..."
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 #, fuzzy
 msgid "C&olor:"
 msgstr "&צבע"
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 #, fuzzy
 msgid "Folders"
 msgstr "תיקייה"
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 #, fuzzy
 msgid "&Link to:"
 msgstr "קישורים אל"
@@ -20005,29 +20125,33 @@ msgid "(System default)"
 msgstr "נתיב המערכת"
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:91
+msgid "5.1 Surround"
+msgstr ""
+
+#: programs/winecfg/winecfg.rc:92
 #, fuzzy
 msgid "Quadraphonic"
 msgstr "גרפיקה"
 
-#: programs/winecfg/winecfg.rc:92
+#: programs/winecfg/winecfg.rc:93
 msgid "Stereo"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:93
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 #, fuzzy
 #| msgid "Right"
 msgid "Light"
 msgstr "ימין"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr ""
 
@@ -20167,157 +20291,157 @@ msgstr ""
 "\n"
 "מומלץ שלא לשכוח ללחוץ על 'הוספה' בלשונית הכוננים כדי ליצור אחד כזה!\n"
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 #, fuzzy
 msgid "Controls Background"
 msgstr "רקע הפקדים"
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 #, fuzzy
 msgid "Controls Text"
 msgstr "טקסט הפקדים"
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 #, fuzzy
 msgid "Menu Background"
 msgstr "רקע התפריט"
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 #, fuzzy
 msgid "Menu Text"
 msgstr "טקסט בתפריט"
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 #, fuzzy
 msgid "Scrollbar"
 msgstr "סרגל גלילה"
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 #, fuzzy
 msgid "Selection Background"
 msgstr "רקע הבחירה"
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 #, fuzzy
 msgid "Selection Text"
 msgstr "טקסט הבחירה"
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 #, fuzzy
 msgid "Tooltip Background"
 msgstr "רקע חלונית העצה"
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 #, fuzzy
 msgid "Tooltip Text"
 msgstr "טקסט חלונית עצה"
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 #, fuzzy
 msgid "Window Background"
 msgstr "רקע החלון"
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 #, fuzzy
 msgid "Window Text"
 msgstr "טקסט בחלון"
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 #, fuzzy
 msgid "Active Title Bar"
 msgstr "כותרת החלון הפעיל"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 #, fuzzy
 msgid "Active Title Text"
 msgstr "טקסט בכותרת של פעיל"
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 #, fuzzy
 msgid "Inactive Title Bar"
 msgstr "סרגל כותרת של בלתי פעיל"
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 #, fuzzy
 msgid "Inactive Title Text"
 msgstr "טקסט כותרת של בלתי פעיל"
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 #, fuzzy
 msgid "Message Box Text"
 msgstr "טקסט בתיבת הודעות"
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 #, fuzzy
 msgid "Application Workspace"
 msgstr "מרחב היישומים"
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 #, fuzzy
 msgid "Window Frame"
 msgstr "מסגרת החלון"
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 #, fuzzy
 msgid "Active Border"
 msgstr "מסגרת של פעיל"
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 #, fuzzy
 msgid "Inactive Border"
 msgstr "מסגרת של בלתי פעיל"
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 #, fuzzy
 msgid "Controls Shadow"
 msgstr "הצללת הפקדים"
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 #, fuzzy
 msgid "Gray Text"
 msgstr "טקסט אפור"
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 #, fuzzy
 msgid "Controls Highlight"
 msgstr "הדגשת פקדים"
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 #, fuzzy
 msgid "Controls Dark Shadow"
 msgstr "הפקדים בהצללה כהה"
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 #, fuzzy
 msgid "Controls Light"
 msgstr "פקדים בהירים"
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 #, fuzzy
 msgid "Controls Alternate Background"
 msgstr "צבע רקע הפקדים משתנה"
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 #, fuzzy
 msgid "Hot Tracked Item"
 msgstr "פריט במעקב חם"
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 #, fuzzy
 msgid "Active Title Bar Gradient"
 msgstr "מדרג שורת כותרת של חלון פעיל"
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 #, fuzzy
 msgid "Inactive Title Bar Gradient"
 msgstr "מדרג שורת כותרת של חלון בלתי פעיל"
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 #, fuzzy
 msgid "Menu Highlight"
 msgstr "הדגשה בתפריט"
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 #, fuzzy
 msgid "Menu Bar"
 msgstr "סרגל תפריטים"
diff --git a/po/hi.po b/po/hi.po
index d589b854c743..3107f0b06925 100644
--- a/po/hi.po
+++ b/po/hi.po
@@ -78,7 +78,7 @@ msgstr ""
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr ""
@@ -115,7 +115,7 @@ msgstr ""
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -215,7 +215,7 @@ msgstr ""
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -703,7 +703,7 @@ msgid "Font St&yle:"
 msgstr ""
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr ""
 
@@ -719,7 +719,7 @@ msgstr ""
 msgid "&Underline"
 msgstr ""
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr ""
 
@@ -896,7 +896,7 @@ msgstr ""
 msgid "C&ollate"
 msgstr ""
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr ""
 
@@ -975,7 +975,7 @@ msgstr ""
 msgid "Files of type:"
 msgstr ""
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr ""
 
@@ -2404,7 +2404,7 @@ msgid "&File name:"
 msgstr ""
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr ""
 
@@ -3720,11 +3720,19 @@ msgstr ""
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr ""
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr ""
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr ""
 
@@ -3859,11 +3867,11 @@ msgstr ""
 msgid "Subscript out of range"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 msgid "Out of stack space"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr ""
 
@@ -3871,23 +3879,23 @@ msgstr ""
 msgid "Automation server can't create object"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 msgid "Object not a collection"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr ""
 
@@ -3895,27 +3903,27 @@ msgstr ""
 msgid "Expected ';'"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 msgid "Expected '='"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 msgid "Invalid character"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr ""
 
@@ -3959,7 +3967,7 @@ msgstr ""
 msgid "Microsoft JScript runtime error"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 msgid "Unknown runtime error"
 msgstr ""
 
@@ -3983,7 +3991,7 @@ msgstr ""
 msgid "Object expected"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr ""
 
@@ -4190,11 +4198,11 @@ msgstr ""
 msgid "Path not found.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr ""
 
@@ -5547,7 +5555,7 @@ msgstr ""
 msgid "File has a user-mapped section.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr ""
 
@@ -7132,67 +7140,71 @@ msgid "This network connection does not exist.\n"
 msgstr ""
 
 #: dlls/kernelbase/winerror.mc:3750
-msgid "Call interrupted.\n"
+msgid "File or directory is not a reparse point.\n"
 msgstr ""
 
 #: dlls/kernelbase/winerror.mc:3755
+msgid "Call interrupted.\n"
+msgstr ""
+
+#: dlls/kernelbase/winerror.mc:3760
 msgid "Invalid file handle.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 msgid "Invalid pointer address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 msgid "Invalid argument.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 msgid "Connection reset by peer.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 #, fuzzy
 msgid "Host not found.\n"
 msgstr "सूचना (&o)"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 msgid "Nonauthoritative host not found.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 msgid "Nonrecoverable error.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 msgid "Not implemented.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 msgid "Call failed.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 msgid "Unable to find matching object.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 msgid "No Signature found in file.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 msgid "Invalid call.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 msgid "Resource is not currently available.\n"
 msgstr ""
 
@@ -8174,7 +8186,7 @@ msgstr ""
 msgid "Hyperlink Information"
 msgstr ""
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr ""
 
@@ -9721,7 +9733,7 @@ msgid "b"
 msgstr ""
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr ""
@@ -10262,7 +10274,7 @@ msgstr ""
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr ""
 
@@ -10349,7 +10361,7 @@ msgstr ""
 msgid "Date deleted"
 msgstr ""
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -12744,212 +12756,268 @@ msgstr ""
 msgid "Type mismatch"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 msgid "Device I/O error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 msgid "File already exists"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 msgid "Disk full"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 msgid "Too many files"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 msgid "Permission denied"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 msgid "Path not found"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 msgid "Object variable not set"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 msgid "For loop not initialized"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 msgid "Invalid use of Null"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 msgid "ActiveX component can't create object"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 msgid "Class doesn't support Automation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 msgid "Object doesn't support named arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 msgid "Object doesn't support current locale setting"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 msgid "Named argument not found"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 msgid "Specified DLL function not found"
 msgstr ""
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 msgid "Variable is undefined"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+msgid "Class not defined"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:71
+msgid "Expected ']'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:75
+msgid "Expected 'If'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:76
 msgid "Expected 'To'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 msgid "Expected 'End'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+msgid "Expected 'Function'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:79
+msgid "Expected 'Sub'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:80
 msgid "Expected 'Then'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 msgid "Expected 'Wend'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 msgid "Expected 'Loop'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 msgid "Expected 'Next'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 msgid "Expected 'Case'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+msgid "Expected 'Select'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:86
 msgid "Expected statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 msgid "Expected end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 msgid "Expected integer constant"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+msgid "Expected 'With'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:90
+msgid "Identifier too long"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:92
 msgid "Invalid number"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+msgid "Invalid use of 'Me' keyword"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 msgid "Invalid 'exit' statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 msgid "Name redefined"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 msgid "Expected literal constant"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 msgid "Expected 'In'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 msgid "Expected 'Class'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+msgid "Expected 'Property'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 msgid "Unexpected 'Next'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr ""
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr ""
 
@@ -13934,7 +14002,7 @@ msgid "Digi&tal"
 msgstr "डिज़िटल (&t)"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "फ़ॉन्ट (&F)..."
@@ -14721,6 +14789,39 @@ msgstr ""
 msgid "This is a test"
 msgstr ""
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr ""
@@ -17990,7 +18091,7 @@ msgstr ""
 msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -17998,249 +18099,249 @@ msgid ""
 "option) any later version."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 #, fuzzy
 msgid "Windows registration information"
 msgstr "फ़ॉन्ट (&F)..."
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
 "or per-application settings in those tabs as well."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 msgid "Add appli&cation..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
 "application)."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 #, fuzzy
 msgid "&Edit..."
 msgstr "फ़ॉन्ट (&F)..."
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 msgid "Buil&tin then Native"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 msgid "Drive configuration"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 msgid ""
 "Failed to connect to the mount manager; the drive configuration cannot be "
 "edited."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 msgid "A&dd..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 msgid "Show Advan&ced"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 msgid "&Show dot files"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 msgid "MIDI output device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 msgid "Speaker configuration"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 msgid "&WinRT theme:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr ""
 
@@ -18321,26 +18422,30 @@ msgid "(System default)"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:91
-msgid "Quadraphonic"
+msgid "5.1 Surround"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:92
-msgid "Stereo"
+msgid "Quadraphonic"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:93
+msgid "Stereo"
+msgstr ""
+
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 msgid "Light"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr ""
 
@@ -18445,128 +18550,128 @@ msgid ""
 "Remember to click 'Add' in the Drives tab to create one!\n"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 #, fuzzy
 msgid "Active Title Bar"
 msgstr "बिना शीर्षकपट्टी के (&W)"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr ""
 
diff --git a/po/hr.po b/po/hr.po
index 89aefabe0a71..c5cdf6bb0062 100644
--- a/po/hr.po
+++ b/po/hr.po
@@ -87,7 +87,7 @@ msgstr "I&zmjeni..."
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr "&Ukloni"
@@ -124,7 +124,7 @@ msgstr "Informacije o podršci"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -230,7 +230,7 @@ msgstr "&Instaliraj"
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -730,7 +730,7 @@ msgid "Font St&yle:"
 msgstr "Sti&l Fonta:"
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "&Veličina:"
 
@@ -746,7 +746,7 @@ msgstr "Pre&crtano"
 msgid "&Underline"
 msgstr "Po&dcrtano"
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "&Boja:"
 
@@ -925,7 +925,7 @@ msgstr "Broj kopija:"
 msgid "C&ollate"
 msgstr "Sra&vniti"
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr "Veli&čina:"
 
@@ -1003,7 +1003,7 @@ msgstr "Nazi&v datoteke:"
 msgid "Files of type:"
 msgstr "Datoteke tipa:"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr "Datoteka nije pronađena"
 
@@ -2466,7 +2466,7 @@ msgid "&File name:"
 msgstr "Naziv &datoteke:"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr "N&ađi..."
 
@@ -3860,11 +3860,19 @@ msgstr "Indeks"
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr "Wine Video 1 video codec"
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr "Joystici"
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr "&Isključi"
 
@@ -4025,13 +4033,13 @@ msgstr "Nevažeći poziv procedure ili argumenta"
 msgid "Subscript out of range"
 msgstr "Potpis je van dometa"
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 #, fuzzy
 #| msgid "Out of paper; "
 msgid "Out of stack space"
 msgstr "Nema papira; "
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr "Potreban objekt"
 
@@ -4039,25 +4047,25 @@ msgstr "Potreban objekt"
 msgid "Automation server can't create object"
 msgstr "Poslužitelj automatizacije ne može stvoriti objekt"
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr "Objekt ne podržava ovo svojstvo ili metodu"
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr "Objekt ne podržava ovu radnju"
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr "Argument nije opcionalan"
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 #, fuzzy
 #| msgid "Object Class Violation"
 msgid "Object not a collection"
 msgstr "Kršenje klase objekata"
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr "Greška u sintaksi"
 
@@ -4065,31 +4073,31 @@ msgstr "Greška u sintaksi"
 msgid "Expected ';'"
 msgstr "Očekivano ';'"
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr "Očekivano '('"
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr "Očekivano ')'"
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 #, fuzzy
 #| msgid "Expected an operand.\n"
 msgid "Expected identifier"
 msgstr "Očekivan operand.\n"
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected '='"
 msgstr "Očekivano ';'"
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 msgid "Invalid character"
 msgstr "Neispravan znak"
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr "Nezavršen niz znakova"
 
@@ -4137,7 +4145,7 @@ msgstr ""
 msgid "Microsoft JScript runtime error"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 #, fuzzy
 #| msgid "Unknown error"
 msgid "Unknown runtime error"
@@ -4165,7 +4173,7 @@ msgstr "'[object]' nije vremenski objekt"
 msgid "Object expected"
 msgstr "Očekivan objekt"
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr "Nedozvoljeno pridruživanje"
 
@@ -4397,11 +4405,11 @@ msgstr "Datoteka nije pronađena.\n"
 msgid "Path not found.\n"
 msgstr "Putanja nije pronađena.\n"
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr "Previše otvorenih datoteka.\n"
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr "Pristup odbijen.\n"
 
@@ -5755,7 +5763,7 @@ msgstr "Korisnik prekinuo operaciju.\n"
 msgid "File has a user-mapped section.\n"
 msgstr "Datoteka ima korisnički mapiranu sekciju.\n"
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr "Povezivanje odbijeno.\n"
 
@@ -7343,91 +7351,97 @@ msgstr "Mjesto ne postoji.\n"
 
 #: dlls/kernelbase/winerror.mc:3750
 #, fuzzy
+#| msgid "File or directory corrupt.\n"
+msgid "File or directory is not a reparse point.\n"
+msgstr "Datoteka ili direktorij oštećen.\n"
+
+#: dlls/kernelbase/winerror.mc:3755
+#, fuzzy
 #| msgid "Invalid at interrupt time.\n"
 msgid "Call interrupted.\n"
 msgstr "Neispravan u trenutku prekida.\n"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 #, fuzzy
 #| msgid "Invalid handle.\n"
 msgid "Invalid file handle.\n"
 msgstr "Neispravna poveznica.\n"
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 #, fuzzy
 #| msgid "Invalid network address.\n"
 msgid "Invalid pointer address.\n"
 msgstr "Neispravna mrežna adresa.\n"
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 #, fuzzy
 #| msgid "Invalid name.\n"
 msgid "Invalid argument.\n"
 msgstr "Neispravno ime.\n"
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 #, fuzzy
 #| msgid "Connection refused.\n"
 msgid "Connection reset by peer.\n"
 msgstr "Povezivanje odbijeno.\n"
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 #, fuzzy
 #| msgid "Point not found.\n"
 msgid "Host not found.\n"
 msgstr "Točka nije pronađena.\n"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 #, fuzzy
 #| msgid "File not found.\n"
 msgid "Nonauthoritative host not found.\n"
 msgstr "Datoteka nije pronađena.\n"
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 #, fuzzy
 #| msgid "A printer error occurred."
 msgid "Nonrecoverable error.\n"
 msgstr "Došlo je do greške kod pisača."
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 #, fuzzy
 #| msgid "Not implemented"
 msgid "Not implemented.\n"
 msgstr "Nije još implementirano"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 #, fuzzy
 #| msgid "RPC call failed.\n"
 msgid "Call failed.\n"
 msgstr "RPC poziv neuspio.\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 #, fuzzy
 #| msgid "Unable to unload media.\n"
 msgid "Unable to find matching object.\n"
 msgstr "Nije moguće izbaciti medij.\n"
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 #, fuzzy
 #| msgid "Message 0x%1 not found in file %2.\n"
 msgid "No Signature found in file.\n"
 msgstr "Poruka 0x%1 nije pronađena u datoteci %2.\n"
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 #, fuzzy
 #| msgid "Invalid level.\n"
 msgid "Invalid call.\n"
 msgstr "Neispravna razina.\n"
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 #, fuzzy
 #| msgid "Help not available."
 msgid "Resource is not currently available.\n"
@@ -8637,7 +8651,7 @@ msgstr "Hiperveza"
 msgid "Hyperlink Information"
 msgstr "Podaci o hipervezi"
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr "&Tip:"
 
@@ -10437,7 +10451,7 @@ msgid "b"
 msgstr "b"
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr "dpi"
@@ -10978,7 +10992,7 @@ msgstr "&Otvori:"
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr "&Nađi..."
 
@@ -11078,7 +11092,7 @@ msgstr "Originalna lokacija"
 msgid "Date deleted"
 msgstr "Datum brisanja"
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -14037,278 +14051,354 @@ msgstr "Greška dijeljenja sa nulom.\n"
 msgid "Type mismatch"
 msgstr "Nepodudarnost tipova podataka.\n"
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 #, fuzzy
 #| msgid "I/O device error.\n"
 msgid "Device I/O error"
 msgstr "Greška U/I uređaja.\n"
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 #, fuzzy
 #| msgid "File already exists.\n"
 msgid "File already exists"
 msgstr "Datoteka već postoji.\n"
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 #, fuzzy
 #| msgid "Disk full.\n"
 msgid "Disk full"
 msgstr "Disk pun.\n"
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 #, fuzzy
 #| msgid "Too many open files.\n"
 msgid "Too many files"
 msgstr "Previše otvorenih datoteka.\n"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 #, fuzzy
 #| msgid "Access denied.\n"
 msgid "Permission denied"
 msgstr "Pristup odbijen.\n"
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 #, fuzzy
 #| msgid "Path not found.\n"
 msgid "Path not found"
 msgstr "Putanja nije pronađena.\n"
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 #, fuzzy
 #| msgid "(value not set)"
 msgid "Object variable not set"
 msgstr "(vrijednost nije postavljena)"
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 #, fuzzy
 #| msgid "Object UUID not found.\n"
 msgid "For loop not initialized"
 msgstr "UUID objekta nije pronađen.\n"
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 #, fuzzy
 #| msgid "Invalid user buffer.\n"
 msgid "Invalid use of Null"
 msgstr "Neispravan korisnički međuspremnik.\n"
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 #, fuzzy
 #| msgid "Automation server can't create object"
 msgid "ActiveX component can't create object"
 msgstr "Poslužitelj automatizacije ne može stvoriti objekt"
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Class doesn't support Automation"
 msgstr "Objekt ne podržava ovu radnju"
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Object doesn't support named arguments"
 msgstr "Objekt ne podržava ovu radnju"
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Object doesn't support current locale setting"
 msgstr "Objekt ne podržava ovu radnju"
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 #, fuzzy
 #| msgid "Element not found.\n"
 msgid "Named argument not found"
 msgstr "Element nije pronađen.\n"
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 #, fuzzy
 #| msgid "Specified control was not found in message"
 msgid "Specified DLL function not found"
 msgstr "Navedena kontrola nije pronađena u poruci"
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 #, fuzzy
 #| msgid "'|' is undefined"
 msgid "Variable is undefined"
 msgstr "'|' nije definiran"
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+#, fuzzy
+#| msgid "Class does not exist.\n"
+msgid "Class not defined"
+msgstr "Klasa ne postoji.\n"
+
+#: dlls/vbscript/vbscript.rc:71
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected ']'"
+msgstr "Očekivano ';'"
+
+#: dlls/vbscript/vbscript.rc:75
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'If'"
+msgstr "Očekivano ';'"
+
+#: dlls/vbscript/vbscript.rc:76
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'To'"
 msgstr "Očekivano ';'"
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'End'"
 msgstr "Očekivano ';'"
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Function'"
+msgstr "Očekivano ';'"
+
+#: dlls/vbscript/vbscript.rc:79
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Sub'"
+msgstr "Očekivano ';'"
+
+#: dlls/vbscript/vbscript.rc:80
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Then'"
 msgstr "Očekivano ';'"
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Wend'"
 msgstr "Očekivano ';'"
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Loop'"
 msgstr "Očekivano ';'"
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Next'"
 msgstr "Očekivano ';'"
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Case'"
 msgstr "Očekivano ';'"
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Select'"
+msgstr "Očekivano ';'"
+
+#: dlls/vbscript/vbscript.rc:86
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected statement"
 msgstr "Očekivano ';'"
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 #, fuzzy
 #| msgid "Expected an operand.\n"
 msgid "Expected end of statement"
 msgstr "Očekivan operand.\n"
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 #, fuzzy
 #| msgid "Unterminated string constant"
 msgid "Expected integer constant"
 msgstr "Nezavršen niz znakova"
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'With'"
+msgstr "Očekivano ';'"
+
+#: dlls/vbscript/vbscript.rc:90
+#, fuzzy
+#| msgid "Secret too long.\n"
+msgid "Identifier too long"
+msgstr "Tajna predugačka.\n"
+
+#: dlls/vbscript/vbscript.rc:92
 #, fuzzy
 #| msgid "Invalid flag number.\n"
 msgid "Invalid number"
 msgstr "Neispravan broj zastavica.\n"
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+#, fuzzy
+#| msgid "Invalid user buffer.\n"
+msgid "Invalid use of 'Me' keyword"
+msgstr "Neispravan korisnički međuspremnik.\n"
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 #, fuzzy
 #| msgid "Invalid printer state.\n"
 msgid "Invalid 'exit' statement"
 msgstr "Neispravno stanje pisača.\n"
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 #, fuzzy
 #| msgid "Label redefined"
 msgid "Name redefined"
 msgstr "Oznaka redefinirana"
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 #, fuzzy
 #| msgid "Expected an operator.\n"
 msgid "Expected literal constant"
 msgstr "Očekivan operator.\n"
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'In'"
 msgstr "Očekivano ';'"
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Class'"
 msgstr "Očekivano ';'"
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Property'"
+msgstr "Očekivano ';'"
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Unexpected 'Next'"
 msgstr "Očekivano ';'"
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr ""
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr "Wine"
 
@@ -15348,7 +15438,7 @@ msgid "Digi&tal"
 msgstr "&Digitalni"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "&Font..."
@@ -16169,6 +16259,39 @@ msgstr "Svaki znak je %1!u! piksela širok i %2!u! piksela visok"
 msgid "This is a test"
 msgstr "Ovo je proba"
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr "DirectX Dijagnostički Alat"
@@ -19636,7 +19759,7 @@ msgstr ""
 msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr "Wine postavke u %s se ažuriraju. Molimo, pričekajte..."
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -19647,23 +19770,23 @@ msgstr ""
 "uvjetima GNU Lesser General Public License koja je izdana pod Free Software "
 "Foundation; verzija 2.1 licence ili (po svom izboru) neka kasnija verzija."
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 msgid "Windows registration information"
 msgstr "Informacija o Windows registraciji"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr "&Vlasnik:"
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr "Organi&zacija:"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr "Postavke aplikacije"
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
@@ -19673,57 +19796,57 @@ msgstr ""
 "je povezan sa tabovima Biblioteke i Grafika kako bi dozvolio sistemske "
 "promjene ili za podešavanje aplikacija u tim istim tabovima."
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 #, fuzzy
 #| msgid "&Add application..."
 msgid "Add appli&cation..."
 msgstr "&Dodaj aplikaciju..."
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr "&Ukloni aplikaciju"
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr "&Verzija Windowsa:"
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr "Postavke prozora"
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr "Automatski uhvati miš u ful&l-screen prozorima"
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr "Dozvoli upravitelju prozora &ukrašavanje prozora"
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr "Dozvoli upravitelju &prozora upravljanje prozorom"
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr "&Emulacija virutalnoe radne površine"
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr "&Veličina radne površine:"
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr "Rezolucija ekrana"
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr "Ovo je primjer teksta koristeći 10 Tahoma"
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr "DLL nadjačavanja"
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
@@ -19732,59 +19855,59 @@ msgstr ""
 "Biblioteke mogu biti podešene zasebno da budu ili ugrađene (omogućene od "
 "Wine-a) ili nativne (uzete od Windowsa ili od aplikacije)."
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr "&Novo nadjačavanje biblioteke:"
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr "Postojeća nad&jačavanja:"
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 msgid "&Edit..."
 msgstr "&Izmjeni..."
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr "Izmjeni podešavanje"
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr "Redoslijed učitavanja"
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr "&Ugrađeno (Wine)"
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr "&Nativno (Windows)"
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 #, fuzzy
 #| msgid "Bui&ltin then Native"
 msgid "Buil&tin then Native"
 msgstr "Ugrađe&no pa nativno"
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr "Nativno &pa ugrađeno"
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr "Izaberi slovo pogona"
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 #, fuzzy
 #| msgid "Wine configuration"
 msgid "Drive configuration"
 msgstr "Wine konfiguracija"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 #, fuzzy
 #| msgid ""
 #| "Failed to connect to the mount manager, the drive configuration cannot be "
@@ -19796,127 +19919,127 @@ msgstr ""
 "Nije uspjelo povezivanje sa mount upraviteljem, konfiguracija pogona se ne "
 "može izmijeniti."
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 #, fuzzy
 #| msgid "&Add..."
 msgid "A&dd..."
 msgstr "&Dodaj..."
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr "&Putanja:"
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 #, fuzzy
 #| msgid "Show &Advanced"
 msgid "Show Advan&ced"
 msgstr "Pokaži &napredno"
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr "U&ređaj:"
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr "Na&đi..."
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr "&Oznaka:"
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr "S&erijski:"
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 #, fuzzy
 #| msgid "Show &dot files"
 msgid "&Show dot files"
 msgstr "Prikaži &dot datoteke"
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr "Driver dijagnostika"
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr "Is&probaj zvuk"
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr "Podrazumijevano"
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr "Izlazni uređaj:"
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr "Izlazni uređaj za glas:"
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr "Ulazni uređaj:"
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr "Ulazni uređdaj za glas:"
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 #, fuzzy
 #| msgid "Output device:"
 msgid "MIDI output device:"
 msgstr "Izlazni uređaj:"
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 #, fuzzy
 #| msgid "Wine configuration"
 msgid "Speaker configuration"
 msgstr "Wine konfiguracija"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr "Izgled"
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr "&Tema:"
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 #, fuzzy
 #| msgid "&Theme:"
 msgid "&WinRT theme:"
 msgstr "&Tema:"
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr "&Instaliraj temu..."
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr "Stavka:"
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr "B&oja:"
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr "Mape"
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr "&Veza do:"
 
@@ -19999,30 +20122,34 @@ msgid "(System default)"
 msgstr "(Sistemska putanja)"
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:91
+msgid "5.1 Surround"
+msgstr ""
+
+#: programs/winecfg/winecfg.rc:92
 #, fuzzy
 #| msgid "graphic"
 msgid "Quadraphonic"
 msgstr "grafika"
 
-#: programs/winecfg/winecfg.rc:92
+#: programs/winecfg/winecfg.rc:93
 msgid "Stereo"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:93
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 #, fuzzy
 #| msgid "Right"
 msgid "Light"
 msgstr "Desno"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr ""
 
@@ -20148,127 +20275,127 @@ msgstr ""
 "\n"
 "Kliknite 'Dodaj' u Pogoni tabu kako bi ga napravili!\n"
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr "Kontrole pozadine"
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr "Kontrole teksta"
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr "Pozadina menija"
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr "Tekst menija"
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr "Scrollbar"
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr "Odabir pozadine"
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr "Odabir teksta"
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr "Tooltip pozadine"
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr "Tooltip teksta"
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr "Pozadina prozora"
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr "Text prozora"
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 msgid "Active Title Bar"
 msgstr "Aktivni nazivni Bar"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr "Aktivni nazivni Text"
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr "Neaktivni nazivni Bar"
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr "Neaktivni nazivni Text"
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr "Poruka Box Text"
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr "Radni prostor aplikacije"
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr "Okvir prozora"
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr "Aktivni rub"
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr "Neaktivni rub"
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr "Kontrola sjene"
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr "Sivi Text"
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr "Kontrola odabranog"
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr "Kontrola tamne sjene"
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr "Kontrola svijetla"
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr "Kontrola alternativne pozadine"
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr "Gradijent aktivne naslovne trake"
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr "Gradijent neaktivne naslovne trake"
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr "Isticanje izbornika"
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr "Traka izbornika"
 
diff --git a/po/hu.po b/po/hu.po
index 2352c96799c2..93c1bfd9fd81 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -87,7 +87,7 @@ msgstr "&Módosítás..."
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr "E&ltávolítás"
@@ -124,7 +124,7 @@ msgstr "Támogatási információ"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -232,7 +232,7 @@ msgstr "&Telepítés"
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -744,7 +744,7 @@ msgid "Font St&yle:"
 msgstr "Betû&stílus:"
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "&Méret:"
 
@@ -760,7 +760,7 @@ msgstr "Á&thúzott"
 msgid "&Underline"
 msgstr "&Aláhúzott"
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "Szín:"
 
@@ -939,7 +939,7 @@ msgstr "Másola&tok száma:"
 msgid "C&ollate"
 msgstr "Le&válogatás"
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr "&Méret:"
 
@@ -1017,7 +1017,7 @@ msgstr "Fájlnév:"
 msgid "Files of type:"
 msgstr "Fájl&típus:"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr "Fájl nem található"
 
@@ -2480,7 +2480,7 @@ msgid "&File name:"
 msgstr "&Fájlnév:"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr "Tallózás..."
 
@@ -3902,11 +3902,19 @@ msgstr "&Témakörök"
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr "Wine Video 1 video kodek"
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr ""
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr "Tiltá&s"
 
@@ -4065,13 +4073,13 @@ msgstr "Érvénytelen eljáráshívás vagy argmentum"
 msgid "Subscript out of range"
 msgstr "Érvénytelen alszkript"
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 #, fuzzy
 #| msgid "Out of paper; "
 msgid "Out of stack space"
 msgstr "Elfogyott a papír; "
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr "Objektum szükséges"
 
@@ -4079,25 +4087,25 @@ msgstr "Objektum szükséges"
 msgid "Automation server can't create object"
 msgstr "Az automatizáló (automation) kiszolgáló nem tud objektumot létrehozni"
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr "Az objektum nem támogatja ezt a tulajdonságot vagy metódust"
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr "Az objektum nem támogatja ezt a műveletet"
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr "Az argumentum nem opcionális"
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 #, fuzzy
 #| msgid "Object Class Violation"
 msgid "Object not a collection"
 msgstr "Objektum osztály összeférhetetlenség"
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr "Szinttaktikai hiba"
 
@@ -4105,33 +4113,33 @@ msgstr "Szinttaktikai hiba"
 msgid "Expected ';'"
 msgstr "Hiányzó ';'"
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr "Hiányzó '('"
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr "Hiányzó ')'"
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 #, fuzzy
 #| msgid "Subject Key Identifier"
 msgid "Expected identifier"
 msgstr "Tárgy kulcs azonosító"
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected '='"
 msgstr "Hiányzó ';'"
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 #, fuzzy
 #| msgid "Invalid parameter.\n"
 msgid "Invalid character"
 msgstr "Érvénytelen paraméter.\n"
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr "Lezáratlan sztring konstans"
 
@@ -4179,7 +4187,7 @@ msgstr ""
 msgid "Microsoft JScript runtime error"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 #, fuzzy
 #| msgid "Unknown error"
 msgid "Unknown runtime error"
@@ -4207,7 +4215,7 @@ msgstr "'Az [object]' nem egy date (dátum) objektum"
 msgid "Object expected"
 msgstr "Objektumot vártam"
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr "Nem megengedett összerendelés"
 
@@ -4443,11 +4451,11 @@ msgstr "Fájl nem található.\n"
 msgid "Path not found.\n"
 msgstr "Az útvonal nem található.\n"
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr "Túl sok nyitott fájl.\n"
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr "Hozzáférés megtagadva.\n"
 
@@ -5801,7 +5809,7 @@ msgstr "Műveletet a felhasználó megszakította.\n"
 msgid "File has a user-mapped section.\n"
 msgstr "Fájlnak van egy fálhasználói kép része.\n"
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr "Kapcsolódás megtagadva.\n"
 
@@ -7389,91 +7397,97 @@ msgstr "Az oldal nem létezik.\n"
 
 #: dlls/kernelbase/winerror.mc:3750
 #, fuzzy
+#| msgid "File or directory corrupt.\n"
+msgid "File or directory is not a reparse point.\n"
+msgstr "Fájl vagy mappa sérült.\n"
+
+#: dlls/kernelbase/winerror.mc:3755
+#, fuzzy
 #| msgid "Invalid at interrupt time.\n"
 msgid "Call interrupted.\n"
 msgstr "Nem megfelelő megszakítási idő.\n"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 #, fuzzy
 #| msgid "Invalid handle.\n"
 msgid "Invalid file handle.\n"
 msgstr "Érvénytelen leíró.\n"
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 #, fuzzy
 #| msgid "Invalid network address.\n"
 msgid "Invalid pointer address.\n"
 msgstr "Érvénytelen hálózati cím.\n"
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 #, fuzzy
 #| msgid "Invalid name.\n"
 msgid "Invalid argument.\n"
 msgstr "Érvénytelen név.\n"
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 #, fuzzy
 #| msgid "Connection refused.\n"
 msgid "Connection reset by peer.\n"
 msgstr "Kapcsolódás megtagadva.\n"
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 #, fuzzy
 #| msgid "Point not found.\n"
 msgid "Host not found.\n"
 msgstr "Pont nem található.\n"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 #, fuzzy
 #| msgid "File not found.\n"
 msgid "Nonauthoritative host not found.\n"
 msgstr "Fájl nem található.\n"
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 #, fuzzy
 #| msgid "A printer error occurred."
 msgid "Nonrecoverable error.\n"
 msgstr "Nyomtatási hiba történt."
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 #, fuzzy
 #| msgid "Not implemented"
 msgid "Not implemented.\n"
 msgstr "Nincs implementálva"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 #, fuzzy
 #| msgid "RPC call failed.\n"
 msgid "Call failed.\n"
 msgstr "RPC hívás hibás.\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 #, fuzzy
 #| msgid "Unable to unload media.\n"
 msgid "Unable to find matching object.\n"
 msgstr "Lemez nem szabadítható fel.\n"
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 #, fuzzy
 #| msgid "Message 0x%1 not found in file %2.\n"
 msgid "No Signature found in file.\n"
 msgstr "0x%1 üzenet nem található a %2 fájlban.\n"
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 #, fuzzy
 #| msgid "Invalid level.\n"
 msgid "Invalid call.\n"
 msgstr "Érvénytelen szint.\n"
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 #, fuzzy
 #| msgid "Help not available."
 msgid "Resource is not currently available.\n"
@@ -8685,7 +8699,7 @@ msgstr "Hiperhivatkozás"
 msgid "Hyperlink Information"
 msgstr "Hiperhivatkozás információ"
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr "&Típus:"
 
@@ -10467,7 +10481,7 @@ msgid "b"
 msgstr "b"
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr "dpi"
@@ -11008,7 +11022,7 @@ msgstr "&Megnyitás:"
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr "&Tallózás..."
 
@@ -11108,7 +11122,7 @@ msgstr "Eredeti hely"
 msgid "Date deleted"
 msgstr "Törlési dátum"
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -14075,278 +14089,354 @@ msgstr ""
 msgid "Type mismatch"
 msgstr "Adattípus eltérés.\n"
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 #, fuzzy
 #| msgid "I/O device error.\n"
 msgid "Device I/O error"
 msgstr "I/O eszköz hiba.\n"
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 #, fuzzy
 #| msgid "File already exists.\n"
 msgid "File already exists"
 msgstr "A fájl már létezik.\n"
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 #, fuzzy
 #| msgid "Disk full.\n"
 msgid "Disk full"
 msgstr "Lemez betelt.\n"
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 #, fuzzy
 #| msgid "Too many open files.\n"
 msgid "Too many files"
 msgstr "Túl sok nyitott fájl.\n"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 #, fuzzy
 #| msgid "Access denied.\n"
 msgid "Permission denied"
 msgstr "Hozzáférés megtagadva.\n"
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 #, fuzzy
 #| msgid "Path not found.\n"
 msgid "Path not found"
 msgstr "Az útvonal nem található.\n"
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 #, fuzzy
 #| msgid "(value not set)"
 msgid "Object variable not set"
 msgstr "(nem beállított)"
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 #, fuzzy
 #| msgid "Object UUID not found.\n"
 msgid "For loop not initialized"
 msgstr "UUID objektum nem található.\n"
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 #, fuzzy
 #| msgid "Invalid user buffer.\n"
 msgid "Invalid use of Null"
 msgstr "Érvénytelen felhasználói puffer.\n"
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 #, fuzzy
 #| msgid "Automation server can't create object"
 msgid "ActiveX component can't create object"
 msgstr "Az automatizáló (automation) kiszolgáló nem tud objektumot létrehozni"
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Class doesn't support Automation"
 msgstr "Az objektum nem támogatja ezt a műveletet"
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Object doesn't support named arguments"
 msgstr "Az objektum nem támogatja ezt a műveletet"
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Object doesn't support current locale setting"
 msgstr "Az objektum nem támogatja ezt a műveletet"
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 #, fuzzy
 #| msgid "Element not found.\n"
 msgid "Named argument not found"
 msgstr "A tétel nem található.\n"
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 #, fuzzy
 #| msgid "Specified control was not found in message"
 msgid "Specified DLL function not found"
 msgstr "A megadott vezérlő nem található az üzenetben"
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 #, fuzzy
 #| msgid "'|' is undefined"
 msgid "Variable is undefined"
 msgstr "A '|' nem definiált"
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+#, fuzzy
+#| msgid "Class does not exist.\n"
+msgid "Class not defined"
+msgstr "Osztály útvonal nem létezik.\n"
+
+#: dlls/vbscript/vbscript.rc:71
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected ']'"
+msgstr "Hiányzó ';'"
+
+#: dlls/vbscript/vbscript.rc:75
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'If'"
+msgstr "Hiányzó ';'"
+
+#: dlls/vbscript/vbscript.rc:76
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'To'"
 msgstr "Hiányzó ';'"
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'End'"
 msgstr "Hiányzó ';'"
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Function'"
+msgstr "Hiányzó ';'"
+
+#: dlls/vbscript/vbscript.rc:79
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Sub'"
+msgstr "Hiányzó ';'"
+
+#: dlls/vbscript/vbscript.rc:80
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Then'"
 msgstr "Hiányzó ';'"
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Wend'"
 msgstr "Hiányzó ';'"
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Loop'"
 msgstr "Hiányzó ';'"
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Next'"
 msgstr "Hiányzó ';'"
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Case'"
 msgstr "Hiányzó ';'"
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Select'"
+msgstr "Hiányzó ';'"
+
+#: dlls/vbscript/vbscript.rc:86
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected statement"
 msgstr "Hiányzó ';'"
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 #, fuzzy
 #| msgid "Unexpected network error.\n"
 msgid "Expected end of statement"
 msgstr "Nem várt hálózati hiba.\n"
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 #, fuzzy
 #| msgid "Unterminated string constant"
 msgid "Expected integer constant"
 msgstr "Lezáratlan sztring konstans"
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'With'"
+msgstr "Hiányzó ';'"
+
+#: dlls/vbscript/vbscript.rc:90
+#, fuzzy
+#| msgid "Secret too long.\n"
+msgid "Identifier too long"
+msgstr "Titkos név túl hosszú.\n"
+
+#: dlls/vbscript/vbscript.rc:92
 #, fuzzy
 #| msgid "Invalid flag number.\n"
 msgid "Invalid number"
 msgstr "Nem valós flag szám.\n"
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+#, fuzzy
+#| msgid "Invalid user buffer.\n"
+msgid "Invalid use of 'Me' keyword"
+msgstr "Érvénytelen felhasználói puffer.\n"
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 #, fuzzy
 #| msgid "Invalid printer state.\n"
 msgid "Invalid 'exit' statement"
 msgstr "Érvénytelen nyomtató állapot.\n"
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 #, fuzzy
 #| msgid "Label redefined"
 msgid "Name redefined"
 msgstr "Címke újradefiniált"
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 #, fuzzy
 #| msgid "Unexpected network error.\n"
 msgid "Expected literal constant"
 msgstr "Nem várt hálózati hiba.\n"
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'In'"
 msgstr "Hiányzó ';'"
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Class'"
 msgstr "Hiányzó ';'"
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Property'"
+msgstr "Hiányzó ';'"
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Unexpected 'Next'"
 msgstr "Hiányzó ';'"
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr ""
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr "Wine súgó"
 
@@ -15531,7 +15621,7 @@ msgid "Digi&tal"
 msgstr "Digi&tális"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "&Betűtípus..."
@@ -16600,6 +16690,41 @@ msgstr "Minden karakter %1!u! pixel széles és %2!u! pixel magas"
 msgid "This is a test"
 msgstr "Ez egy teszt"
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+#, fuzzy
+#| msgid "Error: Could not find process \"%1\".\n"
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr "Hiba: A \"%1\" folyamat nem található.\n"
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr "DirectX diagnosztikai eszköz"
@@ -20176,7 +20301,7 @@ msgstr ""
 msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr "Wine konfiguráció frissítődik %s, kérem várjon..."
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -20188,23 +20313,23 @@ msgstr ""
 "Free Software Foundation készített; mind a 2.1 verziójú licensz, vagy "
 "(választása szerint) bármely későbbi verzió használható."
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 msgid "Windows registration information"
 msgstr "Windows Regisztráció Információ"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr "&Tulajdonos:"
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr "&Szervezet:"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr "Alkalmazás beállítások"
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
@@ -20215,57 +20340,57 @@ msgstr ""
 "tegye a rendszerszintű vagy alkalmazásonkénti beállításokat ezeken a füleken "
 "is."
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 #, fuzzy
 #| msgid "&Add application..."
 msgid "Add appli&cation..."
 msgstr "&Alkalmazás hozzáadás..."
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr "Alkalmazás &eltávolítás"
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr "&Windows verzió:"
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr "Ablak beállítások"
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr "Automatikusan érzékeli az &egeret teljes képernyős ablak esetén"
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr "Megengedi az ablak kezelőnek, hogy &díszítse az ablakot"
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr "Az ablak kezelő kezelheti az ablakokat"
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr "Virtuális asztal emulálása"
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr "Asztal &méret:"
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr "Képernyő felbontás"
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr "Ez egy minta szöveg, amely 10 pontos Tahoma betűtípust használ"
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr "DLL felülbírálások"
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
@@ -20275,59 +20400,59 @@ msgstr ""
 "hogy beépítettek (a Wine biztosítja), vagy natívak (a windowsból nyert, vagy "
 "az alkalmazás biztosítja)."
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr "Új felülbírálás könyvtárhoz:"
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr "Létező felülbírálások:"
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 msgid "&Edit..."
 msgstr "Sz&erkesztés..."
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr "Felülbírálás szerkesztése"
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr "Betöltési sorrend"
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr "&Beépített (Wine)"
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr "&Natív (Windows)"
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 #, fuzzy
 #| msgid "Bui&ltin then Native"
 msgid "Buil&tin then Native"
 msgstr "Beépítet&t, natív"
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr "Natí&v, beépített"
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr "Válassza ki a meghajtó betűjelét"
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 #, fuzzy
 #| msgid "Wine configuration"
 msgid "Drive configuration"
 msgstr "Wine konfiguráció"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 #, fuzzy
 #| msgid ""
 #| "Failed to connect to the mount manager, the drive configuration cannot be "
@@ -20339,127 +20464,127 @@ msgstr ""
 "Nem lehet kapcsolódni az eszközmenedzserhez, a meghajtó beállítást nem lehet "
 "szerkeszteni."
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 #, fuzzy
 #| msgid "&Add..."
 msgid "A&dd..."
 msgstr "Hozzá&ad..."
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr "&Útvonal:"
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 #, fuzzy
 #| msgid "Show &Advanced"
 msgid "Show Advan&ced"
 msgstr "Haladó >>"
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr "Eszkö&z:"
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr "Tall&ózás..."
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr "&Címke:"
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr "S&orozatszám:"
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 #, fuzzy
 #| msgid "Show &dot files"
 msgid "&Show dot files"
 msgstr "Rejtett fájlok megjelenítése"
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr "Driver diagnosztika"
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr "&Teszt hang"
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr "Alapértékek"
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr "Kimeneti eszköz:"
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr "Hang kimeneti eszköz:"
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr "Bemeneti eszköz:"
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr "Hang bemeneti eszköz:"
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 #, fuzzy
 #| msgid "Output device:"
 msgid "MIDI output device:"
 msgstr "Kimeneti eszköz:"
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 #, fuzzy
 #| msgid "Wine configuration"
 msgid "Speaker configuration"
 msgstr "Wine konfiguráció"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr "Megjelenés"
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr "Téma:"
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 #, fuzzy
 #| msgid "&Theme:"
 msgid "&WinRT theme:"
 msgstr "Téma:"
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr "Téma telepítése..."
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr "&Elem:"
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr "Szín:"
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr "Rendszermappák"
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr "Mappa &útvonal:"
 
@@ -20542,30 +20667,34 @@ msgid "(System default)"
 msgstr "(Rendszer alapértelmezett)"
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:91
+msgid "5.1 Surround"
+msgstr ""
+
+#: programs/winecfg/winecfg.rc:92
 #, fuzzy
 #| msgid "graphic"
 msgid "Quadraphonic"
 msgstr "grafika"
 
-#: programs/winecfg/winecfg.rc:92
+#: programs/winecfg/winecfg.rc:93
 msgid "Stereo"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:93
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 #, fuzzy
 #| msgid "Right"
 msgid "Light"
 msgstr "Szöveg jobbra igazítása"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr ""
 
@@ -20692,127 +20821,127 @@ msgstr ""
 "Emlékeztetőül, klikkeljen a 'Hozzáad'-ra a meghajtók fülön, hogy létrehozzon "
 "egyet!\n"
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr "Vezérlők háttere"
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr "Vezérlők szövege"
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr "Menü háttér"
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr "Menü szöveg"
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr "Görgetősáv"
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr "Beállítás há&ttérként"
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr "Kijelölt szöveg"
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr "Tooltip háttér"
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr "Tooptip szöveg"
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr "Ablak háttér"
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr "Ablak szöveg"
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 msgid "Active Title Bar"
 msgstr "Aktív címsor"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr "Aktív címsor szöveg"
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr "Inaktív címsor"
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr "Inaktív címsor szöveg"
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr "Üzenetablak szöveg"
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr "Alkalmazás munkaterület"
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr "Ablak keret"
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr "Aktív keret"
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr "Inaktív keret"
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr "Vezérlők árnyékolása"
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr "Szürke szöveg"
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr "Vezérlők kiemelése"
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr "Vezérlők sötét árnyékolása"
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr "Vezérlők fénybeállítása"
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr "Vezérlőnként változó hátter"
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr "Kiemeltsáv elem"
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr "Aktív ablakcímsor áttetszóség"
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr "Inaktív ablakcímsor áttetszóség"
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr "Menü kiemelés"
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr "Menüsor"
 
diff --git a/po/it.po b/po/it.po
index cde3bb9a2478..413dfd06970a 100644
--- a/po/it.po
+++ b/po/it.po
@@ -92,7 +92,7 @@ msgstr "&Modifica..."
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr "&Rimuovi"
@@ -129,7 +129,7 @@ msgstr "Informazioni di supporto"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -237,7 +237,7 @@ msgstr "&Installa"
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -750,7 +750,7 @@ msgid "Font St&yle:"
 msgstr "&Stile:"
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "Dimen&sione:"
 
@@ -766,7 +766,7 @@ msgstr "&Barrato"
 msgid "&Underline"
 msgstr "S&ottolineato"
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "&Colore:"
 
@@ -945,7 +945,7 @@ msgstr "Numero di &copie:"
 msgid "C&ollate"
 msgstr "&Fascicola"
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr "&Dimensione:"
 
@@ -1023,7 +1023,7 @@ msgstr "Nome del file:"
 msgid "Files of type:"
 msgstr "Tipo del file:"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr "File non trovato"
 
@@ -2490,7 +2490,7 @@ msgid "&File name:"
 msgstr "Nome del &file:"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr "&Naviga..."
 
@@ -3910,11 +3910,19 @@ msgstr "Indice"
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr "Codec Video Wine Video 1"
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr ""
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr "&Disabilita"
 
@@ -4073,13 +4081,13 @@ msgstr "Chiamata o argomento di procedura non valido"
 msgid "Subscript out of range"
 msgstr "Sottoscript fuori portata"
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 #, fuzzy
 #| msgid "Out of paper; "
 msgid "Out of stack space"
 msgstr "Carta esaurita; "
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr "Richiesto un oggetto"
 
@@ -4087,25 +4095,25 @@ msgstr "Richiesto un oggetto"
 msgid "Automation server can't create object"
 msgstr "Il server di automazione non può creare l'oggetto"
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr "L'oggetto non supporta questa proprietà o metodo"
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr "L'oggetto non supporta questa azione"
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr "Argomento non opzionale"
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 #, fuzzy
 #| msgid "Object Class Violation"
 msgid "Object not a collection"
 msgstr "Violazione di classe dell'oggetto"
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr "Errore di sintassi"
 
@@ -4113,33 +4121,33 @@ msgstr "Errore di sintassi"
 msgid "Expected ';'"
 msgstr "Richiesto ';'"
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr "Richiesto '('"
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr "Richiesto ')'"
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 #, fuzzy
 #| msgid "Subject Key Identifier"
 msgid "Expected identifier"
 msgstr "Identificatore della chiave del soggetto"
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected '='"
 msgstr "Richiesto ';'"
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 #, fuzzy
 #| msgid "Invalid parameter.\n"
 msgid "Invalid character"
 msgstr "Parametro non valido.\n"
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr "Costante stringa non terminata"
 
@@ -4187,7 +4195,7 @@ msgstr ""
 msgid "Microsoft JScript runtime error"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 #, fuzzy
 #| msgid "Unknown error"
 msgid "Unknown runtime error"
@@ -4215,7 +4223,7 @@ msgstr "'[oggetto]' non è un oggetto data"
 msgid "Object expected"
 msgstr "Previsto un oggetto"
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr "Assegnamento illegale"
 
@@ -4445,11 +4453,11 @@ msgstr "File non trovato.\n"
 msgid "Path not found.\n"
 msgstr "Percorso non trovato.\n"
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr "Troppi file aperti.\n"
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr "Accesso negato.\n"
 
@@ -5804,7 +5812,7 @@ msgstr "Operazione annullata dall'utente.\n"
 msgid "File has a user-mapped section.\n"
 msgstr "Il file ha una sezione mappata ad utente.\n"
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr "Connessione rifiutata.\n"
 
@@ -7392,91 +7400,97 @@ msgstr "Sito inesistente.\n"
 
 #: dlls/kernelbase/winerror.mc:3750
 #, fuzzy
+#| msgid "File or directory corrupt.\n"
+msgid "File or directory is not a reparse point.\n"
+msgstr "File o cartella corrotti.\n"
+
+#: dlls/kernelbase/winerror.mc:3755
+#, fuzzy
 #| msgid "Invalid at interrupt time.\n"
 msgid "Call interrupted.\n"
 msgstr "Non valido al momento dell'interrupt.\n"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 #, fuzzy
 #| msgid "Invalid handle.\n"
 msgid "Invalid file handle.\n"
 msgstr "Handle non valido.\n"
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 #, fuzzy
 #| msgid "Invalid network address.\n"
 msgid "Invalid pointer address.\n"
 msgstr "Indirizzo network non valido.\n"
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 #, fuzzy
 #| msgid "Invalid name.\n"
 msgid "Invalid argument.\n"
 msgstr "Nome non valido.\n"
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 #, fuzzy
 #| msgid "Connection refused.\n"
 msgid "Connection reset by peer.\n"
 msgstr "Connessione rifiutata.\n"
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 #, fuzzy
 #| msgid "Point not found.\n"
 msgid "Host not found.\n"
 msgstr "Punto non trovato.\n"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 #, fuzzy
 #| msgid "File not found.\n"
 msgid "Nonauthoritative host not found.\n"
 msgstr "File non trovato.\n"
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 #, fuzzy
 #| msgid "A printer error occurred."
 msgid "Nonrecoverable error.\n"
 msgstr "Si è verificato un errore della stampante."
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 #, fuzzy
 #| msgid "Not implemented"
 msgid "Not implemented.\n"
 msgstr "Non implementato"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 #, fuzzy
 #| msgid "RPC call failed.\n"
 msgid "Call failed.\n"
 msgstr "Chiamata RPC fallita.\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 #, fuzzy
 #| msgid "Unable to unload media.\n"
 msgid "Unable to find matching object.\n"
 msgstr "Impossibile scaricare il supporto.\n"
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 #, fuzzy
 #| msgid "Message 0x%1 not found in file %2.\n"
 msgid "No Signature found in file.\n"
 msgstr "Messaggio 0x%1 non trovato nel file %2.\n"
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 #, fuzzy
 #| msgid "Invalid level.\n"
 msgid "Invalid call.\n"
 msgstr "Livello non valido.\n"
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 #, fuzzy
 #| msgid "Help not available."
 msgid "Resource is not currently available.\n"
@@ -8688,7 +8702,7 @@ msgstr "Iperlink"
 msgid "Hyperlink Information"
 msgstr "Informazioni sull'iperlink"
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr "&Tipo:"
 
@@ -10530,7 +10544,7 @@ msgid "b"
 msgstr "b"
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr "dpi"
@@ -11070,7 +11084,7 @@ msgstr "&Apri:"
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr "&Naviga..."
 
@@ -11170,7 +11184,7 @@ msgstr "Locazione originale"
 msgid "Date deleted"
 msgstr "Data di eliminazione"
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -14139,278 +14153,354 @@ msgstr ""
 msgid "Type mismatch"
 msgstr "Discordanza del tipo dei dati.\n"
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 #, fuzzy
 #| msgid "I/O device error.\n"
 msgid "Device I/O error"
 msgstr "Errore I/O dell'unità.\n"
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 #, fuzzy
 #| msgid "File already exists.\n"
 msgid "File already exists"
 msgstr "File esistente.\n"
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 #, fuzzy
 #| msgid "Disk full.\n"
 msgid "Disk full"
 msgstr "Disco pieno.\n"
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 #, fuzzy
 #| msgid "Too many open files.\n"
 msgid "Too many files"
 msgstr "Troppi file aperti.\n"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 #, fuzzy
 #| msgid "Access denied.\n"
 msgid "Permission denied"
 msgstr "Accesso negato.\n"
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 #, fuzzy
 #| msgid "Path not found.\n"
 msgid "Path not found"
 msgstr "Percorso non trovato.\n"
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 #, fuzzy
 #| msgid "(value not set)"
 msgid "Object variable not set"
 msgstr "(valore non immesso)"
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 #, fuzzy
 #| msgid "Object UUID not found.\n"
 msgid "For loop not initialized"
 msgstr "UUID dell'oggetto non trovato.\n"
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 #, fuzzy
 #| msgid "Invalid user buffer.\n"
 msgid "Invalid use of Null"
 msgstr "Buffer utente non valido.\n"
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 #, fuzzy
 #| msgid "Automation server can't create object"
 msgid "ActiveX component can't create object"
 msgstr "Il server di automazione non può creare l'oggetto"
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Class doesn't support Automation"
 msgstr "L'oggetto non supporta questa azione"
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Object doesn't support named arguments"
 msgstr "L'oggetto non supporta questa azione"
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Object doesn't support current locale setting"
 msgstr "L'oggetto non supporta questa azione"
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 #, fuzzy
 #| msgid "Element not found.\n"
 msgid "Named argument not found"
 msgstr "Elemento non trovato.\n"
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 #, fuzzy
 #| msgid "Specified control was not found in message"
 msgid "Specified DLL function not found"
 msgstr "Il controllo specificato non è stato trovato nel messaggio"
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 #, fuzzy
 #| msgid "'|' is undefined"
 msgid "Variable is undefined"
 msgstr "'|' non è definito"
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+#, fuzzy
+#| msgid "Class does not exist.\n"
+msgid "Class not defined"
+msgstr "Class non esiste.\n"
+
+#: dlls/vbscript/vbscript.rc:71
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected ']'"
+msgstr "Richiesto ';'"
+
+#: dlls/vbscript/vbscript.rc:75
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'If'"
+msgstr "Richiesto ';'"
+
+#: dlls/vbscript/vbscript.rc:76
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'To'"
 msgstr "Richiesto ';'"
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'End'"
 msgstr "Richiesto ';'"
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Function'"
+msgstr "Richiesto ';'"
+
+#: dlls/vbscript/vbscript.rc:79
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Sub'"
+msgstr "Richiesto ';'"
+
+#: dlls/vbscript/vbscript.rc:80
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Then'"
 msgstr "Richiesto ';'"
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Wend'"
 msgstr "Richiesto ';'"
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Loop'"
 msgstr "Richiesto ';'"
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Next'"
 msgstr "Richiesto ';'"
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Case'"
 msgstr "Richiesto ';'"
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Select'"
+msgstr "Richiesto ';'"
+
+#: dlls/vbscript/vbscript.rc:86
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected statement"
 msgstr "Richiesto ';'"
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 #, fuzzy
 #| msgid "Unexpected network error.\n"
 msgid "Expected end of statement"
 msgstr "Errore del network inaspettato.\n"
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 #, fuzzy
 #| msgid "Unterminated string constant"
 msgid "Expected integer constant"
 msgstr "Costante stringa non terminata"
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'With'"
+msgstr "Richiesto ';'"
+
+#: dlls/vbscript/vbscript.rc:90
+#, fuzzy
+#| msgid "Secret too long.\n"
+msgid "Identifier too long"
+msgstr "Segreto troppo lungo.\n"
+
+#: dlls/vbscript/vbscript.rc:92
 #, fuzzy
 #| msgid "Invalid flag number.\n"
 msgid "Invalid number"
 msgstr "Numero di flag non valido.\n"
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+#, fuzzy
+#| msgid "Invalid user buffer.\n"
+msgid "Invalid use of 'Me' keyword"
+msgstr "Buffer utente non valido.\n"
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 #, fuzzy
 #| msgid "Invalid printer state.\n"
 msgid "Invalid 'exit' statement"
 msgstr "Stato della stampante non valido.\n"
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 #, fuzzy
 #| msgid "Label redefined"
 msgid "Name redefined"
 msgstr "Etichetta ridefinita"
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 #, fuzzy
 #| msgid "Unexpected network error.\n"
 msgid "Expected literal constant"
 msgstr "Errore del network inaspettato.\n"
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'In'"
 msgstr "Richiesto ';'"
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Class'"
 msgstr "Richiesto ';'"
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Property'"
+msgstr "Richiesto ';'"
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Unexpected 'Next'"
 msgstr "Richiesto ';'"
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr ""
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr "Wine"
 
@@ -15604,7 +15694,7 @@ msgid "Digi&tal"
 msgstr "Digi&tale"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "&Carattere..."
@@ -16677,6 +16767,41 @@ msgstr "Ogni carattere è largo %1!u! pixel e alto %2!u! pixel"
 msgid "This is a test"
 msgstr "Questa è una prova"
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+#, fuzzy
+#| msgid "Error: Could not find process \"%1\".\n"
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr "Errore: processo non trovato \"%1\".\n"
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr "Strumento di Diagnostica DirectX"
@@ -20270,7 +20395,7 @@ msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr ""
 "La configurazione di Wine in %s è in aggiornamento, aspetta un momento..."
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -20282,23 +20407,23 @@ msgstr ""
 "dalla Free Software Foundation; sia la versione 2.1 della licenza, o (a tua "
 "scelta) qualunque altra versione più recente."
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 msgid "Windows registration information"
 msgstr "Informazioni di registrazione di Windows"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr "&Proprietario:"
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr "&Organizzazione:"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr "Impostazioni delle applicazioni"
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
@@ -20309,57 +20434,57 @@ msgstr ""
 "cambiare le impostazioni a livello di sistema o per applicazione pure in "
 "quelle schede."
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 #, fuzzy
 #| msgid "&Add application..."
 msgid "Add appli&cation..."
 msgstr "&Aggiungi applicazione..."
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr "&Rimuovi applicazione"
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr "Versione di Windows:"
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr "Impostazioni delle finestre"
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr "Cattura automaticamente il &mouse nelle finestre a schermo pieno"
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr "Permetti al gestore delle finestre di &decorare le finestre"
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr "Permetti al &gestore delle finestre di controllare le finestre"
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr "&Emula un desktop virtuale"
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr "Dimensione del desktop:"
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr "Risoluzione dello schermo"
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr "Questo è un testo di esempio che usa il carattere Tahoma a 10 punti"
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr "Sostituzioni di DLL"
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
@@ -20369,59 +20494,59 @@ msgstr ""
 "essere integrate (fornite da Wine) o native (prese da Windows o fornite "
 "dall'applicazione)."
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr "&Nuova sostituzione per la libreria:"
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr "&Sostituzioni esistenti:"
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 msgid "&Edit..."
 msgstr "&Modifica..."
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr "Modifica sostituzione"
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr "Ordine di caricamento"
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr "&Integrata (Wine)"
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr "&Nativa (Windows)"
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 #, fuzzy
 #| msgid "Bui&ltin then Native"
 msgid "Buil&tin then Native"
 msgstr "In&tegrata poi nativa"
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr "N&ativa poi integrata"
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr "Seleziona la lettera dell'unità"
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 #, fuzzy
 #| msgid "Wine configuration"
 msgid "Drive configuration"
 msgstr "Configurazione di Wine"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 #, fuzzy
 #| msgid ""
 #| "Failed to connect to the mount manager, the drive configuration cannot be "
@@ -20433,127 +20558,127 @@ msgstr ""
 "Impossibile connettersi al gestore delle unità, la configurazione dell'unità "
 "non può essere modificata."
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 #, fuzzy
 #| msgid "&Add..."
 msgid "A&dd..."
 msgstr "Aggiungi..."
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr "&Percorso:"
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 #, fuzzy
 #| msgid "Show &Advanced"
 msgid "Show Advan&ced"
 msgstr "Mostra controlli &avanzati"
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr "&Unità:"
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr "Na&viga..."
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr "&Etichetta:"
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr "Numero &seriale:"
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 #, fuzzy
 #| msgid "Show &dot files"
 msgid "&Show dot files"
 msgstr "Mostra file &dot"
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr "Diagnostica del driver"
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr "&Test dell'audio"
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr "Valori predefiniti"
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr "Unità output:"
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr "Unità output voce:"
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr "Unità input:"
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr "Unità input voce:"
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 #, fuzzy
 #| msgid "Output device:"
 msgid "MIDI output device:"
 msgstr "Unità output:"
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 #, fuzzy
 #| msgid "Wine configuration"
 msgid "Speaker configuration"
 msgstr "Configurazione di Wine"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr "Aspetto"
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr "&Tema:"
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 #, fuzzy
 #| msgid "&Theme:"
 msgid "&WinRT theme:"
 msgstr "&Tema:"
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr "&Installa un tema..."
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr "Ogg&etto:"
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr "C&olore:"
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr "Cartelle"
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr "&Collega a:"
 
@@ -20636,30 +20761,34 @@ msgid "(System default)"
 msgstr "(valore predefinito di sistema)"
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:91
+msgid "5.1 Surround"
+msgstr ""
+
+#: programs/winecfg/winecfg.rc:92
 #, fuzzy
 #| msgid "graphic"
 msgid "Quadraphonic"
 msgstr "immagine"
 
-#: programs/winecfg/winecfg.rc:92
+#: programs/winecfg/winecfg.rc:93
 msgid "Stereo"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:93
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 #, fuzzy
 #| msgid "Right"
 msgid "Light"
 msgstr "Destra"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr ""
 
@@ -20786,127 +20915,127 @@ msgstr ""
 "\n"
 "Ricordati di cliccare 'Aggiungi' nella sezione Unità per crearne uno!\n"
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr "Controlli - Sfondo"
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr "Controlli - Testo"
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr "Menù - Sfondo"
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr "Menù - Testo"
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr "Barra di scorrimento"
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr "Selezione - Sfondo"
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr "Selezione - Testo"
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr "Tooltip - Sfondo"
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr "Tooltip - Testo"
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr "Finestra - Sfondo"
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr "Finestra - Testo"
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 msgid "Active Title Bar"
 msgstr "Titolo attivo - Barra"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr "Titolo attivo - Testo"
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr "Titolo inattivo - Barra"
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr "Titolo inattivo - Testo"
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr "Testo della casella di Messaggio"
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr "Spazio di lavoro dell'applicazione"
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr "Frame della finestra"
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr "Bordo attivo"
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr "Bordo inattivo"
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr "Controlli - Ombre"
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr "Testo disabilitato"
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr "Controlli - Selezione"
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr "Controlli - Ombre scure"
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr "Controlli - Luce"
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr "Controlli - Sfondo alternativo"
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr "Oggetto Hot Tracked"
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr "Titolo attivo - Gradiente della barra"
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr "Titolo inattivo - Gradiente della barra"
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr "Menù - Selezione"
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr "Menù - Barra"
 
diff --git a/po/ja.po b/po/ja.po
index ab007c17a7be..21013da8b9b7 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -82,7 +82,7 @@ msgstr "変更(&M)..."
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr "削除(&R)"
@@ -119,7 +119,7 @@ msgstr "サポート情報"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -226,7 +226,7 @@ msgstr "インストール(&I)"
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -720,7 +720,7 @@ msgid "Font St&yle:"
 msgstr "スタイル(&Y):"
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "サイズ(&S):"
 
@@ -736,7 +736,7 @@ msgstr "取り消し線(&K)"
 msgid "&Underline"
 msgstr "下線(&U)"
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "配色(&C):"
 
@@ -913,7 +913,7 @@ msgstr "部数(&C):"
 msgid "C&ollate"
 msgstr "部単位で印刷(&O)"
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr "サイズ(&Z):"
 
@@ -991,7 +991,7 @@ msgstr "ファイル名:"
 msgid "Files of type:"
 msgstr "ファイルの種類:"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr "ファイルが見つかりません"
 
@@ -2441,7 +2441,7 @@ msgid "&File name:"
 msgstr "ファイル名(&F):"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr "参照(&R)..."
 
@@ -3796,11 +3796,19 @@ msgstr "Indeo5"
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr "Indeo Video Interactive バージョン 5 ビデオ コーデック"
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr "ジョイスティック"
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr "無効化(&D)"
 
@@ -3945,11 +3953,11 @@ msgstr "プロシージャ呼び出しまたは引数が正しくありません
 msgid "Subscript out of range"
 msgstr "添字が範囲外です"
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 msgid "Out of stack space"
 msgstr "スタック スペースが不足しています"
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr "オブジェクトが必要です"
 
@@ -3957,23 +3965,23 @@ msgstr "オブジェクトが必要です"
 msgid "Automation server can't create object"
 msgstr "オートメーション サーバーはオブジェクトを生成できません"
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr "オブジェクトはこのプロパティまたはメソッドをサポートしていません"
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr "オブジェクトはこの操作をサポートしていません"
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr "引数は省略できません"
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 msgid "Object not a collection"
 msgstr "オブジェクトはコレクションではありません"
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr "構文エラー"
 
@@ -3981,27 +3989,27 @@ msgstr "構文エラー"
 msgid "Expected ';'"
 msgstr "「;」が必要です"
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr "「(」が必要です"
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr "「)」が必要です"
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr "識別子が必要です"
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 msgid "Expected '='"
 msgstr "「=」が必要です"
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 msgid "Invalid character"
 msgstr "使用できない文字です"
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr "文字列定数が終端していません"
 
@@ -4045,7 +4053,7 @@ msgstr "Microsoft JScript コンパイル エラー"
 msgid "Microsoft JScript runtime error"
 msgstr "Microsoft JScript 実行時エラー"
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 msgid "Unknown runtime error"
 msgstr "未知の実行時エラー"
 
@@ -4069,7 +4077,7 @@ msgstr "'[object]' は日付オブジェクトではありません"
 msgid "Object expected"
 msgstr "オブジェクトを期待していました"
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr "不正な代入です"
 
@@ -4278,11 +4286,11 @@ msgstr "ファイルが見つかりません。\n"
 msgid "Path not found.\n"
 msgstr "パスが見つかりません。\n"
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr "これ以上ファイルを開けません。\n"
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr "アクセスが拒否されました。\n"
 
@@ -5634,7 +5642,7 @@ msgstr "操作はユーザーによって中断されました。\n"
 msgid "File has a user-mapped section.\n"
 msgstr "ファイルにはユーザーマップされたセクションがあります。\n"
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr "接続は拒否されました。\n"
 
@@ -7220,66 +7228,72 @@ msgid "This network connection does not exist.\n"
 msgstr "このネットワーク接続は存在しません。\n"
 
 #: dlls/kernelbase/winerror.mc:3750
+#, fuzzy
+#| msgid "File or directory corrupt.\n"
+msgid "File or directory is not a reparse point.\n"
+msgstr "ファイルかディレクトリが破損しています。\n"
+
+#: dlls/kernelbase/winerror.mc:3755
 msgid "Call interrupted.\n"
 msgstr "呼び出しは割り込まれました。\n"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 msgid "Invalid file handle.\n"
 msgstr "ファイル ハンドルが正しくありません。\n"
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 msgid "Invalid pointer address.\n"
 msgstr "ポインター アドレスが正しくありません。\n"
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 msgid "Invalid argument.\n"
 msgstr "引数は正しくありません。\n"
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr "要求されたアドレスを割り当てられません。\n"
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 msgid "Connection reset by peer.\n"
 msgstr "相手側により接続がリセットされました。\n"
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 msgid "Host not found.\n"
 msgstr "ホストが見つかりません。\n"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 msgid "Nonauthoritative host not found.\n"
 msgstr "権威のないホストが見つかりません。\n"
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 msgid "Nonrecoverable error.\n"
 msgstr "回復不能エラーです。\n"
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr "名前は有効ですが、データ レコードがありません。\n"
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 msgid "Not implemented.\n"
 msgstr "未実装です。\n"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 msgid "Call failed.\n"
 msgstr "呼び出しが失敗しました。\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 msgid "Unable to find matching object.\n"
 msgstr "一致するオブジェクトを見つけられません。\n"
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 msgid "No Signature found in file.\n"
 msgstr "ファイルにデジタル署名がありません。\n"
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 msgid "Invalid call.\n"
 msgstr "呼び出しは正しくありません。\n"
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 msgid "Resource is not currently available.\n"
 msgstr "リソースは現在使用できません。\n"
 
@@ -8242,7 +8256,7 @@ msgstr "ハイパーリンク"
 msgid "Hyperlink Information"
 msgstr "ハイパーリンクの情報"
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr "タイプ(&T):"
 
@@ -9824,7 +9838,7 @@ msgid "b"
 msgstr "b"
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr "dpi"
@@ -10365,7 +10379,7 @@ msgstr "名前(&O):"
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr "参照(&B)..."
 
@@ -10451,7 +10465,7 @@ msgstr "元の場所"
 msgid "Date deleted"
 msgstr "削除日"
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -12885,250 +12899,326 @@ msgstr "0 による除算エラー。\n"
 msgid "Type mismatch"
 msgstr "型が不一致です"
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 msgid "Device I/O error"
 msgstr "デバイス入出力エラーです"
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 msgid "File already exists"
 msgstr "ファイルはすでに存在します"
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 msgid "Disk full"
 msgstr "ディスクがいっぱいです"
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 msgid "Too many files"
 msgstr "ファイルが多すぎます"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 msgid "Permission denied"
 msgstr "許可がありません"
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr "パス/ファイルのアクセス エラーです"
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 msgid "Path not found"
 msgstr "パスが見つかりません"
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 msgid "Object variable not set"
 msgstr "オブジェクト変数は設定されていません"
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 #, fuzzy
 #| msgid "Object is not initialized.\n"
 msgid "For loop not initialized"
 msgstr "オブジェクトが初期化されていません。\n"
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 msgid "Invalid use of Null"
 msgstr "Null の使い方が正しくありません"
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr "必要な一時ファイルを作成できません"
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 msgid "ActiveX component can't create object"
 msgstr "ActiveX コンポーネントはオブジェクトを生成できません"
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 msgid "Class doesn't support Automation"
 msgstr "クラスはこのオートメーションをサポートしていません"
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr "オートメーション操作中にファイル名またはクラス名が見つかりません"
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 msgid "Object doesn't support named arguments"
 msgstr "オブジェクトは名前付き引数をサポートしていません"
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 msgid "Object doesn't support current locale setting"
 msgstr "オブジェクトは現在のロケール設定をサポートしていません"
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 msgid "Named argument not found"
 msgstr "名前付き引数が見つかりません"
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr "引数の数に誤りがあるかプロパティの代入が正しくありません"
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 msgid "Specified DLL function not found"
 msgstr "指定された DLL 関数が見つかりません"
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr "VBScript ではオートメーション型を使う変数はサポートされていません"
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr "リモートのサーバー機が存在しないか使用できません"
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 #, fuzzy
 #| msgid "'|' is undefined"
 msgid "Variable is undefined"
 msgstr "'|'は未定義です"
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr "正しくないか資格のない参照です"
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+#, fuzzy
+#| msgid "Class does not exist.\n"
+msgid "Class not defined"
+msgstr "クラスは存在しません。\n"
+
+#: dlls/vbscript/vbscript.rc:71
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected ']'"
+msgstr "「;」が必要です"
+
+#: dlls/vbscript/vbscript.rc:75
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'If'"
+msgstr "「;」が必要です"
+
+#: dlls/vbscript/vbscript.rc:76
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'To'"
 msgstr "「;」が必要です"
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'End'"
 msgstr "「@end」が必要です"
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Function'"
+msgstr "「;」が必要です"
+
+#: dlls/vbscript/vbscript.rc:79
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Sub'"
+msgstr "「;」が必要です"
+
+#: dlls/vbscript/vbscript.rc:80
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'Then'"
 msgstr "「@end」が必要です"
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'Wend'"
 msgstr "「@end」が必要です"
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Loop'"
 msgstr "「;」が必要です"
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Next'"
 msgstr "「;」が必要です"
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Case'"
 msgstr "「;」が必要です"
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Select'"
+msgstr "「;」が必要です"
+
+#: dlls/vbscript/vbscript.rc:86
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected statement"
 msgstr "「@end」が必要です"
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 #, fuzzy
 #| msgid "Unexpected end of input data stream\n"
 msgid "Expected end of statement"
 msgstr "予期しない入力データ ストリームの終端です\n"
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 #, fuzzy
 #| msgid "Unterminated string constant"
 msgid "Expected integer constant"
 msgstr "文字列定数が終端していません"
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'With'"
+msgstr "「;」が必要です"
+
+#: dlls/vbscript/vbscript.rc:90
+#, fuzzy
+#| msgid "Secret too long.\n"
+msgid "Identifier too long"
+msgstr "シークレットが長すぎます。\n"
+
+#: dlls/vbscript/vbscript.rc:92
 #, fuzzy
 #| msgid "Invalid flag number.\n"
 msgid "Invalid number"
 msgstr "フラグの値は正しくありません。\n"
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+#, fuzzy
+#| msgid "Invalid use of Null"
+msgid "Invalid use of 'Me' keyword"
+msgstr "Null の使い方が正しくありません"
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 #, fuzzy
 #| msgid "Invalid printer state.\n"
 msgid "Invalid 'exit' statement"
 msgstr "プリンターの状態が正しくありません。\n"
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 #, fuzzy
 #| msgid "Label redefined"
 msgid "Name redefined"
 msgstr "ラベルが再定義されました"
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 #, fuzzy
 #| msgid "Expected whitespace character\n"
 msgid "Expected literal constant"
 msgstr "空白文字が必要です\n"
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'In'"
 msgstr "「;」が必要です"
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Class'"
 msgstr "「;」が必要です"
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Property'"
+msgstr "「;」が必要です"
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Unexpected 'Next'"
 msgstr "「;」が必要です"
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr "Microsoft VBScript コンパイル エラー"
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr "Microsoft VBScript 実行時エラー"
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr "Wine"
 
@@ -14255,7 +14345,7 @@ msgid "Digi&tal"
 msgstr "デジタル(&T)"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "フォント(&F)..."
@@ -15270,6 +15360,41 @@ msgstr "それぞれの文字は %1!u! ピクセルの幅、%2!u! ピクセル
 msgid "This is a test"
 msgstr "これはテストです"
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+#, fuzzy
+#| msgid "Error: Could not find process \"%1\".\n"
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr "エラー: プロセス(%1)が見つかりません。\n"
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr "DirectX 診断ツール"
@@ -18902,7 +19027,7 @@ msgstr ""
 msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr "%s にある Wine 設定を更新しています。しばらくお待ちください..."
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -18914,23 +19039,23 @@ msgstr ""
 "望によってはそれ以降の バージョン のうちどれか) の定める条件の下で 再頒布 ま"
 "たは 改変 することができます。"
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 msgid "Windows registration information"
 msgstr "Windows 登録情報"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr "所有者(&O):"
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr "組織(&Z):"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr "アプリケーション設定"
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
@@ -18940,55 +19065,55 @@ msgstr ""
 "ます。このタブはライブラリおよびグラフィック各タブと連動しますので、システム"
 "全体の設定や個別アプリケーションの設定の変更が行えます。"
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 msgid "Add appli&cation..."
 msgstr "アプリケーションを追加(&C)..."
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr "アプリケーションを削除(&R)"
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr "&Windows バージョン:"
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr "ウィンドウ設定"
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr "フルスクリーン ウィンドウでマウスを自動的に捕捉する(&M)"
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr "ウィンドウ マネージャーがウィンドウを装飾するのを許可する(&D)"
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr "ウィンドウ マネージャーがウィンドウを制御するのを許可する(&W)"
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr "仮想デスクトップをエミュレートする(&E)"
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr "デスクトップの大きさ(&S):"
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr "画面の解像度"
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr "10 ポイントの Tahoma による見本です"
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr "DLL オーバーライド"
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
@@ -18997,170 +19122,170 @@ msgstr ""
 "ダイナミック リンク ライブラリ (DLL) は個別に 内蔵版 (Wine提供) または ネイ"
 "ティブ版 (Windows もしくはアプリケーション提供のもの) を選ぶことができます。"
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr "ライブラリの新規オーバーライド(&N):"
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr "追加(&D)"
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr "既存のオーバーライド(&O):"
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 msgid "&Edit..."
 msgstr "編集(&E)..."
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr "オーバーライドの編集"
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr "読み込み順序"
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr "内蔵版 (Wine)(&B)"
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr "ネイティブ版 (Windows)(&N)"
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 msgid "Buil&tin then Native"
 msgstr "内蔵版後にネイティブ版(&T)"
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr "ネイティブ版後に内蔵版(&V)"
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr "ドライブ レターを選択"
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 msgid "Drive configuration"
 msgstr "ドライブの設定"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 msgid ""
 "Failed to connect to the mount manager; the drive configuration cannot be "
 "edited."
 msgstr ""
 "マウント マネージャーへの接続に失敗したため、ドライブ設定は変更できません。"
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 msgid "A&dd..."
 msgstr "追加(&D)..."
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr "パス(&P):"
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 msgid "Show Advan&ced"
 msgstr "詳細を表示(&C)"
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr "デバイス(&V):"
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr "参照(&W)..."
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr "ラベル(&L):"
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr "シリアル番号(&E):"
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 msgid "&Show dot files"
 msgstr "ドット ファイルを表示する(&S)"
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr "ドライバー診断"
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr "音をテスト(&T)"
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr "デフォルト"
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr "出力デバイス:"
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr "音声出力デバイス:"
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr "入力デバイス:"
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr "音声入力デバイス:"
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 msgid "MIDI output device:"
 msgstr "MIDI 出力デバイス:"
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 msgid "Speaker configuration"
 msgstr "スピーカー 設定"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr "スピーカー:"
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr "外観"
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr "テーマ(&T):"
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 msgid "&WinRT theme:"
 msgstr "&WinRT テーマ:"
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr "テーマのインストール(&I)..."
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr "項目(&E):"
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr "色(&O):"
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr "MIME タイプ"
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr "ファイルとプロトコル関連付けの管理(&A)"
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr "フォルダー"
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr "リンク先(&L):"
 
@@ -19241,26 +19366,32 @@ msgid "(System default)"
 msgstr "(システム デフォルト)"
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+#, fuzzy
+#| msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr "5.1 サラウンド"
 
 #: programs/winecfg/winecfg.rc:91
+msgid "5.1 Surround"
+msgstr "5.1 サラウンド"
+
+#: programs/winecfg/winecfg.rc:92
 msgid "Quadraphonic"
 msgstr "4 チャンネル ステレオ"
 
-#: programs/winecfg/winecfg.rc:92
+#: programs/winecfg/winecfg.rc:93
 msgid "Stereo"
 msgstr "ステレオ"
 
-#: programs/winecfg/winecfg.rc:93
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr "モノラル"
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 msgid "Light"
 msgstr "ライト"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr "ダーク"
 
@@ -19380,127 +19511,127 @@ msgstr ""
 "C ドライブを作成するためにドライブ タブ内の [追加] を忘れずにクリックしてくだ"
 "さい!\n"
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr "コントロールの背景"
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr "コントロールのテキスト"
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr "メニューの背景"
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr "メニューのテキスト"
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr "スクロール バー"
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr "選択項目の背景"
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr "選択項目のテキスト"
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr "ヒントの背景"
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr "ヒントのテキスト"
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr "ウィンドウの背景"
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr "ウィンドウのテキスト"
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 msgid "Active Title Bar"
 msgstr "アクティブ タイトル バー"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr "アクティブ タイトルのテキスト"
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr "非アクティブ タイトル バー"
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr "非アクティブ タイトルのテキスト"
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr "メッセージ ボックスのテキスト"
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr "アプリケーション作業域"
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr "ウィンドウの境界"
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr "アクティブ境界"
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr "非アクティブ境界"
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr "コントロールの影"
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr "灰色テキスト"
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr "コントロールの明るい部分"
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr "コントロールの暗い影"
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr "コントロールの明かり"
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr "コントロールの別の背景"
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr "選択中のアイテム"
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr "アクティブ タイトル バーの階調"
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr "非アクティブ タイトル バーの階調"
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr "メニューの明るい部分"
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr "メニュー バー"
 
diff --git a/po/ka.po b/po/ka.po
index 809581016571..eb544573378c 100644
--- a/po/ka.po
+++ b/po/ka.po
@@ -84,7 +84,7 @@ msgstr "&ჩასწორება..."
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr "&წაშლა"
@@ -121,7 +121,7 @@ msgstr "მხარდაჭერის ინფორმაცია"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -227,7 +227,7 @@ msgstr "&დაყენება"
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -722,7 +722,7 @@ msgid "Font St&yle:"
 msgstr "ფონტის &სტილი:"
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "&ზომა:"
 
@@ -738,7 +738,7 @@ msgstr "გამონა&თება"
 msgid "&Underline"
 msgstr "&ხაზგასმა"
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "&ფერი:"
 
@@ -915,7 +915,7 @@ msgstr "&ასლების რიცხვი:"
 msgid "C&ollate"
 msgstr "&დაშლა"
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr "&ზომა:"
 
@@ -993,7 +993,7 @@ msgstr "ფაილის სახელი:"
 msgid "Files of type:"
 msgstr "ტიპები:"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr "ფაილი ვერ მოიძებნა"
 
@@ -2453,7 +2453,7 @@ msgid "&File name:"
 msgstr "&ფაილის სახელი:"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr "არჩე&ვა..."
 
@@ -3810,11 +3810,19 @@ msgstr "Indeo5"
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr "ვიდეო კოდეკი Indeo Video Interactive version 5"
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr "ჯოისტიკები"
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr "გამო&რთვა"
 
@@ -3964,11 +3972,11 @@ msgstr "აარასწორი პროცედურის გამო
 msgid "Subscript out of range"
 msgstr "ინდექსი დიაპაზონს გარეთაა"
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 msgid "Out of stack space"
 msgstr "სტეკის სივრცე გადაივსო"
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr "ობიექტი მიღებულია"
 
@@ -3976,23 +3984,23 @@ msgstr "ობიექტი მიღებულია"
 msgid "Automation server can't create object"
 msgstr "ავტომატიზაციის სერვერს ობიექტის შექმნა არ შეუძლია"
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr "ობიექტს თვისების ან მეთოდის მხარდაჭერა არ გააჩნია"
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr "ობიექტს ამ ქმედების მხარდაჭერა არ გააჩნია"
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr "არგუმენტი არასავალდებულო არაა"
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 msgid "Object not a collection"
 msgstr "ობიექტი კოლექცია არაა"
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr "სინტაქსური შეცდომა"
 
@@ -4000,27 +4008,27 @@ msgstr "სინტაქსური შეცდომა"
 msgid "Expected ';'"
 msgstr "მოველოდი ';'"
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr "მოველოდი '('"
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr "მოველოდი ')'"
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr "მოველოდი იდენტიფიკატორს"
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 msgid "Expected '='"
 msgstr "მოველოდი '='"
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 msgid "Invalid character"
 msgstr "არასწორი სიმბოლო"
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr "დაუსრულებელი სტრიქონი კონსტანტა"
 
@@ -4064,7 +4072,7 @@ msgstr "Microsoft JScript აგების შეცდომა"
 msgid "Microsoft JScript runtime error"
 msgstr "Microsoft JScript გაშვების გარემოს შეცდომა"
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 msgid "Unknown runtime error"
 msgstr "უცნობი გაშვების გარემოს შეცდომა"
 
@@ -4090,7 +4098,7 @@ msgstr "'[object]' თარიღის ობიექტი არაა"
 msgid "Object expected"
 msgstr "მოველოდი ობიექტს"
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr "დაუშვებელი მინიჭება"
 
@@ -4305,11 +4313,11 @@ msgstr "ფაილი ვერ მოიძებნა.\n"
 msgid "Path not found.\n"
 msgstr "ბილიკი ვერ ვიპოვე.\n"
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr "მეტისმეტად ბევრი გახსნილი ფაილი.\n"
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr "წვდომა აკრძალულია.\n"
 
@@ -5663,7 +5671,7 @@ msgstr "ოპერაცია გაუქმებულია მომხ
 msgid "File has a user-mapped section.\n"
 msgstr "ფაილს მომხმარებელზე-მიმაგრებული სექცია გააჩნია.\n"
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr "დაკავშირება უარყოფილია.\n"
 
@@ -7264,68 +7272,74 @@ msgid "This network connection does not exist.\n"
 msgstr "ეს ქსელური შეერთება არ არსებობს.\n"
 
 #: dlls/kernelbase/winerror.mc:3750
+#, fuzzy
+#| msgid "File or directory corrupt.\n"
+msgid "File or directory is not a reparse point.\n"
+msgstr "ფაილი ან საქაღალდე დაზიანებულია.\n"
+
+#: dlls/kernelbase/winerror.mc:3755
 msgid "Call interrupted.\n"
 msgstr "გამოძახება შეწყდა.\n"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 msgid "Invalid file handle.\n"
 msgstr "არასწორი ფაილის დამმუშავებელი.\n"
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 msgid "Invalid pointer address.\n"
 msgstr "არასწორი მაჩვენებლის მისამართი.\n"
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 msgid "Invalid argument.\n"
 msgstr "არასწორი არგუმენტი.\n"
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr "მითითებული მისამართის მინიჭება შეუძლებელია.\n"
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 msgid "Connection reset by peer.\n"
 msgstr "კავშირი გაწყვეტილია პარტნიორის მიერ.\n"
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 msgid "Host not found.\n"
 msgstr "ჰოსტი ნაპოვნი არაა.\n"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 msgid "Nonauthoritative host not found.\n"
 msgstr "არაავტორიტეტული ჰოსტი ვერ ვიპოვე.\n"
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 msgid "Nonrecoverable error.\n"
 msgstr "აღუდგენელი შეცდომა.\n"
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr "სახელი სწორია, მონაცემების ჩანაწერი ვერ ვიპოვე.\n"
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 msgid "Not implemented.\n"
 msgstr "განხორციელებული არაა.\n"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 msgid "Call failed.\n"
 msgstr "გამოძახების შეცდომა.\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 #, fuzzy
 #| msgid "Unable to unload media.\n"
 msgid "Unable to find matching object.\n"
 msgstr "მედიის გამოტვირთვის შეცდომა.\n"
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 msgid "No Signature found in file.\n"
 msgstr "ფაილში ხელმოწერა ვერ ვიპოვე.\n"
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 msgid "Invalid call.\n"
 msgstr "არასწორი გამოძახება.\n"
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 msgid "Resource is not currently available.\n"
 msgstr "რესურსი ამჟამად ხელმისაწვდომი არაა.\n"
 
@@ -8287,7 +8301,7 @@ msgstr "ჰიპერბმული"
 msgid "Hyperlink Information"
 msgstr "ჰიპერბმულის ინფორმაცია"
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr "&ტიპი:"
 
@@ -9881,7 +9895,7 @@ msgid "b"
 msgstr "ბ"
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr "dpi"
@@ -10418,7 +10432,7 @@ msgstr "&გახსნა:"
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr "&მოძებნა..."
 
@@ -10504,7 +10518,7 @@ msgstr "საწყისი მდებარეობა"
 msgid "Date deleted"
 msgstr "წაშლის თარიღი"
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -12919,251 +12933,327 @@ msgstr "ნულზე გაყოფის შეცდომა.\n"
 msgid "Type mismatch"
 msgstr "ტიპი არ ემთხვევა"
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 msgid "Device I/O error"
 msgstr "მოწყობილობის შეტანა/გამოტანის შეცდომა"
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 msgid "File already exists"
 msgstr "ფაილი უკვე არსებობს"
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 msgid "Disk full"
 msgstr "დისკი გადავსებულია"
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 msgid "Too many files"
 msgstr "მეტისმეტად ბევრი გახსნილი ფაილი"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 msgid "Permission denied"
 msgstr "წვდომა აკრძალულია"
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr "ბილიკთან/ფაილთან წვდომის შეცდომა"
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 msgid "Path not found"
 msgstr "ბილიკი ვერ ვიპოვე"
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 msgid "Object variable not set"
 msgstr "ობიექტის ცვლადი დაყენებული არაა"
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 #, fuzzy
 #| msgid "Object is not initialized.\n"
 msgid "For loop not initialized"
 msgstr "ობიექტი ინიციალიზებული არაა.\n"
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 msgid "Invalid use of Null"
 msgstr "ნულოვანი მნიშვნელობის არასწორი გამოყენება"
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr "საჭირო დროებით ფაილის შექმნის შეცდომა"
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 msgid "ActiveX component can't create object"
 msgstr "ActiveX კომპონენტს ობიექტის შექმნა არ შეუძლია"
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 msgid "Class doesn't support Automation"
 msgstr "კლასს ავტომატიზაცის მხარდაჭერა არ გააჩნია"
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr "ფაილის ან კლასის სახელი ავტომატიზაციის ოპერაციისას აღმოჩენილი არაა"
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 msgid "Object doesn't support named arguments"
 msgstr "ობიექტს სახელიანი არგუმენტების მხარდაჭერა არ გააჩნია"
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 msgid "Object doesn't support current locale setting"
 msgstr "ობიექტს მიმდინარე ენის პარამეტრის მხარდაჭერა არ გააჩნია"
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 msgid "Named argument not found"
 msgstr "მითითებული არგუმენტი ვერ ვიპოვე"
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr "არგუმენტების არასწორი რაოდენობა ან არასწორი თვისების მინიჭება"
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 msgid "Specified DLL function not found"
 msgstr "მითითებული DLL-ის ფუნქცია ვერ ვიპოვე"
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr ""
 "ცვლადი იყენებს ავტომატიზაციის ტიპს, რომელიც VBScript-ში მარდაჭერილი არაა"
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr "დაშორებული სერვერის მანქანა არ არსებობს ან ხელმიუწვდომელია"
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 #, fuzzy
 #| msgid "'|' is undefined"
 msgid "Variable is undefined"
 msgstr "'|' აღწერილი არაა"
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr "არასწორი ან შეუსაბამო მიმართვა"
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+#, fuzzy
+#| msgid "Class does not exist.\n"
+msgid "Class not defined"
+msgstr "კლასი არ არსებობს.\n"
+
+#: dlls/vbscript/vbscript.rc:71
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected ']'"
+msgstr "მოველოდი ';'"
+
+#: dlls/vbscript/vbscript.rc:75
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'If'"
+msgstr "მოველოდი ';'"
+
+#: dlls/vbscript/vbscript.rc:76
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'To'"
 msgstr "მოველოდი ';'"
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'End'"
 msgstr "მოველოდი '@end'"
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Function'"
+msgstr "მოველოდი ';'"
+
+#: dlls/vbscript/vbscript.rc:79
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Sub'"
+msgstr "მოველოდი ';'"
+
+#: dlls/vbscript/vbscript.rc:80
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'Then'"
 msgstr "მოველოდი '@end'"
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'Wend'"
 msgstr "მოველოდი '@end'"
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Loop'"
 msgstr "მოველოდი ';'"
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Next'"
 msgstr "მოველოდი ';'"
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Case'"
 msgstr "მოველოდი ';'"
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Select'"
+msgstr "მოველოდი ';'"
+
+#: dlls/vbscript/vbscript.rc:86
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected statement"
 msgstr "მოველოდი '@end'"
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 #, fuzzy
 #| msgid "Expected an operand.\n"
 msgid "Expected end of statement"
 msgstr "მოველოდი ოპერანდს.\n"
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 #, fuzzy
 #| msgid "Unterminated string constant"
 msgid "Expected integer constant"
 msgstr "დაუსრულებელი სტრიქონი კონსტანტა"
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'With'"
+msgstr "მოველოდი ';'"
+
+#: dlls/vbscript/vbscript.rc:90
+#, fuzzy
+#| msgid "Secret too long.\n"
+msgid "Identifier too long"
+msgstr "საიდუმლო მეტისმეტად გრძელია.\n"
+
+#: dlls/vbscript/vbscript.rc:92
 #, fuzzy
 #| msgid "Invalid flag number.\n"
 msgid "Invalid number"
 msgstr "ალმის ნომერი არასწორია.\n"
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+#, fuzzy
+#| msgid "Invalid use of Null"
+msgid "Invalid use of 'Me' keyword"
+msgstr "ნულოვანი მნიშვნელობის არასწორი გამოყენება"
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 #, fuzzy
 #| msgid "Invalid printer state.\n"
 msgid "Invalid 'exit' statement"
 msgstr "არასწორი პრინტერის მდგომარეობა.\n"
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 #, fuzzy
 #| msgid "Label redefined"
 msgid "Name redefined"
 msgstr "ჭდე თავიდან აღიწერა"
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 #, fuzzy
 #| msgid "Expected an operator.\n"
 msgid "Expected literal constant"
 msgstr "მოველოდი ოპერატორს.\n"
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'In'"
 msgstr "მოველოდი ';'"
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Class'"
 msgstr "მოველოდი ';'"
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Property'"
+msgstr "მოველოდი ';'"
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Unexpected 'Next'"
 msgstr "მოველოდი ';'"
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr "Microsoft VBScript აგების შეცდომა"
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr "Microsoft VBScript გაშვების გარემოს შეცდომა"
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr "Wine"
 
@@ -14207,7 +14297,7 @@ msgid "Digi&tal"
 msgstr "&ციფრული"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "ფონტი..."
@@ -14999,6 +15089,41 @@ msgstr "თითოეული სიმბოლო %1!u! პიქსელ
 msgid "This is a test"
 msgstr "ეს ტესტია"
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+#, fuzzy
+#| msgid "Error: Could not find process \"%1\".\n"
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr "შეცდომა: პროცესი \"%1\" ვერ ვიპოვე.\n"
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr "DirectX-ის დიაგნოსტიკის პროგრამა"
@@ -18344,7 +18469,7 @@ msgstr ""
 msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr "მიმდინარეობს Wine-ის კონფიგურაციის განახლება %s-ში. მოითმინეთ.."
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -18352,133 +18477,133 @@ msgid ""
 "option) any later version."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 msgid "Windows registration information"
 msgstr "Windows-ის რეგისტრაციის ინფორმაცია"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr "&მფლობელი:"
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr "&ორგანიზაცია:"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr "აპლიკაციის მორგება"
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
 "or per-application settings in those tabs as well."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 msgid "Add appli&cation..."
 msgstr "&აპლიკაციის დამატება..."
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr "&აპლიკაციის წაშლა"
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr "&Windows-ის ვერსია:"
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr "ფანჯრის მორგება"
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr "სრულ ეკრანზე გაშლილი ფანჯრებისთვის &თაგუნას ავტომატური ჩაჭერა"
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr "ფანჯრების მმართველისთვის ფანჯრების &დეკორაციის უფლების მიცემა"
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr "&ფანჯრების მმართველისთვის ფანჯრების მართვის უფლების მიცემა"
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr "ვირტუალური სამუშაო მაგიდის &ემულაცია"
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr "სამუშაო მაგიდის &ზომა:"
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr "ეკრანის გარჩევადობა"
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr "ეს მაგალითი ტექსტია 10-წერტილიანი ფონტით Tahoma"
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr "DLL გადაფარვები"
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
 "application)."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr "&ახალი გადაფარვა ბიბლიოთეკისთვის:"
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr "&დამატება"
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr "არსებული გადაფარვები:"
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 msgid "&Edit..."
 msgstr "რ&ედაქტირება..."
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr "გადაფარვის ჩასწორება"
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr "ჩატვირთვის მიმდევრობა"
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr "&ჩაშენებული (Wine)"
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr "&საკუთარი (Windows)"
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 msgid "Buil&tin then Native"
 msgstr "&ჩაშენებული, შემდეგ საკუთარი"
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr "ჯერ სა&კუთარი, შემდეგ ჩაშენებული"
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr "აირჩიეთ დისკის ასო"
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 msgid "Drive configuration"
 msgstr "დისკების მორგება"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 msgid ""
 "Failed to connect to the mount manager; the drive configuration cannot be "
 "edited."
@@ -18486,117 +18611,117 @@ msgstr ""
 "მიმაგრებების მმართველთან მიერთების შეცდომა. დისკის კონფიგურაციას ვერ "
 "ჩაასწორებთ."
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 msgid "A&dd..."
 msgstr "&დამატება…"
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr "&ბილიკი:"
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 msgid "Show Advan&ced"
 msgstr "დამა&ტებითი პარამეტრების ჩვენება"
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr "მოწყობილობა:"
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr "არჩევა..."
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr "&ჭდე:"
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr "&სერიული ნომერი:"
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 msgid "&Show dot files"
 msgstr "&წერტილიანი ფაილების ჩვენება"
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr "დრაივერის დიაგნოსტიკა"
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr "&ხმის ტესტი"
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr "ნაგულისხმევი მნიშვნელობები"
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr "გამოტანის მოწყობილობა:"
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr "ხმის გამოტანის მოწყობილობა:"
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr "შეყვანის მოწყობილობა:"
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr "ხმის შეყვანის მოწყობილობა:"
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 #, fuzzy
 #| msgid "Output device:"
 msgid "MIDI output device:"
 msgstr "გამოტანის მოწყობილობა:"
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 msgid "Speaker configuration"
 msgstr "დინამიკის მორგება"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr "დინამიკები:"
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr "გარემოს იერსახე"
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr "&თემა:"
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 msgid "&WinRT theme:"
 msgstr "&WinRT თემა:"
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr "&თემის დაყენება..."
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr "&ელემენტი:"
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr "&ფერი:"
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr "MIME ტიპები"
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr "ფაილის და პროტოკოლის &ასოციაციების მართვა"
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr "საქაღალდეები"
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr "&მიბმის სამიზნე:"
 
@@ -18677,26 +18802,32 @@ msgid "(System default)"
 msgstr "(სისტემის ნაგულისხმები)"
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+#, fuzzy
+#| msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr "5.1 სივრცითი"
 
 #: programs/winecfg/winecfg.rc:91
+msgid "5.1 Surround"
+msgstr "5.1 სივრცითი"
+
+#: programs/winecfg/winecfg.rc:92
 msgid "Quadraphonic"
 msgstr "კვადროფონული"
 
-#: programs/winecfg/winecfg.rc:92
+#: programs/winecfg/winecfg.rc:93
 msgid "Stereo"
 msgstr "სტერეო"
 
-#: programs/winecfg/winecfg.rc:93
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr "მონო"
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 msgid "Light"
 msgstr "მსუბუქი"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr "ბნელი"
 
@@ -18815,127 +18946,127 @@ msgstr ""
 "\n"
 "შესაქმნელად დისკების ჩანართზე 'დამატებას' დააჭირეთ.\n"
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr "აკონტროლებს ფონს"
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr "აკონტროლებს ტექსტს"
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr "მენიუს ფონი"
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr "მენიუს ტექსტი"
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr "Scrollbar"
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr "მონიშნულის ფონი"
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr "მონიშნული ტექსტი"
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr "მინიშნების ფონი"
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr "მინიშნების ტექსტი"
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr "ფანჯრის ფონი"
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr "ფანჯრის ტექსტი"
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 msgid "Active Title Bar"
 msgstr "აქტიური სათაურის ზოლი"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr "აქტიური სათაურის ზოლის ტექსტი"
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr "არააქტიური სათაურის ზოლი"
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr "არააქტიური სათაურის ზოლის ტექსტი"
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr "შეტყობინების ფანჯრის ტექსტი"
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr "აპლიკაციის სამუშაო სივრცე"
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr "ფანჯრის ჩარჩო"
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr "აქტიური საზღვარი"
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr "არააქტიური საზღვარი"
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr "აკონტროლებს ჩრდილებს"
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr "ნაცრისფერი ტექსტი"
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr "აკონტროლებს გამოკვეთას"
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr "აკონტროლებს მუქ ჩრდილს"
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr "აკონტროლებს სინალეს"
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr "აკონტროლებს ალტერნატიულ ფონს"
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr "ბმული, გამოკვეთა"
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr "აქტიური სათაურის ზოლის გრადიენტი"
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr "არააქტიური სათაურის ზოლის გრადიენტი"
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr "მენიუს გამოკვეთა"
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr "მენიუს  ზოლი"
 
diff --git a/po/ko.po b/po/ko.po
index 33d9d771cc38..3d4feeb062c2 100644
--- a/po/ko.po
+++ b/po/ko.po
@@ -80,7 +80,7 @@ msgstr "수정(&M)..."
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr "제거(&R)"
@@ -117,7 +117,7 @@ msgstr "지원 정보"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -223,7 +223,7 @@ msgstr "설치(&I)"
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -716,7 +716,7 @@ msgid "Font St&yle:"
 msgstr "글꼴 스타일(&Y):"
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "크기(&S):"
 
@@ -732,7 +732,7 @@ msgstr "취소선(&K)"
 msgid "&Underline"
 msgstr "밑줄(&U)"
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "색상(&C):"
 
@@ -909,7 +909,7 @@ msgstr "복사본 개수(&C):"
 msgid "C&ollate"
 msgstr "정렬(&O)"
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr "크기(&Z):"
 
@@ -987,7 +987,7 @@ msgstr "파일 이름:"
 msgid "Files of type:"
 msgstr "파일 형식:"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr "파일을 찾을 수 없음"
 
@@ -2435,7 +2435,7 @@ msgid "&File name:"
 msgstr "파일 이름(&F):"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr "찾기(&R)..."
 
@@ -3785,11 +3785,19 @@ msgstr "Indeo5"
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr "Indeo Video Interactive 버전 5 비디오 코덱"
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr "조이스틱"
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr "사용 중지(&D)"
 
@@ -3934,11 +3942,11 @@ msgstr "잘못된 프로시져 호출이나 인수"
 msgid "Subscript out of range"
 msgstr "첨자가 범위를 벗어남"
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 msgid "Out of stack space"
 msgstr "스택 공간이 부족함"
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr "개체가 필요함"
 
@@ -3946,23 +3954,23 @@ msgstr "개체가 필요함"
 msgid "Automation server can't create object"
 msgstr "자동화 서버가 개체를 만들 수 없음"
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr "개체가 이 속성이나 메소드를 지원하지 않습니다"
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr "개체는 이 행동을 지원하지 않음"
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr "인수는 옵션이 아닙니다"
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 msgid "Object not a collection"
 msgstr "컬렉션이 아닌 개체입니다"
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr "문법 오류"
 
@@ -3970,27 +3978,27 @@ msgstr "문법 오류"
 msgid "Expected ';'"
 msgstr "';' 필요"
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr "'(' 필요"
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr "')' 필요"
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr "필요한 식별자"
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 msgid "Expected '='"
 msgstr "'=' 필요"
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 msgid "Invalid character"
 msgstr "잘못된 문자"
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr "끝나지 않은 문자열 상수"
 
@@ -4034,7 +4042,7 @@ msgstr "Microsoft JScript 컴파일 오류"
 msgid "Microsoft JScript runtime error"
 msgstr "Microsoft JScript 런타임 오류"
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 msgid "Unknown runtime error"
 msgstr "알 수 없는 런타임 오류"
 
@@ -4058,7 +4066,7 @@ msgstr "'[object]'은(는) 날짜 개체가 아닙니다"
 msgid "Object expected"
 msgstr "개체가 필요합니다"
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr "잘못된 할당"
 
@@ -4265,11 +4273,11 @@ msgstr "파일을 찾을 수 없습니다.\n"
 msgid "Path not found.\n"
 msgstr "경로를 찾을 수 없습니다.\n"
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr "열린 파일이 너무 많습니다.\n"
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr "접근이 거부되었습니다.\n"
 
@@ -5621,7 +5629,7 @@ msgstr "작업이 사용자에 위해 취소됨.\n"
 msgid "File has a user-mapped section.\n"
 msgstr "파일에 사용자 매핑 섹션이 있습니다.\n"
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr "연결 거부.\n"
 
@@ -7206,68 +7214,74 @@ msgid "This network connection does not exist.\n"
 msgstr "네트워크 연결이 없습니다.\n"
 
 #: dlls/kernelbase/winerror.mc:3750
+#, fuzzy
+#| msgid "File or directory corrupt.\n"
+msgid "File or directory is not a reparse point.\n"
+msgstr "파일이나 디렉터리가 망가졌습니다.\n"
+
+#: dlls/kernelbase/winerror.mc:3755
 msgid "Call interrupted.\n"
 msgstr "호출이 중단되었습니다.\n"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 msgid "Invalid file handle.\n"
 msgstr "파일 핸들이 잘못되었습니다.\n"
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 msgid "Invalid pointer address.\n"
 msgstr "주소가 잘못되었습니다.\n"
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 msgid "Invalid argument.\n"
 msgstr "인수가 잘못되었습니다.\n"
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr "요청한 주소를 지정할 수 없습니다.\n"
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 msgid "Connection reset by peer.\n"
 msgstr "피어가 연결을 다시 설정했습니다.\n"
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 msgid "Host not found.\n"
 msgstr "호스트를 찾을 수 없습니다.\n"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 msgid "Nonauthoritative host not found.\n"
 msgstr "일시적으로 호스트를 찾을 수 없습니다.\n"
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 msgid "Nonrecoverable error.\n"
 msgstr "복구할 수 없는 오류입니다.\n"
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr "유효한 이름입니다만, 요청한 데이터 레코드가 없습니다.\n"
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 msgid "Not implemented.\n"
 msgstr "구현되지 않았습니다.\n"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 msgid "Call failed.\n"
 msgstr "호출이 실패했습니다.\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 #, fuzzy
 #| msgid "Unable to unload media.\n"
 msgid "Unable to find matching object.\n"
 msgstr "미디어를 적재 해제 불가능.\n"
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 msgid "No Signature found in file.\n"
 msgstr "파일에서 서명을 찾을 수 없습니다.\n"
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 msgid "Invalid call.\n"
 msgstr "잘못된 호출입니다.\n"
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 msgid "Resource is not currently available.\n"
 msgstr "현재 리소스를 사용할 수 없습니다.\n"
 
@@ -8228,7 +8242,7 @@ msgstr "하이퍼링크"
 msgid "Hyperlink Information"
 msgstr "하이퍼링크 정보"
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr "형식(&T):"
 
@@ -9862,7 +9876,7 @@ msgid "b"
 msgstr "bit"
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr "dpi"
@@ -10401,7 +10415,7 @@ msgstr "열기(&O):"
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr "찾아보기(&B)..."
 
@@ -10487,7 +10501,7 @@ msgstr "원래 위치"
 msgid "Date deleted"
 msgstr "삭제된 날짜"
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -12917,250 +12931,326 @@ msgstr "0으로 나누기 오류가 발생했습니다.\n"
 msgid "Type mismatch"
 msgstr "형식 불일치"
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 msgid "Device I/O error"
 msgstr "장치 I/O 오류"
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 msgid "File already exists"
 msgstr "파일이 이미 있습니다"
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 msgid "Disk full"
 msgstr "디스크가 가득 찼습니다"
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 msgid "Too many files"
 msgstr "파일이 너무 많습니다"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 msgid "Permission denied"
 msgstr "허가가 거부되었습니다"
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr "경로/파일 접근 오류"
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 msgid "Path not found"
 msgstr "경로를 찾을 수 없습니다"
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 msgid "Object variable not set"
 msgstr "개체 변수가 설정되어 있지 않습니다"
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 #, fuzzy
 #| msgid "Object is not initialized.\n"
 msgid "For loop not initialized"
 msgstr "개체가 초기화되지 않았습니다.\n"
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 msgid "Invalid use of Null"
 msgstr "잘못된 널 사용"
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr "필요한 임시 파일을 만들 수 없습니다"
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 msgid "ActiveX component can't create object"
 msgstr "ActiveX 구성 요소는 개체를 만들 수 없습니다"
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 msgid "Class doesn't support Automation"
 msgstr "클래스는 자동화를 지원하지 않습니다"
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr "자동화 작업 중에 파일 이름 또는 클래스 이름을 찾을 수 없습니다"
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 msgid "Object doesn't support named arguments"
 msgstr "개체는 명명된 인수를 지원하지 않습니다"
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 msgid "Object doesn't support current locale setting"
 msgstr "개체는 현재 로캘 설정을 지원하지 않습니다"
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 msgid "Named argument not found"
 msgstr "명명된 인수를 찾을 수 없습니다"
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr "인수의 개수나 속성 할당이 잘못되었습니다"
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 msgid "Specified DLL function not found"
 msgstr "지정한 DLL 함수를 찾을 수 없습니다"
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr "변수에 VBScript에서 지원되지 않는 자동화 형식이 사용되었습니다"
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr "원격 서버가 없거나 사용할 수 없습니다"
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 #, fuzzy
 #| msgid "'|' is undefined"
 msgid "Variable is undefined"
 msgstr "'|'이(가) 정의되지 않았습니다"
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr "잘못된 참조입니다"
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+#, fuzzy
+#| msgid "Class does not exist.\n"
+msgid "Class not defined"
+msgstr "클래스가 없습니다.\n"
+
+#: dlls/vbscript/vbscript.rc:71
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected ']'"
+msgstr "';' 필요"
+
+#: dlls/vbscript/vbscript.rc:75
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'If'"
+msgstr "';' 필요"
+
+#: dlls/vbscript/vbscript.rc:76
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'To'"
 msgstr "';' 필요"
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'End'"
 msgstr "'@end'가 필요합니다"
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Function'"
+msgstr "';' 필요"
+
+#: dlls/vbscript/vbscript.rc:79
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Sub'"
+msgstr "';' 필요"
+
+#: dlls/vbscript/vbscript.rc:80
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'Then'"
 msgstr "'@end'가 필요합니다"
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'Wend'"
 msgstr "'@end'가 필요합니다"
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Loop'"
 msgstr "';' 필요"
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Next'"
 msgstr "';' 필요"
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Case'"
 msgstr "';' 필요"
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Select'"
+msgstr "';' 필요"
+
+#: dlls/vbscript/vbscript.rc:86
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected statement"
 msgstr "'@end'가 필요합니다"
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 #, fuzzy
 #| msgid "Expected an operand.\n"
 msgid "Expected end of statement"
 msgstr "피연산자가 필요합니다.\n"
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 #, fuzzy
 #| msgid "Unterminated string constant"
 msgid "Expected integer constant"
 msgstr "끝나지 않은 문자열 상수"
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'With'"
+msgstr "';' 필요"
+
+#: dlls/vbscript/vbscript.rc:90
+#, fuzzy
+#| msgid "Secret too long.\n"
+msgid "Identifier too long"
+msgstr "비밀이 너무 김.\n"
+
+#: dlls/vbscript/vbscript.rc:92
 #, fuzzy
 #| msgid "Invalid flag number.\n"
 msgid "Invalid number"
 msgstr "잘못된 플래그.\n"
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+#, fuzzy
+#| msgid "Invalid use of Null"
+msgid "Invalid use of 'Me' keyword"
+msgstr "잘못된 널 사용"
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 #, fuzzy
 #| msgid "Invalid printer state.\n"
 msgid "Invalid 'exit' statement"
 msgstr "프린터 상태가 잘못되었습니다.\n"
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 #, fuzzy
 #| msgid "Label redefined"
 msgid "Name redefined"
 msgstr "레이블이 재정의되었습니다"
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 #, fuzzy
 #| msgid "Expected an operator.\n"
 msgid "Expected literal constant"
 msgstr "연산자가 필요합니다.\n"
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'In'"
 msgstr "';' 필요"
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Class'"
 msgstr "';' 필요"
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Property'"
+msgstr "';' 필요"
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Unexpected 'Next'"
 msgstr "';' 필요"
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr "Microsoft VBScript 컴파일 오류"
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr "Microsoft VBScript 런타임 오류"
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr "Wine"
 
@@ -14266,7 +14356,7 @@ msgid "Digi&tal"
 msgstr "디지털(&T)"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "글꼴(&F)..."
@@ -15278,6 +15368,41 @@ msgstr "각각의 글자는 %1!u!  픽셀 너비에 %2!u! 픽셀 높이를 가
 msgid "This is a test"
 msgstr "이것은 테스트입니다"
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+#, fuzzy
+#| msgid "Error: Could not find process \"%1\".\n"
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr "오류: 프로세스 \"%1\"을(를) 찾을 수 없습니다.\n"
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr "DirectX 진단 도구"
@@ -18888,7 +19013,7 @@ msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr "%s의 Wine 설정을 업데이트하고 있습니다. 잠시만 기다려주세요..."
 
 # 라이선스 문구는 번역하지 않습니다.
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -18900,23 +19025,23 @@ msgstr ""
 "Free Software Foundation; either version 2.1 of the License, or (at your "
 "option) any later version."
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 msgid "Windows registration information"
 msgstr "Windows 등록 정보"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr "소유자(&O):"
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr "조직(&Z):"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr "프로그램 설정"
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
@@ -18926,55 +19051,55 @@ msgstr ""
 "은 라이브러리 및 그래픽 탭과 연계해서 시스템 전체 또는 프로그램별 설정을 바"
 "꿀 수 있습니다."
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 msgid "Add appli&cation..."
 msgstr "프로그램 추가(&C)..."
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr "프로그램 제거(&R)"
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr "Windows 버전(&W):"
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr "창 설정"
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr "전체 화면 창에서 자동으로 마우스 잡기(&M)"
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr "창관리자가 Wine 창을 꾸미도록 합니다(&D)"
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr "창관리자가 Wine 창을 관리하도록 합니다(&W)"
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr "하나의 창으로 데스크톱 화면 흉내내기(&E)"
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr "데스크톱 크기(&S):"
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr "화면 해상도"
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr "10pt 크기의 Tahoma 및 연결된 글꼴을 사용하는 텍스트 예제입니다"
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr "DLL 재정의"
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
@@ -18983,170 +19108,170 @@ msgstr ""
 "각각의 동적 링크 라이브러리는 내장(Wine이 제공) 또는 네이티브(Windows나 프로"
 "그램이 제공)로 지정할 수 있습니다."
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr "새로 재정의할 라이브러리(&N):"
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr "추가(&D)"
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr "현재 DLL 재정의 목록(&O):"
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 msgid "&Edit..."
 msgstr "편집(&E)..."
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr "재정의 편집"
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr "로드 순서"
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr "내장 (Wine &Builtin)"
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr "네이티브 (Windows &Native)"
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 msgid "Buil&tin then Native"
 msgstr "내장, 네이티브 (&T)"
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr "네이티브, 내장 (&V)"
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr "드라이브 문자 선택"
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 msgid "Drive configuration"
 msgstr "드라이브 구성"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 msgid ""
 "Failed to connect to the mount manager; the drive configuration cannot be "
 "edited."
 msgstr ""
 "마운트 관리자에 연결할 수 없습니다. 드라이브 구성을 편집할 수 없습니다."
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 msgid "A&dd..."
 msgstr "추가(&D)..."
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr "경로(&P):"
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 msgid "Show Advan&ced"
 msgstr "고급 옵션 표시(&C)"
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr "장치(&V):"
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr "찾아보기(&W)..."
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr "레이블(&L):"
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr "일련 번호(&E):"
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 msgid "&Show dot files"
 msgstr "숨김 파일(dot 파일) 표시(&S)"
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr "드라이버 진단"
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr "소리 테스트(&T)"
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr "기본값"
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr "출력 장치:"
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr "음성 출력 장치:"
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr "입력 장치:"
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr "음성 입력 장치:"
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 msgid "MIDI output device:"
 msgstr "MIDI 출력 장치:"
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 msgid "Speaker configuration"
 msgstr "스피커 구성"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr "스피커:"
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr "모양새"
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr "테마(&T):"
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 msgid "&WinRT theme:"
 msgstr "WinRT 테마(&W):"
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr "테마 설치(&I)..."
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr "목록(&E):"
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr "색상(&O):"
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr "MIME 형식"
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr "파일 및 프로토콜 연결 관리(&A)"
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr "폴더"
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr "연결 대상(&L):"
 
@@ -19227,26 +19352,32 @@ msgid "(System default)"
 msgstr "(시스템 기본)"
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+#, fuzzy
+#| msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr "5.1 써라운드"
 
 #: programs/winecfg/winecfg.rc:91
+msgid "5.1 Surround"
+msgstr "5.1 써라운드"
+
+#: programs/winecfg/winecfg.rc:92
 msgid "Quadraphonic"
 msgstr "4 채널"
 
-#: programs/winecfg/winecfg.rc:92
+#: programs/winecfg/winecfg.rc:93
 msgid "Stereo"
 msgstr "스테레오"
 
-#: programs/winecfg/winecfg.rc:93
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr "모노"
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 msgid "Light"
 msgstr "밝음"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr "어두움"
 
@@ -19365,127 +19496,127 @@ msgstr ""
 "\n"
 "드라이브 탭에서 [추가]를 클릭해서 만드는 것을 잊지 마세요!\n"
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr "컨트롤 배경"
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr "컨트롤 문자"
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr "메뉴 배경"
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr "메뉴 문자"
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr "스크롤바"
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr "선택 영역 배경"
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr "선택 영역 문자"
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr "도구팁 배경"
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr "도구팁 문자"
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr "창 배경"
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr "창 문자"
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 msgid "Active Title Bar"
 msgstr "활성 제목 표시줄"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr "활성 제목 표시줄 문자"
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr "비활성 제목 표시줄"
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr "비활성 제목 표시줄 문자"
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr "메시지 상자 문자"
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr "프로그램 작업공간"
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr "창 프레임"
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr "활성 테두리"
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr "비활성 테두리"
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr "컨트롤 그림자"
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr "회색 문자"
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr "컨트롤 하이라이트"
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr "컨트롤 그림자 2"
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr "컨트롤 밝은 부분"
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr "컨트롤 배경 2"
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr "집중 추적 항목"
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr "활성 제목 표시줄 그라데이션"
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr "비활성 제목 표시줄 그라데이션"
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr "메뉴 하이라이트"
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr "메뉴바"
 
diff --git a/po/lt.po b/po/lt.po
index 8d9b3b892054..6b72a1badcd5 100644
--- a/po/lt.po
+++ b/po/lt.po
@@ -6,7 +6,7 @@ msgstr ""
 "Project-Id-Version: Wine\n"
 "Report-Msgid-Bugs-To: https://bugs.winehq.org\n"
 "POT-Creation-Date: N/A\n"
-"PO-Revision-Date: 2026-03-20 22:52+0200\n"
+"PO-Revision-Date: 2026-04-10 00:32+0300\n"
 "Last-Translator: Aurimas Fišeras <aurimas@members.fsf.org>\n"
 "Language-Team: Lithuanian <komp_lt@konf.lt>\n"
 "Language: lt\n"
@@ -84,7 +84,7 @@ msgstr "&Modifikuoti..."
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr "Pa&šalinti"
@@ -121,7 +121,7 @@ msgstr "Priežiūros informacija"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -228,7 +228,7 @@ msgstr "&Įdiegti"
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -721,7 +721,7 @@ msgid "Font St&yle:"
 msgstr "Šrifto &stilius:"
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "&Dydis:"
 
@@ -737,7 +737,7 @@ msgstr "Per&braukimas"
 msgid "&Underline"
 msgstr "&Pabraukimas"
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "&Spalva:"
 
@@ -914,7 +914,7 @@ msgstr "&Kopijų skaičius:"
 msgid "C&ollate"
 msgstr "Su&dėst."
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr "D&ydis:"
 
@@ -992,7 +992,7 @@ msgstr "Failo vardas:"
 msgid "Files of type:"
 msgstr "Failų tipai:"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr "Failas nerastas"
 
@@ -2446,7 +2446,7 @@ msgid "&File name:"
 msgstr "&Failas:"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr "Pari&nkti..."
 
@@ -3809,11 +3809,19 @@ msgstr "Indeo5"
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr "Indeo Video 5 interaktyvus vaizdo kodekas"
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr "IYUV kodekas"
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr "Intel Indeo IYUV kodekas"
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr "Vairasvirtės"
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr "&Išjungti"
 
@@ -3958,11 +3966,11 @@ msgstr "Netinkamas kreipinys į procedūrą ar argumentas"
 msgid "Subscript out of range"
 msgstr "Indeksas nepatenka į rėžius"
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 msgid "Out of stack space"
 msgstr "Trūksta vietos dėkle"
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr "Reikalingas objektas"
 
@@ -3970,23 +3978,23 @@ msgstr "Reikalingas objektas"
 msgid "Automation server can't create object"
 msgstr "Automatizavimo serveriui nepavyko sukurti objekto"
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr "Objektas nepalaiko šios savybės ar metodo"
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr "Objektas nepalaiko šio veiksmo"
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr "Argumentas yra privalomas"
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 msgid "Object not a collection"
 msgstr "Objektas nėra rinkinys"
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr "Sintaksės klaida"
 
@@ -3994,27 +4002,27 @@ msgstr "Sintaksės klaida"
 msgid "Expected ';'"
 msgstr "Tikėtasi „;“"
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr "Tikėtasi „(“"
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr "Tikėtasi „)“"
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr "Tikėtasi identifikatoriaus"
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 msgid "Expected '='"
 msgstr "Tikėtasi „=“"
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 msgid "Invalid character"
 msgstr "Neteisingas ženklas"
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr "Nebaigta eilutės konstanta"
 
@@ -4058,7 +4066,7 @@ msgstr "Microsoft JScript kompiliavimo klaida"
 msgid "Microsoft JScript runtime error"
 msgstr "Microsoft JScript vykdymo klaida"
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 msgid "Unknown runtime error"
 msgstr "Nežinoma vykdymo klaida"
 
@@ -4082,7 +4090,7 @@ msgstr "„[objektas]“ nėra datos objektas"
 msgid "Object expected"
 msgstr "Tikėtasi objekto"
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr "Neleistinas priskyrimas"
 
@@ -4292,11 +4300,11 @@ msgstr "Failas nerastas.\n"
 msgid "Path not found.\n"
 msgstr "Kelias nerastas.\n"
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr "Per daug atvertų failų.\n"
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr "Prieiga nesuteikta.\n"
 
@@ -5650,7 +5658,7 @@ msgstr "Operacija nutraukta naudotojo.\n"
 msgid "File has a user-mapped section.\n"
 msgstr "Failas turi naudotojo atvaizduotą sekciją.\n"
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr "Sujungimas nepriimtas.\n"
 
@@ -7235,66 +7243,72 @@ msgid "This network connection does not exist.\n"
 msgstr "Šis tinklo ryšys neegzistuoja.\n"
 
 #: dlls/kernelbase/winerror.mc:3750
+#, fuzzy
+#| msgid "File or directory corrupt.\n"
+msgid "File or directory is not a reparse point.\n"
+msgstr "Failas ar katalogas pažeisti.\n"
+
+#: dlls/kernelbase/winerror.mc:3755
 msgid "Call interrupted.\n"
 msgstr "Kreipinys pertrauktas.\n"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 msgid "Invalid file handle.\n"
 msgstr "Neteisinga failo rodyklė.\n"
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 msgid "Invalid pointer address.\n"
 msgstr "Neteisingas rodyklės adresas.\n"
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 msgid "Invalid argument.\n"
 msgstr "Neteisingas argumentas.\n"
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr "Nepavyko priskirti užklausto adreso.\n"
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 msgid "Connection reset by peer.\n"
 msgstr "Sujungimas nutrauktas kito serverio.\n"
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 msgid "Host not found.\n"
 msgstr "Serveris nerastas.\n"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 msgid "Nonauthoritative host not found.\n"
 msgstr "Neautoritetingas serveris nerastas.\n"
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 msgid "Nonrecoverable error.\n"
 msgstr "Nepataisoma klaida.\n"
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr "Vardas teisingas, nėra duomenų įrašo.\n"
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 msgid "Not implemented.\n"
 msgstr "Nerealizuota.\n"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 msgid "Call failed.\n"
 msgstr "Kreipinys nepavyko.\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 msgid "Unable to find matching object.\n"
 msgstr "Nepavyko rasti atitinkančio objekto.\n"
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 msgid "No Signature found in file.\n"
 msgstr "Joks parašas nerastas faile.\n"
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 msgid "Invalid call.\n"
 msgstr "Neteisingas kreipinys.\n"
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 msgid "Resource is not currently available.\n"
 msgstr "Išteklius šiuo metu neprieinamas.\n"
 
@@ -8255,7 +8269,7 @@ msgstr "Saitas"
 msgid "Hyperlink Information"
 msgstr "Saito informacija"
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr "&Tipas:"
 
@@ -9836,7 +9850,7 @@ msgid "b"
 msgstr "b"
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr "tašk./col."
@@ -10377,7 +10391,7 @@ msgstr "&Atverti:"
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr "&Parinkti..."
 
@@ -10463,7 +10477,7 @@ msgstr "Originali vieta"
 msgid "Date deleted"
 msgstr "Pašalinimo data"
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -12892,251 +12906,276 @@ msgstr "Dalyba iš nulio"
 msgid "Type mismatch"
 msgstr "Tipo neatitikimas"
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 msgid "Device I/O error"
 msgstr "Įrenginio Į/I klaida"
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 msgid "File already exists"
 msgstr "Failas jau egzistuoja"
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 msgid "Disk full"
 msgstr "Diskas pilnas"
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 msgid "Too many files"
 msgstr "Per daug failų"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 msgid "Permission denied"
 msgstr "Prieiga nesuteikta"
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr "Kelio/failo prieigos klaida"
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 msgid "Path not found"
 msgstr "Kelias nerastas"
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 msgid "Object variable not set"
 msgstr "Objekto kintamasis nenustatytas"
 
-#: dlls/vbscript/vbscript.rc:45
-#, fuzzy
-#| msgid "Object is not initialized.\n"
+#: dlls/vbscript/vbscript.rc:46
 msgid "For loop not initialized"
-msgstr "Objektas neinicijuotas.\n"
+msgstr "Besąlygis ciklas neinicijuotas"
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 msgid "Invalid use of Null"
 msgstr "Netinkamas Null naudojimas"
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr "Nepavyko sukurti reikalingo laikinojo failo"
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 msgid "ActiveX component can't create object"
 msgstr "ActiveX komponentui nepavyko sukurti objekto"
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 msgid "Class doesn't support Automation"
 msgstr "Klasė nepalaiko Automatizavimo"
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr ""
 "Failo vardas arba klasės vardas nerastas vykdant Automatizavimo operaciją"
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 msgid "Object doesn't support named arguments"
 msgstr "Objektas nepalaiko įvardytų argumentų"
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 msgid "Object doesn't support current locale setting"
 msgstr "Objektas nepalaiko dabartinės lokalės nuostatos"
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 msgid "Named argument not found"
 msgstr "Įvardytas elementas nerastas"
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr "Neteisingas argumentų skaičius ar neteisingas savybės priskyrimas"
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 msgid "Specified DLL function not found"
 msgstr "Nurodyta DLL funkcija nerasta"
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr "Kintamasis naudoja Automatizavimo tipą nepalaikomą VBScript"
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr "Nutolęs serveris neegzistuoja arba nepasiekiamas"
 
-#: dlls/vbscript/vbscript.rc:63
-#, fuzzy
-#| msgid "'|' is undefined"
+#: dlls/vbscript/vbscript.rc:65
 msgid "Variable is undefined"
-msgstr "„|“ neapibrėžtas"
+msgstr "Kintamasis neapibrėžtas"
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr "Netinkama arba nepatikslinta nuoroda"
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+#, fuzzy
+#| msgid "Class does not exist.\n"
+msgid "Class not defined"
+msgstr "Klasė neegzistuoja.\n"
+
+#: dlls/vbscript/vbscript.rc:71
 #, fuzzy
 #| msgid "Expected ';'"
-msgid "Expected 'To'"
+msgid "Expected ']'"
 msgstr "Tikėtasi „;“"
 
-#: dlls/vbscript/vbscript.rc:70
-#, fuzzy
-#| msgid "Expected '@end'"
+#: dlls/vbscript/vbscript.rc:75
+msgid "Expected 'If'"
+msgstr "Tikėtasi „If“"
+
+#: dlls/vbscript/vbscript.rc:76
+msgid "Expected 'To'"
+msgstr "Tikėtasi „To“"
+
+#: dlls/vbscript/vbscript.rc:77
 msgid "Expected 'End'"
-msgstr "Tikėtasi „@end“"
+msgstr "Tikėtasi „End“"
 
-#: dlls/vbscript/vbscript.rc:71
-#, fuzzy
-#| msgid "Expected '@end'"
+#: dlls/vbscript/vbscript.rc:78
+msgid "Expected 'Function'"
+msgstr "Tikėtasi „Function“"
+
+#: dlls/vbscript/vbscript.rc:79
+msgid "Expected 'Sub'"
+msgstr "Tikėtasi „Sub“"
+
+#: dlls/vbscript/vbscript.rc:80
 msgid "Expected 'Then'"
-msgstr "Tikėtasi „@end“"
+msgstr "Tikėtasi „Then“"
 
-#: dlls/vbscript/vbscript.rc:72
-#, fuzzy
-#| msgid "Expected '@end'"
+#: dlls/vbscript/vbscript.rc:81
 msgid "Expected 'Wend'"
-msgstr "Tikėtasi „@end“"
+msgstr "Tikėtasi „Wend“"
 
-#: dlls/vbscript/vbscript.rc:73
-#, fuzzy
-#| msgid "Expected ';'"
+#: dlls/vbscript/vbscript.rc:82
 msgid "Expected 'Loop'"
-msgstr "Tikėtasi „;“"
+msgstr "Tikėtasi „Loop“"
 
-#: dlls/vbscript/vbscript.rc:74
-#, fuzzy
-#| msgid "Expected ';'"
+#: dlls/vbscript/vbscript.rc:83
 msgid "Expected 'Next'"
-msgstr "Tikėtasi „;“"
+msgstr "Tikėtasi „Next“"
 
-#: dlls/vbscript/vbscript.rc:75
-#, fuzzy
-#| msgid "Expected ';'"
+#: dlls/vbscript/vbscript.rc:84
 msgid "Expected 'Case'"
-msgstr "Tikėtasi „;“"
+msgstr "Tikėtasi „Case“"
 
-#: dlls/vbscript/vbscript.rc:76
-#, fuzzy
-#| msgid "Expected '@end'"
+#: dlls/vbscript/vbscript.rc:85
+msgid "Expected 'Select'"
+msgstr "Tikėtasi „Select“"
+
+#: dlls/vbscript/vbscript.rc:86
 msgid "Expected statement"
-msgstr "Tikėtasi „@end“"
+msgstr "Tikėtasi sakinio"
 
-#: dlls/vbscript/vbscript.rc:77
-#, fuzzy
-#| msgid "Unexpected end of input data stream\n"
+#: dlls/vbscript/vbscript.rc:87
 msgid "Expected end of statement"
-msgstr "Netikėta duomenų srauto įvesties pabaiga\n"
+msgstr "Netikėta sakinio pabaiga"
 
-#: dlls/vbscript/vbscript.rc:78
-#, fuzzy
-#| msgid "Unterminated string constant"
+#: dlls/vbscript/vbscript.rc:88
 msgid "Expected integer constant"
-msgstr "Nebaigta eilutės konstanta"
+msgstr "Tikėtasi sveikosios konstantos"
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
-msgstr ""
+msgstr "Tikėtasi „While“, „Until“ ar sakinio pabaigos"
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+msgid "Expected 'With'"
+msgstr "Tikėtasi „With“"
+
+#: dlls/vbscript/vbscript.rc:90
 #, fuzzy
-#| msgid "Invalid flag number.\n"
+#| msgid "Secret too long.\n"
+msgid "Identifier too long"
+msgstr "Paslaptis per ilga.\n"
+
+#: dlls/vbscript/vbscript.rc:92
 msgid "Invalid number"
-msgstr "Neteisingas žymos bito numeris.\n"
+msgstr "Neteisingas skaičius"
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+msgid "Invalid use of 'Me' keyword"
+msgstr "Netinkamas raktažodžio „Me“ naudojimas"
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
-msgstr ""
+msgstr "„Loop“ be „Do“"
 
-#: dlls/vbscript/vbscript.rc:84
-#, fuzzy
-#| msgid "Invalid printer state.\n"
+#: dlls/vbscript/vbscript.rc:97
 msgid "Invalid 'exit' statement"
-msgstr "Neteisinga spausdintuvo būsena.\n"
+msgstr "Neteisingas „exit“ sakinys"
 
-#: dlls/vbscript/vbscript.rc:85
-#, fuzzy
-#| msgid "Label redefined"
+#: dlls/vbscript/vbscript.rc:98
 msgid "Name redefined"
-msgstr "Žymė apibrėžta iš naujo"
+msgstr "Vardas apibrėžtas iš naujo"
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
-msgstr ""
+msgstr "Privalo būti pirmas sakinys eilutėje"
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
-msgstr ""
+msgstr "Negalima naudoti skliaustų kviečiant „Sub“"
 
-#: dlls/vbscript/vbscript.rc:88
-#, fuzzy
-#| msgid "Expected whitespace character\n"
+#: dlls/vbscript/vbscript.rc:101
 msgid "Expected literal constant"
-msgstr "Tikėtasi matomo tarpo ženklo\n"
+msgstr "Tikėtasi literalinės konstantos"
 
-#: dlls/vbscript/vbscript.rc:89
-#, fuzzy
-#| msgid "Expected ';'"
+#: dlls/vbscript/vbscript.rc:102
 msgid "Expected 'In'"
-msgstr "Tikėtasi „;“"
+msgstr "Tikėtasi „In“"
 
-#: dlls/vbscript/vbscript.rc:90
-#, fuzzy
-#| msgid "Expected ';'"
+#: dlls/vbscript/vbscript.rc:103
 msgid "Expected 'Class'"
-msgstr "Tikėtasi „;“"
+msgstr "Tikėtasi „Class“"
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
-msgstr ""
+msgstr "Privalo būti apibrėžtas klasėje"
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
+msgstr "Tikėtasi „Let“, „Set“ arba „Get“ savybės apraše"
+
+#: dlls/vbscript/vbscript.rc:106
+msgid "Expected 'Property'"
+msgstr "Tikėtasi „Property“"
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
 msgstr ""
+"Argumentų skaičius privalo būti atitinkantis tarp savybių specifikacijų"
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr "Negalima turėti daugybinių numatytųjų savybių/metodų klasėje"
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
-msgstr ""
+msgstr "Klasės inicijavimas arba pabaiga neturi argumentų"
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
-msgstr ""
+msgstr "Savybė „Set“ arba „Let“ privalo turėti bent vieną argumentą"
 
-#: dlls/vbscript/vbscript.rc:95
-#, fuzzy
-#| msgid "Expected ';'"
+#: dlls/vbscript/vbscript.rc:111
 msgid "Unexpected 'Next'"
-msgstr "Tikėtasi „;“"
+msgstr "Netikėtas „Next“"
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
-msgstr ""
+msgstr "„Default“ specifikacija privalo nurodyti ir „Public“"
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr "„Default“ specifikacija galima tik savybei „Get“"
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr "Microsoft VBScript kompiliavimo klaida"
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr "Microsoft VBScript vykdymo klaida"
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr "Wine"
 
@@ -14260,7 +14299,7 @@ msgid "Digi&tal"
 msgstr "Skai&tmeninis"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "Š&riftas..."
@@ -15278,6 +15317,41 @@ msgstr "Kiekvienas ženklas yra %1!u! pikselių pločio ir %2!u! pikselių aukš
 msgid "This is a test"
 msgstr "Tai yra testas"
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+#, fuzzy
+#| msgid "Error: Could not find process \"%1\".\n"
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr "Klaida: nepavyko rasti proceso „%1“.\n"
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr "DirectX diagnostikos įrankis"
@@ -18927,7 +19001,7 @@ msgstr ""
 msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr "„Wine“ konfigūracija (%s) atnaujinama, palaukite..."
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -18939,23 +19013,23 @@ msgstr ""
 "kurios paskelbtos Laisvosios programinės įrangos fondo (FSF); 2.1-osios arba "
 "(Jūsų pasirinkimu) bet kurios vėlesnės licencijos versijos sąlygomis."
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 msgid "Windows registration information"
 msgstr "„Windows“ registracijos informacija"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr "Savininkas:"
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr "Organizacija:"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr "Programų nuostatos"
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
@@ -18966,55 +19040,55 @@ msgstr ""
 "galima keisti sistemines nuostatas ar kiekvienos programos nuostatas "
 "atskirai."
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 msgid "Add appli&cation..."
 msgstr "&Pridėti programą..."
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr "Pa&šalinti programą"
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr "„Windows“ &versija:"
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr "Langų nuostatos"
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr "Automatiškai &užvaldyti pelę viso ekrano languose"
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr "Leisti langų tvarkytuvei &dekoruoti langus"
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr "Leisti langų tvarkytuvei &kontroliuoti langus"
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr "&Emuliuoti virtualų darbalaukį"
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr "Darbalaukio d&ydis:"
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr "Ekrano skiriamoji geba"
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr "Tai yra pavyzdinis tekstas naudojantis 10 taškų Tahoma"
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr "DLL nustelbimai"
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
@@ -19023,55 +19097,55 @@ msgstr ""
 "Kiekviena dinaminė biblioteka gali būti įtaisyta (pateikta su „Wine“) ar "
 "sava (paimta iš „Windows“ ar pateikta programos)."
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr "&Naujas nustelbimas bibliotekai:"
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr "&Pridėti"
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr "Egzistuojantys n&ustelbimai:"
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 msgid "&Edit..."
 msgstr "&Redaguoti..."
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr "Redaguoti nustelbimą"
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr "Įkėlimo tvarka"
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr "&Įtaisyta („Wine“)"
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr "&Sava („Windows“)"
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 msgid "Buil&tin then Native"
 msgstr "Į&taisyta, po to sava"
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr "S&ava, po to įtaisyta"
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr "Parinkite disko raidę"
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 msgid "Drive configuration"
 msgstr "Diskų konfigūravimas"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 msgid ""
 "Failed to connect to the mount manager; the drive configuration cannot be "
 "edited."
@@ -19079,115 +19153,115 @@ msgstr ""
 "Nepavyko prisijungti prie diskų tvarkytuvės, diskų konfigūracija negali būti "
 "redaguojama."
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 msgid "A&dd..."
 msgstr "Pri&dėti..."
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr "&Kelias:"
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 msgid "Show Advan&ced"
 msgstr "Rodyti papild&omas"
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr "Įtai&sas:"
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr "Parinkti..."
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr "Va&rdas:"
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr "N&umeris:"
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 msgid "&Show dot files"
 msgstr "Rodyti &failus su tašku"
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr "Tvarkyklės diagnostika"
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr "&Testuoti garsą"
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr "Numatytosios reikšmės"
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr "Išvedimo įtaisas:"
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr "Balso išvedimo įtaisas:"
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr "Įvedimo įtaisas:"
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr "Balso įvedimo įtaisas:"
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 msgid "MIDI output device:"
 msgstr "MIDI išvedimo įtaisas:"
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 msgid "Speaker configuration"
 msgstr "Garsiakalbių konfigūravimas"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr "Garsiakalbiai:"
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr "Išvaizda"
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr "&Apipavidalinimas:"
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 msgid "&WinRT theme:"
 msgstr "&WinRT tema:"
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr "&Įdiegti apipavidalinimą..."
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr "&Elementas:"
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr "S&palva:"
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr "MIME tipai"
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr "Valdyti failų ir protokolų susie&jimus"
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr "Aplankai"
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr "S&usieti su:"
 
@@ -19268,26 +19342,32 @@ msgid "(System default)"
 msgstr "(Sistemos numatytasis)"
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+#, fuzzy
+#| msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr "Erdviniai 5.1"
 
 #: programs/winecfg/winecfg.rc:91
+msgid "5.1 Surround"
+msgstr "Erdviniai 5.1"
+
+#: programs/winecfg/winecfg.rc:92
 msgid "Quadraphonic"
 msgstr "Kvadrofoniniai"
 
-#: programs/winecfg/winecfg.rc:92
+#: programs/winecfg/winecfg.rc:93
 msgid "Stereo"
 msgstr "Stereofoniniai"
 
-#: programs/winecfg/winecfg.rc:93
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr "Monofoninis"
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 msgid "Light"
 msgstr "Šviesi"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr "Tamsi"
 
@@ -19405,127 +19485,127 @@ msgstr ""
 "\n"
 "Nepamirškite paspausti „Pridėti“ diskų kortelėje, kad jį sukurtumėte!\n"
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr "Valdiklių fonas"
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr "Valdiklių tekstas"
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr "Meniu fonas"
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr "Meniu tekstas"
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr "Slankjuostė"
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr "Žymėjimo fonas"
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr "Žymėjimo tekstas"
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr "Patarimo fonas"
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr "Patarimo tekstas"
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr "Lango fonas"
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr "Lango tekstas"
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 msgid "Active Title Bar"
 msgstr "Aktyvi lango antraštės juosta"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr "Aktyvios lango antraštės tekstas"
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr "Neaktyvi lango antraštės juosta"
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr "Neaktyvios lango antraštės tekstas"
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr "Pranešimo lango tekstas"
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr "Programos erdvė"
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr "Lango rėmelis"
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr "Aktyvi kraštinė"
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr "Neaktyvi kraštinė"
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr "Valdiklių šešėlis"
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr "Pilkas tekstas"
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr "Valdiklių paryškinimas"
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr "Valdiklių tamsus šešėlis"
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr "Valdiklių šviesumas"
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr "Valdiklių alternatyvus fonas"
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr "Sekamas elementas"
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr "Aktyvios lango antraštės gradientas"
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr "Neaktyvios lango antraštės gradientas"
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr "Meniu paryškinimas"
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr "Meniu juosta"
 
diff --git a/po/ml.po b/po/ml.po
index 93ef74b91c10..e5296a34bc10 100644
--- a/po/ml.po
+++ b/po/ml.po
@@ -82,7 +82,7 @@ msgstr "പരിഷ്ക്കരിക്കുക... (&M)"
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr "നീക്കംചെയ്യുക (&R)"
@@ -119,7 +119,7 @@ msgstr "പിന്തുണ വിവരം"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -218,7 +218,7 @@ msgstr "ഇൻസ്റ്റാൾ (&I)"
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -707,7 +707,7 @@ msgid "Font St&yle:"
 msgstr ""
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr ""
 
@@ -723,7 +723,7 @@ msgstr ""
 msgid "&Underline"
 msgstr ""
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr ""
 
@@ -900,7 +900,7 @@ msgstr ""
 msgid "C&ollate"
 msgstr ""
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr ""
 
@@ -979,7 +979,7 @@ msgstr ""
 msgid "Files of type:"
 msgstr ""
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr ""
 
@@ -2408,7 +2408,7 @@ msgid "&File name:"
 msgstr ""
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr ""
 
@@ -3724,11 +3724,19 @@ msgstr ""
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr ""
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr ""
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr ""
 
@@ -3863,11 +3871,11 @@ msgstr ""
 msgid "Subscript out of range"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 msgid "Out of stack space"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr ""
 
@@ -3875,23 +3883,23 @@ msgstr ""
 msgid "Automation server can't create object"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 msgid "Object not a collection"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr ""
 
@@ -3899,27 +3907,27 @@ msgstr ""
 msgid "Expected ';'"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 msgid "Expected '='"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 msgid "Invalid character"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr ""
 
@@ -3963,7 +3971,7 @@ msgstr ""
 msgid "Microsoft JScript runtime error"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 msgid "Unknown runtime error"
 msgstr ""
 
@@ -3987,7 +3995,7 @@ msgstr ""
 msgid "Object expected"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr ""
 
@@ -4194,11 +4202,11 @@ msgstr ""
 msgid "Path not found.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr ""
 
@@ -5551,7 +5559,7 @@ msgstr ""
 msgid "File has a user-mapped section.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr ""
 
@@ -7136,67 +7144,71 @@ msgid "This network connection does not exist.\n"
 msgstr ""
 
 #: dlls/kernelbase/winerror.mc:3750
-msgid "Call interrupted.\n"
+msgid "File or directory is not a reparse point.\n"
 msgstr ""
 
 #: dlls/kernelbase/winerror.mc:3755
+msgid "Call interrupted.\n"
+msgstr ""
+
+#: dlls/kernelbase/winerror.mc:3760
 msgid "Invalid file handle.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 msgid "Invalid pointer address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 msgid "Invalid argument.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 msgid "Connection reset by peer.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 #, fuzzy
 msgid "Host not found.\n"
 msgstr "വി_വരം"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 msgid "Nonauthoritative host not found.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 msgid "Nonrecoverable error.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 msgid "Not implemented.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 msgid "Call failed.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 msgid "Unable to find matching object.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 msgid "No Signature found in file.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 msgid "Invalid call.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 msgid "Resource is not currently available.\n"
 msgstr ""
 
@@ -8169,7 +8181,7 @@ msgstr ""
 msgid "Hyperlink Information"
 msgstr ""
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr ""
 
@@ -9728,7 +9740,7 @@ msgid "b"
 msgstr ""
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr ""
@@ -10269,7 +10281,7 @@ msgstr ""
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr ""
 
@@ -10356,7 +10368,7 @@ msgstr ""
 msgid "Date deleted"
 msgstr ""
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -12751,212 +12763,268 @@ msgstr ""
 msgid "Type mismatch"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 msgid "Device I/O error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 msgid "File already exists"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 msgid "Disk full"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 msgid "Too many files"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 msgid "Permission denied"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 msgid "Path not found"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 msgid "Object variable not set"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 msgid "For loop not initialized"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 msgid "Invalid use of Null"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 msgid "ActiveX component can't create object"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 msgid "Class doesn't support Automation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 msgid "Object doesn't support named arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 msgid "Object doesn't support current locale setting"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 msgid "Named argument not found"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 msgid "Specified DLL function not found"
 msgstr ""
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 msgid "Variable is undefined"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+msgid "Class not defined"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:71
+msgid "Expected ']'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:75
+msgid "Expected 'If'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:76
 msgid "Expected 'To'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 msgid "Expected 'End'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+msgid "Expected 'Function'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:79
+msgid "Expected 'Sub'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:80
 msgid "Expected 'Then'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 msgid "Expected 'Wend'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 msgid "Expected 'Loop'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 msgid "Expected 'Next'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 msgid "Expected 'Case'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+msgid "Expected 'Select'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:86
 msgid "Expected statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 msgid "Expected end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 msgid "Expected integer constant"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+msgid "Expected 'With'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:90
+msgid "Identifier too long"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:92
 msgid "Invalid number"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+msgid "Invalid use of 'Me' keyword"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 msgid "Invalid 'exit' statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 msgid "Name redefined"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 msgid "Expected literal constant"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 msgid "Expected 'In'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 msgid "Expected 'Class'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+msgid "Expected 'Property'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 msgid "Unexpected 'Next'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr ""
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr ""
 
@@ -13941,7 +14009,7 @@ msgid "Digi&tal"
 msgstr "_ഡിജിറ്റല്‍"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "_അക്ഷരസഞ്ചയം..."
@@ -14728,6 +14796,39 @@ msgstr ""
 msgid "This is a test"
 msgstr ""
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr ""
@@ -18001,7 +18102,7 @@ msgstr ""
 msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -18009,249 +18110,249 @@ msgid ""
 "option) any later version."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 #, fuzzy
 msgid "Windows registration information"
 msgstr "_അക്ഷരസഞ്ചയം..."
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
 "or per-application settings in those tabs as well."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 msgid "Add appli&cation..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
 "application)."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 #, fuzzy
 msgid "&Edit..."
 msgstr "_അക്ഷരസഞ്ചയം..."
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 msgid "Buil&tin then Native"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 msgid "Drive configuration"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 msgid ""
 "Failed to connect to the mount manager; the drive configuration cannot be "
 "edited."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 msgid "A&dd..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 msgid "Show Advan&ced"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 msgid "&Show dot files"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 msgid "MIDI output device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 msgid "Speaker configuration"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 msgid "&WinRT theme:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr ""
 
@@ -18332,26 +18433,30 @@ msgid "(System default)"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:91
-msgid "Quadraphonic"
+msgid "5.1 Surround"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:92
-msgid "Stereo"
+msgid "Quadraphonic"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:93
+msgid "Stereo"
+msgstr ""
+
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 msgid "Light"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr ""
 
@@ -18456,128 +18561,128 @@ msgid ""
 "Remember to click 'Add' in the Drives tab to create one!\n"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 #, fuzzy
 msgid "Active Title Bar"
 msgstr "റ്റൈറ്റില്‍ബാര്‍ _ഇല്ലാതെ"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr ""
 
diff --git a/po/nb_NO.po b/po/nb_NO.po
index 9fb56b1e6f7b..5e03aa933dd1 100644
--- a/po/nb_NO.po
+++ b/po/nb_NO.po
@@ -82,7 +82,7 @@ msgstr "&Endre..."
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr "&Fjern"
@@ -119,7 +119,7 @@ msgstr "Støtteinformasjon"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -226,7 +226,7 @@ msgstr "&Installer"
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -721,7 +721,7 @@ msgid "Font St&yle:"
 msgstr "Skriftst&il:"
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "&Størrelse:"
 
@@ -737,7 +737,7 @@ msgstr "Gjennomstre&ket"
 msgid "&Underline"
 msgstr "&Understreket"
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "&Farge:"
 
@@ -914,7 +914,7 @@ msgstr "Antall &kopier:"
 msgid "C&ollate"
 msgstr "S&orter"
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr "St&ørrelse:"
 
@@ -992,7 +992,7 @@ msgstr "Filnavn:"
 msgid "Files of type:"
 msgstr "Filtype:"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr "Fant ikke filen"
 
@@ -2453,7 +2453,7 @@ msgid "&File name:"
 msgstr "&Filnavn:"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr "&Bla..."
 
@@ -3840,11 +3840,19 @@ msgstr "Innhold"
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr "Wine Video 1 videokodeks"
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr "Styrespaker"
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr "&Deaktiver"
 
@@ -4005,13 +4013,13 @@ msgstr "Ugyldig funksjonskall eller argument"
 msgid "Subscript out of range"
 msgstr "ID'ene er utenfor rekkevidde"
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 #, fuzzy
 #| msgid "Out of paper; "
 msgid "Out of stack space"
 msgstr "Tom for papir; "
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr "Trenger et objekt"
 
@@ -4019,25 +4027,25 @@ msgstr "Trenger et objekt"
 msgid "Automation server can't create object"
 msgstr "Automatiseringstjeneren klarte ikke opprette objekt"
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr "Objektet støtter ikke denne egenskapen eller metoden"
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr "Objektet støtter ikke denne handlingen"
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr "Argumentet er ikke valgfritt"
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 #, fuzzy
 #| msgid "Object Class Violation"
 msgid "Object not a collection"
 msgstr "Objektklasseovertredelse"
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr "Syntaksfeil"
 
@@ -4045,27 +4053,27 @@ msgstr "Syntaksfeil"
 msgid "Expected ';'"
 msgstr "Forventet ';'"
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr "Forventet '('"
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr "Forventet ')'"
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr "Forventet identifiserer"
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 msgid "Expected '='"
 msgstr "Forventet '='"
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 msgid "Invalid character"
 msgstr "Ugyldig tegn"
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr "Uavsluttet strengkonstant"
 
@@ -4109,7 +4117,7 @@ msgstr "Microsoft JScript kompileringsfeil"
 msgid "Microsoft JScript runtime error"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 #, fuzzy
 #| msgid "Unknown error"
 msgid "Unknown runtime error"
@@ -4137,7 +4145,7 @@ msgstr "'[object]' er ikke et dataobjekt"
 msgid "Object expected"
 msgstr "Forventet objekt"
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr "Ugyldig tilordning"
 
@@ -4363,11 +4371,11 @@ msgstr "Fant ikke filen.\n"
 msgid "Path not found.\n"
 msgstr "Fant ikke filstien.\n"
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr "For mange åpne filer.\n"
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr "Tilgang nektet.\n"
 
@@ -5719,7 +5727,7 @@ msgstr "Operasjonen ble avbrutt av brukeren.\n"
 msgid "File has a user-mapped section.\n"
 msgstr "En del av filen er tilordnet brukeren.\n"
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr "Tilkobling nektet.\n"
 
@@ -7305,81 +7313,87 @@ msgstr "Denne nettverksforbindelsen finnes ikke.\n"
 
 #: dlls/kernelbase/winerror.mc:3750
 #, fuzzy
+#| msgid "File or directory corrupt.\n"
+msgid "File or directory is not a reparse point.\n"
+msgstr "Filen eller mappen er skadet.\n"
+
+#: dlls/kernelbase/winerror.mc:3755
+#, fuzzy
 #| msgid "Invalid at interrupt time.\n"
 msgid "Call interrupted.\n"
 msgstr "Ugyldig ved avbrytingstid.\n"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 #, fuzzy
 #| msgid "Invalid handle.\n"
 msgid "Invalid file handle.\n"
 msgstr "Ugyldig referanse.\n"
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 #, fuzzy
 #| msgid "Invalid network address.\n"
 msgid "Invalid pointer address.\n"
 msgstr "Ugyldig nettverksadresse.\n"
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 #, fuzzy
 #| msgid "Invalid name.\n"
 msgid "Invalid argument.\n"
 msgstr "Ugyldig navn.\n"
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 msgid "Connection reset by peer.\n"
 msgstr "Tilkobling nullstilt av likemann.\n"
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 #, fuzzy
 #| msgid "Point not found.\n"
 msgid "Host not found.\n"
 msgstr "Fant ikke punktet.\n"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 #, fuzzy
 #| msgid "Attribute is not found.\n"
 msgid "Nonauthoritative host not found.\n"
 msgstr "Fant ikke egenskapen.\n"
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 #, fuzzy
 #| msgid "Unrecoverable error occurred.\n"
 msgid "Nonrecoverable error.\n"
 msgstr "En ugjenopprettelig feil har oppstått.\n"
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 msgid "Not implemented.\n"
 msgstr "Ikke implementert.\n"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 msgid "Call failed.\n"
 msgstr "Kall feilet.\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 #, fuzzy
 #| msgid "Unable to unload media.\n"
 msgid "Unable to find matching object.\n"
 msgstr "Klarte ikke løse ut medium.\n"
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 msgid "No Signature found in file.\n"
 msgstr "Fant ingen signatur i filen.\n"
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 msgid "Invalid call.\n"
 msgstr "Ugyldig kall.\n"
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 msgid "Resource is not currently available.\n"
 msgstr "Ressursen er for øyeblikket ikke tilgjengelig.\n"
 
@@ -8531,7 +8545,7 @@ msgstr "Hyperkobling"
 msgid "Hyperlink Information"
 msgstr "Informasjon om koblingen"
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr "&Type:"
 
@@ -10197,7 +10211,7 @@ msgid "b"
 msgstr "b"
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr "dpi"
@@ -10735,7 +10749,7 @@ msgstr "&Åpne:"
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr "&Bla..."
 
@@ -10821,7 +10835,7 @@ msgstr "Opprinnelig plassering"
 msgid "Date deleted"
 msgstr "Dato slettet"
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -13778,278 +13792,354 @@ msgstr "Feil: Deling på null.\n"
 msgid "Type mismatch"
 msgstr "Feil datatype.\n"
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 #, fuzzy
 #| msgid "I/O device error.\n"
 msgid "Device I/O error"
 msgstr "I/U-feil på enhet.\n"
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 #, fuzzy
 #| msgid "File already exists.\n"
 msgid "File already exists"
 msgstr "Filen finnes fra før.\n"
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 #, fuzzy
 #| msgid "Disk full.\n"
 msgid "Disk full"
 msgstr "Disken er full.\n"
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 #, fuzzy
 #| msgid "Too many open files.\n"
 msgid "Too many files"
 msgstr "For mange åpne filer.\n"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 #, fuzzy
 #| msgid "Access denied.\n"
 msgid "Permission denied"
 msgstr "Tilgang nektet.\n"
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 #, fuzzy
 #| msgid "Path not found.\n"
 msgid "Path not found"
 msgstr "Fant ikke filstien.\n"
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 #, fuzzy
 #| msgid "(value not set)"
 msgid "Object variable not set"
 msgstr "(verdi ikke oppgitt)"
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 #, fuzzy
 #| msgid "Object is not initialized.\n"
 msgid "For loop not initialized"
 msgstr "Objekt er ikke lastet.\n"
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 #, fuzzy
 #| msgid "Invalid user buffer.\n"
 msgid "Invalid use of Null"
 msgstr "Ugyldig lagringsplass for brukerminne.\n"
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 #, fuzzy
 #| msgid "Automation server can't create object"
 msgid "ActiveX component can't create object"
 msgstr "Automatiseringstjeneren klarte ikke opprette objekt"
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Class doesn't support Automation"
 msgstr "Objektet støtter ikke denne handlingen"
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Object doesn't support named arguments"
 msgstr "Objektet støtter ikke denne handlingen"
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Object doesn't support current locale setting"
 msgstr "Objektet støtter ikke denne handlingen"
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 #, fuzzy
 #| msgid "Element not found.\n"
 msgid "Named argument not found"
 msgstr "Kan ikke finne elementet.\n"
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 #, fuzzy
 #| msgid "Specified control was not found in message"
 msgid "Specified DLL function not found"
 msgstr "Den oppgitte kontrolleren ble ikke funnet i meldingen"
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 #, fuzzy
 #| msgid "'|' is undefined"
 msgid "Variable is undefined"
 msgstr "'|' er udefinert"
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+#, fuzzy
+#| msgid "Class does not exist.\n"
+msgid "Class not defined"
+msgstr "Klassen finnes ikke.\n"
+
+#: dlls/vbscript/vbscript.rc:71
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected ']'"
+msgstr "Forventet ';'"
+
+#: dlls/vbscript/vbscript.rc:75
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'If'"
+msgstr "Forventet ';'"
+
+#: dlls/vbscript/vbscript.rc:76
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'To'"
 msgstr "Forventet ';'"
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'End'"
 msgstr "Forventet '@end'"
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Function'"
+msgstr "Forventet ';'"
+
+#: dlls/vbscript/vbscript.rc:79
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Sub'"
+msgstr "Forventet ';'"
+
+#: dlls/vbscript/vbscript.rc:80
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'Then'"
 msgstr "Forventet '@end'"
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'Wend'"
 msgstr "Forventet '@end'"
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Loop'"
 msgstr "Forventet ';'"
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Next'"
 msgstr "Forventet ';'"
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Case'"
 msgstr "Forventet ';'"
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Select'"
+msgstr "Forventet ';'"
+
+#: dlls/vbscript/vbscript.rc:86
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected statement"
 msgstr "Forventet '@end'"
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 #, fuzzy
 #| msgid "Expected an operand.\n"
 msgid "Expected end of statement"
 msgstr "Forventet en operand.\n"
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 #, fuzzy
 #| msgid "Unterminated string constant"
 msgid "Expected integer constant"
 msgstr "Uavsluttet strengkonstant"
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'With'"
+msgstr "Forventet ';'"
+
+#: dlls/vbscript/vbscript.rc:90
+#, fuzzy
+#| msgid "Secret too long.\n"
+msgid "Identifier too long"
+msgstr "Hemmeligheten er for lang.\n"
+
+#: dlls/vbscript/vbscript.rc:92
 #, fuzzy
 #| msgid "Invalid flag number.\n"
 msgid "Invalid number"
 msgstr "Ugyldig flaggnummer.\n"
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+#, fuzzy
+#| msgid "Invalid user buffer.\n"
+msgid "Invalid use of 'Me' keyword"
+msgstr "Ugyldig lagringsplass for brukerminne.\n"
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 #, fuzzy
 #| msgid "Invalid printer state.\n"
 msgid "Invalid 'exit' statement"
 msgstr "Ugyldig skriverstatus.\n"
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 #, fuzzy
 #| msgid "Label redefined"
 msgid "Name redefined"
 msgstr "Etiketten ble omdefinert"
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 #, fuzzy
 #| msgid "Expected an operator.\n"
 msgid "Expected literal constant"
 msgstr "Forventet en operator.\n"
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'In'"
 msgstr "Forventet ';'"
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Class'"
 msgstr "Forventet ';'"
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Property'"
+msgstr "Forventet ';'"
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Unexpected 'Next'"
 msgstr "Forventet ';'"
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr ""
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr "Wine"
 
@@ -15165,7 +15255,7 @@ msgid "Digi&tal"
 msgstr "Digi&tal"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "Skri&ft..."
@@ -16192,6 +16282,41 @@ msgstr "Hvert tegn er %1!u! piksler bredt og %2!u! piksler høyt"
 msgid "This is a test"
 msgstr "Dette er en test"
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+#, fuzzy
+#| msgid "Error: Could not find process \"%1\".\n"
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr "Feil: Klarte ikke finne prosessen \"%1\".\n"
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr "Feilsøkingsverktøy for DirectX"
@@ -19760,7 +19885,7 @@ msgstr ""
 msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr "Vent mens Wine-oppsettet i %s blir oppdatert..."
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -19772,23 +19897,23 @@ msgstr ""
 "Foundation, enten versjon 2.1 av denne Lisensen, eller (hvis du ønsker det) "
 "en nyere versjon."
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 msgid "Windows registration information"
 msgstr "Brukerinformasjon for Windows"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr "&Eier:"
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr "Organi&sasjon:"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr "Programminnstillinger"
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
@@ -19798,55 +19923,55 @@ msgstr ""
 "fanen er koblet med bibliotek- og grafikkfanene, sånn at du kan endre "
 "innstillinger for hele systemet eller enkelte programmer der også."
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 msgid "Add appli&cation..."
 msgstr "Legg til progr&am..."
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr "Fje&rn program"
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr "&Windows-versjon:"
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr "Vinduinnstillinger"
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr "Fang &musen automatisk i fullskjermvinduer"
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr "Tillat vindusbehandleren å &dekorere vinduer"
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr "Tillat &vindusbehandleren å kontrollere vinduene"
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr "Vis &et virtuelt skrivebord"
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr "&Størrelse:"
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr "Skjermoppløsning"
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr "Forhåndsvisning av tekst med 10 punkters Tahoma"
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr "DLL-overstyring"
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
@@ -19856,55 +19981,55 @@ msgstr ""
 "innebygget (fra Wine) eller innfødt (tatt fra Windows eller gitt av et "
 "program)."
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr "&Ny overstyring for bibliotek:"
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr "&Legg til"
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr "Gjeldende &overstyringer:"
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 msgid "&Edit..."
 msgstr "R&ediger..."
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr "Rediger overstyring"
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr "Lastingsrekkefølge"
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr "Inne&bygget (Wine)"
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr "I&nnfødt (Windows)"
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 msgid "Buil&tin then Native"
 msgstr "Innebygge&t så innfødt"
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr "Innfød&dt så innebygget"
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr "Velg stasjonsbokstav"
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 msgid "Drive configuration"
 msgstr "Oppsett av stasjoner"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 msgid ""
 "Failed to connect to the mount manager; the drive configuration cannot be "
 "edited."
@@ -19912,121 +20037,121 @@ msgstr ""
 "Klarte ikke koble til monteringsbehandleren; stasjonsoppsettet kan derfor "
 "ikke redigeres."
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 msgid "A&dd..."
 msgstr "&Legg til..."
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr "&Sti:"
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 msgid "Show Advan&ced"
 msgstr "Avansert &visning"
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr "En&het:"
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr "&Bla..."
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr "Vo&lumnavn:"
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr "S&erienummer:"
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 msgid "&Show dot files"
 msgstr "Vi&s .-filer"
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr "Driverdiagnostikk"
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr "&Test"
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr "Standardverdier"
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr "Ut-enhet:"
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr "Ut-enhet for tale:"
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr "Inn-enhet:"
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr "Inn-enhet for tale:"
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 #, fuzzy
 #| msgid "Output device:"
 msgid "MIDI output device:"
 msgstr "Ut-enhet:"
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 msgid "Speaker configuration"
 msgstr "Høytaleroppsett"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr "Høytalere:"
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr "Utseende"
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr "&Tema:"
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 #, fuzzy
 #| msgid "&Theme:"
 msgid "&WinRT theme:"
 msgstr "&Tema:"
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr "&Installer tema..."
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr "&Element:"
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr "&Farge:"
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr "MIME typer"
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 #, fuzzy
 #| msgid "Manage file &associations"
 msgid "Manage file and protocol &associations"
 msgstr "Behandle fil &assosiasjoner"
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr "Mappe"
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr "Pek ti&l:"
 
@@ -20107,28 +20232,34 @@ msgid "(System default)"
 msgstr "(Standard)"
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+#, fuzzy
+#| msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr "5.1 Surround"
 
 #: programs/winecfg/winecfg.rc:91
+msgid "5.1 Surround"
+msgstr "5.1 Surround"
+
+#: programs/winecfg/winecfg.rc:92
 msgid "Quadraphonic"
 msgstr "Quadraphonic"
 
-#: programs/winecfg/winecfg.rc:92
+#: programs/winecfg/winecfg.rc:93
 msgid "Stereo"
 msgstr "Stereo"
 
-#: programs/winecfg/winecfg.rc:93
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr "Mono"
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 #, fuzzy
 #| msgid "Right"
 msgid "Light"
 msgstr "Høyrestilt"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr ""
 
@@ -20245,127 +20376,127 @@ msgstr ""
 "\n"
 "Husk å trykke Legg til i stasjonsfanen for å lage en!\n"
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr "Kontrollerbakgrunn"
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr "Kontrollertekst"
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr "Menybakgrunn"
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr "Menytekst"
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr "Rullefelt"
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr "Bakgrunn for merking"
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr "Merket tekst"
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr "Bakgrunn for verktøytips"
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr "Tekst i verktøytips"
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr "Vindusbakgrunn"
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr "Vindusteksts"
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 msgid "Active Title Bar"
 msgstr "Aktiv tittellinje"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr "Aktiv titteltekst"
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr "Inaktiv tittellinje"
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr "Inaktiv titteltekst"
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr "Meldingsvindutekst"
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr "Arbeidsområde i program"
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr "Vindusramme"
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr "Aktiv kant"
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr "Inaktiv kant"
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr "Kontrollerskygge"
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr "Grå tekst"
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr "Merket kontroller"
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr "Mørk skygge i kontroller"
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr "Kontrollerlys"
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr "Bakgrunn for skiftende kontroller"
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr "Merket element"
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr "Gradient for aktiv tittellinje"
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr "Gradient for inaktiv tittellinje"
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr "Menymerking"
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr "Menylinje"
 
diff --git a/po/nl.po b/po/nl.po
index 826b571b9cc0..8ab350c366c7 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -81,7 +81,7 @@ msgstr "&Wijzigen..."
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr "&Verwijderen"
@@ -118,7 +118,7 @@ msgstr "Ondersteuning"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -225,7 +225,7 @@ msgstr "&Installeren"
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -717,7 +717,7 @@ msgid "Font St&yle:"
 msgstr "Teken&stijl:"
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "&Grootte:"
 
@@ -733,7 +733,7 @@ msgstr "&Doorhalen"
 msgid "&Underline"
 msgstr "&Onderstrepen"
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "Kleuren:"
 
@@ -910,7 +910,7 @@ msgstr "Aantal e&xemplaren:"
 msgid "C&ollate"
 msgstr "&Sorteren"
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr "Grootte:"
 
@@ -988,7 +988,7 @@ msgstr "Bestandsnaam:"
 msgid "Files of type:"
 msgstr "Bestanden van het type:"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr "Bestand niet gevonden"
 
@@ -2440,7 +2440,7 @@ msgid "&File name:"
 msgstr "Bestands&naam:"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr "Bladeren..."
 
@@ -3815,11 +3815,19 @@ msgstr "Indeo5"
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr "Indeo Video Interactive versie 5 video codec"
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr "Joysticks"
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr "&Uitzetten"
 
@@ -3965,11 +3973,11 @@ msgstr "Ongeldige procedure-aanroep of argument"
 msgid "Subscript out of range"
 msgstr "Index buiten bereik"
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 msgid "Out of stack space"
 msgstr "Geen stapelruimte"
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr "Object noodzakelijk"
 
@@ -3977,23 +3985,23 @@ msgstr "Object noodzakelijk"
 msgid "Automation server can't create object"
 msgstr "Automatiseringsserver kan het object niet creëren"
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr "Dit object ondersteunt deze eigenschap of methode niet"
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr "Dit object ondersteunt deze actie niet"
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr "Argument is niet optioneel"
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 msgid "Object not a collection"
 msgstr "Dit object is geen collectie"
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr "Formuleringsfout"
 
@@ -4001,27 +4009,27 @@ msgstr "Formuleringsfout"
 msgid "Expected ';'"
 msgstr "';' verwacht"
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr "'(' verwacht"
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr "')' verwacht"
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr "Verwachte ID"
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 msgid "Expected '='"
 msgstr "Verwacht '='"
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 msgid "Invalid character"
 msgstr "Ongeldig teken"
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr "Onafgesloten tekenreeksconstante"
 
@@ -4065,7 +4073,7 @@ msgstr "Microsoft JScript compilatie fout"
 msgid "Microsoft JScript runtime error"
 msgstr "Microsoft JScript runtime-fout"
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 msgid "Unknown runtime error"
 msgstr "Onbekende runtime-fout"
 
@@ -4089,7 +4097,7 @@ msgstr "'[object]' is geen datum object"
 msgid "Object expected"
 msgstr "Object verwacht"
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr "Ongeldige toekenning"
 
@@ -4298,11 +4306,11 @@ msgstr "Bestand niet gevonden.\n"
 msgid "Path not found.\n"
 msgstr "Locatie niet gevonden.\n"
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr "Te veel open bestanden.\n"
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr "Toegang geweigerd.\n"
 
@@ -5654,7 +5662,7 @@ msgstr "Bewerking geannuleerd door gebruiker.\n"
 msgid "File has a user-mapped section.\n"
 msgstr "Bestand heeft een gebruiker-ingedeelde sectie.\n"
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr "Verbinding geweigerd.\n"
 
@@ -7240,68 +7248,74 @@ msgid "This network connection does not exist.\n"
 msgstr "Deze netwerkverbinding bestaat niet.\n"
 
 #: dlls/kernelbase/winerror.mc:3750
+#, fuzzy
+#| msgid "File or directory corrupt.\n"
+msgid "File or directory is not a reparse point.\n"
+msgstr "Bestand of map corrupt.\n"
+
+#: dlls/kernelbase/winerror.mc:3755
 msgid "Call interrupted.\n"
 msgstr "Oproep onderbroken.\n"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 msgid "Invalid file handle.\n"
 msgstr "Ongeldige bestandsingang.\n"
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 msgid "Invalid pointer address.\n"
 msgstr "Ongeldig pointeradres.\n"
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 msgid "Invalid argument.\n"
 msgstr "Ongeldig argument.\n"
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr "Kan het gevraagde adres niet toewijzen.\n"
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 msgid "Connection reset by peer.\n"
 msgstr "Verbinding opnieuw ingesteld door gelijkwaardige computer.\n"
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 msgid "Host not found.\n"
 msgstr "Host niet gevonden.\n"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 msgid "Nonauthoritative host not found.\n"
 msgstr "Niet-gemachtigde host niet gevonden.\n"
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 msgid "Nonrecoverable error.\n"
 msgstr "Onherstelbare fout.\n"
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr "Geldige naam, geen gegevensrecord.\n"
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 msgid "Not implemented.\n"
 msgstr "Niet geïmplementeerd.\n"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 msgid "Call failed.\n"
 msgstr "Oproep mislukt.\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 #, fuzzy
 #| msgid "Unable to unload media.\n"
 msgid "Unable to find matching object.\n"
 msgstr "Niet in staat media te ontladen.\n"
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 msgid "No Signature found in file.\n"
 msgstr "Geen handtekening gevonden in bestand.\n"
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 msgid "Invalid call.\n"
 msgstr "Ongeldige oproep.\n"
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 msgid "Resource is not currently available.\n"
 msgstr "Bron is tijdelijk niet beschikbaar.\n"
 
@@ -8264,7 +8278,7 @@ msgstr "Webverwijzing"
 msgid "Hyperlink Information"
 msgstr "Webverwijzing Informatie"
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr "&Soort:"
 
@@ -9902,7 +9916,7 @@ msgid "b"
 msgstr "b"
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr "dpi"
@@ -10443,7 +10457,7 @@ msgstr "&Openen:"
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr "&Bladeren..."
 
@@ -10529,7 +10543,7 @@ msgstr "Originele locatie"
 msgid "Date deleted"
 msgstr "Datum verwijderd"
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -12964,254 +12978,330 @@ msgstr "Delen door nul fout.\n"
 msgid "Type mismatch"
 msgstr "Type komt niet overeen"
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 msgid "Device I/O error"
 msgstr "I/O-apparaatfout"
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 msgid "File already exists"
 msgstr "Bestand bestaat al"
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 msgid "Disk full"
 msgstr "Schijf vol"
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 msgid "Too many files"
 msgstr "Te veel bestanden"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 msgid "Permission denied"
 msgstr "Toegang geweigerd"
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr "Fout bij toegang tot pad/bestand"
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 msgid "Path not found"
 msgstr "Locatie niet gevonden"
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 msgid "Object variable not set"
 msgstr "De objectvariabele is niet ingesteld"
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 #, fuzzy
 #| msgid "Object is not initialized.\n"
 msgid "For loop not initialized"
 msgstr "Object is niet geïnitialiseerd.\n"
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 msgid "Invalid use of Null"
 msgstr "Ongeldig gebruik van Null"
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr "Kan het tijdelijke bestand niet maken"
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 msgid "ActiveX component can't create object"
 msgstr "ActiveX-onderdeel kan geen object maken"
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 msgid "Class doesn't support Automation"
 msgstr "Automatisering wordt niet ondersteund door deze klasse"
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr ""
 "Kan een bestandsnaam of klassenaam niet vinden tijdens een "
 "automatiseringsbewerking"
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 msgid "Object doesn't support named arguments"
 msgstr "Benoemde argumenten worden niet ondersteund door het object"
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 msgid "Object doesn't support current locale setting"
 msgstr "De huidige landinstellingen worden niet ondersteund door het object"
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 msgid "Named argument not found"
 msgstr "Kan benoemd argument niet vinden"
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr "Onjuist aantal argumenten of ongeldige eigenschappentoewijzing"
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 msgid "Specified DLL function not found"
 msgstr "Kan opgegeven DLL-functie niet vinden"
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr ""
 "Variabele maakt gebruik van een automatiseringstype dat niet in VBScript "
 "wordt ondersteund"
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr "De externe servercomputer bestaat niet of is niet beschikbaar"
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 #, fuzzy
 #| msgid "'|' is undefined"
 msgid "Variable is undefined"
 msgstr "'|' is ongedefinieerd"
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr "Ongeldige of niet-gekwalificeerde verwijzing"
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+#, fuzzy
+#| msgid "Class does not exist.\n"
+msgid "Class not defined"
+msgstr "Klasse bestaat niet.\n"
+
+#: dlls/vbscript/vbscript.rc:71
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected ']'"
+msgstr "';' verwacht"
+
+#: dlls/vbscript/vbscript.rc:75
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'If'"
+msgstr "';' verwacht"
+
+#: dlls/vbscript/vbscript.rc:76
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'To'"
 msgstr "';' verwacht"
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'End'"
 msgstr "Verwacht '@end'"
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Function'"
+msgstr "';' verwacht"
+
+#: dlls/vbscript/vbscript.rc:79
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Sub'"
+msgstr "';' verwacht"
+
+#: dlls/vbscript/vbscript.rc:80
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'Then'"
 msgstr "Verwacht '@end'"
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'Wend'"
 msgstr "Verwacht '@end'"
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Loop'"
 msgstr "';' verwacht"
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Next'"
 msgstr "';' verwacht"
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Case'"
 msgstr "';' verwacht"
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Select'"
+msgstr "';' verwacht"
+
+#: dlls/vbscript/vbscript.rc:86
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected statement"
 msgstr "Verwacht '@end'"
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 #, fuzzy
 #| msgid "Expected an operand.\n"
 msgid "Expected end of statement"
 msgstr "Verwacht een operand.\n"
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 #, fuzzy
 #| msgid "Unterminated string constant"
 msgid "Expected integer constant"
 msgstr "Onafgesloten tekenreeksconstante"
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'With'"
+msgstr "';' verwacht"
+
+#: dlls/vbscript/vbscript.rc:90
+#, fuzzy
+#| msgid "Secret too long.\n"
+msgid "Identifier too long"
+msgstr "Geheim te lang.\n"
+
+#: dlls/vbscript/vbscript.rc:92
 #, fuzzy
 #| msgid "Invalid flag number.\n"
 msgid "Invalid number"
 msgstr "Ongeldig vlagnumer.\n"
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+#, fuzzy
+#| msgid "Invalid use of Null"
+msgid "Invalid use of 'Me' keyword"
+msgstr "Ongeldig gebruik van Null"
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 #, fuzzy
 #| msgid "Invalid printer state.\n"
 msgid "Invalid 'exit' statement"
 msgstr "Ongeldige printerstatus.\n"
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 #, fuzzy
 #| msgid "Label redefined"
 msgid "Name redefined"
 msgstr "Label hergedefinieerd"
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 #, fuzzy
 #| msgid "Expected an operator.\n"
 msgid "Expected literal constant"
 msgstr "Verwacht een operator.\n"
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'In'"
 msgstr "';' verwacht"
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Class'"
 msgstr "';' verwacht"
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Property'"
+msgstr "';' verwacht"
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Unexpected 'Next'"
 msgstr "';' verwacht"
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr "Compilatiefout Microsoft VBScript"
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr "Runtimefout Microsoft VBScript"
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr "Wine"
 
@@ -14346,7 +14436,7 @@ msgid "Digi&tal"
 msgstr "&Digitaal"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "&Lettertype..."
@@ -15383,6 +15473,41 @@ msgstr "Elk teken is %1!u! pixels breed en %2!u! pixels hoog"
 msgid "This is a test"
 msgstr "Dit is een test"
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+#, fuzzy
+#| msgid "Error: Could not find process \"%1\".\n"
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr "Fout: Kon proces \"%1\" niet vinden.\n"
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr "Diagnostisch instrument voor DirectX"
@@ -19047,7 +19172,7 @@ msgstr ""
 "Even geduld...\n"
 "De Wine configuratie in %s wordt bijgewerkt."
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -19059,23 +19184,23 @@ msgstr ""
 "gepubliceerd door de Free Software Foundation; versie 2.1 van de licentie, "
 "of (naar keuze) een latere versie."
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 msgid "Windows registration information"
 msgstr "Windows registratie-informatie"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr "Eigenaar:"
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr "Organisatie:"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr "Toepassingsinstellingen"
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
@@ -19086,55 +19211,55 @@ msgstr ""
 "programma de standaardinstellingen of programmaspecifieke instellingen "
 "gebruikt worden."
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 msgid "Add appli&cation..."
 msgstr "Toepassing &toevoegen..."
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr "Toepassing &verwijderen"
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr "&Windows versie:"
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr "Vensterinstellingen"
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr "Indien volledig scherm, vang de &muis automatisch af"
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr "Laat de vensterbeheerder de vensters &decoreren"
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr "Laat de vensterbeheerder de vensters &beheren"
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr "Maak een &virtueel bureaublad"
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr "Afmetingen:"
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr "Schermresolutie"
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr "Dit is een tekstvoorbeeld in Tahoma met puntgrootte 10"
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr "DLL aanpassingen"
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
@@ -19144,55 +19269,55 @@ msgstr ""
 "(de versie van Wine) of 'windows' (afkomstig van Windows of meegeleverd met "
 "een programma)."
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr "&Nieuwe DLL aanpassing:"
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr "&Toevoegen"
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr "Bestaande &aanpassingen:"
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 msgid "&Edit..."
 msgstr "&Bewerken..."
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr "DLL Bewerken"
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr "Laad volgorde"
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr "Inge&bouwd (Wine)"
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr "Wi&ndows"
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 msgid "Buil&tin then Native"
 msgstr "&Ingebouwd dan Windows"
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr "Windo&ws dan Ingebouwd"
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr "Selecteer Schijfletter"
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 msgid "Drive configuration"
 msgstr "Schijf configuratie"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 msgid ""
 "Failed to connect to the mount manager; the drive configuration cannot be "
 "edited."
@@ -19200,115 +19325,115 @@ msgstr ""
 "Kon niet verbinden met de schijfkoppelaar, de schijfconfiguratie kan niet "
 "worden bewerkt."
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 msgid "A&dd..."
 msgstr "&Toevoegen..."
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr "&Pad:"
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 msgid "Show Advan&ced"
 msgstr "Uitgebreide Opties"
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr "A&pparaat:"
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr "B&laderen..."
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr "&Naam:"
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr "S&erie-nr:"
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 msgid "&Show dot files"
 msgstr "Toon verborgen bestanden"
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr "Stuurprogramma"
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr "Geluids&test"
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr "Multimedia Apparaten"
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr "Uitvoer apparaat:"
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr "Stemuitvoer apparaat:"
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr "Invoer apparaat:"
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr "Steminvoer apparaat:"
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 msgid "MIDI output device:"
 msgstr "MIDI uitvoer apparaat:"
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 msgid "Speaker configuration"
 msgstr "Luidsprekeropstelling"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr "Luidsprekeropstelling:"
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr "Uiterlijk"
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr "&Thema:"
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 msgid "&WinRT theme:"
 msgstr "&WinRT thema:"
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr "Thema &installeren..."
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr "Onderdeel:"
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr "Kleur:"
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr "Bestandsassociaties"
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr "&Bestands- en protocolassociaties toestaan"
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr "Speciale Mappen"
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr "Doelmap:"
 
@@ -19389,26 +19514,32 @@ msgid "(System default)"
 msgstr "(Systeeminstelling)"
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+#, fuzzy
+#| msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr "5.1 Surround"
 
 #: programs/winecfg/winecfg.rc:91
+msgid "5.1 Surround"
+msgstr "5.1 Surround"
+
+#: programs/winecfg/winecfg.rc:92
 msgid "Quadraphonic"
 msgstr "4.0 Surround"
 
-#: programs/winecfg/winecfg.rc:92
+#: programs/winecfg/winecfg.rc:93
 msgid "Stereo"
 msgstr "2.0 Stereo"
 
-#: programs/winecfg/winecfg.rc:93
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr "Mono"
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 msgid "Light"
 msgstr "Licht"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr "Donker"
 
@@ -19528,127 +19659,127 @@ msgstr ""
 "Vergeet niet om met de knop 'Toevoegen' in het 'Schijven'-tabblad een\n"
 "C-schijf aan te maken!\n"
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr "Achtergrond Kleur"
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr "Tekst Kleur"
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr "Menu Kleur"
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr "Menu Tekst"
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr "Scrollbalk"
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr "Selectie Achtergrond"
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr "Selectie Tekst"
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr "Knopinfo Achtergrond"
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr "Knopinfo Tekst"
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr "Venster Achtergrond"
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr "Venster Tekst"
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 msgid "Active Title Bar"
 msgstr "Actieve Titelbalk"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr "Actieve Titeltekst"
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr "Inactieve Titelbalk"
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr "Inactieve Titeltekst"
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr "Meldingsvenster Tekst"
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr "Toepassingsachtergrond"
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr "Vensterrand"
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr "Actieve Rand"
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr "Inactieve Rand"
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr "Schaduw"
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr "Grijze Tekst"
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr "Markering"
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr "Donkere Schaduw"
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr "Lichtinval"
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr "Alternatieve Achtergrond"
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr "Gevolgd Onderdeel"
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr "Actieve Titelbalk Verloop"
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr "Inactieve Titelbalk Verloop"
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr "Menu Gemarkeerd"
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr "Menubalk"
 
diff --git a/po/or.po b/po/or.po
index 286ff4c74eb9..6dc0c98664a7 100644
--- a/po/or.po
+++ b/po/or.po
@@ -78,7 +78,7 @@ msgstr ""
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr ""
@@ -115,7 +115,7 @@ msgstr ""
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -215,7 +215,7 @@ msgstr ""
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -703,7 +703,7 @@ msgid "Font St&yle:"
 msgstr ""
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr ""
 
@@ -719,7 +719,7 @@ msgstr ""
 msgid "&Underline"
 msgstr ""
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr ""
 
@@ -896,7 +896,7 @@ msgstr ""
 msgid "C&ollate"
 msgstr ""
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr ""
 
@@ -975,7 +975,7 @@ msgstr ""
 msgid "Files of type:"
 msgstr ""
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr ""
 
@@ -2404,7 +2404,7 @@ msgid "&File name:"
 msgstr ""
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr ""
 
@@ -3720,11 +3720,19 @@ msgstr ""
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr ""
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr ""
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr ""
 
@@ -3859,11 +3867,11 @@ msgstr ""
 msgid "Subscript out of range"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 msgid "Out of stack space"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr ""
 
@@ -3871,23 +3879,23 @@ msgstr ""
 msgid "Automation server can't create object"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 msgid "Object not a collection"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr ""
 
@@ -3895,27 +3903,27 @@ msgstr ""
 msgid "Expected ';'"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 msgid "Expected '='"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 msgid "Invalid character"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr ""
 
@@ -3959,7 +3967,7 @@ msgstr ""
 msgid "Microsoft JScript runtime error"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 msgid "Unknown runtime error"
 msgstr ""
 
@@ -3983,7 +3991,7 @@ msgstr ""
 msgid "Object expected"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr ""
 
@@ -4190,11 +4198,11 @@ msgstr ""
 msgid "Path not found.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr ""
 
@@ -5547,7 +5555,7 @@ msgstr ""
 msgid "File has a user-mapped section.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr ""
 
@@ -7132,67 +7140,71 @@ msgid "This network connection does not exist.\n"
 msgstr ""
 
 #: dlls/kernelbase/winerror.mc:3750
-msgid "Call interrupted.\n"
+msgid "File or directory is not a reparse point.\n"
 msgstr ""
 
 #: dlls/kernelbase/winerror.mc:3755
+msgid "Call interrupted.\n"
+msgstr ""
+
+#: dlls/kernelbase/winerror.mc:3760
 msgid "Invalid file handle.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 msgid "Invalid pointer address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 msgid "Invalid argument.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 msgid "Connection reset by peer.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 #, fuzzy
 msgid "Host not found.\n"
 msgstr "ସୂଚନା (&o)"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 msgid "Nonauthoritative host not found.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 msgid "Nonrecoverable error.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 msgid "Not implemented.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 msgid "Call failed.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 msgid "Unable to find matching object.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 msgid "No Signature found in file.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 msgid "Invalid call.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 msgid "Resource is not currently available.\n"
 msgstr ""
 
@@ -8159,7 +8171,7 @@ msgstr ""
 msgid "Hyperlink Information"
 msgstr ""
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr ""
 
@@ -9706,7 +9718,7 @@ msgid "b"
 msgstr ""
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr ""
@@ -10247,7 +10259,7 @@ msgstr ""
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr ""
 
@@ -10334,7 +10346,7 @@ msgstr ""
 msgid "Date deleted"
 msgstr ""
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -12729,212 +12741,268 @@ msgstr ""
 msgid "Type mismatch"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 msgid "Device I/O error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 msgid "File already exists"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 msgid "Disk full"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 msgid "Too many files"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 msgid "Permission denied"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 msgid "Path not found"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 msgid "Object variable not set"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 msgid "For loop not initialized"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 msgid "Invalid use of Null"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 msgid "ActiveX component can't create object"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 msgid "Class doesn't support Automation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 msgid "Object doesn't support named arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 msgid "Object doesn't support current locale setting"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 msgid "Named argument not found"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 msgid "Specified DLL function not found"
 msgstr ""
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 msgid "Variable is undefined"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+msgid "Class not defined"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:71
+msgid "Expected ']'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:75
+msgid "Expected 'If'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:76
 msgid "Expected 'To'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 msgid "Expected 'End'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+msgid "Expected 'Function'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:79
+msgid "Expected 'Sub'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:80
 msgid "Expected 'Then'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 msgid "Expected 'Wend'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 msgid "Expected 'Loop'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 msgid "Expected 'Next'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 msgid "Expected 'Case'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+msgid "Expected 'Select'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:86
 msgid "Expected statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 msgid "Expected end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 msgid "Expected integer constant"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+msgid "Expected 'With'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:90
+msgid "Identifier too long"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:92
 msgid "Invalid number"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+msgid "Invalid use of 'Me' keyword"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 msgid "Invalid 'exit' statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 msgid "Name redefined"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 msgid "Expected literal constant"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 msgid "Expected 'In'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 msgid "Expected 'Class'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+msgid "Expected 'Property'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 msgid "Unexpected 'Next'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr ""
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr ""
 
@@ -13919,7 +13987,7 @@ msgid "Digi&tal"
 msgstr "ଡିଜିଟାଲ (&)"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "ଅକ୍ଷରରୂପ (&F)..."
@@ -14706,6 +14774,39 @@ msgstr ""
 msgid "This is a test"
 msgstr ""
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr ""
@@ -17975,7 +18076,7 @@ msgstr ""
 msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -17983,249 +18084,249 @@ msgid ""
 "option) any later version."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 #, fuzzy
 msgid "Windows registration information"
 msgstr "ଅକ୍ଷରରୂପ (&F)..."
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
 "or per-application settings in those tabs as well."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 msgid "Add appli&cation..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
 "application)."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 #, fuzzy
 msgid "&Edit..."
 msgstr "ଅକ୍ଷରରୂପ (&F)..."
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 msgid "Buil&tin then Native"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 msgid "Drive configuration"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 msgid ""
 "Failed to connect to the mount manager; the drive configuration cannot be "
 "edited."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 msgid "A&dd..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 msgid "Show Advan&ced"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 msgid "&Show dot files"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 msgid "MIDI output device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 msgid "Speaker configuration"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 msgid "&WinRT theme:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr ""
 
@@ -18306,26 +18407,30 @@ msgid "(System default)"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:91
-msgid "Quadraphonic"
+msgid "5.1 Surround"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:92
-msgid "Stereo"
+msgid "Quadraphonic"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:93
+msgid "Stereo"
+msgstr ""
+
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 msgid "Light"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr ""
 
@@ -18430,128 +18535,128 @@ msgid ""
 "Remember to click 'Add' in the Drives tab to create one!\n"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 #, fuzzy
 msgid "Active Title Bar"
 msgstr "ଶୀର୍ଷକ ପଟି ବିନା (&W)"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr ""
 
diff --git a/po/pa.po b/po/pa.po
index dd9b2385eeac..1b01e0f5b757 100644
--- a/po/pa.po
+++ b/po/pa.po
@@ -78,7 +78,7 @@ msgstr ""
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr ""
@@ -115,7 +115,7 @@ msgstr ""
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -215,7 +215,7 @@ msgstr ""
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -703,7 +703,7 @@ msgid "Font St&yle:"
 msgstr ""
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr ""
 
@@ -719,7 +719,7 @@ msgstr ""
 msgid "&Underline"
 msgstr ""
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr ""
 
@@ -896,7 +896,7 @@ msgstr ""
 msgid "C&ollate"
 msgstr ""
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr ""
 
@@ -975,7 +975,7 @@ msgstr ""
 msgid "Files of type:"
 msgstr ""
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr ""
 
@@ -2404,7 +2404,7 @@ msgid "&File name:"
 msgstr ""
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr ""
 
@@ -3720,11 +3720,19 @@ msgstr ""
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr ""
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr ""
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr ""
 
@@ -3859,11 +3867,11 @@ msgstr ""
 msgid "Subscript out of range"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 msgid "Out of stack space"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr ""
 
@@ -3871,23 +3879,23 @@ msgstr ""
 msgid "Automation server can't create object"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 msgid "Object not a collection"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr ""
 
@@ -3895,27 +3903,27 @@ msgstr ""
 msgid "Expected ';'"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 msgid "Expected '='"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 msgid "Invalid character"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr ""
 
@@ -3959,7 +3967,7 @@ msgstr ""
 msgid "Microsoft JScript runtime error"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 msgid "Unknown runtime error"
 msgstr ""
 
@@ -3983,7 +3991,7 @@ msgstr ""
 msgid "Object expected"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr ""
 
@@ -4190,11 +4198,11 @@ msgstr ""
 msgid "Path not found.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr ""
 
@@ -5547,7 +5555,7 @@ msgstr ""
 msgid "File has a user-mapped section.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr ""
 
@@ -7132,67 +7140,71 @@ msgid "This network connection does not exist.\n"
 msgstr ""
 
 #: dlls/kernelbase/winerror.mc:3750
-msgid "Call interrupted.\n"
+msgid "File or directory is not a reparse point.\n"
 msgstr ""
 
 #: dlls/kernelbase/winerror.mc:3755
+msgid "Call interrupted.\n"
+msgstr ""
+
+#: dlls/kernelbase/winerror.mc:3760
 msgid "Invalid file handle.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 msgid "Invalid pointer address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 msgid "Invalid argument.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 msgid "Connection reset by peer.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 #, fuzzy
 msgid "Host not found.\n"
 msgstr "ਜਾਣਕਾਰੀ(&o)"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 msgid "Nonauthoritative host not found.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 msgid "Nonrecoverable error.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 msgid "Not implemented.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 msgid "Call failed.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 msgid "Unable to find matching object.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 msgid "No Signature found in file.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 msgid "Invalid call.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 msgid "Resource is not currently available.\n"
 msgstr ""
 
@@ -8159,7 +8171,7 @@ msgstr ""
 msgid "Hyperlink Information"
 msgstr ""
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr ""
 
@@ -9706,7 +9718,7 @@ msgid "b"
 msgstr ""
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr ""
@@ -10247,7 +10259,7 @@ msgstr ""
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr ""
 
@@ -10334,7 +10346,7 @@ msgstr ""
 msgid "Date deleted"
 msgstr ""
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -12729,212 +12741,268 @@ msgstr ""
 msgid "Type mismatch"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 msgid "Device I/O error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 msgid "File already exists"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 msgid "Disk full"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 msgid "Too many files"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 msgid "Permission denied"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 msgid "Path not found"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 msgid "Object variable not set"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 msgid "For loop not initialized"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 msgid "Invalid use of Null"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 msgid "ActiveX component can't create object"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 msgid "Class doesn't support Automation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 msgid "Object doesn't support named arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 msgid "Object doesn't support current locale setting"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 msgid "Named argument not found"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 msgid "Specified DLL function not found"
 msgstr ""
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 msgid "Variable is undefined"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+msgid "Class not defined"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:71
+msgid "Expected ']'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:75
+msgid "Expected 'If'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:76
 msgid "Expected 'To'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 msgid "Expected 'End'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+msgid "Expected 'Function'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:79
+msgid "Expected 'Sub'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:80
 msgid "Expected 'Then'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 msgid "Expected 'Wend'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 msgid "Expected 'Loop'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 msgid "Expected 'Next'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 msgid "Expected 'Case'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+msgid "Expected 'Select'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:86
 msgid "Expected statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 msgid "Expected end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 msgid "Expected integer constant"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+msgid "Expected 'With'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:90
+msgid "Identifier too long"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:92
 msgid "Invalid number"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+msgid "Invalid use of 'Me' keyword"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 msgid "Invalid 'exit' statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 msgid "Name redefined"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 msgid "Expected literal constant"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 msgid "Expected 'In'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 msgid "Expected 'Class'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+msgid "Expected 'Property'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 msgid "Unexpected 'Next'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr ""
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr ""
 
@@ -13919,7 +13987,7 @@ msgid "Digi&tal"
 msgstr "ਡਿਜ਼ੀਟਲ(&t)"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "ਫੌਂਟ(&F)..."
@@ -14706,6 +14774,39 @@ msgstr ""
 msgid "This is a test"
 msgstr ""
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr ""
@@ -17975,7 +18076,7 @@ msgstr ""
 msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -17983,249 +18084,249 @@ msgid ""
 "option) any later version."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 #, fuzzy
 msgid "Windows registration information"
 msgstr "ਫੌਂਟ(&F)..."
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
 "or per-application settings in those tabs as well."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 msgid "Add appli&cation..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
 "application)."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 #, fuzzy
 msgid "&Edit..."
 msgstr "ਫੌਂਟ(&F)..."
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 msgid "Buil&tin then Native"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 msgid "Drive configuration"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 msgid ""
 "Failed to connect to the mount manager; the drive configuration cannot be "
 "edited."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 msgid "A&dd..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 msgid "Show Advan&ced"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 msgid "&Show dot files"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 msgid "MIDI output device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 msgid "Speaker configuration"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 msgid "&WinRT theme:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr ""
 
@@ -18306,26 +18407,30 @@ msgid "(System default)"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:91
-msgid "Quadraphonic"
+msgid "5.1 Surround"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:92
-msgid "Stereo"
+msgid "Quadraphonic"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:93
+msgid "Stereo"
+msgstr ""
+
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 msgid "Light"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr ""
 
@@ -18430,128 +18535,128 @@ msgid ""
 "Remember to click 'Add' in the Drives tab to create one!\n"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 #, fuzzy
 msgid "Active Title Bar"
 msgstr "ਟਾਈਟਲਬਾਰ ਤੋਂ ਬਿਨਾਂ(&W)"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr ""
 
diff --git a/po/pl.po b/po/pl.po
index 45f8fa95bf71..3ee3b585d593 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -10,7 +10,7 @@ msgstr ""
 "Project-Id-Version: Wine\n"
 "Report-Msgid-Bugs-To: https://bugs.winehq.org\n"
 "POT-Creation-Date: N/A\n"
-"PO-Revision-Date: 2026-04-02 16:58+0200\n"
+"PO-Revision-Date: 2026-04-09 23:32+0200\n"
 "Last-Translator: Adam Markowski <wbcwknvstb@proton.me>\n"
 "Language-Team: Polish <kde-i18n-doc@kde.org>\n"
 "Language: pl\n"
@@ -89,7 +89,7 @@ msgstr "Za&mień..."
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr "&Usuń"
@@ -126,7 +126,7 @@ msgstr "Szczegóły wsparcia"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -232,7 +232,7 @@ msgstr "&Zainstaluj"
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -728,7 +728,7 @@ msgid "Font St&yle:"
 msgstr "K&rój czcionki:"
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "&Rozmiar:"
 
@@ -744,7 +744,7 @@ msgstr "Prz&ekreślona"
 msgid "&Underline"
 msgstr "P&odkreślona"
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "&Kolor:"
 
@@ -921,7 +921,7 @@ msgstr "Liczba &kopii:"
 msgid "C&ollate"
 msgstr "&Zgrupuj"
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr "Ro&zmiar:"
 
@@ -999,7 +999,7 @@ msgstr "Nazwa pliku:"
 msgid "Files of type:"
 msgstr "Pliki rodzaju:"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr "Nie znaleziono pliku"
 
@@ -2451,7 +2451,7 @@ msgid "&File name:"
 msgstr "&Nazwa pliku:"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr "P&rzeglądaj..."
 
@@ -3824,11 +3824,19 @@ msgstr "Indeo 5"
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr "Kodek Indeo Video Interactive w wersji 5"
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr "Kodek IYUV"
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr "Kodek Intel Indeo IYUV"
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr "Dżojstiki"
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr "Wyłą&cz"
 
@@ -3975,11 +3983,11 @@ msgstr "Niewłaściwe wywołanie procedury lub argument"
 msgid "Subscript out of range"
 msgstr "Indeks dolny poza zakresem"
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 msgid "Out of stack space"
 msgstr "Wyczerpano pamięć stosu"
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr "Wymagany obiekt"
 
@@ -3987,23 +3995,23 @@ msgstr "Wymagany obiekt"
 msgid "Automation server can't create object"
 msgstr "Serwer automatyzacji nie może stworzyć obiektu"
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr "Obiekt nie wspiera tej właściwości lub metody"
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr "Obiekt nie wspiera tej akcji"
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr "Argument nieopcjonalny"
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 msgid "Object not a collection"
 msgstr "Obiekt nie jest zbiorem"
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr "Błąd składni"
 
@@ -4011,27 +4019,27 @@ msgstr "Błąd składni"
 msgid "Expected ';'"
 msgstr "Oczekiwano ';'"
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr "Oczekiwano '('"
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr "Oczekiwano ')'"
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr "Oczekiwano identyfikatora"
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 msgid "Expected '='"
 msgstr "Oczekiwano ';'"
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 msgid "Invalid character"
 msgstr "Nieprawidłowy znak"
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr "Niezakończona stała znakowa"
 
@@ -4075,7 +4083,7 @@ msgstr "Błąd kompilacji Microsoft JScript"
 msgid "Microsoft JScript runtime error"
 msgstr "Błąd biblioteki uruchomieniowej Microsoft JScript"
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 msgid "Unknown runtime error"
 msgstr "Nieznany błąd biblioteki uruchomieniowej"
 
@@ -4099,7 +4107,7 @@ msgstr "'[obiekt]' nie jest obiektem daty"
 msgid "Object expected"
 msgstr "Oczekiwany obiekt"
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr "Niepoprawne przypisanie"
 
@@ -4310,11 +4318,11 @@ msgstr "Nie znaleziono pliku.\n"
 msgid "Path not found.\n"
 msgstr "Nie znaleziono ścieżki.\n"
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr "Zbyt dużo otwartych plików.\n"
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr "Odmówiono dostępu.\n"
 
@@ -5666,7 +5674,7 @@ msgstr "Operacja anulowana przez użytkownika.\n"
 msgid "File has a user-mapped section.\n"
 msgstr "Plik ma sekcję mapowania użytkownika.\n"
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr "Połączenie odmówiło.\n"
 
@@ -7253,66 +7261,72 @@ msgid "This network connection does not exist.\n"
 msgstr "Połączenie sieciowe nie istnieje.\n"
 
 #: dlls/kernelbase/winerror.mc:3750
+#, fuzzy
+#| msgid "File or directory corrupt.\n"
+msgid "File or directory is not a reparse point.\n"
+msgstr "Plik lub katalog zepsuty.\n"
+
+#: dlls/kernelbase/winerror.mc:3755
 msgid "Call interrupted.\n"
 msgstr "Wywołanie przerwane.\n"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 msgid "Invalid file handle.\n"
 msgstr "Nieprawidłowy uchwyt pliku.\n"
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 msgid "Invalid pointer address.\n"
 msgstr "Niepoprawny adres wskaźnika.\n"
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 msgid "Invalid argument.\n"
 msgstr "Niepoprawny argument.\n"
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr "Nie można przypisać żądanego adresu.\n"
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 msgid "Connection reset by peer.\n"
 msgstr "Połączenie zresetowane przez uczestnika.\n"
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 msgid "Host not found.\n"
 msgstr "Nie znaleziono hosta.\n"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 msgid "Nonauthoritative host not found.\n"
 msgstr "Nie znaleziono nieautorytatywnego hosta.\n"
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 msgid "Nonrecoverable error.\n"
 msgstr "Wystąpił nienaprawialny błąd.\n"
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr "Nazwa prawidłowa, brak rekordu danych.\n"
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 msgid "Not implemented.\n"
 msgstr "Niezaimplementowane.\n"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 msgid "Call failed.\n"
 msgstr "Nie udało się wywołać.\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 msgid "Unable to find matching object.\n"
 msgstr "Nie można znaleźć pasującego obiektu.\n"
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 msgid "No Signature found in file.\n"
 msgstr "Nie znaleziono podpisu w pliku.\n"
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 msgid "Invalid call.\n"
 msgstr "Nieprawidłowe wywołanie.\n"
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 msgid "Resource is not currently available.\n"
 msgstr "Zasób jest obecnie niedostępny.\n"
 
@@ -8275,7 +8289,7 @@ msgstr "Hiperłącze"
 msgid "Hyperlink Information"
 msgstr "Własności hiperłącza"
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr "&Rodzaj:"
 
@@ -9861,7 +9875,7 @@ msgid "b"
 msgstr "b"
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr "dpi"
@@ -10402,7 +10416,7 @@ msgstr "&Otwórz:"
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr "&Przeglądaj..."
 
@@ -10488,7 +10502,7 @@ msgstr "Oryginalne położenie"
 msgid "Date deleted"
 msgstr "Data usunięcia"
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -12924,212 +12938,274 @@ msgstr "Dzielenie przez zero"
 msgid "Type mismatch"
 msgstr "Niezgodność rodzajów"
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 msgid "Device I/O error"
 msgstr "Błąd we/wy urządzenia"
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 msgid "File already exists"
 msgstr "Plik już istnieje"
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 msgid "Disk full"
 msgstr "Dysk pełen"
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 msgid "Too many files"
 msgstr "Zbyt wiele plików"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 msgid "Permission denied"
 msgstr "Odmówiono dostępu"
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr "Błąd dostępu do ścieżki/pliku"
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 msgid "Path not found"
 msgstr "Nie znaleziono ścieżki"
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 msgid "Object variable not set"
 msgstr "Nie ustawiono zmiennej obiektu"
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 msgid "For loop not initialized"
 msgstr "Pętla for nie została zainicjowana"
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 msgid "Invalid use of Null"
 msgstr "Nieprawidłowe użycie Null"
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr "Nie można utworzyć potrzebnego pliku tymczasowego"
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 msgid "ActiveX component can't create object"
 msgstr "Składnik ActiveX nie może utworzyć obiektu"
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 msgid "Class doesn't support Automation"
 msgstr "Klasa nie obsługuje Automation"
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr "Nie znaleziono nazwy pliku lub klasy podczas działania Automation"
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 msgid "Object doesn't support named arguments"
 msgstr "Obiekt nie obsługuje nazwanych argumentów"
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 msgid "Object doesn't support current locale setting"
 msgstr "Obiekt nie obsługuje ustawień bieżącego regionu"
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 msgid "Named argument not found"
 msgstr "Nie znaleziono nazwanego argumentu"
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr "Zła liczba argumentów lub nieprawidłowe przypisanie własności"
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 msgid "Specified DLL function not found"
 msgstr "Nie odnaleziono danej funkcji DLL"
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr "Zmienna używa rodzaju Automation nieobsługiwanego w VBScript"
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr "Komputer serwera zdalnego nie istnieje lub jest niedostępny"
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 msgid "Variable is undefined"
 msgstr "Zmienna jest niezdefiniowana"
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr "Nieprawidłowe lub niezwartościowane odniesienie"
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+#, fuzzy
+#| msgid "Class does not exist.\n"
+msgid "Class not defined"
+msgstr "Klasa nie istnieje.\n"
+
+#: dlls/vbscript/vbscript.rc:71
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected ']'"
+msgstr "Oczekiwano ';'"
+
+#: dlls/vbscript/vbscript.rc:75
+msgid "Expected 'If'"
+msgstr "Oczekiwano 'If'"
+
+#: dlls/vbscript/vbscript.rc:76
 msgid "Expected 'To'"
 msgstr "Oczekiwano 'To'"
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 msgid "Expected 'End'"
 msgstr "Oczekiwano 'End'"
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+msgid "Expected 'Function'"
+msgstr "Oczekiwano 'Function'"
+
+#: dlls/vbscript/vbscript.rc:79
+msgid "Expected 'Sub'"
+msgstr "Oczekiwano 'Sub'"
+
+#: dlls/vbscript/vbscript.rc:80
 msgid "Expected 'Then'"
 msgstr "Oczekiwano 'Then'"
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 msgid "Expected 'Wend'"
 msgstr "Oczekiwano 'Wend'"
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 msgid "Expected 'Loop'"
 msgstr "Oczekiwano 'Loop'"
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 msgid "Expected 'Next'"
 msgstr "Oczekiwano 'Next'"
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 msgid "Expected 'Case'"
 msgstr "Oczekiwano 'Case'"
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+msgid "Expected 'Select'"
+msgstr "Oczekiwano 'Select'"
+
+#: dlls/vbscript/vbscript.rc:86
 msgid "Expected statement"
 msgstr "Oczekiwano instrukcji"
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 msgid "Expected end of statement"
 msgstr "Oczekiwano końca instrukcji"
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 msgid "Expected integer constant"
 msgstr "Oczekiwano stałej całkowitej"
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr "Oczekiwano 'While', 'Until' lub końca instrukcji"
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+msgid "Expected 'With'"
+msgstr "Oczekiwano 'With'"
+
+#: dlls/vbscript/vbscript.rc:90
+#, fuzzy
+#| msgid "Secret too long.\n"
+msgid "Identifier too long"
+msgstr "Secret zbyt długi.\n"
+
+#: dlls/vbscript/vbscript.rc:92
 msgid "Invalid number"
 msgstr "Nieprawidłowa liczba"
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+msgid "Invalid use of 'Me' keyword"
+msgstr "Nieprawidłowe użycie słowa kluczowego 'Me'"
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr "'loop' bez 'do'"
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 msgid "Invalid 'exit' statement"
 msgstr "Nieprawidłowa instrukcja 'Exit'"
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 msgid "Name redefined"
 msgstr "Nazwa zdefiniowana na nowo"
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr "Musi być pierwszą instrukcją w wierszu"
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
-msgstr "Nie można używać nawiasów podczas wywoływania funkcji Sub"
+msgstr "Nie można używać nawiasów podczas wywoływania 'Sub'"
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 msgid "Expected literal constant"
 msgstr "Oczekiwano stałej literałowej"
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 msgid "Expected 'In'"
 msgstr "Oczekiwano 'In'"
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 msgid "Expected 'Class'"
 msgstr "Oczekiwano 'Class'"
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
-msgstr "Musi być określone wewnątrz funkcji 'Class'"
+msgstr "Musi być określone wewnątrz 'Class'"
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
-msgstr "Oczekiwano Let, Set lub Get w deklaracji właściwości"
+msgstr "Oczekiwano 'Let', 'Set' lub 'Get' w deklaracji właściwości"
+
+#: dlls/vbscript/vbscript.rc:106
+msgid "Expected 'Property'"
+msgstr "Oczekiwano 'Property'"
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr "Liczba argumentów musi być spójna w całej specyfikacji właściwości"
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr "Nie może być wielu domyślnych właściwości/metod w 'Class'"
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
-msgstr "Inicjalizacja lub zakończenie funkcji Class nie ma argumentów"
+msgstr "Inicjalizacja lub zakończenie 'Class' nie ma argumentów"
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
-msgstr "Właściwość Set lub Let musi mieć co najmniej jeden argument"
+msgstr "Właściwość 'Set' lub 'Let' musi mieć co najmniej jeden argument"
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 msgid "Unexpected 'Next'"
 msgstr "Oczekiwano 'Next'"
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr "Specyfikacja 'Default' musi również określać 'Public'"
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr "Specyfikacja 'Default' może być tylko w 'Property Get'"
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr "Błąd kompilacji Microsoft VBScript"
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr "Błąd biblioteki uruchomieniowej Microsoft VBScript"
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr "Wine"
 
@@ -14264,7 +14340,7 @@ msgid "Digi&tal"
 msgstr "C&yfrowy"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "&Czcionka..."
@@ -15286,6 +15362,41 @@ msgstr "Każdy znak jest szeroki na %1!u! piksele i wysoki na %2!u! piksele"
 msgid "This is a test"
 msgstr "To jest próba"
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+#, fuzzy
+#| msgid "Error: Could not find process \"%1\".\n"
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr "Błąd: nie można znaleźć procesu \"%1\".\n"
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr "Narzędzie diagnostyki DirectX"
@@ -18941,7 +19052,7 @@ msgstr ""
 msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr "Ustawienia Wine w %s są właśnie uaktualniane, proszę czekać..."
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -18953,23 +19064,23 @@ msgstr ""
 "opublikowanej przez Free Software Foundation; licencji w wersji 2.1, lub "
 "(według własnego uznania) dowolnej późniejszej."
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 msgid "Windows registration information"
 msgstr "Dane rejestracyjne Windows"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr "&Właściciel:"
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr "Organi&zacja:"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr "Ustawienia aplikacji"
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
@@ -18980,55 +19091,55 @@ msgstr ""
 "ustawień dla całego systemu lub dla poszczególnych aplikacji również na tych "
 "kartach."
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 msgid "Add appli&cation..."
 msgstr "Dodaj aplika&cję..."
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr "&Usuń aplikację"
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr "&Wersja Windows:"
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr "Ustawienia okien"
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr "Przechwytuj &mysz w oknach pełnoekranowych"
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr "Zezwól systemowi oz&dabiać okna"
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr "Zez&wól systemowi zarządzać oknami"
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr "&Emuluj wirtualny pulpit"
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr "&Rozmiar pulpitu:"
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr "Rozdzielczość ekranu"
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr "Oto przykład zastosowania 10-punktowej czcionki Tahoma"
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr "Zasady bibliotek DLL"
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
@@ -19038,55 +19149,55 @@ msgstr ""
 "(dostarczane przez Wine) lub natywne (pobierane z systemu Windows lub "
 "dostarczane przez aplikację)."
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr "&Nowa zasada dla biblioteki:"
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr "&Dodaj"
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr "&Bieżące zasady:"
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 msgid "&Edit..."
 msgstr "Zmi&eń..."
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr "Zmiana zasady"
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr "Kolejność wczytywania"
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr "W&budowana (Wine)"
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr "Zew&nętrzna (Windows)"
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 msgid "Buil&tin then Native"
 msgstr "Najpierw wbudowana później zewnę&trzna"
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr "Najpierw ze&wnętrzna później wbudowana"
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr "Wybierz literę napędu"
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 msgid "Drive configuration"
 msgstr "Ustawienia dysków"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 msgid ""
 "Failed to connect to the mount manager; the drive configuration cannot be "
 "edited."
@@ -19094,115 +19205,115 @@ msgstr ""
 "Nie udało się połączyć z programem do zarządzania podpiętymi; nie można "
 "zmienić ustawień napędu."
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 msgid "A&dd..."
 msgstr "&Dodaj..."
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr "&Ścieżka:"
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 msgid "Show Advan&ced"
 msgstr "Pokaż &rozszerzone"
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr "U&rządzenie:"
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr "Prze&glądaj..."
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr "&Etykieta:"
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr "Numer s&eryjny:"
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 msgid "&Show dot files"
 msgstr "Pokaż także pliki zaczynające &się od kropki"
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr "Diagnostyka sterownika"
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr "Próba dźwięku"
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr "Domyślne"
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr "Urządzenie wyjściowe:"
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr "Urządzenie wyjściowe głosu:"
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr "Urządzenie wejściowe:"
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr "Urządzenie wejściowe głosu:"
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 msgid "MIDI output device:"
 msgstr "Urządzenie wyjściowe MIDI:"
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 msgid "Speaker configuration"
 msgstr "Rozmieszczenie głośników"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr "Głośniki:"
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr "Wygląd"
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr "Mo&tyw:"
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 msgid "&WinRT theme:"
 msgstr "Motyw &WinRT:"
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr "&Zainstaluj motyw..."
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr "El&ement:"
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr "K&olor:"
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr "Typy MIME"
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr "Z&arządzaj skojarzeniami plików i protokołów"
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr "Katalogi"
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr "Dowiązany do:"
 
@@ -19283,26 +19394,32 @@ msgid "(System default)"
 msgstr "(Domyślne systemowe)"
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+#, fuzzy
+#| msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr "Dźwięk przestrzenny w układzie 5.1"
 
 #: programs/winecfg/winecfg.rc:91
+msgid "5.1 Surround"
+msgstr "Dźwięk przestrzenny w układzie 5.1"
+
+#: programs/winecfg/winecfg.rc:92
 msgid "Quadraphonic"
 msgstr "Kwadrofonia"
 
-#: programs/winecfg/winecfg.rc:92
+#: programs/winecfg/winecfg.rc:93
 msgid "Stereo"
 msgstr "Stereo"
 
-#: programs/winecfg/winecfg.rc:93
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr "Mono"
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 msgid "Light"
 msgstr "Jasny"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr "Ciemny"
 
@@ -19420,127 +19537,127 @@ msgstr ""
 "\n"
 "Pamiętaj, aby kliknąć „Dodaj” na karcie Dyski, aby je utworzyć!\n"
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr "Kontrolki - tło"
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr "Kontrolki - tekst"
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr "Tło menu"
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr "Tekst menu"
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr "Pasek przewijania"
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr "Tło zaznaczonego obszaru"
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr "Zaznaczony tekst"
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr "Tło podpowiedzi"
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr "Tekst podpowiedzi"
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr "Tło okna"
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr "Tekst okna"
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 msgid "Active Title Bar"
 msgstr "Tło nagłówka aktywnego okna"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr "Tytuł aktywnego okna"
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr "Tło nagłówka nieaktywnego okna"
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr "Tytuł nieaktywnego okna"
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr "Tekst okien komunikatów"
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr "Wnętrze okna aplikacji"
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr "Ramka okna"
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr "Obramowanie aktywnego okna"
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr "Obramowanie nieaktywnego okna"
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr "Kontrolki - cień"
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr "Szary tekst"
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr "Kontrolki - podświetlenie"
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr "Kontrolki - głębszy cień"
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr "Kontrolki - jaśniejszy cień"
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr "Kontrolki - alternatywne tło"
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr "Śledzony element"
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr "Gradient nagłówka aktywnego okna"
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr "Gradient nagłówka nieaktywnego okna"
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr "Podświetlone menu"
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr "Pasek menu"
 
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 2e55ab04b9f0..9e7effa24a82 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -82,7 +82,7 @@ msgstr "&Modificar..."
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr "&Remover"
@@ -119,7 +119,7 @@ msgstr "Informação de Suporte"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -226,7 +226,7 @@ msgstr "&Instalar"
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -722,7 +722,7 @@ msgid "Font St&yle:"
 msgstr "&Estilo da Fonte:"
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "Taman&ho:"
 
@@ -738,7 +738,7 @@ msgstr "&Riscado"
 msgid "&Underline"
 msgstr "&Sublinhado"
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "&Cor:"
 
@@ -915,7 +915,7 @@ msgstr "Número de &cópias:"
 msgid "C&ollate"
 msgstr "&Agrupar"
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr "Ta&manho:"
 
@@ -993,7 +993,7 @@ msgstr "Nome do arquivo:"
 msgid "Files of type:"
 msgstr "Arquivos do tipo:"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr "Arquivo não encontrado"
 
@@ -2457,7 +2457,7 @@ msgid "&File name:"
 msgstr "Nome do &arquivo:"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr "&Navegar..."
 
@@ -3843,11 +3843,19 @@ msgstr "Índice"
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr "Codec de vídeo Wine Video 1"
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr "Controles"
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr "&Desativar"
 
@@ -4006,11 +4014,11 @@ msgstr "Argumento ou chamada de procedimento inválida"
 msgid "Subscript out of range"
 msgstr "Índice fora do intervalo"
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 msgid "Out of stack space"
 msgstr "Sem espaço na pilha"
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr "Objeto requerido"
 
@@ -4018,23 +4026,23 @@ msgstr "Objeto requerido"
 msgid "Automation server can't create object"
 msgstr "O servidor de automação não conseguiu criar o objeto"
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr "O objeto não suporta esta propriedade ou método"
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr "O objeto não suporta esta ação"
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr "Argumento não opcional"
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 msgid "Object not a collection"
 msgstr "Objeto não é coleção"
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr "Erro de sintaxe"
 
@@ -4042,27 +4050,27 @@ msgstr "Erro de sintaxe"
 msgid "Expected ';'"
 msgstr "Esperado ';'"
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr "Esperado '('"
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr "Esperado ')'"
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr "Identificador esperado"
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 msgid "Expected '='"
 msgstr "Esperado '='"
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 msgid "Invalid character"
 msgstr "Caractere inválido"
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr "Cadeia constante não terminada"
 
@@ -4106,7 +4114,7 @@ msgstr "Microsoft JScript erro de compilação"
 msgid "Microsoft JScript runtime error"
 msgstr "Microsoft JScript erro de execução"
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 msgid "Unknown runtime error"
 msgstr "Erro de execução desconhecido"
 
@@ -4132,7 +4140,7 @@ msgstr "'[object]' não é um objeto de data"
 msgid "Object expected"
 msgstr "Objeto esperado"
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr "Atribuição ilegal"
 
@@ -4358,11 +4366,11 @@ msgstr "Arquivo não encontrado.\n"
 msgid "Path not found.\n"
 msgstr "Caminho não encontrado.\n"
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr "Muitos arquivos abertos.\n"
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr "Acesso negado.\n"
 
@@ -5714,7 +5722,7 @@ msgstr "Operação cancelada pelo usuário.\n"
 msgid "File has a user-mapped section.\n"
 msgstr "O arquivo tem uma seção mapeada para o usuário.\n"
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr "Conexão recusada.\n"
 
@@ -7301,81 +7309,87 @@ msgstr "Esta conexão de rede não existe.\n"
 
 #: dlls/kernelbase/winerror.mc:3750
 #, fuzzy
+#| msgid "File or directory corrupt.\n"
+msgid "File or directory is not a reparse point.\n"
+msgstr "Arquivo ou diretório corrompido.\n"
+
+#: dlls/kernelbase/winerror.mc:3755
+#, fuzzy
 #| msgid "Invalid at interrupt time.\n"
 msgid "Call interrupted.\n"
 msgstr "Inválido no tempo de interrupção.\n"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 #, fuzzy
 #| msgid "Invalid handle.\n"
 msgid "Invalid file handle.\n"
 msgstr "Manipulador inválido.\n"
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 #, fuzzy
 #| msgid "Invalid network address.\n"
 msgid "Invalid pointer address.\n"
 msgstr "Endereço de rede inválido.\n"
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 #, fuzzy
 #| msgid "Invalid name.\n"
 msgid "Invalid argument.\n"
 msgstr "Nome inválido.\n"
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 msgid "Connection reset by peer.\n"
 msgstr "Conexão redefinida pelo cliente.\n"
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 #, fuzzy
 #| msgid "Point not found.\n"
 msgid "Host not found.\n"
 msgstr "Ponto não encontrado.\n"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 #, fuzzy
 #| msgid "Attribute is not found.\n"
 msgid "Nonauthoritative host not found.\n"
 msgstr "Atributo não encontrado.\n"
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 #, fuzzy
 #| msgid "Unrecoverable error occurred.\n"
 msgid "Nonrecoverable error.\n"
 msgstr "Ocorreu um erro irrecuperável.\n"
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 msgid "Not implemented.\n"
 msgstr "Não implementado.\n"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 msgid "Call failed.\n"
 msgstr "Falha na chamada.\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 #, fuzzy
 #| msgid "Unable to unload media.\n"
 msgid "Unable to find matching object.\n"
 msgstr "Não é possível descarregar a mídia.\n"
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 msgid "No Signature found in file.\n"
 msgstr "Nenhuma Assinatura encontrada no arquivo.\n"
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 msgid "Invalid call.\n"
 msgstr "Chamada inválida.\n"
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 msgid "Resource is not currently available.\n"
 msgstr "Recurso atualmente não disponível.\n"
 
@@ -8339,7 +8353,7 @@ msgstr "Hiperlink"
 msgid "Hyperlink Information"
 msgstr "Informação do Hiperlink"
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr "&Tipo:"
 
@@ -9987,7 +10001,7 @@ msgid "b"
 msgstr "b"
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr "ppp"
@@ -10525,7 +10539,7 @@ msgstr "&Abrir:"
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr "&Procurar..."
 
@@ -10611,7 +10625,7 @@ msgstr "Localização original"
 msgid "Date deleted"
 msgstr "Data de exclusão"
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -13161,250 +13175,326 @@ msgstr "Erro de divisão por zero.\n"
 msgid "Type mismatch"
 msgstr "Tipo de dados diferente"
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 msgid "Device I/O error"
 msgstr "Erro em dispositivo de E/S"
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 msgid "File already exists"
 msgstr "O arquivo já existe"
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 msgid "Disk full"
 msgstr "Disco cheio"
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 msgid "Too many files"
 msgstr "Muitos arquivos abertos"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 msgid "Permission denied"
 msgstr "Acesso negado"
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr "Falha de acesso ao Caminho/Arquivo"
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 msgid "Path not found"
 msgstr "Caminho não encontrado"
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 msgid "Object variable not set"
 msgstr "Objeto variável não setado"
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 #, fuzzy
 #| msgid "Object is not initialized.\n"
 msgid "For loop not initialized"
 msgstr "Objeto não inicializado.\n"
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 msgid "Invalid use of Null"
 msgstr "Usuo inválido de Null"
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr "Arquivo temporário não pode ser criado"
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 msgid "ActiveX component can't create object"
 msgstr "Componente ActiveX não pode criar objeto"
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 msgid "Class doesn't support Automation"
 msgstr "Classe não suporta nomeação automática"
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr "Nome de arquivo ou classe não encontrado durante operação automática"
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 msgid "Object doesn't support named arguments"
 msgstr "O objeto não suporta argumentos nomeados"
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 msgid "Object doesn't support current locale setting"
 msgstr "O objeto não suporta esta ação"
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 msgid "Named argument not found"
 msgstr "Argumento nomeado não encontrado"
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr "Numero de argumento errado ou propriedade inválida"
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 msgid "Specified DLL function not found"
 msgstr "DLL de função não encontrada"
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr "Variável usa um tipo de automação não suportado em VBScript"
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr "Servidor remoto não existe ou esta inacessível"
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 #, fuzzy
 #| msgid "'|' is undefined"
 msgid "Variable is undefined"
 msgstr "'|' é indefinido"
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr "Referência inválida"
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+#, fuzzy
+#| msgid "Class does not exist.\n"
+msgid "Class not defined"
+msgstr "Classe inexistente.\n"
+
+#: dlls/vbscript/vbscript.rc:71
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected ']'"
+msgstr "Esperado ';'"
+
+#: dlls/vbscript/vbscript.rc:75
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'If'"
+msgstr "Esperado ';'"
+
+#: dlls/vbscript/vbscript.rc:76
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'To'"
 msgstr "Esperado ';'"
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'End'"
 msgstr "Esperado '@end'"
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Function'"
+msgstr "Esperado ';'"
+
+#: dlls/vbscript/vbscript.rc:79
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Sub'"
+msgstr "Esperado ';'"
+
+#: dlls/vbscript/vbscript.rc:80
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'Then'"
 msgstr "Esperado '@end'"
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'Wend'"
 msgstr "Esperado '@end'"
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Loop'"
 msgstr "Esperado ';'"
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Next'"
 msgstr "Esperado ';'"
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Case'"
 msgstr "Esperado ';'"
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Select'"
+msgstr "Esperado ';'"
+
+#: dlls/vbscript/vbscript.rc:86
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected statement"
 msgstr "Esperado '@end'"
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 #, fuzzy
 #| msgid "Expected an operand.\n"
 msgid "Expected end of statement"
 msgstr "Esperado um operando.\n"
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 #, fuzzy
 #| msgid "Unterminated string constant"
 msgid "Expected integer constant"
 msgstr "Cadeia constante não terminada"
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'With'"
+msgstr "Esperado ';'"
+
+#: dlls/vbscript/vbscript.rc:90
+#, fuzzy
+#| msgid "Secret too long.\n"
+msgid "Identifier too long"
+msgstr "Segredo muito longo.\n"
+
+#: dlls/vbscript/vbscript.rc:92
 #, fuzzy
 #| msgid "Invalid flag number.\n"
 msgid "Invalid number"
 msgstr "Número de flag inválido.\n"
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+#, fuzzy
+#| msgid "Invalid use of Null"
+msgid "Invalid use of 'Me' keyword"
+msgstr "Usuo inválido de Null"
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 #, fuzzy
 #| msgid "Invalid printer state.\n"
 msgid "Invalid 'exit' statement"
 msgstr "Estado de impressora inválido.\n"
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 #, fuzzy
 #| msgid "Label redefined"
 msgid "Name redefined"
 msgstr "Rótulo redefinido"
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 #, fuzzy
 #| msgid "Expected an operator.\n"
 msgid "Expected literal constant"
 msgstr "Um operador é esperado.\n"
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'In'"
 msgstr "Esperado ';'"
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Class'"
 msgstr "Esperado ';'"
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Property'"
+msgstr "Esperado ';'"
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Unexpected 'Next'"
 msgstr "Esperado ';'"
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr "Microsoft VBScript erro de compilação"
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr "Microsoft VBScript erro de execução"
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr "Wine"
 
@@ -14556,7 +14646,7 @@ msgid "Digi&tal"
 msgstr "Digi&tal"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "&Fonte..."
@@ -15592,6 +15682,41 @@ msgstr "Cada caractere tem %1!u! pixels de largura por %2!u! pixels de altura"
 msgid "This is a test"
 msgstr "Este é um teste"
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+#, fuzzy
+#| msgid "Error: Could not find process \"%1\".\n"
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr "Erro: Não foi possível encontrar o processo \"%1\".\n"
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr "Ferramenta de Diagnóstico do DirectX"
@@ -19396,7 +19521,7 @@ msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr ""
 "A configuração do Wine em %s está sendo atualizada, por favor, aguarde..."
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -19408,23 +19533,23 @@ msgstr ""
 "Software Foundation; tanto na versão 2.1 desta licença ou (à sua escolha) "
 "qualquer versão posterior."
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 msgid "Windows registration information"
 msgstr "Informações de registro do Windows"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr "&Proprietário:"
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr "&Organização:"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr "Configurações de Aplicativo"
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
@@ -19434,55 +19559,55 @@ msgstr ""
 "aba é ligada às abas Bibliotecas e Gráficos para permitir alterar "
 "configurações globais ou por aplicativo também nessas abas."
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 msgid "Add appli&cation..."
 msgstr "Adicionar apli&cativo..."
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr "&Remover aplicativo"
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr "Versão do &Windows:"
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr "Configurações de Janela"
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr "Capturar o &mouse automaticamente em janelas em tela cheia"
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr "Permitir que o gerenciador de janelas &decore as janelas"
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr "Permitir que o gerenciador de janelas &controle as janelas"
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr "&Emular uma área de trabalho virtual"
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr "Tamanho da Tela:"
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr "Resolução da Tela"
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr "Este é um texto exemplo usando Tahoma 10 pontos"
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr "Substituições de DLL"
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
@@ -19492,55 +19617,55 @@ msgstr ""
 "embutidas (fornecidas pelo Wine) ou nativas (tiradas do Windows ou "
 "fornecidas pelo aplicativo)."
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr "&Nova substituição para a biblioteca:"
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr "&Adicionar"
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr "Substituições e&xistentes:"
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 msgid "&Edit..."
 msgstr "&Editar..."
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr "Editar Substituição"
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr "Ordem de Carregamento"
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr "&Embutida (Wine)"
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr "&Nativa (Windows)"
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 msgid "Buil&tin then Native"
 msgstr "E&mbutida depois Nativa"
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr "Nati&va depois Embutida"
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr "Selecione a Letra"
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 msgid "Drive configuration"
 msgstr "Configuração de unidades"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 msgid ""
 "Failed to connect to the mount manager; the drive configuration cannot be "
 "edited."
@@ -19548,121 +19673,121 @@ msgstr ""
 "Falha de conexão com o gerenciador de montagem; a configuração da unidade "
 "não pôde ser alterada."
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 msgid "A&dd..."
 msgstr "&Adicionar..."
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr "&Caminho:"
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 msgid "Show Advan&ced"
 msgstr "M&ostrar Avançado"
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr "Dispositi&vo:"
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr "Nave&gar..."
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr "&Rótulo:"
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr "&Serial:"
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 msgid "&Show dot files"
 msgstr "Mostrar arquivos com &ponto"
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr "Diagnósticos de driver"
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr "&Testar Som"
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr "Dispositivos Padrões"
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr "Saída:"
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr "Saída de voz:"
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr "Entrada:"
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr "Entrada de voz:"
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 #, fuzzy
 #| msgid "Output device:"
 msgid "MIDI output device:"
 msgstr "Saída:"
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 msgid "Speaker configuration"
 msgstr "Configuração dos alto-falantes"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr "Alto-falantes:"
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr "Aparência"
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr "&Tema:"
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 #, fuzzy
 #| msgid "&Theme:"
 msgid "&WinRT theme:"
 msgstr "&Tema:"
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr "&Instalar tema..."
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr "It&em:"
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr "C&or:"
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr "Tipos MIME"
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 #, fuzzy
 #| msgid "Manage file &associations"
 msgid "Manage file and protocol &associations"
 msgstr "Gerenciar &associação de arquivos"
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr "Pastas"
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr "&Atalho para:"
 
@@ -19743,28 +19868,34 @@ msgid "(System default)"
 msgstr "(Padrão do sistema)"
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+#, fuzzy
+#| msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr "Surround 5.1"
 
 #: programs/winecfg/winecfg.rc:91
+msgid "5.1 Surround"
+msgstr "Surround 5.1"
+
+#: programs/winecfg/winecfg.rc:92
 msgid "Quadraphonic"
 msgstr "Quadrafônico"
 
-#: programs/winecfg/winecfg.rc:92
+#: programs/winecfg/winecfg.rc:93
 msgid "Stereo"
 msgstr "Estéreo"
 
-#: programs/winecfg/winecfg.rc:93
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr "Mono"
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 #, fuzzy
 #| msgid "Right"
 msgid "Light"
 msgstr "Direita"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr ""
 
@@ -19882,127 +20013,127 @@ msgstr ""
 "\n"
 "Lembre-se de clicar em 'Adicionar' na aba Unidades para criar uma!\n"
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr "Fundo do Botão"
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr "Texto do Botão"
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr "Fundo do Menu"
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr "Texto do Menu"
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr "Barra de Rolagem"
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr "Fundo de Seleção"
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr "Texto de Seleção"
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr "Fundo da Dica"
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr "Texto da Dica"
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr "Fundo da Janela"
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr "Texto da Janela"
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 msgid "Active Title Bar"
 msgstr "Barra de Título Ativa"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr "Texto de Título Ativo"
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr "Barra de Título Inativa"
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr "Texto de Título Inativo"
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr "Texto da Caixa de Mensagens"
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr "Área do Aplicativo"
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr "Corpo da Janela"
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr "Borda Ativa"
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr "Borda Inativa"
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr "Sombra dos Botões"
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr "Texto Inativo"
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr "Realce do Botão"
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr "Sombra Escura do Botão"
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr "Luz do Botão"
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr "Fundo Alternativo do Botão"
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr "Elemento Ativo"
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr "Gradiente da Barra Ativa"
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr "Gradiente da Barra Inativa"
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr "Realce de Menu"
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr "Barra de Menu"
 
diff --git a/po/pt_PT.po b/po/pt_PT.po
index 35fcce5a6dc9..38a52d8adaf9 100644
--- a/po/pt_PT.po
+++ b/po/pt_PT.po
@@ -98,7 +98,7 @@ msgstr "&Modificar..."
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr "&Remover"
@@ -135,7 +135,7 @@ msgstr "Informação de Suporte"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -242,7 +242,7 @@ msgstr "&Instalar"
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -744,7 +744,7 @@ msgid "Font St&yle:"
 msgstr "&Estilo do Tipo de Letra:"
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "&Tamanho:"
 
@@ -760,7 +760,7 @@ msgstr "&Riscado"
 msgid "&Underline"
 msgstr "&Sublinhado"
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "&Cor:"
 
@@ -939,7 +939,7 @@ msgstr "Número de &cópias:"
 msgid "C&ollate"
 msgstr "&Agrupar"
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr "Tama&nho:"
 
@@ -1017,7 +1017,7 @@ msgstr "Nome do ficheiro:"
 msgid "Files of type:"
 msgstr "Ficheiros do tipo:"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr "Ficheiro não encontrado"
 
@@ -2482,7 +2482,7 @@ msgid "&File name:"
 msgstr "&Nome do ficheiro:"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr "P&rocurar..."
 
@@ -3886,11 +3886,19 @@ msgstr "Índice"
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr "codec video Wine Video 1"
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr ""
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr "&Desactivar"
 
@@ -4051,13 +4059,13 @@ msgstr "Argumento ou chamada de procedimento inválida"
 msgid "Subscript out of range"
 msgstr "Subscripto fora de alcance"
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 #, fuzzy
 #| msgid "Out of paper; "
 msgid "Out of stack space"
 msgstr "Sem papel; "
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr "Objecto esperado"
 
@@ -4065,25 +4073,25 @@ msgstr "Objecto esperado"
 msgid "Automation server can't create object"
 msgstr "O servidor de automação não conseguiu criar o objecto"
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr "O objecto não suporta esta propriedade ou método"
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr "O objecto não suporta esta acção"
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr "Argumento não opcional"
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 #, fuzzy
 #| msgid "Object Class Violation"
 msgid "Object not a collection"
 msgstr "Violação da Classe de Objecto"
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr "Erro de sintaxe"
 
@@ -4091,27 +4099,27 @@ msgstr "Erro de sintaxe"
 msgid "Expected ';'"
 msgstr "';' esperado"
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr "'(' esperado"
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr "')' esperado"
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr "Identificador esperado"
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 msgid "Expected '='"
 msgstr "Esperado '='"
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 msgid "Invalid character"
 msgstr "Caractere inválido"
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr "Constante de string não terminada"
 
@@ -4155,7 +4163,7 @@ msgstr ""
 msgid "Microsoft JScript runtime error"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 #, fuzzy
 #| msgid "Unknown error"
 msgid "Unknown runtime error"
@@ -4183,7 +4191,7 @@ msgstr "'[object]' não é um objecto de data"
 msgid "Object expected"
 msgstr "Objecto esperado"
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr "Atribuição ilegal"
 
@@ -4409,11 +4417,11 @@ msgstr "Ficheiro não encontrado.\n"
 msgid "Path not found.\n"
 msgstr "Caminho não encontrado.\n"
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr "Demasiados ficheiros abertos.\n"
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr "Acesso negado.\n"
 
@@ -5765,7 +5773,7 @@ msgstr "Operação cancelada pelo utilizador.\n"
 msgid "File has a user-mapped section.\n"
 msgstr "O ficheiro tem uma secção mapeada para o utilizador.\n"
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr "Ligação recusada.\n"
 
@@ -7351,89 +7359,95 @@ msgstr "Esta conexão de rede não existe.\n"
 
 #: dlls/kernelbase/winerror.mc:3750
 #, fuzzy
+#| msgid "File or directory corrupt.\n"
+msgid "File or directory is not a reparse point.\n"
+msgstr "Ficheiro ou pasta corrompido.\n"
+
+#: dlls/kernelbase/winerror.mc:3755
+#, fuzzy
 #| msgid "Invalid at interrupt time.\n"
 msgid "Call interrupted.\n"
 msgstr "Inválido no tempo de interrupção.\n"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 #, fuzzy
 #| msgid "Invalid handle.\n"
 msgid "Invalid file handle.\n"
 msgstr "Descritor inválido.\n"
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 #, fuzzy
 #| msgid "Invalid network address.\n"
 msgid "Invalid pointer address.\n"
 msgstr "Endereço de rede inválido.\n"
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 #, fuzzy
 #| msgid "Invalid name.\n"
 msgid "Invalid argument.\n"
 msgstr "Nome inválido.\n"
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 msgid "Connection reset by peer.\n"
 msgstr "Conexão cancelada pelo cliente.\n"
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 #, fuzzy
 #| msgid "Point not found.\n"
 msgid "Host not found.\n"
 msgstr "Ponto não encontrado.\n"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 #, fuzzy
 #| msgid "File not found.\n"
 msgid "Nonauthoritative host not found.\n"
 msgstr "Ficheiro não encontrado.\n"
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 #, fuzzy
 #| msgid "A printer error occurred."
 msgid "Nonrecoverable error.\n"
 msgstr "Ocorreu um erro de impressão."
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 #, fuzzy
 #| msgid "Not implemented"
 msgid "Not implemented.\n"
 msgstr "Não implementado"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 #, fuzzy
 #| msgid "RPC call failed.\n"
 msgid "Call failed.\n"
 msgstr "Chamada RPC falhou.\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 #, fuzzy
 #| msgid "Unable to unload media.\n"
 msgid "Unable to find matching object.\n"
 msgstr "Não consegue descarregar o media.\n"
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 #, fuzzy
 #| msgid "Message 0x%1 not found in file %2.\n"
 msgid "No Signature found in file.\n"
 msgstr "Mensagem 0x%1 não encontrada no ficheiro %2.\n"
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 #, fuzzy
 #| msgid "Invalid level.\n"
 msgid "Invalid call.\n"
 msgstr "Nível inválido.\n"
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 #, fuzzy
 #| msgid "Help not available."
 msgid "Resource is not currently available.\n"
@@ -8655,7 +8669,7 @@ msgstr "Hiperligação"
 msgid "Hyperlink Information"
 msgstr "Informação da Hiperligação"
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr "&Tipo:"
 
@@ -10320,7 +10334,7 @@ msgid "b"
 msgstr "b"
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr "dpi"
@@ -10859,7 +10873,7 @@ msgstr "&Abrir:"
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr "&Procurar..."
 
@@ -10959,7 +10973,7 @@ msgstr "Localização original"
 msgid "Date deleted"
 msgstr "Data de exclusão"
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -13914,278 +13928,354 @@ msgstr ""
 msgid "Type mismatch"
 msgstr "Incompatibildade no tipo de dados.\n"
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 #, fuzzy
 #| msgid "I/O device error.\n"
 msgid "Device I/O error"
 msgstr "Erro em dispositivo I/O.\n"
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 #, fuzzy
 #| msgid "File already exists.\n"
 msgid "File already exists"
 msgstr "Ficheiro já existe.\n"
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 #, fuzzy
 #| msgid "Disk full.\n"
 msgid "Disk full"
 msgstr "Disco cheio.\n"
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 #, fuzzy
 #| msgid "Too many open files.\n"
 msgid "Too many files"
 msgstr "Demasiados ficheiros abertos.\n"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 #, fuzzy
 #| msgid "Access denied.\n"
 msgid "Permission denied"
 msgstr "Acesso negado.\n"
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 #, fuzzy
 #| msgid "Path not found.\n"
 msgid "Path not found"
 msgstr "Caminho não encontrado.\n"
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 #, fuzzy
 #| msgid "(value not set)"
 msgid "Object variable not set"
 msgstr "(valor não definido)"
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 #, fuzzy
 #| msgid "Object UUID not found.\n"
 msgid "For loop not initialized"
 msgstr "UUID do objecto não encontrado.\n"
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 #, fuzzy
 #| msgid "Invalid user buffer.\n"
 msgid "Invalid use of Null"
 msgstr "Buffer de utilizador inválido.\n"
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 #, fuzzy
 #| msgid "Automation server can't create object"
 msgid "ActiveX component can't create object"
 msgstr "O servidor de automação não conseguiu criar o objecto"
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Class doesn't support Automation"
 msgstr "O objecto não suporta esta acção"
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Object doesn't support named arguments"
 msgstr "O objecto não suporta esta acção"
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Object doesn't support current locale setting"
 msgstr "O objecto não suporta esta acção"
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 #, fuzzy
 #| msgid "Element not found.\n"
 msgid "Named argument not found"
 msgstr "Elemento não encontrado.\n"
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 #, fuzzy
 #| msgid "Specified control was not found in message"
 msgid "Specified DLL function not found"
 msgstr "O controlo especificado não foi encontrado na mensagem"
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 #, fuzzy
 #| msgid "'|' is undefined"
 msgid "Variable is undefined"
 msgstr "'|' é indefinido"
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+#, fuzzy
+#| msgid "Class does not exist.\n"
+msgid "Class not defined"
+msgstr "Classe inexistente.\n"
+
+#: dlls/vbscript/vbscript.rc:71
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected ']'"
+msgstr "';' esperado"
+
+#: dlls/vbscript/vbscript.rc:75
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'If'"
+msgstr "';' esperado"
+
+#: dlls/vbscript/vbscript.rc:76
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'To'"
 msgstr "';' esperado"
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'End'"
 msgstr "Esperado '@end'"
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Function'"
+msgstr "';' esperado"
+
+#: dlls/vbscript/vbscript.rc:79
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Sub'"
+msgstr "';' esperado"
+
+#: dlls/vbscript/vbscript.rc:80
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'Then'"
 msgstr "Esperado '@end'"
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'Wend'"
 msgstr "Esperado '@end'"
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Loop'"
 msgstr "';' esperado"
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Next'"
 msgstr "';' esperado"
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Case'"
 msgstr "';' esperado"
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Select'"
+msgstr "';' esperado"
+
+#: dlls/vbscript/vbscript.rc:86
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected statement"
 msgstr "Esperado '@end'"
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 #, fuzzy
 #| msgid "Expected an operator.\n"
 msgid "Expected end of statement"
 msgstr "Operador esperado.\n"
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 #, fuzzy
 #| msgid "Unterminated string constant"
 msgid "Expected integer constant"
 msgstr "Constante de string não terminada"
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'With'"
+msgstr "';' esperado"
+
+#: dlls/vbscript/vbscript.rc:90
+#, fuzzy
+#| msgid "Secret too long.\n"
+msgid "Identifier too long"
+msgstr "Segredo muito longo.\n"
+
+#: dlls/vbscript/vbscript.rc:92
 #, fuzzy
 #| msgid "Invalid flag number.\n"
 msgid "Invalid number"
 msgstr "Número de flag inválido.\n"
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+#, fuzzy
+#| msgid "Invalid user buffer.\n"
+msgid "Invalid use of 'Me' keyword"
+msgstr "Buffer de utilizador inválido.\n"
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 #, fuzzy
 #| msgid "Invalid printer state.\n"
 msgid "Invalid 'exit' statement"
 msgstr "Estado de impressora inválido.\n"
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 #, fuzzy
 #| msgid "Label redefined"
 msgid "Name redefined"
 msgstr "Etiqueta redefinida"
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 #, fuzzy
 #| msgid "Expected an operator.\n"
 msgid "Expected literal constant"
 msgstr "Operador esperado.\n"
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'In'"
 msgstr "';' esperado"
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Class'"
 msgstr "';' esperado"
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Property'"
+msgstr "';' esperado"
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Unexpected 'Next'"
 msgstr "';' esperado"
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr ""
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr "Wine"
 
@@ -15350,7 +15440,7 @@ msgid "Digi&tal"
 msgstr "Digi&tal"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "Tipo de &Letra..."
@@ -16363,6 +16453,41 @@ msgstr "Cada caracter tem %1!u! pixels de largura por %2!u! pixels de altura"
 msgid "This is a test"
 msgstr "Este é um teste"
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+#, fuzzy
+#| msgid "Error: Could not find process \"%1\".\n"
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr "Erro: Incapaz de encontrar o processo \"%1\".\n"
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr "Ferramenta de Diagnóstico do DirectX"
@@ -19933,7 +20058,7 @@ msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr ""
 "A configuração do Wine em %s está a ser actualizada, por favor aguarde..."
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -19945,23 +20070,23 @@ msgstr ""
 "Programas Livres; também a versão 2.1 da Licença, ou (na sua opinião) "
 "qualquer versão posterior."
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 msgid "Windows registration information"
 msgstr "Informações de registro do Windows"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr "&Proprietário:"
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr "&Organização:"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr "Definições da aplicação"
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
@@ -19971,55 +20096,55 @@ msgstr ""
 "Esta aba está ligada às abas de Bibliotecas e Gráficos para permitir alterar "
 "definições por aplicação ou no sistema também nessas abas."
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 msgid "Add appli&cation..."
 msgstr "&Adicionar aplicação..."
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr "&Remover aplicação"
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr "Versão do &Windows:"
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr "Definições da Janela"
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr "Captura automaticamente o &rato em janelas de ecrã-completo"
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr "Permite ao gestor de janelas &decorar as janelas"
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr "Permite ao &gestor de janelas controlar as janelas"
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr "Emular um ecrã &virtual"
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr "Tamanho do &ecrã:"
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr "Resolução do Ecrã"
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr "Este é um texto exemplo que usa o tipo de letra Tahoma 10 pontos"
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr "Substituição de DLL"
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
@@ -20029,55 +20154,55 @@ msgstr ""
 "para serem embutidas (fornecido pelo Wine) ou nativas (tiradas do Windows ou "
 "fornecidas pela aplicação)."
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr "&Nova substituição para:"
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr "Substituições E&xistentes:"
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 msgid "&Edit..."
 msgstr "&Editar..."
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr "Editar Substituição"
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr "Ordem de Carregamento"
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr "Em&butida (Wine)"
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr "&Nativa (Windows)"
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 msgid "Buil&tin then Native"
 msgstr "E&mbutida depois Nativa"
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr "Nati&va depois Embutida"
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr "Seleccione a letra da unidade"
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 msgid "Drive configuration"
 msgstr "Configuração de unidades"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 #, fuzzy
 #| msgid ""
 #| "Failed to connect to the mount manager, the drive configuration cannot be "
@@ -20089,119 +20214,119 @@ msgstr ""
 "Falhou a ligação ao gestor de unidades, a configuração da unidade não pode "
 "ser editada."
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 msgid "A&dd..."
 msgstr "&Adicionar..."
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr "&Localização:"
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 msgid "Show Advan&ced"
 msgstr "Mostrar &Avançado"
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr "Dispositi&vo:"
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr "P&rocurar..."
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr "&Nome:"
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr "Nº S&erie:"
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 msgid "&Show dot files"
 msgstr "Mostrar &ficheiros com pontos"
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr "Diagnósticos do controlador"
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr "&Testar Som"
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr "Valores pré-definidos"
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr "Dispositivo de saída:"
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr "Dispositivo de saída de voz:"
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr "Dispositivo de entrada:"
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr "Dispositivo de entrada de voz:"
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 #, fuzzy
 #| msgid "Output device:"
 msgid "MIDI output device:"
 msgstr "Dispositivo de saída:"
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 msgid "Speaker configuration"
 msgstr "Configuração de Altifalantes"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr "Altifalantes:"
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr "Aparência"
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr "&Tema:"
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 #, fuzzy
 #| msgid "&Theme:"
 msgid "&WinRT theme:"
 msgstr "&Tema:"
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr "&Instalar tema..."
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr "It&em:"
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr "C&or:"
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr "Pastas"
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr "&Ligar a:"
 
@@ -20282,28 +20407,32 @@ msgid "(System default)"
 msgstr "(Padrão do sistema)"
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:91
-msgid "Quadraphonic"
+msgid "5.1 Surround"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:92
-msgid "Stereo"
+msgid "Quadraphonic"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:93
+msgid "Stereo"
+msgstr ""
+
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 #, fuzzy
 #| msgid "Right"
 msgid "Light"
 msgstr "Direita"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr ""
 
@@ -20428,127 +20557,127 @@ msgstr ""
 "Certifique-se que clica em 'Adicionar' no separador Unidades para criar "
 "uma!\n"
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr "Fundo dos Controlos"
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr "Texto dos Controlos"
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr "Fundo do Menu"
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr "Texto do Menu"
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr "Barra de Rolagem"
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr "Fundo de Selecção"
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr "Texto de Selecção"
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr "Fundo das Dicas"
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr "Texto das Dicas"
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr "Fundo das Janelas"
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr "Texto das Janelas"
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 msgid "Active Title Bar"
 msgstr "Barra de Título Activa"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr "Texto de Título Activo"
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr "Barra de Título Inactiva"
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr "Texto de Título Inactivo"
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr "Texto da Caixa de Mensagem"
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr "Espaço de trabalho de aplicações"
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr "Quandro de janela"
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr "Margem ativa"
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr "Margem inativa"
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr "Controla sombra"
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr "Texto cinzento"
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr "Controla realce"
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr "Controla sombra escura"
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr "Controla luz"
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr "Controla fundo alternativo"
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr "Gradiente da barra de título ativa"
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr "Gradiente da barra de título inativa"
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr "Realce de menu"
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr "Barra de menu"
 
diff --git a/po/rm.po b/po/rm.po
index 8dc404a5d155..13565cad0a2f 100644
--- a/po/rm.po
+++ b/po/rm.po
@@ -80,7 +80,7 @@ msgstr "Capchar"
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 #, fuzzy
 msgid "&Remove"
@@ -119,7 +119,7 @@ msgstr "INFUORMAZIUN"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -220,7 +220,7 @@ msgstr "&Annotaziun..."
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -716,7 +716,7 @@ msgid "Font St&yle:"
 msgstr ""
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr ""
 
@@ -732,7 +732,7 @@ msgstr ""
 msgid "&Underline"
 msgstr ""
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr ""
 
@@ -910,7 +910,7 @@ msgstr ""
 msgid "C&ollate"
 msgstr ""
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr ""
 
@@ -993,7 +993,7 @@ msgstr "&Datoteca"
 msgid "Files of type:"
 msgstr "&Datoteca"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr ""
 
@@ -2431,7 +2431,7 @@ msgid "&File name:"
 msgstr "&Datoteca"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr ""
 
@@ -3757,11 +3757,19 @@ msgstr "&Cuntgn�"
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr ""
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr ""
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr ""
 
@@ -3897,11 +3905,11 @@ msgstr ""
 msgid "Subscript out of range"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 msgid "Out of stack space"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr ""
 
@@ -3909,23 +3917,23 @@ msgstr ""
 msgid "Automation server can't create object"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 msgid "Object not a collection"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr ""
 
@@ -3933,27 +3941,27 @@ msgstr ""
 msgid "Expected ';'"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 msgid "Expected '='"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 msgid "Invalid character"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr ""
 
@@ -3997,7 +4005,7 @@ msgstr ""
 msgid "Microsoft JScript runtime error"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 msgid "Unknown runtime error"
 msgstr ""
 
@@ -4021,7 +4029,7 @@ msgstr ""
 msgid "Object expected"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr ""
 
@@ -4228,11 +4236,11 @@ msgstr ""
 msgid "Path not found.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr ""
 
@@ -5597,7 +5605,7 @@ msgstr ""
 msgid "File has a user-mapped section.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr ""
 
@@ -7189,71 +7197,75 @@ msgid "This network connection does not exist.\n"
 msgstr ""
 
 #: dlls/kernelbase/winerror.mc:3750
+msgid "File or directory is not a reparse point.\n"
+msgstr ""
+
+#: dlls/kernelbase/winerror.mc:3755
 #, fuzzy
 msgid "Call interrupted.\n"
 msgstr "Na implementa.\n"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 msgid "Invalid file handle.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 msgid "Invalid pointer address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 msgid "Invalid argument.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 #, fuzzy
 msgid "Connection reset by peer.\n"
 msgstr "INFUORMAZIUN.\n"
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 msgid "Host not found.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 msgid "Nonauthoritative host not found.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 msgid "Nonrecoverable error.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 #, fuzzy
 #| msgid "Not implemented"
 msgid "Not implemented.\n"
 msgstr "Na implementa"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 #, fuzzy
 msgid "Call failed.\n"
 msgstr "Wine ag�d.\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 msgid "Unable to find matching object.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 msgid "No Signature found in file.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 msgid "Invalid call.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 #, fuzzy
 msgid "Resource is not currently available.\n"
 msgstr "INFUORMAZIUN.\n"
@@ -8226,7 +8238,7 @@ msgstr ""
 msgid "Hyperlink Information"
 msgstr "INFUORMAZIUN"
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr ""
 
@@ -9785,7 +9797,7 @@ msgid "b"
 msgstr ""
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr ""
@@ -10330,7 +10342,7 @@ msgstr "&Rivir"
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr ""
 
@@ -10420,7 +10432,7 @@ msgstr ""
 msgid "Date deleted"
 msgstr ""
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -12821,213 +12833,269 @@ msgstr ""
 msgid "Type mismatch"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 msgid "Device I/O error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 msgid "File already exists"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 msgid "Disk full"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 #, fuzzy
 msgid "Too many files"
 msgstr "Wine ag�d"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 msgid "Permission denied"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 msgid "Path not found"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 msgid "Object variable not set"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 msgid "For loop not initialized"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 msgid "Invalid use of Null"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 msgid "ActiveX component can't create object"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 msgid "Class doesn't support Automation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 msgid "Object doesn't support named arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 msgid "Object doesn't support current locale setting"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 msgid "Named argument not found"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 msgid "Specified DLL function not found"
 msgstr ""
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 msgid "Variable is undefined"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+msgid "Class not defined"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:71
+msgid "Expected ']'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:75
+msgid "Expected 'If'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:76
 msgid "Expected 'To'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 msgid "Expected 'End'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+msgid "Expected 'Function'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:79
+msgid "Expected 'Sub'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:80
 msgid "Expected 'Then'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 msgid "Expected 'Wend'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 msgid "Expected 'Loop'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 msgid "Expected 'Next'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 msgid "Expected 'Case'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+msgid "Expected 'Select'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:86
 msgid "Expected statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 msgid "Expected end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 msgid "Expected integer constant"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+msgid "Expected 'With'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:90
+msgid "Identifier too long"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:92
 msgid "Invalid number"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+msgid "Invalid use of 'Me' keyword"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 msgid "Invalid 'exit' statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 msgid "Name redefined"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 msgid "Expected literal constant"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 msgid "Expected 'In'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 msgid "Expected 'Class'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+msgid "Expected 'Property'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 msgid "Unexpected 'Next'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr ""
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 #, fuzzy
 msgid "Wine"
 msgstr "Wine ag�d"
@@ -14015,7 +14083,7 @@ msgid "Digi&tal"
 msgstr ""
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr ""
@@ -14806,6 +14874,39 @@ msgstr ""
 msgid "This is a test"
 msgstr ""
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr ""
@@ -18119,7 +18220,7 @@ msgstr ""
 msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -18127,260 +18228,260 @@ msgid ""
 "option) any later version."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 #, fuzzy
 msgid "Windows registration information"
 msgstr "INFUORMAZIUN"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 #, fuzzy
 msgid "Organi&zation:"
 msgstr "INFUORMAZIUN"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
 "or per-application settings in those tabs as well."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 #, fuzzy
 msgid "Add appli&cation..."
 msgstr "&Annotaziun..."
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 #, fuzzy
 msgid "&Remove application"
 msgstr "&Annotaziun..."
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 #, fuzzy
 msgid "DLL overrides"
 msgstr "&Lavurar"
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
 "application)."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 #, fuzzy
 msgid "&Edit..."
 msgstr "&Lavurar"
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 #, fuzzy
 msgid "Edit Override"
 msgstr "&Lavurar"
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 #, fuzzy
 msgid "&Builtin (Wine)"
 msgstr "I&nfuormaziuns"
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 msgid "Buil&tin then Native"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 #, fuzzy
 msgid "Drive configuration"
 msgstr "INFUORMAZIUN"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 msgid ""
 "Failed to connect to the mount manager; the drive configuration cannot be "
 "edited."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 msgid "A&dd..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 msgid "Show Advan&ced"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 msgid "&Show dot files"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 #, fuzzy
 msgid "Output device:"
 msgstr "&Datoteca"
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 #, fuzzy
 msgid "MIDI output device:"
 msgstr "&Datoteca"
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 #, fuzzy
 msgid "Speaker configuration"
 msgstr "INFUORMAZIUN"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 msgid "&WinRT theme:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 #, fuzzy
 msgid "&Install theme..."
 msgstr "&Annotaziun..."
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr ""
 
@@ -18463,26 +18564,30 @@ msgid "(System default)"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:91
-msgid "Quadraphonic"
+msgid "5.1 Surround"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:92
-msgid "Stereo"
+msgid "Quadraphonic"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:93
+msgid "Stereo"
+msgstr ""
+
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 msgid "Light"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr ""
 
@@ -18587,127 +18692,127 @@ msgid ""
 "Remember to click 'Add' in the Drives tab to create one!\n"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 msgid "Active Title Bar"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr ""
 
diff --git a/po/ro.po b/po/ro.po
index d7ced88be200..ee75c070653a 100644
--- a/po/ro.po
+++ b/po/ro.po
@@ -87,7 +87,7 @@ msgstr "&Modifică..."
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr "&Elimină"
@@ -124,7 +124,7 @@ msgstr "Informații de asistență"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -225,7 +225,7 @@ msgstr "&Instalează"
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -719,7 +719,7 @@ msgid "Font St&yle:"
 msgstr "&Stil font:"
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "Mărime:"
 
@@ -735,7 +735,7 @@ msgstr "&Linie mijloc"
 msgid "&Underline"
 msgstr "&Subliniat"
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "Culoare:"
 
@@ -914,7 +914,7 @@ msgstr "Număr de &copii:"
 msgid "C&ollate"
 msgstr "C&olaționate"
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr "Mărime:"
 
@@ -992,7 +992,7 @@ msgstr "Nume fișier:"
 msgid "Files of type:"
 msgstr "Tip de fișier:"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr "Fișierul nu a fost găsit"
 
@@ -2451,7 +2451,7 @@ msgid "&File name:"
 msgstr "Nume &fișier:"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr "&Navighează..."
 
@@ -3843,11 +3843,19 @@ msgstr "Index"
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr "Codecul video Wine Video 1"
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr "Joystick-uri"
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr "&Dezactivează"
 
@@ -4002,13 +4010,13 @@ msgstr "Apel de procedură sau argument nevalid"
 msgid "Subscript out of range"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 #, fuzzy
 #| msgid "Out of paper; "
 msgid "Out of stack space"
 msgstr "Fără hârtia; "
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr "Se necesită un obiect"
 
@@ -4016,25 +4024,25 @@ msgstr "Se necesită un obiect"
 msgid "Automation server can't create object"
 msgstr "Serverul de automatizare nu poate crea obiectul"
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr "Obiectul nu suportă această proprietate sau metodă"
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr "Obiectul nu suportă această acțiune"
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr "Argumentul nu este opțional"
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 #, fuzzy
 #| msgid "Object Class Violation"
 msgid "Object not a collection"
 msgstr "Violare de clasă de obiect"
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr "Eroare de sintaxă"
 
@@ -4042,27 +4050,27 @@ msgstr "Eroare de sintaxă"
 msgid "Expected ';'"
 msgstr "Se așteaptă „;”"
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr "Se așteaptă „(”"
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr "Se așteaptă „)”"
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr "Se așteaptă un identificator"
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 msgid "Expected '='"
 msgstr "Se așteaptă „=”"
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 msgid "Invalid character"
 msgstr "Caracter invalid"
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr "Șir constant neterminat"
 
@@ -4106,7 +4114,7 @@ msgstr ""
 msgid "Microsoft JScript runtime error"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 #, fuzzy
 #| msgid "Unknown error"
 msgid "Unknown runtime error"
@@ -4134,7 +4142,7 @@ msgstr "„[obiect]” nu este un obiect de tip dată"
 msgid "Object expected"
 msgstr "Se așteaptă un obiect"
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr "Atribuire ilegală"
 
@@ -4362,11 +4370,11 @@ msgstr "Fișierul nu a fost găsit.\n"
 msgid "Path not found.\n"
 msgstr "Calea nu a fost găsită.\n"
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr "Prea multe fișiere deschise.\n"
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr "Acces refuzat.\n"
 
@@ -5738,7 +5746,7 @@ msgstr "Operația a fost anulată de utilizator.\n"
 msgid "File has a user-mapped section.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr "Conexiune refuzată.\n"
 
@@ -7388,90 +7396,96 @@ msgstr "Această conexiune de rețea nu există.\n"
 
 #: dlls/kernelbase/winerror.mc:3750
 #, fuzzy
+#| msgid "File or directory corrupt.\n"
+msgid "File or directory is not a reparse point.\n"
+msgstr "Fișier sau dosar corupt.\n"
+
+#: dlls/kernelbase/winerror.mc:3755
+#, fuzzy
 #| msgid "Call not implemented.\n"
 msgid "Call interrupted.\n"
 msgstr "Apel neimplementat.\n"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 #, fuzzy
 #| msgid "Invalid handle.\n"
 msgid "Invalid file handle.\n"
 msgstr "Handle nevalid.\n"
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 #, fuzzy
 #| msgid "Invalid network address.\n"
 msgid "Invalid pointer address.\n"
 msgstr "Adresă de rețea nevalidă.\n"
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 #, fuzzy
 #| msgid "Invalid name.\n"
 msgid "Invalid argument.\n"
 msgstr "Nume nevalid.\n"
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 #, fuzzy
 #| msgid "Connection refused.\n"
 msgid "Connection reset by peer.\n"
 msgstr "Conexiune refuzată.\n"
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 #, fuzzy
 msgid "Host not found.\n"
 msgstr "calea %s nu a fost găsită.\n"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 #, fuzzy
 #| msgid "File not found.\n"
 msgid "Nonauthoritative host not found.\n"
 msgstr "Fișierul nu a fost găsit.\n"
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 #, fuzzy
 #| msgid "A printer error occurred."
 msgid "Nonrecoverable error.\n"
 msgstr "S-a produs o eroare la tipărire."
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 #, fuzzy
 #| msgid "Not implemented"
 msgid "Not implemented.\n"
 msgstr "Neimplementat"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 #, fuzzy
 #| msgid "Creation failed.\n"
 msgid "Call failed.\n"
 msgstr "Creare eșuată.\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 #, fuzzy
 #| msgid "Invalid pipe object.\n"
 msgid "Unable to find matching object.\n"
 msgstr "Obiect pipă nevalid.\n"
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 #, fuzzy
 #| msgid "Message 0x%1 not found in file %2.\n"
 msgid "No Signature found in file.\n"
 msgstr "Mesajul 0x%1 n-a fost găsit în fișierul %2.\n"
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 #, fuzzy
 #| msgid "Invalid level.\n"
 msgid "Invalid call.\n"
 msgstr "Nivel nevalid.\n"
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 #, fuzzy
 #| msgid "Help not available."
 msgid "Resource is not currently available.\n"
@@ -8669,7 +8683,7 @@ msgstr "Hiperlegătură"
 msgid "Hyperlink Information"
 msgstr "Informații de hiperlegătură"
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr "&Tipul:"
 
@@ -10400,7 +10414,7 @@ msgid "b"
 msgstr "b"
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr "dpi"
@@ -10938,7 +10952,7 @@ msgstr "&Deschide:"
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr "Navi&gare..."
 
@@ -11038,7 +11052,7 @@ msgstr "Locația originală"
 msgid "Date deleted"
 msgstr "Data ștergerii"
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -14010,276 +14024,351 @@ msgstr "Eroare de împărțire la zero.\n"
 msgid "Type mismatch"
 msgstr "Tip de date nepotrivit.\n"
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 #, fuzzy
 #| msgid "I/O device error.\n"
 msgid "Device I/O error"
 msgstr "Eroare de dispozitiv de intrare/ieșire.\n"
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 #, fuzzy
 #| msgid "File already exists.\n"
 msgid "File already exists"
 msgstr "Fișierul există deja.\n"
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 #, fuzzy
 #| msgid "Disk full.\n"
 msgid "Disk full"
 msgstr "Disc plin.\n"
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 #, fuzzy
 #| msgid "Too many open files.\n"
 msgid "Too many files"
 msgstr "Prea multe fișiere deschise.\n"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 #, fuzzy
 #| msgid "Access denied.\n"
 msgid "Permission denied"
 msgstr "Acces refuzat.\n"
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 #, fuzzy
 #| msgid "Path not found.\n"
 msgid "Path not found"
 msgstr "Calea nu a fost găsită.\n"
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 #, fuzzy
 #| msgid "(value not set)"
 msgid "Object variable not set"
 msgstr "(valoare nestabilită)"
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 #, fuzzy
 msgid "For loop not initialized"
 msgstr "calea %s nu a fost găsită.\n"
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 #, fuzzy
 msgid "Invalid use of Null"
 msgstr "Formatul de număr nu este valid."
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 #, fuzzy
 #| msgid "Automation server can't create object"
 msgid "ActiveX component can't create object"
 msgstr "Serverul de automatizare nu poate crea obiectul"
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Class doesn't support Automation"
 msgstr "Obiectul nu suportă această acțiune"
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Object doesn't support named arguments"
 msgstr "Obiectul nu suportă această acțiune"
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Object doesn't support current locale setting"
 msgstr "Obiectul nu suportă această acțiune"
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 #, fuzzy
 #| msgid "Element not found.\n"
 msgid "Named argument not found"
 msgstr "Element negăsit.\n"
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 #, fuzzy
 #| msgid "Specified control was not found in message"
 msgid "Specified DLL function not found"
 msgstr "Controlul specificat nu a fost găsit în mesaj"
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 #, fuzzy
 #| msgid "'|' is undefined"
 msgid "Variable is undefined"
 msgstr "„|” nu este definit"
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+#, fuzzy
+#| msgid "Class does not exist.\n"
+msgid "Class not defined"
+msgstr "Clasa nu există.\n"
+
+#: dlls/vbscript/vbscript.rc:71
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected ']'"
+msgstr "Se așteaptă „;”"
+
+#: dlls/vbscript/vbscript.rc:75
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'If'"
+msgstr "Se așteaptă „;”"
+
+#: dlls/vbscript/vbscript.rc:76
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'To'"
 msgstr "Se așteaptă „;”"
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'End'"
 msgstr "Se așteaptă „@end”"
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Function'"
+msgstr "Se așteaptă „;”"
+
+#: dlls/vbscript/vbscript.rc:79
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Sub'"
+msgstr "Se așteaptă „;”"
+
+#: dlls/vbscript/vbscript.rc:80
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'Then'"
 msgstr "Se așteaptă „@end”"
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'Wend'"
 msgstr "Se așteaptă „@end”"
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Loop'"
 msgstr "Se așteaptă „;”"
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Next'"
 msgstr "Se așteaptă „;”"
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Case'"
 msgstr "Se așteaptă „;”"
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Select'"
+msgstr "Se așteaptă „;”"
+
+#: dlls/vbscript/vbscript.rc:86
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected statement"
 msgstr "Se așteaptă „@end”"
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 #, fuzzy
 #| msgid "Expected an operand.\n"
 msgid "Expected end of statement"
 msgstr "Se așteaptă un operand.\n"
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 #, fuzzy
 #| msgid "Unterminated string constant"
 msgid "Expected integer constant"
 msgstr "Șir constant neterminat"
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'With'"
+msgstr "Se așteaptă „;”"
+
+#: dlls/vbscript/vbscript.rc:90
+#, fuzzy
+#| msgid "String too long.\n"
+msgid "Identifier too long"
+msgstr "Șir prea lung.\n"
+
+#: dlls/vbscript/vbscript.rc:92
 #, fuzzy
 #| msgid "Invalid flag number.\n"
 msgid "Invalid number"
 msgstr "Număr de fanion nevalid.\n"
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+#, fuzzy
+msgid "Invalid use of 'Me' keyword"
+msgstr "Formatul de număr nu este valid."
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 #, fuzzy
 #| msgid "Invalid printer state.\n"
 msgid "Invalid 'exit' statement"
 msgstr "Stare de imprimantă nevalidă.\n"
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 #, fuzzy
 #| msgid "Label redefined"
 msgid "Name redefined"
 msgstr "Etichetă redefinită"
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 #, fuzzy
 #| msgid "Expected an operator.\n"
 msgid "Expected literal constant"
 msgstr "Se așteaptă un operator.\n"
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'In'"
 msgstr "Se așteaptă „;”"
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Class'"
 msgstr "Se așteaptă „;”"
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Property'"
+msgstr "Se așteaptă „;”"
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Unexpected 'Next'"
 msgstr "Se așteaptă „;”"
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr ""
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr "Wine"
 
@@ -15432,7 +15521,7 @@ msgid "Digi&tal"
 msgstr "Digi&tal"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "&Font..."
@@ -16436,6 +16525,41 @@ msgstr "Fiecare caracter are %1!u! pixeli lățime și %2!u! pixeli înălțime"
 msgid "This is a test"
 msgstr "Acesta este un test"
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+#, fuzzy
+#| msgid "Error: Could not find process \"%1\".\n"
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr "Eroare: Procesul „%1” nu a putut fi găsit.\n"
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr ""
@@ -19944,7 +20068,7 @@ msgstr ""
 msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr "Actualizez configurația Wine în %s, așteptați..."
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -19956,23 +20080,23 @@ msgstr ""
 "către Free Software Foundation; fie versiunea 2.1 a Licenței, fie (la "
 "alegere) orice versiune mai recentă."
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 msgid "Windows registration information"
 msgstr "Informații de înregistrare Windows"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr "&Deținătorul:"
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr "Organi&zația:"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr "Setări pentru aplicații"
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
@@ -19983,55 +20107,55 @@ msgstr ""
 "„Setări de fereastră” și permite schimbarea setărilor globale sau pe "
 "aplicație în această subfereastră."
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 msgid "Add appli&cation..."
 msgstr "Adaugă o apli&cație..."
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr "&Șterge aplicația"
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr "Versiunea &Windows:"
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr "Setări de fereastră"
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr "Captează automat &mausul în regim de afișare pe tot ecranul"
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr "Permite administratorului de ferestre să &decoreze ferestrele"
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr "Permite administratorului de ferestre să &administreze ferestrele"
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr "&Emulează un ecran virtual"
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr "Mărime ecran:"
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr "Rezoluție ecran"
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr "Acesta este un text exemplificativ folosind Tahoma 10 puncte"
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr "Suprascrieri DLL"
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
@@ -20040,55 +20164,55 @@ msgstr ""
 "DLL-urile (Dynamic Link Libraries) pot fi setate individual ca integrate "
 "(furnizate de Wine) sau native (din Windows sau furnizate de aplicație)."
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr "Suprascriere nouă pentru librăria:"
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr "A&daugă"
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr "Suprascrieri existente:"
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 msgid "&Edit..."
 msgstr "&Editează..."
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr "Editează suprascrierea"
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr "Ordinea de încărcare"
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr "&Integrat (Wine)"
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr "&Nativ (Windows)"
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 msgid "Buil&tin then Native"
 msgstr "In&tegrat apoi Nativ"
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr "Nati&v apoi Integrat"
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr "Selecția literei de disc"
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 msgid "Drive configuration"
 msgstr "Configurare unități"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 #, fuzzy
 #| msgid ""
 #| "Failed to connect to the mount manager, the drive configuration cannot be "
@@ -20100,121 +20224,121 @@ msgstr ""
 "A eșuat conectarea la managerul de montare, configurația discurilor nu poate "
 "fi schimbată."
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 msgid "A&dd..."
 msgstr "A&daugă..."
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr "&Calea:"
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 msgid "Show Advan&ced"
 msgstr "Arată a&vansate"
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr "Dispoziti&v:"
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr "Navighează..."
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr "&Etichetă:"
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr "N&umăr de serie:"
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 #, fuzzy
 #| msgid "Show &dot files"
 msgid "&Show dot files"
 msgstr "Afișează &fișierele ascunse"
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr "Diagnostic driver"
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr "&Testează sunetul"
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr "Implicite"
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr "Dispozitiv de ieșire:"
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr "Dispozitiv de ieșire voce:"
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr "Dispozitiv de intrare:"
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr "Dispozitiv de intrare voce:"
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 #, fuzzy
 #| msgid "Output device:"
 msgid "MIDI output device:"
 msgstr "Dispozitiv de ieșire:"
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 msgid "Speaker configuration"
 msgstr "Configurare difuzor"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr "Difuzoare:"
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr "Aspect"
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr "Tematică:"
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 #, fuzzy
 #| msgid "&Theme:"
 msgid "&WinRT theme:"
 msgstr "Tematică:"
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr "Instalează o tematică..."
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr "Element:"
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr "Culoare:"
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr "Dosare"
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr "Leagă la:"
 
@@ -20295,28 +20419,34 @@ msgid "(System default)"
 msgstr "(Setare implicită)"
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+#, fuzzy
+#| msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr "5.1 surround"
 
 #: programs/winecfg/winecfg.rc:91
+msgid "5.1 Surround"
+msgstr "5.1 surround"
+
+#: programs/winecfg/winecfg.rc:92
 msgid "Quadraphonic"
 msgstr "Cuadrofonic"
 
-#: programs/winecfg/winecfg.rc:92
+#: programs/winecfg/winecfg.rc:93
 msgid "Stereo"
 msgstr "Stereo"
 
-#: programs/winecfg/winecfg.rc:93
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr "Mono"
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 #, fuzzy
 #| msgid "Right"
 msgid "Light"
 msgstr "Dreapta"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr ""
 
@@ -20441,127 +20571,127 @@ msgstr ""
 "\n"
 "Nu uitați să o adăugați în subfereastra „Mapare de discuri”!\n"
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr "Fundal controale"
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr "Text controale"
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr "Fundal meniu"
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr "Text meniu"
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr "Bare de defilare"
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr "Fundal selecție"
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr "Text selecție"
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr "Fundal baloane de ajutor"
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr "Text baloane de ajutor"
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr "Fundal fereastră"
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr "Text fereastră"
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 msgid "Active Title Bar"
 msgstr "Bară de titlu activă"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr "Text bară de titlu activă"
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr "Bară de titlu inactivă"
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr "Text bară de titlu inactivă"
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr "Text casetă de mesaje"
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr "Spațiul de lucru al aplicației"
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr "Cadru de fereastră"
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr "Margini active"
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr "Margini inactive"
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr "Umbră pentru controale"
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr "Text gri"
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr "Evidențiere controale"
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr "Umbră întunecată pentru controale"
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr "Lumină pentru controale"
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr "Fundal alternativ pentru controale"
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr "Element cu urmărire fierbinte"
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr "Gradient bară de titlu activă"
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr "Gradient bară de titlu inactivă"
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr "Evidențiere meniu"
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr "Bară de meniu"
 
diff --git a/po/ru.po b/po/ru.po
index 74dcba316a86..6c3d30ab72d7 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -86,7 +86,7 @@ msgstr "&Изменить..."
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr "&Удалить"
@@ -123,7 +123,7 @@ msgstr "Сведения о поддержке"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -232,7 +232,7 @@ msgstr "&Установить"
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -728,7 +728,7 @@ msgid "Font St&yle:"
 msgstr "&Начертание:"
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "&Размер:"
 
@@ -744,7 +744,7 @@ msgstr "&Зачёркнутый"
 msgid "&Underline"
 msgstr "Под&чёркнутый"
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "Цвет:"
 
@@ -923,7 +923,7 @@ msgstr "Число &копий:"
 msgid "C&ollate"
 msgstr "&Разбить"
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr "Размер:"
 
@@ -1001,7 +1001,7 @@ msgstr "Имя файла:"
 msgid "Files of type:"
 msgstr "Файлы типа:"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr "Файл не найден"
 
@@ -2458,7 +2458,7 @@ msgid "&File name:"
 msgstr "Имя &файла:"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr "&Обзор..."
 
@@ -3836,11 +3836,19 @@ msgstr "Indeo5"
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr "Видео кодек Wine Video 1"
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr "Джойстики"
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr "&Отключить"
 
@@ -3993,11 +4001,11 @@ msgstr "Неверный вызов процедуры или аргумент"
 msgid "Subscript out of range"
 msgstr "Индекс вне диапазона"
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 msgid "Out of stack space"
 msgstr "Превышен размер стека"
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr "Требуется объект"
 
@@ -4005,25 +4013,25 @@ msgstr "Требуется объект"
 msgid "Automation server can't create object"
 msgstr "Сервер автоматизации не может создать объект"
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr "Объект не поддерживает это свойство или метод"
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr "Объект не поддерживает это действие"
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr "Отсутствует обязательный аргумент"
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 #, fuzzy
 #| msgid "Object Class Violation"
 msgid "Object not a collection"
 msgstr "Нарушение класса объекта"
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr "Синтаксическая ошибка"
 
@@ -4031,27 +4039,27 @@ msgstr "Синтаксическая ошибка"
 msgid "Expected ';'"
 msgstr "Ожидается «;»"
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr "Ожидается «(»"
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr "Ожидается «)»"
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr "Ожидается идентификатор"
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 msgid "Expected '='"
 msgstr "Ожидается «=»"
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 msgid "Invalid character"
 msgstr "Неверный символ"
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr "Незавершённая строковая константа"
 
@@ -4095,7 +4103,7 @@ msgstr "Ошибка компиляции Microsoft JScript"
 msgid "Microsoft JScript runtime error"
 msgstr "Ошибка выполнения Microsoft JScript"
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 msgid "Unknown runtime error"
 msgstr "Неизвестная ошибка времени выполнения"
 
@@ -4121,7 +4129,7 @@ msgstr "«[object]» не объект типа «date»"
 msgid "Object expected"
 msgstr "Ожидается объект"
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr "Неверное присваивание"
 
@@ -4347,11 +4355,11 @@ msgstr "Файл не найден.\n"
 msgid "Path not found.\n"
 msgstr "Путь не найден.\n"
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr "Слишком много открытых файлов.\n"
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr "Доступ запрещён.\n"
 
@@ -5703,7 +5711,7 @@ msgstr "Операция прервана пользователем.\n"
 msgid "File has a user-mapped section.\n"
 msgstr "В файле есть блок, отображённый приложению пользователя.\n"
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr "Соединение отвергнуто.\n"
 
@@ -7289,74 +7297,80 @@ msgid "This network connection does not exist.\n"
 msgstr "Указанное сетевое соединение не существует.\n"
 
 #: dlls/kernelbase/winerror.mc:3750
+#, fuzzy
+#| msgid "File or directory corrupt.\n"
+msgid "File or directory is not a reparse point.\n"
+msgstr "Файл или каталог повреждён.\n"
+
+#: dlls/kernelbase/winerror.mc:3755
 msgid "Call interrupted.\n"
 msgstr "Вызов прерван.\n"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 msgid "Invalid file handle.\n"
 msgstr "Неверный файловый дескриптор.\n"
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 msgid "Invalid pointer address.\n"
 msgstr "Неверный адрес указателя.\n"
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 msgid "Invalid argument.\n"
 msgstr "Неверный аргумент.\n"
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr "Не удалось задать указанный адрес.\n"
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 msgid "Connection reset by peer.\n"
 msgstr "Соединение закрыто удалённым узлом.\n"
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 #, fuzzy
 #| msgid "Point not found.\n"
 msgid "Host not found.\n"
 msgstr "Точка не найдена.\n"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 #, fuzzy
 #| msgid "Attribute is not found.\n"
 msgid "Nonauthoritative host not found.\n"
 msgstr "Атрибут не найден.\n"
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 #, fuzzy
 #| msgid "Unrecoverable error occurred.\n"
 msgid "Nonrecoverable error.\n"
 msgstr "Произошла критическая ошибка.\n"
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 msgid "Not implemented.\n"
 msgstr "Не реализовано.\n"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 msgid "Call failed.\n"
 msgstr "Сбой вызова.\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 #, fuzzy
 #| msgid "Unable to unload media.\n"
 msgid "Unable to find matching object.\n"
 msgstr "Невозможно разблокировать носитель.\n"
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 msgid "No Signature found in file.\n"
 msgstr "Подпись файла не обнаружена.\n"
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 msgid "Invalid call.\n"
 msgstr "Неверный вызов.\n"
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 msgid "Resource is not currently available.\n"
 msgstr "В данный момент ресурс недоступен.\n"
 
@@ -8343,7 +8357,7 @@ msgstr "Ссылка"
 msgid "Hyperlink Information"
 msgstr "Информация о ссылке"
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr "&Тип:"
 
@@ -9996,7 +10010,7 @@ msgid "b"
 msgstr "бит"
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr "т/дюйм"
@@ -10534,7 +10548,7 @@ msgstr "&Открыть:"
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr "&Обзор..."
 
@@ -10620,7 +10634,7 @@ msgstr "Исходное местонахождение"
 msgid "Date deleted"
 msgstr "Время удаления"
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -13290,250 +13304,326 @@ msgstr "Ошибка деления на ноль.\n"
 msgid "Type mismatch"
 msgstr "Несовпадение типов"
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 msgid "Device I/O error"
 msgstr "Ошибка ввода/вывода на устройстве"
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 msgid "File already exists"
 msgstr "Файл уже существует"
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 msgid "Disk full"
 msgstr "Диск заполнен"
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 msgid "Too many files"
 msgstr "Слишком много файлов"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 msgid "Permission denied"
 msgstr "Доступ запрещён"
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 msgid "Path not found"
 msgstr "Путь не найден"
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 msgid "Object variable not set"
 msgstr "Значение переменной (значение не задано)"
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 #, fuzzy
 #| msgid "Object is not initialized.\n"
 msgid "For loop not initialized"
 msgstr "Объект не инициализирован.\n"
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 msgid "Invalid use of Null"
 msgstr "Некорректное использование Null"
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr "Не удалось создать временный файл"
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 msgid "ActiveX component can't create object"
 msgstr "Компонент ActiveX не смог создать объект"
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 msgid "Class doesn't support Automation"
 msgstr "Класс не поддерживает автоматизацию"
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 msgid "Object doesn't support named arguments"
 msgstr "Объект не поддерживает именованные аргументы"
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 msgid "Object doesn't support current locale setting"
 msgstr "Объект не поддерживает выбор локали"
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 msgid "Named argument not found"
 msgstr "Именованный аргумент не найден"
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 msgid "Specified DLL function not found"
 msgstr "Указанная функция не найдена в библиотеке"
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 #, fuzzy
 #| msgid "'|' is undefined"
 msgid "Variable is undefined"
 msgstr "«|» не определён"
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr "Некорректная или неполная ссылка"
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+#, fuzzy
+#| msgid "Class does not exist.\n"
+msgid "Class not defined"
+msgstr "Класс не существует.\n"
+
+#: dlls/vbscript/vbscript.rc:71
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected ']'"
+msgstr "Ожидается «;»"
+
+#: dlls/vbscript/vbscript.rc:75
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'If'"
+msgstr "Ожидается «;»"
+
+#: dlls/vbscript/vbscript.rc:76
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'To'"
 msgstr "Ожидается «;»"
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'End'"
 msgstr "Ожидается «@end»"
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Function'"
+msgstr "Ожидается «;»"
+
+#: dlls/vbscript/vbscript.rc:79
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Sub'"
+msgstr "Ожидается «;»"
+
+#: dlls/vbscript/vbscript.rc:80
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'Then'"
 msgstr "Ожидается «@end»"
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'Wend'"
 msgstr "Ожидается «@end»"
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Loop'"
 msgstr "Ожидается «;»"
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Next'"
 msgstr "Ожидается «;»"
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Case'"
 msgstr "Ожидается «;»"
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Select'"
+msgstr "Ожидается «;»"
+
+#: dlls/vbscript/vbscript.rc:86
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected statement"
 msgstr "Ожидается «@end»"
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 #, fuzzy
 #| msgid "Expected an operand.\n"
 msgid "Expected end of statement"
 msgstr "Ожидается операнд.\n"
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 #, fuzzy
 #| msgid "Unterminated string constant"
 msgid "Expected integer constant"
 msgstr "Незавершённая строковая константа"
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'With'"
+msgstr "Ожидается «;»"
+
+#: dlls/vbscript/vbscript.rc:90
+#, fuzzy
+#| msgid "Secret too long.\n"
+msgid "Identifier too long"
+msgstr "Слишком длинные секретные данные.\n"
+
+#: dlls/vbscript/vbscript.rc:92
 #, fuzzy
 #| msgid "Invalid flag number.\n"
 msgid "Invalid number"
 msgstr "Неверный номер флага.\n"
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+#, fuzzy
+#| msgid "Invalid use of Null"
+msgid "Invalid use of 'Me' keyword"
+msgstr "Некорректное использование Null"
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 #, fuzzy
 #| msgid "Invalid printer state.\n"
 msgid "Invalid 'exit' statement"
 msgstr "Неверное состояние принтера.\n"
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 #, fuzzy
 #| msgid "Label redefined"
 msgid "Name redefined"
 msgstr "Метка переопределена"
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 #, fuzzy
 #| msgid "Expected an operator.\n"
 msgid "Expected literal constant"
 msgstr "Ожидается оператор.\n"
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'In'"
 msgstr "Ожидается «;»"
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Class'"
 msgstr "Ожидается «;»"
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Property'"
+msgstr "Ожидается «;»"
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Unexpected 'Next'"
 msgstr "Ожидается «;»"
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr "Ошибка компиляции Microsoft VBScript"
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr "Ошибка выполнения Microsoft VBScript"
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr "Wine"
 
@@ -14650,7 +14740,7 @@ msgid "Digi&tal"
 msgstr "&Цифровые"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "&Шрифт..."
@@ -15671,6 +15761,41 @@ msgstr "Каждый символ %1!u! пикселей в ширину и %2!u
 msgid "This is a test"
 msgstr "Это тест"
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+#, fuzzy
+#| msgid "Error: Could not find process \"%1\".\n"
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr "Ошибка: не удалось найти Процесс «%1».\n"
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr "Утилита диагностики DirectX"
@@ -19194,7 +19319,7 @@ msgstr ""
 msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr "Выполняется обновление конфигурации Wine %s. Пожалуйста, подождите..."
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -19206,23 +19331,23 @@ msgstr ""
 "General Public License версии 2.1 или более поздней по вашему выбору. "
 "Лицензия опубликована Free Software Foundation."
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 msgid "Windows registration information"
 msgstr "Регистрационная информация Windows"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr "Имя:"
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr "Организация:"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr "Настройка приложений"
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
@@ -19233,55 +19358,55 @@ msgstr ""
 "позволяет изменять настройки в этих вкладках как для определённого "
 "приложения, так и глобально."
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 msgid "Add appli&cation..."
 msgstr "&Добавить приложение..."
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr "&Удалить приложение"
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr "&Версия Windows:"
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr "Настройки окон"
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr "Автоматически &удерживать мышь в полноэкранных окнах"
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr "Разрешить менеджеру окон &декорировать окна"
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr "Разрешить менеджеру окон управлять &окнами Wine"
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr "&Эмулировать виртуальный рабочий стол"
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr "&Рабочий стол:"
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr "Разрешение экрана"
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr "Пример текста, шрифт Tahoma 10 пунктов"
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr "Замещения DLL"
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
@@ -19290,55 +19415,55 @@ msgstr ""
 "Здесь указывается, какую динамически подключаемую библиотеку (DLL) "
 "использовать: встроенную в Wine или стороннюю (из Windows)."
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr "Новое замещение для библиотеки:"
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr "&Добавить"
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr "Существующие замещения:"
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 msgid "&Edit..."
 msgstr "&Изменить..."
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr "Изменить замещение"
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr "Порядок загрузки"
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr "&Встроенная (Wine)"
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr "&Сторонняя (Windows)"
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 msgid "Buil&tin then Native"
 msgstr "Вс&троенная, затем сторонняя"
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr "Сто&ронняя, затем встроенная"
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr "Выберите букву диска"
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 msgid "Drive configuration"
 msgstr "Настройка дисков"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 msgid ""
 "Failed to connect to the mount manager; the drive configuration cannot be "
 "edited."
@@ -19346,121 +19471,121 @@ msgstr ""
 "Не удалось подключиться к mount manager, редактирование конфигурации дисков "
 "недоступно."
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 msgid "A&dd..."
 msgstr "&Добавить..."
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr "&Путь:"
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 msgid "Show Advan&ced"
 msgstr "До&полнительно"
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr "У&стройство:"
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr "Об&зор..."
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr "&Метка:"
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr "Сер. &номер:"
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 msgid "&Show dot files"
 msgstr "Показывать файлы, начинающиеся с &точки"
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr "Диагностика драйвера"
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr "&Проверить звук"
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr "По умолчанию"
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr "Устройство вывода:"
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr "Уст-во речевого вывода:"
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr "Устройство ввода:"
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr "Уст-во речевого ввода:"
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 #, fuzzy
 #| msgid "Output device:"
 msgid "MIDI output device:"
 msgstr "Устройство вывода:"
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 msgid "Speaker configuration"
 msgstr "Конфигурация каналов"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr "Каналы:"
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr "Внешний вид"
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr "&Тема:"
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 #, fuzzy
 #| msgid "&Theme:"
 msgid "&WinRT theme:"
 msgstr "&Тема:"
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr "Установить тему..."
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr "Элемент:"
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr "Цвет:"
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr "Типы MIME"
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 #, fuzzy
 #| msgid "Manage file &associations"
 msgid "Manage file and protocol &associations"
 msgstr "Управлять &ассоциациями файлов"
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr "Папки"
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr "Привязать к:"
 
@@ -19541,26 +19666,32 @@ msgid "(System default)"
 msgstr "(по умолчанию)"
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+#, fuzzy
+#| msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr "Объёмное звучание 5.1"
 
 #: programs/winecfg/winecfg.rc:91
+msgid "5.1 Surround"
+msgstr "Объёмное звучание 5.1"
+
+#: programs/winecfg/winecfg.rc:92
 msgid "Quadraphonic"
 msgstr "Квадрофония"
 
-#: programs/winecfg/winecfg.rc:92
+#: programs/winecfg/winecfg.rc:93
 msgid "Stereo"
 msgstr "Стерео"
 
-#: programs/winecfg/winecfg.rc:93
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr "Моно"
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 msgid "Light"
 msgstr "Светлая"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr "Темная"
 
@@ -19678,127 +19809,127 @@ msgstr ""
 "\n"
 "Не забудьте его создать!\n"
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr "Элементы управления - фон"
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr "Элементы управления - текст"
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr "Меню - фон"
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr "Меню - текст"
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr "Полоса прокрутки"
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr "Выделение - фон"
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr "Выделение - текст"
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr "Подсказка - фон"
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr "Подсказка - текст"
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr "Содержимое окна - фон"
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr "Содержимое окна - текст"
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 msgid "Active Title Bar"
 msgstr "Активное окно"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr "Активное окно - текст"
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr "Пассивное окно"
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr "Пассивное окно - текст"
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr "Окно сообщения - текст"
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr "Содержимое окна MDI - фон"
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr "Окно - рамка"
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr "Активное окно - рамка"
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr "Пассивное окно - рамка"
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr "Элементы управления - тень"
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr "Недоступный элемент"
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr "Элементы управления - светлая рамка"
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr "Элементы управления - тёмная тень"
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr "Элементы управления - свет"
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr "Элементы управления - фон 2"
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr "Ссылка, Подсветка"
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr "Градиент активного окна"
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr "Градиент пассивного окна"
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr "Плоское меню - подсветка"
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr "Плоское меню - фон"
 
diff --git a/po/si.po b/po/si.po
index 674902fab2c7..49fb965d21f0 100644
--- a/po/si.po
+++ b/po/si.po
@@ -89,7 +89,7 @@ msgstr "වෙනස් කරන්න... (&M)"
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr "ඉවත් කරන්න (&R)"
@@ -126,7 +126,7 @@ msgstr "තොරතුරු සඳහා සහාය"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -231,7 +231,7 @@ msgstr "ස්ථාපනය කරන්න (&I)"
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -726,7 +726,7 @@ msgid "Font St&yle:"
 msgstr "ෆොන්ට විලාසය (&Y):"
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "තරම (&S):"
 
@@ -742,7 +742,7 @@ msgstr "මැදි ඉරැති (&K)"
 msgid "&Underline"
 msgstr "යටිඉරි (&U)"
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "පාට (&C)"
 
@@ -921,7 +921,7 @@ msgstr "පිටපත් ගණන (&C):"
 msgid "C&ollate"
 msgstr "සංසන්දනය කරන්න (&O)"
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr "තරම (&Z):"
 
@@ -999,7 +999,7 @@ msgstr "ගොනුව නම:"
 msgid "Files of type:"
 msgstr "වර්ගයේ ගොනු:"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr "ගොනුව හම්බු උනේ නැහැ"
 
@@ -2454,7 +2454,7 @@ msgid "&File name:"
 msgstr "ගොනුව නම (&F):"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr "පිරික්සන්න... (&R)"
 
@@ -3775,11 +3775,19 @@ msgstr "දර්ශකය"
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr "Wine වීඩියෝ 1 වීඩියෝ කොඩෙක්"
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr "නියාමක යටි"
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr "ඕෆ් කරන්න (&D)"
 
@@ -3933,13 +3941,13 @@ msgstr "අවලංගු පටිපාටිය කෝල් එකක් 
 msgid "Subscript out of range"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 #, fuzzy
 #| msgid "Out of paper; "
 msgid "Out of stack space"
 msgstr "කඩදාසි ඉවරයි; "
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr "වස්තුවක් ඕනේ"
 
@@ -3947,23 +3955,23 @@ msgstr "වස්තුවක් ඕනේ"
 msgid "Automation server can't create object"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 msgid "Object not a collection"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr "වාග් රීතියේ දෝෂයක්"
 
@@ -3971,27 +3979,27 @@ msgstr "වාග් රීතියේ දෝෂයක්"
 msgid "Expected ';'"
 msgstr "අපේක්ෂා කරේ ';'"
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr "අපේක්ෂා කරේ '('"
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr "අපේක්ෂා කරේ ')'"
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr "අපේක්ෂා කරේ අනන්යකාරකයක්"
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 msgid "Expected '='"
 msgstr "අපේක්ෂා කරේ '='"
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 msgid "Invalid character"
 msgstr "අවලංගු අනුලකුණක්"
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr ""
 
@@ -4036,7 +4044,7 @@ msgstr ""
 msgid "Microsoft JScript runtime error"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 #, fuzzy
 #| msgid "Unknown error"
 msgid "Unknown runtime error"
@@ -4064,7 +4072,7 @@ msgstr ""
 msgid "Object expected"
 msgstr "වස්තුවක් අපේක්ෂා කරේ"
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr ""
 
@@ -4294,11 +4302,11 @@ msgstr "ගොනුව හම්බු උනේ නැහැ.\n"
 msgid "Path not found.\n"
 msgstr "පෙත හම්බු උනේ නැහැ.\n"
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr "විවෘත කරපු ගොනු වැඩි.\n"
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr "ප්‍රවේශය අත්හිටුවා ඇත.\n"
 
@@ -5657,7 +5665,7 @@ msgstr "පරිශිලකයා මෙහෙයුම අවලංගු ක
 msgid "File has a user-mapped section.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr "සබැඳුම ප්‍රතික්ෂේප කරා.\n"
 
@@ -7245,86 +7253,92 @@ msgstr ""
 
 #: dlls/kernelbase/winerror.mc:3750
 #, fuzzy
+#| msgid "File or directory corrupt.\n"
+msgid "File or directory is not a reparse point.\n"
+msgstr "ගොනුව හෝ ඩිරෙක්ටරිය සදොස් වෙලා.\n"
+
+#: dlls/kernelbase/winerror.mc:3755
+#, fuzzy
 msgid "Call interrupted.\n"
 msgstr "අවලංගු"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 #, fuzzy
 #| msgid "Invalid handle.\n"
 msgid "Invalid file handle.\n"
 msgstr "අවලංගු හසුරුවක්.\n"
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 #, fuzzy
 #| msgid "Invalid network address.\n"
 msgid "Invalid pointer address.\n"
 msgstr "අවලංගු ජාල ලිපිනය.\n"
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 #, fuzzy
 #| msgid "Invalid name.\n"
 msgid "Invalid argument.\n"
 msgstr "අවලංගු නමක්.\n"
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 msgid "Connection reset by peer.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 #, fuzzy
 #| msgid "Point not found.\n"
 msgid "Host not found.\n"
 msgstr "පොයින්ටය හම්බු උනේ නැහැ.\n"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 #, fuzzy
 #| msgid "Attribute is not found.\n"
 msgid "Nonauthoritative host not found.\n"
 msgstr "උපලක්ෂණය හම්බු උනේ නැහැ.\n"
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 #, fuzzy
 #| msgid "Unrecoverable error occurred.\n"
 msgid "Nonrecoverable error.\n"
 msgstr "ප්‍රතිසාධනය කළ නොහැකි දෝෂයක් සිදු විය.\n"
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 #, fuzzy
 #| msgid "Not implemented"
 msgid "Not implemented.\n"
 msgstr "හදල නැහැ"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 #, fuzzy
 #| msgid "RPC call failed.\n"
 msgid "Call failed.\n"
 msgstr "RPC කෝල් එක බැරි උනා.\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 #, fuzzy
 #| msgid "Invalid pipe object.\n"
 msgid "Unable to find matching object.\n"
 msgstr "අවලංගු බටය වස්තුව.\n"
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 msgid "No Signature found in file.\n"
 msgstr "ගොනුවේ අත්සනයක් නැහැ.\n"
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 #, fuzzy
 #| msgid "Invalid level.\n"
 msgid "Invalid call.\n"
 msgstr "අවලංගු මට්ටමක්.\n"
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 #, fuzzy
 #| msgid "Value is not available.\n"
 msgid "Resource is not currently available.\n"
@@ -8395,7 +8409,7 @@ msgstr "අධිබැඳිය"
 msgid "Hyperlink Information"
 msgstr "අධිබැඳියේ තොරතුරු"
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr "වර්ගය (&T):"
 
@@ -10067,7 +10081,7 @@ msgid "b"
 msgstr "b"
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr "dpi"
@@ -10601,7 +10615,7 @@ msgstr "විවෘත කරන්න (&O):"
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr "පිරික්සන්න... (&B)"
 
@@ -10687,7 +10701,7 @@ msgstr "මුල් පිහිටුම"
 msgid "Date deleted"
 msgstr "මකපු දිනය"
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -13316,265 +13330,341 @@ msgstr "බිංදුවෙන් බෙදීම දෝෂයක්.\n"
 msgid "Type mismatch"
 msgstr "දත්ත වර්ගය ගැලපෙන්නේ නැහැ.\n"
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 #, fuzzy
 #| msgid "I/O device error.\n"
 msgid "Device I/O error"
 msgstr "I/O ආම්පන්නයේ දෝෂයක්.\n"
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 #, fuzzy
 #| msgid "File already exists.\n"
 msgid "File already exists"
 msgstr "ගොනුව දැනටමත් පවතිනවා.\n"
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 #, fuzzy
 #| msgid "Disk full.\n"
 msgid "Disk full"
 msgstr "ඩිස්කය පිරිලා.\n"
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 #, fuzzy
 #| msgid "Too many open files.\n"
 msgid "Too many files"
 msgstr "විවෘත කරපු ගොනු වැඩි.\n"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 #, fuzzy
 #| msgid "Access denied.\n"
 msgid "Permission denied"
 msgstr "ප්‍රවේශය අත්හිටුවා ඇත.\n"
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 #, fuzzy
 #| msgid "Path not found.\n"
 msgid "Path not found"
 msgstr "පෙත හම්බු උනේ නැහැ.\n"
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 msgid "Object variable not set"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 #, fuzzy
 #| msgid "Object is not initialized.\n"
 msgid "For loop not initialized"
 msgstr "වස්තුව ආරම්භනය කරල නැහැ.\n"
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 #, fuzzy
 #| msgid "Invalid user buffer.\n"
 msgid "Invalid use of Null"
 msgstr "අවලංගු පරිශීලක බෆරය.\n"
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 msgid "ActiveX component can't create object"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 msgid "Class doesn't support Automation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 msgid "Object doesn't support named arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 msgid "Object doesn't support current locale setting"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 #, fuzzy
 #| msgid "Element not found.\n"
 msgid "Named argument not found"
 msgstr "මූලාංගය හම්බු උනේ නැහැ.\n"
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 msgid "Specified DLL function not found"
 msgstr ""
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 #, fuzzy
 #| msgid "'|' is undefined"
 msgid "Variable is undefined"
 msgstr "'|' නිර්ණය නොකළ"
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+#, fuzzy
+#| msgid "Class does not exist.\n"
+msgid "Class not defined"
+msgstr "පන්තිය තියෙන්නෙ නැහැ.\n"
+
+#: dlls/vbscript/vbscript.rc:71
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected ']'"
+msgstr "අපේක්ෂා කරේ ';'"
+
+#: dlls/vbscript/vbscript.rc:75
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'If'"
+msgstr "අපේක්ෂා කරේ ';'"
+
+#: dlls/vbscript/vbscript.rc:76
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'To'"
 msgstr "අපේක්ෂා කරේ ';'"
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'End'"
 msgstr "අපේක්ෂා කරේ '@end'"
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Function'"
+msgstr "අපේක්ෂා කරේ ';'"
+
+#: dlls/vbscript/vbscript.rc:79
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Sub'"
+msgstr "අපේක්ෂා කරේ ';'"
+
+#: dlls/vbscript/vbscript.rc:80
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'Then'"
 msgstr "අපේක්ෂා කරේ '@end'"
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'Wend'"
 msgstr "අපේක්ෂා කරේ '@end'"
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Loop'"
 msgstr "අපේක්ෂා කරේ ';'"
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Next'"
 msgstr "අපේක්ෂා කරේ ';'"
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Case'"
 msgstr "අපේක්ෂා කරේ ';'"
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Select'"
+msgstr "අපේක්ෂා කරේ ';'"
+
+#: dlls/vbscript/vbscript.rc:86
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected statement"
 msgstr "අපේක්ෂා කරේ '@end'"
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 #, fuzzy
 #| msgid "Expected an operand.\n"
 msgid "Expected end of statement"
 msgstr "අපේක්ෂා කරේ කර්තව්‍යයක්.\n"
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 #, fuzzy
 #| msgid "Expected identifier"
 msgid "Expected integer constant"
 msgstr "අපේක්ෂා කරේ අනන්යකාරකයක්"
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'With'"
+msgstr "අපේක්ෂා කරේ ';'"
+
+#: dlls/vbscript/vbscript.rc:90
+#, fuzzy
+#| msgid "String too long.\n"
+msgid "Identifier too long"
+msgstr "අනුලකුණු වැලේ දිග වැඩි.\n"
+
+#: dlls/vbscript/vbscript.rc:92
 #, fuzzy
 #| msgid "Invalid flag number.\n"
 msgid "Invalid number"
 msgstr "අවලංගු සලකුණ නොම්බරය.\n"
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+#, fuzzy
+#| msgid "Invalid user buffer.\n"
+msgid "Invalid use of 'Me' keyword"
+msgstr "අවලංගු පරිශීලක බෆරය.\n"
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 #, fuzzy
 #| msgid "Invalid printer state.\n"
 msgid "Invalid 'exit' statement"
 msgstr "අවලංගු මුද්‍රකය තත්වය.\n"
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 #, fuzzy
 msgid "Name redefined"
 msgstr "ලේබලය"
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 #, fuzzy
 #| msgid "Expected an operator.\n"
 msgid "Expected literal constant"
 msgstr "අපේක්ෂා කරේ මෙහෙයුම්කාරකයක්.\n"
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'In'"
 msgstr "අපේක්ෂා කරේ ';'"
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Class'"
 msgstr "අපේක්ෂා කරේ ';'"
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Property'"
+msgstr "අපේක්ෂා කරේ ';'"
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Unexpected 'Next'"
 msgstr "අපේක්ෂා කරේ ';'"
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr ""
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr "Wine"
 
@@ -14588,7 +14678,7 @@ msgid "Digi&tal"
 msgstr "ඩිජිටල් (&T)"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "ෆොන්ටය... (&F)"
@@ -15479,6 +15569,41 @@ msgstr ""
 msgid "This is a test"
 msgstr "මේ පරික්‍ෂණයක්"
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+#, fuzzy
+#| msgid "Error: Could not find process \"%1\".\n"
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr "දෝෂය: \"%1\" ක්රියාවලිය සොයා ගන්න බැරි උන.\n"
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr "DirectX දෝෂ විමර්ශන මෙවලම"
@@ -18958,7 +19083,7 @@ msgstr ""
 msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr "Wine වින්‍යාසය %s ඇතුලේ යාවත්කාලීන වේ, කරුණාකරලා බලාගෙන ඉන්න..."
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -18970,251 +19095,251 @@ msgstr ""
 "Free Software Foundation; either version 2.1 of the License, or (at your "
 "option) any later version."
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 msgid "Windows registration information"
 msgstr "Windows ලියාපදිංචිය තොරතුරු"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr "හිමිකරු (&O):"
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr "සංවිධානය (&Z):"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr "යෙදුම් සැකසීම්"
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
 "or per-application settings in those tabs as well."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 msgid "Add appli&cation..."
 msgstr "යෙදුම එක් කරන්න... (&C)"
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr "යෙදුම ඉවත් කරන්න (&R)"
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr "Windows අනුවාදය (&W):"
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr "කවුළු සැකසුම්"
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr "අතථ්‍ය වැඩතලයක් අනුකරණය කරන්න (&E)"
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr "තිරයේ විභේදනය"
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
 "application)."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr "එක් කරන්න (&D)"
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 msgid "&Edit..."
 msgstr "වෙනස් කරන්න... (&E)"
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr "Override එක වෙනස් කරන්න"
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr "&Builtin (Wine)"
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr "&Native (Windows)"
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 msgid "Buil&tin then Native"
 msgstr "Buil&tin then Native"
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr "Nati&ve then Builtin"
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr "ධාවකය අකුර තෝරන්න"
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 msgid "Drive configuration"
 msgstr "ධාවක වින්‍යාසය"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 msgid ""
 "Failed to connect to the mount manager; the drive configuration cannot be "
 "edited."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 msgid "A&dd..."
 msgstr "එක් කරන්න (&D)"
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr "පෙත:"
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 msgid "Show Advan&ced"
 msgstr "'උසස්' පෙන්නන්න (&C)"
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr "ආම්පන්නය (&V):"
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr "පිරික්සන්න... (&W)"
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr "ලේබලය (&L):"
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr "අනුක්‍රම (&E):"
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 msgid "&Show dot files"
 msgstr "dot ගොනු පෙන්නන්න (&S)"
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr "ධාවක දෝෂ නිර්ණය"
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr "ශ්‍රව්‍ය පරික්‍ෂණ කරන්න (&T)"
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr "පෙරනිමි"
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr "ප්‍රතිදාන ආම්පන්නය:"
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr "හඬ ප්‍රතිදාන ආම්පන්නය:"
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr "ආදාන ආම්පන්නය:"
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr "හඬ ආදාන ආම්පන්නය:"
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 #, fuzzy
 #| msgid "Output device:"
 msgid "MIDI output device:"
 msgstr "ප්‍රතිදාන ආම්පන්නය:"
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 msgid "Speaker configuration"
 msgstr "ස්පීකර වින්‍යාසය"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr "ස්පීකර"
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr "පෙනුම"
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr "තේමාව (&T):"
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 #, fuzzy
 #| msgid "&Theme:"
 msgid "&WinRT theme:"
 msgstr "තේමාව (&T):"
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr "තේමාව ස්ථාපනය කරන්න... (&I)"
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr "අයිතමය (&E):"
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr "පාට (&O):"
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr "MIME වර්ග"
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr "ෆෝල්ඩර"
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr ""
 
@@ -19295,28 +19420,34 @@ msgid "(System default)"
 msgstr "(පද්ධතියේ පෙරනිමිය)"
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+#, fuzzy
+#| msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr "5.1 වටාපිටාව"
 
 #: programs/winecfg/winecfg.rc:91
+msgid "5.1 Surround"
+msgstr "5.1 වටාපිටාව"
+
+#: programs/winecfg/winecfg.rc:92
 msgid "Quadraphonic"
 msgstr "ක්වොඩ්රොෆොනික"
 
-#: programs/winecfg/winecfg.rc:92
+#: programs/winecfg/winecfg.rc:93
 msgid "Stereo"
 msgstr "ස්ටීරියෝ"
 
-#: programs/winecfg/winecfg.rc:93
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr "ඒකල"
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 #, fuzzy
 #| msgid "Right"
 msgid "Light"
 msgstr "දකුණ"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr ""
 
@@ -19424,127 +19555,127 @@ msgstr ""
 "\n"
 "මතක් කරලා 'එක් කරන්න' ඔබන්න 'ධාවක' ටැබ් එක ඇතුලේ එකක් හදන්නට!\n"
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr "පාලක පසුබිම"
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr "පාලක පෙළ"
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr "මෙනුවේ පසුබිම"
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr "මෙනුවේ පෙළ"
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr "අනුචලන තීරුව"
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr "තේරීම පසුබිම"
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr "තේරීම පෙළ"
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr "මෙවලම් ඉඟියේ පසුබිම"
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr "මෙවලම් ඉඟියේ පෙළ"
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr "කවුළුවේ පසුබිම"
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr "කවුළුවේ පෙළ"
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 msgid "Active Title Bar"
 msgstr "සක්රිය නාම තීරුව"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr "සක්රිය නාම පෙළ"
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr "අක්රිය නාම තීරුව"
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr "අක්රිය නාම පෙළ"
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr "පණිවිඩ කොටුවේ පෙළ"
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr "යෙදුමේ වැඩබිම"
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr "කවුළුව රාමුව"
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr "සක්රිය දාරය"
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr "අක්රිය දාරය"
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr "පාලක හෙවනැල්ල"
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr "අළු පෙළ"
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr "පාලක උද්දීපනය"
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr "පාලක තද හෙවනැල්ල"
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr "පාලක ලා"
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr "පාලක වෙන පසුබිම"
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr "සක්රිය නාම තීරුවේ අනුක්රමණය"
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr "අක්රිය නාම තීරුවේ අනුක්රමණය"
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr "මෙනු උද්දීපනය"
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr "මෙනු තීරුව"
 
diff --git a/po/sk.po b/po/sk.po
index 878050d0994d..f81916e3cf50 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -92,7 +92,7 @@ msgstr "&Zmeniť..."
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr "&Odstrániť"
@@ -129,7 +129,7 @@ msgstr "Informácie o podpore"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -237,7 +237,7 @@ msgstr "&Inštalovať"
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -750,7 +750,7 @@ msgid "Font St&yle:"
 msgstr "Š&týl písma:"
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "&Veľkosť:"
 
@@ -766,7 +766,7 @@ msgstr "P&rečiarknuté"
 msgid "&Underline"
 msgstr "&Podčiarknuté"
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "&Farba:"
 
@@ -945,7 +945,7 @@ msgstr "Počet &kópií:"
 msgid "C&ollate"
 msgstr "Z&oradiť"
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr "&Veľkosť:"
 
@@ -1023,7 +1023,7 @@ msgstr "Súbor:"
 msgid "Files of type:"
 msgstr "Súbory typu:"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr "Súbor nenájdený"
 
@@ -2477,7 +2477,7 @@ msgid "&File name:"
 msgstr "&Súbor:"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr "P&rechádzaj..."
 
@@ -3813,11 +3813,19 @@ msgstr "Obsah"
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr ""
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr ""
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr "&Zakázať"
 
@@ -3966,13 +3974,13 @@ msgstr ""
 msgid "Subscript out of range"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 #, fuzzy
 #| msgid "Out of paper; "
 msgid "Out of stack space"
 msgstr "Chýba papier; "
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr ""
 
@@ -3980,23 +3988,23 @@ msgstr ""
 msgid "Automation server can't create object"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 msgid "Object not a collection"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr ""
 
@@ -4004,29 +4012,29 @@ msgstr ""
 msgid "Expected ';'"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 msgid "Expected '='"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 #, fuzzy
 #| msgid "Invalid parameter.\n"
 msgid "Invalid character"
 msgstr "Nesprávny parameter.\n"
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr ""
 
@@ -4070,7 +4078,7 @@ msgstr ""
 msgid "Microsoft JScript runtime error"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 #, fuzzy
 #| msgid "Unknown error"
 msgid "Unknown runtime error"
@@ -4096,7 +4104,7 @@ msgstr ""
 msgid "Object expected"
 msgstr "Očakávaný objekt"
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr ""
 
@@ -4314,11 +4322,11 @@ msgstr "Súbor nenájdený.\n"
 msgid "Path not found.\n"
 msgstr "Cesta nenájdená.\n"
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr "Prílš veľa otvorení súborov.\n"
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr "Prístup zamietnutý.\n"
 
@@ -5690,7 +5698,7 @@ msgstr "Operácia prerušená užívateľom.\n"
 msgid "File has a user-mapped section.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr ""
 
@@ -7306,86 +7314,90 @@ msgid "This network connection does not exist.\n"
 msgstr "Súbor neexistuje.\n"
 
 #: dlls/kernelbase/winerror.mc:3750
+msgid "File or directory is not a reparse point.\n"
+msgstr ""
+
+#: dlls/kernelbase/winerror.mc:3755
 #, fuzzy
 #| msgid "Call not implemented.\n"
 msgid "Call interrupted.\n"
 msgstr "Volanie neimplementované.\n"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 #, fuzzy
 #| msgid "Invalid data.\n"
 msgid "Invalid file handle.\n"
 msgstr "Nesprávne údaje.\n"
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 #, fuzzy
 #| msgid "Invalid network address.\n"
 msgid "Invalid pointer address.\n"
 msgstr "Nesprávna sieťová adresa.\n"
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 #, fuzzy
 #| msgid "Invalid name.\n"
 msgid "Invalid argument.\n"
 msgstr "Nesprávny názov.\n"
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 #, fuzzy
 #| msgid "Connection is active.\n"
 msgid "Connection reset by peer.\n"
 msgstr "Pripojenie je aktícne.\n"
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 #, fuzzy
 msgid "Host not found.\n"
 msgstr "Súbor nenájdený.\n"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 #, fuzzy
 #| msgid "File not found.\n"
 msgid "Nonauthoritative host not found.\n"
 msgstr "Súbor nenájdený.\n"
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 #, fuzzy
 #| msgid "A printer error occurred."
 msgid "Nonrecoverable error.\n"
 msgstr "Chyba tlačiarne."
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 #, fuzzy
 #| msgid "Not implemented"
 msgid "Not implemented.\n"
 msgstr "Neimplementované"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 #, fuzzy
 msgid "Call failed.\n"
 msgstr "Otvoriť súbor.\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 msgid "Unable to find matching object.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 msgid "No Signature found in file.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 #, fuzzy
 #| msgid "Invalid data.\n"
 msgid "Invalid call.\n"
 msgstr "Nesprávne údaje.\n"
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 #, fuzzy
 #| msgid "Help not available."
 msgid "Resource is not currently available.\n"
@@ -8500,7 +8512,7 @@ msgstr ""
 msgid "Hyperlink Information"
 msgstr "Informácie"
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 #, fuzzy
 msgid "&Type:"
 msgstr "Typ"
@@ -10215,7 +10227,7 @@ msgid "b"
 msgstr ""
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr ""
@@ -10770,7 +10782,7 @@ msgstr ""
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr ""
 
@@ -10868,7 +10880,7 @@ msgstr ""
 msgid "Date deleted"
 msgstr ""
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 #, fuzzy
 msgctxt "display name"
@@ -13808,246 +13820,317 @@ msgstr ""
 msgid "Type mismatch"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 msgid "Device I/O error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 #, fuzzy
 #| msgid "File already exists.\n"
 msgid "File already exists"
 msgstr "Súbor už existuje.\n"
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 msgid "Disk full"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 #, fuzzy
 #| msgid "Too many open files.\n"
 msgid "Too many files"
 msgstr "Prílš veľa otvorení súborov.\n"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 #, fuzzy
 #| msgid "Access denied.\n"
 msgid "Permission denied"
 msgstr "Prístup zamietnutý.\n"
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 #, fuzzy
 #| msgid "Path not found.\n"
 msgid "Path not found"
 msgstr "Cesta nenájdená.\n"
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 msgid "Object variable not set"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 #, fuzzy
 msgid "For loop not initialized"
 msgstr "Súbor nenájdený.\n"
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 msgid "Invalid use of Null"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 msgid "ActiveX component can't create object"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 msgid "Class doesn't support Automation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 msgid "Object doesn't support named arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 msgid "Object doesn't support current locale setting"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 #, fuzzy
 msgid "Named argument not found"
 msgstr "Súbor nenájdený.\n"
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 #, fuzzy
 #| msgid "Sector not found.\n"
 msgid "Specified DLL function not found"
 msgstr "Sektor nenájdený.\n"
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 msgid "Variable is undefined"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+#, fuzzy
+msgid "Class not defined"
+msgstr "Cesta neexistuje.\n"
+
+#: dlls/vbscript/vbscript.rc:71
+#, fuzzy
+#| msgid "Unexpected network error.\n"
+msgid "Expected ']'"
+msgstr "Neočakávaná sieťová chyba.\n"
+
+#: dlls/vbscript/vbscript.rc:75
+#, fuzzy
+#| msgid "Unexpected network error.\n"
+msgid "Expected 'If'"
+msgstr "Neočakávaná sieťová chyba.\n"
+
+#: dlls/vbscript/vbscript.rc:76
 #, fuzzy
 #| msgid "Unexpected network error.\n"
 msgid "Expected 'To'"
 msgstr "Neočakávaná sieťová chyba.\n"
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 msgid "Expected 'End'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+#, fuzzy
+#| msgid "Unexpected network error.\n"
+msgid "Expected 'Function'"
+msgstr "Neočakávaná sieťová chyba.\n"
+
+#: dlls/vbscript/vbscript.rc:79
+#, fuzzy
+#| msgid "Unexpected network error.\n"
+msgid "Expected 'Sub'"
+msgstr "Neočakávaná sieťová chyba.\n"
+
+#: dlls/vbscript/vbscript.rc:80
 #, fuzzy
 #| msgid "Unexpected network error.\n"
 msgid "Expected 'Then'"
 msgstr "Neočakávaná sieťová chyba.\n"
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 msgid "Expected 'Wend'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 msgid "Expected 'Loop'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 msgid "Expected 'Next'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 #, fuzzy
 #| msgid "Unexpected network error.\n"
 msgid "Expected 'Case'"
 msgstr "Neočakávaná sieťová chyba.\n"
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+#, fuzzy
+#| msgid "Unexpected network error.\n"
+msgid "Expected 'Select'"
+msgstr "Neočakávaná sieťová chyba.\n"
+
+#: dlls/vbscript/vbscript.rc:86
 #, fuzzy
 #| msgid "Unexpected network error.\n"
 msgid "Expected statement"
 msgstr "Neočakávaná sieťová chyba.\n"
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 #, fuzzy
 #| msgid "Unexpected network error.\n"
 msgid "Expected end of statement"
 msgstr "Neočakávaná sieťová chyba.\n"
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 #, fuzzy
 #| msgid "Unexpected network error.\n"
 msgid "Expected integer constant"
 msgstr "Neočakávaná sieťová chyba.\n"
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+#, fuzzy
+#| msgid "Unexpected network error.\n"
+msgid "Expected 'With'"
+msgstr "Neočakávaná sieťová chyba.\n"
+
+#: dlls/vbscript/vbscript.rc:90
+msgid "Identifier too long"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:92
 #, fuzzy
 #| msgid "Invalid name.\n"
 msgid "Invalid number"
 msgstr "Nesprávny názov.\n"
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+msgid "Invalid use of 'Me' keyword"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 #, fuzzy
 #| msgid "Invalid name.\n"
 msgid "Invalid 'exit' statement"
 msgstr "Nesprávny názov.\n"
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 msgid "Name redefined"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 #, fuzzy
 #| msgid "Unexpected network error.\n"
 msgid "Expected literal constant"
 msgstr "Neočakávaná sieťová chyba.\n"
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 #, fuzzy
 #| msgid "Unexpected network error.\n"
 msgid "Expected 'In'"
 msgstr "Neočakávaná sieťová chyba.\n"
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 msgid "Expected 'Class'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+#, fuzzy
+#| msgid "Unexpected network error.\n"
+msgid "Expected 'Property'"
+msgstr "Neočakávaná sieťová chyba.\n"
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 #, fuzzy
 #| msgid "Unexpected network error.\n"
 msgid "Unexpected 'Next'"
 msgstr "Neočakávaná sieťová chyba.\n"
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr ""
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr "Wine"
 
@@ -15059,7 +15142,7 @@ msgid "Digi&tal"
 msgstr "Digi&tálne"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr ""
@@ -15867,6 +15950,41 @@ msgstr ""
 msgid "This is a test"
 msgstr ""
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+#, fuzzy
+#| msgid "Error: Could not find process \"%1\".\n"
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr "Chyba: Nemôžno nájsť proces \"%1\".\n"
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr ""
@@ -19337,7 +19455,7 @@ msgstr ""
 msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr "Wine konfigurácia sa v %s aktualizuje, prosím počkajte..."
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -19345,23 +19463,23 @@ msgid ""
 "option) any later version."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 msgid "Windows registration information"
 msgstr "Informácie o registrácii Windows"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr "&Vlastník:"
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr "Organi&zácia:"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr "Nastavenia aplikácie"
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
@@ -19371,57 +19489,57 @@ msgstr ""
 "prepojená s Knižnice a Grafika kartami aby Vám dovolila zmeniť systémovo "
 "alebo pre konkrétnu aplikáciu nastavenia v týchto kartách."
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 #, fuzzy
 #| msgid "&Add application..."
 msgid "Add appli&cation..."
 msgstr "&Pridať aplikáciu..."
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr "&Odstrániť aplikáciu"
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr "&Verzia Windows:"
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr "Nastavenia okna"
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr "&Vytvoriť virtuálnu plochu"
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr "Veľkosť &plochy:"
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr "Rozlíšenie obrazovky"
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr "DLL prepísania"
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
@@ -19431,182 +19549,182 @@ msgstr ""
 "(poskytnuté z Wine) alebo natívne (prevziate z Windows alebo poskytnuté "
 "aplikáciou)."
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr "&Nové prepísanie pre knižnicu:"
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr "Existujúce &prepísania:"
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 msgid "&Edit..."
 msgstr "&Upraviť..."
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr "Upraviť prepísanie"
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr "Poradie načítavania"
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr "&Vstavané (Wine)"
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr "&Natívne (Windows)"
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 #, fuzzy
 #| msgid "Bui&ltin then Native"
 msgid "Buil&tin then Native"
 msgstr "Vst&avané potom natívne"
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr "Natí&vne potom vstavané"
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 #, fuzzy
 msgid "Drive configuration"
 msgstr "Informácie"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 msgid ""
 "Failed to connect to the mount manager; the drive configuration cannot be "
 "edited."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 #, fuzzy
 #| msgid "&Add..."
 msgid "A&dd..."
 msgstr "&Pridať..."
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr "&Cesta:"
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 #, fuzzy
 #| msgid "Show &Advanced"
 msgid "Show Advan&ced"
 msgstr "Ukáž &pokročilé"
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr "Za&riadenie:"
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr "Pre&chádzať..."
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr "&Označenie:"
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 #, fuzzy
 msgid "&Show dot files"
 msgstr "&Detaily"
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr "Diagnostika ovládača"
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr "&Skúška zvuku"
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr "Predvolené"
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr "Výstupné zariadenie:"
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr "Hlasové výstupné zariadenie:"
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr "Vstupné zariadenie:"
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr "Hlasové vstupné zariadenie:"
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 #, fuzzy
 #| msgid "Output device:"
 msgid "MIDI output device:"
 msgstr "Výstupné zariadenie:"
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 #, fuzzy
 msgid "Speaker configuration"
 msgstr "Informácie"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr "Vzhľad"
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 msgid "&WinRT theme:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 #, fuzzy
 msgid "&Install theme..."
 msgstr "&Skomentovať..."
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 #, fuzzy
 msgid "Folders"
 msgstr "Systémové adresáre"
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr ""
 
@@ -19693,28 +19811,32 @@ msgid "(System default)"
 msgstr "Systémová cesta"
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:91
-msgid "Quadraphonic"
+msgid "5.1 Surround"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:92
-msgid "Stereo"
+msgid "Quadraphonic"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:93
+msgid "Stereo"
+msgstr ""
+
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 #, fuzzy
 #| msgid "Right"
 msgid "Light"
 msgstr "Vpravo"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr ""
 
@@ -19822,128 +19944,128 @@ msgid ""
 "Remember to click 'Add' in the Drives tab to create one!\n"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr "Pozadie okna"
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 #, fuzzy
 msgid "Active Title Bar"
 msgstr "&Bez titulkového pruhu"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr ""
 
diff --git a/po/sl.po b/po/sl.po
index d18cb9c5cb31..9d06f85620b5 100644
--- a/po/sl.po
+++ b/po/sl.po
@@ -92,7 +92,7 @@ msgstr "&Spremeni ..."
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr "&Odstrani"
@@ -129,7 +129,7 @@ msgstr "Podporni podatki"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -236,7 +236,7 @@ msgstr "&Namesti"
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -749,7 +749,7 @@ msgid "Font St&yle:"
 msgstr "Slog pi&save:"
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "&Velikost:"
 
@@ -765,7 +765,7 @@ msgstr "Pr&ečrtano"
 msgid "&Underline"
 msgstr "P&odčrtano"
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "&Barva:"
 
@@ -944,7 +944,7 @@ msgstr "Število &kopij:"
 msgid "C&ollate"
 msgstr "Z&biranje"
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr "V&elikost:"
 
@@ -1022,7 +1022,7 @@ msgstr "Ime datoteke:"
 msgid "Files of type:"
 msgstr "Vrsta datoteke:"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr "Datoteke ni mogoče najti"
 
@@ -2485,7 +2485,7 @@ msgid "&File name:"
 msgstr "&Ime datoteke:"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr "B&rskaj ..."
 
@@ -3904,11 +3904,19 @@ msgstr "Kazalo"
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr "Wine Video 1 video kodek"
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr ""
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr "&Onemogoči"
 
@@ -4067,13 +4075,13 @@ msgstr "Neveljaven klic postopka ali argument"
 msgid "Subscript out of range"
 msgstr "Podskript je izven obsega"
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 #, fuzzy
 #| msgid "Out of paper; "
 msgid "Out of stack space"
 msgstr "Zmanjkalo je papirja; "
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr "Zahtevan je predmet"
 
@@ -4081,25 +4089,25 @@ msgstr "Zahtevan je predmet"
 msgid "Automation server can't create object"
 msgstr "Strežnik izvajanja ne more ustvariti predmeta"
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr "Predmet ne podpira te lastnosti ali načina"
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr "Predmet ne podpira tega dejanja"
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr "Argument je obvezen"
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 #, fuzzy
 #| msgid "Object Class Violation"
 msgid "Object not a collection"
 msgstr "Prekršitev razreda predmetov"
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr "Skladenjska napaka"
 
@@ -4107,33 +4115,33 @@ msgstr "Skladenjska napaka"
 msgid "Expected ';'"
 msgstr "Pričakovan je bil ';'"
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr "Pričakovan je bil '('"
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr "Pričakovan je bil ')'"
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 #, fuzzy
 #| msgid "Subject Key Identifier"
 msgid "Expected identifier"
 msgstr "Določilo ključa zahteve"
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected '='"
 msgstr "Pričakovan je bil ';'"
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 #, fuzzy
 #| msgid "Invalid parameter.\n"
 msgid "Invalid character"
 msgstr "Neveljaven parameter.\n"
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr "Nedoločena konstanta niza"
 
@@ -4181,7 +4189,7 @@ msgstr ""
 msgid "Microsoft JScript runtime error"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 #, fuzzy
 #| msgid "Unknown error"
 msgid "Unknown runtime error"
@@ -4209,7 +4217,7 @@ msgstr "'[object]' ni predmet datuma"
 msgid "Object expected"
 msgstr "Pričakovan je bil predmet"
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr "Neveljavna dodelitev"
 
@@ -4445,11 +4453,11 @@ msgstr "Datoteke ni mogoče najti.\n"
 msgid "Path not found.\n"
 msgstr "Poti ni mogoče najti.\n"
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr "Preveč odprtih datotek.\n"
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr "Dostop je zavrnjen.\n"
 
@@ -5803,7 +5811,7 @@ msgstr "Uporabnik je prekinil opravilo.\n"
 msgid "File has a user-mapped section.\n"
 msgstr "Datoteka ima uporabniško preslikan odsek.\n"
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr "Povezava je bila zavrnjena.\n"
 
@@ -7391,91 +7399,97 @@ msgstr "Stran ne obstaja.\n"
 
 #: dlls/kernelbase/winerror.mc:3750
 #, fuzzy
+#| msgid "File or directory corrupt.\n"
+msgid "File or directory is not a reparse point.\n"
+msgstr "Datoteka ali mapa je pokvarjena.\n"
+
+#: dlls/kernelbase/winerror.mc:3755
+#, fuzzy
 #| msgid "Invalid at interrupt time.\n"
 msgid "Call interrupted.\n"
 msgstr "Neveljavno ob času prekinitve.\n"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 #, fuzzy
 #| msgid "Invalid handle.\n"
 msgid "Invalid file handle.\n"
 msgstr "Neveljaven ročnik.\n"
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 #, fuzzy
 #| msgid "Invalid network address.\n"
 msgid "Invalid pointer address.\n"
 msgstr "Neveljaven omrežni naslov.\n"
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 #, fuzzy
 #| msgid "Invalid name.\n"
 msgid "Invalid argument.\n"
 msgstr "Neveljavno ime.\n"
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 #, fuzzy
 #| msgid "Connection refused.\n"
 msgid "Connection reset by peer.\n"
 msgstr "Povezava je bila zavrnjena.\n"
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 #, fuzzy
 #| msgid "Point not found.\n"
 msgid "Host not found.\n"
 msgstr "Točke ni mogoče najti.\n"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 #, fuzzy
 #| msgid "File not found.\n"
 msgid "Nonauthoritative host not found.\n"
 msgstr "Datoteke ni mogoče najti.\n"
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 #, fuzzy
 #| msgid "A printer error occurred."
 msgid "Nonrecoverable error.\n"
 msgstr "Prišlo je do napake tiskanja."
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 #, fuzzy
 #| msgid "Not implemented"
 msgid "Not implemented.\n"
 msgstr "Ni podprto"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 #, fuzzy
 #| msgid "RPC call failed.\n"
 msgid "Call failed.\n"
 msgstr "Klic RPC je spodletel.\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 #, fuzzy
 #| msgid "Unable to unload media.\n"
 msgid "Unable to find matching object.\n"
 msgstr "Medija ni mogoče razložiti.\n"
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 #, fuzzy
 #| msgid "Message 0x%1 not found in file %2.\n"
 msgid "No Signature found in file.\n"
 msgstr "Sporočila 0x%1 ni bilo mogoče najti v datoteki %2.\n"
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 #, fuzzy
 #| msgid "Invalid level.\n"
 msgid "Invalid call.\n"
 msgstr "Neveljavna raven.\n"
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 #, fuzzy
 #| msgid "Help not available."
 msgid "Resource is not currently available.\n"
@@ -8686,7 +8700,7 @@ msgstr "Hiperpovezava"
 msgid "Hyperlink Information"
 msgstr "Lastnosti hiperpovezave"
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr "&Vrsta:"
 
@@ -10524,7 +10538,7 @@ msgid "b"
 msgstr "b"
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr "dpi"
@@ -11064,7 +11078,7 @@ msgstr "&Odpri:"
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr "&Brskaj ..."
 
@@ -11164,7 +11178,7 @@ msgstr "Izvirno mesto"
 msgid "Date deleted"
 msgstr "Datum je bil izbrisan"
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -14130,278 +14144,354 @@ msgstr ""
 msgid "Type mismatch"
 msgstr "Neujemanje vrste podatkov.\n"
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 #, fuzzy
 #| msgid "I/O device error.\n"
 msgid "Device I/O error"
 msgstr "Napaka V/I naprave.\n"
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 #, fuzzy
 #| msgid "File already exists.\n"
 msgid "File already exists"
 msgstr "Datoteka že obstaja.\n"
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 #, fuzzy
 #| msgid "Disk full.\n"
 msgid "Disk full"
 msgstr "Disk je poln.\n"
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 #, fuzzy
 #| msgid "Too many open files.\n"
 msgid "Too many files"
 msgstr "Preveč odprtih datotek.\n"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 #, fuzzy
 #| msgid "Access denied.\n"
 msgid "Permission denied"
 msgstr "Dostop je zavrnjen.\n"
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 #, fuzzy
 #| msgid "Path not found.\n"
 msgid "Path not found"
 msgstr "Poti ni mogoče najti.\n"
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 #, fuzzy
 #| msgid "(value not set)"
 msgid "Object variable not set"
 msgstr "(vrednost ni nastavljena)"
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 #, fuzzy
 #| msgid "Object UUID not found.\n"
 msgid "For loop not initialized"
 msgstr "UUID predmeta ni mogoče najti.\n"
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 #, fuzzy
 #| msgid "Invalid user buffer.\n"
 msgid "Invalid use of Null"
 msgstr "Neveljaven uporabniški medpomnilnik.\n"
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 #, fuzzy
 #| msgid "Automation server can't create object"
 msgid "ActiveX component can't create object"
 msgstr "Strežnik izvajanja ne more ustvariti predmeta"
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Class doesn't support Automation"
 msgstr "Predmet ne podpira tega dejanja"
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Object doesn't support named arguments"
 msgstr "Predmet ne podpira tega dejanja"
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Object doesn't support current locale setting"
 msgstr "Predmet ne podpira tega dejanja"
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 #, fuzzy
 #| msgid "Element not found.\n"
 msgid "Named argument not found"
 msgstr "Predmeta ni mogoče najti.\n"
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 #, fuzzy
 #| msgid "Specified control was not found in message"
 msgid "Specified DLL function not found"
 msgstr "Navedenega nadzornika v sporočilu ni bilo mogoče najti"
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 #, fuzzy
 #| msgid "'|' is undefined"
 msgid "Variable is undefined"
 msgstr "'|' ni določen"
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+#, fuzzy
+#| msgid "Class does not exist.\n"
+msgid "Class not defined"
+msgstr "Razred ne obstaja.\n"
+
+#: dlls/vbscript/vbscript.rc:71
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected ']'"
+msgstr "Pričakovan je bil ';'"
+
+#: dlls/vbscript/vbscript.rc:75
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'If'"
+msgstr "Pričakovan je bil ';'"
+
+#: dlls/vbscript/vbscript.rc:76
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'To'"
 msgstr "Pričakovan je bil ';'"
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'End'"
 msgstr "Pričakovan je bil ';'"
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Function'"
+msgstr "Pričakovan je bil ';'"
+
+#: dlls/vbscript/vbscript.rc:79
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Sub'"
+msgstr "Pričakovan je bil ';'"
+
+#: dlls/vbscript/vbscript.rc:80
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Then'"
 msgstr "Pričakovan je bil ';'"
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Wend'"
 msgstr "Pričakovan je bil ';'"
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Loop'"
 msgstr "Pričakovan je bil ';'"
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Next'"
 msgstr "Pričakovan je bil ';'"
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Case'"
 msgstr "Pričakovan je bil ';'"
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Select'"
+msgstr "Pričakovan je bil ';'"
+
+#: dlls/vbscript/vbscript.rc:86
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected statement"
 msgstr "Pričakovan je bil ';'"
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 #, fuzzy
 #| msgid "Unexpected network error.\n"
 msgid "Expected end of statement"
 msgstr "Nepričakovana napaka omrežja.\n"
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 #, fuzzy
 #| msgid "Unterminated string constant"
 msgid "Expected integer constant"
 msgstr "Nedoločena konstanta niza"
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'With'"
+msgstr "Pričakovan je bil ';'"
+
+#: dlls/vbscript/vbscript.rc:90
+#, fuzzy
+#| msgid "Secret too long.\n"
+msgid "Identifier too long"
+msgstr "Skrivnost je predolga.\n"
+
+#: dlls/vbscript/vbscript.rc:92
 #, fuzzy
 #| msgid "Invalid flag number.\n"
 msgid "Invalid number"
 msgstr "Neveljavna številka zastavice.\n"
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+#, fuzzy
+#| msgid "Invalid user buffer.\n"
+msgid "Invalid use of 'Me' keyword"
+msgstr "Neveljaven uporabniški medpomnilnik.\n"
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 #, fuzzy
 #| msgid "Invalid printer state.\n"
 msgid "Invalid 'exit' statement"
 msgstr "Neveljavno stanje tiskalnika.\n"
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 #, fuzzy
 #| msgid "Label redefined"
 msgid "Name redefined"
 msgstr "Ponovna definicija oznake"
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 #, fuzzy
 #| msgid "Unexpected network error.\n"
 msgid "Expected literal constant"
 msgstr "Nepričakovana napaka omrežja.\n"
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'In'"
 msgstr "Pričakovan je bil ';'"
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Class'"
 msgstr "Pričakovan je bil ';'"
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Property'"
+msgstr "Pričakovan je bil ';'"
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Unexpected 'Next'"
 msgstr "Pričakovan je bil ';'"
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr ""
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr "Wine"
 
@@ -15565,7 +15655,7 @@ msgid "Digi&tal"
 msgstr "Digi&talna ura"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "&Pisava ..."
@@ -16629,6 +16719,41 @@ msgstr "Vsak znak je širok %1!u! točk in visok %2!u! točk"
 msgid "This is a test"
 msgstr "Preizkusno besedilo"
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+#, fuzzy
+#| msgid "Error: Could not find process \"%1\".\n"
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr "Napaka: ni mogoče najti opravila \"%1\".\n"
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr "Orodje za diagnostiko DirectX"
@@ -20199,7 +20324,7 @@ msgstr ""
 msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr "Nastavitve programa Wine v %s se posodabljajo, prosimo počakajte ..."
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -20211,23 +20336,23 @@ msgstr ""
 "Software Foundation Ali pod različico licence 2.1 ali (po vaši želji) pod "
 "katerokoli novejšo različico."
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 msgid "Windows registration information"
 msgstr "Podatki o registraciji Windows"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr "&Lastnik:"
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr "Organi&zacija:"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr "Nastavitve programov"
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
@@ -20238,57 +20363,57 @@ msgstr ""
 "spreminjanje nastavitev v teh dveh zavihkih tako za ves sistem kot za "
 "posamezne programe."
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 #, fuzzy
 #| msgid "&Add application..."
 msgid "Add appli&cation..."
 msgstr "&Dodaj program ..."
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr "&Odstrani program"
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr "&Različica Windows:"
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr "Nastavitve okna"
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr "Samodejno zajemi &miško v celozaslonskih oknih"
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr "Dovoli upravljalniku oken, da okra&si okna"
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr "Dovoli upravljalniku &oken, da upravlja z Wine-ovimi okni"
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr "Posnemaj navidezno &namizje"
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr "&Velikost namizja:"
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr "Ločljivost zaslona"
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr "Vzorčno besedilo, napisano s pisavo Tahoma velikosti 10 točk"
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr "Prepisi DLL"
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
@@ -20298,59 +20423,59 @@ msgstr ""
 "izviona ('native'; vzeta iz Windows ali nameščena skupaj s programom za "
 "Windows)."
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr "&Nov prepis za knjižnico:"
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr "Obstoječi &prepisi:"
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 msgid "&Edit..."
 msgstr "&Uredi ..."
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr "Uredi prepis"
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr "Red nalaganja"
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr "&Vgrajena (Wine)"
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr "&Izvorna (Windows)"
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 #, fuzzy
 #| msgid "Bui&ltin then Native"
 msgid "Buil&tin then Native"
 msgstr "Vgra&jena, izvorna"
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr "I&zvorna, vgrajena"
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr "Izberite črko pogona"
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 #, fuzzy
 #| msgid "Wine configuration"
 msgid "Drive configuration"
 msgstr "Nastavitve Wine"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 #, fuzzy
 #| msgid ""
 #| "Failed to connect to the mount manager, the drive configuration cannot be "
@@ -20362,127 +20487,127 @@ msgstr ""
 "Napaka med povezovanjem z upravljalnikom priklopov (mount manager); "
 "nastavitev pogonov ne bo mogoče urejati."
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 #, fuzzy
 #| msgid "&Add..."
 msgid "A&dd..."
 msgstr "&Dodaj ..."
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr "&Pot:"
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 #, fuzzy
 #| msgid "Show &Advanced"
 msgid "Show Advan&ced"
 msgstr "Pokaži &napredno"
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr "Na&prava:"
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr "&Brskaj ..."
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr "&Oznaka:"
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr "Zapor&edna št.:"
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 #, fuzzy
 #| msgid "Show &dot files"
 msgid "&Show dot files"
 msgstr "Pokaži &datoteke s piko"
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr "Diagnostika gonilnikov"
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr "&Preizkusi zvok"
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr "Privzeto"
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr "Izhodna naprava:"
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr "Naprava zvočnega izhoda:"
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr "Vhodna naprava:"
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr "Naprava zvočnega vhoda:"
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 #, fuzzy
 #| msgid "Output device:"
 msgid "MIDI output device:"
 msgstr "Izhodna naprava:"
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 #, fuzzy
 #| msgid "Wine configuration"
 msgid "Speaker configuration"
 msgstr "Nastavitve Wine"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr "Videz"
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr "&Tema:"
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 #, fuzzy
 #| msgid "&Theme:"
 msgid "&WinRT theme:"
 msgstr "&Tema:"
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr "&Namesti temo ..."
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr "P&redmet:"
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr "B&arva:"
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr "Mape"
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr "&Poveži z:"
 
@@ -20565,30 +20690,34 @@ msgid "(System default)"
 msgstr "(Sistemsko privzeto)"
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:91
+msgid "5.1 Surround"
+msgstr ""
+
+#: programs/winecfg/winecfg.rc:92
 #, fuzzy
 #| msgid "graphic"
 msgid "Quadraphonic"
 msgstr "grafika"
 
-#: programs/winecfg/winecfg.rc:92
+#: programs/winecfg/winecfg.rc:93
 msgid "Stereo"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:93
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 #, fuzzy
 #| msgid "Right"
 msgid "Light"
 msgstr "Desno"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr ""
 
@@ -20715,127 +20844,127 @@ msgstr ""
 "\n"
 "Če ga želite dodati, uporabite gumb 'Dodaj' v zavihku Pogoni!\n"
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr "Ozadje nadzornikov"
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr "Besedilo nadzornikov"
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr "Ozadje menija"
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr "Besedilo menija"
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr "Drsnik"
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr "Ozadje izbire"
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr "Besedilo izbire"
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr "Ozadje orodnega namiga"
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr "Besedilo orodnega namiga"
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr "Ozadje okna"
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr "Besedilo okna"
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 msgid "Active Title Bar"
 msgstr "Dejavna nazivna vrstica"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr "Besedilo dejavnega naziva"
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr "Nedejavna nazivna vrstica"
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr "Besedilno nedejavnega naziva"
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr "Sporočilo polja z besedilom"
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr "Delovni prostor programa"
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr "Okvir okna"
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr "Dejaven rob"
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr "Nedejaven rob"
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr "Senca nadzornikov"
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr "Sivo besedilo"
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr "Poudarjanje nadzornikov"
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr "Temna senca nadzornikov"
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr "Svetlost nadzornikov"
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr "Nadomestno ozadje nadzornikov"
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr "Predmet s hitrim sledenjem"
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr "Preliv dejavne nazivne vrstice"
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr "Preliv nedejavne nazivne vrstice"
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr "Poudarjanje menija"
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr "Menijska vrstica"
 
diff --git a/po/sr_RS@cyrillic.po b/po/sr_RS@cyrillic.po
index 4676924a16c2..58508641638b 100644
--- a/po/sr_RS@cyrillic.po
+++ b/po/sr_RS@cyrillic.po
@@ -87,7 +87,7 @@ msgstr "&Измени..."
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr "&Уклони"
@@ -124,7 +124,7 @@ msgstr "Подршка"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -230,7 +230,7 @@ msgstr "&Инсталирај"
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -736,7 +736,7 @@ msgid "Font St&yle:"
 msgstr "&Стил фонта:"
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "&Величина:"
 
@@ -752,7 +752,7 @@ msgstr "&Прецртај"
 msgid "&Underline"
 msgstr "&Подвуци"
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "&Боја:"
 
@@ -933,7 +933,7 @@ msgstr "Број &примерака:"
 msgid "C&ollate"
 msgstr "&Сложи"
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr "&Величина:"
 
@@ -1013,7 +1013,7 @@ msgstr "&Датотека"
 msgid "Files of type:"
 msgstr "Датотеке &врсте:"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr "Датотека није пронађена"
 
@@ -2486,7 +2486,7 @@ msgid "&File name:"
 msgstr "&Датотека"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 #, fuzzy
 msgid "B&rowse..."
 msgstr ""
@@ -3875,11 +3875,19 @@ msgstr "&Попис"
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr "Wine Video 1 видео кодек"
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr ""
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 #, fuzzy
 msgid "&Disable"
 msgstr "табела"
@@ -4030,13 +4038,13 @@ msgstr "Неважећи поступак позива или аргумента
 msgid "Subscript out of range"
 msgstr "Потпис је ван домета"
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 #, fuzzy
 #| msgid "Out of paper; "
 msgid "Out of stack space"
 msgstr "Нема папира; "
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 #, fuzzy
 msgid "Object required"
 msgstr "Очекивани објекат"
@@ -4045,25 +4053,25 @@ msgstr "Очекивани објекат"
 msgid "Automation server can't create object"
 msgstr "Аутоматизовани сервер не може да створи објекат"
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr "Објекат не подржава ово својство или методу"
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr "Објекат не подржава ову радњу"
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr "Аргумент је обавезан"
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 #, fuzzy
 #| msgid "Object Class Violation"
 msgid "Object not a collection"
 msgstr "Кршење класе објеката"
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr "Грешка у синтакси"
 
@@ -4071,31 +4079,31 @@ msgstr "Грешка у синтакси"
 msgid "Expected ';'"
 msgstr "Очекивано ';'"
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr "Очекивано '('"
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr "Очекивано ')'"
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected '='"
 msgstr "Очекивано ';'"
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 #, fuzzy
 msgid "Invalid character"
 msgstr ""
 "Грешка: унесени су непознати или неисправни параметри наредбене линије.\n"
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr "Незавршена константа ниски"
 
@@ -4144,7 +4152,7 @@ msgstr ""
 msgid "Microsoft JScript runtime error"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 #, fuzzy
 msgid "Unknown runtime error"
 msgstr "Непознат извор"
@@ -4171,7 +4179,7 @@ msgstr "„[object]“ није временски објекат"
 msgid "Object expected"
 msgstr "Очекивани објекат"
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr "Недозвољен задатак"
 
@@ -4406,11 +4414,11 @@ msgstr "Датотека није пронађена.\n"
 msgid "Path not found.\n"
 msgstr "%s путања није пронађена.\n"
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr ""
 
@@ -5850,7 +5858,7 @@ msgstr "Инсталациони програми.\n"
 msgid "File has a user-mapped section.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 #, fuzzy
 msgid "Connection refused.\n"
 msgstr "Повезивање на %s.\n"
@@ -7582,79 +7590,83 @@ msgid "This network connection does not exist.\n"
 msgstr "Датотека не постоји.\n"
 
 #: dlls/kernelbase/winerror.mc:3750
+msgid "File or directory is not a reparse point.\n"
+msgstr ""
+
+#: dlls/kernelbase/winerror.mc:3755
 #, fuzzy
 msgid "Call interrupted.\n"
 msgstr "Отвори датотеку.\n"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 #, fuzzy
 msgid "Invalid file handle.\n"
 msgstr "Неисправна синтакса.\n"
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 #, fuzzy
 msgid "Invalid pointer address.\n"
 msgstr "IP адреса.\n"
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 #, fuzzy
 msgid "Invalid argument.\n"
 msgstr "Неисправна синтакса.\n"
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 #, fuzzy
 msgid "Connection reset by peer.\n"
 msgstr "Повезивање на %s.\n"
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 #, fuzzy
 msgid "Host not found.\n"
 msgstr "%s путања није пронађена.\n"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 #, fuzzy
 msgid "Nonauthoritative host not found.\n"
 msgstr "Датотека није пронађена.\n"
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 #, fuzzy
 #| msgid "A printer error occurred."
 msgid "Nonrecoverable error.\n"
 msgstr "Дошло је до грешке у штампачу."
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 #, fuzzy
 msgid "Not implemented.\n"
 msgstr "Датотека није пронађена"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 #, fuzzy
 msgid "Call failed.\n"
 msgstr "Отвори датотеку.\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 #, fuzzy
 msgid "Unable to find matching object.\n"
 msgstr "Неисправна синтакса.\n"
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 msgid "No Signature found in file.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 #, fuzzy
 msgid "Invalid call.\n"
 msgstr "Неисправни акредитиви.\n"
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 #, fuzzy
 msgid "Resource is not currently available.\n"
 msgstr "Недоступно"
@@ -8694,7 +8706,7 @@ msgstr "Хипервеза"
 msgid "Hyperlink Information"
 msgstr "Подаци о хипервези"
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr "&Врста:"
 
@@ -10427,7 +10439,7 @@ msgid "b"
 msgstr "b"
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr "тпи"
@@ -10980,7 +10992,7 @@ msgstr "&Отвори:"
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr "&Разгледај..."
 
@@ -11078,7 +11090,7 @@ msgstr "Оригинална локација"
 msgid "Date deleted"
 msgstr "Датум брисања"
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 #, fuzzy
 msgctxt "display name"
@@ -13819,260 +13831,332 @@ msgstr ""
 msgid "Type mismatch"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 msgid "Device I/O error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 #, fuzzy
 msgid "File already exists"
 msgstr "Порт %s већ постоји.\n"
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 msgid "Disk full"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 #, fuzzy
 msgid "Too many files"
 msgstr "Отвори датотеку"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 msgid "Permission denied"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 #, fuzzy
 msgid "Path not found"
 msgstr "%s путања није пронађена.\n"
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 msgid "Object variable not set"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 #, fuzzy
 msgid "For loop not initialized"
 msgstr "%s путања није пронађена.\n"
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 #, fuzzy
 msgid "Invalid use of Null"
 msgstr "Неисправни акредитиви.\n"
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 #, fuzzy
 #| msgid "Automation server can't create object"
 msgid "ActiveX component can't create object"
 msgstr "Аутоматизовани сервер не може да створи објекат"
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Class doesn't support Automation"
 msgstr "Објекат не подржава ову радњу"
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Object doesn't support named arguments"
 msgstr "Објекат не подржава ову радњу"
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Object doesn't support current locale setting"
 msgstr "Објекат не подржава ову радњу"
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 #, fuzzy
 msgid "Named argument not found"
 msgstr "Датотека није пронађена.\n"
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 #, fuzzy
 #| msgid "Specified control was not found in message"
 msgid "Specified DLL function not found"
 msgstr "Наведена контрола није пронађена у поруци"
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 #, fuzzy
 #| msgid "'|' is undefined"
 msgid "Variable is undefined"
 msgstr "„|“ није одређено"
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+#, fuzzy
+msgid "Class not defined"
+msgstr "Путања не постоји.\n"
+
+#: dlls/vbscript/vbscript.rc:71
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected ']'"
+msgstr "Очекивано ';'"
+
+#: dlls/vbscript/vbscript.rc:75
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'If'"
+msgstr "Очекивано ';'"
+
+#: dlls/vbscript/vbscript.rc:76
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'To'"
 msgstr "Очекивано ';'"
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'End'"
 msgstr "Очекивано ';'"
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Function'"
+msgstr "Очекивано ';'"
+
+#: dlls/vbscript/vbscript.rc:79
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Sub'"
+msgstr "Очекивано ';'"
+
+#: dlls/vbscript/vbscript.rc:80
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Then'"
 msgstr "Очекивано ';'"
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Wend'"
 msgstr "Очекивано ';'"
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Loop'"
 msgstr "Очекивано ';'"
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Next'"
 msgstr "Очекивано ';'"
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Case'"
 msgstr "Очекивано ';'"
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Select'"
+msgstr "Очекивано ';'"
+
+#: dlls/vbscript/vbscript.rc:86
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected statement"
 msgstr "Очекивано ';'"
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected end of statement"
 msgstr "Очекивано ';'"
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 #, fuzzy
 #| msgid "Unterminated string constant"
 msgid "Expected integer constant"
 msgstr "Незавршена константа ниски"
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'With'"
+msgstr "Очекивано ';'"
+
+#: dlls/vbscript/vbscript.rc:90
+msgid "Identifier too long"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:92
 #, fuzzy
 msgid "Invalid number"
 msgstr "Неисправна синтакса.\n"
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+#, fuzzy
+msgid "Invalid use of 'Me' keyword"
+msgstr "Неисправни акредитиви.\n"
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 #, fuzzy
 msgid "Invalid 'exit' statement"
 msgstr "Неисправна синтакса.\n"
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 msgid "Name redefined"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 #, fuzzy
 #| msgid "Unterminated string constant"
 msgid "Expected literal constant"
 msgstr "Незавршена константа ниски"
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'In'"
 msgstr "Очекивано ';'"
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Class'"
 msgstr "Очекивано ';'"
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Property'"
+msgstr "Очекивано ';'"
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Unexpected 'Next'"
 msgstr "Очекивано ';'"
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr ""
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr "Wine"
 
@@ -15085,7 +15169,7 @@ msgid "Digi&tal"
 msgstr "&Дигитални"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "&Фонт..."
@@ -15903,6 +15987,39 @@ msgstr ""
 msgid "This is a test"
 msgstr ""
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr ""
@@ -19441,7 +19558,7 @@ msgstr ""
 msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr "Wine поставке у %s се ажурирају. Молимо, сачекајте..."
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -19449,172 +19566,172 @@ msgid ""
 "option) any later version."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 #, fuzzy
 msgid "Windows registration information"
 msgstr "Подаци"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 #, fuzzy
 msgid "&Owner:"
 msgstr "Власник"
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 #, fuzzy
 msgid "Organi&zation:"
 msgstr "анимација"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 #, fuzzy
 msgid "Application settings"
 msgstr "Програми"
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
 "or per-application settings in those tabs as well."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 #, fuzzy
 msgid "Add appli&cation..."
 msgstr "програм"
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 #, fuzzy
 msgid "&Remove application"
 msgstr "програм"
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 #, fuzzy
 msgid "&Windows Version:"
 msgstr "&Прозор"
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 #, fuzzy
 msgid "Window settings"
 msgstr "&Прозор"
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 #, fuzzy
 msgid "Desktop &size:"
 msgstr "Радна површина"
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 #, fuzzy
 msgid "DLL overrides"
 msgstr "&Уређивање"
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
 "application)."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 #, fuzzy
 msgid "&Edit..."
 msgstr "&Уређивање"
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 #, fuzzy
 msgid "Edit Override"
 msgstr "&Уређивање"
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 #, fuzzy
 msgid "Load order"
 msgstr "граница"
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 #, fuzzy
 msgid "&Builtin (Wine)"
 msgstr "&О Бележници"
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 #, fuzzy
 msgid "&Native (Windows)"
 msgstr "&Прозор"
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 msgid "Buil&tin then Native"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 #, fuzzy
 msgid "Select Drive Letter"
 msgstr "Изабери &све"
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 #, fuzzy
 msgid "Drive configuration"
 msgstr "Подаци"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 msgid ""
 "Failed to connect to the mount manager; the drive configuration cannot be "
 "edited."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 msgid "A&dd..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 msgid "Show Advan&ced"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 #, fuzzy
 msgid "Bro&wse..."
 msgstr ""
@@ -19623,104 +19740,104 @@ msgstr ""
 "#-#-#-#-#  sr_RS@cyrillic.po (Wine)  #-#-#-#-#\n"
 "Разгледај"
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 #, fuzzy
 msgid "&Show dot files"
 msgstr "&Детаљи"
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 #, fuzzy
 msgid "&Test Sound"
 msgstr "звук"
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 #, fuzzy
 msgid "Defaults"
 msgstr "Подразумевано"
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 #, fuzzy
 msgid "Output device:"
 msgstr "&Назив одредишне датотеке:"
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 #, fuzzy
 msgid "MIDI output device:"
 msgstr "&Назив одредишне датотеке:"
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 #, fuzzy
 msgid "Speaker configuration"
 msgstr "Подаци"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 msgid "&WinRT theme:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 #, fuzzy
 msgid "&Install theme..."
 msgstr "Инсталирање..."
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 #, fuzzy
 msgid "C&olor:"
 msgstr "&Колона"
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 #, fuzzy
 msgid "Folders"
 msgstr "Нова фасцикла"
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 #, fuzzy
 msgid "&Link to:"
 msgstr "Везе"
@@ -19812,29 +19929,33 @@ msgid "(System default)"
 msgstr "Системска путања"
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:91
+msgid "5.1 Surround"
+msgstr ""
+
+#: programs/winecfg/winecfg.rc:92
 #, fuzzy
 #| msgid "graphic"
 msgid "Quadraphonic"
 msgstr "графика"
 
-#: programs/winecfg/winecfg.rc:92
+#: programs/winecfg/winecfg.rc:93
 msgid "Stereo"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:93
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 #, fuzzy
 msgid "Light"
 msgstr "Десна ивица"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr ""
 
@@ -19944,141 +20065,141 @@ msgid ""
 "Remember to click 'Add' in the Drives tab to create one!\n"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 #, fuzzy
 msgid "Controls Background"
 msgstr "&Умножи позадину"
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 #, fuzzy
 msgid "Controls Text"
 msgstr "Контрола"
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 #, fuzzy
 msgid "Menu Background"
 msgstr "&Умножи позадину"
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 #, fuzzy
 msgid "Scrollbar"
 msgstr "трака за померање"
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 #, fuzzy
 msgid "Selection Background"
 msgstr "Постави као позадину"
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 #, fuzzy
 msgid "Selection Text"
 msgstr "Изабери &све"
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 #, fuzzy
 msgid "Tooltip Background"
 msgstr "&Умножи позадину"
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 #, fuzzy
 msgid "Window Background"
 msgstr "&Умножи позадину"
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 #, fuzzy
 msgid "Window Text"
 msgstr "&Прозор"
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 #, fuzzy
 msgid "Active Title Bar"
 msgstr "насловна линија"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 #, fuzzy
 msgid "Application Workspace"
 msgstr "Програми"
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 #, fuzzy
 msgid "Window Frame"
 msgstr "&Прозор"
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 #, fuzzy
 msgid "Controls Shadow"
 msgstr "Управљачки панел"
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 #, fuzzy
 msgid "Controls Light"
 msgstr "Контрола"
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 #, fuzzy
 msgid "Menu Bar"
 msgstr "линија менија"
diff --git a/po/sr_RS@latin.po b/po/sr_RS@latin.po
index d086191fced5..788d18260e70 100644
--- a/po/sr_RS@latin.po
+++ b/po/sr_RS@latin.po
@@ -87,7 +87,7 @@ msgstr "&Izmeni..."
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr "&Ukloni"
@@ -124,7 +124,7 @@ msgstr "Podrška"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -230,7 +230,7 @@ msgstr "&Instaliraj"
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -779,7 +779,7 @@ msgid "Font St&yle:"
 msgstr ""
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "&Veličina:"
 
@@ -795,7 +795,7 @@ msgstr ""
 msgid "&Underline"
 msgstr ""
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "&Boja:"
 
@@ -991,7 +991,7 @@ msgstr ""
 msgid "C&ollate"
 msgstr ""
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr "Veli&čina:"
 
@@ -1084,7 +1084,7 @@ msgstr ""
 "#-#-#-#-#  sr_RS@latin.po (Wine)  #-#-#-#-#\n"
 "&Fajl"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr "Datoteka nije pronađena"
 
@@ -2570,7 +2570,7 @@ msgid "&File name:"
 msgstr "&Datoteka"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr "N&ađi..."
 
@@ -3966,11 +3966,19 @@ msgstr "Index"
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr "Wine Video 1 video kodek"
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr ""
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr "&Isključi"
 
@@ -4123,13 +4131,13 @@ msgstr "Nevažeći postupak poziva ili argumenta"
 msgid "Subscript out of range"
 msgstr "Potpis je van dometa"
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 #, fuzzy
 #| msgid "Out of paper; "
 msgid "Out of stack space"
 msgstr "Nema papira; "
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 #, fuzzy
 msgid "Object required"
 msgstr "Očekivani objekat"
@@ -4138,25 +4146,25 @@ msgstr "Očekivani objekat"
 msgid "Automation server can't create object"
 msgstr "Automatizovani server ne može da stvori objekat"
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr "Objekat ne podržava ovo svojstvo ili metodu"
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr "Objekat ne podržava ovu radnju"
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr "Argument je obavezan"
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 #, fuzzy
 #| msgid "Object Class Violation"
 msgid "Object not a collection"
 msgstr "Kršenje klase objekata"
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr "Greška u sintaksi"
 
@@ -4164,31 +4172,31 @@ msgstr "Greška u sintaksi"
 msgid "Expected ';'"
 msgstr "Očekivano ';'"
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr "Očekivano '('"
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr "Očekivano ')'"
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected '='"
 msgstr "Očekivano ';'"
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 #, fuzzy
 msgid "Invalid character"
 msgstr ""
 "Greška: uneseni su nepoznati ili neispravni parametri naredbene linije.\n"
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr "Nezavršena konstanta niski"
 
@@ -4237,7 +4245,7 @@ msgstr ""
 msgid "Microsoft JScript runtime error"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 #, fuzzy
 msgid "Unknown runtime error"
 msgstr "Nepoznat izvor"
@@ -4264,7 +4272,7 @@ msgstr "„[object]“ nije vremenski objekat"
 msgid "Object expected"
 msgstr "Očekivani objekat"
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr "Nedozvoljen zadatak"
 
@@ -4499,11 +4507,11 @@ msgstr "Datoteka nije pronađena.\n"
 msgid "Path not found.\n"
 msgstr "%s putanja nije pronađena.\n"
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr ""
 
@@ -5956,7 +5964,7 @@ msgstr "Instalacioni programi.\n"
 msgid "File has a user-mapped section.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 #, fuzzy
 msgid "Connection refused.\n"
 msgstr "Povezivanje na %s.\n"
@@ -7691,80 +7699,84 @@ msgid "This network connection does not exist.\n"
 msgstr "Datoteka ne postoji.\n"
 
 #: dlls/kernelbase/winerror.mc:3750
+msgid "File or directory is not a reparse point.\n"
+msgstr ""
+
+#: dlls/kernelbase/winerror.mc:3755
 #, fuzzy
 msgid "Call interrupted.\n"
 msgstr "Nije jos u programu.\n"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 #, fuzzy
 msgid "Invalid file handle.\n"
 msgstr "Neispravna sintaksa.\n"
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 #, fuzzy
 msgid "Invalid pointer address.\n"
 msgstr "IP adresa.\n"
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 #, fuzzy
 msgid "Invalid argument.\n"
 msgstr "Neispravna sintaksa.\n"
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 #, fuzzy
 msgid "Connection reset by peer.\n"
 msgstr "Povezivanje na %s.\n"
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 #, fuzzy
 msgid "Host not found.\n"
 msgstr "%s putanja nije pronađena.\n"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 #, fuzzy
 msgid "Nonauthoritative host not found.\n"
 msgstr "Datoteka nije pronađena.\n"
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 #, fuzzy
 #| msgid "A printer error occurred."
 msgid "Nonrecoverable error.\n"
 msgstr "Došlo je do greške u štampaču."
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 #, fuzzy
 #| msgid "Not implemented"
 msgid "Not implemented.\n"
 msgstr "Nije jos u programu"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 #, fuzzy
 msgid "Call failed.\n"
 msgstr "Otvori datoteku.\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 #, fuzzy
 msgid "Unable to find matching object.\n"
 msgstr "Neispravna sintaksa.\n"
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 msgid "No Signature found in file.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 #, fuzzy
 msgid "Invalid call.\n"
 msgstr "Neispravni akreditivi.\n"
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 #, fuzzy
 msgid "Resource is not currently available.\n"
 msgstr "Nedostupno"
@@ -8810,7 +8822,7 @@ msgstr "Hiperveza"
 msgid "Hyperlink Information"
 msgstr "Podaci o hipervezi"
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr "&Ukucaj:"
 
@@ -10564,7 +10576,7 @@ msgid "b"
 msgstr "b"
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr "tpi"
@@ -11122,7 +11134,7 @@ msgstr "&Otvori:"
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr "&Nađi..."
 
@@ -11224,7 +11236,7 @@ msgstr "Originalna lokacija"
 msgid "Date deleted"
 msgstr "Datum brisanja"
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 #, fuzzy
 msgctxt "display name"
@@ -13966,260 +13978,332 @@ msgstr ""
 msgid "Type mismatch"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 msgid "Device I/O error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 #, fuzzy
 msgid "File already exists"
 msgstr "Port %s već postoji.\n"
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 msgid "Disk full"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 #, fuzzy
 msgid "Too many files"
 msgstr "Otvori datoteku"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 msgid "Permission denied"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 #, fuzzy
 msgid "Path not found"
 msgstr "%s putanja nije pronađena.\n"
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 msgid "Object variable not set"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 #, fuzzy
 msgid "For loop not initialized"
 msgstr "%s putanja nije pronađena.\n"
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 #, fuzzy
 msgid "Invalid use of Null"
 msgstr "Neispravni akreditivi.\n"
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 #, fuzzy
 #| msgid "Automation server can't create object"
 msgid "ActiveX component can't create object"
 msgstr "Automatizovani server ne može da stvori objekat"
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Class doesn't support Automation"
 msgstr "Objekat ne podržava ovu radnju"
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Object doesn't support named arguments"
 msgstr "Objekat ne podržava ovu radnju"
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Object doesn't support current locale setting"
 msgstr "Objekat ne podržava ovu radnju"
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 #, fuzzy
 msgid "Named argument not found"
 msgstr "Datoteka nije pronađena.\n"
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 #, fuzzy
 #| msgid "Specified control was not found in message"
 msgid "Specified DLL function not found"
 msgstr "Navedena kontrola nije pronađena u poruci"
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 #, fuzzy
 #| msgid "'|' is undefined"
 msgid "Variable is undefined"
 msgstr "„|“ nije određeno"
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+#, fuzzy
+msgid "Class not defined"
+msgstr "Putanja ne postoji.\n"
+
+#: dlls/vbscript/vbscript.rc:71
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected ']'"
+msgstr "Očekivano ';'"
+
+#: dlls/vbscript/vbscript.rc:75
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'If'"
+msgstr "Očekivano ';'"
+
+#: dlls/vbscript/vbscript.rc:76
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'To'"
 msgstr "Očekivano ';'"
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'End'"
 msgstr "Očekivano ';'"
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Function'"
+msgstr "Očekivano ';'"
+
+#: dlls/vbscript/vbscript.rc:79
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Sub'"
+msgstr "Očekivano ';'"
+
+#: dlls/vbscript/vbscript.rc:80
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Then'"
 msgstr "Očekivano ';'"
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Wend'"
 msgstr "Očekivano ';'"
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Loop'"
 msgstr "Očekivano ';'"
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Next'"
 msgstr "Očekivano ';'"
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Case'"
 msgstr "Očekivano ';'"
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Select'"
+msgstr "Očekivano ';'"
+
+#: dlls/vbscript/vbscript.rc:86
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected statement"
 msgstr "Očekivano ';'"
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected end of statement"
 msgstr "Očekivano ';'"
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 #, fuzzy
 #| msgid "Unterminated string constant"
 msgid "Expected integer constant"
 msgstr "Nezavršena konstanta niski"
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'With'"
+msgstr "Očekivano ';'"
+
+#: dlls/vbscript/vbscript.rc:90
+msgid "Identifier too long"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:92
 #, fuzzy
 msgid "Invalid number"
 msgstr "Neispravna sintaksa.\n"
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+#, fuzzy
+msgid "Invalid use of 'Me' keyword"
+msgstr "Neispravni akreditivi.\n"
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 #, fuzzy
 msgid "Invalid 'exit' statement"
 msgstr "Neispravna sintaksa.\n"
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 msgid "Name redefined"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 #, fuzzy
 #| msgid "Unterminated string constant"
 msgid "Expected literal constant"
 msgstr "Nezavršena konstanta niski"
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'In'"
 msgstr "Očekivano ';'"
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Class'"
 msgstr "Očekivano ';'"
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Property'"
+msgstr "Očekivano ';'"
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Unexpected 'Next'"
 msgstr "Očekivano ';'"
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr ""
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr "Wine"
 
@@ -15232,7 +15316,7 @@ msgid "Digi&tal"
 msgstr "&Digitalni"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr ""
@@ -16061,6 +16145,39 @@ msgstr ""
 msgid "This is a test"
 msgstr ""
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr ""
@@ -19641,7 +19758,7 @@ msgstr ""
 msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr "Wine postavke u %s se ažuriraju. Molimo, sačekajte..."
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -19649,25 +19766,25 @@ msgid ""
 "option) any later version."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 #, fuzzy
 msgid "Windows registration information"
 msgstr " Informacija o registraciji Windowsa "
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr "&Vlasnik:"
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr "Organi&zacija:"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 #, fuzzy
 msgid "Application settings"
 msgstr " Podešavanje aplikacije "
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 #, fuzzy
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
@@ -19678,60 +19795,60 @@ msgstr ""
 "za Biblioteke i Grafika tabove da dozvoli sistemske promene ili za "
 "podešavanje aplikacija u istim tabovima."
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 #, fuzzy
 #| msgid "&Add application..."
 msgid "Add appli&cation..."
 msgstr "&Dodaj aplikaciju..."
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr "&Ukloni aplikaciju"
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr "&Verzija Windowsa:"
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 #, fuzzy
 msgid "Window settings"
 msgstr " Podešavanje prozora "
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr "Dozvoli temi da &ukrasi prozor"
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr "Dozvoli &menadžeru prozora da upravlja prozorom"
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr "&Emulacija veštačkog desktopa"
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr "Desktop &veličina:"
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 #, fuzzy
 msgid "Screen resolution"
 msgstr " Rezolucija &Ekrana "
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr "Ovo je osnovni tekst 10 Tahoma"
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 #, fuzzy
 msgid "DLL overrides"
 msgstr " DLL Podešavanja "
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
@@ -19740,60 +19857,60 @@ msgstr ""
 "Biblioteke mogu biti podešene zasebno da budu ili builtin (omogućene od Wine-"
 "a) ili native (uzete od Windowsa ili od aplikacije)."
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr "&Novo podešavanje biblioteke:"
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr "Postojeća &podešavanja:"
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 msgid "&Edit..."
 msgstr "&Izmeni..."
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr "Izmeni podešavanje"
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 #, fuzzy
 msgid "Load order"
 msgstr " Redosled učitavanja "
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr "&Builtin (Wine)"
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr "&Native (Windows)"
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 #, fuzzy
 #| msgid "Bui&ltin then Native"
 msgid "Buil&tin then Native"
 msgstr "Bui&ltin pa Native"
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr "Nati&ve pa Builtin"
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr "Izaberi slovo diska"
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 #, fuzzy
 #| msgid "Wine configuration"
 msgid "Drive configuration"
 msgstr "Wine konfiguracija"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 #, fuzzy
 #| msgid ""
 #| "Failed to connect to the mount manager, the drive configuration cannot be "
@@ -19805,127 +19922,127 @@ msgstr ""
 "Uspelo povezivanje sa mount menadžerom, disk konfiguracija se ne može "
 "izmeniti."
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 #, fuzzy
 #| msgid "&Add..."
 msgid "A&dd..."
 msgstr "&Dodaj..."
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr "&Putanja:"
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 #, fuzzy
 #| msgid "Show &Advanced"
 msgid "Show Advan&ced"
 msgstr "Pokaži &Napredno"
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr "Na&prava:"
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr "Na&đi..."
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr "&Naziv:"
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr "S&erijski:"
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 #, fuzzy
 #| msgid "Show &dot files"
 msgid "&Show dot files"
 msgstr "Prikaži &dot fajlove"
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr "&Probaj zvuk"
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 msgid "MIDI output device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 #, fuzzy
 #| msgid "Wine configuration"
 msgid "Speaker configuration"
 msgstr "Wine konfiguracija"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 #, fuzzy
 msgid "Appearance"
 msgstr " Izgled "
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr "&Tema:"
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 #, fuzzy
 #| msgid "&Theme:"
 msgid "&WinRT theme:"
 msgstr "&Tema:"
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr "&Instaliraj teme..."
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr "B&oja:"
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 #, fuzzy
 msgid "Folders"
 msgstr "Fascikla:"
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr "&Veza do:"
 
@@ -20015,29 +20132,33 @@ msgid "(System default)"
 msgstr "Sistemska putanja"
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:91
+msgid "5.1 Surround"
+msgstr ""
+
+#: programs/winecfg/winecfg.rc:92
 #, fuzzy
 #| msgid "graphic"
 msgid "Quadraphonic"
 msgstr "grafika"
 
-#: programs/winecfg/winecfg.rc:92
+#: programs/winecfg/winecfg.rc:93
 msgid "Stereo"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:93
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 #, fuzzy
 msgid "Light"
 msgstr "Desna ivica"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr ""
 
@@ -20166,127 +20287,127 @@ msgstr ""
 "\n"
 "Kliknite 'Dodaj' u diskovi tabu da napravite!\n"
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr "Kontrole pozadine"
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr "Kontrole teksta"
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr "Pozadina menija"
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr "Tekst menija"
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr "Odabir pozadine"
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr "Odabir teksta"
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr "Tooltip pozadina"
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr "Pozadina prozora"
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr "Text Prozora"
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 msgid "Active Title Bar"
 msgstr "Aktivni nazivni Bar"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr "Aktivni nazivni Text"
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr "Neaktivni nazivni Bar"
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr "Neaktivni nazivni Text"
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr "Poruka Box Text"
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr "Radni prostor aplikacije"
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr "Ram prozora"
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr "Aktivna ivica"
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr "Neaktivna ivica"
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr "Kontrola senke"
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr "Sivi Text"
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr "Kontrola odabranog"
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr "Kontrola mracne senke"
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr "Kontrola svetla"
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr "Kontrola alternativne pozadine"
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr "Aktivni nazivni bar Gradient"
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr "Neaktivni nazivni bar Gradient"
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr "Meni osvetljenog"
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr "Meni Bar"
 
diff --git a/po/sv.po b/po/sv.po
index d4910b0c7376..d3b4397b829c 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -88,7 +88,7 @@ msgstr "&Ändra..."
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr "Ta &bort"
@@ -125,7 +125,7 @@ msgstr "Supportinformation"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -231,7 +231,7 @@ msgstr "&Installera"
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -731,7 +731,7 @@ msgid "Font St&yle:"
 msgstr "Typsnittss&til:"
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "&Storlek:"
 
@@ -747,7 +747,7 @@ msgstr "&Genomstruken"
 msgid "&Underline"
 msgstr "&Understruken"
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "&Färg:"
 
@@ -926,7 +926,7 @@ msgstr "Antal k&opior:"
 msgid "C&ollate"
 msgstr "&Sortera"
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr "St&orlek:"
 
@@ -1004,7 +1004,7 @@ msgstr "Filnamn:"
 msgid "Files of type:"
 msgstr "Filformat:"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr "Kunde inte hitta filen"
 
@@ -2466,7 +2466,7 @@ msgid "&File name:"
 msgstr "&Filnamn:"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr "B&läddra..."
 
@@ -3865,11 +3865,19 @@ msgstr "Index"
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr "Wine Video 1 videokodek"
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr "Joysticks"
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr "&Inaktivera"
 
@@ -4030,13 +4038,13 @@ msgstr "Ogiltigt funktionsanrop eller argument"
 msgid "Subscript out of range"
 msgstr "Index utanför giltigt intervall"
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 #, fuzzy
 #| msgid "Out of paper; "
 msgid "Out of stack space"
 msgstr "Slut på papper; "
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr "Objekt krävs"
 
@@ -4044,23 +4052,23 @@ msgstr "Objekt krävs"
 msgid "Automation server can't create object"
 msgstr "Automationsservern kunde inte skapa objekt"
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr "Objektet stöder inte denna egenskap eller metod"
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr "Objektet stöder inte denna handling"
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr "Argumentet är inte valfritt"
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 msgid "Object not a collection"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr "Syntaxfel"
 
@@ -4068,27 +4076,27 @@ msgstr "Syntaxfel"
 msgid "Expected ';'"
 msgstr "';' förväntades"
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr "'(' förväntades"
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr "')' förväntades"
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr "Identifierare förväntades"
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 msgid "Expected '='"
 msgstr "'=' förväntades"
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 msgid "Invalid character"
 msgstr "Ogiltigt tecken"
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr "Oterminerad strängkonstant"
 
@@ -4132,7 +4140,7 @@ msgstr ""
 msgid "Microsoft JScript runtime error"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 #, fuzzy
 #| msgid "Unknown error"
 msgid "Unknown runtime error"
@@ -4160,7 +4168,7 @@ msgstr "'[object]' är inte ett datumobjekt"
 msgid "Object expected"
 msgstr "Objekt förväntades"
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr "Ogiltig tilldelning"
 
@@ -4392,11 +4400,11 @@ msgstr "Filen hittades inte.\n"
 msgid "Path not found.\n"
 msgstr "Sökvägen hittades inte.\n"
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr "För många öppna filer.\n"
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr "Åtkomst nekad.\n"
 
@@ -5748,7 +5756,7 @@ msgstr "Operationen avbröts av en användare.\n"
 msgid "File has a user-mapped section.\n"
 msgstr "Filen har en användarmappad sektion.\n"
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr "Anslutning nekades.\n"
 
@@ -7334,89 +7342,95 @@ msgstr "Nätverksanslutningen existerar inte.\n"
 
 #: dlls/kernelbase/winerror.mc:3750
 #, fuzzy
+#| msgid "File or directory corrupt.\n"
+msgid "File or directory is not a reparse point.\n"
+msgstr "Fil eller katalog korrupt.\n"
+
+#: dlls/kernelbase/winerror.mc:3755
+#, fuzzy
 #| msgid "Invalid at interrupt time.\n"
 msgid "Call interrupted.\n"
 msgstr "Ogiltig operation vid avbrott.\n"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 #, fuzzy
 #| msgid "Invalid handle.\n"
 msgid "Invalid file handle.\n"
 msgstr "Ogiltig referens.\n"
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 #, fuzzy
 #| msgid "Invalid network address.\n"
 msgid "Invalid pointer address.\n"
 msgstr "Ogiltig nätverksadress.\n"
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 #, fuzzy
 #| msgid "Invalid name.\n"
 msgid "Invalid argument.\n"
 msgstr "Ogiltigt namn.\n"
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 msgid "Connection reset by peer.\n"
 msgstr "Anslutningen återställdes.\n"
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 #, fuzzy
 #| msgid "Point not found.\n"
 msgid "Host not found.\n"
 msgstr "Punkten hittades inte.\n"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 #, fuzzy
 #| msgid "File not found.\n"
 msgid "Nonauthoritative host not found.\n"
 msgstr "Filen hittades inte.\n"
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 #, fuzzy
 #| msgid "A printer error occurred."
 msgid "Nonrecoverable error.\n"
 msgstr "Ett skrivarfel inträffade."
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 #, fuzzy
 #| msgid "Not implemented"
 msgid "Not implemented.\n"
 msgstr "Ej implementerat"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 #, fuzzy
 #| msgid "RPC call failed.\n"
 msgid "Call failed.\n"
 msgstr "RPC-anrop misslyckades.\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 #, fuzzy
 #| msgid "Unable to unload media.\n"
 msgid "Unable to find matching object.\n"
 msgstr "Kunde inte mata ut media.\n"
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 #, fuzzy
 #| msgid "Message 0x%1 not found in file %2.\n"
 msgid "No Signature found in file.\n"
 msgstr "Meddelande 0x%1 ej funnet i fil %2.\n"
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 #, fuzzy
 #| msgid "Invalid level.\n"
 msgid "Invalid call.\n"
 msgstr "Ogiltig nivå.\n"
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 #, fuzzy
 #| msgid "Help not available."
 msgid "Resource is not currently available.\n"
@@ -8596,7 +8610,7 @@ msgstr "Hyperlänk"
 msgid "Hyperlink Information"
 msgstr "Länkinformation"
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr "&Typ:"
 
@@ -10286,7 +10300,7 @@ msgid "b"
 msgstr "b"
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr "dpi"
@@ -10824,7 +10838,7 @@ msgstr "&Öppna:"
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr "&Bläddra..."
 
@@ -10924,7 +10938,7 @@ msgstr "Ursprunglig plats"
 msgid "Date deleted"
 msgstr "Borttagningsdatum"
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -13881,278 +13895,354 @@ msgstr "Division med noll-fel.\n"
 msgid "Type mismatch"
 msgstr "Datatyperna överensstämmer inte.\n"
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 #, fuzzy
 #| msgid "I/O device error.\n"
 msgid "Device I/O error"
 msgstr "I/O-enhetsfel.\n"
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 #, fuzzy
 #| msgid "File already exists.\n"
 msgid "File already exists"
 msgstr "Filen existerar redan.\n"
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 #, fuzzy
 #| msgid "Disk full.\n"
 msgid "Disk full"
 msgstr "Disken är full.\n"
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 #, fuzzy
 #| msgid "Too many open files.\n"
 msgid "Too many files"
 msgstr "För många öppna filer.\n"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 #, fuzzy
 #| msgid "Access denied.\n"
 msgid "Permission denied"
 msgstr "Åtkomst nekad.\n"
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 #, fuzzy
 #| msgid "Path not found.\n"
 msgid "Path not found"
 msgstr "Sökvägen hittades inte.\n"
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 #, fuzzy
 #| msgid "(value not set)"
 msgid "Object variable not set"
 msgstr "(värde ej angivet)"
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 #, fuzzy
 #| msgid "Object UUID not found.\n"
 msgid "For loop not initialized"
 msgstr "Objekt-UUID ej funnet.\n"
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 #, fuzzy
 #| msgid "Invalid user buffer.\n"
 msgid "Invalid use of Null"
 msgstr "Ogiltig användarbuffert.\n"
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 #, fuzzy
 #| msgid "Automation server can't create object"
 msgid "ActiveX component can't create object"
 msgstr "Automationsservern kunde inte skapa objekt"
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Class doesn't support Automation"
 msgstr "Objektet stöder inte denna handling"
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Object doesn't support named arguments"
 msgstr "Objektet stöder inte denna handling"
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 #, fuzzy
 #| msgid "Object doesn't support this action"
 msgid "Object doesn't support current locale setting"
 msgstr "Objektet stöder inte denna handling"
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 #, fuzzy
 #| msgid "Element not found.\n"
 msgid "Named argument not found"
 msgstr "Elementet hittades inte.\n"
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 #, fuzzy
 #| msgid "Sector not found.\n"
 msgid "Specified DLL function not found"
 msgstr "Sektor hittades inte.\n"
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 #, fuzzy
 #| msgid "'|' is undefined"
 msgid "Variable is undefined"
 msgstr "'|' är odefinierat"
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+#, fuzzy
+#| msgid "Class does not exist.\n"
+msgid "Class not defined"
+msgstr "Klass existerar inte.\n"
+
+#: dlls/vbscript/vbscript.rc:71
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected ']'"
+msgstr "';' förväntades"
+
+#: dlls/vbscript/vbscript.rc:75
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'If'"
+msgstr "';' förväntades"
+
+#: dlls/vbscript/vbscript.rc:76
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'To'"
 msgstr "';' förväntades"
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'End'"
 msgstr "'@end' förväntades"
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Function'"
+msgstr "';' förväntades"
+
+#: dlls/vbscript/vbscript.rc:79
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Sub'"
+msgstr "';' förväntades"
+
+#: dlls/vbscript/vbscript.rc:80
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'Then'"
 msgstr "'@end' förväntades"
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'Wend'"
 msgstr "'@end' förväntades"
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Loop'"
 msgstr "';' förväntades"
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Next'"
 msgstr "';' förväntades"
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Case'"
 msgstr "';' förväntades"
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Select'"
+msgstr "';' förväntades"
+
+#: dlls/vbscript/vbscript.rc:86
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected statement"
 msgstr "'@end' förväntades"
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 #, fuzzy
 #| msgid "Expected an operand.\n"
 msgid "Expected end of statement"
 msgstr "En operand förväntades.\n"
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 #, fuzzy
 #| msgid "Unterminated string constant"
 msgid "Expected integer constant"
 msgstr "Oterminerad strängkonstant"
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'With'"
+msgstr "';' förväntades"
+
+#: dlls/vbscript/vbscript.rc:90
+#, fuzzy
+#| msgid "Secret too long.\n"
+msgid "Identifier too long"
+msgstr "Hemligheten för lång.\n"
+
+#: dlls/vbscript/vbscript.rc:92
 #, fuzzy
 #| msgid "Invalid flag number.\n"
 msgid "Invalid number"
 msgstr "Ogiltigt flaggnummer.\n"
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+#, fuzzy
+#| msgid "Invalid user buffer.\n"
+msgid "Invalid use of 'Me' keyword"
+msgstr "Ogiltig användarbuffert.\n"
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 #, fuzzy
 #| msgid "Invalid printer state.\n"
 msgid "Invalid 'exit' statement"
 msgstr "Ogiltigt skrivartillstånd.\n"
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 #, fuzzy
 #| msgid "Label redefined"
 msgid "Name redefined"
 msgstr "Etiketten är redan definierat"
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 #, fuzzy
 #| msgid "Expected an operator.\n"
 msgid "Expected literal constant"
 msgstr "Operator förväntades.\n"
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'In'"
 msgstr "';' förväntades"
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Class'"
 msgstr "';' förväntades"
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Property'"
+msgstr "';' förväntades"
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Unexpected 'Next'"
 msgstr "';' förväntades"
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr ""
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr "Wine"
 
@@ -15289,7 +15379,7 @@ msgid "Digi&tal"
 msgstr "Digi&tal"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "T&ypsnitt..."
@@ -16320,6 +16410,41 @@ msgstr "Varje bokstav är %1!u! bildpunkter bred och %2!u! bildpunkter hög"
 msgid "This is a test"
 msgstr "Det här är ett test"
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+#, fuzzy
+#| msgid "Error: Could not find process \"%1\".\n"
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr "Fel: Kunde inte hitta processen \"%1\".\n"
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr "DirectX-diagnostikverktyg"
@@ -19888,7 +20013,7 @@ msgstr ""
 msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr "Wine-inställningarna i %s uppdateras, var god vänta..."
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -19900,23 +20025,23 @@ msgstr ""
 "publicerad av Free Software Foundation, antingen version 2.1 eller (om du så "
 "vill) någon senare version."
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 msgid "Windows registration information"
 msgstr "Registreringsinformation för Windows"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr "Ä&gare:"
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr "Organi&sation:"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr "Programinställningar"
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
@@ -19927,55 +20052,55 @@ msgstr ""
 "inställningar i de flikarna också, antingen systemövergripande eller per "
 "program."
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 msgid "Add appli&cation..."
 msgstr "&Lägg till program..."
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr "&Ta bort program"
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr "&Windows-version:"
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr "Fönsterinställningar"
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr "Fånga &musen automatiskt i helskärmsfönster"
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr "Tillåt fönsterhanteraren att &dekorera fönstren"
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr "Tillåt &fönsterhanteraren att styra fönstren"
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr "Emulera ett virtuellt skriv&bord"
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr "Storlek på &skrivbord:"
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr "Skärmupplösning"
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr "Denna exempeltext använder 10-punkters Tahoma"
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr "DLL-åsidosättningar"
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
@@ -19985,55 +20110,55 @@ msgstr ""
 "(tillhandahålls av Wine) eller ursprungliga (tagna från Windows eller "
 "tillhandahålls av programmet)."
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr "&Ny åsidosättning för bibliotek:"
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr "&Lägg till"
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr "Befintliga &åsidosättningar:"
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 msgid "&Edit..."
 msgstr "R&edigera..."
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr "Redigera åsidosättning"
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr "Inläsningsordning"
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr "&Inbyggd (Wine)"
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr "&Ursprunglig (Windows)"
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 msgid "Buil&tin then Native"
 msgstr "Inb&yggd sedan Ursprunglig"
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr "Urs&prunglig sedan Inbyggd"
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr "Välj enhetsbokstav"
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 msgid "Drive configuration"
 msgstr "Enhetskonfiguration"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 #, fuzzy
 #| msgid ""
 #| "Failed to connect to the mount manager, the drive configuration cannot be "
@@ -20045,119 +20170,119 @@ msgstr ""
 "Misslyckades med att ansluta till monteringshanteraren. "
 "Enhetskonfigurationen kan inte redigeras."
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 msgid "A&dd..."
 msgstr "&Lägg till..."
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr "&Sökväg:"
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 msgid "Show Advan&ced"
 msgstr "Visa &avancerat"
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr "&Enhet:"
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr "B&läddra..."
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr "Et&ikett:"
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr "Se&rienr:"
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 msgid "&Show dot files"
 msgstr "Visa &punktfiler"
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr "Diagnostisera drivrutin"
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr "&Testa ljud"
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr "Standardvärden"
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr "Utgångsenhet:"
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr "Utgångsenhet för röster:"
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr "Ingångsenhet:"
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr "Ingångsenhet för röster:"
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 #, fuzzy
 #| msgid "Output device:"
 msgid "MIDI output device:"
 msgstr "Utgångsenhet:"
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 msgid "Speaker configuration"
 msgstr "Högtalarkonfiguration"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr "Högtalare:"
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr "Utseende"
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr "&Tema:"
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 #, fuzzy
 #| msgid "&Theme:"
 msgid "&WinRT theme:"
 msgstr "&Tema:"
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr "&Installera tema..."
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr "Ob&jekt:"
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr "Fä&rg:"
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr "Mappar"
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr "&Länka till:"
 
@@ -20238,28 +20363,34 @@ msgid "(System default)"
 msgstr "(Systemstandard)"
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+#, fuzzy
+#| msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr "5.1 surround"
 
 #: programs/winecfg/winecfg.rc:91
+msgid "5.1 Surround"
+msgstr "5.1 surround"
+
+#: programs/winecfg/winecfg.rc:92
 msgid "Quadraphonic"
 msgstr "4-kanalsstereo"
 
-#: programs/winecfg/winecfg.rc:92
+#: programs/winecfg/winecfg.rc:93
 msgid "Stereo"
 msgstr "Stereo"
 
-#: programs/winecfg/winecfg.rc:93
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr "Mono"
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 #, fuzzy
 #| msgid "Right"
 msgid "Light"
 msgstr "Högerställt"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr ""
 
@@ -20382,127 +20513,127 @@ msgstr ""
 "\n"
 "Kom ihåg att klicka på ‘Lägg till’ i fliken Enheter för att skapa en!\n"
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr "Bakgrund i kontroller"
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr "Text i kontroller"
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr "Menybakgrund"
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr "Menytext"
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr "Rullningslist"
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr "Bakgrund för markering"
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr "Text för markering"
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr "Bakgrund för verktygstips"
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr "Text för verktygstips"
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr "Fönsterbakgrund"
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr "Fönstertext"
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 msgid "Active Title Bar"
 msgstr "Aktiv namnlist"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr "Aktiv titeltext"
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr "Inaktiv namnlist"
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr "Inaktiv titeltext"
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr "Text i meddelandefönster"
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr "Arbetsyta i program"
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr "Fönsterram"
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr "Aktiv kant"
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr "Inaktiv kant"
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr "Skugga i kontroller"
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr "Grå text"
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr "Markering i kontroller"
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr "Mörk skugga i kontroller"
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr "Ljus i kontroller"
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr "Alternativ bakgrund i kontroller"
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr "Hovrat föremål"
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr "Gradient för aktiv namnlist"
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr "Gradient för inaktiv namnlist"
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr "Menymarkering"
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr "Menyrad"
 
diff --git a/po/ta.po b/po/ta.po
index 1609b9646c02..84164e09acdd 100644
--- a/po/ta.po
+++ b/po/ta.po
@@ -85,7 +85,7 @@ msgstr "மாற்று... (&M)"
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr "அகற்று (&R)"
@@ -122,7 +122,7 @@ msgstr "ஆதரவு தகவல்"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -228,7 +228,7 @@ msgstr "நிறுவு (&I)"
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -724,7 +724,7 @@ msgid "Font St&yle:"
 msgstr "எழுத்துரு வகை (&y):"
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "அளவு (&S):"
 
@@ -741,7 +741,7 @@ msgstr "வேலைநிறுத்தம் (&k)"
 msgid "&Underline"
 msgstr "அடிக்கோடு (&U)"
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "நிறம் (&C):"
 
@@ -920,7 +920,7 @@ msgstr "பிரதிகளின் (&c) எண்ணிக்கை:"
 msgid "C&ollate"
 msgstr "தொகுக்கவும் (&o)"
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr "அளவு (&z):"
 
@@ -998,7 +998,7 @@ msgstr "கோப்பு பெயர்:"
 msgid "Files of type:"
 msgstr "வகையின் கோப்புக்கள்:"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr "கோப்பு கிடைக்கவில்லை"
 
@@ -2447,7 +2447,7 @@ msgid "&File name:"
 msgstr ""
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr ""
 
@@ -3752,11 +3752,19 @@ msgstr ""
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr "Wine வீடியோ 1 வீடியோ கோடெக்"
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr ""
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr ""
 
@@ -3891,11 +3899,11 @@ msgstr ""
 msgid "Subscript out of range"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 msgid "Out of stack space"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr ""
 
@@ -3903,23 +3911,23 @@ msgstr ""
 msgid "Automation server can't create object"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 msgid "Object not a collection"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr ""
 
@@ -3927,27 +3935,27 @@ msgstr ""
 msgid "Expected ';'"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 msgid "Expected '='"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 msgid "Invalid character"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr ""
 
@@ -3991,7 +3999,7 @@ msgstr ""
 msgid "Microsoft JScript runtime error"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 msgid "Unknown runtime error"
 msgstr ""
 
@@ -4015,7 +4023,7 @@ msgstr ""
 msgid "Object expected"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr ""
 
@@ -4221,11 +4229,11 @@ msgstr ""
 msgid "Path not found.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr ""
 
@@ -5577,7 +5585,7 @@ msgstr ""
 msgid "File has a user-mapped section.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr ""
 
@@ -7162,66 +7170,70 @@ msgid "This network connection does not exist.\n"
 msgstr ""
 
 #: dlls/kernelbase/winerror.mc:3750
-msgid "Call interrupted.\n"
+msgid "File or directory is not a reparse point.\n"
 msgstr ""
 
 #: dlls/kernelbase/winerror.mc:3755
+msgid "Call interrupted.\n"
+msgstr ""
+
+#: dlls/kernelbase/winerror.mc:3760
 msgid "Invalid file handle.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 msgid "Invalid pointer address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 msgid "Invalid argument.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 msgid "Connection reset by peer.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 msgid "Host not found.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 msgid "Nonauthoritative host not found.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 msgid "Nonrecoverable error.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 msgid "Not implemented.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 msgid "Call failed.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 msgid "Unable to find matching object.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 msgid "No Signature found in file.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 msgid "Invalid call.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 msgid "Resource is not currently available.\n"
 msgstr ""
 
@@ -8182,7 +8194,7 @@ msgstr ""
 msgid "Hyperlink Information"
 msgstr ""
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr ""
 
@@ -9737,7 +9749,7 @@ msgid "b"
 msgstr ""
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr ""
@@ -10271,7 +10283,7 @@ msgstr ""
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr ""
 
@@ -10357,7 +10369,7 @@ msgstr ""
 msgid "Date deleted"
 msgstr ""
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -12753,214 +12765,270 @@ msgstr ""
 msgid "Type mismatch"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 msgid "Device I/O error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 msgid "File already exists"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 msgid "Disk full"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 msgid "Too many files"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 msgid "Permission denied"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 msgid "Path not found"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 msgid "Object variable not set"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 msgid "For loop not initialized"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 msgid "Invalid use of Null"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 msgid "ActiveX component can't create object"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 msgid "Class doesn't support Automation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 msgid "Object doesn't support named arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 msgid "Object doesn't support current locale setting"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 msgid "Named argument not found"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 msgid "Specified DLL function not found"
 msgstr ""
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 msgid "Variable is undefined"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+msgid "Class not defined"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:71
+msgid "Expected ']'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:75
+msgid "Expected 'If'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:76
 msgid "Expected 'To'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 msgid "Expected 'End'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+msgid "Expected 'Function'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:79
+msgid "Expected 'Sub'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:80
 msgid "Expected 'Then'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 msgid "Expected 'Wend'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 msgid "Expected 'Loop'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 msgid "Expected 'Next'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 msgid "Expected 'Case'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+msgid "Expected 'Select'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:86
 msgid "Expected statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 msgid "Expected end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 msgid "Expected integer constant"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+msgid "Expected 'With'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:90
+msgid "Identifier too long"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:92
 #, fuzzy
 #| msgid "Invalid character(s) in path"
 msgid "Invalid number"
 msgstr "பாதையில் தவறான எழுத்து(கள்)."
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+msgid "Invalid use of 'Me' keyword"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 msgid "Invalid 'exit' statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 msgid "Name redefined"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 msgid "Expected literal constant"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 msgid "Expected 'In'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 msgid "Expected 'Class'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+msgid "Expected 'Property'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 msgid "Unexpected 'Next'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr ""
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr ""
 
@@ -13946,7 +14014,7 @@ msgid "Digi&tal"
 msgstr ""
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "எழுத்துரு... (&F)"
@@ -14735,6 +14803,39 @@ msgstr ""
 msgid "This is a test"
 msgstr ""
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr ""
@@ -18012,7 +18113,7 @@ msgstr ""
 msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -18020,247 +18121,247 @@ msgid ""
 "option) any later version."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 msgid "Windows registration information"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
 "or per-application settings in those tabs as well."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 msgid "Add appli&cation..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr "&Windows பதிப்பு:"
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
 "application)."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 msgid "&Edit..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 msgid "Buil&tin then Native"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 msgid "Drive configuration"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 msgid ""
 "Failed to connect to the mount manager; the drive configuration cannot be "
 "edited."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 msgid "A&dd..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 msgid "Show Advan&ced"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 msgid "&Show dot files"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 msgid "MIDI output device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 msgid "Speaker configuration"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 msgid "&WinRT theme:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr ""
 
@@ -18341,28 +18442,32 @@ msgid "(System default)"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:91
-msgid "Quadraphonic"
+msgid "5.1 Surround"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:92
-msgid "Stereo"
+msgid "Quadraphonic"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:93
+msgid "Stereo"
+msgstr ""
+
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 #, fuzzy
 #| msgid "&Right:"
 msgid "Light"
 msgstr "வலது (&R):"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr ""
 
@@ -18467,127 +18572,127 @@ msgid ""
 "Remember to click 'Add' in the Drives tab to create one!\n"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 msgid "Active Title Bar"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr ""
 
diff --git a/po/te.po b/po/te.po
index dfdce89321bf..5464ce82d21d 100644
--- a/po/te.po
+++ b/po/te.po
@@ -78,7 +78,7 @@ msgstr ""
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr ""
@@ -115,7 +115,7 @@ msgstr ""
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -215,7 +215,7 @@ msgstr ""
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -703,7 +703,7 @@ msgid "Font St&yle:"
 msgstr ""
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr ""
 
@@ -719,7 +719,7 @@ msgstr ""
 msgid "&Underline"
 msgstr ""
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr ""
 
@@ -896,7 +896,7 @@ msgstr ""
 msgid "C&ollate"
 msgstr ""
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr ""
 
@@ -975,7 +975,7 @@ msgstr ""
 msgid "Files of type:"
 msgstr ""
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr ""
 
@@ -2404,7 +2404,7 @@ msgid "&File name:"
 msgstr ""
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr ""
 
@@ -3720,11 +3720,19 @@ msgstr ""
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr ""
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr ""
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr ""
 
@@ -3859,11 +3867,11 @@ msgstr ""
 msgid "Subscript out of range"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 msgid "Out of stack space"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr ""
 
@@ -3871,23 +3879,23 @@ msgstr ""
 msgid "Automation server can't create object"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 msgid "Object not a collection"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr ""
 
@@ -3895,27 +3903,27 @@ msgstr ""
 msgid "Expected ';'"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 msgid "Expected '='"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 msgid "Invalid character"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr ""
 
@@ -3959,7 +3967,7 @@ msgstr ""
 msgid "Microsoft JScript runtime error"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 msgid "Unknown runtime error"
 msgstr ""
 
@@ -3983,7 +3991,7 @@ msgstr ""
 msgid "Object expected"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr ""
 
@@ -4190,11 +4198,11 @@ msgstr ""
 msgid "Path not found.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr ""
 
@@ -5547,7 +5555,7 @@ msgstr ""
 msgid "File has a user-mapped section.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr ""
 
@@ -7132,67 +7140,71 @@ msgid "This network connection does not exist.\n"
 msgstr ""
 
 #: dlls/kernelbase/winerror.mc:3750
-msgid "Call interrupted.\n"
+msgid "File or directory is not a reparse point.\n"
 msgstr ""
 
 #: dlls/kernelbase/winerror.mc:3755
+msgid "Call interrupted.\n"
+msgstr ""
+
+#: dlls/kernelbase/winerror.mc:3760
 msgid "Invalid file handle.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 msgid "Invalid pointer address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 msgid "Invalid argument.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 msgid "Connection reset by peer.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 #, fuzzy
 msgid "Host not found.\n"
 msgstr "సమాచారము (&o)"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 msgid "Nonauthoritative host not found.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 msgid "Nonrecoverable error.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 msgid "Not implemented.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 msgid "Call failed.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 msgid "Unable to find matching object.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 msgid "No Signature found in file.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 msgid "Invalid call.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 msgid "Resource is not currently available.\n"
 msgstr ""
 
@@ -8159,7 +8171,7 @@ msgstr ""
 msgid "Hyperlink Information"
 msgstr ""
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr ""
 
@@ -9706,7 +9718,7 @@ msgid "b"
 msgstr ""
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr ""
@@ -10247,7 +10259,7 @@ msgstr ""
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr ""
 
@@ -10334,7 +10346,7 @@ msgstr ""
 msgid "Date deleted"
 msgstr ""
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -12729,212 +12741,268 @@ msgstr ""
 msgid "Type mismatch"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 msgid "Device I/O error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 msgid "File already exists"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 msgid "Disk full"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 msgid "Too many files"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 msgid "Permission denied"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 msgid "Path not found"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 msgid "Object variable not set"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 msgid "For loop not initialized"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 msgid "Invalid use of Null"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 msgid "ActiveX component can't create object"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 msgid "Class doesn't support Automation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 msgid "Object doesn't support named arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 msgid "Object doesn't support current locale setting"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 msgid "Named argument not found"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 msgid "Specified DLL function not found"
 msgstr ""
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 msgid "Variable is undefined"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+msgid "Class not defined"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:71
+msgid "Expected ']'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:75
+msgid "Expected 'If'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:76
 msgid "Expected 'To'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 msgid "Expected 'End'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+msgid "Expected 'Function'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:79
+msgid "Expected 'Sub'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:80
 msgid "Expected 'Then'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 msgid "Expected 'Wend'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 msgid "Expected 'Loop'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 msgid "Expected 'Next'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 msgid "Expected 'Case'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+msgid "Expected 'Select'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:86
 msgid "Expected statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 msgid "Expected end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 msgid "Expected integer constant"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+msgid "Expected 'With'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:90
+msgid "Identifier too long"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:92
 msgid "Invalid number"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+msgid "Invalid use of 'Me' keyword"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 msgid "Invalid 'exit' statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 msgid "Name redefined"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 msgid "Expected literal constant"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 msgid "Expected 'In'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 msgid "Expected 'Class'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+msgid "Expected 'Property'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 msgid "Unexpected 'Next'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr ""
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr ""
 
@@ -13919,7 +13987,7 @@ msgid "Digi&tal"
 msgstr "డిజిటల్ (&t)"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "ఫాంట్ (&F)..."
@@ -14706,6 +14774,39 @@ msgstr ""
 msgid "This is a test"
 msgstr ""
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr ""
@@ -17975,7 +18076,7 @@ msgstr ""
 msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -17983,249 +18084,249 @@ msgid ""
 "option) any later version."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 #, fuzzy
 msgid "Windows registration information"
 msgstr "ఫాంట్... (&F)"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
 "or per-application settings in those tabs as well."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 msgid "Add appli&cation..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
 "application)."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 #, fuzzy
 msgid "&Edit..."
 msgstr "ఫాంట్... (&F)"
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 msgid "Buil&tin then Native"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 msgid "Drive configuration"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 msgid ""
 "Failed to connect to the mount manager; the drive configuration cannot be "
 "edited."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 msgid "A&dd..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 msgid "Show Advan&ced"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 msgid "&Show dot files"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 msgid "MIDI output device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 msgid "Speaker configuration"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 msgid "&WinRT theme:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr ""
 
@@ -18306,26 +18407,30 @@ msgid "(System default)"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:91
-msgid "Quadraphonic"
+msgid "5.1 Surround"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:92
-msgid "Stereo"
+msgid "Quadraphonic"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:93
+msgid "Stereo"
+msgstr ""
+
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 msgid "Light"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr ""
 
@@ -18430,128 +18535,128 @@ msgid ""
 "Remember to click 'Add' in the Drives tab to create one!\n"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 #, fuzzy
 msgid "Active Title Bar"
 msgstr "శీర్షికపట్టీ లేకుండా (&W)"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr ""
 
diff --git a/po/th.po b/po/th.po
index 0a76fb6c2d17..8ab01223308f 100644
--- a/po/th.po
+++ b/po/th.po
@@ -82,7 +82,7 @@ msgstr ""
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr ""
@@ -120,7 +120,7 @@ msgstr "รายละเอียด"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -223,7 +223,7 @@ msgstr ""
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -713,7 +713,7 @@ msgid "Font St&yle:"
 msgstr "รูปแบบต้วอักษร:"
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "ขนาด:"
 
@@ -729,7 +729,7 @@ msgstr ""
 msgid "&Underline"
 msgstr "ขีดเส้นใต้"
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "สี:"
 
@@ -909,7 +909,7 @@ msgstr "กี่สําเนา:"
 msgid "C&ollate"
 msgstr "จัดเรียงตามลําดับ"
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr "ขนาด:"
 
@@ -989,7 +989,7 @@ msgstr "แฟ้ม"
 msgid "Files of type:"
 msgstr "ตัวกรอง:"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr "ไม่พบแฟ้ม"
 
@@ -2437,7 +2437,7 @@ msgid "&File name:"
 msgstr "แฟ้ม"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr ""
 
@@ -3785,11 +3785,19 @@ msgstr ""
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr ""
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr ""
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr ""
 
@@ -3925,13 +3933,13 @@ msgstr ""
 msgid "Subscript out of range"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 #, fuzzy
 #| msgid "Out of paper; "
 msgid "Out of stack space"
 msgstr "กระดาษหมด; "
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr ""
 
@@ -3939,23 +3947,23 @@ msgstr ""
 msgid "Automation server can't create object"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 msgid "Object not a collection"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr ""
 
@@ -3963,27 +3971,27 @@ msgstr ""
 msgid "Expected ';'"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 msgid "Expected '='"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 msgid "Invalid character"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr ""
 
@@ -4028,7 +4036,7 @@ msgstr ""
 msgid "Microsoft JScript runtime error"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 #, fuzzy
 #| msgid "Unknown printer driver."
 msgid "Unknown runtime error"
@@ -4054,7 +4062,7 @@ msgstr ""
 msgid "Object expected"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr ""
 
@@ -4266,11 +4274,11 @@ msgstr "ไม่พบแฟ้ม.\n"
 msgid "Path not found.\n"
 msgstr "ไม่พบแฟ้ม.\n"
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr ""
 
@@ -5660,7 +5668,7 @@ msgstr "ผู้ใช้ยกเลิก; .\n"
 msgid "File has a user-mapped section.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr ""
 
@@ -7287,74 +7295,78 @@ msgid "This network connection does not exist.\n"
 msgstr "ไม่พบแฟ้ม.\n"
 
 #: dlls/kernelbase/winerror.mc:3750
+msgid "File or directory is not a reparse point.\n"
+msgstr ""
+
+#: dlls/kernelbase/winerror.mc:3755
 #, fuzzy
 msgid "Call interrupted.\n"
 msgstr "แฟ้ม.\n"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 msgid "Invalid file handle.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 msgid "Invalid pointer address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 msgid "Invalid argument.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 #, fuzzy
 msgid "Connection reset by peer.\n"
 msgstr "ใช้ไม่ได้ตอนนี้; .\n"
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 #, fuzzy
 msgid "Host not found.\n"
 msgstr "ไม่พบแฟ้ม.\n"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 #, fuzzy
 msgid "Nonauthoritative host not found.\n"
 msgstr "ไม่พบแฟ้ม.\n"
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 #, fuzzy
 #| msgid "A printer error occurred."
 msgid "Nonrecoverable error.\n"
 msgstr "ความปิดเครื่องพิมพ์"
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 #, fuzzy
 msgid "Not implemented.\n"
 msgstr "ไม่พบแฟ้ม"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 #, fuzzy
 msgid "Call failed.\n"
 msgstr "แฟ้ม.\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 msgid "Unable to find matching object.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 msgid "No Signature found in file.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 msgid "Invalid call.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 #, fuzzy
 msgid "Resource is not currently available.\n"
 msgstr "ใช้ไม่ได้ตอนนี้; .\n"
@@ -8362,7 +8374,7 @@ msgstr ""
 msgid "Hyperlink Information"
 msgstr "รายละเอียด"
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr ""
 
@@ -9961,7 +9973,7 @@ msgid "b"
 msgstr ""
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr ""
@@ -10506,7 +10518,7 @@ msgstr "เปิด...\tCtrl+O"
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr ""
 
@@ -10598,7 +10610,7 @@ msgstr ""
 msgid "Date deleted"
 msgstr "ลบ\tDel"
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 #, fuzzy
 msgctxt "display name"
@@ -13271,218 +13283,275 @@ msgstr ""
 msgid "Type mismatch"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 msgid "Device I/O error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 #, fuzzy
 msgid "File already exists"
 msgstr "ไม่พบแฟ้ม.\n"
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 msgid "Disk full"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 #, fuzzy
 msgid "Too many files"
 msgstr "แฟ้ม"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 msgid "Permission denied"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 #, fuzzy
 msgid "Path not found"
 msgstr "ไม่พบแฟ้ม.\n"
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 msgid "Object variable not set"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 #, fuzzy
 msgid "For loop not initialized"
 msgstr "ไม่พบแฟ้ม.\n"
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 msgid "Invalid use of Null"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 msgid "ActiveX component can't create object"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 msgid "Class doesn't support Automation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 msgid "Object doesn't support named arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 msgid "Object doesn't support current locale setting"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 #, fuzzy
 msgid "Named argument not found"
 msgstr "ไม่พบแฟ้ม.\n"
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 #, fuzzy
 msgid "Specified DLL function not found"
 msgstr "ไม่พบแฟ้ม.\n"
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 msgid "Variable is undefined"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+#, fuzzy
+msgid "Class not defined"
+msgstr "ไม่พบไดเรกทอรี.\n"
+
+#: dlls/vbscript/vbscript.rc:71
+msgid "Expected ']'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:75
+msgid "Expected 'If'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:76
 msgid "Expected 'To'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 msgid "Expected 'End'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+msgid "Expected 'Function'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:79
+msgid "Expected 'Sub'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:80
 msgid "Expected 'Then'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 msgid "Expected 'Wend'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 msgid "Expected 'Loop'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 msgid "Expected 'Next'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 msgid "Expected 'Case'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+msgid "Expected 'Select'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:86
 msgid "Expected statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 msgid "Expected end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 msgid "Expected integer constant"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+msgid "Expected 'With'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:90
+msgid "Identifier too long"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:92
 msgid "Invalid number"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+msgid "Invalid use of 'Me' keyword"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 msgid "Invalid 'exit' statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 msgid "Name redefined"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 msgid "Expected literal constant"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 msgid "Expected 'In'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 msgid "Expected 'Class'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+msgid "Expected 'Property'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 msgid "Unexpected 'Next'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr ""
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr ""
 
@@ -14477,7 +14546,7 @@ msgid "Digi&tal"
 msgstr "ดิจิตัล"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 #, fuzzy
 msgid "&Font..."
@@ -15281,6 +15350,39 @@ msgstr ""
 msgid "This is a test"
 msgstr ""
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr ""
@@ -18665,7 +18767,7 @@ msgstr ""
 msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -18673,259 +18775,259 @@ msgid ""
 "option) any later version."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 #, fuzzy
 msgid "Windows registration information"
 msgstr "รายละเอียด"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 #, fuzzy
 msgid "Organi&zation:"
 msgstr "รายละเอียด"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
 "or per-application settings in those tabs as well."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 msgid "Add appli&cation..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 #, fuzzy
 msgid "Desktop &size:"
 msgstr "พื้นที่ทำงาน"
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
 "application)."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 #, fuzzy
 msgid "&Edit..."
 msgstr "แก้ไข"
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 msgid "Buil&tin then Native"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 #, fuzzy
 msgid "Select Drive Letter"
 msgstr "เลือกทั้งหมด\tCtrl+A"
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 #, fuzzy
 msgid "Drive configuration"
 msgstr "รายละเอียด"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 msgid ""
 "Failed to connect to the mount manager; the drive configuration cannot be "
 "edited."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 msgid "A&dd..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 msgid "Show Advan&ced"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 #, fuzzy
 msgid "&Show dot files"
 msgstr "รายละเอียด"
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 #, fuzzy
 msgid "Defaults"
 msgstr "เครื่องพิมพ์ปกติ; "
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 #, fuzzy
 msgid "Output device:"
 msgstr "แฟ้ม"
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 #, fuzzy
 msgid "MIDI output device:"
 msgstr "แฟ้ม"
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 #, fuzzy
 msgid "Speaker configuration"
 msgstr "รายละเอียด"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 msgid "&WinRT theme:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 #, fuzzy
 msgid "Folders"
 msgstr "ขอบกระดาษ"
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr ""
 
@@ -19009,28 +19111,32 @@ msgid "(System default)"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:91
-msgid "Quadraphonic"
+msgid "5.1 Surround"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:92
-msgid "Stereo"
+msgid "Quadraphonic"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:93
+msgid "Stereo"
+msgstr ""
+
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 #, fuzzy
 #| msgid "&Right:"
 msgid "Light"
 msgstr "ขวา:"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr ""
 
@@ -19137,130 +19243,130 @@ msgid ""
 "Remember to click 'Add' in the Drives tab to create one!\n"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 #, fuzzy
 msgid "Controls Text"
 msgstr "เนื้อหา"
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 #, fuzzy
 msgid "Selection Text"
 msgstr "เลือกทั้งหมด\tCtrl+A"
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 #, fuzzy
 msgid "Active Title Bar"
 msgstr "แสดงแทบเมนู"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr ""
 
diff --git a/po/tr.po b/po/tr.po
index ea03b27bd19c..95b12ec52937 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -83,7 +83,7 @@ msgstr "&Değiştir..."
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr "&Kaldır"
@@ -120,7 +120,7 @@ msgstr "Destek Bilgisi"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -226,7 +226,7 @@ msgstr "&Yükle"
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -721,7 +721,7 @@ msgid "Font St&yle:"
 msgstr "Yazı Tipi Biç&imi:"
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "&Boyut:"
 
@@ -737,7 +737,7 @@ msgstr "&Üstü Çizili"
 msgid "&Underline"
 msgstr "&Altı Çizili"
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "&Renk:"
 
@@ -914,7 +914,7 @@ msgstr "&Kopya sayısı:"
 msgid "C&ollate"
 msgstr "&Harmanla"
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr "&Size:"
 
@@ -992,7 +992,7 @@ msgstr "Dosya adı:"
 msgid "Files of type:"
 msgstr "Dosya türü:"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr "Dosya bulunamadı"
 
@@ -2450,7 +2450,7 @@ msgid "&File name:"
 msgstr "&Dosya adı:"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr "&Gözat..."
 
@@ -3825,11 +3825,19 @@ msgstr "Indeo5"
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr "Indeo Video Etkileşimli sürüm 5 video codec bileşeni"
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr "Oyun Kolları"
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr "&Devre Dışı Bırak"
 
@@ -3990,11 +3998,11 @@ msgstr "Geçersiz yordam çağırımı veya değişkeni"
 msgid "Subscript out of range"
 msgstr "Alt indis kapsama dışında"
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 msgid "Out of stack space"
 msgstr "Yetersiz yığın alanı"
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr "Nesne gerekli"
 
@@ -4002,23 +4010,23 @@ msgstr "Nesne gerekli"
 msgid "Automation server can't create object"
 msgstr "Otomasyon sunucusu nesneyi oluşturamadı"
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr "Nesne bu özelliği veya yöntemi desteklemiyor"
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr "Nesne bu işlemi desteklemiyor"
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr "Değişken isteğe bağlı değil"
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 msgid "Object not a collection"
 msgstr "Nesne bir koleksiyon değil"
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr "Sözdizimi hatası"
 
@@ -4026,27 +4034,27 @@ msgstr "Sözdizimi hatası"
 msgid "Expected ';'"
 msgstr "Beklenen ';'"
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr "Beklenen '('"
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr "Beklenen ')'"
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr "Beklenen kimlik"
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 msgid "Expected '='"
 msgstr "Beklenen '='"
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 msgid "Invalid character"
 msgstr "Geçersiz karakter"
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr "Sonlandırılmamış dize sabiti"
 
@@ -4090,7 +4098,7 @@ msgstr "Microsoft JScript derleme hatası"
 msgid "Microsoft JScript runtime error"
 msgstr "Microsoft JScript çalışma zamanı hatası"
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 msgid "Unknown runtime error"
 msgstr "Bilinmeyen çalışma zamanı hatası"
 
@@ -4116,7 +4124,7 @@ msgstr "'[object]' bir tarih nesnesi değil"
 msgid "Object expected"
 msgstr "Beklenen nesne"
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr "Geçersiz atama"
 
@@ -4338,11 +4346,11 @@ msgstr "Dosya bulunamadı.\n"
 msgid "Path not found.\n"
 msgstr "Yol bulunamadı.\n"
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr "Çok fazla dosya açık.\n"
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr "Erişim engellendi.\n"
 
@@ -5694,7 +5702,7 @@ msgstr "İşlem kullanıcı tarafından iptal edildi.\n"
 msgid "File has a user-mapped section.\n"
 msgstr "Dosyada kullanıcı tarafından kullanılan bir bölüm var.\n"
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr "Bağlantı reddedildi.\n"
 
@@ -7279,68 +7287,74 @@ msgid "This network connection does not exist.\n"
 msgstr "Ağ bağlantısı mevcut değil.\n"
 
 #: dlls/kernelbase/winerror.mc:3750
+#, fuzzy
+#| msgid "File or directory corrupt.\n"
+msgid "File or directory is not a reparse point.\n"
+msgstr "Dosya veya klasör bozuk.\n"
+
+#: dlls/kernelbase/winerror.mc:3755
 msgid "Call interrupted.\n"
 msgstr "Çağrı kesildi.\n"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 msgid "Invalid file handle.\n"
 msgstr "Geçersiz dosya tanıtıcısı.\n"
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 msgid "Invalid pointer address.\n"
 msgstr "Geçersiz işaretçi adresi.\n"
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 msgid "Invalid argument.\n"
 msgstr "Geçersiz argüman.\n"
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 msgid "Connection reset by peer.\n"
 msgstr "Bağlantı eş tarafından sıfırlandı.\n"
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 msgid "Host not found.\n"
 msgstr "Ana bilgisayar bulunamadı.\n"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 msgid "Nonauthoritative host not found.\n"
 msgstr "Yetkili olmayan ana bilgisayar bulunamadı.\n"
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 msgid "Nonrecoverable error.\n"
 msgstr "Kurtarılamaz hata.\n"
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr "İsim geçerli, veri kaydı yok.\n"
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 msgid "Not implemented.\n"
 msgstr "Eklenmedi/Geliştirilmedi.\n"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 msgid "Call failed.\n"
 msgstr "Çağrı başarısız.\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 #, fuzzy
 #| msgid "Unable to unload media.\n"
 msgid "Unable to find matching object.\n"
 msgstr "Ortam çıkartılamadı.\n"
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 msgid "No Signature found in file.\n"
 msgstr "Dosyada imza bulunamadı.\n"
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 msgid "Invalid call.\n"
 msgstr "Geçersiz çağrı.\n"
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 msgid "Resource is not currently available.\n"
 msgstr "Kaynak şu an kullanılamıyor.\n"
 
@@ -8301,7 +8315,7 @@ msgstr "Bağlantı"
 msgid "Hyperlink Information"
 msgstr "Bağlantı Bilgisi"
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr "&Tür:"
 
@@ -9945,7 +9959,7 @@ msgid "b"
 msgstr "bayt"
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr "dpi"
@@ -10483,7 +10497,7 @@ msgstr "&Aç:"
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr "&Gözat..."
 
@@ -10569,7 +10583,7 @@ msgstr "Özgün konum"
 msgid "Date deleted"
 msgstr "Silinme tarihi"
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -13004,250 +13018,326 @@ msgstr "Sıfır ile bölme hatası.\n"
 msgid "Type mismatch"
 msgstr "Tür eşleşmiyor"
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 msgid "Device I/O error"
 msgstr "Aygıt G/Ç hatası"
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 msgid "File already exists"
 msgstr "Dosya zaten mevcut"
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 msgid "Disk full"
 msgstr "Disk dolu"
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 msgid "Too many files"
 msgstr "Çok fazla dosya"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 msgid "Permission denied"
 msgstr "İzin engellendi"
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr "Dosya veya dosya yolu erişim hatası"
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 msgid "Path not found"
 msgstr "Yol bulunamadı"
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 msgid "Object variable not set"
 msgstr "Nesne değişkeni belirlenmemiş"
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 #, fuzzy
 #| msgid "Object is not initialized.\n"
 msgid "For loop not initialized"
 msgstr "Nesne başlatılmadı.\n"
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 msgid "Invalid use of Null"
 msgstr "'Null' hatalı kullanılmış"
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr "Gereken geçici dosya oluşturulamıyor"
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 msgid "ActiveX component can't create object"
 msgstr "ActiveX bileşeni nesneyi oluşturamadı"
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 msgid "Class doesn't support Automation"
 msgstr "Sınıf otomasyonu desteklemiyor"
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr "Otomasyon işlemi sırasında dosya adı veya sınıf adı bulunamadı"
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 msgid "Object doesn't support named arguments"
 msgstr "Nesne isimlendirilmiş değişkenleri desteklemiyor"
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 msgid "Object doesn't support current locale setting"
 msgstr "Nesne şimdiki konum ayarını desteklemiyor"
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 msgid "Named argument not found"
 msgstr "İsimlendirilmiş değişken bulunamadı"
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr "Hatalı değişken sayısı veya geçersiz özellik ataması"
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 msgid "Specified DLL function not found"
 msgstr "Belirtilen DLL fonksiyonu bulunamadı"
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr "Değişken, VBScript'te desteklenmeyeb bir otomasyon türü kullanıyor"
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr "Uzak sunucu makinesi yok veya kullanılamıyor"
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 #, fuzzy
 #| msgid "'|' is undefined"
 msgid "Variable is undefined"
 msgstr "'|' tanımsız"
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr "Geçersiz veya yetersiz referans"
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+#, fuzzy
+#| msgid "Class does not exist.\n"
+msgid "Class not defined"
+msgstr "Sınıf bulunmuyor.\n"
+
+#: dlls/vbscript/vbscript.rc:71
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected ']'"
+msgstr "Beklenen ';'"
+
+#: dlls/vbscript/vbscript.rc:75
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'If'"
+msgstr "Beklenen ';'"
+
+#: dlls/vbscript/vbscript.rc:76
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'To'"
 msgstr "Beklenen ';'"
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'End'"
 msgstr "Beklenen '@end'"
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Function'"
+msgstr "Beklenen ';'"
+
+#: dlls/vbscript/vbscript.rc:79
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Sub'"
+msgstr "Beklenen ';'"
+
+#: dlls/vbscript/vbscript.rc:80
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'Then'"
 msgstr "Beklenen '@end'"
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'Wend'"
 msgstr "Beklenen '@end'"
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Loop'"
 msgstr "Beklenen ';'"
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Next'"
 msgstr "Beklenen ';'"
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Case'"
 msgstr "Beklenen ';'"
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Select'"
+msgstr "Beklenen ';'"
+
+#: dlls/vbscript/vbscript.rc:86
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected statement"
 msgstr "Beklenen '@end'"
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 #, fuzzy
 #| msgid "Expected an operand.\n"
 msgid "Expected end of statement"
 msgstr "Bir terim bekleniyor.\n"
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 #, fuzzy
 #| msgid "Unterminated string constant"
 msgid "Expected integer constant"
 msgstr "Sonlandırılmamış dize sabiti"
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'With'"
+msgstr "Beklenen ';'"
+
+#: dlls/vbscript/vbscript.rc:90
+#, fuzzy
+#| msgid "Secret too long.\n"
+msgid "Identifier too long"
+msgstr "Parola çok uzun.\n"
+
+#: dlls/vbscript/vbscript.rc:92
 #, fuzzy
 #| msgid "Invalid flag number.\n"
 msgid "Invalid number"
 msgstr "Geçersiz bayrak numarası.\n"
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+#, fuzzy
+#| msgid "Invalid use of Null"
+msgid "Invalid use of 'Me' keyword"
+msgstr "'Null' hatalı kullanılmış"
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 #, fuzzy
 #| msgid "Invalid printer state.\n"
 msgid "Invalid 'exit' statement"
 msgstr "Geçersiz yazıcı durumu.\n"
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 #, fuzzy
 #| msgid "Label redefined"
 msgid "Name redefined"
 msgstr "Etiket tekrar tanımlandı"
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 #, fuzzy
 #| msgid "Expected an operator.\n"
 msgid "Expected literal constant"
 msgstr "Bir işleç bekleniyor.\n"
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'In'"
 msgstr "Beklenen ';'"
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Class'"
 msgstr "Beklenen ';'"
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Property'"
+msgstr "Beklenen ';'"
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Unexpected 'Next'"
 msgstr "Beklenen ';'"
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr "Microsoft VBScript derleme hatası"
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr "Microsoft VBScript çalışma zamanı hatası"
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr "Wine"
 
@@ -14371,7 +14461,7 @@ msgid "Digi&tal"
 msgstr "Sa&yısal"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "&Yazıtipi..."
@@ -15414,6 +15504,41 @@ msgstr "Her karakter %1!u! piksel geniş ve %2!u! piksel yüksek"
 msgid "This is a test"
 msgstr "Bu bir sınamadır"
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+#, fuzzy
+#| msgid "Error: Could not find process \"%1\".\n"
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr "Hata: \"%1\" işlemi bulunamıyor.\n"
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr "DirectX Tanı Aracı"
@@ -19151,7 +19276,7 @@ msgstr ""
 msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr "%s içerisindeki Wine yapılandırması güncelleniyor, lütfen bekleyin..."
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -19163,23 +19288,23 @@ msgstr ""
 "sürümü (seçimi size bağlı) altında şartlara bağlı kalınarak tekrar "
 "dağıtılabilir ve/veya düzenlenebilir."
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 msgid "Windows registration information"
 msgstr "Windows kayıt bilgisi"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr "&Kullanıcı:"
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr "K&uruluş:"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr "Uygulama ayarları"
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
@@ -19189,55 +19314,55 @@ msgstr ""
 "Kitaplıklar ve Grafik sekmeleri ile bağlantılı olup bu sekmelerde de sistem "
 "çapındaki veya uygulamaya özel ayarları yapmanıza izin verir."
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 msgid "Add appli&cation..."
 msgstr "Uygulama &Ekle..."
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr "Uygulama &Kaldır"
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr "&Windows Sürümü:"
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr "Pencere ayarları"
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr "Fareyi ta&m ekran pencerelerde otomatik olarak yakala"
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr "Pencere yöneticisinin pencereleri &düzenlemesine izin ver"
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr "Pencere yöneticisinin &pencereleri yönetmesine izin ver"
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr "Sanal &masaüstü kullan"
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr "Masaüstü &boyutu:"
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr "Ekran çözünürlüğü"
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr "Bu, 10 punto Tahoma kullanan örnek bir metindir"
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr "DLL öncelikleri"
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
@@ -19247,176 +19372,176 @@ msgstr ""
 "(Windows'tan alınan ya da uygulama tarafından sağlanan) olarak "
 "belirtilebilir."
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr "Kitaplık için &yeni öncelik:"
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr "Ek&le"
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr "Var olan &öncelikler:"
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 msgid "&Edit..."
 msgstr "&Düzenle..."
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr "Öncelik Düzenle"
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr "Yükleme sırası"
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr "&Yerleşik (Wine)"
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr "&Doğal (Windows)"
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 msgid "Buil&tin then Native"
 msgstr "Önce Yerl&eşik sonra Doğal"
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr "Önce D&oğal sonra Yerleşik"
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr "Sürücü Harfini Seçin"
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 msgid "Drive configuration"
 msgstr "Sürücü yapılandırması"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 msgid ""
 "Failed to connect to the mount manager; the drive configuration cannot be "
 "edited."
 msgstr ""
 "Bağlama yöneticisine bağlanılamadı, sürücü yapılandırması düzenlenemiyor."
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 msgid "A&dd..."
 msgstr "&Ekle..."
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr "&Yol:"
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 msgid "Show Advan&ced"
 msgstr "Gelişmiş A&yarlar"
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr "Ay&gıt:"
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr "Gö&zat..."
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr "&Etiket:"
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr "S&eri No:"
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 msgid "&Show dot files"
 msgstr "&Noktayla başlayan dosyaları göster"
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr "Sürücü tanıları"
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr "&Ses Testi"
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr "Varsayılanlar"
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr "Çıktı aygıtı:"
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr "Ses çıkış aygıtı:"
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr "Girdi aygıtı:"
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr "Ses girdi aygıtı:"
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 #, fuzzy
 #| msgid "Output device:"
 msgid "MIDI output device:"
 msgstr "Çıktı aygıtı:"
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 msgid "Speaker configuration"
 msgstr "Hoparlör yapılandırması"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr "Hoparlörler:"
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr "Görünüm"
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr "&Tema:"
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 #, fuzzy
 #| msgid "&Theme:"
 msgid "&WinRT theme:"
 msgstr "&Tema:"
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr "&Tema yükle..."
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr "&Öge:"
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr "Re&nk:"
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr "MIME türleri"
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 #, fuzzy
 #| msgid "Manage file &associations"
 msgid "Manage file and protocol &associations"
 msgstr "&Dosya ilişkilendirmelerini düzenle"
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr "Klasörler"
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr "Hedef k&lasör:"
 
@@ -19497,28 +19622,34 @@ msgid "(System default)"
 msgstr "(Sistem varsayılan)"
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+#, fuzzy
+#| msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr "5.1 Çevresel"
 
 #: programs/winecfg/winecfg.rc:91
+msgid "5.1 Surround"
+msgstr "5.1 Çevresel"
+
+#: programs/winecfg/winecfg.rc:92
 msgid "Quadraphonic"
 msgstr "Kadrafonik"
 
-#: programs/winecfg/winecfg.rc:92
+#: programs/winecfg/winecfg.rc:93
 msgid "Stereo"
 msgstr "Stereo"
 
-#: programs/winecfg/winecfg.rc:93
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr "Mono"
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 #, fuzzy
 #| msgid "Right"
 msgid "Light"
 msgstr "Sağ"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr ""
 
@@ -19638,127 +19769,127 @@ msgstr ""
 "Bir tane oluşturmak için Sürücüler sekmesinden Ekle'yi tıklatmayı "
 "unutmayın!\n"
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr "Arkaplan Denetimi"
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr "Metin Denetimi"
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr "Menü Arkaplanı"
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr "Menü Metni"
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr "Kaydırma Çubuğu"
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr "Seçim Arkaplanı"
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr "Metin Seçimi"
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr "İpucu Arkaplanı"
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr "İpucu Metni"
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr "Pencere Arkaplanı"
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr "Pencere Metni"
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 msgid "Active Title Bar"
 msgstr "Etkin Başlık Çubuğu"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr "Etkin Başlık Metni"
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr "Etkin Olmayan Başlık Çubuğu"
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr "Etkin Olmayan Başlık Metni"
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr "İleti Kutusu Metni"
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr "Uygulama Çalışma Alanı"
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr "Pencere Çerçevesi"
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr "Etkin Çerçeve"
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr "Etkin Olmayan Çerçeve"
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr "Gölge Denetimi"
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr "Gri Metin"
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr "Belirtme Denetimi"
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr "Koyu Gölge Denetimi"
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr "Işık Denetimi"
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr "Arkaplan Sıra Denetimi"
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr "Etkin İzlenen Nesne"
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr "Etkin Başlık Çubuğu Gradyanı"
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr "Etkin Olmayan Başlık Çubuğu Gradyanı"
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr "Menü Belirtmesi"
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr "Menü çubuğu"
 
diff --git a/po/uk.po b/po/uk.po
index 0e986594b0a3..683b8a1ebf44 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -80,7 +80,7 @@ msgstr "&Змінити..."
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr "&Видалити"
@@ -117,7 +117,7 @@ msgstr "Дані підтримки"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -223,7 +223,7 @@ msgstr "&Встановити"
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -717,7 +717,7 @@ msgid "Font St&yle:"
 msgstr "&Стиль:"
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "&Розмір:"
 
@@ -733,7 +733,7 @@ msgstr "&Закреслений"
 msgid "&Underline"
 msgstr "&Підкреслений"
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "&Колір:"
 
@@ -912,7 +912,7 @@ msgstr "Кількість &копій:"
 msgid "C&ollate"
 msgstr "&Розбити"
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr "Ро&змір:"
 
@@ -990,7 +990,7 @@ msgstr "Ім'я файлу:"
 msgid "Files of type:"
 msgstr "Файли типу:"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr "Файл не знайдено"
 
@@ -2455,7 +2455,7 @@ msgid "&File name:"
 msgstr "&Ім'я файлу:"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr "&Огляд..."
 
@@ -3835,11 +3835,19 @@ msgstr "Вказівник"
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr "Відео кодек Wine Video 1"
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr "Джойстик"
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr "Вим&кнути"
 
@@ -3998,11 +4006,11 @@ msgstr "Невірний виклик процедури або аргумент
 msgid "Subscript out of range"
 msgstr "Індекс поза діапазоном"
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 msgid "Out of stack space"
 msgstr "В стеку немає місця"
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr "Вимагається об'єкт"
 
@@ -4010,23 +4018,23 @@ msgstr "Вимагається об'єкт"
 msgid "Automation server can't create object"
 msgstr "Сервер автоматизації не може створити об'єкт"
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr "Об'єкт не підтримує цю властивість чи метод"
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr "Об'єкт не підтримує цю дію"
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr "Відсутній обов'язковий аргумент"
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 msgid "Object not a collection"
 msgstr "Об'єкт не є набором"
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr "Синтаксична помилка"
 
@@ -4034,31 +4042,31 @@ msgstr "Синтаксична помилка"
 msgid "Expected ';'"
 msgstr "Очікується ';'"
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr "Очікується '('"
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr "Очікується ')'"
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 #, fuzzy
 #| msgid "Subject Key Identifier"
 msgid "Expected identifier"
 msgstr "Ідентифікатор ключа суб’єкта"
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected '='"
 msgstr "Очікується ';'"
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 msgid "Invalid character"
 msgstr "Невірний символ"
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr "Незавершена рядкова константа"
 
@@ -4106,7 +4114,7 @@ msgstr ""
 msgid "Microsoft JScript runtime error"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 #, fuzzy
 #| msgid "Unknown error"
 msgid "Unknown runtime error"
@@ -4134,7 +4142,7 @@ msgstr "'[object]' не об'єкт типу date"
 msgid "Object expected"
 msgstr "Очікується об'єкт"
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr "Невірне присвоєння"
 
@@ -4359,11 +4367,11 @@ msgstr "Файл не знайдено.\n"
 msgid "Path not found.\n"
 msgstr "Шлях не знайдено.\n"
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr "Забагато відкритих файлів.\n"
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr "Доступ заборонено.\n"
 
@@ -5715,7 +5723,7 @@ msgstr "Операція скасована користувачем.\n"
 msgid "File has a user-mapped section.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr "У з'єднанні відмовлено.\n"
 
@@ -7301,81 +7309,87 @@ msgstr "Цього мережевого з'єднання не існує.\n"
 
 #: dlls/kernelbase/winerror.mc:3750
 #, fuzzy
+#| msgid "File or directory corrupt.\n"
+msgid "File or directory is not a reparse point.\n"
+msgstr "Файл чи директорія пошкоджені.\n"
+
+#: dlls/kernelbase/winerror.mc:3755
+#, fuzzy
 #| msgid "Call not implemented.\n"
 msgid "Call interrupted.\n"
 msgstr "Виклик не реалізовано.\n"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 #, fuzzy
 #| msgid "Invalid handle.\n"
 msgid "Invalid file handle.\n"
 msgstr "Невірний дескриптор.\n"
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 #, fuzzy
 #| msgid "Invalid network address.\n"
 msgid "Invalid pointer address.\n"
 msgstr "Невірна мережна адреса.\n"
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 #, fuzzy
 #| msgid "Invalid name.\n"
 msgid "Invalid argument.\n"
 msgstr "Невірне ім'я.\n"
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 #, fuzzy
 #| msgid "Connection refused.\n"
 msgid "Connection reset by peer.\n"
 msgstr "У з'єднанні відмовлено.\n"
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 #, fuzzy
 #| msgid "Point not found.\n"
 msgid "Host not found.\n"
 msgstr "Точка не знайдена.\n"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 #, fuzzy
 #| msgid "Attribute is not found.\n"
 msgid "Nonauthoritative host not found.\n"
 msgstr "Атрибут не знайдено.\n"
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 #, fuzzy
 #| msgid "Unrecoverable error occurred.\n"
 msgid "Nonrecoverable error.\n"
 msgstr "Виникла критична помилка.\n"
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 msgid "Not implemented.\n"
 msgstr "Не реалізовано.\n"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 msgid "Call failed.\n"
 msgstr "Помилка запиту.\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 msgid "Unable to find matching object.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 msgid "No Signature found in file.\n"
 msgstr "Відсутній підпис файла.\n"
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 msgid "Invalid call.\n"
 msgstr "Невірний запит.\n"
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 msgid "Resource is not currently available.\n"
 msgstr "Наразі ресурс недоступний.\n"
 
@@ -8425,7 +8439,7 @@ msgstr "Гіперпосилання"
 msgid "Hyperlink Information"
 msgstr "Дані про Гіперпосилання"
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr "&Тип:"
 
@@ -10144,7 +10158,7 @@ msgid "b"
 msgstr ""
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr "точок на дюйм"
@@ -10682,7 +10696,7 @@ msgstr "&Відкрити:"
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr "&Огляд..."
 
@@ -10768,7 +10782,7 @@ msgstr "Оригінальне розміщення"
 msgid "Date deleted"
 msgstr "Дата видалення"
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -13301,251 +13315,327 @@ msgstr "Помилка Ділення на нуль.\n"
 msgid "Type mismatch"
 msgstr "Невідповідність типу"
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 msgid "Device I/O error"
 msgstr "Помилка вводу-виводу пристрою"
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 msgid "File already exists"
 msgstr "Файл вже існує"
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 msgid "Disk full"
 msgstr "Диск заповнений"
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 msgid "Too many files"
 msgstr "Забагато файлів"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 msgid "Permission denied"
 msgstr "Доступ заборонено"
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr "Помилка доступу до шляху/файлу"
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 msgid "Path not found"
 msgstr "Шлях не знайдено"
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 msgid "Object variable not set"
 msgstr "Не встановлена ​​змінна об'єкта"
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 #, fuzzy
 #| msgid "Object is not initialized.\n"
 msgid "For loop not initialized"
 msgstr "Об'єкт не ініціалізований.\n"
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 msgid "Invalid use of Null"
 msgstr "Неправильне використання Null"
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr "Не вдається створити необхідний тимчасовий файл"
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 msgid "ActiveX component can't create object"
 msgstr "Компонент ActiveX не може створити об’єкт"
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 msgid "Class doesn't support Automation"
 msgstr "Клас не підтримує автоматизацію"
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr "Ім'я файлу або ім'я класу не знайдено під час операції автоматизації"
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 msgid "Object doesn't support named arguments"
 msgstr "Об'єкт не підтримує названі аргументи"
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 msgid "Object doesn't support current locale setting"
 msgstr "Об’єкт не підтримує поточні налаштування мови"
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 msgid "Named argument not found"
 msgstr "Названий аргумент не знайдено"
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr "Неправильна кількість аргументів або недійсне призначення властивості"
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 msgid "Specified DLL function not found"
 msgstr "Вказану функцію DLL не знайдено"
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr ""
 "Змінна використовує тип автоматизації, який не підтримується у VBScript"
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr "Віддалений сервер не існує або недоступний"
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 #, fuzzy
 #| msgid "'|' is undefined"
 msgid "Variable is undefined"
 msgstr "'|' не визначено"
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr "Недійсне або невизначене посилання"
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+#, fuzzy
+#| msgid "Class does not exist.\n"
+msgid "Class not defined"
+msgstr "Клас не існує.\n"
+
+#: dlls/vbscript/vbscript.rc:71
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected ']'"
+msgstr "Очікується ';'"
+
+#: dlls/vbscript/vbscript.rc:75
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'If'"
+msgstr "Очікується ';'"
+
+#: dlls/vbscript/vbscript.rc:76
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'To'"
 msgstr "Очікується ';'"
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'End'"
 msgstr "Очікується ';'"
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Function'"
+msgstr "Очікується ';'"
+
+#: dlls/vbscript/vbscript.rc:79
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Sub'"
+msgstr "Очікується ';'"
+
+#: dlls/vbscript/vbscript.rc:80
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Then'"
 msgstr "Очікується ';'"
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Wend'"
 msgstr "Очікується ';'"
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Loop'"
 msgstr "Очікується ';'"
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Next'"
 msgstr "Очікується ';'"
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Case'"
 msgstr "Очікується ';'"
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Select'"
+msgstr "Очікується ';'"
+
+#: dlls/vbscript/vbscript.rc:86
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected statement"
 msgstr "Очікується ';'"
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 #, fuzzy
 #| msgid "Unexpected network error.\n"
 msgid "Expected end of statement"
 msgstr "Неочікувана помилка мережі.\n"
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 #, fuzzy
 #| msgid "Unterminated string constant"
 msgid "Expected integer constant"
 msgstr "Незавершена рядкова константа"
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'With'"
+msgstr "Очікується ';'"
+
+#: dlls/vbscript/vbscript.rc:90
+#, fuzzy
+#| msgid "String too long.\n"
+msgid "Identifier too long"
+msgstr "Рядок занадто довгий.\n"
+
+#: dlls/vbscript/vbscript.rc:92
 #, fuzzy
 #| msgid "Invalid flag number.\n"
 msgid "Invalid number"
 msgstr "Невірний номер прапорця.\n"
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+#, fuzzy
+#| msgid "Invalid use of Null"
+msgid "Invalid use of 'Me' keyword"
+msgstr "Неправильне використання Null"
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 #, fuzzy
 #| msgid "Invalid server state.\n"
 msgid "Invalid 'exit' statement"
 msgstr "Невірний стан сервера.\n"
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 #, fuzzy
 #| msgid "Label redefined"
 msgid "Name redefined"
 msgstr "Мітка перевизначена"
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 #, fuzzy
 #| msgid "Unexpected network error.\n"
 msgid "Expected literal constant"
 msgstr "Неочікувана помилка мережі.\n"
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'In'"
 msgstr "Очікується ';'"
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Class'"
 msgstr "Очікується ';'"
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Property'"
+msgstr "Очікується ';'"
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Unexpected 'Next'"
 msgstr "Очікується ';'"
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr "Помилка компіляції Microsoft VBScript"
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr "Помилка виконання Microsoft VBScript"
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr "Wine"
 
@@ -14666,7 +14756,7 @@ msgid "Digi&tal"
 msgstr "&Ци&фровий"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "&Шрифт..."
@@ -15684,6 +15774,41 @@ msgstr "Кожен символ має %1!u! пікселів в ширину і
 msgid "This is a test"
 msgstr "Це тест"
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+#, fuzzy
+#| msgid "Error: Could not find process \"%1\".\n"
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr "Помилка: Не вдалось знайти процес \"%1\".\n"
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr "Утиліта Діагностики DirectX"
@@ -19176,7 +19301,7 @@ msgstr ""
 msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr "Оновлення конфігурації Wine в %s, будь ласка, зачекайте..."
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -19187,23 +19312,23 @@ msgstr ""
 "умов GNU Lesser General Public License, яка опублікована Free Software "
 "Foundation; версії 2.1 Ліцензії, чи (на ваш розсуд) новішої версії."
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 msgid "Windows registration information"
 msgstr "Реєстраційна інформація Windows"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr "&Власник:"
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr "Органі&зація:"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr "Налаштування програми"
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
@@ -19213,55 +19338,55 @@ msgstr ""
 "пов'язана з вкладками Бібліотеки та Графіка, що дозволяє зміну налаштувань в "
 "цих вкладках як для окремої програми, так і глобально."
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 msgid "Add appli&cation..."
 msgstr "&Додати програму..."
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr "&Видалити програму"
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr "&Версія Windows:"
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr "Параметри вікна"
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr "Автоматично захоплювати &мишу у повноекранних вікнах"
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr "Дозволити менеджеру вікон &декорувати вікна"
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr "Дозволити менеджеру вікон &керувати вікнами"
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr "&Емулювати віртуальний робочий стіл"
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr "Розмір робочого &столу:"
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr "Розширення екрану"
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr "Приклад тексту. Шрифт Tahoma 10 пунктів"
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr "Заміщення DLL"
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
@@ -19270,55 +19395,55 @@ msgstr ""
 "Тут вказується, яку динамічно під'єднувану бібліотеку (DLL) використовувати: "
 "вбудовану в Wine або сторонню (з Windows, чи надану разом з програмою)."
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr "&Нове заміщення для бібліотеки:"
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr "&Додати"
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr "Існуючі &заміщення:"
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 msgid "&Edit..."
 msgstr "&Змінити..."
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr "Змінити заміщення"
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr "Порядок завантаження"
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr "&Вбудована (Wine)"
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr "&Стороння (Windows)"
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 msgid "Buil&tin then Native"
 msgstr "В&будована, потім стороння"
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr "С&тороння, потім вбудована"
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr "Виберіть букву диску"
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 msgid "Drive configuration"
 msgstr "Налаштування привода"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 msgid ""
 "Failed to connect to the mount manager; the drive configuration cannot be "
 "edited."
@@ -19326,121 +19451,121 @@ msgstr ""
 "Неможливо з'єднатися з менеджером монтування, конфігурацію дисків не можна "
 "редагувати."
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 msgid "A&dd..."
 msgstr "&Додати..."
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr "&Шлях:"
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 msgid "Show Advan&ced"
 msgstr "Показати &додат. налашт."
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr "&Привід:"
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr "О&гляд..."
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr "&Мітка:"
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr "&Сер.ном:"
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 msgid "&Show dot files"
 msgstr "Показувати &файли, що починаються з крапки"
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr "Діагностика драйвера"
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr "&Тест звуку"
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr "Типове"
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr "Пристрій виводу:"
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr "Пристрій виводу голосу:"
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr "Пристрій вводу:"
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr "Пристрій вводу голосу:"
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 #, fuzzy
 #| msgid "Output device:"
 msgid "MIDI output device:"
 msgstr "Пристрій виводу:"
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 msgid "Speaker configuration"
 msgstr "Налаштування динаміків"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr "Канали:"
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr "Вигляд"
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr "&Тема:"
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 #, fuzzy
 #| msgid "&Theme:"
 msgid "&WinRT theme:"
 msgstr "&Тема:"
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr "&Встановити тему..."
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr "Е&лемент:"
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr "Ко&лір:"
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr "Типи MIME"
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 #, fuzzy
 #| msgid "Manage file &associations"
 msgid "Manage file and protocol &associations"
 msgstr "Керування &асоціаціями файлів"
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr "Теки"
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr "&Направити:"
 
@@ -19521,28 +19646,34 @@ msgid "(System default)"
 msgstr "(Типовий системний)"
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+#, fuzzy
+#| msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr "Багатоканальний 5.1"
 
 #: programs/winecfg/winecfg.rc:91
+msgid "5.1 Surround"
+msgstr "Багатоканальний 5.1"
+
+#: programs/winecfg/winecfg.rc:92
 msgid "Quadraphonic"
 msgstr "Квадрофонічний"
 
-#: programs/winecfg/winecfg.rc:92
+#: programs/winecfg/winecfg.rc:93
 msgid "Stereo"
 msgstr "Стерео"
 
-#: programs/winecfg/winecfg.rc:93
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr "Моно"
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 #, fuzzy
 #| msgid "Right"
 msgid "Light"
 msgstr "По правому Краю"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr ""
 
@@ -19660,127 +19791,127 @@ msgstr ""
 "\n"
 "Натисніть 'Додати' в закладці Диски щоб створити його!\n"
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr "Елементи керування - фон"
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr "Елементи керування - текст"
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr "Меню - фон"
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr "Меню - текст"
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr "Смуга прокручування"
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr "Виділення - фон"
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr "Виділення - текст"
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr "Підказка - фон"
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr "Підказка - текст"
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr "Вікно - фон"
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr "Вікно - текст"
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 msgid "Active Title Bar"
 msgstr "Заголовок акт. вікна"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr "Заголовок акт. - текст"
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr "Заголовок неак. вікна"
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr "Заголовок неак. вікна - текст"
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr "Вікно повідомлення - текст"
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr "Робоче поле програми"
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr "Вікно - рамка"
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr "Активна рамка"
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr "Неактивна рамка"
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr "Елементи керування - тінь"
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr "Недоступний елемент - текст"
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr "Ел-ти керув. - світла рамка"
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr "Ел-ти керув. - темна тінь"
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr "Елементи керування - світло"
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr "Ел-ти керув. - інший фон"
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr "Посилання, Підсвічування"
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr "Градієнт заголовка акт. вікна"
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr "Град. заголовка неакт. вікна"
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr "Меню - підсвічування"
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr "Рядок меню"
 
diff --git a/po/wa.po b/po/wa.po
index b9800548a38c..07bf5d970b3c 100644
--- a/po/wa.po
+++ b/po/wa.po
@@ -81,7 +81,7 @@ msgstr "&Copyî..."
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 #, fuzzy
 msgid "&Remove"
@@ -120,7 +120,7 @@ msgstr "Informåcion"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -223,7 +223,7 @@ msgstr "&Sicrîre..."
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -712,7 +712,7 @@ msgid "Font St&yle:"
 msgstr "S&tîle del fonte:"
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "&Grandeu:"
 
@@ -728,7 +728,7 @@ msgstr "&Barré"
 msgid "&Underline"
 msgstr "&Sorligné"
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "&Coleur:"
 
@@ -913,7 +913,7 @@ msgstr ""
 msgid "C&ollate"
 msgstr ""
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr ""
 
@@ -1001,7 +1001,7 @@ msgstr "&Fitchî"
 msgid "Files of type:"
 msgstr "Djîveye des fitchîs del sôr&te:"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr ""
 
@@ -2448,7 +2448,7 @@ msgid "&File name:"
 msgstr "&Fitchî"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr ""
 
@@ -3799,11 +3799,19 @@ msgstr "Å&dvins"
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr ""
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr ""
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr ""
 
@@ -3938,11 +3946,11 @@ msgstr ""
 msgid "Subscript out of range"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 msgid "Out of stack space"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr ""
 
@@ -3950,23 +3958,23 @@ msgstr ""
 msgid "Automation server can't create object"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 msgid "Object not a collection"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr ""
 
@@ -3974,27 +3982,27 @@ msgstr ""
 msgid "Expected ';'"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 msgid "Expected '='"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 msgid "Invalid character"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr ""
 
@@ -4039,7 +4047,7 @@ msgstr ""
 msgid "Microsoft JScript runtime error"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 msgid "Unknown runtime error"
 msgstr ""
 
@@ -4063,7 +4071,7 @@ msgstr ""
 msgid "Object expected"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr ""
 
@@ -4272,11 +4280,11 @@ msgstr ""
 msgid "Path not found.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr ""
 
@@ -5642,7 +5650,7 @@ msgstr ""
 msgid "File has a user-mapped section.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr ""
 
@@ -7237,72 +7245,76 @@ msgid "This network connection does not exist.\n"
 msgstr ""
 
 #: dlls/kernelbase/winerror.mc:3750
+msgid "File or directory is not a reparse point.\n"
+msgstr ""
+
+#: dlls/kernelbase/winerror.mc:3755
 #, fuzzy
 msgid "Call interrupted.\n"
 msgstr "Nén co possibe.\n"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 msgid "Invalid file handle.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 msgid "Invalid pointer address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 msgid "Invalid argument.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 msgid "Connection reset by peer.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 #, fuzzy
 msgid "Host not found.\n"
 msgstr "'%s' pout nén esse trové."
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 #, fuzzy
 msgid "Nonauthoritative host not found.\n"
 msgstr "'%s' pout nén esse trové."
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 msgid "Nonrecoverable error.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 #, fuzzy
 #| msgid "Not implemented"
 msgid "Not implemented.\n"
 msgstr "Nén co possibe"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 #, fuzzy
 msgid "Call failed.\n"
 msgstr "Nén co possibe.\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 msgid "Unable to find matching object.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 msgid "No Signature found in file.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 msgid "Invalid call.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 msgid "Resource is not currently available.\n"
 msgstr ""
 
@@ -8285,7 +8297,7 @@ msgstr ""
 msgid "Hyperlink Information"
 msgstr "Informåcion"
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr ""
 
@@ -9866,7 +9878,7 @@ msgid "b"
 msgstr ""
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr ""
@@ -10411,7 +10423,7 @@ msgstr "&Drovî:"
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr ""
 
@@ -10504,7 +10516,7 @@ msgstr ""
 msgid "Date deleted"
 msgstr "&Rafacer\tDel"
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -13172,215 +13184,271 @@ msgstr ""
 msgid "Type mismatch"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 msgid "Device I/O error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 msgid "File already exists"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 msgid "Disk full"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 #, fuzzy
 msgid "Too many files"
 msgstr "Aidance di Wine"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 msgid "Permission denied"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 #, fuzzy
 msgid "Path not found"
 msgstr "'%s' pout nén esse trové."
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 msgid "Object variable not set"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 msgid "For loop not initialized"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 msgid "Invalid use of Null"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 msgid "ActiveX component can't create object"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 msgid "Class doesn't support Automation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 msgid "Object doesn't support named arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 msgid "Object doesn't support current locale setting"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 #, fuzzy
 msgid "Named argument not found"
 msgstr "'%s' pout nén esse trové."
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 msgid "Specified DLL function not found"
 msgstr ""
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 msgid "Variable is undefined"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+msgid "Class not defined"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:71
+msgid "Expected ']'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:75
+msgid "Expected 'If'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:76
 msgid "Expected 'To'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 msgid "Expected 'End'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+msgid "Expected 'Function'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:79
+msgid "Expected 'Sub'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:80
 msgid "Expected 'Then'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 msgid "Expected 'Wend'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 msgid "Expected 'Loop'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 msgid "Expected 'Next'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 msgid "Expected 'Case'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+msgid "Expected 'Select'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:86
 msgid "Expected statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 msgid "Expected end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 msgid "Expected integer constant"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+msgid "Expected 'With'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:90
+msgid "Identifier too long"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:92
 msgid "Invalid number"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+msgid "Invalid use of 'Me' keyword"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 msgid "Invalid 'exit' statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 msgid "Name redefined"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 msgid "Expected literal constant"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 msgid "Expected 'In'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 msgid "Expected 'Class'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+msgid "Expected 'Property'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 msgid "Unexpected 'Next'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr ""
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 #, fuzzy
 msgid "Wine"
 msgstr "Wine"
@@ -14374,7 +14442,7 @@ msgid "Digi&tal"
 msgstr "&Limerike"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 #, fuzzy
 msgid "&Font..."
@@ -15179,6 +15247,39 @@ msgstr ""
 msgid "This is a test"
 msgstr ""
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr ""
@@ -18521,7 +18622,7 @@ msgstr ""
 msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -18529,258 +18630,258 @@ msgid ""
 "option) any later version."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 #, fuzzy
 msgid "Windows registration information"
 msgstr "Informåcion"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
 "or per-application settings in those tabs as well."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 #, fuzzy
 msgid "Add appli&cation..."
 msgstr "&Options"
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 #, fuzzy
 msgid "&Remove application"
 msgstr "&Sicrîre..."
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
 "application)."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 #, fuzzy
 msgid "&Edit..."
 msgstr "&Candjî"
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 #, fuzzy
 msgid "&Native (Windows)"
 msgstr "Å dfait di &Wine..."
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 msgid "Buil&tin then Native"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 #, fuzzy
 msgid "Drive configuration"
 msgstr "Informåcion"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 msgid ""
 "Failed to connect to the mount manager; the drive configuration cannot be "
 "edited."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 msgid "A&dd..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 msgid "Show Advan&ced"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 msgid "&Show dot files"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 #, fuzzy
 msgid "Defaults"
 msgstr "Pådje &p"
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 #, fuzzy
 msgid "Output device:"
 msgstr "&Fitchî"
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 #, fuzzy
 msgid "MIDI output device:"
 msgstr "&Fitchî"
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 #, fuzzy
 msgid "Speaker configuration"
 msgstr "Informåcion"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 msgid "&WinRT theme:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 #, fuzzy
 msgid "&Install theme..."
 msgstr "&Sicrîre..."
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr ""
 
@@ -18862,28 +18963,32 @@ msgid "(System default)"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:91
-msgid "Quadraphonic"
+msgid "5.1 Surround"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:92
-msgid "Stereo"
+msgid "Quadraphonic"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:93
+msgid "Stereo"
+msgstr ""
+
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 #, fuzzy
 #| msgid "&Right:"
 msgid "Light"
 msgstr "&Droete:"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr ""
 
@@ -18988,128 +19093,128 @@ msgid ""
 "Remember to click 'Add' in the Drives tab to create one!\n"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 #, fuzzy
 msgid "Active Title Bar"
 msgstr "Sin bår di &Tite"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr ""
 
diff --git a/po/wine.pot b/po/wine.pot
index 5b378ddd6c10..e17260ad1296 100644
--- a/po/wine.pot
+++ b/po/wine.pot
@@ -73,7 +73,7 @@ msgstr ""
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr ""
@@ -110,7 +110,7 @@ msgstr ""
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -209,7 +209,7 @@ msgstr ""
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -688,7 +688,7 @@ msgid "Font St&yle:"
 msgstr ""
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr ""
 
@@ -704,7 +704,7 @@ msgstr ""
 msgid "&Underline"
 msgstr ""
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr ""
 
@@ -881,7 +881,7 @@ msgstr ""
 msgid "C&ollate"
 msgstr ""
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr ""
 
@@ -959,7 +959,7 @@ msgstr ""
 msgid "Files of type:"
 msgstr ""
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr ""
 
@@ -2379,7 +2379,7 @@ msgid "&File name:"
 msgstr ""
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr ""
 
@@ -3674,11 +3674,19 @@ msgstr ""
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr ""
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr ""
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr ""
 
@@ -3813,11 +3821,11 @@ msgstr ""
 msgid "Subscript out of range"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 msgid "Out of stack space"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr ""
 
@@ -3825,23 +3833,23 @@ msgstr ""
 msgid "Automation server can't create object"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 msgid "Object not a collection"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr ""
 
@@ -3849,27 +3857,27 @@ msgstr ""
 msgid "Expected ';'"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 msgid "Expected '='"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 msgid "Invalid character"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr ""
 
@@ -3913,7 +3921,7 @@ msgstr ""
 msgid "Microsoft JScript runtime error"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 msgid "Unknown runtime error"
 msgstr ""
 
@@ -3937,7 +3945,7 @@ msgstr ""
 msgid "Object expected"
 msgstr ""
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr ""
 
@@ -4143,11 +4151,11 @@ msgstr ""
 msgid "Path not found.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr ""
 
@@ -5499,7 +5507,7 @@ msgstr ""
 msgid "File has a user-mapped section.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr ""
 
@@ -7084,66 +7092,70 @@ msgid "This network connection does not exist.\n"
 msgstr ""
 
 #: dlls/kernelbase/winerror.mc:3750
-msgid "Call interrupted.\n"
+msgid "File or directory is not a reparse point.\n"
 msgstr ""
 
 #: dlls/kernelbase/winerror.mc:3755
+msgid "Call interrupted.\n"
+msgstr ""
+
+#: dlls/kernelbase/winerror.mc:3760
 msgid "Invalid file handle.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 msgid "Invalid pointer address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 msgid "Invalid argument.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 msgid "Connection reset by peer.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 msgid "Host not found.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 msgid "Nonauthoritative host not found.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 msgid "Nonrecoverable error.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 msgid "Not implemented.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 msgid "Call failed.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 msgid "Unable to find matching object.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 msgid "No Signature found in file.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 msgid "Invalid call.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 msgid "Resource is not currently available.\n"
 msgstr ""
 
@@ -8104,7 +8116,7 @@ msgstr ""
 msgid "Hyperlink Information"
 msgstr ""
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr ""
 
@@ -9631,7 +9643,7 @@ msgid "b"
 msgstr ""
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr ""
@@ -10165,7 +10177,7 @@ msgstr ""
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr ""
 
@@ -10251,7 +10263,7 @@ msgstr ""
 msgid "Date deleted"
 msgstr ""
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -12645,212 +12657,268 @@ msgstr ""
 msgid "Type mismatch"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 msgid "Device I/O error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 msgid "File already exists"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 msgid "Disk full"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 msgid "Too many files"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 msgid "Permission denied"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 msgid "Path not found"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 msgid "Object variable not set"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 msgid "For loop not initialized"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 msgid "Invalid use of Null"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 msgid "ActiveX component can't create object"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 msgid "Class doesn't support Automation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 msgid "Object doesn't support named arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 msgid "Object doesn't support current locale setting"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 msgid "Named argument not found"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 msgid "Specified DLL function not found"
 msgstr ""
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 msgid "Variable is undefined"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+msgid "Class not defined"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:71
+msgid "Expected ']'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:75
+msgid "Expected 'If'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:76
 msgid "Expected 'To'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 msgid "Expected 'End'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+msgid "Expected 'Function'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:79
+msgid "Expected 'Sub'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:80
 msgid "Expected 'Then'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 msgid "Expected 'Wend'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 msgid "Expected 'Loop'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 msgid "Expected 'Next'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 msgid "Expected 'Case'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+msgid "Expected 'Select'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:86
 msgid "Expected statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 msgid "Expected end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 msgid "Expected integer constant"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+msgid "Expected 'With'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:90
+msgid "Identifier too long"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:92
 msgid "Invalid number"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+msgid "Invalid use of 'Me' keyword"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 msgid "Invalid 'exit' statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 msgid "Name redefined"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 msgid "Expected literal constant"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 msgid "Expected 'In'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 msgid "Expected 'Class'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+msgid "Expected 'Property'"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 msgid "Unexpected 'Next'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr ""
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr ""
 
@@ -13834,7 +13902,7 @@ msgid "Digi&tal"
 msgstr ""
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr ""
@@ -14619,6 +14687,39 @@ msgstr ""
 msgid "This is a test"
 msgstr ""
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr ""
@@ -17880,7 +17981,7 @@ msgstr ""
 msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -17888,247 +17989,247 @@ msgid ""
 "option) any later version."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 msgid "Windows registration information"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
 "or per-application settings in those tabs as well."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 msgid "Add appli&cation..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
 "application)."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 msgid "&Edit..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 msgid "Buil&tin then Native"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 msgid "Drive configuration"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 msgid ""
 "Failed to connect to the mount manager; the drive configuration cannot be "
 "edited."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 msgid "A&dd..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 msgid "Show Advan&ced"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 msgid "&Show dot files"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 msgid "MIDI output device:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 msgid "Speaker configuration"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 msgid "&WinRT theme:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr ""
 
@@ -18209,26 +18310,30 @@ msgid "(System default)"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:91
-msgid "Quadraphonic"
+msgid "5.1 Surround"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:92
-msgid "Stereo"
+msgid "Quadraphonic"
 msgstr ""
 
 #: programs/winecfg/winecfg.rc:93
+msgid "Stereo"
+msgstr ""
+
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 msgid "Light"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr ""
 
@@ -18333,127 +18438,127 @@ msgid ""
 "Remember to click 'Add' in the Drives tab to create one!\n"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 msgid "Active Title Bar"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr ""
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr ""
 
diff --git a/po/zh_CN.po b/po/zh_CN.po
index 04e7b716306f..76c2480d5b70 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -79,7 +79,7 @@ msgstr "修改(&M)..."
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr "删除(&R)"
@@ -116,7 +116,7 @@ msgstr "技术支持信息"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -221,7 +221,7 @@ msgstr "安装(&I)"
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -706,7 +706,7 @@ msgid "Font St&yle:"
 msgstr "字体样式(&Y):"
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "大小(&S):"
 
@@ -722,7 +722,7 @@ msgstr "删除线(&K)"
 msgid "&Underline"
 msgstr "下划线(&U)"
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "配色(&C):"
 
@@ -899,7 +899,7 @@ msgstr "份数(&C):"
 msgid "C&ollate"
 msgstr "逐份打印(&O)"
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr "大小(&Z):"
 
@@ -977,7 +977,7 @@ msgstr "文件名:"
 msgid "Files of type:"
 msgstr "文件类型:"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr "找不到文件"
 
@@ -2420,7 +2420,7 @@ msgid "&File name:"
 msgstr "文件名(&F):"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr "浏览(&R)..."
 
@@ -3753,11 +3753,19 @@ msgstr "Indeo5"
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr "Indeo Video Interactive 版本 5 视频编解码器"
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr "操纵杆"
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr "停用(&D)"
 
@@ -3901,11 +3909,11 @@ msgstr "过程调用或参数无效"
 msgid "Subscript out of range"
 msgstr "标记越界"
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 msgid "Out of stack space"
 msgstr "堆栈空间不足"
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr "需要对象"
 
@@ -3913,23 +3921,23 @@ msgstr "需要对象"
 msgid "Automation server can't create object"
 msgstr "自动化服务器无法创建对象"
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr "对象不支持此属性或方式"
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr "对象不支持此动作"
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr "参数不是可选参数"
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 msgid "Object not a collection"
 msgstr "对象不是集合"
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr "语法错误"
 
@@ -3937,27 +3945,27 @@ msgstr "语法错误"
 msgid "Expected ';'"
 msgstr "期望得到 ';'"
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr "期望得到 '('"
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr "期望得到 ')'"
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr "期望标识符"
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 msgid "Expected '='"
 msgstr "期望得到 '='"
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 msgid "Invalid character"
 msgstr "无效字符"
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr "未终止的字符串常量"
 
@@ -4001,7 +4009,7 @@ msgstr "Microsoft JScript 编译错误"
 msgid "Microsoft JScript runtime error"
 msgstr "Microsoft JScript 运行时错误"
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 msgid "Unknown runtime error"
 msgstr "未知运行时错误"
 
@@ -4025,7 +4033,7 @@ msgstr "'[object]' 不是日期对象"
 msgid "Object expected"
 msgstr "期望得到对象"
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr "非法赋值"
 
@@ -4231,11 +4239,11 @@ msgstr "找不到文件。\n"
 msgid "Path not found.\n"
 msgstr "找不到路径。\n"
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr "太多打开的文件。\n"
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr "访问被拒绝。\n"
 
@@ -5587,7 +5595,7 @@ msgstr "操作被用户取消。\n"
 msgid "File has a user-mapped section.\n"
 msgstr "文件包含用户映射的区块。\n"
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr "连接被拒绝。\n"
 
@@ -7172,68 +7180,74 @@ msgid "This network connection does not exist.\n"
 msgstr "该网络连接不存在。\n"
 
 #: dlls/kernelbase/winerror.mc:3750
+#, fuzzy
+#| msgid "File or directory corrupt.\n"
+msgid "File or directory is not a reparse point.\n"
+msgstr "文件或目录已损坏。\n"
+
+#: dlls/kernelbase/winerror.mc:3755
 msgid "Call interrupted.\n"
 msgstr "调用已中断。\n"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 msgid "Invalid file handle.\n"
 msgstr "无效的文件句柄。\n"
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 msgid "Invalid pointer address.\n"
 msgstr "无效的指针地址。\n"
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 msgid "Invalid argument.\n"
 msgstr "无效的参数。\n"
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr "无法分配所请求的地址。\n"
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 msgid "Connection reset by peer.\n"
 msgstr "连接被重置。\n"
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 msgid "Host not found.\n"
 msgstr "未找到主机。\n"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 msgid "Nonauthoritative host not found.\n"
 msgstr "未找到非授权主机。\n"
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 msgid "Nonrecoverable error.\n"
 msgstr "不可恢复错误。\n"
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr "名称无效，没有数据记录。\n"
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 msgid "Not implemented.\n"
 msgstr "尚未实现。\n"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 msgid "Call failed.\n"
 msgstr "调用失败。\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 #, fuzzy
 #| msgid "Unable to unload media.\n"
 msgid "Unable to find matching object.\n"
 msgstr "无法卸载介质。\n"
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 msgid "No Signature found in file.\n"
 msgstr "未在文件内找到签名。\n"
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 msgid "Invalid call.\n"
 msgstr "无效调用。\n"
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 msgid "Resource is not currently available.\n"
 msgstr "资源当前不可用。\n"
 
@@ -8194,7 +8208,7 @@ msgstr "超链接"
 msgid "Hyperlink Information"
 msgstr "超链接信息"
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr "类型(&T):"
 
@@ -9818,7 +9832,7 @@ msgid "b"
 msgstr "b"
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr "dpi"
@@ -10352,7 +10366,7 @@ msgstr "打开(&O):"
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr "浏览(&B)..."
 
@@ -10438,7 +10452,7 @@ msgstr "原位置"
 msgid "Date deleted"
 msgstr "删除日期"
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -12858,250 +12872,326 @@ msgstr "被零除错误。\n"
 msgid "Type mismatch"
 msgstr "类型不匹配"
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 msgid "Device I/O error"
 msgstr "设备 I/O 错误"
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 msgid "File already exists"
 msgstr "文件已存在"
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 msgid "Disk full"
 msgstr "磁盘已满"
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 msgid "Too many files"
 msgstr "太多文件"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 msgid "Permission denied"
 msgstr "没有权限"
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr "路径/文件访问出错"
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 msgid "Path not found"
 msgstr "找不到路径"
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 msgid "Object variable not set"
 msgstr "未设置对象变量"
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 #, fuzzy
 #| msgid "Object is not initialized.\n"
 msgid "For loop not initialized"
 msgstr "对象未初始化。\n"
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 msgid "Invalid use of Null"
 msgstr "Null 使用无效"
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr "无法创建必要的临时文件"
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 msgid "ActiveX component can't create object"
 msgstr "ActiveX 组件无法创建对象"
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 msgid "Class doesn't support Automation"
 msgstr "类不支持自动化"
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr "自动化操作期间无法找到文件名或类名"
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 msgid "Object doesn't support named arguments"
 msgstr "对象不支持命名参数"
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 msgid "Object doesn't support current locale setting"
 msgstr "对象不支持当前 locale 设置"
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 msgid "Named argument not found"
 msgstr "未找到命名参数"
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr "参数数量错误或无效的指定属性"
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 msgid "Specified DLL function not found"
 msgstr "未找到指定的 DLL 函数"
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr "变量使用了 VBScript 中不支持的自动化类型"
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr "远程服务器不存在或不可用"
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 #, fuzzy
 #| msgid "'|' is undefined"
 msgid "Variable is undefined"
 msgstr "'|' 未被定义"
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr "无效或不合格引用"
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+#, fuzzy
+#| msgid "Class does not exist.\n"
+msgid "Class not defined"
+msgstr "该类不存在。\n"
+
+#: dlls/vbscript/vbscript.rc:71
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected ']'"
+msgstr "期望得到 ';'"
+
+#: dlls/vbscript/vbscript.rc:75
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'If'"
+msgstr "期望得到 ';'"
+
+#: dlls/vbscript/vbscript.rc:76
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'To'"
 msgstr "期望得到 ';'"
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'End'"
 msgstr "期望 '@end'"
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Function'"
+msgstr "期望得到 ';'"
+
+#: dlls/vbscript/vbscript.rc:79
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Sub'"
+msgstr "期望得到 ';'"
+
+#: dlls/vbscript/vbscript.rc:80
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'Then'"
 msgstr "期望 '@end'"
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'Wend'"
 msgstr "期望 '@end'"
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Loop'"
 msgstr "期望得到 ';'"
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Next'"
 msgstr "期望得到 ';'"
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Case'"
 msgstr "期望得到 ';'"
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Select'"
+msgstr "期望得到 ';'"
+
+#: dlls/vbscript/vbscript.rc:86
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected statement"
 msgstr "期望 '@end'"
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 #, fuzzy
 #| msgid "Expected an operand.\n"
 msgid "Expected end of statement"
 msgstr "期望一个操作数。\n"
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 #, fuzzy
 #| msgid "Unterminated string constant"
 msgid "Expected integer constant"
 msgstr "未终止的字符串常量"
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'With'"
+msgstr "期望得到 ';'"
+
+#: dlls/vbscript/vbscript.rc:90
+#, fuzzy
+#| msgid "Secret too long.\n"
+msgid "Identifier too long"
+msgstr "密文太长。\n"
+
+#: dlls/vbscript/vbscript.rc:92
 #, fuzzy
 #| msgid "Invalid flag number.\n"
 msgid "Invalid number"
 msgstr "标志数无效。\n"
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+#, fuzzy
+#| msgid "Invalid use of Null"
+msgid "Invalid use of 'Me' keyword"
+msgstr "Null 使用无效"
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 #, fuzzy
 #| msgid "Invalid printer state.\n"
 msgid "Invalid 'exit' statement"
 msgstr "打印机状态无效。\n"
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 #, fuzzy
 #| msgid "Label redefined"
 msgid "Name redefined"
 msgstr "标签被重复定义"
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 #, fuzzy
 #| msgid "Expected an operator.\n"
 msgid "Expected literal constant"
 msgstr "期望一个操作符。\n"
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'In'"
 msgstr "期望得到 ';'"
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Class'"
 msgstr "期望得到 ';'"
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Property'"
+msgstr "期望得到 ';'"
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Unexpected 'Next'"
 msgstr "期望得到 ';'"
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr "Microsoft VBScript 编译错误"
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr "Microsoft VBScript 运行时错误"
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr "Wine"
 
@@ -14128,7 +14218,7 @@ msgid "Digi&tal"
 msgstr "数字时钟(&T)"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "字体(&F)..."
@@ -15110,6 +15200,41 @@ msgstr "每个字符都是 %1!u! 像素宽，%2!u! 像素高"
 msgid "This is a test"
 msgstr "This is a test 这是测试"
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+#, fuzzy
+#| msgid "Error: Could not find process \"%1\".\n"
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr "错误: 找不到进程 \"%1\"。\n"
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr "DirectX 诊断工具"
@@ -18694,7 +18819,7 @@ msgstr ""
 msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr "正在更新位于 %s 的 Wine 配置，请稍候..."
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -18705,23 +18830,23 @@ msgstr ""
 "(LGPL) 来对其进行添加、修改和重新发布。许可协议版本为 2.1，您也可以选择采用更"
 "新的版本。"
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 msgid "Windows registration information"
 msgstr "Windows 注册信息"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr "姓名(&O):"
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr "组织(&Z):"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr "应用程序设置"
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
@@ -18730,55 +18855,55 @@ msgstr ""
 "对不同的程序，可以让 Wine 假装成不同版本的 Windows，也可以在“函数库”与“显示”"
 "标签页中作不同的设置。"
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 msgid "Add appli&cation..."
 msgstr "增加程序设置(&C)..."
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr "删除程序设置(&R)"
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr "&Windows 版本:"
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr "窗口设置"
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr "全屏模式下自动捕获光标(&M)"
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr "允许窗口管理器装饰窗口(&D)"
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr "允许窗口管理器控制窗口(&W)"
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr "虚拟桌面(&E)"
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr "桌面大小(&S):"
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr "屏幕分辨率"
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr "这是使用 10 号 Tahoma 字体的示例文本"
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr "DLL 顶替"
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
@@ -18787,169 +18912,169 @@ msgstr ""
 "对各个动态链接库，可以选择使用 Wine 提供的内建版本，还是使用取自 Windows 或程"
 "序所提供的原装版本。"
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr "新增函数库顶替(&N):"
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr "添加(&D)"
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr "已有的函数库顶替(&O):"
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 msgid "&Edit..."
 msgstr "编辑(&E)..."
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr "编辑顶替"
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr "载入顺序"
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr "内建(Wine)(&B)"
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr "原装(Windows)(&N)"
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 msgid "Buil&tin then Native"
 msgstr "内建先于原装(&T)"
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr "原装先于内建(&V)"
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr "选择驱动器盘符"
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 msgid "Drive configuration"
 msgstr "驱动器设置"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 msgid ""
 "Failed to connect to the mount manager; the drive configuration cannot be "
 "edited."
 msgstr "无法连接到挂载管理器；不能修改驱动器配置。"
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 msgid "A&dd..."
 msgstr "添加(&D)..."
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr "路径(&P):"
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 msgid "Show Advan&ced"
 msgstr "显示高级选项(&C)"
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr "设备(&V):"
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr "浏览(&W)..."
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr "卷标(&L):"
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr "序列号(&E):"
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 msgid "&Show dot files"
 msgstr "显示隐藏文件(&S)"
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr "驱动程序诊断"
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr "测试音频(&T)"
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr "默认值"
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr "输出设备:"
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr "语音输出设备:"
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr "输入设备:"
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr "语音输入设备:"
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 msgid "MIDI output device:"
 msgstr "MIDI 输出设备:"
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 msgid "Speaker configuration"
 msgstr "扬声器设置"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr "扬声器:"
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr "外观"
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr "主题(&T):"
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 msgid "&WinRT theme:"
 msgstr "WinRT 主题(&W):"
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr "安装主题(&I)..."
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr "物件(&E):"
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr "颜色(&O):"
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr "MIME 类型"
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 msgid "Manage file and protocol &associations"
 msgstr "管理文件和协议关联(&A)"
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr "文件夹"
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr "映射至(&L):"
 
@@ -19030,26 +19155,32 @@ msgid "(System default)"
 msgstr "(系统默认)"
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+#, fuzzy
+#| msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr "5.1 环绕声"
 
 #: programs/winecfg/winecfg.rc:91
+msgid "5.1 Surround"
+msgstr "5.1 环绕声"
+
+#: programs/winecfg/winecfg.rc:92
 msgid "Quadraphonic"
 msgstr "四声道录放音设备"
 
-#: programs/winecfg/winecfg.rc:92
+#: programs/winecfg/winecfg.rc:93
 msgid "Stereo"
 msgstr "双声道"
 
-#: programs/winecfg/winecfg.rc:93
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr "单声道"
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 msgid "Light"
 msgstr "浅色"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr "深色"
 
@@ -19166,127 +19297,127 @@ msgstr ""
 "\n"
 "请记得点选“驱动器”标签的“添加”来建立它!\n"
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr "控件背景"
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr "控件文字"
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr "菜单背景"
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr "菜单文字"
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr "滚动条"
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr "选中的文字背景"
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr "选中的文字"
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr "工具提示背景"
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr "工具提示文字"
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr "窗口背景"
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr "窗口文字"
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 msgid "Active Title Bar"
 msgstr "活动窗口标题栏"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr "活动窗口标题栏文字"
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr "非活动窗口标题栏"
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr "非活动窗口标题栏"
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr "消息框文字"
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr "应用程序工作区"
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr "焦点控件框架"
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr "活动窗口边界"
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr "非活动窗口边界"
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr "控件阴影"
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr "灰色文字"
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr "控件高亮"
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr "控件灰暗"
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr "控件光亮"
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr "控件切换背景"
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr "鼠标拖选框"
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr "活动窗口标题栏渐进目标色"
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr "非活动窗口标题栏渐进目标色"
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr "菜单高亮"
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr "菜单栏"
 
diff --git a/po/zh_TW.po b/po/zh_TW.po
index fe4244f41821..b26a18d9f062 100644
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -79,7 +79,7 @@ msgstr "修改(&M)..."
 
 #: dlls/appwiz.cpl/appwiz.rc:71 dlls/appwiz.cpl/appwiz.rc:45
 #: dlls/cryptui/cryptui.rc:351 dlls/msacm32/msacm32.rc:40
-#: programs/winecfg/winecfg.rc:205 programs/winecfg/winecfg.rc:242
+#: programs/winecfg/winecfg.rc:206 programs/winecfg/winecfg.rc:243
 #: programs/wordpad/wordpad.rc:256
 msgid "&Remove"
 msgstr "移除(&R)"
@@ -116,7 +116,7 @@ msgstr "技術支援資訊"
 #: programs/regedit/regedit.rc:325 programs/regedit/regedit.rc:341
 #: programs/regedit/regedit.rc:354 programs/regedit/regedit.rc:367
 #: programs/taskmgr/taskmgr.rc:442 programs/taskmgr/taskmgr.rc:517
-#: programs/winecfg/winecfg.rc:219 programs/winecfg/winecfg.rc:229
+#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
 #: programs/winefile/winefile.rc:127 programs/winefile/winefile.rc:150
 #: programs/winefile/winefile.rc:180 programs/winemine/winemine.rc:73
 #: programs/winemine/winemine.rc:84 programs/winemine/winemine.rc:98
@@ -221,7 +221,7 @@ msgstr "安裝(&I)"
 #: programs/regedit/regedit.rc:342 programs/regedit/regedit.rc:355
 #: programs/regedit/regedit.rc:368 programs/taskmgr/taskmgr.rc:443
 #: programs/taskmgr/taskmgr.rc:518 programs/wineboot/wineboot.rc:34
-#: programs/winecfg/winecfg.rc:220 programs/winecfg/winecfg.rc:230
+#: programs/winecfg/winecfg.rc:221 programs/winecfg/winecfg.rc:231
 #: programs/winefile/winefile.rc:128 programs/winefile/winefile.rc:151
 #: programs/winefile/winefile.rc:181 programs/winemine/winemine.rc:99
 #: programs/wordpad/wordpad.rc:216 programs/wordpad/wordpad.rc:227
@@ -710,7 +710,7 @@ msgid "Font St&yle:"
 msgstr "字型樣式(&Y):"
 
 #: dlls/comdlg32/comdlg32.rc:260 dlls/comdlg32/comdlg32.rc:439
-#: programs/winecfg/winecfg.rc:302
+#: programs/winecfg/winecfg.rc:303
 msgid "&Size:"
 msgstr "大小(&S):"
 
@@ -726,7 +726,7 @@ msgstr "刪除線(&K)"
 msgid "&Underline"
 msgstr "底線(&U)"
 
-#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:300
+#: dlls/comdlg32/comdlg32.rc:270 programs/winecfg/winecfg.rc:301
 msgid "&Color:"
 msgstr "色彩(&C):"
 
@@ -903,7 +903,7 @@ msgstr "份數(&C):"
 msgid "C&ollate"
 msgstr "自動分頁(&O)"
 
-#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:308
+#: dlls/comdlg32/comdlg32.rc:414 programs/winecfg/winecfg.rc:309
 msgid "Si&ze:"
 msgstr "大小(&Z):"
 
@@ -981,7 +981,7 @@ msgstr "檔案名稱:"
 msgid "Files of type:"
 msgstr "檔案類型:"
 
-#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:36
+#: dlls/comdlg32/comdlg32.rc:33 dlls/vbscript/vbscript.rc:37
 msgid "File not found"
 msgstr "找不到檔案"
 
@@ -2436,7 +2436,7 @@ msgid "&File name:"
 msgstr "檔案名稱(&F):"
 
 #: dlls/cryptui/cryptui.rc:301 dlls/cryptui/cryptui.rc:323
-#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:321
+#: dlls/cryptui/cryptui.rc:437 programs/winecfg/winecfg.rc:322
 msgid "B&rowse..."
 msgstr "瀏覽(&R)..."
 
@@ -3786,11 +3786,19 @@ msgstr "索引"
 msgid "Indeo Video Interactive version 5 video codec"
 msgstr "Wine 視訊 1 視訊編碼解碼器"
 
+#: dlls/iyuv_32/iyuv_32.rc:28
+msgid "IYUV codec"
+msgstr ""
+
+#: dlls/iyuv_32/iyuv_32.rc:29
+msgid "Intel Indeo IYUV codec"
+msgstr ""
+
 #: dlls/joy.cpl/joy.rc:37
 msgid "Joysticks"
 msgstr "搖桿"
 
-#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:218
+#: dlls/joy.cpl/joy.rc:40 programs/winecfg/winecfg.rc:219
 msgid "&Disable"
 msgstr "停用(&D)"
 
@@ -3949,11 +3957,11 @@ msgstr "無效的程序呼叫或引數"
 msgid "Subscript out of range"
 msgstr "註標超出範圍"
 
-#: dlls/jscript/jscript.rc:31
+#: dlls/jscript/jscript.rc:31 dlls/vbscript/vbscript.rc:36
 msgid "Out of stack space"
 msgstr "堆疊空間不足"
 
-#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:48
+#: dlls/jscript/jscript.rc:32 dlls/vbscript/vbscript.rc:49
 msgid "Object required"
 msgstr "需要物件"
 
@@ -3961,23 +3969,23 @@ msgstr "需要物件"
 msgid "Automation server can't create object"
 msgstr "自動作業伺服器無法建立物件"
 
-#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:52
+#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:53
 msgid "Object doesn't support this property or method"
 msgstr "物件不支援這個屬性或方法"
 
-#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:53
+#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:54
 msgid "Object doesn't support this action"
 msgstr "物件不支援這個動作"
 
-#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:57
+#: dlls/jscript/jscript.rc:36 dlls/vbscript/vbscript.rc:58
 msgid "Argument not optional"
 msgstr "引數並非可選的"
 
-#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:59
+#: dlls/jscript/jscript.rc:37 dlls/vbscript/vbscript.rc:60
 msgid "Object not a collection"
 msgstr "物件並非集合物件"
 
-#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:65
+#: dlls/jscript/jscript.rc:38 dlls/vbscript/vbscript.rc:69
 msgid "Syntax error"
 msgstr "語法錯誤"
 
@@ -3985,27 +3993,27 @@ msgstr "語法錯誤"
 msgid "Expected ';'"
 msgstr "預期為 ';'"
 
-#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:66
+#: dlls/jscript/jscript.rc:40 dlls/vbscript/vbscript.rc:70
 msgid "Expected '('"
 msgstr "預期為 '('"
 
-#: dlls/jscript/jscript.rc:41
+#: dlls/jscript/jscript.rc:41 dlls/vbscript/vbscript.rc:72
 msgid "Expected ')'"
 msgstr "預期為 ')'"
 
-#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:67
+#: dlls/jscript/jscript.rc:42 dlls/vbscript/vbscript.rc:73
 msgid "Expected identifier"
 msgstr "預期為識別碼"
 
-#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:68
+#: dlls/jscript/jscript.rc:43 dlls/vbscript/vbscript.rc:74
 msgid "Expected '='"
 msgstr "預期為 '='"
 
-#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:81
+#: dlls/jscript/jscript.rc:44 dlls/vbscript/vbscript.rc:93
 msgid "Invalid character"
 msgstr "無效的字元"
 
-#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:82
+#: dlls/jscript/jscript.rc:45 dlls/vbscript/vbscript.rc:94
 msgid "Unterminated string constant"
 msgstr "未終結的字串常數"
 
@@ -4049,7 +4057,7 @@ msgstr "Microsoft JScript 編譯錯誤"
 msgid "Microsoft JScript runtime error"
 msgstr "Microsoft JScript 執行期錯誤"
 
-#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:100
+#: dlls/jscript/jscript.rc:99 dlls/vbscript/vbscript.rc:117
 msgid "Unknown runtime error"
 msgstr "不明執行期錯誤"
 
@@ -4075,7 +4083,7 @@ msgstr "'[object]' 並非日期物件"
 msgid "Object expected"
 msgstr "預期為物件"
 
-#: dlls/jscript/jscript.rc:59
+#: dlls/jscript/jscript.rc:59 dlls/vbscript/vbscript.rc:66
 msgid "Illegal assignment"
 msgstr "不合法的指派"
 
@@ -4295,11 +4303,11 @@ msgstr "找不到檔案。\n"
 msgid "Path not found.\n"
 msgstr "找不到路徑。\n"
 
-#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3775
+#: dlls/kernelbase/winerror.mc:50 dlls/kernelbase/winerror.mc:3780
 msgid "Too many open files.\n"
 msgstr "開啟過多檔案。\n"
 
-#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3760
+#: dlls/kernelbase/winerror.mc:55 dlls/kernelbase/winerror.mc:3765
 msgid "Access denied.\n"
 msgstr "存取被拒。\n"
 
@@ -5651,7 +5659,7 @@ msgstr "作業被使用者取消。\n"
 msgid "File has a user-mapped section.\n"
 msgstr "檔案具有使用者對應區段。\n"
 
-#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3790
+#: dlls/kernelbase/winerror.mc:1760 dlls/kernelbase/winerror.mc:3795
 msgid "Connection refused.\n"
 msgstr "連線被拒。\n"
 
@@ -7236,68 +7244,74 @@ msgid "This network connection does not exist.\n"
 msgstr "這個網路連線不存在。\n"
 
 #: dlls/kernelbase/winerror.mc:3750
+#, fuzzy
+#| msgid "File or directory corrupt.\n"
+msgid "File or directory is not a reparse point.\n"
+msgstr "檔案或目錄損壞。\n"
+
+#: dlls/kernelbase/winerror.mc:3755
 msgid "Call interrupted.\n"
 msgstr "呼叫已中斷。\n"
 
-#: dlls/kernelbase/winerror.mc:3755
+#: dlls/kernelbase/winerror.mc:3760
 msgid "Invalid file handle.\n"
 msgstr "無效的檔案控制代碼。\n"
 
-#: dlls/kernelbase/winerror.mc:3765
+#: dlls/kernelbase/winerror.mc:3770
 msgid "Invalid pointer address.\n"
 msgstr "無效的指標位址。\n"
 
-#: dlls/kernelbase/winerror.mc:3770
+#: dlls/kernelbase/winerror.mc:3775
 msgid "Invalid argument.\n"
 msgstr "無效的引數。\n"
 
-#: dlls/kernelbase/winerror.mc:3780
+#: dlls/kernelbase/winerror.mc:3785
 msgid "Cannot assign requested address.\n"
 msgstr ""
 
-#: dlls/kernelbase/winerror.mc:3785
+#: dlls/kernelbase/winerror.mc:3790
 msgid "Connection reset by peer.\n"
 msgstr "連線被同儕節點重設。\n"
 
-#: dlls/kernelbase/winerror.mc:3795
+#: dlls/kernelbase/winerror.mc:3800
 msgid "Host not found.\n"
 msgstr "找不到主機。\n"
 
-#: dlls/kernelbase/winerror.mc:3800
+#: dlls/kernelbase/winerror.mc:3805
 msgid "Nonauthoritative host not found.\n"
 msgstr "找不到未授權的主機。\n"
 
-#: dlls/kernelbase/winerror.mc:3805
+#: dlls/kernelbase/winerror.mc:3810
 msgid "Nonrecoverable error.\n"
 msgstr "無法復原的錯誤。\n"
 
-#: dlls/kernelbase/winerror.mc:3810
+#: dlls/kernelbase/winerror.mc:3815
 msgid "Name valid, no data record.\n"
 msgstr "名稱有效，無資料記錄。\n"
 
-#: dlls/kernelbase/winerror.mc:3831
+#: dlls/kernelbase/winerror.mc:3836
 msgid "Not implemented.\n"
 msgstr "未實作。\n"
 
-#: dlls/kernelbase/winerror.mc:3852
+#: dlls/kernelbase/winerror.mc:3857
 msgid "Call failed.\n"
 msgstr "呼叫失敗。\n"
 
-#: dlls/kernelbase/winerror.mc:3817
+#: dlls/kernelbase/winerror.mc:3822
 #, fuzzy
 #| msgid "Unable to unload media.\n"
 msgid "Unable to find matching object.\n"
 msgstr "無法卸載媒體。\n"
 
-#: dlls/kernelbase/winerror.mc:3824
+#: dlls/kernelbase/winerror.mc:3829
 msgid "No Signature found in file.\n"
 msgstr "無法在檔案中找到簽章。\n"
 
-#: dlls/kernelbase/winerror.mc:3838
+#: dlls/kernelbase/winerror.mc:3843
 msgid "Invalid call.\n"
 msgstr "無效的呼叫。\n"
 
-#: dlls/kernelbase/winerror.mc:3845
+#: dlls/kernelbase/winerror.mc:3850
 msgid "Resource is not currently available.\n"
 msgstr "資源目前不可用。\n"
 
@@ -8258,7 +8272,7 @@ msgstr "超連結"
 msgid "Hyperlink Information"
 msgstr "超連結資訊"
 
-#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:249
+#: dlls/mshtml/mshtml.rc:43 programs/winecfg/winecfg.rc:250
 msgid "&Type:"
 msgstr "類型(&T):"
 
@@ -9892,7 +9906,7 @@ msgid "b"
 msgstr "b"
 
 #: dlls/sane.ds/sane.rc:34 dlls/wineps.drv/wineps.rc:52
-#: programs/winecfg/winecfg.rc:188
+#: programs/winecfg/winecfg.rc:189
 msgctxt "unit: dots/inch"
 msgid "dpi"
 msgstr "dpi"
@@ -10428,7 +10442,7 @@ msgstr "開啟(&O):"
 
 #: dlls/shell32/shell32.rc:345 programs/progman/progman.rc:182
 #: programs/progman/progman.rc:201 programs/progman/progman.rc:218
-#: programs/winecfg/winecfg.rc:247 programs/winefile/winefile.rc:129
+#: programs/winecfg/winecfg.rc:248 programs/winefile/winefile.rc:129
 msgid "&Browse..."
 msgstr "瀏覽(&B)..."
 
@@ -10514,7 +10528,7 @@ msgstr "原來的位置"
 msgid "Date deleted"
 msgstr "日期已刪除"
 
-#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:106
+#: dlls/shell32/shell32.rc:151 programs/winecfg/winecfg.rc:107
 #: programs/winefile/winefile.rc:99
 msgctxt "display name"
 msgid "Desktop"
@@ -12944,250 +12958,326 @@ msgstr "被零除的錯誤。\n"
 msgid "Type mismatch"
 msgstr "類型不相符"
 
-#: dlls/vbscript/vbscript.rc:37
+#: dlls/vbscript/vbscript.rc:38
 msgid "Device I/O error"
 msgstr "I/O 裝置錯誤"
 
-#: dlls/vbscript/vbscript.rc:38
+#: dlls/vbscript/vbscript.rc:39
 msgid "File already exists"
 msgstr "檔案已經存在"
 
-#: dlls/vbscript/vbscript.rc:39
+#: dlls/vbscript/vbscript.rc:40
 msgid "Disk full"
 msgstr "磁碟已滿"
 
-#: dlls/vbscript/vbscript.rc:40
+#: dlls/vbscript/vbscript.rc:41
 msgid "Too many files"
 msgstr "過多檔案"
 
-#: dlls/vbscript/vbscript.rc:41
+#: dlls/vbscript/vbscript.rc:42
 msgid "Permission denied"
 msgstr "存取被拒"
 
-#: dlls/vbscript/vbscript.rc:42
+#: dlls/vbscript/vbscript.rc:43
 msgid "Path/File access error"
 msgstr "路徑/檔案存取錯誤"
 
-#: dlls/vbscript/vbscript.rc:43
+#: dlls/vbscript/vbscript.rc:44
 msgid "Path not found"
 msgstr "找不到路徑"
 
-#: dlls/vbscript/vbscript.rc:44
+#: dlls/vbscript/vbscript.rc:45
 msgid "Object variable not set"
 msgstr "沒有設定物件變數"
 
-#: dlls/vbscript/vbscript.rc:45
+#: dlls/vbscript/vbscript.rc:46
 #, fuzzy
 #| msgid "Object is not initialized.\n"
 msgid "For loop not initialized"
 msgstr "物件未初始化。\n"
 
-#: dlls/vbscript/vbscript.rc:46
+#: dlls/vbscript/vbscript.rc:47
 msgid "Invalid use of Null"
 msgstr "Null 的使用不正確"
 
-#: dlls/vbscript/vbscript.rc:47
+#: dlls/vbscript/vbscript.rc:48
 msgid "Can't create necessary temporary file"
 msgstr "無法建立必須的暫存檔案"
 
-#: dlls/vbscript/vbscript.rc:49
+#: dlls/vbscript/vbscript.rc:50
 msgid "ActiveX component can't create object"
 msgstr "ActiveX 元件無法建立物件"
 
-#: dlls/vbscript/vbscript.rc:50
+#: dlls/vbscript/vbscript.rc:51
 msgid "Class doesn't support Automation"
 msgstr "物件類別不支援自動化"
 
-#: dlls/vbscript/vbscript.rc:51
+#: dlls/vbscript/vbscript.rc:52
 msgid "File name or class name not found during Automation operation"
 msgstr "在自動化運作過程中找不到檔案名稱或物件類別名稱"
 
-#: dlls/vbscript/vbscript.rc:54
+#: dlls/vbscript/vbscript.rc:55
 msgid "Object doesn't support named arguments"
 msgstr "物件不支援指名的引數"
 
-#: dlls/vbscript/vbscript.rc:55
+#: dlls/vbscript/vbscript.rc:56
 msgid "Object doesn't support current locale setting"
 msgstr "物件不支援目前的地區設定"
 
-#: dlls/vbscript/vbscript.rc:56
+#: dlls/vbscript/vbscript.rc:57
 msgid "Named argument not found"
 msgstr "找不到指名的引數"
 
-#: dlls/vbscript/vbscript.rc:58
+#: dlls/vbscript/vbscript.rc:59
 msgid "Wrong number of arguments or invalid property assignment"
 msgstr "引數的個數錯誤或指派的屬性無效"
 
-#: dlls/vbscript/vbscript.rc:60
+#: dlls/vbscript/vbscript.rc:62
 msgid "Specified DLL function not found"
 msgstr "找不到指定的 DLL 函數"
 
 #: dlls/vbscript/vbscript.rc:61
+msgid "This key is already associated with an element of this collection"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:63
 msgid "Variable uses an Automation type not supported in VBScript"
 msgstr "變數使用了 VBScript 不支援的自動化類型"
 
-#: dlls/vbscript/vbscript.rc:62
+#: dlls/vbscript/vbscript.rc:64
 msgid "The remote server machine does not exist or is unavailable"
 msgstr "遠端伺服器不存在或無法使用"
 
-#: dlls/vbscript/vbscript.rc:63
+#: dlls/vbscript/vbscript.rc:65
 #, fuzzy
 #| msgid "'|' is undefined"
 msgid "Variable is undefined"
 msgstr "'|' 未定義"
 
-#: dlls/vbscript/vbscript.rc:64
+#: dlls/vbscript/vbscript.rc:67
 msgid "Invalid or unqualified reference"
 msgstr "無效或不合格的引用"
 
-#: dlls/vbscript/vbscript.rc:69
+#: dlls/vbscript/vbscript.rc:68
+#, fuzzy
+#| msgid "Class does not exist.\n"
+msgid "Class not defined"
+msgstr "類別不存在。\n"
+
+#: dlls/vbscript/vbscript.rc:71
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected ']'"
+msgstr "預期為 ';'"
+
+#: dlls/vbscript/vbscript.rc:75
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'If'"
+msgstr "預期為 ';'"
+
+#: dlls/vbscript/vbscript.rc:76
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'To'"
 msgstr "預期為 ';'"
 
-#: dlls/vbscript/vbscript.rc:70
+#: dlls/vbscript/vbscript.rc:77
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'End'"
 msgstr "預期為 '@end'"
 
-#: dlls/vbscript/vbscript.rc:71
+#: dlls/vbscript/vbscript.rc:78
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Function'"
+msgstr "預期為 ';'"
+
+#: dlls/vbscript/vbscript.rc:79
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Sub'"
+msgstr "預期為 ';'"
+
+#: dlls/vbscript/vbscript.rc:80
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'Then'"
 msgstr "預期為 '@end'"
 
-#: dlls/vbscript/vbscript.rc:72
+#: dlls/vbscript/vbscript.rc:81
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected 'Wend'"
 msgstr "預期為 '@end'"
 
-#: dlls/vbscript/vbscript.rc:73
+#: dlls/vbscript/vbscript.rc:82
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Loop'"
 msgstr "預期為 ';'"
 
-#: dlls/vbscript/vbscript.rc:74
+#: dlls/vbscript/vbscript.rc:83
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Next'"
 msgstr "預期為 ';'"
 
-#: dlls/vbscript/vbscript.rc:75
+#: dlls/vbscript/vbscript.rc:84
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Case'"
 msgstr "預期為 ';'"
 
-#: dlls/vbscript/vbscript.rc:76
+#: dlls/vbscript/vbscript.rc:85
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Select'"
+msgstr "預期為 ';'"
+
+#: dlls/vbscript/vbscript.rc:86
 #, fuzzy
 #| msgid "Expected '@end'"
 msgid "Expected statement"
 msgstr "預期為 '@end'"
 
-#: dlls/vbscript/vbscript.rc:77
+#: dlls/vbscript/vbscript.rc:87
 #, fuzzy
 #| msgid "Expected an operand.\n"
 msgid "Expected end of statement"
 msgstr "預期為一個運算元。\n"
 
-#: dlls/vbscript/vbscript.rc:78
+#: dlls/vbscript/vbscript.rc:88
 #, fuzzy
 #| msgid "Unterminated string constant"
 msgid "Expected integer constant"
 msgstr "未終結的字串常數"
 
-#: dlls/vbscript/vbscript.rc:79
+#: dlls/vbscript/vbscript.rc:89
 msgid "Expected 'While', 'Until' or end of statement"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:80
+#: dlls/vbscript/vbscript.rc:91
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'With'"
+msgstr "預期為 ';'"
+
+#: dlls/vbscript/vbscript.rc:90
+#, fuzzy
+#| msgid "Secret too long.\n"
+msgid "Identifier too long"
+msgstr "隱密太長。\n"
+
+#: dlls/vbscript/vbscript.rc:92
 #, fuzzy
 #| msgid "Invalid flag number.\n"
 msgid "Invalid number"
 msgstr "無效的旗標號碼。\n"
 
-#: dlls/vbscript/vbscript.rc:83
+#: dlls/vbscript/vbscript.rc:95
+#, fuzzy
+#| msgid "Invalid use of Null"
+msgid "Invalid use of 'Me' keyword"
+msgstr "Null 的使用不正確"
+
+#: dlls/vbscript/vbscript.rc:96
 msgid "'loop' without 'do'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:84
+#: dlls/vbscript/vbscript.rc:97
 #, fuzzy
 #| msgid "Invalid printer state.\n"
 msgid "Invalid 'exit' statement"
 msgstr "無效的印表機狀態。\n"
 
-#: dlls/vbscript/vbscript.rc:85
+#: dlls/vbscript/vbscript.rc:98
 #, fuzzy
 #| msgid "Label redefined"
 msgid "Name redefined"
 msgstr "標貼重複定義"
 
-#: dlls/vbscript/vbscript.rc:86
+#: dlls/vbscript/vbscript.rc:99
 msgid "Must be first statement on the line"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:87
+#: dlls/vbscript/vbscript.rc:100
 msgid "Cannot use parentheses when calling a Sub"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:88
+#: dlls/vbscript/vbscript.rc:101
 #, fuzzy
 #| msgid "Expected an operator.\n"
 msgid "Expected literal constant"
 msgstr "預期為一個運算子。\n"
 
-#: dlls/vbscript/vbscript.rc:89
+#: dlls/vbscript/vbscript.rc:102
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'In'"
 msgstr "預期為 ';'"
 
-#: dlls/vbscript/vbscript.rc:90
+#: dlls/vbscript/vbscript.rc:103
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Expected 'Class'"
 msgstr "預期為 ';'"
 
-#: dlls/vbscript/vbscript.rc:91
+#: dlls/vbscript/vbscript.rc:104
 msgid "Must be defined inside a Class"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:92
+#: dlls/vbscript/vbscript.rc:105
 msgid "Expected Let or Set or Get in property declaration"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:93
+#: dlls/vbscript/vbscript.rc:106
+#, fuzzy
+#| msgid "Expected ';'"
+msgid "Expected 'Property'"
+msgstr "預期為 ';'"
+
+#: dlls/vbscript/vbscript.rc:107
+msgid "Number of arguments must be consistent across properties specification"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:108
+msgid "Cannot have multiple default property/method in a Class"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:109
 msgid "Class initialize or terminate do not have arguments"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:94
+#: dlls/vbscript/vbscript.rc:110
 msgid "Property set or let must have at least one argument"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:95
+#: dlls/vbscript/vbscript.rc:111
 #, fuzzy
 #| msgid "Expected ';'"
 msgid "Unexpected 'Next'"
 msgstr "預期為 ';'"
 
-#: dlls/vbscript/vbscript.rc:96
+#: dlls/vbscript/vbscript.rc:112
 msgid "'Default' specification must also specify 'Public'"
 msgstr ""
 
-#: dlls/vbscript/vbscript.rc:98
+#: dlls/vbscript/vbscript.rc:113
+msgid "'Default' specification can only be on Property Get"
+msgstr ""
+
+#: dlls/vbscript/vbscript.rc:115
 msgid "Microsoft VBScript compilation error"
 msgstr "Microsoft VBScript 編譯錯誤"
 
-#: dlls/vbscript/vbscript.rc:99
+#: dlls/vbscript/vbscript.rc:116
 msgid "Microsoft VBScript runtime error"
 msgstr "Microsoft VBScript 執行期錯誤"
 
 #: dlls/winemac.drv/winemac.rc:32 programs/wineboot/wineboot.rc:42
-#: programs/winecfg/winecfg.rc:143
+#: programs/winecfg/winecfg.rc:144
 msgid "Wine"
 msgstr "Wine"
 
@@ -14236,7 +14326,7 @@ msgid "Digi&tal"
 msgstr "數位時鐘(&T)"
 
 #: programs/clock/clock.rc:35 programs/notepad/notepad.rc:59
-#: programs/winecfg/winecfg.rc:315 programs/winefile/winefile.rc:63
+#: programs/winecfg/winecfg.rc:316 programs/winefile/winefile.rc:63
 #: programs/wordpad/wordpad.rc:84
 msgid "&Font..."
 msgstr "字型(&F)..."
@@ -15250,6 +15340,41 @@ msgstr "每個字元都是 %1!u! 個像素寬，%2!u! 個像素高"
 msgid "This is a test"
 msgstr "這是一段測試訊息"
 
+#: programs/wscript/wscript.rc:45
+msgid ""
+"Usage: CScript scriptname.extension [option...] [arguments...]\n"
+"\n"
+"Options:\n"
+"//B         Batch mode: Suppresses script errors and prompts from "
+"displaying\n"
+"//D         Enable Active Debugging\n"
+"//E:engine  Use engine for executing script\n"
+"//H:CScript Changes the default script host to CScript.exe\n"
+"//H:WScript Changes the default script host to WScript.exe (default)\n"
+"//I         Interactive mode (default, opposite of //B)\n"
+"//Job:xxxx  Execute a WSF job\n"
+"//Logo      Display logo (default)\n"
+"//Nologo    Prevent logo display: No banner will be shown at execution time\n"
+"//S         Save current command line options for this user\n"
+"//T:nn      Time out in seconds:  Maximum time a script is permitted to run\n"
+"//X         Execute script in debugger\n"
+"//U         Use Unicode for redirected I/O from the console\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:47
+msgid "Input Error: There is no script file specified.\n"
+msgstr ""
+
+#: programs/wscript/wscript.rc:48
+#, fuzzy
+#| msgid "Error: Could not find process \"%1\".\n"
+msgid "Input Error: Can not find script file \"%1\".\n"
+msgstr "錯誤: 找不到處理程序 %1。\n"
+
+#: programs/wscript/wscript.rc:49
+msgid "CScript Error: Loading script \"%1\" failed (%2).\n"
+msgstr ""
+
 #: programs/dxdiag/dxdiag.rc:30
 msgid "DirectX Diagnostic Tool"
 msgstr "DirectX 診斷工具"
@@ -18928,7 +19053,7 @@ msgstr ""
 msgid "The Wine configuration in %s is being updated, please wait..."
 msgstr "正在更新 %s 的 Wine 設定，請稍候..."
 
-#: programs/winecfg/winecfg.rc:146
+#: programs/winecfg/winecfg.rc:147
 msgid ""
 "This program is free software; you can redistribute it and/or modify it "
 "under the terms of the GNU Lesser General Public License as published by the "
@@ -18938,23 +19063,23 @@ msgstr ""
 "這個程式是自由軟體; 您可以遵照自由軟體基金會所制定的 GNU LGPL 2.1 版或者更新"
 "版本的許可條款，來修改和重新散布這個程式。"
 
-#: programs/winecfg/winecfg.rc:148
+#: programs/winecfg/winecfg.rc:149
 msgid "Windows registration information"
 msgstr "Windows 註冊資訊"
 
-#: programs/winecfg/winecfg.rc:149
+#: programs/winecfg/winecfg.rc:150
 msgid "&Owner:"
 msgstr "姓名(&O):"
 
-#: programs/winecfg/winecfg.rc:151
+#: programs/winecfg/winecfg.rc:152
 msgid "Organi&zation:"
 msgstr "組織(&Z):"
 
-#: programs/winecfg/winecfg.rc:159
+#: programs/winecfg/winecfg.rc:160
 msgid "Application settings"
 msgstr "應用程式設定"
 
-#: programs/winecfg/winecfg.rc:160
+#: programs/winecfg/winecfg.rc:161
 msgid ""
 "Wine can mimic different Windows versions for each application. This tab is "
 "linked to the Libraries and Graphics tabs to allow you to change system-wide "
@@ -18963,55 +19088,55 @@ msgstr ""
 "針對不同程式，Wine 可以模仿為不同版本的 Windows。「函式庫」與「顯示」分頁將連"
 "結到這個分頁，除了調整預設設定，也能調整個別程式的設定。"
 
-#: programs/winecfg/winecfg.rc:164
+#: programs/winecfg/winecfg.rc:165
 msgid "Add appli&cation..."
 msgstr "新增程式(&C)..."
 
-#: programs/winecfg/winecfg.rc:165
+#: programs/winecfg/winecfg.rc:166
 msgid "&Remove application"
 msgstr "移除程式(&R)"
 
-#: programs/winecfg/winecfg.rc:166
+#: programs/winecfg/winecfg.rc:167
 msgid "&Windows Version:"
 msgstr "Windows 版本(&W):"
 
-#: programs/winecfg/winecfg.rc:174
+#: programs/winecfg/winecfg.rc:175
 msgid "Window settings"
 msgstr "視窗設定"
 
-#: programs/winecfg/winecfg.rc:175
+#: programs/winecfg/winecfg.rc:176
 msgid "Automatically capture the &mouse in full-screen windows"
 msgstr "自動在全螢幕視窗中捕捉滑鼠(&M)"
 
-#: programs/winecfg/winecfg.rc:176
+#: programs/winecfg/winecfg.rc:177
 msgid "Allow the window manager to &decorate the windows"
 msgstr "允許視窗管理器裝飾視窗(&D)"
 
-#: programs/winecfg/winecfg.rc:177
+#: programs/winecfg/winecfg.rc:178
 msgid "Allow the &window manager to control the windows"
 msgstr "允許視窗管理器控制視窗(&W)"
 
-#: programs/winecfg/winecfg.rc:178
+#: programs/winecfg/winecfg.rc:179
 msgid "&Emulate a virtual desktop"
 msgstr "模擬一個虛擬桌面(&E)"
 
-#: programs/winecfg/winecfg.rc:180
+#: programs/winecfg/winecfg.rc:181
 msgid "Desktop &size:"
 msgstr "桌面大小(&S):"
 
-#: programs/winecfg/winecfg.rc:185
+#: programs/winecfg/winecfg.rc:186
 msgid "Screen resolution"
 msgstr "螢幕解析度"
 
-#: programs/winecfg/winecfg.rc:189
+#: programs/winecfg/winecfg.rc:190
 msgid "This is a sample text using 10 point Tahoma"
 msgstr "這是使用 10 點 Tahoma 字型的範例文字"
 
-#: programs/winecfg/winecfg.rc:196
+#: programs/winecfg/winecfg.rc:197
 msgid "DLL overrides"
 msgstr "DLL 覆寫"
 
-#: programs/winecfg/winecfg.rc:197
+#: programs/winecfg/winecfg.rc:198
 msgid ""
 "Dynamic Link Libraries can be specified individually to be either builtin "
 "(provided by Wine) or native (taken from Windows or provided by the "
@@ -19020,175 +19145,175 @@ msgstr ""
 "動態連結函式庫可以個別設定，來指定要使用 Wine 提供的內建版本，還是使用取自 "
 "Windows 或程式所提供的原生版本。"
 
-#: programs/winecfg/winecfg.rc:199
+#: programs/winecfg/winecfg.rc:200
 msgid "&New override for library:"
 msgstr "新增函式庫覆寫(&N):"
 
-#: programs/winecfg/winecfg.rc:201
+#: programs/winecfg/winecfg.rc:202
 msgid "A&dd"
 msgstr "新增(&D)"
 
-#: programs/winecfg/winecfg.rc:202
+#: programs/winecfg/winecfg.rc:203
 msgid "Existing &overrides:"
 msgstr "已有的函式庫覆寫(&O):"
 
-#: programs/winecfg/winecfg.rc:204
+#: programs/winecfg/winecfg.rc:205
 msgid "&Edit..."
 msgstr "編輯(&E)..."
 
-#: programs/winecfg/winecfg.rc:210
+#: programs/winecfg/winecfg.rc:211
 msgid "Edit Override"
 msgstr "編輯覆寫設定"
 
-#: programs/winecfg/winecfg.rc:213
+#: programs/winecfg/winecfg.rc:214
 msgid "Load order"
 msgstr "載入順序"
 
-#: programs/winecfg/winecfg.rc:214
+#: programs/winecfg/winecfg.rc:215
 msgid "&Builtin (Wine)"
 msgstr "內建 (Wine)(&B)"
 
-#: programs/winecfg/winecfg.rc:215
+#: programs/winecfg/winecfg.rc:216
 msgid "&Native (Windows)"
 msgstr "原生 (Windows)(&N)"
 
-#: programs/winecfg/winecfg.rc:216
+#: programs/winecfg/winecfg.rc:217
 msgid "Buil&tin then Native"
 msgstr "內建先於原生(&T)"
 
-#: programs/winecfg/winecfg.rc:217
+#: programs/winecfg/winecfg.rc:218
 msgid "Nati&ve then Builtin"
 msgstr "原生先於內建(&V)"
 
-#: programs/winecfg/winecfg.rc:225
+#: programs/winecfg/winecfg.rc:226
 msgid "Select Drive Letter"
 msgstr "選擇儲存裝置代號"
 
-#: programs/winecfg/winecfg.rc:237
+#: programs/winecfg/winecfg.rc:238
 msgid "Drive configuration"
 msgstr "儲存裝置設定"
 
-#: programs/winecfg/winecfg.rc:238
+#: programs/winecfg/winecfg.rc:239
 msgid ""
 "Failed to connect to the mount manager; the drive configuration cannot be "
 "edited."
 msgstr "連線到掛載管理員時失敗; 無法編輯儲存裝置設定。"
 
-#: programs/winecfg/winecfg.rc:241
+#: programs/winecfg/winecfg.rc:242
 msgid "A&dd..."
 msgstr "新增(&D)..."
 
-#: programs/winecfg/winecfg.rc:245
+#: programs/winecfg/winecfg.rc:246
 msgid "&Path:"
 msgstr "路徑(&P):"
 
-#: programs/winecfg/winecfg.rc:252 programs/winecfg/winecfg.rc:37
+#: programs/winecfg/winecfg.rc:253 programs/winecfg/winecfg.rc:37
 msgid "Show Advan&ced"
 msgstr "顯示進階選項(&C)"
 
-#: programs/winecfg/winecfg.rc:253
+#: programs/winecfg/winecfg.rc:254
 msgid "De&vice:"
 msgstr "裝置(&V):"
 
-#: programs/winecfg/winecfg.rc:255
+#: programs/winecfg/winecfg.rc:256
 msgid "Bro&wse..."
 msgstr "瀏覽(&W)..."
 
-#: programs/winecfg/winecfg.rc:257
+#: programs/winecfg/winecfg.rc:258
 msgid "&Label:"
 msgstr "標籤(&L):"
 
-#: programs/winecfg/winecfg.rc:259
+#: programs/winecfg/winecfg.rc:260
 msgid "S&erial:"
 msgstr "序號(&E):"
 
-#: programs/winecfg/winecfg.rc:262
+#: programs/winecfg/winecfg.rc:263
 msgid "&Show dot files"
 msgstr "顯示點檔案(&S)"
 
-#: programs/winecfg/winecfg.rc:269
+#: programs/winecfg/winecfg.rc:270
 msgid "Driver diagnostics"
 msgstr "驅動程式資訊"
 
-#: programs/winecfg/winecfg.rc:271
+#: programs/winecfg/winecfg.rc:272
 msgid "&Test Sound"
 msgstr "測試音效(&T):"
 
-#: programs/winecfg/winecfg.rc:272
+#: programs/winecfg/winecfg.rc:273
 msgid "Defaults"
 msgstr "預設"
 
-#: programs/winecfg/winecfg.rc:273
+#: programs/winecfg/winecfg.rc:274
 msgid "Output device:"
 msgstr "輸出裝置:"
 
-#: programs/winecfg/winecfg.rc:274
+#: programs/winecfg/winecfg.rc:275
 msgid "Voice output device:"
 msgstr "語音輸出裝置:"
 
-#: programs/winecfg/winecfg.rc:275
+#: programs/winecfg/winecfg.rc:276
 msgid "Input device:"
 msgstr "輸入裝置:"
 
-#: programs/winecfg/winecfg.rc:276
+#: programs/winecfg/winecfg.rc:277
 msgid "Voice input device:"
 msgstr "語音輸入裝置:"
 
-#: programs/winecfg/winecfg.rc:277
+#: programs/winecfg/winecfg.rc:278
 #, fuzzy
 #| msgid "Output device:"
 msgid "MIDI output device:"
 msgstr "輸出裝置:"
 
-#: programs/winecfg/winecfg.rc:283 programs/winecfg/winecfg.rc:89
+#: programs/winecfg/winecfg.rc:284 programs/winecfg/winecfg.rc:89
 msgid "Speaker configuration"
 msgstr "喇叭設定"
 
-#: programs/winecfg/winecfg.rc:286
+#: programs/winecfg/winecfg.rc:287
 msgid "Speakers:"
 msgstr "喇叭:"
 
-#: programs/winecfg/winecfg.rc:294
+#: programs/winecfg/winecfg.rc:295
 msgid "Appearance"
 msgstr "外觀"
 
-#: programs/winecfg/winecfg.rc:295
+#: programs/winecfg/winecfg.rc:296
 msgid "&Theme:"
 msgstr "主題(&T):"
 
-#: programs/winecfg/winecfg.rc:297
+#: programs/winecfg/winecfg.rc:298
 #, fuzzy
 #| msgid "&Theme:"
 msgid "&WinRT theme:"
 msgstr "主題(&T):"
 
-#: programs/winecfg/winecfg.rc:299
+#: programs/winecfg/winecfg.rc:300
 msgid "&Install theme..."
 msgstr "安裝主題(&I)..."
 
-#: programs/winecfg/winecfg.rc:304
+#: programs/winecfg/winecfg.rc:305
 msgid "It&em:"
 msgstr "項目(&E):"
 
-#: programs/winecfg/winecfg.rc:306
+#: programs/winecfg/winecfg.rc:307
 msgid "C&olor:"
 msgstr "顏色(&O):"
 
-#: programs/winecfg/winecfg.rc:312
+#: programs/winecfg/winecfg.rc:313
 msgid "MIME types"
 msgstr "MIME 類型"
 
-#: programs/winecfg/winecfg.rc:313
+#: programs/winecfg/winecfg.rc:314
 #, fuzzy
 #| msgid "Manage file &associations"
 msgid "Manage file and protocol &associations"
 msgstr "管理檔案關聯(&A)"
 
-#: programs/winecfg/winecfg.rc:316
+#: programs/winecfg/winecfg.rc:317
 msgid "Folders"
 msgstr "資料夾"
 
-#: programs/winecfg/winecfg.rc:319
+#: programs/winecfg/winecfg.rc:320
 msgid "&Link to:"
 msgstr "連結至(&L):"
 
@@ -19269,28 +19394,34 @@ msgid "(System default)"
 msgstr "(系統預設值)"
 
 #: programs/winecfg/winecfg.rc:90
-msgid "5.1 Surround"
+#, fuzzy
+#| msgid "5.1 Surround"
+msgid "7.1 Surround"
 msgstr "5.1 環場音效"
 
 #: programs/winecfg/winecfg.rc:91
+msgid "5.1 Surround"
+msgstr "5.1 環場音效"
+
+#: programs/winecfg/winecfg.rc:92
 msgid "Quadraphonic"
 msgstr "四聲道"
 
-#: programs/winecfg/winecfg.rc:92
+#: programs/winecfg/winecfg.rc:93
 msgid "Stereo"
 msgstr "雙聲道"
 
-#: programs/winecfg/winecfg.rc:93
+#: programs/winecfg/winecfg.rc:94
 msgid "Mono"
 msgstr "單聲道"
 
-#: programs/winecfg/winecfg.rc:98
+#: programs/winecfg/winecfg.rc:99
 #, fuzzy
 #| msgid "Right"
 msgid "Light"
 msgstr "右"
 
-#: programs/winecfg/winecfg.rc:99
+#: programs/winecfg/winecfg.rc:100
 msgid "Dark"
 msgstr ""
 
@@ -19408,127 +19539,127 @@ msgstr ""
 "\n"
 "請記得按「儲存裝置」分頁的 [加入] 按鈕來建立一個新儲存裝置!\n"
 
-#: programs/winecfg/winecfg.rc:104
+#: programs/winecfg/winecfg.rc:105
 msgid "Controls Background"
 msgstr "按鈕背景"
 
-#: programs/winecfg/winecfg.rc:105
+#: programs/winecfg/winecfg.rc:106
 msgid "Controls Text"
 msgstr "按鈕文字"
 
-#: programs/winecfg/winecfg.rc:107
+#: programs/winecfg/winecfg.rc:108
 msgid "Menu Background"
 msgstr "功能表背景"
 
-#: programs/winecfg/winecfg.rc:108
+#: programs/winecfg/winecfg.rc:109
 msgid "Menu Text"
 msgstr "功能表文字"
 
-#: programs/winecfg/winecfg.rc:109
+#: programs/winecfg/winecfg.rc:110
 msgid "Scrollbar"
 msgstr "捲軸"
 
-#: programs/winecfg/winecfg.rc:110
+#: programs/winecfg/winecfg.rc:111
 msgid "Selection Background"
 msgstr "選擇區背景"
 
-#: programs/winecfg/winecfg.rc:111
+#: programs/winecfg/winecfg.rc:112
 msgid "Selection Text"
 msgstr "選擇區文字"
 
-#: programs/winecfg/winecfg.rc:112
+#: programs/winecfg/winecfg.rc:113
 msgid "Tooltip Background"
 msgstr "工具提示背景"
 
-#: programs/winecfg/winecfg.rc:113
+#: programs/winecfg/winecfg.rc:114
 msgid "Tooltip Text"
 msgstr "工具提示文字"
 
-#: programs/winecfg/winecfg.rc:114
+#: programs/winecfg/winecfg.rc:115
 msgid "Window Background"
 msgstr "視窗背景"
 
-#: programs/winecfg/winecfg.rc:115
+#: programs/winecfg/winecfg.rc:116
 msgid "Window Text"
 msgstr "視窗文字"
 
-#: programs/winecfg/winecfg.rc:116
+#: programs/winecfg/winecfg.rc:117
 msgid "Active Title Bar"
 msgstr "使用中標題列"
 
-#: programs/winecfg/winecfg.rc:117
+#: programs/winecfg/winecfg.rc:118
 msgid "Active Title Text"
 msgstr "使用中標題列文字"
 
-#: programs/winecfg/winecfg.rc:118
+#: programs/winecfg/winecfg.rc:119
 msgid "Inactive Title Bar"
 msgstr "非使用中標題列"
 
-#: programs/winecfg/winecfg.rc:119
+#: programs/winecfg/winecfg.rc:120
 msgid "Inactive Title Text"
 msgstr "非使用中標題列文字"
 
-#: programs/winecfg/winecfg.rc:120
+#: programs/winecfg/winecfg.rc:121
 msgid "Message Box Text"
 msgstr "訊息方塊文字"
 
-#: programs/winecfg/winecfg.rc:121
+#: programs/winecfg/winecfg.rc:122
 msgid "Application Workspace"
 msgstr "應用程式工作區"
 
-#: programs/winecfg/winecfg.rc:122
+#: programs/winecfg/winecfg.rc:123
 msgid "Window Frame"
 msgstr "視窗邊框"
 
-#: programs/winecfg/winecfg.rc:123
+#: programs/winecfg/winecfg.rc:124
 msgid "Active Border"
 msgstr "使用中邊框"
 
-#: programs/winecfg/winecfg.rc:124
+#: programs/winecfg/winecfg.rc:125
 msgid "Inactive Border"
 msgstr "非使用中邊框"
 
-#: programs/winecfg/winecfg.rc:125
+#: programs/winecfg/winecfg.rc:126
 msgid "Controls Shadow"
 msgstr "按鈕背景"
 
-#: programs/winecfg/winecfg.rc:126
+#: programs/winecfg/winecfg.rc:127
 msgid "Gray Text"
 msgstr "灰色文字"
 
-#: programs/winecfg/winecfg.rc:127
+#: programs/winecfg/winecfg.rc:128
 msgid "Controls Highlight"
 msgstr "按鈕高亮度"
 
-#: programs/winecfg/winecfg.rc:128
+#: programs/winecfg/winecfg.rc:129
 msgid "Controls Dark Shadow"
 msgstr "按鈕陰影"
 
-#: programs/winecfg/winecfg.rc:129
+#: programs/winecfg/winecfg.rc:130
 msgid "Controls Light"
 msgstr "按鈕亮度"
 
-#: programs/winecfg/winecfg.rc:130
+#: programs/winecfg/winecfg.rc:131
 msgid "Controls Alternate Background"
 msgstr "按鈕替換背景"
 
-#: programs/winecfg/winecfg.rc:131
+#: programs/winecfg/winecfg.rc:132
 msgid "Hot Tracked Item"
 msgstr "熱點追蹤項目"
 
-#: programs/winecfg/winecfg.rc:132
+#: programs/winecfg/winecfg.rc:133
 msgid "Active Title Bar Gradient"
 msgstr "使用中標題列梯度"
 
-#: programs/winecfg/winecfg.rc:133
+#: programs/winecfg/winecfg.rc:134
 msgid "Inactive Title Bar Gradient"
 msgstr "非使用中標題列梯度"
 
-#: programs/winecfg/winecfg.rc:134
+#: programs/winecfg/winecfg.rc:135
 msgid "Menu Highlight"
 msgstr "選單高亮度"
 
-#: programs/winecfg/winecfg.rc:135
+#: programs/winecfg/winecfg.rc:136
 msgid "Menu Bar"
 msgstr "選單列"
 
diff --git a/programs/cscript/Makefile.in b/programs/cscript/Makefile.in
index 1aeda6cad0f7..f08ef2788226 100644
--- a/programs/cscript/Makefile.in
+++ b/programs/cscript/Makefile.in
@@ -9,4 +9,5 @@ SOURCES = \
 	arguments.c \
 	host.c \
 	ihost.idl \
-	main.c
+	main.c \
+	wscript.rc
diff --git a/programs/taskmgr/graphctl.c b/programs/taskmgr/graphctl.c
index 214cd75e7bac..9eb5aa89b67d 100644
--- a/programs/taskmgr/graphctl.c
+++ b/programs/taskmgr/graphctl.c
@@ -108,6 +108,26 @@ static void GraphCtrl_Init(TGraphCtrl* this)
 
 static void GraphCtrl_Resize(TGraphCtrl* this)
 {
+    /*  clean up existing GDI handles */
+    if (this->m_dcGrid != NULL)
+    {
+        SelectObject(this->m_dcGrid, this->m_bitmapOldGrid);
+        DeleteObject(this->m_bitmapGrid);
+        DeleteDC(this->m_dcGrid);
+        this->m_bitmapOldGrid = NULL;
+        this->m_bitmapGrid = NULL;
+        this->m_dcGrid = NULL;
+    }
+    if (this->m_dcPlot != NULL)
+    {
+        SelectObject(this->m_dcPlot, this->m_bitmapOldPlot);
+        DeleteObject(this->m_bitmapPlot);
+        DeleteDC(this->m_dcPlot);
+        this->m_bitmapOldPlot = NULL;
+        this->m_bitmapPlot = NULL;
+        this->m_dcPlot = NULL;
+    }
+
     /*  NOTE: Resize automatically gets called during the setup of the control */
     GetClientRect(this->m_hWnd, &this->m_rectClient);
 
@@ -143,7 +163,6 @@ static void GraphCtrl_InvalidateCtrl(TGraphCtrl* this)
     /*  to a bitmap.  The result is then BitBlt'd to the control whenever needed. */
     int i, j;
     int nCharacters;
-    int nTopGridPix, nMidGridPix, nBottomGridPix;
 
     HPEN oldPen;
     HPEN solidPen = CreatePen(PS_SOLID, 0, this->m_crGridColor);
@@ -196,15 +215,13 @@ static void GraphCtrl_InvalidateCtrl(TGraphCtrl* this)
      *  use SetPixel instead of a dotted pen - this allows for a 
      *  finer dotted line and a more "technical" look
      */
-    nMidGridPix    = (this->m_rectPlot.top + this->m_rectPlot.bottom)/2;
-    nTopGridPix    = nMidGridPix - this->m_nPlotHeight/4;
-    nBottomGridPix = nMidGridPix + this->m_nPlotHeight/4;
 
     for (i=this->m_rectPlot.left; i<this->m_rectPlot.right; i+=2) 
     {
-        SetPixel(this->m_dcGrid, i, nTopGridPix,    this->m_crGridColor);
-        SetPixel(this->m_dcGrid, i, nMidGridPix,    this->m_crGridColor);
-        SetPixel(this->m_dcGrid, i, nBottomGridPix, this->m_crGridColor);
+        for (j=this->m_rectPlot.bottom; j>=this->m_rectPlot.top; j-=10)
+        {
+            SetPixel(this->m_dcGrid, i, j, this->m_crGridColor);
+        }
     }
 
     for (i=this->m_rectPlot.left; i<this->m_rectPlot.right; i+=10)
diff --git a/programs/winecfg/audio.c b/programs/winecfg/audio.c
index 102ffc502dbf..c83c12b37a95 100644
--- a/programs/winecfg/audio.c
+++ b/programs/winecfg/audio.c
@@ -70,6 +70,7 @@ static const struct
     DWORD speaker_mask;
 } speaker_configs[] =
 {
+    { IDS_AUDIO_SPEAKER_7POINT1, KSAUDIO_SPEAKER_7POINT1_SURROUND },
     { IDS_AUDIO_SPEAKER_5POINT1, KSAUDIO_SPEAKER_5POINT1 },
     { IDS_AUDIO_SPEAKER_QUAD, KSAUDIO_SPEAKER_QUAD },
     { IDS_AUDIO_SPEAKER_STEREO, KSAUDIO_SPEAKER_STEREO },
diff --git a/programs/winecfg/resource.h b/programs/winecfg/resource.h
index b7b237221b0d..f0971c06b392 100644
--- a/programs/winecfg/resource.h
+++ b/programs/winecfg/resource.h
@@ -150,13 +150,14 @@
 #define IDS_AUDIO_SYSDEFAULT            1311
 #define IDS_AUDIO_DEVICE                1312
 #define IDC_SPEAKERCONFIG_SPEAKERS      1313
-#define IDS_AUDIO_SPEAKER_5POINT1       1314
-#define IDS_AUDIO_SPEAKER_QUAD          1315
-#define IDS_AUDIO_SPEAKER_STEREO        1316
-#define IDS_AUDIO_SPEAKER_MONO          1317
-#define IDC_LIST_AUDIO_DEVICES          1318
-#define IDS_AUDIO_SPEAKER_CONFIG        1319
-#define IDC_MIDI_DEVICE                 1320
+#define IDS_AUDIO_SPEAKER_7POINT1       1314
+#define IDS_AUDIO_SPEAKER_5POINT1       1315
+#define IDS_AUDIO_SPEAKER_QUAD          1316
+#define IDS_AUDIO_SPEAKER_STEREO        1317
+#define IDS_AUDIO_SPEAKER_MONO          1318
+#define IDC_LIST_AUDIO_DEVICES          1319
+#define IDS_AUDIO_SPEAKER_CONFIG        1320
+#define IDC_MIDI_DEVICE                 1321
 
 /* desktop integration tab */
 #define IDC_THEME_COLORCOMBO            1401
diff --git a/programs/winecfg/winecfg.rc b/programs/winecfg/winecfg.rc
index 73a189aa5ede..c18ae022454f 100644
--- a/programs/winecfg/winecfg.rc
+++ b/programs/winecfg/winecfg.rc
@@ -86,6 +86,7 @@ BEGIN
     IDS_AUDIO_SYSDEFAULT "(System default)"
     IDS_AUDIO_DEVICE "Device"
     IDS_AUDIO_SPEAKER_CONFIG "Speaker configuration"
+    IDS_AUDIO_SPEAKER_7POINT1 "7.1 Surround"
     IDS_AUDIO_SPEAKER_5POINT1 "5.1 Surround"
     IDS_AUDIO_SPEAKER_QUAD "Quadraphonic"
     IDS_AUDIO_SPEAKER_STEREO "Stereo"
diff --git a/programs/winedbg/dbg.y b/programs/winedbg/dbg.y
index a0d0ebb34f40..a142d67a6dc6 100644
--- a/programs/winedbg/dbg.y
+++ b/programs/winedbg/dbg.y
@@ -140,7 +140,7 @@ command:
     | tSYMBOLFILE pathname     	{ symbol_read_symtable($2, 0); }
     | tSYMBOLFILE pathname expr_rvalue { symbol_read_symtable($2, $3); }
     | tWHATIS expr_lvalue       { dbg_printf("type = "); types_print_type(&$2.type, FALSE, NULL); dbg_printf("\n"); }
-    | tATTACH tNUM              { if (dbg_attach_debuggee($2)) dbg_active_wait_for_first_exception(); }
+    | tATTACH tNUM              { if (dbg_attach_debuggee($2, TRUE)) dbg_active_wait_for_first_exception(); }
     | tATTACH pathname          { minidump_reload($2); }
     | tDETACH                   { dbg_curr_process->process_io->close_process(dbg_curr_process, FALSE); }
     | tTHREAD tNUM              { dbg_set_curr_thread($2); }
diff --git a/programs/winedbg/debugger.h b/programs/winedbg/debugger.h
index e778f7eeb959..25b510f39023 100644
--- a/programs/winedbg/debugger.h
+++ b/programs/winedbg/debugger.h
@@ -301,6 +301,8 @@ struct be_process_io
     BOOL        (*read)(HANDLE, const void*, void*, SIZE_T, SIZE_T*);
     BOOL        (*write)(HANDLE, void*, const void*, SIZE_T, SIZE_T*);
     BOOL        (*get_selector)(HANDLE, DWORD, LDT_ENTRY*);
+    BOOL        (*fetch_thread_name)(const struct dbg_thread*, WCHAR**);
+    BOOL        (*fetch_thread_context)(const struct dbg_thread*, dbg_ctx_t *);
 };
 
 extern	struct dbg_process*	dbg_curr_process;
@@ -310,6 +312,7 @@ extern	DWORD	                dbg_curr_tid;
 extern  dbg_ctx_t               dbg_context;
 extern  BOOL                    dbg_interactiveP;
 extern  HANDLE                  dbg_houtput;
+extern  struct list             dbg_process_list;
 
 struct dbg_internal_var
 {
@@ -395,7 +398,6 @@ extern void             info_win32_segments(DWORD start, int length);
 extern void             info_win32_exception(void);
 extern void             info_win32_system(void);
 extern void             info_wine_dbg_channel(BOOL add, const char* chnl, const char* name);
-extern WCHAR*           fetch_thread_description(DWORD tid);
 
   /* memory.c */
 extern BOOL             memory_read_value(const struct dbg_lvalue* lvalue, DWORD size, void* result);
@@ -483,8 +485,9 @@ extern enum dbg_start   dbg_active_launch(int argc, char* argv[]);
 extern enum dbg_start   dbg_active_auto(int argc, char* argv[]);
 extern enum dbg_start   dbg_active_minidump(int argc, char* argv[]);
 extern void             dbg_active_wait_for_first_exception(void);
-extern BOOL             dbg_attach_debuggee(DWORD pid);
+extern BOOL             dbg_attach_debuggee(DWORD pid, BOOL verbose);
 extern void             fetch_module_name(void* name_addr, void* mod_addr, WCHAR* buffer, size_t bufsz);
+extern BOOL             dbg_fetch_active_thread_name(DWORD tid, WCHAR **description);
 
   /* tgt_minidump.c */
 extern void             minidump_write(const char*, const EXCEPTION_RECORD*);
@@ -531,6 +534,7 @@ extern struct dbg_process* dbg_get_process_h(HANDLE handle);
 extern void             dbg_del_process(struct dbg_process* p);
 struct dbg_thread*	dbg_add_thread(struct dbg_process* p, DWORD tid, HANDLE h, void* teb);
 extern struct dbg_thread* dbg_get_thread(struct dbg_process* p, DWORD tid);
+extern WCHAR*           dbg_fetch_thread_name(const struct dbg_thread *thread);
 extern void             dbg_del_thread(struct dbg_thread* t);
 extern BOOL             dbg_init(HANDLE hProc, const WCHAR* in, BOOL invade);
 extern BOOL             dbg_load_module(HANDLE hProc, HANDLE hFile, const WCHAR* name, DWORD_PTR base, DWORD size);
diff --git a/programs/winedbg/gdbproxy.c b/programs/winedbg/gdbproxy.c
index e937c4edf326..3dbc7f7c32a6 100644
--- a/programs/winedbg/gdbproxy.c
+++ b/programs/winedbg/gdbproxy.c
@@ -1801,14 +1801,10 @@ static enum packet_return packet_query_threads(struct gdb_context* gdbctx)
         reply_buffer_append_str(reply, "id=\"");
         reply_buffer_append_uinthex(reply, thread->tid, 4);
         reply_buffer_append_str(reply, "\" name=\"");
-        if ((description = fetch_thread_description(thread->tid)))
+        if ((description = dbg_fetch_thread_name(thread)))
         {
             reply_buffer_append_wstr(reply, description);
-            LocalFree(description);
-        }
-        else if (strlen(thread->name))
-        {
-            reply_buffer_append_str(reply, thread->name);
+            free(description);
         }
         else
         {
diff --git a/programs/winedbg/info.c b/programs/winedbg/info.c
index 727686c2fc51..feeaf42fdfb0 100644
--- a/programs/winedbg/info.c
+++ b/programs/winedbg/info.c
@@ -271,7 +271,7 @@ void info_win32_module(DWORD64 base, BOOL multi_machine)
 
     if (!dbg_curr_process)
     {
-        dbg_printf("Cannot get info on module while no process is loaded\n");
+        dbg_printf("Cannot proceed with 'info module' while no process is being debugged\n");
         return;
     }
 
@@ -397,6 +397,12 @@ void info_win32_class(HWND hWnd, const char* name)
     WNDCLASSEXA	wca;
     HINSTANCE   hInst = hWnd ? (HINSTANCE)GetWindowLongPtrW(hWnd, GWLP_HINSTANCE) : 0;
 
+    if (dbg_curr_process && !dbg_curr_process->active_debuggee)
+    {
+        dbg_printf("Cannot proceed with 'info class' while debugging a non active process\n");
+        return;
+    }
+
     if (!name)
     {
         struct class_walker cw;
@@ -475,6 +481,12 @@ void info_win32_window(HWND hWnd, BOOL detailed)
     RECT	windowRect;
     WORD	w;
 
+    if (dbg_curr_process && !dbg_curr_process->active_debuggee)
+    {
+        dbg_printf("Cannot proceed with 'info window' while debugging a non active process\n");
+        return;
+    }
+
     if (!IsWindow(hWnd)) hWnd = GetDesktopWindow();
 
     if (!detailed)
@@ -585,7 +597,7 @@ static void dump_proc_info(const struct dump_proc* dp, unsigned idx, unsigned de
     }
 }
 
-void info_win32_processes(void)
+static void info_win32_active_processes(void)
 {
     HANDLE snap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
     if (snap != INVALID_HANDLE_VALUE)
@@ -639,6 +651,15 @@ void info_win32_processes(void)
     }
 }
 
+void info_win32_processes(void)
+{
+    if (!dbg_curr_process || dbg_curr_process->active_debuggee)
+        info_win32_active_processes();
+    else
+        /* FIXME we could do better */
+        dbg_printf("Cannot proceed with 'info proc' while debugging a non active process\n");
+}
+
 static BOOL get_process_name(DWORD pid, PROCESSENTRY32W* entry)
 {
     BOOL   ret = FALSE;
@@ -655,40 +676,7 @@ static BOOL get_process_name(DWORD pid, PROCESSENTRY32W* entry)
     return ret;
 }
 
-WCHAR* fetch_thread_description(DWORD tid)
-{
-    static HRESULT (WINAPI *my_GetThreadDescription)(HANDLE, PWSTR*) = NULL;
-    static BOOL resolved = FALSE;
-    HANDLE h;
-    WCHAR* desc = NULL;
-
-    if (!resolved)
-    {
-        HMODULE kernelbase = GetModuleHandleA("kernelbase.dll");
-        if (kernelbase)
-            my_GetThreadDescription = (void *)GetProcAddress(kernelbase, "GetThreadDescription");
-        resolved = TRUE;
-    }
-
-    if (!my_GetThreadDescription)
-        return NULL;
-
-    h = OpenThread(THREAD_QUERY_LIMITED_INFORMATION, FALSE, tid);
-    if (!h)
-        return NULL;
-
-    my_GetThreadDescription(h, &desc);
-    CloseHandle(h);
-
-    if (desc && desc[0] == '\0')
-    {
-        LocalFree(desc);
-        return NULL;
-    }
-    return desc;
-}
-
-void info_win32_threads(void)
+static void info_win32_active_threads(void)
 {
     HANDLE snap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);
     if (snap != INVALID_HANDLE_VALUE)
@@ -697,7 +685,6 @@ void info_win32_threads(void)
         BOOL 		ok;
 	DWORD		lastProcessId = 0;
         struct dbg_process* p = NULL;
-        struct dbg_thread* t = NULL;
         WCHAR *description;
 
 	entry.dwSize = sizeof(entry);
@@ -730,20 +717,13 @@ void info_win32_threads(void)
                                entry.th32OwnerProcessID, p ? " (D)" : "", exename);
                     lastProcessId = entry.th32OwnerProcessID;
 		}
-                dbg_printf("\t%08lx %4ld%s ",
+                if (!dbg_fetch_active_thread_name(entry.th32ThreadID, &description))
+                    description = NULL;
+                dbg_printf("\t%08lx %4ld%s %ls\n",
                            entry.th32ThreadID, entry.tpBasePri,
-                           (entry.th32ThreadID == dbg_curr_tid) ? " <==" : "    ");
-
-                if ((description = fetch_thread_description(entry.th32ThreadID)))
-                {
-                    dbg_printf("%ls\n", description);
-                    LocalFree(description);
-                }
-                else
-                {
-                    t = dbg_get_thread(p, entry.th32ThreadID);
-                    dbg_printf("%s\n", t ? t->name : "");
-                }
+                           (entry.th32ThreadID == dbg_curr_tid) ? " <==" : "    ",
+                           description ? description : L"");
+                free(description);
 	    }
             ok = Thread32Next(snap, &entry);
         }
@@ -752,6 +732,34 @@ void info_win32_threads(void)
     }
 }
 
+void info_win32_threads(void)
+{
+    if (!dbg_curr_process || dbg_curr_process->active_debuggee)
+        info_win32_active_threads();
+    else
+    {
+        struct dbg_process *pcs;
+        struct dbg_thread *thread;
+        WCHAR *description;
+
+        dbg_printf("%-8.8s %-8.8s %s    %s (all IDs are in hex)\n",
+                   "process", "tid", "prio", "name");
+        LIST_FOR_EACH_ENTRY(pcs, &dbg_process_list, struct dbg_process, entry)
+        {
+            dbg_printf("%08lx%s %ls\n", pcs->pid, " (D)", pcs->imageName);
+            LIST_FOR_EACH_ENTRY(thread, &pcs->threads, struct dbg_thread, entry)
+            {
+                description = dbg_fetch_thread_name(thread);
+                /* FIXME thread prio is available from a minidump */
+                dbg_printf("\t%08lx %4s%s %ls\n",
+                           thread->tid, "?", (thread->tid == dbg_curr_tid) ? " <==" : "    ",
+                           description ? description : L"");
+                free(description);
+            }
+        }
+    }
+}
+
 /***********************************************************************
  *           info_win32_frame_exceptions
  *
@@ -764,7 +772,12 @@ void info_win32_frame_exceptions(DWORD tid)
 
     if (!dbg_curr_process || !dbg_curr_thread)
     {
-        dbg_printf("Cannot get info on exceptions while no process is loaded\n");
+        dbg_printf("Cannot proceed with 'info frame' while no process is being debugged\n");
+        return;
+    }
+    if (!dbg_curr_process->active_debuggee)
+    {
+        dbg_printf("Cannot proceed with 'info frame' while debugging a non active process\n");
         return;
     }
 
@@ -816,6 +829,11 @@ void info_win32_segments(DWORD start, int length)
     DWORD 	i;
     LDT_ENTRY	le;
 
+    if (dbg_curr_process && !dbg_curr_process->active_debuggee)
+    {
+        dbg_printf("Cannot proceed with 'info segments' while debugging a non active process\n");
+        return;
+    }
     if (length == -1) length = (8192 - start);
 
     for (i = start; i < start + length; i++)
@@ -855,11 +873,17 @@ void info_win32_virtual(DWORD pid)
     char                        prot[3+1];
     HANDLE                      hProc;
 
+    if (dbg_curr_process && !dbg_curr_process->active_debuggee)
+    {
+        dbg_printf("Cannot proceed with 'info maps' while debugging a non active process\n");
+        return;
+    }
+
     if (pid == dbg_curr_pid)
     {
         if (dbg_curr_process == NULL)
         {
-            dbg_printf("Cannot look at mapping of current process, while no process is loaded\n");
+            dbg_printf("Cannot proceed with 'info maps' while no process is being debugged\n");
             return;
         }
         hProc = dbg_curr_process->handle;
@@ -929,7 +953,12 @@ void info_wine_dbg_channel(BOOL turn_on, const char* cls, const char* name)
 
     if (!dbg_curr_process || !dbg_curr_thread)
     {
-        dbg_printf("Cannot set/get debug channels while no process is loaded\n");
+        dbg_printf("Cannot set/get debug channels while no process is being debugged\n");
+        return;
+    }
+    if (!dbg_curr_process->active_debuggee)
+    {
+        dbg_printf("Cannot set/get debug channels while debugging a non active process\n");
         return;
     }
     if (NtQueryInformationProcess(dbg_curr_process->handle, ProcessBasicInformation, &info, sizeof(info), NULL ))
@@ -982,11 +1011,17 @@ void info_win32_exception(void)
     ADDRESS64                   addr;
     char                        hexbuf[MAX_OFFSET_TO_STR_LEN];
 
+    if (!dbg_curr_thread)
+    {
+        dbg_printf("Cannot proceed with 'info exception' as there's no current thread\n");
+        return;
+    }
     if (!dbg_curr_thread->in_exception)
     {
-        dbg_printf("Thread isn't in an exception\n");
+        dbg_printf("Cannot proceed with 'info exception' while current thread isn't inside an exception\n");
         return;
     }
+
     rec = &dbg_curr_thread->excpt_record;
     memory_get_current_pc(&addr);
 
@@ -1205,6 +1240,13 @@ void info_win32_system(void)
         IMAGE_FILE_MACHINE_I386, IMAGE_FILE_MACHINE_ARM, IMAGE_FILE_MACHINE_ARMNT,
     };
 
+    if (dbg_curr_process && !dbg_curr_process->active_debuggee)
+    {
+        /* FIXME we could better for minidump */
+        dbg_printf("Cannot proceed with 'info system' while debugging a non active process\n");
+        return;
+    }
+
     wine_get_build_id = (void *)GetProcAddress(GetModuleHandleA("ntdll.dll"), "wine_get_build_id");
     wine_get_host_version = (void *)GetProcAddress(GetModuleHandleA("ntdll.dll"), "wine_get_host_version");
 
diff --git a/programs/winedbg/stack.c b/programs/winedbg/stack.c
index 7860e73c088d..059b6f373963 100644
--- a/programs/winedbg/stack.c
+++ b/programs/winedbg/stack.c
@@ -327,6 +327,20 @@ static void backtrace(void)
     stack_set_local_scope();
 }
 
+static const char *thread_display(const struct dbg_thread *thread)
+{
+    static char buffer[256];
+    WCHAR *thread_descr = dbg_fetch_thread_name(thread);
+    if (thread_descr)
+    {
+        snprintf(buffer, sizeof(buffer), "%04lx (%ls)", thread->tid, thread_descr);
+        free(thread_descr);
+    }
+    else
+        snprintf(buffer, sizeof(buffer), "%04lx", thread->tid);
+    return buffer;
+}
+
 /******************************************************************
  *		backtrace_tid
  *
@@ -336,23 +350,24 @@ static void backtrace(void)
 static void backtrace_tid(struct dbg_process* pcs, DWORD tid)
 {
     struct dbg_thread*  thread = dbg_curr_thread;
+    dbg_ctx_t ctx = {{0}};
 
     if (!(dbg_curr_thread = dbg_get_thread(pcs, tid)))
         dbg_printf("Unknown thread id (%04lx) in process (%04lx)\n", tid, pcs->pid);
-    else
+    else if (pcs->active_debuggee)
     {
-        dbg_ctx_t ctx = {{0}};
-
         dbg_curr_tid = dbg_curr_thread->tid;
         if (SuspendThread(dbg_curr_thread->handle) != -1)
         {
             if (!pcs->be_cpu->get_context(dbg_curr_thread->handle, &ctx))
             {
-                dbg_printf("Can't get context for thread %04lx in current process\n",
-                           tid);
+                dbg_printf("Can't get context for thread %s in current process\n",
+                           thread_display(dbg_curr_thread));
             }
             else
             {
+                dbg_printf("\nBacktracing for thread %s in process %04lx (%ls):\n",
+                           thread_display(dbg_curr_thread), dbg_curr_pid, dbg_curr_process->imageName);
                 stack_fetch_frames(&ctx);
                 backtrace();
             }
@@ -360,17 +375,28 @@ static void backtrace_tid(struct dbg_process* pcs, DWORD tid)
         }
         else dbg_printf("Can't suspend thread %04lx in current process\n", tid);
     }
+    else if (pcs->process_io->fetch_thread_context &&
+             pcs->process_io->fetch_thread_context(dbg_curr_thread, &ctx))
+    {
+        dbg_curr_tid = dbg_curr_thread->tid;
+        dbg_printf("\nBacktracing for thread %s in process %04lx (%ls):\n",
+                   thread_display(dbg_curr_thread), dbg_curr_pid, dbg_curr_process->imageName);
+        stack_fetch_frames(&ctx);
+        backtrace();
+    }
+    else dbg_printf("Can't backtrace thread %04lx in current process\n", tid);
+
     dbg_curr_thread = thread;
     dbg_curr_tid = thread ? thread->tid : 0;
 }
 
 /******************************************************************
- *		backtrace_all
+ *		backtrace_all_active
  *
  * Do a backtrace on every running thread in the system (except the debugger)
  * (preserves current process information)
  */
-static void backtrace_all(void)
+static void backtrace_all_active(void)
 {
     struct dbg_process* process = dbg_curr_process;
     struct dbg_thread*  thread = dbg_curr_thread;
@@ -402,17 +428,11 @@ static void backtrace_all(void)
             }
             else if (entry.th32OwnerProcessID != dbg_curr_pid)
             {
-                if (!dbg_attach_debuggee(entry.th32OwnerProcessID))
-                {
-                    dbg_printf("\nwarning: could not attach to %04lx\n",
-                               entry.th32OwnerProcessID);
+                dbg_curr_process = NULL;
+                if (!dbg_attach_debuggee(entry.th32OwnerProcessID, FALSE))
                     continue;
-                }
                 dbg_active_wait_for_first_exception();
             }
-
-            dbg_printf("\nBacktracing for thread %04lx in process %04lx (%ls):\n",
-                       entry.th32ThreadID, dbg_curr_pid, dbg_curr_process->imageName);
             backtrace_tid(dbg_curr_process, entry.th32ThreadID);
         }
         while (Thread32Next(snapshot, &entry));
@@ -428,6 +448,18 @@ static void backtrace_all(void)
     dbg_context = ctx;
 }
 
+static void backtrace_all_attached(void)
+{
+    struct dbg_process *pcs;
+    struct dbg_thread *thread;
+
+    LIST_FOR_EACH_ENTRY(pcs, &dbg_process_list, struct dbg_process, entry)
+    {
+        LIST_FOR_EACH_ENTRY(thread, &pcs->threads, struct dbg_thread, entry)
+            backtrace_tid(pcs, thread->tid);
+    }
+}
+
 void stack_backtrace(DWORD tid)
 {
     /* backtrace every thread in every process except the debugger itself,
@@ -435,17 +467,16 @@ void stack_backtrace(DWORD tid)
      */
     if (tid == -1)
     {
-        backtrace_all();
-        return;
+        if (!dbg_curr_process || dbg_curr_process->active_debuggee)
+            backtrace_all_active();
+        else
+            backtrace_all_attached();
     }
-
-    if (!dbg_curr_process) 
+    else if (!dbg_curr_process)
     {
         dbg_printf("You must be attached to a process to run this command.\n");
-        return;
     }
-    
-    if (tid == dbg_curr_tid)
+    else if (tid == dbg_curr_tid)
     {
         backtrace();
     }
diff --git a/programs/winedbg/tgt_active.c b/programs/winedbg/tgt_active.c
index dba595b5f30b..02bc3bc481e8 100644
--- a/programs/winedbg/tgt_active.c
+++ b/programs/winedbg/tgt_active.c
@@ -63,12 +63,8 @@ static unsigned dbg_handle_debug_event(DEBUG_EVENT* de);
  *		dbg_attach_debuggee
  *
  * Sets the debuggee to <pid>
- * cofe instructs winedbg what to do when first exception is received 
- * (break=FALSE, continue=TRUE)
- * wfe is set to TRUE if dbg_attach_debuggee should also proceed with all debug events
- * until the first exception is received (aka: attach to an already running process)
  */
-BOOL dbg_attach_debuggee(DWORD pid)
+BOOL dbg_attach_debuggee(DWORD pid, BOOL verbose)
 {
     if (pid == GetCurrentProcessId())
     {
@@ -92,7 +88,8 @@ BOOL dbg_attach_debuggee(DWORD pid)
     SetEnvironmentVariableA("DBGHELP_NOLIVE", NULL);
 
     dbg_curr_process->active_debuggee = TRUE;
-    dbg_printf("WineDbg attached to pid %04lx\n", pid);
+    if (verbose)
+        dbg_printf("WineDbg attached to pid %04lx\n", pid);
     dbg_curr_pid = pid;
     dbg_curr_thread = NULL;
     dbg_curr_tid = 0;
@@ -840,14 +837,14 @@ enum dbg_start  dbg_active_attach(int argc, char* argv[])
     /* try the form <myself> pid */
     if (argc == 1 && str2int(argv[0], &pid) && pid != 0)
     {
-        if (!dbg_attach_debuggee(pid))
+        if (!dbg_attach_debuggee(pid, TRUE))
             return start_error_init;
     }
     /* try the form <myself> pid evt (Win32 JIT debugger) */
     else if (argc == 2 && str2int(argv[0], &pid) && pid != 0 &&
              str2int(argv[1], &evt) && evt != 0)
     {
-        if (!dbg_attach_debuggee(pid))
+        if (!dbg_attach_debuggee(pid, TRUE))
         {
             /* don't care about result */
             SetEvent((HANDLE)evt);
@@ -1092,10 +1089,46 @@ static BOOL tgt_process_active_get_selector(HANDLE hThread, DWORD sel, LDT_ENTRY
 #endif
 }
 
+BOOL dbg_fetch_active_thread_name(DWORD tid, WCHAR **description)
+{
+    static HRESULT (WINAPI *my_GetThreadDescription)(HANDLE, PWSTR*) = NULL;
+    static BOOL resolved = FALSE;
+    HANDLE h;
+    WCHAR *result = NULL;
+
+    if (!resolved)
+    {
+        HMODULE kernelbase = GetModuleHandleA("kernelbase.dll");
+        if (kernelbase)
+            my_GetThreadDescription = (void *)GetProcAddress(kernelbase, "GetThreadDescription");
+        resolved = TRUE;
+    }
+
+    if (my_GetThreadDescription && (h = OpenThread(THREAD_QUERY_LIMITED_INFORMATION, FALSE, tid)))
+    {
+        WCHAR *descr;
+        if (my_GetThreadDescription(h, &descr) == S_OK)
+        {
+            if (*descr) result = wcsdup(descr);
+            LocalFree(descr);
+        }
+        CloseHandle(h);
+    }
+    if (!result) return FALSE;
+    *description = result;
+    return TRUE;
+}
+
+static BOOL tgt_process_active_fetch_thread_name(const struct dbg_thread *thread, WCHAR **description)
+{
+    return dbg_fetch_active_thread_name(thread->tid, description);
+}
+
 static struct be_process_io be_process_active_io =
 {
     tgt_process_active_close_process,
     tgt_process_active_read,
     tgt_process_active_write,
-    tgt_process_active_get_selector
+    tgt_process_active_get_selector,
+    tgt_process_active_fetch_thread_name,
 };
diff --git a/programs/winedbg/tgt_minidump.c b/programs/winedbg/tgt_minidump.c
index 87098491392a..8a13a4639bf4 100644
--- a/programs/winedbg/tgt_minidump.c
+++ b/programs/winedbg/tgt_minidump.c
@@ -253,6 +253,24 @@ static BOOL is_pe_module_embedded(struct tgt_process_minidump_data* data,
     return FALSE;
 }
 
+static BOOL copy_context(dbg_ctx_t *ctx, struct tgt_process_minidump_data* data,
+                         const MINIDUMP_LOCATION_DESCRIPTOR *loc_desc)
+{
+    BOOL ret = TRUE;
+    unsigned len = loc_desc->DataSize;
+
+    if (len > sizeof(*ctx))
+    {
+        ERR("Incoming context size is larger than internal structure\n");
+        len = sizeof(*ctx);
+        ret = FALSE;
+    }
+    memcpy(ctx, (char*)data->mapping + loc_desc->Rva, len);
+    if (len < sizeof(*ctx))
+        memset((char*)ctx + len, 0, sizeof(*ctx) - len);
+    return ret;
+}
+
 static enum dbg_start minidump_do_reload(struct tgt_process_minidump_data* data)
 {
     void*                       stream;
@@ -556,8 +574,7 @@ static enum dbg_start minidump_do_reload(struct tgt_process_minidump_data* data)
             {
                 dbg_curr_thread->excpt_record.ExceptionInformation[i] = mes->ExceptionRecord.ExceptionInformation[i];
             }
-            memcpy(&dbg_context, (char*)data->mapping + mes->ThreadContext.Rva,
-                   min(sizeof(dbg_context), mes->ThreadContext.DataSize));
+            copy_context(&dbg_context, data, &mes->ThreadContext);
             memory_get_current_pc(&addr);
             stack_fetch_frames(&dbg_context);
             dbg_curr_process->be_cpu->print_context(dbg_curr_thread->handle, &dbg_context, 0);
@@ -648,10 +665,62 @@ static BOOL tgt_process_minidump_get_selector(HANDLE hThread, DWORD sel, LDT_ENT
     return TRUE;
 }
 
+static BOOL tgt_process_minidump_fetch_thread_name(const struct dbg_thread *thread, WCHAR **description)
+{
+    struct tgt_process_minidump_data *data = private_data(thread->process);
+    void *stream;
+
+    if (MiniDumpReadDumpStream(data->mapping, ThreadNamesStream, NULL, &stream, NULL))
+    {
+        MINIDUMP_THREAD_NAME_LIST* mtnl = stream;
+        ULONG i;
+
+        for (i = 0; i < mtnl->NumberOfThreadNames; i++)
+        {
+            if (thread->tid == mtnl->ThreadNames[i].ThreadId)
+            {
+                MINIDUMP_STRING *mdmp_string = (MINIDUMP_STRING *)((char*)data->mapping + mtnl->ThreadNames[i].RvaOfThreadName);
+                WCHAR *ret;
+                if (!mdmp_string->Length) return FALSE;
+                if (!(ret = malloc(mdmp_string->Length + sizeof(WCHAR)))) return FALSE;
+                memcpy(ret, mdmp_string->Buffer, mdmp_string->Length);
+                ret[mdmp_string->Length / sizeof(WCHAR)] = L'\0';
+                *description = ret;
+                return TRUE;
+            }
+        }
+    }
+    return FALSE;
+}
+
+static BOOL tgt_process_minidump_fetch_thread_context(const struct dbg_thread* thread, dbg_ctx_t *ctx)
+{
+    struct tgt_process_minidump_data *data = private_data(thread->process);
+    void *stream;
+
+    if (MiniDumpReadDumpStream(data->mapping, ThreadListStream, NULL, &stream, NULL))
+    {
+        MINIDUMP_THREAD_LIST*   mtl = stream;
+        ULONG                   i;
+
+        for (i = 0; i < mtl->NumberOfThreads; i++)
+        {
+            if (thread->tid == mtl->Threads[i].ThreadId)
+            {
+                copy_context(ctx, data, &mtl->Threads[i].ThreadContext);
+                return TRUE;
+            }
+        }
+    }
+    return FALSE;
+}
+
 static struct be_process_io be_process_minidump_io =
 {
     tgt_process_minidump_close_process,
     tgt_process_minidump_read,
     tgt_process_minidump_write,
     tgt_process_minidump_get_selector,
+    tgt_process_minidump_fetch_thread_name,
+    tgt_process_minidump_fetch_thread_context,
 };
diff --git a/programs/winedbg/winedbg.c b/programs/winedbg/winedbg.c
index c7f14e8238f1..9707120dfc79 100644
--- a/programs/winedbg/winedbg.c
+++ b/programs/winedbg/winedbg.c
@@ -82,8 +82,7 @@ DWORD	                dbg_curr_pid = 0;
 dbg_ctx_t               dbg_context;
 BOOL    	        dbg_interactiveP = FALSE;
 HANDLE                  dbg_houtput = 0;
-
-static struct list      dbg_process_list = LIST_INIT(dbg_process_list);
+struct list             dbg_process_list = LIST_INIT(dbg_process_list);
 
 struct dbg_internal_var         dbg_internal_vars[DBG_IV_LAST];
 
@@ -513,6 +512,23 @@ void dbg_del_thread(struct dbg_thread* t)
     free(t);
 }
 
+WCHAR* dbg_fetch_thread_name(const struct dbg_thread *thread)
+{
+    WCHAR *descr;
+
+    if (thread->process->process_io->fetch_thread_name &&
+        thread->process->process_io->fetch_thread_name(thread, &descr))
+        return descr;
+    if (*thread->name)
+    {
+        DWORD len = MultiByteToWideChar(CP_ACP, 0, thread->name, -1, NULL, 0);
+        if ((descr = malloc(len * sizeof(WCHAR))))
+            MultiByteToWideChar(CP_ACP, 0, thread->name, -1, descr, len);
+        return descr;
+    }
+    return NULL;
+}
+
 void dbg_set_option(const char* option, const char* val)
 {
     if (!strcasecmp(option, "module_load_mismatched"))
diff --git a/programs/wscript/Makefile.in b/programs/wscript/Makefile.in
index 21511a3ca817..fc220f49717b 100644
--- a/programs/wscript/Makefile.in
+++ b/programs/wscript/Makefile.in
@@ -7,4 +7,5 @@ SOURCES = \
 	arguments.c \
 	host.c \
 	ihost.idl \
-	main.c
+	main.c \
+	wscript.rc
diff --git a/programs/wscript/main.c b/programs/wscript/main.c
index 2f1e517d4196..01b090308323 100644
--- a/programs/wscript/main.c
+++ b/programs/wscript/main.c
@@ -29,6 +29,7 @@
 #include <initguid.h>
 
 #include "wscript.h"
+#include "resource.h"
 
 #include <wine/debug.h>
 
@@ -52,6 +53,8 @@ WCHAR scriptFullName[MAX_PATH];
 ITypeInfo *host_ti;
 ITypeInfo *arguments_ti;
 
+static BOOL nologo;
+
 static HRESULT query_interface(REFIID,void**);
 
 static HRESULT WINAPI ActiveScriptSite_QueryInterface(IActiveScriptSite *iface,
@@ -120,20 +123,15 @@ static HRESULT WINAPI ActiveScriptSite_OnStateChange(IActiveScriptSite *iface,
     return S_OK;
 }
 
-static void print_error(const WCHAR *string)
+static void write_to_handle(HANDLE handle, const WCHAR *string)
 {
     DWORD count, ret, len, lena;
     char *buf;
 
-    if(wshInteractive) {
-        MessageBoxW(NULL, string, L"Windows Script Host", MB_OK);
-        return;
-    }
-
     len = lstrlenW(string);
-    ret = WriteConsoleW(GetStdHandle(STD_ERROR_HANDLE), string, len, &count, NULL);
+    ret = WriteConsoleW(handle, string, len, &count, NULL);
     if(ret) {
-        WriteConsoleW(GetStdHandle(STD_ERROR_HANDLE), L"\r\n", 2, &count, NULL);
+        WriteConsoleW(handle, L"\r\n", 2, &count, NULL);
         return;
     }
 
@@ -143,9 +141,101 @@ static void print_error(const WCHAR *string)
         return;
 
     WideCharToMultiByte(GetOEMCP(), 0, string, len, buf, lena, NULL, NULL);
-    WriteFile(GetStdHandle(STD_ERROR_HANDLE), buf, lena, &count, FALSE);
+    WriteFile(handle, buf, lena, &count, FALSE);
     free(buf);
-    WriteFile(GetStdHandle(STD_ERROR_HANDLE), "\r\n", 2, &count, FALSE);
+    WriteFile(handle, "\r\n", 2, &count, FALSE);
+}
+
+static void print_error(const WCHAR *string)
+{
+    if(wshInteractive) {
+        MessageBoxW(NULL, string, L"Windows Script Host", MB_OK);
+        return;
+    }
+
+    write_to_handle(GetStdHandle(STD_ERROR_HANDLE), string);
+}
+
+static void print_string(const WCHAR *string)
+{
+    write_to_handle(GetStdHandle(STD_OUTPUT_HANDLE), string);
+}
+
+static void output_writeconsole(const WCHAR *str, DWORD wlen)
+{
+    DWORD count;
+
+    if(!WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE), str, wlen, &count, NULL)) {
+        DWORD len;
+        char *buf;
+
+        /* On Windows WriteConsoleW() fails if the output is redirected. So fall
+         * back to WriteFile() with OEM code page. */
+        len = WideCharToMultiByte(GetOEMCP(), 0, str, wlen, NULL, 0, NULL, NULL);
+        buf = malloc(len);
+
+        WideCharToMultiByte(GetOEMCP(), 0, str, wlen, buf, len, NULL, NULL);
+        WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), buf, len, &count, FALSE);
+        free(buf);
+    }
+}
+
+static void output_formatstring(const WCHAR *fmt, va_list va_args)
+{
+    WCHAR *str;
+    DWORD len;
+
+    len = FormatMessageW(FORMAT_MESSAGE_FROM_STRING | FORMAT_MESSAGE_ALLOCATE_BUFFER,
+                         fmt, 0, 0, (WCHAR *)&str, 0, &va_args);
+    if(len == 0 && GetLastError() != ERROR_NO_WORK_DONE) {
+        WINE_FIXME("Could not format string: le=%lu, fmt=%s\n", GetLastError(), wine_dbgstr_w(fmt));
+        return;
+    }
+    if(wshInteractive) {
+        MessageBoxW(NULL, str, L"Windows Script Host", MB_OK);
+    }else {
+        output_writeconsole(str, len);
+    }
+    LocalFree(str);
+}
+
+static void WINAPIV print_resource(unsigned int id, ...)
+{
+    WCHAR *fmt = NULL;
+    int len;
+    va_list va_args;
+
+    if(!(len = LoadStringW(GetModuleHandleW(NULL), id, (WCHAR *)&fmt, 0))) {
+        WINE_FIXME("LoadString failed with %ld\n", GetLastError());
+        return;
+    }
+
+    len++;
+    fmt = malloc(len * sizeof(WCHAR));
+    if(!fmt)
+        return;
+
+    LoadStringW(GetModuleHandleW(NULL), id, fmt, len);
+
+    va_start(va_args, id);
+    output_formatstring(fmt, va_args);
+    va_end(va_args);
+
+    free(fmt);
+}
+
+static void print_banner(void)
+{
+    const char * (CDECL *wine_get_version)(void);
+    WCHAR header[64];
+
+    wine_get_version = (void *)GetProcAddress(GetModuleHandleW(L"ntdll.dll"), "wine_get_version");
+    if(wine_get_version)
+        swprintf(header, ARRAY_SIZE(header), L"Wine %S Script Host", wine_get_version());
+    else
+        swprintf(header, ARRAY_SIZE(header), L"Wine Script Host");
+    print_string(header);
+    print_string(L"");
 }
 
 static HRESULT WINAPI ActiveScriptSite_OnScriptError(IActiveScriptSite *iface,
@@ -389,6 +479,11 @@ static BSTR get_script_str(const WCHAR *filename)
         return NULL;
 
     size = GetFileSize(file, NULL);
+    if(!size) {
+        CloseHandle(file);
+        return SysAllocStringLen(NULL, 0);
+    }
+
     map = CreateFileMappingW(file, NULL, PAGE_READONLY, 0, 0, NULL);
     CloseHandle(file);
     if(map == INVALID_HANDLE_VALUE)
@@ -407,28 +502,25 @@ static BSTR get_script_str(const WCHAR *filename)
     return ret;
 }
 
-static void run_script(const WCHAR *filename, IActiveScript *script, IActiveScriptParse *parser)
+static BOOL run_script(BSTR text, IActiveScript *script, IActiveScriptParse *parser)
 {
-    BSTR text;
     HRESULT hres;
 
-    text = get_script_str(filename);
-    if(!text) {
-        WINE_FIXME("Could not get script text\n");
-        return;
-    }
-
     hres = IActiveScriptParse_ParseScriptText(parser, text, NULL, NULL, NULL, 1, 0,
             SCRIPTTEXT_HOSTMANAGESSOURCE|SCRIPTITEM_ISVISIBLE, NULL, NULL);
-    SysFreeString(text);
     if(FAILED(hres)) {
-        WINE_FIXME("ParseScriptText failed: %08lx\n", hres);
-        return;
+        if(hres != SCRIPT_E_REPORTED)
+            WINE_WARN("ParseScriptText failed: %08lx\n", hres);
+        return FALSE;
     }
 
     hres = IActiveScript_SetScriptState(script, SCRIPTSTATE_STARTED);
-    if(FAILED(hres))
-        WINE_FIXME("SetScriptState failed: %08lx\n", hres);
+    if(FAILED(hres)) {
+        if(hres != SCRIPT_E_REPORTED)
+            WINE_WARN("SetScriptState failed: %08lx\n", hres);
+    }
+
+    return TRUE;
 }
 
 static BOOL set_host_properties(const WCHAR *prop)
@@ -446,16 +538,27 @@ static BOOL set_host_properties(const WCHAR *prop)
     else if(wcsicmp(prop, L"b") == 0)
         wshInteractive = VARIANT_FALSE;
     else if(wcsicmp(prop, L"nologo") == 0)
-        WINE_FIXME("ignored %s switch\n", debugstr_w(L"nologo"));
+        nologo = TRUE;
+    else if(wcsicmp(prop, L"logo") == 0)
+        nologo = FALSE;
     else if(wcsicmp(prop, L"d") == 0)
-        WINE_FIXME("ignoring /d\n");
+        WINE_FIXME("ignoring //d\n");
+    else if(wcsicmp(prop, L"x") == 0)
+        WINE_FIXME("ignoring //x\n");
     else if(wcsicmp(prop, L"u") == 0)
-        WINE_FIXME("ignoring /u\n");
+        WINE_FIXME("ignoring //u\n");
+    else if(wcsicmp(prop, L"s") == 0)
+        WINE_FIXME("ignoring //s\n");
+    else if(wcsnicmp(prop, L"e:", 2) == 0)
+        WINE_FIXME("ignoring //e:\n");
+    else if(wcsnicmp(prop, L"h:", 2) == 0)
+        WINE_FIXME("ignoring //h:\n");
+    else if(wcsnicmp(prop, L"job:", 4) == 0)
+        WINE_FIXME("ignoring //job:\n");
+    else if(wcsnicmp(prop, L"t:", 2) == 0)
+        WINE_FIXME("ignoring //t:\n");
     else
-    {
-        WINE_FIXME("unsupported switch %s\n", debugstr_w(prop));
         return FALSE;
-    }
     return TRUE;
 }
 
@@ -464,9 +567,11 @@ int WINAPI wWinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPWSTR cmdline, int cm
     WCHAR *ext, *filepart, *filename = NULL;
     IActiveScriptParse *parser;
     IActiveScript *script;
+    BSTR script_text;
     WCHAR **argv;
     CLSID clsid;
     int argc, i;
+    int ret = 0;
     DWORD res;
 
     WINE_TRACE("(%p %p %s %x)\n", hInst, hPrevInst, wine_dbgstr_w(cmdline), cmdshow);
@@ -475,26 +580,84 @@ int WINAPI wWinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPWSTR cmdline, int cm
     if(!argv)
         return 1;
 
+    /* Pass 1: consume // host options from all positions. */
     for(i=1; i<argc; i++) {
-        if(*argv[i] == '/' || *argv[i] == '-') {
-            if(!set_host_properties(argv[i]))
-                return 1;
-        }else {
-            filename = argv[i];
-            argums = argv+i+1;
-            numOfArgs = argc-i-1;
-            break;
+        if(argv[i][0] == '/' && argv[i][1] == '/' && set_host_properties(argv[i]))
+            argv[i] = NULL;
+    }
+
+    /* Pass 2: find filename, consuming single-/ and - options before it. */
+    for(i=1; i<argc; i++) {
+        if(!argv[i])
+            continue;
+        if(argv[i][0] == '-' && argv[i][1] == '-' && !argv[i][2])
+            continue; /* -- separator */
+        if((*argv[i] == '/' || *argv[i] == '-') && set_host_properties(argv[i]))
+            continue;
+        filename = argv[i];
+        i++;
+        break;
+    }
+
+    /* Pass 3: compact script args, skipping consumed // options. */
+    if(filename) {
+        int j = 0, first_arg = i;
+        for(; i<argc; i++) {
+            if(!argv[i])
+                continue;
+            argv[first_arg + j] = argv[i];
+            j++;
+        }
+        argums = argv + first_arg;
+        numOfArgs = j;
+    }
+
+    if(!filename && argc == 1) {
+        if(wshInteractive) {
+            WINE_FIXME("Settings dialog not implemented\n");
+            return 0;
         }
+        if(!nologo)
+            print_banner();
+        print_resource(IDS_USAGE);
+        return 0;
     }
 
+    if(!nologo)
+        print_banner();
+
     if(!filename) {
-        WINE_FIXME("No file name specified\n");
+        print_resource(IDS_NO_SCRIPT_FILE);
         return 1;
     }
+
     res = GetFullPathNameW(filename, ARRAY_SIZE(scriptFullName), scriptFullName, &filepart);
     if(!res || res > ARRAY_SIZE(scriptFullName))
         return 1;
 
+    script_text = get_script_str(scriptFullName);
+    if(!script_text) {
+        DWORD err = GetLastError();
+        if(err == ERROR_FILE_NOT_FOUND || err == ERROR_PATH_NOT_FOUND) {
+            print_resource(IDS_FILE_NOT_FOUND, scriptFullName);
+        }else {
+            WCHAR *syserr = NULL;
+            FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
+                           NULL, err, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (WCHAR *)&syserr, 0, NULL);
+            if(syserr) {
+                /* Trim trailing whitespace from system error message. */
+                int len = lstrlenW(syserr);
+                while(len > 0 && (syserr[len - 1] == '\r' || syserr[len - 1] == '\n' || syserr[len - 1] == ' '))
+                    syserr[--len] = 0;
+                print_resource(IDS_SCRIPT_LOAD_ERROR, scriptFullName, syserr);
+                LocalFree(syserr);
+            }else {
+                print_resource(IDS_SCRIPT_LOAD_ERROR, scriptFullName, L"");
+            }
+        }
+        return 1;
+    }
+
     ext = wcsrchr(filepart, '.');
     if(!ext || !get_engine_clsid(ext, &clsid)) {
         WINE_FIXME("Could not find engine for %s\n", wine_dbgstr_w(ext));
@@ -510,17 +673,19 @@ int WINAPI wWinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPWSTR cmdline, int cm
     }
 
     if(init_engine(script, parser)) {
-        run_script(filename, script, parser);
+        if(!run_script(script_text, script, parser))
+            ret = 1;
         IActiveScript_Close(script);
         ITypeInfo_Release(host_ti);
     }else {
         WINE_FIXME("Script initialization failed\n");
     }
 
+    SysFreeString(script_text);
     IActiveScript_Release(script);
     IActiveScriptParse_Release(parser);
 
     CoUninitialize();
 
-    return 0;
+    return ret;
 }
diff --git a/programs/wscript/resource.h b/programs/wscript/resource.h
new file mode 100644
index 000000000000..7295040a6d94
--- /dev/null
+++ b/programs/wscript/resource.h
@@ -0,0 +1,22 @@
+/*
+ * Copyright 2025 Francis De Brabandere
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#define IDS_USAGE              1
+#define IDS_NO_SCRIPT_FILE     2
+#define IDS_FILE_NOT_FOUND     3
+#define IDS_SCRIPT_LOAD_ERROR  4
diff --git a/programs/wscript/tests/run.c b/programs/wscript/tests/run.c
index 9aae91ddc7a8..abb01774117f 100644
--- a/programs/wscript/tests/run.c
+++ b/programs/wscript/tests/run.c
@@ -324,20 +324,49 @@ static IClassFactory testobj_cf = { &ClassFactoryVtbl };
 static void run_script_file(const char *file_name, DWORD expected_exit_code)
 {
     char command[MAX_PATH];
+    SECURITY_ATTRIBUTES sa = {sizeof(sa), NULL, TRUE};
     STARTUPINFOA si = {sizeof(si)};
     PROCESS_INFORMATION pi;
-    DWORD exit_code;
+    HANDLE stdout_read, stdout_write;
+    HANDLE stderr_read, stderr_write;
+    char stdout_buf[4096], stderr_buf[4096];
+    DWORD exit_code, size;
     BOOL bres;
 
     script_name = file_name;
     sprintf(command, "wscript.exe %s arg1 2 ar3", file_name);
 
+    bres = CreatePipe(&stdout_read, &stdout_write, &sa, 0);
+    ok(bres, "CreatePipe failed: %lu\n", GetLastError());
+    if(!bres)
+        return;
+
+    bres = CreatePipe(&stderr_read, &stderr_write, &sa, 0);
+    ok(bres, "CreatePipe failed: %lu\n", GetLastError());
+    if(!bres) {
+        CloseHandle(stdout_read);
+        CloseHandle(stdout_write);
+        return;
+    }
+
+    SetHandleInformation(stdout_read, HANDLE_FLAG_INHERIT, 0);
+    SetHandleInformation(stderr_read, HANDLE_FLAG_INHERIT, 0);
+
+    si.dwFlags = STARTF_USESTDHANDLES;
+    si.hStdInput = GetStdHandle(STD_INPUT_HANDLE);
+    si.hStdOutput = stdout_write;
+    si.hStdError = stderr_write;
+
     SET_EXPECT(reportSuccess);
 
     bres = CreateProcessA(NULL, command, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi);
+    CloseHandle(stdout_write);
+    CloseHandle(stderr_write);
     if(!bres) {
         win_skip("script.exe is not available\n");
         CLEAR_CALLED(reportSuccess);
+        CloseHandle(stdout_read);
+        CloseHandle(stderr_read);
         return;
     }
 
@@ -348,8 +377,18 @@ static void run_script_file(const char *file_name, DWORD expected_exit_code)
     ok(bres, "GetExitCodeProcess failed: %lu\n", GetLastError());
     ok(exit_code == expected_exit_code, "exit_code = %lu, expected %lu\n", exit_code, expected_exit_code);
 
+    memset(stderr_buf, 0, sizeof(stderr_buf));
+    ReadFile(stderr_read, stderr_buf, sizeof(stderr_buf) - 1, &size, NULL);
+    stderr_buf[size] = 0;
+    ok(stderr_buf[0] == 0, "expected no stderr output, got: %s\n", stderr_buf);
+
+    /* Drain stdout to prevent child from blocking on a full pipe */
+    ReadFile(stdout_read, stdout_buf, sizeof(stdout_buf) - 1, &size, NULL);
+
     CloseHandle(pi.hThread);
     CloseHandle(pi.hProcess);
+    CloseHandle(stdout_read);
+    CloseHandle(stderr_read);
 
     CHECK_CALLED(reportSuccess);
 }
@@ -463,8 +502,9 @@ static void run_cscript_error_test(void)
     SECURITY_ATTRIBUTES sa = {sizeof(sa), NULL, TRUE};
     STARTUPINFOA si = {sizeof(si)};
     PROCESS_INFORMATION pi;
+    HANDLE stdout_read, stdout_write;
     HANDLE stderr_read, stderr_write;
-    char stderr_buf[4096];
+    char stdout_buf[4096], stderr_buf[4096];
     DWORD exit_code, size;
     HANDLE file;
     BOOL bres;
@@ -481,23 +521,34 @@ static void run_cscript_error_test(void)
     if(!bres)
         goto cleanup;
 
-    bres = CreatePipe(&stderr_read, &stderr_write, &sa, 0);
+    bres = CreatePipe(&stdout_read, &stdout_write, &sa, 0);
     ok(bres, "CreatePipe failed: %lu\n", GetLastError());
     if(!bres)
         goto cleanup;
 
+    bres = CreatePipe(&stderr_read, &stderr_write, &sa, 0);
+    ok(bres, "CreatePipe failed: %lu\n", GetLastError());
+    if(!bres) {
+        CloseHandle(stdout_read);
+        CloseHandle(stdout_write);
+        goto cleanup;
+    }
+
+    SetHandleInformation(stdout_read, HANDLE_FLAG_INHERIT, 0);
     SetHandleInformation(stderr_read, HANDLE_FLAG_INHERIT, 0);
 
     si.dwFlags = STARTF_USESTDHANDLES;
     si.hStdInput = GetStdHandle(STD_INPUT_HANDLE);
-    si.hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
+    si.hStdOutput = stdout_write;
     si.hStdError = stderr_write;
 
     sprintf(command, "cscript.exe //nologo %s", file_name);
     bres = CreateProcessA(NULL, command, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi);
+    CloseHandle(stdout_write);
     CloseHandle(stderr_write);
     if(!bres) {
         win_skip("cscript.exe is not available\n");
+        CloseHandle(stdout_read);
         CloseHandle(stderr_read);
         goto cleanup;
     }
@@ -508,6 +559,11 @@ static void run_cscript_error_test(void)
     ok(bres, "GetExitCodeProcess failed: %lu\n", GetLastError());
     ok(exit_code == 0, "exit_code = %lu\n", exit_code);
 
+    memset(stdout_buf, 0, sizeof(stdout_buf));
+    ReadFile(stdout_read, stdout_buf, sizeof(stdout_buf) - 1, &size, NULL);
+    stdout_buf[size] = 0;
+    ok(stdout_buf[0] == 0, "expected no stdout with //nologo, got: %s\n", stdout_buf);
+
     memset(stderr_buf, 0, sizeof(stderr_buf));
     ReadFile(stderr_read, stderr_buf, sizeof(stderr_buf) - 1, &size, NULL);
     stderr_buf[size] = 0;
@@ -515,17 +571,270 @@ static void run_cscript_error_test(void)
     ok(size > 0, "expected error output on stderr, got nothing\n");
     ok(strstr(stderr_buf, "test_err.vbs(1,") != NULL,
        "expected file and line reference in error, got: %s\n", stderr_buf);
-    ok(strstr(stderr_buf, "Type mismatch") != NULL,
-       "expected 'Type mismatch' in output, got: %s\n", stderr_buf);
 
     CloseHandle(pi.hThread);
     CloseHandle(pi.hProcess);
+    CloseHandle(stdout_read);
+    CloseHandle(stderr_read);
+
+cleanup:
+    DeleteFileA(file_name);
+}
+
+static DWORD run_cscript(const char *args, char *stdout_buf, size_t stdout_buf_size,
+                         char *stderr_buf, size_t stderr_buf_size)
+{
+    char command[MAX_PATH];
+    SECURITY_ATTRIBUTES sa = {sizeof(sa), NULL, TRUE};
+    STARTUPINFOA si = {sizeof(si)};
+    PROCESS_INFORMATION pi;
+    HANDLE stdout_read, stdout_write;
+    HANDLE stderr_read, stderr_write;
+    DWORD exit_code, size;
+    BOOL bres;
+
+    bres = CreatePipe(&stderr_read, &stderr_write, &sa, 0);
+    ok(bres, "CreatePipe failed: %lu\n", GetLastError());
+    if(!bres)
+        return ~0u;
+
+    bres = CreatePipe(&stdout_read, &stdout_write, &sa, 0);
+    ok(bres, "CreatePipe failed: %lu\n", GetLastError());
+    if(!bres) {
+        CloseHandle(stderr_read);
+        CloseHandle(stderr_write);
+        return ~0u;
+    }
+
+    SetHandleInformation(stderr_read, HANDLE_FLAG_INHERIT, 0);
+    SetHandleInformation(stdout_read, HANDLE_FLAG_INHERIT, 0);
+
+    si.dwFlags = STARTF_USESTDHANDLES;
+    si.hStdInput = GetStdHandle(STD_INPUT_HANDLE);
+    si.hStdOutput = stdout_write;
+    si.hStdError = stderr_write;
+
+    sprintf(command, "cscript.exe %s", args);
+    bres = CreateProcessA(NULL, command, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi);
+    CloseHandle(stderr_write);
+    CloseHandle(stdout_write);
+    if(!bres) {
+        win_skip("cscript.exe is not available\n");
+        CloseHandle(stderr_read);
+        CloseHandle(stdout_read);
+        return ~0u;
+    }
+
+    WaitForSingleObject(pi.hProcess, INFINITE);
+
+    bres = GetExitCodeProcess(pi.hProcess, &exit_code);
+    ok(bres, "GetExitCodeProcess failed: %lu\n", GetLastError());
+
+    memset(stdout_buf, 0, stdout_buf_size);
+    ReadFile(stdout_read, stdout_buf, stdout_buf_size - 1, &size, NULL);
+    stdout_buf[size] = 0;
+
+    memset(stderr_buf, 0, stderr_buf_size);
+    ReadFile(stderr_read, stderr_buf, stderr_buf_size - 1, &size, NULL);
+    stderr_buf[size] = 0;
+
+    CloseHandle(pi.hThread);
+    CloseHandle(pi.hProcess);
+    CloseHandle(stdout_read);
     CloseHandle(stderr_read);
+    return exit_code;
+}
+
+static void run_cscript_unknown_option_test(void)
+{
+    char stdout_buf[4096], stderr_buf[4096];
+    DWORD exit_code;
+
+    exit_code = run_cscript("//nologo /unknownoption", stdout_buf, sizeof(stdout_buf),
+                            stderr_buf, sizeof(stderr_buf));
+    if(exit_code == ~0u)
+        return;
+    ok(exit_code == 1, "exit_code = %lu, expected 1\n", exit_code);
+    /* On Windows, cscript reports a localized error on stdout. On Wine,
+     * unrecognized single-/ options are treated as filenames to allow Unix-style
+     * paths (/tmp/foo.vbs), so the error will be about the file instead. */
+    ok(stdout_buf[0] != 0, "expected error message on stdout\n");
+    ok(stderr_buf[0] == 0, "expected no stderr output, got: %s\n", stderr_buf);
+}
+
+static void run_cscript_no_file_test(void)
+{
+    char stdout_buf[4096], stderr_buf[4096];
+    DWORD exit_code;
+
+    exit_code = run_cscript("//nologo", stdout_buf, sizeof(stdout_buf),
+                            stderr_buf, sizeof(stderr_buf));
+    if(exit_code == ~0u)
+        return;
+    ok(exit_code == 1, "exit_code = %lu, expected 1\n", exit_code);
+    ok(stdout_buf[0] != 0, "expected error message on stdout\n");
+}
+
+static void run_cscript_usage_test(void)
+{
+    char stdout_buf[4096], stderr_buf[4096];
+    DWORD exit_code;
+
+    exit_code = run_cscript("", stdout_buf, sizeof(stdout_buf),
+                            stderr_buf, sizeof(stderr_buf));
+    if(exit_code == ~0u)
+        return;
+    ok(exit_code == 0, "exit_code = %lu, expected 0\n", exit_code);
+    ok(stdout_buf[0] != 0, "expected usage output on stdout\n");
+}
+
+static BOOL create_temp_vbs(const char *file_name, const char *data)
+{
+    HANDLE file;
+    DWORD size;
+    BOOL bres;
+
+    file = CreateFileA(file_name, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS,
+            FILE_ATTRIBUTE_NORMAL, NULL);
+    ok(file != INVALID_HANDLE_VALUE, "CreateFile failed: %lu\n", GetLastError());
+    if(file == INVALID_HANDLE_VALUE)
+        return FALSE;
+
+    bres = WriteFile(file, data, strlen(data), &size, NULL);
+    CloseHandle(file);
+    ok(bres, "Could not write to file: %lu\n", GetLastError());
+    return bres;
+}
+
+static void run_cscript_logo_test(void)
+{
+    static const char empty_script[] = "\n";
+    char file_name[] = "test_logo.vbs";
+    char stdout_buf[4096], stderr_buf[4096];
+    DWORD exit_code;
+    size_t len;
+
+    if(!create_temp_vbs(file_name, empty_script))
+        goto cleanup;
+
+    /* Without //nologo: banner should be shown on stdout */
+    exit_code = run_cscript(file_name, stdout_buf, sizeof(stdout_buf),
+                            stderr_buf, sizeof(stderr_buf));
+    if(exit_code == ~0u)
+        goto cleanup;
+    ok(exit_code == 0, "exit_code = %lu, expected 0\n", exit_code);
+    ok(stdout_buf[0] != 0, "expected banner in stdout\n");
+
+    /* Banner should be followed by a blank line */
+    ok(strstr(stdout_buf, "\r\n\r\n") != NULL,
+       "expected blank line after banner, got: %s\n", stdout_buf);
+
+    /* Output should end with a blank line (\r\n\r\n at the end) */
+    len = strlen(stdout_buf);
+    ok(len >= 4 && !memcmp(stdout_buf + len - 4, "\r\n\r\n", 4),
+       "expected trailing blank line, got: %s\n", stdout_buf);
+
+cleanup:
+    DeleteFileA(file_name);
+}
+
+static void run_cscript_nologo_test(void)
+{
+    static const char empty_script[] = "\n";
+    char file_name[] = "test_nologo.vbs";
+    char stdout_buf[4096], stderr_buf[4096];
+    DWORD exit_code;
+
+    if(!create_temp_vbs(file_name, empty_script))
+        goto cleanup;
+
+    /* With //nologo: no banner, no output for empty script */
+    exit_code = run_cscript("//nologo test_nologo.vbs", stdout_buf, sizeof(stdout_buf),
+                            stderr_buf, sizeof(stderr_buf));
+    if(exit_code == ~0u)
+        goto cleanup;
+    ok(exit_code == 0, "exit_code = %lu, expected 0\n", exit_code);
+    ok(stdout_buf[0] == 0, "expected no stdout output with //nologo, got: %s\n", stdout_buf);
+
+cleanup:
+    DeleteFileA(file_name);
+}
+
+static void run_cscript_host_option_after_filename_test(void)
+{
+    /* Script that echoes its argument count */
+    static const char script_data[] = "WScript.Echo WScript.Arguments.Count\n";
+    char file_name[] = "test_args.vbs";
+    char stdout_buf[4096], stderr_buf[4096];
+    DWORD exit_code;
+
+    if(!create_temp_vbs(file_name, script_data))
+        goto cleanup;
+
+    /* //nologo after filename should be consumed as host option, not passed as arg */
+    exit_code = run_cscript("test_args.vbs //nologo", stdout_buf, sizeof(stdout_buf),
+                            stderr_buf, sizeof(stderr_buf));
+    if(exit_code == ~0u)
+        goto cleanup;
+    ok(exit_code == 0, "exit_code = %lu, expected 0\n", exit_code);
+    /* No banner (//nologo consumed) and arg count = 0 */
+    ok(stdout_buf[0] == '0',
+       "expected '0' as first output (no banner, //nologo consumed as host option), got: %s\n", stdout_buf);
+
+    /* //nologo between script args should be consumed */
+    exit_code = run_cscript("//nologo test_args.vbs arg1 //b arg2", stdout_buf, sizeof(stdout_buf),
+                            stderr_buf, sizeof(stderr_buf));
+    if(exit_code == ~0u)
+        goto cleanup;
+    ok(exit_code == 0, "exit_code = %lu, expected 0\n", exit_code);
+    /* //b suppresses output AND is consumed: arg count should be 2 (arg1 + arg2) */
+    ok(stdout_buf[0] == 0 || strstr(stdout_buf, "2") != NULL,
+       "//b between args should be consumed, got: %s\n", stdout_buf);
 
 cleanup:
     DeleteFileA(file_name);
 }
 
+static void run_cscript_nonexistent_file_test(void)
+{
+    char stdout_buf[4096], stderr_buf[4096];
+    DWORD exit_code;
+
+    /* Nonexistent file with //nologo: error on stdout */
+    exit_code = run_cscript("//nologo nonexistent_file.vbs", stdout_buf, sizeof(stdout_buf),
+                            stderr_buf, sizeof(stderr_buf));
+    if(exit_code == ~0u)
+        return;
+    ok(exit_code == 1, "exit_code = %lu, expected 1\n", exit_code);
+    ok(strstr(stdout_buf, "nonexistent_file") != NULL,
+       "expected filename in error on stdout, got: %s\n", stdout_buf);
+
+    /* Nonexistent file without //nologo: banner + error on stdout */
+    exit_code = run_cscript("nonexistent_file.vbs", stdout_buf, sizeof(stdout_buf),
+                            stderr_buf, sizeof(stderr_buf));
+    if(exit_code == ~0u)
+        return;
+    ok(exit_code == 1, "exit_code = %lu, expected 1\n", exit_code);
+    ok(strstr(stdout_buf, "nonexistent_file") != NULL,
+       "expected filename in error on stdout, got: %s\n", stdout_buf);
+}
+
+static void run_cscript_error_on_stdout_test(void)
+{
+    char stdout_buf[4096], stderr_buf[4096];
+    DWORD exit_code;
+
+    /* Unknown option without //nologo: banner + error on stdout */
+    exit_code = run_cscript("/unknownoption", stdout_buf, sizeof(stdout_buf),
+                            stderr_buf, sizeof(stderr_buf));
+    if(exit_code == ~0u)
+        return;
+    ok(exit_code == 1, "exit_code = %lu, expected 1\n", exit_code);
+    ok(stdout_buf[0] != 0, "expected banner and error on stdout\n");
+    /* Error message should be on stdout, not stderr */
+    ok(stderr_buf[0] == 0, "expected no stderr output, got: %s\n", stderr_buf);
+}
+
 START_TEST(run)
 {
     char **argv;
@@ -551,6 +860,14 @@ START_TEST(run)
                            "winetest.ok(false, 'not quit?');\n", 3);
 
         run_cscript_error_test();
+        run_cscript_unknown_option_test();
+        run_cscript_no_file_test();
+        run_cscript_usage_test();
+        run_cscript_logo_test();
+        run_cscript_nologo_test();
+        run_cscript_host_option_after_filename_test();
+        run_cscript_nonexistent_file_test();
+        run_cscript_error_on_stdout_test();
 }
 
     init_registry(FALSE);
diff --git a/programs/wscript/wscript.rc b/programs/wscript/wscript.rc
new file mode 100644
index 000000000000..920361c5dc62
--- /dev/null
+++ b/programs/wscript/wscript.rc
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2025 Francis De Brabandere
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include <windef.h>
+#include "resource.h"
+
+#pragma makedep po
+
+LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT
+
+STRINGTABLE
+{
+    IDS_USAGE,
+"Usage: CScript scriptname.extension [option...] [arguments...]\n\
+\n\
+Options:\n\
+ //B         Batch mode: Suppresses script errors and prompts from displaying\n\
+ //D         Enable Active Debugging\n\
+ //E:engine  Use engine for executing script\n\
+ //H:CScript Changes the default script host to CScript.exe\n\
+ //H:WScript Changes the default script host to WScript.exe (default)\n\
+ //I         Interactive mode (default, opposite of //B)\n\
+ //Job:xxxx  Execute a WSF job\n\
+ //Logo      Display logo (default)\n\
+ //Nologo    Prevent logo display: No banner will be shown at execution time\n\
+ //S         Save current command line options for this user\n\
+ //T:nn      Time out in seconds:  Maximum time a script is permitted to run\n\
+ //X         Execute script in debugger\n\
+ //U         Use Unicode for redirected I/O from the console\n"
+
+    IDS_NO_SCRIPT_FILE, "Input Error: There is no script file specified.\n"
+    IDS_FILE_NOT_FOUND, "Input Error: Can not find script file ""%1"".\n"
+    IDS_SCRIPT_LOAD_ERROR, "CScript Error: Loading script ""%1"" failed (%2).\n"
+}
diff --git a/tools/makedep.c b/tools/makedep.c
index 1782f3ed79d5..90a522640fe4 100644
--- a/tools/makedep.c
+++ b/tools/makedep.c
@@ -1304,7 +1304,7 @@ static struct file *load_file( const char *name )
     if (i == ARRAY_SIZE(parse_functions))
     {
         /* check for C++ header with no extension */
-        char *dir = strstr( name, "/msvcrt/" );
+        const char *dir = strstr( name, "/msvcrt/" );
         if (dir && !strchr( dir, '.' )) parse_cxx_file( file, f );
     }
 
@@ -3807,8 +3807,8 @@ static void output_module( struct makefile *make, unsigned int arch )
     struct strarray all_libs = empty_strarray;
     struct strarray dep_libs = empty_strarray;
     struct strarray imports = make->imports;
-    const char *module_name;
-    char *p, *spec_file = NULL;
+    const char *p, *module_name;
+    char *spec_file = NULL;
     unsigned int link_arch;
 
     if (!make->is_exe)
diff --git a/tools/tools.h b/tools/tools.h
index 5cbe6bc5d42a..224a738ddb8f 100644
--- a/tools/tools.h
+++ b/tools/tools.h
@@ -112,7 +112,6 @@ struct target
         PLATFORM_WINDOWS,
         PLATFORM_WINDOWS_GNU,
         PLATFORM_MINGW,
-        PLATFORM_CYGWIN
     } platform;
 };
 
@@ -572,7 +571,7 @@ static inline struct target get_default_target(void)
 #elif defined(__sun)
     target.platform = PLATFORM_SOLARIS;
 #elif defined(__CYGWIN__)
-    target.platform = PLATFORM_CYGWIN;
+    target.platform = PLATFORM_MINGW;
 #elif defined(_WIN32)
     target.platform = PLATFORM_MINGW;
 #else
@@ -627,9 +626,7 @@ static inline bool is_llvm_pe_target( struct target target )
 
 static inline bool is_pe_target( struct target target )
 {
-    return (is_llvm_pe_target( target ) ||
-            target.platform == PLATFORM_MINGW ||
-            target.platform == PLATFORM_CYGWIN);
+    return (is_llvm_pe_target( target ) || target.platform == PLATFORM_MINGW);
 }
 
 
@@ -679,7 +676,7 @@ static inline int get_platform_from_name( const char *name )
         { "windows-gnu", PLATFORM_WINDOWS_GNU },
         { "winnt",       PLATFORM_MINGW },
         { "windows",     PLATFORM_WINDOWS },
-        { "cygwin",      PLATFORM_CYGWIN },
+        { "cygwin",      PLATFORM_MINGW },
     };
     unsigned int i;
 
diff --git a/tools/widl/parser.l b/tools/widl/parser.l
index c57ad990c5b0..c18c7dd09ab1 100644
--- a/tools/widl/parser.l
+++ b/tools/widl/parser.l
@@ -185,11 +185,9 @@ static int token_winrt( int token, const char *str, YYSTYPE *yylval )
     return token_ident( str, yylval );
 }
 
-static void winrt_enable( int ns_prefix )
+static void winrt_enable(void)
 {
     if (!list_empty( &import_stack ) && !winrt_mode) error_loc( "WinRT IDL file imported in non-winrt mode.\n" );
-
-    use_abi_namespace = ns_prefix;
     winrt_mode = TRUE;
 }
 
@@ -210,12 +208,14 @@ static void winrt_enable( int ns_prefix )
     winrt{ws}+ns_prefix[^\n]*                   {
                                                     yy_pop_state();
                                                     yylloc->first_line -= 1;
-                                                    winrt_enable( TRUE );
+                                                    winrt_enable();
+                                                    if (list_empty( &import_stack )) use_abi_namespace = TRUE;
+
                                                 }
     winrt[^\n]*                                 {
                                                     yy_pop_state();
                                                     yylloc->first_line -= 1;
-                                                    winrt_enable( FALSE );
+                                                    winrt_enable();
                                                 }
     [^\n]*                                      {
                                                     yy_pop_state();
diff --git a/tools/winebuild/main.c b/tools/winebuild/main.c
index 33d871383ae0..43fa7fab2209 100644
--- a/tools/winebuild/main.c
+++ b/tools/winebuild/main.c
@@ -579,7 +579,6 @@ int main(int argc, char **argv)
 
     init_signals( exit_on_signal );
     target = init_argv0_target( argv[0] );
-    if (target.platform == PLATFORM_CYGWIN) target.platform = PLATFORM_MINGW;
     if (is_pe()) unwind_tables = 1;
 
     files = parse_options( argc, argv, short_options, long_options, 0, option_callback );
diff --git a/tools/winebuild/parser.c b/tools/winebuild/parser.c
index 899cd6e233a9..6e6724f37fe7 100644
--- a/tools/winebuild/parser.c
+++ b/tools/winebuild/parser.c
@@ -740,7 +740,7 @@ static void add_apiset_value( struct apiset *apiset, struct apiset_entry *entry,
     if (entry->val_count < ARRAY_SIZE(entry->values) - 1)
     {
         struct apiset_value *val = &entry->values[entry->val_count++];
-        char *sep = strchr( value, ':' );
+        const char *sep = strchr( value, ':' );
 
         if (sep)
         {
diff --git a/tools/winegcc/winegcc.c b/tools/winegcc/winegcc.c
index 0139855ce952..20ea5122f6bc 100644
--- a/tools/winegcc/winegcc.c
+++ b/tools/winegcc/winegcc.c
@@ -505,7 +505,7 @@ static struct strarray get_link_args( const char *output_name )
 {
     struct strarray link_args = get_translator();
     struct strarray flags = empty_strarray;
-    char *version;
+    const char *version;
 
     strarray_addall( &link_args, linker_args );
 
@@ -542,7 +542,6 @@ static struct strarray get_link_args( const char *output_name )
         break;
 
     case PLATFORM_MINGW:
-    case PLATFORM_CYGWIN:
     case PLATFORM_WINDOWS_GNU:
         strarray_add( &link_args, "-nodefaultlibs" );
         strarray_add( &link_args, "-nostartfiles" );
