diff --git a/RDPSign/RDPSign.vb b/RDPSign/RDPSign.vb
index 490e31f..303149b 100644
--- a/RDPSign/RDPSign.vb
+++ b/RDPSign/RDPSign.vb
@@ -1,6 +1,9 @@
-Public Class RDPSign
+Imports System.Windows.Forms
+
+Public Class RDPSign
Public ErrorNumber As Integer = 0
Public ErrorString As String = ""
+
Sub main()
End Sub
@@ -101,25 +104,37 @@
End If
'If we get here, we should be good to run the command to sign the RDP file.
- Dim Command As String = "C:\Windows\System32\rdpsign.exe"
- Dim Arguments As String
- Dim FileVersionInfo As FileVersionInfo = FileVersionInfo.GetVersionInfo(Command)
- ' On my windows 10 computer, the argument is /sha256 instead of /sha1. /sha1 doesn't work.
- ' On my windows 10 computer, the Product parts come in at 10.0.18362.1
- ' On a Windows Server 2008 R2 server I have access to, the argument is /sha1.
- ' On a Windows Server 2008 R2 server I have access to, the Product parts come in at 6.1.7601.17514 which is lower than the windows 10 ones.
- ' I do not have other versions of windows to test, so will need external testing for this.
- ' Not sure where the version number switches over, but also not sure how to determine which method to use otherwise
- If (FileVersionInfo.ProductMajorPart >= 10) Then
- Arguments = " /sha256 " & Thumbprint & " """ & RDPFileLocation & """"
+ Dim Command As String = GetSysDir() & "\rdpsign.exe"
+ If My.Computer.FileSystem.FileExists(Command) Then
+ Dim Arguments As String
+ Dim FileVersionInfo As FileVersionInfo = FileVersionInfo.GetVersionInfo(Command)
+ ' On my windows 10 computer, the argument is /sha256 instead of /sha1. /sha1 doesn't work.
+ ' On my windows 10 computer, the Product parts come in at 10.0.18362.1
+ ' On a Windows Server 2008 R2 server I have access to, the argument is /sha1.
+ ' On a Windows Server 2008 R2 server I have access to, the Product parts come in at 6.1.7601.17514 which is lower than the windows 10 ones.
+ ' I do not have other versions of windows to test, so will need external testing for this.
+ ' Not sure where the version number switches over, but also not sure how to determine which method to use otherwise
+ If (FileVersionInfo.ProductMajorPart >= 10) Then
+ Arguments = " /sha256 " & Thumbprint & " """ & RDPFileLocation & """"
+ Else
+ Arguments = " /sha1 " & Thumbprint & " """ & RDPFileLocation & """"
+ End If
+ Dim StartInfo As New ProcessStartInfo
+ StartInfo.FileName = Command
+ StartInfo.Arguments = Arguments
+ StartInfo.WindowStyle = ProcessWindowStyle.Hidden
+ Process.Start(StartInfo)
Else
- Arguments = " /sha1 " & Thumbprint & " """ & RDPFileLocation & """"
+ MessageBox.Show("RDPSign executable not found:" & vbNewLine & vbNewLine & Command, My.Application.Info.AssemblyName, MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
- Dim StartInfo As New ProcessStartInfo
- StartInfo.FileName = Command
- StartInfo.Arguments = Arguments
- StartInfo.WindowStyle = ProcessWindowStyle.Hidden
- Process.Start(StartInfo)
+
End Sub
+
+ Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
+
+ Function GetSysDir() As String
+ Return Environment.SystemDirectory.ToString
+ End Function
+
End Class
diff --git a/RDPSign/RDPSign.vbproj b/RDPSign/RDPSign.vbproj
index 0c6503e..0733cbf 100644
--- a/RDPSign/RDPSign.vbproj
+++ b/RDPSign/RDPSign.vbproj
@@ -48,6 +48,7 @@
+
diff --git a/remoteapp-tool/App.config b/remoteapp-tool/App.config
index 947e0e1..1fc2692 100644
--- a/remoteapp-tool/App.config
+++ b/remoteapp-tool/App.config
@@ -67,6 +67,15 @@
False
+
+ False
+
+
+ False
+
+
+ 0
+
diff --git a/remoteapp-tool/My Project/Settings.Designer.vb b/remoteapp-tool/My Project/Settings.Designer.vb
index b5bc9fb..f815b00 100644
--- a/remoteapp-tool/My Project/Settings.Designer.vb
+++ b/remoteapp-tool/My Project/Settings.Designer.vb
@@ -15,7 +15,7 @@ Option Explicit On
Namespace My
_
Partial Friend NotInheritable Class MySettings
Inherits Global.System.Configuration.ApplicationSettingsBase
@@ -29,7 +29,7 @@ Namespace My
Private Shared addedHandlerLockObject As New Object
_
- Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs)
+ Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs)
If My.Application.SaveMySettingsOnExit Then
My.Settings.Save()
End If
@@ -281,6 +281,42 @@ Namespace My
Me("SavedDisableFTA") = value
End Set
End Property
+
+ _
+ Public Property SavedSignRDP() As Boolean
+ Get
+ Return CType(Me("SavedSignRDP"),Boolean)
+ End Get
+ Set
+ Me("SavedSignRDP") = value
+ End Set
+ End Property
+
+ _
+ Public Property SavedSignedAndUnsigned() As Boolean
+ Get
+ Return CType(Me("SavedSignedAndUnsigned"),Boolean)
+ End Get
+ Set
+ Me("SavedSignedAndUnsigned") = value
+ End Set
+ End Property
+
+ _
+ Public Property SavedCertSelected() As Integer
+ Get
+ Return CType(Me("SavedCertSelected"),Integer)
+ End Get
+ Set
+ Me("SavedCertSelected") = value
+ End Set
+ End Property
End Class
End Namespace
diff --git a/remoteapp-tool/My Project/Settings.settings b/remoteapp-tool/My Project/Settings.settings
index ecf7582..84933ab 100644
--- a/remoteapp-tool/My Project/Settings.settings
+++ b/remoteapp-tool/My Project/Settings.settings
@@ -59,5 +59,14 @@
False
+
+ False
+
+
+ False
+
+
+ 0
+
\ No newline at end of file
diff --git a/remoteapp-tool/RemoteAppCreateClientConnection.Designer.vb b/remoteapp-tool/RemoteAppCreateClientConnection.Designer.vb
index 6fcae72..b7198b8 100644
--- a/remoteapp-tool/RemoteAppCreateClientConnection.Designer.vb
+++ b/remoteapp-tool/RemoteAppCreateClientConnection.Designer.vb
@@ -68,10 +68,10 @@ Partial Class RemoteAppCreateClientConnection
Me.FTACountLabel = New System.Windows.Forms.Label()
Me.DisabledFTACheckBox = New System.Windows.Forms.CheckBox()
Me.GroupBoxSignRDP = New System.Windows.Forms.GroupBox()
+ Me.CheckBoxCreateSignedAndUnsigned = New System.Windows.Forms.CheckBox()
Me.CertificateComboBox = New System.Windows.Forms.ComboBox()
Me.CertificateLabel = New System.Windows.Forms.Label()
- Me.CheckBoxSignRDPDisabled = New System.Windows.Forms.CheckBox()
- Me.CheckBoxCreateSignedAndUnsigned = New System.Windows.Forms.CheckBox()
+ Me.CheckBoxSignRDPEnabled = New System.Windows.Forms.CheckBox()
Me.ServerGroupBox.SuspendLayout()
Me.RDGWGroupBox.SuspendLayout()
Me.ClientConnectionGroupBox.SuspendLayout()
@@ -83,6 +83,7 @@ Partial Class RemoteAppCreateClientConnection
'
'EditAfterSave
'
+ Me.EditAfterSave.BackColor = System.Drawing.Color.Transparent
Me.EditAfterSave.ImageIndex = 2
Me.EditAfterSave.ImageList = Me.SmallerIcons
Me.EditAfterSave.Location = New System.Drawing.Point(313, 13)
@@ -91,7 +92,7 @@ Partial Class RemoteAppCreateClientConnection
Me.EditAfterSave.TabIndex = 2
Me.EditAfterSave.Text = "Manually edit RDP file"
Me.EditAfterSave.TextImageRelation = System.Windows.Forms.TextImageRelation.TextBeforeImage
- Me.EditAfterSave.UseVisualStyleBackColor = True
+ Me.EditAfterSave.UseVisualStyleBackColor = False
'
'SmallerIcons
'
@@ -113,10 +114,10 @@ Partial Class RemoteAppCreateClientConnection
Me.CreateButton.Font = New System.Drawing.Font("Segoe UI", 9.0!)
Me.CreateButton.ImageIndex = 6
Me.CreateButton.ImageList = Me.SmallerIcons
- Me.CreateButton.Location = New System.Drawing.Point(416, 546)
+ Me.CreateButton.Location = New System.Drawing.Point(416, 555)
Me.CreateButton.Name = "CreateButton"
Me.CreateButton.Size = New System.Drawing.Size(80, 29)
- Me.CreateButton.TabIndex = 8
+ Me.CreateButton.TabIndex = 9
Me.CreateButton.Text = "Create..."
Me.CreateButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText
Me.CreateButton.UseVisualStyleBackColor = False
@@ -134,10 +135,10 @@ Partial Class RemoteAppCreateClientConnection
Me.CancelEditButton.Font = New System.Drawing.Font("Segoe UI", 9.0!)
Me.CancelEditButton.ImageIndex = 4
Me.CancelEditButton.ImageList = Me.SmallerIcons
- Me.CancelEditButton.Location = New System.Drawing.Point(343, 546)
+ Me.CancelEditButton.Location = New System.Drawing.Point(343, 555)
Me.CancelEditButton.Name = "CancelEditButton"
Me.CancelEditButton.Size = New System.Drawing.Size(67, 29)
- Me.CancelEditButton.TabIndex = 7
+ Me.CancelEditButton.TabIndex = 8
Me.CancelEditButton.Text = "Cancel"
Me.CancelEditButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText
Me.CancelEditButton.UseVisualStyleBackColor = False
@@ -164,7 +165,7 @@ Partial Class RemoteAppCreateClientConnection
Me.Label13.Location = New System.Drawing.Point(7, 54)
Me.Label13.Name = "Label13"
Me.Label13.Size = New System.Drawing.Size(101, 15)
- Me.Label13.TabIndex = 104
+ Me.Label13.TabIndex = 4
Me.Label13.Text = "Alternative server:"
'
'Label14
@@ -173,7 +174,7 @@ Partial Class RemoteAppCreateClientConnection
Me.Label14.Location = New System.Drawing.Point(382, 25)
Me.Label14.Name = "Label14"
Me.Label14.Size = New System.Drawing.Size(32, 15)
- Me.Label14.TabIndex = 105
+ Me.Label14.TabIndex = 2
Me.Label14.Text = "Port:"
'
'Label12
@@ -182,7 +183,7 @@ Partial Class RemoteAppCreateClientConnection
Me.Label12.Location = New System.Drawing.Point(7, 25)
Me.Label12.Name = "Label12"
Me.Label12.Size = New System.Drawing.Size(85, 15)
- Me.Label12.TabIndex = 106
+ Me.Label12.TabIndex = 0
Me.Label12.Text = "Server address:"
'
'ServerPort
@@ -190,7 +191,7 @@ Partial Class RemoteAppCreateClientConnection
Me.ServerPort.Location = New System.Drawing.Point(420, 22)
Me.ServerPort.Name = "ServerPort"
Me.ServerPort.Size = New System.Drawing.Size(53, 23)
- Me.ServerPort.TabIndex = 1
+ Me.ServerPort.TabIndex = 3
Me.ServerPort.Text = "3389"
'
'AltServerAddress
@@ -198,14 +199,14 @@ Partial Class RemoteAppCreateClientConnection
Me.AltServerAddress.Location = New System.Drawing.Point(121, 51)
Me.AltServerAddress.Name = "AltServerAddress"
Me.AltServerAddress.Size = New System.Drawing.Size(352, 23)
- Me.AltServerAddress.TabIndex = 2
+ Me.AltServerAddress.TabIndex = 5
'
'ServerAddress
'
Me.ServerAddress.Location = New System.Drawing.Point(121, 22)
Me.ServerAddress.Name = "ServerAddress"
Me.ServerAddress.Size = New System.Drawing.Size(255, 23)
- Me.ServerAddress.TabIndex = 0
+ Me.ServerAddress.TabIndex = 1
'
'RDGWGroupBox
'
@@ -228,7 +229,7 @@ Partial Class RemoteAppCreateClientConnection
Me.AttemptDirectCheckBox.Location = New System.Drawing.Point(10, 76)
Me.AttemptDirectCheckBox.Name = "AttemptDirectCheckBox"
Me.AttemptDirectCheckBox.Size = New System.Drawing.Size(326, 19)
- Me.AttemptDirectCheckBox.TabIndex = 2
+ Me.AttemptDirectCheckBox.TabIndex = 3
Me.AttemptDirectCheckBox.Text = "Only use RD Gateway if direct connection is unsuccessful"
Me.AttemptDirectCheckBox.UseVisualStyleBackColor = True
'
@@ -249,7 +250,7 @@ Partial Class RemoteAppCreateClientConnection
Me.RDGWLabel.Location = New System.Drawing.Point(7, 50)
Me.RDGWLabel.Name = "RDGWLabel"
Me.RDGWLabel.Size = New System.Drawing.Size(116, 15)
- Me.RDGWLabel.TabIndex = 110
+ Me.RDGWLabel.TabIndex = 1
Me.RDGWLabel.Text = "RD Gateway address:"
'
'GatewayAddress
@@ -258,7 +259,7 @@ Partial Class RemoteAppCreateClientConnection
Me.GatewayAddress.Location = New System.Drawing.Point(145, 47)
Me.GatewayAddress.Name = "GatewayAddress"
Me.GatewayAddress.Size = New System.Drawing.Size(328, 23)
- Me.GatewayAddress.TabIndex = 1
+ Me.GatewayAddress.TabIndex = 2
'
'ClientConnectionGroupBox
'
@@ -299,6 +300,7 @@ Partial Class RemoteAppCreateClientConnection
'
'CreateRAWebIcon
'
+ Me.CreateRAWebIcon.BackColor = System.Drawing.Color.Transparent
Me.CreateRAWebIcon.ImageIndex = 5
Me.CreateRAWebIcon.ImageList = Me.SmallerIcons
Me.CreateRAWebIcon.Location = New System.Drawing.Point(313, 36)
@@ -307,7 +309,7 @@ Partial Class RemoteAppCreateClientConnection
Me.CreateRAWebIcon.TabIndex = 3
Me.CreateRAWebIcon.Text = "Create icon files"
Me.CreateRAWebIcon.TextImageRelation = System.Windows.Forms.TextImageRelation.TextBeforeImage
- Me.CreateRAWebIcon.UseVisualStyleBackColor = True
+ Me.CreateRAWebIcon.UseVisualStyleBackColor = False
'
'FTAButton
'
@@ -317,7 +319,7 @@ Partial Class RemoteAppCreateClientConnection
Me.FTAButton.Location = New System.Drawing.Point(301, 22)
Me.FTAButton.Name = "FTAButton"
Me.FTAButton.Size = New System.Drawing.Size(172, 29)
- Me.FTAButton.TabIndex = 1
+ Me.FTAButton.TabIndex = 2
Me.FTAButton.Text = "File type associations..."
Me.FTAButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText
Me.FTAButton.UseVisualStyleBackColor = False
@@ -373,7 +375,7 @@ Partial Class RemoteAppCreateClientConnection
Me.Panel1.Location = New System.Drawing.Point(89, 76)
Me.Panel1.Name = "Panel1"
Me.Panel1.Size = New System.Drawing.Size(200, 26)
- Me.Panel1.TabIndex = 112
+ Me.Panel1.TabIndex = 9
'
'PerMachineRadioButton
'
@@ -403,7 +405,7 @@ Partial Class RemoteAppCreateClientConnection
Me.TopLevelRadioButton.AutoSize = True
Me.TopLevelRadioButton.Location = New System.Drawing.Point(366, 17)
Me.TopLevelRadioButton.Name = "TopLevelRadioButton"
- Me.TopLevelRadioButton.Size = New System.Drawing.Size(71, 19)
+ Me.TopLevelRadioButton.Size = New System.Drawing.Size(72, 19)
Me.TopLevelRadioButton.TabIndex = 4
Me.TopLevelRadioButton.Text = "Top level"
Me.TopLevelRadioButton.UseVisualStyleBackColor = True
@@ -495,10 +497,10 @@ Partial Class RemoteAppCreateClientConnection
Me.ResetButton.Font = New System.Drawing.Font("Segoe UI", 9.0!)
Me.ResetButton.ImageIndex = 3
Me.ResetButton.ImageList = Me.SmallerIcons
- Me.ResetButton.Location = New System.Drawing.Point(126, 546)
+ Me.ResetButton.Location = New System.Drawing.Point(126, 555)
Me.ResetButton.Name = "ResetButton"
Me.ResetButton.Size = New System.Drawing.Size(121, 29)
- Me.ResetButton.TabIndex = 6
+ Me.ResetButton.TabIndex = 7
Me.ResetButton.Text = "Reset to default"
Me.ResetButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText
Me.ResetButton.UseVisualStyleBackColor = False
@@ -510,10 +512,10 @@ Partial Class RemoteAppCreateClientConnection
Me.SaveButton.Font = New System.Drawing.Font("Segoe UI", 9.0!)
Me.SaveButton.ImageIndex = 0
Me.SaveButton.ImageList = Me.SmallerIcons
- Me.SaveButton.Location = New System.Drawing.Point(12, 546)
+ Me.SaveButton.Location = New System.Drawing.Point(12, 555)
Me.SaveButton.Name = "SaveButton"
Me.SaveButton.Size = New System.Drawing.Size(108, 29)
- Me.SaveButton.TabIndex = 5
+ Me.SaveButton.TabIndex = 6
Me.SaveButton.Text = "Save settings"
Me.SaveButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText
Me.SaveButton.UseVisualStyleBackColor = False
@@ -536,7 +538,7 @@ Partial Class RemoteAppCreateClientConnection
Me.FTACountLabel.Location = New System.Drawing.Point(154, 29)
Me.FTACountLabel.Name = "FTACountLabel"
Me.FTACountLabel.Size = New System.Drawing.Size(52, 15)
- Me.FTACountLabel.TabIndex = 2
+ Me.FTACountLabel.TabIndex = 1
Me.FTACountLabel.Text = "Count: 0"
'
'DisabledFTACheckBox
@@ -554,58 +556,52 @@ Partial Class RemoteAppCreateClientConnection
Me.GroupBoxSignRDP.Controls.Add(Me.CheckBoxCreateSignedAndUnsigned)
Me.GroupBoxSignRDP.Controls.Add(Me.CertificateComboBox)
Me.GroupBoxSignRDP.Controls.Add(Me.CertificateLabel)
- Me.GroupBoxSignRDP.Controls.Add(Me.CheckBoxSignRDPDisabled)
+ Me.GroupBoxSignRDP.Controls.Add(Me.CheckBoxSignRDPEnabled)
Me.GroupBoxSignRDP.Location = New System.Drawing.Point(12, 477)
Me.GroupBoxSignRDP.Name = "GroupBoxSignRDP"
- Me.GroupBoxSignRDP.Size = New System.Drawing.Size(482, 63)
- Me.GroupBoxSignRDP.TabIndex = 4
+ Me.GroupBoxSignRDP.Size = New System.Drawing.Size(482, 68)
+ Me.GroupBoxSignRDP.TabIndex = 5
Me.GroupBoxSignRDP.TabStop = False
- Me.GroupBoxSignRDP.Text = "Sign RDP"
+ Me.GroupBoxSignRDP.Text = "Digital Signing"
+ '
+ 'CheckBoxCreateSignedAndUnsigned
+ '
+ Me.CheckBoxCreateSignedAndUnsigned.AutoSize = True
+ Me.CheckBoxCreateSignedAndUnsigned.Location = New System.Drawing.Point(10, 41)
+ Me.CheckBoxCreateSignedAndUnsigned.Name = "CheckBoxCreateSignedAndUnsigned"
+ Me.CheckBoxCreateSignedAndUnsigned.Size = New System.Drawing.Size(175, 19)
+ Me.CheckBoxCreateSignedAndUnsigned.TabIndex = 1
+ Me.CheckBoxCreateSignedAndUnsigned.Text = "Create Signed and Unsigned"
+ Me.CheckBoxCreateSignedAndUnsigned.UseVisualStyleBackColor = True
'
'CertificateComboBox
'
Me.CertificateComboBox.BackColor = System.Drawing.Color.WhiteSmoke
Me.CertificateComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
- Me.CertificateComboBox.Enabled = False
Me.CertificateComboBox.FormattingEnabled = True
- Me.CertificateComboBox.Location = New System.Drawing.Point(268, 25)
+ Me.CertificateComboBox.Location = New System.Drawing.Point(282, 25)
Me.CertificateComboBox.Name = "CertificateComboBox"
Me.CertificateComboBox.Size = New System.Drawing.Size(191, 23)
- Me.CertificateComboBox.TabIndex = 24
+ Me.CertificateComboBox.TabIndex = 3
'
'CertificateLabel
'
Me.CertificateLabel.AutoSize = True
- Me.CertificateLabel.Location = New System.Drawing.Point(205, 28)
+ Me.CertificateLabel.Location = New System.Drawing.Point(212, 28)
Me.CertificateLabel.Name = "CertificateLabel"
Me.CertificateLabel.Size = New System.Drawing.Size(64, 15)
- Me.CertificateLabel.TabIndex = 23
+ Me.CertificateLabel.TabIndex = 2
Me.CertificateLabel.Text = "Certificate:"
'
- 'CheckBoxSignRDPDisabled
+ 'CheckBoxSignRDPEnabled
'
- Me.CheckBoxSignRDPDisabled.AutoSize = True
- Me.CheckBoxSignRDPDisabled.Checked = True
- Me.CheckBoxSignRDPDisabled.CheckState = System.Windows.Forms.CheckState.Checked
- Me.CheckBoxSignRDPDisabled.Location = New System.Drawing.Point(10, 22)
- Me.CheckBoxSignRDPDisabled.Name = "CheckBoxSignRDPDisabled"
- Me.CheckBoxSignRDPDisabled.Size = New System.Drawing.Size(71, 19)
- Me.CheckBoxSignRDPDisabled.TabIndex = 0
- Me.CheckBoxSignRDPDisabled.Text = "Disabled"
- Me.CheckBoxSignRDPDisabled.UseVisualStyleBackColor = True
- '
- 'CheckBoxCreateSignedAndUnsigned
- '
- Me.CheckBoxCreateSignedAndUnsigned.AutoSize = True
- Me.CheckBoxCreateSignedAndUnsigned.Checked = True
- Me.CheckBoxCreateSignedAndUnsigned.CheckState = System.Windows.Forms.CheckState.Checked
- Me.CheckBoxCreateSignedAndUnsigned.Enabled = False
- Me.CheckBoxCreateSignedAndUnsigned.Location = New System.Drawing.Point(10, 38)
- Me.CheckBoxCreateSignedAndUnsigned.Name = "CheckBoxCreateSignedAndUnsigned"
- Me.CheckBoxCreateSignedAndUnsigned.Size = New System.Drawing.Size(175, 19)
- Me.CheckBoxCreateSignedAndUnsigned.TabIndex = 25
- Me.CheckBoxCreateSignedAndUnsigned.Text = "Create Signed and Unsigned"
- Me.CheckBoxCreateSignedAndUnsigned.UseVisualStyleBackColor = True
+ Me.CheckBoxSignRDPEnabled.AutoSize = True
+ Me.CheckBoxSignRDPEnabled.Location = New System.Drawing.Point(10, 22)
+ Me.CheckBoxSignRDPEnabled.Name = "CheckBoxSignRDPEnabled"
+ Me.CheckBoxSignRDPEnabled.Size = New System.Drawing.Size(93, 19)
+ Me.CheckBoxSignRDPEnabled.TabIndex = 0
+ Me.CheckBoxSignRDPEnabled.Text = "Sign RDP file"
+ Me.CheckBoxSignRDPEnabled.UseVisualStyleBackColor = True
'
'RemoteAppCreateClientConnection
'
@@ -614,7 +610,7 @@ Partial Class RemoteAppCreateClientConnection
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.BackColor = System.Drawing.Color.White
Me.CancelButton = Me.CancelEditButton
- Me.ClientSize = New System.Drawing.Size(507, 587)
+ Me.ClientSize = New System.Drawing.Size(507, 596)
Me.Controls.Add(Me.GroupBoxSignRDP)
Me.Controls.Add(Me.FileTypesGroupBox)
Me.Controls.Add(Me.MSIGroupBox)
@@ -693,7 +689,7 @@ Partial Class RemoteAppCreateClientConnection
Friend WithEvents DisabledFTACheckBox As System.Windows.Forms.CheckBox
Friend WithEvents FTACountLabel As System.Windows.Forms.Label
Friend WithEvents GroupBoxSignRDP As GroupBox
- Friend WithEvents CheckBoxSignRDPDisabled As CheckBox
+ Friend WithEvents CheckBoxSignRDPEnabled As CheckBox
Friend WithEvents CertificateComboBox As ComboBox
Friend WithEvents CertificateLabel As Label
Friend WithEvents CheckBoxCreateSignedAndUnsigned As CheckBox
diff --git a/remoteapp-tool/RemoteAppCreateClientConnection.resx b/remoteapp-tool/RemoteAppCreateClientConnection.resx
index a2a3999..e7ffc8f 100644
--- a/remoteapp-tool/RemoteAppCreateClientConnection.resx
+++ b/remoteapp-tool/RemoteAppCreateClientConnection.resx
@@ -124,152 +124,152 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
- ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADy
- IQAAAk1TRnQBSQFMAgEBBwEAAeABAQHgAQEBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
+ ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADW
+ IQAAAk1TRnQBSQFMAgEBBwEAAQgBAgEIAQIBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
AwABIAMAAQEBAAEgBgABIF4AAyABLwMjATMDIwEzAyMBMwMjATMDIwEzAyMBMwMjATMDIwEzAxkBIysA
- AQEDQgF0A1gBwQNYAe8DWAHvA1gBwQNCAXQDAAEBUAADKgFBAwYBCBgAAwYBCAMqAUEUAAMIAQsBaAFd
- AVQB8AG2AYQBPAH/AbUBgwE4Af8BtgGCATcB/wG2AYIBNwH/AbYBggE3Af8BtgGCATcB/wG1AYMBOAH/
- AbYBhAE8Af8CWgFYAcAnAAEBA1oBwAOLAf8BuQK6Af8D3AH/A9kB/wO1Af8BhgKHAf8DWgHAAwABAUgA
- AyoBQQE+ATsB8gH/AkABvQH9AwYBCBAAAwYBCAIrAbEB/AEgAR4B6gH/AyoBQRAAAykBPwG2AYQBPCH/
- AbYBhAE8Af8YAAG5Ar8B/wG5Ar8B/wGyArcB/wGLAY0BjgH/AY0BjgGNAf8BxQHgAcsB/wHOAeMB0gH/
- Ae4C7wH/AewB7QHsAf8B6gLpAf8D5wH/A4cB/wNCAXREAAMqAUEBRwFFAfUB/wFSAVAB+gH/AUcBRAH2
- Af8BMAEvAbUB/AMGAQgIAAMGAQgCKwGyAfwBMAEuAfEB/wE7ATkB9gH/ASABHgHqAf8DKgFBDAADJwE7
- AbUBgwE4Bf8BAAEvAfIB/wEBAVUB8wH/ARQBmgH2Af8BGAGmAfgB/wEHAWQB9AH/AQABKgHyBf8BtQGD
- ATgB/xgAA0cBggPYAf8BzQHUAdUB/wFtAW4BbwH/A8MB/wFbAbkBagH/AQABjgESAf8B3QHrAeAB/wPx
- Af8B1wHlAdoB/wHfAecB4QH/ArcBuAH/A1gBwUQAAx4BKwFKAUcB9gH/AVQBUQH6Af8BYAFfAv8BSAFF
- AfYB/wEwAS8BtQH8AwYBCAMGAQgCKwGzAfwBNgE0AfIB/wFSAVEC/wE5ATcB9AH/AR4BHAHpAf8DHgEr
- DAADJAE2AbYBgwE4Bf8BGgFBAfIB/wEkAWgB8gH/AR0BkwH0Af8BIQGaAfQB/wEUAWYB8QH/AQABLQHw
- Bf8BtgGDATcB/wMjATMDIwEzAxkBIxAAAyQBNgNHAYIDTwH/A+wB/wP7Af8BEQGYAScB/wFGAbABVwH/
- A/UB/wEAAZABFgH/AU4BsQFeAf8B3gHfAd4B/wNYAe9IAAMeASsBSgFIAfYB/wFVAVIB+gH/AWMBYAL/
- AUkBRwH2Af8BMQEwAbUB/AJAAb0B/QE/ATwB9AH/AVcBVgL/AT8BPQH1Af8BJQEjAesB/wMeASsIAAMZ
- BCMBMwMxAU8BtgGDATgD/wH8Af8BDgEuAfAB/wFAAW4B8gH/AUEBkwH0Af8BJgGDAfIB/wEKAUwB8AH/
- AQABIgHwA/8B+wH/AbUBgAE0Af8BtQGDATsB/wG2AYQBPQH/AloBWAHAA0gBhgG+AsQB/wG8AsEB/wG5
- Ab0BvgH/AbcBugG7Af8BtAK4Af8DUAH/A+4B/wFgAb0BbgH/AQcBlAEeAf8B5QHxAeYB/wEAAZABFQH/
- ARUBmgErAf8B6QHvAeoB/wPiAf8DWAHvTAADHgErAUsBSQH2Af8BVgFTAfoB/wFjAWEC/wFiAV8C/wFf
- AV0C/wFdAVsC/wFGAUQB9wH/AS4BLAHuAf8DHgErDAACWgFYAcABtQGFAT4B/wG1AYQBPQH/AbUBggE1
- A/8B+wH/AQABEwHuAf8BLwFRAfAB/wFMAYUB8wH/AWMBlQH0Af8BgwGaAfYB/wGAAY0B+QP/AfkB/wG1
- AWsBLwn/AbYBhAE8Af8BygHSAdMB/wHJAdIB0wH/AckB0AHTAf8ByAHRAdIB/wHHAdAB0QH/AcYB0AHR
- Af8BbQJwAf8DxgH/Ac8B6QHUAf8B5gH0AekB/wH9Av4B/wHLAeYBzwH/AQABjQEQAf8BUgG1AWIB/wHA
- AcEBwAH/A1gBwVAAAx4BKwFMAUoB9wH/AWgBZQL/AUgBRQL/AUYBQwL/AWEBXwL/ATcBNQHwAf8DHgEr
- EAABtQGEAT0F/wH2AfAB6QH/AbIBbgEyA/8B/QH/AgAB7AH/ARwBLwHtAf8BOAFPAfAB/wFLAWIB8gH/
- AVsBagH0Af8BYQFkAfYD/wH8Af8BvAFrAS8B/wEAAa4BgAX/AbYBggE6Af8BygHSAdQB/wGsAq8B/wGG
- AgAB/wGLAgAB/wGHAgAB/wGLAgAB/wGGAhsB/wOQAf8B8gH5AfMJ/wH+Af8B/gH/AcsB5wHRAf8BqwHR
- AbIB/wOPAf8DQgF0UAADBgEIAUgBRwHEAf0BbAFoAv8BTQFKAv8BSgFHAv8BZQFjAv8CQAG+Af0DBgEI
- EAABtAGCAToF/wHnAZsBJAH/AbEBbgE1Bf8CAAHtAf8CAAHuAf8BFgEdAfAB/wEsATQB8gH/AT8BQQH1
- Af8BTQFMAfcF/wHAAWwBMgH/AQABrQGBBf8BtgGCAToB/wHMAdMB1QH/AaoBrAGtAf8BmwEaARAB/wGc
- AR4BEgH/AZsBBgEAAf8BqAEGAQAB/wGyAQgBAAH/AZwBcAFrAf8DkAH/A8YB/wPuAf8D7gH/A8YB/wOQ
- Af8DWgHAAwABAUwAAwYBCAFVAU8BuQH8AV8BXAH7Af8BgAFtAv8BbQFqAv8BawFoAv8BaAFmAv8BTQFL
- AfcB/wEzATEBtQH8AwYBCAwAAbMBggE7Bf8B5gGeAS0B/wGvAYABOwP/AfYD/wHtA/8B6wP/AeoD/wHq
- A/8B6gP/AewD/wHzAf8BwgFsATMB/wEAAasBbQX/AbYBggE6Af8BzAHTAdUB/wGoAqoB/wGlATIBKAH/
- AZ8BHQESAf8BowEFAQAB/wGyAQgBAAH/AcABDgEAAf8B3wFoAVYB/wG3AYoBggH/AYgBZAFgAf8BVgFQ
- AU8B/wFVAU8BTQH/AW8CcgH/AY8CkAH/AwABAUwAAwYBCAFdAVoBuwH8AWYBYwH9Af8BhgGCAv8BZQFi
- AfwB/wFTAVEB+AH/AU8BTAH3Af8BXAFZAfoB/wFqAWgC/wFPAUwB9wH/ATMBMgG1AfwDBgEICAABswGC
- ATsF/wHyAaEBIAH/Ab0BiwFEAf8BrwGAAT0B/wGvAW4BNwH/AbABbQE1Af8BrwFsATMB/wGxAWwBMQH/
- AbcBbgE0Af8BvQFuATQB/wHBAW0BNAH/AaYBnwFhAf8BZAHTAb0F/wG1AYIBOgH/Ac4B1AHVAf8BogKk
- Af8BrAE5ATAB/wGhARABAwH/Aa0BBAEAAf8BvgELAQAB/wHPARsBAQH/AfABmgGLAf8B9wG0AagB/wH5
- Aa4BngH/Af4BtQGnAf8B+AGlAZIB/wHCAc4BzwH/AaoCrAH/TAADBgEIAVQBUgHMAf0BbAFpAf4B/wGK
- AYcC/wFrAWgB/QH/AVsBWAH7Af8DHgErAx4BKwFQAU0B+AH/AV0BWwH6Af8BbAFpAv8BUAFOAfcB/wE0
- ATIBtgH8AwQBBQQAAbMBggE7Bf8B8QGXAQsB/wH4AbIBQQH/Af0BwQFhAf8B/gHKAYIB/wH+Ac4BigH/
- Af0BywGFBf8BvAFuATcB/wEcAcABoAH/ATwByAGqAf8BUgHJAa8B/wFaAcoBsAX/AbUBgQE5Af8BzQHU
- AdYB/wGhAqMB/wGoASABFgH/AasBCAEAAf8BwgEOAQAB/wHVAQ0BAAH/AeoBNQEYAf8B/gHBAbQC/wHK
- Ab0C/wHJAbgC/wHPAcAB/wH8Ab8BqwH/AcMBzgHPAf8BrAGuAa8B/0wAAxYBHwFpAWYC/wGBAW0C/wGB
- AW0B/gH/AWMBYAH9Af8DHgErCAADHgErAVEBTgH4Af8BXgFcAfsB/wFtAWsC/wFRAU4B+AH/A0ABbwMB
- AQIBswGDATsF/wHsAYoBAAH/AfEBoQElAf8B9QGxAUQB/wH2AbkBVQH/AfcBvwFhAf8B9gG/AWEF/wG6
- AWsBMwH/AQMBrwGLAf8BIwG2AZMB/wE4AboBnQH/AUgBwQGlBf8BtQGCAToB/wHOAdQB1gH/AaACoQH/
- AagBAwEAAf8BuQEHAQAB/wHQARYBAAH/AeIBDAEAAf8B+AFfAUoC/wHmAeAC/wHgAdgC/wHlAdwC/wHr
- AeIB/wH9AdUByAH/AcQBzgHQAf8BrwKyAf9QAAMWAR8BaQFmAv8BaAFlAf4B/wMeASsQAAMeASsBUwFQ
- AfgB/wFZAVcB+QH/AVMBUgFTAagDHQEpBAABtAGDATwF/wHpAWwBAAH/Ae0BjwEAAf8B7wGeARsB/wHx
- AagBMQH/AfMBrwFAAf8B9AG1AU0F/wG0AWsBMwP/AfsD/wH2A/8B8wP/AfID/wH4Af8BtQGEAT4B/wHO
- AdQB1gH/AaACoQH/Aa0CAAH/AcQBAQEAAf8B2gEEAQAB/wHyAQgBAAL/AYgBXgL/AdQBvgL/AcYBqgL/
- AcQBpgL/AcABnwH/AfsBrwGNAf8BxQHOAdAB/wGxAbQBtQH/VAADFgEfAx4BKxgAAx4BKwNAAW8DKQE+
- CAABtQGFAT8D/wH8A/8B/Qf/Af4D/wH8A/8B+gP/AfcD/wH5Af8BtAGCAToB/wG2AYQBPQH/AbYBgwE7
- Af8BtQGCATsB/wG1AYMBOwH/AbUBhAE+Af8DVQGwAc4B1AHWAf8BoAKhAf8BoAKhAf8BoAKhAf8BoQGi
- AaMB/wGjAqUB/wGlAqcB/wGsAq8B/wGvArEB/wGxAbQBtQH/AbQCuAH/AbYBuwG8Af8BxQHPAdEB/wGz
- AbcBuAH/eAADBwEKDAABZQFiAVgB7wG1AYUBPwH/AbMBgwE9Af8BswGDAT0B/wGzAYMBPQH/AbMBgwE8
- Af8BswGDATwB/wGzAYMBPAH/AbUBhAE+Af8CZAFcAecYAANDAXgBzgHUAdYB/wHOAdQB1gH/Ac4B1AHW
- Af8BzQHUAdYB/wHNAdMB1QH/Ac0B0wHVAf8BygHSAdQB/wHKAdIB0wH/AckB0QHTAf8ByAHRAdIB/wHH
- AdAB0QH/AcYBzwHRAf8DTgGVTAADHwEtAzABSwMvAUoDLwFKAy8BSQMyAVEDNgFZAzYBWQM2AVkDNgFZ
- AzYBWQM1AVcDMQFOAyYBOQsAAf8DAAH/AwAB/wsAAf8DAAH/AwAB/wMAAf8DAAH/GAADFAEcAyABLgMg
- AS4DIAEuASABIwEvAf8DWQHHA0IBdAM3AVsDNQFYAzMBUgMvAUoDKwFCAyABLgMUARxIAANSAaQE/wH1
- AfQB8wH/AfYB9QH0Bf8BQgFBAUMB/wEZARgBGwX/AfsC+gH/AvsB+gH/AfsC+gX/ApYBlwH/A1oB2AgA
- A4YB/wPAAf8DAAH/AwAB/wOGCf8DwAH/AQAD/wEAAf8BAAH/AwAB/xgAAeIBuAGZAf8B4gG5AZgB/wHi
- AbgBmQH/AU0BXAGdAf8BRQFVAZIB/wFBAVABkgH/ATABUwGeAf8BygGsAZgB/wHiAbgBmAH/AeIBuQGZ
- Af8B4gG5AZgB/wHiAbgBmAH/GAADDAEQA0QBewJdAVoBygFeAVkBQgH1AWIBXgE4AfYCXAFZAcwDRQF9
- Aw0BERQAA1ABngH7AfoB+QH/Ae4C7QH/AfAB7wHuAf8B/gH9AfwB/wFBAUABQgH/ARgBFwEZAf8C8AHv
- Af8C6AHnAf8C6AHnAf8C6AHnAf8B9QH0AfMB/wGPAY4BjwH/A1oB5AgAA4YB/wPAAf8DAAH/A4YB/wPA
- Af8DwAX/A8AB/wEAAf8BAAH/A8AB/wPAAf8DAAH/FAAB4wG7AZsB/wH4AeABvgH/AfgB4AG+Af8BmwGf
- Aa4B/wFZAWsBqQH/AUcBYwGgAf8BAAFaAbAB/wEAAWMBvwH/AfgB4QG+Af8B+AHgAb8B/wH4AeEBvgH/
- AeMBugGaAf8UAAM0AVQCXQFOAfABgAFUAQAB/wGAAVQBAAH/AYABVAEAAf8BgAFUAQAB/wGAAVQBAAH/
- AWABXwFMAfMCWAFWAcEDIQEwEAADUAGeAfsC+gH/Ae8B7gHtAf8C8AHvAf8B/gH9AfwB/wGGAYQBhQH/
- ASUBJAElAf8C9QH0Af8C7QHsAf8C7QHsAf8B7gHtAewB/wL6AfkB/wGUAZMBlAH/A1sB4QgAA4YB/wPA
- Af8DAAH/A4YB/wPAAf8DwAH/A8AB/wMAAf8BAAH/AQAD/wEAA/8BAAH/AwAB/xQAAeQBvQGcAf8B+AHh
- Ab8B/wHzAdYBsgH/AcIBuAGuAf8BRgFmAawB/wEYAcAB+AH/AQABlwHXAf8BAAFlAdQB/wEAAWUBwQH/
- AfMB1gGyAf8B+AHhAb8B/wHkAb0BnQH/EAADNAFUAYQBVwEAAf8BhwFaAQEB/wGHAVoBAQH/AYcBWgEB
- Af8BhwFaAQEB/wF/AWsBEgH+Al0BTgHwAloBVwHFA0sBjgI1ATQBVQMKAQ0MAANQAZ4B/QH8AfsB/wLw
- Ae8B/wHyAvEB/wH+Av0B/wGSAZABkQH/ARcBFQEWAf8BrAGrAaoB/wGsAasBqgH/AawBqwGqAf8BqgKp
- Af8BrQGsAasB/wEvAS0BLgH/A1sB4QgAA4YB/wPAAf8DAAH/A4YB/wPAAf8DwAP/AQAB/wMAAf8DAAH/
- A8AB/wPAAf8DAAH/FAAB5gHAAZ8B/wH4AeIBwQH/AdkBvgGdAf8B2QG+AZ4B/wGWAacBqwH/AQABYQHE
- Af8BEwHTAv8BAAGzAe4B/wEAAWUB1AH/AQABZwHCAf8B+AHhAcAB/wHmAcABnwH/DAADDQESAl0BTgHw
- AZABYQEEAf8BkAFhAQQB/wGQAWEBBAH/AZkBaAEEAf8BlgFmAQIB/wFjAWABWQHrAlkBVgG+A0gBhgIx
- ATABTQMUARwDAQECDAADUAGeAf4C/QH/AfIB8QHwAf8C8wHyAv8C/gH/AZ0CnAH/AQ4CDAH/ARsBGQEY
- Af8BHQEaARkB/wEdAhoB/wEaAhgB/wESAhAB/wEEAQIBBAH/A1sB4QgAA4YF/wMAAf8DhgP/AQAB/wPA
- A/8BAAH/AQAH/wPAAf8DwAH/AwAB/wMAAf8DAAH/DAAB5wHDAaIB/wH4AeMBwgH/AfYB3QG6Af8B+AHj
- AcMB/wH4AeMBwgH/AbYBxQHDAf8BAAFhAcQB/wETAdMC/wEUAcYB9gH/AQABZQHUAf8BAAFrAcoB/wHo
- AcMBogH/AwABAQgAA0UBfQGZAWgBBQH/AZkBaQEGAf8BmgFpAQYB/wFrAWQBUwHxAzsBYwMNAREDCgEN
- AyQBNQMrAUIDEAEWAwABARAAA1ABngL/Af4B/wHzAvIB/wL0AfMD/wH+Af8BowKiAf8BGQEWARUB/wFB
- AT8BPQH/Ac8BzgHNAf8BxwHFAcQB/wGpAacBpgH/AZ0BmwGaAf8BiwGJAYoB/wNbAeEIAAOGBf8DAAH/
- A8AB/wOGA/8BAAP/AQAB/wEAC/8DAAH/A8AB/wPAAf8DwAH/AwAB/wgAAeoBxgGkAf8B+AHkAcQB/wHc
- AcIBpAH/AdwBxAGmAf8B3AHEAaYB/wHcAcUBpgH/AaEBrgGvAf8BAAFhAcQB/wGYAewC/wEUAcYB9gH/
- AQABZQHUAf8CbQFkAf8DKAE8CAACXAFaAc0BowGCAQkB/wGjAYIBCQH/AaUBgwEIAf8DOwFjEAADBAEF
- GAADUAGeBP8B9ALzAf8D9QX/AagBpgGlAf8BEQIOAf8BMwIyAf8B5gLlAf8B8QLwAf8BpwGmAaUB/wE7
- ATgBNwH/AZoCmAH/A1wB5wgAA4YF/wMAAf8DwAH/A8AB/wMAAf8DAAH/AwAB/wMAAf8DAAH/A4YB/wOG
- Af8DhgH/A8AB/wMAAf8IAAHsAcoBqAH/AfgB5QHGAf8B+QHkAcYB/wH5AeUBxQH/AfkB5AHGAf8B+AHk
- AcYB/wH3AeMBxQH/AbwByAHGAf8BAAFhAcQB/wGWAeoB/gH/ArcBrAH/AV0BXgFQAf8CbQFkAf8IAAFr
- AV4BQgH1Aa4BiwELAf8BrgGLAQsB/wGfAW0BBgH/Aw0BESwAA1ABngT/AvUB9AH/AvcB9gX/AawCqgH/
- ARYBFAETAf8BNAEyATMB/wHPAc0BzAH/AdQB0gHRAf8BtAKyAf8BqgGnAaYB/wNqAfkDVwG9CAADhgH/
- A4YB/wMAAf8DwAH/A8AB/wOGAf8DhgH/A4YB/wOGAf8DhgH/A4YB/wOGAf8DhgH/A8AB/wMAAf8IAAHu
- Ac0BqwH/AfgB5gHHAf8B3wHIAaoB/wHeAcgBqgH/Ad8ByAGrAf8B3wHHAasB/wHbAcMBpgH/AdoBwgGk
- Af8BqwGwAasB/wGOAY8BhAH/AeAB4gHTAf8CiQFuAf8BBgFUAd4B/wFVAVwBZAHqBAABbQFgAUIB9QG5
- AZQBDgH/AbkBlAEOAf8BpwGEAQgB/wMNAREIAANMAZIBqQGGAQgB/wGjAYIBBwH/AaMBggEHAf8BowGC
- AQcB/wGjAYIBBwH/AWsBXwFMAfMIAANQAZ4E/wH3AvYB/wP4Af8D+gH/A/AB/wHqAukB/wPwAf8D9wH/
- A/YB/wL6AfkB/wNYAbkDFwEgAwcBCQQAA4YJ/wOGAf8DwAH/A8AB/wOGAf8DwAH/A8AB/wPAAf8DwAH/
- A8AB/wPAAf8DwAH/A4YB/wMAAf8IAAHwAdABrQH/AfkB5gHJAf8B+AHmAckB/wH5AeYByQH/AfkB5gHJ
- Af8B9wHlAckB/wHwAdkBvQH/AekBzwGzAf8B6AHOAbIB/wHMAbkBrwH/AokBbgH/AUMBlgHqAf8BMQGF
- AeAB/wFaAl0B0wQAAlwBWgHNAcMBnAEQAf8BwwGcARAB/wG/AZgBDwH/AzsBYwgAAwwBEAJbAVgCywGi
- ARIB/wHDAZwBEAH/AcMBnAEQAf8BwwGcARAB/wGpAYYBCAH/CAADUAGeBP8C+AH3Af8D+QH/A/oB/wL+
- Af0V/wNWAasQAAOGAf8DhgH/A4YB/wOGAf8DwAH/A4YB/wHMAjwC/wHMATwB/wHMAZkBCQH/AcwBmQEA
- Av8BPAEJAf8BzAE8AQkF/wOGAf8DAAH/CAAB8QHTAbEB/wH5AecBywH/AeIBzAGwAf8B4gHLAa8B/wHh
- AcwBrwH/AeEBygGvAf8B1wG+AaEB/wHVAboBnAH/AdQBuQGdAf8B1AG5AZ0B/wG2Aa8BtAH/AWMBkgHE
- Af8DSAGGCAACRgFFAX4B0gGoARMB/wHNAaQBEwH/Ac0BpAETAf8BbwFnAVMB8QM7AWMDDQERAw0BEQNB
- AXIBvwGYAQ4B/wHNAaQBEwH/Ac0BpAETAf8BzQGkARMB/wGwAYwBCgH/CAADUAGeBP8C+QH4Af8D+gH/
- A/wB/wP9Af8D/gX/AfwC/QH/AfQC9QH/A/oB/wNWAbMYAAOGCf8DhgH/AcwCPAP/ATwC/wHMATwB/wHM
- AZkBCQH/AcwBmQEAAv8BPAEJBf8DhgH/AwAB/wgAAfMB1wG0Af8B+QHnAcwB/wH4AecBzAH/AfkB6AHM
- Af8B+QHoAcwB/wH3AeUBygH/AecBzwG1Af8B8gHeAcYB/wHzAeAByAH/AfcB6AHTAf8DWgHFAe8B0AGu
- Af8DAQECAwABAQQAAw8BFAFoAWMBTgHwAdgBrQEVAf8B1wGsARUB/wHXAawBFQH/AdEBpwETAf8BvQGX
- AQ0B/wG9AZcBDQH/AdEBpwETAf8B1wGsARUB/wHXAawBFQH/AdcBrAEVAf8B1wGsARUB/wG2AZEBCwH/
- CAADUAGeBP8D+gH/A/wB/wP9Af8D/gX/Af4B/wH+Af8D6gH/AtcB2AH/Ad0C3gH/AzsBZBwAA4YB/wOG
- Af8DhgH/AcwCPAP/ATwD/wE8Av8BzAE8Af8BzAGZAQkB/wHMAZkBAAX/A4YB/wMAAf8IAAH0AdkBtQH/
- AfkB6AHNAf8B5AHPAbQB/wHkAc8BtAH/AeQBzwG0Af8B4wHOAbMB/wHdAcYBqQH/AfkB6AHOAf8B+QHo
- Ac4B/wNcAcwB8QHTAbEB/wMmATgQAAI1ATQBVQHbAbEBFQH/Ad8BswEXAf8B3gGzARcB/wHeAbMBFwH/
- Ad4BswEXAf8B3gGzARcB/wHeAbMBFwH/Ad4BswEXAf8B3wGzARcB/wHcAbIBFQH/AeYBugEZAf8BuwGV
- AQ0B/wgAA1ABngT/A/wB/wP9Cf8D/QH/AvoB+wH/AesC7AH/AvoB+wH/A0IBcygAA4YB/wHMAjwC/wHM
- ATwD/wE8A/8BPAL/AcwBPAH/AcwBmQEJBf8DhgH/AwAB/wgAAfYB2wG4Af8B+QHpAc8B/wH5AekBzgH/
- AfkB6AHOAf8B+AHoAc4B/wH2AeUBzAH/Ae4B2gG/Af8B+QHoAc4B/wNgAd4B9AHZAbUB/wMmATgYAAI1
- ATQBVQFpAWYBTgHwAe0BwgEbAf8B5gG5ARkB/wHmAbgBGQH/AeYBuAEZAf8B5gG5ARkB/wHtAcIBGwH/
- AXIBbQFTAfECOgE5AWACWwFYAcsBxwGgARAB/wgAA1QBphz/AesC7AH/A0IBcywAA4YB/wHMAjwB/wHM
- ATwBCQH/AcwBPAEJAf8BzAE8AQkB/wHMATwBCQH/AcwBPAEJBf8DhgH/AwAB/wgAAfcB3QG6Af8B+QHp
- Ac8B/wH5AekBzwH/AfkB6QHPAf8B+QHpAc8B/wH3AeYBzQH/Ae0B2AG9Af8B+QHoAc4B/wH3Ad0BuAH/
- AyYBOCAAAwwBEANFAX0CXAFZAcwBjQF+AT4B+AGNAYYBPwH5Al4BXAHOAkYBRQF+Aw0BEgQAAwwBEANM
- AZIIAAMmBDgBXAM4AVwDOAFcAzgBXAM4AVwDOAFcAzgBXAMpAT8wAAOGAf8D1wH/A9cB/wPXAf8D1wH/
- A9cB/wPXAf8D1wH/A4YB/wMAAf8IAAH4Ad8BuwH/AfgB3wG7Af8B+AHfAbsB/wH4Ad8BuwH/AfgB3wG7
- Af8B+AHfAbsB/wH4Ad8BuwH/AfgB3wG7Af8DJgE4VAABQgFNAT4HAAE+AwABKAMAAUADAAEgAwABAQEA
- AQEGAAEBFgAD/wEAAv8B4AEHAf4BAQIAAucBwAEHAfwDAALDAcABBwHgAwACgQHAAQcB4AMAAYABAQHA
- AQAB8AMAAcABAwYAAeABBwYAAfABDwYAAfABDwYAAeABBwMAAQECAAHAAQMDAAEDAgABgAEBAwABAwIA
- AYEBgAMAAQMCAAHDAcEDAAEDAgAB5wHjAwABAwIAAf8B9wEAAT8BAAEDAgABgAEBAYwBHwGAAQEC/wGA
- AQEBgAEPAcABAwHwAQ8BgAEBAYABBwHAAQMB4AEHAYABAQGAAQcBwAEDAcABAwGAAQEBgAEHAcABAwGA
- AQMBgAEBAYABAQHAAQEBgAEHAYABAQGAAQABwAEBAYMB3wGAAQEBgAEAAcABAQGDAf8BgAEBAYABAAHA
- AQABgwEBAYABAQIAAcABAAGDAQEBgAEHAYABAAHAAQEBgAEBAYABBwHgAQABwAEAAYABAQGAAQcB8AEA
- AcABAwHAAQEBgAEPAfwBAAHAAQcB4AEBAYABHwH8AQABwAEPAfABCQGAAT8B/AEAAcABHwL/Cw==
+ AQEDQgF0A1gBwQNYAe8DWAHvA1gBwQNCAXQDAAEBUAADKgFBAwYBCBgAAwYBCAMqAUEUAAMIAQsBYQFd
+ AVQB8AG2AYQBNwH/AbUBgwEzAf8BtgGCATIB/wG2AYIBMgH/AbYBggEyAf8BtgGCATIB/wG1AYMBMwH/
+ AbYBhAE3Af8CWgFYAcAnAAEBA1oBwAOLAf8BuQK6Af8D3AH/A9kB/wO1Af8BhgKHAf8DWgHAAwABAUgA
+ AyoBQQE5ATYB8gH/AkABuAH9AwYBCBAAAwYBCAIrAaYB/AEbARkB6gH/AyoBQRAAAykBPwG2AYQBNyH/
+ AbYBhAE3Af8YAAG5Ar8B/wG5Ar8B/wGyArcB/wGLAY0BjgH/AY0BjgGNAf8BxQHgAcsB/wHOAeMB0gH/
+ Ae4C7wH/AewB7QHsAf8B6gLpAf8D5wH/A4cB/wNCAXREAAMqAUEBQgFAAfUB/wFNAUsB+gH/AUIBPwH2
+ Af8CKwGrAfwDBgEICAADBgEIAisBpwH8ASsBKQHxAf8BNgE0AfYB/wEbARkB6gH/AyoBQQwAAycBOwG1
+ AYMBMwX/AQABKgHyAf8BAAFQAfMB/wEPAZoB9gH/ARMBpgH4Af8BAgFfAfQB/wEAASUB8gX/AbUBgwEz
+ Af8YAANHAYID2AH/Ac0B1AHVAf8BaAFpAWoB/wPDAf8BVgG5AWUB/wEAAY4BDQH/Ad0B6wHgAf8D8QH/
+ AdcB5QHaAf8B3wHnAeEB/wK3AbgB/wNYAcFEAAMeASsBRQFCAfYB/wFPAUwB+gH/AVsBWgL/AUMBQAH2
+ Af8CKwGrAfwDBgEIAwYBCAIrAakB/AExAS8B8gH/AU0BTAL/ATQBMgH0Af8BGQEXAekB/wMeASsMAAMk
+ ATYBtgGDATMF/wEVATwB8gH/AR8BYwHyAf8BGAGTAfQB/wEcAZoB9AH/AQ8BYQHxAf8BAAEoAfAF/wG2
+ AYMBMgH/AyMBMwMjATMDGQEjEAADJAE2A0cBggNKAf8D7AH/A/sB/wEMAZgBIgH/AUEBsAFSAf8D9QH/
+ AQABkAERAf8BSQGxAVkB/wHeAd8B3gH/A1gB70gAAx4BKwFFAUMB9gH/AVABTQH6Af8BXgFbAv8BRAFC
+ AfYB/wEsASsBqwH8AkABuAH9AToBNwH0Af8BUgFRAv8BOgE4AfUB/wEgAR4B6wH/Ax4BKwgAAxkEIwEz
+ AzEBTwG2AYMBMwP/AfwB/wEJASkB8AH/ATsBaQHyAf8BPAGTAfQB/wEhAYMB8gH/AQUBRwHwAf8BAAEd
+ AfAD/wH7Af8BtQGAAS8B/wG1AYMBNgH/AbYBhAE4Af8CWgFYAcADSAGGAb4CxAH/AbwCwQH/AbkBvQG+
+ Af8BtwG6AbsB/wG0ArgB/wNLAf8D7gH/AVsBvQFpAf8BAgGUARkB/wHlAfEB5gH/AQABkAEQAf8BEAGa
+ ASYB/wHpAe8B6gH/A+IB/wNYAe9MAAMeASsBRgFEAfYB/wFRAU4B+gH/AV4BXAL/AV0BWgL/AVoBWAL/
+ AVgBVgL/AUEBPwH3Af8BKQEnAe4B/wMeASsMAAJaAVgBwAG1AYUBOQH/AbUBhAE4Af8BtQGCATAD/wH7
+ Af8BAAEOAe4B/wEqAUwB8AH/AUcBhQHzAf8BXgGVAfQB/wGDAZoB9gH/AYABjQH5A/8B+QH/AbUBZgEq
+ Cf8BtgGEATcB/wHKAdIB0wH/AckB0gHTAf8ByQHQAdMB/wHIAdEB0gH/AccB0AHRAf8BxgHQAdEB/wFo
+ AmsB/wPGAf8BzwHpAdQB/wHmAfQB6QH/Af0C/gH/AcsB5gHPAf8BAAGNAQsB/wFNAbUBXQH/AcABwQHA
+ Af8DWAHBUAADHgErAUcBRQH3Af8BYwFgAv8BQwFAAv8BQQE+Av8BXAFaAv8BMgEwAfAB/wMeASsQAAG1
+ AYQBOAX/AfYB8AHpAf8BsgFpAS0D/wH9Af8CAAHsAf8BFwEqAe0B/wEzAUoB8AH/AUYBXQHyAf8BVgFl
+ AfQB/wFcAV8B9gP/AfwB/wG8AWYBKgH/AQABrgGABf8BtgGCATUB/wHKAdIB1AH/AawCrwH/AYYCAAH/
+ AYsCAAH/AYcCAAH/AYsCAAH/AYYCFgH/A5AB/wHyAfkB8wn/Af4B/wH+Af8BywHnAdEB/wGrAdEBsgH/
+ A48B/wNCAXRQAAMGAQgBQwFCAbsB/QFnAWMC/wFIAUUC/wFFAUIC/wFgAV4C/wJAAbkB/QMGAQgQAAG0
+ AYIBNQX/AecBmwEfAf8BsQFpATAF/wIAAe0B/wIAAe4B/wERARgB8AH/AScBLwHyAf8BOgE8AfUB/wFI
+ AUcB9wX/AcABZwEtAf8BAAGtAYEF/wG2AYIBNQH/AcwB0wHVAf8BqgGsAa0B/wGbARUBCwH/AZwBGQEN
+ Af8BmwEBAQAB/wGoAQEBAAH/AbIBAwEAAf8BnAFrAWYB/wOQAf8DxgH/A+4B/wPuAf8DxgH/A5AB/wNa
+ AcADAAEBTAADBgEIAUsBRQGvAfwBWgFXAfsB/wGAAWgC/wFoAWUC/wFmAWMC/wFjAWEC/wFIAUYB9wH/
+ AS4BLAGrAfwDBgEIDAABswGCATYF/wHmAZ4BKAH/Aa8BgAE2A/8B9gP/Ae0D/wHrA/8B6gP/AeoD/wHq
+ A/8B7AP/AfMB/wHCAWcBLgH/AQABqwFoBf8BtgGCATUB/wHMAdMB1QH/AagCqgH/AaUBLQEjAf8BnwEY
+ AQ0B/wGjAgAB/wGyAQMBAAH/AcABCQEAAf8B3wFjAVEB/wG3AYoBggH/AYgBXwFbAf8BUQFLAUoB/wFQ
+ AUoBSAH/AWoCbQH/AY8CkAH/AwABAUwAAwYBCAFYAVUBsQH8AWEBXgH9Af8BhgGCAv8BYAFdAfwB/wFO
+ AUwB+AH/AUoBRwH3Af8BVwFUAfoB/wFlAWMC/wFKAUcB9wH/AS4BLQGrAfwDBgEICAABswGCATYF/wHy
+ AaEBGwH/Ab0BiwE/Af8BrwGAATgB/wGvAWkBMgH/AbABaAEwAf8BrwFnAS4B/wGxAWcBLAH/AbcBaQEv
+ Af8BvQFpAS8B/wHBAWgBLwH/AaYBnwFcAf8BXwHTAb0F/wG1AYIBNQH/Ac4B1AHVAf8BogKkAf8BrAE0
+ ASsB/wGhAQsBAAH/Aa0CAAH/Ab4BBgEAAf8BzwEWAQAB/wHwAZoBiwH/AfcBtAGoAf8B+QGuAZ4B/wH+
+ AbUBpwH/AfgBpQGSAf8BwgHOAc8B/wGqAqwB/0wAAwYBCAFPAU0BvgH9AWcBZAH+Af8BigGHAv8BZgFj
+ Af0B/wFWAVMB+wH/Ax4BKwMeASsBSwFIAfgB/wFYAVYB+gH/AWcBZAL/AUsBSQH3Af8BLwEtAawB/AME
+ AQUEAAGzAYIBNgX/AfEBlwEGAf8B+AGyATwB/wH9AcEBXAH/Af4BygGCAf8B/gHOAYoB/wH9AcsBhQX/
+ AbwBaQEyAf8BFwHAAaAB/wE3AcgBqgH/AU0ByQGvAf8BVQHKAbAF/wG1AYEBNAH/Ac0B1AHWAf8BoQKj
+ Af8BqAEbAREB/wGrAQMBAAH/AcIBCQEAAf8B1QEIAQAB/wHqATABEwH/Af4BwQG0Av8BygG9Av8ByQG4
+ Av8BzwHAAf8B/AG/AasB/wHDAc4BzwH/AawBrgGvAf9MAAMWAR8BZAFhAv8BgQFoAv8BgQFoAf4B/wFe
+ AVsB/QH/Ax4BKwgAAx4BKwFMAUkB+AH/AVkBVwH7Af8BaAFmAv8BTAFJAfgB/wNAAW8DAQECAbMBgwE2
+ Bf8B7AGKAQAB/wHxAaEBIAH/AfUBsQE/Af8B9gG5AVAB/wH3Ab8BXAH/AfYBvwFcBf8BugFmAS4B/wEA
+ Aa8BiwH/AR4BtgGTAf8BMwG6AZ0B/wFDAcEBpQX/AbUBggE1Af8BzgHUAdYB/wGgAqEB/wGoAgAB/wG5
+ AQIBAAH/AdABEQEAAf8B4gEHAQAB/wH4AVoBRQL/AeYB4AL/AeAB2AL/AeUB3AL/AesB4gH/Af0B1QHI
+ Af8BxAHOAdAB/wGvArIB/1AAAxYBHwFkAWEC/wFjAWAB/gH/Ax4BKxAAAx4BKwFOAUsB+AH/AVQBUgH5
+ Af8BUwFSAVMBqAMdASkEAAG0AYMBNwX/AekBZwEAAf8B7QGPAQAB/wHvAZ4BFgH/AfEBqAEsAf8B8wGv
+ ATsB/wH0AbUBSAX/AbQBZgEuA/8B+wP/AfYD/wHzA/8B8gP/AfgB/wG1AYQBOQH/Ac4B1AHWAf8BoAKh
+ Af8BrQIAAf8BxAIAAf8B2gIAAf8B8gEDAQAC/wGIAVkC/wHUAb4C/wHGAaoC/wHEAaYC/wHAAZ8B/wH7
+ Aa8BjQH/AcUBzgHQAf8BsQG0AbUB/1QAAxYBHwMeASsYAAMeASsDQAFvAykBPggAAbUBhQE6A/8B/AP/
+ Af0H/wH+A/8B/AP/AfoD/wH3A/8B+QH/AbQBggE1Af8BtgGEATgB/wG2AYMBNgH/AbUBggE2Af8BtQGD
+ ATYB/wG1AYQBOQH/A1UBsAHOAdQB1gH/AaACoQH/AaACoQH/AaACoQH/AaEBogGjAf8BowKlAf8BpQKn
+ Af8BrAKvAf8BrwKxAf8BsQG0AbUB/wG0ArgB/wG2AbsBvAH/AcUBzwHRAf8BswG3AbgB/3gAAwcBCgwA
+ AmIBWAHvAbUBhQE6Af8BswGDATgB/wGzAYMBOAH/AbMBgwE4Af8BswGDATcB/wGzAYMBNwH/AbMBgwE3
+ Af8BtQGEATkB/wJkAVwB5xgAA0MBeAHOAdQB1gH/Ac4B1AHWAf8BzgHUAdYB/wHNAdQB1gH/Ac0B0wHV
+ Af8BzQHTAdUB/wHKAdIB1AH/AcoB0gHTAf8ByQHRAdMB/wHIAdEB0gH/AccB0AHRAf8BxgHPAdEB/wNO
+ AZVMAAMfAS0DMAFLAy8BSgMvAUoDLwFJAzIBUQM2AVkDNgFZAzYBWQM2AVkDNgFZAzUBVwMxAU4DJgE5
+ CwAB/wMAAf8DAAH/CwAB/wMAAf8DAAH/AwAB/wMAAf8YAAMUARwDIAEuAyABLgMgAS4BGwEeASoB/wNZ
+ AccDQgF0AzcBWwM1AVgDMwFSAy8BSgMrAUIDIAEuAxQBHEgAA1IBpAT/AfUB9AHzAf8B9gH1AfQF/wE9
+ ATwBPgH/ARQBEwEWBf8B+wL6Af8C+wH6Af8B+wL6Bf8ClgGXAf8DWgHYCAADhgH/A8AB/wMAAf8DAAH/
+ A4YJ/wPAAf8BAAP/AQAB/wEAAf8DAAH/GAAB4gG4AZkB/wHiAbkBmAH/AeIBuAGZAf8BSAFXAZ0B/wFA
+ AVABkgH/ATwBSwGSAf8BKwFOAZ4B/wHKAawBmAH/AeIBuAGYAf8B4gG5AZkB/wHiAbkBmAH/AeIBuAGY
+ Af8YAAMMARADRAF7Al0BWgHKAlkBQgH1AWIBXgFBAfYCXAFZAcwDRQF9Aw0BERQAA1ABngH7AfoB+QH/
+ Ae4C7QH/AfAB7wHuAf8B/gH9AfwB/wE8ATsBPQH/ARMBEgEUAf8C8AHvAf8C6AHnAf8C6AHnAf8C6AHn
+ Af8B9QH0AfMB/wGPAY4BjwH/A1oB5AgAA4YB/wPAAf8DAAH/A4YB/wPAAf8DwAX/A8AB/wEAAf8BAAH/
+ A8AB/wPAAf8DAAH/FAAB4wG7AZsB/wH4AeABvgH/AfgB4AG+Af8BmwGfAa4B/wFUAWYBqQH/AUIBXgGg
+ Af8BAAFVAbAB/wEAAV4BvwH/AfgB4QG+Af8B+AHgAb8B/wH4AeEBvgH/AeMBugGaAf8UAAM0AVQCXQFO
+ AfABgAFPAQAB/wGAAU8BAAH/AYABTwEAAf8BgAFPAQAB/wGAAU8BAAH/Al8BTAHzAlgBVgHBAyEBMBAA
+ A1ABngH7AvoB/wHvAe4B7QH/AvAB7wH/Af4B/QH8Af8BhgGEAYUB/wEgAR8BIAH/AvUB9AH/Au0B7AH/
+ Au0B7AH/Ae4B7QHsAf8C+gH5Af8BlAGTAZQB/wNbAeEIAAOGAf8DwAH/AwAB/wOGAf8DwAH/A8AB/wPA
+ Af8DAAH/AQAB/wEAA/8BAAP/AQAB/wMAAf8UAAHkAb0BnAH/AfgB4QG/Af8B8wHWAbIB/wHCAbgBrgH/
+ AUEBYQGsAf8BEwHAAfgB/wEAAZcB1wH/AQABYAHUAf8BAAFgAcEB/wHzAdYBsgH/AfgB4QG/Af8B5AG9
+ AZ0B/xAAAzQBVAGEAVIBAAH/AYcBVQEAAf8BhwFVAQAB/wGHAVUBAAH/AYcBVQEAAf8BfwFrARIB/gJd
+ AU4B8AJaAVcBxQNLAY4CNQE0AVUDCgENDAADUAGeAf0B/AH7Af8C8AHvAf8B8gLxAf8B/gL9Af8BkgGQ
+ AZEB/wESARABEQH/AawBqwGqAf8BrAGrAaoB/wGsAasBqgH/AaoCqQH/Aa0BrAGrAf8BKgEoASkB/wNb
+ AeEIAAOGAf8DwAH/AwAB/wOGAf8DwAH/A8AD/wEAAf8DAAH/AwAB/wPAAf8DwAH/AwAB/xQAAeYBwAGf
+ Af8B+AHiAcEB/wHZAb4BnQH/AdkBvgGeAf8BlgGnAasB/wEAAVwBxAH/AQ4B0wL/AQABswHuAf8BAAFg
+ AdQB/wEAAWIBwgH/AfgB4QHAAf8B5gHAAZ8B/wwAAw0BEgJdAU4B8AGQAVwBAAH/AZABXAEAAf8BkAFc
+ AQAB/wGZAWMBAAH/AZYBYQEAAf8CYAFZAesCWQFWAb4DSAGGAjEBMAFNAxQBHAMBAQIMAANQAZ4B/gL9
+ Af8B8gHxAfAB/wLzAfIC/wL+Af8BnQKcAf8BCQIHAf8BFgEUARMB/wEYARUBFAH/ARgCFQH/ARUCEwH/
+ AQ0CCwH/AwAB/wNbAeEIAAOGBf8DAAH/A4YD/wEAAf8DwAP/AQAB/wEAB/8DwAH/A8AB/wMAAf8DAAH/
+ AwAB/wwAAecBwwGiAf8B+AHjAcIB/wH2Ad0BugH/AfgB4wHDAf8B+AHjAcIB/wG2AcUBwwH/AQABXAHE
+ Af8BDgHTAv8BDwHGAfYB/wEAAWAB1AH/AQABZgHKAf8B6AHDAaIB/wMAAQEIAANFAX0BmQFjAQAB/wGZ
+ AWQBAQH/AZoBZAEBAf8CZAFTAfEDOwFjAw0BEQMKAQ0DJAE1AysBQgMQARYDAAEBEAADUAGeAv8B/gH/
+ AfMC8gH/AvQB8wP/Af4B/wGjAqIB/wEUAREBEAH/ATwBOgE4Af8BzwHOAc0B/wHHAcUBxAH/AakBpwGm
+ Af8BnQGbAZoB/wGLAYkBigH/A1sB4QgAA4YF/wMAAf8DwAH/A4YD/wEAA/8BAAH/AQAL/wMAAf8DwAH/
+ A8AB/wPAAf8DAAH/CAAB6gHGAaQB/wH4AeQBxAH/AdwBwgGkAf8B3AHEAaYB/wHcAcQBpgH/AdwBxQGm
+ Af8BoQGuAa8B/wEAAVwBxAH/AZgB7AL/AQ8BxgH2Af8BAAFgAdQB/wJoAV8B/wMoATwIAAJcAVoBzQGj
+ AYIBBAH/AaMBggEEAf8BpQGDAQMB/wM7AWMQAAMEAQUYAANQAZ4E/wH0AvMB/wP1Bf8BqAGmAaUB/wEM
+ AgkB/wEuAi0B/wHmAuUB/wHxAvAB/wGnAaYBpQH/ATYBMwEyAf8BmgKYAf8DXAHnCAADhgX/AwAB/wPA
+ Af8DwAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DhgH/A4YB/wOGAf8DwAH/AwAB/wgAAewBygGoAf8B+AHl
+ AcYB/wH5AeQBxgH/AfkB5QHFAf8B+QHkAcYB/wH4AeQBxgH/AfcB4wHFAf8BvAHIAcYB/wEAAVwBxAH/
+ AZYB6gH+Af8CtwGsAf8BWAFZAUsB/wJoAV8B/wgAAWYBWQFCAfUBrgGLAQYB/wGuAYsBBgH/AZ8BaAEB
+ Af8DDQERLAADUAGeBP8C9QH0Af8C9wH2Bf8BrAKqAf8BEQEPAQ4B/wEvAS0BLgH/Ac8BzQHMAf8B1AHS
+ AdEB/wG0ArIB/wGqAacBpgH/A2oB+QNXAb0IAAOGAf8DhgH/AwAB/wPAAf8DwAH/A4YB/wOGAf8DhgH/
+ A4YB/wOGAf8DhgH/A4YB/wOGAf8DwAH/AwAB/wgAAe4BzQGrAf8B+AHmAccB/wHfAcgBqgH/Ad4ByAGq
+ Af8B3wHIAasB/wHfAccBqwH/AdsBwwGmAf8B2gHCAaQB/wGrAbABqwH/AY4BjwGEAf8B4AHiAdMB/wKJ
+ AWkB/wEBAU8B3gH/AVUBXAFeAeoEAAFoAVkBQgH1AbkBlAEJAf8BuQGUAQkB/wGnAYQBAwH/Aw0BEQgA
+ A0wBkgGpAYYBAwH/AaMBggECAf8BowGCAQIB/wGjAYIBAgH/AaMBggECAf8BYgFfAUwB8wgAA1ABngT/
+ AfcC9gH/A/gB/wP6Af8D8AH/AeoC6QH/A/AB/wP3Af8D9gH/AvoB+QH/A1gBuQMXASADBwEJBAADhgn/
+ A4YB/wPAAf8DwAH/A4YB/wPAAf8DwAH/A8AB/wPAAf8DwAH/A8AB/wPAAf8DhgH/AwAB/wgAAfAB0AGt
+ Af8B+QHmAckB/wH4AeYByQH/AfkB5gHJAf8B+QHmAckB/wH3AeUByQH/AfAB2QG9Af8B6QHPAbMB/wHo
+ Ac4BsgH/AcwBuQGvAf8CiQFpAf8BPgGWAeoB/wEsAYUB4AH/AVoCXQHTBAACXAFaAc0BwwGcAQsB/wHD
+ AZwBCwH/Ab8BmAEKAf8DOwFjCAADDAEQAlsBWALLAaIBDQH/AcMBnAELAf8BwwGcAQsB/wHDAZwBCwH/
+ AakBhgEDAf8IAANQAZ4E/wL4AfcB/wP5Af8D+gH/Av4B/RX/A1YBqxAAA4YB/wOGAf8DhgH/A4YB/wPA
+ Af8DhgH/AcwCNwL/AcwBNwH/AcwBmQEEAf8BzAGZAQAC/wE3AQQB/wHMATcBBAX/A4YB/wMAAf8IAAHx
+ AdMBsQH/AfkB5wHLAf8B4gHMAbAB/wHiAcsBrwH/AeEBzAGvAf8B4QHKAa8B/wHXAb4BoQH/AdUBugGc
+ Af8B1AG5AZ0B/wHUAbkBnQH/AbYBrwG0Af8BXgGSAcQB/wNIAYYIAAJGAUUBfgHSAagBDgH/Ac0BpAEO
+ Af8BzQGkAQ4B/wFnAWQBUwHxAzsBYwMNAREDDQERA0EBcgG/AZgBCQH/Ac0BpAEOAf8BzQGkAQ4B/wHN
+ AaQBDgH/AbABjAEFAf8IAANQAZ4E/wL5AfgB/wP6Af8D/AH/A/0B/wP+Bf8B/AL9Af8B9AL1Af8D+gH/
+ A1YBsxgAA4YJ/wOGAf8BzAI3A/8BNwL/AcwBNwH/AcwBmQEEAf8BzAGZAQAC/wE3AQQF/wOGAf8DAAH/
+ CAAB8wHXAbQB/wH5AecBzAH/AfgB5wHMAf8B+QHoAcwB/wH5AegBzAH/AfcB5QHKAf8B5wHPAbUB/wHy
+ Ad4BxgH/AfMB4AHIAf8B9wHoAdMB/wNaAcUB7wHQAa4B/wMBAQIDAAEBBAADDwEUAWEBXQFOAfAB2AGt
+ ARAB/wHXAawBEAH/AdcBrAEQAf8B0QGnAQ4B/wG9AZcBCAH/Ab0BlwEIAf8B0QGnAQ4B/wHXAawBEAH/
+ AdcBrAEQAf8B1wGsARAB/wHXAawBEAH/AbYBkQEGAf8IAANQAZ4E/wP6Af8D/AH/A/0B/wP+Bf8B/gH/
+ Af4B/wPqAf8C1wHYAf8B3QLeAf8DOwFkHAADhgH/A4YB/wOGAf8BzAI3A/8BNwP/ATcC/wHMATcB/wHM
+ AZkBBAH/AcwBmQEABf8DhgH/AwAB/wgAAfQB2QG1Af8B+QHoAc0B/wHkAc8BtAH/AeQBzwG0Af8B5AHP
+ AbQB/wHjAc4BswH/Ad0BxgGpAf8B+QHoAc4B/wH5AegBzgH/A1wBzAHxAdMBsQH/AyYBOBAAAjUBNAFV
+ AdsBsQEQAf8B3wGzARIB/wHeAbMBEgH/Ad4BswESAf8B3gGzARIB/wHeAbMBEgH/Ad4BswESAf8B3gGz
+ ARIB/wHfAbMBEgH/AdwBsgEQAf8B5gG6ARQB/wG7AZUBCAH/CAADUAGeBP8D/AH/A/0J/wP9Af8C+gH7
+ Af8B6wLsAf8C+gH7Af8DQgFzKAADhgH/AcwCNwL/AcwBNwP/ATcD/wE3Av8BzAE3Af8BzAGZAQQF/wOG
+ Af8DAAH/CAAB9gHbAbgB/wH5AekBzwH/AfkB6QHOAf8B+QHoAc4B/wH4AegBzgH/AfYB5QHMAf8B7gHa
+ Ab8B/wH5AegBzgH/A2AB3gH0AdkBtQH/AyYBOBgAAjUBNAFVAWMBXQFOAfAB7QHCARYB/wHmAbkBFAH/
+ AeYBuAEUAf8B5gG4ARQB/wHmAbkBFAH/Ae0BwgEWAf8BawFkAVMB8QI6ATkBYAJbAVgBywHHAaABCwH/
+ CAADVAGmHP8B6wLsAf8DQgFzLAADhgH/AcwCNwH/AcwBNwEEAf8BzAE3AQQB/wHMATcBBAH/AcwBNwEE
+ Af8BzAE3AQQF/wOGAf8DAAH/CAAB9wHdAboB/wH5AekBzwH/AfkB6QHPAf8B+QHpAc8B/wH5AekBzwH/
+ AfcB5gHNAf8B7QHYAb0B/wH5AegBzgH/AfcB3QG4Af8DJgE4IAADDAEQA0UBfQJcAVkBzAF+AXkBPgH4
+ AYgBgQFBAfkCXgFcAc4CRgFFAX4DDQESBAADDAEQA0wBkggAAyYEOAFcAzgBXAM4AVwDOAFcAzgBXAM4
+ AVwDOAFcAykBPzAAA4YB/wPXAf8D1wH/A9cB/wPXAf8D1wH/A9cB/wPXAf8DhgH/AwAB/wgAAfgB3wG7
+ Af8B+AHfAbsB/wH4Ad8BuwH/AfgB3wG7Af8B+AHfAbsB/wH4Ad8BuwH/AfgB3wG7Af8B+AHfAbsB/wMm
+ AThUAAFCAU0BPgcAAT4DAAEoAwABQAMAASADAAEBAQABAQYAAQEWAAP/AQAC/wHgAQcB/gEBAgAC5wHA
+ AQcB/AMAAsMBwAEHAeADAAKBAcABBwHgAwABgAEBAcABAAHwAwABwAEDBgAB4AEHBgAB8AEPBgAB8AEP
+ BgAB4AEHAwABAQIAAcABAwMAAQMCAAGAAQEDAAEDAgABgQGAAwABAwIAAcMBwQMAAQMCAAHnAeMDAAED
+ AgAB/wH3AQABPwEAAQMCAAGAAQEBjAEfAYABAQL/AYABAQGAAQ8BwAEDAfABDwGAAQEBgAEHAcABAwHg
+ AQcBgAEBAYABBwHAAQMBwAEDAYABAQGAAQcBwAEDAYABAwGAAQEBgAEBAcABAQGAAQcBgAEBAYABAAHA
+ AQEBgwHfAYABAQGAAQABwAEBAYMB/wGAAQEBgAEAAcABAAGDAQEBgAEBAgABwAEAAYMBAQGAAQcBgAEA
+ AcABAQGAAQEBgAEHAeABAAHAAQABgAEBAYABBwHwAQABwAEDAcABAQGAAQ8B/AEAAcABBwHgAQEBgAEf
+ AfwBAAHAAQ8B8AEJAYABPwH8AQABwAEfAv8L
diff --git a/remoteapp-tool/RemoteAppCreateClientConnection.vb b/remoteapp-tool/RemoteAppCreateClientConnection.vb
index cba640f..f0999ca 100644
--- a/remoteapp-tool/RemoteAppCreateClientConnection.vb
+++ b/remoteapp-tool/RemoteAppCreateClientConnection.vb
@@ -12,6 +12,8 @@ Public Class RemoteAppCreateClientConnection
Dim RemoteAppShortName = RemoteApp.Name
Me.Text = "Create Client Connection for " & RemoteAppShortName
+ CertificateComboBox.Items.AddRange(rdpSign.GetCertificateFriendlyName)
+
SetCCWindowSettings()
If Me.ServerAddress.Text = "" Then Me.ServerAddress.Text = System.Net.Dns.GetHostName
@@ -32,11 +34,15 @@ Public Class RemoteAppCreateClientConnection
MSIRadioButton.Text = "MSI installer (requires WiX Toolset)"
End If
+ If Not My.Computer.FileSystem.FileExists(GetSysDir() & "\rdpsign.exe") Then
+ GroupBoxSignRDP.Enabled = False
+ GroupBoxSignRDP.Text += " (requires rdpsign.exe)"
+ GroupBoxSignRDP.Tag = "noexe"
+ End If
+
If Not RemoteApp.FileTypeAssociations Is Nothing Then _
FTACountLabel.Text = "Count: " & RemoteApp.FileTypeAssociations.Count
- CertificateComboBox.Items.AddRange(rdpSign.GetCertificateFriendlyName)
-
Me.RDPRadioButton.Focus()
HelpSystem.SetupTips(Me)
Me.ShowDialog()
@@ -62,6 +68,9 @@ Public Class RemoteAppCreateClientConnection
My.Settings.SavedCreateRAWebIcon = False
My.Settings.SavedMSIPerUser = False
My.Settings.SavedDisableFTA = False
+ My.Settings.SavedSignRDP = False
+ My.Settings.SavedSignedAndUnsigned = False
+ My.Settings.SavedCertSelected = 0
End Sub
Sub SaveCCWindowSettings()
@@ -81,6 +90,9 @@ Public Class RemoteAppCreateClientConnection
My.Settings.SavedCreateRAWebIcon = CreateRAWebIcon.Checked
My.Settings.SavedMSIPerUser = PerUserRadioButton.Checked
My.Settings.SavedDisableFTA = DisabledFTACheckBox.Checked
+ My.Settings.SavedSignRDP = CheckBoxSignRDPEnabled.Checked
+ My.Settings.SavedSignedAndUnsigned = CheckBoxCreateSignedAndUnsigned.Checked
+ My.Settings.SavedCertSelected = CertificateComboBox.SelectedIndex
End Sub
Sub SetCCWindowSettings()
@@ -119,6 +131,20 @@ Public Class RemoteAppCreateClientConnection
PerMachineRadioButton.Checked = False
PerUserRadioButton.Checked = True
End If
+
+ CheckBoxSignRDPEnabled.Checked = My.Settings.SavedSignRDP
+ CertificateComboBox.Enabled = My.Settings.SavedSignRDP
+ CheckBoxCreateSignedAndUnsigned.Checked = My.Settings.SavedSignedAndUnsigned
+
+ If CertificateComboBox.Items.Count >= (My.Settings.SavedCertSelected + 1) Then
+ CertificateComboBox.SelectedIndex() = My.Settings.SavedCertSelected
+ ElseIf CertificateComboBox.Items.Count > 0 Then
+ CertificateComboBox.SelectedIndex() = 0
+ ElseIf Not GroupBoxSignRDP.Tag = "noexe" Then
+ GroupBoxSignRDP.Text += " (No certificates found)"
+ GroupBoxSignRDP.Enabled = False
+ End If
+
End Sub
Private Sub UseRDGatewayCheckBox_CheckedChanged(sender As Object, e As EventArgs) Handles UseRDGatewayCheckBox.CheckedChanged
@@ -140,8 +166,11 @@ Public Class RemoteAppCreateClientConnection
If RDPRadioButton.Checked Then
CreateButton.ImageIndex = 6
+ CheckBoxCreateSignedAndUnsigned.Enabled = True
Else
CreateButton.ImageIndex = 1
+ CheckBoxCreateSignedAndUnsigned.Enabled = False
+ CheckBoxCreateSignedAndUnsigned.Checked = False
End If
End Sub
@@ -150,15 +179,20 @@ Public Class RemoteAppCreateClientConnection
Dim MSIPath = ""
Dim TempMSIPath = ""
+ If CheckBoxSignRDPEnabled.Checked And CertificateComboBox.SelectedItem = "" Then
+ MessageBox.Show("You must select a certificate to sign the RDP file.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
+ Return
+ End If
+
If DisabledFTACheckBox.Checked And Not RemoteApp.FileTypeAssociations Is Nothing Then RemoteApp.FileTypeAssociations.Clear()
If RDPRadioButton.Checked Then
FileSaveRDP.FileName = RemoteApp.Name
- If Not FileSaveRDP.ShowDialog() = Windows.Forms.DialogResult.OK Then Exit Sub
+ If Not FileSaveRDP.ShowDialog() = Windows.Forms.DialogResult.OK Then Return
RDPPath = FileSaveRDP.FileName
Else
FileSaveMSI.FileName = RemoteApp.Name
- If Not FileSaveMSI.ShowDialog() = Windows.Forms.DialogResult.OK Then Exit Sub
+ If Not FileSaveMSI.ShowDialog() = Windows.Forms.DialogResult.OK Then Return
MSIPath = FileSaveMSI.FileName
RDPPath = Environment.GetEnvironmentVariable("TEMP") & "\" & RemoteApp.Name & ".rdp"
TempMSIPath = Environment.GetEnvironmentVariable("TEMP") & "\" & RemoteApp.Name & ".msi"
@@ -189,6 +223,7 @@ Public Class RemoteAppCreateClientConnection
ExtractFTIcon(ProductFileName, FTA)
Next
End If
+ Me.Close()
Else
'!!!!!!! If it's an MSI
Dim RDP As New RDP2MSIlib.RDP
@@ -225,9 +260,8 @@ Public Class RemoteAppCreateClientConnection
RDP.CreateMSI(MSIPath)
DeleteFiles(FilesToDelete)
-
+ Me.Close()
End If
- Me.Close()
End Sub
Private Sub ExtractFTIcon(ProductFileName As String, FTA As RemoteAppLib.FileTypeAssociation)
@@ -288,7 +322,7 @@ Public Class RemoteAppCreateClientConnection
RDPfile.SaveRDPfile(RDPPath)
- If Not CheckBoxSignRDPDisabled.Checked Then
+ If CheckBoxSignRDPEnabled.Checked Then
Dim rdpSign As New RDPSign.RDPSign
Dim Thumbprint As String = rdpSign.GetThumbprint(CertificateComboBox.Text)
rdpSign.SignRDP(Thumbprint, RDPPath, CheckBoxCreateSignedAndUnsigned.Checked)
@@ -315,7 +349,7 @@ Public Class RemoteAppCreateClientConnection
End Function
Private Sub FTAButton_Click(sender As Object, e As EventArgs) Handles FTAButton.Click
- MessageBox.Show(Me, "Changes made here to File Type Associations are for this client connection only and will not be saved for next time." & vbCrLf & vbCrLf & _
+ MessageBox.Show(Me, "Changes made here to File Type Associations are for this client connection only and will not be saved for next time." & vbCrLf & vbCrLf &
"To make permanent changes to the File Type Associations for this RemoteApp, edit the RemoteApp.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
RemoteApp = RemoteAppFileTypeAssociation.EditFileTypes(RemoteApp)
If Not RemoteApp.FileTypeAssociations Is Nothing Then _
@@ -363,26 +397,31 @@ Public Class RemoteAppCreateClientConnection
End If
End Sub
- Private Sub CheckBoxSignRDPDisabled_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBoxSignRDPDisabled.CheckedChanged
- CertificateComboBox.Enabled = Not CheckBoxSignRDPDisabled.Checked
- CheckBoxCreateSignedAndUnsigned.Enabled = Not CheckBoxSignRDPDisabled.Checked
- If (EditAfterSave.Checked And Not CheckBoxSignRDPDisabled.Checked) Then
- If MessageBox.Show("Cannot edit after save and sign the RDP file. Do you want the RDP file to be signed?", "Sign RDP", MessageBoxButtons.YesNo) = DialogResult.Yes Then
- EditAfterSave.Checked = False
+ Private Sub CheckBoxSignRDPEnabled_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBoxSignRDPEnabled.CheckedChanged
+ CertificateComboBox.Enabled = CheckBoxSignRDPEnabled.Checked
+ If (EditAfterSave.Checked And CheckBoxSignRDPEnabled.Checked) Then
+ If MessageBox.Show("You have selected ""Sign RDP file"" and ""Manually edit RDP file""." & vbCrLf & vbCrLf & "If you save any changes to a signed RDP file it will stop working." & vbCrLf & vbCrLf & "Are you sure you want the RDP file to be signed?", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) = DialogResult.Yes Then
+ CheckBoxSignRDPEnabled.Checked = True
Else
- CheckBoxSignRDPDisabled.Checked = True
+ CheckBoxSignRDPEnabled.Checked = False
End If
End If
End Sub
Private Sub EditAfterSave_CheckedChanged(sender As Object, e As EventArgs) Handles EditAfterSave.CheckedChanged
- If (EditAfterSave.Checked And Not CheckBoxSignRDPDisabled.Checked) Then
- If MessageBox.Show("Cannot edit after save and sign the RDP file. Do you want to edit after saving?", "Edit After Save", MessageBoxButtons.YesNo) = DialogResult.Yes Then
- CheckBoxSignRDPDisabled.Checked = True
+ If (EditAfterSave.Checked And CheckBoxSignRDPEnabled.Checked) Then
+ If MessageBox.Show("You have selected ""Sign RDP file"" and ""Manually edit RDP file""." & vbCrLf & vbCrLf & "If you save any changes to a signed RDP file it will stop working." & vbCrLf & vbCrLf & "Are you sure you want to edit after saving?", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) = DialogResult.Yes Then
+ EditAfterSave.Checked = True
Else
EditAfterSave.Checked = False
End If
End If
End Sub
+
+ Private Sub CheckBoxCreateSignedAndUnsigned_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBoxCreateSignedAndUnsigned.CheckedChanged
+ If CheckBoxCreateSignedAndUnsigned.Checked = True Then
+ CheckBoxSignRDPEnabled.Checked = True
+ End If
+ End Sub
End Class
\ No newline at end of file