wine
16 years agontdll: Add tests for the data and name returned by NtQueryValueKey.
Rob Shearman [Sun, 6 Jan 2008 15:35:45 +0000 (15:35 +0000)] 
ntdll: Add tests for the data and name returned by NtQueryValueKey.

16 years agoserver: Output incorrectly-terminated strings in hex format.
Alexandre Julliard [Mon, 7 Jan 2008 20:06:49 +0000 (21:06 +0100)] 
server: Output incorrectly-terminated strings in hex format.

16 years agoserver: Make the registry parser more tolerant about malformed hex values.
Alexandre Julliard [Mon, 7 Jan 2008 20:06:01 +0000 (21:06 +0100)] 
server: Make the registry parser more tolerant about malformed hex values.

16 years agoserver: Accept utf-8 data as input in registry files.
Alexandre Julliard [Mon, 7 Jan 2008 19:17:24 +0000 (20:17 +0100)] 
server: Accept utf-8 data as input in registry files.

16 years agoregedit: Fixed parsing of hex sequences.
Alexandre Julliard [Mon, 7 Jan 2008 18:56:15 +0000 (19:56 +0100)] 
regedit: Fixed parsing of hex sequences.

16 years agowined3d: Use software palette conversion for non-texturing operations.
Roderick Colenbrander [Mon, 7 Jan 2008 12:43:48 +0000 (13:43 +0100)] 
wined3d: Use software palette conversion for non-texturing operations.

16 years agoshdocvw: Hide and show the frame window instead of the inner one.
Chris Wulff [Sun, 6 Jan 2008 19:06:44 +0000 (14:06 -0500)] 
shdocvw: Hide and show the frame window instead of the inner one.

16 years agowinemenubuilder: Expand short paths, else menu items aren't created for CSLU Toolkit.
Dan Kegel [Sun, 6 Jan 2008 18:09:24 +0000 (10:09 -0800)] 
winemenubuilder: Expand short paths, else menu items aren't created for CSLU Toolkit.

16 years agodwmapi: Add stub implementation for DwmSetWindowAttribute and DwmUnregisterThumbnail.
Peter Oberndorfer [Sun, 6 Jan 2008 15:14:56 +0000 (16:14 +0100)] 
dwmapi: Add stub implementation for DwmSetWindowAttribute and DwmUnregisterThumbnail.

16 years agoregedit: Refresh tree view on import.
Andre Wisplinghoff [Fri, 4 Jan 2008 16:14:19 +0000 (17:14 +0100)] 
regedit: Refresh tree view on import.

16 years agoserver: Wait for the expiration of all the process SIGKILL timers before exiting...
Alexandre Julliard [Mon, 7 Jan 2008 16:19:05 +0000 (17:19 +0100)] 
server: Wait for the expiration of all the process SIGKILL timers before exiting the server.

16 years agokernel32/tests: Avoid using size_t in traces.
Alexandre Julliard [Mon, 7 Jan 2008 16:18:35 +0000 (17:18 +0100)] 
kernel32/tests: Avoid using size_t in traces.

16 years agogdi32/tests: Avoid using size_t in traces.
Alexandre Julliard [Mon, 7 Jan 2008 16:18:29 +0000 (17:18 +0100)] 
gdi32/tests: Avoid using size_t in traces.

16 years agoadvapi32/tests: Print the correct size in an error message.
Alexandre Julliard [Mon, 7 Jan 2008 16:18:07 +0000 (17:18 +0100)] 
advapi32/tests: Print the correct size in an error message.

16 years agowined3d: Use unsigned int instead of size_t for the glsl mask size.
Alexandre Julliard [Mon, 7 Jan 2008 16:17:27 +0000 (17:17 +0100)] 
wined3d: Use unsigned int instead of size_t for the glsl mask size.

16 years agowined3d: Use unsigned int instead of size_t for element counts.
Alexandre Julliard [Mon, 7 Jan 2008 16:17:04 +0000 (17:17 +0100)] 
wined3d: Use unsigned int instead of size_t for element counts.

16 years agoconfigure: Added a check for the soname of libodbc.
Alexandre Julliard [Mon, 7 Jan 2008 16:16:29 +0000 (17:16 +0100)] 
configure: Added a check for the soname of libodbc.

16 years agoconfigure: Add --without options for all optional dependencies.
Alexandre Julliard [Mon, 7 Jan 2008 13:51:44 +0000 (14:51 +0100)] 
configure: Add --without options for all optional dependencies.

16 years agodevenum: Fix the implementation of IEnumMoniker::Skip(), to match the MSDN specs.
Peter Dons Tychsen [Fri, 4 Jan 2008 23:05:34 +0000 (00:05 +0100)] 
devenum: Fix the implementation of IEnumMoniker::Skip(), to match the MSDN specs.

16 years agodinput: Silence incorrect warning and move it to a valid place.
Peter Dons Tychsen [Fri, 4 Jan 2008 21:34:41 +0000 (22:34 +0100)] 
dinput: Silence incorrect warning and move it to a valid place.

16 years agocomdlg32: PageSetupDlgW: Set orientation in printer dialog.
Alexander Nicolaysen Sørnes [Sun, 6 Jan 2008 13:06:23 +0000 (14:06 +0100)] 
comdlg32: PageSetupDlgW: Set orientation in printer dialog.

16 years agomsi: Fix memory leaks (found by Smatch).
Rico Schüller [Mon, 31 Dec 2007 00:04:56 +0000 (01:04 +0100)] 
msi: Fix memory leaks (found by Smatch).

16 years agomshtml: Fix memory leak (found by Smatch).
Rico Schüller [Sun, 30 Dec 2007 23:51:04 +0000 (00:51 +0100)] 
mshtml: Fix memory leak (found by Smatch).

16 years agocabinet: Fix memory leak (found by Smatch).
Rico Schüller [Sun, 30 Dec 2007 23:24:26 +0000 (00:24 +0100)] 
cabinet: Fix memory leak (found by Smatch).

16 years agoSpelling fixes.
Austin English [Fri, 4 Jan 2008 19:37:14 +0000 (13:37 -0600)] 
Spelling fixes.

16 years agorpcrt4: Implement I_RpcMapWin32Status.
Rob Shearman [Mon, 7 Jan 2008 10:18:34 +0000 (10:18 +0000)] 
rpcrt4: Implement I_RpcMapWin32Status.

Add a test for this function.

16 years agoinclude: I_RpcBindingInqTransportType and I_RpcMapWin32Status should be always defined.
Rob Shearman [Mon, 7 Jan 2008 10:17:45 +0000 (10:17 +0000)] 
include: I_RpcBindingInqTransportType and I_RpcMapWin32Status should be always defined.

16 years agowidl: Fix the conditions under which array freeing code is output.
Rob Shearman [Mon, 7 Jan 2008 10:17:32 +0000 (10:17 +0000)] 
widl: Fix the conditions under which array freeing code is output.

It doesn't matter whether or not the array is declared as a pointer or
is declared using array subscripts - the array is still allocated by the
unmarshalling function and so needs to be freed.

Fix a typo that caused varying arrays never to be freed.

Fix another typo with the check for conformant arrays being performed
twice, redundantly.

16 years agowintab32: Add a trailing '\n' to a Wine trace.
Francois Gouget [Mon, 7 Jan 2008 10:16:27 +0000 (11:16 +0100)] 
wintab32: Add a trailing '\n' to a Wine trace.

16 years agomsxml3/tests: Add the trailing '\n' to an ok() call.
Francois Gouget [Mon, 7 Jan 2008 10:16:33 +0000 (11:16 +0100)] 
msxml3/tests: Add the trailing '\n' to an ok() call.

16 years agoimm32: ImmNotifyIMM with CPS_CANCEL fully clears the composition string. Also enable...
Aric Stewart [Fri, 4 Jan 2008 18:22:03 +0000 (12:22 -0600)] 
imm32: ImmNotifyIMM with CPS_CANCEL fully clears the composition string. Also enable respective tests.

16 years agoinclude: Add the strict_context_handle flag to the Irot interface.
Rob Shearman [Sun, 6 Jan 2008 21:26:18 +0000 (21:26 +0000)] 
include: Add the strict_context_handle flag to the Irot interface.

16 years agorpcrt4: Print fixme's if the serialize or no-serialize flags are set on a context...
Rob Shearman [Sun, 6 Jan 2008 21:26:10 +0000 (21:26 +0000)] 
rpcrt4: Print fixme's if the serialize or no-serialize flags are set on a context handle being marshalled or unmarshalled.

16 years agowidl: Add support for strict context handles.
Rob Shearman [Sun, 6 Jan 2008 21:25:50 +0000 (21:25 +0000)] 
widl: Add support for strict context handles.

16 years agorpcrt4: Pass the interface identifier to the lower-level context handle routines...
Rob Shearman [Sun, 6 Jan 2008 21:21:21 +0000 (21:21 +0000)] 
rpcrt4: Pass the interface identifier to the lower-level context handle routines for context handles with the strict flag set.

16 years agowidl: Output calls for the new versions of the marshalling and unmarshalling routines...
Rob Shearman [Sun, 6 Jan 2008 21:21:03 +0000 (21:21 +0000)] 
widl: Output calls for the new versions of the marshalling and unmarshalling routines for server context handles.

This needs to be done to match the call to NdrContextHandleInitialize
and because we default to using strict context handles.

16 years agoinclude: Add defines for context handle flags to rpcfc.h.
Rob Shearman [Sun, 6 Jan 2008 21:20:47 +0000 (21:20 +0000)] 
include: Add defines for context handle flags to rpcfc.h.

16 years agoole32: Fix a typo in the class moniker tests.
Rob Shearman [Sun, 6 Jan 2008 16:20:35 +0000 (16:20 +0000)] 
ole32: Fix a typo in the class moniker tests.

16 years agoole32: get_moniker_for_progid_display_name should fallback to using IClassFactory...
Rob Shearman [Sun, 6 Jan 2008 16:20:26 +0000 (16:20 +0000)] 
ole32: get_moniker_for_progid_display_name should fallback to using IClassFactory to get IParseDisplayName if getting it directly fails.

16 years agowineboot: Don't print errors for non-fatal problems.
Alexandre Julliard [Mon, 7 Jan 2008 11:25:56 +0000 (12:25 +0100)] 
wineboot: Don't print errors for non-fatal problems.

16 years agowinhelp: Fix index to handle offset value = 0 correclty.
Kirill K. Smirnov [Sun, 6 Jan 2008 15:35:06 +0000 (18:35 +0300)] 
winhelp: Fix index to handle offset value = 0 correclty.

16 years agouser32: Remove unused lpGrayMask array.
Peter Oberndorfer [Sun, 6 Jan 2008 14:54:21 +0000 (15:54 +0100)] 
user32: Remove unused lpGrayMask array.

16 years agodxdiagn: Remove unneeded casts.
Andrew Talbot [Sat, 5 Jan 2008 16:44:06 +0000 (16:44 +0000)] 
dxdiagn: Remove unneeded casts.

16 years agogdi32: Remove unneeded casts.
Andrew Talbot [Sat, 5 Jan 2008 16:44:09 +0000 (16:44 +0000)] 
gdi32: Remove unneeded casts.

16 years agogphoto2.ds: Remove unneeded casts.
Andrew Talbot [Sat, 5 Jan 2008 16:44:12 +0000 (16:44 +0000)] 
gphoto2.ds: Remove unneeded casts.

16 years agoiccvid: Remove unneeded casts.
Andrew Talbot [Sat, 5 Jan 2008 16:44:15 +0000 (16:44 +0000)] 
iccvid: Remove unneeded casts.

16 years agoimm32: Remove unneeded cast.
Andrew Talbot [Sat, 5 Jan 2008 16:44:19 +0000 (16:44 +0000)] 
imm32: Remove unneeded cast.

16 years agocomdlg32: Remove unneeded cast.
Andrew Talbot [Sat, 5 Jan 2008 16:44:01 +0000 (16:44 +0000)] 
comdlg32: Remove unneeded cast.

16 years agoadvapi32: Fix the length written to the pipe for the start message.
Alexandre Julliard [Mon, 7 Jan 2008 11:18:11 +0000 (12:18 +0100)] 
advapi32: Fix the length written to the pipe for the start message.

16 years agontdll: Return a proper Information field also when opening a server file object.
Alexandre Julliard [Mon, 7 Jan 2008 11:17:42 +0000 (12:17 +0100)] 
ntdll: Return a proper Information field also when opening a server file object.

16 years agospoolss: Add stubs for SpoolerHasInitialized and SpoolerInit.
Detlef Riekenberg [Sat, 5 Jan 2008 08:03:07 +0000 (09:03 +0100)] 
spoolss: Add stubs for SpoolerHasInitialized and SpoolerInit.

16 years agomsi: Create parent directories when duplicating files if they don't exist, with tests.
James Hawkins [Sun, 6 Jan 2008 19:25:22 +0000 (12:25 -0700)] 
msi: Create parent directories when duplicating files if they don't exist, with tests.

16 years agomsi: Pad the month and day to two digits.
James Hawkins [Sun, 6 Jan 2008 19:23:38 +0000 (12:23 -0700)] 
msi: Pad the month and day to two digits.

16 years agomsi: Remove an erroneous table.
James Hawkins [Sun, 6 Jan 2008 19:22:42 +0000 (12:22 -0700)] 
msi: Remove an erroneous table.

16 years agomsi: Copy the temporary package when storing the installer.
James Hawkins [Sat, 5 Jan 2008 20:50:59 +0000 (13:50 -0700)] 
msi: Copy the temporary package when storing the installer.

16 years agomsi: Check the local package for existence when resolving the package source.
James Hawkins [Sat, 5 Jan 2008 20:48:32 +0000 (13:48 -0700)] 
msi: Check the local package for existence when resolving the package source.

16 years agomsi: Directly download mi->source now that SourceDir points to the URL.
James Hawkins [Sat, 5 Jan 2008 20:47:48 +0000 (13:47 -0700)] 
msi: Directly download mi->source now that SourceDir points to the URL.

16 years agomsi: OriginalDatabase can be a URL so check for a forward slash too.
James Hawkins [Sat, 5 Jan 2008 20:47:14 +0000 (13:47 -0700)] 
msi: OriginalDatabase can be a URL so check for a forward slash too.

16 years agomsi: SourceDir is formed from the path of OriginalDatabase.
James Hawkins [Sat, 5 Jan 2008 20:46:39 +0000 (13:46 -0700)] 
msi: SourceDir is formed from the path of OriginalDatabase.

16 years agomsi: OriginalDatabase is the fully-expanded path to the original package if the packa...
James Hawkins [Sat, 5 Jan 2008 20:46:00 +0000 (13:46 -0700)] 
msi: OriginalDatabase is the fully-expanded path to the original package if the package is local and installed from the command line.

16 years agomsi: Factor out msi_set_sourcedir_props.
James Hawkins [Sat, 5 Jan 2008 20:45:13 +0000 (13:45 -0700)] 
msi: Factor out msi_set_sourcedir_props.

16 years agomsi: If the package is a URL, the OriginalDatabase property should be the URL and...
James Hawkins [Sat, 5 Jan 2008 20:44:30 +0000 (13:44 -0700)] 
msi: If the package is a URL, the OriginalDatabase property should be the URL and the DATABASE property should be the path to the local temporary package.

16 years agomsi: WriteEnvironmentStrings should also write to REG_EXPAND_SZ strings.
James Hawkins [Sat, 5 Jan 2008 17:46:09 +0000 (11:46 -0600)] 
msi: WriteEnvironmentStrings should also write to REG_EXPAND_SZ strings.

16 years agomsi: Only read an internal package if the file to install is compressed.
James Hawkins [Sat, 5 Jan 2008 06:07:34 +0000 (00:07 -0600)] 
msi: Only read an internal package if the file to install is compressed.

16 years agorichedit: Uniformly handle the bPitchAndFamily field out of CHARFORMAT.
Eric Pouech [Fri, 4 Jan 2008 20:12:20 +0000 (21:12 +0100)] 
richedit: Uniformly handle the bPitchAndFamily field out of CHARFORMAT.

16 years agorichedit: Check return of GetScrollInfo before accessing the returned structure.
Eric Pouech [Fri, 4 Jan 2008 20:12:14 +0000 (21:12 +0100)] 
richedit: Check return of GetScrollInfo before accessing the returned structure.

16 years agorichedit: Initialize all the cursors at editor creation.
Eric Pouech [Fri, 4 Jan 2008 20:12:09 +0000 (21:12 +0100)] 
richedit: Initialize all the cursors at editor creation.

16 years agorichedit: Only copy the charset when it's defined.
Eric Pouech [Fri, 4 Jan 2008 20:12:03 +0000 (21:12 +0100)] 
richedit: Only copy the charset when it's defined.

16 years agorpcrt4: Don't set Buffer to NULL in I_RpcFreeBuffer.
Rob Shearman [Fri, 4 Jan 2008 17:37:59 +0000 (17:37 +0000)] 
rpcrt4: Don't set Buffer to NULL in I_RpcFreeBuffer.

16 years agorpcrt4: Add some tests for NdrGetBuffer and NdrFreeBuffer.
Rob Shearman [Fri, 4 Jan 2008 17:37:31 +0000 (17:37 +0000)] 
rpcrt4: Add some tests for NdrGetBuffer and NdrFreeBuffer.

16 years agoole32: Clear the RPC_MESSAGE structure before using it.
Rob Shearman [Fri, 4 Jan 2008 17:44:01 +0000 (17:44 +0000)] 
ole32: Clear the RPC_MESSAGE structure before using it.

The RPC runtime could use some of the parameters, expecting them to be
initialised.

16 years agokernel32: Implement RegisterWaitForSingleObjectEx.
Rob Shearman [Fri, 4 Jan 2008 17:43:56 +0000 (17:43 +0000)] 
kernel32: Implement RegisterWaitForSingleObjectEx.

16 years agosvchost: Add a FIXME for an undocumented function (SvchostPushServiceGlobals) that...
Rob Shearman [Fri, 4 Jan 2008 17:23:36 +0000 (17:23 +0000)] 
svchost: Add a FIXME for an undocumented function (SvchostPushServiceGlobals) that some native services expect to be called by native svchost.

16 years agoole32: Determine the destination for the COM call and initialise the necessary parame...
Rob Shearman [Fri, 4 Jan 2008 16:25:39 +0000 (16:25 +0000)] 
ole32: Determine the destination for the COM call and initialise the necessary parameters in ClientRpcChannelBuffer_GetBuffer instead of ClientRpcChannelBuffer_SendReceive.

The parameters are then freed in the matching
ClientRpcChannelBuffer_FreeBuffer function.

16 years agowidl: Make the offset of conformant string types point to the start of the conformant...
Rob Shearman [Fri, 4 Jan 2008 16:24:42 +0000 (16:24 +0000)] 
widl: Make the offset of conformant string types point to the start of the conformant string format chars, not the pointer type.

Otherwise, writing a type at top-level could cause the pointer format
string to be used in non-top-level places which may cause memory
corruption during freeing.

16 years agorpcrt4: Update todos.
Rob Shearman [Fri, 4 Jan 2008 16:23:23 +0000 (16:23 +0000)] 
rpcrt4: Update todos.

16 years agotools/wine.desktop: Add Dutch translation.
Hans Leidekker [Fri, 4 Jan 2008 14:49:09 +0000 (15:49 +0100)] 
tools/wine.desktop: Add Dutch translation.

16 years agokernel32: Add Surinam Dutch and Belgian Dutch translations of language group names.
Hans Leidekker [Fri, 4 Jan 2008 14:48:48 +0000 (15:48 +0100)] 
kernel32: Add Surinam Dutch and Belgian Dutch translations of language group names.

16 years agokernel32: Fix two test failures on Win98 due to missing GetTempPathW.
Hans Leidekker [Fri, 4 Jan 2008 14:48:32 +0000 (15:48 +0100)] 
kernel32: Fix two test failures on Win98 due to missing GetTempPathW.

16 years agowininet: Fix handling of host and referrer headers in HttpOpenRequest.
Hans Leidekker [Fri, 4 Jan 2008 12:14:00 +0000 (13:14 +0100)] 
wininet: Fix handling of host and referrer headers in HttpOpenRequest.

16 years agokernel32/tests: Added tests for FindFirstVolume/FindNextVolume.
Alexandre Julliard [Fri, 4 Jan 2008 13:31:55 +0000 (14:31 +0100)] 
kernel32/tests: Added tests for FindFirstVolume/FindNextVolume.

16 years agokernel32: Implemented FindFirstVolume/FindNextVolume using the mount point manager.
Alexandre Julliard [Fri, 4 Jan 2008 13:31:40 +0000 (14:31 +0100)] 
kernel32: Implemented FindFirstVolume/FindNextVolume using the mount point manager.

16 years agomountmgr.sys: Implemented the IOCTL_MOUNTMGR_QUERY_POINTS request.
Alexandre Julliard [Fri, 4 Jan 2008 13:28:47 +0000 (14:28 +0100)] 
mountmgr.sys: Implemented the IOCTL_MOUNTMGR_QUERY_POINTS request.

16 years agomountmgr.sys: Add devices to the MountedDevices registry key.
Alexandre Julliard [Fri, 4 Jan 2008 13:27:53 +0000 (14:27 +0100)] 
mountmgr.sys: Add devices to the MountedDevices registry key.

16 years agomountmgr.sys: Create disk devices for all configured drives.
Alexandre Julliard [Fri, 4 Jan 2008 13:24:59 +0000 (14:24 +0100)] 
mountmgr.sys: Create disk devices for all configured drives.

16 years agomountmgr.sys: Create a hard disk device for PhysicalDrive0.
Alexandre Julliard [Fri, 4 Jan 2008 13:21:27 +0000 (14:21 +0100)] 
mountmgr.sys: Create a hard disk device for PhysicalDrive0.

16 years agoddraw: Add missing pitch in callback from EnumDisplayModes().
Peter Dons Tychsen [Tue, 1 Jan 2008 20:33:32 +0000 (21:33 +0100)] 
ddraw: Add missing pitch in callback from EnumDisplayModes().

16 years agokernel32: Convert newborn wineserver handle to kernel32 console handle.
Kirill K. Smirnov [Sat, 29 Dec 2007 17:19:43 +0000 (20:19 +0300)] 
kernel32: Convert newborn wineserver handle to kernel32 console handle.

16 years agomountmgr.sys: Added initial stub for the mount point manager device.
Alexandre Julliard [Fri, 4 Jan 2008 12:07:05 +0000 (13:07 +0100)] 
mountmgr.sys: Added initial stub for the mount point manager device.

16 years agoMore spelling fixes.
Austin English [Thu, 3 Jan 2008 17:04:28 +0000 (11:04 -0600)] 
More spelling fixes.

16 years agoserver: New French man page for wineserver.
Jonathan Ernst [Thu, 3 Jan 2008 15:40:30 +0000 (16:40 +0100)] 
server: New French man page for wineserver.

16 years agokernel32: Launch wineboot on first startup of a wine process.
Alexandre Julliard [Fri, 4 Jan 2008 11:51:04 +0000 (12:51 +0100)] 
kernel32: Launch wineboot on first startup of a wine process.

16 years agoadvapi32: Don't wait for 20 seconds if a service fails to start.
Alexandre Julliard [Fri, 4 Jan 2008 11:50:11 +0000 (12:50 +0100)] 
advapi32: Don't wait for 20 seconds if a service fails to start.

16 years agocmd: Fix some unclosed file and registry handles.
Lance Jackson [Fri, 4 Jan 2008 00:03:44 +0000 (18:03 -0600)] 
cmd: Fix some unclosed file and registry handles.

16 years agomsi: Adjust the types of loop variables.
Gerald Pfeifer [Thu, 3 Jan 2008 21:56:39 +0000 (22:56 +0100)] 
msi: Adjust the types of loop variables.

16 years agod3d9: Fix type of loop variable.
Gerald Pfeifer [Thu, 3 Jan 2008 21:30:11 +0000 (22:30 +0100)] 
d3d9: Fix type of loop variable.

16 years agod3d8: Fix type of loop variable.
Gerald Pfeifer [Thu, 3 Jan 2008 21:30:11 +0000 (22:30 +0100)] 
d3d8: Fix type of loop variable.

16 years agogdi32: Remove redundant indentation levels in CreateFontIndirectA and CreateFontIndir...
Dmitry Timoshkov [Fri, 4 Jan 2008 07:47:03 +0000 (15:47 +0800)] 
gdi32: Remove redundant indentation levels in CreateFontIndirectA and CreateFontIndirectW.

16 years agomshtml: Don't assume that end_pos.node is text node in range_to_string.
Jacek Caban [Fri, 4 Jan 2008 00:49:49 +0000 (01:49 +0100)] 
mshtml: Don't assume that end_pos.node is text node in range_to_string.

16 years agomshtml: Fixed Read implementations.
Jacek Caban [Fri, 4 Jan 2008 00:49:36 +0000 (01:49 +0100)] 
mshtml: Fixed Read implementations.