Repository: ewwink/MD5-Hash-Changer
Branch: master
Commit: 09c4b2d3511d
Files: 14
Total size: 144.2 KB
Directory structure:
gitextract_ft8kid8o/
├── MD5HashChanger/
│ ├── FolderPicker.cs
│ ├── MD5HashChanger.csproj
│ ├── MainForm.Designer.cs
│ ├── MainForm.cs
│ ├── MainForm.resx
│ ├── Program.cs
│ ├── Properties/
│ │ ├── AssemblyInfo.cs
│ │ ├── Resources.Designer.cs
│ │ ├── Resources.resx
│ │ ├── Settings.Designer.cs
│ │ └── Settings.settings
│ └── app.config
├── MD5HashChanger.sln
└── README.md
================================================
FILE CONTENTS
================================================
================================================
FILE: MD5HashChanger/FolderPicker.cs
================================================
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Runtime.InteropServices;
using System.Runtime.InteropServices.ComTypes;
namespace MD5_Hash_Changer
{
public class FolderPicker
{
private readonly List<string> _resultPaths = new List<string>();
private readonly List<string> _resultNames = new List<string>();
public IReadOnlyList<string> ResultPaths => _resultPaths;
public IReadOnlyList<string> ResultNames => _resultNames;
public string ResultPath => ResultPaths.FirstOrDefault();
public string ResultName => ResultNames.FirstOrDefault();
public virtual string InputPath { get; set; }
public virtual bool ForceFileSystem { get; set; }
public virtual bool Multiselect { get; set; }
public virtual string Title { get; set; }
public virtual string OkButtonLabel { get; set; }
public virtual string FileNameLabel { get; set; }
protected virtual int SetOptions(int options)
{
if (ForceFileSystem)
{
options |= (int)FOS.FOS_FORCEFILESYSTEM;
}
if (Multiselect)
{
options |= (int)FOS.FOS_ALLOWMULTISELECT;
}
return options;
}
// for all .NET
public virtual bool? ShowDialog(IntPtr owner, bool throwOnError = false)
{
var dialog = (IFileOpenDialog)new FileOpenDialog();
if (!string.IsNullOrEmpty(InputPath))
{
if (CheckHr(SHCreateItemFromParsingName(InputPath, null, typeof(IShellItem).GUID, out var item), throwOnError) != 0)
return null;
dialog.SetFolder(item);
}
var options = FOS.FOS_PICKFOLDERS;
options = (FOS)SetOptions((int)options);
dialog.SetOptions(options);
if (Title != null)
{
dialog.SetTitle(Title);
}
if (OkButtonLabel != null)
{
dialog.SetOkButtonLabel(OkButtonLabel);
}
if (FileNameLabel != null)
{
dialog.SetFileName(FileNameLabel);
}
if (owner == IntPtr.Zero)
{
owner = Process.GetCurrentProcess().MainWindowHandle;
if (owner == IntPtr.Zero)
{
owner = GetDesktopWindow();
}
}
var hr = dialog.Show(owner);
if (hr == ERROR_CANCELLED)
return null;
if (CheckHr(hr, throwOnError) != 0)
return null;
if (CheckHr(dialog.GetResults(out var items), throwOnError) != 0)
return null;
items.GetCount(out var count);
for (var i = 0; i < count; i++)
{
items.GetItemAt(i, out var item);
CheckHr(item.GetDisplayName(SIGDN.SIGDN_DESKTOPABSOLUTEPARSING, out var path), throwOnError);
CheckHr(item.GetDisplayName(SIGDN.SIGDN_DESKTOPABSOLUTEEDITING, out var name), throwOnError);
if (path != null || name != null)
{
_resultPaths.Add(path);
_resultNames.Add(name);
}
}
return true;
}
private static int CheckHr(int hr, bool throwOnError)
{
if (hr != 0 && throwOnError) Marshal.ThrowExceptionForHR(hr);
return hr;
}
[DllImport("shell32")]
private static extern int SHCreateItemFromParsingName([MarshalAs(UnmanagedType.LPWStr)] string pszPath, IBindCtx pbc, [MarshalAs(UnmanagedType.LPStruct)] Guid riid, out IShellItem ppv);
[DllImport("user32")]
private static extern IntPtr GetDesktopWindow();
#pragma warning disable IDE1006 // Naming Styles
private const int ERROR_CANCELLED = unchecked((int)0x800704C7);
#pragma warning restore IDE1006 // Naming Styles
[ComImport, Guid("DC1C5A9C-E88A-4dde-A5A1-60F82A20AEF7")] // CLSID_FileOpenDialog
private class FileOpenDialog { }
[ComImport, Guid("d57c7288-d4ad-4768-be02-9d969532d960"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
private interface IFileOpenDialog
{
[PreserveSig] int Show(IntPtr parent); // IModalWindow
[PreserveSig] int SetFileTypes(); // not fully defined
[PreserveSig] int SetFileTypeIndex(int iFileType);
[PreserveSig] int GetFileTypeIndex(out int piFileType);
[PreserveSig] int Advise(); // not fully defined
[PreserveSig] int Unadvise();
[PreserveSig] int SetOptions(FOS fos);
[PreserveSig] int GetOptions(out FOS pfos);
[PreserveSig] int SetDefaultFolder(IShellItem psi);
[PreserveSig] int SetFolder(IShellItem psi);
[PreserveSig] int GetFolder(out IShellItem ppsi);
[PreserveSig] int GetCurrentSelection(out IShellItem ppsi);
[PreserveSig] int SetFileName([MarshalAs(UnmanagedType.LPWStr)] string pszName);
[PreserveSig] int GetFileName([MarshalAs(UnmanagedType.LPWStr)] out string pszName);
[PreserveSig] int SetTitle([MarshalAs(UnmanagedType.LPWStr)] string pszTitle);
[PreserveSig] int SetOkButtonLabel([MarshalAs(UnmanagedType.LPWStr)] string pszText);
[PreserveSig] int SetFileNameLabel([MarshalAs(UnmanagedType.LPWStr)] string pszLabel);
[PreserveSig] int GetResult(out IShellItem ppsi);
[PreserveSig] int AddPlace(IShellItem psi, int alignment);
[PreserveSig] int SetDefaultExtension([MarshalAs(UnmanagedType.LPWStr)] string pszDefaultExtension);
[PreserveSig] int Close(int hr);
[PreserveSig] int SetClientGuid(); // not fully defined
[PreserveSig] int ClearClientData();
[PreserveSig] int SetFilter([MarshalAs(UnmanagedType.IUnknown)] object pFilter);
[PreserveSig] int GetResults(out IShellItemArray ppenum);
[PreserveSig] int GetSelectedItems([MarshalAs(UnmanagedType.IUnknown)] out object ppsai);
}
[ComImport, Guid("43826D1E-E718-42EE-BC55-A1E261C37BFE"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
private interface IShellItem
{
[PreserveSig] int BindToHandler(); // not fully defined
[PreserveSig] int GetParent(); // not fully defined
[PreserveSig] int GetDisplayName(SIGDN sigdnName, [MarshalAs(UnmanagedType.LPWStr)] out string ppszName);
[PreserveSig] int GetAttributes(); // not fully defined
[PreserveSig] int Compare(); // not fully defined
}
[ComImport, Guid("b63ea76d-1f85-456f-a19c-48159efa858b"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
private interface IShellItemArray
{
[PreserveSig] int BindToHandler(); // not fully defined
[PreserveSig] int GetPropertyStore(); // not fully defined
[PreserveSig] int GetPropertyDescriptionList(); // not fully defined
[PreserveSig] int GetAttributes(); // not fully defined
[PreserveSig] int GetCount(out int pdwNumItems);
[PreserveSig] int GetItemAt(int dwIndex, out IShellItem ppsi);
[PreserveSig] int EnumItems(); // not fully defined
}
#pragma warning disable CA1712 // Do not prefix enum values with type name
private enum SIGDN : uint
{
SIGDN_DESKTOPABSOLUTEEDITING = 0x8004c000,
SIGDN_DESKTOPABSOLUTEPARSING = 0x80028000,
SIGDN_FILESYSPATH = 0x80058000,
SIGDN_NORMALDISPLAY = 0,
SIGDN_PARENTRELATIVE = 0x80080001,
SIGDN_PARENTRELATIVEEDITING = 0x80031001,
SIGDN_PARENTRELATIVEFORADDRESSBAR = 0x8007c001,
SIGDN_PARENTRELATIVEPARSING = 0x80018001,
SIGDN_URL = 0x80068000
}
[Flags]
private enum FOS
{
FOS_OVERWRITEPROMPT = 0x2,
FOS_STRICTFILETYPES = 0x4,
FOS_NOCHANGEDIR = 0x8,
FOS_PICKFOLDERS = 0x20,
FOS_FORCEFILESYSTEM = 0x40,
FOS_ALLNONSTORAGEITEMS = 0x80,
FOS_NOVALIDATE = 0x100,
FOS_ALLOWMULTISELECT = 0x200,
FOS_PATHMUSTEXIST = 0x800,
FOS_FILEMUSTEXIST = 0x1000,
FOS_CREATEPROMPT = 0x2000,
FOS_SHAREAWARE = 0x4000,
FOS_NOREADONLYRETURN = 0x8000,
FOS_NOTESTFILECREATE = 0x10000,
FOS_HIDEMRUPLACES = 0x20000,
FOS_HIDEPINNEDPLACES = 0x40000,
FOS_NODEREFERENCELINKS = 0x100000,
FOS_OKBUTTONNEEDSINTERACTION = 0x200000,
FOS_DONTADDTORECENT = 0x2000000,
FOS_FORCESHOWHIDDEN = 0x10000000,
FOS_DEFAULTNOMINIMODE = 0x20000000,
FOS_FORCEPREVIEWPANEON = 0x40000000,
FOS_SUPPORTSTREAMABLEITEMS = unchecked((int)0x80000000)
}
#pragma warning restore CA1712 // Do not prefix enum values with type name
}
}
================================================
FILE: MD5HashChanger/MD5HashChanger.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{9094A9CA-15C7-45D4-BF88-E91E2C75A5D7}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>MD5_Hash_Changer</RootNamespace>
<AssemblyName>MD5_Hash_Changer</AssemblyName>
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>icon.ico</ApplicationIcon>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
</ItemGroup>
<ItemGroup>
<Compile Include="FolderPicker.cs" />
<Compile Include="MainForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="MainForm.Designer.cs">
<DependentUpon>MainForm.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="MainForm.resx">
<DependentUpon>MainForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<None Include="app.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<Content Include="icon.ico" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
================================================
FILE: MD5HashChanger/MainForm.Designer.cs
================================================
namespace MD5_Hash_Changer
{
partial class MainForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
this.btnAddFiles = new System.Windows.Forms.Button();
this.btnStartMD5 = new System.Windows.Forms.Button();
this.btnRemoveAll = new System.Windows.Forms.Button();
this.btnRemoveSelected = new System.Windows.Forms.Button();
this.dataGridFileMD5 = new System.Windows.Forms.DataGridView();
this.FileName = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.oldMD5 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.newMD5 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.status = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.contextMenudgvMD5 = new System.Windows.Forms.ContextMenuStrip(this.components);
this.contextMenuCopyRows = new System.Windows.Forms.ToolStripMenuItem();
this.contextMenuDeleteRows = new System.Windows.Forms.ToolStripMenuItem();
this.contextMenuExportToCSV = new System.Windows.Forms.ToolStripMenuItem();
this.contextMenuOpenFile = new System.Windows.Forms.ToolStripMenuItem();
this.progressBarStatus = new System.Windows.Forms.ProgressBar();
this.labelItem = new System.Windows.Forms.Label();
this.labelTotalItem = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.panelAction = new System.Windows.Forms.Panel();
this.btnAddFolder = new System.Windows.Forms.Button();
((System.ComponentModel.ISupportInitialize)(this.dataGridFileMD5)).BeginInit();
this.contextMenudgvMD5.SuspendLayout();
this.panelAction.SuspendLayout();
this.SuspendLayout();
//
// btnAddFiles
//
this.btnAddFiles.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.btnAddFiles.Location = new System.Drawing.Point(136, 13);
this.btnAddFiles.Name = "btnAddFiles";
this.btnAddFiles.Size = new System.Drawing.Size(68, 35);
this.btnAddFiles.TabIndex = 1;
this.btnAddFiles.Text = "Add Files";
this.btnAddFiles.UseVisualStyleBackColor = true;
this.btnAddFiles.Click += new System.EventHandler(this.btnAddFiles_Click);
//
// btnStartMD5
//
this.btnStartMD5.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.btnStartMD5.Location = new System.Drawing.Point(7, 13);
this.btnStartMD5.Name = "btnStartMD5";
this.btnStartMD5.Size = new System.Drawing.Size(123, 35);
this.btnStartMD5.TabIndex = 2;
this.btnStartMD5.Text = "Start Change MD5";
this.btnStartMD5.UseVisualStyleBackColor = true;
this.btnStartMD5.Click += new System.EventHandler(this.btnStartMD5_Click);
//
// btnRemoveAll
//
this.btnRemoveAll.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.btnRemoveAll.Location = new System.Drawing.Point(414, 13);
this.btnRemoveAll.Name = "btnRemoveAll";
this.btnRemoveAll.Size = new System.Drawing.Size(112, 35);
this.btnRemoveAll.TabIndex = 3;
this.btnRemoveAll.Text = "Remove All Files";
this.btnRemoveAll.UseVisualStyleBackColor = true;
this.btnRemoveAll.Click += new System.EventHandler(this.btnRemoveAll_Click);
//
// btnRemoveSelected
//
this.btnRemoveSelected.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.btnRemoveSelected.Location = new System.Drawing.Point(292, 13);
this.btnRemoveSelected.Name = "btnRemoveSelected";
this.btnRemoveSelected.Size = new System.Drawing.Size(116, 35);
this.btnRemoveSelected.TabIndex = 4;
this.btnRemoveSelected.Text = "Remove Selected";
this.btnRemoveSelected.UseVisualStyleBackColor = true;
this.btnRemoveSelected.Click += new System.EventHandler(this.btnRemoveSelected_Click);
//
// dataGridFileMD5
//
this.dataGridFileMD5.AllowUserToAddRows = false;
this.dataGridFileMD5.AllowUserToDeleteRows = false;
this.dataGridFileMD5.AllowUserToResizeRows = false;
this.dataGridFileMD5.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control;
dataGridViewCellStyle1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.5F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.dataGridFileMD5.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;
this.dataGridFileMD5.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataGridFileMD5.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.FileName,
this.oldMD5,
this.newMD5,
this.status});
this.dataGridFileMD5.Location = new System.Drawing.Point(12, 12);
this.dataGridFileMD5.Name = "dataGridFileMD5";
this.dataGridFileMD5.RowHeadersVisible = false;
this.dataGridFileMD5.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
this.dataGridFileMD5.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
this.dataGridFileMD5.Size = new System.Drawing.Size(814, 329);
this.dataGridFileMD5.TabIndex = 0;
this.dataGridFileMD5.KeyUp += new System.Windows.Forms.KeyEventHandler(this.dataGridFileMD5_KeyUp);
this.dataGridFileMD5.MouseClick += new System.Windows.Forms.MouseEventHandler(this.dgvMD5_MouseClick);
//
// FileName
//
this.FileName.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
this.FileName.FillWeight = 148.4587F;
this.FileName.HeaderText = "File Name";
this.FileName.MinimumWidth = 270;
this.FileName.Name = "FileName";
this.FileName.ReadOnly = true;
//
// oldMD5
//
this.oldMD5.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None;
dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
this.oldMD5.DefaultCellStyle = dataGridViewCellStyle2;
this.oldMD5.FillWeight = 103.6357F;
this.oldMD5.HeaderText = "Old MD5";
this.oldMD5.MinimumWidth = 220;
this.oldMD5.Name = "oldMD5";
this.oldMD5.ReadOnly = true;
this.oldMD5.Resizable = System.Windows.Forms.DataGridViewTriState.False;
this.oldMD5.Width = 220;
//
// newMD5
//
this.newMD5.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None;
dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
this.newMD5.DefaultCellStyle = dataGridViewCellStyle3;
this.newMD5.FillWeight = 110.9225F;
this.newMD5.HeaderText = "New MD5";
this.newMD5.MinimumWidth = 220;
this.newMD5.Name = "newMD5";
this.newMD5.ReadOnly = true;
this.newMD5.Resizable = System.Windows.Forms.DataGridViewTriState.False;
this.newMD5.Width = 220;
//
// status
//
dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
this.status.DefaultCellStyle = dataGridViewCellStyle4;
this.status.FillWeight = 36.9831F;
this.status.HeaderText = "Status";
this.status.Name = "status";
this.status.ReadOnly = true;
this.status.Resizable = System.Windows.Forms.DataGridViewTriState.False;
this.status.Width = 75;
//
// contextMenudgvMD5
//
this.contextMenudgvMD5.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.contextMenuCopyRows,
this.contextMenuDeleteRows,
this.contextMenuExportToCSV,
this.contextMenuOpenFile});
this.contextMenudgvMD5.Name = "contextMenuDGVMD5";
this.contextMenudgvMD5.Size = new System.Drawing.Size(186, 92);
//
// contextMenuCopyRows
//
this.contextMenuCopyRows.Name = "contextMenuCopyRows";
this.contextMenuCopyRows.Size = new System.Drawing.Size(185, 22);
this.contextMenuCopyRows.Text = "Copy Selected Rows";
this.contextMenuCopyRows.Click += new System.EventHandler(this.contextMenuCopyRow_Click);
//
// contextMenuDeleteRows
//
this.contextMenuDeleteRows.Name = "contextMenuDeleteRows";
this.contextMenuDeleteRows.Size = new System.Drawing.Size(185, 22);
this.contextMenuDeleteRows.Text = "Delete Selected Rows";
this.contextMenuDeleteRows.Click += new System.EventHandler(this.deleteSelectedRowsToolStripMenuItem_Click);
//
// contextMenuExportToCSV
//
this.contextMenuExportToCSV.Name = "contextMenuExportToCSV";
this.contextMenuExportToCSV.Size = new System.Drawing.Size(185, 22);
this.contextMenuExportToCSV.Text = "Export All to .CSV";
this.contextMenuExportToCSV.Click += new System.EventHandler(this.contextMenuExportToCSV_Click);
//
// contextMenuOpenFile
//
this.contextMenuOpenFile.Name = "contextMenuOpenFile";
this.contextMenuOpenFile.Size = new System.Drawing.Size(185, 22);
this.contextMenuOpenFile.Text = "Open File";
this.contextMenuOpenFile.Click += new System.EventHandler(this.contextMenuOpenFile_Click);
//
// progressBarStatus
//
this.progressBarStatus.Location = new System.Drawing.Point(532, 13);
this.progressBarStatus.Name = "progressBarStatus";
this.progressBarStatus.Size = new System.Drawing.Size(216, 35);
this.progressBarStatus.TabIndex = 5;
//
// labelItem
//
this.labelItem.AutoSize = true;
this.labelItem.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.labelItem.Location = new System.Drawing.Point(781, 13);
this.labelItem.Name = "labelItem";
this.labelItem.Size = new System.Drawing.Size(17, 17);
this.labelItem.TabIndex = 6;
this.labelItem.Text = "0";
//
// labelTotalItem
//
this.labelTotalItem.AutoSize = true;
this.labelTotalItem.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.labelTotalItem.Location = new System.Drawing.Point(782, 32);
this.labelTotalItem.Name = "labelTotalItem";
this.labelTotalItem.Size = new System.Drawing.Size(17, 17);
this.labelTotalItem.TabIndex = 8;
this.labelTotalItem.Text = "0";
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(754, 15);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(29, 13);
this.label1.TabIndex = 9;
this.label1.Text = "item:";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(754, 34);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(30, 13);
this.label2.TabIndex = 10;
this.label2.Text = "total:";
//
// panelAction
//
this.panelAction.Controls.Add(this.btnAddFolder);
this.panelAction.Controls.Add(this.btnRemoveSelected);
this.panelAction.Controls.Add(this.label2);
this.panelAction.Controls.Add(this.btnAddFiles);
this.panelAction.Controls.Add(this.label1);
this.panelAction.Controls.Add(this.btnStartMD5);
this.panelAction.Controls.Add(this.labelTotalItem);
this.panelAction.Controls.Add(this.btnRemoveAll);
this.panelAction.Controls.Add(this.labelItem);
this.panelAction.Controls.Add(this.progressBarStatus);
this.panelAction.Dock = System.Windows.Forms.DockStyle.Bottom;
this.panelAction.Location = new System.Drawing.Point(0, 342);
this.panelAction.Name = "panelAction";
this.panelAction.Size = new System.Drawing.Size(835, 64);
this.panelAction.TabIndex = 11;
//
// btnAddFolder
//
this.btnAddFolder.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.btnAddFolder.Location = new System.Drawing.Point(210, 13);
this.btnAddFolder.Name = "btnAddFolder";
this.btnAddFolder.Size = new System.Drawing.Size(76, 35);
this.btnAddFolder.TabIndex = 11;
this.btnAddFolder.Text = "Add Folder";
this.btnAddFolder.UseVisualStyleBackColor = true;
this.btnAddFolder.Click += new System.EventHandler(this.btnAddFolder_Click);
//
// MainForm
//
this.AllowDrop = true;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(835, 406);
this.Controls.Add(this.panelAction);
this.Controls.Add(this.dataGridFileMD5);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "MainForm";
this.Text = "MD5 Hash Changer V1.2";
this.DragDrop += new System.Windows.Forms.DragEventHandler(this.MainForm_DragDrop);
this.DragEnter += new System.Windows.Forms.DragEventHandler(this.MainForm_DragEnter);
((System.ComponentModel.ISupportInitialize)(this.dataGridFileMD5)).EndInit();
this.contextMenudgvMD5.ResumeLayout(false);
this.panelAction.ResumeLayout(false);
this.panelAction.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.DataGridView dataGridFileMD5;
private System.Windows.Forms.ProgressBar progressBarStatus;
private System.Windows.Forms.Label labelItem;
private System.Windows.Forms.Label labelTotalItem;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Panel panelAction;
private System.Windows.Forms.ContextMenuStrip contextMenudgvMD5;
private System.Windows.Forms.ToolStripMenuItem contextMenuCopyRows;
private System.Windows.Forms.ToolStripMenuItem contextMenuOpenFile;
private System.Windows.Forms.DataGridViewTextBoxColumn FileName;
private System.Windows.Forms.DataGridViewTextBoxColumn oldMD5;
private System.Windows.Forms.DataGridViewTextBoxColumn newMD5;
private System.Windows.Forms.DataGridViewTextBoxColumn status;
private System.Windows.Forms.ToolStripMenuItem contextMenuExportToCSV;
private System.Windows.Forms.Button btnRemoveAll;
private System.Windows.Forms.Button btnRemoveSelected;
private System.Windows.Forms.Button btnStartMD5;
private System.Windows.Forms.Button btnAddFiles;
private System.Windows.Forms.Button btnAddFolder;
private System.Windows.Forms.ToolStripMenuItem contextMenuDeleteRows;
}
}
================================================
FILE: MD5HashChanger/MainForm.cs
================================================
/*
*
* Source code: https://github.com/ewwink/MD5-Hash-Changer
*
*/
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Security.Cryptography;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace MD5_Hash_Changer
{
public partial class MainForm : Form
{
public int currentRowIndex = 0;
public int totalFiles = 0;
public bool running = false;
public int[] randomByteLength = { 1, 7 };
public MainForm()
{
InitializeComponent();
}
private void btnRemoveAll_Click(object sender, EventArgs e)
{
dataGridFileMD5.Rows.Clear();
totalFiles = 0;
labelItem.Text = "0";
labelTotalItem.Text = "0";
}
private void btnRemoveSelected_Click(object sender, EventArgs e)
{
totalFiles -= dataGridFileMD5.SelectedRows.Count;
foreach (DataGridViewRow row in dataGridFileMD5.SelectedRows)
{
dataGridFileMD5.Rows.RemoveAt(row.Index);
}
dataGridFileMD5.ClearSelection();
labelItem.Text = "0";
labelTotalItem.Text = dataGridFileMD5.RowCount.ToString();
}
private void Additem(Dictionary<string, int> filesToCheck)
{
Thread threading = new Thread(() =>
{
int index = 0;
int maxThread = filesToCheck.Count > Environment.ProcessorCount ? Environment.ProcessorCount : filesToCheck.Count;
Parallel.ForEach(filesToCheck, new ParallelOptions { MaxDegreeOfParallelism = maxThread }, item =>
{
string md5hash = GetMD5Hash(item.Key);
this.Invoke((MethodInvoker)delegate ()
{
this.labelItem.Text = index.ToString();
this.progressBarStatus.Value = index;
this.dataGridFileMD5.Rows[item.Value].SetValues(new object[] { item.Key, md5hash, "", "idle" });
this.dataGridFileMD5.Rows[0].Selected = false;
});
});
//threading.Abort();
})
{
IsBackground = true
};
threading.Start();
}
private void btnAddFiles_Click(object sender, EventArgs e)
{
using (OpenFileDialog selectFile = new OpenFileDialog())
{
selectFile.Multiselect = true;
bool flag = selectFile.ShowDialog() == DialogResult.OK;
if (flag)
{
totalFiles += selectFile.FileNames.Length;
labelItem.Text = "0";
labelTotalItem.Text = totalFiles.ToString();
progressBarStatus.Value = 0;
progressBarStatus.Maximum = totalFiles;
var filesToCheck = new Dictionary<string, int>();
foreach (string filename in selectFile.FileNames)
{
int rowIndex = this.dataGridFileMD5.Rows.Add(new object[] { filename, "Processing...", "", "idle" });
filesToCheck[filename] = rowIndex;
}
Additem(filesToCheck);
}
}
}
private void btnAddFolder_Click(object sender, EventArgs e)
{
var fbd = new FolderPicker();
if (fbd.ShowDialog(this.Handle) == true)
{
var filesToCheck = new Dictionary<string, int>();
foreach (string filename in Directory.GetFiles(fbd.ResultPath))
{
int rowIndex = this.dataGridFileMD5.Rows.Add(new object[] { filename, "Processing...", "", "idle" });
filesToCheck[filename] = rowIndex;
}
Additem(filesToCheck);
}
}
private void btnStartMD5_Click(object sender, EventArgs e)
{
if (btnStartMD5.Text == "Stop Change MD5")
{
btnStartMD5.Text = "Start Change MD5";
running = false;
return;
}
running = true;
totalFiles = dataGridFileMD5.RowCount;
string[] fileNames = new string[totalFiles];
for (int i = 0; i < totalFiles; i++)
{
fileNames[i] = dataGridFileMD5.Rows[i].Cells[0].Value.ToString();
}
labelItem.Text = "0";
labelTotalItem.Text = totalFiles.ToString();
progressBarStatus.Value = 0;
progressBarStatus.Maximum = totalFiles;
btnStartMD5.Enabled = false;
btnStartMD5.Text = "Stop Change MD5";
Thread t = new Thread(() => ChangeMD5(fileNames))
{
IsBackground = true
};
t.Start();
}
private void ChangeMD5(string[] fileNames)
{
Random random = new Random();
this.Invoke((MethodInvoker)delegate ()
{
this.btnStartMD5.Enabled = true;
});
int currentProgress = 0;
Parallel.For(0, fileNames.Length, new ParallelOptions { MaxDegreeOfParallelism = Environment.ProcessorCount }, (index, state) =>
{
if (!running)
{
this.Invoke((MethodInvoker)delegate ()
{
this.btnStartMD5.Text = "Start Change MD5";
running = false;
});
state.Break();
}
int byteLength = random.Next(randomByteLength[0], randomByteLength[1]);
byte[] extraByte = new byte[byteLength];
for (int j = 0; j < byteLength; j++)
{
extraByte[j] = (byte)0;
}
long fileSize = new FileInfo(fileNames[index]).Length;
if (fileSize == 0L)
{
this.Invoke((MethodInvoker)delegate ()
{
this.dataGridFileMD5.Rows[index].Cells[3].Value = "Empty";
});
}
else
{
using (FileStream fileStream = new FileStream(fileNames[index], FileMode.Append))
{
fileStream.Write(extraByte, 0, extraByte.Length);
}
string md5hash = GetMD5Hash(fileNames[index]);
this.Invoke((MethodInvoker)delegate ()
{
bool flag2 = this.dataGridFileMD5.Rows[index].Cells[2].Value.ToString() != "";
if (flag2)
{
this.dataGridFileMD5.Rows[index].Cells[1].Value = this.dataGridFileMD5.Rows[index].Cells[2].Value;
}
currentProgress++;
this.labelItem.Text = (currentProgress).ToString();
this.progressBarStatus.Value = currentProgress;
this.dataGridFileMD5.Rows[index].Cells[2].Value = md5hash;
this.dataGridFileMD5.Rows[index].Cells[3].Value = "OK";
});
}
});
this.Invoke((MethodInvoker)delegate ()
{
this.btnStartMD5.Text = "Start Change MD5";
running = false;
});
}
private string GetMD5Hash(string fileName)
{
string md5hash = "";
long fileSize = new FileInfo(fileName).Length;
int bufferSize = fileSize > 1048576L ? 1048576 : 4096;
byte[] buffer;
byte[] oldBuffer;
int bytesRead;
int oldBytesRead;
long size;
long totalBytesRead = 0;
using (HashAlgorithm hashAlgorithm = MD5.Create())
{
using (FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read, bufferSize))
{
//md5hash = BitConverter.ToString(md.ComputeHash(fileStream)).Replace("-", "");
size = fileStream.Length;
buffer = new byte[bufferSize];
bytesRead = fileStream.Read(buffer, 0, buffer.Length);
totalBytesRead += bytesRead;
do
{
oldBytesRead = bytesRead;
oldBuffer = buffer;
buffer = new byte[bufferSize];
bytesRead = fileStream.Read(buffer, 0, buffer.Length);
totalBytesRead += bytesRead;
if (bytesRead == 0)
{
hashAlgorithm.TransformFinalBlock(oldBuffer, 0, oldBytesRead);
}
else
{
hashAlgorithm.TransformBlock(oldBuffer, 0, oldBytesRead, oldBuffer, 0);
}
} while (bytesRead != 0);
md5hash = BitConverter.ToString(hashAlgorithm.Hash).Replace("-", "");
}
}
return md5hash;
}
private void contextMenuCopyRow_Click(object sender, EventArgs e)
{
string rowData = "";
for (int i = 0; i < dataGridFileMD5.RowCount; i++)
{
var rows = dataGridFileMD5.Rows[i];
if (rows.Selected)
{
rowData += string.Format("{0}\t{1}\t{2}\r\n", rows.Cells[0].Value, rows.Cells[1].Value, rows.Cells[2].Value);
}
}
Clipboard.SetText(rowData);
}
private void contextMenuExportToCSV_Click(object sender, EventArgs e)
{
SaveFileDialog savefile = new SaveFileDialog();
savefile.Filter = "CSV files (*.csv)|*.csv|All files (*.*)|*.*";
if (savefile.ShowDialog() == DialogResult.OK)
{
string rowData = "";
for (int i = 0; i < dataGridFileMD5.RowCount; i++)
{
var rows = dataGridFileMD5.Rows[i];
rowData += string.Format("{0},{1},{2}\r\n", rows.Cells[0].Value, rows.Cells[1].Value, rows.Cells[2].Value);
}
File.WriteAllText(savefile.FileName, rowData);
}
}
private void contextMenuOpenFile_Click(object sender, EventArgs e)
{
try
{
Process.Start(dataGridFileMD5.Rows[currentRowIndex].Cells[0].Value.ToString());
}
catch { }
}
private void dgvMD5_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
currentRowIndex = dataGridFileMD5.HitTest(e.X, e.Y).RowIndex;
if (currentRowIndex > -1 && dataGridFileMD5.Rows[currentRowIndex].Selected)
{
contextMenuCopyRows.Enabled = true;
contextMenuDeleteRows.Enabled = true;
contextMenuOpenFile.Enabled = true;
contextMenudgvMD5.Show(dataGridFileMD5, new Point(e.X, e.Y));
}
else if (dataGridFileMD5.RowCount > 0)
{
contextMenuCopyRows.Enabled = false;
contextMenuDeleteRows.Enabled = false;
contextMenuOpenFile.Enabled = false;
contextMenudgvMD5.Show(dataGridFileMD5, new Point(e.X, e.Y));
}
}
}
private void MainForm_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
e.Effect = DragDropEffects.Copy;
}
private void MainForm_DragDrop(object sender, DragEventArgs e)
{
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
totalFiles += files.Length;
var filesToCheck = new Dictionary<string, int>();
foreach (string filename in files)
{
int rowIndex = dataGridFileMD5.Rows.Add(new object[] { filename, "checking", "", "idle" });
filesToCheck[filename] = rowIndex;
//System.Diagnostics.Debug.WriteLine(filename + ":" + rowIndex.ToString());
}
Additem(filesToCheck);
}
private void dataGridFileMD5_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyValue == (char)Keys.Delete)
{
foreach (DataGridViewRow row in dataGridFileMD5.SelectedRows)
{
dataGridFileMD5.Rows.RemoveAt(row.Index);
}
}
}
private void deleteSelectedRowsToolStripMenuItem_Click(object sender, EventArgs e)
{
foreach (DataGridViewRow row in dataGridFileMD5.SelectedRows)
{
dataGridFileMD5.Rows.RemoveAt(row.Index);
}
}
}
}
================================================
FILE: MD5HashChanger/MainForm.resx
================================================
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="FileName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="oldMD5.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="newMD5.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="status.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="contextMenudgvMD5.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
epVzMQcXJsJ+vqJgKhNwwjhK6acvakqqkYx6OAIxJY1WRjH5N85wAPG0F2qKOlyUWupKIynDfi6yIerl
XKypc38wGUVeMt4ZvzYmwklWXerPM0EXi51SMmk5Q+zc7Gcy771w0zK9gBCEYhpZkQtZT2vQD+i4mgCk
RkLyRxAz8LJwIIHcOh8Y11tS0nBHrkk5FVTQ+LmRV7GX6bDyGbl796SvcqY8+NgFm7p/lbpRxTEoVvmk
UlUKyGPHkZhhTqSIOO0kia5S8lEuwDMSzMZ68TlgnmagWq3vr/Tu51Y5ZHgxT5g4mQUV7tYdhhZhS3c4
EPl0b7gHMjTPEVodB5zp1KOQLGcN5LfKIYDVk4Z6KTz104zDe+hWGORzEEUM3itBtL+z3fdUMGG59lzY
OpZ5SJ8Fu4RWL3bHJbspiQur16gXrSSt3lQvahpLuDkBqLKzSi5PGbUDY6a7TgoKBWUj+ZpcvtFBNtM7
nyBZY55cVvkg3SppeI7jjTH67McJdBjAGiLtOrm4O7VlQUIdnHI+5D49mVp6QOEep9FvJ6sUWGlkUBmj
HHCS8WNXitIZqWzOOKresk13Fogo0xmE93Hyu572mXUnmKCmz7m+c0ba4bLyapkb74Px9wAet1YBuETA
meRFnvkilPB0eoTilQ29i8yqgXpeh7AKnXJo571NsrIBGdl56NueUCihyS2lSGM+ISRRaf8i0tLDnItk
zKGkIk2sbBlAQJ545Uy7uLUMJ0j3mSPEc/fW6PZr4PcCrxHv5eb/BzDTeevvqEi6AAAAAElFTkSuQmCC
KAAAADAAAABgAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANCzkfjQs5H80LOS/NCzkvzQs5L8
0bST/NG0k/zQtJL80LKQ/NCykPzQspD80LOQ/NCzkfzQs5H80LSS/NC0kvzQtJL80bWS/NG1k/zRtZP8
0baT/NG2lPzRtpT80raU/NO4lvzTt5X807iW/NK4lvzTuZb807mW/NO4lvzTuZf81LuZ/NW8mvzVvJr8
1bya/NW7m/zVvJv81byb/Na9nPzXv5/82MCg/Ne/n/zYwKD82MCg/NjAoPzYwKD82MCg+NCykfzQspH/
0LKR/9Czkf/Qs5L/0LOS/9Czkv/JoXn/wYZR/8KDSv/BgUf/wYBF/8B/Q//Af0P/wH9E/8B/RP/Af0T/
wYBE/8GARP/BgET/wYBE/8GARP/BgET/wYBF/8KBRf/CgUX/woFF/8GBRf/Cgkb/woJG/8KBRv/CgUb/
woJH/8ODR//Dg0j/w4NI/8ODSP/Dg0j/w4NI/8GJU//RsYz/18Cf/9e/n//YwKD/2MCg/9jAoP/YwKD/
2MCg/NCxkPzQspH/0LKR/9Cykf/Qs5H/0LOS/9Czkv/Kl2f/1Hsr/+B+J//geiH/33YZ/91vDf/dawb/
3WkD/91pA//daQP/3WkD/91pA//daQP/3WkD/91pA//daQP/3WkD/91pA//daQP/3WkD/91pA//daQP/
3WkD/91pA//daQP/3WkD/91pA//daQP/3WkD/91pA//daQP/3GkD/85tGP/Pp3z/17+f/9e/n//Xv5//
17+f/9jAoP/YwKD/2MCg/NCxkPzQsZD/0LKR/9Gykf/RspH/0bKR/9Czkv/MmWj/4Ic1//CQNv/wjjP/
8Iwx//CKK//whSP/738X/+14Cv/tdQb/7XUF/+11Bf/tdQX/7XUF/+11Bf/tdQX/7XUF/+11Bf/tdQX/
7XUF/+11Bf/tdQX/7XUF/+11Bf/tdQX/7XUF/+11Bf/tdQX/7XUF/+11Bf/tdQX/7XQF/9l1Gf/QqHz/
17+f/9e/n//Xv5//17+f/9e/n//Xv5//2MCg/M+wkPzPsJD/0LGQ/9Cxkf/QsZH/0LKR/9Cykf/Mmmj/
4Yo4//GUOv/xkzj/8ZE1//GQM//xjzD/8Y0s//CGIP/vfxP/7noK/+55B//ueQf/7nkH/+55B//ueQf/
7nkH/+55B//ueQf/7nkH/+55B//ueQf/7nkH/+55B//ueQf/7nkH/+55B//ueQf/7nkH/+55B//ueQf/
7ngH/9l4Gv/QqHz/17+f/9e/n//Xv5//17+f/9e/n//Xv5//17+f/NCwkPzQsJD/0bGQ/9CxkP/QsZD/
0LKR/9Cykf/Mmmj/4Y47//KYPf/ylzv/8pY5//KUNv/ykzT/8pIy//KQL//xjCj/8IYb/+99C//vfAn/
8H4L//F/Df/xfw3/8X8N//F/Df/xfw3/8X8N//B9Cv/vfAn/73wJ/+98Cf/vfAn/73wJ/+98Cf/vfAn/
73wJ/+98Cf/vfAn/7nwJ/9p6G//QqHz/1r6e/9e/nv/Xv5//17+f/9e/n//Xv5//17+f/NCwkPzQsI//
0bGQ/9GxkP/QsZD/0LGR/9CxkP/NnGn/45E+//OdQf/zm0D/85o9//OZO//zmDj/85c2//KWNP/ylDH/
8pIu//GLIP/xgxD/tWQS/4xME/+iVhP/olYU/6JWE/+hVRP/g0cU/81vD//wgQv/8IEL//CBC//wgQv/
8IEL//CBC//wgQv/8IEL//CBC//wgQv/738L/9p9HP/QqXv/17+e/9e/nv/Xv57/17+f/9e/n//Xv5//
17+f/NCwj/zQsJD/0LCP/9CwkP/QsJD/0LCQ/9CxkP/NnGr/45RB//SgRf/0oEP/9J5B//SdP//0nDz/
9Js6//OZOP/zmTb/85cz//OVLv/yjiL/3nwR/3g4Af+hSgD/pkwA/6ZMAP+dSAD/fDwC/+yBDf/xhA3/
8YQN//GEDf/xhA3/8YQN//GEDf/xhA3/8YQN//GEDf/xhA3/8IQN/9uAHv/QqXz/17+e/9e/nv/Xv57/
17+e/9e/nv/Xv57/17+e/M+vjvzQsI//0LCP/9Cwjv/QsJD/0LCQ/9Gxj//NnWr/45hE//WkSf/1pEf/
9aNF//WhQv/1oED/9Z8+//SeO//0nTn/9Jw3//SaNP/0mDD/85Ai/49KBv+URAD/pkwA/6VMAP+KPwD/
pVgH//KID//yiA//8ogP//KID//yiA//8ogP//KID//yiA//8ogP//KID//yiA//8YcP/9uCH//PqHv/
1r6d/9e/nv/Xv57/1r6d/9e/nv/Xv57/17+e/M+vj/zQr4//0LCP/9Cwj//QsI//0LCP/9Cwj//Nnmv/
5ZtH//WpTf/1qEv/9adJ//WmRv/1pET/9aRC//WjQP/0oT7/9KA7//SgOf/0njf/9Jwz/8h2Gf+DPQL/
o0sA/6BJAP+FQQL/1HkO//KMEf/yjBH/8owR//KMEf/yjBH/8owR//KMEf/yjBH/8owR//KMEf/yjBH/
8osR/9yFIf/Op3n/1r2c/9a+nf/Wvp3/1r6d/9e/nv/Xv57/1r6d/NCvjvzQr47/0K+P/9Cwjf/QsI7/
0LCO/9Cwj//Onmv/5Z5J//atUf/3rE//96tM//eqSv/2qUj/9qhG//anQ//2pkH/9qU///ajPf/2ozv/
9qE4/+KQLP+UUA3/nUgA/5dGAP+dVgn/6YoS//SQE//0kBP/9JAT//SQE//0kBP/9JAT//SQE//0kBP/
9JAT//SQE//0kBP/848T/92HIv/Op3n/1bua/9a9nP/Wvp3/1r6d/9a+nf/Wvp3/1r6d/M+ujfzQro3/
0K+O/9Cvjf/Qr43/0LCN/9Cwjv/On2r/5qJM//ewVP/3sFL/969Q//etTv/3rEv/9qxK//aqR//2qUX/
9qlD//anQP/2pj7/9qY8/9KKNv+aUA3/oUoA/55JAP+dVA7/3Icd//SUFf/0lBX/9JQV//SUFf/0lBX/
9JQV//SUFf/0lBX/9JQV//SUFf/0lBX/9JMV/96KI//Op3n/1bua/9W7mv/WvZz/1r6d/9a+nf/Wvp3/
1r6d/M+ujPzProz/z66M/9Cvjf/Qr43/0K+N/9Cvjf/OoGv/56VP//i1WP/4tFf/+LNU//iyUv/3sU//
97BO//evS//3rkn/961H//esRf/3q0P/25U8/5JHBv+lTAD/pkwA/6ZMAP+jSwD/k0sL/+iQGv/1mBf/
9ZgY//WYGP/1mBj/9ZgY//WYGP/1mBj/9ZgY//WYGP/1mBj/9ZcX/96NJf/OqHr/1LqZ/9W7mv/Uupr/
1byb/9a+nf/Wvp3/1r6d/M+ujPzProz/z66M/8+ujP/Qr43/0K+N/9Cvjf/OoGv/56hS//m5XP/5uFr/
+LdY//i2Vv/4tVP/+LRR//izT//4sk3/+LFL//iwSP/3r0b/o2Uh/6FKAP+mTAD/pkwA/6ZMAP+mTAD/
m0cA/7ZuFf/3nBn/9pwa//acGv/2nBr/9pwa//acGv/2nBr/9pwa//acGv/2nBr/9psZ/9+PJv/OqHn/
1bqZ/9W7mf/Vupn/1Lqa/9W8m//VvZz/1b2d/M+tjPzProz/z62L/8+tjP/Proz/z66M/9Cujf/PoWz/
6KtV//m7X//5u13/+bpb//m5Wf/5uFf/+bdV//m2Uv/5tVD/+bVO//mzTP/2sUn/j1IT/6RLAP+mTAD/
pkwA/6ZMAP+mTAD/oEoA/51bDP/4oBv/958b//efG//3nxv/958b//efG//3nxv/958b//efG//3nxv/
9p8b/9+SJ//OqHn/1LqZ/9W6mf/Uupn/1buZ/9S6mv/Vu5v/1byc/M+ti/zPrYv/z62L/8+tjP/PrYz/
z66M/8+ujP/OoWz/6a5Y//rAY//6v2H/+r9f//q+Xf/6vVv/+rxY//q7Vv/6ulX/+rlS//q5UP/5t07/
klsc/5hGAP+mTAD/pkwA/6ZMAP+lTAD/jUEA/6loD//4pB7/+KQe//ikHv/4pB7/+KQe//ikHv/4pB7/
+KQe//ikHv/4pB7/96Md/+CVKf/OqXn/1LmZ/9S6mP/Uupn/1LqZ/9W7mf/Uupn/1Lub/M6si/zOrIv/
zqyM/8+ti//PrYv/z62M/8+ujP/Oom3/6bFb//vDZ//7w2X/+8Jj//vBYP/7wF7/+8Bc//u+Wv/7vlj/
+r1W//q8VP/6u1L/zJI7/3U4A/+WRQD/o0oA/6JKAP+QQgD/dTsF/+CVHf/5qCD/+agg//moIP/5qCD/
+agg//moIP/5qCD/+agg//moIP/5qCD/+Kcf/+CYKv/OqXn/07mX/9O5mP/Uupj/1LqZ/9S6mP/Uupn/
1LmZ/M2si/zOrIz/zqyL/86si//PrYv/z6yL/86sjP/Oom3/6rNd//vGav/8xmj//MVm//zEZP/7w2H/
+8Ng//vCXv/7wVv/+8BZ//u/V//7v1X/+LtR/695LP9tOAf/bzMA/24yAP90Pwr/wIQs//mxMf/6rCT/
+qsi//qrIv/6qyL/+qsi//qrIv/6qyL/+qsi//qrIv/6qyL/+Koh/+GaK//Oqnn/07mX/9O5l//TuZf/
1LqY/9S6mP/Uupj/1LqY/M2ri/zOq4v/zauL/82siv/OrIv/z62L/8+sjP/Pom7/67dg//zKbv/8ymz/
/Mlq//zIZ//8yGX/+8dk//vGYf/7xV//+8Vd//vEW//7w1n/+8JX//vCVP/wtkz/05w+/9efPv/0t0n/
+75K//u8Rf/7uDr/+rIr//qwJP/6sCT/+rAk//qwJP/6sCT/+rAk//qwJP/6sCT/+q4j/+GdLf/NqXn/
0riW/9O4l//TuZf/07mX/9O5l//TuZf/07mX/M6rivzOq4v/zquL/82siv/Nq4v/zauL/86si//Oo27/
67lj//zNcv/9zW///c1t//3Ma//9y2n//cpn//3JZf/9yWP//chh//3HX//9x1z//cZb//3FWP/9xVb/
/cRU//3DUv/9wlD//cJO//3AS//9v0j//LxA//y3Mf/8tCn//LQm//y0Jv/8tCb//LQm//y0Jv/8tCb/
+rIl/+KgLf/NqXj/0reW/9K3lv/St5b/0riW/9O4l//TuJf/0riW/M6rivzNq4r/zaqK/86riv/Oq4v/
zquK/82rjP/OpG//67xl//3QdP/90HL//dBw//3Pbv/9zmz//c5q//3MaP/9zGb//ctk//3KYv/9yl//
/cle//3IW//9yFr//cdY//3GVf/9xlP//cVS//3ET//9xE3//cNL//zBRP/8vTr//Lou//y3KP/8tyj/
/Lco//y3KP/8tyj/+7Yn/+KiL//NqXj/0baW/9G2lv/Stpb/0raW/9K3lv/St5b/0reX/M2qivzNqor/
zauJ/86riv/Oq4r/zquK/86riv/OpG//7L5o//7UeP/+03b//tN0//7Scv/+0nD//tFu//7Qa//+0Gr/
/s9o//7OZf/+zWT//s1i//7MX//9zF7//ctc//3KWf/9ylj//clV//3IU//9yFH//cdP//3GTf/9xkv/
/cRG//3AO//9vjL//bwt//27Kv/9uyr//Lop/+OlMP/NqXj/0baV/9G1lf/RtpX/0raW/9K2lv/Rtpb/
0beX/M2pifzNqYn/zamJ/82pif/Nqor/zaqK/82qiv/OpXD/68Fw//zXgv/814P//NeD//zXg//914P/
/deD//3YhP/92IT//diE//3Zhf/92YX//dmF//3Zhv/92of//dqI//3Zhf/92IL//dd+//3Vev/91Hb/
/dNz//3Rbv/80Gr//M5m//zMYP/8yln//MhR//zERv/7wkD/+r86/+KnOP/MqXj/0LWU/9C1lP/RtZX/
0bWV/9G1lf/RtZX/0bWV/M2piPzNqYn/zamJ/82pif/NqYn/zamJ/82qiv/KoG3/1qZW/+CyXf/fsl7/
3LBd/9uxX//ftGL/4LZk/92yYf/Yrl3/1ata/9asW//csV//37Nh/9+zYf/fs2H/37Ni/9+zYf/fsl//
3rFd/96wWv/er1j/3q5W/96uU//erVD/3atO/92qS//dqUn/3alG/9ynQf/cpT3/26I3/8+XOf/LqHn/
0LSU/9C0lP/QtJT/0bWV/9C0lP/QtJT/0bWV/MypiPzMqYn/zKmJ/82pif/MqYn/zamJ/82pif/NqYr/
zqqL/86ri//Oq4z/nY6C/52en//Ky8z/3+Dh/7O0tf9wcXP/RUZH/1JPTf+okXr/z66O/8+ujv/Pro7/
z66P/86uj//Pr4//z6+P/86wkP/PsJD/z7CR/8+xkf/OsZL/z7GS/8+xkv/PsZP/z7KT/8+yk//Ps5T/
0LOU/9C0lf/Ps5P/0LSU/8+zk//Ps5P/0LSU/9C0lP/QtJT/0LWU/M2piPzNqYj/zamI/82piP/MqYj/
zKmI/8ypif/MqYn/zKmJ/82pif/Oqor/no6B/6Ghof/Ozs7/4+Pj/7m5uf91dXX/SUlJ/1RQTf+okHn/
zqyM/86tjP/OrYz/zq2M/86tjf/OrY3/zq6N/86ujv/Pro//zq+P/86wkP/OsJD/zrCQ/82wkP/Nr5D/
za+Q/86wkf/OsZH/z7KS/8+yk//PspL/z7KT/8+yk//Ps5P/z7OT/8+zk//Ps5P/0LSU/Myoh/zMqIf/
zKiH/82piP/NqYj/zKiI/8yoiP/MqYn/zKmJ/8ypif/NqYn/no6B/6Ghof/Pz8//5OTk/7m5uf91dXX/
SUlJ/1RRTf+okHj/zayM/82sjP/NrIz/zq2M/86tjP/OrY3/zayN/82tjf/NrY7/za6O/82vj//Or4//
za+P/86vkP/Nr5D/za+Q/82vkP/OsJH/zrCR/8+ykv/PspL/z7KS/8+ykv/PspL/z7KT/8+zk//Ps5P/
0LOU/Myoh/zMqIf/zKiI/8yoh//NqYj/zKiH/82piP/MqYj/y6iI/8yoiP/NqYj/nY6B/6Ghof/Pz8//
5OTk/7m5uf91dXX/SUlJ/1RRTf+oj3j/zKuL/82si//Nq4z/zayM/82sjP/NrIz/zqyN/8ioiv+gj37/
jYV9/6CYkP+jnJT/kYqB/3RtZf9nX1f/amNb/8mrjf/Nr5D/zrCR/86wkf/NsJH/zrGR/86xkf/OsZH/
z7GS/8+xk//PsZP/z7GT/Myoh/zMqIf/zKiH/8yoh//MqIf/zKiH/8yoiP/MqIf/zKiH/8yoiP/MqYj/
nY6B/6Ghof/Pz8//5OTk/7m5uf91dXX/SUlJ/1RQTf+nj3f/zaqK/82ri//Nq4v/zauL/82rjP/Nq4z/
zayM/8amiP+cj4P/lJSU/7+/v//Gxsb/pKSk/2VlZf9HR0f/SElJ/8epjP/Nro//za+Q/82vkP/Nr5H/
zbCR/82wkf/Nr5H/zrCS/82wkf/OsJL/zrCS/Myoh/zMqIf/zKiH/8yoh//MqIf/zKiH/8yoiP/MqIf/
y6eH/8yoh//MqIj/nY6B/6Ghof/Pz8//5OTk/7m5uf91dXX/SUlJ/1RQTf+njnf/zauL/8yqi//Mqor/
zKqK/8yqi//Nq4v/zKuL/8WmiP+fkob/n5+f/9PT0//c3Nz/t7e3/21tbf9HR0f/RkZG/8epi//Nro//
zK6Q/8yukP/MrpD/za6R/82vkf/Nr5H/za+R/82vkf/NsJH/za+R/M2piPzNqYj/zKeH/8yoh//Mp4f/
y6eG/8unh//Lp4f/y6eH/8yoh//MqIj/nY6B/6Ghof/Pz8//5OTk/7m5uf91dXX/SUlJ/1RQTf+mjnf/
zKmK/8ypiv/LqYn/zKmK/8ypiv/Mqor/zKqK/8Slh/+fk4f/o6Oj/9nZ2f/i4uL/vb29/3Fxcf9JSUn/
R0dH/8aoiv/MrY//za6Q/82ukP/MrpD/zK6Q/8yukP/MrpD/zK6Q/8yukP/MrpD/za+R/M2piPzOqYj/
zaiI/8yoh//Lp4f/y6eG/8unh//Lp4f/y6eG/8unhv/Mp4f/nY6B/6Ghof/Pz8//5OTk/7m5uf91dXX/
SUlJ/1RQTf+njnf/y6mJ/8qoif/LqYn/y6mJ/8ypiv/MqYr/zKmK/8Skh/+fkob/pKSk/9nZ2f/i4uL/
vr6+/3Fxcf9JSUn/R0dH/8Woiv/MrY//zK2P/8ytj//MrY//zK2P/8ytj//LrY//y62P/8utj//MrpD/
y62P/MyoiPzOqYj/zamI/82oh//Lp4f/y6eH/8unh//Kpob/y6eH/8qmhv/Lp4f/nY6A/6Ghof/Pz8//
5OTk/7q6uv91dXX/SEhI/1RQTf+mjXb/yqiJ/8qoiP/KqIj/yqiJ/8qoif/LqIn/y6iK/8Skh/+fkob/
pKSk/9nZ2f/i4uL/vr6+/3BwcP9JSUn/RkdH/8Wnif/MrI3/zK2P/8usjv/MrY//zK2P/8ytj//LrY//
zK2P/8utj//LrY//y62P/MObgPzIoYT/zKeI/86piP/OqIj/zKeH/8qmhv/Kp4b/yqaG/8qmhv/Lp4b/
nY1//6CgoP/Ozs7/5OTk/7q6uv92dnb/SUlJ/1JOS/+li3X/y6eI/8qniP/Kp4j/yqaI/8qnif/Kp4n/
yqiJ/8Oihf+dkYX/pKSk/9ra2v/h4eH/vb29/29vb/9HR0f/RkZG/8Wmif/Lq43/zKyN/8qrjf/Kq43/
y6yO/8usjv/LrI7/y6yP/8usjv/LrI7/yquO/MKZf/zCmX//xZ2B/8mjhf/Mp4f/zaiI/8ynh//Lp4f/
yqaG/8qmhv/Lp4f/nYx+/56env/MzMz/4+Pj/7+/v/98fHz/S0tL/0xJR/+chHD/y6eI/8qmh//Kp4f/
yqaH/8qmiP/Jpoj/yqeJ/8Cghf+ZjoX/qKio/9zc3P/g4OD/ubm5/2pqav9GRkb/R0dH/8Wnif/Kqoz/
y6qM/8qrjf/Kq43/yqqN/8qrjv/Kq47/yquO/8qqjf/Kqo3/yqqN/MGYf/zCmX//wpl//8OagP/FnoL/
yqWG/82piP/Np4j/y6eH/8qmhv/Kpob/oo59/5qamv/Hx8f/4+Pj/8nJyf+Kior/VFRU/0NDQv+FdGT/
xqOF/8mlhv/Kpof/yqaI/8qmh//Jpof/yaaI/7qdhP+RjIj/s7Oz/+Dg4P/d3d3/sLCw/2NjY/9DQ0P/
T0xK/8mpi//KqYv/yqqM/8qqjP/Kqo3/yqqM/8qqjf/Kqo7/yaqN/8mqjf/Jqo3/yaqN/MGYf/zCmX//
wpl//8GYf//CmX//wpmA/8eghP/LpYf/zaiI/8yniP/Lpob/r5R9/5OTk/+8vLz/4ODg/9jY2P+qqqr/
cnJy/0pKSv9ZVE//qI12/8mlhv/JpYb/yaWH/8mlh//Jpoj/xqOG/5yNgf+dnZ3/yMjI/+Li4v/T09P/
n5+f/1dXV/9CQkL/Zl1W/8upi//KqIv/yqqL/8mpi//JqYz/yqmM/8qpjP/KqYz/yamM/8mpjP/JqYz/
yamN/MGYf/zAl37/wZh//8GYfv/BmH//wZh//8GYf//Dm4H/yKGD/8ymh//Mp4f/w6GD/4qJh/+vr6//
2dnZ/+Hh4f/IyMj/nJyc/2lpaf9VVVX/bmZe/66Sev/GooX/yaWH/8mlh/++noT/pJGB/5eWlf+4uLj/
1tbW/93d3f/Gxsb/ioqK/01NTf9DQ0P/h3Zn/8qoiv/KqIr/yqiL/8moiv/JqIv/yaiL/8moi//JqYz/
yamM/8mojP/JqYz/yaiM/MCXfvzAl37/wJd+/8CXf//BmH7/wZh//8CXfv/BmH//wpl//8Wdgv/KpIb/
zKeH/5SJfv+goKD/y8vL/+Tk5P/d3d3/xMTE/5ycnP9+fn7/b29v/355dP+Og3n/mop8/5eJff+RioT/
lpST/7Kysv/MzMz/2tra/9XV1f+ysrL/cnJy/0VFRf9NSkj/qI55/8mnif/Jp4r/yaeK/8mniv/JqIv/
yKeL/8mni//Jp4v/yaiM/8mojP/Jp4z/yKeM/MCXffzAl33/wJd+/8CXfv/Al37/wJd+/8CXfv/Al37/
wZh//8KZf//BmX//xp2C/7OXgf+OjIr/sbGx/9vb2//k5OT/39/f/87Ozv+7u7v/qamp/5ubm/+Wlpb/
lpaW/5iYmP+fn5//sLCw/8fHx//U1NT/2dnZ/8fHx/+NjY3/VlZW/0JCQv93al7/vp6E/8imif/Ipon/
yKaJ/8mniv/Jpor/yaaL/8imiv/Jp4v/yKeM/8injP/Ipov/yKeM/L+Wffy/ln3/wJd9/8CWff/Aln7/
wJd9/8CWfv/Al37/wJd+/8CXfv/Al37/wJd+/7yWfv+YiH7/mZiY/8fHx//d3d3/5OTk/+Hh4f/X19f/
zc3N/8LCwv+7u7v/uLi4/7m5uf+/v7//ycnJ/9XV1f/b29v/19fX/6Wlpf9paWn/R0dH/1RPTP+kinX/
x6SI/8ekiP/HpYn/x6WJ/8eliv/Ipor/yKaK/8imiv/IpYr/yKWK/8imiv/Hpor/x6aK/L+Wffy/ln3/
vpZ9/8CWfv/Aln7/v5Z+/7+Wff/Aln3/wJZ+/7+Wff/Al33/wJd+/8CWfv+vjnr/joeD/6mpqf/Ly8v/
3Nzc/+Pj4//l5eX/4eHh/9jY2P/U1NT/09PT/9PT0//W1tb/3Nzc/+Li4v/c3Nz/ubm5/3Z2dv9OTk7/
RUVF/4d1Zf/DoYX/x6SI/8ekiP/HpIn/x6SJ/8ekif/HpIn/x6SJ/8eliv/HpYr/x6WK/8eliv/HpYr/
x6WK/L6Wffy+lX3/vpZ+/76Wff++ln3/v5Z9/7+Wff+/ln3/v5Z9/8CXff+/ln3/wJZ+/8CWfv/Al37/
rYx4/5CLiP+mpqb/xcXF/9XV1f/b29v/4+Pj/+np6f/q6ur/6urq/+rq6v/p6en/5OTk/9DQ0P+pqan/
eXl5/05OTv9LSUj/d2he/8aihv/Go4f/x6SI/8ajiP/HpIn/x6SJ/8ekif/HpIn/x6SJ/8ekif/HpIn/
x6WK/8ekiv/Go4n/x6SK/L2Vfvy9lX7/vpV+/72Vfv+9lX3/vpV9/76Wfv++ln7/vpZ+/76Wfv++ln7/
v5Z9/7+Wfv+/ln7/wJZ9/6iLev+Ui4f/oqGh/729vf/IyMj/zMzM/9HR0f/V1dX/19fX/9TU1P/Ly8v/
ubm5/5SUlP9xcXH/VVVV/09NS/9/b2L/upmA/8ahh//Goof/xqKH/8ajh//Go4j/xqOI/8ajiP/Go4j/
xqOI/8ajif/Go4n/xqOJ/8ajif/Go4n/xqOJ/L2Vfvy9lX7/vZV+/72Vfv++lX7/vZV+/76Wfv+9lX7/
vpZ+/76Vfv+9lX7/vpZ+/76Vfv++ln7/v5Z+/76Vff+xj3v/lod//5qamv+tra3/t7e3/7q6uv+4uLj/
s7Oz/6enp/+Xl5f/gYGB/2RkZP9TU1P/VVJP/5iAbv+9m4H/xqGG/8ahhv/GoYb/xaKH/8Wih//Foof/
xaKH/8ajh//Gooj/xaKH/8aiiP/Gooj/xqOJ/8aiiP/Fooj/xaKI/L2Vfvy9lX7/vZR9/72Vfv+9lX7/
vZV+/72Vfv+9lX3/vZV+/72Vfv+9lX7/vZV+/76Vfv++lX//vpZ//7+Wf/+/ln7/v5Z+/6mMef+ZioH/
nJWR/6Ccmv+cmpn/k5KS/4KBgP90cW//a2dj/29mXv+PeWr/vJmA/8ahhv/GoYb/xaCG/8Wghv/GoYb/
xqGH/8ahhv/FoYb/xaGH/8Whh//FoYf/xaGH/8aiiP/FoYf/xqKI/8Whh//FoYf/xaKI/L2Vfvy9lH7/
vZR+/7yUfv+9lH7/vZR+/72Ufv+9lH3/vZR9/72Vfv+9lX7/vZR+/72Vfv+9lX7/vpZ+/76Wf/++ln//
vpZ//76Wf/+8lX7/so96/6qOf/+mj4D/o41//6GKe/+iiXf/qY13/76bgf/HoYb/xqCF/8aghv/GoIb/
xaCF/8Wghf/FoIX/xaCG/8Wghv/FoIb/xaCG/8Wghv/EoYf/xKCH/8Sghv/EoIb/xKCG/8Sgh//EoIf/
xKCH/LuTffi9lH78vpV//LyUf/y9lH78vZR+/LyTffy9lH78vZR+/L2Vfvy9lH78vZR+/L2Uffy9lH38
vZV+/L2Vfvy9lX78vZV+/L6Vf/y+ln/8vpZ//L6Wf/y+ln/8v5d//MGZgPzEnYL8x6CE/MeghfzHoIb8
xqCF/MWfhPzFn4X8xZ+F/MWfhvzFoIb8xJ+F/MWghvzFoIb8xaCG/MWghvzEoIb8xKCG/MOghvzEoIb8
w6CG/MOghvzDn4b8w5+G+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAgAAAAQAAAAAEAIAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAADQspH60LOR/dCzkv3Qs5L90bST/c6vjf3Nr4z9za+M/c2wjf3OsI39
zrGO/c6xjv3Oso/9zrKP/c+yj/3Ps5D90LSR/dC0kf3QtJH90LWS/dG1kv3RtpT90riV/dK4lv3SuJb9
0riX/dS6mf3YwJ/92MCg/djAoP3YwKD92MCg+tCxkf3QspH/0LKR/9Czkf/Qs5L/xnQs/9NyHv/SbBT/
0WUI/9BiAv/QYgL/0GIC/9BiAv/QYgL/0GIC/9BiAv/QYgL/0GIC/9BiAv/QYgL/0GIC/9BiAv/QYgL/
0GIC/9BiAv/QYQL/xXQt/9e/n//Xv5//17+f/9jAoP/YwKD90LGQ/dCxkP/QsZH/0bKR/9Czkv/YhTj/
8JA1//COMv/wiyz/74Me/+55DP/tdQX/7XUF/+11Bf/tdQX/7XUF/+11Bf/tdQX/7XUF/+11Bf/tdQX/
7XUF/+11Bf/tdQX/7XUF/+x1Bf/Tfi//17+f/9e/n//Xv5//17+f/9e/n/3QsI/90LGQ/9CxkP/QsZD/
0LKR/9mJPP/ylzz/8ZU4//GTNf/xkTH/8Y4r//CEGf/uewn/73wJ//B9Cv/wfQr/8H0K//B9Cv/vewj/
7nsI/+57CP/uewj/7nsI/+57CP/uewj/7nsI/9SCMP/Xv57/17+e/9e/n//Xv5//17+f/dCwj/3QsI//
0LGQ/9CxkP/QsZD/2o4///OdQv/zmz7/85k7//OYN//yljP/8pQw//GMIP/NcA//kEkN/6NSDf+jUg3/
iEYN/914Df/wgQv/8IEL//CBC//wgQv/8IEL//CBC//vgAv/1IQx/9a+nv/Xv57/17+e/9e/nv/Xv579
z7CP/dCwj//QsI//0LCQ/9Cxj//bkkP/9KNI//SiRP/0oEH/9J49//ScOv/zmzb/85ky//KQIf+HQgP/
pkwA/6VMAP+PSAT/8YcO//GHDv/xhw7/8YcO//GHDv/xhw7/8YcO//GGDv/ViDL/1r6d/9a+nv/Xv57/
17+e/9e+nv3Qr4790K+O/9Cwjv/QsI//0LCP/9uWRv/1qU3/9ahK//WmRv/1pEP/9aNA//ShPP/0oDn/
9J00/69mFf+dSAD/lkUA/75rDP/yjBH/8owR//KMEf/yjBH/8owR//KMEf/yjBH/8owR/9WKM//VvJv/
1r6d/9a+nf/Wvp3/1r6d/c+ujf3Qr47/0K+N/9Cvjv/QsI7/3JpK//avU//3rk//96xM//arSf/2qUX/
9qhC//amP//2pTv/y4It/5hFAP+SQwH/2IIa//SSFP/0khT/9JIU//SSFP/0khT/9JIU//SSFP/zkhT/
1o01/9S6mv/Vu5v/1r6d/9a+nf/Wvp39z66M/c+ujP/Qr43/0K+N/9Cvjf/enk3/+LVY//i0Vf/4slL/
97FO//evS//3rkj/96xE/9uVOv+bSAP/pkwA/6ZMAP+YSQX/5Y4Z//WYF//1mBf/9ZgX//WYF//1mBf/
9ZgX//WYF//XkDb/1LqZ/9W6mv/Vu5r/1r6d/9a+nf3PrYz9z62M/8+ujP/Proz/0K+N/9+iUf/5u17/
+blb//i4V//4t1T/+LVR//i0Tv/4skr/snIl/6VLAP+mTAD/pkwA/6JKAP+9cxL/9p4a//aeGv/2nhr/
9p4a//aeGv/2nhr/9p4a/9eTOP/Uupn/1bqZ/9S6mf/Uu5r/1b2c/c6ti/3PrYv/z62M/8+tjP/Proz/
36ZU//rAY//6v2D/+r5d//q8Wv/6u1b/+rpT//q4UP+5fzD/l0UA/6ZMAP+mTAD/j0EA/8qCFv/4pB3/
+KQd//ikHf/4pB3/+KQd//ikHf/3pB3/15Y5/9S5mP/Uupj/1LmY/9S6mf/Uupr9zqyL/c6si//OrIv/
z62L/8+tjP/gqVf/+8Vp//vEZf/7w2L/+8Jf//vAXP/7v1n/+r5V//a5UP+LVRj/fTkA/3o4AP+YYBr/
+a0q//mqIP/5qiD/+aog//mqIP/5qiD/+aog//ipIP/Ymjv/07mX/9O5l//TuZj/1LqY/9S6mP3Oq4v9
zauL/82riv/OrIv/zqyL/+GtW//8y27//Mlr//zIZ//8x2X//MZh//zFXv/8xFv//MNY//vBVf/krEf/
6K5F//y+S//7vEb/+7Uy//uwJP/7sCP/+7Aj//uwI//7sCP/+q8j/9mdPP/SuJb/0riW/9K4lv/TuZf/
07mX/c6riv3Oq4r/zquK/82ri//Nq4v/4bBe//zPc//9znD//c1t//3Mav/9y2f//cpj//3JYP/9yF3/
/cda//3GV//9xVT//cRR//3DTv/8wkr//L0+//y4Lf/8tif//LYn//y2J//7tSb/2Z89/9G2lv/Rt5b/
0reW/9K3lv/St5b9zaqJ/c2qif/Nqor/zquK/86riv/itGH//tR4//7Tdf/+0nL//tFv//7QbP/+z2n/
/s5m//7NYv/+zF///ctc//3KWf/9yVb//clT//3IUP/9x03//cVJ//3BPf/9vjD//bwr//y7Kf/aoj//
0baV/9G1lf/Stpb/0baV/9G2lv3NqYn9zKmJ/82pif/NqYn/zaqK/9aoW//ov23/575u/+a/cP/pwnT/
5sBz/+K8cf/jvnP/6cN4/+nDev/pxHz/6cN6/+jBdv/owHD/575r/+e8Zf/numD/5rha/+a1U//mskr/
5K4+/9CdRv/QtJT/0LSU/9C0lP/QtJT/0LWV/cypiP3MqIj/zKmI/8ypiP/MqYn/zamK/82qiv+tmIX/
p6ip/9/f4P+mp6j/TExN/2NcVf/OrY3/zq2N/8+ujv/Oro7/zq6O/86vj//OsJD/z7CR/86wkf/OsZH/
zrGS/8+yk//PspP/z7OU/8+zk//Ps5P/z7OT/8+zk//QtJT9zKiH/cyoh//NqYj/zKiI/8ypif/MqYn/
zKmJ/62XhP+qqqr/4uLi/6urq/9PT0//ZFxV/82si//NrIz/zayM/86tjP/OrY3/za2N/86ujv/Nr4//
za+P/82vkP/Nr5D/za+Q/86xkf/PsZL/z7KS/8+ykv/PspL/z7KS/8+zk/3MqIf9zKiH/8yoh//MqIf/
zKiH/8yoiP/LqIj/rZeD/6qqqv/i4uL/q6ur/09PT/9kXFX/zKuK/82ri//Nq4v/zayL/82sjP/Ao4b/
jIaB/6mkn/+alY//aWRf/15ZVP/JrI7/za+Q/82wkP/NsJH/zbCR/86xkv/OsZL/z7GS/cyoh/3MqIf/
zKiH/8yoh//MqIf/y6eH/8unh/+tl4P/qqqq/+Li4v+rq6v/T09P/2NcVP/Mqor/zKqK/8yqiv/Mqov/
zauL/72ghP+YmJj/1dXV/76+vv9gYGD/RERE/8mqjP/Mro//zK6Q/82vkf/Nr5H/za+R/82vkf/NsJH9
zamH/cyoh//Mp4f/y6eG/8unh//Lp4f/y6eH/62Wgv+qqqr/4uLi/6urq/9PT0//Y1tU/8upif/LqYn/
y6mJ/8ypiv/LqYr/vZ+D/52dnf/d3d3/x8fH/2VlZf9ERUX/yKmM/8ytj//MrY//zK6Q/8yukP/MrpD/
zK6Q/8yukP3MqIf9zamI/8ynh//Lp4b/yqaG/8qmhv/Lpob/rJaC/6qqqv/i4uL/q6ur/05OTv9jW1T/
y6iJ/8qoiP/KqIn/y6iJ/8uoif+8noP/nZ2d/93d3f/IyMj/ZWVl/0RERf/HqIv/y6yO/8usjv/MrY//
y62P/8utj//LrY//y62P/cSbgP3Jo4X/zamI/8ynh//Kpob/yqaG/8qmhv+slYH/qamp/+Li4v+srKz/
T09P/2BYUv/Kp4j/yqeH/8qmiP/Kp4n/yqeJ/7qcgf+dnZ3/3t7e/8fHx/9jY2P/RERE/8eniv/Lq43/
yquN/8qrjf/LrI7/y6yO/8urjv/Kq479wpl//cKZf//EnIH/yqWG/8yoh//Lp4f/yqaG/66VgP+kpKT/
4ODg/7q6uv9aWlr/SkdF/8ajhf/JpYf/yqaI/8mmh//Jpoj/rZWA/6enp//h4eH/vr6+/1tbW/9IR0b/
yamL/8qpjP/Kqoz/yqqM/8qqjf/Kqo3/yaqN/8mqjf3BmH/9wZh//8GYf//CmX//xp+C/8ymh//Mp4f/
u5uA/5eXl//Z2dn/1NTU/4SEhP9MTEz/iHVm/8mlhv/JpYf/yaWH/8Sihf+Vjoj/w8PD/+Dg4P+pqan/
Tk5O/19YUv/KqIr/yamK/8mpi//JqYz/yamM/8mpjP/JqYz/yamM/cCXfv3Al37/wJd+/8GYf//BmH7/
wpl//8ehhP/Mpof/kYuG/8XFxf/j4+P/w8PD/4qKiv9paWn/i391/6iSf/+mkYD/lI6J/7Ozs//X19f/
09PT/4SEhP9DQ0P/iHZo/8mniv/Jp4r/yaeK/8mni//Jp4v/yaiL/8mnjP/Ip4z9wJd9/cCWff/Al37/
wJd+/8CXfv/Al37/wZh+/8OagP+nj37/pKSk/9vb2//i4uL/z8/P/7W1tf+ioqL/nJyc/5+fn/+ysrL/
zc3N/9nZ2f+2trb/W1tb/0hHRv+7m4H/x6WJ/8imif/Ipor/yKaK/8imiv/Ipov/x6aL/8emi/2/ln39
vpZ9/7+Wff+/ln3/v5Z9/8CWff/Aln3/wJd+/7+Wfv+Rh4H/t7e3/9zc3P/k5OT/3t7e/9TU1P/Ozs7/
z8/P/9fX1//f39//ycnJ/3R0dP9FRUX/jnpq/8ekh//HpIj/x6SJ/8ekif/HpYn/x6WK/8eliv/HpYr/
x6WK/b2Vff2+lX7/vpV9/76Vff+/lX3/v5V9/7+Wff+/ln3/wJZ+/7eSe/+SjIj/uLi4/9LS0v/c3Nz/
5eXl/+np6f/o6Oj/39/f/729vf94eHj/SkpK/3pqX//Goob/xqOH/8ajiP/HpIn/x6SI/8akif/GpIn/
xqSJ/8ajif/Go4n9vZV+/b2Vfv+9lX7/vZV9/72Vff++lX7/vZV9/76Vfv++lX7/v5Z9/7mSe/+YioL/
pqam/7q6uv+9vb3/urq6/62trf+QkJD/Z2dn/1FQT/+NeWn/xqGG/8ahhv/GoYf/xaKH/8Wih//Go4f/
xqKH/8aiiP/Gooj/xaKI/8WiiP29lX79vZR9/72Uff+9lH7/vZR9/72Vff+9lX7/vZV+/72Vfv+9lX7/
vpZ+/76Wfv+tjnv/oJCG/5uVkf+Qjo3/fXp4/3VsZv+LeGr/uZd+/8aghv/FoIb/xaCG/8Wghv/FoYb/
xaGH/8Whh//FoYf/xaGH/8Whh//FoYf/xaGH/buTffq9lH79vJR+/b2Ufv28k339vJR9/b2Ufv29lH79
vZR9/b2Ufv29lX79vZV+/b6Wf/2+ln79vpZ//cCXf/3Em4L9x6CE/caghf3GoIX9xZ+F/cWfhf3FoIX9
xaCF/cWghv3FoIb9xKCG/cOghv3EoIb9w6CG/cOfhv3Dn4b6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAEAAAACAAAAABACAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0LKR/dCzkv7No3f+0I9S/s+KSf7PiUj+z4pI/tCKSP7Qi0n+
0ItK/tGMSv7RjUv+0Y1M/tKrgf7YwKD+2MCg/dCxkP7QspH/1J1m//GSN//xjCz/74AV/+54B//veQj/
73kI/+54B//ueAb/7ngG/+54Bv/VoGf/17+f/9e/n/7QsI/+0LCQ/9Whaf/0n0P/9Jw8//OYNf/piSH/
mEsH/5hLCP/sgg3/8YQM//GEDP/whAz/1qJo/9e/nv/Xv57+0K+O/tCwjv/WpGz/9qxO//apSP/1pUH/
9aI6/6xeEf+wXgr/85AT//OQE//zkBP/848T/9WjZ//WvZz/1r6d/s+ujP7Proz/16hu//i3Wv/4tVP/
+LJM/9+ZO/+jSwH/oksB/+OOF//2mxn/9psZ//abGf/Wpmj/1bqa/9W9nP7OrIv+z62M/9eqcf/6wmT/
+sBe//q9WP/prEn/kUgG/5JJB//tnx//+acf//mnH//4px//1qlp/9S5mP/Uupn+zquK/s6si//YrXT/
/M1v//zLaf/8yGP//MZc//a/U//3vU7//L5E//u2Lf/7syX/+7Ml/9Wraf/St5b/0riX/s2pif7Nqor/
1ax0//PJcv/zyXH/8cdu//LHbf/zyG3/88Zo//PEYP/ywFf/8rtH//G2N//Tqmz/0bWV/9G1lf7MqYj+
zKmI/8ypif+9oYf/xcXF/3t7fP+ZhHH/zq2N/86tjf/Or4//zrCQ/86wkf/OsZL/z7KT/8+zk//Ps5P+
zKiH/syoh//MqIf/vJ+F/8bGxv99fX3/mINv/82ri//Nq4z/qJiJ/7azsP9bWFb/y62O/82vkf/NsJH/
zrCS/s2piP7Lp4f/y6eH/7yfhf/Gxsb/fX19/5eCb//LqYn/y6mK/62ekP/T09P/VVVV/8qrjf/MrY//
zK2P/8yukP7EnIH+yqSG/8unh/+8noP/xMTE/4SEhP+Pemn/yqaH/8qniP+rnZL/0dHR/1JSUv/JqYv/
yquN/8qrjv/Kq47+wZh//sGYf//FnYL/x6KF/7Kwr//AwMD/cm1p/7GXgP+ymob/ube1/7i4uP9eWFP/
yaiK/8moi//JqIz/yaiM/r+Wff7Al33/wJd+/8GYfv+nlIj/1NTU/9LS0v+4uLj/vr6+/9TU1P9ycnL/
loBu/8elif/IpYr/yKaK/8emi/69lX7+vpV9/76Wff++ln3/vZV9/6eYj//ExMT/0dHR/8HBwf97e3v/
hnRm/8aih//Go4j/xqOI/8ajif/Go4n+vZR+/b2Ufv69lH3+vZV+/r2Vfv6+lX7+spKA/qqUh/6fiHn+
tJR9/sWghf7FoIb+xaCG/sSghv7EoYf+xKCH/QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
</value>
</data>
</root>
================================================
FILE: MD5HashChanger/Program.cs
================================================
using System;
using System.Windows.Forms;
namespace MD5_Hash_Changer
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
}
}
================================================
FILE: MD5HashChanger/Properties/AssemblyInfo.cs
================================================
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("MD5 Hash Changer")]
[assembly: AssemblyDescription("MD5 Hash Changer")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Microsoft")]
[assembly: AssemblyProduct("MD5 Hash Changer")]
[assembly: AssemblyCopyright("Copyright © ewwink 2017")]
[assembly: AssemblyTrademark("ewwink")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("9816fa18-0885-42fe-b7b9-347fc8aee07f")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.1.0.0")]
[assembly: AssemblyFileVersion("1.1.0.0")]
================================================
FILE: MD5HashChanger/Properties/Resources.Designer.cs
================================================
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace MD5_Hash_Changer.Properties {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MD5_Hash_Changer.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
}
}
================================================
FILE: MD5HashChanger/Properties/Resources.resx
================================================
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
================================================
FILE: MD5HashChanger/Properties/Settings.Designer.cs
================================================
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace MD5_Hash_Changer.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.8.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
}
}
================================================
FILE: MD5HashChanger/Properties/Settings.settings
================================================
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>
================================================
FILE: MD5HashChanger/app.config
================================================
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2"/></startup></configuration>
================================================
FILE: MD5HashChanger.sln
================================================
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MD5HashChanger", "MD5HashChanger\MD5HashChanger.csproj", "{9094A9CA-15C7-45D4-BF88-E91E2C75A5D7}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{9094A9CA-15C7-45D4-BF88-E91E2C75A5D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9094A9CA-15C7-45D4-BF88-E91E2C75A5D7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9094A9CA-15C7-45D4-BF88-E91E2C75A5D7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9094A9CA-15C7-45D4-BF88-E91E2C75A5D7}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
================================================
FILE: README.md
================================================
# MD5-Hash-Changer
C# Application to Change MD5 Hash of any file. It work by appending "null" characters to the end of file
## Whats New in V1.2:
- Low Memory usage for checking large file
- Parallel Processing
- Add Drag n Drop File
- Select Folder
## Requirement & Download
- .Net Framework 4.6 (Windows 10 built-in)
- Download from [Release page](https://github.com/ewwink/MD5-Hash-Changer/releases)

gitextract_ft8kid8o/ ├── MD5HashChanger/ │ ├── FolderPicker.cs │ ├── MD5HashChanger.csproj │ ├── MainForm.Designer.cs │ ├── MainForm.cs │ ├── MainForm.resx │ ├── Program.cs │ ├── Properties/ │ │ ├── AssemblyInfo.cs │ │ ├── Resources.Designer.cs │ │ ├── Resources.resx │ │ ├── Settings.Designer.cs │ │ └── Settings.settings │ └── app.config ├── MD5HashChanger.sln └── README.md
SYMBOL INDEX (76 symbols across 6 files)
FILE: MD5HashChanger/FolderPicker.cs
class FolderPicker (line 10) | public class FolderPicker
method SetOptions (line 26) | protected virtual int SetOptions(int options)
method ShowDialog (line 41) | public virtual bool? ShowDialog(IntPtr owner, bool throwOnError = false)
method CheckHr (line 105) | private static int CheckHr(int hr, bool throwOnError)
method SHCreateItemFromParsingName (line 111) | [DllImport("shell32")]
method GetDesktopWindow (line 114) | [DllImport("user32")]
class FileOpenDialog (line 121) | [ComImport, Guid("DC1C5A9C-E88A-4dde-A5A1-60F82A20AEF7")] // CLSID_Fil...
type IFileOpenDialog (line 124) | [ComImport, Guid("d57c7288-d4ad-4768-be02-9d969532d960"), InterfaceTyp...
method Show (line 127) | [PreserveSig] int Show(IntPtr parent);
method SetFileTypes (line 128) | [PreserveSig] int SetFileTypes();
method SetFileTypeIndex (line 129) | [PreserveSig] int SetFileTypeIndex(int iFileType);
method GetFileTypeIndex (line 130) | [PreserveSig] int GetFileTypeIndex(out int piFileType);
method Advise (line 131) | [PreserveSig] int Advise();
method Unadvise (line 132) | [PreserveSig] int Unadvise();
method SetOptions (line 133) | [PreserveSig] int SetOptions(FOS fos);
method GetOptions (line 134) | [PreserveSig] int GetOptions(out FOS pfos);
method SetDefaultFolder (line 135) | [PreserveSig] int SetDefaultFolder(IShellItem psi);
method SetFolder (line 136) | [PreserveSig] int SetFolder(IShellItem psi);
method GetFolder (line 137) | [PreserveSig] int GetFolder(out IShellItem ppsi);
method GetCurrentSelection (line 138) | [PreserveSig] int GetCurrentSelection(out IShellItem ppsi);
method SetFileName (line 139) | [PreserveSig] int SetFileName([MarshalAs(UnmanagedType.LPWStr)] stri...
method GetFileName (line 140) | [PreserveSig] int GetFileName([MarshalAs(UnmanagedType.LPWStr)] out ...
method SetTitle (line 141) | [PreserveSig] int SetTitle([MarshalAs(UnmanagedType.LPWStr)] string ...
method SetOkButtonLabel (line 142) | [PreserveSig] int SetOkButtonLabel([MarshalAs(UnmanagedType.LPWStr)]...
method SetFileNameLabel (line 143) | [PreserveSig] int SetFileNameLabel([MarshalAs(UnmanagedType.LPWStr)]...
method GetResult (line 144) | [PreserveSig] int GetResult(out IShellItem ppsi);
method AddPlace (line 145) | [PreserveSig] int AddPlace(IShellItem psi, int alignment);
method SetDefaultExtension (line 146) | [PreserveSig] int SetDefaultExtension([MarshalAs(UnmanagedType.LPWSt...
method Close (line 147) | [PreserveSig] int Close(int hr);
method SetClientGuid (line 148) | [PreserveSig] int SetClientGuid();
method ClearClientData (line 149) | [PreserveSig] int ClearClientData();
method SetFilter (line 150) | [PreserveSig] int SetFilter([MarshalAs(UnmanagedType.IUnknown)] obje...
method GetResults (line 151) | [PreserveSig] int GetResults(out IShellItemArray ppenum);
method GetSelectedItems (line 152) | [PreserveSig] int GetSelectedItems([MarshalAs(UnmanagedType.IUnknown...
type IShellItem (line 155) | [ComImport, Guid("43826D1E-E718-42EE-BC55-A1E261C37BFE"), InterfaceTyp...
method BindToHandler (line 158) | [PreserveSig] int BindToHandler();
method GetParent (line 159) | [PreserveSig] int GetParent();
method GetDisplayName (line 160) | [PreserveSig] int GetDisplayName(SIGDN sigdnName, [MarshalAs(Unmanag...
method GetAttributes (line 161) | [PreserveSig] int GetAttributes();
method Compare (line 162) | [PreserveSig] int Compare();
type IShellItemArray (line 165) | [ComImport, Guid("b63ea76d-1f85-456f-a19c-48159efa858b"), InterfaceTyp...
method BindToHandler (line 168) | [PreserveSig] int BindToHandler();
method GetPropertyStore (line 169) | [PreserveSig] int GetPropertyStore();
method GetPropertyDescriptionList (line 170) | [PreserveSig] int GetPropertyDescriptionList();
method GetAttributes (line 171) | [PreserveSig] int GetAttributes();
method GetCount (line 172) | [PreserveSig] int GetCount(out int pdwNumItems);
method GetItemAt (line 173) | [PreserveSig] int GetItemAt(int dwIndex, out IShellItem ppsi);
method EnumItems (line 174) | [PreserveSig] int EnumItems();
type SIGDN (line 178) | private enum SIGDN : uint
type FOS (line 191) | [Flags]
FILE: MD5HashChanger/MainForm.Designer.cs
class MainForm (line 3) | partial class MainForm
method Dispose (line 14) | protected override void Dispose(bool disposing)
method InitializeComponent (line 29) | private void InitializeComponent()
FILE: MD5HashChanger/MainForm.cs
class MainForm (line 19) | public partial class MainForm : Form
method MainForm (line 26) | public MainForm()
method btnRemoveAll_Click (line 31) | private void btnRemoveAll_Click(object sender, EventArgs e)
method btnRemoveSelected_Click (line 39) | private void btnRemoveSelected_Click(object sender, EventArgs e)
method Additem (line 50) | private void Additem(Dictionary<string, int> filesToCheck)
method btnAddFiles_Click (line 74) | private void btnAddFiles_Click(object sender, EventArgs e)
method btnAddFolder_Click (line 98) | private void btnAddFolder_Click(object sender, EventArgs e)
method btnStartMD5_Click (line 113) | private void btnStartMD5_Click(object sender, EventArgs e)
method ChangeMD5 (line 141) | private void ChangeMD5(string[] fileNames)
method GetMD5Hash (line 203) | private string GetMD5Hash(string fileName)
method contextMenuCopyRow_Click (line 255) | private void contextMenuCopyRow_Click(object sender, EventArgs e)
method contextMenuExportToCSV_Click (line 269) | private void contextMenuExportToCSV_Click(object sender, EventArgs e)
method contextMenuOpenFile_Click (line 285) | private void contextMenuOpenFile_Click(object sender, EventArgs e)
method dgvMD5_MouseClick (line 294) | private void dgvMD5_MouseClick(object sender, MouseEventArgs e)
method MainForm_DragEnter (line 316) | private void MainForm_DragEnter(object sender, DragEventArgs e)
method MainForm_DragDrop (line 322) | private void MainForm_DragDrop(object sender, DragEventArgs e)
method dataGridFileMD5_KeyUp (line 336) | private void dataGridFileMD5_KeyUp(object sender, KeyEventArgs e)
method deleteSelectedRowsToolStripMenuItem_Click (line 348) | private void deleteSelectedRowsToolStripMenuItem_Click(object sender, ...
FILE: MD5HashChanger/Program.cs
class Program (line 6) | static class Program
method Main (line 11) | [STAThread]
FILE: MD5HashChanger/Properties/Resources.Designer.cs
class Resources (line 22) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
method Resources (line 31) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...
FILE: MD5HashChanger/Properties/Settings.Designer.cs
class Settings (line 14) | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
Condensed preview — 14 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (152K chars).
[
{
"path": "MD5HashChanger/FolderPicker.cs",
"chars": 9233,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Runtime.Inter"
},
{
"path": "MD5HashChanger/MD5HashChanger.csproj",
"chars": 3731,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
},
{
"path": "MD5HashChanger/MainForm.Designer.cs",
"chars": 19213,
"preview": "namespace MD5_Hash_Changer\n{\n partial class MainForm\n {\n /// <summary>\n /// Required designer varia"
},
{
"path": "MD5HashChanger/MainForm.cs",
"chars": 13576,
"preview": "/*\n * \n * Source code: https://github.com/ewwink/MD5-Hash-Changer \n * \n */\n\nusing System;\nusing System.Collections.Gene"
},
{
"path": "MD5HashChanger/MainForm.resx",
"chars": 88844,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "MD5HashChanger/Program.cs",
"chars": 435,
"preview": "using System;\nusing System.Windows.Forms;\n\nnamespace MD5_Hash_Changer\n{\n static class Program\n {\n /// <sum"
},
{
"path": "MD5HashChanger/Properties/AssemblyInfo.cs",
"chars": 1442,
"preview": "using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Infor"
},
{
"path": "MD5HashChanger/Properties/Resources.Designer.cs",
"chars": 2796,
"preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n// This code w"
},
{
"path": "MD5HashChanger/Properties/Resources.resx",
"chars": 5494,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "MD5HashChanger/Properties/Settings.Designer.cs",
"chars": 1071,
"preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n// This code w"
},
{
"path": "MD5HashChanger/Properties/Settings.settings",
"chars": 240,
"preview": "<?xml version='1.0' encoding='utf-8'?>\n<SettingsFile xmlns=\"http://schemas.microsoft.com/VisualStudio/2004/01/settings\""
},
{
"path": "MD5HashChanger/app.config",
"chars": 160,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n<startup><supportedRuntime version=\"v4.0\" sku=\".NETFramework,Vers"
},
{
"path": "MD5HashChanger.sln",
"chars": 910,
"preview": "\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 2012\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C"
},
{
"path": "README.md",
"chars": 509,
"preview": "# MD5-Hash-Changer\nC# Application to Change MD5 Hash of any file. It work by appending \"null\" characters to the end of f"
}
]
About this extraction
This page contains the full source code of the ewwink/MD5-Hash-Changer GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 14 files (144.2 KB), approximately 67.5k tokens, and a symbol index with 76 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.