Skip to content

Commit

Permalink
Merge pull request #7 from simonec73/dev
Browse files Browse the repository at this point in the history
1.4.2
  • Loading branch information
simonec73 authored May 16, 2021
2 parents 06b4700 + 8e98895 commit 61e3652
Show file tree
Hide file tree
Showing 146 changed files with 3,806 additions and 965 deletions.
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@ It has been designed and implemented by a group of experienced Threat Modelers,
Threats Manager Platform is the reference implementation of the Threat Modeling vNext vision, discussed in <https://simoneonsecurity.com>.

The code included in this Repo is to be also available as part of a complete Threat Modeling tool, called Threats Manager Studio, which implements the Windows Desktop experience. That tool along with a number of Extensions is available from <https://threatsmanager.com>.
Threats Manager Studio and the Windows Desktop Extensions are not available as Open Source, because they are based on various commercial components. Still, they are freely downloadable and usable in all contexts, under a very permissive [license](https://threatsmanager.com/license).
Threats Manager Studio is both a reference implementation of the Threats Manager Platform and a tool you can adopt for your Threat Modeling activities.
Threats Manager Studio and the Windows Desktop Extensions are also available as Open Source. You may not be able to build them, though, because they are based on various commercial components which cannot be delivered as part of this distribution. Still, Threats Manager Studio and its Extensions are freely downloadable and usable in all contexts, under a very permissive license.
Threats Manager Studio represents both a reference implementation of the Threats Manager Platform and a tool you can adopt for your Threat Modeling activities.

## Important

The main author of Threats Manager Platform, Simone Curzi, and most contributors are employees in Microsoft.
Nevertheless, Threats Manager Platform is NOT a Microsoft product. It is NOT endorsed or guaranteed by Microsoft in any way.
Nevertheless, Threats Manager Platform is NOT a Microsoft product. It is **NOT** endorsed, supported or guaranteed by Microsoft in any way.
2 changes: 1 addition & 1 deletion Samples/SampleExtensions/ExtensionLibrary.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
using ThreatsManager.Interfaces;

[assembly: ExtensionsContainer("1.4.0")]
[assembly: ExtensionsContainer("1.4.2")]
39 changes: 20 additions & 19 deletions Samples/SampleExtensions/SampleExtensions.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -39,23 +39,23 @@
<ItemGroup>
<Reference Include="Microsoft.CSharp" />
<Reference Include="Microsoft.VisualBasic" />
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="PostSharp, Version=6.7.11.0, Culture=neutral, PublicKeyToken=b13fd38b8f9c99d7, processorArchitecture=MSIL">
<HintPath>..\packages\PostSharp.Redist.6.7.11\lib\net45\PostSharp.dll</HintPath>
<Reference Include="PostSharp, Version=6.9.4.0, Culture=neutral, PublicKeyToken=b13fd38b8f9c99d7, processorArchitecture=MSIL">
<HintPath>..\packages\PostSharp.Redist.6.9.4\lib\net45\PostSharp.dll</HintPath>
</Reference>
<Reference Include="PostSharp.Patterns.Aggregation, Version=6.7.11.0, Culture=neutral, PublicKeyToken=e7f631e6ce13f078, processorArchitecture=MSIL">
<HintPath>..\packages\PostSharp.Patterns.Aggregation.Redist.6.7.11\lib\net45\PostSharp.Patterns.Aggregation.dll</HintPath>
<Reference Include="PostSharp.Patterns.Aggregation, Version=6.9.4.0, Culture=neutral, PublicKeyToken=e7f631e6ce13f078, processorArchitecture=MSIL">
<HintPath>..\packages\PostSharp.Patterns.Aggregation.Redist.6.9.4\lib\net45\PostSharp.Patterns.Aggregation.dll</HintPath>
</Reference>
<Reference Include="PostSharp.Patterns.Common, Version=6.7.11.0, Culture=neutral, PublicKeyToken=e7f631e6ce13f078, processorArchitecture=MSIL">
<HintPath>..\packages\PostSharp.Patterns.Common.Redist.6.7.11\lib\net47\PostSharp.Patterns.Common.dll</HintPath>
<Reference Include="PostSharp.Patterns.Common, Version=6.9.4.0, Culture=neutral, PublicKeyToken=e7f631e6ce13f078, processorArchitecture=MSIL">
<HintPath>..\packages\PostSharp.Patterns.Common.Redist.6.9.4\lib\net47\PostSharp.Patterns.Common.dll</HintPath>
</Reference>
<Reference Include="PostSharp.Patterns.Model, Version=6.7.11.0, Culture=neutral, PublicKeyToken=e7f631e6ce13f078, processorArchitecture=MSIL">
<HintPath>..\packages\PostSharp.Patterns.Model.Redist.6.7.11\lib\net45\PostSharp.Patterns.Model.dll</HintPath>
<Reference Include="PostSharp.Patterns.Model, Version=6.9.4.0, Culture=neutral, PublicKeyToken=e7f631e6ce13f078, processorArchitecture=MSIL">
<HintPath>..\packages\PostSharp.Patterns.Model.Redist.6.9.4\lib\net45\PostSharp.Patterns.Model.dll</HintPath>
</Reference>
<Reference Include="PostSharp.Patterns.Threading, Version=6.7.11.0, Culture=neutral, PublicKeyToken=e7f631e6ce13f078, processorArchitecture=MSIL">
<HintPath>..\packages\PostSharp.Patterns.Threading.Redist.6.7.11\lib\net45\PostSharp.Patterns.Threading.dll</HintPath>
<Reference Include="PostSharp.Patterns.Threading, Version=6.9.4.0, Culture=neutral, PublicKeyToken=e7f631e6ce13f078, processorArchitecture=MSIL">
<HintPath>..\packages\PostSharp.Patterns.Threading.Redist.6.9.4\lib\net45\PostSharp.Patterns.Threading.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.ComponentModel.Composition" />
Expand All @@ -72,16 +72,16 @@
<Reference Include="System.Xml" />
<Reference Include="System.Xml.Linq" />
<Reference Include="ThreatsManager.Icons, Version=1.3.0.0, Culture=neutral, PublicKeyToken=e345404a827fb4c3, processorArchitecture=MSIL">
<HintPath>..\packages\ThreatsManager.Utilities.1.4.0\lib\net472\ThreatsManager.Icons.dll</HintPath>
<HintPath>..\packages\ThreatsManager.Utilities.1.4.2\lib\net472\ThreatsManager.Icons.dll</HintPath>
</Reference>
<Reference Include="ThreatsManager.Interfaces, Version=1.4.0.0, Culture=neutral, PublicKeyToken=e345404a827fb4c3, processorArchitecture=MSIL">
<HintPath>..\packages\ThreatsManager.Interfaces.1.4.0\lib\net472\ThreatsManager.Interfaces.dll</HintPath>
<Reference Include="ThreatsManager.Interfaces, Version=1.4.2.0, Culture=neutral, PublicKeyToken=e345404a827fb4c3, processorArchitecture=MSIL">
<HintPath>..\packages\ThreatsManager.Interfaces.1.4.2\lib\net472\ThreatsManager.Interfaces.dll</HintPath>
</Reference>
<Reference Include="ThreatsManager.Packaging, Version=1.4.0.0, Culture=neutral, PublicKeyToken=e345404a827fb4c3, processorArchitecture=MSIL">
<HintPath>..\packages\ThreatsManager.Utilities.1.4.0\lib\net472\ThreatsManager.Packaging.dll</HintPath>
<Reference Include="ThreatsManager.Packaging, Version=1.4.2.0, Culture=neutral, PublicKeyToken=e345404a827fb4c3, processorArchitecture=MSIL">
<HintPath>..\packages\ThreatsManager.Utilities.1.4.2\lib\net472\ThreatsManager.Packaging.dll</HintPath>
</Reference>
<Reference Include="ThreatsManager.Utilities, Version=1.4.0.0, Culture=neutral, PublicKeyToken=e345404a827fb4c3, processorArchitecture=MSIL">
<HintPath>..\packages\ThreatsManager.Utilities.1.4.0\lib\net472\ThreatsManager.Utilities.dll</HintPath>
<Reference Include="ThreatsManager.Utilities, Version=1.4.2.0, Culture=neutral, PublicKeyToken=e345404a827fb4c3, processorArchitecture=MSIL">
<HintPath>..\packages\ThreatsManager.Utilities.1.4.2\lib\net472\ThreatsManager.Utilities.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
Expand All @@ -103,6 +103,7 @@
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="packages.config" />
<None Include="Resources\Microsoft Azure.png" />
</ItemGroup>
Expand Down
19 changes: 19 additions & 0 deletions Samples/SampleExtensions/app.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="PostSharp" publicKeyToken="b13fd38b8f9c99d7" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.9.4.0" newVersion="6.9.4.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="PostSharp.Patterns.Common" publicKeyToken="e7f631e6ce13f078" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.9.4.0" newVersion="6.9.4.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="PostSharp.Patterns.Aggregation" publicKeyToken="e7f631e6ce13f078" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.9.4.0" newVersion="6.9.4.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
16 changes: 8 additions & 8 deletions Samples/SampleExtensions/packages.config
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net472" />
<package id="PostSharp.Patterns.Aggregation.Redist" version="6.7.11" targetFramework="net472" />
<package id="PostSharp.Patterns.Common.Redist" version="6.7.11" targetFramework="net472" />
<package id="PostSharp.Patterns.Model.Redist" version="6.7.11" targetFramework="net472" />
<package id="PostSharp.Patterns.Threading.Redist" version="6.7.11" targetFramework="net472" />
<package id="PostSharp.Redist" version="6.7.11" targetFramework="net472" />
<package id="Newtonsoft.Json" version="13.0.1" targetFramework="net472" />
<package id="PostSharp.Patterns.Aggregation.Redist" version="6.9.4" targetFramework="net472" />
<package id="PostSharp.Patterns.Common.Redist" version="6.9.4" targetFramework="net472" />
<package id="PostSharp.Patterns.Model.Redist" version="6.9.4" targetFramework="net472" />
<package id="PostSharp.Patterns.Threading.Redist" version="6.9.4" targetFramework="net472" />
<package id="PostSharp.Redist" version="6.9.4" targetFramework="net472" />
<package id="System.ComponentModel.Composition" version="4.7.0" targetFramework="net472" />
<package id="System.Drawing.Common" version="4.7.0" targetFramework="net472" />
<package id="ThreatsManager.Interfaces" version="1.4.0" targetFramework="net472" />
<package id="ThreatsManager.Utilities" version="1.4.0" targetFramework="net472" />
<package id="ThreatsManager.Interfaces" version="1.4.2" targetFramework="net472" />
<package id="ThreatsManager.Utilities" version="1.4.2" targetFramework="net472" />
</packages>
2 changes: 1 addition & 1 deletion Samples/SampleWinFormExtensions/ExtensionLibrary.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
using ThreatsManager.Interfaces;

[assembly: ExtensionsContainer("1.4.0")]
[assembly: ExtensionsContainer("1.4.2")]
48 changes: 24 additions & 24 deletions Samples/SampleWinFormExtensions/SampleWinFormExtensions.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -42,27 +42,27 @@
<HintPath>..\packages\Fizzler.1.2.0\lib\netstandard2.0\Fizzler.dll</HintPath>
</Reference>
<Reference Include="Keyoti.RapidSpell.NET4, Version=6.0.19.705, Culture=neutral, PublicKeyToken=58d9fd2e9ec4dc0e, processorArchitecture=MSIL">
<HintPath>..\packages\ThreatsManager.Utilities.WinForms.1.4.1\lib\net472\Keyoti.RapidSpell.NET4.dll</HintPath>
<HintPath>..\packages\ThreatsManager.Utilities.WinForms.1.4.2\lib\net472\Keyoti.RapidSpell.NET4.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.VisualBasic" />
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="PostSharp, Version=6.7.11.0, Culture=neutral, PublicKeyToken=b13fd38b8f9c99d7, processorArchitecture=MSIL">
<HintPath>..\packages\PostSharp.Redist.6.7.11\lib\net45\PostSharp.dll</HintPath>
<Reference Include="PostSharp, Version=6.9.4.0, Culture=neutral, PublicKeyToken=b13fd38b8f9c99d7, processorArchitecture=MSIL">
<HintPath>..\packages\PostSharp.Redist.6.9.4\lib\net45\PostSharp.dll</HintPath>
</Reference>
<Reference Include="PostSharp.Patterns.Aggregation, Version=6.7.11.0, Culture=neutral, PublicKeyToken=e7f631e6ce13f078, processorArchitecture=MSIL">
<HintPath>..\packages\PostSharp.Patterns.Aggregation.Redist.6.7.11\lib\net45\PostSharp.Patterns.Aggregation.dll</HintPath>
<Reference Include="PostSharp.Patterns.Aggregation, Version=6.9.4.0, Culture=neutral, PublicKeyToken=e7f631e6ce13f078, processorArchitecture=MSIL">
<HintPath>..\packages\PostSharp.Patterns.Aggregation.Redist.6.9.4\lib\net45\PostSharp.Patterns.Aggregation.dll</HintPath>
</Reference>
<Reference Include="PostSharp.Patterns.Common, Version=6.7.11.0, Culture=neutral, PublicKeyToken=e7f631e6ce13f078, processorArchitecture=MSIL">
<HintPath>..\packages\PostSharp.Patterns.Common.Redist.6.7.11\lib\net47\PostSharp.Patterns.Common.dll</HintPath>
<Reference Include="PostSharp.Patterns.Common, Version=6.9.4.0, Culture=neutral, PublicKeyToken=e7f631e6ce13f078, processorArchitecture=MSIL">
<HintPath>..\packages\PostSharp.Patterns.Common.Redist.6.9.4\lib\net47\PostSharp.Patterns.Common.dll</HintPath>
</Reference>
<Reference Include="PostSharp.Patterns.Model, Version=6.7.11.0, Culture=neutral, PublicKeyToken=e7f631e6ce13f078, processorArchitecture=MSIL">
<HintPath>..\packages\PostSharp.Patterns.Model.Redist.6.7.11\lib\net45\PostSharp.Patterns.Model.dll</HintPath>
<Reference Include="PostSharp.Patterns.Model, Version=6.9.4.0, Culture=neutral, PublicKeyToken=e7f631e6ce13f078, processorArchitecture=MSIL">
<HintPath>..\packages\PostSharp.Patterns.Model.Redist.6.9.4\lib\net45\PostSharp.Patterns.Model.dll</HintPath>
</Reference>
<Reference Include="PostSharp.Patterns.Threading, Version=6.7.11.0, Culture=neutral, PublicKeyToken=e7f631e6ce13f078, processorArchitecture=MSIL">
<HintPath>..\packages\PostSharp.Patterns.Threading.Redist.6.7.11\lib\net45\PostSharp.Patterns.Threading.dll</HintPath>
<Reference Include="PostSharp.Patterns.Threading, Version=6.9.4.0, Culture=neutral, PublicKeyToken=e7f631e6ce13f078, processorArchitecture=MSIL">
<HintPath>..\packages\PostSharp.Patterns.Threading.Redist.6.9.4\lib\net45\PostSharp.Patterns.Threading.dll</HintPath>
</Reference>
<Reference Include="Svg, Version=3.1.0.0, Culture=neutral, PublicKeyToken=12a0bac221edeae2, processorArchitecture=MSIL">
<HintPath>..\packages\Svg.3.1.1\lib\net452\Svg.dll</HintPath>
Expand All @@ -87,24 +87,24 @@
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
<Reference Include="ThreatsManager.AutoGenRules, Version=1.4.1.0, Culture=neutral, PublicKeyToken=e345404a827fb4c3, processorArchitecture=MSIL">
<HintPath>..\packages\ThreatsManager.Utilities.WinForms.1.4.1\lib\net472\ThreatsManager.AutoGenRules.dll</HintPath>
<Reference Include="ThreatsManager.AutoGenRules, Version=1.4.2.0, Culture=neutral, PublicKeyToken=e345404a827fb4c3, processorArchitecture=MSIL">
<HintPath>..\packages\ThreatsManager.Utilities.WinForms.1.4.2\lib\net472\ThreatsManager.AutoGenRules.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="ThreatsManager.Icons, Version=1.3.0.0, Culture=neutral, PublicKeyToken=e345404a827fb4c3, processorArchitecture=MSIL">
<HintPath>..\packages\ThreatsManager.Utilities.1.4.0\lib\net472\ThreatsManager.Icons.dll</HintPath>
<HintPath>..\packages\ThreatsManager.Utilities.1.4.2\lib\net472\ThreatsManager.Icons.dll</HintPath>
</Reference>
<Reference Include="ThreatsManager.Interfaces, Version=1.4.0.0, Culture=neutral, PublicKeyToken=e345404a827fb4c3, processorArchitecture=MSIL">
<HintPath>..\packages\ThreatsManager.Interfaces.1.4.0\lib\net472\ThreatsManager.Interfaces.dll</HintPath>
<Reference Include="ThreatsManager.Interfaces, Version=1.4.2.0, Culture=neutral, PublicKeyToken=e345404a827fb4c3, processorArchitecture=MSIL">
<HintPath>..\packages\ThreatsManager.Interfaces.1.4.2\lib\net472\ThreatsManager.Interfaces.dll</HintPath>
</Reference>
<Reference Include="ThreatsManager.Packaging, Version=1.4.0.0, Culture=neutral, PublicKeyToken=e345404a827fb4c3, processorArchitecture=MSIL">
<HintPath>..\packages\ThreatsManager.Utilities.1.4.0\lib\net472\ThreatsManager.Packaging.dll</HintPath>
<Reference Include="ThreatsManager.Packaging, Version=1.4.2.0, Culture=neutral, PublicKeyToken=e345404a827fb4c3, processorArchitecture=MSIL">
<HintPath>..\packages\ThreatsManager.Utilities.1.4.2\lib\net472\ThreatsManager.Packaging.dll</HintPath>
</Reference>
<Reference Include="ThreatsManager.Utilities, Version=1.4.0.0, Culture=neutral, PublicKeyToken=e345404a827fb4c3, processorArchitecture=MSIL">
<HintPath>..\packages\ThreatsManager.Utilities.1.4.0\lib\net472\ThreatsManager.Utilities.dll</HintPath>
<Reference Include="ThreatsManager.Utilities, Version=1.4.2.0, Culture=neutral, PublicKeyToken=e345404a827fb4c3, processorArchitecture=MSIL">
<HintPath>..\packages\ThreatsManager.Utilities.1.4.2\lib\net472\ThreatsManager.Utilities.dll</HintPath>
</Reference>
<Reference Include="ThreatsManager.Utilities.WinForms, Version=1.4.1.0, Culture=neutral, PublicKeyToken=e345404a827fb4c3, processorArchitecture=MSIL">
<HintPath>..\packages\ThreatsManager.Utilities.WinForms.1.4.1\lib\net472\ThreatsManager.Utilities.WinForms.dll</HintPath>
<Reference Include="ThreatsManager.Utilities.WinForms, Version=1.4.2.0, Culture=neutral, PublicKeyToken=e345404a827fb4c3, processorArchitecture=MSIL">
<HintPath>..\packages\ThreatsManager.Utilities.WinForms.1.4.2\lib\net472\ThreatsManager.Utilities.WinForms.dll</HintPath>
<Private>True</Private>
</Reference>
</ItemGroup>
Expand Down
16 changes: 14 additions & 2 deletions Samples/SampleWinFormExtensions/app.config
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="PostSharp" publicKeyToken="b13fd38b8f9c99d7" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.7.11.0" newVersion="6.7.11.0" />
<bindingRedirect oldVersion="0.0.0.0-6.9.4.0" newVersion="6.9.4.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="PostSharp.Patterns.Common" publicKeyToken="e7f631e6ce13f078" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.7.11.0" newVersion="6.7.11.0" />
<bindingRedirect oldVersion="0.0.0.0-6.9.4.0" newVersion="6.9.4.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="ThreatsManager.Interfaces" publicKeyToken="e345404a827fb4c3" culture="neutral" />
Expand All @@ -22,6 +22,18 @@
<assemblyIdentity name="ThreatsManager.Icons" publicKeyToken="e345404a827fb4c3" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.3.0.0" newVersion="1.3.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Svg" publicKeyToken="12a0bac221edeae2" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="PostSharp.Patterns.Threading" publicKeyToken="e7f631e6ce13f078" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.7.11.0" newVersion="6.7.11.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="PostSharp.Patterns.Aggregation" publicKeyToken="e7f631e6ce13f078" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.9.4.0" newVersion="6.9.4.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Loading

0 comments on commit 61e3652

Please sign in to comment.