Skip to content

Commit

Permalink
Added new tool, CredentialKatz
Browse files Browse the repository at this point in the history
  • Loading branch information
Meckazin committed Jul 10, 2024
1 parent d234f6d commit 41a7a34
Show file tree
Hide file tree
Showing 34 changed files with 3,528 additions and 112 deletions.
13 changes: 9 additions & 4 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,22 @@ jobs:
uses: actions/checkout@v4
- name: build
run: |
mkdir release
cd CookieKatz-BOF && nmake all
cd ..
mv x64\Release\* release\
cd CredentialKatz-BOF && nmake all
cd ..
mv x64\Release\* release\
- name: ZipIt
uses: thedoctor0/[email protected]
with:
type: 'zip'
path: '@zip.lst'
filename: 'CookieKatzBOF.zip'
command: 'echo ./cookie-katz.cna >> zip.lst && echo ./x64/ >> zip.lst'
filename: 'ChromeKatzBOFs.zip'
command: 'echo ./chrome-katz.cna >> zip.lst && echo ./release/ >> zip.lst'
- name: Release
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
with:
files: |
CookieKatzBOF.zip
files: ChromeKatzBOFs.zip
28 changes: 28 additions & 0 deletions ChromeKatz.sln
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CookieKatz-BOF", "CookieKat
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CookieKatzMinidump", "CookieKatzMinidump\CookieKatzMinidump.vcxproj", "{FDF5A0F3-73DA-4A8B-804F-EDD499A176EF}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CredentialKatz", "CredentialKatz\CredentialKatz.vcxproj", "{A04E5EC1-E38C-467C-960D-A85FD1CAD16C}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CredentialKatz-BOF", "CredentialKatz-BOF\CredentialKatz-BOF.vcxproj", "{94BC8508-DDE9-4E97-96C1-E06476CF1212}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Expand Down Expand Up @@ -55,6 +59,30 @@ Global
{FDF5A0F3-73DA-4A8B-804F-EDD499A176EF}.UnitTest|x64.Build.0 = Debug|x64
{FDF5A0F3-73DA-4A8B-804F-EDD499A176EF}.UnitTest|x86.ActiveCfg = Debug|Win32
{FDF5A0F3-73DA-4A8B-804F-EDD499A176EF}.UnitTest|x86.Build.0 = Debug|Win32
{A04E5EC1-E38C-467C-960D-A85FD1CAD16C}.Debug|x64.ActiveCfg = Debug|x64
{A04E5EC1-E38C-467C-960D-A85FD1CAD16C}.Debug|x64.Build.0 = Debug|x64
{A04E5EC1-E38C-467C-960D-A85FD1CAD16C}.Debug|x86.ActiveCfg = Debug|Win32
{A04E5EC1-E38C-467C-960D-A85FD1CAD16C}.Debug|x86.Build.0 = Debug|Win32
{A04E5EC1-E38C-467C-960D-A85FD1CAD16C}.Release|x64.ActiveCfg = Release|x64
{A04E5EC1-E38C-467C-960D-A85FD1CAD16C}.Release|x64.Build.0 = Release|x64
{A04E5EC1-E38C-467C-960D-A85FD1CAD16C}.Release|x86.ActiveCfg = Release|Win32
{A04E5EC1-E38C-467C-960D-A85FD1CAD16C}.Release|x86.Build.0 = Release|Win32
{A04E5EC1-E38C-467C-960D-A85FD1CAD16C}.UnitTest|x64.ActiveCfg = Debug|x64
{A04E5EC1-E38C-467C-960D-A85FD1CAD16C}.UnitTest|x64.Build.0 = Debug|x64
{A04E5EC1-E38C-467C-960D-A85FD1CAD16C}.UnitTest|x86.ActiveCfg = Debug|Win32
{A04E5EC1-E38C-467C-960D-A85FD1CAD16C}.UnitTest|x86.Build.0 = Debug|Win32
{94BC8508-DDE9-4E97-96C1-E06476CF1212}.Debug|x64.ActiveCfg = Debug|x64
{94BC8508-DDE9-4E97-96C1-E06476CF1212}.Debug|x64.Build.0 = Debug|x64
{94BC8508-DDE9-4E97-96C1-E06476CF1212}.Debug|x86.ActiveCfg = Debug|Win32
{94BC8508-DDE9-4E97-96C1-E06476CF1212}.Debug|x86.Build.0 = Debug|Win32
{94BC8508-DDE9-4E97-96C1-E06476CF1212}.Release|x64.ActiveCfg = Release|x64
{94BC8508-DDE9-4E97-96C1-E06476CF1212}.Release|x64.Build.0 = Release|x64
{94BC8508-DDE9-4E97-96C1-E06476CF1212}.Release|x86.ActiveCfg = Release|Win32
{94BC8508-DDE9-4E97-96C1-E06476CF1212}.Release|x86.Build.0 = Release|Win32
{94BC8508-DDE9-4E97-96C1-E06476CF1212}.UnitTest|x64.ActiveCfg = UnitTest|x64
{94BC8508-DDE9-4E97-96C1-E06476CF1212}.UnitTest|x64.Build.0 = UnitTest|x64
{94BC8508-DDE9-4E97-96C1-E06476CF1212}.UnitTest|x86.ActiveCfg = UnitTest|Win32
{94BC8508-DDE9-4E97-96C1-E06476CF1212}.UnitTest|x86.Build.0 = UnitTest|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down
2 changes: 1 addition & 1 deletion CookieKatz-BOF/CookieKatz-BOF.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,7 @@
<ClCompile Include="base\mock.cpp" />
<ClCompile Include="ChromeKatz\Memory.cpp" />
<ClCompile Include="CookieKatzBOF.cpp" />
<ClCompile Include="FindChromeProcess.cpp">
<ClCompile Include="ListChromeProcessCookies.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">C:\Users\User\source\repos\BOF-Template\x64\Debug\bof.exe</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="ChromeKatz\Process.cpp" />
Expand Down
2 changes: 1 addition & 1 deletion CookieKatz-BOF/CookieKatz-BOF.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="FindChromeProcess.cpp">
<ClCompile Include="ListChromeProcessCookies.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="base\mock.cpp">
Expand Down
1 change: 0 additions & 1 deletion CookieKatz-BOF/CookieKatzBOF.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
#include "ChromeKatz/Memory.cpp"

extern "C" {
#include "beacon.h"
DFR(MSVCRT, _stricmp);
#define _stricmp MSVCRT$_stricmp

Expand Down
File renamed without changes.
249 changes: 249 additions & 0 deletions CredentialKatz-BOF/CredentialKatz-BOF.vcxproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,249 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="UnitTest|Win32">
<Configuration>UnitTest</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="UnitTest|x64">
<Configuration>UnitTest</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>16.0</VCProjectVersion>
<Keyword>Win32Proj</Keyword>
<ProjectGuid>{94bc8508-dde9-4e97-96c1-e06476cf1212}</ProjectGuid>
<RootNamespace>CredentialKatz_BOF</RootNamespace>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Makefile</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<LocalDebuggerCommand>Debug\bof.exe</LocalDebuggerCommand>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='UnitTest|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Makefile</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Makefile</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<LocalDebuggerCommand>x64\Debug\bof.exe</LocalDebuggerCommand>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='UnitTest|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Makefile</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='UnitTest|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='UnitTest|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<NMakeBuildCommandLine>nmake all</NMakeBuildCommandLine>
<NMakeReBuildCommandLine>nmake /B all</NMakeReBuildCommandLine>
<NMakeCleanCommandLine>nmake clean</NMakeCleanCommandLine>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<NMakeBuildCommandLine>nmake clean &amp;&amp; nmake all</NMakeBuildCommandLine>
<NMakeReBuildCommandLine>nmake clean &amp;&amp; nmake /B all</NMakeReBuildCommandLine>
<NMakeCleanCommandLine>nmake clean</NMakeCleanCommandLine>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<NMakeBuildCommandLine>nmake all-debug</NMakeBuildCommandLine>
<NMakeReBuildCommandLine>nmake /B all-debug</NMakeReBuildCommandLine>
<NMakeCleanCommandLine>nmake clean</NMakeCleanCommandLine>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='UnitTest|Win32'">
<NMakeBuildCommandLine>nmake all-debug</NMakeBuildCommandLine>
<NMakeReBuildCommandLine>nmake /B all-debug</NMakeReBuildCommandLine>
<NMakeCleanCommandLine>nmake clean</NMakeCleanCommandLine>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<NMakeBuildCommandLine>nmake clean &amp;&amp; nmake all-debug</NMakeBuildCommandLine>
<NMakeReBuildCommandLine>nmake clean &amp;&amp; nmake /B all-debug</NMakeReBuildCommandLine>
<NMakeCleanCommandLine>nmake clean</NMakeCleanCommandLine>
<IncludePath>$(MSBuildProjectDirectory)\packages\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-static.1.8.1.7\build\native\include;$(IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='UnitTest|x64'">
<NMakeBuildCommandLine>nmake all-debug</NMakeBuildCommandLine>
<NMakeReBuildCommandLine>nmake /B all-debug</NMakeReBuildCommandLine>
<NMakeCleanCommandLine>nmake clean</NMakeCleanCommandLine>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>false</ConformanceMode>
<LanguageStandard>stdcpp17</LanguageStandard>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='UnitTest|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_GTEST;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>false</ConformanceMode>
<LanguageStandard>stdcpp17</LanguageStandard>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<AdditionalIncludeDirectories>$(SolutionDir)\packages\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-static.1.8.1.7\build\native\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>$(SolutionDir)\packages\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-static.1.8.1.7\lib\native\v140\windesktop\msvcstl\static\rt-static\$(PlatformTarget)\Debug\gtest_maind.lib;$(SolutionDir)\packages\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-static.1.8.1.7\lib\native\v140\windesktop\msvcstl\static\rt-static\$(PlatformTarget)\Debug\gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>false</ConformanceMode>
<LanguageStandard>stdcpp17</LanguageStandard>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>false</ConformanceMode>
<LanguageStandard>stdcpp17</LanguageStandard>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='UnitTest|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_DEBUG;_CONSOLE;_GTEST;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>false</ConformanceMode>
<LanguageStandard>stdcpp17</LanguageStandard>
<AdditionalIncludeDirectories>$(SolutionDir)packages\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-static.1.8.1.7\build\native\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>$(SolutionDir)\packages\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-static.1.8.1.7\lib\native\v140\windesktop\msvcstl\static\rt-static\$(PlatformTarget)\Debug\gtest_maind.lib;$(SolutionDir)\packages\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-static.1.8.1.7\lib\native\v140\windesktop\msvcstl\static\rt-static\$(PlatformTarget)\Debug\gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>false</ConformanceMode>
<LanguageStandard>stdcpp17</LanguageStandard>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="base\mock.cpp" />
<ClCompile Include="CredentialKatzBOF.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">C:\Users\User\source\repos\BOF-Template\x64\Debug\bof.exe</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="CredentialKatz\Memory.cpp" />
<ClCompile Include="CredentialKatz\Process.cpp" />
<ClCompile Include="ListChromeProcessCredential.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="base\helpers.h" />
<ClInclude Include="base\mock.h" />
<ClInclude Include="beacon.h" />
<ClInclude Include="beacon_user_data.h" />
<ClInclude Include="DFR.h" />
</ItemGroup>
<ItemGroup>
<None Include="Makefile" />
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
Loading

0 comments on commit 41a7a34

Please sign in to comment.